<?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>176227</bug_id>
          
          <creation_ts>2017-09-01 09:28:43 -0700</creation_ts>
          <short_desc>Speedometer: Reduce duplication in react-redux test</short_desc>
          <delta_ts>2017-09-27 12:45:41 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>172339</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mathias Bynens">mathias</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>addyo</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gsathya</cc>
    
    <cc>mathias</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1344417</commentid>
    <comment_count>0</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-09-01 09:28:43 -0700</bug_when>
    <thetext>The generated bundle includes the same `Object.assign` polyfill five or six times.

In the source code, we’re using object spread in six different places:

    $ grep -r &apos;{\.\.\.&apos; src
    src/components/Footer.spec.js:  renderer.render(&lt;Footer {...props} /&gt;)
    src/components/Header.spec.js:  renderer.render(&lt;Header {...props} /&gt;)
    src/components/MainSection.js:            &lt;TodoItem key={todo.id} todo={todo} {...actions} /&gt;
    src/components/MainSection.spec.js:  renderer.render(&lt;MainSection {...props} /&gt;)
    src/components/TodoItem.spec.js:    &lt;TodoItem {...props} /&gt;
    src/components/TodoTextInput.spec.js:    &lt;TodoTextInput {...props} /&gt;

At build time, Babel transpiles this down to `Object.assign`, relying on the polyfill.

We should find out why the polyfill is not deduplicated correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346369</commentid>
    <comment_count>1</comment_count>
      <attachid>320122</attachid>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-09-07 10:03:42 -0700</bug_when>
    <thetext>Created attachment 320122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346379</commentid>
    <comment_count>2</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-09-07 10:16:39 -0700</bug_when>
    <thetext>It appears with the latest patch that the problem is no longer an issue (react-scripts may have discovered upstream that there were dupes caused by their build pipeline). The changes in the latest work here LGTM. Deferring to Ryosuke.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347320</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-10 17:28:22 -0700</bug_when>
    <thetext>Safari 10.1.2 (12603.3.8)

Patched:
35.0 ± 0.71
33.4 ± 1.0
35.2 ± 1.4
34.8 ± 0.8
36.4 ± 1.1
35.9 ± 0.77

Unpatched:
33.3 ± 2.6
35.4 ± 0.99
35.5 ± 0.84
36.0 ± 0.99
35.5 ± 2.4
35.3 ± 0.66

Chrome 61.0.3163.79

Patched:
44.6 ± 1.5
43.8 ± 1.6
41.0 ± 3.2
43.5 ± 1.9
43.7 ± 1.8
44.7 ± 1.3

Unpatched:
43.8 ± 3.7
44.1 ± 1.5
46.3 ± 1.8
45.6 ± 1.6
46.3 ± 2.4
45.5 ± 1.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347321</commentid>
    <comment_count>4</comment_count>
      <attachid>320122</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-10 17:29:08 -0700</bug_when>
    <thetext>Comment on attachment 320122
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347330</commentid>
    <comment_count>5</comment_count>
      <attachid>320122</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-10 18:01:02 -0700</bug_when>
    <thetext>Comment on attachment 320122
Patch

Clearing flags on attachment: 320122

Committed r221841: &lt;http://trac.webkit.org/changeset/221841&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347331</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-10 18:01:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353638</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:45:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693898&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320122</attachid>
            <date>2017-09-07 10:03:42 -0700</date>
            <delta_ts>2017-09-10 18:01:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176227-20170907190338.patch</filename>
            <type>text/plain</type>
            <size>5097910</size>
            <attacher name="Mathias Bynens">mathias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNzM1CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDEwNmEzZGMxMDYz
Y2VlZjZiOTZmMzA0MmY5NTFlOTA1MzNlNDRjOTcuLjQyYzk1Y2JhNGI2NGNjMjdhZGFkMDc2MTcy
ZDExYTdjZDY2OTRlMjcgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDkt
MDcgIE1hdGhpYXMgQnluZW5zICA8bWF0aGlhc0BxaXdpLmJlPgorCisgICAgICAgIFNwZWVkb21l
dGVyOiBSZWR1Y2UgZHVwbGljYXRpb24gaW4gcmVhY3QtcmVkdXggdGVzdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRpbmcgcmVhY3Qtc2NyaXB0
cyB0byBhIG1vZGVybiB2ZXJzaW9uIGF2b2lkcyBhbiBpc3N1ZSB3aGVyZSB0aGUgZ2VuZXJhdGVk
IGJ1bmRsZSBpbmNsdWRlZCB0aGUgc2FtZSBgT2JqZWN0LmFzc2lnbmAKKyAgICAgICAgcG9seWZp
bGwgbXVsdGlwbGUgdGltZXMuCisKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC8qOiBVcGRhdGUgZGlz
dCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wYWNrYWdlLWxvY2su
anNvbjogVXBkYXRlIGRlcGVuZGVuY2llcy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvcGFja2FnZS5qc29u
OiBVcGRhdGUgZGVwZW5kZW5jaWVzLgorCiAyMDE3LTA5LTA3ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgT3B0aW1pemUgdGhlIGNhbGwgdG8g
YnJvd3NlclByZWZpeCgpIGluIE1vdGlvbk1hcmsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0LXJlZHV4L2Rpc3QvYXNzZXQtbWFuaWZlc3QuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJl
ZHV4L2Rpc3QvYXNzZXQtbWFuaWZlc3QuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODg1ZDgyYjkzMzFkZTQ0
OTIwY2M3MWVmMmIxNTc1MDA5MWZjNWQwCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QtcmVkdXgvZGlzdC9hc3NldC1tYW5pZmVzdC5qc29uCkBAIC0wLDAgKzEsNiBAQAorewor
ICAibWFpbi5jc3MiOiAic3RhdGljL2Nzcy9tYWluLjIxMTExNzQyLmNzcyIsCisgICJtYWluLmNz
cy5tYXAiOiAic3RhdGljL2Nzcy9tYWluLjIxMTExNzQyLmNzcy5tYXAiLAorICAibWFpbi5qcyI6
ICJzdGF0aWMvanMvbWFpbi4xOGI0MDllMS5qcyIsCisgICJtYWluLmpzLm1hcCI6ICJzdGF0aWMv
anMvbWFpbi4xOGI0MDllMS5qcy5tYXAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9pbmRleC5odG1sIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9pbmRleC5odG1sCmluZGV4IDU0NDA3YzVjOWQ5OGM1
YzRkMjNmZTc1ZTQ3MDY3MmVkZDkxMTRiMDAuLjg1MjFmMmZhNTU0Njk2OGJiODYzNjM3OGNlMzhk
Y2NmN2QzNTJmZmMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3QvaW5k
ZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L2luZGV4Lmh0bWwKQEAg
LTEgKzEgQEAKLTwhRE9DVFlQRSBodG1sPjxodG1sIGxhbmc9ImVuIj48aGVhZD48bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13
aWR0aCxpbml0aWFsLXNjYWxlPTEiPjx0aXRsZT5SZWFjdCBSZWR1eCBUb2RvTVZDIGV4YW1wbGU8
L3RpdGxlPjxsaW5rIGhyZWY9Ii4vc3RhdGljL2Nzcy9tYWluLmYwNGE3MzE5LmNzcyIgcmVsPSJz
dHlsZXNoZWV0Ij48L2hlYWQ+PGJvZHk+PGRpdiBjbGFzcz0idG9kb2FwcCIgaWQ9InJvb3QiPjwv
ZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4vc3RhdGljL2pzL21haW4u
NjljZDk2NTUuanMiPjwvc2NyaXB0PjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorPCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPjxoZWFkPjxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij48bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdp
ZHRoLGluaXRpYWwtc2NhbGU9MSI+PHRpdGxlPlJlYWN0IFJlZHV4IFRvZG9NVkMgZXhhbXBsZTwv
dGl0bGU+PGxpbmsgaHJlZj0iLi9zdGF0aWMvY3NzL21haW4uMjExMTE3NDIuY3NzIiByZWw9InN0
eWxlc2hlZXQiPjwvaGVhZD48Ym9keT48ZGl2IGNsYXNzPSJ0b2RvYXBwIiBpZD0icm9vdCI+PC9k
aXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi9zdGF0aWMvanMvbWFpbi4x
OGI0MDllMS5qcyI+PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3NlcnZpY2Ut
d29ya2VyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zZXJ2aWNlLXdvcmtlci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mZjhkNDdkNTBiYWYwNjgwZGU5MjA2M2I3ZGNkNjc2ZDgxNDQwYThhCi0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zZXJ2aWNlLXdv
cmtlci5qcwpAQCAtMCwwICsxIEBACisidXNlIHN0cmljdCI7ZnVuY3Rpb24gc2V0T2ZDYWNoZWRV
cmxzKGUpe3JldHVybiBlLmtleXMoKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBlLm1hcChmdW5j
dGlvbihlKXtyZXR1cm4gZS51cmx9KX0pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBTZXQo
ZSl9KX12YXIgcHJlY2FjaGVDb25maWc9W1siLi9pbmRleC5odG1sIiwiNzBlOTVhM2YzYTFkMWNi
ZDMzM2I4NTQ0NTgwYzQxMzAiXSxbIi4vc3RhdGljL2Nzcy9tYWluLjIxMTExNzQyLmNzcyIsImZl
YzI4MTFiZTEwM2RhNDQ2MGM2NzUwMGYzN2JiM2ZiIl0sWyIuL3N0YXRpYy9qcy9tYWluLjE4YjQw
OWUxLmpzIiwiYmM3NmU1ZDg1MGM0OGEzYWUyNDc4NGUzMzVlZjBiMGUiXV0sY2FjaGVOYW1lPSJz
dy1wcmVjYWNoZS12My1zdy1wcmVjYWNoZS13ZWJwYWNrLXBsdWdpbi0iKyhzZWxmLnJlZ2lzdHJh
dGlvbj9zZWxmLnJlZ2lzdHJhdGlvbi5zY29wZToiIiksaWdub3JlVXJsUGFyYW1ldGVyc01hdGNo
aW5nPVsvXnV0bV8vXSxhZGREaXJlY3RvcnlJbmRleD1mdW5jdGlvbihlLHQpe3ZhciBuPW5ldyBV
UkwoZSk7cmV0dXJuIi8iPT09bi5wYXRobmFtZS5zbGljZSgtMSkmJihuLnBhdGhuYW1lKz10KSxu
LnRvU3RyaW5nKCl9LGNsZWFuUmVzcG9uc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVkaXJlY3Rl
ZD8oImJvZHkiaW4gZT9Qcm9taXNlLnJlc29sdmUoZS5ib2R5KTplLmJsb2IoKSkudGhlbihmdW5j
dGlvbih0KXtyZXR1cm4gbmV3IFJlc3BvbnNlKHQse2hlYWRlcnM6ZS5oZWFkZXJzLHN0YXR1czpl
LnN0YXR1cyxzdGF0dXNUZXh0OmUuc3RhdHVzVGV4dH0pfSk6UHJvbWlzZS5yZXNvbHZlKGUpfSxj
cmVhdGVDYWNoZUtleT1mdW5jdGlvbihlLHQsbixyKXt2YXIgYT1uZXcgVVJMKGUpO3JldHVybiBy
JiZhLnBhdGhuYW1lLm1hdGNoKHIpfHwoYS5zZWFyY2grPShhLnNlYXJjaD8iJiI6IiIpK2VuY29k
ZVVSSUNvbXBvbmVudCh0KSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KG4pKSxhLnRvU3RyaW5nKCl9
LGlzUGF0aFdoaXRlbGlzdGVkPWZ1bmN0aW9uKGUsdCl7aWYoMD09PWUubGVuZ3RoKXJldHVybiEw
O3ZhciBuPW5ldyBVUkwodCkucGF0aG5hbWU7cmV0dXJuIGUuc29tZShmdW5jdGlvbihlKXtyZXR1
cm4gbi5tYXRjaChlKX0pfSxzdHJpcElnbm9yZWRVcmxQYXJhbWV0ZXJzPWZ1bmN0aW9uKGUsdCl7
dmFyIG49bmV3IFVSTChlKTtyZXR1cm4gbi5oYXNoPSIiLG4uc2VhcmNoPW4uc2VhcmNoLnNsaWNl
KDEpLnNwbGl0KCImIikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KCI9Iil9KS5maWx0
ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZXZlcnkoZnVuY3Rpb24odCl7cmV0dXJuIXQudGVzdChl
WzBdKX0pfSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmpvaW4oIj0iKX0pLmpvaW4oIiYiKSxu
LnRvU3RyaW5nKCl9LGhhc2hQYXJhbU5hbWU9Il9zdy1wcmVjYWNoZSIsdXJsc1RvQ2FjaGVLZXlz
PW5ldyBNYXAocHJlY2FjaGVDb25maWcubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0sbj1lWzFd
LHI9bmV3IFVSTCh0LHNlbGYubG9jYXRpb24pLGE9Y3JlYXRlQ2FjaGVLZXkocixoYXNoUGFyYW1O
YW1lLG4sL1wuXHd7OH1cLi8pO3JldHVybltyLnRvU3RyaW5nKCksYV19KSk7c2VsZi5hZGRFdmVu
dExpc3RlbmVyKCJpbnN0YWxsIixmdW5jdGlvbihlKXtlLndhaXRVbnRpbChjYWNoZXMub3Blbihj
YWNoZU5hbWUpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIHNldE9mQ2FjaGVkVXJscyhlKS50aGVu
KGZ1bmN0aW9uKHQpe3JldHVybiBQcm9taXNlLmFsbChBcnJheS5mcm9tKHVybHNUb0NhY2hlS2V5
cy52YWx1ZXMoKSkubWFwKGZ1bmN0aW9uKG4pe2lmKCF0LmhhcyhuKSl7dmFyIHI9bmV3IFJlcXVl
c3Qobix7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pO3JldHVybiBmZXRjaChyKS50aGVuKGZ1
bmN0aW9uKHQpe2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcigiUmVxdWVzdCBmb3IgIituKyIgcmV0
dXJuZWQgYSByZXNwb25zZSB3aXRoIHN0YXR1cyAiK3Quc3RhdHVzKTtyZXR1cm4gY2xlYW5SZXNw
b25zZSh0KS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBlLnB1dChuLHQpfSl9KX19KSl9KX0pLnRo
ZW4oZnVuY3Rpb24oKXtyZXR1cm4gc2VsZi5za2lwV2FpdGluZygpfSkpfSksc2VsZi5hZGRFdmVu
dExpc3RlbmVyKCJhY3RpdmF0ZSIsZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFNldCh1cmxzVG9DYWNo
ZUtleXMudmFsdWVzKCkpO2Uud2FpdFVudGlsKGNhY2hlcy5vcGVuKGNhY2hlTmFtZSkudGhlbihm
dW5jdGlvbihlKXtyZXR1cm4gZS5rZXlzKCkudGhlbihmdW5jdGlvbihuKXtyZXR1cm4gUHJvbWlz
ZS5hbGwobi5tYXAoZnVuY3Rpb24obil7aWYoIXQuaGFzKG4udXJsKSlyZXR1cm4gZS5kZWxldGUo
bil9KSl9KX0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gc2VsZi5jbGllbnRzLmNsYWltKCl9KSl9
KSxzZWxmLmFkZEV2ZW50TGlzdGVuZXIoImZldGNoIixmdW5jdGlvbihlKXtpZigiR0VUIj09PWUu
cmVxdWVzdC5tZXRob2Qpe3ZhciB0LG49c3RyaXBJZ25vcmVkVXJsUGFyYW1ldGVycyhlLnJlcXVl
c3QudXJsLGlnbm9yZVVybFBhcmFtZXRlcnNNYXRjaGluZyk7KHQ9dXJsc1RvQ2FjaGVLZXlzLmhh
cyhuKSl8fChuPWFkZERpcmVjdG9yeUluZGV4KG4sImluZGV4Lmh0bWwiKSx0PXVybHNUb0NhY2hl
S2V5cy5oYXMobikpOyF0JiYibmF2aWdhdGUiPT09ZS5yZXF1ZXN0Lm1vZGUmJmlzUGF0aFdoaXRl
bGlzdGVkKFsiXig/IVxcL19fKS4qIl0sZS5yZXF1ZXN0LnVybCkmJihuPW5ldyBVUkwoIi4vaW5k
ZXguaHRtbCIsc2VsZi5sb2NhdGlvbikudG9TdHJpbmcoKSx0PXVybHNUb0NhY2hlS2V5cy5oYXMo
bikpLHQmJmUucmVzcG9uZFdpdGgoY2FjaGVzLm9wZW4oY2FjaGVOYW1lKS50aGVuKGZ1bmN0aW9u
KGUpe3JldHVybiBlLm1hdGNoKHVybHNUb0NhY2hlS2V5cy5nZXQobikpLnRoZW4oZnVuY3Rpb24o
ZSl7aWYoZSlyZXR1cm4gZTt0aHJvdyBFcnJvcigiVGhlIGNhY2hlZCByZXNwb25zZSB0aGF0IHdh
cyBleHBlY3RlZCBpcyBtaXNzaW5nLiIpfSl9KS5jYXRjaChmdW5jdGlvbih0KXtyZXR1cm4gY29u
c29sZS53YXJuKCdDb3VsZG5cJ3Qgc2VydmUgcmVzcG9uc2UgZm9yICIlcyIgZnJvbSBjYWNoZTog
JU8nLGUucmVxdWVzdC51cmwsdCksZmV0Y2goZS5yZXF1ZXN0KX0pKX19KTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0
L3N0YXRpYy9jc3MvbWFpbi4yMTExMTc0Mi5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9k
aXN0L3N0YXRpYy9jc3MvbWFpbi4yMTExMTc0Mi5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU1YWExOWZmMjE4
NWFjMDMwOWFhNzYyYzE0NTFjN2Q1MzJmZGExYQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2Nzcy9tYWluLjIxMTExNzQyLmNzcwpAQCAtMCww
ICsxLDIgQEAKK2JvZHksYnV0dG9uLGh0bWx7bWFyZ2luOjA7cGFkZGluZzowfWJ1dHRvbntib3Jk
ZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Zm9udC1zaXplOjEwMCU7dmVydGljYWwtYWxpZ246YmFzZWxp
bmU7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0O2NvbG9yOmluaGVyaXQ7
LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpu
b25lOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWR9Ym9keSxidXR0b257LW1vei1v
c3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfWJvZHl7Zm9udDoxNHB4IEhlbHZldGljYSBOZXVl
LEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0OjEuNGVtO2JhY2tncm91bmQ6
I2Y1ZjVmNTtjb2xvcjojNGQ0ZDRkO21pbi13aWR0aDoyMzBweDttYXgtd2lkdGg6NTUwcHg7bWFy
Z2luOjAgYXV0bzstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkO2ZvbnQtd2VpZ2h0
OjMwMH06Zm9jdXN7b3V0bGluZTowfS5oaWRkZW57ZGlzcGxheTpub25lfS50b2RvYXBwe2JhY2tn
cm91bmQ6I2ZmZjttYXJnaW46MTMwcHggMCA0MHB4O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQt
Ym94LXNoYWRvdzowIDJweCA0cHggMCByZ2JhKDAsMCwwLC4yKSwwIDI1cHggNTBweCAwIHJnYmEo
MCwwLDAsLjEpO2JveC1zaGFkb3c6MCAycHggNHB4IDAgcmdiYSgwLDAsMCwuMiksMCAyNXB4IDUw
cHggMCByZ2JhKDAsMCwwLC4xKX0udG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhv
bGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDozMDA7Y29sb3I6I2U2ZTZlNn0udG9k
b2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdo
dDozMDA7Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xkZXJ7Zm9u
dC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaDF7
cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xNTVweDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxMDBweDtm
b250LXdlaWdodDoxMDA7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6cmdiYSgxNzUsNDcsNDcsLjE1
KTstd2Via2l0LXRleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTstbW96LXRleHQtcmVu
ZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTt0ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxp
dHl9LmVkaXQsLm5ldy10b2Rve3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjowO3dpZHRoOjEwMCU7
Zm9udC1zaXplOjI0cHg7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0O2xp
bmUtaGVpZ2h0OjEuNGVtO2JvcmRlcjowO2NvbG9yOmluaGVyaXQ7cGFkZGluZzo2cHg7Ym9yZGVy
OjFweCBzb2xpZCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIC0xcHggNXB4IDAgcmdi
YSgwLDAsMCwuMik7Ym94LXNoYWRvdzppbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLDAsMCwuMik7
LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJr
aXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3Jh
eXNjYWxlfS5uZXctdG9kb3twYWRkaW5nOjE2cHggMTZweCAxNnB4IDYwcHg7Ym9yZGVyOm5vbmU7
YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wMDMpOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIC0y
cHggMXB4IHJnYmEoMCwwLDAsLjAzKTtib3gtc2hhZG93Omluc2V0IDAgLTJweCAxcHggcmdiYSgw
LDAsMCwuMDMpfS5tYWlue3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6Mjtib3JkZXItdG9wOjFw
eCBzb2xpZCAjZTZlNmU2fS50b2dnbGUtYWxse3RleHQtYWxpZ246Y2VudGVyO2JvcmRlcjpub25l
O29wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZX0udG9nZ2xlLWFsbCtsYWJlbHt3aWR0aDo2MHB4
O2hlaWdodDozNHB4O2ZvbnQtc2l6ZTowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNTJweDtsZWZ0
Oi0xM3B4Oy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7LW1zLXRyYW5zZm9ybTpyb3Rh
dGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfS50b2dnbGUtYWxsK2xhYmVsOmJlZm9y
ZXtjb250ZW50OiJcMjc2RiI7Zm9udC1zaXplOjIycHg7Y29sb3I6I2U2ZTZlNjtwYWRkaW5nOjEw
cHggMjdweH0udG9nZ2xlLWFsbDpjaGVja2VkK2xhYmVsOmJlZm9yZXtjb2xvcjojNzM3MzczfS50
b2RvLWxpc3R7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0udG9kby1saXN0IGxp
e3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToyNHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlk
ICNlZGVkZWR9LnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206bm9uZX0udG9k
by1saXN0IGxpLmVkaXRpbmd7Ym9yZGVyLWJvdHRvbTpub25lO3BhZGRpbmc6MH0udG9kby1saXN0
IGxpLmVkaXRpbmcgLmVkaXR7ZGlzcGxheTpibG9jazt3aWR0aDo1MDZweDtwYWRkaW5nOjEycHgg
MTZweDttYXJnaW46MCAwIDAgNDNweH0udG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXd7ZGlzcGxh
eTpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDo0MHB4
O2hlaWdodDphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO21hcmdpbjphdXRv
IDA7Ym9yZGVyOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5v
bmU7YXBwZWFyYW5jZTpub25lO29wYWNpdHk6MH0udG9kby1saXN0IGxpIC50b2dnbGUrbGFiZWx7
YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCUzQ3N2ZyUyMHht
bG5zJTNEJTIyaHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyMiUyMHdpZHRoJTNEJTIyNDAl
MjIlMjBoZWlnaHQlM0QlMjI0MCUyMiUyMHZpZXdCb3glM0QlMjItMTAlMjAtMTglMjAxMDAlMjAx
MzUlMjIlM0UlM0NjaXJjbGUlMjBjeCUzRCUyMjUwJTIyJTIwY3klM0QlMjI1MCUyMiUyMHIlM0Ql
MjI1MCUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTIwc3Ryb2tlJTNEJTIyJTIzZWRlZGVkJTIyJTIw
c3Ryb2tlLXdpZHRoJTNEJTIyMyUyMi8lM0UlM0Mvc3ZnJTNFIik7YmFja2dyb3VuZC1yZXBlYXQ6
bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246MH0udG9kby1saXN0IGxpIC50b2dnbGU6Y2hl
Y2tlZCtsYWJlbHtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0Zjgs
JTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBLy93d3cudzMub3JnLzIwMDAvc3ZnJTIyJTIwd2lk
dGglM0QlMjI0MCUyMiUyMGhlaWdodCUzRCUyMjQwJTIyJTIwdmlld0JveCUzRCUyMi0xMCUyMC0x
OCUyMDEwMCUyMDEzNSUyMiUzRSUzQ2NpcmNsZSUyMGN4JTNEJTIyNTAlMjIlMjBjeSUzRCUyMjUw
JTIyJTIwciUzRCUyMjUwJTIyJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBzdHJva2UlM0QlMjIlMjNi
ZGRhZDUlMjIlMjBzdHJva2Utd2lkdGglM0QlMjIzJTIyLyUzRSUzQ3BhdGglMjBmaWxsJTNEJTIy
JTIzNWRjMmFmJTIyJTIwZCUzRCUyMk03MiUyMDI1TDQyJTIwNzElMjAyNyUyMDU2bC00JTIwNCUy
MDIwJTIwMjAlMjAzNC01MnolMjIvJTNFJTNDL3N2ZyUzRSIpfS50b2RvLWxpc3QgbGkgbGFiZWx7
d29yZC1icmVhazpicmVhay1hbGw7cGFkZGluZzoxNXB4IDE1cHggMTVweCA2MHB4O2Rpc3BsYXk6
YmxvY2s7bGluZS1oZWlnaHQ6MS4yOy13ZWJraXQtdHJhbnNpdGlvbjpjb2xvciAuNHM7LW8tdHJh
bnNpdGlvbjpjb2xvciAuNHM7dHJhbnNpdGlvbjpjb2xvciAuNHN9LnRvZG8tbGlzdCBsaS5jb21w
bGV0ZWQgbGFiZWx7Y29sb3I6I2Q5ZDlkOTt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdofS50
b2RvLWxpc3QgbGkgLmRlc3Ryb3l7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDow
O3JpZ2h0OjEwcHg7Ym90dG9tOjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDttYXJnaW46YXV0byAw
O2ZvbnQtc2l6ZTozMHB4O2NvbG9yOiNjYzlhOWE7bWFyZ2luLWJvdHRvbToxMXB4Oy13ZWJraXQt
dHJhbnNpdGlvbjpjb2xvciAuMnMgZWFzZS1vdXQ7LW8tdHJhbnNpdGlvbjpjb2xvciAuMnMgZWFz
ZS1vdXQ7dHJhbnNpdGlvbjpjb2xvciAuMnMgZWFzZS1vdXR9LnRvZG8tbGlzdCBsaSAuZGVzdHJv
eTpob3Zlcntjb2xvcjojYWY1YjVlfS50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXJ7Y29udGVu
dDoiXEQ3In0udG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95e2Rpc3BsYXk6YmxvY2t9LnRvZG8t
bGlzdCBsaSAuZWRpdHtkaXNwbGF5Om5vbmV9LnRvZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hp
bGR7bWFyZ2luLWJvdHRvbTotMXB4fS5mb290ZXJ7Y29sb3I6Izc3NztwYWRkaW5nOjEwcHggMTVw
eDtoZWlnaHQ6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZl
NmU2fS5mb290ZXI6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDti
b3R0b206MDtsZWZ0OjA7aGVpZ2h0OjUwcHg7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtYm94LXNo
YWRvdzowIDFweCAxcHggcmdiYSgwLDAsMCwuMiksMCA4cHggMCAtM3B4ICNmNmY2ZjYsMCA5cHgg
MXB4IC0zcHggcmdiYSgwLDAsMCwuMiksMCAxNnB4IDAgLTZweCAjZjZmNmY2LDAgMTdweCAycHgg
LTZweCByZ2JhKDAsMCwwLC4yKTtib3gtc2hhZG93OjAgMXB4IDFweCByZ2JhKDAsMCwwLC4yKSww
IDhweCAwIC0zcHggI2Y2ZjZmNiwwIDlweCAxcHggLTNweCByZ2JhKDAsMCwwLC4yKSwwIDE2cHgg
MCAtNnB4ICNmNmY2ZjYsMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwwLDAsLjIpfS50b2RvLWNvdW50
e2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpsZWZ0fS50b2RvLWNvdW50IHN0cm9uZ3tmb250LXdlaWdo
dDozMDB9LmZpbHRlcnN7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtwb3NpdGlv
bjphYnNvbHV0ZTtyaWdodDowO2xlZnQ6MH0uZmlsdGVycyBsaXtkaXNwbGF5OmlubGluZX0uZmls
dGVycyBsaSBhe2NvbG9yOmluaGVyaXQ7bWFyZ2luOjNweDtwYWRkaW5nOjNweCA3cHg7dGV4dC1k
ZWNvcmF0aW9uOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVz
OjNweH0uZmlsdGVycyBsaSBhOmhvdmVye2JvcmRlci1jb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMSl9
LmZpbHRlcnMgbGkgYS5zZWxlY3RlZHtib3JkZXItY29sb3I6cmdiYSgxNzUsNDcsNDcsLjIpfS5j
bGVhci1jb21wbGV0ZWQsaHRtbCAuY2xlYXItY29tcGxldGVkOmFjdGl2ZXtmbG9hdDpyaWdodDtw
b3NpdGlvbjpyZWxhdGl2ZTtsaW5lLWhlaWdodDoyMHB4O3RleHQtZGVjb3JhdGlvbjpub25lO2N1
cnNvcjpwb2ludGVyfS5jbGVhci1jb21wbGV0ZWQ6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVy
bGluZX0uaW5mb3ttYXJnaW46NjVweCBhdXRvIDA7Y29sb3I6I2JmYmZiZjtmb250LXNpemU6MTBw
eDt0ZXh0LXNoYWRvdzowIDFweCAwIGhzbGEoMCwwJSwxMDAlLC41KTt0ZXh0LWFsaWduOmNlbnRl
cn0uaW5mbyBwe2xpbmUtaGVpZ2h0OjF9LmluZm8gYXtjb2xvcjppbmhlcml0O3RleHQtZGVjb3Jh
dGlvbjpub25lO2ZvbnQtd2VpZ2h0OjQwMH0uaW5mbyBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1
bmRlcmxpbmV9QG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRp
bzowKXsudG9kby1saXN0IGxpIC50b2dnbGUsLnRvZ2dsZS1hbGx7YmFja2dyb3VuZDpub25lfS50
b2RvLWxpc3QgbGkgLnRvZ2dsZXtoZWlnaHQ6NDBweH19QG1lZGlhIChtYXgtd2lkdGg6NDMwcHgp
ey5mb290ZXJ7aGVpZ2h0OjUwcHh9LmZpbHRlcnN7Ym90dG9tOjEwcHh9fQorLyojIHNvdXJjZU1h
cHBpbmdVUkw9bWFpbi4yMTExMTc0Mi5jc3MubWFwKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9jc3Mv
bWFpbi4yMTExMTc0Mi5jc3MubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0
aWMvY3NzL21haW4uMjExMTE3NDIuY3NzLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzRjNmZkNjMxYTczMzgw
MTg2NmI1ODUxMmU5MDkxNzI0ZTdjYjEzCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvY3NzL21haW4uMjExMTE3NDIuY3NzLm1hcApAQCAtMCww
ICsxIEBACit7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL3RvZG9tdmMt
YXBwLWNzcy9pbmRleC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsaUJBSkMsU0FD
QSxTQUFXLENBa0JYLE9BWkEsU0FDQSxnQkFDQSxlQUNBLHdCQUNBLG9CQUNBLG9CQUNBLGNBQ0Es
d0JBQ0EscUJBQ0ssZ0JBQ0wsa0NBQW9DLENBSXJDLFlBSEMsaUNBQW1DLENBY25DLEtBVkEsb0RB
Q0Esa0JBQ0EsbUJBQ0EsY0FDQSxnQkFDQSxnQkFDQSxjQUNBLG1DQUVBLGVBQWlCLENBR2xCLE9B
Q0MsU0FBVyxDQUdaLFFBQ0MsWUFBYyxDQUdmLFNBQ0MsZ0JBQ0Esb0JBQ0Esa0JBQ0EsMkVBRVEs
a0VBQ3FDLENBRzlDLDBDQUNDLGtCQUNBLGdCQUNBLGFBQWUsQ0FHaEIsaUNBQ0Msa0JBQ0EsZ0JB
Q0EsYUFBZSxDQUdoQixrQ0FDQyxrQkFDQSxnQkFDQSxhQUFlLENBR2hCLFlBQ0Msa0JBQ0EsV0FD
QSxXQUNBLGdCQUNBLGdCQUNBLGtCQUNBLDBCQUNBLDBDQUNBLHVDQUNBLGlDQUFtQyxDQUdwQyxn
QkFFQyxrQkFDQSxTQUNBLFdBQ0EsZUFDQSxvQkFDQSxvQkFDQSxrQkFDQSxTQUNBLGNBQ0EsWUFD
QSxzQkFDQSxxREFDUSw2Q0FDUiw4QkFDUSxzQkFDUixtQ0FDQSxpQ0FBbUMsQ0FHcEMsVUFDQyw0
QkFDQSxZQUNBLDRCQUNBLG9EQUNRLDJDQUE4QyxDQUd2RCxNQUNDLGtCQUNBLFVBQ0EsNEJBQThC
LENBRy9CLFlBQ0Msa0JBQ0EsWUFDQSxVQUNBLGlCQUFtQixDQUdwQixrQkFDQyxXQUNBLFlBQ0Es
WUFDQSxrQkFDQSxVQUNBLFdBQ0EsZ0NBQ0EsNEJBQ0ksdUJBQXlCLENBRzlCLHlCQUNDLGdCQUNB
LGVBQ0EsY0FDQSxpQkFBNkIsQ0FHOUIsaUNBQ0MsYUFBZSxDQUdoQixXQUNDLFNBQ0EsVUFDQSxl
QUFpQixDQUdsQixjQUNDLGtCQUNBLGVBQ0EsK0JBQWlDLENBR2xDLHlCQUNDLGtCQUFvQixDQUdy
QixzQkFDQyxtQkFDQSxTQUFXLENBR1osNEJBQ0MsY0FDQSxZQUNBLGtCQUNBLGlCQUFtQixDQUdw
Qiw0QkFDQyxZQUFjLENBR2Ysc0JBQ0Msa0JBQ0EsV0FFQSxZQUNBLGtCQUNBLE1BQ0EsU0FDQSxj
QUNBLFlBQ0Esd0JBQ0EscUJBQ0ssZ0JBSUwsU0FBVyxDQUdaLDRCQUtDLG9VQUNBLDRCQUNBLHFC
QUFpQyxDQUdsQyxvQ0FDQyx3YUFBMGEsQ0FHM2Esb0JBQ0MscUJBQ0EsNEJBQ0EsY0FDQSxnQkFD
QSw2QkFDQSx3QkFDQSxvQkFBdUIsQ0FHeEIsOEJBQ0MsY0FDQSw0QkFBOEIsQ0FHL0IsdUJBQ0Ms
YUFDQSxrQkFDQSxNQUNBLFdBQ0EsU0FDQSxXQUNBLFlBQ0EsY0FDQSxlQUNBLGNBQ0EsbUJBQ0Es
c0NBQ0EsaUNBQ0EsNkJBQWdDLENBR2pDLDZCQUNDLGFBQWUsQ0FHaEIsNkJBQ0MsYUFBYSxDQUdk
LDZCQUNDLGFBQWUsQ0FHaEIsb0JBQ0MsWUFBYyxDQUdmLGlDQUNDLGtCQUFvQixDQUdyQixRQUND
LFdBQ0Esa0JBQ0EsWUFDQSxrQkFDQSw0QkFBOEIsQ0FHL0IsZUFDQyxXQUNBLGtCQUNBLFFBQ0Es
U0FDQSxPQUNBLFlBQ0EsZ0JBQ0Esb0pBS1EsMklBSXVDLENBR2hELFlBQ0MsV0FDQSxlQUFpQixD
QUdsQixtQkFDQyxlQUFpQixDQUdsQixTQUNDLFNBQ0EsVUFDQSxnQkFDQSxrQkFDQSxRQUNBLE1B
QVEsQ0FHVCxZQUNDLGNBQWdCLENBR2pCLGNBQ0MsY0FDQSxXQUNBLGdCQUNBLHFCQUNBLDZCQUNB
LGlCQUFtQixDQUdwQixvQkFDQywrQkFBcUMsQ0FHdEMsdUJBQ0MsK0JBQXFDLENBR3RDLDhDQUVD
LFlBQ0Esa0JBQ0EsaUJBQ0EscUJBQ0EsY0FBZ0IsQ0FHakIsdUJBQ0MseUJBQTJCLENBRzVCLE1B
Q0MsbUJBQ0EsY0FDQSxlQUNBLHVDQUNBLGlCQUFtQixDQUdwQixRQUNDLGFBQWUsQ0FHaEIsUUFD
QyxjQUNBLHFCQUNBLGVBQWlCLENBR2xCLGNBQ0MseUJBQTJCLENBTzVCLHFEQUNDLGtDQUVDLGVB
QWlCLENBR2xCLHNCQUNDLFdBQWEsQ0FDYixDQUdGLHlCQUNDLFFBQ0MsV0FBYSxDQUdkLFNBQ0Ms
V0FBYSxDQUNiIiwiZmlsZSI6InN0YXRpYy9jc3MvbWFpbi4yMTExMTc0Mi5jc3MiLCJzb3VyY2Vz
Q29udGVudCI6WyJodG1sLFxuYm9keSB7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogMDtcbn1c
blxuYnV0dG9uIHtcblx0bWFyZ2luOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHRib3JkZXI6IDA7XG5c
dGJhY2tncm91bmQ6IG5vbmU7XG5cdGZvbnQtc2l6ZTogMTAwJTtcblx0dmVydGljYWwtYWxpZ246
IGJhc2VsaW5lO1xuXHRmb250LWZhbWlseTogaW5oZXJpdDtcblx0Zm9udC13ZWlnaHQ6IGluaGVy
aXQ7XG5cdGNvbG9yOiBpbmhlcml0O1xuXHQtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG5cdC1t
b3otYXBwZWFyYW5jZTogbm9uZTtcblx0ICAgICBhcHBlYXJhbmNlOiBub25lO1xuXHQtd2Via2l0
LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6
IGdyYXlzY2FsZTtcbn1cblxuYm9keSB7XG5cdGZvbnQ6IDE0cHggJ0hlbHZldGljYSBOZXVlJywg
SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcblx0bGluZS1oZWlnaHQ6IDEuNGVtO1xuXHRi
YWNrZ3JvdW5kOiAjZjVmNWY1O1xuXHRjb2xvcjogIzRkNGQ0ZDtcblx0bWluLXdpZHRoOiAyMzBw
eDtcblx0bWF4LXdpZHRoOiA1NTBweDtcblx0bWFyZ2luOiAwIGF1dG87XG5cdC13ZWJraXQtZm9u
dC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHQtbW96LW9zeC1mb250LXNtb290aGluZzogZ3Jh
eXNjYWxlO1xuXHRmb250LXdlaWdodDogMzAwO1xufVxuXG46Zm9jdXMge1xuXHRvdXRsaW5lOiAw
O1xufVxuXG4uaGlkZGVuIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cblxuLnRvZG9hcHAge1xuXHRi
YWNrZ3JvdW5kOiAjZmZmO1xuXHRtYXJnaW46IDEzMHB4IDAgNDBweCAwO1xuXHRwb3NpdGlvbjog
cmVsYXRpdmU7XG5cdC13ZWJraXQtYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLCAwLCAw
LCAwLjIpLFxuXHQgICAgICAgICAgICAwIDI1cHggNTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTtc
blx0ICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksXG5c
dCAgICAgICAgICAgIDAgMjVweCA1MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4udG9k
b2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG5cdGZvbnQtc3R5bGU6IGl0
YWxpYztcblx0Zm9udC13ZWlnaHQ6IDMwMDtcblx0Y29sb3I6ICNlNmU2ZTY7XG59XG5cbi50b2Rv
YXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVyIHtcblx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRm
b250LXdlaWdodDogMzAwO1xuXHRjb2xvcjogI2U2ZTZlNjtcbn1cblxuLnRvZG9hcHAgaW5wdXQ6
OmlucHV0LXBsYWNlaG9sZGVyIHtcblx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRmb250LXdlaWdo
dDogMzAwO1xuXHRjb2xvcjogI2U2ZTZlNjtcbn1cblxuLnRvZG9hcHAgaDEge1xuXHRwb3NpdGlv
bjogYWJzb2x1dGU7XG5cdHRvcDogLTE1NXB4O1xuXHR3aWR0aDogMTAwJTtcblx0Zm9udC1zaXpl
OiAxMDBweDtcblx0Zm9udC13ZWlnaHQ6IDEwMDtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRj
b2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xNSk7XG5cdC13ZWJraXQtdGV4dC1yZW5kZXJpbmc6
IG9wdGltaXplTGVnaWJpbGl0eTtcblx0LW1vei10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdp
YmlsaXR5O1xuXHR0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xufVxuXG4ubmV3
LXRvZG8sXG4uZWRpdCB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0bWFyZ2luOiAwO1xuXHR3
aWR0aDogMTAwJTtcblx0Zm9udC1zaXplOiAyNHB4O1xuXHRmb250LWZhbWlseTogaW5oZXJpdDtc
blx0Zm9udC13ZWlnaHQ6IGluaGVyaXQ7XG5cdGxpbmUtaGVpZ2h0OiAxLjRlbTtcblx0Ym9yZGVy
OiAwO1xuXHRjb2xvcjogaW5oZXJpdDtcblx0cGFkZGluZzogNnB4O1xuXHRib3JkZXI6IDFweCBz
b2xpZCAjOTk5O1xuXHQtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgLTFweCA1cHggMCByZ2Jh
KDAsIDAsIDAsIDAuMik7XG5cdCAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDVweCAw
IHJnYmEoMCwgMCwgMCwgMC4yKTtcblx0LXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xu
XHQgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdC13ZWJraXQtZm9udC1zbW9vdGhp
bmc6IGFudGlhbGlhc2VkO1xuXHQtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xu
fVxuXG4ubmV3LXRvZG8ge1xuXHRwYWRkaW5nOiAxNnB4IDE2cHggMTZweCA2MHB4O1xuXHRib3Jk
ZXI6IG5vbmU7XG5cdGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMDMpO1xuXHQtd2Via2l0
LWJveC1zaGFkb3c6IGluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCwwLjAzKTtcblx0ICAgICAg
ICBib3gtc2hhZG93OiBpbnNldCAwIC0ycHggMXB4IHJnYmEoMCwwLDAsMC4wMyk7XG59XG5cbi5t
YWluIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR6LWluZGV4OiAyO1xuXHRib3JkZXItdG9w
OiAxcHggc29saWQgI2U2ZTZlNjtcbn1cblxuLnRvZ2dsZS1hbGwge1xuXHR0ZXh0LWFsaWduOiBj
ZW50ZXI7XG5cdGJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqL1xuXHRvcGFjaXR5OiAw
O1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbi50b2dnbGUtYWxsICsgbGFiZWwge1xuXHR3
aWR0aDogNjBweDtcblx0aGVpZ2h0OiAzNHB4O1xuXHRmb250LXNpemU6IDA7XG5cdHBvc2l0aW9u
OiBhYnNvbHV0ZTtcblx0dG9wOiAtNTJweDtcblx0bGVmdDogLTEzcHg7XG5cdC13ZWJraXQtdHJh
bnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuXHQtbXMtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xu
XHQgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xufVxuXG4udG9nZ2xlLWFsbCArIGxhYmVs
OmJlZm9yZSB7XG5cdGNvbnRlbnQ6ICfina8nO1xuXHRmb250LXNpemU6IDIycHg7XG5cdGNvbG9y
OiAjZTZlNmU2O1xuXHRwYWRkaW5nOiAxMHB4IDI3cHggMTBweCAyN3B4O1xufVxuXG4udG9nZ2xl
LWFsbDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcblx0Y29sb3I6ICM3MzczNzM7XG59XG5cbi50
b2RvLWxpc3Qge1xuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmc6IDA7XG5cdGxpc3Qtc3R5bGU6IG5v
bmU7XG59XG5cbi50b2RvLWxpc3QgbGkge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGZvbnQt
c2l6ZTogMjRweDtcblx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZGVkZWQ7XG59XG5cbi50
b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCB7XG5cdGJvcmRlci1ib3R0b206IG5vbmU7XG59XG5cbi50
b2RvLWxpc3QgbGkuZWRpdGluZyB7XG5cdGJvcmRlci1ib3R0b206IG5vbmU7XG5cdHBhZGRpbmc6
IDA7XG59XG5cbi50b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRpdCB7XG5cdGRpc3BsYXk6IGJsb2Nr
O1xuXHR3aWR0aDogNTA2cHg7XG5cdHBhZGRpbmc6IDEycHggMTZweDtcblx0bWFyZ2luOiAwIDAg
MCA0M3B4O1xufVxuXG4udG9kby1saXN0IGxpLmVkaXRpbmcgLnZpZXcge1xuXHRkaXNwbGF5OiBu
b25lO1xufVxuXG4udG9kby1saXN0IGxpIC50b2dnbGUge1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7
XG5cdHdpZHRoOiA0MHB4O1xuXHQvKiBhdXRvLCBzaW5jZSBub24tV2ViS2l0IGJyb3dzZXJzIGRv
ZXNuJ3Qgc3VwcG9ydCBpbnB1dCBzdHlsaW5nICovXG5cdGhlaWdodDogYXV0bztcblx0cG9zaXRp
b246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGJvdHRvbTogMDtcblx0bWFyZ2luOiBhdXRvIDA7
XG5cdGJvcmRlcjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqL1xuXHQtd2Via2l0LWFwcGVhcmFu
Y2U6IG5vbmU7XG5cdC1tb3otYXBwZWFyYW5jZTogbm9uZTtcblx0ICAgICBhcHBlYXJhbmNlOiBu
b25lO1xufVxuXG4udG9kby1saXN0IGxpIC50b2dnbGUge1xuXHRvcGFjaXR5OiAwO1xufVxuXG4u
dG9kby1saXN0IGxpIC50b2dnbGUgKyBsYWJlbCB7XG5cdC8qXG5cdFx0RmlyZWZveCByZXF1aXJl
cyBgI2AgdG8gYmUgZXNjYXBlZCAtIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19i
dWcuY2dpP2lkPTkyMjQzM1xuXHRcdElFIGFuZCBFZGdlIHJlcXVpcmVzICpldmVyeXRoaW5nKiB0
byBiZSBlc2NhcGVkIHRvIHJlbmRlciwgc28gd2UgZG8gdGhhdCBpbnN0ZWFkIG9mIGp1c3QgdGhl
IGAjYCAtIGh0dHBzOi8vZGV2ZWxvcGVyLm1pY3Jvc29mdC5jb20vZW4tdXMvbWljcm9zb2Z0LWVk
Z2UvcGxhdGZvcm0vaXNzdWVzLzcxNTc0NTkvXG5cdCovXG5cdGJhY2tncm91bmQtaW1hZ2U6IHVy
bCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBLy93
d3cudzMub3JnLzIwMDAvc3ZnJTIyJTIwd2lkdGglM0QlMjI0MCUyMiUyMGhlaWdodCUzRCUyMjQw
JTIyJTIwdmlld0JveCUzRCUyMi0xMCUyMC0xOCUyMDEwMCUyMDEzNSUyMiUzRSUzQ2NpcmNsZSUy
MGN4JTNEJTIyNTAlMjIlMjBjeSUzRCUyMjUwJTIyJTIwciUzRCUyMjUwJTIyJTIwZmlsbCUzRCUy
Mm5vbmUlMjIlMjBzdHJva2UlM0QlMjIlMjNlZGVkZWQlMjIlMjBzdHJva2Utd2lkdGglM0QlMjIz
JTIyLyUzRSUzQy9zdmclM0UnKTtcblx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0
YmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGxlZnQ7XG59XG5cbi50b2RvLWxpc3QgbGkgLnRv
Z2dsZTpjaGVja2VkICsgbGFiZWwge1xuXHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1h
Z2Uvc3ZnK3htbDt1dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQS8vd3d3LnczLm9yZy8y
MDAwL3N2ZyUyMiUyMHdpZHRoJTNEJTIyNDAlMjIlMjBoZWlnaHQlM0QlMjI0MCUyMiUyMHZpZXdC
b3glM0QlMjItMTAlMjAtMTglMjAxMDAlMjAxMzUlMjIlM0UlM0NjaXJjbGUlMjBjeCUzRCUyMjUw
JTIyJTIwY3klM0QlMjI1MCUyMiUyMHIlM0QlMjI1MCUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTIw
c3Ryb2tlJTNEJTIyJTIzYmRkYWQ1JTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMyUyMi8lM0UlM0Nw
YXRoJTIwZmlsbCUzRCUyMiUyMzVkYzJhZiUyMiUyMGQlM0QlMjJNNzIlMjAyNUw0MiUyMDcxJTIw
MjclMjA1NmwtNCUyMDQlMjAyMCUyMDIwJTIwMzQtNTJ6JTIyLyUzRSUzQy9zdmclM0UnKTtcbn1c
blxuLnRvZG8tbGlzdCBsaSBsYWJlbCB7XG5cdHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcblx0cGFk
ZGluZzogMTVweCAxNXB4IDE1cHggNjBweDtcblx0ZGlzcGxheTogYmxvY2s7XG5cdGxpbmUtaGVp
Z2h0OiAxLjI7XG5cdC13ZWJraXQtdHJhbnNpdGlvbjogY29sb3IgMC40cztcblx0LW8tdHJhbnNp
dGlvbjogY29sb3IgMC40cztcblx0dHJhbnNpdGlvbjogY29sb3IgMC40cztcbn1cblxuLnRvZG8t
bGlzdCBsaS5jb21wbGV0ZWQgbGFiZWwge1xuXHRjb2xvcjogI2Q5ZDlkOTtcblx0dGV4dC1kZWNv
cmF0aW9uOiBsaW5lLXRocm91Z2g7XG59XG5cbi50b2RvLWxpc3QgbGkgLmRlc3Ryb3kge1xuXHRk
aXNwbGF5OiBub25lO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogMDtcblx0cmlnaHQ6
IDEwcHg7XG5cdGJvdHRvbTogMDtcblx0d2lkdGg6IDQwcHg7XG5cdGhlaWdodDogNDBweDtcblx0
bWFyZ2luOiBhdXRvIDA7XG5cdGZvbnQtc2l6ZTogMzBweDtcblx0Y29sb3I6ICNjYzlhOWE7XG5c
dG1hcmdpbi1ib3R0b206IDExcHg7XG5cdC13ZWJraXQtdHJhbnNpdGlvbjogY29sb3IgMC4ycyBl
YXNlLW91dDtcblx0LW8tdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlLW91dDtcblx0dHJhbnNp
dGlvbjogY29sb3IgMC4ycyBlYXNlLW91dDtcbn1cblxuLnRvZG8tbGlzdCBsaSAuZGVzdHJveTpo
b3ZlciB7XG5cdGNvbG9yOiAjYWY1YjVlO1xufVxuXG4udG9kby1saXN0IGxpIC5kZXN0cm95OmFm
dGVyIHtcblx0Y29udGVudDogJ8OXJztcbn1cblxuLnRvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJv
eSB7XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxuXG4udG9kby1saXN0IGxpIC5lZGl0IHtcblx0ZGlz
cGxheTogbm9uZTtcbn1cblxuLnRvZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hpbGQge1xuXHRt
YXJnaW4tYm90dG9tOiAtMXB4O1xufVxuXG4uZm9vdGVyIHtcblx0Y29sb3I6ICM3Nzc7XG5cdHBh
ZGRpbmc6IDEwcHggMTVweDtcblx0aGVpZ2h0OiAyMHB4O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7
XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTZlNmU2O1xufVxuXG4uZm9vdGVyOmJlZm9yZSB7
XG5cdGNvbnRlbnQ6ICcnO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHJpZ2h0OiAwO1xuXHRi
b3R0b206IDA7XG5cdGxlZnQ6IDA7XG5cdGhlaWdodDogNTBweDtcblx0b3ZlcmZsb3c6IGhpZGRl
bjtcblx0LXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjIpLFxu
XHQgICAgICAgICAgICAwIDhweCAwIC0zcHggI2Y2ZjZmNixcblx0ICAgICAgICAgICAgMCA5cHgg
MXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLFxuXHQgICAgICAgICAgICAwIDE2cHggMCAtNnB4
ICNmNmY2ZjYsXG5cdCAgICAgICAgICAgIDAgMTdweCAycHggLTZweCByZ2JhKDAsIDAsIDAsIDAu
Mik7XG5cdCAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSxc
blx0ICAgICAgICAgICAgMCA4cHggMCAtM3B4ICNmNmY2ZjYsXG5cdCAgICAgICAgICAgIDAgOXB4
IDFweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSxcblx0ICAgICAgICAgICAgMCAxNnB4IDAgLTZw
eCAjZjZmNmY2LFxuXHQgICAgICAgICAgICAwIDE3cHggMnB4IC02cHggcmdiYSgwLCAwLCAwLCAw
LjIpO1xufVxuXG4udG9kby1jb3VudCB7XG5cdGZsb2F0OiBsZWZ0O1xuXHR0ZXh0LWFsaWduOiBs
ZWZ0O1xufVxuXG4udG9kby1jb3VudCBzdHJvbmcge1xuXHRmb250LXdlaWdodDogMzAwO1xufVxu
XG4uZmlsdGVycyB7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogMDtcblx0bGlzdC1zdHlsZTog
bm9uZTtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRyaWdodDogMDtcblx0bGVmdDogMDtcbn1c
blxuLmZpbHRlcnMgbGkge1xuXHRkaXNwbGF5OiBpbmxpbmU7XG59XG5cbi5maWx0ZXJzIGxpIGEg
e1xuXHRjb2xvcjogaW5oZXJpdDtcblx0bWFyZ2luOiAzcHg7XG5cdHBhZGRpbmc6IDNweCA3cHg7
XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0Ym9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJl
bnQ7XG5cdGJvcmRlci1yYWRpdXM6IDNweDtcbn1cblxuLmZpbHRlcnMgbGkgYTpob3ZlciB7XG5c
dGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xKTtcbn1cblxuLmZpbHRlcnMgbGkg
YS5zZWxlY3RlZCB7XG5cdGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4yKTtcbn1c
blxuLmNsZWFyLWNvbXBsZXRlZCxcbmh0bWwgLmNsZWFyLWNvbXBsZXRlZDphY3RpdmUge1xuXHRm
bG9hdDogcmlnaHQ7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0bGluZS1oZWlnaHQ6IDIwcHg7
XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0Y3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY2xl
YXItY29tcGxldGVkOmhvdmVyIHtcblx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5c
bi5pbmZvIHtcblx0bWFyZ2luOiA2NXB4IGF1dG8gMDtcblx0Y29sb3I6ICNiZmJmYmY7XG5cdGZv
bnQtc2l6ZTogMTBweDtcblx0dGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1
LCAwLjUpO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5pbmZvIHAge1xuXHRsaW5lLWhl
aWdodDogMTtcbn1cblxuLmluZm8gYSB7XG5cdGNvbG9yOiBpbmhlcml0O1xuXHR0ZXh0LWRlY29y
YXRpb246IG5vbmU7XG5cdGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbi5pbmZvIGE6aG92ZXIge1xu
XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLypcblx0SGFjayB0byByZW1vdmUg
YmFja2dyb3VuZCBmcm9tIE1vYmlsZSBTYWZhcmkuXG5cdENhbid0IHVzZSBpdCBnbG9iYWxseSBz
aW5jZSBpdCBkZXN0cm95cyBjaGVja2JveGVzIGluIEZpcmVmb3hcbiovXG5AbWVkaWEgc2NyZWVu
IGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApIHtcblx0LnRvZ2dsZS1hbGws
XG5cdC50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0fVxu
XG5cdC50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7XG5cdFx0aGVpZ2h0OiA0MHB4O1xuXHR9XG59XG5c
bkBtZWRpYSAobWF4LXdpZHRoOiA0MzBweCkge1xuXHQuZm9vdGVyIHtcblx0XHRoZWlnaHQ6IDUw
cHg7XG5cdH1cblxuXHQuZmlsdGVycyB7XG5cdFx0Ym90dG9tOiAxMHB4O1xuXHR9XG59XG5cblxu
XG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3Nz
L2luZGV4LmNzcyJdLCJzb3VyY2VSb290IjoiIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9jc3MvbWFp
bi5mMDRhNzMxOS5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9jc3Mv
bWFpbi5mMDRhNzMxOS5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4YmNmOWNm
NzA1MmMzYTEzN2M1OGE0NGY5YWYwY2ZmM2E3ZmVmZGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0
aWMvY3NzL21haW4uZjA0YTczMTkuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1i
b2R5LGJ1dHRvbixodG1se21hcmdpbjowO3BhZGRpbmc6MH1idXR0b257Ym9yZGVyOjA7YmFja2dy
b3VuZDpub25lO2ZvbnQtc2l6ZToxMDAlO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2ZvbnQtZmFt
aWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDtjb2xvcjppbmhlcml0Oy13ZWJraXQtYXBw
ZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTstd2Via2l0
LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkfWJvZHksYnV0dG9uey1tb3otb3N4LWZvbnQtc21v
b3RoaW5nOmdyYXlzY2FsZX1ib2R5e2ZvbnQ6MTRweCBIZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRpY2Es
QXJpYWwsc2Fucy1zZXJpZjtsaW5lLWhlaWdodDoxLjRlbTtiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29s
b3I6IzRkNGQ0ZDttaW4td2lkdGg6MjMwcHg7bWF4LXdpZHRoOjU1MHB4O21hcmdpbjowIGF1dG87
LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDtmb250LXdlaWdodDozMDB9OmZvY3Vz
e291dGxpbmU6MH0uaGlkZGVue2Rpc3BsYXk6bm9uZX0udG9kb2FwcHtiYWNrZ3JvdW5kOiNmZmY7
bWFyZ2luOjEzMHB4IDAgNDBweDtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2hhZG93OjAgMnB4IDRw
eCAwIHJnYmEoMCwwLDAsLjIpLDAgMjVweCA1MHB4IDAgcmdiYSgwLDAsMCwuMSl9LnRvZG9hcHAg
aW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13
ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXJ7
Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAg
aW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMw
MDtjb2xvcjojZTZlNmU2fS50b2RvYXBwIGgxe3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTU1cHg7
d2lkdGg6MTAwJTtmb250LXNpemU6MTAwcHg7Zm9udC13ZWlnaHQ6MTAwO3RleHQtYWxpZ246Y2Vu
dGVyO2NvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4xNSk7LXdlYmtpdC10ZXh0LXJlbmRlcmluZzpvcHRp
bWl6ZUxlZ2liaWxpdHk7LW1vei10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7dGV4
dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5fS5lZGl0LC5uZXctdG9kb3twb3NpdGlvbjpy
ZWxhdGl2ZTttYXJnaW46MDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToyNHB4O2ZvbnQtZmFtaWx5Omlu
aGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDoxLjRlbTtib3JkZXI6MDtjb2xv
cjppbmhlcml0O3BhZGRpbmc6NnB4O2JvcmRlcjoxcHggc29saWQgIzk5OTtib3gtc2hhZG93Omlu
c2V0IDAgLTFweCA1cHggMCByZ2JhKDAsMCwwLC4yKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdl
YmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpn
cmF5c2NhbGV9Lm5ldy10b2Rve3BhZGRpbmc6MTZweCAxNnB4IDE2cHggNjBweDtib3JkZXI6bm9u
ZTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjAwMyk7Ym94LXNoYWRvdzppbnNldCAwIC0ycHggMXB4
IHJnYmEoMCwwLDAsLjAzKX0ubWFpbntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7Ym9yZGVy
LXRvcDoxcHggc29saWQgI2U2ZTZlNn0udG9nZ2xlLWFsbHt0ZXh0LWFsaWduOmNlbnRlcjtib3Jk
ZXI6bm9uZTtvcGFjaXR5OjA7cG9zaXRpb246YWJzb2x1dGV9LnRvZ2dsZS1hbGwrbGFiZWx7d2lk
dGg6NjBweDtoZWlnaHQ6MzRweDtmb250LXNpemU6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTUy
cHg7bGVmdDotMTNweDstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpOy1tcy10cmFuc2Zv
cm06cm90YXRlKDkwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX0udG9nZ2xlLWFsbCtsYWJl
bDpiZWZvcmV7Y29udGVudDonXDI3NkYnO2ZvbnQtc2l6ZToyMnB4O2NvbG9yOiNlNmU2ZTY7cGFk
ZGluZzoxMHB4IDI3cHh9LnRvZ2dsZS1hbGw6Y2hlY2tlZCtsYWJlbDpiZWZvcmV7Y29sb3I6Izcz
NzM3M30udG9kby1saXN0e21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9LnRvZG8t
bGlzdCBsaXtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6MjRweDtib3JkZXItYm90dG9tOjFw
eCBzb2xpZCAjZWRlZGVkfS50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5v
bmV9LnRvZG8tbGlzdCBsaS5lZGl0aW5ne2JvcmRlci1ib3R0b206bm9uZTtwYWRkaW5nOjB9LnRv
ZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0e2Rpc3BsYXk6YmxvY2s7d2lkdGg6NTA2cHg7cGFkZGlu
ZzoxMnB4IDE2cHg7bWFyZ2luOjAgMCAwIDQzcHh9LnRvZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3
e2Rpc3BsYXk6bm9uZX0udG9kby1saXN0IGxpIC50b2dnbGV7dGV4dC1hbGlnbjpjZW50ZXI7d2lk
dGg6NDBweDtoZWlnaHQ6YXV0bztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDttYXJn
aW46YXV0byAwO2JvcmRlcjpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFy
YW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtvcGFjaXR5OjB9LnRvZG8tbGlzdCBsaSAudG9nZ2xl
K2xhYmVse2JhY2tncm91bmQtaW1hZ2U6dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwlM0Nz
dmclMjB4bWxucyUzRCUyMmh0dHAlM0EvL3d3dy53My5vcmcvMjAwMC9zdmclMjIlMjB3aWR0aCUz
RCUyMjQwJTIyJTIwaGVpZ2h0JTNEJTIyNDAlMjIlMjB2aWV3Qm94JTNEJTIyLTEwJTIwLTE4JTIw
MTAwJTIwMTM1JTIyJTNFJTNDY2lyY2xlJTIwY3glM0QlMjI1MCUyMiUyMGN5JTNEJTIyNTAlMjIl
MjByJTNEJTIyNTAlMjIlMjBmaWxsJTNEJTIybm9uZSUyMiUyMHN0cm9rZSUzRCUyMiUyM2VkZWRl
ZCUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjMlMjIvJTNFJTNDL3N2ZyUzRScpO2JhY2tncm91bmQt
cmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjB9LnRvZG8tbGlzdCBsaSAudG9n
Z2xlOmNoZWNrZWQrbGFiZWx7YmFja2dyb3VuZC1pbWFnZTp1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3ht
bDt1dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUy
MiUyMHdpZHRoJTNEJTIyNDAlMjIlMjBoZWlnaHQlM0QlMjI0MCUyMiUyMHZpZXdCb3glM0QlMjIt
MTAlMjAtMTglMjAxMDAlMjAxMzUlMjIlM0UlM0NjaXJjbGUlMjBjeCUzRCUyMjUwJTIyJTIwY3kl
M0QlMjI1MCUyMiUyMHIlM0QlMjI1MCUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTIwc3Ryb2tlJTNE
JTIyJTIzYmRkYWQ1JTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMyUyMi8lM0UlM0NwYXRoJTIwZmls
bCUzRCUyMiUyMzVkYzJhZiUyMiUyMGQlM0QlMjJNNzIlMjAyNUw0MiUyMDcxJTIwMjclMjA1Nmwt
NCUyMDQlMjAyMCUyMDIwJTIwMzQtNTJ6JTIyLyUzRSUzQy9zdmclM0UnKX0udG9kby1saXN0IGxp
IGxhYmVse3dvcmQtYnJlYWs6YnJlYWstYWxsO3BhZGRpbmc6MTVweCAxNXB4IDE1cHggNjBweDtk
aXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjEuMjstd2Via2l0LXRyYW5zaXRpb246Y29sb3IgLjRz
O3RyYW5zaXRpb246Y29sb3IgLjRzfS50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVse2NvbG9y
OiNkOWQ5ZDk7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaH0udG9kby1saXN0IGxpIC5kZXN0
cm95e2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDoxMHB4O2JvdHRv
bTowO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bWFyZ2luOmF1dG8gMDtmb250LXNpemU6MzBweDtj
b2xvcjojY2M5YTlhO21hcmdpbi1ib3R0b206MTFweDstd2Via2l0LXRyYW5zaXRpb246Y29sb3Ig
LjJzIGVhc2Utb3V0O3RyYW5zaXRpb246Y29sb3IgLjJzIGVhc2Utb3V0fS50b2RvLWxpc3QgbGkg
LmRlc3Ryb3k6aG92ZXJ7Y29sb3I6I2FmNWI1ZX0udG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVy
e2NvbnRlbnQ6J1xENyd9LnRvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJveXtkaXNwbGF5OmJsb2Nr
fS50b2RvLWxpc3QgbGkgLmVkaXR7ZGlzcGxheTpub25lfS50b2RvLWxpc3QgbGkuZWRpdGluZzps
YXN0LWNoaWxke21hcmdpbi1ib3R0b206LTFweH0uZm9vdGVye2NvbG9yOiM3Nzc7cGFkZGluZzox
MHB4IDE1cHg7aGVpZ2h0OjIwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLXRvcDoxcHggc29s
aWQgI2U2ZTZlNn0uZm9vdGVyOmJlZm9yZXtjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3Jp
Z2h0OjA7Ym90dG9tOjA7bGVmdDowO2hlaWdodDo1MHB4O292ZXJmbG93OmhpZGRlbjtib3gtc2hh
ZG93OjAgMXB4IDFweCByZ2JhKDAsMCwwLC4yKSwwIDhweCAwIC0zcHggI2Y2ZjZmNiwwIDlweCAx
cHggLTNweCByZ2JhKDAsMCwwLC4yKSwwIDE2cHggMCAtNnB4ICNmNmY2ZjYsMCAxN3B4IDJweCAt
NnB4IHJnYmEoMCwwLDAsLjIpfS50b2RvLWNvdW50e2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpsZWZ0
fS50b2RvLWNvdW50IHN0cm9uZ3tmb250LXdlaWdodDozMDB9LmZpbHRlcnN7bWFyZ2luOjA7cGFk
ZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2xlZnQ6MH0u
ZmlsdGVycyBsaXtkaXNwbGF5OmlubGluZX0uZmlsdGVycyBsaSBhe2NvbG9yOmluaGVyaXQ7bWFy
Z2luOjNweDtwYWRkaW5nOjNweCA3cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyOjFweCBz
b2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjNweH0uZmlsdGVycyBsaSBhOmhvdmVye2Jv
cmRlci1jb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMSl9LmZpbHRlcnMgbGkgYS5zZWxlY3RlZHtib3Jk
ZXItY29sb3I6cmdiYSgxNzUsNDcsNDcsLjIpfS5jbGVhci1jb21wbGV0ZWQsaHRtbCAuY2xlYXIt
Y29tcGxldGVkOmFjdGl2ZXtmbG9hdDpyaWdodDtwb3NpdGlvbjpyZWxhdGl2ZTtsaW5lLWhlaWdo
dDoyMHB4O3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyfS5jbGVhci1jb21wbGV0
ZWQ6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uaW5mb3ttYXJnaW46NjVweCBhdXRv
IDA7Y29sb3I6I2JmYmZiZjtmb250LXNpemU6MTBweDt0ZXh0LXNoYWRvdzowIDFweCAwIGhzbGEo
MCwwJSwxMDAlLC41KTt0ZXh0LWFsaWduOmNlbnRlcn0uaW5mbyBwe2xpbmUtaGVpZ2h0OjF9Lmlu
Zm8gYXtjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtd2VpZ2h0OjQwMH0u
aW5mbyBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9QG1lZGlhIHNjcmVlbiBhbmQg
KC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKXsudG9kby1saXN0IGxpIC50b2dnbGUs
LnRvZ2dsZS1hbGx7YmFja2dyb3VuZDpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXtoZWlnaHQ6
NDBweH19QG1lZGlhIChtYXgtd2lkdGg6NDMwcHgpey5mb290ZXJ7aGVpZ2h0OjUwcHh9LmZpbHRl
cnN7Ym90dG9tOjEwcHh9fQotLyojIHNvdXJjZU1hcHBpbmdVUkw9bWFpbi5mMDRhNzMxOS5jc3Mu
bWFwKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9jc3MvbWFpbi5mMDRhNzMxOS5jc3MubWFwIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvY3NzL21haW4uZjA0YTczMTkuY3NzLm1h
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJmNzZlN2I0NmI4M2JmNjE3YzJjNTEx
ZWM3NDFkNDM2MjUxN2VhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9jc3MvbWFpbi5mMDRh
NzMxOS5jc3MubWFwCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAoteyJ2ZXJzaW9uIjozLCJz
b3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzdGF0aWMvY3NzL21h
aW4uZjA0YTczMTkuY3NzIiwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvanMv
bWFpbi4xOGI0MDllMS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2pz
L21haW4uMThiNDA5ZTEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTkwMjE1NWQ0ZGQyOTMzZTgxOTk4MmQyZDAx
N2NjODMzNzE0ZjhkZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4
L2Rpc3Qvc3RhdGljL2pzL21haW4uMThiNDA5ZTEuanMKQEAgLTAsMCArMSwyIEBACishZnVuY3Rp
b24oZSl7ZnVuY3Rpb24gdChyKXtpZihuW3JdKXJldHVybiBuW3JdLmV4cG9ydHM7dmFyIG89blty
XT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4
cG9ydHMsdCksby5sPSEwLG8uZXhwb3J0c312YXIgbj17fTt0Lm09ZSx0LmM9bix0LmQ9ZnVuY3Rp
b24oZSxuLHIpe3QubyhlLG4pfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHtjb25maWd1cmFi
bGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6cn0pfSx0Lm49ZnVuY3Rpb24oZSl7dmFyIG49ZSYmZS5f
X2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4g
ZX07cmV0dXJuIHQuZChuLCJhIixuKSxufSx0Lm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LHQucD0iLi8iLHQodC5zPTk3KX0o
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyLGksYSx1LHMp
e2lmKG8odCksIWUpe3ZhciBjO2lmKHZvaWQgMD09PXQpYz1uZXcgRXJyb3IoIk1pbmlmaWVkIGV4
Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZv
ciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3Mu
Iik7ZWxzZXt2YXIgbD1bbixyLGksYSx1LHNdLHA9MDtjPW5ldyBFcnJvcih0LnJlcGxhY2UoLyVz
L2csZnVuY3Rpb24oKXtyZXR1cm4gbFtwKytdfSkpLGMubmFtZT0iSW52YXJpYW50IFZpb2xhdGlv
biJ9dGhyb3cgYy5mcmFtZXNUb1BvcD0xLGN9fXZhciBvPWZ1bmN0aW9uKGUpe307ZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big2KSxvPXI7ZS5leHBvcnRz
PW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9
YXJndW1lbnRzLmxlbmd0aC0xLG49Ik1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQg
aHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9p
bnZhcmlhbnQ9IitlLHI9MDtyPHQ7cisrKW4rPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50
KGFyZ3VtZW50c1tyKzFdKTtuKz0iIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9u
LW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwg
aGVscGZ1bCB3YXJuaW5ncy4iO3ZhciBvPW5ldyBFcnJvcihuKTt0aHJvdyBvLm5hbWU9IkludmFy
aWFudCBWaW9sYXRpb24iLG8uZnJhbWVzVG9Qb3A9MSxvfWUuZXhwb3J0cz1yfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYobnVsbD09PWV8fHZvaWQgMD09PWUp
dGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGgg
bnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4gT2JqZWN0KGUpfXZhciBvPU9iamVjdC5nZXRPd25Q
cm9wZXJ0eVN5bWJvbHMsaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGE9T2JqZWN0
LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0cnl7
aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIGU9bmV3IFN0cmluZygiYWJjIik7aWYoZVs1
XT0iZGUiLCI1Ij09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBdKXJldHVybiExO2Zv
cih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFsiXyIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjtp
ZigiMDEyMzQ1Njc4OSIhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5tYXAoZnVuY3Rp
b24oZSl7cmV0dXJuIHRbZV19KS5qb2luKCIiKSlyZXR1cm4hMTt2YXIgcj17fTtyZXR1cm4iYWJj
ZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JbZV09ZX0p
LCJhYmNkZWZnaGlqa2xtbm9wcXJzdCI9PT1PYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LHIp
KS5qb2luKCIiKX1jYXRjaChlKXtyZXR1cm4hMX19KCk/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihl
LHQpe2Zvcih2YXIgbix1LHM9cihlKSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7bj1PYmpl
Y3QoYXJndW1lbnRzW2NdKTtmb3IodmFyIGwgaW4gbilpLmNhbGwobixsKSYmKHNbbF09bltsXSk7
aWYobyl7dT1vKG4pO2Zvcih2YXIgcD0wO3A8dS5sZW5ndGg7cCsrKWEuY2FsbChuLHVbcF0pJiYo
c1t1W3BdXT1uW3VbcF1dKX19cmV0dXJuIHN9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gMT09PWUubm9kZVR5cGUmJmUuZ2V0QXR0cmlidXRlKGgp
PT09U3RyaW5nKHQpfHw4PT09ZS5ub2RlVHlwZSYmZS5ub2RlVmFsdWU9PT0iIHJlYWN0LXRleHQ6
ICIrdCsiICJ8fDg9PT1lLm5vZGVUeXBlJiZlLm5vZGVWYWx1ZT09PSIgcmVhY3QtZW1wdHk6ICIr
dCsiICJ9ZnVuY3Rpb24gbyhlKXtmb3IodmFyIHQ7dD1lLl9yZW5kZXJlZENvbXBvbmVudDspZT10
O3JldHVybiBlfWZ1bmN0aW9uIGkoZSx0KXt2YXIgbj1vKGUpO24uX2hvc3ROb2RlPXQsdFt2XT1u
fWZ1bmN0aW9uIGEoZSl7dmFyIHQ9ZS5faG9zdE5vZGU7dCYmKGRlbGV0ZSB0W3ZdLGUuX2hvc3RO
b2RlPW51bGwpfWZ1bmN0aW9uIHUoZSx0KXtpZighKGUuX2ZsYWdzJm0uaGFzQ2FjaGVkQ2hpbGRO
b2Rlcykpe3ZhciBuPWUuX3JlbmRlcmVkQ2hpbGRyZW4sYT10LmZpcnN0Q2hpbGQ7ZTpmb3IodmFy
IHUgaW4gbilpZihuLmhhc093blByb3BlcnR5KHUpKXt2YXIgcz1uW3VdLGM9byhzKS5fZG9tSUQ7
aWYoMCE9PWMpe2Zvcig7bnVsbCE9PWE7YT1hLm5leHRTaWJsaW5nKWlmKHIoYSxjKSl7aShzLGEp
O2NvbnRpbnVlIGV9cCgiMzIiLGMpfX1lLl9mbGFnc3w9bS5oYXNDYWNoZWRDaGlsZE5vZGVzfX1m
dW5jdGlvbiBzKGUpe2lmKGVbdl0pcmV0dXJuIGVbdl07Zm9yKHZhciB0PVtdOyFlW3ZdOyl7aWYo
dC5wdXNoKGUpLCFlLnBhcmVudE5vZGUpcmV0dXJuIG51bGw7ZT1lLnBhcmVudE5vZGV9Zm9yKHZh
ciBuLHI7ZSYmKHI9ZVt2XSk7ZT10LnBvcCgpKW49cix0Lmxlbmd0aCYmdShyLGUpO3JldHVybiBu
fWZ1bmN0aW9uIGMoZSl7dmFyIHQ9cyhlKTtyZXR1cm4gbnVsbCE9dCYmdC5faG9zdE5vZGU9PT1l
P3Q6bnVsbH1mdW5jdGlvbiBsKGUpe2lmKHZvaWQgMD09PWUuX2hvc3ROb2RlJiZwKCIzMyIpLGUu
X2hvc3ROb2RlKXJldHVybiBlLl9ob3N0Tm9kZTtmb3IodmFyIHQ9W107IWUuX2hvc3ROb2RlOyl0
LnB1c2goZSksZS5faG9zdFBhcmVudHx8cCgiMzQiKSxlPWUuX2hvc3RQYXJlbnQ7Zm9yKDt0Lmxl
bmd0aDtlPXQucG9wKCkpdShlLGUuX2hvc3ROb2RlKTtyZXR1cm4gZS5faG9zdE5vZGV9dmFyIHA9
bigyKSxmPW4oMTUpLGQ9big1OCksaD0obigwKSxmLklEX0FUVFJJQlVURV9OQU1FKSxtPWQsdj0i
X19yZWFjdEludGVybmFsSW5zdGFuY2UkIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGlj
ZSgyKSx5PXtnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTpzLGdldEluc3RhbmNlRnJvbU5vZGU6
YyxnZXROb2RlRnJvbUluc3RhbmNlOmwscHJlY2FjaGVDaGlsZE5vZGVzOnUscHJlY2FjaGVOb2Rl
OmksdW5jYWNoZU5vZGU6YX07ZS5leHBvcnRzPXl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9ISgidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3d8fCF3aW5kb3cuZG9jdW1lbnR8
fCF3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksbz17Y2FuVXNlRE9NOnIsY2FuVXNlV29y
a2VyczoidW5kZWZpbmVkIiE9PXR5cGVvZiBXb3JrZXIsY2FuVXNlRXZlbnRMaXN0ZW5lcnM6ciYm
ISghd2luZG93LmFkZEV2ZW50TGlzdGVuZXImJiF3aW5kb3cuYXR0YWNoRXZlbnQpLGNhblVzZVZp
ZXdwb3J0OnImJiEhd2luZG93LnNjcmVlbixpc0luV29ya2VyOiFyfTtlLmV4cG9ydHM9b30sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBmdW5jdGlvbigp
e3JldHVybiBlfX12YXIgbz1mdW5jdGlvbigpe307by50aGF0UmV0dXJucz1yLG8udGhhdFJldHVy
bnNGYWxzZT1yKCExKSxvLnRoYXRSZXR1cm5zVHJ1ZT1yKCEwKSxvLnRoYXRSZXR1cm5zTnVsbD1y
KG51bGwpLG8udGhhdFJldHVybnNUaGlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG8udGhhdFJl
dHVybnNBcmd1bWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZX0sZS5leHBvcnRzPW99LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bnVsbDtlLmV4cG9ydHM9e2RlYnVnVG9vbDpyfX0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7Ty5SZWFjdFJlY29uY2ls
ZVRyYW5zYWN0aW9uJiZDfHxsKCIxMjMiKX1mdW5jdGlvbiBvKCl7dGhpcy5yZWluaXRpYWxpemVU
cmFuc2FjdGlvbigpLHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoPW51bGwsdGhpcy5jYWxsYmFj
a1F1ZXVlPWYuZ2V0UG9vbGVkKCksdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbj1PLlJlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCEwKX1mdW5jdGlvbiBpKGUsdCxuLG8saSxhKXty
ZXR1cm4gcigpLEMuYmF0Y2hlZFVwZGF0ZXMoZSx0LG4sbyxpLGEpfWZ1bmN0aW9uIGEoZSx0KXty
ZXR1cm4gZS5fbW91bnRPcmRlci10Ll9tb3VudE9yZGVyfWZ1bmN0aW9uIHUoZSl7dmFyIHQ9ZS5k
aXJ0eUNvbXBvbmVudHNMZW5ndGg7dCE9PXkubGVuZ3RoJiZsKCIxMjQiLHQseS5sZW5ndGgpLHku
c29ydChhKSxnKys7Zm9yKHZhciBuPTA7bjx0O24rKyl7dmFyIHI9eVtuXSxvPXIuX3BlbmRpbmdD
YWxsYmFja3M7ci5fcGVuZGluZ0NhbGxiYWNrcz1udWxsO3ZhciBpO2lmKGgubG9nVG9wTGV2ZWxS
ZW5kZXJzKXt2YXIgdT1yO3IuX2N1cnJlbnRFbGVtZW50LnR5cGUuaXNSZWFjdFRvcExldmVsV3Jh
cHBlciYmKHU9ci5fcmVuZGVyZWRDb21wb25lbnQpLGk9IlJlYWN0IHVwZGF0ZTogIit1LmdldE5h
bWUoKSxjb25zb2xlLnRpbWUoaSl9aWYobS5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkocixlLnJl
Y29uY2lsZVRyYW5zYWN0aW9uLGcpLGkmJmNvbnNvbGUudGltZUVuZChpKSxvKWZvcih2YXIgcz0w
O3M8by5sZW5ndGg7cysrKWUuY2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKG9bc10sci5nZXRQdWJsaWNJ
bnN0YW5jZSgpKX19ZnVuY3Rpb24gcyhlKXtpZihyKCksIUMuaXNCYXRjaGluZ1VwZGF0ZXMpcmV0
dXJuIHZvaWQgQy5iYXRjaGVkVXBkYXRlcyhzLGUpO3kucHVzaChlKSxudWxsPT1lLl91cGRhdGVC
YXRjaE51bWJlciYmKGUuX3VwZGF0ZUJhdGNoTnVtYmVyPWcrMSl9ZnVuY3Rpb24gYyhlLHQpe0Mu
aXNCYXRjaGluZ1VwZGF0ZXN8fGwoIjEyNSIpLGIuZW5xdWV1ZShlLHQpLF89ITB9dmFyIGw9bigy
KSxwPW4oMyksZj1uKDYyKSxkPW4oMTIpLGg9big2MyksbT1uKDE2KSx2PW4oMjQpLHk9KG4oMCks
W10pLGc9MCxiPWYuZ2V0UG9vbGVkKCksXz0hMSxDPW51bGwsdz17aW5pdGlhbGl6ZTpmdW5jdGlv
bigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoPXkubGVuZ3RofSxjbG9zZTpmdW5jdGlvbigp
e3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoIT09eS5sZW5ndGg/KHkuc3BsaWNlKDAsdGhpcy5k
aXJ0eUNvbXBvbmVudHNMZW5ndGgpLFQoKSk6eS5sZW5ndGg9MH19LEU9e2luaXRpYWxpemU6ZnVu
Y3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUucmVzZXQoKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlz
LmNhbGxiYWNrUXVldWUubm90aWZ5QWxsKCl9fSx4PVt3LEVdO3Aoby5wcm90b3R5cGUsdix7Z2V0
VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiB4fSxkZXN0cnVjdG9yOmZ1bmN0
aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9bnVsbCxmLnJlbGVhc2UodGhpcy5jYWxs
YmFja1F1ZXVlKSx0aGlzLmNhbGxiYWNrUXVldWU9bnVsbCxPLlJlYWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKSx0aGlzLnJlY29uY2lsZVRy
YW5zYWN0aW9uPW51bGx9LHBlcmZvcm06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2LnBlcmZvcm0u
Y2FsbCh0aGlzLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24ucGVyZm9ybSx0aGlzLnJlY29uY2ls
ZVRyYW5zYWN0aW9uLGUsdCxuKX19KSxkLmFkZFBvb2xpbmdUbyhvKTt2YXIgVD1mdW5jdGlvbigp
e2Zvcig7eS5sZW5ndGh8fF87KXtpZih5Lmxlbmd0aCl7dmFyIGU9by5nZXRQb29sZWQoKTtlLnBl
cmZvcm0odSxudWxsLGUpLG8ucmVsZWFzZShlKX1pZihfKXtfPSExO3ZhciB0PWI7Yj1mLmdldFBv
b2xlZCgpLHQubm90aWZ5QWxsKCksZi5yZWxlYXNlKHQpfX19LFA9e2luamVjdFJlY29uY2lsZVRy
YW5zYWN0aW9uOmZ1bmN0aW9uKGUpe2V8fGwoIjEyNiIpLE8uUmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbj1lfSxpbmplY3RCYXRjaGluZ1N0cmF0ZWd5OmZ1bmN0aW9uKGUpe2V8fGwoIjEyNyIpLCJm
dW5jdGlvbiIhPT10eXBlb2YgZS5iYXRjaGVkVXBkYXRlcyYmbCgiMTI4IiksImJvb2xlYW4iIT09
dHlwZW9mIGUuaXNCYXRjaGluZ1VwZGF0ZXMmJmwoIjEyOSIpLEM9ZX19LE89e1JlYWN0UmVjb25j
aWxlVHJhbnNhY3Rpb246bnVsbCxiYXRjaGVkVXBkYXRlczppLGVucXVldWVVcGRhdGU6cyxmbHVz
aEJhdGNoZWRVcGRhdGVzOlQsaW5qZWN0aW9uOlAsYXNhcDpjfTtlLmV4cG9ydHM9T30sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9bigxMyl9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9e2N1cnJlbnQ6bnVsbH07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXt0aGlzLmRpc3BhdGNoQ29uZmln
PWUsdGhpcy5fdGFyZ2V0SW5zdD10LHRoaXMubmF0aXZlRXZlbnQ9bjt2YXIgbz10aGlzLmNvbnN0
cnVjdG9yLkludGVyZmFjZTtmb3IodmFyIGkgaW4gbylpZihvLmhhc093blByb3BlcnR5KGkpKXt2
YXIgdT1vW2ldO3U/dGhpc1tpXT11KG4pOiJ0YXJnZXQiPT09aT90aGlzLnRhcmdldD1yOnRoaXNb
aV09bltpXX12YXIgcz1udWxsIT1uLmRlZmF1bHRQcmV2ZW50ZWQ/bi5kZWZhdWx0UHJldmVudGVk
OiExPT09bi5yZXR1cm5WYWx1ZTtyZXR1cm4gdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9cz9hLnRo
YXRSZXR1cm5zVHJ1ZTphLnRoYXRSZXR1cm5zRmFsc2UsdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBl
ZD1hLnRoYXRSZXR1cm5zRmFsc2UsdGhpc312YXIgbz1uKDMpLGk9bigxMiksYT1uKDYpLHU9KG4o
MSksWyJkaXNwYXRjaENvbmZpZyIsIl90YXJnZXRJbnN0IiwibmF0aXZlRXZlbnQiLCJpc0RlZmF1
bHRQcmV2ZW50ZWQiLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsIl9kaXNwYXRjaExpc3RlbmVycyIs
Il9kaXNwYXRjaEluc3RhbmNlcyJdKSxzPXt0eXBlOm51bGwsdGFyZ2V0Om51bGwsY3VycmVudFRh
cmdldDphLnRoYXRSZXR1cm5zTnVsbCxldmVudFBoYXNlOm51bGwsYnViYmxlczpudWxsLGNhbmNl
bGFibGU6bnVsbCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0YW1wfHxEYXRl
Lm5vdygpfSxkZWZhdWx0UHJldmVudGVkOm51bGwsaXNUcnVzdGVkOm51bGx9O28oci5wcm90b3R5
cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3Zh
ciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVs
dCgpOiJ1bmtub3duIiE9PXR5cGVvZiBlLnJldHVyblZhbHVlJiYoZS5yZXR1cm5WYWx1ZT0hMSks
dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS50aGF0UmV0dXJuc1RydWUpfSxzdG9wUHJvcGFnYXRp
b246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnN0b3BQcm9wYWdhdGlv
bj9lLnN0b3BQcm9wYWdhdGlvbigpOiJ1bmtub3duIiE9PXR5cGVvZiBlLmNhbmNlbEJ1YmJsZSYm
KGUuY2FuY2VsQnViYmxlPSEwKSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWEudGhhdFJldHVy
bnNUcnVlKX0scGVyc2lzdDpmdW5jdGlvbigpe3RoaXMuaXNQZXJzaXN0ZW50PWEudGhhdFJldHVy
bnNUcnVlfSxpc1BlcnNpc3RlbnQ6YS50aGF0UmV0dXJuc0ZhbHNlLGRlc3RydWN0b3I6ZnVuY3Rp
b24oKXt2YXIgZT10aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTtmb3IodmFyIHQgaW4gZSl0aGlz
W3RdPW51bGw7Zm9yKHZhciBuPTA7bjx1Lmxlbmd0aDtuKyspdGhpc1t1W25dXT1udWxsfX0pLHIu
SW50ZXJmYWNlPXMsci5hdWdtZW50Q2xhc3M9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9ZnVu
Y3Rpb24oKXt9O3IucHJvdG90eXBlPW4ucHJvdG90eXBlO3ZhciBhPW5ldyByO28oYSxlLnByb3Rv
dHlwZSksZS5wcm90b3R5cGU9YSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUuSW50ZXJmYWNl
PW8oe30sbi5JbnRlcmZhY2UsdCksZS5hdWdtZW50Q2xhc3M9bi5hdWdtZW50Q2xhc3MsaS5hZGRQ
b29saW5nVG8oZSxpLmZvdXJBcmd1bWVudFBvb2xlcil9LGkuYWRkUG9vbGluZ1RvKHIsaS5mb3Vy
QXJndW1lbnRQb29sZXIpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O3ZhciByPW4oMiksbz0obigwKSxmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKHQuaW5zdGFuY2VQ
b29sLmxlbmd0aCl7dmFyIG49dC5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIHQuY2FsbChuLGUp
LG59cmV0dXJuIG5ldyB0KGUpfSksaT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7aWYobi5pbnN0
YW5jZVBvb2wubGVuZ3RoKXt2YXIgcj1uLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gbi5jYWxs
KHIsZSx0KSxyfXJldHVybiBuZXcgbihlLHQpfSxhPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlz
O2lmKHIuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIG89ci5pbnN0YW5jZVBvb2wucG9wKCk7cmV0
dXJuIHIuY2FsbChvLGUsdCxuKSxvfXJldHVybiBuZXcgcihlLHQsbil9LHU9ZnVuY3Rpb24oZSx0
LG4scil7dmFyIG89dGhpcztpZihvLmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBpPW8uaW5zdGFu
Y2VQb29sLnBvcCgpO3JldHVybiBvLmNhbGwoaSxlLHQsbixyKSxpfXJldHVybiBuZXcgbyhlLHQs
bixyKX0scz1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2UgaW5zdGFuY2VvZiB0fHxyKCIyNSIpLGUu
ZGVzdHJ1Y3RvcigpLHQuaW5zdGFuY2VQb29sLmxlbmd0aDx0LnBvb2xTaXplJiZ0Lmluc3RhbmNl
UG9vbC5wdXNoKGUpfSxjPW8sbD1mdW5jdGlvbihlLHQpe3ZhciBuPWU7cmV0dXJuIG4uaW5zdGFu
Y2VQb29sPVtdLG4uZ2V0UG9vbGVkPXR8fGMsbi5wb29sU2l6ZXx8KG4ucG9vbFNpemU9MTApLG4u
cmVsZWFzZT1zLG59LHA9e2FkZFBvb2xpbmdUbzpsLG9uZUFyZ3VtZW50UG9vbGVyOm8sdHdvQXJn
dW1lbnRQb29sZXI6aSx0aHJlZUFyZ3VtZW50UG9vbGVyOmEsZm91ckFyZ3VtZW50UG9vbGVyOnV9
O2UuZXhwb3J0cz1wfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMyksbz1u
KDUyKSxpPW4oMTA1KSxhPW4oMTEwKSx1PW4oMTQpLHM9bigxMTEpLGM9bigxMTQpLGw9bigxMTUp
LHA9bigxMTcpLGY9dS5jcmVhdGVFbGVtZW50LGQ9dS5jcmVhdGVGYWN0b3J5LGg9dS5jbG9uZUVs
ZW1lbnQsbT1yLHY9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHk9e0NoaWxkcmVuOnttYXA6aS5tYXAs
Zm9yRWFjaDppLmZvckVhY2gsY291bnQ6aS5jb3VudCx0b0FycmF5OmkudG9BcnJheSxvbmx5OnB9
LENvbXBvbmVudDpvLkNvbXBvbmVudCxQdXJlQ29tcG9uZW50Om8uUHVyZUNvbXBvbmVudCxjcmVh
dGVFbGVtZW50OmYsY2xvbmVFbGVtZW50OmgsaXNWYWxpZEVsZW1lbnQ6dS5pc1ZhbGlkRWxlbWVu
dCxQcm9wVHlwZXM6cyxjcmVhdGVDbGFzczpsLGNyZWF0ZUZhY3Rvcnk6ZCxjcmVhdGVNaXhpbjp2
LERPTTphLHZlcnNpb246YyxfX3NwcmVhZDptfTtlLmV4cG9ydHM9eX0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiB2b2lkIDAhPT1lLnJlZn1mdW5jdGlv
biBvKGUpe3JldHVybiB2b2lkIDAhPT1lLmtleX12YXIgaT1uKDMpLGE9bigxMCksdT0obigxKSxu
KDU0KSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KSxzPW4oNTUpLGM9e2tleTohMCxy
ZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfSxsPWZ1bmN0aW9uKGUsdCxuLHIsbyxpLGEpe3Zh
ciB1PXskJHR5cGVvZjpzLHR5cGU6ZSxrZXk6dCxyZWY6bixwcm9wczphLF9vd25lcjppfTtyZXR1
cm4gdX07bC5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzPXt9LHA9bnVsbCxm
PW51bGw7aWYobnVsbCE9dCl7cih0KSYmKGY9dC5yZWYpLG8odCkmJihwPSIiK3Qua2V5KSx2b2lk
IDA9PT10Ll9fc2VsZj9udWxsOnQuX19zZWxmLHZvaWQgMD09PXQuX19zb3VyY2U/bnVsbDp0Ll9f
c291cmNlO2ZvcihpIGluIHQpdS5jYWxsKHQsaSkmJiFjLmhhc093blByb3BlcnR5KGkpJiYoc1tp
XT10W2ldKX12YXIgZD1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWQpcy5jaGlsZHJlbj1uO2Vs
c2UgaWYoZD4xKXtmb3IodmFyIGg9QXJyYXkoZCksbT0wO208ZDttKyspaFttXT1hcmd1bWVudHNb
bSsyXTtzLmNoaWxkcmVuPWh9aWYoZSYmZS5kZWZhdWx0UHJvcHMpe3ZhciB2PWUuZGVmYXVsdFBy
b3BzO2ZvcihpIGluIHYpdm9pZCAwPT09c1tpXSYmKHNbaV09dltpXSl9cmV0dXJuIGwoZSxwLGYs
MCwwLGEuY3VycmVudCxzKX0sbC5jcmVhdGVGYWN0b3J5PWZ1bmN0aW9uKGUpe3ZhciB0PWwuY3Jl
YXRlRWxlbWVudC5iaW5kKG51bGwsZSk7cmV0dXJuIHQudHlwZT1lLHR9LGwuY2xvbmVBbmRSZXBs
YWNlS2V5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGwoZS50eXBlLHQsZS5yZWYsZS5fc2VsZixlLl9z
b3VyY2UsZS5fb3duZXIsZS5wcm9wcyl9LGwuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuKXt2
YXIgcyxwPWkoe30sZS5wcm9wcyksZj1lLmtleSxkPWUucmVmLGg9KGUuX3NlbGYsZS5fc291cmNl
LGUuX293bmVyKTtpZihudWxsIT10KXtyKHQpJiYoZD10LnJlZixoPWEuY3VycmVudCksbyh0KSYm
KGY9IiIrdC5rZXkpO3ZhciBtO2UudHlwZSYmZS50eXBlLmRlZmF1bHRQcm9wcyYmKG09ZS50eXBl
LmRlZmF1bHRQcm9wcyk7Zm9yKHMgaW4gdCl1LmNhbGwodCxzKSYmIWMuaGFzT3duUHJvcGVydHko
cykmJih2b2lkIDA9PT10W3NdJiZ2b2lkIDAhPT1tP3Bbc109bVtzXTpwW3NdPXRbc10pfXZhciB2
PWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09dilwLmNoaWxkcmVuPW47ZWxzZSBpZih2PjEpe2Zv
cih2YXIgeT1BcnJheSh2KSxnPTA7Zzx2O2crKyl5W2ddPWFyZ3VtZW50c1tnKzJdO3AuY2hpbGRy
ZW49eX1yZXR1cm4gbChlLnR5cGUsZixkLDAsMCxoLHApfSxsLmlzVmFsaWRFbGVtZW50PWZ1bmN0
aW9uKGUpe3JldHVybiJvYmplY3QiPT09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09
c30sZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHQpe3JldHVybihlJnQpPT09dH12YXIgbz1uKDIpLGk9KG4oMCkse01VU1RfVVNFX1BST1BFUlRZ
OjEsSEFTX0JPT0xFQU5fVkFMVUU6NCxIQVNfTlVNRVJJQ19WQUxVRTo4LEhBU19QT1NJVElWRV9O
VU1FUklDX1ZBTFVFOjI0LEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU6MzIsaW5qZWN0RE9N
UHJvcGVydHlDb25maWc6ZnVuY3Rpb24oZSl7dmFyIHQ9aSxuPWUuUHJvcGVydGllc3x8e30sYT1l
LkRPTUF0dHJpYnV0ZU5hbWVzcGFjZXN8fHt9LHM9ZS5ET01BdHRyaWJ1dGVOYW1lc3x8e30sYz1l
LkRPTVByb3BlcnR5TmFtZXN8fHt9LGw9ZS5ET01NdXRhdGlvbk1ldGhvZHN8fHt9O2UuaXNDdXN0
b21BdHRyaWJ1dGUmJnUuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLnB1c2goZS5pc0N1c3Rv
bUF0dHJpYnV0ZSk7Zm9yKHZhciBwIGluIG4pe3UucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShw
KSYmbygiNDgiLHApO3ZhciBmPXAudG9Mb3dlckNhc2UoKSxkPW5bcF0saD17YXR0cmlidXRlTmFt
ZTpmLGF0dHJpYnV0ZU5hbWVzcGFjZTpudWxsLHByb3BlcnR5TmFtZTpwLG11dGF0aW9uTWV0aG9k
Om51bGwsbXVzdFVzZVByb3BlcnR5OnIoZCx0Lk1VU1RfVVNFX1BST1BFUlRZKSxoYXNCb29sZWFu
VmFsdWU6cihkLHQuSEFTX0JPT0xFQU5fVkFMVUUpLGhhc051bWVyaWNWYWx1ZTpyKGQsdC5IQVNf
TlVNRVJJQ19WQUxVRSksaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6cihkLHQuSEFTX1BPU0lUSVZF
X05VTUVSSUNfVkFMVUUpLGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6cihkLHQuSEFTX09WRVJM
T0FERURfQk9PTEVBTl9WQUxVRSl9O2lmKGguaGFzQm9vbGVhblZhbHVlK2guaGFzTnVtZXJpY1Zh
bHVlK2guaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTw9MXx8bygiNTAiLHApLHMuaGFzT3duUHJv
cGVydHkocCkpe3ZhciBtPXNbcF07aC5hdHRyaWJ1dGVOYW1lPW19YS5oYXNPd25Qcm9wZXJ0eShw
KSYmKGguYXR0cmlidXRlTmFtZXNwYWNlPWFbcF0pLGMuaGFzT3duUHJvcGVydHkocCkmJihoLnBy
b3BlcnR5TmFtZT1jW3BdKSxsLmhhc093blByb3BlcnR5KHApJiYoaC5tdXRhdGlvbk1ldGhvZD1s
W3BdKSx1LnByb3BlcnRpZXNbcF09aH19fSksYT0iOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUw
MEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZc
XHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3
RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkQiLHU9e0lEX0FUVFJJQlVURV9OQU1FOiJk
YXRhLXJlYWN0aWQiLFJPT1RfQVRUUklCVVRFX05BTUU6ImRhdGEtcmVhY3Ryb290IixBVFRSSUJV
VEVfTkFNRV9TVEFSVF9DSEFSOmEsQVRUUklCVVRFX05BTUVfQ0hBUjphKyJcXC0uMC05XFx1MDBC
N1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MCIscHJvcGVydGllczp7fSxnZXRQb3NzaWJs
ZVN0YW5kYXJkTmFtZTpudWxsLF9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uczpbXSxpc0N1c3Rv
bUF0dHJpYnV0ZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHUuX2lzQ3VzdG9tQXR0cmlidXRl
RnVuY3Rpb25zLmxlbmd0aDt0Kyspe2lmKCgwLHUuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25z
W3RdKShlKSlyZXR1cm4hMH1yZXR1cm4hMX0saW5qZWN0aW9uOml9O2UuZXhwb3J0cz11fSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtvLmF0dGFjaFJlZnModGhpcyx0
aGlzLl9jdXJyZW50RWxlbWVudCl9dmFyIG89bigxMjcpLGk9KG4oNyksbigxKSx7bW91bnRDb21w
b25lbnQ6ZnVuY3Rpb24oZSx0LG4sbyxpLGEpe3ZhciB1PWUubW91bnRDb21wb25lbnQodCxuLG8s
aSxhKTtyZXR1cm4gZS5fY3VycmVudEVsZW1lbnQmJm51bGwhPWUuX2N1cnJlbnRFbGVtZW50LnJl
ZiYmdC5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHIsZSksdX0sZ2V0SG9zdE5vZGU6ZnVu
Y3Rpb24oZSl7cmV0dXJuIGUuZ2V0SG9zdE5vZGUoKX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlv
bihlLHQpe28uZGV0YWNoUmVmcyhlLGUuX2N1cnJlbnRFbGVtZW50KSxlLnVubW91bnRDb21wb25l
bnQodCl9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIGE9ZS5fY3VycmVu
dEVsZW1lbnQ7aWYodCE9PWF8fGkhPT1lLl9jb250ZXh0KXt2YXIgdT1vLnNob3VsZFVwZGF0ZVJl
ZnMoYSx0KTt1JiZvLmRldGFjaFJlZnMoZSxhKSxlLnJlY2VpdmVDb21wb25lbnQodCxuLGkpLHUm
JmUuX2N1cnJlbnRFbGVtZW50JiZudWxsIT1lLl9jdXJyZW50RWxlbWVudC5yZWYmJm4uZ2V0UmVh
Y3RNb3VudFJlYWR5KCkuZW5xdWV1ZShyLGUpfX0scGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OmZ1
bmN0aW9uKGUsdCxuKXtlLl91cGRhdGVCYXRjaE51bWJlcj09PW4mJmUucGVyZm9ybVVwZGF0ZUlm
TmVjZXNzYXJ5KHQpfX0pO2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7aWYoaCl7dmFyIHQ9ZS5ub2RlLG49ZS5jaGlsZHJlbjtpZihuLmxlbmd0
aClmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyltKHQsbltyXSxudWxsKTtlbHNlIG51bGwhPWUu
aHRtbD9wKHQsZS5odG1sKTpudWxsIT1lLnRleHQmJmQodCxlLnRleHQpfX1mdW5jdGlvbiBvKGUs
dCl7ZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh0Lm5vZGUsZSkscih0KX1mdW5jdGlvbiBpKGUs
dCl7aD9lLmNoaWxkcmVuLnB1c2godCk6ZS5ub2RlLmFwcGVuZENoaWxkKHQubm9kZSl9ZnVuY3Rp
b24gYShlLHQpe2g/ZS5odG1sPXQ6cChlLm5vZGUsdCl9ZnVuY3Rpb24gdShlLHQpe2g/ZS50ZXh0
PXQ6ZChlLm5vZGUsdCl9ZnVuY3Rpb24gcygpe3JldHVybiB0aGlzLm5vZGUubm9kZU5hbWV9ZnVu
Y3Rpb24gYyhlKXtyZXR1cm57bm9kZTplLGNoaWxkcmVuOltdLGh0bWw6bnVsbCx0ZXh0Om51bGws
dG9TdHJpbmc6c319dmFyIGw9bigzOCkscD1uKDI2KSxmPW4oMzkpLGQ9big2NyksaD0idW5kZWZp
bmVkIiE9PXR5cGVvZiBkb2N1bWVudCYmIm51bWJlciI9PT10eXBlb2YgZG9jdW1lbnQuZG9jdW1l
bnRNb2RlfHwidW5kZWZpbmVkIiE9PXR5cGVvZiBuYXZpZ2F0b3ImJiJzdHJpbmciPT09dHlwZW9m
IG5hdmlnYXRvci51c2VyQWdlbnQmJi9cYkVkZ2VcL1xkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdl
bnQpLG09ZihmdW5jdGlvbihlLHQsbil7MTE9PT10Lm5vZGUubm9kZVR5cGV8fDE9PT10Lm5vZGUu
bm9kZVR5cGUmJiJvYmplY3QiPT09dC5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJihudWxs
PT10Lm5vZGUubmFtZXNwYWNlVVJJfHx0Lm5vZGUubmFtZXNwYWNlVVJJPT09bC5odG1sKT8ocih0
KSxlLmluc2VydEJlZm9yZSh0Lm5vZGUsbikpOihlLmluc2VydEJlZm9yZSh0Lm5vZGUsbikscih0
KSl9KTtjLmluc2VydFRyZWVCZWZvcmU9bSxjLnJlcGxhY2VDaGlsZFdpdGhUcmVlPW8sYy5xdWV1
ZUNoaWxkPWksYy5xdWV1ZUhUTUw9YSxjLnF1ZXVlVGV4dD11LGUuZXhwb3J0cz1jfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5s
ZW5ndGgtMSxuPSJNaW5pZmllZCBSZWFjdCBlcnJvciAjIitlKyI7IHZpc2l0IGh0dHA6Ly9mYWNl
Ym9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PSIr
ZSxyPTA7cjx0O3IrKyluKz0iJmFyZ3NbXT0iK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNb
cisxXSk7bis9IiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBk
ZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2Fy
bmluZ3MuIjt2YXIgbz1uZXcgRXJyb3Iobik7dGhyb3cgby5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0
aW9uIixvLmZyYW1lc1RvUG9wPTEsb31lLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt2YXIgcj10LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzW25dO3JldHVybiB5KGUscil9ZnVuY3Rpb24gbyhlLHQsbil7dmFyIG89
cihlLG4sdCk7byYmKG4uX2Rpc3BhdGNoTGlzdGVuZXJzPW0obi5fZGlzcGF0Y2hMaXN0ZW5lcnMs
byksbi5fZGlzcGF0Y2hJbnN0YW5jZXM9bShuLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9ZnVuY3Rp
b24gaShlKXtlJiZlLmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzJiZoLnRy
YXZlcnNlVHdvUGhhc2UoZS5fdGFyZ2V0SW5zdCxvLGUpfWZ1bmN0aW9uIGEoZSl7aWYoZSYmZS5k
aXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcyl7dmFyIHQ9ZS5fdGFyZ2V0SW5z
dCxuPXQ/aC5nZXRQYXJlbnRJbnN0YW5jZSh0KTpudWxsO2gudHJhdmVyc2VUd29QaGFzZShuLG8s
ZSl9fWZ1bmN0aW9uIHUoZSx0LG4pe2lmKG4mJm4uZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9u
TmFtZSl7dmFyIHI9bi5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lLG89eShlLHIpO28m
JihuLl9kaXNwYXRjaExpc3RlbmVycz1tKG4uX2Rpc3BhdGNoTGlzdGVuZXJzLG8pLG4uX2Rpc3Bh
dGNoSW5zdGFuY2VzPW0obi5fZGlzcGF0Y2hJbnN0YW5jZXMsZSkpfX1mdW5jdGlvbiBzKGUpe2Um
JmUuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSYmdShlLl90YXJnZXRJbnN0LG51bGws
ZSl9ZnVuY3Rpb24gYyhlKXt2KGUsaSl9ZnVuY3Rpb24gbChlKXt2KGUsYSl9ZnVuY3Rpb24gcChl
LHQsbixyKXtoLnRyYXZlcnNlRW50ZXJMZWF2ZShuLHIsdSxlLHQpfWZ1bmN0aW9uIGYoZSl7dihl
LHMpfXZhciBkPW4oMjApLGg9bigzMiksbT1uKDU5KSx2PW4oNjApLHk9KG4oMSksZC5nZXRMaXN0
ZW5lciksZz17YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlczpjLGFjY3VtdWxhdGVUd29QaGFz
ZURpc3BhdGNoZXNTa2lwVGFyZ2V0OmwsYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXM6ZixhY2N1
bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXM6cH07ZS5leHBvcnRzPWd9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4iYnV0dG9uIj09PWV8fCJpbnB1dCI9
PT1lfHwic2VsZWN0Ij09PWV8fCJ0ZXh0YXJlYSI9PT1lfWZ1bmN0aW9uIG8oZSx0LG4pe3N3aXRj
aChlKXtjYXNlIm9uQ2xpY2siOmNhc2Uib25DbGlja0NhcHR1cmUiOmNhc2Uib25Eb3VibGVDbGlj
ayI6Y2FzZSJvbkRvdWJsZUNsaWNrQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlRG93biI6Y2FzZSJvbk1v
dXNlRG93bkNhcHR1cmUiOmNhc2Uib25Nb3VzZU1vdmUiOmNhc2Uib25Nb3VzZU1vdmVDYXB0dXJl
IjpjYXNlIm9uTW91c2VVcCI6Y2FzZSJvbk1vdXNlVXBDYXB0dXJlIjpyZXR1cm4hKCFuLmRpc2Fi
bGVkfHwhcih0KSk7ZGVmYXVsdDpyZXR1cm4hMX19dmFyIGk9bigyKSxhPW4oMzEpLHU9bigzMiks
cz1uKDMzKSxjPW4oNTkpLGw9big2MCkscD0obigwKSx7fSksZj1udWxsLGQ9ZnVuY3Rpb24oZSx0
KXtlJiYodS5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZSx0KSxlLmlzUGVyc2lzdGVudCgpfHxl
LmNvbnN0cnVjdG9yLnJlbGVhc2UoZSkpfSxoPWZ1bmN0aW9uKGUpe3JldHVybiBkKGUsITApfSxt
PWZ1bmN0aW9uKGUpe3JldHVybiBkKGUsITEpfSx2PWZ1bmN0aW9uKGUpe3JldHVybiIuIitlLl9y
b290Tm9kZUlEfSx5PXtpbmplY3Rpb246e2luamVjdEV2ZW50UGx1Z2luT3JkZXI6YS5pbmplY3RF
dmVudFBsdWdpbk9yZGVyLGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTphLmluamVjdEV2ZW50UGx1
Z2luc0J5TmFtZX0scHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4peyJmdW5jdGlvbiIhPT10eXBl
b2YgbiYmaSgiOTQiLHQsdHlwZW9mIG4pO3ZhciByPXYoZSk7KHBbdF18fChwW3RdPXt9KSlbcl09
bjt2YXIgbz1hLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3RdO28mJm8uZGlkUHV0TGlzdGVuZXIm
Jm8uZGlkUHV0TGlzdGVuZXIoZSx0LG4pfSxnZXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe3ZhciBu
PXBbdF07aWYobyh0LGUuX2N1cnJlbnRFbGVtZW50LnR5cGUsZS5fY3VycmVudEVsZW1lbnQucHJv
cHMpKXJldHVybiBudWxsO3ZhciByPXYoZSk7cmV0dXJuIG4mJm5bcl19LGRlbGV0ZUxpc3RlbmVy
OmZ1bmN0aW9uKGUsdCl7dmFyIG49YS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0XTtuJiZuLndp
bGxEZWxldGVMaXN0ZW5lciYmbi53aWxsRGVsZXRlTGlzdGVuZXIoZSx0KTt2YXIgcj1wW3RdO2lm
KHIpe2RlbGV0ZSByW3YoZSldfX0sZGVsZXRlQWxsTGlzdGVuZXJzOmZ1bmN0aW9uKGUpe3ZhciB0
PXYoZSk7Zm9yKHZhciBuIGluIHApaWYocC5oYXNPd25Qcm9wZXJ0eShuKSYmcFtuXVt0XSl7dmFy
IHI9YS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tuXTtyJiZyLndpbGxEZWxldGVMaXN0ZW5lciYm
ci53aWxsRGVsZXRlTGlzdGVuZXIoZSxuKSxkZWxldGUgcFtuXVt0XX19LGV4dHJhY3RFdmVudHM6
ZnVuY3Rpb24oZSx0LG4scil7Zm9yKHZhciBvLGk9YS5wbHVnaW5zLHU9MDt1PGkubGVuZ3RoO3Ur
Kyl7dmFyIHM9aVt1XTtpZihzKXt2YXIgbD1zLmV4dHJhY3RFdmVudHMoZSx0LG4scik7bCYmKG89
YyhvLGwpKX19cmV0dXJuIG99LGVucXVldWVFdmVudHM6ZnVuY3Rpb24oZSl7ZSYmKGY9YyhmLGUp
KX0scHJvY2Vzc0V2ZW50UXVldWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZjtmPW51bGwsZT9sKHQsaCk6
bCh0LG0pLGYmJmkoIjk1Iikscy5yZXRocm93Q2F1Z2h0RXJyb3IoKX0sX19wdXJnZTpmdW5jdGlv
bigpe3A9e319LF9fZ2V0TGlzdGVuZXJCYW5rOmZ1bmN0aW9uKCl7cmV0dXJuIHB9fTtlLmV4cG9y
dHM9eX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3Jl
dHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDExKSxpPW4oMzQpLGE9e3ZpZXc6ZnVu
Y3Rpb24oZSl7aWYoZS52aWV3KXJldHVybiBlLnZpZXc7dmFyIHQ9aShlKTtpZih0LndpbmRvdz09
PXQpcmV0dXJuIHQ7dmFyIG49dC5vd25lckRvY3VtZW50O3JldHVybiBuP24uZGVmYXVsdFZpZXd8
fG4ucGFyZW50V2luZG93OndpbmRvd30sZGV0YWlsOmZ1bmN0aW9uKGUpe3JldHVybiBlLmRldGFp
bHx8MH19O28uYXVnbWVudENsYXNzKHIsYSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9e3JlbW92ZTpmdW5jdGlvbihlKXtlLl9yZWFjdEludGVybmFsSW5z
dGFuY2U9dm9pZCAwfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX3JlYWN0SW50ZXJuYWxJbnN0
YW5jZX0saGFzOmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lLl9yZWFjdEludGVybmFsSW5z
dGFuY2V9LHNldDpmdW5jdGlvbihlLHQpe2UuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZT10fX07ZS5l
eHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e307ZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigyKSxvPShuKDApLHt9KSxp
PXtyZWluaXRpYWxpemVUcmFuc2FjdGlvbjpmdW5jdGlvbigpe3RoaXMudHJhbnNhY3Rpb25XcmFw
cGVycz10aGlzLmdldFRyYW5zYWN0aW9uV3JhcHBlcnMoKSx0aGlzLndyYXBwZXJJbml0RGF0YT90
aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGg9MDp0aGlzLndyYXBwZXJJbml0RGF0YT1bXSx0aGlz
Ll9pc0luVHJhbnNhY3Rpb249ITF9LF9pc0luVHJhbnNhY3Rpb246ITEsZ2V0VHJhbnNhY3Rpb25X
cmFwcGVyczpudWxsLGlzSW5UcmFuc2FjdGlvbjpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5faXNJ
blRyYW5zYWN0aW9ufSxwZXJmb3JtOmZ1bmN0aW9uKGUsdCxuLG8saSxhLHUscyl7dGhpcy5pc0lu
VHJhbnNhY3Rpb24oKSYmcigiMjciKTt2YXIgYyxsO3RyeXt0aGlzLl9pc0luVHJhbnNhY3Rpb249
ITAsYz0hMCx0aGlzLmluaXRpYWxpemVBbGwoMCksbD1lLmNhbGwodCxuLG8saSxhLHUscyksYz0h
MX1maW5hbGx5e3RyeXtpZihjKXRyeXt0aGlzLmNsb3NlQWxsKDApfWNhdGNoKGUpe31lbHNlIHRo
aXMuY2xvc2VBbGwoMCl9ZmluYWxseXt0aGlzLl9pc0luVHJhbnNhY3Rpb249ITF9fXJldHVybiBs
fSxpbml0aWFsaXplQWxsOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyYW5zYWN0aW9uV3Jh
cHBlcnMsbj1lO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3RyeXt0aGlzLndyYXBwZXJJbml0
RGF0YVtuXT1vLHRoaXMud3JhcHBlckluaXREYXRhW25dPXIuaW5pdGlhbGl6ZT9yLmluaXRpYWxp
emUuY2FsbCh0aGlzKTpudWxsfWZpbmFsbHl7aWYodGhpcy53cmFwcGVySW5pdERhdGFbbl09PT1v
KXRyeXt0aGlzLmluaXRpYWxpemVBbGwobisxKX1jYXRjaChlKXt9fX19LGNsb3NlQWxsOmZ1bmN0
aW9uKGUpe3RoaXMuaXNJblRyYW5zYWN0aW9uKCl8fHIoIjI4Iik7Zm9yKHZhciB0PXRoaXMudHJh
bnNhY3Rpb25XcmFwcGVycyxuPWU7bjx0Lmxlbmd0aDtuKyspe3ZhciBpLGE9dFtuXSx1PXRoaXMu
d3JhcHBlckluaXREYXRhW25dO3RyeXtpPSEwLHUhPT1vJiZhLmNsb3NlJiZhLmNsb3NlLmNhbGwo
dGhpcyx1KSxpPSExfWZpbmFsbHl7aWYoaSl0cnl7dGhpcy5jbG9zZUFsbChuKzEpfWNhdGNoKGUp
e319fXRoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aD0wfX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRo
aXMsZSx0LG4scil9dmFyIG89bigyMSksaT1uKDY2KSxhPW4oMzYpLHU9e3NjcmVlblg6bnVsbCxz
Y3JlZW5ZOm51bGwsY2xpZW50WDpudWxsLGNsaWVudFk6bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRL
ZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTphLGJ1dHRv
bjpmdW5jdGlvbihlKXt2YXIgdD1lLmJ1dHRvbjtyZXR1cm4id2hpY2giaW4gZT90OjI9PT10PzI6
ND09PXQ/MTowfSxidXR0b25zOm51bGwscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXtyZXR1cm4g
ZS5yZWxhdGVkVGFyZ2V0fHwoZS5mcm9tRWxlbWVudD09PWUuc3JjRWxlbWVudD9lLnRvRWxlbWVu
dDplLmZyb21FbGVtZW50KX0scGFnZVg6ZnVuY3Rpb24oZSl7cmV0dXJuInBhZ2VYImluIGU/ZS5w
YWdlWDplLmNsaWVudFgraS5jdXJyZW50U2Nyb2xsTGVmdH0scGFnZVk6ZnVuY3Rpb24oZSl7cmV0
dXJuInBhZ2VZImluIGU/ZS5wYWdlWTplLmNsaWVudFkraS5jdXJyZW50U2Nyb2xsVG9wfX07by5h
dWdtZW50Q2xhc3Mocix1KSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcixvPW4oNSksaT1uKDM4KSxhPS9eWyBcclxuXHRcZl0vLHU9LzwoIS0tfGxpbmt8bm9z
Y3JpcHR8bWV0YXxzY3JpcHR8c3R5bGUpWyBcclxuXHRcZlwvPl0vLHM9bigzOSksYz1zKGZ1bmN0
aW9uKGUsdCl7aWYoZS5uYW1lc3BhY2VVUkkhPT1pLnN2Z3x8ImlubmVySFRNTCJpbiBlKWUuaW5u
ZXJIVE1MPXQ7ZWxzZXtyPXJ8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHIuaW5uZXJI
VE1MPSI8c3ZnPiIrdCsiPC9zdmc+Ijtmb3IodmFyIG49ci5maXJzdENoaWxkO24uZmlyc3RDaGls
ZDspZS5hcHBlbmRDaGlsZChuLmZpcnN0Q2hpbGQpfX0pO2lmKG8uY2FuVXNlRE9NKXt2YXIgbD1k
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtsLmlubmVySFRNTD0iICIsIiI9PT1sLmlubmVy
SFRNTCYmKGM9ZnVuY3Rpb24oZSx0KXtpZihlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZXBs
YWNlQ2hpbGQoZSxlKSxhLnRlc3QodCl8fCI8Ij09PXRbMF0mJnUudGVzdCh0KSl7ZS5pbm5lckhU
TUw9U3RyaW5nLmZyb21DaGFyQ29kZSg2NTI3OSkrdDt2YXIgbj1lLmZpcnN0Q2hpbGQ7MT09PW4u
ZGF0YS5sZW5ndGg/ZS5yZW1vdmVDaGlsZChuKTpuLmRlbGV0ZURhdGEoMCwxKX1lbHNlIGUuaW5u
ZXJIVE1MPXR9KSxsPW51bGx9ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXt2YXIgdD0iIitlLG49aS5leGVjKHQpO2lmKCFuKXJldHVybiB0O3Zh
ciByLG89IiIsYT0wLHU9MDtmb3IoYT1uLmluZGV4O2E8dC5sZW5ndGg7YSsrKXtzd2l0Y2godC5j
aGFyQ29kZUF0KGEpKXtjYXNlIDM0OnI9IiZxdW90OyI7YnJlYWs7Y2FzZSAzODpyPSImYW1wOyI7
YnJlYWs7Y2FzZSAzOTpyPSImI3gyNzsiO2JyZWFrO2Nhc2UgNjA6cj0iJmx0OyI7YnJlYWs7Y2Fz
ZSA2MjpyPSImZ3Q7IjticmVhaztkZWZhdWx0OmNvbnRpbnVlfXUhPT1hJiYobys9dC5zdWJzdHJp
bmcodSxhKSksdT1hKzEsbys9cn1yZXR1cm4gdSE9PWE/byt0LnN1YnN0cmluZyh1LGEpOm99ZnVu
Y3Rpb24gbyhlKXtyZXR1cm4iYm9vbGVhbiI9PT10eXBlb2YgZXx8Im51bWJlciI9PT10eXBlb2Yg
ZT8iIitlOnIoZSl9dmFyIGk9L1siJyY8Pl0vO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3du
UHJvcGVydHkuY2FsbChlLG0pfHwoZVttXT1kKysscFtlW21dXT17fSkscFtlW21dXX12YXIgbyxp
PW4oMyksYT1uKDMxKSx1PW4oMTQ4KSxzPW4oNjYpLGM9bigxNDkpLGw9bigzNSkscD17fSxmPSEx
LGQ9MCxoPXt0b3BBYm9ydDoiYWJvcnQiLHRvcEFuaW1hdGlvbkVuZDpjKCJhbmltYXRpb25lbmQi
KXx8ImFuaW1hdGlvbmVuZCIsdG9wQW5pbWF0aW9uSXRlcmF0aW9uOmMoImFuaW1hdGlvbml0ZXJh
dGlvbiIpfHwiYW5pbWF0aW9uaXRlcmF0aW9uIix0b3BBbmltYXRpb25TdGFydDpjKCJhbmltYXRp
b25zdGFydCIpfHwiYW5pbWF0aW9uc3RhcnQiLHRvcEJsdXI6ImJsdXIiLHRvcENhblBsYXk6ImNh
bnBsYXkiLHRvcENhblBsYXlUaHJvdWdoOiJjYW5wbGF5dGhyb3VnaCIsdG9wQ2hhbmdlOiJjaGFu
Z2UiLHRvcENsaWNrOiJjbGljayIsdG9wQ29tcG9zaXRpb25FbmQ6ImNvbXBvc2l0aW9uZW5kIix0
b3BDb21wb3NpdGlvblN0YXJ0OiJjb21wb3NpdGlvbnN0YXJ0Iix0b3BDb21wb3NpdGlvblVwZGF0
ZToiY29tcG9zaXRpb251cGRhdGUiLHRvcENvbnRleHRNZW51OiJjb250ZXh0bWVudSIsdG9wQ29w
eToiY29weSIsdG9wQ3V0OiJjdXQiLHRvcERvdWJsZUNsaWNrOiJkYmxjbGljayIsdG9wRHJhZzoi
ZHJhZyIsdG9wRHJhZ0VuZDoiZHJhZ2VuZCIsdG9wRHJhZ0VudGVyOiJkcmFnZW50ZXIiLHRvcERy
YWdFeGl0OiJkcmFnZXhpdCIsdG9wRHJhZ0xlYXZlOiJkcmFnbGVhdmUiLHRvcERyYWdPdmVyOiJk
cmFnb3ZlciIsdG9wRHJhZ1N0YXJ0OiJkcmFnc3RhcnQiLHRvcERyb3A6ImRyb3AiLHRvcER1cmF0
aW9uQ2hhbmdlOiJkdXJhdGlvbmNoYW5nZSIsdG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5jcnlw
dGVkOiJlbmNyeXB0ZWQiLHRvcEVuZGVkOiJlbmRlZCIsdG9wRXJyb3I6ImVycm9yIix0b3BGb2N1
czoiZm9jdXMiLHRvcElucHV0OiJpbnB1dCIsdG9wS2V5RG93bjoia2V5ZG93biIsdG9wS2V5UHJl
c3M6ImtleXByZXNzIix0b3BLZXlVcDoia2V5dXAiLHRvcExvYWRlZERhdGE6ImxvYWRlZGRhdGEi
LHRvcExvYWRlZE1ldGFkYXRhOiJsb2FkZWRtZXRhZGF0YSIsdG9wTG9hZFN0YXJ0OiJsb2Fkc3Rh
cnQiLHRvcE1vdXNlRG93bjoibW91c2Vkb3duIix0b3BNb3VzZU1vdmU6Im1vdXNlbW92ZSIsdG9w
TW91c2VPdXQ6Im1vdXNlb3V0Iix0b3BNb3VzZU92ZXI6Im1vdXNlb3ZlciIsdG9wTW91c2VVcDoi
bW91c2V1cCIsdG9wUGFzdGU6InBhc3RlIix0b3BQYXVzZToicGF1c2UiLHRvcFBsYXk6InBsYXki
LHRvcFBsYXlpbmc6InBsYXlpbmciLHRvcFByb2dyZXNzOiJwcm9ncmVzcyIsdG9wUmF0ZUNoYW5n
ZToicmF0ZWNoYW5nZSIsdG9wU2Nyb2xsOiJzY3JvbGwiLHRvcFNlZWtlZDoic2Vla2VkIix0b3BT
ZWVraW5nOiJzZWVraW5nIix0b3BTZWxlY3Rpb25DaGFuZ2U6InNlbGVjdGlvbmNoYW5nZSIsdG9w
U3RhbGxlZDoic3RhbGxlZCIsdG9wU3VzcGVuZDoic3VzcGVuZCIsdG9wVGV4dElucHV0OiJ0ZXh0
SW5wdXQiLHRvcFRpbWVVcGRhdGU6InRpbWV1cGRhdGUiLHRvcFRvdWNoQ2FuY2VsOiJ0b3VjaGNh
bmNlbCIsdG9wVG91Y2hFbmQ6InRvdWNoZW5kIix0b3BUb3VjaE1vdmU6InRvdWNobW92ZSIsdG9w
VG91Y2hTdGFydDoidG91Y2hzdGFydCIsdG9wVHJhbnNpdGlvbkVuZDpjKCJ0cmFuc2l0aW9uZW5k
Iil8fCJ0cmFuc2l0aW9uZW5kIix0b3BWb2x1bWVDaGFuZ2U6InZvbHVtZWNoYW5nZSIsdG9wV2Fp
dGluZzoid2FpdGluZyIsdG9wV2hlZWw6IndoZWVsIn0sbT0iX3JlYWN0TGlzdGVuZXJzSUQiK1N0
cmluZyhNYXRoLnJhbmRvbSgpKS5zbGljZSgyKSx2PWkoe30sdSx7UmVhY3RFdmVudExpc3RlbmVy
Om51bGwsaW5qZWN0aW9uOntpbmplY3RSZWFjdEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oZSl7ZS5z
ZXRIYW5kbGVUb3BMZXZlbCh2LmhhbmRsZVRvcExldmVsKSx2LlJlYWN0RXZlbnRMaXN0ZW5lcj1l
fX0sc2V0RW5hYmxlZDpmdW5jdGlvbihlKXt2LlJlYWN0RXZlbnRMaXN0ZW5lciYmdi5SZWFjdEV2
ZW50TGlzdGVuZXIuc2V0RW5hYmxlZChlKX0saXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuISgh
di5SZWFjdEV2ZW50TGlzdGVuZXJ8fCF2LlJlYWN0RXZlbnRMaXN0ZW5lci5pc0VuYWJsZWQoKSl9
LGxpc3RlblRvOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXQsbz1yKG4pLGk9YS5yZWdpc3RyYXRp
b25OYW1lRGVwZW5kZW5jaWVzW2VdLHU9MDt1PGkubGVuZ3RoO3UrKyl7dmFyIHM9aVt1XTtvLmhh
c093blByb3BlcnR5KHMpJiZvW3NdfHwoInRvcFdoZWVsIj09PXM/bCgid2hlZWwiKT92LlJlYWN0
RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BXaGVlbCIsIndoZWVsIixuKTpsKCJt
b3VzZXdoZWVsIik/di5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wV2hl
ZWwiLCJtb3VzZXdoZWVsIixuKTp2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50
KCJ0b3BXaGVlbCIsIkRPTU1vdXNlU2Nyb2xsIixuKToidG9wU2Nyb2xsIj09PXM/bCgic2Nyb2xs
IiwhMCk/di5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoInRvcFNjcm9sbCIs
InNjcm9sbCIsbik6di5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wU2Ny
b2xsIiwic2Nyb2xsIix2LlJlYWN0RXZlbnRMaXN0ZW5lci5XSU5ET1dfSEFORExFKToidG9wRm9j
dXMiPT09c3x8InRvcEJsdXIiPT09cz8obCgiZm9jdXMiLCEwKT8odi5SZWFjdEV2ZW50TGlzdGVu
ZXIudHJhcENhcHR1cmVkRXZlbnQoInRvcEZvY3VzIiwiZm9jdXMiLG4pLHYuUmVhY3RFdmVudExp
c3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KCJ0b3BCbHVyIiwiYmx1ciIsbikpOmwoImZvY3VzaW4i
KSYmKHYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcEZvY3VzIiwiZm9j
dXNpbiIsbiksdi5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wQmx1ciIs
ImZvY3Vzb3V0IixuKSksby50b3BCbHVyPSEwLG8udG9wRm9jdXM9ITApOmguaGFzT3duUHJvcGVy
dHkocykmJnYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQocyxoW3NdLG4pLG9b
c109ITApfX0sdHJhcEJ1YmJsZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHYuUmVhY3RF
dmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoZSx0LG4pfSx0cmFwQ2FwdHVyZWRFdmVudDpm
dW5jdGlvbihlLHQsbil7cmV0dXJuIHYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2
ZW50KGUsdCxuKX0sc3VwcG9ydHNFdmVudFBhZ2VYWTpmdW5jdGlvbigpe2lmKCFkb2N1bWVudC5j
cmVhdGVFdmVudClyZXR1cm4hMTt2YXIgZT1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVu
dCIpO3JldHVybiBudWxsIT1lJiYicGFnZVgiaW4gZX0sZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9y
aW5nOmZ1bmN0aW9uKCl7aWYodm9pZCAwPT09byYmKG89di5zdXBwb3J0c0V2ZW50UGFnZVhZKCkp
LCFvJiYhZil7dmFyIGU9cy5yZWZyZXNoU2Nyb2xsVmFsdWVzO3YuUmVhY3RFdmVudExpc3RlbmVy
Lm1vbml0b3JTY3JvbGxWYWx1ZShlKSxmPSEwfX19KTtlLmV4cG9ydHM9dn0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDg0KSxvPW4oMjA3KSxpPW4oMjA4KTtuKDIwOSksbig4
Nyksbig4Nik7bi5kKHQsImMiLGZ1bmN0aW9uKCl7cmV0dXJuIHIuYn0pLG4uZCh0LCJiIixmdW5j
dGlvbigpe3JldHVybiBvLmF9KSxuLmQodCwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gaS5hfSl9LGZ1
bmN0aW9uKGUsdCl7dmFyIG47bj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSgpO3RyeXtuPW58fEZ1
bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl8fCgwLGV2YWwpKCJ0aGlzIil9Y2F0Y2goZSl7Im9iamVj
dCI9PT10eXBlb2Ygd2luZG93JiYobj13aW5kb3cpfWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtpZih1KWZvcih2YXIgZSBpbiBzKXt2YXIgdD1z
W2VdLG49dS5pbmRleE9mKGUpO2lmKG4+LTF8fGEoIjk2IixlKSwhYy5wbHVnaW5zW25dKXt0LmV4
dHJhY3RFdmVudHN8fGEoIjk3IixlKSxjLnBsdWdpbnNbbl09dDt2YXIgcj10LmV2ZW50VHlwZXM7
Zm9yKHZhciBpIGluIHIpbyhyW2ldLHQsaSl8fGEoIjk4IixpLGUpfX19ZnVuY3Rpb24gbyhlLHQs
bil7Yy5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MuaGFzT3duUHJvcGVydHkobikmJmEoIjk5Iixu
KSxjLmV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tuXT1lO3ZhciByPWUucGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM7aWYocil7Zm9yKHZhciBvIGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eShvKSl7dmFy
IHU9cltvXTtpKHUsdCxuKX1yZXR1cm4hMH1yZXR1cm4hIWUucmVnaXN0cmF0aW9uTmFtZSYmKGko
ZS5yZWdpc3RyYXRpb25OYW1lLHQsbiksITApfWZ1bmN0aW9uIGkoZSx0LG4pe2MucmVnaXN0cmF0
aW9uTmFtZU1vZHVsZXNbZV0mJmEoIjEwMCIsZSksYy5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tl
XT10LGMucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tlXT10LmV2ZW50VHlwZXNbbl0uZGVw
ZW5kZW5jaWVzfXZhciBhPW4oMiksdT0obigwKSxudWxsKSxzPXt9LGM9e3BsdWdpbnM6W10sZXZl
bnROYW1lRGlzcGF0Y2hDb25maWdzOnt9LHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOnt9LHJlZ2lz
dHJhdGlvbk5hbWVEZXBlbmRlbmNpZXM6e30scG9zc2libGVSZWdpc3RyYXRpb25OYW1lczpudWxs
LGluamVjdEV2ZW50UGx1Z2luT3JkZXI6ZnVuY3Rpb24oZSl7dSYmYSgiMTAxIiksdT1BcnJheS5w
cm90b3R5cGUuc2xpY2UuY2FsbChlKSxyKCl9LGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTpmdW5j
dGlvbihlKXt2YXIgdD0hMTtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5KG4pKXt2
YXIgbz1lW25dO3MuaGFzT3duUHJvcGVydHkobikmJnNbbl09PT1vfHwoc1tuXSYmYSgiMTAyIixu
KSxzW25dPW8sdD0hMCl9dCYmcigpfSxnZXRQbHVnaW5Nb2R1bGVGb3JFdmVudDpmdW5jdGlvbihl
KXt2YXIgdD1lLmRpc3BhdGNoQ29uZmlnO2lmKHQucmVnaXN0cmF0aW9uTmFtZSlyZXR1cm4gYy5y
ZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0LnJlZ2lzdHJhdGlvbk5hbWVdfHxudWxsO2lmKHZvaWQg
MCE9PXQucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe3ZhciBuPXQucGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM7Zm9yKHZhciByIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSl7dmFyIG89Yy5yZWdp
c3RyYXRpb25OYW1lTW9kdWxlc1tuW3JdXTtpZihvKXJldHVybiBvfX1yZXR1cm4gbnVsbH0sX3Jl
c2V0RXZlbnRQbHVnaW5zOmZ1bmN0aW9uKCl7dT1udWxsO2Zvcih2YXIgZSBpbiBzKXMuaGFzT3du
UHJvcGVydHkoZSkmJmRlbGV0ZSBzW2VdO2MucGx1Z2lucy5sZW5ndGg9MDt2YXIgdD1jLmV2ZW50
TmFtZURpc3BhdGNoQ29uZmlncztmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZk
ZWxldGUgdFtuXTt2YXIgcj1jLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzO2Zvcih2YXIgbyBpbiBy
KXIuaGFzT3duUHJvcGVydHkobykmJmRlbGV0ZSByW29dfX07ZS5leHBvcnRzPWN9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4idG9wTW91c2VVcCI9PT1l
fHwidG9wVG91Y2hFbmQiPT09ZXx8InRvcFRvdWNoQ2FuY2VsIj09PWV9ZnVuY3Rpb24gbyhlKXty
ZXR1cm4idG9wTW91c2VNb3ZlIj09PWV8fCJ0b3BUb3VjaE1vdmUiPT09ZX1mdW5jdGlvbiBpKGUp
e3JldHVybiJ0b3BNb3VzZURvd24iPT09ZXx8InRvcFRvdWNoU3RhcnQiPT09ZX1mdW5jdGlvbiBh
KGUsdCxuLHIpe3ZhciBvPWUudHlwZXx8InVua25vd24tZXZlbnQiO2UuY3VycmVudFRhcmdldD15
LmdldE5vZGVGcm9tSW5zdGFuY2UociksdD9tLmludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRj
aChvLG4sZSk6bS5pbnZva2VHdWFyZGVkQ2FsbGJhY2sobyxuLGUpLGUuY3VycmVudFRhcmdldD1u
dWxsfWZ1bmN0aW9uIHUoZSx0KXt2YXIgbj1lLl9kaXNwYXRjaExpc3RlbmVycyxyPWUuX2Rpc3Bh
dGNoSW5zdGFuY2VzO2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHZhciBvPTA7bzxuLmxlbmd0aCYm
IWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtvKyspYShlLHQsbltvXSxyW29dKTtlbHNlIG4mJmEo
ZSx0LG4scik7ZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCxlLl9kaXNwYXRjaEluc3RhbmNlcz1u
dWxsfWZ1bmN0aW9uIHMoZSl7dmFyIHQ9ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMsbj1lLl9kaXNwYXRj
aEluc3RhbmNlcztpZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoJiYh
ZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO3IrKylpZih0W3JdKGUsbltyXSkpcmV0dXJuIG5bcl19
ZWxzZSBpZih0JiZ0KGUsbikpcmV0dXJuIG47cmV0dXJuIG51bGx9ZnVuY3Rpb24gYyhlKXt2YXIg
dD1zKGUpO3JldHVybiBlLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsLGUuX2Rpc3BhdGNoTGlzdGVu
ZXJzPW51bGwsdH1mdW5jdGlvbiBsKGUpe3ZhciB0PWUuX2Rpc3BhdGNoTGlzdGVuZXJzLG49ZS5f
ZGlzcGF0Y2hJbnN0YW5jZXM7QXJyYXkuaXNBcnJheSh0KSYmaCgiMTAzIiksZS5jdXJyZW50VGFy
Z2V0PXQ/eS5nZXROb2RlRnJvbUluc3RhbmNlKG4pOm51bGw7dmFyIHI9dD90KGUpOm51bGw7cmV0
dXJuIGUuY3VycmVudFRhcmdldD1udWxsLGUuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGwsZS5fZGlz
cGF0Y2hJbnN0YW5jZXM9bnVsbCxyfWZ1bmN0aW9uIHAoZSl7cmV0dXJuISFlLl9kaXNwYXRjaExp
c3RlbmVyc312YXIgZixkLGg9bigyKSxtPW4oMzMpLHY9KG4oMCksbigxKSx7aW5qZWN0Q29tcG9u
ZW50VHJlZTpmdW5jdGlvbihlKXtmPWV9LGluamVjdFRyZWVUcmF2ZXJzYWw6ZnVuY3Rpb24oZSl7
ZD1lfX0pLHk9e2lzRW5kaXNoOnIsaXNNb3ZlaXNoOm8saXNTdGFydGlzaDppLGV4ZWN1dGVEaXJl
Y3REaXNwYXRjaDpsLGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcjp1LGV4ZWN1dGVEaXNwYXRjaGVz
SW5PcmRlclN0b3BBdFRydWU6YyxoYXNEaXNwYXRjaGVzOnAsZ2V0SW5zdGFuY2VGcm9tTm9kZTpm
dW5jdGlvbihlKXtyZXR1cm4gZi5nZXRJbnN0YW5jZUZyb21Ob2RlKGUpfSxnZXROb2RlRnJvbUlu
c3RhbmNlOmZ1bmN0aW9uKGUpe3JldHVybiBmLmdldE5vZGVGcm9tSW5zdGFuY2UoZSl9LGlzQW5j
ZXN0b3I6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZC5pc0FuY2VzdG9yKGUsdCl9LGdldExvd2VzdENv
bW1vbkFuY2VzdG9yOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGQuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0
b3IoZSx0KX0sZ2V0UGFyZW50SW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGQuZ2V0UGFyZW50
SW5zdGFuY2UoZSl9LHRyYXZlcnNlVHdvUGhhc2U6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBkLnRy
YXZlcnNlVHdvUGhhc2UoZSx0LG4pfSx0cmF2ZXJzZUVudGVyTGVhdmU6ZnVuY3Rpb24oZSx0LG4s
cixvKXtyZXR1cm4gZC50cmF2ZXJzZUVudGVyTGVhdmUoZSx0LG4scixvKX0saW5qZWN0aW9uOnZ9
O2UuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
LG4pe3RyeXt0KG4pfWNhdGNoKGUpe251bGw9PT1vJiYobz1lKX19dmFyIG89bnVsbCxpPXtpbnZv
a2VHdWFyZGVkQ2FsbGJhY2s6cixpbnZva2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2g6cixyZXRo
cm93Q2F1Z2h0RXJyb3I6ZnVuY3Rpb24oKXtpZihvKXt2YXIgZT1vO3Rocm93IG89bnVsbCxlfX19
O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
dmFyIHQ9ZS50YXJnZXR8fGUuc3JjRWxlbWVudHx8d2luZG93O3JldHVybiB0LmNvcnJlc3BvbmRp
bmdVc2VFbGVtZW50JiYodD10LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSwzPT09dC5ub2RlVHlw
ZT90LnBhcmVudE5vZGU6dH1lLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCl7aWYoIWkuY2FuVXNlRE9NfHx0JiYhKCJhZGRFdmVudExpc3RlbmVy
ImluIGRvY3VtZW50KSlyZXR1cm4hMTt2YXIgbj0ib24iK2Uscj1uIGluIGRvY3VtZW50O2lmKCFy
KXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLnNldEF0dHJpYnV0ZShuLCJy
ZXR1cm47Iikscj0iZnVuY3Rpb24iPT09dHlwZW9mIGFbbl19cmV0dXJuIXImJm8mJiJ3aGVlbCI9
PT1lJiYocj1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCJFdmVudHMud2hlZWwi
LCIzLjAiKSkscn12YXIgbyxpPW4oNSk7aS5jYW5Vc2VET00mJihvPWRvY3VtZW50LmltcGxlbWVu
dGF0aW9uJiZkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlJiYhMCE9PWRvY3VtZW50
LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoIiIsIiIpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PXRoaXMsbj10Lm5hdGl2ZUV2
ZW50O2lmKG4uZ2V0TW9kaWZpZXJTdGF0ZSlyZXR1cm4gbi5nZXRNb2RpZmllclN0YXRlKGUpO3Zh
ciByPWlbZV07cmV0dXJuISFyJiYhIW5bcl19ZnVuY3Rpb24gbyhlKXtyZXR1cm4gcn12YXIgaT17
QWx0OiJhbHRLZXkiLENvbnRyb2w6ImN0cmxLZXkiLE1ldGE6Im1ldGFLZXkiLFNoaWZ0OiJzaGlm
dEtleSJ9O2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmKHQ9dFsxXSksdD90Lm5leHRTaWJsaW5n
OmUuZmlyc3RDaGlsZH1mdW5jdGlvbiBvKGUsdCxuKXtsLmluc2VydFRyZWVCZWZvcmUoZSx0LG4p
fWZ1bmN0aW9uIGkoZSx0LG4pe0FycmF5LmlzQXJyYXkodCk/dShlLHRbMF0sdFsxXSxuKTptKGUs
dCxuKX1mdW5jdGlvbiBhKGUsdCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIG49dFsxXTt0PXRb
MF0scyhlLHQsbiksZS5yZW1vdmVDaGlsZChuKX1lLnJlbW92ZUNoaWxkKHQpfWZ1bmN0aW9uIHUo
ZSx0LG4scil7Zm9yKHZhciBvPXQ7Oyl7dmFyIGk9by5uZXh0U2libGluZztpZihtKGUsbyxyKSxv
PT09bilicmVhaztvPWl9fWZ1bmN0aW9uIHMoZSx0LG4pe2Zvcig7Oyl7dmFyIHI9dC5uZXh0U2li
bGluZztpZihyPT09bilicmVhaztlLnJlbW92ZUNoaWxkKHIpfX1mdW5jdGlvbiBjKGUsdCxuKXt2
YXIgcj1lLnBhcmVudE5vZGUsbz1lLm5leHRTaWJsaW5nO289PT10P24mJm0ocixkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShuKSxvKTpuPyhoKG8sbikscyhyLG8sdCkpOnMocixlLHQpfXZhciBsPW4o
MTcpLHA9bigxMzMpLGY9KG4oNCksbig3KSxuKDM5KSksZD1uKDI2KSxoPW4oNjcpLG09ZihmdW5j
dGlvbihlLHQsbil7ZS5pbnNlcnRCZWZvcmUodCxuKX0pLHY9cC5kYW5nZXJvdXNseVJlcGxhY2VO
b2RlV2l0aE1hcmt1cCx5PXtkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDp2LHJlcGxh
Y2VEZWxpbWl0ZWRUZXh0OmMscHJvY2Vzc1VwZGF0ZXM6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49
MDtuPHQubGVuZ3RoO24rKyl7dmFyIHU9dFtuXTtzd2l0Y2godS50eXBlKXtjYXNlIklOU0VSVF9N
QVJLVVAiOm8oZSx1LmNvbnRlbnQscihlLHUuYWZ0ZXJOb2RlKSk7YnJlYWs7Y2FzZSJNT1ZFX0VY
SVNUSU5HIjppKGUsdS5mcm9tTm9kZSxyKGUsdS5hZnRlck5vZGUpKTticmVhaztjYXNlIlNFVF9N
QVJLVVAiOmQoZSx1LmNvbnRlbnQpO2JyZWFrO2Nhc2UiVEVYVF9DT05URU5UIjpoKGUsdS5jb250
ZW50KTticmVhaztjYXNlIlJFTU9WRV9OT0RFIjphKGUsdS5mcm9tTm9kZSl9fX19O2UuZXhwb3J0
cz15fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtodG1sOiJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sIixtYXRobWw6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9N
YXRoTUwiLHN2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifTtlLmV4cG9ydHM9cn0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZp
bmVkIiE9PXR5cGVvZiBNU0FwcCYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24/ZnVuY3Rp
b24odCxuLHIsbyl7TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24oKXtyZXR1
cm4gZSh0LG4scixvKX0pfTplfTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe251bGwhPWUuY2hlY2tlZExpbmsmJm51bGwhPWUudmFsdWVMaW5r
JiZ1KCI4NyIpfWZ1bmN0aW9uIG8oZSl7cihlKSwobnVsbCE9ZS52YWx1ZXx8bnVsbCE9ZS5vbkNo
YW5nZSkmJnUoIjg4Iil9ZnVuY3Rpb24gaShlKXtyKGUpLChudWxsIT1lLmNoZWNrZWR8fG51bGwh
PWUub25DaGFuZ2UpJiZ1KCI4OSIpfWZ1bmN0aW9uIGEoZSl7aWYoZSl7dmFyIHQ9ZS5nZXROYW1l
KCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAiK3QrImAuIn1yZXR1
cm4iIn12YXIgdT1uKDIpLHM9bigxNTEpLGM9big1NiksbD1uKDEzKSxwPWMobC5pc1ZhbGlkRWxl
bWVudCksZj0obigwKSxuKDEpLHtidXR0b246ITAsY2hlY2tib3g6ITAsaW1hZ2U6ITAsaGlkZGVu
OiEwLHJhZGlvOiEwLHJlc2V0OiEwLHN1Ym1pdDohMH0pLGQ9e3ZhbHVlOmZ1bmN0aW9uKGUsdCxu
KXtyZXR1cm4hZVt0XXx8ZltlLnR5cGVdfHxlLm9uQ2hhbmdlfHxlLnJlYWRPbmx5fHxlLmRpc2Fi
bGVkP251bGw6bmV3IEVycm9yKCJZb3UgcHJvdmlkZWQgYSBgdmFsdWVgIHByb3AgdG8gYSBmb3Jt
IGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEg
cmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZh
dWx0VmFsdWVgLiBPdGhlcndpc2UsIHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlg
LiIpfSxjaGVja2VkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hZVt0XXx8ZS5vbkNoYW5nZXx8ZS5y
ZWFkT25seXx8ZS5kaXNhYmxlZD9udWxsOm5ldyBFcnJvcigiWW91IHByb3ZpZGVkIGEgYGNoZWNr
ZWRgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBU
aGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJl
IG11dGFibGUgdXNlIGBkZWZhdWx0Q2hlY2tlZGAuIE90aGVyd2lzZSwgc2V0IGVpdGhlciBgb25D
aGFuZ2VgIG9yIGByZWFkT25seWAuIil9LG9uQ2hhbmdlOnAuZnVuY30saD17fSxtPXtjaGVja1By
b3BUeXBlczpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByIGluIGQpe2lmKGQuaGFzT3duUHJvcGVy
dHkocikpdmFyIG89ZFtyXSh0LHIsZSwicHJvcCIsbnVsbCxzKTtpZihvIGluc3RhbmNlb2YgRXJy
b3ImJiEoby5tZXNzYWdlIGluIGgpKXtoW28ubWVzc2FnZV09ITA7YShuKX19fSxnZXRWYWx1ZTpm
dW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZUxpbms/KG8oZSksZS52YWx1ZUxpbmsudmFsdWUpOmUu
dmFsdWV9LGdldENoZWNrZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hlY2tlZExpbms/KGkoZSks
ZS5jaGVja2VkTGluay52YWx1ZSk6ZS5jaGVja2VkfSxleGVjdXRlT25DaGFuZ2U6ZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZS52YWx1ZUxpbms/KG8oZSksZS52YWx1ZUxpbmsucmVxdWVzdENoYW5nZSh0
LnRhcmdldC52YWx1ZSkpOmUuY2hlY2tlZExpbms/KGkoZSksZS5jaGVja2VkTGluay5yZXF1ZXN0
Q2hhbmdlKHQudGFyZ2V0LmNoZWNrZWQpKTplLm9uQ2hhbmdlP2Uub25DaGFuZ2UuY2FsbCh2b2lk
IDAsdCk6dm9pZCAwfX07ZS5leHBvcnRzPW19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHI9bigyKSxvPShuKDApLCExKSxpPXtyZXBsYWNlTm9kZVdpdGhNYXJrdXA6bnVsbCxwcm9j
ZXNzQ2hpbGRyZW5VcGRhdGVzOm51bGwsaW5qZWN0aW9uOntpbmplY3RFbnZpcm9ubWVudDpmdW5j
dGlvbihlKXtvJiZyKCIxMDQiKSxpLnJlcGxhY2VOb2RlV2l0aE1hcmt1cD1lLnJlcGxhY2VOb2Rl
V2l0aE1hcmt1cCxpLnByb2Nlc3NDaGlsZHJlblVwZGF0ZXM9ZS5wcm9jZXNzQ2hpbGRyZW5VcGRh
dGVzLG89ITB9fX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlLHQpe3JldHVybiBlPT09dD8wIT09ZXx8MCE9PXR8fDEvZT09PTEvdDplIT09ZSYm
dCE9PXR9ZnVuY3Rpb24gbyhlLHQpe2lmKHIoZSx0KSlyZXR1cm4hMDtpZigib2JqZWN0IiE9PXR5
cGVvZiBlfHxudWxsPT09ZXx8Im9iamVjdCIhPT10eXBlb2YgdHx8bnVsbD09PXQpcmV0dXJuITE7
dmFyIG49T2JqZWN0LmtleXMoZSksbz1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCE9PW8ubGVu
Z3RoKXJldHVybiExO2Zvcih2YXIgYT0wO2E8bi5sZW5ndGg7YSsrKWlmKCFpLmNhbGwodCxuW2Fd
KXx8IXIoZVtuW2FdXSx0W25bYV1dKSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgaT1PYmplY3QucHJv
dG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj1udWxsPT09ZXx8ITE9PT1lLHI9bnVsbD09PXR8
fCExPT09dDtpZihufHxyKXJldHVybiBuPT09cjt2YXIgbz10eXBlb2YgZSxpPXR5cGVvZiB0O3Jl
dHVybiJzdHJpbmciPT09b3x8Im51bWJlciI9PT1vPyJzdHJpbmciPT09aXx8Im51bWJlciI9PT1p
OiJvYmplY3QiPT09aSYmZS50eXBlPT09dC50eXBlJiZlLmtleT09PXQua2V5fWUuZXhwb3J0cz1y
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9eyI9Ijoi
PTAiLCI6IjoiPTIifTtyZXR1cm4iJCIrKCIiK2UpLnJlcGxhY2UoL1s9Ol0vZyxmdW5jdGlvbihl
KXtyZXR1cm4gdFtlXX0pfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9Lyg9MHw9MikvZyxuPXsiPTAiOiI9
IiwiPTIiOiI6In07cmV0dXJuKCIiKygiLiI9PT1lWzBdJiYiJCI9PT1lWzFdP2Uuc3Vic3RyaW5n
KDIpOmUuc3Vic3RyaW5nKDEpKSkucmVwbGFjZSh0LGZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfSl9
dmFyIGk9e2VzY2FwZTpyLHVuZXNjYXBlOm99O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cy5lbnF1ZXVlVXBkYXRlKGUpfWZ1bmN0aW9uIG8o
ZSl7dmFyIHQ9dHlwZW9mIGU7aWYoIm9iamVjdCIhPT10KXJldHVybiB0O3ZhciBuPWUuY29uc3Ry
dWN0b3ImJmUuY29uc3RydWN0b3IubmFtZXx8dCxyPU9iamVjdC5rZXlzKGUpO3JldHVybiByLmxl
bmd0aD4wJiZyLmxlbmd0aDwyMD9uKyIgKGtleXM6ICIrci5qb2luKCIsICIpKyIpIjpufWZ1bmN0
aW9uIGkoZSx0KXt2YXIgbj11LmdldChlKTtpZighbil7cmV0dXJuIG51bGx9cmV0dXJuIG59dmFy
IGE9bigyKSx1PShuKDEwKSxuKDIyKSkscz0obig3KSxuKDgpKSxjPShuKDApLG4oMSkse2lzTW91
bnRlZDpmdW5jdGlvbihlKXt2YXIgdD11LmdldChlKTtyZXR1cm4hIXQmJiEhdC5fcmVuZGVyZWRD
b21wb25lbnR9LGVucXVldWVDYWxsYmFjazpmdW5jdGlvbihlLHQsbil7Yy52YWxpZGF0ZUNhbGxi
YWNrKHQsbik7dmFyIG89aShlKTtpZighbylyZXR1cm4gbnVsbDtvLl9wZW5kaW5nQ2FsbGJhY2tz
P28uX3BlbmRpbmdDYWxsYmFja3MucHVzaCh0KTpvLl9wZW5kaW5nQ2FsbGJhY2tzPVt0XSxyKG8p
fSxlbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbDpmdW5jdGlvbihlLHQpe2UuX3BlbmRpbmdDYWxsYmFj
a3M/ZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKHQpOmUuX3BlbmRpbmdDYWxsYmFja3M9W3RdLHIo
ZSl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihlKXt2YXIgdD1pKGUsImZvcmNlVXBkYXRl
Iik7dCYmKHQuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMCxyKHQpKX0sZW5xdWV1ZVJlcGxhY2VTdGF0
ZTpmdW5jdGlvbihlLHQsbil7dmFyIG89aShlLCJyZXBsYWNlU3RhdGUiKTtvJiYoby5fcGVuZGlu
Z1N0YXRlUXVldWU9W3RdLG8uX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITAsdm9pZCAwIT09biYmbnVs
bCE9PW4mJihjLnZhbGlkYXRlQ2FsbGJhY2sobiwicmVwbGFjZVN0YXRlIiksby5fcGVuZGluZ0Nh
bGxiYWNrcz9vLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2gobik6by5fcGVuZGluZ0NhbGxiYWNrcz1b
bl0pLHIobykpfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pKGUsInNldFN0
YXRlIik7aWYobil7KG4uX3BlbmRpbmdTdGF0ZVF1ZXVlfHwobi5fcGVuZGluZ1N0YXRlUXVldWU9
W10pKS5wdXNoKHQpLHIobil9fSxlbnF1ZXVlRWxlbWVudEludGVybmFsOmZ1bmN0aW9uKGUsdCxu
KXtlLl9wZW5kaW5nRWxlbWVudD10LGUuX2NvbnRleHQ9bixyKGUpfSx2YWxpZGF0ZUNhbGxiYWNr
OmZ1bmN0aW9uKGUsdCl7ZSYmImZ1bmN0aW9uIiE9PXR5cGVvZiBlJiZhKCIxMjIiLHQsbyhlKSl9
fSk7ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9KG4oMyks
big2KSksbz0obigxKSxyKTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3ZhciB0LG49ZS5rZXlDb2RlO3JldHVybiJjaGFyQ29kZSJpbiBlPzA9
PT0odD1lLmNoYXJDb2RlKSYmMTM9PT1uJiYodD0xMyk6dD1uLHQ+PTMyfHwxMz09PXQ/dDowfWUu
ZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYo
IU9iamVjdChhLmEpKGUpfHxPYmplY3Qoby5hKShlKSE9dSlyZXR1cm4hMTt2YXIgdD1PYmplY3Qo
aS5hKShlKTtpZihudWxsPT09dClyZXR1cm4hMDt2YXIgbj1wLmNhbGwodCwiY29uc3RydWN0b3Ii
KSYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbiYmbiBpbnN0YW5jZW9m
IG4mJmwuY2FsbChuKT09Zn12YXIgbz1uKDE5NSksaT1uKDIwMCksYT1uKDIwMiksdT0iW29iamVj
dCBPYmplY3RdIixzPUZ1bmN0aW9uLnByb3RvdHlwZSxjPU9iamVjdC5wcm90b3R5cGUsbD1zLnRv
U3RyaW5nLHA9Yy5oYXNPd25Qcm9wZXJ0eSxmPWwuY2FsbChPYmplY3QpO3QuYT1yfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7InVuZGVmaW5lZCIhPT10eXBlb2Yg
Y29uc29sZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9y
KGUpO3RyeXt0aHJvdyBuZXcgRXJyb3IoZSl9Y2F0Y2goZSl7fX10LmE9cn0sZnVuY3Rpb24oZSx0
LG4pe3ZhciByLG87IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXtmb3IodmFy
IGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtpZihy
KXt2YXIgbz10eXBlb2YgcjtpZigic3RyaW5nIj09PW98fCJudW1iZXIiPT09byllLnB1c2gocik7
ZWxzZSBpZihBcnJheS5pc0FycmF5KHIpKWUucHVzaChuLmFwcGx5KG51bGwscikpO2Vsc2UgaWYo
Im9iamVjdCI9PT1vKWZvcih2YXIgYSBpbiByKWkuY2FsbChyLGEpJiZyW2FdJiZlLnB1c2goYSl9
fXJldHVybiBlLmpvaW4oIiAiKX12YXIgaT17fS5oYXNPd25Qcm9wZXJ0eTsidW5kZWZpbmVkIiE9
PXR5cGVvZiBlJiZlLmV4cG9ydHM/ZS5leHBvcnRzPW46KHI9W10sdm9pZCAwIT09KG89ZnVuY3Rp
b24oKXtyZXR1cm4gbn0uYXBwbHkodCxyKSkmJihlLmV4cG9ydHM9bykpfSgpfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt9ZnVuY3Rpb24gbyhlKXt0cnl7cmV0dXJu
IGUudGhlbn1jYXRjaChlKXtyZXR1cm4geT1lLGd9fWZ1bmN0aW9uIGkoZSx0KXt0cnl7cmV0dXJu
IGUodCl9Y2F0Y2goZSl7cmV0dXJuIHk9ZSxnfX1mdW5jdGlvbiBhKGUsdCxuKXt0cnl7ZSh0LG4p
fWNhdGNoKGUpe3JldHVybiB5PWUsZ319ZnVuY3Rpb24gdShlKXtpZigib2JqZWN0IiE9PXR5cGVv
ZiB0aGlzKXRocm93IG5ldyBUeXBlRXJyb3IoIlByb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQg
dmlhIG5ldyIpO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQ
cm9taXNlIGNvbnN0cnVjdG9yJ3MgYXJndW1lbnQgaXMgbm90IGEgZnVuY3Rpb24iKTt0aGlzLl83
NT0wLHRoaXMuXzgzPTAsdGhpcy5fMTg9bnVsbCx0aGlzLl8zOD1udWxsLGUhPT1yJiZtKGUsdGhp
cyl9ZnVuY3Rpb24gcyhlLHQsbil7cmV0dXJuIG5ldyBlLmNvbnN0cnVjdG9yKGZ1bmN0aW9uKG8s
aSl7dmFyIGE9bmV3IHUocik7YS50aGVuKG8saSksYyhlLG5ldyBoKHQsbixhKSl9KX1mdW5jdGlv
biBjKGUsdCl7Zm9yKDszPT09ZS5fODM7KWU9ZS5fMTg7aWYodS5fNDcmJnUuXzQ3KGUpLDA9PT1l
Ll84MylyZXR1cm4gMD09PWUuXzc1PyhlLl83NT0xLHZvaWQoZS5fMzg9dCkpOjE9PT1lLl83NT8o
ZS5fNzU9Mix2b2lkKGUuXzM4PVtlLl8zOCx0XSkpOnZvaWQgZS5fMzgucHVzaCh0KTtsKGUsdCl9
ZnVuY3Rpb24gbChlLHQpe3YoZnVuY3Rpb24oKXt2YXIgbj0xPT09ZS5fODM/dC5vbkZ1bGZpbGxl
ZDp0Lm9uUmVqZWN0ZWQ7aWYobnVsbD09PW4pcmV0dXJuIHZvaWQoMT09PWUuXzgzP3AodC5wcm9t
aXNlLGUuXzE4KTpmKHQucHJvbWlzZSxlLl8xOCkpO3ZhciByPWkobixlLl8xOCk7cj09PWc/Zih0
LnByb21pc2UseSk6cCh0LnByb21pc2Uscil9KX1mdW5jdGlvbiBwKGUsdCl7aWYodD09PWUpcmV0
dXJuIGYoZSxuZXcgVHlwZUVycm9yKCJBIHByb21pc2UgY2Fubm90IGJlIHJlc29sdmVkIHdpdGgg
aXRzZWxmLiIpKTtpZih0JiYoIm9iamVjdCI9PT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09PXR5cGVv
ZiB0KSl7dmFyIG49byh0KTtpZihuPT09ZylyZXR1cm4gZihlLHkpO2lmKG49PT1lLnRoZW4mJnQg
aW5zdGFuY2VvZiB1KXJldHVybiBlLl84Mz0zLGUuXzE4PXQsdm9pZCBkKGUpO2lmKCJmdW5jdGlv
biI9PT10eXBlb2YgbilyZXR1cm4gdm9pZCBtKG4uYmluZCh0KSxlKX1lLl84Mz0xLGUuXzE4PXQs
ZChlKX1mdW5jdGlvbiBmKGUsdCl7ZS5fODM9MixlLl8xOD10LHUuXzcxJiZ1Ll83MShlLHQpLGQo
ZSl9ZnVuY3Rpb24gZChlKXtpZigxPT09ZS5fNzUmJihjKGUsZS5fMzgpLGUuXzM4PW51bGwpLDI9
PT1lLl83NSl7Zm9yKHZhciB0PTA7dDxlLl8zOC5sZW5ndGg7dCsrKWMoZSxlLl8zOFt0XSk7ZS5f
Mzg9bnVsbH19ZnVuY3Rpb24gaChlLHQsbil7dGhpcy5vbkZ1bGZpbGxlZD0iZnVuY3Rpb24iPT09
dHlwZW9mIGU/ZTpudWxsLHRoaXMub25SZWplY3RlZD0iZnVuY3Rpb24iPT09dHlwZW9mIHQ/dDpu
dWxsLHRoaXMucHJvbWlzZT1ufWZ1bmN0aW9uIG0oZSx0KXt2YXIgbj0hMSxyPWEoZSxmdW5jdGlv
bihlKXtufHwobj0hMCxwKHQsZSkpfSxmdW5jdGlvbihlKXtufHwobj0hMCxmKHQsZSkpfSk7bnx8
ciE9PWd8fChuPSEwLGYodCx5KSl9dmFyIHY9bigxMDApLHk9bnVsbCxnPXt9O2UuZXhwb3J0cz11
LHUuXzQ3PW51bGwsdS5fNzE9bnVsbCx1Ll80ND1yLHUucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24o
ZSx0KXtpZih0aGlzLmNvbnN0cnVjdG9yIT09dSlyZXR1cm4gcyh0aGlzLGUsdCk7dmFyIG49bmV3
IHUocik7cmV0dXJuIGModGhpcyxuZXcgaChlLHQsbikpLG59fSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0
aGlzLnJlZnM9Yyx0aGlzLnVwZGF0ZXI9bnx8c31mdW5jdGlvbiBvKGUsdCxuKXt0aGlzLnByb3Bz
PWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPWMsdGhpcy51cGRhdGVyPW58fHN9ZnVuY3Rpb24g
aSgpe312YXIgYT1uKDE4KSx1PW4oMykscz1uKDUzKSxjPShuKDU0KSxuKDIzKSk7bigwKSxuKDEw
NCk7ci5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxyLnByb3RvdHlwZS5zZXRTdGF0ZT1m
dW5jdGlvbihlLHQpeyJvYmplY3QiIT09dHlwZW9mIGUmJiJmdW5jdGlvbiIhPT10eXBlb2YgZSYm
bnVsbCE9ZSYmYSgiODUiKSx0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsZSksdCYm
dGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLHQsInNldFN0YXRlIil9LHIucHJvdG90
eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRh
dGUodGhpcyksZSYmdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLGUsImZvcmNlVXBk
YXRlIil9O2kucHJvdG90eXBlPXIucHJvdG90eXBlLG8ucHJvdG90eXBlPW5ldyBpLG8ucHJvdG90
eXBlLmNvbnN0cnVjdG9yPW8sdShvLnByb3RvdHlwZSxyLnByb3RvdHlwZSksby5wcm90b3R5cGUu
aXNQdXJlUmVhY3RDb21wb25lbnQ9ITAsZS5leHBvcnRzPXtDb21wb25lbnQ6cixQdXJlQ29tcG9u
ZW50Om99fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPShuKDEpLHtpc01vdW50
ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGVucXVldWVDYWxsYmFjazpmdW5jdGlvbihlLHQpe30s
ZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUpe30sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5j
dGlvbihlLHQpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUsdCl7fX0pO2UuZXhwb3J0cz1y
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSExO2UuZXhwb3J0cz1yfSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9s
JiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50Iil8fDYwMTAzO2UuZXhwb3J0
cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTEyKTtlLmV4cG9ydHM9
ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZSwhMSl9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2UuZXhwb3J0cz0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQi
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtoYXNDYWNoZWRDaGlsZE5vZGVz
OjF9O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0KXtyZXR1cm4gbnVsbD09dCYmbygiMzAiKSxudWxsPT1lP3Q6QXJyYXkuaXNBcnJheShlKT9B
cnJheS5pc0FycmF5KHQpPyhlLnB1c2guYXBwbHkoZSx0KSxlKTooZS5wdXNoKHQpLGUpOkFycmF5
LmlzQXJyYXkodCk/W2VdLmNvbmNhdCh0KTpbZSx0XX12YXIgbz1uKDIpO24oMCk7ZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7QXJyYXku
aXNBcnJheShlKT9lLmZvckVhY2godCxuKTplJiZ0LmNhbGwobixlKX1lLmV4cG9ydHM9cn0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7cmV0dXJuIWkmJm8uY2FuVXNl
RE9NJiYoaT0idGV4dENvbnRlbnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50PyJ0ZXh0Q29u
dGVudCI6ImlubmVyVGV4dCIpLGl9dmFyIG89big1KSxpPW51bGw7ZS5leHBvcnRzPXJ9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9m
IHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlv
biIpfXZhciBvPW4oMiksaT1uKDEyKSxhPShuKDApLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXty
KHRoaXMsZSksdGhpcy5fY2FsbGJhY2tzPW51bGwsdGhpcy5fY29udGV4dHM9bnVsbCx0aGlzLl9h
cmc9dH1yZXR1cm4gZS5wcm90b3R5cGUuZW5xdWV1ZT1mdW5jdGlvbihlLHQpe3RoaXMuX2NhbGxi
YWNrcz10aGlzLl9jYWxsYmFja3N8fFtdLHRoaXMuX2NhbGxiYWNrcy5wdXNoKGUpLHRoaXMuX2Nv
bnRleHRzPXRoaXMuX2NvbnRleHRzfHxbXSx0aGlzLl9jb250ZXh0cy5wdXNoKHQpfSxlLnByb3Rv
dHlwZS5ub3RpZnlBbGw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jYWxsYmFja3MsdD10aGlzLl9j
b250ZXh0cyxuPXRoaXMuX2FyZztpZihlJiZ0KXtlLmxlbmd0aCE9PXQubGVuZ3RoJiZvKCIyNCIp
LHRoaXMuX2NhbGxiYWNrcz1udWxsLHRoaXMuX2NvbnRleHRzPW51bGw7Zm9yKHZhciByPTA7cjxl
Lmxlbmd0aDtyKyspZVtyXS5jYWxsKHRbcl0sbik7ZS5sZW5ndGg9MCx0Lmxlbmd0aD0wfX0sZS5w
cm90b3R5cGUuY2hlY2twb2ludD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYWxsYmFja3M/dGhp
cy5fY2FsbGJhY2tzLmxlbmd0aDowfSxlLnByb3RvdHlwZS5yb2xsYmFjaz1mdW5jdGlvbihlKXt0
aGlzLl9jYWxsYmFja3MmJnRoaXMuX2NvbnRleHRzJiYodGhpcy5fY2FsbGJhY2tzLmxlbmd0aD1l
LHRoaXMuX2NvbnRleHRzLmxlbmd0aD1lKX0sZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0
aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250ZXh0cz1udWxsfSxlLnByb3RvdHlwZS5kZXN0
cnVjdG9yPWZ1bmN0aW9uKCl7dGhpcy5yZXNldCgpfSxlfSgpKTtlLmV4cG9ydHM9aS5hZGRQb29s
aW5nVG8oYSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e2xvZ1RvcExldmVs
UmVuZGVyczohMX07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXt2YXIgdD1lLnR5cGUsbj1lLm5vZGVOYW1lO3JldHVybiBuJiYiaW5wdXQiPT09
bi50b0xvd2VyQ2FzZSgpJiYoImNoZWNrYm94Ij09PXR8fCJyYWRpbyI9PT10KX1mdW5jdGlvbiBv
KGUpe3JldHVybiBlLl93cmFwcGVyU3RhdGUudmFsdWVUcmFja2VyfWZ1bmN0aW9uIGkoZSx0KXtl
Ll93cmFwcGVyU3RhdGUudmFsdWVUcmFja2VyPXR9ZnVuY3Rpb24gYShlKXtkZWxldGUgZS5fd3Jh
cHBlclN0YXRlLnZhbHVlVHJhY2tlcn1mdW5jdGlvbiB1KGUpe3ZhciB0O3JldHVybiBlJiYodD1y
KGUpPyIiK2UuY2hlY2tlZDplLnZhbHVlKSx0fXZhciBzPW4oNCksYz17X2dldFRyYWNrZXJGcm9t
Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gbyhzLmdldEluc3RhbmNlRnJvbU5vZGUoZSkpfSx0cmFj
azpmdW5jdGlvbihlKXtpZighbyhlKSl7dmFyIHQ9cy5nZXROb2RlRnJvbUluc3RhbmNlKGUpLG49
cih0KT8iY2hlY2tlZCI6InZhbHVlIix1PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsbiksYz0iIit0W25dO3QuaGFzT3duUHJvcGVydHkobil8
fCJmdW5jdGlvbiIhPT10eXBlb2YgdS5nZXR8fCJmdW5jdGlvbiIhPT10eXBlb2YgdS5zZXR8fChP
YmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHtlbnVtZXJhYmxlOnUuZW51bWVyYWJsZSxjb25maWd1
cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHUuZ2V0LmNhbGwodGhpcyl9LHNldDpmdW5j
dGlvbihlKXtjPSIiK2UsdS5zZXQuY2FsbCh0aGlzLGUpfX0pLGkoZSx7Z2V0VmFsdWU6ZnVuY3Rp
b24oKXtyZXR1cm4gY30sc2V0VmFsdWU6ZnVuY3Rpb24oZSl7Yz0iIitlfSxzdG9wVHJhY2tpbmc6
ZnVuY3Rpb24oKXthKGUpLGRlbGV0ZSB0W25dfX0pKX19LHVwZGF0ZVZhbHVlSWZDaGFuZ2VkOmZ1
bmN0aW9uKGUpe2lmKCFlKXJldHVybiExO3ZhciB0PW8oZSk7aWYoIXQpcmV0dXJuIGMudHJhY2so
ZSksITA7dmFyIG49dC5nZXRWYWx1ZSgpLHI9dShzLmdldE5vZGVGcm9tSW5zdGFuY2UoZSkpO3Jl
dHVybiByIT09biYmKHQuc2V0VmFsdWUociksITApfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oZSl7
dmFyIHQ9byhlKTt0JiZ0LnN0b3BUcmFja2luZygpfX07ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQ/ISFvW2UudHlwZV06InRleHRh
cmVhIj09PXR9dmFyIG89e2NvbG9yOiEwLGRhdGU6ITAsZGF0ZXRpbWU6ITAsImRhdGV0aW1lLWxv
Y2FsIjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAs
c2VhcmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6ITB9O2UuZXhwb3J0
cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtjdXJyZW50U2Nyb2xsTGVm
dDowLGN1cnJlbnRTY3JvbGxUb3A6MCxyZWZyZXNoU2Nyb2xsVmFsdWVzOmZ1bmN0aW9uKGUpe3Iu
Y3VycmVudFNjcm9sbExlZnQ9ZS54LHIuY3VycmVudFNjcm9sbFRvcD1lLnl9fTtlLmV4cG9ydHM9
cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDUpLG89bigyNyksaT1uKDI2
KSxhPWZ1bmN0aW9uKGUsdCl7aWYodCl7dmFyIG49ZS5maXJzdENoaWxkO2lmKG4mJm49PT1lLmxh
c3RDaGlsZCYmMz09PW4ubm9kZVR5cGUpcmV0dXJuIHZvaWQobi5ub2RlVmFsdWU9dCl9ZS50ZXh0
Q29udGVudD10fTtyLmNhblVzZURPTSYmKCJ0ZXh0Q29udGVudCJpbiBkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnR8fChhPWZ1bmN0aW9uKGUsdCl7aWYoMz09PWUubm9kZVR5cGUpcmV0dXJuIHZvaWQo
ZS5ub2RlVmFsdWU9dCk7aShlLG8odCkpfSkpLGUuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dHJ5e2UuZm9jdXMoKX1jYXRjaChlKXt9fWUuZXhw
b3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1
cm4gZSt0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyaW5nKDEpfXZhciBvPXthbmlt
YXRpb25JdGVyYXRpb25Db3VudDohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNs
aWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94
T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBv
c2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlk
Um93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRD
b2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3Rh
cnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEw
LG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206
ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURh
c2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tl
T3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0saT1bIldlYmtpdCIsIm1zIiwiTW96IiwiTyJdO09i
amVjdC5rZXlzKG8pLmZvckVhY2goZnVuY3Rpb24oZSl7aS5mb3JFYWNoKGZ1bmN0aW9uKHQpe29b
cih0LGUpXT1vW2VdfSl9KTt2YXIgYT17YmFja2dyb3VuZDp7YmFja2dyb3VuZEF0dGFjaG1lbnQ6
ITAsYmFja2dyb3VuZENvbG9yOiEwLGJhY2tncm91bmRJbWFnZTohMCxiYWNrZ3JvdW5kUG9zaXRp
b25YOiEwLGJhY2tncm91bmRQb3NpdGlvblk6ITAsYmFja2dyb3VuZFJlcGVhdDohMH0sYmFja2dy
b3VuZFBvc2l0aW9uOntiYWNrZ3JvdW5kUG9zaXRpb25YOiEwLGJhY2tncm91bmRQb3NpdGlvblk6
ITB9LGJvcmRlcjp7Ym9yZGVyV2lkdGg6ITAsYm9yZGVyU3R5bGU6ITAsYm9yZGVyQ29sb3I6ITB9
LGJvcmRlckJvdHRvbTp7Ym9yZGVyQm90dG9tV2lkdGg6ITAsYm9yZGVyQm90dG9tU3R5bGU6ITAs
Ym9yZGVyQm90dG9tQ29sb3I6ITB9LGJvcmRlckxlZnQ6e2JvcmRlckxlZnRXaWR0aDohMCxib3Jk
ZXJMZWZ0U3R5bGU6ITAsYm9yZGVyTGVmdENvbG9yOiEwfSxib3JkZXJSaWdodDp7Ym9yZGVyUmln
aHRXaWR0aDohMCxib3JkZXJSaWdodFN0eWxlOiEwLGJvcmRlclJpZ2h0Q29sb3I6ITB9LGJvcmRl
clRvcDp7Ym9yZGVyVG9wV2lkdGg6ITAsYm9yZGVyVG9wU3R5bGU6ITAsYm9yZGVyVG9wQ29sb3I6
ITB9LGZvbnQ6e2ZvbnRTdHlsZTohMCxmb250VmFyaWFudDohMCxmb250V2VpZ2h0OiEwLGZvbnRT
aXplOiEwLGxpbmVIZWlnaHQ6ITAsZm9udEZhbWlseTohMH0sb3V0bGluZTp7b3V0bGluZVdpZHRo
OiEwLG91dGxpbmVTdHlsZTohMCxvdXRsaW5lQ29sb3I6ITB9fSx1PXtpc1VuaXRsZXNzTnVtYmVy
Om8sc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zOmF9O2UuZXhwb3J0cz11fSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuISFjLmhhc093blByb3BlcnR5
KGUpfHwhcy5oYXNPd25Qcm9wZXJ0eShlKSYmKHUudGVzdChlKT8oY1tlXT0hMCwhMCk6KHNbZV09
ITAsITEpKX1mdW5jdGlvbiBvKGUsdCl7cmV0dXJuIG51bGw9PXR8fGUuaGFzQm9vbGVhblZhbHVl
JiYhdHx8ZS5oYXNOdW1lcmljVmFsdWUmJmlzTmFOKHQpfHxlLmhhc1Bvc2l0aXZlTnVtZXJpY1Zh
bHVlJiZ0PDF8fGUuaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSYmITE9PT10fXZhciBpPW4oMTUp
LGE9KG4oNCksbig3KSxuKDE0NykpLHU9KG4oMSksbmV3IFJlZ0V4cCgiXlsiK2kuQVRUUklCVVRF
X05BTUVfU1RBUlRfQ0hBUisiXVsiK2kuQVRUUklCVVRFX05BTUVfQ0hBUisiXSokIikpLHM9e30s
Yz17fSxsPXtjcmVhdGVNYXJrdXBGb3JJRDpmdW5jdGlvbihlKXtyZXR1cm4gaS5JRF9BVFRSSUJV
VEVfTkFNRSsiPSIrYShlKX0sc2V0QXR0cmlidXRlRm9ySUQ6ZnVuY3Rpb24oZSx0KXtlLnNldEF0
dHJpYnV0ZShpLklEX0FUVFJJQlVURV9OQU1FLHQpfSxjcmVhdGVNYXJrdXBGb3JSb290OmZ1bmN0
aW9uKCl7cmV0dXJuIGkuUk9PVF9BVFRSSUJVVEVfTkFNRSsnPSIiJ30sc2V0QXR0cmlidXRlRm9y
Um9vdDpmdW5jdGlvbihlKXtlLnNldEF0dHJpYnV0ZShpLlJPT1RfQVRUUklCVVRFX05BTUUsIiIp
fSxjcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQpe3ZhciBuPWkucHJvcGVydGll
cy5oYXNPd25Qcm9wZXJ0eShlKT9pLnByb3BlcnRpZXNbZV06bnVsbDtpZihuKXtpZihvKG4sdCkp
cmV0dXJuIiI7dmFyIHI9bi5hdHRyaWJ1dGVOYW1lO3JldHVybiBuLmhhc0Jvb2xlYW5WYWx1ZXx8
bi5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiYhMD09PXQ/cisnPSIiJzpyKyI9IithKHQpfXJl
dHVybiBpLmlzQ3VzdG9tQXR0cmlidXRlKGUpP251bGw9PXQ/IiI6ZSsiPSIrYSh0KTpudWxsfSxj
cmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcihlKSYm
bnVsbCE9dD9lKyI9IithKHQpOiIifSxzZXRWYWx1ZUZvclByb3BlcnR5OmZ1bmN0aW9uKGUsdCxu
KXt2YXIgcj1pLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkodCk/aS5wcm9wZXJ0aWVzW3RdOm51
bGw7aWYocil7dmFyIGE9ci5tdXRhdGlvbk1ldGhvZDtpZihhKWEoZSxuKTtlbHNle2lmKG8ocixu
KSlyZXR1cm4gdm9pZCB0aGlzLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoZSx0KTtpZihyLm11c3RV
c2VQcm9wZXJ0eSllW3IucHJvcGVydHlOYW1lXT1uO2Vsc2V7dmFyIHU9ci5hdHRyaWJ1dGVOYW1l
LHM9ci5hdHRyaWJ1dGVOYW1lc3BhY2U7cz9lLnNldEF0dHJpYnV0ZU5TKHMsdSwiIituKTpyLmhh
c0Jvb2xlYW5WYWx1ZXx8ci5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiYhMD09PW4/ZS5zZXRB
dHRyaWJ1dGUodSwiIik6ZS5zZXRBdHRyaWJ1dGUodSwiIituKX19fWVsc2UgaWYoaS5pc0N1c3Rv
bUF0dHJpYnV0ZSh0KSlyZXR1cm4gdm9pZCBsLnNldFZhbHVlRm9yQXR0cmlidXRlKGUsdCxuKX0s
c2V0VmFsdWVGb3JBdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0LG4pe2lmKHIodCkpe251bGw9PW4/ZS5y
ZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRBdHRyaWJ1dGUodCwiIituKX19LGRlbGV0ZVZhbHVlRm9y
QXR0cmlidXRlOmZ1bmN0aW9uKGUsdCl7ZS5yZW1vdmVBdHRyaWJ1dGUodCl9LGRlbGV0ZVZhbHVl
Rm9yUHJvcGVydHk6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pLnByb3BlcnRpZXMuaGFzT3duUHJvcGVy
dHkodCk/aS5wcm9wZXJ0aWVzW3RdOm51bGw7aWYobil7dmFyIHI9bi5tdXRhdGlvbk1ldGhvZDtp
ZihyKXIoZSx2b2lkIDApO2Vsc2UgaWYobi5tdXN0VXNlUHJvcGVydHkpe3ZhciBvPW4ucHJvcGVy
dHlOYW1lO24uaGFzQm9vbGVhblZhbHVlP2Vbb109ITE6ZVtvXT0iIn1lbHNlIGUucmVtb3ZlQXR0
cmlidXRlKG4uYXR0cmlidXRlTmFtZSl9ZWxzZSBpLmlzQ3VzdG9tQXR0cmlidXRlKHQpJiZlLnJl
bW92ZUF0dHJpYnV0ZSh0KX19O2UuZXhwb3J0cz1sfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoKXtpZih0aGlzLl9yb290Tm9kZUlEJiZ0aGlzLl93cmFwcGVyU3RhdGUu
cGVuZGluZ1VwZGF0ZSl7dGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGU9ITE7dmFyIGU9
dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsdD11LmdldFZhbHVlKGUpO251bGwhPXQmJm8odGhp
cyxCb29sZWFuKGUubXVsdGlwbGUpLHQpfX1mdW5jdGlvbiBvKGUsdCxuKXt2YXIgcixvLGk9cy5n
ZXROb2RlRnJvbUluc3RhbmNlKGUpLm9wdGlvbnM7aWYodCl7Zm9yKHI9e30sbz0wO288bi5sZW5n
dGg7bysrKXJbIiIrbltvXV09ITA7Zm9yKG89MDtvPGkubGVuZ3RoO28rKyl7dmFyIGE9ci5oYXNP
d25Qcm9wZXJ0eShpW29dLnZhbHVlKTtpW29dLnNlbGVjdGVkIT09YSYmKGlbb10uc2VsZWN0ZWQ9
YSl9fWVsc2V7Zm9yKHI9IiIrbixvPTA7bzxpLmxlbmd0aDtvKyspaWYoaVtvXS52YWx1ZT09PXIp
cmV0dXJuIHZvaWQoaVtvXS5zZWxlY3RlZD0hMCk7aS5sZW5ndGgmJihpWzBdLnNlbGVjdGVkPSEw
KX19ZnVuY3Rpb24gaShlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXUuZXhl
Y3V0ZU9uQ2hhbmdlKHQsZSk7cmV0dXJuIHRoaXMuX3Jvb3ROb2RlSUQmJih0aGlzLl93cmFwcGVy
U3RhdGUucGVuZGluZ1VwZGF0ZT0hMCksYy5hc2FwKHIsdGhpcyksbn12YXIgYT1uKDMpLHU9big0
MCkscz1uKDQpLGM9big4KSxsPShuKDEpLCExKSxwPXtnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0
KXtyZXR1cm4gYSh7fSx0LHtvbkNoYW5nZTplLl93cmFwcGVyU3RhdGUub25DaGFuZ2UsdmFsdWU6
dm9pZCAwfSl9LG1vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXUuZ2V0VmFsdWUodCk7
ZS5fd3JhcHBlclN0YXRlPXtwZW5kaW5nVXBkYXRlOiExLGluaXRpYWxWYWx1ZTpudWxsIT1uP246
dC5kZWZhdWx0VmFsdWUsbGlzdGVuZXJzOm51bGwsb25DaGFuZ2U6aS5iaW5kKGUpLHdhc011bHRp
cGxlOkJvb2xlYW4odC5tdWx0aXBsZSl9LHZvaWQgMD09PXQudmFsdWV8fHZvaWQgMD09PXQuZGVm
YXVsdFZhbHVlfHxsfHwobD0hMCl9LGdldFNlbGVjdFZhbHVlQ29udGV4dDpmdW5jdGlvbihlKXty
ZXR1cm4gZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZX0scG9zdFVwZGF0ZVdyYXBwZXI6ZnVu
Y3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHM7ZS5fd3JhcHBlclN0YXRlLmlu
aXRpYWxWYWx1ZT12b2lkIDA7dmFyIG49ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlO2UuX3dy
YXBwZXJTdGF0ZS53YXNNdWx0aXBsZT1Cb29sZWFuKHQubXVsdGlwbGUpO3ZhciByPXUuZ2V0VmFs
dWUodCk7bnVsbCE9cj8oZS5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGU9ITEsbyhlLEJvb2xl
YW4odC5tdWx0aXBsZSkscikpOm4hPT1Cb29sZWFuKHQubXVsdGlwbGUpJiYobnVsbCE9dC5kZWZh
dWx0VmFsdWU/byhlLEJvb2xlYW4odC5tdWx0aXBsZSksdC5kZWZhdWx0VmFsdWUpOm8oZSxCb29s
ZWFuKHQubXVsdGlwbGUpLHQubXVsdGlwbGU/W106IiIpKX19O2UuZXhwb3J0cz1wfSxmdW5jdGlv
bihlLHQpe2Z1bmN0aW9uIG4oKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBi
ZWVuIGRlZmluZWQiKX1mdW5jdGlvbiByKCl7dGhyb3cgbmV3IEVycm9yKCJjbGVhclRpbWVvdXQg
aGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBvKGUpe2lmKGw9PT1zZXRUaW1lb3V0KXJl
dHVybiBzZXRUaW1lb3V0KGUsMCk7aWYoKGw9PT1ufHwhbCkmJnNldFRpbWVvdXQpcmV0dXJuIGw9
c2V0VGltZW91dCxzZXRUaW1lb3V0KGUsMCk7dHJ5e3JldHVybiBsKGUsMCl9Y2F0Y2godCl7dHJ5
e3JldHVybiBsLmNhbGwobnVsbCxlLDApfWNhdGNoKHQpe3JldHVybiBsLmNhbGwodGhpcyxlLDAp
fX19ZnVuY3Rpb24gaShlKXtpZihwPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQo
ZSk7aWYoKHA9PT1yfHwhcCkmJmNsZWFyVGltZW91dClyZXR1cm4gcD1jbGVhclRpbWVvdXQsY2xl
YXJUaW1lb3V0KGUpO3RyeXtyZXR1cm4gcChlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIHAuY2FsbChu
dWxsLGUpfWNhdGNoKHQpe3JldHVybiBwLmNhbGwodGhpcyxlKX19fWZ1bmN0aW9uIGEoKXttJiZk
JiYobT0hMSxkLmxlbmd0aD9oPWQuY29uY2F0KGgpOnY9LTEsaC5sZW5ndGgmJnUoKSl9ZnVuY3Rp
b24gdSgpe2lmKCFtKXt2YXIgZT1vKGEpO209ITA7Zm9yKHZhciB0PWgubGVuZ3RoO3Q7KXtmb3Io
ZD1oLGg9W107Kyt2PHQ7KWQmJmRbdl0ucnVuKCk7dj0tMSx0PWgubGVuZ3RofWQ9bnVsbCxtPSEx
LGkoZSl9fWZ1bmN0aW9uIHMoZSx0KXt0aGlzLmZ1bj1lLHRoaXMuYXJyYXk9dH1mdW5jdGlvbiBj
KCl7fXZhciBsLHAsZj1lLmV4cG9ydHM9e307IWZ1bmN0aW9uKCl7dHJ5e2w9ImZ1bmN0aW9uIj09
PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6bn1jYXRjaChlKXtsPW59dHJ5e3A9ImZ1bmN0
aW9uIj09PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnJ9Y2F0Y2goZSl7cD1yfX0o
KTt2YXIgZCxoPVtdLG09ITEsdj0tMTtmLm5leHRUaWNrPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBB
cnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIG49
MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07aC5wdXNoKG5ldyBz
KGUsdCkpLDEhPT1oLmxlbmd0aHx8bXx8byh1KX0scy5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7
dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0sZi50aXRsZT0iYnJvd3NlciIsZi5icm93
c2VyPSEwLGYuZW52PXt9LGYuYXJndj1bXSxmLnZlcnNpb249IiIsZi52ZXJzaW9ucz17fSxmLm9u
PWMsZi5hZGRMaXN0ZW5lcj1jLGYub25jZT1jLGYub2ZmPWMsZi5yZW1vdmVMaXN0ZW5lcj1jLGYu
cmVtb3ZlQWxsTGlzdGVuZXJzPWMsZi5lbWl0PWMsZi5wcmVwZW5kTGlzdGVuZXI9YyxmLnByZXBl
bmRPbmNlTGlzdGVuZXI9YyxmLmxpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm5bXX0sZi5iaW5k
aW5nPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBz
dXBwb3J0ZWQiKX0sZi5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LGYuY2hkaXI9ZnVuY3Rpb24o
ZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0sZi51
bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe2lmKGUpe3ZhciB0PWUuZ2V0TmFtZSgpO2lmKHQpcmV0dXJuIiBDaGVjayB0
aGUgcmVuZGVyIG1ldGhvZCBvZiBgIit0KyJgLiJ9cmV0dXJuIiJ9ZnVuY3Rpb24gbyhlKXtyZXR1
cm4iZnVuY3Rpb24iPT09dHlwZW9mIGUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGUucHJvdG90eXBl
JiYiZnVuY3Rpb24iPT09dHlwZW9mIGUucHJvdG90eXBlLm1vdW50Q29tcG9uZW50JiYiZnVuY3Rp
b24iPT09dHlwZW9mIGUucHJvdG90eXBlLnJlY2VpdmVDb21wb25lbnR9ZnVuY3Rpb24gaShlLHQp
e3ZhciBuO2lmKG51bGw9PT1lfHwhMT09PWUpbj1jLmNyZWF0ZShpKTtlbHNlIGlmKCJvYmplY3Qi
PT09dHlwZW9mIGUpe3ZhciB1PWUscz11LnR5cGU7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBzJiYi
c3RyaW5nIiE9PXR5cGVvZiBzKXt2YXIgZj0iIjtmKz1yKHUuX293bmVyKSxhKCIxMzAiLG51bGw9
PXM/czp0eXBlb2YgcyxmKX0ic3RyaW5nIj09PXR5cGVvZiB1LnR5cGU/bj1sLmNyZWF0ZUludGVy
bmFsQ29tcG9uZW50KHUpOm8odS50eXBlKT8obj1uZXcgdS50eXBlKHUpLG4uZ2V0SG9zdE5vZGV8
fChuLmdldEhvc3ROb2RlPW4uZ2V0TmF0aXZlTm9kZSkpOm49bmV3IHAodSl9ZWxzZSJzdHJpbmci
PT09dHlwZW9mIGV8fCJudW1iZXIiPT09dHlwZW9mIGU/bj1sLmNyZWF0ZUluc3RhbmNlRm9yVGV4
dChlKTphKCIxMzEiLHR5cGVvZiBlKTtyZXR1cm4gbi5fbW91bnRJbmRleD0wLG4uX21vdW50SW1h
Z2U9bnVsbCxufXZhciBhPW4oMiksdT1uKDMpLHM9bigxNTYpLGM9big3NSksbD1uKDc2KSxwPShu
KDE1NyksbigwKSxuKDEpLGZ1bmN0aW9uKGUpe3RoaXMuY29uc3RydWN0KGUpfSk7dShwLnByb3Rv
dHlwZSxzLHtfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDppfSksZS5leHBvcnRzPWl9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigyKSxvPW4oMTMpLGk9KG4oMCkse0hPU1Q6
MCxDT01QT1NJVEU6MSxFTVBUWToyLGdldFR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1l
fHwhMT09PWU/aS5FTVBUWTpvLmlzVmFsaWRFbGVtZW50KGUpPyJmdW5jdGlvbiI9PT10eXBlb2Yg
ZS50eXBlP2kuQ09NUE9TSVRFOmkuSE9TVDp2b2lkIHIoIjI2IixlKX19KTtlLmV4cG9ydHM9aX0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixvPXtpbmplY3RFbXB0eUNvbXBvbmVu
dEZhY3Rvcnk6ZnVuY3Rpb24oZSl7cj1lfX0saT17Y3JlYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBy
KGUpfX07aS5pbmplY3Rpb249byxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiB1fHxhKCIxMTEiLGUudHlwZSksbmV3IHUoZSl9ZnVu
Y3Rpb24gbyhlKXtyZXR1cm4gbmV3IHMoZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSBpbnN0YW5j
ZW9mIHN9dmFyIGE9bigyKSx1PShuKDApLG51bGwpLHM9bnVsbCxjPXtpbmplY3RHZW5lcmljQ29t
cG9uZW50Q2xhc3M6ZnVuY3Rpb24oZSl7dT1lfSxpbmplY3RUZXh0Q29tcG9uZW50Q2xhc3M6ZnVu
Y3Rpb24oZSl7cz1lfX0sbD17Y3JlYXRlSW50ZXJuYWxDb21wb25lbnQ6cixjcmVhdGVJbnN0YW5j
ZUZvclRleHQ6byxpc1RleHRDb21wb25lbnQ6aSxpbmplY3Rpb246Y307ZS5leHBvcnRzPWx9LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBlJiYib2Jq
ZWN0Ij09PXR5cGVvZiBlJiZudWxsIT1lLmtleT9jLmVzY2FwZShlLmtleSk6dC50b1N0cmluZygz
Nil9ZnVuY3Rpb24gbyhlLHQsbixpKXt2YXIgZj10eXBlb2YgZTtpZigidW5kZWZpbmVkIiE9PWYm
JiJib29sZWFuIiE9PWZ8fChlPW51bGwpLG51bGw9PT1lfHwic3RyaW5nIj09PWZ8fCJudW1iZXIi
PT09Znx8Im9iamVjdCI9PT1mJiZlLiQkdHlwZW9mPT09dSlyZXR1cm4gbihpLGUsIiI9PT10P2wr
cihlLDApOnQpLDE7dmFyIGQsaCxtPTAsdj0iIj09PXQ/bDp0K3A7aWYoQXJyYXkuaXNBcnJheShl
KSlmb3IodmFyIHk9MDt5PGUubGVuZ3RoO3krKylkPWVbeV0saD12K3IoZCx5KSxtKz1vKGQsaCxu
LGkpO2Vsc2V7dmFyIGc9cyhlKTtpZihnKXt2YXIgYixfPWcuY2FsbChlKTtpZihnIT09ZS5lbnRy
aWVzKWZvcih2YXIgQz0wOyEoYj1fLm5leHQoKSkuZG9uZTspZD1iLnZhbHVlLGg9dityKGQsQysr
KSxtKz1vKGQsaCxuLGkpO2Vsc2UgZm9yKDshKGI9Xy5uZXh0KCkpLmRvbmU7KXt2YXIgdz1iLnZh
bHVlO3cmJihkPXdbMV0saD12K2MuZXNjYXBlKHdbMF0pK3ArcihkLDApLG0rPW8oZCxoLG4saSkp
fX1lbHNlIGlmKCJvYmplY3QiPT09Zil7dmFyIEU9IiIseD1TdHJpbmcoZSk7YSgiMzEiLCJbb2Jq
ZWN0IE9iamVjdF0iPT09eD8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmplY3Qua2V5cyhlKS5qb2lu
KCIsICIpKyJ9Ijp4LEUpfX1yZXR1cm4gbX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gbnVsbD09
ZT8wOm8oZSwiIix0LG4pfXZhciBhPW4oMiksdT0obigxMCksbigxNTgpKSxzPW4oMTU5KSxjPShu
KDApLG4oNDQpKSxsPShuKDEpLCIuIikscD0iOiI7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1GdW5jdGlvbi5wcm90b3R5cGUudG9T
dHJpbmcsbj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHI9UmVnRXhwKCJeIit0LmNh
bGwobikucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNP
d25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4q
PyIpKyIkIik7dHJ5e3ZhciBvPXQuY2FsbChlKTtyZXR1cm4gci50ZXN0KG8pfWNhdGNoKGUpe3Jl
dHVybiExfX1mdW5jdGlvbiBvKGUpe3ZhciB0PWMoZSk7aWYodCl7dmFyIG49dC5jaGlsZElEczts
KGUpLG4uZm9yRWFjaChvKX19ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJuIlxuICAgIGluICIrKGV8
fCJVbmtub3duIikrKHQ/IiAoYXQgIit0LmZpbGVOYW1lLnJlcGxhY2UoL14uKltcXFwvXS8sIiIp
KyI6Iit0LmxpbmVOdW1iZXIrIikiOm4/IiAoY3JlYXRlZCBieSAiK24rIikiOiIiKX1mdW5jdGlv
biBhKGUpe3JldHVybiBudWxsPT1lPyIjZW1wdHkiOiJzdHJpbmciPT09dHlwZW9mIGV8fCJudW1i
ZXIiPT09dHlwZW9mIGU/IiN0ZXh0Ijoic3RyaW5nIj09PXR5cGVvZiBlLnR5cGU/ZS50eXBlOmUu
dHlwZS5kaXNwbGF5TmFtZXx8ZS50eXBlLm5hbWV8fCJVbmtub3duIn1mdW5jdGlvbiB1KGUpe3Zh
ciB0LG49VC5nZXREaXNwbGF5TmFtZShlKSxyPVQuZ2V0RWxlbWVudChlKSxvPVQuZ2V0T3duZXJJ
RChlKTtyZXR1cm4gbyYmKHQ9VC5nZXREaXNwbGF5TmFtZShvKSksaShuLHImJnIuX3NvdXJjZSx0
KX12YXIgcyxjLGwscCxmLGQsaCxtPW4oMTgpLHY9bigxMCkseT0obigwKSxuKDEpLCJmdW5jdGlv
biI9PT10eXBlb2YgQXJyYXkuZnJvbSYmImZ1bmN0aW9uIj09PXR5cGVvZiBNYXAmJnIoTWFwKSYm
bnVsbCE9TWFwLnByb3RvdHlwZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBNYXAucHJvdG90eXBlLmtl
eXMmJnIoTWFwLnByb3RvdHlwZS5rZXlzKSYmImZ1bmN0aW9uIj09PXR5cGVvZiBTZXQmJnIoU2V0
KSYmbnVsbCE9U2V0LnByb3RvdHlwZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBTZXQucHJvdG90eXBl
LmtleXMmJnIoU2V0LnByb3RvdHlwZS5rZXlzKSk7aWYoeSl7dmFyIGc9bmV3IE1hcCxiPW5ldyBT
ZXQ7cz1mdW5jdGlvbihlLHQpe2cuc2V0KGUsdCl9LGM9ZnVuY3Rpb24oZSl7cmV0dXJuIGcuZ2V0
KGUpfSxsPWZ1bmN0aW9uKGUpe2cuZGVsZXRlKGUpfSxwPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5
LmZyb20oZy5rZXlzKCkpfSxmPWZ1bmN0aW9uKGUpe2IuYWRkKGUpfSxkPWZ1bmN0aW9uKGUpe2Iu
ZGVsZXRlKGUpfSxoPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20oYi5rZXlzKCkpfX1lbHNl
e3ZhciBfPXt9LEM9e30sdz1mdW5jdGlvbihlKXtyZXR1cm4iLiIrZX0sRT1mdW5jdGlvbihlKXty
ZXR1cm4gcGFyc2VJbnQoZS5zdWJzdHIoMSksMTApfTtzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dyhl
KTtfW25dPXR9LGM9ZnVuY3Rpb24oZSl7dmFyIHQ9dyhlKTtyZXR1cm4gX1t0XX0sbD1mdW5jdGlv
bihlKXt2YXIgdD13KGUpO2RlbGV0ZSBfW3RdfSxwPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5r
ZXlzKF8pLm1hcChFKX0sZj1mdW5jdGlvbihlKXt2YXIgdD13KGUpO0NbdF09ITB9LGQ9ZnVuY3Rp
b24oZSl7dmFyIHQ9dyhlKTtkZWxldGUgQ1t0XX0saD1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qu
a2V5cyhDKS5tYXAoRSl9fXZhciB4PVtdLFQ9e29uU2V0Q2hpbGRyZW46ZnVuY3Rpb24oZSx0KXt2
YXIgbj1jKGUpO258fG0oIjE0NCIpLG4uY2hpbGRJRHM9dDtmb3IodmFyIHI9MDtyPHQubGVuZ3Ro
O3IrKyl7dmFyIG89dFtyXSxpPWMobyk7aXx8bSgiMTQwIiksbnVsbD09aS5jaGlsZElEcyYmIm9i
amVjdCI9PT10eXBlb2YgaS5lbGVtZW50JiZudWxsIT1pLmVsZW1lbnQmJm0oIjE0MSIpLGkuaXNN
b3VudGVkfHxtKCI3MSIpLG51bGw9PWkucGFyZW50SUQmJihpLnBhcmVudElEPWUpLGkucGFyZW50
SUQhPT1lJiZtKCIxNDIiLG8saS5wYXJlbnRJRCxlKX19LG9uQmVmb3JlTW91bnRDb21wb25lbnQ6
ZnVuY3Rpb24oZSx0LG4pe3MoZSx7ZWxlbWVudDp0LHBhcmVudElEOm4sdGV4dDpudWxsLGNoaWxk
SURzOltdLGlzTW91bnRlZDohMSx1cGRhdGVDb3VudDowfSl9LG9uQmVmb3JlVXBkYXRlQ29tcG9u
ZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG49YyhlKTtuJiZuLmlzTW91bnRlZCYmKG4uZWxlbWVudD10
KX0sb25Nb3VudENvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1jKGUpO3R8fG0oIjE0NCIpLHQu
aXNNb3VudGVkPSEwLDA9PT10LnBhcmVudElEJiZmKGUpfSxvblVwZGF0ZUNvbXBvbmVudDpmdW5j
dGlvbihlKXt2YXIgdD1jKGUpO3QmJnQuaXNNb3VudGVkJiZ0LnVwZGF0ZUNvdW50Kyt9LG9uVW5t
b3VudENvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1jKGUpO2lmKHQpe3QuaXNNb3VudGVkPSEx
OzA9PT10LnBhcmVudElEJiZkKGUpfXgucHVzaChlKX0scHVyZ2VVbm1vdW50ZWRDb21wb25lbnRz
OmZ1bmN0aW9uKCl7aWYoIVQuX3ByZXZlbnRQdXJnaW5nKXtmb3IodmFyIGU9MDtlPHgubGVuZ3Ro
O2UrKyl7byh4W2VdKX14Lmxlbmd0aD0wfX0saXNNb3VudGVkOmZ1bmN0aW9uKGUpe3ZhciB0PWMo
ZSk7cmV0dXJuISF0JiZ0LmlzTW91bnRlZH0sZ2V0Q3VycmVudFN0YWNrQWRkZW5kdW06ZnVuY3Rp
b24oZSl7dmFyIHQ9IiI7aWYoZSl7dmFyIG49YShlKSxyPWUuX293bmVyO3QrPWkobixlLl9zb3Vy
Y2UsciYmci5nZXROYW1lKCkpfXZhciBvPXYuY3VycmVudCx1PW8mJm8uX2RlYnVnSUQ7cmV0dXJu
IHQrPVQuZ2V0U3RhY2tBZGRlbmR1bUJ5SUQodSl9LGdldFN0YWNrQWRkZW5kdW1CeUlEOmZ1bmN0
aW9uKGUpe2Zvcih2YXIgdD0iIjtlOyl0Kz11KGUpLGU9VC5nZXRQYXJlbnRJRChlKTtyZXR1cm4g
dH0sZ2V0Q2hpbGRJRHM6ZnVuY3Rpb24oZSl7dmFyIHQ9YyhlKTtyZXR1cm4gdD90LmNoaWxkSURz
OltdfSxnZXREaXNwbGF5TmFtZTpmdW5jdGlvbihlKXt2YXIgdD1ULmdldEVsZW1lbnQoZSk7cmV0
dXJuIHQ/YSh0KTpudWxsfSxnZXRFbGVtZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWMoZSk7cmV0dXJu
IHQ/dC5lbGVtZW50Om51bGx9LGdldE93bmVySUQ6ZnVuY3Rpb24oZSl7dmFyIHQ9VC5nZXRFbGVt
ZW50KGUpO3JldHVybiB0JiZ0Ll9vd25lcj90Ll9vd25lci5fZGVidWdJRDpudWxsfSxnZXRQYXJl
bnRJRDpmdW5jdGlvbihlKXt2YXIgdD1jKGUpO3JldHVybiB0P3QucGFyZW50SUQ6bnVsbH0sZ2V0
U291cmNlOmZ1bmN0aW9uKGUpe3ZhciB0PWMoZSksbj10P3QuZWxlbWVudDpudWxsO3JldHVybiBu
dWxsIT1uP24uX3NvdXJjZTpudWxsfSxnZXRUZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PVQuZ2V0RWxl
bWVudChlKTtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiB0P3Q6Im51bWJlciI9PT10eXBlb2YgdD8i
Iit0Om51bGx9LGdldFVwZGF0ZUNvdW50OmZ1bmN0aW9uKGUpe3ZhciB0PWMoZSk7cmV0dXJuIHQ/
dC51cGRhdGVDb3VudDowfSxnZXRSb290SURzOmgsZ2V0UmVnaXN0ZXJlZElEczpwLHB1c2hOb25T
dGFuZGFyZFdhcm5pbmdTdGFjazpmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiI9PT10eXBlb2Yg
Y29uc29sZS5yZWFjdFN0YWNrKXt2YXIgbj1bXSxyPXYuY3VycmVudCxvPXImJnIuX2RlYnVnSUQ7
dHJ5e2ZvcihlJiZuLnB1c2goe25hbWU6bz9ULmdldERpc3BsYXlOYW1lKG8pOm51bGwsZmlsZU5h
bWU6dD90LmZpbGVOYW1lOm51bGwsbGluZU51bWJlcjp0P3QubGluZU51bWJlcjpudWxsfSk7bzsp
e3ZhciBpPVQuZ2V0RWxlbWVudChvKSxhPVQuZ2V0UGFyZW50SUQobyksdT1ULmdldE93bmVySUQo
bykscz11P1QuZ2V0RGlzcGxheU5hbWUodSk6bnVsbCxjPWkmJmkuX3NvdXJjZTtuLnB1c2goe25h
bWU6cyxmaWxlTmFtZTpjP2MuZmlsZU5hbWU6bnVsbCxsaW5lTnVtYmVyOmM/Yy5saW5lTnVtYmVy
Om51bGx9KSxvPWF9fWNhdGNoKGUpe31jb25zb2xlLnJlYWN0U3RhY2sobil9fSxwb3BOb25TdGFu
ZGFyZFdhcm5pbmdTdGFjazpmdW5jdGlvbigpeyJmdW5jdGlvbiI9PT10eXBlb2YgY29uc29sZS5y
ZWFjdFN0YWNrRW5kJiZjb25zb2xlLnJlYWN0U3RhY2tFbmQoKX19O2UuZXhwb3J0cz1UfSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNiksbz17bGlzdGVuOmZ1bmN0aW9uKGUs
dCxuKXtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyPyhlLmFkZEV2ZW50TGlzdGVuZXIodCxuLCEx
KSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwhMSl9fSk6ZS5h
dHRhY2hFdmVudD8oZS5hdHRhY2hFdmVudCgib24iK3Qsbikse3JlbW92ZTpmdW5jdGlvbigpe2Uu
ZGV0YWNoRXZlbnQoIm9uIit0LG4pfX0pOnZvaWQgMH0sY2FwdHVyZTpmdW5jdGlvbihlLHQsbil7
cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcj8oZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMCkse3Jl
bW92ZTpmdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4sITApfX0pOntyZW1vdmU6
cn19LHJlZ2lzdGVyRGVmYXVsdDpmdW5jdGlvbigpe319O2UuZXhwb3J0cz1vfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGkoZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LGUpfXZhciBvPW4oMTcxKSxpPW4oMTczKSxhPW4oNjgpLHU9big4MSkscz17aGFz
U2VsZWN0aW9uQ2FwYWJpbGl0aWVzOmZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdCYmKCJpbnB1dCI9PT10JiYidGV4dCI9PT1l
LnR5cGV8fCJ0ZXh0YXJlYSI9PT10fHwidHJ1ZSI9PT1lLmNvbnRlbnRFZGl0YWJsZSl9LGdldFNl
bGVjdGlvbkluZm9ybWF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dSgpO3JldHVybntmb2N1c2VkRWxl
bTplLHNlbGVjdGlvblJhbmdlOnMuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUpP3MuZ2V0U2Vs
ZWN0aW9uKGUpOm51bGx9fSxyZXN0b3JlU2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PXUoKSxu
PWUuZm9jdXNlZEVsZW0sbz1lLnNlbGVjdGlvblJhbmdlO3QhPT1uJiZyKG4pJiYocy5oYXNTZWxl
Y3Rpb25DYXBhYmlsaXRpZXMobikmJnMuc2V0U2VsZWN0aW9uKG4sbyksYShuKSl9LGdldFNlbGVj
dGlvbjpmdW5jdGlvbihlKXt2YXIgdDtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSl0PXtzdGFydDpl
LnNlbGVjdGlvblN0YXJ0LGVuZDplLnNlbGVjdGlvbkVuZH07ZWxzZSBpZihkb2N1bWVudC5zZWxl
Y3Rpb24mJmUubm9kZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3Zh
ciBuPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO24ucGFyZW50RWxlbWVudCgpPT09
ZSYmKHQ9e3N0YXJ0Oi1uLm1vdmVTdGFydCgiY2hhcmFjdGVyIiwtZS52YWx1ZS5sZW5ndGgpLGVu
ZDotbi5tb3ZlRW5kKCJjaGFyYWN0ZXIiLC1lLnZhbHVlLmxlbmd0aCl9KX1lbHNlIHQ9by5nZXRP
ZmZzZXRzKGUpO3JldHVybiB0fHx7c3RhcnQ6MCxlbmQ6MH19LHNldFNlbGVjdGlvbjpmdW5jdGlv
bihlLHQpe3ZhciBuPXQuc3RhcnQscj10LmVuZDtpZih2b2lkIDA9PT1yJiYocj1uKSwic2VsZWN0
aW9uU3RhcnQiaW4gZSllLnNlbGVjdGlvblN0YXJ0PW4sZS5zZWxlY3Rpb25FbmQ9TWF0aC5taW4o
cixlLnZhbHVlLmxlbmd0aCk7ZWxzZSBpZihkb2N1bWVudC5zZWxlY3Rpb24mJmUubm9kZU5hbWUm
JiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBpPWUuY3JlYXRlVGV4dFJh
bmdlKCk7aS5jb2xsYXBzZSghMCksaS5tb3ZlU3RhcnQoImNoYXJhY3RlciIsbiksaS5tb3ZlRW5k
KCJjaGFyYWN0ZXIiLHItbiksaS5zZWxlY3QoKX1lbHNlIG8uc2V0T2Zmc2V0cyhlLHQpfX07ZS5l
eHBvcnRzPXN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZigi
dW5kZWZpbmVkIj09PXR5cGVvZihlPWV8fCgidW5kZWZpbmVkIiE9PXR5cGVvZiBkb2N1bWVudD9k
b2N1bWVudDp2b2lkIDApKSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGUuYWN0aXZlRWxlbWVudHx8
ZS5ib2R5fWNhdGNoKHQpe3JldHVybiBlLmJvZHl9fWUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49TWF0aC5taW4oZS5sZW5n
dGgsdC5sZW5ndGgpLHI9MDtyPG47cisrKWlmKGUuY2hhckF0KHIpIT09dC5jaGFyQXQocikpcmV0
dXJuIHI7cmV0dXJuIGUubGVuZ3RoPT09dC5sZW5ndGg/LTE6bn1mdW5jdGlvbiBvKGUpe3JldHVy
biBlP2Uubm9kZVR5cGU9PT1BP2UuZG9jdW1lbnRFbGVtZW50OmUuZmlyc3RDaGlsZDpudWxsfWZ1
bmN0aW9uIGkoZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZShJKXx8IiJ9
ZnVuY3Rpb24gYShlLHQsbixyLG8pe3ZhciBpO2lmKEMubG9nVG9wTGV2ZWxSZW5kZXJzKXt2YXIg
YT1lLl9jdXJyZW50RWxlbWVudC5wcm9wcy5jaGlsZCx1PWEudHlwZTtpPSJSZWFjdCBtb3VudDog
IisoInN0cmluZyI9PT10eXBlb2YgdT91OnUuZGlzcGxheU5hbWV8fHUubmFtZSksY29uc29sZS50
aW1lKGkpfXZhciBzPXgubW91bnRDb21wb25lbnQoZSxuLG51bGwsYihlLHQpLG8sMCk7aSYmY29u
c29sZS50aW1lRW5kKGkpLGUuX3JlbmRlcmVkQ29tcG9uZW50Ll90b3BMZXZlbFdyYXBwZXI9ZSxG
Ll9tb3VudEltYWdlSW50b05vZGUocyx0LGUscixuKX1mdW5jdGlvbiB1KGUsdCxuLHIpe3ZhciBv
PVAuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoIW4mJl8udXNlQ3JlYXRlRWxl
bWVudCk7by5wZXJmb3JtKGEsbnVsbCxlLHQsbyxuLHIpLFAuUmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbi5yZWxlYXNlKG8pfWZ1bmN0aW9uIHMoZSx0LG4pe2Zvcih4LnVubW91bnRDb21wb25lbnQo
ZSxuKSx0Lm5vZGVUeXBlPT09QSYmKHQ9dC5kb2N1bWVudEVsZW1lbnQpO3QubGFzdENoaWxkOyl0
LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKX1mdW5jdGlvbiBjKGUpe3ZhciB0PW8oZSk7aWYodCl7
dmFyIG49Zy5nZXRJbnN0YW5jZUZyb21Ob2RlKHQpO3JldHVybiEoIW58fCFuLl9ob3N0UGFyZW50
KX19ZnVuY3Rpb24gbChlKXtyZXR1cm4hKCFlfHxlLm5vZGVUeXBlIT09UiYmZS5ub2RlVHlwZSE9
PUEmJmUubm9kZVR5cGUhPT1EKX1mdW5jdGlvbiBwKGUpe3ZhciB0PW8oZSksbj10JiZnLmdldElu
c3RhbmNlRnJvbU5vZGUodCk7cmV0dXJuIG4mJiFuLl9ob3N0UGFyZW50P246bnVsbH1mdW5jdGlv
biBmKGUpe3ZhciB0PXAoZSk7cmV0dXJuIHQ/dC5faG9zdENvbnRhaW5lckluZm8uX3RvcExldmVs
V3JhcHBlcjpudWxsfXZhciBkPW4oMiksaD1uKDE3KSxtPW4oMTUpLHY9bigxMykseT1uKDI4KSxn
PShuKDEwKSxuKDQpKSxiPW4oMTg4KSxfPW4oMTg5KSxDPW4oNjMpLHc9bigyMiksRT0obig3KSxu
KDE5MCkpLHg9bigxNiksVD1uKDQ1KSxQPW4oOCksTz1uKDIzKSxrPW4oNzMpLFM9KG4oMCksbigy
NikpLE49big0MyksST0obigxKSxtLklEX0FUVFJJQlVURV9OQU1FKSxNPW0uUk9PVF9BVFRSSUJV
VEVfTkFNRSxSPTEsQT05LEQ9MTEsaj17fSxVPTEsTD1mdW5jdGlvbigpe3RoaXMucm9vdElEPVUr
K307TC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxMLnByb3RvdHlwZS5yZW5kZXI9ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5jaGlsZH0sTC5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVy
PSEwO3ZhciBGPXtUb3BMZXZlbFdyYXBwZXI6TCxfaW5zdGFuY2VzQnlSZWFjdFJvb3RJRDpqLHNj
cm9sbE1vbml0b3I6ZnVuY3Rpb24oZSx0KXt0KCl9LF91cGRhdGVSb290Q29tcG9uZW50OmZ1bmN0
aW9uKGUsdCxuLHIsbyl7cmV0dXJuIEYuc2Nyb2xsTW9uaXRvcihyLGZ1bmN0aW9uKCl7VC5lbnF1
ZXVlRWxlbWVudEludGVybmFsKGUsdCxuKSxvJiZULmVucXVldWVDYWxsYmFja0ludGVybmFsKGUs
byl9KSxlfSxfcmVuZGVyTmV3Um9vdENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXtsKHQpfHxk
KCIzNyIpLHkuZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nKCk7dmFyIG89ayhlLCExKTtQLmJh
dGNoZWRVcGRhdGVzKHUsbyx0LG4scik7dmFyIGk9by5faW5zdGFuY2Uucm9vdElEO3JldHVybiBq
W2ldPW8sb30scmVuZGVyU3VidHJlZUludG9Db250YWluZXI6ZnVuY3Rpb24oZSx0LG4scil7cmV0
dXJuIG51bGwhPWUmJncuaGFzKGUpfHxkKCIzOCIpLEYuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFp
bmVyKGUsdCxuLHIpfSxfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6ZnVuY3Rpb24oZSx0LG4s
cil7VC52YWxpZGF0ZUNhbGxiYWNrKHIsIlJlYWN0RE9NLnJlbmRlciIpLHYuaXNWYWxpZEVsZW1l
bnQodCl8fGQoIjM5Iiwic3RyaW5nIj09PXR5cGVvZiB0PyIgSW5zdGVhZCBvZiBwYXNzaW5nIGEg
c3RyaW5nIGxpa2UgJ2RpdicsIHBhc3MgUmVhY3QuY3JlYXRlRWxlbWVudCgnZGl2Jykgb3IgPGRp
diAvPi4iOiJmdW5jdGlvbiI9PT10eXBlb2YgdD8iIEluc3RlYWQgb2YgcGFzc2luZyBhIGNsYXNz
IGxpa2UgRm9vLCBwYXNzIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9vKSBvciA8Rm9vIC8+LiI6bnVs
bCE9dCYmdm9pZCAwIT09dC5wcm9wcz8iIFRoaXMgbWF5IGJlIGNhdXNlZCBieSB1bmludGVudGlv
bmFsbHkgbG9hZGluZyB0d28gaW5kZXBlbmRlbnQgY29waWVzIG9mIFJlYWN0LiI6IiIpO3ZhciBh
LHU9di5jcmVhdGVFbGVtZW50KEwse2NoaWxkOnR9KTtpZihlKXt2YXIgcz13LmdldChlKTthPXMu
X3Byb2Nlc3NDaGlsZENvbnRleHQocy5fY29udGV4dCl9ZWxzZSBhPU87dmFyIGw9ZihuKTtpZihs
KXt2YXIgcD1sLl9jdXJyZW50RWxlbWVudCxoPXAucHJvcHMuY2hpbGQ7aWYoTihoLHQpKXt2YXIg
bT1sLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpLHk9ciYmZnVuY3Rpb24o
KXtyLmNhbGwobSl9O3JldHVybiBGLl91cGRhdGVSb290Q29tcG9uZW50KGwsdSxhLG4seSksbX1G
LnVubW91bnRDb21wb25lbnRBdE5vZGUobil9dmFyIGc9byhuKSxiPWcmJiEhaShnKSxfPWMobiks
Qz1iJiYhbCYmIV8sRT1GLl9yZW5kZXJOZXdSb290Q29tcG9uZW50KHUsbixDLGEpLl9yZW5kZXJl
ZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpO3JldHVybiByJiZyLmNhbGwoRSksRX0scmVu
ZGVyOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gRi5fcmVuZGVyU3VidHJlZUludG9Db250YWluZXIo
bnVsbCxlLHQsbil9LHVubW91bnRDb21wb25lbnRBdE5vZGU6ZnVuY3Rpb24oZSl7bChlKXx8ZCgi
NDAiKTt2YXIgdD1mKGUpO2lmKCF0KXtjKGUpLDE9PT1lLm5vZGVUeXBlJiZlLmhhc0F0dHJpYnV0
ZShNKTtyZXR1cm4hMX1yZXR1cm4gZGVsZXRlIGpbdC5faW5zdGFuY2Uucm9vdElEXSxQLmJhdGNo
ZWRVcGRhdGVzKHMsdCxlLCExKSwhMH0sX21vdW50SW1hZ2VJbnRvTm9kZTpmdW5jdGlvbihlLHQs
bixpLGEpe2lmKGwodCl8fGQoIjQxIiksaSl7dmFyIHU9byh0KTtpZihFLmNhblJldXNlTWFya3Vw
KGUsdSkpcmV0dXJuIHZvaWQgZy5wcmVjYWNoZU5vZGUobix1KTt2YXIgcz11LmdldEF0dHJpYnV0
ZShFLkNIRUNLU1VNX0FUVFJfTkFNRSk7dS5yZW1vdmVBdHRyaWJ1dGUoRS5DSEVDS1NVTV9BVFRS
X05BTUUpO3ZhciBjPXUub3V0ZXJIVE1MO3Uuc2V0QXR0cmlidXRlKEUuQ0hFQ0tTVU1fQVRUUl9O
QU1FLHMpO3ZhciBwPWUsZj1yKHAsYyksbT0iIChjbGllbnQpICIrcC5zdWJzdHJpbmcoZi0yMCxm
KzIwKSsiXG4gKHNlcnZlcikgIitjLnN1YnN0cmluZyhmLTIwLGYrMjApO3Qubm9kZVR5cGU9PT1B
JiZkKCI0MiIsbSl9aWYodC5ub2RlVHlwZT09PUEmJmQoIjQzIiksYS51c2VDcmVhdGVFbGVtZW50
KXtmb3IoO3QubGFzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKTtoLmluc2VydFRy
ZWVCZWZvcmUodCxlLG51bGwpfWVsc2UgUyh0LGUpLGcucHJlY2FjaGVOb2RlKG4sdC5maXJzdENo
aWxkKX19O2UuZXhwb3J0cz1GfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7Zm9yKHZhciB0Oyh0PWUuX3JlbmRlcmVkTm9kZVR5cGUpPT09by5DT01QT1NJVEU7KWU9
ZS5fcmVuZGVyZWRDb21wb25lbnQ7cmV0dXJuIHQ9PT1vLkhPU1Q/ZS5fcmVuZGVyZWRDb21wb25l
bnQ6dD09PW8uRU1QVFk/bnVsbDp2b2lkIDB9dmFyIG89big3NCk7ZS5leHBvcnRzPXJ9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7ZnVuY3Rpb24gaSgpe3k9
PT12JiYoeT12LnNsaWNlKCkpfWZ1bmN0aW9uIHMoKXtyZXR1cm4gbX1mdW5jdGlvbiBjKGUpe2lm
KCJmdW5jdGlvbiIhPT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGxpc3RlbmVy
IHRvIGJlIGEgZnVuY3Rpb24uIik7dmFyIHQ9ITA7cmV0dXJuIGkoKSx5LnB1c2goZSksZnVuY3Rp
b24oKXtpZih0KXt0PSExLGkoKTt2YXIgbj15LmluZGV4T2YoZSk7eS5zcGxpY2UobiwxKX19fWZ1
bmN0aW9uIGwoZSl7aWYoIU9iamVjdChvLmEpKGUpKXRocm93IG5ldyBFcnJvcigiQWN0aW9ucyBt
dXN0IGJlIHBsYWluIG9iamVjdHMuIFVzZSBjdXN0b20gbWlkZGxld2FyZSBmb3IgYXN5bmMgYWN0
aW9ucy4iKTtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBlLnR5cGUpdGhyb3cgbmV3IEVycm9yKCdB
Y3Rpb25zIG1heSBub3QgaGF2ZSBhbiB1bmRlZmluZWQgInR5cGUiIHByb3BlcnR5LiBIYXZlIHlv
dSBtaXNzcGVsbGVkIGEgY29uc3RhbnQ/Jyk7aWYoZyl0aHJvdyBuZXcgRXJyb3IoIlJlZHVjZXJz
IG1heSBub3QgZGlzcGF0Y2ggYWN0aW9ucy4iKTt0cnl7Zz0hMCxtPWgobSxlKX1maW5hbGx5e2c9
ITF9Zm9yKHZhciB0PXY9eSxuPTA7bjx0Lmxlbmd0aDtuKyspeygwLHRbbl0pKCl9cmV0dXJuIGV9
ZnVuY3Rpb24gcChlKXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCB0aGUgbmV4dFJlZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4iKTtoPWUsbCh7dHlwZTp1
LklOSVR9KX1mdW5jdGlvbiBmKCl7dmFyIGUsdD1jO3JldHVybiBlPXtzdWJzY3JpYmU6ZnVuY3Rp
b24oZSl7ZnVuY3Rpb24gbigpe2UubmV4dCYmZS5uZXh0KHMoKSl9aWYoIm9iamVjdCIhPT10eXBl
b2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCB0aGUgb2JzZXJ2ZXIgdG8gYmUgYW4g
b2JqZWN0LiIpO3JldHVybiBuKCkse3Vuc3Vic2NyaWJlOnQobil9fX0sZVthLmFdPWZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXN9LGV9dmFyIGQ7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiB0JiYidW5kZWZp
bmVkIj09PXR5cGVvZiBuJiYobj10LHQ9dm9pZCAwKSwidW5kZWZpbmVkIiE9PXR5cGVvZiBuKXtp
ZigiZnVuY3Rpb24iIT09dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0aGUgZW5o
YW5jZXIgdG8gYmUgYSBmdW5jdGlvbi4iKTtyZXR1cm4gbihyKShlLHQpfWlmKCJmdW5jdGlvbiIh
PT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRoZSByZWR1Y2VyIHRvIGJlIGEg
ZnVuY3Rpb24uIik7dmFyIGg9ZSxtPXQsdj1bXSx5PXYsZz0hMTtyZXR1cm4gbCh7dHlwZTp1LklO
SVR9KSxkPXtkaXNwYXRjaDpsLHN1YnNjcmliZTpjLGdldFN0YXRlOnMscmVwbGFjZVJlZHVjZXI6
cH0sZFthLmFdPWYsZH1uLmQodCwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gdX0pLHQuYj1yO3ZhciBv
PW4oNDgpLGk9bigyMDMpLGE9bi5uKGkpLHU9e0lOSVQ6IkBAcmVkdXgvSU5JVCJ9fSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTk2KSxvPXIuYS5TeW1ib2w7dC5hPW99LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0wO248
ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIDA9PT10Lmxlbmd0aD9mdW5jdGlvbihlKXty
ZXR1cm4gZX06MT09PXQubGVuZ3RoP3RbMF06dC5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4g
ZnVuY3Rpb24oKXtyZXR1cm4gZSh0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKX19KX10LmE9cn0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDIxMCksbz0obig5MSksbigyMTUp
KTtuLmQodCwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gci5hfSksbi5kKHQsImIiLGZ1bmN0aW9uKCl7
cmV0dXJuIG8uYX0pfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oMjExKSgpfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LCJiIixmdW5jdGlvbigpe3JldHVybiBpfSksbi5k
KHQsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIGF9KTt2YXIgcj1uKDg5KSxvPW4ubihyKSxpPW8uYS5z
aGFwZSh7dHJ5U3Vic2NyaWJlOm8uYS5mdW5jLmlzUmVxdWlyZWQsdHJ5VW5zdWJzY3JpYmU6by5h
LmZ1bmMuaXNSZXF1aXJlZCxub3RpZnlOZXN0ZWRTdWJzOm8uYS5mdW5jLmlzUmVxdWlyZWQsaXNT
dWJzY3JpYmVkOm8uYS5mdW5jLmlzUmVxdWlyZWR9KSxhPW8uYS5zaGFwZSh7c3Vic2NyaWJlOm8u
YS5mdW5jLmlzUmVxdWlyZWQsZGlzcGF0Y2g6by5hLmZ1bmMuaXNSZXF1aXJlZCxnZXRTdGF0ZTpv
LmEuZnVuYy5pc1JlcXVpcmVkfSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5v
dCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXtpZighZSl0aHJv
dyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBl
cigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9PXR5cGVvZiB0JiYi
ZnVuY3Rpb24iIT09dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGkoZSx0KXtpZigiZnVuY3Rpb24iIT09
dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24g
bXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90
b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUs
ZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5z
ZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1m
dW5jdGlvbiBhKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpdC5pbmRleE9mKHIpPj0wfHxP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0
dXJuIG59ZnVuY3Rpb24gdSgpe31mdW5jdGlvbiBzKGUsdCl7dmFyIG49e3J1bjpmdW5jdGlvbihy
KXt0cnl7dmFyIG89ZSh0LmdldFN0YXRlKCkscik7KG8hPT1uLnByb3BzfHxuLmVycm9yKSYmKG4u
c2hvdWxkQ29tcG9uZW50VXBkYXRlPSEwLG4ucHJvcHM9byxuLmVycm9yPW51bGwpfWNhdGNoKGUp
e24uc2hvdWxkQ29tcG9uZW50VXBkYXRlPSEwLG4uZXJyb3I9ZX19fTtyZXR1cm4gbn1mdW5jdGlv
biBjKGUpe3ZhciB0LG4sYz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sx
XT9hcmd1bWVudHNbMV06e30sbD1jLmdldERpc3BsYXlOYW1lLGY9dm9pZCAwPT09bD9mdW5jdGlv
bihlKXtyZXR1cm4iQ29ubmVjdEFkdmFuY2VkKCIrZSsiKSJ9OmwsXz1jLm1ldGhvZE5hbWUsQz12
b2lkIDA9PT1fPyJjb25uZWN0QWR2YW5jZWQiOl8sdz1jLnJlbmRlckNvdW50UHJvcCxFPXZvaWQg
MD09PXc/dm9pZCAwOncseD1jLnNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcyxUPXZvaWQgMD09PXh8
fHgsUD1jLnN0b3JlS2V5LE89dm9pZCAwPT09UD8ic3RvcmUiOlAsaz1jLndpdGhSZWYsUz12b2lk
IDAhPT1rJiZrLE49YShjLFsiZ2V0RGlzcGxheU5hbWUiLCJtZXRob2ROYW1lIiwicmVuZGVyQ291
bnRQcm9wIiwic2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzIiwic3RvcmVLZXkiLCJ3aXRoUmVmIl0p
LEk9TysiU3Vic2NyaXB0aW9uIixNPWcrKyxSPSh0PXt9LHRbT109di5hLHRbSV09di5iLHQpLEE9
KG49e30sbltJXT12LmIsbik7cmV0dXJuIGZ1bmN0aW9uKHQpe2QoKSgiZnVuY3Rpb24iPT10eXBl
b2YgdCwiWW91IG11c3QgcGFzcyBhIGNvbXBvbmVudCB0byB0aGUgZnVuY3Rpb24gcmV0dXJuZWQg
YnkgY29ubmVjdC4gSW5zdGVhZCByZWNlaXZlZCAiK0pTT04uc3RyaW5naWZ5KHQpKTt2YXIgbj10
LmRpc3BsYXlOYW1lfHx0Lm5hbWV8fCJDb21wb25lbnQiLGE9ZihuKSxjPXkoe30sTix7Z2V0RGlz
cGxheU5hbWU6ZixtZXRob2ROYW1lOkMscmVuZGVyQ291bnRQcm9wOkUsc2hvdWxkSGFuZGxlU3Rh
dGVDaGFuZ2VzOlQsc3RvcmVLZXk6Tyx3aXRoUmVmOlMsZGlzcGxheU5hbWU6YSx3cmFwcGVkQ29t
cG9uZW50TmFtZTpuLFdyYXBwZWRDb21wb25lbnQ6dH0pLGw9ZnVuY3Rpb24obil7ZnVuY3Rpb24g
bChlLHQpe3IodGhpcyxsKTt2YXIgaT1vKHRoaXMsbi5jYWxsKHRoaXMsZSx0KSk7cmV0dXJuIGku
dmVyc2lvbj1NLGkuc3RhdGU9e30saS5yZW5kZXJDb3VudD0wLGkuc3RvcmU9ZVtPXXx8dFtPXSxp
LnByb3BzTW9kZT1Cb29sZWFuKGVbT10pLGkuc2V0V3JhcHBlZEluc3RhbmNlPWkuc2V0V3JhcHBl
ZEluc3RhbmNlLmJpbmQoaSksZCgpKGkuc3RvcmUsJ0NvdWxkIG5vdCBmaW5kICInK08rJyIgaW4g
ZWl0aGVyIHRoZSBjb250ZXh0IG9yIHByb3BzIG9mICInK2ErJyIuIEVpdGhlciB3cmFwIHRoZSBy
b290IGNvbXBvbmVudCBpbiBhIDxQcm92aWRlcj4sIG9yIGV4cGxpY2l0bHkgcGFzcyAiJytPKyci
IGFzIGEgcHJvcCB0byAiJythKyciLicpLGkuaW5pdFNlbGVjdG9yKCksaS5pbml0U3Vic2NyaXB0
aW9uKCksaX1yZXR1cm4gaShsLG4pLGwucHJvdG90eXBlLmdldENoaWxkQ29udGV4dD1mdW5jdGlv
bigpe3ZhciBlLHQ9dGhpcy5wcm9wc01vZGU/bnVsbDp0aGlzLnN1YnNjcmlwdGlvbjtyZXR1cm4g
ZT17fSxlW0ldPXR8fHRoaXMuY29udGV4dFtJXSxlfSxsLnByb3RvdHlwZS5jb21wb25lbnREaWRN
b3VudD1mdW5jdGlvbigpe1QmJih0aGlzLnN1YnNjcmlwdGlvbi50cnlTdWJzY3JpYmUoKSx0aGlz
LnNlbGVjdG9yLnJ1bih0aGlzLnByb3BzKSx0aGlzLnNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVw
ZGF0ZSYmdGhpcy5mb3JjZVVwZGF0ZSgpKX0sbC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2Vp
dmVQcm9wcz1mdW5jdGlvbihlKXt0aGlzLnNlbGVjdG9yLnJ1bihlKX0sbC5wcm90b3R5cGUuc2hv
dWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0b3Iuc2hvdWxk
Q29tcG9uZW50VXBkYXRlfSxsLnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlv
bigpe3RoaXMuc3Vic2NyaXB0aW9uJiZ0aGlzLnN1YnNjcmlwdGlvbi50cnlVbnN1YnNjcmliZSgp
LHRoaXMuc3Vic2NyaXB0aW9uPW51bGwsdGhpcy5ub3RpZnlOZXN0ZWRTdWJzPXUsdGhpcy5zdG9y
ZT1udWxsLHRoaXMuc2VsZWN0b3IucnVuPXUsdGhpcy5zZWxlY3Rvci5zaG91bGRDb21wb25lbnRV
cGRhdGU9ITF9LGwucHJvdG90eXBlLmdldFdyYXBwZWRJbnN0YW5jZT1mdW5jdGlvbigpe3JldHVy
biBkKCkoUywiVG8gYWNjZXNzIHRoZSB3cmFwcGVkIGluc3RhbmNlLCB5b3UgbmVlZCB0byBzcGVj
aWZ5IHsgd2l0aFJlZjogdHJ1ZSB9IGluIHRoZSBvcHRpb25zIGFyZ3VtZW50IG9mIHRoZSAiK0Mr
IigpIGNhbGwuIiksdGhpcy53cmFwcGVkSW5zdGFuY2V9LGwucHJvdG90eXBlLnNldFdyYXBwZWRJ
bnN0YW5jZT1mdW5jdGlvbihlKXt0aGlzLndyYXBwZWRJbnN0YW5jZT1lfSxsLnByb3RvdHlwZS5p
bml0U2VsZWN0b3I9ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMuc3RvcmUuZGlzcGF0Y2gsYyk7dGhp
cy5zZWxlY3Rvcj1zKHQsdGhpcy5zdG9yZSksdGhpcy5zZWxlY3Rvci5ydW4odGhpcy5wcm9wcyl9
LGwucHJvdG90eXBlLmluaXRTdWJzY3JpcHRpb249ZnVuY3Rpb24oKXtpZihUKXt2YXIgZT0odGhp
cy5wcm9wc01vZGU/dGhpcy5wcm9wczp0aGlzLmNvbnRleHQpW0ldO3RoaXMuc3Vic2NyaXB0aW9u
PW5ldyBtLmEodGhpcy5zdG9yZSxlLHRoaXMub25TdGF0ZUNoYW5nZS5iaW5kKHRoaXMpKSx0aGlz
Lm5vdGlmeU5lc3RlZFN1YnM9dGhpcy5zdWJzY3JpcHRpb24ubm90aWZ5TmVzdGVkU3Vicy5iaW5k
KHRoaXMuc3Vic2NyaXB0aW9uKX19LGwucHJvdG90eXBlLm9uU3RhdGVDaGFuZ2U9ZnVuY3Rpb24o
KXt0aGlzLnNlbGVjdG9yLnJ1bih0aGlzLnByb3BzKSx0aGlzLnNlbGVjdG9yLnNob3VsZENvbXBv
bmVudFVwZGF0ZT8odGhpcy5jb21wb25lbnREaWRVcGRhdGU9dGhpcy5ub3RpZnlOZXN0ZWRTdWJz
T25Db21wb25lbnREaWRVcGRhdGUsdGhpcy5zZXRTdGF0ZShiKSk6dGhpcy5ub3RpZnlOZXN0ZWRT
dWJzKCl9LGwucHJvdG90eXBlLm5vdGlmeU5lc3RlZFN1YnNPbkNvbXBvbmVudERpZFVwZGF0ZT1m
dW5jdGlvbigpe3RoaXMuY29tcG9uZW50RGlkVXBkYXRlPXZvaWQgMCx0aGlzLm5vdGlmeU5lc3Rl
ZFN1YnMoKX0sbC5wcm90b3R5cGUuaXNTdWJzY3JpYmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xl
YW4odGhpcy5zdWJzY3JpcHRpb24pJiZ0aGlzLnN1YnNjcmlwdGlvbi5pc1N1YnNjcmliZWQoKX0s
bC5wcm90b3R5cGUuYWRkRXh0cmFQcm9wcz1mdW5jdGlvbihlKXtpZighUyYmIUUmJighdGhpcy5w
cm9wc01vZGV8fCF0aGlzLnN1YnNjcmlwdGlvbikpcmV0dXJuIGU7dmFyIHQ9eSh7fSxlKTtyZXR1
cm4gUyYmKHQucmVmPXRoaXMuc2V0V3JhcHBlZEluc3RhbmNlKSxFJiYodFtFXT10aGlzLnJlbmRl
ckNvdW50KyspLHRoaXMucHJvcHNNb2RlJiZ0aGlzLnN1YnNjcmlwdGlvbiYmKHRbSV09dGhpcy5z
dWJzY3JpcHRpb24pLHR9LGwucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMu
c2VsZWN0b3I7aWYoZS5zaG91bGRDb21wb25lbnRVcGRhdGU9ITEsZS5lcnJvcil0aHJvdyBlLmVy
cm9yO3JldHVybiBPYmplY3QoaC5jcmVhdGVFbGVtZW50KSh0LHRoaXMuYWRkRXh0cmFQcm9wcyhl
LnByb3BzKSl9LGx9KGguQ29tcG9uZW50KTtyZXR1cm4gbC5XcmFwcGVkQ29tcG9uZW50PXQsbC5k
aXNwbGF5TmFtZT1hLGwuY2hpbGRDb250ZXh0VHlwZXM9QSxsLmNvbnRleHRUeXBlcz1SLGwucHJv
cFR5cGVzPVIscCgpKGwsdCl9fXQuYT1jO3ZhciBsPW4oMjEyKSxwPW4ubihsKSxmPW4oMjEzKSxk
PW4ubihmKSxoPW4oOSksbT0obi5uKGgpLG4oMjE0KSksdj1uKDkwKSx5PU9iamVjdC5hc3NpZ258
fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFy
Z3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5
LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGc9MCxiPXt9fSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7ZnVuY3Rp
b24gcigpe3JldHVybiBvfXZhciBvPWUodCxuKTtyZXR1cm4gci5kZXBlbmRzT25Pd25Qcm9wcz0h
MSxyfX1mdW5jdGlvbiBvKGUpe3JldHVybiBudWxsIT09ZS5kZXBlbmRzT25Pd25Qcm9wcyYmdm9p
ZCAwIT09ZS5kZXBlbmRzT25Pd25Qcm9wcz9Cb29sZWFuKGUuZGVwZW5kc09uT3duUHJvcHMpOjEh
PT1lLmxlbmd0aH1mdW5jdGlvbiBpKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIHI9KG4u
ZGlzcGxheU5hbWUsZnVuY3Rpb24oZSx0KXtyZXR1cm4gci5kZXBlbmRzT25Pd25Qcm9wcz9yLm1h
cFRvUHJvcHMoZSx0KTpyLm1hcFRvUHJvcHMoZSl9KTtyZXR1cm4gci5kZXBlbmRzT25Pd25Qcm9w
cz0hMCxyLm1hcFRvUHJvcHM9ZnVuY3Rpb24odCxuKXtyLm1hcFRvUHJvcHM9ZSxyLmRlcGVuZHNP
bk93blByb3BzPW8oZSk7dmFyIGk9cih0LG4pO3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgaSYm
KHIubWFwVG9Qcm9wcz1pLHIuZGVwZW5kc09uT3duUHJvcHM9byhpKSxpPXIodCxuKSksaX0scn19
dC5hPXIsdC5iPWk7big5Myl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7big0OCksbig0
OSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBp
bnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMg
YSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJy
b3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNh
bGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9PXR5cGVvZiB0JiYiZnVuY3Rpb24iIT09dHlwZW9m
IHQ/ZTp0fWZ1bmN0aW9uIGkoZSx0KXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIHQmJm51bGwhPT10
KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVs
bCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0
ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0
YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmpl
Y3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX12YXIgYT1uKDkpLHU9bi5uKGEp
LHM9big1MCksYz1uLm4ocyksbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49
MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwh
MSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBu
JiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxwPWZ1bmN0aW9uKGUpe2Z1bmN0aW9u
IHQoKXt2YXIgZSxuLGksYTtyKHRoaXMsdCk7Zm9yKHZhciB1PWFyZ3VtZW50cy5sZW5ndGgscz1B
cnJheSh1KSxjPTA7Yzx1O2MrKylzW2NdPWFyZ3VtZW50c1tjXTtyZXR1cm4gbj1pPW8odGhpcywo
ZT10Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsLmFwcGx5KGUsW3Ro
aXNdLmNvbmNhdChzKSkpLGkuc3RhdGU9e3RleHQ6aS5wcm9wcy50ZXh0fHwiIn0saS5oYW5kbGVT
dWJtaXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQudmFsdWUudHJpbSgpOzEzPT09ZS53aGlj
aCYmKGkucHJvcHMub25TYXZlKHQpLGkucHJvcHMubmV3VG9kbyYmaS5zZXRTdGF0ZSh7dGV4dDoi
In0pKX0saS5oYW5kbGVDaGFuZ2U9ZnVuY3Rpb24oZSl7aS5zZXRTdGF0ZSh7dGV4dDplLnRhcmdl
dC52YWx1ZX0pfSxpLmhhbmRsZUJsdXI9ZnVuY3Rpb24oZSl7aS5wcm9wcy5uZXdUb2RvfHxpLnBy
b3BzLm9uU2F2ZShlLnRhcmdldC52YWx1ZSl9LGE9bixvKGksYSl9cmV0dXJuIGkodCxlKSxsKHQs
W3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdS5hLmNyZWF0ZUVsZW1lbnQo
ImlucHV0Iix7Y2xhc3NOYW1lOmMoKSh7ZWRpdDp0aGlzLnByb3BzLmVkaXRpbmcsIm5ldy10b2Rv
Ijp0aGlzLnByb3BzLm5ld1RvZG99KSx0eXBlOiJ0ZXh0IixwbGFjZWhvbGRlcjp0aGlzLnByb3Bz
LnBsYWNlaG9sZGVyLGF1dG9Gb2N1czoidHJ1ZSIsdmFsdWU6dGhpcy5zdGF0ZS50ZXh0LG9uQmx1
cjp0aGlzLmhhbmRsZUJsdXIsb25DaGFuZ2U6dGhpcy5oYW5kbGVDaGFuZ2Usb25LZXlEb3duOnRo
aXMuaGFuZGxlU3VibWl0fSl9fV0pLHR9KGEuQ29tcG9uZW50KTtwLnByb3BUeXBlcz17b25TYXZl
OmEuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCx0ZXh0OmEuUHJvcFR5cGVzLnN0cmluZyxwbGFj
ZWhvbGRlcjphLlByb3BUeXBlcy5zdHJpbmcsZWRpdGluZzphLlByb3BUeXBlcy5ib29sLG5ld1Rv
ZG86YS5Qcm9wVHlwZXMuYm9vbH0sdC5hPXB9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
bi5kKHQsImIiLGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSxuLmQodCwiYyIsZnVuY3Rpb24oKXtyZXR1
cm4gb30pLG4uZCh0LCJhIixmdW5jdGlvbigpe3JldHVybiBpfSk7dmFyIHI9InNob3dfYWxsIixv
PSJzaG93X2NvbXBsZXRlZCIsaT0ic2hvd19hY3RpdmUifSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO24uZCh0LCJhIixmdW5jdGlvbigpe3JldHVybiByfSksbi5kKHQsImUiLGZ1bmN0aW9u
KCl7cmV0dXJuIG99KSxuLmQodCwiZiIsZnVuY3Rpb24oKXtyZXR1cm4gaX0pLG4uZCh0LCJkIixm
dW5jdGlvbigpe3JldHVybiBhfSksbi5kKHQsImMiLGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSxuLmQo
dCwiYiIsZnVuY3Rpb24oKXtyZXR1cm4gc30pO3ZhciByPSJBRERfVE9ETyIsbz0iREVMRVRFX1RP
RE8iLGk9IkVESVRfVE9ETyIsYT0iQ09NUExFVEVfVE9ETyIsdT0iQ09NUExFVEVfQUxMIixzPSJD
TEVBUl9DT01QTEVURUQifSxmdW5jdGlvbihlLHQsbil7big5OCksZS5leHBvcnRzPW4oMTAzKX0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjsidW5kZWZpbmVkIj09PXR5cGVvZiBQcm9taXNl
JiYobig5OSkuZW5hYmxlKCksd2luZG93LlByb21pc2U9bigxMDEpKSxuKDEwMiksT2JqZWN0LmFz
c2lnbj1uKDMpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtjPSEx
LHUuXzQ3PW51bGwsdS5fNzE9bnVsbH1mdW5jdGlvbiBvKGUpe2Z1bmN0aW9uIHQodCl7KGUuYWxs
UmVqZWN0aW9uc3x8YShwW3RdLmVycm9yLGUud2hpdGVsaXN0fHxzKSkmJihwW3RdLmRpc3BsYXlJ
ZD1sKyssZS5vblVuaGFuZGxlZD8ocFt0XS5sb2dnZWQ9ITAsZS5vblVuaGFuZGxlZChwW3RdLmRp
c3BsYXlJZCxwW3RdLmVycm9yKSk6KHBbdF0ubG9nZ2VkPSEwLGkocFt0XS5kaXNwbGF5SWQscFt0
XS5lcnJvcikpKX1mdW5jdGlvbiBuKHQpe3BbdF0ubG9nZ2VkJiYoZS5vbkhhbmRsZWQ/ZS5vbkhh
bmRsZWQocFt0XS5kaXNwbGF5SWQscFt0XS5lcnJvcik6cFt0XS5vblVuaGFuZGxlZHx8KGNvbnNv
bGUud2FybigiUHJvbWlzZSBSZWplY3Rpb24gSGFuZGxlZCAoaWQ6ICIrcFt0XS5kaXNwbGF5SWQr
Iik6IiksY29uc29sZS53YXJuKCcgIFRoaXMgbWVhbnMgeW91IGNhbiBpZ25vcmUgYW55IHByZXZp
b3VzIG1lc3NhZ2VzIG9mIHRoZSBmb3JtICJQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWpl
Y3Rpb24iIHdpdGggaWQgJytwW3RdLmRpc3BsYXlJZCsiLiIpKSl9ZT1lfHx7fSxjJiZyKCksYz0h
MDt2YXIgbz0wLGw9MCxwPXt9O3UuXzQ3PWZ1bmN0aW9uKGUpezI9PT1lLl84MyYmcFtlLl81Nl0m
JihwW2UuXzU2XS5sb2dnZWQ/bihlLl81Nik6Y2xlYXJUaW1lb3V0KHBbZS5fNTZdLnRpbWVvdXQp
LGRlbGV0ZSBwW2UuXzU2XSl9LHUuXzcxPWZ1bmN0aW9uKGUsbil7MD09PWUuXzc1JiYoZS5fNTY9
bysrLHBbZS5fNTZdPXtkaXNwbGF5SWQ6bnVsbCxlcnJvcjpuLHRpbWVvdXQ6c2V0VGltZW91dCh0
LmJpbmQobnVsbCxlLl81NiksYShuLHMpPzEwMDoyZTMpLGxvZ2dlZDohMX0pfX1mdW5jdGlvbiBp
KGUsdCl7Y29uc29sZS53YXJuKCJQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb24g
KGlkOiAiK2UrIik6IiksKCh0JiYodC5zdGFja3x8dCkpKyIiKS5zcGxpdCgiXG4iKS5mb3JFYWNo
KGZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiICAiK2UpfSl9ZnVuY3Rpb24gYShlLHQpe3JldHVy
biB0LnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0fSl9dmFyIHU9big1MSks
cz1bUmVmZXJlbmNlRXJyb3IsVHlwZUVycm9yLFJhbmdlRXJyb3JdLGM9ITE7dC5kaXNhYmxlPXIs
dC5lbmFibGU9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7ZnVu
Y3Rpb24gbihlKXthLmxlbmd0aHx8KGkoKSx1PSEwKSxhW2EubGVuZ3RoXT1lfWZ1bmN0aW9uIHIo
KXtmb3IoO3M8YS5sZW5ndGg7KXt2YXIgZT1zO2lmKHMrPTEsYVtlXS5jYWxsKCkscz5jKXtmb3Io
dmFyIHQ9MCxuPWEubGVuZ3RoLXM7dDxuO3QrKylhW3RdPWFbdCtzXTthLmxlbmd0aC09cyxzPTB9
fWEubGVuZ3RoPTAscz0wLHU9ITF9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5j
dGlvbiB0KCl7Y2xlYXJUaW1lb3V0KG4pLGNsZWFySW50ZXJ2YWwociksZSgpfXZhciBuPXNldFRp
bWVvdXQodCwwKSxyPXNldEludGVydmFsKHQsNTApfX1lLmV4cG9ydHM9bjt2YXIgaSxhPVtdLHU9
ITEscz0wLGM9MTAyNCxsPSJ1bmRlZmluZWQiIT09dHlwZW9mIHQ/dDpzZWxmLHA9bC5NdXRhdGlv
bk9ic2VydmVyfHxsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7aT0iZnVuY3Rpb24iPT09dHlwZW9m
IHA/ZnVuY3Rpb24oZSl7dmFyIHQ9MSxuPW5ldyBwKGUpLHI9ZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoIiIpO3JldHVybiBuLm9ic2VydmUocix7Y2hhcmFjdGVyRGF0YTohMH0pLGZ1bmN0aW9uKCl7
dD0tdCxyLmRhdGE9dH19KHIpOm8ociksbi5yZXF1ZXN0Rmx1c2g9aSxuLm1ha2VSZXF1ZXN0Q2Fs
bEZyb21UaW1lcj1vfSkuY2FsbCh0LG4oMzApKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3ZhciB0PW5ldyBvKG8uXzQ0KTtyZXR1cm4gdC5fODM9MSx0Ll8xOD1l
LHR9dmFyIG89big1MSk7ZS5leHBvcnRzPW87dmFyIGk9cighMCksYT1yKCExKSx1PXIobnVsbCks
cz1yKHZvaWQgMCksYz1yKDApLGw9cigiIik7by5yZXNvbHZlPWZ1bmN0aW9uKGUpe2lmKGUgaW5z
dGFuY2VvZiBvKXJldHVybiBlO2lmKG51bGw9PT1lKXJldHVybiB1O2lmKHZvaWQgMD09PWUpcmV0
dXJuIHM7aWYoITA9PT1lKXJldHVybiBpO2lmKCExPT09ZSlyZXR1cm4gYTtpZigwPT09ZSlyZXR1
cm4gYztpZigiIj09PWUpcmV0dXJuIGw7aWYoIm9iamVjdCI9PT10eXBlb2YgZXx8ImZ1bmN0aW9u
Ij09PXR5cGVvZiBlKXRyeXt2YXIgdD1lLnRoZW47aWYoImZ1bmN0aW9uIj09PXR5cGVvZiB0KXJl
dHVybiBuZXcgbyh0LmJpbmQoZSkpfWNhdGNoKGUpe3JldHVybiBuZXcgbyhmdW5jdGlvbih0LG4p
e24oZSl9KX1yZXR1cm4gcihlKX0sby5hbGw9ZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkucHJvdG90
eXBlLnNsaWNlLmNhbGwoZSk7cmV0dXJuIG5ldyBvKGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gcihh
LHUpe2lmKHUmJigib2JqZWN0Ij09PXR5cGVvZiB1fHwiZnVuY3Rpb24iPT09dHlwZW9mIHUpKXtp
Zih1IGluc3RhbmNlb2YgbyYmdS50aGVuPT09by5wcm90b3R5cGUudGhlbil7Zm9yKDszPT09dS5f
ODM7KXU9dS5fMTg7cmV0dXJuIDE9PT11Ll84Mz9yKGEsdS5fMTgpOigyPT09dS5fODMmJm4odS5f
MTgpLHZvaWQgdS50aGVuKGZ1bmN0aW9uKGUpe3IoYSxlKX0sbikpfXZhciBzPXUudGhlbjtpZigi
ZnVuY3Rpb24iPT09dHlwZW9mIHMpe3JldHVybiB2b2lkIG5ldyBvKHMuYmluZCh1KSkudGhlbihm
dW5jdGlvbihlKXtyKGEsZSl9LG4pfX10W2FdPXUsMD09PS0taSYmZSh0KX1pZigwPT09dC5sZW5n
dGgpcmV0dXJuIGUoW10pO2Zvcih2YXIgaT10Lmxlbmd0aCxhPTA7YTx0Lmxlbmd0aDthKyspcihh
LHRbYV0pfSl9LG8ucmVqZWN0PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbyhmdW5jdGlvbih0LG4p
e24oZSl9KX0sby5yYWNlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbyhmdW5jdGlvbih0LG4pe2Uu
Zm9yRWFjaChmdW5jdGlvbihlKXtvLnJlc29sdmUoZSkudGhlbih0LG4pfSl9KX0sby5wcm90b3R5
cGUuY2F0Y2g9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudGhlbihudWxsLGUpfX0sZnVuY3Rpb24o
ZSx0KXshZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7aWYoInN0cmluZyIh
PT10eXBlb2YgZSYmKGU9U3RyaW5nKGUpKSwvW15hLXowLTlcLSMkJSYnKisuXF5fYHx+XS9pLnRl
c3QoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZp
ZWxkIG5hbWUiKTtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIG4oZSl7cmV0dXJuInN0
cmluZyIhPT10eXBlb2YgZSYmKGU9U3RyaW5nKGUpKSxlfWZ1bmN0aW9uIHIoZSl7dmFyIHQ9e25l
eHQ6ZnVuY3Rpb24oKXt2YXIgdD1lLnNoaWZ0KCk7cmV0dXJue2RvbmU6dm9pZCAwPT09dCx2YWx1
ZTp0fX19O3JldHVybiB5Lml0ZXJhYmxlJiYodFtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7
cmV0dXJuIHR9KSx0fWZ1bmN0aW9uIG8oZSl7dGhpcy5tYXA9e30sZSBpbnN0YW5jZW9mIG8/ZS5m
b3JFYWNoKGZ1bmN0aW9uKGUsdCl7dGhpcy5hcHBlbmQodCxlKX0sdGhpcyk6QXJyYXkuaXNBcnJh
eShlKT9lLmZvckVhY2goZnVuY3Rpb24oZSl7dGhpcy5hcHBlbmQoZVswXSxlWzFdKX0sdGhpcyk6
ZSYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkuZm9yRWFjaChmdW5jdGlvbih0KXt0aGlz
LmFwcGVuZCh0LGVbdF0pfSx0aGlzKX1mdW5jdGlvbiBpKGUpe2lmKGUuYm9keVVzZWQpcmV0dXJu
IFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoIkFscmVhZHkgcmVhZCIpKTtlLmJvZHlVc2Vk
PSEwfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQsbil7ZS5vbmxv
YWQ9ZnVuY3Rpb24oKXt0KGUucmVzdWx0KX0sZS5vbmVycm9yPWZ1bmN0aW9uKCl7bihlLmVycm9y
KX19KX1mdW5jdGlvbiB1KGUpe3ZhciB0PW5ldyBGaWxlUmVhZGVyLG49YSh0KTtyZXR1cm4gdC5y
ZWFkQXNBcnJheUJ1ZmZlcihlKSxufWZ1bmN0aW9uIHMoZSl7dmFyIHQ9bmV3IEZpbGVSZWFkZXIs
bj1hKHQpO3JldHVybiB0LnJlYWRBc1RleHQoZSksbn1mdW5jdGlvbiBjKGUpe2Zvcih2YXIgdD1u
ZXcgVWludDhBcnJheShlKSxuPW5ldyBBcnJheSh0Lmxlbmd0aCkscj0wO3I8dC5sZW5ndGg7cisr
KW5bcl09U3RyaW5nLmZyb21DaGFyQ29kZSh0W3JdKTtyZXR1cm4gbi5qb2luKCIiKX1mdW5jdGlv
biBsKGUpe2lmKGUuc2xpY2UpcmV0dXJuIGUuc2xpY2UoMCk7dmFyIHQ9bmV3IFVpbnQ4QXJyYXko
ZS5ieXRlTGVuZ3RoKTtyZXR1cm4gdC5zZXQobmV3IFVpbnQ4QXJyYXkoZSkpLHQuYnVmZmVyfWZ1
bmN0aW9uIHAoKXtyZXR1cm4gdGhpcy5ib2R5VXNlZD0hMSx0aGlzLl9pbml0Qm9keT1mdW5jdGlv
bihlKXtpZih0aGlzLl9ib2R5SW5pdD1lLGUpaWYoInN0cmluZyI9PT10eXBlb2YgZSl0aGlzLl9i
b2R5VGV4dD1lO2Vsc2UgaWYoeS5ibG9iJiZCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUp
KXRoaXMuX2JvZHlCbG9iPWU7ZWxzZSBpZih5LmZvcm1EYXRhJiZGb3JtRGF0YS5wcm90b3R5cGUu
aXNQcm90b3R5cGVPZihlKSl0aGlzLl9ib2R5Rm9ybURhdGE9ZTtlbHNlIGlmKHkuc2VhcmNoUGFy
YW1zJiZVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSkpdGhpcy5fYm9k
eVRleHQ9ZS50b1N0cmluZygpO2Vsc2UgaWYoeS5hcnJheUJ1ZmZlciYmeS5ibG9iJiZiKGUpKXRo
aXMuX2JvZHlBcnJheUJ1ZmZlcj1sKGUuYnVmZmVyKSx0aGlzLl9ib2R5SW5pdD1uZXcgQmxvYihb
dGhpcy5fYm9keUFycmF5QnVmZmVyXSk7ZWxzZXtpZigheS5hcnJheUJ1ZmZlcnx8IUFycmF5QnVm
ZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpJiYhXyhlKSl0aHJvdyBuZXcgRXJyb3IoInVu
c3VwcG9ydGVkIEJvZHlJbml0IHR5cGUiKTt0aGlzLl9ib2R5QXJyYXlCdWZmZXI9bChlKX1lbHNl
IHRoaXMuX2JvZHlUZXh0PSIiO3RoaXMuaGVhZGVycy5nZXQoImNvbnRlbnQtdHlwZSIpfHwoInN0
cmluZyI9PT10eXBlb2YgZT90aGlzLmhlYWRlcnMuc2V0KCJjb250ZW50LXR5cGUiLCJ0ZXh0L3Bs
YWluO2NoYXJzZXQ9VVRGLTgiKTp0aGlzLl9ib2R5QmxvYiYmdGhpcy5fYm9keUJsb2IudHlwZT90
aGlzLmhlYWRlcnMuc2V0KCJjb250ZW50LXR5cGUiLHRoaXMuX2JvZHlCbG9iLnR5cGUpOnkuc2Vh
cmNoUGFyYW1zJiZVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSkmJnRo
aXMuaGVhZGVycy5zZXQoImNvbnRlbnQtdHlwZSIsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJs
ZW5jb2RlZDtjaGFyc2V0PVVURi04IikpfSx5LmJsb2ImJih0aGlzLmJsb2I9ZnVuY3Rpb24oKXt2
YXIgZT1pKHRoaXMpO2lmKGUpcmV0dXJuIGU7aWYodGhpcy5fYm9keUJsb2IpcmV0dXJuIFByb21p
c2UucmVzb2x2ZSh0aGlzLl9ib2R5QmxvYik7aWYodGhpcy5fYm9keUFycmF5QnVmZmVyKXJldHVy
biBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pKTtpZih0
aGlzLl9ib2R5Rm9ybURhdGEpdGhyb3cgbmV3IEVycm9yKCJjb3VsZCBub3QgcmVhZCBGb3JtRGF0
YSBib2R5IGFzIGJsb2IiKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9i
b2R5VGV4dF0pKX0sdGhpcy5hcnJheUJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ib2R5
QXJyYXlCdWZmZXI/aSh0aGlzKXx8UHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlBcnJheUJ1ZmZl
cik6dGhpcy5ibG9iKCkudGhlbih1KX0pLHRoaXMudGV4dD1mdW5jdGlvbigpe3ZhciBlPWkodGhp
cyk7aWYoZSlyZXR1cm4gZTtpZih0aGlzLl9ib2R5QmxvYilyZXR1cm4gcyh0aGlzLl9ib2R5Qmxv
Yik7aWYodGhpcy5fYm9keUFycmF5QnVmZmVyKXJldHVybiBQcm9taXNlLnJlc29sdmUoYyh0aGlz
Ll9ib2R5QXJyYXlCdWZmZXIpKTtpZih0aGlzLl9ib2R5Rm9ybURhdGEpdGhyb3cgbmV3IEVycm9y
KCJjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIHRleHQiKTtyZXR1cm4gUHJvbWlzZS5y
ZXNvbHZlKHRoaXMuX2JvZHlUZXh0KX0seS5mb3JtRGF0YSYmKHRoaXMuZm9ybURhdGE9ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy50ZXh0KCkudGhlbihoKX0pLHRoaXMuanNvbj1mdW5jdGlvbigpe3Jl
dHVybiB0aGlzLnRleHQoKS50aGVuKEpTT04ucGFyc2UpfSx0aGlzfWZ1bmN0aW9uIGYoZSl7dmFy
IHQ9ZS50b1VwcGVyQ2FzZSgpO3JldHVybiBDLmluZGV4T2YodCk+LTE/dDplfWZ1bmN0aW9uIGQo
ZSx0KXt0PXR8fHt9O3ZhciBuPXQuYm9keTtpZihlIGluc3RhbmNlb2YgZCl7aWYoZS5ib2R5VXNl
ZCl0aHJvdyBuZXcgVHlwZUVycm9yKCJBbHJlYWR5IHJlYWQiKTt0aGlzLnVybD1lLnVybCx0aGlz
LmNyZWRlbnRpYWxzPWUuY3JlZGVudGlhbHMsdC5oZWFkZXJzfHwodGhpcy5oZWFkZXJzPW5ldyBv
KGUuaGVhZGVycykpLHRoaXMubWV0aG9kPWUubWV0aG9kLHRoaXMubW9kZT1lLm1vZGUsbnx8bnVs
bD09ZS5fYm9keUluaXR8fChuPWUuX2JvZHlJbml0LGUuYm9keVVzZWQ9ITApfWVsc2UgdGhpcy51
cmw9U3RyaW5nKGUpO2lmKHRoaXMuY3JlZGVudGlhbHM9dC5jcmVkZW50aWFsc3x8dGhpcy5jcmVk
ZW50aWFsc3x8Im9taXQiLCF0LmhlYWRlcnMmJnRoaXMuaGVhZGVyc3x8KHRoaXMuaGVhZGVycz1u
ZXcgbyh0LmhlYWRlcnMpKSx0aGlzLm1ldGhvZD1mKHQubWV0aG9kfHx0aGlzLm1ldGhvZHx8IkdF
VCIpLHRoaXMubW9kZT10Lm1vZGV8fHRoaXMubW9kZXx8bnVsbCx0aGlzLnJlZmVycmVyPW51bGws
KCJHRVQiPT09dGhpcy5tZXRob2R8fCJIRUFEIj09PXRoaXMubWV0aG9kKSYmbil0aHJvdyBuZXcg
VHlwZUVycm9yKCJCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0cyIpO3Ro
aXMuX2luaXRCb2R5KG4pfWZ1bmN0aW9uIGgoZSl7dmFyIHQ9bmV3IEZvcm1EYXRhO3JldHVybiBl
LnRyaW0oKS5zcGxpdCgiJiIpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZSl7dmFyIG49ZS5zcGxp
dCgiPSIpLHI9bi5zaGlmdCgpLnJlcGxhY2UoL1wrL2csIiAiKSxvPW4uam9pbigiPSIpLnJlcGxh
Y2UoL1wrL2csIiAiKTt0LmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQociksZGVjb2RlVVJJQ29t
cG9uZW50KG8pKX19KSx0fWZ1bmN0aW9uIG0oZSl7dmFyIHQ9bmV3IG87cmV0dXJuIGUuc3BsaXQo
L1xyP1xuLykuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgbj1lLnNwbGl0KCI6Iikscj1uLnNoaWZ0
KCkudHJpbSgpO2lmKHIpe3ZhciBvPW4uam9pbigiOiIpLnRyaW0oKTt0LmFwcGVuZChyLG8pfX0p
LHR9ZnVuY3Rpb24gdihlLHQpe3R8fCh0PXt9KSx0aGlzLnR5cGU9ImRlZmF1bHQiLHRoaXMuc3Rh
dHVzPSJzdGF0dXMiaW4gdD90LnN0YXR1czoyMDAsdGhpcy5vaz10aGlzLnN0YXR1cz49MjAwJiZ0
aGlzLnN0YXR1czwzMDAsdGhpcy5zdGF0dXNUZXh0PSJzdGF0dXNUZXh0ImluIHQ/dC5zdGF0dXNU
ZXh0OiJPSyIsdGhpcy5oZWFkZXJzPW5ldyBvKHQuaGVhZGVycyksdGhpcy51cmw9dC51cmx8fCIi
LHRoaXMuX2luaXRCb2R5KGUpfWlmKCFlLmZldGNoKXt2YXIgeT17c2VhcmNoUGFyYW1zOiJVUkxT
ZWFyY2hQYXJhbXMiaW4gZSxpdGVyYWJsZToiU3ltYm9sImluIGUmJiJpdGVyYXRvciJpbiBTeW1i
b2wsYmxvYjoiRmlsZVJlYWRlciJpbiBlJiYiQmxvYiJpbiBlJiZmdW5jdGlvbigpe3RyeXtyZXR1
cm4gbmV3IEJsb2IsITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZvcm1EYXRhOiJGb3JtRGF0YSJp
biBlLGFycmF5QnVmZmVyOiJBcnJheUJ1ZmZlciJpbiBlfTtpZih5LmFycmF5QnVmZmVyKXZhciBn
PVsiW29iamVjdCBJbnQ4QXJyYXldIiwiW29iamVjdCBVaW50OEFycmF5XSIsIltvYmplY3QgVWlu
dDhDbGFtcGVkQXJyYXldIiwiW29iamVjdCBJbnQxNkFycmF5XSIsIltvYmplY3QgVWludDE2QXJy
YXldIiwiW29iamVjdCBJbnQzMkFycmF5XSIsIltvYmplY3QgVWludDMyQXJyYXldIiwiW29iamVj
dCBGbG9hdDMyQXJyYXldIiwiW29iamVjdCBGbG9hdDY0QXJyYXldIl0sYj1mdW5jdGlvbihlKXty
ZXR1cm4gZSYmRGF0YVZpZXcucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSl9LF89QXJyYXlCdWZm
ZXIuaXNWaWV3fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZy5pbmRleE9mKE9iamVjdC5wcm90b3R5
cGUudG9TdHJpbmcuY2FsbChlKSk+LTF9O28ucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbihlLHIp
e2U9dChlKSxyPW4ocik7dmFyIG89dGhpcy5tYXBbZV07dGhpcy5tYXBbZV09bz9vKyIsIityOnJ9
LG8ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXtkZWxldGUgdGhpcy5tYXBbdChlKV19LG8u
cHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gZT10KGUpLHRoaXMuaGFzKGUpP3RoaXMu
bWFwW2VdOm51bGx9LG8ucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5tYXAu
aGFzT3duUHJvcGVydHkodChlKSl9LG8ucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHIpe3RoaXMu
bWFwW3QoZSldPW4ocil9LG8ucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oZSx0KXtmb3IodmFy
IG4gaW4gdGhpcy5tYXApdGhpcy5tYXAuaGFzT3duUHJvcGVydHkobikmJmUuY2FsbCh0LHRoaXMu
bWFwW25dLG4sdGhpcyl9LG8ucHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1
cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7ZS5wdXNoKG4pfSkscihlKX0sby5wcm90b3R5
cGUudmFsdWVzPWZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlv
bih0KXtlLnB1c2godCl9KSxyKGUpfSxvLnByb3RvdHlwZS5lbnRyaWVzPWZ1bmN0aW9uKCl7dmFy
IGU9W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbih0LG4pe2UucHVzaChbbix0XSl9KSxy
KGUpfSx5Lml0ZXJhYmxlJiYoby5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1vLnByb3RvdHlw
ZS5lbnRyaWVzKTt2YXIgQz1bIkRFTEVURSIsIkdFVCIsIkhFQUQiLCJPUFRJT05TIiwiUE9TVCIs
IlBVVCJdO2QucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBkKHRoaXMse2Jv
ZHk6dGhpcy5fYm9keUluaXR9KX0scC5jYWxsKGQucHJvdG90eXBlKSxwLmNhbGwodi5wcm90b3R5
cGUpLHYucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB2KHRoaXMuX2JvZHlJ
bml0LHtzdGF0dXM6dGhpcy5zdGF0dXMsc3RhdHVzVGV4dDp0aGlzLnN0YXR1c1RleHQsaGVhZGVy
czpuZXcgbyh0aGlzLmhlYWRlcnMpLHVybDp0aGlzLnVybH0pfSx2LmVycm9yPWZ1bmN0aW9uKCl7
dmFyIGU9bmV3IHYobnVsbCx7c3RhdHVzOjAsc3RhdHVzVGV4dDoiIn0pO3JldHVybiBlLnR5cGU9
ImVycm9yIixlfTt2YXIgdz1bMzAxLDMwMiwzMDMsMzA3LDMwOF07di5yZWRpcmVjdD1mdW5jdGlv
bihlLHQpe2lmKC0xPT09dy5pbmRleE9mKHQpKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlk
IHN0YXR1cyBjb2RlIik7cmV0dXJuIG5ldyB2KG51bGwse3N0YXR1czp0LGhlYWRlcnM6e2xvY2F0
aW9uOmV9fSl9LGUuSGVhZGVycz1vLGUuUmVxdWVzdD1kLGUuUmVzcG9uc2U9dixlLmZldGNoPWZ1
bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG4scil7dmFyIG89bmV3IGQo
ZSx0KSxpPW5ldyBYTUxIdHRwUmVxdWVzdDtpLm9ubG9hZD1mdW5jdGlvbigpe3ZhciBlPXtzdGF0
dXM6aS5zdGF0dXMsc3RhdHVzVGV4dDppLnN0YXR1c1RleHQsaGVhZGVyczptKGkuZ2V0QWxsUmVz
cG9uc2VIZWFkZXJzKCl8fCIiKX07ZS51cmw9InJlc3BvbnNlVVJMImluIGk/aS5yZXNwb25zZVVS
TDplLmhlYWRlcnMuZ2V0KCJYLVJlcXVlc3QtVVJMIik7dmFyIHQ9InJlc3BvbnNlImluIGk/aS5y
ZXNwb25zZTppLnJlc3BvbnNlVGV4dDtuKG5ldyB2KHQsZSkpfSxpLm9uZXJyb3I9ZnVuY3Rpb24o
KXtyKG5ldyBUeXBlRXJyb3IoIk5ldHdvcmsgcmVxdWVzdCBmYWlsZWQiKSl9LGkub250aW1lb3V0
PWZ1bmN0aW9uKCl7cihuZXcgVHlwZUVycm9yKCJOZXR3b3JrIHJlcXVlc3QgZmFpbGVkIikpfSxp
Lm9wZW4oby5tZXRob2Qsby51cmwsITApLCJpbmNsdWRlIj09PW8uY3JlZGVudGlhbHMmJihpLndp
dGhDcmVkZW50aWFscz0hMCksInJlc3BvbnNlVHlwZSJpbiBpJiZ5LmJsb2ImJihpLnJlc3BvbnNl
VHlwZT0iYmxvYiIpLG8uaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7aS5zZXRSZXF1ZXN0
SGVhZGVyKHQsZSl9KSxpLnNlbmQoInVuZGVmaW5lZCI9PT10eXBlb2Ygby5fYm9keUluaXQ/bnVs
bDpvLl9ib2R5SW5pdCl9KX0sZS5mZXRjaC5wb2x5ZmlsbD0hMH19KCJ1bmRlZmluZWQiIT09dHlw
ZW9mIHNlbGY/c2VsZjp0aGlzKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9big5KSxvPW4u
bihyKSxpPW4oMTE4KSxhPShuLm4oaSksbigyOSkpLHU9big4OCkscz1uKDIyMiksYz1uKDIyOCks
bD1uKDIzMCkscD0obi5uKGwpLE9iamVjdChhLmMpKGMuYSkpO09iamVjdChpLnJlbmRlcikoby5h
LmNyZWF0ZUVsZW1lbnQodS5hLHtzdG9yZTpwfSxvLmEuY3JlYXRlRWxlbWVudChzLmEsbnVsbCkp
LGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyb290IikpfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPWZ1bmN0aW9uKCl7fTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybigiIitlKS5yZXBsYWNlKF8sIiQmLyIpfWZ1
bmN0aW9uIG8oZSx0KXt0aGlzLmZ1bmM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLmNvdW50PTB9ZnVu
Y3Rpb24gaShlLHQsbil7dmFyIHI9ZS5mdW5jLG89ZS5jb250ZXh0O3IuY2FsbChvLHQsZS5jb3Vu
dCsrKX1mdW5jdGlvbiBhKGUsdCxuKXtpZihudWxsPT1lKXJldHVybiBlO3ZhciByPW8uZ2V0UG9v
bGVkKHQsbik7eShlLGksciksby5yZWxlYXNlKHIpfWZ1bmN0aW9uIHUoZSx0LG4scil7dGhpcy5y
ZXN1bHQ9ZSx0aGlzLmtleVByZWZpeD10LHRoaXMuZnVuYz1uLHRoaXMuY29udGV4dD1yLHRoaXMu
Y291bnQ9MH1mdW5jdGlvbiBzKGUsdCxuKXt2YXIgbz1lLnJlc3VsdCxpPWUua2V5UHJlZml4LGE9
ZS5mdW5jLHU9ZS5jb250ZXh0LHM9YS5jYWxsKHUsdCxlLmNvdW50KyspO0FycmF5LmlzQXJyYXko
cyk/YyhzLG8sbix2LnRoYXRSZXR1cm5zQXJndW1lbnQpOm51bGwhPXMmJihtLmlzVmFsaWRFbGVt
ZW50KHMpJiYocz1tLmNsb25lQW5kUmVwbGFjZUtleShzLGkrKCFzLmtleXx8dCYmdC5rZXk9PT1z
LmtleT8iIjpyKHMua2V5KSsiLyIpK24pKSxvLnB1c2gocykpfWZ1bmN0aW9uIGMoZSx0LG4sbyxp
KXt2YXIgYT0iIjtudWxsIT1uJiYoYT1yKG4pKyIvIik7dmFyIGM9dS5nZXRQb29sZWQodCxhLG8s
aSk7eShlLHMsYyksdS5yZWxlYXNlKGMpfWZ1bmN0aW9uIGwoZSx0LG4pe2lmKG51bGw9PWUpcmV0
dXJuIGU7dmFyIHI9W107cmV0dXJuIGMoZSxyLG51bGwsdCxuKSxyfWZ1bmN0aW9uIHAoZSx0LG4p
e3JldHVybiBudWxsfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4geShlLHAsbnVsbCl9ZnVuY3Rpb24g
ZChlKXt2YXIgdD1bXTtyZXR1cm4gYyhlLHQsbnVsbCx2LnRoYXRSZXR1cm5zQXJndW1lbnQpLHR9
dmFyIGg9bigxMDYpLG09bigxNCksdj1uKDYpLHk9bigxMDcpLGc9aC50d29Bcmd1bWVudFBvb2xl
cixiPWguZm91ckFyZ3VtZW50UG9vbGVyLF89L1wvKy9nO28ucHJvdG90eXBlLmRlc3RydWN0b3I9
ZnVuY3Rpb24oKXt0aGlzLmZ1bmM9bnVsbCx0aGlzLmNvbnRleHQ9bnVsbCx0aGlzLmNvdW50PTB9
LGguYWRkUG9vbGluZ1RvKG8sZyksdS5wcm90b3R5cGUuZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3Ro
aXMucmVzdWx0PW51bGwsdGhpcy5rZXlQcmVmaXg9bnVsbCx0aGlzLmZ1bmM9bnVsbCx0aGlzLmNv
bnRleHQ9bnVsbCx0aGlzLmNvdW50PTB9LGguYWRkUG9vbGluZ1RvKHUsYik7dmFyIEM9e2ZvckVh
Y2g6YSxtYXA6bCxtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsOmMsY291bnQ6Zix0b0FycmF5
OmR9O2UuZXhwb3J0cz1DfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTgp
LG89KG4oMCksZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZih0Lmluc3RhbmNlUG9vbC5sZW5ndGgp
e3ZhciBuPXQuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiB0LmNhbGwobixlKSxufXJldHVybiBu
ZXcgdChlKX0pLGk9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2lmKG4uaW5zdGFuY2VQb29sLmxl
bmd0aCl7dmFyIHI9bi5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIG4uY2FsbChyLGUsdCkscn1y
ZXR1cm4gbmV3IG4oZSx0KX0sYT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztpZihyLmluc3Rh
bmNlUG9vbC5sZW5ndGgpe3ZhciBvPXIuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiByLmNhbGwo
byxlLHQsbiksb31yZXR1cm4gbmV3IHIoZSx0LG4pfSx1PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBv
PXRoaXM7aWYoby5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgaT1vLmluc3RhbmNlUG9vbC5wb3Ao
KTtyZXR1cm4gby5jYWxsKGksZSx0LG4sciksaX1yZXR1cm4gbmV3IG8oZSx0LG4scil9LHM9ZnVu
Y3Rpb24oZSl7dmFyIHQ9dGhpcztlIGluc3RhbmNlb2YgdHx8cigiMjUiKSxlLmRlc3RydWN0b3Io
KSx0Lmluc3RhbmNlUG9vbC5sZW5ndGg8dC5wb29sU2l6ZSYmdC5pbnN0YW5jZVBvb2wucHVzaChl
KX0sYz1vLGw9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lO3JldHVybiBuLmluc3RhbmNlUG9vbD1bXSxu
LmdldFBvb2xlZD10fHxjLG4ucG9vbFNpemV8fChuLnBvb2xTaXplPTEwKSxuLnJlbGVhc2U9cyxu
fSxwPXthZGRQb29saW5nVG86bCxvbmVBcmd1bWVudFBvb2xlcjpvLHR3b0FyZ3VtZW50UG9vbGVy
OmksdGhyZWVBcmd1bWVudFBvb2xlcjphLGZvdXJBcmd1bWVudFBvb2xlcjp1fTtlLmV4cG9ydHM9
cH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGUm
JiJvYmplY3QiPT09dHlwZW9mIGUmJm51bGwhPWUua2V5P2MuZXNjYXBlKGUua2V5KTp0LnRvU3Ry
aW5nKDM2KX1mdW5jdGlvbiBvKGUsdCxuLGkpe3ZhciBmPXR5cGVvZiBlO2lmKCJ1bmRlZmluZWQi
IT09ZiYmImJvb2xlYW4iIT09Znx8KGU9bnVsbCksbnVsbD09PWV8fCJzdHJpbmciPT09Znx8Im51
bWJlciI9PT1mfHwib2JqZWN0Ij09PWYmJmUuJCR0eXBlb2Y9PT11KXJldHVybiBuKGksZSwiIj09
PXQ/bCtyKGUsMCk6dCksMTt2YXIgZCxoLG09MCx2PSIiPT09dD9sOnQrcDtpZihBcnJheS5pc0Fy
cmF5KGUpKWZvcih2YXIgeT0wO3k8ZS5sZW5ndGg7eSsrKWQ9ZVt5XSxoPXYrcihkLHkpLG0rPW8o
ZCxoLG4saSk7ZWxzZXt2YXIgZz1zKGUpO2lmKGcpe3ZhciBiLF89Zy5jYWxsKGUpO2lmKGchPT1l
LmVudHJpZXMpZm9yKHZhciBDPTA7IShiPV8ubmV4dCgpKS5kb25lOylkPWIudmFsdWUsaD12K3Io
ZCxDKyspLG0rPW8oZCxoLG4saSk7ZWxzZSBmb3IoOyEoYj1fLm5leHQoKSkuZG9uZTspe3ZhciB3
PWIudmFsdWU7dyYmKGQ9d1sxXSxoPXYrYy5lc2NhcGUod1swXSkrcCtyKGQsMCksbSs9byhkLGgs
bixpKSl9fWVsc2UgaWYoIm9iamVjdCI9PT1mKXt2YXIgRT0iIix4PVN0cmluZyhlKTthKCIzMSIs
IltvYmplY3QgT2JqZWN0XSI9PT14PyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKGUp
LmpvaW4oIiwgIikrIn0iOngsRSl9fXJldHVybiBtfWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybiBu
dWxsPT1lPzA6byhlLCIiLHQsbil9dmFyIGE9bigxOCksdT0obigxMCksbig1NSkpLHM9bigxMDgp
LGM9KG4oMCksbigxMDkpKSxsPShuKDEpLCIuIikscD0iOiI7ZS5leHBvcnRzPWl9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lJiYobyYmZVtvXXx8ZVtp
XSk7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiB0KXJldHVybiB0fXZhciBvPSJmdW5jdGlvbiI9PT10
eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsaT0iQEBpdGVyYXRvciI7ZS5leHBvcnRzPXJ9
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD17Ij0iOiI9
MCIsIjoiOiI9MiJ9O3JldHVybiIkIisoIiIrZSkucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGUp
e3JldHVybiB0W2VdfSl9ZnVuY3Rpb24gbyhlKXt2YXIgdD0vKD0wfD0yKS9nLG49eyI9MCI6Ij0i
LCI9MiI6IjoifTtyZXR1cm4oIiIrKCIuIj09PWVbMF0mJiIkIj09PWVbMV0/ZS5zdWJzdHJpbmco
Mik6ZS5zdWJzdHJpbmcoMSkpKS5yZXBsYWNlKHQsZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19KX12
YXIgaT17ZXNjYXBlOnIsdW5lc2NhcGU6b307ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9bigxNCksbz1yLmNyZWF0ZUZhY3RvcnksaT17YTpvKCJhIiksYWJi
cjpvKCJhYmJyIiksYWRkcmVzczpvKCJhZGRyZXNzIiksYXJlYTpvKCJhcmVhIiksYXJ0aWNsZTpv
KCJhcnRpY2xlIiksYXNpZGU6bygiYXNpZGUiKSxhdWRpbzpvKCJhdWRpbyIpLGI6bygiYiIpLGJh
c2U6bygiYmFzZSIpLGJkaTpvKCJiZGkiKSxiZG86bygiYmRvIiksYmlnOm8oImJpZyIpLGJsb2Nr
cXVvdGU6bygiYmxvY2txdW90ZSIpLGJvZHk6bygiYm9keSIpLGJyOm8oImJyIiksYnV0dG9uOm8o
ImJ1dHRvbiIpLGNhbnZhczpvKCJjYW52YXMiKSxjYXB0aW9uOm8oImNhcHRpb24iKSxjaXRlOm8o
ImNpdGUiKSxjb2RlOm8oImNvZGUiKSxjb2w6bygiY29sIiksY29sZ3JvdXA6bygiY29sZ3JvdXAi
KSxkYXRhOm8oImRhdGEiKSxkYXRhbGlzdDpvKCJkYXRhbGlzdCIpLGRkOm8oImRkIiksZGVsOm8o
ImRlbCIpLGRldGFpbHM6bygiZGV0YWlscyIpLGRmbjpvKCJkZm4iKSxkaWFsb2c6bygiZGlhbG9n
IiksZGl2Om8oImRpdiIpLGRsOm8oImRsIiksZHQ6bygiZHQiKSxlbTpvKCJlbSIpLGVtYmVkOm8o
ImVtYmVkIiksZmllbGRzZXQ6bygiZmllbGRzZXQiKSxmaWdjYXB0aW9uOm8oImZpZ2NhcHRpb24i
KSxmaWd1cmU6bygiZmlndXJlIiksZm9vdGVyOm8oImZvb3RlciIpLGZvcm06bygiZm9ybSIpLGgx
Om8oImgxIiksaDI6bygiaDIiKSxoMzpvKCJoMyIpLGg0Om8oImg0IiksaDU6bygiaDUiKSxoNjpv
KCJoNiIpLGhlYWQ6bygiaGVhZCIpLGhlYWRlcjpvKCJoZWFkZXIiKSxoZ3JvdXA6bygiaGdyb3Vw
IiksaHI6bygiaHIiKSxodG1sOm8oImh0bWwiKSxpOm8oImkiKSxpZnJhbWU6bygiaWZyYW1lIiks
aW1nOm8oImltZyIpLGlucHV0Om8oImlucHV0IiksaW5zOm8oImlucyIpLGtiZDpvKCJrYmQiKSxr
ZXlnZW46bygia2V5Z2VuIiksbGFiZWw6bygibGFiZWwiKSxsZWdlbmQ6bygibGVnZW5kIiksbGk6
bygibGkiKSxsaW5rOm8oImxpbmsiKSxtYWluOm8oIm1haW4iKSxtYXA6bygibWFwIiksbWFyazpv
KCJtYXJrIiksbWVudTpvKCJtZW51IiksbWVudWl0ZW06bygibWVudWl0ZW0iKSxtZXRhOm8oIm1l
dGEiKSxtZXRlcjpvKCJtZXRlciIpLG5hdjpvKCJuYXYiKSxub3NjcmlwdDpvKCJub3NjcmlwdCIp
LG9iamVjdDpvKCJvYmplY3QiKSxvbDpvKCJvbCIpLG9wdGdyb3VwOm8oIm9wdGdyb3VwIiksb3B0
aW9uOm8oIm9wdGlvbiIpLG91dHB1dDpvKCJvdXRwdXQiKSxwOm8oInAiKSxwYXJhbTpvKCJwYXJh
bSIpLHBpY3R1cmU6bygicGljdHVyZSIpLHByZTpvKCJwcmUiKSxwcm9ncmVzczpvKCJwcm9ncmVz
cyIpLHE6bygicSIpLHJwOm8oInJwIikscnQ6bygicnQiKSxydWJ5Om8oInJ1YnkiKSxzOm8oInMi
KSxzYW1wOm8oInNhbXAiKSxzY3JpcHQ6bygic2NyaXB0Iiksc2VjdGlvbjpvKCJzZWN0aW9uIiks
c2VsZWN0Om8oInNlbGVjdCIpLHNtYWxsOm8oInNtYWxsIiksc291cmNlOm8oInNvdXJjZSIpLHNw
YW46bygic3BhbiIpLHN0cm9uZzpvKCJzdHJvbmciKSxzdHlsZTpvKCJzdHlsZSIpLHN1YjpvKCJz
dWIiKSxzdW1tYXJ5Om8oInN1bW1hcnkiKSxzdXA6bygic3VwIiksdGFibGU6bygidGFibGUiKSx0
Ym9keTpvKCJ0Ym9keSIpLHRkOm8oInRkIiksdGV4dGFyZWE6bygidGV4dGFyZWEiKSx0Zm9vdDpv
KCJ0Zm9vdCIpLHRoOm8oInRoIiksdGhlYWQ6bygidGhlYWQiKSx0aW1lOm8oInRpbWUiKSx0aXRs
ZTpvKCJ0aXRsZSIpLHRyOm8oInRyIiksdHJhY2s6bygidHJhY2siKSx1Om8oInUiKSx1bDpvKCJ1
bCIpLHZhcjpvKCJ2YXIiKSx2aWRlbzpvKCJ2aWRlbyIpLHdicjpvKCJ3YnIiKSxjaXJjbGU6bygi
Y2lyY2xlIiksY2xpcFBhdGg6bygiY2xpcFBhdGgiKSxkZWZzOm8oImRlZnMiKSxlbGxpcHNlOm8o
ImVsbGlwc2UiKSxnOm8oImciKSxpbWFnZTpvKCJpbWFnZSIpLGxpbmU6bygibGluZSIpLGxpbmVh
ckdyYWRpZW50Om8oImxpbmVhckdyYWRpZW50IiksbWFzazpvKCJtYXNrIikscGF0aDpvKCJwYXRo
IikscGF0dGVybjpvKCJwYXR0ZXJuIikscG9seWdvbjpvKCJwb2x5Z29uIikscG9seWxpbmU6bygi
cG9seWxpbmUiKSxyYWRpYWxHcmFkaWVudDpvKCJyYWRpYWxHcmFkaWVudCIpLHJlY3Q6bygicmVj
dCIpLHN0b3A6bygic3RvcCIpLHN2ZzpvKCJzdmciKSx0ZXh0Om8oInRleHQiKSx0c3BhbjpvKCJ0
c3BhbiIpfTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1u
KDE0KSxvPXIuaXNWYWxpZEVsZW1lbnQsaT1uKDU2KTtlLmV4cG9ydHM9aShvKX0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDYpLG89bigwKSxpPW4oMSksYT1uKDU3KSx1PW4o
MTEzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUpe3ZhciB0PWUmJih4JiZl
W3hdfHxlW1RdKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHQpcmV0dXJuIHR9ZnVuY3Rpb24gcyhl
LHQpe3JldHVybiBlPT09dD8wIT09ZXx8MS9lPT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiBj
KGUpe3RoaXMubWVzc2FnZT1lLHRoaXMuc3RhY2s9IiJ9ZnVuY3Rpb24gbChlKXtmdW5jdGlvbiBu
KG4scixpLHUscyxsLHApe2lmKHU9dXx8UCxsPWx8fGkscCE9PWEpaWYodClvKCExLCJDYWxsaW5n
IFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBw
cm9wLXR5cGVzYCBwYWNrYWdlLiBVc2UgYFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpYCB0byBj
YWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMi
KTtlbHNlO3JldHVybiBudWxsPT1yW2ldP24/bmV3IGMobnVsbD09PXJbaV0/IlRoZSAiK3MrIiBg
IitsKyJgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCBpbiBgIit1KyJgLCBidXQgaXRzIHZhbHVlIGlz
IGBudWxsYC4iOiJUaGUgIitzKyIgYCIrbCsiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gYCIr
dSsiYCwgYnV0IGl0cyB2YWx1ZSBpcyBgdW5kZWZpbmVkYC4iKTpudWxsOmUocixpLHUscyxsKX12
YXIgcj1uLmJpbmQobnVsbCwhMSk7cmV0dXJuIHIuaXNSZXF1aXJlZD1uLmJpbmQobnVsbCwhMCks
cn1mdW5jdGlvbiBwKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxpLGEpe3ZhciB1PXRbbl07aWYoXyh1
KSE9PWUpcmV0dXJuIG5ldyBjKCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdHlwZSBgIitDKHUp
KyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGAiK2UrImAuIik7cmV0dXJuIG51bGx9
cmV0dXJuIGwodCl9ZnVuY3Rpb24gZihlKXtmdW5jdGlvbiB0KHQsbixyLG8saSl7aWYoImZ1bmN0
aW9uIiE9PXR5cGVvZiBlKXJldHVybiBuZXcgYygiUHJvcGVydHkgYCIraSsiYCBvZiBjb21wb25l
bnQgYCIrcisiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgYXJyYXlPZi4i
KTt2YXIgdT10W25dO2lmKCFBcnJheS5pc0FycmF5KHUpKXtyZXR1cm4gbmV3IGMoIkludmFsaWQg
IitvKyIgYCIraSsiYCBvZiB0eXBlIGAiK18odSkrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhw
ZWN0ZWQgYW4gYXJyYXkuIil9Zm9yKHZhciBzPTA7czx1Lmxlbmd0aDtzKyspe3ZhciBsPWUodSxz
LHIsbyxpKyJbIitzKyJdIixhKTtpZihsIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIGx9cmV0dXJu
IG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gZChlKXtmdW5jdGlvbiB0KHQsbixyLG8saSl7aWYo
ISh0W25daW5zdGFuY2VvZiBlKSl7dmFyIGE9ZS5uYW1lfHxQO3JldHVybiBuZXcgYygiSW52YWxp
ZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgYCIrRSh0W25dKSsiYCBzdXBwbGllZCB0byBgIityKyJg
LCBleHBlY3RlZCBpbnN0YW5jZSBvZiBgIithKyJgLiIpfXJldHVybiBudWxsfXJldHVybiBsKHQp
fWZ1bmN0aW9uIGgoZSl7ZnVuY3Rpb24gdCh0LG4scixvLGkpe2Zvcih2YXIgYT10W25dLHU9MDt1
PGUubGVuZ3RoO3UrKylpZihzKGEsZVt1XSkpcmV0dXJuIG51bGw7cmV0dXJuIG5ldyBjKCJJbnZh
bGlkICIrbysiIGAiK2krImAgb2YgdmFsdWUgYCIrYSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBl
eHBlY3RlZCBvbmUgb2YgIitKU09OLnN0cmluZ2lmeShlKSsiLiIpfXJldHVybiBBcnJheS5pc0Fy
cmF5KGUpP2wodCk6ci50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24gbShlKXtmdW5jdGlvbiB0KHQs
bixyLG8saSl7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBlKXJldHVybiBuZXcgYygiUHJvcGVydHkg
YCIraSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlv
biBpbnNpZGUgb2JqZWN0T2YuIik7dmFyIHU9dFtuXSxzPV8odSk7aWYoIm9iamVjdCIhPT1zKXJl
dHVybiBuZXcgYygiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgYCIrcysiYCBzdXBwbGll
ZCB0byBgIityKyJgLCBleHBlY3RlZCBhbiBvYmplY3QuIik7Zm9yKHZhciBsIGluIHUpaWYodS5o
YXNPd25Qcm9wZXJ0eShsKSl7dmFyIHA9ZSh1LGwscixvLGkrIi4iK2wsYSk7aWYocCBpbnN0YW5j
ZW9mIEVycm9yKXJldHVybiBwfXJldHVybiBudWxsfXJldHVybiBsKHQpfWZ1bmN0aW9uIHYoZSl7
ZnVuY3Rpb24gdCh0LG4scixvLGkpe2Zvcih2YXIgdT0wO3U8ZS5sZW5ndGg7dSsrKXtpZihudWxs
PT0oMCxlW3VdKSh0LG4scixvLGksYSkpcmV0dXJuIG51bGx9cmV0dXJuIG5ldyBjKCJJbnZhbGlk
ICIrbysiIGAiK2krImAgc3VwcGxpZWQgdG8gYCIrcisiYC4iKX1pZighQXJyYXkuaXNBcnJheShl
KSlyZXR1cm4gci50aGF0UmV0dXJuc051bGw7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3Zh
ciBvPWVbbl07aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBvKXJldHVybiBpKCExLCJJbnZhbGlkIGFy
Z3VtZW50IHN1cHBsaWQgdG8gb25lT2ZUeXBlLiBFeHBlY3RlZCBhbiBhcnJheSBvZiBjaGVjayBm
dW5jdGlvbnMsIGJ1dCByZWNlaXZlZCAlcyBhdCBpbmRleCAlcy4iLHcobyksbiksci50aGF0UmV0
dXJuc051bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24geShlKXtmdW5jdGlvbiB0KHQsbixyLG8saSl7
dmFyIHU9dFtuXSxzPV8odSk7aWYoIm9iamVjdCIhPT1zKXJldHVybiBuZXcgYygiSW52YWxpZCAi
K28rIiBgIitpKyJgIG9mIHR5cGUgYCIrcysiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3Rl
ZCBgb2JqZWN0YC4iKTtmb3IodmFyIGwgaW4gZSl7dmFyIHA9ZVtsXTtpZihwKXt2YXIgZj1wKHUs
bCxyLG8saSsiLiIrbCxhKTtpZihmKXJldHVybiBmfX1yZXR1cm4gbnVsbH1yZXR1cm4gbCh0KX1m
dW5jdGlvbiBnKHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOmNhc2Uic3RyaW5nIjpj
YXNlInVuZGVmaW5lZCI6cmV0dXJuITA7Y2FzZSJib29sZWFuIjpyZXR1cm4hdDtjYXNlIm9iamVj
dCI6aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdC5ldmVyeShnKTtpZihudWxsPT09dHx8ZSh0
KSlyZXR1cm4hMDt2YXIgcj1uKHQpO2lmKCFyKXJldHVybiExO3ZhciBvLGk9ci5jYWxsKHQpO2lm
KHIhPT10LmVudHJpZXMpe2Zvcig7IShvPWkubmV4dCgpKS5kb25lOylpZighZyhvLnZhbHVlKSly
ZXR1cm4hMX1lbHNlIGZvcig7IShvPWkubmV4dCgpKS5kb25lOyl7dmFyIGE9by52YWx1ZTtpZihh
JiYhZyhhWzFdKSlyZXR1cm4hMX1yZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBi
KGUsdCl7cmV0dXJuInN5bWJvbCI9PT1lfHwoIlN5bWJvbCI9PT10WyJAQHRvU3RyaW5nVGFnIl18
fCJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZ0IGluc3RhbmNlb2YgU3ltYm9sKX1mdW5jdGlv
biBfKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiBBcnJheS5pc0FycmF5KGUpPyJhcnJheSI6ZSBp
bnN0YW5jZW9mIFJlZ0V4cD8ib2JqZWN0IjpiKHQsZSk/InN5bWJvbCI6dH1mdW5jdGlvbiBDKGUp
e2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGV8fG51bGw9PT1lKXJldHVybiIiK2U7dmFyIHQ9Xyhl
KTtpZigib2JqZWN0Ij09PXQpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiJkYXRlIjtpZihl
IGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiJyZWdleHAifXJldHVybiB0fWZ1bmN0aW9uIHcoZSl7
dmFyIHQ9QyhlKTtzd2l0Y2godCl7Y2FzZSJhcnJheSI6Y2FzZSJvYmplY3QiOnJldHVybiJhbiAi
K3Q7Y2FzZSJib29sZWFuIjpjYXNlImRhdGUiOmNhc2UicmVnZXhwIjpyZXR1cm4iYSAiK3Q7ZGVm
YXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gRShlKXtyZXR1cm4gZS5jb25zdHJ1Y3RvciYmZS5jb25z
dHJ1Y3Rvci5uYW1lP2UuY29uc3RydWN0b3IubmFtZTpQfXZhciB4PSJmdW5jdGlvbiI9PT10eXBl
b2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsVD0iQEBpdGVyYXRvciIsUD0iPDxhbm9ueW1vdXM+
PiIsTz17YXJyYXk6cCgiYXJyYXkiKSxib29sOnAoImJvb2xlYW4iKSxmdW5jOnAoImZ1bmN0aW9u
IiksbnVtYmVyOnAoIm51bWJlciIpLG9iamVjdDpwKCJvYmplY3QiKSxzdHJpbmc6cCgic3RyaW5n
Iiksc3ltYm9sOnAoInN5bWJvbCIpLGFueTpmdW5jdGlvbigpe3JldHVybiBsKHIudGhhdFJldHVy
bnNOdWxsKX0oKSxhcnJheU9mOmYsZWxlbWVudDpmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxuLHIs
byxpKXt2YXIgYT10W25dO2lmKCFlKGEpKXtyZXR1cm4gbmV3IGMoIkludmFsaWQgIitvKyIgYCIr
aSsiYCBvZiB0eXBlIGAiK18oYSkrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYSBz
aW5nbGUgUmVhY3RFbGVtZW50LiIpfXJldHVybiBudWxsfXJldHVybiBsKHQpfSgpLGluc3RhbmNl
T2Y6ZCxub2RlOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixyLG8pe3JldHVybiBnKGVbdF0p
P251bGw6bmV3IGMoIkludmFsaWQgIityKyIgYCIrbysiYCBzdXBwbGllZCB0byBgIituKyJgLCBl
eHBlY3RlZCBhIFJlYWN0Tm9kZS4iKX1yZXR1cm4gbChlKX0oKSxvYmplY3RPZjptLG9uZU9mOmgs
b25lT2ZUeXBlOnYsc2hhcGU6eX07cmV0dXJuIGMucHJvdG90eXBlPUVycm9yLnByb3RvdHlwZSxP
LmNoZWNrUHJvcFR5cGVzPXUsTy5Qcm9wVHlwZXM9TyxPfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIsbyl7fWUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz0iMTUuNi4xIn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj1uKDUyKSxvPXIuQ29tcG9uZW50LGk9bigxNCksYT1pLmlzVmFsaWRFbGVt
ZW50LHU9big1Mykscz1uKDExNik7ZS5leHBvcnRzPXMobyxhLHUpfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gbyhlLHQsbil7ZnVu
Y3Rpb24gbyhlLHQpe3ZhciBuPWcuaGFzT3duUHJvcGVydHkodCk/Z1t0XTpudWxsO3cuaGFzT3du
UHJvcGVydHkodCkmJnUoIk9WRVJSSURFX0JBU0UiPT09biwiUmVhY3RDbGFzc0ludGVyZmFjZTog
WW91IGFyZSBhdHRlbXB0aW5nIHRvIG92ZXJyaWRlIGAlc2AgZnJvbSB5b3VyIGNsYXNzIHNwZWNp
ZmljYXRpb24uIEVuc3VyZSB0aGF0IHlvdXIgbWV0aG9kIG5hbWVzIGRvIG5vdCBvdmVybGFwIHdp
dGggUmVhY3QgbWV0aG9kcy4iLHQpLGUmJnUoIkRFRklORV9NQU5ZIj09PW58fCJERUZJTkVfTUFO
WV9NRVJHRUQiPT09biwiUmVhY3RDbGFzc0ludGVyZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRv
IGRlZmluZSBgJXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZs
aWN0IG1heSBiZSBkdWUgdG8gYSBtaXhpbi4iLHQpfWZ1bmN0aW9uIGMoZSxuKXtpZihuKXt1KCJm
dW5jdGlvbiIhPT10eXBlb2YgbiwiUmVhY3RDbGFzczogWW91J3JlIGF0dGVtcHRpbmcgdG8gdXNl
IGEgY29tcG9uZW50IGNsYXNzIG9yIGZ1bmN0aW9uIGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3Qg
dXNlIGEgcmVndWxhciBvYmplY3QuIiksdSghdChuKSwiUmVhY3RDbGFzczogWW91J3JlIGF0dGVt
cHRpbmcgdG8gdXNlIGEgY29tcG9uZW50IGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEg
cmVndWxhciBvYmplY3QuIik7dmFyIHI9ZS5wcm90b3R5cGUsaT1yLl9fcmVhY3RBdXRvQmluZFBh
aXJzO24uaGFzT3duUHJvcGVydHkocykmJmIubWl4aW5zKGUsbi5taXhpbnMpO2Zvcih2YXIgYSBp
biBuKWlmKG4uaGFzT3duUHJvcGVydHkoYSkmJmEhPT1zKXt2YXIgYz1uW2FdLGw9ci5oYXNPd25Q
cm9wZXJ0eShhKTtpZihvKGwsYSksYi5oYXNPd25Qcm9wZXJ0eShhKSliW2FdKGUsYyk7ZWxzZXt2
YXIgcD1nLmhhc093blByb3BlcnR5KGEpLGg9ImZ1bmN0aW9uIj09PXR5cGVvZiBjLG09aCYmIXAm
JiFsJiYhMSE9PW4uYXV0b2JpbmQ7aWYobSlpLnB1c2goYSxjKSxyW2FdPWM7ZWxzZSBpZihsKXt2
YXIgdj1nW2FdO3UocCYmKCJERUZJTkVfTUFOWV9NRVJHRUQiPT09dnx8IkRFRklORV9NQU5ZIj09
PXYpLCJSZWFjdENsYXNzOiBVbmV4cGVjdGVkIHNwZWMgcG9saWN5ICVzIGZvciBrZXkgJXMgd2hl
biBtaXhpbmcgaW4gY29tcG9uZW50IHNwZWNzLiIsdixhKSwiREVGSU5FX01BTllfTUVSR0VEIj09
PXY/clthXT1mKHJbYV0sYyk6IkRFRklORV9NQU5ZIj09PXYmJihyW2FdPWQoclthXSxjKSl9ZWxz
ZSByW2FdPWN9fX1lbHNlO31mdW5jdGlvbiBsKGUsdCl7aWYodClmb3IodmFyIG4gaW4gdCl7dmFy
IHI9dFtuXTtpZih0Lmhhc093blByb3BlcnR5KG4pKXt2YXIgbz1uIGluIGI7dSghbywnUmVhY3RD
bGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSBhIHJlc2VydmVkIHByb3BlcnR5LCBg
JXNgLCB0aGF0IHNob3VsZG5cJ3QgYmUgb24gdGhlICJzdGF0aWNzIiBrZXkuIERlZmluZSBpdCBh
cyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBpbnN0ZWFkOyBpdCB3aWxsIHN0aWxsIGJlIGFjY2Vzc2li
bGUgb24gdGhlIGNvbnN0cnVjdG9yLicsbik7dmFyIGk9biBpbiBlO3UoIWksIlJlYWN0Q2xhc3M6
IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3Jl
IHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUgZHVlIHRvIGEgbWl4aW4uIixuKSxlW25d
PXJ9fX1mdW5jdGlvbiBwKGUsdCl7dShlJiZ0JiYib2JqZWN0Ij09PXR5cGVvZiBlJiYib2JqZWN0
Ij09PXR5cGVvZiB0LCJtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6IENhbm5vdCBtZXJn
ZSBub24tb2JqZWN0cy4iKTtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiYodSh2
b2lkIDA9PT1lW25dLCJtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6IFRyaWVkIHRvIG1l
cmdlIHR3byBvYmplY3RzIHdpdGggdGhlIHNhbWUga2V5OiBgJXNgLiBUaGlzIGNvbmZsaWN0IG1h
eSBiZSBkdWUgdG8gYSBtaXhpbjsgaW4gcGFydGljdWxhciwgdGhpcyBtYXkgYmUgY2F1c2VkIGJ5
IHR3byBnZXRJbml0aWFsU3RhdGUoKSBvciBnZXREZWZhdWx0UHJvcHMoKSBtZXRob2RzIHJldHVy
bmluZyBvYmplY3RzIHdpdGggY2xhc2hpbmcga2V5cy4iLG4pLGVbbl09dFtuXSk7cmV0dXJuIGV9
ZnVuY3Rpb24gZihlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1
bWVudHMpLHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYobnVsbD09bilyZXR1cm4gcjtpZihu
dWxsPT1yKXJldHVybiBuO3ZhciBvPXt9O3JldHVybiBwKG8sbikscChvLHIpLG99fWZ1bmN0aW9u
IGQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0LmFwcGx5
KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gaChlLHQpe3ZhciBuPXQuYmluZChlKTtyZXR1cm4g
bn1mdW5jdGlvbiBtKGUpe2Zvcih2YXIgdD1lLl9fcmVhY3RBdXRvQmluZFBhaXJzLG49MDtuPHQu
bGVuZ3RoO24rPTIpe3ZhciByPXRbbl0sbz10W24rMV07ZVtyXT1oKGUsbyl9fWZ1bmN0aW9uIHYo
ZSl7dmFyIHQ9cihmdW5jdGlvbihlLHIsbyl7dGhpcy5fX3JlYWN0QXV0b0JpbmRQYWlycy5sZW5n
dGgmJm0odGhpcyksdGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD1yLHRoaXMucmVmcz1hLHRoaXMu
dXBkYXRlcj1vfHxuLHRoaXMuc3RhdGU9bnVsbDt2YXIgaT10aGlzLmdldEluaXRpYWxTdGF0ZT90
aGlzLmdldEluaXRpYWxTdGF0ZSgpOm51bGw7dSgib2JqZWN0Ij09PXR5cGVvZiBpJiYhQXJyYXku
aXNBcnJheShpKSwiJXMuZ2V0SW5pdGlhbFN0YXRlKCk6IG11c3QgcmV0dXJuIGFuIG9iamVjdCBv
ciBudWxsIix0LmRpc3BsYXlOYW1lfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKSx0aGlzLnN0
YXRlPWl9KTt0LnByb3RvdHlwZT1uZXcgRSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQucHJv
dG90eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJzPVtdLHkuZm9yRWFjaChjLmJpbmQobnVsbCx0KSks
Yyh0LF8pLGModCxlKSxjKHQsQyksdC5nZXREZWZhdWx0UHJvcHMmJih0LmRlZmF1bHRQcm9wcz10
LmdldERlZmF1bHRQcm9wcygpKSx1KHQucHJvdG90eXBlLnJlbmRlciwiY3JlYXRlQ2xhc3MoLi4u
KTogQ2xhc3Mgc3BlY2lmaWNhdGlvbiBtdXN0IGltcGxlbWVudCBhIGByZW5kZXJgIG1ldGhvZC4i
KTtmb3IodmFyIG8gaW4gZyl0LnByb3RvdHlwZVtvXXx8KHQucHJvdG90eXBlW29dPW51bGwpO3Jl
dHVybiB0fXZhciB5PVtdLGc9e21peGluczoiREVGSU5FX01BTlkiLHN0YXRpY3M6IkRFRklORV9N
QU5ZIixwcm9wVHlwZXM6IkRFRklORV9NQU5ZIixjb250ZXh0VHlwZXM6IkRFRklORV9NQU5ZIixj
aGlsZENvbnRleHRUeXBlczoiREVGSU5FX01BTlkiLGdldERlZmF1bHRQcm9wczoiREVGSU5FX01B
TllfTUVSR0VEIixnZXRJbml0aWFsU3RhdGU6IkRFRklORV9NQU5ZX01FUkdFRCIsZ2V0Q2hpbGRD
b250ZXh0OiJERUZJTkVfTUFOWV9NRVJHRUQiLHJlbmRlcjoiREVGSU5FX09OQ0UiLGNvbXBvbmVu
dFdpbGxNb3VudDoiREVGSU5FX01BTlkiLGNvbXBvbmVudERpZE1vdW50OiJERUZJTkVfTUFOWSIs
Y29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczoiREVGSU5FX01BTlkiLHNob3VsZENvbXBvbmVudFVw
ZGF0ZToiREVGSU5FX09OQ0UiLGNvbXBvbmVudFdpbGxVcGRhdGU6IkRFRklORV9NQU5ZIixjb21w
b25lbnREaWRVcGRhdGU6IkRFRklORV9NQU5ZIixjb21wb25lbnRXaWxsVW5tb3VudDoiREVGSU5F
X01BTlkiLHVwZGF0ZUNvbXBvbmVudDoiT1ZFUlJJREVfQkFTRSJ9LGI9e2Rpc3BsYXlOYW1lOmZ1
bmN0aW9uKGUsdCl7ZS5kaXNwbGF5TmFtZT10fSxtaXhpbnM6ZnVuY3Rpb24oZSx0KXtpZih0KWZv
cih2YXIgbj0wO248dC5sZW5ndGg7bisrKWMoZSx0W25dKX0sY2hpbGRDb250ZXh0VHlwZXM6ZnVu
Y3Rpb24oZSx0KXtlLmNoaWxkQ29udGV4dFR5cGVzPWkoe30sZS5jaGlsZENvbnRleHRUeXBlcyx0
KX0sY29udGV4dFR5cGVzOmZ1bmN0aW9uKGUsdCl7ZS5jb250ZXh0VHlwZXM9aSh7fSxlLmNvbnRl
eHRUeXBlcyx0KX0sZ2V0RGVmYXVsdFByb3BzOmZ1bmN0aW9uKGUsdCl7ZS5nZXREZWZhdWx0UHJv
cHM/ZS5nZXREZWZhdWx0UHJvcHM9ZihlLmdldERlZmF1bHRQcm9wcyx0KTplLmdldERlZmF1bHRQ
cm9wcz10fSxwcm9wVHlwZXM6ZnVuY3Rpb24oZSx0KXtlLnByb3BUeXBlcz1pKHt9LGUucHJvcFR5
cGVzLHQpfSxzdGF0aWNzOmZ1bmN0aW9uKGUsdCl7bChlLHQpfSxhdXRvYmluZDpmdW5jdGlvbigp
e319LF89e2NvbXBvbmVudERpZE1vdW50OmZ1bmN0aW9uKCl7dGhpcy5fX2lzTW91bnRlZD0hMH19
LEM9e2NvbXBvbmVudFdpbGxVbm1vdW50OmZ1bmN0aW9uKCl7dGhpcy5fX2lzTW91bnRlZD0hMX19
LHc9e3JlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQpe3RoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFj
ZVN0YXRlKHRoaXMsZSx0KX0saXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9faXNN
b3VudGVkfX0sRT1mdW5jdGlvbigpe307cmV0dXJuIGkoRS5wcm90b3R5cGUsZS5wcm90b3R5cGUs
dyksdn12YXIgaT1uKDMpLGE9bigyMyksdT1uKDApLHM9Im1peGlucyI7ZS5leHBvcnRzPW99LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gaS5pc1ZhbGlk
RWxlbWVudChlKXx8bygiMTQzIiksZX12YXIgbz1uKDE4KSxpPW4oMTQpO24oMCk7ZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPW4oMTE5KX0sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDQpLG89bigxMjApLGk9big4MiksYT1uKDE2
KSx1PW4oOCkscz1uKDE5MiksYz1uKDE5MyksbD1uKDgzKSxwPW4oMTk0KTtuKDEpO28uaW5qZWN0
KCk7dmFyIGY9e2ZpbmRET01Ob2RlOmMscmVuZGVyOmkucmVuZGVyLHVubW91bnRDb21wb25lbnRB
dE5vZGU6aS51bm1vdW50Q29tcG9uZW50QXROb2RlLHZlcnNpb246cyx1bnN0YWJsZV9iYXRjaGVk
VXBkYXRlczp1LmJhdGNoZWRVcGRhdGVzLHVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFp
bmVyOnB9OyJ1bmRlZmluZWQiIT09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tf
XyYmImZ1bmN0aW9uIj09PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5q
ZWN0JiZfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0KHtDb21wb25lbnRUcmVl
OntnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTpyLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2Rl
LGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX3JlbmRlcmVkQ29tcG9u
ZW50JiYoZT1sKGUpKSxlP3IuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTpudWxsfX0sTW91bnQ6aSxS
ZWNvbmNpbGVyOmF9KTtlLmV4cG9ydHM9Zn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKCl7RXx8KEU9ITAsZy5FdmVudEVtaXR0ZXIuaW5qZWN0UmVhY3RFdmVudExpc3Rl
bmVyKHkpLGcuRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5PcmRlcih1KSxnLkV2ZW50
UGx1Z2luVXRpbHMuaW5qZWN0Q29tcG9uZW50VHJlZShmKSxnLkV2ZW50UGx1Z2luVXRpbHMuaW5q
ZWN0VHJlZVRyYXZlcnNhbChoKSxnLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luc0J5
TmFtZSh7U2ltcGxlRXZlbnRQbHVnaW46dyxFbnRlckxlYXZlRXZlbnRQbHVnaW46cyxDaGFuZ2VF
dmVudFBsdWdpbjphLFNlbGVjdEV2ZW50UGx1Z2luOkMsQmVmb3JlSW5wdXRFdmVudFBsdWdpbjpp
fSksZy5Ib3N0Q29tcG9uZW50LmluamVjdEdlbmVyaWNDb21wb25lbnRDbGFzcyhwKSxnLkhvc3RD
b21wb25lbnQuaW5qZWN0VGV4dENvbXBvbmVudENsYXNzKG0pLGcuRE9NUHJvcGVydHkuaW5qZWN0
RE9NUHJvcGVydHlDb25maWcobyksZy5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZp
ZyhjKSxnLkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKF8pLGcuRW1wdHlDb21w
b25lbnQuaW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5KGZ1bmN0aW9uKGUpe3JldHVybiBuZXcg
ZChlKX0pLGcuVXBkYXRlcy5pbmplY3RSZWNvbmNpbGVUcmFuc2FjdGlvbihiKSxnLlVwZGF0ZXMu
aW5qZWN0QmF0Y2hpbmdTdHJhdGVneSh2KSxnLkNvbXBvbmVudC5pbmplY3RFbnZpcm9ubWVudChs
KSl9dmFyIG89bigxMjEpLGk9bigxMjIpLGE9bigxMjYpLHU9bigxMjkpLHM9bigxMzApLGM9bigx
MzEpLGw9bigxMzIpLHA9bigxMzgpLGY9big0KSxkPW4oMTYzKSxoPW4oMTY0KSxtPW4oMTY1KSx2
PW4oMTY2KSx5PW4oMTY3KSxnPW4oMTY5KSxiPW4oMTcwKSxfPW4oMTc2KSxDPW4oMTc3KSx3PW4o
MTc4KSxFPSExO2UuZXhwb3J0cz17aW5qZWN0OnJ9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPXtQcm9wZXJ0aWVzOnsiYXJpYS1jdXJyZW50IjowLCJhcmlhLWRldGFpbHMiOjAs
ImFyaWEtZGlzYWJsZWQiOjAsImFyaWEtaGlkZGVuIjowLCJhcmlhLWludmFsaWQiOjAsImFyaWEt
a2V5c2hvcnRjdXRzIjowLCJhcmlhLWxhYmVsIjowLCJhcmlhLXJvbGVkZXNjcmlwdGlvbiI6MCwi
YXJpYS1hdXRvY29tcGxldGUiOjAsImFyaWEtY2hlY2tlZCI6MCwiYXJpYS1leHBhbmRlZCI6MCwi
YXJpYS1oYXNwb3B1cCI6MCwiYXJpYS1sZXZlbCI6MCwiYXJpYS1tb2RhbCI6MCwiYXJpYS1tdWx0
aWxpbmUiOjAsImFyaWEtbXVsdGlzZWxlY3RhYmxlIjowLCJhcmlhLW9yaWVudGF0aW9uIjowLCJh
cmlhLXBsYWNlaG9sZGVyIjowLCJhcmlhLXByZXNzZWQiOjAsImFyaWEtcmVhZG9ubHkiOjAsImFy
aWEtcmVxdWlyZWQiOjAsImFyaWEtc2VsZWN0ZWQiOjAsImFyaWEtc29ydCI6MCwiYXJpYS12YWx1
ZW1heCI6MCwiYXJpYS12YWx1ZW1pbiI6MCwiYXJpYS12YWx1ZW5vdyI6MCwiYXJpYS12YWx1ZXRl
eHQiOjAsImFyaWEtYXRvbWljIjowLCJhcmlhLWJ1c3kiOjAsImFyaWEtbGl2ZSI6MCwiYXJpYS1y
ZWxldmFudCI6MCwiYXJpYS1kcm9wZWZmZWN0IjowLCJhcmlhLWdyYWJiZWQiOjAsImFyaWEtYWN0
aXZlZGVzY2VuZGFudCI6MCwiYXJpYS1jb2xjb3VudCI6MCwiYXJpYS1jb2xpbmRleCI6MCwiYXJp
YS1jb2xzcGFuIjowLCJhcmlhLWNvbnRyb2xzIjowLCJhcmlhLWRlc2NyaWJlZGJ5IjowLCJhcmlh
LWVycm9ybWVzc2FnZSI6MCwiYXJpYS1mbG93dG8iOjAsImFyaWEtbGFiZWxsZWRieSI6MCwiYXJp
YS1vd25zIjowLCJhcmlhLXBvc2luc2V0IjowLCJhcmlhLXJvd2NvdW50IjowLCJhcmlhLXJvd2lu
ZGV4IjowLCJhcmlhLXJvd3NwYW4iOjAsImFyaWEtc2V0c2l6ZSI6MH0sRE9NQXR0cmlidXRlTmFt
ZXM6e30sRE9NUHJvcGVydHlOYW1lczp7fX07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4oZS5jdHJsS2V5fHxlLmFsdEtleXx8ZS5t
ZXRhS2V5KSYmIShlLmN0cmxLZXkmJmUuYWx0S2V5KX1mdW5jdGlvbiBvKGUpe3N3aXRjaChlKXtj
YXNlInRvcENvbXBvc2l0aW9uU3RhcnQiOnJldHVybiBULmNvbXBvc2l0aW9uU3RhcnQ7Y2FzZSJ0
b3BDb21wb3NpdGlvbkVuZCI6cmV0dXJuIFQuY29tcG9zaXRpb25FbmQ7Y2FzZSJ0b3BDb21wb3Np
dGlvblVwZGF0ZSI6cmV0dXJuIFQuY29tcG9zaXRpb25VcGRhdGV9fWZ1bmN0aW9uIGkoZSx0KXty
ZXR1cm4idG9wS2V5RG93biI9PT1lJiZ0LmtleUNvZGU9PT1nfWZ1bmN0aW9uIGEoZSx0KXtzd2l0
Y2goZSl7Y2FzZSJ0b3BLZXlVcCI6cmV0dXJuLTEhPT15LmluZGV4T2YodC5rZXlDb2RlKTtjYXNl
InRvcEtleURvd24iOnJldHVybiB0LmtleUNvZGUhPT1nO2Nhc2UidG9wS2V5UHJlc3MiOmNhc2Ui
dG9wTW91c2VEb3duIjpjYXNlInRvcEJsdXIiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1
bmN0aW9uIHUoZSl7dmFyIHQ9ZS5kZXRhaWw7cmV0dXJuIm9iamVjdCI9PT10eXBlb2YgdCYmImRh
dGEiaW4gdD90LmRhdGE6bnVsbH1mdW5jdGlvbiBzKGUsdCxuLHIpe3ZhciBzLGM7aWYoYj9zPW8o
ZSk6Tz9hKGUsbikmJihzPVQuY29tcG9zaXRpb25FbmQpOmkoZSxuKSYmKHM9VC5jb21wb3NpdGlv
blN0YXJ0KSwhcylyZXR1cm4gbnVsbDt3JiYoT3x8cyE9PVQuY29tcG9zaXRpb25TdGFydD9zPT09
VC5jb21wb3NpdGlvbkVuZCYmTyYmKGM9Ty5nZXREYXRhKCkpOk89aC5nZXRQb29sZWQocikpO3Zh
ciBsPW0uZ2V0UG9vbGVkKHMsdCxuLHIpO2lmKGMpbC5kYXRhPWM7ZWxzZXt2YXIgcD11KG4pO251
bGwhPT1wJiYobC5kYXRhPXApfXJldHVybiBmLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMo
bCksbH1mdW5jdGlvbiBjKGUsdCl7c3dpdGNoKGUpe2Nhc2UidG9wQ29tcG9zaXRpb25FbmQiOnJl
dHVybiB1KHQpO2Nhc2UidG9wS2V5UHJlc3MiOnJldHVybiB0LndoaWNoIT09RT9udWxsOihQPSEw
LHgpO2Nhc2UidG9wVGV4dElucHV0Ijp2YXIgbj10LmRhdGE7cmV0dXJuIG49PT14JiZQP251bGw6
bjtkZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBsKGUsdCl7aWYoTyl7aWYoInRvcENvbXBv
c2l0aW9uRW5kIj09PWV8fCFiJiZhKGUsdCkpe3ZhciBuPU8uZ2V0RGF0YSgpO3JldHVybiBoLnJl
bGVhc2UoTyksTz1udWxsLG59cmV0dXJuIG51bGx9c3dpdGNoKGUpe2Nhc2UidG9wUGFzdGUiOnJl
dHVybiBudWxsO2Nhc2UidG9wS2V5UHJlc3MiOnJldHVybiB0LndoaWNoJiYhcih0KT9TdHJpbmcu
ZnJvbUNoYXJDb2RlKHQud2hpY2gpOm51bGw7Y2FzZSJ0b3BDb21wb3NpdGlvbkVuZCI6cmV0dXJu
IHc/bnVsbDp0LmRhdGE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gcChlLHQsbixyKXt2
YXIgbztpZighKG89Qz9jKGUsbik6bChlLG4pKSlyZXR1cm4gbnVsbDt2YXIgaT12LmdldFBvb2xl
ZChULmJlZm9yZUlucHV0LHQsbixyKTtyZXR1cm4gaS5kYXRhPW8sZi5hY2N1bXVsYXRlVHdvUGhh
c2VEaXNwYXRjaGVzKGkpLGl9dmFyIGY9bigxOSksZD1uKDUpLGg9bigxMjMpLG09bigxMjQpLHY9
bigxMjUpLHk9WzksMTMsMjcsMzJdLGc9MjI5LGI9ZC5jYW5Vc2VET00mJiJDb21wb3NpdGlvbkV2
ZW50ImluIHdpbmRvdyxfPW51bGw7ZC5jYW5Vc2VET00mJiJkb2N1bWVudE1vZGUiaW4gZG9jdW1l
bnQmJihfPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIEM9ZC5jYW5Vc2VET00mJiJUZXh0RXZl
bnQiaW4gd2luZG93JiYhXyYmIWZ1bmN0aW9uKCl7dmFyIGU9d2luZG93Lm9wZXJhO3JldHVybiJv
YmplY3QiPT09dHlwZW9mIGUmJiJmdW5jdGlvbiI9PT10eXBlb2YgZS52ZXJzaW9uJiZwYXJzZUlu
dChlLnZlcnNpb24oKSwxMCk8PTEyfSgpLHc9ZC5jYW5Vc2VET00mJighYnx8XyYmXz44JiZfPD0x
MSksRT0zMix4PVN0cmluZy5mcm9tQ2hhckNvZGUoRSksVD17YmVmb3JlSW5wdXQ6e3BoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkJlZm9yZUlucHV0IixjYXB0dXJlZDoib25CZWZv
cmVJbnB1dENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BDb21wb3NpdGlvbkVuZCIsInRvcEtl
eVByZXNzIiwidG9wVGV4dElucHV0IiwidG9wUGFzdGUiXX0sY29tcG9zaXRpb25FbmQ6e3BoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0aW9uRW5kIixjYXB0dXJlZDoi
b25Db21wb3NpdGlvbkVuZENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9wQ29t
cG9zaXRpb25FbmQiLCJ0b3BLZXlEb3duIiwidG9wS2V5UHJlc3MiLCJ0b3BLZXlVcCIsInRvcE1v
dXNlRG93biJdfSxjb21wb3NpdGlvblN0YXJ0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnVi
YmxlZDoib25Db21wb3NpdGlvblN0YXJ0IixjYXB0dXJlZDoib25Db21wb3NpdGlvblN0YXJ0Q2Fw
dHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb21wb3NpdGlvblN0YXJ0IiwidG9w
S2V5RG93biIsInRvcEtleVByZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iXX0sY29tcG9z
aXRpb25VcGRhdGU6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0
aW9uVXBkYXRlIixjYXB0dXJlZDoib25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmUifSxkZXBlbmRl
bmNpZXM6WyJ0b3BCbHVyIiwidG9wQ29tcG9zaXRpb25VcGRhdGUiLCJ0b3BLZXlEb3duIiwidG9w
S2V5UHJlc3MiLCJ0b3BLZXlVcCIsInRvcE1vdXNlRG93biJdfX0sUD0hMSxPPW51bGwsaz17ZXZl
bnRUeXBlczpULGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuW3MoZSx0LG4s
cikscChlLHQsbixyKV19fTtlLmV4cG9ydHM9a30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3RoaXMuX3Jvb3Q9ZSx0aGlzLl9zdGFydFRleHQ9dGhpcy5nZXRUZXh0
KCksdGhpcy5fZmFsbGJhY2tUZXh0PW51bGx9dmFyIG89bigzKSxpPW4oMTIpLGE9big2MSk7byhy
LnByb3RvdHlwZSx7ZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3RoaXMuX3Jvb3Q9bnVsbCx0aGlzLl9z
dGFydFRleHQ9bnVsbCx0aGlzLl9mYWxsYmFja1RleHQ9bnVsbH0sZ2V0VGV4dDpmdW5jdGlvbigp
e3JldHVybiJ2YWx1ZSJpbiB0aGlzLl9yb290P3RoaXMuX3Jvb3QudmFsdWU6dGhpcy5fcm9vdFth
KCldfSxnZXREYXRhOmZ1bmN0aW9uKCl7aWYodGhpcy5fZmFsbGJhY2tUZXh0KXJldHVybiB0aGlz
Ll9mYWxsYmFja1RleHQ7dmFyIGUsdCxuPXRoaXMuX3N0YXJ0VGV4dCxyPW4ubGVuZ3RoLG89dGhp
cy5nZXRUZXh0KCksaT1vLmxlbmd0aDtmb3IoZT0wO2U8ciYmbltlXT09PW9bZV07ZSsrKTt2YXIg
YT1yLWU7Zm9yKHQ9MTt0PD1hJiZuW3ItdF09PT1vW2ktdF07dCsrKTt2YXIgdT10PjE/MS10OnZv
aWQgMDtyZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0PW8uc2xpY2UoZSx1KSx0aGlzLl9mYWxsYmFj
a1RleHR9fSksaS5hZGRQb29saW5nVG8ociksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4s
cil9dmFyIG89bigxMSksaT17ZGF0YTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0
cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0
dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMTEpLGk9e2RhdGE6bnVsbH07by5hdWdt
ZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCxuKXt2YXIgcj1QLmdldFBvb2xlZChJLmNoYW5nZSxlLHQsbik7cmV0dXJu
IHIudHlwZT0iY2hhbmdlIix3LmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMocikscn1mdW5j
dGlvbiBvKGUpe3ZhciB0PWUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1
cm4ic2VsZWN0Ij09PXR8fCJpbnB1dCI9PT10JiYiZmlsZSI9PT1lLnR5cGV9ZnVuY3Rpb24gaShl
KXt2YXIgdD1yKFIsZSxrKGUpKTtULmJhdGNoZWRVcGRhdGVzKGEsdCl9ZnVuY3Rpb24gYShlKXtD
LmVucXVldWVFdmVudHMoZSksQy5wcm9jZXNzRXZlbnRRdWV1ZSghMSl9ZnVuY3Rpb24gdShlLHQp
e009ZSxSPXQsTS5hdHRhY2hFdmVudCgib25jaGFuZ2UiLGkpfWZ1bmN0aW9uIHMoKXtNJiYoTS5k
ZXRhY2hFdmVudCgib25jaGFuZ2UiLGkpLE09bnVsbCxSPW51bGwpfWZ1bmN0aW9uIGMoZSx0KXt2
YXIgbj1PLnVwZGF0ZVZhbHVlSWZDaGFuZ2VkKGUpLHI9ITA9PT10LnNpbXVsYXRlZCYmai5fYWxs
b3dTaW11bGF0ZWRQYXNzVGhyb3VnaDtpZihufHxyKXJldHVybiBlfWZ1bmN0aW9uIGwoZSx0KXtp
ZigidG9wQ2hhbmdlIj09PWUpcmV0dXJuIHR9ZnVuY3Rpb24gcChlLHQsbil7InRvcEZvY3VzIj09
PWU/KHMoKSx1KHQsbikpOiJ0b3BCbHVyIj09PWUmJnMoKX1mdW5jdGlvbiBmKGUsdCl7TT1lLFI9
dCxNLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixoKX1mdW5jdGlvbiBkKCl7TSYmKE0u
ZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGgpLE09bnVsbCxSPW51bGwpfWZ1bmN0aW9u
IGgoZSl7InZhbHVlIj09PWUucHJvcGVydHlOYW1lJiZjKFIsZSkmJmkoZSl9ZnVuY3Rpb24gbShl
LHQsbil7InRvcEZvY3VzIj09PWU/KGQoKSxmKHQsbikpOiJ0b3BCbHVyIj09PWUmJmQoKX1mdW5j
dGlvbiB2KGUsdCxuKXtpZigidG9wU2VsZWN0aW9uQ2hhbmdlIj09PWV8fCJ0b3BLZXlVcCI9PT1l
fHwidG9wS2V5RG93biI9PT1lKXJldHVybiBjKFIsbil9ZnVuY3Rpb24geShlKXt2YXIgdD1lLm5v
ZGVOYW1lO3JldHVybiB0JiYiaW5wdXQiPT09dC50b0xvd2VyQ2FzZSgpJiYoImNoZWNrYm94Ij09
PWUudHlwZXx8InJhZGlvIj09PWUudHlwZSl9ZnVuY3Rpb24gZyhlLHQsbil7aWYoInRvcENsaWNr
Ij09PWUpcmV0dXJuIGModCxuKX1mdW5jdGlvbiBiKGUsdCxuKXtpZigidG9wSW5wdXQiPT09ZXx8
InRvcENoYW5nZSI9PT1lKXJldHVybiBjKHQsbil9ZnVuY3Rpb24gXyhlLHQpe2lmKG51bGwhPWUp
e3ZhciBuPWUuX3dyYXBwZXJTdGF0ZXx8dC5fd3JhcHBlclN0YXRlO2lmKG4mJm4uY29udHJvbGxl
ZCYmIm51bWJlciI9PT10LnR5cGUpe3ZhciByPSIiK3QudmFsdWU7dC5nZXRBdHRyaWJ1dGUoInZh
bHVlIikhPT1yJiZ0LnNldEF0dHJpYnV0ZSgidmFsdWUiLHIpfX19dmFyIEM9bigyMCksdz1uKDE5
KSxFPW4oNSkseD1uKDQpLFQ9big4KSxQPW4oMTEpLE89big2NCksaz1uKDM0KSxTPW4oMzUpLE49
big2NSksST17Y2hhbmdlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25DaGFu
Z2UiLGNhcHR1cmVkOiJvbkNoYW5nZUNhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwi
dG9wQ2hhbmdlIiwidG9wQ2xpY2siLCJ0b3BGb2N1cyIsInRvcElucHV0IiwidG9wS2V5RG93biIs
InRvcEtleVVwIiwidG9wU2VsZWN0aW9uQ2hhbmdlIl19fSxNPW51bGwsUj1udWxsLEE9ITE7RS5j
YW5Vc2VET00mJihBPVMoImNoYW5nZSIpJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8ZG9jdW1l
bnQuZG9jdW1lbnRNb2RlPjgpKTt2YXIgRD0hMTtFLmNhblVzZURPTSYmKEQ9UygiaW5wdXQiKSYm
KCEoImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCl8fGRvY3VtZW50LmRvY3VtZW50TW9kZT45KSk7
dmFyIGo9e2V2ZW50VHlwZXM6SSxfYWxsb3dTaW11bGF0ZWRQYXNzVGhyb3VnaDohMCxfaXNJbnB1
dEV2ZW50U3VwcG9ydGVkOkQsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixpKXt2YXIgYSx1
LHM9dD94LmdldE5vZGVGcm9tSW5zdGFuY2UodCk6d2luZG93O2lmKG8ocyk/QT9hPWw6dT1wOk4o
cyk/RD9hPWI6KGE9dix1PW0pOnkocykmJihhPWcpLGEpe3ZhciBjPWEoZSx0LG4pO2lmKGMpe3Jl
dHVybiByKGMsbixpKX19dSYmdShlLHMsdCksInRvcEJsdXIiPT09ZSYmXyh0LHMpfX07ZS5leHBv
cnRzPWp9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7ImZ1
bmN0aW9uIj09PXR5cGVvZiBlP2UodC5nZXRQdWJsaWNJbnN0YW5jZSgpKTppLmFkZENvbXBvbmVu
dEFzUmVmVG8odCxlLG4pfWZ1bmN0aW9uIG8oZSx0LG4peyJmdW5jdGlvbiI9PT10eXBlb2YgZT9l
KG51bGwpOmkucmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tKHQsZSxuKX12YXIgaT1uKDEyOCksYT17
fTthLmF0dGFjaFJlZnM9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT09dCYmIm9iamVjdCI9PT10eXBl
b2YgdCl7dmFyIG49dC5yZWY7bnVsbCE9biYmcihuLGUsdC5fb3duZXIpfX0sYS5zaG91bGRVcGRh
dGVSZWZzPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7bnVsbCE9PWUmJiJvYmplY3Qi
PT09dHlwZW9mIGUmJihuPWUucmVmLHI9ZS5fb3duZXIpO3ZhciBvPW51bGwsaT1udWxsO3JldHVy
biBudWxsIT09dCYmIm9iamVjdCI9PT10eXBlb2YgdCYmKG89dC5yZWYsaT10Ll9vd25lciksbiE9
PW98fCJzdHJpbmciPT09dHlwZW9mIG8mJmkhPT1yfSxhLmRldGFjaFJlZnM9ZnVuY3Rpb24oZSx0
KXtpZihudWxsIT09dCYmIm9iamVjdCI9PT10eXBlb2YgdCl7dmFyIG49dC5yZWY7bnVsbCE9biYm
byhuLGUsdC5fb3duZXIpfX0sZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4hKCFlfHwiZnVuY3Rpb24iIT09dHlwZW9mIGUuYXR0YWNo
UmVmfHwiZnVuY3Rpb24iIT09dHlwZW9mIGUuZGV0YWNoUmVmKX12YXIgbz1uKDIpLGk9KG4oMCks
e2FkZENvbXBvbmVudEFzUmVmVG86ZnVuY3Rpb24oZSx0LG4pe3Iobil8fG8oIjExOSIpLG4uYXR0
YWNoUmVmKHQsZSl9LHJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbTpmdW5jdGlvbihlLHQsbil7cihu
KXx8bygiMTIwIik7dmFyIGk9bi5nZXRQdWJsaWNJbnN0YW5jZSgpO2kmJmkucmVmc1t0XT09PWUu
Z2V0UHVibGljSW5zdGFuY2UoKSYmbi5kZXRhY2hSZWYodCl9fSk7ZS5leHBvcnRzPWl9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9WyJSZXNwb25kZXJFdmVudFBsdWdpbiIsIlNp
bXBsZUV2ZW50UGx1Z2luIiwiVGFwRXZlbnRQbHVnaW4iLCJFbnRlckxlYXZlRXZlbnRQbHVnaW4i
LCJDaGFuZ2VFdmVudFBsdWdpbiIsIlNlbGVjdEV2ZW50UGx1Z2luIiwiQmVmb3JlSW5wdXRFdmVu
dFBsdWdpbiJdO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
PW4oMTkpLG89big0KSxpPW4oMjUpLGE9e21vdXNlRW50ZXI6e3JlZ2lzdHJhdGlvbk5hbWU6Im9u
TW91c2VFbnRlciIsZGVwZW5kZW5jaWVzOlsidG9wTW91c2VPdXQiLCJ0b3BNb3VzZU92ZXIiXX0s
bW91c2VMZWF2ZTp7cmVnaXN0cmF0aW9uTmFtZToib25Nb3VzZUxlYXZlIixkZXBlbmRlbmNpZXM6
WyJ0b3BNb3VzZU91dCIsInRvcE1vdXNlT3ZlciJdfX0sdT17ZXZlbnRUeXBlczphLGV4dHJhY3RF
dmVudHM6ZnVuY3Rpb24oZSx0LG4sdSl7aWYoInRvcE1vdXNlT3ZlciI9PT1lJiYobi5yZWxhdGVk
VGFyZ2V0fHxuLmZyb21FbGVtZW50KSlyZXR1cm4gbnVsbDtpZigidG9wTW91c2VPdXQiIT09ZSYm
InRvcE1vdXNlT3ZlciIhPT1lKXJldHVybiBudWxsO3ZhciBzO2lmKHUud2luZG93PT09dSlzPXU7
ZWxzZXt2YXIgYz11Lm93bmVyRG9jdW1lbnQ7cz1jP2MuZGVmYXVsdFZpZXd8fGMucGFyZW50V2lu
ZG93OndpbmRvd312YXIgbCxwO2lmKCJ0b3BNb3VzZU91dCI9PT1lKXtsPXQ7dmFyIGY9bi5yZWxh
dGVkVGFyZ2V0fHxuLnRvRWxlbWVudDtwPWY/by5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShm
KTpudWxsfWVsc2UgbD1udWxsLHA9dDtpZihsPT09cClyZXR1cm4gbnVsbDt2YXIgZD1udWxsPT1s
P3M6by5nZXROb2RlRnJvbUluc3RhbmNlKGwpLGg9bnVsbD09cD9zOm8uZ2V0Tm9kZUZyb21JbnN0
YW5jZShwKSxtPWkuZ2V0UG9vbGVkKGEubW91c2VMZWF2ZSxsLG4sdSk7bS50eXBlPSJtb3VzZWxl
YXZlIixtLnRhcmdldD1kLG0ucmVsYXRlZFRhcmdldD1oO3ZhciB2PWkuZ2V0UG9vbGVkKGEubW91
c2VFbnRlcixwLG4sdSk7cmV0dXJuIHYudHlwZT0ibW91c2VlbnRlciIsdi50YXJnZXQ9aCx2LnJl
bGF0ZWRUYXJnZXQ9ZCxyLmFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlcyhtLHYsbCxwKSxb
bSx2XX19O2UuZXhwb3J0cz11fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4o
MTUpLG89ci5pbmplY3Rpb24uTVVTVF9VU0VfUFJPUEVSVFksaT1yLmluamVjdGlvbi5IQVNfQk9P
TEVBTl9WQUxVRSxhPXIuaW5qZWN0aW9uLkhBU19OVU1FUklDX1ZBTFVFLHU9ci5pbmplY3Rpb24u
SEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUscz1yLmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9C
T09MRUFOX1ZBTFVFLGM9e2lzQ3VzdG9tQXR0cmlidXRlOlJlZ0V4cC5wcm90b3R5cGUudGVzdC5i
aW5kKG5ldyBSZWdFeHAoIl4oZGF0YXxhcmlhKS1bIityLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0q
JCIpKSxQcm9wZXJ0aWVzOnthY2NlcHQ6MCxhY2NlcHRDaGFyc2V0OjAsYWNjZXNzS2V5OjAsYWN0
aW9uOjAsYWxsb3dGdWxsU2NyZWVuOmksYWxsb3dUcmFuc3BhcmVuY3k6MCxhbHQ6MCxhczowLGFz
eW5jOmksYXV0b0NvbXBsZXRlOjAsYXV0b1BsYXk6aSxjYXB0dXJlOmksY2VsbFBhZGRpbmc6MCxj
ZWxsU3BhY2luZzowLGNoYXJTZXQ6MCxjaGFsbGVuZ2U6MCxjaGVja2VkOm98aSxjaXRlOjAsY2xh
c3NJRDowLGNsYXNzTmFtZTowLGNvbHM6dSxjb2xTcGFuOjAsY29udGVudDowLGNvbnRlbnRFZGl0
YWJsZTowLGNvbnRleHRNZW51OjAsY29udHJvbHM6aSxjb29yZHM6MCxjcm9zc09yaWdpbjowLGRh
dGE6MCxkYXRlVGltZTowLGRlZmF1bHQ6aSxkZWZlcjppLGRpcjowLGRpc2FibGVkOmksZG93bmxv
YWQ6cyxkcmFnZ2FibGU6MCxlbmNUeXBlOjAsZm9ybTowLGZvcm1BY3Rpb246MCxmb3JtRW5jVHlw
ZTowLGZvcm1NZXRob2Q6MCxmb3JtTm9WYWxpZGF0ZTppLGZvcm1UYXJnZXQ6MCxmcmFtZUJvcmRl
cjowLGhlYWRlcnM6MCxoZWlnaHQ6MCxoaWRkZW46aSxoaWdoOjAsaHJlZjowLGhyZWZMYW5nOjAs
aHRtbEZvcjowLGh0dHBFcXVpdjowLGljb246MCxpZDowLGlucHV0TW9kZTowLGludGVncml0eTow
LGlzOjAsa2V5UGFyYW1zOjAsa2V5VHlwZTowLGtpbmQ6MCxsYWJlbDowLGxhbmc6MCxsaXN0OjAs
bG9vcDppLGxvdzowLG1hbmlmZXN0OjAsbWFyZ2luSGVpZ2h0OjAsbWFyZ2luV2lkdGg6MCxtYXg6
MCxtYXhMZW5ndGg6MCxtZWRpYTowLG1lZGlhR3JvdXA6MCxtZXRob2Q6MCxtaW46MCxtaW5MZW5n
dGg6MCxtdWx0aXBsZTpvfGksbXV0ZWQ6b3xpLG5hbWU6MCxub25jZTowLG5vVmFsaWRhdGU6aSxv
cGVuOmksb3B0aW11bTowLHBhdHRlcm46MCxwbGFjZWhvbGRlcjowLHBsYXlzSW5saW5lOmkscG9z
dGVyOjAscHJlbG9hZDowLHByb2ZpbGU6MCxyYWRpb0dyb3VwOjAscmVhZE9ubHk6aSxyZWZlcnJl
clBvbGljeTowLHJlbDowLHJlcXVpcmVkOmkscmV2ZXJzZWQ6aSxyb2xlOjAscm93czp1LHJvd1Nw
YW46YSxzYW5kYm94OjAsc2NvcGU6MCxzY29wZWQ6aSxzY3JvbGxpbmc6MCxzZWFtbGVzczppLHNl
bGVjdGVkOm98aSxzaGFwZTowLHNpemU6dSxzaXplczowLHNwYW46dSxzcGVsbENoZWNrOjAsc3Jj
OjAsc3JjRG9jOjAsc3JjTGFuZzowLHNyY1NldDowLHN0YXJ0OmEsc3RlcDowLHN0eWxlOjAsc3Vt
bWFyeTowLHRhYkluZGV4OjAsdGFyZ2V0OjAsdGl0bGU6MCx0eXBlOjAsdXNlTWFwOjAsdmFsdWU6
MCx3aWR0aDowLHdtb2RlOjAsd3JhcDowLGFib3V0OjAsZGF0YXR5cGU6MCxpbmxpc3Q6MCxwcmVm
aXg6MCxwcm9wZXJ0eTowLHJlc291cmNlOjAsdHlwZW9mOjAsdm9jYWI6MCxhdXRvQ2FwaXRhbGl6
ZTowLGF1dG9Db3JyZWN0OjAsYXV0b1NhdmU6MCxjb2xvcjowLGl0ZW1Qcm9wOjAsaXRlbVNjb3Bl
OmksaXRlbVR5cGU6MCxpdGVtSUQ6MCxpdGVtUmVmOjAscmVzdWx0czowLHNlY3VyaXR5OjAsdW5z
ZWxlY3RhYmxlOjB9LERPTUF0dHJpYnV0ZU5hbWVzOnthY2NlcHRDaGFyc2V0OiJhY2NlcHQtY2hh
cnNldCIsY2xhc3NOYW1lOiJjbGFzcyIsaHRtbEZvcjoiZm9yIixodHRwRXF1aXY6Imh0dHAtZXF1
aXYifSxET01Qcm9wZXJ0eU5hbWVzOnt9LERPTU11dGF0aW9uTWV0aG9kczp7dmFsdWU6ZnVuY3Rp
b24oZSx0KXtpZihudWxsPT10KXJldHVybiBlLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKTsibnVt
YmVyIiE9PWUudHlwZXx8ITE9PT1lLmhhc0F0dHJpYnV0ZSgidmFsdWUiKT9lLnNldEF0dHJpYnV0
ZSgidmFsdWUiLCIiK3QpOmUudmFsaWRpdHkmJiFlLnZhbGlkaXR5LmJhZElucHV0JiZlLm93bmVy
RG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PWUmJmUuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIrdCl9
fX07ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzNyks
bz1uKDEzNyksaT17cHJvY2Vzc0NoaWxkcmVuVXBkYXRlczpvLmRhbmdlcm91c2x5UHJvY2Vzc0No
aWxkcmVuVXBkYXRlcyxyZXBsYWNlTm9kZVdpdGhNYXJrdXA6ci5kYW5nZXJvdXNseVJlcGxhY2VO
b2RlV2l0aE1hcmt1cH07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHI9bigyKSxvPW4oMTcpLGk9big1KSxhPW4oMTM0KSx1PW4oNikscz0obigwKSx7ZGFuZ2Vy
b3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6ZnVuY3Rpb24oZSx0KXtpZihpLmNhblVzZURPTXx8
cigiNTYiKSx0fHxyKCI1NyIpLCJIVE1MIj09PWUubm9kZU5hbWUmJnIoIjU4IiksInN0cmluZyI9
PT10eXBlb2YgdCl7dmFyIG49YSh0LHUpWzBdO2UucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobixl
KX1lbHNlIG8ucmVwbGFjZUNoaWxkV2l0aFRyZWUoZSx0KX19KTtlLmV4cG9ydHM9c30sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUubWF0Y2gobCk7cmV0
dXJuIHQmJnRbMV0udG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBvKGUsdCl7dmFyIG49YztjfHxzKCEx
KTt2YXIgbz1yKGUpLGk9byYmdShvKTtpZihpKXtuLmlubmVySFRNTD1pWzFdK2UraVsyXTtmb3Io
dmFyIGw9aVswXTtsLS07KW49bi5sYXN0Q2hpbGR9ZWxzZSBuLmlubmVySFRNTD1lO3ZhciBwPW4u
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpO3AubGVuZ3RoJiYodHx8cyghMSksYShwKS5m
b3JFYWNoKHQpKTtmb3IodmFyIGY9QXJyYXkuZnJvbShuLmNoaWxkTm9kZXMpO24ubGFzdENoaWxk
OyluLnJlbW92ZUNoaWxkKG4ubGFzdENoaWxkKTtyZXR1cm4gZn12YXIgaT1uKDUpLGE9bigxMzUp
LHU9bigxMzYpLHM9bigwKSxjPWkuY2FuVXNlRE9NP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOm51bGwsbD0vXlxzKjwoXHcrKS87ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLmxlbmd0aDtpZigoQXJyYXkuaXNBcnJheShl
KXx8Im9iamVjdCIhPT10eXBlb2YgZSYmImZ1bmN0aW9uIiE9PXR5cGVvZiBlKSYmYSghMSksIm51
bWJlciIhPT10eXBlb2YgdCYmYSghMSksMD09PXR8fHQtMSBpbiBlfHxhKCExKSwiZnVuY3Rpb24i
PT09dHlwZW9mIGUuY2FsbGVlJiZhKCExKSxlLmhhc093blByb3BlcnR5KXRyeXtyZXR1cm4gQXJy
YXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSl9Y2F0Y2goZSl7fWZvcih2YXIgbj1BcnJheSh0KSxy
PTA7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gbyhlKXtyZXR1cm4hIWUmJigi
b2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmImxlbmd0aCJpbiBlJiYh
KCJzZXRJbnRlcnZhbCJpbiBlKSYmIm51bWJlciIhPXR5cGVvZiBlLm5vZGVUeXBlJiYoQXJyYXku
aXNBcnJheShlKXx8ImNhbGxlZSJpbiBlfHwiaXRlbSJpbiBlKX1mdW5jdGlvbiBpKGUpe3JldHVy
biBvKGUpP0FycmF5LmlzQXJyYXkoZSk/ZS5zbGljZSgpOnIoZSk6W2VdfXZhciBhPW4oMCk7ZS5l
eHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1
cm4gYXx8aSghMSksZi5oYXNPd25Qcm9wZXJ0eShlKXx8KGU9IioiKSx1Lmhhc093blByb3BlcnR5
KGUpfHwoYS5pbm5lckhUTUw9IioiPT09ZT8iPGxpbmsgLz4iOiI8IitlKyI+PC8iK2UrIj4iLHVb
ZV09IWEuZmlyc3RDaGlsZCksdVtlXT9mW2VdOm51bGx9dmFyIG89big1KSxpPW4oMCksYT1vLmNh
blVzZURPTT9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTpudWxsLHU9e30scz1bMSwnPHNl
bGVjdCBtdWx0aXBsZT0idHJ1ZSI+JywiPC9zZWxlY3Q+Il0sYz1bMSwiPHRhYmxlPiIsIjwvdGFi
bGU+Il0sbD1bMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0s
cD1bMSwnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPicsIjwvc3ZnPiJd
LGY9eyIqIjpbMSwiPzxkaXY+IiwiPC9kaXY+Il0sYXJlYTpbMSwiPG1hcD4iLCI8L21hcD4iXSxj
b2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3Rh
YmxlPiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0scGFyYW06WzEsIjxv
YmplY3Q+IiwiPC9vYmplY3Q+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3Rh
YmxlPiJdLG9wdGdyb3VwOnMsb3B0aW9uOnMsY2FwdGlvbjpjLGNvbGdyb3VwOmMsdGJvZHk6Yyx0
Zm9vdDpjLHRoZWFkOmMsdGQ6bCx0aDpsfTtbImNpcmNsZSIsImNsaXBQYXRoIiwiZGVmcyIsImVs
bGlwc2UiLCJnIiwiaW1hZ2UiLCJsaW5lIiwibGluZWFyR3JhZGllbnQiLCJtYXNrIiwicGF0aCIs
InBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxHcmFkaWVudCIsInJlY3QiLCJz
dG9wIiwidGV4dCIsInRzcGFuIl0uZm9yRWFjaChmdW5jdGlvbihlKXtmW2VdPXAsdVtlXT0hMH0p
LGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMzcpLG89
big0KSxpPXtkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6ZnVuY3Rpb24oZSx0KXt2
YXIgbj1vLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7ci5wcm9jZXNzVXBkYXRlcyhuLHQpfX07ZS5l
eHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihl
KXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5fb3duZXJ8fG51bGw7aWYodCl7dmFyIG49dC5nZXRO
YW1lKCk7aWYobilyZXR1cm4iIFRoaXMgRE9NIG5vZGUgd2FzIHJlbmRlcmVkIGJ5IGAiK24rImAu
In19cmV0dXJuIiJ9ZnVuY3Rpb24gbyhlLHQpe3QmJihYW2UuX3RhZ10mJihudWxsIT10LmNoaWxk
cmVufHxudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSYmdigiMTM3IixlLl90YWcsZS5f
Y3VycmVudEVsZW1lbnQuX293bmVyPyIgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgIitlLl9j
dXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpKyIuIjoiIiksbnVsbCE9dC5kYW5nZXJvdXNs
eVNldElubmVySFRNTCYmKG51bGwhPXQuY2hpbGRyZW4mJnYoIjYwIiksIm9iamVjdCI9PT10eXBl
b2YgdC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmVyBpbiB0LmRhbmdlcm91c2x5U2V0SW5uZXJI
VE1MfHx2KCI2MSIpKSxudWxsIT10LnN0eWxlJiYib2JqZWN0IiE9PXR5cGVvZiB0LnN0eWxlJiZ2
KCI2MiIscihlKSkpfWZ1bmN0aW9uIGkoZSx0LG4scil7aWYoIShyIGluc3RhbmNlb2YgQSkpe3Zh
ciBvPWUuX2hvc3RDb250YWluZXJJbmZvLGk9by5fbm9kZSYmby5fbm9kZS5ub2RlVHlwZT09PUss
dT1pP28uX25vZGU6by5fb3duZXJEb2N1bWVudDtCKHQsdSksci5nZXRSZWFjdE1vdW50UmVhZHko
KS5lbnF1ZXVlKGEse2luc3Q6ZSxyZWdpc3RyYXRpb25OYW1lOnQsbGlzdGVuZXI6bn0pfX1mdW5j
dGlvbiBhKCl7dmFyIGU9dGhpczt4LnB1dExpc3RlbmVyKGUuaW5zdCxlLnJlZ2lzdHJhdGlvbk5h
bWUsZS5saXN0ZW5lcil9ZnVuY3Rpb24gdSgpe3ZhciBlPXRoaXM7Uy5wb3N0TW91bnRXcmFwcGVy
KGUpfWZ1bmN0aW9uIHMoKXt2YXIgZT10aGlzO00ucG9zdE1vdW50V3JhcHBlcihlKX1mdW5jdGlv
biBjKCl7dmFyIGU9dGhpcztOLnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVuY3Rpb24gbCgpe2oudHJh
Y2sodGhpcyl9ZnVuY3Rpb24gcCgpe3ZhciBlPXRoaXM7ZS5fcm9vdE5vZGVJRHx8digiNjMiKTt2
YXIgdD1GKGUpO3N3aXRjaCh0fHx2KCI2NCIpLGUuX3RhZyl7Y2FzZSJpZnJhbWUiOmNhc2Uib2Jq
ZWN0IjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtQLnRyYXBCdWJibGVkRXZlbnQoInRvcExv
YWQiLCJsb2FkIix0KV07YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRpbyI6ZS5fd3JhcHBlclN0
YXRlLmxpc3RlbmVycz1bXTtmb3IodmFyIG4gaW4gWSlZLmhhc093blByb3BlcnR5KG4pJiZlLl93
cmFwcGVyU3RhdGUubGlzdGVuZXJzLnB1c2goUC50cmFwQnViYmxlZEV2ZW50KG4sWVtuXSx0KSk7
YnJlYWs7Y2FzZSJzb3VyY2UiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W1AudHJhcEJ1YmJs
ZWRFdmVudCgidG9wRXJyb3IiLCJlcnJvciIsdCldO2JyZWFrO2Nhc2UiaW1nIjplLl93cmFwcGVy
U3RhdGUubGlzdGVuZXJzPVtQLnRyYXBCdWJibGVkRXZlbnQoInRvcEVycm9yIiwiZXJyb3IiLHQp
LFAudHJhcEJ1YmJsZWRFdmVudCgidG9wTG9hZCIsImxvYWQiLHQpXTticmVhaztjYXNlImZvcm0i
OmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W1AudHJhcEJ1YmJsZWRFdmVudCgidG9wUmVzZXQi
LCJyZXNldCIsdCksUC50cmFwQnViYmxlZEV2ZW50KCJ0b3BTdWJtaXQiLCJzdWJtaXQiLHQpXTti
cmVhaztjYXNlImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6ZS5fd3JhcHBlclN0
YXRlLmxpc3RlbmVycz1bUC50cmFwQnViYmxlZEV2ZW50KCJ0b3BJbnZhbGlkIiwiaW52YWxpZCIs
dCldfX1mdW5jdGlvbiBmKCl7SS5wb3N0VXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBkKGUp
e1ouY2FsbCgkLGUpfHwoUS50ZXN0KGUpfHx2KCI2NSIsZSksJFtlXT0hMCl9ZnVuY3Rpb24gaChl
LHQpe3JldHVybiBlLmluZGV4T2YoIi0iKT49MHx8bnVsbCE9dC5pc31mdW5jdGlvbiBtKGUpe3Zh
ciB0PWUudHlwZTtkKHQpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fdGFnPXQudG9Mb3dl
ckNhc2UoKSx0aGlzLl9uYW1lc3BhY2VVUkk9bnVsbCx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPW51
bGwsdGhpcy5fcHJldmlvdXNTdHlsZT1udWxsLHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51bGws
dGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5fcm9vdE5vZGVJ
RD0wLHRoaXMuX2RvbUlEPTAsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlzLl93cmFw
cGVyU3RhdGU9bnVsbCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCx0aGlzLl9mbGFncz0wfXZh
ciB2PW4oMikseT1uKDMpLGc9bigxMzkpLGI9bigxNDApLF89bigxNyksQz1uKDM4KSx3PW4oMTUp
LEU9big3MCkseD1uKDIwKSxUPW4oMzEpLFA9bigyOCksTz1uKDU4KSxrPW4oNCksUz1uKDE1MCks
Tj1uKDE1MiksST1uKDcxKSxNPW4oMTUzKSxSPShuKDcpLG4oMTU0KSksQT1uKDE2MSksRD0obig2
KSxuKDI3KSksaj0obigwKSxuKDM1KSxuKDQyKSxuKDY0KSksVT0obig0NiksbigxKSxPKSxMPXgu
ZGVsZXRlTGlzdGVuZXIsRj1rLmdldE5vZGVGcm9tSW5zdGFuY2UsQj1QLmxpc3RlblRvLFY9VC5y
ZWdpc3RyYXRpb25OYW1lTW9kdWxlcyxxPXtzdHJpbmc6ITAsbnVtYmVyOiEwfSxXPSJfX2h0bWwi
LEg9e2NoaWxkcmVuOm51bGwsZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6bnVsbCxzdXBwcmVzc0Nv
bnRlbnRFZGl0YWJsZVdhcm5pbmc6bnVsbH0sSz0xMSxZPXt0b3BBYm9ydDoiYWJvcnQiLHRvcENh
blBsYXk6ImNhbnBsYXkiLHRvcENhblBsYXlUaHJvdWdoOiJjYW5wbGF5dGhyb3VnaCIsdG9wRHVy
YXRpb25DaGFuZ2U6ImR1cmF0aW9uY2hhbmdlIix0b3BFbXB0aWVkOiJlbXB0aWVkIix0b3BFbmNy
eXB0ZWQ6ImVuY3J5cHRlZCIsdG9wRW5kZWQ6ImVuZGVkIix0b3BFcnJvcjoiZXJyb3IiLHRvcExv
YWRlZERhdGE6ImxvYWRlZGRhdGEiLHRvcExvYWRlZE1ldGFkYXRhOiJsb2FkZWRtZXRhZGF0YSIs
dG9wTG9hZFN0YXJ0OiJsb2Fkc3RhcnQiLHRvcFBhdXNlOiJwYXVzZSIsdG9wUGxheToicGxheSIs
dG9wUGxheWluZzoicGxheWluZyIsdG9wUHJvZ3Jlc3M6InByb2dyZXNzIix0b3BSYXRlQ2hhbmdl
OiJyYXRlY2hhbmdlIix0b3BTZWVrZWQ6InNlZWtlZCIsdG9wU2Vla2luZzoic2Vla2luZyIsdG9w
U3RhbGxlZDoic3RhbGxlZCIsdG9wU3VzcGVuZDoic3VzcGVuZCIsdG9wVGltZVVwZGF0ZToidGlt
ZXVwZGF0ZSIsdG9wVm9sdW1lQ2hhbmdlOiJ2b2x1bWVjaGFuZ2UiLHRvcFdhaXRpbmc6IndhaXRp
bmcifSx6PXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGVtYmVkOiEwLGhyOiEwLGltZzoh
MCxpbnB1dDohMCxrZXlnZW46ITAsbGluazohMCxtZXRhOiEwLHBhcmFtOiEwLHNvdXJjZTohMCx0
cmFjazohMCx3YnI6ITB9LEc9e2xpc3Rpbmc6ITAscHJlOiEwLHRleHRhcmVhOiEwfSxYPXkoe21l
bnVpdGVtOiEwfSx6KSxRPS9eW2EtekEtWl1bYS16QS1aOl9cLlwtXGRdKiQvLCQ9e30sWj17fS5o
YXNPd25Qcm9wZXJ0eSxKPTE7bS5kaXNwbGF5TmFtZT0iUmVhY3RET01Db21wb25lbnQiLG0uTWl4
aW49e21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMuX3Jvb3ROb2RlSUQ9Sisr
LHRoaXMuX2RvbUlEPW4uX2lkQ291bnRlcisrLHRoaXMuX2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0
Q29udGFpbmVySW5mbz1uO3ZhciBpPXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO3N3aXRjaCh0
aGlzLl90YWcpe2Nhc2UiYXVkaW8iOmNhc2UiZm9ybSI6Y2FzZSJpZnJhbWUiOmNhc2UiaW1nIjpj
YXNlImxpbmsiOmNhc2Uib2JqZWN0IjpjYXNlInNvdXJjZSI6Y2FzZSJ2aWRlbyI6dGhpcy5fd3Jh
cHBlclN0YXRlPXtsaXN0ZW5lcnM6bnVsbH0sZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVl
KHAsdGhpcyk7YnJlYWs7Y2FzZSJpbnB1dCI6Uy5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9Uy5n
ZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobCx0aGlz
KSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocCx0aGlzKTticmVhaztjYXNlIm9wdGlv
biI6Ti5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9Ti5nZXRIb3N0UHJvcHModGhpcyxpKTticmVh
aztjYXNlInNlbGVjdCI6SS5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9SS5nZXRIb3N0UHJvcHMo
dGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocCx0aGlzKTticmVhaztjYXNl
InRleHRhcmVhIjpNLm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1NLmdldEhvc3RQcm9wcyh0aGlz
LGkpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShsLHRoaXMpLGUuZ2V0UmVhY3RNb3Vu
dFJlYWR5KCkuZW5xdWV1ZShwLHRoaXMpfW8odGhpcyxpKTt2YXIgYSxmO251bGwhPXQ/KGE9dC5f
bmFtZXNwYWNlVVJJLGY9dC5fdGFnKTpuLl90YWcmJihhPW4uX25hbWVzcGFjZVVSSSxmPW4uX3Rh
ZyksKG51bGw9PWF8fGE9PT1DLnN2ZyYmImZvcmVpZ25vYmplY3QiPT09ZikmJihhPUMuaHRtbCks
YT09PUMuaHRtbCYmKCJzdmciPT09dGhpcy5fdGFnP2E9Qy5zdmc6Im1hdGgiPT09dGhpcy5fdGFn
JiYoYT1DLm1hdGhtbCkpLHRoaXMuX25hbWVzcGFjZVVSST1hO3ZhciBkO2lmKGUudXNlQ3JlYXRl
RWxlbWVudCl7dmFyIGgsbT1uLl9vd25lckRvY3VtZW50O2lmKGE9PT1DLmh0bWwpaWYoInNjcmlw
dCI9PT10aGlzLl90YWcpe3ZhciB2PW0uY3JlYXRlRWxlbWVudCgiZGl2IikseT10aGlzLl9jdXJy
ZW50RWxlbWVudC50eXBlO3YuaW5uZXJIVE1MPSI8Iit5KyI+PC8iK3krIj4iLGg9di5yZW1vdmVD
aGlsZCh2LmZpcnN0Q2hpbGQpfWVsc2UgaD1pLmlzP20uY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJy
ZW50RWxlbWVudC50eXBlLGkuaXMpOm0uY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVu
dC50eXBlKTtlbHNlIGg9bS5jcmVhdGVFbGVtZW50TlMoYSx0aGlzLl9jdXJyZW50RWxlbWVudC50
eXBlKTtrLnByZWNhY2hlTm9kZSh0aGlzLGgpLHRoaXMuX2ZsYWdzfD1VLmhhc0NhY2hlZENoaWxk
Tm9kZXMsdGhpcy5faG9zdFBhcmVudHx8RS5zZXRBdHRyaWJ1dGVGb3JSb290KGgpLHRoaXMuX3Vw
ZGF0ZURPTVByb3BlcnRpZXMobnVsbCxpLGUpO3ZhciBiPV8oaCk7dGhpcy5fY3JlYXRlSW5pdGlh
bENoaWxkcmVuKGUsaSxyLGIpLGQ9Yn1lbHNle3ZhciB3PXRoaXMuX2NyZWF0ZU9wZW5UYWdNYXJr
dXBBbmRQdXRMaXN0ZW5lcnMoZSxpKSx4PXRoaXMuX2NyZWF0ZUNvbnRlbnRNYXJrdXAoZSxpLHIp
O2Q9IXgmJnpbdGhpcy5fdGFnXT93KyIvPiI6dysiPiIreCsiPC8iK3RoaXMuX2N1cnJlbnRFbGVt
ZW50LnR5cGUrIj4ifXN3aXRjaCh0aGlzLl90YWcpe2Nhc2UiaW5wdXQiOmUuZ2V0UmVhY3RNb3Vu
dFJlYWR5KCkuZW5xdWV1ZSh1LHRoaXMpLGkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUoZy5mb2N1c0RPTUNvbXBvbmVudCx0aGlzKTticmVhaztjYXNlInRleHRhcmVh
IjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocyx0aGlzKSxpLmF1dG9Gb2N1cyYmZS5n
ZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJl
YWs7Y2FzZSJzZWxlY3QiOmNhc2UiYnV0dG9uIjppLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50
UmVhZHkoKS5lbnF1ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJvcHRp
b24iOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpfXJldHVybiBkfSxfY3Jl
YXRlT3BlblRhZ01hcmt1cEFuZFB1dExpc3RlbmVyczpmdW5jdGlvbihlLHQpe3ZhciBuPSI8Iit0
aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO2Zvcih2YXIgciBpbiB0KWlmKHQuaGFzT3duUHJvcGVy
dHkocikpe3ZhciBvPXRbcl07aWYobnVsbCE9bylpZihWLmhhc093blByb3BlcnR5KHIpKW8mJmko
dGhpcyxyLG8sZSk7ZWxzZXsic3R5bGUiPT09ciYmKG8mJihvPXRoaXMuX3ByZXZpb3VzU3R5bGVD
b3B5PXkoe30sdC5zdHlsZSkpLG89Yi5jcmVhdGVNYXJrdXBGb3JTdHlsZXMobyx0aGlzKSk7dmFy
IGE9bnVsbDtudWxsIT10aGlzLl90YWcmJmgodGhpcy5fdGFnLHQpP0guaGFzT3duUHJvcGVydHko
cil8fChhPUUuY3JlYXRlTWFya3VwRm9yQ3VzdG9tQXR0cmlidXRlKHIsbykpOmE9RS5jcmVhdGVN
YXJrdXBGb3JQcm9wZXJ0eShyLG8pLGEmJihuKz0iICIrYSl9fXJldHVybiBlLnJlbmRlclRvU3Rh
dGljTWFya3VwP246KHRoaXMuX2hvc3RQYXJlbnR8fChuKz0iICIrRS5jcmVhdGVNYXJrdXBGb3JS
b290KCkpLG4rPSIgIitFLmNyZWF0ZU1hcmt1cEZvcklEKHRoaXMuX2RvbUlEKSl9LF9jcmVhdGVD
b250ZW50TWFya3VwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0iIixvPXQuZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUw7aWYobnVsbCE9byludWxsIT1vLl9faHRtbCYmKHI9by5fX2h0bWwpO2Vsc2V7dmFy
IGk9cVt0eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxsLGE9bnVsbCE9aT9udWxsOnQu
Y2hpbGRyZW47aWYobnVsbCE9aSlyPUQoaSk7ZWxzZSBpZihudWxsIT1hKXt2YXIgdT10aGlzLm1v
dW50Q2hpbGRyZW4oYSxlLG4pO3I9dS5qb2luKCIiKX19cmV0dXJuIEdbdGhpcy5fdGFnXSYmIlxu
Ij09PXIuY2hhckF0KDApPyJcbiIrcjpyfSxfY3JlYXRlSW5pdGlhbENoaWxkcmVuOmZ1bmN0aW9u
KGUsdCxuLHIpe3ZhciBvPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7aWYobnVsbCE9byludWxs
IT1vLl9faHRtbCYmXy5xdWV1ZUhUTUwocixvLl9faHRtbCk7ZWxzZXt2YXIgaT1xW3R5cGVvZiB0
LmNoaWxkcmVuXT90LmNoaWxkcmVuOm51bGwsYT1udWxsIT1pP251bGw6dC5jaGlsZHJlbjtpZihu
dWxsIT1pKSIiIT09aSYmXy5xdWV1ZVRleHQocixpKTtlbHNlIGlmKG51bGwhPWEpZm9yKHZhciB1
PXRoaXMubW91bnRDaGlsZHJlbihhLGUsbikscz0wO3M8dS5sZW5ndGg7cysrKV8ucXVldWVDaGls
ZChyLHVbc10pfX0scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5f
Y3VycmVudEVsZW1lbnQ7dGhpcy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlzLnVwZGF0ZUNvbXBvbmVu
dCh0LHIsZSxuKX0sdXBkYXRlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXQucHJv
cHMsYT10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztzd2l0Y2godGhpcy5fdGFnKXtjYXNlImlu
cHV0IjppPVMuZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1TLmdldEhvc3RQcm9wcyh0aGlzLGEpO2Jy
ZWFrO2Nhc2Uib3B0aW9uIjppPU4uZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1OLmdldEhvc3RQcm9w
cyh0aGlzLGEpO2JyZWFrO2Nhc2Uic2VsZWN0IjppPUkuZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1J
LmdldEhvc3RQcm9wcyh0aGlzLGEpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOmk9TS5nZXRIb3N0UHJv
cHModGhpcyxpKSxhPU0uZ2V0SG9zdFByb3BzKHRoaXMsYSl9c3dpdGNoKG8odGhpcyxhKSx0aGlz
Ll91cGRhdGVET01Qcm9wZXJ0aWVzKGksYSxlKSx0aGlzLl91cGRhdGVET01DaGlsZHJlbihpLGEs
ZSxyKSx0aGlzLl90YWcpe2Nhc2UiaW5wdXQiOlMudXBkYXRlV3JhcHBlcih0aGlzKTticmVhaztj
YXNlInRleHRhcmVhIjpNLnVwZGF0ZVdyYXBwZXIodGhpcyk7YnJlYWs7Y2FzZSJzZWxlY3QiOmUu
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShmLHRoaXMpfX0sX3VwZGF0ZURPTVByb3BlcnRp
ZXM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8sYTtmb3IociBpbiBlKWlmKCF0Lmhhc093blByb3Bl
cnR5KHIpJiZlLmhhc093blByb3BlcnR5KHIpJiZudWxsIT1lW3JdKWlmKCJzdHlsZSI9PT1yKXt2
YXIgdT10aGlzLl9wcmV2aW91c1N0eWxlQ29weTtmb3IobyBpbiB1KXUuaGFzT3duUHJvcGVydHko
bykmJihhPWF8fHt9LGFbb109IiIpO3RoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51bGx9ZWxzZSBW
Lmhhc093blByb3BlcnR5KHIpP2Vbcl0mJkwodGhpcyxyKTpoKHRoaXMuX3RhZyxlKT9ILmhhc093
blByb3BlcnR5KHIpfHxFLmRlbGV0ZVZhbHVlRm9yQXR0cmlidXRlKEYodGhpcykscik6KHcucHJv
cGVydGllc1tyXXx8dy5pc0N1c3RvbUF0dHJpYnV0ZShyKSkmJkUuZGVsZXRlVmFsdWVGb3JQcm9w
ZXJ0eShGKHRoaXMpLHIpO2ZvcihyIGluIHQpe3ZhciBzPXRbcl0sYz0ic3R5bGUiPT09cj90aGlz
Ll9wcmV2aW91c1N0eWxlQ29weTpudWxsIT1lP2Vbcl06dm9pZCAwO2lmKHQuaGFzT3duUHJvcGVy
dHkocikmJnMhPT1jJiYobnVsbCE9c3x8bnVsbCE9YykpaWYoInN0eWxlIj09PXIpaWYocz9zPXRo
aXMuX3ByZXZpb3VzU3R5bGVDb3B5PXkoe30scyk6dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9bnVs
bCxjKXtmb3IobyBpbiBjKSFjLmhhc093blByb3BlcnR5KG8pfHxzJiZzLmhhc093blByb3BlcnR5
KG8pfHwoYT1hfHx7fSxhW29dPSIiKTtmb3IobyBpbiBzKXMuaGFzT3duUHJvcGVydHkobykmJmNb
b10hPT1zW29dJiYoYT1hfHx7fSxhW29dPXNbb10pfWVsc2UgYT1zO2Vsc2UgaWYoVi5oYXNPd25Q
cm9wZXJ0eShyKSlzP2kodGhpcyxyLHMsbik6YyYmTCh0aGlzLHIpO2Vsc2UgaWYoaCh0aGlzLl90
YWcsdCkpSC5oYXNPd25Qcm9wZXJ0eShyKXx8RS5zZXRWYWx1ZUZvckF0dHJpYnV0ZShGKHRoaXMp
LHIscyk7ZWxzZSBpZih3LnByb3BlcnRpZXNbcl18fHcuaXNDdXN0b21BdHRyaWJ1dGUocikpe3Zh
ciBsPUYodGhpcyk7bnVsbCE9cz9FLnNldFZhbHVlRm9yUHJvcGVydHkobCxyLHMpOkUuZGVsZXRl
VmFsdWVGb3JQcm9wZXJ0eShsLHIpfX1hJiZiLnNldFZhbHVlRm9yU3R5bGVzKEYodGhpcyksYSx0
aGlzKX0sX3VwZGF0ZURPTUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXFbdHlwZW9m
IGUuY2hpbGRyZW5dP2UuY2hpbGRyZW46bnVsbCxpPXFbdHlwZW9mIHQuY2hpbGRyZW5dP3QuY2hp
bGRyZW46bnVsbCxhPWUuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJmUuZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUwuX19odG1sLHU9dC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmdC5kYW5nZXJvdXNs
eVNldElubmVySFRNTC5fX2h0bWwscz1udWxsIT1vP251bGw6ZS5jaGlsZHJlbixjPW51bGwhPWk/
bnVsbDp0LmNoaWxkcmVuLGw9bnVsbCE9b3x8bnVsbCE9YSxwPW51bGwhPWl8fG51bGwhPXU7bnVs
bCE9cyYmbnVsbD09Yz90aGlzLnVwZGF0ZUNoaWxkcmVuKG51bGwsbixyKTpsJiYhcCYmdGhpcy51
cGRhdGVUZXh0Q29udGVudCgiIiksbnVsbCE9aT9vIT09aSYmdGhpcy51cGRhdGVUZXh0Q29udGVu
dCgiIitpKTpudWxsIT11P2EhPT11JiZ0aGlzLnVwZGF0ZU1hcmt1cCgiIit1KTpudWxsIT1jJiZ0
aGlzLnVwZGF0ZUNoaWxkcmVuKGMsbixyKX0sZ2V0SG9zdE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4g
Rih0aGlzKX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihlKXtzd2l0Y2godGhpcy5fdGFnKXtj
YXNlImF1ZGlvIjpjYXNlImZvcm0iOmNhc2UiaWZyYW1lIjpjYXNlImltZyI6Y2FzZSJsaW5rIjpj
YXNlIm9iamVjdCI6Y2FzZSJzb3VyY2UiOmNhc2UidmlkZW8iOnZhciB0PXRoaXMuX3dyYXBwZXJT
dGF0ZS5saXN0ZW5lcnM7aWYodClmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl0W25dLnJlbW92
ZSgpO2JyZWFrO2Nhc2UiaW5wdXQiOmNhc2UidGV4dGFyZWEiOmouc3RvcFRyYWNraW5nKHRoaXMp
O2JyZWFrO2Nhc2UiaHRtbCI6Y2FzZSJoZWFkIjpjYXNlImJvZHkiOnYoIjY2Iix0aGlzLl90YWcp
fXRoaXMudW5tb3VudENoaWxkcmVuKGUpLGsudW5jYWNoZU5vZGUodGhpcykseC5kZWxldGVBbGxM
aXN0ZW5lcnModGhpcyksdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMuX2RvbUlEPTAsdGhpcy5fd3Jh
cHBlclN0YXRlPW51bGx9LGdldFB1YmxpY0luc3RhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIEYodGhp
cyl9fSx5KG0ucHJvdG90eXBlLG0uTWl4aW4sUi5NaXhpbiksZS5leHBvcnRzPW19LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big0KSxvPW4oNjgpLGk9e2ZvY3VzRE9NQ29tcG9u
ZW50OmZ1bmN0aW9uKCl7byhyLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcykpfX07ZS5leHBvcnRz
PWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big2OSksbz1uKDUpLGk9KG4o
NyksbigxNDEpLG4oMTQzKSksYT1uKDE0NCksdT1uKDE0Nikscz0obigxKSx1KGZ1bmN0aW9uKGUp
e3JldHVybiBhKGUpfSkpLGM9ITEsbD0iY3NzRmxvYXQiO2lmKG8uY2FuVXNlRE9NKXt2YXIgcD1k
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZTt0cnl7cC5mb250PSIifWNhdGNoKGUp
e2M9ITB9dm9pZCAwPT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0JiYo
bD0ic3R5bGVGbG9hdCIpfXZhciBmPXtjcmVhdGVNYXJrdXBGb3JTdHlsZXM6ZnVuY3Rpb24oZSx0
KXt2YXIgbj0iIjtmb3IodmFyIHIgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHIpKXt2YXIgbz0w
PT09ci5pbmRleE9mKCItLSIpLGE9ZVtyXTtudWxsIT1hJiYobis9cyhyKSsiOiIsbis9aShyLGEs
dCxvKSsiOyIpfXJldHVybiBufHxudWxsfSxzZXRWYWx1ZUZvclN0eWxlczpmdW5jdGlvbihlLHQs
bil7dmFyIG89ZS5zdHlsZTtmb3IodmFyIGEgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGEpKXt2
YXIgdT0wPT09YS5pbmRleE9mKCItLSIpLHM9aShhLHRbYV0sbix1KTtpZigiZmxvYXQiIT09YSYm
ImNzc0Zsb2F0IiE9PWF8fChhPWwpLHUpby5zZXRQcm9wZXJ0eShhLHMpO2Vsc2UgaWYocylvW2Fd
PXM7ZWxzZXt2YXIgcD1jJiZyLnNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uc1thXTtpZihwKWZv
cih2YXIgZiBpbiBwKW9bZl09IiI7ZWxzZSBvW2FdPSIifX19fTtlLmV4cG9ydHM9Zn0sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBvKGUucmVwbGFjZShp
LCJtcy0iKSl9dmFyIG89bigxNDIpLGk9L14tbXMtLztlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlLnJlcGxhY2UobyxmdW5jdGlv
bihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KX12YXIgbz0vLSguKS9nO2UuZXhwb3J0cz1y
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7aWYobnVs
bD09dHx8ImJvb2xlYW4iPT09dHlwZW9mIHR8fCIiPT09dClyZXR1cm4iIjt2YXIgbz1pc05hTih0
KTtpZihyfHxvfHwwPT09dHx8aS5oYXNPd25Qcm9wZXJ0eShlKSYmaVtlXSlyZXR1cm4iIit0O2lm
KCJzdHJpbmciPT09dHlwZW9mIHQpe3Q9dC50cmltKCl9cmV0dXJuIHQrInB4In12YXIgbz1uKDY5
KSxpPShuKDEpLG8uaXNVbml0bGVzc051bWJlcik7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhlKS5yZXBsYWNlKGksIi1tcy0i
KX12YXIgbz1uKDE0NSksaT0vXm1zLS87ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZS5yZXBsYWNlKG8sIi0kMSIpLnRvTG93ZXJD
YXNlKCl9dmFyIG89LyhbQS1aXSkvZztlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PXt9O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4g
dC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZS5jYWxsKHRoaXMsbikpLHRbbl19fWUuZXhwb3J0
cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuJyIn
K28oZSkrJyInfXZhciBvPW4oMjcpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7by5lbnF1ZXVlRXZlbnRzKGUpLG8ucHJvY2Vzc0V2ZW50UXVl
dWUoITEpfXZhciBvPW4oMjApLGk9e2hhbmRsZVRvcExldmVsOmZ1bmN0aW9uKGUsdCxuLGkpe3Io
by5leHRyYWN0RXZlbnRzKGUsdCxuLGkpKX19O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj17fTtyZXR1cm4gbltlLnRvTG93ZXJD
YXNlKCldPXQudG9Mb3dlckNhc2UoKSxuWyJXZWJraXQiK2VdPSJ3ZWJraXQiK3QsblsiTW96Iitl
XT0ibW96Iit0LG5bIm1zIitlXT0iTVMiK3QsblsiTyIrZV09Im8iK3QudG9Mb3dlckNhc2UoKSxu
fWZ1bmN0aW9uIG8oZSl7aWYodVtlXSlyZXR1cm4gdVtlXTtpZighYVtlXSlyZXR1cm4gZTt2YXIg
dD1hW2VdO2Zvcih2YXIgbiBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobikmJm4gaW4gcylyZXR1
cm4gdVtlXT10W25dO3JldHVybiIifXZhciBpPW4oNSksYT17YW5pbWF0aW9uZW5kOnIoIkFuaW1h
dGlvbiIsIkFuaW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpyKCJBbmltYXRpb24iLCJB
bmltYXRpb25JdGVyYXRpb24iKSxhbmltYXRpb25zdGFydDpyKCJBbmltYXRpb24iLCJBbmltYXRp
b25TdGFydCIpLHRyYW5zaXRpb25lbmQ6cigiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0s
dT17fSxzPXt9O2kuY2FuVXNlRE9NJiYocz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5z
dHlsZSwiQW5pbWF0aW9uRXZlbnQiaW4gd2luZG93fHwoZGVsZXRlIGEuYW5pbWF0aW9uZW5kLmFu
aW1hdGlvbixkZWxldGUgYS5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBhLmFu
aW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksIlRyYW5zaXRpb25FdmVudCJpbiB3aW5kb3d8fGRlbGV0
ZSBhLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbiksZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMuX3Jvb3ROb2RlSUQmJmYudXBkYXRlV3Jh
cHBlcih0aGlzKX1mdW5jdGlvbiBvKGUpe3JldHVybiJjaGVja2JveCI9PT1lLnR5cGV8fCJyYWRp
byI9PT1lLnR5cGU/bnVsbCE9ZS5jaGVja2VkOm51bGwhPWUudmFsdWV9ZnVuY3Rpb24gaShlKXt2
YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPWMuZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7
cC5hc2FwKHIsdGhpcyk7dmFyIG89dC5uYW1lO2lmKCJyYWRpbyI9PT10LnR5cGUmJm51bGwhPW8p
e2Zvcih2YXIgaT1sLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyksdT1pO3UucGFyZW50Tm9kZTsp
dT11LnBhcmVudE5vZGU7Zm9yKHZhciBzPXUucXVlcnlTZWxlY3RvckFsbCgiaW5wdXRbbmFtZT0i
K0pTT04uc3RyaW5naWZ5KCIiK28pKyddW3R5cGU9InJhZGlvIl0nKSxmPTA7ZjxzLmxlbmd0aDtm
Kyspe3ZhciBkPXNbZl07aWYoZCE9PWkmJmQuZm9ybT09PWkuZm9ybSl7dmFyIGg9bC5nZXRJbnN0
YW5jZUZyb21Ob2RlKGQpO2h8fGEoIjkwIikscC5hc2FwKHIsaCl9fX1yZXR1cm4gbn12YXIgYT1u
KDIpLHU9bigzKSxzPW4oNzApLGM9big0MCksbD1uKDQpLHA9big4KSxmPShuKDApLG4oMSkse2dl
dEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe3ZhciBuPWMuZ2V0VmFsdWUodCkscj1jLmdldENoZWNr
ZWQodCk7cmV0dXJuIHUoe3R5cGU6dm9pZCAwLHN0ZXA6dm9pZCAwLG1pbjp2b2lkIDAsbWF4OnZv
aWQgMH0sdCx7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6
bnVsbCE9bj9uOmUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsY2hlY2tlZDpudWxsIT1yP3I6
ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkLG9uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5v
bkNoYW5nZX0pfSxtb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRlZmF1bHRWYWx1
ZTtlLl93cmFwcGVyU3RhdGU9e2luaXRpYWxDaGVja2VkOm51bGwhPXQuY2hlY2tlZD90LmNoZWNr
ZWQ6dC5kZWZhdWx0Q2hlY2tlZCxpbml0aWFsVmFsdWU6bnVsbCE9dC52YWx1ZT90LnZhbHVlOm4s
bGlzdGVuZXJzOm51bGwsb25DaGFuZ2U6aS5iaW5kKGUpLGNvbnRyb2xsZWQ6byh0KX19LHVwZGF0
ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj10LmNo
ZWNrZWQ7bnVsbCE9biYmcy5zZXRWYWx1ZUZvclByb3BlcnR5KGwuZ2V0Tm9kZUZyb21JbnN0YW5j
ZShlKSwiY2hlY2tlZCIsbnx8ITEpO3ZhciByPWwuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxvPWMu
Z2V0VmFsdWUodCk7aWYobnVsbCE9bylpZigwPT09byYmIiI9PT1yLnZhbHVlKXIudmFsdWU9IjAi
O2Vsc2UgaWYoIm51bWJlciI9PT10LnR5cGUpe3ZhciBpPXBhcnNlRmxvYXQoci52YWx1ZSwxMCl8
fDA7KG8hPWl8fG89PWkmJnIudmFsdWUhPW8pJiYoci52YWx1ZT0iIitvKX1lbHNlIHIudmFsdWUh
PT0iIitvJiYoci52YWx1ZT0iIitvKTtlbHNlIG51bGw9PXQudmFsdWUmJm51bGwhPXQuZGVmYXVs
dFZhbHVlJiZyLmRlZmF1bHRWYWx1ZSE9PSIiK3QuZGVmYXVsdFZhbHVlJiYoci5kZWZhdWx0VmFs
dWU9IiIrdC5kZWZhdWx0VmFsdWUpLG51bGw9PXQuY2hlY2tlZCYmbnVsbCE9dC5kZWZhdWx0Q2hl
Y2tlZCYmKHIuZGVmYXVsdENoZWNrZWQ9ISF0LmRlZmF1bHRDaGVja2VkKX0scG9zdE1vdW50V3Jh
cHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPWwuZ2V0Tm9k
ZUZyb21JbnN0YW5jZShlKTtzd2l0Y2godC50eXBlKXtjYXNlInN1Ym1pdCI6Y2FzZSJyZXNldCI6
YnJlYWs7Y2FzZSJjb2xvciI6Y2FzZSJkYXRlIjpjYXNlImRhdGV0aW1lIjpjYXNlImRhdGV0aW1l
LWxvY2FsIjpjYXNlIm1vbnRoIjpjYXNlInRpbWUiOmNhc2Uid2VlayI6bi52YWx1ZT0iIixuLnZh
bHVlPW4uZGVmYXVsdFZhbHVlO2JyZWFrO2RlZmF1bHQ6bi52YWx1ZT1uLnZhbHVlfXZhciByPW4u
bmFtZTsiIiE9PXImJihuLm5hbWU9IiIpLG4uZGVmYXVsdENoZWNrZWQ9IW4uZGVmYXVsdENoZWNr
ZWQsbi5kZWZhdWx0Q2hlY2tlZD0hbi5kZWZhdWx0Q2hlY2tlZCwiIiE9PXImJihuLm5hbWU9cil9
fSk7ZS5leHBvcnRzPWZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPSJT
RUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCJ9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD0iIjtyZXR1cm4gaS5DaGlsZHJl
bi5mb3JFYWNoKGUsZnVuY3Rpb24oZSl7bnVsbCE9ZSYmKCJzdHJpbmciPT09dHlwZW9mIGV8fCJu
dW1iZXIiPT09dHlwZW9mIGU/dCs9ZTpzfHwocz0hMCkpfSksdH12YXIgbz1uKDMpLGk9bigxMyks
YT1uKDQpLHU9big3MSkscz0obigxKSwhMSksYz17bW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCxu
KXt2YXIgbz1udWxsO2lmKG51bGwhPW4pe3ZhciBpPW47Im9wdGdyb3VwIj09PWkuX3RhZyYmKGk9
aS5faG9zdFBhcmVudCksbnVsbCE9aSYmInNlbGVjdCI9PT1pLl90YWcmJihvPXUuZ2V0U2VsZWN0
VmFsdWVDb250ZXh0KGkpKX12YXIgYT1udWxsO2lmKG51bGwhPW8pe3ZhciBzO2lmKHM9bnVsbCE9
dC52YWx1ZT90LnZhbHVlKyIiOnIodC5jaGlsZHJlbiksYT0hMSxBcnJheS5pc0FycmF5KG8pKXtm
b3IodmFyIGM9MDtjPG8ubGVuZ3RoO2MrKylpZigiIitvW2NdPT09cyl7YT0hMDticmVha319ZWxz
ZSBhPSIiK289PT1zfWUuX3dyYXBwZXJTdGF0ZT17c2VsZWN0ZWQ6YX19LHBvc3RNb3VudFdyYXBw
ZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHM7aWYobnVsbCE9dC52
YWx1ZSl7YS5nZXROb2RlRnJvbUluc3RhbmNlKGUpLnNldEF0dHJpYnV0ZSgidmFsdWUiLHQudmFs
dWUpfX0sZ2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7dmFyIG49byh7c2VsZWN0ZWQ6dm9pZCAw
LGNoaWxkcmVuOnZvaWQgMH0sdCk7bnVsbCE9ZS5fd3JhcHBlclN0YXRlLnNlbGVjdGVkJiYobi5z
ZWxlY3RlZD1lLl93cmFwcGVyU3RhdGUuc2VsZWN0ZWQpO3ZhciBpPXIodC5jaGlsZHJlbik7cmV0
dXJuIGkmJihuLmNoaWxkcmVuPWkpLG59fTtlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dGhpcy5fcm9vdE5vZGVJRCYmbC51cGRhdGVXcmFwcGVy
KHRoaXMpfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsbj11
LmV4ZWN1dGVPbkNoYW5nZSh0LGUpO3JldHVybiBjLmFzYXAocix0aGlzKSxufXZhciBpPW4oMiks
YT1uKDMpLHU9big0MCkscz1uKDQpLGM9big4KSxsPShuKDApLG4oMSkse2dldEhvc3RQcm9wczpm
dW5jdGlvbihlLHQpe3JldHVybiBudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZpKCI5
MSIpLGEoe30sdCx7dmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsY2hpbGRyZW46IiIr
ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxvbkNoYW5nZTplLl93cmFwcGVyU3RhdGUub25D
aGFuZ2V9KX0sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49dS5nZXRWYWx1ZSh0KSxy
PW47aWYobnVsbD09bil7dmFyIGE9dC5kZWZhdWx0VmFsdWUscz10LmNoaWxkcmVuO251bGwhPXMm
JihudWxsIT1hJiZpKCI5MiIpLEFycmF5LmlzQXJyYXkocykmJihzLmxlbmd0aDw9MXx8aSgiOTMi
KSxzPXNbMF0pLGE9IiIrcyksbnVsbD09YSYmKGE9IiIpLHI9YX1lLl93cmFwcGVyU3RhdGU9e2lu
aXRpYWxWYWx1ZToiIityLGxpc3RlbmVyczpudWxsLG9uQ2hhbmdlOm8uYmluZChlKX19LHVwZGF0
ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj1zLmdl
dE5vZGVGcm9tSW5zdGFuY2UoZSkscj11LmdldFZhbHVlKHQpO2lmKG51bGwhPXIpe3ZhciBvPSIi
K3I7byE9PW4udmFsdWUmJihuLnZhbHVlPW8pLG51bGw9PXQuZGVmYXVsdFZhbHVlJiYobi5kZWZh
dWx0VmFsdWU9byl9bnVsbCE9dC5kZWZhdWx0VmFsdWUmJihuLmRlZmF1bHRWYWx1ZT10LmRlZmF1
bHRWYWx1ZSl9LHBvc3RNb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9cy5nZXROb2RlRnJv
bUluc3RhbmNlKGUpLG49dC50ZXh0Q29udGVudDtuPT09ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxW
YWx1ZSYmKHQudmFsdWU9bil9fSk7ZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJue3R5cGU6IklOU0VSVF9NQVJLVVAiLGNvbnRl
bnQ6ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6bixhZnRlck5vZGU6dH19
ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJue3R5cGU6Ik1PVkVfRVhJU1RJTkciLGNvbnRlbnQ6bnVs
bCxmcm9tSW5kZXg6ZS5fbW91bnRJbmRleCxmcm9tTm9kZTpmLmdldEhvc3ROb2RlKGUpLHRvSW5k
ZXg6bixhZnRlck5vZGU6dH19ZnVuY3Rpb24gaShlLHQpe3JldHVybnt0eXBlOiJSRU1PVkVfTk9E
RSIsY29udGVudDpudWxsLGZyb21JbmRleDplLl9tb3VudEluZGV4LGZyb21Ob2RlOnQsdG9JbmRl
eDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiBhKGUpe3JldHVybnt0eXBlOiJTRVRfTUFS
S1VQIixjb250ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0luZGV4Om51bGws
YWZ0ZXJOb2RlOm51bGx9fWZ1bmN0aW9uIHUoZSl7cmV0dXJue3R5cGU6IlRFWFRfQ09OVEVOVCIs
Y29udGVudDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51bGwsdG9JbmRleDpudWxsLGFmdGVy
Tm9kZTpudWxsfX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIHQmJihlPWV8fFtdLGUucHVzaCh0KSks
ZX1mdW5jdGlvbiBjKGUsdCl7cC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzKGUsdCl9dmFyIGw9bigy
KSxwPW4oNDEpLGY9KG4oMjIpLG4oNyksbigxMCksbigxNikpLGQ9bigxNTUpLGg9KG4oNiksbigx
NjApKSxtPShuKDApLHtNaXhpbjp7X3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuOmZ1bmN0
aW9uKGUsdCxuKXtyZXR1cm4gZC5pbnN0YW50aWF0ZUNoaWxkcmVuKGUsdCxuKX0sX3JlY29uY2ls
ZXJVcGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGEsdT0wO3JldHVybiBh
PWgodCx1KSxkLnVwZGF0ZUNoaWxkcmVuKGUsYSxuLHIsbyx0aGlzLHRoaXMuX2hvc3RDb250YWlu
ZXJJbmZvLGksdSksYX0sbW91bnRDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5f
cmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW4oZSx0LG4pO3RoaXMuX3JlbmRlcmVkQ2hpbGRy
ZW49cjt2YXIgbz1bXSxpPTA7Zm9yKHZhciBhIGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eShhKSl7
dmFyIHU9clthXSxzPTAsYz1mLm1vdW50Q29tcG9uZW50KHUsdCx0aGlzLHRoaXMuX2hvc3RDb250
YWluZXJJbmZvLG4scyk7dS5fbW91bnRJbmRleD1pKyssby5wdXNoKGMpfXJldHVybiBvfSx1cGRh
dGVUZXh0Q29udGVudDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2Qu
dW5tb3VudENoaWxkcmVuKHQsITEpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikm
JmwoIjExOCIpO2ModGhpcyxbdShlKV0pfSx1cGRhdGVNYXJrdXA6ZnVuY3Rpb24oZSl7dmFyIHQ9
dGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtkLnVubW91bnRDaGlsZHJlbih0LCExKTtmb3IodmFyIG4g
aW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZsKCIxMTgiKTtjKHRoaXMsW2EoZSldKX0sdXBkYXRl
Q2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3RoaXMuX3VwZGF0ZUNoaWxkcmVuKGUsdCxuKX0sX3Vw
ZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9yZW5kZXJlZENoaWxkcmVu
LG89e30saT1bXSxhPXRoaXMuX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbihyLGUsaSxvLHQsbik7
aWYoYXx8cil7dmFyIHUsbD1udWxsLHA9MCxkPTAsaD0wLG09bnVsbDtmb3IodSBpbiBhKWlmKGEu
aGFzT3duUHJvcGVydHkodSkpe3ZhciB2PXImJnJbdV0seT1hW3VdO3Y9PT15PyhsPXMobCx0aGlz
Lm1vdmVDaGlsZCh2LG0scCxkKSksZD1NYXRoLm1heCh2Ll9tb3VudEluZGV4LGQpLHYuX21vdW50
SW5kZXg9cCk6KHYmJihkPU1hdGgubWF4KHYuX21vdW50SW5kZXgsZCkpLGw9cyhsLHRoaXMuX21v
dW50Q2hpbGRBdEluZGV4KHksaVtoXSxtLHAsdCxuKSksaCsrKSxwKyssbT1mLmdldEhvc3ROb2Rl
KHkpfWZvcih1IGluIG8pby5oYXNPd25Qcm9wZXJ0eSh1KSYmKGw9cyhsLHRoaXMuX3VubW91bnRD
aGlsZChyW3VdLG9bdV0pKSk7bCYmYyh0aGlzLGwpLHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW49YX19
LHVubW91bnRDaGlsZHJlbjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVu
O2QudW5tb3VudENoaWxkcmVuKHQsZSksdGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1udWxsfSxtb3Zl
Q2hpbGQ6ZnVuY3Rpb24oZSx0LG4scil7aWYoZS5fbW91bnRJbmRleDxyKXJldHVybiBvKGUsdCxu
KX0sY3JlYXRlQ2hpbGQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiByKG4sdCxlLl9tb3VudEluZGV4
KX0scmVtb3ZlQ2hpbGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaShlLHQpfSxfbW91bnRDaGlsZEF0
SW5kZXg6ZnVuY3Rpb24oZSx0LG4scixvLGkpe3JldHVybiBlLl9tb3VudEluZGV4PXIsdGhpcy5j
cmVhdGVDaGlsZChlLG4sdCl9LF91bm1vdW50Q2hpbGQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlz
LnJlbW92ZUNoaWxkKGUsdCk7cmV0dXJuIGUuX21vdW50SW5kZXg9bnVsbCxufX19KTtlLmV4cG9y
dHM9bX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7ZnVuY3Rpb24g
cihlLHQsbixyKXt2YXIgbz12b2lkIDA9PT1lW25dO251bGwhPXQmJm8mJihlW25dPWkodCwhMCkp
fXZhciBvPW4oMTYpLGk9big3MyksYT0obig0NCksbig0MykpLHU9big3Nyk7bigxKTsidW5kZWZp
bmVkIiE9PXR5cGVvZiB0JiZPYmplY3Qoe05PREVfRU5WOiJwcm9kdWN0aW9uIixQVUJMSUNfVVJM
OiIuIn0pO3ZhciBzPXtpbnN0YW50aWF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLG8pe2lmKG51
bGw9PWUpcmV0dXJuIG51bGw7dmFyIGk9e307cmV0dXJuIHUoZSxyLGkpLGl9LHVwZGF0ZUNoaWxk
cmVuOmZ1bmN0aW9uKGUsdCxuLHIsdSxzLGMsbCxwKXtpZih0fHxlKXt2YXIgZixkO2ZvcihmIGlu
IHQpaWYodC5oYXNPd25Qcm9wZXJ0eShmKSl7ZD1lJiZlW2ZdO3ZhciBoPWQmJmQuX2N1cnJlbnRF
bGVtZW50LG09dFtmXTtpZihudWxsIT1kJiZhKGgsbSkpby5yZWNlaXZlQ29tcG9uZW50KGQsbSx1
LGwpLHRbZl09ZDtlbHNle2QmJihyW2ZdPW8uZ2V0SG9zdE5vZGUoZCksby51bm1vdW50Q29tcG9u
ZW50KGQsITEpKTt2YXIgdj1pKG0sITApO3RbZl09djt2YXIgeT1vLm1vdW50Q29tcG9uZW50KHYs
dSxzLGMsbCxwKTtuLnB1c2goeSl9fWZvcihmIGluIGUpIWUuaGFzT3duUHJvcGVydHkoZil8fHQm
JnQuaGFzT3duUHJvcGVydHkoZil8fChkPWVbZl0scltmXT1vLmdldEhvc3ROb2RlKGQpLG8udW5t
b3VudENvbXBvbmVudChkLCExKSl9fSx1bm1vdW50Q2hpbGRyZW46ZnVuY3Rpb24oZSx0KXtmb3Io
dmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5KG4pKXt2YXIgcj1lW25dO28udW5tb3VudENv
bXBvbmVudChyLHQpfX19O2UuZXhwb3J0cz1zfSkuY2FsbCh0LG4oNzIpKX0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe31mdW5jdGlvbiBvKGUpe3JldHVybiEoIWUu
cHJvdG90eXBlfHwhZS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCl9ZnVuY3Rpb24gaShlKXty
ZXR1cm4hKCFlLnByb3RvdHlwZXx8IWUucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50KX12
YXIgYT1uKDIpLHU9bigzKSxzPW4oMTMpLGM9big0MSksbD1uKDEwKSxwPW4oMzMpLGY9bigyMiks
ZD0obig3KSxuKDc0KSksaD1uKDE2KSxtPW4oMjMpLHY9KG4oMCksbig0MikpLHk9big0MyksZz0o
bigxKSx7SW1wdXJlQ2xhc3M6MCxQdXJlQ2xhc3M6MSxTdGF0ZWxlc3NGdW5jdGlvbmFsOjJ9KTty
LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT1mLmdldCh0aGlzKS5fY3VycmVudEVs
ZW1lbnQudHlwZSx0PWUodGhpcy5wcm9wcyx0aGlzLmNvbnRleHQsdGhpcy51cGRhdGVyKTtyZXR1
cm4gdH07dmFyIGI9MSxfPXtjb25zdHJ1Y3Q6ZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudEVsZW1l
bnQ9ZSx0aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fY29tcG9zaXRlVHlwZT1udWxsLHRoaXMuX2lu
c3RhbmNlPW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMuX2hvc3RDb250YWluZXJJbmZv
PW51bGwsdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXI9bnVsbCx0aGlzLl9wZW5kaW5nRWxlbWVudD1u
dWxsLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0
ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITEsdGhpcy5fcmVuZGVyZWROb2RlVHlwZT1u
dWxsLHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50PW51bGwsdGhpcy5fY29udGV4dD1udWxsLHRoaXMu
X21vdW50T3JkZXI9MCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCx0aGlzLl9wZW5kaW5nQ2Fs
bGJhY2tzPW51bGwsdGhpcy5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQ9ITF9LG1vdW50Q29t
cG9uZW50OmZ1bmN0aW9uKGUsdCxuLHUpe3RoaXMuX2NvbnRleHQ9dSx0aGlzLl9tb3VudE9yZGVy
PWIrKyx0aGlzLl9ob3N0UGFyZW50PXQsdGhpcy5faG9zdENvbnRhaW5lckluZm89bjt2YXIgYyxs
PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLHA9dGhpcy5fcHJvY2Vzc0NvbnRleHQodSksZD10
aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLGg9ZS5nZXRVcGRhdGVRdWV1ZSgpLHY9byhkKSx5PXRo
aXMuX2NvbnN0cnVjdENvbXBvbmVudCh2LGwscCxoKTt2fHxudWxsIT15JiZudWxsIT15LnJlbmRl
cj9pKGQpP3RoaXMuX2NvbXBvc2l0ZVR5cGU9Zy5QdXJlQ2xhc3M6dGhpcy5fY29tcG9zaXRlVHlw
ZT1nLkltcHVyZUNsYXNzOihjPXksbnVsbD09PXl8fCExPT09eXx8cy5pc1ZhbGlkRWxlbWVudCh5
KXx8YSgiMTA1IixkLmRpc3BsYXlOYW1lfHxkLm5hbWV8fCJDb21wb25lbnQiKSx5PW5ldyByKGQp
LHRoaXMuX2NvbXBvc2l0ZVR5cGU9Zy5TdGF0ZWxlc3NGdW5jdGlvbmFsKTt5LnByb3BzPWwseS5j
b250ZXh0PXAseS5yZWZzPW0seS51cGRhdGVyPWgsdGhpcy5faW5zdGFuY2U9eSxmLnNldCh5LHRo
aXMpO3ZhciBfPXkuc3RhdGU7dm9pZCAwPT09XyYmKHkuc3RhdGU9Xz1udWxsKSwoIm9iamVjdCIh
PT10eXBlb2YgX3x8QXJyYXkuaXNBcnJheShfKSkmJmEoIjEwNiIsdGhpcy5nZXROYW1lKCl8fCJS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhp
cy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITE7dmFy
IEM7cmV0dXJuIEM9eS51bnN0YWJsZV9oYW5kbGVFcnJvcj90aGlzLnBlcmZvcm1Jbml0aWFsTW91
bnRXaXRoRXJyb3JIYW5kbGluZyhjLHQsbixlLHUpOnRoaXMucGVyZm9ybUluaXRpYWxNb3VudChj
LHQsbixlLHUpLHkuY29tcG9uZW50RGlkTW91bnQmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5x
dWV1ZSh5LmNvbXBvbmVudERpZE1vdW50LHkpLEN9LF9jb25zdHJ1Y3RDb21wb25lbnQ6ZnVuY3Rp
b24oZSx0LG4scil7cmV0dXJuIHRoaXMuX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcihl
LHQsbixyKX0sX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcjpmdW5jdGlvbihlLHQsbixy
KXt2YXIgbz10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO3JldHVybiBlP25ldyBvKHQsbixyKTpv
KHQsbixyKX0scGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nOmZ1bmN0aW9uKGUs
dCxuLHIsbyl7dmFyIGksYT1yLmNoZWNrcG9pbnQoKTt0cnl7aT10aGlzLnBlcmZvcm1Jbml0aWFs
TW91bnQoZSx0LG4scixvKX1jYXRjaCh1KXtyLnJvbGxiYWNrKGEpLHRoaXMuX2luc3RhbmNlLnVu
c3RhYmxlX2hhbmRsZUVycm9yKHUpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlJiYodGhpcy5faW5z
dGFuY2Uuc3RhdGU9dGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZSh0aGlzLl9pbnN0YW5jZS5wcm9w
cyx0aGlzLl9pbnN0YW5jZS5jb250ZXh0KSksYT1yLmNoZWNrcG9pbnQoKSx0aGlzLl9yZW5kZXJl
ZENvbXBvbmVudC51bm1vdW50Q29tcG9uZW50KCEwKSxyLnJvbGxiYWNrKGEpLGk9dGhpcy5wZXJm
b3JtSW5pdGlhbE1vdW50KGUsdCxuLHIsbyl9cmV0dXJuIGl9LHBlcmZvcm1Jbml0aWFsTW91bnQ6
ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT10aGlzLl9pbnN0YW5jZSxhPTA7aS5jb21wb25lbnRX
aWxsTW91bnQmJihpLmNvbXBvbmVudFdpbGxNb3VudCgpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVl
JiYoaS5zdGF0ZT10aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKGkucHJvcHMsaS5jb250ZXh0KSkp
LHZvaWQgMD09PWUmJihlPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpKTt2YXIgdT1k
LmdldFR5cGUoZSk7dGhpcy5fcmVuZGVyZWROb2RlVHlwZT11O3ZhciBzPXRoaXMuX2luc3RhbnRp
YXRlUmVhY3RDb21wb25lbnQoZSx1IT09ZC5FTVBUWSk7dGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9
czt2YXIgYz1oLm1vdW50Q29tcG9uZW50KHMscix0LG4sdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4
dChvKSxhKTtyZXR1cm4gY30sZ2V0SG9zdE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gaC5nZXRIb3N0
Tm9kZSh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24o
ZSl7aWYodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpe3ZhciB0PXRoaXMuX2luc3RhbmNlO2lmKHQu
Y29tcG9uZW50V2lsbFVubW91bnQmJiF0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudClpZih0
Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudD0hMCxlKXt2YXIgbj10aGlzLmdldE5hbWUoKSsi
LmNvbXBvbmVudFdpbGxVbm1vdW50KCkiO3AuaW52b2tlR3VhcmRlZENhbGxiYWNrKG4sdC5jb21w
b25lbnRXaWxsVW5tb3VudC5iaW5kKHQpKX1lbHNlIHQuY29tcG9uZW50V2lsbFVubW91bnQoKTt0
aGlzLl9yZW5kZXJlZENvbXBvbmVudCYmKGgudW5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJl
ZENvbXBvbmVudCxlKSx0aGlzLl9yZW5kZXJlZE5vZGVUeXBlPW51bGwsdGhpcy5fcmVuZGVyZWRD
b21wb25lbnQ9bnVsbCx0aGlzLl9pbnN0YW5jZT1udWxsKSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1
ZT1udWxsLHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ0ZvcmNlVXBk
YXRlPSExLHRoaXMuX3BlbmRpbmdDYWxsYmFja3M9bnVsbCx0aGlzLl9wZW5kaW5nRWxlbWVudD1u
dWxsLHRoaXMuX2NvbnRleHQ9bnVsbCx0aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fdG9wTGV2ZWxX
cmFwcGVyPW51bGwsZi5yZW1vdmUodCl9fSxfbWFza0NvbnRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9
dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxuPXQuY29udGV4dFR5cGVzO2lmKCFuKXJldHVybiBt
O3ZhciByPXt9O2Zvcih2YXIgbyBpbiBuKXJbb109ZVtvXTtyZXR1cm4gcn0sX3Byb2Nlc3NDb250
ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX21hc2tDb250ZXh0KGUpO3JldHVybiB0fSxfcHJv
Y2Vzc0NoaWxkQ29udGV4dDpmdW5jdGlvbihlKXt2YXIgdCxuPXRoaXMuX2N1cnJlbnRFbGVtZW50
LnR5cGUscj10aGlzLl9pbnN0YW5jZTtpZihyLmdldENoaWxkQ29udGV4dCYmKHQ9ci5nZXRDaGls
ZENvbnRleHQoKSksdCl7Im9iamVjdCIhPT10eXBlb2Ygbi5jaGlsZENvbnRleHRUeXBlcyYmYSgi
MTA3Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik7Zm9yKHZhciBv
IGluIHQpbyBpbiBuLmNoaWxkQ29udGV4dFR5cGVzfHxhKCIxMDgiLHRoaXMuZ2V0TmFtZSgpfHwi
UmVhY3RDb21wb3NpdGVDb21wb25lbnQiLG8pO3JldHVybiB1KHt9LGUsdCl9cmV0dXJuIGV9LF9j
aGVja0NvbnRleHRUeXBlczpmdW5jdGlvbihlLHQsbil7fSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0
aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9jdXJyZW50RWxlbWVudCxvPXRoaXMuX2NvbnRleHQ7dGhp
cy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLnVwZGF0ZUNvbXBvbmVudCh0LHIsZSxvLG4pfSxw
ZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVuY3Rpb24oZSl7bnVsbCE9dGhpcy5fcGVuZGluZ0Vs
ZW1lbnQ/aC5yZWNlaXZlQ29tcG9uZW50KHRoaXMsdGhpcy5fcGVuZGluZ0VsZW1lbnQsZSx0aGlz
Ll9jb250ZXh0KTpudWxsIT09dGhpcy5fcGVuZGluZ1N0YXRlUXVldWV8fHRoaXMuX3BlbmRpbmdG
b3JjZVVwZGF0ZT90aGlzLnVwZGF0ZUNvbXBvbmVudChlLHRoaXMuX2N1cnJlbnRFbGVtZW50LHRo
aXMuX2N1cnJlbnRFbGVtZW50LHRoaXMuX2NvbnRleHQsdGhpcy5fY29udGV4dCk6dGhpcy5fdXBk
YXRlQmF0Y2hOdW1iZXI9bnVsbH0sdXBkYXRlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIsbyl7
dmFyIGk9dGhpcy5faW5zdGFuY2U7bnVsbD09aSYmYSgiMTM2Iix0aGlzLmdldE5hbWUoKXx8IlJl
YWN0Q29tcG9zaXRlQ29tcG9uZW50Iik7dmFyIHUscz0hMTt0aGlzLl9jb250ZXh0PT09bz91PWku
Y29udGV4dDoodT10aGlzLl9wcm9jZXNzQ29udGV4dChvKSxzPSEwKTt2YXIgYz10LnByb3BzLGw9
bi5wcm9wczt0IT09biYmKHM9ITApLHMmJmkuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmaS5j
b21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGwsdSk7dmFyIHA9dGhpcy5fcHJvY2Vzc1BlbmRpbmdT
dGF0ZShsLHUpLGY9ITA7dGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlfHwoaS5zaG91bGRDb21wb25l
bnRVcGRhdGU/Zj1pLnNob3VsZENvbXBvbmVudFVwZGF0ZShsLHAsdSk6dGhpcy5fY29tcG9zaXRl
VHlwZT09PWcuUHVyZUNsYXNzJiYoZj0hdihjLGwpfHwhdihpLnN0YXRlLHApKSksdGhpcy5fdXBk
YXRlQmF0Y2hOdW1iZXI9bnVsbCxmPyh0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITEsdGhpcy5f
cGVyZm9ybUNvbXBvbmVudFVwZGF0ZShuLGwscCx1LGUsbykpOih0aGlzLl9jdXJyZW50RWxlbWVu
dD1uLHRoaXMuX2NvbnRleHQ9byxpLnByb3BzPWwsaS5zdGF0ZT1wLGkuY29udGV4dD11KX0sX3By
b2Nlc3NQZW5kaW5nU3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9pbnN0YW5jZSxyPXRo
aXMuX3BlbmRpbmdTdGF0ZVF1ZXVlLG89dGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZTtpZih0aGlz
Ll9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsIXIp
cmV0dXJuIG4uc3RhdGU7aWYobyYmMT09PXIubGVuZ3RoKXJldHVybiByWzBdO2Zvcih2YXIgaT11
KHt9LG8/clswXTpuLnN0YXRlKSxhPW8/MTowO2E8ci5sZW5ndGg7YSsrKXt2YXIgcz1yW2FdO3Uo
aSwiZnVuY3Rpb24iPT09dHlwZW9mIHM/cy5jYWxsKG4saSxlLHQpOnMpfXJldHVybiBpfSxfcGVy
Zm9ybUNvbXBvbmVudFVwZGF0ZTpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGEsdSxzLGM9dGhp
cy5faW5zdGFuY2UsbD1Cb29sZWFuKGMuY29tcG9uZW50RGlkVXBkYXRlKTtsJiYoYT1jLnByb3Bz
LHU9Yy5zdGF0ZSxzPWMuY29udGV4dCksYy5jb21wb25lbnRXaWxsVXBkYXRlJiZjLmNvbXBvbmVu
dFdpbGxVcGRhdGUodCxuLHIpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fY29udGV4dD1p
LGMucHJvcHM9dCxjLnN0YXRlPW4sYy5jb250ZXh0PXIsdGhpcy5fdXBkYXRlUmVuZGVyZWRDb21w
b25lbnQobyxpKSxsJiZvLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYy5jb21wb25lbnRE
aWRVcGRhdGUuYmluZChjLGEsdSxzKSxjKX0sX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50OmZ1bmN0
aW9uKGUsdCl7dmFyIG49dGhpcy5fcmVuZGVyZWRDb21wb25lbnQscj1uLl9jdXJyZW50RWxlbWVu
dCxvPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpLGk9MDtpZih5KHIsbykpaC5yZWNl
aXZlQ29tcG9uZW50KG4sbyxlLHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQodCkpO2Vsc2V7dmFy
IGE9aC5nZXRIb3N0Tm9kZShuKTtoLnVubW91bnRDb21wb25lbnQobiwhMSk7dmFyIHU9ZC5nZXRU
eXBlKG8pO3RoaXMuX3JlbmRlcmVkTm9kZVR5cGU9dTt2YXIgcz10aGlzLl9pbnN0YW50aWF0ZVJl
YWN0Q29tcG9uZW50KG8sdSE9PWQuRU1QVFkpO3RoaXMuX3JlbmRlcmVkQ29tcG9uZW50PXM7dmFy
IGM9aC5tb3VudENvbXBvbmVudChzLGUsdGhpcy5faG9zdFBhcmVudCx0aGlzLl9ob3N0Q29udGFp
bmVySW5mbyx0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KHQpLGkpO3RoaXMuX3JlcGxhY2VOb2Rl
V2l0aE1hcmt1cChhLGMsbil9fSxfcmVwbGFjZU5vZGVXaXRoTWFya3VwOmZ1bmN0aW9uKGUsdCxu
KXtjLnJlcGxhY2VOb2RlV2l0aE1hcmt1cChlLHQsbil9LF9yZW5kZXJWYWxpZGF0ZWRDb21wb25l
bnRXaXRob3V0T3duZXJPckNvbnRleHQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9pbnN0YW5jZTty
ZXR1cm4gZS5yZW5kZXIoKX0sX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudDpmdW5jdGlvbigpe3Zh
ciBlO2lmKHRoaXMuX2NvbXBvc2l0ZVR5cGUhPT1nLlN0YXRlbGVzc0Z1bmN0aW9uYWwpe2wuY3Vy
cmVudD10aGlzO3RyeXtlPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25l
ck9yQ29udGV4dCgpfWZpbmFsbHl7bC5jdXJyZW50PW51bGx9fWVsc2UgZT10aGlzLl9yZW5kZXJW
YWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKTtyZXR1cm4gbnVsbD09PWV8
fCExPT09ZXx8cy5pc1ZhbGlkRWxlbWVudChlKXx8YSgiMTA5Iix0aGlzLmdldE5hbWUoKXx8IlJl
YWN0Q29tcG9zaXRlQ29tcG9uZW50IiksZX0sYXR0YWNoUmVmOmZ1bmN0aW9uKGUsdCl7dmFyIG49
dGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpO251bGw9PW4mJmEoIjExMCIpO3ZhciByPXQuZ2V0UHVi
bGljSW5zdGFuY2UoKTsobi5yZWZzPT09bT9uLnJlZnM9e306bi5yZWZzKVtlXT1yfSxkZXRhY2hS
ZWY6ZnVuY3Rpb24oZSl7ZGVsZXRlIHRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKS5yZWZzW2VdfSxn
ZXROYW1lOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSx0PXRoaXMu
X2luc3RhbmNlJiZ0aGlzLl9pbnN0YW5jZS5jb25zdHJ1Y3RvcjtyZXR1cm4gZS5kaXNwbGF5TmFt
ZXx8dCYmdC5kaXNwbGF5TmFtZXx8ZS5uYW1lfHx0JiZ0Lm5hbWV8fG51bGx9LGdldFB1YmxpY0lu
c3RhbmNlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5faW5zdGFuY2U7cmV0dXJuIHRoaXMuX2NvbXBv
c2l0ZVR5cGU9PT1nLlN0YXRlbGVzc0Z1bmN0aW9uYWw/bnVsbDplfSxfaW5zdGFudGlhdGVSZWFj
dENvbXBvbmVudDpudWxsfTtlLmV4cG9ydHM9X30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKCl7cmV0dXJuIG8rK312YXIgbz0xO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZTeW1i
b2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50Iil8fDYwMTAzO2UuZXhwb3J0cz1yfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZSYmKG8mJmVb
b118fGVbaV0pO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgdClyZXR1cm4gdH12YXIgbz0iZnVuY3Rp
b24iPT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLGk9IkBAaXRlcmF0b3IiO2UuZXhw
b3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXtmdW5jdGlv
biByKGUsdCxuLHIpe2lmKGUmJiJvYmplY3QiPT09dHlwZW9mIGUpe3ZhciBvPWUsaT12b2lkIDA9
PT1vW25dO2kmJm51bGwhPXQmJihvW25dPXQpfX1mdW5jdGlvbiBvKGUsdCl7aWYobnVsbD09ZSly
ZXR1cm4gZTt2YXIgbj17fTtyZXR1cm4gaShlLHIsbiksbn12YXIgaT0obig0NCksbig3NykpO24o
MSk7InVuZGVmaW5lZCIhPT10eXBlb2YgdCYmT2JqZWN0KHtOT0RFX0VOVjoicHJvZHVjdGlvbiIs
UFVCTElDX1VSTDoiLiJ9KSxlLmV4cG9ydHM9b30pLmNhbGwodCxuKDcyKSl9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0
aW9uKCksdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cD1lLHRoaXMudXNlQ3JlYXRlRWxlbWVudD0h
MSx0aGlzLnVwZGF0ZVF1ZXVlPW5ldyB1KHRoaXMpfXZhciBvPW4oMyksaT1uKDEyKSxhPW4oMjQp
LHU9KG4oNyksbigxNjIpKSxzPVtdLGM9e2VucXVldWU6ZnVuY3Rpb24oKXt9fSxsPXtnZXRUcmFu
c2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LGdldFJlYWN0TW91bnRSZWFkeTpm
dW5jdGlvbigpe3JldHVybiBjfSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlz
LnVwZGF0ZVF1ZXVlfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7fSxjaGVja3BvaW50OmZ1bmN0aW9u
KCl7fSxyb2xsYmFjazpmdW5jdGlvbigpe319O28oci5wcm90b3R5cGUsYSxsKSxpLmFkZFBvb2xp
bmdUbyhyKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90
IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9dmFyIG89big0NSksaT0obigxKSxmdW5jdGlv
bigpe2Z1bmN0aW9uIGUodCl7cih0aGlzLGUpLHRoaXMudHJhbnNhY3Rpb249dH1yZXR1cm4gZS5w
cm90b3R5cGUuaXNNb3VudGVkPWZ1bmN0aW9uKGUpe3JldHVybiExfSxlLnByb3RvdHlwZS5lbnF1
ZXVlQ2FsbGJhY2s9ZnVuY3Rpb24oZSx0LG4pe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0
aW9uKCkmJm8uZW5xdWV1ZUNhbGxiYWNrKGUsdCxuKX0sZS5wcm90b3R5cGUuZW5xdWV1ZUZvcmNl
VXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkmJm8u
ZW5xdWV1ZUZvcmNlVXBkYXRlKGUpfSxlLnByb3RvdHlwZS5lbnF1ZXVlUmVwbGFjZVN0YXRlPWZ1
bmN0aW9uKGUsdCl7dGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSYmby5lbnF1ZXVl
UmVwbGFjZVN0YXRlKGUsdCl9LGUucHJvdG90eXBlLmVucXVldWVTZXRTdGF0ZT1mdW5jdGlvbihl
LHQpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkmJm8uZW5xdWV1ZVNldFN0YXRl
KGUsdCl9LGV9KCkpO2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPW4oMyksbz1uKDE3KSxpPW4oNCksYT1mdW5jdGlvbihlKXt0aGlzLl9jdXJyZW50RWxlbWVu
dD1udWxsLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMuX2hv
c3RDb250YWluZXJJbmZvPW51bGwsdGhpcy5fZG9tSUQ9MH07cihhLnByb3RvdHlwZSx7bW91bnRD
b21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGE9bi5faWRDb3VudGVyKys7dGhpcy5fZG9t
SUQ9YSx0aGlzLl9ob3N0UGFyZW50PXQsdGhpcy5faG9zdENvbnRhaW5lckluZm89bjt2YXIgdT0i
IHJlYWN0LWVtcHR5OiAiK3RoaXMuX2RvbUlEKyIgIjtpZihlLnVzZUNyZWF0ZUVsZW1lbnQpe3Zh
ciBzPW4uX293bmVyRG9jdW1lbnQsYz1zLmNyZWF0ZUNvbW1lbnQodSk7cmV0dXJuIGkucHJlY2Fj
aGVOb2RlKHRoaXMsYyksbyhjKX1yZXR1cm4gZS5yZW5kZXJUb1N0YXRpY01hcmt1cD8iIjoiXHgz
YyEtLSIrdSsiLS1ceDNlIn0scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbigpe30sZ2V0SG9zdE5v
ZGU6ZnVuY3Rpb24oKXtyZXR1cm4gaS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpfSx1bm1vdW50
Q29tcG9uZW50OmZ1bmN0aW9uKCl7aS51bmNhY2hlTm9kZSh0aGlzKX19KSxlLmV4cG9ydHM9YX0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7Il9ob3N0Tm9kZSJp
biBlfHxzKCIzMyIpLCJfaG9zdE5vZGUiaW4gdHx8cygiMzMiKTtmb3IodmFyIG49MCxyPWU7cjty
PXIuX2hvc3RQYXJlbnQpbisrO2Zvcih2YXIgbz0wLGk9dDtpO2k9aS5faG9zdFBhcmVudClvKys7
Zm9yKDtuLW8+MDspZT1lLl9ob3N0UGFyZW50LG4tLTtmb3IoO28tbj4wOyl0PXQuX2hvc3RQYXJl
bnQsby0tO2Zvcih2YXIgYT1uO2EtLTspe2lmKGU9PT10KXJldHVybiBlO2U9ZS5faG9zdFBhcmVu
dCx0PXQuX2hvc3RQYXJlbnR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gbyhlLHQpeyJfaG9zdE5vZGUi
aW4gZXx8cygiMzUiKSwiX2hvc3ROb2RlImluIHR8fHMoIjM1Iik7Zm9yKDt0Oyl7aWYodD09PWUp
cmV0dXJuITA7dD10Ll9ob3N0UGFyZW50fXJldHVybiExfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIl9o
b3N0Tm9kZSJpbiBlfHxzKCIzNiIpLGUuX2hvc3RQYXJlbnR9ZnVuY3Rpb24gYShlLHQsbil7Zm9y
KHZhciByPVtdO2U7KXIucHVzaChlKSxlPWUuX2hvc3RQYXJlbnQ7dmFyIG87Zm9yKG89ci5sZW5n
dGg7by0tID4wOyl0KHJbb10sImNhcHR1cmVkIixuKTtmb3Iobz0wO288ci5sZW5ndGg7bysrKXQo
cltvXSwiYnViYmxlZCIsbil9ZnVuY3Rpb24gdShlLHQsbixvLGkpe2Zvcih2YXIgYT1lJiZ0P3Io
ZSx0KTpudWxsLHU9W107ZSYmZSE9PWE7KXUucHVzaChlKSxlPWUuX2hvc3RQYXJlbnQ7Zm9yKHZh
ciBzPVtdO3QmJnQhPT1hOylzLnB1c2godCksdD10Ll9ob3N0UGFyZW50O3ZhciBjO2ZvcihjPTA7
Yzx1Lmxlbmd0aDtjKyspbih1W2NdLCJidWJibGVkIixvKTtmb3IoYz1zLmxlbmd0aDtjLS0gPjA7
KW4oc1tjXSwiY2FwdHVyZWQiLGkpfXZhciBzPW4oMik7bigwKTtlLmV4cG9ydHM9e2lzQW5jZXN0
b3I6byxnZXRMb3dlc3RDb21tb25BbmNlc3RvcjpyLGdldFBhcmVudEluc3RhbmNlOmksdHJhdmVy
c2VUd29QaGFzZTphLHRyYXZlcnNlRW50ZXJMZWF2ZTp1fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj1uKDIpLG89bigzKSxpPW4oMzcpLGE9bigxNyksdT1uKDQpLHM9bigyNyks
Yz0obigwKSxuKDQ2KSxmdW5jdGlvbihlKXt0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMuX3N0
cmluZ1RleHQ9IiIrZSx0aGlzLl9ob3N0Tm9kZT1udWxsLHRoaXMuX2hvc3RQYXJlbnQ9bnVsbCx0
aGlzLl9kb21JRD0wLHRoaXMuX21vdW50SW5kZXg9MCx0aGlzLl9jbG9zaW5nQ29tbWVudD1udWxs
LHRoaXMuX2NvbW1lbnROb2Rlcz1udWxsfSk7byhjLnByb3RvdHlwZSx7bW91bnRDb21wb25lbnQ6
ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89bi5faWRDb3VudGVyKyssaT0iIHJlYWN0LXRleHQ6ICIr
bysiICI7aWYodGhpcy5fZG9tSUQ9byx0aGlzLl9ob3N0UGFyZW50PXQsZS51c2VDcmVhdGVFbGVt
ZW50KXt2YXIgYz1uLl9vd25lckRvY3VtZW50LGw9Yy5jcmVhdGVDb21tZW50KGkpLHA9Yy5jcmVh
dGVDb21tZW50KCIgL3JlYWN0LXRleHQgIiksZj1hKGMuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp
KTtyZXR1cm4gYS5xdWV1ZUNoaWxkKGYsYShsKSksdGhpcy5fc3RyaW5nVGV4dCYmYS5xdWV1ZUNo
aWxkKGYsYShjLmNyZWF0ZVRleHROb2RlKHRoaXMuX3N0cmluZ1RleHQpKSksYS5xdWV1ZUNoaWxk
KGYsYShwKSksdS5wcmVjYWNoZU5vZGUodGhpcyxsKSx0aGlzLl9jbG9zaW5nQ29tbWVudD1wLGZ9
dmFyIGQ9cyh0aGlzLl9zdHJpbmdUZXh0KTtyZXR1cm4gZS5yZW5kZXJUb1N0YXRpY01hcmt1cD9k
OiJceDNjIS0tIitpKyItLVx4M2UiK2QrIlx4M2MhLS0gL3JlYWN0LXRleHQgLS1ceDNlIn0scmVj
ZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQpe2lmKGUhPT10aGlzLl9jdXJyZW50RWxlbWVudCl7
dGhpcy5fY3VycmVudEVsZW1lbnQ9ZTt2YXIgbj0iIitlO2lmKG4hPT10aGlzLl9zdHJpbmdUZXh0
KXt0aGlzLl9zdHJpbmdUZXh0PW47dmFyIHI9dGhpcy5nZXRIb3N0Tm9kZSgpO2kucmVwbGFjZURl
bGltaXRlZFRleHQoclswXSxyWzFdLG4pfX19LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7dmFyIGU9
dGhpcy5fY29tbWVudE5vZGVzO2lmKGUpcmV0dXJuIGU7aWYoIXRoaXMuX2Nsb3NpbmdDb21tZW50
KWZvcih2YXIgdD11LmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyksbj10Lm5leHRTaWJsaW5nOzsp
e2lmKG51bGw9PW4mJnIoIjY3Iix0aGlzLl9kb21JRCksOD09PW4ubm9kZVR5cGUmJiIgL3JlYWN0
LXRleHQgIj09PW4ubm9kZVZhbHVlKXt0aGlzLl9jbG9zaW5nQ29tbWVudD1uO2JyZWFrfW49bi5u
ZXh0U2libGluZ31yZXR1cm4gZT1bdGhpcy5faG9zdE5vZGUsdGhpcy5fY2xvc2luZ0NvbW1lbnRd
LHRoaXMuX2NvbW1lbnROb2Rlcz1lLGV9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oKXt0aGlz
Ll9jbG9zaW5nQ29tbWVudD1udWxsLHRoaXMuX2NvbW1lbnROb2Rlcz1udWxsLHUudW5jYWNoZU5v
ZGUodGhpcyl9fSksZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcigpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKX12YXIgbz1uKDMpLGk9big4
KSxhPW4oMjQpLHU9big2KSxzPXtpbml0aWFsaXplOnUsY2xvc2U6ZnVuY3Rpb24oKXtmLmlzQmF0
Y2hpbmdVcGRhdGVzPSExfX0sYz17aW5pdGlhbGl6ZTp1LGNsb3NlOmkuZmx1c2hCYXRjaGVkVXBk
YXRlcy5iaW5kKGkpfSxsPVtjLHNdO28oci5wcm90b3R5cGUsYSx7Z2V0VHJhbnNhY3Rpb25XcmFw
cGVyczpmdW5jdGlvbigpe3JldHVybiBsfX0pO3ZhciBwPW5ldyByLGY9e2lzQmF0Y2hpbmdVcGRh
dGVzOiExLGJhdGNoZWRVcGRhdGVzOmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2YXIgYT1mLmlzQmF0
Y2hpbmdVcGRhdGVzO3JldHVybiBmLmlzQmF0Y2hpbmdVcGRhdGVzPSEwLGE/ZSh0LG4scixvLGkp
OnAucGVyZm9ybShlLG51bGwsdCxuLHIsbyxpKX19O2UuZXhwb3J0cz1mfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKDtlLl9ob3N0UGFyZW50OyllPWUuX2hv
c3RQYXJlbnQ7dmFyIHQ9cC5nZXROb2RlRnJvbUluc3RhbmNlKGUpLG49dC5wYXJlbnROb2RlO3Jl
dHVybiBwLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG4pfWZ1bmN0aW9uIG8oZSx0KXt0aGlz
LnRvcExldmVsVHlwZT1lLHRoaXMubmF0aXZlRXZlbnQ9dCx0aGlzLmFuY2VzdG9ycz1bXX1mdW5j
dGlvbiBpKGUpe3ZhciB0PWQoZS5uYXRpdmVFdmVudCksbj1wLmdldENsb3Nlc3RJbnN0YW5jZUZy
b21Ob2RlKHQpLG89bjtkb3tlLmFuY2VzdG9ycy5wdXNoKG8pLG89byYmcihvKX13aGlsZShvKTtm
b3IodmFyIGk9MDtpPGUuYW5jZXN0b3JzLmxlbmd0aDtpKyspbj1lLmFuY2VzdG9yc1tpXSxtLl9o
YW5kbGVUb3BMZXZlbChlLnRvcExldmVsVHlwZSxuLGUubmF0aXZlRXZlbnQsZChlLm5hdGl2ZUV2
ZW50KSl9ZnVuY3Rpb24gYShlKXtlKGgod2luZG93KSl9dmFyIHU9bigzKSxzPW4oNzkpLGM9big1
KSxsPW4oMTIpLHA9big0KSxmPW4oOCksZD1uKDM0KSxoPW4oMTY4KTt1KG8ucHJvdG90eXBlLHtk
ZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy50b3BMZXZlbFR5cGU9bnVsbCx0aGlzLm5hdGl2ZUV2
ZW50PW51bGwsdGhpcy5hbmNlc3RvcnMubGVuZ3RoPTB9fSksbC5hZGRQb29saW5nVG8obyxsLnR3
b0FyZ3VtZW50UG9vbGVyKTt2YXIgbT17X2VuYWJsZWQ6ITAsX2hhbmRsZVRvcExldmVsOm51bGws
V0lORE9XX0hBTkRMRTpjLmNhblVzZURPTT93aW5kb3c6bnVsbCxzZXRIYW5kbGVUb3BMZXZlbDpm
dW5jdGlvbihlKXttLl9oYW5kbGVUb3BMZXZlbD1lfSxzZXRFbmFibGVkOmZ1bmN0aW9uKGUpe20u
X2VuYWJsZWQ9ISFlfSxpc0VuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbS5fZW5hYmxlZH0sdHJh
cEJ1YmJsZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/cy5saXN0ZW4obix0LG0uZGlz
cGF0Y2hFdmVudC5iaW5kKG51bGwsZSkpOm51bGx9LHRyYXBDYXB0dXJlZEV2ZW50OmZ1bmN0aW9u
KGUsdCxuKXtyZXR1cm4gbj9zLmNhcHR1cmUobix0LG0uZGlzcGF0Y2hFdmVudC5iaW5kKG51bGws
ZSkpOm51bGx9LG1vbml0b3JTY3JvbGxWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hLmJpbmQobnVs
bCxlKTtzLmxpc3Rlbih3aW5kb3csInNjcm9sbCIsdCl9LGRpc3BhdGNoRXZlbnQ6ZnVuY3Rpb24o
ZSx0KXtpZihtLl9lbmFibGVkKXt2YXIgbj1vLmdldFBvb2xlZChlLHQpO3RyeXtmLmJhdGNoZWRV
cGRhdGVzKGksbil9ZmluYWxseXtvLnJlbGVhc2Uobil9fX19O2UuZXhwb3J0cz1tfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUuV2luZG93JiZlIGlu
c3RhbmNlb2YgZS5XaW5kb3c/e3g6ZS5wYWdlWE9mZnNldHx8ZS5kb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQuc2Nyb2xsTGVmdCx5OmUucGFnZVlPZmZzZXR8fGUuZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50LnNjcm9sbFRvcH06e3g6ZS5zY3JvbGxMZWZ0LHk6ZS5zY3JvbGxUb3B9fWUuZXhwb3J0cz1y
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTUpLG89bigyMCksaT1uKDMy
KSxhPW4oNDEpLHU9big3NSkscz1uKDI4KSxjPW4oNzYpLGw9big4KSxwPXtDb21wb25lbnQ6YS5p
bmplY3Rpb24sRE9NUHJvcGVydHk6ci5pbmplY3Rpb24sRW1wdHlDb21wb25lbnQ6dS5pbmplY3Rp
b24sRXZlbnRQbHVnaW5IdWI6by5pbmplY3Rpb24sRXZlbnRQbHVnaW5VdGlsczppLmluamVjdGlv
bixFdmVudEVtaXR0ZXI6cy5pbmplY3Rpb24sSG9zdENvbXBvbmVudDpjLmluamVjdGlvbixVcGRh
dGVzOmwuaW5qZWN0aW9ufTtlLmV4cG9ydHM9cH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLnJlbmRl
clRvU3RhdGljTWFya3VwPSExLHRoaXMucmVhY3RNb3VudFJlYWR5PWkuZ2V0UG9vbGVkKG51bGwp
LHRoaXMudXNlQ3JlYXRlRWxlbWVudD1lfXZhciBvPW4oMyksaT1uKDYyKSxhPW4oMTIpLHU9bigy
OCkscz1uKDgwKSxjPShuKDcpLG4oMjQpKSxsPW4oNDUpLHA9e2luaXRpYWxpemU6cy5nZXRTZWxl
Y3Rpb25JbmZvcm1hdGlvbixjbG9zZTpzLnJlc3RvcmVTZWxlY3Rpb259LGY9e2luaXRpYWxpemU6
ZnVuY3Rpb24oKXt2YXIgZT11LmlzRW5hYmxlZCgpO3JldHVybiB1LnNldEVuYWJsZWQoITEpLGV9
LGNsb3NlOmZ1bmN0aW9uKGUpe3Uuc2V0RW5hYmxlZChlKX19LGQ9e2luaXRpYWxpemU6ZnVuY3Rp
b24oKXt0aGlzLnJlYWN0TW91bnRSZWFkeS5yZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMu
cmVhY3RNb3VudFJlYWR5Lm5vdGlmeUFsbCgpfX0saD1bcCxmLGRdLG09e2dldFRyYW5zYWN0aW9u
V3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5fSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigp
e3JldHVybiBsfSxjaGVja3BvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJl
YWR5LmNoZWNrcG9pbnQoKX0scm9sbGJhY2s6ZnVuY3Rpb24oZSl7dGhpcy5yZWFjdE1vdW50UmVh
ZHkucm9sbGJhY2soZSl9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXtpLnJlbGVhc2UodGhpcy5yZWFj
dE1vdW50UmVhZHkpLHRoaXMucmVhY3RNb3VudFJlYWR5PW51bGx9fTtvKHIucHJvdG90eXBlLGMs
bSksYS5hZGRQb29saW5nVG8ociksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gZT09PW4mJnQ9PT1yfWZ1bmN0aW9uIG8o
ZSl7dmFyIHQ9ZG9jdW1lbnQuc2VsZWN0aW9uLG49dC5jcmVhdGVSYW5nZSgpLHI9bi50ZXh0Lmxl
bmd0aCxvPW4uZHVwbGljYXRlKCk7by5tb3ZlVG9FbGVtZW50VGV4dChlKSxvLnNldEVuZFBvaW50
KCJFbmRUb1N0YXJ0IixuKTt2YXIgaT1vLnRleHQubGVuZ3RoO3JldHVybntzdGFydDppLGVuZDpp
K3J9fWZ1bmN0aW9uIGkoZSl7dmFyIHQ9d2luZG93LmdldFNlbGVjdGlvbiYmd2luZG93LmdldFNl
bGVjdGlvbigpO2lmKCF0fHwwPT09dC5yYW5nZUNvdW50KXJldHVybiBudWxsO3ZhciBuPXQuYW5j
aG9yTm9kZSxvPXQuYW5jaG9yT2Zmc2V0LGk9dC5mb2N1c05vZGUsYT10LmZvY3VzT2Zmc2V0LHU9
dC5nZXRSYW5nZUF0KDApO3RyeXt1LnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlLHUuZW5kQ29udGFp
bmVyLm5vZGVUeXBlfWNhdGNoKGUpe3JldHVybiBudWxsfXZhciBzPXIodC5hbmNob3JOb2RlLHQu
YW5jaG9yT2Zmc2V0LHQuZm9jdXNOb2RlLHQuZm9jdXNPZmZzZXQpLGM9cz8wOnUudG9TdHJpbmco
KS5sZW5ndGgsbD11LmNsb25lUmFuZ2UoKTtsLnNlbGVjdE5vZGVDb250ZW50cyhlKSxsLnNldEVu
ZCh1LnN0YXJ0Q29udGFpbmVyLHUuc3RhcnRPZmZzZXQpO3ZhciBwPXIobC5zdGFydENvbnRhaW5l
cixsLnN0YXJ0T2Zmc2V0LGwuZW5kQ29udGFpbmVyLGwuZW5kT2Zmc2V0KSxmPXA/MDpsLnRvU3Ry
aW5nKCkubGVuZ3RoLGQ9ZitjLGg9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtoLnNldFN0YXJ0KG4s
byksaC5zZXRFbmQoaSxhKTt2YXIgbT1oLmNvbGxhcHNlZDtyZXR1cm57c3RhcnQ6bT9kOmYsZW5k
Om0/ZjpkfX1mdW5jdGlvbiBhKGUsdCl7dmFyIG4scixvPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVh
dGVSYW5nZSgpLmR1cGxpY2F0ZSgpO3ZvaWQgMD09PXQuZW5kPyhuPXQuc3RhcnQscj1uKTp0LnN0
YXJ0PnQuZW5kPyhuPXQuZW5kLHI9dC5zdGFydCk6KG49dC5zdGFydCxyPXQuZW5kKSxvLm1vdmVU
b0VsZW1lbnRUZXh0KGUpLG8ubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLG4pLG8uc2V0RW5kUG9pbnQo
IkVuZFRvU3RhcnQiLG8pLG8ubW92ZUVuZCgiY2hhcmFjdGVyIixyLW4pLG8uc2VsZWN0KCl9ZnVu
Y3Rpb24gdShlLHQpe2lmKHdpbmRvdy5nZXRTZWxlY3Rpb24pe3ZhciBuPXdpbmRvdy5nZXRTZWxl
Y3Rpb24oKSxyPWVbbCgpXS5sZW5ndGgsbz1NYXRoLm1pbih0LnN0YXJ0LHIpLGk9dm9pZCAwPT09
dC5lbmQ/bzpNYXRoLm1pbih0LmVuZCxyKTtpZighbi5leHRlbmQmJm8+aSl7dmFyIGE9aTtpPW8s
bz1hfXZhciB1PWMoZSxvKSxzPWMoZSxpKTtpZih1JiZzKXt2YXIgcD1kb2N1bWVudC5jcmVhdGVS
YW5nZSgpO3Auc2V0U3RhcnQodS5ub2RlLHUub2Zmc2V0KSxuLnJlbW92ZUFsbFJhbmdlcygpLG8+
aT8obi5hZGRSYW5nZShwKSxuLmV4dGVuZChzLm5vZGUscy5vZmZzZXQpKToocC5zZXRFbmQocy5u
b2RlLHMub2Zmc2V0KSxuLmFkZFJhbmdlKHApKX19fXZhciBzPW4oNSksYz1uKDE3MiksbD1uKDYx
KSxwPXMuY2FuVXNlRE9NJiYic2VsZWN0aW9uImluIGRvY3VtZW50JiYhKCJnZXRTZWxlY3Rpb24i
aW4gd2luZG93KSxmPXtnZXRPZmZzZXRzOnA/bzppLHNldE9mZnNldHM6cD9hOnV9O2UuZXhwb3J0
cz1mfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKDtlJiZl
LmZpcnN0Q2hpbGQ7KWU9ZS5maXJzdENoaWxkO3JldHVybiBlfWZ1bmN0aW9uIG8oZSl7Zm9yKDtl
Oyl7aWYoZS5uZXh0U2libGluZylyZXR1cm4gZS5uZXh0U2libGluZztlPWUucGFyZW50Tm9kZX19
ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgbj1yKGUpLGk9MCxhPTA7bjspe2lmKDM9PT1uLm5vZGVU
eXBlKXtpZihhPWkrbi50ZXh0Q29udGVudC5sZW5ndGgsaTw9dCYmYT49dClyZXR1cm57bm9kZTpu
LG9mZnNldDp0LWl9O2k9YX1uPXIobyhuKSl9fWUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4hKCFlfHwhdCkmJihlPT09dHx8IW8o
ZSkmJihvKHQpP3IoZSx0LnBhcmVudE5vZGUpOiJjb250YWlucyJpbiBlP2UuY29udGFpbnModCk6
ISFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYhISgxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uKHQpKSkpfXZhciBvPW4oMTc0KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBvKGUpJiYzPT1lLm5vZGVUeXBlfXZhciBvPW4o
MTc1KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3ZhciB0PWU/ZS5vd25lckRvY3VtZW50fHxlOmRvY3VtZW50LG49dC5kZWZhdWx0Vmlld3x8
d2luZG93O3JldHVybiEoIWV8fCEoImZ1bmN0aW9uIj09PXR5cGVvZiBuLk5vZGU/ZSBpbnN0YW5j
ZW9mIG4uTm9kZToib2JqZWN0Ij09PXR5cGVvZiBlJiYibnVtYmVyIj09PXR5cGVvZiBlLm5vZGVU
eXBlJiYic3RyaW5nIj09PXR5cGVvZiBlLm5vZGVOYW1lKSl9ZS5leHBvcnRzPXJ9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e3hsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSJ9LG89e2Fj
Y2VudEhlaWdodDoiYWNjZW50LWhlaWdodCIsYWNjdW11bGF0ZTowLGFkZGl0aXZlOjAsYWxpZ25t
ZW50QmFzZWxpbmU6ImFsaWdubWVudC1iYXNlbGluZSIsYWxsb3dSZW9yZGVyOiJhbGxvd1Jlb3Jk
ZXIiLGFscGhhYmV0aWM6MCxhbXBsaXR1ZGU6MCxhcmFiaWNGb3JtOiJhcmFiaWMtZm9ybSIsYXNj
ZW50OjAsYXR0cmlidXRlTmFtZToiYXR0cmlidXRlTmFtZSIsYXR0cmlidXRlVHlwZToiYXR0cmli
dXRlVHlwZSIsYXV0b1JldmVyc2U6ImF1dG9SZXZlcnNlIixhemltdXRoOjAsYmFzZUZyZXF1ZW5j
eToiYmFzZUZyZXF1ZW5jeSIsYmFzZVByb2ZpbGU6ImJhc2VQcm9maWxlIixiYXNlbGluZVNoaWZ0
OiJiYXNlbGluZS1zaGlmdCIsYmJveDowLGJlZ2luOjAsYmlhczowLGJ5OjAsY2FsY01vZGU6ImNh
bGNNb2RlIixjYXBIZWlnaHQ6ImNhcC1oZWlnaHQiLGNsaXA6MCxjbGlwUGF0aDoiY2xpcC1wYXRo
IixjbGlwUnVsZToiY2xpcC1ydWxlIixjbGlwUGF0aFVuaXRzOiJjbGlwUGF0aFVuaXRzIixjb2xv
ckludGVycG9sYXRpb246ImNvbG9yLWludGVycG9sYXRpb24iLGNvbG9ySW50ZXJwb2xhdGlvbkZp
bHRlcnM6ImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyIsY29sb3JQcm9maWxlOiJjb2xvci1w
cm9maWxlIixjb2xvclJlbmRlcmluZzoiY29sb3ItcmVuZGVyaW5nIixjb250ZW50U2NyaXB0VHlw
ZToiY29udGVudFNjcmlwdFR5cGUiLGNvbnRlbnRTdHlsZVR5cGU6ImNvbnRlbnRTdHlsZVR5cGUi
LGN1cnNvcjowLGN4OjAsY3k6MCxkOjAsZGVjZWxlcmF0ZTowLGRlc2NlbnQ6MCxkaWZmdXNlQ29u
c3RhbnQ6ImRpZmZ1c2VDb25zdGFudCIsZGlyZWN0aW9uOjAsZGlzcGxheTowLGRpdmlzb3I6MCxk
b21pbmFudEJhc2VsaW5lOiJkb21pbmFudC1iYXNlbGluZSIsZHVyOjAsZHg6MCxkeTowLGVkZ2VN
b2RlOiJlZGdlTW9kZSIsZWxldmF0aW9uOjAsZW5hYmxlQmFja2dyb3VuZDoiZW5hYmxlLWJhY2tn
cm91bmQiLGVuZDowLGV4cG9uZW50OjAsZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDoiZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCIsZmlsbDowLGZpbGxPcGFjaXR5OiJmaWxsLW9wYWNpdHkiLGZp
bGxSdWxlOiJmaWxsLXJ1bGUiLGZpbHRlcjowLGZpbHRlclJlczoiZmlsdGVyUmVzIixmaWx0ZXJV
bml0czoiZmlsdGVyVW5pdHMiLGZsb29kQ29sb3I6ImZsb29kLWNvbG9yIixmbG9vZE9wYWNpdHk6
ImZsb29kLW9wYWNpdHkiLGZvY3VzYWJsZTowLGZvbnRGYW1pbHk6ImZvbnQtZmFtaWx5Iixmb250
U2l6ZToiZm9udC1zaXplIixmb250U2l6ZUFkanVzdDoiZm9udC1zaXplLWFkanVzdCIsZm9udFN0
cmV0Y2g6ImZvbnQtc3RyZXRjaCIsZm9udFN0eWxlOiJmb250LXN0eWxlIixmb250VmFyaWFudDoi
Zm9udC12YXJpYW50Iixmb250V2VpZ2h0OiJmb250LXdlaWdodCIsZm9ybWF0OjAsZnJvbTowLGZ4
OjAsZnk6MCxnMTowLGcyOjAsZ2x5cGhOYW1lOiJnbHlwaC1uYW1lIixnbHlwaE9yaWVudGF0aW9u
SG9yaXpvbnRhbDoiZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCIsZ2x5cGhPcmllbnRhdGlv
blZlcnRpY2FsOiJnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCIsZ2x5cGhSZWY6ImdseXBoUmVm
IixncmFkaWVudFRyYW5zZm9ybToiZ3JhZGllbnRUcmFuc2Zvcm0iLGdyYWRpZW50VW5pdHM6Imdy
YWRpZW50VW5pdHMiLGhhbmdpbmc6MCxob3JpekFkdlg6Imhvcml6LWFkdi14Iixob3Jpek9yaWdp
blg6Imhvcml6LW9yaWdpbi14IixpZGVvZ3JhcGhpYzowLGltYWdlUmVuZGVyaW5nOiJpbWFnZS1y
ZW5kZXJpbmciLGluOjAsaW4yOjAsaW50ZXJjZXB0OjAsazowLGsxOjAsazI6MCxrMzowLGs0OjAs
a2VybmVsTWF0cml4OiJrZXJuZWxNYXRyaXgiLGtlcm5lbFVuaXRMZW5ndGg6Imtlcm5lbFVuaXRM
ZW5ndGgiLGtlcm5pbmc6MCxrZXlQb2ludHM6ImtleVBvaW50cyIsa2V5U3BsaW5lczoia2V5U3Bs
aW5lcyIsa2V5VGltZXM6ImtleVRpbWVzIixsZW5ndGhBZGp1c3Q6Imxlbmd0aEFkanVzdCIsbGV0
dGVyU3BhY2luZzoibGV0dGVyLXNwYWNpbmciLGxpZ2h0aW5nQ29sb3I6ImxpZ2h0aW5nLWNvbG9y
IixsaW1pdGluZ0NvbmVBbmdsZToibGltaXRpbmdDb25lQW5nbGUiLGxvY2FsOjAsbWFya2VyRW5k
OiJtYXJrZXItZW5kIixtYXJrZXJNaWQ6Im1hcmtlci1taWQiLG1hcmtlclN0YXJ0OiJtYXJrZXIt
c3RhcnQiLG1hcmtlckhlaWdodDoibWFya2VySGVpZ2h0IixtYXJrZXJVbml0czoibWFya2VyVW5p
dHMiLG1hcmtlcldpZHRoOiJtYXJrZXJXaWR0aCIsbWFzazowLG1hc2tDb250ZW50VW5pdHM6Im1h
c2tDb250ZW50VW5pdHMiLG1hc2tVbml0czoibWFza1VuaXRzIixtYXRoZW1hdGljYWw6MCxtb2Rl
OjAsbnVtT2N0YXZlczoibnVtT2N0YXZlcyIsb2Zmc2V0OjAsb3BhY2l0eTowLG9wZXJhdG9yOjAs
b3JkZXI6MCxvcmllbnQ6MCxvcmllbnRhdGlvbjowLG9yaWdpbjowLG92ZXJmbG93OjAsb3Zlcmxp
bmVQb3NpdGlvbjoib3ZlcmxpbmUtcG9zaXRpb24iLG92ZXJsaW5lVGhpY2tuZXNzOiJvdmVybGlu
ZS10aGlja25lc3MiLHBhaW50T3JkZXI6InBhaW50LW9yZGVyIixwYW5vc2UxOiJwYW5vc2UtMSIs
cGF0aExlbmd0aDoicGF0aExlbmd0aCIscGF0dGVybkNvbnRlbnRVbml0czoicGF0dGVybkNvbnRl
bnRVbml0cyIscGF0dGVyblRyYW5zZm9ybToicGF0dGVyblRyYW5zZm9ybSIscGF0dGVyblVuaXRz
OiJwYXR0ZXJuVW5pdHMiLHBvaW50ZXJFdmVudHM6InBvaW50ZXItZXZlbnRzIixwb2ludHM6MCxw
b2ludHNBdFg6InBvaW50c0F0WCIscG9pbnRzQXRZOiJwb2ludHNBdFkiLHBvaW50c0F0WjoicG9p
bnRzQXRaIixwcmVzZXJ2ZUFscGhhOiJwcmVzZXJ2ZUFscGhhIixwcmVzZXJ2ZUFzcGVjdFJhdGlv
OiJwcmVzZXJ2ZUFzcGVjdFJhdGlvIixwcmltaXRpdmVVbml0czoicHJpbWl0aXZlVW5pdHMiLHI6
MCxyYWRpdXM6MCxyZWZYOiJyZWZYIixyZWZZOiJyZWZZIixyZW5kZXJpbmdJbnRlbnQ6InJlbmRl
cmluZy1pbnRlbnQiLHJlcGVhdENvdW50OiJyZXBlYXRDb3VudCIscmVwZWF0RHVyOiJyZXBlYXRE
dXIiLHJlcXVpcmVkRXh0ZW5zaW9uczoicmVxdWlyZWRFeHRlbnNpb25zIixyZXF1aXJlZEZlYXR1
cmVzOiJyZXF1aXJlZEZlYXR1cmVzIixyZXN0YXJ0OjAscmVzdWx0OjAscm90YXRlOjAscng6MCxy
eTowLHNjYWxlOjAsc2VlZDowLHNoYXBlUmVuZGVyaW5nOiJzaGFwZS1yZW5kZXJpbmciLHNsb3Bl
OjAsc3BhY2luZzowLHNwZWN1bGFyQ29uc3RhbnQ6InNwZWN1bGFyQ29uc3RhbnQiLHNwZWN1bGFy
RXhwb25lbnQ6InNwZWN1bGFyRXhwb25lbnQiLHNwZWVkOjAsc3ByZWFkTWV0aG9kOiJzcHJlYWRN
ZXRob2QiLHN0YXJ0T2Zmc2V0OiJzdGFydE9mZnNldCIsc3RkRGV2aWF0aW9uOiJzdGREZXZpYXRp
b24iLHN0ZW1oOjAsc3RlbXY6MCxzdGl0Y2hUaWxlczoic3RpdGNoVGlsZXMiLHN0b3BDb2xvcjoi
c3RvcC1jb2xvciIsc3RvcE9wYWNpdHk6InN0b3Atb3BhY2l0eSIsc3RyaWtldGhyb3VnaFBvc2l0
aW9uOiJzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIixzdHJpa2V0aHJvdWdoVGhpY2tuZXNzOiJzdHJp
a2V0aHJvdWdoLXRoaWNrbmVzcyIsc3RyaW5nOjAsc3Ryb2tlOjAsc3Ryb2tlRGFzaGFycmF5OiJz
dHJva2UtZGFzaGFycmF5IixzdHJva2VEYXNob2Zmc2V0OiJzdHJva2UtZGFzaG9mZnNldCIsc3Ry
b2tlTGluZWNhcDoic3Ryb2tlLWxpbmVjYXAiLHN0cm9rZUxpbmVqb2luOiJzdHJva2UtbGluZWpv
aW4iLHN0cm9rZU1pdGVybGltaXQ6InN0cm9rZS1taXRlcmxpbWl0IixzdHJva2VPcGFjaXR5OiJz
dHJva2Utb3BhY2l0eSIsc3Ryb2tlV2lkdGg6InN0cm9rZS13aWR0aCIsc3VyZmFjZVNjYWxlOiJz
dXJmYWNlU2NhbGUiLHN5c3RlbUxhbmd1YWdlOiJzeXN0ZW1MYW5ndWFnZSIsdGFibGVWYWx1ZXM6
InRhYmxlVmFsdWVzIix0YXJnZXRYOiJ0YXJnZXRYIix0YXJnZXRZOiJ0YXJnZXRZIix0ZXh0QW5j
aG9yOiJ0ZXh0LWFuY2hvciIsdGV4dERlY29yYXRpb246InRleHQtZGVjb3JhdGlvbiIsdGV4dFJl
bmRlcmluZzoidGV4dC1yZW5kZXJpbmciLHRleHRMZW5ndGg6InRleHRMZW5ndGgiLHRvOjAsdHJh
bnNmb3JtOjAsdTE6MCx1MjowLHVuZGVybGluZVBvc2l0aW9uOiJ1bmRlcmxpbmUtcG9zaXRpb24i
LHVuZGVybGluZVRoaWNrbmVzczoidW5kZXJsaW5lLXRoaWNrbmVzcyIsdW5pY29kZTowLHVuaWNv
ZGVCaWRpOiJ1bmljb2RlLWJpZGkiLHVuaWNvZGVSYW5nZToidW5pY29kZS1yYW5nZSIsdW5pdHNQ
ZXJFbToidW5pdHMtcGVyLWVtIix2QWxwaGFiZXRpYzoidi1hbHBoYWJldGljIix2SGFuZ2luZzoi
di1oYW5naW5nIix2SWRlb2dyYXBoaWM6InYtaWRlb2dyYXBoaWMiLHZNYXRoZW1hdGljYWw6InYt
bWF0aGVtYXRpY2FsIix2YWx1ZXM6MCx2ZWN0b3JFZmZlY3Q6InZlY3Rvci1lZmZlY3QiLHZlcnNp
b246MCx2ZXJ0QWR2WToidmVydC1hZHYteSIsdmVydE9yaWdpblg6InZlcnQtb3JpZ2luLXgiLHZl
cnRPcmlnaW5ZOiJ2ZXJ0LW9yaWdpbi15Iix2aWV3Qm94OiJ2aWV3Qm94Iix2aWV3VGFyZ2V0OiJ2
aWV3VGFyZ2V0Iix2aXNpYmlsaXR5OjAsd2lkdGhzOjAsd29yZFNwYWNpbmc6IndvcmQtc3BhY2lu
ZyIsd3JpdGluZ01vZGU6IndyaXRpbmctbW9kZSIseDowLHhIZWlnaHQ6IngtaGVpZ2h0Iix4MTow
LHgyOjAseENoYW5uZWxTZWxlY3RvcjoieENoYW5uZWxTZWxlY3RvciIseGxpbmtBY3R1YXRlOiJ4
bGluazphY3R1YXRlIix4bGlua0FyY3JvbGU6InhsaW5rOmFyY3JvbGUiLHhsaW5rSHJlZjoieGxp
bms6aHJlZiIseGxpbmtSb2xlOiJ4bGluazpyb2xlIix4bGlua1Nob3c6InhsaW5rOnNob3ciLHhs
aW5rVGl0bGU6InhsaW5rOnRpdGxlIix4bGlua1R5cGU6InhsaW5rOnR5cGUiLHhtbEJhc2U6Inht
bDpiYXNlIix4bWxuczowLHhtbG5zWGxpbms6InhtbG5zOnhsaW5rIix4bWxMYW5nOiJ4bWw6bGFu
ZyIseG1sU3BhY2U6InhtbDpzcGFjZSIseTowLHkxOjAseTI6MCx5Q2hhbm5lbFNlbGVjdG9yOiJ5
Q2hhbm5lbFNlbGVjdG9yIix6OjAsem9vbUFuZFBhbjoiem9vbUFuZFBhbiJ9LGk9e1Byb3BlcnRp
ZXM6e30sRE9NQXR0cmlidXRlTmFtZXNwYWNlczp7eGxpbmtBY3R1YXRlOnIueGxpbmsseGxpbmtB
cmNyb2xlOnIueGxpbmsseGxpbmtIcmVmOnIueGxpbmsseGxpbmtSb2xlOnIueGxpbmsseGxpbmtT
aG93OnIueGxpbmsseGxpbmtUaXRsZTpyLnhsaW5rLHhsaW5rVHlwZTpyLnhsaW5rLHhtbEJhc2U6
ci54bWwseG1sTGFuZzpyLnhtbCx4bWxTcGFjZTpyLnhtbH0sRE9NQXR0cmlidXRlTmFtZXM6e319
O09iamVjdC5rZXlzKG8pLmZvckVhY2goZnVuY3Rpb24oZSl7aS5Qcm9wZXJ0aWVzW2VdPTAsb1tl
XSYmKGkuRE9NQXR0cmlidXRlTmFtZXNbZV09b1tlXSl9KSxlLmV4cG9ydHM9aX0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKCJzZWxlY3Rpb25TdGFydCJpbiBl
JiZzLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhlKSlyZXR1cm57c3RhcnQ6ZS5zZWxlY3Rpb25T
dGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2lmKHdpbmRvdy5nZXRTZWxlY3Rpb24pe3ZhciB0PXdp
bmRvdy5nZXRTZWxlY3Rpb24oKTtyZXR1cm57YW5jaG9yTm9kZTp0LmFuY2hvck5vZGUsYW5jaG9y
T2Zmc2V0OnQuYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTp0LmZvY3VzTm9kZSxmb2N1c09mZnNldDp0
LmZvY3VzT2Zmc2V0fX1pZihkb2N1bWVudC5zZWxlY3Rpb24pe3ZhciBuPWRvY3VtZW50LnNlbGVj
dGlvbi5jcmVhdGVSYW5nZSgpO3JldHVybntwYXJlbnRFbGVtZW50Om4ucGFyZW50RWxlbWVudCgp
LHRleHQ6bi50ZXh0LHRvcDpuLmJvdW5kaW5nVG9wLGxlZnQ6bi5ib3VuZGluZ0xlZnR9fX1mdW5j
dGlvbiBvKGUsdCl7aWYoZ3x8bnVsbD09bXx8bSE9PWwoKSlyZXR1cm4gbnVsbDt2YXIgbj1yKG0p
O2lmKCF5fHwhZih5LG4pKXt5PW47dmFyIG89Yy5nZXRQb29sZWQoaC5zZWxlY3QsdixlLHQpO3Jl
dHVybiBvLnR5cGU9InNlbGVjdCIsby50YXJnZXQ9bSxpLmFjY3VtdWxhdGVUd29QaGFzZURpc3Bh
dGNoZXMobyksb31yZXR1cm4gbnVsbH12YXIgaT1uKDE5KSxhPW4oNSksdT1uKDQpLHM9big4MCks
Yz1uKDExKSxsPW4oODEpLHA9big2NSksZj1uKDQyKSxkPWEuY2FuVXNlRE9NJiYiZG9jdW1lbnRN
b2RlImluIGRvY3VtZW50JiZkb2N1bWVudC5kb2N1bWVudE1vZGU8PTExLGg9e3NlbGVjdDp7cGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uU2VsZWN0IixjYXB0dXJlZDoib25TZWxl
Y3RDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENvbnRleHRNZW51IiwidG9w
Rm9jdXMiLCJ0b3BLZXlEb3duIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iLCJ0b3BNb3VzZVVw
IiwidG9wU2VsZWN0aW9uQ2hhbmdlIl19fSxtPW51bGwsdj1udWxsLHk9bnVsbCxnPSExLGI9ITEs
Xz17ZXZlbnRUeXBlczpoLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7aWYoIWIpcmV0
dXJuIG51bGw7dmFyIGk9dD91LmdldE5vZGVGcm9tSW5zdGFuY2UodCk6d2luZG93O3N3aXRjaChl
KXtjYXNlInRvcEZvY3VzIjoocChpKXx8InRydWUiPT09aS5jb250ZW50RWRpdGFibGUpJiYobT1p
LHY9dCx5PW51bGwpO2JyZWFrO2Nhc2UidG9wQmx1ciI6bT1udWxsLHY9bnVsbCx5PW51bGw7YnJl
YWs7Y2FzZSJ0b3BNb3VzZURvd24iOmc9ITA7YnJlYWs7Y2FzZSJ0b3BDb250ZXh0TWVudSI6Y2Fz
ZSJ0b3BNb3VzZVVwIjpyZXR1cm4gZz0hMSxvKG4scik7Y2FzZSJ0b3BTZWxlY3Rpb25DaGFuZ2Ui
OmlmKGQpYnJlYWs7Y2FzZSJ0b3BLZXlEb3duIjpjYXNlInRvcEtleVVwIjpyZXR1cm4gbyhuLHIp
fXJldHVybiBudWxsfSxkaWRQdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7Im9uU2VsZWN0Ij09
PXQmJihiPSEwKX19O2UuZXhwb3J0cz1ffSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7cmV0dXJuIi4iK2UuX3Jvb3ROb2RlSUR9ZnVuY3Rpb24gbyhlKXtyZXR1cm4i
YnV0dG9uIj09PWV8fCJpbnB1dCI9PT1lfHwic2VsZWN0Ij09PWV8fCJ0ZXh0YXJlYSI9PT1lfXZh
ciBpPW4oMiksYT1uKDc5KSx1PW4oMTkpLHM9big0KSxjPW4oMTc5KSxsPW4oMTgwKSxwPW4oMTEp
LGY9bigxODEpLGQ9bigxODIpLGg9bigyNSksbT1uKDE4NCksdj1uKDE4NSkseT1uKDE4NiksZz1u
KDIxKSxiPW4oMTg3KSxfPW4oNiksQz1uKDQ3KSx3PShuKDApLHt9KSxFPXt9O1siYWJvcnQiLCJh
bmltYXRpb25FbmQiLCJhbmltYXRpb25JdGVyYXRpb24iLCJhbmltYXRpb25TdGFydCIsImJsdXIi
LCJjYW5QbGF5IiwiY2FuUGxheVRocm91Z2giLCJjbGljayIsImNvbnRleHRNZW51IiwiY29weSIs
ImN1dCIsImRvdWJsZUNsaWNrIiwiZHJhZyIsImRyYWdFbmQiLCJkcmFnRW50ZXIiLCJkcmFnRXhp
dCIsImRyYWdMZWF2ZSIsImRyYWdPdmVyIiwiZHJhZ1N0YXJ0IiwiZHJvcCIsImR1cmF0aW9uQ2hh
bmdlIiwiZW1wdGllZCIsImVuY3J5cHRlZCIsImVuZGVkIiwiZXJyb3IiLCJmb2N1cyIsImlucHV0
IiwiaW52YWxpZCIsImtleURvd24iLCJrZXlQcmVzcyIsImtleVVwIiwibG9hZCIsImxvYWRlZERh
dGEiLCJsb2FkZWRNZXRhZGF0YSIsImxvYWRTdGFydCIsIm1vdXNlRG93biIsIm1vdXNlTW92ZSIs
Im1vdXNlT3V0IiwibW91c2VPdmVyIiwibW91c2VVcCIsInBhc3RlIiwicGF1c2UiLCJwbGF5Iiwi
cGxheWluZyIsInByb2dyZXNzIiwicmF0ZUNoYW5nZSIsInJlc2V0Iiwic2Nyb2xsIiwic2Vla2Vk
Iiwic2Vla2luZyIsInN0YWxsZWQiLCJzdWJtaXQiLCJzdXNwZW5kIiwidGltZVVwZGF0ZSIsInRv
dWNoQ2FuY2VsIiwidG91Y2hFbmQiLCJ0b3VjaE1vdmUiLCJ0b3VjaFN0YXJ0IiwidHJhbnNpdGlv
bkVuZCIsInZvbHVtZUNoYW5nZSIsIndhaXRpbmciLCJ3aGVlbCJdLmZvckVhY2goZnVuY3Rpb24o
ZSl7dmFyIHQ9ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj0ib24iK3Qscj0idG9wIit0
LG89e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOm4sY2FwdHVyZWQ6bisiQ2FwdHVy
ZSJ9LGRlcGVuZGVuY2llczpbcl19O3dbZV09byxFW3JdPW99KTt2YXIgeD17fSxUPXtldmVudFR5
cGVzOncsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz1FW2VdO2lmKCFvKXJl
dHVybiBudWxsO3ZhciBhO3N3aXRjaChlKXtjYXNlInRvcEFib3J0IjpjYXNlInRvcENhblBsYXki
OmNhc2UidG9wQ2FuUGxheVRocm91Z2giOmNhc2UidG9wRHVyYXRpb25DaGFuZ2UiOmNhc2UidG9w
RW1wdGllZCI6Y2FzZSJ0b3BFbmNyeXB0ZWQiOmNhc2UidG9wRW5kZWQiOmNhc2UidG9wRXJyb3Ii
OmNhc2UidG9wSW5wdXQiOmNhc2UidG9wSW52YWxpZCI6Y2FzZSJ0b3BMb2FkIjpjYXNlInRvcExv
YWRlZERhdGEiOmNhc2UidG9wTG9hZGVkTWV0YWRhdGEiOmNhc2UidG9wTG9hZFN0YXJ0IjpjYXNl
InRvcFBhdXNlIjpjYXNlInRvcFBsYXkiOmNhc2UidG9wUGxheWluZyI6Y2FzZSJ0b3BQcm9ncmVz
cyI6Y2FzZSJ0b3BSYXRlQ2hhbmdlIjpjYXNlInRvcFJlc2V0IjpjYXNlInRvcFNlZWtlZCI6Y2Fz
ZSJ0b3BTZWVraW5nIjpjYXNlInRvcFN0YWxsZWQiOmNhc2UidG9wU3VibWl0IjpjYXNlInRvcFN1
c3BlbmQiOmNhc2UidG9wVGltZVVwZGF0ZSI6Y2FzZSJ0b3BWb2x1bWVDaGFuZ2UiOmNhc2UidG9w
V2FpdGluZyI6YT1wO2JyZWFrO2Nhc2UidG9wS2V5UHJlc3MiOmlmKDA9PT1DKG4pKXJldHVybiBu
dWxsO2Nhc2UidG9wS2V5RG93biI6Y2FzZSJ0b3BLZXlVcCI6YT1kO2JyZWFrO2Nhc2UidG9wQmx1
ciI6Y2FzZSJ0b3BGb2N1cyI6YT1mO2JyZWFrO2Nhc2UidG9wQ2xpY2siOmlmKDI9PT1uLmJ1dHRv
bilyZXR1cm4gbnVsbDtjYXNlInRvcERvdWJsZUNsaWNrIjpjYXNlInRvcE1vdXNlRG93biI6Y2Fz
ZSJ0b3BNb3VzZU1vdmUiOmNhc2UidG9wTW91c2VVcCI6Y2FzZSJ0b3BNb3VzZU91dCI6Y2FzZSJ0
b3BNb3VzZU92ZXIiOmNhc2UidG9wQ29udGV4dE1lbnUiOmE9aDticmVhaztjYXNlInRvcERyYWci
OmNhc2UidG9wRHJhZ0VuZCI6Y2FzZSJ0b3BEcmFnRW50ZXIiOmNhc2UidG9wRHJhZ0V4aXQiOmNh
c2UidG9wRHJhZ0xlYXZlIjpjYXNlInRvcERyYWdPdmVyIjpjYXNlInRvcERyYWdTdGFydCI6Y2Fz
ZSJ0b3BEcm9wIjphPW07YnJlYWs7Y2FzZSJ0b3BUb3VjaENhbmNlbCI6Y2FzZSJ0b3BUb3VjaEVu
ZCI6Y2FzZSJ0b3BUb3VjaE1vdmUiOmNhc2UidG9wVG91Y2hTdGFydCI6YT12O2JyZWFrO2Nhc2Ui
dG9wQW5pbWF0aW9uRW5kIjpjYXNlInRvcEFuaW1hdGlvbkl0ZXJhdGlvbiI6Y2FzZSJ0b3BBbmlt
YXRpb25TdGFydCI6YT1jO2JyZWFrO2Nhc2UidG9wVHJhbnNpdGlvbkVuZCI6YT15O2JyZWFrO2Nh
c2UidG9wU2Nyb2xsIjphPWc7YnJlYWs7Y2FzZSJ0b3BXaGVlbCI6YT1iO2JyZWFrO2Nhc2UidG9w
Q29weSI6Y2FzZSJ0b3BDdXQiOmNhc2UidG9wUGFzdGUiOmE9bH1hfHxpKCI4NiIsZSk7dmFyIHM9
YS5nZXRQb29sZWQobyx0LG4scik7cmV0dXJuIHUuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hl
cyhzKSxzfSxkaWRQdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7aWYoIm9uQ2xpY2siPT09dCYm
IW8oZS5fdGFnKSl7dmFyIGk9cihlKSx1PXMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTt4W2ldfHwo
eFtpXT1hLmxpc3Rlbih1LCJjbGljayIsXykpfX0sd2lsbERlbGV0ZUxpc3RlbmVyOmZ1bmN0aW9u
KGUsdCl7aWYoIm9uQ2xpY2siPT09dCYmIW8oZS5fdGFnKSl7dmFyIG49cihlKTt4W25dLnJlbW92
ZSgpLGRlbGV0ZSB4W25dfX19O2UuZXhwb3J0cz1UfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBv
PW4oMTEpLGk9e2FuaW1hdGlvbk5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1l
bnQ6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQs
bixyKX12YXIgbz1uKDExKSxpPXtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJjbGlw
Ym9hcmREYXRhImluIGU/ZS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX07by5h
dWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1u
KDIxKSxpPXtyZWxhdGVkVGFyZ2V0Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1
cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigyMSksaT1uKDQ3KSxhPW4oMTgzKSx1PW4o
MzYpLHM9e2tleTphLGxvY2F0aW9uOm51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsYWx0
S2V5Om51bGwsbWV0YUtleTpudWxsLHJlcGVhdDpudWxsLGxvY2FsZTpudWxsLGdldE1vZGlmaWVy
U3RhdGU6dSxjaGFyQ29kZTpmdW5jdGlvbihlKXtyZXR1cm4ia2V5cHJlc3MiPT09ZS50eXBlP2ko
ZSk6MH0sa2V5Q29kZTpmdW5jdGlvbihlKXtyZXR1cm4ia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1
cCI9PT1lLnR5cGU/ZS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVz
cyI9PT1lLnR5cGU/aShlKToia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/ZS5r
ZXlDb2RlOjB9fTtvLmF1Z21lbnRDbGFzcyhyLHMpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZS5rZXkpe3ZhciB0PWlbZS5rZXldfHxl
LmtleTtpZigiVW5pZGVudGlmaWVkIiE9PXQpcmV0dXJuIHR9aWYoImtleXByZXNzIj09PWUudHlw
ZSl7dmFyIG49byhlKTtyZXR1cm4gMTM9PT1uPyJFbnRlciI6U3RyaW5nLmZyb21DaGFyQ29kZShu
KX1yZXR1cm4ia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/YVtlLmtleUNvZGVd
fHwiVW5pZGVudGlmaWVkIjoiIn12YXIgbz1uKDQ3KSxpPXtFc2M6IkVzY2FwZSIsU3BhY2ViYXI6
IiAiLExlZnQ6IkFycm93TGVmdCIsVXA6IkFycm93VXAiLFJpZ2h0OiJBcnJvd1JpZ2h0IixEb3du
OiJBcnJvd0Rvd24iLERlbDoiRGVsZXRlIixXaW46Ik9TIixNZW51OiJDb250ZXh0TWVudSIsQXBw
czoiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsTW96UHJpbnRhYmxlS2V5OiJVbmlk
ZW50aWZpZWQifSxhPXs4OiJCYWNrc3BhY2UiLDk6IlRhYiIsMTI6IkNsZWFyIiwxMzoiRW50ZXIi
LDE2OiJTaGlmdCIsMTc6IkNvbnRyb2wiLDE4OiJBbHQiLDE5OiJQYXVzZSIsMjA6IkNhcHNMb2Nr
IiwyNzoiRXNjYXBlIiwzMjoiICIsMzM6IlBhZ2VVcCIsMzQ6IlBhZ2VEb3duIiwzNToiRW5kIiwz
NjoiSG9tZSIsMzc6IkFycm93TGVmdCIsMzg6IkFycm93VXAiLDM5OiJBcnJvd1JpZ2h0Iiw0MDoi
QXJyb3dEb3duIiw0NToiSW5zZXJ0Iiw0NjoiRGVsZXRlIiwxMTI6IkYxIiwxMTM6IkYyIiwxMTQ6
IkYzIiwxMTU6IkY0IiwxMTY6IkY1IiwxMTc6IkY2IiwxMTg6IkY3IiwxMTk6IkY4IiwxMjA6IkY5
IiwxMjE6IkYxMCIsMTIyOiJGMTEiLDEyMzoiRjEyIiwxNDQ6Ik51bUxvY2siLDE0NToiU2Nyb2xs
TG9jayIsMjI0OiJNZXRhIn07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89
bigyNSksaT17ZGF0YVRyYW5zZmVyOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1
cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigyMSksaT1uKDM2KSxhPXt0b3VjaGVzOm51
bGwsdGFyZ2V0VG91Y2hlczpudWxsLGNoYW5nZWRUb3VjaGVzOm51bGwsYWx0S2V5Om51bGwsbWV0
YUtleTpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6aX07
by5hdWdtZW50Q2xhc3MocixhKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIg
bz1uKDExKSxpPXtwcm9wZXJ0eU5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1l
bnQ6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQs
bixyKX12YXIgbz1uKDI1KSxpPXtkZWx0YVg6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWCJpbiBl
P2UuZGVsdGFYOiJ3aGVlbERlbHRhWCJpbiBlPy1lLndoZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5j
dGlvbihlKXtyZXR1cm4iZGVsdGFZImluIGU/ZS5kZWx0YVk6IndoZWVsRGVsdGFZImluIGU/LWUu
d2hlZWxEZWx0YVk6IndoZWVsRGVsdGEiaW4gZT8tZS53aGVlbERlbHRhOjB9LGRlbHRhWjpudWxs
LGRlbHRhTW9kZTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj17X3RvcExldmVsV3Jh
cHBlcjplLF9pZENvdW50ZXI6MSxfb3duZXJEb2N1bWVudDp0P3Qubm9kZVR5cGU9PT1vP3Q6dC5v
d25lckRvY3VtZW50Om51bGwsX25vZGU6dCxfdGFnOnQ/dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
Om51bGwsX25hbWVzcGFjZVVSSTp0P3QubmFtZXNwYWNlVVJJOm51bGx9O3JldHVybiBufXZhciBv
PShuKDQ2KSw5KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj17dXNlQ3JlYXRlRWxlbWVudDohMCx1c2VGaWJlcjohMX07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigxOTEpLG89L1wvPz4vLGk9L148XCFcLVwtLyxh
PXtDSEVDS1NVTV9BVFRSX05BTUU6ImRhdGEtcmVhY3QtY2hlY2tzdW0iLGFkZENoZWNrc3VtVG9N
YXJrdXA6ZnVuY3Rpb24oZSl7dmFyIHQ9cihlKTtyZXR1cm4gaS50ZXN0KGUpP2U6ZS5yZXBsYWNl
KG8sIiAiK2EuQ0hFQ0tTVU1fQVRUUl9OQU1FKyc9IicrdCsnIiQmJyl9LGNhblJldXNlTWFya3Vw
OmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXRBdHRyaWJ1dGUoYS5DSEVDS1NVTV9BVFRSX05BTUUp
O3JldHVybiBuPW4mJnBhcnNlSW50KG4sMTApLHIoZSk9PT1ufX07ZS5leHBvcnRzPWF9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9MSxuPTAscj0w
LGk9ZS5sZW5ndGgsYT0tNCZpO3I8YTspe2Zvcih2YXIgdT1NYXRoLm1pbihyKzQwOTYsYSk7cjx1
O3IrPTQpbis9KHQrPWUuY2hhckNvZGVBdChyKSkrKHQrPWUuY2hhckNvZGVBdChyKzEpKSsodCs9
ZS5jaGFyQ29kZUF0KHIrMikpKyh0Kz1lLmNoYXJDb2RlQXQociszKSk7dCU9byxuJT1vfWZvcig7
cjxpO3IrKyluKz10Kz1lLmNoYXJDb2RlQXQocik7cmV0dXJuIHQlPW8sbiU9byx0fG48PDE2fXZh
ciBvPTY1NTIxO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhw
b3J0cz0iMTUuNi4xIn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoMT09PWUubm9kZVR5cGUpcmV0dXJuIGU7dmFyIHQ9
YS5nZXQoZSk7aWYodClyZXR1cm4gdD11KHQpLHQ/aS5nZXROb2RlRnJvbUluc3RhbmNlKHQpOm51
bGw7ImZ1bmN0aW9uIj09PXR5cGVvZiBlLnJlbmRlcj9vKCI0NCIpOm8oIjQ1IixPYmplY3Qua2V5
cyhlKSl9dmFyIG89bigyKSxpPShuKDEwKSxuKDQpKSxhPW4oMjIpLHU9big4Myk7bigwKSxuKDEp
O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oODIpO2Uu
ZXhwb3J0cz1yLnJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwPT09ZT9zOnU6YyYm
YyBpbiBPYmplY3QoZSk/T2JqZWN0KGkuYSkoZSk6T2JqZWN0KGEuYSkoZSl9dmFyIG89big4NSks
aT1uKDE5OCksYT1uKDE5OSksdT0iW29iamVjdCBOdWxsXSIscz0iW29iamVjdCBVbmRlZmluZWRd
IixjPW8uYT9vLmEudG9TdHJpbmdUYWc6dm9pZCAwO3QuYT1yfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPW4oMTk3KSxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2Vs
Zi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1yLmF8fG98fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIp
KCk7dC5hPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKGUpe3ZhciBu
PSJvYmplY3QiPT10eXBlb2YgZSYmZSYmZS5PYmplY3Q9PT1PYmplY3QmJmU7dC5hPW59KS5jYWxs
KHQsbigzMCkpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFy
IHQ9YS5jYWxsKGUscyksbj1lW3NdO3RyeXtlW3NdPXZvaWQgMDt2YXIgcj0hMH1jYXRjaChlKXt9
dmFyIG89dS5jYWxsKGUpO3JldHVybiByJiYodD9lW3NdPW46ZGVsZXRlIGVbc10pLG99dmFyIG89
big4NSksaT1PYmplY3QucHJvdG90eXBlLGE9aS5oYXNPd25Qcm9wZXJ0eSx1PWkudG9TdHJpbmcs
cz1vLmE/by5hLnRvU3RyaW5nVGFnOnZvaWQgMDt0LmE9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBpLmNhbGwoZSl9dmFyIG89T2JqZWN0LnByb3Rv
dHlwZSxpPW8udG9TdHJpbmc7dC5hPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9bigyMDEpLG89T2JqZWN0KHIuYSkoT2JqZWN0LmdldFByb3RvdHlwZU9mLE9iamVjdCk7dC5h
PW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBm
dW5jdGlvbihuKXtyZXR1cm4gZSh0KG4pKX19dC5hPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbnVsbCE9ZSYmIm9iamVjdCI9PXR5cGVvZiBlfXQu
YT1yfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oMjA0KX0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjsoZnVuY3Rpb24oZSxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01v
ZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG8saT1uKDIwNiksYT1mdW5jdGlvbihlKXtyZXR1cm4gZSYm
ZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19KGkpO289InVuZGVmaW5lZCIhPT10eXBlb2Ygc2Vs
Zj9zZWxmOiJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPT10
eXBlb2YgZT9lOnI7dmFyIHU9KDAsYS5kZWZhdWx0KShvKTt0LmRlZmF1bHQ9dX0pLmNhbGwodCxu
KDMwKSxuKDIwNSkoZSkpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1
cm4gZS53ZWJwYWNrUG9seWZpbGx8fChlLmRlcHJlY2F0ZT1mdW5jdGlvbigpe30sZS5wYXRocz1b
XSxlLmNoaWxkcmVufHwoZS5jaGlsZHJlbj1bXSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImxv
YWRlZCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUubH19KSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZSwiaWQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVy
biBlLml9fSksZS53ZWJwYWNrUG9seWZpbGw9MSksZX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdCxuPWUuU3ltYm9sO3JldHVybiJmdW5jdGlvbiI9PT10
eXBlb2Ygbj9uLm9ic2VydmFibGU/dD1uLm9ic2VydmFibGU6KHQ9bigib2JzZXJ2YWJsZSIpLG4u
b2JzZXJ2YWJsZT10KTp0PSJAQG9ic2VydmFibGUiLHR9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQs
Il9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj10JiZ0LnR5cGU7cmV0dXJuIkdpdmVuIGFj
dGlvbiAiKyhuJiYnIicrbi50b1N0cmluZygpKyciJ3x8ImFuIGFjdGlvbiIpKycsIHJlZHVjZXIg
IicrZSsnIiByZXR1cm5lZCB1bmRlZmluZWQuIFRvIGlnbm9yZSBhbiBhY3Rpb24sIHlvdSBtdXN0
IGV4cGxpY2l0bHkgcmV0dXJuIHRoZSBwcmV2aW91cyBzdGF0ZS4gSWYgeW91IHdhbnQgdGhpcyBy
ZWR1Y2VyIHRvIGhvbGQgbm8gdmFsdWUsIHlvdSBjYW4gcmV0dXJuIG51bGwgaW5zdGVhZCBvZiB1
bmRlZmluZWQuJ31mdW5jdGlvbiBvKGUpe09iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24o
dCl7dmFyIG49ZVt0XTtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBuKHZvaWQgMCx7dHlwZTphLmEu
SU5JVH0pKXRocm93IG5ldyBFcnJvcignUmVkdWNlciAiJyt0KyJcIiByZXR1cm5lZCB1bmRlZmlu
ZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBJZiB0aGUgc3RhdGUgcGFzc2VkIHRvIHRoZSByZWR1
Y2VyIGlzIHVuZGVmaW5lZCwgeW91IG11c3QgZXhwbGljaXRseSByZXR1cm4gdGhlIGluaXRpYWwg
c3RhdGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSBub3QgYmUgdW5kZWZpbmVkLiBJZiB5b3UgZG9u
J3Qgd2FudCB0byBzZXQgYSB2YWx1ZSBmb3IgdGhpcyByZWR1Y2VyLCB5b3UgY2FuIHVzZSBudWxs
IGluc3RlYWQgb2YgdW5kZWZpbmVkLiIpO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIG4odm9pZCAw
LHt0eXBlOiJAQHJlZHV4L1BST0JFX1VOS05PV05fQUNUSU9OXyIrTWF0aC5yYW5kb20oKS50b1N0
cmluZygzNikuc3Vic3RyaW5nKDcpLnNwbGl0KCIiKS5qb2luKCIuIil9KSl0aHJvdyBuZXcgRXJy
b3IoJ1JlZHVjZXIgIicrdCsiXCIgcmV0dXJuZWQgdW5kZWZpbmVkIHdoZW4gcHJvYmVkIHdpdGgg
YSByYW5kb20gdHlwZS4gRG9uJ3QgdHJ5IHRvIGhhbmRsZSAiK2EuYS5JTklUKycgb3Igb3RoZXIg
YWN0aW9ucyBpbiAicmVkdXgvKiIgbmFtZXNwYWNlLiBUaGV5IGFyZSBjb25zaWRlcmVkIHByaXZh
dGUuIEluc3RlYWQsIHlvdSBtdXN0IHJldHVybiB0aGUgY3VycmVudCBzdGF0ZSBmb3IgYW55IHVu
a25vd24gYWN0aW9ucywgdW5sZXNzIGl0IGlzIHVuZGVmaW5lZCwgaW4gd2hpY2ggY2FzZSB5b3Ug
bXVzdCByZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUsIHJlZ2FyZGxlc3Mgb2YgdGhlIGFjdGlvbiB0
eXBlLiBUaGUgaW5pdGlhbCBzdGF0ZSBtYXkgbm90IGJlIHVuZGVmaW5lZCwgYnV0IGNhbiBiZSBu
dWxsLicpfSl9ZnVuY3Rpb24gaShlKXtmb3IodmFyIHQ9T2JqZWN0LmtleXMoZSksbj17fSxpPTA7
aTx0Lmxlbmd0aDtpKyspe3ZhciBhPXRbaV07ImZ1bmN0aW9uIj09PXR5cGVvZiBlW2FdJiYoblth
XT1lW2FdKX12YXIgdT1PYmplY3Qua2V5cyhuKSxzPXZvaWQgMDt0cnl7byhuKX1jYXRjaChlKXtz
PWV9cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1h
cmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9YXJndW1lbnRzWzFdO2lmKHMpdGhyb3cgcztm
b3IodmFyIG89ITEsaT17fSxhPTA7YTx1Lmxlbmd0aDthKyspe3ZhciBjPXVbYV0sbD1uW2NdLHA9
ZVtjXSxmPWwocCx0KTtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBmKXt2YXIgZD1yKGMsdCk7dGhy
b3cgbmV3IEVycm9yKGQpfWlbY109ZixvPW98fGYhPT1wfXJldHVybiBvP2k6ZX19dC5hPWk7dmFy
IGE9big4NCk7big0OCksbig4Nil9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KGUuYXBwbHkodm9pZCAwLGFyZ3Vt
ZW50cykpfX1mdW5jdGlvbiBvKGUsdCl7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBlKXJldHVybiBy
KGUsdCk7aWYoIm9iamVjdCIhPT10eXBlb2YgZXx8bnVsbD09PWUpdGhyb3cgbmV3IEVycm9yKCJi
aW5kQWN0aW9uQ3JlYXRvcnMgZXhwZWN0ZWQgYW4gb2JqZWN0IG9yIGEgZnVuY3Rpb24sIGluc3Rl
YWQgcmVjZWl2ZWQgIisobnVsbD09PWU/Im51bGwiOnR5cGVvZiBlKSsnLiBEaWQgeW91IHdyaXRl
ICJpbXBvcnQgQWN0aW9uQ3JlYXRvcnMgZnJvbSIgaW5zdGVhZCBvZiAiaW1wb3J0ICogYXMgQWN0
aW9uQ3JlYXRvcnMgZnJvbSI/Jyk7Zm9yKHZhciBuPU9iamVjdC5rZXlzKGUpLG89e30saT0wO2k8
bi5sZW5ndGg7aSsrKXt2YXIgYT1uW2ldLHU9ZVthXTsiZnVuY3Rpb24iPT09dHlwZW9mIHUmJihv
W2FdPXIodSx0KSl9cmV0dXJuIG99dC5hPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
big4NyksT2JqZWN0LmFzc2lnbn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90
IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe2lmKCFlKXRocm93
IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVy
KCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT09dHlwZW9mIHQmJiJm
dW5jdGlvbiIhPT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gaShlLHQpe2lmKCJmdW5jdGlvbiIhPT10
eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBt
dXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3Rv
dHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxl
bnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNl
dFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfXZh
ciBhPW4oOSksdT0obi5uKGEpLG4oODkpKSxzPW4ubih1KSxjPW4oOTApO24oNDkpO3QuYT1mdW5j
dGlvbigpe3ZhciBlLHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/
YXJndW1lbnRzWzBdOiJzdG9yZSIsbj1hcmd1bWVudHNbMV0sdT1ufHx0KyJTdWJzY3JpcHRpb24i
LGw9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbihpLGEpe3IodGhpcyxuKTt2YXIgdT1vKHRoaXMsZS5j
YWxsKHRoaXMsaSxhKSk7cmV0dXJuIHVbdF09aS5zdG9yZSx1fXJldHVybiBpKG4sZSksbi5wcm90
b3R5cGUuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIGU9e30sZVt0XT10
aGlzW3RdLGVbdV09bnVsbCxlfSxuLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4g
YS5DaGlsZHJlbi5vbmx5KHRoaXMucHJvcHMuY2hpbGRyZW4pfSxufShhLkNvbXBvbmVudCk7cmV0
dXJuIGwucHJvcFR5cGVzPXtzdG9yZTpjLmEuaXNSZXF1aXJlZCxjaGlsZHJlbjpzLmEuZWxlbWVu
dC5pc1JlcXVpcmVkfSxsLmNoaWxkQ29udGV4dFR5cGVzPShlPXt9LGVbdF09Yy5hLmlzUmVxdWly
ZWQsZVt1XT1jLmIsZSksbH0oKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1u
KDYpLG89bigwKSxpPW4oNTcpO2UuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4s
cixhLHUpe3UhPT1pJiZvKCExLCJDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5
IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiBVc2UgUHJvcFR5
cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiBSZWFkIG1vcmUgYXQgaHR0cDovL2Zi
Lm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzIil9ZnVuY3Rpb24gdCgpe3JldHVybiBlfWUuaXNSZXF1
aXJlZD1lO3ZhciBuPXthcnJheTplLGJvb2w6ZSxmdW5jOmUsbnVtYmVyOmUsb2JqZWN0OmUsc3Ry
aW5nOmUsc3ltYm9sOmUsYW55OmUsYXJyYXlPZjp0LGVsZW1lbnQ6ZSxpbnN0YW5jZU9mOnQsbm9k
ZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0fTtyZXR1cm4gbi5jaGVj
a1Byb3BUeXBlcz1yLG4uUHJvcFR5cGVzPW4sbn19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9e2NoaWxkQ29udGV4dFR5cGVzOiEwLGNvbnRleHRUeXBlczohMCxkZWZhdWx0UHJv
cHM6ITAsZGlzcGxheU5hbWU6ITAsZ2V0RGVmYXVsdFByb3BzOiEwLG1peGluczohMCxwcm9wVHlw
ZXM6ITAsdHlwZTohMH0sbz17bmFtZTohMCxsZW5ndGg6ITAscHJvdG90eXBlOiEwLGNhbGxlcjoh
MCxjYWxsZWU6ITAsYXJndW1lbnRzOiEwLGFyaXR5OiEwfSxpPU9iamVjdC5kZWZpbmVQcm9wZXJ0
eSxhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLHU9T2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scyxzPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsYz1PYmplY3QuZ2V0UHJvdG90
eXBlT2YsbD1jJiZjKE9iamVjdCk7ZS5leHBvcnRzPWZ1bmN0aW9uIGUodCxuLHApe2lmKCJzdHJp
bmciIT09dHlwZW9mIG4pe2lmKGwpe3ZhciBmPWMobik7ZiYmZiE9PWwmJmUodCxmLHApfXZhciBk
PWEobik7dSYmKGQ9ZC5jb25jYXQodShuKSkpO2Zvcih2YXIgaD0wO2g8ZC5sZW5ndGg7KytoKXt2
YXIgbT1kW2hdO2lmKCFyW21dJiYhb1ttXSYmKCFwfHwhcFttXSkpe3ZhciB2PXMobixtKTt0cnl7
aSh0LG0sdil9Y2F0Y2goZSl7fX19cmV0dXJuIHR9cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKGUsdCxuLHIsbyxpLGEsdSl7aWYoIWUpe3ZhciBz
O2lmKHZvaWQgMD09PXQpcz1uZXcgRXJyb3IoIk1pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsg
dXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciB0aGUgZnVsbCBlcnJvciBt
ZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIik7ZWxzZXt2YXIgYz1bbixy
LG8saSxhLHVdLGw9MDtzPW5ldyBFcnJvcih0LnJlcGxhY2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1
cm4gY1tsKytdfSkpLHMubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgcy5mcmFtZXNU
b1BvcD0xLHN9fTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fu
bm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbygpe3ZhciBlPVtdLHQ9
W107cmV0dXJue2NsZWFyOmZ1bmN0aW9uKCl7dD1pLGU9aX0sbm90aWZ5OmZ1bmN0aW9uKCl7Zm9y
KHZhciBuPWU9dCxyPTA7cjxuLmxlbmd0aDtyKyspbltyXSgpfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdH0sc3Vic2NyaWJlOmZ1bmN0aW9uKG4pe3ZhciByPSEwO3JldHVybiB0PT09ZSYmKHQ9ZS5z
bGljZSgpKSx0LnB1c2gobiksZnVuY3Rpb24oKXtyJiZlIT09aSYmKHI9ITEsdD09PWUmJih0PWUu
c2xpY2UoKSksdC5zcGxpY2UodC5pbmRleE9mKG4pLDEpKX19fX1uLmQodCwiYSIsZnVuY3Rpb24o
KXtyZXR1cm4gdX0pO3ZhciBpPW51bGwsYT17bm90aWZ5OmZ1bmN0aW9uKCl7fX0sdT1mdW5jdGlv
bigpe2Z1bmN0aW9uIGUodCxuLG8pe3IodGhpcyxlKSx0aGlzLnN0b3JlPXQsdGhpcy5wYXJlbnRT
dWI9bix0aGlzLm9uU3RhdGVDaGFuZ2U9byx0aGlzLnVuc3Vic2NyaWJlPW51bGwsdGhpcy5saXN0
ZW5lcnM9YX1yZXR1cm4gZS5wcm90b3R5cGUuYWRkTmVzdGVkU3ViPWZ1bmN0aW9uKGUpe3JldHVy
biB0aGlzLnRyeVN1YnNjcmliZSgpLHRoaXMubGlzdGVuZXJzLnN1YnNjcmliZShlKX0sZS5wcm90
b3R5cGUubm90aWZ5TmVzdGVkU3Vicz1mdW5jdGlvbigpe3RoaXMubGlzdGVuZXJzLm5vdGlmeSgp
fSxlLnByb3RvdHlwZS5pc1N1YnNjcmliZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbih0aGlz
LnVuc3Vic2NyaWJlKX0sZS5wcm90b3R5cGUudHJ5U3Vic2NyaWJlPWZ1bmN0aW9uKCl7dGhpcy51
bnN1YnNjcmliZXx8KHRoaXMudW5zdWJzY3JpYmU9dGhpcy5wYXJlbnRTdWI/dGhpcy5wYXJlbnRT
dWIuYWRkTmVzdGVkU3ViKHRoaXMub25TdGF0ZUNoYW5nZSk6dGhpcy5zdG9yZS5zdWJzY3JpYmUo
dGhpcy5vblN0YXRlQ2hhbmdlKSx0aGlzLmxpc3RlbmVycz1vKCkpfSxlLnByb3RvdHlwZS50cnlV
bnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMudW5zdWJzY3JpYmUmJih0aGlzLnVuc3Vic2NyaWJl
KCksdGhpcy51bnN1YnNjcmliZT1udWxsLHRoaXMubGlzdGVuZXJzLmNsZWFyKCksdGhpcy5saXN0
ZW5lcnM9YSl9LGV9KCl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKXQuaW5kZXhPZihyKT49MHx8T2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJihuW3JdPWVbcl0pO3JldHVybiBufWZ1bmN0
aW9uIG8oZSx0LG4pe2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgbz10W3JdKGUp
O2lmKG8pcmV0dXJuIG99cmV0dXJuIGZ1bmN0aW9uKHQscil7dGhyb3cgbmV3IEVycm9yKCJJbnZh
bGlkIHZhbHVlIG9mIHR5cGUgIit0eXBlb2YgZSsiIGZvciAiK24rIiBhcmd1bWVudCB3aGVuIGNv
bm5lY3RpbmcgY29tcG9uZW50ICIrci53cmFwcGVkQ29tcG9uZW50TmFtZSsiLiIpfX1mdW5jdGlv
biBpKGUsdCl7cmV0dXJuIGU9PT10fXZhciBhPW4oOTEpLHU9bigyMTYpLHM9bigyMTcpLGM9bigy
MTgpLGw9bigyMTkpLHA9bigyMjApLGY9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZh
ciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIg
ciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1u
W3JdKX1yZXR1cm4gZX07dC5hPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2
b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb25uZWN0SE9DLG49dm9p
ZCAwPT09dD9hLmE6dCxkPWUubWFwU3RhdGVUb1Byb3BzRmFjdG9yaWVzLGg9dm9pZCAwPT09ZD9j
LmE6ZCxtPWUubWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVzLHY9dm9pZCAwPT09bT9zLmE6bSx5
PWUubWVyZ2VQcm9wc0ZhY3RvcmllcyxnPXZvaWQgMD09PXk/bC5hOnksYj1lLnNlbGVjdG9yRmFj
dG9yeSxfPXZvaWQgMD09PWI/cC5hOmI7cmV0dXJuIGZ1bmN0aW9uKGUsdCxhKXt2YXIgcz1hcmd1
bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106e30sYz1z
LnB1cmUsbD12b2lkIDA9PT1jfHxjLHA9cy5hcmVTdGF0ZXNFcXVhbCxkPXZvaWQgMD09PXA/aTpw
LG09cy5hcmVPd25Qcm9wc0VxdWFsLHk9dm9pZCAwPT09bT91LmE6bSxiPXMuYXJlU3RhdGVQcm9w
c0VxdWFsLEM9dm9pZCAwPT09Yj91LmE6Yix3PXMuYXJlTWVyZ2VkUHJvcHNFcXVhbCxFPXZvaWQg
MD09PXc/dS5hOncseD1yKHMsWyJwdXJlIiwiYXJlU3RhdGVzRXF1YWwiLCJhcmVPd25Qcm9wc0Vx
dWFsIiwiYXJlU3RhdGVQcm9wc0VxdWFsIiwiYXJlTWVyZ2VkUHJvcHNFcXVhbCJdKSxUPW8oZSxo
LCJtYXBTdGF0ZVRvUHJvcHMiKSxQPW8odCx2LCJtYXBEaXNwYXRjaFRvUHJvcHMiKSxPPW8oYSxn
LCJtZXJnZVByb3BzIik7cmV0dXJuIG4oXyxmKHttZXRob2ROYW1lOiJjb25uZWN0IixnZXREaXNw
bGF5TmFtZTpmdW5jdGlvbihlKXtyZXR1cm4iQ29ubmVjdCgiK2UrIikifSxzaG91bGRIYW5kbGVT
dGF0ZUNoYW5nZXM6Qm9vbGVhbihlKSxpbml0TWFwU3RhdGVUb1Byb3BzOlQsaW5pdE1hcERpc3Bh
dGNoVG9Qcm9wczpQLGluaXRNZXJnZVByb3BzOk8scHVyZTpsLGFyZVN0YXRlc0VxdWFsOmQsYXJl
T3duUHJvcHNFcXVhbDp5LGFyZVN0YXRlUHJvcHNFcXVhbDpDLGFyZU1lcmdlZFByb3BzRXF1YWw6
RX0seCkpfX0oKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7
cmV0dXJuIGU9PT10PzAhPT1lfHwwIT09dHx8MS9lPT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlv
biBvKGUsdCl7aWYocihlLHQpKXJldHVybiEwO2lmKCJvYmplY3QiIT09dHlwZW9mIGV8fG51bGw9
PT1lfHwib2JqZWN0IiE9PXR5cGVvZiB0fHxudWxsPT09dClyZXR1cm4hMTt2YXIgbj1PYmplY3Qu
a2V5cyhlKSxvPU9iamVjdC5rZXlzKHQpO2lmKG4ubGVuZ3RoIT09by5sZW5ndGgpcmV0dXJuITE7
Zm9yKHZhciBhPTA7YTxuLmxlbmd0aDthKyspaWYoIWkuY2FsbCh0LG5bYV0pfHwhcihlW25bYV1d
LHRbblthXV0pKXJldHVybiExO3JldHVybiEwfXQuYT1vO3ZhciBpPU9iamVjdC5wcm90b3R5cGUu
aGFzT3duUHJvcGVydHl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGU/T2JqZWN0KHUuYikoZSwibWFwRGlzcGF0Y2hU
b1Byb3BzIik6dm9pZCAwfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGU/dm9pZCAwOk9iamVjdCh1LmEp
KGZ1bmN0aW9uKGUpe3JldHVybntkaXNwYXRjaDplfX0pfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGUm
JiJvYmplY3QiPT09dHlwZW9mIGU/T2JqZWN0KHUuYSkoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVj
dChhLmEpKGUsdCl9KTp2b2lkIDB9dmFyIGE9bigyOSksdT1uKDkyKTt0LmE9W3IsbyxpXX0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiJmdW5jdGlvbiI9
PT10eXBlb2YgZT9PYmplY3QoaS5iKShlLCJtYXBTdGF0ZVRvUHJvcHMiKTp2b2lkIDB9ZnVuY3Rp
b24gbyhlKXtyZXR1cm4gZT92b2lkIDA6T2JqZWN0KGkuYSkoZnVuY3Rpb24oKXtyZXR1cm57fX0p
fXZhciBpPW4oOTIpO3QuYT1bcixvXX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCxuKXtyZXR1cm4gdSh7fSxuLGUsdCl9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZnVu
Y3Rpb24odCxuKXt2YXIgcj0obi5kaXNwbGF5TmFtZSxuLnB1cmUpLG89bi5hcmVNZXJnZWRQcm9w
c0VxdWFsLGk9ITEsYT12b2lkIDA7cmV0dXJuIGZ1bmN0aW9uKHQsbix1KXt2YXIgcz1lKHQsbix1
KTtyZXR1cm4gaT9yJiZvKHMsYSl8fChhPXMpOihpPSEwLGE9cyksYX19fWZ1bmN0aW9uIGkoZSl7
cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBlP28oZSk6dm9pZCAwfWZ1bmN0aW9uIGEoZSl7cmV0
dXJuIGU/dm9pZCAwOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fXZhciB1PShuKDkzKSxPYmplY3QuYXNz
aWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIg
bj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSk7dC5hPVtpLGFdfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj17fTtmb3IodmFyIHIg
aW4gZSl0LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bChlLHIpJiYobltyXT1lW3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBvKGUsdCxuLHIpe3JldHVybiBm
dW5jdGlvbihvLGkpe3JldHVybiBuKGUobyxpKSx0KHIsaSksaSl9fWZ1bmN0aW9uIGkoZSx0LG4s
cixvKXtmdW5jdGlvbiBpKG8saSl7cmV0dXJuIGg9byxtPWksdj1lKGgsbSkseT10KHIsbSksZz1u
KHYseSxtKSxkPSEwLGd9ZnVuY3Rpb24gYSgpe3JldHVybiB2PWUoaCxtKSx0LmRlcGVuZHNPbk93
blByb3BzJiYoeT10KHIsbSkpLGc9bih2LHksbSl9ZnVuY3Rpb24gdSgpe3JldHVybiBlLmRlcGVu
ZHNPbk93blByb3BzJiYodj1lKGgsbSkpLHQuZGVwZW5kc09uT3duUHJvcHMmJih5PXQocixtKSks
Zz1uKHYseSxtKX1mdW5jdGlvbiBzKCl7dmFyIHQ9ZShoLG0pLHI9IWYodCx2KTtyZXR1cm4gdj10
LHImJihnPW4odix5LG0pKSxnfWZ1bmN0aW9uIGMoZSx0KXt2YXIgbj0hcCh0LG0pLHI9IWwoZSxo
KTtyZXR1cm4gaD1lLG09dCxuJiZyP2EoKTpuP3UoKTpyP3MoKTpnfXZhciBsPW8uYXJlU3RhdGVz
RXF1YWwscD1vLmFyZU93blByb3BzRXF1YWwsZj1vLmFyZVN0YXRlUHJvcHNFcXVhbCxkPSExLGg9
dm9pZCAwLG09dm9pZCAwLHY9dm9pZCAwLHk9dm9pZCAwLGc9dm9pZCAwO3JldHVybiBmdW5jdGlv
bihlLHQpe3JldHVybiBkP2MoZSx0KTppKGUsdCl9fWZ1bmN0aW9uIGEoZSx0KXt2YXIgbj10Lmlu
aXRNYXBTdGF0ZVRvUHJvcHMsYT10LmluaXRNYXBEaXNwYXRjaFRvUHJvcHMsdT10LmluaXRNZXJn
ZVByb3BzLHM9cih0LFsiaW5pdE1hcFN0YXRlVG9Qcm9wcyIsImluaXRNYXBEaXNwYXRjaFRvUHJv
cHMiLCJpbml0TWVyZ2VQcm9wcyJdKSxjPW4oZSxzKSxsPWEoZSxzKSxwPXUoZSxzKTtyZXR1cm4o
cy5wdXJlP2k6bykoYyxsLHAsZSxzKX10LmE9YTtuKDIyMSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7big0OSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big5KSxv
PW4ubihyKSxpPW4oMjkpLGE9big4OCksdT1uKDIyMykscz1uKDIyNCksYz1uKDIyNyksbD1mdW5j
dGlvbihlKXt2YXIgdD1lLnRvZG9zLG49ZS5hY3Rpb25zO3JldHVybiBvLmEuY3JlYXRlRWxlbWVu
dCgiZGl2IixudWxsLG8uYS5jcmVhdGVFbGVtZW50KHUuYSx7YWRkVG9kbzpuLmFkZFRvZG99KSxv
LmEuY3JlYXRlRWxlbWVudChzLmEse3RvZG9zOnQsYWN0aW9uczpufSkpfTtsLnByb3BUeXBlcz17
dG9kb3M6ci5Qcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxhY3Rpb25zOnIuUHJvcFR5cGVzLm9i
amVjdC5pc1JlcXVpcmVkfTt2YXIgcD1mdW5jdGlvbihlKXtyZXR1cm57dG9kb3M6ZS50b2Rvc319
LGY9ZnVuY3Rpb24oZSl7cmV0dXJue2FjdGlvbnM6T2JqZWN0KGkuYSkoYyxlKX19O3QuYT1PYmpl
Y3QoYS5iKShwLGYpKGwpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2Fs
bCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBvKGUsdCl7aWYoIWUpdGhyb3cgbmV3
IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBo
YXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPT10eXBlb2YgdCYmImZ1bmN0
aW9uIiE9PXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBpKGUsdCl7aWYoImZ1bmN0aW9uIiE9PXR5cGVv
ZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3Qg
ZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBl
PU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1l
cmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJv
dG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9dmFyIGE9
big5KSx1PW4ubihhKSxzPW4oOTQpLGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZh
ciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJs
ZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1
cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksbD1mdW5jdGlvbihlKXtmdW5j
dGlvbiB0KCl7dmFyIGUsbixpLGE7cih0aGlzLHQpO2Zvcih2YXIgdT1hcmd1bWVudHMubGVuZ3Ro
LHM9QXJyYXkodSksYz0wO2M8dTtjKyspc1tjXT1hcmd1bWVudHNbY107cmV0dXJuIG49aT1vKHRo
aXMsKGU9dC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbC5hcHBseShl
LFt0aGlzXS5jb25jYXQocykpKSxpLmhhbmRsZVNhdmU9ZnVuY3Rpb24oZSl7MCE9PWUubGVuZ3Ro
JiZpLnByb3BzLmFkZFRvZG8oZSl9LGE9bixvKGksYSl9cmV0dXJuIGkodCxlKSxjKHQsW3trZXk6
InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdS5hLmNyZWF0ZUVsZW1lbnQoImhlYWRl
ciIse2NsYXNzTmFtZToiaGVhZGVyIn0sdS5hLmNyZWF0ZUVsZW1lbnQoImgxIixudWxsLCJ0b2Rv
cyIpLHUuYS5jcmVhdGVFbGVtZW50KHMuYSx7bmV3VG9kbzohMCxvblNhdmU6dGhpcy5oYW5kbGVT
YXZlLHBsYWNlaG9sZGVyOiJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/In0pKX19XSksdH0oYS5Db21w
b25lbnQpO2wucHJvcFR5cGVzPXthZGRUb2RvOmEuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZH0s
dC5hPWx9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEo
ZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3Mg
YXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNl
RXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVu
IGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9PXR5cGVvZiB0JiYiZnVuY3Rpb24iIT09dHlw
ZW9mIHQ/ZTp0fWZ1bmN0aW9uIGkoZSx0KXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIHQmJm51bGwh
PT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUg
bnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNy
ZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3
cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9P
YmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1mdW5jdGlvbiBhKGUsdCxu
KXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVy
YWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgdSxzPW4o
OSksYz1uLm4ocyksbD1uKDIyNSkscD1uKDIyNiksZj1uKDk1KSxkPWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVy
YWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53
cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5j
dGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGg9
KHU9e30sYSh1LGYuYixmdW5jdGlvbigpe3JldHVybiEwfSksYSh1LGYuYSxmdW5jdGlvbihlKXty
ZXR1cm4hZS5jb21wbGV0ZWR9KSxhKHUsZi5jLGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbXBsZXRl
ZH0pLHUpLG09ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG4saSxhO3IodGhpcyx0KTtm
b3IodmFyIHU9YXJndW1lbnRzLmxlbmd0aCxzPUFycmF5KHUpLGM9MDtjPHU7YysrKXNbY109YXJn
dW1lbnRzW2NdO3JldHVybiBuPWk9byh0aGlzLChlPXQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJv
dG90eXBlT2YodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHMpKSksaS5zdGF0ZT17Zmls
dGVyOmYuYn0saS5oYW5kbGVDbGVhckNvbXBsZXRlZD1mdW5jdGlvbigpe2kucHJvcHMuYWN0aW9u
cy5jbGVhckNvbXBsZXRlZCgpfSxpLmhhbmRsZVNob3c9ZnVuY3Rpb24oZSl7aS5zZXRTdGF0ZSh7
ZmlsdGVyOmV9KX0sYT1uLG8oaSxhKX1yZXR1cm4gaSh0LGUpLGQodCxbe2tleToicmVuZGVyVG9n
Z2xlQWxsIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLG49dC50b2RvcyxyPXQu
YWN0aW9ucztpZihuLmxlbmd0aD4wKXJldHVybiBjLmEuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHtj
bGFzc05hbWU6InRvZ2dsZS1hbGwiLHR5cGU6ImNoZWNrYm94IixjaGVja2VkOmU9PT1uLmxlbmd0
aCxvbkNoYW5nZTpyLmNvbXBsZXRlQWxsfSl9fSx7a2V5OiJyZW5kZXJGb290ZXIiLHZhbHVlOmZ1
bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMudG9kb3Msbj10aGlzLnN0YXRlLmZpbHRlcixyPXQu
bGVuZ3RoLWU7aWYodC5sZW5ndGgpcmV0dXJuIGMuYS5jcmVhdGVFbGVtZW50KHAuYSx7Y29tcGxl
dGVkQ291bnQ6ZSxhY3RpdmVDb3VudDpyLGZpbHRlcjpuLG9uQ2xlYXJDb21wbGV0ZWQ6dGhpcy5o
YW5kbGVDbGVhckNvbXBsZXRlZC5iaW5kKHRoaXMpLG9uU2hvdzp0aGlzLmhhbmRsZVNob3cuYmlu
ZCh0aGlzKX0pfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJv
cHMsdD1lLnRvZG9zLG49ZS5hY3Rpb25zLHI9dGhpcy5zdGF0ZS5maWx0ZXIsbz10LmZpbHRlciho
W3JdKSxpPXQucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuY29tcGxldGVkP2UrMTplfSww
KTtyZXR1cm4gYy5hLmNyZWF0ZUVsZW1lbnQoInNlY3Rpb24iLHtjbGFzc05hbWU6Im1haW4ifSx0
aGlzLnJlbmRlclRvZ2dsZUFsbChpKSxjLmEuY3JlYXRlRWxlbWVudCgidWwiLHtjbGFzc05hbWU6
InRvZG8tbGlzdCJ9LG8ubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBjLmEuY3JlYXRlRWxlbWVudChs
LmEsT2JqZWN0LmFzc2lnbih7a2V5OmUuaWQsdG9kbzplfSxuKSl9KSksdGhpcy5yZW5kZXJGb290
ZXIoaSkpfX1dKSx0fShzLkNvbXBvbmVudCk7bS5wcm9wVHlwZXM9e3RvZG9zOnMuUHJvcFR5cGVz
LmFycmF5LmlzUmVxdWlyZWQsYWN0aW9uczpzLlByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZH0s
dC5hPW19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEo
ZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3Mg
YXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNl
RXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVu
IGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9PXR5cGVvZiB0JiYiZnVuY3Rpb24iIT09dHlw
ZW9mIHQ/ZTp0fWZ1bmN0aW9uIGkoZSx0KXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIHQmJm51bGwh
PT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUg
bnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNy
ZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3
cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9P
YmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX12YXIgYT1uKDkpLHU9bi5u
KGEpLHM9big1MCksYz1uLm4ocyksbD1uKDk0KSxwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQp
e2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVu
dW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0h
MCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4s
cil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGY9ZnVuY3Rpb24o
ZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG4saSxhO3IodGhpcyx0KTtmb3IodmFyIHU9YXJndW1lbnRz
Lmxlbmd0aCxzPUFycmF5KHUpLGM9MDtjPHU7YysrKXNbY109YXJndW1lbnRzW2NdO3JldHVybiBu
PWk9byh0aGlzLChlPXQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwu
YXBwbHkoZSxbdGhpc10uY29uY2F0KHMpKSksaS5zdGF0ZT17ZWRpdGluZzohMX0saS5oYW5kbGVE
b3VibGVDbGljaz1mdW5jdGlvbigpe2kuc2V0U3RhdGUoe2VkaXRpbmc6ITB9KX0saS5oYW5kbGVT
YXZlPWZ1bmN0aW9uKGUsdCl7MD09PXQubGVuZ3RoP2kucHJvcHMuZGVsZXRlVG9kbyhlKTppLnBy
b3BzLmVkaXRUb2RvKGUsdCksaS5zZXRTdGF0ZSh7ZWRpdGluZzohMX0pfSxhPW4sbyhpLGEpfXJl
dHVybiBpKHQsZSkscCh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhp
cyx0PXRoaXMucHJvcHMsbj10LnRvZG8scj10LmNvbXBsZXRlVG9kbyxvPXQuZGVsZXRlVG9kbyxp
PXZvaWQgMDtyZXR1cm4gaT10aGlzLnN0YXRlLmVkaXRpbmc/dS5hLmNyZWF0ZUVsZW1lbnQobC5h
LHt0ZXh0Om4udGV4dCxlZGl0aW5nOnRoaXMuc3RhdGUuZWRpdGluZyxvblNhdmU6ZnVuY3Rpb24o
dCl7cmV0dXJuIGUuaGFuZGxlU2F2ZShuLmlkLHQpfX0pOnUuYS5jcmVhdGVFbGVtZW50KCJkaXYi
LHtjbGFzc05hbWU6InZpZXcifSx1LmEuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHtjbGFzc05hbWU6
InRvZ2dsZSIsdHlwZToiY2hlY2tib3giLGNoZWNrZWQ6bi5jb21wbGV0ZWQsb25DaGFuZ2U6ZnVu
Y3Rpb24oKXtyZXR1cm4gcihuLmlkKX19KSx1LmEuY3JlYXRlRWxlbWVudCgibGFiZWwiLHtvbkRv
dWJsZUNsaWNrOnRoaXMuaGFuZGxlRG91YmxlQ2xpY2t9LG4udGV4dCksdS5hLmNyZWF0ZUVsZW1l
bnQoImJ1dHRvbiIse2NsYXNzTmFtZToiZGVzdHJveSIsb25DbGljazpmdW5jdGlvbigpe3JldHVy
biBvKG4uaWQpfX0pKSx1LmEuY3JlYXRlRWxlbWVudCgibGkiLHtjbGFzc05hbWU6YygpKHtjb21w
bGV0ZWQ6bi5jb21wbGV0ZWQsZWRpdGluZzp0aGlzLnN0YXRlLmVkaXRpbmd9KX0saSl9fV0pLHR9
KGEuQ29tcG9uZW50KTtmLnByb3BUeXBlcz17dG9kbzphLlByb3BUeXBlcy5vYmplY3QuaXNSZXF1
aXJlZCxlZGl0VG9kbzphLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsZGVsZXRlVG9kbzphLlBy
b3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsY29tcGxldGVUb2RvOmEuUHJvcFR5cGVzLmZ1bmMuaXNS
ZXF1aXJlZH0sdC5hPWZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxs
IGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXtpZighZSl0aHJvdyBuZXcg
UmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhh
c24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9PXR5cGVvZiB0JiYiZnVuY3Rp
b24iIT09dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGkoZSx0KXtpZigiZnVuY3Rpb24iIT09dHlwZW9m
IHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBl
aXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9
T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVy
YWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90
b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1mdW5jdGlv
biBhKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVl
Om4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12
YXIgdSxzPW4oOSksYz1uLm4ocyksbD1uKDUwKSxwPW4ubihsKSxmPW4oOTUpLGQ9ZnVuY3Rpb24o
KXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07
ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImlu
IHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0
dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciks
dH19KCksaD0odT17fSxhKHUsZi5iLCJBbGwiKSxhKHUsZi5hLCJBY3RpdmUiKSxhKHUsZi5jLCJD
b21wbGV0ZWQiKSx1KSxtPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gcih0aGlzLHQp
LG8odGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhp
cyxhcmd1bWVudHMpKX1yZXR1cm4gaSh0LGUpLGQodCxbe2tleToicmVuZGVyVG9kb0NvdW50Iix2
YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMuYWN0aXZlQ291bnQsdD0xPT09ZT8iaXRl
bSI6Iml0ZW1zIjtyZXR1cm4gYy5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6InRv
ZG8tY291bnQifSxjLmEuY3JlYXRlRWxlbWVudCgic3Ryb25nIixudWxsLGV8fCJObyIpLCIgIix0
LCIgbGVmdCIpfX0se2tleToicmVuZGVyRmlsdGVyTGluayIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFy
IHQ9aFtlXSxuPXRoaXMucHJvcHMscj1uLmZpbHRlcixvPW4ub25TaG93O3JldHVybiBjLmEuY3Jl
YXRlRWxlbWVudCgiYSIse2NsYXNzTmFtZTpwKCkoe3NlbGVjdGVkOmU9PT1yfSksc3R5bGU6e2N1
cnNvcjoicG9pbnRlciJ9LG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gbyhlKX19LHQpfX0se2tl
eToicmVuZGVyQ2xlYXJCdXR0b24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0
PWUuY29tcGxldGVkQ291bnQsbj1lLm9uQ2xlYXJDb21wbGV0ZWQ7aWYodD4wKXJldHVybiBjLmEu
Y3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJjbGVhci1jb21wbGV0ZWQiLG9uQ2xp
Y2s6bn0sIkNsZWFyIGNvbXBsZXRlZCIpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigp
e3ZhciBlPXRoaXM7cmV0dXJuIGMuYS5jcmVhdGVFbGVtZW50KCJmb290ZXIiLHtjbGFzc05hbWU6
ImZvb3RlciJ9LHRoaXMucmVuZGVyVG9kb0NvdW50KCksYy5hLmNyZWF0ZUVsZW1lbnQoInVsIix7
Y2xhc3NOYW1lOiJmaWx0ZXJzIn0sW2YuYixmLmEsZi5jXS5tYXAoZnVuY3Rpb24odCl7cmV0dXJu
IGMuYS5jcmVhdGVFbGVtZW50KCJsaSIse2tleTp0fSxlLnJlbmRlckZpbHRlckxpbmsodCkpfSkp
LHRoaXMucmVuZGVyQ2xlYXJCdXR0b24oKSl9fV0pLHR9KHMuQ29tcG9uZW50KTttLnByb3BUeXBl
cz17Y29tcGxldGVkQ291bnQ6cy5Qcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsYWN0aXZlQ291
bnQ6cy5Qcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsZmlsdGVyOnMuUHJvcFR5cGVzLnN0cmlu
Zy5pc1JlcXVpcmVkLG9uQ2xlYXJDb21wbGV0ZWQ6cy5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVk
LG9uU2hvdzpzLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWR9LHQuYT1tfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFs
dWU6ITB9KSxuLmQodCwiYWRkVG9kbyIsZnVuY3Rpb24oKXtyZXR1cm4gb30pLG4uZCh0LCJkZWxl
dGVUb2RvIixmdW5jdGlvbigpe3JldHVybiBpfSksbi5kKHQsImVkaXRUb2RvIixmdW5jdGlvbigp
e3JldHVybiBhfSksbi5kKHQsImNvbXBsZXRlVG9kbyIsZnVuY3Rpb24oKXtyZXR1cm4gdX0pLG4u
ZCh0LCJjb21wbGV0ZUFsbCIsZnVuY3Rpb24oKXtyZXR1cm4gc30pLG4uZCh0LCJjbGVhckNvbXBs
ZXRlZCIsZnVuY3Rpb24oKXtyZXR1cm4gY30pO3ZhciByPW4oOTYpLG89ZnVuY3Rpb24oZSl7cmV0
dXJue3R5cGU6ci5hLHRleHQ6ZX19LGk9ZnVuY3Rpb24oZSl7cmV0dXJue3R5cGU6ci5lLGlkOmV9
fSxhPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3R5cGU6ci5mLGlkOmUsdGV4dDp0fX0sdT1mdW5jdGlv
bihlKXtyZXR1cm57dHlwZTpyLmQsaWQ6ZX19LHM9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpyLmN9
fSxjPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6ci5ifX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7dmFyIHI9bigyOSksbz1uKDIyOSksaT1PYmplY3Qoci5iKSh7dG9kb3M6by5hfSk7dC5h
PWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihBcnJheS5p
c0FycmF5KGUpKXtmb3IodmFyIHQ9MCxuPUFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKylu
W3RdPWVbdF07cmV0dXJuIG59cmV0dXJuIEFycmF5LmZyb20oZSl9ZnVuY3Rpb24gbygpe3ZhciBl
PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTph
LHQ9YXJndW1lbnRzWzFdO3N3aXRjaCh0LnR5cGUpe2Nhc2UgaS5hOnJldHVybltdLmNvbmNhdChy
KGUpLFt7aWQ6ZS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgodC5pZCxlKX0s
LTEpKzEsY29tcGxldGVkOiExLHRleHQ6dC50ZXh0fV0pO2Nhc2UgaS5lOnJldHVybiBlLmZpbHRl
cihmdW5jdGlvbihlKXtyZXR1cm4gZS5pZCE9PXQuaWR9KTtjYXNlIGkuZjpyZXR1cm4gZS5tYXAo
ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT10LmlkP09iamVjdC5hc3NpZ24oe30sZSx7dGV4dDp0
LnRleHR9KTplfSk7Y2FzZSBpLmQ6cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlk
PT09dC5pZD9PYmplY3QuYXNzaWduKHt9LGUse2NvbXBsZXRlZDohZS5jb21wbGV0ZWR9KTplfSk7
Y2FzZSBpLmM6dmFyIG49ZS5ldmVyeShmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0ZWR9KTty
ZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sZSx7Y29tcGxl
dGVkOiFufSl9KTtjYXNlIGkuYjpyZXR1cm4gZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuITE9
PT1lLmNvbXBsZXRlZH0pO2RlZmF1bHQ6cmV0dXJuIGV9fXQuYT1vO3ZhciBpPW4oOTYpLGE9W119
LGZ1bmN0aW9uKGUsdCl7fV0pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWFpbi4xOGI0MDllMS5q
cy5tYXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxl
cy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9tYWluLjE4YjQwOWUxLmpzLm1hcCBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2pzL21haW4uMThiNDA5ZTEuanMubWFwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRjNmZlMDkzNGQ1MGE1MDUxMGM5YTQ3YjQ2N2ZmY2U1YjAzNjJhZmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9tYWlu
LjE4YjQwOWUxLmpzLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNpb24iOjMsInNvdXJjZXMiOlsi
Li4vc3RhdGljL2pzL21haW4uMThiNDA5ZTEuanMiLCIuLi93ZWJwYWNrL2Jvb3RzdHJhcCBhY2Qw
YzJkNmM4ZTFkMGIwYzU5MCIsIi4uL25vZGVfbW9kdWxlcy9mYmpzL2xpYi9pbnZhcmlhbnQuanMi
LCIuLi9ub2RlX21vZHVsZXMvZmJqcy9saWIvd2FybmluZy5qcyIsIi4uL25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL3JlYWN0UHJvZEludmFyaWFudC5qcyIsIi4uL25vZGVfbW9kdWxlcy9vYmpl
Y3QtYXNzaWduL2luZGV4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RE
T01Db21wb25lbnRUcmVlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2ZianMvbGliL0V4ZWN1dGlvbkVu
dmlyb25tZW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2ZianMvbGliL2VtcHR5RnVuY3Rpb24uanMi
LCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEluc3RydW1lbnRhdGlvbi5qcyIs
Ii4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0VXBkYXRlcy5qcyIsIi4uL25vZGVf
bW9kdWxlcy9yZWFjdC9yZWFjdC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RD
dXJyZW50T3duZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNF
dmVudC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1Bvb2xlZENsYXNzLmpzIiwi
Li4vbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFj
dC9saWIvUmVhY3RFbGVtZW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRE9N
UHJvcGVydHkuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdFJlY29uY2ls
ZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9ET01MYXp5VHJlZS5qcyIsIi4u
L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvcmVhY3RQcm9kSW52YXJpYW50LmpzIiwiLi4vbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvRXZlbnRQcm9wYWdhdG9ycy5qcyIsIi4uL25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL0V2ZW50UGx1Z2luSHViLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvU3ludGhldGljVUlFdmVudC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL1JlYWN0SW5zdGFuY2VNYXAuanMiLCIuLi9ub2RlX21vZHVsZXMvZmJqcy9saWIvZW1wdHlP
YmplY3QuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9UcmFuc2FjdGlvbi5qcyIs
Ii4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY01vdXNlRXZlbnQuanMiLCIu
Li9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9zZXRJbm5lckhUTUwuanMiLCIuLi9ub2RlX21v
ZHVsZXMvcmVhY3QtZG9tL2xpYi9lc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIuanMiLCIuLi9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuanMiLCIu
Li9ub2RlX21vZHVsZXMvd2VicGFjay9idWlsZGluL2dsb2JhbC5qcyIsIi4uL25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL0V2ZW50UGx1Z2luUmVnaXN0cnkuanMiLCIuLi9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2xpYi9FdmVudFBsdWdpblV0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvUmVhY3RFcnJvclV0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9s
aWIvZ2V0RXZlbnRUYXJnZXQuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9pc0V2
ZW50U3VwcG9ydGVkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZ2V0RXZlbnRN
b2RpZmllclN0YXRlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRE9NQ2hpbGRy
ZW5PcGVyYXRpb25zLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRE9NTmFtZXNw
YWNlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2NyZWF0ZU1pY3Jvc29mdFVu
c2FmZUxvY2FsRnVuY3Rpb24uanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9MaW5r
ZWRWYWx1ZVV0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RDb21w
b25lbnRFbnZpcm9ubWVudC5qcyIsIi4uL25vZGVfbW9kdWxlcy9mYmpzL2xpYi9zaGFsbG93RXF1
YWwuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9zaG91bGRVcGRhdGVSZWFjdENv
bXBvbmVudC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0tleUVzY2FwZVV0aWxz
LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RVcGRhdGVRdWV1ZS5qcyIs
Ii4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL3ZhbGlkYXRlRE9NTmVzdGluZy5qcyIsIi4u
L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2dldEV2ZW50Q2hhckNvZGUuanMiLCIuLi9ub2Rl
X21vZHVsZXMvbG9kYXNoLWVzL2lzUGxhaW5PYmplY3QuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVh
Y3QtcmVkdXgvZXMvdXRpbHMvd2FybmluZy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jbGFzc25hbWVz
L2luZGV4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXNjcmlwdHMvbm9kZV9tb2R1bGVzL3By
b21pc2UvbGliL2NvcmUuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0QmFzZUNs
YXNzZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVl
LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9jYW5EZWZpbmVQcm9wZXJ0eS5qcyIsIi4u
L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RFbGVtZW50U3ltYm9sLmpzIiwiLi4vbm9kZV9t
b2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeS5qcyIsIi4uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVz
L2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL1JlYWN0RE9NQ29tcG9uZW50RmxhZ3MuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9hY2N1bXVsYXRlSW50by5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2Zv
ckVhY2hBY2N1bXVsYXRlZC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2dldFRl
eHRDb250ZW50QWNjZXNzb3IuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9DYWxs
YmFja1F1ZXVlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RGZWF0dXJl
RmxhZ3MuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9pbnB1dFZhbHVlVHJhY2tp
bmcuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9pc1RleHRJbnB1dEVsZW1lbnQu
anMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9WaWV3cG9ydE1ldHJpY3MuanMiLCIu
Li9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9zZXRUZXh0Q29udGVudC5qcyIsIi4uL25vZGVf
bW9kdWxlcy9mYmpzL2xpYi9mb2N1c05vZGUuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9DU1NQcm9wZXJ0eS5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0RPTVBy
b3BlcnR5T3BlcmF0aW9ucy5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0
RE9NU2VsZWN0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcyIsIi4uL25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQuanMiLCIu
Li9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdE5vZGVUeXBlcy5qcyIsIi4uL25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RW1wdHlDb21wb25lbnQuanMiLCIuLi9ub2RlX21v
ZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEhvc3RDb21wb25lbnQuanMiLCIuLi9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi90cmF2ZXJzZUFsbENoaWxkcmVuLmpzIiwiLi4vbm9kZV9tb2R1bGVz
L3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Zi
anMvbGliL0V2ZW50TGlzdGVuZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9S
ZWFjdElucHV0U2VsZWN0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2ZianMvbGliL2dldEFjdGl2
ZUVsZW1lbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdE1vdW50Lmpz
IiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZ2V0SG9zdENvbXBvbmVudEZyb21Db21w
b3NpdGUuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVkdXgvZXMvY3JlYXRlU3RvcmUuanMiLCIuLi9u
b2RlX21vZHVsZXMvbG9kYXNoLWVzL19TeW1ib2wuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVkdXgv
ZXMvY29tcG9zZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwiLi4v
bm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL3V0aWxzL1Byb3BUeXBlcy5qcyIsIi4uL25vZGVf
bW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb21wb25lbnRzL2Nvbm5lY3RBZHZhbmNlZC5qcyIsIi4u
L25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb25uZWN0L3dyYXBNYXBUb1Byb3BzLmpzIiwi
Y29tcG9uZW50cy9Ub2RvVGV4dElucHV0LmpzIiwiY29uc3RhbnRzL1RvZG9GaWx0ZXJzLmpzIiwi
Y29uc3RhbnRzL0FjdGlvblR5cGVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXNjcmlwdHMv
Y29uZmlnL3BvbHlmaWxscy5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1zY3JpcHRzL25vZGVf
bW9kdWxlcy9wcm9taXNlL2xpYi9yZWplY3Rpb24tdHJhY2tpbmcuanMiLCIuLi9ub2RlX21vZHVs
ZXMvYXNhcC9icm93c2VyLXJhdy5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1zY3JpcHRzL25v
ZGVfbW9kdWxlcy9wcm9taXNlL2xpYi9lczYtZXh0ZW5zaW9ucy5qcyIsIi4uL25vZGVfbW9kdWxl
cy93aGF0d2ctZmV0Y2gvZmV0Y2guanMiLCJpbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFj
dC9saWIvbG93UHJpb3JpdHlXYXJuaW5nLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9S
ZWFjdENoaWxkcmVuLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9Qb29sZWRDbGFzcy5q
cyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvdHJhdmVyc2VBbGxDaGlsZHJlbi5qcyIsIi4u
L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvZ2V0SXRlcmF0b3JGbi5qcyIsIi4uL25vZGVfbW9kdWxl
cy9yZWFjdC9saWIvS2V5RXNjYXBlVXRpbHMuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QvbGli
L1JlYWN0RE9NRmFjdG9yaWVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdFBy
b3BUeXBlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVHlwZUNo
ZWNrZXJzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvY2hlY2tQcm9wVHlwZXMuanMi
LCIuLi9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0VmVyc2lvbi5qcyIsIi4uL25vZGVfbW9k
dWxlcy9yZWFjdC9saWIvY3JlYXRlQ2xhc3MuanMiLCIuLi9ub2RlX21vZHVsZXMvY3JlYXRlLXJl
YWN0LWNsYXNzL2ZhY3RvcnkuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QvbGliL29ubHlDaGls
ZC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vaW5kZXguanMiLCIuLi9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTS5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL1JlYWN0RGVmYXVsdEluamVjdGlvbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL0FSSUFET01Qcm9wZXJ0eUNvbmZpZy5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL0JlZm9yZUlucHV0RXZlbnRQbHVnaW4uanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9GYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL2xpYi9TeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9saWIvU3ludGhldGljSW5wdXRFdmVudC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL0NoYW5nZUV2ZW50UGx1Z2luLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRv
bS9saWIvUmVhY3RSZWYuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdE93
bmVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRGVmYXVsdEV2ZW50UGx1Z2lu
T3JkZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9FbnRlckxlYXZlRXZlbnRQ
bHVnaW4uanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9IVE1MRE9NUHJvcGVydHlD
b25maWcuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdENvbXBvbmVudEJy
b3dzZXJFbnZpcm9ubWVudC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0Rhbmdl
ci5qcyIsIi4uL25vZGVfbW9kdWxlcy9mYmpzL2xpYi9jcmVhdGVOb2Rlc0Zyb21NYXJrdXAuanMi
LCIuLi9ub2RlX21vZHVsZXMvZmJqcy9saWIvY3JlYXRlQXJyYXlGcm9tTWl4ZWQuanMiLCIuLi9u
b2RlX21vZHVsZXMvZmJqcy9saWIvZ2V0TWFya3VwV3JhcC5qcyIsIi4uL25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1JlYWN0RE9NSURPcGVyYXRpb25zLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9saWIvUmVhY3RET01Db21wb25lbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL2xpYi9BdXRvRm9jdXNVdGlscy5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGli
L0NTU1Byb3BlcnR5T3BlcmF0aW9ucy5qcyIsIi4uL25vZGVfbW9kdWxlcy9mYmpzL2xpYi9jYW1l
bGl6ZVN0eWxlTmFtZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9mYmpzL2xpYi9jYW1lbGl6ZS5qcyIs
Ii4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2Rhbmdlcm91c1N0eWxlVmFsdWUuanMiLCIu
Li9ub2RlX21vZHVsZXMvZmJqcy9saWIvaHlwaGVuYXRlU3R5bGVOYW1lLmpzIiwiLi4vbm9kZV9t
b2R1bGVzL2ZianMvbGliL2h5cGhlbmF0ZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9mYmpzL2xpYi9t
ZW1vaXplU3RyaW5nT25seS5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL3F1b3Rl
QXR0cmlidXRlVmFsdWVGb3JCcm93c2VyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9s
aWIvUmVhY3RFdmVudEVtaXR0ZXJNaXhpbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL2dldFZlbmRvclByZWZpeGVkRXZlbnROYW1lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvUmVhY3RET01JbnB1dC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGli
L1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIv
UmVhY3RET01PcHRpb24uanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERP
TVRleHRhcmVhLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RNdWx0aUNo
aWxkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RDaGlsZFJlY29uY2ls
ZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdENvbXBvc2l0ZUNvbXBv
bmVudC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvZ2V0TmV4dERlYnVnSUQuanMiLCIu
Li9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdEVsZW1lbnRTeW1ib2wuanMiLCIuLi9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9nZXRJdGVyYXRvckZuLmpzIiwiLi4vbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9saWIvZmxhdHRlbkNoaWxkcmVuLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9saWIvUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbi5qcyIsIi4uL25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0U2VydmVyVXBkYXRlUXVldWUuanMiLCIuLi9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTUVtcHR5Q29tcG9uZW50LmpzIiwiLi4vbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01UcmVlVHJhdmVyc2FsLmpzIiwiLi4vbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01UZXh0Q29tcG9uZW50LmpzIiwiLi4vbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5qcyIs
Ii4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RXZlbnRMaXN0ZW5lci5qcyIsIi4u
L25vZGVfbW9kdWxlcy9mYmpzL2xpYi9nZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbi5qcyIsIi4u
L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0SW5qZWN0aW9uLmpzIiwiLi4vbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5qcyIsIi4uL25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NU2VsZWN0aW9uLmpzIiwiLi4vbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldC5qcyIsIi4uL25v
ZGVfbW9kdWxlcy9mYmpzL2xpYi9jb250YWluc05vZGUuanMiLCIuLi9ub2RlX21vZHVsZXMvZmJq
cy9saWIvaXNUZXh0Tm9kZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9mYmpzL2xpYi9pc05vZGUuanMi
LCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TVkdET01Qcm9wZXJ0eUNvbmZpZy5qcyIs
Ii4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1NlbGVjdEV2ZW50UGx1Z2luLmpzIiwiLi4v
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU2ltcGxlRXZlbnRQbHVnaW4uanMiLCIuLi9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNBbmltYXRpb25FdmVudC5qcyIsIi4uL25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0NsaXBib2FyZEV2ZW50LmpzIiwiLi4v
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU3ludGhldGljRm9jdXNFdmVudC5qcyIsIi4uL25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0tleWJvYXJkRXZlbnQuanMiLCIuLi9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9nZXRFdmVudEtleS5qcyIsIi4uL25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0RyYWdFdmVudC5qcyIsIi4uL25vZGVfbW9kdWxlcy9y
ZWFjdC1kb20vbGliL1N5bnRoZXRpY1RvdWNoRXZlbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVh
Y3QtZG9tL2xpYi9TeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQuanMiLCIuLi9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2xpYi9TeW50aGV0aWNXaGVlbEV2ZW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9saWIvUmVhY3RET01Db250YWluZXJJbmZvLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9saWIvUmVhY3RET01GZWF0dXJlRmxhZ3MuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVh
Y3QtZG9tL2xpYi9SZWFjdE1hcmt1cENoZWNrc3VtLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvYWRsZXIzMi5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0
VmVyc2lvbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2ZpbmRET01Ob2RlLmpz
IiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvcmVuZGVyU3VidHJlZUludG9Db250YWlu
ZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlR2V0VGFnLmpzIiwiLi4vbm9k
ZV9tb2R1bGVzL2xvZGFzaC1lcy9fcm9vdC5qcyIsIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMv
X2ZyZWVHbG9iYWwuanMiLCIuLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRSYXdUYWcuanMi
LCIuLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19vYmplY3RUb1N0cmluZy5qcyIsIi4uL25vZGVf
bW9kdWxlcy9sb2Rhc2gtZXMvX2dldFByb3RvdHlwZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sb2Rh
c2gtZXMvX292ZXJBcmcuanMiLCIuLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzT2JqZWN0TGlr
ZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9zeW1ib2wtb2JzZXJ2YWJsZS9pbmRleC5qcyIsIi4uL25v
ZGVfbW9kdWxlcy9zeW1ib2wtb2JzZXJ2YWJsZS9saWIvaW5kZXguanMiLCIuLi9ub2RlX21vZHVs
ZXMvd2VicGFjay9idWlsZGluL21vZHVsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9zeW1ib2wtb2Jz
ZXJ2YWJsZS9saWIvcG9ueWZpbGwuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVkdXgvZXMvY29tYmlu
ZVJlZHVjZXJzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlZHV4L2VzL2JpbmRBY3Rpb25DcmVhdG9y
cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWR1eC9lcy9hcHBseU1pZGRsZXdhcmUuanMiLCIuLi9u
b2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29tcG9uZW50cy9Qcm92aWRlci5qcyIsIi4uL25v
ZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIi4uL25v
ZGVfbW9kdWxlcy9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy9pbmRleC5qcyIsIi4uL25vZGVfbW9k
dWxlcy9pbnZhcmlhbnQvYnJvd3Nlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9l
cy91dGlscy9TdWJzY3JpcHRpb24uanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMv
Y29ubmVjdC9jb25uZWN0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL3V0aWxz
L3NoYWxsb3dFcXVhbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb25uZWN0
L21hcERpc3BhdGNoVG9Qcm9wcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9j
b25uZWN0L21hcFN0YXRlVG9Qcm9wcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9l
cy9jb25uZWN0L21lcmdlUHJvcHMuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMv
Y29ubmVjdC9zZWxlY3RvckZhY3RvcnkuanMiLCJjb250YWluZXJzL0FwcC5qcyIsImNvbXBvbmVu
dHMvSGVhZGVyLmpzIiwiY29tcG9uZW50cy9NYWluU2VjdGlvbi5qcyIsImNvbXBvbmVudHMvVG9k
b0l0ZW0uanMiLCJjb21wb25lbnRzL0Zvb3Rlci5qcyIsImFjdGlvbnMvaW5kZXguanMiLCJyZWR1
Y2Vycy9pbmRleC5qcyIsInJlZHVjZXJzL3RvZG9zLmpzIl0sIm5hbWVzIjpbIm1vZHVsZXMiLCJf
X3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpbnN0YWxsZWRNb2R1bGVzIiwiZXhwb3J0
cyIsIm1vZHVsZSIsImkiLCJsIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJv
IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwi
Z2V0IiwibiIsIl9fZXNNb2R1bGUiLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhh
c093blByb3BlcnR5IiwicCIsInMiLCJpbnZhcmlhbnQiLCJjb25kaXRpb24iLCJmb3JtYXQiLCJh
IiwiYiIsImUiLCJmIiwidmFsaWRhdGVGb3JtYXQiLCJlcnJvciIsInVuZGVmaW5lZCIsIkVycm9y
IiwiYXJncyIsImFyZ0luZGV4IiwicmVwbGFjZSIsImZyYW1lc1RvUG9wIiwiZW1wdHlGdW5jdGlv
biIsIndhcm5pbmciLCJyZWFjdFByb2RJbnZhcmlhbnQiLCJjb2RlIiwiYXJnQ291bnQiLCJhcmd1
bWVudHMiLCJsZW5ndGgiLCJtZXNzYWdlIiwiYXJnSWR4IiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwi
dG9PYmplY3QiLCJ2YWwiLCJUeXBlRXJyb3IiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9w
SXNFbnVtZXJhYmxlIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJhc3NpZ24iLCJ0ZXN0MSIsIlN0
cmluZyIsImdldE93blByb3BlcnR5TmFtZXMiLCJ0ZXN0MiIsImZyb21DaGFyQ29kZSIsIm1hcCIs
ImpvaW4iLCJ0ZXN0MyIsInNwbGl0IiwiZm9yRWFjaCIsImxldHRlciIsImtleXMiLCJlcnIiLCJ0
YXJnZXQiLCJzb3VyY2UiLCJmcm9tIiwic3ltYm9scyIsInRvIiwia2V5Iiwic2hvdWxkUHJlY2Fj
aGVOb2RlIiwibm9kZSIsIm5vZGVJRCIsIm5vZGVUeXBlIiwiZ2V0QXR0cmlidXRlIiwiQVRUUl9O
QU1FIiwibm9kZVZhbHVlIiwiZ2V0UmVuZGVyZWRIb3N0T3JUZXh0RnJvbUNvbXBvbmVudCIsImNv
bXBvbmVudCIsInJlbmRlcmVkIiwiX3JlbmRlcmVkQ29tcG9uZW50IiwicHJlY2FjaGVOb2RlIiwi
aW5zdCIsImhvc3RJbnN0IiwiX2hvc3ROb2RlIiwiaW50ZXJuYWxJbnN0YW5jZUtleSIsInVuY2Fj
aGVOb2RlIiwicHJlY2FjaGVDaGlsZE5vZGVzIiwiX2ZsYWdzIiwiRmxhZ3MiLCJoYXNDYWNoZWRD
aGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJfcmVuZGVyZWRDaGlsZHJlbiIsImNoaWxkTm9kZSIsImZp
cnN0Q2hpbGQiLCJvdXRlciIsImNoaWxkSW5zdCIsImNoaWxkSUQiLCJfZG9tSUQiLCJuZXh0U2li
bGluZyIsIl9wcm9kSW52YXJpYW50IiwiZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUiLCJwYXJl
bnRzIiwicHVzaCIsInBhcmVudE5vZGUiLCJjbG9zZXN0IiwicG9wIiwiZ2V0SW5zdGFuY2VGcm9t
Tm9kZSIsImdldE5vZGVGcm9tSW5zdGFuY2UiLCJfaG9zdFBhcmVudCIsIkRPTVByb3BlcnR5Iiwi
UmVhY3RET01Db21wb25lbnRGbGFncyIsIklEX0FUVFJJQlVURV9OQU1FIiwiTWF0aCIsInJhbmRv
bSIsInRvU3RyaW5nIiwic2xpY2UiLCJSZWFjdERPTUNvbXBvbmVudFRyZWUiLCJjYW5Vc2VET00i
LCJ3aW5kb3ciLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJFeGVjdXRpb25FbnZpcm9ubWVu
dCIsImNhblVzZVdvcmtlcnMiLCJXb3JrZXIiLCJjYW5Vc2VFdmVudExpc3RlbmVycyIsImFkZEV2
ZW50TGlzdGVuZXIiLCJhdHRhY2hFdmVudCIsImNhblVzZVZpZXdwb3J0Iiwic2NyZWVuIiwiaXNJ
bldvcmtlciIsIm1ha2VFbXB0eUZ1bmN0aW9uIiwiYXJnIiwidGhhdFJldHVybnMiLCJ0aGF0UmV0
dXJuc0ZhbHNlIiwidGhhdFJldHVybnNUcnVlIiwidGhhdFJldHVybnNOdWxsIiwidGhhdFJldHVy
bnNUaGlzIiwidGhpcyIsInRoYXRSZXR1cm5zQXJndW1lbnQiLCJkZWJ1Z1Rvb2wiLCJlbnN1cmVJ
bmplY3RlZCIsIlJlYWN0VXBkYXRlcyIsIlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24iLCJiYXRj
aGluZ1N0cmF0ZWd5IiwiUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbiIsInJlaW5pdGlhbGl6
ZVRyYW5zYWN0aW9uIiwiZGlydHlDb21wb25lbnRzTGVuZ3RoIiwiY2FsbGJhY2tRdWV1ZSIsIkNh
bGxiYWNrUXVldWUiLCJnZXRQb29sZWQiLCJyZWNvbmNpbGVUcmFuc2FjdGlvbiIsImJhdGNoZWRV
cGRhdGVzIiwiY2FsbGJhY2siLCJtb3VudE9yZGVyQ29tcGFyYXRvciIsImMxIiwiYzIiLCJfbW91
bnRPcmRlciIsInJ1bkJhdGNoZWRVcGRhdGVzIiwidHJhbnNhY3Rpb24iLCJsZW4iLCJkaXJ0eUNv
bXBvbmVudHMiLCJzb3J0IiwidXBkYXRlQmF0Y2hOdW1iZXIiLCJjYWxsYmFja3MiLCJfcGVuZGlu
Z0NhbGxiYWNrcyIsIm1hcmtlck5hbWUiLCJSZWFjdEZlYXR1cmVGbGFncyIsImxvZ1RvcExldmVs
UmVuZGVycyIsIm5hbWVkQ29tcG9uZW50IiwiX2N1cnJlbnRFbGVtZW50IiwidHlwZSIsImlzUmVh
Y3RUb3BMZXZlbFdyYXBwZXIiLCJnZXROYW1lIiwiY29uc29sZSIsInRpbWUiLCJSZWFjdFJlY29u
Y2lsZXIiLCJwZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkiLCJ0aW1lRW5kIiwiaiIsImVucXVldWUi
LCJnZXRQdWJsaWNJbnN0YW5jZSIsImVucXVldWVVcGRhdGUiLCJpc0JhdGNoaW5nVXBkYXRlcyIs
Il91cGRhdGVCYXRjaE51bWJlciIsImFzYXAiLCJjb250ZXh0IiwiYXNhcENhbGxiYWNrUXVldWUi
LCJhc2FwRW5xdWV1ZWQiLCJfYXNzaWduIiwiUG9vbGVkQ2xhc3MiLCJUcmFuc2FjdGlvbiIsIk5F
U1RFRF9VUERBVEVTIiwiaW5pdGlhbGl6ZSIsImNsb3NlIiwic3BsaWNlIiwiZmx1c2hCYXRjaGVk
VXBkYXRlcyIsIlVQREFURV9RVUVVRUlORyIsInJlc2V0Iiwibm90aWZ5QWxsIiwiVFJBTlNBQ1RJ
T05fV1JBUFBFUlMiLCJnZXRUcmFuc2FjdGlvbldyYXBwZXJzIiwiZGVzdHJ1Y3RvciIsInJlbGVh
c2UiLCJwZXJmb3JtIiwibWV0aG9kIiwic2NvcGUiLCJhZGRQb29saW5nVG8iLCJxdWV1ZSIsIlJl
YWN0VXBkYXRlc0luamVjdGlvbiIsImluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uIiwiUmVjb25j
aWxlVHJhbnNhY3Rpb24iLCJpbmplY3RCYXRjaGluZ1N0cmF0ZWd5IiwiX2JhdGNoaW5nU3RyYXRl
Z3kiLCJpbmplY3Rpb24iLCJSZWFjdEN1cnJlbnRPd25lciIsImN1cnJlbnQiLCJTeW50aGV0aWNF
dmVudCIsImRpc3BhdGNoQ29uZmlnIiwidGFyZ2V0SW5zdCIsIm5hdGl2ZUV2ZW50IiwibmF0aXZl
RXZlbnRUYXJnZXQiLCJfdGFyZ2V0SW5zdCIsIkludGVyZmFjZSIsImNvbnN0cnVjdG9yIiwicHJv
cE5hbWUiLCJub3JtYWxpemUiLCJkZWZhdWx0UHJldmVudGVkIiwicmV0dXJuVmFsdWUiLCJpc0Rl
ZmF1bHRQcmV2ZW50ZWQiLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsInNob3VsZEJlUmVsZWFzZWRQ
cm9wZXJ0aWVzIiwiRXZlbnRJbnRlcmZhY2UiLCJjdXJyZW50VGFyZ2V0IiwiZXZlbnRQaGFzZSIs
ImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwidGltZVN0YW1wIiwiZXZlbnQiLCJEYXRlIiwibm93Iiwi
aXNUcnVzdGVkIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjYW5jZWxCdWJi
bGUiLCJwZXJzaXN0IiwiaXNQZXJzaXN0ZW50IiwiYXVnbWVudENsYXNzIiwiQ2xhc3MiLCJTdXBl
ciIsIkUiLCJmb3VyQXJndW1lbnRQb29sZXIiLCJvbmVBcmd1bWVudFBvb2xlciIsImNvcHlGaWVs
ZHNGcm9tIiwiS2xhc3MiLCJpbnN0YW5jZVBvb2wiLCJpbnN0YW5jZSIsInR3b0FyZ3VtZW50UG9v
bGVyIiwiYTEiLCJhMiIsInRocmVlQXJndW1lbnRQb29sZXIiLCJhMyIsImE0Iiwic3RhbmRhcmRS
ZWxlYXNlciIsInBvb2xTaXplIiwiREVGQVVMVF9QT09MRVIiLCJDb3B5Q29uc3RydWN0b3IiLCJw
b29sZXIiLCJOZXdLbGFzcyIsIlJlYWN0QmFzZUNsYXNzZXMiLCJSZWFjdENoaWxkcmVuIiwiUmVh
Y3RET01GYWN0b3JpZXMiLCJSZWFjdEVsZW1lbnQiLCJSZWFjdFByb3BUeXBlcyIsIlJlYWN0VmVy
c2lvbiIsImNyZWF0ZVJlYWN0Q2xhc3MiLCJvbmx5Q2hpbGQiLCJjcmVhdGVGYWN0b3J5IiwiY2xv
bmVFbGVtZW50IiwiX19zcHJlYWQiLCJjcmVhdGVNaXhpbiIsIm1peGluIiwiUmVhY3QiLCJDaGls
ZHJlbiIsImNvdW50IiwidG9BcnJheSIsIm9ubHkiLCJDb21wb25lbnQiLCJQdXJlQ29tcG9uZW50
IiwiaXNWYWxpZEVsZW1lbnQiLCJQcm9wVHlwZXMiLCJjcmVhdGVDbGFzcyIsIkRPTSIsInZlcnNp
b24iLCJoYXNWYWxpZFJlZiIsImNvbmZpZyIsInJlZiIsImhhc1ZhbGlkS2V5IiwiUkVBQ1RfRUxF
TUVOVF9UWVBFIiwiUkVTRVJWRURfUFJPUFMiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInNlbGYiLCJv
d25lciIsInByb3BzIiwiZWxlbWVudCIsIiQkdHlwZW9mIiwiX293bmVyIiwiY2hpbGRyZW5MZW5n
dGgiLCJjaGlsZEFycmF5IiwiQXJyYXkiLCJkZWZhdWx0UHJvcHMiLCJmYWN0b3J5IiwiYmluZCIs
ImNsb25lQW5kUmVwbGFjZUtleSIsIm9sZEVsZW1lbnQiLCJuZXdLZXkiLCJfc2VsZiIsIl9zb3Vy
Y2UiLCJjaGVja01hc2siLCJ2YWx1ZSIsImJpdG1hc2siLCJET01Qcm9wZXJ0eUluamVjdGlvbiIs
Ik1VU1RfVVNFX1BST1BFUlRZIiwiSEFTX0JPT0xFQU5fVkFMVUUiLCJIQVNfTlVNRVJJQ19WQUxV
RSIsIkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFIiwiSEFTX09WRVJMT0FERURfQk9PTEVBTl9W
QUxVRSIsImluamVjdERPTVByb3BlcnR5Q29uZmlnIiwiZG9tUHJvcGVydHlDb25maWciLCJJbmpl
Y3Rpb24iLCJQcm9wZXJ0aWVzIiwiRE9NQXR0cmlidXRlTmFtZXNwYWNlcyIsIkRPTUF0dHJpYnV0
ZU5hbWVzIiwiRE9NUHJvcGVydHlOYW1lcyIsIkRPTU11dGF0aW9uTWV0aG9kcyIsImlzQ3VzdG9t
QXR0cmlidXRlIiwiX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zIiwicHJvcGVydGllcyIsImxv
d2VyQ2FzZWQiLCJ0b0xvd2VyQ2FzZSIsInByb3BDb25maWciLCJwcm9wZXJ0eUluZm8iLCJhdHRy
aWJ1dGVOYW1lIiwiYXR0cmlidXRlTmFtZXNwYWNlIiwicHJvcGVydHlOYW1lIiwibXV0YXRpb25N
ZXRob2QiLCJtdXN0VXNlUHJvcGVydHkiLCJoYXNCb29sZWFuVmFsdWUiLCJoYXNOdW1lcmljVmFs
dWUiLCJoYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZSIsImhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUi
LCJBVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSIiwiUk9PVF9BVFRSSUJVVEVfTkFNRSIsIkFUVFJJ
QlVURV9OQU1FX0NIQVIiLCJnZXRQb3NzaWJsZVN0YW5kYXJkTmFtZSIsImlzQ3VzdG9tQXR0cmli
dXRlRm4iLCJhdHRhY2hSZWZzIiwiUmVhY3RSZWYiLCJtb3VudENvbXBvbmVudCIsImludGVybmFs
SW5zdGFuY2UiLCJob3N0UGFyZW50IiwiaG9zdENvbnRhaW5lckluZm8iLCJwYXJlbnREZWJ1Z0lE
IiwibWFya3VwIiwiZ2V0UmVhY3RNb3VudFJlYWR5IiwiZ2V0SG9zdE5vZGUiLCJ1bm1vdW50Q29t
cG9uZW50Iiwic2FmZWx5IiwiZGV0YWNoUmVmcyIsInJlY2VpdmVDb21wb25lbnQiLCJuZXh0RWxl
bWVudCIsInByZXZFbGVtZW50IiwiX2NvbnRleHQiLCJyZWZzQ2hhbmdlZCIsInNob3VsZFVwZGF0
ZVJlZnMiLCJpbnNlcnRUcmVlQ2hpbGRyZW4iLCJ0cmVlIiwiZW5hYmxlTGF6eSIsImluc2VydFRy
ZWVCZWZvcmUiLCJodG1sIiwic2V0SW5uZXJIVE1MIiwidGV4dCIsInNldFRleHRDb250ZW50Iiwi
cmVwbGFjZUNoaWxkV2l0aFRyZWUiLCJvbGROb2RlIiwibmV3VHJlZSIsInJlcGxhY2VDaGlsZCIs
InF1ZXVlQ2hpbGQiLCJwYXJlbnRUcmVlIiwiY2hpbGRUcmVlIiwiYXBwZW5kQ2hpbGQiLCJxdWV1
ZUhUTUwiLCJxdWV1ZVRleHQiLCJub2RlTmFtZSIsIkRPTUxhenlUcmVlIiwiRE9NTmFtZXNwYWNl
cyIsImNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24iLCJkb2N1bWVudE1vZGUiLCJu
YXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJ0ZXN0IiwicmVmZXJlbmNlTm9kZSIsIm5hbWVzcGFjZVVS
SSIsImluc2VydEJlZm9yZSIsImxpc3RlbmVyQXRQaGFzZSIsInByb3BhZ2F0aW9uUGhhc2UiLCJy
ZWdpc3RyYXRpb25OYW1lIiwicGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMiLCJnZXRMaXN0ZW5lciIs
ImFjY3VtdWxhdGVEaXJlY3Rpb25hbERpc3BhdGNoZXMiLCJwaGFzZSIsImxpc3RlbmVyIiwiX2Rp
c3BhdGNoTGlzdGVuZXJzIiwiYWNjdW11bGF0ZUludG8iLCJfZGlzcGF0Y2hJbnN0YW5jZXMiLCJh
Y2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlIiwiRXZlbnRQbHVnaW5VdGlscyIsInRy
YXZlcnNlVHdvUGhhc2UiLCJhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlU2tpcFRh
cmdldCIsInBhcmVudEluc3QiLCJnZXRQYXJlbnRJbnN0YW5jZSIsImFjY3VtdWxhdGVEaXNwYXRj
aGVzIiwiaWdub3JlZERpcmVjdGlvbiIsImFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2luZ2xl
IiwiYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyIsImV2ZW50cyIsImZvckVhY2hBY2N1bXVs
YXRlZCIsImFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0IiwiYWNjdW11bGF0
ZUVudGVyTGVhdmVEaXNwYXRjaGVzIiwibGVhdmUiLCJlbnRlciIsInRyYXZlcnNlRW50ZXJMZWF2
ZSIsImFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzIiwiRXZlbnRQbHVnaW5IdWIiLCJFdmVudFBy
b3BhZ2F0b3JzIiwiaXNJbnRlcmFjdGl2ZSIsInRhZyIsInNob3VsZFByZXZlbnRNb3VzZUV2ZW50
IiwiZGlzYWJsZWQiLCJFdmVudFBsdWdpblJlZ2lzdHJ5IiwiUmVhY3RFcnJvclV0aWxzIiwibGlz
dGVuZXJCYW5rIiwiZXZlbnRRdWV1ZSIsImV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZSIsInNp
bXVsYXRlZCIsImV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlciIsImV4ZWN1dGVEaXNwYXRjaGVzQW5k
UmVsZWFzZVNpbXVsYXRlZCIsImV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVRvcExldmVsIiwi
Z2V0RGljdGlvbmFyeUtleSIsIl9yb290Tm9kZUlEIiwiaW5qZWN0RXZlbnRQbHVnaW5PcmRlciIs
ImluamVjdEV2ZW50UGx1Z2luc0J5TmFtZSIsInB1dExpc3RlbmVyIiwiUGx1Z2luTW9kdWxlIiwi
cmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMiLCJkaWRQdXRMaXN0ZW5lciIsImJhbmtGb3JSZWdpc3Ry
YXRpb25OYW1lIiwiZGVsZXRlTGlzdGVuZXIiLCJ3aWxsRGVsZXRlTGlzdGVuZXIiLCJkZWxldGVB
bGxMaXN0ZW5lcnMiLCJleHRyYWN0RXZlbnRzIiwidG9wTGV2ZWxUeXBlIiwicGx1Z2lucyIsInBv
c3NpYmxlUGx1Z2luIiwiZXh0cmFjdGVkRXZlbnRzIiwiZW5xdWV1ZUV2ZW50cyIsInByb2Nlc3NF
dmVudFF1ZXVlIiwicHJvY2Vzc2luZ0V2ZW50UXVldWUiLCJyZXRocm93Q2F1Z2h0RXJyb3IiLCJf
X3B1cmdlIiwiX19nZXRMaXN0ZW5lckJhbmsiLCJTeW50aGV0aWNVSUV2ZW50IiwiZGlzcGF0Y2hN
YXJrZXIiLCJnZXRFdmVudFRhcmdldCIsIlVJRXZlbnRJbnRlcmZhY2UiLCJ2aWV3IiwiZG9jIiwi
b3duZXJEb2N1bWVudCIsImRlZmF1bHRWaWV3IiwicGFyZW50V2luZG93IiwiZGV0YWlsIiwiUmVh
Y3RJbnN0YW5jZU1hcCIsInJlbW92ZSIsIl9yZWFjdEludGVybmFsSW5zdGFuY2UiLCJoYXMiLCJz
ZXQiLCJlbXB0eU9iamVjdCIsIk9CU0VSVkVEX0VSUk9SIiwiVHJhbnNhY3Rpb25JbXBsIiwidHJh
bnNhY3Rpb25XcmFwcGVycyIsIndyYXBwZXJJbml0RGF0YSIsIl9pc0luVHJhbnNhY3Rpb24iLCJp
c0luVHJhbnNhY3Rpb24iLCJlcnJvclRocm93biIsInJldCIsImluaXRpYWxpemVBbGwiLCJjbG9z
ZUFsbCIsInN0YXJ0SW5kZXgiLCJ3cmFwcGVyIiwiaW5pdERhdGEiLCJTeW50aGV0aWNNb3VzZUV2
ZW50IiwiVmlld3BvcnRNZXRyaWNzIiwiZ2V0RXZlbnRNb2RpZmllclN0YXRlIiwiTW91c2VFdmVu
dEludGVyZmFjZSIsInNjcmVlblgiLCJzY3JlZW5ZIiwiY2xpZW50WCIsImNsaWVudFkiLCJjdHJs
S2V5Iiwic2hpZnRLZXkiLCJhbHRLZXkiLCJtZXRhS2V5IiwiZ2V0TW9kaWZpZXJTdGF0ZSIsImJ1
dHRvbiIsImJ1dHRvbnMiLCJyZWxhdGVkVGFyZ2V0IiwiZnJvbUVsZW1lbnQiLCJzcmNFbGVtZW50
IiwidG9FbGVtZW50IiwicGFnZVgiLCJjdXJyZW50U2Nyb2xsTGVmdCIsInBhZ2VZIiwiY3VycmVu
dFNjcm9sbFRvcCIsInJldXNhYmxlU1ZHQ29udGFpbmVyIiwiV0hJVEVTUEFDRV9URVNUIiwiTk9O
VklTSUJMRV9URVNUIiwic3ZnIiwiaW5uZXJIVE1MIiwic3ZnTm9kZSIsInRlc3RFbGVtZW50Iiwi
dGV4dE5vZGUiLCJkYXRhIiwicmVtb3ZlQ2hpbGQiLCJkZWxldGVEYXRhIiwiZXNjYXBlSHRtbCIs
InN0cmluZyIsInN0ciIsIm1hdGNoIiwibWF0Y2hIdG1sUmVnRXhwIiwiZXhlYyIsImVzY2FwZSIs
ImluZGV4IiwibGFzdEluZGV4IiwiY2hhckNvZGVBdCIsInN1YnN0cmluZyIsImVzY2FwZVRleHRD
b250ZW50Rm9yQnJvd3NlciIsImdldExpc3RlbmluZ0ZvckRvY3VtZW50IiwibW91bnRBdCIsInRv
cExpc3RlbmVyc0lES2V5IiwicmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVyIiwiYWxyZWFkeUxpc3Rl
bmluZ1RvIiwiaGFzRXZlbnRQYWdlWFkiLCJSZWFjdEV2ZW50RW1pdHRlck1peGluIiwiZ2V0VmVu
ZG9yUHJlZml4ZWRFdmVudE5hbWUiLCJpc0V2ZW50U3VwcG9ydGVkIiwiaXNNb25pdG9yaW5nU2Ny
b2xsVmFsdWUiLCJ0b3BFdmVudE1hcHBpbmciLCJ0b3BBYm9ydCIsInRvcEFuaW1hdGlvbkVuZCIs
InRvcEFuaW1hdGlvbkl0ZXJhdGlvbiIsInRvcEFuaW1hdGlvblN0YXJ0IiwidG9wQmx1ciIsInRv
cENhblBsYXkiLCJ0b3BDYW5QbGF5VGhyb3VnaCIsInRvcENoYW5nZSIsInRvcENsaWNrIiwidG9w
Q29tcG9zaXRpb25FbmQiLCJ0b3BDb21wb3NpdGlvblN0YXJ0IiwidG9wQ29tcG9zaXRpb25VcGRh
dGUiLCJ0b3BDb250ZXh0TWVudSIsInRvcENvcHkiLCJ0b3BDdXQiLCJ0b3BEb3VibGVDbGljayIs
InRvcERyYWciLCJ0b3BEcmFnRW5kIiwidG9wRHJhZ0VudGVyIiwidG9wRHJhZ0V4aXQiLCJ0b3BE
cmFnTGVhdmUiLCJ0b3BEcmFnT3ZlciIsInRvcERyYWdTdGFydCIsInRvcERyb3AiLCJ0b3BEdXJh
dGlvbkNoYW5nZSIsInRvcEVtcHRpZWQiLCJ0b3BFbmNyeXB0ZWQiLCJ0b3BFbmRlZCIsInRvcEVy
cm9yIiwidG9wRm9jdXMiLCJ0b3BJbnB1dCIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRv
cEtleVVwIiwidG9wTG9hZGVkRGF0YSIsInRvcExvYWRlZE1ldGFkYXRhIiwidG9wTG9hZFN0YXJ0
IiwidG9wTW91c2VEb3duIiwidG9wTW91c2VNb3ZlIiwidG9wTW91c2VPdXQiLCJ0b3BNb3VzZU92
ZXIiLCJ0b3BNb3VzZVVwIiwidG9wUGFzdGUiLCJ0b3BQYXVzZSIsInRvcFBsYXkiLCJ0b3BQbGF5
aW5nIiwidG9wUHJvZ3Jlc3MiLCJ0b3BSYXRlQ2hhbmdlIiwidG9wU2Nyb2xsIiwidG9wU2Vla2Vk
IiwidG9wU2Vla2luZyIsInRvcFNlbGVjdGlvbkNoYW5nZSIsInRvcFN0YWxsZWQiLCJ0b3BTdXNw
ZW5kIiwidG9wVGV4dElucHV0IiwidG9wVGltZVVwZGF0ZSIsInRvcFRvdWNoQ2FuY2VsIiwidG9w
VG91Y2hFbmQiLCJ0b3BUb3VjaE1vdmUiLCJ0b3BUb3VjaFN0YXJ0IiwidG9wVHJhbnNpdGlvbkVu
ZCIsInRvcFZvbHVtZUNoYW5nZSIsInRvcFdhaXRpbmciLCJ0b3BXaGVlbCIsIlJlYWN0QnJvd3Nl
ckV2ZW50RW1pdHRlciIsIlJlYWN0RXZlbnRMaXN0ZW5lciIsImluamVjdFJlYWN0RXZlbnRMaXN0
ZW5lciIsInNldEhhbmRsZVRvcExldmVsIiwiaGFuZGxlVG9wTGV2ZWwiLCJzZXRFbmFibGVkIiwi
ZW5hYmxlZCIsImlzRW5hYmxlZCIsImxpc3RlblRvIiwiY29udGVudERvY3VtZW50SGFuZGxlIiwi
aXNMaXN0ZW5pbmciLCJkZXBlbmRlbmNpZXMiLCJyZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVz
IiwiZGVwZW5kZW5jeSIsInRyYXBCdWJibGVkRXZlbnQiLCJ0cmFwQ2FwdHVyZWRFdmVudCIsIldJ
TkRPV19IQU5ETEUiLCJoYW5kbGVyQmFzZU5hbWUiLCJoYW5kbGUiLCJzdXBwb3J0c0V2ZW50UGFn
ZVhZIiwiY3JlYXRlRXZlbnQiLCJldiIsImVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZyIsInJl
ZnJlc2giLCJyZWZyZXNoU2Nyb2xsVmFsdWVzIiwibW9uaXRvclNjcm9sbFZhbHVlIiwiX193ZWJw
YWNrX2V4cG9ydHNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fY3JlYXRlU3RvcmVf
XyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fY29tYmluZVJlZHVjZXJzX18iLCJfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2JpbmRBY3Rpb25DcmVhdG9yc19fIiwiZyIsIkZ1bmN0
aW9uIiwiZXZhbCIsInJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nIiwiZXZlbnRQbHVnaW5PcmRlciIs
InBsdWdpbk5hbWUiLCJuYW1lc1RvUGx1Z2lucyIsInBsdWdpbk1vZHVsZSIsInBsdWdpbkluZGV4
IiwiaW5kZXhPZiIsInB1Ymxpc2hlZEV2ZW50cyIsImV2ZW50VHlwZXMiLCJldmVudE5hbWUiLCJw
dWJsaXNoRXZlbnRGb3JQbHVnaW4iLCJldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MiLCJwaGFzZU5h
bWUiLCJwaGFzZWRSZWdpc3RyYXRpb25OYW1lIiwicHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUiLCJw
b3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzIiwiaW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyIiwiaW5q
ZWN0ZWROYW1lc1RvUGx1Z2lucyIsImlzT3JkZXJpbmdEaXJ0eSIsImdldFBsdWdpbk1vZHVsZUZv
ckV2ZW50IiwiX3Jlc2V0RXZlbnRQbHVnaW5zIiwiaXNFbmRpc2giLCJpc01vdmVpc2giLCJpc1N0
YXJ0aXNoIiwiZXhlY3V0ZURpc3BhdGNoIiwiaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNo
IiwiaW52b2tlR3VhcmRlZENhbGxiYWNrIiwiZGlzcGF0Y2hMaXN0ZW5lcnMiLCJkaXNwYXRjaElu
c3RhbmNlcyIsImlzQXJyYXkiLCJleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1w
bCIsImV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUiLCJleGVjdXRlRGlyZWN0RGlz
cGF0Y2giLCJkaXNwYXRjaExpc3RlbmVyIiwiZGlzcGF0Y2hJbnN0YW5jZSIsInJlcyIsImhhc0Rp
c3BhdGNoZXMiLCJDb21wb25lbnRUcmVlIiwiVHJlZVRyYXZlcnNhbCIsImluamVjdENvbXBvbmVu
dFRyZWUiLCJJbmplY3RlZCIsImluamVjdFRyZWVUcmF2ZXJzYWwiLCJpc0FuY2VzdG9yIiwiZ2V0
TG93ZXN0Q29tbW9uQW5jZXN0b3IiLCJmbiIsImFyZ0Zyb20iLCJhcmdUbyIsImZ1bmMiLCJ4Iiwi
Y2F1Z2h0RXJyb3IiLCJjb3JyZXNwb25kaW5nVXNlRWxlbWVudCIsImV2ZW50TmFtZVN1ZmZpeCIs
ImNhcHR1cmUiLCJpc1N1cHBvcnRlZCIsInNldEF0dHJpYnV0ZSIsInVzZUhhc0ZlYXR1cmUiLCJp
bXBsZW1lbnRhdGlvbiIsImhhc0ZlYXR1cmUiLCJtb2RpZmllclN0YXRlR2V0dGVyIiwia2V5QXJn
Iiwic3ludGhldGljRXZlbnQiLCJrZXlQcm9wIiwibW9kaWZpZXJLZXlUb1Byb3AiLCJBbHQiLCJD
b250cm9sIiwiTWV0YSIsIlNoaWZ0IiwiZ2V0Tm9kZUFmdGVyIiwiaW5zZXJ0TGF6eVRyZWVDaGls
ZEF0IiwibW92ZUNoaWxkIiwibW92ZURlbGltaXRlZFRleHQiLCJpbnNlcnRDaGlsZEF0IiwiY2xv
c2luZ0NvbW1lbnQiLCJyZW1vdmVEZWxpbWl0ZWRUZXh0Iiwib3BlbmluZ0NvbW1lbnQiLCJuZXh0
Tm9kZSIsInN0YXJ0Tm9kZSIsInJlcGxhY2VEZWxpbWl0ZWRUZXh0Iiwic3RyaW5nVGV4dCIsIm5v
ZGVBZnRlckNvbW1lbnQiLCJjcmVhdGVUZXh0Tm9kZSIsIkRhbmdlciIsImRhbmdlcm91c2x5UmVw
bGFjZU5vZGVXaXRoTWFya3VwIiwiRE9NQ2hpbGRyZW5PcGVyYXRpb25zIiwicHJvY2Vzc1VwZGF0
ZXMiLCJ1cGRhdGVzIiwiayIsInVwZGF0ZSIsImNvbnRlbnQiLCJhZnRlck5vZGUiLCJmcm9tTm9k
ZSIsIm1hdGhtbCIsIk1TQXBwIiwiZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24iLCJhcmcwIiwiYXJn
MSIsImFyZzIiLCJhcmczIiwiX2Fzc2VydFNpbmdsZUxpbmsiLCJpbnB1dFByb3BzIiwiY2hlY2tl
ZExpbmsiLCJ2YWx1ZUxpbmsiLCJfYXNzZXJ0VmFsdWVMaW5rIiwib25DaGFuZ2UiLCJfYXNzZXJ0
Q2hlY2tlZExpbmsiLCJjaGVja2VkIiwiZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtIiwiUmVh
Y3RQcm9wVHlwZXNTZWNyZXQiLCJwcm9wVHlwZXNGYWN0b3J5IiwiaGFzUmVhZE9ubHlWYWx1ZSIs
ImNoZWNrYm94IiwiaW1hZ2UiLCJoaWRkZW4iLCJyYWRpbyIsInN1Ym1pdCIsInByb3BUeXBlcyIs
ImNvbXBvbmVudE5hbWUiLCJyZWFkT25seSIsImxvZ2dlZFR5cGVGYWlsdXJlcyIsIkxpbmtlZFZh
bHVlVXRpbHMiLCJjaGVja1Byb3BUeXBlcyIsInRhZ05hbWUiLCJnZXRWYWx1ZSIsImdldENoZWNr
ZWQiLCJleGVjdXRlT25DaGFuZ2UiLCJyZXF1ZXN0Q2hhbmdlIiwiaW5qZWN0ZWQiLCJSZWFjdENv
bXBvbmVudEVudmlyb25tZW50IiwicmVwbGFjZU5vZGVXaXRoTWFya3VwIiwicHJvY2Vzc0NoaWxk
cmVuVXBkYXRlcyIsImluamVjdEVudmlyb25tZW50IiwiZW52aXJvbm1lbnQiLCJpcyIsInkiLCJz
aGFsbG93RXF1YWwiLCJvYmpBIiwib2JqQiIsImtleXNBIiwia2V5c0IiLCJzaG91bGRVcGRhdGVS
ZWFjdENvbXBvbmVudCIsInByZXZFbXB0eSIsIm5leHRFbXB0eSIsInByZXZUeXBlIiwibmV4dFR5
cGUiLCJlc2NhcGVyTG9va3VwIiwiPSIsIjoiLCJ1bmVzY2FwZSIsInVuZXNjYXBlUmVnZXgiLCJ1
bmVzY2FwZXJMb29rdXAiLCI9MCIsIj0yIiwiS2V5RXNjYXBlVXRpbHMiLCJmb3JtYXRVbmV4cGVj
dGVkQXJndW1lbnQiLCJkaXNwbGF5TmFtZSIsImdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVw
ZGF0ZSIsInB1YmxpY0luc3RhbmNlIiwiY2FsbGVyTmFtZSIsIlJlYWN0VXBkYXRlUXVldWUiLCJp
c01vdW50ZWQiLCJlbnF1ZXVlQ2FsbGJhY2siLCJ2YWxpZGF0ZUNhbGxiYWNrIiwiZW5xdWV1ZUNh
bGxiYWNrSW50ZXJuYWwiLCJlbnF1ZXVlRm9yY2VVcGRhdGUiLCJfcGVuZGluZ0ZvcmNlVXBkYXRl
IiwiZW5xdWV1ZVJlcGxhY2VTdGF0ZSIsImNvbXBsZXRlU3RhdGUiLCJfcGVuZGluZ1N0YXRlUXVl
dWUiLCJfcGVuZGluZ1JlcGxhY2VTdGF0ZSIsImVucXVldWVTZXRTdGF0ZSIsInBhcnRpYWxTdGF0
ZSIsImVucXVldWVFbGVtZW50SW50ZXJuYWwiLCJuZXh0Q29udGV4dCIsIl9wZW5kaW5nRWxlbWVu
dCIsInZhbGlkYXRlRE9NTmVzdGluZyIsImdldEV2ZW50Q2hhckNvZGUiLCJjaGFyQ29kZSIsImtl
eUNvZGUiLCJpc1BsYWluT2JqZWN0IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc09i
amVjdExpa2VfanNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYmFzZUdldFRhZ19q
c19fIiwib2JqZWN0VGFnIiwicHJvdG8iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2dl
dFByb3RvdHlwZV9qc19fIiwiQ3RvciIsImZ1bmNUb1N0cmluZyIsIm9iamVjdEN0b3JTdHJpbmci
LCJmdW5jUHJvdG8iLCJvYmplY3RQcm90byIsIl9fV0VCUEFDS19BTURfREVGSU5FX0FSUkFZX18i
LCJfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXyIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwi
YXJnVHlwZSIsImFwcGx5IiwiaGFzT3duIiwibm9vcCIsImdldFRoZW4iLCJvYmoiLCJ0aGVuIiwi
ZXgiLCJMQVNUX0VSUk9SIiwiSVNfRVJST1IiLCJ0cnlDYWxsT25lIiwidHJ5Q2FsbFR3byIsIlBy
b21pc2UiLCJfNzUiLCJfODMiLCJfMTgiLCJfMzgiLCJkb1Jlc29sdmUiLCJzYWZlVGhlbiIsIm9u
RnVsZmlsbGVkIiwib25SZWplY3RlZCIsInJlc29sdmUiLCJyZWplY3QiLCJIYW5kbGVyIiwiZGVm
ZXJyZWQiLCJfNDciLCJoYW5kbGVSZXNvbHZlZCIsImNiIiwicHJvbWlzZSIsIm5ld1ZhbHVlIiwi
ZmluYWxlIiwiXzcxIiwiZG9uZSIsInJlYXNvbiIsIl80NCIsIlJlYWN0Q29tcG9uZW50IiwidXBk
YXRlciIsInJlZnMiLCJSZWFjdE5vb3BVcGRhdGVRdWV1ZSIsIlJlYWN0UHVyZUNvbXBvbmVudCIs
IkNvbXBvbmVudER1bW15IiwiaXNSZWFjdENvbXBvbmVudCIsInNldFN0YXRlIiwiZm9yY2VVcGRh
dGUiLCJpc1B1cmVSZWFjdENvbXBvbmVudCIsImNhbkRlZmluZVByb3BlcnR5IiwiU3ltYm9sIiwi
bmV4dCIsImNvbmNhdCIsImFyciIsImdldFRleHRDb250ZW50QWNjZXNzb3IiLCJjb250ZW50S2V5
IiwiZG9jdW1lbnRFbGVtZW50IiwiX2NsYXNzQ2FsbENoZWNrIiwiQ29uc3RydWN0b3IiLCJfY2Fs
bGJhY2tzIiwiX2NvbnRleHRzIiwiX2FyZyIsImNvbnRleHRzIiwiY2hlY2twb2ludCIsInJvbGxi
YWNrIiwiaXNDaGVja2FibGUiLCJlbGVtIiwiZ2V0VHJhY2tlciIsIl93cmFwcGVyU3RhdGUiLCJ2
YWx1ZVRyYWNrZXIiLCJhdHRhY2hUcmFja2VyIiwidHJhY2tlciIsImRldGFjaFRyYWNrZXIiLCJn
ZXRWYWx1ZUZyb21Ob2RlIiwiaW5wdXRWYWx1ZVRyYWNraW5nIiwiX2dldFRyYWNrZXJGcm9tTm9k
ZSIsInRyYWNrIiwidmFsdWVGaWVsZCIsImRlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IiLCJjdXJyZW50VmFsdWUiLCJzZXRWYWx1ZSIsInN0b3BUcmFja2luZyIsInVwZGF0ZVZh
bHVlSWZDaGFuZ2VkIiwibGFzdFZhbHVlIiwibmV4dFZhbHVlIiwiaXNUZXh0SW5wdXRFbGVtZW50
Iiwic3VwcG9ydGVkSW5wdXRUeXBlcyIsImNvbG9yIiwiZGF0ZSIsImRhdGV0aW1lIiwiZGF0ZXRp
bWUtbG9jYWwiLCJlbWFpbCIsIm1vbnRoIiwibnVtYmVyIiwicGFzc3dvcmQiLCJyYW5nZSIsInNl
YXJjaCIsInRlbCIsInVybCIsIndlZWsiLCJzY3JvbGxQb3NpdGlvbiIsImxhc3RDaGlsZCIsInRl
eHRDb250ZW50IiwiZm9jdXNOb2RlIiwiZm9jdXMiLCJwcmVmaXhLZXkiLCJwcmVmaXgiLCJjaGFy
QXQiLCJ0b1VwcGVyQ2FzZSIsImlzVW5pdGxlc3NOdW1iZXIiLCJhbmltYXRpb25JdGVyYXRpb25D
b3VudCIsImJvcmRlckltYWdlT3V0c2V0IiwiYm9yZGVySW1hZ2VTbGljZSIsImJvcmRlckltYWdl
V2lkdGgiLCJib3hGbGV4IiwiYm94RmxleEdyb3VwIiwiYm94T3JkaW5hbEdyb3VwIiwiY29sdW1u
Q291bnQiLCJmbGV4IiwiZmxleEdyb3ciLCJmbGV4UG9zaXRpdmUiLCJmbGV4U2hyaW5rIiwiZmxl
eE5lZ2F0aXZlIiwiZmxleE9yZGVyIiwiZ3JpZFJvdyIsImdyaWRSb3dFbmQiLCJncmlkUm93U3Bh
biIsImdyaWRSb3dTdGFydCIsImdyaWRDb2x1bW4iLCJncmlkQ29sdW1uRW5kIiwiZ3JpZENvbHVt
blNwYW4iLCJncmlkQ29sdW1uU3RhcnQiLCJmb250V2VpZ2h0IiwibGluZUNsYW1wIiwibGluZUhl
aWdodCIsIm9wYWNpdHkiLCJvcmRlciIsIm9ycGhhbnMiLCJ0YWJTaXplIiwid2lkb3dzIiwieklu
ZGV4Iiwiem9vbSIsImZpbGxPcGFjaXR5IiwiZmxvb2RPcGFjaXR5Iiwic3RvcE9wYWNpdHkiLCJz
dHJva2VEYXNoYXJyYXkiLCJzdHJva2VEYXNob2Zmc2V0Iiwic3Ryb2tlTWl0ZXJsaW1pdCIsInN0
cm9rZU9wYWNpdHkiLCJzdHJva2VXaWR0aCIsInByZWZpeGVzIiwicHJvcCIsInNob3J0aGFuZFBy
b3BlcnR5RXhwYW5zaW9ucyIsImJhY2tncm91bmQiLCJiYWNrZ3JvdW5kQXR0YWNobWVudCIsImJh
Y2tncm91bmRDb2xvciIsImJhY2tncm91bmRJbWFnZSIsImJhY2tncm91bmRQb3NpdGlvblgiLCJi
YWNrZ3JvdW5kUG9zaXRpb25ZIiwiYmFja2dyb3VuZFJlcGVhdCIsImJhY2tncm91bmRQb3NpdGlv
biIsImJvcmRlciIsImJvcmRlcldpZHRoIiwiYm9yZGVyU3R5bGUiLCJib3JkZXJDb2xvciIsImJv
cmRlckJvdHRvbSIsImJvcmRlckJvdHRvbVdpZHRoIiwiYm9yZGVyQm90dG9tU3R5bGUiLCJib3Jk
ZXJCb3R0b21Db2xvciIsImJvcmRlckxlZnQiLCJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJMZWZ0
U3R5bGUiLCJib3JkZXJMZWZ0Q29sb3IiLCJib3JkZXJSaWdodCIsImJvcmRlclJpZ2h0V2lkdGgi
LCJib3JkZXJSaWdodFN0eWxlIiwiYm9yZGVyUmlnaHRDb2xvciIsImJvcmRlclRvcCIsImJvcmRl
clRvcFdpZHRoIiwiYm9yZGVyVG9wU3R5bGUiLCJib3JkZXJUb3BDb2xvciIsImZvbnQiLCJmb250
U3R5bGUiLCJmb250VmFyaWFudCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsIm91dGxpbmUiLCJv
dXRsaW5lV2lkdGgiLCJvdXRsaW5lU3R5bGUiLCJvdXRsaW5lQ29sb3IiLCJDU1NQcm9wZXJ0eSIs
ImlzQXR0cmlidXRlTmFtZVNhZmUiLCJ2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGUiLCJpbGxl
Z2FsQXR0cmlidXRlTmFtZUNhY2hlIiwiVkFMSURfQVRUUklCVVRFX05BTUVfUkVHRVgiLCJzaG91
bGRJZ25vcmVWYWx1ZSIsImlzTmFOIiwicXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIiLCJS
ZWdFeHAiLCJET01Qcm9wZXJ0eU9wZXJhdGlvbnMiLCJjcmVhdGVNYXJrdXBGb3JJRCIsImlkIiwi
c2V0QXR0cmlidXRlRm9ySUQiLCJjcmVhdGVNYXJrdXBGb3JSb290Iiwic2V0QXR0cmlidXRlRm9y
Um9vdCIsImNyZWF0ZU1hcmt1cEZvclByb3BlcnR5IiwiY3JlYXRlTWFya3VwRm9yQ3VzdG9tQXR0
cmlidXRlIiwic2V0VmFsdWVGb3JQcm9wZXJ0eSIsImRlbGV0ZVZhbHVlRm9yUHJvcGVydHkiLCJu
YW1lc3BhY2UiLCJzZXRBdHRyaWJ1dGVOUyIsInNldFZhbHVlRm9yQXR0cmlidXRlIiwicmVtb3Zl
QXR0cmlidXRlIiwiZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGUiLCJ1cGRhdGVPcHRpb25zSWZQZW5k
aW5nVXBkYXRlQW5kTW91bnRlZCIsInBlbmRpbmdVcGRhdGUiLCJ1cGRhdGVPcHRpb25zIiwiQm9v
bGVhbiIsIm11bHRpcGxlIiwicHJvcFZhbHVlIiwic2VsZWN0ZWRWYWx1ZSIsIm9wdGlvbnMiLCJz
ZWxlY3RlZCIsIl9oYW5kbGVDaGFuZ2UiLCJkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUiLCJSZWFj
dERPTVNlbGVjdCIsImdldEhvc3RQcm9wcyIsIm1vdW50V3JhcHBlciIsImluaXRpYWxWYWx1ZSIs
ImRlZmF1bHRWYWx1ZSIsImxpc3RlbmVycyIsIndhc011bHRpcGxlIiwiZ2V0U2VsZWN0VmFsdWVD
b250ZXh0IiwicG9zdFVwZGF0ZVdyYXBwZXIiLCJkZWZhdWx0U2V0VGltb3V0IiwiZGVmYXVsdENs
ZWFyVGltZW91dCIsInJ1blRpbWVvdXQiLCJmdW4iLCJjYWNoZWRTZXRUaW1lb3V0Iiwic2V0VGlt
ZW91dCIsInJ1bkNsZWFyVGltZW91dCIsIm1hcmtlciIsImNhY2hlZENsZWFyVGltZW91dCIsImNs
ZWFyVGltZW91dCIsImNsZWFuVXBOZXh0VGljayIsImRyYWluaW5nIiwiY3VycmVudFF1ZXVlIiwi
cXVldWVJbmRleCIsImRyYWluUXVldWUiLCJ0aW1lb3V0IiwicnVuIiwiSXRlbSIsImFycmF5Iiwi
cHJvY2VzcyIsIm5leHRUaWNrIiwidGl0bGUiLCJicm93c2VyIiwiZW52IiwiYXJndiIsInZlcnNp
b25zIiwib24iLCJhZGRMaXN0ZW5lciIsIm9uY2UiLCJvZmYiLCJyZW1vdmVMaXN0ZW5lciIsInJl
bW92ZUFsbExpc3RlbmVycyIsImVtaXQiLCJwcmVwZW5kTGlzdGVuZXIiLCJwcmVwZW5kT25jZUxp
c3RlbmVyIiwiYmluZGluZyIsImN3ZCIsImNoZGlyIiwiZGlyIiwidW1hc2siLCJpc0ludGVybmFs
Q29tcG9uZW50VHlwZSIsImluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQiLCJzaG91bGRIYXZlRGVi
dWdJRCIsIlJlYWN0RW1wdHlDb21wb25lbnQiLCJjcmVhdGUiLCJpbmZvIiwiUmVhY3RIb3N0Q29t
cG9uZW50IiwiY3JlYXRlSW50ZXJuYWxDb21wb25lbnQiLCJnZXROYXRpdmVOb2RlIiwiUmVhY3RD
b21wb3NpdGVDb21wb25lbnRXcmFwcGVyIiwiY3JlYXRlSW5zdGFuY2VGb3JUZXh0IiwiX21vdW50
SW5kZXgiLCJfbW91bnRJbWFnZSIsIlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IiwiY29uc3RydWN0
IiwiX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQiLCJSZWFjdE5vZGVUeXBlcyIsIkhPU1QiLCJD
T01QT1NJVEUiLCJFTVBUWSIsImdldFR5cGUiLCJlbXB0eUNvbXBvbmVudEZhY3RvcnkiLCJSZWFj
dEVtcHR5Q29tcG9uZW50SW5qZWN0aW9uIiwiaW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5Iiwi
aW5zdGFudGlhdGUiLCJnZW5lcmljQ29tcG9uZW50Q2xhc3MiLCJ0ZXh0Q29tcG9uZW50Q2xhc3Mi
LCJpc1RleHRDb21wb25lbnQiLCJSZWFjdEhvc3RDb21wb25lbnRJbmplY3Rpb24iLCJpbmplY3RH
ZW5lcmljQ29tcG9uZW50Q2xhc3MiLCJjb21wb25lbnRDbGFzcyIsImluamVjdFRleHRDb21wb25l
bnRDbGFzcyIsImdldENvbXBvbmVudEtleSIsInRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsIiwibmFt
ZVNvRmFyIiwidHJhdmVyc2VDb250ZXh0IiwiU0VQQVJBVE9SIiwiY2hpbGQiLCJuZXh0TmFtZSIs
InN1YnRyZWVDb3VudCIsIm5leHROYW1lUHJlZml4IiwiU1VCU0VQQVJBVE9SIiwiaXRlcmF0b3JG
biIsImdldEl0ZXJhdG9yRm4iLCJzdGVwIiwiaXRlcmF0b3IiLCJlbnRyaWVzIiwiaWkiLCJlbnRy
eSIsImFkZGVuZHVtIiwiY2hpbGRyZW5TdHJpbmciLCJ0cmF2ZXJzZUFsbENoaWxkcmVuIiwiaXNO
YXRpdmUiLCJyZUlzTmF0aXZlIiwicHVyZ2VEZWVwIiwiaXRlbSIsImdldEl0ZW0iLCJjaGlsZElE
cyIsInJlbW92ZUl0ZW0iLCJkZXNjcmliZUNvbXBvbmVudEZyYW1lIiwib3duZXJOYW1lIiwiZmls
ZU5hbWUiLCJsaW5lTnVtYmVyIiwiZ2V0RGlzcGxheU5hbWUiLCJkZXNjcmliZUlEIiwiUmVhY3RD
b21wb25lbnRUcmVlSG9vayIsImdldEVsZW1lbnQiLCJvd25lcklEIiwiZ2V0T3duZXJJRCIsInNl
dEl0ZW0iLCJnZXRJdGVtSURzIiwiYWRkUm9vdCIsInJlbW92ZVJvb3QiLCJnZXRSb290SURzIiwi
Y2FuVXNlQ29sbGVjdGlvbnMiLCJNYXAiLCJTZXQiLCJpdGVtTWFwIiwicm9vdElEU2V0IiwiYWRk
IiwiaXRlbUJ5S2V5Iiwicm9vdEJ5S2V5IiwiZ2V0S2V5RnJvbUlEIiwiZ2V0SURGcm9tS2V5Iiwi
cGFyc2VJbnQiLCJzdWJzdHIiLCJ1bm1vdW50ZWRJRHMiLCJvblNldENoaWxkcmVuIiwibmV4dENo
aWxkSURzIiwibmV4dENoaWxkSUQiLCJuZXh0Q2hpbGQiLCJwYXJlbnRJRCIsIm9uQmVmb3JlTW91
bnRDb21wb25lbnQiLCJ1cGRhdGVDb3VudCIsIm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50Iiwib25N
b3VudENvbXBvbmVudCIsIm9uVXBkYXRlQ29tcG9uZW50Iiwib25Vbm1vdW50Q29tcG9uZW50Iiwi
cHVyZ2VVbm1vdW50ZWRDb21wb25lbnRzIiwiX3ByZXZlbnRQdXJnaW5nIiwiZ2V0Q3VycmVudFN0
YWNrQWRkZW5kdW0iLCJ0b3BFbGVtZW50IiwiY3VycmVudE93bmVyIiwiX2RlYnVnSUQiLCJnZXRT
dGFja0FkZGVuZHVtQnlJRCIsImdldFBhcmVudElEIiwiZ2V0Q2hpbGRJRHMiLCJnZXRTb3VyY2Ui
LCJnZXRUZXh0IiwiZ2V0VXBkYXRlQ291bnQiLCJnZXRSZWdpc3RlcmVkSURzIiwicHVzaE5vblN0
YW5kYXJkV2FybmluZ1N0YWNrIiwiaXNDcmVhdGluZ0VsZW1lbnQiLCJjdXJyZW50U291cmNlIiwi
cmVhY3RTdGFjayIsInN0YWNrIiwicG9wTm9uU3RhbmRhcmRXYXJuaW5nU3RhY2siLCJyZWFjdFN0
YWNrRW5kIiwiRXZlbnRMaXN0ZW5lciIsImxpc3RlbiIsImV2ZW50VHlwZSIsInJlbW92ZUV2ZW50
TGlzdGVuZXIiLCJkZXRhY2hFdmVudCIsInJlZ2lzdGVyRGVmYXVsdCIsImlzSW5Eb2N1bWVudCIs
ImNvbnRhaW5zTm9kZSIsIlJlYWN0RE9NU2VsZWN0aW9uIiwiZ2V0QWN0aXZlRWxlbWVudCIsIlJl
YWN0SW5wdXRTZWxlY3Rpb24iLCJoYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMiLCJjb250ZW50RWRp
dGFibGUiLCJnZXRTZWxlY3Rpb25JbmZvcm1hdGlvbiIsImZvY3VzZWRFbGVtIiwic2VsZWN0aW9u
UmFuZ2UiLCJnZXRTZWxlY3Rpb24iLCJyZXN0b3JlU2VsZWN0aW9uIiwicHJpb3JTZWxlY3Rpb25J
bmZvcm1hdGlvbiIsImN1ckZvY3VzZWRFbGVtIiwicHJpb3JGb2N1c2VkRWxlbSIsInByaW9yU2Vs
ZWN0aW9uUmFuZ2UiLCJzZXRTZWxlY3Rpb24iLCJpbnB1dCIsInNlbGVjdGlvbiIsInN0YXJ0Iiwi
c2VsZWN0aW9uU3RhcnQiLCJlbmQiLCJzZWxlY3Rpb25FbmQiLCJjcmVhdGVSYW5nZSIsInBhcmVu
dEVsZW1lbnQiLCJtb3ZlU3RhcnQiLCJtb3ZlRW5kIiwiZ2V0T2Zmc2V0cyIsIm9mZnNldHMiLCJt
aW4iLCJjcmVhdGVUZXh0UmFuZ2UiLCJjb2xsYXBzZSIsInNlbGVjdCIsInNldE9mZnNldHMiLCJh
Y3RpdmVFbGVtZW50IiwiYm9keSIsImZpcnN0RGlmZmVyZW5jZUluZGV4Iiwic3RyaW5nMSIsInN0
cmluZzIiLCJtaW5MZW4iLCJnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIiLCJjb250YWlu
ZXIiLCJET0NfTk9ERV9UWVBFIiwiaW50ZXJuYWxHZXRJRCIsIm1vdW50Q29tcG9uZW50SW50b05v
ZGUiLCJ3cmFwcGVySW5zdGFuY2UiLCJzaG91bGRSZXVzZU1hcmt1cCIsIndyYXBwZWRFbGVtZW50
IiwiUmVhY3RET01Db250YWluZXJJbmZvIiwiX3RvcExldmVsV3JhcHBlciIsIlJlYWN0TW91bnQi
LCJfbW91bnRJbWFnZUludG9Ob2RlIiwiYmF0Y2hlZE1vdW50Q29tcG9uZW50SW50b05vZGUiLCJj
b21wb25lbnRJbnN0YW5jZSIsIlJlYWN0RE9NRmVhdHVyZUZsYWdzIiwidXNlQ3JlYXRlRWxlbWVu
dCIsInVubW91bnRDb21wb25lbnRGcm9tTm9kZSIsImhhc05vblJvb3RSZWFjdENoaWxkIiwicm9v
dEVsIiwiaXNWYWxpZENvbnRhaW5lciIsIkVMRU1FTlRfTk9ERV9UWVBFIiwiRE9DVU1FTlRfRlJB
R01FTlRfTk9ERV9UWVBFIiwiZ2V0SG9zdFJvb3RJbnN0YW5jZUluQ29udGFpbmVyIiwicHJldkhv
c3RJbnN0YW5jZSIsImdldFRvcExldmVsV3JhcHBlckluQ29udGFpbmVyIiwicm9vdCIsIl9ob3N0
Q29udGFpbmVySW5mbyIsIlJlYWN0TWFya3VwQ2hlY2tzdW0iLCJST09UX0FUVFJfTkFNRSIsImlu
c3RhbmNlc0J5UmVhY3RSb290SUQiLCJ0b3BMZXZlbFJvb3RDb3VudGVyIiwiVG9wTGV2ZWxXcmFw
cGVyIiwicm9vdElEIiwicmVuZGVyIiwiX2luc3RhbmNlc0J5UmVhY3RSb290SUQiLCJzY3JvbGxN
b25pdG9yIiwicmVuZGVyQ2FsbGJhY2siLCJfdXBkYXRlUm9vdENvbXBvbmVudCIsInByZXZDb21w
b25lbnQiLCJfcmVuZGVyTmV3Um9vdENvbXBvbmVudCIsIndyYXBwZXJJRCIsIl9pbnN0YW5jZSIs
InJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyIiwicGFyZW50Q29tcG9uZW50IiwiX3JlbmRlclN1
YnRyZWVJbnRvQ29udGFpbmVyIiwibmV4dFdyYXBwZWRFbGVtZW50IiwiX3Byb2Nlc3NDaGlsZENv
bnRleHQiLCJwcmV2V3JhcHBlZEVsZW1lbnQiLCJwdWJsaWNJbnN0IiwidXBkYXRlZENhbGxiYWNr
IiwidW5tb3VudENvbXBvbmVudEF0Tm9kZSIsInJlYWN0Um9vdEVsZW1lbnQiLCJjb250YWluZXJI
YXNSZWFjdE1hcmt1cCIsImNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkIiwiaGFzQXR0cmli
dXRlIiwicm9vdEVsZW1lbnQiLCJjYW5SZXVzZU1hcmt1cCIsImNoZWNrc3VtIiwiQ0hFQ0tTVU1f
QVRUUl9OQU1FIiwicm9vdE1hcmt1cCIsIm91dGVySFRNTCIsIm5vcm1hbGl6ZWRNYXJrdXAiLCJk
aWZmSW5kZXgiLCJkaWZmZXJlbmNlIiwiZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUiLCJf
cmVuZGVyZWROb2RlVHlwZSIsImNyZWF0ZVN0b3JlIiwicmVkdWNlciIsInByZWxvYWRlZFN0YXRl
IiwiZW5oYW5jZXIiLCJlbnN1cmVDYW5NdXRhdGVOZXh0TGlzdGVuZXJzIiwibmV4dExpc3RlbmVy
cyIsImN1cnJlbnRMaXN0ZW5lcnMiLCJnZXRTdGF0ZSIsImN1cnJlbnRTdGF0ZSIsInN1YnNjcmli
ZSIsImlzU3Vic2NyaWJlZCIsImRpc3BhdGNoIiwiYWN0aW9uIiwiX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX2xvZGFzaF9lc19pc1BsYWluT2JqZWN0X18iLCJpc0Rpc3BhdGNoaW5nIiwiY3Vy
cmVudFJlZHVjZXIiLCJyZXBsYWNlUmVkdWNlciIsIm5leHRSZWR1Y2VyIiwiQWN0aW9uVHlwZXMi
LCJJTklUIiwib2JzZXJ2YWJsZSIsIl9yZWYiLCJvdXRlclN1YnNjcmliZSIsIm9ic2VydmVyIiwi
b2JzZXJ2ZVN0YXRlIiwidW5zdWJzY3JpYmUiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFf
c3ltYm9sX29ic2VydmFibGVfX19kZWZhdWx0IiwiX3JlZjIiLCJfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzFfc3ltYm9sX29ic2VydmFibGVfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MF9fcm9vdF9qc19fIiwiY29tcG9zZSIsIl9sZW4iLCJmdW5jcyIsIl9rZXkiLCJyZWR1Y2UiLCJf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2NvbXBvbmVudHNfUHJvdmlkZXJfXyIsIl9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fY29ubmVjdF9jb25uZWN0X18iLCJzdWJzY3JpcHRpb25T
aGFwZSIsInN0b3JlU2hhcGUiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcHJvcF90eXBl
c19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3Byb3BfdHlwZXNfX19kZWZhdWx0Iiwi
c2hhcGUiLCJ0cnlTdWJzY3JpYmUiLCJpc1JlcXVpcmVkIiwidHJ5VW5zdWJzY3JpYmUiLCJub3Rp
ZnlOZXN0ZWRTdWJzIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJSZWZlcmVuY2VFcnJv
ciIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsIndyaXRhYmxlIiwic2V0UHJv
dG90eXBlT2YiLCJfX3Byb3RvX18iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJtYWtlU2Vs
ZWN0b3JTdGF0ZWZ1bCIsInNvdXJjZVNlbGVjdG9yIiwic3RvcmUiLCJzZWxlY3RvciIsIm5leHRQ
cm9wcyIsInNob3VsZENvbXBvbmVudFVwZGF0ZSIsImNvbm5lY3RBZHZhbmNlZCIsInNlbGVjdG9y
RmFjdG9yeSIsIl9jb250ZXh0VHlwZXMiLCJfY2hpbGRDb250ZXh0VHlwZXMiLCJfcmVmJGdldERp
c3BsYXlOYW1lIiwiX3JlZiRtZXRob2ROYW1lIiwibWV0aG9kTmFtZSIsIl9yZWYkcmVuZGVyQ291
bnRQcm9wIiwicmVuZGVyQ291bnRQcm9wIiwiX3JlZiRzaG91bGRIYW5kbGVTdGF0Iiwic2hvdWxk
SGFuZGxlU3RhdGVDaGFuZ2VzIiwiX3JlZiRzdG9yZUtleSIsInN0b3JlS2V5IiwiX3JlZiR3aXRo
UmVmIiwid2l0aFJlZiIsImNvbm5lY3RPcHRpb25zIiwic3Vic2NyaXB0aW9uS2V5IiwiaG90UmVs
b2FkaW5nVmVyc2lvbiIsImNvbnRleHRUeXBlcyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
NF9fdXRpbHNfUHJvcFR5cGVzX18iLCJjaGlsZENvbnRleHRUeXBlcyIsIldyYXBwZWRDb21wb25l
bnQiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfaW52YXJpYW50X19fZGVmYXVsdCIsIkpT
T04iLCJzdHJpbmdpZnkiLCJ3cmFwcGVkQ29tcG9uZW50TmFtZSIsInNlbGVjdG9yRmFjdG9yeU9w
dGlvbnMiLCJfZXh0ZW5kcyIsIkNvbm5lY3QiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJzdGF0ZSIs
InJlbmRlckNvdW50IiwicHJvcHNNb2RlIiwic2V0V3JhcHBlZEluc3RhbmNlIiwiaW5pdFNlbGVj
dG9yIiwiaW5pdFN1YnNjcmlwdGlvbiIsImdldENoaWxkQ29udGV4dCIsInN1YnNjcmlwdGlvbiIs
ImNvbXBvbmVudERpZE1vdW50IiwiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsImNvbXBvbmVu
dFdpbGxVbm1vdW50IiwiZ2V0V3JhcHBlZEluc3RhbmNlIiwid3JhcHBlZEluc3RhbmNlIiwicGFy
ZW50U3ViIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX191dGlsc19TdWJzY3JpcHRpb25f
XyIsIm9uU3RhdGVDaGFuZ2UiLCJjb21wb25lbnREaWRVcGRhdGUiLCJub3RpZnlOZXN0ZWRTdWJz
T25Db21wb25lbnREaWRVcGRhdGUiLCJkdW1teVN0YXRlIiwiYWRkRXh0cmFQcm9wcyIsIndpdGhF
eHRyYXMiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfcmVhY3RfXyIsIl9fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMF9ob2lzdF9ub25fcmVhY3Rfc3RhdGljc19fX2RlZmF1bHQiLCJfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfaG9pc3Rfbm9uX3JlYWN0X3N0YXRpY3NfXyIsIl9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMV9pbnZhcmlhbnRfXyIsIndyYXBNYXBUb1Byb3BzQ29uc3Rh
bnQiLCJnZXRDb25zdGFudCIsImNvbnN0YW50U2VsZWN0b3IiLCJjb25zdGFudCIsImRlcGVuZHNP
bk93blByb3BzIiwiZ2V0RGVwZW5kc09uT3duUHJvcHMiLCJtYXBUb1Byb3BzIiwid3JhcE1hcFRv
UHJvcHNGdW5jIiwicHJveHkiLCJzdGF0ZU9yRGlzcGF0Y2giLCJvd25Qcm9wcyIsIl9fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X3JlYWN0X19fZGVmYXVsdCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9jbGFzc25hbWVz
X18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fX2RlZmF1bHQiLCJf
Y3JlYXRlQ2xhc3MiLCJkZWZpbmVQcm9wZXJ0aWVzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3Bz
IiwiVG9kb1RleHRJbnB1dCIsIl90ZW1wIiwiX3JldCIsImdldFByb3RvdHlwZU9mIiwiaGFuZGxl
U3VibWl0IiwidHJpbSIsIndoaWNoIiwib25TYXZlIiwibmV3VG9kbyIsImhhbmRsZUNoYW5nZSIs
ImhhbmRsZUJsdXIiLCJjbGFzc05hbWUiLCJlZGl0IiwiZWRpdGluZyIsIm5ldy10b2RvIiwicGxh
Y2Vob2xkZXIiLCJhdXRvRm9jdXMiLCJvbkJsdXIiLCJvbktleURvd24iLCJib29sIiwiU0hPV19B
TEwiLCJTSE9XX0NPTVBMRVRFRCIsIlNIT1dfQUNUSVZFIiwiQUREX1RPRE8iLCJERUxFVEVfVE9E
TyIsIkVESVRfVE9ETyIsIkNPTVBMRVRFX1RPRE8iLCJDT01QTEVURV9BTEwiLCJDTEVBUl9DT01Q
TEVURUQiLCJlbmFibGUiLCJkaXNhYmxlIiwib25VbmhhbmRsZWQiLCJhbGxSZWplY3Rpb25zIiwi
bWF0Y2hXaGl0ZWxpc3QiLCJyZWplY3Rpb25zIiwid2hpdGVsaXN0IiwiREVGQVVMVF9XSElURUxJ
U1QiLCJkaXNwbGF5SWQiLCJsb2dnZWQiLCJsb2dFcnJvciIsIm9uSGFuZGxlZCIsIndhcm4iLCJf
NTYiLCJsaW5lIiwibGlzdCIsInNvbWUiLCJjbHMiLCJSYW5nZUVycm9yIiwiZ2xvYmFsIiwicmF3
QXNhcCIsInRhc2siLCJyZXF1ZXN0Rmx1c2giLCJmbHVzaGluZyIsImZsdXNoIiwiY3VycmVudElu
ZGV4IiwiY2FwYWNpdHkiLCJzY2FuIiwibmV3TGVuZ3RoIiwibWFrZVJlcXVlc3RDYWxsRnJvbVRp
bWVyIiwiaGFuZGxlVGltZXIiLCJ0aW1lb3V0SGFuZGxlIiwiY2xlYXJJbnRlcnZhbCIsImludGVy
dmFsSGFuZGxlIiwic2V0SW50ZXJ2YWwiLCJCcm93c2VyTXV0YXRpb25PYnNlcnZlciIsIk11dGF0
aW9uT2JzZXJ2ZXIiLCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIiwidG9nZ2xlIiwib2JzZXJ2ZSIs
ImNoYXJhY3RlckRhdGEiLCJ2YWx1ZVByb21pc2UiLCJUUlVFIiwiRkFMU0UiLCJOVUxMIiwiVU5E
RUZJTkVEIiwiWkVSTyIsIkVNUFRZU1RSSU5HIiwiYWxsIiwicmVtYWluaW5nIiwicmFjZSIsInZh
bHVlcyIsIm5vcm1hbGl6ZU5hbWUiLCJub3JtYWxpemVWYWx1ZSIsIml0ZXJhdG9yRm9yIiwiaXRl
bXMiLCJzaGlmdCIsInN1cHBvcnQiLCJpdGVyYWJsZSIsIkhlYWRlcnMiLCJoZWFkZXJzIiwiYXBw
ZW5kIiwiaGVhZGVyIiwiY29uc3VtZWQiLCJib2R5VXNlZCIsImZpbGVSZWFkZXJSZWFkeSIsInJl
YWRlciIsIm9ubG9hZCIsInJlc3VsdCIsIm9uZXJyb3IiLCJyZWFkQmxvYkFzQXJyYXlCdWZmZXIi
LCJibG9iIiwiRmlsZVJlYWRlciIsInJlYWRBc0FycmF5QnVmZmVyIiwicmVhZEJsb2JBc1RleHQi
LCJyZWFkQXNUZXh0IiwicmVhZEFycmF5QnVmZmVyQXNUZXh0IiwiYnVmIiwiVWludDhBcnJheSIs
ImNoYXJzIiwiYnVmZmVyQ2xvbmUiLCJieXRlTGVuZ3RoIiwiYnVmZmVyIiwiQm9keSIsIl9pbml0
Qm9keSIsIl9ib2R5SW5pdCIsIl9ib2R5VGV4dCIsIkJsb2IiLCJpc1Byb3RvdHlwZU9mIiwiX2Jv
ZHlCbG9iIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsIl9ib2R5Rm9ybURhdGEiLCJzZWFyY2hQYXJh
bXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJhcnJheUJ1ZmZlciIsImlzRGF0YVZpZXciLCJfYm9keUFy
cmF5QnVmZmVyIiwiQXJyYXlCdWZmZXIiLCJpc0FycmF5QnVmZmVyVmlldyIsInJlamVjdGVkIiwi
ZGVjb2RlIiwianNvbiIsInBhcnNlIiwibm9ybWFsaXplTWV0aG9kIiwidXBjYXNlZCIsIm1ldGhv
ZHMiLCJSZXF1ZXN0IiwiY3JlZGVudGlhbHMiLCJtb2RlIiwicmVmZXJyZXIiLCJmb3JtIiwiYnl0
ZXMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJwYXJzZUhlYWRlcnMiLCJyYXdIZWFkZXJzIiwicGFy
dHMiLCJSZXNwb25zZSIsImJvZHlJbml0Iiwic3RhdHVzIiwib2siLCJzdGF0dXNUZXh0IiwiZmV0
Y2giLCJ2aWV3Q2xhc3NlcyIsIkRhdGFWaWV3IiwiaXNWaWV3Iiwib2xkVmFsdWUiLCJ0aGlzQXJn
IiwiY2xvbmUiLCJyZXNwb25zZSIsInJlZGlyZWN0U3RhdHVzZXMiLCJyZWRpcmVjdCIsImxvY2F0
aW9uIiwiaW5pdCIsInJlcXVlc3QiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsImdldEFsbFJlc3Bv
bnNlSGVhZGVycyIsInJlc3BvbnNlVVJMIiwicmVzcG9uc2VUZXh0Iiwib250aW1lb3V0Iiwib3Bl
biIsIndpdGhDcmVkZW50aWFscyIsInJlc3BvbnNlVHlwZSIsInNldFJlcXVlc3RIZWFkZXIiLCJz
ZW5kIiwicG9seWZpbGwiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfcmVhY3RfZG9tX18i
LCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfcmVkdXhfXyIsIl9fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfM19yZWFjdF9yZWR1eF9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19j
b250YWluZXJzX0FwcF9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19yZWR1Y2Vyc19f
IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X3RvZG9tdmNfYXBwX2Nzc19pbmRleF9jc3Nf
XyIsImdldEVsZW1lbnRCeUlkIiwibG93UHJpb3JpdHlXYXJuaW5nIiwiZXNjYXBlVXNlclByb3Zp
ZGVkS2V5IiwidXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXgiLCJGb3JFYWNoQm9va0tlZXBpbmci
LCJmb3JFYWNoRnVuY3Rpb24iLCJmb3JFYWNoQ29udGV4dCIsImZvckVhY2hTaW5nbGVDaGlsZCIs
ImJvb2tLZWVwaW5nIiwiZm9yRWFjaENoaWxkcmVuIiwiZm9yRWFjaEZ1bmMiLCJNYXBCb29rS2Vl
cGluZyIsIm1hcFJlc3VsdCIsImtleVByZWZpeCIsIm1hcEZ1bmN0aW9uIiwibWFwQ29udGV4dCIs
Im1hcFNpbmdsZUNoaWxkSW50b0NvbnRleHQiLCJjaGlsZEtleSIsIm1hcHBlZENoaWxkIiwibWFw
SW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbCIsImVzY2FwZWRQcmVmaXgiLCJtYXBDaGlsZHJlbiIs
ImZvckVhY2hTaW5nbGVDaGlsZER1bW15IiwiY291bnRDaGlsZHJlbiIsIm1heWJlSXRlcmFibGUi
LCJJVEVSQVRPUl9TWU1CT0wiLCJGQVVYX0lURVJBVE9SX1NZTUJPTCIsImNyZWF0ZURPTUZhY3Rv
cnkiLCJhYmJyIiwiYWRkcmVzcyIsImFyZWEiLCJhcnRpY2xlIiwiYXNpZGUiLCJhdWRpbyIsImJh
c2UiLCJiZGkiLCJiZG8iLCJiaWciLCJibG9ja3F1b3RlIiwiYnIiLCJjYW52YXMiLCJjYXB0aW9u
IiwiY2l0ZSIsImNvbCIsImNvbGdyb3VwIiwiZGF0YWxpc3QiLCJkZCIsImRlbCIsImRldGFpbHMi
LCJkZm4iLCJkaWFsb2ciLCJkaXYiLCJkbCIsImR0IiwiZW0iLCJlbWJlZCIsImZpZWxkc2V0Iiwi
ZmlnY2FwdGlvbiIsImZpZ3VyZSIsImZvb3RlciIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJo
NiIsImhlYWQiLCJoZ3JvdXAiLCJociIsImlmcmFtZSIsImltZyIsImlucyIsImtiZCIsImtleWdl
biIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWFpbiIsIm1hcmsiLCJtZW51IiwibWVu
dWl0ZW0iLCJtZXRhIiwibWV0ZXIiLCJuYXYiLCJub3NjcmlwdCIsIm9sIiwib3B0Z3JvdXAiLCJv
cHRpb24iLCJvdXRwdXQiLCJwYXJhbSIsInBpY3R1cmUiLCJwcmUiLCJwcm9ncmVzcyIsInEiLCJy
cCIsInJ0IiwicnVieSIsInNhbXAiLCJzY3JpcHQiLCJzZWN0aW9uIiwic21hbGwiLCJzcGFuIiwi
c3Ryb25nIiwic3R5bGUiLCJzdWIiLCJzdW1tYXJ5Iiwic3VwIiwidGFibGUiLCJ0Ym9keSIsInRk
IiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0ciIsInUiLCJ1bCIsInZhciIsInZp
ZGVvIiwid2JyIiwiY2lyY2xlIiwiY2xpcFBhdGgiLCJkZWZzIiwiZWxsaXBzZSIsImxpbmVhckdy
YWRpZW50IiwibWFzayIsInBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFk
aWFsR3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInRzcGFuIiwiX3JlcXVpcmUiLCJ0aHJvd09uRGly
ZWN0QWNjZXNzIiwiUHJvcFR5cGVFcnJvciIsImNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyIiwi
dmFsaWRhdGUiLCJjaGVja1R5cGUiLCJwcm9wRnVsbE5hbWUiLCJzZWNyZXQiLCJBTk9OWU1PVVMi
LCJjaGFpbmVkQ2hlY2tUeXBlIiwiY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIiLCJleHBlY3Rl
ZFR5cGUiLCJnZXRQcm9wVHlwZSIsImdldFByZWNpc2VUeXBlIiwiY3JlYXRlQXJyYXlPZlR5cGVD
aGVja2VyIiwidHlwZUNoZWNrZXIiLCJjcmVhdGVJbnN0YW5jZVR5cGVDaGVja2VyIiwiZXhwZWN0
ZWRDbGFzcyIsImV4cGVjdGVkQ2xhc3NOYW1lIiwiZ2V0Q2xhc3NOYW1lIiwiY3JlYXRlRW51bVR5
cGVDaGVja2VyIiwiZXhwZWN0ZWRWYWx1ZXMiLCJjcmVhdGVPYmplY3RPZlR5cGVDaGVja2VyIiwi
cHJvcFR5cGUiLCJjcmVhdGVVbmlvblR5cGVDaGVja2VyIiwiYXJyYXlPZlR5cGVDaGVja2VycyIs
ImNoZWNrZXIiLCJnZXRQb3N0Zml4Rm9yVHlwZVdhcm5pbmciLCJjcmVhdGVTaGFwZVR5cGVDaGVj
a2VyIiwic2hhcGVUeXBlcyIsImlzTm9kZSIsImV2ZXJ5IiwiaXNTeW1ib2wiLCJzeW1ib2wiLCJh
bnkiLCJhcnJheU9mIiwiaW5zdGFuY2VPZiIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUi
LCJ0eXBlU3BlY3MiLCJnZXRTdGFjayIsIl9yZXF1aXJlMiIsImlkZW50aXR5IiwidmFsaWRhdGVN
ZXRob2RPdmVycmlkZSIsImlzQWxyZWFkeURlZmluZWQiLCJzcGVjUG9saWN5IiwiUmVhY3RDbGFz
c0ludGVyZmFjZSIsIlJlYWN0Q2xhc3NNaXhpbiIsIl9pbnZhcmlhbnQiLCJtaXhTcGVjSW50b0Nv
bXBvbmVudCIsInNwZWMiLCJhdXRvQmluZFBhaXJzIiwiX19yZWFjdEF1dG9CaW5kUGFpcnMiLCJN
SVhJTlNfS0VZIiwiUkVTRVJWRURfU1BFQ19LRVlTIiwibWl4aW5zIiwiaXNSZWFjdENsYXNzTWV0
aG9kIiwiaXNGdW5jdGlvbiIsInNob3VsZEF1dG9CaW5kIiwiYXV0b2JpbmQiLCJjcmVhdGVNZXJn
ZWRSZXN1bHRGdW5jdGlvbiIsImNyZWF0ZUNoYWluZWRGdW5jdGlvbiIsIm1peFN0YXRpY1NwZWNJ
bnRvQ29tcG9uZW50Iiwic3RhdGljcyIsImlzUmVzZXJ2ZWQiLCJpc0luaGVyaXRlZCIsIm1lcmdl
SW50b1dpdGhOb0R1cGxpY2F0ZUtleXMiLCJvbmUiLCJ0d28iLCJiaW5kQXV0b0JpbmRNZXRob2Qi
LCJib3VuZE1ldGhvZCIsImJpbmRBdXRvQmluZE1ldGhvZHMiLCJwYWlycyIsImF1dG9CaW5kS2V5
IiwiaW5pdGlhbFN0YXRlIiwiZ2V0SW5pdGlhbFN0YXRlIiwiUmVhY3RDbGFzc0NvbXBvbmVudCIs
ImluamVjdGVkTWl4aW5zIiwiSXNNb3VudGVkUHJlTWl4aW4iLCJJc01vdW50ZWRQb3N0TWl4aW4i
LCJnZXREZWZhdWx0UHJvcHMiLCJjb21wb25lbnRXaWxsTW91bnQiLCJjb21wb25lbnRXaWxsVXBk
YXRlIiwidXBkYXRlQ29tcG9uZW50IiwiX19pc01vdW50ZWQiLCJyZXBsYWNlU3RhdGUiLCJuZXdT
dGF0ZSIsIlJlYWN0RGVmYXVsdEluamVjdGlvbiIsImZpbmRET01Ob2RlIiwiaW5qZWN0IiwiUmVh
Y3RET00iLCJ1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyIsInVuc3RhYmxlX3JlbmRlclN1YnRyZWVJ
bnRvQ29udGFpbmVyIiwiX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fIiwiTW91bnQiLCJS
ZWNvbmNpbGVyIiwiYWxyZWFkeUluamVjdGVkIiwiUmVhY3RJbmplY3Rpb24iLCJFdmVudEVtaXR0
ZXIiLCJEZWZhdWx0RXZlbnRQbHVnaW5PcmRlciIsIlJlYWN0RE9NVHJlZVRyYXZlcnNhbCIsIlNp
bXBsZUV2ZW50UGx1Z2luIiwiRW50ZXJMZWF2ZUV2ZW50UGx1Z2luIiwiQ2hhbmdlRXZlbnRQbHVn
aW4iLCJTZWxlY3RFdmVudFBsdWdpbiIsIkJlZm9yZUlucHV0RXZlbnRQbHVnaW4iLCJIb3N0Q29t
cG9uZW50IiwiUmVhY3RET01Db21wb25lbnQiLCJSZWFjdERPTVRleHRDb21wb25lbnQiLCJBUklB
RE9NUHJvcGVydHlDb25maWciLCJIVE1MRE9NUHJvcGVydHlDb25maWciLCJTVkdET01Qcm9wZXJ0
eUNvbmZpZyIsIkVtcHR5Q29tcG9uZW50IiwiUmVhY3RET01FbXB0eUNvbXBvbmVudCIsIlVwZGF0
ZXMiLCJSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5IiwiUmVhY3RDb21wb25lbnRCcm93c2Vy
RW52aXJvbm1lbnQiLCJhcmlhLWN1cnJlbnQiLCJhcmlhLWRldGFpbHMiLCJhcmlhLWRpc2FibGVk
IiwiYXJpYS1oaWRkZW4iLCJhcmlhLWludmFsaWQiLCJhcmlhLWtleXNob3J0Y3V0cyIsImFyaWEt
bGFiZWwiLCJhcmlhLXJvbGVkZXNjcmlwdGlvbiIsImFyaWEtYXV0b2NvbXBsZXRlIiwiYXJpYS1j
aGVja2VkIiwiYXJpYS1leHBhbmRlZCIsImFyaWEtaGFzcG9wdXAiLCJhcmlhLWxldmVsIiwiYXJp
YS1tb2RhbCIsImFyaWEtbXVsdGlsaW5lIiwiYXJpYS1tdWx0aXNlbGVjdGFibGUiLCJhcmlhLW9y
aWVudGF0aW9uIiwiYXJpYS1wbGFjZWhvbGRlciIsImFyaWEtcHJlc3NlZCIsImFyaWEtcmVhZG9u
bHkiLCJhcmlhLXJlcXVpcmVkIiwiYXJpYS1zZWxlY3RlZCIsImFyaWEtc29ydCIsImFyaWEtdmFs
dWVtYXgiLCJhcmlhLXZhbHVlbWluIiwiYXJpYS12YWx1ZW5vdyIsImFyaWEtdmFsdWV0ZXh0Iiwi
YXJpYS1hdG9taWMiLCJhcmlhLWJ1c3kiLCJhcmlhLWxpdmUiLCJhcmlhLXJlbGV2YW50IiwiYXJp
YS1kcm9wZWZmZWN0IiwiYXJpYS1ncmFiYmVkIiwiYXJpYS1hY3RpdmVkZXNjZW5kYW50IiwiYXJp
YS1jb2xjb3VudCIsImFyaWEtY29saW5kZXgiLCJhcmlhLWNvbHNwYW4iLCJhcmlhLWNvbnRyb2xz
IiwiYXJpYS1kZXNjcmliZWRieSIsImFyaWEtZXJyb3JtZXNzYWdlIiwiYXJpYS1mbG93dG8iLCJh
cmlhLWxhYmVsbGVkYnkiLCJhcmlhLW93bnMiLCJhcmlhLXBvc2luc2V0IiwiYXJpYS1yb3djb3Vu
dCIsImFyaWEtcm93aW5kZXgiLCJhcmlhLXJvd3NwYW4iLCJhcmlhLXNldHNpemUiLCJpc0tleXBy
ZXNzQ29tbWFuZCIsImdldENvbXBvc2l0aW9uRXZlbnRUeXBlIiwiY29tcG9zaXRpb25TdGFydCIs
ImNvbXBvc2l0aW9uRW5kIiwiY29tcG9zaXRpb25VcGRhdGUiLCJpc0ZhbGxiYWNrQ29tcG9zaXRp
b25TdGFydCIsIlNUQVJUX0tFWUNPREUiLCJpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQiLCJFTkRf
S0VZQ09ERVMiLCJnZXREYXRhRnJvbUN1c3RvbUV2ZW50IiwiZXh0cmFjdENvbXBvc2l0aW9uRXZl
bnQiLCJmYWxsYmFja0RhdGEiLCJjYW5Vc2VDb21wb3NpdGlvbkV2ZW50IiwiY3VycmVudENvbXBv
c2l0aW9uIiwidXNlRmFsbGJhY2tDb21wb3NpdGlvbkRhdGEiLCJnZXREYXRhIiwiRmFsbGJhY2tD
b21wb3NpdGlvblN0YXRlIiwiU3ludGhldGljQ29tcG9zaXRpb25FdmVudCIsImN1c3RvbURhdGEi
LCJnZXROYXRpdmVCZWZvcmVJbnB1dENoYXJzIiwiU1BBQ0VCQVJfQ09ERSIsImhhc1NwYWNlS2V5
cHJlc3MiLCJTUEFDRUJBUl9DSEFSIiwiZ2V0RmFsbGJhY2tCZWZvcmVJbnB1dENoYXJzIiwiZXh0
cmFjdEJlZm9yZUlucHV0RXZlbnQiLCJjYW5Vc2VUZXh0SW5wdXRFdmVudCIsIlN5bnRoZXRpY0lu
cHV0RXZlbnQiLCJiZWZvcmVJbnB1dCIsIm9wZXJhIiwiYnViYmxlZCIsImNhcHR1cmVkIiwiX3Jv
b3QiLCJfc3RhcnRUZXh0IiwiX2ZhbGxiYWNrVGV4dCIsInN0YXJ0VmFsdWUiLCJzdGFydExlbmd0
aCIsImVuZFZhbHVlIiwiZW5kTGVuZ3RoIiwibWluRW5kIiwic2xpY2VUYWlsIiwiQ29tcG9zaXRp
b25FdmVudEludGVyZmFjZSIsIklucHV0RXZlbnRJbnRlcmZhY2UiLCJjcmVhdGVBbmRBY2N1bXVs
YXRlQ2hhbmdlRXZlbnQiLCJjaGFuZ2UiLCJzaG91bGRVc2VDaGFuZ2VFdmVudCIsIm1hbnVhbERp
c3BhdGNoQ2hhbmdlRXZlbnQiLCJhY3RpdmVFbGVtZW50SW5zdCIsInJ1bkV2ZW50SW5CYXRjaCIs
InN0YXJ0V2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCIsInN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2
ZW50SUU4IiwiZ2V0SW5zdElmVmFsdWVDaGFuZ2VkIiwidXBkYXRlZCIsIl9hbGxvd1NpbXVsYXRl
ZFBhc3NUaHJvdWdoIiwiZ2V0VGFyZ2V0SW5zdEZvckNoYW5nZUV2ZW50IiwiaGFuZGxlRXZlbnRz
Rm9yQ2hhbmdlRXZlbnRJRTgiLCJzdGFydFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UiLCJoYW5kbGVQ
cm9wZXJ0eUNoYW5nZSIsInN0b3BXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlIiwiaGFuZGxlRXZlbnRz
Rm9ySW5wdXRFdmVudFBvbHlmaWxsIiwiZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRQb2x5Zmls
bCIsInNob3VsZFVzZUNsaWNrRXZlbnQiLCJnZXRUYXJnZXRJbnN0Rm9yQ2xpY2tFdmVudCIsImdl
dFRhcmdldEluc3RGb3JJbnB1dE9yQ2hhbmdlRXZlbnQiLCJoYW5kbGVDb250cm9sbGVkSW5wdXRC
bHVyIiwiY29udHJvbGxlZCIsImRvZXNDaGFuZ2VFdmVudEJ1YmJsZSIsImlzSW5wdXRFdmVudFN1
cHBvcnRlZCIsIl9pc0lucHV0RXZlbnRTdXBwb3J0ZWQiLCJnZXRUYXJnZXRJbnN0RnVuYyIsImhh
bmRsZUV2ZW50RnVuYyIsInRhcmdldE5vZGUiLCJhdHRhY2hSZWYiLCJSZWFjdE93bmVyIiwiYWRk
Q29tcG9uZW50QXNSZWZUbyIsImRldGFjaFJlZiIsInJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbSIs
InByZXZSZWYiLCJwcmV2T3duZXIiLCJuZXh0UmVmIiwibmV4dE93bmVyIiwiaXNWYWxpZE93bmVy
Iiwib3duZXJQdWJsaWNJbnN0YW5jZSIsIm1vdXNlRW50ZXIiLCJtb3VzZUxlYXZlIiwid2luIiwi
cmVsYXRlZCIsInRvTm9kZSIsImFjY2VwdCIsImFjY2VwdENoYXJzZXQiLCJhY2Nlc3NLZXkiLCJh
bGxvd0Z1bGxTY3JlZW4iLCJhbGxvd1RyYW5zcGFyZW5jeSIsImFsdCIsImFzIiwiYXN5bmMiLCJh
dXRvQ29tcGxldGUiLCJhdXRvUGxheSIsImNlbGxQYWRkaW5nIiwiY2VsbFNwYWNpbmciLCJjaGFy
U2V0IiwiY2hhbGxlbmdlIiwiY2xhc3NJRCIsImNvbHMiLCJjb2xTcGFuIiwiY29udGV4dE1lbnUi
LCJjb250cm9scyIsImNvb3JkcyIsImNyb3NzT3JpZ2luIiwiZGF0ZVRpbWUiLCJkZWZhdWx0Iiwi
ZGVmZXIiLCJkb3dubG9hZCIsImRyYWdnYWJsZSIsImVuY1R5cGUiLCJmb3JtQWN0aW9uIiwiZm9y
bUVuY1R5cGUiLCJmb3JtTWV0aG9kIiwiZm9ybU5vVmFsaWRhdGUiLCJmb3JtVGFyZ2V0IiwiZnJh
bWVCb3JkZXIiLCJoZWlnaHQiLCJoaWdoIiwiaHJlZiIsImhyZWZMYW5nIiwiaHRtbEZvciIsImh0
dHBFcXVpdiIsImljb24iLCJpbnB1dE1vZGUiLCJpbnRlZ3JpdHkiLCJrZXlQYXJhbXMiLCJrZXlU
eXBlIiwia2luZCIsImxhbmciLCJsb29wIiwibG93IiwibWFuaWZlc3QiLCJtYXJnaW5IZWlnaHQi
LCJtYXJnaW5XaWR0aCIsIm1heCIsIm1heExlbmd0aCIsIm1lZGlhIiwibWVkaWFHcm91cCIsIm1p
bkxlbmd0aCIsIm11dGVkIiwibm9uY2UiLCJub1ZhbGlkYXRlIiwib3B0aW11bSIsInBsYXlzSW5s
aW5lIiwicG9zdGVyIiwicHJlbG9hZCIsInByb2ZpbGUiLCJyYWRpb0dyb3VwIiwicmVmZXJyZXJQ
b2xpY3kiLCJyZWwiLCJyZXF1aXJlZCIsInJldmVyc2VkIiwicm9sZSIsInJvd3MiLCJyb3dTcGFu
Iiwic2FuZGJveCIsInNjb3BlZCIsInNjcm9sbGluZyIsInNlYW1sZXNzIiwic2l6ZSIsInNpemVz
Iiwic3BlbGxDaGVjayIsInNyYyIsInNyY0RvYyIsInNyY0xhbmciLCJzcmNTZXQiLCJ0YWJJbmRl
eCIsInVzZU1hcCIsIndpZHRoIiwid21vZGUiLCJ3cmFwIiwiYWJvdXQiLCJkYXRhdHlwZSIsImlu
bGlzdCIsInJlc291cmNlIiwidHlwZW9mIiwidm9jYWIiLCJhdXRvQ2FwaXRhbGl6ZSIsImF1dG9D
b3JyZWN0IiwiYXV0b1NhdmUiLCJpdGVtUHJvcCIsIml0ZW1TY29wZSIsIml0ZW1UeXBlIiwiaXRl
bUlEIiwiaXRlbVJlZiIsInJlc3VsdHMiLCJzZWN1cml0eSIsInVuc2VsZWN0YWJsZSIsInZhbGlk
aXR5IiwiYmFkSW5wdXQiLCJSZWFjdERPTUlET3BlcmF0aW9ucyIsImRhbmdlcm91c2x5UHJvY2Vz
c0NoaWxkcmVuVXBkYXRlcyIsImNyZWF0ZU5vZGVzRnJvbU1hcmt1cCIsIm9sZENoaWxkIiwibmV3
Q2hpbGQiLCJnZXROb2RlTmFtZSIsIm5vZGVOYW1lTWF0Y2giLCJub2RlTmFtZVBhdHRlcm4iLCJo
YW5kbGVTY3JpcHQiLCJkdW1teU5vZGUiLCJnZXRNYXJrdXBXcmFwIiwid3JhcERlcHRoIiwic2Ny
aXB0cyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiY3JlYXRlQXJyYXlGcm9tTWl4ZWQiLCJub2Rl
cyIsImNoaWxkTm9kZXMiLCJjYWxsZWUiLCJoYXNBcnJheU5hdHVyZSIsIm1hcmt1cFdyYXAiLCJz
aG91bGRXcmFwIiwic2VsZWN0V3JhcCIsInRhYmxlV3JhcCIsInRyV3JhcCIsInN2Z1dyYXAiLCIq
IiwiYXNzZXJ0VmFsaWRQcm9wcyIsInZvaWRFbGVtZW50VGFncyIsIl90YWciLCJkYW5nZXJvdXNs
eVNldElubmVySFRNTCIsIkhUTUwiLCJlbnF1ZXVlUHV0TGlzdGVuZXIiLCJSZWFjdFNlcnZlclJl
bmRlcmluZ1RyYW5zYWN0aW9uIiwiY29udGFpbmVySW5mbyIsImlzRG9jdW1lbnRGcmFnbWVudCIs
Il9ub2RlIiwiRE9DX0ZSQUdNRU5UX1RZUEUiLCJfb3duZXJEb2N1bWVudCIsImxpc3RlbmVyVG9Q
dXQiLCJpbnB1dFBvc3RNb3VudCIsIlJlYWN0RE9NSW5wdXQiLCJwb3N0TW91bnRXcmFwcGVyIiwi
dGV4dGFyZWFQb3N0TW91bnQiLCJSZWFjdERPTVRleHRhcmVhIiwib3B0aW9uUG9zdE1vdW50Iiwi
UmVhY3RET01PcHRpb24iLCJ0cmFja0lucHV0VmFsdWUiLCJ0cmFwQnViYmxlZEV2ZW50c0xvY2Fs
IiwiZ2V0Tm9kZSIsIm1lZGlhRXZlbnRzIiwicG9zdFVwZGF0ZVNlbGVjdFdyYXBwZXIiLCJ2YWxp
ZGF0ZURhbmdlcm91c1RhZyIsInZhbGlkYXRlZFRhZ0NhY2hlIiwiVkFMSURfVEFHX1JFR0VYIiwi
aXNDdXN0b21Db21wb25lbnQiLCJfbmFtZXNwYWNlVVJJIiwiX3ByZXZpb3VzU3R5bGUiLCJfcHJl
dmlvdXNTdHlsZUNvcHkiLCJBdXRvRm9jdXNVdGlscyIsIkNTU1Byb3BlcnR5T3BlcmF0aW9ucyIs
IlJlYWN0TXVsdGlDaGlsZCIsIkNPTlRFTlRfVFlQRVMiLCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJs
ZVdhcm5pbmciLCJvbWl0dGVkQ2xvc2VUYWdzIiwibmV3bGluZUVhdGluZ1RhZ3MiLCJsaXN0aW5n
IiwiZ2xvYmFsSWRDb3VudGVyIiwiTWl4aW4iLCJfaWRDb3VudGVyIiwicGFyZW50VGFnIiwibW91
bnRJbWFnZSIsImVsIiwiY3JlYXRlRWxlbWVudE5TIiwiX3VwZGF0ZURPTVByb3BlcnRpZXMiLCJs
YXp5VHJlZSIsIl9jcmVhdGVJbml0aWFsQ2hpbGRyZW4iLCJ0YWdPcGVuIiwiX2NyZWF0ZU9wZW5U
YWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnMiLCJ0YWdDb250ZW50IiwiX2NyZWF0ZUNvbnRlbnRNYXJr
dXAiLCJmb2N1c0RPTUNvbXBvbmVudCIsInByb3BLZXkiLCJjcmVhdGVNYXJrdXBGb3JTdHlsZXMi
LCJyZW5kZXJUb1N0YXRpY01hcmt1cCIsIl9faHRtbCIsImNvbnRlbnRUb1VzZSIsImNoaWxkcmVu
VG9Vc2UiLCJtb3VudEltYWdlcyIsIm1vdW50Q2hpbGRyZW4iLCJsYXN0UHJvcHMiLCJfdXBkYXRl
RE9NQ2hpbGRyZW4iLCJ1cGRhdGVXcmFwcGVyIiwic3R5bGVOYW1lIiwic3R5bGVVcGRhdGVzIiwi
bGFzdFN0eWxlIiwibmV4dFByb3AiLCJsYXN0UHJvcCIsInNldFZhbHVlRm9yU3R5bGVzIiwibGFz
dENvbnRlbnQiLCJuZXh0Q29udGVudCIsImxhc3RIdG1sIiwibmV4dEh0bWwiLCJsYXN0Q2hpbGRy
ZW4iLCJuZXh0Q2hpbGRyZW4iLCJsYXN0SGFzQ29udGVudE9ySHRtbCIsIm5leHRIYXNDb250ZW50
T3JIdG1sIiwidXBkYXRlQ2hpbGRyZW4iLCJ1cGRhdGVUZXh0Q29udGVudCIsInVwZGF0ZU1hcmt1
cCIsInVubW91bnRDaGlsZHJlbiIsImRhbmdlcm91c1N0eWxlVmFsdWUiLCJoeXBoZW5hdGVTdHls
ZU5hbWUiLCJtZW1vaXplU3RyaW5nT25seSIsInByb2Nlc3NTdHlsZU5hbWUiLCJoYXNTaG9ydGhh
bmRQcm9wZXJ0eUJ1ZyIsInN0eWxlRmxvYXRBY2Nlc3NvciIsInRlbXBTdHlsZSIsImNzc0Zsb2F0
Iiwic3R5bGVzIiwic2VyaWFsaXplZCIsImlzQ3VzdG9tUHJvcGVydHkiLCJzdHlsZVZhbHVlIiwi
c2V0UHJvcGVydHkiLCJleHBhbnNpb24iLCJpbmRpdmlkdWFsU3R5bGVOYW1lIiwiY2FtZWxpemVT
dHlsZU5hbWUiLCJjYW1lbGl6ZSIsIm1zUGF0dGVybiIsIl9oeXBoZW5QYXR0ZXJuIiwiXyIsImNo
YXJhY3RlciIsImlzTm9uTnVtZXJpYyIsImh5cGhlbmF0ZSIsIl91cHBlcmNhc2VQYXR0ZXJuIiwi
Y2FjaGUiLCJydW5FdmVudFF1ZXVlSW5CYXRjaCIsIm1ha2VQcmVmaXhNYXAiLCJzdHlsZVByb3Ai
LCJwcmVmaXhlZEV2ZW50TmFtZXMiLCJ2ZW5kb3JQcmVmaXhlcyIsInByZWZpeE1hcCIsImFuaW1h
dGlvbmVuZCIsImFuaW1hdGlvbml0ZXJhdGlvbiIsImFuaW1hdGlvbnN0YXJ0IiwidHJhbnNpdGlv
bmVuZCIsImFuaW1hdGlvbiIsInRyYW5zaXRpb24iLCJmb3JjZVVwZGF0ZUlmTW91bnRlZCIsImlz
Q29udHJvbGxlZCIsInJvb3ROb2RlIiwicXVlcnlSb290IiwiZ3JvdXAiLCJxdWVyeVNlbGVjdG9y
QWxsIiwib3RoZXJOb2RlIiwib3RoZXJJbnN0YW5jZSIsImRlZmF1bHRDaGVja2VkIiwiaW5pdGlh
bENoZWNrZWQiLCJ2YWx1ZUFzTnVtYmVyIiwicGFyc2VGbG9hdCIsImZsYXR0ZW5DaGlsZHJlbiIs
ImRpZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4iLCJzZWxlY3RWYWx1ZSIsInNlbGVjdFBhcmVu
dCIsImhvc3RQcm9wcyIsIm1ha2VJbnNlcnRNYXJrdXAiLCJ0b0luZGV4IiwiZnJvbUluZGV4Iiwi
bWFrZU1vdmUiLCJtYWtlUmVtb3ZlIiwibWFrZVNldE1hcmt1cCIsIm1ha2VUZXh0Q29udGVudCIs
InByb2Nlc3NRdWV1ZSIsInVwZGF0ZVF1ZXVlIiwiUmVhY3RDaGlsZFJlY29uY2lsZXIiLCJfcmVj
b25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW4iLCJuZXN0ZWRDaGlsZHJlbiIsImluc3RhbnRpYXRl
Q2hpbGRyZW4iLCJfcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuIiwicHJldkNoaWxkcmVuIiwibmV4
dE5lc3RlZENoaWxkcmVuRWxlbWVudHMiLCJyZW1vdmVkTm9kZXMiLCJzZWxmRGVidWdJRCIsIm5l
eHRNYXJrdXAiLCJfdXBkYXRlQ2hpbGRyZW4iLCJuZXh0SW5kZXgiLCJuZXh0TW91bnRJbmRleCIs
Imxhc3RQbGFjZWROb2RlIiwicHJldkNoaWxkIiwiX21vdW50Q2hpbGRBdEluZGV4IiwiX3VubW91
bnRDaGlsZCIsInJlbmRlcmVkQ2hpbGRyZW4iLCJjcmVhdGVDaGlsZCIsImluc3RhbnRpYXRlQ2hp
bGQiLCJjaGlsZEluc3RhbmNlcyIsImtleVVuaXF1ZSIsIk5PREVfRU5WIiwiUFVCTElDX1VSTCIs
Im5lc3RlZENoaWxkTm9kZXMiLCJuZXh0Q2hpbGRJbnN0YW5jZSIsIm5leHRDaGlsZE1vdW50SW1h
Z2UiLCJyZW5kZXJlZENoaWxkIiwiU3RhdGVsZXNzQ29tcG9uZW50Iiwic2hvdWxkQ29uc3RydWN0
IiwiaXNQdXJlQ29tcG9uZW50IiwiQ29tcG9zaXRlVHlwZXMiLCJJbXB1cmVDbGFzcyIsIlB1cmVD
bGFzcyIsIlN0YXRlbGVzc0Z1bmN0aW9uYWwiLCJuZXh0TW91bnRJRCIsIl9jb21wb3NpdGVUeXBl
IiwiX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50IiwicmVuZGVyZWRFbGVtZW50IiwicHVibGlj
UHJvcHMiLCJwdWJsaWNDb250ZXh0IiwiX3Byb2Nlc3NDb250ZXh0IiwiZ2V0VXBkYXRlUXVldWUi
LCJkb0NvbnN0cnVjdCIsIl9jb25zdHJ1Y3RDb21wb25lbnQiLCJ1bnN0YWJsZV9oYW5kbGVFcnJv
ciIsInBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZyIsInBlcmZvcm1Jbml0aWFs
TW91bnQiLCJfY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyIiwiX3Byb2Nlc3NQZW5kaW5n
U3RhdGUiLCJkZWJ1Z0lEIiwiX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCIsIl9tYXNrQ29udGV4
dCIsIm1hc2tlZENvbnRleHQiLCJjb250ZXh0TmFtZSIsImN1cnJlbnRDb250ZXh0IiwiY2hpbGRD
b250ZXh0IiwiX2NoZWNrQ29udGV4dFR5cGVzIiwicHJldkNvbnRleHQiLCJwcmV2UGFyZW50RWxl
bWVudCIsIm5leHRQYXJlbnRFbGVtZW50IiwicHJldlVubWFza2VkQ29udGV4dCIsIm5leHRVbm1h
c2tlZENvbnRleHQiLCJ3aWxsUmVjZWl2ZSIsInByZXZQcm9wcyIsIm5leHRTdGF0ZSIsInNob3Vs
ZFVwZGF0ZSIsIl9wZXJmb3JtQ29tcG9uZW50VXBkYXRlIiwicGFydGlhbCIsInVubWFza2VkQ29u
dGV4dCIsInByZXZTdGF0ZSIsImhhc0NvbXBvbmVudERpZFVwZGF0ZSIsIl91cGRhdGVSZW5kZXJl
ZENvbXBvbmVudCIsInByZXZDb21wb25lbnRJbnN0YW5jZSIsInByZXZSZW5kZXJlZEVsZW1lbnQi
LCJuZXh0UmVuZGVyZWRFbGVtZW50Iiwib2xkSG9zdE5vZGUiLCJfcmVwbGFjZU5vZGVXaXRoTWFy
a3VwIiwicHJldkluc3RhbmNlIiwiX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25l
ck9yQ29udGV4dCIsInB1YmxpY0NvbXBvbmVudEluc3RhbmNlIiwiZ2V0TmV4dERlYnVnSUQiLCJu
ZXh0RGVidWdJRCIsImZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0IiwiUmVhY3RTZXJ2ZXJV
cGRhdGVRdWV1ZSIsIm5vb3BDYWxsYmFja1F1ZXVlIiwiZG9tSUQiLCJjcmVhdGVDb21tZW50Iiwi
aW5zdEEiLCJpbnN0QiIsImRlcHRoQSIsInRlbXBBIiwiZGVwdGhCIiwidGVtcEIiLCJkZXB0aCIs
ImNvbW1vbiIsInBhdGhGcm9tIiwicGF0aFRvIiwiX3N0cmluZ1RleHQiLCJfY2xvc2luZ0NvbW1l
bnQiLCJfY29tbWVudE5vZGVzIiwib3BlbmluZ1ZhbHVlIiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCIsImVzY2FwZWRUZXh0IiwibmV4dFRleHQiLCJuZXh0U3RyaW5nVGV4dCIsImNvbW1lbnROb2Rl
cyIsImhvc3ROb2RlIiwiUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uIiwi
UkVTRVRfQkFUQ0hFRF9VUERBVEVTIiwiRkxVU0hfQkFUQ0hFRF9VUERBVEVTIiwiYWxyZWFkeUJh
dGNoaW5nVXBkYXRlcyIsImZpbmRQYXJlbnQiLCJUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmci
LCJhbmNlc3RvcnMiLCJoYW5kbGVUb3BMZXZlbEltcGwiLCJhbmNlc3RvciIsIl9oYW5kbGVUb3BM
ZXZlbCIsInNjcm9sbFZhbHVlTW9uaXRvciIsImdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uIiwi
X2VuYWJsZWQiLCJkaXNwYXRjaEV2ZW50Iiwic2Nyb2xsYWJsZSIsIldpbmRvdyIsInBhZ2VYT2Zm
c2V0Iiwic2Nyb2xsTGVmdCIsInBhZ2VZT2Zmc2V0Iiwic2Nyb2xsVG9wIiwicmVhY3RNb3VudFJl
YWR5IiwiU0VMRUNUSU9OX1JFU1RPUkFUSU9OIiwiRVZFTlRfU1VQUFJFU1NJT04iLCJjdXJyZW50
bHlFbmFibGVkIiwicHJldmlvdXNseUVuYWJsZWQiLCJPTl9ET01fUkVBRFlfUVVFVUVJTkciLCJp
c0NvbGxhcHNlZCIsImFuY2hvck5vZGUiLCJhbmNob3JPZmZzZXQiLCJmb2N1c09mZnNldCIsImdl
dElFT2Zmc2V0cyIsInNlbGVjdGVkUmFuZ2UiLCJzZWxlY3RlZExlbmd0aCIsImZyb21TdGFydCIs
ImR1cGxpY2F0ZSIsIm1vdmVUb0VsZW1lbnRUZXh0Iiwic2V0RW5kUG9pbnQiLCJzdGFydE9mZnNl
dCIsImdldE1vZGVybk9mZnNldHMiLCJyYW5nZUNvdW50IiwiY3VycmVudFJhbmdlIiwiZ2V0UmFu
Z2VBdCIsInN0YXJ0Q29udGFpbmVyIiwiZW5kQ29udGFpbmVyIiwiaXNTZWxlY3Rpb25Db2xsYXBz
ZWQiLCJyYW5nZUxlbmd0aCIsInRlbXBSYW5nZSIsImNsb25lUmFuZ2UiLCJzZWxlY3ROb2RlQ29u
dGVudHMiLCJzZXRFbmQiLCJpc1RlbXBSYW5nZUNvbGxhcHNlZCIsImVuZE9mZnNldCIsImRldGVj
dGlvblJhbmdlIiwic2V0U3RhcnQiLCJpc0JhY2t3YXJkIiwiY29sbGFwc2VkIiwic2V0SUVPZmZz
ZXRzIiwic2V0TW9kZXJuT2Zmc2V0cyIsImV4dGVuZCIsInRlbXAiLCJzdGFydE1hcmtlciIsImdl
dE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQiLCJlbmRNYXJrZXIiLCJvZmZzZXQiLCJyZW1vdmVBbGxS
YW5nZXMiLCJhZGRSYW5nZSIsInVzZUlFT2Zmc2V0cyIsImdldExlYWZOb2RlIiwiZ2V0U2libGlu
Z05vZGUiLCJub2RlU3RhcnQiLCJub2RlRW5kIiwib3V0ZXJOb2RlIiwiaW5uZXJOb2RlIiwiaXNU
ZXh0Tm9kZSIsImNvbnRhaW5zIiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJOb2RlIiwiTlMi
LCJ4bGluayIsInhtbCIsIkFUVFJTIiwiYWNjZW50SGVpZ2h0IiwiYWNjdW11bGF0ZSIsImFkZGl0
aXZlIiwiYWxpZ25tZW50QmFzZWxpbmUiLCJhbGxvd1Jlb3JkZXIiLCJhbHBoYWJldGljIiwiYW1w
bGl0dWRlIiwiYXJhYmljRm9ybSIsImFzY2VudCIsImF0dHJpYnV0ZVR5cGUiLCJhdXRvUmV2ZXJz
ZSIsImF6aW11dGgiLCJiYXNlRnJlcXVlbmN5IiwiYmFzZVByb2ZpbGUiLCJiYXNlbGluZVNoaWZ0
IiwiYmJveCIsImJlZ2luIiwiYmlhcyIsImJ5IiwiY2FsY01vZGUiLCJjYXBIZWlnaHQiLCJjbGlw
IiwiY2xpcFJ1bGUiLCJjbGlwUGF0aFVuaXRzIiwiY29sb3JJbnRlcnBvbGF0aW9uIiwiY29sb3JJ
bnRlcnBvbGF0aW9uRmlsdGVycyIsImNvbG9yUHJvZmlsZSIsImNvbG9yUmVuZGVyaW5nIiwiY29u
dGVudFNjcmlwdFR5cGUiLCJjb250ZW50U3R5bGVUeXBlIiwiY3Vyc29yIiwiY3giLCJjeSIsImRl
Y2VsZXJhdGUiLCJkZXNjZW50IiwiZGlmZnVzZUNvbnN0YW50IiwiZGlyZWN0aW9uIiwiZGlzcGxh
eSIsImRpdmlzb3IiLCJkb21pbmFudEJhc2VsaW5lIiwiZHVyIiwiZHgiLCJkeSIsImVkZ2VNb2Rl
IiwiZWxldmF0aW9uIiwiZW5hYmxlQmFja2dyb3VuZCIsImV4cG9uZW50IiwiZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCIsImZpbGwiLCJmaWxsUnVsZSIsImZpbHRlciIsImZpbHRlclJlcyIsImZp
bHRlclVuaXRzIiwiZmxvb2RDb2xvciIsImZvY3VzYWJsZSIsImZvbnRTaXplQWRqdXN0IiwiZm9u
dFN0cmV0Y2giLCJmeCIsImZ5IiwiZzEiLCJnMiIsImdseXBoTmFtZSIsImdseXBoT3JpZW50YXRp
b25Ib3Jpem9udGFsIiwiZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsIiwiZ2x5cGhSZWYiLCJncmFk
aWVudFRyYW5zZm9ybSIsImdyYWRpZW50VW5pdHMiLCJoYW5naW5nIiwiaG9yaXpBZHZYIiwiaG9y
aXpPcmlnaW5YIiwiaWRlb2dyYXBoaWMiLCJpbWFnZVJlbmRlcmluZyIsImluIiwiaW4yIiwiaW50
ZXJjZXB0IiwiazEiLCJrMiIsImszIiwiazQiLCJrZXJuZWxNYXRyaXgiLCJrZXJuZWxVbml0TGVu
Z3RoIiwia2VybmluZyIsImtleVBvaW50cyIsImtleVNwbGluZXMiLCJrZXlUaW1lcyIsImxlbmd0
aEFkanVzdCIsImxldHRlclNwYWNpbmciLCJsaWdodGluZ0NvbG9yIiwibGltaXRpbmdDb25lQW5n
bGUiLCJsb2NhbCIsIm1hcmtlckVuZCIsIm1hcmtlck1pZCIsIm1hcmtlclN0YXJ0IiwibWFya2Vy
SGVpZ2h0IiwibWFya2VyVW5pdHMiLCJtYXJrZXJXaWR0aCIsIm1hc2tDb250ZW50VW5pdHMiLCJt
YXNrVW5pdHMiLCJtYXRoZW1hdGljYWwiLCJudW1PY3RhdmVzIiwib3BlcmF0b3IiLCJvcmllbnQi
LCJvcmllbnRhdGlvbiIsIm9yaWdpbiIsIm92ZXJmbG93Iiwib3ZlcmxpbmVQb3NpdGlvbiIsIm92
ZXJsaW5lVGhpY2tuZXNzIiwicGFpbnRPcmRlciIsInBhbm9zZTEiLCJwYXRoTGVuZ3RoIiwicGF0
dGVybkNvbnRlbnRVbml0cyIsInBhdHRlcm5UcmFuc2Zvcm0iLCJwYXR0ZXJuVW5pdHMiLCJwb2lu
dGVyRXZlbnRzIiwicG9pbnRzIiwicG9pbnRzQXRYIiwicG9pbnRzQXRZIiwicG9pbnRzQXRaIiwi
cHJlc2VydmVBbHBoYSIsInByZXNlcnZlQXNwZWN0UmF0aW8iLCJwcmltaXRpdmVVbml0cyIsInIi
LCJyYWRpdXMiLCJyZWZYIiwicmVmWSIsInJlbmRlcmluZ0ludGVudCIsInJlcGVhdENvdW50Iiwi
cmVwZWF0RHVyIiwicmVxdWlyZWRFeHRlbnNpb25zIiwicmVxdWlyZWRGZWF0dXJlcyIsInJlc3Rh
cnQiLCJyb3RhdGUiLCJyeCIsInJ5Iiwic2NhbGUiLCJzZWVkIiwic2hhcGVSZW5kZXJpbmciLCJz
bG9wZSIsInNwYWNpbmciLCJzcGVjdWxhckNvbnN0YW50Iiwic3BlY3VsYXJFeHBvbmVudCIsInNw
ZWVkIiwic3ByZWFkTWV0aG9kIiwic3RkRGV2aWF0aW9uIiwic3RlbWgiLCJzdGVtdiIsInN0aXRj
aFRpbGVzIiwic3RvcENvbG9yIiwic3RyaWtldGhyb3VnaFBvc2l0aW9uIiwic3RyaWtldGhyb3Vn
aFRoaWNrbmVzcyIsInN0cm9rZSIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsInN1
cmZhY2VTY2FsZSIsInN5c3RlbUxhbmd1YWdlIiwidGFibGVWYWx1ZXMiLCJ0YXJnZXRYIiwidGFy
Z2V0WSIsInRleHRBbmNob3IiLCJ0ZXh0RGVjb3JhdGlvbiIsInRleHRSZW5kZXJpbmciLCJ0ZXh0
TGVuZ3RoIiwidHJhbnNmb3JtIiwidTEiLCJ1MiIsInVuZGVybGluZVBvc2l0aW9uIiwidW5kZXJs
aW5lVGhpY2tuZXNzIiwidW5pY29kZSIsInVuaWNvZGVCaWRpIiwidW5pY29kZVJhbmdlIiwidW5p
dHNQZXJFbSIsInZBbHBoYWJldGljIiwidkhhbmdpbmciLCJ2SWRlb2dyYXBoaWMiLCJ2TWF0aGVt
YXRpY2FsIiwidmVjdG9yRWZmZWN0IiwidmVydEFkdlkiLCJ2ZXJ0T3JpZ2luWCIsInZlcnRPcmln
aW5ZIiwidmlld0JveCIsInZpZXdUYXJnZXQiLCJ2aXNpYmlsaXR5Iiwid2lkdGhzIiwid29yZFNw
YWNpbmciLCJ3cml0aW5nTW9kZSIsInhIZWlnaHQiLCJ4MSIsIngyIiwieENoYW5uZWxTZWxlY3Rv
ciIsInhsaW5rQWN0dWF0ZSIsInhsaW5rQXJjcm9sZSIsInhsaW5rSHJlZiIsInhsaW5rUm9sZSIs
InhsaW5rU2hvdyIsInhsaW5rVGl0bGUiLCJ4bGlua1R5cGUiLCJ4bWxCYXNlIiwieG1sbnMiLCJ4
bWxuc1hsaW5rIiwieG1sTGFuZyIsInhtbFNwYWNlIiwieTEiLCJ5MiIsInlDaGFubmVsU2VsZWN0
b3IiLCJ6Iiwiem9vbUFuZFBhbiIsInRvcCIsImJvdW5kaW5nVG9wIiwibGVmdCIsImJvdW5kaW5n
TGVmdCIsImNvbnN0cnVjdFNlbGVjdEV2ZW50IiwibW91c2VEb3duIiwiY3VycmVudFNlbGVjdGlv
biIsImxhc3RTZWxlY3Rpb24iLCJza2lwU2VsZWN0aW9uQ2hhbmdlRXZlbnQiLCJoYXNMaXN0ZW5l
ciIsIlN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50IiwiU3ludGhldGljQ2xpcGJvYXJkRXZlbnQiLCJT
eW50aGV0aWNGb2N1c0V2ZW50IiwiU3ludGhldGljS2V5Ym9hcmRFdmVudCIsIlN5bnRoZXRpY0Ry
YWdFdmVudCIsIlN5bnRoZXRpY1RvdWNoRXZlbnQiLCJTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQi
LCJTeW50aGV0aWNXaGVlbEV2ZW50IiwidG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnIiwi
Y2FwaXRhbGl6ZWRFdmVudCIsIm9uRXZlbnQiLCJ0b3BFdmVudCIsIm9uQ2xpY2tMaXN0ZW5lcnMi
LCJFdmVudENvbnN0cnVjdG9yIiwiQW5pbWF0aW9uRXZlbnRJbnRlcmZhY2UiLCJhbmltYXRpb25O
YW1lIiwiZWxhcHNlZFRpbWUiLCJwc2V1ZG9FbGVtZW50IiwiQ2xpcGJvYXJkRXZlbnRJbnRlcmZh
Y2UiLCJjbGlwYm9hcmREYXRhIiwiRm9jdXNFdmVudEludGVyZmFjZSIsImdldEV2ZW50S2V5Iiwi
S2V5Ym9hcmRFdmVudEludGVyZmFjZSIsInJlcGVhdCIsImxvY2FsZSIsIm5vcm1hbGl6ZUtleSIs
InRyYW5zbGF0ZVRvS2V5IiwiRXNjIiwiU3BhY2ViYXIiLCJMZWZ0IiwiVXAiLCJSaWdodCIsIkRv
d24iLCJEZWwiLCJXaW4iLCJNZW51IiwiQXBwcyIsIlNjcm9sbCIsIk1velByaW50YWJsZUtleSIs
IjgiLCI5IiwiMTIiLCIxMyIsIjE2IiwiMTciLCIxOCIsIjE5IiwiMjAiLCIyNyIsIjMyIiwiMzMi
LCIzNCIsIjM1IiwiMzYiLCIzNyIsIjM4IiwiMzkiLCI0MCIsIjQ1IiwiNDYiLCIxMTIiLCIxMTMi
LCIxMTQiLCIxMTUiLCIxMTYiLCIxMTciLCIxMTgiLCIxMTkiLCIxMjAiLCIxMjEiLCIxMjIiLCIx
MjMiLCIxNDQiLCIxNDUiLCIyMjQiLCJEcmFnRXZlbnRJbnRlcmZhY2UiLCJkYXRhVHJhbnNmZXIi
LCJUb3VjaEV2ZW50SW50ZXJmYWNlIiwidG91Y2hlcyIsInRhcmdldFRvdWNoZXMiLCJjaGFuZ2Vk
VG91Y2hlcyIsIlRyYW5zaXRpb25FdmVudEludGVyZmFjZSIsIldoZWVsRXZlbnRJbnRlcmZhY2Ui
LCJkZWx0YVgiLCJ3aGVlbERlbHRhWCIsImRlbHRhWSIsIndoZWVsRGVsdGFZIiwid2hlZWxEZWx0
YSIsImRlbHRhWiIsImRlbHRhTW9kZSIsInRvcExldmVsV3JhcHBlciIsInVzZUZpYmVyIiwiYWRs
ZXIzMiIsIlRBR19FTkQiLCJDT01NRU5UX1NUQVJUIiwiYWRkQ2hlY2tzdW1Ub01hcmt1cCIsImV4
aXN0aW5nQ2hlY2tzdW0iLCJNT0QiLCJjb21wb25lbnRPckVsZW1lbnQiLCJiYXNlR2V0VGFnIiwi
dW5kZWZpbmVkVGFnIiwibnVsbFRhZyIsInN5bVRvU3RyaW5nVGFnIiwiX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8xX19nZXRSYXdUYWdfanNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
Ml9fb2JqZWN0VG9TdHJpbmdfanNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fU3lt
Ym9sX2pzX18iLCJ0b1N0cmluZ1RhZyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZnJl
ZUdsb2JhbF9qc19fIiwiZnJlZVNlbGYiLCJmcmVlR2xvYmFsIiwiZ2V0UmF3VGFnIiwiaXNPd24i
LCJ1bm1hc2tlZCIsIm5hdGl2ZU9iamVjdFRvU3RyaW5nIiwib2JqZWN0VG9TdHJpbmciLCJfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX292ZXJBcmdfanNfXyIsImdldFByb3RvdHlwZSIsIm92
ZXJBcmciLCJpc09iamVjdExpa2UiLCJfcG9ueWZpbGwiLCJfcG9ueWZpbGwyIiwid2VicGFja1Bv
bHlmaWxsIiwiZGVwcmVjYXRlIiwicGF0aHMiLCJzeW1ib2xPYnNlcnZhYmxlUG9ueWZpbGwiLCJf
U3ltYm9sIiwiZ2V0VW5kZWZpbmVkU3RhdGVFcnJvck1lc3NhZ2UiLCJhY3Rpb25UeXBlIiwiYXNz
ZXJ0UmVkdWNlclNoYXBlIiwicmVkdWNlcnMiLCJjb21iaW5lUmVkdWNlcnMiLCJyZWR1Y2VyS2V5
cyIsImZpbmFsUmVkdWNlcnMiLCJmaW5hbFJlZHVjZXJLZXlzIiwic2hhcGVBc3NlcnRpb25FcnJv
ciIsImhhc0NoYW5nZWQiLCJfaSIsInByZXZpb3VzU3RhdGVGb3JLZXkiLCJuZXh0U3RhdGVGb3JL
ZXkiLCJlcnJvck1lc3NhZ2UiLCJiaW5kQWN0aW9uQ3JlYXRvciIsImFjdGlvbkNyZWF0b3IiLCJi
aW5kQWN0aW9uQ3JlYXRvcnMiLCJhY3Rpb25DcmVhdG9ycyIsImJvdW5kQWN0aW9uQ3JlYXRvcnMi
LCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfcHJvcF90eXBlc19fIiwiX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8xX3Byb3BfdHlwZXNfX19kZWZhdWx0IiwiX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8yX191dGlsc19Qcm9wVHlwZXNfXyIsIl9Qcm92aWRlciRjaGlsZENvbnRleCIsInN1
YktleSIsIlByb3ZpZGVyIiwic2hpbSIsImdldFNoaW0iLCJSRUFDVF9TVEFUSUNTIiwiS05PV05f
U1RBVElDUyIsImNhbGxlciIsImFyaXR5Iiwib2JqZWN0UHJvdG90eXBlIiwiaG9pc3ROb25SZWFj
dFN0YXRpY3MiLCJ0YXJnZXRDb21wb25lbnQiLCJzb3VyY2VDb21wb25lbnQiLCJibGFja2xpc3Qi
LCJpbmhlcml0ZWRDb21wb25lbnQiLCJjcmVhdGVMaXN0ZW5lckNvbGxlY3Rpb24iLCJjbGVhciIs
IkNMRUFSRUQiLCJub3RpZnkiLCJTdWJzY3JpcHRpb24iLCJudWxsTGlzdGVuZXJzIiwiYWRkTmVz
dGVkU3ViIiwiZmFjdG9yaWVzIiwic3RyaWN0RXF1YWwiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzBfX2NvbXBvbmVudHNfY29ubmVjdEFkdmFuY2VkX18iLCJfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzFfX3V0aWxzX3NoYWxsb3dFcXVhbF9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8yX19tYXBEaXNwYXRjaFRvUHJvcHNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19f
bWFwU3RhdGVUb1Byb3BzX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX21lcmdlUHJv
cHNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fc2VsZWN0b3JGYWN0b3J5X18iLCJf
cmVmJGNvbm5lY3RIT0MiLCJjb25uZWN0SE9DIiwiX3JlZiRtYXBTdGF0ZVRvUHJvcHNGIiwibWFw
U3RhdGVUb1Byb3BzRmFjdG9yaWVzIiwiX3JlZiRtYXBEaXNwYXRjaFRvUHJvIiwibWFwRGlzcGF0
Y2hUb1Byb3BzRmFjdG9yaWVzIiwiX3JlZiRtZXJnZVByb3BzRmFjdG9yIiwibWVyZ2VQcm9wc0Zh
Y3RvcmllcyIsIl9yZWYkc2VsZWN0b3JGYWN0b3J5IiwibWFwU3RhdGVUb1Byb3BzIiwibWFwRGlz
cGF0Y2hUb1Byb3BzIiwibWVyZ2VQcm9wcyIsIl9yZWYyJHB1cmUiLCJwdXJlIiwiX3JlZjIkYXJl
U3RhdGVzRXF1YWwiLCJhcmVTdGF0ZXNFcXVhbCIsIl9yZWYyJGFyZU93blByb3BzRXF1YSIsImFy
ZU93blByb3BzRXF1YWwiLCJfcmVmMiRhcmVTdGF0ZVByb3BzRXEiLCJhcmVTdGF0ZVByb3BzRXF1
YWwiLCJfcmVmMiRhcmVNZXJnZWRQcm9wc0UiLCJhcmVNZXJnZWRQcm9wc0VxdWFsIiwiZXh0cmFP
cHRpb25zIiwiaW5pdE1hcFN0YXRlVG9Qcm9wcyIsImluaXRNYXBEaXNwYXRjaFRvUHJvcHMiLCJp
bml0TWVyZ2VQcm9wcyIsIndoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uIiwiX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8xX193cmFwTWFwVG9Qcm9wc19fIiwid2hlbk1hcERpc3BhdGNo
VG9Qcm9wc0lzTWlzc2luZyIsIndoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc09iamVjdCIsIl9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWR1eF9fIiwid2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVu
Y3Rpb24iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3dyYXBNYXBUb1Byb3BzX18iLCJ3
aGVuTWFwU3RhdGVUb1Byb3BzSXNNaXNzaW5nIiwiZGVmYXVsdE1lcmdlUHJvcHMiLCJzdGF0ZVBy
b3BzIiwiZGlzcGF0Y2hQcm9wcyIsIndyYXBNZXJnZVByb3BzRnVuYyIsImhhc1J1bk9uY2UiLCJt
ZXJnZWRQcm9wcyIsIm5leHRNZXJnZWRQcm9wcyIsIndoZW5NZXJnZVByb3BzSXNGdW5jdGlvbiIs
IndoZW5NZXJnZVByb3BzSXNPbWl0dGVkIiwiaW1wdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9y
eSIsInB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5IiwiaGFuZGxlRmlyc3RDYWxsIiwiZmly
c3RTdGF0ZSIsImZpcnN0T3duUHJvcHMiLCJoYXNSdW5BdExlYXN0T25jZSIsImhhbmRsZU5ld1By
b3BzQW5kTmV3U3RhdGUiLCJoYW5kbGVOZXdQcm9wcyIsImhhbmRsZU5ld1N0YXRlIiwibmV4dFN0
YXRlUHJvcHMiLCJzdGF0ZVByb3BzQ2hhbmdlZCIsImhhbmRsZVN1YnNlcXVlbnRDYWxscyIsIm5l
eHRPd25Qcm9wcyIsInByb3BzQ2hhbmdlZCIsInN0YXRlQ2hhbmdlZCIsImZpbmFsUHJvcHNTZWxl
Y3RvckZhY3RvcnkiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfcmVkdXhfXyIsIl9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMl9yZWFjdF9yZWR1eF9fIiwiX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8zX19jb21wb25lbnRzX0hlYWRlcl9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV80X19jb21wb25lbnRzX01haW5TZWN0aW9uX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzVfX2FjdGlvbnNfXyIsIkFwcCIsInRvZG9zIiwiYWN0aW9ucyIsImFkZFRvZG8iLCJfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzFfX1RvZG9UZXh0SW5wdXRfXyIsIkhlYWRlciIsImhhbmRsZVNh
dmUiLCJfZGVmaW5lUHJvcGVydHkiLCJfVE9ET19GSUxURVJTIiwiX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX19Ub2RvSXRlbV9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19Gb290
ZXJfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fY29uc3RhbnRzX1RvZG9GaWx0ZXJz
X18iLCJUT0RPX0ZJTFRFUlMiLCJ0b2RvIiwiY29tcGxldGVkIiwiTWFpblNlY3Rpb24iLCJoYW5k
bGVDbGVhckNvbXBsZXRlZCIsImNsZWFyQ29tcGxldGVkIiwiaGFuZGxlU2hvdyIsImNvbXBsZXRl
ZENvdW50IiwiX3Byb3BzIiwiY29tcGxldGVBbGwiLCJhY3RpdmVDb3VudCIsIm9uQ2xlYXJDb21w
bGV0ZWQiLCJvblNob3ciLCJfcHJvcHMyIiwiZmlsdGVyZWRUb2RvcyIsInJlbmRlclRvZ2dsZUFs
bCIsInJlbmRlckZvb3RlciIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fVG9kb1RleHRJ
bnB1dF9fIiwiVG9kb0l0ZW0iLCJoYW5kbGVEb3VibGVDbGljayIsImRlbGV0ZVRvZG8iLCJlZGl0
VG9kbyIsIl90aGlzMiIsImNvbXBsZXRlVG9kbyIsIm9uRG91YmxlQ2xpY2siLCJvbkNsaWNrIiwi
X0ZJTFRFUl9USVRMRVMiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2NvbnN0YW50c19U
b2RvRmlsdGVyc19fIiwiRklMVEVSX1RJVExFUyIsIkZvb3RlciIsIml0ZW1Xb3JkIiwic2VsZWN0
ZWRGaWx0ZXIiLCJyZW5kZXJUb2RvQ291bnQiLCJyZW5kZXJGaWx0ZXJMaW5rIiwicmVuZGVyQ2xl
YXJCdXR0b24iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2NvbnN0YW50c19BY3Rpb25U
eXBlc19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX190b2Rvc19fIiwicm9vdFJlZHVj
ZXIiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIyIiwibWF4SWQiLCJhcmVBbGxNYXJrZWQiXSwi
bWFwcGluZ3MiOiJDQUFTLFNBQVVBLEdDSW5CLFFBQUFDLEdBQUFDLEdBR0EsR0FBQUMsRUFBQUQs
R0FDQSxNQUFBQyxHQUFBRCxHQUFBRSxPQUdBLElBQUFDLEdBQUFGLEVBQUFELElBQ0FJLEVBQUFK
LEVBQ0FLLEdBQUEsRUFDQUgsV0FVQSxPQU5BSixHQUFBRSxHQUFBTSxLQUFBSCxFQUFBRCxRQUFB
QyxJQUFBRCxRQUFBSCxHQUdBSSxFQUFBRSxHQUFBLEVBR0FGLEVBQUFELFFBdkJBLEdBQUFELEtB
NEJBRixHQUFBUSxFQUFBVCxFQUdBQyxFQUFBUyxFQUFBUCxFQUdBRixFQUFBVSxFQUFBLFNBQUFQ
LEVBQUFRLEVBQUFDLEdBQ0FaLEVBQUFhLEVBQUFWLEVBQUFRLElBQ0FHLE9BQUFDLGVBQUFaLEVB
QUFRLEdBQ0FLLGNBQUEsRUFDQUMsWUFBQSxFQUNBQyxJQUFBTixLQU1BWixFQUFBbUIsRUFBQSxT
QUFBZixHQUNBLEdBQUFRLEdBQUFSLEtBQUFnQixXQUNBLFdBQTJCLE1BQUFoQixHQUFBLFNBQzNC
LFdBQWlDLE1BQUFBLEdBRWpDLE9BREFKLEdBQUFVLEVBQUFFLEVBQUEsSUFBQUEsR0FDQUEsR0FJ
QVosRUFBQWEsRUFBQSxTQUFBUSxFQUFBQyxHQUFzRCxNQUFBUixRQUFBUyxVQUFBQyxlQUFBakIs
S0FBQWMsRUFBQUMsSUFHdER0QixFQUFBeUIsRUFBQSxLQUdBekIsSUFBQTBCLEVBQUEsTURNTSxT
QUFVdEIsRUFBUUQsRUFBU0gsR0FFakMsWUVwQ0EsU0FBQTJCLEdBQUFDLEVBQUFDLEVBQUFDLEVB
QUFDLEVBQUF0QixFQUFBQyxFQUFBc0IsRUFBQUMsR0FHQSxHQUZBQyxFQUFBTCxJQUVBRCxFQUFB
LENBQ0EsR0FBQU8sRUFDQSxRQUFBQyxLQUFBUCxFQUNBTSxFQUFBLEdBQUFFLE9BQUEscUlBQ0ss
Q0FDTCxHQUFBQyxJQUFBUixFQUFBQyxFQUFBdEIsRUFBQUMsRUFBQXNCLEVBQUFDLEdBQ0FNLEVB
QUEsQ0FDQUosR0FBQSxHQUFBRSxPQUFBUixFQUFBVyxRQUFBLGlCQUNBLE1BQUFGLEdBQUFDLFFB
RUFKLEVBQUF4QixLQUFBLHNCQUlBLEtBREF3QixHQUFBTSxZQUFBLEVBQ0FOLEdBM0JBLEdBQUFE
LEdBQUEsU0FBQUwsSUErQkF6QixHQUFBRCxRQUFBd0IsR0YwRU0sU0FBVXZCLEVBQVFELEVBQVNI
LEdBRWpDLFlHdEhBLElBQUEwQyxHQUFBMUMsRUFBQSxHQVNBMkMsRUFBQUQsQ0EwQ0F0QyxHQUFB
RCxRQUFBd0MsR0h1SU0sU0FBVXZDLEVBQVFELEVBQVNILEdBRWpDLFlJckxBLFNBQUE0QyxHQUFB
QyxHQUtBLE9BSkFDLEdBQUFDLFVBQUFDLE9BQUEsRUFFQUMsRUFBQSx5QkFBQUosRUFBQSw2RUFB
b0RBLEVBRXBESyxFQUFBLEVBQXNCQSxFQUFBSixFQUFtQkksSUFDekNELEdBQUEsV0FBQUUsbUJB
QUFKLFVBQUFHLEVBQUEsR0FHQUQsSUFBQSxnSEFFQSxJQUFBZCxHQUFBLEdBQUFFLE9BQUFZLEVB
SUEsTUFIQWQsR0FBQXhCLEtBQUEsc0JBQ0F3QixFQUFBTSxZQUFBLEVBRUFOLEVBR0EvQixFQUFB
RCxRQUFBeUMsR0o2TU0sU0FBVXhDLEVBQVFELEVBQVNILEdBRWpDLFlLeE9BLFNBQUFvRCxHQUFB
QyxHQUNBLFVBQUFBLE9BQUFqQixLQUFBaUIsRUFDQSxTQUFBQyxXQUFBLHdEQUdBLE9BQUF4QyxR
QUFBdUMsR0FUQSxHQUFBRSxHQUFBekMsT0FBQXlDLHNCQUNBL0IsRUFBQVYsT0FBQVMsVUFBQUMs
ZUFDQWdDLEVBQUExQyxPQUFBUyxVQUFBa0Msb0JBc0RBckQsR0FBQUQsUUE1Q0EsV0FDQSxJQUNB
LElBQUFXLE9BQUE0QyxPQUNBLFFBTUEsSUFBQUMsR0FBQSxHQUFBQyxRQUFBLE1BRUEsSUFEQUQs
RUFBQSxRQUNBLE1BQUE3QyxPQUFBK0Msb0JBQUFGLEdBQUEsR0FDQSxRQUtBLFFBREFHLE1BQ0F6
RCxFQUFBLEVBQWlCQSxFQUFBLEdBQVFBLElBQ3pCeUQsRUFBQSxJQUFBRixPQUFBRyxhQUFBMUQs
S0FLQSxtQkFIQVMsT0FBQStDLG9CQUFBQyxHQUFBRSxJQUFBLFNBQUE3QyxHQUNBLE1BQUEyQyxH
QUFBM0MsS0FFQThDLEtBQUEsSUFDQSxRQUlBLElBQUFDLEtBSUEsT0FIQSx1QkFBQUMsTUFBQSxJ
QUFBQyxRQUFBLFNBQUFDLEdBQ0FILEVBQUFHLE9BR0EseUJBREF2RCxPQUFBd0QsS0FBQXhELE9B
QUE0QyxVQUFrQ1EsSUFBQUQsS0FBQSxJQU1oQyxNQUFBTSxHQUVGLGFBSUF6RCxPQUFBNEMsT0FB
QSxTQUFBYyxFQUFBQyxHQUtBLE9BSkFDLEdBRUFDLEVBREFDLEVBQUF4QixFQUFBb0IsR0FHQTlD
LEVBQUEsRUFBZ0JBLEVBQUFxQixVQUFBQyxPQUFzQnRCLElBQUEsQ0FDdENnRCxFQUFBNUQsT0FB
QWlDLFVBQUFyQixHQUVBLFFBQUFtRCxLQUFBSCxHQUNBbEQsRUFBQWpCLEtBQUFtRSxFQUFBRyxL
QUNBRCxFQUFBQyxHQUFBSCxFQUFBRyxHQUlBLElBQUF0QixFQUFBLENBQ0FvQixFQUFBcEIsRUFB
QW1CLEVBQ0EsUUFBQXJFLEdBQUEsRUFBa0JBLEVBQUFzRSxFQUFBM0IsT0FBb0IzQyxJQUN0Q21E
LEVBQUFqRCxLQUFBbUUsRUFBQUMsRUFBQXRFLE1BQ0F1RSxFQUFBRCxFQUFBdEUsSUFBQXFFLEVB
QUFDLEVBQUF0RSxNQU1BLE1BQUF1RSxLTDJQTSxTQUFVeEUsRUFBUUQsRUFBU0gsR0FFakMsWU0x
VEEsU0FBQThFLEdBQUFDLEVBQUFDLEdBQ0EsV0FBQUQsRUFBQUUsVUFBQUYsRUFBQUcsYUFBQUMs
S0FBQXZCLE9BQUFvQixJQUFBLElBQUFELEVBQUFFLFVBQUFGLEVBQUFLLFlBQUEsZ0JBQUFKLEVB
QUEsU0FBQUQsRUFBQUUsVUFBQUYsRUFBQUssWUFBQSxpQkFBQUosRUFBQSxJQVVBLFFBQUFLLEdB
QUFDLEdBRUEsSUFEQSxHQUFBQyxHQUNBQSxFQUFBRCxFQUFBRSxvQkFDQUYsRUFBQUMsQ0FFQSxP
QUFBRCxHQU9BLFFBQUFHLEdBQUFDLEVBQUFYLEdBQ0EsR0FBQVksR0FBQU4sRUFBQUssRUFDQUMs
R0FBQUMsVUFBQWIsRUFDQUEsRUFBQWMsR0FBQUYsRUFHQSxRQUFBRyxHQUFBSixHQUNBLEdBQUFY
LEdBQUFXLEVBQUFFLFNBQ0FiLFdBQ0FBLEdBQUFjLEdBQ0FILEVBQUFFLFVBQUEsTUFrQkEsUUFB
QUcsR0FBQUwsRUFBQVgsR0FDQSxLQUFBVyxFQUFBTSxPQUFBQyxFQUFBQyxxQkFBQSxDQUdBLEdB
QUFDLEdBQUFULEVBQUFVLGtCQUNBQyxFQUFBdEIsRUFBQXVCLFVBQ0FDLEdBQUEsT0FBQTVGLEtB
QUF3RixHQUNBLEdBQUFBLEVBQUEzRSxlQUFBYixHQUFBLENBR0EsR0FBQTZGLEdBQUFMLEVBQUF4
RixHQUNBOEYsRUFBQXBCLEVBQUFtQixHQUFBRSxNQUNBLFFBQUFELEVBQUEsQ0FLQSxLQUFVLE9B
QUFKLEVBQW9CQSxJQUFBTSxZQUM5QixHQUFBN0IsRUFBQXVCLEVBQUFJLEdBQUEsQ0FDQWhCLEVB
QUFlLEVBQUFILEVBQ0EsU0FBQUUsR0FJQUssRUFBQSxLQUFBSCxJQUVBZixFQUFBTSxRQUFBQyxF
QUFBQyxxQkFPQSxRQUFBVyxHQUFBOUIsR0FDQSxHQUFBQSxFQUFBYyxHQUNBLE1BQUFkLEdBQUFj
LEVBS0EsS0FEQSxHQUFBaUIsT0FDQS9CLEVBQUFjLElBQUEsQ0FFQSxHQURBaUIsRUFBQUMsS0FB
QWhDLElBQ0FBLEVBQUFpQyxXQUtBLFdBSkFqQyxLQUFBaUMsV0FVQSxJQUZBLEdBQUFDLEdBQ0F2
QixFQUNRWCxJQUFBVyxFQUFBWCxFQUFBYyxJQUE0Q2QsRUFBQStCLEVBQUFJLE1BQ3BERCxFQUFB
dkIsRUFDQW9CLEVBQUE5RCxRQUNBK0MsRUFBQUwsRUFBQVgsRUFJQSxPQUFBa0MsR0FPQSxRQUFB
RSxHQUFBcEMsR0FDQSxHQUFBVyxHQUFBbUIsRUFBQTlCLEVBQ0EsY0FBQVcsS0FBQUUsWUFBQWIs
RUFDQVcsRUFFQSxLQVFBLFFBQUEwQixHQUFBMUIsR0FLQSxPQUZBdEQsS0FBQXNELEVBQUFFLFdB
QUFnQixFQUFBLE1BRUFsQixFQUFBRSxVQUNBLE1BQUFGLEdBQUFFLFNBS0EsS0FEQSxHQUFBa0Is
T0FDQXBCLEVBQUFFLFdBQ0FrQixFQUFBQyxLQUFBckIsR0FDQUEsRUFBQTJCLGFBQUFULEVBQUEs
TUFDQWxCLElBQUEyQixXQUtBLE1BQVFQLEVBQUE5RCxPQUFnQjBDLEVBQUFvQixFQUFBSSxNQUN4
Qm5CLEVBQUFMLElBQUFFLFVBR0EsT0FBQUYsR0FBQUUsVUF6S0EsR0FBQWdCLEdBQUE1RyxFQUFB
LEdBRUFzSCxFQUFBdEgsRUFBQSxJQUNBdUgsRUFBQXZILEVBQUEsSUFJQW1GLEdBRkFuRixFQUFB
LEdBRUFzSCxFQUFBRSxtQkFDQXZCLEVBQUFzQixFQUVBMUIsRUFBQSwyQkFBQTRCLEtBQUFDLFNB
QUFDLFNBQUEsSUFBQUMsTUFBQSxHQWtLQUMsR0FDQWhCLDZCQUNBTSxzQkFDQUMsc0JBQ0FyQixx
QkFDQU4sZUFDQUssY0FHQTFGLEdBQUFELFFBQUEwSCxHTjBWTSxTQUFVekgsRUFBUUQsRUFBU0gs
R0FFakMsWU9qaEJBLElBQUE4SCxLQUFBLG9CQUFBQyxpQkFBQUMsV0FBQUQsT0FBQUMsU0FBQUMs
ZUFRQUMsR0FFQUosWUFFQUssY0FBQSxvQkFBQUMsUUFFQUMscUJBQUFQLE1BQUFDLE9BQUFPLG1C
QUFBUCxPQUFBUSxhQUVBQyxlQUFBVixLQUFBQyxPQUFBVSxPQUVBQyxZQUFBWixFQUlBMUgsR0FB
QUQsUUFBQStILEdQa2lCTSxTQUFVOUgsRUFBUUQsRUFBU0gsR0FFakMsWVF6akJBLFNBQUEySSxH
QUFBQyxHQUNBLGtCQUNBLE1BQUFBLElBU0EsR0FBQWxHLEdBQUEsWUFFQUEsR0FBQW1HLFlBQUFG
LEVBQ0FqRyxFQUFBb0csaUJBQUFILEdBQUEsR0FDQWpHLEVBQUFxRyxnQkFBQUosR0FBQSxHQUNB
akcsRUFBQXNHLGdCQUFBTCxFQUFBLE1BQ0FqRyxFQUFBdUcsZ0JBQUEsV0FDQSxNQUFBQyxPQUVB
eEcsRUFBQXlHLG9CQUFBLFNBQUFQLEdBQ0EsTUFBQUEsSUFHQXhJLEVBQUFELFFBQUF1QyxHUjJr
Qk0sU0FBVXRDLEVBQVFELEVBQVNILEdBRWpDLFlTbm1CQSxJQUFBb0osR0FBQSxJQU9BaEosR0FB
QUQsU0FBa0JpSixjVHVuQlosU0FBVWhKLEVBQVFELEVBQVNILEdBRWpDLFlVam5CQSxTQUFBcUos
S0FDQUMsRUFBQUMsMkJBQUFDLEdBQUE1QyxFQUFBLE9BaUNBLFFBQUE2QyxLQUNBUCxLQUFBUSww
QkFDQVIsS0FBQVMsc0JBQUEsS0FDQVQsS0FBQVUsY0FBQUMsRUFBQUMsWUFDQVosS0FBQWEscUJB
QUFULEVBQUFDLDBCQUFBTyxXQUNBLEdBeUJBLFFBQUFFLEdBQUFDLEVBQUFuSSxFQUFBQyxFQUFB
dEIsRUFBQUMsRUFBQXNCLEdBRUEsTUFEQXFILEtBQ0FHLEVBQUFRLGVBQUFDLEVBQUFuSSxFQUFB
QyxFQUFBdEIsRUFBQUMsRUFBQXNCLEdBVUEsUUFBQWtJLEdBQUFDLEVBQUFDLEdBQ0EsTUFBQUQs
R0FBQUUsWUFBQUQsRUFBQUMsWUFHQSxRQUFBQyxHQUFBQyxHQUNBLEdBQUFDLEdBQUFELEVBQUFa
LHFCQUNBYSxLQUFBQyxFQUFBekgsUUFBQTRELEVBQUEsTUFBQTRELEVBQUFDLEVBQUF6SCxRQUtB
eUgsRUFBQUMsS0FBQVIsR0FPQVMsR0FFQSxRQUFBdEssR0FBQSxFQUFpQkEsRUFBQW1LLEVBQVNu
SyxJQUFBLENBSTFCLEdBQUFpRixHQUFBbUYsRUFBQXBLLEdBS0F1SyxFQUFBdEYsRUFBQXVGLGlC
QUNBdkYsR0FBQXVGLGtCQUFBLElBRUEsSUFBQUMsRUFDQSxJQUFBQyxFQUFBQyxtQkFBQSxDQUNB
LEdBQUFDLEdBQUEzRixDQUVBQSxHQUFBNEYsZ0JBQUFDLEtBQUFDLHlCQUNBSCxFQUFBM0YsRUFB
QUUsb0JBRUFzRixFQUFBLGlCQUFBRyxFQUFBSSxVQUNBQyxRQUFBQyxLQUFBVCxHQVNBLEdBTkFV
LEVBQUFDLHlCQUFBbkcsRUFBQWlGLEVBQUFSLHFCQUFBWSxHQUVBRyxHQUNBUSxRQUFBSSxRQUFB
WixHQUdBRixFQUNBLE9BQUFlLEdBQUEsRUFBcUJBLEVBQUFmLEVBQUE1SCxPQUFzQjJJLElBQzND
cEIsRUFBQVgsY0FBQWdDLFFBQUFoQixFQUFBZSxHQUFBckcsRUFBQXVHLHNCQWdDQSxRQUFBQyxH
QUFBeEcsR0FTQSxHQVJBK0QsS0FRQUcsRUFBQXVDLGtCQUVBLFdBREF2QyxHQUFBUSxlQUFBOEIs
RUFBQXhHLEVBSUFtRixHQUFBMUQsS0FBQXpCLEdBQ0EsTUFBQUEsRUFBQTBHLHFCQUNBMUcsRUFB
QTBHLG1CQUFBckIsRUFBQSxHQVFBLFFBQUFzQixHQUFBaEMsRUFBQWlDLEdBQ0ExQyxFQUFBdUMs
bUJBQUFuRixFQUFBLE9BQ0F1RixFQUFBUCxRQUFBM0IsRUFBQWlDLEdBQ0FFLEdBQUEsRUE1TUEs
R0FBQXhGLEdBQUE1RyxFQUFBLEdBQ0FxTSxFQUFBck0sRUFBQSxHQUVBNkosRUFBQTdKLEVBQUEs
SUFDQXNNLEVBQUF0TSxFQUFBLElBQ0ErSyxFQUFBL0ssRUFBQSxJQUNBd0wsRUFBQXhMLEVBQUEs
SUFDQXVNLEVBQUF2TSxFQUFBLElBSUF5SyxHQUZBekssRUFBQSxPQUdBMkssRUFBQSxFQUNBd0Is
RUFBQXRDLEVBQUFDLFlBQ0FzQyxHQUFBLEVBRUE1QyxFQUFBLEtBTUFnRCxHQUNBQyxXQUFBLFdB
Q0F2RCxLQUFBUyxzQkFBQWMsRUFBQXpILFFBRUEwSixNQUFBLFdBQ0F4RCxLQUFBUyx3QkFBQWMs
RUFBQXpILFFBTUF5SCxFQUFBa0MsT0FBQSxFQUFBekQsS0FBQVMsdUJBQ0FpRCxLQUVBbkMsRUFB
QXpILE9BQUEsSUFLQTZKLEdBQ0FKLFdBQUEsV0FDQXZELEtBQUFVLGNBQUFrRCxTQUVBSixNQUFB
LFdBQ0F4RCxLQUFBVSxjQUFBbUQsY0FJQUMsR0FBQVIsRUFBQUssRUFVQVIsR0FBQTVDLEVBQUFs
SSxVQUFBZ0wsR0FDQVUsdUJBQUEsV0FDQSxNQUFBRCxJQUdBRSxXQUFBLFdBQ0FoRSxLQUFBUyxz
QkFBQSxLQUNBRSxFQUFBc0QsUUFBQWpFLEtBQUFVLGVBQ0FWLEtBQUFVLGNBQUEsS0FDQU4sRUFB
QUMsMEJBQUE0RCxRQUFBakUsS0FBQWEsc0JBQ0FiLEtBQUFhLHFCQUFBLE1BR0FxRCxRQUFBLFNB
QUFDLEVBQUFDLEVBQUF4TCxHQUdBLE1BQUF5SyxHQUFBYSxRQUFBN00sS0FBQTJJLFVBQUFhLHFC
QUFBcUQsUUFBQWxFLEtBQUFhLHFCQUFBc0QsRUFBQUMsRUFBQXhMLE1BSUF3SyxFQUFBaUIsYUFB
QTlELEVBdUVBLElBQUFtRCxHQUFBLFdBS0EsS0FBQW5DLEVBQUF6SCxRQUFBb0osR0FBQSxDQUNB
LEdBQUEzQixFQUFBekgsT0FBQSxDQUNBLEdBQUF1SCxHQUFBZCxFQUFBSyxXQUNBUyxHQUFBNkMs
UUFBQTlDLEVBQUEsS0FBQUMsR0FDQWQsRUFBQTBELFFBQUE1QyxHQUdBLEdBQUE2QixFQUFBLENB
Q0FBLEdBQUEsQ0FDQSxJQUFBb0IsR0FBQXJCLENBQ0FBLEdBQUF0QyxFQUFBQyxZQUNBMEQsRUFB
QVQsWUFDQWxELEVBQUFzRCxRQUFBSyxNQXVDQUMsR0FDQUMsMkJBQUEsU0FBQUMsR0FDQUEsR0FB
QS9HLEVBQUEsT0FDQTBDLEVBQUFDLDBCQUFBb0UsR0FHQUMsdUJBQUEsU0FBQUMsR0FDQUEsR0FB
QWpILEVBQUEsT0FDQSxtQkFBQWlILEdBQUE3RCxnQkFBQXBELEVBQUEsT0FDQSxrQkFBQWlILEdB
QUE5QixtQkFBQW5GLEVBQUEsT0FDQTRDLEVBQUFxRSxJQUlBdkUsR0FPQUMsMEJBQUEsS0FFQVMs
aUJBQ0E4QixnQkFDQWMsc0JBQ0FrQixVQUFBTCxFQUNBeEIsT0FHQTdMLEdBQUFELFFBQUFtSixH
Vm9wQk0sU0FBVWxKLEVBQVFELEVBQVNILEdBRWpDLFlXNzRCQUksR0FBQUQsUUFBQUgsRUFBQSxL
WHE1Qk0sU0FBVUksRUFBUUQsRUFBU0gsR0FFakMsWVl0NEJBLElBQUErTixJQUtBQyxRQUFBLEtB
R0E1TixHQUFBRCxRQUFBNE4sR1o4NUJNLFNBQVUzTixFQUFRRCxFQUFTSCxHQUVqQyxZYTkzQkEs
U0FBQWlPLEdBQUFDLEVBQUFDLEVBQUFDLEVBQUFDLEdBUUFuRixLQUFBZ0YsaUJBQ0FoRixLQUFB
b0YsWUFBQUgsRUFDQWpGLEtBQUFrRixhQUVBLElBQUFHLEdBQUFyRixLQUFBc0YsWUFBQUQsU0FD
QSxRQUFBRSxLQUFBRixHQUNBLEdBQUFBLEVBQUEvTSxlQUFBaU4sR0FBQSxDQU1BLEdBQUFDLEdB
QUFILEVBQUFFLEVBQ0FDLEdBQ0F4RixLQUFBdUYsR0FBQUMsRUFBQU4sR0FFQSxXQUFBSyxFQUNB
dkYsS0FBQTFFLE9BQUE2SixFQUVBbkYsS0FBQXVGLEdBQUFMLEVBQUFLLEdBS0EsR0FBQUUsR0FB
QSxNQUFBUCxFQUFBTyxpQkFBQVAsRUFBQU8sa0JBQUEsSUFBQVAsRUFBQVEsV0FPQSxPQUxBMUYs
TUFBQTJGLG1CQURBRixFQUNBak0sRUFBQXFHLGdCQUVBckcsRUFBQW9HLGlCQUVBSSxLQUFBNEYs
cUJBQUFwTSxFQUFBb0csaUJBQ0FJLEtBeEZBLEdBQUFtRCxHQUFBck0sRUFBQSxHQUVBc00sRUFB
QXRNLEVBQUEsSUFFQTBDLEVBQUExQyxFQUFBLEdBTUErTyxHQUxBL08sRUFBQSxJQUtBLHFJQU1B
Z1AsR0FDQTdELEtBQUEsS0FDQTNHLE9BQUEsS0FFQXlLLGNBQUF2TSxFQUFBc0csZ0JBQ0FrRyxX
QUFBLEtBQ0FDLFFBQUEsS0FDQUMsV0FBQSxLQUNBQyxVQUFBLFNBQUFDLEdBQ0EsTUFBQUEsR0FB
QUQsV0FBQUUsS0FBQUMsT0FFQWIsaUJBQUEsS0FDQWMsVUFBQSxLQStEQXBELEdBQUE0QixFQUFB
MU0sV0FDQW1PLGVBQUEsV0FDQXhHLEtBQUF5RixrQkFBQSxDQUNBLElBQUFXLEdBQUFwRyxLQUFB
a0YsV0FDQWtCLEtBSUFBLEVBQUFJLGVBQ0FKLEVBQUFJLGlCQUVLLGtCQUFBSixHQUFBVixjQUNM
VSxFQUFBVixhQUFBLEdBRUExRixLQUFBMkYsbUJBQUFuTSxFQUFBcUcsa0JBR0E0RyxnQkFBQSxX
QUNBLEdBQUFMLEdBQUFwRyxLQUFBa0YsV0FDQWtCLEtBSUFBLEVBQUFLLGdCQUNBTCxFQUFBSyxr
QkFFSyxrQkFBQUwsR0FBQU0sZUFNTE4sRUFBQU0sY0FBQSxHQUdBMUcsS0FBQTRGLHFCQUFBcE0s
RUFBQXFHLGtCQVFBOEcsUUFBQSxXQUNBM0csS0FBQTRHLGFBQUFwTixFQUFBcUcsaUJBUUErRyxh
QUFBcE4sRUFBQW9HLGlCQUtBb0UsV0FBQSxXQUNBLEdBQUFxQixHQUFBckYsS0FBQXNGLFlBQUFE
LFNBQ0EsUUFBQUUsS0FBQUYsR0FJQXJGLEtBQUF1RixHQUFBLElBR0EsUUFBQXBPLEdBQUEsRUFB
bUJBLEVBQUEwTyxFQUFBL0wsT0FBdUMzQyxJQUMxRDZJLEtBQUE2RixFQUFBMU8sSUFBQSxRQVVB
NE4sRUFBQU0sVUFBQVMsRUErQkFmLEVBQUE4QixhQUFBLFNBQUFDLEVBQUF6QixHQUNBLEdBQUEw
QixHQUFBL0csS0FFQWdILEVBQUEsWUFDQUEsR0FBQTNPLFVBQUEwTyxFQUFBMU8sU0FDQSxJQUFB
QSxHQUFBLEdBQUEyTyxFQUVBN0QsR0FBQTlLLEVBQUF5TyxFQUFBek8sV0FDQXlPLEVBQUF6TyxZ
QUNBeU8sRUFBQXpPLFVBQUFpTixZQUFBd0IsRUFFQUEsRUFBQXpCLFVBQUFsQyxLQUE4QjRELEVB
QUExQixhQUM5QnlCLEVBQUFELGFBQUFFLEVBQUFGLGFBRUF6RCxFQUFBaUIsYUFBQXlDLEVBQUEx
RCxFQUFBNkQscUJBR0E3RCxFQUFBaUIsYUFBQVUsRUFBQTNCLEVBQUE2RCxvQkFFQS9QLEVBQUFE
LFFBQUE4TixHYmsrQk0sU0FBVTdOLEVBQVFELEVBQVNILEdBRWpDLFljN3JDQSxJQUFBNEcsR0FB
QTVHLEVBQUEsR0FXQW9RLEdBVEFwUSxFQUFBLEdBU0EsU0FBQXFRLEdBQ0EsR0FBQUMsR0FBQXBI
LElBQ0EsSUFBQW9ILEVBQUFDLGFBQUF2TixPQUFBLENBQ0EsR0FBQXdOLEdBQUFGLEVBQUFDLGFB
QUFySixLQUVBLE9BREFvSixHQUFBL1AsS0FBQWlRLEVBQUFILEdBQ0FHLEVBRUEsVUFBQUYsR0FB
QUQsS0FJQUksRUFBQSxTQUFBQyxFQUFBQyxHQUNBLEdBQUFMLEdBQUFwSCxJQUNBLElBQUFvSCxF
QUFBQyxhQUFBdk4sT0FBQSxDQUNBLEdBQUF3TixHQUFBRixFQUFBQyxhQUFBckosS0FFQSxPQURB
b0osR0FBQS9QLEtBQUFpUSxFQUFBRSxFQUFBQyxHQUNBSCxFQUVBLFVBQUFGLEdBQUFJLEVBQUFD
LElBSUFDLEVBQUEsU0FBQUYsRUFBQUMsRUFBQUUsR0FDQSxHQUFBUCxHQUFBcEgsSUFDQSxJQUFB
b0gsRUFBQUMsYUFBQXZOLE9BQUEsQ0FDQSxHQUFBd04sR0FBQUYsRUFBQUMsYUFBQXJKLEtBRUEs
T0FEQW9KLEdBQUEvUCxLQUFBaVEsRUFBQUUsRUFBQUMsRUFBQUUsR0FDQUwsRUFFQSxVQUFBRixH
QUFBSSxFQUFBQyxFQUFBRSxJQUlBVixFQUFBLFNBQUFPLEVBQUFDLEVBQUFFLEVBQUFDLEdBQ0Es
R0FBQVIsR0FBQXBILElBQ0EsSUFBQW9ILEVBQUFDLGFBQUF2TixPQUFBLENBQ0EsR0FBQXdOLEdB
QUFGLEVBQUFDLGFBQUFySixLQUVBLE9BREFvSixHQUFBL1AsS0FBQWlRLEVBQUFFLEVBQUFDLEVB
QUFFLEVBQUFDLEdBQ0FOLEVBRUEsVUFBQUYsR0FBQUksRUFBQUMsRUFBQUUsRUFBQUMsSUFJQUMs
RUFBQSxTQUFBUCxHQUNBLEdBQUFGLEdBQUFwSCxJQUNBc0gsYUFBQUYsSUFBQTFKLEVBQUEsTUFD
QTRKLEVBQUF0RCxhQUNBb0QsRUFBQUMsYUFBQXZOLE9BQUFzTixFQUFBVSxVQUNBVixFQUFBQyxh
QUFBeEosS0FBQXlKLElBS0FTLEVBQUFiLEVBV0E3QyxFQUFBLFNBQUEyRCxFQUFBQyxHQUdBLEdB
QUFDLEdBQUFGLENBT0EsT0FOQUUsR0FBQWIsZ0JBQ0FhLEVBQUF0SCxVQUFBcUgsR0FBQUYsRUFD
QUcsRUFBQUosV0FDQUksRUFBQUosU0FuQkEsSUFxQkFJLEVBQUFqRSxRQUFBNEQsRUFDQUssR0FH
QTlFLEdBQ0FpQixlQUNBNkMsb0JBQ0FLLG9CQUNBRyxzQkFDQVQscUJBR0EvUCxHQUFBRCxRQUFB
bU0sR2Qrc0NNLFNBQVVsTSxFQUFRRCxFQUFTSCxHQUVqQyxZZW56Q0EsSUFBQXFNLEdBQUFyTSxF
QUFBLEdBRUFxUixFQUFBclIsRUFBQSxJQUNBc1IsRUFBQXRSLEVBQUEsS0FDQXVSLEVBQUF2UixF
QUFBLEtBQ0F3UixFQUFBeFIsRUFBQSxJQUNBeVIsRUFBQXpSLEVBQUEsS0FDQTBSLEVBQUExUixF
QUFBLEtBRUEyUixFQUFBM1IsRUFBQSxLQUNBNFIsRUFBQTVSLEVBQUEsS0FFQWlJLEVBQUF1SixF
QUFBdkosY0FDQTRKLEVBQUFMLEVBQUFLLGNBQ0FDLEVBQUFOLEVBQUFNLGFBWUFDLEVBQUExRixF
QUNBMkYsRUFBQSxTQUFBQyxHQUNBLE1BQUFBLElBbUJBQyxHQUdBQyxVQUNBbk8sSUFBQXNOLEVB
QUF0TixJQUNBSSxRQUFBa04sRUFBQWxOLFFBQ0FnTyxNQUFBZCxFQUFBYyxNQUNBQyxRQUFBZixF
QUFBZSxRQUNBQyxLQUFBVixHQUdBVyxVQUFBbEIsRUFBQWtCLFVBQ0FDLGNBQUFuQixFQUFBbUIs
Y0FFQXZLLGdCQUNBNkosZUFDQVcsZUFBQWpCLEVBQUFpQixlQUlBQyxVQUFBakIsRUFDQWtCLFlB
QUFoQixFQUNBRSxnQkFDQUcsY0FJQVksSUFBQXJCLEVBRUFzQixRQUFBbkIsRUFHQUssV0F1Q0Ez
UixHQUFBRCxRQUFBK1IsR2ZvMENNLFNBQVU5UixFQUFRRCxFQUFTSCxHQUVqQyxZZ0J6NkNBLFNB
QUE4UyxHQUFBQyxHQVNBLFdBQUEzUSxLQUFBMlEsRUFBQUMsSUFHQSxRQUFBQyxHQUFBRixHQVNB
LFdBQUEzUSxLQUFBMlEsRUFBQWxPLElBeENBLEdBQUF3SCxHQUFBck0sRUFBQSxHQUVBK04sRUFB
QS9OLEVBQUEsSUFJQXdCLEdBRkF4QixFQUFBLEdBQ0FBLEVBQUEsSUFDQWMsT0FBQVMsVUFBQUMs
Z0JBRUEwUixFQUFBbFQsRUFBQSxJQUVBbVQsR0FDQXRPLEtBQUEsRUFDQW1PLEtBQUEsRUFDQUks
UUFBQSxFQUNBQyxVQUFBLEdBNkVBN0IsRUFBQSxTQUFBckcsRUFBQXRHLEVBQUFtTyxFQUFBTSxF
QUFBN08sRUFBQThPLEVBQUFDLEdBQ0EsR0FBQUMsSUFFQUMsU0FBQVIsRUFHQS9ILE9BQ0F0RyxN
QUNBbU8sTUFDQVEsUUFHQUcsT0FBQUosRUErQ0EsT0FBQUUsR0FPQWpDLEdBQUF2SixjQUFBLFNB
QUFrRCxFQUFBNEgsRUFBQTVNLEdBQ0EsR0FBQXNJLEdBR0ErRSxLQUVBM08sRUFBQSxLQUNBbU8s
RUFBQSxJQUlBLFVBQUFELEVBQUEsQ0FDQUQsRUFBQUMsS0FDQUMsRUFBQUQsRUFBQUMsS0FFQUMs
RUFBQUYsS0FDQWxPLEVBQUEsR0FBQWtPLEVBQUFsTyxTQUdBekMsS0FBQTJRLEVBQUFLLE9BQUEs
S0FBQUwsRUFBQUssV0FDQWhSLEtBQUEyUSxFQUFBTSxTQUFBLEtBQUFOLEVBQUFNLFFBRUEsS0FB
QTVFLElBQUFzRSxHQUNBdlIsRUFBQWpCLEtBQUF3UyxFQUFBdEUsS0FBQTBFLEVBQUEzUixlQUFB
aU4sS0FDQStFLEVBQUEvRSxHQUFBc0UsRUFBQXRFLElBT0EsR0FBQW1GLEdBQUE3USxVQUFBQyxP
QUFBLENBQ0EsUUFBQTRRLEVBQ0FKLEVBQUFyTixlQUNHLElBQUF5TixFQUFBLEdBRUgsT0FEQUMs
R0FBQUMsTUFBQUYsR0FDQXZULEVBQUEsRUFBbUJBLEVBQUF1VCxFQUFvQnZULElBQ3ZDd1QsRUFB
QXhULEdBQUEwQyxVQUFBMUMsRUFBQSxFQU9BbVQsR0FBQXJOLFNBQUEwTixFQUlBLEdBQUExSSxL
QUFBNEksYUFBQSxDQUNBLEdBQUFBLEdBQUE1SSxFQUFBNEksWUFDQSxLQUFBdEYsSUFBQXNGLE9B
Q0EzUixLQUFBb1IsRUFBQS9FLEtBQ0ErRSxFQUFBL0UsR0FBQXNGLEVBQUF0RixJQWlCQSxNQUFB
K0MsR0FBQXJHLEVBQUF0RyxFQUFBbU8sRUFBQU0sRUFBQTdPLEVBQUFzSixFQUFBQyxRQUFBd0Ys
SUFPQWhDLEVBQUFLLGNBQUEsU0FBQTFHLEdBQ0EsR0FBQTZJLEdBQUF4QyxFQUFBdkosY0FBQWdN
LEtBQUEsS0FBQTlJLEVBT0EsT0FEQTZJLEdBQUE3SSxPQUNBNkksR0FHQXhDLEVBQUEwQyxtQkFB
QSxTQUFBQyxFQUFBQyxHQUdBLE1BRkE1QyxHQUFBMkMsRUFBQWhKLEtBQUFpSixFQUFBRCxFQUFB
bkIsSUFBQW1CLEVBQUFFLE1BQUFGLEVBQUFHLFFBQUFILEVBQUFSLE9BQUFRLEVBQUFYLFFBU0Fo
QyxFQUFBTSxhQUFBLFNBQUEyQixFQUFBVixFQUFBNU0sR0FDQSxHQUFBc0ksR0FHQStFLEVBQUFu
SCxLQUF3Qm9ILEVBQUFELE9BR3hCM08sRUFBQTRPLEVBQUE1TyxJQUNBbU8sRUFBQVMsRUFBQVQs
SUFTQU8sR0FQQUUsRUFBQVksTUFJQVosRUFBQWEsUUFHQWIsRUFBQUUsT0FFQSxVQUFBWixFQUFB
LENBQ0FELEVBQUFDLEtBRUFDLEVBQUFELEVBQUFDLElBQ0FPLEVBQUF4RixFQUFBQyxTQUVBaUYs
RUFBQUYsS0FDQWxPLEVBQUEsR0FBQWtPLEVBQUFsTyxJQUlBLElBQUFrUCxFQUNBTixHQUFBdEks
TUFBQXNJLEVBQUF0SSxLQUFBNEksZUFDQUEsRUFBQU4sRUFBQXRJLEtBQUE0SSxhQUVBLEtBQUF0
RixJQUFBc0UsR0FDQXZSLEVBQUFqQixLQUFBd1MsRUFBQXRFLEtBQUEwRSxFQUFBM1IsZUFBQWlO
LFNBQ0FyTSxLQUFBMlEsRUFBQXRFLFFBQUFyTSxLQUFBMlIsRUFFQVAsRUFBQS9FLEdBQUFzRixF
QUFBdEYsR0FFQStFLEVBQUEvRSxHQUFBc0UsRUFBQXRFLElBUUEsR0FBQW1GLEdBQUE3USxVQUFB
QyxPQUFBLENBQ0EsUUFBQTRRLEVBQ0FKLEVBQUFyTixlQUNHLElBQUF5TixFQUFBLEdBRUgsT0FE
QUMsR0FBQUMsTUFBQUYsR0FDQXZULEVBQUEsRUFBbUJBLEVBQUF1VCxFQUFvQnZULElBQ3ZDd1Qs
RUFBQXhULEdBQUEwQyxVQUFBMUMsRUFBQSxFQUVBbVQsR0FBQXJOLFNBQUEwTixFQUdBLE1BQUFy
QyxHQUFBaUMsRUFBQXRJLEtBQUF0RyxFQUFBbU8sRUFBQU0sRUFBQTdPLEVBQUE4TyxFQUFBQyxJ
QVVBaEMsRUFBQWlCLGVBQUEsU0FBQXBSLEdBQ0EsdUJBQUFBLElBQUEsT0FBQUEsS0FBQXFTLFdB
QUFSLEdBR0E5UyxFQUFBRCxRQUFBcVIsR2hCNjhDTSxTQUFVcFIsRUFBUUQsRUFBU0gsR0FFakMs
WWlCbHhEQSxTQUFBdVUsR0FBQUMsRUFBQUMsR0FDQSxPQUFBRCxFQUFBQyxPQUxBLEdBQUE3TixH
QUFBNUcsRUFBQSxHQVFBMFUsR0FOQTFVLEVBQUEsSUFXQTJVLGtCQUFBLEVBQ0FDLGtCQUFBLEVB
Q0FDLGtCQUFBLEVBQ0FDLDJCQUFBLEdBQ0FDLDZCQUFBLEdBOEJBQyx3QkFBQSxTQUFBQyxHQUNB
LEdBQUFDLEdBQUFSLEVBQ0FTLEVBQUFGLEVBQUFFLGVBQ0FDLEVBQUFILEVBQUFHLDJCQUNBQyxF
QUFBSixFQUFBSSxzQkFDQUMsRUFBQUwsRUFBQUsscUJBQ0FDLEVBQUFOLEVBQUFNLHNCQUVBTixH
QUFBTyxtQkFDQWxPLEVBQUFtTyw0QkFBQTFPLEtBQUFrTyxFQUFBTyxrQkFHQSxRQUFBL0csS0FB
QTBHLEdBQUEsQ0FDQTdOLEVBQUFvTyxXQUFBbFUsZUFBQWlOLElBQUE3SCxFQUFBLEtBQUE2SCxF
QUVBLElBQUFrSCxHQUFBbEgsRUFBQW1ILGNBQ0FDLEVBQUFWLEVBQUExRyxHQUVBcUgsR0FDQUMs
Y0FBQUosRUFDQUssbUJBQUEsS0FDQUMsYUFBQXhILEVBQ0F5SCxlQUFBLEtBRUFDLGdCQUFBNUIs
RUFBQXNCLEVBQUFYLEVBQUFQLG1CQUNBeUIsZ0JBQUE3QixFQUFBc0IsRUFBQVgsRUFBQU4sbUJB
Q0F5QixnQkFBQTlCLEVBQUFzQixFQUFBWCxFQUFBTCxtQkFDQXlCLHdCQUFBL0IsRUFBQXNCLEVB
QUFYLEVBQUFKLDRCQUNBeUIsMEJBQUFoQyxFQUFBc0IsRUFBQVgsRUFBQUgsOEJBUUEsSUFOQWUs
RUFBQU0sZ0JBQUFOLEVBQUFPLGdCQUFBUCxFQUFBUywyQkFBQSxHQUFBM1AsRUFBQSxLQUFBNkgs
R0FNQTRHLEVBQUE3VCxlQUFBaU4sR0FBQSxDQUNBLEdBQUFzSCxHQUFBVixFQUFBNUcsRUFDQXFI
LEdBQUFDLGdCQU1BWCxFQUFBNVQsZUFBQWlOLEtBQ0FxSCxFQUFBRSxtQkFBQVosRUFBQTNHLElB
R0E2RyxFQUFBOVQsZUFBQWlOLEtBQ0FxSCxFQUFBRyxhQUFBWCxFQUFBN0csSUFHQThHLEVBQUEv
VCxlQUFBaU4sS0FDQXFILEVBQUFJLGVBQUFYLEVBQUE5RyxJQUdBbkgsRUFBQW9PLFdBQUFqSCxH
QUFBcUgsTUFNQVUsRUFBQSxnTEFnQkFsUCxHQUNBRSxrQkFBQSxlQUNBaVAsb0JBQUEsaUJBRUFE
LDRCQUNBRSxvQkFBQUYsRUFBQSwrQ0E4QkFkLGNBV0FpQix3QkFBNkYsS0FLN0ZsQiwrQkFNQUQs
a0JBQUEsU0FBQU8sR0FDQSxPQUFBMVYsR0FBQSxFQUFtQkEsRUFBQWlILEVBQUFtTyw0QkFBQXpT
LE9BQW9EM0MsSUFBQSxDQUV2RSxJQUFBdVcsRUFEQXRQLEVBQUFtTyw0QkFBQXBWLElBQ0EwVixH
QUNBLFNBR0EsVUFHQWpJLFVBQUE0RyxFQUdBdFUsR0FBQUQsUUFBQW1ILEdqQnV5RE0sU0FBVWxI
LEVBQVFELEVBQVNILEdBRWpDLFlrQm4rREEsU0FBQTZXLEtBQ0FDLEVBQUFELFdBQUEzTixVQUFB
Z0MsaUJBVkEsR0FBQTRMLEdBQUE5VyxFQUFBLEtBYUF3TCxHQVpBeEwsRUFBQSxHQUVBQSxFQUFB
LElBc0JBK1csZUFBQSxTQUFBQyxFQUFBek0sRUFBQTBNLEVBQUFDLEVBQUFoTCxFQUFBaUwsR0FP
QSxHQUFBQyxHQUFBSixFQUFBRCxlQUFBeE0sRUFBQTBNLEVBQUFDLEVBQUFoTCxFQUFBaUwsRUFT
QSxPQVJBSCxHQUFBOUwsaUJBQUEsTUFBQThMLEVBQUE5TCxnQkFBQThILEtBQ0F6SSxFQUFBOE0s
cUJBQUF6TCxRQUFBaUwsRUFBQUcsR0FPQUksR0FPQUUsWUFBQSxTQUFBTixHQUNBLE1BQUFBLEdB
QUFNLGVBU0FDLGlCQUFBLFNBQUFQLEVBQUFRLEdBTUFWLEVBQUFXLFdBQUFULElBQUE5TCxpQkFD
QThMLEVBQUFPLGlCQUFBQyxJQWlCQUUsaUJBQUEsU0FBQVYsRUFBQVcsRUFBQXBOLEVBQUEyQixH
QUNBLEdBQUEwTCxHQUFBWixFQUFBOUwsZUFFQSxJQUFBeU0sSUFBQUMsR0FBQTFMLElBQUE4SyxF
QUFBYSxTQUFBLENBb0JBLEdBQUFDLEdBQUFoQixFQUFBaUIsaUJBQUFILEVBQUFELEVBRUFHLElB
Q0FoQixFQUFBVyxXQUFBVCxFQUFBWSxHQUdBWixFQUFBVSxpQkFBQUMsRUFBQXBOLEVBQUEyQixH
QUVBNEwsR0FBQWQsRUFBQTlMLGlCQUFBLE1BQUE4TCxFQUFBOUwsZ0JBQUE4SCxLQUNBekksRUFB
QThNLHFCQUFBekwsUUFBQWlMLEVBQUFHLEtBaUJBdkwseUJBQUEsU0FBQXVMLEVBQUF6TSxFQUFB
SSxHQUNBcU0sRUFBQWhMLHFCQUFBckIsR0FXQXFNLEVBQUF2TCx5QkFBQWxCLEtBU0FuSyxHQUFB
RCxRQUFBcUwsR2xCNi9ETSxTQUFVcEwsRUFBUUQsRUFBU0gsR0FFakMsWW1Cam9FQSxTQUFBZ1ks
R0FBQUMsR0FDQSxHQUFBQyxFQUFBLENBR0EsR0FBQW5ULEdBQUFrVCxFQUFBbFQsS0FDQW9CLEVB
QUE4UixFQUFBOVIsUUFDQSxJQUFBQSxFQUFBbkQsT0FDQSxPQUFBM0MsR0FBQSxFQUFtQkEsRUFB
QThGLEVBQUFuRCxPQUFxQjNDLElBQ3hDOFgsRUFBQXBULEVBQUFvQixFQUFBOUYsR0FBQSxVQUVH
LE9BQUE0WCxFQUFBRyxLQUNIQyxFQUFBdFQsRUFBQWtULEVBQUFHLE1BQ0csTUFBQUgsRUFBQUss
TUFDSEMsRUFBQXhULEVBQUFrVCxFQUFBSyxPQW9CQSxRQUFBRSxHQUFBQyxFQUFBQyxHQUNBRCxF
QUFBelIsV0FBQTJSLGFBQUFELEVBQUEzVCxLQUFBMFQsR0FDQVQsRUFBQVUsR0FHQSxRQUFBRSxH
QUFBQyxFQUFBQyxHQUNBWixFQUNBVyxFQUFBMVMsU0FBQVksS0FBQStSLEdBRUFELEVBQUE5VCxL
QUFBZ1UsWUFBQUQsRUFBQS9ULE1BSUEsUUFBQWlVLEdBQUFmLEVBQUFHLEdBQ0FGLEVBQ0FELEVB
QUFHLE9BRUFDLEVBQUFKLEVBQUFsVCxLQUFBcVQsR0FJQSxRQUFBYSxHQUFBaEIsRUFBQUssR0FD
QUosRUFDQUQsRUFBQUssT0FFQUMsRUFBQU4sRUFBQWxULEtBQUF1VCxHQUlBLFFBQUEzUSxLQUNB
LE1BQUF1QixNQUFBbkUsS0FBQW1VLFNBR0EsUUFBQUMsR0FBQXBVLEdBQ0EsT0FDQUEsT0FDQW9C
LFlBQ0FpUyxLQUFBLEtBQ0FFLEtBQUEsS0FDQTNRLFlBOUZBLEdBQUF5UixHQUFBcFosRUFBQSxJ
QUNBcVksRUFBQXJZLEVBQUEsSUFFQXFaLEVBQUFyWixFQUFBLElBQ0F1WSxFQUFBdlksRUFBQSxJ
QWdCQWtZLEVBQUEsb0JBQUFsUSxXQUFBLGlCQUFBQSxVQUFBc1IsY0FBQSxvQkFBQUMsWUFBQSxp
QkFBQUEsV0FBQUMsV0FBQSxhQUFBQyxLQUFBRixVQUFBQyxXQW1CQXJCLEVBQUFrQixFQUFBLFNB
QUFyUyxFQUFBaVIsRUFBQXlCLEdBaENBLEtBdUNBekIsRUFBQWxULEtBQUFFLFVBeENBLElBd0NB
Z1QsRUFBQWxULEtBQUFFLFVBQUEsV0FBQWdULEVBQUFsVCxLQUFBbVUsU0FBQXRELGdCQUFBLE1B
QUFxQyxFQUFBbFQsS0FBQTRVLGNBQUExQixFQUFBbFQsS0FBQTRVLGVBQUFQLEVBQUFoQixPQUNB
SixFQUFBQyxHQUNBalIsRUFBQTRTLGFBQUEzQixFQUFBbFQsS0FBQTJVLEtBRUExUyxFQUFBNFMs
YUFBQTNCLEVBQUFsVCxLQUFBMlUsR0FDQTFCLEVBQUFDLEtBK0NBa0IsR0FBQWhCLG1CQUNBZ0Is
RUFBQVgsdUJBQ0FXLEVBQUFQLGFBQ0FPLEVBQUFILFlBQ0FHLEVBQUFGLFlBRUE3WSxFQUFBRCxR
QUFBZ1osR25Cd3FFTSxTQUFVL1ksRUFBUUQsRUFBU0gsR0FFakMsWW9CM3dFQSxTQUFBNEMsR0FB
QUMsR0FLQSxPQUpBQyxHQUFBQyxVQUFBQyxPQUFBLEVBRUFDLEVBQUEseUJBQUFKLEVBQUEsNkVB
QW9EQSxFQUVwREssRUFBQSxFQUFzQkEsRUFBQUosRUFBbUJJLElBQ3pDRCxHQUFBLFdBQUFFLG1C
QUFBSixVQUFBRyxFQUFBLEdBR0FELElBQUEsZ0hBRUEsSUFBQWQsR0FBQSxHQUFBRSxPQUFBWSxF
QUlBLE1BSEFkLEdBQUF4QixLQUFBLHNCQUNBd0IsRUFBQU0sWUFBQSxFQUVBTixFQUdBL0IsRUFB
QUQsUUFBQXlDLEdwQm15RU0sU0FBVXhDLEVBQVFELEVBQVNILEdBRWpDLFlxQmp6RUEsU0FBQTZa
LEdBQUFuVSxFQUFBNEosRUFBQXdLLEdBQ0EsR0FBQUMsR0FBQXpLLEVBQUFwQixlQUFBOEwsd0JB
QUFGLEVBQ0EsT0FBQUcsR0FBQXZVLEVBQUFxVSxHQVNBLFFBQUFHLEdBQUF4VSxFQUFBeVUsRUFB
QTdLLEdBSUEsR0FBQThLLEdBQUFQLEVBQUFuVSxFQUFBNEosRUFBQTZLLEVBQ0FDLEtBQ0E5SyxF
QUFBK0ssbUJBQUFDLEVBQUFoTCxFQUFBK0ssbUJBQUFELEdBQ0E5SyxFQUFBaUwsbUJBQUFELEVB
QUFoTCxFQUFBaUwsbUJBQUE3VSxJQVdBLFFBQUE4VSxHQUFBbEwsR0FDQUEsS0FBQXBCLGVBQUE4
TCx5QkFDQVMsRUFBQUMsaUJBQUFwTCxFQUFBaEIsWUFBQTRMLEVBQUE1SyxHQU9BLFFBQUFxTCxH
QUFBckwsR0FDQSxHQUFBQSxLQUFBcEIsZUFBQThMLHdCQUFBLENBQ0EsR0FBQTdMLEdBQUFtQixF
QUFBaEIsWUFDQXNNLEVBQUF6TSxFQUFBc00sRUFBQUksa0JBQUExTSxHQUFBLElBQ0FzTSxHQUFB
QyxpQkFBQUUsRUFBQVYsRUFBQTVLLElBU0EsUUFBQXdMLEdBQUFwVixFQUFBcVYsRUFBQXpMLEdB
Q0EsR0FBQUEsS0FBQXBCLGVBQUE2TCxpQkFBQSxDQUNBLEdBQUFBLEdBQUF6SyxFQUFBcEIsZUFB
QTZMLGlCQUNBSyxFQUFBSCxFQUFBdlUsRUFBQXFVLEVBQ0FLLEtBQ0E5SyxFQUFBK0ssbUJBQUFD
LEVBQUFoTCxFQUFBK0ssbUJBQUFELEdBQ0E5SyxFQUFBaUwsbUJBQUFELEVBQUFoTCxFQUFBaUws
bUJBQUE3VSxLQVVBLFFBQUFzVixHQUFBMUwsR0FDQUEsS0FBQXBCLGVBQUE2TCxrQkFDQWUsRUFB
QXhMLEVBQUFoQixZQUFBLEtBQUFnQixHQUlBLFFBQUEyTCxHQUFBQyxHQUNBQyxFQUFBRCxFQUFB
VixHQUdBLFFBQUFZLEdBQUFGLEdBQ0FDLEVBQUFELEVBQUFQLEdBR0EsUUFBQVUsR0FBQUMsRUFB
QUMsRUFBQTdXLEVBQUFFLEdBQ0E2VixFQUFBZSxtQkFBQTlXLEVBQUFFLEVBQUFrVyxFQUFBUSxF
QUFBQyxHQUdBLFFBQUFFLEdBQUFQLEdBQ0FDLEVBQUFELEVBQUFGLEdBbkdBLEdBQUFVLEdBQUEx
YixFQUFBLElBQ0F5YSxFQUFBemEsRUFBQSxJQUVBc2EsRUFBQXRhLEVBQUEsSUFDQW1iLEVBQUFu
YixFQUFBLElBR0FpYSxHQUZBamEsRUFBQSxHQUVBMGIsRUFBQXpCLGFBMEdBMEIsR0FDQVYsK0JB
Q0FHLHlDQUNBSyw2QkFDQUosaUNBR0FqYixHQUFBRCxRQUFBd2IsR3JCKzBFTSxTQUFVdmIsRUFB
UUQsRUFBU0gsR0FFakMsWXNCdjVFQSxTQUFBNGIsR0FBQUMsR0FDQSxpQkFBQUEsR0FBQSxVQUFB
QSxHQUFBLFdBQUFBLEdBQUEsYUFBQUEsRUFHQSxRQUFBQyxHQUFBbmIsRUFBQXdLLEVBQUFxSSxH
QUNBLE9BQUE3UyxHQUNBLGNBQ0EscUJBQ0Esb0JBQ0EsMkJBQ0Esa0JBQ0EseUJBQ0Esa0JBQ0Es
eUJBQ0EsZ0JBQ0EsdUJBQ0EsU0FBQTZTLEVBQUF1SSxXQUFBSCxFQUFBelEsR0FDQSxTQUNBLFVB
cEVBLEdBQUF2RSxHQUFBNUcsRUFBQSxHQUVBZ2MsRUFBQWhjLEVBQUEsSUFDQXlhLEVBQUF6YSxF
QUFBLElBQ0FpYyxFQUFBamMsRUFBQSxJQUVBc2EsRUFBQXRhLEVBQUEsSUFDQW1iLEVBQUFuYixF
QUFBLElBTUFrYyxHQUxBbGMsRUFBQSxPQVdBbWMsRUFBQSxLQVNBQyxFQUFBLFNBQUE5TSxFQUFB
K00sR0FDQS9NLElBQ0FtTCxFQUFBNkIseUJBQUFoTixFQUFBK00sR0FFQS9NLEVBQUFRLGdCQUNB
UixFQUFBZCxZQUFBckIsUUFBQW1DLEtBSUFpTixFQUFBLFNBQUF2YSxHQUNBLE1BQUFvYSxHQUFB
cGEsR0FBQSxJQUVBd2EsRUFBQSxTQUFBeGEsR0FDQSxNQUFBb2EsR0FBQXBhLEdBQUEsSUFHQXlh
LEVBQUEsU0FBQS9XLEdBR0EsVUFBQUEsRUFBQWdYLGFBK0NBaEIsR0FJQTVOLFdBS0E2Tyx1QkFB
QVgsRUFBQVcsdUJBS0FDLHlCQUFBWixFQUFBWSwwQkFVQUMsWUFBQSxTQUFBblgsRUFBQXFVLEVB
QUFLLEdBQ0EsbUJBQUFBLElBQUF4VCxFQUFBLEtBQUFtVCxRQUFBSyxHQUVBLElBQUF2VixHQUFB
NFgsRUFBQS9XLElBQ0F3VyxFQUFBbkMsS0FBQW1DLEVBQUFuQyxRQUNBbFYsR0FBQXVWLENBRUEs
SUFBQTBDLEdBQUFkLEVBQUFlLHdCQUFBaEQsRUFDQStDLE1BQUFFLGdCQUNBRixFQUFBRSxlQUFB
dFgsRUFBQXFVLEVBQUFLLElBU0FILFlBQUEsU0FBQXZVLEVBQUFxVSxHQUdBLEdBQUFrRCxHQUFB
ZixFQUFBbkMsRUFDQSxJQUFBK0IsRUFBQS9CLEVBQUFyVSxFQUFBd0YsZ0JBQUFDLEtBQUF6RixF
QUFBd0YsZ0JBQUFzSSxPQUNBLFdBRUEsSUFBQTNPLEdBQUE0WCxFQUFBL1csRUFDQSxPQUFBdVgs
TUFBQXBZLElBU0FxWSxlQUFBLFNBQUF4WCxFQUFBcVUsR0FDQSxHQUFBK0MsR0FBQWQsRUFBQWUs
d0JBQUFoRCxFQUNBK0MsTUFBQUssb0JBQ0FMLEVBQUFLLG1CQUFBelgsRUFBQXFVLEVBR0EsSUFB
QWtELEdBQUFmLEVBQUFuQyxFQUVBLElBQUFrRCxFQUFBLE9BRUFBLEdBREFSLEVBQUEvVyxNQVVB
MFgsbUJBQUEsU0FBQTFYLEdBQ0EsR0FBQWIsR0FBQTRYLEVBQUEvVyxFQUNBLFFBQUFxVSxLQUFB
bUMsR0FDQSxHQUFBQSxFQUFBMWEsZUFBQXVZLElBSUFtQyxFQUFBbkMsR0FBQWxWLEdBQUEsQ0FJ
QSxHQUFBaVksR0FBQWQsRUFBQWUsd0JBQUFoRCxFQUNBK0MsTUFBQUssb0JBQ0FMLEVBQUFLLG1C
QUFBelgsRUFBQXFVLFNBR0FtQyxHQUFBbkMsR0FBQWxWLEtBV0F3WSxjQUFBLFNBQUFDLEVBQUFu
UCxFQUFBQyxFQUFBQyxHQUdBLE9BRkE2TSxHQUNBcUMsRUFBQXZCLEVBQUF1QixRQUNBbGQsRUFB
QSxFQUFtQkEsRUFBQWtkLEVBQUF2YSxPQUFvQjNDLElBQUEsQ0FFdkMsR0FBQW1kLEdBQUFELEVB
QUFsZCxFQUNBLElBQUFtZCxFQUFBLENBQ0EsR0FBQUMsR0FBQUQsRUFBQUgsY0FBQUMsRUFBQW5Q
LEVBQUFDLEVBQUFDLEVBQ0FvUCxLQUNBdkMsRUFBQVosRUFBQVksRUFBQXVDLEtBSUEsTUFBQXZD
LElBVUF3QyxjQUFBLFNBQUF4QyxHQUNBQSxJQUNBaUIsRUFBQTdCLEVBQUE2QixFQUFBakIsS0FT
QXlDLGtCQUFBLFNBQUF0QixHQUdBLEdBQUF1QixHQUFBekIsQ0FDQUEsR0FBQSxLQUNBRSxFQUNB
bEIsRUFBQXlDLEVBQUFyQixHQUVBcEIsRUFBQXlDLEVBQUFwQixHQUVBTCxHQUFBdlYsRUFBQSxN
QUVBcVYsRUFBQTRCLHNCQU1BQyxRQUFBLFdBQ0E1QixNQUdBNkIsa0JBQUEsV0FDQSxNQUFBN0Is
SUFJQTliLEdBQUFELFFBQUF1YixHdEIwOUVNLFNBQVV0YixFQUFRRCxFQUFTSCxHQUVqQyxZdUJ6
ckZBLFNBQUFnZSxHQUFBOVAsRUFBQStQLEVBQUE3UCxFQUFBQyxHQUNBLE1BQUFKLEdBQUExTixL
QUFBMkksS0FBQWdGLEVBQUErUCxFQUFBN1AsRUFBQUMsR0F4Q0EsR0FBQUosR0FBQWpPLEVBQUEs
SUFFQWtlLEVBQUFsZSxFQUFBLElBTUFtZSxHQUNBQyxLQUFBLFNBQUE5TyxHQUNBLEdBQUFBLEVB
QUE4TyxLQUNBLE1BQUE5TyxHQUFBOE8sSUFHQSxJQUFBNVosR0FBQTBaLEVBQUE1TyxFQUNBLElB
QUE5SyxFQUFBdUQsU0FBQXZELEVBRUEsTUFBQUEsRUFHQSxJQUFBNlosR0FBQTdaLEVBQUE4Wixh
QUVBLE9BQUFELEdBQ0FBLEVBQUFFLGFBQUFGLEVBQUFHLGFBRUF6VyxRQUdBMFcsT0FBQSxTQUFB
blAsR0FDQSxNQUFBQSxHQUFBbVAsUUFBQSxHQWNBeFEsR0FBQThCLGFBQUFpTyxFQUFBRyxHQUVB
L2QsRUFBQUQsUUFBQTZkLEd2Qml2Rk0sU0FBVTVkLEVBQVFELEVBQVNILEdBRWpDLFl3QnZ4RkEs
SUFBQTBlLElBTUFDLE9BQUEsU0FBQTlaLEdBQ0FBLEVBQUErWiwyQkFBQXhjLElBR0FsQixJQUFB
LFNBQUEyRCxHQUNBLE1BQUFBLEdBQUErWix3QkFHQUMsSUFBQSxTQUFBaGEsR0FDQSxXQUFBekMs
S0FBQXlDLEVBQUErWix3QkFHQUUsSUFBQSxTQUFBamEsRUFBQTJQLEdBQ0EzUCxFQUFBK1osdUJB
QUFwSyxHQUlBcFUsR0FBQUQsUUFBQXVlLEd4Qml6Rk0sU0FBVXRlLEVBQVFELEVBQVNILEdBRWpD
LFl5Qm4xRkEsSUFBQStlLEtBTUEzZSxHQUFBRCxRQUFBNGUsR3pCbzJGTSxTQUFVM2UsRUFBUUQs
RUFBU0gsR0FFakMsWTBCMzJGQSxJQUFBNEcsR0FBQTVHLEVBQUEsR0FJQWdmLEdBRkFoZixFQUFB
LE9BaUVBaWYsR0FRQXZWLHdCQUFBLFdBQ0FSLEtBQUFnVyxvQkFBQWhXLEtBQUErRCx5QkFDQS9E
LEtBQUFpVyxnQkFDQWpXLEtBQUFpVyxnQkFBQW5jLE9BQUEsRUFFQWtHLEtBQUFpVyxtQkFFQWpX
LEtBQUFrVyxrQkFBQSxHQUdBQSxrQkFBQSxFQU1BblMsdUJBQUEsS0FFQW9TLGdCQUFBLFdBQ0Es
UUFBQW5XLEtBQUFrVyxrQkFzQkFoUyxRQUFBLFNBQUFDLEVBQUFDLEVBQUF4TCxFQUFBQyxFQUFB
dEIsRUFBQUMsRUFBQXNCLEVBQUFDLEdBRUFpSCxLQUFBbVcsbUJBQUF6WSxFQUFBLEtBQ0EsSUFB
QTBZLEdBQ0FDLENBQ0EsS0FDQXJXLEtBQUFrVyxrQkFBQSxFQUtBRSxHQUFBLEVBQ0FwVyxLQUFB
c1csY0FBQSxHQUNBRCxFQUFBbFMsRUFBQTlNLEtBQUErTSxFQUFBeEwsRUFBQUMsRUFBQXRCLEVB
QUFDLEVBQUFzQixFQUFBQyxHQUNBcWQsR0FBQSxFQUNLLFFBQ0wsSUFDQSxHQUFBQSxFQUdBLElB
Q0FwVyxLQUFBdVcsU0FBQSxHQUNXLE1BQUFsYixRQUlYMkUsTUFBQXVXLFNBQUEsR0FFTyxRQUNQ
dlcsS0FBQWtXLGtCQUFBLEdBR0EsTUFBQUcsSUFHQUMsY0FBQSxTQUFBRSxHQUVBLE9BREFSLEdB
QUFoVyxLQUFBZ1csb0JBQ0E3ZSxFQUFBcWYsRUFBNEJyZixFQUFBNmUsRUFBQWxjLE9BQWdDM0Ms
SUFBQSxDQUM1RCxHQUFBc2YsR0FBQVQsRUFBQTdlLEVBQ0EsS0FLQTZJLEtBQUFpVyxnQkFBQTll
LEdBQUEyZSxFQUNBOVYsS0FBQWlXLGdCQUFBOWUsR0FBQXNmLEVBQUFsVCxXQUFBa1QsRUFBQWxU
LFdBQUFsTSxLQUFBMkksTUFBQSxLQUNPLFFBQ1AsR0FBQUEsS0FBQWlXLGdCQUFBOWUsS0FBQTJl
LEVBSUEsSUFDQTlWLEtBQUFzVyxjQUFBbmYsRUFBQSxHQUNXLE1BQUFrRSxRQVlYa2IsU0FBQSxT
QUFBQyxHQUNBeFcsS0FBQW1XLG1CQUFBelksRUFBQSxLQUVBLFFBREFzWSxHQUFBaFcsS0FBQWdX
LG9CQUNBN2UsRUFBQXFmLEVBQTRCcmYsRUFBQTZlLEVBQUFsYyxPQUFnQzNDLElBQUEsQ0FDNUQs
R0FFQWlmLEdBRkFLLEVBQUFULEVBQUE3ZSxHQUNBdWYsRUFBQTFXLEtBQUFpVyxnQkFBQTllLEVB
RUEsS0FLQWlmLEdBQUEsRUFDQU0sSUFBQVosR0FBQVcsRUFBQWpULE9BQ0FpVCxFQUFBalQsTUFB
QW5NLEtBQUEySSxLQUFBMFcsR0FFQU4sR0FBQSxFQUNPLFFBQ1AsR0FBQUEsRUFJQSxJQUNBcFcs
S0FBQXVXLFNBQUFwZixFQUFBLEdBQ1csTUFBQTJCLE1BSVhrSCxLQUFBaVcsZ0JBQUFuYyxPQUFB
LEdBSUE1QyxHQUFBRCxRQUFBOGUsRzFCNjNGTSxTQUFVN2UsRUFBUUQsRUFBU0gsR0FFakMsWTJC
amlHQSxTQUFBNmYsR0FBQTNSLEVBQUErUCxFQUFBN1AsRUFBQUMsR0FDQSxNQUFBMlAsR0FBQXpk
LEtBQUEySSxLQUFBZ0YsRUFBQStQLEVBQUE3UCxFQUFBQyxHQXJEQSxHQUFBMlAsR0FBQWhlLEVB
QUEsSUFDQThmLEVBQUE5ZixFQUFBLElBRUErZixFQUFBL2YsRUFBQSxJQU1BZ2dCLEdBQ0FDLFFB
QUEsS0FDQUMsUUFBQSxLQUNBQyxRQUFBLEtBQ0FDLFFBQUEsS0FDQUMsUUFBQSxLQUNBQyxTQUFB
LEtBQ0FDLE9BQUEsS0FDQUMsUUFBQSxLQUNBQyxpQkFBQVYsRUFDQVcsT0FBQSxTQUFBcFIsR0FJ
QSxHQUFBb1IsR0FBQXBSLEVBQUFvUixNQUNBLGdCQUFBcFIsR0FDQW9SLEVBTUEsSUFBQUEsRUFB
QSxNQUFBQSxFQUFBLEtBRUFDLFFBQUEsS0FDQUMsY0FBQSxTQUFBdFIsR0FDQSxNQUFBQSxHQUFB
c1IsZ0JBQUF0UixFQUFBdVIsY0FBQXZSLEVBQUF3UixXQUFBeFIsRUFBQXlSLFVBQUF6UixFQUFB
dVIsY0FHQUcsTUFBQSxTQUFBMVIsR0FDQSxlQUFBQSxLQUFBMFIsTUFBQTFSLEVBQUE2USxRQUFB
TCxFQUFBbUIsbUJBRUFDLE1BQUEsU0FBQTVSLEdBQ0EsZUFBQUEsS0FBQTRSLE1BQUE1UixFQUFB
OFEsUUFBQU4sRUFBQXFCLGtCQWNBbkQsR0FBQWpPLGFBQUE4UCxFQUFBRyxHQUVBNWYsRUFBQUQs
UUFBQTBmLEczQnNtR00sU0FBVXpmLEVBQVFELEVBQVNILEdBRWpDLFk0QmxxR0EsSUFTQW9oQixH
QVRBbFosRUFBQWxJLEVBQUEsR0FDQW9aLEVBQUFwWixFQUFBLElBRUFxaEIsRUFBQSxlQUNBQyxF
QUFBLHVEQUVBakksRUFBQXJaLEVBQUEsSUFhQXFZLEVBQUFnQixFQUFBLFNBQUF0VSxFQUFBcVQs
R0FJQSxHQUFBclQsRUFBQTRVLGVBQUFQLEVBQUFtSSxLQUFBLGFBQUF4YyxHQVFBQSxFQUFBeWMs
VUFBQXBKLE1BUkEsQ0FDQWdKLEtBQUFwWixTQUFBQyxjQUFBLE9BQ0FtWixFQUFBSSxVQUFBLFFB
QUFwSixFQUFBLFFBRUEsS0FEQSxHQUFBcUosR0FBQUwsRUFBQTlhLFdBQ0FtYixFQUFBbmIsWUFD
QXZCLEVBQUFnVSxZQUFBMEksRUFBQW5iLGNBT0EsSUFBQTRCLEVBQUFKLFVBQUEsQ0FPQSxHQUFB
NFosR0FBQTFaLFNBQUFDLGNBQUEsTUFDQXlaLEdBQUFGLFVBQUEsSUFDQSxLQUFBRSxFQUFBRixZ
QUNBbkosRUFBQSxTQUFBdFQsRUFBQXFULEdBY0EsR0FSQXJULEVBQUFpQyxZQUNBakMsRUFBQWlD
LFdBQUEyUixhQUFBNVQsS0FPQXNjLEVBQUE1SCxLQUFBckIsSUFBQSxNQUFBQSxFQUFBLElBQUFr
SixFQUFBN0gsS0FBQXJCLEdBQUEsQ0FPQXJULEVBQUF5YyxVQUFBNWQsT0FBQUcsYUFBQSxPQUFB
cVUsQ0FJQSxJQUFBdUosR0FBQTVjLEVBQUF1QixVQUNBLEtBQUFxYixFQUFBQyxLQUFBNWUsT0FD
QStCLEVBQUE4YyxZQUFBRixHQUVBQSxFQUFBRyxXQUFBLFNBR0EvYyxHQUFBeWMsVUFBQXBKLElB
SUFzSixFQUFBLEtBR0F0aEIsRUFBQUQsUUFBQWtZLEc1Qm1yR00sU0FBVWpZLEVBQVFELEVBQVNI
LEdBRWpDLFk2Qmh1R0EsU0FBQStoQixHQUFBQyxHQUNBLEdBQUFDLEdBQUEsR0FBQUQsRUFDQUUs
RUFBQUMsRUFBQUMsS0FBQUgsRUFFQSxLQUFBQyxFQUNBLE1BQUFELEVBR0EsSUFBQUksR0FDQWpL
LEVBQUEsR0FDQWtLLEVBQUEsRUFDQUMsRUFBQSxDQUVBLEtBQUFELEVBQUFKLEVBQUFJLE1BQTJC
QSxFQUFBTCxFQUFBamYsT0FBb0JzZixJQUFBLENBQy9DLE9BQUFMLEVBQUFPLFdBQUFGLElBQ0Es
UUFFQUQsRUFBQSxRQUNBLE1BQ0EsU0FFQUEsRUFBQSxPQUNBLE1BQ0EsU0FFQUEsRUFBQSxRQUNB
LE1BQ0EsU0FFQUEsRUFBQSxNQUNBLE1BQ0EsU0FFQUEsRUFBQSxNQUNBLE1BQ0EsU0FDQSxTQUdB
RSxJQUFBRCxJQUNBbEssR0FBQTZKLEVBQUFRLFVBQUFGLEVBQUFELElBR0FDLEVBQUFELEVBQUEs
RUFDQWxLLEdBQUFpSyxFQUdBLE1BQUFFLEtBQUFELEVBQUFsSyxFQUFBNkosRUFBQVEsVUFBQUYs
RUFBQUQsR0FBQWxLLEVBVUEsUUFBQXNLLEdBQUFwSyxHQUNBLHdCQUFBQSxJQUFBLGlCQUFBQSxH
QUlBLEdBQUFBLEVBRUF5SixFQUFBekosR0ExRUEsR0FBQTZKLEdBQUEsU0E2RUEvaEIsR0FBQUQs
UUFBQXVpQixHN0IweEdNLFNBQVV0aUIsRUFBUUQsRUFBU0gsR0FFakMsWThCeHZHQSxTQUFBMmlC
LEdBQUFDLEdBT0EsTUFKQTloQixRQUFBUyxVQUFBQyxlQUFBakIsS0FBQXFpQixFQUFBQyxLQUNB
RCxFQUFBQyxHQUFBQyxJQUNBQyxFQUFBSCxFQUFBQyxRQUVBRSxFQUFBSCxFQUFBQyxJQXZKQSxH
QWdFQUcsR0FoRUEzVyxFQUFBck0sRUFBQSxHQUVBZ2MsRUFBQWhjLEVBQUEsSUFDQWlqQixFQUFB
ampCLEVBQUEsS0FDQThmLEVBQUE5ZixFQUFBLElBRUFrakIsRUFBQWxqQixFQUFBLEtBQ0FtakIs
RUFBQW5qQixFQUFBLElBMERBK2lCLEtBQ0FLLEdBQUEsRUFDQU4sRUFBQSxFQUtBTyxHQUNBQyxT
QUFBLFFBQ0FDLGdCQUFBTCxFQUFBLGdDQUNBTSxzQkFBQU4sRUFBQSw0Q0FDQU8sa0JBQUFQLEVB
QUEsb0NBQ0FRLFFBQUEsT0FDQUMsV0FBQSxVQUNBQyxrQkFBQSxpQkFDQUMsVUFBQSxTQUNBQyxT
QUFBLFFBQ0FDLGtCQUFBLGlCQUNBQyxvQkFBQSxtQkFDQUMscUJBQUEsb0JBQ0FDLGVBQUEsY0FD
QUMsUUFBQSxPQUNBQyxPQUFBLE1BQ0FDLGVBQUEsV0FDQUMsUUFBQSxPQUNBQyxXQUFBLFVBQ0FD
LGFBQUEsWUFDQUMsWUFBQSxXQUNBQyxhQUFBLFlBQ0FDLFlBQUEsV0FDQUMsYUFBQSxZQUNBQyxR
QUFBLE9BQ0FDLGtCQUFBLGlCQUNBQyxXQUFBLFVBQ0FDLGFBQUEsWUFDQUMsU0FBQSxRQUNBQyxT
QUFBLFFBQ0FDLFNBQUEsUUFDQUMsU0FBQSxRQUNBQyxXQUFBLFVBQ0FDLFlBQUEsV0FDQUMsU0FB
QSxRQUNBQyxjQUFBLGFBQ0FDLGtCQUFBLGlCQUNBQyxhQUFBLFlBQ0FDLGFBQUEsWUFDQUMsYUFB
QSxZQUNBQyxZQUFBLFdBQ0FDLGFBQUEsWUFDQUMsV0FBQSxVQUNBQyxTQUFBLFFBQ0FDLFNBQUEs
UUFDQUMsUUFBQSxPQUNBQyxXQUFBLFVBQ0FDLFlBQUEsV0FDQUMsY0FBQSxhQUNBQyxVQUFBLFNB
Q0FDLFVBQUEsU0FDQUMsV0FBQSxVQUNBQyxtQkFBQSxrQkFDQUMsV0FBQSxVQUNBQyxXQUFBLFVB
Q0FDLGFBQUEsWUFDQUMsY0FBQSxhQUNBQyxlQUFBLGNBQ0FDLFlBQUEsV0FDQUMsYUFBQSxZQUNB
QyxjQUFBLGFBQ0FDLGlCQUFBaEUsRUFBQSxrQ0FDQWlFLGdCQUFBLGVBQ0FDLFdBQUEsVUFDQUMs
U0FBQSxTQU1BeEUsRUFBQSxvQkFBQWpmLE9BQUE2RCxLQUFBQyxVQUFBRSxNQUFBLEdBc0JBMGYs
RUFBQWpiLEtBQXlDNFcsR0FJekNzRSxtQkFBQSxLQUVBelosV0FJQTBaLHlCQUFBLFNBQUFELEdB
Q0FBLEVBQUFFLGtCQUFBSCxFQUFBSSxnQkFDQUosRUFBQUMsdUJBU0FJLFdBQUEsU0FBQUMsR0FD
QU4sRUFBQUMsb0JBQ0FELEVBQUFDLG1CQUFBSSxXQUFBQyxJQU9BQyxVQUFBLFdBQ0EsU0FBQVAs
RUFBQUMscUJBQUFELEVBQUFDLG1CQUFBTSxjQXdCQUMsU0FBQSxTQUFBL04sRUFBQWdPLEdBS0Es
T0FKQW5GLEdBQUFtRixFQUNBQyxFQUFBckYsRUFBQUMsR0FDQXFGLEVBQUFqTSxFQUFBa00sNkJB
QUFuTyxHQUVBMVosRUFBQSxFQUFtQkEsRUFBQTRuQixFQUFBamxCLE9BQXlCM0MsSUFBQSxDQUM1
QyxHQUFBOG5CLEdBQUFGLEVBQUE1bkIsRUFDQTJuQixHQUFBeG1CLGVBQUEybUIsSUFBQUgsRUFB
QUcsS0FDQSxhQUFBQSxFQUNBaEYsRUFBQSxTQUNBbUUsRUFBQUMsbUJBQUFhLGlCQUFBLG1CQUFB
eEYsR0FDV08sRUFBQSxjQUNYbUUsRUFBQUMsbUJBQUFhLGlCQUFBLHdCQUFBeEYsR0FJQTBFLEVB
QUFDLG1CQUFBYSxpQkFBQSw0QkFBQXhGLEdBRVMsY0FBQXVGLEVBQ1RoRixFQUFBLGFBQ0FtRSxF
QUFBQyxtQkFBQWMsa0JBQUEscUJBQUF6RixHQUVBMEUsRUFBQUMsbUJBQUFhLGlCQUFBLHFCQUFB
ZCxFQUFBQyxtQkFBQWUsZUFFUyxhQUFBSCxHQUFBLFlBQUFBLEdBQ1RoRixFQUFBLGFBQ0FtRSxF
QUFBQyxtQkFBQWMsa0JBQUEsbUJBQUF6RixHQUNBMEUsRUFBQUMsbUJBQUFjLGtCQUFBLGlCQUFB
ekYsSUFDV08sRUFBQSxhQUdYbUUsRUFBQUMsbUJBQUFhLGlCQUFBLHFCQUFBeEYsR0FDQTBFLEVB
QUFDLG1CQUFBYSxpQkFBQSxxQkFBQXhGLElBSUFvRixFQUFBdEUsU0FBQSxFQUNBc0UsRUFBQTdD
LFVBQUEsR0FDUzlCLEVBQUE3aEIsZUFBQTJtQixJQUNUYixFQUFBQyxtQkFBQWEsaUJBQUFELEVB
QUE5RSxFQUFBOEUsR0FBQXZGLEdBR0FvRixFQUFBRyxJQUFBLEtBS0FDLGlCQUFBLFNBQUE5SyxF
QUFBaUwsRUFBQUMsR0FDQSxNQUFBbEIsR0FBQUMsbUJBQUFhLGlCQUFBOUssRUFBQWlMLEVBQUFD
LElBR0FILGtCQUFBLFNBQUEvSyxFQUFBaUwsRUFBQUMsR0FDQSxNQUFBbEIsR0FBQUMsbUJBQUFj
LGtCQUFBL0ssRUFBQWlMLEVBQUFDLElBUUFDLG9CQUFBLFdBQ0EsSUFBQXpnQixTQUFBMGdCLFlB
Q0EsUUFFQSxJQUFBQyxHQUFBM2dCLFNBQUEwZ0IsWUFBQSxhQUNBLGNBQUFDLEdBQUEsU0FBQUEs
SUFjQUMsNEJBQUEsV0FJQSxPQUhBeG1CLEtBQUE0Z0IsSUFDQUEsRUFBQXNFLEVBQUFtQix3QkFF
QXpGLElBQUFJLEVBQUEsQ0FDQSxHQUFBeUYsR0FBQS9JLEVBQUFnSixtQkFDQXhCLEdBQUFDLG1C
QUFBd0IsbUJBQUFGLEdBQ0F6RixHQUFBLEtBS0FoakIsR0FBQUQsUUFBQW1uQixHOUJ5NUdNLFNB
QVVsbkIsRUFBUTRvQixFQUFxQmhwQixHQUU3QyxZQUNxQixJQUFJaXBCLEdBQTZDanBCLEVBQW9C
LElBQ2pFa3BCLEVBQWlEbHBCLEVBQW9CLEtBQ3JFbXBCLEVBQW9EbnBCLEVBQW9CLElBQ3ZCQSxH
QUFvQixLQUM1QkEsRUFBb0IsSUFDZEEsRUFBb0IsR0FDM0RBLEdBQW9CVSxFQUFFc29CLEVBQXFC
LElBQUssV0FBYSxNQUFPQyxHQUE4QyxJQUNsSGpwQixFQUFvQlUsRUFBRXNvQixFQUFxQixJQUFL
LFdBQWEsTUFBT0UsR0FBa0QsSUFDdEhscEIsRUFBb0JVLEVBQUVzb0IsRUFBcUIsSUFBSyxXQUFh
LE1BQU9HLEdBQXFELEtBd0JwSixTQUFVL29CLEVBQVFELEcrQjl2SHhCLEdBQUFpcEIsRUFHQUEs
R0FBQSxXQUNBLE1BQUFsZ0IsUUFHQSxLQUVBa2dCLEtBQUFDLFNBQUEscUJBQUFDLE1BQUEsUUFD
QyxNQUFBdG5CLEdBRUQsaUJBQUErRixVQUNBcWhCLEVBQUFyaEIsUUFPQTNILEVBQUFELFFBQUFp
cEIsRy9CcXdITSxTQUFVaHBCLEVBQVFELEVBQVNILEdBRWpDLFlnQzN2SEEsU0FBQXVwQixLQUNB
LEdBQUFDLEVBSUEsT0FBQUMsS0FBQUMsR0FBQSxDQUNBLEdBQUFDLEdBQUFELEVBQUFELEdBQ0FH
LEVBQUFKLEVBQUFLLFFBQUFKLEVBRUEsSUFEQUcsR0FBQSxHQUFBaGpCLEVBQUEsS0FBQTZpQixJ
QUNBek4sRUFBQXVCLFFBQUFxTSxHQUFBLENBR0FELEVBQUF0TSxlQUFBelcsRUFBQSxLQUFBNmlC
LEdBQ0F6TixFQUFBdUIsUUFBQXFNLEdBQUFELENBQ0EsSUFBQUcsR0FBQUgsRUFBQUksVUFDQSxR
QUFBQyxLQUFBRixHQUNBRyxFQUFBSCxFQUFBRSxHQUFBTCxFQUFBSyxJQUFBcGpCLEVBQUEsS0FB
QW9qQixFQUFBUCxLQWFBLFFBQUFRLEdBQUEvYixFQUFBeWIsRUFBQUssR0FDQWhPLEVBQUFrTyx5
QkFBQTFvQixlQUFBd29CLElBQUFwakIsRUFBQSxLQUFBb2pCLEdBQ0FoTyxFQUFBa08seUJBQUFG
LEdBQUE5YixDQUVBLElBQUE4TCxHQUFBOUwsRUFBQThMLHVCQUNBLElBQUFBLEVBQUEsQ0FDQSxP
QUFBbVEsS0FBQW5RLEdBQ0EsR0FBQUEsRUFBQXhZLGVBQUEyb0IsR0FBQSxDQUNBLEdBQUFDLEdB
QUFwUSxFQUFBbVEsRUFDQUUsR0FBQUQsRUFBQVQsRUFBQUssR0FHQSxTQUNHLFFBQUE5YixFQUFB
NkwsbUJBQ0hzUSxFQUFBbmMsRUFBQTZMLGlCQUFBNFAsRUFBQUssSUFDQSxHQWFBLFFBQUFLLEdB
QUF0USxFQUFBNFAsRUFBQUssR0FDQWhPLEVBQUFlLHdCQUFBaEQsSUFBQW5ULEVBQUEsTUFBQW1U
LEdBQ0FpQyxFQUFBZSx3QkFBQWhELEdBQUE0UCxFQUNBM04sRUFBQWtNLDZCQUFBbk8sR0FBQTRQ
LEVBQUFJLFdBQUFDLEdBQUEvQixhQS9FQSxHQUFBcmhCLEdBQUE1RyxFQUFBLEdBT0F3cEIsR0FM
QXhwQixFQUFBLEdBS0EsTUFLQTBwQixLQW9GQTFOLEdBSUF1QixXQUtBMk0sNEJBS0FuTiwyQkFL
QW1MLGdDQVFBb0MsMEJBQXVFLEtBWXZFM04sdUJBQUEsU0FBQTROLEdBQ0FmLEdBQUE1aUIsRUFB
QSxPQUVBNGlCLEVBQUExVixNQUFBdlMsVUFBQXFHLE1BQUFySCxLQUFBZ3FCLEdBQ0FoQixLQWFB
M00seUJBQUEsU0FBQTROLEdBQ0EsR0FBQUMsSUFBQSxDQUNBLFFBQUFoQixLQUFBZSxHQUNBLEdB
QUFBLEVBQUFocEIsZUFBQWlvQixHQUFBLENBR0EsR0FBQUUsR0FBQWEsRUFBQWYsRUFDQUMsR0FB
QWxvQixlQUFBaW9CLElBQUFDLEVBQUFELEtBQUFFLElBQ0FELEVBQUFELElBQUE3aUIsRUFBQSxN
QUFBNmlCLEdBQ0FDLEVBQUFELEdBQUFFLEVBQ0FjLEdBQUEsR0FHQUEsR0FDQWxCLEtBV0FtQix3
QkFBQSxTQUFBcGIsR0FDQSxHQUFBcEIsR0FBQW9CLEVBQUFwQixjQUNBLElBQUFBLEVBQUE2TCxp
QkFDQSxNQUFBaUMsR0FBQWUsd0JBQUE3TyxFQUFBNkwsbUJBQUEsSUFFQSxRQUFBM1gsS0FBQThM
LEVBQUE4TCx3QkFBQSxDQUdBLEdBQUFBLEdBQUE5TCxFQUFBOEwsdUJBRUEsUUFBQUcsS0FBQUgs
R0FDQSxHQUFBQSxFQUFBeFksZUFBQTJZLEdBQUEsQ0FHQSxHQUFBd1AsR0FBQTNOLEVBQUFlLHdC
QUFBL0MsRUFBQUcsR0FDQSxJQUFBd1AsRUFDQSxNQUFBQSxJQUlBLGFBT0FnQixtQkFBQSxXQUNB
bkIsRUFBQSxJQUNBLFFBQUFDLEtBQUFDLEdBQ0FBLEVBQUFsb0IsZUFBQWlvQixVQUNBQyxHQUFB
RCxFQUdBek4sR0FBQXVCLFFBQUF2YSxPQUFBLENBRUEsSUFBQWtuQixHQUFBbE8sRUFBQWtPLHdC
QUNBLFFBQUFGLEtBQUFFLEdBQ0FBLEVBQUExb0IsZUFBQXdvQixVQUNBRSxHQUFBRixFQUlBLElB
QUFqTixHQUFBZixFQUFBZSx1QkFDQSxRQUFBaEQsS0FBQWdELEdBQ0FBLEVBQUF2YixlQUFBdVks
VUFDQWdELEdBQUFoRCxJQWVBM1osR0FBQUQsUUFBQTZiLEdoQ2d5SE0sU0FBVTViLEVBQVFELEVB
QVNILEdBRWpDLFlpQ2ovSEEsU0FBQTRxQixHQUFBdE4sR0FDQSxxQkFBQUEsR0FBQSxnQkFBQUEs
R0FBQSxtQkFBQUEsRUFHQSxRQUFBdU4sR0FBQXZOLEdBQ0EsdUJBQUFBLEdBQUEsaUJBQUFBLEVB
RUEsUUFBQXdOLEdBQUF4TixHQUNBLHVCQUFBQSxHQUFBLGtCQUFBQSxFQTBCQSxRQUFBeU4sR0FB
QXpiLEVBQUErTSxFQUFBakMsRUFBQTFVLEdBQ0EsR0FBQXlGLEdBQUFtRSxFQUFBbkUsTUFBQSxl
QUNBbUUsR0FBQUwsY0FBQXdMLEVBQUFyVCxvQkFBQTFCLEdBQ0EyVyxFQUNBSixFQUFBK08sK0JB
QUE3ZixFQUFBaVAsRUFBQTlLLEdBRUEyTSxFQUFBZ1Asc0JBQUE5ZixFQUFBaVAsRUFBQTlLLEdB
RUFBLEVBQUFMLGNBQUEsS0FNQSxRQUFBcU4sR0FBQWhOLEVBQUErTSxHQUNBLEdBQUE2TyxHQUFB
NWIsRUFBQStLLG1CQUNBOFEsRUFBQTdiLEVBQUFpTCxrQkFJQSxJQUFBekcsTUFBQXNYLFFBQUFG
LEdBQ0EsT0FBQTdxQixHQUFBLEVBQW1CQSxFQUFBNnFCLEVBQUFsb0IsU0FDbkJzTSxFQUFBUix1
QkFEaUR6TyxJQUtqRDBxQixFQUFBemIsRUFBQStNLEVBQUE2TyxFQUFBN3FCLEdBQUE4cUIsRUFB
QTlxQixRQUVHNnFCLElBQ0hILEVBQUF6YixFQUFBK00sRUFBQTZPLEVBQUFDLEVBRUE3YixHQUFB
K0ssbUJBQUEsS0FDQS9LLEVBQUFpTCxtQkFBQSxLQVVBLFFBQUE4USxHQUFBL2IsR0FDQSxHQUFB
NGIsR0FBQTViLEVBQUErSyxtQkFDQThRLEVBQUE3YixFQUFBaUwsa0JBSUEsSUFBQXpHLE1BQUFz
WCxRQUFBRixJQUNBLE9BQUE3cUIsR0FBQSxFQUFtQkEsRUFBQTZxQixFQUFBbG9CLFNBQ25Cc00s
RUFBQVIsdUJBRGlEek8sSUFLakQsR0FBQTZxQixFQUFBN3FCLEdBQUFpUCxFQUFBNmIsRUFBQTlx
QixJQUNBLE1BQUE4cUIsR0FBQTlxQixPQUdHLElBQUE2cUIsR0FDSEEsRUFBQTViLEVBQUE2YixH
QUNBLE1BQUFBLEVBR0EsYUFNQSxRQUFBRyxHQUFBaGMsR0FDQSxHQUFBaVEsR0FBQThMLEVBQUEv
YixFQUdBLE9BRkFBLEdBQUFpTCxtQkFBQSxLQUNBakwsRUFBQStLLG1CQUFBLEtBQ0FrRixFQVlB
LFFBQUFnTSxHQUFBamMsR0FJQSxHQUFBa2MsR0FBQWxjLEVBQUErSyxtQkFDQW9SLEVBQUFuYyxF
QUFBaUwsa0JBQ0F6RyxPQUFBc1gsUUFBQUksSUFBQTVrQixFQUFBLE9BQ0EwSSxFQUFBTCxjQUFB
dWMsRUFBQS9RLEVBQUFyVCxvQkFBQXFrQixHQUFBLElBQ0EsSUFBQUMsR0FBQUYsSUFBQWxjLEdB
QUEsSUFJQSxPQUhBQSxHQUFBTCxjQUFBLEtBQ0FLLEVBQUErSyxtQkFBQSxLQUNBL0ssRUFBQWlM
LG1CQUFBLEtBQ0FtUixFQU9BLFFBQUFDLEdBQUFyYyxHQUNBLFFBQUFBLEVBQUErSyxtQkEzS0Es
R0FlQXVSLEdBQ0FDLEVBaEJBamxCLEVBQUE1RyxFQUFBLEdBRUFpYyxFQUFBamMsRUFBQSxJQWVB
OE4sR0FiQTlOLEVBQUEsR0FDQUEsRUFBQSxJQWFBOHJCLG9CQUFBLFNBQUFDLEdBQ0FILEVBQUFH
LEdBS0FDLG9CQUFBLFNBQUFELEdBQ0FGLEVBQUFFLEtBd0pBdFIsR0FDQW1RLFdBQ0FDLFlBQ0FD
LGFBRUFTLHdCQUNBalAsMkJBQ0FnUCxxQ0FDQUssZ0JBRUF4a0Isb0JBQUEsU0FBQXBDLEdBQ0Es
TUFBQTZtQixHQUFBemtCLG9CQUFBcEMsSUFFQXFDLG9CQUFBLFNBQUFyQyxHQUNBLE1BQUE2bUIs
R0FBQXhrQixvQkFBQXJDLElBRUFrbkIsV0FBQSxTQUFBbnFCLEVBQUFDLEdBQ0EsTUFBQThwQixH
QUFBSSxXQUFBbnFCLEVBQUFDLElBRUFtcUIsd0JBQUEsU0FBQXBxQixFQUFBQyxHQUNBLE1BQUE4
cEIsR0FBQUssd0JBQUFwcUIsRUFBQUMsSUFFQThZLGtCQUFBLFNBQUFuVixHQUNBLE1BQUFtbUIs
R0FBQWhSLGtCQUFBblYsSUFFQWdWLGlCQUFBLFNBQUFsVyxFQUFBMm5CLEVBQUF2akIsR0FDQSxN
QUFBaWpCLEdBQUFuUixpQkFBQWxXLEVBQUEybkIsRUFBQXZqQixJQUVBNFMsbUJBQUEsU0FBQTlX
LEVBQUFFLEVBQUF1bkIsRUFBQUMsRUFBQUMsR0FDQSxNQUFBUixHQUFBclEsbUJBQUE5VyxFQUFB
RSxFQUFBdW5CLEVBQUFDLEVBQUFDLElBR0F2ZSxZQUdBMU4sR0FBQUQsUUFBQXNhLEdqQ2tpSU0s
U0FBVXJhLEVBQVFELEVBQVNILEdBRWpDLFlrQzd1SUEsU0FBQWlyQixHQUFBdHFCLEVBQUEyckIs
RUFBQXhxQixHQUNBLElBQ0F3cUIsRUFBQXhxQixHQUNHLE1BQUF5cUIsR0FDSCxPQUFBQyxJQUNB
QSxFQUFBRCxJQWZBLEdBQUFDLEdBQUEsS0FvQkF2USxHQUNBZ1Asd0JBTUFELCtCQUFBQyxFQU1B
cE4sbUJBQUEsV0FDQSxHQUFBMk8sRUFBQSxDQUNBLEdBQUFycUIsR0FBQXFxQixDQUVBLE1BREFB
LEdBQUEsS0FDQXJxQixJQXdCQS9CLEdBQUFELFFBQUE4YixHbEN5d0lNLFNBQVU3YixFQUFRRCxF
QUFTSCxHQUVqQyxZbUNqMElBLFNBQUFrZSxHQUFBOVAsR0FDQSxHQUFBNUosR0FBQTRKLEVBQUE1
SixRQUFBNEosRUFBQTBTLFlBQUEvWSxNQVNBLE9BTkF2RCxHQUFBaW9CLDBCQUNBam9CLElBQUFp
b0IseUJBS0EsSUFBQWpvQixFQUFBUyxTQUFBVCxFQUFBd0MsV0FBQXhDLEVBR0FwRSxFQUFBRCxR
QUFBK2QsR25DMDFJTSxTQUFVOWQsRUFBUUQsRUFBU0gsR0FFakMsWW9DejFJQSxTQUFBbWpCLEdB
QUF1SixFQUFBQyxHQUNBLElBQUF6a0IsRUFBQUosV0FBQTZrQixLQUFBLG9CQUFBM2tCLFdBQ0Es
UUFHQSxJQUFBZ2lCLEdBQUEsS0FBQTBDLEVBQ0FFLEVBQUE1QyxJQUFBaGlCLFNBRUEsS0FBQTRr
QixFQUFBLENBQ0EsR0FBQW5aLEdBQUF6TCxTQUFBQyxjQUFBLE1BQ0F3TCxHQUFBb1osYUFBQTdD
LEVBQUEsV0FDQTRDLEVBQUEsbUJBQUFuWixHQUFBdVcsR0FRQSxPQUxBNEMsR0FBQUUsR0FBQSxV
QUFBSixJQUVBRSxFQUFBNWtCLFNBQUEra0IsZUFBQUMsV0FBQSx1QkFHQUosRUEzQ0EsR0FFQUUs
R0FGQTVrQixFQUFBbEksRUFBQSxFQUdBa0ksR0FBQUosWUFDQWdsQixFQUFBOWtCLFNBQUEra0Is
Z0JBQUEva0IsU0FBQStrQixlQUFBQyxhQUdBLElBQUFobEIsU0FBQStrQixlQUFBQyxXQUFBLFFB
dUNBNXNCLEVBQUFELFFBQUFnakIsR3BDazRJTSxTQUFVL2lCLEVBQVFELEVBQVNILEdBRWpDLFlx
Q242SUEsU0FBQWl0QixHQUFBQyxHQUNBLEdBQUFDLEdBQUFqa0IsS0FDQWtGLEVBQUErZSxFQUFB
L2UsV0FDQSxJQUFBQSxFQUFBcVMsaUJBQ0EsTUFBQXJTLEdBQUFxUyxpQkFBQXlNLEVBRUEsSUFB
QUUsR0FBQUMsRUFBQUgsRUFDQSxTQUFBRSxLQUFBaGYsRUFBQWdmLEdBR0EsUUFBQXJOLEdBQUEz
UixHQUNBLE1BQUE2ZSxHQXJCQSxHQUFBSSxJQUNBQyxJQUFBLFNBQ0FDLFFBQUEsVUFDQUMsS0FB
QSxVQUNBQyxNQUFBLFdBb0JBcnRCLEdBQUFELFFBQUE0ZixHckNtOElNLFNBQVUzZixFQUFRRCxF
QUFTSCxHQUVqQyxZc0N6OUlBLFNBQUEwdEIsR0FBQTFtQixFQUFBakMsR0FNQSxNQUhBK08sT0FB
QXNYLFFBQUFybUIsS0FDQUEsSUFBQSxJQUVBQSxJQUFBNEIsWUFBQUssRUFBQVYsV0FrQkEsUUFB
QXFuQixHQUFBM21CLEVBQUE4UixFQUFBWSxHQUNBUCxFQUFBaEIsaUJBQUFuUixFQUFBOFIsRUFB
QVksR0FHQSxRQUFBa1UsR0FBQTVtQixFQUFBWCxFQUFBcVQsR0FDQTVGLE1BQUFzWCxRQUFBL2tC
LEdBQ0F3bkIsRUFBQTdtQixFQUFBWCxFQUFBLEdBQUFBLEVBQUEsR0FBQXFULEdBRUFvVSxFQUFB
OW1CLEVBQUFYLEVBQUFxVCxHQUlBLFFBQUFtSSxHQUFBN2EsRUFBQVgsR0FDQSxHQUFBeU4sTUFB
QXNYLFFBQUEva0IsR0FBQSxDQUNBLEdBQUEwbkIsR0FBQTFuQixFQUFBLEVBQ0FBLEtBQUEsR0FD
QTJuQixFQUFBaG5CLEVBQUFYLEVBQUEwbkIsR0FDQS9tQixFQUFBNmEsWUFBQWtNLEdBRUEvbUIs
RUFBQTZhLFlBQUF4YixHQUdBLFFBQUF3bkIsR0FBQTdtQixFQUFBaW5CLEVBQUFGLEVBQUFyVSxH
QUVBLElBREEsR0FBQTNVLEdBQUFrcEIsSUFDQSxDQUNBLEdBQUFDLEdBQUFucEIsRUFBQTRCLFdB
RUEsSUFEQW1uQixFQUFBOW1CLEVBQUFqQyxFQUFBMlUsR0FDQTNVLElBQUFncEIsRUFDQSxLQUVB
aHBCLEdBQUFtcEIsR0FJQSxRQUFBRixHQUFBaG5CLEVBQUFtbkIsRUFBQUosR0FDQSxRQUNBLEdB
QUFocEIsR0FBQW9wQixFQUFBeG5CLFdBQ0EsSUFBQTVCLElBQUFncEIsRUFFQSxLQUVBL21CLEdB
QUE2YSxZQUFBOWMsSUFLQSxRQUFBcXBCLEdBQUFILEVBQUFGLEVBQUFNLEdBQ0EsR0FBQXJuQixH
QUFBaW5CLEVBQUFqbkIsV0FDQXNuQixFQUFBTCxFQUFBdG5CLFdBQ0EybkIsS0FBQVAsRUFHQU0s
R0FDQVAsRUFBQTltQixFQUFBZ0IsU0FBQXVtQixlQUFBRixHQUFBQyxHQUdBRCxHQUdBOVYsRUFB
QStWLEVBQUFELEdBQ0FMLEVBQUFobkIsRUFBQXNuQixFQUFBUCxJQUVBQyxFQUFBaG5CLEVBQUFp
bkIsRUFBQUYsR0EvRkEsR0FBQTVVLEdBQUFuWixFQUFBLElBQ0F3dUIsRUFBQXh1QixFQUFBLEtB
SUFxWixHQUhBclosRUFBQSxHQUNBQSxFQUFBLEdBRUFBLEVBQUEsS0FDQXFZLEVBQUFyWSxFQUFB
LElBQ0F1WSxFQUFBdlksRUFBQSxJQW1CQTh0QixFQUFBelUsRUFBQSxTQUFBclMsRUFBQVgsRUFB
QXFULEdBSUExUyxFQUFBNFMsYUFBQXZULEVBQUFxVCxLQThFQStVLEVBQUFELEVBQUFDLGlDQTBC
QUMsR0FDQUQsbUNBRUFMLHVCQVNBTyxlQUFBLFNBQUEzbkIsRUFBQTRuQixHQUtBLE9BQUFDLEdB
QUEsRUFBbUJBLEVBQUFELEVBQUE1ckIsT0FBb0I2ckIsSUFBQSxDQUN2QyxHQUFBQyxHQUFBRixF
QUFBQyxFQUNBLFFBQUFDLEVBQUEzakIsTUFDQSxvQkFDQXdpQixFQUFBM21CLEVBQUE4bkIsRUFB
QUMsUUFBQXJCLEVBQUExbUIsRUFBQThuQixFQUFBRSxXQVdBLE1BQ0EscUJBQ0FwQixFQUFBNW1C
LEVBQUE4bkIsRUFBQUcsU0FBQXZCLEVBQUExbUIsRUFBQThuQixFQUFBRSxXQVFBLE1BQ0Esa0JB
Q0EzVyxFQUFBclIsRUFBQThuQixFQUFBQyxRQVFBLE1BQ0Esb0JBQ0F4VyxFQUFBdlIsRUFBQThu
QixFQUFBQyxRQVFBLE1BQ0EsbUJBQ0FsTixFQUFBN2EsRUFBQThuQixFQUFBRyxhQWNBN3VCLEdB
QUFELFFBQUF1dUIsR3RDbS9JTSxTQUFVdHVCLEVBQVFELEVBQVNILEdBRWpDLFl1Q3pzSkEsSUFB
QW9aLElBQ0FoQixLQUFBLCtCQUNBOFcsT0FBQSxxQ0FDQTNOLElBQUEsNkJBR0FuaEIsR0FBQUQs
UUFBQWlaLEd2QzB0Sk0sU0FBVWhaLEVBQVFELEVBQVNILEdBRWpDLFl3QzV0SkEsSUFBQXFaLEdB
QUEsU0FBQWlULEdBQ0EsMEJBQUE2QyxjQUFBQyx3QkFDQSxTQUFBQyxFQUFBQyxFQUFBQyxFQUFB
QyxHQUNBTCxNQUFBQyx3QkFBQSxXQUNBLE1BQUE5QyxHQUFBK0MsRUFBQUMsRUFBQUMsRUFBQUMs
TUFJQWxELEVBSUFsc0IsR0FBQUQsUUFBQWtaLEd4Q212Sk0sU0FBVWpaLEVBQVFELEVBQVNILEdB
RWpDLFl5Q2x2SkEsU0FBQXl2QixHQUFBQyxHQUNBLE1BQUFBLEVBQUFDLGFBQUEsTUFBQUQsRUFB
QUUsV0FBQWhwQixFQUFBLE1BRUEsUUFBQWlwQixHQUFBSCxHQUNBRCxFQUFBQyxJQUNBLE1BQUFB
LEVBQUFsYixPQUFBLE1BQUFrYixFQUFBSSxXQUFBbHBCLEVBQUEsTUFHQSxRQUFBbXBCLEdBQUFM
LEdBQ0FELEVBQUFDLElBQ0EsTUFBQUEsRUFBQU0sU0FBQSxNQUFBTixFQUFBSSxXQUFBbHBCLEVB
QUEsTUFvQkEsUUFBQXFwQixHQUFBMWMsR0FDQSxHQUFBQSxFQUFBLENBQ0EsR0FBQTVTLEdBQUE0
UyxFQUFBbEksU0FDQSxJQUFBMUssRUFDQSxzQ0FBQUEsRUFBQSxLQUdBLFNBMURBLEdBQUFpRyxH
QUFBNUcsRUFBQSxHQUVBa3dCLEVBQUFsd0IsRUFBQSxLQUNBbXdCLEVBQUFud0IsRUFBQSxJQUVB
a1MsRUFBQWxTLEVBQUEsSUFDQTBTLEVBQUF5ZCxFQUFBamUsRUFBQU8sZ0JBS0EyZCxHQUhBcHdC
LEVBQUEsR0FDQUEsRUFBQSxJQUdBMGdCLFFBQUEsRUFDQTJQLFVBQUEsRUFDQUMsT0FBQSxFQUNB
QyxRQUFBLEVBQ0FDLE9BQUEsRUFDQTFqQixPQUFBLEVBQ0EyakIsUUFBQSxJQWdCQUMsR0FDQWxj
LE1BQUEsU0FBQWhCLEVBQUEvRSxFQUFBa2lCLEdBQ0EsT0FBQW5kLEVBQUEvRSxJQUFBMmhCLEVB
QUE1YyxFQUFBckksT0FBQXFJLEVBQUFzYyxVQUFBdGMsRUFBQW9kLFVBQUFwZCxFQUFBdUksU0FD
QSxLQUVBLEdBQUExWixPQUFBLHNOQUVBMnRCLFFBQUEsU0FBQXhjLEVBQUEvRSxFQUFBa2lCLEdB
Q0EsT0FBQW5kLEVBQUEvRSxJQUFBK0UsRUFBQXNjLFVBQUF0YyxFQUFBb2QsVUFBQXBkLEVBQUF1
SSxTQUNBLEtBRUEsR0FBQTFaLE9BQUEsME5BRUF5dEIsU0FBQXBkLEVBQUE0WixNQUdBdUUsS0Fl
QUMsR0FDQUMsZUFBQSxTQUFBQyxFQUFBeGQsRUFBQUQsR0FDQSxPQUFBOUUsS0FBQWlpQixHQUFB
LENBQ0EsR0FBQUEsRUFBQWx2QixlQUFBaU4sR0FDQSxHQUFBdE0sR0FBQXV1QixFQUFBamlCLEdB
QUErRSxFQUFBL0UsRUFBQXVpQixFQUFBLFlBQUFkLEVBRUEsSUFBQS90QixZQUFBRSxVQUFBRixF
QUFBYyxVQUFBNHRCLElBQUEsQ0FHQUEsRUFBQTF1QixFQUFBYyxVQUFBLENBRUFndEIsR0FBQTFj
LE1BVUEwZCxTQUFBLFNBQUF2QixHQUNBLE1BQUFBLEdBQUFFLFdBQ0FDLEVBQUFILEdBQ0FBLEVB
QUFFLFVBQUFwYixPQUVBa2IsRUFBQWxiLE9BUUEwYyxXQUFBLFNBQUF4QixHQUNBLE1BQUFBLEdB
QUFDLGFBQ0FJLEVBQUFMLEdBQ0FBLEVBQUFDLFlBQUFuYixPQUVBa2IsRUFBQU0sU0FPQW1CLGdC
QUFBLFNBQUF6QixFQUFBcGdCLEdBQ0EsTUFBQW9nQixHQUFBRSxXQUNBQyxFQUFBSCxHQUNBQSxF
QUFBRSxVQUFBd0IsY0FBQTloQixFQUFBOUssT0FBQWdRLFFBQ0trYixFQUFBQyxhQUNMSSxFQUFB
TCxHQUNBQSxFQUFBQyxZQUFBeUIsY0FBQTloQixFQUFBOUssT0FBQXdyQixVQUNLTixFQUFBSSxT
QUNMSixFQUFBSSxTQUFBdnZCLFNBQUE2QixHQUFBa04sT0FESyxJQU1MbFAsR0FBQUQsUUFBQTJ3
QixHekN3eEpNLFNBQVUxd0IsRUFBUUQsRUFBU0gsR0FFakMsWTBDcjVKQSxJQUFBNEcsR0FBQTVH
LEVBQUEsR0FJQXF4QixHQUZBcnhCLEVBQUEsSUFFQSxHQUVBc3hCLEdBS0FDLHNCQUFBLEtBTUFD
LHVCQUFBLEtBRUExakIsV0FDQTJqQixrQkFBQSxTQUFBQyxHQUNBTCxHQUFBenFCLEVBQUEsT0FD
QTBxQixFQUFBQyxzQkFBQUcsRUFBQUgsc0JBQ0FELEVBQUFFLHVCQUFBRSxFQUFBRix1QkFDQUgs
R0FBQSxJQUtBanhCLEdBQUFELFFBQUFteEIsRzFDdTZKTSxTQUFVbHhCLEVBQVFELEVBQVNILEdB
RWpDLFkyQzc3SkEsU0FBQTJ4QixHQUFBcEYsRUFBQXFGLEdBRUEsTUFBQXJGLEtBQUFxRixFQUlB
LElBQUFyRixHQUFBLElBQUFxRixHQUFBLEVBQUFyRixJQUFBLEVBQUFxRixFQUdBckYsT0FBQXFG
LE1BU0EsUUFBQUMsR0FBQUMsRUFBQUMsR0FDQSxHQUFBSixFQUFBRyxFQUFBQyxHQUNBLFFBR0Es
cUJBQUFELElBQUEsT0FBQUEsR0FBQSxpQkFBQUMsSUFBQSxPQUFBQSxFQUNBLFFBR0EsSUFBQUMs
R0FBQWx4QixPQUFBd0QsS0FBQXd0QixHQUNBRyxFQUFBbnhCLE9BQUF3RCxLQUFBeXRCLEVBRUEs
SUFBQUMsRUFBQWh2QixTQUFBaXZCLEVBQUFqdkIsT0FDQSxRQUlBLFFBQUEzQyxHQUFBLEVBQWlC
QSxFQUFBMnhCLEVBQUFodkIsT0FBa0IzQyxJQUNuQyxJQUFBbUIsRUFBQWpCLEtBQUF3eEIsRUFB
QUMsRUFBQTN4QixNQUFBc3hCLEVBQUFHLEVBQUFFLEVBQUEzeEIsSUFBQTB4QixFQUFBQyxFQUFB
M3hCLEtBQ0EsUUFJQSxVQS9DQSxHQUFBbUIsR0FBQVYsT0FBQVMsVUFBQUMsY0FrREFwQixHQUFB
RCxRQUFBMHhCLEczQ3c5Sk0sU0FBVXp4QixFQUFRRCxFQUFTSCxHQUVqQyxZNENwZ0tBLFNBQUFr
eUIsR0FBQXRhLEVBQUFELEdBQ0EsR0FBQXdhLEdBQUEsT0FBQXZhLElBQUEsSUFBQUEsRUFDQXdh
LEVBQUEsT0FBQXphLElBQUEsSUFBQUEsQ0FDQSxJQUFBd2EsR0FBQUMsRUFDQSxNQUFBRCxLQUFB
QyxDQUdBLElBQUFDLFNBQUF6YSxHQUNBMGEsUUFBQTNhLEVBQ0Esa0JBQUEwYSxHQUFBLFdBQUFB
LEVBQ0EsV0FBQUMsR0FBQSxXQUFBQSxFQUVBLFdBQUFBLEdBQUExYSxFQUFBek0sT0FBQXdNLEVB
QUF4TSxNQUFBeU0sRUFBQS9TLE1BQUE4UyxFQUFBOVMsSUFJQXpFLEVBQUFELFFBQUEreEIsRzVD
aWlLTSxTQUFVOXhCLEVBQVFELEVBQVNILEdBRWpDLFk2Q3ZqS0EsU0FBQXFpQixHQUFBeGQsR0FD
QSxHQUNBMHRCLElBQ0FDLElBQUEsS0FDQUMsSUFBQSxLQU1BLFlBSkEsR0FBQTV0QixHQUFBckMs
UUFMQSxRQUtBLFNBQUEwZixHQUNBLE1BQUFxUSxHQUFBclEsS0FZQSxRQUFBd1EsR0FBQTd0QixH
QUNBLEdBQUE4dEIsR0FBQSxXQUNBQyxHQUNBQyxLQUFBLElBQ0FDLEtBQUEsSUFJQSxZQUZBLE1B
QUFqdUIsRUFBQSxVQUFBQSxFQUFBLEdBQUFBLEVBQUE0ZCxVQUFBLEdBQUE1ZCxFQUFBNGQsVUFB
QSxLQUVBamdCLFFBQUFtd0IsRUFBQSxTQUFBelEsR0FDQSxNQUFBMFEsR0FBQTFRLEtBSUEsR0FB
QTZRLElBQ0ExUSxTQUNBcVEsV0FHQXR5QixHQUFBRCxRQUFBNHlCLEc3Q2dsS00sU0FBVTN5QixF
QUFRRCxFQUFTSCxHQUVqQyxZOENybktBLFNBQUE4TCxHQUFBa0wsR0FDQTFOLEVBQUF3QyxjQUFB
a0wsR0FHQSxRQUFBZ2MsR0FBQXBxQixHQUNBLEdBQUF1QyxTQUFBdkMsRUFDQSxlQUFBdUMsRUFD
QSxNQUFBQSxFQUVBLElBQUE4bkIsR0FBQXJxQixFQUFBNEYsYUFBQTVGLEVBQUE0RixZQUFBN04s
TUFBQXdLLEVBQ0E3RyxFQUFBeEQsT0FBQXdELEtBQUFzRSxFQUNBLE9BQUF0RSxHQUFBdEIsT0FB
QSxHQUFBc0IsRUFBQXRCLE9BQUEsR0FDQWl3QixFQUFBLFdBQUEzdUIsRUFBQUwsS0FBQSxVQUVB
Z3ZCLEVBR0EsUUFBQUMsR0FBQUMsRUFBQUMsR0FDQSxHQUFBcGMsR0FBQTBILEVBQUF4ZCxJQUFB
aXlCLEVBQ0EsS0FBQW5jLEVBQUEsQ0FRQSxZQU9BLE1BQUFBLEdBNUNBLEdBQUFwUSxHQUFBNUcs
RUFBQSxHQUdBMGUsR0FEQTFlLEVBQUEsSUFDQUEsRUFBQSxLQUVBc0osR0FEQXRKLEVBQUEsR0FD
QUEsRUFBQSxJQThDQXF6QixHQTVDQXJ6QixFQUFBLEdBQ0FBLEVBQUEsSUFtREFzekIsVUFBQSxT
QUFBSCxHQUVBLEdBTUFuYyxHQUFBMEgsRUFBQXhkLElBQUFpeUIsRUFDQSxTQUFBbmMsS0FJQUEs
RUFBQXhSLG9CQWVBK3RCLGdCQUFBLFNBQUFKLEVBQUFscEIsRUFBQW1wQixHQUNBQyxFQUFBRyxp
QkFBQXZwQixFQUFBbXBCLEVBQ0EsSUFBQXBjLEdBQUFrYyxFQUFBQyxFQU9BLEtBQUFuYyxFQUNB
LFdBR0FBLEdBQUFuTSxrQkFDQW1NLEVBQUFuTSxrQkFBQTlELEtBQUFrRCxHQUVBK00sRUFBQW5N
LG1CQUFBWixHQU1BNkIsRUFBQWtMLElBR0F5Yyx3QkFBQSxTQUFBemMsRUFBQS9NLEdBQ0ErTSxF
QUFBbk0sa0JBQ0FtTSxFQUFBbk0sa0JBQUE5RCxLQUFBa0QsR0FFQStNLEVBQUFuTSxtQkFBQVos
R0FFQTZCLEVBQUFrTCxJQWdCQTBjLG1CQUFBLFNBQUFQLEdBQ0EsR0FBQW5jLEdBQUFrYyxFQUFB
QyxFQUFBLGNBRUFuYyxLQUlBQSxFQUFBMmMscUJBQUEsRUFFQTduQixFQUFBa0wsS0FjQTRjLG9C
QUFBLFNBQUFULEVBQUFVLEVBQUE1cEIsR0FDQSxHQUFBK00sR0FBQWtjLEVBQUFDLEVBQUEsZUFF
QW5jLEtBSUFBLEVBQUE4YyxvQkFBQUQsR0FDQTdjLEVBQUErYyxzQkFBQSxNQUdBM3hCLEtBQUE2
SCxHQUFBLE9BQUFBLElBQ0FvcEIsRUFBQUcsaUJBQUF2cEIsRUFBQSxnQkFDQStNLEVBQUFuTSxr
QkFDQW1NLEVBQUFuTSxrQkFBQTlELEtBQUFrRCxHQUVBK00sRUFBQW5NLG1CQUFBWixJQUlBNkIs
RUFBQWtMLEtBYUFnZCxnQkFBQSxTQUFBYixFQUFBYyxHQU1BLEdBQUFqZCxHQUFBa2MsRUFBQUMs
RUFBQSxXQUVBLElBQUFuYyxFQUFBLEVBSUFBLEVBQUE4YyxxQkFBQTljLEVBQUE4Yyx3QkFDQS9z
QixLQUFBa3RCLEdBRUFub0IsRUFBQWtMLEtBR0FrZCx1QkFBQSxTQUFBbGQsRUFBQVcsRUFBQXdj
LEdBQ0FuZCxFQUFBb2QsZ0JBQUF6YyxFQUVBWCxFQUFBYSxTQUFBc2MsRUFDQXJvQixFQUFBa0ws
SUFHQXdjLGlCQUFBLFNBQUF2cEIsRUFBQW1wQixHQUNBbnBCLEdBQUEsbUJBQUFBLElBQUFyRCxF
QUFBLE1BQUF3c0IsRUFBQUosRUFBQS9vQixNQUlBN0osR0FBQUQsUUFBQWt6QixHOUNncEtNLFNB
QVVqekIsRUFBUUQsRUFBU0gsR0FFakMsWStDOTJLQSxJQUVBMEMsSUFGQTFDLEVBQUEsR0FFQUEs
RUFBQSxJQUdBcTBCLEdBRkFyMEIsRUFBQSxHQUVBMEMsRUFnV0F0QyxHQUFBRCxRQUFBazBCLEcv
QyszS00sU0FBVWowQixFQUFRRCxFQUFTSCxHQUVqQyxZZ0QzdExBLFNBQUFzMEIsR0FBQWxtQixH
QUNBLEdBQUFtbUIsR0FDQUMsRUFBQXBtQixFQUFBb21CLE9BZ0JBLE9BZEEsWUFBQXBtQixHQUlB
LEtBSEFtbUIsRUFBQW5tQixFQUFBbW1CLFdBR0EsS0FBQUMsSUFDQUQsRUFBQSxJQUlBQSxFQUFB
QyxFQUtBRCxHQUFBLFNBQUFBLEVBQ0FBLEVBR0EsRUFHQW4wQixFQUFBRCxRQUFBbTBCLEdoRHV2
TE0sU0FBVWwwQixFQUFRNG9CLEVBQXFCaHBCLEdBRTdDLFlpRHp2TEEsU0FBQXkwQixHQUFBamdC
LEdBQ0EsSUFBQTFULE9BQUE0ekIsRUFBQSxHQUFBbGdCLElBQUExVCxPQUFBNnpCLEVBQUEsR0FB
QW5nQixJQUFBb2dCLEVBQ0EsUUFFQSxJQUFBQyxHQUFBL3pCLE9BQUFnMEIsRUFBQSxHQUFBdGdC
LEVBQ0EsV0FBQXFnQixFQUNBLFFBRUEsSUFBQUUsR0FBQXZ6QixFQUFBakIsS0FBQXMwQixFQUFB
LGdCQUFBQSxFQUFBcm1CLFdBQ0EseUJBQUF1bUIsb0JBQ0FDLEVBQUF6MEIsS0FBQXcwQixJQUFB
RSxFakRndkxxQixHQUFJTixHQUErQzMwQixFQUFvQixLQUNuRTgwQixFQUFpRDkwQixFQUFvQixL
QUNyRTAwQixFQUFpRDEwQixFQUFvQixLaUR2eUw5RjQwQixFQUFBLGtCQUdBTSxFQUFBN0wsU0FB
QTluQixVQUNBNHpCLEVBQUFyMEIsT0FBQVMsVUFHQXl6QixFQUFBRSxFQUFBdnRCLFNBR0FuRyxF
QUFBMnpCLEVBQUEzekIsZUFHQXl6QixFQUFBRCxFQUFBejBCLEtBQUFPLE9BMkNBa29CLEdBQUEs
S2pEa3pMTSxTQUFVNW9CLEVBQVE0b0IsRUFBcUJocEIsR0FFN0MsWWtEMzJMQSxTQUFBMkMsR0FB
QU0sR0FFQSxvQkFBQXFJLFVBQUEsbUJBQUFBLFNBQUFuSixPQUNBbUosUUFBQW5KLE1BQUFjLEVB
R0EsS0FJQSxTQUFBWixPQUFBWSxHQUVHLE1BQUFqQixLQWxCSGduQixFQUFBLEVBQUFybUIsR2xE
MjRMTSxTQUFVdkMsRUFBUUQsRUFBU0gsR21EMzRMakMsR0FBQW8xQixHQUFBQyxHQU9BLFdBQ0Es
WUFJQSxTQUFBQyxLQUdBLE9BRkFDLE1BRUFsMUIsRUFBQSxFQUFpQkEsRUFBQTBDLFVBQUFDLE9B
QXNCM0MsSUFBQSxDQUN2QyxHQUFBdUksR0FBQTdGLFVBQUExQyxFQUNBLElBQUF1SSxFQUFBLENB
RUEsR0FBQTRzQixTQUFBNXNCLEVBRUEsZUFBQTRzQixHQUFBLFdBQUFBLEVBQ0FELEVBQUF4dUIs
S0FBQTZCLE9BQ0ksSUFBQWtMLE1BQUFzWCxRQUFBeGlCLEdBQ0oyc0IsRUFBQXh1QixLQUFBdXVC
LEVBQUFHLE1BQUEsS0FBQTdzQixRQUNJLGVBQUE0c0IsRUFDSixPQUFBM3dCLEtBQUErRCxHQUNB
OHNCLEVBQUFuMUIsS0FBQXFJLEVBQUEvRCxJQUFBK0QsRUFBQS9ELElBQ0Ewd0IsRUFBQXh1QixL
QUFBbEMsSUFNQSxNQUFBMHdCLEdBQUF0eEIsS0FBQSxLQXhCQSxHQUFBeXhCLE1BQWdCbDBCLGNB
MkJoQixxQkFBQXBCLE1BQUFELFFBQ0FDLEVBQUFELFFBQUFtMUIsR0FHQUYsU0FFR2h6QixNQUZI
aXpCLEVBQUEsV0FDQSxNQUFBQyxJQUNHRyxNQUFBdDFCLEVBQUFpMUIsTUFBQWgxQixFQUFBRCxR
QUFBazFCLFFuRHU1TEcsU0FBVWoxQixFQUFRRCxFQUFTSCxHQUVqQyxZb0RoOExBLFNBQUEyMUIs
TUFxQkEsUUFBQUMsR0FBQUMsR0FDQSxJQUNBLE1BQUFBLEdBQUFDLEtBQ0csTUFBQUMsR0FFSCxN
QURBQyxHQUFBRCxFQUNBRSxHQUlBLFFBQUFDLEdBQUEvSixFQUFBcnFCLEdBQ0EsSUFDQSxNQUFB
cXFCLEdBQUFycUIsR0FDRyxNQUFBaTBCLEdBRUgsTUFEQUMsR0FBQUQsRUFDQUUsR0FHQSxRQUFB
RSxHQUFBaEssRUFBQXJxQixFQUFBQyxHQUNBLElBQ0FvcUIsRUFBQXJxQixFQUFBQyxHQUNHLE1B
QUFnMEIsR0FFSCxNQURBQyxHQUFBRCxFQUNBRSxHQU1BLFFBQUFHLEdBQUFqSyxHQUNBLG9CQUFB
ampCLE1BQ0EsU0FBQTVGLFdBQUEsdUNBRUEsdUJBQUE2b0IsR0FDQSxTQUFBN29CLFdBQUEsbURB
RUE0RixNQUFBbXRCLElBQUEsRUFDQW50QixLQUFBb3RCLElBQUEsRUFDQXB0QixLQUFBcXRCLElB
QUEsS0FDQXJ0QixLQUFBc3RCLElBQUEsS0FDQXJLLElBQUF3SixHQUNBYyxFQUFBdEssRUFBQWpq
QixNQWVBLFFBQUF3dEIsR0FBQXBqQixFQUFBcWpCLEVBQUFDLEdBQ0EsVUFBQXRqQixHQUFBOUUs
WUFBQSxTQUFBcW9CLEVBQUFDLEdBQ0EsR0FBQXBMLEdBQUEsR0FBQTBLLEdBQUFULEVBQ0FqSyxH
QUFBb0ssS0FBQWUsRUFBQUMsR0FDQXRPLEVBQUFsVixFQUFBLEdBQUF5akIsR0FBQUosRUFBQUMs
RUFBQWxMLE1BR0EsUUFBQWxELEdBQUFsVixFQUFBMGpCLEdBQ0EsU0FBQTFqQixFQUFBZ2pCLEtB
Q0FoakIsSUFBQWlqQixHQUtBLElBSEFILEVBQUFhLEtBQ0FiLEVBQUFhLElBQUEzakIsR0FFQSxJ
QUFBQSxFQUFBZ2pCLElBQ0EsV0FBQWhqQixFQUFBK2lCLEtBQ0EvaUIsRUFBQStpQixJQUFBLE9B
Q0EvaUIsRUFBQWtqQixJQUFBUSxJQUdBLElBQUExakIsRUFBQStpQixLQUNBL2lCLEVBQUEraUIs
SUFBQSxPQUNBL2lCLEVBQUFrakIsS0FBQWxqQixFQUFBa2pCLElBQUFRLFNBR0ExakIsR0FBQWtq
QixJQUFBenZCLEtBQUFpd0IsRUFHQUUsR0FBQTVqQixFQUFBMGpCLEdBR0EsUUFBQUUsR0FBQTVq
QixFQUFBMGpCLEdBQ0EvcUIsRUFBQSxXQUNBLEdBQUFrckIsR0FBQSxJQUFBN2pCLEVBQUFnakIs
SUFBQVUsRUFBQUwsWUFBQUssRUFBQUosVUFDQSxXQUFBTyxFQU1BLFlBTEEsSUFBQTdqQixFQUFB
Z2pCLElBQ0FPLEVBQUFHLEVBQUFJLFFBQUE5akIsRUFBQWlqQixLQUVBTyxFQUFBRSxFQUFBSSxR
QUFBOWpCLEVBQUFpakIsS0FJQSxJQUFBaFgsR0FBQTJXLEVBQUFpQixFQUFBN2pCLEVBQUFpakIs
SUFDQWhYLEtBQUEwVyxFQUNBYSxFQUFBRSxFQUFBSSxRQUFBcEIsR0FFQWEsRUFBQUcsRUFBQUks
UUFBQTdYLEtBSUEsUUFBQXNYLEdBQUF2akIsRUFBQStqQixHQUVBLEdBQUFBLElBQUEvakIsRUFD
QSxNQUFBd2pCLEdBQ0F4akIsRUFDQSxHQUFBaFEsV0FBQSw2Q0FHQSxJQUNBK3pCLElBQ0EsaUJB
QUFBLElBQUEsbUJBQUFBLElBQ0EsQ0FDQSxHQUFBdkIsR0FBQUYsRUFBQXlCLEVBQ0EsSUFBQXZC
LElBQUFHLEVBQ0EsTUFBQWEsR0FBQXhqQixFQUFBMGlCLEVBRUEsSUFDQUYsSUFBQXhpQixFQUFB
d2lCLE1BQ0F1QixZQUFBakIsR0FLQSxNQUhBOWlCLEdBQUFnakIsSUFBQSxFQUNBaGpCLEVBQUFp
akIsSUFBQWMsTUFDQUMsR0FBQWhrQixFQUVLLHVCQUFBd2lCLEdBRUwsV0FEQVcsR0FBQVgsRUFB
QTdoQixLQUFBb2pCLEdBQUEvakIsR0FJQUEsRUFBQWdqQixJQUFBLEVBQ0FoakIsRUFBQWlqQixJ
QUFBYyxFQUNBQyxFQUFBaGtCLEdBR0EsUUFBQXdqQixHQUFBeGpCLEVBQUErakIsR0FDQS9qQixF
QUFBZ2pCLElBQUEsRUFDQWhqQixFQUFBaWpCLElBQUFjLEVBQ0FqQixFQUFBbUIsS0FDQW5CLEVB
QUFtQixJQUFBamtCLEVBQUErakIsR0FFQUMsRUFBQWhrQixHQUVBLFFBQUFna0IsR0FBQWhrQixH
QUtBLEdBSkEsSUFBQUEsRUFBQStpQixNQUNBN04sRUFBQWxWLElBQUFrakIsS0FDQWxqQixFQUFB
a2pCLElBQUEsTUFFQSxJQUFBbGpCLEVBQUEraUIsSUFBQSxDQUNBLE9BQUFoMkIsR0FBQSxFQUFt
QkEsRUFBQWlULEVBQUFrakIsSUFBQXh6QixPQUFxQjNDLElBQ3hDbW9CLEVBQUFsVixJQUFBa2pC
LElBQUFuMkIsR0FFQWlULEdBQUFrakIsSUFBQSxNQUlBLFFBQUFPLEdBQUFKLEVBQUFDLEVBQUFR
LEdBQ0FsdUIsS0FBQXl0QixZQUFBLG1CQUFBQSxLQUFBLEtBQ0F6dEIsS0FBQTB0QixXQUFBLG1C
QUFBQSxLQUFBLEtBQ0ExdEIsS0FBQWt1QixVQVNBLFFBQUFYLEdBQUF0SyxFQUFBaUwsR0FDQSxH
QUFBSSxJQUFBLEVBQ0E5TCxFQUFBeUssRUFBQWhLLEVBQUEsU0FBQTNYLEdBQ0FnakIsSUFDQUEs
R0FBQSxFQUNBWCxFQUFBTyxFQUFBNWlCLEtBQ0csU0FBQWlqQixHQUNIRCxJQUNBQSxHQUFBLEVB
Q0FWLEVBQUFNLEVBQUFLLEtBRUFELElBQUE5TCxJQUFBdUssSUFDQXVCLEdBQUEsRUFDQVYsRUFB
QU0sRUFBQXBCLElBaE5BLEdBQUEvcEIsR0FBQWpNLEVBQUEsS0FxQkFnMkIsRUFBQSxLQUNBQyxJ
QTJCQTcxQixHQUFBRCxRQUFBaTJCLEVBZ0JBQSxFQUFBYSxJQUFBLEtBQ0FiLEVBQUFtQixJQUFB
LEtBQ0FuQixFQUFBc0IsSUFBQS9CLEVBRUFTLEVBQUE3MEIsVUFBQXUwQixLQUFBLFNBQUFhLEVB
QUFDLEdBQ0EsR0FBQTF0QixLQUFBc0YsY0FBQTRuQixFQUNBLE1BQUFNLEdBQUF4dEIsS0FBQXl0
QixFQUFBQyxFQUVBLElBQUFsTCxHQUFBLEdBQUEwSyxHQUFBVCxFQUVBLE9BREFuTixHQUFBdGYs
S0FBQSxHQUFBNnRCLEdBQUFKLEVBQUFDLEVBQUFsTCxJQUNBQSxJcERpbE1NLFNBQVV0ckIsRUFB
UUQsRUFBU0gsR0FFakMsWXFEdm9NQSxTQUFBMjNCLEdBQUFua0IsRUFBQXRILEVBQUEwckIsR0FD
QTF1QixLQUFBc0ssUUFDQXRLLEtBQUFnRCxVQUNBaEQsS0FBQTJ1QixLQUFBOVksRUFHQTdWLEtB
QUEwdUIsV0FBQUUsRUF5RkEsUUFBQUMsR0FBQXZrQixFQUFBdEgsRUFBQTByQixHQUVBMXVCLEtB
QUFzSyxRQUNBdEssS0FBQWdELFVBQ0FoRCxLQUFBMnVCLEtBQUE5WSxFQUdBN1YsS0FBQTB1QixX
QUFBRSxFQUdBLFFBQUFFLE1BdEhBLEdBQUFweEIsR0FBQTVHLEVBQUEsSUFDQXFNLEVBQUFyTSxF
QUFBLEdBRUE4M0IsRUFBQTkzQixFQUFBLElBR0ErZSxHQURBL2UsRUFBQSxJQUNBQSxFQUFBLElB
Q0FBLEdBQUEsR0FDQUEsRUFBQSxJQWNBMjNCLEdBQUFwMkIsVUFBQTAyQixvQkEyQkFOLEVBQUFw
MkIsVUFBQTIyQixTQUFBLFNBQUFqRSxFQUFBaHFCLEdBQ0EsaUJBQUFncUIsSUFBQSxtQkFBQUEs
SUFBQSxNQUFBQSxHQUFBcnRCLEVBQUEsTUFDQXNDLEtBQUEwdUIsUUFBQTVELGdCQUFBOXFCLEtB
QUErcUIsR0FDQWhxQixHQUNBZixLQUFBMHVCLFFBQUFyRSxnQkFBQXJxQixLQUFBZSxFQUFBLGFB
a0JBMHRCLEVBQUFwMkIsVUFBQTQyQixZQUFBLFNBQUFsdUIsR0FDQWYsS0FBQTB1QixRQUFBbEUs
bUJBQUF4cUIsTUFDQWUsR0FDQWYsS0FBQTB1QixRQUFBckUsZ0JBQUFycUIsS0FBQWUsRUFBQSxl
QTZDQSt0QixHQUFBejJCLFVBQUFvMkIsRUFBQXAyQixVQUNBdzJCLEVBQUF4MkIsVUFBQSxHQUFB
eTJCLEdBQ0FELEVBQUF4MkIsVUFBQWlOLFlBQUF1cEIsRUFFQTFyQixFQUFBMHJCLEVBQUF4MkIs
VUFBQW8yQixFQUFBcDJCLFdBQ0F3MkIsRUFBQXgyQixVQUFBNjJCLHNCQUFBLEVBRUFoNEIsRUFB
QUQsU0FDQW9TLFVBQUFvbEIsRUFDQW5sQixjQUFBdWxCLElyRHNxTU0sU0FBVTMzQixFQUFRRCxF
QUFTSCxHQUVqQyxZc0R4eU1BLElBWUE4M0IsSUFaQTkzQixFQUFBLElBb0JBc3pCLFVBQUEsU0FB
QUgsR0FDQSxVQVdBSSxnQkFBQSxTQUFBSixFQUFBbHBCLEtBZUF5cEIsbUJBQUEsU0FBQVAsS0Fl
QVMsb0JBQUEsU0FBQVQsRUFBQVUsS0FjQUcsZ0JBQUEsU0FBQWIsRUFBQWMsTUFLQTd6QixHQUFB
RCxRQUFBMjNCLEd0RHl6TU0sU0FBVTEzQixFQUFRRCxFQUFTSCxHQUVqQyxZdUQzNE1BLElBQUFx
NEIsSUFBQSxDQVdBajRCLEdBQUFELFFBQUFrNEIsR3ZENjVNTSxTQUFVajRCLEVBQVFELEVBQVNI
LEdBRWpDLFl3RHY2TUEsSUFBQWtULEdBQUEsbUJBQUFvbEIsZ0JBQUEsS0FBQUEsT0FBQSwyQkFF
QWw0QixHQUFBRCxRQUFBK1MsR3hENDdNTSxTQUFVOVMsRUFBUUQsRUFBU0gsR0FFakMsWXlEajhN
QSxJQUFBZ1UsR0FBQWhVLEVBQUEsSUFDQUksR0FBQUQsUUFBQSxTQUFBc1MsR0FHQSxNQUFBdUIs
R0FBQXZCLEdBREEsS3pEdzlNTSxTQUFVclMsRUFBUUQsRUFBU0gsR0FFakMsWTBELzlNQUksR0FB
QUQsUUFGQSxnRDFEby9NTSxTQUFVQyxFQUFRRCxFQUFTSCxHQUVqQyxZMkRyL01BLElBQUF1SCxJ
QUNBckIsb0JBQUEsRUFHQTlGLEdBQUFELFFBQUFvSCxHM0RzZ05NLFNBQVVuSCxFQUFRRCxFQUFT
SCxHQUVqQyxZNEQxL01BLFNBQUFzYSxHQUFBdE0sRUFBQXVxQixHQUdBLE1BRkEsT0FBQUEsR0FB
QTN4QixFQUFBLE1BRUEsTUFBQW9ILEVBQ0F1cUIsRUFLQXprQixNQUFBc1gsUUFBQXBkLEdBQ0E4
RixNQUFBc1gsUUFBQW1OLElBQ0F2cUIsRUFBQWpILEtBQUEwdUIsTUFBQXpuQixFQUFBdXFCLEdB
Q0F2cUIsSUFFQUEsRUFBQWpILEtBQUF3eEIsR0FDQXZxQixHQUdBOEYsTUFBQXNYLFFBQUFtTixJ
QUVBdnFCLEdBQUF3cUIsT0FBQUQsSUFHQXZxQixFQUFBdXFCLEdBeENBLEdBQUEzeEIsR0FBQTVH
LEVBQUEsRUFFQUEsR0FBQSxFQXlDQUksR0FBQUQsUUFBQW1hLEc1RDZoTk0sU0FBVWxhLEVBQVFE
LEVBQVNILEdBRWpDLFk2RGxrTkEsU0FBQW1iLEdBQUFzZCxFQUFBdEIsRUFBQTdwQixHQUNBd0cs
TUFBQXNYLFFBQUFxTixHQUNBQSxFQUFBcjBCLFFBQUEreUIsRUFBQTdwQixHQUNHbXJCLEdBQ0h0
QixFQUFBNTJCLEtBQUErTSxFQUFBbXJCLEdBSUFyNEIsRUFBQUQsUUFBQWdiLEc3RDRsTk0sU0FB
VS9hLEVBQVFELEVBQVNILEdBRWpDLFk4RHJtTkEsU0FBQTA0QixLQU1BLE9BTEFDLEdBQUF6d0Is
RUFBQUosWUFHQTZ3QixFQUFBLGVBQUEzd0IsVUFBQTR3QixnQkFBQSwyQkFFQUQsRUFoQkEsR0FB
QXp3QixHQUFBbEksRUFBQSxHQUVBMjRCLEVBQUEsSUFpQkF2NEIsR0FBQUQsUUFBQXU0QixHOURn
b05NLFNBQVV0NEIsRUFBUUQsRUFBU0gsR0FFakMsWStEbHBOQSxTQUFBNjRCLEdBQUFyb0IsRUFB
QXNvQixHQUFpRCxLQUFBdG9CLFlBQUFzb0IsSUFBMEMsU0FBQXgxQixXQUFBLHFDQUYzRixHQUFB
c0QsR0FBQTVHLEVBQUEsR0FJQXNNLEVBQUF0TSxFQUFBLElBZ0JBNkosR0FkQTdKLEVBQUEsR0Fj
QSxXQUNBLFFBQUE2SixHQUFBakIsR0FDQWl3QixFQUFBM3ZCLEtBQUFXLEdBRUFYLEtBQUE2dkIs
V0FBQSxLQUNBN3ZCLEtBQUE4dkIsVUFBQSxLQUNBOXZCLEtBQUErdkIsS0FBQXJ3QixFQTJFQSxN
QS9EQWlCLEdBQUF0SSxVQUFBcUssUUFBQSxTQUFBM0IsRUFBQWlDLEdBQ0FoRCxLQUFBNnZCLFdB
QUE3dkIsS0FBQTZ2QixlQUNBN3ZCLEtBQUE2dkIsV0FBQWh5QixLQUFBa0QsR0FDQWYsS0FBQTh2
QixVQUFBOXZCLEtBQUE4dkIsY0FDQTl2QixLQUFBOHZCLFVBQUFqeUIsS0FBQW1GLElBV0FyQyxF
QUFBdEksVUFBQXdMLFVBQUEsV0FDQSxHQUFBbkMsR0FBQTFCLEtBQUE2dkIsV0FDQUcsRUFBQWh3
QixLQUFBOHZCLFVBQ0Fwd0IsRUFBQU0sS0FBQSt2QixJQUNBLElBQUFydUIsR0FBQXN1QixFQUFB
LENBQ0F0dUIsRUFBQTVILFNBQUFrMkIsRUFBQWwyQixRQUFBNEQsRUFBQSxNQUNBc0MsS0FBQTZ2
QixXQUFBLEtBQ0E3dkIsS0FBQTh2QixVQUFBLElBQ0EsUUFBQTM0QixHQUFBLEVBQXFCQSxFQUFB
dUssRUFBQTVILE9BQXNCM0MsSUFDM0N1SyxFQUFBdkssR0FBQUUsS0FBQTI0QixFQUFBNzRCLEdB
QUF1SSxFQUVBZ0MsR0FBQTVILE9BQUEsRUFDQWsyQixFQUFBbDJCLE9BQUEsSUFJQTZHLEVBQUF0
SSxVQUFBNDNCLFdBQUEsV0FDQSxNQUFBandCLE1BQUE2dkIsV0FBQTd2QixLQUFBNnZCLFdBQUEv
MUIsT0FBQSxHQUdBNkcsRUFBQXRJLFVBQUE2M0IsU0FBQSxTQUFBNXVCLEdBQ0F0QixLQUFBNnZC
LFlBQUE3dkIsS0FBQTh2QixZQUNBOXZCLEtBQUE2dkIsV0FBQS8xQixPQUFBd0gsRUFDQXRCLEtB
QUE4dkIsVUFBQWgyQixPQUFBd0gsSUFXQVgsRUFBQXRJLFVBQUF1TCxNQUFBLFdBQ0E1RCxLQUFB
NnZCLFdBQUEsS0FDQTd2QixLQUFBOHZCLFVBQUEsTUFRQW52QixFQUFBdEksVUFBQTJMLFdBQUEs
V0FDQWhFLEtBQUE0RCxTQUdBakQsS0FHQXpKLEdBQUFELFFBQUFtTSxFQUFBaUIsYUFBQTFELEkv
RHNxTk0sU0FBVXpKLEVBQVFELEVBQVNILEdBRWpDLFlnRWh4TkEsSUFBQStLLElBSUFDLG9CQUFB
LEVBR0E1SyxHQUFBRCxRQUFBNEssR2hFa3lOTSxTQUFVM0ssRUFBUUQsRUFBU0gsR0FFakMsWWlF
MXlOQSxTQUFBcTVCLEdBQUFDLEdBQ0EsR0FBQW51QixHQUFBbXVCLEVBQUFudUIsS0FDQStOLEVB
QUFvZ0IsRUFBQXBnQixRQUNBLE9BQUFBLElBQUEsVUFBQUEsRUFBQXRELGdCQUFBLGFBQUF6SyxH
QUFBLFVBQUFBLEdBR0EsUUFBQW91QixHQUFBN3pCLEdBQ0EsTUFBQUEsR0FBQTh6QixjQUFBQyxh
QUdBLFFBQUFDLEdBQUFoMEIsRUFBQWkwQixHQUNBajBCLEVBQUE4ekIsY0FBQUMsYUFBQUUsRUFH
QSxRQUFBQyxHQUFBbDBCLFNBQ0FBLEdBQUE4ekIsY0FBQUMsYUFHQSxRQUFBSSxHQUFBOTBCLEdB
Q0EsR0FBQXlQLEVBSUEsT0FIQXpQLEtBQ0F5UCxFQUFBNmtCLEVBQUF0MEIsR0FBQSxHQUFBQSxF
QUFBaXJCLFFBQUFqckIsRUFBQXlQLE9BRUFBLEVBekJBLEdBQUEzTSxHQUFBN0gsRUFBQSxHQTRC
QTg1QixHQUVBQyxvQkFBQSxTQUFBaDFCLEdBQ0EsTUFBQXcwQixHQUFBMXhCLEVBQUFWLG9CQUFB
cEMsS0FJQWkxQixNQUFBLFNBQUF0MEIsR0FDQSxJQUFBNnpCLEVBQUE3ekIsR0FBQSxDQUlBLEdB
QUFYLEdBQUE4QyxFQUFBVCxvQkFBQTFCLEdBQ0F1MEIsRUFBQVosRUFBQXQwQixHQUFBLGtCQUNB
bTFCLEVBQUFwNUIsT0FBQXE1Qix5QkFBQXAxQixFQUFBeUosWUFBQWpOLFVBQUEwNEIsR0FFQUcs
RUFBQSxHQUFBcjFCLEVBQUFrMUIsRUFNQWwxQixHQUFBdkQsZUFBQXk0QixJQUFBLG1CQUFBQyxH
QUFBaDVCLEtBQUEsbUJBQUFnNUIsR0FBQXBiLE1BSUFoZSxPQUFBQyxlQUFBZ0UsRUFBQWsxQixH
QUNBaDVCLFdBQUFpNUIsRUFBQWo1QixXQUNBRCxjQUFBLEVBQ0FFLElBQUEsV0FDQSxNQUFBZzVC
LEdBQUFoNUIsSUFBQVgsS0FBQTJJLE9BRUE0VixJQUFBLFNBQUF0SyxHQUNBNGxCLEVBQUEsR0FB
QTVsQixFQUNBMGxCLEVBQUFwYixJQUFBdmUsS0FBQTJJLEtBQUFzTCxNQUlBa2xCLEVBQUFoMEIs
R0FDQXVyQixTQUFBLFdBQ0EsTUFBQW1KLElBRUFDLFNBQUEsU0FBQTdsQixHQUNBNGxCLEVBQUEs
R0FBQTVsQixHQUVBOGxCLGFBQUEsV0FDQVYsRUFBQWwwQixTQUNBWCxHQUFBazFCLFNBS0FNLHFC
QUFBLFNBQUE3MEIsR0FDQSxJQUFBQSxFQUNBLFFBRUEsSUFBQWkwQixHQUFBSixFQUFBN3pCLEVB
RUEsS0FBQWkwQixFQUVBLE1BREFHLEdBQUFFLE1BQUF0MEIsSUFDQSxDQUdBLElBQUE4MEIsR0FB
QWIsRUFBQTFJLFdBQ0F3SixFQUFBWixFQUFBaHlCLEVBQUFULG9CQUFBMUIsR0FFQSxPQUFBKzBC
LEtBQUFELElBQ0FiLEVBQUFVLFNBQUFJLElBQ0EsSUFLQUgsYUFBQSxTQUFBNTBCLEdBQ0EsR0FB
QWkwQixHQUFBSixFQUFBN3pCLEVBQ0FpMEIsSUFDQUEsRUFBQVcsZ0JBS0FsNkIsR0FBQUQsUUFB
QTI1QixHakU2ek5NLFNBQVUxNUIsRUFBUUQsRUFBU0gsR0FFakMsWWtFcjVOQSxTQUFBMDZCLEdB
QUFwQixHQUNBLEdBQUFwZ0IsR0FBQW9nQixLQUFBcGdCLFVBQUFvZ0IsRUFBQXBnQixTQUFBdEQs
YUFFQSxpQkFBQXNELElBQ0F5aEIsRUFBQXJCLEVBQUFudUIsTUFHQSxhQUFBK04sRUF6QkEsR0FB
QXloQixJQUNBQyxPQUFBLEVBQ0FDLE1BQUEsRUFDQUMsVUFBQSxFQUNBQyxrQkFBQSxFQUNBQyxP
QUFBLEVBQ0FDLE9BQUEsRUFDQUMsUUFBQSxFQUNBQyxVQUFBLEVBQ0FDLE9BQUEsRUFDQUMsUUFB
QSxFQUNBQyxLQUFBLEVBQ0FoakIsTUFBQSxFQUNBL00sTUFBQSxFQUNBZ3dCLEtBQUEsRUFDQUMs
TUFBQSxFQWlCQXA3QixHQUFBRCxRQUFBdTZCLEdsRTY3Tk0sU0FBVXQ2QixFQUFRRCxFQUFTSCxH
QUVqQyxZbUVwK05BLElBQUE4ZixJQUNBbUIsa0JBQUEsRUFFQUUsaUJBQUEsRUFFQTJILG9CQUFB
LFNBQUEyUyxHQUNBM2IsRUFBQW1CLGtCQUFBd2EsRUFBQWxQLEVBQ0F6TSxFQUFBcUIsaUJBQUFz
YSxFQUFBN0osR0FJQXh4QixHQUFBRCxRQUFBMmYsR25FcS9OTSxTQUFVMWYsRUFBUUQsRUFBU0gs
R0FFakMsWW9FbGdPQSxJQUFBa0ksR0FBQWxJLEVBQUEsR0FDQTBpQixFQUFBMWlCLEVBQUEsSUFD
QXFZLEVBQUFyWSxFQUFBLElBWUF1WSxFQUFBLFNBQUF4VCxFQUFBdVQsR0FDQSxHQUFBQSxFQUFB
LENBQ0EsR0FBQWhTLEdBQUF2QixFQUFBdUIsVUFFQSxJQUFBQSxPQUFBdkIsRUFBQTIyQixXQUFB
LElBQUFwMUIsRUFBQXJCLFNBRUEsWUFEQXFCLEVBQUFsQixVQUFBa1QsR0FJQXZULEVBQUE0MkIs
WUFBQXJqQixFQUdBcFEsR0FBQUosWUFDQSxlQUFBRSxVQUFBNHdCLGtCQUNBcmdCLEVBQUEsU0FB
QXhULEVBQUF1VCxHQUNBLE9BQUF2VCxFQUFBRSxTQUVBLFlBREFGLEVBQUFLLFVBQUFrVCxFQUdB
RCxHQUFBdFQsRUFBQTJkLEVBQUFwSyxPQUtBbFksRUFBQUQsUUFBQW9ZLEdwRW1oT00sU0FBVW5Z
LEVBQVFELEVBQVNILEdBRWpDLFlxRXZqT0EsU0FBQTQ3QixHQUFBNzJCLEdBSUEsSUFDQUEsRUFB
QTgyQixRQUNHLE1BQUE3NUIsS0FHSDVCLEVBQUFELFFBQUF5N0IsR3JFNGtPTSxTQUFVeDdCLEVB
QVFELEVBQVNILEdBRWpDLFlzRXBpT0EsU0FBQTg3QixHQUFBQyxFQUFBbDNCLEdBQ0EsTUFBQWsz
QixHQUFBbDNCLEVBQUFtM0IsT0FBQSxHQUFBQyxjQUFBcDNCLEVBQUE0ZCxVQUFBLEdBcERBLEdB
QUF5WixJQUNBQyx5QkFBQSxFQUNBQyxtQkFBQSxFQUNBQyxrQkFBQSxFQUNBQyxrQkFBQSxFQUNB
QyxTQUFBLEVBQ0FDLGNBQUEsRUFDQUMsaUJBQUEsRUFDQUMsYUFBQSxFQUNBQyxNQUFBLEVBQ0FD
LFVBQUEsRUFDQUMsY0FBQSxFQUNBQyxZQUFBLEVBQ0FDLGNBQUEsRUFDQUMsV0FBQSxFQUNBQyxT
QUFBLEVBQ0FDLFlBQUEsRUFDQUMsYUFBQSxFQUNBQyxjQUFBLEVBQ0FDLFlBQUEsRUFDQUMsZUFB
QSxFQUNBQyxnQkFBQSxFQUNBQyxpQkFBQSxFQUNBQyxZQUFBLEVBQ0FDLFdBQUEsRUFDQUMsWUFB
QSxFQUNBQyxTQUFBLEVBQ0FDLE9BQUEsRUFDQUMsU0FBQSxFQUNBQyxTQUFBLEVBQ0FDLFFBQUEs
RUFDQUMsUUFBQSxFQUNBQyxNQUFBLEVBR0FDLGFBQUEsRUFDQUMsY0FBQSxFQUNBQyxhQUFBLEVB
Q0FDLGlCQUFBLEVBQ0FDLGtCQUFBLEVBQ0FDLGtCQUFBLEVBQ0FDLGVBQUEsRUFDQUMsYUFBQSxH
QWlCQUMsR0FBQSx3QkFJQTc5QixRQUFBd0QsS0FBQTQzQixHQUFBOTNCLFFBQUEsU0FBQXc2QixH
QUNBRCxFQUFBdjZCLFFBQUEsU0FBQTIzQixHQUNBRyxFQUFBSixFQUFBQyxFQUFBNkMsSUFBQTFD
LEVBQUEwQyxNQWFBLElBQUFDLElBQ0FDLFlBQ0FDLHNCQUFBLEVBQ0FDLGlCQUFBLEVBQ0FDLGlC
QUFBLEVBQ0FDLHFCQUFBLEVBQ0FDLHFCQUFBLEVBQ0FDLGtCQUFBLEdBRUFDLG9CQUNBSCxxQkFB
QSxFQUNBQyxxQkFBQSxHQUVBRyxRQUNBQyxhQUFBLEVBQ0FDLGFBQUEsRUFDQUMsYUFBQSxHQUVB
QyxjQUNBQyxtQkFBQSxFQUNBQyxtQkFBQSxFQUNBQyxtQkFBQSxHQUVBQyxZQUNBQyxpQkFBQSxF
QUNBQyxpQkFBQSxFQUNBQyxpQkFBQSxHQUVBQyxhQUNBQyxrQkFBQSxFQUNBQyxrQkFBQSxFQUNB
QyxrQkFBQSxHQUVBQyxXQUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxHQUVBQyxN
QUNBQyxXQUFBLEVBQ0FDLGFBQUEsRUFDQW5ELFlBQUEsRUFDQW9ELFVBQUEsRUFDQWxELFlBQUEs
RUFDQW1ELFlBQUEsR0FFQUMsU0FDQUMsY0FBQSxFQUNBQyxjQUFBLEVBQ0FDLGNBQUEsSUFJQUMs
R0FDQWpGLG1CQUNBMkMsOEJBR0F6K0IsR0FBQUQsUUFBQWdoQyxHdEU0bU9NLFNBQVUvZ0MsRUFB
UUQsRUFBU0gsR0FFakMsWXVFL3VPQSxTQUFBb2hDLEdBQUFyckIsR0FDQSxRQUFBc3JCLEVBQUE3
L0IsZUFBQXVVLEtBR0F1ckIsRUFBQTkvQixlQUFBdVUsS0FHQXdyQixFQUFBOW5CLEtBQUExRCxJ
QUNBc3JCLEVBQUF0ckIsSUFBQSxHQUNBLElBRUF1ckIsRUFBQXZyQixJQUFBLEdBRUEsSUFHQSxR
QUFBeXJCLEdBQUExckIsRUFBQXRCLEdBQ0EsYUFBQUEsR0FBQXNCLEVBQUFNLGtCQUFBNUIsR0FB
QXNCLEVBQUFPLGlCQUFBb3JCLE1BQUFqdEIsSUFBQXNCLEVBQUFRLHlCQUFBOUIsRUFBQSxHQUFB
c0IsRUFBQVMsNEJBQUEsSUFBQS9CLEVBNUJBLEdBQUFsTixHQUFBdEgsRUFBQSxJQUlBMGhDLEdB
SEExaEMsRUFBQSxHQUNBQSxFQUFBLEdBRUFBLEVBQUEsTUFHQXVoQyxHQUZBdmhDLEVBQUEsR0FF
QSxHQUFBMmhDLFFBQUEsS0FBQXI2QixFQUFBa1AsMEJBQUEsS0FBQWxQLEVBQUFvUCxvQkFBQSxR
QUNBNHFCLEtBQ0FELEtBeUJBTyxHQU9BQyxrQkFBQSxTQUFBQyxHQUNBLE1BQUF4NkIsR0FBQUUs
a0JBQUEsSUFBQWs2QixFQUFBSSxJQUdBQyxrQkFBQSxTQUFBaDlCLEVBQUErOEIsR0FDQS84QixF
QUFBOG5CLGFBQUF2bEIsRUFBQUUsa0JBQUFzNkIsSUFHQUUsb0JBQUEsV0FDQSxNQUFBMTZCLEdB
QUFtUCxvQkFBQSxPQUdBd3JCLG9CQUFBLFNBQUFsOUIsR0FDQUEsRUFBQThuQixhQUFBdmxCLEVB
QUFtUCxvQkFBQSxLQVVBeXJCLHdCQUFBLFNBQUF2aEMsRUFBQTZULEdBQ0EsR0FBQXNCLEdBQUF4
TyxFQUFBb08sV0FBQWxVLGVBQUFiLEdBQUEyRyxFQUFBb08sV0FBQS9VLEdBQUEsSUFDQSxJQUFB
bVYsRUFBQSxDQUNBLEdBQUEwckIsRUFBQTFyQixFQUFBdEIsR0FDQSxRQUVBLElBQUF1QixHQUFB
RCxFQUFBQyxhQUNBLE9BQUFELEdBQUFNLGlCQUFBTixFQUFBUyw0QkFBQSxJQUFBL0IsRUFDQXVC
LEVBQUEsTUFFQUEsRUFBQSxJQUFBMnJCLEVBQUFsdEIsR0FDSyxNQUFBbE4sR0FBQWtPLGtCQUFB
N1UsR0FDTCxNQUFBNlQsRUFDQSxHQUVBN1QsRUFBQSxJQUFBK2dDLEVBQUFsdEIsR0FFQSxNQVVB
MnRCLCtCQUFBLFNBQUF4aEMsRUFBQTZULEdBQ0EsTUFBQTRzQixHQUFBemdDLElBQUEsTUFBQTZU
LEVBR0E3VCxFQUFBLElBQUErZ0MsRUFBQWx0QixHQUZBLElBWUE0dEIsb0JBQUEsU0FBQXI5QixF
QUFBcEUsRUFBQTZULEdBQ0EsR0FBQXNCLEdBQUF4TyxFQUFBb08sV0FBQWxVLGVBQUFiLEdBQUEy
RyxFQUFBb08sV0FBQS9VLEdBQUEsSUFDQSxJQUFBbVYsRUFBQSxDQUNBLEdBQUFJLEdBQUFKLEVB
QUFJLGNBQ0EsSUFBQUEsRUFDQUEsRUFBQW5SLEVBQUF5UCxPQUNPLElBQUFndEIsRUFBQTFyQixF
QUFBdEIsR0FFUCxXQURBdEwsTUFBQW01Qix1QkFBQXQ5QixFQUFBcEUsRUFFTyxJQUFBbVYsRUFB
QUssZ0JBR1BwUixFQUFBK1EsRUFBQUcsY0FBQXpCLE1BQ08sQ0FDUCxHQUFBdUIsR0FBQUQsRUFB
QUMsY0FDQXVzQixFQUFBeHNCLEVBQUFFLGtCQUdBc3NCLEdBQ0F2OUIsRUFBQXc5QixlQUFBRCxF
QUFBdnNCLEVBQUEsR0FBQXZCLEdBQ1NzQixFQUFBTSxpQkFBQU4sRUFBQVMsNEJBQUEsSUFBQS9C
LEVBQ1R6UCxFQUFBOG5CLGFBQUE5VyxFQUFBLElBRUFoUixFQUFBOG5CLGFBQUE5VyxFQUFBLEdB
QUF2QixTQUdLLElBQUFsTixFQUFBa08sa0JBQUE3VSxHQUVMLFdBREFpaEMsR0FBQVkscUJBQUF6
OUIsRUFBQXBFLEVBQUE2VCxJQWVBZ3VCLHFCQUFBLFNBQUF6OUIsRUFBQXBFLEVBQUE2VCxHQUNB
LEdBQUE0c0IsRUFBQXpnQyxHQUFBLENBR0EsTUFBQTZULEVBQ0F6UCxFQUFBMDlCLGdCQUFBOWhD
LEdBRUFvRSxFQUFBOG5CLGFBQUFsc0IsRUFBQSxHQUFBNlQsS0FvQkFrdUIsd0JBQUEsU0FBQTM5
QixFQUFBcEUsR0FDQW9FLEVBQUEwOUIsZ0JBQUE5aEMsSUFnQkEwaEMsdUJBQUEsU0FBQXQ5QixF
QUFBcEUsR0FDQSxHQUFBbVYsR0FBQXhPLEVBQUFvTyxXQUFBbFUsZUFBQWIsR0FBQTJHLEVBQUFv
TyxXQUFBL1UsR0FBQSxJQUNBLElBQUFtVixFQUFBLENBQ0EsR0FBQUksR0FBQUosRUFBQUksY0FD
QSxJQUFBQSxFQUNBQSxFQUFBblIsTUFBQTNDLFFBQ08sSUFBQTBULEVBQUFLLGdCQUFBLENBQ1As
R0FBQTFILEdBQUFxSCxFQUFBRyxZQUNBSCxHQUFBTSxnQkFDQXJSLEVBQUEwSixJQUFBLEVBRUEx
SixFQUFBMEosR0FBQSxPQUdBMUosR0FBQTA5QixnQkFBQTNzQixFQUFBQyxtQkFFS3pPLEdBQUFr
TyxrQkFBQTdVLElBQ0xvRSxFQUFBMDlCLGdCQUFBOWhDLElBYUFQLEdBQUFELFFBQUF5aEMsR3ZF
MndPTSxTQUFVeGhDLEVBQVFELEVBQVNILEdBRWpDLFl3RS85T0EsU0FBQTJpQyxLQUNBLEdBQUF6
NUIsS0FBQXdULGFBQUF4VCxLQUFBc3dCLGNBQUFvSixjQUFBLENBQ0ExNUIsS0FBQXN3QixjQUFB
b0osZUFBQSxDQUVBLElBQUFwdkIsR0FBQXRLLEtBQUFnQyxnQkFBQXNJLE1BQ0FnQixFQUFBc2Ms
RUFBQUcsU0FBQXpkLEVBRUEsT0FBQWdCLEdBQ0FxdUIsRUFBQTM1QixLQUFBNDVCLFFBQUF0dkIs
RUFBQXV2QixVQUFBdnVCLElBa0RBLFFBQUFxdUIsR0FBQW45QixFQUFBcTlCLEVBQUFDLEdBQ0Es
R0FBQUMsR0FBQTVpQyxFQUNBNmlDLEVBQUFyN0IsRUFBQVQsb0JBQUExQixHQUFBdzlCLE9BRUEs
SUFBQUgsRUFBQSxDQUVBLElBREFFLEtBQ0E1aUMsRUFBQSxFQUFlQSxFQUFBMmlDLEVBQUFoZ0Ms
T0FBc0IzQyxJQUNyQzRpQyxFQUFBLEdBQUFELEVBQUEzaUMsS0FBQSxDQUVBLEtBQUFBLEVBQUEs
RUFBZUEsRUFBQTZpQyxFQUFBbGdDLE9BQW9CM0MsSUFBQSxDQUNuQyxHQUFBOGlDLEdBQUFGLEVB
QUF6aEMsZUFBQTBoQyxFQUFBN2lDLEdBQUFtVSxNQUNBMHVCLEdBQUE3aUMsR0FBQThpQyxlQUNB
RCxFQUFBN2lDLEdBQUE4aUMsaUJBR0csQ0FJSCxJQURBRixFQUFBLEdBQUFELEVBQ0EzaUMsRUFB
QSxFQUFlQSxFQUFBNmlDLEVBQUFsZ0MsT0FBb0IzQyxJQUNuQyxHQUFBNmlDLEVBQUE3aUMsR0FB
QW1VLFFBQUF5dUIsRUFFQSxZQURBQyxFQUFBN2lDLEdBQUE4aUMsVUFBQSxFQUlBRCxHQUFBbGdD
LFNBQ0FrZ0MsRUFBQSxHQUFBQyxVQUFBLElBZ0ZBLFFBQUFDLEdBQUE5ekIsR0FDQSxHQUFBa0Us
R0FBQXRLLEtBQUFnQyxnQkFBQXNJLE1BQ0E1RSxFQUFBa2lCLEVBQUFLLGdCQUFBM2QsRUFBQWxF
LEVBTUEsT0FKQXBHLE1BQUF3VCxjQUNBeFQsS0FBQXN3QixjQUFBb0osZUFBQSxHQUVBdDVCLEVB
QUEyQyxLQUFBMDJCLEVBQUF6NUIsTUFDQTBGLEVBdkxBLEdBQUF2QyxHQUFBck0sRUFBQSxHQUVB
OHdCLEVBQUE5d0IsRUFBQSxJQUNBNkgsRUFBQTdILEVBQUEsR0FDQXNKLEVBQUF0SixFQUFBLEdB
S0FxakMsR0FIQXJqQyxFQUFBLElBR0EsR0EwR0FzakMsR0FDQUMsYUFBQSxTQUFBNzlCLEVBQUE4
TixHQUNBLE1BQUFuSCxNQUFxQm1ILEdBQ3JCc2MsU0FBQXBxQixFQUFBOHpCLGNBQUExSixTQUNB
dGIsVUFBQXBTLE1BSUFvaEMsYUFBQSxTQUFBOTlCLEVBQUE4TixHQUtBLEdBQUFnQixHQUFBc2Ms
RUFBQUcsU0FBQXpkLEVBQ0E5TixHQUFBOHpCLGVBQ0FvSixlQUFBLEVBQ0FhLGFBQUEsTUFBQWp2
QixJQUFBaEIsRUFBQWt3QixhQUNBQyxVQUFBLEtBQ0E3VCxTQUFBc1QsRUFBQW52QixLQUFBdk8s
R0FDQWsrQixZQUFBZCxRQUFBdHZCLEVBQUF1dkIsZUFHQTNnQyxLQUFBb1IsRUFBQWdCLFdBQUFw
UyxLQUFBb1IsRUFBQWt3QixjQUFBTCxJQUVBQSxHQUFBLElBSUFRLHNCQUFBLFNBQUFuK0IsR0FH
QSxNQUFBQSxHQUFBOHpCLGNBQUFpSyxjQUdBSyxrQkFBQSxTQUFBcCtCLEdBQ0EsR0FBQThOLEdB
QUE5TixFQUFBd0YsZ0JBQUFzSSxLQUlBOU4sR0FBQTh6QixjQUFBaUssaUJBQUFyaEMsRUFFQSxJ
QUFBd2hDLEdBQUFsK0IsRUFBQTh6QixjQUFBb0ssV0FDQWwrQixHQUFBOHpCLGNBQUFvSyxZQUFB
ZCxRQUFBdHZCLEVBQUF1dkIsU0FFQSxJQUFBdnVCLEdBQUFzYyxFQUFBRyxTQUFBemQsRUFDQSxP
QUFBZ0IsR0FDQTlPLEVBQUE4ekIsY0FBQW9KLGVBQUEsRUFDQUMsRUFBQW45QixFQUFBbzlCLFFB
QUF0dkIsRUFBQXV2QixVQUFBdnVCLElBQ0tvdkIsSUFBQWQsUUFBQXR2QixFQUFBdXZCLFlBRUws
TUFBQXZ2QixFQUFBa3dCLGFBQ0FiLEVBQUFuOUIsRUFBQW85QixRQUFBdHZCLEVBQUF1dkIsVUFB
QXZ2QixFQUFBa3dCLGNBR0FiLEVBQUFuOUIsRUFBQW85QixRQUFBdHZCLEVBQUF1dkIsVUFBQXZ2
QixFQUFBdXZCLFlBQUEsTUFpQkEzaUMsR0FBQUQsUUFBQW1qQyxHeEUyL09NLFNBQVVsakMsRUFB
UUQsR3lFdHJQeEIsUUFBQTRqQyxLQUNBLFNBQUExaEMsT0FBQSxtQ0FFQSxRQUFBMmhDLEtBQ0Es
U0FBQTNoQyxPQUFBLHFDQXNCQSxRQUFBNGhDLEdBQUFDLEdBQ0EsR0FBQUMsSUFBQUMsV0FFQSxN
QUFBQSxZQUFBRixFQUFBLEVBR0EsS0FBQUMsSUFBQUosSUFBQUksSUFBQUMsV0FFQSxNQURBRCxH
QUFBQyxXQUNBQSxXQUFBRixFQUFBLEVBRUEsS0FFQSxNQUFBQyxHQUFBRCxFQUFBLEdBQ0ssTUFB
QWxpQyxHQUNMLElBRUEsTUFBQW1pQyxHQUFBNWpDLEtBQUEsS0FBQTJqQyxFQUFBLEdBQ1MsTUFB
QWxpQyxHQUVULE1BQUFtaUMsR0FBQTVqQyxLQUFBMkksS0FBQWc3QixFQUFBLEtBTUEsUUFBQUcs
R0FBQUMsR0FDQSxHQUFBQyxJQUFBQyxhQUVBLE1BQUFBLGNBQUFGLEVBR0EsS0FBQUMsSUFBQVAs
SUFBQU8sSUFBQUMsYUFFQSxNQURBRCxHQUFBQyxhQUNBQSxhQUFBRixFQUVBLEtBRUEsTUFBQUMs
R0FBQUQsR0FDSyxNQUFBdGlDLEdBQ0wsSUFFQSxNQUFBdWlDLEdBQUFoa0MsS0FBQSxLQUFBK2pD
LEdBQ1MsTUFBQXRpQyxHQUdULE1BQUF1aUMsR0FBQWhrQyxLQUFBMkksS0FBQW83QixLQVlBLFFB
QUFHLEtBQ0FDLEdBQUFDLElBR0FELEdBQUEsRUFDQUMsRUFBQTNoQyxPQUNBd0ssRUFBQW0zQixF
QUFBbk0sT0FBQWhyQixHQUVBbzNCLEdBQUEsRUFFQXAzQixFQUFBeEssUUFDQTZoQyxLQUlBLFFB
QUFBLEtBQ0EsSUFBQUgsRUFBQSxDQUdBLEdBQUFJLEdBQUFiLEVBQUFRLEVBQ0FDLElBQUEsQ0FH
QSxLQURBLEdBQUFsNkIsR0FBQWdELEVBQUF4SyxPQUNBd0gsR0FBQSxDQUdBLElBRkFtNkIsRUFB
QW4zQixFQUNBQSxPQUNBbzNCLEVBQUFwNkIsR0FDQW02QixHQUNBQSxFQUFBQyxHQUFBRyxLQUdB
SCxJQUFBLEVBQ0FwNkIsRUFBQWdELEVBQUF4SyxPQUVBMmhDLEVBQUEsS0FDQUQsR0FBQSxFQUNB
TCxFQUFBUyxJQWlCQSxRQUFBRSxHQUFBZCxFQUFBZSxHQUNBLzdCLEtBQUFnN0IsTUFDQWg3QixL
QUFBKzdCLFFBWUEsUUFBQXRQLE1BaEtBLEdBT0F3TyxHQUNBSSxFQVJBVyxFQUFBOWtDLEVBQUFE
LFlBZ0JBLFdBQ0EsSUFFQWdrQyxFQURBLG1CQUFBQyxZQUNBQSxXQUVBTCxFQUVLLE1BQUEvaEMs
R0FDTG1pQyxFQUFBSixFQUVBLElBRUFRLEVBREEsbUJBQUFDLGNBQ0FBLGFBRUFSLEVBRUssTUFB
QWhpQyxHQUNMdWlDLEVBQUFQLEtBdURBLElBRUFXLEdBRkFuM0IsS0FDQWszQixHQUFBLEVBRUFF
LEdBQUEsQ0F5Q0FNLEdBQUFDLFNBQUEsU0FBQWpCLEdBQ0EsR0FBQTVoQyxHQUFBLEdBQUF3UixP
QUFBL1EsVUFBQUMsT0FBQSxFQUNBLElBQUFELFVBQUFDLE9BQUEsRUFDQSxPQUFBM0MsR0FBQSxF
QUF1QkEsRUFBQTBDLFVBQUFDLE9BQXNCM0MsSUFDN0NpQyxFQUFBakMsRUFBQSxHQUFBMEMsVUFB
QTFDLEVBR0FtTixHQUFBekcsS0FBQSxHQUFBaStCLEdBQUFkLEVBQUE1aEMsSUFDQSxJQUFBa0ws
RUFBQXhLLFFBQUEwaEMsR0FDQVQsRUFBQVksSUFTQUcsRUFBQXpqQyxVQUFBd2pDLElBQUEsV0FD
QTc3QixLQUFBZzdCLElBQUF6TyxNQUFBLEtBQUF2c0IsS0FBQSs3QixRQUVBQyxFQUFBRSxNQUFB
LFVBQ0FGLEVBQUFHLFNBQUEsRUFDQUgsRUFBQUksT0FDQUosRUFBQUssUUFDQUwsRUFBQXJ5QixR
QUFBLEdBQ0FxeUIsRUFBQU0sWUFJQU4sRUFBQU8sR0FBQTlQLEVBQ0F1UCxFQUFBUSxZQUFBL1As
RUFDQXVQLEVBQUFTLEtBQUFoUSxFQUNBdVAsRUFBQVUsSUFBQWpRLEVBQ0F1UCxFQUFBVyxlQUFB
bFEsRUFDQXVQLEVBQUFZLG1CQUFBblEsRUFDQXVQLEVBQUFhLEtBQUFwUSxFQUNBdVAsRUFBQWMs
Z0JBQUFyUSxFQUNBdVAsRUFBQWUsb0JBQUF0USxFQUVBdVAsRUFBQXZCLFVBQUEsU0FBQWhqQyxH
QUFxQyxVQUVyQ3VrQyxFQUFBZ0IsUUFBQSxTQUFBdmxDLEdBQ0EsU0FBQTBCLE9BQUEscUNBR0E2
aUMsRUFBQWlCLElBQUEsV0FBMkIsV0FDM0JqQixFQUFBa0IsTUFBQSxTQUFBQyxHQUNBLFNBQUFo
a0MsT0FBQSxtQ0FFQTZpQyxFQUFBb0IsTUFBQSxXQUE0QixXekV3c1B0QixTQUFVbG1DLEVBQVFE
LEVBQVNILEdBRWpDLFkwRXIyUEEsU0FBQWl3QixHQUFBMWMsR0FDQSxHQUFBQSxFQUFBLENBQ0Es
R0FBQTVTLEdBQUE0UyxFQUFBbEksU0FDQSxJQUFBMUssRUFDQSxzQ0FBQUEsRUFBQSxLQUdBLFNB
VUEsUUFBQTRsQyxHQUFBcDdCLEdBQ0EseUJBQUFBLElBQUEsb0JBQUFBLEdBQUE1SixXQUFBLG1C
QUFBNEosR0FBQTVKLFVBQUF3VixnQkFBQSxtQkFBQTVMLEdBQUE1SixVQUFBbVcsaUJBV0EsUUFB
QTh1QixHQUFBemhDLEVBQUEwaEMsR0FDQSxHQUFBajJCLEVBRUEsV0FBQXpMLElBQUEsSUFBQUEs
RUFDQXlMLEVBQUFrMkIsRUFBQUMsT0FBQUgsT0FDRyxxQkFBQXpoQyxHQUFBLENBQ0gsR0FBQTBP
LEdBQUExTyxFQUNBb0csRUFBQXNJLEVBQUF0SSxJQUNBLHVCQUFBQSxJQUFBLGlCQUFBQSxHQUFB
LENBQ0EsR0FBQXk3QixHQUFBLEVBTUFBLElBQUEzVyxFQUFBeGMsRUFBQUUsUUFDQS9NLEVBQUEs
WUFBQXVFLGFBQUF5N0IsR0FJQSxpQkFBQW56QixHQUFBdEksS0FDQXFGLEVBQUFxMkIsRUFBQUMs
d0JBQUFyekIsR0FDSzh5QixFQUFBOXlCLEVBQUF0SSxPQUlMcUYsRUFBQSxHQUFBaUQsR0FBQXRJ
LEtBQUFzSSxHQUdBakQsRUFBQThHLGNBQ0E5RyxFQUFBOEcsWUFBQTlHLEVBQUF1MkIsZ0JBR0F2
MkIsRUFBQSxHQUFBdzJCLEdBQUF2ekIsT0FFRyxpQkFBQTFPLElBQUEsaUJBQUFBLEdBQ0h5TCxF
QUFBcTJCLEVBQUFJLHNCQUFBbGlDLEdBRUE2QixFQUFBLFlBQUE3QixHQXlCQSxPQWZBeUwsR0FB
QTAyQixZQUFBLEVBQ0ExMkIsRUFBQTIyQixZQUFBLEtBY0EzMkIsRUE1R0EsR0FBQTVKLEdBQUE1
RyxFQUFBLEdBQ0FxTSxFQUFBck0sRUFBQSxHQUVBb25DLEVBQUFwbkMsRUFBQSxLQUNBMG1DLEVB
QUExbUMsRUFBQSxJQUNBNm1DLEVBQUE3bUMsRUFBQSxJQU9BZ25DLEdBTEFobkMsRUFBQSxLQUNB
QSxFQUFBLEdBQ0FBLEVBQUEsR0FHQSxTQUFBeVQsR0FDQXZLLEtBQUFtK0IsVUFBQTV6QixJQWtH
QXBILEdBQUEyNkIsRUFBQXpsQyxVQUFBNmxDLEdBQ0FFLDJCQUFBZCxJQUdBcG1DLEVBQUFELFFB
QUFxbUMsRzFFczRQTSxTQUFVcG1DLEVBQVFELEVBQVNILEdBRWpDLFkyRTEvUEEsSUFBQTRHLEdB
QUE1RyxFQUFBLEdBRUFrUyxFQUFBbFMsRUFBQSxJQUlBdW5DLEdBRkF2bkMsRUFBQSxJQUdBd25D
LEtBQUEsRUFDQUMsVUFBQSxFQUNBQyxNQUFBLEVBRUFDLFFBQUEsU0FBQTVpQyxHQUNBLGNBQUFB
LElBQUEsSUFBQUEsRUFDQXdpQyxFQUFBRyxNQUNLeDFCLEVBQUFPLGVBQUExTixHQUNMLG1CQUFB
QSxHQUFBb0csS0FDQW84QixFQUFBRSxVQUVBRixFQUFBQyxTQUdBNWdDLEdBQUEsS0FBQTdCLEtB
SUEzRSxHQUFBRCxRQUFBb25DLEczRTRnUU0sU0FBVW5uQyxFQUFRRCxFQUFTSCxHQUVqQyxZNEV4
aVFBLElBQUE0bkMsR0FFQUMsR0FDQUMsNEJBQUEsU0FBQTl6QixHQUNBNHpCLEVBQUE1ekIsSUFJ
QTB5QixHQUNBQyxPQUFBLFNBQUFvQixHQUNBLE1BQUFILEdBQUFHLElBSUFyQixHQUFBNTRCLFVB
QUErNUIsRUFFQXpuQyxFQUFBRCxRQUFBdW1DLEc1RXlqUU0sU0FBVXRtQyxFQUFRRCxFQUFTSCxH
QUVqQyxZNkVqalFBLFNBQUE4bUMsR0FBQXJ6QixHQUVBLE1BREF1MEIsSUFBQXBoQyxFQUFBLE1B
QUE2TSxFQUFBdEksTUFDQSxHQUFBNjhCLEdBQUF2MEIsR0FPQSxRQUFBd3pCLEdBQUEzdUIsR0FD
QSxVQUFBMnZCLEdBQUEzdkIsR0FPQSxRQUFBNHZCLEdBQUE1aUMsR0FDQSxNQUFBQSxhQUFBMmlD
LEdBNUNBLEdBQUFyaEMsR0FBQTVHLEVBQUEsR0FJQWdvQyxHQUZBaG9DLEVBQUEsR0FFQSxNQUNB
aW9DLEVBQUEsS0FFQUUsR0FHQUMsNEJBQUEsU0FBQUMsR0FDQUwsRUFBQUssR0FJQUMseUJBQUEs
U0FBQUQsR0FDQUosRUFBQUksSUErQkF4QixHQUNBQywwQkFDQUcsd0JBQ0FpQixrQkFDQXA2QixV
QUFBcTZCLEVBR0EvbkMsR0FBQUQsUUFBQTBtQyxHN0U0bFFNLFNBQVV6bUMsRUFBUUQsRUFBU0gs
R0FFakMsWThFbm5RQSxTQUFBdW9DLEdBQUFqakMsRUFBQWdkLEdBR0EsTUFBQWhkLElBQUEsaUJB
QUFBLElBQUEsTUFBQUEsRUFBQVQsSUFFQWt1QixFQUFBMVEsT0FBQS9jLEVBQUFULEtBR0F5ZCxF
QUFBM2EsU0FBQSxJQVdBLFFBQUE2Z0MsR0FBQXJpQyxFQUFBc2lDLEVBQUF4K0IsRUFBQXkrQixH
QUNBLEdBQUF2OUIsU0FBQWhGLEVBT0EsSUFMQSxjQUFBZ0YsR0FBQSxZQUFBQSxJQUVBaEYsRUFB
QSxNQUdBLE9BQUFBLEdBQUEsV0FBQWdGLEdBQUEsV0FBQUEsR0FHQSxXQUFBQSxHQUFBaEYsRUFB
QXVOLFdBQUFSLEVBS0EsTUFKQWpKLEdBQUF5K0IsRUFBQXZpQyxFQUdBLEtBQUFzaUMsRUFBQUUs
RUFBQUosRUFBQXBpQyxFQUFBLEdBQUFzaUMsR0FDQSxDQUdBLElBQUFHLEdBQ0FDLEVBQ0FDLEVB
QUEsRUFDQUMsRUFBQSxLQUFBTixFQUFBRSxFQUFBRixFQUFBTyxDQUVBLElBQUFsMUIsTUFBQXNY
LFFBQUFqbEIsR0FDQSxPQUFBOUYsR0FBQSxFQUFtQkEsRUFBQThGLEVBQUFuRCxPQUFxQjNDLElB
Q3hDdW9DLEVBQUF6aUMsRUFBQTlGLEdBQ0F3b0MsRUFBQUUsRUFBQVIsRUFBQUssRUFBQXZvQyxH
QUNBeW9DLEdBQUFOLEVBQUFJLEVBQUFDLEVBQUE1K0IsRUFBQXkrQixPQUVHLENBQ0gsR0FBQU8s
R0FBQUMsRUFBQS9pQyxFQUNBLElBQUE4aUMsRUFBQSxDQUNBLEdBQ0FFLEdBREFDLEVBQUFILEVB
QUExb0MsS0FBQTRGLEVBRUEsSUFBQThpQyxJQUFBOWlDLEVBQUFrakMsUUFFQSxJQURBLEdBQUFD
LEdBQUEsSUFDQUgsRUFBQUMsRUFBQTdRLFFBQUFmLE1BQ0FvUixFQUFBTyxFQUFBMzBCLE1BQ0Fx
MEIsRUFBQUUsRUFBQVIsRUFBQUssRUFBQVUsS0FDQVIsR0FBQU4sRUFBQUksRUFBQUMsRUFBQTUr
QixFQUFBeStCLE9BZUEsUUFBQVMsRUFBQUMsRUFBQTdRLFFBQUFmLE1BQUEsQ0FDQSxHQUFBK1Is
R0FBQUosRUFBQTMwQixLQUNBKzBCLEtBQ0FYLEVBQUFXLEVBQUEsR0FDQVYsRUFBQUUsRUFBQWhX
LEVBQUExUSxPQUFBa25CLEVBQUEsSUFBQVAsRUFBQVQsRUFBQUssRUFBQSxHQUNBRSxHQUFBTixF
QUFBSSxFQUFBQyxFQUFBNStCLEVBQUF5K0IsU0FJSyxlQUFBdjlCLEVBQUEsQ0FDTCxHQUFBcStC
LEdBQUEsR0FhQUMsRUFBQTdsQyxPQUFBdUMsRUFDb09TLEdBQUEseUJBQUE2aUMsRUFBQSxxQkFB
K0czb0MsT0FBQXdELEtBQUE2QixHQUFBbEMsS0FBQSxVQUF5Q3dsQyxFQUFBRCxJQUk1WCxNQUFB
VixHQW1CQSxRQUFBWSxHQUFBdmpDLEVBQUE4RCxFQUFBeStCLEdBQ0EsYUFBQXZpQyxFQUNBLEVB
R0FxaUMsRUFBQXJpQyxFQUFBLEdBQUE4RCxFQUFBeStCLEdBL0pBLEdBQUE5aEMsR0FBQTVHLEVB
QUEsR0FHQWtULEdBREFsVCxFQUFBLElBQ0FBLEVBQUEsTUFFQWtwQyxFQUFBbHBDLEVBQUEsS0FF
QSt5QixHQURBL3lCLEVBQUEsR0FDQUEsRUFBQSxLQUdBMm9DLEdBRkEzb0MsRUFBQSxHQUVBLEtB
Q0FncEMsRUFBQSxHQXVKQTVvQyxHQUFBRCxRQUFBdXBDLEc5RXFxUU0sU0FBVXRwQyxFQUFRRCxF
QUFTSCxHQUVqQyxZK0VqMFFBLFNBQUEycEMsR0FBQXhkLEdBRUEsR0FBQTZJLEdBQUEzTCxTQUFB
OW5CLFVBQUFvRyxTQUNBbkcsRUFBQVYsT0FBQVMsVUFBQUMsZUFDQW9vQyxFQUFBakksT0FBQSxJ
QUFBM00sRUFFQXowQixLQUFBaUIsR0FFQWdCLFFBQUEsc0JBQTZCLFFBRTdCQSxRQUFBLHNFQUNB
LEtBQ0EsR0FBQWlDLEdBQUF1d0IsRUFBQXowQixLQUFBNHJCLEVBQ0EsT0FBQXlkLEdBQUFud0Is
S0FBQWhWLEdBQ0csTUFBQUYsR0FDSCxVQThGQSxRQUFBc2xDLEdBQUEvSCxHQUNBLEdBQUFnSSxH
QUFBQyxFQUFBakksRUFDQSxJQUFBZ0ksRUFBQSxDQUNBLEdBQUFFLEdBQUFGLEVBQUFFLFFBRUFD
LEdBQUFuSSxHQUNBa0ksRUFBQTVsQyxRQUFBeWxDLElBSUEsUUFBQUssR0FBQXZwQyxFQUFBOEQs
RUFBQTBsQyxHQUNBLG1CQUFBeHBDLEdBQUEsWUFBQThELEVBQUEsUUFBQUEsRUFBQTJsQyxTQUFB
NW5DLFFBQUEsb0JBQUFpQyxFQUFBNGxDLFdBQUEsSUFBQUYsRUFBQSxnQkFBQUEsRUFBQSxRQUdB
LFFBQUFHLEdBQUE3MkIsR0FDQSxhQUFBQSxFQUNBLFNBQ0csaUJBQUFBLElBQUEsaUJBQUFBLEdB
Q0gsUUFDRyxpQkFBQUEsR0FBQXRJLEtBQ0hzSSxFQUFBdEksS0FFQXNJLEVBQUF0SSxLQUFBOG5C
LGFBQUF4ZixFQUFBdEksS0FBQXhLLE1BQUEsVUFJQSxRQUFBNHBDLEdBQUF6SSxHQUNBLEdBR0Fx
SSxHQUhBeHBDLEVBQUE2cEMsRUFBQUYsZUFBQXhJLEdBQ0FydUIsRUFBQSsyQixFQUFBQyxXQUFB
M0ksR0FDQTRJLEVBQUFGLEVBQUFHLFdBQUE3SSxFQU1BLE9BSkE0SSxLQUNBUCxFQUFBSyxFQUFB
RixlQUFBSSxJQUdBUixFQUFBdnBDLEVBQUE4UyxLQUFBYSxRQUFBNjFCLEdBdkpBLEdBc0NBUyxH
QUNBYixFQUNBRSxFQUNBWSxFQUNBQyxFQUNBQyxFQUNBQyxFQTVDQXBrQyxFQUFBNUcsRUFBQSxJ
QUVBK04sRUFBQS9OLEVBQUEsSUF3QkFpckMsR0F0QkFqckMsRUFBQSxHQUNBQSxFQUFBLEdBdUJB
LG1CQUFBOFQsT0FBQXBQLE1BRUEsbUJBQUF3bUMsTUFBQXZCLEVBQUF1QixNQUVBLE1BQUFBLElB
QUEzcEMsV0FBQSxtQkFBQTJwQyxLQUFBM3BDLFVBQUErQyxNQUFBcWxDLEVBQUF1QixJQUFBM3BD
LFVBQUErQyxPQUVBLG1CQUFBNm1DLE1BQUF4QixFQUFBd0IsTUFFQSxNQUFBQSxJQUFBNXBDLFdB
QUEsbUJBQUE0cEMsS0FBQTVwQyxVQUFBK0MsTUFBQXFsQyxFQUFBd0IsSUFBQTVwQyxVQUFBK0Ms
TUFVQSxJQUFBMm1DLEVBQUEsQ0FDQSxHQUFBRyxHQUFBLEdBQUFGLEtBQ0FHLEVBQUEsR0FBQUYs
SUFFQVAsR0FBQSxTQUFBOUksRUFBQWdJLEdBQ0FzQixFQUFBdHNCLElBQUFnakIsRUFBQWdJLElB
RUFDLEVBQUEsU0FBQWpJLEdBQ0EsTUFBQXNKLEdBQUFscUMsSUFBQTRnQyxJQUVBbUksRUFBQSxT
QUFBbkksR0FDQXNKLEVBQUEsT0FBQXRKLElBRUErSSxFQUFBLFdBQ0EsTUFBQS8yQixPQUFBcFAs
S0FBQTBtQyxFQUFBOW1DLFNBR0F3bUMsRUFBQSxTQUFBaEosR0FDQXVKLEVBQUFDLElBQUF4SixJ
QUVBaUosRUFBQSxTQUFBakosR0FDQXVKLEVBQUEsT0FBQXZKLElBRUFrSixFQUFBLFdBQ0EsTUFB
QWwzQixPQUFBcFAsS0FBQTJtQyxFQUFBL21DLGFBRUMsQ0FDRCxHQUFBaW5DLE1BQ0FDLEtBSUFD
LEVBQUEsU0FBQTNKLEdBQ0EsVUFBQUEsR0FFQTRKLEVBQUEsU0FBQTdtQyxHQUNBLE1BQUE4bUMs
VUFBQTltQyxFQUFBK21DLE9BQUEsT0FHQWhCLEdBQUEsU0FBQTlJLEVBQUFnSSxHQUNBLEdBQUFq
bEMsR0FBQTRtQyxFQUFBM0osRUFDQXlKLEdBQUExbUMsR0FBQWlsQyxHQUVBQyxFQUFBLFNBQUFq
SSxHQUNBLEdBQUFqOUIsR0FBQTRtQyxFQUFBM0osRUFDQSxPQUFBeUosR0FBQTFtQyxJQUVBb2xD
LEVBQUEsU0FBQW5JLEdBQ0EsR0FBQWo5QixHQUFBNG1DLEVBQUEzSixTQUNBeUosR0FBQTFtQyxJ
QUVBZ21DLEVBQUEsV0FDQSxNQUFBL3BDLFFBQUF3RCxLQUFBaW5DLEdBQUF2bkMsSUFBQTBuQyxJ
QUdBWixFQUFBLFNBQUFoSixHQUNBLEdBQUFqOUIsR0FBQTRtQyxFQUFBM0osRUFDQTBKLEdBQUEz
bUMsSUFBQSxHQUVBa21DLEVBQUEsU0FBQWpKLEdBQ0EsR0FBQWo5QixHQUFBNG1DLEVBQUEzSixT
QUNBMEosR0FBQTNtQyxJQUVBbW1DLEVBQUEsV0FDQSxNQUFBbHFDLFFBQUF3RCxLQUFBa25DLEdB
QUF4bkMsSUFBQTBuQyxJQUlBLEdBQUFHLE1Bd0NBckIsR0FDQXNCLGNBQUEsU0FBQWhLLEVBQUFp
SyxHQUNBLEdBQUFqQyxHQUFBQyxFQUFBakksRUFDQWdJLElBQUFsakMsRUFBQSxPQUNBa2pDLEVB
QUFFLFNBQUErQixDQUVBLFFBQUExckMsR0FBQSxFQUFtQkEsRUFBQTByQyxFQUFBL29DLE9BQXlC
M0MsSUFBQSxDQUM1QyxHQUFBMnJDLEdBQUFELEVBQUExckMsR0FDQTRyQyxFQUFBbEMsRUFBQWlD
LEVBQ0FDLElBQUFybEMsRUFBQSxPQUNBLE1BQUFxbEMsRUFBQWpDLFVBQUEsaUJBQUFpQyxHQUFB
eDRCLFNBQUEsTUFBQXc0QixFQUFBeDRCLFNBQUE3TSxFQUFBLE9BQ0FxbEMsRUFBQTNZLFdBQUEx
c0IsRUFBQSxNQUNBLE1BQUFxbEMsRUFBQUMsV0FDQUQsRUFBQUMsU0FBQXBLLEdBS0FtSyxFQUFB
QyxXQUFBcEssR0FBQWw3QixFQUFBLE1BQUFvbEMsRUFBQUMsRUFBQUMsU0FBQXBLLEtBR0FxSyx1
QkFBQSxTQUFBckssRUFBQXJ1QixFQUFBeTRCLEdBU0F0QixFQUFBOUksR0FQQXJ1QixVQUNBeTRC
LFdBQ0E1ekIsS0FBQSxLQUNBMHhCLFlBQ0ExVyxXQUFBLEVBQ0E4WSxZQUFBLEtBSUFDLHdCQUFB
LFNBQUF2SyxFQUFBcnVCLEdBQ0EsR0FBQXEyQixHQUFBQyxFQUFBakksRUFDQWdJLE1BQUF4VyxZ
QUtBd1csRUFBQXIyQixZQUVBNjRCLGlCQUFBLFNBQUF4SyxHQUNBLEdBQUFnSSxHQUFBQyxFQUFB
akksRUFDQWdJLElBQUFsakMsRUFBQSxPQUNBa2pDLEVBQUF4VyxXQUFBLEVBQ0EsSUFBQXdXLEVB
QUFvQyxVQUVBcEIsRUFBQWhKLElBR0F5SyxrQkFBQSxTQUFBekssR0FDQSxHQUFBZ0ksR0FBQUMs
RUFBQWpJLEVBQ0FnSSxNQUFBeFcsV0FLQXdXLEVBQUFzQyxlQUVBSSxtQkFBQSxTQUFBMUssR0FD
QSxHQUFBZ0ksR0FBQUMsRUFBQWpJLEVBQ0EsSUFBQWdJLEVBQUEsQ0FNQUEsRUFBQXhXLFdBQUEs
Q0FDQSxLQUFBd1csRUFBQW9DLFVBRUFuQixFQUFBakosR0FHQStKLEVBQUE5a0MsS0FBQSs2QixJ
QUVBMksseUJBQUEsV0FDQSxJQUFBakMsRUFBQWtDLGdCQUFBLENBS0EsT0FBQXJzQyxHQUFBLEVB
QW1CQSxFQUFBd3JDLEVBQUE3b0MsT0FBeUIzQyxJQUFBLENBRTVDd3BDLEVBREFnQyxFQUFBeHJD
LElBR0F3ckMsRUFBQTdvQyxPQUFBLElBRUFzd0IsVUFBQSxTQUFBd08sR0FDQSxHQUFBZ0ksR0FB
QUMsRUFBQWpJLEVBQ0EsU0FBQWdJLEtBQUF4VyxXQUVBcVosd0JBQUEsU0FBQUMsR0FDQSxHQUFB
aEcsR0FBQSxFQUNBLElBQUFnRyxFQUFBLENBQ0EsR0FBQWpzQyxHQUFBMnBDLEVBQUFzQyxHQUNB
cjVCLEVBQUFxNUIsRUFBQWo1QixNQUNBaXpCLElBQUFzRCxFQUFBdnBDLEVBQUFpc0MsRUFBQXQ0
QixRQUFBZixLQUFBbEksV0FHQSxHQUFBd2hDLEdBQUE5K0IsRUFBQUMsUUFDQTh6QixFQUFBK0ss
S0FBQUMsUUFHQSxPQURBbEcsSUFBQTRELEVBQUF1QyxxQkFBQWpMLElBR0FpTCxxQkFBQSxTQUFB
akwsR0FFQSxJQURBLEdBQUE4RSxHQUFBLEdBQ0E5RSxHQUNBOEUsR0FBQTJELEVBQUF6SSxHQUNB
QSxFQUFBMEksRUFBQXdDLFlBQUFsTCxFQUVBLE9BQUE4RSxJQUVBcUcsWUFBQSxTQUFBbkwsR0FD
QSxHQUFBZ0ksR0FBQUMsRUFBQWpJLEVBQ0EsT0FBQWdJLEtBQUFFLGFBRUFNLGVBQUEsU0FBQXhJ
LEdBQ0EsR0FBQXJ1QixHQUFBKzJCLEVBQUFDLFdBQUEzSSxFQUNBLE9BQUFydUIsR0FHQTYyQixF
QUFBNzJCLEdBRkEsTUFJQWczQixXQUFBLFNBQUEzSSxHQUNBLEdBQUFnSSxHQUFBQyxFQUFBakks
RUFDQSxPQUFBZ0ksS0FBQXIyQixRQUFBLE1BRUFrM0IsV0FBQSxTQUFBN0ksR0FDQSxHQUFBcnVC
LEdBQUErMkIsRUFBQUMsV0FBQTNJLEVBQ0EsT0FBQXJ1QixNQUFBRSxPQUdBRixFQUFBRSxPQUFB
bTVCLFNBRkEsTUFJQUUsWUFBQSxTQUFBbEwsR0FDQSxHQUFBZ0ksR0FBQUMsRUFBQWpJLEVBQ0Es
T0FBQWdJLEtBQUFvQyxTQUFBLE1BRUFnQixVQUFBLFNBQUFwTCxHQUNBLEdBQUFnSSxHQUFBQyxF
QUFBakksR0FDQXJ1QixFQUFBcTJCLElBQUFyMkIsUUFBQSxJQUVBLE9BREEsT0FBQUEsSUFBQWEs
UUFBQSxNQUdBNjRCLFFBQUEsU0FBQXJMLEdBQ0EsR0FBQXJ1QixHQUFBKzJCLEVBQUFDLFdBQUEz
SSxFQUNBLHdCQUFBcnVCLEdBQ0FBLEVBQ0ssaUJBQUFBLEdBQ0wsR0FBQUEsRUFFQSxNQUdBMjVC
LGVBQUEsU0FBQXRMLEdBQ0EsR0FBQWdJLEdBQUFDLEVBQUFqSSxFQUNBLE9BQUFnSSxLQUFBc0Ms
WUFBQSxHQUlBcEIsYUFDQXFDLGlCQUFBeEMsRUFFQXlDLDRCQUFBLFNBQUFDLEVBQUFDLEdBQ0Es
c0JBQUFsaUMsU0FBQW1pQyxXQUFBLENBSUEsR0FBQUMsTUFDQWIsRUFBQTkrQixFQUFBQyxRQUNB
OHpCLEVBQUErSyxLQUFBQyxRQUVBLEtBU0EsSUFSQVMsR0FDQUcsRUFBQTNtQyxNQUNBcEcsS0FB
QW1oQyxFQUFBMEksRUFBQUYsZUFBQXhJLEdBQUEsS0FDQXNJLFNBQUFvRCxJQUFBcEQsU0FBQSxL
QUNBQyxXQUFBbUQsSUFBQW5ELFdBQUEsT0FJQXZJLEdBQUEsQ0FDQSxHQUFBcnVCLEdBQUErMkIs
RUFBQUMsV0FBQTNJLEdBQ0FvSyxFQUFBMUIsRUFBQXdDLFlBQUFsTCxHQUNBNEksRUFBQUYsRUFB
QUcsV0FBQTdJLEdBQ0FxSSxFQUFBTyxFQUFBRixFQUFBRixlQUFBSSxHQUFBLEtBQ0FqbUMsRUFB
QWdQLEtBQUFhLE9BQ0FvNUIsR0FBQTNtQyxNQUNBcEcsS0FBQXdwQyxFQUNBQyxTQUFBM2xDLElB
QUEybEMsU0FBQSxLQUNBQyxXQUFBNWxDLElBQUE0bEMsV0FBQSxPQUVBdkksRUFBQW9LLEdBRUss
TUFBQTNuQyxJQUtMK0csUUFBQW1pQyxXQUFBQyxLQUVBQywyQkFBQSxXQUNBLG1CQUFBcmlDLFNB
QUFzaUMsZUFHQXRpQyxRQUFBc2lDLGlCQUlBeHRDLEdBQUFELFFBQUFxcUMsRy9FMDFRTSxTQUFV
cHFDLEVBQVFELEVBQVNILEdBRWpDLFlnRnhzUkEsSUFBQTBDLEdBQUExQyxFQUFBLEdBTUE2dEMs
R0FTQUMsT0FBQSxTQUFBdHBDLEVBQUF1cEMsRUFBQTlqQyxHQUNBLE1BQUF6RixHQUFBOEQsa0JB
Q0E5RCxFQUFBOEQsaUJBQUF5bEMsRUFBQTlqQyxHQUFBLElBRUEwVSxPQUFBLFdBQ0FuYSxFQUFB
d3BDLG9CQUFBRCxFQUFBOWpDLEdBQUEsTUFHS3pGLEVBQUErRCxhQUNML0QsRUFBQStELFlBQUEs
S0FBQXdsQyxFQUFBOWpDLElBRUEwVSxPQUFBLFdBQ0FuYSxFQUFBeXBDLFlBQUEsS0FBQUYsRUFB
QTlqQyxVQUpLLElBa0JMMGlCLFFBQUEsU0FBQW5vQixFQUFBdXBDLEVBQUE5akMsR0FDQSxNQUFB
ekYsR0FBQThELGtCQUNBOUQsRUFBQThELGlCQUFBeWxDLEVBQUE5akMsR0FBQSxJQUVBMFUsT0FB
QSxXQUNBbmEsRUFBQXdwQyxvQkFBQUQsRUFBQTlqQyxHQUFBLE9BUUEwVSxPQUFBamMsSUFLQXdy
QyxnQkFBQSxhQUdBOXRDLEdBQUFELFFBQUEwdEMsR2hGMHRSTSxTQUFVenRDLEVBQVFELEVBQVNI
LEdBRWpDLFlpRnJ4UkEsU0FBQW11QyxHQUFBcHBDLEdBQ0EsTUFBQXFwQyxHQUFBcG1DLFNBQUE0
d0IsZ0JBQUE3ekIsR0FQQSxHQUFBc3BDLEdBQUFydUMsRUFBQSxLQUVBb3VDLEVBQUFwdUMsRUFB
QSxLQUNBNDdCLEVBQUE1N0IsRUFBQSxJQUNBc3VDLEVBQUF0dUMsRUFBQSxJQVlBdXVDLEdBQ0FD
LHlCQUFBLFNBQUFsVixHQUNBLEdBQUFwZ0IsR0FBQW9nQixLQUFBcGdCLFVBQUFvZ0IsRUFBQXBn
QixTQUFBdEQsYUFDQSxPQUFBc0QsS0FBQSxVQUFBQSxHQUFBLFNBQUFvZ0IsRUFBQW51QixNQUFB
LGFBQUErTixHQUFBLFNBQUFvZ0IsRUFBQW1WLGtCQUdBQyx3QkFBQSxXQUNBLEdBQUFDLEdBQUFM
LEdBQ0EsUUFDQUssY0FDQUMsZUFBQUwsRUFBQUMseUJBQUFHLEdBQUFKLEVBQUFNLGFBQUFGLEdB
QUEsT0FTQUcsaUJBQUEsU0FBQUMsR0FDQSxHQUFBQyxHQUFBVixJQUNBVyxFQUFBRixFQUFBSixZ
QUNBTyxFQUFBSCxFQUFBSCxjQUNBSSxLQUFBQyxHQUFBZCxFQUFBYyxLQUNBVixFQUFBQyx5QkFB
QVMsSUFDQVYsRUFBQVksYUFBQUYsRUFBQUMsR0FFQXRULEVBQUFxVCxLQVVBSixhQUFBLFNBQUFP
LEdBQ0EsR0FBQUMsRUFFQSxzQkFBQUQsR0FFQUMsR0FDQUMsTUFBQUYsRUFBQUcsZUFDQUMsSUFB
QUosRUFBQUssa0JBRUssSUFBQXpuQyxTQUFBcW5DLFdBQUFELEVBQUFsMkIsVUFBQSxVQUFBazJC
LEVBQUFsMkIsU0FBQXRELGNBQUEsQ0FFTCxHQUFBd2xCLEdBQUFwekIsU0FBQXFuQyxVQUFBSyxh
QUdBdFUsR0FBQXVVLGtCQUFBUCxJQUNBQyxHQUNBQyxPQUFBbFUsRUFBQXdVLFVBQUEsYUFBQVIs
RUFBQTU2QixNQUFBeFIsUUFDQXdzQyxLQUFBcFUsRUFBQXlVLFFBQUEsYUFBQVQsRUFBQTU2QixN
QUFBeFIsY0FLQXFzQyxHQUFBaEIsRUFBQXlCLFdBQUFWLEVBR0EsT0FBQUMsS0FBeUJDLE1BQUEs
RUFBQUUsSUFBQSxJQVN6QkwsYUFBQSxTQUFBQyxFQUFBVyxHQUNBLEdBQUFULEdBQUFTLEVBQUFU
LE1BQ0FFLEVBQUFPLEVBQUFQLEdBS0EsUUFKQXB0QyxLQUFBb3RDLElBQ0FBLEVBQUFGLEdBR0Es
a0JBQUFGLEdBQ0FBLEVBQUFHLGVBQUFELEVBQ0FGLEVBQUFLLGFBQUFob0MsS0FBQXVvQyxJQUFB
UixFQUFBSixFQUFBNTZCLE1BQUF4UixZQUNLLElBQUFnRixTQUFBcW5DLFdBQUFELEVBQUFsMkIs
VUFBQSxVQUFBazJCLEVBQUFsMkIsU0FBQXRELGNBQUEsQ0FDTCxHQUFBd2xCLEdBQUFnVSxFQUFB
YSxpQkFDQTdVLEdBQUE4VSxVQUFBLEdBQ0E5VSxFQUFBd1UsVUFBQSxZQUFBTixHQUNBbFUsRUFB
QXlVLFFBQUEsWUFBQUwsRUFBQUYsR0FDQWxVLEVBQUErVSxhQUVBOUIsR0FBQStCLFdBQUFoQixF
QUFBVyxJQUtBM3ZDLEdBQUFELFFBQUFvdUMsR2pGNHlSTSxTQUFVbnVDLEVBQVFELEVBQVNILEdB
RWpDLFlrRjk0UkEsU0FBQXN1QyxHQUFBandCLEdBRUEsd0JBREFBLE1BQUEsb0JBQUFyVyx1QkFB
QTVGLEtBRUEsV0FFQSxLQUNBLE1BQUFpYyxHQUFBZ3lCLGVBQUFoeUIsRUFBQWl5QixLQUNHLE1B
QUF0dUMsR0FDSCxNQUFBcWMsR0FBQWl5QixNQUlBbHdDLEVBQUFELFFBQUFtdUMsR2xGNDZSTSxT
QUFVbHVDLEVBQVFELEVBQVNILEdBRWpDLFltRi81UkEsU0FBQXV3QyxHQUFBQyxFQUFBQyxHQUVB
LE9BREFDLEdBQUFqcEMsS0FBQXVvQyxJQUFBUSxFQUFBeHRDLE9BQUF5dEMsRUFBQXp0QyxRQUNB
M0MsRUFBQSxFQUFpQkEsRUFBQXF3QyxFQUFZcndDLElBQzdCLEdBQUFtd0MsRUFBQXhVLE9BQUEz
N0IsS0FBQW93QyxFQUFBelUsT0FBQTM3QixHQUNBLE1BQUFBLEVBR0EsT0FBQW13QyxHQUFBeHRD
LFNBQUF5dEMsRUFBQXp0QyxRQUFBLEVBQUEwdEMsRUFRQSxRQUFBQyxHQUFBQyxHQUNBLE1BQUFB
LEdBSUFBLEVBQUEzckMsV0FBQTRyQyxFQUNBRCxFQUFBaFksZ0JBRUFnWSxFQUFBdHFDLFdBTkEs
S0FVQSxRQUFBd3FDLEdBQUEvckMsR0FJQSxNQUFBQSxHQUFBRyxjQUFBSCxFQUFBRyxhQUFBQyxJ
QUFBLEdBV0EsUUFBQTRyQyxHQUFBQyxFQUFBSixFQUFBcm1DLEVBQUEwbUMsRUFBQS9rQyxHQUNB
LEdBQUFwQixFQUNBLElBQUFDLEVBQUFDLG1CQUFBLENBQ0EsR0FBQWttQyxHQUFBRixFQUFBOWxD
LGdCQUFBc0ksTUFBQW8xQixNQUNBejlCLEVBQUErbEMsRUFBQS9sQyxJQUNBTCxHQUFBLGtDQUFB
SyxPQUFBOG5CLGFBQUE5bkIsRUFBQXhLLE1BQ0EySyxRQUFBQyxLQUFBVCxHQUdBLEdBQUFzTSxH
QUFBNUwsRUFBQXVMLGVBQUFpNkIsRUFBQXptQyxFQUFBLEtBQUE0bUMsRUFBQUgsRUFBQUosR0FB
QTFrQyxFQUFBLEVBR0FwQixJQUNBUSxRQUFBSSxRQUFBWixHQUdBa21DLEVBQUF4ckMsbUJBQUE0
ckMsaUJBQUFKLEVBQ0FLLEVBQUFDLG9CQUFBbDZCLEVBQUF3NUIsRUFBQUksRUFBQUMsRUFBQTFt
QyxHQVVBLFFBQUFnbkMsR0FBQUMsRUFBQVosRUFBQUssRUFBQS9rQyxHQUNBLEdBQUEzQixHQUFB
akIsRUFBQUMsMEJBQUFPLFdBRUFtbkMsR0FBQVEsRUFBQUMsaUJBQ0FubkMsR0FBQTZDLFFBQUEy
akMsRUFBQSxLQUFBUyxFQUFBWixFQUFBcm1DLEVBQUEwbUMsRUFBQS9rQyxHQUNBNUMsRUFBQUMs
MEJBQUE0RCxRQUFBNUMsR0FZQSxRQUFBb25DLEdBQUFuaEMsRUFBQW9nQyxFQUFBcDVCLEdBY0Es
SUFWQWhNLEVBQUErTCxpQkFBQS9HLEVBQUFnSCxHQUtBbzVCLEVBQUEzckMsV0FBQTRyQyxJQUNB
RCxJQUFBaFksaUJBSUFnWSxFQUFBbFYsV0FDQWtWLEVBQUEvdUIsWUFBQSt1QixFQUFBbFYsV0Fj
QSxRQUFBa1csR0FBQWhCLEdBQ0EsR0FBQWlCLEdBQUFsQixFQUFBQyxFQUNBLElBQUFpQixFQUFB
LENBQ0EsR0FBQW5zQyxHQUFBbUMsRUFBQVYsb0JBQUEwcUMsRUFDQSxVQUFBbnNDLE1BQUEyQixj
QXdCQSxRQUFBeXFDLEdBQUEvc0MsR0FDQSxTQUFBQSxLQUFBRSxXQUFBOHNDLEdBQUFodEMsRUFB
QUUsV0FBQTRyQyxHQUFBOXJDLEVBQUFFLFdBQUErc0MsR0FjQSxRQUFBQyxHQUFBckIsR0FDQSxH
QUFBaUIsR0FBQWxCLEVBQUFDLEdBQ0FzQixFQUFBTCxHQUFBaHFDLEVBQUFWLG9CQUFBMHFDLEVB
Q0EsT0FBQUssT0FBQTdxQyxZQUFBNnFDLEVBQUEsS0FHQSxRQUFBQyxHQUFBdkIsR0FDQSxHQUFB
d0IsR0FBQUgsRUFBQXJCLEVBQ0EsT0FBQXdCLEtBQUFDLG1CQUFBakIsaUJBQUEsS0E5TUEsR0FB
QXhxQyxHQUFBNUcsRUFBQSxHQUVBbVosRUFBQW5aLEVBQUEsSUFDQXNILEVBQUF0SCxFQUFBLElB
Q0FrUyxFQUFBbFMsRUFBQSxJQUNBc25CLEVBQUF0bkIsRUFBQSxJQUVBNkgsR0FEQTdILEVBQUEs
SUFDQUEsRUFBQSxJQUNBbXhDLEVBQUFueEMsRUFBQSxLQUNBeXhDLEVBQUF6eEMsRUFBQSxLQUNB
K0ssRUFBQS9LLEVBQUEsSUFDQTBlLEVBQUExZSxFQUFBLElBRUFzeUMsR0FEQXR5QyxFQUFBLEdB
Q0FBLEVBQUEsTUFDQXdMLEVBQUF4TCxFQUFBLElBQ0FxekIsRUFBQXJ6QixFQUFBLElBQ0FzSixF
QUFBdEosRUFBQSxHQUVBK2UsRUFBQS9lLEVBQUEsSUFDQXdtQyxFQUFBeG1DLEVBQUEsSUFFQXFZ
LEdBREFyWSxFQUFBLEdBQ0FBLEVBQUEsS0FDQWt5QixFQUFBbHlCLEVBQUEsSUFHQW1GLEdBRkFu
RixFQUFBLEdBRUFzSCxFQUFBRSxtQkFDQStxQyxFQUFBanJDLEVBQUFtUCxvQkFFQXM3QixFQUFB
LEVBQ0FsQixFQUFBLEVBQ0FtQixFQUFBLEdBRUFRLEtBc0xBQyxFQUFBLEVBQ0FDLEVBQUEsV0FD
QXhwQyxLQUFBeXBDLE9BQUFGLElBRUFDLEdBQUFueEMsVUFBQTAyQixvQkFJQXlhLEVBQUFueEMs
VUFBQXF4QyxPQUFBLFdBQ0EsTUFBQTFwQyxNQUFBc0ssTUFBQW8xQixPQUVBOEosRUFBQXRuQyx3
QkFBQSxDQW9CQSxJQUFBaW1DLElBQ0FxQixrQkFLQUcsd0JBQUFMLEVBVUFNLGNBQUEsU0FBQWxD
LEVBQUFtQyxHQUNBQSxLQVVBQyxxQkFBQSxTQUFBQyxFQUFBdDdCLEVBQUF3YyxFQUFBeWMsRUFB
QTNtQyxHQVFBLE1BUEFvbkMsR0FBQXlCLGNBQUFsQyxFQUFBLFdBQ0F2ZCxFQUFBYSx1QkFBQStl
LEVBQUF0N0IsRUFBQXdjLEdBQ0FscUIsR0FDQW9wQixFQUFBSSx3QkFBQXdmLEVBQUFocEMsS0FJ
QWdwQyxHQVdBQyx3QkFBQSxTQUFBdjdCLEVBQUFpNUIsRUFBQUssRUFBQS9rQyxHQU1BNGxDLEVB
QUFsQixJQUFBaHFDLEVBQUEsTUFFQTBnQixFQUFBc0IsNkJBQ0EsSUFBQTRvQixHQUFBaEwsRUFB
QTd1QixHQUFBLEVBTUFyTyxHQUFBVSxlQUFBdW5DLEVBQUFDLEVBQUFaLEVBQUFLLEVBQUEva0Ms
RUFFQSxJQUFBaW5DLEdBQUEzQixFQUFBNEIsVUFBQVQsTUFHQSxPQUZBSCxHQUFBVyxHQUFBM0Is
RUFFQUEsR0FnQkE2QiwyQkFBQSxTQUFBQyxFQUFBMzdCLEVBQUFpNUIsRUFBQTNtQyxHQUVBLE1B
REEsT0FBQXFwQyxHQUFBNTBCLEVBQUFHLElBQUF5MEIsSUFBQTFzQyxFQUFBLE1BQ0F5cUMsRUFB
QWtDLDRCQUFBRCxFQUFBMzdCLEVBQUFpNUIsRUFBQTNtQyxJQUdBc3BDLDRCQUFBLFNBQUFELEVB
QUEzN0IsRUFBQWk1QixFQUFBM21DLEdBQ0FvcEIsRUFBQUcsaUJBQUF2cEIsRUFBQSxtQkFDQWlJ
LEVBQUFPLGVBQUFrRixJQUNBL1EsRUFBQSxzQkFBQStRLEdBQUEsMEdBQUFBLEdBQUEsd0ZBQUFB
LE9BQUF2VixLQUFBdVYsRUFBQW5FLE1BQUEscUZBSUEsSUFJQTJnQixHQUpBcWYsRUFBQXRoQyxF
QUFBakssY0FBQXlxQyxHQUNBOUosTUFBQWp4QixHQUlBLElBQUEyN0IsRUFBQSxDQUNBLEdBQUEx
NEIsR0FBQThELEVBQUF4ZCxJQUFBb3lDLEVBQ0FuZixHQUFBdlosRUFBQTY0QixxQkFBQTc0QixF
QUFBL0MsY0FFQXNjLEdBQUFwVixDQUdBLElBQUFrMEIsR0FBQWQsRUFBQXZCLEVBRUEsSUFBQXFD
LEVBQUEsQ0FDQSxHQUFBUyxHQUFBVCxFQUFBL25DLGdCQUNBME0sRUFBQTg3QixFQUFBbGdDLE1B
QUFvMUIsS0FDQSxJQUFBMVcsRUFBQXRhLEVBQUFELEdBQUEsQ0FDQSxHQUFBZzhCLEdBQUFWLEVB
QUF6dEMsbUJBQUFxRyxvQkFDQStuQyxFQUFBM3BDLEdBQUEsV0FDQUEsRUFBQTFKLEtBQUFvekMs
R0FHQSxPQURBdEMsR0FBQTJCLHFCQUFBQyxFQUFBTyxFQUFBcmYsRUFBQXljLEVBQUFnRCxHQUNB
RCxFQUVBdEMsRUFBQXdDLHVCQUFBakQsR0FJQSxHQUFBa0QsR0FBQW5ELEVBQUFDLEdBQ0FtRCxF
QUFBRCxLQUFBaEQsRUFBQWdELEdBQ0FFLEVBQUFwQyxFQUFBaEIsR0FpQkFLLEVBQUE4QyxJQUFB
ZCxJQUFBZSxFQUNBMXVDLEVBQUErckMsRUFBQTZCLHdCQUFBTSxFQUFBNUMsRUFBQUssRUFBQTlj
LEdBQUEzdUIsbUJBQUFxRyxtQkFJQSxPQUhBNUIsSUFDQUEsRUFBQTFKLEtBQUErRSxHQUVBQSxH
QWdCQXN0QyxPQUFBLFNBQUFqN0IsRUFBQWk1QixFQUFBM21DLEdBQ0EsTUFBQW9uQyxHQUFBa0Ms
NEJBQUEsS0FBQTU3QixFQUFBaTVCLEVBQUEzbUMsSUFXQTRwQyx1QkFBQSxTQUFBakQsR0FPQWtC
LEVBQUFsQixJQUFBaHFDLEVBQUEsS0FNQSxJQUFBcXNDLEdBQUFkLEVBQUF2QixFQUNBLEtBQUFx
QyxFQUFBLENBR0FyQixFQUFBaEIsR0FHQSxJQUFBQSxFQUFBM3JDLFVBQUEyckMsRUFBQXFELGFB
QUExQixFQU1BLFVBSUEsYUFGQUMsR0FBQVMsRUFBQUcsVUFBQVQsUUFDQXJwQyxFQUFBVSxlQUFB
Mm5DLEVBQUFzQixFQUFBckMsR0FBQSxJQUNBLEdBR0FVLG9CQUFBLFNBQUFsNkIsRUFBQXc1QixF
QUFBcGdDLEVBQUF5Z0MsRUFBQTFtQyxHQUdBLEdBRkF1bkMsRUFBQWxCLElBQUFocUMsRUFBQSxN
QUVBcXFDLEVBQUEsQ0FDQSxHQUFBaUQsR0FBQXZELEVBQUFDLEVBQ0EsSUFBQTBCLEVBQUE2Qixl
QUFBLzhCLEVBQUE4OEIsR0FFQSxXQURBcnNDLEdBQUFwQyxhQUFBK0ssRUFBQTBqQyxFQUdBLElB
QUFFLEdBQUFGLEVBQUFodkMsYUFBQW90QyxFQUFBK0IsbUJBQ0FILEdBQUF6UixnQkFBQTZQLEVB
QUErQixtQkFFQSxJQUFBQyxHQUFBSixFQUFBSyxTQUNBTCxHQUFBcm5CLGFBQUF5bEIsRUFBQStC
LG1CQUFBRCxFQUVBLElBQUFJLEdBQUFwOUIsRUFvQkFxOUIsRUFBQWxFLEVBQUFpRSxFQUFBRixH
QUNBSSxFQUFBLGFBQUFGLEVBQUEveEIsVUFBQWd5QixFQUFBLEdBQUFBLEVBQUEsbUJBQUFILEVB
QUE3eEIsVUFBQWd5QixFQUFBLEdBQUFBLEVBQUEsR0FFQTdELEdBQUEzckMsV0FBQTRyQyxHQUFB
anFDLEVBQUEsS0FBQTh0QyxHQVVBLEdBRkE5RCxFQUFBM3JDLFdBQUE0ckMsR0FBQWpxQyxFQUFB
LE1BRUEyRCxFQUFBbW5DLGlCQUFBLENBQ0EsS0FBQWQsRUFBQWxWLFdBQ0FrVixFQUFBL3VCLFlB
QUErdUIsRUFBQWxWLFVBRUF2aUIsR0FBQWhCLGlCQUFBeTRCLEVBQUF4NUIsRUFBQSxVQUVBaUIs
R0FBQXU0QixFQUFBeDVCLEdBQ0F2UCxFQUFBcEMsYUFBQStLLEVBQUFvZ0MsRUFBQXRxQyxhQWdC
QWxHLEdBQUFELFFBQUFreEMsR25GdzlSTSxTQUFVanhDLEVBQVFELEVBQVNILEdBRWpDLFlvRnAr
U0EsU0FBQTIwQyxHQUFBanZDLEdBR0EsSUFGQSxHQUFBeUYsSUFFQUEsRUFBQXpGLEVBQUFrdkMs
cUJBQUFyTixFQUFBRSxXQUNBL2hDLElBQUFGLGtCQUdBLE9BQUEyRixLQUFBbzhCLEVBQUFDLEtB
Q0E5aEMsRUFBQUYsbUJBQ0cyRixJQUFBbzhCLEVBQUFHLE1BQ0gsU0FERyxHQVhILEdBQUFILEdB
QUF2bkMsRUFBQSxHQWdCQUksR0FBQUQsUUFBQXcwQyxHcEZ1L1NNLFNBQVV2MEMsRUFBUTRvQixF
QUFxQmhwQixHQUU3QyxZcUZoL1NFLFNBQUE2MEMsR0FBQUMsRUFBQUMsRUFBQUMsR0EwQkYsUUFB
QUMsS0FDQUMsSUFBQUMsSUFDQUQsRUFBQUMsRUFBQXZ0QyxTQVNBLFFBQUF3dEMsS0FDQSxNQUFB
QyxHQTBCQSxRQUFBQyxHQUFBbDdCLEdBQ0Esc0JBQUFBLEdBQ0EsU0FBQS9YLE9BQUEsc0NBR0Es
SUFBQWt6QyxJQUFBLENBS0EsT0FIQU4sS0FDQUMsRUFBQW51QyxLQUFBcVQsR0FFQSxXQUNBLEdB
QUFtN0IsRUFBQSxDQUlBQSxHQUFBLEVBRUFOLEdBQ0EsSUFBQTN5QixHQUFBNHlCLEVBQUFyckIs
UUFBQXpQLEVBQ0E4NkIsR0FBQXZvQyxPQUFBMlYsRUFBQSxLQTZCQSxRQUFBa3pCLEdBQUFDLEdB
Q0EsSUFBQTMwQyxPQUFBNDBDLEVBQUEsR0FBQUQsR0FDQSxTQUFBcHpDLE9BQUEsMEVBR0Esd0JB
QUFvekMsR0FBQXRxQyxLQUNBLFNBQUE5SSxPQUFBLHFGQUdBLElBQUFzekMsRUFDQSxTQUFBdHpD
LE9BQUEscUNBR0EsS0FDQXN6QyxHQUFBLEVBQ0FOLEVBQUFPLEVBQUFQLEVBQUFJLEdBQ0ssUUFD
TEUsR0FBQSxFQUlBLE9BREFoUyxHQUFBd1IsRUFBQUQsRUFDQTcwQyxFQUFBLEVBQW1CQSxFQUFB
c2pDLEVBQUEzZ0MsT0FBc0IzQyxJQUFBLEVBRXpDK1osRUFEQXVwQixFQUFBdGpDLE1BSUEsTUFB
QW8xQyxHQWFBLFFBQUFJLEdBQUFDLEdBQ0Esc0JBQUFBLEdBQ0EsU0FBQXp6QyxPQUFBLDZDQUdB
dXpDLEdBQUFFLEVBQ0FOLEdBQWNycUMsS0FBQTRxQyxFQUFBQyxPQVNkLFFBQUFDLEtBQ0EsR0FB
QUMsR0FFQUMsRUFBQWIsQ0FDQSxPQUFBWSxJQVNBWixVQUFBLFNBQUFjLEdBS0EsUUFBQUMsS0FD
QUQsRUFBQTdkLE1BQ0E2ZCxFQUFBN2QsS0FBQTZjLEtBTkEsb0JBQUFnQixHQUNBLFNBQUE5eUMs
V0FBQSx5Q0FXQSxPQUZBK3lDLE1BRWdCQyxZQURoQkgsRUFBQUUsTUFHS0gsRUFBQUssRUFBQXow
QyxHQUFBLFdBQ0wsTUFBQW9ILE9BQ0tndEMsRUFuTUwsR0FBQU0sRUFPQSxJQUxBLG1CQUFBekIs
SUFBQSxvQkFBQUMsS0FDQUEsRUFBQUQsRUFDQUEsTUFBQTN5QyxJQUdBLG9CQUFBNHlDLEdBQUEs
Q0FDQSxzQkFBQUEsR0FDQSxTQUFBM3lDLE9BQUEsMENBR0EsT0FBQTJ5QyxHQUFBSCxHQUFBQyxF
QUFBQyxHQUdBLHNCQUFBRCxHQUNBLFNBQUF6eUMsT0FBQSx5Q0FHQSxJQUFBdXpDLEdBQUFkLEVB
Q0FPLEVBQUFOLEVBQ0FJLEtBQ0FELEVBQUFDLEVBQ0FRLEdBQUEsQ0FvTEEsT0FGQUgsSUFBWXJx
QyxLQUFBNHFDLEVBQUFDLE9BRVpRLEdBQ0FoQixXQUNBRixZQUNBRixXQUNBUyxrQkFDR1csRUFB
QUQsRUFBQXowQyxHQUFBbTBDLEVBQUFPLEVyRmd5UzRCeDJDLEVBQW9CVSxFQUFFc29CLEVBQXFC
LElBQUssV0FBYSxNQUFPK3NCLEtBQ2xFL3NCLEVBQXVCLEVBQUk2ckIsQ0FDdkMsSUFBSWEsR0FB
d0QxMUMsRUFBb0IsSUFDNUV5MkMsRUFBa0R6MkMsRUFBb0IsS0FDdEV1MkMsRUFBMER2MkMsRUFB
b0JtQixFQUFFczFDLEdxRmpoVHpHVixHQUNBQyxLQUFBLGlCckY0d1RNLFNBQVU1MUMsRUFBUTRv
QixFQUFxQmhwQixHQUU3QyxZQUNxQixJQUFJMDJDLEdBQXlDMTJDLEVBQW9CLEtzRnR4VHRGczRC
LEVBQUFvZSxFQUFBLEVBQUFwZSxNQUVBdFAsR0FBQSxLdEYreFRNLFNBQVU1b0IsRUFBUTRvQixF
QUFxQmhwQixHQUU3QyxjQTBCTSxTQUFVSSxFQUFRNG9CLEVBQXFCaHBCLEdBRTdDLFl1RnZ6VEEs
U0FBQTIyQyxLQUNBLE9BQUFDLEdBQUE3ekMsVUFBQUMsT0FBQTZ6QyxFQUFBL2lDLE1BQUE4aUMs
R0FBQUUsRUFBQSxFQUFrRUEsRUFBQUYsRUFBYUUsSUFDL0VELEVBQUFDLEdBQUEvekMsVUFBQSt6
QyxFQUdBLFlBQUFELEVBQUE3ekMsT0FDQSxTQUFBNEYsR0FDQSxNQUFBQSxJQUlBLElBQUFpdUMs
RUFBQTd6QyxPQUNBNnpDLEVBQUEsR0FHQUEsRUFBQUUsT0FBQSxTQUFBajFDLEVBQUFDLEdBQ0Es
a0JBQ0EsTUFBQUQsR0FBQUMsRUFBQTB6QixVQUFBcnpCLEdBQUFXLGVBNUJBaW1CLEVBQUEsRUFB
QTJ0QixHdkZ1MlRNLFNBQVV2MkMsRUFBUTRvQixFQUFxQmhwQixHQUU3QyxZQUNxQixJQUFJZzND
LEdBQXFEaDNDLEVBQW9CLEtBRXpFaTNDLEdBRDREajNDLEVBQW9CLElBQy9CQSxFQUFvQixLQUM3
REEsR0FBb0JVLEVBQUVzb0IsRUFBcUIsSUFBSyxXQUFhLE1BQU9ndUIsR0FBc0QsSUFHMUhoM0Ms
RUFBb0JVLEVBQUVzb0IsRUFBcUIsSUFBSyxXQUFhLE1BQU9pdUIsR0FBa0QsS0FTakosU0FBVTcy
QyxFQUFRRCxFQUFTSCxHd0Y3MVRqQ0ksRUFBQUQsUUFBQUgsRUFBQSxReEZpNFRNLFNBQVVJLEVB
QVE0b0IsRUFBcUJocEIsR0FFN0MsWUFDK0JBLEdBQW9CVSxFQUFFc29CLEVBQXFCLElBQUssV0FB
YSxNQUFPa3VCLEtBQ3BFbDNDLEVBQW9CVSxFQUFFc29CLEVBQXFCLElBQUssV0FBYSxNQUFPbXVC
LElBQzlFLElBQUlDLEdBQTJDcDNDLEVBQW9CLElBQy9EcTNDLEVBQW1EcjNDLEVBQW9CbUIsRUFB
RWkyQyxHeUZqNlRsR0YsRUFBQUcsRUFBQXYxQyxFQUFBdzFDLE9BQ0FDLGFBQUFGLEVBQUF2MUMs
RUFBQXdxQixLQUFBa3JCLFdBQ0FDLGVBQUFKLEVBQUF2MUMsRUFBQXdxQixLQUFBa3JCLFdBQ0FF
LGlCQUFBTCxFQUFBdjFDLEVBQUF3cUIsS0FBQWtyQixXQUNBakMsYUFBQThCLEVBQUF2MUMsRUFB
QXdxQixLQUFBa3JCLGFBR0FMLEVBQUFFLEVBQUF2MUMsRUFBQXcxQyxPQUNBaEMsVUFBQStCLEVB
QUF2MUMsRUFBQXdxQixLQUFBa3JCLFdBQ0FoQyxTQUFBNkIsRUFBQXYxQyxFQUFBd3FCLEtBQUFr
ckIsV0FDQXBDLFNBQUFpQyxFQUFBdjFDLEVBQUF3cUIsS0FBQWtyQixjekZ5NlRNLFNBQVVwM0Ms
RUFBUTRvQixFQUFxQmhwQixHQUU3QyxZMEZyN1RBLFNBQUE2NEIsR0FBQXJvQixFQUFBc29CLEdB
QWlELEtBQUF0b0IsWUFBQXNvQixJQUEwQyxTQUFBeDFCLFdBQUEscUNBRTNGLFFBQUFxMEMsR0FB
QXJrQyxFQUFBL1MsR0FBaUQsSUFBQStTLEVBQWEsU0FBQXNrQyxnQkFBQSw0REFBeUYsUUFBQXIz
QyxHQUFBLGlCQUFBQSxJQUFBLG1CQUFBQSxHQUFBK1MsRUFBQS9TLEVBRXZKLFFBQUFzM0MsR0FB
QUMsRUFBQUMsR0FBMEMsc0JBQUFBLElBQUEsT0FBQUEsRUFBK0QsU0FBQXowQyxXQUFBLGlFQUFB
eTBDLEdBQXVHRCxHQUFBdjJDLFVBQUFULE9BQUE2bEMsT0FBQW9SLEtBQUF4MkMsV0FBeUVpTixh
QUFlZ0csTUFBQXNqQyxFQUFBNzJDLFlBQUEsRUFBQSsyQyxVQUFBLEVBQUFoM0MsY0FBQSxLQUE2
RSsyQyxJQUFBajNDLE9BQUFtM0MsZUFBQW4zQyxPQUFBbTNDLGVBQUFILEVBQUFDLEdBQUFELEVB
QUFJLFVBQUFILEdBRXJYLFFBQUFJLEdBQUF0aUIsRUFBQXZ4QixHQUE4QyxHQUFBRSxLQUFpQixR
QUFBbkUsS0FBQXcxQixHQUFxQnZ4QixFQUFBdWxCLFFBQUF4cEIsSUFBQSxHQUFvQ1MsT0FBQVMs
VUFBQUMsZUFBQWpCLEtBQUFzMUIsRUFBQXgxQixLQUE2RG1FLEVBQUFuRSxHQUFBdzFCLEVBQUF4
MUIsR0FBc0IsT0FBQW1FLEdBVzNNLFFBQUFteEIsTUFDQSxRQUFBeWlCLEdBQUFDLEVBQUFDLEdB
RUEsR0FBQUMsSUFDQXhULElBQUEsU0FBQXZ4QixHQUNBLElBQ0EsR0FBQWdsQyxHQUFBSCxFQUFB
QyxFQUFBbEQsV0FBQTVoQyxJQUNBZ2xDLElBQUFELEVBQUEva0MsT0FBQStrQyxFQUFBcDJDLFNB
Q0FvMkMsRUFBQUUsdUJBQUEsRUFDQUYsRUFBQS9rQyxNQUFBZ2xDLEVBQ0FELEVBQUFwMkMsTUFB
QSxNQUVPLE1BQUFBLEdBQ1BvMkMsRUFBQUUsdUJBQUEsRUFDQUYsRUFBQXAyQyxVQUtBLE9BQUFv
MkMsR0FHQSxRQUFBRyxHQWVBQyxHQUNBLEdBQUFDLEdBQUFDLEVBRUEzQyxFQUFBbnpDLFVBQUFD
LE9BQUEsT0FBQVosS0FBQVcsVUFBQSxHQUFBQSxVQUFBLE1BQ0ErMUMsRUFBQTVDLEVBQUE1TCxl
QUNBQSxNQUFBbG9DLEtBQUEwMkMsRUFBQSxTQUFBbjRDLEdBQ0EseUJBQUFBLEVBQUEsS0FDR200
QyxFQUNIQyxFQUFBN0MsRUFBQThDLFdBQ0FBLE1BQUE1MkMsS0FBQTIyQyxFQUFBLGtCQUFBQSxF
QUNBRSxFQUFBL0MsRUFBQWdELGdCQUNBQSxNQUFBOTJDLEtBQUE2MkMsTUFBQTcyQyxHQUFBNjJD
LEVBQ0FFLEVBQUFqRCxFQUFBa0QseUJBQ0FBLE1BQUFoM0MsS0FBQSsyQyxLQUNBRSxFQUFBbkQs
RUFBQW9ELFNBQ0FBLE1BQUFsM0MsS0FBQWkzQyxFQUFBLFFBQUFBLEVBQ0FFLEVBQUFyRCxFQUFB
c0QsUUFDQUEsTUFBQXAzQyxLQUFBbTNDLEtBQ0FFLEVBQUF0QixFQUFBakMsR0FBQSxrR0FFQXdE
LEVBQUFKLEVBQUEsZUFDQXptQyxFQUFBOG1DLElBRUFDLEdBQUFoQixLQUF3Q0EsRUFBQVUsR0FB
QU8sRUFBQSxFQUFBakIsRUFBQWMsR0FBQUcsRUFBQSxFQUFBakIsR0FDeENrQixHQUFBakIsS0FB
a0RBLEVBQUFhLEdBQUFHLEVBQUEsRUFBQWhCLEVBRWxELGlCQUFBa0IsR0FDQUMsSUFBQSxrQkFB
QUQsR0FBQSxtRkFBQUUsS0FBQUMsVUFBQUgsR0FFQSxJQUFBSSxHQUFBSixFQUFBOW1CLGFBQUE4
bUIsRUFBQXA1QyxNQUFBLFlBRUFzeUIsRUFBQXFYLEVBQUE2UCxHQUVBQyxFQUFBQyxLQUE0Q1os
R0FDNUNuUCxpQkFDQTBPLGFBQ0FFLGtCQUNBRSwyQkFDQUUsV0FDQUUsVUFDQXZtQixjQUNBa25C
LHVCQUNBSixxQkFHQU8sRUFBQSxTQUFBQyxHQUdBLFFBQUFELEdBQUE5bUMsRUFBQXRILEdBQ0Ey
c0IsRUFBQTN2QixLQUFBb3hDLEVBRUEsSUFBQUUsR0FBQTdDLEVBQUF6dUMsS0FBQXF4QyxFQUFB
aDZDLEtBQUEySSxLQUFBc0ssRUFBQXRILEdBYUEsT0FYQXN1QyxHQUFBM25DLFVBQ0EybkMsRUFB
QUMsU0FDQUQsRUFBQUUsWUFBQSxFQUNBRixFQUFBbEMsTUFBQTlrQyxFQUFBOGxDLElBQUFwdEMs
RUFBQW90QyxHQUNBa0IsRUFBQUcsVUFBQTdYLFFBQUF0dkIsRUFBQThsQyxJQUNBa0IsRUFBQUks
bUJBQUFKLEVBQUFJLG1CQUFBM21DLEtBQUF1bUMsR0FFQVIsSUFBQVEsRUFBQWxDLE1BQUEsbUJB
QUFnQixFQUFBLHdDQUFBcm1CLEVBQUEsMEVBQUFxbUIsRUFBQSxtQkFBQXJtQixFQUFBLE1BRUF1
bkIsRUFBQUssZUFDQUwsRUFBQU0sbUJBQ0FOLEVBOEhBLE1BaEpBM0MsR0FBQXlDLEVBQUFDLEdB
cUJBRCxFQUFBLzRDLFVBQUF3NUMsZ0JBQUEsV0FDQSxHQUFBdkUsR0FNQXdFLEVBQUE5eEMsS0FB
QXl4QyxVQUFBLEtBQUF6eEMsS0FBQTh4QyxZQUNBLE9BQUF4RSxNQUF5QkEsRUFBQWtELEdBQUFz
QixHQUFBOXhDLEtBQUFnRCxRQUFBd3RDLEdBQUFsRCxHQUd6QjhELEVBQUEvNEMsVUFBQTA1Qyxr
QkFBQSxXQUNBN0IsSUFRQWx3QyxLQUFBOHhDLGFBQUF6RCxlQUNBcnVDLEtBQUFxdkMsU0FBQXhU
LElBQUE3N0IsS0FBQXNLLE9BQ0F0SyxLQUFBcXZDLFNBQUFFLHVCQUFBdnZDLEtBQUFpdkIsZ0JB
R0FtaUIsRUFBQS80QyxVQUFBMjVDLDBCQUFBLFNBQUExQyxHQUNBdHZDLEtBQUFxdkMsU0FBQXhU
LElBQUF5VCxJQUdBOEIsRUFBQS80QyxVQUFBazNDLHNCQUFBLFdBQ0EsTUFBQXZ2QyxNQUFBcXZD
LFNBQUFFLHVCQUdBNkIsRUFBQS80QyxVQUFBNDVDLHFCQUFBLFdBQ0FqeUMsS0FBQTh4QyxjQUFB
OXhDLEtBQUE4eEMsYUFBQXZELGlCQUNBdnVDLEtBQUE4eEMsYUFBQSxLQUNBOXhDLEtBQUF3dUMs
aUJBQUEvaEIsRUFDQXpzQixLQUFBb3ZDLE1BQUEsS0FDQXB2QyxLQUFBcXZDLFNBQUF4VCxJQUFB
cFAsRUFDQXpzQixLQUFBcXZDLFNBQUFFLHVCQUFBLEdBR0E2QixFQUFBLzRDLFVBQUE2NUMsbUJB
QUEsV0FFQSxNQURBcEIsS0FBQVIsRUFBQSx3R0FBdUdSLEVBQUEsWUFDdkc5dkMsS0FBQW15Qyxp
QkFHQWYsRUFBQS80QyxVQUFBcTVDLG1CQUFBLFNBQUE1bkMsR0FDQTlKLEtBQUFteUMsZ0JBQUFy
b0MsR0FHQXNuQyxFQUFBLzRDLFVBQUFzNUMsYUFBQSxXQUNBLEdBQUF4QyxHQUFBTSxFQUFBenZD
LEtBQUFvdkMsTUFBQTlDLFNBQUE0RSxFQUNBbHhDLE1BQUFxdkMsU0FBQUgsRUFBQUMsRUFBQW52
QyxLQUFBb3ZDLE9BQ0FwdkMsS0FBQXF2QyxTQUFBeFQsSUFBQTc3QixLQUFBc0ssUUFHQThtQyxF
QUFBLzRDLFVBQUF1NUMsaUJBQUEsV0FDQSxHQUFBMUIsRUFBQSxDQUlBLEdBQUFrQyxJQUFBcHlD
LEtBQUF5eEMsVUFBQXp4QyxLQUFBc0ssTUFBQXRLLEtBQUFnRCxTQUFBd3RDLEVBQ0F4d0MsTUFB
QTh4QyxhQUFBLEdBQUFPLEdBQUEsRUFBQXJ5QyxLQUFBb3ZDLE1BQUFnRCxFQUFBcHlDLEtBQUFz
eUMsY0FBQXZuQyxLQUFBL0ssT0FRQUEsS0FBQXd1QyxpQkFBQXh1QyxLQUFBOHhDLGFBQUF0RCxp
QkFBQXpqQyxLQUFBL0ssS0FBQTh4QyxnQkFHQVYsRUFBQS80QyxVQUFBaTZDLGNBQUEsV0FDQXR5
QyxLQUFBcXZDLFNBQUF4VCxJQUFBNzdCLEtBQUFzSyxPQUVBdEssS0FBQXF2QyxTQUFBRSx1QkFH
QXZ2QyxLQUFBdXlDLG1CQUFBdnlDLEtBQUF3eUMscUNBQ0F4eUMsS0FBQWd2QixTQUFBeWpCLElB
SEF6eUMsS0FBQXd1QyxvQkFPQTRDLEVBQUEvNEMsVUFBQW02QyxxQ0FBQSxXQU1BeHlDLEtBQUF1
eUMsdUJBQUFyNUMsR0FDQThHLEtBQUF3dUMsb0JBR0E0QyxFQUFBLzRDLFVBQUFnMEMsYUFBQSxX
QUNBLE1BQUF6UyxTQUFBNTVCLEtBQUE4eEMsZUFBQTl4QyxLQUFBOHhDLGFBQUF6RixnQkFHQStF
LEVBQUEvNEMsVUFBQXE2QyxjQUFBLFNBQUFwb0MsR0FDQSxJQUFBZ21DLElBQUFOLEtBQUFod0Ms
S0FBQXl4QyxZQUFBenhDLEtBQUE4eEMsY0FBQSxNQUFBeG5DLEVBS0EsSUFBQXFvQyxHQUFBeEIs
S0FBb0M3bUMsRUFJcEMsT0FIQWdtQyxLQUFBcUMsRUFBQTdvQyxJQUFBOUosS0FBQTB4QyxvQkFD
QTFCLElBQUEyQyxFQUFBM0MsR0FBQWh3QyxLQUFBd3hDLGVBQ0F4eEMsS0FBQXl4QyxXQUFBenhD
LEtBQUE4eEMsZUFBQWEsRUFBQW5DLEdBQUF4d0MsS0FBQTh4QyxjQUNBYSxHQUdBdkIsRUFBQS80
QyxVQUFBcXhDLE9BQUEsV0FDQSxHQUFBMkYsR0FBQXJ2QyxLQUFBcXZDLFFBR0EsSUFGQUEsRUFB
QUUsdUJBQUEsRUFFQUYsRUFBQXAyQyxNQUNBLEtBQUFvMkMsR0FBQXAyQyxLQUVBLE9BQUFyQixR
QUFBZzdDLEVBQUEsZUFBQS9CLEVBQUE3d0MsS0FBQTB5QyxjQUFBckQsRUFBQS9rQyxTQUlBOG1D
LEdBQ0t3QixFQUFBLFVBdUNMLE9BckNBeEIsR0FBQVAsbUJBQ0FPLEVBQUFybkIsY0FDQXFuQixF
QUFBUixvQkFDQVEsRUFBQVYsZUFDQVUsRUFBQTVwQixVQUFBa3BCLEVBaUNBbUMsSUFBQXpCLEVB
QUFQLEkxRjBwVGlDL3dCLEVBQXVCLEVBQUkwdkIsQ0FDdkMsSUFBSXNELEdBQXdEaDhDLEVBQW9C
LEtBQzVFKzdDLEVBQWdFLzdDLEVBQW9CbUIsRUFBRTY2QyxHQUN0RkMsRUFBMENqOEMsRUFBb0Is
S0FDOURnNkMsRUFBa0RoNkMsRUFBb0JtQixFQUFFODZDLEdBQ3hFSCxFQUFzQzk3QyxFQUFvQixH
QUUxRHU3QyxHQUQ4Q3Y3QyxFQUFvQm1CLEVBQUUyNkMsR0FDaEI5N0MsRUFBb0IsTTBGLzdUakc2
NUMsRUFBQTc1QyxFQUFBLElBQUFxNkMsRUFBQXY1QyxPQUFBNEMsUUFBQSxTQUFBYyxHQUFtRCxP
QUFBbkUsR0FBQSxFQUFnQkEsRUFBQTBDLFVBQUFDLE9BQXNCM0MsSUFBQSxDQUFPLEdBQUFvRSxH
QUFBMUIsVUFBQTFDLEVBQTJCLFFBQUF3RSxLQUFBSixHQUEwQjNELE9BQUFTLFVBQUFDLGVBQUFq
QixLQUFBa0UsRUFBQUksS0FBeURMLEVBQUFLLEdBQUFKLEVBQUFJLElBQWlDLE1BQUFMLElBaUIv
T20xQyxFQUFBLEVBQ0FnQyxNMUZtdFVNLFNBQVV2N0MsRUFBUTRvQixFQUFxQmhwQixHQUU3QyxZ
MkZydVVBLFNBQUFrOEMsR0FBQUMsR0FDQSxnQkFBQTNHLEVBQUF0UyxHQUdBLFFBQUFrWixLQUNB
LE1BQUFDLEdBSEEsR0FBQUEsR0FBQUYsRUFBQTNHLEVBQUF0UyxFQU1BLE9BREFrWixHQUFBRSxt
QkFBQSxFQUNBRixHQVdBLFFBQUFHLEdBQUFDLEdBQ0EsY0FBQUEsRUFBQUYsdUJBQUFsNkMsS0FB
QW82QyxFQUFBRixrQkFBQXhaLFFBQUEwWixFQUFBRixtQkFBQSxJQUFBRSxFQUFBeDVDLE9BZUEs
UUFBQXk1QyxHQUFBRCxFQUFBeEQsR0FDQSxnQkFBQXhELEVBQUFVLEdBQ0EsR0FFQXdHLElBRkF4
RyxFQUFBampCLFlBRUEsU0FBQTBwQixFQUFBQyxHQUNBLE1BQUFGLEdBQUFKLGtCQUFBSSxFQUFB
RixXQUFBRyxFQUFBQyxHQUFBRixFQUFBRixXQUFBRyxJQXNCQSxPQWxCQUQsR0FBQUosbUJBQUEs
RUFFQUksRUFBQUYsV0FBQSxTQUFBRyxFQUFBQyxHQUNBRixFQUFBRixhQUNBRSxFQUFBSixrQkFB
QUMsRUFBQUMsRUFDQSxJQUFBaHBDLEdBQUFrcEMsRUFBQUMsRUFBQUMsRUFVQSxPQVJBLG1CQUFB
cHBDLEtBQ0FrcEMsRUFBQUYsV0FBQWhwQyxFQUNBa3BDLEVBQUFKLGtCQUFBQyxFQUFBL29DLEdB
Q0FBLEVBQUFrcEMsRUFBQUMsRUFBQUMsSUFLQXBwQyxHQUdBa3BDLEczRndxVWlDMXpCLEVBQXVC
LEVBQUlrekIsRUFFM0JsekIsRUFBdUIsRUFBSXl6QixDQUNzQno4QyxHQUFvQixLQXVFaEcsU0FB
VUksRUFBUTRvQixFQUFxQmhwQixHQUU3QyxZQUVpRkEsR0FBb0IsSUFDbkNBLEVBQW9CLEtBWWhG
LFNBQVVJLEVBQVE0b0IsRUFBcUJocEIsR0FFN0MsWUFLOGYsU0FBUzY0QixHQUFnQnJvQixFQUFT
c29CLEdBQWEsS0FBS3RvQixZQUFvQnNvQixJQUFjLEtBQU0sSUFBSXgxQixXQUFVLHFDQUF1QyxR
QUFTcTBDLEdBQTJCcmtDLEVBQUsvUyxHQUFNLElBQUkrUyxFQUFNLEtBQU0sSUFBSXNrQyxnQkFB
ZSw0REFBOEQsUUFBT3IzQyxHQUFxQixpQkFBUEEsSUFBK0IsbUJBQVBBLEdBQXdCK1MsRUFBTC9T
LEVBQVcsUUFBU3MzQyxHQUFVQyxFQUFTQyxHQUFZLEdBQXVCLG1CQUFiQSxJQUFzQyxPQUFiQSxF
QUFtQixLQUFNLElBQUl6MEMsV0FBVSxpRUFBa0V5MEMsR0FBYUQsR0FBU3YyQyxVQUFVVCxPQUFP
NmxDLE9BQU9vUixHQUFZQSxFQUFXeDJDLFdBQVdpTixhQUFhZ0csTUFBTXNqQyxFQUFTNzJDLFlB
QVcsRUFBTSsyQyxVQUFTLEVBQUtoM0MsY0FBYSxLQUFXKzJDLElBQVdqM0MsT0FBT20zQyxlQUFl
bjNDLE9BQU9tM0MsZUFBZUgsRUFBU0MsR0FBWUQsRUFBU0ksVUFBVUgsR0FKM3dDLEdBQUk4RSxH
QUFzQzc4QyxFQUFvQixHQUMxRDg4QyxFQUE4Qzk4QyxFQUFvQm1CLEVBQUUwN0MsR0FDcEVFLEVB
QTJDLzhDLEVBQW9CLElBQy9EZzlDLEVBQW1EaDlDLEVBQW9CbUIsRUFBRTQ3QyxHQUM5RkUsRUFB
YSxXQUFXLFFBQVNDLEdBQWlCMTRDLEVBQU9nUCxHQUFPLElBQUksR0FBSW5ULEdBQUUsRUFBRUEs
RUFBRW1ULEVBQU14USxPQUFPM0MsSUFBSSxDQUFDLEdBQUk2NUIsR0FBVzFtQixFQUFNblQsRUFB
RzY1QixHQUFXajVCLFdBQVdpNUIsRUFBV2o1QixhQUFZLEVBQU1pNUIsRUFBV2w1QixjQUFhLEVB
QVEsU0FBVWs1QixLQUFXQSxFQUFXOGQsVUFBUyxHQUFLbDNDLE9BQU9DLGVBQWV5RCxFQUFPMDFC
LEVBQVdyMUIsSUFBSXExQixJQUFjLE1BQU8sVUFBU3BCLEVBQVlxa0IsRUFBV0MsR0FBdUksTUFB
dkhELElBQVdELEVBQWlCcGtCLEVBQVl2M0IsVUFBVTQ3QyxHQUFlQyxHQUFZRixFQUFpQnBrQixF
QUFZc2tCLEdBQW9CdGtCLE00RnYwVXZkdWtCLEU1RnUwVXl5QyxTQUFTOUMsR0FBZ0QsUUFBUzhD
LEtBQWdCLEdBQUluSCxHQUFTb0gsRUFBTTlDLEVBQU0rQyxDQUFLMWtCLEdBQWdCM3ZCLEtBQUtt
MEMsRUFBZSxLQUFJLEdBQUl6RyxHQUFLN3pDLFVBQVVDLE9BQU9WLEVBQUt3UixNQUFNOGlDLEdB
QU1FLEVBQUssRUFBRUEsRUFBS0YsRUFBS0UsSUFBUXgwQyxFQUFLdzBDLEdBQU0vekMsVUFBVSt6
QyxFQUFPLE9BQWF3RyxHQUFPOUMsRUFBTTdDLEVBQTJCenVDLE1BQU1ndEMsRUFBS21ILEVBQWNu
RixXQUFXcDNDLE9BQU8wOEMsZUFBZUgsSUFBZ0I5OEMsS0FBS2sxQixNQUFNeWdCLEdBQU1odEMs
TUFBTXN2QixPQUFPbDJCLEtBQWVrNEMsRTRGOXpVaHVEQyxPQUNFbmlDLEtBQU1raUMsRUFBS2hu
QyxNQUFNOEUsTUFBUSxJNUY2elU2dURraUMsRTRGMXpVeHdEaUQsYUFBZSxTQUFBejdDLEdBQ2Is
R0FBTXNXLEdBQU90VyxFQUFFd0MsT0FBT2dRLE1BQU1rcEMsTUFDWixNQUFaMTdDLEVBQUUyN0Ms
UUFDSm5ELEVBQUtobkMsTUFBTW9xQyxPQUFPdGxDLEdBQ2RraUMsRUFBS2huQyxNQUFNcXFDLFNB
Q2JyRCxFQUFLdGlCLFVBQVc1ZixLQUFNLE81RnF6VTA0RGtpQyxFNEZoelV0NkRzRCxhQUFlLFNB
QUE5N0MsR0FDYnc0QyxFQUFLdGlCLFVBQVc1ZixLQUFNdFcsRUFBRXdDLE9BQU9nUSxTNUYreVU0
OERnbUMsRTRGNXlVNytEdUQsV0FBYSxTQUFBLzdDLEdBQ053NEMsRUFBS2huQyxNQUFNcXFDLFNB
Q2RyRCxFQUFLaG5DLE1BQU1vcUMsT0FBTzU3QyxFQUFFd0MsT0FBT2dRLFE1RjB5VTRoRCtvQyxF
QUE4Z0JELEVBQU8zRixFQUEyQjZDLEVBQU0rQyxHQUFzYixNQUF0dEMxRixHQUFVd0YsRUFBYzlD
LEdBQSt3QjBDLEVBQWFJLElBQWdCeDRDLElBQUksU0FBUzJQLE1BQU0sVzRGcnlVdHFFLE1BQ0Vz
b0MsR0FBQWg3QyxFQUFBbUcsY0FBQSxTQUFPKzFDLFVBQ0xoQixLQUNFaUIsS0FBTS8wQyxLQUFL
c0ssTUFBTTBxQyxRQUNqQkMsV0FBWWoxQyxLQUFLc0ssTUFBTXFxQyxVQUV6QjF5QyxLQUFLLE9B
Q0xpekMsWUFBYWwxQyxLQUFLc0ssTUFBTTRxQyxZQUN4QkMsVUFBVSxPQUNWN3BDLE1BQU90TCxL
QUFLdXhDLE1BQU1uaUMsS0FDbEJnbUMsT0FBUXAxQyxLQUFLNjBDLFdBQ2JqdUIsU0FBVTVtQixL
QUFLNDBDLGFBQ2ZTLFVBQVdyMUMsS0FBS3UwQyxtQjVGeXhVd2hGSixHNEZ2MFVyZ0ZSLEVBQUEs
VUFBdEJRLEdBQ1ozc0IsV0FDTGt0QixPQUFRZixFQUFBLFVBQVV2d0IsS0FBS2tyQixXQUN2Qmwv
QixLQUFNdWtDLEVBQUEsVUFBVTc2QixPQUNoQm84QixZQUFhdkIsRUFBQSxVQUFVNzZCLE9BQ3ZC
azhCLFFBQVNyQixFQUFBLFVBQVUyQixLQUNuQlgsUUFBU2hCLEVBQUEsVUFBVTJCLE01RmkwVXU5
RngxQixFQUF1QixFQUFJLEdBSW5nRyxTQUFVNW9CLEVBQVE0b0IsRUFBcUJocEIsR0FFN0MsWUFD
K0JBLEdBQW9CVSxFQUFFc29CLEVBQXFCLElBQUssV0FBYSxNQUFPeTFCLEtBQ3BFeitDLEVBQW9C
VSxFQUFFc29CLEVBQXFCLElBQUssV0FBYSxNQUFPMDFCLEtBQ3BFMStDLEVBQW9CVSxFQUFFc29C
LEVBQXFCLElBQUssV0FBYSxNQUFPMjFCLEk2Rm4xVTVGLElBQU1GLEdBQVcsV0FDWEMsRUFBaUIs
aUJBQ2pCQyxFQUFjLGU3RnMxVXJCLFNBQVV2K0MsRUFBUTRvQixFQUFxQmhwQixHQUU3QyxZQUMr
QkEsR0FBb0JVLEVBQUVzb0IsRUFBcUIsSUFBSyxXQUFhLE1BQU80MUIsS0FDcEU1K0MsRUFBb0JV
LEVBQUVzb0IsRUFBcUIsSUFBSyxXQUFhLE1BQU82MUIsS0FDcEU3K0MsRUFBb0JVLEVBQUVzb0Is
RUFBcUIsSUFBSyxXQUFhLE1BQU84MUIsS0FDcEU5K0MsRUFBb0JVLEVBQUVzb0IsRUFBcUIsSUFB
SyxXQUFhLE1BQU8rMUIsS0FDcEUvK0MsRUFBb0JVLEVBQUVzb0IsRUFBcUIsSUFBSyxXQUFhLE1B
QU9nMkIsS0FDcEVoL0MsRUFBb0JVLEVBQUVzb0IsRUFBcUIsSUFBSyxXQUFhLE1BQU9pMkIsSThG
aDJVNUYsSUFBTUwsR0FBVyxXQUNYQyxFQUFjLGNBQ2RDLEVBQVksWUFDWkMsRUFBZ0IsZ0JBQ2hC
QyxFQUFlLGVBQ2ZDLEVBQWtCLG1COUZnMlV6QixTQUFVNytDLEVBQVFELEVBQVNILEdBRWpDQSxF
QUFvQixJQUNwQkksRUFBT0QsUUFBVUgsRUFBb0IsTUFLL0IsU0FBVUksRUFBUUQsRUFBU0gsR0FF
akMsWStGbjJVQSxxQkFBQW8yQixXQUlBcDJCLEVBQUEsSUFBQWsvQyxTQUNBbjNDLE9BQUFxdUIs
UUFBQXAyQixFQUFBLE1BSUFBLEVBQUEsS0FJQWMsT0FBQTRDLE9BQUExRCxFQUFBLEkvRnEzVU0s
U0FBVUksRUFBUUQsRUFBU0gsR0FFakMsWWdHcDRVQSxTQUFBbS9DLEtBQ0F2M0IsR0FBQSxFQUNB
d08sRUFBQWEsSUFBQSxLQUNBYixFQUFBbUIsSUFBQSxLQUlBLFFBQUEybkIsR0FBQWhjLEdBd0NB
LFFBQUFrYyxHQUFBdGQsSUFFQW9CLEVBQUFtYyxlQUNBQyxFQUNBQyxFQUFBemQsR0FBQTMvQixN
QUNBK2dDLEVBQUFzYyxXQUFBQyxNQUdBRixFQUFBemQsR0FBQTRkLGNBQ0F4YyxFQUFBa2MsYUFD
QUcsRUFBQXpkLEdBQUE2ZCxRQUFBLEVBQ0F6YyxFQUFBa2MsWUFDQUcsRUFBQXpkLEdBQUE0ZCxV
QUNBSCxFQUFBemQsR0FBQTMvQixTQUdBbzlDLEVBQUF6ZCxHQUFBNmQsUUFBQSxFQUNBQyxFQUNB
TCxFQUFBemQsR0FBQTRkLFVBQ0FILEVBQUF6ZCxHQUFBMy9CLFNBS0EsUUFBQTA5QyxHQUFBL2Qs
R0FDQXlkLEVBQUF6ZCxHQUFBNmQsU0FDQXpjLEVBQUEyYyxVQUNBM2MsRUFBQTJjLFVBQUFOLEVB
QUF6ZCxHQUFBNGQsVUFBQUgsRUFBQXpkLEdBQUEzL0IsT0FDT285QyxFQUFBemQsR0FBQXNkLGNB
Q1A5ekMsUUFBQXcwQyxLQUNBLGtDQUFBUCxFQUFBemQsR0FBQTRkLFVBQUEsTUFFQXAwQyxRQUFB
dzBDLEtBQ0EsZ0hBQ0FQLEVBQUF6ZCxHQUFBNGQsVUFBQSxPQXpFQXhjLFFBQ0F0YixHQUFBdTNC
LElBQ0F2M0IsR0FBQSxDQUNBLElBQUFrYSxHQUFBLEVBQ0E0ZCxFQUFBLEVBQ0FILElBQ0FucEIs
R0FBQWEsSUFBQSxTQUFBRyxHQUVBLElBQUFBLEVBQUFkLEtBQ0FpcEIsRUFBQW5vQixFQUFBMm9C
LE9BRUFSLEVBQUFub0IsRUFBQTJvQixLQUFBSixPQUNBRSxFQUFBem9CLEVBQUEyb0IsS0FFQXZi
LGFBQUErYSxFQUFBbm9CLEVBQUEyb0IsS0FBQWpiLGVBRUF5YSxHQUFBbm9CLEVBQUEyb0IsT0FH
QTNwQixFQUFBbUIsSUFBQSxTQUFBSCxFQUFBN3lCLEdBQ0EsSUFBQTZ5QixFQUFBZixNQUNBZSxF
QUFBMm9CLElBQUFqZSxJQUNBeWQsRUFBQW5vQixFQUFBMm9CLE1BQ0FMLFVBQUEsS0FDQXY5QyxN
QUFBb0MsRUFDQXVnQyxRQUFBVixXQUNBZ2IsRUFBQW5yQyxLQUFBLEtBQUFtakIsRUFBQTJvQixL
QUtBVCxFQUFBLzZDLEVBQUFrN0MsR0FDQSxJQUNBLEtBRUFFLFFBQUEsS0E2Q0EsUUFBQUMsR0FB
QTlkLEVBQUEzL0IsR0FDQW1KLFFBQUF3MEMsS0FBQSw2Q0FBQWhlLEVBQUEsUUFDQTMvQixNQUFB
dXJDLE9BQUF2ckMsSUFBQSxJQUNBZ0MsTUFBQSxNQUFBQyxRQUFBLFNBQUE0N0MsR0FDQTEwQyxR
QUFBdzBDLEtBQUEsS0FBQUUsS0FJQSxRQUFBVixHQUFBbjlDLEVBQUE4OUMsR0FDQSxNQUFBQSxH
QUFBQyxLQUFBLFNBQUFDLEdBQ0EsTUFBQWgrQyxhQUFBZytDLEtBNUdBLEdBQUEvcEIsR0FBQXAy
QixFQUFBLElBRUF5L0MsR0FDQTdILGVBQ0F0MEMsVUFDQTg4QyxZQUdBeDRCLEdBQUEsQ0FDQXpu
QixHQUFBZy9DLFVBT0FoL0MsRUFBQSsrQyxVaEdtL1VNLFNBQVU5K0MsRUFBUUQsRUFBU0gsR0FF
akMsY0FDNEIsU0FBU3FnRCxHaUczL1VyQyxRQUFBQyxHQUFBQyxHQUNBL3lDLEVBQUF4SyxTQUNB
dzlDLElBQ0FDLEdBQUEsR0FHQWp6QyxJQUFBeEssUUFBQXU5QyxFQTBCQSxRQUFBRyxLQUNBLEtB
QUFwK0IsRUFBQTlVLEVBQUF4SyxRQUFBLENBQ0EsR0FBQTI5QyxHQUFBcitCLENBVUEsSUFQQUEs
R0FBQSxFQUNBOVUsRUFBQW16QyxHQUFBcGdELE9BTUEraEIsRUFBQXMrQixFQUFBLENBR0EsT0FB
QUMsR0FBQSxFQUFBQyxFQUFBdHpDLEVBQUF4SyxPQUFBc2YsRUFBZ0V1K0IsRUFBQUMsRUFBa0JE
LElBQ2xGcnpDLEVBQUFxekMsR0FBQXJ6QyxFQUFBcXpDLEVBQUF2K0IsRUFFQTlVLEdBQUF4SyxR
QUFBc2YsRUFDQUEsRUFBQSxHQUdBOVUsRUFBQXhLLE9BQUEsRUFDQXNmLEVBQUEsRUFDQW0rQixH
QUFBLEVBeUhBLFFBQUFNLEdBQUE5MkMsR0FDQSxrQkFXQSxRQUFBKzJDLEtBR0F4YyxhQUFBeWMs
R0FDQUMsY0FBQUMsR0FDQWwzQyxJQVhBLEdBQUFnM0MsR0FBQTdjLFdBQUE0YyxFQUFBLEdBSUFH
LEVBQUFDLFlBQUFKLEVBQUEsS0E1TEE1Z0QsRUFBQUQsUUFBQW1nRCxDQVVBLElBT0FFLEdBUEFo
ekMsS0FHQWl6QyxHQUFBLEVBUUFuK0IsRUFBQSxFQUlBcytCLEVBQUEsS0E2Q0F0ekMsRUFBQSxv
QkFBQSt5QyxLQUFBL3NDLEtBQ0ErdEMsRUFBQS96QyxFQUFBZzBDLGtCQUFBaDBDLEVBQUFpMEMs
c0JBY0FmLEdBREEsbUJBQUFhLEdBMkNBLFNBQUFwM0MsR0FDQSxHQUFBdTNDLEdBQUEsRUFDQXBM
LEVBQUEsR0FBQWlMLEdBQUFwM0MsR0FDQWxGLEVBQUFpRCxTQUFBdW1CLGVBQUEsR0FFQSxPQURB
Nm5CLEdBQUFxTCxRQUFBMThDLEdBQTRCMjhDLGVBQUEsSUFDNUIsV0FDQUYsS0FDQXo4QyxFQUFB
NmMsS0FBQTQvQixJQWpEQWQsR0E4QkFLLEVBQUFMLEdBUUFKLEVBQUFFLGVBZ0ZBRixFQUFBUyw2
QmpHaWhWNkJ4Z0QsS0FBS0osRUFBU0gsRUFBb0IsTUFJekQsU0FBVUksRUFBUUQsRUFBU0gsR0FF
akMsWWtHN3RWQSxTQUFBMmhELEdBQUFudEMsR0FDQSxHQUFBL1MsR0FBQSxHQUFBMjBCLEtBQUFz
QixJQUdBLE9BRkFqMkIsR0FBQTYwQixJQUFBLEVBQ0E3MEIsRUFBQTgwQixJQUFBL2hCLEVBQ0Ev
UyxFQWpCQSxHQUFBMjBCLEdBQUFwMkIsRUFBQSxHQUVBSSxHQUFBRCxRQUFBaTJCLENBSUEsSUFB
QXdyQixHQUFBRCxHQUFBLEdBQ0FFLEVBQUFGLEdBQUEsR0FDQUcsRUFBQUgsRUFBQSxNQUNBSSxF
QUFBSixNQUFBdi9DLElBQ0E0L0MsRUFBQUwsRUFBQSxHQUNBTSxFQUFBTixFQUFBLEdBUUF2ckIs
R0FBQVMsUUFBQSxTQUFBcmlCLEdBQ0EsR0FBQUEsWUFBQTRoQixHQUFBLE1BQUE1aEIsRUFFQSxX
QUFBQSxFQUFBLE1BQUFzdEMsRUFDQSxRQUFBMS9DLEtBQUFvUyxFQUFBLE1BQUF1dEMsRUFDQSxT
QUFBdnRDLEVBQUEsTUFBQW90QyxFQUNBLFNBQUFwdEMsRUFBQSxNQUFBcXRDLEVBQ0EsUUFBQXJ0
QyxFQUFBLE1BQUF3dEMsRUFDQSxTQUFBeHRDLEVBQUEsTUFBQXl0QyxFQUVBLHFCQUFBenRDLElB
QUEsbUJBQUFBLEdBQ0EsSUFDQSxHQUFBc2hCLEdBQUF0aEIsRUFBQXNoQixJQUNBLHVCQUFBQSxH
QUNBLFVBQUFNLEdBQUFOLEVBQUE3aEIsS0FBQU8sSUFFSyxNQUFBdWhCLEdBQ0wsVUFBQUssR0FB
QSxTQUFBUyxFQUFBQyxHQUNBQSxFQUFBZixLQUlBLE1BQUE0ckIsR0FBQW50QyxJQUdBNGhCLEVB
QUE4ckIsSUFBQSxTQUFBenBCLEdBQ0EsR0FBQW4yQixHQUFBd1IsTUFBQXZTLFVBQUFxRyxNQUFB
ckgsS0FBQWs0QixFQUVBLFdBQUFyQyxHQUFBLFNBQUFTLEVBQUFDLEdBR0EsUUFBQXBMLEdBQUFy
ckIsRUFBQWdELEdBQ0EsR0FBQUEsSUFBQSxpQkFBQUEsSUFBQSxtQkFBQUEsSUFBQSxDQUNBLEdB
QUFBLFlBQUEreUIsSUFBQS95QixFQUFBeXlCLE9BQUFNLEVBQUE3MEIsVUFBQXUwQixLQUFBLENB
Q0EsU0FBQXp5QixFQUFBaXpCLEtBQ0FqekIsSUFBQWt6QixHQUVBLFlBQUFsekIsRUFBQWl6QixJ
QUFBNUssRUFBQXJyQixFQUFBZ0QsRUFBQWt6QixNQUNBLElBQUFsekIsRUFBQWl6QixLQUFBUSxF
QUFBenpCLEVBQUFrekIsU0FDQWx6QixHQUFBeXlCLEtBQUEsU0FBQXp5QixHQUNBcW9CLEVBQUFy
ckIsRUFBQWdELElBQ1d5ekIsSUFHWCxHQUFBaEIsR0FBQXp5QixFQUFBeXlCLElBQ0EsdUJBQUFB
LEdBQUEsQ0FLQSxXQUpBLElBQUFNLEdBQUFOLEVBQUE3aEIsS0FBQTVRLElBQ0F5eUIsS0FBQSxT
QUFBenlCLEdBQ0Fxb0IsRUFBQXJyQixFQUFBZ0QsSUFDYXl6QixJQUtieDBCLEVBQUFqQyxHQUFB
Z0QsRUFDQSxNQUFBOCtDLEdBQ0F0ckIsRUFBQXYwQixHQTNCQSxPQUFBQSxFQUFBVSxPQUFBLE1B
QUE2ekIsTUE4QkEsUUE3QkFzckIsR0FBQTcvQyxFQUFBVSxPQTZCQTNDLEVBQUEsRUFBbUJBLEVB
QUFpQyxFQUFBVSxPQUFpQjNDLElBQ3BDcXJCLEVBQUFyckIsRUFBQWlDLEVBQUFqQyxPQUtBKzFC
LEVBQUFVLE9BQUEsU0FBQXRpQixHQUNBLFVBQUE0aEIsR0FBQSxTQUFBUyxFQUFBQyxHQUNBQSxF
QUFBdGlCLE1BSUE0aEIsRUFBQWdzQixLQUFBLFNBQUFDLEdBQ0EsVUFBQWpzQixHQUFBLFNBQUFT
LEVBQUFDLEdBQ0F1ckIsRUFBQWorQyxRQUFBLFNBQUFvUSxHQUNBNGhCLEVBQUFTLFFBQUFyaUIs
R0FBQXNoQixLQUFBZSxFQUFBQyxRQU9BVixFQUFBNzBCLFVBQUEsZUFBQXExQixHQUNBLE1BQUEx
dEIsTUFBQTRzQixLQUFBLEtBQUFjLEtsR3F2Vk0sU0FBVXgyQixFQUFRRCxJbUc5MVZ4QixTQUFB
bVQsR0FDQSxZQTJDQSxTQUFBZ3ZDLEdBQUEzaEQsR0FJQSxHQUhBLGlCQUFBQSxLQUNBQSxFQUFB
aUQsT0FBQWpELElBRUEsNkJBQUE4WSxLQUFBOVksR0FDQSxTQUFBMkMsV0FBQSx5Q0FFQSxPQUFB
M0MsR0FBQWlWLGNBR0EsUUFBQTJzQyxHQUFBL3RDLEdBSUEsTUFIQSxpQkFBQUEsS0FDQUEsRUFB
QTVRLE9BQUE0USxJQUVBQSxFQUlBLFFBQUFndUMsR0FBQUMsR0FDQSxHQUFBclosSUFDQTdRLEtB
QUEsV0FDQSxHQUFBL2pCLEdBQUFpdUMsRUFBQUMsT0FDQSxRQUFnQmxyQixTQUFBcDFCLEtBQUFv
UyxZQVVoQixPQU5BbXVDLEdBQUFDLFdBQ0F4WixFQUFBOVEsT0FBQThRLFVBQUEsV0FDQSxNQUFB
QSxLQUlBQSxFQUdBLFFBQUF5WixHQUFBQyxHQUNBNTVDLEtBQUFsRixPQUVBOCtDLFlBQUFELEdB
Q0FDLEVBQUExK0MsUUFBQSxTQUFBb1EsRUFBQTdULEdBQ0F1SSxLQUFBNjVDLE9BQUFwaUQsRUFB
QTZULElBQ090TCxNQUNGNEssTUFBQXNYLFFBQUEwM0IsR0FDTEEsRUFBQTErQyxRQUFBLFNBQUE0
K0MsR0FDQTk1QyxLQUFBNjVDLE9BQUFDLEVBQUEsR0FBQUEsRUFBQSxLQUNPOTVDLE1BQ0Y0NUMs
R0FDTGhpRCxPQUFBK0Msb0JBQUFpL0MsR0FBQTErQyxRQUFBLFNBQUF6RCxHQUNBdUksS0FBQTY1
QyxPQUFBcGlELEVBQUFtaUQsRUFBQW5pRCxLQUNPdUksTUEwRFAsUUFBQSs1QyxHQUFBM1MsR0FD
QSxHQUFBQSxFQUFBNFMsU0FDQSxNQUFBOXNCLFNBQUFVLE9BQUEsR0FBQXh6QixXQUFBLGdCQUVB
Z3RDLEdBQUE0UyxVQUFBLEVBR0EsUUFBQUMsR0FBQUMsR0FDQSxVQUFBaHRCLFNBQUEsU0FBQVMs
RUFBQUMsR0FDQXNzQixFQUFBQyxPQUFBLFdBQ0F4c0IsRUFBQXVzQixFQUFBRSxTQUVBRixFQUFB
RyxRQUFBLFdBQ0F6c0IsRUFBQXNzQixFQUFBamhELFVBS0EsUUFBQXFoRCxHQUFBQyxHQUNBLEdB
QUFMLEdBQUEsR0FBQU0sWUFDQXRzQixFQUFBK3JCLEVBQUFDLEVBRUEsT0FEQUEsR0FBQU8sa0JB
QUFGLEdBQ0Fyc0IsRUFHQSxRQUFBd3NCLEdBQUFILEdBQ0EsR0FBQUwsR0FBQSxHQUFBTSxZQUNB
dHNCLEVBQUErckIsRUFBQUMsRUFFQSxPQURBQSxHQUFBUyxXQUFBSixHQUNBcnNCLEVBR0EsUUFB
QTBzQixHQUFBQyxHQUlBLE9BSEEzbEMsR0FBQSxHQUFBNGxDLFlBQUFELEdBQ0FFLEVBQUEsR0FB
QW53QyxPQUFBc0ssRUFBQXBiLFFBRUEzQyxFQUFBLEVBQW1CQSxFQUFBK2QsRUFBQXBiLE9BQWlC
M0MsSUFDcEM0akQsRUFBQTVqRCxHQUFBdUQsT0FBQUcsYUFBQXFhLEVBQUEvZCxHQUVBLE9BQUE0
akQsR0FBQWhnRCxLQUFBLElBR0EsUUFBQWlnRCxHQUFBSCxHQUNBLEdBQUFBLEVBQUFuOEMsTUFD
QSxNQUFBbThDLEdBQUFuOEMsTUFBQSxFQUVBLElBQUF3VyxHQUFBLEdBQUE0bEMsWUFBQUQsRUFB
QUksV0FFQSxPQURBL2xDLEdBQUFVLElBQUEsR0FBQWtsQyxZQUFBRCxJQUNBM2xDLEVBQUFnbUMs
T0FJQSxRQUFBQyxLQTBGQSxNQXpGQW43QyxNQUFBZzZDLFVBQUEsRUFFQWg2QyxLQUFBbzdDLFVB
QUEsU0FBQWhVLEdBRUEsR0FEQXBuQyxLQUFBcTdDLFVBQUFqVSxFQUNBQSxFQUVPLG9CQUFBQSxH
QUNQcG5DLEtBQUFzN0MsVUFBQWxVLE1BQ08sSUFBQXFTLEVBQUFjLE1BQUFnQixLQUFBbGpELFVB
QUFtakQsY0FBQXBVLEdBQ1BwbkMsS0FBQXk3QyxVQUFBclUsTUFDTyxJQUFBcVMsRUFBQWlDLFVB
QUFDLFNBQUF0akQsVUFBQW1qRCxjQUFBcFUsR0FDUHBuQyxLQUFBNDdDLGNBQUF4VSxNQUNPLElB
QUFxUyxFQUFBb0MsY0FBQUMsZ0JBQUF6akQsVUFBQW1qRCxjQUFBcFUsR0FDUHBuQyxLQUFBczdD
LFVBQUFsVSxFQUFBM29DLGVBQ08sSUFBQWc3QyxFQUFBc0MsYUFBQXRDLEVBQUFjLE1BQUF5QixF
QUFBNVUsR0FDUHBuQyxLQUFBaThDLGlCQUFBakIsRUFBQTVULEVBQUE4VCxRQUVBbDdDLEtBQUFx
N0MsVUFBQSxHQUFBRSxPQUFBdjdDLEtBQUFpOEMsdUJBQ08sS0FBQXhDLEVBQUFzQyxjQUFBRyxZ
QUFBN2pELFVBQUFtakQsY0FBQXBVLEtBQUErVSxFQUFBL1UsR0FHUCxTQUFBanVDLE9BQUEsNEJB
RkE2RyxNQUFBaThDLGlCQUFBakIsRUFBQTVULE9BZEFwbkMsTUFBQXM3QyxVQUFBLEVBbUJBdDdD
LE1BQUE0NUMsUUFBQTVoRCxJQUFBLGtCQUNBLGlCQUFBb3ZDLEdBQ0FwbkMsS0FBQTQ1QyxRQUFB
aGtDLElBQUEsMkNBQ1M1VixLQUFBeTdDLFdBQUF6N0MsS0FBQXk3QyxVQUFBeDVDLEtBQ1RqQyxL
QUFBNDVDLFFBQUFoa0MsSUFBQSxlQUFBNVYsS0FBQXk3QyxVQUFBeDVDLE1BQ1N3M0MsRUFBQW9D
LGNBQUFDLGdCQUFBempELFVBQUFtakQsY0FBQXBVLElBQ1RwbkMsS0FBQTQ1QyxRQUFBaGtDLElB
QUEsb0VBS0E2akMsRUFBQWMsT0FDQXY2QyxLQUFBdTZDLEtBQUEsV0FDQSxHQUFBNkIsR0FBQXJD
LEVBQUEvNUMsS0FDQSxJQUFBbzhDLEVBQ0EsTUFBQUEsRUFHQSxJQUFBcDhDLEtBQUF5N0MsVUFD
QSxNQUFBdnVCLFNBQUFTLFFBQUEzdEIsS0FBQXk3QyxVQUNTLElBQUF6N0MsS0FBQWk4QyxpQkFD
VCxNQUFBL3VCLFNBQUFTLFFBQUEsR0FBQTR0QixPQUFBdjdDLEtBQUFpOEMsbUJBQ1MsSUFBQWo4
QyxLQUFBNDdDLGNBQ1QsU0FBQXppRCxPQUFBLHVDQUVBLE9BQUErekIsU0FBQVMsUUFBQSxHQUFB
NHRCLE9BQUF2N0MsS0FBQXM3QyxjQUlBdDdDLEtBQUErN0MsWUFBQSxXQUNBLE1BQUEvN0MsTUFB
QWk4QyxpQkFDQWxDLEVBQUEvNUMsT0FBQWt0QixRQUFBUyxRQUFBM3RCLEtBQUFpOEMsa0JBRUFq
OEMsS0FBQXU2QyxPQUFBM3RCLEtBQUEwdEIsS0FLQXQ2QyxLQUFBb1AsS0FBQSxXQUNBLEdBQUFn
dEMsR0FBQXJDLEVBQUEvNUMsS0FDQSxJQUFBbzhDLEVBQ0EsTUFBQUEsRUFHQSxJQUFBcDhDLEtB
QUF5N0MsVUFDQSxNQUFBZixHQUFBMTZDLEtBQUF5N0MsVUFDTyxJQUFBejdDLEtBQUFpOEMsaUJB
Q1AsTUFBQS91QixTQUFBUyxRQUFBaXRCLEVBQUE1NkMsS0FBQWk4QyxrQkFDTyxJQUFBajhDLEtB
QUE0N0MsY0FDUCxTQUFBemlELE9BQUEsdUNBRUEsT0FBQSt6QixTQUFBUyxRQUFBM3RCLEtBQUFz
N0MsWUFJQTdCLEVBQUFpQyxXQUNBMTdDLEtBQUEwN0MsU0FBQSxXQUNBLE1BQUExN0MsTUFBQW9Q
LE9BQUF3ZCxLQUFBeXZCLEtBSUFyOEMsS0FBQXM4QyxLQUFBLFdBQ0EsTUFBQXQ4QyxNQUFBb1As
T0FBQXdkLEtBQUFta0IsS0FBQXdMLFFBR0F2OEMsS0FNQSxRQUFBdzhDLEdBQUFyNEMsR0FDQSxH
QUFBczRDLEdBQUF0NEMsRUFBQTR1QixhQUNBLE9BQUEycEIsR0FBQS83QixRQUFBODdCLElBQUEs
RUFBQUEsRUFBQXQ0QyxFQUdBLFFBQUF3NEMsR0FBQXpXLEVBQUFsTSxHQUNBQSxPQUNBLElBQUFv
TixHQUFBcE4sRUFBQW9OLElBRUEsSUFBQWxCLFlBQUF5VyxHQUFBLENBQ0EsR0FBQXpXLEVBQUE4
VCxTQUNBLFNBQUE1L0MsV0FBQSxlQUVBNEYsTUFBQXF5QixJQUFBNlQsRUFBQTdULElBQ0FyeUIs
S0FBQTQ4QyxZQUFBMVcsRUFBQTBXLFlBQ0E1aUIsRUFBQTRmLFVBQ0E1NUMsS0FBQTQ1QyxRQUFB
LEdBQUFELEdBQUF6VCxFQUFBMFQsVUFFQTU1QyxLQUFBbUUsT0FBQStoQyxFQUFBL2hDLE9BQ0Fu
RSxLQUFBNjhDLEtBQUEzVyxFQUFBMlcsS0FDQXpWLEdBQUEsTUFBQWxCLEVBQUFtVixZQUNBalUs
RUFBQWxCLEVBQUFtVixVQUNBblYsRUFBQThULFVBQUEsT0FHQWg2QyxNQUFBcXlCLElBQUEzM0Is
T0FBQXdyQyxFQVdBLElBUkFsbUMsS0FBQTQ4QyxZQUFBNWlCLEVBQUE0aUIsYUFBQTU4QyxLQUFB
NDhDLGFBQUEsUUFDQTVpQixFQUFBNGYsU0FBQTU1QyxLQUFBNDVDLFVBQ0E1NUMsS0FBQTQ1QyxR
QUFBLEdBQUFELEdBQUEzZixFQUFBNGYsVUFFQTU1QyxLQUFBbUUsT0FBQXE0QyxFQUFBeGlCLEVB
QUE3MUIsUUFBQW5FLEtBQUFtRSxRQUFBLE9BQ0FuRSxLQUFBNjhDLEtBQUE3aUIsRUFBQTZpQixN
QUFBNzhDLEtBQUE2OEMsTUFBQSxLQUNBNzhDLEtBQUE4OEMsU0FBQSxNQUVBLFFBQUE5OEMsS0FB
QW1FLFFBQUEsU0FBQW5FLEtBQUFtRSxTQUFBaWpDLEVBQ0EsU0FBQWh0QyxXQUFBLDRDQUVBNEYs
TUFBQW83QyxVQUFBaFUsR0FPQSxRQUFBaVYsR0FBQWpWLEdBQ0EsR0FBQTJWLEdBQUEsR0FBQXBC
LFNBU0EsT0FSQXZVLEdBQUFvTixPQUFBdjVDLE1BQUEsS0FBQUMsUUFBQSxTQUFBOGhELEdBQ0Es
R0FBQUEsRUFBQSxDQUNBLEdBQUEvaEQsR0FBQStoRCxFQUFBL2hELE1BQUEsS0FDQXhELEVBQUF3
RCxFQUFBdStDLFFBQUFsZ0QsUUFBQSxXQUNBZ1MsRUFBQXJRLEVBQUFGLEtBQUEsS0FBQXpCLFFB
QUEsVUFDQXlqRCxHQUFBbEQsT0FBQW9ELG1CQUFBeGxELEdBQUF3bEQsbUJBQUEzeEMsT0FHQXl4
QyxFQUdBLFFBQUFHLEdBQUFDLEdBQ0EsR0FBQXZELEdBQUEsR0FBQUQsRUFTQSxPQVJBd0QsR0FB
QWxpRCxNQUFBLFNBQUFDLFFBQUEsU0FBQTQ3QyxHQUNBLEdBQUFzRyxHQUFBdEcsRUFBQTc3QyxN
QUFBLEtBQ0FVLEVBQUF5aEQsRUFBQTVELFFBQUFoRixNQUNBLElBQUE3NEMsRUFBQSxDQUNBLEdB
QUEyUCxHQUFBOHhDLEVBQUFyaUQsS0FBQSxLQUFBeTVDLE1BQ0FvRixHQUFBQyxPQUFBbCtDLEVB
QUEyUCxNQUdBc3VDLEVBS0EsUUFBQXlELEdBQUFDLEVBQUF0akIsR0FDQUEsSUFDQUEsTUFHQWg2
QixLQUFBaUMsS0FBQSxVQUNBakMsS0FBQXU5QyxPQUFBLFVBQUF2akIsS0FBQXVqQixPQUFBLElB
Q0F2OUMsS0FBQXc5QyxHQUFBeDlDLEtBQUF1OUMsUUFBQSxLQUFBdjlDLEtBQUF1OUMsT0FBQSxJ
QUNBdjlDLEtBQUF5OUMsV0FBQSxjQUFBempCLEtBQUF5akIsV0FBQSxLQUNBejlDLEtBQUE0NUMs
UUFBQSxHQUFBRCxHQUFBM2YsRUFBQTRmLFNBQ0E1NUMsS0FBQXF5QixJQUFBMkgsRUFBQTNILEtB
QUEsR0FDQXJ5QixLQUFBbzdDLFVBQUFrQyxHQTdYQSxJQUFBbHpDLEVBQUFzekMsTUFBQSxDQUlB
LEdBQUFqRSxJQUNBb0MsYUFBQSxtQkFBQXp4QyxHQUNBc3ZDLFNBQUEsVUFBQXR2QyxJQUFBLFlB
QUFnbEIsUUFDQW1yQixLQUFBLGNBQUFud0MsSUFBQSxRQUFBQSxJQUFBLFdBQ0EsSUFFQSxNQURB
LElBQUFteEMsT0FDQSxFQUNPLE1BQUF6aUQsR0FDUCxhQUdBNGlELFNBQUEsWUFBQXR4QyxHQUNB
MnhDLFlBQUEsZUFBQTN4QyxHQUdBLElBQUFxdkMsRUFBQXNDLFlBQ0EsR0FBQTRCLElBQ0EscUJB
Q0Esc0JBQ0EsNkJBQ0Esc0JBQ0EsdUJBQ0Esc0JBQ0EsdUJBQ0Esd0JBQ0EseUJBR0EzQixFQUFB
LFNBQUFydkIsR0FDQSxNQUFBQSxJQUFBaXhCLFNBQUF2bEQsVUFBQW1qRCxjQUFBN3VCLElBR0F3
dkIsRUFBQUQsWUFBQTJCLFFBQUEsU0FBQWx4QixHQUNBLE1BQUFBLElBQUFneEIsRUFBQWg5QixR
QUFBL29CLE9BQUFTLFVBQUFvRyxTQUFBcEgsS0FBQXMxQixLQUFBLEVBeURBZ3RCLEdBQUF0aEQs
VUFBQXdoRCxPQUFBLFNBQUFwaUQsRUFBQTZULEdBQ0E3VCxFQUFBMmhELEVBQUEzaEQsR0FDQTZU
LEVBQUErdEMsRUFBQS90QyxFQUNBLElBQUF3eUMsR0FBQTk5QyxLQUFBbEYsSUFBQXJELEVBQ0F1
SSxNQUFBbEYsSUFBQXJELEdBQUFxbUQsSUFBQSxJQUFBeHlDLEtBR0FxdUMsRUFBQXRoRCxVQUFB
LGdCQUFBWixTQUNBdUksTUFBQWxGLElBQUFzK0MsRUFBQTNoRCxLQUdBa2lELEVBQUF0aEQsVUFB
QUwsSUFBQSxTQUFBUCxHQUVBLE1BREFBLEdBQUEyaEQsRUFBQTNoRCxHQUNBdUksS0FBQTJWLElB
QUFsZSxHQUFBdUksS0FBQWxGLElBQUFyRCxHQUFBLE1BR0FraUQsRUFBQXRoRCxVQUFBc2QsSUFB
QSxTQUFBbGUsR0FDQSxNQUFBdUksTUFBQWxGLElBQUF4QyxlQUFBOGdELEVBQUEzaEQsS0FHQWtp
RCxFQUFBdGhELFVBQUF1ZCxJQUFBLFNBQUFuZSxFQUFBNlQsR0FDQXRMLEtBQUFsRixJQUFBcytD
LEVBQUEzaEQsSUFBQTRoRCxFQUFBL3RDLElBR0FxdUMsRUFBQXRoRCxVQUFBNkMsUUFBQSxTQUFB
NkYsRUFBQWc5QyxHQUNBLE9BQUF0bUQsS0FBQXVJLE1BQUFsRixJQUNBa0YsS0FBQWxGLElBQUF4
QyxlQUFBYixJQUNBc0osRUFBQTFKLEtBQUEwbUQsRUFBQS85QyxLQUFBbEYsSUFBQXJELEtBQUF1
SSxPQUtBMjVDLEVBQUF0aEQsVUFBQStDLEtBQUEsV0FDQSxHQUFBbStDLEtBRUEsT0FEQXY1QyxN
QUFBOUUsUUFBQSxTQUFBb1EsRUFBQTdULEdBQXdDOGhELEVBQUExN0MsS0FBQXBHLEtBQ3hDNmhE
LEVBQUFDLElBR0FJLEVBQUF0aEQsVUFBQThnRCxPQUFBLFdBQ0EsR0FBQUksS0FFQSxPQURBdjVD
LE1BQUE5RSxRQUFBLFNBQUFvUSxHQUFrQ2l1QyxFQUFBMTdDLEtBQUF5TixLQUNsQ2d1QyxFQUFB
QyxJQUdBSSxFQUFBdGhELFVBQUE4bkMsUUFBQSxXQUNBLEdBQUFvWixLQUVBLE9BREF2NUMsTUFB
QTlFLFFBQUEsU0FBQW9RLEVBQUE3VCxHQUF3QzhoRCxFQUFBMTdDLE1BQUFwRyxFQUFBNlQsTUFD
eENndUMsRUFBQUMsSUFHQUUsRUFBQUMsV0FDQUMsRUFBQXRoRCxVQUFBKzJCLE9BQUE4USxVQUFB
eVosRUFBQXRoRCxVQUFBOG5DLFFBcUpBLElBQUF1YyxJQUFBLDZDQTRDQUMsR0FBQXRrRCxVQUFB
MmxELE1BQUEsV0FDQSxVQUFBckIsR0FBQTM4QyxNQUE4Qm9uQyxLQUFBcG5DLEtBQUFxN0MsYUE2
QjlCRixFQUFBOWpELEtBQUFzbEQsRUFBQXRrRCxXQWdCQThpRCxFQUFBOWpELEtBQUFnbUQsRUFB
QWhsRCxXQUVBZ2xELEVBQUFobEQsVUFBQTJsRCxNQUFBLFdBQ0EsVUFBQVgsR0FBQXI5QyxLQUFB
cTdDLFdBQ0FrQyxPQUFBdjlDLEtBQUF1OUMsT0FDQUUsV0FBQXo5QyxLQUFBeTlDLFdBQ0E3RCxR
QUFBLEdBQUFELEdBQUEzNUMsS0FBQTQ1QyxTQUNBdm5CLElBQUFyeUIsS0FBQXF5QixPQUlBZ3JC
LEVBQUFwa0QsTUFBQSxXQUNBLEdBQUFnbEQsR0FBQSxHQUFBWixHQUFBLE1BQXVDRSxPQUFBLEVB
QUFFLFdBQUEsSUFFdkMsT0FEQVEsR0FBQWg4QyxLQUFBLFFBQ0FnOEMsRUFHQSxJQUFBQyxJQUFB
LG9CQUVBYixHQUFBYyxTQUFBLFNBQUE5ckIsRUFBQWtyQixHQUNBLFFBQUFXLEVBQUF2OUIsUUFB
QTQ4QixHQUNBLFNBQUFyRyxZQUFBLHNCQUdBLFdBQUFtRyxHQUFBLE1BQStCRSxTQUFBM0QsU0FB
MEJ3RSxTQUFBL3JCLE1BR3pEam9CLEVBQUF1dkMsVUFDQXZ2QyxFQUFBdXlDLFVBQ0F2eUMsRUFB
QWl6QyxXQUVBanpDLEVBQUFzekMsTUFBQSxTQUFBeFgsRUFBQW1ZLEdBQ0EsVUFBQW54QixTQUFB
LFNBQUFTLEVBQUFDLEdBQ0EsR0FBQTB3QixHQUFBLEdBQUEzQixHQUFBelcsRUFBQW1ZLEdBQ0FF
LEVBQUEsR0FBQUMsZUFFQUQsR0FBQXBFLE9BQUEsV0FDQSxHQUFBbmdCLElBQ0F1akIsT0FBQWdC
LEVBQUFoQixPQUNBRSxXQUFBYyxFQUFBZCxXQUNBN0QsUUFBQXNELEVBQUFxQixFQUFBRSx5QkFB
QSxJQUVBemtCLEdBQUEzSCxJQUFBLGVBQUFrc0IsS0FBQUcsWUFBQTFrQixFQUFBNGYsUUFBQTVo
RCxJQUFBLGdCQUNBLElBQUFvdkMsR0FBQSxZQUFBbVgsS0FBQU4sU0FBQU0sRUFBQUksWUFDQWh4
QixHQUFBLEdBQUEwdkIsR0FBQWpXLEVBQUFwTixLQUdBdWtCLEVBQUFsRSxRQUFBLFdBQ0F6c0Is
RUFBQSxHQUFBeHpCLFdBQUEsNEJBR0Fta0QsRUFBQUssVUFBQSxXQUNBaHhCLEVBQUEsR0FBQXh6
QixXQUFBLDRCQUdBbWtELEVBQUFNLEtBQUFQLEVBQUFuNkMsT0FBQW02QyxFQUFBanNCLEtBQUEs
R0FFQSxZQUFBaXNCLEVBQUExQixjQUNBMkIsRUFBQU8saUJBQUEsR0FHQSxnQkFBQVAsSUFBQTlF
LEVBQUFjLE9BQ0FnRSxFQUFBUSxhQUFBLFFBR0FULEVBQUExRSxRQUFBMStDLFFBQUEsU0FBQW9R
LEVBQUE3VCxHQUNBOG1ELEVBQUFTLGlCQUFBdm5ELEVBQUE2VCxLQUdBaXpDLEVBQUFVLEtBQUEs
b0JBQUFYLEdBQUFqRCxVQUFBLEtBQUFpRCxFQUFBakQsY0FHQWp4QyxFQUFBc3pDLE1BQUF3QixV
QUFBLElBQ0Msb0JBQUE5MEMsV0FBQXBLLE9uR3EyVkssU0FBVTlJLEVBQVE0b0IsRUFBcUJocEIs
R0FFN0MsWUFDQWMsUUFBT0MsZUFBZWlvQixFQUFxQixjQUFnQnhVLE9BQU8sR0FDN0MsSUFBSXFv
QyxHQUFzQzc4QyxFQUFvQixHQUMxRDg4QyxFQUE4Qzk4QyxFQUFvQm1CLEVBQUUwN0MsR0FDcEV3
TCxFQUEwQ3JvRCxFQUFvQixLQUU5RHNvRCxHQURrRHRvRCxFQUFvQm1CLEVBQUVrbkQsR0FDbENy
b0QsRUFBb0IsS0FDMUR1b0QsRUFBNEN2b0QsRUFBb0IsSUFDaEV3b0QsRUFBZ0R4b0QsRUFBb0Is
S0FDcEV5b0QsRUFBMEN6b0QsRUFBb0IsS0FDOUQwb0QsRUFBMEQxb0QsRUFBb0IsS29HcnpXakdz
NEMsR3BHc3pXcUZ0NEMsRUFBb0JtQixFQUFFdW5ELEdvR3R6V25HNW5ELE9BQUF3bkQsRUFBQSxH
QUFZRyxFQUFBLEdBRTFCM25ELFFBQUF1bkQsRUFBQSxRQUNFdkwsRUFBQWg3QyxFQUFBbUcsY0FB
Q3NnRCxFQUFBLEdBQVNqUSxNQUFPQSxHQUNmd0UsRUFBQWg3QyxFQUFBbUcsY0FBQ3VnRCxFQUFB
LEVBQUQsT0FFRnhnRCxTQUFTMmdELGVBQWUsVXBHcXpXcEIsU0FBVXZvRCxFQUFRRCxFQUFTSCxH
QUVqQyxZcUczeVdBLElBQUE0b0QsR0FBQSxZQXFDQXhvRCxHQUFBRCxRQUFBeW9ELEdyRzAwV00s
U0FBVXhvRCxFQUFRRCxFQUFTSCxHQUVqQyxZc0dyM1dBLFNBQUE2b0QsR0FBQXZ3QyxHQUNBLFVB
QUFBLEdBQUE5VixRQUFBc21ELEVBQUEsT0FXQSxRQUFBQyxHQUFBQyxFQUFBQyxHQUNBLy9DLEtB
QUFvakIsS0FBQTA4QixFQUNBOS9DLEtBQUFnRCxRQUFBKzhDLEVBQ0EvL0MsS0FBQWtKLE1BQUEs
RUFTQSxRQUFBODJDLEdBQUFDLEVBQUF2Z0IsRUFBQWpvQyxHQUNBLEdBQUEyckIsR0FBQTY4QixF
QUFBNzhCLEtBQ0FwZ0IsRUFBQWk5QyxFQUFBajlDLE9BRUFvZ0IsR0FBQS9yQixLQUFBMkwsRUFB
QTA4QixFQUFBdWdCLEVBQUEvMkMsU0FlQSxRQUFBZzNDLEdBQUFqakQsRUFBQWtqRCxFQUFBSixH
QUNBLFNBQUE5aUQsRUFDQSxNQUFBQSxFQUVBLElBQUF1aUMsR0FBQXFnQixFQUFBai9DLFVBQUF1
L0MsRUFBQUosRUFDQXZmLEdBQUF2akMsRUFBQStpRCxFQUFBeGdCLEdBQ0FxZ0IsRUFBQTU3QyxR
QUFBdTdCLEdBWUEsUUFBQTRnQixHQUFBQyxFQUFBQyxFQUFBQyxFQUFBQyxHQUNBeGdELEtBQUFv
NkMsT0FBQWlHLEVBQ0FyZ0QsS0FBQXNnRCxZQUNBdGdELEtBQUFvakIsS0FBQW05QixFQUNBdmdE
LEtBQUFnRCxRQUFBdzlDLEVBQ0F4Z0QsS0FBQWtKLE1BQUEsRUFXQSxRQUFBdTNDLEdBQUFSLEVB
QUF2Z0IsRUFBQWdoQixHQUNBLEdBQUF0RyxHQUFBNkYsRUFBQTdGLE9BQ0FrRyxFQUFBTCxFQUFB
SyxVQUNBbDlCLEVBQUE2OEIsRUFBQTc4QixLQUNBcGdCLEVBQUFpOUMsRUFBQWo5QyxRQUdBMjlD
LEVBQUF2OUIsRUFBQS9yQixLQUFBMkwsRUFBQTA4QixFQUFBdWdCLEVBQUEvMkMsUUFDQTBCLE9B
QUFzWCxRQUFBeStCLEdBQ0FDLEVBQUFELEVBQUF2RyxFQUFBc0csRUFBQWxuRCxFQUFBeUcscUJB
Q0csTUFBQTBnRCxJQUNIcjRDLEVBQUFpQixlQUFBbzNDLEtBQ0FBLEVBQUFyNEMsRUFBQTBDLG1C
QUFBMjFDLEVBR0FMLElBQUFLLEVBQUFobEQsS0FBQStqQyxLQUFBL2pDLE1BQUFnbEQsRUFBQWhs
RCxJQUFBLEdBQUFna0QsRUFBQWdCLEVBQUFobEQsS0FBQSxLQUFBK2tELElBRUF0RyxFQUFBdjhD
LEtBQUE4aUQsSUFJQSxRQUFBQyxHQUFBM2pELEVBQUE4K0IsRUFBQWxKLEVBQUF6UCxFQUFBcGdC
LEdBQ0EsR0FBQTY5QyxHQUFBLEVBQ0EsT0FBQWh1QixJQUNBZ3VCLEVBQUFsQixFQUFBOXNCLEdB
QUEsSUFFQSxJQUFBMk0sR0FBQTRnQixFQUFBeC9DLFVBQUFtN0IsRUFBQThrQixFQUFBejlCLEVB
QUFwZ0IsRUFDQXc5QixHQUFBdmpDLEVBQUF3akQsRUFBQWpoQixHQUNBNGdCLEVBQUFuOEMsUUFB
QXU3QixHQWdCQSxRQUFBc2hCLEdBQUE3akQsRUFBQW1tQixFQUFBcGdCLEdBQ0EsU0FBQS9GLEVB
Q0EsTUFBQUEsRUFFQSxJQUFBbTlDLEtBRUEsT0FEQXdHLEdBQUEzakQsRUFBQW05QyxFQUFBLEtB
QUFoM0IsRUFBQXBnQixHQUNBbzNDLEVBR0EsUUFBQTJHLEdBQUF2aEIsRUFBQUUsRUFBQWpvQyxH
QUNBLFlBWUEsUUFBQXVwRCxHQUFBL2pELEVBQUErRixHQUNBLE1BQUF3OUIsR0FBQXZqQyxFQUFB
OGpELEVBQUEsTUFTQSxRQUFBNTNDLEdBQUFsTSxHQUNBLEdBQUFtOUMsS0FFQSxPQURBd0csR0FB
QTNqRCxFQUFBbTlDLEVBQUEsS0FBQTVnRCxFQUFBeUcscUJBQ0FtNkMsRUF0S0EsR0FBQWgzQyxH
QUFBdE0sRUFBQSxLQUNBd1IsRUFBQXhSLEVBQUEsSUFFQTBDLEVBQUExQyxFQUFBLEdBQ0EwcEMs
RUFBQTFwQyxFQUFBLEtBRUF5USxFQUFBbkUsRUFBQW1FLGtCQUNBTixFQUFBN0QsRUFBQTZELG1C
QUVBMjRDLEVBQUEsTUFrQkFDLEdBQUF4bkQsVUFBQTJMLFdBQUEsV0FDQWhFLEtBQUFvakIsS0FB
QSxLQUNBcGpCLEtBQUFnRCxRQUFBLEtBQ0FoRCxLQUFBa0osTUFBQSxHQUVBOUYsRUFBQWlCLGFB
QUF3N0MsRUFBQXQ0QyxHQThDQTY0QyxFQUFBL25ELFVBQUEyTCxXQUFBLFdBQ0FoRSxLQUFBbzZD
LE9BQUEsS0FDQXA2QyxLQUFBc2dELFVBQUEsS0FDQXRnRCxLQUFBb2pCLEtBQUEsS0FDQXBqQixL
QUFBZ0QsUUFBQSxLQUNBaEQsS0FBQWtKLE1BQUEsR0FFQTlGLEVBQUFpQixhQUFBKzdDLEVBQUFu
NUMsRUFvRkEsSUFBQW1CLElBQ0FsTixRQUFBZ2xELEVBQ0FwbEQsSUFBQWdtRCxFQUNBRiwrQkFD
QTEzQyxNQUFBODNDLEVBQ0E3M0MsVUFHQWpTLEdBQUFELFFBQUFtUixHdEdnNVdNLFNBQVVsUixF
QUFRRCxFQUFTSCxHQUVqQyxZdUdsa1hBLElBQUE0RyxHQUFBNUcsRUFBQSxJQVdBb1EsR0FUQXBR
LEVBQUEsR0FTQSxTQUFBcVEsR0FDQSxHQUFBQyxHQUFBcEgsSUFDQSxJQUFBb0gsRUFBQUMsYUFB
QXZOLE9BQUEsQ0FDQSxHQUFBd04sR0FBQUYsRUFBQUMsYUFBQXJKLEtBRUEsT0FEQW9KLEdBQUEv
UCxLQUFBaVEsRUFBQUgsR0FDQUcsRUFFQSxVQUFBRixHQUFBRCxLQUlBSSxFQUFBLFNBQUFDLEVB
QUFDLEdBQ0EsR0FBQUwsR0FBQXBILElBQ0EsSUFBQW9ILEVBQUFDLGFBQUF2TixPQUFBLENBQ0Es
R0FBQXdOLEdBQUFGLEVBQUFDLGFBQUFySixLQUVBLE9BREFvSixHQUFBL1AsS0FBQWlRLEVBQUFF
LEVBQUFDLEdBQ0FILEVBRUEsVUFBQUYsR0FBQUksRUFBQUMsSUFJQUMsRUFBQSxTQUFBRixFQUFB
QyxFQUFBRSxHQUNBLEdBQUFQLEdBQUFwSCxJQUNBLElBQUFvSCxFQUFBQyxhQUFBdk4sT0FBQSxD
QUNBLEdBQUF3TixHQUFBRixFQUFBQyxhQUFBckosS0FFQSxPQURBb0osR0FBQS9QLEtBQUFpUSxF
QUFBRSxFQUFBQyxFQUFBRSxHQUNBTCxFQUVBLFVBQUFGLEdBQUFJLEVBQUFDLEVBQUFFLElBSUFW
LEVBQUEsU0FBQU8sRUFBQUMsRUFBQUUsRUFBQUMsR0FDQSxHQUFBUixHQUFBcEgsSUFDQSxJQUFB
b0gsRUFBQUMsYUFBQXZOLE9BQUEsQ0FDQSxHQUFBd04sR0FBQUYsRUFBQUMsYUFBQXJKLEtBRUEs
T0FEQW9KLEdBQUEvUCxLQUFBaVEsRUFBQUUsRUFBQUMsRUFBQUUsRUFBQUMsR0FDQU4sRUFFQSxV
QUFBRixHQUFBSSxFQUFBQyxFQUFBRSxFQUFBQyxJQUlBQyxFQUFBLFNBQUFQLEdBQ0EsR0FBQUYs
R0FBQXBILElBQ0FzSCxhQUFBRixJQUFBMUosRUFBQSxNQUNBNEosRUFBQXRELGFBQ0FvRCxFQUFB
QyxhQUFBdk4sT0FBQXNOLEVBQUFVLFVBQ0FWLEVBQUFDLGFBQUF4SixLQUFBeUosSUFLQVMsRUFB
QWIsRUFXQTdDLEVBQUEsU0FBQTJELEVBQUFDLEdBR0EsR0FBQUMsR0FBQUYsQ0FPQSxPQU5BRSxH
QUFBYixnQkFDQWEsRUFBQXRILFVBQUFxSCxHQUFBRixFQUNBRyxFQUFBSixXQUNBSSxFQUFBSixT
QW5CQSxJQXFCQUksRUFBQWpFLFFBQUE0RCxFQUNBSyxHQUdBOUUsR0FDQWlCLGVBQ0E2QyxvQkFD
QUssb0JBQ0FHLHNCQUNBVCxxQkFHQS9QLEdBQUFELFFBQUFtTSxHdkdvbFhNLFNBQVVsTSxFQUFR
RCxFQUFTSCxHQUVqQyxZd0d2cFhBLFNBQUF1b0MsR0FBQWpqQyxFQUFBZ2QsR0FHQSxNQUFBaGQs
SUFBQSxpQkFBQUEsSUFBQSxNQUFBQSxFQUFBVCxJQUVBa3VCLEVBQUExUSxPQUFBL2MsRUFBQVQs
S0FHQXlkLEVBQUEzYSxTQUFBLElBV0EsUUFBQTZnQyxHQUFBcmlDLEVBQUFzaUMsRUFBQXgrQixF
QUFBeStCLEdBQ0EsR0FBQXY5QixTQUFBaEYsRUFPQSxJQUxBLGNBQUFnRixHQUFBLFlBQUFBLElB
RUFoRixFQUFBLE1BR0EsT0FBQUEsR0FBQSxXQUFBZ0YsR0FBQSxXQUFBQSxHQUdBLFdBQUFBLEdB
QUFoRixFQUFBdU4sV0FBQVIsRUFLQSxNQUpBakosR0FBQXkrQixFQUFBdmlDLEVBR0EsS0FBQXNp
QyxFQUFBRSxFQUFBSixFQUFBcGlDLEVBQUEsR0FBQXNpQyxHQUNBLENBR0EsSUFBQUcsR0FDQUMs
RUFDQUMsRUFBQSxFQUNBQyxFQUFBLEtBQUFOLEVBQUFFLEVBQUFGLEVBQUFPLENBRUEsSUFBQWwx
QixNQUFBc1gsUUFBQWpsQixHQUNBLE9BQUE5RixHQUFBLEVBQW1CQSxFQUFBOEYsRUFBQW5ELE9B
QXFCM0MsSUFDeEN1b0MsRUFBQXppQyxFQUFBOUYsR0FDQXdvQyxFQUFBRSxFQUFBUixFQUFBSyxF
QUFBdm9DLEdBQ0F5b0MsR0FBQU4sRUFBQUksRUFBQUMsRUFBQTUrQixFQUFBeStCLE9BRUcsQ0FD
SCxHQUFBTyxHQUFBQyxFQUFBL2lDLEVBQ0EsSUFBQThpQyxFQUFBLENBQ0EsR0FDQUUsR0FEQUMs
RUFBQUgsRUFBQTFvQyxLQUFBNEYsRUFFQSxJQUFBOGlDLElBQUE5aUMsRUFBQWtqQyxRQUVBLElB
REEsR0FBQUMsR0FBQSxJQUNBSCxFQUFBQyxFQUFBN1EsUUFBQWYsTUFDQW9SLEVBQUFPLEVBQUEz
MEIsTUFDQXEwQixFQUFBRSxFQUFBUixFQUFBSyxFQUFBVSxLQUNBUixHQUFBTixFQUFBSSxFQUFB
QyxFQUFBNStCLEVBQUF5K0IsT0FlQSxRQUFBUyxFQUFBQyxFQUFBN1EsUUFBQWYsTUFBQSxDQUNB
LEdBQUErUixHQUFBSixFQUFBMzBCLEtBQ0ErMEIsS0FDQVgsRUFBQVcsRUFBQSxHQUNBVixFQUFB
RSxFQUFBaFcsRUFBQTFRLE9BQUFrbkIsRUFBQSxJQUFBUCxFQUFBVCxFQUFBSyxFQUFBLEdBQ0FF
LEdBQUFOLEVBQUFJLEVBQUFDLEVBQUE1K0IsRUFBQXkrQixTQUlLLGVBQUF2OUIsRUFBQSxDQUNM
LEdBQUFxK0IsR0FBQSxHQWFBQyxFQUFBN2xDLE9BQUF1QyxFQUNvT1MsR0FBQSx5QkFBQTZpQyxF
QUFBLHFCQUErRzNvQyxPQUFBd0QsS0FBQTZCLEdBQUFsQyxLQUFBLFVBQXlDd2xDLEVBQUFELElB
STVYLE1BQUFWLEdBbUJBLFFBQUFZLEdBQUF2akMsRUFBQThELEVBQUF5K0IsR0FDQSxhQUFBdmlD
LEVBQ0EsRUFHQXFpQyxFQUFBcmlDLEVBQUEsR0FBQThELEVBQUF5K0IsR0EvSkEsR0FBQTloQyxH
QUFBNUcsRUFBQSxJQUdBa1QsR0FEQWxULEVBQUEsSUFDQUEsRUFBQSxLQUVBa3BDLEVBQUFscEMs
RUFBQSxLQUVBK3lCLEdBREEveUIsRUFBQSxHQUNBQSxFQUFBLE1BR0Eyb0MsR0FGQTNvQyxFQUFB
LEdBRUEsS0FDQWdwQyxFQUFBLEdBdUpBNW9DLEdBQUFELFFBQUF1cEMsR3hHeXNYTSxTQUFVdHBD
LEVBQVFELEVBQVNILEdBRWpDLFl5R3oxWEEsU0FBQWtwQyxHQUFBaWhCLEdBQ0EsR0FBQWxoQixH
QUFBa2hCLElBQUFDLEdBQUFELEVBQUFDLElBQUFELEVBQUFFLEdBQ0EsdUJBQUFwaEIsR0FDQSxN
QUFBQSxHQXBCQSxHQUFBbWhCLEdBQUEsbUJBQUE5eEIsZ0JBQUE4USxTQUNBaWhCLEVBQUEsWUF1
QkFqcUQsR0FBQUQsUUFBQStvQyxHekc4M1hNLFNBQVU5b0MsRUFBUUQsRUFBU0gsR0FFakMsWTBH
bjVYQSxTQUFBcWlCLEdBQUF4ZCxHQUNBLEdBQ0EwdEIsSUFDQUMsSUFBQSxLQUNBQyxJQUFBLEtB
TUEsWUFKQSxHQUFBNXRCLEdBQUFyQyxRQUxBLFFBS0EsU0FBQTBmLEdBQ0EsTUFBQXFRLEdBQUFy
USxLQVlBLFFBQUF3USxHQUFBN3RCLEdBQ0EsR0FBQTh0QixHQUFBLFdBQ0FDLEdBQ0FDLEtBQUEs
SUFDQUMsS0FBQSxJQUlBLFlBRkEsTUFBQWp1QixFQUFBLFVBQUFBLEVBQUEsR0FBQUEsRUFBQTRk
LFVBQUEsR0FBQTVkLEVBQUE0ZCxVQUFBLEtBRUFqZ0IsUUFBQW13QixFQUFBLFNBQUF6USxHQUNB
LE1BQUEwUSxHQUFBMVEsS0FJQSxHQUFBNlEsSUFDQTFRLFNBQ0FxUSxXQUdBdHlCLEdBQUFELFFB
QUE0eUIsRzFHNDZYTSxTQUFVM3lCLEVBQVFELEVBQVNILEdBRWpDLFkyRzM5WEEsSUFBQXdSLEdB
QUF4UixFQUFBLElBT0FzcUQsRUFBQTk0QyxFQUFBSyxjQVdBTixHQUNBelAsRUFBQXdvRCxFQUFB
LEtBQ0FDLEtBQUFELEVBQUEsUUFDQUUsUUFBQUYsRUFBQSxXQUNBRyxLQUFBSCxFQUFBLFFBQ0FJ
LFFBQUFKLEVBQUEsV0FDQUssTUFBQUwsRUFBQSxTQUNBTSxNQUFBTixFQUFBLFNBQ0F2b0QsRUFB
QXVvRCxFQUFBLEtBQ0FPLEtBQUFQLEVBQUEsUUFDQVEsSUFBQVIsRUFBQSxPQUNBUyxJQUFBVCxF
QUFBLE9BQ0FVLElBQUFWLEVBQUEsT0FDQVcsV0FBQVgsRUFBQSxjQUNBaGEsS0FBQWdhLEVBQUEs
UUFDQVksR0FBQVosRUFBQSxNQUNBNXBDLE9BQUE0cEMsRUFBQSxVQUNBYSxPQUFBYixFQUFBLFVB
Q0FjLFFBQUFkLEVBQUEsV0FDQWUsS0FBQWYsRUFBQSxRQUNBem5ELEtBQUF5bkQsRUFBQSxRQUNB
Z0IsSUFBQWhCLEVBQUEsT0FDQWlCLFNBQUFqQixFQUFBLFlBQ0Exb0MsS0FBQTBvQyxFQUFBLFFB
Q0FrQixTQUFBbEIsRUFBQSxZQUNBbUIsR0FBQW5CLEVBQUEsTUFDQW9CLElBQUFwQixFQUFBLE9B
Q0FxQixRQUFBckIsRUFBQSxXQUNBc0IsSUFBQXRCLEVBQUEsT0FDQXVCLE9BQUF2QixFQUFBLFVB
Q0F3QixJQUFBeEIsRUFBQSxPQUNBeUIsR0FBQXpCLEVBQUEsTUFDQTBCLEdBQUExQixFQUFBLE1B
Q0EyQixHQUFBM0IsRUFBQSxNQUNBNEIsTUFBQTVCLEVBQUEsU0FDQTZCLFNBQUE3QixFQUFBLFlB
Q0E4QixXQUFBOUIsRUFBQSxjQUNBK0IsT0FBQS9CLEVBQUEsVUFDQWdDLE9BQUFoQyxFQUFBLFVB
Q0FyRSxLQUFBcUUsRUFBQSxRQUNBaUMsR0FBQWpDLEVBQUEsTUFDQWtDLEdBQUFsQyxFQUFBLE1B
Q0FtQyxHQUFBbkMsRUFBQSxNQUNBb0MsR0FBQXBDLEVBQUEsTUFDQXFDLEdBQUFyQyxFQUFBLE1B
Q0FzQyxHQUFBdEMsRUFBQSxNQUNBdUMsS0FBQXZDLEVBQUEsUUFDQXRILE9BQUFzSCxFQUFBLFVB
Q0F3QyxPQUFBeEMsRUFBQSxVQUNBeUMsR0FBQXpDLEVBQUEsTUFDQWx5QyxLQUFBa3lDLEVBQUEs
UUFDQWpxRCxFQUFBaXFELEVBQUEsS0FDQTBDLE9BQUExQyxFQUFBLFVBQ0EyQyxJQUFBM0MsRUFB
QSxPQUNBbGIsTUFBQWtiLEVBQUEsU0FDQTRDLElBQUE1QyxFQUFBLE9BQ0E2QyxJQUFBN0MsRUFB
QSxPQUNBOEMsT0FBQTlDLEVBQUEsVUFDQStDLE1BQUEvQyxFQUFBLFNBQ0FnRCxPQUFBaEQsRUFB
QSxVQUNBaUQsR0FBQWpELEVBQUEsTUFDQWtELEtBQUFsRCxFQUFBLFFBQ0FtRCxLQUFBbkQsRUFB
QSxRQUNBdG1ELElBQUFzbUQsRUFBQSxPQUNBb0QsS0FBQXBELEVBQUEsUUFDQXFELEtBQUFyRCxF
QUFBLFFBQ0FzRCxTQUFBdEQsRUFBQSxZQUNBdUQsS0FBQXZELEVBQUEsUUFDQXdELE1BQUF4RCxF
QUFBLFNBQ0F5RCxJQUFBekQsRUFBQSxPQUNBMEQsU0FBQTFELEVBQUEsWUFDQWpwRCxPQUFBaXBE
LEVBQUEsVUFDQTJELEdBQUEzRCxFQUFBLE1BQ0E0RCxTQUFBNUQsRUFBQSxZQUNBNkQsT0FBQTdE
LEVBQUEsVUFDQThELE9BQUE5RCxFQUFBLFVBQ0E3b0QsRUFBQTZvRCxFQUFBLEtBQ0ErRCxNQUFB
L0QsRUFBQSxTQUNBZ0UsUUFBQWhFLEVBQUEsV0FDQWlFLElBQUFqRSxFQUFBLE9BQ0FrRSxTQUFB
bEUsRUFBQSxZQUNBbUUsRUFBQW5FLEVBQUEsS0FDQW9FLEdBQUFwRSxFQUFBLE1BQ0FxRSxHQUFB
ckUsRUFBQSxNQUNBc0UsS0FBQXRFLEVBQUEsUUFDQTVvRCxFQUFBNG9ELEVBQUEsS0FDQXVFLEtB
QUF2RSxFQUFBLFFBQ0F3RSxPQUFBeEUsRUFBQSxVQUNBeUUsUUFBQXpFLEVBQUEsV0FDQW5hLE9B
QUFtYSxFQUFBLFVBQ0EwRSxNQUFBMUUsRUFBQSxTQUNBN2xELE9BQUE2bEQsRUFBQSxVQUNBMkUs
S0FBQTNFLEVBQUEsUUFDQTRFLE9BQUE1RSxFQUFBLFVBQ0E2RSxNQUFBN0UsRUFBQSxTQUNBOEUs
SUFBQTlFLEVBQUEsT0FDQStFLFFBQUEvRSxFQUFBLFdBQ0FnRixJQUFBaEYsRUFBQSxPQUNBaUYs
TUFBQWpGLEVBQUEsU0FDQWtGLE1BQUFsRixFQUFBLFNBQ0FtRixHQUFBbkYsRUFBQSxNQUNBb0Ys
U0FBQXBGLEVBQUEsWUFDQXFGLE1BQUFyRixFQUFBLFNBQ0FzRixHQUFBdEYsRUFBQSxNQUNBdUYs
TUFBQXZGLEVBQUEsU0FDQS8rQyxLQUFBKytDLEVBQUEsUUFDQWxsQixNQUFBa2xCLEVBQUEsU0FD
QXdGLEdBQUF4RixFQUFBLE1BQ0F0d0IsTUFBQXN3QixFQUFBLFNBQ0F5RixFQUFBekYsRUFBQSxL
QUNBMEYsR0FBQTFGLEVBQUEsTUFDQTJGLElBQUEzRixFQUFBLE9BQ0E0RixNQUFBNUYsRUFBQSxT
QUNBNkYsSUFBQTdGLEVBQUEsT0FHQThGLE9BQUE5RixFQUFBLFVBQ0ErRixTQUFBL0YsRUFBQSxZ
QUNBZ0csS0FBQWhHLEVBQUEsUUFDQWlHLFFBQUFqRyxFQUFBLFdBQ0FsaEMsRUFBQWtoQyxFQUFB
LEtBQ0FoNkIsTUFBQWc2QixFQUFBLFNBQ0F0SyxLQUFBc0ssRUFBQSxRQUNBa0csZUFBQWxHLEVB
QUEsa0JBQ0FtRyxLQUFBbkcsRUFBQSxRQUNBb0csS0FBQXBHLEVBQUEsUUFDQXFHLFFBQUFyRyxF
QUFBLFdBQ0FzRyxRQUFBdEcsRUFBQSxXQUNBdUcsU0FBQXZHLEVBQUEsWUFDQXdHLGVBQUF4RyxF
QUFBLGtCQUNBeUcsS0FBQXpHLEVBQUEsUUFDQTBHLEtBQUExRyxFQUFBLFFBQ0Evb0MsSUFBQStv
QyxFQUFBLE9BQ0FoeUMsS0FBQWd5QyxFQUFBLFFBQ0EyRyxNQUFBM0csRUFBQSxTQUdBbHFELEdB
QUFELFFBQUFvUixHM0c0K1hNLFNBQVVuUixFQUFRRCxFQUFTSCxHQUVqQyxZNEd6b1lBLElBQUFr
eEQsR0FBQWx4RCxFQUFBLElBQ0F5UyxFQUFBeStDLEVBQUF6K0MsZUFFQXVCLEVBQUFoVSxFQUFB
LEdBRUFJLEdBQUFELFFBQUE2VCxFQUFBdkIsSTVHMHBZTSxTQUFVclMsRUFBUUQsRUFBU0gsR0FF
akMsWTZHbHFZQSxJQUFBMEMsR0FBQTFDLEVBQUEsR0FDQTJCLEVBQUEzQixFQUFBLEdBQ0EyQyxF
QUFBM0MsRUFBQSxHQUVBa3dCLEVBQUFsd0IsRUFBQSxJQUNBK3dCLEVBQUEvd0IsRUFBQSxJQUVB
SSxHQUFBRCxRQUFBLFNBQUFzUyxFQUFBMCtDLEdBbUJBLFFBQUFqb0IsR0FBQWloQixHQUNBLEdB
QUFsaEIsR0FBQWtoQixJQUFBQyxHQUFBRCxFQUFBQyxJQUFBRCxFQUFBRSxHQUNBLHVCQUFBcGhC
LEdBQ0EsTUFBQUEsR0FnRkEsUUFBQXRYLEdBQUFwRixFQUFBcUYsR0FFQSxNQUFBckYsS0FBQXFG
LEVBR0EsSUFBQXJGLEdBQUEsRUFBQUEsSUFBQSxFQUFBcUYsRUFHQXJGLE9BQUFxRixNQVlBLFFB
QUF3L0IsR0FBQW51RCxHQUNBaUcsS0FBQWpHLFVBQ0FpRyxLQUFBd2tDLE1BQUEsR0FLQSxRQUFB
MmpCLEdBQUFDLEdBS0EsUUFBQUMsR0FBQS9aLEVBQUFoa0MsRUFBQS9FLEVBQUFraUIsRUFBQTIy
QixFQUFBa0ssRUFBQUMsR0FJQSxHQUhBOWdDLEtBQUErZ0MsRUFDQUYsS0FBQS9pRCxFQUVBZ2pE
LElBQUF2aEMsRUFDQSxHQUFBaWhDLEVBRUF4dkQsR0FDQSxFQUNBLDBMQTJCQSxhQUFBNlIsRUFB
QS9FLEdBQ0Erb0MsRUFFQSxHQUFBNFosR0FEQSxPQUFBNTlDLEVBQUEvRSxHQUNBLE9BQUE2NEMs
RUFBQSxLQUFBa0ssRUFBQSwrQkFBQTdnQyxFQUFBLDhCQUVBLE9BQUEyMkIsRUFBQSxLQUFBa0ss
RUFBQSwrQkFBQTdnQyxFQUFBLG9DQUVBLEtBRUEyZ0MsRUFBQTk5QyxFQUFBL0UsRUFBQWtpQixF
QUFBMjJCLEVBQUFrSyxHQWhEQSxHQW9EQUcsR0FBQUosRUFBQXQ5QyxLQUFBLFFBR0EsT0FGQTA5
QyxHQUFBbmEsV0FBQStaLEVBQUF0OUMsS0FBQSxTQUVBMDlDLEVBR0EsUUFBQUMsR0FBQUMsR0FD
QSxRQUFBUCxHQUFBOTlDLEVBQUEvRSxFQUFBa2lCLEVBQUEyMkIsRUFBQWtLLEVBQUFDLEdBQ0Es
R0FBQXp1QixHQUFBeHZCLEVBQUEvRSxFQUVBLElBREFxakQsRUFBQTl1QixLQUNBNnVCLEVBTUEs
VUFBQVQsR0FBQSxXQUFBOUosRUFBQSxLQUFBa0ssRUFBQSxjQUZBTyxFQUFBL3VCLEdBRUEsa0JB
QUFyUyxFQUFBLGdCQUFBa2hDLEVBQUEsS0FFQSxhQUVBLE1BQUFSLEdBQUFDLEdBT0EsUUFBQVUs
R0FBQUMsR0FDQSxRQUFBWCxHQUFBOTlDLEVBQUEvRSxFQUFBa2lCLEVBQUEyMkIsRUFBQWtLLEdB
Q0Esc0JBQUFTLEdBQ0EsVUFBQWIsR0FBQSxhQUFBSSxFQUFBLG1CQUFBN2dDLEVBQUEsa0RBRUEs
SUFBQXFTLEdBQUF4dkIsRUFBQS9FLEVBQ0EsS0FBQXFGLE1BQUFzWCxRQUFBNFgsR0FBQSxDQUVB
LFVBQUFvdUIsR0FBQSxXQUFBOUosRUFBQSxLQUFBa0ssRUFBQSxjQURBTSxFQUFBOXVCLEdBQ0Es
a0JBQUFyUyxFQUFBLHlCQUVBLE9BQUF0d0IsR0FBQSxFQUFxQkEsRUFBQTJpQyxFQUFBaGdDLE9B
QXNCM0MsSUFBQSxDQUMzQyxHQUFBOEIsR0FBQTh2RCxFQUFBanZCLEVBQUEzaUMsRUFBQXN3QixF
QUFBMjJCLEVBQUFrSyxFQUFBLElBQUFueEQsRUFBQSxJQUFBNnZCLEVBQ0EsSUFBQS90QixZQUFB
RSxPQUNBLE1BQUFGLEdBR0EsWUFFQSxNQUFBa3ZELEdBQUFDLEdBZUEsUUFBQVksR0FBQUMsR0FD
QSxRQUFBYixHQUFBOTlDLEVBQUEvRSxFQUFBa2lCLEVBQUEyMkIsRUFBQWtLLEdBQ0EsS0FBQWgr
QyxFQUFBL0UsWUFBQTBqRCxJQUFBLENBQ0EsR0FBQUMsR0FBQUQsRUFBQXh4RCxNQUFBK3dELENB
RUEsV0FBQU4sR0FBQSxXQUFBOUosRUFBQSxLQUFBa0ssRUFBQSxjQURBYSxFQUFBNytDLEVBQUEv
RSxJQUNBLGtCQUFBa2lCLEVBQUEsNEJBQUF5aEMsRUFBQSxNQUVBLFlBRUEsTUFBQWYsR0FBQUMs
R0FHQSxRQUFBZ0IsR0FBQUMsR0FNQSxRQUFBakIsR0FBQTk5QyxFQUFBL0UsRUFBQWtpQixFQUFB
MjJCLEVBQUFrSyxHQUVBLE9BREF4dUIsR0FBQXh2QixFQUFBL0UsR0FDQXBPLEVBQUEsRUFBcUJB
LEVBQUFreUQsRUFBQXZ2RCxPQUEyQjNDLElBQ2hELEdBQUFzeEIsRUFBQXFSLEVBQUF1dkIsRUFB
QWx5RCxJQUNBLFdBS0EsV0FBQSt3RCxHQUFBLFdBQUE5SixFQUFBLEtBQUFrSyxFQUFBLGVBQUF4
dUIsRUFBQSxrQkFBQXJTLEVBQUEsc0JBREFzcEIsS0FBQUMsVUFBQXFZLEdBQ0EsS0FkQSxNQUFB
eitDLE9BQUFzWCxRQUFBbW5DLEdBZ0JBbEIsRUFBQUMsR0FkQTV1RCxFQUFBc0csZ0JBaUJBLFFB
QUF3cEQsR0FBQVAsR0FDQSxRQUFBWCxHQUFBOTlDLEVBQUEvRSxFQUFBa2lCLEVBQUEyMkIsRUFB
QWtLLEdBQ0Esc0JBQUFTLEdBQ0EsVUFBQWIsR0FBQSxhQUFBSSxFQUFBLG1CQUFBN2dDLEVBQUEs
bURBRUEsSUFBQXFTLEdBQUF4dkIsRUFBQS9FLEdBQ0Fna0QsRUFBQVgsRUFBQTl1QixFQUNBLGVB
QUF5dkIsRUFDQSxVQUFBckIsR0FBQSxXQUFBOUosRUFBQSxLQUFBa0ssRUFBQSxjQUFBaUIsRUFB
QSxrQkFBQTloQyxFQUFBLHlCQUVBLFFBQUE5ckIsS0FBQW0rQixHQUNBLEdBQUFBLEVBQUF4aEMs
ZUFBQXFELEdBQUEsQ0FDQSxHQUFBMUMsR0FBQTh2RCxFQUFBanZCLEVBQUFuK0IsRUFBQThyQixF
QUFBMjJCLEVBQUFrSyxFQUFBLElBQUEzc0QsRUFBQXFyQixFQUNBLElBQUEvdEIsWUFBQUUsT0FD
QSxNQUFBRixHQUlBLFlBRUEsTUFBQWt2RCxHQUFBQyxHQUdBLFFBQUFvQixHQUFBQyxHQW9CQSxR
QUFBckIsR0FBQTk5QyxFQUFBL0UsRUFBQWtpQixFQUFBMjJCLEVBQUFrSyxHQUNBLE9BQUFueEQs
R0FBQSxFQUFxQkEsRUFBQXN5RCxFQUFBM3ZELE9BQWdDM0MsSUFBQSxDQUVyRCxVQUFBdXlELEVB
REFELEVBQUF0eUQsSUFDQW1ULEVBQUEvRSxFQUFBa2lCLEVBQUEyMkIsRUFBQWtLLEVBQUF0aEMs
R0FDQSxZQUlBLFVBQUFraEMsR0FBQSxXQUFBOUosRUFBQSxLQUFBa0ssRUFBQSxrQkFBQTdnQyxF
QUFBLE1BM0JBLElBQUE3YyxNQUFBc1gsUUFBQXVuQyxHQUVBLE1BQUFqd0QsR0FBQXNHLGVBR0Es
UUFBQTNJLEdBQUEsRUFBbUJBLEVBQUFzeUQsRUFBQTN2RCxPQUFnQzNDLElBQUEsQ0FDbkQsR0FB
QXV5RCxHQUFBRCxFQUFBdHlELEVBQ0EsdUJBQUF1eUQsR0FRQSxNQVBBandELElBQ0EsRUFDQSw0
R0FFQWt3RCxFQUFBRCxHQUNBdnlELEdBRUFxQyxFQUFBc0csZ0JBY0EsTUFBQXFvRCxHQUFBQyxH
QWFBLFFBQUF3QixHQUFBQyxHQUNBLFFBQUF6QixHQUFBOTlDLEVBQUEvRSxFQUFBa2lCLEVBQUEy
MkIsRUFBQWtLLEdBQ0EsR0FBQXh1QixHQUFBeHZCLEVBQUEvRSxHQUNBZ2tELEVBQUFYLEVBQUE5
dUIsRUFDQSxlQUFBeXZCLEVBQ0EsVUFBQXJCLEdBQUEsV0FBQTlKLEVBQUEsS0FBQWtLLEVBQUEs
Y0FBQWlCLEVBQUEsa0JBQUE5aEMsRUFBQSx3QkFFQSxRQUFBOXJCLEtBQUFrdUQsR0FBQSxDQUNB
LEdBQUFILEdBQUFHLEVBQUFsdUQsRUFDQSxJQUFBK3RELEVBQUEsQ0FHQSxHQUFBendELEdBQUF5
d0QsRUFBQTV2QixFQUFBbitCLEVBQUE4ckIsRUFBQTIyQixFQUFBa0ssRUFBQSxJQUFBM3NELEVB
QUFxckIsRUFDQSxJQUFBL3RCLEVBQ0EsTUFBQUEsSUFHQSxZQUVBLE1BQUFrdkQsR0FBQUMsR0FH
QSxRQUFBMEIsR0FBQWh3QixHQUNBLGFBQUFBLElBQ0EsYUFDQSxhQUNBLGdCQUNBLFFBQ0EsZUFD
QSxPQUFBQSxDQUNBLGNBQ0EsR0FBQWx2QixNQUFBc1gsUUFBQTRYLEdBQ0EsTUFBQUEsR0FBQWl3
QixNQUFBRCxFQUVBLFdBQUFod0IsR0FBQXZ3QixFQUFBdXdCLEdBQ0EsUUFHQSxJQUFBaUcsR0FB
QUMsRUFBQWxHLEVBQ0EsS0FBQWlHLEVBcUJBLFFBcEJBLElBQ0FFLEdBREFDLEVBQUFILEVBQUEx
b0MsS0FBQXlpQyxFQUVBLElBQUFpRyxJQUFBakcsRUFBQXFHLFNBQ0EsT0FBQUYsRUFBQUMsRUFB
QTdRLFFBQUFmLE1BQ0EsSUFBQXc3QixFQUFBN3BCLEVBQUEzMEIsT0FDQSxhQUtBLFFBQUEyMEIs
RUFBQUMsRUFBQTdRLFFBQUFmLE1BQUEsQ0FDQSxHQUFBK1IsR0FBQUosRUFBQTMwQixLQUNBLElB
QUErMEIsSUFDQXlwQixFQUFBenBCLEVBQUEsSUFDQSxTQVNBLFFBQ0EsU0FDQSxVQUlBLFFBQUEy
cEIsR0FBQVQsRUFBQXp2QixHQUVBLGlCQUFBeXZCLElBS0EsV0FBQXp2QixFQUFBLGtCQUtBLG1C
QUFBMUssU0FBQTBLLFlBQUExSyxTQVFBLFFBQUF3NUIsR0FBQTl1QixHQUNBLEdBQUF5dkIsU0FB
QXp2QixFQUNBLE9BQUFsdkIsT0FBQXNYLFFBQUE0WCxHQUNBLFFBRUFBLFlBQUFyQixRQUlBLFNB
RUF1eEIsRUFBQVQsRUFBQXp2QixHQUNBLFNBRUF5dkIsRUFLQSxRQUFBVixHQUFBL3VCLEdBQ0Es
dUJBQUFBLElBQUEsT0FBQUEsRUFDQSxTQUFBQSxDQUVBLElBQUF5dkIsR0FBQVgsRUFBQTl1QixF
QUNBLGVBQUF5dkIsRUFBQSxDQUNBLEdBQUF6dkIsWUFBQXp6QixNQUNBLFlBQ08sSUFBQXl6QixZ
QUFBckIsUUFDUCxlQUdBLE1BQUE4d0IsR0FLQSxRQUFBSSxHQUFBcitDLEdBQ0EsR0FBQXJKLEdB
QUE0bUQsRUFBQXY5QyxFQUNBLFFBQUFySixHQUNBLFlBQ0EsYUFDQSxZQUFBQSxDQUNBLGVBQ0Es
V0FDQSxhQUNBLFdBQUFBLENBQ0EsU0FDQSxNQUFBQSxJQUtBLFFBQUFrbkQsR0FBQXJ2QixHQUNB
LE1BQUFBLEdBQUF4MEIsYUFBQXcwQixFQUFBeDBCLFlBQUE3TixLQUdBcWlDLEVBQUF4MEIsWUFB
QTdOLEtBRkErd0QsRUFsZUEsR0FBQXRILEdBQUEsbUJBQUE5eEIsZ0JBQUE4USxTQUNBaWhCLEVB
QUEsYUFzRUFxSCxFQUFBLGdCQUlBamdELEdBQ0F3ekIsTUFBQTJzQixFQUFBLFNBQ0FwVCxLQUFB
b1QsRUFBQSxXQUNBdGxDLEtBQUFzbEMsRUFBQSxZQUNBMTJCLE9BQUEwMkIsRUFBQSxVQUNBdndE
LE9BQUF1d0QsRUFBQSxVQUNBNXZDLE9BQUE0dkMsRUFBQSxVQUNBdUIsT0FBQXZCLEVBQUEsVUFF
QXdCLElBd0hBLFdBQ0EsTUFBQS9CLEdBQUEzdUQsRUFBQXNHLG9CQXhIQXFxRCxRQUFBckIsRUFD
QXYrQyxRQStJQSxXQUNBLFFBQUE2OUMsR0FBQTk5QyxFQUFBL0UsRUFBQWtpQixFQUFBMjJCLEVB
QUFrSyxHQUNBLEdBQUF4dUIsR0FBQXh2QixFQUFBL0UsRUFDQSxLQUFBZ0UsRUFBQXV3QixHQUFB
LENBRUEsVUFBQW91QixHQUFBLFdBQUE5SixFQUFBLEtBQUFrSyxFQUFBLGNBREFNLEVBQUE5dUIs
R0FDQSxrQkFBQXJTLEVBQUEsc0NBRUEsWUFFQSxNQUFBMGdDLEdBQUFDLE1BdkpBZ0MsV0FBQXBC
LEVBQ0FudEQsS0FpUEEsV0FDQSxRQUFBdXNELEdBQUE5OUMsRUFBQS9FLEVBQUFraUIsRUFBQTIy
QixFQUFBa0ssR0FDQSxNQUFBd0IsR0FBQXgvQyxFQUFBL0UsSUFHQSxLQUZBLEdBQUEyaUQsR0FB
QSxXQUFBOUosRUFBQSxLQUFBa0ssRUFBQSxrQkFBQTdnQyxFQUFBLDRCQUlBLE1BQUEwZ0MsR0FB
QUMsTUF2UEFpQyxTQUFBZixFQUNBZ0IsTUFBQWxCLEVBQ0FtQixVQUFBZixFQUNBcGIsTUFBQXdi
LEVBOFlBLE9BN1dBMUIsR0FBQTd2RCxVQUFBYyxNQUFBZCxVQTBXQWtRLEVBQUFzZixpQkFDQXRm
LEVBQUFpQixVQUFBakIsRUFFQUEsSTdHb3JZTSxTQUFVclIsRUFBUUQsRUFBU0gsR0FFakMsWThH
dnBaQSxTQUFBK3dCLEdBQUEyaUMsRUFBQXJSLEVBQUFpRixFQUFBMzJCLEVBQUFnakMsSUErQkF2
ekQsRUFBQUQsUUFBQTR3QixHOUcwclpNLFNBQVUzd0IsRUFBUUQsRUFBU0gsR0FFakMsWStHNXVa
QUksR0FBQUQsUUFBQSxVL0c2dlpNLFNBQVVDLEVBQVFELEVBQVNILEdBRWpDLFlnSC92WkEsSUFB
QWt4RCxHQUFBbHhELEVBQUEsSUFDQXVTLEVBQUEyK0MsRUFBQTMrQyxVQUVBcWhELEVBQUE1ekQs
RUFBQSxJQUNBeVMsRUFBQW1oRCxFQUFBbmhELGVBRUFxbEIsRUFBQTkzQixFQUFBLElBQ0FnVSxF
QUFBaFUsRUFBQSxJQUVBSSxHQUFBRCxRQUFBNlQsRUFBQXpCLEVBQUFFLEVBQUFxbEIsSWhIZ3ha
TSxTQUFVMTNCLEVBQVFELEVBQVNILEdBRWpDLFlpSDl3WkEsU0FBQTZ6RCxHQUFBMW5DLEdBQ0Es
TUFBQUEsR0FjQSxRQUFBblksR0FBQTJqQixFQUFBbGxCLEVBQUFxbEIsR0E4VUEsUUFBQWc4QixH
QUFBQyxFQUFBcHpELEdBQ0EsR0FBQXF6RCxHQUFBQyxFQUFBenlELGVBQUFiLEdBQ0FzekQsRUFB
QXR6RCxHQUNBLElBR0F1ekQsR0FBQTF5RCxlQUFBYixJQUNBd3pELEVBQ0Esa0JBQUFILEVBQ0Es
MkpBR0FyekQsR0FLQW96RCxHQUNBSSxFQUNBLGdCQUFBSCxHQUFBLHVCQUFBQSxFQUNBLGdJQUdB
cnpELEdBU0EsUUFBQXl6RCxHQUFBdDdCLEVBQUF1N0IsR0FDQSxHQUFBQSxFQUFBLENBcUJBRixF
QUNBLG1CQUFBRSxHQUNBLHNIQUlBRixHQUNBMWhELEVBQUE0aEQsR0FDQSxtR0FJQSxJQUFBeC9C
LEdBQUFpRSxFQUFBdjNCLFVBQ0EreUQsRUFBQXovQixFQUFBMC9CLG9CQUtBRixHQUFBN3lELGVB
QUFnekQsSUFDQUMsRUFBQUMsT0FBQTU3QixFQUFBdTdCLEVBQUFLLE9BR0EsUUFBQS96RCxLQUFB
MHpELEdBQ0EsR0FBQUEsRUFBQTd5RCxlQUFBYixJQUlBQSxJQUFBNnpELEVBQUEsQ0FLQSxHQUFB
bHpELEdBQUEreUQsRUFBQTF6RCxHQUNBb3pELEVBQUFsL0IsRUFBQXJ6QixlQUFBYixFQUdBLElB
RkFtekQsRUFBQUMsRUFBQXB6RCxHQUVBOHpELEVBQUFqekQsZUFBQWIsR0FDQTh6RCxFQUFBOXpE
LEdBQUFtNEIsRUFBQXgzQixPQUNPLENBS1AsR0FBQXF6RCxHQUFBVixFQUFBenlELGVBQUFiLEdB
Q0FpMEQsRUFBQSxtQkFBQXR6RCxHQUNBdXpELEVBQ0FELElBQ0FELElBQ0FaLElBQ0EsSUFBQU0s
RUFBQVMsUUFFQSxJQUFBRCxFQUNBUCxFQUFBdnRELEtBQUFwRyxFQUFBVyxHQUNBdXpCLEVBQUFs
MEIsR0FBQVcsTUFFQSxJQUFBeXlELEVBQUEsQ0FDQSxHQUFBQyxHQUFBQyxFQUFBdHpELEVBR0F3
ekQsR0FDQVEsSUFDQSx1QkFBQVgsR0FDQSxnQkFBQUEsR0FDQSxtRkFFQUEsRUFDQXJ6RCxHQUtB
LHVCQUFBcXpELEVBQ0FuL0IsRUFBQWwwQixHQUFBbzBELEVBQUFsZ0MsRUFBQWwwQixHQUFBVyxH
QUNhLGdCQUFBMHlELElBQ2JuL0IsRUFBQWwwQixHQUFBcTBELEVBQUFuZ0MsRUFBQWwwQixHQUFB
VyxRQUdBdXpCLEdBQUFsMEIsR0FBQVcsVUFjQSxRQUFBMnpELEdBQUFuOEIsRUFBQW84QixHQUNB
LEdBQUFBLEVBR0EsT0FBQXYwRCxLQUFBdTBELEdBQUEsQ0FDQSxHQUFBNXpELEdBQUE0ekQsRUFB
QXYwRCxFQUNBLElBQUF1MEQsRUFBQTF6RCxlQUFBYixHQUFBLENBSUEsR0FBQXcwRCxHQUFBeDBE
LElBQUE4ekQsRUFDQU4sSUFDQWdCLEVBQ0EsME1BSUF4MEQsRUFHQSxJQUFBeTBELEdBQUF6MEQs
SUFBQW00QixFQUNBcTdCLElBQ0FpQixFQUNBLHVIQUdBejBELEdBRUFtNEIsRUFBQW40QixHQUFB
VyxJQVdBLFFBQUErekQsR0FBQUMsRUFBQUMsR0FDQXBCLEVBQ0FtQixHQUFBQyxHQUFBLGlCQUFB
RCxJQUFBLGlCQUFBQyxHQUNBLDREQUdBLFFBQUExd0QsS0FBQTB3RCxHQUNBQSxFQUFBL3pELGVB
QUFxRCxLQUNBc3ZELE1BQ0EveEQsS0FBQWt6RCxFQUFBendELEdBQ0EseVBBS0FBLEdBRUF5d0Qs
RUFBQXp3RCxHQUFBMHdELEVBQUExd0QsR0FHQSxPQUFBeXdELEdBV0EsUUFBQVAsR0FBQU8sRUFB
QUMsR0FDQSxrQkFDQSxHQUFBenpELEdBQUF3ekQsRUFBQTcvQixNQUFBdnNCLEtBQUFuRyxXQUNB
aEIsRUFBQXd6RCxFQUFBOS9CLE1BQUF2c0IsS0FBQW5HLFVBQ0EsVUFBQWpCLEVBQ0EsTUFBQUMs
RUFDTyxVQUFBQSxFQUNQLE1BQUFELEVBRUEsSUFBQXJCLEtBR0EsT0FGQTQwRCxHQUFBNTBELEVB
QUFxQixHQUNBdXpELEVBQUE1MEQsRUFBQXNCLEdBQ0F0QixHQVlBLFFBQUF1MEQsR0FBQU0sRUFB
QUMsR0FDQSxrQkFDQUQsRUFBQTcvQixNQUFBdnNCLEtBQUFuRyxXQUNBd3lELEVBQUE5L0IsTUFB
QXZzQixLQUFBbkcsWUFXQSxRQUFBeXlELEdBQUFsd0QsRUFBQStILEdBQ0EsR0FBQW9vRCxHQUFB
cG9ELEVBQUE0RyxLQUFBM08sRUFpREEsT0FBQW13RCxHQVFBLFFBQUFDLEdBQUFwd0QsR0FFQSxP
QURBcXdELEdBQUFyd0QsRUFBQWl2RCxxQkFDQWwwRCxFQUFBLEVBQW1CQSxFQUFBczFELEVBQUEz
eUQsT0FBa0IzQyxHQUFBLEdBQ3JDLEdBQUF1MUQsR0FBQUQsRUFBQXQxRCxHQUNBZ04sRUFBQXNv
RCxFQUFBdDFELEVBQUEsRUFDQWlGLEdBQUFzd0QsR0FBQUosRUFBQWx3RCxFQUFBK0gsSUFtRUEs
UUFBQXNGLEdBQUEwaEQsR0FJQSxHQUFBdjdCLEdBQUErNkIsRUFBQSxTQUFBcmdELEVBQUF0SCxF
QUFBMHJCLEdBYUExdUIsS0FBQXFyRCxxQkFBQXZ4RCxRQUNBMHlELEVBQUF4c0QsTUFHQUEsS0FB
QXNLLFFBQ0F0SyxLQUFBZ0QsVUFDQWhELEtBQUEydUIsS0FBQTlZLEVBQ0E3VixLQUFBMHVCLFdB
QUFFLEVBRUE1dUIsS0FBQXV4QyxNQUFBLElBS0EsSUFBQW9iLEdBQUEzc0QsS0FBQTRzRCxnQkFB
QTVzRCxLQUFBNHNELGtCQUFBLElBWUEzQixHQUNBLGlCQUFBMEIsS0FBQS9oRCxNQUFBc1gsUUFB
QXlxQyxHQUNBLHNEQUNBLzhCLEVBQUE3RixhQUFBLDJCQUdBL3BCLEtBQUF1eEMsTUFBQW9iLEdB
RUEvOEIsR0FBQXYzQixVQUFBLEdBQUF3MEQsR0FDQWo5QixFQUFBdjNCLFVBQUFpTixZQUFBc3FC
LEVBQ0FBLEVBQUF2M0IsVUFBQWd6RCx3QkFFQXlCLEVBQUE1eEQsUUFBQWd3RCxFQUFBbmdELEtB
QUEsS0FBQTZrQixJQUVBczdCLEVBQUF0N0IsRUFBQW05QixHQUNBN0IsRUFBQXQ3QixFQUFBdTdC
LEdBQ0FELEVBQUF0N0IsRUFBQW85QixHQUdBcDlCLEVBQUFxOUIsa0JBQ0FyOUIsRUFBQS9rQixh
QUFBK2tCLEVBQUFxOUIsbUJBZ0JBaEMsRUFDQXI3QixFQUFBdjNCLFVBQUFxeEMsT0FDQSwwRUFx
QkEsUUFBQW9HLEtBQUFpYixHQUNBbjdCLEVBQUF2M0IsVUFBQXkzQyxLQUNBbGdCLEVBQUF2M0Is
VUFBQXkzQyxHQUFBLEtBSUEsT0FBQWxnQixHQXB6QkEsR0FBQWs5QixNQXdCQS9CLEdBT0FTLE9B
QUEsY0FTQVEsUUFBQSxjQVFBeGtDLFVBQUEsY0FRQWtwQixhQUFBLGNBUUFFLGtCQUFBLGNBY0Fx
YyxnQkFBQSxxQkFnQkFMLGdCQUFBLHFCQU1BL2EsZ0JBQUEscUJBaUJBbkksT0FBQSxjQVdBd2pC
LG1CQUFBLGNBWUFuYixrQkFBQSxjQXFCQUMsMEJBQUEsY0FzQkF6QyxzQkFBQSxjQWlCQTRkLG9C
QUFBLGNBY0E1YSxtQkFBQSxjQWFBTixxQkFBQSxjQWNBbWIsZ0JBQUEsaUJBWUE3QixHQUNBeGhD
LFlBQUEsU0FBQTZGLEVBQUE3RixHQUNBNkYsRUFBQTdGLGVBRUF5aEMsT0FBQSxTQUFBNTdCLEVB
QUE0N0IsR0FDQSxHQUFBQSxFQUNBLE9BQUFyMEQsR0FBQSxFQUF1QkEsRUFBQXEwRCxFQUFBMXhE
LE9BQW1CM0MsSUFDMUMrekQsRUFBQXQ3QixFQUFBNDdCLEVBQUFyMEQsS0FJQXk1QyxrQkFBQSxT
QUFBaGhCLEVBQUFnaEIsR0FJQWhoQixFQUFBZ2hCLGtCQUFBenRDLEtBRUF5c0IsRUFBQWdoQixr
QkFDQUEsSUFHQUYsYUFBQSxTQUFBOWdCLEVBQUE4Z0IsR0FJQTlnQixFQUFBOGdCLGFBQUF2dEMs
S0FFQXlzQixFQUFBOGdCLGFBQ0FBLElBT0F1YyxnQkFBQSxTQUFBcjlCLEVBQUFxOUIsR0FDQXI5
QixFQUFBcTlCLGdCQUNBcjlCLEVBQUFxOUIsZ0JBQUFwQixFQUNBajhCLEVBQUFxOUIsZ0JBQ0FB
LEdBR0FyOUIsRUFBQXE5QixtQkFHQXpsQyxVQUFBLFNBQUFvSSxFQUFBcEksR0FJQW9JLEVBQUFw
SSxVQUFBcmtCLEtBQXdDeXNCLEVBQUFwSSxjQUV4Q3drQyxRQUFBLFNBQUFwOEIsRUFBQW84QixH
QUNBRCxFQUFBbjhCLEVBQUFvOEIsSUFFQUosU0FBQSxjQXNWQW1CLEdBQ0FoYixrQkFBQSxXQUNB
L3hDLEtBQUFxdEQsYUFBQSxJQUlBTCxHQUNBL2EscUJBQUEsV0FDQWp5QyxLQUFBcXRELGFBQUEs
SUFRQXJDLEdBS0FzQyxhQUFBLFNBQUFDLEVBQUF4c0QsR0FDQWYsS0FBQTB1QixRQUFBaEUsb0JB
QUExcUIsS0FBQXV0RCxFQUFBeHNELElBU0FxcEIsVUFBQSxXQWFBLFFBQUFwcUIsS0FBQXF0RCxj
QUlBUixFQUFBLFlBOEhBLE9BN0hBMXBELEdBQ0EwcEQsRUFBQXgwRCxVQUNBbzJCLEVBQUFwMkIs
VUFDQTJ5RCxHQTBIQXZoRCxFQXgxQkEsR0FBQXRHLEdBQUFyTSxFQUFBLEdBRUErZSxFQUFBL2Us
RUFBQSxJQUNBbTBELEVBQUFuMEQsRUFBQSxHQU1BdzBELEVBQUEsUUFrMUJBcDBELEdBQUFELFFB
QUE2VCxHakg2eVpNLFNBQVU1VCxFQUFRRCxFQUFTSCxHQUVqQyxZa0h2bmJBLFNBQUE0UixHQUFB
ekwsR0FFQSxNQURBcUwsR0FBQWlCLGVBQUF0TSxJQUFBUyxFQUFBLE9BQ0FULEVBdEJBLEdBQUFT
LEdBQUE1RyxFQUFBLElBRUF3UixFQUFBeFIsRUFBQSxHQUVBQSxHQUFBLEVBcUJBSSxHQUFBRCxR
QUFBeVIsR2xIMnBiTSxTQUFVeFIsRUFBUUQsRUFBU0gsR0FFakMsWW1IL3JiQUksR0FBQUQsUUFB
QUgsRUFBQSxNbkh1c2JNLFNBQVVJLEVBQVFELEVBQVNILEdBRWpDLFlvSDdyYkEsSUFBQTZILEdB
QUE3SCxFQUFBLEdBQ0EwMkQsRUFBQTEyRCxFQUFBLEtBQ0FxeEMsRUFBQXJ4QyxFQUFBLElBQ0F3
TCxFQUFBeEwsRUFBQSxJQUNBc0osRUFBQXRKLEVBQUEsR0FDQTBSLEVBQUExUixFQUFBLEtBRUEy
MkQsRUFBQTMyRCxFQUFBLEtBQ0EyMEMsRUFBQTMwQyxFQUFBLElBQ0FxekMsRUFBQXJ6QyxFQUFB
LElBQ0FBLEdBQUEsRUFFQTAyRCxHQUFBRSxRQUVBLElBQUFDLElBQ0FGLGNBQ0EvakIsT0FBQXZC
LEVBQUF1QixPQUNBaUIsdUJBQUF4QyxFQUFBd0MsdUJBQ0FoaEMsUUFBQW5CLEVBR0FvbEQsd0JB
QUF4dEQsRUFBQVUsZUFDQStzRCxvQ0FBQTFqQixFQU1BLHFCQUFBMmpCLGlDQUFBLG1CQUFBQSxn
Q0FBQUosUUFDQUksK0JBQUFKLFFBQ0FockMsZUFDQS9rQiwyQkFBQWdCLEVBQUFoQiwyQkFDQU8s
b0JBQUEsU0FBQTFCLEdBS0EsTUFIQUEsR0FBQUYscUJBQ0FFLEVBQUFpdkMsRUFBQWp2QyxJQUVB
QSxFQUNBbUMsRUFBQVQsb0JBQUExQixHQUVBLE9BSUF1eEQsTUFBQTVsQixFQUNBNmxCLFdBQUEx
ckQsR0FrREFwTCxHQUFBRCxRQUFBMDJELEdwSGd0Yk0sU0FBVXoyRCxFQUFRRCxFQUFTSCxHQUVq
QyxZcUg3eGJBLFNBQUE0MkQsS0FDQU8sSUFNQUEsR0FBQSxFQUVBQyxFQUFBQyxhQUFBN3ZDLHlC
QUFBRCxHQUtBNnZDLEVBQUExN0MsZUFBQWlCLHVCQUFBMjZDLEdBQ0FGLEVBQUEzOEMsaUJBQUFx
UixvQkFBQWprQixHQUNBdXZELEVBQUEzOEMsaUJBQUF1UixvQkFBQXVyQyxHQU1BSCxFQUFBMTdD
LGVBQUFrQiwwQkFDQTQ2QyxvQkFDQUMsd0JBQ0FDLG9CQUNBQyxvQkFDQUMsMkJBR0FSLEVBQUFT
LGNBQUF6dkIsNEJBQUEwdkIsR0FFQVYsRUFBQVMsY0FBQXZ2Qix5QkFBQXl2QixHQUVBWCxFQUFB
OXZELFlBQUEwTix3QkFBQWdqRCxHQUNBWixFQUFBOXZELFlBQUEwTix3QkFBQWlqRCxHQUNBYixF
QUFBOXZELFlBQUEwTix3QkFBQWtqRCxHQUVBZCxFQUFBZSxlQUFBcndCLDRCQUFBLFNBQUFDLEdB
Q0EsVUFBQXF3QixHQUFBcndCLEtBR0FxdkIsRUFBQWlCLFFBQUEzcUQsMkJBQUFuRSxHQUNBNnRE
LEVBQUFpQixRQUFBenFELHVCQUFBMHFELEdBRUFsQixFQUFBN2tELFVBQUFrZixrQkFBQThtQyxJ
QW5FQSxHQUFBUCxHQUFBaDRELEVBQUEsS0FDQTQzRCxFQUFBNTNELEVBQUEsS0FDQTAzRCxFQUFB
MTNELEVBQUEsS0FDQXMzRCxFQUFBdDNELEVBQUEsS0FDQXkzRCxFQUFBejNELEVBQUEsS0FDQWk0
RCxFQUFBajRELEVBQUEsS0FDQXU0RCxFQUFBdjRELEVBQUEsS0FDQTgzRCxFQUFBOTNELEVBQUEs
S0FDQTZILEVBQUE3SCxFQUFBLEdBQ0FvNEQsRUFBQXA0RCxFQUFBLEtBQ0F1M0QsRUFBQXYzRCxF
QUFBLEtBQ0ErM0QsRUFBQS8zRCxFQUFBLEtBQ0FzNEQsRUFBQXQ0RCxFQUFBLEtBQ0F1bkIsRUFB
QXZuQixFQUFBLEtBQ0FvM0QsRUFBQXAzRCxFQUFBLEtBQ0F1SixFQUFBdkosRUFBQSxLQUNBazRE
LEVBQUFsNEQsRUFBQSxLQUNBMjNELEVBQUEzM0QsRUFBQSxLQUNBdzNELEVBQUF4M0QsRUFBQSxL
QUVBbTNELEdBQUEsQ0FrREEvMkQsR0FBQUQsU0FDQXkyRCxXckhxMGJNLFNBQVV4MkQsRUFBUUQs
RUFBU0gsR0FFakMsWXNIOTRiQSxJQUFBZzRELElBQ0E3aUQsWUFFQXFqRCxlQUFBLEVBQ0FDLGVB
QUEsRUFDQUMsZ0JBQUEsRUFDQUMsY0FBQSxFQUNBQyxlQUFBLEVBQ0FDLG9CQUFBLEVBQ0FDLGFB
QUEsRUFDQUMsdUJBQUEsRUFFQUMsb0JBQUEsRUFDQUMsZUFBQSxFQUNBQyxnQkFBQSxFQUNBQyxn
QkFBQSxFQUNBQyxhQUFBLEVBQ0FDLGFBQUEsRUFDQUMsaUJBQUEsRUFDQUMsdUJBQUEsRUFDQUMs
bUJBQUEsRUFDQUMsbUJBQUEsRUFDQUMsZUFBQSxFQUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxFQUNB
QyxnQkFBQSxFQUNBQyxZQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGdCQUFBLEVB
Q0FDLGlCQUFBLEVBRUFDLGNBQUEsRUFDQUMsWUFBQSxFQUNBQyxZQUFBLEVBQ0FDLGdCQUFBLEVB
RUFDLGtCQUFBLEVBQ0FDLGVBQUEsRUFFQUMsd0JBQUEsRUFDQUMsZ0JBQUEsRUFDQUMsZ0JBQUEs
RUFDQUMsZUFBQSxFQUNBQyxnQkFBQSxFQUNBQyxtQkFBQSxFQUNBQyxvQkFBQSxFQUNBQyxjQUFB
LEVBQ0FDLGtCQUFBLEVBQ0FDLFlBQUEsRUFDQUMsZ0JBQUEsRUFDQUMsZ0JBQUEsRUFDQUMsZ0JB
QUEsRUFDQUMsZUFBQSxFQUNBQyxlQUFBLEdBRUFsbUQscUJBQ0FDLG9CQUdBbFYsR0FBQUQsUUFB
QTYzRCxHdEgrNWJNLFNBQVU1M0QsRUFBUUQsRUFBU0gsR0FFakMsWXVILzRiQSxTQUFBdzdELEdB
QUFwdEQsR0FDQSxPQUFBQSxFQUFBaVMsU0FBQWpTLEVBQUFtUyxRQUFBblMsRUFBQW9TLFlBRUFw
UyxFQUFBaVMsU0FBQWpTLEVBQUFtUyxRQVNBLFFBQUFrN0MsR0FBQW4rQyxHQUNBLE9BQUFBLEdB
Q0EsMEJBQ0EsTUFBQXlNLEdBQUEyeEMsZ0JBQ0EseUJBQ0EsTUFBQTN4QyxHQUFBNHhDLGNBQ0Es
NEJBQ0EsTUFBQTV4QyxHQUFBNnhDLG1CQVlBLFFBQUFDLEdBQUF2K0MsRUFBQWxQLEdBQ0EscUJB
QUFrUCxHQUFBbFAsRUFBQW9tQixVQUFBc25DLEVBVUEsUUFBQUMsR0FBQXorQyxFQUFBbFAsR0FD
QSxPQUFBa1AsR0FDQSxlQUVBLFdBQUEwK0MsRUFBQW55QyxRQUFBemIsRUFBQW9tQixRQUNBLGtC
QUdBLE1BQUFwbUIsR0FBQW9tQixVQUFBc25DLENBQ0EsbUJBQ0EsbUJBQ0EsY0FFQSxRQUNBLFNB
Q0EsVUFhQSxRQUFBRyxHQUFBN3RELEdBQ0EsR0FBQXFRLEdBQUFyUSxFQUFBcVEsTUFDQSx3QkFB
QUEsSUFBQSxRQUFBQSxHQUNBQSxFQUFBbUQsS0FFQSxLQVNBLFFBQUFzNkMsR0FBQTUrQyxFQUFB
blAsRUFBQUMsRUFBQUMsR0FDQSxHQUFBMC9CLEdBQ0FvdUIsQ0FZQSxJQVZBQyxFQUNBcnVCLEVB
QUEwdEIsRUFBQW4rQyxHQUNHKytDLEVBSUFOLEVBQUF6K0MsRUFBQWxQLEtBQ0gyL0IsRUFBQWhr
QixFQUFBNHhDLGdCQUpBRSxFQUFBditDLEVBQUFsUCxLQUNBMi9CLEVBQUFoa0IsRUFBQTJ4Qyxt
QkFNQTN0QixFQUNBLFdBR0F1dUIsS0FHQUQsR0FBQXR1QixJQUFBaGtCLEVBQUEyeEMsaUJBRUsz
dEIsSUFBQWhrQixFQUFBNHhDLGdCQUNMVSxJQUNBRixFQUFBRSxFQUFBRSxXQUhBRixFQUFBRyxF
QUFBMXlELFVBQUF1RSxHQVFBLElBQUFpQixHQUFBbXRELEVBQUEzeUQsVUFBQWlrQyxFQUFBNS9C
LEVBQUFDLEVBQUFDLEVBRUEsSUFBQTh0RCxFQUdBN3NELEVBQUFzUyxLQUFBdTZDLE1BQ0csQ0FD
SCxHQUFBTyxHQUFBVCxFQUFBN3RELEVBQ0EsUUFBQXN1RCxJQUNBcHRELEVBQUFzUyxLQUFBODZD
LEdBS0EsTUFEQS9nRCxHQUFBViw2QkFBQTNMLEdBQ0FBLEVBUUEsUUFBQXF0RCxHQUFBci9DLEVB
QUFsUCxHQUNBLE9BQUFrUCxHQUNBLHdCQUNBLE1BQUEyK0MsR0FBQTd0RCxFQUNBLG1CQWdCQSxN
QURBQSxHQUFBdXZDLFFBQ0FpZixFQUNBLE1BR0FDLEdBQUEsRUFDQUMsRUFFQSxvQkFFQSxHQUFB
N1ksR0FBQTcxQyxFQUFBd1QsSUFLQSxPQUFBcWlDLEtBQUE2WSxHQUFBRCxFQUNBLEtBR0E1WSxD
QUVBLFNBRUEsYUFZQSxRQUFBOFksR0FBQXovQyxFQUFBbFAsR0FLQSxHQUFBaXVELEVBQUEsQ0FD
QSx5QkFBQS8rQyxJQUFBOCtDLEdBQUFMLEVBQUF6K0MsRUFBQWxQLEdBQUEsQ0FDQSxHQUFBNjFD
LEdBQUFvWSxFQUFBRSxTQUdBLE9BRkFDLEdBQUFydkQsUUFBQWt2RCxHQUNBQSxFQUFBLEtBQ0Fw
WSxFQUVBLFlBR0EsT0FBQTNtQyxHQUNBLGVBR0EsV0FDQSxtQkFpQkEsTUFBQWxQLEdBQUF1dkMs
UUFBQTZkLEVBQUFwdEQsR0FDQXhLLE9BQUFHLGFBQUFxSyxFQUFBdXZDLE9BRUEsSUFDQSx5QkFD
QSxNQUFBMmUsR0FBQSxLQUFBbHVELEVBQUF3VCxJQUNBLFNBQ0EsYUFVQSxRQUFBbzdDLEdBQUEx
L0MsRUFBQW5QLEVBQUFDLEVBQUFDLEdBQ0EsR0FBQTQxQyxFQVVBLE1BUEFBLEVBREFnWixFQUNB
TixFQUFBci9DLEVBQUFsUCxHQUVBMnVELEVBQUF6L0MsRUFBQWxQLElBTUEsV0FHQSxJQUFBa0Is
R0FBQTR0RCxFQUFBcHpELFVBQUFpZ0IsRUFBQW96QyxZQUFBaHZELEVBQUFDLEVBQUFDLEVBSUEs
T0FGQWlCLEdBQUFzUyxLQUFBcWlDLEVBQ0F0b0MsRUFBQVYsNkJBQUEzTCxHQUNBQSxFQXJWQSxH
QUFBcU0sR0FBQTNiLEVBQUEsSUFDQWtJLEVBQUFsSSxFQUFBLEdBQ0F3OEQsRUFBQXg4RCxFQUFB
LEtBQ0F5OEQsRUFBQXo4RCxFQUFBLEtBQ0FrOUQsRUFBQWw5RCxFQUFBLEtBRUFnOEQsR0FBQSxZ
QUNBRixFQUFBLElBRUFNLEVBQUFsMEQsRUFBQUosV0FBQSxvQkFBQUMsUUFFQXVSLEVBQUEsSUFD
QXBSLEdBQUFKLFdBQUEsZ0JBQUFFLFlBQ0FzUixFQUFBdFIsU0FBQXNSLGFBTUEsSUFBQTJqRCxH
QUFBLzBELEVBQUFKLFdBQUEsYUFBQUMsVUFBQXVSLElBV0EsV0FDQSxHQUFBOGpELEdBQUFyMUQs
T0FBQXExRCxLQUNBLHdCQUFBQSxJQUFBLG1CQUFBQSxHQUFBdnFELFNBQUE4NEIsU0FBQXl4QixF
QUFBdnFELFVBQUEsV0FSQXlwRCxFQUFBcDBELEVBQUFKLGFBQUFzMEQsR0FBQTlpRCxLQUFBLEdB
QUFBLEdBQUEsSUFXQXNqRCxFQUFBLEdBQ0FFLEVBQUFsNUQsT0FBQUcsYUFBQTY0RCxHQUdBN3lD
LEdBQ0FvekMsYUFDQW5qRCx5QkFDQXFqRCxRQUFBLGdCQUNBQyxTQUFBLHdCQUVBcjFDLGNBQUEs
OERBRUEwekMsZ0JBQ0EzaEQseUJBQ0FxakQsUUFBQSxtQkFDQUMsU0FBQSwyQkFFQXIxQyxjQUFB
LHFGQUVBeXpDLGtCQUNBMWhELHlCQUNBcWpELFFBQUEscUJBQ0FDLFNBQUEsNkJBRUFyMUMsY0FB
QSx1RkFFQTJ6QyxtQkFDQTVoRCx5QkFDQXFqRCxRQUFBLHNCQUNBQyxTQUFBLDhCQUVBcjFDLGNB
QUEseUZBS0E0MEMsR0FBQSxFQXNGQVIsRUFBQSxLQTZNQXpFLEdBQ0E3dEMsYUFFQTFNLGNBQUEs
U0FBQUMsRUFBQW5QLEVBQUFDLEVBQUFDLEdBQ0EsT0FBQTZ0RCxFQUFBNStDLEVBQUFuUCxFQUFB
QyxFQUFBQyxHQUFBMnVELEVBQUExL0MsRUFBQW5QLEVBQUFDLEVBQUFDLEtBSUFqTyxHQUFBRCxR
QUFBeTNELEd2SDgrYk0sU0FBVXgzRCxFQUFRRCxFQUFTSCxHQUVqQyxZd0hqMWNBLFNBQUF3OEQs
R0FBQXBxQixHQUNBbHBDLEtBQUFxMEQsTUFBQW5yQixFQUNBbHBDLEtBQUFzMEQsV0FBQXQwRCxL
QUFBaWtDLFVBQ0Fqa0MsS0FBQXUwRCxjQUFBLEtBcEJBLEdBQUFweEQsR0FBQXJNLEVBQUEsR0FF
QXNNLEVBQUF0TSxFQUFBLElBRUEwNEIsRUFBQTE0QixFQUFBLEdBbUJBcU0sR0FBQW13RCxFQUFB
ajdELFdBQ0EyTCxXQUFBLFdBQ0FoRSxLQUFBcTBELE1BQUEsS0FDQXIwRCxLQUFBczBELFdBQUEs
S0FDQXQwRCxLQUFBdTBELGNBQUEsTUFRQXR3QixRQUFBLFdBQ0EsZUFBQWprQyxNQUFBcTBELE1B
Q0FyMEQsS0FBQXEwRCxNQUFBL29ELE1BRUF0TCxLQUFBcTBELE1BQUE3a0MsTUFTQTZqQyxRQUFB
LFdBQ0EsR0FBQXJ6RCxLQUFBdTBELGNBQ0EsTUFBQXYwRCxNQUFBdTBELGFBR0EsSUFBQW51QixH
QUdBRSxFQUZBa3VCLEVBQUF4MEQsS0FBQXMwRCxXQUNBRyxFQUFBRCxFQUFBMTZELE9BRUE0NkQs
RUFBQTEwRCxLQUFBaWtDLFVBQ0Ewd0IsRUFBQUQsRUFBQTU2RCxNQUVBLEtBQUFzc0MsRUFBQSxF
QUFtQkEsRUFBQXF1QixHQUNuQkQsRUFBQXB1QixLQUFBc3VCLEVBQUF0dUIsR0FEd0NBLEtBTXhD
LEdBQUF3dUIsR0FBQUgsRUFBQXJ1QixDQUNBLEtBQUFFLEVBQUEsRUFBaUJBLEdBQUFzdUIsR0FD
akJKLEVBQUFDLEVBQUFudUIsS0FBQW91QixFQUFBQyxFQUFBcnVCLEdBRGdDQSxLQU1oQyxHQUFB
dXVCLEdBQUF2dUIsRUFBQSxJQUFBQSxNQUFBcHRDLEVBRUEsT0FEQThHLE1BQUF1MEQsY0FBQUcs
RUFBQWgyRCxNQUFBMG5DLEVBQUF5dUIsR0FDQTcwRCxLQUFBdTBELGlCQUlBbnhELEVBQUFpQixh
QUFBaXZELEdBRUFwOEQsRUFBQUQsUUFBQXE4RCxHeEhtM2NNLFNBQVVwOEQsRUFBUUQsRUFBU0gs
R0FFakMsWXlIdDdjQSxTQUFBeThELEdBQUF2dUQsRUFBQStQLEVBQUE3UCxFQUFBQyxHQUNBLE1B
QUFKLEdBQUExTixLQUFBMkksS0FBQWdGLEVBQUErUCxFQUFBN1AsRUFBQUMsR0FqQkEsR0FBQUos
R0FBQWpPLEVBQUEsSUFNQWcrRCxHQUNBcDhDLEtBQUEsS0FhQTNULEdBQUE4QixhQUFBMHNELEVB
QUF1QixHQUVBNTlELEVBQUFELFFBQUFzOEQsR3pIdTljTSxTQUFVcjhELEVBQVFELEVBQVNILEdB
RWpDLFkwSDk5Y0EsU0FBQWs5RCxHQUFBaHZELEVBQUErUCxFQUFBN1AsRUFBQUMsR0FDQSxNQUFB
SixHQUFBMU4sS0FBQTJJLEtBQUFnRixFQUFBK1AsRUFBQTdQLEVBQUFDLEdBbEJBLEdBQUFKLEdB
QUFqTyxFQUFBLElBT0FpK0QsR0FDQXI4QyxLQUFBLEtBYUEzVCxHQUFBOEIsYUFBQW10RCxFQUFB
ZSxHQUVBNzlELEVBQUFELFFBQUErOEQsRzFIZ2dkTSxTQUFVOThELEVBQVFELEVBQVNILEdBRWpD
LFkySG5nZEEsU0FBQWsrRCxHQUFBeDRELEVBQUEwSSxFQUFBNUosR0FDQSxHQUFBOEssR0FBQXJC
LEVBQUFuRSxVQUFBaWdCLEVBQUFvMEMsT0FBQXo0RCxFQUFBMEksRUFBQTVKLEVBR0EsT0FGQThL
LEdBQUFuRSxLQUFBLFNBQ0F3USxFQUFBViw2QkFBQTNMLEdBQ0FBLEVBV0EsUUFBQTh1RCxHQUFB
OWtDLEdBQ0EsR0FBQXBnQixHQUFBb2dCLEVBQUFwZ0IsVUFBQW9nQixFQUFBcGdCLFNBQUF0RCxh
QUNBLGtCQUFBc0QsR0FBQSxVQUFBQSxHQUFBLFNBQUFvZ0IsRUFBQW51QixLQVNBLFFBQUFrekQs
R0FBQWp3RCxHQUNBLEdBQUFrQixHQUFBNHVELEVBQUFJLEVBQUFsd0QsRUFBQThQLEVBQUE5UCxH
QWFBOUUsR0FBQVUsZUFBQXUwRCxFQUFBanZELEdBR0EsUUFBQWl2RCxHQUFBanZELEdBQ0FvTSxF
QUFBZ0MsY0FBQXBPLEdBQ0FvTSxFQUFBaUMsbUJBQUEsR0FHQSxRQUFBNmdELEdBQUFoNkQsRUFB
QTJKLEdBQ0FraUMsRUFBQTdyQyxFQUNBODVELEVBQUFud0QsRUFDQWtpQyxFQUFBOW5DLFlBQUEs
V0FBQTgxRCxHQUdBLFFBQUFJLEtBQ0FwdUIsSUFHQUEsRUFBQXBDLFlBQUEsV0FBQW93QixHQUNB
aHVCLEVBQUEsS0FDQWl1QixFQUFBLE1BR0EsUUFBQUksR0FBQXZ3RCxFQUFBQyxHQUNBLEdBQUF1
d0QsR0FBQTdrQyxFQUFBUyxxQkFBQXBzQixHQUNBa08sR0FBQSxJQUFBak8sRUFBQWlPLFdBQUFx
N0MsRUFBQWtILDBCQUVBLElBQUFELEdBQUF0aUQsRUFDQSxNQUFBbE8sR0FJQSxRQUFBMHdELEdB
QUF2aEQsRUFBQW5QLEdBQ0EsaUJBQUFtUCxFQUNBLE1BQUFuUCxHQUlBLFFBQUEyd0QsR0FBQXho
RCxFQUFBOVksRUFBQTJKLEdBQ0EsYUFBQW1QLEdBR0FtaEQsSUFDQUQsRUFBQWg2RCxFQUFBMkos
SUFDRyxZQUFBbVAsR0FDSG1oRCxJQW9CQSxRQUFBTSxHQUFBdjZELEVBQUEySixHQUNBa2lDLEVB
QUE3ckMsRUFDQTg1RCxFQUFBbndELEVBQ0FraUMsRUFBQTluQyxZQUFBLG1CQUFBeTJELEdBT0Es
UUFBQUMsS0FDQTV1QixJQUdBQSxFQUFBcEMsWUFBQSxtQkFBQSt3QixHQUVBM3VCLEVBQUEsS0FD
QWl1QixFQUFBLE1BT0EsUUFBQVUsR0FBQTV3RCxHQUNBLFVBQUFBLEVBQUE2SCxjQUdBeW9ELEVB
QUFKLEVBQUFsd0QsSUFDQWl3RCxFQUFBandELEdBSUEsUUFBQTh3RCxHQUFBNWhELEVBQUE5WSxF
QUFBMkosR0FDQSxhQUFBbVAsR0FjQTJoRCxJQUNBRixFQUFBdjZELEVBQUEySixJQUNHLFlBQUFt
UCxHQUNIMmhELElBS0EsUUFBQUUsR0FBQTdoRCxFQUFBblAsRUFBQUMsR0FDQSwwQkFBQWtQLEdB
QUEsYUFBQUEsR0FBQSxlQUFBQSxFQVdBLE1BQUFvaEQsR0FBQUosRUFBQWx3RCxHQU9BLFFBQUFn
eEQsR0FBQTlsQyxHQUlBLEdBQUFwZ0IsR0FBQW9nQixFQUFBcGdCLFFBQ0EsT0FBQUEsSUFBQSxV
QUFBQSxFQUFBdEQsZ0JBQUEsYUFBQTBqQixFQUFBbnVCLE1BQUEsVUFBQW11QixFQUFBbnVCLE1B
R0EsUUFBQWswRCxHQUFBL2hELEVBQUFuUCxFQUFBQyxHQUNBLGdCQUFBa1AsRUFDQSxNQUFBb2hE
LEdBQUF2d0QsRUFBQUMsR0FJQSxRQUFBa3hELEdBQUFoaUQsRUFBQW5QLEVBQUFDLEdBQ0EsZ0JB
QUFrUCxHQUFBLGNBQUFBLEVBQ0EsTUFBQW9oRCxHQUFBdndELEVBQUFDLEdBSUEsUUFBQW14RCxH
QUFBNzVELEVBQUFYLEdBRUEsU0FBQVcsRUFBQSxDQUtBLEdBQUErMEMsR0FBQS8wQyxFQUFBOHpC
LGVBQUF6MEIsRUFBQXkwQixhQUVBLElBQUFpaEIsS0FBQStrQixZQUFBLFdBQUF6NkQsRUFBQW9H
LEtBQUEsQ0FLQSxHQUFBcUosR0FBQSxHQUFBelAsRUFBQXlQLEtBQ0F6UCxHQUFBRyxhQUFBLFdB
QUFzUCxHQUNBelAsRUFBQThuQixhQUFBLFFBQUFyWSxLQTlPQSxHQUFBa0gsR0FBQTFiLEVBQUEs
SUFDQTJiLEVBQUEzYixFQUFBLElBQ0FrSSxFQUFBbEksRUFBQSxHQUNBNkgsRUFBQTdILEVBQUEs
R0FDQXNKLEVBQUF0SixFQUFBLEdBQ0FpTyxFQUFBak8sRUFBQSxJQUVBODVCLEVBQUE5NUIsRUFB
QSxJQUNBa2UsRUFBQWxlLEVBQUEsSUFDQW1qQixFQUFBbmpCLEVBQUEsSUFDQTA2QixFQUFBMTZC
LEVBQUEsSUFFQStwQixHQUNBbzBDLFFBQ0Fua0QseUJBQ0FxakQsUUFBQSxXQUNBQyxTQUFBLG1C
QUVBcjFDLGNBQUEsdUdBYUFvb0IsRUFBQSxLQUNBaXVCLEVBQUEsS0FVQW1CLEdBQUEsQ0FDQXYz
RCxHQUFBSixZQUVBMjNELEVBQUF0OEMsRUFBQSxhQUFBbmIsU0FBQXNSLGNBQUF0UixTQUFBc1Is
YUFBQSxHQXFFQSxJQUFBb21ELElBQUEsQ0FDQXgzRCxHQUFBSixZQUlBNDNELEVBQUF2OEMsRUFB
QSw2QkFBQW5iLHFCQUFBc1IsYUFBQSxHQXFJQSxJQUFBbytDLElBQ0EzdEMsYUFFQTYwQyw0QkFB
QSxFQUNBZSx1QkFBQUQsRUFFQXJpRCxjQUFBLFNBQUFDLEVBQUFuUCxFQUFBQyxFQUFBQyxHQUNB
LEdBRUF1eEQsR0FBQUMsRUFGQUMsRUFBQTN4RCxFQUFBdEcsRUFBQVQsb0JBQUErRyxHQUFBcEcs
TUFvQkEsSUFqQkFxMkQsRUFBQTBCLEdBQ0FMLEVBQ0FHLEVBQUFmLEVBRUFnQixFQUFBZixFQUVL
cGtDLEVBQUFvbEMsR0FDTEosRUFDQUUsRUFBQU4sR0FFQU0sRUFBQVQsRUFDQVUsRUFBQVgsR0FF
S0UsRUFBQVUsS0FDTEYsRUFBQVAsR0FHQU8sRUFBQSxDQUNBLEdBQUFsNkQsR0FBQWs2RCxFQUFB
dGlELEVBQUFuUCxFQUFBQyxFQUNBLElBQUExSSxFQUFBLENBRUEsTUFEQXc0RCxHQUFBeDRELEVB
QUEwSSxFQUFBQyxJQUtBd3hELEdBQ0FBLEVBQUF2aUQsRUFBQXdpRCxFQUFBM3hELEdBSUEsWUFB
QW1QLEdBQ0FpaUQsRUFBQXB4RCxFQUFBMnhELElBS0ExL0QsR0FBQUQsUUFBQXUzRCxHM0gwaWRN
LFNBQVV0M0QsRUFBUUQsRUFBU0gsR0FFakMsWTRIajFkQSxTQUFBKy9ELEdBQUEvc0QsRUFBQTFO
LEVBQUFpTyxHQUNBLG1CQUFBUCxHQUNBQSxFQUFBMU4sRUFBQXVHLHFCQUdBbTBELEVBQUFDLG9C
QUFBMzZELEVBQUEwTixFQUFBTyxHQUlBLFFBQUEyc0QsR0FBQWx0RCxFQUFBMU4sRUFBQWlPLEdB
Q0EsbUJBQUFQLEdBQ0FBLEVBQUEsTUFHQWd0RCxFQUFBRyx5QkFBQTc2RCxFQUFBME4sRUFBQU8s
R0FsQkEsR0FBQXlzRCxHQUFBaGdFLEVBQUEsS0FFQThXLElBb0JBQSxHQUFBRCxXQUFBLFNBQUFy
RyxFQUFBaUQsR0FDQSxVQUFBQSxHQUFBLGlCQUFBQSxHQUFBLENBR0EsR0FBQVQsR0FBQVMsRUFB
QVQsR0FDQSxPQUFBQSxHQUNBK3NELEVBQUEvc0QsRUFBQXhDLEVBQUFpRCxFQUFBRSxVQUlBbUQs
RUFBQWlCLGlCQUFBLFNBQUFILEVBQUFELEdBYUEsR0FBQXlvRCxHQUFBLEtBQ0FDLEVBQUEsSUFD
QSxRQUFBem9ELEdBQUEsaUJBQUFBLEtBQ0F3b0QsRUFBQXhvRCxFQUFBNUUsSUFDQXF0RCxFQUFB
em9ELEVBQUFqRSxPQUdBLElBQUEyc0QsR0FBQSxLQUNBQyxFQUFBLElBTUEsT0FMQSxRQUFBNW9E
LEdBQUEsaUJBQUFBLEtBQ0Eyb0QsRUFBQTNvRCxFQUFBM0UsSUFDQXV0RCxFQUFBNW9ELEVBQUFo
RSxRQUdBeXNELElBQUFFLEdBRUEsaUJBQUFBLElBQUFDLElBQUFGLEdBR0F2cEQsRUFBQVcsV0FB
QSxTQUFBakgsRUFBQWlELEdBQ0EsVUFBQUEsR0FBQSxpQkFBQUEsR0FBQSxDQUdBLEdBQUFULEdB
QUFTLEVBQUFULEdBQ0EsT0FBQUEsR0FDQWt0RCxFQUFBbHRELEVBQUF4QyxFQUFBaUQsRUFBQUUs
VUFJQXZULEVBQUFELFFBQUEyVyxHNUh1MmRNLFNBQVUxVyxFQUFRRCxFQUFTSCxHQUVqQyxZNkgx
NmRBLFNBQUF3Z0UsR0FBQW4vRCxHQUNBLFNBQUFBLEdBQUEsbUJBQUFBLEdBQUEwK0QsV0FBQSxt
QkFBQTErRCxHQUFBNitELFdBVkEsR0FBQXQ1RCxHQUFBNUcsRUFBQSxHQTJDQWdnRSxHQXpDQWhn
RSxFQUFBLElBbURBaWdFLG9CQUFBLFNBQUEzNkQsRUFBQTBOLEVBQUFPLEdBQ0FpdEQsRUFBQWp0
RCxJQUFBM00sRUFBQSxPQUNBMk0sRUFBQXdzRCxVQUFBL3NELEVBQUExTixJQVlBNjZELHlCQUFB
LFNBQUE3NkQsRUFBQTBOLEVBQUFPLEdBQ0FpdEQsRUFBQWp0RCxJQUFBM00sRUFBQSxNQUNBLElB
QUE2NUQsR0FBQWx0RCxFQUFBMUgsbUJBR0E0MEQsTUFBQTVvQyxLQUFBN2tCLEtBQUExTixFQUFB
dUcscUJBQ0EwSCxFQUFBMnNELFVBQUFsdEQsS0FLQTVTLEdBQUFELFFBQUE2L0QsRzdIcThkTSxT
QUFVNS9ELEVBQVFELEVBQVNILEdBRWpDLFk4SDVnZUEsSUFBQXMzRCxJQUFBLHFKQUVBbDNELEdB
QUFELFFBQUFtM0QsRzlIdWllTSxTQUFVbDNELEVBQVFELEVBQVNILEdBRWpDLFkrSHJqZUEsSUFB
QTJiLEdBQUEzYixFQUFBLElBQ0E2SCxFQUFBN0gsRUFBQSxHQUNBNmYsRUFBQTdmLEVBQUEsSUFF
QStwQixHQUNBMjJDLFlBQ0EzbUQsaUJBQUEsZUFDQWtPLGNBQUEsK0JBRUEwNEMsWUFDQTVtRCxp
QkFBQSxlQUNBa08sY0FBQSxnQ0FJQXd2QyxHQUNBMXRDLGFBU0ExTSxjQUFBLFNBQUFDLEVBQUFu
UCxFQUFBQyxFQUFBQyxHQUNBLG9CQUFBaVAsSUFBQWxQLEVBQUF3UyxlQUFBeFMsRUFBQXlTLGFB
Q0EsV0FFQSxvQkFBQXZELEdBQUEsaUJBQUFBLEVBRUEsV0FHQSxJQUFBc2pELEVBQ0EsSUFBQXZ5
RCxFQUFBdEcsU0FBQXNHLEVBRUF1eUQsRUFBQXZ5RCxNQUNLLENBRUwsR0FBQWdRLEdBQUFoUSxF
QUFBaVEsYUFFQXNpRCxHQURBdmlELEVBQ0FBLEVBQUFFLGFBQUFGLEVBQUFHLGFBRUF6VyxPQUlB
LEdBQUFyRCxHQUNBRSxDQUNBLG9CQUFBMFksRUFBQSxDQUNBNVksRUFBQXlKLENBQ0EsSUFBQTB5
RCxHQUFBenlELEVBQUF3UyxlQUFBeFMsRUFBQTJTLFNBQ0FuYyxHQUFBaThELEVBQUFoNUQsRUFB
QWhCLDJCQUFBZzZELEdBQUEsU0FHQW44RCxHQUFBLEtBQ0FFLEVBQUF1SixDQUdBLElBQUF6SixJ
QUFBRSxFQUVBLFdBR0EsSUFBQXFxQixHQUFBLE1BQUF2cUIsRUFBQWs4RCxFQUFBLzRELEVBQUFU
LG9CQUFBMUMsR0FDQW84RCxFQUFBLE1BQUFsOEQsRUFBQWc4RCxFQUFBLzRELEVBQUFULG9CQUFB
eEMsR0FFQTBXLEVBQUF1RSxFQUFBL1YsVUFBQWlnQixFQUFBNDJDLFdBQUFqOEQsRUFBQTBKLEVB
QUFDLEVBQ0FpTixHQUFBblEsS0FBQSxhQUNBbVEsRUFBQTlXLE9BQUF5cUIsRUFDQTNULEVBQUFz
RixjQUFBa2dELENBRUEsSUFBQXZsRCxHQUFBc0UsRUFBQS9WLFVBQUFpZ0IsRUFBQTIyQyxXQUFB
OTdELEVBQUF3SixFQUFBQyxFQU9BLE9BTkFrTixHQUFBcFEsS0FBQSxhQUNBb1EsRUFBQS9XLE9B
QUFzOEQsRUFDQXZsRCxFQUFBcUYsY0FBQXFPLEVBRUF0VCxFQUFBTiwrQkFBQUMsRUFBQUMsRUFB
QTdXLEVBQUFFLElBRUEwVyxFQUFBQyxJQUlBbmIsR0FBQUQsUUFBQXMzRCxHL0hza2VNLFNBQVVy
M0QsRUFBUUQsRUFBU0gsR0FFakMsWWdJNXBlQSxJQUFBc0gsR0FBQXRILEVBQUEsSUFFQTJVLEVB
QUFyTixFQUFBd0csVUFBQTZHLGtCQUNBQyxFQUFBdE4sRUFBQXdHLFVBQUE4RyxrQkFDQUMsRUFB
QXZOLEVBQUF3RyxVQUFBK0csa0JBQ0FDLEVBQUF4TixFQUFBd0csVUFBQWdILDJCQUNBQyxFQUFB
ek4sRUFBQXdHLFVBQUFpSCw2QkFFQWtqRCxHQUNBemlELGtCQUFBbXNCLE9BQUFwZ0MsVUFBQWtZ
LEtBQUF4RixLQUFBLEdBQUEwdEIsUUFBQSxpQkFBQXI2QixFQUFBb1Asb0JBQUEsUUFDQXZCLFlB
SUE0ckQsT0FBQSxFQUNBQyxjQUFBLEVBQ0FDLFVBQUEsRUFDQXhyQixPQUFBLEVBQ0F5ckIsZ0JB
QUF0c0QsRUFDQXVzRCxrQkFBQSxFQUNBQyxJQUFBLEVBRUFDLEdBQUEsRUFDQUMsTUFBQTFzRCxF
QUNBMnNELGFBQUEsRUFHQUMsU0FBQTVzRCxFQUNBK1gsUUFBQS9YLEVBQ0E2c0QsWUFBQSxFQUNB
QyxZQUFBLEVBQ0FDLFFBQUEsRUFDQUMsVUFBQSxFQUNBNXhDLFFBQUFyYixFQUFBQyxFQUNBeTJD
LEtBQUEsRUFDQXdXLFFBQUEsRUFDQTdqQixVQUFBLEVBQ0E4akIsS0FBQWh0RCxFQUNBaXRELFFB
QUEsRUFDQWh6QyxRQUFBLEVBQ0EwZixnQkFBQSxFQUNBdXpCLFlBQUEsRUFDQUMsU0FBQXJ0RCxF
QUNBc3RELE9BQUEsRUFDQUMsWUFBQSxFQUNBdmdELEtBQUEsRUFDQXdnRCxTQUFBLEVBQ0FDLFFB
QUF6dEQsRUFDQTB0RCxNQUFBMXRELEVBQ0F5eEIsSUFBQSxFQUNBdHFCLFNBQUFuSCxFQUNBMnRE
LFNBQUF4dEQsRUFDQXl0RCxVQUFBLEVBQ0FDLFFBQUEsRUFDQXhjLEtBQUEsRUFDQXljLFdBQUEs
RUFDQUMsWUFBQSxFQUNBQyxXQUFBLEVBQ0FDLGVBQUFqdUQsRUFDQWt1RCxXQUFBLEVBQ0FDLFlB
QUEsRUFDQWpnQixRQUFBLEVBQ0FrZ0IsT0FBQSxFQUNBenlDLE9BQUEzYixFQUNBcXVELEtBQUEs
RUFDQUMsS0FBQSxFQUNBQyxTQUFBLEVBQ0FDLFFBQUEsRUFDQUMsVUFBQSxFQUNBQyxLQUFBLEVB
Q0F4aEMsR0FBQSxFQUNBeWhDLFVBQUEsRUFDQUMsVUFBQSxFQUNBN3hDLEdBQUEsRUFDQTh4QyxV
QUFBLEVBQ0FDLFFBQUEsRUFDQUMsS0FBQSxFQUNBdFcsTUFBQSxFQUNBdVcsS0FBQSxFQUNBM2pC
LEtBQUEsRUFDQTRqQixLQUFBanZELEVBQ0FrdkQsSUFBQSxFQUNBQyxTQUFBLEVBQ0FDLGFBQUEs
RUFDQUMsWUFBQSxFQUNBQyxJQUFBLEVBQ0FDLFVBQUEsRUFDQUMsTUFBQSxFQUNBQyxXQUFBLEVB
Q0FoM0QsT0FBQSxFQUNBMmlDLElBQUEsRUFDQXMwQixVQUFBLEVBR0F2aEMsU0FBQXB1QixFQUFB
QyxFQUNBMnZELE1BQUE1dkQsRUFBQUMsRUFDQWpVLEtBQUEsRUFDQTZqRSxNQUFBLEVBQ0FDLFdB
QUE3dkQsRUFDQW16QyxLQUFBbnpDLEVBQ0E4dkQsUUFBQSxFQUNBL1QsUUFBQSxFQUNBdlMsWUFB
QSxFQUNBdW1CLFlBQUEvdkQsRUFDQWd3RCxPQUFBLEVBQ0FDLFFBQUEsRUFDQUMsUUFBQSxFQUNB
QyxXQUFBLEVBQ0FuMEMsU0FBQWhjLEVBQ0Fvd0QsZUFBQSxFQUNBQyxJQUFBLEVBQ0FDLFNBQUF0
d0QsRUFDQXV3RCxTQUFBdndELEVBQ0F3d0QsS0FBQSxFQUNBQyxLQUFBdndELEVBQ0F3d0QsUUFB
QXp3RCxFQUNBMHdELFFBQUEsRUFDQWo0RCxNQUFBLEVBQ0FrNEQsT0FBQTV3RCxFQUNBNndELFVB
QUEsRUFDQUMsU0FBQTl3RCxFQUNBdXVCLFNBQUF4dUIsRUFBQUMsRUFDQTBpQyxNQUFBLEVBQ0Fx
dUIsS0FBQTd3RCxFQUNBOHdELE1BQUEsRUFDQTNXLEtBQUFuNkMsRUFDQSt3RCxXQUFBLEVBQ0FD
LElBQUEsRUFDQUMsT0FBQSxFQUNBQyxRQUFBLEVBQ0FDLE9BQUEsRUFDQTMyQixNQUFBejZCLEVB
Q0FzMEIsS0FBQSxFQUNBZ21CLE1BQUEsRUFDQUUsUUFBQSxFQUNBNlcsU0FBQSxFQUNBMWhFLE9B
QUEsRUFDQTRnQyxNQUFBLEVBRUFqNkIsS0FBQSxFQUNBZzdELE9BQUEsRUFDQTN4RCxNQUFBLEVB
Q0E0eEQsTUFBQSxFQUNBQyxNQUFBLEVBQ0FDLEtBQUEsRUFLQUMsTUFBQSxFQUNBQyxTQUFBLEVB
Q0FDLE9BQUEsRUFDQTFxQyxPQUFBLEVBRUF6NkIsU0FBQSxFQUNBb2xFLFNBQUEsRUFDQUMsT0FB
QSxFQUNBQyxNQUFBLEVBT0FDLGVBQUEsRUFDQUMsWUFBQSxFQUVBQyxTQUFBLEVBRUFuc0MsTUFB
QSxFQUdBb3NDLFNBQUEsRUFDQUMsVUFBQXJ5RCxFQUNBc3lELFNBQUEsRUFJQUMsT0FBQSxFQUNB
QyxRQUFBLEVBR0FDLFFBQUEsRUFHQUMsU0FBQSxFQUVBQyxhQUFBLEdBRUFseUQsbUJBQ0EyckQs
Y0FBQSxpQkFDQWhqQixVQUFBLFFBQ0FvbEIsUUFBQSxNQUNBQyxVQUFBLGNBRUEvdEQsb0JBQ0FD
LG9CQUNBZixNQUFBLFNBQUF6UCxFQUFBeVAsR0FDQSxTQUFBQSxFQUNBLE1BQUF6UCxHQUFBMDlC
LGdCQUFBLFFBTUEsWUFBQTE5QixFQUFBb0csT0FBQSxJQUFBcEcsRUFBQWt2QyxhQUFBLFNBQ0Fs
dkMsRUFBQThuQixhQUFBLFdBQUFyWSxHQUNPelAsRUFBQXlpRSxXQUFBemlFLEVBQUF5aUUsU0FB
QUMsVUFBQTFpRSxFQUFBdVosY0FBQSt4QixnQkFBQXRyQyxHQVNQQSxFQUFBOG5CLGFBQUEsV0FB
QXJZLEtBTUFwVSxHQUFBRCxRQUFBODNELEdoSTZxZU0sU0FBVTczRCxFQUFRRCxFQUFTSCxHQUVq
QyxZaUk3NGVBLElBQUEwdUIsR0FBQTF1QixFQUFBLElBQ0EwbkUsRUFBQTFuRSxFQUFBLEtBT0F1
NEQsR0FDQS9tQyx1QkFBQWsyQyxFQUFBQyxrQ0FFQXAyQyxzQkFBQTdDLEVBQUFELGlDQUdBcnVC
LEdBQUFELFFBQUFvNEQsR2pJODVlTSxTQUFVbjRELEVBQVFELEVBQVNILEdBRWpDLFlrSTk2ZUEs
SUFBQTRHLEdBQUE1RyxFQUFBLEdBRUFtWixFQUFBblosRUFBQSxJQUNBa0ksRUFBQWxJLEVBQUEs
R0FFQTRuRSxFQUFBNW5FLEVBQUEsS0FDQTBDLEVBQUExQyxFQUFBLEdBR0F3dUIsR0FGQXh1QixF
QUFBLElBV0F5dUIsaUNBQUEsU0FBQW81QyxFQUFBendELEdBS0EsR0FKQWxQLEVBQUFKLFdBQUFs
QixFQUFBLE1BQ0F3USxHQUFBeFEsRUFBQSxNQUNBLFNBQUFpaEUsRUFBQTN1RCxVQUFBdFMsRUFB
QSxNQUVBLGlCQUFBd1EsR0FBQSxDQUNBLEdBQUEwd0QsR0FBQUYsRUFBQXh3RCxFQUFBMVUsR0FB
QSxFQUNBbWxFLEdBQUE3Z0UsV0FBQTJSLGFBQUFtdkQsRUFBQUQsT0FFQTF1RCxHQUFBWCxxQkFB
QXF2RCxFQUFBendELEtBS0FoWCxHQUFBRCxRQUFBcXVCLEdsSSs3ZU0sU0FBVXB1QixFQUFRRCxF
QUFTSCxHQUVqQyxZbUl4OGVBLFNBQUErbkUsR0FBQTN3RCxHQUNBLEdBQUE0d0QsR0FBQTV3RCxF
QUFBOEssTUFBQStsRCxFQUNBLE9BQUFELE1BQUEsR0FBQXB5RCxjQWFBLFFBQUFneUQsR0FBQXh3
RCxFQUFBOHdELEdBQ0EsR0FBQW5qRSxHQUFBb2pFLENBQ0FBLElBQUF4bUUsR0FBQSxFQUNBLElB
QUF1WCxHQUFBNnVELEVBQUEzd0QsR0FFQWt2RCxFQUFBcHRELEdBQUFrdkQsRUFBQWx2RCxFQUNB
LElBQUFvdEQsRUFBQSxDQUNBdmhFLEVBQUF5YyxVQUFBOGtELEVBQUEsR0FBQWx2RCxFQUFBa3ZE
LEVBQUEsRUFHQSxLQURBLEdBQUErQixHQUFBL0IsRUFBQSxHQUNBK0IsS0FDQXRqRSxJQUFBMjJC
LGNBR0EzMkIsR0FBQXljLFVBQUFwSyxDQUdBLElBQUFreEQsR0FBQXZqRSxFQUFBd2pFLHFCQUFB
LFNBQ0FELEdBQUF0bEUsU0FDQWtsRSxHQUFBdm1FLEdBQUEsR0FDQTZtRSxFQUFBRixHQUFBbGtF
LFFBQUE4akUsR0FJQSxLQURBLEdBQUFPLEdBQUEzMEQsTUFBQXBQLEtBQUFLLEVBQUEyakUsWUFD
QTNqRSxFQUFBMjJCLFdBQ0EzMkIsRUFBQThjLFlBQUE5YyxFQUFBMjJCLFVBRUEsT0FBQStzQyxH
QWhFQSxHQUFBdmdFLEdBQUFsSSxFQUFBLEdBRUF3b0UsRUFBQXhvRSxFQUFBLEtBQ0Fvb0UsRUFB
QXBvRSxFQUFBLEtBQ0EyQixFQUFBM0IsRUFBQSxHQUtBbW9FLEVBQUFqZ0UsRUFBQUosVUFBQUUs
U0FBQUMsY0FBQSxZQUtBZ2dFLEVBQUEsWUFxREE3bkUsR0FBQUQsUUFBQXluRSxHbklrL2VNLFNB
QVV4bkUsRUFBUUQsRUFBU0gsR0FFakMsWW9JOWlmQSxTQUFBcVMsR0FBQXdqQixHQUNBLEdBQUE3
eUIsR0FBQTZ5QixFQUFBN3lCLE1BZUEsS0FYQThRLE1BQUFzWCxRQUFBeUssSUFBQSxpQkFBQUEs
SUFBQSxtQkFBQUEsS0FBQWwwQixHQUFBLEdBRUEsaUJBQUFxQixJQUFBckIsR0FBQSxHQUVBLElB
QUFxQixLQUFBLElBQUE2eUIsSUFBQWwwQixHQUFBLEdBRUEsbUJBQUFrMEIsR0FBQTh5QyxRQUFt
TGhuRSxHQUFBLEdBS25MazBCLEVBQUFyMEIsZUFDQSxJQUNBLE1BQUFzUyxPQUFBdlMsVUFBQXFH
LE1BQUFySCxLQUFBczFCLEdBQ0ssTUFBQTd6QixJQVFMLE9BREF1ZCxHQUFBekwsTUFBQTlRLEdB
Q0FzbUMsRUFBQSxFQUFrQkEsRUFBQXRtQyxFQUFhc21DLElBQy9CL3BCLEVBQUErcEIsR0FBQXpU
LEVBQUF5VCxFQUVBLE9BQUEvcEIsR0FrQkEsUUFBQXFwRCxHQUFBL3lDLEdBQ0EsUUFFQUEsSUFF
QSxnQkFBQUEsSUFBQSxrQkFBQUEsS0FFQSxVQUFBQSxNQUVBLGVBQUFBLEtBR0EsZ0JBQUFBLEdB
QUE1d0IsV0FFQTZPLE1BQUFzWCxRQUFBeUssSUFFQSxVQUFBQSxJQUVBLFFBQUFBLElBeUJBLFFB
QUEyeUMsR0FBQTN5QyxHQUNBLE1BQUEreUMsR0FBQS95QyxHQUVHL2hCLE1BQUFzWCxRQUFBeUss
R0FDSEEsRUFBQWp1QixRQUVBeUssRUFBQXdqQixJQUpBQSxHQXhHQSxHQUFBbDBCLEdBQUEzQixF
QUFBLEVBZ0hBSSxHQUFBRCxRQUFBcW9FLEdwSTJrZk0sU0FBVXBvRSxFQUFRRCxFQUFTSCxHQUVq
QyxZcUk3bmZBLFNBQUFvb0UsR0FBQWx2RCxHQWFBLE1BWkFpdkQsSUFBQXhtRSxHQUFBLEdBQ0Fr
bkUsRUFBQXJuRSxlQUFBMFgsS0FDQUEsRUFBQSxLQUVBNHZELEVBQUF0bkUsZUFBQTBYLEtBRUFp
dkQsRUFBQTNtRCxVQURBLE1BQUF0SSxFQUNBLFdBRUEsSUFBQUEsRUFBQSxNQUFBQSxFQUFBLElB
RUE0dkQsRUFBQTV2RCxJQUFBaXZELEVBQUE3aEUsWUFFQXdpRSxFQUFBNXZELEdBQUEydkQsRUFB
QTN2RCxHQUFBLEtBNUVBLEdBQUFoUixHQUFBbEksRUFBQSxHQUVBMkIsRUFBQTNCLEVBQUEsR0FL
QW1vRSxFQUFBamdFLEVBQUFKLFVBQUFFLFNBQUFDLGNBQUEsWUFTQTZnRSxLQUVBQyxHQUFBLDBD
QUNBQyxHQUFBLHdCQUNBQyxHQUFBLGdEQUVBQyxHQUFBLHVEQUVBTCxHQUNBTSxLQUFBLHFCQUVB
MWUsTUFBQSxvQkFDQWEsS0FBQSw0REFDQWdDLFFBQUEsOEJBQ0FlLE9BQUEsMEJBQ0F5QixJQUFB
LHVDQUVBNUIsU0FBQTZhLEVBQ0E1YSxPQUFBNGEsRUFFQTNkLFFBQUE0ZCxFQUNBemQsU0FBQXlk
LEVBQ0F4WixNQUFBd1osRUFDQXJaLE1BQUFxWixFQUNBblosTUFBQW1aLEVBRUF2WixHQUFBd1os
RUFDQXJaLEdBQUFxWixJQU1BLHFLQUNBN2tFLFFBQUEsU0FBQThVLEdBQ0EydkQsRUFBQTN2RCxH
QUFBZ3dELEVBQ0FKLEVBQUE1dkQsSUFBQSxJQTJCQTlZLEVBQUFELFFBQUFpb0UsR3JJK3NmTSxT
QUFVaG9FLEVBQVFELEVBQVNILEdBRWpDLFlzSWx5ZkEsSUFBQTB1QixHQUFBMXVCLEVBQUEsSUFD
QTZILEVBQUE3SCxFQUFBLEdBS0EwbkUsR0FPQUMsa0NBQUEsU0FBQS9zRCxFQUFBZ1UsR0FDQSxH
QUFBN3BCLEdBQUE4QyxFQUFBVCxvQkFBQXdULEVBQ0E4VCxHQUFBQyxlQUFBNXBCLEVBQUE2cEIs
SUFJQXh1QixHQUFBRCxRQUFBdW5FLEd0SW16Zk0sU0FBVXRuRSxFQUFRRCxFQUFTSCxHQUVqQyxZ
dUlueGZBLFNBQUFpd0IsR0FBQWpaLEdBQ0EsR0FBQUEsRUFBQSxDQUNBLEdBQUF6RCxHQUFBeUQs
RUFBQTlMLGdCQUFBeUksUUFBQSxJQUNBLElBQUFKLEVBQUEsQ0FDQSxHQUFBNVMsR0FBQTRTLEVB
QUFsSSxTQUNBLElBQUExSyxFQUNBLHlDQUFBQSxFQUFBLE1BSUEsU0EyREEsUUFBQXlvRSxHQUFB
OWpFLEVBQUFrTyxHQUNBQSxJQUlBNjFELEVBQUEvakUsRUFBQWdrRSxRQUNBLE1BQUE5MUQsRUFB
QXJOLFVBQUEsTUFBQXFOLEVBQUErMUQsMEJBQUEzaUUsRUFBQSxNQUFBdEIsRUFBQWdrRSxLQUFB
aGtFLEVBQUE0RixnQkFBQXlJLE9BQUEsK0JBQUFyTyxFQUFBNEYsZ0JBQUF5SSxPQUFBdEksVUFB
QSxRQUVBLE1BQUFtSSxFQUFBKzFELDBCQUNBLE1BQUEvMUQsRUFBQXJOLFVBQUFTLEVBQUEsTUFD
QSxpQkFBQTRNLEdBQUErMUQseUJBQUFDLElBQUFoMkQsR0FBQSsxRCx5QkFBZ08zaUUsRUFBQSxP
QU9oTyxNQUFBNE0sRUFBQTI3QyxPQUFBLGlCQUFBMzdDLEdBQUEyN0MsT0FBOFB2b0QsRUFBQSxL
QUFBcXBCLEVBQUEzcUIsS0FHOVAsUUFBQW1rRSxHQUFBL2pFLEVBQUFxVSxFQUFBSyxFQUFBN1As
R0FDQSxLQUFBQSxZQUFBbS9ELElBQUEsQ0FRQSxHQUFBQyxHQUFBamtFLEVBQUEyc0MsbUJBQ0F1
M0IsRUFBQUQsRUFBQUUsT0FBQUYsRUFBQUUsTUFBQTVrRSxXQUFBNmtFLEVBQ0F6ckQsRUFBQXVy
RCxFQUFBRCxFQUFBRSxNQUFBRixFQUFBSSxjQUNBamlELEdBQUEvTixFQUFBc0UsR0FDQTlULEVB
QUE4TSxxQkFBQXpMLFFBQUFpUixHQUNBblgsT0FDQXFVLG1CQUNBSyxjQUlBLFFBQUF5QyxLQUNB
LEdBQUFtdEQsR0FBQTlnRSxJQUNBd1MsR0FBQW1CLFlBQUFtdEQsRUFBQXRrRSxLQUFBc2tFLEVB
QUFqd0QsaUJBQUFpd0QsRUFBQTV2RCxVQUdBLFFBQUE2dkQsS0FDQSxHQUFBdmtFLEdBQUF3RCxJ
QUNBZ2hFLEdBQUFDLGlCQUFBemtFLEdBR0EsUUFBQTBrRSxLQUNBLEdBQUExa0UsR0FBQXdELElB
Q0FtaEUsR0FBQUYsaUJBQUF6a0UsR0FHQSxRQUFBNGtFLEtBQ0EsR0FBQTVrRSxHQUFBd0QsSUFD
QXFoRSxHQUFBSixpQkFBQXprRSxHQTREQSxRQUFBOGtFLEtBQ0Exd0MsRUFBQUUsTUFBQTl3QixN
QUdBLFFBQUF1aEUsS0FDQSxHQUFBL2tFLEdBQUF3RCxJQUdBeEQsR0FBQWdYLGFBQUE5VixFQUFB
LEtBQ0EsSUFBQTdCLEdBQUEybEUsRUFBQWhsRSxFQUdBLFFBRkFYLEdBQUE2QixFQUFBLE1BRUFs
QixFQUFBNGpFLE1BQ0EsYUFDQSxhQUNBNWpFLEVBQUE4ekIsY0FBQW1LLFdBQUFyYyxFQUFBYyxp
QkFBQSxpQkFBQXJqQixHQUNBLE1BQ0EsYUFDQSxZQUNBVyxFQUFBOHpCLGNBQUFtSyxZQUVBLFFB
QUFyMEIsS0FBQXE3RCxHQUNBQSxFQUFBbnBFLGVBQUE4TixJQUNBNUosRUFBQTh6QixjQUFBbUss
VUFBQTU4QixLQUFBdWdCLEVBQUFjLGlCQUFBOVksRUFBQXE3RCxFQUFBcjdELEdBQUF2SyxHQUdB
LE1BQ0EsY0FDQVcsRUFBQTh6QixjQUFBbUssV0FBQXJjLEVBQUFjLGlCQUFBLG1CQUFBcmpCLEdB
Q0EsTUFDQSxXQUNBVyxFQUFBOHpCLGNBQUFtSyxXQUFBcmMsRUFBQWMsaUJBQUEsbUJBQUFyakIs
R0FBQXVpQixFQUFBYyxpQkFBQSxpQkFBQXJqQixHQUNBLE1BQ0EsWUFDQVcsRUFBQTh6QixjQUFB
bUssV0FBQXJjLEVBQUFjLGlCQUFBLG1CQUFBcmpCLEdBQUF1aUIsRUFBQWMsaUJBQUEscUJBQUFy
akIsR0FDQSxNQUNBLGFBQ0EsYUFDQSxlQUNBVyxFQUFBOHpCLGNBQUFtSyxXQUFBcmMsRUFBQWMs
aUJBQUEsdUJBQUFyakIsS0FLQSxRQUFBNmxFLEtBQ0F0bkMsRUFBQVEsa0JBQUE1NkIsTUE4Q0Es
UUFBQTJoRSxHQUFBaHZELEdBQ0FyYSxFQUFBakIsS0FBQXVxRSxFQUFBanZELEtBQ0FrdkQsRUFB
QXR4RCxLQUFBb0MsSUFBQWpWLEVBQUEsS0FBQWlWLEdBQ0FpdkQsRUFBQWp2RCxJQUFBLEdBSUEs
UUFBQW12RCxHQUFBaDZDLEVBQUF4ZCxHQUNBLE1BQUF3ZCxHQUFBbkgsUUFBQSxlQUFBclcsRUFB
QW1lLEdBbUJBLFFBQUFtbUMsR0FBQXJrRCxHQUNBLEdBQUFvSSxHQUFBcEksRUFBQXRJLElBQ0Ew
L0QsR0FBQWh2RCxHQUNBM1MsS0FBQWdDLGdCQUFBdUksRUFDQXZLLEtBQUFvZ0UsS0FBQXp0RCxF
QUFBakcsY0FDQTFNLEtBQUEraEUsY0FBQSxLQUNBL2hFLEtBQUE5QyxrQkFBQSxLQUNBOEMsS0FB
QWdpRSxlQUFBLEtBQ0FoaUUsS0FBQWlpRSxtQkFBQSxLQUNBamlFLEtBQUF0RCxVQUFBLEtBQ0Fz
RCxLQUFBN0IsWUFBQSxLQUNBNkIsS0FBQXdULFlBQUEsRUFDQXhULEtBQUF4QyxPQUFBLEVBQ0F3
QyxLQUFBbXBDLG1CQUFBLEtBQ0FucEMsS0FBQXN3QixjQUFBLEtBQ0F0d0IsS0FBQWtvQyxpQkFB
QSxLQUNBbG9DLEtBQUFsRCxPQUFBLEVBblhBLEdBQUFZLEdBQUE1RyxFQUFBLEdBQ0FxTSxFQUFB
ck0sRUFBQSxHQUVBb3JFLEVBQUFwckUsRUFBQSxLQUNBcXJFLEVBQUFyckUsRUFBQSxLQUNBbVos
RUFBQW5aLEVBQUEsSUFDQW9aLEVBQUFwWixFQUFBLElBQ0FzSCxFQUFBdEgsRUFBQSxJQUNBNGhD
LEVBQUE1aEMsRUFBQSxJQUNBMGIsRUFBQTFiLEVBQUEsSUFDQWdjLEVBQUFoYyxFQUFBLElBQ0Fz
bkIsRUFBQXRuQixFQUFBLElBQ0F1SCxFQUFBdkgsRUFBQSxJQUNBNkgsRUFBQTdILEVBQUEsR0FD
QWtxRSxFQUFBbHFFLEVBQUEsS0FDQXVxRSxFQUFBdnFFLEVBQUEsS0FDQXNqQyxFQUFBdGpDLEVB
QUEsSUFDQXFxRSxFQUFBcnFFLEVBQUEsS0FFQXNyRSxHQURBdHJFLEVBQUEsR0FDQUEsRUFBQSxN
QUNBMHBFLEVBQUExcEUsRUFBQSxLQUdBMGlCLEdBREExaUIsRUFBQSxHQUNBQSxFQUFBLEtBSUE4
NUIsR0FIQTk1QixFQUFBLEdBQ0FBLEVBQUEsSUFDQUEsRUFBQSxJQUNBQSxFQUFBLEtBSUFpRyxH
QUhBakcsRUFBQSxJQUNBQSxFQUFBLEdBRUF1SCxHQUNBMlYsRUFBQXhCLEVBQUF3QixlQUNBd3RE
LEVBQUE3aUUsRUFBQVQsb0JBQ0EwZ0IsRUFBQVIsRUFBQVEsU0FDQS9LLEVBQUFmLEVBQUFlLHdC
QUdBd3VELEdBQXFCdnBELFFBQUEsRUFBQWtaLFFBQUEsR0FHckJzdUMsRUFBQSxTQUNBcjJELEdB
Q0FoTixTQUFBLEtBQ0FvakUsd0JBQUEsS0FDQWlDLCtCQUFBLE1BSUExQixFQUFBLEdBa0tBYSxH
QUNBcm5ELFNBQUEsUUFDQUssV0FBQSxVQUNBQyxrQkFBQSxpQkFDQWtCLGtCQUFBLGlCQUNBQyxX
QUFBLFVBQ0FDLGFBQUEsWUFDQUMsU0FBQSxRQUNBQyxTQUFBLFFBQ0FNLGNBQUEsYUFDQUMsa0JB
QUEsaUJBQ0FDLGFBQUEsWUFDQU8sU0FBQSxRQUNBQyxRQUFBLE9BQ0FDLFdBQUEsVUFDQUMsWUFB
QSxXQUNBQyxjQUFBLGFBQ0FFLFVBQUEsU0FDQUMsV0FBQSxVQUNBRSxXQUFBLFVBQ0FDLFdBQUEs
VUFDQUUsY0FBQSxhQUNBTSxnQkFBQSxlQUNBQyxXQUFBLFdBc0RBcWtELEdBQ0FoaEIsTUFBQSxF
QUNBSSxNQUFBLEVBQ0FLLElBQUEsRUFDQUksS0FBQSxFQUNBWSxPQUFBLEVBQ0FhLElBQUEsRUFD
QUUsS0FBQSxFQUNBN2QsT0FBQSxFQUNBZ2UsUUFBQSxFQUNBSSxNQUFBLEVBQ0FLLE1BQUEsRUFD
QVEsT0FBQSxFQUNBNXBELFFBQUEsRUFDQXUxQixPQUFBLEVBQ0FtMkIsS0FBQSxHQUlBdWIsR0FD
QUMsU0FBQSxFQUNBcGQsS0FBQSxFQUNBbUIsVUFBQSxHQU1BMlosRUFBQWg5RCxHQUNBdWhELFVB
QUEsR0FDQzZkLEdBTURWLEVBQUEsOEJBQ0FELEtBQ0F0cEUsS0FBdUJBLGVBYXZCb3FFLEVBQUEs
Q0F1Q0E5VCxHQUFBN2tDLFlBQUEsb0JBRUE2a0MsRUFBQStULE9BWUE5MEQsZUFBQSxTQUFBeE0s
RUFBQTBNLEVBQUFDLEVBQUFoTCxHQUNBaEQsS0FBQXdULFlBQUFrdkQsSUFDQTFpRSxLQUFBeEMs
T0FBQXdRLEVBQUE0MEQsYUFDQTVpRSxLQUFBN0IsWUFBQTRQLEVBQ0EvTixLQUFBbXBDLG1CQUFB
bjdCLENBRUEsSUFBQTFELEdBQUF0SyxLQUFBZ0MsZ0JBQUFzSSxLQUVBLFFBQUF0SyxLQUFBb2dF
LE1BQ0EsWUFDQSxXQUNBLGFBQ0EsVUFDQSxXQUNBLGFBQ0EsYUFDQSxZQUNBcGdFLEtBQUFzd0Is
ZUFDQW1LLFVBQUEsTUFFQXA1QixFQUFBOE0scUJBQUF6TCxRQUFBNitELEVBQUF2aEUsS0FDQSxN
QUNBLGFBQ0FnaEUsRUFBQTFtQyxhQUFBdDZCLEtBQUFzSyxFQUFBeUQsR0FDQXpELEVBQUEwMkQs
RUFBQTNtQyxhQUFBcjZCLEtBQUFzSyxHQUNBakosRUFBQThNLHFCQUFBekwsUUFBQTQrRCxFQUFB
dGhFLE1BQ0FxQixFQUFBOE0scUJBQUF6TCxRQUFBNitELEVBQUF2aEUsS0FDQSxNQUNBLGNBQ0Fx
aEUsRUFBQS9tQyxhQUFBdDZCLEtBQUFzSyxFQUFBeUQsR0FDQXpELEVBQUErMkQsRUFBQWhuQyxh
QUFBcjZCLEtBQUFzSyxFQUNBLE1BQ0EsY0FDQTh2QixFQUFBRSxhQUFBdDZCLEtBQUFzSyxFQUFB
eUQsR0FDQXpELEVBQUE4dkIsRUFBQUMsYUFBQXI2QixLQUFBc0ssR0FDQWpKLEVBQUE4TSxxQkFB
QXpMLFFBQUE2K0QsRUFBQXZoRSxLQUNBLE1BQ0EsZ0JBQ0FtaEUsRUFBQTdtQyxhQUFBdDZCLEtB
QUFzSyxFQUFBeUQsR0FDQXpELEVBQUE2MkQsRUFBQTltQyxhQUFBcjZCLEtBQUFzSyxHQUNBakos
RUFBQThNLHFCQUFBekwsUUFBQTQrRCxFQUFBdGhFLE1BQ0FxQixFQUFBOE0scUJBQUF6TCxRQUFB
NitELEVBQUF2aEUsTUFJQWtnRSxFQUFBbGdFLEtBQUFzSyxFQUlBLElBQUFtRyxHQUNBb3lELENB
Q0EsT0FBQTkwRCxHQUNBMEMsRUFBQTFDLEVBQUFnMEQsY0FDQWMsRUFBQTkwRCxFQUFBcXlELE1B
Q0tweUQsRUFBQW95RCxPQUNMM3ZELEVBQUF6QyxFQUFBK3pELGNBQ0FjLEVBQUE3MEQsRUFBQW95
RCxPQUVBLE1BQUEzdkQsT0FBQVAsRUFBQW1JLEtBQUEsa0JBQUF3cUQsS0FDQXB5RCxFQUFBUCxF
QUFBaEIsTUFFQXVCLElBQUFQLEVBQUFoQixPQUNBLFFBQUFsUCxLQUFBb2dFLEtBQ0EzdkQsRUFB
QVAsRUFBQW1JLElBQ08sU0FBQXJZLEtBQUFvZ0UsT0FDUDN2RCxFQUFBUCxFQUFBOFYsU0FHQWht
QixLQUFBK2hFLGNBQUF0eEQsQ0FHQSxJQWNBcXlELEVBQ0EsSUFBQXpoRSxFQUFBbW5DLGlCQUFB
LENBQ0EsR0FDQXU2QixHQURBM3RELEVBQUFwSCxFQUFBNnlELGNBRUEsSUFBQXB3RCxJQUFBUCxF
QUFBaEIsS0FDQSxjQUFBbFAsS0FBQW9nRSxLQUFBLENBR0EsR0FBQXhkLEdBQUF4dEMsRUFBQXJX
LGNBQUEsT0FDQWtELEVBQUFqQyxLQUFBZ0MsZ0JBQUFDLElBQ0EyZ0QsR0FBQXRxQyxVQUFBLElB
QUFyVyxFQUFBLE1BQUFBLEVBQUEsSUFDQThnRSxFQUFBbmdCLEVBQUFqcUMsWUFBQWlxQyxFQUFB
eGxELGdCQUVBMmxFLEdBRFN6NEQsRUFBQW1lLEdBQ1RyVCxFQUFBclcsY0FBQWlCLEtBQUFnQyxn
QkFBQUMsS0FBQXFJLEVBQUFtZSxJQUtBclQsRUFBQXJXLGNBQUFpQixLQUFBZ0MsZ0JBQUFDLFVB
R0E4Z0UsR0FBQTN0RCxFQUFBNHRELGdCQUFBdnlELEVBQUF6USxLQUFBZ0MsZ0JBQUFDLEtBRUF0
RCxHQUFBcEMsYUFBQXlELEtBQUEraUUsR0FDQS9pRSxLQUFBbEQsUUFBQUMsRUFBQUMsb0JBQ0Fn
RCxLQUFBN0IsYUFDQXU2QixFQUFBSyxvQkFBQWdxQyxHQUVBL2lFLEtBQUFpakUscUJBQUEsS0FB
QTM0RCxFQUFBakosRUFDQSxJQUFBNmhFLEdBQUFqekQsRUFBQTh5RCxFQUNBL2lFLE1BQUFtakUs
dUJBQUE5aEUsRUFBQWlKLEVBQUF0SCxFQUFBa2dFLEdBQ0FKLEVBQUFJLE1BQ0ssQ0FDTCxHQUFB
RSxHQUFBcGpFLEtBQUFxakUsb0NBQUFoaUUsRUFBQWlKLEdBQ0FnNUQsRUFBQXRqRSxLQUFBdWpF
LHFCQUFBbGlFLEVBQUFpSixFQUFBdEgsRUFFQTgvRCxJQURBUSxHQUFBZixFQUFBdmlFLEtBQUFv
Z0UsTUFDQWdELEVBQUEsS0FFQUEsRUFBQSxJQUFBRSxFQUFBLEtBQUF0akUsS0FBQWdDLGdCQUFB
QyxLQUFBLElBSUEsT0FBQWpDLEtBQUFvZ0UsTUFDQSxZQUNBLytELEVBQUE4TSxxQkFBQXpMLFFB
QUFxK0QsRUFBQS9nRSxNQUNBc0ssRUFBQTZxQyxXQUNBOXpDLEVBQUE4TSxxQkFBQXpMLFFBQUF3
L0QsRUFBQXNCLGtCQUFBeGpFLEtBRUEsTUFDQSxnQkFDQXFCLEVBQUE4TSxxQkFBQXpMLFFBQUF3
K0QsRUFBQWxoRSxNQUNBc0ssRUFBQTZxQyxXQUNBOXpDLEVBQUE4TSxxQkFBQXpMLFFBQUF3L0Qs
RUFBQXNCLGtCQUFBeGpFLEtBRUEsTUFDQSxjQUtBLGFBQ0FzSyxFQUFBNnFDLFdBQ0E5ekMsRUFB
QThNLHFCQUFBekwsUUFBQXcvRCxFQUFBc0Isa0JBQUF4akUsS0FFQSxNQUNBLGNBQ0FxQixFQUFB
OE0scUJBQUF6TCxRQUFBMCtELEVBQUFwaEUsTUFJQSxNQUFBOGlFLElBZ0JBTyxvQ0FBQSxTQUFB
aGlFLEVBQUFpSixHQUNBLEdBQUErTCxHQUFBLElBQUFyVyxLQUFBZ0MsZ0JBQUFDLElBRUEsUUFB
QXdoRSxLQUFBbjVELEdBQ0EsR0FBQUEsRUFBQWhTLGVBQUFtckUsR0FBQSxDQUdBLEdBQUEzcEMs
R0FBQXh2QixFQUFBbTVELEVBQ0EsVUFBQTNwQyxFQUdBLEdBQUFqbUIsRUFBQXZiLGVBQUFtckUs
R0FDQTNwQyxHQUNBeW1DLEVBQUF2Z0UsS0FBQXlqRSxFQUFBM3BDLEVBQUF6NEIsT0FFTyxDQTFo
QlAsVUEyaEJBb2lFLElBQ0EzcEMsSUFLQUEsRUFBQTk1QixLQUFBaWlFLG1CQUFBOStELEtBQTRE
bUgsRUFBQTI3QyxRQUU1RG5zQixFQUFBcW9DLEVBQUF1QixzQkFBQTVwQyxFQUFBOTVCLE1BRUEs
SUFBQWtPLEdBQUEsSUFDQSxPQUFBbE8sS0FBQW9nRSxNQUFBMEIsRUFBQTloRSxLQUFBb2dFLEtB
QUE5MUQsR0FDQUwsRUFBQTNSLGVBQUFtckUsS0FDQXYxRCxFQUFBd3FCLEVBQUFPLCtCQUFBd3FD
LEVBQUEzcEMsSUFHQTVyQixFQUFBd3FCLEVBQUFNLHdCQUFBeXFDLEVBQUEzcEMsR0FFQTVyQixJ
QUNBbUksR0FBQSxJQUFBbkksSUFPQSxNQUFBN00sR0FBQXNpRSxxQkFDQXR0RCxHQUdBclcsS0FB
QTdCLGNBQ0FrWSxHQUFBLElBQUFxaUIsRUFBQUksdUJBRUF6aUIsR0FBQSxJQUFBcWlCLEVBQUFD
LGtCQUFBMzRCLEtBQUF4QyxVQWFBK2xFLHFCQUFBLFNBQUFsaUUsRUFBQWlKLEVBQUF0SCxHQUNB
LEdBQUFxVCxHQUFBLEdBR0FpQyxFQUFBaE8sRUFBQSsxRCx1QkFDQSxVQUFBL25ELEVBQ0EsTUFB
QUEsRUFBQXNyRCxTQUNBdnRELEVBQUFpQyxFQUFBc3JELFlBRUssQ0FDTCxHQUFBQyxHQUFBeEIs
UUFBQS8zRCxHQUFBck4sVUFBQXFOLEVBQUFyTixTQUFBLEtBQ0E2bUUsRUFBQSxNQUFBRCxFQUFB
LEtBQUF2NUQsRUFBQXJOLFFBQ0EsVUFBQTRtRSxFQUVBeHRELEVBQUFtRCxFQUFBcXFELE9BSU8s
VUFBQUMsRUFBQSxDQUNQLEdBQUFDLEdBQUEvakUsS0FBQWdrRSxjQUFBRixFQUFBemlFLEVBQUEy
QixFQUNBcVQsR0FBQTB0RCxFQUFBaHBFLEtBQUEsS0FHQSxNQUFBeW5FLEdBQUF4aUUsS0FBQW9n
RSxPQUFBLE9BQUEvcEQsRUFBQXljLE9BQUEsR0FXQSxLQUFBemMsRUFFQUEsR0FJQThzRCx1QkFB
QSxTQUFBOWhFLEVBQUFpSixFQUFBdEgsRUFBQWtnRSxHQUVBLEdBQUE1cUQsR0FBQWhPLEVBQUEr
MUQsdUJBQ0EsVUFBQS9uRCxFQUNBLE1BQUFBLEVBQUFzckQsUUFDQTN6RCxFQUFBSCxVQUFBb3pE
LEVBQUE1cUQsRUFBQXNyRCxZQUVLLENBQ0wsR0FBQUMsR0FBQXhCLFFBQUEvM0QsR0FBQXJOLFVB
QUFxTixFQUFBck4sU0FBQSxLQUNBNm1FLEVBQUEsTUFBQUQsRUFBQSxLQUFBdjVELEVBQUFyTixR
QUVBLFVBQUE0bUUsRUFLQSxLQUFBQSxHQUlBNXpELEVBQUFGLFVBQUFtekQsRUFBQVcsT0FFTyxV
QUFBQyxFQUVQLE9BREFDLEdBQUEvakUsS0FBQWdrRSxjQUFBRixFQUFBemlFLEVBQUEyQixHQUNB
N0wsRUFBQSxFQUF1QkEsRUFBQTRzRSxFQUFBanFFLE9BQXdCM0MsSUFDL0M4WSxFQUFBUCxXQUFB
d3pELEVBQUFhLEVBQUE1c0UsTUFjQXFYLGlCQUFBLFNBQUFDLEVBQUFwTixFQUFBMkIsR0FDQSxH
QUFBMEwsR0FBQTFPLEtBQUFnQyxlQUNBaEMsTUFBQWdDLGdCQUFBeU0sRUFDQXpPLEtBQUFvdEQs
Z0JBQUEvckQsRUFBQXFOLEVBQUFELEVBQUF6TCxJQWFBb3FELGdCQUFBLFNBQUEvckQsRUFBQXFO
LEVBQUFELEVBQUF6TCxHQUNBLEdBQUFpaEUsR0FBQXYxRCxFQUFBcEUsTUFDQWdsQyxFQUFBdHZD
LEtBQUFnQyxnQkFBQXNJLEtBRUEsUUFBQXRLLEtBQUFvZ0UsTUFDQSxZQUNBNkQsRUFBQWpELEVB
QUEzbUMsYUFBQXI2QixLQUFBaWtFLEdBQ0EzMEIsRUFBQTB4QixFQUFBM21DLGFBQUFyNkIsS0FB
QXN2QyxFQUNBLE1BQ0EsY0FDQTIwQixFQUFBNUMsRUFBQWhuQyxhQUFBcjZCLEtBQUFpa0UsR0FD
QTMwQixFQUFBK3hCLEVBQUFobkMsYUFBQXI2QixLQUFBc3ZDLEVBQ0EsTUFDQSxjQUNBMjBCLEVB
QUE3cEMsRUFBQUMsYUFBQXI2QixLQUFBaWtFLEdBQ0EzMEIsRUFBQWxWLEVBQUFDLGFBQUFyNkIs
S0FBQXN2QyxFQUNBLE1BQ0EsZ0JBQ0EyMEIsRUFBQTlDLEVBQUE5bUMsYUFBQXI2QixLQUFBaWtF
LEdBQ0EzMEIsRUFBQTZ4QixFQUFBOW1DLGFBQUFyNkIsS0FBQXN2QyxHQVFBLE9BSkE0d0IsRUFB
QWxnRSxLQUFBc3ZDLEdBQ0F0dkMsS0FBQWlqRSxxQkFBQWdCLEVBQUEzMEIsRUFBQWp1QyxHQUNB
ckIsS0FBQWtrRSxtQkFBQUQsRUFBQTMwQixFQUFBanVDLEVBQUEyQixHQUVBaEQsS0FBQW9nRSxN
QUNBLFlBSUFZLEVBQUFtRCxjQUFBbmtFLEtBQ0EsTUFDQSxnQkFDQW1oRSxFQUFBZ0QsY0FBQW5r
RSxLQUNBLE1BQ0EsY0FHQXFCLEVBQUE4TSxxQkFBQXpMLFFBQUFnL0QsRUFBQTFoRSxRQXFCQWlq
RSxxQkFBQSxTQUFBZ0IsRUFBQTMwQixFQUFBanVDLEdBQ0EsR0FBQW9pRSxHQUNBVyxFQUNBQyxD
QUNBLEtBQUFaLElBQUFRLEdBQ0EsSUFBQTMwQixFQUFBaDNDLGVBQUFtckUsSUFBQVEsRUFBQTNy
RSxlQUFBbXJFLElBQUEsTUFBQVEsRUFBQVIsR0FHQSxHQTd1QkEsVUE2dUJBQSxFQUFBLENBQ0Es
R0FBQWEsR0FBQXRrRSxLQUFBaWlFLGtCQUNBLEtBQUFtQyxJQUFBRSxHQUNBQSxFQUFBaHNFLGVB
QUE4ckUsS0FDQUMsUUFDQUEsRUFBQUQsR0FBQSxHQUdBcGtFLE1BQUFpaUUsbUJBQUEsU0FDT3B1
RCxHQUFBdmIsZUFBQW1yRSxHQUNQUSxFQUFBUixJQUlBenZELEVBQUFoVSxLQUFBeWpFLEdBRU8z
QixFQUFBOWhFLEtBQUFvZ0UsS0FBQTZELEdBQ1BoNkQsRUFBQTNSLGVBQUFtckUsSUFDQS9xQyxF
QUFBYyx3QkFBQWdvQyxFQUFBeGhFLE1BQUF5akUsSUFFT3JsRSxFQUFBb08sV0FBQWkzRCxJQUFB
cmxFLEVBQUFrTyxrQkFBQW0zRCxLQUNQL3FDLEVBQUFTLHVCQUFBcW9DLEVBQUF4aEUsTUFBQXlq
RSxFQUdBLEtBQUFBLElBQUFuMEIsR0FBQSxDQUNBLEdBQUFpMUIsR0FBQWoxQixFQUFBbTBCLEdB
Q0FlLEVBdndCQSxVQXV3QkFmLEVBQUF6akUsS0FBQWlpRSxtQkFBQSxNQUFBZ0MsSUFBQVIsT0FB
QXZxRSxFQUNBLElBQUFvMkMsRUFBQWgzQyxlQUFBbXJFLElBQUFjLElBQUFDLElBQUEsTUFBQUQs
R0FBQSxNQUFBQyxHQUdBLEdBM3dCQSxVQTJ3QkFmLEVBVUEsR0FUQWMsRUFLQUEsRUFBQXZrRSxL
QUFBaWlFLG1CQUFBOStELEtBQXlEb2hFLEdBRXpEdmtFLEtBQUFpaUUsbUJBQUEsS0FFQXVDLEVB
QUEsQ0FFQSxJQUFBSixJQUFBSSxJQUNBQSxFQUFBbHNFLGVBQUE4ckUsSUFBQUcsS0FBQWpzRSxl
QUFBOHJFLEtBQ0FDLFFBQ0FBLEVBQUFELEdBQUEsR0FJQSxLQUFBQSxJQUFBRyxHQUNBQSxFQUFB
anNFLGVBQUE4ckUsSUFBQUksRUFBQUosS0FBQUcsRUFBQUgsS0FDQUMsUUFDQUEsRUFBQUQsR0FB
QUcsRUFBQUgsUUFLQUMsR0FBQUUsTUFFTyxJQUFBMXdELEVBQUF2YixlQUFBbXJFLEdBQ1BjLEVB
Q0FoRSxFQUFBdmdFLEtBQUF5akUsRUFBQWMsRUFBQWxqRSxHQUNTbWpFLEdBQ1R4d0QsRUFBQWhV
LEtBQUF5akUsT0FFTyxJQUFBM0IsRUFBQTloRSxLQUFBb2dFLEtBQUE5d0IsR0FDUHJsQyxFQUFB
M1IsZUFBQW1yRSxJQUNBL3FDLEVBQUFZLHFCQUFBa29DLEVBQUF4aEUsTUFBQXlqRSxFQUFBYyxP
QUVPLElBQUFubUUsRUFBQW9PLFdBQUFpM0QsSUFBQXJsRSxFQUFBa08sa0JBQUFtM0QsR0FBQSxD
QUNQLEdBQUE1bkUsR0FBQTJsRSxFQUFBeGhFLEtBSUEsT0FBQXVrRSxFQUNBN3JDLEVBQUFRLG9C
QUFBcjlCLEVBQUE0bkUsRUFBQWMsR0FFQTdyQyxFQUFBUyx1QkFBQXQ5QixFQUFBNG5FLElBSUFZ
LEdBQ0FsQyxFQUFBc0Msa0JBQUFqRCxFQUFBeGhFLE1BQUFxa0UsRUFBQXJrRSxPQWFBa2tFLG1C
QUFBLFNBQUFELEVBQUEzMEIsRUFBQWp1QyxFQUFBMkIsR0FDQSxHQUFBMGhFLEdBQUFyQyxRQUFB
NEIsR0FBQWhuRSxVQUFBZ25FLEVBQUFobkUsU0FBQSxLQUNBMG5FLEVBQUF0QyxRQUFBL3lCLEdB
QUFyeUMsVUFBQXF5QyxFQUFBcnlDLFNBQUEsS0FFQTJuRSxFQUFBWCxFQUFBNUQseUJBQUE0RCxF
QUFBNUQsd0JBQUF1RCxPQUNBaUIsRUFBQXYxQixFQUFBK3dCLHlCQUFBL3dCLEVBQUErd0Isd0JB
QUF1RCxPQUdBa0IsRUFBQSxNQUFBSixFQUFBLEtBQUFULEVBQUFobkUsU0FDQThuRSxFQUFBLE1B
QUFKLEVBQUEsS0FBQXIxQixFQUFBcnlDLFNBSUErbkUsRUFBQSxNQUFBTixHQUFBLE1BQUFFLEVB
Q0FLLEVBQUEsTUFBQU4sR0FBQSxNQUFBRSxDQUNBLE9BQUFDLEdBQUEsTUFBQUMsRUFDQS9rRSxL
QUFBa2xFLGVBQUEsS0FBQTdqRSxFQUFBMkIsR0FDS2dpRSxJQUFBQyxHQUNMamxFLEtBQUFtbEUs
a0JBQUEsSUFNQSxNQUFBUixFQUNBRCxJQUFBQyxHQUNBM2tFLEtBQUFtbEUsa0JBQUEsR0FBQVIs
R0FLSyxNQUFBRSxFQUNMRCxJQUFBQyxHQUNBN2tFLEtBQUFvbEUsYUFBQSxHQUFBUCxHQUtLLE1B
QUFFLEdBS0wva0UsS0FBQWtsRSxlQUFBSCxFQUFBMWpFLEVBQUEyQixJQUlBb0wsWUFBQSxXQUNB
LE1BQUFvekQsR0FBQXhoRSxPQVNBcU8saUJBQUEsU0FBQUMsR0FDQSxPQUFBdE8sS0FBQW9nRSxN
QUNBLFlBQ0EsV0FDQSxhQUNBLFVBQ0EsV0FDQSxhQUNBLGFBQ0EsWUFDQSxHQUFBM2xDLEdBQUF6
NkIsS0FBQXN3QixjQUFBbUssU0FDQSxJQUFBQSxFQUNBLE9BQUF0akMsR0FBQSxFQUF5QkEsRUFB
QXNqQyxFQUFBM2dDLE9BQXNCM0MsSUFDL0NzakMsRUFBQXRqQyxHQUFBc2UsUUFHQSxNQUNBLGFB
Q0EsZUFDQW1iLEVBQUFRLGFBQUFweEIsS0FDQSxNQUNBLFlBQ0EsV0FDQSxXQU9BdEMsRUFBQSxL
QUFBc0MsS0FBQW9nRSxNQUlBcGdFLEtBQUFxbEUsZ0JBQUEvMkQsR0FDQTNQLEVBQUEvQixZQUFB
b0QsTUFDQXdTLEVBQUEwQixtQkFBQWxVLE1BQ0FBLEtBQUF3VCxZQUFBLEVBQ0F4VCxLQUFBeEMs
T0FBQSxFQUNBd0MsS0FBQXN3QixjQUFBLE1BT0EzdEIsa0JBQUEsV0FDQSxNQUFBNitELEdBQUF4
aEUsUUFJQW1ELEVBQUF5ckQsRUFBQXYyRCxVQUFBdTJELEVBQUErVCxNQUFBUCxFQUFBTyxPQUVB
enJFLEVBQUFELFFBQUEyM0QsR3ZJeTFmTSxTQUFVMTNELEVBQVFELEVBQVNILEdBRWpDLFl3SS96
aEJBLElBQUE2SCxHQUFBN0gsRUFBQSxHQUVBNDdCLEVBQUE1N0IsRUFBQSxJQUVBb3JFLEdBQ0Fz
QixrQkFBQSxXQUNBOXdDLEVBQUEvekIsRUFBQVQsb0JBQUE4QixRQUlBOUksR0FBQUQsUUFBQWly
RSxHeElnMWhCTSxTQUFVaHJFLEVBQVFELEVBQVNILEdBRWpDLFl5STUxaEJBLElBQUFtaEMsR0FB
QW5oQyxFQUFBLElBQ0FrSSxFQUFBbEksRUFBQSxHQUlBd3VFLEdBSEF4dUUsRUFBQSxHQUVBQSxF
QUFBLEtBQ0FBLEVBQUEsTUFDQXl1RSxFQUFBenVFLEVBQUEsS0FDQTB1RSxFQUFBMXVFLEVBQUEs
S0FHQTJ1RSxHQUZBM3VFLEVBQUEsR0FFQTB1RSxFQUFBLFNBQUFwQixHQUNBLE1BQUFtQixHQUFB
bkIsTUFHQXNCLEdBQUEsRUFDQUMsRUFBQSxVQUNBLElBQUEzbUUsRUFBQUosVUFBQSxDQUNBLEdB
QUFnbkUsR0FBQTltRSxTQUFBQyxjQUFBLE9BQUFrbkQsS0FDQSxLQUVBMmYsRUFBQXB1QyxLQUFB
LEdBQ0csTUFBQTErQixHQUNINHNFLEdBQUEsTUFHQXhzRSxLQUFBNEYsU0FBQTR3QixnQkFBQXUy
QixNQUFBNGYsV0FDQUYsRUFBQSxjQU1BLEdBa0ZBeEQsSUFjQXVCLHNCQUFBLFNBQUFvQyxFQUFB
MXBFLEdBQ0EsR0FBQTJwRSxHQUFBLEVBQ0EsUUFBQTNCLEtBQUEwQixHQUNBLEdBQUFBLEVBQUF4
dEUsZUFBQThyRSxHQUFBLENBR0EsR0FBQTRCLEdBQUEsSUFBQTVCLEVBQUF6akQsUUFBQSxNQUNB
c2xELEVBQUFILEVBQUExQixFQU1BLE9BQUE2QixJQUNBRixHQUFBTixFQUFBckIsR0FBQSxJQUNB
MkIsR0FBQVQsRUFBQWxCLEVBQUE2QixFQUFBN3BFLEVBQUE0cEUsR0FBQSxLQUdBLE1BQUFELElB
QUEsTUFXQXRCLGtCQUFBLFNBQUE1b0UsRUFBQWlxRSxFQUFBMXBFLEdBU0EsR0FBQTZwRCxHQUFB
cHFELEVBQUFvcUQsS0FDQSxRQUFBbWUsS0FBQTBCLEdBQ0EsR0FBQUEsRUFBQXh0RSxlQUFBOHJF
LEdBQUEsQ0FHQSxHQUFBNEIsR0FBQSxJQUFBNUIsRUFBQXpqRCxRQUFBLE1BTUFzbEQsRUFBQVgs
RUFBQWxCLEVBQUEwQixFQUFBMUIsR0FBQWhvRSxFQUFBNHBFLEVBSUEsSUFIQSxVQUFBNUIsR0FB
QSxhQUFBQSxJQUNBQSxFQUFBdUIsR0FFQUssRUFDQS9mLEVBQUFpZ0IsWUFBQTlCLEVBQUE2QixP
QUNPLElBQUFBLEVBQ1BoZ0IsRUFBQW1lLEdBQUE2QixNQUNPLENBQ1AsR0FBQUUsR0FBQVQsR0FB
QXp0QyxFQUFBdEMsNEJBQUF5dUMsRUFDQSxJQUFBK0IsRUFHQSxPQUFBQyxLQUFBRCxHQUNBbGdC
LEVBQUFtZ0IsR0FBQSxPQUdBbmdCLEdBQUFtZSxHQUFBLE1BT0FsdEUsR0FBQUQsUUFBQWtyRSxH
ekk2MmhCTSxTQUFVanJFLEVBQVFELEVBQVNILEdBRWpDLFkwSWxpaUJBLFNBQUF1dkUsR0FBQXZ0
RCxHQUNBLE1BQUF3dEQsR0FBQXh0RCxFQUFBeGYsUUFBQWl0RSxFQUFBLFFBdEJBLEdBQUFELEdB
QUF4dkUsRUFBQSxLQUVBeXZFLEVBQUEsT0F1QkFydkUsR0FBQUQsUUFBQW92RSxHMUl5a2lCTSxT
QUFVbnZFLEVBQVFELEVBQVNILEdBRWpDLFkySXpsaUJBLFNBQUF3dkUsR0FBQXh0RCxHQUNBLE1B
QUFBLEdBQUF4ZixRQUFBa3RFLEVBQUEsU0FBQUMsRUFBQUMsR0FDQSxNQUFBQSxHQUFBM3pDLGdC
QWJBLEdBQUF5ekMsR0FBQSxPQWlCQXR2RSxHQUFBRCxRQUFBcXZFLEczSXNuaUJNLFNBQVVwdkUs
RUFBUUQsRUFBU0gsR0FFakMsWTRJMW5pQkEsU0FBQXd1RSxHQUFBN3RFLEVBQUE2VCxFQUFBbFAs
RUFBQTRwRSxHQVlBLEdBREEsTUFBQTE2RCxHQUFBLGtCQUFBQSxJQUFBLEtBQUFBLEVBRUEsUUFH
QSxJQUFBcTdELEdBQUFwdUMsTUFBQWp0QixFQUNBLElBQUEwNkQsR0FBQVcsR0FBQSxJQUFBcjdE
LEdBQUEwbkIsRUFBQTE2QixlQUFBYixJQUFBdTdCLEVBQUF2N0IsR0FDQSxTQUFBNlQsQ0FHQSxx
QkFBQUEsR0FBQSxDQXVCQUEsSUFBQWtwQyxPQUVBLE1BQUFscEMsR0FBQSxLQTlEQSxHQUFBMnNC
LEdBQUFuaEMsRUFBQSxJQUdBazhCLEdBRkFsOEIsRUFBQSxHQUVBbWhDLEVBQUFqRixpQkE4REE5
N0IsR0FBQUQsUUFBQXF1RSxHNUkycGlCTSxTQUFVcHVFLEVBQVFELEVBQVNILEdBRWpDLFk2SXpz
aUJBLFNBQUF5dUUsR0FBQXpzRCxHQUNBLE1BQUE4dEQsR0FBQTl0RCxHQUFBeGYsUUFBQWl0RSxF
QUFBLFFBckJBLEdBQUFLLEdBQUE5dkUsRUFBQSxLQUVBeXZFLEVBQUEsTUFzQkFydkUsR0FBQUQs
UUFBQXN1RSxHN0krdWlCTSxTQUFVcnVFLEVBQVFELEVBQVNILEdBRWpDLFk4STN2aUJBLFNBQUE4
dkUsR0FBQTl0RCxHQUNBLE1BQUFBLEdBQUF4ZixRQUFBdXRFLEVBQUEsT0FBQW42RCxjQWZBLEdB
QUFtNkQsR0FBQSxVQWtCQTN2RSxHQUFBRCxRQUFBMnZFLEc5STJ4aUJNLFNBQVUxdkUsRUFBUUQs
RUFBU0gsR0FFakMsWStJMXlpQkEsU0FBQTB1RSxHQUFBemtFLEdBQ0EsR0FBQStsRSxLQUNBLGlC
QUFBaHVELEdBSUEsTUFIQWd1RCxHQUFBeHVFLGVBQUF3Z0IsS0FDQWd1RCxFQUFBaHVELEdBQUEv
WCxFQUFBMUosS0FBQTJJLEtBQUE4WSxJQUVBZ3VELEVBQUFodUQsSUFJQTVoQixFQUFBRCxRQUFB
dXVFLEcvSWkwaUJNLFNBQVV0dUUsRUFBUUQsRUFBU0gsR0FFakMsWWdKMzBpQkEsU0FBQTBoQyxH
QUFBbHRCLEdBQ0EsVUFBQWtPLEVBQUFsTyxHQUFBLElBVEEsR0FBQWtPLEdBQUExaUIsRUFBQSxH
QVlBSSxHQUFBRCxRQUFBdWhDLEdoSm8yaUJNLFNBQVV0aEMsRUFBUUQsRUFBU0gsR0FFakMsWWlK
aDNpQkEsU0FBQWl3RSxHQUFBLzBELEdBQ0FRLEVBQUFnQyxjQUFBeEMsR0FDQVEsRUFBQWlDLG1C
QUFBLEdBSkEsR0FBQWpDLEdBQUExYixFQUFBLElBT0FpakIsR0FLQXlFLGVBQUEsU0FBQXBLLEVB
QUFuUCxFQUFBQyxFQUFBQyxHQUVBNGhFLEVBREF2MEQsRUFBQTJCLGNBQUFDLEVBQUFuUCxFQUFB
QyxFQUFBQyxLQUtBak8sR0FBQUQsUUFBQThpQixHakptNGlCTSxTQUFVN2lCLEVBQVFELEVBQVNI
LEdBRWpDLFlrSjk0aUJBLFNBQUFrd0UsR0FBQUMsRUFBQW5tRCxHQUNBLEdBQUEyVSxLQVFBLE9B
TkFBLEdBQUF3eEMsRUFBQXY2RCxlQUFBb1UsRUFBQXBVLGNBQ0Erb0IsRUFBQSxTQUFBd3hDLEdB
QUEsU0FBQW5tRCxFQUNBMlUsRUFBQSxNQUFBd3hDLEdBQUEsTUFBQW5tRCxFQUNBMlUsRUFBQSxL
QUFBd3hDLEdBQUEsS0FBQW5tRCxFQUNBMlUsRUFBQSxJQUFBd3hDLEdBQUEsSUFBQW5tRCxFQUFB
cFUsY0FFQStvQixFQW1EQSxRQUFBemIsR0FBQThHLEdBQ0EsR0FBQW9tRCxFQUFBcG1ELEdBQ0Es
TUFBQW9tRCxHQUFBcG1ELEVBQ0csS0FBQXFtRCxFQUFBcm1ELEdBQ0gsTUFBQUEsRUFHQSxJQUFB
c21ELEdBQUFELEVBQUFybUQsRUFFQSxRQUFBbW1ELEtBQUFHLEdBQ0EsR0FBQUEsRUFBQTl1RSxl
QUFBMnVFLFFBQUFoaEIsR0FDQSxNQUFBaWhCLEdBQUFwbUQsR0FBQXNtRCxFQUFBSCxFQUlBLFVB
cEZBLEdBQUFqb0UsR0FBQWxJLEVBQUEsR0F3QkFxd0UsR0FDQUUsYUFBQUwsRUFBQSw0QkFDQU0s
bUJBQUFOLEVBQUEsa0NBQ0FPLGVBQUFQLEVBQUEsOEJBQ0FRLGNBQUFSLEVBQUEsK0JBTUFFLEtB
S0FqaEIsSUFLQWpuRCxHQUFBSixZQUNBcW5ELEVBQUFubkQsU0FBQUMsY0FBQSxPQUFBa25ELE1B
TUEsa0JBQUFwbkQsZ0JBQ0Fzb0UsR0FBQUUsYUFBQUksZ0JBQ0FOLEdBQUFHLG1CQUFBRyxnQkFD
QU4sR0FBQUksZUFBQUUsV0FJQSxtQkFBQTVvRSxlQUNBc29FLEdBQUFLLGNBQUFFLFlBNEJBeHdF
LEVBQUFELFFBQUEraUIsR2xKdzZpQk0sU0FBVTlpQixFQUFRRCxFQUFTSCxHQUVqQyxZbUovK2lC
QSxTQUFBNndFLEtBQ0EzbkUsS0FBQXdULGFBRUF3dEQsRUFBQW1ELGNBQUFua0UsTUFJQSxRQUFB
NG5FLEdBQUF0OUQsR0FFQSxNQURBLGFBQUFBLEVBQUFySSxNQUFBLFVBQUFxSSxFQUFBckksS0FD
QSxNQUFBcUksRUFBQXdjLFFBQUEsTUFBQXhjLEVBQUFnQixNQXNNQSxRQUFBNHVCLEdBQUE5ekIs
R0FDQSxHQUFBa0UsR0FBQXRLLEtBQUFnQyxnQkFBQXNJLE1BRUE1RSxFQUFBa2lCLEVBQUFLLGdC
QUFBM2QsRUFBQWxFLEVBS0FoRyxHQUFBMkMsS0FBQTRrRSxFQUFBM25FLEtBRUEsSUFBQXZJLEdB
QUE2UyxFQUFBN1MsSUFDQSxjQUFBNlMsRUFBQXJJLE1BQUEsTUFBQXhLLEVBQUEsQ0FJQSxJQUhB
LEdBQUFvd0UsR0FBQWxwRSxFQUFBVCxvQkFBQThCLE1BQ0E4bkUsRUFBQUQsRUFFQUMsRUFBQWhx
RSxZQUNBZ3FFLElBQUFocUUsVUFXQSxRQUZBaXFFLEdBQUFELEVBQUFFLGlCQUFBLGNBQUFqM0Is
S0FBQUMsVUFBQSxHQUFBdjVDLEdBQUEsbUJBRUFOLEVBQUEsRUFBbUJBLEVBQUE0d0UsRUFBQWp1
RSxPQUFrQjNDLElBQUEsQ0FDckMsR0FBQTh3RSxHQUFBRixFQUFBNXdFLEVBQ0EsSUFBQTh3RSxJ
QUFBSixHQUFBSSxFQUFBbHJCLE9BQUE4cUIsRUFBQTlxQixLQUFBLENBT0EsR0FBQW1yQixHQUFB
dnBFLEVBQUFWLG9CQUFBZ3FFLEVBQ0FDLElBQUF4cUUsRUFBQSxNQUlBMEMsRUFBQTJDLEtBQUE0
a0UsRUFBQU8sS0FJQSxNQUFBeGlFLEdBOVFBLEdBQUFoSSxHQUFBNUcsRUFBQSxHQUNBcU0sRUFB
QXJNLEVBQUEsR0FFQTRoQyxFQUFBNWhDLEVBQUEsSUFDQTh3QixFQUFBOXdCLEVBQUEsSUFDQTZI
LEVBQUE3SCxFQUFBLEdBQ0FzSixFQUFBdEosRUFBQSxHQXdDQWtxRSxHQXRDQWxxRSxFQUFBLEdB
Q0FBLEVBQUEsSUFzQ0F1akMsYUFBQSxTQUFBNzlCLEVBQUE4TixHQUNBLEdBQUFnQixHQUFBc2Ms
RUFBQUcsU0FBQXpkLEdBQ0F3YyxFQUFBYyxFQUFBSSxXQUFBMWQsRUFxQkEsT0FuQkFuSCxJQUdB
bEIsU0FBQS9JLEdBR0ErbUMsU0FBQS9tQyxHQUdBNHRDLFFBQUE1dEMsR0FDQThoRSxRQUFBOWhF
LElBQ0tvUixHQUNMNjlELG1CQUFBanZFLEdBQ0FzaEMsaUJBQUF0aEMsR0FDQW9TLE1BQUEsTUFB
QUEsSUFBQTlPLEVBQUE4ekIsY0FBQWlLLGFBQ0F6VCxRQUFBLE1BQUFBLElBQUF0cUIsRUFBQTh6
QixjQUFBODNDLGVBQ0F4aEQsU0FBQXBxQixFQUFBOHpCLGNBQUExSixZQU1BMFQsYUFBQSxTQUFB
OTlCLEVBQUE4TixHQUlBLEdBb0JBa3dCLEdBQUFsd0IsRUFBQWt3QixZQUNBaCtCLEdBQUE4ekIs
ZUFDQTgzQyxlQUFBLE1BQUE5OUQsRUFBQXdjLFFBQUF4YyxFQUFBd2MsUUFBQXhjLEVBQUE2OUQs
ZUFDQTV0QyxhQUFBLE1BQUFqd0IsRUFBQWdCLE1BQUFoQixFQUFBZ0IsTUFBQWt2QixFQUNBQyxV
QUFBLEtBQ0E3VCxTQUFBc1QsRUFBQW52QixLQUFBdk8sR0FDQTg1RCxXQUFBc1IsRUFBQXQ5RCxL
QUlBNjVELGNBQUEsU0FBQTNuRSxHQUNBLEdBQUE4TixHQUFBOU4sRUFBQXdGLGdCQUFBc0ksTUFp
QkF3YyxFQUFBeGMsRUFBQXdjLE9BQ0EsT0FBQUEsR0FDQTRSLEVBQUFRLG9CQUFBdjZCLEVBQUFU
LG9CQUFBMUIsR0FBQSxVQUFBc3FCLElBQUEsRUFHQSxJQUFBanJCLEdBQUE4QyxFQUFBVCxvQkFB
QTFCLEdBQ0E4TyxFQUFBc2MsRUFBQUcsU0FBQXpkLEVBQ0EsVUFBQWdCLEVBQ0EsT0FBQUEsR0FB
QSxLQUFBelAsRUFBQXlQLE1BQ0F6UCxFQUFBeVAsTUFBQSxRQUVPLGVBQUFoQixFQUFBckksS0FB
QSxDQUVQLEdBQUFvbUUsR0FBQUMsV0FBQXpzRSxFQUFBeVAsTUFBQSxRQUlBQSxHQUFBKzhELEdB
RUEvOEQsR0FBQSs4RCxHQUFBeHNFLEVBQUF5UCxZQUdBelAsRUFBQXlQLE1BQUEsR0FBQUEsT0FF
T3pQLEdBQUF5UCxRQUFBLEdBQUFBLElBR1B6UCxFQUFBeVAsTUFBQSxHQUFBQSxPQUdBLE9BQUFo
QixFQUFBZ0IsT0FBQSxNQUFBaEIsRUFBQWt3QixjQVNBMytCLEVBQUEyK0IsZUFBQSxHQUFBbHdC
LEVBQUFrd0IsZUFDQTMrQixFQUFBMitCLGFBQUEsR0FBQWx3QixFQUFBa3dCLGNBR0EsTUFBQWx3
QixFQUFBd2MsU0FBQSxNQUFBeGMsRUFBQTY5RCxpQkFDQXRzRSxFQUFBc3NFLGlCQUFBNzlELEVB
QUE2OUQsaUJBS0FsSCxpQkFBQSxTQUFBemtFLEdBQ0EsR0FBQThOLEdBQUE5TixFQUFBd0YsZ0JB
QUFzSSxNQUlBek8sRUFBQThDLEVBQUFULG9CQUFBMUIsRUFRQSxRQUFBOE4sRUFBQXJJLE1BQ0Es
YUFDQSxZQUNBLEtBQ0EsYUFDQSxXQUNBLGVBQ0EscUJBQ0EsWUFDQSxXQUNBLFdBR0FwRyxFQUFB
eVAsTUFBQSxHQUNBelAsRUFBQXlQLE1BQUF6UCxFQUFBMitCLFlBQ0EsTUFDQSxTQUNBMytCLEVB
QUF5UCxNQUFBelAsRUFBQXlQLE1BU0EsR0FBQTdULEdBQUFvRSxFQUFBcEUsSUFDQSxNQUFBQSxJ
QUNBb0UsRUFBQXBFLEtBQUEsSUFFQW9FLEVBQUFzc0UsZ0JBQUF0c0UsRUFBQXNzRSxlQUNBdHNF
LEVBQUFzc0UsZ0JBQUF0c0UsRUFBQXNzRSxlQUNBLEtBQUExd0UsSUFDQW9FLEVBQUFwRSxVQXFE
QVAsR0FBQUQsUUFBQStwRSxHbkpraGpCTSxTQUFVOXBFLEVBQVFELEVBQVNILEdBRWpDLFlvSmx5
akJBSSxHQUFBRCxRQUZBLGdEcEp3empCTSxTQUFVQyxFQUFRRCxFQUFTSCxHQUVqQyxZcUpsempC
QSxTQUFBeXhFLEdBQUF0ckUsR0FDQSxHQUFBNG9CLEdBQUEsRUFnQkEsT0FaQTdjLEdBQUFDLFNB
QUEvTixRQUFBK0IsRUFBQSxTQUFBeWlDLEdBQ0EsTUFBQUEsSUFHQSxpQkFBQUEsSUFBQSxpQkFB
QUEsR0FDQTdaLEdBQUE2WixFQUNLOG9DLElBQ0xBLEdBQUEsTUFLQTNpRCxFQTFCQSxHQUFBMWlC
LEdBQUFyTSxFQUFBLEdBRUFrUyxFQUFBbFMsRUFBQSxJQUNBNkgsRUFBQTdILEVBQUEsR0FDQXNq
QyxFQUFBdGpDLEVBQUEsSUFHQTB4RSxHQURBMXhFLEVBQUEsSUFDQSxHQXlCQXVxRSxHQUNBL21D
LGFBQUEsU0FBQTk5QixFQUFBOE4sRUFBQXlELEdBT0EsR0FBQTA2RCxHQUFBLElBQ0EsVUFBQTE2
RCxFQUFBLENBQ0EsR0FBQTI2RCxHQUFBMzZELENBRUEsY0FBQTI2RCxFQUFBdEksT0FDQXNJLElB
QUF2cUUsYUFHQSxNQUFBdXFFLEdBQUEsV0FBQUEsRUFBQXRJLE9BQ0FxSSxFQUFBcnVDLEVBQUFP
LHNCQUFBK3RDLElBTUEsR0FBQXp1QyxHQUFBLElBQ0EsVUFBQXd1QyxFQUFBLENBQ0EsR0FBQW45
RCxFQU9BLElBTEFBLEVBREEsTUFBQWhCLEVBQUFnQixNQUNBaEIsRUFBQWdCLE1BQUEsR0FFQWk5
RCxFQUFBaitELEVBQUFyTixVQUVBZzlCLEdBQUEsRUFDQXJ2QixNQUFBc1gsUUFBQXVtRCxJQUVB
LE9BQUF0eEUsR0FBQSxFQUF1QkEsRUFBQXN4RSxFQUFBM3VFLE9BQXdCM0MsSUFDL0MsTUFBQXN4
RSxFQUFBdHhFLEtBQUFtVSxFQUFBLENBQ0EydUIsR0FBQSxDQUNBLFlBSUFBLEdBQUEsR0FBQXd1
QyxJQUFBbjlELEVBSUE5TyxFQUFBOHpCLGVBQTBCMkosYUFHMUJnbkMsaUJBQUEsU0FBQXprRSxH
QUVBLEdBQUE4TixHQUFBOU4sRUFBQXdGLGdCQUFBc0ksS0FDQSxVQUFBQSxFQUFBZ0IsTUFBQSxD
QUNBM00sRUFBQVQsb0JBQUExQixHQUNBbW5CLGFBQUEsUUFBQXJaLEVBQUFnQixTQUlBK3VCLGFB
QUEsU0FBQTc5QixFQUFBOE4sR0FDQSxHQUFBcStELEdBQUF4bEUsR0FBNkI4MkIsYUFBQS9nQyxH
QUFBK0QsYUFBQS9ELElBQTJDb1IsRUFJeEUsT0FBQTlOLEVBQUE4ekIsY0FBQTJKLFdBQ0EwdUMs
RUFBQTF1QyxTQUFBejlCLEVBQUE4ekIsY0FBQTJKLFNBR0EsSUFBQXBVLEdBQUEwaUQsRUFBQWor
RCxFQUFBck4sU0FNQSxPQUpBNG9CLEtBQ0E4aUQsRUFBQTFyRSxTQUFBNG9CLEdBR0E4aUQsR0FJ
QXp4RSxHQUFBRCxRQUFBb3FFLEdySjQwakJNLFNBQVVucUUsRUFBUUQsRUFBU0gsR0FFakMsWXNK
NzZqQkEsU0FBQTZ3RSxLQUNBM25FLEtBQUF3VCxhQUVBMnRELEVBQUFnRCxjQUFBbmtFLE1BMkhB
LFFBQUFrNkIsR0FBQTl6QixHQUNBLEdBQUFrRSxHQUFBdEssS0FBQWdDLGdCQUFBc0ksTUFDQTVF
LEVBQUFraUIsRUFBQUssZ0JBQUEzZCxFQUFBbEUsRUFFQSxPQURBaEcsR0FBQTJDLEtBQUE0a0Us
RUFBQTNuRSxNQUNBMEYsRUEvSUEsR0FBQWhJLEdBQUE1RyxFQUFBLEdBQ0FxTSxFQUFBck0sRUFB
QSxHQUVBOHdCLEVBQUE5d0IsRUFBQSxJQUNBNkgsRUFBQTdILEVBQUEsR0FDQXNKLEVBQUF0SixF
QUFBLEdBOEJBcXFFLEdBNUJBcnFFLEVBQUEsR0FDQUEsRUFBQSxJQTRCQXVqQyxhQUFBLFNBQUE3
OUIsRUFBQThOLEdBZUEsTUFkQSxPQUFBQSxFQUFBKzFELHlCQUFBM2lFLEVBQUEsTUFPQXlGLEtB
QThCbUgsR0FDOUJnQixVQUFBcFMsR0FDQXNoQyxpQkFBQXRoQyxHQUNBK0QsU0FBQSxHQUFBVCxF
QUFBOHpCLGNBQUFpSyxhQUNBM1QsU0FBQXBxQixFQUFBOHpCLGNBQUExSixZQU1BMFQsYUFBQSxT
QUFBOTlCLEVBQUE4TixHQWFBLEdBQUFnQixHQUFBc2MsRUFBQUcsU0FBQXpkLEdBQ0Fpd0IsRUFB
QWp2QixDQUdBLFVBQUFBLEVBQUEsQ0FDQSxHQUFBa3ZCLEdBQUFsd0IsRUFBQWt3QixhQUVBdjlC
LEVBQUFxTixFQUFBck4sUUFDQSxPQUFBQSxJQUlBLE1BQUF1OUIsR0FBQTk4QixFQUFBLE1BQ0Fr
TixNQUFBc1gsUUFBQWpsQixLQUNBQSxFQUFBbkQsUUFBQSxHQUFBNEQsRUFBQSxNQUNBVCxJQUFB
LElBR0F1OUIsRUFBQSxHQUFBdjlCLEdBRUEsTUFBQXU5QixJQUNBQSxFQUFBLElBRUFELEVBQUFD
LEVBR0FoK0IsRUFBQTh6QixlQUNBaUssYUFBQSxHQUFBQSxFQUNBRSxVQUFBLEtBQ0E3VCxTQUFB
c1QsRUFBQW52QixLQUFBdk8sS0FJQTJuRSxjQUFBLFNBQUEzbkUsR0FDQSxHQUFBOE4sR0FBQTlO
LEVBQUF3RixnQkFBQXNJLE1BRUF6TyxFQUFBOEMsRUFBQVQsb0JBQUExQixHQUNBOE8sRUFBQXNj
LEVBQUFHLFNBQUF6ZCxFQUNBLFVBQUFnQixFQUFBLENBR0EsR0FBQTZpQixHQUFBLEdBQUE3aUIs
Q0FHQTZpQixLQUFBdHlCLEVBQUF5UCxRQUNBelAsRUFBQXlQLE1BQUE2aUIsR0FFQSxNQUFBN2pC
LEVBQUFrd0IsZUFDQTMrQixFQUFBMitCLGFBQUFyTSxHQUdBLE1BQUE3akIsRUFBQWt3QixlQUNB
MytCLEVBQUEyK0IsYUFBQWx3QixFQUFBa3dCLGVBSUF5bUMsaUJBQUEsU0FBQXprRSxHQUdBLEdB
QUFYLEdBQUE4QyxFQUFBVCxvQkFBQTFCLEdBQ0FpMkIsRUFBQTUyQixFQUFBNDJCLFdBTUFBLEtB
QUFqMkIsRUFBQTh6QixjQUFBaUssZUFDQTErQixFQUFBeVAsTUFBQW1uQixLQVlBdjdCLEdBQUFE
LFFBQUFrcUUsR3RKMjhqQk0sU0FBVWpxRSxFQUFRRCxFQUFTSCxHQUVqQyxZdUoxa2tCQSxTQUFB
OHhFLEdBQUExNkQsRUFBQTRYLEVBQUEraUQsR0FFQSxPQUNBNW1FLEtBQUEsZ0JBQ0E0akIsUUFB
QTNYLEVBQ0E0NkQsVUFBQSxLQUNBL2lELFNBQUEsS0FDQThpRCxVQUNBL2lELGFBV0EsUUFBQWlq
RCxHQUFBcnBDLEVBQUE1WixFQUFBK2lELEdBRUEsT0FDQTVtRSxLQUFBLGdCQUNBNGpCLFFBQUEs
S0FDQWlqRCxVQUFBcHBDLEVBQUExQixZQUNBalksU0FBQXpqQixFQUFBOEwsWUFBQXN4QixHQUNB
bXBDLFVBQ0EvaUQsYUFVQSxRQUFBa2pELEdBQUF0cEMsRUFBQTdqQyxHQUVBLE9BQ0FvRyxLQUFB
LGNBQ0E0akIsUUFBQSxLQUNBaWpELFVBQUFwcEMsRUFBQTFCLFlBQ0FqWSxTQUFBbHFCLEVBQ0Fn
dEUsUUFBQSxLQUNBL2lELFVBQUEsTUFVQSxRQUFBbWpELEdBQUEvNkQsR0FFQSxPQUNBak0sS0FB
QSxhQUNBNGpCLFFBQUEzWCxFQUNBNDZELFVBQUEsS0FDQS9pRCxTQUFBLEtBQ0E4aUQsUUFBQSxL
QUNBL2lELFVBQUEsTUFVQSxRQUFBb2pELEdBQUF6MkMsR0FFQSxPQUNBeHdCLEtBQUEsZUFDQTRq
QixRQUFBNE0sRUFDQXEyQyxVQUFBLEtBQ0EvaUQsU0FBQSxLQUNBOGlELFFBQUEsS0FDQS9pRCxV
QUFBLE1BUUEsUUFBQXBqQixHQUFBNEIsRUFBQXNoQixHQUtBLE1BSkFBLEtBQ0F0aEIsUUFDQUEs
RUFBQXpHLEtBQUErbkIsSUFFQXRoQixFQVFBLFFBQUE2a0UsR0FBQTNzRSxFQUFBNHNFLEdBQ0Fo
aEQsRUFBQUUsdUJBQUE5ckIsRUFBQTRzRSxHQTVIQSxHQUFBMXJFLEdBQUE1RyxFQUFBLEdBRUFz
eEIsRUFBQXR4QixFQUFBLElBS0F3TCxHQUpBeEwsRUFBQSxJQUNBQSxFQUFBLEdBRUFBLEVBQUEs
SUFDQUEsRUFBQSxLQUNBdXlFLEVBQUF2eUUsRUFBQSxLQUdBeXhFLEdBREF6eEUsRUFBQSxHQUNB
QSxFQUFBLE1Ba0pBc3JFLEdBakpBdHJFLEVBQUEsSUF5SkE2ckUsT0FDQTJHLCtCQUFBLFNBQUFD
LEVBQUFsb0UsRUFBQTJCLEdBWUEsTUFBQXFtRSxHQUFBRyxvQkFBQUQsRUFBQWxvRSxFQUFBMkIs
SUFHQXltRSwwQkFBQSxTQUFBQyxFQUFBQyxFQUFBNUYsRUFBQTZGLEVBQUF2b0UsRUFBQTJCLEdB
Q0EsR0FBQStoRSxHQUNBOEUsRUFBQSxDQWdCQSxPQUZBOUUsR0FBQXdELEVBQUFvQixFQUFBRSxH
QUNBUixFQUFBbkUsZUFBQXdFLEVBQUEzRSxFQUFBaEIsRUFBQTZGLEVBQUF2b0UsRUFBQXJCLFVB
QUFtcEMsbUJBQUFubUMsRUFBQTZtRSxHQUNBOUUsR0FXQWYsY0FBQSxTQUFBdUYsRUFBQWxvRSxF
QUFBMkIsR0FDQSxHQUFBL0YsR0FBQStDLEtBQUFzcEUsK0JBQUFDLEVBQUFsb0UsRUFBQTJCLEVB
Q0FoRCxNQUFBOUMsa0JBQUFELENBRUEsSUFBQThtRSxNQUNBM3FELEVBQUEsQ0FDQSxRQUFBM2hC
LEtBQUF3RixHQUNBLEdBQUFBLEVBQUEzRSxlQUFBYixHQUFBLENBQ0EsR0FBQWlvQyxHQUFBemlD
LEVBQUF4RixHQUNBb3lFLEVBQUEsRUFJQS9HLEVBQUF4Z0UsRUFBQXVMLGVBQUE2eEIsRUFBQXIr
QixFQUFBckIsVUFBQW1wQyxtQkFBQW5tQyxFQUFBNm1FLEVBQ0FucUMsR0FBQTFCLFlBQUE1a0Is
SUFDQTJxRCxFQUFBbG1FLEtBQUFpbEUsR0FRQSxNQUFBaUIsSUFTQW9CLGtCQUFBLFNBQUFSLEdB
Q0EsR0FBQStFLEdBQUExcEUsS0FBQTlDLGlCQUVBbXNFLEdBQUFoRSxnQkFBQXFFLEdBQUEsRUFD
QSxRQUFBanlFLEtBQUFpeUUsR0FDQUEsRUFBQXB4RSxlQUFBYixJQUNBaUcsRUFBQSxNQUtBeXJF
LEdBQUFucEUsTUFEQWtwRSxFQUFBdkUsTUFVQVMsYUFBQSxTQUFBMEUsR0FDQSxHQUFBSixHQUFB
MXBFLEtBQUE5QyxpQkFFQW1zRSxHQUFBaEUsZ0JBQUFxRSxHQUFBLEVBQ0EsUUFBQWp5RSxLQUFB
aXlFLEdBQ0FBLEVBQUFweEUsZUFBQWIsSUFDQWlHLEVBQUEsTUFJQXlyRSxHQUFBbnBFLE1BREFp
cEUsRUFBQWEsTUFXQTVFLGVBQUEsU0FBQXlFLEVBQUF0b0UsRUFBQTJCLEdBRUFoRCxLQUFBK3BF
LGdCQUFBSixFQUFBdG9FLEVBQUEyQixJQVNBK21FLGdCQUFBLFNBQUFKLEVBQUF0b0UsRUFBQTJC
LEdBQ0EsR0FBQTBtRSxHQUFBMXBFLEtBQUE5QyxrQkFDQTBzRSxLQUNBN0YsS0FDQWdCLEVBQUEv
a0UsS0FBQXlwRSwwQkFBQUMsRUFBQUMsRUFBQTVGLEVBQUE2RixFQUFBdm9FLEVBQUEyQixFQUNB
LElBQUEraEUsR0FBQTJFLEVBQUEsQ0FHQSxHQUNBanlFLEdBREFpdUIsRUFBQSxLQUlBc2tELEVB
QUEsRUFDQTN3RCxFQUFBLEVBRUE0d0QsRUFBQSxFQUNBQyxFQUFBLElBQ0EsS0FBQXp5RSxJQUFB
c3RFLEdBQ0EsR0FBQUEsRUFBQXpzRSxlQUFBYixHQUFBLENBR0EsR0FBQTB5RSxHQUFBVCxLQUFB
anlFLEdBQ0FzckMsRUFBQWdpQyxFQUFBdHRFLEVBQ0EweUUsS0FBQXBuQyxHQUNBcmQsRUFBQWhq
QixFQUFBZ2pCLEVBQUExbEIsS0FBQTBrQixVQUFBeWxELEVBQUFELEVBQUFGLEVBQUEzd0QsSUFD
QUEsRUFBQTlhLEtBQUF5OEQsSUFBQW1QLEVBQUFuc0MsWUFBQTNrQixHQUNBOHdELEVBQUFuc0Ms
WUFBQWdzQyxJQUVBRyxJQUVBOXdELEVBQUE5YSxLQUFBeThELElBQUFtUCxFQUFBbnNDLFlBQUEz
a0IsSUFJQXFNLEVBQUFoakIsRUFBQWdqQixFQUFBMWxCLEtBQUFvcUUsbUJBQUFybkMsRUFBQWdo
QyxFQUFBa0csR0FBQUMsRUFBQUYsRUFBQTNvRSxFQUFBMkIsSUFDQWluRSxLQUVBRCxJQUNBRSxF
QUFBNW5FLEVBQUE4TCxZQUFBMjBCLEdBR0EsSUFBQXRyQyxJQUFBbXlFLEdBQ0FBLEVBQUF0eEUs
ZUFBQWIsS0FDQWl1QixFQUFBaGpCLEVBQUFnakIsRUFBQTFsQixLQUFBcXFFLGNBQUFYLEVBQUFq
eUUsR0FBQW15RSxFQUFBbnlFLEtBR0FpdUIsSUFDQXlqRCxFQUFBbnBFLEtBQUEwbEIsR0FFQTFs
QixLQUFBOUMsa0JBQUE2bkUsSUFjQU0sZ0JBQUEsU0FBQS8yRCxHQUNBLEdBQUFnOEQsR0FBQXRx
RSxLQUFBOUMsaUJBQ0Ftc0UsR0FBQWhFLGdCQUFBaUYsRUFBQWg4RCxHQUNBdE8sS0FBQTlDLGtC
QUFBLE1BV0F3bkIsVUFBQSxTQUFBZ2IsRUFBQTVaLEVBQUEraUQsRUFBQXh2RCxHQUlBLEdBQUFx
bUIsRUFBQTFCLFlBQUEza0IsRUFDQSxNQUFBMHZELEdBQUFycEMsRUFBQTVaLEVBQUEraUQsSUFX
QTBCLFlBQUEsU0FBQTdxQyxFQUFBNVosRUFBQWc5QyxHQUNBLE1BQUE4RixHQUFBOUYsRUFBQWg5
QyxFQUFBNFosRUFBQTFCLGNBU0FybEIsWUFBQSxTQUFBK21CLEVBQUE3akMsR0FDQSxNQUFBbXRF
LEdBQUF0cEMsRUFBQTdqQyxJQWNBdXVFLG1CQUFBLFNBQUExcUMsRUFBQW9qQyxFQUFBaDlDLEVB
QUExTSxFQUFBL1gsRUFBQTJCLEdBRUEsTUFEQTA4QixHQUFBMUIsWUFBQTVrQixFQUNBcFosS0FB
QXVxRSxZQUFBN3FDLEVBQUE1WixFQUFBZzlDLElBV0F1SCxjQUFBLFNBQUEzcUMsRUFBQTdqQyxH
QUNBLEdBQUErcEIsR0FBQTVsQixLQUFBMlksWUFBQSttQixFQUFBN2pDLEVBRUEsT0FEQTZqQyxH
QUFBMUIsWUFBQSxLQUNBcFksS0FLQTF1QixHQUFBRCxRQUFBbXJFLEd2Smdua0JNLFNBQVVsckUs
RUFBUUQsRUFBU0gsR0FFakMsY3dKOWlsQkEsU0FBQWtsQyxHQStCQSxRQUFBd3VDLEdBQUFDLEVB
QUEvcUMsRUFBQWpvQyxFQUFBb3lFLEdBRUEsR0FBQWEsT0FBQXh4RSxLQUFBdXhFLEVBQUFoekUs
RUFTQSxPQUFBaW9DLEdBQUFnckMsSUFDQUQsRUFBQWh6RSxHQUFBNmxDLEVBQUFvQyxHQUFBLElB
L0JBLEdBQUFwOUIsR0FBQXhMLEVBQUEsSUFFQXdtQyxFQUFBeG1DLEVBQUEsSUFFQWt5QixHQURB
bHlCLEVBQUEsSUFDQUEsRUFBQSxLQUNBMHBDLEVBQUExcEMsRUFBQSxHQUNBQSxHQUFBLEVBSUEs
cUJBQUFrbEMsSUFBQXBrQyxRQUFBK3lFLFNBQUEsYUFBQUMsV0FBQSxLQThCQSxJQUFBdkIsSUFT
QUcsb0JBQUEsU0FBQXFCLEVBQUF4cEUsRUFBQTJCLEVBQUE2bUUsR0FFQSxTQUFBZ0IsRUFDQSxX
QUVBLElBQUFKLEtBU0EsT0FGQWpxQyxHQUFBcXFDLEVBQUFMLEVBQUFDLEdBRUFBLEdBYUF2Rixl
QUFBLFNBQUF3RSxFQUFBM0UsRUFBQWhCLEVBQUE2RixFQUFBdm9FLEVBQUEwTSxFQUFBQyxFQUFB
aEwsRUFBQTZtRSxHQU9BLEdBQUE5RSxHQUFBMkUsRUFBQSxDQUdBLEdBQUFqeUUsR0FDQTB5RSxD
QUNBLEtBQUExeUUsSUFBQXN0RSxHQUNBLEdBQUFBLEVBQUF6c0UsZUFBQWIsR0FBQSxDQUdBMHlF
LEVBQUFULEtBQUFqeUUsRUFDQSxJQUFBaVgsR0FBQXk3RCxLQUFBbm9FLGdCQUNBeU0sRUFBQXMy
RCxFQUFBdHRFLEVBQ0EsVUFBQTB5RSxHQUFBbmhELEVBQUF0YSxFQUFBRCxHQUNBbk0sRUFBQWtN
LGlCQUFBMjdELEVBQUExN0QsRUFBQXBOLEVBQUEyQixHQUNBK2hFLEVBQUF0dEUsR0FBQTB5RSxN
QUNPLENBQ1BBLElBQ0FQLEVBQUFueUUsR0FBQTZLLEVBQUE4TCxZQUFBKzdELEdBQ0E3bkUsRUFB
QStMLGlCQUFBODdELEdBQUEsR0FHQSxJQUFBVyxHQUFBeHRDLEVBQUE3dUIsR0FBQSxFQUNBczJE
LEdBQUF0dEUsR0FBQXF6RSxDQUdBLElBQUFDLEdBQUF6b0UsRUFBQXVMLGVBQUFpOUQsRUFBQXpw
RSxFQUFBME0sRUFBQUMsRUFBQWhMLEVBQUE2bUUsRUFDQTlGLEdBQUFsbUUsS0FBQWt0RSxJQUlB
LElBQUF0ekUsSUFBQWl5RSxJQUNBQSxFQUFBcHhFLGVBQUFiLElBQUFzdEUsS0FBQXpzRSxlQUFB
YixLQUNBMHlFLEVBQUFULEVBQUFqeUUsR0FDQW15RSxFQUFBbnlFLEdBQUE2SyxFQUFBOEwsWUFB
QSs3RCxHQUNBN25FLEVBQUErTCxpQkFBQTg3RCxHQUFBLE1BWUE5RSxnQkFBQSxTQUFBaUYsRUFB
QWg4RCxHQUNBLE9BQUE3VyxLQUFBNnlFLEdBQ0EsR0FBQUEsRUFBQWh5RSxlQUFBYixHQUFBLENB
Q0EsR0FBQXV6RSxHQUFBVixFQUFBN3lFLEVBQ0E2SyxHQUFBK0wsaUJBQUEyOEQsRUFBQTE4RCxL
QU1BcFgsR0FBQUQsUUFBQW95RSxJeEpnamxCNkJoeUUsS0FBS0osRUFBU0gsRUFBb0IsTUFJekQs
U0FBVUksRUFBUUQsRUFBU0gsR0FFakMsWXlKcnFsQkEsU0FBQW0wRSxHQUFBNWhFLElBZUEsUUFB
QTZoRSxHQUFBN2hFLEdBQ0EsU0FBQUEsRUFBQWhSLFlBQUFnUixFQUFBaFIsVUFBQTAyQixrQkFH
QSxRQUFBbzhDLEdBQUE5aEUsR0FDQSxTQUFBQSxFQUFBaFIsWUFBQWdSLEVBQUFoUixVQUFBNjJC
LHNCQWhEQSxHQUFBeHhCLEdBQUE1RyxFQUFBLEdBQ0FxTSxFQUFBck0sRUFBQSxHQUVBa1MsRUFB
QWxTLEVBQUEsSUFDQXN4QixFQUFBdHhCLEVBQUEsSUFDQStOLEVBQUEvTixFQUFBLElBQ0FpYyxF
QUFBamMsRUFBQSxJQUNBMGUsRUFBQTFlLEVBQUEsSUFFQXVuQyxHQURBdm5DLEVBQUEsR0FDQUEs
RUFBQSxLQUNBd0wsRUFBQXhMLEVBQUEsSUFNQStlLEVBQUEvZSxFQUFBLElBRUE2eEIsR0FEQTd4
QixFQUFBLEdBQ0FBLEVBQUEsS0FDQWt5QixFQUFBbHlCLEVBQUEsSUFHQXMwRSxHQUZBdDBFLEVB
QUEsSUFHQXUwRSxZQUFBLEVBQ0FDLFVBQUEsRUFDQUMsb0JBQUEsR0FJQU4sR0FBQTV5RSxVQUFB
cXhDLE9BQUEsV0FDQSxHQUFBcmdDLEdBQUFtTSxFQUFBeGQsSUFBQWdJLE1BQUFnQyxnQkFBQUMs
S0FDQXNJLEVBQUFsQixFQUFBckosS0FBQXNLLE1BQUF0SyxLQUFBZ0QsUUFBQWhELEtBQUEwdUIs
UUFFQSxPQUFBbmtCLEdBb0VBLElBQUFpaEUsR0FBQSxFQUtBdHRDLEdBUUFDLFVBQUEsU0FBQTV6
QixHQUNBdkssS0FBQWdDLGdCQUFBdUksRUFDQXZLLEtBQUF3VCxZQUFBLEVBQ0F4VCxLQUFBeXJF
LGVBQUEsS0FDQXpyRSxLQUFBa3FDLFVBQUEsS0FDQWxxQyxLQUFBN0IsWUFBQSxLQUNBNkIsS0FB
QW1wQyxtQkFBQSxLQUdBbnBDLEtBQUE4QyxtQkFBQSxLQUNBOUMsS0FBQWtyQixnQkFBQSxLQUNB
bHJCLEtBQUE0cUIsbUJBQUEsS0FDQTVxQixLQUFBNnFCLHNCQUFBLEVBQ0E3cUIsS0FBQXlxQixx
QkFBQSxFQUVBenFCLEtBQUEwckMsa0JBQUEsS0FDQTFyQyxLQUFBMUQsbUJBQUEsS0FDQTBELEtB
QUEyTyxTQUFBLEtBQ0EzTyxLQUFBbUIsWUFBQSxFQUNBbkIsS0FBQWtvQyxpQkFBQSxLQUdBbG9D
LEtBQUEyQixrQkFBQSxLQUdBM0IsS0FBQTByRSw2QkFBQSxHQWtCQTc5RCxlQUFBLFNBQUF4TSxF
QUFBME0sRUFBQUMsRUFBQWhMLEdBR0FoRCxLQUFBMk8sU0FBQTNMLEVBQ0FoRCxLQUFBbUIsWUFB
QXFxRSxJQUNBeHJFLEtBQUE3QixZQUFBNFAsRUFDQS9OLEtBQUFtcEMsbUJBQUFuN0IsQ0FFQSxJ
QVVBMjlELEdBVkFDLEVBQUE1ckUsS0FBQWdDLGdCQUFBc0ksTUFDQXVoRSxFQUFBN3JFLEtBQUE4
ckUsZ0JBQUE5b0UsR0FFQXFHLEVBQUFySixLQUFBZ0MsZ0JBQUFDLEtBRUFtbkUsRUFBQS9uRSxF
QUFBMHFFLGlCQUdBQyxFQUFBZCxFQUFBN2hFLEdBQ0E3TSxFQUFBd0QsS0FBQWlzRSxvQkFBQUQs
RUFBQUosRUFBQUMsRUFBQXpDLEVBSUE0QyxJQUFBLE1BQUF4dkUsR0FBQSxNQUFBQSxFQUFBa3RD
LE9BT0F5aEMsRUFBQTloRSxHQUNBckosS0FBQXlyRSxlQUFBTCxFQUFBRSxVQUVBdHJFLEtBQUF5
ckUsZUFBQUwsRUFBQUMsYUFUQU0sRUFBQW52RSxFQUVBLE9BQUFBLElBQUEsSUFBQUEsR0FBQXdN
LEVBQUFPLGVBQUEvTSxJQUFBa0IsRUFBQSxNQUFBMkwsRUFBQTBnQixhQUFBMWdCLEVBQUE1UixN
QUFBLGFBQ0ErRSxFQUFBLEdBQUF5dUUsR0FBQTVoRSxHQUNBckosS0FBQXlyRSxlQUFBTCxFQUFB
RyxvQkF3QkEvdUUsR0FBQThOLE1BQUFzaEUsRUFDQXB2RSxFQUFBd0csUUFBQTZvRSxFQUNBcnZF
LEVBQUFteUIsS0FBQTlZLEVBQ0FyWixFQUFBa3lCLFFBQUEwNkMsRUFFQXBwRSxLQUFBa3FDLFVB
QUExdEMsRUFHQWdaLEVBQUFJLElBQUFwWixFQUFBd0QsS0FlQSxJQUFBMnNELEdBQUFud0QsRUFB
QSswQyxVQUNBcjRDLEtBQUF5ekQsSUFDQW53RCxFQUFBKzBDLE1BQUFvYixFQUFBLE9BRUEsaUJB
QUFBLElBQUEvaEQsTUFBQXNYLFFBQUF5cUMsS0FBQWp2RCxFQUFBLE1BQUFzQyxLQUFBbUMsV0FB
QSwyQkFFQW5DLEtBQUE0cUIsbUJBQUEsS0FDQTVxQixLQUFBNnFCLHNCQUFBLEVBQ0E3cUIsS0FB
QXlxQixxQkFBQSxDQUVBLElBQUF2YyxFQW1CQSxPQWpCQUEsR0FEQTFSLEVBQUEwdkUscUJBQ0Fs
c0UsS0FBQW1zRSxxQ0FBQVIsRUFBQTU5RCxFQUFBQyxFQUFBM00sRUFBQTJCLEdBRUFoRCxLQUFB
b3NFLG9CQUFBVCxFQUFBNTlELEVBQUFDLEVBQUEzTSxFQUFBMkIsR0FHQXhHLEVBQUF1MUMsbUJB
UUExd0MsRUFBQThNLHFCQUFBekwsUUFBQWxHLEVBQUF1MUMsa0JBQUF2MUMsR0FJQTBSLEdBR0Er
OUQsb0JBQUEsU0FBQUQsRUFBQUosRUFBQUMsRUFBQXpDLEdBU0EsTUFBQXBwRSxNQUFBcXNFLGdD
QUFBTCxFQUFBSixFQUFBQyxFQUFBekMsSUFJQWlELGdDQUFBLFNBQUFMLEVBQUFKLEVBQUFDLEVB
QUF6QyxHQUNBLEdBQUEvL0QsR0FBQXJKLEtBQUFnQyxnQkFBQUMsSUFFQSxPQUFBK3BFLEdBTUEs
R0FBQTNpRSxHQUFBdWlFLEVBQUFDLEVBQUF6QyxHQVdBLy9ELEVBQUF1aUUsRUFBQUMsRUFBQXpD
LElBSUErQyxxQ0FBQSxTQUFBUixFQUFBNTlELEVBQUFDLEVBQUEzTSxFQUFBMkIsR0FDQSxHQUFB
a0wsR0FDQStoQixFQUFBNXVCLEVBQUE0dUIsWUFDQSxLQUNBL2hCLEVBQUFsTyxLQUFBb3NFLG9C
QUFBVCxFQUFBNTlELEVBQUFDLEVBQUEzTSxFQUFBMkIsR0FDSyxNQUFBbEssR0FFTHVJLEVBQUE2
dUIsU0FBQUQsR0FDQWp3QixLQUFBa3FDLFVBQUFnaUMscUJBQUFwekUsR0FDQWtILEtBQUE0cUIs
cUJBQ0E1cUIsS0FBQWtxQyxVQUFBcUgsTUFBQXZ4QyxLQUFBc3NFLHFCQUFBdHNFLEtBQUFrcUMs
VUFBQTUvQixNQUFBdEssS0FBQWtxQyxVQUFBbG5DLFVBRUFpdEIsRUFBQTV1QixFQUFBNHVCLGFB
RUFqd0IsS0FBQTFELG1CQUFBK1Isa0JBQUEsR0FDQWhOLEVBQUE2dUIsU0FBQUQsR0FJQS9oQixF
QUFBbE8sS0FBQW9zRSxvQkFBQVQsRUFBQTU5RCxFQUFBQyxFQUFBM00sRUFBQTJCLEdBRUEsTUFB
QWtMLElBR0FrK0Qsb0JBQUEsU0FBQVQsRUFBQTU5RCxFQUFBQyxFQUFBM00sRUFBQTJCLEdBQ0Es
R0FBQXhHLEdBQUF3RCxLQUFBa3FDLFVBRUFxaUMsRUFBQSxDQUtBL3ZFLEdBQUEwd0QscUJBTUEx
d0QsRUFBQTB3RCxxQkFJQWx0RCxLQUFBNHFCLHFCQUNBcHVCLEVBQUErMEMsTUFBQXZ4QyxLQUFB
c3NFLHFCQUFBOXZFLEVBQUE4TixNQUFBOU4sRUFBQXdHLGVBS0E5SixLQUFBeXlFLElBQ0FBLEVB
QUEzckUsS0FBQXdzRSw0QkFHQSxJQUFBendFLEdBQUFzaUMsRUFBQUksUUFBQWt0QyxFQUNBM3JF
LE1BQUEwckMsa0JBQUEzdkMsQ0FDQSxJQUFBMmpDLEdBQUExL0IsS0FBQW8rQiwyQkFBQXV0QyxF
QUFBNXZFLElBQUFzaUMsRUFBQUcsTUFFQXgrQixNQUFBMUQsbUJBQUFvakMsQ0FFQSxJQUFBeHhC
LEdBQUE1TCxFQUFBdUwsZUFBQTZ4QixFQUFBcitCLEVBQUEwTSxFQUFBQyxFQUFBaE8sS0FBQXVx
QyxxQkFBQXZuQyxHQUFBdXBFLEVBU0EsT0FBQXIrRCxJQUdBRSxZQUFBLFdBQ0EsTUFBQTlMLEdB
QUE4TCxZQUFBcE8sS0FBQTFELHFCQVNBK1IsaUJBQUEsU0FBQUMsR0FDQSxHQUFBdE8sS0FBQTFE
LG1CQUFBLENBSUEsR0FBQUUsR0FBQXdELEtBQUFrcUMsU0FFQSxJQUFBMXRDLEVBQUF5MUMsdUJB
QUF6MUMsRUFBQWt2RSw0QkFHQSxHQUZBbHZFLEVBQUFrdkUsNkJBQUEsRUFFQXA5RCxFQUFBLENB
Q0EsR0FBQTdXLEdBQUF1SSxLQUFBbUMsVUFBQSx5QkFDQTRRLEdBQUFnUCxzQkFBQXRxQixFQUFB
K0UsRUFBQXkxQyxxQkFBQWxuQyxLQUFBdk8sUUFPQUEsR0FBQXkxQyxzQkFLQWp5QyxNQUFBMUQs
cUJBQ0FnRyxFQUFBK0wsaUJBQUFyTyxLQUFBMUQsbUJBQUFnUyxHQUNBdE8sS0FBQTByQyxrQkFB
QSxLQUNBMXJDLEtBQUExRCxtQkFBQSxLQUNBMEQsS0FBQWtxQyxVQUFBLE1BTUFscUMsS0FBQTRx
QixtQkFBQSxLQUNBNXFCLEtBQUE2cUIsc0JBQUEsRUFDQTdxQixLQUFBeXFCLHFCQUFBLEVBQ0F6
cUIsS0FBQTJCLGtCQUFBLEtBQ0EzQixLQUFBa3JCLGdCQUFBLEtBSUFsckIsS0FBQTJPLFNBQUEs
S0FDQTNPLEtBQUF3VCxZQUFBLEVBQ0F4VCxLQUFBa29DLGlCQUFBLEtBS0ExeUIsRUFBQUMsT0FB
QWpaLEtBaUJBaXdFLGFBQUEsU0FBQXpwRSxHQUNBLEdBQUFxRyxHQUFBckosS0FBQWdDLGdCQUFB
QyxLQUNBeXVDLEVBQUFybkMsRUFBQXFuQyxZQUNBLEtBQUFBLEVBQ0EsTUFBQTc2QixFQUVBLElB
QUE2MkQsS0FDQSxRQUFBQyxLQUFBajhCLEdBQ0FnOEIsRUFBQUMsR0FBQTNwRSxFQUFBMnBFLEVB
RUEsT0FBQUQsSUFXQVosZ0JBQUEsU0FBQTlvRSxHQUNBLEdBQUEwcEUsR0FBQTFzRSxLQUFBeXNF
LGFBQUF6cEUsRUFPQSxPQUFBMHBFLElBUUFuaUMscUJBQUEsU0FBQXFpQyxHQUNBLEdBRUFDLEdB
RkF4akUsRUFBQXJKLEtBQUFnQyxnQkFBQUMsS0FDQXpGLEVBQUF3RCxLQUFBa3FDLFNBZ0JBLElB
YkExdEMsRUFBQXExQyxrQkFTQWc3QixFQUFBcndFLEVBQUFxMUMsbUJBSUFnN0IsRUFBQSxDQUNB
LGlCQUFBeGpFLEdBQUF1bkMsbUJBQUFsekMsRUFBQSxNQUFBc0MsS0FBQW1DLFdBQUEsMEJBSUEs
UUFBQTFLLEtBQUFvMUUsR0FDQXAxRSxJQUFBNFIsR0FBQXVuQyxtQkFBQWx6QyxFQUFBLE1BQUFz
QyxLQUFBbUMsV0FBQSwwQkFBQTFLLEVBRUEsT0FBQTBMLE1BQXVCeXBFLEVBQUFDLEdBRXZCLE1B
QUFELElBV0FFLG1CQUFBLFNBQUF0aUIsRUFBQXJSLEVBQUFpRixLQU1BNXZDLGlCQUFBLFNBQUFD
LEVBQUFwTixFQUFBNHBCLEdBQ0EsR0FBQXZjLEdBQUExTyxLQUFBZ0MsZ0JBQ0ErcUUsRUFBQS9z
RSxLQUFBMk8sUUFFQTNPLE1BQUFrckIsZ0JBQUEsS0FFQWxyQixLQUFBb3RELGdCQUFBL3JELEVB
QUFxTixFQUFBRCxFQUFBcytELEVBQUE5aEQsSUFVQTFvQix5QkFBQSxTQUFBbEIsR0FDQSxNQUFB
ckIsS0FBQWtyQixnQkFDQTVvQixFQUFBa00saUJBQUF4TyxVQUFBa3JCLGdCQUFBN3BCLEVBQUFy
QixLQUFBMk8sVUFDSyxPQUFBM08sS0FBQTRxQixvQkFBQTVxQixLQUFBeXFCLG9CQUNMenFCLEtB
QUFvdEQsZ0JBQUEvckQsRUFBQXJCLEtBQUFnQyxnQkFBQWhDLEtBQUFnQyxnQkFBQWhDLEtBQUEy
TyxTQUFBM08sS0FBQTJPLFVBRUEzTyxLQUFBOEMsbUJBQUEsTUFtQkFzcUQsZ0JBQUEsU0FBQS9y
RCxFQUFBMnJFLEVBQUFDLEVBQUFDLEVBQUFDLEdBQ0EsR0FBQTN3RSxHQUFBd0QsS0FBQWtxQyxT
QUNBLE9BQUExdEMsR0FBQWtCLEVBQUEsTUFBQXNDLEtBQUFtQyxXQUFBLDBCQUVBLElBQ0E4b0Is
R0FEQW1pRCxHQUFBLENBSUFwdEUsTUFBQTJPLFdBQUF3K0QsRUFDQWxpRCxFQUFBenVCLEVBQUF3
RyxTQUVBaW9CLEVBQUFqckIsS0FBQThyRSxnQkFBQXFCLEdBQ0FDLEdBQUEsRUFHQSxJQUFBQyxH
QUFBTCxFQUFBMWlFLE1BQ0FnbEMsRUFBQTI5QixFQUFBM2lFLEtBR0EwaUUsS0FBQUMsSUFDQUcs
R0FBQSxHQU1BQSxHQUFBNXdFLEVBQUF3MUMsMkJBTUF4MUMsRUFBQXcxQywwQkFBQTFDLEVBQUFy
a0IsRUFJQSxJQUFBcWlELEdBQUF0dEUsS0FBQXNzRSxxQkFBQWg5QixFQUFBcmtCLEdBQ0FzaUQs
R0FBQSxDQUVBdnRFLE1BQUF5cUIsc0JBQ0FqdUIsRUFBQSt5QyxzQkFNQWcrQixFQUFBL3dFLEVB
QUEreUMsc0JBQUFELEVBQUFnK0IsRUFBQXJpRCxHQUdBanJCLEtBQUF5ckUsaUJBQUFMLEVBQUFF
LFlBQ0FpQyxHQUFBNWtELEVBQUEwa0QsRUFBQS85QixLQUFBM21CLEVBQUFuc0IsRUFBQSswQyxN
QUFBKzdCLEtBU0F0dEUsS0FBQThDLG1CQUFBLEtBQ0F5cUUsR0FDQXZ0RSxLQUFBeXFCLHFCQUFB
LEVBRUF6cUIsS0FBQXd0RSx3QkFBQVAsRUFBQTM5QixFQUFBZytCLEVBQUFyaUQsRUFBQTVwQixF
QUFBOHJFLEtBSUFudEUsS0FBQWdDLGdCQUFBaXJFLEVBQ0FqdEUsS0FBQTJPLFNBQUF3K0QsRUFD
QTN3RSxFQUFBOE4sTUFBQWdsQyxFQUNBOXlDLEVBQUErMEMsTUFBQSs3QixFQUNBOXdFLEVBQUF3
RyxRQUFBaW9CLElBSUFxaEQscUJBQUEsU0FBQWhpRSxFQUFBdEgsR0FDQSxHQUFBeEcsR0FBQXdE
LEtBQUFrcUMsVUFDQTVsQyxFQUFBdEUsS0FBQTRxQixtQkFDQXR4QixFQUFBMEcsS0FBQTZxQixv
QkFJQSxJQUhBN3FCLEtBQUE2cUIsc0JBQUEsRUFDQTdxQixLQUFBNHFCLG1CQUFBLE1BRUF0bUIs
RUFDQSxNQUFBOUgsR0FBQSswQyxLQUdBLElBQUFqNEMsR0FBQSxJQUFBZ0wsRUFBQXhLLE9BQ0Es
TUFBQXdLLEdBQUEsRUFJQSxRQURBZ3BFLEdBQUFucUUsS0FBOEI3SixFQUFBZ0wsRUFBQSxHQUFB
OUgsRUFBQSswQyxPQUM5QnA2QyxFQUFBbUMsRUFBQSxJQUFpQ25DLEVBQUFtTixFQUFBeEssT0FB
a0IzQyxJQUFBLENBQ25ELEdBQUFzMkUsR0FBQW5wRSxFQUFBbk4sRUFDQWdNLEdBQUFtcUUsRUFB
QSxtQkFBQUcsS0FBQXAyRSxLQUFBbUYsRUFBQTh3RSxFQUFBaGpFLEVBQUF0SCxHQUFBeXFFLEdB
R0EsTUFBQUgsSUFlQUUsd0JBQUEsU0FBQS8rRCxFQUFBNmdDLEVBQUFnK0IsRUFBQXJpRCxFQUFB
NXBCLEVBQUFxc0UsR0FDQSxHQUtBTCxHQUNBTSxFQUNBWixFQUxBdndFLEVBQUF3RCxLQUFBa3FD
LFVBRUEwakMsRUFBQWgwQyxRQUFBcDlCLEVBQUErMUMsbUJBSUFxN0IsS0FDQVAsRUFBQTd3RSxF
QUFBOE4sTUFDQXFqRSxFQUFBbnhFLEVBQUErMEMsTUFDQXc3QixFQUFBdndFLEVBQUF3RyxTQUdB
eEcsRUFBQTJ3RCxxQkFNQTN3RCxFQUFBMndELG9CQUFBN2QsRUFBQWcrQixFQUFBcmlELEdBSUFq
ckIsS0FBQWdDLGdCQUFBeU0sRUFDQXpPLEtBQUEyTyxTQUFBKytELEVBQ0FseEUsRUFBQThOLE1B
QUFnbEMsRUFDQTl5QyxFQUFBKzBDLE1BQUErN0IsRUFDQTl3RSxFQUFBd0csUUFBQWlvQixFQUVB
anJCLEtBQUE2dEUseUJBQUF4c0UsRUFBQXFzRSxHQUVBRSxHQU1BdnNFLEVBQUE4TSxxQkFBQXpM
LFFBQUFsRyxFQUFBKzFDLG1CQUFBeG5DLEtBQUF2TyxFQUFBNndFLEVBQUFNLEVBQUFaLEdBQUF2
d0UsSUFXQXF4RSx5QkFBQSxTQUFBeHNFLEVBQUEyQixHQUNBLEdBQUE4cUUsR0FBQTl0RSxLQUFB
MUQsbUJBQ0F5eEUsRUFBQUQsRUFBQTlyRSxnQkFDQWdzRSxFQUFBaHVFLEtBQUF3c0UsNEJBRUFE
LEVBQUEsQ0FLQSxJQUFBdmpELEVBQUEra0QsRUFBQUMsR0FDQTFyRSxFQUFBa00saUJBQUFzL0Qs
RUFBQUUsRUFBQTNzRSxFQUFBckIsS0FBQXVxQyxxQkFBQXZuQyxRQUNLLENBQ0wsR0FBQWlyRSxH
QUFBM3JFLEVBQUE4TCxZQUFBMC9ELEVBQ0F4ckUsR0FBQStMLGlCQUFBeS9ELEdBQUEsRUFFQSxJ
QUFBL3hFLEdBQUFzaUMsRUFBQUksUUFBQXV2QyxFQUNBaHVFLE1BQUEwckMsa0JBQUEzdkMsQ0FD
QSxJQUFBMmpDLEdBQUExL0IsS0FBQW8rQiwyQkFBQTR2QyxFQUFBanlFLElBQUFzaUMsRUFBQUcs
TUFFQXgrQixNQUFBMUQsbUJBQUFvakMsQ0FFQSxJQUFBb3FDLEdBQUF4bkUsRUFBQXVMLGVBQUE2
eEIsRUFBQXIrQixFQUFBckIsS0FBQTdCLFlBQUE2QixLQUFBbXBDLG1CQUFBbnBDLEtBQUF1cUMs
cUJBQUF2bkMsR0FBQXVwRSxFQVNBdnNFLE1BQUFrdUUsdUJBQUFELEVBQUFuRSxFQUFBZ0UsS0FT
QUksdUJBQUEsU0FBQUQsRUFBQW5FLEVBQUFxRSxHQUNBL2xELEVBQUFDLHNCQUFBNGxELEVBQUFu
RSxFQUFBcUUsSUFNQUMsK0NBQUEsV0FDQSxHQUFBNXhFLEdBQUF3RCxLQUFBa3FDLFNBb0JBLE9B
WkExdEMsR0FBQWt0QyxVQWtCQThpQywwQkFBQSxXQUNBLEdBQUFiLEVBQ0EsSUFBQTNyRSxLQUFB
eXJFLGlCQUFBTCxFQUFBRyxvQkFBQSxDQUNBMW1FLEVBQUFDLFFBQUE5RSxJQUNBLEtBQ0EyckUs
RUFBQTNyRSxLQUFBb3VFLGlEQUNPLFFBQ1B2cEUsRUFBQUMsUUFBQSxVQUdBNm1FLEdBQUEzckUs
S0FBQW91RSxnREFNQSxPQUZBLFFBQUF6QyxJQUFBLElBQUFBLEdBQUEzaUUsRUFBQU8sZUFBQW9p
RSxJQUFBanVFLEVBQUEsTUFBQXNDLEtBQUFtQyxXQUFBLDJCQUVBd3BFLEdBV0E5VSxVQUFBLFNB
QUEvc0QsRUFBQTFOLEdBQ0EsR0FBQUksR0FBQXdELEtBQUEyQyxtQkFDQSxPQUFBbkcsR0FBQWtC
LEVBQUEsTUFDQSxJQUFBMndFLEdBQUFqeUUsRUFBQXVHLHFCQUtBbkcsRUFBQW15QixPQUFBOVks
RUFBQXJaLEVBQUFteUIsUUFBeURueUIsRUFBQW15QixNQUN6RDdrQixHQUFBdWtFLEdBVUFyWCxV
QUFBLFNBQUFsdEQsU0FDQTlKLE1BQUEyQyxvQkFBQWdzQixLQUNBN2tCLElBU0EzSCxRQUFBLFdB
Q0EsR0FBQUYsR0FBQWpDLEtBQUFnQyxnQkFBQUMsS0FDQXFELEVBQUF0RixLQUFBa3FDLFdBQUFs
cUMsS0FBQWtxQyxVQUFBNWtDLFdBQ0EsT0FBQXJELEdBQUE4bkIsYUFBQXprQixLQUFBeWtCLGFB
QUE5bkIsRUFBQXhLLE1BQUE2TixLQUFBN04sTUFBQSxNQVdBa0wsa0JBQUEsV0FDQSxHQUFBbkcs
R0FBQXdELEtBQUFrcUMsU0FDQSxPQUFBbHFDLE1BQUF5ckUsaUJBQUFMLEVBQUFHLG9CQUNBLEtB
RUEvdUUsR0FJQTRoQywyQkFBQSxLQUdBbG5DLEdBQUFELFFBQUFpbkMsR3pKa3RsQk0sU0FBVWhu
QyxFQUFRRCxFQUFTSCxHQUVqQyxZMEp2a25CQSxTQUFBdzNFLEtBQ0EsTUFBQUMsS0FIQSxHQUFB
QSxHQUFBLENBTUFyM0UsR0FBQUQsUUFBQXEzRSxHMUoybG5CTSxTQUFVcDNFLEVBQVFELEVBQVNI
LEdBRWpDLFkySmhtbkJBLElBQUFrVCxHQUFBLG1CQUFBb2xCLGdCQUFBLEtBQUFBLE9BQUEsMkJB
RUFsNEIsR0FBQUQsUUFBQStTLEczSnFubkJNLFNBQVU5UyxFQUFRRCxFQUFTSCxHQUVqQyxZNEp6
bW5CQSxTQUFBa3BDLEdBQUFpaEIsR0FDQSxHQUFBbGhCLEdBQUFraEIsSUFBQUMsR0FBQUQsRUFB
QUMsSUFBQUQsRUFBQUUsR0FDQSx1QkFBQXBoQixHQUNBLE1BQUFBLEdBcEJBLEdBQUFtaEIsR0FB
QSxtQkFBQTl4QixnQkFBQThRLFNBQ0FpaEIsRUFBQSxZQXVCQWpxRCxHQUFBRCxRQUFBK29DLEc1
SjhvbkJNLFNBQVU5b0MsRUFBUUQsRUFBU0gsR0FFakMsYzZKdnJuQkEsU0FBQWtsQyxHQWtDQSxR
QUFBd3lDLEdBQUFodkMsRUFBQUUsRUFBQWpvQyxFQUFBb3lFLEdBRUEsR0FBQXJxQyxHQUFBLGlC
QUFBQSxHQUFBLENBQ0EsR0FBQTRhLEdBQUE1YSxFQUNBa3JDLE1BQUF4eEUsS0FBQWtoRCxFQUFB
M2lELEVBU0FpekUsSUFBQSxNQUFBaHJDLElBQ0EwYSxFQUFBM2lELEdBQUFpb0MsSUFVQSxRQUFB
Nm9DLEdBQUF0ckUsRUFBQTRzRSxHQUNBLFNBQUE1c0UsRUFDQSxNQUFBQSxFQUVBLElBQUFtOUMs
S0FTQSxPQUZBNVosR0FBQXZqQyxFQUFBdXhFLEVBQUFwMEIsR0FFQUEsRUExREEsR0FDQTVaLElB
REExcEMsRUFBQSxJQUNBQSxFQUFBLElBQ0FBLEdBQUEsRUFJQSxxQkFBQWtsQyxJQUFBcGtDLFFB
QUEreUUsU0FBQSxhQUFBQyxXQUFBLE1BdURBMXpFLEVBQUFELFFBQUFzeEUsSTdKeXJuQjZCbHhF
LEtBQUtKLEVBQVNILEVBQW9CLE1BSXpELFNBQVVJLEVBQVFELEVBQVNILEdBRWpDLFk4Smh1bkJB
LFNBQUEwcEUsR0FBQW1ELEdBQ0EzakUsS0FBQVEsMEJBQ0FSLEtBQUEyakUsdUJBQ0EzakUsS0FB
QXdvQyxrQkFBQSxFQUNBeG9DLEtBQUFvcEUsWUFBQSxHQUFBcUYsR0FBQXp1RSxNQWpDQSxHQUFB
bUQsR0FBQXJNLEVBQUEsR0FFQXNNLEVBQUF0TSxFQUFBLElBQ0F1TSxFQUFBdk0sRUFBQSxJQUVB
MjNFLEdBREEzM0UsRUFBQSxHQUNBQSxFQUFBLE1BT0FnTixLQVNBNHFFLEdBQ0Foc0UsUUFBQSxj
QWNBaWdFLEdBT0E1K0QsdUJBQUEsV0FDQSxNQUFBRCxJQU1BcUssbUJBQUEsV0FDQSxNQUFBdWdF
LElBTUEzQyxlQUFBLFdBQ0EsTUFBQS9yRSxNQUFBb3BFLGFBT0FwbEUsV0FBQSxhQUVBaXNCLFdB
QUEsYUFFQUMsU0FBQSxhQUdBL3NCLEdBQUFxOUQsRUFBQW5vRSxVQUFBZ0wsRUFBQXMvRCxHQUVB
di9ELEVBQUFpQixhQUFBbThELEdBRUF0cEUsRUFBQUQsUUFBQXVwRSxHOUo4d25CTSxTQUFVdHBF
LEVBQVFELEVBQVNILEdBRWpDLFkrSjMxbkJBLFNBQUE2NEIsR0FBQXJvQixFQUFBc29CLEdBQWlE
LEtBQUF0b0IsWUFBQXNvQixJQUEwQyxTQUFBeDFCLFdBQUEscUNBRTNGLEdBQUErdkIsR0FBQXJ6
QixFQUFBLElBbUJBMjNFLEdBakJBMzNFLEVBQUEsR0FpQkEsV0FDQSxRQUFBMjNFLEdBQUFwdEUs
R0FDQXN1QixFQUFBM3ZCLEtBQUF5dUUsR0FFQXp1RSxLQUFBcUIsY0FnR0EsTUFwRkFvdEUsR0FB
QXAyRSxVQUFBK3hCLFVBQUEsU0FBQUgsR0FDQSxVQWFBd2tELEVBQUFwMkUsVUFBQWd5QixnQkFB
QSxTQUFBSixFQUFBbHBCLEVBQUFtcEIsR0FDQWxxQixLQUFBcUIsWUFBQThVLG1CQUNBZ1UsRUFB
QUUsZ0JBQUFKLEVBQUFscEIsRUFBQW1wQixJQW1CQXVrRCxFQUFBcDJFLFVBQUFteUIsbUJBQUEs
U0FBQVAsR0FDQWpxQixLQUFBcUIsWUFBQThVLG1CQUNBZ1UsRUFBQUssbUJBQUFQLElBbUJBd2tE
LEVBQUFwMkUsVUFBQXF5QixvQkFBQSxTQUFBVCxFQUFBVSxHQUNBM3FCLEtBQUFxQixZQUFBOFUs
bUJBQ0FnVSxFQUFBTyxvQkFBQVQsRUFBQVUsSUFrQkE4akQsRUFBQXAyRSxVQUFBeXlCLGdCQUFB
LFNBQUFiLEVBQUFjLEdBQ0EvcUIsS0FBQXFCLFlBQUE4VSxtQkFDQWdVLEVBQUFXLGdCQUFBYixF
QUFBYyxJQU1BMGpELEtBR0F2M0UsR0FBQUQsUUFBQXczRSxHL0o2Mm5CTSxTQUFVdjNFLEVBQVFE
LEVBQVNILEdBRWpDLFlnSzUrbkJBLElBQUFxTSxHQUFBck0sRUFBQSxHQUVBbVosRUFBQW5aLEVB
QUEsSUFDQTZILEVBQUE3SCxFQUFBLEdBRUFvNEQsRUFBQSxTQUFBcndCLEdBRUE3K0IsS0FBQWdD
LGdCQUFBLEtBRUFoQyxLQUFBdEQsVUFBQSxLQUNBc0QsS0FBQTdCLFlBQUEsS0FDQTZCLEtBQUFt
cEMsbUJBQUEsS0FDQW5wQyxLQUFBeEMsT0FBQSxFQUVBMkYsR0FBQStyRCxFQUFBNzJELFdBQ0F3
VixlQUFBLFNBQUF4TSxFQUFBME0sRUFBQUMsRUFBQWhMLEdBQ0EsR0FBQTJyRSxHQUFBM2dFLEVB
QUE0MEQsWUFDQTVpRSxNQUFBeEMsT0FBQW14RSxFQUNBM3VFLEtBQUE3QixZQUFBNFAsRUFDQS9O
LEtBQUFtcEMsbUJBQUFuN0IsQ0FFQSxJQUFBOVIsR0FBQSxpQkFBQThELEtBQUF4QyxPQUFBLEdB
Q0EsSUFBQTZELEVBQUFtbkMsaUJBQUEsQ0FDQSxHQUFBcHpCLEdBQUFwSCxFQUFBNnlELGVBQ0Fo
bEUsRUFBQXVaLEVBQUF3NUQsY0FBQTF5RSxFQUVBLE9BREF5QyxHQUFBcEMsYUFBQXlELEtBQUFu
RSxHQUNBb1UsRUFBQXBVLEdBRUEsTUFBQXdGLEdBQUFzaUUscUJBSUEsR0FFQSxVQUFBem5FLEVB
QUEsVUFHQXNTLGlCQUFBLGFBQ0FKLFlBQUEsV0FDQSxNQUFBelAsR0FBQVQsb0JBQUE4QixPQUVB
cU8saUJBQUEsV0FDQTFQLEVBQUEvQixZQUFBb0QsU0FJQTlJLEVBQUFELFFBQUFpNEQsR2hLNi9u
Qk0sU0FBVWg0RCxFQUFRRCxFQUFTSCxHQUVqQyxZaUtyaW9CQSxTQUFBa3NCLEdBQUE2ckQsRUFB
QUMsR0FDQSxhQUFBRCxJQUFBbnhFLEVBQUEsTUFDQSxhQUFBb3hFLElBQUFweEUsRUFBQSxLQUdB
LFFBREFxeEUsR0FBQSxFQUNBQyxFQUFBSCxFQUF5QkcsRUFBT0EsSUFBQTd3RSxZQUNoQzR3RSxH
QUdBLFFBREFFLEdBQUEsRUFDQUMsRUFBQUosRUFBeUJJLEVBQU9BLElBQUEvd0UsWUFDaEM4d0Us
R0FJQSxNQUFBRixFQUFBRSxFQUFBLEdBQ0FKLElBQUExd0UsWUFDQTR3RSxHQUlBLE1BQUFFLEVB
QUFGLEVBQUEsR0FDQUQsSUFBQTN3RSxZQUNBOHdFLEdBS0EsS0FEQSxHQUFBRSxHQUFBSixFQUNB
SSxLQUFBLENBQ0EsR0FBQU4sSUFBQUMsRUFDQSxNQUFBRCxFQUVBQSxLQUFBMXdFLFlBQ0Eyd0Us
SUFBQTN3RSxZQUVBLFlBTUEsUUFBQTRrQixHQUFBOHJELEVBQUFDLEdBQ0EsYUFBQUQsSUFBQW54
RSxFQUFBLE1BQ0EsYUFBQW94RSxJQUFBcHhFLEVBQUEsS0FFQSxNQUFBb3hFLEdBQUEsQ0FDQSxH
QUFBQSxJQUFBRCxFQUNBLFFBRUFDLEtBQUEzd0UsWUFFQSxTQU1BLFFBQUF3VCxHQUFBblYsR0FH
QSxNQUZBLGFBQUFBLElBQUFrQixFQUFBLE1BRUFsQixFQUFBMkIsWUFNQSxRQUFBcVQsR0FBQWhW
LEVBQUF5bUIsRUFBQXZqQixHQUVBLElBREEsR0FBQThuRCxNQUNBaHJELEdBQ0FnckQsRUFBQTNw
RCxLQUFBckIsR0FDQUEsSUFBQTJCLFdBRUEsSUFBQWhILEVBQ0EsS0FBQUEsRUFBQXF3RCxFQUFB
MXRELE9BQXVCM0MsS0FBQSxHQUN2QjhyQixFQUFBdWtDLEVBQUFyd0QsR0FBQSxXQUFBdUksRUFF
QSxLQUFBdkksRUFBQSxFQUFhQSxFQUFBcXdELEVBQUExdEQsT0FBaUIzQyxJQUM5QjhyQixFQUFB
dWtDLEVBQUFyd0QsR0FBQSxVQUFBdUksR0FXQSxRQUFBNFMsR0FBQTlXLEVBQUFFLEVBQUF1bkIs
RUFBQUMsRUFBQUMsR0FHQSxJQUZBLEdBQUFpc0QsR0FBQTV6RSxHQUFBRSxFQUFBc25CLEVBQUF4
bkIsRUFBQUUsR0FBQSxLQUNBMnpFLEtBQ0E3ekUsT0FBQTR6RSxHQUNBQyxFQUFBeHhFLEtBQUFy
QyxHQUNBQSxJQUFBMkMsV0FHQSxLQURBLEdBQUFteEUsTUFDQTV6RSxPQUFBMHpFLEdBQ0FFLEVB
QUF6eEUsS0FBQW5DLEdBQ0FBLElBQUF5QyxXQUVBLElBQUFoSCxFQUNBLEtBQUFBLEVBQUEsRUFB
YUEsRUFBQWs0RSxFQUFBdjFFLE9BQXFCM0MsSUFDbEM4ckIsRUFBQW9zRCxFQUFBbDRFLEdBQUEs
VUFBQStyQixFQUVBLEtBQUEvckIsRUFBQW00RSxFQUFBeDFFLE9BQXlCM0MsS0FBQSxHQUN6Qjhy
QixFQUFBcXNELEVBQUFuNEUsR0FBQSxXQUFBZ3NCLEdBaEhBLEdBQUF6bEIsR0FBQTVHLEVBQUEs
RUFFQUEsR0FBQSxFQWtIQUksR0FBQUQsU0FDQThyQixhQUNBQywwQkFDQXJSLG9CQUNBSCxtQkFD
QWMsdUJqSytqb0JNLFNBQVVwYixFQUFRRCxFQUFTSCxHQUVqQyxZa0sxcm9CQSxJQUFBNEcsR0FB
QTVHLEVBQUEsR0FDQXFNLEVBQUFyTSxFQUFBLEdBRUEwdUIsRUFBQTF1QixFQUFBLElBQ0FtWixF
QUFBblosRUFBQSxJQUNBNkgsRUFBQTdILEVBQUEsR0FFQTBpQixFQUFBMWlCLEVBQUEsSUFtQkEr
M0QsR0FsQkEvM0QsRUFBQSxHQUNBQSxFQUFBLElBaUJBLFNBQUFzWSxHQUVBcFAsS0FBQWdDLGdC
QUFBb04sRUFDQXBQLEtBQUF1dkUsWUFBQSxHQUFBbmdFLEVBRUFwUCxLQUFBdEQsVUFBQSxLQUNB
c0QsS0FBQTdCLFlBQUEsS0FHQTZCLEtBQUF4QyxPQUFBLEVBQ0F3QyxLQUFBZytCLFlBQUEsRUFD
QWgrQixLQUFBd3ZFLGdCQUFBLEtBQ0F4dkUsS0FBQXl2RSxjQUFBLE1BR0F0c0UsR0FBQTByRCxF
QUFBeDJELFdBU0F3VixlQUFBLFNBQUF4TSxFQUFBME0sRUFBQUMsRUFBQWhMLEdBRUEsR0FhQTJy
RSxHQUFBM2dFLEVBQUE0MEQsYUFDQThNLEVBQUEsZ0JBQUFmLEVBQUEsR0FJQSxJQUZBM3VFLEtB
QUF4QyxPQUFBbXhFLEVBQ0EzdUUsS0FBQTdCLFlBQUE0UCxFQUNBMU0sRUFBQW1uQyxpQkFBQSxD
QUNBLEdBQUFwekIsR0FBQXBILEVBQUE2eUQsZUFDQTk3QyxFQUFBM1AsRUFBQXc1RCxjQUFBYyxH
QUNBN3FELEVBQUF6UCxFQUFBdzVELGNBTkEsaUJBT0ExTCxFQUFBanpELEVBQUFtRixFQUFBdTZE
LHlCQVFBLE9BUEExL0QsR0FBQVAsV0FBQXd6RCxFQUFBanpELEVBQUE4VSxJQUNBL2tCLEtBQUF1
dkUsYUFDQXQvRCxFQUFBUCxXQUFBd3pELEVBQUFqekQsRUFBQW1GLEVBQUFpUSxlQUFBcmxCLEtB
QUF1dkUsZUFFQXQvRCxFQUFBUCxXQUFBd3pELEVBQUFqekQsRUFBQTRVLElBQ0FsbUIsRUFBQXBD
LGFBQUF5RCxLQUFBK2tCLEdBQ0Eva0IsS0FBQXd2RSxnQkFBQTNxRCxFQUNBcStDLEVBRUEsR0FB
QTBNLEdBQUFwMkQsRUFBQXhaLEtBQUF1dkUsWUFFQSxPQUFBbHVFLEdBQUFzaUUscUJBSUFpTSxF
QUdBLFVBQUFGLEVBQUEsU0FBQUUsRUFBQSw4QkFXQXBoRSxpQkFBQSxTQUFBcWhFLEVBQUF4dUUs
R0FDQSxHQUFBd3VFLElBQUE3dkUsS0FBQWdDLGdCQUFBLENBQ0FoQyxLQUFBZ0MsZ0JBQUE2dEUs
Q0FDQSxJQUFBQyxHQUFBLEdBQUFELENBQ0EsSUFBQUMsSUFBQTl2RSxLQUFBdXZFLFlBQUEsQ0FJ
QXZ2RSxLQUFBdXZFLFlBQUFPLENBQ0EsSUFBQUMsR0FBQS92RSxLQUFBb08sYUFDQW9YLEdBQUFO
LHFCQUFBNnFELEVBQUEsR0FBQUEsRUFBQSxHQUFBRCxNQUtBMWhFLFlBQUEsV0FDQSxHQUFBNGhF
LEdBQUFod0UsS0FBQXl2RSxhQUNBLElBQUFPLEVBQ0EsTUFBQUEsRUFFQSxLQUFBaHdFLEtBQUF3
dkUsZ0JBR0EsSUFGQSxHQUFBenFELEdBQUFwbUIsRUFBQVQsb0JBQUE4QixNQUNBbkUsRUFBQWtw
QixFQUFBdG5CLGNBQ0EsQ0FFQSxHQURBLE1BQUE1QixHQUFBNkIsRUFBQSxLQUFBc0MsS0FBQXhD
LFFBQ0EsSUFBQTNCLEVBQUFFLFVBQUEsa0JBQUFGLEVBQUFLLFVBQUEsQ0FDQThELEtBQUF3dkUs
Z0JBQUEzekUsQ0FDQSxPQUVBQSxJQUFBNEIsWUFLQSxNQUZBdXlFLElBQUFod0UsS0FBQXRELFVB
QUFzRCxLQUFBd3ZFLGlCQUNBeHZFLEtBQUF5dkUsY0FBQU8sRUFDQUEsR0FHQTNoRSxpQkFBQSxX
QUNBck8sS0FBQXd2RSxnQkFBQSxLQUNBeHZFLEtBQUF5dkUsY0FBQSxLQUNBOXdFLEVBQUEvQixZ
QUFBb0QsU0FJQTlJLEVBQUFELFFBQUE0M0QsR2xLMnNvQk0sU0FBVTMzRCxFQUFRRCxFQUFTSCxH
QUVqQyxZbUs1MG9CQSxTQUFBbTVFLEtBQ0Fqd0UsS0FBQVEsMEJBdEJBLEdBQUEyQyxHQUFBck0s
RUFBQSxHQUVBc0osRUFBQXRKLEVBQUEsR0FDQXVNLEVBQUF2TSxFQUFBLElBRUEwQyxFQUFBMUMs
RUFBQSxHQUVBbzVFLEdBQ0Ezc0UsV0FBQS9KLEVBQ0FnSyxNQUFBLFdBQ0E0ckQsRUFBQXZzRCxt
QkFBQSxJQUlBc3RFLEdBQ0E1c0UsV0FBQS9KLEVBQ0FnSyxNQUFBcEQsRUFBQXNELG9CQUFBcUgs
S0FBQTNLLElBR0EwRCxHQUFBcXNFLEVBQUFELEVBTUEvc0UsR0FBQThzRSxFQUFBNTNFLFVBQUFn
TCxHQUNBVSx1QkFBQSxXQUNBLE1BQUFELEtBSUEsSUFBQXpDLEdBQUEsR0FBQTR1RSxHQUVBN2dC
LEdBQ0F2c0QsbUJBQUEsRUFNQS9CLGVBQUEsU0FBQUMsRUFBQW5JLEVBQUFDLEVBQUF0QixFQUFB
QyxFQUFBc0IsR0FDQSxHQUFBczNFLEdBQUFoaEIsRUFBQXZzRCxpQkFLQSxPQUhBdXNELEdBQUF2
c0QsbUJBQUEsRUFHQXV0RSxFQUNBcnZFLEVBQUFuSSxFQUFBQyxFQUFBdEIsRUFBQUMsRUFBQXNC
LEdBRUF1SSxFQUFBNkMsUUFBQW5ELEVBQUEsS0FBQW5JLEVBQUFDLEVBQUF0QixFQUFBQyxFQUFB
c0IsSUFLQTVCLEdBQUFELFFBQUFtNEQsR25LazNvQk0sU0FBVWw0RCxFQUFRRCxFQUFTSCxHQUVq
QyxZb0sxNW9CQSxTQUFBdTVFLEdBQUE3ekUsR0FJQSxLQUFBQSxFQUFBMkIsYUFDQTNCLElBQUEy
QixXQUVBLElBQUEwcEUsR0FBQWxwRSxFQUFBVCxvQkFBQTFCLEdBQ0FrckMsRUFBQW1nQyxFQUFB
L3BFLFVBQ0EsT0FBQWEsR0FBQWhCLDJCQUFBK3BDLEdBSUEsUUFBQTRvQyxHQUFBbDhELEVBQUFs
UCxHQUNBbEYsS0FBQW9VLGVBQ0FwVSxLQUFBa0YsY0FDQWxGLEtBQUF1d0UsYUFXQSxRQUFBQyxH
QUFBdndCLEdBQ0EsR0FBQTk2QyxHQUFBNlAsRUFBQWlyQyxFQUFBLzZDLGFBQ0FELEVBQUF0RyxF
QUFBaEIsMkJBQUF3SCxHQU1Bc3JFLEVBQUF4ckUsQ0FDQSxJQUNBZzdDLEVBQUFzd0IsVUFBQTF5
RSxLQUFBNHlFLEdBQ0FBLEtBQUFKLEVBQUFJLFNBQ0dBLEVBRUgsUUFBQXQ1RSxHQUFBLEVBQWlC
QSxFQUFBOG9ELEVBQUFzd0IsVUFBQXoyRSxPQUFrQzNDLElBQ25EOE4sRUFBQWc3QyxFQUFBc3dC
LFVBQUFwNUUsR0FDQWtuQixFQUFBcXlELGdCQUFBendCLEVBQUE3ckMsYUFBQW5QLEVBQUFnN0Ms
RUFBQS82QyxZQUFBOFAsRUFBQWlyQyxFQUFBLzZDLGNBSUEsUUFBQXlyRSxHQUFBMWlELEdBRUFB
LEVBREEyaUQsRUFBQS94RSxTQWhFQSxHQUFBc0UsR0FBQXJNLEVBQUEsR0FFQTZ0QyxFQUFBN3RD
LEVBQUEsSUFDQWtJLEVBQUFsSSxFQUFBLEdBQ0FzTSxFQUFBdE0sRUFBQSxJQUNBNkgsRUFBQTdI
LEVBQUEsR0FDQXNKLEVBQUF0SixFQUFBLEdBRUFrZSxFQUFBbGUsRUFBQSxJQUNBODVFLEVBQUE5
NUUsRUFBQSxJQXlCQXFNLEdBQUFtdEUsRUFBQWo0RSxXQUNBMkwsV0FBQSxXQUNBaEUsS0FBQW9V
LGFBQUEsS0FDQXBVLEtBQUFrRixZQUFBLEtBQ0FsRixLQUFBdXdFLFVBQUF6MkUsT0FBQSxLQUdB
c0osRUFBQWlCLGFBQUFpc0UsRUFBQWx0RSxFQUFBbUUsa0JBMkJBLElBQUE4VyxJQUNBd3lELFVB
QUEsRUFDQUgsZ0JBQUEsS0FFQXR4RCxjQUFBcGdCLEVBQUFKLFVBQUFDLE9BQUEsS0FFQTBmLGtC
QUFBLFNBQUFDLEdBQ0FILEVBQUFxeUQsZ0JBQUFseUQsR0FHQUMsV0FBQSxTQUFBQyxHQUNBTCxF
QUFBd3lELFdBQUFueUQsR0FHQUMsVUFBQSxXQUNBLE1BQUFOLEdBQUF3eUQsVUFhQTN4RCxpQkFB
QSxTQUFBOUssRUFBQWlMLEVBQUE5VSxHQUNBLE1BQUFBLEdBR0FvNkIsRUFBQUMsT0FBQXI2QixF
QUFBOFUsRUFBQWhCLEVBQUF5eUQsY0FBQS9sRSxLQUFBLEtBQUFxSixJQUZBLE1BZUErSyxrQkFB
QSxTQUFBL0ssRUFBQWlMLEVBQUE5VSxHQUNBLE1BQUFBLEdBR0FvNkIsRUFBQWxoQixRQUFBbFos
RUFBQThVLEVBQUFoQixFQUFBeXlELGNBQUEvbEUsS0FBQSxLQUFBcUosSUFGQSxNQUtBeUwsbUJB
QUEsU0FBQUYsR0FDQSxHQUFBNWUsR0FBQTR2RSxFQUFBNWxFLEtBQUEsS0FBQTRVLEVBQ0FnbEIs
R0FBQUMsT0FBQS9sQyxPQUFBLFNBQUFrQyxJQUdBK3ZFLGNBQUEsU0FBQTE4RCxFQUFBbFAsR0FD
QSxHQUFBbVosRUFBQXd5RCxTQUFBLENBSUEsR0FBQTV3QixHQUFBcXdCLEVBQUExdkUsVUFBQXdU
LEVBQUFsUCxFQUNBLEtBR0E5RSxFQUFBVSxlQUFBMHZFLEVBQUF2d0IsR0FDSyxRQUNMcXdCLEVB
QUFyc0UsUUFBQWc4QyxNQUtBL29ELEdBQUFELFFBQUFvbkIsR3BLMjdvQk0sU0FBVW5uQixFQUFR
RCxFQUFTSCxHQUVqQyxZcUs5anBCQSxTQUFBODVFLEdBQUFHLEdBQ0EsTUFBQUEsR0FBQUMsUUFB
QUQsZUFBQUMsUUFFQTN0RCxFQUFBMHRELEVBQUFFLGFBQUFGLEVBQUFqeUUsU0FBQTR3QixnQkFB
QXdoRCxXQUNBeG9ELEVBQUFxb0QsRUFBQUksYUFBQUosRUFBQWp5RSxTQUFBNHdCLGdCQUFBMGhE
LFlBSUEvdEQsRUFBQTB0RCxFQUFBRyxXQUNBeG9ELEVBQUFxb0QsRUFBQUssV0FJQWw2RSxFQUFB
RCxRQUFBMjVFLEdySzJscEJNLFNBQVUxNUUsRUFBUUQsRUFBU0gsR0FFakMsWXNLdG5wQkEsSUFB
QXNILEdBQUF0SCxFQUFBLElBQ0EwYixFQUFBMWIsRUFBQSxJQUNBeWEsRUFBQXphLEVBQUEsSUFD
QXN4QixFQUFBdHhCLEVBQUEsSUFDQTBtQyxFQUFBMW1DLEVBQUEsSUFDQXNuQixFQUFBdG5CLEVB
QUEsSUFDQTZtQyxFQUFBN21DLEVBQUEsSUFDQXNKLEVBQUF0SixFQUFBLEdBRUFvM0QsR0FDQTdr
RCxVQUFBK2UsRUFBQXhqQixVQUNBeEcsY0FBQXdHLFVBQ0FxcUQsZUFBQXp4QixFQUFBNTRCLFVB
Q0E0TixpQkFBQTVOLFVBQ0EyTSxtQkFBQTNNLFVBQ0F1cEQsYUFBQS92QyxFQUFBeFosVUFDQStw
RCxjQUFBaHhCLEVBQUEvNEIsVUFDQXVxRCxRQUFBL3VELEVBQUF3RSxVQUdBMU4sR0FBQUQsUUFB
QWkzRCxHdEt1b3BCTSxTQUFVaDNELEVBQVFELEVBQVNILEdBRWpDLFl1SzFqcEJBLFNBQUF1SixH
QUFBbW9DLEdBQ0F4b0MsS0FBQVEsMEJBTUFSLEtBQUEyakUsc0JBQUEsRUFDQTNqRSxLQUFBcXhF
LGdCQUFBMXdFLEVBQUFDLFVBQUEsTUFDQVosS0FBQXdvQyxtQkE1R0EsR0FBQXJsQyxHQUFBck0s
RUFBQSxHQUVBNkosRUFBQTdKLEVBQUEsSUFDQXNNLEVBQUF0TSxFQUFBLElBQ0FzbkIsRUFBQXRu
QixFQUFBLElBQ0F1dUMsRUFBQXZ1QyxFQUFBLElBRUF1TSxHQURBdk0sRUFBQSxHQUNBQSxFQUFB
LEtBQ0FxekIsRUFBQXJ6QixFQUFBLElBTUF3NkUsR0FJQS90RSxXQUFBOGhDLEVBQUFHLHdCQUlB
aGlDLE1BQUE2aEMsRUFBQU8sa0JBUUEyckMsR0FLQWh1RSxXQUFBLFdBQ0EsR0FBQWl1RSxHQUFB
cHpELEVBQUFPLFdBRUEsT0FEQVAsR0FBQUssWUFBQSxHQUNBK3lELEdBUUFodUUsTUFBQSxTQUFB
aXVFLEdBQ0FyekQsRUFBQUssV0FBQWd6RCxLQVFBQyxHQUlBbnVFLFdBQUEsV0FDQXZELEtBQUFx
eEUsZ0JBQUF6dEUsU0FNQUosTUFBQSxXQUNBeEQsS0FBQXF4RSxnQkFBQXh0RSxjQVNBQyxHQUFB
d3RFLEVBQUFDLEVBQUFHLEdBbUNBL08sR0FRQTUrRCx1QkFBQSxXQUNBLE1BQUFELElBTUFxSyxt
QkFBQSxXQUNBLE1BQUFuTyxNQUFBcXhFLGlCQU1BdEYsZUFBQSxXQUNBLE1BQUE1aEQsSUFPQThG
LFdBQUEsV0FFQSxNQUFBandCLE1BQUFxeEUsZ0JBQUFwaEQsY0FHQUMsU0FBQSxTQUFBRCxHQUNB
andCLEtBQUFxeEUsZ0JBQUFuaEQsU0FBQUQsSUFPQWpzQixXQUFBLFdBQ0FyRCxFQUFBc0QsUUFB
QWpFLEtBQUFxeEUsaUJBQ0FyeEUsS0FBQXF4RSxnQkFBQSxNQUlBbHVFLEdBQUE5QyxFQUFBaEks
VUFBQWdMLEVBQUFzL0QsR0FFQXYvRCxFQUFBaUIsYUFBQWhFLEdBRUFuSixFQUFBRCxRQUFBb0os
R3ZLOHFwQk0sU0FBVW5KLEVBQVFELEVBQVNILEdBRWpDLFl3SzEwcEJBLFNBQUE2NkUsR0FBQUMs
RUFBQUMsRUFBQW4vQyxFQUFBby9DLEdBQ0EsTUFBQUYsS0FBQWwvQyxHQUFBbS9DLElBQUFDLEVB
aUJBLFFBQUFDLEdBQUFsMkUsR0FDQSxHQUFBc3FDLEdBQUFybkMsU0FBQXFuQyxVQUNBNnJDLEVB
QUE3ckMsRUFBQUssY0FDQXlyQyxFQUFBRCxFQUFBNWlFLEtBQUF0VixPQUdBbzRFLEVBQUFGLEVB
QUFHLFdBQ0FELEdBQUFFLGtCQUFBdjJFLEdBQ0FxMkUsRUFBQUcsWUFBQSxhQUFBTCxFQUVBLElB
QUFNLEdBQUFKLEVBQUE5aUUsS0FBQXRWLE1BR0EsUUFDQXNzQyxNQUFBa3NDLEVBQ0Foc0MsSUFK
QWdzQyxFQUFBTCxHQVlBLFFBQUFNLEdBQUExMkUsR0FDQSxHQUFBc3FDLEdBQUF0bkMsT0FBQTht
QyxjQUFBOW1DLE9BQUE4bUMsY0FFQSxLQUFBUSxHQUFBLElBQUFBLEVBQUFxc0MsV0FDQSxXQUdB
LElBQUFaLEdBQUF6ckMsRUFBQXlyQyxXQUNBQyxFQUFBMXJDLEVBQUEwckMsYUFDQW4vQyxFQUFB
eVQsRUFBQXpULFVBQ0FvL0MsRUFBQTNyQyxFQUFBMnJDLFlBRUFXLEVBQUF0c0MsRUFBQXVzQyxX
QUFBLEVBU0EsS0FFQUQsRUFBQUUsZUFBQTUyRSxTQUNBMDJFLEVBQUFHLGFBQUE3MkUsU0FFRyxN
QUFBakQsR0FDSCxZQU1BLEdBQUErNUUsR0FBQWxCLEVBQUF4ckMsRUFBQXlyQyxXQUFBenJDLEVB
QUEwckMsYUFBQTFyQyxFQUFBelQsVUFBQXlULEVBQUEyckMsYUFFQWdCLEVBQUFELEVBQUEsRUFB
QUosRUFBQWgwRSxXQUFBM0UsT0FFQWk1RSxFQUFBTixFQUFBTyxZQUNBRCxHQUFBRSxtQkFBQXAz
RSxHQUNBazNFLEVBQUFHLE9BQUFULEVBQUFFLGVBQUFGLEVBQUFILFlBRUEsSUFBQWEsR0FBQXhC
LEVBQUFvQixFQUFBSixlQUFBSSxFQUFBVCxZQUFBUyxFQUFBSCxhQUFBRyxFQUFBSyxXQUVBaHRD
LEVBQUErc0MsRUFBQSxFQUFBSixFQUFBdDBFLFdBQUEzRSxPQUNBd3NDLEVBQUFGLEVBQUEwc0Ms
RUFHQU8sRUFBQXYwRSxTQUFBMG5DLGFBQ0E2c0MsR0FBQUMsU0FBQTFCLEVBQUFDLEdBQ0F3QixF
QUFBSCxPQUFBeGdELEVBQUFvL0MsRUFDQSxJQUFBeUIsR0FBQUYsRUFBQUcsU0FFQSxRQUNBcHRD
LE1BQUFtdEMsRUFBQWp0QyxFQUFBRixFQUNBRSxJQUFBaXRDLEVBQUFudEMsRUFBQUUsR0FRQSxR
QUFBbXRDLEdBQUE1M0UsRUFBQWdyQyxHQUNBLEdBQ0FULEdBQUFFLEVBREFwVSxFQUFBcHpCLFNB
QUFxbkMsVUFBQUssY0FBQTJyQyxnQkFHQWo1RSxLQUFBMnRDLEVBQUFQLEtBQ0FGLEVBQUFTLEVB
QUFULE1BQ0FFLEVBQUFGLEdBQ0dTLEVBQUFULE1BQUFTLEVBQUFQLEtBQ0hGLEVBQUFTLEVBQUFQ
LElBQ0FBLEVBQUFPLEVBQUFULFFBRUFBLEVBQUFTLEVBQUFULE1BQ0FFLEVBQUFPLEVBQUFQLEtB
R0FwVSxFQUFBa2dELGtCQUFBdjJFLEdBQ0FxMkIsRUFBQXdVLFVBQUEsWUFBQU4sR0FDQWxVLEVB
QUFtZ0QsWUFBQSxhQUFBbmdELEdBQ0FBLEVBQUF5VSxRQUFBLFlBQUFMLEVBQUFGLEdBQ0FsVSxF
QUFBK1UsU0FlQSxRQUFBeXNDLEdBQUE3M0UsRUFBQWdyQyxHQUNBLEdBQUFob0MsT0FBQThtQyxh
QUFBLENBSUEsR0FBQVEsR0FBQXRuQyxPQUFBOG1DLGVBQ0E3ckMsRUFBQStCLEVBQUEyekIsS0FB
QTExQixPQUNBc3NDLEVBQUE3bkMsS0FBQXVvQyxJQUFBRCxFQUFBVCxNQUFBdHNDLEdBQ0F3c0Ms
TUFBQXB0QyxLQUFBMnRDLEVBQUFQLElBQUFGLEVBQUE3bkMsS0FBQXVvQyxJQUFBRCxFQUFBUCxJ
QUFBeHNDLEVBSUEsS0FBQXFzQyxFQUFBd3RDLFFBQUF2dEMsRUFBQUUsRUFBQSxDQUNBLEdBQUFz
dEMsR0FBQXR0QyxDQUNBQSxHQUFBRixFQUNBQSxFQUFBd3RDLEVBR0EsR0FBQUMsR0FBQUMsRUFB
QWo0RSxFQUFBdXFDLEdBQ0EydEMsRUFBQUQsRUFBQWo0RSxFQUFBeXFDLEVBRUEsSUFBQXV0QyxH
QUFBRSxFQUFBLENBQ0EsR0FBQTdoRCxHQUFBcHpCLFNBQUEwbkMsYUFDQXRVLEdBQUFvaEQsU0FB
QU8sRUFBQWg0RSxLQUFBZzRFLEVBQUFHLFFBQ0E3dEMsRUFBQTh0QyxrQkFFQTd0QyxFQUFBRSxH
QUNBSCxFQUFBK3RDLFNBQUFoaUQsR0FDQWlVLEVBQUF3dEMsT0FBQUksRUFBQWw0RSxLQUFBazRF
LEVBQUFDLFVBRUE5aEQsRUFBQWdoRCxPQUFBYSxFQUFBbDRFLEtBQUFrNEUsRUFBQUMsUUFDQTd0
QyxFQUFBK3RDLFNBQUFoaUQsTUFsTEEsR0FBQWx6QixHQUFBbEksRUFBQSxHQUVBZzlFLEVBQUFo
OUUsRUFBQSxLQUNBMDRCLEVBQUExNEIsRUFBQSxJQW9MQXE5RSxFQUFBbjFFLEVBQUFKLFdBQUEs
YUFBQUUsYUFBQSxnQkFBQUQsU0FFQXNtQyxHQUlBeUIsV0FBQXV0QyxFQUFBcEMsRUFBQVEsRUFN
QXJyQyxXQUFBaXRDLEVBQUFWLEVBQUFDLEVBR0F4OEUsR0FBQUQsUUFBQWt1QyxHeEtxMnBCTSxT
QUFVanVDLEVBQVFELEVBQVNILEdBRWpDLFl5S3RpcUJBLFNBQUFzOUUsR0FBQXY0RSxHQUNBLEtB
QUFBLEtBQUF1QixZQUNBdkIsSUFBQXVCLFVBRUEsT0FBQXZCLEdBVUEsUUFBQXc0RSxHQUFBeDRF
LEdBQ0EsS0FBQUEsR0FBQSxDQUNBLEdBQUFBLEVBQUE0QixZQUNBLE1BQUE1QixHQUFBNEIsV0FF
QTVCLEtBQUFpQyxZQVdBLFFBQUFnMkUsR0FBQTVxQyxFQUFBOHFDLEdBS0EsSUFKQSxHQUFBbjRF
LEdBQUF1NEUsRUFBQWxyQyxHQUNBb3JDLEVBQUEsRUFDQUMsRUFBQSxFQUVBMTRFLEdBQUEsQ0FD
QSxPQUFBQSxFQUFBRSxTQUFBLENBR0EsR0FGQXc0RSxFQUFBRCxFQUFBejRFLEVBQUE0MkIsWUFB
QTM0QixPQUVBdzZFLEdBQUFOLEdBQUFPLEdBQUFQLEVBQ0EsT0FDQW40RSxPQUNBbTRFLFNBQUFN
LEVBSUFBLEdBQUFDLEVBR0ExNEUsRUFBQXU0RSxFQUFBQyxFQUFBeDRFLEtBSUEzRSxFQUFBRCxR
QUFBNjhFLEd6SzhqcUJNLFNBQVU1OEUsRUFBUUQsRUFBU0gsR0FFakMsWTBLcG5xQkEsU0FBQW91
QyxHQUFBc3ZDLEVBQUFDLEdBQ0EsU0FBQUQsSUFBQUMsS0FFR0QsSUFBQUMsSUFFQUMsRUFBQUYs
S0FFQUUsRUFBQUQsR0FDSHZ2QyxFQUFBc3ZDLEVBQUFDLEVBQUEzMkUsWUFDRyxZQUFBMDJFLEdB
Q0hBLEVBQUFHLFNBQUFGLEtBQ0dELEVBQUFJLDRCQUNILEdBQUFKLEVBQUFJLHdCQUFBSCxNQW5C
QSxHQUFBQyxHQUFBNTlFLEVBQUEsSUF5QkFJLEdBQUFELFFBQUFpdUMsRzFLNm9xQk0sU0FBVWh1
QyxFQUFRRCxFQUFTSCxHQUVqQyxZMktscXFCQSxTQUFBNDlFLEdBQUF2OEUsR0FDQSxNQUFBMnhE
LEdBQUEzeEQsSUFBQSxHQUFBQSxFQUFBNEQsU0FQQSxHQUFBK3RELEdBQUFoekQsRUFBQSxJQVVB
SSxHQUFBRCxRQUFBeTlFLEczSzBycUJNLFNBQVV4OUUsRUFBUUQsRUFBU0gsR0FFakMsWTRLbHNx
QkEsU0FBQWd6RCxHQUFBM3hELEdBQ0EsR0FBQWdkLEdBQUFoZCxJQUFBaWQsZUFBQWpkLEVBQUEy
RyxTQUNBdVcsRUFBQUYsRUFBQUUsYUFBQXhXLE1BQ0EsVUFBQTFHLEtBQUEsbUJBQUFrZCxHQUFB
dy9ELEtBQUExOEUsWUFBQWtkLEdBQUF3L0QsS0FBQSxpQkFBQTE4RSxJQUFBLGlCQUFBQSxHQUFB
NEQsVUFBQSxpQkFBQTVELEdBQUE2WCxXQUdBOVksRUFBQUQsUUFBQTZ5RCxHNUt3dHFCTSxTQUFV
NXlELEVBQVFELEVBQVNILEdBRWpDLFk2S3J1cUJBLElBQUFnK0UsSUFDQUMsTUFBQSwrQkFDQUMs
SUFBQSx3Q0FvQkFDLEdBQ0FDLGFBQUEsZ0JBQ0FDLFdBQUEsRUFDQUMsU0FBQSxFQUNBQyxrQkFB
QSxxQkFDQUMsYUFBQSxlQUNBQyxXQUFBLEVBQ0FDLFVBQUEsRUFDQUMsV0FBQSxjQUNBQyxPQUFB
LEVBQ0E3b0UsY0FBQSxnQkFDQThvRSxjQUFBLGdCQUNBQyxZQUFBLGNBQ0FDLFFBQUEsRUFDQUMs
Y0FBQSxnQkFDQUMsWUFBQSxjQUNBQyxjQUFBLGlCQUNBQyxLQUFBLEVBQ0FDLE1BQUEsRUFDQUMs
S0FBQSxFQUNBQyxHQUFBLEVBQ0FDLFNBQUEsV0FDQUMsVUFBQSxhQUNBQyxLQUFBLEVBQ0FwdkIs
U0FBQSxZQUNBcXZCLFNBQUEsWUFDQUMsY0FBQSxnQkFDQUMsbUJBQUEsc0JBQ0FDLDBCQUFBLDhC
QUNBQyxhQUFBLGdCQUNBQyxlQUFBLGtCQUNBQyxrQkFBQSxvQkFDQUMsaUJBQUEsbUJBQ0FDLE9B
QUEsRUFDQUMsR0FBQSxFQUNBQyxHQUFBLEVBQ0ExL0UsRUFBQSxFQUNBMi9FLFdBQUEsRUFDQUMs
UUFBQSxFQUNBQyxnQkFBQSxrQkFDQUMsVUFBQSxFQUNBQyxRQUFBLEVBQ0FDLFFBQUEsRUFDQUMs
aUJBQUEsb0JBQ0FDLElBQUEsRUFDQUMsR0FBQSxFQUNBQyxHQUFBLEVBQ0FDLFNBQUEsV0FDQUMs
VUFBQSxFQUNBQyxpQkFBQSxvQkFDQXp4QyxJQUFBLEVBQ0EweEMsU0FBQSxFQUNBQywwQkFBQSw0
QkFDQUMsS0FBQSxFQUNBampELFlBQUEsZUFDQWtqRCxTQUFBLFlBQ0FDLE9BQUEsRUFDQUMsVUFB
QSxZQUNBQyxZQUFBLGNBQ0FDLFdBQUEsY0FDQXJqRCxhQUFBLGdCQUNBc2pELFVBQUEsRUFDQTVn
RCxXQUFBLGNBQ0FELFNBQUEsWUFDQThnRCxlQUFBLG1CQUNBQyxZQUFBLGVBQ0FqaEQsVUFBQSxh
QUNBQyxZQUFBLGVBQ0FuRCxXQUFBLGNBQ0E1N0IsT0FBQSxFQUNBNkMsS0FBQSxFQUNBbTlFLEdB
QUEsRUFDQUMsR0FBQSxFQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsVUFBQSxhQUNBQywyQkFB
QSwrQkFDQUMseUJBQUEsNkJBQ0FDLFNBQUEsV0FDQUMsa0JBQUEsb0JBQ0FDLGNBQUEsZ0JBQ0FD
LFFBQUEsRUFDQUMsVUFBQSxjQUNBQyxhQUFBLGlCQUNBQyxZQUFBLEVBQ0FDLGVBQUEsa0JBQ0FD
LEdBQUEsRUFDQUMsSUFBQSxFQUNBQyxVQUFBLEVBQ0FqMEQsRUFBQSxFQUNBazBELEdBQUEsRUFD
QUMsR0FBQSxFQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsYUFBQSxlQUNBQyxpQkFBQSxtQkFD
QUMsUUFBQSxFQUNBQyxVQUFBLFlBQ0FDLFdBQUEsYUFDQUMsU0FBQSxXQUNBQyxhQUFBLGVBQ0FD
LGNBQUEsaUJBQ0FDLGNBQUEsaUJBQ0FDLGtCQUFBLG9CQUNBQyxNQUFBLEVBQ0FDLFVBQUEsYUFD
QUMsVUFBQSxhQUNBQyxZQUFBLGVBQ0FDLGFBQUEsZUFDQUMsWUFBQSxjQUNBQyxZQUFBLGNBQ0Ex
ekIsS0FBQSxFQUNBMnpCLGlCQUFBLG1CQUNBQyxVQUFBLFlBQ0FDLGFBQUEsRUFDQXYrQixLQUFB
LEVBQ0F3K0IsV0FBQSxhQUNBckgsT0FBQSxFQUNBdC9DLFFBQUEsRUFDQTRtRCxTQUFBLEVBQ0Ez
bUQsTUFBQSxFQUNBNG1ELE9BQUEsRUFDQUMsWUFBQSxFQUNBQyxPQUFBLEVBQ0FDLFNBQUEsRUFD
QUMsaUJBQUEsb0JBQ0FDLGtCQUFBLHFCQUNBQyxXQUFBLGNBQ0FDLFFBQUEsV0FDQUMsV0FBQSxh
QUNBQyxvQkFBQSxzQkFDQUMsaUJBQUEsbUJBQ0FDLGFBQUEsZUFDQUMsY0FBQSxpQkFDQUMsT0FB
QSxFQUNBQyxVQUFBLFlBQ0FDLFVBQUEsWUFDQUMsVUFBQSxZQUNBQyxjQUFBLGdCQUNBQyxvQkFB
QSxzQkFDQUMsZUFBQSxpQkFDQUMsRUFBQSxFQUNBQyxPQUFBLEVBQ0FDLEtBQUEsT0FDQUMsS0FB
QSxPQUNBQyxnQkFBQSxtQkFDQUMsWUFBQSxjQUNBQyxVQUFBLFlBQ0FDLG1CQUFBLHFCQUNBQyxp
QkFBQSxtQkFDQUMsUUFBQSxFQUNBaGpDLE9BQUEsRUFDQWlqQyxPQUFBLEVBQ0FDLEdBQUEsRUFD
QUMsR0FBQSxFQUNBQyxNQUFBLEVBQ0FDLEtBQUEsRUFDQUMsZUFBQSxrQkFDQUMsTUFBQSxFQUNB
QyxRQUFBLEVBQ0FDLGlCQUFBLG1CQUNBQyxpQkFBQSxtQkFDQUMsTUFBQSxFQUNBQyxhQUFBLGVB
Q0ExTCxZQUFBLGNBQ0EyTCxhQUFBLGVBQ0FDLE1BQUEsRUFDQUMsTUFBQSxFQUNBQyxZQUFBLGNB
Q0FDLFVBQUEsYUFDQWxwRCxZQUFBLGVBQ0FtcEQsc0JBQUEseUJBQ0FDLHVCQUFBLDBCQUNBemxF
LE9BQUEsRUFDQTBsRSxPQUFBLEVBQ0FwcEQsZ0JBQUEsbUJBQ0FDLGlCQUFBLG9CQUNBb3BELGNB
QUEsaUJBQ0FDLGVBQUEsa0JBQ0FwcEQsaUJBQUEsb0JBQ0FDLGNBQUEsaUJBQ0FDLFlBQUEsZUFD
QW1wRCxhQUFBLGVBQ0FDLGVBQUEsaUJBQ0FDLFlBQUEsY0FDQUMsUUFBQSxVQUNBQyxRQUFBLFVB
Q0FDLFdBQUEsY0FDQUMsZUFBQSxrQkFDQUMsY0FBQSxpQkFDQUMsV0FBQSxhQUNBempGLEdBQUEs
RUFDQTBqRixVQUFBLEVBQ0FDLEdBQUEsRUFDQUMsR0FBQSxFQUNBQyxrQkFBQSxxQkFDQUMsbUJB
QUEsc0JBQ0FDLFFBQUEsRUFDQUMsWUFBQSxlQUNBQyxhQUFBLGdCQUNBQyxXQUFBLGVBQ0FDLFlB
QUEsZUFDQUMsU0FBQSxZQUNBQyxhQUFBLGdCQUNBQyxjQUFBLGlCQUNBN21DLE9BQUEsRUFDQTht
QyxhQUFBLGdCQUNBdDJFLFFBQUEsRUFDQXUyRSxTQUFBLGFBQ0FDLFlBQUEsZ0JBQ0FDLFlBQUEs
Z0JBQ0FDLFFBQUEsVUFDQUMsV0FBQSxhQUNBQyxXQUFBLEVBQ0FDLE9BQUEsRUFDQUMsWUFBQSxl
QUNBQyxZQUFBLGVBQ0FyOUQsRUFBQSxFQUNBczlELFFBQUEsV0FDQUMsR0FBQSxFQUNBQyxHQUFB
LEVBQ0FDLGlCQUFBLG1CQUNBQyxhQUFBLGdCQUNBQyxhQUFBLGdCQUNBQyxVQUFBLGFBQ0FDLFVB
QUEsYUFDQUMsVUFBQSxhQUNBQyxXQUFBLGNBQ0FDLFVBQUEsYUFDQUMsUUFBQSxXQUNBQyxNQUFB
LEVBQ0FDLFdBQUEsY0FDQUMsUUFBQSxXQUNBQyxTQUFBLFlBQ0FoNUQsRUFBQSxFQUNBaTVELEdB
QUEsRUFDQUMsR0FBQSxFQUNBQyxpQkFBQSxtQkFDQUMsRUFBQSxFQUNBQyxXQUFBLGNBR0EveUIs
R0FDQS9pRCxjQUNBQyx3QkFDQTYwRSxhQUFBak0sRUFBQUMsTUFDQWlNLGFBQUFsTSxFQUFBQyxN
QUNBa00sVUFBQW5NLEVBQUFDLE1BQ0FtTSxVQUFBcE0sRUFBQUMsTUFDQW9NLFVBQUFyTSxFQUFB
QyxNQUNBcU0sV0FBQXRNLEVBQUFDLE1BQ0FzTSxVQUFBdk0sRUFBQUMsTUFDQXVNLFFBQUF4TSxF
QUFBRSxJQUNBeU0sUUFBQTNNLEVBQUFFLElBQ0EwTSxTQUFBNU0sRUFBQUUsS0FFQTdvRSxxQkFH
QXZVLFFBQUF3RCxLQUFBNjVFLEdBQUEvNUUsUUFBQSxTQUFBUyxHQUNBcXpELEVBQUEvaUQsV0FB
QXRRLEdBQUEsRUFDQXM1RSxFQUFBdDVFLEtBQ0FxekQsRUFBQTdpRCxrQkFBQXhRLEdBQUFzNUUs
RUFBQXQ1RSxNQUlBekUsRUFBQUQsUUFBQSszRCxHN0tzdnFCTSxTQUFVOTNELEVBQVFELEVBQVNI
LEdBRWpDLFk4S2gvcUJBLFNBQUE2dUMsR0FBQTlwQyxHQUNBLHFCQUFBQSxJQUFBd3BDLEVBQUFD
LHlCQUFBenBDLEdBQ0EsT0FDQXVxQyxNQUFBdnFDLEVBQUF3cUMsZUFDQUMsSUFBQXpxQyxFQUFB
MHFDLGFBRUcsSUFBQTFuQyxPQUFBOG1DLGFBQUEsQ0FDSCxHQUFBUSxHQUFBdG5DLE9BQUE4bUMs
Y0FDQSxRQUNBaXNDLFdBQUF6ckMsRUFBQXlyQyxXQUNBQyxhQUFBMXJDLEVBQUEwckMsYUFDQW4v
QyxVQUFBeVQsRUFBQXpULFVBQ0FvL0MsWUFBQTNyQyxFQUFBMnJDLGFBRUcsR0FBQWh6RSxTQUFB
cW5DLFVBQUEsQ0FDSCxHQUFBalUsR0FBQXB6QixTQUFBcW5DLFVBQUFLLGFBQ0EsUUFDQUMsY0FB
QXZVLEVBQUF1VSxnQkFDQXIzQixLQUFBOGlCLEVBQUE5aUIsS0FDQTR5RSxJQUFBOXZELEVBQUEr
dkQsWUFDQUMsS0FBQWh3RCxFQUFBaXdELGVBV0EsUUFBQUMsR0FBQWw5RSxFQUFBQyxHQUtBLEdB
QUFrOUUsR0FBQSxNQUFBbDdDLE9BQUEvQixJQUNBLFdBSUEsSUFBQWs5QyxHQUFBMzhDLEVBQUF3
QixFQUNBLEtBQUFvN0MsSUFBQTU1RCxFQUFBNDVELEVBQUFELEdBQUEsQ0FDQUMsRUFBQUQsQ0FF
QSxJQUFBcitELEdBQUFsZixFQUFBbkUsVUFBQWlnQixFQUFBb21CLE9BQUFtdUIsRUFBQWx3RCxF
QUFBQyxFQU9BLE9BTEE4ZSxHQUFBaGlCLEtBQUEsU0FDQWdpQixFQUFBM29CLE9BQUE2ckMsRUFF
QTEwQixFQUFBViw2QkFBQWtTLEdBRUFBLEVBR0EsWUEvRkEsR0FBQXhSLEdBQUEzYixFQUFBLElB
Q0FrSSxFQUFBbEksRUFBQSxHQUNBNkgsRUFBQTdILEVBQUEsR0FDQXV1QyxFQUFBdnVDLEVBQUEs
SUFDQWlPLEVBQUFqTyxFQUFBLElBRUFzdUMsRUFBQXR1QyxFQUFBLElBQ0EwNkIsRUFBQTE2QixF
QUFBLElBQ0E2eEIsRUFBQTd4QixFQUFBLElBRUEwckYsRUFBQXhqRixFQUFBSixXQUFBLGdCQUFB
RSxvQkFBQXNSLGNBQUEsR0FFQXlRLEdBQ0FvbUIsUUFDQW4yQix5QkFDQXFqRCxRQUFBLFdBQ0FD
LFNBQUEsbUJBRUFyMUMsY0FBQSxrSEFJQW9vQixFQUFBLEtBQ0FpdUIsRUFBQSxLQUNBbXRCLEVB
QUEsS0FDQUYsR0FBQSxFQUlBSSxHQUFBLEVBbUZBaDBCLEdBQ0E1dEMsYUFFQTFNLGNBQUEsU0FB
QUMsRUFBQW5QLEVBQUFDLEVBQUFDLEdBQ0EsSUFBQXM5RSxFQUNBLFdBR0EsSUFBQTdyQixHQUFB
M3hELEVBQUF0RyxFQUFBVCxvQkFBQStHLEdBQUFwRyxNQUVBLFFBQUF1VixHQUVBLGdCQUNBb2Qs
RUFBQW9sQyxJQUFBLFNBQUFBLEVBQUFyeEIsbUJBQ0E0QixFQUFBeXZCLEVBQ0F4QixFQUFBbndE
LEVBQ0FzOUUsRUFBQSxLQUVBLE1BQ0EsZUFDQXA3QyxFQUFBLEtBQ0FpdUIsRUFBQSxLQUNBbXRC
LEVBQUEsSUFDQSxNQUdBLG9CQUNBRixHQUFBLENBQ0EsTUFDQSxzQkFDQSxpQkFFQSxNQURBQSxJ
QUFBLEVBQ0FELEVBQUFsOUUsRUFBQUMsRUFVQSwwQkFDQSxHQUFBcTlFLEVBQ0EsS0FHQSxrQkFD
QSxlQUNBLE1BQUFKLEdBQUFsOUUsRUFBQUMsR0FHQSxhQUdBMk8sZUFBQSxTQUFBdFgsRUFBQXFV
LEVBQUFLLEdBQ0EsYUFBQUwsSUFDQTR4RSxHQUFBLElBS0F2ckYsR0FBQUQsUUFBQXczRCxHOUt5
aXJCTSxTQUFVdjNELEVBQVFELEVBQVNILEdBRWpDLFkrSzdwckJBLFNBQUF5YyxHQUFBL1csR0FH
QSxVQUFBQSxFQUFBZ1gsWUFHQSxRQUFBZCxHQUFBQyxHQUNBLGlCQUFBQSxHQUFBLFVBQUFBLEdB
QUEsV0FBQUEsR0FBQSxhQUFBQSxFQWxFQSxHQUFBalYsR0FBQTVHLEVBQUEsR0FFQTZ0QyxFQUFB
N3RDLEVBQUEsSUFDQTJiLEVBQUEzYixFQUFBLElBQ0E2SCxFQUFBN0gsRUFBQSxHQUNBNHJGLEVB
QUE1ckYsRUFBQSxLQUNBNnJGLEVBQUE3ckYsRUFBQSxLQUNBaU8sRUFBQWpPLEVBQUEsSUFDQThy
RixFQUFBOXJGLEVBQUEsS0FDQStyRixFQUFBL3JGLEVBQUEsS0FDQTZmLEVBQUE3ZixFQUFBLElB
Q0Fnc0YsRUFBQWhzRixFQUFBLEtBQ0Fpc0YsRUFBQWpzRixFQUFBLEtBQ0Frc0YsRUFBQWxzRixF
QUFBLEtBQ0FnZSxFQUFBaGUsRUFBQSxJQUNBbXNGLEVBQUFuc0YsRUFBQSxLQUVBMEMsRUFBQTFD
LEVBQUEsR0FDQXMwQixFQUFBdDBCLEVBQUEsSUFxQkErcEIsR0FwQkEvcEIsRUFBQSxPQXFCQW9z
RixNQUNBLHFxQkFBQWhvRixRQUFBLFNBQUFrTCxHQUNBLEdBQUErOEUsR0FBQS84RSxFQUFBLEdB
QUEyc0IsY0FBQTNzQixFQUFBMUgsTUFBQSxHQUNBMGtGLEVBQUEsS0FBQUQsRUFDQUUsRUFBQSxN
QUFBRixFQUVBbGhGLEdBQ0E2Tyx5QkFDQXFqRCxRQUFBaXZCLEVBQ0FodkIsU0FBQWd2QixFQUFB
LFdBRUFya0UsY0FBQXNrRSxHQUVBeGlFLEdBQUF6YSxHQUFBbkUsRUFDQWloRixFQUFBRyxHQUFB
cGhGLEdBR0EsSUFBQXFoRixNQVlBaDFCLEdBQ0F6dEMsYUFFQTFNLGNBQUEsU0FBQUMsRUFBQW5Q
LEVBQUFDLEVBQUFDLEdBQ0EsR0FBQUgsR0FBQWsrRSxFQUFBOXVFLEVBQ0EsS0FBQXBQLEVBQ0Es
V0FFQSxJQUFBdStFLEVBQ0EsUUFBQW52RSxHQUNBLGVBQ0EsaUJBQ0Esd0JBQ0Esd0JBQ0EsaUJB
Q0EsbUJBQ0EsZUFDQSxlQUNBLGVBQ0EsaUJBQ0EsY0FDQSxvQkFDQSx3QkFDQSxtQkFDQSxlQUNB
LGNBQ0EsaUJBQ0Esa0JBQ0Esb0JBQ0EsZUFDQSxnQkFDQSxpQkFDQSxpQkFDQSxnQkFDQSxpQkFD
QSxvQkFDQSxzQkFDQSxpQkFHQW12RSxFQUFBeCtFLENBQ0EsTUFDQSxtQkFJQSxPQUFBcW1CLEVB
QUFsbUIsR0FDQSxXQUdBLGtCQUNBLGVBQ0FxK0UsRUFBQVYsQ0FDQSxNQUNBLGVBQ0EsZUFDQVUs
RUFBQVgsQ0FDQSxNQUNBLGdCQUdBLE9BQUExOUUsRUFBQXNTLE9BQ0EsV0FHQSxzQkFDQSxtQkFD
QSxtQkFDQSxpQkFHQSxrQkFDQSxtQkFDQSxxQkFDQStyRSxFQUFBNXNFLENBQ0EsTUFDQSxlQUNB
LGlCQUNBLG1CQUNBLGtCQUNBLG1CQUNBLGtCQUNBLG1CQUNBLGNBQ0E0c0UsRUFBQVQsQ0FDQSxN
QUNBLHNCQUNBLGtCQUNBLG1CQUNBLG9CQUNBUyxFQUFBUixDQUNBLE1BQ0EsdUJBQ0EsNEJBQ0Es
d0JBQ0FRLEVBQUFiLENBQ0EsTUFDQSx3QkFDQWEsRUFBQVAsQ0FDQSxNQUNBLGlCQUNBTyxFQUFB
enVFLENBQ0EsTUFDQSxnQkFDQXl1RSxFQUFBTixDQUNBLE1BQ0EsZUFDQSxhQUNBLGVBQ0FNLEVB
QUFaLEVBR0FZLEdBQUE3bEYsRUFBQSxLQUFBMFcsRUFDQSxJQUFBaE8sR0FBQW05RSxFQUFBM2lG
LFVBQUFvRSxFQUFBQyxFQUFBQyxFQUFBQyxFQUVBLE9BREFzTixHQUFBViw2QkFBQTNMLEdBQ0FB
LEdBR0EwTixlQUFBLFNBQUF0WCxFQUFBcVUsRUFBQUssR0FNQSxlQUFBTCxJQUFBNkIsRUFBQWxX
LEVBQUE0akUsTUFBQSxDQUNBLEdBQUF6a0UsR0FBQTRYLEVBQUEvVyxHQUNBWCxFQUFBOEMsRUFB
QVQsb0JBQUExQixFQUNBOG1GLEdBQUEzbkYsS0FDQTJuRixFQUFBM25GLEdBQUFncEMsRUFBQUMs
T0FBQS9vQyxFQUFBLFFBQUFyQyxNQUtBeWEsbUJBQUEsU0FBQXpYLEVBQUFxVSxHQUNBLGVBQUFB
LElBQUE2QixFQUFBbFcsRUFBQTRqRSxNQUFBLENBQ0EsR0FBQXprRSxHQUFBNFgsRUFBQS9XLEVB
Q0E4bUYsR0FBQTNuRixHQUFBOFosZUFDQTZ0RSxHQUFBM25GLEtBS0F6RSxHQUFBRCxRQUFBcTNE
LEcvSzB1ckJNLFNBQVVwM0QsRUFBUUQsRUFBU0gsR0FFakMsWWdMNzZyQkEsU0FBQTRyRixHQUFB
MTlFLEVBQUErUCxFQUFBN1AsRUFBQUMsR0FDQSxNQUFBSixHQUFBMU4sS0FBQTJJLEtBQUFnRixF
QUFBK1AsRUFBQTdQLEVBQUFDLEdBcEJBLEdBQUFKLEdBQUFqTyxFQUFBLElBT0Ewc0YsR0FDQUMs
Y0FBQSxLQUNBQyxZQUFBLEtBQ0FDLGNBQUEsS0FhQTUrRSxHQUFBOEIsYUFBQTY3RSxFQUFBYyxH
QUVBdHNGLEVBQUFELFFBQUF5ckYsR2hMaTlyQk0sU0FBVXhyRixFQUFRRCxFQUFTSCxHQUVqQyxZ
aUwxOXJCQSxTQUFBNnJGLEdBQUEzOUUsRUFBQStQLEVBQUE3UCxFQUFBQyxHQUNBLE1BQUFKLEdB
QUExTixLQUFBMkksS0FBQWdGLEVBQUErUCxFQUFBN1AsRUFBQUMsR0FuQkEsR0FBQUosR0FBQWpP
LEVBQUEsSUFNQThzRixHQUNBQyxjQUFBLFNBQUF6OUUsR0FDQSx1QkFBQUEsS0FBQXk5RSxjQUFB
aGxGLE9BQUFnbEYsZUFjQTkrRSxHQUFBOEIsYUFBQTg3RSxFQUFBaUIsR0FFQTFzRixFQUFBRCxR
QUFBMHJGLEdqTDYvckJNLFNBQVV6ckYsRUFBUUQsRUFBU0gsR0FFakMsWWtMdmdzQkEsU0FBQThy
RixHQUFBNTlFLEVBQUErUCxFQUFBN1AsRUFBQUMsR0FDQSxNQUFBMlAsR0FBQXpkLEtBQUEySSxL
QUFBZ0YsRUFBQStQLEVBQUE3UCxFQUFBQyxHQWpCQSxHQUFBMlAsR0FBQWhlLEVBQUEsSUFNQWd0
RixHQUNBcHNFLGNBQUEsS0FhQTVDLEdBQUFqTyxhQUFBKzdFLEVBQUFrQixHQUVBNXNGLEVBQUFE
LFFBQUEyckYsR2xMd2lzQk0sU0FBVTFyRixFQUFRRCxFQUFTSCxHQUVqQyxZbUxoZ3NCQSxTQUFB
K3JGLEdBQUE3OUUsRUFBQStQLEVBQUE3UCxFQUFBQyxHQUNBLE1BQUEyUCxHQUFBemQsS0FBQTJJ
LEtBQUFnRixFQUFBK1AsRUFBQTdQLEVBQUFDLEdBakVBLEdBQUEyUCxHQUFBaGUsRUFBQSxJQUVB
czBCLEVBQUF0MEIsRUFBQSxJQUNBaXRGLEVBQUFqdEYsRUFBQSxLQUNBK2YsRUFBQS9mLEVBQUEs
SUFNQWt0RixHQUNBcm9GLElBQUFvb0YsRUFDQTNsQyxTQUFBLEtBQ0FqbkMsUUFBQSxLQUNBQyxT
QUFBLEtBQ0FDLE9BQUEsS0FDQUMsUUFBQSxLQUNBMnNFLE9BQUEsS0FDQUMsT0FBQSxLQUNBM3NF
LGlCQUFBVixFQUVBd1UsU0FBQSxTQUFBamxCLEdBTUEsbUJBQUFBLEVBQUFuRSxLQUNBbXBCLEVB
QUFobEIsR0FFQSxHQUVBa2xCLFFBQUEsU0FBQWxsQixHQVFBLGtCQUFBQSxFQUFBbkUsTUFBQSxV
QUFBbUUsRUFBQW5FLEtBQ0FtRSxFQUFBa2xCLFFBRUEsR0FFQW1wQixNQUFBLFNBQUFydUMsR0FH
QSxtQkFBQUEsRUFBQW5FLEtBQ0FtcEIsRUFBQWhsQixHQUVBLFlBQUFBLEVBQUFuRSxNQUFBLFVB
QUFtRSxFQUFBbkUsS0FDQW1FLEVBQUFrbEIsUUFFQSxHQWNBeFcsR0FBQWpPLGFBQUFnOEUsRUFB
QW1CLEdBRUE5c0YsRUFBQUQsUUFBQTRyRixHbkxpbHNCTSxTQUFVM3JGLEVBQVFELEVBQVNILEdB
RWpDLFlvTHBsc0JBLFNBQUFpdEYsR0FBQTcrRSxHQUNBLEdBQUFBLEVBQUF2SixJQUFBLENBTUEs
R0FBQUEsR0FBQXdvRixFQUFBai9FLEVBQUF2SixNQUFBdUosRUFBQXZKLEdBQ0EscUJBQUFBLEVB
Q0EsTUFBQUEsR0FLQSxnQkFBQXVKLEVBQUFqRCxLQUFBLENBQ0EsR0FBQW9wQixHQUFBRCxFQUFB
bG1CLEVBSUEsYUFBQW1tQixFQUFBLFFBQUEzd0IsT0FBQUcsYUFBQXd3QixHQUVBLGtCQUFBbm1C
LEVBQUFqRCxNQUFBLFVBQUFpRCxFQUFBakQsS0FHQW1pRixFQUFBbC9FLEVBQUFvbUIsVUFBQSxl
QUVBLEdBL0ZBLEdBQUFGLEdBQUF0MEIsRUFBQSxJQU1BcXRGLEdBQ0FFLElBQUEsU0FDQUMsU0FB
QSxJQUNBQyxLQUFBLFlBQ0FDLEdBQUEsVUFDQUMsTUFBQSxhQUNBQyxLQUFBLFlBQ0FDLElBQUEs
U0FDQUMsSUFBQSxLQUNBQyxLQUFBLGNBQ0FDLEtBQUEsY0FDQUMsT0FBQSxhQUNBQyxnQkFBQSxn
QkFRQVosR0FDQWEsRUFBQSxZQUNBQyxFQUFBLE1BQ0FDLEdBQUEsUUFDQUMsR0FBQSxRQUNBQyxH
QUFBLFFBQ0FDLEdBQUEsVUFDQUMsR0FBQSxNQUNBQyxHQUFBLFFBQ0FDLEdBQUEsV0FDQUMsR0FB
QSxTQUNBQyxHQUFBLElBQ0FDLEdBQUEsU0FDQUMsR0FBQSxXQUNBQyxHQUFBLE1BQ0FDLEdBQUEs
T0FDQUMsR0FBQSxZQUNBQyxHQUFBLFVBQ0FDLEdBQUEsYUFDQUMsR0FBQSxZQUNBQyxHQUFBLFNB
Q0FDLEdBQUEsU0FDQUMsSUFBQSxLQUNBQyxJQUFBLEtBQ0FDLElBQUEsS0FDQUMsSUFBQSxLQUNB
QyxJQUFBLEtBQ0FDLElBQUEsS0FDQUMsSUFBQSxLQUNBQyxJQUFBLEtBQ0FDLElBQUEsS0FDQUMs
SUFBQSxNQUNBQyxJQUFBLE1BQ0FDLElBQUEsTUFDQUMsSUFBQSxVQUNBQyxJQUFBLGFBQ0FDLElB
QUEsT0FvQ0Fsd0YsR0FBQUQsUUFBQThzRixHcEwwcXNCTSxTQUFVN3NGLEVBQVFELEVBQVNILEdB
RWpDLFlxTDl2c0JBLFNBQUFnc0YsR0FBQTk5RSxFQUFBK1AsRUFBQTdQLEVBQUFDLEdBQ0EsTUFB
QXdSLEdBQUF0ZixLQUFBMkksS0FBQWdGLEVBQUErUCxFQUFBN1AsRUFBQUMsR0FqQkEsR0FBQXdS
LEdBQUE3ZixFQUFBLElBTUF1d0YsR0FDQUMsYUFBQSxLQWFBM3dFLEdBQUE5UCxhQUFBaThFLEVB
QUF1RSxHQUVBbndGLEVBQUFELFFBQUE2ckYsR3JMK3hzQk0sU0FBVTVyRixFQUFRRCxFQUFTSCxH
QUVqQyxZc0w5eHNCQSxTQUFBaXNGLEdBQUEvOUUsRUFBQStQLEVBQUE3UCxFQUFBQyxHQUNBLE1B
QUEyUCxHQUFBemQsS0FBQTJJLEtBQUFnRixFQUFBK1AsRUFBQTdQLEVBQUFDLEdBMUJBLEdBQUEy
UCxHQUFBaGUsRUFBQSxJQUVBK2YsRUFBQS9mLEVBQUEsSUFNQXl3RixHQUNBQyxRQUFBLEtBQ0FD
LGNBQUEsS0FDQUMsZUFBQSxLQUNBcndFLE9BQUEsS0FDQUMsUUFBQSxLQUNBSCxRQUFBLEtBQ0FD
LFNBQUEsS0FDQUcsaUJBQUFWLEVBYUEvQixHQUFBak8sYUFBQWs4RSxFQUFBd0UsR0FFQXJ3RixF
QUFBRCxRQUFBOHJGLEd0THcwc0JNLFNBQVU3ckYsRUFBUUQsRUFBU0gsR0FFakMsWXVMdDFzQkEs
U0FBQWtzRixHQUFBaCtFLEVBQUErUCxFQUFBN1AsRUFBQUMsR0FDQSxNQUFBSixHQUFBMU4sS0FB
QTJJLEtBQUFnRixFQUFBK1AsRUFBQTdQLEVBQUFDLEdBcEJBLEdBQUFKLEdBQUFqTyxFQUFBLElB
T0E2d0YsR0FDQTU2RSxhQUFBLEtBQ0EyMkUsWUFBQSxLQUNBQyxjQUFBLEtBYUE1K0UsR0FBQThC
LGFBQUFtOEUsRUFBQTJFLEdBRUF6d0YsRUFBQUQsUUFBQStyRixHdkwwM3NCTSxTQUFVOXJGLEVB
QVFELEVBQVNILEdBRWpDLFl3THQzc0JBLFNBQUFtc0YsR0FBQWorRSxFQUFBK1AsRUFBQTdQLEVB
QUFDLEdBQ0EsTUFBQXdSLEdBQUF0ZixLQUFBMkksS0FBQWdGLEVBQUErUCxFQUFBN1AsRUFBQUMs
R0FoQ0EsR0FBQXdSLEdBQUE3ZixFQUFBLElBTUE4d0YsR0FDQUMsT0FBQSxTQUFBemhGLEdBQ0Es
Z0JBQUFBLEtBQUF5aEYsT0FDQSxlQUFBemhGLE1BQUEwaEYsWUFBQSxHQUVBQyxPQUFBLFNBQUEz
aEYsR0FDQSxnQkFBQUEsS0FBQTJoRixPQUNBLGVBQUEzaEYsTUFBQTRoRixZQUNBLGNBQUE1aEYs
TUFBQTZoRixXQUFBLEdBRUFDLE9BQUEsS0FNQUMsVUFBQSxLQWFBeHhFLEdBQUE5UCxhQUFBbzhF
LEVBQUEyRSxHQUVBMXdGLEVBQUFELFFBQUFnc0YsR3hMczZzQk0sU0FBVS9yRixFQUFRRCxFQUFT
SCxHQUVqQyxZeUx6OHNCQSxTQUFBbXhDLEdBQUFtZ0QsRUFBQXZzRixHQUNBLEdBQUE2aEMsSUFD
QXdLLGlCQUFBa2dELEVBQ0F4bEIsV0FBQSxFQUNBL0IsZUFBQWhsRSxJQUFBRSxXQUFBNHJDLEVB
QUE5ckMsSUFBQXVaLGNBQUEsS0FDQXVyRCxNQUFBOWtFLEVBQ0F1a0UsS0FBQXZrRSxJQUFBbVUs
U0FBQXRELGNBQUEsS0FDQXExRCxjQUFBbG1FLElBQUE0VSxhQUFBLEtBS0EsT0FBQWl0QixHQWhC
QSxHQUVBaUssSUFGQTd3QyxFQUFBLElBRUEsRUFpQkFJLEdBQUFELFFBQUFneEMsR3pMODlzQk0s
U0FBVS93QyxFQUFRRCxFQUFTSCxHQUVqQyxZMExuL3NCQSxJQUFBeXhDLElBQ0FDLGtCQUFBLEVB
Q0E2L0MsVUFBQSxFQUdBbnhGLEdBQUFELFFBQUFzeEMsRzFMb2d0Qk0sU0FBVXJ4QyxFQUFRRCxF
QUFTSCxHQUVqQyxZMkwzZ3RCQSxJQUFBd3hGLEdBQUF4eEYsRUFBQSxLQUVBeXhGLEVBQUEsT0FD
QUMsRUFBQSxXQUVBcC9DLEdBQ0ErQixtQkFBQSxzQkFNQXM5QyxvQkFBQSxTQUFBdjZFLEdBQ0Es
R0FBQWc5QixHQUFBbzlDLEVBQUFwNkUsRUFHQSxPQUFBczZFLEdBQUFqNEUsS0FBQXJDLEdBQ0FB
LEVBRUFBLEVBQUE1VSxRQUFBaXZGLEVBQUEsSUFBQW4vQyxFQUFBK0IsbUJBQUEsS0FBQUQsRUFB
QSxRQVNBRCxlQUFBLFNBQUEvOEIsRUFBQTNELEdBQ0EsR0FBQW0rRSxHQUFBbitFLEVBQUF2Tyxh
QUFBb3RDLEVBQUErQixtQkFHQSxPQUZBdTlDLE1BQUFqbUQsU0FBQWltRCxFQUFBLElBQ0FKLEVB
QUFwNkUsS0FDQXc2RSxHQUlBeHhGLEdBQUFELFFBQUFteUMsRzNMNGh0Qk0sU0FBVWx5QyxFQUFR
RCxFQUFTSCxHQUVqQyxZNEwxanRCQSxTQUFBd3hGLEdBQUE1dkUsR0FNQSxJQUxBLEdBQUE5ZixH
QUFBLEVBQ0FDLEVBQUEsRUFDQTFCLEVBQUEsRUFDQUMsRUFBQXNoQixFQUFBNWUsT0FDQXhDLEdB
QUEsRUFBQUYsRUFDQUQsRUFBQUcsR0FBQSxDQUVBLElBREEsR0FBQVcsR0FBQXNHLEtBQUF1b0Ms
SUFBQTN2QyxFQUFBLEtBQUFHLEdBQ1VILEVBQUFjLEVBQU9kLEdBQUEsRUFDakIwQixJQUFBRCxH
QUFBOGYsRUFBQVksV0FBQW5pQixLQUFBeUIsR0FBQThmLEVBQUFZLFdBQUFuaUIsRUFBQSxLQUFB
eUIsR0FBQThmLEVBQUFZLFdBQUFuaUIsRUFBQSxLQUFBeUIsR0FBQThmLEVBQUFZLFdBQUFuaUIs
RUFBQSxHQUVBeUIsSUFBQSt2RixFQUNBOXZGLEdBQUE4dkYsRUFFQSxLQUFReHhGLEVBQUFDLEVB
QU9ELElBQ2YwQixHQUFBRCxHQUFBOGYsRUFBQVksV0FBQW5pQixFQUlBLE9BRkF5QixJQUFBK3ZG
LEVBQ0E5dkYsR0FBQTh2RixFQUNBL3ZGLEVBQUFDLEdBQUEsR0ExQkEsR0FBQTh2RixHQUFBLEtB
NkJBenhGLEdBQUFELFFBQUFxeEYsRzVMbWx0Qk0sU0FBVXB4RixFQUFRRCxFQUFTSCxHQUVqQyxZ
NkxubnRCQUksR0FBQUQsUUFBQSxVN0xvb3RCTSxTQUFVQyxFQUFRRCxFQUFTSCxHQUVqQyxZOExw
bnRCQSxTQUFBMjJELEdBQUFtN0IsR0FRQSxTQUFBQSxFQUNBLFdBRUEsUUFBQUEsRUFBQTdzRixT
QUNBLE1BQUE2c0YsRUFHQSxJQUFBcHNGLEdBQUFnWixFQUFBeGQsSUFBQTR3RixFQUNBLElBQUFw
c0YsRUFFQSxNQURBQSxHQUFBaXZDLEVBQUFqdkMsR0FDQUEsRUFBQW1DLEVBQUFULG9CQUFBMUIs
R0FBQSxJQUdBLG9CQUFBb3NGLEdBQUFsL0MsT0FDQWhzQyxFQUFBLE1BRUFBLEVBQUEsS0FBQTlG
LE9BQUF3RCxLQUFBd3RGLElBMUNBLEdBQUFsckYsR0FBQTVHLEVBQUEsR0FHQTZILEdBREE3SCxF
QUFBLElBQ0FBLEVBQUEsSUFDQTBlLEVBQUExZSxFQUFBLElBRUEyMEMsRUFBQTMwQyxFQUFBLEdB
Q0FBLEdBQUEsR0FDQUEsRUFBQSxFQXNDQUksR0FBQUQsUUFBQXcyRCxHOUx1cHRCTSxTQUFVdjJE
LEVBQVFELEVBQVNILEdBRWpDLFkrTHZzdEJBLElBQUFxeEMsR0FBQXJ4QyxFQUFBLEdBRUFJLEdB
QUFELFFBQUFreEMsRUFBQWdDLDRCL0x3dHRCTSxTQUFVanpDLEVBQVE0b0IsRUFBcUJocEIsR0FF
N0MsWWdNdHR0QkEsU0FBQSt4RixHQUFBdjlFLEdBQ0EsYUFBQUEsTUFDQXBTLEtBQUFvUyxFQUFB
dzlFLEVBQUFDLEVBRUFDLE9BQUFweEYsUUFBQTBULEdBQ0ExVCxPQUFBcXhGLEVBQUEsR0FBQTM5
RSxHQUNBMVQsT0FBQXN4RixFQUFBLEdBQUE1OUUsR2hNaXR0QnFCLEdBQUk2OUUsR0FBMkNyeUYs
RUFBb0IsSUFDL0RteUYsRUFBOENueUYsRUFBb0IsS0FDbEVveUYsRUFBbURweUYsRUFBb0IsS2dN
dHV0QmhHaXlGLEVBQUEsZ0JBQ0FELEVBQUEscUJBR0FFLEVBQUFHLEVBQUEsRUFBQUEsRUFBQSxF
QUFBQyxnQkFBQWx3RixFQWtCQTRtQixHQUFBLEtoTWl2dEJNLFNBQVU1b0IsRUFBUTRvQixFQUFx
QmhwQixHQUU3QyxZQUNxQixJQUFJdXlGLEdBQStDdnlGLEVBQW9CLEtpTTV3dEI1Rnd5RixFQUFB
LGdCQUFBbC9FLGtCQUFBeFMsaUJBQUF3UyxLQUdBOCtCLEVBQUFtZ0QsRUFBQSxHQUFBQyxHQUFB
bnBFLFNBQUEsZ0JBRUFMLEdBQUEsS2pNcXh0Qk0sU0FBVTVvQixFQUFRNG9CLEVBQXFCaHBCLEdB
RTdDLGNrTS94dEJBLFNBQUFxZ0QsR0FDQSxHQUFBb3lDLEdBQUEsZ0JBQUFweUMsU0FBQXYvQyxp
QkFBQXUvQyxDQUVBcjNCLEdBQUEsTWxNa3l0QjZCem9CLEtBQUt5b0IsRUFBcUJocEIsRUFBb0Is
TUFJckUsU0FBVUksRUFBUTRvQixFQUFxQmhwQixHQUU3QyxZbU1seHRCQSxTQUFBMHlGLEdBQUFs
K0UsR0FDQSxHQUFBbStFLEdBQUFueEYsRUFBQWpCLEtBQUFpVSxFQUFBMDlFLEdBQ0FyMkUsRUFB
QXJILEVBQUEwOUUsRUFFQSxLQUNBMTlFLEVBQUEwOUUsT0FBQTl2RixFQUNBLElBQUF3d0YsSUFB
QSxFQUNHLE1BQUE1d0YsSUFFSCxHQUFBc2hELEdBQUF1dkMsRUFBQXR5RixLQUFBaVUsRUFRQSxP
QVBBbytFLEtBQ0FELEVBQ0FuK0UsRUFBQTA5RSxHQUFBcjJFLFFBRUFySCxHQUFBMDlFLElBR0E1
dUMsRW5Na3d0QnFCLEdBQUkrdUMsR0FBMkNyeUYsRUFBb0IsSW1Nenl0QnhGbTFCLEVBQUFyMEIs
T0FBQVMsVUFHQUMsRUFBQTJ6QixFQUFBM3pCLGVBT0FxeEYsRUFBQTE5RCxFQUFBeHRCLFNBR0F1
cUYsRUFBQUcsRUFBQSxFQUFBQSxFQUFBLEVBQUFDLGdCQUFBbHdGLEVBNkJBNG1CLEdBQUEsS25N
a3p0Qk0sU0FBVTVvQixFQUFRNG9CLEVBQXFCaHBCLEdBRTdDLFlvTWgxdEJBLFNBQUE4eUYsR0FB
QXQrRSxHQUNBLE1BQUFxK0UsR0FBQXR5RixLQUFBaVUsR0FqQkEsR0FBQTJnQixHQUFBcjBCLE9B
QUFTLFVBT0FzeEYsRUFBQTE5RCxFQUFBeHRCLFFBYUFxaEIsR0FBQSxLcE11MnRCTSxTQUFVNW9C
LEVBQVE0b0IsRUFBcUJocEIsR0FFN0MsWUFDcUIsSUFBSSt5RixHQUE0Qy95RixFQUFvQixLcU01
M3RCekZnekYsRUFBQWx5RixPQUFBaXlGLEVBQUEsR0FBQWp5RixPQUFBMDhDLGVBQUExOEMsT0FF
QWtvQixHQUFBLEtyTXE0dEJNLFNBQVU1b0IsRUFBUTRvQixFQUFxQmhwQixHQUU3QyxZc01wNHRC
QSxTQUFBaXpGLEdBQUEzbUUsRUFBQWc4RCxHQUNBLGdCQUFBMS9FLEdBQ0EsTUFBQTBqQixHQUFB
ZzhELEVBQUExL0UsS0FJQW9nQixFQUFBLEt0TWs1dEJNLFNBQVU1b0IsRUFBUTRvQixFQUFxQmhw
QixHQUU3QyxZdU0xNHRCQSxTQUFBa3pGLEdBQUExK0UsR0FDQSxhQUFBQSxHQUFBLGdCQUFBQSxH
QUdBd1UsRUFBQSxLdk13NnRCTSxTQUFVNW9CLEVBQVFELEVBQVNILEd3TXA4dEJqQ0ksRUFBQUQs
UUFBQUgsRUFBQSxNeE0yOHRCTSxTQUFVSSxFQUFRRCxFQUFTSCxHQUVqQyxjQUM0QixTQUFTcWdE
LEVBQVFqZ0QsR3lNNTh0QjdDVSxPQUFBQyxlQUFBWixFQUFBLGNBQ0FxVSxPQUFBLEdBR0EsSUFN
QTQ5QixHQU5BK2dELEVBQUFuekYsRUFBQSxLQUVBb3pGLEVBRUEsU0FBQXY5RCxHQUFzQyxNQUFB
QSxNQUFBejBCLFdBQUF5MEIsR0FBdUN3c0MsUUFBQXhzQyxJQUY3RXM5RCxFQVFBL2dELEdBREEs
b0JBQUE5K0IsTUFDQUEsS0FDQyxvQkFBQXZMLFFBQ0RBLE9BQ0Msb0JBQUFzNEMsR0FDREEsRUFF
QWpnRCxDQUtBLElBQUFrakQsSUFBQSxFQUFBOHZDLEVBQUEsU0FBQWhoRCxFQUNBanlDLEdBQUEs
UUFBQW1qRCxJek0rOHRCNkIvaUQsS0FBS0osRUFBU0gsRUFBb0IsSUFBS0EsRUFBb0IsS0FBS0ks
S0FJdkYsU0FBVUEsRUFBUUQsRzBNLyt0QnhCQyxFQUFBRCxRQUFBLFNBQUFDLEdBb0JBLE1BbkJB
QSxHQUFBaXpGLGtCQUNBanpGLEVBQUFrekYsVUFBQSxhQUNBbHpGLEVBQUFtekYsU0FFQW56RixF
QUFBK0YsV0FBQS9GLEVBQUErRixhQUNBckYsT0FBQUMsZUFBQVgsRUFBQSxVQUNBYSxZQUFBLEVB
Q0FDLElBQUEsV0FDQSxNQUFBZCxHQUFBRSxLQUdBUSxPQUFBQyxlQUFBWCxFQUFBLE1BQ0FhLFlB
QUEsRUFDQUMsSUFBQSxXQUNBLE1BQUFkLEdBQUFDLEtBR0FELEVBQUFpekYsZ0JBQUEsR0FFQWp6
RixJMU11L3RCTSxTQUFVQSxFQUFRRCxFQUFTSCxHQUVqQyxZMk12Z3VCQSxTQUFBd3pGLEdBQUFw
aEQsR0FDQSxHQUFBa1IsR0FDQW13QyxFQUFBcmhELEVBQUE5WixNQWFBLE9BWEEsbUJBQUFtN0Qs
R0FDQUEsRUFBQXg5QyxXQUNBcU4sRUFBQW13QyxFQUFBeDlDLFlBRUFxTixFQUFBbXdDLEVBQUEs
Y0FDQUEsRUFBQXg5QyxXQUFBcU4sR0FHQUEsRUFBQSxlQUdBQSxFQW5CQXhpRCxPQUFBQyxlQUFB
WixFQUFBLGNBQ0FxVSxPQUFBLElBRUFyVSxFQUFBLFFBQUFxekYsRzNNbWl1Qk0sU0FBVXB6RixF
QUFRNG9CLEVBQXFCaHBCLEdBRTdDLFk0TXRpdUJBLFNBQUEwekYsR0FBQTd1RixFQUFBNHdDLEdB
Q0EsR0FBQWsrQyxHQUFBbCtDLEtBQUF0cUMsSUFHQSx3QkFGQXdvRixHQUFBLElBQUFBLEVBQUFo
c0YsV0FBQSxrQkFFQSxjQUFBOUMsRUFBQSxpTEE0QkEsUUFBQSt1RixHQUFBQyxHQUNBL3lGLE9B
QUF3RCxLQUFBdXZGLEdBQUF6dkYsUUFBQSxTQUFBUyxHQUNBLEdBQUFpd0MsR0FBQSsrQyxFQUFB
aHZGLEVBR0Esd0JBRkFpd0MsT0FBQTF5QyxJQUEyQytJLEtBQUE4ZCxFQUFBLEVBQUErc0IsT0FH
M0MsU0FBQTN6QyxPQUFBLFlBQUF3QyxFQUFBLGdSQUlBLElBQWdELG9CQUFoRGl3QyxPQUFBMXlD
LElBQW1DK0ksS0FEbkMsZ0NBQUExRCxLQUFBQyxTQUFBQyxTQUFBLElBQUE4YSxVQUFBLEdBQUF0
ZSxNQUFBLElBQUFGLEtBQUEsT0FFQSxTQUFBNUIsT0FBQSxZQUFBd0MsRUFBQSw2RUFBQW9rQixF
QUFBLEVBQUErc0IsS0FBQSxpVEFxQkEsUUFBQTg5QyxHQUFBRCxHQUdBLE9BRkFFLEdBQUFqekYs
T0FBQXdELEtBQUF1dkYsR0FDQUcsS0FDQTN6RixFQUFBLEVBQWlCQSxFQUFBMHpGLEVBQUEvd0Ys
T0FBd0IzQyxJQUFBLENBQ3pDLEdBQUF3RSxHQUFBa3ZGLEVBQUExekYsRUFRQSxvQkFBQXd6RixH
QUFBaHZGLEtBQ0FtdkYsRUFBQW52RixHQUFBZ3ZGLEVBQUFodkYsSUFHQSxHQUFBb3ZGLEdBQUFu
ekYsT0FBQXdELEtBQUEwdkYsR0FPQUUsTUFBQSxFQUNBLEtBQ0FOLEVBQUFJLEdBQ0csTUFBQWh5
RixHQUNIa3lGLEVBQUFseUYsRUFHQSxrQkFDQSxHQUFBeTRDLEdBQUExM0MsVUFBQUMsT0FBQSxP
QUFBWixLQUFBVyxVQUFBLEdBQUFBLFVBQUEsTUFDQTB5QyxFQUFBMXlDLFVBQUEsRUFFQSxJQUFB
bXhGLEVBQ0EsS0FBQUEsRUFZQSxRQUZBQyxJQUFBLEVBQ0EzZCxLQUNBNGQsRUFBQSxFQUFvQkEs
RUFBQUgsRUFBQWp4RixPQUE4Qm94RixJQUFBLENBQ2xELEdBQUF0OUMsR0FBQW05QyxFQUFBRyxH
QUNBdC9DLEVBQUFrL0MsRUFBQWw5QyxHQUNBdTlDLEVBQUE1NUMsRUFBQTNELEdBQ0F3OUMsRUFB
QXgvQyxFQUFBdS9DLEVBQUE1K0MsRUFDQSx3QkFBQTYrQyxHQUFBLENBQ0EsR0FBQUMsR0FBQWIs
RUFBQTU4QyxFQUFBckIsRUFDQSxVQUFBcHpDLE9BQUFreUYsR0FFQS9kLEVBQUExL0IsR0FBQXc5
QyxFQUNBSCxLQUFBRyxJQUFBRCxFQUVBLE1BQUFGLEdBQUEzZCxFQUFBLzdCLEc1TTQ2dEJpQ3p4
QixFQUF1QixFQUFJOHFFLENBQ3ZDLElBQUk3cUUsR0FBNkNqcEIsRUFBb0IsR0FDVEEsR0FBb0Is
SUFDN0JBLEVBQW9CLEtBc0l0RixTQUFVSSxFQUFRNG9CLEVBQXFCaHBCLEdBRTdDLFk2TXRydUJB
LFNBQUF3MEYsR0FBQUMsRUFBQWovQyxHQUNBLGtCQUNBLE1BQUFBLEdBQUFpL0MsRUFBQWgvRCxV
QUFBcnpCLEdBQUFXLGFBeUJBLFFBQUEyeEYsR0FBQUMsRUFBQW4vQyxHQUNBLHNCQUFBbS9DLEdB
Q0EsTUFBQUgsR0FBQUcsRUFBQW4vQyxFQUdBLHFCQUFBbS9DLElBQUEsT0FBQUEsRUFDQSxTQUFB
dHlGLE9BQUEsaUZBQUFzeUYsRUFBQSxhQUFBQSxJQUFBLDZGQUtBLFFBRkFyd0YsR0FBQXhELE9B
QUF3RCxLQUFBcXdGLEdBQ0FDLEtBQ0F2MEYsRUFBQSxFQUFpQkEsRUFBQWlFLEVBQUF0QixPQUFp
QjNDLElBQUEsQ0FDbEMsR0FBQXdFLEdBQUFQLEVBQUFqRSxHQUNBbzBGLEVBQUFFLEVBQUE5dkYs
RUFDQSxvQkFBQTR2RixLQUNBRyxFQUFBL3ZGLEdBQUEydkYsRUFBQUMsRUFBQWovQyxJQUdBLE1B
QUFvL0MsR0E3Q0E1ckUsRUFBQSxFQUFBMHJFLEc3TTB1dUJNLFNBQVV0MEYsRUFBUTRvQixFQUFx
QmhwQixHQUU3QyxZOE01dXVCQUEsR0FBQSxJQUFBYyxPQUFBNEMsUTlNa3l1Qk0sU0FBVXRELEVB
QVE0b0IsRUFBcUJocEIsR0FFN0MsWStNcHl1QkEsU0FBQTY0QixHQUFBcm9CLEVBQUFzb0IsR0FB
aUQsS0FBQXRvQixZQUFBc29CLElBQTBDLFNBQUF4MUIsV0FBQSxxQ0FFM0YsUUFBQXEwQyxHQUFB
cmtDLEVBQUEvUyxHQUFpRCxJQUFBK1MsRUFBYSxTQUFBc2tDLGdCQUFBLDREQUF5RixRQUFBcjND
LEdBQUEsaUJBQUFBLElBQUEsbUJBQUFBLEdBQUErUyxFQUFBL1MsRUFFdkosUUFBQXMzQyxHQUFB
QyxFQUFBQyxHQUEwQyxzQkFBQUEsSUFBQSxPQUFBQSxFQUErRCxTQUFBejBDLFdBQUEsaUVBQUF5
MEMsR0FBdUdELEdBQUF2MkMsVUFBQVQsT0FBQTZsQyxPQUFBb1IsS0FBQXgyQyxXQUF5RWlOLGFB
QWVnRyxNQUFBc2pDLEVBQUE3MkMsWUFBQSxFQUFBKzJDLFVBQUEsRUFBQWgzQyxjQUFBLEtBQTZF
KzJDLElBQUFqM0MsT0FBQW0zQyxlQUFBbjNDLE9BQUFtM0MsZUFBQUgsRUFBQUMsR0FBQUQsRUFB
QUksVUFBQUgsRy9Na3l1QmhXLEdBQUk4RSxHQUFzQzc4QyxFQUFvQixHQUUxRDYwRixHQUQ4Qzcw
RixFQUFvQm1CLEVBQUUwN0MsR0FDekI3OEMsRUFBb0IsS0FDL0Q4MEYsRUFBbUQ5MEYsRUFBb0Jt
QixFQUFFMHpGLEdBQ3pFRSxFQUFpRC8wRixFQUFvQixHK00xeXVCOUZBLEdBQUEsR0F1RUFncEIs
R0FBQSxFQWxEQSxXQUNBLEdBQUFnc0UsR0FFQTE3QyxFQUFBdjJDLFVBQUFDLE9BQUEsT0FBQVos
S0FBQVcsVUFBQSxHQUFBQSxVQUFBLFdBQ0FreUYsRUFBQWx5RixVQUFBLEdBRUEyMkMsRUFBQXU3
QyxHQUFBMzdDLEVBQUEsZUFFQTQ3QyxFQUFBLFNBQUEzNkMsR0FTQSxRQUFBMjZDLEdBQUExaEYs
RUFBQXRILEdBQ0Eyc0IsRUFBQTN2QixLQUFBZ3NGLEVBRUEsSUFBQTE2QyxHQUFBN0MsRUFBQXp1
QyxLQUFBcXhDLEVBQUFoNkMsS0FBQTJJLEtBQUFzSyxFQUFBdEgsR0FHQSxPQURBc3VDLEdBQUFs
QixHQUFBOWxDLEVBQUE4a0MsTUFDQWtDLEVBT0EsTUFyQkEzQyxHQUFBcTlDLEVBQUEzNkMsR0FF
QTI2QyxFQUFBM3pGLFVBQUF3NUMsZ0JBQUEsV0FDQSxHQUFBN0UsRUFFQSxPQUFBQSxNQUFzQkEs
RUFBQW9ELEdBQUFwd0MsS0FBQW93QyxHQUFBcEQsRUFBQXdELEdBQUEsS0FBQXhELEdBWXRCZy9D
LEVBQUEzekYsVUFBQXF4QyxPQUFBLFdBQ0EsTUFBQWlLLEdBQUEsU0FBQXZxQyxLQUFBcEosS0FB
QXNLLE1BQUFyTixXQUdBK3VGLEdBQ0dyNEMsRUFBQSxVQWdCSCxPQU5BcTRDLEdBQUF4a0UsV0FD
QTRuQixNQUFBeThDLEVBQUEsRUFBQXY5QyxXQUNBcnhDLFNBQUEydUYsRUFBQWh6RixFQUFBMlIs
UUFBQStqQyxZQUVBMDlDLEVBQUFwN0MsbUJBQUFrN0MsS0FBMERBLEVBQUExN0MsR0FBQXk3QyxF
QUFBLEVBQUF2OUMsV0FBQXc5QyxFQUFBdDdDLEdBQUFxN0MsRUFBQSxFQUFBQyxHQUUxREUsTS9N
bXp1Qk0sU0FBVTkwRixFQUFRRCxFQUFTSCxHQUVqQyxZZ045MnVCQSxJQUFBMEMsR0FBQTFDLEVB
QUEsR0FDQTJCLEVBQUEzQixFQUFBLEdBQ0Frd0IsRUFBQWx3QixFQUFBLEdBRUFJLEdBQUFELFFB
QUEsV0FDQSxRQUFBZzFGLEdBQUEzaEYsRUFBQS9FLEVBQUFraUIsRUFBQTIyQixFQUFBa0ssRUFB
QUMsR0FDQUEsSUFBQXZoQyxHQUlBdnVCLEdBQ0EsRUFDQSxtTEFNQSxRQUFBeXpGLEtBQ0EsTUFB
QUQsR0FGQUEsRUFBQTM5QyxXQUFBMjlDLENBTUEsSUFBQTFqRixJQUNBd3pCLE1BQUFrd0QsRUFD
QTMyQyxLQUFBMjJDLEVBQ0E3b0UsS0FBQTZvRSxFQUNBajZELE9BQUFpNkQsRUFDQTl6RixPQUFB
OHpGLEVBQ0FuekUsT0FBQW16RSxFQUNBaGlDLE9BQUFnaUMsRUFFQS9oQyxJQUFBK2hDLEVBQ0E5
aEMsUUFBQStoQyxFQUNBM2hGLFFBQUEwaEYsRUFDQTdoQyxXQUFBOGhDLEVBQ0Fyd0YsS0FBQW93
RixFQUNBNWhDLFNBQUE2aEMsRUFDQTVoQyxNQUFBNGhDLEVBQ0EzaEMsVUFBQTJoQyxFQUNBOTlD
LE1BQUE4OUMsRUFNQSxPQUhBM2pGLEdBQUFzZixlQUFBcnVCLEVBQ0ErTyxFQUFBaUIsVUFBQWpC
LEVBRUFBLEloTmc0dUJNLFNBQVVyUixFQUFRRCxFQUFTSCxHQUVqQyxZaU5yN3VCQSxJQUFBcTFG
LElBQ0F2N0MsbUJBQUEsRUFDQUYsY0FBQSxFQUNBN2xDLGNBQUEsRUFDQWtmLGFBQUEsRUFDQWtq
QyxpQkFBQSxFQUNBekIsUUFBQSxFQUNBaGtDLFdBQUEsRUFDQXZsQixNQUFBLEdBR0FtcUYsR0FD
QTMwRixNQUFBLEVBQ0FxQyxRQUFBLEVBQ0F6QixXQUFBLEVBQ0FnMEYsUUFBQSxFQUNBNXNCLFFB
QUEsRUFDQTVsRSxXQUFBLEVBQ0F5eUYsT0FBQSxHQUdBejBGLEVBQUFELE9BQUFDLGVBQ0E4QyxF
QUFBL0MsT0FBQStDLG9CQUNBTixFQUFBekMsT0FBQXlDLHNCQUNBNDJCLEVBQUFyNUIsT0FBQXE1
Qix5QkFDQXFqQixFQUFBMThDLE9BQUEwOEMsZUFDQWk0QyxFQUFBajRDLEtBQUExOEMsT0FFQVYs
R0FBQUQsUUFBQSxRQUFBdTFGLEdBQUFDLEVBQUFDLEVBQUFDLEdBQ0Esb0JBQUFELEdBQUEsQ0FF
QSxHQUFBSCxFQUFBLENBQ0EsR0FBQUssR0FBQXQ0QyxFQUFBbzRDLEVBQ0FFLFFBQUFMLEdBQ0FD
LEVBQUFDLEVBQUFHLEVBQUFELEdBSUEsR0FBQXZ4RixHQUFBVCxFQUFBK3hGLEVBRUFyeUYsS0FD
QWUsSUFBQWswQixPQUFBajFCLEVBQUFxeUYsSUFHQSxRQUFBdjFGLEdBQUEsRUFBdUJBLEVBQUFp
RSxFQUFBdEIsU0FBaUIzQyxFQUFBLENBQ3hDLEdBQUF3RSxHQUFBUCxFQUFBakUsRUFDQSxLQUFB
ZzFGLEVBQUF4d0YsS0FBQXl3RixFQUFBendGLE1BQUFneEYsTUFBQWh4RixJQUFBLENBQ0EsR0FB
QXExQixHQUFBQyxFQUFBeTdELEVBQUEvd0YsRUFDQSxLQUNBOUQsRUFBQTQwRixFQUFBOXdGLEVB
QUFxMUIsR0FDaUIsTUFBQWw0QixNQUlqQixNQUFBMnpGLEdBR0EsTUFBQUEsS2pOazh1Qk0sU0FB
VXYxRixFQUFRRCxFQUFTSCxHQUVqQyxZa043K3VCQSxJQUFBMkIsR0FBQSxTQUFBQyxFQUFBQyxF
QUFBQyxFQUFBQyxFQUFBdEIsRUFBQUMsRUFBQXNCLEVBQUFDLEdBT0EsSUFBQUwsRUFBQSxDQUNB
LEdBQUFPLEVBQ0EsUUFBQUMsS0FBQVAsRUFDQU0sRUFBQSxHQUFBRSxPQUNBLHFJQUdLLENBQ0ws
R0FBQUMsSUFBQVIsRUFBQUMsRUFBQXRCLEVBQUFDLEVBQUFzQixFQUFBQyxHQUNBTSxFQUFBLENB
Q0FKLEdBQUEsR0FBQUUsT0FDQVIsRUFBQVcsUUFBQSxpQkFBMEMsTUFBQUYsR0FBQUMsUUFFMUNK
LEVBQUF4QixLQUFBLHNCQUlBLEtBREF3QixHQUFBTSxZQUFBLEVBQ0FOLEdBSUEvQixHQUFBRCxR
QUFBd0IsR2xOeWd2Qk0sU0FBVXZCLEVBQVE0b0IsRUFBcUJocEIsR0FFN0MsWW1ON2p2QkEsU0FB
QTY0QixHQUFBcm9CLEVBQUFzb0IsR0FBaUQsS0FBQXRvQixZQUFBc29CLElBQTBDLFNBQUF4MUIs
V0FBQSxxQ0FXM0YsUUFBQXl5RixLQUdBLEdBQUEvbkYsTUFDQXVxQixJQUVBLFFBQ0F5OUQsTUFB
QSxXQUNBejlELEVBQUEwOUQsRUFDQWpvRixFQUFBaW9GLEdBRUFDLE9BQUEsV0FFQSxPQURBdnlE
LEdBQUEzMUIsRUFBQXVxQixFQUNBbDRCLEVBQUEsRUFBcUJBLEVBQUFzakMsRUFBQTNnQyxPQUFz
QjNDLElBQzNDc2pDLEVBQUF0akMsTUFHQWEsSUFBQSxXQUNBLE1BQUFxM0IsSUFFQStjLFVBQUEs
U0FBQWw3QixHQUNBLEdBQUFtN0IsSUFBQSxDQUlBLE9BSEFoZCxLQUFBdnFCLElBQUF1cUIsRUFB
QXZxQixFQUFBcEcsU0FDQTJ3QixFQUFBeHhCLEtBQUFxVCxHQUVBLFdBQ0FtN0IsR0FBQXZuQyxJ
QUFBaW9GLElBQ0ExZ0QsR0FBQSxFQUVBaGQsSUFBQXZxQixJQUFBdXFCLEVBQUF2cUIsRUFBQXBH
LFNBQ0Eyd0IsRUFBQTVyQixPQUFBNHJCLEVBQUExTyxRQUFBelAsR0FBQSxPQXpDQXBhLEVBQUFV
LEVBQUFzb0IsRUFBQSxxQkFBQW10RSxJQU1BLElBQUFGLEdBQUEsS0FDQUcsR0FDQUYsT0FBQSxj
QXVDQUMsRUFBQSxXQUNBLFFBQUFBLEdBQUE3OUMsRUFBQWdELEVBQUFFLEdBQ0EzaUIsRUFBQTN2
QixLQUFBaXRGLEdBRUFqdEYsS0FBQW92QyxRQUNBcHZDLEtBQUFveUMsWUFDQXB5QyxLQUFBc3lD
LGdCQUNBdHlDLEtBQUFvdEMsWUFBQSxLQUNBcHRDLEtBQUF5NkIsVUFBQXl5RCxFQWlDQSxNQTlC
QUQsR0FBQTUwRixVQUFBODBGLGFBQUEsU0FBQWo4RSxHQUVBLE1BREFsUixNQUFBcXVDLGVBQ0Fy
dUMsS0FBQXk2QixVQUFBMlIsVUFBQWw3QixJQUdBKzdFLEVBQUE1MEYsVUFBQW0yQyxpQkFBQSxX
QUNBeHVDLEtBQUF5NkIsVUFBQXV5RCxVQUdBQyxFQUFBNTBGLFVBQUFnMEMsYUFBQSxXQUNBLE1B
QUF6UyxTQUFBNTVCLEtBQUFvdEMsY0FHQTYvQyxFQUFBNTBGLFVBQUFnMkMsYUFBQSxXQUNBcnVD
LEtBQUFvdEMsY0FDQXB0QyxLQUFBb3RDLFlBQUFwdEMsS0FBQW95QyxVQUFBcHlDLEtBQUFveUMs
VUFBQSs2QyxhQUFBbnRGLEtBQUFzeUMsZUFBQXR5QyxLQUFBb3ZDLE1BQUFoRCxVQUFBcHNDLEtB
QUFzeUMsZUFFQXR5QyxLQUFBeTZCLFVBQUFveUQsTUFJQUksRUFBQTUwRixVQUFBazJDLGVBQUEs
V0FDQXZ1QyxLQUFBb3RDLGNBQ0FwdEMsS0FBQW90QyxjQUNBcHRDLEtBQUFvdEMsWUFBQSxLQUNB
cHRDLEtBQUF5NkIsVUFBQXF5RCxRQUNBOXNGLEtBQUF5NkIsVUFBQXl5RCxJQUlBRCxNbk5za3ZC
TSxTQUFVLzFGLEVBQVE0b0IsRUFBcUJocEIsR0FFN0MsWW9OOXB2QkEsU0FBQW00QyxHQUFBdGlC
LEVBQUF2eEIsR0FBOEMsR0FBQUUsS0FBaUIsUUFBQW5FLEtBQUF3MUIsR0FBcUJ2eEIsRUFBQXVs
QixRQUFBeHBCLElBQUEsR0FBb0NTLE9BQUFTLFVBQUFDLGVBQUFqQixLQUFBczFCLEVBQUF4MUIs
S0FBNkRtRSxFQUFBbkUsR0FBQXcxQixFQUFBeDFCLEdBQXNCLE9BQUFtRSxHQTBCM00sUUFBQTBk
LEdBQUF0WixFQUFBMHRGLEVBQUEzMUYsR0FDQSxPQUFBTixHQUFBaTJGLEVBQUF0ekYsT0FBQSxF
QUFvQzNDLEdBQUEsRUFBUUEsSUFBQSxDQUM1QyxHQUFBaWpELEdBQUFnekMsRUFBQWoyRixHQUFB
dUksRUFDQSxJQUFBMDZDLEVBQUEsTUFBQUEsR0FHQSxnQkFBQTlOLEVBQUF0UyxHQUNBLFNBQUE3
Z0MsT0FBQSwrQkFBQXVHLEdBQUEsUUFBQWpJLEVBQUEsdUNBQUF1aUMsRUFBQWlYLHFCQUFBLE1B
SUEsUUFBQW84QyxHQUFBejBGLEVBQUFDLEdBQ0EsTUFBQUQsS0FBQUMsRXBOMG52QnFCLEdBQUl5
MEYsR0FBNER4MkYsRUFBb0IsSUFDaEZ5MkYsRUFBb0R6MkYsRUFBb0IsS0FDeEUwMkYsRUFBb0Qx
MkYsRUFBb0IsS0FDeEUyMkYsRUFBaUQzMkYsRUFBb0IsS0FDckU0MkYsRUFBNEM1MkYsRUFBb0Is
S29OdHF2QnpGNjJGLEVBQUE3MkYsRUFBQSxLQUFBcTZDLEVBQUF2NUMsT0FBQTRDLFFBQUEsU0FB
QWMsR0FBbUQsT0FBQW5FLEdBQUEsRUFBZ0JBLEVBQUEwQyxVQUFBQyxPQUFzQjNDLElBQUEsQ0FB
TyxHQUFBb0UsR0FBQTFCLFVBQUExQyxFQUEyQixRQUFBd0UsS0FBQUosR0FBMEIzRCxPQUFBUyxV
QUFBQyxlQUFBakIsS0FBQWtFLEVBQUFJLEtBQXlETCxFQUFBSyxHQUFBSixFQUFBSSxJQUFpQyxN
QUFBTCxHQXNHL093a0IsR0FBQSxFQXpEQSxXQUNBLEdBQUFrdEIsR0FBQW56QyxVQUFBQyxPQUFB
LE9BQUFaLEtBQUFXLFVBQUEsR0FBQUEsVUFBQSxNQUNBK3pGLEVBQUE1Z0QsRUFBQTZnRCxXQUNB
QSxNQUFBMzBGLEtBQUEwMEYsRUFBQU4sRUFBQSxFQUFBTSxFQUNBRSxFQUFBOWdELEVBQUErZ0Qs
eUJBQ0FBLE1BQUE3MEYsS0FBQTQwRixFQUFBTCxFQUFBLEVBQUFLLEVBQ0FFLEVBQUFoaEQsRUFB
QWloRCw0QkFDQUEsTUFBQS8wRixLQUFBODBGLEVBQUFSLEVBQUEsRUFBQVEsRUFDQUUsRUFBQWxo
RCxFQUFBbWhELG9CQUNBQSxNQUFBajFGLEtBQUFnMUYsRUFBQVIsRUFBQSxFQUFBUSxFQUNBRSxF
QUFBcGhELEVBQUF5QyxnQkFDQUEsTUFBQXYyQyxLQUFBazFGLEVBQUFULEVBQUEsRUFBQVMsQ0FF
QSxpQkFBQUMsRUFBQUMsRUFBQUMsR0FDQSxHQUFBamhELEdBQUF6ekMsVUFBQUMsT0FBQSxPQUFB
WixLQUFBVyxVQUFBLEdBQUFBLFVBQUEsTUFDQTIwRixFQUFBbGhELEVBQUFtaEQsS0FDQUEsTUFB
QXYxRixLQUFBczFGLEtBQ0FFLEVBQUFwaEQsRUFBQXFoRCxlQUNBQSxNQUFBejFGLEtBQUF3MUYs
RUFBQXJCLEVBQUFxQixFQUNBRSxFQUFBdGhELEVBQUF1aEQsaUJBQ0FBLE1BQUEzMUYsS0FBQTAx
RixFQUFBckIsRUFBQSxFQUFBcUIsRUFDQUUsRUFBQXhoRCxFQUFBeWhELG1CQUNBQSxNQUFBNzFG
LEtBQUE0MUYsRUFBQXZCLEVBQUEsRUFBQXVCLEVBQ0FFLEVBQUExaEQsRUFBQTJoRCxvQkFDQUEs
TUFBQS8xRixLQUFBODFGLEVBQUF6QixFQUFBLEVBQUF5QixFQUNBRSxFQUFBamdELEVBQUEzQixH
QUFBLHdGQUVBNmhELEVBQUFuMkUsRUFBQXExRSxFQUFBTixFQUFBLG1CQUNBcUIsRUFBQXAyRSxF
QUFBczFFLEVBQUFMLEVBQUEsc0JBQ0FvQixFQUFBcjJFLEVBQUF1MUUsRUFBQUosRUFBQSxhQUVB
LE9BQUFOLEdBQUFwK0MsRUFBQTBCLEdBRUFyQixXQUFBLFVBR0ExTyxlQUFBLFNBQUEzcEMsR0FD
QSxpQkFBQUEsRUFBQSxLQUlBeTRDLHlCQUFBdFcsUUFBQXkwRCxHQUdBYyxzQkFDQUMseUJBQ0FD
LGlCQUNBWixPQUNBRSxpQkFDQUUsbUJBQ0FFLHFCQUNBRSx1QkFFS0MsU3BOZ3J2QkMsU0FBVWg0
RixFQUFRNG9CLEVBQXFCaHBCLEdBRTdDLFlxTmx4dkJBLFNBQUEyeEIsR0FBQXBGLEVBQUFxRixH
QUNBLE1BQUFyRixLQUFBcUYsRUFDQSxJQUFBckYsR0FBQSxJQUFBcUYsR0FBQSxFQUFBckYsSUFB
QSxFQUFBcUYsRUFFQXJGLE9BQUFxRixNQUlBLFFBQUFDLEdBQUFDLEVBQUFDLEdBQ0EsR0FBQUos
RUFBQUcsRUFBQUMsR0FBQSxRQUVBLHFCQUFBRCxJQUFBLE9BQUFBLEdBQUEsaUJBQUFDLElBQUEs
T0FBQUEsRUFDQSxRQUdBLElBQUFDLEdBQUFseEIsT0FBQXdELEtBQUF3dEIsR0FDQUcsRUFBQW54
QixPQUFBd0QsS0FBQXl0QixFQUVBLElBQUFDLEVBQUFodkIsU0FBQWl2QixFQUFBanZCLE9BQUEs
UUFFQSxRQUFBM0MsR0FBQSxFQUFpQkEsRUFBQTJ4QixFQUFBaHZCLE9BQWtCM0MsSUFDbkMsSUFB
QXExQixFQUFBbjFCLEtBQUF3eEIsRUFBQUMsRUFBQTN4QixNQUFBc3hCLEVBQUFHLEVBQUFFLEVB
QUEzeEIsSUFBQTB4QixFQUFBQyxFQUFBM3hCLEtBQ0EsUUFJQSxVQTVCQTJvQixFQUFBLEVBQUE2
SSxDQUFBLElBQUE2RCxHQUFBNTBCLE9BQUFTLFVBQUFDLGdCck51enZCTSxTQUFVcEIsRUFBUTRv
QixFQUFxQmhwQixHQUU3QyxZc050enZCQSxTQUFBdzRGLEdBQUFoQixHQUNBLHlCQUFBQSxHQUFB
MTJGLE9BQUEyM0YsRUFBQSxHQUFBakIsRUFBQSwwQkFBQXAxRixHQUdBLFFBQUFzMkYsR0FBQWxC
LEdBQ0EsTUFBQUEsT0FFR3AxRixHQUZIdEIsT0FBQTIzRixFQUFBLFlBQUFqakQsR0FDQSxPQUFZ
QSxjQUlaLFFBQUFtakQsR0FBQW5CLEdBQ0EsTUFBQUEsSUFBQSxpQkFBQUEsR0FBQTEyRixPQUFB
MjNGLEVBQUEsWUFBQWpqRCxHQUNBLE1BQUExMEMsUUFBQTgzRixFQUFBLEdBQUFwQixFQUFBaGlE
LFNBQ0dwekMsR3RONnl2QmtCLEdBQUl3MkYsR0FBc0M1NEYsRUFBb0IsSUFDMUR5NEYsRUFBZ0R6
NEYsRUFBb0IsR3NOM3l2QjdGZ3BCLEdBQUEsR0FBQXd2RSxFQUFBRSxFQUFBQyxJdE5tMHZCTSxT
QUFVdjRGLEVBQVE0b0IsRUFBcUJocEIsR0FFN0MsWXVOdDF2QkEsU0FBQTY0RixHQUFBdEIsR0FD
QSx5QkFBQUEsR0FBQXoyRixPQUFBZzRGLEVBQUEsR0FBQXZCLEVBQUEsdUJBQUFuMUYsR0FHQSxR
QUFBMjJGLEdBQUF4QixHQUNBLE1BQUFBLE9BRUduMUYsR0FGSHRCLE9BQUFnNEYsRUFBQSxjQUNB
LFd2Tm0xdkJxQixHQUFJQSxHQUFnRDk0RixFQUFvQixHdU4vMHZCN0ZncEIsR0FBQSxHQUFBNnZF
LEVBQUFFLEl2TmcydkJNLFNBQVUzNEYsRUFBUTRvQixFQUFxQmhwQixHQUU3QyxZd04xMnZCQSxT
QUFBZzVGLEdBQUFDLEVBQUFDLEVBQUF0OEMsR0FDQSxNQUFBdkMsTUFBb0J1QyxFQUFBcThDLEVB
QUFDLEdBR3BCLFFBQUFDLEdBQUExQixHQUNBLGdCQUFBamlELEVBQUFVLEdBQ0EsR0FDQXloRCxJ
QURBemhELEVBQUFqakIsWUFDQWlqQixFQUFBeWhELE1BQ0FRLEVBQUFqaUQsRUFBQWlpRCxvQkFF
QWlCLEdBQUEsRUFDQUMsTUFBQSxFQUVBLGlCQUFBSixFQUFBQyxFQUFBdDhDLEdBQ0EsR0FBQTA4
QyxHQUFBN0IsRUFBQXdCLEVBQUFDLEVBQUF0OEMsRUFXQSxPQVRBdzhDLEdBQ0F6QixHQUFBUSxF
QUFBbUIsRUFBQUQsT0FBQUMsSUFFQUYsR0FBQSxFQUNBQyxFQUFBQyxHQUtBRCxJQUtBLFFBQUFF
LEdBQUE5QixHQUNBLHlCQUFBQSxHQUFBMEIsRUFBQTFCLE9BQUFyMUYsR0FHQSxRQUFBbzNGLEdB
QUEvQixHQUNBLE1BQUFBLE9BRUdyMUYsR0FGSCxXQUNBLE1BQUE0MkYsSUF4Q0EsR0FBQTMrQyxJ
QUFBcjZDLEVBQUEsSUFBQWMsT0FBQTRDLFFBQUEsU0FBQWMsR0FBbUQsT0FBQW5FLEdBQUEsRUFB
Z0JBLEVBQUEwQyxVQUFBQyxPQUFzQjNDLElBQUEsQ0FBTyxHQUFBb0UsR0FBQTFCLFVBQUExQyxF
QUEyQixRQUFBd0UsS0FBQUosR0FBMEIzRCxPQUFBUyxVQUFBQyxlQUFBakIsS0FBQWtFLEVBQUFJ
LEtBQXlETCxFQUFBSyxHQUFBSixFQUFBSSxJQUFpQyxNQUFBTCxJQTRDL093a0IsR0FBQSxHQUFB
dXdFLEVBQUFDLEl4TnczdkJNLFNBQVVwNUYsRUFBUTRvQixFQUFxQmhwQixHQUU3QyxZeU50NnZC
QSxTQUFBbTRDLEdBQUF0aUIsRUFBQXZ4QixHQUE4QyxHQUFBRSxLQUFpQixRQUFBbkUsS0FBQXcx
QixHQUFxQnZ4QixFQUFBdWxCLFFBQUF4cEIsSUFBQSxHQUFvQ1MsT0FBQVMsVUFBQUMsZUFBQWpC
LEtBQUFzMUIsRUFBQXgxQixLQUE2RG1FLEVBQUFuRSxHQUFBdzFCLEVBQUF4MUIsR0FBc0IsT0FB
QW1FLEdBSTNNLFFBQUFpMUYsR0FBQWxDLEVBQUFDLEVBQUFDLEVBQUFqaUQsR0FDQSxnQkFBQWlG
LEVBQUFtQyxHQUNBLE1BQUE2NkMsR0FBQUYsRUFBQTk4QyxFQUFBbUMsR0FBQTQ2QyxFQUFBaGlE
LEVBQUFvSCxPQUlBLFFBQUE4OEMsR0FBQW5DLEVBQUFDLEVBQUFDLEVBQUFqaUQsRUFBQVUsR0FZ
QSxRQUFBeWpELEdBQUFDLEVBQUFDLEdBT0EsTUFOQXAvQyxHQUFBbS9DLEVBQ0FoOUMsRUFBQWk5
QyxFQUNBWixFQUFBMUIsRUFBQTk4QyxFQUFBbUMsR0FDQXM4QyxFQUFBMUIsRUFBQWhpRCxFQUFB
b0gsR0FDQXk4QyxFQUFBNUIsRUFBQXdCLEVBQUFDLEVBQUF0OEMsR0FDQWs5QyxHQUFBLEVBQ0FU
LEVBR0EsUUFBQVUsS0FNQSxNQUxBZCxHQUFBMUIsRUFBQTk4QyxFQUFBbUMsR0FFQTQ2QyxFQUFB
bDdDLG9CQUFBNDhDLEVBQUExQixFQUFBaGlELEVBQUFvSCxJQUVBeThDLEVBQUE1QixFQUFBd0Is
RUFBQUMsRUFBQXQ4QyxHQUlBLFFBQUFvOUMsS0FNQSxNQUxBekMsR0FBQWo3QyxvQkFBQTI4QyxF
QUFBMUIsRUFBQTk4QyxFQUFBbUMsSUFFQTQ2QyxFQUFBbDdDLG9CQUFBNDhDLEVBQUExQixFQUFB
aGlELEVBQUFvSCxJQUVBeThDLEVBQUE1QixFQUFBd0IsRUFBQUMsRUFBQXQ4QyxHQUlBLFFBQUFx
OUMsS0FDQSxHQUFBQyxHQUFBM0MsRUFBQTk4QyxFQUFBbUMsR0FDQXU5QyxHQUFBbEMsRUFBQWlD
LEVBQUFqQixFQUtBLE9BSkFBLEdBQUFpQixFQUVBQyxJQUFBZCxFQUFBNUIsRUFBQXdCLEVBQUFD
LEVBQUF0OEMsSUFFQXk4QyxFQUdBLFFBQUFlLEdBQUE1akIsRUFBQTZqQixHQUNBLEdBQUFDLElB
QUF2QyxFQUFBc0MsRUFBQXo5QyxHQUNBMjlDLEdBQUExQyxFQUFBcmhCLEVBQUEvN0IsRUFJQSxP
QUhBQSxHQUFBKzdCLEVBQ0E1NUIsRUFBQXk5QyxFQUVBQyxHQUFBQyxFQUFBUixJQUNBTyxFQUFB
TixJQUNBTyxFQUFBTixJQUNBWixFQTFEQSxHQUFBeEIsR0FBQTNoRCxFQUFBMmhELGVBQ0FFLEVB
QUE3aEQsRUFBQTZoRCxpQkFDQUUsRUFBQS9oRCxFQUFBK2hELG1CQUVBNkIsR0FBQSxFQUNBci9D
LE1BQUEsR0FDQW1DLE1BQUEsR0FDQXE4QyxNQUFBLEdBQ0FDLE1BQUEsR0FDQUcsTUFBQSxFQW9E
QSxpQkFBQTdpQixFQUFBNmpCLEdBQ0EsTUFBQVAsR0FBQU0sRUFBQTVqQixFQUFBNmpCLEdBQUFW
LEVBQUFuakIsRUFBQTZqQixJQVdBLFFBQUFHLEdBQUFobEQsRUFBQWdCLEdBQ0EsR0FBQTZoRCxH
QUFBN2hELEVBQUE2aEQsb0JBQ0FDLEVBQUE5aEQsRUFBQThoRCx1QkFDQUMsRUFBQS9oRCxFQUFB
K2hELGVBQ0FyMUQsRUFBQWlWLEVBQUEzQixHQUFBLGtFQUVBK2dELEVBQUFjLEVBQUE3aUQsRUFB
QXRTLEdBQ0FzMEQsRUFBQWMsRUFBQTlpRCxFQUFBdFMsR0FDQXUwRCxFQUFBYyxFQUFBL2lELEVB
QUF0UyxFQVFBLFFBRkFBLEVBQUF5MEQsS0FBQStCLEVBQUFELEdBRUFsQyxFQUFBQyxFQUFBQyxF
QUFBamlELEVBQUF0UyxHek5xMHZCaUNsYSxFQUF1QixFQUFJd3hFLEN5Tno2dkI1RHg2RixHQUFB
LE16Tm9od0JNLFNBQVVJLEVBQVE0b0IsRUFBcUJocEIsR0FFN0MsWUFFd0VBLEdBQW9CLEtBcUJ0
RixTQUFVSSxFQUFRNG9CLEVBQXFCaHBCLEdBRTdDLFlBQ3FCLElBQUk2OEMsR0FBc0M3OEMsRUFB
b0IsR0FDMUQ4OEMsRUFBOEM5OEMsRUFBb0JtQixFQUFFMDdDLEdBQ3BFNDlDLEVBQXNDejZGLEVB
QW9CLElBQzFEMDZGLEVBQTRDMTZGLEVBQW9CLElBQ2hFMjZGLEVBQW1EMzZGLEVBQW9CLEtBQ3ZF
NDZGLEVBQXdENTZGLEVBQW9CLEtBQzVFNjZGLEVBQXlDNzZGLEVBQW9CLEswTi9pd0JoRjg2RixF
QUFNLFNBQUE1a0QsR0FBQSxHQUFFNmtELEdBQUY3a0QsRUFBRTZrRCxNQUFPQyxFQUFUOWtELEVB
QVM4a0QsT0FBVCxPQUNWbCtDLEdBQUFoN0MsRUFBQW1HLGNBQUEsV0FDRTYwQyxFQUFBaDdDLEVB
QUFtRyxjQUFDMHlGLEVBQUEsR0FBT00sUUFBU0QsRUFBUUMsVUFDekJuK0MsRUFBQWg3QyxFQUFB
bUcsY0FBQzJ5RixFQUFBLEdBQVlHLE1BQU9BLEVBQU9DLFFBQVNBLEtBSXhDRixHQUFJcHFFLFdB
Q0ZxcUUsTUFBT2wrQyxFQUFBLFVBQVU1WCxNQUFNdVMsV0FDdkJ3akQsUUFBU24rQyxFQUFBLFVB
QVV4N0MsT0FBT20yQyxXQUc1QixJQUFNKy9DLEdBQWtCLFNBQUE5OEMsR0FBQSxPQUN0QnNnRCxN
QUFPdGdELEVBQU1zZ0QsUUFHVHZELEVBQXFCLFNBQUFoaUQsR0FBQSxPQUN2QndsRCxRQUFTbDZG
LE9BQUEyNUYsRUFBQSxHQUFtQkksRUFBYXJsRCxJQUc3Q3hzQixHQUFBLEVBQWVsb0IsT0FBQTQ1
RixFQUFBLEdBQ2JuRCxFQUNBQyxHQUNBc0QsSTFONmh3QkksU0FBVTE2RixFQUFRNG9CLEVBQXFC
aHBCLEdBRTdDLFlBSThmLFNBQVM2NEIsR0FBZ0Jyb0IsRUFBU3NvQixHQUFhLEtBQUt0b0IsWUFB
b0Jzb0IsSUFBYyxLQUFNLElBQUl4MUIsV0FBVSxxQ0FBdUMsUUFBU3EwQyxHQUEyQnJrQyxFQUFL
L1MsR0FBTSxJQUFJK1MsRUFBTSxLQUFNLElBQUlza0MsZ0JBQWUsNERBQThELFFBQU9yM0MsR0FB
cUIsaUJBQVBBLElBQStCLG1CQUFQQSxHQUF3QitTLEVBQUwvUyxFQUFXLFFBQVNzM0MsR0FBVUMs
RUFBU0MsR0FBWSxHQUF1QixtQkFBYkEsSUFBc0MsT0FBYkEsRUFBbUIsS0FBTSxJQUFJejBDLFdB
QVUsaUVBQWtFeTBDLEdBQWFELEdBQVN2MkMsVUFBVVQsT0FBTzZsQyxPQUFPb1IsR0FBWUEsRUFB
V3gyQyxXQUFXaU4sYUFBYWdHLE1BQU1zakMsRUFBUzcyQyxZQUFXLEVBQU0rMkMsVUFBUyxFQUFL
aDNDLGNBQWEsS0FBVysyQyxJQUFXajNDLE9BQU9tM0MsZUFBZW4zQyxPQUFPbTNDLGVBQWVILEVB
QVNDLEdBQVlELEVBQVNJLFVBQVVILEdBSDN3QyxHQUFJOEUsR0FBc0M3OEMsRUFBb0IsR0FDMUQ4
OEMsRUFBOEM5OEMsRUFBb0JtQixFQUFFMDdDLEdBQ3BFcStDLEVBQStDbDdGLEVBQW9CLElBQ3hG
aTlDLEVBQWEsV0FBVyxRQUFTQyxHQUFpQjE0QyxFQUFPZ1AsR0FBTyxJQUFJLEdBQUluVCxHQUFF
LEVBQUVBLEVBQUVtVCxFQUFNeFEsT0FBTzNDLElBQUksQ0FBQyxHQUFJNjVCLEdBQVcxbUIsRUFB
TW5ULEVBQUc2NUIsR0FBV2o1QixXQUFXaTVCLEVBQVdqNUIsYUFBWSxFQUFNaTVCLEVBQVdsNUIs
Y0FBYSxFQUFRLFNBQVVrNUIsS0FBV0EsRUFBVzhkLFVBQVMsR0FBS2wzQyxPQUFPQyxlQUFleUQs
RUFBTzAxQixFQUFXcjFCLElBQUlxMUIsSUFBYyxNQUFPLFVBQVNwQixFQUFZcWtCLEVBQVdDLEdB
QXVJLE1BQXZIRCxJQUFXRCxFQUFpQnBrQixFQUFZdjNCLFVBQVU0N0MsR0FBZUMsR0FBWUYsRUFB
aUJwa0IsRUFBWXNrQixHQUFvQnRrQixNMk45andCdmRxaUUsRTNOOGp3Qmt5QyxTQUFTNWdELEdB
QXlDLFFBQVM0Z0QsS0FBUyxHQUFJamxELEdBQVNvSCxFQUFNOUMsRUFBTStDLENBQUsxa0IsR0FB
Z0IzdkIsS0FBS2l5RixFQUFRLEtBQUksR0FBSXZrRCxHQUFLN3pDLFVBQVVDLE9BQU9WLEVBQUt3
UixNQUFNOGlDLEdBQU1FLEVBQUssRUFBRUEsRUFBS0YsRUFBS0UsSUFBUXgwQyxFQUFLdzBDLEdB
QU0vekMsVUFBVSt6QyxFQUFPLE9BQWF3RyxHQUFPOUMsRUFBTTdDLEVBQTJCenVDLE1BQU1ndEMs
RUFBS2lsRCxFQUFPampELFdBQVdwM0MsT0FBTzA4QyxlQUFlMjlDLElBQVM1NkYsS0FBS2sxQixN
QUFNeWdCLEdBQU1odEMsTUFBTXN2QixPQUFPbDJCLEtBQWVrNEMsRTJOemp3QnRyRDRnRCxXQUFh
LFNBQUE5aUYsR0FDUyxJQUFoQkEsRUFBS3RWLFFBQ1B3M0MsRUFBS2huQyxNQUFNeW5GLFFBQVEz
aUYsSTNOdWp3QndnRGlsQyxFQUF3T0QsRUFBTzNGLEVBQTJCNkMsRUFBTStDLEdBQWdjLE1BQXI2
QjFGLEdBQVVzakQsRUFBTzVnRCxHQUEyZDBDLEVBQWFrK0MsSUFBU3QyRixJQUFJLFNBQVMyUCxN
QUFNLFcyTmxqd0I3MUQsTUFDRXNvQyxHQUFBaDdDLEVBQUFtRyxjQUFBLFVBQVErMUMsVUFBVSxV
QUNoQmxCLEVBQUFoN0MsRUFBQW1HLGNBQUEsbUJBQ0E2MEMsRUFBQWg3QyxFQUFBbUcsY0FBQ2l6
RixFQUFBLEdBQWNyOUMsU0FBQSxFQUNBRCxPQUFRMTBDLEtBQUtreUYsV0FDYmg5QyxZQUFZLGdD
M042aXdCcXRFKzhDLEcyTjlqd0JwdEV0K0MsRUFBQSxVQUFmcytDLEdBQ1p6cUUsV0FDTHVxRSxR
QUFTcCtDLEVBQUEsVUFBVXZ3QixLQUFLa3JCLFkzTjRqd0JnNUV4dUIsRUFBdUIsRUFBSSxHQUlq
OEUsU0FBVTVvQixFQUFRNG9CLEVBQXFCaHBCLEdBRTdDLFlBTWdoQixTQUFTNjRCLEdBQWdCcm9C
LEVBQVNzb0IsR0FBYSxLQUFLdG9CLFlBQW9Cc29CLElBQWMsS0FBTSxJQUFJeDFCLFdBQVUscUNB
QXVDLFFBQVNxMEMsR0FBMkJya0MsRUFBSy9TLEdBQU0sSUFBSStTLEVBQU0sS0FBTSxJQUFJc2tD
LGdCQUFlLDREQUE4RCxRQUFPcjNDLEdBQXFCLGlCQUFQQSxJQUErQixtQkFBUEEsR0FBd0IrUyxF
QUFML1MsRUFBVyxRQUFTczNDLEdBQVVDLEVBQVNDLEdBQVksR0FBdUIsbUJBQWJBLElBQXNDLE9B
QWJBLEVBQW1CLEtBQU0sSUFBSXowQyxXQUFVLGlFQUFrRXkwQyxHQUFhRCxHQUFTdjJDLFVBQVVU
LE9BQU82bEMsT0FBT29SLEdBQVlBLEVBQVd4MkMsV0FBV2lOLGFBQWFnRyxNQUFNc2pDLEVBQVM3
MkMsWUFBVyxFQUFNKzJDLFVBQVMsRUFBS2gzQyxjQUFhLEtBQVcrMkMsSUFBV2ozQyxPQUFPbTND
LGVBQWVuM0MsT0FBT20zQyxlQUFlSCxFQUFTQyxHQUFZRCxFQUFTSSxVQUFVSCxHQUFZLFFBQVNz
akQsR0FBZ0J4bEUsRUFBSWh4QixFQUFJMlAsR0FBeUksTUFBL0gzUCxLQUFPZ3hCLEdBQUsvMEIs
T0FBT0MsZUFBZTgwQixFQUFJaHhCLEdBQUsyUCxNQUFNQSxFQUFNdlQsWUFBVyxFQUFLRCxjQUFh
LEVBQUtnM0MsVUFBUyxJQUFhbmlCLEVBQUloeEIsR0FBSzJQLEVBQWNxaEIsRUFMMTlDLEdBSzZl
eWxFLEdBTHpleitDLEVBQXNDNzhDLEVBQW9CLEdBQzFEODhDLEVBQThDOThDLEVBQW9CbUIsRUFB
RTA3QyxHQUNwRTArQyxFQUEwQ3Y3RixFQUFvQixLQUM5RHc3RixFQUF3Q3g3RixFQUFvQixLQUM1
RHk3RixFQUF1RHo3RixFQUFvQixJQUNoR2k5QyxFQUFhLFdBQVcsUUFBU0MsR0FBaUIxNEMsRUFB
T2dQLEdBQU8sSUFBSSxHQUFJblQsR0FBRSxFQUFFQSxFQUFFbVQsRUFBTXhRLE9BQU8zQyxJQUFJ
LENBQUMsR0FBSTY1QixHQUFXMW1CLEVBQU1uVCxFQUFHNjVCLEdBQVdqNUIsV0FBV2k1QixFQUFX
ajVCLGFBQVksRUFBTWk1QixFQUFXbDVCLGNBQWEsRUFBUSxTQUFVazVCLEtBQVdBLEVBQVc4ZCxV
QUFTLEdBQUtsM0MsT0FBT0MsZUFBZXlELEVBQU8wMUIsRUFBV3IxQixJQUFJcTFCLElBQWMsTUFB
TyxVQUFTcEIsRUFBWXFrQixFQUFXQyxHQUF1SSxNQUF2SEQsSUFBV0QsRUFBaUJwa0IsRUFBWXYz
QixVQUFVNDdDLEdBQWVDLEdBQVlGLEVBQWlCcGtCLEVBQVlza0IsR0FBb0J0a0IsTTROeGt3QnRl
NGlFLFlBQ0hELEVBQUEsRUFBVyxrQkFBTSxJQURkSixFQUFBQyxFQUVIRyxFQUFBLEVBQWMsU0FB
QUUsR0FBQSxPQUFTQSxFQUFLQyxZQUZ6QlAsRUFBQUMsRUFHSEcsRUFBQSxFQUFpQixTQUFBRSxH
QUFBLE1BQVFBLEdBQUtDLFlBSDNCTixHQU1lTyxFNU5ra3dCeThELFNBQVN0aEQsR0FBOEMsUUFB
U3NoRCxLQUFjLEdBQUkzbEQsR0FBU29ILEVBQU05QyxFQUFNK0MsQ0FBSzFrQixHQUFnQjN2QixL
QUFLMnlGLEVBQWEsS0FBSSxHQUFJamxELEdBQUs3ekMsVUFBVUMsT0FBT1YsRUFBS3dSLE1BQU04
aUMsR0FBTUUsRUFBSyxFQUFFQSxFQUFLRixFQUFLRSxJQUFReDBDLEVBQUt3MEMsR0FBTS96QyxV
QUFVK3pDLEVBQU8sT0FBYXdHLEdBQU85QyxFQUFNN0MsRUFBMkJ6dUMsTUFBTWd0QyxFQUFLMmxE
LEVBQVkzakQsV0FBV3AzQyxPQUFPMDhDLGVBQWVxK0MsSUFBY3Q3RixLQUFLazFCLE1BQU15Z0Is
R0FBTWh0QyxNQUFNc3ZCLE9BQU9sMkIsS0FBZWs0QyxFNE41andCdDNFQyxPQUFVNm1DLE9BQVFt
YSxFQUFBLEc1TjRqd0JrOEVqaEQsRTROMWp3QnA5RXNoRCxxQkFBdUIsV0FDckJ0aEQsRUFBS2hu
QyxNQUFNd25GLFFBQVFlLGtCNU55andCNGdGdmhELEU0TnRqd0JqaUZ3aEQsV0FBYSxTQUFBMWEs
R0FDWDltQyxFQUFLdGlCLFVBQVdvcEQsWTVOcWp3Qm1zRS9qQyxFQUFnWkQsRUFBTzNGLEVBQTJC
NkMsRUFBTStDLEdBQTRqRCxNQUF4dEUxRixHQUFVZ2tELEVBQVl0aEQsR0FBNm9CMEMsRUFBYTQr
QyxJQUFjaDNGLElBQUksa0JBQWtCMlAsTUFBTSxTNE5sandCM3JGeW5GLEdBQWdCLEdBQUFDLEdB
Q0hoekYsS0FBS3NLLE1BQXhCdW5GLEVBRHNCbUIsRUFDdEJuQixNQUFPQyxFQURla0IsRUFDZmxC
LE9BQ2YsSUFBSUQsRUFBTS8zRixPQUFTLEVBQ2pCLE1BQ0U4NUMsR0FBQWg3QyxFQUFBbUcsY0FB
QSxTQUFPKzFDLFVBQVUsYUFDVjd5QyxLQUFLLFdBQ0w2a0IsUUFBU2lzRSxJQUFtQmxCLEVBQU0v
M0YsT0FDbEM4c0IsU0FBVWtyRSxFQUFRbUIsaUI1TjJpd0JxK0Z0M0YsSUFBSSxlQUFlMlAsTUFB
TSxTNE50aXdCaGhHeW5GLEdBQWdCLEdBQ25CbEIsR0FBVTd4RixLQUFLc0ssTUFBZnVuRixNQUNB
elosRUFBV3A0RSxLQUFLdXhDLE1BQWhCNm1DLE9BQ0Y4YSxFQUFjckIsRUFBTS8zRixPQUFTaTVG
LENBRW5DLElBQUlsQixFQUFNLzNGLE9BQ1IsTUFDRTg1QyxHQUFBaDdDLEVBQUFtRyxjQUFDdXpG
LEVBQUEsR0FBT1MsZUFBZ0JBLEVBQ2hCRyxZQUFhQSxFQUNiOWEsT0FBUUEsRUFDUithLGlCQUFr
Qm56RixLQUFLNHlGLHFCQUFxQjduRixLQUFLL0ssTUFDakRvekYsT0FBUXB6RixLQUFLOHlGLFdB
QVcvbkYsS0FBSy9LLFc1TjJod0I2NkdyRSxJQUFJLFNBQVMyUCxNQUFNLFc0TnRod0JsK0csR0FB
QStuRixHQUNvQnJ6RixLQUFLc0ssTUFBeEJ1bkYsRUFERHdCLEVBQ0N4QixNQUFPQyxFQURSdUIs
RUFDUXZCLFFBQ1AxWixFQUFXcDRFLEtBQUt1eEMsTUFBaEI2bUMsT0FFRmtiLEVBQWdCekIsRUFB
TXpaLE9BQU9vYSxFQUFhcGEsSUFDMUMyYSxFQUFpQmxCLEVBQU1oa0QsT0FBTyxTQUFDM2tDLEVB
QU91cEYsR0FBUixNQUNsQ0EsR0FBS0MsVUFBWXhwRixFQUFRLEVBQUlBLEdBQzdCLEVBR0YsT0FD
RTBxQyxHQUFBaDdDLEVBQUFtRyxjQUFBLFdBQVMrMUMsVUFBVSxRQUNoQjkwQyxLQUFLdXpGLGdC
QUFnQlIsR0FDdEJuL0MsRUFBQWg3QyxFQUFBbUcsY0FBQSxNQUFJKzFDLFVBQVUsYUFDWHcrQyxF
QUFjeDRGLElBQUksU0FBQTIzRixHQUFBLE1BQ2pCNytDLEdBQUFoN0MsRUFBQW1HLGNBQUNzekYs
RUFBQSxFQUFEejZGLE9BQUE0QyxRQUFVbUIsSUFBSzgyRixFQUFLNzVELEdBQUk2NUQsS0FBTUEs
R0FBVVgsT0FHM0M5eEYsS0FBS3d6RixhQUFhVCxRNU5vZ3dCdXJJSixHNE5sa3dCenFJaC9DLEVB
QUEsVUFBcEJnL0MsR0FDWm5yRSxXQUNMcXFFLE1BQU9sK0MsRUFBQSxVQUFVNVgsTUFBTXVTLFdB
Q3ZCd2pELFFBQVNuK0MsRUFBQSxVQUFVeDdDLE9BQU9tMkMsWTVOK2p3QjQ3SXh1QixFQUF1QixF
QUFJLEdBSS8rSSxTQUFVNW9CLEVBQVE0b0IsRUFBcUJocEIsR0FFN0MsWUFNOGYsU0FBUzY0QixH
QUFnQnJvQixFQUFTc29CLEdBQWEsS0FBS3RvQixZQUFvQnNvQixJQUFjLEtBQU0sSUFBSXgxQixX
QUFVLHFDQUF1QyxRQUFTcTBDLEdBQTJCcmtDLEVBQUsvUyxHQUFNLElBQUkrUyxFQUFNLEtBQU0s
SUFBSXNrQyxnQkFBZSw0REFBOEQsUUFBT3IzQyxHQUFxQixpQkFBUEEsSUFBK0IsbUJBQVBBLEdB
QXdCK1MsRUFBTC9TLEVBQVcsUUFBU3MzQyxHQUFVQyxFQUFTQyxHQUFZLEdBQXVCLG1CQUFiQSxJ
QUFzQyxPQUFiQSxFQUFtQixLQUFNLElBQUl6MEMsV0FBVSxpRUFBa0V5MEMsR0FBYUQsR0FBU3Yy
QyxVQUFVVCxPQUFPNmxDLE9BQU9vUixHQUFZQSxFQUFXeDJDLFdBQVdpTixhQUFhZ0csTUFBTXNq
QyxFQUFTNzJDLFlBQVcsRUFBTSsyQyxVQUFTLEVBQUtoM0MsY0FBYSxLQUFXKzJDLElBQVdqM0Ms
T0FBT20zQyxlQUFlbjNDLE9BQU9tM0MsZUFBZUgsRUFBU0MsR0FBWUQsRUFBU0ksVUFBVUgsR0FM
M3dDLEdBQUk4RSxHQUFzQzc4QyxFQUFvQixHQUMxRDg4QyxFQUE4Qzk4QyxFQUFvQm1CLEVBQUUw
N0MsR0FDcEVFLEVBQTJDLzhDLEVBQW9CLElBQy9EZzlDLEVBQW1EaDlDLEVBQW9CbUIsRUFBRTQ3
QyxHQUN6RTQvQyxFQUErQzM4RixFQUFvQixJQUN4Rmk5QyxFQUFhLFdBQVcsUUFBU0MsR0FBaUIx
NEMsRUFBT2dQLEdBQU8sSUFBSSxHQUFJblQsR0FBRSxFQUFFQSxFQUFFbVQsRUFBTXhRLE9BQU8z
QyxJQUFJLENBQUMsR0FBSTY1QixHQUFXMW1CLEVBQU1uVCxFQUFHNjVCLEdBQVdqNUIsV0FBV2k1
QixFQUFXajVCLGFBQVksRUFBTWk1QixFQUFXbDVCLGNBQWEsRUFBUSxTQUFVazVCLEtBQVdBLEVB
QVc4ZCxVQUFTLEdBQUtsM0MsT0FBT0MsZUFBZXlELEVBQU8wMUIsRUFBV3IxQixJQUFJcTFCLElB
QWMsTUFBTyxVQUFTcEIsRUFBWXFrQixFQUFXQyxHQUF1SSxNQUF2SEQsSUFBV0QsRUFBaUJwa0Is
RUFBWXYzQixVQUFVNDdDLEdBQWVDLEdBQVlGLEVBQWlCcGtCLEVBQVlza0IsR0FBb0J0a0IsTTZO
cmx3QnZkOGpFLEU3TnFsd0JveUMsU0FBU3JpRCxHQUEyQyxRQUFTcWlELEtBQVcsR0FBSTFtRCxH
QUFTb0gsRUFBTTlDLEVBQU0rQyxDQUFLMWtCLEdBQWdCM3ZCLEtBQUswekYsRUFBVSxLQUFJLEdB
QUlobUQsR0FBSzd6QyxVQUFVQyxPQUFPVixFQUFLd1IsTUFBTThpQyxHQUFNRSxFQUFLLEVBQUVB
LEVBQUtGLEVBQUtFLElBQVF4MEMsRUFBS3cwQyxHQUFNL3pDLFVBQVUrekMsRUFBTyxPQUFhd0cs
R0FBTzlDLEVBQU03QyxFQUEyQnp1QyxNQUFNZ3RDLEVBQUswbUQsRUFBUzFrRCxXQUFXcDNDLE9B
QU8wOEMsZUFBZW8vQyxJQUFXcjhGLEtBQUtrMUIsTUFBTXlnQixHQUFNaHRDLE1BQU1zdkIsT0FB
T2wyQixLQUFlazRDLEU2Tjdrd0Jsc0RDLE9BQ0V5RCxTQUFTLEc3TjRrd0JtdEQxRCxFNk56a3dC
OXREcWlELGtCQUFvQixXQUNsQnJpRCxFQUFLdGlCLFVBQVdnbUIsU0FBUyxLN053a3dCdXdEMUQs
RTZOcmt3Qmx5RDRnRCxXQUFhLFNBQUN0NUQsRUFBSXhwQixHQUNJLElBQWhCQSxFQUFLdFYsT0FD
UHczQyxFQUFLaG5DLE1BQU1zcEYsV0FBV2g3RCxHQUV0QjBZLEVBQUtobkMsTUFBTXVwRixTQUFT
ajdELEVBQUl4cEIsR0FFMUJraUMsRUFBS3RpQixVQUFXZ21CLFNBQVMsSzdOK2p3QjRnRFgsRUFB
b1pELEVBQU8zRixFQUEyQjZDLEVBQU0rQyxHQUFrdEMsTUFBejJEMUYsR0FBVStrRCxFQUFTcmlE
LEdBQTJvQjBDLEVBQWEyL0MsSUFBVy8zRixJQUFJLFNBQVMyUCxNQUFNLFc2TjVqd0I1Z0UsR0FB
QXdvRixHQUFBOXpGLEtBQUFnekYsRUFDb0NoekYsS0FBS3NLLE1BQXhDbW9GLEVBRERPLEVBQ0NQ
LEtBQU1zQixFQURQZixFQUNPZSxhQUFjSCxFQURyQlosRUFDcUJZLFdBRXhCcnBGLFFBdUJKLE9B
ckJFQSxHQURFdkssS0FBS3V4QyxNQUFNeUQsUUFFWHBCLEVBQUFoN0MsRUFBQW1HLGNBQUMwMEYs
RUFBQSxHQUFjcmtGLEtBQU1xakYsRUFBS3JqRixLQUNYNGxDLFFBQVNoMUMsS0FBS3V4QyxNQUFN
eUQsUUFDcEJOLE9BQVEsU0FBQ3RsQyxHQUFELE1BQVUwa0YsR0FBSzVCLFdBQVdPLEVBQUs3NUQs
R0FBSXhwQixNQUkxRHdrQyxFQUFBaDdDLEVBQUFtRyxjQUFBLE9BQUsrMUMsVUFBVSxRQUNibEIs
RUFBQWg3QyxFQUFBbUcsY0FBQSxTQUFPKzFDLFVBQVUsU0FDVjd5QyxLQUFLLFdBQ0w2a0IsUUFB
UzJyRSxFQUFLQyxVQUNkOXJFLFNBQVUsaUJBQU1tdEUsR0FBYXRCLEVBQUs3NUQsT0FDekNnYixF
QUFBaDdDLEVBQUFtRyxjQUFBLFNBQU9pMUYsY0FBZWgwRixLQUFLMnpGLG1CQUN4QmxCLEVBQUty
akYsTUFFUndrQyxFQUFBaDdDLEVBQUFtRyxjQUFBLFVBQVErMUMsVUFBVSxVQUNWbS9DLFFBQVMs
aUJBQU1MLEdBQVduQixFQUFLNzVELFFBTTNDZ2IsRUFBQWg3QyxFQUFBbUcsY0FBQSxNQUFJKzFD
LFVBQVdoQixLQUNiNCtDLFVBQVdELEVBQUtDLFVBQ2hCMTlDLFFBQVNoMUMsS0FBS3V4QyxNQUFN
eUQsV0FFbkJ6cUMsTzdONmh3QnFyR21wRixHNk5ybHdCeHBHLy9DLEVBQUEsVUFBakIrL0MsR0FD
WmxzRSxXQUNMaXJFLEtBQU05K0MsRUFBQSxVQUFVeDdDLE9BQU9tMkMsV0FDdkJ1bEQsU0FBVWxn
RCxFQUFBLFVBQVV2d0IsS0FBS2tyQixXQUN6QnNsRCxXQUFZamdELEVBQUEsVUFBVXZ3QixLQUFL
a3JCLFdBQzNCeWxELGFBQWNwZ0QsRUFBQSxVQUFVdndCLEtBQUtrckIsWTdOZ2x3QndqSHh1QixF
QUF1QixFQUFJLEdBSTltSCxTQUFVNW9CLEVBQVE0b0IsRUFBcUJocEIsR0FFN0MsWUFNaWhCLFNB
QVM2NEIsR0FBZ0Jyb0IsRUFBU3NvQixHQUFhLEtBQUt0b0IsWUFBb0Jzb0IsSUFBYyxLQUFNLElB
QUl4MUIsV0FBVSxxQ0FBdUMsUUFBU3EwQyxHQUEyQnJrQyxFQUFLL1MsR0FBTSxJQUFJK1MsRUFB
TSxLQUFNLElBQUlza0MsZ0JBQWUsNERBQThELFFBQU9yM0MsR0FBcUIsaUJBQVBBLElBQStCLG1C
QUFQQSxHQUF3QitTLEVBQUwvUyxFQUFXLFFBQVNzM0MsR0FBVUMsRUFBU0MsR0FBWSxHQUF1Qixt
QkFBYkEsSUFBc0MsT0FBYkEsRUFBbUIsS0FBTSxJQUFJejBDLFdBQVUsaUVBQWtFeTBDLEdBQWFE
LEdBQVN2MkMsVUFBVVQsT0FBTzZsQyxPQUFPb1IsR0FBWUEsRUFBV3gyQyxXQUFXaU4sYUFBYWdH
LE1BQU1zakMsRUFBUzcyQyxZQUFXLEVBQU0rMkMsVUFBUyxFQUFLaDNDLGNBQWEsS0FBVysyQyxJ
QUFXajNDLE9BQU9tM0MsZUFBZW4zQyxPQUFPbTNDLGVBQWVILEVBQVNDLEdBQVlELEVBQVNJLFVB
QVVILEdBQVksUUFBU3NqRCxHQUFnQnhsRSxFQUFJaHhCLEVBQUkyUCxHQUF5SSxNQUEvSDNQLEtB
QU9neEIsR0FBSy8wQixPQUFPQyxlQUFlODBCLEVBQUloeEIsR0FBSzJQLE1BQU1BLEVBQU12VCxZ
QUFXLEVBQUtELGNBQWEsRUFBS2czQyxVQUFTLElBQWFuaUIsRUFBSWh4QixHQUFLMlAsRUFBY3Fo
QixFQUwzOUMsR0FLNmV1bkUsR0FMemV2Z0QsRUFBc0M3OEMsRUFBb0IsR0FDMUQ4OEMsRUFBOEM5
OEMsRUFBb0JtQixFQUFFMDdDLEdBQ3BFRSxFQUEyQy84QyxFQUFvQixJQUMvRGc5QyxFQUFtRGg5
QyxFQUFvQm1CLEVBQUU0N0MsR0FDekVzZ0QsRUFBdURyOUYsRUFBb0IsSUFDaEdpOUMsRUFBYSxX
QUFXLFFBQVNDLEdBQWlCMTRDLEVBQU9nUCxHQUFPLElBQUksR0FBSW5ULEdBQUUsRUFBRUEsRUFB
RW1ULEVBQU14USxPQUFPM0MsSUFBSSxDQUFDLEdBQUk2NUIsR0FBVzFtQixFQUFNblQsRUFBRzY1
QixHQUFXajVCLFdBQVdpNUIsRUFBV2o1QixhQUFZLEVBQU1pNUIsRUFBV2w1QixjQUFhLEVBQVEs
U0FBVWs1QixLQUFXQSxFQUFXOGQsVUFBUyxHQUFLbDNDLE9BQU9DLGVBQWV5RCxFQUFPMDFCLEVB
QVdyMUIsSUFBSXExQixJQUFjLE1BQU8sVUFBU3BCLEVBQVlxa0IsRUFBV0MsR0FBdUksTUFBdkhE
LElBQVdELEVBQWlCcGtCLEVBQVl2M0IsVUFBVTQ3QyxHQUFlQyxHQUFZRixFQUFpQnBrQixFQUFZ
c2tCLEdBQW9CdGtCLE04Tmptd0J0ZXdrRSxZQUNIRCxFQUFBLEVBQVcsT0FEUmhDLEVBQUErQixF
QUVIQyxFQUFBLEVBQWMsVUFGWGhDLEVBQUErQixFQUdIQyxFQUFBLEVBQWlCLGFBSGRELEdBTWVH
LEU5TjJsd0IrM0QsU0FBU2hqRCxHQUF5QyxRQUFTZ2pELEtBQXNDLE1BQTdCMWtFLEdBQWdCM3ZC
LEtBQUtxMEYsR0FBZTVsRCxFQUEyQnp1QyxNQUFNcTBGLEVBQU9ybEQsV0FBV3AzQyxPQUFPMDhD
LGVBQWUrL0MsSUFBUzluRSxNQUFNdnNCLEtBQUtuRyxZQUF5eEQsTUFBejhEODBDLEdBQVUwbEQs
RUFBT2hqRCxHQUE0SzBDLEVBQWFzZ0QsSUFBUzE0RixJQUFJLGtCQUFrQjJQLE1BQU0sVzhObGx3
QnBvRSxHQUNSNG5GLEdBQWdCbHpGLEtBQUtzSyxNQUFyQjRvRixZQUNGb0IsRUFBMkIsSUFBaEJw
QixFQUFvQixPQUFTLE9BRTlDLE9BQ0V0L0MsR0FBQWg3QyxFQUFBbUcsY0FBQSxRQUFNKzFDLFVB
QVUsY0FDZGxCLEVBQUFoN0MsRUFBQW1HLGNBQUEsY0FBU20wRixHQUFlLE1BRDFCLElBQzBDb0Is
RUFEMUMsWTlONmt3QjA5RTM0RixJQUFJLG1CQUFtQjJQLE1BQU0sUzhOdmt3QjErRThzRSxHQUNm
LEdBQU1sOEMsR0FBUWs0RCxFQUFjaGMsR0FETDRhLEVBRW9CaHpGLEtBQUtzSyxNQUFoQ2lxRixF
QUZPdkIsRUFFZjVhLE9BQXdCZ2IsRUFGVEosRUFFU0ksTUFFaEMsT0FDRXgvQyxHQUFBaDdDLEVB
QUFtRyxjQUFBLEtBQUcrMUMsVUFBV2hCLEtBQWE3WixTQUFVbStDLElBQVdtYyxJQUM3Q3R1QyxP
QUFTK3dCLE9BQVEsV0FDakJpZCxRQUFTLGlCQUFNYixHQUFPaGIsS0FDdEJsOEMsTTlOK2p3Qisz
RnZnQyxJQUFJLG9CQUFvQjJQLE1BQU0sVzhOMWp3Qmg1RixHQUFBK25GLEdBQzJCcnpGLEtBQUtz
SyxNQUExQ3lvRixFQURVTSxFQUNWTixlQUFnQkksRUFETkUsRUFDTUYsZ0JBQ3hCLElBQUlKLEVB
QWlCLEVBQ25CLE1BQ0VuL0MsR0FBQWg3QyxFQUFBbUcsY0FBQSxVQUFRKzFDLFVBQVUsa0JBQ1Zt
L0MsUUFBU2QsR0FEakIsc0I5TnNqd0JrdEd4M0YsSUFBSSxTQUFTMlAsTUFBTSxXOE45aXdCbHVH
LEdBQUF3b0YsR0FBQTl6RixJQUNQLE9BQ0U0ekMsR0FBQWg3QyxFQUFBbUcsY0FBQSxVQUFRKzFD
LFVBQVUsVUFDZjkwQyxLQUFLdzBGLGtCQUNONWdELEVBQUFoN0MsRUFBQW1HLGNBQUEsTUFBSSsx
QyxVQUFVLFlBQ1RxL0MsRUFBQSxFQUFVQSxFQUFBLEVBQWFBLEVBQUEsR0FBaUJyNUYsSUFBSSxT
QUFBczlFLEdBQUEsTUFDN0N4a0MsR0FBQWg3QyxFQUFBbUcsY0FBQSxNQUFJcEQsSUFBS3k4RSxH
QUNOMGIsRUFBS1csaUJBQWlCcmMsT0FJNUJwNEUsS0FBSzAwRix5QjlObWl3QjIySEwsRzhOM2x3
QnIxSDFnRCxFQUFBLFVBQWYwZ0QsR0FDWjdzRSxXQUNMdXJFLGVBQWdCcC9DLEVBQUEsVUFBVTNo
QixPQUFPc2MsV0FDakM0a0QsWUFBYXYvQyxFQUFBLFVBQVUzaEIsT0FBT3NjLFdBQzlCOHBDLE9B
QVF6a0MsRUFBQSxVQUFVNzZCLE9BQU93MUIsV0FDekI2a0QsaUJBQWtCeC9DLEVBQUEsVUFBVXZ3
QixLQUFLa3JCLFdBQ2pDOGtELE9BQVF6L0MsRUFBQSxVQUFVdndCLEtBQUtrckIsWTlOcWx3Qjgw
SXh1QixFQUF1QixFQUFJLEdBSTkzSSxTQUFVNW9CLEVBQVE0b0IsRUFBcUJocEIsR0FFN0MsWUFD
QWMsUUFBT0MsZUFBZWlvQixFQUFxQixjQUFnQnhVLE9BQU8sSUFDbkN4VSxFQUFvQlUsRUFBRXNv
QixFQUFxQixVQUFXLFdBQWEsTUFBT2l5RSxLQUMxRWo3RixFQUFvQlUsRUFBRXNvQixFQUFxQixh
QUFjLFdBQWEsTUFBTzh6RSxLQUM3RTk4RixFQUFvQlUsRUFBRXNvQixFQUFxQixXQUFZLFdBQWEs
TUFBTyt6RSxLQUMzRS84RixFQUFvQlUsRUFBRXNvQixFQUFxQixlQUFnQixXQUFhLE1BQU9pMEUs
S0FDL0VqOUYsRUFBb0JVLEVBQUVzb0IsRUFBcUIsY0FBZSxXQUFhLE1BQU9tekUsS0FDOUVuOEYs
RUFBb0JVLEVBQUVzb0IsRUFBcUIsaUJBQWtCLFdBQWEsTUFBTyt5RSxJQUMzRixJQUFJOEIsR0FB
dUQ3OUYsRUFBb0IsSStOam53QnZGaTdGLEVBQVUsU0FBQTNpRixHQUFBLE9BQVduTixLQUFNMHlG
LEVBQUEsRUFBZ0J2bEYsU0FDM0N3a0YsRUFBYSxTQUFBaDdELEdBQUEsT0FBUzMyQixLQUFNMHlG
LEVBQUEsRUFBbUIvN0QsT0FDL0NpN0QsRUFBVyxTQUFDajdELEVBQUl4cEIsR0FBTCxPQUFpQm5O
LEtBQU0weUYsRUFBQSxFQUFpQi83RCxLQUFJeHBCLFNBQ3ZEMmtGLEVBQWUsU0FBQW43RCxHQUFB
LE9BQVMzMkIsS0FBTTB5RixFQUFBLEVBQXFCLzdELE9BQ25EcTZELEVBQWMsa0JBQVNoeEYsS0FB
TTB5RixFQUFBLElBQzdCOUIsRUFBaUIsa0JBQVM1d0YsS0FBTTB5RixFQUFBLEsvTmlud0J2QyxT
QUFVejlGLEVBQVE0b0IsRUFBcUJocEIsR0FFN0MsWUFDcUIsSUFBSTQ0RixHQUFzQzU0RixFQUFv
QixJQUMxRDg5RixFQUF1Qzk5RixFQUFvQixLZ096bndCOUUrOUYsRUFBY2o5RixPQUFBODNGLEVB
QUEsSUFDbEJtQyxNQUFBK0MsRUFBQSxHQUdGOTBFLEdBQUEsS2hPMG53Qk0sU0FBVTVvQixFQUFR
NG9CLEVBQXFCaHBCLEdBRTdDLFlBR0EsU0FBU2crRixHQUFtQnZsRSxHQUFLLEdBQUcza0IsTUFB
TXNYLFFBQVFxTixHQUFLLENBQUMsSUFBSSxHQUFJcDRCLEdBQUUsRUFBRTQ5RixFQUFLbnFGLE1B
QU0ya0IsRUFBSXoxQixRQUFRM0MsRUFBRW80QixFQUFJejFCLE9BQU8zQyxJQUFLNDlGLEVBQUs1
OUYsR0FBR280QixFQUFJcDRCLEVBQUksT0FBTzQ5RixHQUFXLE1BQU9ucUYsT0FBTXBQLEtBQUsr
ekIsR2lPbG93QmxKLFFBQVNzaUUsS0FBb0MsR0FBOUJ0Z0QsR0FBOEIxM0MsVUFBQUMsT0FBQSxP
QUFBWixLQUFBVyxVQUFBLEdBQUFBLFVBQUEsR0FBdEI4eUQsRUFBY3BnQixFQUFRMXlDLFVBQUEs
RUFDMUQsUUFBUTB5QyxFQUFPdHFDLE1BQ2IsSUFBSzB5RixHQUFBLEVBQ0gsU0FBQXJsRSxPQUFB
d2xFLEVBQ0t2akQsS0FFRDNZLEdBQUkyWSxFQUFNMUQsT0FBTyxTQUFDbW5ELEVBQU92QyxHQUFS
LE1BQWlCbDBGLE1BQUt5OEQsSUFBSXkzQixFQUFLNzVELEdBQUlvOEQsS0FBUyxHQUFLLEVBQ2xF
dEMsV0FBVyxFQUNYdGpGLEtBQU1tOUIsRUFBT245QixPQUluQixLQUFLdWxGLEdBQUEsRUFDSCxN
QUFPcGpELEdBQU02bUMsT0FBTyxTQUFBcWEsR0FBQSxNQUNsQkEsR0FBSzc1RCxLQUFPMlQsRUFB
TzNULElBR3ZCLEtBQUsrN0QsR0FBQSxFQUNILE1BQU9wakQsR0FBTXoyQyxJQUFJLFNBQUEyM0Ys
R0FBQSxNQUNmQSxHQUFLNzVELEtBQU8yVCxFQUFPM1QsR0FBbkJoaEMsT0FBQTRDLFVBQ09pNEYs
R0FBTXJqRixLQUFNbTlCLEVBQU9uOUIsT0FDeEJxakYsR0FHTixLQUFLa0MsR0FBQSxFQUNILE1B
QU9wakQsR0FBTXoyQyxJQUFJLFNBQUEyM0YsR0FBQSxNQUNmQSxHQUFLNzVELEtBQU8yVCxFQUFP
M1QsR0FBbkJoaEMsT0FBQTRDLFVBQ09pNEYsR0FBTUMsV0FBWUQsRUFBS0MsWUFDNUJELEdBR04s
S0FBS2tDLEdBQUEsRUFDSCxHQUFNTSxHQUFlMWpELEVBQU13WSxNQUFNLFNBQUEwb0MsR0FBQSxN
QUFRQSxHQUFLQyxXQUM5QyxPQUFPbmhELEdBQU16MkMsSUFBSSxTQUFBMjNGLEdBQUEsTUFBQTc2
RixRQUFBNEMsVUFDWmk0RixHQUNIQyxXQUFZdUMsS0FHaEIsS0FBS04sR0FBQSxFQUNILE1BQU9w
akQsR0FBTTZtQyxPQUFPLFNBQUFxYSxHQUFBLE9BQTJCLElBQW5CQSxFQUFLQyxXQUVuQyxTQUNF
LE1BQU9uaEQsSWpPc2x3Qm9CenhCLEVBQXVCLEVBQUkreEUsQ0FDdkMsSUFBSThDLEdBQXVENzlG
LEVBQW9CLElpT25vd0I5RjYxRCxNak93b3dCQSxTQUFVejFELEVBQVFEIiwiZmlsZSI6InN0YXRp
Yy9qcy9tYWluLjE4YjQwOWUxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKi8gKGZ1bmN0
aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9k
dWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioq
L1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlv
biBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRc
dC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxl
ZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9k
dWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8g
Q3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiov
IFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioq
LyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8g
XHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0
XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21v
ZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9k
dWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4v
KioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiov
IFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioq
KioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tf
bW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xu
LyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiov
IFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4v
KioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xu
LyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1l
LCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9y
dHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0
cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioq
Ki8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRl
clxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoq
KioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0
aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3Jl
cXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9
IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBn
ZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRc
dFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioq
KiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioq
KioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioq
LyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRf
X3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVy
biBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7
IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoq
KioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi4vXCI7XG4vKioqKioqL1xuLyoqKioq
Ki8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0
cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gOTcpO1xu
LyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoq
Ki8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
InVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5c
bi8qKlxuICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3aGljaCB5b3VyIHByb2dy
YW0gYXNzdW1lcyB0byBiZSB0cnVlLlxuICpcbiAqIFByb3ZpZGUgc3ByaW50Zi1zdHlsZSBmb3Jt
YXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzXG4gKiB0byBwcm92aWRlIGlu
Zm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdlcmVcbiAqIGV4cGVjdGlu
Zy5cbiAqXG4gKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBzdHJpcHBlZCBpbiBwcm9k
dWN0aW9uLCBidXQgdGhlIGludmFyaWFudFxuICogd2lsbCByZW1haW4gdG8gZW5zdXJlIGxvZ2lj
IGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLlxuICovXG5cbnZhciB2YWxpZGF0ZUZvcm1h
dCA9IGZ1bmN0aW9uIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCkge307XG5cbmlmIChmYWxzZSkge1xu
ICB2YWxpZGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCkge1xuICAg
IGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZh
cmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgfTtc
bn1cblxuZnVuY3Rpb24gaW52YXJpYW50KGNvbmRpdGlvbiwgZm9ybWF0LCBhLCBiLCBjLCBkLCBl
LCBmKSB7XG4gIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCk7XG5cbiAgaWYgKCFjb25kaXRpb24pIHtc
biAgICB2YXIgZXJyb3I7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBl
cnJvciA9IG5ldyBFcnJvcignTWluaWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5v
bi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgJyArICdmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2Fn
ZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLicpO1xuICAgIH0gZWxzZSB7XG4gICAg
ICB2YXIgYXJncyA9IFthLCBiLCBjLCBkLCBlLCBmXTtcbiAgICAgIHZhciBhcmdJbmRleCA9IDA7
XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24g
KCkge1xuICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcbiAgICAgIH0pKTtcbiAgICAg
IGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgfVxuXG4gICAgZXJyb3Iu
ZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IGludmFyaWFudCdzIG93biBm
cmFtZVxuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW52YXJp
YW50O1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENv
cHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg2KTtcblxuLyoqXG4gKiBTaW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dz
IGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuXG4gKiBUaGlzIGNhbiBiZSB1
c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2Fs
XG4gKiBwYXRocy4gUmVtb3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBmb3IgcHJvZHVjdGlvbiBlbnZp
cm9ubWVudHMgd2lsbCBrZWVwIHRoZVxuICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1l
IGNvZGUgcGF0aHMuXG4gKi9cblxudmFyIHdhcm5pbmcgPSBlbXB0eUZ1bmN0aW9uO1xuXG5pZiAo
ZmFsc2UpIHtcbiAgdmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uIHByaW50V2FybmluZyhmb3Jt
YXQpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5
KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5Kysp
IHtcbiAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAg
IHZhciBhcmdJbmRleCA9IDA7XG4gICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIGZvcm1h
dC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYXJnc1thcmdJbmRl
eCsrXTtcbiAgICB9KTtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7
XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAg
Ly8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAgLy8gVGhpcyBlcnJv
ciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0
YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5p
bmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNo
ICh4KSB7fVxuICB9O1xuXG4gIHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKGNvbmRpdGlvbiwg
Zm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2B3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMg
YSB3YXJuaW5nICcgKyAnbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cblxuICAgIGlmIChmb3Jt
YXQuaW5kZXhPZignRmFpbGVkIENvbXBvc2l0ZSBwcm9wVHlwZTogJykgPT09IDApIHtcbiAgICAg
IHJldHVybjsgLy8gSWdub3JlIENvbXBvc2l0ZUNvbXBvbmVudCBwcm9wdHlwZSBjaGVjay5cbiAg
ICB9XG5cbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1
bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIgPiAyID8gX2xlbjIgLSAyIDogMCksIF9r
ZXkyID0gMjsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgICBhcmdzW19rZXkyIC0g
Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgICAgfVxuXG4gICAgICBwcmludFdhcm5pbmcuYXBw
bHkodW5kZWZpbmVkLCBbZm9ybWF0XS5jb25jYXQoYXJncykpO1xuICAgIH1cbiAgfTtcbn1cblxu
bW9kdWxlLmV4cG9ydHMgPSB3YXJuaW5nO1xuXG4vKioqLyB9KSxcbi8qIDIgKi9cbi8qKiovIChm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ug
c3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuXG4v
KipcbiAqIFdBUk5JTkc6IERPIE5PVCBtYW51YWxseSByZXF1aXJlIHRoaXMgbW9kdWxlLlxuICog
VGhpcyBpcyBhIHJlcGxhY2VtZW50IGZvciBgaW52YXJpYW50KC4uLilgIHVzZWQgYnkgdGhlIGVy
cm9yIGNvZGUgc3lzdGVtXG4gKiBhbmQgd2lsbCBfb25seV8gYmUgcmVxdWlyZWQgYnkgdGhlIGNv
cnJlc3BvbmRpbmcgYmFiZWwgcGFzcy5cbiAqIEl0IGFsd2F5cyB0aHJvd3MuXG4gKi9cblxuZnVu
Y3Rpb24gcmVhY3RQcm9kSW52YXJpYW50KGNvZGUpIHtcbiAgdmFyIGFyZ0NvdW50ID0gYXJndW1l
bnRzLmxlbmd0aCAtIDE7XG5cbiAgdmFyIG1lc3NhZ2UgPSAnTWluaWZpZWQgUmVhY3QgZXJyb3Ig
IycgKyBjb2RlICsgJzsgdmlzaXQgJyArICdodHRwOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0
L2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0nICsgY29kZTtcblxuICBmb3IgKHZh
ciBhcmdJZHggPSAwOyBhcmdJZHggPCBhcmdDb3VudDsgYXJnSWR4KyspIHtcbiAgICBtZXNzYWdl
ICs9ICcmYXJnc1tdPScgKyBlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2FyZ0lkeCArIDFd
KTtcbiAgfVxuXG4gIG1lc3NhZ2UgKz0gJyBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhl
IG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQnICsgJyBmb3IgZnVsbCBlcnJvcnMgYW5kIGFk
ZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nO1xuXG4gIHZhciBlcnJvciA9IG5ldyBFcnJvciht
ZXNzYWdlKTtcbiAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgZXJyb3Iu
ZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IHJlYWN0UHJvZEludmFyaWFu
dCdzIG93biBmcmFtZVxuXG4gIHRocm93IGVycm9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJl
YWN0UHJvZEludmFyaWFudDtcblxuLyoqKi8gfSksXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwi
O1xuLypcbm9iamVjdC1hc3NpZ25cbihjKSBTaW5kcmUgU29yaHVzXG5AbGljZW5zZSBNSVRcbiov
XG5cblxuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbnZhciBnZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGhhc093blBy
b3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBwcm9wSXNFbnVt
ZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuZnVuY3Rp
b24gdG9PYmplY3QodmFsKSB7XG5cdGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmlu
ZWQpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBj
YWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCcpO1xuXHR9XG5cblx0cmV0dXJuIE9iamVjdCh2
YWwpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRVc2VOYXRpdmUoKSB7XG5cdHRyeSB7XG5cdFx0aWYg
KCFPYmplY3QuYXNzaWduKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8g
RGV0ZWN0IGJ1Z2d5IHByb3BlcnR5IGVudW1lcmF0aW9uIG9yZGVyIGluIG9sZGVyIFY4IHZlcnNp
b25zLlxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRh
aWw/aWQ9NDExOFxuXHRcdHZhciB0ZXN0MSA9IG5ldyBTdHJpbmcoJ2FiYycpOyAgLy8gZXNsaW50
LWRpc2FibGUtbGluZSBuby1uZXctd3JhcHBlcnNcblx0XHR0ZXN0MVs1XSA9ICdkZSc7XG5cdFx0
aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QxKVswXSA9PT0gJzUnKSB7XG5cdFx0
XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9y
Zy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MiA9IHt9O1xuXHRcdGZv
ciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykge1xuXHRcdFx0dGVzdDJbJ18nICsgU3RyaW5nLmZy
b21DaGFyQ29kZShpKV0gPSBpO1xuXHRcdH1cblx0XHR2YXIgb3JkZXIyID0gT2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXModGVzdDIpLm1hcChmdW5jdGlvbiAobikge1xuXHRcdFx0cmV0dXJuIHRl
c3QyW25dO1xuXHRcdH0pO1xuXHRcdGlmIChvcmRlcjIuam9pbignJykgIT09ICcwMTIzNDU2Nzg5
Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5j
aHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDMgPSB7
fTtcblx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9u
IChsZXR0ZXIpIHtcblx0XHRcdHRlc3QzW2xldHRlcl0gPSBsZXR0ZXI7XG5cdFx0fSk7XG5cdFx0
aWYgKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sIHRlc3QzKSkuam9pbignJykgIT09XG5c
dFx0XHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0
XHR9XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0Ly8gV2UgZG9u
J3QgZXhwZWN0IGFueSBvZiB0aGUgYWJvdmUgdG8gdGhyb3csIGJ1dCBiZXR0ZXIgdG8gYmUgc2Fm
ZS5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaG91bGRV
c2VOYXRpdmUoKSA/IE9iamVjdC5hc3NpZ24gOiBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UpIHtc
blx0dmFyIGZyb207XG5cdHZhciB0byA9IHRvT2JqZWN0KHRhcmdldCk7XG5cdHZhciBzeW1ib2xz
O1xuXG5cdGZvciAodmFyIHMgPSAxOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsgcysrKSB7XG5cdFx0
ZnJvbSA9IE9iamVjdChhcmd1bWVudHNbc10pO1xuXG5cdFx0Zm9yICh2YXIga2V5IGluIGZyb20p
IHtcblx0XHRcdGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZyb20sIGtleSkpIHtcblx0XHRcdFx0
dG9ba2V5XSA9IGZyb21ba2V5XTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoZ2V0T3duUHJv
cGVydHlTeW1ib2xzKSB7XG5cdFx0XHRzeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGZy
b20pO1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzeW1ib2xzLmxlbmd0aDsgaSsrKSB7XG5c
dFx0XHRcdGlmIChwcm9wSXNFbnVtZXJhYmxlLmNhbGwoZnJvbSwgc3ltYm9sc1tpXSkpIHtcblx0
XHRcdFx0XHR0b1tzeW1ib2xzW2ldXSA9IGZyb21bc3ltYm9sc1tpXV07XG5cdFx0XHRcdH1cblx0
XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdG87XG59O1xuXG5cbi8qKiovIH0pLFxuLyog
NCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG5cblxudmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxudmFy
IERPTVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG52YXIgUmVhY3RET01Db21w
b25lbnRGbGFncyA9IF9fd2VicGFja19yZXF1aXJlX18oNTgpO1xuXG52YXIgaW52YXJpYW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxudmFyIEFUVFJfTkFNRSA9IERPTVByb3BlcnR5LklE
X0FUVFJJQlVURV9OQU1FO1xudmFyIEZsYWdzID0gUmVhY3RET01Db21wb25lbnRGbGFncztcblxu
dmFyIGludGVybmFsSW5zdGFuY2VLZXkgPSAnX19yZWFjdEludGVybmFsSW5zdGFuY2UkJyArIE1h
dGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO1xuXG4vKipcbiAqIENoZWNrIGlmIGEg
Z2l2ZW4gbm9kZSBzaG91bGQgYmUgY2FjaGVkLlxuICovXG5mdW5jdGlvbiBzaG91bGRQcmVjYWNo
ZU5vZGUobm9kZSwgbm9kZUlEKSB7XG4gIHJldHVybiBub2RlLm5vZGVUeXBlID09PSAxICYmIG5v
ZGUuZ2V0QXR0cmlidXRlKEFUVFJfTkFNRSkgPT09IFN0cmluZyhub2RlSUQpIHx8IG5vZGUubm9k
ZVR5cGUgPT09IDggJiYgbm9kZS5ub2RlVmFsdWUgPT09ICcgcmVhY3QtdGV4dDogJyArIG5vZGVJ
RCArICcgJyB8fCBub2RlLm5vZGVUeXBlID09PSA4ICYmIG5vZGUubm9kZVZhbHVlID09PSAnIHJl
YWN0LWVtcHR5OiAnICsgbm9kZUlEICsgJyAnO1xufVxuXG4vKipcbiAqIERyaWxsIGRvd24gKHRo
cm91Z2ggY29tcG9zaXRlcyBhbmQgZW1wdHkgY29tcG9uZW50cykgdW50aWwgd2UgZ2V0IGEgaG9z
dCBvclxuICogaG9zdCB0ZXh0IGNvbXBvbmVudC5cbiAqXG4gKiBUaGlzIGlzIHByZXR0eSBwb2x5
bW9ycGhpYyBidXQgdW5hdm9pZGFibGUgd2l0aCB0aGUgY3VycmVudCBzdHJ1Y3R1cmUgd2UgaGF2
ZVxuICogZm9yIGBfcmVuZGVyZWRDaGlsZHJlbmAuXG4gKi9cbmZ1bmN0aW9uIGdldFJlbmRlcmVk
SG9zdE9yVGV4dEZyb21Db21wb25lbnQoY29tcG9uZW50KSB7XG4gIHZhciByZW5kZXJlZDtcbiAg
d2hpbGUgKHJlbmRlcmVkID0gY29tcG9uZW50Ll9yZW5kZXJlZENvbXBvbmVudCkge1xuICAgIGNv
bXBvbmVudCA9IHJlbmRlcmVkO1xuICB9XG4gIHJldHVybiBjb21wb25lbnQ7XG59XG5cbi8qKlxu
ICogUG9wdWxhdGUgYF9ob3N0Tm9kZWAgb24gdGhlIHJlbmRlcmVkIGhvc3QvdGV4dCBjb21wb25l
bnQgd2l0aCB0aGUgZ2l2ZW5cbiAqIERPTSBub2RlLiBUaGUgcGFzc2VkIGBpbnN0YCBjYW4gYmUg
YSBjb21wb3NpdGUuXG4gKi9cbmZ1bmN0aW9uIHByZWNhY2hlTm9kZShpbnN0LCBub2RlKSB7XG4g
IHZhciBob3N0SW5zdCA9IGdldFJlbmRlcmVkSG9zdE9yVGV4dEZyb21Db21wb25lbnQoaW5zdCk7
XG4gIGhvc3RJbnN0Ll9ob3N0Tm9kZSA9IG5vZGU7XG4gIG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtl
eV0gPSBob3N0SW5zdDtcbn1cblxuZnVuY3Rpb24gdW5jYWNoZU5vZGUoaW5zdCkge1xuICB2YXIg
bm9kZSA9IGluc3QuX2hvc3ROb2RlO1xuICBpZiAobm9kZSkge1xuICAgIGRlbGV0ZSBub2RlW2lu
dGVybmFsSW5zdGFuY2VLZXldO1xuICAgIGluc3QuX2hvc3ROb2RlID0gbnVsbDtcbiAgfVxufVxu
XG4vKipcbiAqIFBvcHVsYXRlIGBfaG9zdE5vZGVgIG9uIGVhY2ggY2hpbGQgb2YgYGluc3RgLCBh
c3N1bWluZyB0aGF0IHRoZSBjaGlsZHJlblxuICogbWF0Y2ggdXAgd2l0aCB0aGUgRE9NIChlbGVt
ZW50KSBjaGlsZHJlbiBvZiBgbm9kZWAuXG4gKlxuICogV2UgY2FjaGUgZW50aXJlIGxldmVscyBh
dCBvbmNlIHRvIGF2b2lkIGFuIG5eMiBwcm9ibGVtIHdoZXJlIHdlIGFjY2VzcyB0aGVcbiAqIGNo
aWxkcmVuIG9mIGEgbm9kZSBzZXF1ZW50aWFsbHkgYW5kIGhhdmUgdG8gd2FsayBmcm9tIHRoZSBz
dGFydCB0byBvdXIgdGFyZ2V0XG4gKiBub2RlIGV2ZXJ5IHRpbWUuXG4gKlxuICogU2luY2Ugd2Ug
dXBkYXRlIGBfcmVuZGVyZWRDaGlsZHJlbmAgYW5kIHRoZSBhY3R1YWwgRE9NIGF0IChzbGlnaHRs
eSlcbiAqIGRpZmZlcmVudCB0aW1lcywgd2UgY291bGQgcmFjZSBoZXJlIGFuZCBzZWUgYSBuZXdl
ciBgX3JlbmRlcmVkQ2hpbGRyZW5gIHRoYW5cbiAqIHRoZSBET00gbm9kZXMgd2Ugc2VlLiBUbyBh
dm9pZCB0aGlzLCBSZWFjdE11bHRpQ2hpbGQgY2FsbHNcbiAqIGBwcmVwYXJlVG9NYW5hZ2VDaGls
ZHJlbmAgYmVmb3JlIHdlIGNoYW5nZSBgX3JlbmRlcmVkQ2hpbGRyZW5gLCBhdCB3aGljaFxuICog
dGltZSB0aGUgY29udGFpbmVyJ3MgY2hpbGQgbm9kZXMgYXJlIGFsd2F5cyBjYWNoZWQgKHVudGls
IGl0IHVubW91bnRzKS5cbiAqL1xuZnVuY3Rpb24gcHJlY2FjaGVDaGlsZE5vZGVzKGluc3QsIG5v
ZGUpIHtcbiAgaWYgKGluc3QuX2ZsYWdzICYgRmxhZ3MuaGFzQ2FjaGVkQ2hpbGROb2Rlcykge1xu
ICAgIHJldHVybjtcbiAgfVxuICB2YXIgY2hpbGRyZW4gPSBpbnN0Ll9yZW5kZXJlZENoaWxkcmVu
O1xuICB2YXIgY2hpbGROb2RlID0gbm9kZS5maXJzdENoaWxkO1xuICBvdXRlcjogZm9yICh2YXIg
bmFtZSBpbiBjaGlsZHJlbikge1xuICAgIGlmICghY2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFt
ZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB2YXIgY2hpbGRJbnN0ID0gY2hpbGRy
ZW5bbmFtZV07XG4gICAgdmFyIGNoaWxkSUQgPSBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29t
cG9uZW50KGNoaWxkSW5zdCkuX2RvbUlEO1xuICAgIGlmIChjaGlsZElEID09PSAwKSB7XG4gICAg
ICAvLyBXZSdyZSBjdXJyZW50bHkgdW5tb3VudGluZyB0aGlzIGNoaWxkIGluIFJlYWN0TXVsdGlD
aGlsZDsgc2tpcCBpdC5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICAvLyBXZSBhc3N1bWUg
dGhlIGNoaWxkIG5vZGVzIGFyZSBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgY2hpbGQgaW5zdGFu
Y2VzLlxuICAgIGZvciAoOyBjaGlsZE5vZGUgIT09IG51bGw7IGNoaWxkTm9kZSA9IGNoaWxkTm9k
ZS5uZXh0U2libGluZykge1xuICAgICAgaWYgKHNob3VsZFByZWNhY2hlTm9kZShjaGlsZE5vZGUs
IGNoaWxkSUQpKSB7XG4gICAgICAgIHByZWNhY2hlTm9kZShjaGlsZEluc3QsIGNoaWxkTm9kZSk7
XG4gICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBXZSByZWFj
aGVkIHRoZSBlbmQgb2YgdGhlIERPTSBjaGlsZHJlbiB3aXRob3V0IGZpbmRpbmcgYW4gSUQgbWF0
Y2guXG4gICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdVbmFibGUgdG8gZmlu
ZCBlbGVtZW50IHdpdGggSUQgJXMuJywgY2hpbGRJRCkgOiBfcHJvZEludmFyaWFudCgnMzInLCBj
aGlsZElEKSA6IHZvaWQgMDtcbiAgfVxuICBpbnN0Ll9mbGFncyB8PSBGbGFncy5oYXNDYWNoZWRD
aGlsZE5vZGVzO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgRE9NIG5vZGUsIHJldHVybiB0aGUgY2xv
c2VzdCBSZWFjdERPTUNvbXBvbmVudCBvclxuICogUmVhY3RET01UZXh0Q29tcG9uZW50IGluc3Rh
bmNlIGFuY2VzdG9yLlxuICovXG5mdW5jdGlvbiBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShu
b2RlKSB7XG4gIGlmIChub2RlW2ludGVybmFsSW5zdGFuY2VLZXldKSB7XG4gICAgcmV0dXJuIG5v
ZGVbaW50ZXJuYWxJbnN0YW5jZUtleV07XG4gIH1cblxuICAvLyBXYWxrIHVwIHRoZSB0cmVlIHVu
dGlsIHdlIGZpbmQgYW4gYW5jZXN0b3Igd2hvc2UgaW5zdGFuY2Ugd2UgaGF2ZSBjYWNoZWQuXG4g
IHZhciBwYXJlbnRzID0gW107XG4gIHdoaWxlICghbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XSkg
e1xuICAgIHBhcmVudHMucHVzaChub2RlKTtcbiAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4g
ICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUb3Ag
b2YgdGhlIHRyZWUuIFRoaXMgbm9kZSBtdXN0IG5vdCBiZSBwYXJ0IG9mIGEgUmVhY3QgdHJlZSAo
b3IgaXNcbiAgICAgIC8vIHVubW91bnRlZCwgcG90ZW50aWFsbHkpLlxuICAgICAgcmV0dXJuIG51
bGw7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNsb3Nlc3Q7XG4gIHZhciBpbnN0O1xuICBmb3IgKDsg
bm9kZSAmJiAoaW5zdCA9IG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0pOyBub2RlID0gcGFyZW50
cy5wb3AoKSkge1xuICAgIGNsb3Nlc3QgPSBpbnN0O1xuICAgIGlmIChwYXJlbnRzLmxlbmd0aCkg
e1xuICAgICAgcHJlY2FjaGVDaGlsZE5vZGVzKGluc3QsIG5vZGUpO1xuICAgIH1cbiAgfVxuXG4g
IHJldHVybiBjbG9zZXN0O1xufVxuXG4vKipcbiAqIEdpdmVuIGEgRE9NIG5vZGUsIHJldHVybiB0
aGUgUmVhY3RET01Db21wb25lbnQgb3IgUmVhY3RET01UZXh0Q29tcG9uZW50XG4gKiBpbnN0YW5j
ZSwgb3IgbnVsbCBpZiB0aGUgbm9kZSB3YXMgbm90IHJlbmRlcmVkIGJ5IHRoaXMgUmVhY3QuXG4g
Ki9cbmZ1bmN0aW9uIGdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkge1xuICB2YXIgaW5zdCA9IGdl
dENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG5vZGUpO1xuICBpZiAoaW5zdCAhPSBudWxsICYmIGlu
c3QuX2hvc3ROb2RlID09PSBub2RlKSB7XG4gICAgcmV0dXJuIGluc3Q7XG4gIH0gZWxzZSB7XG4g
ICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBHaXZlbiBhIFJlYWN0RE9NQ29tcG9u
ZW50IG9yIFJlYWN0RE9NVGV4dENvbXBvbmVudCwgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nXG4g
KiBET00gbm9kZS5cbiAqL1xuZnVuY3Rpb24gZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KSB7XG4g
IC8vIFdpdGhvdXQgdGhpcyBmaXJzdCBpbnZhcmlhbnQsIHBhc3NpbmcgYSBub24tRE9NLWNvbXBv
bmVudCB0cmlnZ2VycyB0aGUgbmV4dFxuICAvLyBpbnZhcmlhbnQgZm9yIGEgbWlzc2luZyBwYXJl
bnQsIHdoaWNoIGlzIHN1cGVyIGNvbmZ1c2luZy5cbiAgIShpbnN0Ll9ob3N0Tm9kZSAhPT0gdW5k
ZWZpbmVkKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2dldE5vZGVGcm9tSW5zdGFuY2U6
IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzMnKSA6IHZvaWQgMDtcblxu
ICBpZiAoaW5zdC5faG9zdE5vZGUpIHtcbiAgICByZXR1cm4gaW5zdC5faG9zdE5vZGU7XG4gIH1c
blxuICAvLyBXYWxrIHVwIHRoZSB0cmVlIHVudGlsIHdlIGZpbmQgYW4gYW5jZXN0b3Igd2hvc2Ug
RE9NIG5vZGUgd2UgaGF2ZSBjYWNoZWQuXG4gIHZhciBwYXJlbnRzID0gW107XG4gIHdoaWxlICgh
aW5zdC5faG9zdE5vZGUpIHtcbiAgICBwYXJlbnRzLnB1c2goaW5zdCk7XG4gICAgIWluc3QuX2hv
c3RQYXJlbnQgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdCBET00gdHJlZSByb290
IHNob3VsZCBhbHdheXMgaGF2ZSBhIG5vZGUgcmVmZXJlbmNlLicpIDogX3Byb2RJbnZhcmlhbnQo
JzM0JykgOiB2b2lkIDA7XG4gICAgaW5zdCA9IGluc3QuX2hvc3RQYXJlbnQ7XG4gIH1cblxuICAv
LyBOb3cgcGFyZW50cyBjb250YWlucyBlYWNoIGFuY2VzdG9yIHRoYXQgZG9lcyAqbm90KiBoYXZl
IGEgY2FjaGVkIG5hdGl2ZVxuICAvLyBub2RlLCBhbmQgYGluc3RgIGlzIHRoZSBkZWVwZXN0IGFu
Y2VzdG9yIHRoYXQgZG9lcy5cbiAgZm9yICg7IHBhcmVudHMubGVuZ3RoOyBpbnN0ID0gcGFyZW50
cy5wb3AoKSkge1xuICAgIHByZWNhY2hlQ2hpbGROb2RlcyhpbnN0LCBpbnN0Ll9ob3N0Tm9kZSk7
XG4gIH1cblxuICByZXR1cm4gaW5zdC5faG9zdE5vZGU7XG59XG5cbnZhciBSZWFjdERPTUNvbXBv
bmVudFRyZWUgPSB7XG4gIGdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlOiBnZXRDbG9zZXN0SW5z
dGFuY2VGcm9tTm9kZSxcbiAgZ2V0SW5zdGFuY2VGcm9tTm9kZTogZ2V0SW5zdGFuY2VGcm9tTm9k
ZSxcbiAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZ2V0Tm9kZUZyb21JbnN0YW5jZSxcbiAgcHJlY2Fj
aGVDaGlsZE5vZGVzOiBwcmVjYWNoZUNoaWxkTm9kZXMsXG4gIHByZWNhY2hlTm9kZTogcHJlY2Fj
aGVOb2RlLFxuICB1bmNhY2hlTm9kZTogdW5jYWNoZU5vZGVcbn07XG5cbm1vZHVsZS5leHBvcnRz
ID0gUmVhY3RET01Db21wb25lbnRUcmVlO1xuXG4vKioqLyB9KSxcbi8qIDUgKi9cbi8qKiovIChm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ug
c3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52YXIg
Y2FuVXNlRE9NID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRv
Y3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxuLyoqXG4gKiBTaW1w
bGUsIGxpZ2h0d2VpZ2h0IG1vZHVsZSBhc3Npc3Rpbmcgd2l0aCB0aGUgZGV0ZWN0aW9uIGFuZCBj
b250ZXh0IG9mXG4gKiBXb3JrZXIuIEhlbHBzIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBh
bmQgYWxsb3dzIGNvZGUgdG8gcmVhc29uIGFib3V0XG4gKiB3aGV0aGVyIG9yIG5vdCB0aGV5IGFy
ZSBpbiBhIFdvcmtlciwgZXZlbiBpZiB0aGV5IG5ldmVyIGluY2x1ZGUgdGhlIG1haW5cbiAqIGBS
ZWFjdFdvcmtlcmAgZGVwZW5kZW5jeS5cbiAqL1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0g
e1xuXG4gIGNhblVzZURPTTogY2FuVXNlRE9NLFxuXG4gIGNhblVzZVdvcmtlcnM6IHR5cGVvZiBX
b3JrZXIgIT09ICd1bmRlZmluZWQnLFxuXG4gIGNhblVzZUV2ZW50TGlzdGVuZXJzOiBjYW5Vc2VE
T00gJiYgISEod2luZG93LmFkZEV2ZW50TGlzdGVuZXIgfHwgd2luZG93LmF0dGFjaEV2ZW50KSxc
blxuICBjYW5Vc2VWaWV3cG9ydDogY2FuVXNlRE9NICYmICEhd2luZG93LnNjcmVlbixcblxuICBp
c0luV29ya2VyOiAhY2FuVXNlRE9NIC8vIEZvciBub3csIHRoaXMgaXMgdHJ1ZSAtIG1pZ2h0IGNo
YW5nZSBpbiB0aGUgZnV0dXJlLlxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV4ZWN1dGlvbkVu
dmlyb25tZW50O1xuXG4vKioqLyB9KSxcbi8qIDYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxu
LyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbmZ1bmN0aW9uIG1ha2VF
bXB0eUZ1bmN0aW9uKGFyZykge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBh
cmc7XG4gIH07XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBhY2NlcHRzIGFuZCBkaXNjYXJk
cyBpbnB1dHM7IGl0IGhhcyBubyBzaWRlIGVmZmVjdHMuIFRoaXMgaXNcbiAqIHByaW1hcmlseSB1
c2VmdWwgaWRpb21hdGljYWxseSBmb3Igb3ZlcnJpZGFibGUgZnVuY3Rpb24gZW5kcG9pbnRzIHdo
aWNoXG4gKiBhbHdheXMgbmVlZCB0byBiZSBjYWxsYWJsZSwgc2luY2UgSlMgbGFja3MgYSBudWxs
LWNhbGwgaWRpb20gYWxhIENvY29hLlxuICovXG52YXIgZW1wdHlGdW5jdGlvbiA9IGZ1bmN0aW9u
IGVtcHR5RnVuY3Rpb24oKSB7fTtcblxuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJucyA9IG1ha2VF
bXB0eUZ1bmN0aW9uO1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNlID0gbWFrZUVtcHR5
RnVuY3Rpb24oZmFsc2UpO1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWUgPSBtYWtlRW1w
dHlGdW5jdGlvbih0cnVlKTtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsID0gbWFrZUVt
cHR5RnVuY3Rpb24obnVsbCk7XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVGhpcyA9IGZ1bmN0
aW9uICgpIHtcbiAgcmV0dXJuIHRoaXM7XG59O1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0Fy
Z3VtZW50ID0gZnVuY3Rpb24gKGFyZykge1xuICByZXR1cm4gYXJnO1xufTtcblxubW9kdWxlLmV4
cG9ydHMgPSBlbXB0eUZ1bmN0aW9uO1xuXG4vKioqLyB9KSxcbi8qIDcgKi9cbi8qKiovIChmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3Ry
aWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG5cblxuLy8gVHJ1
c3QgdGhlIGRldmVsb3BlciB0byBvbmx5IHVzZSBSZWFjdEluc3RydW1lbnRhdGlvbiB3aXRoIGEg
X19ERVZfXyBjaGVja1xuXG52YXIgZGVidWdUb29sID0gbnVsbDtcblxuaWYgKGZhbHNlKSB7XG4g
IHZhciBSZWFjdERlYnVnVG9vbCA9IHJlcXVpcmUoJy4vUmVhY3REZWJ1Z1Rvb2wnKTtcbiAgZGVi
dWdUb29sID0gUmVhY3REZWJ1Z1Rvb2w7XG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBkZWJ1Z1Rv
b2w6IGRlYnVnVG9vbCB9O1xuXG4vKioqLyB9KSxcbi8qIDggKi9cbi8qKiovIChmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7
XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBfcHJvZEludmFyaWFu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMiksXG4gICAgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1
aXJlX18oMyk7XG5cbnZhciBDYWxsYmFja1F1ZXVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Mik7
XG52YXIgUG9vbGVkQ2xhc3MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcbnZhciBSZWFjdEZl
YXR1cmVGbGFncyA9IF9fd2VicGFja19yZXF1aXJlX18oNjMpO1xudmFyIFJlYWN0UmVjb25jaWxl
ciA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xudmFyIFRyYW5zYWN0aW9uID0gX193ZWJwYWNr
X3JlcXVpcmVfXygyNCk7XG5cbnZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDAp
O1xuXG52YXIgZGlydHlDb21wb25lbnRzID0gW107XG52YXIgdXBkYXRlQmF0Y2hOdW1iZXIgPSAw
O1xudmFyIGFzYXBDYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKTtcbnZh
ciBhc2FwRW5xdWV1ZWQgPSBmYWxzZTtcblxudmFyIGJhdGNoaW5nU3RyYXRlZ3kgPSBudWxsO1xu
XG5mdW5jdGlvbiBlbnN1cmVJbmplY3RlZCgpIHtcbiAgIShSZWFjdFVwZGF0ZXMuUmVhY3RSZWNv
bmNpbGVUcmFuc2FjdGlvbiAmJiBiYXRjaGluZ1N0cmF0ZWd5KSA/ICBmYWxzZSA/IGludmFyaWFu
dChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBpbmplY3QgYSByZWNvbmNpbGUgdHJhbnNhY3Rp
b24gY2xhc3MgYW5kIGJhdGNoaW5nIHN0cmF0ZWd5JykgOiBfcHJvZEludmFyaWFudCgnMTIzJykg
OiB2b2lkIDA7XG59XG5cbnZhciBORVNURURfVVBEQVRFUyA9IHtcbiAgaW5pdGlhbGl6ZTogZnVu
Y3Rpb24gKCkge1xuICAgIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoID0gZGlydHlDb21wb25l
bnRzLmxlbmd0aDtcbiAgfSxcbiAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5k
aXJ0eUNvbXBvbmVudHNMZW5ndGggIT09IGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIHtcbiAgICAg
IC8vIEFkZGl0aW9uYWwgdXBkYXRlcyB3ZXJlIGVucXVldWVkIGJ5IGNvbXBvbmVudERpZFVwZGF0
ZSBoYW5kbGVycyBvclxuICAgICAgLy8gc2ltaWxhcjsgYmVmb3JlIG91ciBvd24gVVBEQVRFX1FV
RVVFSU5HIHdyYXBwZXIgY2xvc2VzLCB3ZSB3YW50IHRvIHJ1blxuICAgICAgLy8gdGhlc2UgbmV3
IHVwZGF0ZXMgc28gdGhhdCBpZiBBJ3MgY29tcG9uZW50RGlkVXBkYXRlIGNhbGxzIHNldFN0YXRl
IG9uXG4gICAgICAvLyBCLCBCIHdpbGwgdXBkYXRlIGJlZm9yZSB0aGUgY2FsbGJhY2sgQSdzIHVw
ZGF0ZXIgcHJvdmlkZWQgd2hlbiBjYWxsaW5nXG4gICAgICAvLyBzZXRTdGF0ZS5cbiAgICAgIGRp
cnR5Q29tcG9uZW50cy5zcGxpY2UoMCwgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgpO1xuICAg
ICAgZmx1c2hCYXRjaGVkVXBkYXRlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXJ0eUNvbXBv
bmVudHMubGVuZ3RoID0gMDtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBVUERBVEVfUVVFVUVJTkcg
PSB7XG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNhbGxiYWNrUXVldWUu
cmVzZXQoKTtcbiAgfSxcbiAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNhbGxiYWNr
UXVldWUubm90aWZ5QWxsKCk7XG4gIH1cbn07XG5cbnZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9
IFtORVNURURfVVBEQVRFUywgVVBEQVRFX1FVRVVFSU5HXTtcblxuZnVuY3Rpb24gUmVhY3RVcGRh
dGVzRmx1c2hUcmFuc2FjdGlvbigpIHtcbiAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigp
O1xuICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9IG51bGw7XG4gIHRoaXMuY2FsbGJhY2tR
dWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7XG4gIHRoaXMucmVjb25jaWxlVHJhbnNh
Y3Rpb24gPSBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQo
XG4gIC8qIHVzZUNyZWF0ZUVsZW1lbnQgKi90cnVlKTtcbn1cblxuX2Fzc2lnbihSZWFjdFVwZGF0
ZXNGbHVzaFRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIHtcbiAgZ2V0VHJhbnNh
Y3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQ
UEVSUztcbiAgfSxcblxuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5kaXJ0
eUNvbXBvbmVudHNMZW5ndGggPSBudWxsO1xuICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0aGlz
LmNhbGxiYWNrUXVldWUpO1xuICAgIHRoaXMuY2FsbGJhY2tRdWV1ZSA9IG51bGw7XG4gICAgUmVh
Y3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2ls
ZVRyYW5zYWN0aW9uKTtcbiAgICB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uID0gbnVsbDtcbiAg
fSxcblxuICBwZXJmb3JtOiBmdW5jdGlvbiAobWV0aG9kLCBzY29wZSwgYSkge1xuICAgIC8vIEVz
c2VudGlhbGx5IGNhbGxzIGB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLnBlcmZvcm0obWV0aG9k
LCBzY29wZSwgYSlgXG4gICAgLy8gd2l0aCB0aGlzIHRyYW5zYWN0aW9uJ3Mgd3JhcHBlcnMgYXJv
dW5kIGl0LlxuICAgIHJldHVybiBUcmFuc2FjdGlvbi5wZXJmb3JtLmNhbGwodGhpcywgdGhpcy5y
ZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtLCB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLCBt
ZXRob2QsIHNjb3BlLCBhKTtcbiAgfVxufSk7XG5cblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhS
ZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uKTtcblxuZnVuY3Rpb24gYmF0Y2hlZFVwZGF0ZXMo
Y2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpIHtcbiAgZW5zdXJlSW5qZWN0ZWQoKTtcbiAgcmV0dXJu
IGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUp
O1xufVxuXG4vKipcbiAqIEFycmF5IGNvbXBhcmF0b3IgZm9yIFJlYWN0Q29tcG9uZW50cyBieSBt
b3VudCBvcmRlcmluZy5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjMSBmaXJzdCBj
b21wb25lbnQgeW91J3JlIGNvbXBhcmluZ1xuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gYzIg
c2Vjb25kIGNvbXBvbmVudCB5b3UncmUgY29tcGFyaW5nXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFJl
dHVybiB2YWx1ZSB1c2FibGUgYnkgQXJyYXkucHJvdG90eXBlLnNvcnQoKS5cbiAqL1xuZnVuY3Rp
b24gbW91bnRPcmRlckNvbXBhcmF0b3IoYzEsIGMyKSB7XG4gIHJldHVybiBjMS5fbW91bnRPcmRl
ciAtIGMyLl9tb3VudE9yZGVyO1xufVxuXG5mdW5jdGlvbiBydW5CYXRjaGVkVXBkYXRlcyh0cmFu
c2FjdGlvbikge1xuICB2YXIgbGVuID0gdHJhbnNhY3Rpb24uZGlydHlDb21wb25lbnRzTGVuZ3Ro
O1xuICAhKGxlbiA9PT0gZGlydHlDb21wb25lbnRzLmxlbmd0aCkgPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICdFeHBlY3RlZCBmbHVzaCB0cmFuc2FjdGlvblxcJ3Mgc3RvcmVkIGRpcnR5LWNv
bXBvbmVudHMgbGVuZ3RoICglcykgdG8gbWF0Y2ggZGlydHktY29tcG9uZW50cyBhcnJheSBsZW5n
dGggKCVzKS4nLCBsZW4sIGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIDogX3Byb2RJbnZhcmlhbnQo
JzEyNCcsIGxlbiwgZGlydHlDb21wb25lbnRzLmxlbmd0aCkgOiB2b2lkIDA7XG5cbiAgLy8gU2lu
Y2UgcmVjb25jaWxpbmcgYSBjb21wb25lbnQgaGlnaGVyIGluIHRoZSBvd25lciBoaWVyYXJjaHkg
dXN1YWxseSAobm90XG4gIC8vIGFsd2F5cyAtLSBzZWUgc2hvdWxkQ29tcG9uZW50VXBkYXRlKCkp
IHdpbGwgcmVjb25jaWxlIGNoaWxkcmVuLCByZWNvbmNpbGVcbiAgLy8gdGhlbSBiZWZvcmUgdGhl
aXIgY2hpbGRyZW4gYnkgc29ydGluZyB0aGUgYXJyYXkuXG4gIGRpcnR5Q29tcG9uZW50cy5zb3J0
KG1vdW50T3JkZXJDb21wYXJhdG9yKTtcblxuICAvLyBBbnkgdXBkYXRlcyBlbnF1ZXVlZCB3aGls
ZSByZWNvbmNpbGluZyBtdXN0IGJlIHBlcmZvcm1lZCBhZnRlciB0aGlzIGVudGlyZVxuICAvLyBi
YXRjaC4gT3RoZXJ3aXNlLCBpZiBkaXJ0eUNvbXBvbmVudHMgaXMgW0EsIEJdIHdoZXJlIEEgaGFz
IGNoaWxkcmVuIEIgYW5kXG4gIC8vIEMsIEIgY291bGQgdXBkYXRlIHR3aWNlIGluIGEgc2luZ2xl
IGJhdGNoIGlmIEMncyByZW5kZXIgZW5xdWV1ZXMgYW4gdXBkYXRlXG4gIC8vIHRvIEIgKHNpbmNl
IEIgd291bGQgaGF2ZSBhbHJlYWR5IHVwZGF0ZWQsIHdlIHNob3VsZCBza2lwIGl0LCBhbmQgdGhl
IG9ubHlcbiAgLy8gd2F5IHdlIGNhbiBrbm93IHRvIGRvIHNvIGlzIGJ5IGNoZWNraW5nIHRoZSBi
YXRjaCBjb3VudGVyKS5cbiAgdXBkYXRlQmF0Y2hOdW1iZXIrKztcblxuICBmb3IgKHZhciBpID0g
MDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgLy8gSWYgYSBjb21wb25lbnQgaXMgdW5tb3VudGVkIGJl
Zm9yZSBwZW5kaW5nIGNoYW5nZXMgYXBwbHksIGl0IHdpbGwgc3RpbGxcbiAgICAvLyBiZSBoZXJl
LCBidXQgd2UgYXNzdW1lIHRoYXQgaXQgaGFzIGNsZWFyZWQgaXRzIF9wZW5kaW5nQ2FsbGJhY2tz
IGFuZFxuICAgIC8vIHRoYXQgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5IGlzIGEgbm9vcC5cbiAg
ICB2YXIgY29tcG9uZW50ID0gZGlydHlDb21wb25lbnRzW2ldO1xuXG4gICAgLy8gSWYgcGVyZm9y
bVVwZGF0ZUlmTmVjZXNzYXJ5IGhhcHBlbnMgdG8gZW5xdWV1ZSBhbnkgbmV3IHVwZGF0ZXMsIHdl
XG4gICAgLy8gc2hvdWxkbid0IGV4ZWN1dGUgdGhlIGNhbGxiYWNrcyB1bnRpbCB0aGUgbmV4dCBy
ZW5kZXIgaGFwcGVucywgc29cbiAgICAvLyBzdGFzaCB0aGUgY2FsbGJhY2tzIGZpcnN0XG4gICAg
dmFyIGNhbGxiYWNrcyA9IGNvbXBvbmVudC5fcGVuZGluZ0NhbGxiYWNrcztcbiAgICBjb21wb25l
bnQuX3BlbmRpbmdDYWxsYmFja3MgPSBudWxsO1xuXG4gICAgdmFyIG1hcmtlck5hbWU7XG4gICAg
aWYgKFJlYWN0RmVhdHVyZUZsYWdzLmxvZ1RvcExldmVsUmVuZGVycykge1xuICAgICAgdmFyIG5h
bWVkQ29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgLy8gRHVjayB0eXBlIFRvcExldmVsV3Jh
cHBlci4gVGhpcyBpcyBwcm9iYWJseSBhbHdheXMgdHJ1ZS5cbiAgICAgIGlmIChjb21wb25lbnQu
X2N1cnJlbnRFbGVtZW50LnR5cGUuaXNSZWFjdFRvcExldmVsV3JhcHBlcikge1xuICAgICAgICBu
YW1lZENvbXBvbmVudCA9IGNvbXBvbmVudC5fcmVuZGVyZWRDb21wb25lbnQ7XG4gICAgICB9XG4g
ICAgICBtYXJrZXJOYW1lID0gJ1JlYWN0IHVwZGF0ZTogJyArIG5hbWVkQ29tcG9uZW50LmdldE5h
bWUoKTtcbiAgICAgIGNvbnNvbGUudGltZShtYXJrZXJOYW1lKTtcbiAgICB9XG5cbiAgICBSZWFj
dFJlY29uY2lsZXIucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KGNvbXBvbmVudCwgdHJhbnNhY3Rp
b24ucmVjb25jaWxlVHJhbnNhY3Rpb24sIHVwZGF0ZUJhdGNoTnVtYmVyKTtcblxuICAgIGlmICht
YXJrZXJOYW1lKSB7XG4gICAgICBjb25zb2xlLnRpbWVFbmQobWFya2VyTmFtZSk7XG4gICAgfVxu
XG4gICAgaWYgKGNhbGxiYWNrcykge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjYWxsYmFj
a3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdHJhbnNhY3Rpb24uY2FsbGJhY2tRdWV1ZS5lbnF1
ZXVlKGNhbGxiYWNrc1tqXSwgY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCkpO1xuICAgICAg
fVxuICAgIH1cbiAgfVxufVxuXG52YXIgZmx1c2hCYXRjaGVkVXBkYXRlcyA9IGZ1bmN0aW9uICgp
IHtcbiAgLy8gUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbidzIHdyYXBwZXJzIHdpbGwgY2xl
YXIgdGhlIGRpcnR5Q29tcG9uZW50c1xuICAvLyBhcnJheSBhbmQgcGVyZm9ybSBhbnkgdXBkYXRl
cyBlbnF1ZXVlZCBieSBtb3VudC1yZWFkeSBoYW5kbGVycyAoaS5lLixcbiAgLy8gY29tcG9uZW50
RGlkVXBkYXRlKSBidXQgd2UgbmVlZCB0byBjaGVjayBoZXJlIHRvbyBpbiBvcmRlciB0byBjYXRj
aFxuICAvLyB1cGRhdGVzIGVucXVldWVkIGJ5IHNldFN0YXRlIGNhbGxiYWNrcyBhbmQgYXNhcCBj
YWxscy5cbiAgd2hpbGUgKGRpcnR5Q29tcG9uZW50cy5sZW5ndGggfHwgYXNhcEVucXVldWVkKSB7
XG4gICAgaWYgKGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIHtcbiAgICAgIHZhciB0cmFuc2FjdGlv
biA9IFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCk7XG4gICAgICB0cmFu
c2FjdGlvbi5wZXJmb3JtKHJ1bkJhdGNoZWRVcGRhdGVzLCBudWxsLCB0cmFuc2FjdGlvbik7XG4g
ICAgICBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pO1xu
ICAgIH1cblxuICAgIGlmIChhc2FwRW5xdWV1ZWQpIHtcbiAgICAgIGFzYXBFbnF1ZXVlZCA9IGZh
bHNlO1xuICAgICAgdmFyIHF1ZXVlID0gYXNhcENhbGxiYWNrUXVldWU7XG4gICAgICBhc2FwQ2Fs
bGJhY2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7XG4gICAgICBxdWV1ZS5ub3Rp
ZnlBbGwoKTtcbiAgICAgIENhbGxiYWNrUXVldWUucmVsZWFzZShxdWV1ZSk7XG4gICAgfVxuICB9
XG59O1xuXG4vKipcbiAqIE1hcmsgYSBjb21wb25lbnQgYXMgbmVlZGluZyBhIHJlcmVuZGVyLCBh
ZGRpbmcgYW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8gYVxuICogbGlzdCBvZiBmdW5jdGlvbnMgd2hp
Y2ggd2lsbCBiZSBleGVjdXRlZCBvbmNlIHRoZSByZXJlbmRlciBvY2N1cnMuXG4gKi9cbmZ1bmN0
aW9uIGVucXVldWVVcGRhdGUoY29tcG9uZW50KSB7XG4gIGVuc3VyZUluamVjdGVkKCk7XG5cbiAg
Ly8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBv
bmVudCdzXG4gIC8vIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQpIGFzc3VtZSB0aGF0IGNhbGxz
IHRvIHJlbmRlciBhcmVuJ3QgbmVzdGVkO1xuICAvLyB2ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIGNh
c2UuIChUaGlzIGlzIGNhbGxlZCBieSBlYWNoIHRvcC1sZXZlbCB1cGRhdGVcbiAgLy8gZnVuY3Rp
b24sIGxpa2Ugc2V0U3RhdGUsIGZvcmNlVXBkYXRlLCBldGMuOyBjcmVhdGlvbiBhbmRcbiAgLy8g
ZGVzdHJ1Y3Rpb24gb2YgdG9wLWxldmVsIGNvbXBvbmVudHMgaXMgZ3VhcmRlZCBpbiBSZWFjdE1v
dW50LilcblxuICBpZiAoIWJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMpIHtcbiAg
ICBiYXRjaGluZ1N0cmF0ZWd5LmJhdGNoZWRVcGRhdGVzKGVucXVldWVVcGRhdGUsIGNvbXBvbmVu
dCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZGlydHlDb21wb25lbnRzLnB1c2goY29tcG9uZW50
KTtcbiAgaWYgKGNvbXBvbmVudC5fdXBkYXRlQmF0Y2hOdW1iZXIgPT0gbnVsbCkge1xuICAgIGNv
bXBvbmVudC5fdXBkYXRlQmF0Y2hOdW1iZXIgPSB1cGRhdGVCYXRjaE51bWJlciArIDE7XG4gIH1c
bn1cblxuLyoqXG4gKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdG8gYmUgcnVuIGF0IHRoZSBlbmQgb2Yg
dGhlIGN1cnJlbnQgYmF0Y2hpbmcgY3ljbGUuIFRocm93c1xuICogaWYgbm8gdXBkYXRlcyBhcmUg
Y3VycmVudGx5IGJlaW5nIHBlcmZvcm1lZC5cbiAqL1xuZnVuY3Rpb24gYXNhcChjYWxsYmFjaywg
Y29udGV4dCkge1xuICAhYmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcyA/ICBmYWxz
ZSA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlcy5hc2FwOiBDYW5cXCd0IGVucXVldWUg
YW4gYXNhcCBjYWxsYmFjayBpbiBhIGNvbnRleHQgd2hlcmV1cGRhdGVzIGFyZSBub3QgYmVpbmcg
YmF0Y2hlZC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMjUnKSA6IHZvaWQgMDtcbiAgYXNhcENhbGxi
YWNrUXVldWUuZW5xdWV1ZShjYWxsYmFjaywgY29udGV4dCk7XG4gIGFzYXBFbnF1ZXVlZCA9IHRy
dWU7XG59XG5cbnZhciBSZWFjdFVwZGF0ZXNJbmplY3Rpb24gPSB7XG4gIGluamVjdFJlY29uY2ls
ZVRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoUmVjb25jaWxlVHJhbnNhY3Rpb24pIHtcbiAgICAhUmVj
b25jaWxlVHJhbnNhY3Rpb24gPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0
ZXM6IG11c3QgcHJvdmlkZSBhIHJlY29uY2lsZSB0cmFuc2FjdGlvbiBjbGFzcycpIDogX3Byb2RJ
bnZhcmlhbnQoJzEyNicpIDogdm9pZCAwO1xuICAgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2ls
ZVRyYW5zYWN0aW9uID0gUmVjb25jaWxlVHJhbnNhY3Rpb247XG4gIH0sXG5cbiAgaW5qZWN0QmF0
Y2hpbmdTdHJhdGVneTogZnVuY3Rpb24gKF9iYXRjaGluZ1N0cmF0ZWd5KSB7XG4gICAgIV9iYXRj
aGluZ1N0cmF0ZWd5ID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBt
dXN0IHByb3ZpZGUgYSBiYXRjaGluZyBzdHJhdGVneScpIDogX3Byb2RJbnZhcmlhbnQoJzEyNycp
IDogdm9pZCAwO1xuICAgICEodHlwZW9mIF9iYXRjaGluZ1N0cmF0ZWd5LmJhdGNoZWRVcGRhdGVz
ID09PSAnZnVuY3Rpb24nKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRl
czogbXVzdCBwcm92aWRlIGEgYmF0Y2hlZFVwZGF0ZXMoKSBmdW5jdGlvbicpIDogX3Byb2RJbnZh
cmlhbnQoJzEyOCcpIDogdm9pZCAwO1xuICAgICEodHlwZW9mIF9iYXRjaGluZ1N0cmF0ZWd5Lmlz
QmF0Y2hpbmdVcGRhdGVzID09PSAnYm9vbGVhbicpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNl
LCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYW4gaXNCYXRjaGluZ1VwZGF0ZXMgYm9vbGVh
biBhdHRyaWJ1dGUnKSA6IF9wcm9kSW52YXJpYW50KCcxMjknKSA6IHZvaWQgMDtcbiAgICBiYXRj
aGluZ1N0cmF0ZWd5ID0gX2JhdGNoaW5nU3RyYXRlZ3k7XG4gIH1cbn07XG5cbnZhciBSZWFjdFVw
ZGF0ZXMgPSB7XG4gIC8qKlxuICAgKiBSZWFjdCByZWZlcmVuY2VzIGBSZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9uYCB1c2luZyB0aGlzIHByb3BlcnR5IGluIG9yZGVyXG4gICAqIHRvIGFsbG93IGRl
cGVuZGVuY3kgaW5qZWN0aW9uLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIFJlYWN0
UmVjb25jaWxlVHJhbnNhY3Rpb246IG51bGwsXG5cbiAgYmF0Y2hlZFVwZGF0ZXM6IGJhdGNoZWRV
cGRhdGVzLFxuICBlbnF1ZXVlVXBkYXRlOiBlbnF1ZXVlVXBkYXRlLFxuICBmbHVzaEJhdGNoZWRV
cGRhdGVzOiBmbHVzaEJhdGNoZWRVcGRhdGVzLFxuICBpbmplY3Rpb246IFJlYWN0VXBkYXRlc0lu
amVjdGlvbixcbiAgYXNhcDogYXNhcFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFVwZGF0
ZXM7XG5cbi8qKiovIH0pLFxuLyogOSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5tb2R1bGUu
ZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpO1xuXG5cbi8qKiovIH0pLFxuLyogMTAg
Ki9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAq
L1xuXG5cblxuLyoqXG4gKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBvd25lci5cbiAqXG4g
KiBUaGUgY3VycmVudCBvd25lciBpcyB0aGUgY29tcG9uZW50IHdobyBzaG91bGQgb3duIGFueSBj
b21wb25lbnRzIHRoYXQgYXJlXG4gKiBjdXJyZW50bHkgYmVpbmcgY29uc3RydWN0ZWQuXG4gKi9c
bnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBA
dHlwZSB7UmVhY3RDb21wb25lbnR9XG4gICAqL1xuICBjdXJyZW50OiBudWxsXG59O1xuXG5tb2R1
bGUuZXhwb3J0cyA9IFJlYWN0Q3VycmVudE93bmVyO1xuXG4vKioqLyB9KSxcbi8qIDExICovXG4v
KioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52
YXIgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cbnZhciBQb29sZWRDbGFzcyA9
IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFj
a19yZXF1aXJlX18oNik7XG52YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5c
bnZhciBkaWRXYXJuRm9yQWRkZWROZXdQcm9wZXJ0eSA9IGZhbHNlO1xudmFyIGlzUHJveHlTdXBw
b3J0ZWQgPSB0eXBlb2YgUHJveHkgPT09ICdmdW5jdGlvbic7XG5cbnZhciBzaG91bGRCZVJlbGVh
c2VkUHJvcGVydGllcyA9IFsnZGlzcGF0Y2hDb25maWcnLCAnX3RhcmdldEluc3QnLCAnbmF0aXZl
RXZlbnQnLCAnaXNEZWZhdWx0UHJldmVudGVkJywgJ2lzUHJvcGFnYXRpb25TdG9wcGVkJywgJ19k
aXNwYXRjaExpc3RlbmVycycsICdfZGlzcGF0Y2hJbnN0YW5jZXMnXTtcblxuLyoqXG4gKiBAaW50
ZXJmYWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2
ZW50cy9cbiAqL1xudmFyIEV2ZW50SW50ZXJmYWNlID0ge1xuICB0eXBlOiBudWxsLFxuICB0YXJn
ZXQ6IG51bGwsXG4gIC8vIGN1cnJlbnRUYXJnZXQgaXMgc2V0IHdoZW4gZGlzcGF0Y2hpbmc7IG5v
IHVzZSBpbiBjb3B5aW5nIGl0IGhlcmVcbiAgY3VycmVudFRhcmdldDogZW1wdHlGdW5jdGlvbi50
aGF0UmV0dXJuc051bGwsXG4gIGV2ZW50UGhhc2U6IG51bGwsXG4gIGJ1YmJsZXM6IG51bGwsXG4g
IGNhbmNlbGFibGU6IG51bGwsXG4gIHRpbWVTdGFtcDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAg
cmV0dXJuIGV2ZW50LnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpO1xuICB9LFxuICBkZWZhdWx0UHJl
dmVudGVkOiBudWxsLFxuICBpc1RydXN0ZWQ6IG51bGxcbn07XG5cbi8qKlxuICogU3ludGhldGlj
IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCBieSBldmVudCBwbHVnaW5zLCB0eXBpY2FsbHkgaW4gcmVz
cG9uc2UgdG8gYVxuICogdG9wLWxldmVsIGV2ZW50IGRlbGVnYXRpb24gaGFuZGxlci5cbiAqXG4g
KiBUaGVzZSBzeXN0ZW1zIHNob3VsZCBnZW5lcmFsbHkgdXNlIHBvb2xpbmcgdG8gcmVkdWNlIHRo
ZSBmcmVxdWVuY3kgb2YgZ2FyYmFnZVxuICogY29sbGVjdGlvbi4gVGhlIHN5c3RlbSBzaG91bGQg
Y2hlY2sgYGlzUGVyc2lzdGVudGAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlXG4gKiBldmVudCBz
aG91bGQgYmUgcmVsZWFzZWQgaW50byB0aGUgcG9vbCBhZnRlciBiZWluZyBkaXNwYXRjaGVkLiBV
c2VycyB0aGF0XG4gKiBuZWVkIGEgcGVyc2lzdGVkIGV2ZW50IHNob3VsZCBpbnZva2UgYHBlcnNp
c3RgLlxuICpcbiAqIFN5bnRoZXRpYyBldmVudHMgKGFuZCBzdWJjbGFzc2VzKSBpbXBsZW1lbnQg
dGhlIERPTSBMZXZlbCAzIEV2ZW50cyBBUEkgYnlcbiAqIG5vcm1hbGl6aW5nIGJyb3dzZXIgcXVp
cmtzLiBTdWJjbGFzc2VzIGRvIG5vdCBuZWNlc3NhcmlseSBoYXZlIHRvIGltcGxlbWVudCBhXG4g
KiBET00gaW50ZXJmYWNlOyBjdXN0b20gYXBwbGljYXRpb24tc3BlY2lmaWMgZXZlbnRzIGNhbiBh
bHNvIHN1YmNsYXNzIHRoaXMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmln
IENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHsq
fSB0YXJnZXRJbnN0IE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBh
cmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHBhcmFt
IHtET01FdmVudFRhcmdldH0gbmF0aXZlRXZlbnRUYXJnZXQgVGFyZ2V0IG5vZGUuXG4gKi9cbmZ1
bmN0aW9uIFN5bnRoZXRpY0V2ZW50KGRpc3BhdGNoQ29uZmlnLCB0YXJnZXRJbnN0LCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgaWYgKGZhbHNlKSB7XG4gICAgLy8gdGhlc2Ug
aGF2ZSBhIGdldHRlci9zZXR0ZXIgZm9yIHdhcm5pbmdzXG4gICAgZGVsZXRlIHRoaXMubmF0aXZl
RXZlbnQ7XG4gICAgZGVsZXRlIHRoaXMucHJldmVudERlZmF1bHQ7XG4gICAgZGVsZXRlIHRoaXMu
c3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgdGhpcy5kaXNwYXRjaENvbmZpZyA9IGRpc3BhdGNo
Q29uZmlnO1xuICB0aGlzLl90YXJnZXRJbnN0ID0gdGFyZ2V0SW5zdDtcbiAgdGhpcy5uYXRpdmVF
dmVudCA9IG5hdGl2ZUV2ZW50O1xuXG4gIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0cnVjdG9y
LkludGVyZmFjZTtcbiAgZm9yICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7XG4gICAgaWYg
KCFJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICBjb250aW51ZTtc
biAgICB9XG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICBkZWxldGUgdGhpc1twcm9wTmFtZV07IC8v
IHRoaXMgaGFzIGEgZ2V0dGVyL3NldHRlciBmb3Igd2FybmluZ3NcbiAgICB9XG4gICAgdmFyIG5v
cm1hbGl6ZSA9IEludGVyZmFjZVtwcm9wTmFtZV07XG4gICAgaWYgKG5vcm1hbGl6ZSkge1xuICAg
ICAgdGhpc1twcm9wTmFtZV0gPSBub3JtYWxpemUobmF0aXZlRXZlbnQpO1xuICAgIH0gZWxzZSB7
XG4gICAgICBpZiAocHJvcE5hbWUgPT09ICd0YXJnZXQnKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0
ID0gbmF0aXZlRXZlbnRUYXJnZXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzW3Byb3BO
YW1lXSA9IG5hdGl2ZUV2ZW50W3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2
YXIgZGVmYXVsdFByZXZlbnRlZCA9IG5hdGl2ZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgIT0gbnVs
bCA/IG5hdGl2ZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgOiBuYXRpdmVFdmVudC5yZXR1cm5WYWx1
ZSA9PT0gZmFsc2U7XG4gIGlmIChkZWZhdWx0UHJldmVudGVkKSB7XG4gICAgdGhpcy5pc0RlZmF1
bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcbiAgfSBlbHNlIHtc
biAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNG
YWxzZTtcbiAgfVxuICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gZW1wdHlGdW5jdGlvbi50
aGF0UmV0dXJuc0ZhbHNlO1xuICByZXR1cm4gdGhpcztcbn1cblxuX2Fzc2lnbihTeW50aGV0aWNF
dmVudC5wcm90b3R5cGUsIHtcbiAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uICgpIHtcbiAgICB0
aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlO1xuICAgIHZhciBldmVudCA9IHRoaXMubmF0aXZl
RXZlbnQ7XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlm
IChldmVudC5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtc
biAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2YWxpZC10eXBlb2ZcbiAgICB9IGVs
c2UgaWYgKHR5cGVvZiBldmVudC5yZXR1cm5WYWx1ZSAhPT0gJ3Vua25vd24nKSB7XG4gICAgICBl
dmVudC5yZXR1cm5WYWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmlzRGVmYXVsdFByZXZl
bnRlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlO1xuICB9LFxuXG4gIHN0b3BQcm9w
YWdhdGlvbjogZnVuY3Rpb24gKCkge1xuICAgIHZhciBldmVudCA9IHRoaXMubmF0aXZlRXZlbnQ7
XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVu
dC5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAg
ICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhbGlkLXR5cGVvZlxuICAgIH0gZWxzZSBp
ZiAodHlwZW9mIGV2ZW50LmNhbmNlbEJ1YmJsZSAhPT0gJ3Vua25vd24nKSB7XG4gICAgICAvLyBU
aGUgQ2hhbmdlRXZlbnRQbHVnaW4gcmVnaXN0ZXJzIGEgXCJwcm9wZXJ0eWNoYW5nZVwiIGV2ZW50
IGZvclxuICAgICAgLy8gSUUuIFRoaXMgZXZlbnQgZG9lcyBub3Qgc3VwcG9ydCBidWJibGluZyBv
ciBjYW5jZWxsaW5nLCBhbmRcbiAgICAgIC8vIGFueSByZWZlcmVuY2VzIHRvIGNhbmNlbEJ1YmJs
ZSB0aHJvdyBcIk1lbWJlciBub3QgZm91bmRcIi4gIEFcbiAgICAgIC8vIHR5cGVvZiBjaGVjayBv
ZiBcInVua25vd25cIiBjaXJjdW12ZW50cyB0aGlzIGlzc3VlIChhbmQgaXMgYWxzb1xuICAgICAg
Ly8gSUUgc3BlY2lmaWMpLlxuICAgICAgZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTtcbiAgICB9
XG5cbiAgICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0
dXJuc1RydWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFdlIHJlbGVhc2UgYWxsIGRpc3BhdGNoZWQg
YFN5bnRoZXRpY0V2ZW50YHMgYWZ0ZXIgZWFjaCBldmVudCBsb29wLCBhZGRpbmdcbiAgICogdGhl
bSBiYWNrIGludG8gdGhlIHBvb2wuIFRoaXMgYWxsb3dzIGEgd2F5IHRvIGhvbGQgb250byBhIHJl
ZmVyZW5jZSB0aGF0XG4gICAqIHdvbid0IGJlIGFkZGVkIGJhY2sgaW50byB0aGUgcG9vbC5cbiAg
ICovXG4gIHBlcnNpc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmlzUGVyc2lzdGVudCA9IGVt
cHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDaGVja3Mg
aWYgdGhpcyBldmVudCBzaG91bGQgYmUgcmVsZWFzZWQgYmFjayBpbnRvIHRoZSBwb29sLlxuICAg
KlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoaXMgc2hvdWxkIG5vdCBiZSByZWxl
YXNlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNQZXJzaXN0ZW50OiBlbXB0eUZ1bmN0
aW9uLnRoYXRSZXR1cm5zRmFsc2UsXG5cbiAgLyoqXG4gICAqIGBQb29sZWRDbGFzc2AgbG9va3Mg
Zm9yIGBkZXN0cnVjdG9yYCBvbiBlYWNoIGluc3RhbmNlIGl0IHJlbGVhc2VzLlxuICAgKi9cbiAg
ZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xuICAgIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0
cnVjdG9yLkludGVyZmFjZTtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBJbnRlcmZhY2UpIHtc
biAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywg
cHJvcE5hbWUsIGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24ocHJvcE5hbWUsIElu
dGVyZmFjZVtwcm9wTmFtZV0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXNbcHJvcE5h
bWVdID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaG91
bGRCZVJlbGVhc2VkUHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpc1tzaG91bGRC
ZVJlbGVhc2VkUHJvcGVydGllc1tpXV0gPSBudWxsO1xuICAgIH1cbiAgICBpZiAoZmFsc2UpIHtc
biAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnbmF0aXZlRXZlbnQnLCBnZXRQb29s
ZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9uKCduYXRpdmVFdmVudCcsIG51bGwpKTtcbiAgICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAncHJldmVudERlZmF1bHQnLCBnZXRQb29sZWRX
YXJuaW5nUHJvcGVydHlEZWZpbml0aW9uKCdwcmV2ZW50RGVmYXVsdCcsIGVtcHR5RnVuY3Rpb24p
KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnc3RvcFByb3BhZ2F0aW9uJywg
Z2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbignc3RvcFByb3BhZ2F0aW9uJywgZW1w
dHlGdW5jdGlvbikpO1xuICAgIH1cbiAgfVxufSk7XG5cblN5bnRoZXRpY0V2ZW50LkludGVyZmFj
ZSA9IEV2ZW50SW50ZXJmYWNlO1xuXG5pZiAoZmFsc2UpIHtcbiAgaWYgKGlzUHJveHlTdXBwb3J0
ZWQpIHtcbiAgICAvKmVzbGludC1kaXNhYmxlIG5vLWZ1bmMtYXNzaWduICovXG4gICAgU3ludGhl
dGljRXZlbnQgPSBuZXcgUHJveHkoU3ludGhldGljRXZlbnQsIHtcbiAgICAgIGNvbnN0cnVjdDog
ZnVuY3Rpb24gKHRhcmdldCwgYXJncykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBseSh0YXJn
ZXQsIE9iamVjdC5jcmVhdGUodGFyZ2V0LnByb3RvdHlwZSksIGFyZ3MpO1xuICAgICAgfSxcbiAg
ICAgIGFwcGx5OiBmdW5jdGlvbiAoY29uc3RydWN0b3IsIHRoYXQsIGFyZ3MpIHtcbiAgICAgICAg
cmV0dXJuIG5ldyBQcm94eShjb25zdHJ1Y3Rvci5hcHBseSh0aGF0LCBhcmdzKSwge1xuICAgICAg
ICAgIHNldDogZnVuY3Rpb24gKHRhcmdldCwgcHJvcCwgdmFsdWUpIHtcbiAgICAgICAgICAgIGlm
IChwcm9wICE9PSAnaXNQZXJzaXN0ZW50JyAmJiAhdGFyZ2V0LmNvbnN0cnVjdG9yLkludGVyZmFj
ZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSAmJiBzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllcy5pbmRl
eE9mKHByb3ApID09PSAtMSkge1xuICAgICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRXYXJuRm9yQWRkZWROZXdQcm9wZXJ0eSB8fCB0
YXJnZXQuaXNQZXJzaXN0ZW50KCksIFwiVGhpcyBzeW50aGV0aWMgZXZlbnQgaXMgcmV1c2VkIGZv
ciBwZXJmb3JtYW5jZSByZWFzb25zLiBJZiB5b3UncmUgXCIgKyBcInNlZWluZyB0aGlzLCB5b3Un
cmUgYWRkaW5nIGEgbmV3IHByb3BlcnR5IGluIHRoZSBzeW50aGV0aWMgZXZlbnQgb2JqZWN0LiBc
IiArICdUaGUgcHJvcGVydHkgaXMgbmV2ZXIgcmVsZWFzZWQuIFNlZSAnICsgJ2h0dHBzOi8vZmIu
bWUvcmVhY3QtZXZlbnQtcG9vbGluZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKSA6IHZvaWQgMDtc
biAgICAgICAgICAgICAgZGlkV2FybkZvckFkZGVkTmV3UHJvcGVydHkgPSB0cnVlO1xuICAgICAg
ICAgICAgfVxuICAgICAgICAgICAgdGFyZ2V0W3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xu
ICAgIC8qZXNsaW50LWVuYWJsZSBuby1mdW5jLWFzc2lnbiAqL1xuICB9XG59XG4vKipcbiAqIEhl
bHBlciB0byByZWR1Y2UgYm9pbGVycGxhdGUgd2hlbiBjcmVhdGluZyBzdWJjbGFzc2VzLlxuICpc
biAqIEBwYXJhbSB7ZnVuY3Rpb259IENsYXNzXG4gKiBAcGFyYW0gez9vYmplY3R9IEludGVyZmFj
ZVxuICovXG5TeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MgPSBmdW5jdGlvbiAoQ2xhc3MsIElu
dGVyZmFjZSkge1xuICB2YXIgU3VwZXIgPSB0aGlzO1xuXG4gIHZhciBFID0gZnVuY3Rpb24gKCkg
e307XG4gIEUucHJvdG90eXBlID0gU3VwZXIucHJvdG90eXBlO1xuICB2YXIgcHJvdG90eXBlID0g
bmV3IEUoKTtcblxuICBfYXNzaWduKHByb3RvdHlwZSwgQ2xhc3MucHJvdG90eXBlKTtcbiAgQ2xh
c3MucHJvdG90eXBlID0gcHJvdG90eXBlO1xuICBDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBDbGFzcztcblxuICBDbGFzcy5JbnRlcmZhY2UgPSBfYXNzaWduKHt9LCBTdXBlci5JbnRlcmZh
Y2UsIEludGVyZmFjZSk7XG4gIENsYXNzLmF1Z21lbnRDbGFzcyA9IFN1cGVyLmF1Z21lbnRDbGFz
cztcblxuICBQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oQ2xhc3MsIFBvb2xlZENsYXNzLmZvdXJB
cmd1bWVudFBvb2xlcik7XG59O1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oU3ludGhldGlj
RXZlbnQsIFBvb2xlZENsYXNzLmZvdXJBcmd1bWVudFBvb2xlcik7XG5cbm1vZHVsZS5leHBvcnRz
ID0gU3ludGhldGljRXZlbnQ7XG5cbi8qKlxuICAqIEhlbHBlciB0byBudWxsaWZ5IHN5bnRoZXRp
Y0V2ZW50IGluc3RhbmNlIHByb3BlcnRpZXMgd2hlbiBkZXN0cnVjdGluZ1xuICAqXG4gICogQHBh
cmFtIHtvYmplY3R9IFN5bnRoZXRpY0V2ZW50XG4gICogQHBhcmFtIHtTdHJpbmd9IHByb3BOYW1l
XG4gICogQHJldHVybiB7b2JqZWN0fSBkZWZpbmVQcm9wZXJ0eSBvYmplY3RcbiAgKi9cbmZ1bmN0
aW9uIGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24ocHJvcE5hbWUsIGdldFZhbCkg
e1xuICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBnZXRWYWwgPT09ICdmdW5jdGlvbic7XG4gIHJl
dHVybiB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIHNldDogc2V0LFxuICAgIGdldDog
Z2V0XG4gIH07XG5cbiAgZnVuY3Rpb24gc2V0KHZhbCkge1xuICAgIHZhciBhY3Rpb24gPSBpc0Z1
bmN0aW9uID8gJ3NldHRpbmcgdGhlIG1ldGhvZCcgOiAnc2V0dGluZyB0aGUgcHJvcGVydHknO1xu
ICAgIHdhcm4oYWN0aW9uLCAnVGhpcyBpcyBlZmZlY3RpdmVseSBhIG5vLW9wJyk7XG4gICAgcmV0
dXJuIHZhbDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldCgpIHtcbiAgICB2YXIgYWN0aW9uID0gaXNG
dW5jdGlvbiA/ICdhY2Nlc3NpbmcgdGhlIG1ldGhvZCcgOiAnYWNjZXNzaW5nIHRoZSBwcm9wZXJ0
eSc7XG4gICAgdmFyIHJlc3VsdCA9IGlzRnVuY3Rpb24gPyAnVGhpcyBpcyBhIG5vLW9wIGZ1bmN0
aW9uJyA6ICdUaGlzIGlzIHNldCB0byBudWxsJztcbiAgICB3YXJuKGFjdGlvbiwgcmVzdWx0KTtc
biAgICByZXR1cm4gZ2V0VmFsO1xuICB9XG5cbiAgZnVuY3Rpb24gd2FybihhY3Rpb24sIHJlc3Vs
dCkge1xuICAgIHZhciB3YXJuaW5nQ29uZGl0aW9uID0gZmFsc2U7XG4gICAgIGZhbHNlID8gd2Fy
bmluZyh3YXJuaW5nQ29uZGl0aW9uLCBcIlRoaXMgc3ludGhldGljIGV2ZW50IGlzIHJldXNlZCBm
b3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gSWYgeW91J3JlIHNlZWluZyB0aGlzLCBcIiArIFwieW91
J3JlICVzIGAlc2Agb24gYSByZWxlYXNlZC9udWxsaWZpZWQgc3ludGhldGljIGV2ZW50LiAlcy4g
XCIgKyAnSWYgeW91IG11c3Qga2VlcCB0aGUgb3JpZ2luYWwgc3ludGhldGljIGV2ZW50IGFyb3Vu
ZCwgdXNlIGV2ZW50LnBlcnNpc3QoKS4gJyArICdTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1ldmVu
dC1wb29saW5nIGZvciBtb3JlIGluZm9ybWF0aW9uLicsIGFjdGlvbiwgcHJvcE5hbWUsIHJlc3Vs
dCkgOiB2b2lkIDA7XG4gIH1cbn1cblxuLyoqKi8gfSksXG4vKiAxMiAqL1xuLyoqKi8gKGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJp
Y3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cblxuXG52YXIgX3By
b2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG52YXIgaW52YXJpYW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLyoqXG4gKiBTdGF0aWMgcG9vbGVycy4gU2V2ZXJh
bCBjdXN0b20gdmVyc2lvbnMgZm9yIGVhY2ggcG90ZW50aWFsIG51bWJlciBvZlxuICogYXJndW1l
bnRzLiBBIGNvbXBsZXRlbHkgZ2VuZXJpYyBwb29sZXIgaXMgZWFzeSB0byBpbXBsZW1lbnQsIGJ1
dCB3b3VsZFxuICogcmVxdWlyZSBhY2Nlc3NpbmcgdGhlIGBhcmd1bWVudHNgIG9iamVjdC4gSW4g
ZWFjaCBvZiB0aGVzZSwgYHRoaXNgIHJlZmVycyB0b1xuICogdGhlIENsYXNzIGl0c2VsZiwgbm90
IGFuIGluc3RhbmNlLiBJZiBhbnkgb3RoZXJzIGFyZSBuZWVkZWQsIHNpbXBseSBhZGQgdGhlbVxu
ICogaGVyZSwgb3IgaW4gdGhlaXIgb3duIGZpbGVzLlxuICovXG52YXIgb25lQXJndW1lbnRQb29s
ZXIgPSBmdW5jdGlvbiAoY29weUZpZWxkc0Zyb20pIHtcbiAgdmFyIEtsYXNzID0gdGhpcztcbiAg
aWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBLbGFz
cy5pbnN0YW5jZVBvb2wucG9wKCk7XG4gICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgY29weUZpZWxk
c0Zyb20pO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3
IEtsYXNzKGNvcHlGaWVsZHNGcm9tKTtcbiAgfVxufTtcblxudmFyIHR3b0FyZ3VtZW50UG9vbGVy
ID0gZnVuY3Rpb24gKGExLCBhMikge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3Mu
aW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNl
UG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIpO1xuICAgIHJldHVy
biBpbnN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMik7XG4g
IH1cbn07XG5cbnZhciB0aHJlZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMp
IHtcbiAgdmFyIEtsYXNzID0gdGhpcztcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgp
IHtcbiAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG4gICAgS2xh
c3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyLCBhMyk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9
IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMyk7XG4gIH1cbn07XG5cbnZh
ciBmb3VyQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMywgYTQpIHtcbiAgdmFy
IEtsYXNzID0gdGhpcztcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHtcbiAgICB2
YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG4gICAgS2xhc3MuY2FsbChp
bnN0YW5jZSwgYTEsIGEyLCBhMywgYTQpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNl
IHtcbiAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMsIGE0KTtcbiAgfVxufTtcblxudmFy
IHN0YW5kYXJkUmVsZWFzZXIgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgdmFyIEtsYXNzID0g
dGhpcztcbiAgIShpbnN0YW5jZSBpbnN0YW5jZW9mIEtsYXNzKSA/ICBmYWxzZSA/IGludmFyaWFu
dChmYWxzZSwgJ1RyeWluZyB0byByZWxlYXNlIGFuIGluc3RhbmNlIGludG8gYSBwb29sIG9mIGEg
ZGlmZmVyZW50IHR5cGUuJykgOiBfcHJvZEludmFyaWFudCgnMjUnKSA6IHZvaWQgMDtcbiAgaW5z
dGFuY2UuZGVzdHJ1Y3RvcigpO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCA8IEts
YXNzLnBvb2xTaXplKSB7XG4gICAgS2xhc3MuaW5zdGFuY2VQb29sLnB1c2goaW5zdGFuY2UpO1xu
ICB9XG59O1xuXG52YXIgREVGQVVMVF9QT09MX1NJWkUgPSAxMDtcbnZhciBERUZBVUxUX1BPT0xF
UiA9IG9uZUFyZ3VtZW50UG9vbGVyO1xuXG4vKipcbiAqIEF1Z21lbnRzIGBDb3B5Q29uc3RydWN0
b3JgIHRvIGJlIGEgcG9vbGFibGUgY2xhc3MsIGF1Z21lbnRpbmcgb25seSB0aGUgY2xhc3NcbiAq
IGl0c2VsZiAoc3RhdGljYWxseSkgbm90IGFkZGluZyBhbnkgcHJvdG90eXBpY2FsIGZpZWxkcy4g
QW55IENvcHlDb25zdHJ1Y3RvclxuICogeW91IGdpdmUgdGhpcyBtYXkgaGF2ZSBhIGBwb29sU2l6
ZWAgcHJvcGVydHksIGFuZCB3aWxsIGxvb2sgZm9yIGFcbiAqIHByb3RvdHlwaWNhbCBgZGVzdHJ1
Y3RvcmAgb24gaW5zdGFuY2VzLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IENvcHlDb25zdHJ1
Y3RvciBDb25zdHJ1Y3RvciB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlc2V0LlxuICogQHBhcmFtIHtG
dW5jdGlvbn0gcG9vbGVyIEN1c3RvbWl6YWJsZSBwb29sZXIuXG4gKi9cbnZhciBhZGRQb29saW5n
VG8gPSBmdW5jdGlvbiAoQ29weUNvbnN0cnVjdG9yLCBwb29sZXIpIHtcbiAgLy8gQ2FzdGluZyBh
cyBhbnkgc28gdGhhdCBmbG93IGlnbm9yZXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBhbmQg
dHJ1c3RzXG4gIC8vIGl0IHRvIG1hdGNoIHRoZSB0eXBlIHdlIGRlY2xhcmVkXG4gIHZhciBOZXdL
bGFzcyA9IENvcHlDb25zdHJ1Y3RvcjtcbiAgTmV3S2xhc3MuaW5zdGFuY2VQb29sID0gW107XG4g
IE5ld0tsYXNzLmdldFBvb2xlZCA9IHBvb2xlciB8fCBERUZBVUxUX1BPT0xFUjtcbiAgaWYgKCFO
ZXdLbGFzcy5wb29sU2l6ZSkge1xuICAgIE5ld0tsYXNzLnBvb2xTaXplID0gREVGQVVMVF9QT09M
X1NJWkU7XG4gIH1cbiAgTmV3S2xhc3MucmVsZWFzZSA9IHN0YW5kYXJkUmVsZWFzZXI7XG4gIHJl
dHVybiBOZXdLbGFzcztcbn07XG5cbnZhciBQb29sZWRDbGFzcyA9IHtcbiAgYWRkUG9vbGluZ1Rv
OiBhZGRQb29saW5nVG8sXG4gIG9uZUFyZ3VtZW50UG9vbGVyOiBvbmVBcmd1bWVudFBvb2xlcixc
biAgdHdvQXJndW1lbnRQb29sZXI6IHR3b0FyZ3VtZW50UG9vbGVyLFxuICB0aHJlZUFyZ3VtZW50
UG9vbGVyOiB0aHJlZUFyZ3VtZW50UG9vbGVyLFxuICBmb3VyQXJndW1lbnRQb29sZXI6IGZvdXJB
cmd1bWVudFBvb2xlclxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBQb29sZWRDbGFzcztcblxuLyoq
Ki8gfSksXG4vKiAxMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG5cblxudmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xu
XG52YXIgUmVhY3RCYXNlQ2xhc3NlcyA9IF9fd2VicGFja19yZXF1aXJlX18oNTIpO1xudmFyIFJl
YWN0Q2hpbGRyZW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNSk7XG52YXIgUmVhY3RET01GYWN0
b3JpZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExMCk7XG52YXIgUmVhY3RFbGVtZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG52YXIgUmVhY3RQcm9wVHlwZXMgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDExMSk7XG52YXIgUmVhY3RWZXJzaW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTQp
O1xuXG52YXIgY3JlYXRlUmVhY3RDbGFzcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTE1KTtcbnZh
ciBvbmx5Q2hpbGQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNyk7XG5cbnZhciBjcmVhdGVFbGVt
ZW50ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQ7XG52YXIgY3JlYXRlRmFjdG9yeSA9IFJl
YWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5O1xudmFyIGNsb25lRWxlbWVudCA9IFJlYWN0RWxlbWVu
dC5jbG9uZUVsZW1lbnQ7XG5cbmlmIChmYWxzZSkge1xuICB2YXIgbG93UHJpb3JpdHlXYXJuaW5n
ID0gcmVxdWlyZSgnLi9sb3dQcmlvcml0eVdhcm5pbmcnKTtcbiAgdmFyIGNhbkRlZmluZVByb3Bl
cnR5ID0gcmVxdWlyZSgnLi9jYW5EZWZpbmVQcm9wZXJ0eScpO1xuICB2YXIgUmVhY3RFbGVtZW50
VmFsaWRhdG9yID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRWYWxpZGF0b3InKTtcbiAgdmFyIGRp
ZFdhcm5Qcm9wVHlwZXNEZXByZWNhdGVkID0gZmFsc2U7XG4gIGNyZWF0ZUVsZW1lbnQgPSBSZWFj
dEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRWxlbWVudDtcbiAgY3JlYXRlRmFjdG9yeSA9IFJlYWN0
RWxlbWVudFZhbGlkYXRvci5jcmVhdGVGYWN0b3J5O1xuICBjbG9uZUVsZW1lbnQgPSBSZWFjdEVs
ZW1lbnRWYWxpZGF0b3IuY2xvbmVFbGVtZW50O1xufVxuXG52YXIgX19zcHJlYWQgPSBfYXNzaWdu
O1xudmFyIGNyZWF0ZU1peGluID0gZnVuY3Rpb24gKG1peGluKSB7XG4gIHJldHVybiBtaXhpbjtc
bn07XG5cbmlmIChmYWxzZSkge1xuICB2YXIgd2FybmVkRm9yU3ByZWFkID0gZmFsc2U7XG4gIHZh
ciB3YXJuZWRGb3JDcmVhdGVNaXhpbiA9IGZhbHNlO1xuICBfX3NwcmVhZCA9IGZ1bmN0aW9uICgp
IHtcbiAgICBsb3dQcmlvcml0eVdhcm5pbmcod2FybmVkRm9yU3ByZWFkLCAnUmVhY3QuX19zcHJl
YWQgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiBVc2UgJyArICdPYmplY3Qu
YXNzaWduIGRpcmVjdGx5IG9yIGFub3RoZXIgaGVscGVyIGZ1bmN0aW9uIHdpdGggc2ltaWxhciAn
ICsgJ3NlbWFudGljcy4gWW91IG1heSBiZSBzZWVpbmcgdGhpcyB3YXJuaW5nIGR1ZSB0byB5b3Vy
IGNvbXBpbGVyLiAnICsgJ1NlZSBodHRwczovL2ZiLm1lL3JlYWN0LXNwcmVhZC1kZXByZWNhdGlv
biBmb3IgbW9yZSBkZXRhaWxzLicpO1xuICAgIHdhcm5lZEZvclNwcmVhZCA9IHRydWU7XG4gICAg
cmV0dXJuIF9hc3NpZ24uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgfTtcblxuICBjcmVhdGVN
aXhpbiA9IGZ1bmN0aW9uIChtaXhpbikge1xuICAgIGxvd1ByaW9yaXR5V2FybmluZyh3YXJuZWRG
b3JDcmVhdGVNaXhpbiwgJ1JlYWN0LmNyZWF0ZU1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3Vs
ZCBub3QgYmUgdXNlZC4gJyArICdJbiBSZWFjdCB2MTYuMCwgaXQgd2lsbCBiZSByZW1vdmVkLiAn
ICsgJ1lvdSBjYW4gdXNlIHRoaXMgbWl4aW4gZGlyZWN0bHkgaW5zdGVhZC4gJyArICdTZWUgaHR0
cHM6Ly9mYi5tZS9jcmVhdGVtaXhpbi13YXMtbmV2ZXItaW1wbGVtZW50ZWQgZm9yIG1vcmUgaW5m
by4nKTtcbiAgICB3YXJuZWRGb3JDcmVhdGVNaXhpbiA9IHRydWU7XG4gICAgcmV0dXJuIG1peGlu
O1xuICB9O1xufVxuXG52YXIgUmVhY3QgPSB7XG4gIC8vIE1vZGVyblxuXG4gIENoaWxkcmVuOiB7
XG4gICAgbWFwOiBSZWFjdENoaWxkcmVuLm1hcCxcbiAgICBmb3JFYWNoOiBSZWFjdENoaWxkcmVu
LmZvckVhY2gsXG4gICAgY291bnQ6IFJlYWN0Q2hpbGRyZW4uY291bnQsXG4gICAgdG9BcnJheTog
UmVhY3RDaGlsZHJlbi50b0FycmF5LFxuICAgIG9ubHk6IG9ubHlDaGlsZFxuICB9LFxuXG4gIENv
bXBvbmVudDogUmVhY3RCYXNlQ2xhc3Nlcy5Db21wb25lbnQsXG4gIFB1cmVDb21wb25lbnQ6IFJl
YWN0QmFzZUNsYXNzZXMuUHVyZUNvbXBvbmVudCxcblxuICBjcmVhdGVFbGVtZW50OiBjcmVhdGVF
bGVtZW50LFxuICBjbG9uZUVsZW1lbnQ6IGNsb25lRWxlbWVudCxcbiAgaXNWYWxpZEVsZW1lbnQ6
IFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudCxcblxuICAvLyBDbGFzc2ljXG5cbiAgUHJvcFR5
cGVzOiBSZWFjdFByb3BUeXBlcyxcbiAgY3JlYXRlQ2xhc3M6IGNyZWF0ZVJlYWN0Q2xhc3MsXG4g
IGNyZWF0ZUZhY3Rvcnk6IGNyZWF0ZUZhY3RvcnksXG4gIGNyZWF0ZU1peGluOiBjcmVhdGVNaXhp
bixcblxuICAvLyBUaGlzIGxvb2tzIERPTSBzcGVjaWZpYyBidXQgdGhlc2UgYXJlIGFjdHVhbGx5
IGlzb21vcnBoaWMgaGVscGVyc1xuICAvLyBzaW5jZSB0aGV5IGFyZSBqdXN0IGdlbmVyYXRpbmcg
RE9NIHN0cmluZ3MuXG4gIERPTTogUmVhY3RET01GYWN0b3JpZXMsXG5cbiAgdmVyc2lvbjogUmVh
Y3RWZXJzaW9uLFxuXG4gIC8vIERlcHJlY2F0ZWQgaG9vayBmb3IgSlNYIHNwcmVhZCwgZG9uJ3Qg
dXNlIHRoaXMgZm9yIGFueXRoaW5nLlxuICBfX3NwcmVhZDogX19zcHJlYWRcbn07XG5cbmlmIChm
YWxzZSkge1xuICB2YXIgd2FybmVkRm9yQ3JlYXRlQ2xhc3MgPSBmYWxzZTtcbiAgaWYgKGNhbkRl
ZmluZVByb3BlcnR5KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0LCAnUHJvcFR5
cGVzJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxvd1ByaW9yaXR5V2Fy
bmluZyhkaWRXYXJuUHJvcFR5cGVzRGVwcmVjYXRlZCwgJ0FjY2Vzc2luZyBQcm9wVHlwZXMgdmlh
IHRoZSBtYWluIFJlYWN0IHBhY2thZ2UgaXMgZGVwcmVjYXRlZCwnICsgJyBhbmQgd2lsbCBiZSBy
ZW1vdmVkIGluICBSZWFjdCB2MTYuMC4nICsgJyBVc2UgdGhlIGxhdGVzdCBhdmFpbGFibGUgdjE1
LiogcHJvcC10eXBlcyBwYWNrYWdlIGZyb20gbnBtIGluc3RlYWQuJyArICcgRm9yIGluZm8gb24g
dXNhZ2UsIGNvbXBhdGliaWxpdHksIG1pZ3JhdGlvbiBhbmQgbW9yZSwgc2VlICcgKyAnaHR0cHM6
Ly9mYi5tZS9wcm9wLXR5cGVzLWRvY3MnKTtcbiAgICAgICAgZGlkV2FyblByb3BUeXBlc0RlcHJl
Y2F0ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG4gICAgICB9XG4g
ICAgfSk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3QsICdjcmVhdGVDbGFzcycs
IHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICBsb3dQcmlvcml0eVdhcm5pbmco
d2FybmVkRm9yQ3JlYXRlQ2xhc3MsICdBY2Nlc3NpbmcgY3JlYXRlQ2xhc3MgdmlhIHRoZSBtYWlu
IFJlYWN0IHBhY2thZ2UgaXMgZGVwcmVjYXRlZCwnICsgJyBhbmQgd2lsbCBiZSByZW1vdmVkIGlu
IFJlYWN0IHYxNi4wLicgKyBcIiBVc2UgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzIGluc3RlYWQu
IElmIHlvdSdyZSBub3QgeWV0IFwiICsgJ3JlYWR5IHRvIG1pZ3JhdGUsIGNyZWF0ZS1yZWFjdC1j
bGFzcyB2MTUuKiBpcyBhdmFpbGFibGUgJyArICdvbiBucG0gYXMgYSB0ZW1wb3JhcnksIGRyb3At
aW4gcmVwbGFjZW1lbnQuICcgKyAnRm9yIG1vcmUgaW5mbyBzZWUgaHR0cHM6Ly9mYi5tZS9yZWFj
dC1jcmVhdGUtY2xhc3MnKTtcbiAgICAgICAgd2FybmVkRm9yQ3JlYXRlQ2xhc3MgPSB0cnVlO1xu
ICAgICAgICByZXR1cm4gY3JlYXRlUmVhY3RDbGFzcztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxu
XG4gIC8vIFJlYWN0LkRPTSBmYWN0b3JpZXMgYXJlIGRlcHJlY2F0ZWQuIFdyYXAgdGhlc2UgbWV0
aG9kcyBzbyB0aGF0XG4gIC8vIGludm9jYXRpb25zIG9mIHRoZSBSZWFjdC5ET00gbmFtZXNwYWNl
IGFuZCBhbGVydCB1c2VycyB0byBzd2l0Y2hcbiAgLy8gdG8gdGhlIGByZWFjdC1kb20tZmFjdG9y
aWVzYCBwYWNrYWdlLlxuICBSZWFjdC5ET00gPSB7fTtcbiAgdmFyIHdhcm5lZEZvckZhY3Rvcmll
cyA9IGZhbHNlO1xuICBPYmplY3Qua2V5cyhSZWFjdERPTUZhY3RvcmllcykuZm9yRWFjaChmdW5j
dGlvbiAoZmFjdG9yeSkge1xuICAgIFJlYWN0LkRPTVtmYWN0b3J5XSA9IGZ1bmN0aW9uICgpIHtc
biAgICAgIGlmICghd2FybmVkRm9yRmFjdG9yaWVzKSB7XG4gICAgICAgIGxvd1ByaW9yaXR5V2Fy
bmluZyhmYWxzZSwgJ0FjY2Vzc2luZyBmYWN0b3JpZXMgbGlrZSBSZWFjdC5ET00uJXMgaGFzIGJl
ZW4gZGVwcmVjYXRlZCAnICsgJ2FuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdjE2LjArLiBVc2UgdGhl
ICcgKyAncmVhY3QtZG9tLWZhY3RvcmllcyBwYWNrYWdlIGluc3RlYWQuICcgKyAnIFZlcnNpb24g
MS4wIHByb3ZpZGVzIGEgZHJvcC1pbiByZXBsYWNlbWVudC4nICsgJyBGb3IgbW9yZSBpbmZvLCBz
ZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1kb20tZmFjdG9yaWVzJywgZmFjdG9yeSk7XG4gICAgICAg
IHdhcm5lZEZvckZhY3RvcmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVhY3RE
T01GYWN0b3JpZXNbZmFjdG9yeV0uYXBwbHkoUmVhY3RET01GYWN0b3JpZXMsIGFyZ3VtZW50cyk7
XG4gICAgfTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3Q7XG5cbi8qKiovIH0p
LFxuLyogMTQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDE0LXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuXG5cbnZhciBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxudmFy
IFJlYWN0Q3VycmVudE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5cbnZhciB3YXJu
aW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbnZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IF9f
d2VicGFja19yZXF1aXJlX18oNTQpO1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IF9fd2VicGFj
a19yZXF1aXJlX18oNTUpO1xuXG52YXIgUkVTRVJWRURfUFJPUFMgPSB7XG4gIGtleTogdHJ1ZSxc
biAgcmVmOiB0cnVlLFxuICBfX3NlbGY6IHRydWUsXG4gIF9fc291cmNlOiB0cnVlXG59O1xuXG52
YXIgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24sIHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3du
O1xuXG5mdW5jdGlvbiBoYXNWYWxpZFJlZihjb25maWcpIHtcbiAgaWYgKGZhbHNlKSB7XG4gICAg
aWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHtcbiAgICAgIHZhciBnZXR0
ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ3JlZicpLmdldDtc
biAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJl
dHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbmZpZy5yZWYgIT09
IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaGFzVmFsaWRLZXkoY29uZmlnKSB7XG4gIGlmIChm
YWxzZSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ2tleScpKSB7XG4g
ICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcs
ICdrZXknKS5nZXQ7XG4gICAgICBpZiAoZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZykg
e1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBj
b25maWcua2V5ICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGRlZmluZUtleVByb3BXYXJu
aW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSkge1xuICB2YXIgd2FybkFib3V0QWNjZXNzaW5n
S2V5ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24p
IHtcbiAgICAgIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duID0gdHJ1ZTtcbiAgICAgICBmYWxz
ZSA/IHdhcm5pbmcoZmFsc2UsICclczogYGtleWAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFj
Y2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJ
ZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxk
IGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4g
KGh0dHBzOi8vZmIubWUvcmVhY3Qtc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSkgOiB2b2lk
IDA7XG4gICAgfVxuICB9O1xuICB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkuaXNSZWFjdFdhcm5pbmcg
PSB0cnVlO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdrZXknLCB7XG4gICAgZ2V0
OiB3YXJuQWJvdXRBY2Nlc3NpbmdLZXksXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xu
fVxuXG5mdW5jdGlvbiBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5h
bWUpIHtcbiAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ1JlZiA9IGZ1bmN0aW9uICgpIHtcbiAgICBp
ZiAoIXNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duKSB7XG4gICAgICBzcGVjaWFsUHJvcFJlZldh
cm5pbmdTaG93biA9IHRydWU7XG4gICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnJXM6IGBy
ZWZgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgJyArICdp
biBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBz
YW1lICcgKyAndmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFz
cyBpdCBhcyBhIGRpZmZlcmVudCAnICsgJ3Byb3AuIChodHRwczovL2ZiLm1lL3JlYWN0LXNwZWNp
YWwtcHJvcHMpJywgZGlzcGxheU5hbWUpIDogdm9pZCAwO1xuICAgIH1cbiAgfTtcbiAgd2FybkFi
b3V0QWNjZXNzaW5nUmVmLmlzUmVhY3RXYXJuaW5nID0gdHJ1ZTtcbiAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHByb3BzLCAncmVmJywge1xuICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nUmVmLFxu
ICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IG1ldGhv
ZCB0byBjcmVhdGUgYSBuZXcgUmVhY3QgZWxlbWVudC4gVGhpcyBubyBsb25nZXIgYWRoZXJlcyB0
b1xuICogdGhlIGNsYXNzIHBhdHRlcm4sIHNvIGRvIG5vdCB1c2UgbmV3IHRvIGNhbGwgaXQuIEFs
c28sIG5vIGluc3RhbmNlb2YgY2hlY2tcbiAqIHdpbGwgd29yay4gSW5zdGVhZCB0ZXN0ICQkdHlw
ZW9mIGZpZWxkIGFnYWluc3QgU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpIHRvIGNoZWNrXG4g
KiBpZiBzb21ldGhpbmcgaXMgYSBSZWFjdCBFbGVtZW50LlxuICpcbiAqIEBwYXJhbSB7Kn0gdHlw
ZVxuICogQHBhcmFtIHsqfSBrZXlcbiAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdH0gcmVmXG4gKiBA
cGFyYW0geyp9IHNlbGYgQSAqdGVtcG9yYXJ5KiBoZWxwZXIgdG8gZGV0ZWN0IHBsYWNlcyB3aGVy
ZSBgdGhpc2AgaXNcbiAqIGRpZmZlcmVudCBmcm9tIHRoZSBgb3duZXJgIHdoZW4gUmVhY3QuY3Jl
YXRlRWxlbWVudCBpcyBjYWxsZWQsIHNvIHRoYXQgd2VcbiAqIGNhbiB3YXJuLiBXZSB3YW50IHRv
IGdldCByaWQgb2Ygb3duZXIgYW5kIHJlcGxhY2Ugc3RyaW5nIGByZWZgcyB3aXRoIGFycm93XG4g
KiBmdW5jdGlvbnMsIGFuZCBhcyBsb25nIGFzIGB0aGlzYCBhbmQgb3duZXIgYXJlIHRoZSBzYW1l
LCB0aGVyZSB3aWxsIGJlIG5vXG4gKiBjaGFuZ2UgaW4gYmVoYXZpb3IuXG4gKiBAcGFyYW0geyp9
IHNvdXJjZSBBbiBhbm5vdGF0aW9uIG9iamVjdCAoYWRkZWQgYnkgYSB0cmFuc3BpbGVyIG9yIG90
aGVyd2lzZSlcbiAqIGluZGljYXRpbmcgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBhbmQvb3Igb3Ro
ZXIgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0geyp9IG93bmVyXG4gKiBAcGFyYW0geyp9IHByb3Bz
XG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIFJlYWN0RWxlbWVudCA9IGZ1bmN0aW9uICh0eXBlLCBr
ZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpIHtcbiAgdmFyIGVsZW1lbnQgPSB7
XG4gICAgLy8gVGhpcyB0YWcgYWxsb3cgdXMgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhpcyBhcyBh
IFJlYWN0IEVsZW1lbnRcbiAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxuXG4gICAg
Ly8gQnVpbHQtaW4gcHJvcGVydGllcyB0aGF0IGJlbG9uZyBvbiB0aGUgZWxlbWVudFxuICAgIHR5
cGU6IHR5cGUsXG4gICAga2V5OiBrZXksXG4gICAgcmVmOiByZWYsXG4gICAgcHJvcHM6IHByb3Bz
LFxuXG4gICAgLy8gUmVjb3JkIHRoZSBjb21wb25lbnQgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5n
IHRoaXMgZWxlbWVudC5cbiAgICBfb3duZXI6IG93bmVyXG4gIH07XG5cbiAgaWYgKGZhbHNlKSB7
XG4gICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBjdXJyZW50bHkgbXV0YXRpdmUuIFdlIHB1
dCBpdCBvblxuICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4g
ZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXG4gICAgLy8gVGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0
aCBhIFdlYWtNYXAgb25jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCBpblxuICAgIC8vIGNvbW1vbmx5
IHVzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLlxuICAgIGVsZW1lbnQuX3N0b3JlID0ge307
XG5cbiAgICAvLyBUbyBtYWtlIGNvbXBhcmluZyBSZWFjdEVsZW1lbnRzIGVhc2llciBmb3IgdGVz
dGluZyBwdXJwb3Nlcywgd2UgbWFrZVxuICAgIC8vIHRoZSB2YWxpZGF0aW9uIGZsYWcgbm9uLWVu
dW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGRcbiAgICAvLyBpbmNsdWRlIGV2
ZXJ5IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiksIHNvIHRoZSB0ZXN0IGZyYW1ld29ya1xu
ICAgIC8vIGlnbm9yZXMgaXQuXG4gICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG4gICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3RvcmUsICd2YWxpZGF0ZWQnLCB7XG4gICAg
ICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAg
ICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGZhbHNlXG4gICAgICB9KTtcbiAg
ICAgIC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9ubHkgcHJvcGVydGllcy5cbiAgICAgIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7XG4gICAgICAgIGNvbmZpZ3Vy
YWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJs
ZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBzZWxmXG4gICAgICB9KTtcbiAgICAgIC8vIFR3byBl
bGVtZW50cyBjcmVhdGVkIGluIHR3byBkaWZmZXJlbnQgcGxhY2VzIHNob3VsZCBiZSBjb25zaWRl
cmVkXG4gICAgICAvLyBlcXVhbCBmb3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgdGhlcmVmb3JlIHdl
IGhpZGUgaXQgZnJvbSBlbnVtZXJhdGlvbi5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShl
bGVtZW50LCAnX3NvdXJjZScsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAg
ICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAg
dmFsdWU6IHNvdXJjZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQuX3N0
b3JlLnZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgZWxlbWVudC5fc2VsZiA9IHNlbGY7XG4gICAg
ICBlbGVtZW50Ll9zb3VyY2UgPSBzb3VyY2U7XG4gICAgfVxuICAgIGlmIChPYmplY3QuZnJlZXpl
KSB7XG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQucHJvcHMpO1xuICAgICAgT2JqZWN0LmZy
ZWV6ZShlbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZWxlbWVudDtcbn07XG5cbi8q
KlxuICogQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgUmVhY3RFbGVtZW50IG9mIHRoZSBnaXZlbiB0
eXBlLlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxl
dmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWVsZW1lbnRcbiAqL1xuUmVhY3RFbGVtZW50LmNyZWF0
ZUVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwgY29uZmlnLCBjaGlsZHJlbikge1xuICB2YXIgcHJv
cE5hbWU7XG5cbiAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZFxuICB2YXIgcHJvcHMg
PSB7fTtcblxuICB2YXIga2V5ID0gbnVsbDtcbiAgdmFyIHJlZiA9IG51bGw7XG4gIHZhciBzZWxm
ID0gbnVsbDtcbiAgdmFyIHNvdXJjZSA9IG51bGw7XG5cbiAgaWYgKGNvbmZpZyAhPSBudWxsKSB7
XG4gICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcbiAgICAgIHJlZiA9IGNvbmZpZy5yZWY7
XG4gICAgfVxuICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7XG4gICAgICBrZXkgPSAnJyAr
IGNvbmZpZy5rZXk7XG4gICAgfVxuXG4gICAgc2VsZiA9IGNvbmZpZy5fX3NlbGYgPT09IHVuZGVm
aW5lZCA/IG51bGwgOiBjb25maWcuX19zZWxmO1xuICAgIHNvdXJjZSA9IGNvbmZpZy5fX3NvdXJj
ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NvdXJjZTtcbiAgICAvLyBSZW1haW5p
bmcgcHJvcGVydGllcyBhcmUgYWRkZWQgdG8gYSBuZXcgcHJvcHMgb2JqZWN0XG4gICAgZm9yIChw
cm9wTmFtZSBpbiBjb25maWcpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZp
ZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkp
IHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXTtcbiAgICAgIH1c
biAgICB9XG4gIH1cblxuICAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVu
dCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRvXG4gIC8vIHRoZSBuZXdseSBhbGxvY2F0
ZWQgcHJvcHMgb2JqZWN0LlxuICB2YXIgY2hpbGRyZW5MZW5ndGggPSBhcmd1bWVudHMubGVuZ3Ro
IC0gMjtcbiAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7XG4gICAgcHJvcHMuY2hpbGRyZW4g
PSBjaGlsZHJlbjtcbiAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0aCA+IDEpIHtcbiAgICB2YXIg
Y2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGNoaWxkcmVuTGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkQXJyYXlbaV0gPSBhcmd1bWVu
dHNbaSArIDJdO1xuICAgIH1cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGlmIChPYmplY3QuZnJl
ZXplKSB7XG4gICAgICAgIE9iamVjdC5mcmVlemUoY2hpbGRBcnJheSk7XG4gICAgICB9XG4gICAg
fVxuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcbiAgfVxuXG4gIC8vIFJlc29sdmUg
ZGVmYXVsdCBwcm9wc1xuICBpZiAodHlwZSAmJiB0eXBlLmRlZmF1bHRQcm9wcykge1xuICAgIHZh
ciBkZWZhdWx0UHJvcHMgPSB0eXBlLmRlZmF1bHRQcm9wcztcbiAgICBmb3IgKHByb3BOYW1lIGlu
IGRlZmF1bHRQcm9wcykge1xuICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVk
KSB7XG4gICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGRlZmF1bHRQcm9wc1twcm9wTmFtZV07XG4g
ICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChmYWxzZSkge1xuICAgIGlmIChrZXkgfHwgcmVmKSB7
XG4gICAgICBpZiAodHlwZW9mIHByb3BzLiQkdHlwZW9mID09PSAndW5kZWZpbmVkJyB8fCBwcm9w
cy4kJHR5cGVvZiAhPT0gUkVBQ1RfRUxFTUVOVF9UWVBFKSB7XG4gICAgICAgIHZhciBkaXNwbGF5
TmFtZSA9IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nID8gdHlwZS5kaXNwbGF5TmFtZSB8fCB0
eXBlLm5hbWUgfHwgJ1Vua25vd24nIDogdHlwZTtcbiAgICAgICAgaWYgKGtleSkge1xuICAgICAg
ICAgIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG4gICAg
ICAgIH1cbiAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgIGRlZmluZVJlZlByb3BXYXJuaW5n
R2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4g
IH1cbiAgcmV0dXJuIFJlYWN0RWxlbWVudCh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBS
ZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LCBwcm9wcyk7XG59O1xuXG4vKipcbiAqIFJldHVybiBh
IGZ1bmN0aW9uIHRoYXQgcHJvZHVjZXMgUmVhY3RFbGVtZW50cyBvZiBhIGdpdmVuIHR5cGUuXG4g
KiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBp
Lmh0bWwjcmVhY3QuY3JlYXRlZmFjdG9yeVxuICovXG5SZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9y
eSA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gIHZhciBmYWN0b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0
ZUVsZW1lbnQuYmluZChudWxsLCB0eXBlKTtcbiAgLy8gRXhwb3NlIHRoZSB0eXBlIG9uIHRoZSBm
YWN0b3J5IGFuZCB0aGUgcHJvdG90eXBlIHNvIHRoYXQgaXQgY2FuIGJlXG4gIC8vIGVhc2lseSBh
Y2Nlc3NlZCBvbiBlbGVtZW50cy4gRS5nLiBgPEZvbyAvPi50eXBlID09PSBGb29gLlxuICAvLyBU
aGlzIHNob3VsZCBub3QgYmUgbmFtZWQgYGNvbnN0cnVjdG9yYCBzaW5jZSB0aGlzIG1heSBub3Qg
YmUgdGhlIGZ1bmN0aW9uXG4gIC8vIHRoYXQgY3JlYXRlZCB0aGUgZWxlbWVudCwgYW5kIGl0IG1h
eSBub3QgZXZlbiBiZSBhIGNvbnN0cnVjdG9yLlxuICAvLyBMZWdhY3kgaG9vayBUT0RPOiBXYXJu
IGlmIHRoaXMgaXMgYWNjZXNzZWRcbiAgZmFjdG9yeS50eXBlID0gdHlwZTtcbiAgcmV0dXJuIGZh
Y3Rvcnk7XG59O1xuXG5SZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlS2V5ID0gZnVuY3Rpb24g
KG9sZEVsZW1lbnQsIG5ld0tleSkge1xuICB2YXIgbmV3RWxlbWVudCA9IFJlYWN0RWxlbWVudChv
bGRFbGVtZW50LnR5cGUsIG5ld0tleSwgb2xkRWxlbWVudC5yZWYsIG9sZEVsZW1lbnQuX3NlbGYs
IG9sZEVsZW1lbnQuX3NvdXJjZSwgb2xkRWxlbWVudC5fb3duZXIsIG9sZEVsZW1lbnQucHJvcHMp
O1xuXG4gIHJldHVybiBuZXdFbGVtZW50O1xufTtcblxuLyoqXG4gKiBDbG9uZSBhbmQgcmV0dXJu
IGEgbmV3IFJlYWN0RWxlbWVudCB1c2luZyBlbGVtZW50IGFzIHRoZSBzdGFydGluZyBwb2ludC5c
biAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1h
cGkuaHRtbCNyZWFjdC5jbG9uZWVsZW1lbnRcbiAqL1xuUmVhY3RFbGVtZW50LmNsb25lRWxlbWVu
dCA9IGZ1bmN0aW9uIChlbGVtZW50LCBjb25maWcsIGNoaWxkcmVuKSB7XG4gIHZhciBwcm9wTmFt
ZTtcblxuICAvLyBPcmlnaW5hbCBwcm9wcyBhcmUgY29waWVkXG4gIHZhciBwcm9wcyA9IF9hc3Np
Z24oe30sIGVsZW1lbnQucHJvcHMpO1xuXG4gIC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0
ZWRcbiAgdmFyIGtleSA9IGVsZW1lbnQua2V5O1xuICB2YXIgcmVmID0gZWxlbWVudC5yZWY7XG4g
IC8vIFNlbGYgaXMgcHJlc2VydmVkIHNpbmNlIHRoZSBvd25lciBpcyBwcmVzZXJ2ZWQuXG4gIHZh
ciBzZWxmID0gZWxlbWVudC5fc2VsZjtcbiAgLy8gU291cmNlIGlzIHByZXNlcnZlZCBzaW5jZSBj
bG9uZUVsZW1lbnQgaXMgdW5saWtlbHkgdG8gYmUgdGFyZ2V0ZWQgYnkgYVxuICAvLyB0cmFuc3Bp
bGVyLCBhbmQgdGhlIG9yaWdpbmFsIHNvdXJjZSBpcyBwcm9iYWJseSBhIGJldHRlciBpbmRpY2F0
b3Igb2YgdGhlXG4gIC8vIHRydWUgb3duZXIuXG4gIHZhciBzb3VyY2UgPSBlbGVtZW50Ll9zb3Vy
Y2U7XG5cbiAgLy8gT3duZXIgd2lsbCBiZSBwcmVzZXJ2ZWQsIHVubGVzcyByZWYgaXMgb3ZlcnJp
ZGRlblxuICB2YXIgb3duZXIgPSBlbGVtZW50Ll9vd25lcjtcblxuICBpZiAoY29uZmlnICE9IG51
bGwpIHtcbiAgICBpZiAoaGFzVmFsaWRSZWYoY29uZmlnKSkge1xuICAgICAgLy8gU2lsZW50bHkg
c3RlYWwgdGhlIHJlZiBmcm9tIHRoZSBwYXJlbnQuXG4gICAgICByZWYgPSBjb25maWcucmVmO1xu
ICAgICAgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuICAgIH1cbiAgICBpZiAo
aGFzVmFsaWRLZXkoY29uZmlnKSkge1xuICAgICAga2V5ID0gJycgKyBjb25maWcua2V5O1xuICAg
IH1cblxuICAgIC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIG92ZXJyaWRlIGV4aXN0aW5nIHByb3Bz
XG4gICAgdmFyIGRlZmF1bHRQcm9wcztcbiAgICBpZiAoZWxlbWVudC50eXBlICYmIGVsZW1lbnQu
dHlwZS5kZWZhdWx0UHJvcHMpIHtcbiAgICAgIGRlZmF1bHRQcm9wcyA9IGVsZW1lbnQudHlwZS5k
ZWZhdWx0UHJvcHM7XG4gICAgfVxuICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7XG4gICAg
ICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIHByb3BOYW1lKSAmJiAhUkVTRVJWRURf
UFJPUFMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIGlmIChjb25maWdbcHJv
cE5hbWVdID09PSB1bmRlZmluZWQgJiYgZGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQpIHtcbiAg
ICAgICAgICAvLyBSZXNvbHZlIGRlZmF1bHQgcHJvcHNcbiAgICAgICAgICBwcm9wc1twcm9wTmFt
ZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAg
IHByb3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07XG4gICAgICAgIH1cbiAgICAgIH1c
biAgICB9XG4gIH1cblxuICAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVu
dCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRvXG4gIC8vIHRoZSBuZXdseSBhbGxvY2F0
ZWQgcHJvcHMgb2JqZWN0LlxuICB2YXIgY2hpbGRyZW5MZW5ndGggPSBhcmd1bWVudHMubGVuZ3Ro
IC0gMjtcbiAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7XG4gICAgcHJvcHMuY2hpbGRyZW4g
PSBjaGlsZHJlbjtcbiAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0aCA+IDEpIHtcbiAgICB2YXIg
Y2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGNoaWxkcmVuTGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkQXJyYXlbaV0gPSBhcmd1bWVu
dHNbaSArIDJdO1xuICAgIH1cbiAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkQXJyYXk7XG4gIH1c
blxuICByZXR1cm4gUmVhY3RFbGVtZW50KGVsZW1lbnQudHlwZSwga2V5LCByZWYsIHNlbGYsIHNv
dXJjZSwgb3duZXIsIHByb3BzKTtcbn07XG5cbi8qKlxuICogVmVyaWZpZXMgdGhlIG9iamVjdCBp
cyBhIFJlYWN0RWxlbWVudC5cbiAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFj
dC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5pc3ZhbGlkZWxlbWVudFxuICogQHBhcmFt
IHs/b2JqZWN0fSBvYmplY3RcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYG9iamVjdGAg
aXMgYSB2YWxpZCBjb21wb25lbnQuXG4gKiBAZmluYWxcbiAqL1xuUmVhY3RFbGVtZW50LmlzVmFs
aWRFbGVtZW50ID0gZnVuY3Rpb24gKG9iamVjdCkge1xuICByZXR1cm4gdHlwZW9mIG9iamVjdCA9
PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsICYmIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVB
Q1RfRUxFTUVOVF9UWVBFO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVsZW1lbnQ7XG5c
bi8qKiovIH0pLFxuLyogMTUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1
aXJlX18oMik7XG5cbnZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5m
dW5jdGlvbiBjaGVja01hc2sodmFsdWUsIGJpdG1hc2spIHtcbiAgcmV0dXJuICh2YWx1ZSAmIGJp
dG1hc2spID09PSBiaXRtYXNrO1xufVxuXG52YXIgRE9NUHJvcGVydHlJbmplY3Rpb24gPSB7XG4g
IC8qKlxuICAgKiBNYXBwaW5nIGZyb20gbm9ybWFsaXplZCwgY2FtZWxjYXNlZCBwcm9wZXJ0eSBu
YW1lcyB0byBhIGNvbmZpZ3VyYXRpb24gdGhhdFxuICAgKiBzcGVjaWZpZXMgaG93IHRoZSBhc3Nv
Y2lhdGVkIERPTSBwcm9wZXJ0eSBzaG91bGQgYmUgYWNjZXNzZWQgb3IgcmVuZGVyZWQuXG4gICAq
L1xuICBNVVNUX1VTRV9QUk9QRVJUWTogMHgxLFxuICBIQVNfQk9PTEVBTl9WQUxVRTogMHg0LFxu
ICBIQVNfTlVNRVJJQ19WQUxVRTogMHg4LFxuICBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRTog
MHgxMCB8IDB4OCxcbiAgSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRTogMHgyMCxcblxuICAv
KipcbiAgICogSW5qZWN0IHNvbWUgc3BlY2lhbGl6ZWQga25vd2xlZGdlIGFib3V0IHRoZSBET00u
IFRoaXMgdGFrZXMgYSBjb25maWcgb2JqZWN0XG4gICAqIHdpdGggdGhlIGZvbGxvd2luZyBwcm9w
ZXJ0aWVzOlxuICAgKlxuICAgKiBpc0N1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24gdGhhdCBnaXZl
biBhbiBhdHRyaWJ1dGUgbmFtZSB3aWxsIHJldHVybiB0cnVlXG4gICAqIGlmIGl0IGNhbiBiZSBp
bnNlcnRlZCBpbnRvIHRoZSBET00gdmVyYmF0aW0uIFVzZWZ1bCBmb3IgZGF0YS0qIG9yIGFyaWEt
KlxuICAgKiBhdHRyaWJ1dGVzIHdoZXJlIGl0J3MgaW1wb3NzaWJsZSB0byBlbnVtZXJhdGUgYWxs
IG9mIHRoZSBwb3NzaWJsZVxuICAgKiBhdHRyaWJ1dGUgbmFtZXMsXG4gICAqXG4gICAqIFByb3Bl
cnRpZXM6IG9iamVjdCBtYXBwaW5nIERPTSBwcm9wZXJ0eSBuYW1lIHRvIG9uZSBvZiB0aGVcbiAg
ICogRE9NUHJvcGVydHlJbmplY3Rpb24gY29uc3RhbnRzIG9yIG51bGwuIElmIHlvdXIgYXR0cmli
dXRlIGlzbid0IGluIGhlcmUsXG4gICAqIGl0IHdvbid0IGdldCB3cml0dGVuIHRvIHRoZSBET00u
XG4gICAqXG4gICAqIERPTUF0dHJpYnV0ZU5hbWVzOiBvYmplY3QgbWFwcGluZyBSZWFjdCBhdHRy
aWJ1dGUgbmFtZSB0byB0aGUgRE9NXG4gICAqIGF0dHJpYnV0ZSBuYW1lLiBBdHRyaWJ1dGUgbmFt
ZXMgbm90IHNwZWNpZmllZCB1c2UgdGhlICoqbG93ZXJjYXNlKipcbiAgICogbm9ybWFsaXplZCBu
YW1lLlxuICAgKlxuICAgKiBET01BdHRyaWJ1dGVOYW1lc3BhY2VzOiBvYmplY3QgbWFwcGluZyBS
ZWFjdCBhdHRyaWJ1dGUgbmFtZSB0byB0aGUgRE9NXG4gICAqIGF0dHJpYnV0ZSBuYW1lc3BhY2Ug
VVJMLiAoQXR0cmlidXRlIG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIG5vIG5hbWVzcGFjZS4pXG4g
ICAqXG4gICAqIERPTVByb3BlcnR5TmFtZXM6IHNpbWlsYXIgdG8gRE9NQXR0cmlidXRlTmFtZXMg
YnV0IGZvciBET00gcHJvcGVydGllcy5cbiAgICogUHJvcGVydHkgbmFtZXMgbm90IHNwZWNpZmll
ZCB1c2UgdGhlIG5vcm1hbGl6ZWQgbmFtZS5cbiAgICpcbiAgICogRE9NTXV0YXRpb25NZXRob2Rz
OiBQcm9wZXJ0aWVzIHRoYXQgcmVxdWlyZSBzcGVjaWFsIG11dGF0aW9uIG1ldGhvZHMuIElmXG4g
ICAqIGB2YWx1ZWAgaXMgdW5kZWZpbmVkLCB0aGUgbXV0YXRpb24gbWV0aG9kIHNob3VsZCB1bnNl
dCB0aGUgcHJvcGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBkb21Qcm9wZXJ0eUNv
bmZpZyB0aGUgY29uZmlnIGFzIGRlc2NyaWJlZCBhYm92ZS5cbiAgICovXG4gIGluamVjdERPTVBy
b3BlcnR5Q29uZmlnOiBmdW5jdGlvbiAoZG9tUHJvcGVydHlDb25maWcpIHtcbiAgICB2YXIgSW5q
ZWN0aW9uID0gRE9NUHJvcGVydHlJbmplY3Rpb247XG4gICAgdmFyIFByb3BlcnRpZXMgPSBkb21Q
cm9wZXJ0eUNvbmZpZy5Qcm9wZXJ0aWVzIHx8IHt9O1xuICAgIHZhciBET01BdHRyaWJ1dGVOYW1l
c3BhY2VzID0gZG9tUHJvcGVydHlDb25maWcuRE9NQXR0cmlidXRlTmFtZXNwYWNlcyB8fCB7fTtc
biAgICB2YXIgRE9NQXR0cmlidXRlTmFtZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01BdHRyaWJ1
dGVOYW1lcyB8fCB7fTtcbiAgICB2YXIgRE9NUHJvcGVydHlOYW1lcyA9IGRvbVByb3BlcnR5Q29u
ZmlnLkRPTVByb3BlcnR5TmFtZXMgfHwge307XG4gICAgdmFyIERPTU11dGF0aW9uTWV0aG9kcyA9
IGRvbVByb3BlcnR5Q29uZmlnLkRPTU11dGF0aW9uTWV0aG9kcyB8fCB7fTtcblxuICAgIGlmIChk
b21Qcm9wZXJ0eUNvbmZpZy5pc0N1c3RvbUF0dHJpYnV0ZSkge1xuICAgICAgRE9NUHJvcGVydHku
X2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLnB1c2goZG9tUHJvcGVydHlDb25maWcuaXNDdXN0
b21BdHRyaWJ1dGUpO1xuICAgIH1cblxuICAgIGZvciAodmFyIHByb3BOYW1lIGluIFByb3BlcnRp
ZXMpIHtcbiAgICAgICEhRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9w
TmFtZSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdpbmplY3RET01Qcm9wZXJ0eUNvbmZp
ZyguLi4pOiBZb3VcXCdyZSB0cnlpbmcgdG8gaW5qZWN0IERPTSBwcm9wZXJ0eSBcXCclc1xcJyB3
aGljaCBoYXMgYWxyZWFkeSBiZWVuIGluamVjdGVkLiBZb3UgbWF5IGJlIGFjY2lkZW50YWxseSBp
bmplY3RpbmcgdGhlIHNhbWUgRE9NIHByb3BlcnR5IGNvbmZpZyB0d2ljZSwgb3IgeW91IG1heSBi
ZSBpbmplY3RpbmcgdHdvIGNvbmZpZ3MgdGhhdCBoYXZlIGNvbmZsaWN0aW5nIHByb3BlcnR5IG5h
bWVzLicsIHByb3BOYW1lKSA6IF9wcm9kSW52YXJpYW50KCc0OCcsIHByb3BOYW1lKSA6IHZvaWQg
MDtcblxuICAgICAgdmFyIGxvd2VyQ2FzZWQgPSBwcm9wTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAg
ICAgdmFyIHByb3BDb25maWcgPSBQcm9wZXJ0aWVzW3Byb3BOYW1lXTtcblxuICAgICAgdmFyIHBy
b3BlcnR5SW5mbyA9IHtcbiAgICAgICAgYXR0cmlidXRlTmFtZTogbG93ZXJDYXNlZCxcbiAgICAg
ICAgYXR0cmlidXRlTmFtZXNwYWNlOiBudWxsLFxuICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BO
YW1lLFxuICAgICAgICBtdXRhdGlvbk1ldGhvZDogbnVsbCxcblxuICAgICAgICBtdXN0VXNlUHJv
cGVydHk6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uTVVTVF9VU0VfUFJPUEVSVFkp
LFxuICAgICAgICBoYXNCb29sZWFuVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rp
b24uSEFTX0JPT0xFQU5fVkFMVUUpLFxuICAgICAgICBoYXNOdW1lcmljVmFsdWU6IGNoZWNrTWFz
ayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUUpLFxuICAgICAgICBoYXNQ
b3NpdGl2ZU51bWVyaWNWYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5IQVNf
UE9TSVRJVkVfTlVNRVJJQ19WQUxVRSksXG4gICAgICAgIGhhc092ZXJsb2FkZWRCb29sZWFuVmFs
dWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX09WRVJMT0FERURfQk9PTEVB
Tl9WQUxVRSlcbiAgICAgIH07XG4gICAgICAhKHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUg
KyBwcm9wZXJ0eUluZm8uaGFzTnVtZXJpY1ZhbHVlICsgcHJvcGVydHlJbmZvLmhhc092ZXJsb2Fk
ZWRCb29sZWFuVmFsdWUgPD0gMSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdET01Qcm9w
ZXJ0eTogVmFsdWUgY2FuIGJlIG9uZSBvZiBib29sZWFuLCBvdmVybG9hZGVkIGJvb2xlYW4sIG9y
IG51bWVyaWMgdmFsdWUsIGJ1dCBub3QgYSBjb21iaW5hdGlvbjogJXMnLCBwcm9wTmFtZSkgOiBf
cHJvZEludmFyaWFudCgnNTAnLCBwcm9wTmFtZSkgOiB2b2lkIDA7XG5cbiAgICAgIGlmIChmYWxz
ZSkge1xuICAgICAgICBET01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVtsb3dlckNh
c2VkXSA9IHByb3BOYW1lO1xuICAgICAgfVxuXG4gICAgICBpZiAoRE9NQXR0cmlidXRlTmFtZXMu
aGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0g
RE9NQXR0cmlidXRlTmFtZXNbcHJvcE5hbWVdO1xuICAgICAgICBwcm9wZXJ0eUluZm8uYXR0cmli
dXRlTmFtZSA9IGF0dHJpYnV0ZU5hbWU7XG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAg
IERPTVByb3BlcnR5LmdldFBvc3NpYmxlU3RhbmRhcmROYW1lW2F0dHJpYnV0ZU5hbWVdID0gcHJv
cE5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKERPTUF0dHJpYnV0ZU5hbWVz
cGFjZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BlcnR5SW5mby5h
dHRyaWJ1dGVOYW1lc3BhY2UgPSBET01BdHRyaWJ1dGVOYW1lc3BhY2VzW3Byb3BOYW1lXTtcbiAg
ICAgIH1cblxuICAgICAgaWYgKERPTVByb3BlcnR5TmFtZXMuaGFzT3duUHJvcGVydHkocHJvcE5h
bWUpKSB7XG4gICAgICAgIHByb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWUgPSBET01Qcm9wZXJ0eU5h
bWVzW3Byb3BOYW1lXTtcbiAgICAgIH1cblxuICAgICAgaWYgKERPTU11dGF0aW9uTWV0aG9kcy5o
YXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcGVydHlJbmZvLm11dGF0aW9u
TWV0aG9kID0gRE9NTXV0YXRpb25NZXRob2RzW3Byb3BOYW1lXTtcbiAgICAgIH1cblxuICAgICAg
RE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wTmFtZV0gPSBwcm9wZXJ0eUluZm87XG4gICAgfVxu
ICB9XG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG52YXIgQVRUUklCVVRFX05B
TUVfU1RBUlRfQ0hBUiA9ICc6QS1aX2EtelxcXFx1MDBDMC1cXFxcdTAwRDZcXFxcdTAwRDgtXFxc
XHUwMEY2XFxcXHUwMEY4LVxcXFx1MDJGRlxcXFx1MDM3MC1cXFxcdTAzN0RcXFxcdTAzN0YtXFxc
XHUxRkZGXFxcXHUyMDBDLVxcXFx1MjAwRFxcXFx1MjA3MC1cXFxcdTIxOEZcXFxcdTJDMDAtXFxc
XHUyRkVGXFxcXHUzMDAxLVxcXFx1RDdGRlxcXFx1RjkwMC1cXFxcdUZEQ0ZcXFxcdUZERjAtXFxc
XHVGRkZEJztcbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiAqL1xuXG4vKipcbiAqIERPTVByb3Bl
cnR5IGV4cG9ydHMgbG9va3VwIG9iamVjdHMgdGhhdCBjYW4gYmUgdXNlZCBsaWtlIGZ1bmN0aW9u
czpcbiAqXG4gKiAgID4gRE9NUHJvcGVydHkuaXNWYWxpZFsnaWQnXVxuICogICB0cnVlXG4gKiAg
ID4gRE9NUHJvcGVydHkuaXNWYWxpZFsnZm9vYmFyJ11cbiAqICAgdW5kZWZpbmVkXG4gKlxuICog
QWx0aG91Z2ggdGhpcyBtYXkgYmUgY29uZnVzaW5nLCBpdCBwZXJmb3JtcyBiZXR0ZXIgaW4gZ2Vu
ZXJhbC5cbiAqXG4gKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2tleS1leGlzdHNcbiAqIEBzZWUg
aHR0cDovL2pzcGVyZi5jb20va2V5LW1pc3NpbmdcbiAqL1xudmFyIERPTVByb3BlcnR5ID0ge1xu
ICBJRF9BVFRSSUJVVEVfTkFNRTogJ2RhdGEtcmVhY3RpZCcsXG4gIFJPT1RfQVRUUklCVVRFX05B
TUU6ICdkYXRhLXJlYWN0cm9vdCcsXG5cbiAgQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUjogQVRU
UklCVVRFX05BTUVfU1RBUlRfQ0hBUixcbiAgQVRUUklCVVRFX05BTUVfQ0hBUjogQVRUUklCVVRF
X05BTUVfU1RBUlRfQ0hBUiArICdcXFxcLS4wLTlcXFxcdTAwQjdcXFxcdTAzMDAtXFxcXHUwMzZG
XFxcXHUyMDNGLVxcXFx1MjA0MCcsXG5cbiAgLyoqXG4gICAqIE1hcCBmcm9tIHByb3BlcnR5IFwi
c3RhbmRhcmQgbmFtZVwiIHRvIGFuIG9iamVjdCB3aXRoIGluZm8gYWJvdXQgaG93IHRvIHNldFxu
ICAgKiB0aGUgcHJvcGVydHkgaW4gdGhlIERPTS4gRWFjaCBvYmplY3QgY29udGFpbnM6XG4gICAq
XG4gICAqIGF0dHJpYnV0ZU5hbWU6XG4gICAqICAgVXNlZCB3aGVuIHJlbmRlcmluZyBtYXJrdXAg
b3Igd2l0aCBgKkF0dHJpYnV0ZSgpYC5cbiAgICogYXR0cmlidXRlTmFtZXNwYWNlXG4gICAqIHBy
b3BlcnR5TmFtZTpcbiAgICogICBVc2VkIG9uIERPTSBub2RlIGluc3RhbmNlcy4gKFRoaXMgaW5j
bHVkZXMgcHJvcGVydGllcyB0aGF0IG11dGF0ZSBkdWUgdG9cbiAgICogICBleHRlcm5hbCBmYWN0
b3JzLilcbiAgICogbXV0YXRpb25NZXRob2Q6XG4gICAqICAgSWYgbm9uLW51bGwsIHVzZWQgaW5z
dGVhZCBvZiB0aGUgcHJvcGVydHkgb3IgYHNldEF0dHJpYnV0ZSgpYCBhZnRlclxuICAgKiAgIGlu
aXRpYWwgcmVuZGVyLlxuICAgKiBtdXN0VXNlUHJvcGVydHk6XG4gICAqICAgV2hldGhlciB0aGUg
cHJvcGVydHkgbXVzdCBiZSBhY2Nlc3NlZCBhbmQgbXV0YXRlZCBhcyBhbiBvYmplY3QgcHJvcGVy
dHkuXG4gICAqIGhhc0Jvb2xlYW5WYWx1ZTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBz
aG91bGQgYmUgcmVtb3ZlZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS5cbiAgICogaGFzTnVt
ZXJpY1ZhbHVlOlxuICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgbnVtZXJpYyBv
ciBwYXJzZSBhcyBhIG51bWVyaWMgYW5kIHNob3VsZCBiZVxuICAgKiAgIHJlbW92ZWQgd2hlbiBz
ZXQgdG8gYSBmYWxzZXkgdmFsdWUuXG4gICAqIGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOlxuICAg
KiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgcG9zaXRpdmUgbnVtZXJpYyBvciBwYXJz
ZSBhcyBhIHBvc2l0aXZlXG4gICAqICAgbnVtZXJpYyBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgd2hl
biBzZXQgdG8gYSBmYWxzZXkgdmFsdWUuXG4gICAqIGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6
XG4gICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgY2FuIGJlIHVzZWQgYXMgYSBmbGFnIGFzIHdl
bGwgYXMgd2l0aCBhIHZhbHVlLlxuICAgKiAgIFJlbW92ZWQgd2hlbiBzdHJpY3RseSBlcXVhbCB0
byBmYWxzZTsgcHJlc2VudCB3aXRob3V0IGEgdmFsdWUgd2hlblxuICAgKiAgIHN0cmljdGx5IGVx
dWFsIHRvIHRydWU7IHByZXNlbnQgd2l0aCBhIHZhbHVlIG90aGVyd2lzZS5cbiAgICovXG4gIHBy
b3BlcnRpZXM6IHt9LFxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gbG93ZXJjYXNlIHByb3Bl
cnR5IG5hbWVzIHRvIHRoZSBwcm9wZXJseSBjYXNlZCB2ZXJzaW9uLCB1c2VkXG4gICAqIHRvIHdh
cm4gaW4gdGhlIGNhc2Ugb2YgbWlzc2luZyBwcm9wZXJ0aWVzLiBBdmFpbGFibGUgb25seSBpbiBf
X0RFVl9fLlxuICAgKlxuICAgKiBhdXRvZm9jdXMgaXMgcHJlZGVmaW5lZCwgYmVjYXVzZSBhZGRp
bmcgaXQgdG8gdGhlIHByb3BlcnR5IHdoaXRlbGlzdFxuICAgKiBjYXVzZXMgdW5pbnRlbmRlZCBz
aWRlIGVmZmVjdHMuXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBnZXRQb3Nz
aWJsZVN0YW5kYXJkTmFtZTogIGZhbHNlID8geyBhdXRvZm9jdXM6ICdhdXRvRm9jdXMnIH0gOiBu
dWxsLFxuXG4gIC8qKlxuICAgKiBBbGwgb2YgdGhlIGlzQ3VzdG9tQXR0cmlidXRlKCkgZnVuY3Rp
b25zIHRoYXQgaGF2ZSBiZWVuIGluamVjdGVkLlxuICAgKi9cbiAgX2lzQ3VzdG9tQXR0cmlidXRl
RnVuY3Rpb25zOiBbXSxcblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgYSBwcm9wZXJ0eSBu
YW1lIGlzIGEgY3VzdG9tIGF0dHJpYnV0ZS5cbiAgICogQG1ldGhvZFxuICAgKi9cbiAgaXNDdXN0
b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIChhdHRyaWJ1dGVOYW1lKSB7XG4gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMubGVuZ3RoOyBp
KyspIHtcbiAgICAgIHZhciBpc0N1c3RvbUF0dHJpYnV0ZUZuID0gRE9NUHJvcGVydHkuX2lzQ3Vz
dG9tQXR0cmlidXRlRnVuY3Rpb25zW2ldO1xuICAgICAgaWYgKGlzQ3VzdG9tQXR0cmlidXRlRm4o
YXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxu
ICAgIHJldHVybiBmYWxzZTtcbiAgfSxcblxuICBpbmplY3Rpb246IERPTVByb3BlcnR5SW5qZWN0
aW9uXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IERPTVByb3BlcnR5O1xuXG4vKioqLyB9KSxcbi8q
IDE2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cblxuXG52YXIgUmVhY3RSZWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyNyk7XG52YXIgUmVh
Y3RJbnN0cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXG52YXIgd2Fybmlu
ZyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cbi8qKlxuICogSGVscGVyIHRvIGNhbGwgUmVh
Y3RSZWYuYXR0YWNoUmVmcyB3aXRoIHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCwgc3BsaXQgb3V0
XG4gKiB0byBhdm9pZCBhbGxvY2F0aW9ucyBpbiB0aGUgdHJhbnNhY3Rpb24gbW91bnQtcmVhZHkg
cXVldWUuXG4gKi9cbmZ1bmN0aW9uIGF0dGFjaFJlZnMoKSB7XG4gIFJlYWN0UmVmLmF0dGFjaFJl
ZnModGhpcywgdGhpcy5fY3VycmVudEVsZW1lbnQpO1xufVxuXG52YXIgUmVhY3RSZWNvbmNpbGVy
ID0ge1xuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGNvbXBvbmVudCwgcmVuZGVycyBtYXJr
dXAsIGFuZCByZWdpc3RlcnMgZXZlbnQgbGlzdGVuZXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge1Jl
YWN0Q29tcG9uZW50fSBpbnRlcm5hbEluc3RhbmNlXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlv
blxuICAgKiBAcGFyYW0gez9vYmplY3R9IHRoZSBjb250YWluaW5nIGhvc3QgY29tcG9uZW50IGlu
c3RhbmNlXG4gICAqIEBwYXJhbSB7P29iamVjdH0gaW5mbyBhYm91dCB0aGUgaG9zdCBjb250YWlu
ZXJcbiAgICogQHJldHVybiB7P3N0cmluZ30gUmVuZGVyZWQgbWFya3VwIHRvIGJlIGluc2VydGVk
IGludG8gdGhlIERPTS5cbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbW91
bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCB0cmFuc2FjdGlvbiwgaG9z
dFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHBhcmVudERlYnVnSUQpIC8vIDAg
aW4gcHJvZHVjdGlvbiBhbmQgZm9yIHJvb3RzXG4gIHtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAg
IGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5z
dHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZU1vdW50Q29tcG9uZW50KGludGVybmFsSW5z
dGFuY2UuX2RlYnVnSUQsIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LCBwYXJlbnRE
ZWJ1Z0lEKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG1hcmt1cCA9IGludGVybmFsSW5zdGFu
Y2UubW91bnRDb21wb25lbnQodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJ
bmZvLCBjb250ZXh0LCBwYXJlbnREZWJ1Z0lEKTtcbiAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5f
Y3VycmVudEVsZW1lbnQgJiYgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQucmVmICE9
IG51bGwpIHtcbiAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
YXR0YWNoUmVmcywgaW50ZXJuYWxJbnN0YW5jZSk7XG4gICAgfVxuICAgIGlmIChmYWxzZSkge1xu
ICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uTW91bnRDb21wb25lbnQoaW50ZXJuYWxJbnN0
YW5jZS5fZGVidWdJRCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXJrdXA7XG4gIH0s
XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSB2YWx1ZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG9cbiAg
ICogUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAuXG4gICAq
L1xuICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UpIHtcbiAgICByZXR1
cm4gaW50ZXJuYWxJbnN0YW5jZS5nZXRIb3N0Tm9kZSgpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBS
ZWxlYXNlcyBhbnkgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSBgbW91bnRDb21wb25lbnRgLlxuICAg
KlxuICAgKiBAZmluYWxcbiAgICogQGludGVybmFsXG4gICAqL1xuICB1bm1vdW50Q29tcG9uZW50
OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgc2FmZWx5KSB7XG4gICAgaWYgKGZhbHNlKSB7
XG4gICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuICAgICAgICBS
ZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVbm1vdW50Q29tcG9uZW50KGlu
dGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuICAgICAgfVxuICAgIH1cbiAgICBSZWFjdFJlZi5k
ZXRhY2hSZWZzKGludGVybmFsSW5zdGFuY2UsIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVt
ZW50KTtcbiAgICBpbnRlcm5hbEluc3RhbmNlLnVubW91bnRDb21wb25lbnQoc2FmZWx5KTtcbiAg
ICBpZiAoZmFsc2UpIHtcbiAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAw
KSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVubW91bnRDb21w
b25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxu
XG4gIC8qKlxuICAgKiBVcGRhdGUgYSBjb21wb25lbnQgdXNpbmcgYSBuZXcgZWxlbWVudC5cbiAg
ICpcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZVxuICAgKiBA
cGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnRcbiAgICogQHBhcmFtIHtSZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4
dFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChp
bnRlcm5hbEluc3RhbmNlLCBuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAg
ICB2YXIgcHJldkVsZW1lbnQgPSBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudDtcblxu
ICAgIGlmIChuZXh0RWxlbWVudCA9PT0gcHJldkVsZW1lbnQgJiYgY29udGV4dCA9PT0gaW50ZXJu
YWxJbnN0YW5jZS5fY29udGV4dCkge1xuICAgICAgLy8gU2luY2UgZWxlbWVudHMgYXJlIGltbXV0
YWJsZSBhZnRlciB0aGUgb3duZXIgaXMgcmVuZGVyZWQsXG4gICAgICAvLyB3ZSBjYW4gZG8gYSBj
aGVhcCBpZGVudGl0eSBjb21wYXJlIGhlcmUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgYVxuICAg
ICAgLy8gc3VwZXJmbHVvdXMgcmVjb25jaWxlLiBJdCdzIHBvc3NpYmxlIGZvciBzdGF0ZSB0byBi
ZSBtdXRhYmxlIGJ1dCBzdWNoXG4gICAgICAvLyBjaGFuZ2Ugc2hvdWxkIHRyaWdnZXIgYW4gdXBk
YXRlIG9mIHRoZSBvd25lciB3aGljaCB3b3VsZCByZWNyZWF0ZVxuICAgICAgLy8gdGhlIGVsZW1l
bnQuIFdlIGV4cGxpY2l0bHkgY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYW4gb3duZXIgc2lu
Y2VcbiAgICAgIC8vIGl0J3MgcG9zc2libGUgZm9yIGFuIGVsZW1lbnQgY3JlYXRlZCBvdXRzaWRl
IGEgY29tcG9zaXRlIHRvIGJlXG4gICAgICAvLyBkZWVwbHkgbXV0YXRlZCBhbmQgcmV1c2VkLlxu
XG4gICAgICAvLyBUT0RPOiBCYWlsaW5nIG91dCBlYXJseSBpcyBqdXN0IGEgcGVyZiBvcHRpbWl6
YXRpb24gcmlnaHQ/XG4gICAgICAvLyBUT0RPOiBSZW1vdmluZyB0aGUgcmV0dXJuIHN0YXRlbWVu
dCBzaG91bGQgYWZmZWN0IGNvcnJlY3RuZXNzP1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAg
IGlmIChmYWxzZSkge1xuICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDAp
IHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVmb3JlVXBkYXRl
Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQsIG5leHRFbGVtZW50KTtcbiAgICAg
IH1cbiAgICB9XG5cbiAgICB2YXIgcmVmc0NoYW5nZWQgPSBSZWFjdFJlZi5zaG91bGRVcGRhdGVS
ZWZzKHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCk7XG5cbiAgICBpZiAocmVmc0NoYW5nZWQpIHtc
biAgICAgIFJlYWN0UmVmLmRldGFjaFJlZnMoaW50ZXJuYWxJbnN0YW5jZSwgcHJldkVsZW1lbnQp
O1xuICAgIH1cblxuICAgIGludGVybmFsSW5zdGFuY2UucmVjZWl2ZUNvbXBvbmVudChuZXh0RWxl
bWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXG4gICAgaWYgKHJlZnNDaGFuZ2VkICYmIGlu
dGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50ICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJl
bnRFbGVtZW50LnJlZiAhPSBudWxsKSB7XG4gICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50
UmVhZHkoKS5lbnF1ZXVlKGF0dGFjaFJlZnMsIGludGVybmFsSW5zdGFuY2UpO1xuICAgIH1cblxu
ICAgIGlmIChmYWxzZSkge1xuICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09
IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVXBkYXRlQ29t
cG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuICAgICAgfVxuICAgIH1cbiAgfSxc
blxuICAvKipcbiAgICogRmx1c2ggYW55IGRpcnR5IGNoYW5nZXMgaW4gYSBjb21wb25lbnQuXG4g
ICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFuY2VcbiAgICog
QHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAaW50
ZXJuYWxcbiAgICovXG4gIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogZnVuY3Rpb24gKGludGVy
bmFsSW5zdGFuY2UsIHRyYW5zYWN0aW9uLCB1cGRhdGVCYXRjaE51bWJlcikge1xuICAgIGlmIChp
bnRlcm5hbEluc3RhbmNlLl91cGRhdGVCYXRjaE51bWJlciAhPT0gdXBkYXRlQmF0Y2hOdW1iZXIp
IHtcbiAgICAgIC8vIFRoZSBjb21wb25lbnQncyBlbnF1ZXVlZCBiYXRjaCBudW1iZXIgc2hvdWxk
IGFsd2F5cyBiZSB0aGUgY3VycmVudFxuICAgICAgLy8gYmF0Y2ggb3IgdGhlIGZvbGxvd2luZyBv
bmUuXG4gICAgICAgZmFsc2UgPyB3YXJuaW5nKGludGVybmFsSW5zdGFuY2UuX3VwZGF0ZUJhdGNo
TnVtYmVyID09IG51bGwgfHwgaW50ZXJuYWxJbnN0YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIgPT09
IHVwZGF0ZUJhdGNoTnVtYmVyICsgMSwgJ3BlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogVW5leHBl
Y3RlZCBiYXRjaCBudW1iZXIgKGN1cnJlbnQgJXMsICcgKyAncGVuZGluZyAlcyknLCB1cGRhdGVC
YXRjaE51bWJlciwgaW50ZXJuYWxJbnN0YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIpIDogdm9pZCAw
O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGlmIChpbnRl
cm5hbEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9k
ZWJ1Z0lELCBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCk7XG4gICAgICB9XG4gICAg
fVxuICAgIGludGVybmFsSW5zdGFuY2UucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KHRyYW5zYWN0
aW9uKTtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1
Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVw
ZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEKTtcbiAgICAgIH1cbiAgICB9
XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RSZWNvbmNpbGVyO1xuXG4vKioqLyB9
KSxcbi8qIDE3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNS1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cblxuXG52YXIgRE9NTmFtZXNwYWNlcyA9IF9fd2VicGFja19yZXF1aXJlX18oMzgp
O1xudmFyIHNldElubmVySFRNTCA9IF9fd2VicGFja19yZXF1aXJlX18oMjYpO1xuXG52YXIgY3Jl
YXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMzkp
O1xudmFyIHNldFRleHRDb250ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Nyk7XG5cbnZhciBF
TEVNRU5UX05PREVfVFlQRSA9IDE7XG52YXIgRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFID0g
MTE7XG5cbi8qKlxuICogSW4gSUUgKDgtMTEpIGFuZCBFZGdlLCBhcHBlbmRpbmcgbm9kZXMgd2l0
aCBubyBjaGlsZHJlbiBpcyBkcmFtYXRpY2FsbHlcbiAqIGZhc3RlciB0aGFuIGFwcGVuZGluZyBh
IGZ1bGwgc3VidHJlZSwgc28gd2UgZXNzZW50aWFsbHkgcXVldWUgdXAgdGhlXG4gKiAuYXBwZW5k
Q2hpbGQgY2FsbHMgaGVyZSBhbmQgYXBwbHkgdGhlbSBzbyBlYWNoIG5vZGUgaXMgYWRkZWQgdG8g
aXRzIHBhcmVudFxuICogYmVmb3JlIGFueSBjaGlsZHJlbiBhcmUgYWRkZWQuXG4gKlxuICogSW4g
b3RoZXIgYnJvd3NlcnMsIGRvaW5nIHNvIGlzIHNsb3dlciBvciBuZXV0cmFsIGNvbXBhcmVkIHRv
IHRoZSBvdGhlciBvcmRlclxuICogKGluIEZpcmVmb3gsIHR3aWNlIGFzIHNsb3cpIHNvIHdlIG9u
bHkgZG8gdGhpcyBpbnZlcnNpb24gaW4gSUUuXG4gKlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNv
bS9zcGljeWovaW5uZXJodG1sLXZzLWNyZWF0ZWVsZW1lbnQtdnMtY2xvbmVub2RlLlxuICovXG52
YXIgZW5hYmxlTGF6eSA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9m
IGRvY3VtZW50LmRvY3VtZW50TW9kZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG5hdmlnYXRvciAh
PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvci51c2VyQWdlbnQgPT09ICdzdHJpbmcn
ICYmIC9cXGJFZGdlXFwvXFxkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG5mdW5jdGlv
biBpbnNlcnRUcmVlQ2hpbGRyZW4odHJlZSkge1xuICBpZiAoIWVuYWJsZUxhenkpIHtcbiAgICBy
ZXR1cm47XG4gIH1cbiAgdmFyIG5vZGUgPSB0cmVlLm5vZGU7XG4gIHZhciBjaGlsZHJlbiA9IHRy
ZWUuY2hpbGRyZW47XG4gIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbnNlcnRUcmVlQmVmb3JlKG5v
ZGUsIGNoaWxkcmVuW2ldLCBudWxsKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHJlZS5odG1sICE9
IG51bGwpIHtcbiAgICBzZXRJbm5lckhUTUwobm9kZSwgdHJlZS5odG1sKTtcbiAgfSBlbHNlIGlm
ICh0cmVlLnRleHQgIT0gbnVsbCkge1xuICAgIHNldFRleHRDb250ZW50KG5vZGUsIHRyZWUudGV4
dCk7XG4gIH1cbn1cblxudmFyIGluc2VydFRyZWVCZWZvcmUgPSBjcmVhdGVNaWNyb3NvZnRVbnNh
ZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uIChwYXJlbnROb2RlLCB0cmVlLCByZWZlcmVuY2VOb2Rl
KSB7XG4gIC8vIERvY3VtZW50RnJhZ21lbnRzIGFyZW4ndCBhY3R1YWxseSBwYXJ0IG9mIHRoZSBE
T00gYWZ0ZXIgaW5zZXJ0aW9uIHNvXG4gIC8vIGFwcGVuZGluZyBjaGlsZHJlbiB3b24ndCB1cGRh
dGUgdGhlIERPTS4gV2UgbmVlZCB0byBlbnN1cmUgdGhlIGZyYWdtZW50XG4gIC8vIGlzIHByb3Bl
cmx5IHBvcHVsYXRlZCBmaXJzdCwgYnJlYWtpbmcgb3V0IG9mIG91ciBsYXp5IGFwcHJvYWNoIGZv
ciBqdXN0XG4gIC8vIHRoaXMgbGV2ZWwuIEFsc28sIHNvbWUgPG9iamVjdD4gcGx1Z2lucyAobGlr
ZSBGbGFzaCBQbGF5ZXIpIHdpbGwgcmVhZFxuICAvLyA8cGFyYW0+IG5vZGVzIGltbWVkaWF0ZWx5
IHVwb24gaW5zZXJ0aW9uIGludG8gdGhlIERPTSwgc28gPG9iamVjdD5cbiAgLy8gbXVzdCBhbHNv
IGJlIHBvcHVsYXRlZCBwcmlvciB0byBpbnNlcnRpb24gaW50byB0aGUgRE9NLlxuICBpZiAodHJl
ZS5ub2RlLm5vZGVUeXBlID09PSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUgfHwgdHJlZS5u
b2RlLm5vZGVUeXBlID09PSBFTEVNRU5UX05PREVfVFlQRSAmJiB0cmVlLm5vZGUubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKSA9PT0gJ29iamVjdCcgJiYgKHRyZWUubm9kZS5uYW1lc3BhY2VVUkkgPT0g
bnVsbCB8fCB0cmVlLm5vZGUubmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpKSB7
XG4gICAgaW5zZXJ0VHJlZUNoaWxkcmVuKHRyZWUpO1xuICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVm
b3JlKHRyZWUubm9kZSwgcmVmZXJlbmNlTm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgcGFyZW50Tm9k
ZS5pbnNlcnRCZWZvcmUodHJlZS5ub2RlLCByZWZlcmVuY2VOb2RlKTtcbiAgICBpbnNlcnRUcmVl
Q2hpbGRyZW4odHJlZSk7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiByZXBsYWNlQ2hpbGRXaXRoVHJl
ZShvbGROb2RlLCBuZXdUcmVlKSB7XG4gIG9sZE5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQo
bmV3VHJlZS5ub2RlLCBvbGROb2RlKTtcbiAgaW5zZXJ0VHJlZUNoaWxkcmVuKG5ld1RyZWUpO1xu
fVxuXG5mdW5jdGlvbiBxdWV1ZUNoaWxkKHBhcmVudFRyZWUsIGNoaWxkVHJlZSkge1xuICBpZiAo
ZW5hYmxlTGF6eSkge1xuICAgIHBhcmVudFRyZWUuY2hpbGRyZW4ucHVzaChjaGlsZFRyZWUpO1xu
ICB9IGVsc2Uge1xuICAgIHBhcmVudFRyZWUubm9kZS5hcHBlbmRDaGlsZChjaGlsZFRyZWUubm9k
ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcXVldWVIVE1MKHRyZWUsIGh0bWwpIHtcbiAgaWYgKGVu
YWJsZUxhenkpIHtcbiAgICB0cmVlLmh0bWwgPSBodG1sO1xuICB9IGVsc2Uge1xuICAgIHNldElu
bmVySFRNTCh0cmVlLm5vZGUsIGh0bWwpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHF1ZXVlVGV4dCh0
cmVlLCB0ZXh0KSB7XG4gIGlmIChlbmFibGVMYXp5KSB7XG4gICAgdHJlZS50ZXh0ID0gdGV4dDtc
biAgfSBlbHNlIHtcbiAgICBzZXRUZXh0Q29udGVudCh0cmVlLm5vZGUsIHRleHQpO1xuICB9XG59
XG5cbmZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdGhpcy5ub2RlLm5vZGVOYW1lO1xu
fVxuXG5mdW5jdGlvbiBET01MYXp5VHJlZShub2RlKSB7XG4gIHJldHVybiB7XG4gICAgbm9kZTog
bm9kZSxcbiAgICBjaGlsZHJlbjogW10sXG4gICAgaHRtbDogbnVsbCxcbiAgICB0ZXh0OiBudWxs
LFxuICAgIHRvU3RyaW5nOiB0b1N0cmluZ1xuICB9O1xufVxuXG5ET01MYXp5VHJlZS5pbnNlcnRU
cmVlQmVmb3JlID0gaW5zZXJ0VHJlZUJlZm9yZTtcbkRPTUxhenlUcmVlLnJlcGxhY2VDaGlsZFdp
dGhUcmVlID0gcmVwbGFjZUNoaWxkV2l0aFRyZWU7XG5ET01MYXp5VHJlZS5xdWV1ZUNoaWxkID0g
cXVldWVDaGlsZDtcbkRPTUxhenlUcmVlLnF1ZXVlSFRNTCA9IHF1ZXVlSFRNTDtcbkRPTUxhenlU
cmVlLnF1ZXVlVGV4dCA9IHF1ZXVlVGV4dDtcblxubW9kdWxlLmV4cG9ydHMgPSBET01MYXp5VHJl
ZTtcblxuLyoqKi8gfSksXG4vKiAxOCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29w
eXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG5cbi8qKlxuICogV0FSTklORzogRE8gTk9U
IG1hbnVhbGx5IHJlcXVpcmUgdGhpcyBtb2R1bGUuXG4gKiBUaGlzIGlzIGEgcmVwbGFjZW1lbnQg
Zm9yIGBpbnZhcmlhbnQoLi4uKWAgdXNlZCBieSB0aGUgZXJyb3IgY29kZSBzeXN0ZW1cbiAqIGFu
ZCB3aWxsIF9vbmx5XyBiZSByZXF1aXJlZCBieSB0aGUgY29ycmVzcG9uZGluZyBiYWJlbCBwYXNz
LlxuICogSXQgYWx3YXlzIHRocm93cy5cbiAqL1xuXG5mdW5jdGlvbiByZWFjdFByb2RJbnZhcmlh
bnQoY29kZSkge1xuICB2YXIgYXJnQ291bnQgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTtcblxuICB2
YXIgbWVzc2FnZSA9ICdNaW5pZmllZCBSZWFjdCBlcnJvciAjJyArIGNvZGUgKyAnOyB2aXNpdCAn
ICsgJ2h0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0
bWw/aW52YXJpYW50PScgKyBjb2RlO1xuXG4gIGZvciAodmFyIGFyZ0lkeCA9IDA7IGFyZ0lkeCA8
IGFyZ0NvdW50OyBhcmdJZHgrKykge1xuICAgIG1lc3NhZ2UgKz0gJyZhcmdzW109JyArIGVuY29k
ZVVSSUNvbXBvbmVudChhcmd1bWVudHNbYXJnSWR4ICsgMV0pO1xuICB9XG5cbiAgbWVzc2FnZSAr
PSAnIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZp
cm9ubWVudCcgKyAnIGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5p
bmdzLic7XG5cbiAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICBlcnJvci5uYW1l
ID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdl
IGRvbid0IGNhcmUgYWJvdXQgcmVhY3RQcm9kSW52YXJpYW50J3Mgb3duIGZyYW1lXG5cbiAgdGhy
b3cgZXJyb3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVhY3RQcm9kSW52YXJpYW50O1xuXG4v
KioqLyB9KSxcbi8qIDE5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICovXG5cblxuXG52YXIgRXZlbnRQbHVnaW5IdWIgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDIwKTtcbnZhciBFdmVudFBsdWdpblV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMik7
XG5cbnZhciBhY2N1bXVsYXRlSW50byA9IF9fd2VicGFja19yZXF1aXJlX18oNTkpO1xudmFyIGZv
ckVhY2hBY2N1bXVsYXRlZCA9IF9fd2VicGFja19yZXF1aXJlX18oNjApO1xudmFyIHdhcm5pbmcg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG52YXIgZ2V0TGlzdGVuZXIgPSBFdmVudFBsdWdp
bkh1Yi5nZXRMaXN0ZW5lcjtcblxuLyoqXG4gKiBTb21lIGV2ZW50IHR5cGVzIGhhdmUgYSBub3Rp
b24gb2YgZGlmZmVyZW50IHJlZ2lzdHJhdGlvbiBuYW1lcyBmb3IgZGlmZmVyZW50XG4gKiBcInBo
YXNlc1wiIG9mIHByb3BhZ2F0aW9uLiBUaGlzIGZpbmRzIGxpc3RlbmVycyBieSBhIGdpdmVuIHBo
YXNlLlxuICovXG5mdW5jdGlvbiBsaXN0ZW5lckF0UGhhc2UoaW5zdCwgZXZlbnQsIHByb3BhZ2F0
aW9uUGhhc2UpIHtcbiAgdmFyIHJlZ2lzdHJhdGlvbk5hbWUgPSBldmVudC5kaXNwYXRjaENvbmZp
Zy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1twcm9wYWdhdGlvblBoYXNlXTtcbiAgcmV0dXJuIGdl
dExpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpO1xufVxuXG4vKipcbiAqIFRhZ3MgYSBg
U3ludGhldGljRXZlbnRgIHdpdGggZGlzcGF0Y2hlZCBsaXN0ZW5lcnMuIENyZWF0aW5nIHRoaXMg
ZnVuY3Rpb25cbiAqIGhlcmUsIGFsbG93cyB1cyB0byBub3QgaGF2ZSB0byBiaW5kIG9yIGNyZWF0
ZSBmdW5jdGlvbnMgZm9yIGVhY2ggZXZlbnQuXG4gKiBNdXRhdGluZyB0aGUgZXZlbnQncyBtZW1i
ZXJzIGFsbG93cyB1cyB0byBub3QgaGF2ZSB0byBjcmVhdGUgYSB3cmFwcGluZ1xuICogXCJkaXNw
YXRjaFwiIG9iamVjdCB0aGF0IHBhaXJzIHRoZSBldmVudCB3aXRoIHRoZSBsaXN0ZW5lci5cbiAq
L1xuZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcyhpbnN0LCBwaGFzZSwg
ZXZlbnQpIHtcbiAgaWYgKGZhbHNlKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoaW5zdCwgJ0Rpc3BhdGNoaW5nIGluc3QgbXVzdCBub3QgYmUg
bnVsbCcpIDogdm9pZCAwO1xuICB9XG4gIHZhciBsaXN0ZW5lciA9IGxpc3RlbmVyQXRQaGFzZShp
bnN0LCBldmVudCwgcGhhc2UpO1xuICBpZiAobGlzdGVuZXIpIHtcbiAgICBldmVudC5fZGlzcGF0
Y2hMaXN0ZW5lcnMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMsIGxp
c3RlbmVyKTtcbiAgICBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMgPSBhY2N1bXVsYXRlSW50byhl
dmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMsIGluc3QpO1xuICB9XG59XG5cbi8qKlxuICogQ29sbGVj
dCBkaXNwYXRjaGVzIChtdXN0IGJlIGVudGlyZWx5IGNvbGxlY3RlZCBiZWZvcmUgZGlzcGF0Y2hp
bmcgLSBzZWUgdW5pdFxuICogdGVzdHMpLiBMYXppbHkgYWxsb2NhdGUgdGhlIGFycmF5IHRvIGNv
bnNlcnZlIG1lbW9yeS4gIFdlIG11c3QgbG9vcCB0aHJvdWdoXG4gKiBlYWNoIGV2ZW50IGFuZCBw
ZXJmb3JtIHRoZSB0cmF2ZXJzYWwgZm9yIGVhY2ggb25lLiBXZSBjYW5ub3QgcGVyZm9ybSBhXG4g
KiBzaW5nbGUgdHJhdmVyc2FsIGZvciB0aGUgZW50aXJlIGNvbGxlY3Rpb24gb2YgZXZlbnRzIGJl
Y2F1c2UgZWFjaCBldmVudCBtYXlcbiAqIGhhdmUgYSBkaWZmZXJlbnQgdGFyZ2V0LlxuICovXG5m
dW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlKGV2ZW50KSB7XG4gIGlm
IChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykg
e1xuICAgIEV2ZW50UGx1Z2luVXRpbHMudHJhdmVyc2VUd29QaGFzZShldmVudC5fdGFyZ2V0SW5z
dCwgYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcywgZXZlbnQpO1xuICB9XG59XG5cbi8q
KlxuICogU2FtZSBhcyBgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZWAsIGJ1dCBz
a2lwcyBvdmVyIHRoZSB0YXJnZXRJRC5cbiAqL1xuZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNl
RGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQoZXZlbnQpIHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50
LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgdmFyIHRhcmdl
dEluc3QgPSBldmVudC5fdGFyZ2V0SW5zdDtcbiAgICB2YXIgcGFyZW50SW5zdCA9IHRhcmdldElu
c3QgPyBFdmVudFBsdWdpblV0aWxzLmdldFBhcmVudEluc3RhbmNlKHRhcmdldEluc3QpIDogbnVs
bDtcbiAgICBFdmVudFBsdWdpblV0aWxzLnRyYXZlcnNlVHdvUGhhc2UocGFyZW50SW5zdCwgYWNj
dW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcywgZXZlbnQpO1xuICB9XG59XG5cbi8qKlxuICog
QWNjdW11bGF0ZXMgd2l0aG91dCByZWdhcmQgdG8gZGlyZWN0aW9uLCBkb2VzIG5vdCBsb29rIGZv
ciBwaGFzZWRcbiAqIHJlZ2lzdHJhdGlvbiBuYW1lcy4gU2FtZSBhcyBgYWNjdW11bGF0ZURpcmVj
dERpc3BhdGNoZXNTaW5nbGVgIGJ1dCB3aXRob3V0XG4gKiByZXF1aXJpbmcgdGhhdCB0aGUgYGRp
c3BhdGNoTWFya2VyYCBiZSB0aGUgc2FtZSBhcyB0aGUgZGlzcGF0Y2hlZCBJRC5cbiAqL1xuZnVu
Y3Rpb24gYWNjdW11bGF0ZURpc3BhdGNoZXMoaW5zdCwgaWdub3JlZERpcmVjdGlvbiwgZXZlbnQp
IHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUp
IHtcbiAgICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lz
dHJhdGlvbk5hbWU7XG4gICAgdmFyIGxpc3RlbmVyID0gZ2V0TGlzdGVuZXIoaW5zdCwgcmVnaXN0
cmF0aW9uTmFtZSk7XG4gICAgaWYgKGxpc3RlbmVyKSB7XG4gICAgICBldmVudC5fZGlzcGF0Y2hM
aXN0ZW5lcnMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMsIGxpc3Rl
bmVyKTtcbiAgICAgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IGFjY3VtdWxhdGVJbnRvKGV2
ZW50Ll9kaXNwYXRjaEluc3RhbmNlcywgaW5zdCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICog
QWNjdW11bGF0ZXMgZGlzcGF0Y2hlcyBvbiBhbiBgU3ludGhldGljRXZlbnRgLCBidXQgb25seSBm
b3IgdGhlXG4gKiBgZGlzcGF0Y2hNYXJrZXJgLlxuICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0g
ZXZlbnRcbiAqL1xuZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGUoZXZl
bnQpIHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5h
bWUpIHtcbiAgICBhY2N1bXVsYXRlRGlzcGF0Y2hlcyhldmVudC5fdGFyZ2V0SW5zdCwgbnVsbCwg
ZXZlbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMo
ZXZlbnRzKSB7XG4gIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3VtdWxhdGVUd29QaGFz
ZURpc3BhdGNoZXNTaW5nbGUpO1xufVxuXG5mdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNw
YXRjaGVzU2tpcFRhcmdldChldmVudHMpIHtcbiAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywg
YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQpO1xufVxuXG5mdW5j
dGlvbiBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobGVhdmUsIGVudGVyLCBmcm9tLCB0
bykge1xuICBFdmVudFBsdWdpblV0aWxzLnRyYXZlcnNlRW50ZXJMZWF2ZShmcm9tLCB0bywgYWNj
dW11bGF0ZURpc3BhdGNoZXMsIGxlYXZlLCBlbnRlcik7XG59XG5cbmZ1bmN0aW9uIGFjY3VtdWxh
dGVEaXJlY3REaXNwYXRjaGVzKGV2ZW50cykge1xuICBmb3JFYWNoQWNjdW11bGF0ZWQoZXZlbnRz
LCBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZSk7XG59XG5cbi8qKlxuICogQSBzbWFs
bCBzZXQgb2YgcHJvcGFnYXRpb24gcGF0dGVybnMsIGVhY2ggb2Ygd2hpY2ggd2lsbCBhY2NlcHQg
YSBzbWFsbCBhbW91bnRcbiAqIG9mIGluZm9ybWF0aW9uLCBhbmQgZ2VuZXJhdGUgYSBzZXQgb2Yg
XCJkaXNwYXRjaCByZWFkeSBldmVudCBvYmplY3RzXCIgLSB3aGljaFxuICogYXJlIHNldHMgb2Yg
ZXZlbnRzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gYW5ub3RhdGVkIHdpdGggYSBzZXQgb2YgZGlz
cGF0Y2hlZFxuICogbGlzdGVuZXIgZnVuY3Rpb25zL2lkcy4gVGhlIEFQSSBpcyBkZXNpZ25lZCB0
aGlzIHdheSB0byBkaXNjb3VyYWdlIHRoZXNlXG4gKiBwcm9wYWdhdGlvbiBzdHJhdGVnaWVzIGZy
b20gYWN0dWFsbHkgZXhlY3V0aW5nIHRoZSBkaXNwYXRjaGVzLCBzaW5jZSB3ZVxuICogYWx3YXlz
IHdhbnQgdG8gY29sbGVjdCB0aGUgZW50aXJlIHNldCBvZiBkaXNwYXRjaGVzIGJlZm9yZSBleGVj
dXRpbmcgZXZlbnQgYVxuICogc2luZ2xlIG9uZS5cbiAqXG4gKiBAY29uc3RydWN0b3IgRXZlbnRQ
cm9wYWdhdG9yc1xuICovXG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHtcbiAgYWNjdW11bGF0ZVR3
b1BoYXNlRGlzcGF0Y2hlczogYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyxcbiAgYWNjdW11
bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQ6IGFjY3VtdWxhdGVUd29QaGFzZURpc3Bh
dGNoZXNTa2lwVGFyZ2V0LFxuICBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlczogYWNjdW11bGF0
ZURpcmVjdERpc3BhdGNoZXMsXG4gIGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlczogYWNj
dW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50
UHJvcGFnYXRvcnM7XG5cbi8qKiovIH0pLFxuLyogMjAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4v
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBfcHJvZEludmFyaWFudCA9
IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cbnZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygzMSk7XG52YXIgRXZlbnRQbHVnaW5VdGlscyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMzIpO1xudmFyIFJlYWN0RXJyb3JVdGlscyA9IF9fd2VicGFja19yZXF1aXJlX18o
MzMpO1xuXG52YXIgYWNjdW11bGF0ZUludG8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU5KTtcbnZh
ciBmb3JFYWNoQWNjdW11bGF0ZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYwKTtcbnZhciBpbnZh
cmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG4vKipcbiAqIEludGVybmFsIHN0b3Jl
IGZvciBldmVudCBsaXN0ZW5lcnNcbiAqL1xudmFyIGxpc3RlbmVyQmFuayA9IHt9O1xuXG4vKipc
biAqIEludGVybmFsIHF1ZXVlIG9mIGV2ZW50cyB0aGF0IGhhdmUgYWNjdW11bGF0ZWQgdGhlaXIg
ZGlzcGF0Y2hlcyBhbmQgYXJlXG4gKiB3YWl0aW5nIHRvIGhhdmUgdGhlaXIgZGlzcGF0Y2hlcyBl
eGVjdXRlZC5cbiAqL1xudmFyIGV2ZW50UXVldWUgPSBudWxsO1xuXG4vKipcbiAqIERpc3BhdGNo
ZXMgYW4gZXZlbnQgYW5kIHJlbGVhc2VzIGl0IGJhY2sgaW50byB0aGUgcG9vbCwgdW5sZXNzIHBl
cnNpc3RlbnQuXG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBldmVudCBTeW50aGV0aWMgZXZlbnQg
dG8gYmUgZGlzcGF0Y2hlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2ltdWxhdGVkIElmIHRoZSBl
dmVudCBpcyBzaW11bGF0ZWQgKGNoYW5nZXMgZXhuIGJlaGF2aW9yKVxuICogQHByaXZhdGVcbiAq
L1xudmFyIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZSA9IGZ1bmN0aW9uIChldmVudCwgc2lt
dWxhdGVkKSB7XG4gIGlmIChldmVudCkge1xuICAgIEV2ZW50UGx1Z2luVXRpbHMuZXhlY3V0ZURp
c3BhdGNoZXNJbk9yZGVyKGV2ZW50LCBzaW11bGF0ZWQpO1xuXG4gICAgaWYgKCFldmVudC5pc1Bl
cnNpc3RlbnQoKSkge1xuICAgICAgZXZlbnQuY29uc3RydWN0b3IucmVsZWFzZShldmVudCk7XG4g
ICAgfVxuICB9XG59O1xudmFyIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVNpbXVsYXRlZCA9
IGZ1bmN0aW9uIChlKSB7XG4gIHJldHVybiBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2UoZSwg
dHJ1ZSk7XG59O1xudmFyIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVRvcExldmVsID0gZnVu
Y3Rpb24gKGUpIHtcbiAgcmV0dXJuIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZShlLCBmYWxz
ZSk7XG59O1xuXG52YXIgZ2V0RGljdGlvbmFyeUtleSA9IGZ1bmN0aW9uIChpbnN0KSB7XG4gIC8v
IFByZXZlbnRzIFY4IHBlcmZvcm1hbmNlIGlzc3VlOlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20v
ZmFjZWJvb2svcmVhY3QvcHVsbC83MjMyXG4gIHJldHVybiAnLicgKyBpbnN0Ll9yb290Tm9kZUlE
O1xufTtcblxuZnVuY3Rpb24gaXNJbnRlcmFjdGl2ZSh0YWcpIHtcbiAgcmV0dXJuIHRhZyA9PT0g
J2J1dHRvbicgfHwgdGFnID09PSAnaW5wdXQnIHx8IHRhZyA9PT0gJ3NlbGVjdCcgfHwgdGFnID09
PSAndGV4dGFyZWEnO1xufVxuXG5mdW5jdGlvbiBzaG91bGRQcmV2ZW50TW91c2VFdmVudChuYW1l
LCB0eXBlLCBwcm9wcykge1xuICBzd2l0Y2ggKG5hbWUpIHtcbiAgICBjYXNlICdvbkNsaWNrJzpc
biAgICBjYXNlICdvbkNsaWNrQ2FwdHVyZSc6XG4gICAgY2FzZSAnb25Eb3VibGVDbGljayc6XG4g
ICAgY2FzZSAnb25Eb3VibGVDbGlja0NhcHR1cmUnOlxuICAgIGNhc2UgJ29uTW91c2VEb3duJzpc
biAgICBjYXNlICdvbk1vdXNlRG93bkNhcHR1cmUnOlxuICAgIGNhc2UgJ29uTW91c2VNb3ZlJzpc
biAgICBjYXNlICdvbk1vdXNlTW92ZUNhcHR1cmUnOlxuICAgIGNhc2UgJ29uTW91c2VVcCc6XG4g
ICAgY2FzZSAnb25Nb3VzZVVwQ2FwdHVyZSc6XG4gICAgICByZXR1cm4gISEocHJvcHMuZGlzYWJs
ZWQgJiYgaXNJbnRlcmFjdGl2ZSh0eXBlKSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBm
YWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYSB1bmlmaWVkIGludGVyZmFjZSBmb3Ig
ZXZlbnQgcGx1Z2lucyB0byBiZSBpbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQuXG4gKlxuICogRXZl
bnQgcGx1Z2lucyBjYW4gaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4g
KiAgIGBleHRyYWN0RXZlbnRzYCB7ZnVuY3Rpb24oc3RyaW5nLCBET01FdmVudFRhcmdldCwgc3Ry
aW5nLCBvYmplY3QpOiAqfVxuICogICAgIFJlcXVpcmVkLiBXaGVuIGEgdG9wLWxldmVsIGV2ZW50
IGlzIGZpcmVkLCB0aGlzIG1ldGhvZCBpcyBleHBlY3RlZCB0b1xuICogICAgIGV4dHJhY3Qgc3lu
dGhldGljIGV2ZW50cyB0aGF0IHdpbGwgaW4gdHVybiBiZSBxdWV1ZWQgYW5kIGRpc3BhdGNoZWQu
XG4gKlxuICogICBgZXZlbnRUeXBlc2Age29iamVjdH1cbiAqICAgICBPcHRpb25hbCwgcGx1Z2lu
cyB0aGF0IGZpcmUgZXZlbnRzIG11c3QgcHVibGlzaCBhIG1hcHBpbmcgb2YgcmVnaXN0cmF0aW9u
XG4gKiAgICAgbmFtZXMgdGhhdCBhcmUgdXNlZCB0byByZWdpc3RlciBsaXN0ZW5lcnMuIFZhbHVl
cyBvZiB0aGlzIG1hcHBpbmcgbXVzdFxuICogICAgIGJlIG9iamVjdHMgdGhhdCBjb250YWluIGBy
ZWdpc3RyYXRpb25OYW1lYCBvciBgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNgLlxuICpcbiAqICAg
YGV4ZWN1dGVEaXNwYXRjaGAge2Z1bmN0aW9uKG9iamVjdCwgZnVuY3Rpb24sIHN0cmluZyl9XG4g
KiAgICAgT3B0aW9uYWwsIGFsbG93cyBwbHVnaW5zIHRvIG92ZXJyaWRlIGhvdyBhbiBldmVudCBn
ZXRzIGRpc3BhdGNoZWQuIEJ5XG4gKiAgICAgZGVmYXVsdCwgdGhlIGxpc3RlbmVyIGlzIHNpbXBs
eSBpbnZva2VkLlxuICpcbiAqIEVhY2ggcGx1Z2luIHRoYXQgaXMgaW5qZWN0ZWQgaW50byBgRXZl
bnRzUGx1Z2luSHViYCBpcyBpbW1lZGlhdGVseSBvcGVyYWJsZS5cbiAqXG4gKiBAcHVibGljXG4g
Ki9cbnZhciBFdmVudFBsdWdpbkh1YiA9IHtcbiAgLyoqXG4gICAqIE1ldGhvZHMgZm9yIGluamVj
dGluZyBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICBpbmplY3Rpb246IHtcbiAgICAvKipcbiAgICAg
KiBAcGFyYW0ge2FycmF5fSBJbmplY3RlZEV2ZW50UGx1Z2luT3JkZXJcbiAgICAgKiBAcHVibGlj
XG4gICAgICovXG4gICAgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjogRXZlbnRQbHVnaW5SZWdpc3Ry
eS5pbmplY3RFdmVudFBsdWdpbk9yZGVyLFxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtvYmpl
Y3R9IGluamVjdGVkTmFtZXNUb1BsdWdpbnMgTWFwIGZyb20gbmFtZXMgdG8gcGx1Z2luIG1vZHVs
ZXMuXG4gICAgICovXG4gICAgaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOiBFdmVudFBsdWdpblJl
Z2lzdHJ5LmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZVxuICB9LFxuXG4gIC8qKlxuICAgKiBTdG9y
ZXMgYGxpc3RlbmVyYCBhdCBgbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdW2tleV1gLiBJ
cyBpZGVtcG90ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFu
Y2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2YgZXZlbnRzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30g
cmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuXG4gICAq
IEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIFRoZSBjYWxsYmFjayB0byBzdG9yZS5cbiAgICov
XG4gIHB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVu
ZXIpIHtcbiAgICAhKHR5cGVvZiBsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykgPyAgZmFsc2UgPyBp
bnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCAlcyBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLCBp
bnN0ZWFkIGdvdCB0eXBlICVzJywgcmVnaXN0cmF0aW9uTmFtZSwgdHlwZW9mIGxpc3RlbmVyKSA6
IF9wcm9kSW52YXJpYW50KCc5NCcsIHJlZ2lzdHJhdGlvbk5hbWUsIHR5cGVvZiBsaXN0ZW5lcikg
OiB2b2lkIDA7XG5cbiAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTtcbiAgICB2
YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFt
ZV0gfHwgKGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXSA9IHt9KTtcbiAgICBiYW5rRm9y
UmVnaXN0cmF0aW9uTmFtZVtrZXldID0gbGlzdGVuZXI7XG5cbiAgICB2YXIgUGx1Z2luTW9kdWxl
ID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRp
b25OYW1lXTtcbiAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS5kaWRQdXRMaXN0
ZW5lcikge1xuICAgICAgUGx1Z2luTW9kdWxlLmRpZFB1dExpc3RlbmVyKGluc3QsIHJlZ2lzdHJh
dGlvbk5hbWUsIGxpc3RlbmVyKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7
b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMu
XG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIg
KGUuZy4gYG9uQ2xpY2tgKS5cbiAgICogQHJldHVybiB7P2Z1bmN0aW9ufSBUaGUgc3RvcmVkIGNh
bGxiYWNrLlxuICAgKi9cbiAgZ2V0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRp
b25OYW1lKSB7XG4gICAgLy8gVE9ETzogc2hvdWxkUHJldmVudE1vdXNlRXZlbnQgaXMgRE9NLXNw
ZWNpZmljIGFuZCBkZWZpbml0ZWx5IHNob3VsZCBub3RcbiAgICAvLyBsaXZlIGhlcmU7IG5lZWRz
IHRvIGJlIG1vdmVkIHRvIGEgYmV0dGVyIHBsYWNlIHNvb25cbiAgICB2YXIgYmFua0ZvclJlZ2lz
dHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAgaWYgKHNo
b3VsZFByZXZlbnRNb3VzZUV2ZW50KHJlZ2lzdHJhdGlvbk5hbWUsIGluc3QuX2N1cnJlbnRFbGVt
ZW50LnR5cGUsIGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzKSkge1xuICAgICAgcmV0dXJuIG51
bGw7XG4gICAgfVxuICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xuICAgIHJl
dHVybiBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSAmJiBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtr
ZXldO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgbGlzdGVuZXIgZnJvbSB0aGUgcmVn
aXN0cmF0aW9uIGJhbmsuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0
YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMuXG4gICAqIEBwYXJhbSB7c3RyaW5n
fSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAg
ICovXG4gIGRlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSkg
e1xuICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlv
bk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYg
UGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcikge1xuICAgICAgUGx1Z2luTW9kdWxlLndp
bGxEZWxldGVMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTtcbiAgICB9XG5cbiAgICB2
YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFt
ZV07XG4gICAgLy8gVE9ETzogVGhpcyBzaG91bGQgbmV2ZXIgYmUgbnVsbCAtLSB3aGVuIGlzIGl0
P1xuICAgIGlmIChiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSkge1xuICAgICAgdmFyIGtleSA9IGdl
dERpY3Rpb25hcnlLZXkoaW5zdCk7XG4gICAgICBkZWxldGUgYmFua0ZvclJlZ2lzdHJhdGlvbk5h
bWVba2V5XTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYWxsIGxpc3RlbmVy
cyBmb3IgdGhlIERPTSBlbGVtZW50IHdpdGggdGhlIHN1cHBsaWVkIElELlxuICAgKlxuICAgKiBA
cGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2Yg
ZXZlbnRzLlxuICAgKi9cbiAgZGVsZXRlQWxsTGlzdGVuZXJzOiBmdW5jdGlvbiAoaW5zdCkge1xu
ICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xuICAgIGZvciAodmFyIHJlZ2lz
dHJhdGlvbk5hbWUgaW4gbGlzdGVuZXJCYW5rKSB7XG4gICAgICBpZiAoIWxpc3RlbmVyQmFuay5o
YXNPd25Qcm9wZXJ0eShyZWdpc3RyYXRpb25OYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAg
ICAgIH1cblxuICAgICAgaWYgKCFsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1ba2V5XSkg
e1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIFBsdWdpbk1vZHVsZSA9
IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9u
TmFtZV07XG4gICAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRl
TGlzdGVuZXIpIHtcbiAgICAgICAgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcihpbnN0
LCByZWdpc3RyYXRpb25OYW1lKTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGxpc3RlbmVyQmFu
a1tyZWdpc3RyYXRpb25OYW1lXVtrZXldO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQWxs
b3dzIHJlZ2lzdGVyZWQgcGx1Z2lucyBhbiBvcHBvcnR1bml0eSB0byBleHRyYWN0IGV2ZW50cyBm
cm9tIHRvcC1sZXZlbFxuICAgKiBuYXRpdmUgYnJvd3NlciBldmVudHMuXG4gICAqXG4gICAqIEBy
ZXR1cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLlxuICAgKiBAaW50
ZXJuYWxcbiAgICovXG4gIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRh
cmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICAgIHZhciBldmVu
dHM7XG4gICAgdmFyIHBsdWdpbnMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnM7XG4gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBwbHVnaW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBOb3Qg
ZXZlcnkgcGx1Z2luIGluIHRoZSBvcmRlcmluZyBtYXkgYmUgbG9hZGVkIGF0IHJ1bnRpbWUuXG4g
ICAgICB2YXIgcG9zc2libGVQbHVnaW4gPSBwbHVnaW5zW2ldO1xuICAgICAgaWYgKHBvc3NpYmxl
UGx1Z2luKSB7XG4gICAgICAgIHZhciBleHRyYWN0ZWRFdmVudHMgPSBwb3NzaWJsZVBsdWdpbi5l
eHRyYWN0RXZlbnRzKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KTtcbiAgICAgICAgaWYgKGV4dHJhY3RlZEV2ZW50cykge1xuICAgICAgICAg
IGV2ZW50cyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50cywgZXh0cmFjdGVkRXZlbnRzKTtcbiAgICAg
ICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9LFxuXG4gIC8qKlxu
ICAgKiBFbnF1ZXVlcyBhIHN5bnRoZXRpYyBldmVudCB0aGF0IHNob3VsZCBiZSBkaXNwYXRjaGVk
IHdoZW5cbiAgICogYHByb2Nlc3NFdmVudFF1ZXVlYCBpcyBpbnZva2VkLlxuICAgKlxuICAgKiBA
cGFyYW0geyp9IGV2ZW50cyBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhldGljIGV2ZW50cy5cbiAg
ICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlRXZlbnRzOiBmdW5jdGlvbiAoZXZlbnRzKSB7
XG4gICAgaWYgKGV2ZW50cykge1xuICAgICAgZXZlbnRRdWV1ZSA9IGFjY3VtdWxhdGVJbnRvKGV2
ZW50UXVldWUsIGV2ZW50cyk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaGVz
IGFsbCBzeW50aGV0aWMgZXZlbnRzIG9uIHRoZSBldmVudCBxdWV1ZS5cbiAgICpcbiAgICogQGlu
dGVybmFsXG4gICAqL1xuICBwcm9jZXNzRXZlbnRRdWV1ZTogZnVuY3Rpb24gKHNpbXVsYXRlZCkg
e1xuICAgIC8vIFNldCBgZXZlbnRRdWV1ZWAgdG8gbnVsbCBiZWZvcmUgcHJvY2Vzc2luZyBpdCBz
byB0aGF0IHdlIGNhbiB0ZWxsIGlmIG1vcmVcbiAgICAvLyBldmVudHMgZ2V0IGVucXVldWVkIHdo
aWxlIHByb2Nlc3NpbmcuXG4gICAgdmFyIHByb2Nlc3NpbmdFdmVudFF1ZXVlID0gZXZlbnRRdWV1
ZTtcbiAgICBldmVudFF1ZXVlID0gbnVsbDtcbiAgICBpZiAoc2ltdWxhdGVkKSB7XG4gICAgICBm
b3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2ZW50UXVldWUsIGV4ZWN1dGVEaXNwYXRjaGVz
QW5kUmVsZWFzZVNpbXVsYXRlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvckVhY2hBY2N1bXVs
YXRlZChwcm9jZXNzaW5nRXZlbnRRdWV1ZSwgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9w
TGV2ZWwpO1xuICAgIH1cbiAgICAhIWV2ZW50UXVldWUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFs
c2UsICdwcm9jZXNzRXZlbnRRdWV1ZSgpOiBBZGRpdGlvbmFsIGV2ZW50cyB3ZXJlIGVucXVldWVk
IHdoaWxlIHByb2Nlc3NpbmcgYW4gZXZlbnQgcXVldWUuIFN1cHBvcnQgZm9yIHRoaXMgaGFzIG5v
dCB5ZXQgYmVlbiBpbXBsZW1lbnRlZC4nKSA6IF9wcm9kSW52YXJpYW50KCc5NScpIDogdm9pZCAw
O1xuICAgIC8vIFRoaXMgd291bGQgYmUgYSBnb29kIHRpbWUgdG8gcmV0aHJvdyBpZiBhbnkgb2Yg
dGhlIGV2ZW50IGhhbmRsZXJzIHRocmV3LlxuICAgIFJlYWN0RXJyb3JVdGlscy5yZXRocm93Q2F1
Z2h0RXJyb3IoKTtcbiAgfSxcblxuICAvKipcbiAgICogVGhlc2UgYXJlIG5lZWRlZCBmb3IgdGVz
dHMgb25seS4gRG8gbm90IHVzZSFcbiAgICovXG4gIF9fcHVyZ2U6IGZ1bmN0aW9uICgpIHtcbiAg
ICBsaXN0ZW5lckJhbmsgPSB7fTtcbiAgfSxcblxuICBfX2dldExpc3RlbmVyQmFuazogZnVuY3Rp
b24gKCkge1xuICAgIHJldHVybiBsaXN0ZW5lckJhbms7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBv
cnRzID0gRXZlbnRQbHVnaW5IdWI7XG5cbi8qKiovIH0pLFxuLyogMjEgKi9cbi8qKiovIChmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3Ry
aWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBTeW50aGV0
aWNFdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXG52YXIgZ2V0RXZlbnRUYXJnZXQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIFVJRXZlbnRc
biAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52
YXIgVUlFdmVudEludGVyZmFjZSA9IHtcbiAgdmlldzogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAg
aWYgKGV2ZW50LnZpZXcpIHtcbiAgICAgIHJldHVybiBldmVudC52aWV3O1xuICAgIH1cblxuICAg
IHZhciB0YXJnZXQgPSBnZXRFdmVudFRhcmdldChldmVudCk7XG4gICAgaWYgKHRhcmdldC53aW5k
b3cgPT09IHRhcmdldCkge1xuICAgICAgLy8gdGFyZ2V0IGlzIGEgd2luZG93IG9iamVjdFxuICAg
ICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICB2YXIgZG9jID0gdGFyZ2V0Lm93bmVyRG9j
dW1lbnQ7XG4gICAgLy8gVE9ETzogRmlndXJlIG91dCB3aHkgYG93bmVyRG9jdW1lbnRgIGlzIHNv
bWV0aW1lcyB1bmRlZmluZWQgaW4gSUU4LlxuICAgIGlmIChkb2MpIHtcbiAgICAgIHJldHVybiBk
b2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdpbmRvdztcbiAgICB9IGVsc2Uge1xuICAgICAg
cmV0dXJuIHdpbmRvdztcbiAgICB9XG4gIH0sXG4gIGRldGFpbDogZnVuY3Rpb24gKGV2ZW50KSB7
XG4gICAgcmV0dXJuIGV2ZW50LmRldGFpbCB8fCAwO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJh
bSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2gg
dGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRl
bnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVu
dCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNFdmVudH1cbiAq
L1xuZnVuY3Rpb24gU3ludGhldGljVUlFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJr
ZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3ludGhldGlj
RXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2
ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFz
cyhTeW50aGV0aWNVSUV2ZW50LCBVSUV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMg
PSBTeW50aGV0aWNVSUV2ZW50O1xuXG4vKioqLyB9KSxcbi8qIDIyICovXG4vKioqLyAoZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmlj
dFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG4vKipcbiAqIGBSZWFj
dEluc3RhbmNlTWFwYCBtYWludGFpbnMgYSBtYXBwaW5nIGZyb20gYSBwdWJsaWMgZmFjaW5nIHN0
YXRlZnVsXG4gKiBpbnN0YW5jZSAoa2V5KSBhbmQgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9u
ICh2YWx1ZSkuIFRoaXMgYWxsb3dzIHB1YmxpY1xuICogbWV0aG9kcyB0byBhY2NlcHQgdGhlIHVz
ZXIgZmFjaW5nIGluc3RhbmNlIGFzIGFuIGFyZ3VtZW50IGFuZCBtYXAgdGhlbSBiYWNrXG4gKiB0
byBpbnRlcm5hbCBtZXRob2RzLlxuICovXG5cbi8vIFRPRE86IFJlcGxhY2UgdGhpcyB3aXRoIEVT
NjogdmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBuZXcgTWFwKCk7XG5cbnZhciBSZWFjdEluc3RhbmNl
TWFwID0ge1xuICAvKipcbiAgICogVGhpcyBBUEkgc2hvdWxkIGJlIGNhbGxlZCBgZGVsZXRlYCBi
dXQgd2UnZCBoYXZlIHRvIG1ha2Ugc3VyZSB0byBhbHdheXNcbiAgICogdHJhbnNmb3JtIHRoZXNl
IHRvIHN0cmluZ3MgZm9yIElFIHN1cHBvcnQuIFdoZW4gdGhpcyB0cmFuc2Zvcm0gaXMgZnVsbHlc
biAgICogc3VwcG9ydGVkIHdlIGNhbiByZW5hbWUgaXQuXG4gICAqL1xuICByZW1vdmU6IGZ1bmN0
aW9uIChrZXkpIHtcbiAgICBrZXkuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSA9IHVuZGVmaW5lZDtc
biAgfSxcblxuICBnZXQ6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4ga2V5Ll9yZWFjdElu
dGVybmFsSW5zdGFuY2U7XG4gIH0sXG5cbiAgaGFzOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0
dXJuIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlICE9PSB1bmRlZmluZWQ7XG4gIH0sXG5cbiAg
c2V0OiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgIGtleS5fcmVhY3RJbnRlcm5hbEluc3Rh
bmNlID0gdmFsdWU7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RJbnN0YW5jZU1h
cDtcblxuLyoqKi8gfSksXG4vKiAyMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29w
eXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBlbXB0eU9iamVjdCA9IHt9O1xuXG5p
ZiAoZmFsc2UpIHtcbiAgT2JqZWN0LmZyZWV6ZShlbXB0eU9iamVjdCk7XG59XG5cbm1vZHVsZS5l
eHBvcnRzID0gZW1wdHlPYmplY3Q7XG5cbi8qKiovIH0pLFxuLyogMjQgKi9cbi8qKiovIChmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3Ry
aWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG5cblxudmFyIF9w
cm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxudmFyIGludmFyaWFudCA9
IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbnZhciBPQlNFUlZFRF9FUlJPUiA9IHt9O1xuXG4v
KipcbiAqIGBUcmFuc2FjdGlvbmAgY3JlYXRlcyBhIGJsYWNrIGJveCB0aGF0IGlzIGFibGUgdG8g
d3JhcCBhbnkgbWV0aG9kIHN1Y2ggdGhhdFxuICogY2VydGFpbiBpbnZhcmlhbnRzIGFyZSBtYWlu
dGFpbmVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG1ldGhvZCBpcyBpbnZva2VkXG4gKiAoRXZlbiBp
ZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIHdoaWxlIGludm9raW5nIHRoZSB3cmFwcGVkIG1ldGhv
ZCkuIFdob2V2ZXJcbiAqIGluc3RhbnRpYXRlcyBhIHRyYW5zYWN0aW9uIGNhbiBwcm92aWRlIGVu
Zm9yY2VycyBvZiB0aGUgaW52YXJpYW50cyBhdFxuICogY3JlYXRpb24gdGltZS4gVGhlIGBUcmFu
c2FjdGlvbmAgY2xhc3MgaXRzZWxmIHdpbGwgc3VwcGx5IG9uZSBhZGRpdGlvbmFsXG4gKiBhdXRv
bWF0aWMgaW52YXJpYW50IGZvciB5b3UgLSB0aGUgaW52YXJpYW50IHRoYXQgYW55IHRyYW5zYWN0
aW9uIGluc3RhbmNlXG4gKiBzaG91bGQgbm90IGJlIHJ1biB3aGlsZSBpdCBpcyBhbHJlYWR5IGJl
aW5nIHJ1bi4gWW91IHdvdWxkIHR5cGljYWxseSBjcmVhdGUgYVxuICogc2luZ2xlIGluc3RhbmNl
IG9mIGEgYFRyYW5zYWN0aW9uYCBmb3IgcmV1c2UgbXVsdGlwbGUgdGltZXMsIHRoYXQgcG90ZW50
aWFsbHlcbiAqIGlzIHVzZWQgdG8gd3JhcCBzZXZlcmFsIGRpZmZlcmVudCBtZXRob2RzLiBXcmFw
cGVycyBhcmUgZXh0cmVtZWx5IHNpbXBsZSAtXG4gKiB0aGV5IG9ubHkgcmVxdWlyZSBpbXBsZW1l
bnRpbmcgdHdvIG1ldGhvZHMuXG4gKlxuICogPHByZT5cbiAqICAgICAgICAgICAgICAgICAgICAg
ICB3cmFwcGVycyAoaW5qZWN0ZWQgYXQgY3JlYXRpb24gdGltZSlcbiAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICArICAgICAgICArXG4gKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICAgICAgfFxuICogICAgICAgICAgICAgICAgICAgICstLS0t
LS0tLS0tLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLStcbiAqICAgICAgICAgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgICB2ICAgICAgICB8ICAgICAgICAgICAgICB8XG4gKiAgICAg
ICAgICAgICAgICAgICAgfCAgICAgICstLS0tLS0tLS0tLS0tLS0rICAgfCAgICAgICAgICAgICAg
fFxuICogICAgICAgICAgICAgICAgICAgIHwgICArLS18ICAgIHdyYXBwZXIxICAgfC0tLXwtLS0t
KyAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgKy0tLS0tLS0tLS0tLS0t
LSsgICB2ICAgIHwgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAg
ICAgKy0tLS0tLS0tLS0tLS0rICB8ICAgICAgICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwg
ICB8ICAgICArLS0tLXwgICB3cmFwcGVyMiAgfC0tLS0tLS0tKyAgIHxcbiAqICAgICAgICAgICAg
ICAgICAgICB8ICAgfCAgICAgfCAgICArLS0tLS0tLS0tLS0tLSsgIHwgICAgIHwgICB8XG4gKiAg
ICAgICAgICAgICAgICAgICAgfCAgIHwgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICB8
ICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICB2ICAgICB2ICAgICAgICAgICAgICAgICAg
ICAgdiAgICAgdiAgIHwgd3JhcHBlclxuICogICAgICAgICAgICAgICAgICAgIHwgKy0tLSsgKy0t
LSsgICArLS0tLS0tLS0tKyAgICstLS0rICstLS0rIHwgaW52YXJpYW50c1xuICogcGVyZm9ybShh
bnlNZXRob2QpIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHwgbWFp
bnRhaW5lZFxuICogKy0tLS0tLS0tLS0tLS0tLS0tPnwtfC0tLXwtfC0tLXwtLT58YW55TWV0aG9k
fC0tLXwtLS18LXwtLS18LXwtLS0tLS0tLT5cbiAqICAgICAgICAgICAgICAgICAgICB8IHwgICB8
IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8XG4gKiAgICAgICAgICAgICAgICAg
ICAgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfFxuICogICAgICAg
ICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHxc
biAqICAgICAgICAgICAgICAgICAgICB8ICstLS0rICstLS0rICAgKy0tLS0tLS0tLSsgICArLS0t
KyArLS0tKyB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgaW5pdGlhbGl6ZSAgICAgICAgICAg
ICAgICAgICAgY2xvc2UgICAgfFxuICogICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAqIDwvcHJlPlxuICpcbiAqIFVzZSBjYXNl
czpcbiAqIC0gUHJlc2VydmluZyB0aGUgaW5wdXQgc2VsZWN0aW9uIHJhbmdlcyBiZWZvcmUvYWZ0
ZXIgcmVjb25jaWxpYXRpb24uXG4gKiAgIFJlc3RvcmluZyBzZWxlY3Rpb24gZXZlbiBpbiB0aGUg
ZXZlbnQgb2YgYW4gdW5leHBlY3RlZCBlcnJvci5cbiAqIC0gRGVhY3RpdmF0aW5nIGV2ZW50cyB3
aGlsZSByZWFycmFuZ2luZyB0aGUgRE9NLCBwcmV2ZW50aW5nIGJsdXJzL2ZvY3VzZXMsXG4gKiAg
IHdoaWxlIGd1YXJhbnRlZWluZyB0aGF0IGFmdGVyd2FyZHMsIHRoZSBldmVudCBzeXN0ZW0gaXMg
cmVhY3RpdmF0ZWQuXG4gKiAtIEZsdXNoaW5nIGEgcXVldWUgb2YgY29sbGVjdGVkIERPTSBtdXRh
dGlvbnMgdG8gdGhlIG1haW4gVUkgdGhyZWFkIGFmdGVyIGFcbiAqICAgcmVjb25jaWxpYXRpb24g
dGFrZXMgcGxhY2UgaW4gYSB3b3JrZXIgdGhyZWFkLlxuICogLSBJbnZva2luZyBhbnkgY29sbGVj
dGVkIGBjb21wb25lbnREaWRVcGRhdGVgIGNhbGxiYWNrcyBhZnRlciByZW5kZXJpbmcgbmV3XG4g
KiAgIGNvbnRlbnQuXG4gKiAtIChGdXR1cmUgdXNlIGNhc2UpOiBXcmFwcGluZyBwYXJ0aWN1bGFy
IGZsdXNoZXMgb2YgdGhlIGBSZWFjdFdvcmtlcmAgcXVldWVcbiAqICAgdG8gcHJlc2VydmUgdGhl
IGBzY3JvbGxUb3BgIChhbiBhdXRvbWF0aWMgc2Nyb2xsIGF3YXJlIERPTSkuXG4gKiAtIChGdXR1
cmUgdXNlIGNhc2UpOiBMYXlvdXQgY2FsY3VsYXRpb25zIGJlZm9yZSBhbmQgYWZ0ZXIgRE9NIHVw
ZGF0ZXMuXG4gKlxuICogVHJhbnNhY3Rpb25hbCBwbHVnaW4gQVBJOlxuICogLSBBIG1vZHVsZSB0
aGF0IGhhcyBhbiBgaW5pdGlhbGl6ZWAgbWV0aG9kIHRoYXQgcmV0dXJucyBhbnkgcHJlY29tcHV0
YXRpb24uXG4gKiAtIGFuZCBhIGBjbG9zZWAgbWV0aG9kIHRoYXQgYWNjZXB0cyB0aGUgcHJlY29t
cHV0YXRpb24uIGBjbG9zZWAgaXMgaW52b2tlZFxuICogICB3aGVuIHRoZSB3cmFwcGVkIHByb2Nl
c3MgaXMgY29tcGxldGVkLCBvciBoYXMgZmFpbGVkLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8VHJh
bnNhY3Rpb25hbFdyYXBwZXI+fSB0cmFuc2FjdGlvbldyYXBwZXIgV3JhcHBlciBtb2R1bGVzXG4g
KiB0aGF0IGltcGxlbWVudCBgaW5pdGlhbGl6ZWAgYW5kIGBjbG9zZWAuXG4gKiBAcmV0dXJuIHtU
cmFuc2FjdGlvbn0gU2luZ2xlIHRyYW5zYWN0aW9uIGZvciByZXVzZSBpbiB0aHJlYWQuXG4gKlxu
ICogQGNsYXNzIFRyYW5zYWN0aW9uXG4gKi9cbnZhciBUcmFuc2FjdGlvbkltcGwgPSB7XG4gIC8q
KlxuICAgKiBTZXRzIHVwIHRoaXMgaW5zdGFuY2Ugc28gdGhhdCBpdCBpcyBwcmVwYXJlZCBmb3Ig
Y29sbGVjdGluZyBtZXRyaWNzLiBEb2VzXG4gICAqIHNvIHN1Y2ggdGhhdCB0aGlzIHNldHVwIG1l
dGhvZCBtYXkgYmUgdXNlZCBvbiBhbiBpbnN0YW5jZSB0aGF0IGlzIGFscmVhZHlcbiAgICogaW5p
dGlhbGl6ZWQsIGluIGEgd2F5IHRoYXQgZG9lcyBub3QgY29uc3VtZSBhZGRpdGlvbmFsIG1lbW9y
eSB1cG9uIHJldXNlLlxuICAgKiBUaGF0IGNhbiBiZSB1c2VmdWwgaWYgeW91IGRlY2lkZSB0byBt
YWtlIHlvdXIgc3ViY2xhc3Mgb2YgdGhpcyBtaXhpbiBhXG4gICAqIFwiUG9vbGVkQ2xhc3NcIi5c
biAgICovXG4gIHJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhp
cy50cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy5nZXRUcmFuc2FjdGlvbldyYXBwZXJzKCk7XG4g
ICAgaWYgKHRoaXMud3JhcHBlckluaXREYXRhKSB7XG4gICAgICB0aGlzLndyYXBwZXJJbml0RGF0
YS5sZW5ndGggPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndyYXBwZXJJbml0RGF0YSA9
IFtdO1xuICAgIH1cbiAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSBmYWxzZTtcbiAgfSxcblxu
ICBfaXNJblRyYW5zYWN0aW9uOiBmYWxzZSxcblxuICAvKipcbiAgICogQGFic3RyYWN0XG4gICAq
IEByZXR1cm4ge0FycmF5PFRyYW5zYWN0aW9uV3JhcHBlcj59IEFycmF5IG9mIHRyYW5zYWN0aW9u
IHdyYXBwZXJzLlxuICAgKi9cbiAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogbnVsbCxcblxuICBp
c0luVHJhbnNhY3Rpb246IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gISF0aGlzLl9pc0luVHJh
bnNhY3Rpb247XG4gIH0sXG5cbiAgLyogZXNsaW50LWRpc2FibGUgc3BhY2UtYmVmb3JlLWZ1bmN0
aW9uLXBhcmVuICovXG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBmdW5jdGlvbiB3aXRoaW4g
YSBzYWZldHkgd2luZG93LiBVc2UgdGhpcyBmb3IgdGhlIHRvcCBsZXZlbFxuICAgKiBtZXRob2Rz
IHRoYXQgcmVzdWx0IGluIGxhcmdlIGFtb3VudHMgb2YgY29tcHV0YXRpb24vbXV0YXRpb25zIHRo
YXQgd291bGRcbiAgICogbmVlZCB0byBiZSBzYWZldHkgY2hlY2tlZC4gVGhlIG9wdGlvbmFsIGFy
Z3VtZW50cyBoZWxwcyBwcmV2ZW50IHRoZSBuZWVkXG4gICAqIHRvIGJpbmQgaW4gbWFueSBjYXNl
cy5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kIE1lbWJlciBvZiBzY29wZSB0
byBjYWxsLlxuICAgKiBAcGFyYW0ge09iamVjdH0gc2NvcGUgU2NvcGUgdG8gaW52b2tlIGZyb20u
XG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGEgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9k
LlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBiIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhv
ZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gYyBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRo
b2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGQgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0
aG9kLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBlIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1l
dGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gZiBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBt
ZXRob2QuXG4gICAqXG4gICAqIEByZXR1cm4geyp9IFJldHVybiB2YWx1ZSBmcm9tIGBtZXRob2Rg
LlxuICAgKi9cbiAgcGVyZm9ybTogZnVuY3Rpb24gKG1ldGhvZCwgc2NvcGUsIGEsIGIsIGMsIGQs
IGUsIGYpIHtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJl
biAqL1xuICAgICEhdGhpcy5pc0luVHJhbnNhY3Rpb24oKSA/ICBmYWxzZSA/IGludmFyaWFudChm
YWxzZSwgJ1RyYW5zYWN0aW9uLnBlcmZvcm0oLi4uKTogQ2Fubm90IGluaXRpYWxpemUgYSB0cmFu
c2FjdGlvbiB3aGVuIHRoZXJlIGlzIGFscmVhZHkgYW4gb3V0c3RhbmRpbmcgdHJhbnNhY3Rpb24u
JykgOiBfcHJvZEludmFyaWFudCgnMjcnKSA6IHZvaWQgMDtcbiAgICB2YXIgZXJyb3JUaHJvd247
XG4gICAgdmFyIHJldDtcbiAgICB0cnkge1xuICAgICAgdGhpcy5faXNJblRyYW5zYWN0aW9uID0g
dHJ1ZTtcbiAgICAgIC8vIENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBkaWZm
aWN1bHQsIHNvIHdlIHN0YXJ0IHdpdGhcbiAgICAgIC8vIGVycm9yVGhyb3duIHNldCB0byB0cnVl
IGJlZm9yZSBzZXR0aW5nIGl0IHRvIGZhbHNlIGFmdGVyIGNhbGxpbmdcbiAgICAgIC8vIGNsb3Nl
IC0tIGlmIGl0J3Mgc3RpbGwgc2V0IHRvIHRydWUgaW4gdGhlIGZpbmFsbHkgYmxvY2ssIGl0IG1l
YW5zXG4gICAgICAvLyBvbmUgb2YgdGhlc2UgY2FsbHMgdGhyZXcuXG4gICAgICBlcnJvclRocm93
biA9IHRydWU7XG4gICAgICB0aGlzLmluaXRpYWxpemVBbGwoMCk7XG4gICAgICByZXQgPSBtZXRo
b2QuY2FsbChzY29wZSwgYSwgYiwgYywgZCwgZSwgZik7XG4gICAgICBlcnJvclRocm93biA9IGZh
bHNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoZXJyb3JUaHJv
d24pIHtcbiAgICAgICAgICAvLyBJZiBgbWV0aG9kYCB0aHJvd3MsIHByZWZlciB0byBzaG93IHRo
YXQgc3RhY2sgdHJhY2Ugb3ZlciBhbnkgdGhyb3duXG4gICAgICAgICAgLy8gYnkgaW52b2tpbmcg
YGNsb3NlQWxsYC5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUFsbCgw
KTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAg
ICAgLy8gU2luY2UgYG1ldGhvZGAgZGlkbid0IHRocm93LCB3ZSBkb24ndCB3YW50IHRvIHNpbGVu
Y2UgdGhlIGV4Y2VwdGlvblxuICAgICAgICAgIC8vIGhlcmUuXG4gICAgICAgICAgdGhpcy5jbG9z
ZUFsbCgwKTtcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5faXNJ
blRyYW5zYWN0aW9uID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4g
IH0sXG5cbiAgaW5pdGlhbGl6ZUFsbDogZnVuY3Rpb24gKHN0YXJ0SW5kZXgpIHtcbiAgICB2YXIg
dHJhbnNhY3Rpb25XcmFwcGVycyA9IHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycztcbiAgICBmb3Ig
KHZhciBpID0gc3RhcnRJbmRleDsgaSA8IHRyYW5zYWN0aW9uV3JhcHBlcnMubGVuZ3RoOyBpKysp
IHtcbiAgICAgIHZhciB3cmFwcGVyID0gdHJhbnNhY3Rpb25XcmFwcGVyc1tpXTtcbiAgICAgIHRy
eSB7XG4gICAgICAgIC8vIENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBkaWZm
aWN1bHQsIHNvIHdlIHN0YXJ0IHdpdGggdGhlXG4gICAgICAgIC8vIE9CU0VSVkVEX0VSUk9SIHN0
YXRlIGJlZm9yZSBvdmVyd3JpdGluZyBpdCB3aXRoIHRoZSByZWFsIHJldHVybiB2YWx1ZVxuICAg
ICAgICAvLyBvZiBpbml0aWFsaXplIC0tIGlmIGl0J3Mgc3RpbGwgc2V0IHRvIE9CU0VSVkVEX0VS
Uk9SIGluIHRoZSBmaW5hbGx5XG4gICAgICAgIC8vIGJsb2NrLCBpdCBtZWFucyB3cmFwcGVyLmlu
aXRpYWxpemUgdGhyZXcuXG4gICAgICAgIHRoaXMud3JhcHBlckluaXREYXRhW2ldID0gT0JTRVJW
RURfRVJST1I7XG4gICAgICAgIHRoaXMud3JhcHBlckluaXREYXRhW2ldID0gd3JhcHBlci5pbml0
aWFsaXplID8gd3JhcHBlci5pbml0aWFsaXplLmNhbGwodGhpcykgOiBudWxsO1xuICAgICAgfSBm
aW5hbGx5IHtcbiAgICAgICAgaWYgKHRoaXMud3JhcHBlckluaXREYXRhW2ldID09PSBPQlNFUlZF
RF9FUlJPUikge1xuICAgICAgICAgIC8vIFRoZSBpbml0aWFsaXplciBmb3Igd3JhcHBlciBpIHRo
cmV3IGFuIGVycm9yOyBpbml0aWFsaXplIHRoZVxuICAgICAgICAgIC8vIHJlbWFpbmluZyB3cmFw
cGVycyBidXQgc2lsZW5jZSBhbnkgZXhjZXB0aW9ucyBmcm9tIHRoZW0gdG8gZW5zdXJlXG4gICAg
ICAgICAgLy8gdGhhdCB0aGUgZmlyc3QgZXJyb3IgaXMgdGhlIG9uZSB0byBidWJibGUgdXAuXG4g
ICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUFsbChpICsgMSk7XG4g
ICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9
LFxuXG4gIC8qKlxuICAgKiBJbnZva2VzIGVhY2ggb2YgYHRoaXMudHJhbnNhY3Rpb25XcmFwcGVy
cy5jbG9zZVtpXWAgZnVuY3Rpb25zLCBwYXNzaW5nIGludG9cbiAgICogdGhlbSB0aGUgcmVzcGVj
dGl2ZSByZXR1cm4gdmFsdWVzIG9mIGB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMuaW5pdFtpXWBc
biAgICogKGBjbG9zZWBycyB0aGF0IGNvcnJlc3BvbmQgdG8gaW5pdGlhbGl6ZXJzIHRoYXQgZmFp
bGVkIHdpbGwgbm90IGJlXG4gICAqIGludm9rZWQpLlxuICAgKi9cbiAgY2xvc2VBbGw6IGZ1bmN0
aW9uIChzdGFydEluZGV4KSB7XG4gICAgIXRoaXMuaXNJblRyYW5zYWN0aW9uKCkgPyAgZmFsc2Ug
PyBpbnZhcmlhbnQoZmFsc2UsICdUcmFuc2FjdGlvbi5jbG9zZUFsbCgpOiBDYW5ub3QgY2xvc2Ug
dHJhbnNhY3Rpb24gd2hlbiBub25lIGFyZSBvcGVuLicpIDogX3Byb2RJbnZhcmlhbnQoJzI4Jykg
OiB2b2lkIDA7XG4gICAgdmFyIHRyYW5zYWN0aW9uV3JhcHBlcnMgPSB0aGlzLnRyYW5zYWN0aW9u
V3JhcHBlcnM7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgPCB0cmFuc2FjdGlvbldy
YXBwZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgd3JhcHBlciA9IHRyYW5zYWN0aW9uV3Jh
cHBlcnNbaV07XG4gICAgICB2YXIgaW5pdERhdGEgPSB0aGlzLndyYXBwZXJJbml0RGF0YVtpXTtc
biAgICAgIHZhciBlcnJvclRocm93bjtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIENhdGNoaW5n
IGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBkaWZmaWN1bHQsIHNvIHdlIHN0YXJ0IHdpdGhc
biAgICAgICAgLy8gZXJyb3JUaHJvd24gc2V0IHRvIHRydWUgYmVmb3JlIHNldHRpbmcgaXQgdG8g
ZmFsc2UgYWZ0ZXIgY2FsbGluZ1xuICAgICAgICAvLyBjbG9zZSAtLSBpZiBpdCdzIHN0aWxsIHNl
dCB0byB0cnVlIGluIHRoZSBmaW5hbGx5IGJsb2NrLCBpdCBtZWFuc1xuICAgICAgICAvLyB3cmFw
cGVyLmNsb3NlIHRocmV3LlxuICAgICAgICBlcnJvclRocm93biA9IHRydWU7XG4gICAgICAgIGlm
IChpbml0RGF0YSAhPT0gT0JTRVJWRURfRVJST1IgJiYgd3JhcHBlci5jbG9zZSkge1xuICAgICAg
ICAgIHdyYXBwZXIuY2xvc2UuY2FsbCh0aGlzLCBpbml0RGF0YSk7XG4gICAgICAgIH1cbiAgICAg
ICAgZXJyb3JUaHJvd24gPSBmYWxzZTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChl
cnJvclRocm93bikge1xuICAgICAgICAgIC8vIFRoZSBjbG9zZXIgZm9yIHdyYXBwZXIgaSB0aHJl
dyBhbiBlcnJvcjsgY2xvc2UgdGhlIHJlbWFpbmluZ1xuICAgICAgICAgIC8vIHdyYXBwZXJzIGJ1
dCBzaWxlbmNlIGFueSBleGNlcHRpb25zIGZyb20gdGhlbSB0byBlbnN1cmUgdGhhdCB0aGVcbiAg
ICAgICAgICAvLyBmaXJzdCBlcnJvciBpcyB0aGUgb25lIHRvIGJ1YmJsZSB1cC5cbiAgICAgICAg
ICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUFsbChpICsgMSk7XG4gICAgICAgICAgfSBj
YXRjaCAoZSkge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLndyYXBwZXJJ
bml0RGF0YS5sZW5ndGggPSAwO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zYWN0
aW9uSW1wbDtcblxuLyoqKi8gfSksXG4vKiAyNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxu
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDIxKTtcbnZhciBWaWV3cG9ydE1ldHJpY3MgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDY2KTtcblxudmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IF9fd2VicGFja19y
ZXF1aXJlX18oMzYpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgTW91c2VFdmVudFxuICogQHNlZSBo
dHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBNb3VzZUV2
ZW50SW50ZXJmYWNlID0ge1xuICBzY3JlZW5YOiBudWxsLFxuICBzY3JlZW5ZOiBudWxsLFxuICBj
bGllbnRYOiBudWxsLFxuICBjbGllbnRZOiBudWxsLFxuICBjdHJsS2V5OiBudWxsLFxuICBzaGlm
dEtleTogbnVsbCxcbiAgYWx0S2V5OiBudWxsLFxuICBtZXRhS2V5OiBudWxsLFxuICBnZXRNb2Rp
ZmllclN0YXRlOiBnZXRFdmVudE1vZGlmaWVyU3RhdGUsXG4gIGJ1dHRvbjogZnVuY3Rpb24gKGV2
ZW50KSB7XG4gICAgLy8gV2Via2l0LCBGaXJlZm94LCBJRTkrXG4gICAgLy8gd2hpY2g6ICAxIDIg
M1xuICAgIC8vIGJ1dHRvbjogMCAxIDIgKHN0YW5kYXJkKVxuICAgIHZhciBidXR0b24gPSBldmVu
dC5idXR0b247XG4gICAgaWYgKCd3aGljaCcgaW4gZXZlbnQpIHtcbiAgICAgIHJldHVybiBidXR0
b247XG4gICAgfVxuICAgIC8vIElFPDlcbiAgICAvLyB3aGljaDogIHVuZGVmaW5lZFxuICAgIC8v
IGJ1dHRvbjogMCAwIDBcbiAgICAvLyBidXR0b246IDEgNCAyIChvbm1vdXNldXApXG4gICAgcmV0
dXJuIGJ1dHRvbiA9PT0gMiA/IDIgOiBidXR0b24gPT09IDQgPyAxIDogMDtcbiAgfSxcbiAgYnV0
dG9uczogbnVsbCxcbiAgcmVsYXRlZFRhcmdldDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0
dXJuIGV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgKGV2ZW50LmZyb21FbGVtZW50ID09PSBldmVudC5z
cmNFbGVtZW50ID8gZXZlbnQudG9FbGVtZW50IDogZXZlbnQuZnJvbUVsZW1lbnQpO1xuICB9LFxu
ICAvLyBcIlByb3ByaWV0YXJ5XCIgSW50ZXJmYWNlLlxuICBwYWdlWDogZnVuY3Rpb24gKGV2ZW50
KSB7XG4gICAgcmV0dXJuICdwYWdlWCcgaW4gZXZlbnQgPyBldmVudC5wYWdlWCA6IGV2ZW50LmNs
aWVudFggKyBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbExlZnQ7XG4gIH0sXG4gIHBhZ2VZ
OiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ3BhZ2VZJyBpbiBldmVudCA/IGV2ZW50
LnBhZ2VZIDogZXZlbnQuY2xpZW50WSArIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsVG9w
O1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25m
aWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5n
fSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAq
IEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBl
eHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNNb3VzZUV2
ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2
ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBTeW50aGV0aWNVSUV2ZW50LmNhbGwodGhpcywgZGlzcGF0
Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQp
O1xufVxuXG5TeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNNb3VzZUV2ZW50
LCBNb3VzZUV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNNb3Vz
ZUV2ZW50O1xuXG4vKioqLyB9KSxcbi8qIDI2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4g
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xudmFyIERPTU5hbWVzcGFjZXMgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDM4KTtcblxudmFyIFdISVRFU1BBQ0VfVEVTVCA9IC9eWyBcXHJcXG5cXHRcXGZd
LztcbnZhciBOT05WSVNJQkxFX1RFU1QgPSAvPCghLS18bGlua3xub3NjcmlwdHxtZXRhfHNjcmlw
dHxzdHlsZSlbIFxcclxcblxcdFxcZlxcLz5dLztcblxudmFyIGNyZWF0ZU1pY3Jvc29mdFVuc2Fm
ZUxvY2FsRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KTtcblxuLy8gU1ZHIHRlbXAg
Y29udGFpbmVyIGZvciBJRSBsYWNraW5nIGlubmVySFRNTFxudmFyIHJldXNhYmxlU1ZHQ29udGFp
bmVyO1xuXG4vKipcbiAqIFNldCB0aGUgaW5uZXJIVE1MIHByb3BlcnR5IG9mIGEgbm9kZSwgZW5z
dXJpbmcgdGhhdCB3aGl0ZXNwYWNlIGlzIHByZXNlcnZlZFxuICogZXZlbiBpbiBJRTguXG4gKlxu
ICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gKiBAcGFyYW0ge3N0cmluZ30gaHRtbFxuICog
QGludGVybmFsXG4gKi9cbnZhciBzZXRJbm5lckhUTUwgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVM
b2NhbEZ1bmN0aW9uKGZ1bmN0aW9uIChub2RlLCBodG1sKSB7XG4gIC8vIElFIGRvZXMgbm90IGhh
dmUgaW5uZXJIVE1MIGZvciBTVkcgbm9kZXMsIHNvIGluc3RlYWQgd2UgaW5qZWN0IHRoZVxuICAv
LyBuZXcgbWFya3VwIGluIGEgdGVtcCBub2RlIGFuZCB0aGVuIG1vdmUgdGhlIGNoaWxkIG5vZGVz
IGFjcm9zcyBpbnRvXG4gIC8vIHRoZSB0YXJnZXQgbm9kZVxuICBpZiAobm9kZS5uYW1lc3BhY2VV
UkkgPT09IERPTU5hbWVzcGFjZXMuc3ZnICYmICEoJ2lubmVySFRNTCcgaW4gbm9kZSkpIHtcbiAg
ICByZXVzYWJsZVNWR0NvbnRhaW5lciA9IHJldXNhYmxlU1ZHQ29udGFpbmVyIHx8IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldXNhYmxlU1ZHQ29udGFpbmVyLmlubmVySFRN
TCA9ICc8c3ZnPicgKyBodG1sICsgJzwvc3ZnPic7XG4gICAgdmFyIHN2Z05vZGUgPSByZXVzYWJs
ZVNWR0NvbnRhaW5lci5maXJzdENoaWxkO1xuICAgIHdoaWxlIChzdmdOb2RlLmZpcnN0Q2hpbGQp
IHtcbiAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoc3ZnTm9kZS5maXJzdENoaWxkKTtcbiAgICB9XG4g
IH0gZWxzZSB7XG4gICAgbm9kZS5pbm5lckhUTUwgPSBodG1sO1xuICB9XG59KTtcblxuaWYgKEV4
ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICAvLyBJRTg6IFdoZW4gdXBkYXRpbmcg
YSBqdXN0IGNyZWF0ZWQgbm9kZSB3aXRoIGlubmVySFRNTCBvbmx5IGxlYWRpbmdcbiAgLy8gd2hp
dGVzcGFjZSBpcyByZW1vdmVkLiBXaGVuIHVwZGF0aW5nIGFuIGV4aXN0aW5nIG5vZGUgd2l0aCBp
bm5lckhUTUxcbiAgLy8gd2hpdGVzcGFjZSBpbiByb290IFRleHROb2RlcyBpcyBhbHNvIGNvbGxh
cHNlZC5cbiAgLy8gQHNlZSBxdWlya3Ntb2RlLm9yZy9idWdyZXBvcnRzL2FyY2hpdmVzLzIwMDQv
MTEvaW5uZXJodG1sX2FuZF90Lmh0bWxcblxuICAvLyBGZWF0dXJlIGRldGVjdGlvbjsgb25seSBJ
RTggaXMga25vd24gdG8gYmVoYXZlIGltcHJvcGVybHkgbGlrZSB0aGlzLlxuICB2YXIgdGVzdEVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgdGVzdEVsZW1lbnQuaW5u
ZXJIVE1MID0gJyAnO1xuICBpZiAodGVzdEVsZW1lbnQuaW5uZXJIVE1MID09PSAnJykge1xuICAg
IHNldElubmVySFRNTCA9IGZ1bmN0aW9uIChub2RlLCBodG1sKSB7XG4gICAgICAvLyBNYWdpYyB0
aGVvcnk6IElFOCBzdXBwb3NlZGx5IGRpZmZlcmVudGlhdGVzIGJldHdlZW4gYWRkZWQgYW5kIHVw
ZGF0ZWRcbiAgICAgIC8vIG5vZGVzIHdoZW4gcHJvY2Vzc2luZyBpbm5lckhUTUwsIGlubmVySFRN
TCBvbiB1cGRhdGVkIG5vZGVzIHN1ZmZlcnNcbiAgICAgIC8vIGZyb20gd29yc2Ugd2hpdGVzcGFj
ZSBiZWhhdmlvci4gUmUtYWRkaW5nIGEgbm9kZSBsaWtlIHRoaXMgdHJpZ2dlcnNcbiAgICAgIC8v
IHRoZSBpbml0aWFsIGFuZCBtb3JlIGZhdm9yYWJsZSB3aGl0ZXNwYWNlIGJlaGF2aW9yLlxuICAg
ICAgLy8gVE9ETzogV2hhdCB0byBkbyBvbiBhIGRldGFjaGVkIG5vZGU/XG4gICAgICBpZiAobm9k
ZS5wYXJlbnROb2RlKSB7XG4gICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobm9k
ZSwgbm9kZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdlIGFsc28gaW1wbGVtZW50IGEgd29ya2Fy
b3VuZCBmb3Igbm9uLXZpc2libGUgdGFncyBkaXNhcHBlYXJpbmcgaW50b1xuICAgICAgLy8gdGhp
biBhaXIgb24gSUU4LCB0aGlzIG9ubHkgaGFwcGVucyBpZiB0aGVyZSBpcyBubyB2aXNpYmxlIHRl
eHRcbiAgICAgIC8vIGluLWZyb250IG9mIHRoZSBub24tdmlzaWJsZSB0YWdzLiBQaWdneWJhY2sg
b24gdGhlIHdoaXRlc3BhY2UgZml4XG4gICAgICAvLyBhbmQgc2ltcGx5IGNoZWNrIGlmIGFueSBu
b24tdmlzaWJsZSB0YWdzIGFwcGVhciBpbiB0aGUgc291cmNlLlxuICAgICAgaWYgKFdISVRFU1BB
Q0VfVEVTVC50ZXN0KGh0bWwpIHx8IGh0bWxbMF0gPT09ICc8JyAmJiBOT05WSVNJQkxFX1RFU1Qu
dGVzdChodG1sKSkge1xuICAgICAgICAvLyBSZWNvdmVyIGxlYWRpbmcgd2hpdGVzcGFjZSBieSB0
ZW1wb3JhcmlseSBwcmVwZW5kaW5nIGFueSBjaGFyYWN0ZXIuXG4gICAgICAgIC8vIFxcdUZFRkYg
aGFzIHRoZSBwb3RlbnRpYWwgYWR2YW50YWdlIG9mIGJlaW5nIHplcm8td2lkdGgvaW52aXNpYmxl
LlxuICAgICAgICAvLyBVZ2xpZnlKUyBkcm9wcyBVK0ZFRkYgY2hhcnMgd2hlbiBwYXJzaW5nLCBz
byB1c2UgU3RyaW5nLmZyb21DaGFyQ29kZVxuICAgICAgICAvLyBpbiBob3BlcyB0aGF0IHRoaXMg
aXMgcHJlc2VydmVkIGV2ZW4gaWYgXCJcXHVGRUZGXCIgaXMgdHJhbnNmb3JtZWQgdG9cbiAgICAg
ICAgLy8gdGhlIGFjdHVhbCBVbmljb2RlIGNoYXJhY3RlciAoYnkgQmFiZWwsIGZvciBleGFtcGxl
KS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pc2hvby9VZ2xpZnlKUzIvYmxvYi92
Mi40LjIwL2xpYi9wYXJzZS5qcyNMMjE2XG4gICAgICAgIG5vZGUuaW5uZXJIVE1MID0gU3RyaW5n
LmZyb21DaGFyQ29kZSgweGZlZmYpICsgaHRtbDtcblxuICAgICAgICAvLyBkZWxldGVEYXRhIGxl
YXZlcyBhbiBlbXB0eSBgVGV4dE5vZGVgIHdoaWNoIG9mZnNldHMgdGhlIGluZGV4IG9mIGFsbFxu
ICAgICAgICAvLyBjaGlsZHJlbi4gRGVmaW5pdGVseSB3YW50IHRvIGF2b2lkIHRoaXMuXG4gICAg
ICAgIHZhciB0ZXh0Tm9kZSA9IG5vZGUuZmlyc3RDaGlsZDtcbiAgICAgICAgaWYgKHRleHROb2Rl
LmRhdGEubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgbm9kZS5yZW1vdmVDaGlsZCh0ZXh0Tm9k
ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGV4dE5vZGUuZGVsZXRlRGF0YSgwLCAx
KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBo
dG1sO1xuICAgICAgfVxuICAgIH07XG4gIH1cbiAgdGVzdEVsZW1lbnQgPSBudWxsO1xufVxuXG5t
b2R1bGUuZXhwb3J0cyA9IHNldElubmVySFRNTDtcblxuLyoqKi8gfSksXG4vKiAyNyAqL1xuLyoq
Ki8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
InVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTYtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEJhc2VkIG9uIHRo
ZSBlc2NhcGUtaHRtbCBsaWJyYXJ5LCB3aGljaCBpcyB1c2VkIHVuZGVyIHRoZSBNSVQgTGljZW5z
ZSBiZWxvdzpcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUSiBIb2xvd2F5Y2h1a1xu
ICogQ29weXJpZ2h0IChjKSAyMDE1IEFuZHJlYXMgTHViYmVcbiAqIENvcHlyaWdodCAoYykgMjAx
NSBUaWFuY2hlbmcgXCJUaW1vdGh5XCIgR3VcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn
cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmdcbiAqIGEgY29w
eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo
ZVxuICogJ1NvZnR3YXJlJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp
Y3Rpb24sIGluY2x1ZGluZ1xuICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNl
LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuICogZGlzdHJpYnV0ZSwgc3VibGljZW5z
ZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvXG4gKiBwZXJtaXQg
cGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl
Y3QgdG9cbiAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZVxuICogaW5j
bHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh
cmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICdBUyBJUycsIFdJVEhPVVQgV0FS
UkFOVFkgT0YgQU5ZIEtJTkQsXG4gKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQg
Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0ZcbiAqIE1FUkNIQU5UQUJJTElUWSwgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC5cbiAqIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM
RSBGT1IgQU5ZXG4gKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULFxuICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcg
RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEVcbiAqIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuICpcbiAqL1xuXG5cblxu
Ly8gY29kZSBjb3BpZWQgYW5kIG1vZGlmaWVkIGZyb20gZXNjYXBlLWh0bWxcbi8qKlxuICogTW9k
dWxlIHZhcmlhYmxlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIG1hdGNoSHRtbFJlZ0V4cCA9
IC9bXCInJjw+XS87XG5cbi8qKlxuICogRXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiB0aGUg
Z2l2ZW4gc3RyaW5nIG9mIGh0bWwuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSBzdHJpbmcgVGhl
IHN0cmluZyB0byBlc2NhcGUgZm9yIGluc2VydGluZyBpbnRvIEhUTUxcbiAqIEByZXR1cm4ge3N0
cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBlc2NhcGVIdG1sKHN0cmluZykge1xu
ICB2YXIgc3RyID0gJycgKyBzdHJpbmc7XG4gIHZhciBtYXRjaCA9IG1hdGNoSHRtbFJlZ0V4cC5l
eGVjKHN0cik7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICB2
YXIgZXNjYXBlO1xuICB2YXIgaHRtbCA9ICcnO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGFz
dEluZGV4ID0gMDtcblxuICBmb3IgKGluZGV4ID0gbWF0Y2guaW5kZXg7IGluZGV4IDwgc3RyLmxl
bmd0aDsgaW5kZXgrKykge1xuICAgIHN3aXRjaCAoc3RyLmNoYXJDb2RlQXQoaW5kZXgpKSB7XG4g
ICAgICBjYXNlIDM0OlxuICAgICAgICAvLyBcIlxuICAgICAgICBlc2NhcGUgPSAnJnF1b3Q7Jztc
biAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM4OlxuICAgICAgICAvLyAmXG4gICAgICAgIGVz
Y2FwZSA9ICcmYW1wOyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOTpcbiAgICAgICAg
Ly8gJ1xuICAgICAgICBlc2NhcGUgPSAnJiN4Mjc7JzsgLy8gbW9kaWZpZWQgZnJvbSBlc2NhcGUt
aHRtbDsgdXNlZCB0byBiZSAnJiMzOSdcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDYwOlxu
ICAgICAgICAvLyA8XG4gICAgICAgIGVzY2FwZSA9ICcmbHQ7JztcbiAgICAgICAgYnJlYWs7XG4g
ICAgICBjYXNlIDYyOlxuICAgICAgICAvLyA+XG4gICAgICAgIGVzY2FwZSA9ICcmZ3Q7JztcbiAg
ICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb250aW51ZTtcbiAgICB9XG5c
biAgICBpZiAobGFzdEluZGV4ICE9PSBpbmRleCkge1xuICAgICAgaHRtbCArPSBzdHIuc3Vic3Ry
aW5nKGxhc3RJbmRleCwgaW5kZXgpO1xuICAgIH1cblxuICAgIGxhc3RJbmRleCA9IGluZGV4ICsg
MTtcbiAgICBodG1sICs9IGVzY2FwZTtcbiAgfVxuXG4gIHJldHVybiBsYXN0SW5kZXggIT09IGlu
ZGV4ID8gaHRtbCArIHN0ci5zdWJzdHJpbmcobGFzdEluZGV4LCBpbmRleCkgOiBodG1sO1xufVxu
Ly8gZW5kIGNvZGUgY29waWVkIGFuZCBtb2RpZmllZCBmcm9tIGVzY2FwZS1odG1sXG5cbi8qKlxu
ICogRXNjYXBlcyB0ZXh0IHRvIHByZXZlbnQgc2NyaXB0aW5nIGF0dGFja3MuXG4gKlxuICogQHBh
cmFtIHsqfSB0ZXh0IFRleHQgdmFsdWUgdG8gZXNjYXBlLlxuICogQHJldHVybiB7c3RyaW5nfSBB
biBlc2NhcGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93
c2VyKHRleHQpIHtcbiAgaWYgKHR5cGVvZiB0ZXh0ID09PSAnYm9vbGVhbicgfHwgdHlwZW9mIHRl
eHQgPT09ICdudW1iZXInKSB7XG4gICAgLy8gdGhpcyBzaG9ydGNpcmN1aXQgaGVscHMgcGVyZiBm
b3IgdHlwZXMgdGhhdCB3ZSBrbm93IHdpbGwgbmV2ZXIgaGF2ZVxuICAgIC8vIHNwZWNpYWwgY2hh
cmFjdGVycywgZXNwZWNpYWxseSBnaXZlbiB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBvZnRl
blxuICAgIC8vIGZvciBudW1lcmljIGRvbSBpZHMuXG4gICAgcmV0dXJuICcnICsgdGV4dDtcbiAg
fVxuICByZXR1cm4gZXNjYXBlSHRtbCh0ZXh0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlc2Nh
cGVUZXh0Q29udGVudEZvckJyb3dzZXI7XG5cbi8qKiovIH0pLFxuLyogMjggKi9cbi8qKiovIChm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ug
c3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBfYXNz
aWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxudmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKTtcbnZhciBSZWFjdEV2ZW50RW1pdHRlck1peGluID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxNDgpO1xudmFyIFZpZXdwb3J0TWV0cmljcyA9IF9fd2VicGFj
a19yZXF1aXJlX18oNjYpO1xuXG52YXIgZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDE0OSk7XG52YXIgaXNFdmVudFN1cHBvcnRlZCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMzUpO1xuXG4vKipcbiAqIFN1bW1hcnkgb2YgYFJlYWN0QnJvd3NlckV2ZW50RW1p
dHRlcmAgZXZlbnQgaGFuZGxpbmc6XG4gKlxuICogIC0gVG9wLWxldmVsIGRlbGVnYXRpb24gaXMg
dXNlZCB0byB0cmFwIG1vc3QgbmF0aXZlIGJyb3dzZXIgZXZlbnRzLiBUaGlzXG4gKiAgICBtYXkg
b25seSBvY2N1ciBpbiB0aGUgbWFpbiB0aHJlYWQgYW5kIGlzIHRoZSByZXNwb25zaWJpbGl0eSBv
ZlxuICogICAgUmVhY3RFdmVudExpc3RlbmVyLCB3aGljaCBpcyBpbmplY3RlZCBhbmQgY2FuIHRo
ZXJlZm9yZSBzdXBwb3J0IHBsdWdnYWJsZVxuICogICAgZXZlbnQgc291cmNlcy4gVGhpcyBpcyB0
aGUgb25seSB3b3JrIHRoYXQgb2NjdXJzIGluIHRoZSBtYWluIHRocmVhZC5cbiAqXG4gKiAgLSBX
ZSBub3JtYWxpemUgYW5kIGRlLWR1cGxpY2F0ZSBldmVudHMgdG8gYWNjb3VudCBmb3IgYnJvd3Nl
ciBxdWlya3MuIFRoaXNcbiAqICAgIG1heSBiZSBkb25lIGluIHRoZSB3b3JrZXIgdGhyZWFkLlxu
ICpcbiAqICAtIEZvcndhcmQgdGhlc2UgbmF0aXZlIGV2ZW50cyAod2l0aCB0aGUgYXNzb2NpYXRl
ZCB0b3AtbGV2ZWwgdHlwZSB1c2VkIHRvXG4gKiAgICB0cmFwIGl0KSB0byBgRXZlbnRQbHVnaW5I
dWJgLCB3aGljaCBpbiB0dXJuIHdpbGwgYXNrIHBsdWdpbnMgaWYgdGhleSB3YW50XG4gKiAgICB0
byBleHRyYWN0IGFueSBzeW50aGV0aWMgZXZlbnRzLlxuICpcbiAqICAtIFRoZSBgRXZlbnRQbHVn
aW5IdWJgIHdpbGwgdGhlbiBwcm9jZXNzIGVhY2ggZXZlbnQgYnkgYW5ub3RhdGluZyB0aGVtIHdp
dGhcbiAqICAgIFwiZGlzcGF0Y2hlc1wiLCBhIHNlcXVlbmNlIG9mIGxpc3RlbmVycyBhbmQgSURz
IHRoYXQgY2FyZSBhYm91dCB0aGF0IGV2ZW50LlxuICpcbiAqICAtIFRoZSBgRXZlbnRQbHVnaW5I
dWJgIHRoZW4gZGlzcGF0Y2hlcyB0aGUgZXZlbnRzLlxuICpcbiAqIE92ZXJ2aWV3IG9mIFJlYWN0
IGFuZCB0aGUgZXZlbnQgc3lzdGVtOlxuICpcbiAqICstLS0tLS0tLS0tLS0rICAgIC5cbiAqIHwg
ICAgRE9NICAgICB8ICAgIC5cbiAqICstLS0tLS0tLS0tLS0rICAgIC5cbiAqICAgICAgIHwgICAg
ICAgICAgIC5cbiAqICAgICAgIHYgICAgICAgICAgIC5cbiAqICstLS0tLS0tLS0tLS0rICAgIC5c
biAqIHwgUmVhY3RFdmVudCB8ICAgIC5cbiAqIHwgIExpc3RlbmVyICB8ICAgIC5cbiAqICstLS0t
LS0tLS0tLS0rICAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tK1xuICog
ICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAgICstLS0tLS0tLSt8U2ltcGxlRXZlbnR8
XG4gKiAgICAgICB8ICAgICAgICAgICAuICAgICAgICAgICAgICAgfCAgICAgICAgIHxQbHVnaW4g
ICAgIHxcbiAqICstLS0tLXwtLS0tLS0rICAgIC4gICAgICAgICAgICAgICB2ICAgICAgICAgKy0t
LS0tLS0tLS0tK1xuICogfCAgICAgfCAgICAgIHwgICAgLiAgICArLS0tLS0tLS0tLS0tLS0rICAg
ICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tK1xuICogfCAgICAgKy0tLS0tLS0tLS0tLi0t
LT58RXZlbnRQbHVnaW5IdWJ8ICAgICAgICAgICAgICAgICAgICB8ICAgIEV2ZW50ICAgfFxuICog
fCAgICAgICAgICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0r
ICB8IFByb3BhZ2F0b3JzfFxuICogfCBSZWFjdEV2ZW50IHwgICAgLiAgICB8ICAgICAgICAgICAg
ICB8ICAgICB8VGFwRXZlbnQgICB8ICB8LS0tLS0tLS0tLS0tfFxuICogfCAgRW1pdHRlciAgIHwg
ICAgLiAgICB8ICAgICAgICAgICAgICB8PC0tLSt8UGx1Z2luICAgICB8ICB8b3RoZXIgcGx1Z2lu
fFxuICogfCAgICAgICAgICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0t
LS0tLS0rICB8ICB1dGlsaXRpZXMgfFxuICogfCAgICAgKy0tLS0tLS0tLS0tLi0tLT58ICAgICAg
ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tK1xuICogfCAgICAgfCAg
ICAgIHwgICAgLiAgICArLS0tLS0tLS0tLS0tLS0rXG4gKiArLS0tLS18LS0tLS0tKyAgICAuICAg
ICAgICAgICAgICAgIF4gICAgICAgICstLS0tLS0tLS0tLStcbiAqICAgICAgIHwgICAgICAgICAg
IC4gICAgICAgICAgICAgICAgfCAgICAgICAgfEVudGVyL0xlYXZlfFxuICogICAgICAgKyAgICAg
ICAgICAgLiAgICAgICAgICAgICAgICArLS0tLS0tLSt8UGx1Z2luICAgICB8XG4gKiArLS0tLS0t
LS0tLS0tLSsgICAuICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLStcbiAqIHwg
YXBwbGljYXRpb24gfCAgIC5cbiAqIHwtLS0tLS0tLS0tLS0tfCAgIC5cbiAqIHwgICAgICAgICAg
ICAgfCAgIC5cbiAqIHwgICAgICAgICAgICAgfCAgIC5cbiAqICstLS0tLS0tLS0tLS0tKyAgIC5c
biAqICAgICAgICAgICAgICAgICAgIC5cbiAqICAgIFJlYWN0IENvcmUgICAgIC4gIEdlbmVyYWwg
UHVycG9zZSBFdmVudCBQbHVnaW4gU3lzdGVtXG4gKi9cblxudmFyIGhhc0V2ZW50UGFnZVhZO1xu
dmFyIGFscmVhZHlMaXN0ZW5pbmdUbyA9IHt9O1xudmFyIGlzTW9uaXRvcmluZ1Njcm9sbFZhbHVl
ID0gZmFsc2U7XG52YXIgcmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVyID0gMDtcblxuLy8gRm9yIGV2
ZW50cyBsaWtlICdzdWJtaXQnIHdoaWNoIGRvbid0IGNvbnNpc3RlbnRseSBidWJibGUgKHdoaWNo
IHdlIHRyYXAgYXQgYVxuLy8gbG93ZXIgbm9kZSB0aGFuIGBkb2N1bWVudGApLCBiaW5kaW5nIGF0
IGBkb2N1bWVudGAgd291bGQgY2F1c2UgZHVwbGljYXRlXG4vLyBldmVudHMgc28gd2UgZG9uJ3Qg
aW5jbHVkZSB0aGVtIGhlcmVcbnZhciB0b3BFdmVudE1hcHBpbmcgPSB7XG4gIHRvcEFib3J0OiAn
YWJvcnQnLFxuICB0b3BBbmltYXRpb25FbmQ6IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCdh
bmltYXRpb25lbmQnKSB8fCAnYW5pbWF0aW9uZW5kJyxcbiAgdG9wQW5pbWF0aW9uSXRlcmF0aW9u
OiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uaXRlcmF0aW9uJykgfHwgJ2Fu
aW1hdGlvbml0ZXJhdGlvbicsXG4gIHRvcEFuaW1hdGlvblN0YXJ0OiBnZXRWZW5kb3JQcmVmaXhl
ZEV2ZW50TmFtZSgnYW5pbWF0aW9uc3RhcnQnKSB8fCAnYW5pbWF0aW9uc3RhcnQnLFxuICB0b3BC
bHVyOiAnYmx1cicsXG4gIHRvcENhblBsYXk6ICdjYW5wbGF5JyxcbiAgdG9wQ2FuUGxheVRocm91
Z2g6ICdjYW5wbGF5dGhyb3VnaCcsXG4gIHRvcENoYW5nZTogJ2NoYW5nZScsXG4gIHRvcENsaWNr
OiAnY2xpY2snLFxuICB0b3BDb21wb3NpdGlvbkVuZDogJ2NvbXBvc2l0aW9uZW5kJyxcbiAgdG9w
Q29tcG9zaXRpb25TdGFydDogJ2NvbXBvc2l0aW9uc3RhcnQnLFxuICB0b3BDb21wb3NpdGlvblVw
ZGF0ZTogJ2NvbXBvc2l0aW9udXBkYXRlJyxcbiAgdG9wQ29udGV4dE1lbnU6ICdjb250ZXh0bWVu
dScsXG4gIHRvcENvcHk6ICdjb3B5JyxcbiAgdG9wQ3V0OiAnY3V0JyxcbiAgdG9wRG91YmxlQ2xp
Y2s6ICdkYmxjbGljaycsXG4gIHRvcERyYWc6ICdkcmFnJyxcbiAgdG9wRHJhZ0VuZDogJ2RyYWdl
bmQnLFxuICB0b3BEcmFnRW50ZXI6ICdkcmFnZW50ZXInLFxuICB0b3BEcmFnRXhpdDogJ2RyYWdl
eGl0JyxcbiAgdG9wRHJhZ0xlYXZlOiAnZHJhZ2xlYXZlJyxcbiAgdG9wRHJhZ092ZXI6ICdkcmFn
b3ZlcicsXG4gIHRvcERyYWdTdGFydDogJ2RyYWdzdGFydCcsXG4gIHRvcERyb3A6ICdkcm9wJyxc
biAgdG9wRHVyYXRpb25DaGFuZ2U6ICdkdXJhdGlvbmNoYW5nZScsXG4gIHRvcEVtcHRpZWQ6ICdl
bXB0aWVkJyxcbiAgdG9wRW5jcnlwdGVkOiAnZW5jcnlwdGVkJyxcbiAgdG9wRW5kZWQ6ICdlbmRl
ZCcsXG4gIHRvcEVycm9yOiAnZXJyb3InLFxuICB0b3BGb2N1czogJ2ZvY3VzJyxcbiAgdG9wSW5w
dXQ6ICdpbnB1dCcsXG4gIHRvcEtleURvd246ICdrZXlkb3duJyxcbiAgdG9wS2V5UHJlc3M6ICdr
ZXlwcmVzcycsXG4gIHRvcEtleVVwOiAna2V5dXAnLFxuICB0b3BMb2FkZWREYXRhOiAnbG9hZGVk
ZGF0YScsXG4gIHRvcExvYWRlZE1ldGFkYXRhOiAnbG9hZGVkbWV0YWRhdGEnLFxuICB0b3BMb2Fk
U3RhcnQ6ICdsb2Fkc3RhcnQnLFxuICB0b3BNb3VzZURvd246ICdtb3VzZWRvd24nLFxuICB0b3BN
b3VzZU1vdmU6ICdtb3VzZW1vdmUnLFxuICB0b3BNb3VzZU91dDogJ21vdXNlb3V0JyxcbiAgdG9w
TW91c2VPdmVyOiAnbW91c2VvdmVyJyxcbiAgdG9wTW91c2VVcDogJ21vdXNldXAnLFxuICB0b3BQ
YXN0ZTogJ3Bhc3RlJyxcbiAgdG9wUGF1c2U6ICdwYXVzZScsXG4gIHRvcFBsYXk6ICdwbGF5Jyxc
biAgdG9wUGxheWluZzogJ3BsYXlpbmcnLFxuICB0b3BQcm9ncmVzczogJ3Byb2dyZXNzJyxcbiAg
dG9wUmF0ZUNoYW5nZTogJ3JhdGVjaGFuZ2UnLFxuICB0b3BTY3JvbGw6ICdzY3JvbGwnLFxuICB0
b3BTZWVrZWQ6ICdzZWVrZWQnLFxuICB0b3BTZWVraW5nOiAnc2Vla2luZycsXG4gIHRvcFNlbGVj
dGlvbkNoYW5nZTogJ3NlbGVjdGlvbmNoYW5nZScsXG4gIHRvcFN0YWxsZWQ6ICdzdGFsbGVkJyxc
biAgdG9wU3VzcGVuZDogJ3N1c3BlbmQnLFxuICB0b3BUZXh0SW5wdXQ6ICd0ZXh0SW5wdXQnLFxu
ICB0b3BUaW1lVXBkYXRlOiAndGltZXVwZGF0ZScsXG4gIHRvcFRvdWNoQ2FuY2VsOiAndG91Y2hj
YW5jZWwnLFxuICB0b3BUb3VjaEVuZDogJ3RvdWNoZW5kJyxcbiAgdG9wVG91Y2hNb3ZlOiAndG91
Y2htb3ZlJyxcbiAgdG9wVG91Y2hTdGFydDogJ3RvdWNoc3RhcnQnLFxuICB0b3BUcmFuc2l0aW9u
RW5kOiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgndHJhbnNpdGlvbmVuZCcpIHx8ICd0cmFu
c2l0aW9uZW5kJyxcbiAgdG9wVm9sdW1lQ2hhbmdlOiAndm9sdW1lY2hhbmdlJyxcbiAgdG9wV2Fp
dGluZzogJ3dhaXRpbmcnLFxuICB0b3BXaGVlbDogJ3doZWVsJ1xufTtcblxuLyoqXG4gKiBUbyBl
bnN1cmUgbm8gY29uZmxpY3RzIHdpdGggb3RoZXIgcG90ZW50aWFsIFJlYWN0IGluc3RhbmNlcyBv
biB0aGUgcGFnZVxuICovXG52YXIgdG9wTGlzdGVuZXJzSURLZXkgPSAnX3JlYWN0TGlzdGVuZXJz
SUQnICsgU3RyaW5nKE1hdGgucmFuZG9tKCkpLnNsaWNlKDIpO1xuXG5mdW5jdGlvbiBnZXRMaXN0
ZW5pbmdGb3JEb2N1bWVudChtb3VudEF0KSB7XG4gIC8vIEluIElFOCwgYG1vdW50QXRgIGlzIGEg
aG9zdCBvYmplY3QgYW5kIGRvZXNuJ3QgaGF2ZSBgaGFzT3duUHJvcGVydHlgXG4gIC8vIGRpcmVj
dGx5LlxuICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb3VudEF0
LCB0b3BMaXN0ZW5lcnNJREtleSkpIHtcbiAgICBtb3VudEF0W3RvcExpc3RlbmVyc0lES2V5XSA9
IHJlYWN0VG9wTGlzdGVuZXJzQ291bnRlcisrO1xuICAgIGFscmVhZHlMaXN0ZW5pbmdUb1ttb3Vu
dEF0W3RvcExpc3RlbmVyc0lES2V5XV0gPSB7fTtcbiAgfVxuICByZXR1cm4gYWxyZWFkeUxpc3Rl
bmluZ1RvW21vdW50QXRbdG9wTGlzdGVuZXJzSURLZXldXTtcbn1cblxuLyoqXG4gKiBgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyYCBpcyB1c2VkIHRvIGF0dGFjaCB0b3AtbGV2ZWwgZXZlbnQgbGlz
dGVuZXJzLiBGb3JcbiAqIGV4YW1wbGU6XG4gKlxuICogICBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0
ZW5lcignbXlJRCcsICdvbkNsaWNrJywgbXlGdW5jdGlvbik7XG4gKlxuICogVGhpcyB3b3VsZCBh
bGxvY2F0ZSBhIFwicmVnaXN0cmF0aW9uXCIgb2YgYCgnb25DbGljaycsIG15RnVuY3Rpb24pYCBv
biAnbXlJRCcuXG4gKlxuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdEJyb3dzZXJFdmVudEVt
aXR0ZXIgPSBfYXNzaWduKHt9LCBSZWFjdEV2ZW50RW1pdHRlck1peGluLCB7XG4gIC8qKlxuICAg
KiBJbmplY3RhYmxlIGV2ZW50IGJhY2tlbmRcbiAgICovXG4gIFJlYWN0RXZlbnRMaXN0ZW5lcjog
bnVsbCxcblxuICBpbmplY3Rpb246IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge29iamVjdH0g
UmVhY3RFdmVudExpc3RlbmVyXG4gICAgICovXG4gICAgaW5qZWN0UmVhY3RFdmVudExpc3RlbmVy
OiBmdW5jdGlvbiAoUmVhY3RFdmVudExpc3RlbmVyKSB7XG4gICAgICBSZWFjdEV2ZW50TGlzdGVu
ZXIuc2V0SGFuZGxlVG9wTGV2ZWwoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmhhbmRsZVRvcExl
dmVsKTtcbiAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIg
PSBSZWFjdEV2ZW50TGlzdGVuZXI7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIHdo
ZXRoZXIgb3Igbm90IGFueSBjcmVhdGVkIGNhbGxiYWNrcyBzaG91bGQgYmUgZW5hYmxlZC5cbiAg
ICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIFRydWUgaWYgY2FsbGJhY2tzIHNob3Vs
ZCBiZSBlbmFibGVkLlxuICAgKi9cbiAgc2V0RW5hYmxlZDogZnVuY3Rpb24gKGVuYWJsZWQpIHtc
biAgICBpZiAoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lcikge1xu
ICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5zZXRFbmFi
bGVkKGVuYWJsZWQpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVh
bn0gVHJ1ZSBpZiBjYWxsYmFja3MgYXJlIGVuYWJsZWQuXG4gICAqL1xuICBpc0VuYWJsZWQ6IGZ1
bmN0aW9uICgpIHtcbiAgICByZXR1cm4gISEoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0
RXZlbnRMaXN0ZW5lciAmJiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3Rl
bmVyLmlzRW5hYmxlZCgpKTtcbiAgfSxcblxuICAvKipcbiAgICogV2UgbGlzdGVuIGZvciBidWJi
bGVkIHRvdWNoIGV2ZW50cyBvbiB0aGUgZG9jdW1lbnQgb2JqZWN0LlxuICAgKlxuICAgKiBGaXJl
Zm94IHY4LjAxIChhbmQgcG9zc2libHkgb3RoZXJzKSBleGhpYml0ZWQgc3RyYW5nZSBiZWhhdmlv
ciB3aGVuXG4gICAqIG1vdW50aW5nIGBvbm1vdXNlbW92ZWAgZXZlbnRzIGF0IHNvbWUgbm9kZSB0
aGF0IHdhcyBub3QgdGhlIGRvY3VtZW50XG4gICAqIGVsZW1lbnQuIFRoZSBzeW1wdG9tcyB3ZXJl
IHRoYXQgaWYgeW91ciBtb3VzZSBpcyBub3QgbW92aW5nIG92ZXIgc29tZXRoaW5nXG4gICAqIGNv
bnRhaW5lZCB3aXRoaW4gdGhhdCBtb3VudCBwb2ludCAoZm9yIGV4YW1wbGUgb24gdGhlIGJhY2tn
cm91bmQpIHRoZVxuICAgKiB0b3AtbGV2ZWwgbGlzdGVuZXJzIGZvciBgb25tb3VzZW1vdmVgIHdv
bid0IGJlIGNhbGxlZC4gSG93ZXZlciwgaWYgeW91XG4gICAqIHJlZ2lzdGVyIHRoZSBgbW91c2Vt
b3ZlYCBvbiB0aGUgZG9jdW1lbnQgb2JqZWN0LCB0aGVuIGl0IHdpbGwgb2YgY291cnNlXG4gICAq
IGNhdGNoIGFsbCBgbW91c2Vtb3ZlYHMuIFRoaXMgYWxvbmcgd2l0aCBpT1MgcXVpcmtzLCBqdXN0
aWZpZXMgcmVzdHJpY3RpbmdcbiAgICogdG9wLWxldmVsIGxpc3RlbmVycyB0byB0aGUgZG9jdW1l
bnQgb2JqZWN0IG9ubHksIGF0IGxlYXN0IGZvciB0aGVzZVxuICAgKiBtb3ZlbWVudCB0eXBlcyBv
ZiBldmVudHMgYW5kIHBvc3NpYmx5IGFsbCBldmVudHMuXG4gICAqXG4gICAqIEBzZWUgaHR0cDov
L3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTAvMDkvY2xpY2tfZXZlbnRfZGVs
Lmh0bWxcbiAgICpcbiAgICogQWxzbywgYGtleXVwYC9ga2V5cHJlc3NgL2BrZXlkb3duYCBkbyBu
b3QgYnViYmxlIHRvIHRoZSB3aW5kb3cgb24gSUUsIGJ1dFxuICAgKiB0aGV5IGJ1YmJsZSB0byBk
b2N1bWVudC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFt
ZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29u
dGVudERvY3VtZW50SGFuZGxlIERvY3VtZW50IHdoaWNoIG93bnMgdGhlIGNvbnRhaW5lclxuICAg
Ki9cbiAgbGlzdGVuVG86IGZ1bmN0aW9uIChyZWdpc3RyYXRpb25OYW1lLCBjb250ZW50RG9jdW1l
bnRIYW5kbGUpIHtcbiAgICB2YXIgbW91bnRBdCA9IGNvbnRlbnREb2N1bWVudEhhbmRsZTtcbiAg
ICB2YXIgaXNMaXN0ZW5pbmcgPSBnZXRMaXN0ZW5pbmdGb3JEb2N1bWVudChtb3VudEF0KTtcbiAg
ICB2YXIgZGVwZW5kZW5jaWVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1l
RGVwZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkZXBlbmRlbmN5ID0gZGVw
ZW5kZW5jaWVzW2ldO1xuICAgICAgaWYgKCEoaXNMaXN0ZW5pbmcuaGFzT3duUHJvcGVydHkoZGVw
ZW5kZW5jeSkgJiYgaXNMaXN0ZW5pbmdbZGVwZW5kZW5jeV0pKSB7XG4gICAgICAgIGlmIChkZXBl
bmRlbmN5ID09PSAndG9wV2hlZWwnKSB7XG4gICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQo
J3doZWVsJykpIHtcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2
ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wV2hlZWwnLCAnd2hlZWwnLCBtb3VudEF0
KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ21vdXNld2hlZWwnKSkg
e1xuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5l
ci50cmFwQnViYmxlZEV2ZW50KCd0b3BXaGVlbCcsICdtb3VzZXdoZWVsJywgbW91bnRBdCk7XG4g
ICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEZpcmVmb3ggbmVlZHMgdG8gY2FwdHVy
ZSBhIGRpZmZlcmVudCBtb3VzZSBzY3JvbGwgZXZlbnQuXG4gICAgICAgICAgICAvLyBAc2VlIGh0
dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy90ZXN0cy9zY3JvbGwuaHRtbFxuICAg
ICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFw
QnViYmxlZEV2ZW50KCd0b3BXaGVlbCcsICdET01Nb3VzZVNjcm9sbCcsIG1vdW50QXQpO1xuICAg
ICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSAndG9wU2Nyb2xsJykg
e1xuICAgICAgICAgIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdzY3JvbGwnLCB0cnVlKSkge1xuICAg
ICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFw
Q2FwdHVyZWRFdmVudCgndG9wU2Nyb2xsJywgJ3Njcm9sbCcsIG1vdW50QXQpO1xuICAgICAgICAg
IH0gZWxzZSB7XG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVu
dExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFNjcm9sbCcsICdzY3JvbGwnLCBSZWFjdEJy
b3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLldJTkRPV19IQU5ETEUpO1xuICAg
ICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSAndG9wRm9jdXMnIHx8
IGRlcGVuZGVuY3kgPT09ICd0b3BCbHVyJykge1xuICAgICAgICAgIGlmIChpc0V2ZW50U3VwcG9y
dGVkKCdmb2N1cycsIHRydWUpKSB7XG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KCd0b3BGb2N1cycsICdmb2N1
cycsIG1vdW50QXQpO1xuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0
RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgndG9wQmx1cicsICdibHVyJywgbW91bnRB
dCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdmb2N1c2luJykpIHtc
biAgICAgICAgICAgIC8vIElFIGhhcyBgZm9jdXNpbmAgYW5kIGBmb2N1c291dGAgZXZlbnRzIHdo
aWNoIGJ1YmJsZS5cbiAgICAgICAgICAgIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9y
Zy9ibG9nL2FyY2hpdmVzLzIwMDgvMDQvZGVsZWdhdGluZ190aGUuaHRtbFxuICAgICAgICAgICAg
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2
ZW50KCd0b3BGb2N1cycsICdmb2N1c2luJywgbW91bnRBdCk7XG4gICAgICAgICAgICBSZWFjdEJy
b3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3Rv
cEJsdXInLCAnZm9jdXNvdXQnLCBtb3VudEF0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAv
LyB0byBtYWtlIHN1cmUgYmx1ciBhbmQgZm9jdXMgZXZlbnQgbGlzdGVuZXJzIGFyZSBvbmx5IGF0
dGFjaGVkIG9uY2VcbiAgICAgICAgICBpc0xpc3RlbmluZy50b3BCbHVyID0gdHJ1ZTtcbiAgICAg
ICAgICBpc0xpc3RlbmluZy50b3BGb2N1cyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodG9w
RXZlbnRNYXBwaW5nLmhhc093blByb3BlcnR5KGRlcGVuZGVuY3kpKSB7XG4gICAgICAgICAgUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50
KGRlcGVuZGVuY3ksIHRvcEV2ZW50TWFwcGluZ1tkZXBlbmRlbmN5XSwgbW91bnRBdCk7XG4gICAg
ICAgIH1cblxuICAgICAgICBpc0xpc3RlbmluZ1tkZXBlbmRlbmN5XSA9IHRydWU7XG4gICAgICB9
XG4gICAgfVxuICB9LFxuXG4gIHRyYXBCdWJibGVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5
cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKSB7XG4gICAgcmV0dXJuIFJlYWN0QnJvd3NlckV2
ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZlbFR5
cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKTtcbiAgfSxcblxuICB0cmFwQ2FwdHVyZWRFdmVu
dDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgaGFuZGxlckJhc2VOYW1lLCBoYW5kbGUpIHtcbiAg
ICByZXR1cm4gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFw
Q2FwdHVyZWRFdmVudCh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKTtcbiAg
fSxcblxuICAvKipcbiAgICogUHJvdGVjdCBhZ2FpbnN0IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCkg
cmV0dXJuaW5nIG51bGxcbiAgICogU29tZSBwb3B1cCBibG9ja2VyIGV4dGVuc2lvbnMgYXBwZWFy
IHRvIGRvIHRoaXM6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1
ZXMvNjg4N1xuICAgKi9cbiAgc3VwcG9ydHNFdmVudFBhZ2VYWTogZnVuY3Rpb24gKCkge1xuICAg
IGlmICghZG9jdW1lbnQuY3JlYXRlRXZlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9
XG4gICAgdmFyIGV2ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnQnKTtcbiAgICBy
ZXR1cm4gZXYgIT0gbnVsbCAmJiAncGFnZVgnIGluIGV2O1xuICB9LFxuXG4gIC8qKlxuICAgKiBM
aXN0ZW5zIHRvIHdpbmRvdyBzY3JvbGwgYW5kIHJlc2l6ZSBldmVudHMuIFdlIGNhY2hlIHNjcm9s
bCB2YWx1ZXMgc28gdGhhdFxuICAgKiBhcHBsaWNhdGlvbiBjb2RlIGNhbiBhY2Nlc3MgdGhlbSB3
aXRob3V0IHRyaWdnZXJpbmcgcmVmbG93cy5cbiAgICpcbiAgICogVmlld3BvcnRNZXRyaWNzIGlz
IG9ubHkgdXNlZCBieSBTeW50aGV0aWNNb3VzZS9Ub3VjaEV2ZW50IGFuZCBvbmx5IHdoZW5cbiAg
ICogcGFnZVgvcGFnZVkgaXNuJ3Qgc3VwcG9ydGVkIChsZWdhY3kgYnJvd3NlcnMpLlxuICAgKlxu
ICAgKiBOT1RFOiBTY3JvbGwgZXZlbnRzIGRvIG5vdCBidWJibGUuXG4gICAqXG4gICAqIEBzZWUg
aHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9kb20vZXZlbnRzL3Njcm9sbC5odG1sXG4gICAqL1xu
ICBlbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3Jpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoaGFz
RXZlbnRQYWdlWFkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzRXZlbnRQYWdlWFkgPSBSZWFj
dEJyb3dzZXJFdmVudEVtaXR0ZXIuc3VwcG9ydHNFdmVudFBhZ2VYWSgpO1xuICAgIH1cbiAgICBp
ZiAoIWhhc0V2ZW50UGFnZVhZICYmICFpc01vbml0b3JpbmdTY3JvbGxWYWx1ZSkge1xuICAgICAg
dmFyIHJlZnJlc2ggPSBWaWV3cG9ydE1ldHJpY3MucmVmcmVzaFNjcm9sbFZhbHVlcztcbiAgICAg
IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIubW9uaXRvclNjcm9s
bFZhbHVlKHJlZnJlc2gpO1xuICAgICAgaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUgPSB0cnVlO1xu
ICAgIH1cbiAgfVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0
dGVyO1xuXG4vKioqLyB9KSxcbi8qIDI5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dl
YnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwi
O1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9f
Y3JlYXRlU3RvcmVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oODQpO1xuLyogaGFybW9ueSBpbXBv
cnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fY29tYmluZVJlZHVjZXJzX18g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwNyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19iaW5kQWN0aW9uQ3JlYXRvcnNfXyA9IF9fd2VicGFj
a19yZXF1aXJlX18oMjA4KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzNfX2FwcGx5TWlkZGxld2FyZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
MDkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
NF9fY29tcG9zZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Nyk7XG4vKiBoYXJtb255IGltcG9y
dCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X191dGlsc193YXJuaW5nX18gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDg2KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICov
IF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImNcIiwgZnVuY3Rp
b24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2NyZWF0ZVN0b3JlX19b
XCJiXCJdOyB9KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19y
ZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImJcIiwgZnVuY3Rpb24oKSB7IHJldHVy
biBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2NvbWJpbmVSZWR1Y2Vyc19fW1wiYVwiXTsg
fSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9f
LmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJhXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8yX19iaW5kQWN0aW9uQ3JlYXRvcnNfX1tcImFcIl07IH0pO1xu
LyogdW51c2VkIGhhcm1vbnkgcmVleHBvcnQgYXBwbHlNaWRkbGV3YXJlICovXG4vKiB1bnVzZWQg
aGFybW9ueSByZWV4cG9ydCBjb21wb3NlICovXG5cblxuXG5cblxuXG5cbi8qXG4qIFRoaXMgaXMg
YSBkdW1teSBmdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbiBh
bHRlcmVkIGJ5IG1pbmlmaWNhdGlvbi5cbiogSWYgdGhlIGZ1bmN0aW9uIGhhcyBiZWVuIG1pbmlm
aWVkIGFuZCBOT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLCB3YXJuIHRoZSB1c2VyLlxuKi9cbmZ1
bmN0aW9uIGlzQ3J1c2hlZCgpIHt9XG5cbmlmIChmYWxzZSkge1xuICB3YXJuaW5nKCdZb3UgYXJl
IGN1cnJlbnRseSB1c2luZyBtaW5pZmllZCBjb2RlIG91dHNpZGUgb2YgTk9ERV9FTlYgPT09IFxc
J3Byb2R1Y3Rpb25cXCcuICcgKyAnVGhpcyBtZWFucyB0aGF0IHlvdSBhcmUgcnVubmluZyBhIHNs
b3dlciBkZXZlbG9wbWVudCBidWlsZCBvZiBSZWR1eC4gJyArICdZb3UgY2FuIHVzZSBsb29zZS1l
bnZpZnkgKGh0dHBzOi8vZ2l0aHViLmNvbS96ZXJ0b3NoL2xvb3NlLWVudmlmeSkgZm9yIGJyb3dz
ZXJpZnkgJyArICdvciBEZWZpbmVQbHVnaW4gZm9yIHdlYnBhY2sgKGh0dHA6Ly9zdGFja292ZXJm
bG93LmNvbS9xdWVzdGlvbnMvMzAwMzAwMzEpICcgKyAndG8gZW5zdXJlIHlvdSBoYXZlIHRoZSBj
b3JyZWN0IGNvZGUgZm9yIHlvdXIgcHJvZHVjdGlvbiBidWlsZC4nKTtcbn1cblxuXG5cbi8qKiov
IH0pLFxuLyogMzAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxudmFy
IGc7XHJcblxyXG4vLyBUaGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9kZVxyXG5nID0gKGZ1bmN0
aW9uKCkge1xyXG5cdHJldHVybiB0aGlzO1xyXG59KSgpO1xyXG5cclxudHJ5IHtcclxuXHQvLyBU
aGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcclxuXHRnID0gZyB8fCBGdW5j
dGlvbihcInJldHVybiB0aGlzXCIpKCkgfHwgKDEsZXZhbCkoXCJ0aGlzXCIpO1xyXG59IGNhdGNo
KGUpIHtcclxuXHQvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWls
YWJsZVxyXG5cdGlmKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpXHJcblx0XHRnID0gd2lu
ZG93O1xyXG59XHJcblxyXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5n
IHRvIGRvIGFib3V0IGl0Li4uXHJcbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Yg
bm90aGluZyBoZXJlLCBzbyBpdCdzXHJcbi8vIGVhc2llciB0byBoYW5kbGUgdGhpcyBjYXNlLiBp
ZighZ2xvYmFsKSB7IC4uLn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZztcclxuXG5cbi8qKiov
IH0pLFxuLyogMzEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKiBcbiAqL1xuXG5cblxudmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyKTtcblxudmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8q
KlxuICogSW5qZWN0YWJsZSBvcmRlcmluZyBvZiBldmVudCBwbHVnaW5zLlxuICovXG52YXIgZXZl
bnRQbHVnaW5PcmRlciA9IG51bGw7XG5cbi8qKlxuICogSW5qZWN0YWJsZSBtYXBwaW5nIGZyb20g
bmFtZXMgdG8gZXZlbnQgcGx1Z2luIG1vZHVsZXMuXG4gKi9cbnZhciBuYW1lc1RvUGx1Z2lucyA9
IHt9O1xuXG4vKipcbiAqIFJlY29tcHV0ZXMgdGhlIHBsdWdpbiBsaXN0IHVzaW5nIHRoZSBpbmpl
Y3RlZCBwbHVnaW5zIGFuZCBwbHVnaW4gb3JkZXJpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqL1xu
ZnVuY3Rpb24gcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKSB7XG4gIGlmICghZXZlbnRQbHVnaW5P
cmRlcikge1xuICAgIC8vIFdhaXQgdW50aWwgYW4gYGV2ZW50UGx1Z2luT3JkZXJgIGlzIGluamVj
dGVkLlxuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKHZhciBwbHVnaW5OYW1lIGluIG5hbWVzVG9Q
bHVnaW5zKSB7XG4gICAgdmFyIHBsdWdpbk1vZHVsZSA9IG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5h
bWVdO1xuICAgIHZhciBwbHVnaW5JbmRleCA9IGV2ZW50UGx1Z2luT3JkZXIuaW5kZXhPZihwbHVn
aW5OYW1lKTtcbiAgICAhKHBsdWdpbkluZGV4ID4gLTEpID8gIGZhbHNlID8gaW52YXJpYW50KGZh
bHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90IGluamVjdCBldmVudCBwbHVnaW5zIHRo
YXQgZG8gbm90IGV4aXN0IGluIHRoZSBwbHVnaW4gb3JkZXJpbmcsIGAlc2AuJywgcGx1Z2luTmFt
ZSkgOiBfcHJvZEludmFyaWFudCgnOTYnLCBwbHVnaW5OYW1lKSA6IHZvaWQgMDtcbiAgICBpZiAo
RXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSkge1xuICAgICAgY29udGlu
dWU7XG4gICAgfVxuICAgICFwbHVnaW5Nb2R1bGUuZXh0cmFjdEV2ZW50cyA/ICBmYWxzZSA/IGlu
dmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IEV2ZW50IHBsdWdpbnMgbXVzdCBp
bXBsZW1lbnQgYW4gYGV4dHJhY3RFdmVudHNgIG1ldGhvZCwgYnV0IGAlc2AgZG9lcyBub3QuJywg
cGx1Z2luTmFtZSkgOiBfcHJvZEludmFyaWFudCgnOTcnLCBwbHVnaW5OYW1lKSA6IHZvaWQgMDtc
biAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnNbcGx1Z2luSW5kZXhdID0gcGx1Z2luTW9k
dWxlO1xuICAgIHZhciBwdWJsaXNoZWRFdmVudHMgPSBwbHVnaW5Nb2R1bGUuZXZlbnRUeXBlcztc
biAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gcHVibGlzaGVkRXZlbnRzKSB7XG4gICAgICAhcHVi
bGlzaEV2ZW50Rm9yUGx1Z2luKHB1Ymxpc2hlZEV2ZW50c1tldmVudE5hbWVdLCBwbHVnaW5Nb2R1
bGUsIGV2ZW50TmFtZSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJl
Z2lzdHJ5OiBGYWlsZWQgdG8gcHVibGlzaCBldmVudCBgJXNgIGZvciBwbHVnaW4gYCVzYC4nLCBl
dmVudE5hbWUsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk4JywgZXZlbnROYW1lLCBw
bHVnaW5OYW1lKSA6IHZvaWQgMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBQdWJsaXNoZXMg
YW4gZXZlbnQgc28gdGhhdCBpdCBjYW4gYmUgZGlzcGF0Y2hlZCBieSB0aGUgc3VwcGxpZWQgcGx1
Z2luLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBEaXNwYXRjaCBjb25m
aWd1cmF0aW9uIGZvciB0aGUgZXZlbnQuXG4gKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9kdWxl
IFBsdWdpbiBwdWJsaXNoaW5nIHRoZSBldmVudC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUg
aWYgdGhlIGV2ZW50IHdhcyBzdWNjZXNzZnVsbHkgcHVibGlzaGVkLlxuICogQHByaXZhdGVcbiAq
L1xuZnVuY3Rpb24gcHVibGlzaEV2ZW50Rm9yUGx1Z2luKGRpc3BhdGNoQ29uZmlnLCBwbHVnaW5N
b2R1bGUsIGV2ZW50TmFtZSkge1xuICAhIUV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlz
cGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KGV2ZW50TmFtZSkgPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICdFdmVudFBsdWdpbkh1YjogTW9yZSB0aGFuIG9uZSBwbHVnaW4gYXR0ZW1wdGVk
IHRvIHB1Ymxpc2ggdGhlIHNhbWUgZXZlbnQgbmFtZSwgYCVzYC4nLCBldmVudE5hbWUpIDogX3By
b2RJbnZhcmlhbnQoJzk5JywgZXZlbnROYW1lKSA6IHZvaWQgMDtcbiAgRXZlbnRQbHVnaW5SZWdp
c3RyeS5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3NbZXZlbnROYW1lXSA9IGRpc3BhdGNoQ29uZmln
O1xuXG4gIHZhciBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyA9IGRpc3BhdGNoQ29uZmlnLnBoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzO1xuICBpZiAocGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHtcbiAg
ICBmb3IgKHZhciBwaGFzZU5hbWUgaW4gcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHtcbiAgICAg
IGlmIChwaGFzZWRSZWdpc3RyYXRpb25OYW1lcy5oYXNPd25Qcm9wZXJ0eShwaGFzZU5hbWUpKSB7
XG4gICAgICAgIHZhciBwaGFzZWRSZWdpc3RyYXRpb25OYW1lID0gcGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXNbcGhhc2VOYW1lXTtcbiAgICAgICAgcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUocGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZSwgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpO1xuICAgICAgfVxuICAg
IH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChkaXNwYXRjaENvbmZpZy5yZWdpc3Ry
YXRpb25OYW1lKSB7XG4gICAgcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUoZGlzcGF0Y2hDb25maWcu
cmVnaXN0cmF0aW9uTmFtZSwgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpO1xuICAgIHJldHVybiB0
cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBQdWJsaXNoZXMgYSByZWdp
c3RyYXRpb24gbmFtZSB0aGF0IGlzIHVzZWQgdG8gaWRlbnRpZnkgZGlzcGF0Y2hlZCBldmVudHMg
YW5kXG4gKiBjYW4gYmUgdXNlZCB3aXRoIGBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcmAgdG8g
cmVnaXN0ZXIgbGlzdGVuZXJzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25O
YW1lIFJlZ2lzdHJhdGlvbiBuYW1lIHRvIGFkZC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBQbHVnaW5N
b2R1bGUgUGx1Z2luIHB1Ymxpc2hpbmcgdGhlIGV2ZW50LlxuICogQHByaXZhdGVcbiAqL1xuZnVu
Y3Rpb24gcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUocmVnaXN0cmF0aW9uTmFtZSwgcGx1Z2luTW9k
dWxlLCBldmVudE5hbWUpIHtcbiAgISFFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5h
bWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAn
RXZlbnRQbHVnaW5IdWI6IE1vcmUgdGhhbiBvbmUgcGx1Z2luIGF0dGVtcHRlZCB0byBwdWJsaXNo
IHRoZSBzYW1lIHJlZ2lzdHJhdGlvbiBuYW1lLCBgJXNgLicsIHJlZ2lzdHJhdGlvbk5hbWUpIDog
X3Byb2RJbnZhcmlhbnQoJzEwMCcsIHJlZ2lzdHJhdGlvbk5hbWUpIDogdm9pZCAwO1xuICBFdmVu
dFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVd
ID0gcGx1Z2luTW9kdWxlO1xuICBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVE
ZXBlbmRlbmNpZXNbcmVnaXN0cmF0aW9uTmFtZV0gPSBwbHVnaW5Nb2R1bGUuZXZlbnRUeXBlc1tl
dmVudE5hbWVdLmRlcGVuZGVuY2llcztcblxuICBpZiAoZmFsc2UpIHtcbiAgICB2YXIgbG93ZXJD
YXNlZE5hbWUgPSByZWdpc3RyYXRpb25OYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgRXZlbnRQbHVn
aW5SZWdpc3RyeS5wb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzW2xvd2VyQ2FzZWROYW1lXSA9IHJl
Z2lzdHJhdGlvbk5hbWU7XG5cbiAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gJ29uRG91Ymxl
Q2xpY2snKSB7XG4gICAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0aW9u
TmFtZXMub25kYmxjbGljayA9IHJlZ2lzdHJhdGlvbk5hbWU7XG4gICAgfVxuICB9XG59XG5cbi8q
KlxuICogUmVnaXN0ZXJzIHBsdWdpbnMgc28gdGhhdCB0aGV5IGNhbiBleHRyYWN0IGFuZCBkaXNw
YXRjaCBldmVudHMuXG4gKlxuICogQHNlZSB7RXZlbnRQbHVnaW5IdWJ9XG4gKi9cbnZhciBFdmVu
dFBsdWdpblJlZ2lzdHJ5ID0ge1xuICAvKipcbiAgICogT3JkZXJlZCBsaXN0IG9mIGluamVjdGVk
IHBsdWdpbnMuXG4gICAqL1xuICBwbHVnaW5zOiBbXSxcblxuICAvKipcbiAgICogTWFwcGluZyBm
cm9tIGV2ZW50IG5hbWUgdG8gZGlzcGF0Y2ggY29uZmlnXG4gICAqL1xuICBldmVudE5hbWVEaXNw
YXRjaENvbmZpZ3M6IHt9LFxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gcmVnaXN0cmF0aW9u
IG5hbWUgdG8gcGx1Z2luIG1vZHVsZVxuICAgKi9cbiAgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM6
IHt9LFxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gcmVnaXN0cmF0aW9uIG5hbWUgdG8gZXZl
bnQgbmFtZVxuICAgKi9cbiAgcmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llczoge30sXG5cbiAg
LyoqXG4gICAqIE1hcHBpbmcgZnJvbSBsb3dlcmNhc2UgcmVnaXN0cmF0aW9uIG5hbWVzIHRvIHRo
ZSBwcm9wZXJseSBjYXNlZCB2ZXJzaW9uLFxuICAgKiB1c2VkIHRvIHdhcm4gaW4gdGhlIGNhc2Ug
b2YgbWlzc2luZyBldmVudCBoYW5kbGVycy4gQXZhaWxhYmxlXG4gICAqIG9ubHkgaW4gX19ERVZf
Xy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFt
ZXM6ICBmYWxzZSA/IHt9IDogbnVsbCxcbiAgLy8gVHJ1c3QgdGhlIGRldmVsb3BlciB0byBvbmx5
IHVzZSBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzIGluIF9fREVWX19cblxuICAvKipcbiAgICog
SW5qZWN0cyBhbiBvcmRlcmluZyBvZiBwbHVnaW5zIChieSBwbHVnaW4gbmFtZSkuIFRoaXMgYWxs
b3dzIHRoZSBvcmRlcmluZ1xuICAgKiB0byBiZSBkZWNvdXBsZWQgZnJvbSBpbmplY3Rpb24gb2Yg
dGhlIGFjdHVhbCBwbHVnaW5zIHNvIHRoYXQgb3JkZXJpbmcgaXNcbiAgICogYWx3YXlzIGRldGVy
bWluaXN0aWMgcmVnYXJkbGVzcyBvZiBwYWNrYWdpbmcsIG9uLXRoZS1mbHkgaW5qZWN0aW9uLCBl
dGMuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXl9IEluamVjdGVkRXZlbnRQbHVnaW5PcmRlclxu
ICAgKiBAaW50ZXJuYWxcbiAgICogQHNlZSB7RXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVj
dEV2ZW50UGx1Z2luT3JkZXJ9XG4gICAqL1xuICBpbmplY3RFdmVudFBsdWdpbk9yZGVyOiBmdW5j
dGlvbiAoaW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyKSB7XG4gICAgISFldmVudFBsdWdpbk9yZGVy
ID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90
IGluamVjdCBldmVudCBwbHVnaW4gb3JkZXJpbmcgbW9yZSB0aGFuIG9uY2UuIFlvdSBhcmUgbGlr
ZWx5IHRyeWluZyB0byBsb2FkIG1vcmUgdGhhbiBvbmUgY29weSBvZiBSZWFjdC4nKSA6IF9wcm9k
SW52YXJpYW50KCcxMDEnKSA6IHZvaWQgMDtcbiAgICAvLyBDbG9uZSB0aGUgb3JkZXJpbmcgc28g
aXQgY2Fubm90IGJlIGR5bmFtaWNhbGx5IG11dGF0ZWQuXG4gICAgZXZlbnRQbHVnaW5PcmRlciA9
IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGluamVjdGVkRXZlbnRQbHVnaW5PcmRlcik7XG4g
ICAgcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKTtcbiAgfSxcblxuICAvKipcbiAgICogSW5qZWN0
cyBwbHVnaW5zIHRvIGJlIHVzZWQgYnkgYEV2ZW50UGx1Z2luSHViYC4gVGhlIHBsdWdpbiBuYW1l
cyBtdXN0IGJlXG4gICAqIGluIHRoZSBvcmRlcmluZyBpbmplY3RlZCBieSBgaW5qZWN0RXZlbnRQ
bHVnaW5PcmRlcmAuXG4gICAqXG4gICAqIFBsdWdpbnMgY2FuIGJlIGluamVjdGVkIGFzIHBhcnQg
b2YgcGFnZSBpbml0aWFsaXphdGlvbiBvciBvbi10aGUtZmx5LlxuICAgKlxuICAgKiBAcGFyYW0g
e29iamVjdH0gaW5qZWN0ZWROYW1lc1RvUGx1Z2lucyBNYXAgZnJvbSBuYW1lcyB0byBwbHVnaW4g
bW9kdWxlcy5cbiAgICogQGludGVybmFsXG4gICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmluamVj
dGlvbi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWV9XG4gICAqL1xuICBpbmplY3RFdmVudFBsdWdp
bnNCeU5hbWU6IGZ1bmN0aW9uIChpbmplY3RlZE5hbWVzVG9QbHVnaW5zKSB7XG4gICAgdmFyIGlz
T3JkZXJpbmdEaXJ0eSA9IGZhbHNlO1xuICAgIGZvciAodmFyIHBsdWdpbk5hbWUgaW4gaW5qZWN0
ZWROYW1lc1RvUGx1Z2lucykge1xuICAgICAgaWYgKCFpbmplY3RlZE5hbWVzVG9QbHVnaW5zLmhh
c093blByb3BlcnR5KHBsdWdpbk5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxu
ICAgICAgdmFyIHBsdWdpbk1vZHVsZSA9IGluamVjdGVkTmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFt
ZV07XG4gICAgICBpZiAoIW5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBsdWdpbk5hbWUp
IHx8IG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdICE9PSBwbHVnaW5Nb2R1bGUpIHtcbiAgICAg
ICAgISFuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxz
ZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3QgdHdvIGRpZmZlcmVudCBldmVu
dCBwbHVnaW5zIHVzaW5nIHRoZSBzYW1lIG5hbWUsIGAlc2AuJywgcGx1Z2luTmFtZSkgOiBfcHJv
ZEludmFyaWFudCgnMTAyJywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7XG4gICAgICAgIG5hbWVzVG9Q
bHVnaW5zW3BsdWdpbk5hbWVdID0gcGx1Z2luTW9kdWxlO1xuICAgICAgICBpc09yZGVyaW5nRGly
dHkgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNPcmRlcmluZ0RpcnR5KSB7XG4g
ICAgICByZWNvbXB1dGVQbHVnaW5PcmRlcmluZygpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAg
ICogTG9va3MgdXAgdGhlIHBsdWdpbiBmb3IgdGhlIHN1cHBsaWVkIGV2ZW50LlxuICAgKlxuICAg
KiBAcGFyYW0ge29iamVjdH0gZXZlbnQgQSBzeW50aGV0aWMgZXZlbnQuXG4gICAqIEByZXR1cm4g
ez9vYmplY3R9IFRoZSBwbHVnaW4gdGhhdCBjcmVhdGVkIHRoZSBzdXBwbGllZCBldmVudC5cbiAg
ICogQGludGVybmFsXG4gICAqL1xuICBnZXRQbHVnaW5Nb2R1bGVGb3JFdmVudDogZnVuY3Rpb24g
KGV2ZW50KSB7XG4gICAgdmFyIGRpc3BhdGNoQ29uZmlnID0gZXZlbnQuZGlzcGF0Y2hDb25maWc7
XG4gICAgaWYgKGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICAgIHJldHVy
biBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW2Rpc3BhdGNoQ29u
ZmlnLnJlZ2lzdHJhdGlvbk5hbWVdIHx8IG51bGw7XG4gICAgfVxuICAgIGlmIChkaXNwYXRjaENv
bmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBw
dWxsaW5nIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzIG91dCBvZiBkaXNwYXRjaENvbmZpZyBoZWxw
cyBGbG93IHNlZVxuICAgICAgLy8gdGhhdCBpdCBpcyBub3QgdW5kZWZpbmVkLlxuICAgICAgdmFy
IHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzID0gZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM7XG5cbiAgICAgIGZvciAodmFyIHBoYXNlIGluIHBoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzKSB7XG4gICAgICAgIGlmICghcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVy
dHkocGhhc2UpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFy
IHBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVs
ZXNbcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcGhhc2VdXTtcbiAgICAgICAgaWYgKHBsdWdpbk1v
ZHVsZSkge1xuICAgICAgICAgIHJldHVybiBwbHVnaW5Nb2R1bGU7XG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEV4cG9zZWQg
Zm9yIHVuaXQgdGVzdGluZy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9yZXNldEV2ZW50UGx1
Z2luczogZnVuY3Rpb24gKCkge1xuICAgIGV2ZW50UGx1Z2luT3JkZXIgPSBudWxsO1xuICAgIGZv
ciAodmFyIHBsdWdpbk5hbWUgaW4gbmFtZXNUb1BsdWdpbnMpIHtcbiAgICAgIGlmIChuYW1lc1Rv
UGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSkge1xuICAgICAgICBkZWxldGUgbmFt
ZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07XG4gICAgICB9XG4gICAgfVxuICAgIEV2ZW50UGx1Z2lu
UmVnaXN0cnkucGx1Z2lucy5sZW5ndGggPSAwO1xuXG4gICAgdmFyIGV2ZW50TmFtZURpc3BhdGNo
Q29uZmlncyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzO1xu
ICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MpIHtcbiAg
ICAgIGlmIChldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MuaGFzT3duUHJvcGVydHkoZXZlbnROYW1l
KSkge1xuICAgICAgICBkZWxldGUgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzW2V2ZW50TmFtZV07
XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzID0gRXZl
bnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcztcbiAgICBmb3IgKHZhciBy
ZWdpc3RyYXRpb25OYW1lIGluIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzKSB7XG4gICAgICBpZiAo
cmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocmVnaXN0cmF0aW9uTmFtZSkp
IHtcbiAgICAgICAgZGVsZXRlIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5h
bWVdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgdmFyIHBvc3Np
YmxlUmVnaXN0cmF0aW9uTmFtZXMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0
cmF0aW9uTmFtZXM7XG4gICAgICBmb3IgKHZhciBsb3dlckNhc2VkTmFtZSBpbiBwb3NzaWJsZVJl
Z2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgICAgIGlmIChwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVz
Lmhhc093blByb3BlcnR5KGxvd2VyQ2FzZWROYW1lKSkge1xuICAgICAgICAgIGRlbGV0ZSBwb3Nz
aWJsZVJlZ2lzdHJhdGlvbk5hbWVzW2xvd2VyQ2FzZWROYW1lXTtcbiAgICAgICAgfVxuICAgICAg
fVxuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5
O1xuXG4vKioqLyB9KSxcbi8qIDMyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDIpO1xuXG52YXIgUmVhY3RFcnJvclV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVf
XygzMyk7XG5cbnZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xudmFyIHdh
cm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG4vKipcbiAqIEluamVjdGVkIGRlcGVu
ZGVuY2llczpcbiAqL1xuXG4vKipcbiAqIC0gYENvbXBvbmVudFRyZWVgOiBbcmVxdWlyZWRdIE1v
ZHVsZSB0aGF0IGNhbiBjb252ZXJ0IGJldHdlZW4gUmVhY3QgaW5zdGFuY2VzXG4gKiAgIGFuZCBh
Y3R1YWwgbm9kZSByZWZlcmVuY2VzLlxuICovXG52YXIgQ29tcG9uZW50VHJlZTtcbnZhciBUcmVl
VHJhdmVyc2FsO1xudmFyIGluamVjdGlvbiA9IHtcbiAgaW5qZWN0Q29tcG9uZW50VHJlZTogZnVu
Y3Rpb24gKEluamVjdGVkKSB7XG4gICAgQ29tcG9uZW50VHJlZSA9IEluamVjdGVkO1xuICAgIGlm
IChmYWxzZSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoSW5qZWN0ZWQgJiYgSW5qZWN0ZWQuZ2V0Tm9kZUZyb21JbnN0YW5jZSAmJiBJbmpl
Y3RlZC5nZXRJbnN0YW5jZUZyb21Ob2RlLCAnRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rpb24uaW5q
ZWN0Q29tcG9uZW50VHJlZSguLi4pOiBJbmplY3RlZCAnICsgJ21vZHVsZSBpcyBtaXNzaW5nIGdl
dE5vZGVGcm9tSW5zdGFuY2Ugb3IgZ2V0SW5zdGFuY2VGcm9tTm9kZS4nKSA6IHZvaWQgMDtcbiAg
ICB9XG4gIH0sXG4gIGluamVjdFRyZWVUcmF2ZXJzYWw6IGZ1bmN0aW9uIChJbmplY3RlZCkge1xu
ICAgIFRyZWVUcmF2ZXJzYWwgPSBJbmplY3RlZDtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKEluamVjdGVkICYm
IEluamVjdGVkLmlzQW5jZXN0b3IgJiYgSW5qZWN0ZWQuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3Is
ICdFdmVudFBsdWdpblV0aWxzLmluamVjdGlvbi5pbmplY3RUcmVlVHJhdmVyc2FsKC4uLik6IElu
amVjdGVkICcgKyAnbW9kdWxlIGlzIG1pc3NpbmcgaXNBbmNlc3RvciBvciBnZXRMb3dlc3RDb21t
b25BbmNlc3Rvci4nKSA6IHZvaWQgMDtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGlzRW5k
aXNoKHRvcExldmVsVHlwZSkge1xuICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VV
cCcgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hFbmQnIHx8IHRvcExldmVsVHlwZSA9PT0g
J3RvcFRvdWNoQ2FuY2VsJztcbn1cblxuZnVuY3Rpb24gaXNNb3ZlaXNoKHRvcExldmVsVHlwZSkg
e1xuICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VNb3ZlJyB8fCB0b3BMZXZlbFR5
cGUgPT09ICd0b3BUb3VjaE1vdmUnO1xufVxuZnVuY3Rpb24gaXNTdGFydGlzaCh0b3BMZXZlbFR5
cGUpIHtcbiAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlRG93bicgfHwgdG9wTGV2
ZWxUeXBlID09PSAndG9wVG91Y2hTdGFydCc7XG59XG5cbnZhciB2YWxpZGF0ZUV2ZW50RGlzcGF0
Y2hlcztcbmlmIChmYWxzZSkge1xuICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyA9IGZ1bmN0aW9u
IChldmVudCkge1xuICAgIHZhciBkaXNwYXRjaExpc3RlbmVycyA9IGV2ZW50Ll9kaXNwYXRjaExp
c3RlbmVycztcbiAgICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlzcGF0Y2hJbnN0
YW5jZXM7XG5cbiAgICB2YXIgbGlzdGVuZXJzSXNBcnIgPSBBcnJheS5pc0FycmF5KGRpc3BhdGNo
TGlzdGVuZXJzKTtcbiAgICB2YXIgbGlzdGVuZXJzTGVuID0gbGlzdGVuZXJzSXNBcnIgPyBkaXNw
YXRjaExpc3RlbmVycy5sZW5ndGggOiBkaXNwYXRjaExpc3RlbmVycyA/IDEgOiAwO1xuXG4gICAg
dmFyIGluc3RhbmNlc0lzQXJyID0gQXJyYXkuaXNBcnJheShkaXNwYXRjaEluc3RhbmNlcyk7XG4g
ICAgdmFyIGluc3RhbmNlc0xlbiA9IGluc3RhbmNlc0lzQXJyID8gZGlzcGF0Y2hJbnN0YW5jZXMu
bGVuZ3RoIDogZGlzcGF0Y2hJbnN0YW5jZXMgPyAxIDogMDtcblxuICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGluc3RhbmNlc0lzQXJyID09PSBsaXN0
ZW5lcnNJc0FyciAmJiBpbnN0YW5jZXNMZW4gPT09IGxpc3RlbmVyc0xlbiwgJ0V2ZW50UGx1Z2lu
VXRpbHM6IEludmFsaWQgYGV2ZW50YC4nKSA6IHZvaWQgMDtcbiAgfTtcbn1cblxuLyoqXG4gKiBE
aXNwYXRjaCB0aGUgZXZlbnQgdG8gdGhlIGxpc3RlbmVyLlxuICogQHBhcmFtIHtTeW50aGV0aWNF
dmVudH0gZXZlbnQgU3ludGhldGljRXZlbnQgdG8gaGFuZGxlXG4gKiBAcGFyYW0ge2Jvb2xlYW59
IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQgaXMgc2ltdWxhdGVkIChjaGFuZ2VzIGV4biBiZWhhdmlv
cilcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIEFwcGxpY2F0aW9uLWxldmVsIGNhbGxi
YWNrXG4gKiBAcGFyYW0geyp9IGluc3QgSW50ZXJuYWwgY29tcG9uZW50IGluc3RhbmNlXG4gKi9c
bmZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBsaXN0ZW5lciwgaW5z
dCkge1xuICB2YXIgdHlwZSA9IGV2ZW50LnR5cGUgfHwgJ3Vua25vd24tZXZlbnQnO1xuICBldmVu
dC5jdXJyZW50VGFyZ2V0ID0gRXZlbnRQbHVnaW5VdGlscy5nZXROb2RlRnJvbUluc3RhbmNlKGlu
c3QpO1xuICBpZiAoc2ltdWxhdGVkKSB7XG4gICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1YXJk
ZWRDYWxsYmFja1dpdGhDYXRjaCh0eXBlLCBsaXN0ZW5lciwgZXZlbnQpO1xuICB9IGVsc2Uge1xu
ICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sodHlwZSwgbGlzdGVuZXIs
IGV2ZW50KTtcbiAgfVxuICBldmVudC5jdXJyZW50VGFyZ2V0ID0gbnVsbDtcbn1cblxuLyoqXG4g
KiBTdGFuZGFyZC9zaW1wbGUgaXRlcmF0aW9uIHRocm91Z2ggYW4gZXZlbnQncyBjb2xsZWN0ZWQg
ZGlzcGF0Y2hlcy5cbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyKGV2ZW50
LCBzaW11bGF0ZWQpIHtcbiAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNo
TGlzdGVuZXJzO1xuICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlzcGF0Y2hJbnN0
YW5jZXM7XG4gIGlmIChmYWxzZSkge1xuICAgIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzKGV2ZW50
KTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVycykpIHtcbiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGRpc3BhdGNoTGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAg
ICBpZiAoZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkge1xuICAgICAgICBicmVhaztcbiAg
ICAgIH1cbiAgICAgIC8vIExpc3RlbmVycyBhbmQgSW5zdGFuY2VzIGFyZSB0d28gcGFyYWxsZWwg
YXJyYXlzIHRoYXQgYXJlIGFsd2F5cyBpbiBzeW5jLlxuICAgICAgZXhlY3V0ZURpc3BhdGNoKGV2
ZW50LCBzaW11bGF0ZWQsIGRpc3BhdGNoTGlzdGVuZXJzW2ldLCBkaXNwYXRjaEluc3RhbmNlc1tp
XSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGRpc3BhdGNoTGlzdGVuZXJzKSB7XG4gICAgZXhlY3V0
ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGRpc3BhdGNoTGlzdGVuZXJzLCBkaXNwYXRjaElu
c3RhbmNlcyk7XG4gIH1cbiAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gbnVsbDtcbiAgZXZl
bnQuX2Rpc3BhdGNoSW5zdGFuY2VzID0gbnVsbDtcbn1cblxuLyoqXG4gKiBTdGFuZGFyZC9zaW1w
bGUgaXRlcmF0aW9uIHRocm91Z2ggYW4gZXZlbnQncyBjb2xsZWN0ZWQgZGlzcGF0Y2hlcywgYnV0
IHN0b3BzXG4gKiBhdCB0aGUgZmlyc3QgZGlzcGF0Y2ggZXhlY3V0aW9uIHJldHVybmluZyB0cnVl
LCBhbmQgcmV0dXJucyB0aGF0IGlkLlxuICpcbiAqIEByZXR1cm4gez9zdHJpbmd9IGlkIG9mIHRo
ZSBmaXJzdCBkaXNwYXRjaCBleGVjdXRpb24gd2hvJ3MgbGlzdGVuZXIgcmV0dXJuc1xuICogdHJ1
ZSwgb3IgbnVsbCBpZiBubyBsaXN0ZW5lciByZXR1cm5lZCB0cnVlLlxuICovXG5mdW5jdGlvbiBl
eGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbChldmVudCkge1xuICB2YXIgZGlz
cGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG4gIHZhciBkaXNwYXRj
aEluc3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcztcbiAgaWYgKGZhbHNlKSB7XG4g
ICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZlbnQpO1xuICB9XG4gIGlmIChBcnJheS5pc0Fy
cmF5KGRpc3BhdGNoTGlzdGVuZXJzKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlzcGF0
Y2hMaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChldmVudC5pc1Byb3BhZ2F0aW9u
U3RvcHBlZCgpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gTGlzdGVuZXJz
IGFuZCBJbnN0YW5jZXMgYXJlIHR3byBwYXJhbGxlbCBhcnJheXMgdGhhdCBhcmUgYWx3YXlzIGlu
IHN5bmMuXG4gICAgICBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnNbaV0oZXZlbnQsIGRpc3BhdGNoSW5z
dGFuY2VzW2ldKSkge1xuICAgICAgICByZXR1cm4gZGlzcGF0Y2hJbnN0YW5jZXNbaV07XG4gICAg
ICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGRpc3BhdGNoTGlzdGVuZXJzKSB7XG4gICAgaWYgKGRp
c3BhdGNoTGlzdGVuZXJzKGV2ZW50LCBkaXNwYXRjaEluc3RhbmNlcykpIHtcbiAgICAgIHJldHVy
biBkaXNwYXRjaEluc3RhbmNlcztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8q
KlxuICogQHNlZSBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbFxuICovXG5m
dW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlKGV2ZW50KSB7XG4gIHZh
ciByZXQgPSBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbChldmVudCk7XG4g
IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7XG4gIGV2ZW50Ll9kaXNwYXRjaExpc3Rl
bmVycyA9IG51bGw7XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogRXhlY3V0aW9uIG9mIGEg
XCJkaXJlY3RcIiBkaXNwYXRjaCAtIHRoZXJlIG11c3QgYmUgYXQgbW9zdCBvbmUgZGlzcGF0Y2hc
biAqIGFjY3VtdWxhdGVkIG9uIHRoZSBldmVudCBvciBpdCBpcyBjb25zaWRlcmVkIGFuIGVycm9y
LiBJdCBkb2Vzbid0IHJlYWxseSBtYWtlXG4gKiBzZW5zZSBmb3IgYW4gZXZlbnQgd2l0aCBtdWx0
aXBsZSBkaXNwYXRjaGVzIChidWJibGVkKSB0byBrZWVwIHRyYWNrIG9mIHRoZVxuICogcmV0dXJu
IHZhbHVlcyBhdCBlYWNoIGRpc3BhdGNoIGV4ZWN1dGlvbiwgYnV0IGl0IGRvZXMgdGVuZCB0byBt
YWtlIHNlbnNlIHdoZW5cbiAqIGRlYWxpbmcgd2l0aCBcImRpcmVjdFwiIGRpc3BhdGNoZXMuXG4g
KlxuICogQHJldHVybiB7Kn0gVGhlIHJldHVybiB2YWx1ZSBvZiBleGVjdXRpbmcgdGhlIHNpbmds
ZSBkaXNwYXRjaC5cbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpcmVjdERpc3BhdGNoKGV2ZW50KSB7
XG4gIGlmIChmYWxzZSkge1xuICAgIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzKGV2ZW50KTtcbiAg
fVxuICB2YXIgZGlzcGF0Y2hMaXN0ZW5lciA9IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycztcbiAg
dmFyIGRpc3BhdGNoSW5zdGFuY2UgPSBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXM7XG4gICEhQXJy
YXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVyKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwg
J2V4ZWN1dGVEaXJlY3REaXNwYXRjaCguLi4pOiBJbnZhbGlkIGBldmVudGAuJykgOiBfcHJvZElu
dmFyaWFudCgnMTAzJykgOiB2b2lkIDA7XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBkaXNwYXRj
aExpc3RlbmVyID8gRXZlbnRQbHVnaW5VdGlscy5nZXROb2RlRnJvbUluc3RhbmNlKGRpc3BhdGNo
SW5zdGFuY2UpIDogbnVsbDtcbiAgdmFyIHJlcyA9IGRpc3BhdGNoTGlzdGVuZXIgPyBkaXNwYXRj
aExpc3RlbmVyKGV2ZW50KSA6IG51bGw7XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBudWxsO1xu
ICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBudWxsO1xuICBldmVudC5fZGlzcGF0Y2hJbnN0
YW5jZXMgPSBudWxsO1xuICByZXR1cm4gcmVzO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7U3ludGhl
dGljRXZlbnR9IGV2ZW50XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmZiBudW1iZXIgb2Yg
ZGlzcGF0Y2hlcyBhY2N1bXVsYXRlZCBpcyBncmVhdGVyIHRoYW4gMC5cbiAqL1xuZnVuY3Rpb24g
aGFzRGlzcGF0Y2hlcyhldmVudCkge1xuICByZXR1cm4gISFldmVudC5fZGlzcGF0Y2hMaXN0ZW5l
cnM7XG59XG5cbi8qKlxuICogR2VuZXJhbCB1dGlsaXRpZXMgdGhhdCBhcmUgdXNlZnVsIGluIGNy
ZWF0aW5nIGN1c3RvbSBFdmVudCBQbHVnaW5zLlxuICovXG52YXIgRXZlbnRQbHVnaW5VdGlscyA9
IHtcbiAgaXNFbmRpc2g6IGlzRW5kaXNoLFxuICBpc01vdmVpc2g6IGlzTW92ZWlzaCxcbiAgaXNT
dGFydGlzaDogaXNTdGFydGlzaCxcblxuICBleGVjdXRlRGlyZWN0RGlzcGF0Y2g6IGV4ZWN1dGVE
aXJlY3REaXNwYXRjaCxcbiAgZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyOiBleGVjdXRlRGlzcGF0
Y2hlc0luT3JkZXIsXG4gIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWU6IGV4ZWN1
dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUsXG4gIGhhc0Rpc3BhdGNoZXM6IGhhc0Rpc3Bh
dGNoZXMsXG5cbiAgZ2V0SW5zdGFuY2VGcm9tTm9kZTogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBy
ZXR1cm4gQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpO1xuICB9LFxuICBn
ZXROb2RlRnJvbUluc3RhbmNlOiBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiBDb21wb25l
bnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2Uobm9kZSk7XG4gIH0sXG4gIGlzQW5jZXN0b3I6IGZ1
bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuaXNBbmNlc3RvcihhLCBi
KTtcbiAgfSxcbiAgZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6IGZ1bmN0aW9uIChhLCBiKSB7XG4g
ICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IoYSwgYik7XG4g
IH0sXG4gIGdldFBhcmVudEluc3RhbmNlOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIHJldHVybiBU
cmVlVHJhdmVyc2FsLmdldFBhcmVudEluc3RhbmNlKGluc3QpO1xuICB9LFxuICB0cmF2ZXJzZVR3
b1BoYXNlOiBmdW5jdGlvbiAodGFyZ2V0LCBmbiwgYXJnKSB7XG4gICAgcmV0dXJuIFRyZWVUcmF2
ZXJzYWwudHJhdmVyc2VUd29QaGFzZSh0YXJnZXQsIGZuLCBhcmcpO1xuICB9LFxuICB0cmF2ZXJz
ZUVudGVyTGVhdmU6IGZ1bmN0aW9uIChmcm9tLCB0bywgZm4sIGFyZ0Zyb20sIGFyZ1RvKSB7XG4g
ICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwudHJhdmVyc2VFbnRlckxlYXZlKGZyb20sIHRvLCBmbiwg
YXJnRnJvbSwgYXJnVG8pO1xuICB9LFxuXG4gIGluamVjdGlvbjogaW5qZWN0aW9uXG59O1xuXG5t
b2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luVXRpbHM7XG5cbi8qKiovIH0pLFxuLyogMzMgKi9c
bi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xu
XG5cblxudmFyIGNhdWdodEVycm9yID0gbnVsbDtcblxuLyoqXG4gKiBDYWxsIGEgZnVuY3Rpb24g
d2hpbGUgZ3VhcmRpbmcgYWdhaW5zdCBlcnJvcnMgdGhhdCBoYXBwZW5zIHdpdGhpbiBpdC5cbiAq
XG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBvZiB0aGUgZ3VhcmQgdG8gdXNlIGZvciBsb2dnaW5n
IG9yIGRlYnVnZ2luZ1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8g
aW52b2tlXG4gKiBAcGFyYW0geyp9IGEgRmlyc3QgYXJndW1lbnRcbiAqIEBwYXJhbSB7Kn0gYiBT
ZWNvbmQgYXJndW1lbnRcbiAqL1xuZnVuY3Rpb24gaW52b2tlR3VhcmRlZENhbGxiYWNrKG5hbWUs
IGZ1bmMsIGEpIHtcbiAgdHJ5IHtcbiAgICBmdW5jKGEpO1xuICB9IGNhdGNoICh4KSB7XG4gICAg
aWYgKGNhdWdodEVycm9yID09PSBudWxsKSB7XG4gICAgICBjYXVnaHRFcnJvciA9IHg7XG4gICAg
fVxuICB9XG59XG5cbnZhciBSZWFjdEVycm9yVXRpbHMgPSB7XG4gIGludm9rZUd1YXJkZWRDYWxs
YmFjazogaW52b2tlR3VhcmRlZENhbGxiYWNrLFxuXG4gIC8qKlxuICAgKiBJbnZva2VkIGJ5IFJl
YWN0VGVzdFV0aWxzLlNpbXVsYXRlIHNvIHRoYXQgYW55IGVycm9ycyB0aHJvd24gYnkgdGhlIGV2
ZW50XG4gICAqIGhhbmRsZXIgYXJlIHN1cmUgdG8gYmUgcmV0aHJvd24gYnkgcmV0aHJvd0NhdWdo
dEVycm9yLlxuICAgKi9cbiAgaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOiBpbnZva2VH
dWFyZGVkQ2FsbGJhY2ssXG5cbiAgLyoqXG4gICAqIER1cmluZyBleGVjdXRpb24gb2YgZ3VhcmRl
ZCBmdW5jdGlvbnMgd2Ugd2lsbCBjYXB0dXJlIHRoZSBmaXJzdCBlcnJvciB3aGljaFxuICAgKiB3
ZSB3aWxsIHJldGhyb3cgdG8gYmUgaGFuZGxlZCBieSB0aGUgdG9wIGxldmVsIGVycm9yIGhhbmRs
ZXIuXG4gICAqL1xuICByZXRocm93Q2F1Z2h0RXJyb3I6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAo
Y2F1Z2h0RXJyb3IpIHtcbiAgICAgIHZhciBlcnJvciA9IGNhdWdodEVycm9yO1xuICAgICAgY2F1
Z2h0RXJyb3IgPSBudWxsO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59O1xuXG5p
ZiAoZmFsc2UpIHtcbiAgLyoqXG4gICAqIFRvIGhlbHAgZGV2ZWxvcG1lbnQgd2UgY2FuIGdldCBi
ZXR0ZXIgZGV2dG9vbHMgaW50ZWdyYXRpb24gYnkgc2ltdWxhdGluZyBhXG4gICAqIHJlYWwgYnJv
d3NlciBldmVudC5cbiAgICovXG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAm
JiB0eXBlb2Ygd2luZG93LmRpc3BhdGNoRXZlbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRv
Y3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRXZlbnQgPT09
ICdmdW5jdGlvbicpIHtcbiAgICB2YXIgZmFrZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdyZWFjdCcpO1xuICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sgPSBm
dW5jdGlvbiAobmFtZSwgZnVuYywgYSkge1xuICAgICAgdmFyIGJvdW5kRnVuYyA9IGZ1bmMuYmlu
ZChudWxsLCBhKTtcbiAgICAgIHZhciBldnRUeXBlID0gJ3JlYWN0LScgKyBuYW1lO1xuICAgICAg
ZmFrZU5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldnRUeXBlLCBib3VuZEZ1bmMsIGZhbHNlKTtcbiAg
ICAgIHZhciBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcbiAgICAgIGV2dC5p
bml0RXZlbnQoZXZ0VHlwZSwgZmFsc2UsIGZhbHNlKTtcbiAgICAgIGZha2VOb2RlLmRpc3BhdGNo
RXZlbnQoZXZ0KTtcbiAgICAgIGZha2VOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZ0VHlwZSwg
Ym91bmRGdW5jLCBmYWxzZSk7XG4gICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJl
YWN0RXJyb3JVdGlscztcblxuLyoqKi8gfSksXG4vKiAzNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtc
bi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxuLyoqXG4gKiBHZXRzIHRoZSB0
YXJnZXQgbm9kZSBmcm9tIGEgbmF0aXZlIGJyb3dzZXIgZXZlbnQgYnkgYWNjb3VudGluZyBmb3Jc
biAqIGluY29uc2lzdGVuY2llcyBpbiBicm93c2VyIERPTSBBUElzLlxuICpcbiAqIEBwYXJhbSB7
b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEByZXR1cm4ge0RP
TUV2ZW50VGFyZ2V0fSBUYXJnZXQgbm9kZS5cbiAqL1xuXG5mdW5jdGlvbiBnZXRFdmVudFRhcmdl
dChuYXRpdmVFdmVudCkge1xuICB2YXIgdGFyZ2V0ID0gbmF0aXZlRXZlbnQudGFyZ2V0IHx8IG5h
dGl2ZUV2ZW50LnNyY0VsZW1lbnQgfHwgd2luZG93O1xuXG4gIC8vIE5vcm1hbGl6ZSBTVkcgPHVz
ZT4gZWxlbWVudCBldmVudHMgIzQ5NjNcbiAgaWYgKHRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxl
bWVudCkge1xuICAgIHRhcmdldCA9IHRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudDtcbiAg
fVxuXG4gIC8vIFNhZmFyaSBtYXkgZmlyZSBldmVudHMgb24gdGV4dCBub2RlcyAoTm9kZS5URVhU
X05PREUgaXMgMykuXG4gIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9qcy9ldmVu
dHNfcHJvcGVydGllcy5odG1sXG4gIHJldHVybiB0YXJnZXQubm9kZVR5cGUgPT09IDMgPyB0YXJn
ZXQucGFyZW50Tm9kZSA6IHRhcmdldDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudFRh
cmdldDtcblxuLyoqKi8gfSksXG4vKiAzNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblxudmFyIHVzZUhhc0ZlYXR1cmU7XG5pZiAoRXhlY3V0
aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIHVzZUhhc0ZlYXR1cmUgPSBkb2N1bWVudC5p
bXBsZW1lbnRhdGlvbiAmJiBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlICYmXG4g
IC8vIGFsd2F5cyByZXR1cm5zIHRydWUgaW4gbmV3ZXIgYnJvd3NlcnMgYXMgcGVyIHRoZSBzdGFu
ZGFyZC5cbiAgLy8gQHNlZSBodHRwOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tLWRvbWltcGxl
bWVudGF0aW9uLWhhc2ZlYXR1cmVcbiAgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVy
ZSgnJywgJycpICE9PSB0cnVlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhbiBldmVudCBpcyBz
dXBwb3J0ZWQgaW4gdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGVudmlyb25tZW50LlxuICpcbiAqIE5P
VEU6IFRoaXMgd2lsbCBub3Qgd29yayBjb3JyZWN0bHkgZm9yIG5vbi1nZW5lcmljIGV2ZW50cyBz
dWNoIGFzIGBjaGFuZ2VgLFxuICogYHJlc2V0YCwgYGxvYWRgLCBgZXJyb3JgLCBhbmQgYHNlbGVj
dGAuXG4gKlxuICogQm9ycm93cyBmcm9tIE1vZGVybml6ci5cbiAqXG4gKiBAcGFyYW0ge3N0cmlu
Z30gZXZlbnROYW1lU3VmZml4IEV2ZW50IG5hbWUsIGUuZy4gXCJjbGlja1wiLlxuICogQHBhcmFt
IHs/Ym9vbGVhbn0gY2FwdHVyZSBDaGVjayBpZiB0aGUgY2FwdHVyZSBwaGFzZSBpcyBzdXBwb3J0
ZWQuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBldmVudCBpcyBzdXBwb3J0ZWQu
XG4gKiBAaW50ZXJuYWxcbiAqIEBsaWNlbnNlIE1vZGVybml6ciAzLjAuMHByZSAoQ3VzdG9tIEJ1
aWxkKSB8IE1JVFxuICovXG5mdW5jdGlvbiBpc0V2ZW50U3VwcG9ydGVkKGV2ZW50TmFtZVN1ZmZp
eCwgY2FwdHVyZSkge1xuICBpZiAoIUV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSB8fCBj
YXB0dXJlICYmICEoJ2FkZEV2ZW50TGlzdGVuZXInIGluIGRvY3VtZW50KSkge1xuICAgIHJldHVy
biBmYWxzZTtcbiAgfVxuXG4gIHZhciBldmVudE5hbWUgPSAnb24nICsgZXZlbnROYW1lU3VmZml4
O1xuICB2YXIgaXNTdXBwb3J0ZWQgPSBldmVudE5hbWUgaW4gZG9jdW1lbnQ7XG5cbiAgaWYgKCFp
c1N1cHBvcnRlZCkge1xuICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoZXZlbnROYW1lLCAncmV0dXJuOycpO1xu
ICAgIGlzU3VwcG9ydGVkID0gdHlwZW9mIGVsZW1lbnRbZXZlbnROYW1lXSA9PT0gJ2Z1bmN0aW9u
JztcbiAgfVxuXG4gIGlmICghaXNTdXBwb3J0ZWQgJiYgdXNlSGFzRmVhdHVyZSAmJiBldmVudE5h
bWVTdWZmaXggPT09ICd3aGVlbCcpIHtcbiAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHdheSB0byB0
ZXN0IHN1cHBvcnQgZm9yIHRoZSBgd2hlZWxgIGV2ZW50IGluIElFOSsuXG4gICAgaXNTdXBwb3J0
ZWQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCdFdmVudHMud2hlZWwnLCAn
My4wJyk7XG4gIH1cblxuICByZXR1cm4gaXNTdXBwb3J0ZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRz
ID0gaXNFdmVudFN1cHBvcnRlZDtcblxuLyoqKi8gfSksXG4vKiAzNiAqL1xuLyoqKi8gKGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJp
Y3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxuLyoqXG4gKiBUcmFu
c2xhdGlvbiBmcm9tIG1vZGlmaWVyIGtleSB0byB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSBpbiB0
aGUgZXZlbnQuXG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50
cy8ja2V5cy1Nb2RpZmllcnNcbiAqL1xuXG52YXIgbW9kaWZpZXJLZXlUb1Byb3AgPSB7XG4gIEFs
dDogJ2FsdEtleScsXG4gIENvbnRyb2w6ICdjdHJsS2V5JyxcbiAgTWV0YTogJ21ldGFLZXknLFxu
ICBTaGlmdDogJ3NoaWZ0S2V5J1xufTtcblxuLy8gSUU4IGRvZXMgbm90IGltcGxlbWVudCBnZXRN
b2RpZmllclN0YXRlIHNvIHdlIHNpbXBseSBtYXAgaXQgdG8gdGhlIG9ubHlcbi8vIG1vZGlmaWVy
IGtleXMgZXhwb3NlZCBieSB0aGUgZXZlbnQgaXRzZWxmLCBkb2VzIG5vdCBzdXBwb3J0IExvY2st
a2V5cy5cbi8vIEN1cnJlbnRseSwgYWxsIG1ham9yIGJyb3dzZXJzIGV4Y2VwdCBDaHJvbWUgc2Vl
bXMgdG8gc3VwcG9ydCBMb2NrLWtleXMuXG5mdW5jdGlvbiBtb2RpZmllclN0YXRlR2V0dGVyKGtl
eUFyZykge1xuICB2YXIgc3ludGhldGljRXZlbnQgPSB0aGlzO1xuICB2YXIgbmF0aXZlRXZlbnQg
PSBzeW50aGV0aWNFdmVudC5uYXRpdmVFdmVudDtcbiAgaWYgKG5hdGl2ZUV2ZW50LmdldE1vZGlm
aWVyU3RhdGUpIHtcbiAgICByZXR1cm4gbmF0aXZlRXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZShrZXlB
cmcpO1xuICB9XG4gIHZhciBrZXlQcm9wID0gbW9kaWZpZXJLZXlUb1Byb3Bba2V5QXJnXTtcbiAg
cmV0dXJuIGtleVByb3AgPyAhIW5hdGl2ZUV2ZW50W2tleVByb3BdIDogZmFsc2U7XG59XG5cbmZ1
bmN0aW9uIGdldEV2ZW50TW9kaWZpZXJTdGF0ZShuYXRpdmVFdmVudCkge1xuICByZXR1cm4gbW9k
aWZpZXJTdGF0ZUdldHRlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudE1vZGlmaWVy
U3RhdGU7XG5cbi8qKiovIH0pLFxuLyogMzcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBET01MYXp5VHJlZSA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTcpO1xudmFyIERhbmdlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTMzKTtc
bnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xudmFy
IFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblxudmFyIGNy
ZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5
KTtcbnZhciBzZXRJbm5lckhUTUwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KTtcbnZhciBzZXRU
ZXh0Q29udGVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNjcpO1xuXG5mdW5jdGlvbiBnZXROb2Rl
QWZ0ZXIocGFyZW50Tm9kZSwgbm9kZSkge1xuICAvLyBTcGVjaWFsIGNhc2UgZm9yIHRleHQgY29t
cG9uZW50cywgd2hpY2ggcmV0dXJuIFtvcGVuLCBjbG9zZV0gY29tbWVudHNcbiAgLy8gZnJvbSBn
ZXRIb3N0Tm9kZS5cbiAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICBub2RlID0gbm9k
ZVsxXTtcbiAgfVxuICByZXR1cm4gbm9kZSA/IG5vZGUubmV4dFNpYmxpbmcgOiBwYXJlbnROb2Rl
LmZpcnN0Q2hpbGQ7XG59XG5cbi8qKlxuICogSW5zZXJ0cyBgY2hpbGROb2RlYCBhcyBhIGNoaWxk
IG9mIGBwYXJlbnROb2RlYCBhdCB0aGUgYGluZGV4YC5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1l
bnR9IHBhcmVudE5vZGUgUGFyZW50IG5vZGUgaW4gd2hpY2ggdG8gaW5zZXJ0LlxuICogQHBhcmFt
IHtET01FbGVtZW50fSBjaGlsZE5vZGUgQ2hpbGQgbm9kZSB0byBpbnNlcnQuXG4gKiBAcGFyYW0g
e251bWJlcn0gaW5kZXggSW5kZXggYXQgd2hpY2ggdG8gaW5zZXJ0IHRoZSBjaGlsZC5cbiAqIEBp
bnRlcm5hbFxuICovXG52YXIgaW5zZXJ0Q2hpbGRBdCA9IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxv
Y2FsRnVuY3Rpb24oZnVuY3Rpb24gKHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgcmVmZXJlbmNlTm9k
ZSkge1xuICAvLyBXZSByZWx5IGV4Y2x1c2l2ZWx5IG9uIGBpbnNlcnRCZWZvcmUobm9kZSwgbnVs
bClgIGluc3RlYWQgb2YgYWxzbyB1c2luZ1xuICAvLyBgYXBwZW5kQ2hpbGQobm9kZSlgLiAoVXNp
bmcgYHVuZGVmaW5lZGAgaXMgbm90IGFsbG93ZWQgYnkgYWxsIGJyb3dzZXJzIHNvXG4gIC8vIHdl
IGFyZSBjYXJlZnVsIHRvIHVzZSBgbnVsbGAuKVxuICBwYXJlbnROb2RlLmluc2VydEJlZm9yZShj
aGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpO1xufSk7XG5cbmZ1bmN0aW9uIGluc2VydExhenlUcmVl
Q2hpbGRBdChwYXJlbnROb2RlLCBjaGlsZFRyZWUsIHJlZmVyZW5jZU5vZGUpIHtcbiAgRE9NTGF6
eVRyZWUuaW5zZXJ0VHJlZUJlZm9yZShwYXJlbnROb2RlLCBjaGlsZFRyZWUsIHJlZmVyZW5jZU5v
ZGUpO1xufVxuXG5mdW5jdGlvbiBtb3ZlQ2hpbGQocGFyZW50Tm9kZSwgY2hpbGROb2RlLCByZWZl
cmVuY2VOb2RlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkTm9kZSkpIHtcbiAgICBtb3Zl
RGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBjaGlsZE5vZGVbMF0sIGNoaWxkTm9kZVsxXSwgcmVm
ZXJlbmNlTm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgaW5zZXJ0Q2hpbGRBdChwYXJlbnROb2RlLCBj
aGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNoaWxk
KHBhcmVudE5vZGUsIGNoaWxkTm9kZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZE5vZGUp
KSB7XG4gICAgdmFyIGNsb3NpbmdDb21tZW50ID0gY2hpbGROb2RlWzFdO1xuICAgIGNoaWxkTm9k
ZSA9IGNoaWxkTm9kZVswXTtcbiAgICByZW1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUsIGNo
aWxkTm9kZSwgY2xvc2luZ0NvbW1lbnQpO1xuICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2xv
c2luZ0NvbW1lbnQpO1xuICB9XG4gIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGROb2RlKTtc
bn1cblxuZnVuY3Rpb24gbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgb3BlbmluZ0NvbW1l
bnQsIGNsb3NpbmdDb21tZW50LCByZWZlcmVuY2VOb2RlKSB7XG4gIHZhciBub2RlID0gb3Blbmlu
Z0NvbW1lbnQ7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgdmFyIG5leHROb2RlID0gbm9kZS5uZXh0
U2libGluZztcbiAgICBpbnNlcnRDaGlsZEF0KHBhcmVudE5vZGUsIG5vZGUsIHJlZmVyZW5jZU5v
ZGUpO1xuICAgIGlmIChub2RlID09PSBjbG9zaW5nQ29tbWVudCkge1xuICAgICAgYnJlYWs7XG4g
ICAgfVxuICAgIG5vZGUgPSBuZXh0Tm9kZTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVEZWxp
bWl0ZWRUZXh0KHBhcmVudE5vZGUsIHN0YXJ0Tm9kZSwgY2xvc2luZ0NvbW1lbnQpIHtcbiAgd2hp
bGUgKHRydWUpIHtcbiAgICB2YXIgbm9kZSA9IHN0YXJ0Tm9kZS5uZXh0U2libGluZztcbiAgICBp
ZiAobm9kZSA9PT0gY2xvc2luZ0NvbW1lbnQpIHtcbiAgICAgIC8vIFRoZSBjbG9zaW5nIGNvbW1l
bnQgaXMgcmVtb3ZlZCBieSBSZWFjdE11bHRpQ2hpbGQuXG4gICAgICBicmVhaztcbiAgICB9IGVs
c2Uge1xuICAgICAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbiAgICB9XG4gIH1cbn1c
blxuZnVuY3Rpb24gcmVwbGFjZURlbGltaXRlZFRleHQob3BlbmluZ0NvbW1lbnQsIGNsb3NpbmdD
b21tZW50LCBzdHJpbmdUZXh0KSB7XG4gIHZhciBwYXJlbnROb2RlID0gb3BlbmluZ0NvbW1lbnQu
cGFyZW50Tm9kZTtcbiAgdmFyIG5vZGVBZnRlckNvbW1lbnQgPSBvcGVuaW5nQ29tbWVudC5uZXh0
U2libGluZztcbiAgaWYgKG5vZGVBZnRlckNvbW1lbnQgPT09IGNsb3NpbmdDb21tZW50KSB7XG4g
ICAgLy8gVGhlcmUgYXJlIG5vIHRleHQgbm9kZXMgYmV0d2VlbiB0aGUgb3BlbmluZyBhbmQgY2xv
c2luZyBjb21tZW50czsgaW5zZXJ0XG4gICAgLy8gYSBuZXcgb25lIGlmIHN0cmluZ1RleHQgaXNu
J3QgZW1wdHkuXG4gICAgaWYgKHN0cmluZ1RleHQpIHtcbiAgICAgIGluc2VydENoaWxkQXQocGFy
ZW50Tm9kZSwgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyaW5nVGV4dCksIG5vZGVBZnRlckNv
bW1lbnQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoc3RyaW5nVGV4dCkge1xuICAgICAg
Ly8gU2V0IHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIGZpcnN0IG5vZGUgYWZ0ZXIgdGhlIG9wZW5p
bmcgY29tbWVudCwgYW5kXG4gICAgICAvLyByZW1vdmUgYWxsIGZvbGxvd2luZyBub2RlcyB1cCB1
bnRpbCB0aGUgY2xvc2luZyBjb21tZW50LlxuICAgICAgc2V0VGV4dENvbnRlbnQobm9kZUFmdGVy
Q29tbWVudCwgc3RyaW5nVGV4dCk7XG4gICAgICByZW1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5v
ZGUsIG5vZGVBZnRlckNvbW1lbnQsIGNsb3NpbmdDb21tZW50KTtcbiAgICB9IGVsc2Uge1xuICAg
ICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBvcGVuaW5nQ29tbWVudCwgY2xvc2lu
Z0NvbW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmYWxzZSkge1xuICAgIFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgaW5zdGFuY2VJRDog
UmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUob3BlbmluZ0NvbW1lbnQp
Ll9kZWJ1Z0lELFxuICAgICAgdHlwZTogJ3JlcGxhY2UgdGV4dCcsXG4gICAgICBwYXlsb2FkOiBz
dHJpbmdUZXh0XG4gICAgfSk7XG4gIH1cbn1cblxudmFyIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVX
aXRoTWFya3VwID0gRGFuZ2VyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwO1xuaWYg
KGZhbHNlKSB7XG4gIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwID0gZnVuY3Rpb24g
KG9sZENoaWxkLCBtYXJrdXAsIHByZXZJbnN0YW5jZSkge1xuICAgIERhbmdlci5kYW5nZXJvdXNs
eVJlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRDaGlsZCwgbWFya3VwKTtcbiAgICBpZiAocHJldklu
c3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1
Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgaW5zdGFuY2VJRDogcHJldkluc3RhbmNl
Ll9kZWJ1Z0lELFxuICAgICAgICB0eXBlOiAncmVwbGFjZSB3aXRoJyxcbiAgICAgICAgcGF5bG9h
ZDogbWFya3VwLnRvU3RyaW5nKClcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIg
bmV4dEluc3RhbmNlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUo
bWFya3VwLm5vZGUpO1xuICAgICAgaWYgKG5leHRJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xu
ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtc
biAgICAgICAgICBpbnN0YW5jZUlEOiBuZXh0SW5zdGFuY2UuX2RlYnVnSUQsXG4gICAgICAgICAg
dHlwZTogJ21vdW50JyxcbiAgICAgICAgICBwYXlsb2FkOiBtYXJrdXAudG9TdHJpbmcoKVxuICAg
ICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogT3BlcmF0aW9ucyBm
b3IgdXBkYXRpbmcgd2l0aCBET00gY2hpbGRyZW4uXG4gKi9cbnZhciBET01DaGlsZHJlbk9wZXJh
dGlvbnMgPSB7XG4gIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOiBkYW5nZXJvdXNs
eVJlcGxhY2VOb2RlV2l0aE1hcmt1cCxcblxuICByZXBsYWNlRGVsaW1pdGVkVGV4dDogcmVwbGFj
ZURlbGltaXRlZFRleHQsXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYSBjb21wb25lbnQncyBjaGls
ZHJlbiBieSBwcm9jZXNzaW5nIGEgc2VyaWVzIG9mIHVwZGF0ZXMuIFRoZVxuICAgKiB1cGRhdGUg
Y29uZmlndXJhdGlvbnMgYXJlIGVhY2ggZXhwZWN0ZWQgdG8gaGF2ZSBhIGBwYXJlbnROb2RlYCBw
cm9wZXJ0eS5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxvYmplY3Q+fSB1cGRhdGVzIExpc3Qg
b2YgdXBkYXRlIGNvbmZpZ3VyYXRpb25zLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb2Nl
c3NVcGRhdGVzOiBmdW5jdGlvbiAocGFyZW50Tm9kZSwgdXBkYXRlcykge1xuICAgIGlmIChmYWxz
ZSkge1xuICAgICAgdmFyIHBhcmVudE5vZGVEZWJ1Z0lEID0gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldEluc3RhbmNlRnJvbU5vZGUocGFyZW50Tm9kZSkuX2RlYnVnSUQ7XG4gICAgfVxuXG4gICAg
Zm9yICh2YXIgayA9IDA7IGsgPCB1cGRhdGVzLmxlbmd0aDsgaysrKSB7XG4gICAgICB2YXIgdXBk
YXRlID0gdXBkYXRlc1trXTtcbiAgICAgIHN3aXRjaCAodXBkYXRlLnR5cGUpIHtcbiAgICAgICAg
Y2FzZSAnSU5TRVJUX01BUktVUCc6XG4gICAgICAgICAgaW5zZXJ0TGF6eVRyZWVDaGlsZEF0KHBh
cmVudE5vZGUsIHVwZGF0ZS5jb250ZW50LCBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwgdXBkYXRl
LmFmdGVyTm9kZSkpO1xuICAgICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgICAgUmVhY3RJ
bnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAgICAgICAg
IGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELFxuICAgICAgICAgICAgICB0eXBlOiAnaW5z
ZXJ0IGNoaWxkJyxcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgIHRv
SW5kZXg6IHVwZGF0ZS50b0luZGV4LFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHVwZGF0ZS5j
b250ZW50LnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAg
ICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdNT1ZFX0VYSVNUSU5HJzpc
biAgICAgICAgICBtb3ZlQ2hpbGQocGFyZW50Tm9kZSwgdXBkYXRlLmZyb21Ob2RlLCBnZXROb2Rl
QWZ0ZXIocGFyZW50Tm9kZSwgdXBkYXRlLmFmdGVyTm9kZSkpO1xuICAgICAgICAgIGlmIChmYWxz
ZSkge1xuICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9w
ZXJhdGlvbih7XG4gICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELFxu
ICAgICAgICAgICAgICB0eXBlOiAnbW92ZSBjaGlsZCcsXG4gICAgICAgICAgICAgIHBheWxvYWQ6
IHsgZnJvbUluZGV4OiB1cGRhdGUuZnJvbUluZGV4LCB0b0luZGV4OiB1cGRhdGUudG9JbmRleCB9
XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAg
IGNhc2UgJ1NFVF9NQVJLVVAnOlxuICAgICAgICAgIHNldElubmVySFRNTChwYXJlbnROb2RlLCB1
cGRhdGUuY29udGVudCk7XG4gICAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgICAg
ICAgaW5zdGFuY2VJRDogcGFyZW50Tm9kZURlYnVnSUQsXG4gICAgICAgICAgICAgIHR5cGU6ICdy
ZXBsYWNlIGNoaWxkcmVuJyxcbiAgICAgICAgICAgICAgcGF5bG9hZDogdXBkYXRlLmNvbnRlbnQu
dG9TdHJpbmcoKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFr
O1xuICAgICAgICBjYXNlICdURVhUX0NPTlRFTlQnOlxuICAgICAgICAgIHNldFRleHRDb250ZW50
KHBhcmVudE5vZGUsIHVwZGF0ZS5jb250ZW50KTtcbiAgICAgICAgICBpZiAoZmFsc2UpIHtcbiAg
ICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24o
e1xuICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCxcbiAgICAgICAg
ICAgICAgdHlwZTogJ3JlcGxhY2UgdGV4dCcsXG4gICAgICAgICAgICAgIHBheWxvYWQ6IHVwZGF0
ZS5jb250ZW50LnRvU3RyaW5nKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAg
ICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUkVNT1ZFX05PREUnOlxuICAgICAgICAgIHJlbW92
ZUNoaWxkKHBhcmVudE5vZGUsIHVwZGF0ZS5mcm9tTm9kZSk7XG4gICAgICAgICAgaWYgKGZhbHNl
KSB7XG4gICAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3Bl
cmF0aW9uKHtcbiAgICAgICAgICAgICAgaW5zdGFuY2VJRDogcGFyZW50Tm9kZURlYnVnSUQsXG4g
ICAgICAgICAgICAgIHR5cGU6ICdyZW1vdmUgY2hpbGQnLFxuICAgICAgICAgICAgICBwYXlsb2Fk
OiB7IGZyb21JbmRleDogdXBkYXRlLmZyb21JbmRleCB9XG4gICAgICAgICAgICB9KTtcbiAgICAg
ICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5tb2R1
bGUuZXhwb3J0cyA9IERPTUNoaWxkcmVuT3BlcmF0aW9ucztcblxuLyoqKi8gfSksXG4vKiAzOCAq
L1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5c
blxudmFyIERPTU5hbWVzcGFjZXMgPSB7XG4gIGh0bWw6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hodG1sJyxcbiAgbWF0aG1sOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCcs
XG4gIHN2ZzogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJ1xufTtcblxubW9kdWxlLmV4cG9y
dHMgPSBET01OYW1lc3BhY2VzO1xuXG4vKioqLyB9KSxcbi8qIDM5ICovXG4vKioqLyAoZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmlj
dFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbi8qIGdsb2JhbHMgTVNBcHAg
Ki9cblxuXG5cbi8qKlxuICogQ3JlYXRlIGEgZnVuY3Rpb24gd2hpY2ggaGFzICd1bnNhZmUnIHBy
aXZpbGVnZXMgKHJlcXVpcmVkIGJ5IHdpbmRvd3M4IGFwcHMpXG4gKi9cblxudmFyIGNyZWF0ZU1p
Y3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSBmdW5jdGlvbiAoZnVuYykge1xuICBpZiAodHlw
ZW9mIE1TQXBwICE9PSAndW5kZWZpbmVkJyAmJiBNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlv
bikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMykge1xuICAg
ICAgTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24gKCkge1xuICAgICAgICBy
ZXR1cm4gZnVuYyhhcmcwLCBhcmcxLCBhcmcyLCBhcmczKTtcbiAgICAgIH0pO1xuICAgIH07XG4g
IH0gZWxzZSB7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0g
Y3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbjtcblxuLyoqKi8gfSksXG4vKiA0MCAq
L1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5c
blxudmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxudmFyIFJl
YWN0UHJvcFR5cGVzU2VjcmV0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTEpO1xudmFyIHByb3BU
eXBlc0ZhY3RvcnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU2KTtcblxudmFyIFJlYWN0ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG52YXIgUHJvcFR5cGVzID0gcHJvcFR5cGVzRmFjdG9yeShS
ZWFjdC5pc1ZhbGlkRWxlbWVudCk7XG5cbnZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDApO1xudmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG52YXIgaGFz
UmVhZE9ubHlWYWx1ZSA9IHtcbiAgYnV0dG9uOiB0cnVlLFxuICBjaGVja2JveDogdHJ1ZSxcbiAg
aW1hZ2U6IHRydWUsXG4gIGhpZGRlbjogdHJ1ZSxcbiAgcmFkaW86IHRydWUsXG4gIHJlc2V0OiB0
cnVlLFxuICBzdWJtaXQ6IHRydWVcbn07XG5cbmZ1bmN0aW9uIF9hc3NlcnRTaW5nbGVMaW5rKGlu
cHV0UHJvcHMpIHtcbiAgIShpbnB1dFByb3BzLmNoZWNrZWRMaW5rID09IG51bGwgfHwgaW5wdXRQ
cm9wcy52YWx1ZUxpbmsgPT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5u
b3QgcHJvdmlkZSBhIGNoZWNrZWRMaW5rIGFuZCBhIHZhbHVlTGluay4gSWYgeW91IHdhbnQgdG8g
dXNlIGNoZWNrZWRMaW5rLCB5b3UgcHJvYmFibHkgZG9uXFwndCB3YW50IHRvIHVzZSB2YWx1ZUxp
bmsgYW5kIHZpY2UgdmVyc2EuJykgOiBfcHJvZEludmFyaWFudCgnODcnKSA6IHZvaWQgMDtcbn1c
bmZ1bmN0aW9uIF9hc3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9wcykge1xuICBfYXNzZXJ0U2luZ2xl
TGluayhpbnB1dFByb3BzKTtcbiAgIShpbnB1dFByb3BzLnZhbHVlID09IG51bGwgJiYgaW5wdXRQ
cm9wcy5vbkNoYW5nZSA9PSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5v
dCBwcm92aWRlIGEgdmFsdWVMaW5rIGFuZCBhIHZhbHVlIG9yIG9uQ2hhbmdlIGV2ZW50LiBJZiB5
b3Ugd2FudCB0byB1c2UgdmFsdWUgb3Igb25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25cXCd0IHdh
bnQgdG8gdXNlIHZhbHVlTGluay4nKSA6IF9wcm9kSW52YXJpYW50KCc4OCcpIDogdm9pZCAwO1xu
fVxuXG5mdW5jdGlvbiBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcykge1xuICBfYXNzZXJ0
U2luZ2xlTGluayhpbnB1dFByb3BzKTtcbiAgIShpbnB1dFByb3BzLmNoZWNrZWQgPT0gbnVsbCAm
JiBpbnB1dFByb3BzLm9uQ2hhbmdlID09IG51bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNl
LCAnQ2Fubm90IHByb3ZpZGUgYSBjaGVja2VkTGluayBhbmQgYSBjaGVja2VkIHByb3BlcnR5IG9y
IG9uQ2hhbmdlIGV2ZW50LiBJZiB5b3Ugd2FudCB0byB1c2UgY2hlY2tlZCBvciBvbkNoYW5nZSwg
eW91IHByb2JhYmx5IGRvblxcJ3Qgd2FudCB0byB1c2UgY2hlY2tlZExpbmsnKSA6IF9wcm9kSW52
YXJpYW50KCc4OScpIDogdm9pZCAwO1xufVxuXG52YXIgcHJvcFR5cGVzID0ge1xuICB2YWx1ZTog
ZnVuY3Rpb24gKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgIGlmICghcHJv
cHNbcHJvcE5hbWVdIHx8IGhhc1JlYWRPbmx5VmFsdWVbcHJvcHMudHlwZV0gfHwgcHJvcHMub25D
aGFuZ2UgfHwgcHJvcHMucmVhZE9ubHkgfHwgcHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVy
biBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEVycm9yKCdZb3UgcHJvdmlkZWQgYSBgdmFs
dWVgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gJyArICdgb25DaGFuZ2VgIGhhbmRs
ZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmICcgKyAndGhlIGZpZWxk
IHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdFZhbHVlYC4gT3RoZXJ3aXNlLCAnICsgJ3Nl
dCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLicpO1xuICB9LFxuICBjaGVja2VkOiBm
dW5jdGlvbiAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gICAgaWYgKCFwcm9w
c1twcm9wTmFtZV0gfHwgcHJvcHMub25DaGFuZ2UgfHwgcHJvcHMucmVhZE9ubHkgfHwgcHJvcHMu
ZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEVy
cm9yKCdZb3UgcHJvdmlkZWQgYSBgY2hlY2tlZGAgcHJvcCB0byBhIGZvcm0gZmllbGQgd2l0aG91
dCBhbiAnICsgJ2BvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25s
eSBmaWVsZC4gSWYgJyArICd0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0
Q2hlY2tlZGAuIE90aGVyd2lzZSwgJyArICdzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRP
bmx5YC4nKTtcbiAgfSxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG52YXIgbG9n
Z2VkVHlwZUZhaWx1cmVzID0ge307XG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5k
dW0ob3duZXIpIHtcbiAgaWYgKG93bmVyKSB7XG4gICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1l
KCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0
aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxu
LyoqXG4gKiBQcm92aWRlIGEgbGlua2VkIGB2YWx1ZWAgYXR0cmlidXRlIGZvciBjb250cm9sbGVk
IGZvcm1zLiBZb3Ugc2hvdWxkIG5vdCB1c2VcbiAqIHRoaXMgb3V0c2lkZSBvZiB0aGUgUmVhY3RE
T00gY29udHJvbGxlZCBmb3JtIGNvbXBvbmVudHMuXG4gKi9cbnZhciBMaW5rZWRWYWx1ZVV0aWxz
ID0ge1xuICBjaGVja1Byb3BUeXBlczogZnVuY3Rpb24gKHRhZ05hbWUsIHByb3BzLCBvd25lcikg
e1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BUeXBlcykge1xuICAgICAgaWYgKHByb3BU
eXBlcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgdmFyIGVycm9yID0gcHJv
cFR5cGVzW3Byb3BOYW1lXShwcm9wcywgcHJvcE5hbWUsIHRhZ05hbWUsICdwcm9wJywgbnVsbCwg
UmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yIGluc3RhbmNl
b2YgRXJyb3IgJiYgIShlcnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHtcbiAg
ICAgICAgLy8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVu
ZHMgdG8gYmUgYSBsb3Qgb2YgdGhlXG4gICAgICAgIC8vIHNhbWUgZXJyb3IuXG4gICAgICAgIGxv
Z2dlZFR5cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9IHRydWU7XG5cbiAgICAgICAgdmFyIGFk
ZGVuZHVtID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKTtcbiAgICAgICAgIGZh
bHNlID8gd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCBmb3JtIHByb3BUeXBlOiAlcyVzJywgZXJyb3Iu
bWVzc2FnZSwgYWRkZW5kdW0pIDogdm9pZCAwO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAv
KipcbiAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9yIGZvcm0gY29tcG9u
ZW50XG4gICAqIEByZXR1cm4geyp9IGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlucHV0IGVpdGhlciBm
cm9tIHZhbHVlIHByb3Agb3IgbGluay5cbiAgICovXG4gIGdldFZhbHVlOiBmdW5jdGlvbiAoaW5w
dXRQcm9wcykge1xuICAgIGlmIChpbnB1dFByb3BzLnZhbHVlTGluaykge1xuICAgICAgX2Fzc2Vy
dFZhbHVlTGluayhpbnB1dFByb3BzKTtcbiAgICAgIHJldHVybiBpbnB1dFByb3BzLnZhbHVlTGlu
ay52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWU7XG4gIH0sXG5cbiAg
LyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBv
bmVudFxuICAgKiBAcmV0dXJuIHsqfSBjdXJyZW50IGNoZWNrZWQgc3RhdHVzIG9mIHRoZSBpbnB1
dCBlaXRoZXIgZnJvbSBjaGVja2VkIHByb3BcbiAgICogICAgICAgICAgICAgb3IgbGluay5cbiAg
ICovXG4gIGdldENoZWNrZWQ6IGZ1bmN0aW9uIChpbnB1dFByb3BzKSB7XG4gICAgaWYgKGlucHV0
UHJvcHMuY2hlY2tlZExpbmspIHtcbiAgICAgIF9hc3NlcnRDaGVja2VkTGluayhpbnB1dFByb3Bz
KTtcbiAgICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWRMaW5rLnZhbHVlO1xuICAgIH1cbiAg
ICByZXR1cm4gaW5wdXRQcm9wcy5jaGVja2VkO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0g
e29iamVjdH0gaW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21wb25lbnRcbiAgICogQHBhcmFt
IHtTeW50aGV0aWNFdmVudH0gZXZlbnQgY2hhbmdlIGV2ZW50IHRvIGhhbmRsZVxuICAgKi9cbiAg
ZXhlY3V0ZU9uQ2hhbmdlOiBmdW5jdGlvbiAoaW5wdXRQcm9wcywgZXZlbnQpIHtcbiAgICBpZiAo
aW5wdXRQcm9wcy52YWx1ZUxpbmspIHtcbiAgICAgIF9hc3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9w
cyk7XG4gICAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZUxpbmsucmVxdWVzdENoYW5nZShldmVu
dC50YXJnZXQudmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRQcm9wcy5jaGVja2VkTGluaykg
e1xuICAgICAgX2Fzc2VydENoZWNrZWRMaW5rKGlucHV0UHJvcHMpO1xuICAgICAgcmV0dXJuIGlu
cHV0UHJvcHMuY2hlY2tlZExpbmsucmVxdWVzdENoYW5nZShldmVudC50YXJnZXQuY2hlY2tlZCk7
XG4gICAgfSBlbHNlIGlmIChpbnB1dFByb3BzLm9uQ2hhbmdlKSB7XG4gICAgICByZXR1cm4gaW5w
dXRQcm9wcy5vbkNoYW5nZS5jYWxsKHVuZGVmaW5lZCwgZXZlbnQpO1xuICAgIH1cbiAgfVxufTtc
blxubW9kdWxlLmV4cG9ydHMgPSBMaW5rZWRWYWx1ZVV0aWxzO1xuXG4vKioqLyB9KSxcbi8qIDQx
ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4g
Ki9cblxuXG5cbnZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5c
bnZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG52YXIgaW5qZWN0ZWQg
PSBmYWxzZTtcblxudmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSB7XG4gIC8qKlxuICAg
KiBPcHRpb25hbGx5IGluamVjdGFibGUgaG9vayBmb3Igc3dhcHBpbmcgb3V0IG1vdW50IGltYWdl
cyBpbiB0aGUgbWlkZGxlIG9mXG4gICAqIHRoZSB0cmVlLlxuICAgKi9cbiAgcmVwbGFjZU5vZGVX
aXRoTWFya3VwOiBudWxsLFxuXG4gIC8qKlxuICAgKiBPcHRpb25hbGx5IGluamVjdGFibGUgaG9v
ayBmb3IgcHJvY2Vzc2luZyBhIHF1ZXVlIG9mIGNoaWxkIHVwZGF0ZXMuIFdpbGxcbiAgICogbGF0
ZXIgbW92ZSBpbnRvIE11bHRpQ2hpbGRDb21wb25lbnRzLlxuICAgKi9cbiAgcHJvY2Vzc0NoaWxk
cmVuVXBkYXRlczogbnVsbCxcblxuICBpbmplY3Rpb246IHtcbiAgICBpbmplY3RFbnZpcm9ubWVu
dDogZnVuY3Rpb24gKGVudmlyb25tZW50KSB7XG4gICAgICAhIWluamVjdGVkID8gIGZhbHNlID8g
aW52YXJpYW50KGZhbHNlLCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQ6IGluamVjdEVudmlyb25t
ZW50KCkgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuJykgOiBfcHJvZEludmFyaWFudCgnMTA0Jykg
OiB2b2lkIDA7XG4gICAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0
aE1hcmt1cCA9IGVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cDtcbiAgICAgIFJlYWN0
Q29tcG9uZW50RW52aXJvbm1lbnQucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyA9IGVudmlyb25tZW50
LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXM7XG4gICAgICBpbmplY3RlZCA9IHRydWU7XG4gICAgfVxu
ICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQ7XG5c
bi8qKiovIH0pLFxuLyogNDIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdo
dCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqIFxuICovXG5cbi8qZXNsaW50LWRpc2Fi
bGUgbm8tc2VsZi1jb21wYXJlICovXG5cblxuXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3Qu
cHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIGlubGluZWQgT2JqZWN0LmlzIHBv
bHlmaWxsIHRvIGF2b2lkIHJlcXVpcmluZyBjb25zdW1lcnMgc2hpcCB0aGVpciBvd25cbiAqIGh0
dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVm
ZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9pc1xuICovXG5mdW5jdGlvbiBpcyh4LCB5KSB7
XG4gIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1cbiAgaWYgKHggPT09IHkpIHtcbiAgICAvLyBTdGVw
cyAxLTUsIDctMTBcbiAgICAvLyBTdGVwcyA2LmItNi5lOiArMCAhPSAtMFxuICAgIC8vIEFkZGVk
IHRoZSBub256ZXJvIHkgY2hlY2sgdG8gbWFrZSBGbG93IGhhcHB5LCBidXQgaXQgaXMgcmVkdW5k
YW50XG4gICAgcmV0dXJuIHggIT09IDAgfHwgeSAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHk7XG4g
IH0gZWxzZSB7XG4gICAgLy8gU3RlcCA2LmE6IE5hTiA9PSBOYU5cbiAgICByZXR1cm4geCAhPT0g
eCAmJiB5ICE9PSB5O1xuICB9XG59XG5cbi8qKlxuICogUGVyZm9ybXMgZXF1YWxpdHkgYnkgaXRl
cmF0aW5nIHRocm91Z2gga2V5cyBvbiBhbiBvYmplY3QgYW5kIHJldHVybmluZyBmYWxzZVxuICog
d2hlbiBhbnkga2V5IGhhcyB2YWx1ZXMgd2hpY2ggYXJlIG5vdCBzdHJpY3RseSBlcXVhbCBiZXR3
ZWVuIHRoZSBhcmd1bWVudHMuXG4gKiBSZXR1cm5zIHRydWUgd2hlbiB0aGUgdmFsdWVzIG9mIGFs
bCBrZXlzIGFyZSBzdHJpY3RseSBlcXVhbC5cbiAqL1xuZnVuY3Rpb24gc2hhbGxvd0VxdWFsKG9i
akEsIG9iakIpIHtcbiAgaWYgKGlzKG9iakEsIG9iakIpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4g
IH1cblxuICBpZiAodHlwZW9mIG9iakEgIT09ICdvYmplY3QnIHx8IG9iakEgPT09IG51bGwgfHwg
dHlwZW9mIG9iakIgIT09ICdvYmplY3QnIHx8IG9iakIgPT09IG51bGwpIHtcbiAgICByZXR1cm4g
ZmFsc2U7XG4gIH1cblxuICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhvYmpBKTtcbiAgdmFyIGtl
eXNCID0gT2JqZWN0LmtleXMob2JqQik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0Iu
bGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gVGVzdCBmb3IgQSdzIGtl
eXMgZGlmZmVyZW50IGZyb20gQi5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzQS5sZW5ndGg7
IGkrKykge1xuICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChvYmpCLCBrZXlzQVtpXSkgfHwg
IWlzKG9iakFba2V5c0FbaV1dLCBvYmpCW2tleXNBW2ldXSkpIHtcbiAgICAgIHJldHVybiBmYWxz
ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBz
aGFsbG93RXF1YWw7XG5cbi8qKiovIH0pLFxuLyogNDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4v
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbi8qKlxuICogR2l2ZW4gYSBgcHJl
dkVsZW1lbnRgIGFuZCBgbmV4dEVsZW1lbnRgLCBkZXRlcm1pbmVzIGlmIHRoZSBleGlzdGluZ1xu
ICogaW5zdGFuY2Ugc2hvdWxkIGJlIHVwZGF0ZWQgYXMgb3Bwb3NlZCB0byBiZWluZyBkZXN0cm95
ZWQgb3IgcmVwbGFjZWQgYnkgYSBuZXdcbiAqIGluc3RhbmNlLiBCb3RoIGFyZ3VtZW50cyBhcmUg
ZWxlbWVudHMuIFRoaXMgZW5zdXJlcyB0aGF0IHRoaXMgbG9naWMgY2FuXG4gKiBvcGVyYXRlIG9u
IHN0YXRlbGVzcyB0cmVlcyB3aXRob3V0IGFueSBiYWNraW5nIGluc3RhbmNlLlxuICpcbiAqIEBw
YXJhbSB7P29iamVjdH0gcHJldkVsZW1lbnRcbiAqIEBwYXJhbSB7P29iamVjdH0gbmV4dEVsZW1l
bnRcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGV4aXN0aW5nIGluc3RhbmNlIHNo
b3VsZCBiZSB1cGRhdGVkLlxuICogQHByb3RlY3RlZFxuICovXG5cbmZ1bmN0aW9uIHNob3VsZFVw
ZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkge1xuICB2YXIgcHJl
dkVtcHR5ID0gcHJldkVsZW1lbnQgPT09IG51bGwgfHwgcHJldkVsZW1lbnQgPT09IGZhbHNlO1xu
ICB2YXIgbmV4dEVtcHR5ID0gbmV4dEVsZW1lbnQgPT09IG51bGwgfHwgbmV4dEVsZW1lbnQgPT09
IGZhbHNlO1xuICBpZiAocHJldkVtcHR5IHx8IG5leHRFbXB0eSkge1xuICAgIHJldHVybiBwcmV2
RW1wdHkgPT09IG5leHRFbXB0eTtcbiAgfVxuXG4gIHZhciBwcmV2VHlwZSA9IHR5cGVvZiBwcmV2
RWxlbWVudDtcbiAgdmFyIG5leHRUeXBlID0gdHlwZW9mIG5leHRFbGVtZW50O1xuICBpZiAocHJl
dlR5cGUgPT09ICdzdHJpbmcnIHx8IHByZXZUeXBlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVy
biBuZXh0VHlwZSA9PT0gJ3N0cmluZycgfHwgbmV4dFR5cGUgPT09ICdudW1iZXInO1xuICB9IGVs
c2Uge1xuICAgIHJldHVybiBuZXh0VHlwZSA9PT0gJ29iamVjdCcgJiYgcHJldkVsZW1lbnQudHlw
ZSA9PT0gbmV4dEVsZW1lbnQudHlwZSAmJiBwcmV2RWxlbWVudC5rZXkgPT09IG5leHRFbGVtZW50
LmtleTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9u
ZW50O1xuXG4vKioqLyB9KSxcbi8qIDQ0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuXG5cbi8qKlxuICogRXNjYXBlIGFuZCB3cmFw
IGtleSBzbyBpdCBpcyBzYWZlIHRvIHVzZSBhcyBhIHJlYWN0aWRcbiAqXG4gKiBAcGFyYW0ge3N0
cmluZ30ga2V5IHRvIGJlIGVzY2FwZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSBlc2NhcGVk
IGtleS5cbiAqL1xuXG5mdW5jdGlvbiBlc2NhcGUoa2V5KSB7XG4gIHZhciBlc2NhcGVSZWdleCA9
IC9bPTpdL2c7XG4gIHZhciBlc2NhcGVyTG9va3VwID0ge1xuICAgICc9JzogJz0wJyxcbiAgICAn
Oic6ICc9MidcbiAgfTtcbiAgdmFyIGVzY2FwZWRTdHJpbmcgPSAoJycgKyBrZXkpLnJlcGxhY2Uo
ZXNjYXBlUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHJldHVybiBlc2NhcGVyTG9va3Vw
W21hdGNoXTtcbiAgfSk7XG5cbiAgcmV0dXJuICckJyArIGVzY2FwZWRTdHJpbmc7XG59XG5cbi8q
KlxuICogVW5lc2NhcGUgYW5kIHVud3JhcCBrZXkgZm9yIGh1bWFuLXJlYWRhYmxlIGRpc3BsYXlc
biAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIHVuZXNjYXBlLlxuICogQHJldHVybiB7c3Ry
aW5nfSB0aGUgdW5lc2NhcGVkIGtleS5cbiAqL1xuZnVuY3Rpb24gdW5lc2NhcGUoa2V5KSB7XG4g
IHZhciB1bmVzY2FwZVJlZ2V4ID0gLyg9MHw9MikvZztcbiAgdmFyIHVuZXNjYXBlckxvb2t1cCA9
IHtcbiAgICAnPTAnOiAnPScsXG4gICAgJz0yJzogJzonXG4gIH07XG4gIHZhciBrZXlTdWJzdHJp
bmcgPSBrZXlbMF0gPT09ICcuJyAmJiBrZXlbMV0gPT09ICckJyA/IGtleS5zdWJzdHJpbmcoMikg
OiBrZXkuc3Vic3RyaW5nKDEpO1xuXG4gIHJldHVybiAoJycgKyBrZXlTdWJzdHJpbmcpLnJlcGxh
Y2UodW5lc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgcmV0dXJuIHVuZXNjYXBl
ckxvb2t1cFttYXRjaF07XG4gIH0pO1xufVxuXG52YXIgS2V5RXNjYXBlVXRpbHMgPSB7XG4gIGVz
Y2FwZTogZXNjYXBlLFxuICB1bmVzY2FwZTogdW5lc2NhcGVcbn07XG5cbm1vZHVsZS5leHBvcnRz
ID0gS2V5RXNjYXBlVXRpbHM7XG5cbi8qKiovIH0pLFxuLyogNDUgKi9cbi8qKiovIChmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0
XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBfcHJvZEludmFy
aWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9
IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDIyKTtcbnZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9fd2VicGFja19y
ZXF1aXJlX18oNyk7XG52YXIgUmVhY3RVcGRhdGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtc
blxudmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG52YXIgd2FybmluZyA9
IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cbmZ1bmN0aW9uIGVucXVldWVVcGRhdGUoaW50ZXJu
YWxJbnN0YW5jZSkge1xuICBSZWFjdFVwZGF0ZXMuZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3Rh
bmNlKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VW5leHBlY3RlZEFyZ3VtZW50KGFyZykge1xuICB2
YXIgdHlwZSA9IHR5cGVvZiBhcmc7XG4gIGlmICh0eXBlICE9PSAnb2JqZWN0Jykge1xuICAgIHJl
dHVybiB0eXBlO1xuICB9XG4gIHZhciBkaXNwbGF5TmFtZSA9IGFyZy5jb25zdHJ1Y3RvciAmJiBh
cmcuY29uc3RydWN0b3IubmFtZSB8fCB0eXBlO1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGFy
Zyk7XG4gIGlmIChrZXlzLmxlbmd0aCA+IDAgJiYga2V5cy5sZW5ndGggPCAyMCkge1xuICAgIHJl
dHVybiBkaXNwbGF5TmFtZSArICcgKGtleXM6ICcgKyBrZXlzLmpvaW4oJywgJykgKyAnKSc7XG4g
IH1cbiAgcmV0dXJuIGRpc3BsYXlOYW1lO1xufVxuXG5mdW5jdGlvbiBnZXRJbnRlcm5hbEluc3Rh
bmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsIGNhbGxlck5hbWUpIHtcbiAgdmFyIGlu
dGVybmFsSW5zdGFuY2UgPSBSZWFjdEluc3RhbmNlTWFwLmdldChwdWJsaWNJbnN0YW5jZSk7XG4g
IGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgdmFyIGN0
b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3RvcjtcbiAgICAgIC8vIE9ubHkgd2FybiB3aGVu
IHdlIGhhdmUgYSBjYWxsZXJOYW1lLiBPdGhlcndpc2Ugd2Ugc2hvdWxkIGJlIHNpbGVudC5cbiAg
ICAgIC8vIFdlJ3JlIHByb2JhYmx5IGNhbGxpbmcgZnJvbSBlbnF1ZXVlQ2FsbGJhY2suIFdlIGRv
bid0IHdhbnQgdG8gd2FyblxuICAgICAgLy8gdGhlcmUgYmVjYXVzZSB3ZSBhbHJlYWR5IHdhcm5l
ZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgbGlmZWN5Y2xlIG1ldGhvZC5cbiAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjYWxsZXJOYW1lLCAnJXMo
Li4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRlZCBvciBtb3VudGluZyBjb21wb25lbnQuICcg
KyAnVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxsZWQgJXMoKSBvbiBhbiB1bm1vdW50ZWQgY29t
cG9uZW50LiAnICsgJ1RoaXMgaXMgYSBuby1vcC4gUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0
aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIGN0b3IgJiYgKGN0b3Iu
ZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSB8fCAnUmVhY3RDbGFzcycpIDogdm9pZCAwO1xuICAg
IH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChmYWxzZSkge1xuICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVy
LmN1cnJlbnQgPT0gbnVsbCwgJyVzKC4uLik6IENhbm5vdCB1cGRhdGUgZHVyaW5nIGFuIGV4aXN0
aW5nIHN0YXRlIHRyYW5zaXRpb24gKHN1Y2ggYXMgJyArIFwid2l0aGluIGByZW5kZXJgIG9yIGFu
b3RoZXIgY29tcG9uZW50J3MgY29uc3RydWN0b3IpLiBSZW5kZXIgbWV0aG9kcyBcIiArICdzaG91
bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3BzIGFuZCBzdGF0ZTsgY29uc3RydWN0b3IgJyAr
ICdzaWRlLWVmZmVjdHMgYXJlIGFuIGFudGktcGF0dGVybiwgYnV0IGNhbiBiZSBtb3ZlZCB0byAn
ICsgJ2Bjb21wb25lbnRXaWxsTW91bnRgLicsIGNhbGxlck5hbWUpIDogdm9pZCAwO1xuICB9XG5c
biAgcmV0dXJuIGludGVybmFsSW5zdGFuY2U7XG59XG5cbi8qKlxuICogUmVhY3RVcGRhdGVRdWV1
ZSBhbGxvd3MgZm9yIHN0YXRlIHVwZGF0ZXMgdG8gYmUgc2NoZWR1bGVkIGludG8gYSBsYXRlclxu
ICogcmVjb25jaWxpYXRpb24gc3RlcC5cbiAqL1xudmFyIFJlYWN0VXBkYXRlUXVldWUgPSB7XG4g
IC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50
IGlzIG1vdW50ZWQuXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhl
IGluc3RhbmNlIHdlIHdhbnQgdG8gdGVzdC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBp
ZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQGZpbmFs
XG4gICAqL1xuICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuICAgIGlm
IChmYWxzZSkge1xuICAgICAgdmFyIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtc
biAgICAgIGlmIChvd25lciAhPT0gbnVsbCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5k
ZXIsICclcyBpcyBhY2Nlc3NpbmcgaXNNb3VudGVkIGluc2lkZSBpdHMgcmVuZGVyKCkgZnVuY3Rp
b24uICcgKyAncmVuZGVyKCkgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQg
c3RhdGUuIEl0IHNob3VsZCAnICsgJ25ldmVyIGFjY2VzcyBzb21ldGhpbmcgdGhhdCByZXF1aXJl
cyBzdGFsZSBkYXRhIGZyb20gdGhlIHByZXZpb3VzICcgKyAncmVuZGVyLCBzdWNoIGFzIHJlZnMu
IE1vdmUgdGhpcyBsb2dpYyB0byBjb21wb25lbnREaWRNb3VudCBhbmQgJyArICdjb21wb25lbnRE
aWRVcGRhdGUgaW5zdGVhZC4nLCBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2
b2lkIDA7XG4gICAgICAgIG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IHRydWU7XG4g
ICAgICB9XG4gICAgfVxuICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVhY3RJbnN0YW5jZU1h
cC5nZXQocHVibGljSW5zdGFuY2UpO1xuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAg
ICAvLyBEdXJpbmcgY29tcG9uZW50V2lsbE1vdW50IGFuZCByZW5kZXIgdGhpcyB3aWxsIHN0aWxs
IGJlIG51bGwgYnV0IGFmdGVyXG4gICAgICAvLyB0aGF0IHdpbGwgYWx3YXlzIHJlbmRlciB0byBz
b21ldGhpbmcuIEF0IGxlYXN0IGZvciBub3cuIFNvIHdlIGNhbiB1c2VcbiAgICAgIC8vIHRoaXMg
aGFjay5cbiAgICAgIHJldHVybiAhIWludGVybmFsSW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50
O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LFxuXG4gIC8q
KlxuICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFs
bCB0aGUgcGVuZGluZyB1cGRhdGVzXG4gICAqIGhhdmUgcHJvY2Vzc2VkLlxuICAgKlxuICAgKiBA
cGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0byB1c2UgYXMg
YHRoaXNgIGNvbnRleHQuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQg
YWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNhbGxlck5hbWUg
TmFtZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlvbiBpbiB0aGUgcHVibGljIEFQSS5cbiAgICogQGlu
dGVybmFsXG4gICAqL1xuICBlbnF1ZXVlQ2FsbGJhY2s6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5j
ZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUpIHtcbiAgICBSZWFjdFVwZGF0ZVF1ZXVlLnZhbGlkYXRl
Q2FsbGJhY2soY2FsbGJhY2ssIGNhbGxlck5hbWUpO1xuICAgIHZhciBpbnRlcm5hbEluc3RhbmNl
ID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlKTtcblxu
ICAgIC8vIFByZXZpb3VzbHkgd2Ugd291bGQgdGhyb3cgYW4gZXJyb3IgaWYgd2UgZGlkbid0IGhh
dmUgYW4gaW50ZXJuYWxcbiAgICAvLyBpbnN0YW5jZS4gU2luY2Ugd2Ugd2FudCB0byBtYWtlIGl0
IGEgbm8tb3AgaW5zdGVhZCwgd2UgbWlycm9yIHRoZSBzYW1lXG4gICAgLy8gYmVoYXZpb3Igd2Ug
aGF2ZSBpbiBvdGhlciBlbnF1ZXVlKiBtZXRob2RzLlxuICAgIC8vIFdlIGFsc28gbmVlZCB0byBp
Z25vcmUgY2FsbGJhY2tzIGluIGNvbXBvbmVudFdpbGxNb3VudC4gU2VlXG4gICAgLy8gZW5xdWV1
ZVVwZGF0ZXMuXG4gICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgICByZXR1cm4gbnVs
bDtcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcykg
e1xuICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKGNhbGxiYWNr
KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNr
cyA9IFtjYWxsYmFja107XG4gICAgfVxuICAgIC8vIFRPRE86IFRoZSBjYWxsYmFjayBoZXJlIGlz
IGlnbm9yZWQgd2hlbiBzZXRTdGF0ZSBpcyBjYWxsZWQgZnJvbVxuICAgIC8vIGNvbXBvbmVudFdp
bGxNb3VudC4gRWl0aGVyIGZpeCBpdCBvciBkaXNhbGxvdyBkb2luZyBzbyBjb21wbGV0ZWx5IGlu
XG4gICAgLy8gZmF2b3Igb2YgZ2V0SW5pdGlhbFN0YXRlLiBBbHRlcm5hdGl2ZWx5LCB3ZSBjYW4g
ZGlzYWxsb3dcbiAgICAvLyBjb21wb25lbnRXaWxsTW91bnQgZHVyaW5nIHNlcnZlci1zaWRlIHJl
bmRlcmluZy5cbiAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4g
IGVucXVldWVDYWxsYmFja0ludGVybmFsOiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgY2Fs
bGJhY2spIHtcbiAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcykge1xu
ICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtc
biAgICB9IGVsc2Uge1xuICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcyA9
IFtjYWxsYmFja107XG4gICAgfVxuICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7
XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9ubHkg
YmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcbiAgICogY2VydGFpbnR5IHRoYXQgd2Ug
YXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFlvdSBtYXkgd2Fu
dCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBvZiB0
aGVcbiAgICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2Fz
IG5vdCBjYWxsZWQuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21w
b25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2VcbiAgICogYGNvbXBvbmVudFdpbGxVcGRh
dGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENs
YXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4g
ICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAocHVi
bGljSW5zdGFuY2UpIHtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5z
dGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7XG5cbiAg
ICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBp
bnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSB0cnVlO1xuXG4gICAgZW5xdWV1
ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVwbGFjZXMg
YWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0YXRl
IHN0YXRlLlxuICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUu
XG4gICAqXG4gICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxs
IGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAg
YWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG4gICAq
XG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRo
YXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcGxldGVTdGF0ZSBO
ZXh0IHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVSZXBsYWNlU3RhdGU6
IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSwgY2FsbGJhY2spIHtcbiAg
ICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0
ZShwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpO1xuXG4gICAgaWYgKCFpbnRlcm5hbElu
c3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW50ZXJuYWxJbnN0YW5jZS5f
cGVuZGluZ1N0YXRlUXVldWUgPSBbY29tcGxldGVTdGF0ZV07XG4gICAgaW50ZXJuYWxJbnN0YW5j
ZS5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IHRydWU7XG5cbiAgICAvLyBGdXR1cmUtcHJvb2YgMTUu
NVxuICAgIGlmIChjYWxsYmFjayAhPT0gdW5kZWZpbmVkICYmIGNhbGxiYWNrICE9PSBudWxsKSB7
XG4gICAgICBSZWFjdFVwZGF0ZVF1ZXVlLnZhbGlkYXRlQ2FsbGJhY2soY2FsbGJhY2ssICdyZXBs
YWNlU3RhdGUnKTtcbiAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tz
KSB7XG4gICAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaChjYWxs
YmFjayk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5n
Q2FsbGJhY2tzID0gW2NhbGxiYWNrXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbnF1ZXVlVXBk
YXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIGEgc3Vic2V0
IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXNc
biAgICogaW50ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMg
bm90IGF2YWlsYWJsZSB0byBkZWVwXG4gICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5n
LiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxuICAgKiBkdXJpbmcg
dGhlIG1lcmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNl
IFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9
IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUu
XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAocHVi
bGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkge1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0U3RhdGUoKTtcbiAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHBhcnRpYWxTdGF0ZSAhPSBu
dWxsLCAnc2V0U3RhdGUoLi4uKTogWW91IHBhc3NlZCBhbiB1bmRlZmluZWQgb3IgbnVsbCBzdGF0
ZSBvYmplY3Q7ICcgKyAnaW5zdGVhZCwgdXNlIGZvcmNlVXBkYXRlKCkuJykgOiB2b2lkIDA7XG4g
ICAgfVxuXG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVh
ZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpO1xuXG4gICAgaWYgKCFpbnRl
cm5hbEluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHF1ZXVlID0g
aW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUgfHwgKGludGVybmFsSW5zdGFuY2Uu
X3BlbmRpbmdTdGF0ZVF1ZXVlID0gW10pO1xuICAgIHF1ZXVlLnB1c2gocGFydGlhbFN0YXRlKTtc
blxuICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG4gIH0sXG5cbiAgZW5xdWV1
ZUVsZW1lbnRJbnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIG5leHRFbGVtZW50
LCBuZXh0Q29udGV4dCkge1xuICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdFbGVtZW50ID0g
bmV4dEVsZW1lbnQ7XG4gICAgLy8gVE9ETzogaW50cm9kdWNlIF9wZW5kaW5nQ29udGV4dCBpbnN0
ZWFkIG9mIHNldHRpbmcgaXQgZGlyZWN0bHkuXG4gICAgaW50ZXJuYWxJbnN0YW5jZS5fY29udGV4
dCA9IG5leHRDb250ZXh0O1xuICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG4g
IH0sXG5cbiAgdmFsaWRhdGVDYWxsYmFjazogZnVuY3Rpb24gKGNhbGxiYWNrLCBjYWxsZXJOYW1l
KSB7XG4gICAgISghY2FsbGJhY2sgfHwgdHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSA/
ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJyVzKC4uLik6IEV4cGVjdGVkIHRoZSBsYXN0IG9w
dGlvbmFsIGBjYWxsYmFja2AgYXJndW1lbnQgdG8gYmUgYSBmdW5jdGlvbi4gSW5zdGVhZCByZWNl
aXZlZDogJXMuJywgY2FsbGVyTmFtZSwgZm9ybWF0VW5leHBlY3RlZEFyZ3VtZW50KGNhbGxiYWNr
KSkgOiBfcHJvZEludmFyaWFudCgnMTIyJywgY2FsbGVyTmFtZSwgZm9ybWF0VW5leHBlY3RlZEFy
Z3VtZW50KGNhbGxiYWNrKSkgOiB2b2lkIDA7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0g
UmVhY3RVcGRhdGVRdWV1ZTtcblxuLyoqKi8gfSksXG4vKiA0NiAqL1xuLyoqKi8gKGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3Rc
Ijtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIF9hc3NpZ24gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19y
ZXF1aXJlX18oNik7XG52YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cbnZh
ciB2YWxpZGF0ZURPTU5lc3RpbmcgPSBlbXB0eUZ1bmN0aW9uO1xuXG5pZiAoZmFsc2UpIHtcbiAg
Ly8gVGhpcyB2YWxpZGF0aW9uIGNvZGUgd2FzIHdyaXR0ZW4gYmFzZWQgb24gdGhlIEhUTUw1IHBh
cnNpbmcgc3BlYzpcbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
c3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4tc2NvcGVcbiAgLy9cbiAgLy8gTm90ZTogdGhp
cyBkb2VzIG5vdCBjYXRjaCBhbGwgaW52YWxpZCBuZXN0aW5nLCBub3IgZG9lcyBpdCB0cnkgdG8g
KGFzIGl0J3NcbiAgLy8gbm90IGNsZWFyIHdoYXQgcHJhY3RpY2FsIGJlbmVmaXQgZG9pbmcgc28g
cHJvdmlkZXMpOyBpbnN0ZWFkLCB3ZSB3YXJuIG9ubHlcbiAgLy8gZm9yIGNhc2VzIHdoZXJlIHRo
ZSBwYXJzZXIgd2lsbCBnaXZlIGEgcGFyc2UgdHJlZSBkaWZmZXJpbmcgZnJvbSB3aGF0IFJlYWN0
XG4gIC8vIGludGVuZGVkLiBGb3IgZXhhbXBsZSwgPGI+PGRpdj48L2Rpdj48L2I+IGlzIGludmFs
aWQgYnV0IHdlIGRvbid0IHdhcm5cbiAgLy8gYmVjYXVzZSBpdCBzdGlsbCBwYXJzZXMgY29ycmVj
dGx5OyB3ZSBkbyB3YXJuIGZvciBvdGhlciBjYXNlcyBsaWtlIG5lc3RlZFxuICAvLyA8cD4gdGFn
cyB3aGVyZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWNvbmQgZWxlbWVudCBpbXBsaWNpdGx5IGNs
b3NlcyB0aGVcbiAgLy8gZmlyc3QsIGNhdXNpbmcgYSBjb25mdXNpbmcgbWVzcy5cblxuICAvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNzcGVjaWFs
XG4gIHZhciBzcGVjaWFsVGFncyA9IFsnYWRkcmVzcycsICdhcHBsZXQnLCAnYXJlYScsICdhcnRp
Y2xlJywgJ2FzaWRlJywgJ2Jhc2UnLCAnYmFzZWZvbnQnLCAnYmdzb3VuZCcsICdibG9ja3F1b3Rl
JywgJ2JvZHknLCAnYnInLCAnYnV0dG9uJywgJ2NhcHRpb24nLCAnY2VudGVyJywgJ2NvbCcsICdj
b2xncm91cCcsICdkZCcsICdkZXRhaWxzJywgJ2RpcicsICdkaXYnLCAnZGwnLCAnZHQnLCAnZW1i
ZWQnLCAnZmllbGRzZXQnLCAnZmlnY2FwdGlvbicsICdmaWd1cmUnLCAnZm9vdGVyJywgJ2Zvcm0n
LCAnZnJhbWUnLCAnZnJhbWVzZXQnLCAnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYn
LCAnaGVhZCcsICdoZWFkZXInLCAnaGdyb3VwJywgJ2hyJywgJ2h0bWwnLCAnaWZyYW1lJywgJ2lt
ZycsICdpbnB1dCcsICdpc2luZGV4JywgJ2xpJywgJ2xpbmsnLCAnbGlzdGluZycsICdtYWluJywg
J21hcnF1ZWUnLCAnbWVudScsICdtZW51aXRlbScsICdtZXRhJywgJ25hdicsICdub2VtYmVkJywg
J25vZnJhbWVzJywgJ25vc2NyaXB0JywgJ29iamVjdCcsICdvbCcsICdwJywgJ3BhcmFtJywgJ3Bs
YWludGV4dCcsICdwcmUnLCAnc2NyaXB0JywgJ3NlY3Rpb24nLCAnc2VsZWN0JywgJ3NvdXJjZScs
ICdzdHlsZScsICdzdW1tYXJ5JywgJ3RhYmxlJywgJ3Rib2R5JywgJ3RkJywgJ3RlbXBsYXRlJywg
J3RleHRhcmVhJywgJ3Rmb290JywgJ3RoJywgJ3RoZWFkJywgJ3RpdGxlJywgJ3RyJywgJ3RyYWNr
JywgJ3VsJywgJ3dicicsICd4bXAnXTtcblxuICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNoYXMtYW4tZWxlbWVudC1pbi1zY29wZVxuICB2YXIg
aW5TY29wZVRhZ3MgPSBbJ2FwcGxldCcsICdjYXB0aW9uJywgJ2h0bWwnLCAndGFibGUnLCAndGQn
LCAndGgnLCAnbWFycXVlZScsICdvYmplY3QnLCAndGVtcGxhdGUnLFxuXG4gIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2h0bWwtaW50ZWdyYXRp
b24tcG9pbnRcbiAgLy8gVE9ETzogRGlzdGluZ3Vpc2ggYnkgbmFtZXNwYWNlIGhlcmUgLS0gZm9y
IDx0aXRsZT4sIGluY2x1ZGluZyBpdCBoZXJlXG4gIC8vIGVycnMgb24gdGhlIHNpZGUgb2YgZmV3
ZXIgd2FybmluZ3NcbiAgJ2ZvcmVpZ25PYmplY3QnLCAnZGVzYycsICd0aXRsZSddO1xuXG4gIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2hhcy1h
bi1lbGVtZW50LWluLWJ1dHRvbi1zY29wZVxuICB2YXIgYnV0dG9uU2NvcGVUYWdzID0gaW5TY29w
ZVRhZ3MuY29uY2F0KFsnYnV0dG9uJ10pO1xuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2dlbmVyYXRlLWltcGxpZWQtZW5kLXRhZ3NcbiAg
dmFyIGltcGxpZWRFbmRUYWdzID0gWydkZCcsICdkdCcsICdsaScsICdvcHRpb24nLCAnb3B0Z3Jv
dXAnLCAncCcsICdycCcsICdydCddO1xuXG4gIHZhciBlbXB0eUFuY2VzdG9ySW5mbyA9IHtcbiAg
ICBjdXJyZW50OiBudWxsLFxuXG4gICAgZm9ybVRhZzogbnVsbCxcbiAgICBhVGFnSW5TY29wZTog
bnVsbCxcbiAgICBidXR0b25UYWdJblNjb3BlOiBudWxsLFxuICAgIG5vYnJUYWdJblNjb3BlOiBu
dWxsLFxuICAgIHBUYWdJbkJ1dHRvblNjb3BlOiBudWxsLFxuXG4gICAgbGlzdEl0ZW1UYWdBdXRv
Y2xvc2luZzogbnVsbCxcbiAgICBkbEl0ZW1UYWdBdXRvY2xvc2luZzogbnVsbFxuICB9O1xuXG4g
IHZhciB1cGRhdGVkQW5jZXN0b3JJbmZvID0gZnVuY3Rpb24gKG9sZEluZm8sIHRhZywgaW5zdGFu
Y2UpIHtcbiAgICB2YXIgYW5jZXN0b3JJbmZvID0gX2Fzc2lnbih7fSwgb2xkSW5mbyB8fCBlbXB0
eUFuY2VzdG9ySW5mbyk7XG4gICAgdmFyIGluZm8gPSB7IHRhZzogdGFnLCBpbnN0YW5jZTogaW5z
dGFuY2UgfTtcblxuICAgIGlmIChpblNjb3BlVGFncy5pbmRleE9mKHRhZykgIT09IC0xKSB7XG4g
ICAgICBhbmNlc3RvckluZm8uYVRhZ0luU2NvcGUgPSBudWxsO1xuICAgICAgYW5jZXN0b3JJbmZv
LmJ1dHRvblRhZ0luU2NvcGUgPSBudWxsO1xuICAgICAgYW5jZXN0b3JJbmZvLm5vYnJUYWdJblNj
b3BlID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGJ1dHRvblNjb3BlVGFncy5pbmRleE9mKHRhZykg
IT09IC0xKSB7XG4gICAgICBhbmNlc3RvckluZm8ucFRhZ0luQnV0dG9uU2NvcGUgPSBudWxsO1xu
ICAgIH1cblxuICAgIC8vIFNlZSBydWxlcyBmb3IgJ2xpJywgJ2RkJywgJ2R0JyBzdGFydCB0YWdz
IGluXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4
Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keVxuICAgIGlmIChzcGVjaWFsVGFncy5pbmRleE9mKHRh
ZykgIT09IC0xICYmIHRhZyAhPT0gJ2FkZHJlc3MnICYmIHRhZyAhPT0gJ2RpdicgJiYgdGFnICE9
PSAncCcpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5saXN0SXRlbVRhZ0F1dG9jbG9zaW5nID0gbnVs
bDtcbiAgICAgIGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdBdXRvY2xvc2luZyA9IG51bGw7XG4gICAg
fVxuXG4gICAgYW5jZXN0b3JJbmZvLmN1cnJlbnQgPSBpbmZvO1xuXG4gICAgaWYgKHRhZyA9PT0g
J2Zvcm0nKSB7XG4gICAgICBhbmNlc3RvckluZm8uZm9ybVRhZyA9IGluZm87XG4gICAgfVxuICAg
IGlmICh0YWcgPT09ICdhJykge1xuICAgICAgYW5jZXN0b3JJbmZvLmFUYWdJblNjb3BlID0gaW5m
bztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ2J1dHRvbicpIHtcbiAgICAgIGFuY2VzdG9ySW5m
by5idXR0b25UYWdJblNjb3BlID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ25vYnIn
KSB7XG4gICAgICBhbmNlc3RvckluZm8ubm9iclRhZ0luU2NvcGUgPSBpbmZvO1xuICAgIH1cbiAg
ICBpZiAodGFnID09PSAncCcpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29w
ZSA9IGluZm87XG4gICAgfVxuICAgIGlmICh0YWcgPT09ICdsaScpIHtcbiAgICAgIGFuY2VzdG9y
SW5mby5saXN0SXRlbVRhZ0F1dG9jbG9zaW5nID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9
PT0gJ2RkJyB8fCB0YWcgPT09ICdkdCcpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdB
dXRvY2xvc2luZyA9IGluZm87XG4gICAgfVxuXG4gICAgcmV0dXJuIGFuY2VzdG9ySW5mbztcbiAg
fTtcblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyXG4gICAqL1xuICB2YXIgaXNUYWdWYWxp
ZFdpdGhQYXJlbnQgPSBmdW5jdGlvbiAodGFnLCBwYXJlbnRUYWcpIHtcbiAgICAvLyBGaXJzdCwg
bGV0J3MgY2hlY2sgaWYgd2UncmUgaW4gYW4gdW51c3VhbCBwYXJzaW5nIG1vZGUuLi5cbiAgICBz
d2l0Y2ggKHBhcmVudFRhZykge1xuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluc2VsZWN0XG4gICAgICBjYXNl
ICdzZWxlY3QnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnb3B0aW9uJyB8fCB0YWcgPT09ICdv
cHRncm91cCcgfHwgdGFnID09PSAnI3RleHQnO1xuICAgICAgY2FzZSAnb3B0Z3JvdXAnOlxuICAg
ICAgICByZXR1cm4gdGFnID09PSAnb3B0aW9uJyB8fCB0YWcgPT09ICcjdGV4dCc7XG4gICAgICAv
LyBTdHJpY3RseSBzcGVha2luZywgc2VlaW5nIGFuIDxvcHRpb24+IGRvZXNuJ3QgbWVhbiB3ZSdy
ZSBpbiBhIDxzZWxlY3Q+XG4gICAgICAvLyBidXRcbiAgICAgIGNhc2UgJ29wdGlvbic6XG4gICAg
ICAgIHJldHVybiB0YWcgPT09ICcjdGV4dCc7XG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50ZFxuICAgICAg
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFy
c2luZy1tYWluLWluY2FwdGlvblxuICAgICAgLy8gTm8gc3BlY2lhbCBiZWhhdmlvciBzaW5jZSB0
aGVzZSBydWxlcyBmYWxsIGJhY2sgdG8gXCJpbiBib2R5XCIgbW9kZSBmb3JcbiAgICAgIC8vIGFs
bCBleGNlcHQgc3BlY2lhbCB0YWJsZSBub2RlcyB3aGljaCBjYXVzZSBiYWQgcGFyc2luZyBiZWhh
dmlvciBhbnl3YXkuXG5cbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRyXG4gICAgICBjYXNlICd0cic6XG4g
ICAgICAgIHJldHVybiB0YWcgPT09ICd0aCcgfHwgdGFnID09PSAndGQnIHx8IHRhZyA9PT0gJ3N0
eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcbiAgICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNp
bmctbWFpbi1pbnRib2R5XG4gICAgICBjYXNlICd0Ym9keSc6XG4gICAgICBjYXNlICd0aGVhZCc6
XG4gICAgICBjYXNlICd0Zm9vdCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICd0cicgfHwgdGFn
ID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xu
ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0
bWwjcGFyc2luZy1tYWluLWluY29sZ3JvdXBcbiAgICAgIGNhc2UgJ2NvbGdyb3VwJzpcbiAgICAg
ICAgcmV0dXJuIHRhZyA9PT0gJ2NvbCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuICAgICAgLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2lu
Zy1tYWluLWludGFibGVcbiAgICAgIGNhc2UgJ3RhYmxlJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9
PT0gJ2NhcHRpb24nIHx8IHRhZyA9PT0gJ2NvbGdyb3VwJyB8fCB0YWcgPT09ICd0Ym9keScgfHwg
dGFnID09PSAndGZvb3QnIHx8IHRhZyA9PT0gJ3RoZWFkJyB8fCB0YWcgPT09ICdzdHlsZScgfHwg
dGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG4gICAgICAvLyBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4t
aW5oZWFkXG4gICAgICBjYXNlICdoZWFkJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2Jhc2Un
IHx8IHRhZyA9PT0gJ2Jhc2Vmb250JyB8fCB0YWcgPT09ICdiZ3NvdW5kJyB8fCB0YWcgPT09ICds
aW5rJyB8fCB0YWcgPT09ICdtZXRhJyB8fCB0YWcgPT09ICd0aXRsZScgfHwgdGFnID09PSAnbm9z
Y3JpcHQnIHx8IHRhZyA9PT0gJ25vZnJhbWVzJyB8fCB0YWcgPT09ICdzdHlsZScgfHwgdGFnID09
PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG4gICAgICAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zZW1hbnRpY3MuaHRtbCN0aGUtaHRtbC1lbGVtZW50
XG4gICAgICBjYXNlICdodG1sJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2hlYWQnIHx8IHRh
ZyA9PT0gJ2JvZHknO1xuICAgICAgY2FzZSAnI2RvY3VtZW50JzpcbiAgICAgICAgcmV0dXJuIHRh
ZyA9PT0gJ2h0bWwnO1xuICAgIH1cblxuICAgIC8vIFByb2JhYmx5IGluIHRoZSBcImluIGJvZHlc
IiBwYXJzaW5nIG1vZGUsIHNvIHdlIG91dGxhdyBvbmx5IHRhZyBjb21ib3NcbiAgICAvLyB3aGVy
ZSB0aGUgcGFyc2luZyBydWxlcyBjYXVzZSBpbXBsaWNpdCBvcGVucyBvciBjbG9zZXMgdG8gYmUg
YWRkZWQuXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3lu
dGF4Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keVxuICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICBj
YXNlICdoMSc6XG4gICAgICBjYXNlICdoMic6XG4gICAgICBjYXNlICdoMyc6XG4gICAgICBjYXNl
ICdoNCc6XG4gICAgICBjYXNlICdoNSc6XG4gICAgICBjYXNlICdoNic6XG4gICAgICAgIHJldHVy
biBwYXJlbnRUYWcgIT09ICdoMScgJiYgcGFyZW50VGFnICE9PSAnaDInICYmIHBhcmVudFRhZyAh
PT0gJ2gzJyAmJiBwYXJlbnRUYWcgIT09ICdoNCcgJiYgcGFyZW50VGFnICE9PSAnaDUnICYmIHBh
cmVudFRhZyAhPT0gJ2g2JztcblxuICAgICAgY2FzZSAncnAnOlxuICAgICAgY2FzZSAncnQnOlxu
ICAgICAgICByZXR1cm4gaW1wbGllZEVuZFRhZ3MuaW5kZXhPZihwYXJlbnRUYWcpID09PSAtMTtc
blxuICAgICAgY2FzZSAnYm9keSc6XG4gICAgICBjYXNlICdjYXB0aW9uJzpcbiAgICAgIGNhc2Ug
J2NvbCc6XG4gICAgICBjYXNlICdjb2xncm91cCc6XG4gICAgICBjYXNlICdmcmFtZSc6XG4gICAg
ICBjYXNlICdoZWFkJzpcbiAgICAgIGNhc2UgJ2h0bWwnOlxuICAgICAgY2FzZSAndGJvZHknOlxu
ICAgICAgY2FzZSAndGQnOlxuICAgICAgY2FzZSAndGZvb3QnOlxuICAgICAgY2FzZSAndGgnOlxu
ICAgICAgY2FzZSAndGhlYWQnOlxuICAgICAgY2FzZSAndHInOlxuICAgICAgICAvLyBUaGVzZSB0
YWdzIGFyZSBvbmx5IHZhbGlkIHdpdGggYSBmZXcgcGFyZW50cyB0aGF0IGhhdmUgc3BlY2lhbCBj
aGlsZFxuICAgICAgICAvLyBwYXJzaW5nIHJ1bGVzIC0tIGlmIHdlJ3JlIGRvd24gaGVyZSwgdGhl
biBub25lIG9mIHRob3NlIG1hdGNoZWQgYW5kXG4gICAgICAgIC8vIHNvIHdlIGFsbG93IGl0IG9u
bHkgaWYgd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSBwYXJlbnQgaXMsIGFzIGFsbCBvdGhlclxuICAg
ICAgICAvLyBjYXNlcyBhcmUgaW52YWxpZC5cbiAgICAgICAgcmV0dXJuIHBhcmVudFRhZyA9PSBu
dWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1
cm5zIHdoZXRoZXJcbiAgICovXG4gIHZhciBmaW5kSW52YWxpZEFuY2VzdG9yRm9yVGFnID0gZnVu
Y3Rpb24gKHRhZywgYW5jZXN0b3JJbmZvKSB7XG4gICAgc3dpdGNoICh0YWcpIHtcbiAgICAgIGNh
c2UgJ2FkZHJlc3MnOlxuICAgICAgY2FzZSAnYXJ0aWNsZSc6XG4gICAgICBjYXNlICdhc2lkZSc6
XG4gICAgICBjYXNlICdibG9ja3F1b3RlJzpcbiAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICBj
YXNlICdkZXRhaWxzJzpcbiAgICAgIGNhc2UgJ2RpYWxvZyc6XG4gICAgICBjYXNlICdkaXInOlxu
ICAgICAgY2FzZSAnZGl2JzpcbiAgICAgIGNhc2UgJ2RsJzpcbiAgICAgIGNhc2UgJ2ZpZWxkc2V0
JzpcbiAgICAgIGNhc2UgJ2ZpZ2NhcHRpb24nOlxuICAgICAgY2FzZSAnZmlndXJlJzpcbiAgICAg
IGNhc2UgJ2Zvb3Rlcic6XG4gICAgICBjYXNlICdoZWFkZXInOlxuICAgICAgY2FzZSAnaGdyb3Vw
JzpcbiAgICAgIGNhc2UgJ21haW4nOlxuICAgICAgY2FzZSAnbWVudSc6XG4gICAgICBjYXNlICdu
YXYnOlxuICAgICAgY2FzZSAnb2wnOlxuICAgICAgY2FzZSAncCc6XG4gICAgICBjYXNlICdzZWN0
aW9uJzpcbiAgICAgIGNhc2UgJ3N1bW1hcnknOlxuICAgICAgY2FzZSAndWwnOlxuICAgICAgY2Fz
ZSAncHJlJzpcbiAgICAgIGNhc2UgJ2xpc3RpbmcnOlxuICAgICAgY2FzZSAndGFibGUnOlxuICAg
ICAgY2FzZSAnaHInOlxuICAgICAgY2FzZSAneG1wJzpcbiAgICAgIGNhc2UgJ2gxJzpcbiAgICAg
IGNhc2UgJ2gyJzpcbiAgICAgIGNhc2UgJ2gzJzpcbiAgICAgIGNhc2UgJ2g0JzpcbiAgICAgIGNh
c2UgJ2g1JzpcbiAgICAgIGNhc2UgJ2g2JzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5w
VGFnSW5CdXR0b25TY29wZTtcblxuICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICAgIHJldHVybiBh
bmNlc3RvckluZm8uZm9ybVRhZyB8fCBhbmNlc3RvckluZm8ucFRhZ0luQnV0dG9uU2NvcGU7XG5c
biAgICAgIGNhc2UgJ2xpJzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5saXN0SXRlbVRh
Z0F1dG9jbG9zaW5nO1xuXG4gICAgICBjYXNlICdkZCc6XG4gICAgICBjYXNlICdkdCc6XG4gICAg
ICAgIHJldHVybiBhbmNlc3RvckluZm8uZGxJdGVtVGFnQXV0b2Nsb3Npbmc7XG5cbiAgICAgIGNh
c2UgJ2J1dHRvbic6XG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8uYnV0dG9uVGFnSW5TY29w
ZTtcblxuICAgICAgY2FzZSAnYSc6XG4gICAgICAgIC8vIFNwZWMgc2F5cyBzb21ldGhpbmcgYWJv
dXQgc3RvcmluZyBhIGxpc3Qgb2YgbWFya2VycywgYnV0IGl0IHNvdW5kc1xuICAgICAgICAvLyBl
cXVpdmFsZW50IHRvIHRoaXMgY2hlY2suXG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8uYVRh
Z0luU2NvcGU7XG5cbiAgICAgIGNhc2UgJ25vYnInOlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJ
bmZvLm5vYnJUYWdJblNjb3BlO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4g
IC8qKlxuICAgKiBHaXZlbiBhIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IGluc3RhbmNlLCByZXR1
cm4gYSBsaXN0IG9mIGl0cyByZWN1cnNpdmVcbiAgICogb3duZXJzLCBzdGFydGluZyBhdCB0aGUg
cm9vdCBhbmQgZW5kaW5nIHdpdGggdGhlIGluc3RhbmNlIGl0c2VsZi5cbiAgICovXG4gIHZhciBm
aW5kT3duZXJTdGFjayA9IGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICAgIGlmICghaW5zdGFuY2Up
IHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICBk
byB7XG4gICAgICBzdGFjay5wdXNoKGluc3RhbmNlKTtcbiAgICB9IHdoaWxlIChpbnN0YW5jZSA9
IGluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXIpO1xuICAgIHN0YWNrLnJldmVyc2UoKTtc
biAgICByZXR1cm4gc3RhY2s7XG4gIH07XG5cbiAgdmFyIGRpZFdhcm4gPSB7fTtcblxuICB2YWxp
ZGF0ZURPTU5lc3RpbmcgPSBmdW5jdGlvbiAoY2hpbGRUYWcsIGNoaWxkVGV4dCwgY2hpbGRJbnN0
YW5jZSwgYW5jZXN0b3JJbmZvKSB7XG4gICAgYW5jZXN0b3JJbmZvID0gYW5jZXN0b3JJbmZvIHx8
IGVtcHR5QW5jZXN0b3JJbmZvO1xuICAgIHZhciBwYXJlbnRJbmZvID0gYW5jZXN0b3JJbmZvLmN1
cnJlbnQ7XG4gICAgdmFyIHBhcmVudFRhZyA9IHBhcmVudEluZm8gJiYgcGFyZW50SW5mby50YWc7
XG5cbiAgICBpZiAoY2hpbGRUZXh0ICE9IG51bGwpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGNoaWxkVGFnID09IG51bGwsICd2YWxpZGF0
ZURPTU5lc3Rpbmc6IHdoZW4gY2hpbGRUZXh0IGlzIHBhc3NlZCwgY2hpbGRUYWcgc2hvdWxkIGJl
IG51bGwnKSA6IHZvaWQgMDtcbiAgICAgIGNoaWxkVGFnID0gJyN0ZXh0JztcbiAgICB9XG5cbiAg
ICB2YXIgaW52YWxpZFBhcmVudCA9IGlzVGFnVmFsaWRXaXRoUGFyZW50KGNoaWxkVGFnLCBwYXJl
bnRUYWcpID8gbnVsbCA6IHBhcmVudEluZm87XG4gICAgdmFyIGludmFsaWRBbmNlc3RvciA9IGlu
dmFsaWRQYXJlbnQgPyBudWxsIDogZmluZEludmFsaWRBbmNlc3RvckZvclRhZyhjaGlsZFRhZywg
YW5jZXN0b3JJbmZvKTtcbiAgICB2YXIgcHJvYmxlbWF0aWMgPSBpbnZhbGlkUGFyZW50IHx8IGlu
dmFsaWRBbmNlc3RvcjtcblxuICAgIGlmIChwcm9ibGVtYXRpYykge1xuICAgICAgdmFyIGFuY2Vz
dG9yVGFnID0gcHJvYmxlbWF0aWMudGFnO1xuICAgICAgdmFyIGFuY2VzdG9ySW5zdGFuY2UgPSBw
cm9ibGVtYXRpYy5pbnN0YW5jZTtcblxuICAgICAgdmFyIGNoaWxkT3duZXIgPSBjaGlsZEluc3Rh
bmNlICYmIGNoaWxkSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgICAgIHZhciBh
bmNlc3Rvck93bmVyID0gYW5jZXN0b3JJbnN0YW5jZSAmJiBhbmNlc3Rvckluc3RhbmNlLl9jdXJy
ZW50RWxlbWVudC5fb3duZXI7XG5cbiAgICAgIHZhciBjaGlsZE93bmVycyA9IGZpbmRPd25lclN0
YWNrKGNoaWxkT3duZXIpO1xuICAgICAgdmFyIGFuY2VzdG9yT3duZXJzID0gZmluZE93bmVyU3Rh
Y2soYW5jZXN0b3JPd25lcik7XG5cbiAgICAgIHZhciBtaW5TdGFja0xlbiA9IE1hdGgubWluKGNo
aWxkT3duZXJzLmxlbmd0aCwgYW5jZXN0b3JPd25lcnMubGVuZ3RoKTtcbiAgICAgIHZhciBpO1xu
XG4gICAgICB2YXIgZGVlcGVzdENvbW1vbiA9IC0xO1xuICAgICAgZm9yIChpID0gMDsgaSA8IG1p
blN0YWNrTGVuOyBpKyspIHtcbiAgICAgICAgaWYgKGNoaWxkT3duZXJzW2ldID09PSBhbmNlc3Rv
ck93bmVyc1tpXSkge1xuICAgICAgICAgIGRlZXBlc3RDb21tb24gPSBpO1xuICAgICAgICB9IGVs
c2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBV
TktOT1dOID0gJyh1bmtub3duKSc7XG4gICAgICB2YXIgY2hpbGRPd25lck5hbWVzID0gY2hpbGRP
d25lcnMuc2xpY2UoZGVlcGVzdENvbW1vbiArIDEpLm1hcChmdW5jdGlvbiAoaW5zdCkge1xuICAg
ICAgICByZXR1cm4gaW5zdC5nZXROYW1lKCkgfHwgVU5LTk9XTjtcbiAgICAgIH0pO1xuICAgICAg
dmFyIGFuY2VzdG9yT3duZXJOYW1lcyA9IGFuY2VzdG9yT3duZXJzLnNsaWNlKGRlZXBlc3RDb21t
b24gKyAxKS5tYXAoZnVuY3Rpb24gKGluc3QpIHtcbiAgICAgICAgcmV0dXJuIGluc3QuZ2V0TmFt
ZSgpIHx8IFVOS05PV047XG4gICAgICB9KTtcbiAgICAgIHZhciBvd25lckluZm8gPSBbXS5jb25j
YXQoXG4gICAgICAvLyBJZiB0aGUgcGFyZW50IGFuZCBjaGlsZCBpbnN0YW5jZXMgaGF2ZSBhIGNv
bW1vbiBvd25lciBhbmNlc3Rvciwgc3RhcnRcbiAgICAgIC8vIHdpdGggdGhhdCAtLSBvdGhlcndp
c2Ugd2UganVzdCBzdGFydCB3aXRoIHRoZSBwYXJlbnQncyBvd25lcnMuXG4gICAgICBkZWVwZXN0
Q29tbW9uICE9PSAtMSA/IGNoaWxkT3duZXJzW2RlZXBlc3RDb21tb25dLmdldE5hbWUoKSB8fCBV
TktOT1dOIDogW10sIGFuY2VzdG9yT3duZXJOYW1lcywgYW5jZXN0b3JUYWcsXG4gICAgICAvLyBJ
ZiB3ZSdyZSB3YXJuaW5nIGFib3V0IGFuIGludmFsaWQgKG5vbi1wYXJlbnQpIGFuY2VzdHJ5LCBh
ZGQgJy4uLidcbiAgICAgIGludmFsaWRBbmNlc3RvciA/IFsnLi4uJ10gOiBbXSwgY2hpbGRPd25l
ck5hbWVzLCBjaGlsZFRhZykuam9pbignID4gJyk7XG5cbiAgICAgIHZhciB3YXJuS2V5ID0gISFp
bnZhbGlkUGFyZW50ICsgJ3wnICsgY2hpbGRUYWcgKyAnfCcgKyBhbmNlc3RvclRhZyArICd8JyAr
IG93bmVySW5mbztcbiAgICAgIGlmIChkaWRXYXJuW3dhcm5LZXldKSB7XG4gICAgICAgIHJldHVy
bjtcbiAgICAgIH1cbiAgICAgIGRpZFdhcm5bd2FybktleV0gPSB0cnVlO1xuXG4gICAgICB2YXIg
dGFnRGlzcGxheU5hbWUgPSBjaGlsZFRhZztcbiAgICAgIHZhciB3aGl0ZXNwYWNlSW5mbyA9ICcn
O1xuICAgICAgaWYgKGNoaWxkVGFnID09PSAnI3RleHQnKSB7XG4gICAgICAgIGlmICgvXFxTLy50
ZXN0KGNoaWxkVGV4dCkpIHtcbiAgICAgICAgICB0YWdEaXNwbGF5TmFtZSA9ICdUZXh0IG5vZGVz
JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YWdEaXNwbGF5TmFtZSA9ICdXaGl0ZXNw
YWNlIHRleHQgbm9kZXMnO1xuICAgICAgICAgIHdoaXRlc3BhY2VJbmZvID0gXCIgTWFrZSBzdXJl
IHlvdSBkb24ndCBoYXZlIGFueSBleHRyYSB3aGl0ZXNwYWNlIGJldHdlZW4gdGFncyBvbiBcIiAr
ICdlYWNoIGxpbmUgb2YgeW91ciBzb3VyY2UgY29kZS4nO1xuICAgICAgICB9XG4gICAgICB9IGVs
c2Uge1xuICAgICAgICB0YWdEaXNwbGF5TmFtZSA9ICc8JyArIGNoaWxkVGFnICsgJz4nO1xuICAg
ICAgfVxuXG4gICAgICBpZiAoaW52YWxpZFBhcmVudCkge1xuICAgICAgICB2YXIgaW5mbyA9ICcn
O1xuICAgICAgICBpZiAoYW5jZXN0b3JUYWcgPT09ICd0YWJsZScgJiYgY2hpbGRUYWcgPT09ICd0
cicpIHtcbiAgICAgICAgICBpbmZvICs9ICcgQWRkIGEgPHRib2R5PiB0byB5b3VyIGNvZGUgdG8g
bWF0Y2ggdGhlIERPTSB0cmVlIGdlbmVyYXRlZCBieSAnICsgJ3RoZSBicm93c2VyLic7XG4gICAg
ICAgIH1cbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoZmFsc2UsICd2YWxpZGF0ZURPTU5lc3RpbmcoLi4uKTogJXMgY2Fubm90IGFwcGVhciBh
cyBhIGNoaWxkIG9mIDwlcz4uJXMgJyArICdTZWUgJXMuJXMnLCB0YWdEaXNwbGF5TmFtZSwgYW5j
ZXN0b3JUYWcsIHdoaXRlc3BhY2VJbmZvLCBvd25lckluZm8sIGluZm8pIDogdm9pZCAwO1xuICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICd2YWxpZGF0ZURPTU5lc3RpbmcoLi4uKTogJXMgY2Fubm90IGFw
cGVhciBhcyBhIGRlc2NlbmRhbnQgb2YgJyArICc8JXM+LiBTZWUgJXMuJywgdGFnRGlzcGxheU5h
bWUsIGFuY2VzdG9yVGFnLCBvd25lckluZm8pIDogdm9pZCAwO1xuICAgICAgfVxuICAgIH1cbiAg
fTtcblxuICB2YWxpZGF0ZURPTU5lc3RpbmcudXBkYXRlZEFuY2VzdG9ySW5mbyA9IHVwZGF0ZWRB
bmNlc3RvckluZm87XG5cbiAgLy8gRm9yIHRlc3RpbmdcbiAgdmFsaWRhdGVET01OZXN0aW5nLmlz
VGFnVmFsaWRJbkNvbnRleHQgPSBmdW5jdGlvbiAodGFnLCBhbmNlc3RvckluZm8pIHtcbiAgICBh
bmNlc3RvckluZm8gPSBhbmNlc3RvckluZm8gfHwgZW1wdHlBbmNlc3RvckluZm87XG4gICAgdmFy
IHBhcmVudEluZm8gPSBhbmNlc3RvckluZm8uY3VycmVudDtcbiAgICB2YXIgcGFyZW50VGFnID0g
cGFyZW50SW5mbyAmJiBwYXJlbnRJbmZvLnRhZztcbiAgICByZXR1cm4gaXNUYWdWYWxpZFdpdGhQ
YXJlbnQodGFnLCBwYXJlbnRUYWcpICYmICFmaW5kSW52YWxpZEFuY2VzdG9yRm9yVGFnKHRhZywg
YW5jZXN0b3JJbmZvKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2YWxpZGF0ZURPTU5l
c3Rpbmc7XG5cbi8qKiovIH0pLFxuLyogNDcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbi8qKlxuICogYGNoYXJDb2RlYCByZXByZXNl
bnRzIHRoZSBhY3R1YWwgXCJjaGFyYWN0ZXIgY29kZVwiIGFuZCBpcyBzYWZlIHRvIHVzZSB3aXRo
XG4gKiBgU3RyaW5nLmZyb21DaGFyQ29kZWAuIEFzIHN1Y2gsIG9ubHkga2V5cyB0aGF0IGNvcnJl
c3BvbmQgdG8gcHJpbnRhYmxlXG4gKiBjaGFyYWN0ZXJzIHByb2R1Y2UgYSB2YWxpZCBgY2hhckNv
ZGVgLCB0aGUgb25seSBleGNlcHRpb24gdG8gdGhpcyBpcyBFbnRlci5cbiAqIFRoZSBUYWIta2V5
IGlzIGNvbnNpZGVyZWQgbm9uLXByaW50YWJsZSBhbmQgZG9lcyBub3QgaGF2ZSBhIGBjaGFyQ29k
ZWAsXG4gKiBwcmVzdW1hYmx5IGJlY2F1c2UgaXQgZG9lcyBub3QgcHJvZHVjZSBhIHRhYi1jaGFy
YWN0ZXIgaW4gYnJvd3NlcnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5h
dGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7bnVtYmVyfSBOb3JtYWxpemVkIGBjaGFy
Q29kZWAgcHJvcGVydHkuXG4gKi9cblxuZnVuY3Rpb24gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVF
dmVudCkge1xuICB2YXIgY2hhckNvZGU7XG4gIHZhciBrZXlDb2RlID0gbmF0aXZlRXZlbnQua2V5
Q29kZTtcblxuICBpZiAoJ2NoYXJDb2RlJyBpbiBuYXRpdmVFdmVudCkge1xuICAgIGNoYXJDb2Rl
ID0gbmF0aXZlRXZlbnQuY2hhckNvZGU7XG5cbiAgICAvLyBGRiBkb2VzIG5vdCBzZXQgYGNoYXJD
b2RlYCBmb3IgdGhlIEVudGVyLWtleSwgY2hlY2sgYWdhaW5zdCBga2V5Q29kZWAuXG4gICAgaWYg
KGNoYXJDb2RlID09PSAwICYmIGtleUNvZGUgPT09IDEzKSB7XG4gICAgICBjaGFyQ29kZSA9IDEz
O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBJRTggZG9lcyBub3QgaW1wbGVtZW50IGBjaGFy
Q29kZWAsIGJ1dCBga2V5Q29kZWAgaGFzIHRoZSBjb3JyZWN0IHZhbHVlLlxuICAgIGNoYXJDb2Rl
ID0ga2V5Q29kZTtcbiAgfVxuXG4gIC8vIFNvbWUgbm9uLXByaW50YWJsZSBrZXlzIGFyZSByZXBv
cnRlZCBpbiBgY2hhckNvZGVgL2BrZXlDb2RlYCwgZGlzY2FyZCB0aGVtLlxuICAvLyBNdXN0IG5v
dCBkaXNjYXJkIHRoZSAobm9uLSlwcmludGFibGUgRW50ZXIta2V5LlxuICBpZiAoY2hhckNvZGUg
Pj0gMzIgfHwgY2hhckNvZGUgPT09IDEzKSB7XG4gICAgcmV0dXJuIGNoYXJDb2RlO1xuICB9XG5c
biAgcmV0dXJuIDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRDaGFyQ29kZTtcblxu
LyoqKi8gfSksXG4vKiA0OCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4
cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhh
cm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2Jhc2VHZXRU
YWdfanNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTk1KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2dldFByb3RvdHlwZV9qc19fID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyMDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMl9faXNPYmplY3RMaWtlX2pzX18gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDIwMik7XG5cblxuXG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNl
cy4gKi9cbnZhciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqIFVzZWQgZm9y
IGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9u
LnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBV
c2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZh
ciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNr
IG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2Jq
ZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGluZmVyIHRoZSBgT2JqZWN0
YCBjb25zdHJ1Y3Rvci4gKi9cbnZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNh
bGwoT2JqZWN0KTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVj
dCwgdGhhdCBpcywgYW4gb2JqZWN0IGNyZWF0ZWQgYnkgdGhlXG4gKiBgT2JqZWN0YCBjb25zdHJ1
Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gKlxuICogQHN0
YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjguMFxuICogQGNhdGVnb3J5IExhbmdc
biAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jv
b2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2Ug
YGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlz
LmEgPSAxO1xuICogfVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAqIC8vID0+
IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxz
ZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICogLy8gPT4g
dHJ1ZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAqIC8v
ID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAoIU9i
amVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2lzT2JqZWN0TGlrZV9qc19fW1wiYVwi
IC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSkgfHwgT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMF9fYmFzZUdldFRhZ19qc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSkgIT0gb2Jq
ZWN0VGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwcm90byA9IE9iamVjdChf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2dldFByb3RvdHlwZV9qc19fW1wiYVwiIC8qIGRl
ZmF1bHQgKi9dKSh2YWx1ZSk7XG4gIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0
cnVlO1xuICB9XG4gIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0
cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gIHJldHVybiB0eXBlb2YgQ3RvciA9PSAn
ZnVuY3Rpb24nICYmIEN0b3IgaW5zdGFuY2VvZiBDdG9yICYmXG4gICAgZnVuY1RvU3RyaW5nLmNh
bGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4
cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc1BsYWluT2JqZWN0KTtcblxu
XG4vKioqLyB9KSxcbi8qIDQ5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tf
ZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyog
aGFybW9ueSBleHBvcnQgKGltbXV0YWJsZSkgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0g
PSB3YXJuaW5nO1xuLyoqXG4gKiBQcmludHMgYSB3YXJuaW5nIGluIHRoZSBjb25zb2xlIGlmIGl0
IGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBUaGUgd2FybmluZyBtZXNz
YWdlLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHdhcm5pbmcobWVzc2FnZSkg
e1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4gIGlmICh0eXBlb2YgY29uc29s
ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicp
IHtcbiAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICB9XG4gIC8qIGVzbGludC1lbmFibGUg
bm8tY29uc29sZSAqL1xuICB0cnkge1xuICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBh
IGNvbnZlbmllbmNlIHNvIHRoYXQgaWYgeW91IGVuYWJsZVxuICAgIC8vIFwiYnJlYWsgb24gYWxs
IGV4Y2VwdGlvbnNcIiBpbiB5b3VyIGNvbnNvbGUsXG4gICAgLy8gaXQgd291bGQgcGF1c2UgdGhl
IGV4ZWN1dGlvbiBhdCB0aGlzIGxpbmUuXG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xu
ICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWVtcHR5ICovXG4gIH0gY2F0Y2ggKGUpIHt9XG4gIC8q
IGVzbGludC1lbmFibGUgbm8tZW1wdHkgKi9cbn1cblxuLyoqKi8gfSksXG4vKiA1MCAqL1xuLyoq
Ki8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52
YXIgX19XRUJQQUNLX0FNRF9ERUZJTkVfQVJSQVlfXywgX19XRUJQQUNLX0FNRF9ERUZJTkVfUkVT
VUxUX187LyohXG4gIENvcHlyaWdodCAoYykgMjAxNiBKZWQgV2F0c29uLlxuICBMaWNlbnNlZCB1
bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZVxuICBodHRwOi8vamVkd2F0c29uLmdpdGh1
Yi5pby9jbGFzc25hbWVzXG4qL1xuLyogZ2xvYmFsIGRlZmluZSAqL1xuXG4oZnVuY3Rpb24gKCkg
e1xuXHQndXNlIHN0cmljdCc7XG5cblx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xu
XG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMgKCkge1xuXHRcdHZhciBjbGFzc2VzID0gW107XG5cblx0
XHRmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFy
IGFyZyA9IGFyZ3VtZW50c1tpXTtcblx0XHRcdGlmICghYXJnKSBjb250aW51ZTtcblxuXHRcdFx0
dmFyIGFyZ1R5cGUgPSB0eXBlb2YgYXJnO1xuXG5cdFx0XHRpZiAoYXJnVHlwZSA9PT0gJ3N0cmlu
ZycgfHwgYXJnVHlwZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGFyZyk7
XG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuXHRcdFx0XHRjbGFzc2Vz
LnB1c2goY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpKTtcblx0XHRcdH0gZWxzZSBpZiAoYXJn
VHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0Zm9yICh2YXIga2V5IGluIGFyZykge1xuXHRc
dFx0XHRcdGlmIChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0
XHRcdGNsYXNzZXMucHVzaChrZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxu
XHRcdH1cblxuXHRcdHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTtcblx0fVxuXG5cdGlmICh0eXBl
b2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdG1vZHVs
ZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0cnVlKSB7XG5cdFx0Ly8gcmVn
aXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxu
XHRcdCEoX19XRUJQQUNLX0FNRF9ERUZJTkVfQVJSQVlfXyA9IFtdLCBfX1dFQlBBQ0tfQU1EX0RF
RklORV9SRVNVTFRfXyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBjbGFzc05hbWVzO1xu
XHRcdH0uYXBwbHkoZXhwb3J0cywgX19XRUJQQUNLX0FNRF9ERUZJTkVfQVJSQVlfXyksXG5cdFx0
XHRcdF9fV0VCUEFDS19BTURfREVGSU5FX1JFU1VMVF9fICE9PSB1bmRlZmluZWQgJiYgKG1vZHVs
ZS5leHBvcnRzID0gX19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX18pKTtcblx0fSBlbHNlIHtc
blx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG5cblxuLyoq
Ki8gfSksXG4vKiA1MSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgYXNhcCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTAwKTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbi8vIFN0YXRlczpc
bi8vXG4vLyAwIC0gcGVuZGluZ1xuLy8gMSAtIGZ1bGZpbGxlZCB3aXRoIF92YWx1ZVxuLy8gMiAt
IHJlamVjdGVkIHdpdGggX3ZhbHVlXG4vLyAzIC0gYWRvcHRlZCB0aGUgc3RhdGUgb2YgYW5vdGhl
ciBwcm9taXNlLCBfdmFsdWVcbi8vXG4vLyBvbmNlIHRoZSBzdGF0ZSBpcyBubyBsb25nZXIgcGVu
ZGluZyAoMCkgaXQgaXMgaW1tdXRhYmxlXG5cbi8vIEFsbCBgX2AgcHJlZml4ZWQgcHJvcGVydGll
cyB3aWxsIGJlIHJlZHVjZWQgdG8gYF97cmFuZG9tIG51bWJlcn1gXG4vLyBhdCBidWlsZCB0aW1l
IHRvIG9iZnVzY2F0ZSB0aGVtIGFuZCBkaXNjb3VyYWdlIHRoZWlyIHVzZS5cbi8vIFdlIGRvbid0
IHVzZSBzeW1ib2xzIG9yIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB0byBmdWxseSBoaWRlIHRoZW1c
bi8vIGJlY2F1c2UgdGhlIHBlcmZvcm1hbmNlIGlzbid0IGdvb2QgZW5vdWdoLlxuXG5cbi8vIHRv
IGF2b2lkIHVzaW5nIHRyeS9jYXRjaCBpbnNpZGUgY3JpdGljYWwgZnVuY3Rpb25zLCB3ZVxuLy8g
ZXh0cmFjdCB0aGVtIHRvIGhlcmUuXG52YXIgTEFTVF9FUlJPUiA9IG51bGw7XG52YXIgSVNfRVJS
T1IgPSB7fTtcbmZ1bmN0aW9uIGdldFRoZW4ob2JqKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG9i
ai50aGVuO1xuICB9IGNhdGNoIChleCkge1xuICAgIExBU1RfRVJST1IgPSBleDtcbiAgICByZXR1
cm4gSVNfRVJST1I7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJ5Q2FsbE9uZShmbiwgYSkge1xuICB0
cnkge1xuICAgIHJldHVybiBmbihhKTtcbiAgfSBjYXRjaCAoZXgpIHtcbiAgICBMQVNUX0VSUk9S
ID0gZXg7XG4gICAgcmV0dXJuIElTX0VSUk9SO1xuICB9XG59XG5mdW5jdGlvbiB0cnlDYWxsVHdv
KGZuLCBhLCBiKSB7XG4gIHRyeSB7XG4gICAgZm4oYSwgYik7XG4gIH0gY2F0Y2ggKGV4KSB7XG4g
ICAgTEFTVF9FUlJPUiA9IGV4O1xuICAgIHJldHVybiBJU19FUlJPUjtcbiAgfVxufVxuXG5tb2R1
bGUuZXhwb3J0cyA9IFByb21pc2U7XG5cbmZ1bmN0aW9uIFByb21pc2UoZm4pIHtcbiAgaWYgKHR5
cGVvZiB0aGlzICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21p
c2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldycpO1xuICB9XG4gIGlmICh0eXBlb2YgZm4g
IT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQcm9taXNlIGNvbnN0
cnVjdG9yXFwncyBhcmd1bWVudCBpcyBub3QgYSBmdW5jdGlvbicpO1xuICB9XG4gIHRoaXMuXzc1
ID0gMDtcbiAgdGhpcy5fODMgPSAwO1xuICB0aGlzLl8xOCA9IG51bGw7XG4gIHRoaXMuXzM4ID0g
bnVsbDtcbiAgaWYgKGZuID09PSBub29wKSByZXR1cm47XG4gIGRvUmVzb2x2ZShmbiwgdGhpcyk7
XG59XG5Qcm9taXNlLl80NyA9IG51bGw7XG5Qcm9taXNlLl83MSA9IG51bGw7XG5Qcm9taXNlLl80
NCA9IG5vb3A7XG5cblByb21pc2UucHJvdG90eXBlLnRoZW4gPSBmdW5jdGlvbihvbkZ1bGZpbGxl
ZCwgb25SZWplY3RlZCkge1xuICBpZiAodGhpcy5jb25zdHJ1Y3RvciAhPT0gUHJvbWlzZSkge1xu
ICAgIHJldHVybiBzYWZlVGhlbih0aGlzLCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gIH1c
biAgdmFyIHJlcyA9IG5ldyBQcm9taXNlKG5vb3ApO1xuICBoYW5kbGUodGhpcywgbmV3IEhhbmRs
ZXIob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIHJlcykpO1xuICByZXR1cm4gcmVzO1xufTtcblxu
ZnVuY3Rpb24gc2FmZVRoZW4oc2VsZiwgb25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgcmV0
dXJuIG5ldyBzZWxmLmNvbnN0cnVjdG9yKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAg
ICB2YXIgcmVzID0gbmV3IFByb21pc2Uobm9vcCk7XG4gICAgcmVzLnRoZW4ocmVzb2x2ZSwgcmVq
ZWN0KTtcbiAgICBoYW5kbGUoc2VsZiwgbmV3IEhhbmRsZXIob25GdWxmaWxsZWQsIG9uUmVqZWN0
ZWQsIHJlcykpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGhhbmRsZShzZWxmLCBkZWZlcnJlZCkge1xu
ICB3aGlsZSAoc2VsZi5fODMgPT09IDMpIHtcbiAgICBzZWxmID0gc2VsZi5fMTg7XG4gIH1cbiAg
aWYgKFByb21pc2UuXzQ3KSB7XG4gICAgUHJvbWlzZS5fNDcoc2VsZik7XG4gIH1cbiAgaWYgKHNl
bGYuXzgzID09PSAwKSB7XG4gICAgaWYgKHNlbGYuXzc1ID09PSAwKSB7XG4gICAgICBzZWxmLl83
NSA9IDE7XG4gICAgICBzZWxmLl8zOCA9IGRlZmVycmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1c
biAgICBpZiAoc2VsZi5fNzUgPT09IDEpIHtcbiAgICAgIHNlbGYuXzc1ID0gMjtcbiAgICAgIHNl
bGYuXzM4ID0gW3NlbGYuXzM4LCBkZWZlcnJlZF07XG4gICAgICByZXR1cm47XG4gICAgfVxuICAg
IHNlbGYuXzM4LnB1c2goZGVmZXJyZWQpO1xuICAgIHJldHVybjtcbiAgfVxuICBoYW5kbGVSZXNv
bHZlZChzZWxmLCBkZWZlcnJlZCk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVJlc29sdmVkKHNlbGYs
IGRlZmVycmVkKSB7XG4gIGFzYXAoZnVuY3Rpb24oKSB7XG4gICAgdmFyIGNiID0gc2VsZi5fODMg
PT09IDEgPyBkZWZlcnJlZC5vbkZ1bGZpbGxlZCA6IGRlZmVycmVkLm9uUmVqZWN0ZWQ7XG4gICAg
aWYgKGNiID09PSBudWxsKSB7XG4gICAgICBpZiAoc2VsZi5fODMgPT09IDEpIHtcbiAgICAgICAg
cmVzb2x2ZShkZWZlcnJlZC5wcm9taXNlLCBzZWxmLl8xOCk7XG4gICAgICB9IGVsc2Uge1xuICAg
ICAgICByZWplY3QoZGVmZXJyZWQucHJvbWlzZSwgc2VsZi5fMTgpO1xuICAgICAgfVxuICAgICAg
cmV0dXJuO1xuICAgIH1cbiAgICB2YXIgcmV0ID0gdHJ5Q2FsbE9uZShjYiwgc2VsZi5fMTgpO1xu
ICAgIGlmIChyZXQgPT09IElTX0VSUk9SKSB7XG4gICAgICByZWplY3QoZGVmZXJyZWQucHJvbWlz
ZSwgTEFTVF9FUlJPUik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc29sdmUoZGVmZXJyZWQucHJv
bWlzZSwgcmV0KTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gcmVzb2x2ZShzZWxmLCBuZXdW
YWx1ZSkge1xuICAvLyBQcm9taXNlIFJlc29sdXRpb24gUHJvY2VkdXJlOiBodHRwczovL2dpdGh1
Yi5jb20vcHJvbWlzZXMtYXBsdXMvcHJvbWlzZXMtc3BlYyN0aGUtcHJvbWlzZS1yZXNvbHV0aW9u
LXByb2NlZHVyZVxuICBpZiAobmV3VmFsdWUgPT09IHNlbGYpIHtcbiAgICByZXR1cm4gcmVqZWN0
KFxuICAgICAgc2VsZixcbiAgICAgIG5ldyBUeXBlRXJyb3IoJ0EgcHJvbWlzZSBjYW5ub3QgYmUg
cmVzb2x2ZWQgd2l0aCBpdHNlbGYuJylcbiAgICApO1xuICB9XG4gIGlmIChcbiAgICBuZXdWYWx1
ZSAmJlxuICAgICh0eXBlb2YgbmV3VmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBuZXdWYWx1
ZSA9PT0gJ2Z1bmN0aW9uJylcbiAgKSB7XG4gICAgdmFyIHRoZW4gPSBnZXRUaGVuKG5ld1ZhbHVl
KTtcbiAgICBpZiAodGhlbiA9PT0gSVNfRVJST1IpIHtcbiAgICAgIHJldHVybiByZWplY3Qoc2Vs
ZiwgTEFTVF9FUlJPUik7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoZW4gPT09IHNlbGYudGhl
biAmJlxuICAgICAgbmV3VmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlXG4gICAgKSB7XG4gICAgICBz
ZWxmLl84MyA9IDM7XG4gICAgICBzZWxmLl8xOCA9IG5ld1ZhbHVlO1xuICAgICAgZmluYWxlKHNl
bGYpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5j
dGlvbicpIHtcbiAgICAgIGRvUmVzb2x2ZSh0aGVuLmJpbmQobmV3VmFsdWUpLCBzZWxmKTtcbiAg
ICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgc2VsZi5fODMgPSAxO1xuICBzZWxmLl8xOCA9IG5l
d1ZhbHVlO1xuICBmaW5hbGUoc2VsZik7XG59XG5cbmZ1bmN0aW9uIHJlamVjdChzZWxmLCBuZXdW
YWx1ZSkge1xuICBzZWxmLl84MyA9IDI7XG4gIHNlbGYuXzE4ID0gbmV3VmFsdWU7XG4gIGlmIChQ
cm9taXNlLl83MSkge1xuICAgIFByb21pc2UuXzcxKHNlbGYsIG5ld1ZhbHVlKTtcbiAgfVxuICBm
aW5hbGUoc2VsZik7XG59XG5mdW5jdGlvbiBmaW5hbGUoc2VsZikge1xuICBpZiAoc2VsZi5fNzUg
PT09IDEpIHtcbiAgICBoYW5kbGUoc2VsZiwgc2VsZi5fMzgpO1xuICAgIHNlbGYuXzM4ID0gbnVs
bDtcbiAgfVxuICBpZiAoc2VsZi5fNzUgPT09IDIpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHNlbGYuXzM4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBoYW5kbGUoc2VsZiwgc2VsZi5fMzhbaV0p
O1xuICAgIH1cbiAgICBzZWxmLl8zOCA9IG51bGw7XG4gIH1cbn1cblxuZnVuY3Rpb24gSGFuZGxl
cihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvbWlzZSl7XG4gIHRoaXMub25GdWxmaWxsZWQg
PSB0eXBlb2Ygb25GdWxmaWxsZWQgPT09ICdmdW5jdGlvbicgPyBvbkZ1bGZpbGxlZCA6IG51bGw7
XG4gIHRoaXMub25SZWplY3RlZCA9IHR5cGVvZiBvblJlamVjdGVkID09PSAnZnVuY3Rpb24nID8g
b25SZWplY3RlZCA6IG51bGw7XG4gIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG59XG5cbi8qKlxu
ICogVGFrZSBhIHBvdGVudGlhbGx5IG1pc2JlaGF2aW5nIHJlc29sdmVyIGZ1bmN0aW9uIGFuZCBt
YWtlIHN1cmVcbiAqIG9uRnVsZmlsbGVkIGFuZCBvblJlamVjdGVkIGFyZSBvbmx5IGNhbGxlZCBv
bmNlLlxuICpcbiAqIE1ha2VzIG5vIGd1YXJhbnRlZXMgYWJvdXQgYXN5bmNocm9ueS5cbiAqL1xu
ZnVuY3Rpb24gZG9SZXNvbHZlKGZuLCBwcm9taXNlKSB7XG4gIHZhciBkb25lID0gZmFsc2U7XG4g
IHZhciByZXMgPSB0cnlDYWxsVHdvKGZuLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoZG9u
ZSkgcmV0dXJuO1xuICAgIGRvbmUgPSB0cnVlO1xuICAgIHJlc29sdmUocHJvbWlzZSwgdmFsdWUp
O1xuICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgaWYgKGRvbmUpIHJldHVybjtcbiAgICBk
b25lID0gdHJ1ZTtcbiAgICByZWplY3QocHJvbWlzZSwgcmVhc29uKTtcbiAgfSk7XG4gIGlmICgh
ZG9uZSAmJiByZXMgPT09IElTX0VSUk9SKSB7XG4gICAgZG9uZSA9IHRydWU7XG4gICAgcmVqZWN0
KHByb21pc2UsIExBU1RfRVJST1IpO1xuICB9XG59XG5cblxuLyoqKi8gfSksXG4vKiA1MiAqL1xu
LyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxu
dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCksXG4gICAgX2Fzc2ln
biA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9
IF9fd2VicGFja19yZXF1aXJlX18oNTMpO1xuXG52YXIgY2FuRGVmaW5lUHJvcGVydHkgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDU0KTtcbnZhciBlbXB0eU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJl
X18oMjMpO1xudmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG52YXIgbG93
UHJpb3JpdHlXYXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDQpO1xuXG4vKipcbiAqIEJh
c2UgY2xhc3MgaGVscGVycyBmb3IgdGhlIHVwZGF0aW5nIHN0YXRlIG9mIGEgY29tcG9uZW50Llxu
ICovXG5mdW5jdGlvbiBSZWFjdENvbXBvbmVudChwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xu
ICB0aGlzLnByb3BzID0gcHJvcHM7XG4gIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMu
cmVmcyA9IGVtcHR5T2JqZWN0O1xuICAvLyBXZSBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHVwZGF0
ZXIgYnV0IHRoZSByZWFsIG9uZSBnZXRzIGluamVjdGVkIGJ5IHRoZVxuICAvLyByZW5kZXJlci5c
biAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcbn1cblxu
UmVhY3RDb21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTtcblxuLyoqXG4g
KiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIHRvIG11dGF0ZVxu
ICogc3RhdGUuIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS5cbiAq
XG4gKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1l
ZGlhdGVseSB1cGRhdGVkLCBzb1xuICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxs
aW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5cbiAqXG4gKiBUaGVyZSBp
cyBubyBndWFyYW50ZWUgdGhhdCBjYWxscyB0byBgc2V0U3RhdGVgIHdpbGwgcnVuIHN5bmNocm9u
b3VzbHksXG4gKiBhcyB0aGV5IG1heSBldmVudHVhbGx5IGJlIGJhdGNoZWQgdG9nZXRoZXIuICBZ
b3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWxcbiAqIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVj
dXRlZCB3aGVuIHRoZSBjYWxsIHRvIHNldFN0YXRlIGlzIGFjdHVhbGx5XG4gKiBjb21wbGV0ZWQu
XG4gKlxuICogV2hlbiBhIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRvIHNldFN0YXRlLCBpdCB3aWxs
IGJlIGNhbGxlZCBhdCBzb21lIHBvaW50IGluXG4gKiB0aGUgZnV0dXJlIChub3Qgc3luY2hyb25v
dXNseSkuIEl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHVwIHRvIGRhdGVcbiAqIGNvbXBvbmVu
dCBhcmd1bWVudHMgKHN0YXRlLCBwcm9wcywgY29udGV4dCkuIFRoZXNlIHZhbHVlcyBjYW4gYmUg
ZGlmZmVyZW50XG4gKiBmcm9tIHRoaXMuKiBiZWNhdXNlIHlvdXIgZnVuY3Rpb24gbWF5IGJlIGNh
bGxlZCBhZnRlciByZWNlaXZlUHJvcHMgYnV0IGJlZm9yZVxuICogc2hvdWxkQ29tcG9uZW50VXBk
YXRlLCBhbmQgdGhpcyBuZXcgc3RhdGUsIHByb3BzLCBhbmQgY29udGV4dCB3aWxsIG5vdCB5ZXQg
YmVcbiAqIGFzc2lnbmVkIHRvIHRoaXMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259
IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgb3IgZnVuY3Rpb24gdG9cbiAqICAgICAg
ICBwcm9kdWNlIG5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBjdXJyZW50IHN0
YXRlLlxuICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBp
cyB1cGRhdGVkLlxuICogQGZpbmFsXG4gKiBAcHJvdGVjdGVkXG4gKi9cblJlYWN0Q29tcG9uZW50
LnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIChwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrKSB7
XG4gICEodHlwZW9mIHBhcnRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHBhcnRpYWxT
dGF0ZSA9PT0gJ2Z1bmN0aW9uJyB8fCBwYXJ0aWFsU3RhdGUgPT0gbnVsbCkgPyAgZmFsc2UgPyBp
bnZhcmlhbnQoZmFsc2UsICdzZXRTdGF0ZSguLi4pOiB0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUg
dmFyaWFibGVzIHRvIHVwZGF0ZSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0
IG9mIHN0YXRlIHZhcmlhYmxlcy4nKSA6IF9wcm9kSW52YXJpYW50KCc4NScpIDogdm9pZCAwO1xu
ICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsIHBhcnRpYWxTdGF0ZSk7XG4gIGlm
IChjYWxsYmFjaykge1xuICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2Fs
bGJhY2ssICdzZXRTdGF0ZScpO1xuICB9XG59O1xuXG4vKipcbiAqIEZvcmNlcyBhbiB1cGRhdGUu
IFRoaXMgc2hvdWxkIG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcbiAqIGNl
cnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuICpcbiAq
IFlvdSBtYXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVy
IGFzcGVjdCBvZiB0aGVcbiAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0
U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxuICpcbiAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91
bGRDb21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2VcbiAqIGBjb21wb25lbnRXaWxs
VXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG4gKlxuICogQHBhcmFtIHs/ZnVuY3Rp
b259IGNhbGxiYWNrIENhbGxlZCBhZnRlciB1cGRhdGUgaXMgY29tcGxldGUuXG4gKiBAZmluYWxc
biAqIEBwcm90ZWN0ZWRcbiAqL1xuUmVhY3RDb21wb25lbnQucHJvdG90eXBlLmZvcmNlVXBkYXRl
ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHRoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRh
dGUodGhpcyk7XG4gIGlmIChjYWxsYmFjaykge1xuICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2Fs
bGJhY2sodGhpcywgY2FsbGJhY2ssICdmb3JjZVVwZGF0ZScpO1xuICB9XG59O1xuXG4vKipcbiAq
IERlcHJlY2F0ZWQgQVBJcy4gVGhlc2UgQVBJcyB1c2VkIHRvIGV4aXN0IG9uIGNsYXNzaWMgUmVh
Y3QgY2xhc3NlcyBidXQgc2luY2VcbiAqIHdlIHdvdWxkIGxpa2UgdG8gZGVwcmVjYXRlIHRoZW0s
IHdlJ3JlIG5vdCBnb2luZyB0byBtb3ZlIHRoZW0gb3ZlciB0byB0aGlzXG4gKiBtb2Rlcm4gYmFz
ZSBjbGFzcy4gSW5zdGVhZCwgd2UgZGVmaW5lIGEgZ2V0dGVyIHRoYXQgd2FybnMgaWYgaXQncyBh
Y2Nlc3NlZC5cbiAqL1xuaWYgKGZhbHNlKSB7XG4gIHZhciBkZXByZWNhdGVkQVBJcyA9IHtcbiAg
ICBpc01vdW50ZWQ6IFsnaXNNb3VudGVkJywgJ0luc3RlYWQsIG1ha2Ugc3VyZSB0byBjbGVhbiB1
cCBzdWJzY3JpcHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluICcgKyAnY29tcG9uZW50V2ls
bFVubW91bnQgdG8gcHJldmVudCBtZW1vcnkgbGVha3MuJ10sXG4gICAgcmVwbGFjZVN0YXRlOiBb
J3JlcGxhY2VTdGF0ZScsICdSZWZhY3RvciB5b3VyIGNvZGUgdG8gdXNlIHNldFN0YXRlIGluc3Rl
YWQgKHNlZSAnICsgJ2h0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMzIz
NikuJ11cbiAgfTtcbiAgdmFyIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyA9IGZ1bmN0aW9uICht
ZXRob2ROYW1lLCBpbmZvKSB7XG4gICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG4gICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3RDb21wb25lbnQucHJvdG90eXBlLCBtZXRob2ROYW1l
LCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxvd1ByaW9yaXR5V2Fy
bmluZyhmYWxzZSwgJyVzKC4uLikgaXMgZGVwcmVjYXRlZCBpbiBwbGFpbiBKYXZhU2NyaXB0IFJl
YWN0IGNsYXNzZXMuICVzJywgaW5mb1swXSwgaW5mb1sxXSk7XG4gICAgICAgICAgcmV0dXJuIHVu
ZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBmb3IgKHZhciBm
bk5hbWUgaW4gZGVwcmVjYXRlZEFQSXMpIHtcbiAgICBpZiAoZGVwcmVjYXRlZEFQSXMuaGFzT3du
UHJvcGVydHkoZm5OYW1lKSkge1xuICAgICAgZGVmaW5lRGVwcmVjYXRpb25XYXJuaW5nKGZuTmFt
ZSwgZGVwcmVjYXRlZEFQSXNbZm5OYW1lXSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQmFz
ZSBjbGFzcyBoZWxwZXJzIGZvciB0aGUgdXBkYXRpbmcgc3RhdGUgb2YgYSBjb21wb25lbnQuXG4g
Ki9cbmZ1bmN0aW9uIFJlYWN0UHVyZUNvbXBvbmVudChwcm9wcywgY29udGV4dCwgdXBkYXRlcikg
e1xuICAvLyBEdXBsaWNhdGVkIGZyb20gUmVhY3RDb21wb25lbnQuXG4gIHRoaXMucHJvcHMgPSBw
cm9wcztcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5yZWZzID0gZW1wdHlPYmpl
Y3Q7XG4gIC8vIFdlIGluaXRpYWxpemUgdGhlIGRlZmF1bHQgdXBkYXRlciBidXQgdGhlIHJlYWwg
b25lIGdldHMgaW5qZWN0ZWQgYnkgdGhlXG4gIC8vIHJlbmRlcmVyLlxuICB0aGlzLnVwZGF0ZXIg
PSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xufVxuXG5mdW5jdGlvbiBDb21wb25l
bnREdW1teSgpIHt9XG5Db21wb25lbnREdW1teS5wcm90b3R5cGUgPSBSZWFjdENvbXBvbmVudC5w
cm90b3R5cGU7XG5SZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlID0gbmV3IENvbXBvbmVudER1
bW15KCk7XG5SZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUmVhY3RQ
dXJlQ29tcG9uZW50O1xuLy8gQXZvaWQgYW4gZXh0cmEgcHJvdG90eXBlIGp1bXAgZm9yIHRoZXNl
IG1ldGhvZHMuXG5fYXNzaWduKFJlYWN0UHVyZUNvbXBvbmVudC5wcm90b3R5cGUsIFJlYWN0Q29t
cG9uZW50LnByb3RvdHlwZSk7XG5SZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlLmlzUHVyZVJl
YWN0Q29tcG9uZW50ID0gdHJ1ZTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIENvbXBvbmVudDog
UmVhY3RDb21wb25lbnQsXG4gIFB1cmVDb21wb25lbnQ6IFJlYWN0UHVyZUNvbXBvbmVudFxufTtc
blxuLyoqKi8gfSksXG4vKiA1MyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJp
Z2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDEpO1xuXG5mdW5jdGlvbiB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkge1xu
ICBpZiAoZmFsc2UpIHtcbiAgICB2YXIgY29uc3RydWN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25z
dHJ1Y3RvcjtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyhmYWxzZSwgJyVzKC4uLik6IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50ZWQgb3IgbW91bnRp
bmcgY29tcG9uZW50LiAnICsgJ1RoaXMgdXN1YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb24g
YW4gdW5tb3VudGVkIGNvbXBvbmVudC4gJyArICdUaGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVj
ayB0aGUgY29kZSBmb3IgdGhlICVzIGNvbXBvbmVudC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1l
LCBjb25zdHJ1Y3RvciAmJiAoY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3Iu
bmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQgMDtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMg
aXMgdGhlIGFic3RyYWN0IEFQSSBmb3IgYW4gdXBkYXRlIHF1ZXVlLlxuICovXG52YXIgUmVhY3RO
b29wVXBkYXRlUXVldWUgPSB7XG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhp
cyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFz
c30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHdlIHdhbnQgdG8gdGVzdC5cbiAgICogQHJl
dHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqIEBw
cm90ZWN0ZWRcbiAgICogQGZpbmFsXG4gICAqL1xuICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChwdWJs
aWNJbnN0YW5jZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcblxuICAvKipcbiAgICogRW5x
dWV1ZSBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBhbGwgdGhlIHBlbmRp
bmcgdXBkYXRlc1xuICAgKiBoYXZlIHByb2Nlc3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFj
dENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gdXNlIGFzIGB0aGlzYCBjb250
ZXh0LlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRl
IGlzIHVwZGF0ZWQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUNhbGxiYWNrOiBm
dW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNhbGxiYWNrKSB7fSxcblxuICAvKipcbiAgICogRm9y
Y2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25v
d24gd2l0aFxuICAgKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFu
c2FjdGlvbi5cbiAgICpcbiAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBr
bm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuICAgKiBjb21wb25lbnQncyBzdGF0
ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cbiAgICpcbiAgICog
VGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxs
IGludm9rZVxuICAgKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRh
dGVgLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBp
bnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBl
bnF1ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuICAgIHdhcm5O
b29wKHB1YmxpY0luc3RhbmNlLCAnZm9yY2VVcGRhdGUnKTtcbiAgfSxcblxuICAvKipcbiAgICog
UmVwbGFjZXMgYWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAg
dG8gbXV0YXRlIHN0YXRlLlxuICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBp
bW11dGFibGUuXG4gICAqXG4gICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0
YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gICAqIGFjY2Vzc2luZyBgdGhp
cy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFs
dWUuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGlu
c3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcGxl
dGVTdGF0ZSBOZXh0IHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVSZXBs
YWNlU3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSkge1xuICAg
IHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAncmVwbGFjZVN0YXRlJyk7XG4gIH0sXG5cbiAgLyoq
XG4gICAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1
c2UgX3BlbmRpbmdTdGF0ZSBpc1xuICAgKiBpbnRlcm5hbC4gVGhpcyBwcm92aWRlcyBhIG1lcmdp
bmcgc3RyYXRlZ3kgdGhhdCBpcyBub3QgYXZhaWxhYmxlIHRvIGRlZXBcbiAgICogcHJvcGVydGll
cyB3aGljaCBpcyBjb25mdXNpbmcuIFRPRE86IEV4cG9zZSBwZW5kaW5nU3RhdGUgb3IgZG9uJ3Qg
dXNlIGl0XG4gICAqIGR1cmluZyB0aGUgbWVyZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RD
bGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxu
ICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSB0byBi
ZSBtZXJnZWQgd2l0aCBzdGF0ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlU2V0
U3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKSB7XG4gICAgd2Fy
bk5vb3AocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhw
b3J0cyA9IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xuXG4vKioqLyB9KSxcbi8qIDU0ICovXG4vKioq
LyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwi
dXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuXG5c
bnZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IGZhbHNlO1xuaWYgKGZhbHNlKSB7XG4gIHRyeSB7XG4g
ICAgLy8gJEZsb3dGaXhNZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMv
Mjg1XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAneCcsIHsgZ2V0OiBmdW5jdGlvbiAo
KSB7fSB9KTtcbiAgICBjYW5EZWZpbmVQcm9wZXJ0eSA9IHRydWU7XG4gIH0gY2F0Y2ggKHgpIHtc
biAgICAvLyBJRSB3aWxsIGZhaWwgb24gZGVmaW5lUHJvcGVydHlcbiAgfVxufVxuXG5tb2R1bGUu
ZXhwb3J0cyA9IGNhbkRlZmluZVByb3BlcnR5O1xuXG4vKioqLyB9KSxcbi8qIDU1ICovXG4vKioq
LyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwi
dXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuXG5c
bi8vIFRoZSBTeW1ib2wgdXNlZCB0byB0YWcgdGhlIFJlYWN0RWxlbWVudCB0eXBlLiBJZiB0aGVy
ZSBpcyBubyBuYXRpdmUgU3ltYm9sXG4vLyBub3IgcG9seWZpbGwsIHRoZW4gYSBwbGFpbiBudW1i
ZXIgaXMgdXNlZCBmb3IgcGVyZm9ybWFuY2UuXG5cbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSB0
eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbFsnZm9yJ10gJiYgU3ltYm9sWydm
b3InXSgncmVhY3QuZWxlbWVudCcpIHx8IDB4ZWFjNztcblxubW9kdWxlLmV4cG9ydHMgPSBSRUFD
VF9FTEVNRU5UX1RZUEU7XG5cbi8qKiovIH0pLFxuLyogNTYgKi9cbi8qKiovIChmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7
XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG5cblxuLy8gUmVhY3QgMTUuNSByZWZlcmVu
Y2VzIHRoaXMgbW9kdWxlLCBhbmQgYXNzdW1lcyBQcm9wVHlwZXMgYXJlIHN0aWxsIGNhbGxhYmxl
IGluIHByb2R1Y3Rpb24uXG4vLyBUaGVyZWZvcmUgd2UgcmUtZXhwb3J0IGRldmVsb3BtZW50LW9u
bHkgdmVyc2lvbiB3aXRoIGFsbCB0aGUgUHJvcFR5cGVzIGNoZWNrcyBoZXJlLlxuLy8gSG93ZXZl
ciBpZiBvbmUgaXMgbWlncmF0aW5nIHRvIHRoZSBgcHJvcC10eXBlc2AgbnBtIGxpYnJhcnksIHRo
ZXkgd2lsbCBnbyB0aHJvdWdoIHRoZVxuLy8gYGluZGV4LmpzYCBlbnRyeSBwb2ludCwgYW5kIGl0
IHdpbGwgYnJhbmNoIGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnQuXG52YXIgZmFjdG9yeSA9
IF9fd2VicGFja19yZXF1aXJlX18oMTEyKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXNW
YWxpZEVsZW1lbnQpIHtcbiAgLy8gSXQgaXMgc3RpbGwgYWxsb3dlZCBpbiAxNS41LlxuICB2YXIg
dGhyb3dPbkRpcmVjdEFjY2VzcyA9IGZhbHNlO1xuICByZXR1cm4gZmFjdG9yeShpc1ZhbGlkRWxl
bWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59O1xuXG5cbi8qKiovIH0pLFxuLyogNTcgKi9c
bi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG5cblxudmFy
IFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9X
SUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtc
blxuXG4vKioqLyB9KSxcbi8qIDU4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5
cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52YXIgUmVhY3RET01Db21wb25lbnRGbGFncyA9IHtc
biAgaGFzQ2FjaGVkQ2hpbGROb2RlczogMSA8PCAwXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJl
YWN0RE9NQ29tcG9uZW50RmxhZ3M7XG5cbi8qKiovIH0pLFxuLyogNTkgKi9cbi8qKiovIChmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3Ry
aWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG5cblxudmFyIF9w
cm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxudmFyIGludmFyaWFudCA9
IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8qKlxuICogQWNjdW11bGF0ZXMgaXRlbXMgdGhh
dCBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCBpbnRvIHRoZSBmaXJzdCBvbmUuIFRoaXNc
biAqIGlzIHVzZWQgdG8gY29uc2VydmUgbWVtb3J5IGJ5IGF2b2lkaW5nIGFycmF5IGFsbG9jYXRp
b25zLCBhbmQgdGh1cyBzYWNyaWZpY2VzXG4gKiBBUEkgY2xlYW5uZXNzLiBTaW5jZSBgY3VycmVu
dGAgY2FuIGJlIG51bGwgYmVmb3JlIGJlaW5nIHBhc3NlZCBpbiBhbmQgbm90XG4gKiBudWxsIGFm
dGVyIHRoaXMgZnVuY3Rpb24sIG1ha2Ugc3VyZSB0byBhc3NpZ24gaXQgYmFjayB0byBgY3VycmVu
dGA6XG4gKlxuICogYGEgPSBhY2N1bXVsYXRlSW50byhhLCBiKTtgXG4gKlxuICogVGhpcyBBUEkg
c2hvdWxkIGJlIHNwYXJpbmdseSB1c2VkLiBUcnkgYGFjY3VtdWxhdGVgIGZvciBzb21ldGhpbmcg
Y2xlYW5lci5cbiAqXG4gKiBAcmV0dXJuIHsqfGFycmF5PCo+fSBBbiBhY2N1bXVsYXRpb24gb2Yg
aXRlbXMuXG4gKi9cblxuZnVuY3Rpb24gYWNjdW11bGF0ZUludG8oY3VycmVudCwgbmV4dCkge1xu
ICAhKG5leHQgIT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdhY2N1bXVsYXRl
SW50byguLi4pOiBBY2N1bXVsYXRlZCBpdGVtcyBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5l
ZC4nKSA6IF9wcm9kSW52YXJpYW50KCczMCcpIDogdm9pZCAwO1xuXG4gIGlmIChjdXJyZW50ID09
IG51bGwpIHtcbiAgICByZXR1cm4gbmV4dDtcbiAgfVxuXG4gIC8vIEJvdGggYXJlIG5vdCBlbXB0
eS4gV2FybmluZzogTmV2ZXIgY2FsbCB4LmNvbmNhdCh5KSB3aGVuIHlvdSBhcmUgbm90XG4gIC8v
IGNlcnRhaW4gdGhhdCB4IGlzIGFuIEFycmF5ICh4IGNvdWxkIGJlIGEgc3RyaW5nIHdpdGggY29u
Y2F0IG1ldGhvZCkuXG4gIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnQpKSB7XG4gICAgaWYgKEFy
cmF5LmlzQXJyYXkobmV4dCkpIHtcbiAgICAgIGN1cnJlbnQucHVzaC5hcHBseShjdXJyZW50LCBu
ZXh0KTtcbiAgICAgIHJldHVybiBjdXJyZW50O1xuICAgIH1cbiAgICBjdXJyZW50LnB1c2gobmV4
dCk7XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShuZXh0
KSkge1xuICAgIC8vIEEgYml0IHRvbyBkYW5nZXJvdXMgdG8gbXV0YXRlIGBuZXh0YC5cbiAgICBy
ZXR1cm4gW2N1cnJlbnRdLmNvbmNhdChuZXh0KTtcbiAgfVxuXG4gIHJldHVybiBbY3VycmVudCwg
bmV4dF07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYWNjdW11bGF0ZUludG87XG5cbi8qKiovIH0p
LFxuLyogNjAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKiBcbiAqL1xuXG5cblxuLyoqXG4gKiBAcGFyYW0ge2FycmF5fSBhcnIgYW4gXCJhY2N1bXVs
YXRpb25cIiBvZiBpdGVtcyB3aGljaCBpcyBlaXRoZXIgYW4gQXJyYXkgb3JcbiAqIGEgc2luZ2xl
IGl0ZW0uIFVzZWZ1bCB3aGVuIHBhaXJlZCB3aXRoIHRoZSBgYWNjdW11bGF0ZWAgbW9kdWxlLiBU
aGlzIGlzIGFcbiAqIHNpbXBsZSB1dGlsaXR5IHRoYXQgYWxsb3dzIHVzIHRvIHJlYXNvbiBhYm91
dCBhIGNvbGxlY3Rpb24gb2YgaXRlbXMsIGJ1dFxuICogaGFuZGxpbmcgdGhlIGNhc2Ugd2hlbiB0
aGVyZSBpcyBleGFjdGx5IG9uZSBpdGVtIChhbmQgd2UgZG8gbm90IG5lZWQgdG9cbiAqIGFsbG9j
YXRlIGFuIGFycmF5KS5cbiAqL1xuXG5mdW5jdGlvbiBmb3JFYWNoQWNjdW11bGF0ZWQoYXJyLCBj
Yiwgc2NvcGUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgIGFyci5mb3JFYWNo
KGNiLCBzY29wZSk7XG4gIH0gZWxzZSBpZiAoYXJyKSB7XG4gICAgY2IuY2FsbChzY29wZSwgYXJy
KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZvckVhY2hBY2N1bXVsYXRlZDtcblxuLyoq
Ki8gfSksXG4vKiA2MSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG5cblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg1KTtcblxudmFyIGNvbnRlbnRLZXkgPSBudWxsO1xuXG4vKipcbiAqIEdldHMgdGhl
IGtleSB1c2VkIHRvIGFjY2VzcyB0ZXh0IGNvbnRlbnQgb24gYSBET00gbm9kZS5cbiAqXG4gKiBA
cmV0dXJuIHs/c3RyaW5nfSBLZXkgdXNlZCB0byBhY2Nlc3MgdGV4dCBjb250ZW50LlxuICogQGlu
dGVybmFsXG4gKi9cbmZ1bmN0aW9uIGdldFRleHRDb250ZW50QWNjZXNzb3IoKSB7XG4gIGlmICgh
Y29udGVudEtleSAmJiBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAgICAvLyBQ
cmVmZXIgdGV4dENvbnRlbnQgdG8gaW5uZXJUZXh0IGJlY2F1c2UgbWFueSBicm93c2VycyBzdXBw
b3J0IGJvdGggYnV0XG4gICAgLy8gU1ZHIDx0ZXh0PiBlbGVtZW50cyBkb24ndCBzdXBwb3J0IGlu
bmVyVGV4dCBldmVuIHdoZW4gPGRpdj4gZG9lcy5cbiAgICBjb250ZW50S2V5ID0gJ3RleHRDb250
ZW50JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgPyAndGV4dENvbnRlbnQnIDogJ2lubmVy
VGV4dCc7XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnRLZXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0g
Z2V0VGV4dENvbnRlbnRBY2Nlc3NvcjtcblxuLyoqKi8gfSksXG4vKiA2MiAqL1xuLyoqKi8gKGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBz
dHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cblxuXG52YXIg
X3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG5mdW5jdGlvbiBfY2xh
c3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3Rh
bmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBh
IGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgUG9vbGVkQ2xhc3MgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEyKTtcblxudmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18o
MCk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCBwc2V1ZG8tZXZlbnQgbW9kdWxlIHRvIGhlbHAg
a2VlcCB0cmFjayBvZiBjb21wb25lbnRzIHdhaXRpbmcgdG9cbiAqIGJlIG5vdGlmaWVkIHdoZW4g
dGhlaXIgRE9NIHJlcHJlc2VudGF0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciB1c2UuXG4gKlxuICog
VGhpcyBpbXBsZW1lbnRzIGBQb29sZWRDbGFzc2AsIHNvIHlvdSBzaG91bGQgbmV2ZXIgbmVlZCB0
byBpbnN0YW50aWF0ZSB0aGlzLlxuICogSW5zdGVhZCwgdXNlIGBDYWxsYmFja1F1ZXVlLmdldFBv
b2xlZCgpYC5cbiAqXG4gKiBAY2xhc3MgUmVhY3RNb3VudFJlYWR5XG4gKiBAaW1wbGVtZW50cyBQ
b29sZWRDbGFzc1xuICogQGludGVybmFsXG4gKi9cblxudmFyIENhbGxiYWNrUXVldWUgPSBmdW5j
dGlvbiAoKSB7XG4gIGZ1bmN0aW9uIENhbGxiYWNrUXVldWUoYXJnKSB7XG4gICAgX2NsYXNzQ2Fs
bENoZWNrKHRoaXMsIENhbGxiYWNrUXVldWUpO1xuXG4gICAgdGhpcy5fY2FsbGJhY2tzID0gbnVs
bDtcbiAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG4gICAgdGhpcy5fYXJnID0gYXJnO1xuICB9
XG5cbiAgLyoqXG4gICAqIEVucXVldWVzIGEgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCB3aGVuIGBu
b3RpZnlBbGxgIGlzIGludm9rZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxi
YWNrIEludm9rZWQgd2hlbiBgbm90aWZ5QWxsYCBpcyBpbnZva2VkLlxuICAgKiBAcGFyYW0gez9v
YmplY3R9IGNvbnRleHQgQ29udGV4dCB0byBjYWxsIGBjYWxsYmFja2Agd2l0aC5cbiAgICogQGlu
dGVybmFsXG4gICAqL1xuXG5cbiAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZSA9IGZ1
bmN0aW9uIGVucXVldWUoY2FsbGJhY2ssIGNvbnRleHQpIHtcbiAgICB0aGlzLl9jYWxsYmFja3Mg
PSB0aGlzLl9jYWxsYmFja3MgfHwgW107XG4gICAgdGhpcy5fY2FsbGJhY2tzLnB1c2goY2FsbGJh
Y2spO1xuICAgIHRoaXMuX2NvbnRleHRzID0gdGhpcy5fY29udGV4dHMgfHwgW107XG4gICAgdGhp
cy5fY29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgfTtcblxuICAvKipcbiAgICogSW52b2tlcyBh
bGwgZW5xdWV1ZWQgY2FsbGJhY2tzIGFuZCBjbGVhcnMgdGhlIHF1ZXVlLiBUaGlzIGlzIGludm9r
ZWQgYWZ0ZXJcbiAgICogdGhlIERPTSByZXByZXNlbnRhdGlvbiBvZiBhIGNvbXBvbmVudCBoYXMg
YmVlbiBjcmVhdGVkIG9yIHVwZGF0ZWQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cblxu
XG4gIENhbGxiYWNrUXVldWUucHJvdG90eXBlLm5vdGlmeUFsbCA9IGZ1bmN0aW9uIG5vdGlmeUFs
bCgpIHtcbiAgICB2YXIgY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzO1xuICAgIHZhciBjb250
ZXh0cyA9IHRoaXMuX2NvbnRleHRzO1xuICAgIHZhciBhcmcgPSB0aGlzLl9hcmc7XG4gICAgaWYg
KGNhbGxiYWNrcyAmJiBjb250ZXh0cykge1xuICAgICAgIShjYWxsYmFja3MubGVuZ3RoID09PSBj
b250ZXh0cy5sZW5ndGgpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnTWlzbWF0Y2hlZCBs
aXN0IG9mIGNvbnRleHRzIGluIGNhbGxiYWNrIHF1ZXVlJykgOiBfcHJvZEludmFyaWFudCgnMjQn
KSA6IHZvaWQgMDtcbiAgICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7XG4gICAgICB0aGlzLl9j
b250ZXh0cyA9IG51bGw7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGxiYWNrcy5sZW5n
dGg7IGkrKykge1xuICAgICAgICBjYWxsYmFja3NbaV0uY2FsbChjb250ZXh0c1tpXSwgYXJnKTtc
biAgICAgIH1cbiAgICAgIGNhbGxiYWNrcy5sZW5ndGggPSAwO1xuICAgICAgY29udGV4dHMubGVu
Z3RoID0gMDtcbiAgICB9XG4gIH07XG5cbiAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUuY2hlY2tw
b2ludCA9IGZ1bmN0aW9uIGNoZWNrcG9pbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGxiYWNr
cyA/IHRoaXMuX2NhbGxiYWNrcy5sZW5ndGggOiAwO1xuICB9O1xuXG4gIENhbGxiYWNrUXVldWUu
cHJvdG90eXBlLnJvbGxiYWNrID0gZnVuY3Rpb24gcm9sbGJhY2sobGVuKSB7XG4gICAgaWYgKHRo
aXMuX2NhbGxiYWNrcyAmJiB0aGlzLl9jb250ZXh0cykge1xuICAgICAgdGhpcy5fY2FsbGJhY2tz
Lmxlbmd0aCA9IGxlbjtcbiAgICAgIHRoaXMuX2NvbnRleHRzLmxlbmd0aCA9IGxlbjtcbiAgICB9
XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgaW50ZXJuYWwgcXVldWUuXG4gICAqXG4g
ICAqIEBpbnRlcm5hbFxuICAgKi9cblxuXG4gIENhbGxiYWNrUXVldWUucHJvdG90eXBlLnJlc2V0
ID0gZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgdGhpcy5fY2FsbGJhY2tzID0gbnVsbDtcbiAgICB0
aGlzLl9jb250ZXh0cyA9IG51bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIGBQb29sZWRDbGFzc2Ag
bG9va3MgZm9yIHRoaXMuXG4gICAqL1xuXG5cbiAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUuZGVz
dHJ1Y3RvciA9IGZ1bmN0aW9uIGRlc3RydWN0b3IoKSB7XG4gICAgdGhpcy5yZXNldCgpO1xuICB9
O1xuXG4gIHJldHVybiBDYWxsYmFja1F1ZXVlO1xufSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBv
b2xlZENsYXNzLmFkZFBvb2xpbmdUbyhDYWxsYmFja1F1ZXVlKTtcblxuLyoqKi8gfSksXG4vKiA2
MyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxu
ICovXG5cblxuXG52YXIgUmVhY3RGZWF0dXJlRmxhZ3MgPSB7XG4gIC8vIFdoZW4gdHJ1ZSwgY2Fs
bCBjb25zb2xlLnRpbWUoKSBiZWZvcmUgYW5kIC50aW1lRW5kKCkgYWZ0ZXIgZWFjaCB0b3AtbGV2
ZWxcbiAgLy8gcmVuZGVyIChib3RoIGluaXRpYWwgcmVuZGVycyBhbmQgdXBkYXRlcykuIFVzZWZ1
bCB3aGVuIGxvb2tpbmcgYXQgcHJvZC1tb2RlXG4gIC8vIHRpbWVsaW5lIHByb2ZpbGVzIGluIENo
cm9tZSwgZm9yIGV4YW1wbGUuXG4gIGxvZ1RvcExldmVsUmVuZGVyczogZmFsc2Vcbn07XG5cbm1v
ZHVsZS5leHBvcnRzID0gUmVhY3RGZWF0dXJlRmxhZ3M7XG5cbi8qKiovIH0pLFxuLyogNjQgKi9c
bi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5c
bnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXG5m
dW5jdGlvbiBpc0NoZWNrYWJsZShlbGVtKSB7XG4gIHZhciB0eXBlID0gZWxlbS50eXBlO1xuICB2
YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lO1xuICByZXR1cm4gbm9kZU5hbWUgJiYgbm9kZU5h
bWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JyAmJiAodHlwZSA9PT0gJ2NoZWNrYm94JyB8fCB0
eXBlID09PSAncmFkaW8nKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhY2tlcihpbnN0KSB7XG4gIHJl
dHVybiBpbnN0Ll93cmFwcGVyU3RhdGUudmFsdWVUcmFja2VyO1xufVxuXG5mdW5jdGlvbiBhdHRh
Y2hUcmFja2VyKGluc3QsIHRyYWNrZXIpIHtcbiAgaW5zdC5fd3JhcHBlclN0YXRlLnZhbHVlVHJh
Y2tlciA9IHRyYWNrZXI7XG59XG5cbmZ1bmN0aW9uIGRldGFjaFRyYWNrZXIoaW5zdCkge1xuICBk
ZWxldGUgaW5zdC5fd3JhcHBlclN0YXRlLnZhbHVlVHJhY2tlcjtcbn1cblxuZnVuY3Rpb24gZ2V0
VmFsdWVGcm9tTm9kZShub2RlKSB7XG4gIHZhciB2YWx1ZTtcbiAgaWYgKG5vZGUpIHtcbiAgICB2
YWx1ZSA9IGlzQ2hlY2thYmxlKG5vZGUpID8gJycgKyBub2RlLmNoZWNrZWQgOiBub2RlLnZhbHVl
O1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxudmFyIGlucHV0VmFsdWVUcmFja2luZyA9IHtc
biAgLy8gZXhwb3NlZCBmb3IgdGVzdGluZ1xuICBfZ2V0VHJhY2tlckZyb21Ob2RlOiBmdW5jdGlv
biAobm9kZSkge1xuICAgIHJldHVybiBnZXRUcmFja2VyKFJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpKTtcbiAgfSxcblxuXG4gIHRyYWNrOiBmdW5jdGlvbiAo
aW5zdCkge1xuICAgIGlmIChnZXRUcmFja2VyKGluc3QpKSB7XG4gICAgICByZXR1cm47XG4gICAg
fVxuXG4gICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0
YW5jZShpbnN0KTtcbiAgICB2YXIgdmFsdWVGaWVsZCA9IGlzQ2hlY2thYmxlKG5vZGUpID8gJ2No
ZWNrZWQnIDogJ3ZhbHVlJztcbiAgICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Iobm9kZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHZhbHVlRmllbGQpO1xu
XG4gICAgdmFyIGN1cnJlbnRWYWx1ZSA9ICcnICsgbm9kZVt2YWx1ZUZpZWxkXTtcblxuICAgIC8v
IGlmIHNvbWVvbmUgaGFzIGFscmVhZHkgZGVmaW5lZCBhIHZhbHVlIG9yIFNhZmFyaSwgdGhlbiBi
YWlsXG4gICAgLy8gYW5kIGRvbid0IHRyYWNrIHZhbHVlIHdpbGwgY2F1c2Ugb3ZlciByZXBvcnRp
bmcgb2YgY2hhbmdlcyxcbiAgICAvLyBidXQgaXQncyBiZXR0ZXIgdGhlbiBhIGhhcmQgZmFpbHVy
ZVxuICAgIC8vIChuZWVkZWQgZm9yIGNlcnRhaW4gdGVzdHMgdGhhdCBzcHlPbiBpbnB1dCB2YWx1
ZXMgYW5kIFNhZmFyaSlcbiAgICBpZiAobm9kZS5oYXNPd25Qcm9wZXJ0eSh2YWx1ZUZpZWxkKSB8
fCB0eXBlb2YgZGVzY3JpcHRvci5nZXQgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIGRlc2NyaXB0
b3Iuc2V0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KG5vZGUsIHZhbHVlRmllbGQsIHtcbiAgICAgIGVudW1lcmFibGU6
IGRlc2NyaXB0b3IuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAg
IGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvci5nZXQuY2FsbCh0
aGlzKTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBj
dXJyZW50VmFsdWUgPSAnJyArIHZhbHVlO1xuICAgICAgICBkZXNjcmlwdG9yLnNldC5jYWxsKHRo
aXMsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGF0dGFjaFRyYWNrZXIoaW5zdCwg
e1xuICAgICAgZ2V0VmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRW
YWx1ZTtcbiAgICAgIH0sXG4gICAgICBzZXRWYWx1ZTogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAg
ICAgIGN1cnJlbnRWYWx1ZSA9ICcnICsgdmFsdWU7XG4gICAgICB9LFxuICAgICAgc3RvcFRyYWNr
aW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGRldGFjaFRyYWNrZXIoaW5zdCk7XG4gICAgICAg
IGRlbGV0ZSBub2RlW3ZhbHVlRmllbGRdO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIHVw
ZGF0ZVZhbHVlSWZDaGFuZ2VkOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIGlmICghaW5zdCkge1xu
ICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgdHJhY2tlciA9IGdldFRyYWNrZXIo
aW5zdCk7XG5cbiAgICBpZiAoIXRyYWNrZXIpIHtcbiAgICAgIGlucHV0VmFsdWVUcmFja2luZy50
cmFjayhpbnN0KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhciBsYXN0VmFs
dWUgPSB0cmFja2VyLmdldFZhbHVlKCk7XG4gICAgdmFyIG5leHRWYWx1ZSA9IGdldFZhbHVlRnJv
bU5vZGUoUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkpO1xu
XG4gICAgaWYgKG5leHRWYWx1ZSAhPT0gbGFzdFZhbHVlKSB7XG4gICAgICB0cmFja2VyLnNldFZh
bHVlKG5leHRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4g
ZmFsc2U7XG4gIH0sXG4gIHN0b3BUcmFja2luZzogZnVuY3Rpb24gKGluc3QpIHtcbiAgICB2YXIg
dHJhY2tlciA9IGdldFRyYWNrZXIoaW5zdCk7XG4gICAgaWYgKHRyYWNrZXIpIHtcbiAgICAgIHRy
YWNrZXIuc3RvcFRyYWNraW5nKCk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9
IGlucHV0VmFsdWVUcmFja2luZztcblxuLyoqKi8gfSksXG4vKiA2NSAqL1xuLyoqKi8gKGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJp
Y3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cblxuXG4vKipcbiAq
IEBzZWUgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9t
dWx0aXBhZ2UvdGhlLWlucHV0LWVsZW1lbnQuaHRtbCNpbnB1dC10eXBlLWF0dHItc3VtbWFyeVxu
ICovXG5cbnZhciBzdXBwb3J0ZWRJbnB1dFR5cGVzID0ge1xuICBjb2xvcjogdHJ1ZSxcbiAgZGF0
ZTogdHJ1ZSxcbiAgZGF0ZXRpbWU6IHRydWUsXG4gICdkYXRldGltZS1sb2NhbCc6IHRydWUsXG4g
IGVtYWlsOiB0cnVlLFxuICBtb250aDogdHJ1ZSxcbiAgbnVtYmVyOiB0cnVlLFxuICBwYXNzd29y
ZDogdHJ1ZSxcbiAgcmFuZ2U6IHRydWUsXG4gIHNlYXJjaDogdHJ1ZSxcbiAgdGVsOiB0cnVlLFxu
ICB0ZXh0OiB0cnVlLFxuICB0aW1lOiB0cnVlLFxuICB1cmw6IHRydWUsXG4gIHdlZWs6IHRydWVc
bn07XG5cbmZ1bmN0aW9uIGlzVGV4dElucHV0RWxlbWVudChlbGVtKSB7XG4gIHZhciBub2RlTmFt
ZSA9IGVsZW0gJiYgZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7
XG5cbiAgaWYgKG5vZGVOYW1lID09PSAnaW5wdXQnKSB7XG4gICAgcmV0dXJuICEhc3VwcG9ydGVk
SW5wdXRUeXBlc1tlbGVtLnR5cGVdO1xuICB9XG5cbiAgaWYgKG5vZGVOYW1lID09PSAndGV4dGFy
ZWEnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1v
ZHVsZS5leHBvcnRzID0gaXNUZXh0SW5wdXRFbGVtZW50O1xuXG4vKioqLyB9KSxcbi8qIDY2ICov
XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cblxu
XG52YXIgVmlld3BvcnRNZXRyaWNzID0ge1xuICBjdXJyZW50U2Nyb2xsTGVmdDogMCxcblxuICBj
dXJyZW50U2Nyb2xsVG9wOiAwLFxuXG4gIHJlZnJlc2hTY3JvbGxWYWx1ZXM6IGZ1bmN0aW9uIChz
Y3JvbGxQb3NpdGlvbikge1xuICAgIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsTGVmdCA9
IHNjcm9sbFBvc2l0aW9uLng7XG4gICAgVmlld3BvcnRNZXRyaWNzLmN1cnJlbnRTY3JvbGxUb3Ag
PSBzY3JvbGxQb3NpdGlvbi55O1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFZpZXdwb3J0
TWV0cmljcztcblxuLyoqKi8gfSksXG4vKiA2NyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxu
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbnZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dz
ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTtcbnZhciBzZXRJbm5lckhUTUwgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDI2KTtcblxuLyoqXG4gKiBTZXQgdGhlIHRleHRDb250ZW50IHByb3BlcnR5
IG9mIGEgbm9kZSwgZW5zdXJpbmcgdGhhdCB3aGl0ZXNwYWNlIGlzIHByZXNlcnZlZFxuICogZXZl
biBpbiBJRTguIGlubmVyVGV4dCBpcyBhIHBvb3Igc3Vic3RpdHV0ZSBmb3IgdGV4dENvbnRlbnQg
YW5kLCBhbW9uZyBtYW55XG4gKiBpc3N1ZXMsIGluc2VydHMgPGJyPiBpbnN0ZWFkIG9mIHRoZSBs
aXRlcmFsIG5ld2xpbmUgY2hhcnMuIGlubmVySFRNTCBiZWhhdmVzXG4gKiBhcyBpdCBzaG91bGQu
XG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4
dFxuICogQGludGVybmFsXG4gKi9cbnZhciBzZXRUZXh0Q29udGVudCA9IGZ1bmN0aW9uIChub2Rl
LCB0ZXh0KSB7XG4gIGlmICh0ZXh0KSB7XG4gICAgdmFyIGZpcnN0Q2hpbGQgPSBub2RlLmZpcnN0
Q2hpbGQ7XG5cbiAgICBpZiAoZmlyc3RDaGlsZCAmJiBmaXJzdENoaWxkID09PSBub2RlLmxhc3RD
aGlsZCAmJiBmaXJzdENoaWxkLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICBmaXJzdENoaWxkLm5v
ZGVWYWx1ZSA9IHRleHQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIG5vZGUudGV4dENv
bnRlbnQgPSB0ZXh0O1xufTtcblxuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkg
e1xuICBpZiAoISgndGV4dENvbnRlbnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpIHtc
biAgICBzZXRUZXh0Q29udGVudCA9IGZ1bmN0aW9uIChub2RlLCB0ZXh0KSB7XG4gICAgICBpZiAo
bm9kZS5ub2RlVHlwZSA9PT0gMykge1xuICAgICAgICBub2RlLm5vZGVWYWx1ZSA9IHRleHQ7XG4g
ICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNldElubmVySFRNTChub2RlLCBlc2NhcGVU
ZXh0Q29udGVudEZvckJyb3dzZXIodGV4dCkpO1xuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4
cG9ydHMgPSBzZXRUZXh0Q29udGVudDtcblxuLyoqKi8gfSksXG4vKiA2OCAqL1xuLyoqKi8gKGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBz
dHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbi8qKlxu
ICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlIGlucHV0L3RleHRhcmVhIHRvIGZvY3VzXG4gKi9c
blxuZnVuY3Rpb24gZm9jdXNOb2RlKG5vZGUpIHtcbiAgLy8gSUU4IGNhbiB0aHJvdyBcIkNhbid0
IG1vdmUgZm9jdXMgdG8gdGhlIGNvbnRyb2wgYmVjYXVzZSBpdCBpcyBpbnZpc2libGUsXG4gIC8v
IG5vdCBlbmFibGVkLCBvciBvZiBhIHR5cGUgdGhhdCBkb2VzIG5vdCBhY2NlcHQgdGhlIGZvY3Vz
LlwiIGZvciBhbGwga2luZHMgb2ZcbiAgLy8gcmVhc29ucyB0aGF0IGFyZSB0b28gZXhwZW5zaXZl
IGFuZCBmcmFnaWxlIHRvIHRlc3QuXG4gIHRyeSB7XG4gICAgbm9kZS5mb2N1cygpO1xuICB9IGNh
dGNoIChlKSB7fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZvY3VzTm9kZTtcblxuLyoqKi8gfSks
XG4vKiA2OSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqL1xuXG5cblxuLyoqXG4gKiBDU1MgcHJvcGVydGllcyB3aGljaCBhY2NlcHQgbnVtYmVycyBi
dXQgYXJlIG5vdCBpbiB1bml0cyBvZiBcInB4XCIuXG4gKi9cblxudmFyIGlzVW5pdGxlc3NOdW1i
ZXIgPSB7XG4gIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiB0cnVlLFxuICBib3JkZXJJbWFnZU91
dHNldDogdHJ1ZSxcbiAgYm9yZGVySW1hZ2VTbGljZTogdHJ1ZSxcbiAgYm9yZGVySW1hZ2VXaWR0
aDogdHJ1ZSxcbiAgYm94RmxleDogdHJ1ZSxcbiAgYm94RmxleEdyb3VwOiB0cnVlLFxuICBib3hP
cmRpbmFsR3JvdXA6IHRydWUsXG4gIGNvbHVtbkNvdW50OiB0cnVlLFxuICBmbGV4OiB0cnVlLFxu
ICBmbGV4R3JvdzogdHJ1ZSxcbiAgZmxleFBvc2l0aXZlOiB0cnVlLFxuICBmbGV4U2hyaW5rOiB0
cnVlLFxuICBmbGV4TmVnYXRpdmU6IHRydWUsXG4gIGZsZXhPcmRlcjogdHJ1ZSxcbiAgZ3JpZFJv
dzogdHJ1ZSxcbiAgZ3JpZFJvd0VuZDogdHJ1ZSxcbiAgZ3JpZFJvd1NwYW46IHRydWUsXG4gIGdy
aWRSb3dTdGFydDogdHJ1ZSxcbiAgZ3JpZENvbHVtbjogdHJ1ZSxcbiAgZ3JpZENvbHVtbkVuZDog
dHJ1ZSxcbiAgZ3JpZENvbHVtblNwYW46IHRydWUsXG4gIGdyaWRDb2x1bW5TdGFydDogdHJ1ZSxc
biAgZm9udFdlaWdodDogdHJ1ZSxcbiAgbGluZUNsYW1wOiB0cnVlLFxuICBsaW5lSGVpZ2h0OiB0
cnVlLFxuICBvcGFjaXR5OiB0cnVlLFxuICBvcmRlcjogdHJ1ZSxcbiAgb3JwaGFuczogdHJ1ZSxc
biAgdGFiU2l6ZTogdHJ1ZSxcbiAgd2lkb3dzOiB0cnVlLFxuICB6SW5kZXg6IHRydWUsXG4gIHpv
b206IHRydWUsXG5cbiAgLy8gU1ZHLXJlbGF0ZWQgcHJvcGVydGllc1xuICBmaWxsT3BhY2l0eTog
dHJ1ZSxcbiAgZmxvb2RPcGFjaXR5OiB0cnVlLFxuICBzdG9wT3BhY2l0eTogdHJ1ZSxcbiAgc3Ry
b2tlRGFzaGFycmF5OiB0cnVlLFxuICBzdHJva2VEYXNob2Zmc2V0OiB0cnVlLFxuICBzdHJva2VN
aXRlcmxpbWl0OiB0cnVlLFxuICBzdHJva2VPcGFjaXR5OiB0cnVlLFxuICBzdHJva2VXaWR0aDog
dHJ1ZVxufTtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4IHZlbmRvci1zcGVjaWZp
YyBwcmVmaXgsIGVnOiBXZWJraXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgc3R5bGUgbmFtZSwg
ZWc6IHRyYW5zaXRpb25EdXJhdGlvblxuICogQHJldHVybiB7c3RyaW5nfSBzdHlsZSBuYW1lIHBy
ZWZpeGVkIHdpdGggYHByZWZpeGAsIHByb3Blcmx5IGNhbWVsQ2FzZWQsIGVnOlxuICogV2Via2l0
VHJhbnNpdGlvbkR1cmF0aW9uXG4gKi9cbmZ1bmN0aW9uIHByZWZpeEtleShwcmVmaXgsIGtleSkg
e1xuICByZXR1cm4gcHJlZml4ICsga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnN1
YnN0cmluZygxKTtcbn1cblxuLyoqXG4gKiBTdXBwb3J0IHN0eWxlIG5hbWVzIHRoYXQgbWF5IGNv
bWUgcGFzc2VkIGluIHByZWZpeGVkIGJ5IGFkZGluZyBwZXJtdXRhdGlvbnNcbiAqIG9mIHZlbmRv
ciBwcmVmaXhlcy5cbiAqL1xudmFyIHByZWZpeGVzID0gWydXZWJraXQnLCAnbXMnLCAnTW96Jywg
J08nXTtcblxuLy8gVXNpbmcgT2JqZWN0LmtleXMgaGVyZSwgb3IgZWxzZSB0aGUgdmFuaWxsYSBm
b3ItaW4gbG9vcCBtYWtlcyBJRTggZ28gaW50byBhblxuLy8gaW5maW5pdGUgbG9vcCwgYmVjYXVz
ZSBpdCBpdGVyYXRlcyBvdmVyIHRoZSBuZXdseSBhZGRlZCBwcm9wcyB0b28uXG5PYmplY3Qua2V5
cyhpc1VuaXRsZXNzTnVtYmVyKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gIHByZWZpeGVz
LmZvckVhY2goZnVuY3Rpb24gKHByZWZpeCkge1xuICAgIGlzVW5pdGxlc3NOdW1iZXJbcHJlZml4
S2V5KHByZWZpeCwgcHJvcCldID0gaXNVbml0bGVzc051bWJlcltwcm9wXTtcbiAgfSk7XG59KTtc
blxuLyoqXG4gKiBNb3N0IHN0eWxlIHByb3BlcnRpZXMgY2FuIGJlIHVuc2V0IGJ5IGRvaW5nIC5z
dHlsZVtwcm9wXSA9ICcnIGJ1dCBJRThcbiAqIGRvZXNuJ3QgbGlrZSBkb2luZyB0aGF0IHdpdGgg
c2hvcnRoYW5kIHByb3BlcnRpZXMgc28gZm9yIHRoZSBwcm9wZXJ0aWVzIHRoYXRcbiAqIElFOCBi
cmVha3Mgb24sIHdoaWNoIGFyZSBsaXN0ZWQgaGVyZSwgd2UgaW5zdGVhZCB1bnNldCBlYWNoIG9m
IHRoZVxuICogaW5kaXZpZHVhbCBwcm9wZXJ0aWVzLiBTZWUgaHR0cDovL2J1Z3MuanF1ZXJ5LmNv
bS90aWNrZXQvMTIzODUuXG4gKiBUaGUgNC12YWx1ZSAnY2xvY2snIHByb3BlcnRpZXMgbGlrZSBt
YXJnaW4sIHBhZGRpbmcsIGJvcmRlci13aWR0aCBzZWVtIHRvXG4gKiBiZWhhdmUgd2l0aG91dCBh
bnkgcHJvYmxlbXMuIEN1cmlvdXNseSwgbGlzdC1zdHlsZSB3b3JrcyB0b28gd2l0aG91dCBhbnlc
biAqIHNwZWNpYWwgcHJvZGRpbmcuXG4gKi9cbnZhciBzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lv
bnMgPSB7XG4gIGJhY2tncm91bmQ6IHtcbiAgICBiYWNrZ3JvdW5kQXR0YWNobWVudDogdHJ1ZSxc
biAgICBiYWNrZ3JvdW5kQ29sb3I6IHRydWUsXG4gICAgYmFja2dyb3VuZEltYWdlOiB0cnVlLFxu
ICAgIGJhY2tncm91bmRQb3NpdGlvblg6IHRydWUsXG4gICAgYmFja2dyb3VuZFBvc2l0aW9uWTog
dHJ1ZSxcbiAgICBiYWNrZ3JvdW5kUmVwZWF0OiB0cnVlXG4gIH0sXG4gIGJhY2tncm91bmRQb3Np
dGlvbjoge1xuICAgIGJhY2tncm91bmRQb3NpdGlvblg6IHRydWUsXG4gICAgYmFja2dyb3VuZFBv
c2l0aW9uWTogdHJ1ZVxuICB9LFxuICBib3JkZXI6IHtcbiAgICBib3JkZXJXaWR0aDogdHJ1ZSxc
biAgICBib3JkZXJTdHlsZTogdHJ1ZSxcbiAgICBib3JkZXJDb2xvcjogdHJ1ZVxuICB9LFxuICBi
b3JkZXJCb3R0b206IHtcbiAgICBib3JkZXJCb3R0b21XaWR0aDogdHJ1ZSxcbiAgICBib3JkZXJC
b3R0b21TdHlsZTogdHJ1ZSxcbiAgICBib3JkZXJCb3R0b21Db2xvcjogdHJ1ZVxuICB9LFxuICBi
b3JkZXJMZWZ0OiB7XG4gICAgYm9yZGVyTGVmdFdpZHRoOiB0cnVlLFxuICAgIGJvcmRlckxlZnRT
dHlsZTogdHJ1ZSxcbiAgICBib3JkZXJMZWZ0Q29sb3I6IHRydWVcbiAgfSxcbiAgYm9yZGVyUmln
aHQ6IHtcbiAgICBib3JkZXJSaWdodFdpZHRoOiB0cnVlLFxuICAgIGJvcmRlclJpZ2h0U3R5bGU6
IHRydWUsXG4gICAgYm9yZGVyUmlnaHRDb2xvcjogdHJ1ZVxuICB9LFxuICBib3JkZXJUb3A6IHtc
biAgICBib3JkZXJUb3BXaWR0aDogdHJ1ZSxcbiAgICBib3JkZXJUb3BTdHlsZTogdHJ1ZSxcbiAg
ICBib3JkZXJUb3BDb2xvcjogdHJ1ZVxuICB9LFxuICBmb250OiB7XG4gICAgZm9udFN0eWxlOiB0
cnVlLFxuICAgIGZvbnRWYXJpYW50OiB0cnVlLFxuICAgIGZvbnRXZWlnaHQ6IHRydWUsXG4gICAg
Zm9udFNpemU6IHRydWUsXG4gICAgbGluZUhlaWdodDogdHJ1ZSxcbiAgICBmb250RmFtaWx5OiB0
cnVlXG4gIH0sXG4gIG91dGxpbmU6IHtcbiAgICBvdXRsaW5lV2lkdGg6IHRydWUsXG4gICAgb3V0
bGluZVN0eWxlOiB0cnVlLFxuICAgIG91dGxpbmVDb2xvcjogdHJ1ZVxuICB9XG59O1xuXG52YXIg
Q1NTUHJvcGVydHkgPSB7XG4gIGlzVW5pdGxlc3NOdW1iZXI6IGlzVW5pdGxlc3NOdW1iZXIsXG4g
IHNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uczogc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25z
XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IENTU1Byb3BlcnR5O1xuXG4vKioqLyB9KSxcbi8qIDcw
ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5c
blxuXG52YXIgRE9NUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcbnZhciBSZWFj
dERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xudmFyIFJlYWN0SW5z
dHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblxudmFyIHF1b3RlQXR0cmli
dXRlVmFsdWVGb3JCcm93c2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDcpO1xudmFyIHdhcm5p
bmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG52YXIgVkFMSURfQVRUUklCVVRFX05BTUVf
UkVHRVggPSBuZXcgUmVnRXhwKCdeWycgKyBET01Qcm9wZXJ0eS5BVFRSSUJVVEVfTkFNRV9TVEFS
VF9DSEFSICsgJ11bJyArIERPTVByb3BlcnR5LkFUVFJJQlVURV9OQU1FX0NIQVIgKyAnXSokJyk7
XG52YXIgaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9O1xudmFyIHZhbGlkYXRlZEF0dHJp
YnV0ZU5hbWVDYWNoZSA9IHt9O1xuXG5mdW5jdGlvbiBpc0F0dHJpYnV0ZU5hbWVTYWZlKGF0dHJp
YnV0ZU5hbWUpIHtcbiAgaWYgKHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZS5oYXNPd25Qcm9w
ZXJ0eShhdHRyaWJ1dGVOYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpbGxl
Z2FsQXR0cmlidXRlTmFtZUNhY2hlLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZU5hbWUpKSB7XG4g
ICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWC50
ZXN0KGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgdmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlW2F0
dHJpYnV0ZU5hbWVdID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpbGxlZ2FsQXR0
cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gdHJ1ZTtcbiAgIGZhbHNlID8gd2Fybmlu
ZyhmYWxzZSwgJ0ludmFsaWQgYXR0cmlidXRlIG5hbWU6IGAlc2AnLCBhdHRyaWJ1dGVOYW1lKSA6
IHZvaWQgMDtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBzaG91bGRJZ25vcmVWYWx1
ZShwcm9wZXJ0eUluZm8sIHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsIHx8IHByb3Bl
cnR5SW5mby5oYXNCb29sZWFuVmFsdWUgJiYgIXZhbHVlIHx8IHByb3BlcnR5SW5mby5oYXNOdW1l
cmljVmFsdWUgJiYgaXNOYU4odmFsdWUpIHx8IHByb3BlcnR5SW5mby5oYXNQb3NpdGl2ZU51bWVy
aWNWYWx1ZSAmJiB2YWx1ZSA8IDEgfHwgcHJvcGVydHlJbmZvLmhhc092ZXJsb2FkZWRCb29sZWFu
VmFsdWUgJiYgdmFsdWUgPT09IGZhbHNlO1xufVxuXG4vKipcbiAqIE9wZXJhdGlvbnMgZm9yIGRl
YWxpbmcgd2l0aCBET00gcHJvcGVydGllcy5cbiAqL1xudmFyIERPTVByb3BlcnR5T3BlcmF0aW9u
cyA9IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgSUQgcHJvcGVydHkuXG4g
ICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBVbmVzY2FwZWQgSUQuXG4gICAqIEByZXR1cm4g
e3N0cmluZ30gTWFya3VwIHN0cmluZy5cbiAgICovXG4gIGNyZWF0ZU1hcmt1cEZvcklEOiBmdW5j
dGlvbiAoaWQpIHtcbiAgICByZXR1cm4gRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05BTUUgKyAn
PScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlcihpZCk7XG4gIH0sXG5cbiAgc2V0QXR0
cmlidXRlRm9ySUQ6IGZ1bmN0aW9uIChub2RlLCBpZCkge1xuICAgIG5vZGUuc2V0QXR0cmlidXRl
KERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FLCBpZCk7XG4gIH0sXG5cbiAgY3JlYXRlTWFy
a3VwRm9yUm9vdDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBET01Qcm9wZXJ0eS5ST09UX0FU
VFJJQlVURV9OQU1FICsgJz1cIlwiJztcbiAgfSxcblxuICBzZXRBdHRyaWJ1dGVGb3JSb290OiBm
dW5jdGlvbiAobm9kZSkge1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKERPTVByb3BlcnR5LlJPT1Rf
QVRUUklCVVRFX05BTUUsICcnKTtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyBtYXJrdXAg
Zm9yIGEgcHJvcGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBw
YXJhbSB7Kn0gdmFsdWVcbiAgICogQHJldHVybiB7P3N0cmluZ30gTWFya3VwIHN0cmluZywgb3Ig
bnVsbCBpZiB0aGUgcHJvcGVydHkgd2FzIGludmFsaWQuXG4gICAqL1xuICBjcmVhdGVNYXJrdXBG
b3JQcm9wZXJ0eTogZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgdmFyIHByb3BlcnR5SW5m
byA9IERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBET01Qcm9w
ZXJ0eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVsbDtcbiAgICBpZiAocHJvcGVydHlJbmZvKSB7XG4g
ICAgICBpZiAoc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkpIHtcbiAgICAg
ICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBwcm9wZXJ0
eUluZm8uYXR0cmlidXRlTmFtZTtcbiAgICAgIGlmIChwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZh
bHVlIHx8IHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlICYmIHZhbHVlID09
PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lICsgJz1cIlwiJztcbiAgICAg
IH1cbiAgICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1
ZUZvckJyb3dzZXIodmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21B
dHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJl
dHVybiAnJztcbiAgICAgIH1cbiAgICAgIHJldHVybiBuYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1
dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxc
blxuICAvKipcbiAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIGEgY3VzdG9tIHByb3BlcnR5LlxuICAg
KlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAq
IEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZywgb3IgZW1wdHkgc3RyaW5nIGlmIHRoZSBw
cm9wZXJ0eSB3YXMgaW52YWxpZC5cbiAgICovXG4gIGNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJp
YnV0ZTogZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKCFpc0F0dHJpYnV0ZU5hbWVT
YWZlKG5hbWUpIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4g
ICAgcmV0dXJuIG5hbWUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1
ZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIGZvciBhIHByb3BlcnR5IG9u
IGEgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gICAqIEBwYXJh
bSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAgICovXG4gIHNldFZhbHVl
Rm9yUHJvcGVydHk6IGZ1bmN0aW9uIChub2RlLCBuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBwcm9w
ZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpID8g
RE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7XG4gICAgaWYgKHByb3BlcnR5SW5m
bykge1xuICAgICAgdmFyIG11dGF0aW9uTWV0aG9kID0gcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0
aG9kO1xuICAgICAgaWYgKG11dGF0aW9uTWV0aG9kKSB7XG4gICAgICAgIG11dGF0aW9uTWV0aG9k
KG5vZGUsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoc2hvdWxkSWdub3JlVmFsdWUocHJvcGVy
dHlJbmZvLCB2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5v
ZGUsIG5hbWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKHByb3BlcnR5SW5m
by5tdXN0VXNlUHJvcGVydHkpIHtcbiAgICAgICAgLy8gQ29udHJhcnkgdG8gYHNldEF0dHJpYnV0
ZWAsIG9iamVjdCBwcm9wZXJ0aWVzIGFyZSBwcm9wZXJseVxuICAgICAgICAvLyBgdG9TdHJpbmdg
ZWQgYnkgSUU4LzkuXG4gICAgICAgIG5vZGVbcHJvcGVydHlJbmZvLnByb3BlcnR5TmFtZV0gPSB2
YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gcHJvcGVy
dHlJbmZvLmF0dHJpYnV0ZU5hbWU7XG4gICAgICAgIHZhciBuYW1lc3BhY2UgPSBwcm9wZXJ0eUlu
Zm8uYXR0cmlidXRlTmFtZXNwYWNlO1xuICAgICAgICAvLyBgc2V0QXR0cmlidXRlYCB3aXRoIG9i
amVjdHMgYmVjb21lcyBvbmx5IGBbb2JqZWN0XWAgaW4gSUU4LzksXG4gICAgICAgIC8vICgnJyAr
IHZhbHVlKSBtYWtlcyBpdCBvdXRwdXQgdGhlIGNvcnJlY3QgdG9TdHJpbmcoKS12YWx1ZS5cbiAg
ICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlTlMobmFt
ZXNwYWNlLCBhdHRyaWJ1dGVOYW1lLCAnJyArIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChw
cm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlIHx8IHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVk
Qm9vbGVhblZhbHVlICYmIHZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSwgJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5v
ZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICcnICsgdmFsdWUpO1xuICAgICAgICB9XG4g
ICAgICB9XG4gICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1l
KSkge1xuICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yQXR0cmlidXRlKG5v
ZGUsIG5hbWUsIHZhbHVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZmFsc2Up
IHtcbiAgICAgIHZhciBwYXlsb2FkID0ge307XG4gICAgICBwYXlsb2FkW25hbWVdID0gdmFsdWU7
XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtc
biAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJv
bU5vZGUobm9kZSkuX2RlYnVnSUQsXG4gICAgICAgIHR5cGU6ICd1cGRhdGUgYXR0cmlidXRlJyxc
biAgICAgICAgcGF5bG9hZDogcGF5bG9hZFxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIHNl
dFZhbHVlRm9yQXR0cmlidXRlOiBmdW5jdGlvbiAobm9kZSwgbmFtZSwgdmFsdWUpIHtcbiAgICBp
ZiAoIWlzQXR0cmlidXRlTmFtZVNhZmUobmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4g
ICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUp
O1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShuYW1lLCAnJyArIHZhbHVl
KTtcbiAgICB9XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIHZhciBwYXlsb2FkID0ge307XG4g
ICAgICBwYXlsb2FkW25hbWVdID0gdmFsdWU7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01D
b21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsXG4gICAgICAg
IHR5cGU6ICd1cGRhdGUgYXR0cmlidXRlJyxcbiAgICAgICAgcGF5bG9hZDogcGF5bG9hZFxuICAg
ICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGF0dHJpYnV0ZXMg
ZnJvbSBhIG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICAgKiBA
cGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKi9cbiAgZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGU6IGZ1
bmN0aW9uIChub2RlLCBuYW1lKSB7XG4gICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4g
ICAgaWYgKGZhbHNlKSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25I
b3N0T3BlcmF0aW9uKHtcbiAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVl
LmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsXG4gICAgICAgIHR5cGU6ICdyZW1v
dmUgYXR0cmlidXRlJyxcbiAgICAgICAgcGF5bG9hZDogbmFtZVxuICAgICAgfSk7XG4gICAgfVxu
ICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGVzIHRoZSB2YWx1ZSBmb3IgYSBwcm9wZXJ0eSBvbiBh
IG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICAgKiBAcGFyYW0g
e3N0cmluZ30gbmFtZVxuICAgKi9cbiAgZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eTogZnVuY3Rpb24g
KG5vZGUsIG5hbWUpIHtcbiAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJvcGVy
dGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFtZV0g
OiBudWxsO1xuICAgIGlmIChwcm9wZXJ0eUluZm8pIHtcbiAgICAgIHZhciBtdXRhdGlvbk1ldGhv
ZCA9IHByb3BlcnR5SW5mby5tdXRhdGlvbk1ldGhvZDtcbiAgICAgIGlmIChtdXRhdGlvbk1ldGhv
ZCkge1xuICAgICAgICBtdXRhdGlvbk1ldGhvZChub2RlLCB1bmRlZmluZWQpO1xuICAgICAgfSBl
bHNlIGlmIChwcm9wZXJ0eUluZm8ubXVzdFVzZVByb3BlcnR5KSB7XG4gICAgICAgIHZhciBwcm9w
TmFtZSA9IHByb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWU7XG4gICAgICAgIGlmIChwcm9wZXJ0eUlu
Zm8uaGFzQm9vbGVhblZhbHVlKSB7XG4gICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBmYWxzZTtc
biAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9ICcnO1xuICAgICAg
ICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShwcm9wZXJ0
eUluZm8uYXR0cmlidXRlTmFtZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0
eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUo
bmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgaW5zdGFuY2VJRDogUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsXG4g
ICAgICAgIHR5cGU6ICdyZW1vdmUgYXR0cmlidXRlJyxcbiAgICAgICAgcGF5bG9hZDogbmFtZVxu
ICAgICAgfSk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IERPTVByb3BlcnR5
T3BlcmF0aW9ucztcblxuLyoqKi8gfSksXG4vKiA3MSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIF9hc3NpZ24gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDMpO1xuXG52YXIgTGlua2VkVmFsdWVVdGlscyA9IF9fd2VicGFja19yZXF1
aXJlX18oNDApO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJl
X18oNCk7XG52YXIgUmVhY3RVcGRhdGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblxudmFy
IHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG52YXIgZGlkV2FyblZhbHVlTGlu
ayA9IGZhbHNlO1xudmFyIGRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSA9IGZhbHNlO1xuXG5mdW5j
dGlvbiB1cGRhdGVPcHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCgpIHtcbiAgaWYgKHRo
aXMuX3Jvb3ROb2RlSUQgJiYgdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUpIHtcbiAg
ICB0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSA9IGZhbHNlO1xuXG4gICAgdmFyIHBy
b3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG4gICAgdmFyIHZhbHVlID0gTGlua2Vk
VmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG5cbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xu
ICAgICAgdXBkYXRlT3B0aW9ucyh0aGlzLCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwgdmFsdWUp
O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0o
b3duZXIpIHtcbiAgaWYgKG93bmVyKSB7XG4gICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7
XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9k
IG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxudmFy
IHZhbHVlUHJvcE5hbWVzID0gWyd2YWx1ZScsICdkZWZhdWx0VmFsdWUnXTtcblxuLyoqXG4gKiBW
YWxpZGF0aW9uIGZ1bmN0aW9uIGZvciBgdmFsdWVgIGFuZCBgZGVmYXVsdFZhbHVlYC5cbiAqIEBw
cml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNoZWNrU2VsZWN0UHJvcFR5cGVzKGluc3QsIHByb3BzKSB7
XG4gIHZhciBvd25lciA9IGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgTGlua2VkVmFs
dWVVdGlscy5jaGVja1Byb3BUeXBlcygnc2VsZWN0JywgcHJvcHMsIG93bmVyKTtcblxuICBpZiAo
cHJvcHMudmFsdWVMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZUxpbmspIHtcbiAg
ICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnYHZhbHVlTGlua2AgcHJvcCBvbiBgc2VsZWN0YCBp
cyBkZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFkLicpIDogdm9p
ZCAwO1xuICAgIGRpZFdhcm5WYWx1ZUxpbmsgPSB0cnVlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9
IDA7IGkgPCB2YWx1ZVByb3BOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wTmFtZSA9
IHZhbHVlUHJvcE5hbWVzW2ldO1xuICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT0gbnVsbCkge1xu
ICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShw
cm9wc1twcm9wTmFtZV0pO1xuICAgIGlmIChwcm9wcy5tdWx0aXBsZSAmJiAhaXNBcnJheSkge1xu
ICAgICAgIGZhbHNlID8gd2FybmluZyhmYWxzZSwgJ1RoZSBgJXNgIHByb3Agc3VwcGxpZWQgdG8g
PHNlbGVjdD4gbXVzdCBiZSBhbiBhcnJheSBpZiAnICsgJ2BtdWx0aXBsZWAgaXMgdHJ1ZS4lcycs
IHByb3BOYW1lLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpKSA6IHZvaWQgMDtc
biAgICB9IGVsc2UgaWYgKCFwcm9wcy5tdWx0aXBsZSAmJiBpc0FycmF5KSB7XG4gICAgICAgZmFs
c2UgPyB3YXJuaW5nKGZhbHNlLCAnVGhlIGAlc2AgcHJvcCBzdXBwbGllZCB0byA8c2VsZWN0PiBt
dXN0IGJlIGEgc2NhbGFyICcgKyAndmFsdWUgaWYgYG11bHRpcGxlYCBpcyBmYWxzZS4lcycsIHBy
b3BOYW1lLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpKSA6IHZvaWQgMDtcbiAg
ICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50fSBpbnN0XG4g
KiBAcGFyYW0ge2Jvb2xlYW59IG11bHRpcGxlXG4gKiBAcGFyYW0geyp9IHByb3BWYWx1ZSBBIHN0
cmluZ2FibGUgKHdpdGggYG11bHRpcGxlYCwgYSBsaXN0IG9mIHN0cmluZ2FibGVzKS5cbiAqIEBw
cml2YXRlXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZU9wdGlvbnMoaW5zdCwgbXVsdGlwbGUsIHByb3BW
YWx1ZSkge1xuICB2YXIgc2VsZWN0ZWRWYWx1ZSwgaTtcbiAgdmFyIG9wdGlvbnMgPSBSZWFjdERP
TUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KS5vcHRpb25zO1xuXG4gIGlm
IChtdWx0aXBsZSkge1xuICAgIHNlbGVjdGVkVmFsdWUgPSB7fTtcbiAgICBmb3IgKGkgPSAwOyBp
IDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzZWxlY3RlZFZhbHVlWycnICsgcHJv
cFZhbHVlW2ldXSA9IHRydWU7XG4gICAgfVxuICAgIGZvciAoaSA9IDA7IGkgPCBvcHRpb25zLmxl
bmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VsZWN0ZWQgPSBzZWxlY3RlZFZhbHVlLmhhc093blBy
b3BlcnR5KG9wdGlvbnNbaV0udmFsdWUpO1xuICAgICAgaWYgKG9wdGlvbnNbaV0uc2VsZWN0ZWQg
IT09IHNlbGVjdGVkKSB7XG4gICAgICAgIG9wdGlvbnNbaV0uc2VsZWN0ZWQgPSBzZWxlY3RlZDtc
biAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gRG8gbm90IHNldCBgc2VsZWN0LnZh
bHVlYCBhcyBleGFjdCBiZWhhdmlvciBpc24ndCBjb25zaXN0ZW50IGFjcm9zcyBhbGxcbiAgICAv
LyBicm93c2VycyBmb3IgYWxsIGNhc2VzLlxuICAgIHNlbGVjdGVkVmFsdWUgPSAnJyArIHByb3BW
YWx1ZTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAg
aWYgKG9wdGlvbnNbaV0udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpIHtcbiAgICAgICAgb3B0aW9u
c1tpXS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4g
ICAgaWYgKG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICBvcHRpb25zWzBdLnNlbGVjdGVkID0gdHJ1
ZTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBJbXBsZW1lbnRzIGEgPHNlbGVjdD4gaG9zdCBj
b21wb25lbnQgdGhhdCBhbGxvd3Mgb3B0aW9uYWxseSBzZXR0aW5nIHRoZVxuICogcHJvcHMgYHZh
bHVlYCBhbmQgYGRlZmF1bHRWYWx1ZWAuIElmIGBtdWx0aXBsZWAgaXMgZmFsc2UsIHRoZSBwcm9w
IG11c3QgYmUgYVxuICogc3RyaW5nYWJsZS4gSWYgYG11bHRpcGxlYCBpcyB0cnVlLCB0aGUgcHJv
cCBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ2FibGVzLlxuICpcbiAqIElmIGB2YWx1ZWAgaXMg
bm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9ucyB0aGF0IGNoYW5n
ZSB0aGVcbiAqIHNlbGVjdGVkIG9wdGlvbiB3aWxsIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgcmVu
ZGVyZWQgb3B0aW9ucy5cbiAqXG4gKiBJZiBpdCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3Vu
ZGVmaW5lZCksIHRoZSByZW5kZXJlZCBvcHRpb25zIHdpbGwgbm90XG4gKiB1cGRhdGUgaW4gcmVz
cG9uc2UgdG8gdXNlciBhY3Rpb25zLiBJbnN0ZWFkLCB0aGUgYHZhbHVlYCBwcm9wIG11c3QgY2hh
bmdlIGluXG4gKiBvcmRlciBmb3IgdGhlIHJlbmRlcmVkIG9wdGlvbnMgdG8gdXBkYXRlLlxuICpc
biAqIElmIGBkZWZhdWx0VmFsdWVgIGlzIHByb3ZpZGVkLCBhbnkgb3B0aW9ucyB3aXRoIHRoZSBz
dXBwbGllZCB2YWx1ZXMgd2lsbCBiZVxuICogc2VsZWN0ZWQuXG4gKi9cbnZhciBSZWFjdERPTVNl
bGVjdCA9IHtcbiAgZ2V0SG9zdFByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICBy
ZXR1cm4gX2Fzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgIG9uQ2hhbmdlOiBpbnN0Ll93cmFwcGVy
U3RhdGUub25DaGFuZ2UsXG4gICAgICB2YWx1ZTogdW5kZWZpbmVkXG4gICAgfSk7XG4gIH0sXG5c
biAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICBpZiAoZmFsc2Up
IHtcbiAgICAgIGNoZWNrU2VsZWN0UHJvcFR5cGVzKGluc3QsIHByb3BzKTtcbiAgICB9XG5cbiAg
ICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpbnN0
Ll93cmFwcGVyU3RhdGUgPSB7XG4gICAgICBwZW5kaW5nVXBkYXRlOiBmYWxzZSxcbiAgICAgIGlu
aXRpYWxWYWx1ZTogdmFsdWUgIT0gbnVsbCA/IHZhbHVlIDogcHJvcHMuZGVmYXVsdFZhbHVlLFxu
ICAgICAgbGlzdGVuZXJzOiBudWxsLFxuICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmlu
ZChpbnN0KSxcbiAgICAgIHdhc011bHRpcGxlOiBCb29sZWFuKHByb3BzLm11bHRpcGxlKVxuICAg
IH07XG5cbiAgICBpZiAocHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5kZWZhdWx0
VmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlKSB7XG4gICAg
ICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnU2VsZWN0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVy
IGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1
ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVj
aWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBzZWxlY3QgJyAr
ICdlbGVtZW50IGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcgKyAn
aHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnKSA6IHZvaWQgMDtcbiAg
ICAgIGRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSA9IHRydWU7XG4gICAgfVxuICB9LFxuXG4gIGdl
dFNlbGVjdFZhbHVlQ29udGV4dDogZnVuY3Rpb24gKGluc3QpIHtcbiAgICAvLyBSZWFjdERPTU9w
dGlvbiBsb29rcyBhdCB0aGlzIGluaXRpYWwgdmFsdWUgc28gdGhlIGluaXRpYWwgZ2VuZXJhdGVk
XG4gICAgLy8gbWFya3VwIGhhcyBjb3JyZWN0IGBzZWxlY3RlZGAgYXR0cmlidXRlc1xuICAgIHJl
dHVybiBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlO1xuICB9LFxuXG4gIHBvc3RVcGRh
dGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJl
bnRFbGVtZW50LnByb3BzO1xuXG4gICAgLy8gQWZ0ZXIgdGhlIGluaXRpYWwgbW91bnQsIHdlIGNv
bnRyb2wgc2VsZWN0ZWQtbmVzcyBtYW51YWxseSBzbyBkb24ndCBwYXNzXG4gICAgLy8gdGhpcyB2
YWx1ZSBkb3duXG4gICAgaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSA9IHVuZGVmaW5l
ZDtcblxuICAgIHZhciB3YXNNdWx0aXBsZSA9IGluc3QuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBs
ZTtcbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGUgPSBCb29sZWFuKHByb3BzLm11
bHRpcGxlKTtcblxuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJv
cHMpO1xuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUu
cGVuZGluZ1VwZGF0ZSA9IGZhbHNlO1xuICAgICAgdXBkYXRlT3B0aW9ucyhpbnN0LCBCb29sZWFu
KHByb3BzLm11bHRpcGxlKSwgdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAod2FzTXVsdGlwbGUgIT09
IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpKSB7XG4gICAgICAvLyBGb3Igc2ltcGxpY2l0eSwgcmVh
cHBseSBgZGVmYXVsdFZhbHVlYCBpZiBgbXVsdGlwbGVgIGlzIHRvZ2dsZWQuXG4gICAgICBpZiAo
cHJvcHMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgdXBkYXRlT3B0aW9ucyhpbnN0
LCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwgcHJvcHMuZGVmYXVsdFZhbHVlKTtcbiAgICAgIH0g
ZWxzZSB7XG4gICAgICAgIC8vIFJldmVydCB0aGUgc2VsZWN0IGJhY2sgdG8gaXRzIGRlZmF1bHQg
dW5zZWxlY3RlZCBzdGF0ZS5cbiAgICAgICAgdXBkYXRlT3B0aW9ucyhpbnN0LCBCb29sZWFuKHBy
b3BzLm11bHRpcGxlKSwgcHJvcHMubXVsdGlwbGUgPyBbXSA6ICcnKTtcbiAgICAgIH1cbiAgICB9
XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgdmFyIHByb3Bz
ID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG4gIHZhciByZXR1cm5WYWx1ZSA9IExpbmtl
ZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7XG5cbiAgaWYgKHRoaXMu
X3Jvb3ROb2RlSUQpIHtcbiAgICB0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSA9IHRy
dWU7XG4gIH1cbiAgUmVhY3RVcGRhdGVzLmFzYXAodXBkYXRlT3B0aW9uc0lmUGVuZGluZ1VwZGF0
ZUFuZE1vdW50ZWQsIHRoaXMpO1xuICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbm1vZHVsZS5l
eHBvcnRzID0gUmVhY3RET01TZWxlY3Q7XG5cbi8qKiovIH0pLFxuLyogNzIgKi9cbi8qKiovIChm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBp
biBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hl
ZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRo
YXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBp
dCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2Rl
IGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4v
LyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdp
bmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5c
bmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRU
aW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJU
aW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJl
ZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAo
dHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNl
dFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2Fj
aGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNo
IChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAg
IH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0
aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xu
ICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVs
dENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2Fj
aGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVu
Y3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0
VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlv
bnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYg
c2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBp
ZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRp
bWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRp
bWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRy
eSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRp
bWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVv
dXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAg
Ly8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28g
SS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5
XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7
XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3
aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmpl
Y3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQg
d2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRp
bWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0
aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0
ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2Fu
ZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9
XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIg
ZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1l
b3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBj
YWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRp
bWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNv
bWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xu
ICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAo
ZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1
dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBn
bG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2Fj
aGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7
XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9m
IEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVs
bHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBl
cnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVu
dCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVy
biBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAg
fVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBj
dXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4
dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAg
IHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1
ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUp
O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYg
KHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5j
dGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47
XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xu
ICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAg
d2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1
ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAg
ICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVl
SW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5k
ZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50
UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0
KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAg
IHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJn
dW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVu
dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ld
O1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7
XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVu
VGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJs
ZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1
bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5j
dGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJv
Y2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNz
LmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8g
ZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7
fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5h
ZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBu
b29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExp
c3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlz
dGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJv
Y2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNz
LmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vz
cy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rp
b24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xu
ICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59
O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcblxuXG4vKioqLyB9
KSxcbi8qIDczICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cblxuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIp
LFxuICAgIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG52YXIgUmVhY3RDb21w
b3NpdGVDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1Nik7XG52YXIgUmVhY3RFbXB0
eUNvbXBvbmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNzUpO1xudmFyIFJlYWN0SG9zdENvbXBv
bmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNzYpO1xuXG52YXIgZ2V0TmV4dERlYnVnSUQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDE1Nyk7XG52YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygwKTtcbnZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxuLy8gVG8g
YXZvaWQgYSBjeWNsaWMgZGVwZW5kZW5jeSwgd2UgY3JlYXRlIHRoZSBmaW5hbCBjbGFzcyBpbiB0
aGlzIG1vZHVsZVxudmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlciA9IGZ1bmN0aW9u
IChlbGVtZW50KSB7XG4gIHRoaXMuY29uc3RydWN0KGVsZW1lbnQpO1xufTtcblxuZnVuY3Rpb24g
Z2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7XG4gIGlmIChvd25lcikge1xuICAg
IHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICByZXR1
cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgIH1c
biAgfVxuICByZXR1cm4gJyc7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHR5cGUgcmVmZXJl
bmNlIGlzIGEga25vd24gaW50ZXJuYWwgdHlwZS4gSS5lLiBub3QgYSB1c2VyXG4gKiBwcm92aWRl
ZCBjb21wb3NpdGUgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSB0eXBlXG4gKiBAcmV0
dXJuIHtib29sZWFufSBSZXR1cm5zIHRydWUgaWYgdGhpcyBpcyBhIHZhbGlkIGludGVybmFsIHR5
cGUuXG4gKi9cbmZ1bmN0aW9uIGlzSW50ZXJuYWxDb21wb25lbnRUeXBlKHR5cGUpIHtcbiAgcmV0
dXJuIHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZSAh
PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlLm1vdW50Q29tcG9uZW50ID09
PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50ID09
PSAnZnVuY3Rpb24nO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgUmVhY3ROb2RlLCBjcmVhdGUgYW4g
aW5zdGFuY2UgdGhhdCB3aWxsIGFjdHVhbGx5IGJlIG1vdW50ZWQuXG4gKlxuICogQHBhcmFtIHtS
ZWFjdE5vZGV9IG5vZGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkSGF2ZURlYnVnSURcbiAq
IEByZXR1cm4ge29iamVjdH0gQSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGVsZW1lbnQncyBjb25zdHJ1
Y3Rvci5cbiAqIEBwcm90ZWN0ZWRcbiAqL1xuZnVuY3Rpb24gaW5zdGFudGlhdGVSZWFjdENvbXBv
bmVudChub2RlLCBzaG91bGRIYXZlRGVidWdJRCkge1xuICB2YXIgaW5zdGFuY2U7XG5cbiAgaWYg
KG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gZmFsc2UpIHtcbiAgICBpbnN0YW5jZSA9IFJlYWN0
RW1wdHlDb21wb25lbnQuY3JlYXRlKGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQpO1xuICB9IGVs
c2UgaWYgKHR5cGVvZiBub2RlID09PSAnb2JqZWN0Jykge1xuICAgIHZhciBlbGVtZW50ID0gbm9k
ZTtcbiAgICB2YXIgdHlwZSA9IGVsZW1lbnQudHlwZTtcbiAgICBpZiAodHlwZW9mIHR5cGUgIT09
ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgaW5m
byA9ICcnO1xuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIGlmICh0eXBlID09PSB1bmRlZmlu
ZWQgfHwgdHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwgJiYgT2JqZWN0
LmtleXModHlwZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgaW5mbyArPSAnIFlvdSBsaWtl
bHkgZm9yZ290IHRvIGV4cG9ydCB5b3VyIGNvbXBvbmVudCBmcm9tIHRoZSBmaWxlICcgKyBcIml0
J3MgZGVmaW5lZCBpbi5cIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaW5mbyArPSBnZXRE
ZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oZWxlbWVudC5fb3duZXIpO1xuICAgICAgIHRydWUgPyAg
ZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdFbGVtZW50IHR5cGUgaXMgaW52YWxpZDogZXhwZWN0
ZWQgYSBzdHJpbmcgKGZvciBidWlsdC1pbiBjb21wb25lbnRzKSBvciBhIGNsYXNzL2Z1bmN0aW9u
IChmb3IgY29tcG9zaXRlIGNvbXBvbmVudHMpIGJ1dCBnb3Q6ICVzLiVzJywgdHlwZSA9PSBudWxs
ID8gdHlwZSA6IHR5cGVvZiB0eXBlLCBpbmZvKSA6IF9wcm9kSW52YXJpYW50KCcxMzAnLCB0eXBl
ID09IG51bGwgPyB0eXBlIDogdHlwZW9mIHR5cGUsIGluZm8pIDogdm9pZCAwO1xuICAgIH1cblxu
ICAgIC8vIFNwZWNpYWwgY2FzZSBzdHJpbmcgdmFsdWVzXG4gICAgaWYgKHR5cGVvZiBlbGVtZW50
LnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpbnN0YW5jZSA9IFJlYWN0SG9zdENvbXBvbmVu
dC5jcmVhdGVJbnRlcm5hbENvbXBvbmVudChlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKGlzSW50
ZXJuYWxDb21wb25lbnRUeXBlKGVsZW1lbnQudHlwZSkpIHtcbiAgICAgIC8vIFRoaXMgaXMgdGVt
cG9yYXJpbHkgYXZhaWxhYmxlIGZvciBjdXN0b20gY29tcG9uZW50cyB0aGF0IGFyZSBub3Qgc3Ry
aW5nXG4gICAgICAvLyByZXByZXNlbnRhdGlvbnMuIEkuZS4gQVJULiBPbmNlIHRob3NlIGFyZSB1
cGRhdGVkIHRvIHVzZSB0aGUgc3RyaW5nXG4gICAgICAvLyByZXByZXNlbnRhdGlvbiwgd2UgY2Fu
IGRyb3AgdGhpcyBjb2RlIHBhdGguXG4gICAgICBpbnN0YW5jZSA9IG5ldyBlbGVtZW50LnR5cGUo
ZWxlbWVudCk7XG5cbiAgICAgIC8vIFdlIHJlbmFtZWQgdGhpcy4gQWxsb3cgdGhlIG9sZCBuYW1l
IGZvciBjb21wYXQuIDooXG4gICAgICBpZiAoIWluc3RhbmNlLmdldEhvc3ROb2RlKSB7XG4gICAg
ICAgIGluc3RhbmNlLmdldEhvc3ROb2RlID0gaW5zdGFuY2UuZ2V0TmF0aXZlTm9kZTtcbiAgICAg
IH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5zdGFuY2UgPSBuZXcgUmVhY3RDb21wb3NpdGVDb21w
b25lbnRXcmFwcGVyKGVsZW1lbnQpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9
PT0gJ3N0cmluZycgfHwgdHlwZW9mIG5vZGUgPT09ICdudW1iZXInKSB7XG4gICAgaW5zdGFuY2Ug
PSBSZWFjdEhvc3RDb21wb25lbnQuY3JlYXRlSW5zdGFuY2VGb3JUZXh0KG5vZGUpO1xuICB9IGVs
c2Uge1xuICAgICB0cnVlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRW5jb3VudGVyZWQg
aW52YWxpZCBSZWFjdCBub2RlIG9mIHR5cGUgJXMnLCB0eXBlb2Ygbm9kZSkgOiBfcHJvZEludmFy
aWFudCgnMTMxJywgdHlwZW9mIG5vZGUpIDogdm9pZCAwO1xuICB9XG5cbiAgaWYgKGZhbHNlKSB7
XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlw
ZW9mIGluc3RhbmNlLm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0
YW5jZS5yZWNlaXZlQ29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS5n
ZXRIb3N0Tm9kZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UudW5tb3VudENvbXBv
bmVudCA9PT0gJ2Z1bmN0aW9uJywgJ09ubHkgUmVhY3QgQ29tcG9uZW50cyBjYW4gYmUgbW91bnRl
ZC4nKSA6IHZvaWQgMDtcbiAgfVxuXG4gIC8vIFRoZXNlIHR3byBmaWVsZHMgYXJlIHVzZWQgYnkg
dGhlIERPTSBhbmQgQVJUIGRpZmZpbmcgYWxnb3JpdGhtc1xuICAvLyByZXNwZWN0aXZlbHkuIElu
c3RlYWQgb2YgdXNpbmcgZXhwYW5kb3Mgb24gY29tcG9uZW50cywgd2Ugc2hvdWxkIGJlXG4gIC8v
IHN0b3JpbmcgdGhlIHN0YXRlIG5lZWRlZCBieSB0aGUgZGlmZmluZyBhbGdvcml0aG1zIGVsc2V3
aGVyZS5cbiAgaW5zdGFuY2UuX21vdW50SW5kZXggPSAwO1xuICBpbnN0YW5jZS5fbW91bnRJbWFn
ZSA9IG51bGw7XG5cbiAgaWYgKGZhbHNlKSB7XG4gICAgaW5zdGFuY2UuX2RlYnVnSUQgPSBzaG91
bGRIYXZlRGVidWdJRCA/IGdldE5leHREZWJ1Z0lEKCkgOiAwO1xuICB9XG5cbiAgLy8gSW50ZXJu
YWwgaW5zdGFuY2VzIHNob3VsZCBmdWxseSBjb25zdHJ1Y3RlZCBhdCB0aGlzIHBvaW50LCBzbyB0
aGV5IHNob3VsZFxuICAvLyBub3QgZ2V0IGFueSBuZXcgZmllbGRzIGFkZGVkIHRvIHRoZW0gYXQg
dGhpcyBwb2ludC5cbiAgaWYgKGZhbHNlKSB7XG4gICAgaWYgKE9iamVjdC5wcmV2ZW50RXh0ZW5z
aW9ucykge1xuICAgICAgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKGluc3RhbmNlKTtcbiAgICB9
XG4gIH1cblxuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbl9hc3NpZ24oUmVhY3RDb21wb3NpdGVD
b21wb25lbnRXcmFwcGVyLnByb3RvdHlwZSwgUmVhY3RDb21wb3NpdGVDb21wb25lbnQsIHtcbiAg
X2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnRcbn0p
O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ7XG5cbi8qKiov
IH0pLFxuLyogNzQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKiBcbiAqL1xuXG5cblxudmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyKTtcblxudmFyIFJlYWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG5cbnZhciBp
bnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG52YXIgUmVhY3ROb2RlVHlwZXMg
PSB7XG4gIEhPU1Q6IDAsXG4gIENPTVBPU0lURTogMSxcbiAgRU1QVFk6IDIsXG5cbiAgZ2V0VHlw
ZTogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSBm
YWxzZSkge1xuICAgICAgcmV0dXJuIFJlYWN0Tm9kZVR5cGVzLkVNUFRZO1xuICAgIH0gZWxzZSBp
ZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQobm9kZSkpIHtcbiAgICAgIGlmICh0eXBlb2Ygbm9kZS50
eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBSZWFjdE5vZGVUeXBlcy5DT01Q
T1NJVEU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUmVhY3ROb2RlVHlwZXMuSE9T
VDtcbiAgICAgIH1cbiAgICB9XG4gICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2Us
ICdVbmV4cGVjdGVkIG5vZGU6ICVzJywgbm9kZSkgOiBfcHJvZEludmFyaWFudCgnMjYnLCBub2Rl
KSA6IHZvaWQgMDtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5vZGVUeXBlcztc
blxuLyoqKi8gfSksXG4vKiA3NSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJp
Z2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIGVtcHR5Q29tcG9uZW50RmFjdG9yeTtcblxudmFy
IFJlYWN0RW1wdHlDb21wb25lbnRJbmplY3Rpb24gPSB7XG4gIGluamVjdEVtcHR5Q29tcG9uZW50
RmFjdG9yeTogZnVuY3Rpb24gKGZhY3RvcnkpIHtcbiAgICBlbXB0eUNvbXBvbmVudEZhY3Rvcnkg
PSBmYWN0b3J5O1xuICB9XG59O1xuXG52YXIgUmVhY3RFbXB0eUNvbXBvbmVudCA9IHtcbiAgY3Jl
YXRlOiBmdW5jdGlvbiAoaW5zdGFudGlhdGUpIHtcbiAgICByZXR1cm4gZW1wdHlDb21wb25lbnRG
YWN0b3J5KGluc3RhbnRpYXRlKTtcbiAgfVxufTtcblxuUmVhY3RFbXB0eUNvbXBvbmVudC5pbmpl
Y3Rpb24gPSBSZWFjdEVtcHR5Q29tcG9uZW50SW5qZWN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9
IFJlYWN0RW1wdHlDb21wb25lbnQ7XG5cbi8qKiovIH0pLFxuLyogNzYgKi9cbi8qKiovIChmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3Ry
aWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBfcHJvZElu
dmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cbnZhciBpbnZhcmlhbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDApO1xuXG52YXIgZ2VuZXJpY0NvbXBvbmVudENsYXNzID0gbnVsbDtc
bnZhciB0ZXh0Q29tcG9uZW50Q2xhc3MgPSBudWxsO1xuXG52YXIgUmVhY3RIb3N0Q29tcG9uZW50
SW5qZWN0aW9uID0ge1xuICAvLyBUaGlzIGFjY2VwdHMgYSBjbGFzcyB0aGF0IHJlY2VpdmVzIHRo
ZSB0YWcgc3RyaW5nLiBUaGlzIGlzIGEgY2F0Y2ggYWxsXG4gIC8vIHRoYXQgY2FuIHJlbmRlciBh
bnkga2luZCBvZiB0YWcuXG4gIGluamVjdEdlbmVyaWNDb21wb25lbnRDbGFzczogZnVuY3Rpb24g
KGNvbXBvbmVudENsYXNzKSB7XG4gICAgZ2VuZXJpY0NvbXBvbmVudENsYXNzID0gY29tcG9uZW50
Q2xhc3M7XG4gIH0sXG4gIC8vIFRoaXMgYWNjZXB0cyBhIHRleHQgY29tcG9uZW50IGNsYXNzIHRo
YXQgdGFrZXMgdGhlIHRleHQgc3RyaW5nIHRvIGJlXG4gIC8vIHJlbmRlcmVkIGFzIHByb3BzLlxu
ICBpbmplY3RUZXh0Q29tcG9uZW50Q2xhc3M6IGZ1bmN0aW9uIChjb21wb25lbnRDbGFzcykge1xu
ICAgIHRleHRDb21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzO1xuICB9XG59O1xuXG4vKipc
biAqIEdldCBhIGhvc3QgaW50ZXJuYWwgY29tcG9uZW50IGNsYXNzIGZvciBhIHNwZWNpZmljIHRh
Zy5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBj
cmVhdGUuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGludGVybmFsIGNsYXNzIGNvbnN0cnVj
dG9yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVJbnRlcm5hbENvbXBvbmVudChlbGVt
ZW50KSB7XG4gICFnZW5lcmljQ29tcG9uZW50Q2xhc3MgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFs
c2UsICdUaGVyZSBpcyBubyByZWdpc3RlcmVkIGNvbXBvbmVudCBmb3IgdGhlIHRhZyAlcycsIGVs
ZW1lbnQudHlwZSkgOiBfcHJvZEludmFyaWFudCgnMTExJywgZWxlbWVudC50eXBlKSA6IHZvaWQg
MDtcbiAgcmV0dXJuIG5ldyBnZW5lcmljQ29tcG9uZW50Q2xhc3MoZWxlbWVudCk7XG59XG5cbi8q
KlxuICogQHBhcmFtIHtSZWFjdFRleHR9IHRleHRcbiAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50
fVxuICovXG5mdW5jdGlvbiBjcmVhdGVJbnN0YW5jZUZvclRleHQodGV4dCkge1xuICByZXR1cm4g
bmV3IHRleHRDb21wb25lbnRDbGFzcyh0ZXh0KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlYWN0
Q29tcG9uZW50fSBjb21wb25lbnRcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9u
IGlzVGV4dENvbXBvbmVudChjb21wb25lbnQpIHtcbiAgcmV0dXJuIGNvbXBvbmVudCBpbnN0YW5j
ZW9mIHRleHRDb21wb25lbnRDbGFzcztcbn1cblxudmFyIFJlYWN0SG9zdENvbXBvbmVudCA9IHtc
biAgY3JlYXRlSW50ZXJuYWxDb21wb25lbnQ6IGNyZWF0ZUludGVybmFsQ29tcG9uZW50LFxuICBj
cmVhdGVJbnN0YW5jZUZvclRleHQ6IGNyZWF0ZUluc3RhbmNlRm9yVGV4dCxcbiAgaXNUZXh0Q29t
cG9uZW50OiBpc1RleHRDb21wb25lbnQsXG4gIGluamVjdGlvbjogUmVhY3RIb3N0Q29tcG9uZW50
SW5qZWN0aW9uXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0SG9zdENvbXBvbmVudDtcblxu
LyoqKi8gfSksXG4vKiA3NyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyKTtcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
MCk7XG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTgpO1xu
XG52YXIgZ2V0SXRlcmF0b3JGbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTU5KTtcbnZhciBpbnZh
cmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xudmFyIEtleUVzY2FwZVV0aWxzID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg0NCk7XG52YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18o
MSk7XG5cbnZhciBTRVBBUkFUT1IgPSAnLic7XG52YXIgU1VCU0VQQVJBVE9SID0gJzonO1xuXG4v
KipcbiAqIFRoaXMgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxlbWVudCBzaW5jZSB0aGlzIGZpbGUg
aXMgc2hhcmVkIGJldHdlZW5cbiAqIGlzb21vcnBoaWMgYW5kIHJlbmRlcmVycy4gV2UgY291bGQg
ZXh0cmFjdCB0aGlzIHRvIGFcbiAqXG4gKi9cblxuLyoqXG4gKiBUT0RPOiBUZXN0IHRoYXQgYSBz
aW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUgc2FtZSBrZXlc
biAqIHBhdHRlcm4uXG4gKi9cblxudmFyIGRpZFdhcm5BYm91dE1hcHMgPSBmYWxzZTtcblxuLyoq
XG4gKiBHZW5lcmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgY29tcG9uZW50IHdp
dGhpbiBhIHNldC5cbiAqXG4gKiBAcGFyYW0geyp9IGNvbXBvbmVudCBBIGNvbXBvbmVudCB0aGF0
IGNvdWxkIGNvbnRhaW4gYSBtYW51YWwga2V5LlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IElu
ZGV4IHRoYXQgaXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLlxuICogQHJl
dHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRDb21wb25lbnRLZXkoY29tcG9uZW50LCBp
bmRleCkge1xuICAvLyBEbyBzb21lIHR5cGVjaGVja2luZyBoZXJlIHNpbmNlIHdlIGNhbGwgdGhp
cyBibGluZGx5LiBXZSB3YW50IHRvIGVuc3VyZVxuICAvLyB0aGF0IHdlIGRvbid0IGJsb2NrIHBv
dGVudGlhbCBmdXR1cmUgRVMgQVBJcy5cbiAgaWYgKGNvbXBvbmVudCAmJiB0eXBlb2YgY29tcG9u
ZW50ID09PSAnb2JqZWN0JyAmJiBjb21wb25lbnQua2V5ICE9IG51bGwpIHtcbiAgICAvLyBFeHBs
aWNpdCBrZXlcbiAgICByZXR1cm4gS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGNvbXBvbmVudC5rZXkp
O1xuICB9XG4gIC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRleCBpbiB0aGUg
c2V0XG4gIHJldHVybiBpbmRleC50b1N0cmluZygzNik7XG59XG5cbi8qKlxuICogQHBhcmFtIHs/
Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0geyFzdHJpbmd9
IG5hbWVTb0ZhciBOYW1lIG9mIHRoZSBrZXkgcGF0aCBzbyBmYXIuXG4gKiBAcGFyYW0geyFmdW5j
dGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8gaW52b2tlIHdpdGggZWFjaCBjaGlsZCBmb3VuZC5c
biAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBVc2VkIHRvIHBhc3MgaW5mb3JtYXRpb24g
dGhyb3VnaG91dCB0aGUgdHJhdmVyc2FsXG4gKiBwcm9jZXNzLlxuICogQHJldHVybiB7IW51bWJl
cn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRyZWUuXG4gKi9cbmZ1bmN0aW9u
IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCBuYW1lU29GYXIsIGNhbGxiYWNrLCB0
cmF2ZXJzZUNvbnRleHQpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgY2hpbGRyZW47XG5cbiAgaWYg
KHR5cGUgPT09ICd1bmRlZmluZWQnIHx8IHR5cGUgPT09ICdib29sZWFuJykge1xuICAgIC8vIEFs
bCBvZiB0aGUgYWJvdmUgYXJlIHBlcmNlaXZlZCBhcyBudWxsLlxuICAgIGNoaWxkcmVuID0gbnVs
bDtcbiAgfVxuXG4gIGlmIChjaGlsZHJlbiA9PT0gbnVsbCB8fCB0eXBlID09PSAnc3RyaW5nJyB8
fCB0eXBlID09PSAnbnVtYmVyJyB8fFxuICAvLyBUaGUgZm9sbG93aW5nIGlzIGlubGluZWQgZnJv
bSBSZWFjdEVsZW1lbnQuIFRoaXMgbWVhbnMgd2UgY2FuIG9wdGltaXplXG4gIC8vIHNvbWUgY2hl
Y2tzLiBSZWFjdCBGaWJlciBhbHNvIGlubGluZXMgdGhpcyBsb2dpYyBmb3Igc2ltaWxhciBwdXJw
b3Nlcy5cbiAgdHlwZSA9PT0gJ29iamVjdCcgJiYgY2hpbGRyZW4uJCR0eXBlb2YgPT09IFJFQUNU
X0VMRU1FTlRfVFlQRSkge1xuICAgIGNhbGxiYWNrKHRyYXZlcnNlQ29udGV4dCwgY2hpbGRyZW4s
XG4gICAgLy8gSWYgaXQncyB0aGUgb25seSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUgYXMgaWYgaXQg
d2FzIHdyYXBwZWQgaW4gYW4gYXJyYXlcbiAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBp
ZiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGdyb3dzLlxuICAgIG5hbWVTb0ZhciA9PT0gJycgPyBT
RVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFyKTtcbiAg
ICByZXR1cm4gMTtcbiAgfVxuXG4gIHZhciBjaGlsZDtcbiAgdmFyIG5leHROYW1lO1xuICB2YXIg
c3VidHJlZUNvdW50ID0gMDsgLy8gQ291bnQgb2YgY2hpbGRyZW4gZm91bmQgaW4gdGhlIGN1cnJl
bnQgc3VidHJlZS5cbiAgdmFyIG5leHROYW1lUHJlZml4ID0gbmFtZVNvRmFyID09PSAnJyA/IFNF
UEFSQVRPUiA6IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRPUjtcblxuICBpZiAoQXJyYXkuaXNBcnJh
eShjaGlsZHJlbikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsg
aSsrKSB7XG4gICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgbmV4dE5hbWUgPSBuZXh0
TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaSk7XG4gICAgICBzdWJ0cmVlQ291
bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywg
dHJhdmVyc2VDb250ZXh0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4g
PSBnZXRJdGVyYXRvckZuKGNoaWxkcmVuKTtcbiAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAg
dmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKGNoaWxkcmVuKTtcbiAgICAgIHZhciBzdGVw
O1xuICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IGNoaWxkcmVuLmVudHJpZXMpIHtcbiAgICAgICAg
dmFyIGlpID0gMDtcbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9u
ZSkge1xuICAgICAgICAgIGNoaWxkID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICBuZXh0TmFtZSA9
IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpaSsrKTtcbiAgICAgICAg
ICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1l
LCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtc
biAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuQWRkZW5k
dW0gPSAnJztcbiAgICAgICAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAg
ICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lID0gUmVhY3RDdXJyZW50T3duZXIu
Y3VycmVudC5nZXROYW1lKCk7XG4gICAgICAgICAgICBpZiAobWFwc0FzQ2hpbGRyZW5Pd25lck5h
bWUpIHtcbiAgICAgICAgICAgICAgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSA9ICcgQ2hlY2sgdGhl
IHJlbmRlciBtZXRob2Qgb2YgYCcgKyBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSArICdgLic7XG4g
ICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGRpZFdhcm5BYm91dE1hcHMsICdVc2luZyBNYXBz
IGFzIGNoaWxkcmVuIGlzIG5vdCB5ZXQgZnVsbHkgc3VwcG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4
cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWlnaHQgYmUgcmVtb3ZlZC4gQ29udmVydCBpdCB0byBh
ICcgKyAnc2VxdWVuY2UgLyBpdGVyYWJsZSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQu
JXMnLCBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtKSA6IHZvaWQgMDtcbiAgICAgICAgICBkaWRXYXJu
QWJvdXRNYXBzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHBy
b3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cbiAgICAgICAgd2hp
bGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIHZhciBlbnRy
eSA9IHN0ZXAudmFsdWU7XG4gICAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICBjaGls
ZCA9IGVudHJ5WzFdO1xuICAgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIEtl
eUVzY2FwZVV0aWxzLmVzY2FwZShlbnRyeVswXSkgKyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25l
bnRLZXkoY2hpbGQsIDApO1xuICAgICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxs
Q2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7
XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09
PSAnb2JqZWN0Jykge1xuICAgICAgdmFyIGFkZGVuZHVtID0gJyc7XG4gICAgICBpZiAoZmFsc2Up
IHtcbiAgICAgICAgYWRkZW5kdW0gPSAnIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0
aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgJyArICdpbnN0ZWFkIG9yIHdyYXAgdGhlIG9i
amVjdCB1c2luZyBjcmVhdGVGcmFnbWVudChvYmplY3QpIGZyb20gdGhlICcgKyAnUmVhY3QgYWRk
LW9ucy4nO1xuICAgICAgICBpZiAoY2hpbGRyZW4uX2lzUmVhY3RFbGVtZW50KSB7XG4gICAgICAg
ICAgYWRkZW5kdW0gPSBcIiBJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyBhbiBlbGVtZW50IGNy
ZWF0ZWQgYnkgYSBkaWZmZXJlbnQgXCIgKyAndmVyc2lvbiBvZiBSZWFjdC4gTWFrZSBzdXJlIHRv
IHVzZSBvbmx5IG9uZSBjb3B5IG9mIFJlYWN0Lic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFJl
YWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHtcbiAgICAgICAgICB2YXIgbmFtZSA9IFJlYWN0Q3Vy
cmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpO1xuICAgICAgICAgIGlmIChuYW1lKSB7XG4gICAg
ICAgICAgICBhZGRlbmR1bSArPSAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFt
ZSArICdgLic7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgY2hp
bGRyZW5TdHJpbmcgPSBTdHJpbmcoY2hpbGRyZW4pO1xuICAgICAgIHRydWUgPyAgZmFsc2UgPyBp
bnZhcmlhbnQoZmFsc2UsICdPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAo
Zm91bmQ6ICVzKS4lcycsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdv
YmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAn
fScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogX3Byb2RJbnZhcmlhbnQoJzMxJywgY2hp
bGRyZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8gJ29iamVjdCB3aXRoIGtleXMgeycg
KyBPYmplY3Qua2V5cyhjaGlsZHJlbikuam9pbignLCAnKSArICd9JyA6IGNoaWxkcmVuU3RyaW5n
LCBhZGRlbmR1bSkgOiB2b2lkIDA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN1YnRyZWVDb3Vu
dDtcbn1cblxuLyoqXG4gKiBUcmF2ZXJzZXMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNw
ZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLCBidXRcbiAqIG1pZ2h0IGFsc28gYmUgc3BlY2lm
aWVkIHRocm91Z2ggYXR0cmlidXRlczpcbiAqXG4gKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRo
aXMucHJvcHMuY2hpbGRyZW4sIC4uLilgXG4gKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMu
cHJvcHMubGVmdFBhbmVsQ2hpbGRyZW4sIC4uLilgXG4gKlxuICogVGhlIGB0cmF2ZXJzZUNvbnRl
eHRgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRoYXQgaXMgcGFzc2VkIHRocm91Z2ggdGhlXG4g
KiBlbnRpcmUgdHJhdmVyc2FsLiBJdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBhY2N1bXVsYXRpb25z
IG9yIGFueXRoaW5nIGVsc2UgdGhhdFxuICogdGhlIGNhbGxiYWNrIG1pZ2h0IGZpbmQgcmVsZXZh
bnQuXG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBvYmplY3QuXG4g
KiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgVG8gaW52b2tlIHVwb24gdHJhdmVyc2luZyBl
YWNoIGNoaWxkLlxuICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgZm9yIHRy
YXZlcnNhbC5cbiAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4g
dGhpcyBzdWJ0cmVlLlxuICovXG5mdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVu
LCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7
XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwo
Y2hpbGRyZW4sICcnLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbn1cblxubW9kdWxlLmV4
cG9ydHMgPSB0cmF2ZXJzZUFsbENoaWxkcmVuO1xuXG4vKioqLyB9KSxcbi8qIDc4ICovXG4vKioq
LyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwi
dXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuXG5c
bnZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpO1xuXG52YXIgUmVh
Y3RDdXJyZW50T3duZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblxudmFyIGludmFyaWFu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG52YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1
aXJlX18oMSk7XG5cbmZ1bmN0aW9uIGlzTmF0aXZlKGZuKSB7XG4gIC8vIEJhc2VkIG9uIGlzTmF0
aXZlKCkgZnJvbSBMb2Rhc2hcbiAgdmFyIGZ1bmNUb1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlw
ZS50b1N0cmluZztcbiAgdmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eTtcbiAgdmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICsgZnVuY1RvU3RyaW5n
XG4gIC8vIFRha2UgYW4gZXhhbXBsZSBuYXRpdmUgZnVuY3Rpb24gc291cmNlIGZvciBjb21wYXJp
c29uXG4gIC5jYWxsKGhhc093blByb3BlcnR5XG4gIC8vIFN0cmlwIHJlZ2V4IGNoYXJhY3RlcnMg
c28gd2UgY2FuIHVzZSBpdCBmb3IgcmVnZXhcbiAgKS5yZXBsYWNlKC9bXFxcXF4kLiorPygpW1xc
XXt9fF0vZywgJ1xcXFwkJidcbiAgLy8gUmVtb3ZlIGhhc093blByb3BlcnR5IGZyb20gdGhlIHRl
bXBsYXRlIHRvIG1ha2UgaXQgZ2VuZXJpY1xuICApLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChm
dW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsg
JyQnKTtcbiAgdHJ5IHtcbiAgICB2YXIgc291cmNlID0gZnVuY1RvU3RyaW5nLmNhbGwoZm4pO1xu
ICAgIHJldHVybiByZUlzTmF0aXZlLnRlc3Qoc291cmNlKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4g
ICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbnZhciBjYW5Vc2VDb2xsZWN0aW9ucyA9XG4vLyBB
cnJheS5mcm9tXG50eXBlb2YgQXJyYXkuZnJvbSA9PT0gJ2Z1bmN0aW9uJyAmJlxuLy8gTWFwXG50
eXBlb2YgTWFwID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKE1hcCkgJiZcbi8vIE1hcC5wcm90
b3R5cGUua2V5c1xuTWFwLnByb3RvdHlwZSAhPSBudWxsICYmIHR5cGVvZiBNYXAucHJvdG90eXBl
LmtleXMgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUoTWFwLnByb3RvdHlwZS5rZXlzKSAmJlxu
Ly8gU2V0XG50eXBlb2YgU2V0ID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKFNldCkgJiZcbi8v
IFNldC5wcm90b3R5cGUua2V5c1xuU2V0LnByb3RvdHlwZSAhPSBudWxsICYmIHR5cGVvZiBTZXQu
cHJvdG90eXBlLmtleXMgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUoU2V0LnByb3RvdHlwZS5r
ZXlzKTtcblxudmFyIHNldEl0ZW07XG52YXIgZ2V0SXRlbTtcbnZhciByZW1vdmVJdGVtO1xudmFy
IGdldEl0ZW1JRHM7XG52YXIgYWRkUm9vdDtcbnZhciByZW1vdmVSb290O1xudmFyIGdldFJvb3RJ
RHM7XG5cbmlmIChjYW5Vc2VDb2xsZWN0aW9ucykge1xuICB2YXIgaXRlbU1hcCA9IG5ldyBNYXAo
KTtcbiAgdmFyIHJvb3RJRFNldCA9IG5ldyBTZXQoKTtcblxuICBzZXRJdGVtID0gZnVuY3Rpb24g
KGlkLCBpdGVtKSB7XG4gICAgaXRlbU1hcC5zZXQoaWQsIGl0ZW0pO1xuICB9O1xuICBnZXRJdGVt
ID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuIGl0ZW1NYXAuZ2V0KGlkKTtcbiAgfTtcbiAg
cmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpZCkge1xuICAgIGl0ZW1NYXBbJ2RlbGV0ZSddKGlkKTtc
biAgfTtcbiAgZ2V0SXRlbUlEcyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJv
bShpdGVtTWFwLmtleXMoKSk7XG4gIH07XG5cbiAgYWRkUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xu
ICAgIHJvb3RJRFNldC5hZGQoaWQpO1xuICB9O1xuICByZW1vdmVSb290ID0gZnVuY3Rpb24gKGlk
KSB7XG4gICAgcm9vdElEU2V0WydkZWxldGUnXShpZCk7XG4gIH07XG4gIGdldFJvb3RJRHMgPSBm
dW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20ocm9vdElEU2V0LmtleXMoKSk7XG4g
IH07XG59IGVsc2Uge1xuICB2YXIgaXRlbUJ5S2V5ID0ge307XG4gIHZhciByb290QnlLZXkgPSB7
fTtcblxuICAvLyBVc2Ugbm9uLW51bWVyaWMga2V5cyB0byBwcmV2ZW50IFY4IHBlcmZvcm1hbmNl
IGlzc3VlczpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzIz
MlxuICB2YXIgZ2V0S2V5RnJvbUlEID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuICcuJyAr
IGlkO1xuICB9O1xuICB2YXIgZ2V0SURGcm9tS2V5ID0gZnVuY3Rpb24gKGtleSkge1xuICAgIHJl
dHVybiBwYXJzZUludChrZXkuc3Vic3RyKDEpLCAxMCk7XG4gIH07XG5cbiAgc2V0SXRlbSA9IGZ1
bmN0aW9uIChpZCwgaXRlbSkge1xuICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xuICAg
IGl0ZW1CeUtleVtrZXldID0gaXRlbTtcbiAgfTtcbiAgZ2V0SXRlbSA9IGZ1bmN0aW9uIChpZCkg
e1xuICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xuICAgIHJldHVybiBpdGVtQnlLZXlb
a2V5XTtcbiAgfTtcbiAgcmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBrZXkg
PSBnZXRLZXlGcm9tSUQoaWQpO1xuICAgIGRlbGV0ZSBpdGVtQnlLZXlba2V5XTtcbiAgfTtcbiAg
Z2V0SXRlbUlEcyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoaXRlbUJ5
S2V5KS5tYXAoZ2V0SURGcm9tS2V5KTtcbiAgfTtcblxuICBhZGRSb290ID0gZnVuY3Rpb24gKGlk
KSB7XG4gICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7XG4gICAgcm9vdEJ5S2V5W2tleV0g
PSB0cnVlO1xuICB9O1xuICByZW1vdmVSb290ID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGtl
eSA9IGdldEtleUZyb21JRChpZCk7XG4gICAgZGVsZXRlIHJvb3RCeUtleVtrZXldO1xuICB9O1xu
ICBnZXRSb290SURzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhyb290
QnlLZXkpLm1hcChnZXRJREZyb21LZXkpO1xuICB9O1xufVxuXG52YXIgdW5tb3VudGVkSURzID0g
W107XG5cbmZ1bmN0aW9uIHB1cmdlRGVlcChpZCkge1xuICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQp
O1xuICBpZiAoaXRlbSkge1xuICAgIHZhciBjaGlsZElEcyA9IGl0ZW0uY2hpbGRJRHM7XG5cbiAg
ICByZW1vdmVJdGVtKGlkKTtcbiAgICBjaGlsZElEcy5mb3JFYWNoKHB1cmdlRGVlcCk7XG4gIH1c
bn1cblxuZnVuY3Rpb24gZGVzY3JpYmVDb21wb25lbnRGcmFtZShuYW1lLCBzb3VyY2UsIG93bmVy
TmFtZSkge1xuICByZXR1cm4gJ1xcbiAgICBpbiAnICsgKG5hbWUgfHwgJ1Vua25vd24nKSArIChz
b3VyY2UgPyAnIChhdCAnICsgc291cmNlLmZpbGVOYW1lLnJlcGxhY2UoL14uKltcXFxcXFwvXS8s
ICcnKSArICc6JyArIHNvdXJjZS5saW5lTnVtYmVyICsgJyknIDogb3duZXJOYW1lID8gJyAoY3Jl
YXRlZCBieSAnICsgb3duZXJOYW1lICsgJyknIDogJycpO1xufVxuXG5mdW5jdGlvbiBnZXREaXNw
bGF5TmFtZShlbGVtZW50KSB7XG4gIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm4g
JyNlbXB0eSc7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnIHx8IHR5
cGVvZiBlbGVtZW50ID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiAnI3RleHQnO1xuICB9IGVs
c2UgaWYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGVs
ZW1lbnQudHlwZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZWxlbWVudC50eXBlLmRpc3BsYXlO
YW1lIHx8IGVsZW1lbnQudHlwZS5uYW1lIHx8ICdVbmtub3duJztcbiAgfVxufVxuXG5mdW5jdGlv
biBkZXNjcmliZUlEKGlkKSB7XG4gIHZhciBuYW1lID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5n
ZXREaXNwbGF5TmFtZShpZCk7XG4gIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9v
ay5nZXRFbGVtZW50KGlkKTtcbiAgdmFyIG93bmVySUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29r
LmdldE93bmVySUQoaWQpO1xuICB2YXIgb3duZXJOYW1lO1xuICBpZiAob3duZXJJRCkge1xuICAg
IG93bmVyTmFtZSA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUob3duZXJJ
RCk7XG4gIH1cbiAgIGZhbHNlID8gd2FybmluZyhlbGVtZW50LCAnUmVhY3RDb21wb25lbnRUcmVl
SG9vazogTWlzc2luZyBSZWFjdCBlbGVtZW50IGZvciBkZWJ1Z0lEICVzIHdoZW4gJyArICdidWls
ZGluZyBzdGFjaycsIGlkKSA6IHZvaWQgMDtcbiAgcmV0dXJuIGRlc2NyaWJlQ29tcG9uZW50RnJh
bWUobmFtZSwgZWxlbWVudCAmJiBlbGVtZW50Ll9zb3VyY2UsIG93bmVyTmFtZSk7XG59XG5cbnZh
ciBSZWFjdENvbXBvbmVudFRyZWVIb29rID0ge1xuICBvblNldENoaWxkcmVuOiBmdW5jdGlvbiAo
aWQsIG5leHRDaGlsZElEcykge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgIWl0
ZW0gPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdJdGVtIG11c3QgaGF2ZSBiZWVuIHNldCcp
IDogX3Byb2RJbnZhcmlhbnQoJzE0NCcpIDogdm9pZCAwO1xuICAgIGl0ZW0uY2hpbGRJRHMgPSBu
ZXh0Q2hpbGRJRHM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5leHRDaGlsZElEcy5sZW5n
dGg7IGkrKykge1xuICAgICAgdmFyIG5leHRDaGlsZElEID0gbmV4dENoaWxkSURzW2ldO1xuICAg
ICAgdmFyIG5leHRDaGlsZCA9IGdldEl0ZW0obmV4dENoaWxkSUQpO1xuICAgICAgIW5leHRDaGls
ZCA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIGhvb2sgZXZlbnRzIHRvIGZp
cmUgZm9yIHRoZSBjaGlsZCBiZWZvcmUgaXRzIHBhcmVudCBpbmNsdWRlcyBpdCBpbiBvblNldENo
aWxkcmVuKCkuJykgOiBfcHJvZEludmFyaWFudCgnMTQwJykgOiB2b2lkIDA7XG4gICAgICAhKG5l
eHRDaGlsZC5jaGlsZElEcyAhPSBudWxsIHx8IHR5cGVvZiBuZXh0Q2hpbGQuZWxlbWVudCAhPT0g
J29iamVjdCcgfHwgbmV4dENoaWxkLmVsZW1lbnQgPT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICdFeHBlY3RlZCBvblNldENoaWxkcmVuKCkgdG8gZmlyZSBmb3IgYSBjb250YWlu
ZXIgY2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMgaXQgaW4gb25TZXRDaGlsZHJlbigp
LicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MScpIDogdm9pZCAwO1xuICAgICAgIW5leHRDaGlsZC5p
c01vdW50ZWQgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBvbk1vdW50Q29t
cG9uZW50KCkgdG8gZmlyZSBmb3IgdGhlIGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50IGluY2x1ZGVz
IGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4nKSA6IF9wcm9kSW52YXJpYW50KCc3MScpIDogdm9pZCAw
O1xuICAgICAgaWYgKG5leHRDaGlsZC5wYXJlbnRJRCA9PSBudWxsKSB7XG4gICAgICAgIG5leHRD
aGlsZC5wYXJlbnRJRCA9IGlkO1xuICAgICAgICAvLyBUT0RPOiBUaGlzIHNob3VsZG4ndCBiZSBu
ZWNlc3NhcnkgYnV0IG1vdW50aW5nIGEgbmV3IHJvb3QgZHVyaW5nIGluXG4gICAgICAgIC8vIGNv
bXBvbmVudFdpbGxNb3VudCBjdXJyZW50bHkgY2F1c2VzIG5vdC15ZXQtbW91bnRlZCBjb21wb25l
bnRzIHRvXG4gICAgICAgIC8vIGJlIHB1cmdlZCBmcm9tIG91ciB0cmVlIGRhdGEgc28gdGhlaXIg
cGFyZW50IGlkIGlzIG1pc3NpbmcuXG4gICAgICB9XG4gICAgICAhKG5leHRDaGlsZC5wYXJlbnRJ
RCA9PT0gaWQpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgb25CZWZvcmVN
b3VudENvbXBvbmVudCgpIHBhcmVudCBhbmQgb25TZXRDaGlsZHJlbigpIHRvIGJlIGNvbnNpc3Rl
bnQgKCVzIGhhcyBwYXJlbnRzICVzIGFuZCAlcykuJywgbmV4dENoaWxkSUQsIG5leHRDaGlsZC5w
YXJlbnRJRCwgaWQpIDogX3Byb2RJbnZhcmlhbnQoJzE0MicsIG5leHRDaGlsZElELCBuZXh0Q2hp
bGQucGFyZW50SUQsIGlkKSA6IHZvaWQgMDtcbiAgICB9XG4gIH0sXG4gIG9uQmVmb3JlTW91bnRD
b21wb25lbnQ6IGZ1bmN0aW9uIChpZCwgZWxlbWVudCwgcGFyZW50SUQpIHtcbiAgICB2YXIgaXRl
bSA9IHtcbiAgICAgIGVsZW1lbnQ6IGVsZW1lbnQsXG4gICAgICBwYXJlbnRJRDogcGFyZW50SUQs
XG4gICAgICB0ZXh0OiBudWxsLFxuICAgICAgY2hpbGRJRHM6IFtdLFxuICAgICAgaXNNb3VudGVk
OiBmYWxzZSxcbiAgICAgIHVwZGF0ZUNvdW50OiAwXG4gICAgfTtcbiAgICBzZXRJdGVtKGlkLCBp
dGVtKTtcbiAgfSxcbiAgb25CZWZvcmVVcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCwgZWxl
bWVudCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgaWYgKCFpdGVtIHx8ICFp
dGVtLmlzTW91bnRlZCkge1xuICAgICAgLy8gV2UgbWF5IGVuZCB1cCBoZXJlIGFzIGEgcmVzdWx0
IG9mIHNldFN0YXRlKCkgaW4gY29tcG9uZW50V2lsbFVubW91bnQoKS5cbiAgICAgIC8vIEluIHRo
aXMgY2FzZSwgaWdub3JlIHRoZSBlbGVtZW50LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBp
dGVtLmVsZW1lbnQgPSBlbGVtZW50O1xuICB9LFxuICBvbk1vdW50Q29tcG9uZW50OiBmdW5jdGlv
biAoaWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgICFpdGVtID8gIGZhbHNl
ID8gaW52YXJpYW50KGZhbHNlLCAnSXRlbSBtdXN0IGhhdmUgYmVlbiBzZXQnKSA6IF9wcm9kSW52
YXJpYW50KCcxNDQnKSA6IHZvaWQgMDtcbiAgICBpdGVtLmlzTW91bnRlZCA9IHRydWU7XG4gICAg
dmFyIGlzUm9vdCA9IGl0ZW0ucGFyZW50SUQgPT09IDA7XG4gICAgaWYgKGlzUm9vdCkge1xuICAg
ICAgYWRkUm9vdChpZCk7XG4gICAgfVxuICB9LFxuICBvblVwZGF0ZUNvbXBvbmVudDogZnVuY3Rp
b24gKGlkKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICBpZiAoIWl0ZW0gfHwg
IWl0ZW0uaXNNb3VudGVkKSB7XG4gICAgICAvLyBXZSBtYXkgZW5kIHVwIGhlcmUgYXMgYSByZXN1
bHQgb2Ygc2V0U3RhdGUoKSBpbiBjb21wb25lbnRXaWxsVW5tb3VudCgpLlxuICAgICAgLy8gSW4g
dGhpcyBjYXNlLCBpZ25vcmUgdGhlIGVsZW1lbnQuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAg
IGl0ZW0udXBkYXRlQ291bnQrKztcbiAgfSxcbiAgb25Vbm1vdW50Q29tcG9uZW50OiBmdW5jdGlv
biAoaWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIGlmIChpdGVtKSB7XG4g
ICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGlmIGl0IGV4aXN0cy5cbiAgICAgIC8vIGBpdGVtYCBt
aWdodCBub3QgZXhpc3QgaWYgaXQgaXMgaW5zaWRlIGFuIGVycm9yIGJvdW5kYXJ5LCBhbmQgYSBz
aWJsaW5nXG4gICAgICAvLyBlcnJvciBib3VuZGFyeSBjaGlsZCB0aHJldyB3aGlsZSBtb3VudGlu
Zy4gVGhlbiB0aGlzIGluc3RhbmNlIG5ldmVyXG4gICAgICAvLyBnb3QgYSBjaGFuY2UgdG8gbW91
bnQsIGJ1dCBpdCBzdGlsbCBnZXRzIGFuIHVubW91bnRpbmcgZXZlbnQgZHVyaW5nXG4gICAgICAv
LyB0aGUgZXJyb3IgYm91bmRhcnkgY2xlYW51cC5cbiAgICAgIGl0ZW0uaXNNb3VudGVkID0gZmFs
c2U7XG4gICAgICB2YXIgaXNSb290ID0gaXRlbS5wYXJlbnRJRCA9PT0gMDtcbiAgICAgIGlmIChp
c1Jvb3QpIHtcbiAgICAgICAgcmVtb3ZlUm9vdChpZCk7XG4gICAgICB9XG4gICAgfVxuICAgIHVu
bW91bnRlZElEcy5wdXNoKGlkKTtcbiAgfSxcbiAgcHVyZ2VVbm1vdW50ZWRDb21wb25lbnRzOiBm
dW5jdGlvbiAoKSB7XG4gICAgaWYgKFJlYWN0Q29tcG9uZW50VHJlZUhvb2suX3ByZXZlbnRQdXJn
aW5nKSB7XG4gICAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZXN0aW5nLlxuICAgICAg
cmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5tb3VudGVkSURzLmxl
bmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWQgPSB1bm1vdW50ZWRJRHNbaV07XG4gICAgICBwdXJn
ZURlZXAoaWQpO1xuICAgIH1cbiAgICB1bm1vdW50ZWRJRHMubGVuZ3RoID0gMDtcbiAgfSxcbiAg
aXNNb3VudGVkOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xu
ICAgIHJldHVybiBpdGVtID8gaXRlbS5pc01vdW50ZWQgOiBmYWxzZTtcbiAgfSxcbiAgZ2V0Q3Vy
cmVudFN0YWNrQWRkZW5kdW06IGZ1bmN0aW9uICh0b3BFbGVtZW50KSB7XG4gICAgdmFyIGluZm8g
PSAnJztcbiAgICBpZiAodG9wRWxlbWVudCkge1xuICAgICAgdmFyIG5hbWUgPSBnZXREaXNwbGF5
TmFtZSh0b3BFbGVtZW50KTtcbiAgICAgIHZhciBvd25lciA9IHRvcEVsZW1lbnQuX293bmVyO1xu
ICAgICAgaW5mbyArPSBkZXNjcmliZUNvbXBvbmVudEZyYW1lKG5hbWUsIHRvcEVsZW1lbnQuX3Nv
dXJjZSwgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpKTtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVu
dE93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICB2YXIgaWQgPSBjdXJyZW50
T3duZXIgJiYgY3VycmVudE93bmVyLl9kZWJ1Z0lEO1xuXG4gICAgaW5mbyArPSBSZWFjdENvbXBv
bmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGlkKTtcbiAgICByZXR1cm4gaW5mbztc
biAgfSxcbiAgZ2V0U3RhY2tBZGRlbmR1bUJ5SUQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBp
bmZvID0gJyc7XG4gICAgd2hpbGUgKGlkKSB7XG4gICAgICBpbmZvICs9IGRlc2NyaWJlSUQoaWQp
O1xuICAgICAgaWQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFBhcmVudElEKGlkKTtcbiAg
ICB9XG4gICAgcmV0dXJuIGluZm87XG4gIH0sXG4gIGdldENoaWxkSURzOiBmdW5jdGlvbiAoaWQp
IHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIHJldHVybiBpdGVtID8gaXRlbS5j
aGlsZElEcyA6IFtdO1xuICB9LFxuICBnZXREaXNwbGF5TmFtZTogZnVuY3Rpb24gKGlkKSB7XG4g
ICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQpO1xu
ICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVy
biBnZXREaXNwbGF5TmFtZShlbGVtZW50KTtcbiAgfSxcbiAgZ2V0RWxlbWVudDogZnVuY3Rpb24g
KGlkKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICByZXR1cm4gaXRlbSA/IGl0
ZW0uZWxlbWVudCA6IG51bGw7XG4gIH0sXG4gIGdldE93bmVySUQ6IGZ1bmN0aW9uIChpZCkge1xu
ICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtc
biAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQuX293bmVyKSB7XG4gICAgICByZXR1cm4gbnVs
bDtcbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnQuX293bmVyLl9kZWJ1Z0lEO1xuICB9LFxuICBn
ZXRQYXJlbnRJRDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtc
biAgICByZXR1cm4gaXRlbSA/IGl0ZW0ucGFyZW50SUQgOiBudWxsO1xuICB9LFxuICBnZXRTb3Vy
Y2U6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgdmFy
IGVsZW1lbnQgPSBpdGVtID8gaXRlbS5lbGVtZW50IDogbnVsbDtcbiAgICB2YXIgc291cmNlID0g
ZWxlbWVudCAhPSBudWxsID8gZWxlbWVudC5fc291cmNlIDogbnVsbDtcbiAgICByZXR1cm4gc291
cmNlO1xuICB9LFxuICBnZXRUZXh0OiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgZWxlbWVudCA9
IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG4gICAgaWYgKHR5cGVvZiBl
bGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfSBlbHNl
IGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiAnJyArIGVs
ZW1lbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSxcbiAg
Z2V0VXBkYXRlQ291bnQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShp
ZCk7XG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLnVwZGF0ZUNvdW50IDogMDtcbiAgfSxcblxuXG4g
IGdldFJvb3RJRHM6IGdldFJvb3RJRHMsXG4gIGdldFJlZ2lzdGVyZWRJRHM6IGdldEl0ZW1JRHMs
XG5cbiAgcHVzaE5vblN0YW5kYXJkV2FybmluZ1N0YWNrOiBmdW5jdGlvbiAoaXNDcmVhdGluZ0Vs
ZW1lbnQsIGN1cnJlbnRTb3VyY2UpIHtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUucmVhY3RTdGFj
ayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBzdGFj
ayA9IFtdO1xuICAgIHZhciBjdXJyZW50T3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
O1xuICAgIHZhciBpZCA9IGN1cnJlbnRPd25lciAmJiBjdXJyZW50T3duZXIuX2RlYnVnSUQ7XG5c
biAgICB0cnkge1xuICAgICAgaWYgKGlzQ3JlYXRpbmdFbGVtZW50KSB7XG4gICAgICAgIHN0YWNr
LnB1c2goe1xuICAgICAgICAgIG5hbWU6IGlkID8gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRE
aXNwbGF5TmFtZShpZCkgOiBudWxsLFxuICAgICAgICAgIGZpbGVOYW1lOiBjdXJyZW50U291cmNl
ID8gY3VycmVudFNvdXJjZS5maWxlTmFtZSA6IG51bGwsXG4gICAgICAgICAgbGluZU51bWJlcjog
Y3VycmVudFNvdXJjZSA/IGN1cnJlbnRTb3VyY2UubGluZU51bWJlciA6IG51bGxcbiAgICAgICAg
fSk7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChpZCkge1xuICAgICAgICB2YXIgZWxlbWVudCA9
IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG4gICAgICAgIHZhciBwYXJl
bnRJRCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0UGFyZW50SUQoaWQpO1xuICAgICAgICB2
YXIgb3duZXJJRCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0T3duZXJJRChpZCk7XG4gICAg
ICAgIHZhciBvd25lck5hbWUgPSBvd25lcklEID8gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRE
aXNwbGF5TmFtZShvd25lcklEKSA6IG51bGw7XG4gICAgICAgIHZhciBzb3VyY2UgPSBlbGVtZW50
ICYmIGVsZW1lbnQuX3NvdXJjZTtcbiAgICAgICAgc3RhY2sucHVzaCh7XG4gICAgICAgICAgbmFt
ZTogb3duZXJOYW1lLFxuICAgICAgICAgIGZpbGVOYW1lOiBzb3VyY2UgPyBzb3VyY2UuZmlsZU5h
bWUgOiBudWxsLFxuICAgICAgICAgIGxpbmVOdW1iZXI6IHNvdXJjZSA/IHNvdXJjZS5saW5lTnVt
YmVyIDogbnVsbFxuICAgICAgICB9KTtcbiAgICAgICAgaWQgPSBwYXJlbnRJRDtcbiAgICAgIH1c
biAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIEludGVybmFsIHN0YXRlIGlzIG1lc3NlZCB1
cC5cbiAgICAgIC8vIFN0b3AgYnVpbGRpbmcgdGhlIHN0YWNrIChpdCdzIGp1c3QgYSBuaWNlIHRv
IGhhdmUpLlxuICAgIH1cblxuICAgIGNvbnNvbGUucmVhY3RTdGFjayhzdGFjayk7XG4gIH0sXG4g
IHBvcE5vblN0YW5kYXJkV2FybmluZ1N0YWNrOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVv
ZiBjb25zb2xlLnJlYWN0U3RhY2tFbmQgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybjtc
biAgICB9XG4gICAgY29uc29sZS5yZWFjdFN0YWNrRW5kKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5l
eHBvcnRzID0gUmVhY3RDb21wb25lbnRUcmVlSG9vaztcblxuLyoqKi8gfSksXG4vKiA3OSAqL1xu
LyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cInVzZSBzdHJpY3RcIjtcblxuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICog
QHR5cGVjaGVja3NcbiAqL1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJl
X18oNik7XG5cbi8qKlxuICogVXBzdHJlYW0gdmVyc2lvbiBvZiBldmVudCBsaXN0ZW5lci4gRG9l
cyBub3QgdGFrZSBpbnRvIGFjY291bnQgc3BlY2lmaWNcbiAqIG5hdHVyZSBvZiBwbGF0Zm9ybS5c
biAqL1xudmFyIEV2ZW50TGlzdGVuZXIgPSB7XG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRE9NIGV2
ZW50cyBkdXJpbmcgdGhlIGJ1YmJsZSBwaGFzZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FdmVu
dFRhcmdldH0gdGFyZ2V0IERPTSBlbGVtZW50IHRvIHJlZ2lzdGVyIGxpc3RlbmVyIG9uLlxuICAg
KiBAcGFyYW0ge3N0cmluZ30gZXZlbnRUeXBlIEV2ZW50IHR5cGUsIGUuZy4gJ2NsaWNrJyBvciAn
bW91c2VvdmVyJy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgZnVu
Y3Rpb24uXG4gICAqIEByZXR1cm4ge29iamVjdH0gT2JqZWN0IHdpdGggYSBgcmVtb3ZlYCBtZXRo
b2QuXG4gICAqL1xuICBsaXN0ZW46IGZ1bmN0aW9uIGxpc3Rlbih0YXJnZXQsIGV2ZW50VHlwZSwg
Y2FsbGJhY2spIHtcbiAgICBpZiAodGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgIHRh
cmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ssIGZhbHNlKTtcbiAgICAg
IHJldHVybiB7XG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgICAg
IHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ssIGZhbHNlKTtc
biAgICAgICAgfVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHRhcmdldC5hdHRhY2hFdmVudCkg
e1xuICAgICAgdGFyZ2V0LmF0dGFjaEV2ZW50KCdvbicgKyBldmVudFR5cGUsIGNhbGxiYWNrKTtc
biAgICAgIHJldHVybiB7XG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAg
ICAgICAgIHRhcmdldC5kZXRhY2hFdmVudCgnb24nICsgZXZlbnRUeXBlLCBjYWxsYmFjayk7XG4g
ICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8g
RE9NIGV2ZW50cyBkdXJpbmcgdGhlIGNhcHR1cmUgcGhhc2UuXG4gICAqXG4gICAqIEBwYXJhbSB7
RE9NRXZlbnRUYXJnZXR9IHRhcmdldCBET00gZWxlbWVudCB0byByZWdpc3RlciBsaXN0ZW5lciBv
bi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VHlwZSBFdmVudCB0eXBlLCBlLmcuICdjbGlj
aycgb3IgJ21vdXNlb3ZlcicuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxi
YWNrIGZ1bmN0aW9uLlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IE9iamVjdCB3aXRoIGEgYHJlbW92
ZWAgbWV0aG9kLlxuICAgKi9cbiAgY2FwdHVyZTogZnVuY3Rpb24gY2FwdHVyZSh0YXJnZXQsIGV2
ZW50VHlwZSwgY2FsbGJhY2spIHtcbiAgICBpZiAodGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIpIHtc
biAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ssIHRydWUp
O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4g
ICAgICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywg
dHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmYWxz
ZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdBdHRlbXB0ZWQgdG8gbGlzdGVuIHRvIGV2ZW50
cyBkdXJpbmcgdGhlIGNhcHR1cmUgcGhhc2Ugb24gYSAnICsgJ2Jyb3dzZXIgdGhhdCBkb2VzIG5v
dCBzdXBwb3J0IHRoZSBjYXB0dXJlIHBoYXNlLiBZb3VyIGFwcGxpY2F0aW9uICcgKyAnd2lsbCBu
b3QgcmVjZWl2ZSBzb21lIGV2ZW50cy4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAg
ICAgIHJlbW92ZTogZW1wdHlGdW5jdGlvblxuICAgICAgfTtcbiAgICB9XG4gIH0sXG5cbiAgcmVn
aXN0ZXJEZWZhdWx0OiBmdW5jdGlvbiByZWdpc3RlckRlZmF1bHQoKSB7fVxufTtcblxubW9kdWxl
LmV4cG9ydHMgPSBFdmVudExpc3RlbmVyO1xuXG4vKioqLyB9KSxcbi8qIDgwICovXG4vKioqLyAo
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNl
IHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52YXIgUmVh
Y3RET01TZWxlY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3MSk7XG5cbnZhciBjb250YWlu
c05vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3Myk7XG52YXIgZm9jdXNOb2RlID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg2OCk7XG52YXIgZ2V0QWN0aXZlRWxlbWVudCA9IF9fd2VicGFja19yZXF1
aXJlX18oODEpO1xuXG5mdW5jdGlvbiBpc0luRG9jdW1lbnQobm9kZSkge1xuICByZXR1cm4gY29u
dGFpbnNOb2RlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgbm9kZSk7XG59XG5cbi8qKlxuICog
QFJlYWN0SW5wdXRTZWxlY3Rpb246IFJlYWN0IGlucHV0IHNlbGVjdGlvbiBtb2R1bGUuIEJhc2Vk
IG9uIFNlbGVjdGlvbi5qcyxcbiAqIGJ1dCBtb2RpZmllZCB0byBiZSBzdWl0YWJsZSBmb3IgcmVh
Y3QgYW5kIGhhcyBhIGNvdXBsZSBvZiBidWcgZml4ZXMgKGRvZXNuJ3RcbiAqIGFzc3VtZSBidXR0
b25zIGhhdmUgcmFuZ2Ugc2VsZWN0aW9ucyBhbGxvd2VkKS5cbiAqIElucHV0IHNlbGVjdGlvbiBt
b2R1bGUgZm9yIFJlYWN0LlxuICovXG52YXIgUmVhY3RJbnB1dFNlbGVjdGlvbiA9IHtcbiAgaGFz
U2VsZWN0aW9uQ2FwYWJpbGl0aWVzOiBmdW5jdGlvbiAoZWxlbSkge1xuICAgIHZhciBub2RlTmFt
ZSA9IGVsZW0gJiYgZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7
XG4gICAgcmV0dXJuIG5vZGVOYW1lICYmIChub2RlTmFtZSA9PT0gJ2lucHV0JyAmJiBlbGVtLnR5
cGUgPT09ICd0ZXh0JyB8fCBub2RlTmFtZSA9PT0gJ3RleHRhcmVhJyB8fCBlbGVtLmNvbnRlbnRF
ZGl0YWJsZSA9PT0gJ3RydWUnKTtcbiAgfSxcblxuICBnZXRTZWxlY3Rpb25JbmZvcm1hdGlvbjog
ZnVuY3Rpb24gKCkge1xuICAgIHZhciBmb2N1c2VkRWxlbSA9IGdldEFjdGl2ZUVsZW1lbnQoKTtc
biAgICByZXR1cm4ge1xuICAgICAgZm9jdXNlZEVsZW06IGZvY3VzZWRFbGVtLFxuICAgICAgc2Vs
ZWN0aW9uUmFuZ2U6IFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVz
KGZvY3VzZWRFbGVtKSA/IFJlYWN0SW5wdXRTZWxlY3Rpb24uZ2V0U2VsZWN0aW9uKGZvY3VzZWRF
bGVtKSA6IG51bGxcbiAgICB9O1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcmVzdG9yZVNlbGVjdGlv
bjogSWYgYW55IHNlbGVjdGlvbiBpbmZvcm1hdGlvbiB3YXMgcG90ZW50aWFsbHkgbG9zdCxcbiAg
ICogcmVzdG9yZSBpdC4gVGhpcyBpcyB1c2VmdWwgd2hlbiBwZXJmb3JtaW5nIG9wZXJhdGlvbnMg
dGhhdCBjb3VsZCByZW1vdmUgZG9tXG4gICAqIG5vZGVzIGFuZCBwbGFjZSB0aGVtIGJhY2sgaW4s
IHJlc3VsdGluZyBpbiBmb2N1cyBiZWluZyBsb3N0LlxuICAgKi9cbiAgcmVzdG9yZVNlbGVjdGlv
bjogZnVuY3Rpb24gKHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24pIHtcbiAgICB2YXIgY3VyRm9j
dXNlZEVsZW0gPSBnZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgdmFyIHByaW9yRm9jdXNlZEVsZW0g
PSBwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uLmZvY3VzZWRFbGVtO1xuICAgIHZhciBwcmlvclNl
bGVjdGlvblJhbmdlID0gcHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbi5zZWxlY3Rpb25SYW5nZTtc
biAgICBpZiAoY3VyRm9jdXNlZEVsZW0gIT09IHByaW9yRm9jdXNlZEVsZW0gJiYgaXNJbkRvY3Vt
ZW50KHByaW9yRm9jdXNlZEVsZW0pKSB7XG4gICAgICBpZiAoUmVhY3RJbnB1dFNlbGVjdGlvbi5o
YXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMocHJpb3JGb2N1c2VkRWxlbSkpIHtcbiAgICAgICAgUmVh
Y3RJbnB1dFNlbGVjdGlvbi5zZXRTZWxlY3Rpb24ocHJpb3JGb2N1c2VkRWxlbSwgcHJpb3JTZWxl
Y3Rpb25SYW5nZSk7XG4gICAgICB9XG4gICAgICBmb2N1c05vZGUocHJpb3JGb2N1c2VkRWxlbSk7
XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBAZ2V0U2VsZWN0aW9uOiBHZXRzIHRoZSBzZWxl
Y3Rpb24gYm91bmRzIG9mIGEgZm9jdXNlZCB0ZXh0YXJlYSwgaW5wdXQgb3JcbiAgICogY29udGVu
dEVkaXRhYmxlIG5vZGUuXG4gICAqIC1AaW5wdXQ6IExvb2sgdXAgc2VsZWN0aW9uIGJvdW5kcyBv
ZiB0aGlzIGlucHV0XG4gICAqIC1AcmV0dXJuIHtzdGFydDogc2VsZWN0aW9uU3RhcnQsIGVuZDog
c2VsZWN0aW9uRW5kfVxuICAgKi9cbiAgZ2V0U2VsZWN0aW9uOiBmdW5jdGlvbiAoaW5wdXQpIHtc
biAgICB2YXIgc2VsZWN0aW9uO1xuXG4gICAgaWYgKCdzZWxlY3Rpb25TdGFydCcgaW4gaW5wdXQp
IHtcbiAgICAgIC8vIE1vZGVybiBicm93c2VyIHdpdGggaW5wdXQgb3IgdGV4dGFyZWEuXG4gICAg
ICBzZWxlY3Rpb24gPSB7XG4gICAgICAgIHN0YXJ0OiBpbnB1dC5zZWxlY3Rpb25TdGFydCxcbiAg
ICAgICAgZW5kOiBpbnB1dC5zZWxlY3Rpb25FbmRcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChk
b2N1bWVudC5zZWxlY3Rpb24gJiYgaW5wdXQubm9kZU5hbWUgJiYgaW5wdXQubm9kZU5hbWUudG9M
b3dlckNhc2UoKSA9PT0gJ2lucHV0Jykge1xuICAgICAgLy8gSUU4IGlucHV0LlxuICAgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7XG4gICAgICAvLyBUaGVy
ZSBjYW4gb25seSBiZSBvbmUgc2VsZWN0aW9uIHBlciBkb2N1bWVudCBpbiBJRSwgc28gaXQgbXVz
dFxuICAgICAgLy8gYmUgaW4gb3VyIGVsZW1lbnQuXG4gICAgICBpZiAocmFuZ2UucGFyZW50RWxl
bWVudCgpID09PSBpbnB1dCkge1xuICAgICAgICBzZWxlY3Rpb24gPSB7XG4gICAgICAgICAgc3Rh
cnQ6IC1yYW5nZS5tb3ZlU3RhcnQoJ2NoYXJhY3RlcicsIC1pbnB1dC52YWx1ZS5sZW5ndGgpLFxu
ICAgICAgICAgIGVuZDogLXJhbmdlLm1vdmVFbmQoJ2NoYXJhY3RlcicsIC1pbnB1dC52YWx1ZS5s
ZW5ndGgpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnRl
bnQgZWRpdGFibGUgb3Igb2xkIElFIHRleHRhcmVhLlxuICAgICAgc2VsZWN0aW9uID0gUmVhY3RE
T01TZWxlY3Rpb24uZ2V0T2Zmc2V0cyhpbnB1dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGVj
dGlvbiB8fCB7IHN0YXJ0OiAwLCBlbmQ6IDAgfTtcbiAgfSxcblxuICAvKipcbiAgICogQHNldFNl
bGVjdGlvbjogU2V0cyB0aGUgc2VsZWN0aW9uIGJvdW5kcyBvZiBhIHRleHRhcmVhIG9yIGlucHV0
IGFuZCBmb2N1c2VzXG4gICAqIHRoZSBpbnB1dC5cbiAgICogLUBpbnB1dCAgICAgU2V0IHNlbGVj
dGlvbiBib3VuZHMgb2YgdGhpcyBpbnB1dCBvciB0ZXh0YXJlYVxuICAgKiAtQG9mZnNldHMgICBP
YmplY3Qgb2Ygc2FtZSBmb3JtIHRoYXQgaXMgcmV0dXJuZWQgZnJvbSBnZXQqXG4gICAqL1xuICBz
ZXRTZWxlY3Rpb246IGZ1bmN0aW9uIChpbnB1dCwgb2Zmc2V0cykge1xuICAgIHZhciBzdGFydCA9
IG9mZnNldHMuc3RhcnQ7XG4gICAgdmFyIGVuZCA9IG9mZnNldHMuZW5kO1xuICAgIGlmIChlbmQg
PT09IHVuZGVmaW5lZCkge1xuICAgICAgZW5kID0gc3RhcnQ7XG4gICAgfVxuXG4gICAgaWYgKCdz
ZWxlY3Rpb25TdGFydCcgaW4gaW5wdXQpIHtcbiAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID0g
c3RhcnQ7XG4gICAgICBpbnB1dC5zZWxlY3Rpb25FbmQgPSBNYXRoLm1pbihlbmQsIGlucHV0LnZh
bHVlLmxlbmd0aCk7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24gJiYgaW5wdXQu
bm9kZU5hbWUgJiYgaW5wdXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0Jykge1xu
ICAgICAgdmFyIHJhbmdlID0gaW5wdXQuY3JlYXRlVGV4dFJhbmdlKCk7XG4gICAgICByYW5nZS5j
b2xsYXBzZSh0cnVlKTtcbiAgICAgIHJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgc3RhcnQp
O1xuICAgICAgcmFuZ2UubW92ZUVuZCgnY2hhcmFjdGVyJywgZW5kIC0gc3RhcnQpO1xuICAgICAg
cmFuZ2Uuc2VsZWN0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIFJlYWN0RE9NU2VsZWN0aW9uLnNl
dE9mZnNldHMoaW5wdXQsIG9mZnNldHMpO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9y
dHMgPSBSZWFjdElucHV0U2VsZWN0aW9uO1xuXG4vKioqLyB9KSxcbi8qIDgxICovXG4vKioqLyAo
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNl
IHN0cmljdFwiO1xuXG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNo
ZWNrc1xuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIGZiLXd3dy90eXBlb2YtdW5kZWZpbmVkICov
XG5cbi8qKlxuICogU2FtZSBhcyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGJ1dCB3cmFwcyBpbiBh
IHRyeS1jYXRjaCBibG9jay4gSW4gSUUgaXQgaXNcbiAqIG5vdCBzYWZlIHRvIGNhbGwgZG9jdW1l
bnQuYWN0aXZlRWxlbWVudCBpZiB0aGVyZSBpcyBub3RoaW5nIGZvY3VzZWQuXG4gKlxuICogVGhl
IGFjdGl2ZUVsZW1lbnQgd2lsbCBiZSBudWxsIG9ubHkgaWYgdGhlIGRvY3VtZW50IG9yIGRvY3Vt
ZW50IGJvZHkgaXMgbm90XG4gKiB5ZXQgZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0gez9ET01Eb2N1
bWVudH0gZG9jIERlZmF1bHRzIHRvIGN1cnJlbnQgZG9jdW1lbnQuXG4gKiBAcmV0dXJuIHs/RE9N
RWxlbWVudH1cbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aXZlRWxlbWVudChkb2MpIC8qP0RPTUVsZW1l
bnQqL3tcbiAgZG9jID0gZG9jIHx8ICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8g
ZG9jdW1lbnQgOiB1bmRlZmluZWQpO1xuICBpZiAodHlwZW9mIGRvYyA9PT0gJ3VuZGVmaW5lZCcp
IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBkb2MuYWN0aXZl
RWxlbWVudCB8fCBkb2MuYm9keTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBkb2MuYm9k
eTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEFjdGl2ZUVsZW1lbnQ7XG5cbi8qKiov
IH0pLFxuLyogODIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKi9cblxuXG5cbnZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18o
Mik7XG5cbnZhciBET01MYXp5VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpO1xudmFyIERP
TVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG52YXIgUmVhY3QgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEzKTtcbnZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDI4KTtcbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9fd2VicGFja19yZXF1
aXJlX18oMTApO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJl
X18oNCk7XG52YXIgUmVhY3RET01Db250YWluZXJJbmZvID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
ODgpO1xudmFyIFJlYWN0RE9NRmVhdHVyZUZsYWdzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODkp
O1xudmFyIFJlYWN0RmVhdHVyZUZsYWdzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Myk7XG52YXIg
UmVhY3RJbnN0YW5jZU1hcCA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpO1xudmFyIFJlYWN0SW5z
dHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcbnZhciBSZWFjdE1hcmt1cENo
ZWNrc3VtID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTApO1xudmFyIFJlYWN0UmVjb25jaWxlciA9
IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xudmFyIFJlYWN0VXBkYXRlUXVldWUgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDQ1KTtcbnZhciBSZWFjdFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDgpO1xuXG52YXIgZW1wdHlPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcbnZhciBp
bnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Myk7XG52YXIg
aW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbnZhciBzZXRJbm5lckhUTUwgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDI2KTtcbnZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9
IF9fd2VicGFja19yZXF1aXJlX18oNDMpO1xudmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEpO1xuXG52YXIgQVRUUl9OQU1FID0gRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05BTUU7
XG52YXIgUk9PVF9BVFRSX05BTUUgPSBET01Qcm9wZXJ0eS5ST09UX0FUVFJJQlVURV9OQU1FO1xu
XG52YXIgRUxFTUVOVF9OT0RFX1RZUEUgPSAxO1xudmFyIERPQ19OT0RFX1RZUEUgPSA5O1xudmFy
IERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSA9IDExO1xuXG52YXIgaW5zdGFuY2VzQnlSZWFj
dFJvb3RJRCA9IHt9O1xuXG4vKipcbiAqIEZpbmRzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hh
cmFjdGVyXG4gKiB0aGF0J3Mgbm90IGNvbW1vbiBiZXR3ZWVuIHRoZSB0d28gZ2l2ZW4gc3RyaW5n
cy5cbiAqXG4gKiBAcmV0dXJuIHtudW1iZXJ9IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHdo
ZXJlIHRoZSBzdHJpbmdzIGRpdmVyZ2VcbiAqL1xuZnVuY3Rpb24gZmlyc3REaWZmZXJlbmNlSW5k
ZXgoc3RyaW5nMSwgc3RyaW5nMikge1xuICB2YXIgbWluTGVuID0gTWF0aC5taW4oc3RyaW5nMS5s
ZW5ndGgsIHN0cmluZzIubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaW5MZW47IGkr
Kykge1xuICAgIGlmIChzdHJpbmcxLmNoYXJBdChpKSAhPT0gc3RyaW5nMi5jaGFyQXQoaSkpIHtc
biAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3RyaW5nMS5sZW5ndGggPT09
IHN0cmluZzIubGVuZ3RoID8gLTEgOiBtaW5MZW47XG59XG5cbi8qKlxuICogQHBhcmFtIHtET01F
bGVtZW50fERPTURvY3VtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdGhhdCBtYXkgY29udGFp
blxuICogYSBSZWFjdCBjb21wb25lbnRcbiAqIEByZXR1cm4gez8qfSBET00gZWxlbWVudCB0aGF0
IG1heSBoYXZlIHRoZSByZWFjdFJvb3QgSUQsIG9yIG51bGwuXG4gKi9cbmZ1bmN0aW9uIGdldFJl
YWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpIHtcbiAgaWYgKCFjb250YWluZXIp
IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09
IERPQ19OT0RFX1RZUEUpIHtcbiAgICByZXR1cm4gY29udGFpbmVyLmRvY3VtZW50RWxlbWVudDtc
biAgfSBlbHNlIHtcbiAgICByZXR1cm4gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gIH1cbn1cblxu
ZnVuY3Rpb24gaW50ZXJuYWxHZXRJRChub2RlKSB7XG4gIC8vIElmIG5vZGUgaXMgc29tZXRoaW5n
IGxpa2UgYSB3aW5kb3csIGRvY3VtZW50LCBvciB0ZXh0IG5vZGUsIG5vbmUgb2ZcbiAgLy8gd2hp
Y2ggc3VwcG9ydCBhdHRyaWJ1dGVzIG9yIGEgLmdldEF0dHJpYnV0ZSBtZXRob2QsIGdyYWNlZnVs
bHkgcmV0dXJuXG4gIC8vIHRoZSBlbXB0eSBzdHJpbmcsIGFzIGlmIHRoZSBhdHRyaWJ1dGUgd2Vy
ZSBtaXNzaW5nLlxuICByZXR1cm4gbm9kZS5nZXRBdHRyaWJ1dGUgJiYgbm9kZS5nZXRBdHRyaWJ1
dGUoQVRUUl9OQU1FKSB8fCAnJztcbn1cblxuLyoqXG4gKiBNb3VudHMgdGhpcyBjb21wb25lbnQg
YW5kIGluc2VydHMgaXQgaW50byB0aGUgRE9NLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25l
bnR9IGNvbXBvbmVudEluc3RhbmNlIFRoZSBpbnN0YW5jZSB0byBtb3VudC5cbiAqIEBwYXJhbSB7
RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIG1vdW50IGludG8uXG4gKiBAcGFy
YW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gKiBAcGFyYW0ge2Jv
b2xlYW59IHNob3VsZFJldXNlTWFya3VwIElmIHRydWUsIGRvIG5vdCBpbnNlcnQgbWFya3VwXG4g
Ki9cbmZ1bmN0aW9uIG1vdW50Q29tcG9uZW50SW50b05vZGUod3JhcHBlckluc3RhbmNlLCBjb250
YWluZXIsIHRyYW5zYWN0aW9uLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCkge1xuICB2YXIg
bWFya2VyTmFtZTtcbiAgaWYgKFJlYWN0RmVhdHVyZUZsYWdzLmxvZ1RvcExldmVsUmVuZGVycykg
e1xuICAgIHZhciB3cmFwcGVkRWxlbWVudCA9IHdyYXBwZXJJbnN0YW5jZS5fY3VycmVudEVsZW1l
bnQucHJvcHMuY2hpbGQ7XG4gICAgdmFyIHR5cGUgPSB3cmFwcGVkRWxlbWVudC50eXBlO1xuICAg
IG1hcmtlck5hbWUgPSAnUmVhY3QgbW91bnQ6ICcgKyAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcn
ID8gdHlwZSA6IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lKTtcbiAgICBjb25zb2xlLnRp
bWUobWFya2VyTmFtZSk7XG4gIH1cblxuICB2YXIgbWFya3VwID0gUmVhY3RSZWNvbmNpbGVyLm1v
dW50Q29tcG9uZW50KHdyYXBwZXJJbnN0YW5jZSwgdHJhbnNhY3Rpb24sIG51bGwsIFJlYWN0RE9N
Q29udGFpbmVySW5mbyh3cmFwcGVySW5zdGFuY2UsIGNvbnRhaW5lciksIGNvbnRleHQsIDAgLyog
cGFyZW50RGVidWdJRCAqL1xuICApO1xuXG4gIGlmIChtYXJrZXJOYW1lKSB7XG4gICAgY29uc29s
ZS50aW1lRW5kKG1hcmtlck5hbWUpO1xuICB9XG5cbiAgd3JhcHBlckluc3RhbmNlLl9yZW5kZXJl
ZENvbXBvbmVudC5fdG9wTGV2ZWxXcmFwcGVyID0gd3JhcHBlckluc3RhbmNlO1xuICBSZWFjdE1v
dW50Ll9tb3VudEltYWdlSW50b05vZGUobWFya3VwLCBjb250YWluZXIsIHdyYXBwZXJJbnN0YW5j
ZSwgc2hvdWxkUmV1c2VNYXJrdXAsIHRyYW5zYWN0aW9uKTtcbn1cblxuLyoqXG4gKiBCYXRjaGVk
IG1vdW50LlxuICpcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudEluc3RhbmNl
IFRoZSBpbnN0YW5jZSB0byBtb3VudC5cbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVy
IERPTSBlbGVtZW50IHRvIG1vdW50IGludG8uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFJl
dXNlTWFya3VwIElmIHRydWUsIGRvIG5vdCBpbnNlcnQgbWFya3VwXG4gKi9cbmZ1bmN0aW9uIGJh
dGNoZWRNb3VudENvbXBvbmVudEludG9Ob2RlKGNvbXBvbmVudEluc3RhbmNlLCBjb250YWluZXIs
IHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7XG4gIHZhciB0cmFuc2FjdGlvbiA9IFJlYWN0
VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZChcbiAgLyogdXNlQ3Jl
YXRlRWxlbWVudCAqL1xuICAhc2hvdWxkUmV1c2VNYXJrdXAgJiYgUmVhY3RET01GZWF0dXJlRmxh
Z3MudXNlQ3JlYXRlRWxlbWVudCk7XG4gIHRyYW5zYWN0aW9uLnBlcmZvcm0obW91bnRDb21wb25l
bnRJbnRvTm9kZSwgbnVsbCwgY29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lciwgdHJhbnNhY3Rp
b24sIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KTtcbiAgUmVhY3RVcGRhdGVzLlJlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0cmFuc2FjdGlvbik7XG59XG5cbi8qKlxuICogVW5t
b3VudHMgYSBjb21wb25lbnQgYW5kIHJlbW92ZXMgaXQgZnJvbSB0aGUgRE9NLlxuICpcbiAqIEBw
YXJhbSB7UmVhY3RDb21wb25lbnR9IGluc3RhbmNlIFJlYWN0IGNvbXBvbmVudCBpbnN0YW5jZS5c
biAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHVubW91bnQg
ZnJvbS5cbiAqIEBmaW5hbFxuICogQGludGVybmFsXG4gKiBAc2VlIHtSZWFjdE1vdW50LnVubW91
bnRDb21wb25lbnRBdE5vZGV9XG4gKi9cbmZ1bmN0aW9uIHVubW91bnRDb21wb25lbnRGcm9tTm9k
ZShpbnN0YW5jZSwgY29udGFpbmVyLCBzYWZlbHkpIHtcbiAgaWYgKGZhbHNlKSB7XG4gICAgUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5GbHVzaCgpO1xuICB9XG4gIFJlYWN0
UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KGluc3RhbmNlLCBzYWZlbHkpO1xuICBpZiAoZmFs
c2UpIHtcbiAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRGbHVzaCgpO1xu
ICB9XG5cbiAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSkge1xuICAg
IGNvbnRhaW5lciA9IGNvbnRhaW5lci5kb2N1bWVudEVsZW1lbnQ7XG4gIH1cblxuICAvLyBodHRw
Oi8vanNwZXJmLmNvbS9lbXB0eWluZy1hLW5vZGVcbiAgd2hpbGUgKGNvbnRhaW5lci5sYXN0Q2hp
bGQpIHtcbiAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RDaGlsZCk7XG4g
IH1cbn1cblxuLyoqXG4gKiBUcnVlIGlmIHRoZSBzdXBwbGllZCBET00gbm9kZSBoYXMgYSBkaXJl
Y3QgUmVhY3QtcmVuZGVyZWQgY2hpbGQgdGhhdCBpc1xuICogbm90IGEgUmVhY3Qgcm9vdCBlbGVt
ZW50LiBVc2VmdWwgZm9yIHdhcm5pbmcgaW4gYHJlbmRlcmAsXG4gKiBgdW5tb3VudENvbXBvbmVu
dEF0Tm9kZWAsIGV0Yy5cbiAqXG4gKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5k
aWRhdGUgRE9NIG5vZGUuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00gZWxl
bWVudCBjb250YWlucyBhIGRpcmVjdCBjaGlsZCB0aGF0IHdhc1xuICogcmVuZGVyZWQgYnkgUmVh
Y3QgYnV0IGlzIG5vdCBhIHJvb3QgZWxlbWVudC5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlv
biBoYXNOb25Sb290UmVhY3RDaGlsZChjb250YWluZXIpIHtcbiAgdmFyIHJvb3RFbCA9IGdldFJl
YWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICBpZiAocm9vdEVsKSB7XG4g
ICAgdmFyIGluc3QgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShy
b290RWwpO1xuICAgIHJldHVybiAhIShpbnN0ICYmIGluc3QuX2hvc3RQYXJlbnQpO1xuICB9XG59
XG5cbi8qKlxuICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaXMgYSBSZWFjdCBET00g
ZWxlbWVudCBhbmRcbiAqIGl0IGhhcyBiZWVuIHJlbmRlcmVkIGJ5IGFub3RoZXIgY29weSBvZiBS
ZWFjdC5cbiAqXG4gKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9N
IG5vZGUuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00gaGFzIGJlZW4gcmVu
ZGVyZWQgYnkgYW5vdGhlciBjb3B5IG9mIFJlYWN0XG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rp
b24gbm9kZUlzUmVuZGVyZWRCeU90aGVySW5zdGFuY2UoY29udGFpbmVyKSB7XG4gIHZhciByb290
RWwgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgcmV0dXJu
ICEhKHJvb3RFbCAmJiBpc1JlYWN0Tm9kZShyb290RWwpICYmICFSZWFjdERPTUNvbXBvbmVudFRy
ZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShyb290RWwpKTtcbn1cblxuLyoqXG4gKiBUcnVlIGlmIHRo
ZSBzdXBwbGllZCBET00gbm9kZSBpcyBhIHZhbGlkIG5vZGUgZWxlbWVudC5cbiAqXG4gKiBAcGFy
YW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9NIG5vZGUuXG4gKiBAcmV0dXJu
IHtib29sZWFufSBUcnVlIGlmIHRoZSBET00gaXMgYSB2YWxpZCBET00gbm9kZS5cbiAqIEBpbnRl
cm5hbFxuICovXG5mdW5jdGlvbiBpc1ZhbGlkQ29udGFpbmVyKG5vZGUpIHtcbiAgcmV0dXJuICEh
KG5vZGUgJiYgKG5vZGUubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFIHx8IG5vZGUubm9k
ZVR5cGUgPT09IERPQ19OT0RFX1RZUEUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gRE9DVU1FTlRfRlJB
R01FTlRfTk9ERV9UWVBFKSk7XG59XG5cbi8qKlxuICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9N
IG5vZGUgaXMgYSB2YWxpZCBSZWFjdCBub2RlIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHs/RE9N
RWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLlxuICogQHJldHVybiB7Ym9vbGVh
bn0gVHJ1ZSBpZiB0aGUgRE9NIGlzIGEgdmFsaWQgUmVhY3QgRE9NIG5vZGUuXG4gKiBAaW50ZXJu
YWxcbiAqL1xuZnVuY3Rpb24gaXNSZWFjdE5vZGUobm9kZSkge1xuICByZXR1cm4gaXNWYWxpZENv
bnRhaW5lcihub2RlKSAmJiAobm9kZS5oYXNBdHRyaWJ1dGUoUk9PVF9BVFRSX05BTUUpIHx8IG5v
ZGUuaGFzQXR0cmlidXRlKEFUVFJfTkFNRSkpO1xufVxuXG5mdW5jdGlvbiBnZXRIb3N0Um9vdElu
c3RhbmNlSW5Db250YWluZXIoY29udGFpbmVyKSB7XG4gIHZhciByb290RWwgPSBnZXRSZWFjdFJv
b3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgdmFyIHByZXZIb3N0SW5zdGFuY2Ug
PSByb290RWwgJiYgUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUocm9v
dEVsKTtcbiAgcmV0dXJuIHByZXZIb3N0SW5zdGFuY2UgJiYgIXByZXZIb3N0SW5zdGFuY2UuX2hv
c3RQYXJlbnQgPyBwcmV2SG9zdEluc3RhbmNlIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0VG9w
TGV2ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFpbmVyKSB7XG4gIHZhciByb290ID0gZ2V0SG9z
dFJvb3RJbnN0YW5jZUluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gIHJldHVybiByb290ID8gcm9v
dC5faG9zdENvbnRhaW5lckluZm8uX3RvcExldmVsV3JhcHBlciA6IG51bGw7XG59XG5cbi8qKlxu
ICogVGVtcG9yYXJ5ICg/KSBoYWNrIHNvIHRoYXQgd2UgY2FuIHN0b3JlIGFsbCB0b3AtbGV2ZWwg
cGVuZGluZyB1cGRhdGVzIG9uXG4gKiBjb21wb3NpdGVzIGluc3RlYWQgb2YgaGF2aW5nIHRvIHdv
cnJ5IGFib3V0IGRpZmZlcmVudCB0eXBlcyBvZiBjb21wb25lbnRzXG4gKiBoZXJlLlxuICovXG52
YXIgdG9wTGV2ZWxSb290Q291bnRlciA9IDE7XG52YXIgVG9wTGV2ZWxXcmFwcGVyID0gZnVuY3Rp
b24gKCkge1xuICB0aGlzLnJvb3RJRCA9IHRvcExldmVsUm9vdENvdW50ZXIrKztcbn07XG5Ub3BM
ZXZlbFdyYXBwZXIucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTtcbmlmIChmYWxzZSkg
e1xuICBUb3BMZXZlbFdyYXBwZXIuZGlzcGxheU5hbWUgPSAnVG9wTGV2ZWxXcmFwcGVyJztcbn1c
blRvcExldmVsV3JhcHBlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICByZXR1
cm4gdGhpcy5wcm9wcy5jaGlsZDtcbn07XG5Ub3BMZXZlbFdyYXBwZXIuaXNSZWFjdFRvcExldmVs
V3JhcHBlciA9IHRydWU7XG5cbi8qKlxuICogTW91bnRpbmcgaXMgdGhlIHByb2Nlc3Mgb2YgaW5p
dGlhbGl6aW5nIGEgUmVhY3QgY29tcG9uZW50IGJ5IGNyZWF0aW5nIGl0c1xuICogcmVwcmVzZW50
YXRpdmUgRE9NIGVsZW1lbnRzIGFuZCBpbnNlcnRpbmcgdGhlbSBpbnRvIGEgc3VwcGxpZWQgYGNv
bnRhaW5lcmAuXG4gKiBBbnkgcHJpb3IgY29udGVudCBpbnNpZGUgYGNvbnRhaW5lcmAgaXMgZGVz
dHJveWVkIGluIHRoZSBwcm9jZXNzLlxuICpcbiAqICAgUmVhY3RNb3VudC5yZW5kZXIoXG4gKiAg
ICAgY29tcG9uZW50LFxuICogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXIn
KVxuICogICApO1xuICpcbiAqICAgPGRpdiBpZD1cImNvbnRhaW5lclwiPiAgICAgICAgICAgICAg
ICAgICA8LS0gU3VwcGxpZWQgYGNvbnRhaW5lcmAuXG4gKiAgICAgPGRpdiBkYXRhLXJlYWN0aWQ9
XCIuM1wiPiAgICAgICAgICAgICAgPC0tIFJlbmRlcmVkIHJlYWN0Um9vdCBvZiBSZWFjdFxuICog
ICAgICAgLy8gLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Llxu
ICogICAgIDwvZGl2PlxuICogICA8L2Rpdj5cbiAqXG4gKiBJbnNpZGUgb2YgYGNvbnRhaW5lcmAs
IHRoZSBmaXJzdCBlbGVtZW50IHJlbmRlcmVkIGlzIHRoZSBcInJlYWN0Um9vdFwiLlxuICovXG52
YXIgUmVhY3RNb3VudCA9IHtcbiAgVG9wTGV2ZWxXcmFwcGVyOiBUb3BMZXZlbFdyYXBwZXIsXG5c
biAgLyoqXG4gICAqIFVzZWQgYnkgZGV2dG9vbHMuIFRoZSBrZXlzIGFyZSBub3QgaW1wb3J0YW50
LlxuICAgKi9cbiAgX2luc3RhbmNlc0J5UmVhY3RSb290SUQ6IGluc3RhbmNlc0J5UmVhY3RSb290
SUQsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBob29rIHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVu
ZGVyaW5nIFJlYWN0IGNvbXBvbmVudHMgd2hpbGVcbiAgICogZW5zdXJpbmcgdGhhdCB0aGUgYXBw
YXJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9mIGl0cyBgY29udGFpbmVyYCBkb2VzIG5vdFxuICAgKiBj
aGFuZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIFRoZSBgY29u
dGFpbmVyYCBiZWluZyByZW5kZXJlZCBpbnRvLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSByZW5k
ZXJDYWxsYmFjayBUaGlzIG11c3QgYmUgY2FsbGVkIG9uY2UgdG8gZG8gdGhlIHJlbmRlci5cbiAg
ICovXG4gIHNjcm9sbE1vbml0b3I6IGZ1bmN0aW9uIChjb250YWluZXIsIHJlbmRlckNhbGxiYWNr
KSB7XG4gICAgcmVuZGVyQ2FsbGJhY2soKTtcbiAgfSxcblxuICAvKipcbiAgICogVGFrZSBhIGNv
bXBvbmVudCB0aGF0J3MgYWxyZWFkeSBtb3VudGVkIGludG8gdGhlIERPTSBhbmQgcmVwbGFjZSBp
dHMgcHJvcHNcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gcHJldkNvbXBvbmVudCBjb21w
b25lbnQgaW5zdGFuY2UgYWxyZWFkeSBpbiB0aGUgRE9NXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVt
ZW50fSBuZXh0RWxlbWVudCBjb21wb25lbnQgaW5zdGFuY2UgdG8gcmVuZGVyXG4gICAqIEBwYXJh
bSB7RE9NRWxlbWVudH0gY29udGFpbmVyIGNvbnRhaW5lciB0byByZW5kZXIgaW50b1xuICAgKiBA
cGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgZnVuY3Rpb24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRp
b25cbiAgICovXG4gIF91cGRhdGVSb290Q29tcG9uZW50OiBmdW5jdGlvbiAocHJldkNvbXBvbmVu
dCwgbmV4dEVsZW1lbnQsIG5leHRDb250ZXh0LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4gICAg
UmVhY3RNb3VudC5zY3JvbGxNb25pdG9yKGNvbnRhaW5lciwgZnVuY3Rpb24gKCkge1xuICAgICAg
UmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlRWxlbWVudEludGVybmFsKHByZXZDb21wb25lbnQsIG5l
eHRFbGVtZW50LCBuZXh0Q29udGV4dCk7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAg
UmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbChwcmV2Q29tcG9uZW50LCBj
YWxsYmFjayk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJldkNvbXBvbmVudDtc
biAgfSxcblxuICAvKipcbiAgICogUmVuZGVyIGEgbmV3IGNvbXBvbmVudCBpbnRvIHRoZSBET00u
IEhvb2tlZCBieSBob29rcyFcbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRF
bGVtZW50IGVsZW1lbnQgdG8gcmVuZGVyXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFp
bmVyIGNvbnRhaW5lciB0byByZW5kZXIgaW50b1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3Vs
ZFJldXNlTWFya3VwIGlmIHdlIHNob3VsZCBza2lwIHRoZSBtYXJrdXAgaW5zZXJ0aW9uXG4gICAq
IEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBuZXh0Q29tcG9uZW50XG4gICAqL1xuICBfcmVuZGVy
TmV3Um9vdENvbXBvbmVudDogZnVuY3Rpb24gKG5leHRFbGVtZW50LCBjb250YWluZXIsIHNob3Vs
ZFJldXNlTWFya3VwLCBjb250ZXh0KSB7XG4gICAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29k
ZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG4gICAgLy8gX3JlbmRlclZhbGlk
YXRlZENvbXBvbmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7
XG4gICAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdzIHRoZSBjYXNlLlxuICAgICBmYWxzZSA/IHdhcm5p
bmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAnX3JlbmRlck5ld1Jvb3RDb21w
b25lbnQoKTogUmVuZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiAnICsgJ29m
IHByb3BzIGFuZCBzdGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQgY29tcG9uZW50IHVwZGF0ZXMgZnJv
bSAnICsgJ3JlbmRlciBpcyBub3QgYWxsb3dlZC4gSWYgbmVjZXNzYXJ5LCB0cmlnZ2VyIG5lc3Rl
ZCB1cGRhdGVzIGluICcgKyAnY29tcG9uZW50RGlkVXBkYXRlLiBDaGVjayB0aGUgcmVuZGVyIG1l
dGhvZCBvZiAlcy4nLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ICYmIFJlYWN0Q3VycmVudE93
bmVyLmN1cnJlbnQuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9p
ZCAwO1xuXG4gICAgIWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/ICBmYWxzZSA/IGludmFy
aWFudChmYWxzZSwgJ19yZWdpc3RlckNvbXBvbmVudCguLi4pOiBUYXJnZXQgY29udGFpbmVyIGlz
IG5vdCBhIERPTSBlbGVtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzM3JykgOiB2b2lkIDA7XG5c
biAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5n
KCk7XG4gICAgdmFyIGNvbXBvbmVudEluc3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVu
dChuZXh0RWxlbWVudCwgZmFsc2UpO1xuXG4gICAgLy8gVGhlIGluaXRpYWwgcmVuZGVyIGlzIHN5
bmNocm9ub3VzIGJ1dCBhbnkgdXBkYXRlcyB0aGF0IGhhcHBlbiBkdXJpbmdcbiAgICAvLyByZW5k
ZXJpbmcsIGluIGNvbXBvbmVudFdpbGxNb3VudCBvciBjb21wb25lbnREaWRNb3VudCwgd2lsbCBi
ZSBiYXRjaGVkXG4gICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGJhdGNoaW5nIHN0cmF0
ZWd5LlxuXG4gICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKGJhdGNoZWRNb3VudENvbXBv
bmVudEludG9Ob2RlLCBjb21wb25lbnRJbnN0YW5jZSwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1h
cmt1cCwgY29udGV4dCk7XG5cbiAgICB2YXIgd3JhcHBlcklEID0gY29tcG9uZW50SW5zdGFuY2Uu
X2luc3RhbmNlLnJvb3RJRDtcbiAgICBpbnN0YW5jZXNCeVJlYWN0Um9vdElEW3dyYXBwZXJJRF0g
PSBjb21wb25lbnRJbnN0YW5jZTtcblxuICAgIHJldHVybiBjb21wb25lbnRJbnN0YW5jZTtcbiAg
fSxcblxuICAvKipcbiAgICogUmVuZGVycyBhIFJlYWN0IGNvbXBvbmVudCBpbnRvIHRoZSBET00g
aW4gdGhlIHN1cHBsaWVkIGBjb250YWluZXJgLlxuICAgKlxuICAgKiBJZiB0aGUgUmVhY3QgY29t
cG9uZW50IHdhcyBwcmV2aW91c2x5IHJlbmRlcmVkIGludG8gYGNvbnRhaW5lcmAsIHRoaXMgd2ls
bFxuICAgKiBwZXJmb3JtIGFuIHVwZGF0ZSBvbiBpdCBhbmQgb25seSBtdXRhdGUgdGhlIERPTSBh
cyBuZWNlc3NhcnkgdG8gcmVmbGVjdCB0aGVcbiAgICogbGF0ZXN0IFJlYWN0IGNvbXBvbmVudC5c
biAgICpcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gcGFyZW50Q29tcG9uZW50IFRoZSBj
b25jZXB0dWFsIHBhcmVudCBvZiB0aGlzIHJlbmRlciB0cmVlLlxuICAgKiBAcGFyYW0ge1JlYWN0
RWxlbWVudH0gbmV4dEVsZW1lbnQgQ29tcG9uZW50IGVsZW1lbnQgdG8gcmVuZGVyLlxuICAgKiBA
cGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byByZW5kZXIgaW50by5c
biAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIGZ1bmN0aW9uIHRyaWdnZXJlZCBvbiBj
b21wbGV0aW9uXG4gICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBDb21wb25lbnQgaW5zdGFu
Y2UgcmVuZGVyZWQgaW4gYGNvbnRhaW5lcmAuXG4gICAqL1xuICByZW5kZXJTdWJ0cmVlSW50b0Nv
bnRhaW5lcjogZnVuY3Rpb24gKHBhcmVudENvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5l
ciwgY2FsbGJhY2spIHtcbiAgICAhKHBhcmVudENvbXBvbmVudCAhPSBudWxsICYmIFJlYWN0SW5z
dGFuY2VNYXAuaGFzKHBhcmVudENvbXBvbmVudCkpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNl
LCAncGFyZW50Q29tcG9uZW50IG11c3QgYmUgYSB2YWxpZCBSZWFjdCBDb21wb25lbnQnKSA6IF9w
cm9kSW52YXJpYW50KCczOCcpIDogdm9pZCAwO1xuICAgIHJldHVybiBSZWFjdE1vdW50Ll9yZW5k
ZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihwYXJlbnRDb21wb25lbnQsIG5leHRFbGVtZW50LCBjb250
YWluZXIsIGNhbGxiYWNrKTtcbiAgfSxcblxuICBfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6
IGZ1bmN0aW9uIChwYXJlbnRDb21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxi
YWNrKSB7XG4gICAgUmVhY3RVcGRhdGVRdWV1ZS52YWxpZGF0ZUNhbGxiYWNrKGNhbGxiYWNrLCAn
UmVhY3RET00ucmVuZGVyJyk7XG4gICAgIVJlYWN0LmlzVmFsaWRFbGVtZW50KG5leHRFbGVtZW50
KSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0RE9NLnJlbmRlcigpOiBJbnZhbGlk
IGNvbXBvbmVudCBlbGVtZW50LiVzJywgdHlwZW9mIG5leHRFbGVtZW50ID09PSAnc3RyaW5nJyA/
IFwiIEluc3RlYWQgb2YgcGFzc2luZyBhIHN0cmluZyBsaWtlICdkaXYnLCBwYXNzIFwiICsgXCJS
ZWFjdC5jcmVhdGVFbGVtZW50KCdkaXYnKSBvciA8ZGl2IC8+LlwiIDogdHlwZW9mIG5leHRFbGVt
ZW50ID09PSAnZnVuY3Rpb24nID8gJyBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBjbGFzcyBsaWtlIEZv
bywgcGFzcyAnICsgJ1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9vKSBvciA8Rm9vIC8+LicgOiAvLyBD
aGVjayBpZiBpdCBxdWFja3MgbGlrZSBhbiBlbGVtZW50XG4gICAgbmV4dEVsZW1lbnQgIT0gbnVs
bCAmJiBuZXh0RWxlbWVudC5wcm9wcyAhPT0gdW5kZWZpbmVkID8gJyBUaGlzIG1heSBiZSBjYXVz
ZWQgYnkgdW5pbnRlbnRpb25hbGx5IGxvYWRpbmcgdHdvIGluZGVwZW5kZW50ICcgKyAnY29waWVz
IG9mIFJlYWN0LicgOiAnJykgOiBfcHJvZEludmFyaWFudCgnMzknLCB0eXBlb2YgbmV4dEVsZW1l
bnQgPT09ICdzdHJpbmcnID8gXCIgSW5zdGVhZCBvZiBwYXNzaW5nIGEgc3RyaW5nIGxpa2UgJ2Rp
dicsIHBhc3MgXCIgKyBcIlJlYWN0LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIG9yIDxkaXYgLz4uXCIg
OiB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdmdW5jdGlvbicgPyAnIEluc3RlYWQgb2YgcGFzc2lu
ZyBhIGNsYXNzIGxpa2UgRm9vLCBwYXNzICcgKyAnUmVhY3QuY3JlYXRlRWxlbWVudChGb28pIG9y
IDxGb28gLz4uJyA6IG5leHRFbGVtZW50ICE9IG51bGwgJiYgbmV4dEVsZW1lbnQucHJvcHMgIT09
IHVuZGVmaW5lZCA/ICcgVGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHVuaW50ZW50aW9uYWxseSBsb2Fk
aW5nIHR3byBpbmRlcGVuZGVudCAnICsgJ2NvcGllcyBvZiBSZWFjdC4nIDogJycpIDogdm9pZCAw
O1xuXG4gICAgIGZhbHNlID8gd2FybmluZyghY29udGFpbmVyIHx8ICFjb250YWluZXIudGFnTmFt
ZSB8fCBjb250YWluZXIudGFnTmFtZS50b1VwcGVyQ2FzZSgpICE9PSAnQk9EWScsICdyZW5kZXIo
KTogUmVuZGVyaW5nIGNvbXBvbmVudHMgZGlyZWN0bHkgaW50byBkb2N1bWVudC5ib2R5IGlzICcg
KyAnZGlzY291cmFnZWQsIHNpbmNlIGl0cyBjaGlsZHJlbiBhcmUgb2Z0ZW4gbWFuaXB1bGF0ZWQg
YnkgdGhpcmQtcGFydHkgJyArICdzY3JpcHRzIGFuZCBicm93c2VyIGV4dGVuc2lvbnMuIFRoaXMg
bWF5IGxlYWQgdG8gc3VidGxlICcgKyAncmVjb25jaWxpYXRpb24gaXNzdWVzLiBUcnkgcmVuZGVy
aW5nIGludG8gYSBjb250YWluZXIgZWxlbWVudCBjcmVhdGVkICcgKyAnZm9yIHlvdXIgYXBwLicp
IDogdm9pZCAwO1xuXG4gICAgdmFyIG5leHRXcmFwcGVkRWxlbWVudCA9IFJlYWN0LmNyZWF0ZUVs
ZW1lbnQoVG9wTGV2ZWxXcmFwcGVyLCB7XG4gICAgICBjaGlsZDogbmV4dEVsZW1lbnRcbiAgICB9
KTtcblxuICAgIHZhciBuZXh0Q29udGV4dDtcbiAgICBpZiAocGFyZW50Q29tcG9uZW50KSB7XG4g
ICAgICB2YXIgcGFyZW50SW5zdCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHBhcmVudENvbXBvbmVu
dCk7XG4gICAgICBuZXh0Q29udGV4dCA9IHBhcmVudEluc3QuX3Byb2Nlc3NDaGlsZENvbnRleHQo
cGFyZW50SW5zdC5fY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHRDb250ZXh0ID0g
ZW1wdHlPYmplY3Q7XG4gICAgfVxuXG4gICAgdmFyIHByZXZDb21wb25lbnQgPSBnZXRUb3BMZXZl
bFdyYXBwZXJJbkNvbnRhaW5lcihjb250YWluZXIpO1xuXG4gICAgaWYgKHByZXZDb21wb25lbnQp
IHtcbiAgICAgIHZhciBwcmV2V3JhcHBlZEVsZW1lbnQgPSBwcmV2Q29tcG9uZW50Ll9jdXJyZW50
RWxlbWVudDtcbiAgICAgIHZhciBwcmV2RWxlbWVudCA9IHByZXZXcmFwcGVkRWxlbWVudC5wcm9w
cy5jaGlsZDtcbiAgICAgIGlmIChzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudChwcmV2RWxlbWVu
dCwgbmV4dEVsZW1lbnQpKSB7XG4gICAgICAgIHZhciBwdWJsaWNJbnN0ID0gcHJldkNvbXBvbmVu
dC5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtcbiAgICAgICAgdmFyIHVw
ZGF0ZWRDYWxsYmFjayA9IGNhbGxiYWNrICYmIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjYWxs
YmFjay5jYWxsKHB1YmxpY0luc3QpO1xuICAgICAgICB9O1xuICAgICAgICBSZWFjdE1vdW50Ll91
cGRhdGVSb290Q29tcG9uZW50KHByZXZDb21wb25lbnQsIG5leHRXcmFwcGVkRWxlbWVudCwgbmV4
dENvbnRleHQsIGNvbnRhaW5lciwgdXBkYXRlZENhbGxiYWNrKTtcbiAgICAgICAgcmV0dXJuIHB1
YmxpY0luc3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBSZWFjdE1vdW50LnVubW91bnRDb21w
b25lbnRBdE5vZGUoY29udGFpbmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmVhY3RS
b290RWxlbWVudCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xu
ICAgIHZhciBjb250YWluZXJIYXNSZWFjdE1hcmt1cCA9IHJlYWN0Um9vdEVsZW1lbnQgJiYgISFp
bnRlcm5hbEdldElEKHJlYWN0Um9vdEVsZW1lbnQpO1xuICAgIHZhciBjb250YWluZXJIYXNOb25S
b290UmVhY3RDaGlsZCA9IGhhc05vblJvb3RSZWFjdENoaWxkKGNvbnRhaW5lcik7XG5cbiAgICBp
ZiAoZmFsc2UpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKCFjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCwgJ3JlbmRlciguLi4pOiBS
ZXBsYWNpbmcgUmVhY3QtcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIG5ldyByb290ICcgKyAnY29t
cG9uZW50LiBJZiB5b3UgaW50ZW5kZWQgdG8gdXBkYXRlIHRoZSBjaGlsZHJlbiBvZiB0aGlzIG5v
ZGUsICcgKyAneW91IHNob3VsZCBpbnN0ZWFkIGhhdmUgdGhlIGV4aXN0aW5nIGNoaWxkcmVuIHVw
ZGF0ZSB0aGVpciBzdGF0ZSAnICsgJ2FuZCByZW5kZXIgdGhlIG5ldyBjb21wb25lbnRzIGluc3Rl
YWQgb2YgY2FsbGluZyBSZWFjdERPTS5yZW5kZXIuJykgOiB2b2lkIDA7XG5cbiAgICAgIGlmICgh
Y29udGFpbmVySGFzUmVhY3RNYXJrdXAgfHwgcmVhY3RSb290RWxlbWVudC5uZXh0U2libGluZykg
e1xuICAgICAgICB2YXIgcm9vdEVsZW1lbnRTaWJsaW5nID0gcmVhY3RSb290RWxlbWVudDtcbiAg
ICAgICAgd2hpbGUgKHJvb3RFbGVtZW50U2libGluZykge1xuICAgICAgICAgIGlmIChpbnRlcm5h
bEdldElEKHJvb3RFbGVtZW50U2libGluZykpIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAncmVuZGVyKCk6IFRhcmdl
dCBub2RlIGhhcyBtYXJrdXAgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCB0aGVyZSAnICsgJ2FyZSB1
bnJlbGF0ZWQgbm9kZXMgYXMgd2VsbC4gVGhpcyBpcyBtb3N0IGNvbW1vbmx5IGNhdXNlZCBieSAn
ICsgJ3doaXRlLXNwYWNlIGluc2VydGVkIGFyb3VuZCBzZXJ2ZXItcmVuZGVyZWQgbWFya3VwLicp
IDogdm9pZCAwO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJv
b3RFbGVtZW50U2libGluZyA9IHJvb3RFbGVtZW50U2libGluZy5uZXh0U2libGluZztcbiAgICAg
ICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzaG91bGRSZXVzZU1hcmt1cCA9IGNvbnRh
aW5lckhhc1JlYWN0TWFya3VwICYmICFwcmV2Q29tcG9uZW50ICYmICFjb250YWluZXJIYXNOb25S
b290UmVhY3RDaGlsZDtcbiAgICB2YXIgY29tcG9uZW50ID0gUmVhY3RNb3VudC5fcmVuZGVyTmV3
Um9vdENvbXBvbmVudChuZXh0V3JhcHBlZEVsZW1lbnQsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VN
YXJrdXAsIG5leHRDb250ZXh0KS5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2Uo
KTtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwoY29tcG9uZW50KTtc
biAgICB9XG4gICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgfSxcblxuICAvKipcbiAgICogUmVuZGVy
cyBhIFJlYWN0IGNvbXBvbmVudCBpbnRvIHRoZSBET00gaW4gdGhlIHN1cHBsaWVkIGBjb250YWlu
ZXJgLlxuICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3At
bGV2ZWwtYXBpLmh0bWwjcmVhY3Rkb20ucmVuZGVyXG4gICAqXG4gICAqIElmIHRoZSBSZWFjdCBj
b21wb25lbnQgd2FzIHByZXZpb3VzbHkgcmVuZGVyZWQgaW50byBgY29udGFpbmVyYCwgdGhpcyB3
aWxsXG4gICAqIHBlcmZvcm0gYW4gdXBkYXRlIG9uIGl0IGFuZCBvbmx5IG11dGF0ZSB0aGUgRE9N
IGFzIG5lY2Vzc2FyeSB0byByZWZsZWN0IHRoZVxuICAgKiBsYXRlc3QgUmVhY3QgY29tcG9uZW50
LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgQ29tcG9uZW50
IGVsZW1lbnQgdG8gcmVuZGVyLlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBE
T00gZWxlbWVudCB0byByZW5kZXIgaW50by5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxi
YWNrIGZ1bmN0aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uXG4gICAqIEByZXR1cm4ge1JlYWN0
Q29tcG9uZW50fSBDb21wb25lbnQgaW5zdGFuY2UgcmVuZGVyZWQgaW4gYGNvbnRhaW5lcmAuXG4g
ICAqL1xuICByZW5kZXI6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFj
aykge1xuICAgIHJldHVybiBSZWFjdE1vdW50Ll9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihu
dWxsLCBuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjayk7XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIFVubW91bnRzIGFuZCBkZXN0cm95cyB0aGUgUmVhY3QgY29tcG9uZW50IHJlbmRlcmVkIGlu
IHRoZSBgY29udGFpbmVyYC5cbiAgICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3Jl
YWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0ZG9tLnVubW91bnRjb21wb25lbnRhdG5v
ZGVcbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQg
Y29udGFpbmluZyBhIFJlYWN0IGNvbXBvbmVudC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1
ZSBpZiBhIGNvbXBvbmVudCB3YXMgZm91bmQgaW4gYW5kIHVubW91bnRlZCBmcm9tXG4gICAqICAg
ICAgICAgICAgICAgICAgIGBjb250YWluZXJgXG4gICAqL1xuICB1bm1vdW50Q29tcG9uZW50QXRO
b2RlOiBmdW5jdGlvbiAoY29udGFpbmVyKSB7XG4gICAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIg
Y29kZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG4gICAgLy8gX3JlbmRlclZh
bGlkYXRlZENvbXBvbmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0
ZWQ7XG4gICAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdzIHRoZSBjYXNlLiAoU3RyaWN0bHkgc3BlYWtp
bmcsIHVubW91bnRpbmcgd29uJ3QgY2F1c2UgYVxuICAgIC8vIHJlbmRlciBidXQgd2Ugc3RpbGwg
ZG9uJ3QgZXhwZWN0IHRvIGJlIGluIGEgcmVuZGVyIGNhbGwgaGVyZS4pXG4gICAgIGZhbHNlID8g
d2FybmluZyhSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID09IG51bGwsICd1bm1vdW50Q29tcG9u
ZW50QXROb2RlKCk6IFJlbmRlciBtZXRob2RzIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rpb24gJyAr
ICdvZiBwcm9wcyBhbmQgc3RhdGU7IHRyaWdnZXJpbmcgbmVzdGVkIGNvbXBvbmVudCB1cGRhdGVz
IGZyb20gcmVuZGVyICcgKyAnaXMgbm90IGFsbG93ZWQuIElmIG5lY2Vzc2FyeSwgdHJpZ2dlciBu
ZXN0ZWQgdXBkYXRlcyBpbiAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZS4gQ2hlY2sgdGhlIHJlbmRl
ciBtZXRob2Qgb2YgJXMuJywgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCAmJiBSZWFjdEN1cnJl
bnRPd25lci5jdXJyZW50LmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6
IHZvaWQgMDtcblxuICAgICFpc1ZhbGlkQ29udGFpbmVyKGNvbnRhaW5lcikgPyAgZmFsc2UgPyBp
bnZhcmlhbnQoZmFsc2UsICd1bm1vdW50Q29tcG9uZW50QXROb2RlKC4uLik6IFRhcmdldCBjb250
YWluZXIgaXMgbm90IGEgRE9NIGVsZW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnNDAnKSA6IHZv
aWQgMDtcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIW5vZGVJc1JlbmRlcmVkQnlPdGhlckluc3RhbmNlKGNv
bnRhaW5lciksIFwidW5tb3VudENvbXBvbmVudEF0Tm9kZSgpOiBUaGUgbm9kZSB5b3UncmUgYXR0
ZW1wdGluZyB0byB1bm1vdW50IFwiICsgJ3dhcyByZW5kZXJlZCBieSBhbm90aGVyIGNvcHkgb2Yg
UmVhY3QuJykgOiB2b2lkIDA7XG4gICAgfVxuXG4gICAgdmFyIHByZXZDb21wb25lbnQgPSBnZXRU
b3BMZXZlbFdyYXBwZXJJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICAgIGlmICghcHJldkNvbXBv
bmVudCkge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIG5vZGUgYmVpbmcgdW5tb3VudGVkIHdhcyBy
ZW5kZXJlZCBieSBSZWFjdCwgYnV0IGlzbid0IGFcbiAgICAgIC8vIHJvb3Qgbm9kZS5cbiAgICAg
IHZhciBjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCA9IGhhc05vblJvb3RSZWFjdENoaWxk
KGNvbnRhaW5lcik7XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBjb250YWluZXIgaXRzZWxmIGlz
IGEgUmVhY3Qgcm9vdCBub2RlLlxuICAgICAgdmFyIGlzQ29udGFpbmVyUmVhY3RSb290ID0gY29u
dGFpbmVyLm5vZGVUeXBlID09PSAxICYmIGNvbnRhaW5lci5oYXNBdHRyaWJ1dGUoUk9PVF9BVFRS
X05BTUUpO1xuXG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNvbnRhaW5lckhhc05vblJvb3RSZWFjdENo
aWxkLCBcInVubW91bnRDb21wb25lbnRBdE5vZGUoKTogVGhlIG5vZGUgeW91J3JlIGF0dGVtcHRp
bmcgdG8gdW5tb3VudCBcIiArICd3YXMgcmVuZGVyZWQgYnkgUmVhY3QgYW5kIGlzIG5vdCBhIHRv
cC1sZXZlbCBjb250YWluZXIuICVzJywgaXNDb250YWluZXJSZWFjdFJvb3QgPyAnWW91IG1heSBo
YXZlIGFjY2lkZW50YWxseSBwYXNzZWQgaW4gYSBSZWFjdCByb290IG5vZGUgaW5zdGVhZCAnICsg
J29mIGl0cyBjb250YWluZXIuJyA6ICdJbnN0ZWFkLCBoYXZlIHRoZSBwYXJlbnQgY29tcG9uZW50
IHVwZGF0ZSBpdHMgc3RhdGUgYW5kICcgKyAncmVyZW5kZXIgaW4gb3JkZXIgdG8gcmVtb3ZlIHRo
aXMgY29tcG9uZW50LicpIDogdm9pZCAwO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7
XG4gICAgfVxuICAgIGRlbGV0ZSBpbnN0YW5jZXNCeVJlYWN0Um9vdElEW3ByZXZDb21wb25lbnQu
X2luc3RhbmNlLnJvb3RJRF07XG4gICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKHVubW91
bnRDb21wb25lbnRGcm9tTm9kZSwgcHJldkNvbXBvbmVudCwgY29udGFpbmVyLCBmYWxzZSk7XG4g
ICAgcmV0dXJuIHRydWU7XG4gIH0sXG5cbiAgX21vdW50SW1hZ2VJbnRvTm9kZTogZnVuY3Rpb24g
KG1hcmt1cCwgY29udGFpbmVyLCBpbnN0YW5jZSwgc2hvdWxkUmV1c2VNYXJrdXAsIHRyYW5zYWN0
aW9uKSB7XG4gICAgIWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/ICBmYWxzZSA/IGludmFy
aWFudChmYWxzZSwgJ21vdW50Q29tcG9uZW50SW50b05vZGUoLi4uKTogVGFyZ2V0IGNvbnRhaW5l
ciBpcyBub3QgdmFsaWQuJykgOiBfcHJvZEludmFyaWFudCgnNDEnKSA6IHZvaWQgMDtcblxuICAg
IGlmIChzaG91bGRSZXVzZU1hcmt1cCkge1xuICAgICAgdmFyIHJvb3RFbGVtZW50ID0gZ2V0UmVh
Y3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gICAgICBpZiAoUmVhY3RNYXJr
dXBDaGVja3N1bS5jYW5SZXVzZU1hcmt1cChtYXJrdXAsIHJvb3RFbGVtZW50KSkge1xuICAgICAg
ICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKGluc3RhbmNlLCByb290RWxlbWVu
dCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBjaGVja3N1
bSA9IHJvb3RFbGVtZW50LmdldEF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VN
X0FUVFJfTkFNRSk7XG4gICAgICAgIHJvb3RFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShSZWFjdE1h
cmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7XG5cbiAgICAgICAgdmFyIHJvb3RNYXJr
dXAgPSByb290RWxlbWVudC5vdXRlckhUTUw7XG4gICAgICAgIHJvb3RFbGVtZW50LnNldEF0dHJp
YnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSwgY2hlY2tzdW0pO1xu
XG4gICAgICAgIHZhciBub3JtYWxpemVkTWFya3VwID0gbWFya3VwO1xuICAgICAgICBpZiAoZmFs
c2UpIHtcbiAgICAgICAgICAvLyBiZWNhdXNlIHJvb3RNYXJrdXAgaXMgcmV0cmlldmVkIGZyb20g
dGhlIERPTSwgdmFyaW91cyBub3JtYWxpemF0aW9uc1xuICAgICAgICAgIC8vIHdpbGwgaGF2ZSBv
Y2N1cnJlZCB3aGljaCB3aWxsIG5vdCBiZSBwcmVzZW50IGluIGBtYXJrdXBgLiBIZXJlLFxuICAg
ICAgICAgIC8vIGluc2VydCBtYXJrdXAgaW50byBhIDxkaXY+IG9yIDxpZnJhbWU+IGRlcGVuZGlu
ZyBvbiB0aGUgY29udGFpbmVyXG4gICAgICAgICAgLy8gdHlwZSB0byBwZXJmb3JtIHRoZSBzYW1l
IG5vcm1hbGl6YXRpb25zIGJlZm9yZSBjb21wYXJpbmcuXG4gICAgICAgICAgdmFyIG5vcm1hbGl6
ZXI7XG4gICAgICAgICAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZ
UEUpIHtcbiAgICAgICAgICAgIG5vcm1hbGl6ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZXIuaW5uZXJIVE1MID0gbWFya3VwO1xuICAgICAg
ICAgICAgbm9ybWFsaXplZE1hcmt1cCA9IG5vcm1hbGl6ZXIuaW5uZXJIVE1MO1xuICAgICAgICAg
IH0gZWxzZSB7XG4gICAgICAgICAgICBub3JtYWxpemVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnaWZyYW1lJyk7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vcm1h
bGl6ZXIpO1xuICAgICAgICAgICAgbm9ybWFsaXplci5jb250ZW50RG9jdW1lbnQud3JpdGUobWFy
a3VwKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAgPSBub3JtYWxpemVyLmNvbnRlbnRE
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQub3V0ZXJIVE1MO1xuICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5yZW1vdmVDaGlsZChub3JtYWxpemVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxu
ICAgICAgICB2YXIgZGlmZkluZGV4ID0gZmlyc3REaWZmZXJlbmNlSW5kZXgobm9ybWFsaXplZE1h
cmt1cCwgcm9vdE1hcmt1cCk7XG4gICAgICAgIHZhciBkaWZmZXJlbmNlID0gJyAoY2xpZW50KSAn
ICsgbm9ybWFsaXplZE1hcmt1cC5zdWJzdHJpbmcoZGlmZkluZGV4IC0gMjAsIGRpZmZJbmRleCAr
IDIwKSArICdcXG4gKHNlcnZlcikgJyArIHJvb3RNYXJrdXAuc3Vic3RyaW5nKGRpZmZJbmRleCAt
IDIwLCBkaWZmSW5kZXggKyAyMCk7XG5cbiAgICAgICAgIShjb250YWluZXIubm9kZVR5cGUgIT09
IERPQ19OT0RFX1RZUEUpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnWW91XFwncmUgdHJ5
aW5nIHRvIHJlbmRlciBhIGNvbXBvbmVudCB0byB0aGUgZG9jdW1lbnQgdXNpbmcgc2VydmVyIHJl
bmRlcmluZyBidXQgdGhlIGNoZWNrc3VtIHdhcyBpbnZhbGlkLiBUaGlzIHVzdWFsbHkgbWVhbnMg
eW91IHJlbmRlcmVkIGEgZGlmZmVyZW50IGNvbXBvbmVudCB0eXBlIG9yIHByb3BzIG9uIHRoZSBj
bGllbnQgZnJvbSB0aGUgb25lIG9uIHRoZSBzZXJ2ZXIsIG9yIHlvdXIgcmVuZGVyKCkgbWV0aG9k
cyBhcmUgaW1wdXJlLiBSZWFjdCBjYW5ub3QgaGFuZGxlIHRoaXMgY2FzZSBkdWUgdG8gY3Jvc3Mt
YnJvd3NlciBxdWlya3MgYnkgcmVuZGVyaW5nIGF0IHRoZSBkb2N1bWVudCByb290LiBZb3Ugc2hv
dWxkIGxvb2sgZm9yIGVudmlyb25tZW50IGRlcGVuZGVudCBjb2RlIGluIHlvdXIgY29tcG9uZW50
cyBhbmQgZW5zdXJlIHRoZSBwcm9wcyBhcmUgdGhlIHNhbWUgY2xpZW50IGFuZCBzZXJ2ZXIgc2lk
ZTpcXG4lcycsIGRpZmZlcmVuY2UpIDogX3Byb2RJbnZhcmlhbnQoJzQyJywgZGlmZmVyZW5jZSkg
OiB2b2lkIDA7XG5cbiAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdCBhdHRlbXB0
ZWQgdG8gcmV1c2UgbWFya3VwIGluIGEgY29udGFpbmVyIGJ1dCB0aGUgJyArICdjaGVja3N1bSB3
YXMgaW52YWxpZC4gVGhpcyBnZW5lcmFsbHkgbWVhbnMgdGhhdCB5b3UgYXJlICcgKyAndXNpbmcg
c2VydmVyIHJlbmRlcmluZyBhbmQgdGhlIG1hcmt1cCBnZW5lcmF0ZWQgb24gdGhlICcgKyAnc2Vy
dmVyIHdhcyBub3Qgd2hhdCB0aGUgY2xpZW50IHdhcyBleHBlY3RpbmcuIFJlYWN0IGluamVjdGVk
ICcgKyAnbmV3IG1hcmt1cCB0byBjb21wZW5zYXRlIHdoaWNoIHdvcmtzIGJ1dCB5b3UgaGF2ZSBs
b3N0IG1hbnkgJyArICdvZiB0aGUgYmVuZWZpdHMgb2Ygc2VydmVyIHJlbmRlcmluZy4gSW5zdGVh
ZCwgZmlndXJlIG91dCAnICsgJ3doeSB0aGUgbWFya3VwIGJlaW5nIGdlbmVyYXRlZCBpcyBkaWZm
ZXJlbnQgb24gdGhlIGNsaWVudCAnICsgJ29yIHNlcnZlcjpcXG4lcycsIGRpZmZlcmVuY2UpIDog
dm9pZCAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgIShjb250YWluZXIubm9k
ZVR5cGUgIT09IERPQ19OT0RFX1RZUEUpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnWW91
XFwncmUgdHJ5aW5nIHRvIHJlbmRlciBhIGNvbXBvbmVudCB0byB0aGUgZG9jdW1lbnQgYnV0IHlv
dSBkaWRuXFwndCB1c2Ugc2VydmVyIHJlbmRlcmluZy4gV2UgY2FuXFwndCBkbyB0aGlzIHdpdGhv
dXQgdXNpbmcgc2VydmVyIHJlbmRlcmluZyBkdWUgdG8gY3Jvc3MtYnJvd3NlciBxdWlya3MuIFNl
ZSBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZygpIGZvciBzZXJ2ZXIgcmVuZGVyaW5nLicp
IDogX3Byb2RJbnZhcmlhbnQoJzQzJykgOiB2b2lkIDA7XG5cbiAgICBpZiAodHJhbnNhY3Rpb24u
dXNlQ3JlYXRlRWxlbWVudCkge1xuICAgICAgd2hpbGUgKGNvbnRhaW5lci5sYXN0Q2hpbGQpIHtc
biAgICAgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRhaW5lci5sYXN0Q2hpbGQpO1xuICAg
ICAgfVxuICAgICAgRE9NTGF6eVRyZWUuaW5zZXJ0VHJlZUJlZm9yZShjb250YWluZXIsIG1hcmt1
cCwgbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldElubmVySFRNTChjb250YWluZXIsIG1h
cmt1cCk7XG4gICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKGluc3RhbmNl
LCBjb250YWluZXIuZmlyc3RDaGlsZCk7XG4gICAgfVxuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAg
ICB2YXIgaG9zdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9k
ZShjb250YWluZXIuZmlyc3RDaGlsZCk7XG4gICAgICBpZiAoaG9zdE5vZGUuX2RlYnVnSUQgIT09
IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJh
dGlvbih7XG4gICAgICAgICAgaW5zdGFuY2VJRDogaG9zdE5vZGUuX2RlYnVnSUQsXG4gICAgICAg
ICAgdHlwZTogJ21vdW50JyxcbiAgICAgICAgICBwYXlsb2FkOiBtYXJrdXAudG9TdHJpbmcoKVxu
ICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0g
UmVhY3RNb3VudDtcblxuLyoqKi8gfSksXG4vKiA4MyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIFJlYWN0Tm9kZVR5cGVzID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg3NCk7XG5cbmZ1bmN0aW9uIGdldEhvc3RDb21wb25lbnRGcm9t
Q29tcG9zaXRlKGluc3QpIHtcbiAgdmFyIHR5cGU7XG5cbiAgd2hpbGUgKCh0eXBlID0gaW5zdC5f
cmVuZGVyZWROb2RlVHlwZSkgPT09IFJlYWN0Tm9kZVR5cGVzLkNPTVBPU0lURSkge1xuICAgIGlu
c3QgPSBpbnN0Ll9yZW5kZXJlZENvbXBvbmVudDtcbiAgfVxuXG4gIGlmICh0eXBlID09PSBSZWFj
dE5vZGVUeXBlcy5IT1NUKSB7XG4gICAgcmV0dXJuIGluc3QuX3JlbmRlcmVkQ29tcG9uZW50O1xu
ICB9IGVsc2UgaWYgKHR5cGUgPT09IFJlYWN0Tm9kZVR5cGVzLkVNUFRZKSB7XG4gICAgcmV0dXJu
IG51bGw7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRIb3N0Q29tcG9uZW50RnJvbUNv
bXBvc2l0ZTtcblxuLyoqKi8gfSksXG4vKiA4NCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwg
X193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJp
Y3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9f
LmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJhXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gQWN0aW9u
VHlwZXM7IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKGltbXV0YWJsZSkgKi8gX193ZWJwYWNrX2V4
cG9ydHNfX1tcImJcIl0gPSBjcmVhdGVTdG9yZTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfbG9kYXNoX2VzX2lzUGxhaW5PYmplY3RfXyA9IF9f
d2VicGFja19yZXF1aXJlX18oNDgpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMV9zeW1ib2xfb2JzZXJ2YWJsZV9fID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyMDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMV9zeW1ib2xfb2JzZXJ2YWJsZV9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
Lm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX3N5bWJvbF9vYnNlcnZhYmxlX18pO1xuXG5c
blxuLyoqXG4gKiBUaGVzZSBhcmUgcHJpdmF0ZSBhY3Rpb24gdHlwZXMgcmVzZXJ2ZWQgYnkgUmVk
dXguXG4gKiBGb3IgYW55IHVua25vd24gYWN0aW9ucywgeW91IG11c3QgcmV0dXJuIHRoZSBjdXJy
ZW50IHN0YXRlLlxuICogSWYgdGhlIGN1cnJlbnQgc3RhdGUgaXMgdW5kZWZpbmVkLCB5b3UgbXVz
dCByZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUuXG4gKiBEbyBub3QgcmVmZXJlbmNlIHRoZXNlIGFj
dGlvbiB0eXBlcyBkaXJlY3RseSBpbiB5b3VyIGNvZGUuXG4gKi9cbnZhciBBY3Rpb25UeXBlcyA9
IHtcbiAgSU5JVDogJ0BAcmVkdXgvSU5JVCdcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIFJlZHV4
IHN0b3JlIHRoYXQgaG9sZHMgdGhlIHN0YXRlIHRyZWUuXG4gICAqIFRoZSBvbmx5IHdheSB0byBj
aGFuZ2UgdGhlIGRhdGEgaW4gdGhlIHN0b3JlIGlzIHRvIGNhbGwgYGRpc3BhdGNoKClgIG9uIGl0
LlxuICAgKlxuICAgKiBUaGVyZSBzaG91bGQgb25seSBiZSBhIHNpbmdsZSBzdG9yZSBpbiB5b3Vy
IGFwcC4gVG8gc3BlY2lmeSBob3cgZGlmZmVyZW50XG4gICAqIHBhcnRzIG9mIHRoZSBzdGF0ZSB0
cmVlIHJlc3BvbmQgdG8gYWN0aW9ucywgeW91IG1heSBjb21iaW5lIHNldmVyYWwgcmVkdWNlcnNc
biAgICogaW50byBhIHNpbmdsZSByZWR1Y2VyIGZ1bmN0aW9uIGJ5IHVzaW5nIGBjb21iaW5lUmVk
dWNlcnNgLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWR1Y2VyIEEgZnVuY3Rpb24g
dGhhdCByZXR1cm5zIHRoZSBuZXh0IHN0YXRlIHRyZWUsIGdpdmVuXG4gICAqIHRoZSBjdXJyZW50
IHN0YXRlIHRyZWUgYW5kIHRoZSBhY3Rpb24gdG8gaGFuZGxlLlxuICAgKlxuICAgKiBAcGFyYW0g
e2FueX0gW3ByZWxvYWRlZFN0YXRlXSBUaGUgaW5pdGlhbCBzdGF0ZS4gWW91IG1heSBvcHRpb25h
bGx5IHNwZWNpZnkgaXRcbiAgICogdG8gaHlkcmF0ZSB0aGUgc3RhdGUgZnJvbSB0aGUgc2VydmVy
IGluIHVuaXZlcnNhbCBhcHBzLCBvciB0byByZXN0b3JlIGFcbiAgICogcHJldmlvdXNseSBzZXJp
YWxpemVkIHVzZXIgc2Vzc2lvbi5cbiAgICogSWYgeW91IHVzZSBgY29tYmluZVJlZHVjZXJzYCB0
byBwcm9kdWNlIHRoZSByb290IHJlZHVjZXIgZnVuY3Rpb24sIHRoaXMgbXVzdCBiZVxuICAgKiBh
biBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzaGFwZSBhcyBgY29tYmluZVJlZHVjZXJzYCBrZXlzLlxu
ICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZW5oYW5jZXJdIFRoZSBzdG9yZSBlbmhhbmNl
ci4gWW91IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRcbiAgICogdG8gZW5oYW5jZSB0aGUgc3Rv
cmUgd2l0aCB0aGlyZC1wYXJ0eSBjYXBhYmlsaXRpZXMgc3VjaCBhcyBtaWRkbGV3YXJlLFxuICAg
KiB0aW1lIHRyYXZlbCwgcGVyc2lzdGVuY2UsIGV0Yy4gVGhlIG9ubHkgc3RvcmUgZW5oYW5jZXIg
dGhhdCBzaGlwcyB3aXRoIFJlZHV4XG4gICAqIGlzIGBhcHBseU1pZGRsZXdhcmUoKWAuXG4gICAq
XG4gICAqIEByZXR1cm5zIHtTdG9yZX0gQSBSZWR1eCBzdG9yZSB0aGF0IGxldHMgeW91IHJlYWQg
dGhlIHN0YXRlLCBkaXNwYXRjaCBhY3Rpb25zXG4gICAqIGFuZCBzdWJzY3JpYmUgdG8gY2hhbmdl
cy5cbiAgICovXG59O2Z1bmN0aW9uIGNyZWF0ZVN0b3JlKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRl
LCBlbmhhbmNlcikge1xuICB2YXIgX3JlZjI7XG5cbiAgaWYgKHR5cGVvZiBwcmVsb2FkZWRTdGF0
ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZW5oYW5jZXIgPT09ICd1bmRlZmluZWQnKSB7XG4g
ICAgZW5oYW5jZXIgPSBwcmVsb2FkZWRTdGF0ZTtcbiAgICBwcmVsb2FkZWRTdGF0ZSA9IHVuZGVm
aW5lZDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZW5oYW5jZXIgIT09ICd1bmRlZmluZWQnKSB7XG4g
ICAgaWYgKHR5cGVvZiBlbmhhbmNlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3
IEVycm9yKCdFeHBlY3RlZCB0aGUgZW5oYW5jZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9
XG5cbiAgICByZXR1cm4gZW5oYW5jZXIoY3JlYXRlU3RvcmUpKHJlZHVjZXIsIHByZWxvYWRlZFN0
YXRlKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVkdWNlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAg
IHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgdGhlIHJlZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4n
KTtcbiAgfVxuXG4gIHZhciBjdXJyZW50UmVkdWNlciA9IHJlZHVjZXI7XG4gIHZhciBjdXJyZW50
U3RhdGUgPSBwcmVsb2FkZWRTdGF0ZTtcbiAgdmFyIGN1cnJlbnRMaXN0ZW5lcnMgPSBbXTtcbiAg
dmFyIG5leHRMaXN0ZW5lcnMgPSBjdXJyZW50TGlzdGVuZXJzO1xuICB2YXIgaXNEaXNwYXRjaGlu
ZyA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIGVuc3VyZUNhbk11dGF0ZU5leHRMaXN0ZW5lcnMoKSB7
XG4gICAgaWYgKG5leHRMaXN0ZW5lcnMgPT09IGN1cnJlbnRMaXN0ZW5lcnMpIHtcbiAgICAgIG5l
eHRMaXN0ZW5lcnMgPSBjdXJyZW50TGlzdGVuZXJzLnNsaWNlKCk7XG4gICAgfVxuICB9XG5cbiAg
LyoqXG4gICAqIFJlYWRzIHRoZSBzdGF0ZSB0cmVlIG1hbmFnZWQgYnkgdGhlIHN0b3JlLlxuICAg
KlxuICAgKiBAcmV0dXJucyB7YW55fSBUaGUgY3VycmVudCBzdGF0ZSB0cmVlIG9mIHlvdXIgYXBw
bGljYXRpb24uXG4gICAqL1xuICBmdW5jdGlvbiBnZXRTdGF0ZSgpIHtcbiAgICByZXR1cm4gY3Vy
cmVudFN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjaGFuZ2UgbGlzdGVuZXIuIEl0
IHdpbGwgYmUgY2FsbGVkIGFueSB0aW1lIGFuIGFjdGlvbiBpcyBkaXNwYXRjaGVkLFxuICAgKiBh
bmQgc29tZSBwYXJ0IG9mIHRoZSBzdGF0ZSB0cmVlIG1heSBwb3RlbnRpYWxseSBoYXZlIGNoYW5n
ZWQuIFlvdSBtYXkgdGhlblxuICAgKiBjYWxsIGBnZXRTdGF0ZSgpYCB0byByZWFkIHRoZSBjdXJy
ZW50IHN0YXRlIHRyZWUgaW5zaWRlIHRoZSBjYWxsYmFjay5cbiAgICpcbiAgICogWW91IG1heSBj
YWxsIGBkaXNwYXRjaCgpYCBmcm9tIGEgY2hhbmdlIGxpc3RlbmVyLCB3aXRoIHRoZSBmb2xsb3dp
bmdcbiAgICogY2F2ZWF0czpcbiAgICpcbiAgICogMS4gVGhlIHN1YnNjcmlwdGlvbnMgYXJlIHNu
YXBzaG90dGVkIGp1c3QgYmVmb3JlIGV2ZXJ5IGBkaXNwYXRjaCgpYCBjYWxsLlxuICAgKiBJZiB5
b3Ugc3Vic2NyaWJlIG9yIHVuc3Vic2NyaWJlIHdoaWxlIHRoZSBsaXN0ZW5lcnMgYXJlIGJlaW5n
IGludm9rZWQsIHRoaXNcbiAgICogd2lsbCBub3QgaGF2ZSBhbnkgZWZmZWN0IG9uIHRoZSBgZGlz
cGF0Y2goKWAgdGhhdCBpcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MuXG4gICAqIEhvd2V2ZXIsIHRo
ZSBuZXh0IGBkaXNwYXRjaCgpYCBjYWxsLCB3aGV0aGVyIG5lc3RlZCBvciBub3QsIHdpbGwgdXNl
IGEgbW9yZVxuICAgKiByZWNlbnQgc25hcHNob3Qgb2YgdGhlIHN1YnNjcmlwdGlvbiBsaXN0Llxu
ICAgKlxuICAgKiAyLiBUaGUgbGlzdGVuZXIgc2hvdWxkIG5vdCBleHBlY3QgdG8gc2VlIGFsbCBz
dGF0ZSBjaGFuZ2VzLCBhcyB0aGUgc3RhdGVcbiAgICogbWlnaHQgaGF2ZSBiZWVuIHVwZGF0ZWQg
bXVsdGlwbGUgdGltZXMgZHVyaW5nIGEgbmVzdGVkIGBkaXNwYXRjaCgpYCBiZWZvcmVcbiAgICog
dGhlIGxpc3RlbmVyIGlzIGNhbGxlZC4gSXQgaXMsIGhvd2V2ZXIsIGd1YXJhbnRlZWQgdGhhdCBh
bGwgc3Vic2NyaWJlcnNcbiAgICogcmVnaXN0ZXJlZCBiZWZvcmUgdGhlIGBkaXNwYXRjaCgpYCBz
dGFydGVkIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGxhdGVzdFxuICAgKiBzdGF0ZSBieSB0aGUg
dGltZSBpdCBleGl0cy5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gbGlzdGVuZXIgQSBj
YWxsYmFjayB0byBiZSBpbnZva2VkIG9uIGV2ZXJ5IGRpc3BhdGNoLlxuICAgKiBAcmV0dXJucyB7
RnVuY3Rpb259IEEgZnVuY3Rpb24gdG8gcmVtb3ZlIHRoaXMgY2hhbmdlIGxpc3RlbmVyLlxuICAg
Ki9cbiAgZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYgKHR5cGVvZiBsaXN0
ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBs
aXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIHZhciBpc1N1YnNjcmli
ZWQgPSB0cnVlO1xuXG4gICAgZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3RlbmVycygpO1xuICAgIG5l
eHRMaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gdW5zdWJz
Y3JpYmUoKSB7XG4gICAgICBpZiAoIWlzU3Vic2NyaWJlZCkge1xuICAgICAgICByZXR1cm47XG4g
ICAgICB9XG5cbiAgICAgIGlzU3Vic2NyaWJlZCA9IGZhbHNlO1xuXG4gICAgICBlbnN1cmVDYW5N
dXRhdGVOZXh0TGlzdGVuZXJzKCk7XG4gICAgICB2YXIgaW5kZXggPSBuZXh0TGlzdGVuZXJzLmlu
ZGV4T2YobGlzdGVuZXIpO1xuICAgICAgbmV4dExpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xu
ICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2hlcyBhbiBhY3Rpb24uIEl0IGlzIHRo
ZSBvbmx5IHdheSB0byB0cmlnZ2VyIGEgc3RhdGUgY2hhbmdlLlxuICAgKlxuICAgKiBUaGUgYHJl
ZHVjZXJgIGZ1bmN0aW9uLCB1c2VkIHRvIGNyZWF0ZSB0aGUgc3RvcmUsIHdpbGwgYmUgY2FsbGVk
IHdpdGggdGhlXG4gICAqIGN1cnJlbnQgc3RhdGUgdHJlZSBhbmQgdGhlIGdpdmVuIGBhY3Rpb25g
LiBJdHMgcmV0dXJuIHZhbHVlIHdpbGxcbiAgICogYmUgY29uc2lkZXJlZCB0aGUgKipuZXh0Kiog
c3RhdGUgb2YgdGhlIHRyZWUsIGFuZCB0aGUgY2hhbmdlIGxpc3RlbmVyc1xuICAgKiB3aWxsIGJl
IG5vdGlmaWVkLlxuICAgKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBv
cnRzIHBsYWluIG9iamVjdCBhY3Rpb25zLiBJZiB5b3Ugd2FudCB0b1xuICAgKiBkaXNwYXRjaCBh
IFByb21pc2UsIGFuIE9ic2VydmFibGUsIGEgdGh1bmssIG9yIHNvbWV0aGluZyBlbHNlLCB5b3Ug
bmVlZCB0b1xuICAgKiB3cmFwIHlvdXIgc3RvcmUgY3JlYXRpbmcgZnVuY3Rpb24gaW50byB0aGUg
Y29ycmVzcG9uZGluZyBtaWRkbGV3YXJlLiBGb3JcbiAgICogZXhhbXBsZSwgc2VlIHRoZSBkb2N1
bWVudGF0aW9uIGZvciB0aGUgYHJlZHV4LXRodW5rYCBwYWNrYWdlLiBFdmVuIHRoZVxuICAgKiBt
aWRkbGV3YXJlIHdpbGwgZXZlbnR1YWxseSBkaXNwYXRjaCBwbGFpbiBvYmplY3QgYWN0aW9ucyB1
c2luZyB0aGlzIG1ldGhvZC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbiBBIHBs
YWluIG9iamVjdCByZXByZXNlbnRpbmcg4oCcd2hhdCBjaGFuZ2Vk4oCdLiBJdCBpc1xuICAgKiBh
IGdvb2QgaWRlYSB0byBrZWVwIGFjdGlvbnMgc2VyaWFsaXphYmxlIHNvIHlvdSBjYW4gcmVjb3Jk
IGFuZCByZXBsYXkgdXNlclxuICAgKiBzZXNzaW9ucywgb3IgdXNlIHRoZSB0aW1lIHRyYXZlbGxp
bmcgYHJlZHV4LWRldnRvb2xzYC4gQW4gYWN0aW9uIG11c3QgaGF2ZVxuICAgKiBhIGB0eXBlYCBw
cm9wZXJ0eSB3aGljaCBtYXkgbm90IGJlIGB1bmRlZmluZWRgLiBJdCBpcyBhIGdvb2QgaWRlYSB0
byB1c2VcbiAgICogc3RyaW5nIGNvbnN0YW50cyBmb3IgYWN0aW9uIHR5cGVzLlxuICAgKlxuICAg
KiBAcmV0dXJucyB7T2JqZWN0fSBGb3IgY29udmVuaWVuY2UsIHRoZSBzYW1lIGFjdGlvbiBvYmpl
Y3QgeW91IGRpc3BhdGNoZWQuXG4gICAqXG4gICAqIE5vdGUgdGhhdCwgaWYgeW91IHVzZSBhIGN1
c3RvbSBtaWRkbGV3YXJlLCBpdCBtYXkgd3JhcCBgZGlzcGF0Y2goKWAgdG9cbiAgICogcmV0dXJu
IHNvbWV0aGluZyBlbHNlIChmb3IgZXhhbXBsZSwgYSBQcm9taXNlIHlvdSBjYW4gYXdhaXQpLlxu
ICAgKi9cbiAgZnVuY3Rpb24gZGlzcGF0Y2goYWN0aW9uKSB7XG4gICAgaWYgKCFPYmplY3QoX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX2xvZGFzaF9lc19pc1BsYWluT2JqZWN0X19bXCJhXCIg
LyogZGVmYXVsdCAqL10pKGFjdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQWN0aW9u
cyBtdXN0IGJlIHBsYWluIG9iamVjdHMuICcgKyAnVXNlIGN1c3RvbSBtaWRkbGV3YXJlIGZvciBh
c3luYyBhY3Rpb25zLicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgYWN0aW9uLnR5cGUgPT09
ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjdGlvbnMgbWF5IG5vdCBo
YXZlIGFuIHVuZGVmaW5lZCBcInR5cGVcIiBwcm9wZXJ0eS4gJyArICdIYXZlIHlvdSBtaXNzcGVs
bGVkIGEgY29uc3RhbnQ/Jyk7XG4gICAgfVxuXG4gICAgaWYgKGlzRGlzcGF0Y2hpbmcpIHtcbiAg
ICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNlcnMgbWF5IG5vdCBkaXNwYXRjaCBhY3Rpb25zLicp
O1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBpc0Rpc3BhdGNoaW5nID0gdHJ1ZTtcbiAgICAg
IGN1cnJlbnRTdGF0ZSA9IGN1cnJlbnRSZWR1Y2VyKGN1cnJlbnRTdGF0ZSwgYWN0aW9uKTtcbiAg
ICB9IGZpbmFsbHkge1xuICAgICAgaXNEaXNwYXRjaGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAg
IHZhciBsaXN0ZW5lcnMgPSBjdXJyZW50TGlzdGVuZXJzID0gbmV4dExpc3RlbmVycztcbiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGxp
c3RlbmVyID0gbGlzdGVuZXJzW2ldO1xuICAgICAgbGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBy
ZXR1cm4gYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIHRoZSByZWR1Y2VyIGN1
cnJlbnRseSB1c2VkIGJ5IHRoZSBzdG9yZSB0byBjYWxjdWxhdGUgdGhlIHN0YXRlLlxuICAgKlxu
ICAgKiBZb3UgbWlnaHQgbmVlZCB0aGlzIGlmIHlvdXIgYXBwIGltcGxlbWVudHMgY29kZSBzcGxp
dHRpbmcgYW5kIHlvdSB3YW50IHRvXG4gICAqIGxvYWQgc29tZSBvZiB0aGUgcmVkdWNlcnMgZHlu
YW1pY2FsbHkuIFlvdSBtaWdodCBhbHNvIG5lZWQgdGhpcyBpZiB5b3VcbiAgICogaW1wbGVtZW50
IGEgaG90IHJlbG9hZGluZyBtZWNoYW5pc20gZm9yIFJlZHV4LlxuICAgKlxuICAgKiBAcGFyYW0g
e0Z1bmN0aW9ufSBuZXh0UmVkdWNlciBUaGUgcmVkdWNlciBmb3IgdGhlIHN0b3JlIHRvIHVzZSBp
bnN0ZWFkLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIHJlcGxhY2VS
ZWR1Y2VyKG5leHRSZWR1Y2VyKSB7XG4gICAgaWYgKHR5cGVvZiBuZXh0UmVkdWNlciAhPT0gJ2Z1
bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB0aGUgbmV4dFJlZHVj
ZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9XG5cbiAgICBjdXJyZW50UmVkdWNlciA9IG5l
eHRSZWR1Y2VyO1xuICAgIGRpc3BhdGNoKHsgdHlwZTogQWN0aW9uVHlwZXMuSU5JVCB9KTtcbiAg
fVxuXG4gIC8qKlxuICAgKiBJbnRlcm9wZXJhYmlsaXR5IHBvaW50IGZvciBvYnNlcnZhYmxlL3Jl
YWN0aXZlIGxpYnJhcmllcy5cbiAgICogQHJldHVybnMge29ic2VydmFibGV9IEEgbWluaW1hbCBv
YnNlcnZhYmxlIG9mIHN0YXRlIGNoYW5nZXMuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBz
ZWUgdGhlIG9ic2VydmFibGUgcHJvcG9zYWw6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5
L3Byb3Bvc2FsLW9ic2VydmFibGVcbiAgICovXG4gIGZ1bmN0aW9uIG9ic2VydmFibGUoKSB7XG4g
ICAgdmFyIF9yZWY7XG5cbiAgICB2YXIgb3V0ZXJTdWJzY3JpYmUgPSBzdWJzY3JpYmU7XG4gICAg
cmV0dXJuIF9yZWYgPSB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBtaW5pbWFsIG9ic2VydmFi
bGUgc3Vic2NyaXB0aW9uIG1ldGhvZC5cbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYnNlcnZl
ciBBbnkgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgYXMgYW4gb2JzZXJ2ZXIuXG4gICAgICAgKiBU
aGUgb2JzZXJ2ZXIgb2JqZWN0IHNob3VsZCBoYXZlIGEgYG5leHRgIG1ldGhvZC5cbiAgICAgICAq
IEByZXR1cm5zIHtzdWJzY3JpcHRpb259IEFuIG9iamVjdCB3aXRoIGFuIGB1bnN1YnNjcmliZWAg
bWV0aG9kIHRoYXQgY2FuXG4gICAgICAgKiBiZSB1c2VkIHRvIHVuc3Vic2NyaWJlIHRoZSBvYnNl
cnZhYmxlIGZyb20gdGhlIHN0b3JlLCBhbmQgcHJldmVudCBmdXJ0aGVyXG4gICAgICAgKiBlbWlz
c2lvbiBvZiB2YWx1ZXMgZnJvbSB0aGUgb2JzZXJ2YWJsZS5cbiAgICAgICAqL1xuICAgICAgc3Vi
c2NyaWJlOiBmdW5jdGlvbiBzdWJzY3JpYmUob2JzZXJ2ZXIpIHtcbiAgICAgICAgaWYgKHR5cGVv
ZiBvYnNlcnZlciAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9y
KCdFeHBlY3RlZCB0aGUgb2JzZXJ2ZXIgdG8gYmUgYW4gb2JqZWN0LicpO1xuICAgICAgICB9XG5c
biAgICAgICAgZnVuY3Rpb24gb2JzZXJ2ZVN0YXRlKCkge1xuICAgICAgICAgIGlmIChvYnNlcnZl
ci5uZXh0KSB7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KGdldFN0YXRlKCkpO1xuICAgICAg
ICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG9ic2VydmVTdGF0ZSgpO1xuICAgICAgICB2YXIg
dW5zdWJzY3JpYmUgPSBvdXRlclN1YnNjcmliZShvYnNlcnZlU3RhdGUpO1xuICAgICAgICByZXR1
cm4geyB1bnN1YnNjcmliZTogdW5zdWJzY3JpYmUgfTtcbiAgICAgIH1cbiAgICB9LCBfcmVmW19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9zeW1ib2xfb2JzZXJ2YWJsZV9fX2RlZmF1bHQuYV0g
PSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LCBfcmVmO1xuICB9XG5c
biAgLy8gV2hlbiBhIHN0b3JlIGlzIGNyZWF0ZWQsIGFuIFwiSU5JVFwiIGFjdGlvbiBpcyBkaXNw
YXRjaGVkIHNvIHRoYXQgZXZlcnlcbiAgLy8gcmVkdWNlciByZXR1cm5zIHRoZWlyIGluaXRpYWwg
c3RhdGUuIFRoaXMgZWZmZWN0aXZlbHkgcG9wdWxhdGVzXG4gIC8vIHRoZSBpbml0aWFsIHN0YXRl
IHRyZWUuXG4gIGRpc3BhdGNoKHsgdHlwZTogQWN0aW9uVHlwZXMuSU5JVCB9KTtcblxuICByZXR1
cm4gX3JlZjIgPSB7XG4gICAgZGlzcGF0Y2g6IGRpc3BhdGNoLFxuICAgIHN1YnNjcmliZTogc3Vi
c2NyaWJlLFxuICAgIGdldFN0YXRlOiBnZXRTdGF0ZSxcbiAgICByZXBsYWNlUmVkdWNlcjogcmVw
bGFjZVJlZHVjZXJcbiAgfSwgX3JlZjJbX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX3N5bWJv
bF9vYnNlcnZhYmxlX19fZGVmYXVsdC5hXSA9IG9ic2VydmFibGUsIF9yZWYyO1xufVxuXG4vKioq
LyB9KSxcbi8qIDg1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0
c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fcm9vdF9qc19fID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxOTYpO1xuXG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVu
Y2VzLiAqL1xudmFyIFN5bWJvbCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fcm9vdF9q
c19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLlN5bWJvbDtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4
cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChTeW1ib2wpO1xuXG5cbi8qKiov
IH0pLFxuLyogODYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRz
X18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiB1bnVzZWQg
aGFybW9ueSBleHBvcnQgZGVmYXVsdCAqL1xuLyoqXG4gKiBQcmludHMgYSB3YXJuaW5nIGluIHRo
ZSBjb25zb2xlIGlmIGl0IGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBU
aGUgd2FybmluZyBtZXNzYWdlLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHdh
cm5pbmcobWVzc2FnZSkge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4gIGlm
ICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3Ig
PT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICB9XG4gIC8q
IGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqL1xuICB0cnkge1xuICAgIC8vIFRoaXMgZXJyb3Ig
d2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgaWYgeW91IGVuYWJsZVxuICAgIC8v
IFwiYnJlYWsgb24gYWxsIGV4Y2VwdGlvbnNcIiBpbiB5b3VyIGNvbnNvbGUsXG4gICAgLy8gaXQg
d291bGQgcGF1c2UgdGhlIGV4ZWN1dGlvbiBhdCB0aGlzIGxpbmUuXG4gICAgdGhyb3cgbmV3IEVy
cm9yKG1lc3NhZ2UpO1xuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWVtcHR5ICovXG4gIH0gY2F0
Y2ggKGUpIHt9XG4gIC8qIGVzbGludC1lbmFibGUgbm8tZW1wdHkgKi9cbn1cblxuLyoqKi8gfSks
XG4vKiA4NyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhw
b3J0IChpbW11dGFibGUpICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gY29tcG9zZTtc
bi8qKlxuICogQ29tcG9zZXMgc2luZ2xlLWFyZ3VtZW50IGZ1bmN0aW9ucyBmcm9tIHJpZ2h0IHRv
IGxlZnQuIFRoZSByaWdodG1vc3RcbiAqIGZ1bmN0aW9uIGNhbiB0YWtlIG11bHRpcGxlIGFyZ3Vt
ZW50cyBhcyBpdCBwcm92aWRlcyB0aGUgc2lnbmF0dXJlIGZvclxuICogdGhlIHJlc3VsdGluZyBj
b21wb3NpdGUgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHsuLi5GdW5jdGlvbn0gZnVuY3MgVGhl
IGZ1bmN0aW9ucyB0byBjb21wb3NlLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBBIGZ1bmN0aW9u
IG9idGFpbmVkIGJ5IGNvbXBvc2luZyB0aGUgYXJndW1lbnQgZnVuY3Rpb25zXG4gKiBmcm9tIHJp
Z2h0IHRvIGxlZnQuIEZvciBleGFtcGxlLCBjb21wb3NlKGYsIGcsIGgpIGlzIGlkZW50aWNhbCB0
byBkb2luZ1xuICogKC4uLmFyZ3MpID0+IGYoZyhoKC4uLmFyZ3MpKSkuXG4gKi9cblxuZnVuY3Rp
b24gY29tcG9zZSgpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGZ1bmNz
ID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgZnVu
Y3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBpZiAoZnVuY3MubGVuZ3RoID09
PSAwKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgIHJldHVybiBhcmc7XG4g
ICAgfTtcbiAgfVxuXG4gIGlmIChmdW5jcy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gZnVu
Y3NbMF07XG4gIH1cblxuICByZXR1cm4gZnVuY3MucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7XG4g
ICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBhKGIuYXBwbHkodW5kZWZpbmVk
LCBhcmd1bWVudHMpKTtcbiAgICB9O1xuICB9KTtcbn1cblxuLyoqKi8gfSksXG4vKiA4OCAqL1xu
LyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2NvbXBvbmVudHNfUHJvdmlkZXJfXyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMjEwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzFfX2NvbXBvbmVudHNfY29ubmVjdEFkdmFuY2VkX18gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDkxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzJfX2Nvbm5lY3RfY29ubmVjdF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
MTUpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVf
Xy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiYVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fY29tcG9uZW50c19Qcm92aWRlcl9fW1wiYVwiXTsgfSk7
XG4vKiB1bnVzZWQgaGFybW9ueSByZWV4cG9ydCBjcmVhdGVQcm92aWRlciAqL1xuLyogdW51c2Vk
IGhhcm1vbnkgcmVleHBvcnQgY29ubmVjdEFkdmFuY2VkICovXG4vKiBoYXJtb255IHJlZXhwb3J0
IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywg
XCJiXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19j
b25uZWN0X2Nvbm5lY3RfX1tcImFcIl07IH0pO1xuXG5cblxuXG5cblxuLyoqKi8gfSksXG4vKiA4
OSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG5pZiAoZmFsc2UpIHtcbiAgdmFy
IFJFQUNUX0VMRU1FTlRfVFlQRSA9ICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmXG4g
ICAgU3ltYm9sLmZvciAmJlxuICAgIFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSkgfHxcbiAg
ICAweGVhYzc7XG5cbiAgdmFyIGlzVmFsaWRFbGVtZW50ID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4g
ICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmXG4gICAgICBvYmplY3QgIT09
IG51bGwgJiZcbiAgICAgIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xu
ICB9O1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0
aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJv
cC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9k
dWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoaXNWYWxp
ZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGlj
aXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlv
biBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1
bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjExKSgpO1xufVxuXG5cbi8qKiovIH0p
LFxuLyogOTAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18s
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4
cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRz
X18sIFwiYlwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIHN1YnNjcmlwdGlvblNoYXBlOyB9KTtcbi8q
IGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJw
YWNrX2V4cG9ydHNfXywgXCJhXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gc3RvcmVTaGFwZTsgfSk7
XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3By
b3BfdHlwZXNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oODkpO1xuLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9wcm9wX3R5cGVzX19fZGVmYXVsdCA9
IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcHJvcF90
eXBlc19fKTtcblxuXG52YXIgc3Vic2NyaXB0aW9uU2hhcGUgPSBfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzBfcHJvcF90eXBlc19fX2RlZmF1bHQuYS5zaGFwZSh7XG4gIHRyeVN1YnNjcmliZTog
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3Byb3BfdHlwZXNfX19kZWZhdWx0LmEuZnVuYy5p
c1JlcXVpcmVkLFxuICB0cnlVbnN1YnNjcmliZTogX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X3Byb3BfdHlwZXNfX19kZWZhdWx0LmEuZnVuYy5pc1JlcXVpcmVkLFxuICBub3RpZnlOZXN0ZWRT
dWJzOiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcHJvcF90eXBlc19fX2RlZmF1bHQuYS5m
dW5jLmlzUmVxdWlyZWQsXG4gIGlzU3Vic2NyaWJlZDogX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8wX3Byb3BfdHlwZXNfX19kZWZhdWx0LmEuZnVuYy5pc1JlcXVpcmVkXG59KTtcblxudmFyIHN0
b3JlU2hhcGUgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcHJvcF90eXBlc19fX2RlZmF1
bHQuYS5zaGFwZSh7XG4gIHN1YnNjcmliZTogX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3By
b3BfdHlwZXNfX19kZWZhdWx0LmEuZnVuYy5pc1JlcXVpcmVkLFxuICBkaXNwYXRjaDogX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8wX3Byb3BfdHlwZXNfX19kZWZhdWx0LmEuZnVuYy5pc1JlcXVp
cmVkLFxuICBnZXRTdGF0ZTogX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3Byb3BfdHlwZXNf
X19kZWZhdWx0LmEuZnVuYy5pc1JlcXVpcmVkXG59KTtcblxuLyoqKi8gfSksXG4vKiA5MSAqL1xu
LyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChpbW11dGFi
bGUpICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gY29ubmVjdEFkdmFuY2VkO1xuLyog
aGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9ob2lzdF9u
b25fcmVhY3Rfc3RhdGljc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMTIpO1xuLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9ob2lzdF9ub25fcmVh
Y3Rfc3RhdGljc19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX2hvaXN0X25vbl9yZWFjdF9zdGF0aWNzX18pO1xuLyogaGFybW9ueSBp
bXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9pbnZhcmlhbnRfXyA9IF9f
d2VicGFja19yZXF1aXJlX18oMjEzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzFfaW52YXJpYW50X19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1
aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfaW52YXJpYW50X18pO1xuLyogaGFy
bW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9yZWFjdF9fID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzJfcmVhY3RfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVf
Xy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9yZWFjdF9fKTtcbi8qIGhhcm1vbnkgaW1w
b3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX3V0aWxzX1N1YnNjcmlwdGlv
bl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMTQpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFy
IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fdXRpbHNfUHJvcFR5cGVzX18gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDkwKTtcbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rp
b24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykg
eyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlm
IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRh
cmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbmZ1bmN0
aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFu
Y2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5v
dCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJs
ZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBS
ZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhh
c24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwi
b2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsg
fVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVv
ZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0
aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxs
IG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5
cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwg
d3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykg
T2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBz
dXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxuZnVuY3Rp
b24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKG9iaiwga2V5cykgeyB2YXIgdGFyZ2V0ID0ge307
IGZvciAodmFyIGkgaW4gb2JqKSB7IGlmIChrZXlzLmluZGV4T2YoaSkgPj0gMCkgY29udGludWU7
IGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgaSkpIGNvbnRp
bnVlOyB0YXJnZXRbaV0gPSBvYmpbaV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5cblxuXG5cblxu
XG5cbnZhciBob3RSZWxvYWRpbmdWZXJzaW9uID0gMDtcbnZhciBkdW1teVN0YXRlID0ge307XG5m
dW5jdGlvbiBub29wKCkge31cbmZ1bmN0aW9uIG1ha2VTZWxlY3RvclN0YXRlZnVsKHNvdXJjZVNl
bGVjdG9yLCBzdG9yZSkge1xuICAvLyB3cmFwIHRoZSBzZWxlY3RvciBpbiBhbiBvYmplY3QgdGhh
dCB0cmFja3MgaXRzIHJlc3VsdHMgYmV0d2VlbiBydW5zLlxuICB2YXIgc2VsZWN0b3IgPSB7XG4g
ICAgcnVuOiBmdW5jdGlvbiBydW5Db21wb25lbnRTZWxlY3Rvcihwcm9wcykge1xuICAgICAgdHJ5
IHtcbiAgICAgICAgdmFyIG5leHRQcm9wcyA9IHNvdXJjZVNlbGVjdG9yKHN0b3JlLmdldFN0YXRl
KCksIHByb3BzKTtcbiAgICAgICAgaWYgKG5leHRQcm9wcyAhPT0gc2VsZWN0b3IucHJvcHMgfHwg
c2VsZWN0b3IuZXJyb3IpIHtcbiAgICAgICAgICBzZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRh
dGUgPSB0cnVlO1xuICAgICAgICAgIHNlbGVjdG9yLnByb3BzID0gbmV4dFByb3BzO1xuICAgICAg
ICAgIHNlbGVjdG9yLmVycm9yID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJy
b3IpIHtcbiAgICAgICAgc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gdHJ1ZTtcbiAg
ICAgICAgc2VsZWN0b3IuZXJyb3IgPSBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAg
cmV0dXJuIHNlbGVjdG9yO1xufVxuXG5mdW5jdGlvbiBjb25uZWN0QWR2YW5jZWQoXG4vKlxuICBz
ZWxlY3RvckZhY3RvcnkgaXMgYSBmdW5jIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIHJldHVybmlu
ZyB0aGUgc2VsZWN0b3IgZnVuY3Rpb24gdXNlZCB0b1xuICBjb21wdXRlIG5ldyBwcm9wcyBmcm9t
IHN0YXRlLCBwcm9wcywgYW5kIGRpc3BhdGNoLiBGb3IgZXhhbXBsZTpcbiAgICAgZXhwb3J0IGRl
ZmF1bHQgY29ubmVjdEFkdmFuY2VkKChkaXNwYXRjaCwgb3B0aW9ucykgPT4gKHN0YXRlLCBwcm9w
cykgPT4gKHtcbiAgICAgIHRoaW5nOiBzdGF0ZS50aGluZ3NbcHJvcHMudGhpbmdJZF0sXG4gICAg
ICBzYXZlVGhpbmc6IGZpZWxkcyA9PiBkaXNwYXRjaChhY3Rpb25DcmVhdG9ycy5zYXZlVGhpbmco
cHJvcHMudGhpbmdJZCwgZmllbGRzKSksXG4gICAgfSkpKFlvdXJDb21wb25lbnQpXG4gICBBY2Nl
c3MgdG8gZGlzcGF0Y2ggaXMgcHJvdmlkZWQgdG8gdGhlIGZhY3Rvcnkgc28gc2VsZWN0b3JGYWN0
b3JpZXMgY2FuIGJpbmQgYWN0aW9uQ3JlYXRvcnNcbiAgb3V0c2lkZSBvZiB0aGVpciBzZWxlY3Rv
ciBhcyBhbiBvcHRpbWl6YXRpb24uIE9wdGlvbnMgcGFzc2VkIHRvIGNvbm5lY3RBZHZhbmNlZCBh
cmUgcGFzc2VkIHRvXG4gIHRoZSBzZWxlY3RvckZhY3RvcnksIGFsb25nIHdpdGggZGlzcGxheU5h
bWUgYW5kIFdyYXBwZWRDb21wb25lbnQsIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuXG4gICBOb3Rl
IHRoYXQgc2VsZWN0b3JGYWN0b3J5IGlzIHJlc3BvbnNpYmxlIGZvciBhbGwgY2FjaGluZy9tZW1v
aXphdGlvbiBvZiBpbmJvdW5kIGFuZCBvdXRib3VuZFxuICBwcm9wcy4gRG8gbm90IHVzZSBjb25u
ZWN0QWR2YW5jZWQgZGlyZWN0bHkgd2l0aG91dCBtZW1vaXppbmcgcmVzdWx0cyBiZXR3ZWVuIGNh
bGxzIHRvIHlvdXJcbiAgc2VsZWN0b3IsIG90aGVyd2lzZSB0aGUgQ29ubmVjdCBjb21wb25lbnQg
d2lsbCByZS1yZW5kZXIgb24gZXZlcnkgc3RhdGUgb3IgcHJvcHMgY2hhbmdlLlxuKi9cbnNlbGVj
dG9yRmFjdG9yeSkge1xuICB2YXIgX2NvbnRleHRUeXBlcywgX2NoaWxkQ29udGV4dFR5cGVzO1xu
XG4gIHZhciBfcmVmID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1
bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fSxcbiAgICAgIF9yZWYkZ2V0RGlzcGxheU5hbWUg
PSBfcmVmLmdldERpc3BsYXlOYW1lLFxuICAgICAgZ2V0RGlzcGxheU5hbWUgPSBfcmVmJGdldERp
c3BsYXlOYW1lID09PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAobmFtZSkge1xuICAgIHJldHVybiAn
Q29ubmVjdEFkdmFuY2VkKCcgKyBuYW1lICsgJyknO1xuICB9IDogX3JlZiRnZXREaXNwbGF5TmFt
ZSxcbiAgICAgIF9yZWYkbWV0aG9kTmFtZSA9IF9yZWYubWV0aG9kTmFtZSxcbiAgICAgIG1ldGhv
ZE5hbWUgPSBfcmVmJG1ldGhvZE5hbWUgPT09IHVuZGVmaW5lZCA/ICdjb25uZWN0QWR2YW5jZWQn
IDogX3JlZiRtZXRob2ROYW1lLFxuICAgICAgX3JlZiRyZW5kZXJDb3VudFByb3AgPSBfcmVmLnJl
bmRlckNvdW50UHJvcCxcbiAgICAgIHJlbmRlckNvdW50UHJvcCA9IF9yZWYkcmVuZGVyQ291bnRQ
cm9wID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBfcmVmJHJlbmRlckNvdW50UHJvcCxcbiAg
ICAgIF9yZWYkc2hvdWxkSGFuZGxlU3RhdCA9IF9yZWYuc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2Vz
LFxuICAgICAgc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzID0gX3JlZiRzaG91bGRIYW5kbGVTdGF0
ID09PSB1bmRlZmluZWQgPyB0cnVlIDogX3JlZiRzaG91bGRIYW5kbGVTdGF0LFxuICAgICAgX3Jl
ZiRzdG9yZUtleSA9IF9yZWYuc3RvcmVLZXksXG4gICAgICBzdG9yZUtleSA9IF9yZWYkc3RvcmVL
ZXkgPT09IHVuZGVmaW5lZCA/ICdzdG9yZScgOiBfcmVmJHN0b3JlS2V5LFxuICAgICAgX3JlZiR3
aXRoUmVmID0gX3JlZi53aXRoUmVmLFxuICAgICAgd2l0aFJlZiA9IF9yZWYkd2l0aFJlZiA9PT0g
dW5kZWZpbmVkID8gZmFsc2UgOiBfcmVmJHdpdGhSZWYsXG4gICAgICBjb25uZWN0T3B0aW9ucyA9
IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBbJ2dldERpc3BsYXlOYW1lJywgJ21ldGhv
ZE5hbWUnLCAncmVuZGVyQ291bnRQcm9wJywgJ3Nob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcycsICdz
dG9yZUtleScsICd3aXRoUmVmJ10pO1xuXG4gIHZhciBzdWJzY3JpcHRpb25LZXkgPSBzdG9yZUtl
eSArICdTdWJzY3JpcHRpb24nO1xuICB2YXIgdmVyc2lvbiA9IGhvdFJlbG9hZGluZ1ZlcnNpb24r
KztcblxuICB2YXIgY29udGV4dFR5cGVzID0gKF9jb250ZXh0VHlwZXMgPSB7fSwgX2NvbnRleHRU
eXBlc1tzdG9yZUtleV0gPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX3V0aWxzX1Byb3BU
eXBlc19fW1wiYVwiIC8qIHN0b3JlU2hhcGUgKi9dLCBfY29udGV4dFR5cGVzW3N1YnNjcmlwdGlv
bktleV0gPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX3V0aWxzX1Byb3BUeXBlc19fW1wi
YlwiIC8qIHN1YnNjcmlwdGlvblNoYXBlICovXSwgX2NvbnRleHRUeXBlcyk7XG4gIHZhciBjaGls
ZENvbnRleHRUeXBlcyA9IChfY2hpbGRDb250ZXh0VHlwZXMgPSB7fSwgX2NoaWxkQ29udGV4dFR5
cGVzW3N1YnNjcmlwdGlvbktleV0gPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX3V0aWxz
X1Byb3BUeXBlc19fW1wiYlwiIC8qIHN1YnNjcmlwdGlvblNoYXBlICovXSwgX2NoaWxkQ29udGV4
dFR5cGVzKTtcblxuICByZXR1cm4gZnVuY3Rpb24gd3JhcFdpdGhDb25uZWN0KFdyYXBwZWRDb21w
b25lbnQpIHtcbiAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfaW52YXJpYW50X19fZGVm
YXVsdCgpKHR5cGVvZiBXcmFwcGVkQ29tcG9uZW50ID09ICdmdW5jdGlvbicsICdZb3UgbXVzdCBw
YXNzIGEgY29tcG9uZW50IHRvIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSAnICsgKCdjb25uZWN0
LiBJbnN0ZWFkIHJlY2VpdmVkICcgKyBKU09OLnN0cmluZ2lmeShXcmFwcGVkQ29tcG9uZW50KSkp
O1xuXG4gICAgdmFyIHdyYXBwZWRDb21wb25lbnROYW1lID0gV3JhcHBlZENvbXBvbmVudC5kaXNw
bGF5TmFtZSB8fCBXcmFwcGVkQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCc7XG5cbiAgICB2
YXIgZGlzcGxheU5hbWUgPSBnZXREaXNwbGF5TmFtZSh3cmFwcGVkQ29tcG9uZW50TmFtZSk7XG5c
biAgICB2YXIgc2VsZWN0b3JGYWN0b3J5T3B0aW9ucyA9IF9leHRlbmRzKHt9LCBjb25uZWN0T3B0
aW9ucywge1xuICAgICAgZ2V0RGlzcGxheU5hbWU6IGdldERpc3BsYXlOYW1lLFxuICAgICAgbWV0
aG9kTmFtZTogbWV0aG9kTmFtZSxcbiAgICAgIHJlbmRlckNvdW50UHJvcDogcmVuZGVyQ291bnRQ
cm9wLFxuICAgICAgc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzOiBzaG91bGRIYW5kbGVTdGF0ZUNo
YW5nZXMsXG4gICAgICBzdG9yZUtleTogc3RvcmVLZXksXG4gICAgICB3aXRoUmVmOiB3aXRoUmVm
LFxuICAgICAgZGlzcGxheU5hbWU6IGRpc3BsYXlOYW1lLFxuICAgICAgd3JhcHBlZENvbXBvbmVu
dE5hbWU6IHdyYXBwZWRDb21wb25lbnROYW1lLFxuICAgICAgV3JhcHBlZENvbXBvbmVudDogV3Jh
cHBlZENvbXBvbmVudFxuICAgIH0pO1xuXG4gICAgdmFyIENvbm5lY3QgPSBmdW5jdGlvbiAoX0Nv
bXBvbmVudCkge1xuICAgICAgX2luaGVyaXRzKENvbm5lY3QsIF9Db21wb25lbnQpO1xuXG4gICAg
ICBmdW5jdGlvbiBDb25uZWN0KHByb3BzLCBjb250ZXh0KSB7XG4gICAgICAgIF9jbGFzc0NhbGxD
aGVjayh0aGlzLCBDb25uZWN0KTtcblxuICAgICAgICB2YXIgX3RoaXMgPSBfcG9zc2libGVDb25z
dHJ1Y3RvclJldHVybih0aGlzLCBfQ29tcG9uZW50LmNhbGwodGhpcywgcHJvcHMsIGNvbnRleHQp
KTtcblxuICAgICAgICBfdGhpcy52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgX3RoaXMuc3Rh
dGUgPSB7fTtcbiAgICAgICAgX3RoaXMucmVuZGVyQ291bnQgPSAwO1xuICAgICAgICBfdGhpcy5z
dG9yZSA9IHByb3BzW3N0b3JlS2V5XSB8fCBjb250ZXh0W3N0b3JlS2V5XTtcbiAgICAgICAgX3Ro
aXMucHJvcHNNb2RlID0gQm9vbGVhbihwcm9wc1tzdG9yZUtleV0pO1xuICAgICAgICBfdGhpcy5z
ZXRXcmFwcGVkSW5zdGFuY2UgPSBfdGhpcy5zZXRXcmFwcGVkSW5zdGFuY2UuYmluZChfdGhpcyk7
XG5cbiAgICAgICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2ludmFyaWFudF9fX2RlZmF1
bHQoKShfdGhpcy5zdG9yZSwgJ0NvdWxkIG5vdCBmaW5kIFwiJyArIHN0b3JlS2V5ICsgJ1wiIGlu
IGVpdGhlciB0aGUgY29udGV4dCBvciBwcm9wcyBvZiAnICsgKCdcIicgKyBkaXNwbGF5TmFtZSAr
ICdcIi4gRWl0aGVyIHdyYXAgdGhlIHJvb3QgY29tcG9uZW50IGluIGEgPFByb3ZpZGVyPiwgJykg
KyAoJ29yIGV4cGxpY2l0bHkgcGFzcyBcIicgKyBzdG9yZUtleSArICdcIiBhcyBhIHByb3AgdG8g
XCInICsgZGlzcGxheU5hbWUgKyAnXCIuJykpO1xuXG4gICAgICAgIF90aGlzLmluaXRTZWxlY3Rv
cigpO1xuICAgICAgICBfdGhpcy5pbml0U3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHJldHVybiBf
dGhpcztcbiAgICAgIH1cblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUuZ2V0Q2hpbGRDb250ZXh0
ID0gZnVuY3Rpb24gZ2V0Q2hpbGRDb250ZXh0KCkge1xuICAgICAgICB2YXIgX3JlZjI7XG5cbiAg
ICAgICAgLy8gSWYgdGhpcyBjb21wb25lbnQgcmVjZWl2ZWQgc3RvcmUgZnJvbSBwcm9wcywgaXRz
IHN1YnNjcmlwdGlvbiBzaG91bGQgYmUgdHJhbnNwYXJlbnRcbiAgICAgICAgLy8gdG8gYW55IGRl
c2NlbmRhbnRzIHJlY2VpdmluZyBzdG9yZStzdWJzY3JpcHRpb24gZnJvbSBjb250ZXh0OyBpdCBw
YXNzZXMgYWxvbmdcbiAgICAgICAgLy8gc3Vic2NyaXB0aW9uIHBhc3NlZCB0byBpdC4gT3RoZXJ3
aXNlLCBpdCBzaGFkb3dzIHRoZSBwYXJlbnQgc3Vic2NyaXB0aW9uLCB3aGljaCBhbGxvd3NcbiAg
ICAgICAgLy8gQ29ubmVjdCB0byBjb250cm9sIG9yZGVyaW5nIG9mIG5vdGlmaWNhdGlvbnMgdG8g
ZmxvdyB0b3AtZG93bi5cbiAgICAgICAgdmFyIHN1YnNjcmlwdGlvbiA9IHRoaXMucHJvcHNNb2Rl
ID8gbnVsbCA6IHRoaXMuc3Vic2NyaXB0aW9uO1xuICAgICAgICByZXR1cm4gX3JlZjIgPSB7fSwg
X3JlZjJbc3Vic2NyaXB0aW9uS2V5XSA9IHN1YnNjcmlwdGlvbiB8fCB0aGlzLmNvbnRleHRbc3Vi
c2NyaXB0aW9uS2V5XSwgX3JlZjI7XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3RvdHlw
ZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAg
ICAgICBpZiAoIXNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcykgcmV0dXJuO1xuXG4gICAgICAgIC8v
IGNvbXBvbmVudFdpbGxNb3VudCBmaXJlcyBkdXJpbmcgc2VydmVyIHNpZGUgcmVuZGVyaW5nLCBi
dXQgY29tcG9uZW50RGlkTW91bnQgYW5kXG4gICAgICAgIC8vIGNvbXBvbmVudFdpbGxVbm1vdW50
IGRvIG5vdC4gQmVjYXVzZSBvZiB0aGlzLCB0cnlTdWJzY3JpYmUgaGFwcGVucyBkdXJpbmcgLi4u
ZGlkTW91bnQuXG4gICAgICAgIC8vIE90aGVyd2lzZSwgdW5zdWJzY3JpcHRpb24gd291bGQgbmV2
ZXIgdGFrZSBwbGFjZSBkdXJpbmcgU1NSLCBjYXVzaW5nIGEgbWVtb3J5IGxlYWsuXG4gICAgICAg
IC8vIFRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhIGNoaWxkIGNvbXBvbmVudCBtYXkgaGF2ZSB0
cmlnZ2VyZWQgYSBzdGF0ZSBjaGFuZ2UgYnlcbiAgICAgICAgLy8gZGlzcGF0Y2hpbmcgYW4gYWN0
aW9uIGluIGl0cyBjb21wb25lbnRXaWxsTW91bnQsIHdlIGhhdmUgdG8gcmUtcnVuIHRoZSBzZWxl
Y3QgYW5kIG1heWJlXG4gICAgICAgIC8vIHJlLXJlbmRlci5cbiAgICAgICAgdGhpcy5zdWJzY3Jp
cHRpb24udHJ5U3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0b3IucnVuKHRoaXMucHJv
cHMpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUpIHRo
aXMuZm9yY2VVcGRhdGUoKTtcbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmNv
bXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsUmVjZWl2ZVBy
b3BzKG5leHRQcm9wcykge1xuICAgICAgICB0aGlzLnNlbGVjdG9yLnJ1bihuZXh0UHJvcHMpO1xu
ICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRl
ID0gZnVuY3Rpb24gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhp
cy5zZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGU7XG4gICAgICB9O1xuXG4gICAgICBDb25u
ZWN0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudFdp
bGxVbm1vdW50KCkge1xuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHRoaXMuc3Vic2Ny
aXB0aW9uLnRyeVVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gbnVs
bDtcbiAgICAgICAgdGhpcy5ub3RpZnlOZXN0ZWRTdWJzID0gbm9vcDtcbiAgICAgICAgdGhpcy5z
dG9yZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0b3IucnVuID0gbm9vcDtcbiAgICAgICAg
dGhpcy5zZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmYWxzZTtcbiAgICAgIH07XG5c
biAgICAgIENvbm5lY3QucHJvdG90eXBlLmdldFdyYXBwZWRJbnN0YW5jZSA9IGZ1bmN0aW9uIGdl
dFdyYXBwZWRJbnN0YW5jZSgpIHtcbiAgICAgICAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8x
X2ludmFyaWFudF9fX2RlZmF1bHQoKSh3aXRoUmVmLCAnVG8gYWNjZXNzIHRoZSB3cmFwcGVkIGlu
c3RhbmNlLCB5b3UgbmVlZCB0byBzcGVjaWZ5ICcgKyAoJ3sgd2l0aFJlZjogdHJ1ZSB9IGluIHRo
ZSBvcHRpb25zIGFyZ3VtZW50IG9mIHRoZSAnICsgbWV0aG9kTmFtZSArICcoKSBjYWxsLicpKTtc
biAgICAgICAgcmV0dXJuIHRoaXMud3JhcHBlZEluc3RhbmNlO1xuICAgICAgfTtcblxuICAgICAg
Q29ubmVjdC5wcm90b3R5cGUuc2V0V3JhcHBlZEluc3RhbmNlID0gZnVuY3Rpb24gc2V0V3JhcHBl
ZEluc3RhbmNlKHJlZikge1xuICAgICAgICB0aGlzLndyYXBwZWRJbnN0YW5jZSA9IHJlZjtcbiAg
ICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmluaXRTZWxlY3RvciA9IGZ1bmN0aW9u
IGluaXRTZWxlY3RvcigpIHtcbiAgICAgICAgdmFyIHNvdXJjZVNlbGVjdG9yID0gc2VsZWN0b3JG
YWN0b3J5KHRoaXMuc3RvcmUuZGlzcGF0Y2gsIHNlbGVjdG9yRmFjdG9yeU9wdGlvbnMpO1xuICAg
ICAgICB0aGlzLnNlbGVjdG9yID0gbWFrZVNlbGVjdG9yU3RhdGVmdWwoc291cmNlU2VsZWN0b3Is
IHRoaXMuc3RvcmUpO1xuICAgICAgICB0aGlzLnNlbGVjdG9yLnJ1bih0aGlzLnByb3BzKTtcbiAg
ICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmluaXRTdWJzY3JpcHRpb24gPSBmdW5j
dGlvbiBpbml0U3Vic2NyaXB0aW9uKCkge1xuICAgICAgICBpZiAoIXNob3VsZEhhbmRsZVN0YXRl
Q2hhbmdlcykgcmV0dXJuO1xuXG4gICAgICAgIC8vIHBhcmVudFN1YidzIHNvdXJjZSBzaG91bGQg
bWF0Y2ggd2hlcmUgc3RvcmUgY2FtZSBmcm9tOiBwcm9wcyB2cy4gY29udGV4dC4gQSBjb21wb25l
bnRcbiAgICAgICAgLy8gY29ubmVjdGVkIHRvIHRoZSBzdG9yZSB2aWEgcHJvcHMgc2hvdWxkbid0
IHVzZSBzdWJzY3JpcHRpb24gZnJvbSBjb250ZXh0LCBvciB2aWNlIHZlcnNhLlxuICAgICAgICB2
YXIgcGFyZW50U3ViID0gKHRoaXMucHJvcHNNb2RlID8gdGhpcy5wcm9wcyA6IHRoaXMuY29udGV4
dClbc3Vic2NyaXB0aW9uS2V5XTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBuZXcgX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX191dGlsc19TdWJzY3JpcHRpb25fX1tcImFcIiAvKiBk
ZWZhdWx0ICovXSh0aGlzLnN0b3JlLCBwYXJlbnRTdWIsIHRoaXMub25TdGF0ZUNoYW5nZS5iaW5k
KHRoaXMpKTtcblxuICAgICAgICAvLyBgbm90aWZ5TmVzdGVkU3Vic2AgaXMgZHVwbGljYXRlZCB0
byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIGNvbXBvbmVudCBpcyAgdW5tb3VudGVkIGluXG4g
ICAgICAgIC8vIHRoZSBtaWRkbGUgb2YgdGhlIG5vdGlmaWNhdGlvbiBsb29wLCB3aGVyZSBgdGhp
cy5zdWJzY3JpcHRpb25gIHdpbGwgdGhlbiBiZSBudWxsLiBBblxuICAgICAgICAvLyBleHRyYSBu
dWxsIGNoZWNrIGV2ZXJ5IGNoYW5nZSBjYW4gYmUgYXZvaWRlZCBieSBjb3B5aW5nIHRoZSBtZXRo
b2Qgb250byBgdGhpc2AgYW5kIHRoZW5cbiAgICAgICAgLy8gcmVwbGFjaW5nIGl0IHdpdGggYSBu
by1vcCBvbiB1bm1vdW50LiBUaGlzIGNhbiBwcm9iYWJseSBiZSBhdm9pZGVkIGlmIFN1YnNjcmlw
dGlvbidzXG4gICAgICAgIC8vIGxpc3RlbmVycyBsb2dpYyBpcyBjaGFuZ2VkIHRvIG5vdCBjYWxs
IGxpc3RlbmVycyB0aGF0IGhhdmUgYmVlbiB1bnN1YnNjcmliZWQgaW4gdGhlXG4gICAgICAgIC8v
IG1pZGRsZSBvZiB0aGUgbm90aWZpY2F0aW9uIGxvb3AuXG4gICAgICAgIHRoaXMubm90aWZ5TmVz
dGVkU3VicyA9IHRoaXMuc3Vic2NyaXB0aW9uLm5vdGlmeU5lc3RlZFN1YnMuYmluZCh0aGlzLnN1
YnNjcmlwdGlvbik7XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5vblN0YXRl
Q2hhbmdlID0gZnVuY3Rpb24gb25TdGF0ZUNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rv
ci5ydW4odGhpcy5wcm9wcyk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdG9yLnNob3VsZENv
bXBvbmVudFVwZGF0ZSkge1xuICAgICAgICAgIHRoaXMubm90aWZ5TmVzdGVkU3VicygpO1xuICAg
ICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY29tcG9uZW50RGlkVXBkYXRlID0gdGhpcy5u
b3RpZnlOZXN0ZWRTdWJzT25Db21wb25lbnREaWRVcGRhdGU7XG4gICAgICAgICAgdGhpcy5zZXRT
dGF0ZShkdW1teVN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5w
cm90b3R5cGUubm90aWZ5TmVzdGVkU3Vic09uQ29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24g
bm90aWZ5TmVzdGVkU3Vic09uQ29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgICAvLyBgY29t
cG9uZW50RGlkVXBkYXRlYCBpcyBjb25kaXRpb25hbGx5IGltcGxlbWVudGVkIHdoZW4gYG9uU3Rh
dGVDaGFuZ2VgIGRldGVybWluZXMgaXRcbiAgICAgICAgLy8gbmVlZHMgdG8gbm90aWZ5IG5lc3Rl
ZCBzdWJzLiBPbmNlIGNhbGxlZCwgaXQgdW5pbXBsZW1lbnRzIGl0c2VsZiB1bnRpbCBmdXJ0aGVy
IHN0YXRlXG4gICAgICAgIC8vIGNoYW5nZXMgb2NjdXIuIERvaW5nIGl0IHRoaXMgd2F5IHZzIGhh
dmluZyBhIHBlcm1hbmVudCBgY29tcG9uZW50RGlkVXBkYXRlYCB0aGF0IGRvZXNcbiAgICAgICAg
Ly8gYSBib29sZWFuIGNoZWNrIGV2ZXJ5IHRpbWUgYXZvaWRzIGFuIGV4dHJhIG1ldGhvZCBjYWxs
IG1vc3Qgb2YgdGhlIHRpbWUsIHJlc3VsdGluZ1xuICAgICAgICAvLyBpbiBzb21lIHBlcmYgYm9v
c3QuXG4gICAgICAgIHRoaXMuY29tcG9uZW50RGlkVXBkYXRlID0gdW5kZWZpbmVkO1xuICAgICAg
ICB0aGlzLm5vdGlmeU5lc3RlZFN1YnMoKTtcbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJv
dG90eXBlLmlzU3Vic2NyaWJlZCA9IGZ1bmN0aW9uIGlzU3Vic2NyaWJlZCgpIHtcbiAgICAgICAg
cmV0dXJuIEJvb2xlYW4odGhpcy5zdWJzY3JpcHRpb24pICYmIHRoaXMuc3Vic2NyaXB0aW9uLmlz
U3Vic2NyaWJlZCgpO1xuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUuYWRkRXh0
cmFQcm9wcyA9IGZ1bmN0aW9uIGFkZEV4dHJhUHJvcHMocHJvcHMpIHtcbiAgICAgICAgaWYgKCF3
aXRoUmVmICYmICFyZW5kZXJDb3VudFByb3AgJiYgISh0aGlzLnByb3BzTW9kZSAmJiB0aGlzLnN1
YnNjcmlwdGlvbikpIHJldHVybiBwcm9wcztcbiAgICAgICAgLy8gbWFrZSBhIHNoYWxsb3cgY29w
eSBzbyB0aGF0IGZpZWxkcyBhZGRlZCBkb24ndCBsZWFrIHRvIHRoZSBvcmlnaW5hbCBzZWxlY3Rv
ci5cbiAgICAgICAgLy8gdGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBmb3IgJ3JlZicgc2lu
Y2UgdGhhdCdzIGEgcmVmZXJlbmNlIGJhY2sgdG8gdGhlIGNvbXBvbmVudFxuICAgICAgICAvLyBp
bnN0YW5jZS4gYSBzaW5nbGV0b24gbWVtb2l6ZWQgc2VsZWN0b3Igd291bGQgdGhlbiBiZSBob2xk
aW5nIGEgcmVmZXJlbmNlIHRvIHRoZVxuICAgICAgICAvLyBpbnN0YW5jZSwgcHJldmVudGluZyB0
aGUgaW5zdGFuY2UgZnJvbSBiZWluZyBnYXJiYWdlIGNvbGxlY3RlZCwgYW5kIHRoYXQgd291bGQg
YmUgYmFkXG4gICAgICAgIHZhciB3aXRoRXh0cmFzID0gX2V4dGVuZHMoe30sIHByb3BzKTtcbiAg
ICAgICAgaWYgKHdpdGhSZWYpIHdpdGhFeHRyYXMucmVmID0gdGhpcy5zZXRXcmFwcGVkSW5zdGFu
Y2U7XG4gICAgICAgIGlmIChyZW5kZXJDb3VudFByb3ApIHdpdGhFeHRyYXNbcmVuZGVyQ291bnRQ
cm9wXSA9IHRoaXMucmVuZGVyQ291bnQrKztcbiAgICAgICAgaWYgKHRoaXMucHJvcHNNb2RlICYm
IHRoaXMuc3Vic2NyaXB0aW9uKSB3aXRoRXh0cmFzW3N1YnNjcmlwdGlvbktleV0gPSB0aGlzLnN1
YnNjcmlwdGlvbjtcbiAgICAgICAgcmV0dXJuIHdpdGhFeHRyYXM7XG4gICAgICB9O1xuXG4gICAg
ICBDb25uZWN0LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAg
IHZhciBzZWxlY3RvciA9IHRoaXMuc2VsZWN0b3I7XG4gICAgICAgIHNlbGVjdG9yLnNob3VsZENv
bXBvbmVudFVwZGF0ZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChzZWxlY3Rvci5lcnJvcikge1xu
ICAgICAgICAgIHRocm93IHNlbGVjdG9yLmVycm9yO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAg
ICAgIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX3JlYWN0X19bXCJj
cmVhdGVFbGVtZW50XCJdKShXcmFwcGVkQ29tcG9uZW50LCB0aGlzLmFkZEV4dHJhUHJvcHMoc2Vs
ZWN0b3IucHJvcHMpKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIENvbm5l
Y3Q7XG4gICAgfShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfcmVhY3RfX1tcIkNvbXBvbmVu
dFwiXSk7XG5cbiAgICBDb25uZWN0LldyYXBwZWRDb21wb25lbnQgPSBXcmFwcGVkQ29tcG9uZW50
O1xuICAgIENvbm5lY3QuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTtcbiAgICBDb25uZWN0LmNo
aWxkQ29udGV4dFR5cGVzID0gY2hpbGRDb250ZXh0VHlwZXM7XG4gICAgQ29ubmVjdC5jb250ZXh0
VHlwZXMgPSBjb250ZXh0VHlwZXM7XG4gICAgQ29ubmVjdC5wcm9wVHlwZXMgPSBjb250ZXh0VHlw
ZXM7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmNvbXBvbmVu
dFdpbGxVcGRhdGUgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVXBkYXRlKCkge1xuICAgICAgICB2
YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgICAvLyBXZSBhcmUgaG90IHJlbG9hZGluZyFcbiAg
ICAgICAgaWYgKHRoaXMudmVyc2lvbiAhPT0gdmVyc2lvbikge1xuICAgICAgICAgIHRoaXMudmVy
c2lvbiA9IHZlcnNpb247XG4gICAgICAgICAgdGhpcy5pbml0U2VsZWN0b3IoKTtcblxuICAgICAg
ICAgIC8vIElmIGFueSBjb25uZWN0ZWQgZGVzY2VuZGFudHMgZG9uJ3QgaG90IHJlbG9hZCAoYW5k
IHJlc3Vic2NyaWJlIGluIHRoZSBwcm9jZXNzKSwgdGhlaXJcbiAgICAgICAgICAvLyBsaXN0ZW5l
cnMgd2lsbCBiZSBsb3N0IHdoZW4gd2UgdW5zdWJzY3JpYmUuIFVuZm9ydHVuYXRlbHksIGJ5IGNv
cHlpbmcgb3ZlciBhbGxcbiAgICAgICAgICAvLyBsaXN0ZW5lcnMsIHRoaXMgZG9lcyBtZWFuIHRo
YXQgdGhlIG9sZCB2ZXJzaW9ucyBvZiBjb25uZWN0ZWQgZGVzY2VuZGFudHMgd2lsbCBzdGlsbCBi
ZVxuICAgICAgICAgIC8vIG5vdGlmaWVkIG9mIHN0YXRlIGNoYW5nZXM7IGhvd2V2ZXIsIHRoZWly
IG9uU3RhdGVDaGFuZ2UgZnVuY3Rpb24gaXMgYSBuby1vcCBzbyB0aGlzXG4gICAgICAgICAgLy8g
aXNuJ3QgYSBodWdlIGRlYWwuXG4gICAgICAgICAgdmFyIG9sZExpc3RlbmVycyA9IFtdO1xuXG4g
ICAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICBvbGRMaXN0ZW5l
cnMgPSB0aGlzLnN1YnNjcmlwdGlvbi5saXN0ZW5lcnMuZ2V0KCk7XG4gICAgICAgICAgICB0aGlz
LnN1YnNjcmlwdGlvbi50cnlVbnN1YnNjcmliZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0
aGlzLmluaXRTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICBpZiAoc2hvdWxkSGFuZGxlU3RhdGVD
aGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi50cnlTdWJzY3JpYmUoKTtc
biAgICAgICAgICAgIG9sZExpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uIChsaXN0ZW5lcikge1xu
ICAgICAgICAgICAgICByZXR1cm4gX3RoaXMyLnN1YnNjcmlwdGlvbi5saXN0ZW5lcnMuc3Vic2Ny
aWJlKGxpc3RlbmVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxu
ICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X2hvaXN0X25vbl9yZWFjdF9zdGF0aWNzX19fZGVmYXVsdCgpKENvbm5lY3QsIFdyYXBwZWRDb21w
b25lbnQpO1xuICB9O1xufVxuXG4vKioqLyB9KSxcbi8qIDkyICovXG4vKioqLyAoZnVuY3Rpb24o
bW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwi
dXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGltbXV0YWJsZSkgKi8gX193ZWJwYWNr
X2V4cG9ydHNfX1tcImFcIl0gPSB3cmFwTWFwVG9Qcm9wc0NvbnN0YW50O1xuLyogdW51c2VkIGhh
cm1vbnkgZXhwb3J0IGdldERlcGVuZHNPbk93blByb3BzICovXG4vKiBoYXJtb255IGV4cG9ydCAo
aW1tdXRhYmxlKSAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYlwiXSA9IHdyYXBNYXBUb1Byb3Bz
RnVuYztcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfX3V0aWxzX3ZlcmlmeVBsYWluT2JqZWN0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkzKTtc
blxuXG5mdW5jdGlvbiB3cmFwTWFwVG9Qcm9wc0NvbnN0YW50KGdldENvbnN0YW50KSB7XG4gIHJl
dHVybiBmdW5jdGlvbiBpbml0Q29uc3RhbnRTZWxlY3RvcihkaXNwYXRjaCwgb3B0aW9ucykge1xu
ICAgIHZhciBjb25zdGFudCA9IGdldENvbnN0YW50KGRpc3BhdGNoLCBvcHRpb25zKTtcblxuICAg
IGZ1bmN0aW9uIGNvbnN0YW50U2VsZWN0b3IoKSB7XG4gICAgICByZXR1cm4gY29uc3RhbnQ7XG4g
ICAgfVxuICAgIGNvbnN0YW50U2VsZWN0b3IuZGVwZW5kc09uT3duUHJvcHMgPSBmYWxzZTtcbiAg
ICByZXR1cm4gY29uc3RhbnRTZWxlY3RvcjtcbiAgfTtcbn1cblxuLy8gZGVwZW5kc09uT3duUHJv
cHMgaXMgdXNlZCBieSBjcmVhdGVNYXBUb1Byb3BzUHJveHkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIg
dG8gcGFzcyBwcm9wcyBhcyBhcmdzXG4vLyB0byB0aGUgbWFwVG9Qcm9wcyBmdW5jdGlvbiBiZWlu
ZyB3cmFwcGVkLiBJdCBpcyBhbHNvIHVzZWQgYnkgbWFrZVB1cmVQcm9wc1NlbGVjdG9yIHRvIGRl
dGVybWluZVxuLy8gd2hldGhlciBtYXBUb1Byb3BzIG5lZWRzIHRvIGJlIGludm9rZWQgd2hlbiBw
cm9wcyBoYXZlIGNoYW5nZWQuXG4vLyBcbi8vIEEgbGVuZ3RoIG9mIG9uZSBzaWduYWxzIHRoYXQg
bWFwVG9Qcm9wcyBkb2VzIG5vdCBkZXBlbmQgb24gcHJvcHMgZnJvbSB0aGUgcGFyZW50IGNvbXBv
bmVudC5cbi8vIEEgbGVuZ3RoIG9mIHplcm8gaXMgYXNzdW1lZCB0byBtZWFuIG1hcFRvUHJvcHMg
aXMgZ2V0dGluZyBhcmdzIHZpYSBhcmd1bWVudHMgb3IgLi4uYXJncyBhbmRcbi8vIHRoZXJlZm9y
ZSBub3QgcmVwb3J0aW5nIGl0cyBsZW5ndGggYWNjdXJhdGVseS4uXG5mdW5jdGlvbiBnZXREZXBl
bmRzT25Pd25Qcm9wcyhtYXBUb1Byb3BzKSB7XG4gIHJldHVybiBtYXBUb1Byb3BzLmRlcGVuZHNP
bk93blByb3BzICE9PSBudWxsICYmIG1hcFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMgIT09IHVu
ZGVmaW5lZCA/IEJvb2xlYW4obWFwVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcykgOiBtYXBUb1By
b3BzLmxlbmd0aCAhPT0gMTtcbn1cblxuLy8gVXNlZCBieSB3aGVuTWFwU3RhdGVUb1Byb3BzSXNG
dW5jdGlvbiBhbmQgd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzRnVuY3Rpb24sXG4vLyB0aGlzIGZ1
bmN0aW9uIHdyYXBzIG1hcFRvUHJvcHMgaW4gYSBwcm94eSBmdW5jdGlvbiB3aGljaCBkb2VzIHNl
dmVyYWwgdGhpbmdzOlxuLy8gXG4vLyAgKiBEZXRlY3RzIHdoZXRoZXIgdGhlIG1hcFRvUHJvcHMg
ZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGRlcGVuZHMgb24gcHJvcHMsIHdoaWNoXG4vLyAgICBpcyB1
c2VkIGJ5IHNlbGVjdG9yRmFjdG9yeSB0byBkZWNpZGUgaWYgaXQgc2hvdWxkIHJlaW52b2tlIG9u
IHByb3BzIGNoYW5nZXMuXG4vLyAgICBcbi8vICAqIE9uIGZpcnN0IGNhbGwsIGhhbmRsZXMgbWFw
VG9Qcm9wcyBpZiByZXR1cm5zIGFub3RoZXIgZnVuY3Rpb24sIGFuZCB0cmVhdHMgdGhhdFxuLy8g
ICAgbmV3IGZ1bmN0aW9uIGFzIHRoZSB0cnVlIG1hcFRvUHJvcHMgZm9yIHN1YnNlcXVlbnQgY2Fs
bHMuXG4vLyAgICBcbi8vICAqIE9uIGZpcnN0IGNhbGwsIHZlcmlmaWVzIHRoZSBmaXJzdCByZXN1
bHQgaXMgYSBwbGFpbiBvYmplY3QsIGluIG9yZGVyIHRvIHdhcm5cbi8vICAgIHRoZSBkZXZlbG9w
ZXIgdGhhdCB0aGVpciBtYXBUb1Byb3BzIGZ1bmN0aW9uIGlzIG5vdCByZXR1cm5pbmcgYSB2YWxp
ZCByZXN1bHQuXG4vLyAgICBcbmZ1bmN0aW9uIHdyYXBNYXBUb1Byb3BzRnVuYyhtYXBUb1Byb3Bz
LCBtZXRob2ROYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbiBpbml0UHJveHlTZWxlY3RvcihkaXNw
YXRjaCwgX3JlZikge1xuICAgIHZhciBkaXNwbGF5TmFtZSA9IF9yZWYuZGlzcGxheU5hbWU7XG5c
biAgICB2YXIgcHJveHkgPSBmdW5jdGlvbiBtYXBUb1Byb3BzUHJveHkoc3RhdGVPckRpc3BhdGNo
LCBvd25Qcm9wcykge1xuICAgICAgcmV0dXJuIHByb3h5LmRlcGVuZHNPbk93blByb3BzID8gcHJv
eHkubWFwVG9Qcm9wcyhzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKSA6IHByb3h5Lm1hcFRvUHJv
cHMoc3RhdGVPckRpc3BhdGNoKTtcbiAgICB9O1xuXG4gICAgLy8gYWxsb3cgZGV0ZWN0RmFjdG9y
eUFuZFZlcmlmeSB0byBnZXQgb3duUHJvcHNcbiAgICBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA9
IHRydWU7XG5cbiAgICBwcm94eS5tYXBUb1Byb3BzID0gZnVuY3Rpb24gZGV0ZWN0RmFjdG9yeUFu
ZFZlcmlmeShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKSB7XG4gICAgICBwcm94eS5tYXBUb1By
b3BzID0gbWFwVG9Qcm9wcztcbiAgICAgIHByb3h5LmRlcGVuZHNPbk93blByb3BzID0gZ2V0RGVw
ZW5kc09uT3duUHJvcHMobWFwVG9Qcm9wcyk7XG4gICAgICB2YXIgcHJvcHMgPSBwcm94eShzdGF0
ZU9yRGlzcGF0Y2gsIG93blByb3BzKTtcblxuICAgICAgaWYgKHR5cGVvZiBwcm9wcyA9PT0gJ2Z1
bmN0aW9uJykge1xuICAgICAgICBwcm94eS5tYXBUb1Byb3BzID0gcHJvcHM7XG4gICAgICAgIHBy
b3h5LmRlcGVuZHNPbk93blByb3BzID0gZ2V0RGVwZW5kc09uT3duUHJvcHMocHJvcHMpO1xuICAg
ICAgICBwcm9wcyA9IHByb3h5KHN0YXRlT3JEaXNwYXRjaCwgb3duUHJvcHMpO1xuICAgICAgfVxu
XG4gICAgICBpZiAoZmFsc2UpIHZlcmlmeVBsYWluT2JqZWN0KHByb3BzLCBkaXNwbGF5TmFtZSwg
bWV0aG9kTmFtZSk7XG5cbiAgICAgIHJldHVybiBwcm9wcztcbiAgICB9O1xuXG4gICAgcmV0dXJu
IHByb3h5O1xuICB9O1xufVxuXG4vKioqLyB9KSxcbi8qIDkzICovXG4vKioqLyAoZnVuY3Rpb24o
bW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwi
dXNlIHN0cmljdFwiO1xuLyogdW51c2VkIGhhcm1vbnkgZXhwb3J0IGRlZmF1bHQgKi9cbi8qIGhh
cm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfbG9kYXNoX2Vz
X2lzUGxhaW5PYmplY3RfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNDgpO1xuLyogaGFybW9ueSBp
bXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fd2FybmluZ19fID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg0OSk7XG5cblxuXG5mdW5jdGlvbiB2ZXJpZnlQbGFpbk9iamVjdCh2
YWx1ZSwgZGlzcGxheU5hbWUsIG1ldGhvZE5hbWUpIHtcbiAgaWYgKCFPYmplY3QoX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX2xvZGFzaF9lc19pc1BsYWluT2JqZWN0X19bXCJhXCIgLyogZGVm
YXVsdCAqL10pKHZhbHVlKSkge1xuICAgIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfX3dhcm5pbmdfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkobWV0aG9kTmFtZSArICcoKSBpbiAn
ICsgZGlzcGxheU5hbWUgKyAnIG11c3QgcmV0dXJuIGEgcGxhaW4gb2JqZWN0LiBJbnN0ZWFkIHJl
Y2VpdmVkICcgKyB2YWx1ZSArICcuJyk7XG4gIH1cbn1cblxuLyoqKi8gfSksXG4vKiA5NCAqL1xu
LyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfXyA9IF9fd2VicGFja19yZXF1aXJlX18o
OSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X3JlYWN0X19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfcmVhY3RfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8xX2NsYXNzbmFtZXNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNTAp
O1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9j
bGFzc25hbWVzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fKTtcbnZhciBfY3JlYXRlQ2xhc3M9ZnVuY3Rpb24o
KXtmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCxwcm9wcyl7Zm9yKHZhciBpPTA7aTxw
cm9wcy5sZW5ndGg7aSsrKXt2YXIgZGVzY3JpcHRvcj1wcm9wc1tpXTtkZXNjcmlwdG9yLmVudW1l
cmFibGU9ZGVzY3JpcHRvci5lbnVtZXJhYmxlfHxmYWxzZTtkZXNjcmlwdG9yLmNvbmZpZ3VyYWJs
ZT10cnVlO2lmKFwidmFsdWVcImluIGRlc2NyaXB0b3IpZGVzY3JpcHRvci53cml0YWJsZT10cnVl
O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsZGVzY3JpcHRvci5rZXksZGVzY3JpcHRvcik7
fX1yZXR1cm4gZnVuY3Rpb24oQ29uc3RydWN0b3IscHJvdG9Qcm9wcyxzdGF0aWNQcm9wcyl7aWYo
cHJvdG9Qcm9wcylkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSxwcm90b1By
b3BzKTtpZihzdGF0aWNQcm9wcylkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLHN0YXRpY1By
b3BzKTtyZXR1cm4gQ29uc3RydWN0b3I7fTt9KCk7ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGlu
c3RhbmNlLENvbnN0cnVjdG9yKXtpZighKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3Ip
KXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9u
XCIpO319ZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZixjYWxsKXtpZigh
c2VsZil7dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFs
aXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO31yZXR1cm4gY2FsbCYmKHR5cGVv
ZiBjYWxsPT09XCJvYmplY3RcInx8dHlwZW9mIGNhbGw9PT1cImZ1bmN0aW9uXCIpP2NhbGw6c2Vs
Zjt9ZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLHN1cGVyQ2xhc3Mpe2lmKHR5cGVvZiBzdXBl
ckNsYXNzIT09XCJmdW5jdGlvblwiJiZzdXBlckNsYXNzIT09bnVsbCl7dGhyb3cgbmV3IFR5cGVF
cnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9u
LCBub3QgXCIrdHlwZW9mIHN1cGVyQ2xhc3MpO31zdWJDbGFzcy5wcm90b3R5cGU9T2JqZWN0LmNy
ZWF0ZShzdXBlckNsYXNzJiZzdXBlckNsYXNzLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVl
OnN1YkNsYXNzLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1
ZX19KTtpZihzdXBlckNsYXNzKU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90
eXBlT2Yoc3ViQ2xhc3Msc3VwZXJDbGFzcyk6c3ViQ2xhc3MuX19wcm90b19fPXN1cGVyQ2xhc3M7
fXZhciBUb2RvVGV4dElucHV0PWZ1bmN0aW9uKF9Db21wb25lbnQpe19pbmhlcml0cyhUb2RvVGV4
dElucHV0LF9Db21wb25lbnQpO2Z1bmN0aW9uIFRvZG9UZXh0SW5wdXQoKXt2YXIgX3JlZjt2YXIg
X3RlbXAsX3RoaXMsX3JldDtfY2xhc3NDYWxsQ2hlY2sodGhpcyxUb2RvVGV4dElucHV0KTtmb3Io
dmFyIF9sZW49YXJndW1lbnRzLmxlbmd0aCxhcmdzPUFycmF5KF9sZW4pLF9rZXk9MDtfa2V5PF9s
ZW47X2tleSsrKXthcmdzW19rZXldPWFyZ3VtZW50c1tfa2V5XTt9cmV0dXJuIF9yZXQ9KF90ZW1w
PShfdGhpcz1fcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLChfcmVmPVRvZG9UZXh0SW5w
dXQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoVG9kb1RleHRJbnB1dCkpLmNhbGwu
YXBwbHkoX3JlZixbdGhpc10uY29uY2F0KGFyZ3MpKSksX3RoaXMpLF90aGlzLnN0YXRlPXt0ZXh0
Ol90aGlzLnByb3BzLnRleHR8fCcnfSxfdGhpcy5oYW5kbGVTdWJtaXQ9ZnVuY3Rpb24oZSl7dmFy
IHRleHQ9ZS50YXJnZXQudmFsdWUudHJpbSgpO2lmKGUud2hpY2g9PT0xMyl7X3RoaXMucHJvcHMu
b25TYXZlKHRleHQpO2lmKF90aGlzLnByb3BzLm5ld1RvZG8pe190aGlzLnNldFN0YXRlKHt0ZXh0
OicnfSk7fX19LF90aGlzLmhhbmRsZUNoYW5nZT1mdW5jdGlvbihlKXtfdGhpcy5zZXRTdGF0ZSh7
dGV4dDplLnRhcmdldC52YWx1ZX0pO30sX3RoaXMuaGFuZGxlQmx1cj1mdW5jdGlvbihlKXtpZigh
X3RoaXMucHJvcHMubmV3VG9kbyl7X3RoaXMucHJvcHMub25TYXZlKGUudGFyZ2V0LnZhbHVlKTt9
fSxfdGVtcCksX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oX3RoaXMsX3JldCk7fV9jcmVhdGVD
bGFzcyhUb2RvVGV4dElucHV0LFt7a2V5OidyZW5kZXInLHZhbHVlOmZ1bmN0aW9uIHJlbmRlcigp
e3JldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0LmEuY3Jl
YXRlRWxlbWVudCgnaW5wdXQnLHtjbGFzc05hbWU6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8x
X2NsYXNzbmFtZXNfX19kZWZhdWx0KCkoe2VkaXQ6dGhpcy5wcm9wcy5lZGl0aW5nLCduZXctdG9k
byc6dGhpcy5wcm9wcy5uZXdUb2RvfSksdHlwZTondGV4dCcscGxhY2Vob2xkZXI6dGhpcy5wcm9w
cy5wbGFjZWhvbGRlcixhdXRvRm9jdXM6J3RydWUnLHZhbHVlOnRoaXMuc3RhdGUudGV4dCxvbkJs
dXI6dGhpcy5oYW5kbGVCbHVyLG9uQ2hhbmdlOnRoaXMuaGFuZGxlQ2hhbmdlLG9uS2V5RG93bjp0
aGlzLmhhbmRsZVN1Ym1pdH0pO319XSk7cmV0dXJuIFRvZG9UZXh0SW5wdXQ7fShfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIkNvbXBvbmVudFwiXSk7VG9kb1RleHRJbnB1dC5w
cm9wVHlwZXM9e29uU2F2ZTpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlBy
b3BUeXBlc1wiXS5mdW5jLmlzUmVxdWlyZWQsdGV4dDpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5zdHJpbmcscGxhY2Vob2xkZXI6X19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uc3RyaW5nLGVkaXRpbmc6X19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uYm9vbCxuZXdU
b2RvOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLmJv
b2x9Oy8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFc
Il0gPSAoVG9kb1RleHRJbnB1dCk7XG5cbi8qKiovIH0pLFxuLyogOTUgKi9cbi8qKiovIChmdW5j
dGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJw
YWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiYlwiLCBmdW5jdGlvbigpIHsg
cmV0dXJuIFNIT1dfQUxMOyB9KTtcbi8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dl
YnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJjXCIsIGZ1bmN0aW9uKCkg
eyByZXR1cm4gU0hPV19DT01QTEVURUQ7IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcp
ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImFcIiwgZnVu
Y3Rpb24oKSB7IHJldHVybiBTSE9XX0FDVElWRTsgfSk7XG52YXIgU0hPV19BTEw9J3Nob3dfYWxs
Jzt2YXIgU0hPV19DT01QTEVURUQ9J3Nob3dfY29tcGxldGVkJzt2YXIgU0hPV19BQ1RJVkU9J3No
b3dfYWN0aXZlJztcblxuLyoqKi8gfSksXG4vKiA5NiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVs
ZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBz
dHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWly
ZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJhXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gQURE
X1RPRE87IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1
aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBE
RUxFVEVfVE9ETzsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNr
X3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZlwiLCBmdW5jdGlvbigpIHsgcmV0
dXJuIEVESVRfVE9ETzsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJw
YWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZFwiLCBmdW5jdGlvbigpIHsg
cmV0dXJuIENPTVBMRVRFX1RPRE87IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICov
IF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImNcIiwgZnVuY3Rp
b24oKSB7IHJldHVybiBDT01QTEVURV9BTEw7IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRp
bmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImJcIiwg
ZnVuY3Rpb24oKSB7IHJldHVybiBDTEVBUl9DT01QTEVURUQ7IH0pO1xudmFyIEFERF9UT0RPPSdB
RERfVE9ETyc7dmFyIERFTEVURV9UT0RPPSdERUxFVEVfVE9ETyc7dmFyIEVESVRfVE9ETz0nRURJ
VF9UT0RPJzt2YXIgQ09NUExFVEVfVE9ETz0nQ09NUExFVEVfVE9ETyc7dmFyIENPTVBMRVRFX0FM
TD0nQ09NUExFVEVfQUxMJzt2YXIgQ0xFQVJfQ09NUExFVEVEPSdDTEVBUl9DT01QTEVURUQnO1xu
XG4vKioqLyB9KSxcbi8qIDk3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbl9fd2VicGFja19yZXF1aXJlX18oOTgpO1xubW9kdWxl
LmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMyk7XG5cblxuLyoqKi8gfSksXG4vKiA5
OCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8vIEByZW1vdmUtb24tZWplY3QtYmVnaW5cbi8qKlxu
ICogQ29weXJpZ2h0IChjKSAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuLy8gQHJlbW92ZS1vbi1lamVjdC1lbmRcblxuXG5p
ZiAodHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIFJlamVjdGlvbiB0cmFj
a2luZyBwcmV2ZW50cyBhIGNvbW1vbiBpc3N1ZSB3aGVyZSBSZWFjdCBnZXRzIGludG8gYW5cbiAg
Ly8gaW5jb25zaXN0ZW50IHN0YXRlIGR1ZSB0byBhbiBlcnJvciwgYnV0IGl0IGdldHMgc3dhbGxv
d2VkIGJ5IGEgUHJvbWlzZSxcbiAgLy8gYW5kIHRoZSB1c2VyIGhhcyBubyBpZGVhIHdoYXQgY2F1
c2VzIFJlYWN0J3MgZXJyYXRpYyBmdXR1cmUgYmVoYXZpb3IuXG4gIF9fd2VicGFja19yZXF1aXJl
X18oOTkpLmVuYWJsZSgpO1xuICB3aW5kb3cuUHJvbWlzZSA9IF9fd2VicGFja19yZXF1aXJlX18o
MTAxKTtcbn1cblxuLy8gZmV0Y2goKSBwb2x5ZmlsbCBmb3IgbWFraW5nIEFQSSBjYWxscy5cbl9f
d2VicGFja19yZXF1aXJlX18oMTAyKTtcblxuLy8gT2JqZWN0LmFzc2lnbigpIGlzIGNvbW1vbmx5
IHVzZWQgd2l0aCBSZWFjdC5cbi8vIEl0IHdpbGwgdXNlIHRoZSBuYXRpdmUgaW1wbGVtZW50YXRp
b24gaWYgaXQncyBwcmVzZW50IGFuZCBpc24ndCBidWdneS5cbk9iamVjdC5hc3NpZ24gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDMpO1xuXG5cbi8qKiovIH0pLFxuLyogOTkgKi9cbi8qKiovIChmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3Ry
aWN0XCI7XG5cblxudmFyIFByb21pc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUxKTtcblxudmFy
IERFRkFVTFRfV0hJVEVMSVNUID0gW1xuICBSZWZlcmVuY2VFcnJvcixcbiAgVHlwZUVycm9yLFxu
ICBSYW5nZUVycm9yXG5dO1xuXG52YXIgZW5hYmxlZCA9IGZhbHNlO1xuZXhwb3J0cy5kaXNhYmxl
ID0gZGlzYWJsZTtcbmZ1bmN0aW9uIGRpc2FibGUoKSB7XG4gIGVuYWJsZWQgPSBmYWxzZTtcbiAg
UHJvbWlzZS5fNDcgPSBudWxsO1xuICBQcm9taXNlLl83MSA9IG51bGw7XG59XG5cbmV4cG9ydHMu
ZW5hYmxlID0gZW5hYmxlO1xuZnVuY3Rpb24gZW5hYmxlKG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9
IG9wdGlvbnMgfHwge307XG4gIGlmIChlbmFibGVkKSBkaXNhYmxlKCk7XG4gIGVuYWJsZWQgPSB0
cnVlO1xuICB2YXIgaWQgPSAwO1xuICB2YXIgZGlzcGxheUlkID0gMDtcbiAgdmFyIHJlamVjdGlv
bnMgPSB7fTtcbiAgUHJvbWlzZS5fNDcgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgIGlmIChc
biAgICAgIHByb21pc2UuXzgzID09PSAyICYmIC8vIElTIFJFSkVDVEVEXG4gICAgICByZWplY3Rp
b25zW3Byb21pc2UuXzU2XVxuICAgICkge1xuICAgICAgaWYgKHJlamVjdGlvbnNbcHJvbWlzZS5f
NTZdLmxvZ2dlZCkge1xuICAgICAgICBvbkhhbmRsZWQocHJvbWlzZS5fNTYpO1xuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHJlamVjdGlvbnNbcHJvbWlzZS5fNTZdLnRpbWVv
dXQpO1xuICAgICAgfVxuICAgICAgZGVsZXRlIHJlamVjdGlvbnNbcHJvbWlzZS5fNTZdO1xuICAg
IH1cbiAgfTtcbiAgUHJvbWlzZS5fNzEgPSBmdW5jdGlvbiAocHJvbWlzZSwgZXJyKSB7XG4gICAg
aWYgKHByb21pc2UuXzc1ID09PSAwKSB7IC8vIG5vdCB5ZXQgaGFuZGxlZFxuICAgICAgcHJvbWlz
ZS5fNTYgPSBpZCsrO1xuICAgICAgcmVqZWN0aW9uc1twcm9taXNlLl81Nl0gPSB7XG4gICAgICAg
IGRpc3BsYXlJZDogbnVsbCxcbiAgICAgICAgZXJyb3I6IGVycixcbiAgICAgICAgdGltZW91dDog
c2V0VGltZW91dChcbiAgICAgICAgICBvblVuaGFuZGxlZC5iaW5kKG51bGwsIHByb21pc2UuXzU2
KSxcbiAgICAgICAgICAvLyBGb3IgcmVmZXJlbmNlIGVycm9ycyBhbmQgdHlwZSBlcnJvcnMsIHRo
aXMgYWxtb3N0IGFsd2F5c1xuICAgICAgICAgIC8vIG1lYW5zIHRoZSBwcm9ncmFtbWVyIG1hZGUg
YSBtaXN0YWtlLCBzbyBsb2cgdGhlbSBhZnRlciBqdXN0XG4gICAgICAgICAgLy8gMTAwbXNcbiAg
ICAgICAgICAvLyBvdGhlcndpc2UsIHdhaXQgMiBzZWNvbmRzIHRvIHNlZSBpZiB0aGV5IGdldCBo
YW5kbGVkXG4gICAgICAgICAgbWF0Y2hXaGl0ZWxpc3QoZXJyLCBERUZBVUxUX1dISVRFTElTVClc
biAgICAgICAgICAgID8gMTAwXG4gICAgICAgICAgICA6IDIwMDBcbiAgICAgICAgKSxcbiAgICAg
ICAgbG9nZ2VkOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gIH07XG4gIGZ1bmN0aW9uIG9uVW5o
YW5kbGVkKGlkKSB7XG4gICAgaWYgKFxuICAgICAgb3B0aW9ucy5hbGxSZWplY3Rpb25zIHx8XG4g
ICAgICBtYXRjaFdoaXRlbGlzdChcbiAgICAgICAgcmVqZWN0aW9uc1tpZF0uZXJyb3IsXG4gICAg
ICAgIG9wdGlvbnMud2hpdGVsaXN0IHx8IERFRkFVTFRfV0hJVEVMSVNUXG4gICAgICApXG4gICAg
KSB7XG4gICAgICByZWplY3Rpb25zW2lkXS5kaXNwbGF5SWQgPSBkaXNwbGF5SWQrKztcbiAgICAg
IGlmIChvcHRpb25zLm9uVW5oYW5kbGVkKSB7XG4gICAgICAgIHJlamVjdGlvbnNbaWRdLmxvZ2dl
ZCA9IHRydWU7XG4gICAgICAgIG9wdGlvbnMub25VbmhhbmRsZWQoXG4gICAgICAgICAgcmVqZWN0
aW9uc1tpZF0uZGlzcGxheUlkLFxuICAgICAgICAgIHJlamVjdGlvbnNbaWRdLmVycm9yXG4gICAg
ICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3Rpb25zW2lkXS5sb2dnZWQgPSB0
cnVlO1xuICAgICAgICBsb2dFcnJvcihcbiAgICAgICAgICByZWplY3Rpb25zW2lkXS5kaXNwbGF5
SWQsXG4gICAgICAgICAgcmVqZWN0aW9uc1tpZF0uZXJyb3JcbiAgICAgICAgKTtcbiAgICAgIH1c
biAgICB9XG4gIH1cbiAgZnVuY3Rpb24gb25IYW5kbGVkKGlkKSB7XG4gICAgaWYgKHJlamVjdGlv
bnNbaWRdLmxvZ2dlZCkge1xuICAgICAgaWYgKG9wdGlvbnMub25IYW5kbGVkKSB7XG4gICAgICAg
IG9wdGlvbnMub25IYW5kbGVkKHJlamVjdGlvbnNbaWRdLmRpc3BsYXlJZCwgcmVqZWN0aW9uc1tp
ZF0uZXJyb3IpO1xuICAgICAgfSBlbHNlIGlmICghcmVqZWN0aW9uc1tpZF0ub25VbmhhbmRsZWQp
IHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdQcm9taXNlIFJlamVjdGlvbiBI
YW5kbGVkIChpZDogJyArIHJlamVjdGlvbnNbaWRdLmRpc3BsYXlJZCArICcpOidcbiAgICAgICAg
KTtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICcgIFRoaXMgbWVhbnMgeW91IGNh
biBpZ25vcmUgYW55IHByZXZpb3VzIG1lc3NhZ2VzIG9mIHRoZSBmb3JtIFwiUG9zc2libGUgVW5o
YW5kbGVkIFByb21pc2UgUmVqZWN0aW9uXCIgd2l0aCBpZCAnICtcbiAgICAgICAgICByZWplY3Rp
b25zW2lkXS5kaXNwbGF5SWQgKyAnLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1c
bn1cblxuZnVuY3Rpb24gbG9nRXJyb3IoaWQsIGVycm9yKSB7XG4gIGNvbnNvbGUud2FybignUG9z
c2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uIChpZDogJyArIGlkICsgJyk6Jyk7XG4g
IHZhciBlcnJTdHIgPSAoZXJyb3IgJiYgKGVycm9yLnN0YWNrIHx8IGVycm9yKSkgKyAnJztcbiAg
ZXJyU3RyLnNwbGl0KCdcXG4nKS5mb3JFYWNoKGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgY29uc29s
ZS53YXJuKCcgICcgKyBsaW5lKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoV2hpdGVsaXN0
KGVycm9yLCBsaXN0KSB7XG4gIHJldHVybiBsaXN0LnNvbWUoZnVuY3Rpb24gKGNscykge1xuICAg
IHJldHVybiBlcnJvciBpbnN0YW5jZW9mIGNscztcbiAgfSk7XG59XG5cbi8qKiovIH0pLFxuLyog
MTAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1
bmN0aW9uKGdsb2JhbCkge1xuXG4vLyBVc2UgdGhlIGZhc3Rlc3QgbWVhbnMgcG9zc2libGUgdG8g
ZXhlY3V0ZSBhIHRhc2sgaW4gaXRzIG93biB0dXJuLCB3aXRoXG4vLyBwcmlvcml0eSBvdmVyIG90
aGVyIGV2ZW50cyBpbmNsdWRpbmcgSU8sIGFuaW1hdGlvbiwgcmVmbG93LCBhbmQgcmVkcmF3XG4v
LyBldmVudHMgaW4gYnJvd3NlcnMuXG4vL1xuLy8gQW4gZXhjZXB0aW9uIHRocm93biBieSBhIHRh
c2sgd2lsbCBwZXJtYW5lbnRseSBpbnRlcnJ1cHQgdGhlIHByb2Nlc3Npbmcgb2Zcbi8vIHN1YnNl
cXVlbnQgdGFza3MuIFRoZSBoaWdoZXIgbGV2ZWwgYGFzYXBgIGZ1bmN0aW9uIGVuc3VyZXMgdGhh
dCBpZiBhblxuLy8gZXhjZXB0aW9uIGlzIHRocm93biBieSBhIHRhc2ssIHRoYXQgdGhlIHRhc2sg
cXVldWUgd2lsbCBjb250aW51ZSBmbHVzaGluZyBhc1xuLy8gc29vbiBhcyBwb3NzaWJsZSwgYnV0
IGlmIHlvdSB1c2UgYHJhd0FzYXBgIGRpcmVjdGx5LCB5b3UgYXJlIHJlc3BvbnNpYmxlIHRvXG4v
LyBlaXRoZXIgZW5zdXJlIHRoYXQgbm8gZXhjZXB0aW9ucyBhcmUgdGhyb3duIGZyb20geW91ciB0
YXNrLCBvciB0byBtYW51YWxseVxuLy8gY2FsbCBgcmF3QXNhcC5yZXF1ZXN0Rmx1c2hgIGlmIGFu
IGV4Y2VwdGlvbiBpcyB0aHJvd24uXG5tb2R1bGUuZXhwb3J0cyA9IHJhd0FzYXA7XG5mdW5jdGlv
biByYXdBc2FwKHRhc2spIHtcbiAgICBpZiAoIXF1ZXVlLmxlbmd0aCkge1xuICAgICAgICByZXF1
ZXN0Rmx1c2goKTtcbiAgICAgICAgZmx1c2hpbmcgPSB0cnVlO1xuICAgIH1cbiAgICAvLyBFcXVp
dmFsZW50IHRvIHB1c2gsIGJ1dCBhdm9pZHMgYSBmdW5jdGlvbiBjYWxsLlxuICAgIHF1ZXVlW3F1
ZXVlLmxlbmd0aF0gPSB0YXNrO1xufVxuXG52YXIgcXVldWUgPSBbXTtcbi8vIE9uY2UgYSBmbHVz
aCBoYXMgYmVlbiByZXF1ZXN0ZWQsIG5vIGZ1cnRoZXIgY2FsbHMgdG8gYHJlcXVlc3RGbHVzaGAg
YXJlXG4vLyBuZWNlc3NhcnkgdW50aWwgdGhlIG5leHQgYGZsdXNoYCBjb21wbGV0ZXMuXG52YXIg
Zmx1c2hpbmcgPSBmYWxzZTtcbi8vIGByZXF1ZXN0Rmx1c2hgIGlzIGFuIGltcGxlbWVudGF0aW9u
LXNwZWNpZmljIG1ldGhvZCB0aGF0IGF0dGVtcHRzIHRvIGtpY2tcbi8vIG9mZiBhIGBmbHVzaGAg
ZXZlbnQgYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4gYGZsdXNoYCB3aWxsIGF0dGVtcHQgdG8gZXho
YXVzdFxuLy8gdGhlIGV2ZW50IHF1ZXVlIGJlZm9yZSB5aWVsZGluZyB0byB0aGUgYnJvd3Nlcidz
IG93biBldmVudCBsb29wLlxudmFyIHJlcXVlc3RGbHVzaDtcbi8vIFRoZSBwb3NpdGlvbiBvZiB0
aGUgbmV4dCB0YXNrIHRvIGV4ZWN1dGUgaW4gdGhlIHRhc2sgcXVldWUuIFRoaXMgaXNcbi8vIHBy
ZXNlcnZlZCBiZXR3ZWVuIGNhbGxzIHRvIGBmbHVzaGAgc28gdGhhdCBpdCBjYW4gYmUgcmVzdW1l
ZCBpZlxuLy8gYSB0YXNrIHRocm93cyBhbiBleGNlcHRpb24uXG52YXIgaW5kZXggPSAwO1xuLy8g
SWYgYSB0YXNrIHNjaGVkdWxlcyBhZGRpdGlvbmFsIHRhc2tzIHJlY3Vyc2l2ZWx5LCB0aGUgdGFz
ayBxdWV1ZSBjYW4gZ3Jvd1xuLy8gdW5ib3VuZGVkLiBUbyBwcmV2ZW50IG1lbW9yeSBleGhhdXN0
aW9uLCB0aGUgdGFzayBxdWV1ZSB3aWxsIHBlcmlvZGljYWxseVxuLy8gdHJ1bmNhdGUgYWxyZWFk
eS1jb21wbGV0ZWQgdGFza3MuXG52YXIgY2FwYWNpdHkgPSAxMDI0O1xuXG4vLyBUaGUgZmx1c2gg
ZnVuY3Rpb24gcHJvY2Vzc2VzIGFsbCB0YXNrcyB0aGF0IGhhdmUgYmVlbiBzY2hlZHVsZWQgd2l0
aFxuLy8gYHJhd0FzYXBgIHVubGVzcyBhbmQgdW50aWwgb25lIG9mIHRob3NlIHRhc2tzIHRocm93
cyBhbiBleGNlcHRpb24uXG4vLyBJZiBhIHRhc2sgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgYGZsdXNo
YCBlbnN1cmVzIHRoYXQgaXRzIHN0YXRlIHdpbGwgcmVtYWluXG4vLyBjb25zaXN0ZW50IGFuZCB3
aWxsIHJlc3VtZSB3aGVyZSBpdCBsZWZ0IG9mZiB3aGVuIGNhbGxlZCBhZ2Fpbi5cbi8vIEhvd2V2
ZXIsIGBmbHVzaGAgZG9lcyBub3QgbWFrZSBhbnkgYXJyYW5nZW1lbnRzIHRvIGJlIGNhbGxlZCBh
Z2FpbiBpZiBhblxuLy8gZXhjZXB0aW9uIGlzIHRocm93bi5cbmZ1bmN0aW9uIGZsdXNoKCkge1xu
ICAgIHdoaWxlIChpbmRleCA8IHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICB2YXIgY3VycmVudElu
ZGV4ID0gaW5kZXg7XG4gICAgICAgIC8vIEFkdmFuY2UgdGhlIGluZGV4IGJlZm9yZSBjYWxsaW5n
IHRoZSB0YXNrLiBUaGlzIGVuc3VyZXMgdGhhdCB3ZSB3aWxsXG4gICAgICAgIC8vIGJlZ2luIGZs
dXNoaW5nIG9uIHRoZSBuZXh0IHRhc2sgdGhlIHRhc2sgdGhyb3dzIGFuIGVycm9yLlxuICAgICAg
ICBpbmRleCA9IGluZGV4ICsgMTtcbiAgICAgICAgcXVldWVbY3VycmVudEluZGV4XS5jYWxsKCk7
XG4gICAgICAgIC8vIFByZXZlbnQgbGVha2luZyBtZW1vcnkgZm9yIGxvbmcgY2hhaW5zIG9mIHJl
Y3Vyc2l2ZSBjYWxscyB0byBgYXNhcGAuXG4gICAgICAgIC8vIElmIHdlIGNhbGwgYGFzYXBgIHdp
dGhpbiB0YXNrcyBzY2hlZHVsZWQgYnkgYGFzYXBgLCB0aGUgcXVldWUgd2lsbFxuICAgICAgICAv
LyBncm93LCBidXQgdG8gYXZvaWQgYW4gTyhuKSB3YWxrIGZvciBldmVyeSB0YXNrIHdlIGV4ZWN1
dGUsIHdlIGRvbid0XG4gICAgICAgIC8vIHNoaWZ0IHRhc2tzIG9mZiB0aGUgcXVldWUgYWZ0ZXIg
dGhleSBoYXZlIGJlZW4gZXhlY3V0ZWQuXG4gICAgICAgIC8vIEluc3RlYWQsIHdlIHBlcmlvZGlj
YWxseSBzaGlmdCAxMDI0IHRhc2tzIG9mZiB0aGUgcXVldWUuXG4gICAgICAgIGlmIChpbmRleCA+
IGNhcGFjaXR5KSB7XG4gICAgICAgICAgICAvLyBNYW51YWxseSBzaGlmdCBhbGwgdmFsdWVzIHN0
YXJ0aW5nIGF0IHRoZSBpbmRleCBiYWNrIHRvIHRoZVxuICAgICAgICAgICAgLy8gYmVnaW5uaW5n
IG9mIHRoZSBxdWV1ZS5cbiAgICAgICAgICAgIGZvciAodmFyIHNjYW4gPSAwLCBuZXdMZW5ndGgg
PSBxdWV1ZS5sZW5ndGggLSBpbmRleDsgc2NhbiA8IG5ld0xlbmd0aDsgc2NhbisrKSB7XG4gICAg
ICAgICAgICAgICAgcXVldWVbc2Nhbl0gPSBxdWV1ZVtzY2FuICsgaW5kZXhdO1xuICAgICAgICAg
ICAgfVxuICAgICAgICAgICAgcXVldWUubGVuZ3RoIC09IGluZGV4O1xuICAgICAgICAgICAgaW5k
ZXggPSAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLmxlbmd0aCA9IDA7XG4gICAgaW5k
ZXggPSAwO1xuICAgIGZsdXNoaW5nID0gZmFsc2U7XG59XG5cbi8vIGByZXF1ZXN0Rmx1c2hgIGlz
IGltcGxlbWVudGVkIHVzaW5nIGEgc3RyYXRlZ3kgYmFzZWQgb24gZGF0YSBjb2xsZWN0ZWQgZnJv
bVxuLy8gZXZlcnkgYXZhaWxhYmxlIFNhdWNlTGFicyBTZWxlbml1bSB3ZWIgZHJpdmVyIHdvcmtl
ciBhdCB0aW1lIG9mIHdyaXRpbmcuXG4vLyBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRz
aGVldHMvZC8xbUctNVVZR3VwNXF4R2RFTVdraFA2QldDejA1M05VYjJFMVFvVVRVMTZ1QS9lZGl0
I2dpZD03ODM3MjQ1OTNcblxuLy8gU2FmYXJpIDYgYW5kIDYuMSBmb3IgZGVza3RvcCwgaVBhZCwg
YW5kIGlQaG9uZSBhcmUgdGhlIG9ubHkgYnJvd3NlcnMgdGhhdFxuLy8gaGF2ZSBXZWJLaXRNdXRh
dGlvbk9ic2VydmVyIGJ1dCBub3QgdW4tcHJlZml4ZWQgTXV0YXRpb25PYnNlcnZlci5cbi8vIE11
c3QgdXNlIGBnbG9iYWxgIG9yIGBzZWxmYCBpbnN0ZWFkIG9mIGB3aW5kb3dgIHRvIHdvcmsgaW4g
Ym90aCBmcmFtZXMgYW5kIHdlYlxuLy8gd29ya2Vycy4gYGdsb2JhbGAgaXMgYSBwcm92aXNpb24g
b2YgQnJvd3NlcmlmeSwgTXIsIE1ycywgb3IgTW9wLlxuXG4vKiBnbG9iYWxzIHNlbGYgKi9cbnZh
ciBzY29wZSA9IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiBzZWxm
O1xudmFyIEJyb3dzZXJNdXRhdGlvbk9ic2VydmVyID0gc2NvcGUuTXV0YXRpb25PYnNlcnZlciB8
fCBzY29wZS5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xuXG4vLyBNdXRhdGlvbk9ic2VydmVycyBh
cmUgZGVzaXJhYmxlIGJlY2F1c2UgdGhleSBoYXZlIGhpZ2ggcHJpb3JpdHkgYW5kIHdvcmtcbi8v
IHJlbGlhYmx5IGV2ZXJ5d2hlcmUgdGhleSBhcmUgaW1wbGVtZW50ZWQuXG4vLyBUaGV5IGFyZSBp
bXBsZW1lbnRlZCBpbiBhbGwgbW9kZXJuIGJyb3dzZXJzLlxuLy9cbi8vIC0gQW5kcm9pZCA0LTQu
M1xuLy8gLSBDaHJvbWUgMjYtMzRcbi8vIC0gRmlyZWZveCAxNC0yOVxuLy8gLSBJbnRlcm5ldCBF
eHBsb3JlciAxMVxuLy8gLSBpUGFkIFNhZmFyaSA2LTcuMVxuLy8gLSBpUGhvbmUgU2FmYXJpIDct
Ny4xXG4vLyAtIFNhZmFyaSA2LTdcbmlmICh0eXBlb2YgQnJvd3Nlck11dGF0aW9uT2JzZXJ2ZXIg
PT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJlcXVlc3RGbHVzaCA9IG1ha2VSZXF1ZXN0Q2FsbEZy
b21NdXRhdGlvbk9ic2VydmVyKGZsdXNoKTtcblxuLy8gTWVzc2FnZUNoYW5uZWxzIGFyZSBkZXNp
cmFibGUgYmVjYXVzZSB0aGV5IGdpdmUgZGlyZWN0IGFjY2VzcyB0byB0aGUgSFRNTFxuLy8gdGFz
ayBxdWV1ZSwgYXJlIGltcGxlbWVudGVkIGluIEludGVybmV0IEV4cGxvcmVyIDEwLCBTYWZhcmkg
NS4wLTEsIGFuZCBPcGVyYVxuLy8gMTEtMTIsIGFuZCBpbiB3ZWIgd29ya2VycyBpbiBtYW55IGVu
Z2luZXMuXG4vLyBBbHRob3VnaCBtZXNzYWdlIGNoYW5uZWxzIHlpZWxkIHRvIGFueSBxdWV1ZWQg
cmVuZGVyaW5nIGFuZCBJTyB0YXNrcywgdGhleVxuLy8gd291bGQgYmUgYmV0dGVyIHRoYW4gaW1w
b3NpbmcgdGhlIDRtcyBkZWxheSBvZiB0aW1lcnMuXG4vLyBIb3dldmVyLCB0aGV5IGRvIG5vdCB3
b3JrIHJlbGlhYmx5IGluIEludGVybmV0IEV4cGxvcmVyIG9yIFNhZmFyaS5cblxuLy8gSW50ZXJu
ZXQgRXhwbG9yZXIgMTAgaXMgdGhlIG9ubHkgYnJvd3NlciB0aGF0IGhhcyBzZXRJbW1lZGlhdGUg
YnV0IGRvZXNcbi8vIG5vdCBoYXZlIE11dGF0aW9uT2JzZXJ2ZXJzLlxuLy8gQWx0aG91Z2ggc2V0
SW1tZWRpYXRlIHlpZWxkcyB0byB0aGUgYnJvd3NlcidzIHJlbmRlcmVyLCBpdCB3b3VsZCBiZVxu
Ly8gcHJlZmVycmFibGUgdG8gZmFsbGluZyBiYWNrIHRvIHNldFRpbWVvdXQgc2luY2UgaXQgZG9l
cyBub3QgaGF2ZVxuLy8gdGhlIG1pbmltdW0gNG1zIHBlbmFsdHkuXG4vLyBVbmZvcnR1bmF0ZWx5
IHRoZXJlIGFwcGVhcnMgdG8gYmUgYSBidWcgaW4gSW50ZXJuZXQgRXhwbG9yZXIgMTAgTW9iaWxl
IChhbmRcbi8vIERlc2t0b3AgdG8gYSBsZXNzZXIgZXh0ZW50KSB0aGF0IHJlbmRlcnMgYm90aCBz
ZXRJbW1lZGlhdGUgYW5kXG4vLyBNZXNzYWdlQ2hhbm5lbCB1c2VsZXNzIGZvciB0aGUgcHVycG9z
ZXMgb2YgQVNBUC5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9rcmlza293YWwvcS9pc3N1ZXMvMzk2
XG5cbi8vIFRpbWVycyBhcmUgaW1wbGVtZW50ZWQgdW5pdmVyc2FsbHkuXG4vLyBXZSBmYWxsIGJh
Y2sgdG8gdGltZXJzIGluIHdvcmtlcnMgaW4gbW9zdCBlbmdpbmVzLCBhbmQgaW4gZm9yZWdyb3Vu
ZFxuLy8gY29udGV4dHMgaW4gdGhlIGZvbGxvd2luZyBicm93c2Vycy5cbi8vIEhvd2V2ZXIsIG5v
dGUgdGhhdCBldmVuIHRoaXMgc2ltcGxlIGNhc2UgcmVxdWlyZXMgbnVhbmNlcyB0byBvcGVyYXRl
IGluIGFcbi8vIGJyb2FkIHNwZWN0cnVtIG9mIGJyb3dzZXJzLlxuLy9cbi8vIC0gRmlyZWZveCAz
LTEzXG4vLyAtIEludGVybmV0IEV4cGxvcmVyIDYtOVxuLy8gLSBpUGFkIFNhZmFyaSA0LjNcbi8v
IC0gTHlueCAyLjguN1xufSBlbHNlIHtcbiAgICByZXF1ZXN0Rmx1c2ggPSBtYWtlUmVxdWVzdENh
bGxGcm9tVGltZXIoZmx1c2gpO1xufVxuXG4vLyBgcmVxdWVzdEZsdXNoYCByZXF1ZXN0cyB0aGF0
IHRoZSBoaWdoIHByaW9yaXR5IGV2ZW50IHF1ZXVlIGJlIGZsdXNoZWQgYXNcbi8vIHNvb24gYXMg
cG9zc2libGUuXG4vLyBUaGlzIGlzIHVzZWZ1bCB0byBwcmV2ZW50IGFuIGVycm9yIHRocm93biBp
biBhIHRhc2sgZnJvbSBzdGFsbGluZyB0aGUgZXZlbnRcbi8vIHF1ZXVlIGlmIHRoZSBleGNlcHRp
b24gaGFuZGxlZCBieSBOb2RlLmpz4oCZc1xuLy8gYHByb2Nlc3Mub24oXCJ1bmNhdWdodEV4Y2Vw
dGlvblwiKWAgb3IgYnkgYSBkb21haW4uXG5yYXdBc2FwLnJlcXVlc3RGbHVzaCA9IHJlcXVlc3RG
bHVzaDtcblxuLy8gVG8gcmVxdWVzdCBhIGhpZ2ggcHJpb3JpdHkgZXZlbnQsIHdlIGluZHVjZSBh
IG11dGF0aW9uIG9ic2VydmVyIGJ5IHRvZ2dsaW5nXG4vLyB0aGUgdGV4dCBvZiBhIHRleHQgbm9k
ZSBiZXR3ZWVuIFwiMVwiIGFuZCBcIi0xXCIuXG5mdW5jdGlvbiBtYWtlUmVxdWVzdENhbGxGcm9t
TXV0YXRpb25PYnNlcnZlcihjYWxsYmFjaykge1xuICAgIHZhciB0b2dnbGUgPSAxO1xuICAgIHZh
ciBvYnNlcnZlciA9IG5ldyBCcm93c2VyTXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7XG4gICAg
dmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKTtcbiAgICBvYnNlcnZlci5v
YnNlcnZlKG5vZGUsIHtjaGFyYWN0ZXJEYXRhOiB0cnVlfSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9u
IHJlcXVlc3RDYWxsKCkge1xuICAgICAgICB0b2dnbGUgPSAtdG9nZ2xlO1xuICAgICAgICBub2Rl
LmRhdGEgPSB0b2dnbGU7XG4gICAgfTtcbn1cblxuLy8gVGhlIG1lc3NhZ2UgY2hhbm5lbCB0ZWNo
bmlxdWUgd2FzIGRpc2NvdmVyZWQgYnkgTWFsdGUgVWJsIGFuZCB3YXMgdGhlXG4vLyBvcmlnaW5h
bCBmb3VuZGF0aW9uIGZvciB0aGlzIGxpYnJhcnkuXG4vLyBodHRwOi8vd3d3Lm5vbmJsb2NraW5n
LmlvLzIwMTEvMDYvd2luZG93bmV4dHRpY2suaHRtbFxuXG4vLyBTYWZhcmkgNi4wLjUgKGF0IGxl
YXN0KSBpbnRlcm1pdHRlbnRseSBmYWlscyB0byBjcmVhdGUgbWVzc2FnZSBwb3J0cyBvbiBhXG4v
LyBwYWdlJ3MgZmlyc3QgbG9hZC4gVGhhbmtmdWxseSwgdGhpcyB2ZXJzaW9uIG9mIFNhZmFyaSBz
dXBwb3J0c1xuLy8gTXV0YXRpb25PYnNlcnZlcnMsIHNvIHdlIGRvbid0IG5lZWQgdG8gZmFsbCBi
YWNrIGluIHRoYXQgY2FzZS5cblxuLy8gZnVuY3Rpb24gbWFrZVJlcXVlc3RDYWxsRnJvbU1lc3Nh
Z2VDaGFubmVsKGNhbGxiYWNrKSB7XG4vLyAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNo
YW5uZWwoKTtcbi8vICAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGNhbGxiYWNrO1xuLy8g
ICAgIHJldHVybiBmdW5jdGlvbiByZXF1ZXN0Q2FsbCgpIHtcbi8vICAgICAgICAgY2hhbm5lbC5w
b3J0Mi5wb3N0TWVzc2FnZSgwKTtcbi8vICAgICB9O1xuLy8gfVxuXG4vLyBGb3IgcmVhc29ucyBl
eHBsYWluZWQgYWJvdmUsIHdlIGFyZSBhbHNvIHVuYWJsZSB0byB1c2UgYHNldEltbWVkaWF0ZWBc
bi8vIHVuZGVyIGFueSBjaXJjdW1zdGFuY2VzLlxuLy8gRXZlbiBpZiB3ZSB3ZXJlLCB0aGVyZSBp
cyBhbm90aGVyIGJ1ZyBpbiBJbnRlcm5ldCBFeHBsb3JlciAxMC5cbi8vIEl0IGlzIG5vdCBzdWZm
aWNpZW50IHRvIGFzc2lnbiBgc2V0SW1tZWRpYXRlYCB0byBgcmVxdWVzdEZsdXNoYCBiZWNhdXNl
XG4vLyBgc2V0SW1tZWRpYXRlYCBtdXN0IGJlIGNhbGxlZCAqYnkgbmFtZSogYW5kIHRoZXJlZm9y
ZSBtdXN0IGJlIHdyYXBwZWQgaW4gYVxuLy8gY2xvc3VyZS5cbi8vIE5ldmVyIGZvcmdldC5cblxu
Ly8gZnVuY3Rpb24gbWFrZVJlcXVlc3RDYWxsRnJvbVNldEltbWVkaWF0ZShjYWxsYmFjaykge1xu
Ly8gICAgIHJldHVybiBmdW5jdGlvbiByZXF1ZXN0Q2FsbCgpIHtcbi8vICAgICAgICAgc2V0SW1t
ZWRpYXRlKGNhbGxiYWNrKTtcbi8vICAgICB9O1xuLy8gfVxuXG4vLyBTYWZhcmkgNi4wIGhhcyBh
IHByb2JsZW0gd2hlcmUgdGltZXJzIHdpbGwgZ2V0IGxvc3Qgd2hpbGUgdGhlIHVzZXIgaXNcbi8v
IHNjcm9sbGluZy4gVGhpcyBwcm9ibGVtIGRvZXMgbm90IGltcGFjdCBBU0FQIGJlY2F1c2UgU2Fm
YXJpIDYuMCBzdXBwb3J0c1xuLy8gbXV0YXRpb24gb2JzZXJ2ZXJzLCBzbyB0aGF0IGltcGxlbWVu
dGF0aW9uIGlzIHVzZWQgaW5zdGVhZC5cbi8vIEhvd2V2ZXIsIGlmIHdlIGV2ZXIgZWxlY3QgdG8g
dXNlIHRpbWVycyBpbiBTYWZhcmksIHRoZSBwcmV2YWxlbnQgd29yay1hcm91bmRcbi8vIGlzIHRv
IGFkZCBhIHNjcm9sbCBldmVudCBsaXN0ZW5lciB0aGF0IGNhbGxzIGZvciBhIGZsdXNoLlxuXG4v
LyBgc2V0VGltZW91dGAgZG9lcyBub3QgY2FsbCB0aGUgcGFzc2VkIGNhbGxiYWNrIGlmIHRoZSBk
ZWxheSBpcyBsZXNzIHRoYW5cbi8vIGFwcHJveGltYXRlbHkgNyBpbiB3ZWIgd29ya2VycyBpbiBG
aXJlZm94IDggdGhyb3VnaCAxOCwgYW5kIHNvbWV0aW1lcyBub3Rcbi8vIGV2ZW4gdGhlbi5cblxu
ZnVuY3Rpb24gbWFrZVJlcXVlc3RDYWxsRnJvbVRpbWVyKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJu
IGZ1bmN0aW9uIHJlcXVlc3RDYWxsKCkge1xuICAgICAgICAvLyBXZSBkaXNwYXRjaCBhIHRpbWVv
dXQgd2l0aCBhIHNwZWNpZmllZCBkZWxheSBvZiAwIGZvciBlbmdpbmVzIHRoYXRcbiAgICAgICAg
Ly8gY2FuIHJlbGlhYmx5IGFjY29tbW9kYXRlIHRoYXQgcmVxdWVzdC4gVGhpcyB3aWxsIHVzdWFs
bHkgYmUgc25hcHBlZFxuICAgICAgICAvLyB0byBhIDQgbWlsaXNlY29uZCBkZWxheSwgYnV0IG9u
Y2Ugd2UncmUgZmx1c2hpbmcsIHRoZXJlJ3Mgbm8gZGVsYXlcbiAgICAgICAgLy8gYmV0d2VlbiBl
dmVudHMuXG4gICAgICAgIHZhciB0aW1lb3V0SGFuZGxlID0gc2V0VGltZW91dChoYW5kbGVUaW1l
ciwgMCk7XG4gICAgICAgIC8vIEhvd2V2ZXIsIHNpbmNlIHRoaXMgdGltZXIgZ2V0cyBmcmVxdWVu
dGx5IGRyb3BwZWQgaW4gRmlyZWZveFxuICAgICAgICAvLyB3b3JrZXJzLCB3ZSBlbmxpc3QgYW4g
aW50ZXJ2YWwgaGFuZGxlIHRoYXQgd2lsbCB0cnkgdG8gZmlyZVxuICAgICAgICAvLyBhbiBldmVu
dCAyMCB0aW1lcyBwZXIgc2Vjb25kIHVudGlsIGl0IHN1Y2NlZWRzLlxuICAgICAgICB2YXIgaW50
ZXJ2YWxIYW5kbGUgPSBzZXRJbnRlcnZhbChoYW5kbGVUaW1lciwgNTApO1xuXG4gICAgICAgIGZ1
bmN0aW9uIGhhbmRsZVRpbWVyKCkge1xuICAgICAgICAgICAgLy8gV2hpY2hldmVyIHRpbWVyIHN1
Y2NlZWRzIHdpbGwgY2FuY2VsIGJvdGggdGltZXJzIGFuZFxuICAgICAgICAgICAgLy8gZXhlY3V0
ZSB0aGUgY2FsbGJhY2suXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dEhhbmRsZSk7
XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSGFuZGxlKTtcbiAgICAgICAgICAg
IGNhbGxiYWNrKCk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG4vLyBUaGlzIGlzIGZvciBgYXNh
cC5qc2Agb25seS5cbi8vIEl0cyBuYW1lIHdpbGwgYmUgcGVyaW9kaWNhbGx5IHJhbmRvbWl6ZWQg
dG8gYnJlYWsgYW55IGNvZGUgdGhhdCBkZXBlbmRzIG9uXG4vLyBpdHMgZXhpc3RlbmNlLlxucmF3
QXNhcC5tYWtlUmVxdWVzdENhbGxGcm9tVGltZXIgPSBtYWtlUmVxdWVzdENhbGxGcm9tVGltZXI7
XG5cbi8vIEFTQVAgd2FzIG9yaWdpbmFsbHkgYSBuZXh0VGljayBzaGltIGluY2x1ZGVkIGluIFEu
IFRoaXMgd2FzIGZhY3RvcmVkIG91dFxuLy8gaW50byB0aGlzIEFTQVAgcGFja2FnZS4gSXQgd2Fz
IGxhdGVyIGFkYXB0ZWQgdG8gUlNWUCB3aGljaCBtYWRlIGZ1cnRoZXJcbi8vIGFtZW5kbWVudHMu
IFRoZXNlIGRlY2lzaW9ucywgcGFydGljdWxhcmx5IHRvIG1hcmdpbmFsaXplIE1lc3NhZ2VDaGFu
bmVsIGFuZFxuLy8gdG8gY2FwdHVyZSB0aGUgTXV0YXRpb25PYnNlcnZlciBpbXBsZW1lbnRhdGlv
biBpbiBhIGNsb3N1cmUsIHdlcmUgaW50ZWdyYXRlZFxuLy8gYmFjayBpbnRvIEFTQVAgcHJvcGVy
LlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RpbGRlaW8vcnN2cC5qcy9ibG9iL2NkZGY3MjMyNTQ2
YTljZjg1ODUyNGI3NWNkZTZmOWVkZjcyNjIwYTcvbGliL3JzdnAvYXNhcC5qc1xuXG4vKiBXRUJQ
QUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygz
MCkpKVxuXG4vKioqLyB9KSxcbi8qIDEwMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG4vL1Ro
aXMgZmlsZSBjb250YWlucyB0aGUgRVM2IGV4dGVuc2lvbnMgdG8gdGhlIGNvcmUgUHJvbWlzZXMv
QSsgQVBJXG5cbnZhciBQcm9taXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MSk7XG5cbm1vZHVs
ZS5leHBvcnRzID0gUHJvbWlzZTtcblxuLyogU3RhdGljIEZ1bmN0aW9ucyAqL1xuXG52YXIgVFJV
RSA9IHZhbHVlUHJvbWlzZSh0cnVlKTtcbnZhciBGQUxTRSA9IHZhbHVlUHJvbWlzZShmYWxzZSk7
XG52YXIgTlVMTCA9IHZhbHVlUHJvbWlzZShudWxsKTtcbnZhciBVTkRFRklORUQgPSB2YWx1ZVBy
b21pc2UodW5kZWZpbmVkKTtcbnZhciBaRVJPID0gdmFsdWVQcm9taXNlKDApO1xudmFyIEVNUFRZ
U1RSSU5HID0gdmFsdWVQcm9taXNlKCcnKTtcblxuZnVuY3Rpb24gdmFsdWVQcm9taXNlKHZhbHVl
KSB7XG4gIHZhciBwID0gbmV3IFByb21pc2UoUHJvbWlzZS5fNDQpO1xuICBwLl84MyA9IDE7XG4g
IHAuXzE4ID0gdmFsdWU7XG4gIHJldHVybiBwO1xufVxuUHJvbWlzZS5yZXNvbHZlID0gZnVuY3Rp
b24gKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHJldHVybiB2YWx1
ZTtcblxuICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiBOVUxMO1xuICBpZiAodmFsdWUgPT09
IHVuZGVmaW5lZCkgcmV0dXJuIFVOREVGSU5FRDtcbiAgaWYgKHZhbHVlID09PSB0cnVlKSByZXR1
cm4gVFJVRTtcbiAgaWYgKHZhbHVlID09PSBmYWxzZSkgcmV0dXJuIEZBTFNFO1xuICBpZiAodmFs
dWUgPT09IDApIHJldHVybiBaRVJPO1xuICBpZiAodmFsdWUgPT09ICcnKSByZXR1cm4gRU1QVFlT
VFJJTkc7XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHZhbHVl
ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciB0aGVuID0gdmFsdWUudGhl
bjtcbiAgICAgIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1
cm4gbmV3IFByb21pc2UodGhlbi5iaW5kKHZhbHVlKSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAo
ZXgpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0
KSB7XG4gICAgICAgIHJlamVjdChleCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJu
IHZhbHVlUHJvbWlzZSh2YWx1ZSk7XG59O1xuXG5Qcm9taXNlLmFsbCA9IGZ1bmN0aW9uIChhcnIp
IHtcbiAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpO1xuXG4gIHJl
dHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgaWYgKGFy
Z3MubGVuZ3RoID09PSAwKSByZXR1cm4gcmVzb2x2ZShbXSk7XG4gICAgdmFyIHJlbWFpbmluZyA9
IGFyZ3MubGVuZ3RoO1xuICAgIGZ1bmN0aW9uIHJlcyhpLCB2YWwpIHtcbiAgICAgIGlmICh2YWwg
JiYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicp
KSB7XG4gICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBQcm9taXNlICYmIHZhbC50aGVuID09PSBQ
cm9taXNlLnByb3RvdHlwZS50aGVuKSB7XG4gICAgICAgICAgd2hpbGUgKHZhbC5fODMgPT09IDMp
IHtcbiAgICAgICAgICAgIHZhbCA9IHZhbC5fMTg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlm
ICh2YWwuXzgzID09PSAxKSByZXR1cm4gcmVzKGksIHZhbC5fMTgpO1xuICAgICAgICAgIGlmICh2
YWwuXzgzID09PSAyKSByZWplY3QodmFsLl8xOCk7XG4gICAgICAgICAgdmFsLnRoZW4oZnVuY3Rp
b24gKHZhbCkge1xuICAgICAgICAgICAgcmVzKGksIHZhbCk7XG4gICAgICAgICAgfSwgcmVqZWN0
KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHRo
ZW4gPSB2YWwudGhlbjtcbiAgICAgICAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicp
IHtcbiAgICAgICAgICAgIHZhciBwID0gbmV3IFByb21pc2UodGhlbi5iaW5kKHZhbCkpO1xuICAg
ICAgICAgICAgcC50aGVuKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgICAgICAgcmVzKGksIHZh
bCk7XG4gICAgICAgICAgICB9LCByZWplY3QpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAg
ICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXJnc1tpXSA9IHZhbDtcbiAgICAgIGlm
ICgtLXJlbWFpbmluZyA9PT0gMCkge1xuICAgICAgICByZXNvbHZlKGFyZ3MpO1xuICAgICAgfVxu
ICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAg
IHJlcyhpLCBhcmdzW2ldKTtcbiAgICB9XG4gIH0pO1xufTtcblxuUHJvbWlzZS5yZWplY3QgPSBm
dW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZl
LCByZWplY3QpIHtcbiAgICByZWplY3QodmFsdWUpO1xuICB9KTtcbn07XG5cblByb21pc2UucmFj
ZSA9IGZ1bmN0aW9uICh2YWx1ZXMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChy
ZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSl7XG4g
ICAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICB9
KTtcbiAgfSk7XG59O1xuXG4vKiBQcm90b3R5cGUgTWV0aG9kcyAqL1xuXG5Qcm9taXNlLnByb3Rv
dHlwZVsnY2F0Y2gnXSA9IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gIHJldHVybiB0aGlzLnRo
ZW4obnVsbCwgb25SZWplY3RlZCk7XG59O1xuXG5cbi8qKiovIH0pLFxuLyogMTAyICovXG4vKioq
LyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbihmdW5jdGlvbihzZWxmKSB7XG4gICd1
c2Ugc3RyaWN0JztcblxuICBpZiAoc2VsZi5mZXRjaCkge1xuICAgIHJldHVyblxuICB9XG5cbiAg
dmFyIHN1cHBvcnQgPSB7XG4gICAgc2VhcmNoUGFyYW1zOiAnVVJMU2VhcmNoUGFyYW1zJyBpbiBz
ZWxmLFxuICAgIGl0ZXJhYmxlOiAnU3ltYm9sJyBpbiBzZWxmICYmICdpdGVyYXRvcicgaW4gU3lt
Ym9sLFxuICAgIGJsb2I6ICdGaWxlUmVhZGVyJyBpbiBzZWxmICYmICdCbG9iJyBpbiBzZWxmICYm
IChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBCbG9iKClcbiAgICAgICAg
cmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAg
ICAgIH1cbiAgICB9KSgpLFxuICAgIGZvcm1EYXRhOiAnRm9ybURhdGEnIGluIHNlbGYsXG4gICAg
YXJyYXlCdWZmZXI6ICdBcnJheUJ1ZmZlcicgaW4gc2VsZlxuICB9XG5cbiAgaWYgKHN1cHBvcnQu
YXJyYXlCdWZmZXIpIHtcbiAgICB2YXIgdmlld0NsYXNzZXMgPSBbXG4gICAgICAnW29iamVjdCBJ
bnQ4QXJyYXldJyxcbiAgICAgICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICAgICdbb2JqZWN0
IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgICAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAg
ICAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgICAgJ1tvYmplY3QgSW50MzJBcnJheV0nLFxu
ICAgICAgJ1tvYmplY3QgVWludDMyQXJyYXldJyxcbiAgICAgICdbb2JqZWN0IEZsb2F0MzJBcnJh
eV0nLFxuICAgICAgJ1tvYmplY3QgRmxvYXQ2NEFycmF5XSdcbiAgICBdXG5cbiAgICB2YXIgaXNE
YXRhVmlldyA9IGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiBEYXRhVmlldy5w
cm90b3R5cGUuaXNQcm90b3R5cGVPZihvYmopXG4gICAgfVxuXG4gICAgdmFyIGlzQXJyYXlCdWZm
ZXJWaWV3ID0gQXJyYXlCdWZmZXIuaXNWaWV3IHx8IGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0
dXJuIG9iaiAmJiB2aWV3Q2xhc3Nlcy5pbmRleE9mKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcu
Y2FsbChvYmopKSA+IC0xXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplTmFtZShu
YW1lKSB7XG4gICAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgbmFtZSA9
IFN0cmluZyhuYW1lKVxuICAgIH1cbiAgICBpZiAoL1teYS16MC05XFwtIyQlJicqKy5cXF5fYHx+
XS9pLnRlc3QobmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY2hh
cmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1lJylcbiAgICB9XG4gICAgcmV0dXJuIG5hbWUudG9M
b3dlckNhc2UoKVxuICB9XG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAg
ICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgdmFsdWUgPSBTdHJpbmco
dmFsdWUpXG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgLy8gQnVpbGQgYSBkZXN0
cnVjdGl2ZSBpdGVyYXRvciBmb3IgdGhlIHZhbHVlIGxpc3RcbiAgZnVuY3Rpb24gaXRlcmF0b3JG
b3IoaXRlbXMpIHtcbiAgICB2YXIgaXRlcmF0b3IgPSB7XG4gICAgICBuZXh0OiBmdW5jdGlvbigp
IHtcbiAgICAgICAgdmFyIHZhbHVlID0gaXRlbXMuc2hpZnQoKVxuICAgICAgICByZXR1cm4ge2Rv
bmU6IHZhbHVlID09PSB1bmRlZmluZWQsIHZhbHVlOiB2YWx1ZX1cbiAgICAgIH1cbiAgICB9XG5c
biAgICBpZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICAgICAgaXRlcmF0b3JbU3ltYm9sLml0ZXJh
dG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JcbiAgICAgIH1cbiAg
ICB9XG5cbiAgICByZXR1cm4gaXRlcmF0b3JcbiAgfVxuXG4gIGZ1bmN0aW9uIEhlYWRlcnMoaGVh
ZGVycykge1xuICAgIHRoaXMubWFwID0ge31cblxuICAgIGlmIChoZWFkZXJzIGluc3RhbmNlb2Yg
SGVhZGVycykge1xuICAgICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7
XG4gICAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIHZhbHVlKVxuICAgICAgfSwgdGhpcylcbiAgICB9
IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVycykpIHtcbiAgICAgIGhlYWRlcnMuZm9yRWFj
aChmdW5jdGlvbihoZWFkZXIpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoaGVhZGVyWzBdLCBoZWFk
ZXJbMV0pXG4gICAgICB9LCB0aGlzKVxuICAgIH0gZWxzZSBpZiAoaGVhZGVycykge1xuICAgICAg
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1l
KSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pXG4gICAgICB9LCB0
aGlzKVxuICAgIH1cbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9u
KG5hbWUsIHZhbHVlKSB7XG4gICAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAgICB2YWx1
ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuICAgIHZhciBvbGRWYWx1ZSA9IHRoaXMubWFwW25h
bWVdXG4gICAgdGhpcy5tYXBbbmFtZV0gPSBvbGRWYWx1ZSA/IG9sZFZhbHVlKycsJyt2YWx1ZSA6
IHZhbHVlXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihu
YW1lKSB7XG4gICAgZGVsZXRlIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldXG4gIH1cblxu
ICBIZWFkZXJzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgbmFtZSA9IG5v
cm1hbGl6ZU5hbWUobmFtZSlcbiAgICByZXR1cm4gdGhpcy5oYXMobmFtZSkgPyB0aGlzLm1hcFtu
YW1lXSA6IG51bGxcbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKG5h
bWUpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAuaGFzT3duUHJvcGVydHkobm9ybWFsaXplTmFtZShu
YW1lKSlcbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKG5hbWUsIHZh
bHVlKSB7XG4gICAgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV0gPSBub3JtYWxpemVWYWx1
ZSh2YWx1ZSlcbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihj
YWxsYmFjaywgdGhpc0FyZykge1xuICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcy5tYXApIHtcbiAg
ICAgIGlmICh0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBjYWxsYmFj
ay5jYWxsKHRoaXNBcmcsIHRoaXMubWFwW25hbWVdLCBuYW1lLCB0aGlzKVxuICAgICAgfVxuICAg
IH1cbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgICB2
YXIgaXRlbXMgPSBbXVxuICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkgeyBp
dGVtcy5wdXNoKG5hbWUpIH0pXG4gICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxuICB9XG5c
biAgSGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGl0ZW1z
ID0gW11cbiAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHsgaXRlbXMucHVzaCh2YWx1
ZSkgfSlcbiAgICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG4gIH1cblxuICBIZWFkZXJzLnBy
b3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGl0ZW1zID0gW11cbiAgICB0
aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHsgaXRlbXMucHVzaChbbmFtZSwgdmFs
dWVdKSB9KVxuICAgIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbiAgfVxuXG4gIGlmIChzdXBw
b3J0Lml0ZXJhYmxlKSB7XG4gICAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9
IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXNcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbnN1bWVkKGJv
ZHkpIHtcbiAgICBpZiAoYm9keS5ib2R5VXNlZCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVq
ZWN0KG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpKVxuICAgIH1cbiAgICBib2R5LmJvZHlV
c2VkID0gdHJ1ZVxuICB9XG5cbiAgZnVuY3Rpb24gZmlsZVJlYWRlclJlYWR5KHJlYWRlcikge1xu
ICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAg
IHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVz
dWx0KVxuICAgICAgfVxuICAgICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAg
ICAgcmVqZWN0KHJlYWRlci5lcnJvcilcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rp
b24gcmVhZEJsb2JBc0FycmF5QnVmZmVyKGJsb2IpIHtcbiAgICB2YXIgcmVhZGVyID0gbmV3IEZp
bGVSZWFkZXIoKVxuICAgIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAg
ICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYilcbiAgICByZXR1cm4gcHJvbWlzZVxuICB9
XG5cbiAgZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYikge1xuICAgIHZhciByZWFkZXIgPSBu
ZXcgRmlsZVJlYWRlcigpXG4gICAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVy
KVxuICAgIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IpXG4gICAgcmV0dXJuIHByb21pc2VcbiAgfVxu
XG4gIGZ1bmN0aW9uIHJlYWRBcnJheUJ1ZmZlckFzVGV4dChidWYpIHtcbiAgICB2YXIgdmlldyA9
IG5ldyBVaW50OEFycmF5KGJ1ZilcbiAgICB2YXIgY2hhcnMgPSBuZXcgQXJyYXkodmlldy5sZW5n
dGgpXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHtcbiAgICAg
IGNoYXJzW2ldID0gU3RyaW5nLmZyb21DaGFyQ29kZSh2aWV3W2ldKVxuICAgIH1cbiAgICByZXR1
cm4gY2hhcnMuam9pbignJylcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1ZmZlckNsb25lKGJ1Zikge1xu
ICAgIGlmIChidWYuc2xpY2UpIHtcbiAgICAgIHJldHVybiBidWYuc2xpY2UoMClcbiAgICB9IGVs
c2Uge1xuICAgICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYuYnl0ZUxlbmd0aClcbiAg
ICAgIHZpZXcuc2V0KG5ldyBVaW50OEFycmF5KGJ1ZikpXG4gICAgICByZXR1cm4gdmlldy5idWZm
ZXJcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBCb2R5KCkge1xuICAgIHRoaXMuYm9keVVzZWQg
PSBmYWxzZVxuXG4gICAgdGhpcy5faW5pdEJvZHkgPSBmdW5jdGlvbihib2R5KSB7XG4gICAgICB0
aGlzLl9ib2R5SW5pdCA9IGJvZHlcbiAgICAgIGlmICghYm9keSkge1xuICAgICAgICB0aGlzLl9i
b2R5VGV4dCA9ICcnXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykg
e1xuICAgICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9y
dC5ibG9iICYmIEJsb2IucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAg
dGhpcy5fYm9keUJsb2IgPSBib2R5XG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuZm9ybURhdGEg
JiYgRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhp
cy5fYm9keUZvcm1EYXRhID0gYm9keVxuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBh
cmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtc
biAgICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5LnRvU3RyaW5nKClcbiAgICAgIH0gZWxzZSBp
ZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiBzdXBwb3J0LmJsb2IgJiYgaXNEYXRhVmlldyhib2R5
KSkge1xuICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5LmJ1
ZmZlcilcbiAgICAgICAgLy8gSUUgMTAtMTEgY2FuJ3QgaGFuZGxlIGEgRGF0YVZpZXcgYm9keS5c
biAgICAgICAgdGhpcy5fYm9keUluaXQgPSBuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVy
XSlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiAoQXJyYXlCdWZmZXIu
cHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkgfHwgaXNBcnJheUJ1ZmZlclZpZXcoYm9keSkp
KSB7XG4gICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkpXG4g
ICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIEJvZHlJ
bml0IHR5cGUnKVxuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuaGVhZGVycy5nZXQoJ2NvbnRl
bnQtdHlwZScpKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAg
ICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAndGV4dC9wbGFpbjtjaGFy
c2V0PVVURi04JylcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QmxvYiAmJiB0aGlzLl9i
b2R5QmxvYi50eXBlKSB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBl
JywgdGhpcy5fYm9keUJsb2IudHlwZSlcbiAgICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJj
aFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkp
IHtcbiAgICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAnYXBwbGljYXRp
b24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgICB9XG4gICAg
ICB9XG4gICAgfVxuXG4gICAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgICAgdGhpcy5ibG9iID0g
ZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAg
ICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgICAgIHJldHVybiByZWplY3RlZFxuICAgICAgICB9
XG5cbiAgICAgICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSh0aGlzLl9ib2R5QmxvYilcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5
QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9i
KFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKSlcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5
Rm9ybURhdGEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZv
cm1EYXRhIGJvZHkgYXMgYmxvYicpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJu
IFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keVRleHRdKSlcbiAgICAgICAgfVxu
ICAgICAgfVxuXG4gICAgICB0aGlzLmFycmF5QnVmZmVyID0gZnVuY3Rpb24oKSB7XG4gICAgICAg
IGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICByZXR1cm4gY29uc3VtZWQo
dGhpcykgfHwgUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcilcbiAgICAgICAg
fSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5ibG9iKCkudGhlbihyZWFkQmxvYkFzQXJy
YXlCdWZmZXIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnRleHQgPSBm
dW5jdGlvbigpIHtcbiAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICBp
ZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgICB9XG5cbiAgICAg
IGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICByZXR1cm4gcmVhZEJsb2JBc1RleHQodGhp
cy5fYm9keUJsb2IpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xu
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlYWRBcnJheUJ1ZmZlckFzVGV4dCh0aGlz
Ll9ib2R5QXJyYXlCdWZmZXIpKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEp
IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5
IGFzIHRleHQnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSh0aGlzLl9ib2R5VGV4dClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3VwcG9ydC5mb3Jt
RGF0YSkge1xuICAgICAgdGhpcy5mb3JtRGF0YSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1
cm4gdGhpcy50ZXh0KCkudGhlbihkZWNvZGUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5q
c29uID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBh
cnNlKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBIVFRQIG1ldGhvZHMg
d2hvc2UgY2FwaXRhbGl6YXRpb24gc2hvdWxkIGJlIG5vcm1hbGl6ZWRcbiAgdmFyIG1ldGhvZHMg
PSBbJ0RFTEVURScsICdHRVQnLCAnSEVBRCcsICdPUFRJT05TJywgJ1BPU1QnLCAnUFVUJ11cblxu
ICBmdW5jdGlvbiBub3JtYWxpemVNZXRob2QobWV0aG9kKSB7XG4gICAgdmFyIHVwY2FzZWQgPSBt
ZXRob2QudG9VcHBlckNhc2UoKVxuICAgIHJldHVybiAobWV0aG9kcy5pbmRleE9mKHVwY2FzZWQp
ID4gLTEpID8gdXBjYXNlZCA6IG1ldGhvZFxuICB9XG5cbiAgZnVuY3Rpb24gUmVxdWVzdChpbnB1
dCwgb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gICAgdmFyIGJvZHkg
PSBvcHRpb25zLmJvZHlcblxuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAg
ICAgIGlmIChpbnB1dC5ib2R5VXNlZCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdB
bHJlYWR5IHJlYWQnKVxuICAgICAgfVxuICAgICAgdGhpcy51cmwgPSBpbnB1dC51cmxcbiAgICAg
IHRoaXMuY3JlZGVudGlhbHMgPSBpbnB1dC5jcmVkZW50aWFsc1xuICAgICAgaWYgKCFvcHRpb25z
LmhlYWRlcnMpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMoaW5wdXQuaGVh
ZGVycylcbiAgICAgIH1cbiAgICAgIHRoaXMubWV0aG9kID0gaW5wdXQubWV0aG9kXG4gICAgICB0
aGlzLm1vZGUgPSBpbnB1dC5tb2RlXG4gICAgICBpZiAoIWJvZHkgJiYgaW5wdXQuX2JvZHlJbml0
ICE9IG51bGwpIHtcbiAgICAgICAgYm9keSA9IGlucHV0Ll9ib2R5SW5pdFxuICAgICAgICBpbnB1
dC5ib2R5VXNlZCA9IHRydWVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cmwg
PSBTdHJpbmcoaW5wdXQpXG4gICAgfVxuXG4gICAgdGhpcy5jcmVkZW50aWFscyA9IG9wdGlvbnMu
Y3JlZGVudGlhbHMgfHwgdGhpcy5jcmVkZW50aWFscyB8fCAnb21pdCdcbiAgICBpZiAob3B0aW9u
cy5oZWFkZXJzIHx8ICF0aGlzLmhlYWRlcnMpIHtcbiAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBI
ZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgICB9XG4gICAgdGhpcy5tZXRob2QgPSBub3JtYWxp
emVNZXRob2Qob3B0aW9ucy5tZXRob2QgfHwgdGhpcy5tZXRob2QgfHwgJ0dFVCcpXG4gICAgdGhp
cy5tb2RlID0gb3B0aW9ucy5tb2RlIHx8IHRoaXMubW9kZSB8fCBudWxsXG4gICAgdGhpcy5yZWZl
cnJlciA9IG51bGxcblxuICAgIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0
aG9kID09PSAnSEVBRCcpICYmIGJvZHkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Jv
ZHkgbm90IGFsbG93ZWQgZm9yIEdFVCBvciBIRUFEIHJlcXVlc3RzJylcbiAgICB9XG4gICAgdGhp
cy5faW5pdEJvZHkoYm9keSlcbiAgfVxuXG4gIFJlcXVlc3QucHJvdG90eXBlLmNsb25lID0gZnVu
Y3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMsIHsgYm9keTogdGhpcy5fYm9k
eUluaXQgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gICAgdmFyIGZvcm0g
PSBuZXcgRm9ybURhdGEoKVxuICAgIGJvZHkudHJpbSgpLnNwbGl0KCcmJykuZm9yRWFjaChmdW5j
dGlvbihieXRlcykge1xuICAgICAgaWYgKGJ5dGVzKSB7XG4gICAgICAgIHZhciBzcGxpdCA9IGJ5
dGVzLnNwbGl0KCc9JylcbiAgICAgICAgdmFyIG5hbWUgPSBzcGxpdC5zaGlmdCgpLnJlcGxhY2Uo
L1xcKy9nLCAnICcpXG4gICAgICAgIHZhciB2YWx1ZSA9IHNwbGl0LmpvaW4oJz0nKS5yZXBsYWNl
KC9cXCsvZywgJyAnKVxuICAgICAgICBmb3JtLmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQobmFt
ZSksIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1
cm4gZm9ybVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VIZWFkZXJzKHJhd0hlYWRlcnMpIHtcbiAg
ICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKClcbiAgICByYXdIZWFkZXJzLnNwbGl0KC9cXHI/
XFxuLykuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgICB2YXIgcGFydHMgPSBsaW5lLnNw
bGl0KCc6JylcbiAgICAgIHZhciBrZXkgPSBwYXJ0cy5zaGlmdCgpLnRyaW0oKVxuICAgICAgaWYg
KGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBwYXJ0cy5qb2luKCc6JykudHJpbSgpXG4gICAg
ICAgIGhlYWRlcnMuYXBwZW5kKGtleSwgdmFsdWUpXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1
cm4gaGVhZGVyc1xuICB9XG5cbiAgQm9keS5jYWxsKFJlcXVlc3QucHJvdG90eXBlKVxuXG4gIGZ1
bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zKSB7
XG4gICAgICBvcHRpb25zID0ge31cbiAgICB9XG5cbiAgICB0aGlzLnR5cGUgPSAnZGVmYXVsdCdc
biAgICB0aGlzLnN0YXR1cyA9ICdzdGF0dXMnIGluIG9wdGlvbnMgPyBvcHRpb25zLnN0YXR1cyA6
IDIwMFxuICAgIHRoaXMub2sgPSB0aGlzLnN0YXR1cyA+PSAyMDAgJiYgdGhpcy5zdGF0dXMgPCAz
MDBcbiAgICB0aGlzLnN0YXR1c1RleHQgPSAnc3RhdHVzVGV4dCcgaW4gb3B0aW9ucyA/IG9wdGlv
bnMuc3RhdHVzVGV4dCA6ICdPSydcbiAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRp
b25zLmhlYWRlcnMpXG4gICAgdGhpcy51cmwgPSBvcHRpb25zLnVybCB8fCAnJ1xuICAgIHRoaXMu
X2luaXRCb2R5KGJvZHlJbml0KVxuICB9XG5cbiAgQm9keS5jYWxsKFJlc3BvbnNlLnByb3RvdHlw
ZSlcblxuICBSZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1
cm4gbmV3IFJlc3BvbnNlKHRoaXMuX2JvZHlJbml0LCB7XG4gICAgICBzdGF0dXM6IHRoaXMuc3Rh
dHVzLFxuICAgICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgICAgaGVhZGVyczog
bmV3IEhlYWRlcnModGhpcy5oZWFkZXJzKSxcbiAgICAgIHVybDogdGhpcy51cmxcbiAgICB9KVxu
ICB9XG5cbiAgUmVzcG9uc2UuZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVzcG9uc2Ug
PSBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogMCwgc3RhdHVzVGV4dDogJyd9KVxuICAgIHJl
c3BvbnNlLnR5cGUgPSAnZXJyb3InXG4gICAgcmV0dXJuIHJlc3BvbnNlXG4gIH1cblxuICB2YXIg
cmVkaXJlY3RTdGF0dXNlcyA9IFszMDEsIDMwMiwgMzAzLCAzMDcsIDMwOF1cblxuICBSZXNwb25z
ZS5yZWRpcmVjdCA9IGZ1bmN0aW9uKHVybCwgc3RhdHVzKSB7XG4gICAgaWYgKHJlZGlyZWN0U3Rh
dHVzZXMuaW5kZXhPZihzdGF0dXMpID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJy
b3IoJ0ludmFsaWQgc3RhdHVzIGNvZGUnKVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgUmVzcG9u
c2UobnVsbCwge3N0YXR1czogc3RhdHVzLCBoZWFkZXJzOiB7bG9jYXRpb246IHVybH19KVxuICB9
XG5cbiAgc2VsZi5IZWFkZXJzID0gSGVhZGVyc1xuICBzZWxmLlJlcXVlc3QgPSBSZXF1ZXN0XG4g
IHNlbGYuUmVzcG9uc2UgPSBSZXNwb25zZVxuXG4gIHNlbGYuZmV0Y2ggPSBmdW5jdGlvbihpbnB1
dCwgaW5pdCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWpl
Y3QpIHtcbiAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoaW5wdXQsIGluaXQpXG4gICAg
ICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KClcblxuICAgICAgeGhyLm9ubG9hZCA9IGZ1
bmN0aW9uKCkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHtcbiAgICAgICAgICBzdGF0dXM6IHho
ci5zdGF0dXMsXG4gICAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQsXG4gICAgICAg
ICAgaGVhZGVyczogcGFyc2VIZWFkZXJzKHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSB8fCAn
JylcbiAgICAgICAgfVxuICAgICAgICBvcHRpb25zLnVybCA9ICdyZXNwb25zZVVSTCcgaW4geGhy
ID8geGhyLnJlc3BvbnNlVVJMIDogb3B0aW9ucy5oZWFkZXJzLmdldCgnWC1SZXF1ZXN0LVVSTCcp
XG4gICAgICAgIHZhciBib2R5ID0gJ3Jlc3BvbnNlJyBpbiB4aHIgPyB4aHIucmVzcG9uc2UgOiB4
aHIucmVzcG9uc2VUZXh0XG4gICAgICAgIHJlc29sdmUobmV3IFJlc3BvbnNlKGJvZHksIG9wdGlv
bnMpKVxuICAgICAgfVxuXG4gICAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAg
ICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuICAgICAg
fVxuXG4gICAgICB4aHIub250aW1lb3V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChu
ZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpXG4gICAgICB9XG5cbiAgICAg
IHhoci5vcGVuKHJlcXVlc3QubWV0aG9kLCByZXF1ZXN0LnVybCwgdHJ1ZSlcblxuICAgICAgaWYg
KHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdpbmNsdWRlJykge1xuICAgICAgICB4aHIud2l0aENy
ZWRlbnRpYWxzID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoJ3Jlc3BvbnNlVHlwZScgaW4g
eGhyICYmIHN1cHBvcnQuYmxvYikge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2Jsb2In
XG4gICAgICB9XG5cbiAgICAgIHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVl
LCBuYW1lKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKVxuICAg
ICAgfSlcblxuICAgICAgeGhyLnNlbmQodHlwZW9mIHJlcXVlc3QuX2JvZHlJbml0ID09PSAndW5k
ZWZpbmVkJyA/IG51bGwgOiByZXF1ZXN0Ll9ib2R5SW5pdClcbiAgICB9KVxuICB9XG4gIHNlbGYu
ZmV0Y2gucG9seWZpbGwgPSB0cnVlXG59KSh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBz
ZWxmIDogdGhpcyk7XG5cblxuLyoqKi8gfSksXG4vKiAxMDMgKi9cbi8qKiovIChmdW5jdGlvbiht
b2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1
c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoX193ZWJwYWNrX2V4cG9ydHNfXywg
XCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2
YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X18gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMF9yZWFjdF9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX3JlYWN0X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMV9yZWFjdF9kb21fXyA9IF9fd2VicGFja19yZXF1aXJlX18o
MTE4KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfcmVhY3RfZG9tX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzFfcmVhY3RfZG9tX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFy
IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9yZWR1eF9fID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyOSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8zX3JlYWN0X3JlZHV4X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg4KTtcbi8qIGhhcm1vbnkg
aW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2NvbnRhaW5lcnNfQXBw
X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyMik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIg
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19yZWR1Y2Vyc19fID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyMjgpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfNl90b2RvbXZjX2FwcF9jc3NfaW5kZXhfY3NzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDIzMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV82X3RvZG9tdmNfYXBwX2Nzc19pbmRleF9jc3NfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVp
cmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl90b2RvbXZjX2FwcF9jc3NfaW5kZXhf
Y3NzX18pO1xudmFyIHN0b3JlPU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfcmVk
dXhfX1tcImNcIiAvKiBjcmVhdGVTdG9yZSAqL10pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
NV9fcmVkdWNlcnNfX1tcImFcIiAvKiBkZWZhdWx0ICovXSk7T2JqZWN0KF9fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMV9yZWFjdF9kb21fX1tcInJlbmRlclwiXSkoX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8zX3JlYWN0X3JlZHV4X19bXCJhXCIgLyogUHJvdmlkZXIgKi9dLHtzdG9yZTpz
dG9yZX0sX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0
ZUVsZW1lbnQoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19jb250YWluZXJzX0FwcF9fW1wi
YVwiIC8qIGRlZmF1bHQgKi9dLG51bGwpKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcp
KTtcblxuLyoqKi8gfSksXG4vKiAxMDQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENv
cHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbi8qKlxuICogRm9ya2VkIGZyb20gZmJqcy93YXJuaW5n
OlxuICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2ZianMvYmxvYi9lNjZiYTIwYWQ1YmU0
MzNlYjU0NDIzZjJiMDk3ZDgyOTMyNGQ5ZGU2L3BhY2thZ2VzL2ZianMvc3JjL19fZm9ya3NfXy93
YXJuaW5nLmpzXG4gKlxuICogT25seSBjaGFuZ2UgaXMgd2UgdXNlIGNvbnNvbGUud2FybiBpbnN0
ZWFkIG9mIGNvbnNvbGUuZXJyb3IsXG4gKiBhbmQgZG8gbm90aGluZyB3aGVuICdjb25zb2xlJyBp
cyBub3Qgc3VwcG9ydGVkLlxuICogVGhpcyByZWFsbHkgc2ltcGxpZmllcyB0aGUgY29kZS5cbiAq
IC0tLVxuICogU2ltaWxhciB0byBpbnZhcmlhbnQgYnV0IG9ubHkgbG9ncyBhIHdhcm5pbmcgaWYg
dGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0LlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBsb2cgaXNz
dWVzIGluIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBpbiBjcml0aWNhbFxuICogcGF0aHMuIFJl
bW92aW5nIHRoZSBsb2dnaW5nIGNvZGUgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdpbGwg
a2VlcCB0aGVcbiAqIHNhbWUgbG9naWMgYW5kIGZvbGxvdyB0aGUgc2FtZSBjb2RlIHBhdGhzLlxu
ICovXG5cbnZhciBsb3dQcmlvcml0eVdhcm5pbmcgPSBmdW5jdGlvbiAoKSB7fTtcblxuaWYgKGZh
bHNlKSB7XG4gIHZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgZm9y
ICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9s
ZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdz
W19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICB2YXIgYXJnSW5kZXgg
PSAwO1xuICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMv
ZywgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgfSk7
XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29s
ZS53YXJuKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUg
dG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFz
IGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0
byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAg
ICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNoICh4KSB7fVxuICB9O1xu
XG4gIGxvd1ByaW9yaXR5V2FybmluZyA9IGZ1bmN0aW9uIChjb25kaXRpb24sIGZvcm1hdCkge1xu
ICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdg
d2FybmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4uYXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAn
ICsgJ21lc3NhZ2UgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAg
ICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4y
ID4gMiA/IF9sZW4yIC0gMiA6IDApLCBfa2V5MiA9IDI7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKysp
IHtcbiAgICAgICAgYXJnc1tfa2V5MiAtIDJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1c
blxuICAgICAgcHJpbnRXYXJuaW5nLmFwcGx5KHVuZGVmaW5lZCwgW2Zvcm1hdF0uY29uY2F0KGFy
Z3MpKTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbG93UHJpb3JpdHlXYXJu
aW5nO1xuXG4vKioqLyB9KSxcbi8qIDEwNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIFBvb2xlZENsYXNzID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxMDYpO1xudmFyIFJlYWN0RWxlbWVudCA9IF9fd2VicGFja19yZXF1aXJlX18o
MTQpO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG52YXIg
dHJhdmVyc2VBbGxDaGlsZHJlbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTA3KTtcblxudmFyIHR3
b0FyZ3VtZW50UG9vbGVyID0gUG9vbGVkQ2xhc3MudHdvQXJndW1lbnRQb29sZXI7XG52YXIgZm91
ckFyZ3VtZW50UG9vbGVyID0gUG9vbGVkQ2xhc3MuZm91ckFyZ3VtZW50UG9vbGVyO1xuXG52YXIg
dXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXggPSAvXFwvKy9nO1xuZnVuY3Rpb24gZXNjYXBlVXNl
clByb3ZpZGVkS2V5KHRleHQpIHtcbiAgcmV0dXJuICgnJyArIHRleHQpLnJlcGxhY2UodXNlclBy
b3ZpZGVkS2V5RXNjYXBlUmVnZXgsICckJi8nKTtcbn1cblxuLyoqXG4gKiBQb29sZWRDbGFzcyBy
ZXByZXNlbnRpbmcgdGhlIGJvb2trZWVwaW5nIGFzc29jaWF0ZWQgd2l0aCBwZXJmb3JtaW5nIGEg
Y2hpbGRcbiAqIHRyYXZlcnNhbC4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tzLlxu
ICpcbiAqIEBjb25zdHJ1Y3RvciBGb3JFYWNoQm9va0tlZXBpbmdcbiAqIEBwYXJhbSB7IWZ1bmN0
aW9ufSBmb3JFYWNoRnVuY3Rpb24gRnVuY3Rpb24gdG8gcGVyZm9ybSB0cmF2ZXJzYWwgd2l0aC5c
biAqIEBwYXJhbSB7Pyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBjb250ZXh0
IHdpdGguXG4gKi9cbmZ1bmN0aW9uIEZvckVhY2hCb29rS2VlcGluZyhmb3JFYWNoRnVuY3Rpb24s
IGZvckVhY2hDb250ZXh0KSB7XG4gIHRoaXMuZnVuYyA9IGZvckVhY2hGdW5jdGlvbjtcbiAgdGhp
cy5jb250ZXh0ID0gZm9yRWFjaENvbnRleHQ7XG4gIHRoaXMuY291bnQgPSAwO1xufVxuRm9yRWFj
aEJvb2tLZWVwaW5nLnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkge1xuICB0aGlz
LmZ1bmMgPSBudWxsO1xuICB0aGlzLmNvbnRleHQgPSBudWxsO1xuICB0aGlzLmNvdW50ID0gMDtc
bn07XG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oRm9yRWFjaEJvb2tLZWVwaW5nLCB0d29Bcmd1
bWVudFBvb2xlcik7XG5cbmZ1bmN0aW9uIGZvckVhY2hTaW5nbGVDaGlsZChib29rS2VlcGluZywg
Y2hpbGQsIG5hbWUpIHtcbiAgdmFyIGZ1bmMgPSBib29rS2VlcGluZy5mdW5jLFxuICAgICAgY29u
dGV4dCA9IGJvb2tLZWVwaW5nLmNvbnRleHQ7XG5cbiAgZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxk
LCBib29rS2VlcGluZy5jb3VudCsrKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGNo
aWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC5c
biAqXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2
ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4uZm9yZWFjaFxuICpcbiAqIFRoZSBwcm92aWRlZCBm
b3JFYWNoRnVuYyhjaGlsZCwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoXG4gKiBsZWFm
IGNoaWxkLlxuICpcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFp
bmVyLlxuICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmb3JFYWNoRnVuY1xuICogQHBhcmFt
IHsqfSBmb3JFYWNoQ29udGV4dCBDb250ZXh0IGZvciBmb3JFYWNoQ29udGV4dC5cbiAqL1xuZnVu
Y3Rpb24gZm9yRWFjaENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoRnVuYywgZm9yRWFjaENvbnRl
eHQpIHtcbiAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4g
IH1cbiAgdmFyIHRyYXZlcnNlQ29udGV4dCA9IEZvckVhY2hCb29rS2VlcGluZy5nZXRQb29sZWQo
Zm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KTtcbiAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGls
ZHJlbiwgZm9yRWFjaFNpbmdsZUNoaWxkLCB0cmF2ZXJzZUNvbnRleHQpO1xuICBGb3JFYWNoQm9v
a0tlZXBpbmcucmVsZWFzZSh0cmF2ZXJzZUNvbnRleHQpO1xufVxuXG4vKipcbiAqIFBvb2xlZENs
YXNzIHJlcHJlc2VudGluZyB0aGUgYm9va2tlZXBpbmcgYXNzb2NpYXRlZCB3aXRoIHBlcmZvcm1p
bmcgYSBjaGlsZFxuICogbWFwcGluZy4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tz
LlxuICpcbiAqIEBjb25zdHJ1Y3RvciBNYXBCb29rS2VlcGluZ1xuICogQHBhcmFtIHshKn0gbWFw
UmVzdWx0IE9iamVjdCBjb250YWluaW5nIHRoZSBvcmRlcmVkIG1hcCBvZiByZXN1bHRzLlxuICog
QHBhcmFtIHshZnVuY3Rpb259IG1hcEZ1bmN0aW9uIEZ1bmN0aW9uIHRvIHBlcmZvcm0gbWFwcGlu
ZyB3aXRoLlxuICogQHBhcmFtIHs/Kn0gbWFwQ29udGV4dCBDb250ZXh0IHRvIHBlcmZvcm0gbWFw
cGluZyB3aXRoLlxuICovXG5mdW5jdGlvbiBNYXBCb29rS2VlcGluZyhtYXBSZXN1bHQsIGtleVBy
ZWZpeCwgbWFwRnVuY3Rpb24sIG1hcENvbnRleHQpIHtcbiAgdGhpcy5yZXN1bHQgPSBtYXBSZXN1
bHQ7XG4gIHRoaXMua2V5UHJlZml4ID0ga2V5UHJlZml4O1xuICB0aGlzLmZ1bmMgPSBtYXBGdW5j
dGlvbjtcbiAgdGhpcy5jb250ZXh0ID0gbWFwQ29udGV4dDtcbiAgdGhpcy5jb3VudCA9IDA7XG59
XG5NYXBCb29rS2VlcGluZy5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHtcbiAg
dGhpcy5yZXN1bHQgPSBudWxsO1xuICB0aGlzLmtleVByZWZpeCA9IG51bGw7XG4gIHRoaXMuZnVu
YyA9IG51bGw7XG4gIHRoaXMuY29udGV4dCA9IG51bGw7XG4gIHRoaXMuY291bnQgPSAwO1xufTtc
blBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhNYXBCb29rS2VlcGluZywgZm91ckFyZ3VtZW50UG9v
bGVyKTtcblxuZnVuY3Rpb24gbWFwU2luZ2xlQ2hpbGRJbnRvQ29udGV4dChib29rS2VlcGluZywg
Y2hpbGQsIGNoaWxkS2V5KSB7XG4gIHZhciByZXN1bHQgPSBib29rS2VlcGluZy5yZXN1bHQsXG4g
ICAgICBrZXlQcmVmaXggPSBib29rS2VlcGluZy5rZXlQcmVmaXgsXG4gICAgICBmdW5jID0gYm9v
a0tlZXBpbmcuZnVuYyxcbiAgICAgIGNvbnRleHQgPSBib29rS2VlcGluZy5jb250ZXh0O1xuXG5c
biAgdmFyIG1hcHBlZENoaWxkID0gZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGlu
Zy5jb3VudCsrKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkobWFwcGVkQ2hpbGQpKSB7XG4gICAgbWFw
SW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChtYXBwZWRDaGlsZCwgcmVzdWx0LCBjaGlsZEtleSwg
ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChtYXBwZWRD
aGlsZCAhPSBudWxsKSB7XG4gICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChtYXBw
ZWRDaGlsZCkpIHtcbiAgICAgIG1hcHBlZENoaWxkID0gUmVhY3RFbGVtZW50LmNsb25lQW5kUmVw
bGFjZUtleShtYXBwZWRDaGlsZCxcbiAgICAgIC8vIEtlZXAgYm90aCB0aGUgKG1hcHBlZCkgYW5k
IG9sZCBrZXlzIGlmIHRoZXkgZGlmZmVyLCBqdXN0IGFzXG4gICAgICAvLyB0cmF2ZXJzZUFsbENo
aWxkcmVuIHVzZWQgdG8gZG8gZm9yIG9iamVjdHMgYXMgY2hpbGRyZW5cbiAgICAgIGtleVByZWZp
eCArIChtYXBwZWRDaGlsZC5rZXkgJiYgKCFjaGlsZCB8fCBjaGlsZC5rZXkgIT09IG1hcHBlZENo
aWxkLmtleSkgPyBlc2NhcGVVc2VyUHJvdmlkZWRLZXkobWFwcGVkQ2hpbGQua2V5KSArICcvJyA6
ICcnKSArIGNoaWxkS2V5KTtcbiAgICB9XG4gICAgcmVzdWx0LnB1c2gobWFwcGVkQ2hpbGQpO1xu
ICB9XG59XG5cbmZ1bmN0aW9uIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwoY2hpbGRyZW4s
IGFycmF5LCBwcmVmaXgsIGZ1bmMsIGNvbnRleHQpIHtcbiAgdmFyIGVzY2FwZWRQcmVmaXggPSAn
JztcbiAgaWYgKHByZWZpeCAhPSBudWxsKSB7XG4gICAgZXNjYXBlZFByZWZpeCA9IGVzY2FwZVVz
ZXJQcm92aWRlZEtleShwcmVmaXgpICsgJy8nO1xuICB9XG4gIHZhciB0cmF2ZXJzZUNvbnRleHQg
PSBNYXBCb29rS2VlcGluZy5nZXRQb29sZWQoYXJyYXksIGVzY2FwZWRQcmVmaXgsIGZ1bmMsIGNv
bnRleHQpO1xuICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBtYXBTaW5nbGVDaGlsZElu
dG9Db250ZXh0LCB0cmF2ZXJzZUNvbnRleHQpO1xuICBNYXBCb29rS2VlcGluZy5yZWxlYXNlKHRy
YXZlcnNlQ29udGV4dCk7XG59XG5cbi8qKlxuICogTWFwcyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBp
Y2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuXG4gKlxuICogU2VlIGh0dHBzOi8v
ZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNo
aWxkcmVuLm1hcFxuICpcbiAqIFRoZSBwcm92aWRlZCBtYXBGdW5jdGlvbihjaGlsZCwga2V5LCBp
bmRleCkgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2hcbiAqIGxlYWYgY2hpbGQuXG4gKlxuICogQHBh
cmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0ge2Z1
bmN0aW9uKCosIGludCl9IGZ1bmMgVGhlIG1hcCBmdW5jdGlvbi5cbiAqIEBwYXJhbSB7Kn0gY29u
dGV4dCBDb250ZXh0IGZvciBtYXBGdW5jdGlvbi5cbiAqIEByZXR1cm4ge29iamVjdH0gT2JqZWN0
IGNvbnRhaW5pbmcgdGhlIG9yZGVyZWQgbWFwIG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIG1h
cENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jLCBjb250ZXh0KSB7XG4gIGlmIChjaGlsZHJlbiA9PSBu
dWxsKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAg
bWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgcmVzdWx0LCBudWxsLCBmdW5j
LCBjb250ZXh0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZm9yRWFjaFNpbmds
ZUNoaWxkRHVtbXkodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkge1xuICByZXR1cm4gbnVs
bDtcbn1cblxuLyoqXG4gKiBDb3VudCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHRoYXQgYXJlIHR5
cGljYWxseSBzcGVjaWZpZWQgYXNcbiAqIGBwcm9wcy5jaGlsZHJlbmAuXG4gKlxuICogU2VlIGh0
dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3Jl
YWN0LmNoaWxkcmVuLmNvdW50XG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4g
dHJlZSBjb250YWluZXIuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRy
ZW4uXG4gKi9cbmZ1bmN0aW9uIGNvdW50Q2hpbGRyZW4oY2hpbGRyZW4sIGNvbnRleHQpIHtcbiAg
cmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hTaW5nbGVDaGlsZER1
bW15LCBudWxsKTtcbn1cblxuLyoqXG4gKiBGbGF0dGVuIGEgY2hpbGRyZW4gb2JqZWN0ICh0eXBp
Y2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmApIGFuZFxuICogcmV0dXJuIGFuIGFy
cmF5IHdpdGggYXBwcm9wcmlhdGVseSByZS1rZXllZCBjaGlsZHJlbi5cbiAqXG4gKiBTZWUgaHR0
cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVh
Y3QuY2hpbGRyZW4udG9hcnJheVxuICovXG5mdW5jdGlvbiB0b0FycmF5KGNoaWxkcmVuKSB7XG4g
IHZhciByZXN1bHQgPSBbXTtcbiAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJl
biwgcmVzdWx0LCBudWxsLCBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQpO1xuICBy
ZXR1cm4gcmVzdWx0O1xufVxuXG52YXIgUmVhY3RDaGlsZHJlbiA9IHtcbiAgZm9yRWFjaDogZm9y
RWFjaENoaWxkcmVuLFxuICBtYXA6IG1hcENoaWxkcmVuLFxuICBtYXBJbnRvV2l0aEtleVByZWZp
eEludGVybmFsOiBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsLFxuICBjb3VudDogY291bnRD
aGlsZHJlbixcbiAgdG9BcnJheTogdG9BcnJheVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFj
dENoaWxkcmVuO1xuXG4vKioqLyB9KSxcbi8qIDEwNiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cblxuXG52YXIgX3Byb2RJbnZhcmlh
bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KTtcblxudmFyIGludmFyaWFudCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMCk7XG5cbi8qKlxuICogU3RhdGljIHBvb2xlcnMuIFNldmVyYWwgY3VzdG9t
IHZlcnNpb25zIGZvciBlYWNoIHBvdGVudGlhbCBudW1iZXIgb2ZcbiAqIGFyZ3VtZW50cy4gQSBj
b21wbGV0ZWx5IGdlbmVyaWMgcG9vbGVyIGlzIGVhc3kgdG8gaW1wbGVtZW50LCBidXQgd291bGRc
biAqIHJlcXVpcmUgYWNjZXNzaW5nIHRoZSBgYXJndW1lbnRzYCBvYmplY3QuIEluIGVhY2ggb2Yg
dGhlc2UsIGB0aGlzYCByZWZlcnMgdG9cbiAqIHRoZSBDbGFzcyBpdHNlbGYsIG5vdCBhbiBpbnN0
YW5jZS4gSWYgYW55IG90aGVycyBhcmUgbmVlZGVkLCBzaW1wbHkgYWRkIHRoZW1cbiAqIGhlcmUs
IG9yIGluIHRoZWlyIG93biBmaWxlcy5cbiAqL1xudmFyIG9uZUFyZ3VtZW50UG9vbGVyID0gZnVu
Y3Rpb24gKGNvcHlGaWVsZHNGcm9tKSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFz
cy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFu
Y2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGNvcHlGaWVsZHNGcm9tKTtc
biAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhj
b3B5RmllbGRzRnJvbSk7XG4gIH1cbn07XG5cbnZhciB0d29Bcmd1bWVudFBvb2xlciA9IGZ1bmN0
aW9uIChhMSwgYTIpIHtcbiAgdmFyIEtsYXNzID0gdGhpcztcbiAgaWYgKEtsYXNzLmluc3RhbmNl
UG9vbC5sZW5ndGgpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9w
KCk7XG4gICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyKTtcbiAgICByZXR1cm4gaW5zdGFu
Y2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIpO1xuICB9XG59O1xu
XG52YXIgdGhyZWVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzKSB7XG4gIHZh
ciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAg
dmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwo
aW5zdGFuY2UsIGExLCBhMiwgYTMpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNlIHtc
biAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMpO1xuICB9XG59O1xuXG52YXIgZm91ckFy
Z3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMsIGE0KSB7XG4gIHZhciBLbGFzcyA9
IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3Rh
bmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2Us
IGExLCBhMiwgYTMsIGE0KTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAg
cmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEzLCBhNCk7XG4gIH1cbn07XG5cbnZhciBzdGFuZGFy
ZFJlbGVhc2VyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4g
ICEoaW5zdGFuY2UgaW5zdGFuY2VvZiBLbGFzcykgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2Us
ICdUcnlpbmcgdG8gcmVsZWFzZSBhbiBpbnN0YW5jZSBpbnRvIGEgcG9vbCBvZiBhIGRpZmZlcmVu
dCB0eXBlLicpIDogX3Byb2RJbnZhcmlhbnQoJzI1JykgOiB2b2lkIDA7XG4gIGluc3RhbmNlLmRl
c3RydWN0b3IoKTtcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGggPCBLbGFzcy5wb29s
U2l6ZSkge1xuICAgIEtsYXNzLmluc3RhbmNlUG9vbC5wdXNoKGluc3RhbmNlKTtcbiAgfVxufTtc
blxudmFyIERFRkFVTFRfUE9PTF9TSVpFID0gMTA7XG52YXIgREVGQVVMVF9QT09MRVIgPSBvbmVB
cmd1bWVudFBvb2xlcjtcblxuLyoqXG4gKiBBdWdtZW50cyBgQ29weUNvbnN0cnVjdG9yYCB0byBi
ZSBhIHBvb2xhYmxlIGNsYXNzLCBhdWdtZW50aW5nIG9ubHkgdGhlIGNsYXNzXG4gKiBpdHNlbGYg
KHN0YXRpY2FsbHkpIG5vdCBhZGRpbmcgYW55IHByb3RvdHlwaWNhbCBmaWVsZHMuIEFueSBDb3B5
Q29uc3RydWN0b3JcbiAqIHlvdSBnaXZlIHRoaXMgbWF5IGhhdmUgYSBgcG9vbFNpemVgIHByb3Bl
cnR5LCBhbmQgd2lsbCBsb29rIGZvciBhXG4gKiBwcm90b3R5cGljYWwgYGRlc3RydWN0b3JgIG9u
IGluc3RhbmNlcy5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBDb3B5Q29uc3RydWN0b3IgQ29u
c3RydWN0b3IgdGhhdCBjYW4gYmUgdXNlZCB0byByZXNldC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259
IHBvb2xlciBDdXN0b21pemFibGUgcG9vbGVyLlxuICovXG52YXIgYWRkUG9vbGluZ1RvID0gZnVu
Y3Rpb24gKENvcHlDb25zdHJ1Y3RvciwgcG9vbGVyKSB7XG4gIC8vIENhc3RpbmcgYXMgYW55IHNv
IHRoYXQgZmxvdyBpZ25vcmVzIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gYW5kIHRydXN0c1xu
ICAvLyBpdCB0byBtYXRjaCB0aGUgdHlwZSB3ZSBkZWNsYXJlZFxuICB2YXIgTmV3S2xhc3MgPSBD
b3B5Q29uc3RydWN0b3I7XG4gIE5ld0tsYXNzLmluc3RhbmNlUG9vbCA9IFtdO1xuICBOZXdLbGFz
cy5nZXRQb29sZWQgPSBwb29sZXIgfHwgREVGQVVMVF9QT09MRVI7XG4gIGlmICghTmV3S2xhc3Mu
cG9vbFNpemUpIHtcbiAgICBOZXdLbGFzcy5wb29sU2l6ZSA9IERFRkFVTFRfUE9PTF9TSVpFO1xu
ICB9XG4gIE5ld0tsYXNzLnJlbGVhc2UgPSBzdGFuZGFyZFJlbGVhc2VyO1xuICByZXR1cm4gTmV3
S2xhc3M7XG59O1xuXG52YXIgUG9vbGVkQ2xhc3MgPSB7XG4gIGFkZFBvb2xpbmdUbzogYWRkUG9v
bGluZ1RvLFxuICBvbmVBcmd1bWVudFBvb2xlcjogb25lQXJndW1lbnRQb29sZXIsXG4gIHR3b0Fy
Z3VtZW50UG9vbGVyOiB0d29Bcmd1bWVudFBvb2xlcixcbiAgdGhyZWVBcmd1bWVudFBvb2xlcjog
dGhyZWVBcmd1bWVudFBvb2xlcixcbiAgZm91ckFyZ3VtZW50UG9vbGVyOiBmb3VyQXJndW1lbnRQ
b29sZXJcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUG9vbGVkQ2xhc3M7XG5cbi8qKiovIH0pLFxu
LyogMTA3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICovXG5cblxuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KTtc
blxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG52YXIg
UkVBQ1RfRUxFTUVOVF9UWVBFID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSk7XG5cbnZhciBnZXRJ
dGVyYXRvckZuID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDgpO1xudmFyIGludmFyaWFudCA9IF9f
d2VicGFja19yZXF1aXJlX18oMCk7XG52YXIgS2V5RXNjYXBlVXRpbHMgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDEwOSk7XG52YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cbnZh
ciBTRVBBUkFUT1IgPSAnLic7XG52YXIgU1VCU0VQQVJBVE9SID0gJzonO1xuXG4vKipcbiAqIFRo
aXMgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxlbWVudCBzaW5jZSB0aGlzIGZpbGUgaXMgc2hhcmVk
IGJldHdlZW5cbiAqIGlzb21vcnBoaWMgYW5kIHJlbmRlcmVycy4gV2UgY291bGQgZXh0cmFjdCB0
aGlzIHRvIGFcbiAqXG4gKi9cblxuLyoqXG4gKiBUT0RPOiBUZXN0IHRoYXQgYSBzaW5nbGUgY2hp
bGQgYW5kIGFuIGFycmF5IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUgc2FtZSBrZXlcbiAqIHBhdHRl
cm4uXG4gKi9cblxudmFyIGRpZFdhcm5BYm91dE1hcHMgPSBmYWxzZTtcblxuLyoqXG4gKiBHZW5l
cmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgY29tcG9uZW50IHdpdGhpbiBhIHNl
dC5cbiAqXG4gKiBAcGFyYW0geyp9IGNvbXBvbmVudCBBIGNvbXBvbmVudCB0aGF0IGNvdWxkIGNv
bnRhaW4gYSBtYW51YWwga2V5LlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQg
aXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLlxuICogQHJldHVybiB7c3Ry
aW5nfVxuICovXG5mdW5jdGlvbiBnZXRDb21wb25lbnRLZXkoY29tcG9uZW50LCBpbmRleCkge1xu
ICAvLyBEbyBzb21lIHR5cGVjaGVja2luZyBoZXJlIHNpbmNlIHdlIGNhbGwgdGhpcyBibGluZGx5
LiBXZSB3YW50IHRvIGVuc3VyZVxuICAvLyB0aGF0IHdlIGRvbid0IGJsb2NrIHBvdGVudGlhbCBm
dXR1cmUgRVMgQVBJcy5cbiAgaWYgKGNvbXBvbmVudCAmJiB0eXBlb2YgY29tcG9uZW50ID09PSAn
b2JqZWN0JyAmJiBjb21wb25lbnQua2V5ICE9IG51bGwpIHtcbiAgICAvLyBFeHBsaWNpdCBrZXlc
biAgICByZXR1cm4gS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGNvbXBvbmVudC5rZXkpO1xuICB9XG4g
IC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0XG4gIHJl
dHVybiBpbmRleC50b1N0cmluZygzNik7XG59XG5cbi8qKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRy
ZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0geyFzdHJpbmd9IG5hbWVTb0Zh
ciBOYW1lIG9mIHRoZSBrZXkgcGF0aCBzbyBmYXIuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gY2Fs
bGJhY2sgQ2FsbGJhY2sgdG8gaW52b2tlIHdpdGggZWFjaCBjaGlsZCBmb3VuZC5cbiAqIEBwYXJh
bSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBVc2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdGhyb3VnaG91
dCB0aGUgdHJhdmVyc2FsXG4gKiBwcm9jZXNzLlxuICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51
bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNl
QWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCBuYW1lU29GYXIsIGNhbGxiYWNrLCB0cmF2ZXJzZUNv
bnRleHQpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgY2hpbGRyZW47XG5cbiAgaWYgKHR5cGUgPT09
ICd1bmRlZmluZWQnIHx8IHR5cGUgPT09ICdib29sZWFuJykge1xuICAgIC8vIEFsbCBvZiB0aGUg
YWJvdmUgYXJlIHBlcmNlaXZlZCBhcyBudWxsLlxuICAgIGNoaWxkcmVuID0gbnVsbDtcbiAgfVxu
XG4gIGlmIChjaGlsZHJlbiA9PT0gbnVsbCB8fCB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09
PSAnbnVtYmVyJyB8fFxuICAvLyBUaGUgZm9sbG93aW5nIGlzIGlubGluZWQgZnJvbSBSZWFjdEVs
ZW1lbnQuIFRoaXMgbWVhbnMgd2UgY2FuIG9wdGltaXplXG4gIC8vIHNvbWUgY2hlY2tzLiBSZWFj
dCBGaWJlciBhbHNvIGlubGluZXMgdGhpcyBsb2dpYyBmb3Igc2ltaWxhciBwdXJwb3Nlcy5cbiAg
dHlwZSA9PT0gJ29iamVjdCcgJiYgY2hpbGRyZW4uJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRf
VFlQRSkge1xuICAgIGNhbGxiYWNrKHRyYXZlcnNlQ29udGV4dCwgY2hpbGRyZW4sXG4gICAgLy8g
SWYgaXQncyB0aGUgb25seSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUgYXMgaWYgaXQgd2FzIHdyYXBw
ZWQgaW4gYW4gYXJyYXlcbiAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0aGUgbnVt
YmVyIG9mIGNoaWxkcmVuIGdyb3dzLlxuICAgIG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1Ig
KyBnZXRDb21wb25lbnRLZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFyKTtcbiAgICByZXR1cm4g
MTtcbiAgfVxuXG4gIHZhciBjaGlsZDtcbiAgdmFyIG5leHROYW1lO1xuICB2YXIgc3VidHJlZUNv
dW50ID0gMDsgLy8gQ291bnQgb2YgY2hpbGRyZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc3VidHJl
ZS5cbiAgdmFyIG5leHROYW1lUHJlZml4ID0gbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiA6
IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRPUjtcblxuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJl
bikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4g
ICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZp
eCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaSk7XG4gICAgICBzdWJ0cmVlQ291bnQgKz0gdHJh
dmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VD
b250ZXh0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVy
YXRvckZuKGNoaWxkcmVuKTtcbiAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgdmFyIGl0ZXJh
dG9yID0gaXRlcmF0b3JGbi5jYWxsKGNoaWxkcmVuKTtcbiAgICAgIHZhciBzdGVwO1xuICAgICAg
aWYgKGl0ZXJhdG9yRm4gIT09IGNoaWxkcmVuLmVudHJpZXMpIHtcbiAgICAgICAgdmFyIGlpID0g
MDtcbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAg
ICAgICAgIGNoaWxkID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1l
UHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpaSsrKTtcbiAgICAgICAgICBzdWJ0cmVl
Q291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFj
aywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAg
aWYgKGZhbHNlKSB7XG4gICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnJztc
biAgICAgICAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgICAgICAgICAg
dmFyIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5n
ZXROYW1lKCk7XG4gICAgICAgICAgICBpZiAobWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUpIHtcbiAg
ICAgICAgICAgICAgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSA9ICcgQ2hlY2sgdGhlIHJlbmRlciBt
ZXRob2Qgb2YgYCcgKyBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSArICdgLic7XG4gICAgICAgICAg
ICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyB3YXJuaW5nKGRpZFdhcm5BYm91dE1hcHMsICdVc2luZyBNYXBzIGFzIGNoaWxk
cmVuIGlzIG5vdCB5ZXQgZnVsbHkgc3VwcG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRh
bCBmZWF0dXJlIHRoYXQgbWlnaHQgYmUgcmVtb3ZlZC4gQ29udmVydCBpdCB0byBhICcgKyAnc2Vx
dWVuY2UgLyBpdGVyYWJsZSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJXMnLCBtYXBz
QXNDaGlsZHJlbkFkZGVuZHVtKSA6IHZvaWQgMDtcbiAgICAgICAgICBkaWRXYXJuQWJvdXRNYXBz
ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50
cnkgW2ssdl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cbiAgICAgICAgd2hpbGUgKCEoc3Rl
cCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAu
dmFsdWU7XG4gICAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICBjaGlsZCA9IGVudHJ5
WzFdO1xuICAgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIEtleUVzY2FwZVV0
aWxzLmVzY2FwZShlbnRyeVswXSkgKyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hp
bGQsIDApO1xuICAgICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5J
bXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgICAg
ICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0
Jykge1xuICAgICAgdmFyIGFkZGVuZHVtID0gJyc7XG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAg
ICAgYWRkZW5kdW0gPSAnIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNo
aWxkcmVuLCB1c2UgYW4gYXJyYXkgJyArICdpbnN0ZWFkIG9yIHdyYXAgdGhlIG9iamVjdCB1c2lu
ZyBjcmVhdGVGcmFnbWVudChvYmplY3QpIGZyb20gdGhlICcgKyAnUmVhY3QgYWRkLW9ucy4nO1xu
ICAgICAgICBpZiAoY2hpbGRyZW4uX2lzUmVhY3RFbGVtZW50KSB7XG4gICAgICAgICAgYWRkZW5k
dW0gPSBcIiBJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyBhbiBlbGVtZW50IGNyZWF0ZWQgYnkg
YSBkaWZmZXJlbnQgXCIgKyAndmVyc2lvbiBvZiBSZWFjdC4gTWFrZSBzdXJlIHRvIHVzZSBvbmx5
IG9uZSBjb3B5IG9mIFJlYWN0Lic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFJlYWN0Q3VycmVu
dE93bmVyLmN1cnJlbnQpIHtcbiAgICAgICAgICB2YXIgbmFtZSA9IFJlYWN0Q3VycmVudE93bmVy
LmN1cnJlbnQuZ2V0TmFtZSgpO1xuICAgICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICBh
ZGRlbmR1bSArPSAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7
XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgY2hpbGRyZW5TdHJp
bmcgPSBTdHJpbmcoY2hpbGRyZW4pO1xuICAgICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlhbnQo
ZmFsc2UsICdPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6ICVz
KS4lcycsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0
aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGls
ZHJlblN0cmluZywgYWRkZW5kdW0pIDogX3Byb2RJbnZhcmlhbnQoJzMxJywgY2hpbGRyZW5TdHJp
bmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8gJ29iamVjdCB3aXRoIGtleXMgeycgKyBPYmplY3Qu
a2V5cyhjaGlsZHJlbikuam9pbignLCAnKSArICd9JyA6IGNoaWxkcmVuU3RyaW5nLCBhZGRlbmR1
bSkgOiB2b2lkIDA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN1YnRyZWVDb3VudDtcbn1cblxu
LyoqXG4gKiBUcmF2ZXJzZXMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBh
cyBgcHJvcHMuY2hpbGRyZW5gLCBidXRcbiAqIG1pZ2h0IGFsc28gYmUgc3BlY2lmaWVkIHRocm91
Z2ggYXR0cmlidXRlczpcbiAqXG4gKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMu
Y2hpbGRyZW4sIC4uLilgXG4gKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMubGVm
dFBhbmVsQ2hpbGRyZW4sIC4uLilgXG4gKlxuICogVGhlIGB0cmF2ZXJzZUNvbnRleHRgIGlzIGFu
IG9wdGlvbmFsIGFyZ3VtZW50IHRoYXQgaXMgcGFzc2VkIHRocm91Z2ggdGhlXG4gKiBlbnRpcmUg
dHJhdmVyc2FsLiBJdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBhY2N1bXVsYXRpb25zIG9yIGFueXRo
aW5nIGVsc2UgdGhhdFxuICogdGhlIGNhbGxiYWNrIG1pZ2h0IGZpbmQgcmVsZXZhbnQuXG4gKlxu
ICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBvYmplY3QuXG4gKiBAcGFyYW0g
eyFmdW5jdGlvbn0gY2FsbGJhY2sgVG8gaW52b2tlIHVwb24gdHJhdmVyc2luZyBlYWNoIGNoaWxk
LlxuICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgZm9yIHRyYXZlcnNhbC5c
biAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0
cmVlLlxuICovXG5mdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBjYWxsYmFj
aywgdHJhdmVyc2VDb250ZXh0KSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0
dXJuIDA7XG4gIH1cblxuICByZXR1cm4gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRyZW4s
ICcnLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0
cmF2ZXJzZUFsbENoaWxkcmVuO1xuXG4vKioqLyB9KSxcbi8qIDEwOCAqL1xuLyoqKi8gKGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJp
Y3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cblxuXG4vKiBnbG9i
YWwgU3ltYm9sICovXG5cbnZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAn
ZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVyYXRvcjtcbnZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9
ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLlxuXG4vKipcbiAqIFJldHVybnMg
dGhlIGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlvbiBjb250YWluZWQgb24gdGhlIGl0ZXJhYmxlIG9i
amVjdC5cbiAqXG4gKiBCZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRl
cmFibGUgYXMgY29udGV4dDpcbiAqXG4gKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRv
ckZuKG15SXRlcmFibGUpO1xuICogICAgIGlmIChpdGVyYXRvckZuKSB7XG4gKiAgICAgICB2YXIg
aXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobXlJdGVyYWJsZSk7XG4gKiAgICAgICAuLi5cbiAq
ICAgICB9XG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlXG4gKiBAcmV0dXJu
IHs/ZnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkg
e1xuICB2YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRlcmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAm
JiBtYXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lU
RVJBVE9SX1NZTUJPTF0pO1xuICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicp
IHtcbiAgICByZXR1cm4gaXRlcmF0b3JGbjtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdl
dEl0ZXJhdG9yRm47XG5cbi8qKiovIH0pLFxuLyogMTA5ICovXG4vKioqLyAoZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xu
LyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuXG5cbi8qKlxuICogRXNjYXBl
IGFuZCB3cmFwIGtleSBzbyBpdCBpcyBzYWZlIHRvIHVzZSBhcyBhIHJlYWN0aWRcbiAqXG4gKiBA
cGFyYW0ge3N0cmluZ30ga2V5IHRvIGJlIGVzY2FwZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHRo
ZSBlc2NhcGVkIGtleS5cbiAqL1xuXG5mdW5jdGlvbiBlc2NhcGUoa2V5KSB7XG4gIHZhciBlc2Nh
cGVSZWdleCA9IC9bPTpdL2c7XG4gIHZhciBlc2NhcGVyTG9va3VwID0ge1xuICAgICc9JzogJz0w
JyxcbiAgICAnOic6ICc9MidcbiAgfTtcbiAgdmFyIGVzY2FwZWRTdHJpbmcgPSAoJycgKyBrZXkp
LnJlcGxhY2UoZXNjYXBlUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHJldHVybiBlc2Nh
cGVyTG9va3VwW21hdGNoXTtcbiAgfSk7XG5cbiAgcmV0dXJuICckJyArIGVzY2FwZWRTdHJpbmc7
XG59XG5cbi8qKlxuICogVW5lc2NhcGUgYW5kIHVud3JhcCBrZXkgZm9yIGh1bWFuLXJlYWRhYmxl
IGRpc3BsYXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIHVuZXNjYXBlLlxuICogQHJl
dHVybiB7c3RyaW5nfSB0aGUgdW5lc2NhcGVkIGtleS5cbiAqL1xuZnVuY3Rpb24gdW5lc2NhcGUo
a2V5KSB7XG4gIHZhciB1bmVzY2FwZVJlZ2V4ID0gLyg9MHw9MikvZztcbiAgdmFyIHVuZXNjYXBl
ckxvb2t1cCA9IHtcbiAgICAnPTAnOiAnPScsXG4gICAgJz0yJzogJzonXG4gIH07XG4gIHZhciBr
ZXlTdWJzdHJpbmcgPSBrZXlbMF0gPT09ICcuJyAmJiBrZXlbMV0gPT09ICckJyA/IGtleS5zdWJz
dHJpbmcoMikgOiBrZXkuc3Vic3RyaW5nKDEpO1xuXG4gIHJldHVybiAoJycgKyBrZXlTdWJzdHJp
bmcpLnJlcGxhY2UodW5lc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgcmV0dXJu
IHVuZXNjYXBlckxvb2t1cFttYXRjaF07XG4gIH0pO1xufVxuXG52YXIgS2V5RXNjYXBlVXRpbHMg
PSB7XG4gIGVzY2FwZTogZXNjYXBlLFxuICB1bmVzY2FwZTogdW5lc2NhcGVcbn07XG5cbm1vZHVs
ZS5leHBvcnRzID0gS2V5RXNjYXBlVXRpbHM7XG5cbi8qKiovIH0pLFxuLyogMTEwICovXG4vKioq
LyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwi
dXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52YXIg
UmVhY3RFbGVtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5cbi8qKlxuICogQ3JlYXRl
IGEgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgSFRNTCB0YWcgZWxlbWVudHMuXG4gKlxuICogQHByaXZh
dGVcbiAqL1xudmFyIGNyZWF0ZURPTUZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9y
eTtcbmlmIChmYWxzZSkge1xuICB2YXIgUmVhY3RFbGVtZW50VmFsaWRhdG9yID0gcmVxdWlyZSgn
Li9SZWFjdEVsZW1lbnRWYWxpZGF0b3InKTtcbiAgY3JlYXRlRE9NRmFjdG9yeSA9IFJlYWN0RWxl
bWVudFZhbGlkYXRvci5jcmVhdGVGYWN0b3J5O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXBw
aW5nIGZyb20gc3VwcG9ydGVkIEhUTUwgdGFncyB0byBgUmVhY3RET01Db21wb25lbnRgIGNsYXNz
ZXMuXG4gKlxuICogQHB1YmxpY1xuICovXG52YXIgUmVhY3RET01GYWN0b3JpZXMgPSB7XG4gIGE6
IGNyZWF0ZURPTUZhY3RvcnkoJ2EnKSxcbiAgYWJicjogY3JlYXRlRE9NRmFjdG9yeSgnYWJicicp
LFxuICBhZGRyZXNzOiBjcmVhdGVET01GYWN0b3J5KCdhZGRyZXNzJyksXG4gIGFyZWE6IGNyZWF0
ZURPTUZhY3RvcnkoJ2FyZWEnKSxcbiAgYXJ0aWNsZTogY3JlYXRlRE9NRmFjdG9yeSgnYXJ0aWNs
ZScpLFxuICBhc2lkZTogY3JlYXRlRE9NRmFjdG9yeSgnYXNpZGUnKSxcbiAgYXVkaW86IGNyZWF0
ZURPTUZhY3RvcnkoJ2F1ZGlvJyksXG4gIGI6IGNyZWF0ZURPTUZhY3RvcnkoJ2InKSxcbiAgYmFz
ZTogY3JlYXRlRE9NRmFjdG9yeSgnYmFzZScpLFxuICBiZGk6IGNyZWF0ZURPTUZhY3RvcnkoJ2Jk
aScpLFxuICBiZG86IGNyZWF0ZURPTUZhY3RvcnkoJ2JkbycpLFxuICBiaWc6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2JpZycpLFxuICBibG9ja3F1b3RlOiBjcmVhdGVET01GYWN0b3J5KCdibG9ja3F1b3Rl
JyksXG4gIGJvZHk6IGNyZWF0ZURPTUZhY3RvcnkoJ2JvZHknKSxcbiAgYnI6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2JyJyksXG4gIGJ1dHRvbjogY3JlYXRlRE9NRmFjdG9yeSgnYnV0dG9uJyksXG4gIGNh
bnZhczogY3JlYXRlRE9NRmFjdG9yeSgnY2FudmFzJyksXG4gIGNhcHRpb246IGNyZWF0ZURPTUZh
Y3RvcnkoJ2NhcHRpb24nKSxcbiAgY2l0ZTogY3JlYXRlRE9NRmFjdG9yeSgnY2l0ZScpLFxuICBj
b2RlOiBjcmVhdGVET01GYWN0b3J5KCdjb2RlJyksXG4gIGNvbDogY3JlYXRlRE9NRmFjdG9yeSgn
Y29sJyksXG4gIGNvbGdyb3VwOiBjcmVhdGVET01GYWN0b3J5KCdjb2xncm91cCcpLFxuICBkYXRh
OiBjcmVhdGVET01GYWN0b3J5KCdkYXRhJyksXG4gIGRhdGFsaXN0OiBjcmVhdGVET01GYWN0b3J5
KCdkYXRhbGlzdCcpLFxuICBkZDogY3JlYXRlRE9NRmFjdG9yeSgnZGQnKSxcbiAgZGVsOiBjcmVh
dGVET01GYWN0b3J5KCdkZWwnKSxcbiAgZGV0YWlsczogY3JlYXRlRE9NRmFjdG9yeSgnZGV0YWls
cycpLFxuICBkZm46IGNyZWF0ZURPTUZhY3RvcnkoJ2RmbicpLFxuICBkaWFsb2c6IGNyZWF0ZURP
TUZhY3RvcnkoJ2RpYWxvZycpLFxuICBkaXY6IGNyZWF0ZURPTUZhY3RvcnkoJ2RpdicpLFxuICBk
bDogY3JlYXRlRE9NRmFjdG9yeSgnZGwnKSxcbiAgZHQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2R0Jyks
XG4gIGVtOiBjcmVhdGVET01GYWN0b3J5KCdlbScpLFxuICBlbWJlZDogY3JlYXRlRE9NRmFjdG9y
eSgnZW1iZWQnKSxcbiAgZmllbGRzZXQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2ZpZWxkc2V0JyksXG4g
IGZpZ2NhcHRpb246IGNyZWF0ZURPTUZhY3RvcnkoJ2ZpZ2NhcHRpb24nKSxcbiAgZmlndXJlOiBj
cmVhdGVET01GYWN0b3J5KCdmaWd1cmUnKSxcbiAgZm9vdGVyOiBjcmVhdGVET01GYWN0b3J5KCdm
b290ZXInKSxcbiAgZm9ybTogY3JlYXRlRE9NRmFjdG9yeSgnZm9ybScpLFxuICBoMTogY3JlYXRl
RE9NRmFjdG9yeSgnaDEnKSxcbiAgaDI6IGNyZWF0ZURPTUZhY3RvcnkoJ2gyJyksXG4gIGgzOiBj
cmVhdGVET01GYWN0b3J5KCdoMycpLFxuICBoNDogY3JlYXRlRE9NRmFjdG9yeSgnaDQnKSxcbiAg
aDU6IGNyZWF0ZURPTUZhY3RvcnkoJ2g1JyksXG4gIGg2OiBjcmVhdGVET01GYWN0b3J5KCdoNicp
LFxuICBoZWFkOiBjcmVhdGVET01GYWN0b3J5KCdoZWFkJyksXG4gIGhlYWRlcjogY3JlYXRlRE9N
RmFjdG9yeSgnaGVhZGVyJyksXG4gIGhncm91cDogY3JlYXRlRE9NRmFjdG9yeSgnaGdyb3VwJyks
XG4gIGhyOiBjcmVhdGVET01GYWN0b3J5KCdocicpLFxuICBodG1sOiBjcmVhdGVET01GYWN0b3J5
KCdodG1sJyksXG4gIGk6IGNyZWF0ZURPTUZhY3RvcnkoJ2knKSxcbiAgaWZyYW1lOiBjcmVhdGVE
T01GYWN0b3J5KCdpZnJhbWUnKSxcbiAgaW1nOiBjcmVhdGVET01GYWN0b3J5KCdpbWcnKSxcbiAg
aW5wdXQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2lucHV0JyksXG4gIGluczogY3JlYXRlRE9NRmFjdG9y
eSgnaW5zJyksXG4gIGtiZDogY3JlYXRlRE9NRmFjdG9yeSgna2JkJyksXG4gIGtleWdlbjogY3Jl
YXRlRE9NRmFjdG9yeSgna2V5Z2VuJyksXG4gIGxhYmVsOiBjcmVhdGVET01GYWN0b3J5KCdsYWJl
bCcpLFxuICBsZWdlbmQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2xlZ2VuZCcpLFxuICBsaTogY3JlYXRl
RE9NRmFjdG9yeSgnbGknKSxcbiAgbGluazogY3JlYXRlRE9NRmFjdG9yeSgnbGluaycpLFxuICBt
YWluOiBjcmVhdGVET01GYWN0b3J5KCdtYWluJyksXG4gIG1hcDogY3JlYXRlRE9NRmFjdG9yeSgn
bWFwJyksXG4gIG1hcms6IGNyZWF0ZURPTUZhY3RvcnkoJ21hcmsnKSxcbiAgbWVudTogY3JlYXRl
RE9NRmFjdG9yeSgnbWVudScpLFxuICBtZW51aXRlbTogY3JlYXRlRE9NRmFjdG9yeSgnbWVudWl0
ZW0nKSxcbiAgbWV0YTogY3JlYXRlRE9NRmFjdG9yeSgnbWV0YScpLFxuICBtZXRlcjogY3JlYXRl
RE9NRmFjdG9yeSgnbWV0ZXInKSxcbiAgbmF2OiBjcmVhdGVET01GYWN0b3J5KCduYXYnKSxcbiAg
bm9zY3JpcHQ6IGNyZWF0ZURPTUZhY3RvcnkoJ25vc2NyaXB0JyksXG4gIG9iamVjdDogY3JlYXRl
RE9NRmFjdG9yeSgnb2JqZWN0JyksXG4gIG9sOiBjcmVhdGVET01GYWN0b3J5KCdvbCcpLFxuICBv
cHRncm91cDogY3JlYXRlRE9NRmFjdG9yeSgnb3B0Z3JvdXAnKSxcbiAgb3B0aW9uOiBjcmVhdGVE
T01GYWN0b3J5KCdvcHRpb24nKSxcbiAgb3V0cHV0OiBjcmVhdGVET01GYWN0b3J5KCdvdXRwdXQn
KSxcbiAgcDogY3JlYXRlRE9NRmFjdG9yeSgncCcpLFxuICBwYXJhbTogY3JlYXRlRE9NRmFjdG9y
eSgncGFyYW0nKSxcbiAgcGljdHVyZTogY3JlYXRlRE9NRmFjdG9yeSgncGljdHVyZScpLFxuICBw
cmU6IGNyZWF0ZURPTUZhY3RvcnkoJ3ByZScpLFxuICBwcm9ncmVzczogY3JlYXRlRE9NRmFjdG9y
eSgncHJvZ3Jlc3MnKSxcbiAgcTogY3JlYXRlRE9NRmFjdG9yeSgncScpLFxuICBycDogY3JlYXRl
RE9NRmFjdG9yeSgncnAnKSxcbiAgcnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3J0JyksXG4gIHJ1Ynk6
IGNyZWF0ZURPTUZhY3RvcnkoJ3J1YnknKSxcbiAgczogY3JlYXRlRE9NRmFjdG9yeSgncycpLFxu
ICBzYW1wOiBjcmVhdGVET01GYWN0b3J5KCdzYW1wJyksXG4gIHNjcmlwdDogY3JlYXRlRE9NRmFj
dG9yeSgnc2NyaXB0JyksXG4gIHNlY3Rpb246IGNyZWF0ZURPTUZhY3RvcnkoJ3NlY3Rpb24nKSxc
biAgc2VsZWN0OiBjcmVhdGVET01GYWN0b3J5KCdzZWxlY3QnKSxcbiAgc21hbGw6IGNyZWF0ZURP
TUZhY3RvcnkoJ3NtYWxsJyksXG4gIHNvdXJjZTogY3JlYXRlRE9NRmFjdG9yeSgnc291cmNlJyks
XG4gIHNwYW46IGNyZWF0ZURPTUZhY3RvcnkoJ3NwYW4nKSxcbiAgc3Ryb25nOiBjcmVhdGVET01G
YWN0b3J5KCdzdHJvbmcnKSxcbiAgc3R5bGU6IGNyZWF0ZURPTUZhY3RvcnkoJ3N0eWxlJyksXG4g
IHN1YjogY3JlYXRlRE9NRmFjdG9yeSgnc3ViJyksXG4gIHN1bW1hcnk6IGNyZWF0ZURPTUZhY3Rv
cnkoJ3N1bW1hcnknKSxcbiAgc3VwOiBjcmVhdGVET01GYWN0b3J5KCdzdXAnKSxcbiAgdGFibGU6
IGNyZWF0ZURPTUZhY3RvcnkoJ3RhYmxlJyksXG4gIHRib2R5OiBjcmVhdGVET01GYWN0b3J5KCd0
Ym9keScpLFxuICB0ZDogY3JlYXRlRE9NRmFjdG9yeSgndGQnKSxcbiAgdGV4dGFyZWE6IGNyZWF0
ZURPTUZhY3RvcnkoJ3RleHRhcmVhJyksXG4gIHRmb290OiBjcmVhdGVET01GYWN0b3J5KCd0Zm9v
dCcpLFxuICB0aDogY3JlYXRlRE9NRmFjdG9yeSgndGgnKSxcbiAgdGhlYWQ6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3RoZWFkJyksXG4gIHRpbWU6IGNyZWF0ZURPTUZhY3RvcnkoJ3RpbWUnKSxcbiAgdGl0
bGU6IGNyZWF0ZURPTUZhY3RvcnkoJ3RpdGxlJyksXG4gIHRyOiBjcmVhdGVET01GYWN0b3J5KCd0
cicpLFxuICB0cmFjazogY3JlYXRlRE9NRmFjdG9yeSgndHJhY2snKSxcbiAgdTogY3JlYXRlRE9N
RmFjdG9yeSgndScpLFxuICB1bDogY3JlYXRlRE9NRmFjdG9yeSgndWwnKSxcbiAgJ3Zhcic6IGNy
ZWF0ZURPTUZhY3RvcnkoJ3ZhcicpLFxuICB2aWRlbzogY3JlYXRlRE9NRmFjdG9yeSgndmlkZW8n
KSxcbiAgd2JyOiBjcmVhdGVET01GYWN0b3J5KCd3YnInKSxcblxuICAvLyBTVkdcbiAgY2lyY2xl
OiBjcmVhdGVET01GYWN0b3J5KCdjaXJjbGUnKSxcbiAgY2xpcFBhdGg6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2NsaXBQYXRoJyksXG4gIGRlZnM6IGNyZWF0ZURPTUZhY3RvcnkoJ2RlZnMnKSxcbiAgZWxs
aXBzZTogY3JlYXRlRE9NRmFjdG9yeSgnZWxsaXBzZScpLFxuICBnOiBjcmVhdGVET01GYWN0b3J5
KCdnJyksXG4gIGltYWdlOiBjcmVhdGVET01GYWN0b3J5KCdpbWFnZScpLFxuICBsaW5lOiBjcmVh
dGVET01GYWN0b3J5KCdsaW5lJyksXG4gIGxpbmVhckdyYWRpZW50OiBjcmVhdGVET01GYWN0b3J5
KCdsaW5lYXJHcmFkaWVudCcpLFxuICBtYXNrOiBjcmVhdGVET01GYWN0b3J5KCdtYXNrJyksXG4g
IHBhdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ3BhdGgnKSxcbiAgcGF0dGVybjogY3JlYXRlRE9NRmFj
dG9yeSgncGF0dGVybicpLFxuICBwb2x5Z29uOiBjcmVhdGVET01GYWN0b3J5KCdwb2x5Z29uJyks
XG4gIHBvbHlsaW5lOiBjcmVhdGVET01GYWN0b3J5KCdwb2x5bGluZScpLFxuICByYWRpYWxHcmFk
aWVudDogY3JlYXRlRE9NRmFjdG9yeSgncmFkaWFsR3JhZGllbnQnKSxcbiAgcmVjdDogY3JlYXRl
RE9NRmFjdG9yeSgncmVjdCcpLFxuICBzdG9wOiBjcmVhdGVET01GYWN0b3J5KCdzdG9wJyksXG4g
IHN2ZzogY3JlYXRlRE9NRmFjdG9yeSgnc3ZnJyksXG4gIHRleHQ6IGNyZWF0ZURPTUZhY3Rvcnko
J3RleHQnKSxcbiAgdHNwYW46IGNyZWF0ZURPTUZhY3RvcnkoJ3RzcGFuJylcbn07XG5cbm1vZHVs
ZS5leHBvcnRzID0gUmVhY3RET01GYWN0b3JpZXM7XG5cbi8qKiovIH0pLFxuLyogMTExICovXG4v
KioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52
YXIgX3JlcXVpcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KSxcbiAgICBpc1ZhbGlkRWxlbWVu
dCA9IF9yZXF1aXJlLmlzVmFsaWRFbGVtZW50O1xuXG52YXIgZmFjdG9yeSA9IF9fd2VicGFja19y
ZXF1aXJlX18oNTYpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoaXNWYWxpZEVsZW1lbnQp
O1xuXG4vKioqLyB9KSxcbi8qIDExMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuICovXG5cblxuXG52YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1
aXJlX18oNik7XG52YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbnZhciB3
YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxudmFyIFJlYWN0UHJvcFR5cGVzU2Vj
cmV0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Nyk7XG52YXIgY2hlY2tQcm9wVHlwZXMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDExMyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXNWYWxp
ZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpIHtcbiAgLyogZ2xvYmFsIFN5bWJvbCAqL1xu
ICB2YXIgSVRFUkFUT1JfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBT
eW1ib2wuaXRlcmF0b3I7XG4gIHZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9y
JzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLlxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpdGVy
YXRvciBtZXRob2QgZnVuY3Rpb24gY29udGFpbmVkIG9uIHRoZSBpdGVyYWJsZSBvYmplY3QuXG4g
ICAqXG4gICAqIEJlIHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJs
ZSBhcyBjb250ZXh0OlxuICAgKlxuICAgKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRv
ckZuKG15SXRlcmFibGUpO1xuICAgKiAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICogICAgICAg
dmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG15SXRlcmFibGUpO1xuICAgKiAgICAgICAu
Li5cbiAgICogICAgIH1cbiAgICpcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxl
XG4gICAqIEByZXR1cm4gez9mdW5jdGlvbn1cbiAgICovXG4gIGZ1bmN0aW9uIGdldEl0ZXJhdG9y
Rm4obWF5YmVJdGVyYWJsZSkge1xuICAgIHZhciBpdGVyYXRvckZuID0gbWF5YmVJdGVyYWJsZSAm
JiAoSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbSVRFUkFUT1JfU1lNQk9MXSB8fCBt
YXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXSk7XG4gICAgaWYgKHR5cGVvZiBpdGVy
YXRvckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JGbjtcbiAgICB9
XG4gIH1cblxuICAvKipcbiAgICogQ29sbGVjdGlvbiBvZiBtZXRob2RzIHRoYXQgYWxsb3cgZGVj
bGFyYXRpb24gYW5kIHZhbGlkYXRpb24gb2YgcHJvcHMgdGhhdCBhcmVcbiAgICogc3VwcGxpZWQg
dG8gUmVhY3QgY29tcG9uZW50cy4gRXhhbXBsZSB1c2FnZTpcbiAgICpcbiAgICogICB2YXIgUHJv
cHMgPSByZXF1aXJlKCdSZWFjdFByb3BUeXBlcycpO1xuICAgKiAgIHZhciBNeUFydGljbGUgPSBS
ZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAqICAgICBwcm9wVHlwZXM6IHtcbiAgICogICAgICAgLy8g
QW4gb3B0aW9uYWwgc3RyaW5nIHByb3AgbmFtZWQgXCJkZXNjcmlwdGlvblwiLlxuICAgKiAgICAg
ICBkZXNjcmlwdGlvbjogUHJvcHMuc3RyaW5nLFxuICAgKlxuICAgKiAgICAgICAvLyBBIHJlcXVp
cmVkIGVudW0gcHJvcCBuYW1lZCBcImNhdGVnb3J5XCIuXG4gICAqICAgICAgIGNhdGVnb3J5OiBQ
cm9wcy5vbmVPZihbJ05ld3MnLCdQaG90b3MnXSkuaXNSZXF1aXJlZCxcbiAgICpcbiAgICogICAg
ICAgLy8gQSBwcm9wIG5hbWVkIFwiZGlhbG9nXCIgdGhhdCByZXF1aXJlcyBhbiBpbnN0YW5jZSBv
ZiBEaWFsb2cuXG4gICAqICAgICAgIGRpYWxvZzogUHJvcHMuaW5zdGFuY2VPZihEaWFsb2cpLmlz
UmVxdWlyZWRcbiAgICogICAgIH0sXG4gICAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeyAuLi4g
fVxuICAgKiAgIH0pO1xuICAgKlxuICAgKiBBIG1vcmUgZm9ybWFsIHNwZWNpZmljYXRpb24gb2Yg
aG93IHRoZXNlIG1ldGhvZHMgYXJlIHVzZWQ6XG4gICAqXG4gICAqICAgdHlwZSA6PSBhcnJheXxi
b29sfGZ1bmN8b2JqZWN0fG51bWJlcnxzdHJpbmd8b25lT2YoWy4uLl0pfGluc3RhbmNlT2YoLi4u
KVxuICAgKiAgIGRlY2wgOj0gUmVhY3RQcm9wVHlwZXMue3R5cGV9KC5pc1JlcXVpcmVkKT9cbiAg
ICpcbiAgICogRWFjaCBhbmQgZXZlcnkgZGVjbGFyYXRpb24gcHJvZHVjZXMgYSBmdW5jdGlvbiB3
aXRoIHRoZSBzYW1lIHNpZ25hdHVyZS4gVGhpc1xuICAgKiBhbGxvd3MgdGhlIGNyZWF0aW9uIG9m
IGN1c3RvbSB2YWxpZGF0aW9uIGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqICB2
YXIgTXlMaW5rID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgKiAgICBwcm9wVHlwZXM6IHtcbiAg
ICogICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgb3IgVVJJIHByb3AgbmFtZWQgXCJocmVmXCIu
XG4gICAqICAgICAgaHJlZjogZnVuY3Rpb24ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1l
KSB7XG4gICAqICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgKiAg
ICAgICAgaWYgKHByb3BWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09ICdzdHJp
bmcnICYmXG4gICAqICAgICAgICAgICAgIShwcm9wVmFsdWUgaW5zdGFuY2VvZiBVUkkpKSB7XG4g
ICAqICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoXG4gICAqICAgICAgICAgICAgJ0V4cGVjdGVk
IGEgc3RyaW5nIG9yIGFuIFVSSSBmb3IgJyArIHByb3BOYW1lICsgJyBpbiAnICtcbiAgICogICAg
ICAgICAgICBjb21wb25lbnROYW1lXG4gICAqICAgICAgICAgICk7XG4gICAqICAgICAgICB9XG4g
ICAqICAgICAgfVxuICAgKiAgICB9LFxuICAgKiAgICByZW5kZXI6IGZ1bmN0aW9uKCkgey4uLn1c
biAgICogIH0pO1xuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG5cbiAgdmFyIEFOT05ZTU9V
UyA9ICc8PGFub255bW91cz4+JztcblxuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBs
aXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUaHJv
d2luZ1NoaW1zLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBjcmVh
dGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYXJyYXknKSxcbiAgICBib29sOiBjcmVhdGVQcmltaXRp
dmVUeXBlQ2hlY2tlcignYm9vbGVhbicpLFxuICAgIGZ1bmM6IGNyZWF0ZVByaW1pdGl2ZVR5cGVD
aGVja2VyKCdmdW5jdGlvbicpLFxuICAgIG51bWJlcjogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNr
ZXIoJ251bWJlcicpLFxuICAgIG9iamVjdDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ29i
amVjdCcpLFxuICAgIHN0cmluZzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N0cmluZycp
LFxuICAgIHN5bWJvbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N5bWJvbCcpLFxuXG4g
ICAgYW55OiBjcmVhdGVBbnlUeXBlQ2hlY2tlcigpLFxuICAgIGFycmF5T2Y6IGNyZWF0ZUFycmF5
T2ZUeXBlQ2hlY2tlcixcbiAgICBlbGVtZW50OiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIoKSxc
biAgICBpbnN0YW5jZU9mOiBjcmVhdGVJbnN0YW5jZVR5cGVDaGVja2VyLFxuICAgIG5vZGU6IGNy
ZWF0ZU5vZGVDaGVja2VyKCksXG4gICAgb2JqZWN0T2Y6IGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNr
ZXIsXG4gICAgb25lT2Y6IGNyZWF0ZUVudW1UeXBlQ2hlY2tlcixcbiAgICBvbmVPZlR5cGU6IGNy
ZWF0ZVVuaW9uVHlwZUNoZWNrZXIsXG4gICAgc2hhcGU6IGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXJc
biAgfTtcblxuICAvKipcbiAgICogaW5saW5lZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQg
cmVxdWlyaW5nIGNvbnN1bWVycyBzaGlwIHRoZWlyIG93blxuICAgKiBodHRwczovL2RldmVsb3Bl
ci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxf
T2JqZWN0cy9PYmplY3QvaXNcbiAgICovXG4gIC8qZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21w
YXJlKi9cbiAgZnVuY3Rpb24gaXMoeCwgeSkge1xuICAgIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1c
biAgICBpZiAoeCA9PT0geSkge1xuICAgICAgLy8gU3RlcHMgMS01LCA3LTEwXG4gICAgICAvLyBT
dGVwcyA2LmItNi5lOiArMCAhPSAtMFxuICAgICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09
IDEgLyB5O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTlxuICAg
ICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTtcbiAgICB9XG4gIH1cbiAgLyplc2xpbnQtZW5h
YmxlIG5vLXNlbGYtY29tcGFyZSovXG5cbiAgLyoqXG4gICAqIFdlIHVzZSBhbiBFcnJvci1saWtl
IG9iamVjdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBhcyBwZW9wbGUgbWF5IGNhbGxcbiAg
ICogUHJvcFR5cGVzIGRpcmVjdGx5IGFuZCBpbnNwZWN0IHRoZWlyIG91dHB1dC4gSG93ZXZlciwg
d2UgZG9uJ3QgdXNlIHJlYWxcbiAgICogRXJyb3JzIGFueW1vcmUuIFdlIGRvbid0IGluc3BlY3Qg
dGhlaXIgc3RhY2sgYW55d2F5LCBhbmQgY3JlYXRpbmcgdGhlbVxuICAgKiBpcyBwcm9oaWJpdGl2
ZWx5IGV4cGVuc2l2ZSBpZiB0aGV5IGFyZSBjcmVhdGVkIHRvbyBvZnRlbiwgc3VjaCBhcyB3aGF0
XG4gICAqIGhhcHBlbnMgaW4gb25lT2ZUeXBlKCkgZm9yIGFueSB0eXBlIGJlZm9yZSB0aGUgb25l
IHRoYXQgbWF0Y2hlZC5cbiAgICovXG4gIGZ1bmN0aW9uIFByb3BUeXBlRXJyb3IobWVzc2FnZSkg
e1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5zdGFjayA9ICcnO1xuICB9
XG4gIC8vIE1ha2UgYGluc3RhbmNlb2YgRXJyb3JgIHN0aWxsIHdvcmsgZm9yIHJldHVybmVkIGVy
cm9ycy5cbiAgUHJvcFR5cGVFcnJvci5wcm90b3R5cGUgPSBFcnJvci5wcm90b3R5cGU7XG5cbiAg
ZnVuY3Rpb24gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpIHtcbiAgICBpZiAo
ZmFsc2UpIHtcbiAgICAgIHZhciBtYW51YWxQcm9wVHlwZUNhbGxDYWNoZSA9IHt9O1xuICAgICAg
dmFyIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50ID0gMDtcbiAgICB9XG4gICAgZnVuY3Rpb24g
Y2hlY2tUeXBlKGlzUmVxdWlyZWQsIHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9j
YXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICBjb21wb25lbnROYW1lID0gY29t
cG9uZW50TmFtZSB8fCBBTk9OWU1PVVM7XG4gICAgICBwcm9wRnVsbE5hbWUgPSBwcm9wRnVsbE5h
bWUgfHwgcHJvcE5hbWU7XG5cbiAgICAgIGlmIChzZWNyZXQgIT09IFJlYWN0UHJvcFR5cGVzU2Vj
cmV0KSB7XG4gICAgICAgIGlmICh0aHJvd09uRGlyZWN0QWNjZXNzKSB7XG4gICAgICAgICAgLy8g
TmV3IGJlaGF2aW9yIG9ubHkgZm9yIHVzZXJzIG9mIGBwcm9wLXR5cGVzYCBwYWNrYWdlXG4gICAg
ICAgICAgaW52YXJpYW50KFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAnQ2FsbGlu
ZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBg
cHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAnVXNlIGBQcm9wVHlwZXMuY2hl
Y2tQcm9wVHlwZXMoKWAgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICAgICAgICdSZWFkIG1vcmUg
YXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICAgICAgICk7XG4gICAg
ICAgIH0gZWxzZSBpZiAoZmFsc2UpIHtcbiAgICAgICAgICAvLyBPbGQgYmVoYXZpb3IgZm9yIHBl
b3BsZSB1c2luZyBSZWFjdC5Qcm9wVHlwZXNcbiAgICAgICAgICB2YXIgY2FjaGVLZXkgPSBjb21w
b25lbnROYW1lICsgJzonICsgcHJvcE5hbWU7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAg
IW1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSAmJlxuICAgICAgICAgICAgLy8gQXZv
aWQgc3BhbW1pbmcgdGhlIGNvbnNvbGUgYmVjYXVzZSB0aGV5IGFyZSBvZnRlbiBub3QgYWN0aW9u
YWJsZSBleGNlcHQgZm9yIGxpYiBhdXRob3JzXG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdh
cm5pbmdDb3VudCA8IDNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHdhcm5pbmcoXG4gICAg
ICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAnWW91IGFyZSBtYW51YWxseSBjYWxsaW5n
IGEgUmVhY3QuUHJvcFR5cGVzIHZhbGlkYXRpb24gJyArXG4gICAgICAgICAgICAgICdmdW5jdGlv
biBmb3IgdGhlIGAlc2AgcHJvcCBvbiBgJXNgLiBUaGlzIGlzIGRlcHJlY2F0ZWQgJyArXG4gICAg
ICAgICAgICAgICdhbmQgd2lsbCB0aHJvdyBpbiB0aGUgc3RhbmRhbG9uZSBgcHJvcC10eXBlc2Ag
cGFja2FnZS4gJyArXG4gICAgICAgICAgICAgICdZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5p
bmcgZHVlIHRvIGEgdGhpcmQtcGFydHkgUHJvcFR5cGVzICcgK1xuICAgICAgICAgICAgICAnbGli
cmFyeS4gU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1kb250LWNhbGwtcHJvcHR5cGVz
ICcgKyAnZm9yIGRldGFpbHMuJyxcbiAgICAgICAgICAgICAgcHJvcEZ1bGxOYW1lLFxuICAgICAg
ICAgICAgICBjb21wb25lbnROYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbWFudWFs
UHJvcFR5cGVDYWxsQ2FjaGVbY2FjaGVLZXldID0gdHJ1ZTtcbiAgICAgICAgICAgIG1hbnVhbFBy
b3BUeXBlV2FybmluZ0NvdW50Kys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4g
ICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHtcbiAgICAgICAgaWYgKGlzUmVxdWly
ZWQpIHtcbiAgICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSBudWxsKSB7XG4gICAgICAg
ICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb24gKyAnIGAnICsg
cHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkICcgKyAoJ2luIGAnICsgY29t
cG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4nKSk7XG4gICAgICAgICAg
fVxuICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBsb2NhdGlvbiAr
ICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gJyArICgn
YCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuJykp
O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgcmV0dXJuIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRp
b24sIHByb3BGdWxsTmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNoYWluZWRDaGVj
a1R5cGUgPSBjaGVja1R5cGUuYmluZChudWxsLCBmYWxzZSk7XG4gICAgY2hhaW5lZENoZWNrVHlw
ZS5pc1JlcXVpcmVkID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgdHJ1ZSk7XG5cbiAgICByZXR1cm4g
Y2hhaW5lZENoZWNrVHlwZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVByaW1pdGl2ZVR5cGVD
aGVja2VyKGV4cGVjdGVkVHlwZSkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9w
TmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4g
ICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBl
ID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gZXhwZWN0
ZWRUeXBlKSB7XG4gICAgICAgIC8vIGBwcm9wVmFsdWVgIGJlaW5nIGluc3RhbmNlIG9mLCBzYXks
IGRhdGUvcmVnZXhwLCBwYXNzIHRoZSAnb2JqZWN0J1xuICAgICAgICAvLyBjaGVjaywgYnV0IHdl
IGNhbiBvZmZlciBhIG1vcmUgcHJlY2lzZSBlcnJvciBtZXNzYWdlIGhlcmUgcmF0aGVyIHRoYW5c
biAgICAgICAgLy8gJ29mIHR5cGUgYG9iamVjdGAnLlxuICAgICAgICB2YXIgcHJlY2lzZVR5cGUg
PSBnZXRQcmVjaXNlVHlwZShwcm9wVmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5
cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Ag
b2YgdHlwZSAnICsgKCdgJyArIHByZWNpc2VUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21w
b25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdgJyArIGV4cGVjdGVkVHlwZSArICdgLicp
KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRl
Q2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRl
QW55VHlwZUNoZWNrZXIoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2Vy
KGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0
ZUFycmF5T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRl
KHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkg
e1xuICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAg
ICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsg
J2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BU
eXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLicpO1xuICAgICAgfVxuICAgICAgdmFyIHByb3BW
YWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShwcm9wVmFs
dWUpKSB7XG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4g
ICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAn
IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Ag
c3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIGFycmF5Licp
KTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsg
aSsrKSB7XG4gICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwgaSwgY29t
cG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICdbJyArIGkgKyAnXScsIFJlYWN0
UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtc
biAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVy
biBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFs
aWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCkge1xu
ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9j
YXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BO
YW1lXTtcbiAgICAgIGlmICghaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkge1xuICAgICAgICB2
YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3
IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFt
ZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsg
Y29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuJykpO1xu
ICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFp
bmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVJbnN0
YW5jZVR5cGVDaGVja2VyKGV4cGVjdGVkQ2xhc3MpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShw
cm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtc
biAgICAgIGlmICghKHByb3BzW3Byb3BOYW1lXSBpbnN0YW5jZW9mIGV4cGVjdGVkQ2xhc3MpKSB7
XG4gICAgICAgIHZhciBleHBlY3RlZENsYXNzTmFtZSA9IGV4cGVjdGVkQ2xhc3MubmFtZSB8fCBB
Tk9OWU1PVVM7XG4gICAgICAgIHZhciBhY3R1YWxDbGFzc05hbWUgPSBnZXRDbGFzc05hbWUocHJv
cHNbcHJvcE5hbWVdKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlk
ICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2An
ICsgYWN0dWFsQ2xhc3NOYW1lICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsg
J2AsIGV4cGVjdGVkICcpICsgKCdpbnN0YW5jZSBvZiBgJyArIGV4cGVjdGVkQ2xhc3NOYW1lICsg
J2AuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBj
cmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBj
cmVhdGVFbnVtVHlwZUNoZWNrZXIoZXhwZWN0ZWRWYWx1ZXMpIHtcbiAgICBpZiAoIUFycmF5Lmlz
QXJyYXkoZXhwZWN0ZWRWYWx1ZXMpKSB7XG4gICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAn
SW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gaW5zdGFuY2Ug
b2YgYXJyYXkuJykgOiB2b2lkIDA7XG4gICAgICByZXR1cm4gZW1wdHlGdW5jdGlvbi50aGF0UmV0
dXJuc051bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1l
LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJv
cFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBl
Y3RlZFZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaXMocHJvcFZhbHVlLCBleHBl
Y3RlZFZhbHVlc1tpXSkpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAg
ICAgfVxuXG4gICAgICB2YXIgdmFsdWVzU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWRW
YWx1ZXMpO1xuICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2Nh
dGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB2YWx1ZSBgJyArIHByb3BWYWx1ZSAr
ICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBv
bmUgb2YgJyArIHZhbHVlc1N0cmluZyArICcuJykpO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRl
Q2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRl
T2JqZWN0T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRl
KHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkg
e1xuICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAg
ICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsg
J2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BU
eXBlIG5vdGF0aW9uIGluc2lkZSBvYmplY3RPZi4nKTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm9w
VmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlw
ZShwcm9wVmFsdWUpO1xuICAgICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAg
ICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyAr
IHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBs
aWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBvYmplY3QuJykpO1xu
ICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHByb3BWYWx1ZSkge1xuICAgICAgICBpZiAo
cHJvcFZhbHVlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICB2YXIgZXJyb3IgPSB0
eXBlQ2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BG
dWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICAgIGlm
IChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4g
ICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9
XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxu
XG4gIGZ1bmN0aW9uIGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIoYXJyYXlPZlR5cGVDaGVja2Vycykg
e1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhcnJheU9mVHlwZUNoZWNrZXJzKSkge1xuICAgICAg
IGZhbHNlID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25l
T2ZUeXBlLCBleHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhcnJheS4nKSA6IHZvaWQgMDtcbiAgICAg
IHJldHVybiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbDtcbiAgICB9XG5cbiAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGFycmF5T2ZUeXBlQ2hlY2tlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAg
IHZhciBjaGVja2VyID0gYXJyYXlPZlR5cGVDaGVja2Vyc1tpXTtcbiAgICAgIGlmICh0eXBlb2Yg
Y2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIGZh
bHNlLFxuICAgICAgICAgICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWQgdG8gb25lT2ZUeXBlLiBF
eHBlY3RlZCBhbiBhcnJheSBvZiBjaGVjayBmdW5jdGlvbnMsIGJ1dCAnICtcbiAgICAgICAgICAn
cmVjZWl2ZWQgJXMgYXQgaW5kZXggJXMuJyxcbiAgICAgICAgICBnZXRQb3N0Zml4Rm9yVHlwZVdh
cm5pbmcoY2hlY2tlciksXG4gICAgICAgICAgaVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4g
ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVu
Y3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwg
cHJvcEZ1bGxOYW1lKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5T2ZUeXBlQ2hl
Y2tlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBhcnJheU9mVHlwZUNo
ZWNrZXJzW2ldO1xuICAgICAgICBpZiAoY2hlY2tlcihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVu
dE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KSA9PSBu
dWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAg
ICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcg
KyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUg
KyAnYC4nKSk7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2
YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVOb2RlQ2hlY2tlcigpIHtcbiAgICBm
dW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9u
LCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICghaXNOb2RlKHByb3BzW3Byb3BOYW1lXSkpIHtc
biAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiAr
ICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVu
dE5hbWUgKyAnYCwgZXhwZWN0ZWQgYSBSZWFjdE5vZGUuJykpO1xuICAgICAgfVxuICAgICAgcmV0
dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2
YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVTaGFwZVR5cGVDaGVja2VyKHNoYXBl
VHlwZXMpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVu
dE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBw
cm9wc1twcm9wTmFtZV07XG4gICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFs
dWUpO1xuICAgICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4g
bmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxs
TmFtZSArICdgIG9mIHR5cGUgYCcgKyBwcm9wVHlwZSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAn
ICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBgb2JqZWN0YC4nKSk7XG4gICAgICB9XG4g
ICAgICBmb3IgKHZhciBrZXkgaW4gc2hhcGVUeXBlcykge1xuICAgICAgICB2YXIgY2hlY2tlciA9
IHNoYXBlVHlwZXNba2V5XTtcbiAgICAgICAgaWYgKCFjaGVja2VyKSB7XG4gICAgICAgICAgY29u
dGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUs
IGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwg
UmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICBy
ZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAg
IH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9
XG5cbiAgZnVuY3Rpb24gaXNOb2RlKHByb3BWYWx1ZSkge1xuICAgIHN3aXRjaCAodHlwZW9mIHBy
b3BWYWx1ZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4g
ICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2Ug
J2Jvb2xlYW4nOlxuICAgICAgICByZXR1cm4gIXByb3BWYWx1ZTtcbiAgICAgIGNhc2UgJ29iamVj
dCc6XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICBy
ZXR1cm4gcHJvcFZhbHVlLmV2ZXJ5KGlzTm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBy
b3BWYWx1ZSA9PT0gbnVsbCB8fCBpc1ZhbGlkRWxlbWVudChwcm9wVmFsdWUpKSB7XG4gICAgICAg
ICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaXRlcmF0b3JGbiA9IGdl
dEl0ZXJhdG9yRm4ocHJvcFZhbHVlKTtcbiAgICAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICAg
ICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwocHJvcFZhbHVlKTtcbiAgICAgICAg
ICB2YXIgc3RlcDtcbiAgICAgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gcHJvcFZhbHVlLmVudHJp
ZXMpIHtcbiAgICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUp
IHtcbiAgICAgICAgICAgICAgaWYgKCFpc05vZGUoc3RlcC52YWx1ZSkpIHtcbiAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAg
ICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSXRlcmF0b3Igd2lsbCBwcm92aWRlIGVudHJ5
IFtrLHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuXG4gICAgICAgICAgICB3aGlsZSAoIShz
dGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICAgIHZhciBlbnRyeSA9
IHN0ZXAudmFsdWU7XG4gICAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICAg
IGlmICghaXNOb2RlKGVudHJ5WzFdKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAg
ICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAg
ICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJl
dHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpc1N5bWJvbChwcm9wVHlwZSwg
cHJvcFZhbHVlKSB7XG4gICAgLy8gTmF0aXZlIFN5bWJvbC5cbiAgICBpZiAocHJvcFR5cGUgPT09
ICdzeW1ib2wnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyAxOS40LjMu
NSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddID09PSAnU3ltYm9sJ1xuICAgIGlmIChw
cm9wVmFsdWVbJ0BAdG9TdHJpbmdUYWcnXSA9PT0gJ1N5bWJvbCcpIHtcbiAgICAgIHJldHVybiB0
cnVlO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIGZvciBub24tc3BlYyBjb21wbGlhbnQgU3lt
Ym9scyB3aGljaCBhcmUgcG9seWZpbGxlZC5cbiAgICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1
bmN0aW9uJyAmJiBwcm9wVmFsdWUgaW5zdGFuY2VvZiBTeW1ib2wpIHtcbiAgICAgIHJldHVybiB0
cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEVxdWl2YWxlbnQg
b2YgYHR5cGVvZmAgYnV0IHdpdGggc3BlY2lhbCBoYW5kbGluZyBmb3IgYXJyYXkgYW5kIHJlZ2V4
cC5cbiAgZnVuY3Rpb24gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKSB7XG4gICAgdmFyIHByb3BUeXBl
ID0gdHlwZW9mIHByb3BWYWx1ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7
XG4gICAgICByZXR1cm4gJ2FycmF5JztcbiAgICB9XG4gICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5j
ZW9mIFJlZ0V4cCkge1xuICAgICAgLy8gT2xkIHdlYmtpdHMgKGF0IGxlYXN0IHVudGlsIEFuZHJv
aWQgNC4wKSByZXR1cm4gJ2Z1bmN0aW9uJyByYXRoZXIgdGhhblxuICAgICAgLy8gJ29iamVjdCcg
Zm9yIHR5cGVvZiBhIFJlZ0V4cC4gV2UnbGwgbm9ybWFsaXplIHRoaXMgaGVyZSBzbyB0aGF0IC9i
bGEvXG4gICAgICAvLyBwYXNzZXMgUHJvcFR5cGVzLm9iamVjdC5cbiAgICAgIHJldHVybiAnb2Jq
ZWN0JztcbiAgICB9XG4gICAgaWYgKGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpKSB7XG4g
ICAgICByZXR1cm4gJ3N5bWJvbCc7XG4gICAgfVxuICAgIHJldHVybiBwcm9wVHlwZTtcbiAgfVxu
XG4gIC8vIFRoaXMgaGFuZGxlcyBtb3JlIHR5cGVzIHRoYW4gYGdldFByb3BUeXBlYC4gT25seSB1
c2VkIGZvciBlcnJvciBtZXNzYWdlcy5cbiAgLy8gU2VlIGBjcmVhdGVQcmltaXRpdmVUeXBlQ2hl
Y2tlcmAuXG4gIGZ1bmN0aW9uIGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSkge1xuICAgIGlmICh0
eXBlb2YgcHJvcFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBwcm9wVmFsdWUgPT09IG51bGwpIHtc
biAgICAgIHJldHVybiAnJyArIHByb3BWYWx1ZTtcbiAgICB9XG4gICAgdmFyIHByb3BUeXBlID0g
Z2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICBpZiAocHJvcFR5cGUgPT09ICdvYmplY3QnKSB7
XG4gICAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4g
J2RhdGUnO1xuICAgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtc
biAgICAgICAgcmV0dXJuICdyZWdleHAnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJv
cFR5cGU7XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcG9zdGZpeGVkIHRv
IGEgd2FybmluZyBhYm91dCBhbiBpbnZhbGlkIHR5cGUuXG4gIC8vIEZvciBleGFtcGxlLCBcInVu
ZGVmaW5lZFwiIG9yIFwib2YgdHlwZSBhcnJheVwiXG4gIGZ1bmN0aW9uIGdldFBvc3RmaXhGb3JU
eXBlV2FybmluZyh2YWx1ZSkge1xuICAgIHZhciB0eXBlID0gZ2V0UHJlY2lzZVR5cGUodmFsdWUp
O1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAn
b2JqZWN0JzpcbiAgICAgICAgcmV0dXJuICdhbiAnICsgdHlwZTtcbiAgICAgIGNhc2UgJ2Jvb2xl
YW4nOlxuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICBjYXNlICdyZWdleHAnOlxuICAgICAgICBy
ZXR1cm4gJ2EgJyArIHR5cGU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHlwZTtc
biAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIGNsYXNzIG5hbWUgb2YgdGhlIG9iamVjdCwgaWYg
YW55LlxuICBmdW5jdGlvbiBnZXRDbGFzc05hbWUocHJvcFZhbHVlKSB7XG4gICAgaWYgKCFwcm9w
VmFsdWUuY29uc3RydWN0b3IgfHwgIXByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lKSB7XG4gICAg
ICByZXR1cm4gQU5PTllNT1VTO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcFZhbHVlLmNvbnN0cnVj
dG9yLm5hbWU7XG4gIH1cblxuICBSZWFjdFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyA9IGNoZWNr
UHJvcFR5cGVzO1xuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztc
blxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuXG5cbi8qKiovIH0pLFxuLyogMTEzICov
XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuXG5cbmlm
IChmYWxzZSkge1xuICB2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50
Jyk7XG4gIHZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuICB2YXIg
UmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3Jl
dCcpO1xuICB2YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307XG59XG5cbi8qKlxuICogQXNzZXJ0
IHRoYXQgdGhlIHZhbHVlcyBtYXRjaCB3aXRoIHRoZSB0eXBlIHNwZWNzLlxuICogRXJyb3IgbWVz
c2FnZXMgYXJlIG1lbW9yaXplZCBhbmQgd2lsbCBvbmx5IGJlIHNob3duIG9uY2UuXG4gKlxuICog
QHBhcmFtIHtvYmplY3R9IHR5cGVTcGVjcyBNYXAgb2YgbmFtZSB0byBhIFJlYWN0UHJvcFR5cGVc
biAqIEBwYXJhbSB7b2JqZWN0fSB2YWx1ZXMgUnVudGltZSB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJl
IHR5cGUtY2hlY2tlZFxuICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIGUuZy4gXCJwcm9wXCIs
IFwiY29udGV4dFwiLCBcImNoaWxkIGNvbnRleHRcIlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbXBv
bmVudE5hbWUgTmFtZSBvZiB0aGUgY29tcG9uZW50IGZvciBlcnJvciBtZXNzYWdlcy5cbiAqIEBw
YXJhbSB7P0Z1bmN0aW9ufSBnZXRTdGFjayBSZXR1cm5zIHRoZSBjb21wb25lbnQgc3RhY2suXG4g
KiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBjaGVja1Byb3BUeXBlcyh0eXBlU3BlY3MsIHZhbHVl
cywgbG9jYXRpb24sIGNvbXBvbmVudE5hbWUsIGdldFN0YWNrKSB7XG4gIGlmIChmYWxzZSkge1xu
ICAgIGZvciAodmFyIHR5cGVTcGVjTmFtZSBpbiB0eXBlU3BlY3MpIHtcbiAgICAgIGlmICh0eXBl
U3BlY3MuaGFzT3duUHJvcGVydHkodHlwZVNwZWNOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3I7
XG4gICAgICAgIC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5
IGRvLCB3ZSBkb24ndCB3YW50IHRvXG4gICAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3
aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cbiAgICAgICAgLy8gQWZ0
ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LlxuICAg
ICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlh
bnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxuICAgICAgICAgIC8vIGJlaGF2aW9y
IGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS5c
biAgICAgICAgICBpbnZhcmlhbnQodHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdID09PSAn
ZnVuY3Rpb24nLCAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVu
Y3Rpb24sIHVzdWFsbHkgZnJvbSAnICsgJ1JlYWN0LlByb3BUeXBlcy4nLCBjb21wb25lbnROYW1l
IHx8ICdSZWFjdCBjbGFzcycsIGxvY2F0aW9uLCB0eXBlU3BlY05hbWUpO1xuICAgICAgICAgIGVy
cm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBv
bmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAgICAg
IH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IgPSBleDtcbiAgICAgICAgfVxuICAgICAg
ICB3YXJuaW5nKCFlcnJvciB8fCBlcnJvciBpbnN0YW5jZW9mIEVycm9yLCAnJXM6IHR5cGUgc3Bl
Y2lmaWNhdGlvbiBvZiAlcyBgJXNgIGlzIGludmFsaWQ7IHRoZSB0eXBlIGNoZWNrZXIgJyArICdm
dW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVycm9yYCBidXQgcmV0dXJuZWQgYSAl
cy4gJyArICdZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBhc3MgYW4gYXJndW1lbnQgdG8gdGhl
IHR5cGUgY2hlY2tlciAnICsgJ2NyZWF0b3IgKGFycmF5T2YsIGluc3RhbmNlT2YsIG9iamVjdE9m
LCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgJyArICdzaGFwZSBhbGwgcmVxdWlyZSBhbiBhcmd1bWVu
dCkuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBsb2NhdGlvbiwgdHlwZVNwZWNO
YW1lLCB0eXBlb2YgZXJyb3IpO1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAm
JiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAgIC8v
IE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJl
IGEgbG90IG9mIHRoZVxuICAgICAgICAgIC8vIHNhbWUgZXJyb3IuXG4gICAgICAgICAgbG9nZ2Vk
VHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtcblxuICAgICAgICAgIHZhciBzdGFj
ayA9IGdldFN0YWNrID8gZ2V0U3RhY2soKSA6ICcnO1xuXG4gICAgICAgICAgd2FybmluZyhmYWxz
ZSwgJ0ZhaWxlZCAlcyB0eXBlOiAlcyVzJywgbG9jYXRpb24sIGVycm9yLm1lc3NhZ2UsIHN0YWNr
ICE9IG51bGwgPyBzdGFjayA6ICcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxu
fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNoZWNrUHJvcFR5cGVzO1xuXG5cbi8qKiovIH0pLFxuLyog
MTE0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cblxuXG5tb2R1bGUuZXhwb3J0cyA9ICcxNS42LjEnO1xuXG4vKioqLyB9KSxcbi8qIDExNSAq
L1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5c
blxudmFyIF9yZXF1aXJlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MiksXG4gICAgQ29tcG9uZW50
ID0gX3JlcXVpcmUuQ29tcG9uZW50O1xuXG52YXIgX3JlcXVpcmUyID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxNCksXG4gICAgaXNWYWxpZEVsZW1lbnQgPSBfcmVxdWlyZTIuaXNWYWxpZEVsZW1lbnQ7
XG5cbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNTMpO1xu
dmFyIGZhY3RvcnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNik7XG5cbm1vZHVsZS5leHBvcnRz
ID0gZmFjdG9yeShDb21wb25lbnQsIGlzVmFsaWRFbGVtZW50LCBSZWFjdE5vb3BVcGRhdGVRdWV1
ZSk7XG5cbi8qKiovIH0pLFxuLyogMTE2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52YXIgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1
aXJlX18oMyk7XG5cbnZhciBlbXB0eU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpO1xu
dmFyIF9pbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5pZiAoZmFsc2UpIHtc
biAgdmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG59XG5cbnZhciBN
SVhJTlNfS0VZID0gJ21peGlucyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBhbGxvdyB0aGUg
Y3JlYXRpb24gb2YgYW5vbnltb3VzIGZ1bmN0aW9ucyB3aGljaCBkbyBub3Rcbi8vIGhhdmUgLm5h
bWUgc2V0IHRvIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBiZWluZyBhc3NpZ25lZCB0by5cbmZ1
bmN0aW9uIGlkZW50aXR5KGZuKSB7XG4gIHJldHVybiBmbjtcbn1cblxudmFyIFJlYWN0UHJvcFR5
cGVMb2NhdGlvbk5hbWVzO1xuaWYgKGZhbHNlKSB7XG4gIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5h
bWVzID0ge1xuICAgIHByb3A6ICdwcm9wJyxcbiAgICBjb250ZXh0OiAnY29udGV4dCcsXG4gICAg
Y2hpbGRDb250ZXh0OiAnY2hpbGQgY29udGV4dCdcbiAgfTtcbn0gZWxzZSB7XG4gIFJlYWN0UHJv
cFR5cGVMb2NhdGlvbk5hbWVzID0ge307XG59XG5cbmZ1bmN0aW9uIGZhY3RvcnkoUmVhY3RDb21w
b25lbnQsIGlzVmFsaWRFbGVtZW50LCBSZWFjdE5vb3BVcGRhdGVRdWV1ZSkge1xuICAvKipcbiAg
ICogUG9saWNpZXMgdGhhdCBkZXNjcmliZSBtZXRob2RzIGluIGBSZWFjdENsYXNzSW50ZXJmYWNl
YC5cbiAgICovXG5cbiAgdmFyIGluamVjdGVkTWl4aW5zID0gW107XG5cbiAgLyoqXG4gICAqIENv
bXBvc2l0ZSBjb21wb25lbnRzIGFyZSBoaWdoZXItbGV2ZWwgY29tcG9uZW50cyB0aGF0IGNvbXBv
c2Ugb3RoZXIgY29tcG9zaXRlXG4gICAqIG9yIGhvc3QgY29tcG9uZW50cy5cbiAgICpcbiAgICog
VG8gY3JlYXRlIGEgbmV3IHR5cGUgb2YgYFJlYWN0Q2xhc3NgLCBwYXNzIGEgc3BlY2lmaWNhdGlv
biBvZlxuICAgKiB5b3VyIG5ldyBjbGFzcyB0byBgUmVhY3QuY3JlYXRlQ2xhc3NgLiBUaGUgb25s
eSByZXF1aXJlbWVudCBvZiB5b3VyIGNsYXNzXG4gICAqIHNwZWNpZmljYXRpb24gaXMgdGhhdCB5
b3UgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLlxuICAgKlxuICAgKiAgIHZhciBNeUNvbXBv
bmVudCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7
XG4gICAqICAgICAgIHJldHVybiA8ZGl2PkhlbGxvIFdvcmxkPC9kaXY+O1xuICAgKiAgICAgfVxu
ICAgKiAgIH0pO1xuICAgKlxuICAgKiBUaGUgY2xhc3Mgc3BlY2lmaWNhdGlvbiBzdXBwb3J0cyBh
IHNwZWNpZmljIHByb3RvY29sIG9mIG1ldGhvZHMgdGhhdCBoYXZlXG4gICAqIHNwZWNpYWwgbWVh
bmluZyAoZS5nLiBgcmVuZGVyYCkuIFNlZSBgUmVhY3RDbGFzc0ludGVyZmFjZWAgZm9yXG4gICAq
IG1vcmUgdGhlIGNvbXByZWhlbnNpdmUgcHJvdG9jb2wuIEFueSBvdGhlciBwcm9wZXJ0aWVzIGFu
ZCBtZXRob2RzIGluIHRoZVxuICAgKiBjbGFzcyBzcGVjaWZpY2F0aW9uIHdpbGwgYmUgYXZhaWxh
YmxlIG9uIHRoZSBwcm90b3R5cGUuXG4gICAqXG4gICAqIEBpbnRlcmZhY2UgUmVhY3RDbGFzc0lu
dGVyZmFjZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHZhciBSZWFjdENsYXNzSW50ZXJmYWNl
ID0ge1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIE1peGluIG9iamVjdHMgdG8gaW5jbHVk
ZSB3aGVuIGRlZmluaW5nIHlvdXIgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHR5cGUge2Fy
cmF5fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIG1peGluczogJ0RFRklORV9NQU5Z
JyxcblxuICAgIC8qKlxuICAgICAqIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgYW5k
IG1ldGhvZHMgdGhhdCBzaG91bGQgYmUgZGVmaW5lZCBvblxuICAgICAqIHRoZSBjb21wb25lbnQn
cyBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIGl0cyBwcm90b3R5cGUgKHN0YXRpYyBtZXRob2RzKS5c
biAgICAgKlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICov
XG4gICAgc3RhdGljczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIERlZmluaXRp
b24gb2YgcHJvcCB0eXBlcyBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAdHlw
ZSB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIHByb3BUeXBlczogJ0RF
RklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBl
cyBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAg
ICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbnRleHRUeXBlczogJ0RFRklORV9NQU5ZJyxc
blxuICAgIC8qKlxuICAgICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyB0aGlzIGNvbXBv
bmVudCBzZXRzIGZvciBpdHMgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0
fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNoaWxkQ29udGV4dFR5cGVzOiAnREVG
SU5FX01BTlknLFxuXG4gICAgLy8gPT09PSBEZWZpbml0aW9uIG1ldGhvZHMgPT09PVxuXG4gICAg
LyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgbW91bnRlZC4gVmFsdWVz
IGluIHRoZSBtYXBwaW5nIHdpbGwgYmUgc2V0IG9uXG4gICAgICogYHRoaXMucHJvcHNgIGlmIHRo
YXQgcHJvcCBpcyBub3Qgc3BlY2lmaWVkIChpLmUuIHVzaW5nIGFuIGBpbmAgY2hlY2spLlxuICAg
ICAqXG4gICAgICogVGhpcyBtZXRob2QgaXMgaW52b2tlZCBiZWZvcmUgYGdldEluaXRpYWxTdGF0
ZWAgYW5kIHRoZXJlZm9yZSBjYW5ub3QgcmVseVxuICAgICAqIG9uIGB0aGlzLnN0YXRlYCBvciB1
c2UgYHRoaXMuc2V0U3RhdGVgLlxuICAgICAqXG4gICAgICogQHJldHVybiB7b2JqZWN0fVxuICAg
ICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdldERlZmF1bHRQcm9wczogJ0RFRklORV9NQU5Z
X01FUkdFRCcsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIG9uY2UgYmVmb3JlIHRoZSBjb21w
b25lbnQgaXMgbW91bnRlZC4gVGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIHVzZWRcbiAgICAgKiBh
cyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBgdGhpcy5zdGF0ZWAuXG4gICAgICpcbiAgICAgKiAgIGdl
dEluaXRpYWxTdGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICogICAgIHJldHVybiB7XG4gICAgICog
ICAgICAgaXNPbjogZmFsc2UsXG4gICAgICogICAgICAgZm9vQmF6OiBuZXcgQmF6Rm9vKClcbiAg
ICAgKiAgICAgfVxuICAgICAqICAgfVxuICAgICAqXG4gICAgICogQHJldHVybiB7b2JqZWN0fVxu
ICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdldEluaXRpYWxTdGF0ZTogJ0RFRklORV9N
QU5ZX01FUkdFRCcsXG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAgICog
QG9wdGlvbmFsXG4gICAgICovXG4gICAgZ2V0Q2hpbGRDb250ZXh0OiAnREVGSU5FX01BTllfTUVS
R0VEJyxcblxuICAgIC8qKlxuICAgICAqIFVzZXMgcHJvcHMgZnJvbSBgdGhpcy5wcm9wc2AgYW5k
IHN0YXRlIGZyb20gYHRoaXMuc3RhdGVgIHRvIHJlbmRlciB0aGVcbiAgICAgKiBzdHJ1Y3R1cmUg
b2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIE5vIGd1YXJhbnRlZXMgYXJlIG1hZGUg
YWJvdXQgd2hlbiBvciBob3cgb2Z0ZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgc29cbiAgICAg
KiBpdCBtdXN0IG5vdCBoYXZlIHNpZGUgZWZmZWN0cy5cbiAgICAgKlxuICAgICAqICAgcmVuZGVy
OiBmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgdmFyIG5hbWUgPSB0aGlzLnByb3BzLm5hbWU7XG4g
ICAgICogICAgIHJldHVybiA8ZGl2PkhlbGxvLCB7bmFtZX0hPC9kaXY+O1xuICAgICAqICAgfVxu
ICAgICAqXG4gICAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9XG4gICAgICogQHJlcXVpcmVk
XG4gICAgICovXG4gICAgcmVuZGVyOiAnREVGSU5FX09OQ0UnLFxuXG4gICAgLy8gPT09PSBEZWxl
Z2F0ZSBtZXRob2RzID09PT1cblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29t
cG9uZW50IGlzIGluaXRpYWxseSBjcmVhdGVkIGFuZCBhYm91dCB0byBiZSBtb3VudGVkLlxuICAg
ICAqIFRoaXMgbWF5IGhhdmUgc2lkZSBlZmZlY3RzLCBidXQgYW55IGV4dGVybmFsIHN1YnNjcmlw
dGlvbnMgb3IgZGF0YSBjcmVhdGVkXG4gICAgICogYnkgdGhpcyBtZXRob2QgbXVzdCBiZSBjbGVh
bmVkIHVwIGluIGBjb21wb25lbnRXaWxsVW5tb3VudGAuXG4gICAgICpcbiAgICAgKiBAb3B0aW9u
YWxcbiAgICAgKi9cbiAgICBjb21wb25lbnRXaWxsTW91bnQ6ICdERUZJTkVfTUFOWScsXG5cbiAg
ICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBtb3VudGVk
IGFuZCBoYXMgYSBET00gcmVwcmVzZW50YXRpb24uXG4gICAgICogSG93ZXZlciwgdGhlcmUgaXMg
bm8gZ3VhcmFudGVlIHRoYXQgdGhlIERPTSBub2RlIGlzIGluIHRoZSBkb2N1bWVudC5cbiAgICAg
KlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERP
TSB3aGVuIHRoZSBjb21wb25lbnQgaGFzXG4gICAgICogYmVlbiBtb3VudGVkIChpbml0aWFsaXpl
ZCBhbmQgcmVuZGVyZWQpIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICAgKlxuICAgICAqIEBwYXJh
bSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21w
b25lbnQuXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50RGlkTW91bnQ6
ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIGJlZm9yZSB0aGUgY29t
cG9uZW50IHJlY2VpdmVzIG5ldyBwcm9wcy5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFu
IG9wcG9ydHVuaXR5IHRvIHJlYWN0IHRvIGEgcHJvcCB0cmFuc2l0aW9uIGJ5IHVwZGF0aW5nIHRo
ZVxuICAgICAqIHN0YXRlIHVzaW5nIGB0aGlzLnNldFN0YXRlYC4gQ3VycmVudCBwcm9wcyBhcmUg
YWNjZXNzZWQgdmlhIGB0aGlzLnByb3BzYC5cbiAgICAgKlxuICAgICAqICAgY29tcG9uZW50V2ls
bFJlY2VpdmVQcm9wczogZnVuY3Rpb24obmV4dFByb3BzLCBuZXh0Q29udGV4dCkge1xuICAgICAq
ICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgKiAgICAgICBsaWtlc0luY3JlYXNpbmc6IG5leHRQ
cm9wcy5saWtlQ291bnQgPiB0aGlzLnByb3BzLmxpa2VDb3VudFxuICAgICAqICAgICB9KTtcbiAg
ICAgKiAgIH1cbiAgICAgKlxuICAgICAqIE5PVEU6IFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgYGNv
bXBvbmVudFdpbGxSZWNlaXZlU3RhdGVgLiBBbiBpbmNvbWluZyBwcm9wXG4gICAgICogdHJhbnNp
dGlvbiBtYXkgY2F1c2UgYSBzdGF0ZSBjaGFuZ2UsIGJ1dCB0aGUgb3Bwb3NpdGUgaXMgbm90IHRy
dWUuIElmIHlvdVxuICAgICAqIG5lZWQgaXQsIHlvdSBhcmUgcHJvYmFibHkgbG9va2luZyBmb3Ig
YGNvbXBvbmVudFdpbGxVcGRhdGVgLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5l
eHRQcm9wc1xuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudFdpbGxSZWNl
aXZlUHJvcHM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoaWxl
IGRlY2lkaW5nIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHVwZGF0ZWQgYXMgYSByZXN1bHQg
b2ZcbiAgICAgKiByZWNlaXZpbmcgbmV3IHByb3BzLCBzdGF0ZSBhbmQvb3IgY29udGV4dC5cbiAg
ICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIGByZXR1cm4gZmFsc2Vg
IHdoZW4geW91J3JlIGNlcnRhaW4gdGhhdCB0aGVcbiAgICAgKiB0cmFuc2l0aW9uIHRvIHRoZSBu
ZXcgcHJvcHMvc3RhdGUvY29udGV4dCB3aWxsIG5vdCByZXF1aXJlIGEgY29tcG9uZW50XG4gICAg
ICogdXBkYXRlLlxuICAgICAqXG4gICAgICogICBzaG91bGRDb21wb25lbnRVcGRhdGU6IGZ1bmN0
aW9uKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCkge1xuICAgICAqICAgICByZXR1
cm4gIWVxdWFsKG5leHRQcm9wcywgdGhpcy5wcm9wcykgfHxcbiAgICAgKiAgICAgICAhZXF1YWwo
bmV4dFN0YXRlLCB0aGlzLnN0YXRlKSB8fFxuICAgICAqICAgICAgICFlcXVhbChuZXh0Q29udGV4
dCwgdGhpcy5jb250ZXh0KTtcbiAgICAgKiAgIH1cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2Jq
ZWN0fSBuZXh0UHJvcHNcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZVxuICAgICAq
IEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHRcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBU
cnVlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZS5cbiAgICAgKiBAb3B0aW9uYWxcbiAg
ICAgKi9cbiAgICBzaG91bGRDb21wb25lbnRVcGRhdGU6ICdERUZJTkVfT05DRScsXG5cbiAgICAv
KipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byB1cGRhdGUg
ZHVlIHRvIGEgdHJhbnNpdGlvbiBmcm9tXG4gICAgICogYHRoaXMucHJvcHNgLCBgdGhpcy5zdGF0
ZWAgYW5kIGB0aGlzLmNvbnRleHRgIHRvIGBuZXh0UHJvcHNgLCBgbmV4dFN0YXRlYFxuICAgICAq
IGFuZCBgbmV4dENvbnRleHRgLlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0
dW5pdHkgdG8gcGVyZm9ybSBwcmVwYXJhdGlvbiBiZWZvcmUgYW4gdXBkYXRlIG9jY3Vycy5cbiAg
ICAgKlxuICAgICAqIE5PVEU6IFlvdSAqKmNhbm5vdCoqIHVzZSBgdGhpcy5zZXRTdGF0ZSgpYCBp
biB0aGlzIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNc
biAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZVxuICAgICAqIEBwYXJhbSB7P29iamVj
dH0gbmV4dENvbnRleHRcbiAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259
IHRyYW5zYWN0aW9uXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50V2ls
bFVwZGF0ZTogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0
aGUgY29tcG9uZW50J3MgRE9NIHJlcHJlc2VudGF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuXG4gICAg
ICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBvcGVyYXRlIG9uIHRoZSBE
T00gd2hlbiB0aGUgY29tcG9uZW50IGhhc1xuICAgICAqIGJlZW4gdXBkYXRlZC5cbiAgICAgKlxu
ICAgICAqIEBwYXJhbSB7b2JqZWN0fSBwcmV2UHJvcHNcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9
IHByZXZTdGF0ZVxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gcHJldkNvbnRleHRcbiAgICAgKiBA
cGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUg
Y29tcG9uZW50LlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudERpZFVw
ZGF0ZTogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUg
Y29tcG9uZW50IGlzIGFib3V0IHRvIGJlIHJlbW92ZWQgZnJvbSBpdHMgcGFyZW50IGFuZCBoYXZl
XG4gICAgICogaXRzIERPTSByZXByZXNlbnRhdGlvbiBkZXN0cm95ZWQuXG4gICAgICpcbiAgICAg
KiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBkZWFsbG9jYXRlIGFueSBleHRlcm5hbCBy
ZXNvdXJjZXMuXG4gICAgICpcbiAgICAgKiBOT1RFOiBUaGVyZSBpcyBubyBgY29tcG9uZW50RGlk
VW5tb3VudGAgc2luY2UgeW91ciBjb21wb25lbnQgd2lsbCBoYXZlIGJlZW5cbiAgICAgKiBkZXN0
cm95ZWQgYnkgdGhhdCBwb2ludC5cbiAgICAgKlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xu
ICAgIGNvbXBvbmVudFdpbGxVbm1vdW50OiAnREVGSU5FX01BTlknLFxuXG4gICAgLy8gPT09PSBB
ZHZhbmNlZCBtZXRob2RzID09PT1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIGNvbXBv
bmVudCdzIGN1cnJlbnRseSBtb3VudGVkIERPTSByZXByZXNlbnRhdGlvbi5cbiAgICAgKlxuICAg
ICAqIEJ5IGRlZmF1bHQsIHRoaXMgaW1wbGVtZW50cyBSZWFjdCdzIHJlbmRlcmluZyBhbmQgcmVj
b25jaWxpYXRpb24gYWxnb3JpdGhtLlxuICAgICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkg
d2lzaCB0byBvdmVycmlkZSB0aGlzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIEBv
dmVycmlkYWJsZVxuICAgICAqL1xuICAgIHVwZGF0ZUNvbXBvbmVudDogJ09WRVJSSURFX0JBU0Un
XG4gIH07XG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBjbGFzcyBzcGVjaWZpY2F0aW9uIGtl
eXMgdG8gc3BlY2lhbCBwcm9jZXNzaW5nIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQWx0aG91Z2gg
dGhlc2UgYXJlIGRlY2xhcmVkIGxpa2UgaW5zdGFuY2UgcHJvcGVydGllcyBpbiB0aGUgc3BlY2lm
aWNhdGlvblxuICAgKiB3aGVuIGRlZmluaW5nIGNsYXNzZXMgdXNpbmcgYFJlYWN0LmNyZWF0ZUNs
YXNzYCwgdGhleSBhcmUgYWN0dWFsbHkgc3RhdGljXG4gICAqIGFuZCBhcmUgYWNjZXNzaWJsZSBv
biB0aGUgY29uc3RydWN0b3IgaW5zdGVhZCBvZiB0aGUgcHJvdG90eXBlLiBEZXNwaXRlXG4gICAq
IGJlaW5nIHN0YXRpYywgdGhleSBtdXN0IGJlIGRlZmluZWQgb3V0c2lkZSBvZiB0aGUgXCJzdGF0
aWNzXCIga2V5IHVuZGVyXG4gICAqIHdoaWNoIGFsbCBvdGhlciBzdGF0aWMgbWV0aG9kcyBhcmUg
ZGVmaW5lZC5cbiAgICovXG4gIHZhciBSRVNFUlZFRF9TUEVDX0tFWVMgPSB7XG4gICAgZGlzcGxh
eU5hbWU6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBkaXNwbGF5TmFtZSkge1xuICAgICAgQ29uc3Ry
dWN0b3IuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTtcbiAgICB9LFxuICAgIG1peGluczogZnVu
Y3Rpb24oQ29uc3RydWN0b3IsIG1peGlucykge1xuICAgICAgaWYgKG1peGlucykge1xuICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG1peGlucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIG1p
eFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBtaXhpbnNbaV0pO1xuICAgICAgICB9XG4g
ICAgICB9XG4gICAgfSxcbiAgICBjaGlsZENvbnRleHRUeXBlczogZnVuY3Rpb24oQ29uc3RydWN0
b3IsIGNoaWxkQ29udGV4dFR5cGVzKSB7XG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgdmFs
aWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcywgJ2NoaWxkQ29udGV4
dCcpO1xuICAgICAgfVxuICAgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMgPSBfYXNz
aWduKFxuICAgICAgICB7fSxcbiAgICAgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMs
XG4gICAgICAgIGNoaWxkQ29udGV4dFR5cGVzXG4gICAgICApO1xuICAgIH0sXG4gICAgY29udGV4
dFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzKSB7XG4gICAgICBpZiAo
ZmFsc2UpIHtcbiAgICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjb250ZXh0VHlw
ZXMsICdjb250ZXh0Jyk7XG4gICAgICB9XG4gICAgICBDb25zdHJ1Y3Rvci5jb250ZXh0VHlwZXMg
PSBfYXNzaWduKFxuICAgICAgICB7fSxcbiAgICAgICAgQ29uc3RydWN0b3IuY29udGV4dFR5cGVz
LFxuICAgICAgICBjb250ZXh0VHlwZXNcbiAgICAgICk7XG4gICAgfSxcbiAgICAvKipcbiAgICAg
KiBTcGVjaWFsIGNhc2UgZ2V0RGVmYXVsdFByb3BzIHdoaWNoIHNob3VsZCBtb3ZlIGludG8gc3Rh
dGljcyBidXQgcmVxdWlyZXNcbiAgICAgKiBhdXRvbWF0aWMgbWVyZ2luZy5cbiAgICAgKi9cbiAg
ICBnZXREZWZhdWx0UHJvcHM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBnZXREZWZhdWx0UHJvcHMp
IHtcbiAgICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgICAgQ29u
c3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24oXG4g
ICAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzLFxuICAgICAgICAgIGdldERlZmF1
bHRQcm9wc1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgQ29uc3RydWN0b3Iu
Z2V0RGVmYXVsdFByb3BzID0gZ2V0RGVmYXVsdFByb3BzO1xuICAgICAgfVxuICAgIH0sXG4gICAg
cHJvcFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzKSB7XG4gICAgICBpZiAo
ZmFsc2UpIHtcbiAgICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBwcm9wVHlwZXMs
ICdwcm9wJyk7XG4gICAgICB9XG4gICAgICBDb25zdHJ1Y3Rvci5wcm9wVHlwZXMgPSBfYXNzaWdu
KHt9LCBDb25zdHJ1Y3Rvci5wcm9wVHlwZXMsIHByb3BUeXBlcyk7XG4gICAgfSxcbiAgICBzdGF0
aWNzOiBmdW5jdGlvbihDb25zdHJ1Y3Rvciwgc3RhdGljcykge1xuICAgICAgbWl4U3RhdGljU3Bl
Y0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHN0YXRpY3MpO1xuICAgIH0sXG4gICAgYXV0b2Jp
bmQ6IGZ1bmN0aW9uKCkge31cbiAgfTtcblxuICBmdW5jdGlvbiB2YWxpZGF0ZVR5cGVEZWYoQ29u
c3RydWN0b3IsIHR5cGVEZWYsIGxvY2F0aW9uKSB7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4g
dHlwZURlZikge1xuICAgICAgaWYgKHR5cGVEZWYuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7
XG4gICAgICAgIC8vIHVzZSBhIHdhcm5pbmcgaW5zdGVhZCBvZiBhbiBfaW52YXJpYW50IHNvIGNv
bXBvbmVudHNcbiAgICAgICAgLy8gZG9uJ3Qgc2hvdyB1cCBpbiBwcm9kIGJ1dCBvbmx5IGluIF9f
REVWX19cbiAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgd2FybmluZyhcbiAgICAgICAg
ICAgIHR5cGVvZiB0eXBlRGVmW3Byb3BOYW1lXSA9PT0gJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAg
ICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1
YWxseSBmcm9tICcgK1xuICAgICAgICAgICAgICAnUmVhY3QuUHJvcFR5cGVzLicsXG4gICAgICAg
ICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDbGFzcycsXG4gICAgICAgICAg
ICBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sXG4gICAgICAgICAgICBwcm9w
TmFtZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBm
dW5jdGlvbiB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5hbWUpIHtc
biAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHko
bmFtZSlcbiAgICAgID8gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXVxuICAgICAgOiBudWxsO1xu
XG4gICAgLy8gRGlzYWxsb3cgb3ZlcnJpZGluZyBvZiBiYXNlIGNsYXNzIG1ldGhvZHMgdW5sZXNz
IGV4cGxpY2l0bHkgYWxsb3dlZC5cbiAgICBpZiAoUmVhY3RDbGFzc01peGluLmhhc093blByb3Bl
cnR5KG5hbWUpKSB7XG4gICAgICBfaW52YXJpYW50KFxuICAgICAgICBzcGVjUG9saWN5ID09PSAn
T1ZFUlJJREVfQkFTRScsXG4gICAgICAgICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0
dGVtcHRpbmcgdG8gb3ZlcnJpZGUgJyArXG4gICAgICAgICAgJ2Alc2AgZnJvbSB5b3VyIGNsYXNz
IHNwZWNpZmljYXRpb24uIEVuc3VyZSB0aGF0IHlvdXIgbWV0aG9kIG5hbWVzICcgK1xuICAgICAg
ICAgICdkbyBub3Qgb3ZlcmxhcCB3aXRoIFJlYWN0IG1ldGhvZHMuJyxcbiAgICAgICAgbmFtZVxu
ICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBEaXNhbGxvdyBkZWZpbmluZyBtZXRob2RzIG1vcmUg
dGhhbiBvbmNlIHVubGVzcyBleHBsaWNpdGx5IGFsbG93ZWQuXG4gICAgaWYgKGlzQWxyZWFkeURl
ZmluZWQpIHtcbiAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgIHNwZWNQb2xpY3kgPT09ICdERUZJ
TkVfTUFOWScgfHwgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcsXG4gICAgICAg
ICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgK1xu
ICAgICAgICAgICdgJXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNv
bmZsaWN0IG1heSBiZSBkdWUgJyArXG4gICAgICAgICAgJ3RvIGEgbWl4aW4uJyxcbiAgICAgICAg
bmFtZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWl4aW4gaGVscGVyIHdo
aWNoIGhhbmRsZXMgcG9saWN5IHZhbGlkYXRpb24gYW5kIHJlc2VydmVkXG4gICAqIHNwZWNpZmlj
YXRpb24ga2V5cyB3aGVuIGJ1aWxkaW5nIFJlYWN0IGNsYXNzZXMuXG4gICAqL1xuICBmdW5jdGlv
biBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYykge1xuICAgIGlmICghc3Bl
Yykge1xuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIHZhciB0eXBlb2ZTcGVjID0gdHlwZW9m
IHNwZWM7XG4gICAgICAgIHZhciBpc01peGluVmFsaWQgPSB0eXBlb2ZTcGVjID09PSAnb2JqZWN0
JyAmJiBzcGVjICE9PSBudWxsO1xuXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgIGlzTWl4
aW5WYWxpZCxcbiAgICAgICAgICAgIFwiJXM6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIGluY2x1ZGUg
YSBtaXhpbiB0aGF0IGlzIGVpdGhlciBudWxsIFwiICtcbiAgICAgICAgICAgICAgJ29yIG5vdCBh
biBvYmplY3QuIENoZWNrIHRoZSBtaXhpbnMgaW5jbHVkZWQgYnkgdGhlIGNvbXBvbmVudCwgJyAr
XG4gICAgICAgICAgICAgICdhcyB3ZWxsIGFzIGFueSBtaXhpbnMgdGhleSBpbmNsdWRlIHRoZW1z
ZWx2ZXMuICcgK1xuICAgICAgICAgICAgICAnRXhwZWN0ZWQgb2JqZWN0IGJ1dCBnb3QgJXMuJyxc
biAgICAgICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENsYXNzJyxcbiAg
ICAgICAgICAgIHNwZWMgPT09IG51bGwgPyBudWxsIDogdHlwZW9mU3BlY1xuICAgICAgICAgICk7
XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIF9pbnZh
cmlhbnQoXG4gICAgICB0eXBlb2Ygc3BlYyAhPT0gJ2Z1bmN0aW9uJyxcbiAgICAgIFwiUmVhY3RD
bGFzczogWW91J3JlIGF0dGVtcHRpbmcgdG8gXCIgK1xuICAgICAgICAndXNlIGEgY29tcG9uZW50
IGNsYXNzIG9yIGZ1bmN0aW9uIGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgJyArXG4g
ICAgICAgICdyZWd1bGFyIG9iamVjdC4nXG4gICAgKTtcbiAgICBfaW52YXJpYW50KFxuICAgICAg
IWlzVmFsaWRFbGVtZW50KHNwZWMpLFxuICAgICAgXCJSZWFjdENsYXNzOiBZb3UncmUgYXR0ZW1w
dGluZyB0byBcIiArXG4gICAgICAgICd1c2UgYSBjb21wb25lbnQgYXMgYSBtaXhpbi4gSW5zdGVh
ZCwganVzdCB1c2UgYSByZWd1bGFyIG9iamVjdC4nXG4gICAgKTtcblxuICAgIHZhciBwcm90byA9
IENvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgICB2YXIgYXV0b0JpbmRQYWlycyA9IHByb3RvLl9f
cmVhY3RBdXRvQmluZFBhaXJzO1xuXG4gICAgLy8gQnkgaGFuZGxpbmcgbWl4aW5zIGJlZm9yZSBh
bnkgb3RoZXIgcHJvcGVydGllcywgd2UgZW5zdXJlIHRoZSBzYW1lXG4gICAgLy8gY2hhaW5pbmcg
b3JkZXIgaXMgYXBwbGllZCB0byBtZXRob2RzIHdpdGggREVGSU5FX01BTlkgcG9saWN5LCB3aGV0
aGVyXG4gICAgLy8gbWl4aW5zIGFyZSBsaXN0ZWQgYmVmb3JlIG9yIGFmdGVyIHRoZXNlIG1ldGhv
ZHMgaW4gdGhlIHNwZWMuXG4gICAgaWYgKHNwZWMuaGFzT3duUHJvcGVydHkoTUlYSU5TX0tFWSkp
IHtcbiAgICAgIFJFU0VSVkVEX1NQRUNfS0VZUy5taXhpbnMoQ29uc3RydWN0b3IsIHNwZWMubWl4
aW5zKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBuYW1lIGluIHNwZWMpIHtcbiAgICAgIGlmICgh
c3BlYy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1c
blxuICAgICAgaWYgKG5hbWUgPT09IE1JWElOU19LRVkpIHtcbiAgICAgICAgLy8gV2UgaGF2ZSBh
bHJlYWR5IGhhbmRsZWQgbWl4aW5zIGluIGEgc3BlY2lhbCBjYXNlIGFib3ZlLlxuICAgICAgICBj
b250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHByb3BlcnR5ID0gc3BlY1tuYW1lXTtcbiAg
ICAgIHZhciBpc0FscmVhZHlEZWZpbmVkID0gcHJvdG8uaGFzT3duUHJvcGVydHkobmFtZSk7XG4g
ICAgICB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5hbWUpO1xuXG4g
ICAgICBpZiAoUkVTRVJWRURfU1BFQ19LRVlTLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAg
ICAgIFJFU0VSVkVEX1NQRUNfS0VZU1tuYW1lXShDb25zdHJ1Y3RvciwgcHJvcGVydHkpO1xuICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2V0dXAgbWV0aG9kcyBvbiBwcm90b3R5cGU6XG4gICAg
ICAgIC8vIFRoZSBmb2xsb3dpbmcgbWVtYmVyIG1ldGhvZHMgc2hvdWxkIG5vdCBiZSBhdXRvbWF0
aWNhbGx5IGJvdW5kOlxuICAgICAgICAvLyAxLiBFeHBlY3RlZCBSZWFjdENsYXNzIG1ldGhvZHMg
KGluIHRoZSBcImludGVyZmFjZVwiKS5cbiAgICAgICAgLy8gMi4gT3ZlcnJpZGRlbiBtZXRob2Rz
ICh0aGF0IHdlcmUgbWl4ZWQgaW4pLlxuICAgICAgICB2YXIgaXNSZWFjdENsYXNzTWV0aG9kID0g
UmVhY3RDbGFzc0ludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShuYW1lKTtcbiAgICAgICAgdmFyIGlz
RnVuY3Rpb24gPSB0eXBlb2YgcHJvcGVydHkgPT09ICdmdW5jdGlvbic7XG4gICAgICAgIHZhciBz
aG91bGRBdXRvQmluZCA9XG4gICAgICAgICAgaXNGdW5jdGlvbiAmJlxuICAgICAgICAgICFpc1Jl
YWN0Q2xhc3NNZXRob2QgJiZcbiAgICAgICAgICAhaXNBbHJlYWR5RGVmaW5lZCAmJlxuICAgICAg
ICAgIHNwZWMuYXV0b2JpbmQgIT09IGZhbHNlO1xuXG4gICAgICAgIGlmIChzaG91bGRBdXRvQmlu
ZCkge1xuICAgICAgICAgIGF1dG9CaW5kUGFpcnMucHVzaChuYW1lLCBwcm9wZXJ0eSk7XG4gICAg
ICAgICAgcHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAg
ICBpZiAoaXNBbHJlYWR5RGVmaW5lZCkge1xuICAgICAgICAgICAgdmFyIHNwZWNQb2xpY3kgPSBS
ZWFjdENsYXNzSW50ZXJmYWNlW25hbWVdO1xuXG4gICAgICAgICAgICAvLyBUaGVzZSBjYXNlcyBz
aG91bGQgYWxyZWFkeSBiZSBjYXVnaHQgYnkgdmFsaWRhdGVNZXRob2RPdmVycmlkZS5cbiAgICAg
ICAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgICAgICAgIGlzUmVhY3RDbGFzc01ldGhvZCAmJlxu
ICAgICAgICAgICAgICAgIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJyB8fFxu
ICAgICAgICAgICAgICAgICAgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJyksXG4gICAgICAg
ICAgICAgICdSZWFjdENsYXNzOiBVbmV4cGVjdGVkIHNwZWMgcG9saWN5ICVzIGZvciBrZXkgJXMg
JyArXG4gICAgICAgICAgICAgICAgJ3doZW4gbWl4aW5nIGluIGNvbXBvbmVudCBzcGVjcy4nLFxu
ICAgICAgICAgICAgICBzcGVjUG9saWN5LFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAg
ICApO1xuXG4gICAgICAgICAgICAvLyBGb3IgbWV0aG9kcyB3aGljaCBhcmUgZGVmaW5lZCBtb3Jl
IHRoYW4gb25jZSwgY2FsbCB0aGUgZXhpc3RpbmdcbiAgICAgICAgICAgIC8vIG1ldGhvZHMgYmVm
b3JlIGNhbGxpbmcgdGhlIG5ldyBwcm9wZXJ0eSwgbWVyZ2luZyBpZiBhcHByb3ByaWF0ZS5cbiAg
ICAgICAgICAgIGlmIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJykge1xuICAg
ICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKHByb3Rv
W25hbWVdLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNwZWNQb2xpY3kgPT09
ICdERUZJTkVfTUFOWScpIHtcbiAgICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVDaGFp
bmVkRnVuY3Rpb24ocHJvdG9bbmFtZV0sIHByb3BlcnR5KTtcbiAgICAgICAgICAgIH1cbiAgICAg
ICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICAg
ICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgICAgICAvLyBBZGQgdmVyYm9zZSBkaXNwbGF5
TmFtZSB0byB0aGUgZnVuY3Rpb24sIHdoaWNoIGhlbHBzIHdoZW4gbG9va2luZ1xuICAgICAgICAg
ICAgICAvLyBhdCBwcm9maWxpbmcgdG9vbHMuXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJv
cGVydHkgPT09ICdmdW5jdGlvbicgJiYgc3BlYy5kaXNwbGF5TmFtZSkge1xuICAgICAgICAgICAg
ICAgIHByb3RvW25hbWVdLmRpc3BsYXlOYW1lID0gc3BlYy5kaXNwbGF5TmFtZSArICdfJyArIG5h
bWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAg
IH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBtaXhTdGF0aWNTcGVjSW50b0Nv
bXBvbmVudChDb25zdHJ1Y3Rvciwgc3RhdGljcykge1xuICAgIGlmICghc3RhdGljcykge1xuICAg
ICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKHZhciBuYW1lIGluIHN0YXRpY3MpIHtcbiAgICAg
IHZhciBwcm9wZXJ0eSA9IHN0YXRpY3NbbmFtZV07XG4gICAgICBpZiAoIXN0YXRpY3MuaGFzT3du
UHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZh
ciBpc1Jlc2VydmVkID0gbmFtZSBpbiBSRVNFUlZFRF9TUEVDX0tFWVM7XG4gICAgICBfaW52YXJp
YW50KFxuICAgICAgICAhaXNSZXNlcnZlZCxcbiAgICAgICAgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUg
YXR0ZW1wdGluZyB0byBkZWZpbmUgYSByZXNlcnZlZCAnICtcbiAgICAgICAgICAncHJvcGVydHks
IGAlc2AsIHRoYXQgc2hvdWxkblxcJ3QgYmUgb24gdGhlIFwic3RhdGljc1wiIGtleS4gRGVmaW5l
IGl0ICcgK1xuICAgICAgICAgICdhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBpbnN0ZWFkOyBpdCB3
aWxsIHN0aWxsIGJlIGFjY2Vzc2libGUgb24gdGhlICcgK1xuICAgICAgICAgICdjb25zdHJ1Y3Rv
ci4nLFxuICAgICAgICBuYW1lXG4gICAgICApO1xuXG4gICAgICB2YXIgaXNJbmhlcml0ZWQgPSBu
YW1lIGluIENvbnN0cnVjdG9yO1xuICAgICAgX2ludmFyaWFudChcbiAgICAgICAgIWlzSW5oZXJp
dGVkLFxuICAgICAgICAnUmVhY3RDbGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSAn
ICtcbiAgICAgICAgICAnYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhp
cyBjb25mbGljdCBtYXkgYmUgJyArXG4gICAgICAgICAgJ2R1ZSB0byBhIG1peGluLicsXG4gICAg
ICAgIG5hbWVcbiAgICAgICk7XG4gICAgICBDb25zdHJ1Y3RvcltuYW1lXSA9IHByb3BlcnR5O1xu
ICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZSB0d28gb2JqZWN0cywgYnV0IHRocm93IGlm
IGJvdGggY29udGFpbiB0aGUgc2FtZSBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBv
bmUgVGhlIGZpcnN0IG9iamVjdCwgd2hpY2ggaXMgbXV0YXRlZC5cbiAgICogQHBhcmFtIHtvYmpl
Y3R9IHR3byBUaGUgc2Vjb25kIG9iamVjdFxuICAgKiBAcmV0dXJuIHtvYmplY3R9IG9uZSBhZnRl
ciBpdCBoYXMgYmVlbiBtdXRhdGVkIHRvIGNvbnRhaW4gZXZlcnl0aGluZyBpbiB0d28uXG4gICAq
L1xuICBmdW5jdGlvbiBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKG9uZSwgdHdvKSB7XG4g
ICAgX2ludmFyaWFudChcbiAgICAgIG9uZSAmJiB0d28gJiYgdHlwZW9mIG9uZSA9PT0gJ29iamVj
dCcgJiYgdHlwZW9mIHR3byA9PT0gJ29iamVjdCcsXG4gICAgICAnbWVyZ2VJbnRvV2l0aE5vRHVw
bGljYXRlS2V5cygpOiBDYW5ub3QgbWVyZ2Ugbm9uLW9iamVjdHMuJ1xuICAgICk7XG5cbiAgICBm
b3IgKHZhciBrZXkgaW4gdHdvKSB7XG4gICAgICBpZiAodHdvLmhhc093blByb3BlcnR5KGtleSkp
IHtcbiAgICAgICAgX2ludmFyaWFudChcbiAgICAgICAgICBvbmVba2V5XSA9PT0gdW5kZWZpbmVk
LFxuICAgICAgICAgICdtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6ICcgK1xuICAgICAg
ICAgICAgJ1RyaWVkIHRvIG1lcmdlIHR3byBvYmplY3RzIHdpdGggdGhlIHNhbWUga2V5OiBgJXNg
LiBUaGlzIGNvbmZsaWN0ICcgK1xuICAgICAgICAgICAgJ21heSBiZSBkdWUgdG8gYSBtaXhpbjsg
aW4gcGFydGljdWxhciwgdGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHR3byAnICtcbiAgICAgICAgICAg
ICdnZXRJbml0aWFsU3RhdGUoKSBvciBnZXREZWZhdWx0UHJvcHMoKSBtZXRob2RzIHJldHVybmlu
ZyBvYmplY3RzICcgK1xuICAgICAgICAgICAgJ3dpdGggY2xhc2hpbmcga2V5cy4nLFxuICAgICAg
ICAgIGtleVxuICAgICAgICApO1xuICAgICAgICBvbmVba2V5XSA9IHR3b1trZXldO1xuICAgICAg
fVxuICAgIH1cbiAgICByZXR1cm4gb25lO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBm
dW5jdGlvbiB0aGF0IGludm9rZXMgdHdvIGZ1bmN0aW9ucyBhbmQgbWVyZ2VzIHRoZWlyIHJldHVy
biB2YWx1ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBp
bnZva2UgZmlyc3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZv
a2Ugc2Vjb25kLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2Vz
IHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVu
Y3Rpb24gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ob25lLCB0d28pIHtcbiAgICByZXR1cm4g
ZnVuY3Rpb24gbWVyZ2VkUmVzdWx0KCkge1xuICAgICAgdmFyIGEgPSBvbmUuYXBwbHkodGhpcywg
YXJndW1lbnRzKTtcbiAgICAgIHZhciBiID0gdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4g
ICAgICBpZiAoYSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBiO1xuICAgICAgfSBlbHNlIGlm
IChiID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9XG4gICAgICB2YXIgYyA9
IHt9O1xuICAgICAgbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhjLCBhKTtcbiAgICAgIG1l
cmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYik7XG4gICAgICByZXR1cm4gYztcbiAgICB9
O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdHdv
IGZ1bmN0aW9ucyBhbmQgaWdub3JlcyB0aGVpciByZXR1cm4gdmFsZXMuXG4gICAqXG4gICAqIEBw
YXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZva2UgZmlyc3QuXG4gICAqIEBwYXJh
bSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLlxuICAgKiBAcmV0dXJu
IHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rp
b25zLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0
aW9uKG9uZSwgdHdvKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNoYWluZWRGdW5jdGlvbigpIHtc
biAgICAgIG9uZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgdHdvLmFwcGx5KHRoaXMs
IGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyBhIG1ldGhvZCB0
byB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENv
bXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuXG4gICAqIEBwYXJhbSB7
ZnVuY3Rpb259IG1ldGhvZCBNZXRob2QgdG8gYmUgYm91bmQuXG4gICAqIEByZXR1cm4ge2Z1bmN0
aW9ufSBUaGUgYm91bmQgbWV0aG9kLlxuICAgKi9cbiAgZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0
aG9kKGNvbXBvbmVudCwgbWV0aG9kKSB7XG4gICAgdmFyIGJvdW5kTWV0aG9kID0gbWV0aG9kLmJp
bmQoY29tcG9uZW50KTtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGJvdW5kTWV0aG9kLl9fcmVh
Y3RCb3VuZENvbnRleHQgPSBjb21wb25lbnQ7XG4gICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91
bmRNZXRob2QgPSBtZXRob2Q7XG4gICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVu
dHMgPSBudWxsO1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQuY29uc3RydWN0
b3IuZGlzcGxheU5hbWU7XG4gICAgICB2YXIgX2JpbmQgPSBib3VuZE1ldGhvZC5iaW5kO1xuICAg
ICAgYm91bmRNZXRob2QuYmluZCA9IGZ1bmN0aW9uKG5ld1RoaXMpIHtcbiAgICAgICAgZm9yIChc
biAgICAgICAgICB2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdz
ID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLFxuICAgICAgICAgICAgX2tleSA9IDE7
XG4gICAgICAgICAgX2tleSA8IF9sZW47XG4gICAgICAgICAgX2tleSsrXG4gICAgICAgICkge1xu
ICAgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICB9XG5c
biAgICAgICAgLy8gVXNlciBpcyB0cnlpbmcgdG8gYmluZCgpIGFuIGF1dG9ib3VuZCBtZXRob2Q7
IHdlIGVmZmVjdGl2ZWx5IHdpbGxcbiAgICAgICAgLy8gaWdub3JlIHRoZSB2YWx1ZSBvZiBcInRo
aXNcIiB0aGF0IHRoZSB1c2VyIGlzIHRyeWluZyB0byB1c2UsIHNvXG4gICAgICAgIC8vIGxldCdz
IHdhcm4uXG4gICAgICAgIGlmIChuZXdUaGlzICE9PSBjb21wb25lbnQgJiYgbmV3VGhpcyAhPT0g
bnVsbCkge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgICBmYWxzZSxcbiAgICAg
ICAgICAgICAgJ2JpbmQoKTogUmVhY3QgY29tcG9uZW50IG1ldGhvZHMgbWF5IG9ubHkgYmUgYm91
bmQgdG8gdGhlICcgK1xuICAgICAgICAgICAgICAgICdjb21wb25lbnQgaW5zdGFuY2UuIFNlZSAl
cycsXG4gICAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAg
ICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFhcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICB3YXJu
aW5nKFxuICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgJ2JpbmQoKTogWW91IGFy
ZSBiaW5kaW5nIGEgY29tcG9uZW50IG1ldGhvZCB0byB0aGUgY29tcG9uZW50LiAnICtcbiAgICAg
ICAgICAgICAgICAnUmVhY3QgZG9lcyB0aGlzIGZvciB5b3UgYXV0b21hdGljYWxseSBpbiBhIGhp
Z2gtcGVyZm9ybWFuY2UgJyArXG4gICAgICAgICAgICAgICAgJ3dheSwgc28geW91IGNhbiBzYWZl
bHkgcmVtb3ZlIHRoaXMgY2FsbC4gU2VlICVzJyxcbiAgICAgICAgICAgICAgY29tcG9uZW50TmFt
ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGJvdW5kTWV0
aG9kO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZWJvdW5kTWV0aG9kID0gX2JpbmQuYXBwbHko
Ym91bmRNZXRob2QsIGFyZ3VtZW50cyk7XG4gICAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJv
dW5kQ29udGV4dCA9IGNvbXBvbmVudDtcbiAgICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91
bmRNZXRob2QgPSBtZXRob2Q7XG4gICAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQXJn
dW1lbnRzID0gYXJncztcbiAgICAgICAgcmV0dXJuIHJlYm91bmRNZXRob2Q7XG4gICAgICB9O1xu
ICAgIH1cbiAgICByZXR1cm4gYm91bmRNZXRob2Q7XG4gIH1cblxuICAvKipcbiAgICogQmluZHMg
YWxsIGF1dG8tYm91bmQgbWV0aG9kcyBpbiBhIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFt
IHtvYmplY3R9IGNvbXBvbmVudCBDb21wb25lbnQgd2hvc2UgbWV0aG9kIGlzIGdvaW5nIHRvIGJl
IGJvdW5kLlxuICAgKi9cbiAgZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kcyhjb21wb25lbnQp
IHtcbiAgICB2YXIgcGFpcnMgPSBjb21wb25lbnQuX19yZWFjdEF1dG9CaW5kUGFpcnM7XG4gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgdmFyIGF1
dG9CaW5kS2V5ID0gcGFpcnNbaV07XG4gICAgICB2YXIgbWV0aG9kID0gcGFpcnNbaSArIDFdO1xu
ICAgICAgY29tcG9uZW50W2F1dG9CaW5kS2V5XSA9IGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25l
bnQsIG1ldGhvZCk7XG4gICAgfVxuICB9XG5cbiAgdmFyIElzTW91bnRlZFByZU1peGluID0ge1xu
ICAgIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuX19pc01vdW50
ZWQgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICB2YXIgSXNNb3VudGVkUG9zdE1peGluID0ge1xu
ICAgIGNvbXBvbmVudFdpbGxVbm1vdW50OiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuX19pc01v
dW50ZWQgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEFkZCBtb3JlIHRvIHRo
ZSBSZWFjdENsYXNzIGJhc2UgY2xhc3MuIFRoZXNlIGFyZSBhbGwgbGVnYWN5IGZlYXR1cmVzIGFu
ZFxuICAgKiB0aGVyZWZvcmUgbm90IGFscmVhZHkgcGFydCBvZiB0aGUgbW9kZXJuIFJlYWN0Q29t
cG9uZW50LlxuICAgKi9cbiAgdmFyIFJlYWN0Q2xhc3NNaXhpbiA9IHtcbiAgICAvKipcbiAgICAg
KiBUT0RPOiBUaGlzIHdpbGwgYmUgZGVwcmVjYXRlZCBiZWNhdXNlIHN0YXRlIHNob3VsZCBhbHdh
eXMga2VlcCBhIGNvbnNpc3RlbnRcbiAgICAgKiB0eXBlIHNpZ25hdHVyZSBhbmQgdGhlIG9ubHkg
dXNlIGNhc2UgZm9yIHRoaXMsIGlzIHRvIGF2b2lkIHRoYXQuXG4gICAgICovXG4gICAgcmVwbGFj
ZVN0YXRlOiBmdW5jdGlvbihuZXdTdGF0ZSwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMudXBkYXRl
ci5lbnF1ZXVlUmVwbGFjZVN0YXRlKHRoaXMsIG5ld1N0YXRlLCBjYWxsYmFjayk7XG4gICAgfSxc
blxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBj
b21wb25lbnQgaXMgbW91bnRlZC5cbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1v
dW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQGZpbmFs
XG4gICAgICovXG4gICAgaXNNb3VudGVkOiBmdW5jdGlvbigpIHtcbiAgICAgIGlmIChmYWxzZSkg
e1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIHRoaXMuX19kaWRXYXJuSXNNb3VudGVkLFxu
ICAgICAgICAgICclczogaXNNb3VudGVkIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIG1ha2Ugc3Vy
ZSB0byBjbGVhbiB1cCAnICtcbiAgICAgICAgICAgICdzdWJzY3JpcHRpb25zIGFuZCBwZW5kaW5n
IHJlcXVlc3RzIGluIGNvbXBvbmVudFdpbGxVbm1vdW50IHRvICcgK1xuICAgICAgICAgICAgJ3By
ZXZlbnQgbWVtb3J5IGxlYWtzLicsXG4gICAgICAgICAgKHRoaXMuY29uc3RydWN0b3IgJiYgdGhp
cy5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSkgfHxcbiAgICAgICAgICAgIHRoaXMubmFtZSB8fFxu
ICAgICAgICAgICAgJ0NvbXBvbmVudCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fX2RpZFdh
cm5Jc01vdW50ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuICEhdGhpcy5fX2lzTW91
bnRlZDtcbiAgICB9XG4gIH07XG5cbiAgdmFyIFJlYWN0Q2xhc3NDb21wb25lbnQgPSBmdW5jdGlv
bigpIHt9O1xuICBfYXNzaWduKFxuICAgIFJlYWN0Q2xhc3NDb21wb25lbnQucHJvdG90eXBlLFxu
ICAgIFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSxcbiAgICBSZWFjdENsYXNzTWl4aW5cbiAgKTtc
blxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNvbXBvc2l0ZSBjb21wb25lbnQgY2xhc3MgZ2l2ZW4g
YSBjbGFzcyBzcGVjaWZpY2F0aW9uLlxuICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIu
aW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlY2xhc3NcbiAgICpc
biAgICogQHBhcmFtIHtvYmplY3R9IHNwZWMgQ2xhc3Mgc3BlY2lmaWNhdGlvbiAod2hpY2ggbXVz
dCBkZWZpbmUgYHJlbmRlcmApLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gQ29tcG9uZW50IGNv
bnN0cnVjdG9yIGZ1bmN0aW9uLlxuICAgKiBAcHVibGljXG4gICAqL1xuICBmdW5jdGlvbiBjcmVh
dGVDbGFzcyhzcGVjKSB7XG4gICAgLy8gVG8ga2VlcCBvdXIgd2FybmluZ3MgbW9yZSB1bmRlcnN0
YW5kYWJsZSwgd2UnbGwgdXNlIGEgbGl0dGxlIGhhY2sgaGVyZSB0b1xuICAgIC8vIGVuc3VyZSB0
aGF0IENvbnN0cnVjdG9yLm5hbWUgIT09ICdDb25zdHJ1Y3RvcicuIFRoaXMgbWFrZXMgc3VyZSB3
ZSBkb24ndFxuICAgIC8vIHVubmVjZXNzYXJpbHkgaWRlbnRpZnkgYSBjbGFzcyB3aXRob3V0IGRp
c3BsYXlOYW1lIGFzICdDb25zdHJ1Y3RvcicuXG4gICAgdmFyIENvbnN0cnVjdG9yID0gaWRlbnRp
dHkoZnVuY3Rpb24ocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcbiAgICAgIC8vIFRoaXMgY29u
c3RydWN0b3IgZ2V0cyBvdmVycmlkZGVuIGJ5IG1vY2tzLiBUaGUgYXJndW1lbnQgaXMgdXNlZFxu
ICAgICAgLy8gYnkgbW9ja3MgdG8gYXNzZXJ0IG9uIHdoYXQgZ2V0cyBtb3VudGVkLlxuXG4gICAg
ICBpZiAoZmFsc2UpIHtcbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICB0aGlzIGluc3RhbmNl
b2YgQ29uc3RydWN0b3IsXG4gICAgICAgICAgJ1NvbWV0aGluZyBpcyBjYWxsaW5nIGEgUmVhY3Qg
Y29tcG9uZW50IGRpcmVjdGx5LiBVc2UgYSBmYWN0b3J5IG9yICcgK1xuICAgICAgICAgICAgJ0pT
WCBpbnN0ZWFkLiBTZWU6IGh0dHBzOi8vZmIubWUvcmVhY3QtbGVnYWN5ZmFjdG9yeSdcbiAgICAg
ICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gV2lyZSB1cCBhdXRvLWJpbmRpbmdcbiAgICAgIGlm
ICh0aGlzLl9fcmVhY3RBdXRvQmluZFBhaXJzLmxlbmd0aCkge1xuICAgICAgICBiaW5kQXV0b0Jp
bmRNZXRob2RzKHRoaXMpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4g
ICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgdGhpcy5yZWZzID0gZW1wdHlPYmpl
Y3Q7XG4gICAgICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVl
O1xuXG4gICAgICB0aGlzLnN0YXRlID0gbnVsbDtcblxuICAgICAgLy8gUmVhY3RDbGFzc2VzIGRv
ZXNuJ3QgaGF2ZSBjb25zdHJ1Y3RvcnMuIEluc3RlYWQsIHRoZXkgdXNlIHRoZVxuICAgICAgLy8g
Z2V0SW5pdGlhbFN0YXRlIGFuZCBjb21wb25lbnRXaWxsTW91bnQgbWV0aG9kcyBmb3IgaW5pdGlh
bGl6YXRpb24uXG5cbiAgICAgIHZhciBpbml0aWFsU3RhdGUgPSB0aGlzLmdldEluaXRpYWxTdGF0
ZSA/IHRoaXMuZ2V0SW5pdGlhbFN0YXRlKCkgOiBudWxsO1xuICAgICAgaWYgKGZhbHNlKSB7XG4g
ICAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJl
dHVybmluZyBudWxsLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgaW5pdGlhbFN0YXRlID09PSB1
bmRlZmluZWQgJiZcbiAgICAgICAgICB0aGlzLmdldEluaXRpYWxTdGF0ZS5faXNNb2NrRnVuY3Rp
b25cbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBiYWQgcHJhY3Rp
Y2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmRcbiAgICAgICAgICAvLyBkZXByZWNhdGluZyB0
aGlzIGNvbnZlbmllbmNlLlxuICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IG51bGw7XG4gICAgICAg
IH1cbiAgICAgIH1cbiAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgIHR5cGVvZiBpbml0aWFsU3Rh
dGUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGluaXRpYWxTdGF0ZSksXG4gICAgICAg
ICclcy5nZXRJbml0aWFsU3RhdGUoKTogbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwnLFxu
ICAgICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25l
bnQnXG4gICAgICApO1xuXG4gICAgICB0aGlzLnN0YXRlID0gaW5pdGlhbFN0YXRlO1xuICAgIH0p
O1xuICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IG5ldyBSZWFjdENsYXNzQ29tcG9uZW50KCk7
XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I7XG4g
ICAgQ29uc3RydWN0b3IucHJvdG90eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJzID0gW107XG5cbiAg
ICBpbmplY3RlZE1peGlucy5mb3JFYWNoKG1peFNwZWNJbnRvQ29tcG9uZW50LmJpbmQobnVsbCwg
Q29uc3RydWN0b3IpKTtcblxuICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBJ
c01vdW50ZWRQcmVNaXhpbik7XG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3Is
IHNwZWMpO1xuICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBJc01vdW50ZWRQ
b3N0TWl4aW4pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdFByb3BzIHByb3BlcnR5
IGFmdGVyIGFsbCBtaXhpbnMgaGF2ZSBiZWVuIG1lcmdlZC5cbiAgICBpZiAoQ29uc3RydWN0b3Iu
Z2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICBDb25zdHJ1Y3Rvci5kZWZhdWx0UHJvcHMgPSBDb25z
dHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMoKTtcbiAgICB9XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAg
ICAgIC8vIFRoaXMgaXMgYSB0YWcgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdXNlIG9mIHRoZXNlIG1l
dGhvZCBuYW1lcyBpcyBvayxcbiAgICAgIC8vIHNpbmNlIGl0J3MgdXNlZCB3aXRoIGNyZWF0ZUNs
YXNzLiBJZiBpdCdzIG5vdCwgdGhlbiBpdCdzIGxpa2VseSBhXG4gICAgICAvLyBtaXN0YWtlIHNv
IHdlJ2xsIHdhcm4geW91IHRvIHVzZSB0aGUgc3RhdGljIHByb3BlcnR5LCBwcm9wZXJ0eVxuICAg
ICAgLy8gaW5pdGlhbGl6ZXIgb3IgY29uc3RydWN0b3IgcmVzcGVjdGl2ZWx5LlxuICAgICAgaWYg
KENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcykge1xuICAgICAgICBDb25zdHJ1Y3Rvci5nZXRE
ZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTtcbiAgICAgIH1cbiAgICAgIGlm
IChDb25zdHJ1Y3Rvci5wcm90b3R5cGUuZ2V0SW5pdGlhbFN0YXRlKSB7XG4gICAgICAgIENvbnN0
cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7
fTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfaW52YXJpYW50KFxuICAgICAgQ29uc3RydWN0b3Iu
cHJvdG90eXBlLnJlbmRlcixcbiAgICAgICdjcmVhdGVDbGFzcyguLi4pOiBDbGFzcyBzcGVjaWZp
Y2F0aW9uIG11c3QgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLidcbiAgICApO1xuXG4gICAg
aWYgKGZhbHNlKSB7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICAhQ29uc3RydWN0b3IucHJvdG90
eXBlLmNvbXBvbmVudFNob3VsZFVwZGF0ZSxcbiAgICAgICAgJyVzIGhhcyBhIG1ldGhvZCBjYWxs
ZWQgJyArXG4gICAgICAgICAgJ2NvbXBvbmVudFNob3VsZFVwZGF0ZSgpLiBEaWQgeW91IG1lYW4g
c2hvdWxkQ29tcG9uZW50VXBkYXRlKCk/ICcgK1xuICAgICAgICAgICdUaGUgbmFtZSBpcyBwaHJh
c2VkIGFzIGEgcXVlc3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArXG4gICAgICAgICAg
J2V4cGVjdGVkIHRvIHJldHVybiBhIHZhbHVlLicsXG4gICAgICAgIHNwZWMuZGlzcGxheU5hbWUg
fHwgJ0EgY29tcG9uZW50J1xuICAgICAgKTtcbiAgICAgIHdhcm5pbmcoXG4gICAgICAgICFDb25z
dHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyxcbiAgICAgICAgJyVz
IGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArXG4gICAgICAgICAgJ2NvbXBvbmVudFdpbGxSZWNpZXZl
UHJvcHMoKS4gRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKT8nLFxuICAg
ICAgICBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCdcbiAgICAgICk7XG4gICAgfVxu
XG4gICAgLy8gUmVkdWNlIHRpbWUgc3BlbnQgZG9pbmcgbG9va3VwcyBieSBzZXR0aW5nIHRoZXNl
IG9uIHRoZSBwcm90b3R5cGUuXG4gICAgZm9yICh2YXIgbWV0aG9kTmFtZSBpbiBSZWFjdENsYXNz
SW50ZXJmYWNlKSB7XG4gICAgICBpZiAoIUNvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1l
XSkge1xuICAgICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBudWxsO1xu
ICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfVxuXG4gIHJldHVy
biBjcmVhdGVDbGFzcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5O1xuXG5cbi8qKiov
IH0pLFxuLyogMTE3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICovXG5cblxudmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
OCk7XG5cbnZhciBSZWFjdEVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcblxudmFy
IGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8qKlxuICogUmV0dXJucyB0
aGUgZmlyc3QgY2hpbGQgaW4gYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuIGFuZCB2ZXJpZmllcyB0
aGF0IHRoZXJlXG4gKiBpcyBvbmx5IG9uZSBjaGlsZCBpbiB0aGUgY29sbGVjdGlvbi5cbiAqXG4g
KiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBp
Lmh0bWwjcmVhY3QuY2hpbGRyZW4ub25seVxuICpcbiAqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0
aW9uIG9mIHRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IGEgc2luZ2xlIGNoaWxkIGdldHNcbiAq
IHBhc3NlZCB3aXRob3V0IGEgd3JhcHBlciwgYnV0IHRoZSBwdXJwb3NlIG9mIHRoaXMgaGVscGVy
IGZ1bmN0aW9uIGlzIHRvXG4gKiBhYnN0cmFjdCBhd2F5IHRoZSBwYXJ0aWN1bGFyIHN0cnVjdHVy
ZSBvZiBjaGlsZHJlbi5cbiAqXG4gKiBAcGFyYW0gez9vYmplY3R9IGNoaWxkcmVuIENoaWxkIGNv
bGxlY3Rpb24gc3RydWN0dXJlLlxuICogQHJldHVybiB7UmVhY3RFbGVtZW50fSBUaGUgZmlyc3Qg
YW5kIG9ubHkgYFJlYWN0RWxlbWVudGAgY29udGFpbmVkIGluIHRoZVxuICogc3RydWN0dXJlLlxu
ICovXG5mdW5jdGlvbiBvbmx5Q2hpbGQoY2hpbGRyZW4pIHtcbiAgIVJlYWN0RWxlbWVudC5pc1Zh
bGlkRWxlbWVudChjaGlsZHJlbikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdC5D
aGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5nbGUgUmVhY3QgZWxlbWVudCBj
aGlsZC4nKSA6IF9wcm9kSW52YXJpYW50KCcxNDMnKSA6IHZvaWQgMDtcbiAgcmV0dXJuIGNoaWxk
cmVuO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9ubHlDaGlsZDtcblxuLyoqKi8gfSksXG4vKiAx
MTggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDExOSk7XG5cblxuLyoqKi8gfSksXG4vKiAxMTkgKi9cbi8qKiovIChmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0
XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuLyogZ2xvYmFscyBfX1JFQUNU
X0RFVlRPT0xTX0dMT0JBTF9IT09LX18qL1xuXG5cblxudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJl
ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG52YXIgUmVhY3REZWZhdWx0SW5qZWN0aW9uID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxMjApO1xudmFyIFJlYWN0TW91bnQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDgyKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2
KTtcbnZhciBSZWFjdFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xudmFyIFJlYWN0
VmVyc2lvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTkyKTtcblxudmFyIGZpbmRET01Ob2RlID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxOTMpO1xudmFyIGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9z
aXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Myk7XG52YXIgcmVuZGVyU3VidHJlZUludG9Db250
YWluZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5NCk7XG52YXIgd2FybmluZyA9IF9fd2VicGFj
a19yZXF1aXJlX18oMSk7XG5cblJlYWN0RGVmYXVsdEluamVjdGlvbi5pbmplY3QoKTtcblxudmFy
IFJlYWN0RE9NID0ge1xuICBmaW5kRE9NTm9kZTogZmluZERPTU5vZGUsXG4gIHJlbmRlcjogUmVh
Y3RNb3VudC5yZW5kZXIsXG4gIHVubW91bnRDb21wb25lbnRBdE5vZGU6IFJlYWN0TW91bnQudW5t
b3VudENvbXBvbmVudEF0Tm9kZSxcbiAgdmVyc2lvbjogUmVhY3RWZXJzaW9uLFxuXG4gIC8qIGVz
bGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuICB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlczogUmVh
Y3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzLFxuICB1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0Nv
bnRhaW5lcjogcmVuZGVyU3VidHJlZUludG9Db250YWluZXJcbiAgLyogZXNsaW50LWVuYWJsZSBj
YW1lbGNhc2UgKi9cbn07XG5cbi8vIEluamVjdCB0aGUgcnVudGltZSBpbnRvIGEgZGV2dG9vbHMg
Z2xvYmFsIGhvb2sgcmVnYXJkbGVzcyBvZiBicm93c2VyLlxuLy8gQWxsb3dzIGZvciBkZWJ1Z2dp
bmcgd2hlbiB0aGUgaG9vayBpcyBpbmplY3RlZCBvbiB0aGUgcGFnZS5cbmlmICh0eXBlb2YgX19S
RUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgX19S
RUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICBf
X1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0KHtcbiAgICBDb21wb25lbnRUcmVl
OiB7XG4gICAgICBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTogUmVhY3RET01Db21wb25lbnRU
cmVlLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlLFxuICAgICAgZ2V0Tm9kZUZyb21JbnN0YW5j
ZTogZnVuY3Rpb24gKGluc3QpIHtcbiAgICAgICAgLy8gaW5zdCBpcyBhbiBpbnRlcm5hbCBpbnN0
YW5jZSAoYnV0IGNvdWxkIGJlIGEgY29tcG9zaXRlKVxuICAgICAgICBpZiAoaW5zdC5fcmVuZGVy
ZWRDb21wb25lbnQpIHtcbiAgICAgICAgICBpbnN0ID0gZ2V0SG9zdENvbXBvbmVudEZyb21Db21w
b3NpdGUoaW5zdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluc3QpIHtcbiAgICAgICAgICBy
ZXR1cm4gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG4g
ICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICB9LFxuICAgIE1vdW50OiBSZWFjdE1vdW50LFxuICAgIFJlY29uY2lsZXI6IFJlYWN0
UmVjb25jaWxlclxuICB9KTtcbn1cblxuaWYgKGZhbHNlKSB7XG4gIHZhciBFeGVjdXRpb25FbnZp
cm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG4gIGlm
IChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgd2luZG93LnRvcCA9PT0gd2luZG93
LnNlbGYpIHtcbiAgICAvLyBGaXJzdCBjaGVjayBpZiBkZXZ0b29scyBpcyBub3QgaW5zdGFsbGVk
XG4gICAgaWYgKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRl
ZmluZWQnKSB7XG4gICAgICAvLyBJZiB3ZSdyZSBpbiBDaHJvbWUgb3IgRmlyZWZveCwgcHJvdmlk
ZSBhIGRvd25sb2FkIGxpbmsgaWYgbm90IGluc3RhbGxlZC5cbiAgICAgIGlmIChuYXZpZ2F0b3Iu
dXNlckFnZW50LmluZGV4T2YoJ0Nocm9tZScpID4gLTEgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5p
bmRleE9mKCdFZGdlJykgPT09IC0xIHx8IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmly
ZWZveCcpID4gLTEpIHtcbiAgICAgICAgLy8gRmlyZWZveCBkb2VzIG5vdCBoYXZlIHRoZSBpc3N1
ZSB3aXRoIGRldnRvb2xzIGxvYWRlZCBvdmVyIGZpbGU6Ly9cbiAgICAgICAgdmFyIHNob3dGaWxl
VXJsTWVzc2FnZSA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbC5pbmRleE9mKCdodHRwJykgPT09
IC0xICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmlyZWZveCcpID09PSAtMTtcbiAg
ICAgICAgY29uc29sZS5kZWJ1ZygnRG93bmxvYWQgdGhlIFJlYWN0IERldlRvb2xzICcgKyAoc2hv
d0ZpbGVVcmxNZXNzYWdlID8gJ2FuZCB1c2UgYW4gSFRUUCBzZXJ2ZXIgKGluc3RlYWQgb2YgYSBm
aWxlOiBVUkwpICcgOiAnJykgKyAnZm9yIGEgYmV0dGVyIGRldmVsb3BtZW50IGV4cGVyaWVuY2U6
ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1kZXZ0b29scycpO1xuICAgICAgfVxuICAgIH1cblxu
ICAgIHZhciB0ZXN0RnVuYyA9IGZ1bmN0aW9uIHRlc3RGbigpIHt9O1xuICAgIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCh0ZXN0RnVuYy5uYW1lIHx8IHRl
c3RGdW5jLnRvU3RyaW5nKCkpLmluZGV4T2YoJ3Rlc3RGbicpICE9PSAtMSwgXCJJdCBsb29rcyBs
aWtlIHlvdSdyZSB1c2luZyBhIG1pbmlmaWVkIGNvcHkgb2YgdGhlIGRldmVsb3BtZW50IGJ1aWxk
IFwiICsgJ29mIFJlYWN0LiBXaGVuIGRlcGxveWluZyBSZWFjdCBhcHBzIHRvIHByb2R1Y3Rpb24s
IG1ha2Ugc3VyZSB0byB1c2UgJyArICd0aGUgcHJvZHVjdGlvbiBidWlsZCB3aGljaCBza2lwcyBk
ZXZlbG9wbWVudCB3YXJuaW5ncyBhbmQgaXMgZmFzdGVyLiAnICsgJ1NlZSBodHRwczovL2ZiLm1l
L3JlYWN0LW1pbmlmaWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLicpIDogdm9pZCAwO1xuXG4gICAg
Ly8gSWYgd2UncmUgaW4gSUU4LCBjaGVjayB0byBzZWUgaWYgd2UgYXJlIGluIGNvbXBhdGliaWxp
dHkgbW9kZSBhbmQgcHJvdmlkZVxuICAgIC8vIGluZm9ybWF0aW9uIG9uIHByZXZlbnRpbmcgY29t
cGF0aWJpbGl0eSBtb2RlXG4gICAgdmFyIGllQ29tcGF0aWJpbGl0eU1vZGUgPSBkb2N1bWVudC5k
b2N1bWVudE1vZGUgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDwgODtcblxuICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpZUNvbXBhdGliaWxpdHlN
b2RlLCAnSW50ZXJuZXQgRXhwbG9yZXIgaXMgcnVubmluZyBpbiBjb21wYXRpYmlsaXR5IG1vZGU7
IHBsZWFzZSBhZGQgdGhlICcgKyAnZm9sbG93aW5nIHRhZyB0byB5b3VyIEhUTUwgdG8gcHJldmVu
dCB0aGlzIGZyb20gaGFwcGVuaW5nOiAnICsgJzxtZXRhIGh0dHAtZXF1aXY9XCJYLVVBLUNvbXBh
dGlibGVcIiBjb250ZW50PVwiSUU9ZWRnZVwiIC8+JykgOiB2b2lkIDA7XG5cbiAgICB2YXIgZXhw
ZWN0ZWRGZWF0dXJlcyA9IFtcbiAgICAvLyBzaGltc1xuICAgIEFycmF5LmlzQXJyYXksIEFycmF5
LnByb3RvdHlwZS5ldmVyeSwgQXJyYXkucHJvdG90eXBlLmZvckVhY2gsIEFycmF5LnByb3RvdHlw
ZS5pbmRleE9mLCBBcnJheS5wcm90b3R5cGUubWFwLCBEYXRlLm5vdywgRnVuY3Rpb24ucHJvdG90
eXBlLmJpbmQsIE9iamVjdC5rZXlzLCBTdHJpbmcucHJvdG90eXBlLnRyaW1dO1xuXG4gICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZEZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBp
ZiAoIWV4cGVjdGVkRmVhdHVyZXNbaV0pIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdPbmUgb3IgbW9yZSBFUzUgc2hpbXMg
ZXhwZWN0ZWQgYnkgUmVhY3QgYXJlIG5vdCBhdmFpbGFibGU6ICcgKyAnaHR0cHM6Ly9mYi5tZS9y
ZWFjdC13YXJuaW5nLXBvbHlmaWxscycpIDogdm9pZCAwO1xuICAgICAgICBicmVhaztcbiAgICAg
IH1cbiAgICB9XG4gIH1cbn1cblxuaWYgKGZhbHNlKSB7XG4gIHZhciBSZWFjdEluc3RydW1lbnRh
dGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVtZW50YXRpb24nKTtcbiAgdmFyIFJlYWN0RE9N
VW5rbm93blByb3BlcnR5SG9vayA9IHJlcXVpcmUoJy4vUmVhY3RET01Vbmtub3duUHJvcGVydHlI
b29rJyk7XG4gIHZhciBSZWFjdERPTU51bGxJbnB1dFZhbHVlUHJvcEhvb2sgPSByZXF1aXJlKCcu
L1JlYWN0RE9NTnVsbElucHV0VmFsdWVQcm9wSG9vaycpO1xuICB2YXIgUmVhY3RET01JbnZhbGlk
QVJJQUhvb2sgPSByZXF1aXJlKCcuL1JlYWN0RE9NSW52YWxpZEFSSUFIb29rJyk7XG5cbiAgUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLmFkZEhvb2soUmVhY3RET01Vbmtub3duUHJvcGVy
dHlIb29rKTtcbiAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLmFkZEhvb2soUmVhY3RE
T01OdWxsSW5wdXRWYWx1ZVByb3BIb29rKTtcbiAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLmFkZEhvb2soUmVhY3RET01JbnZhbGlkQVJJQUhvb2spO1xufVxuXG5tb2R1bGUuZXhwb3J0
cyA9IFJlYWN0RE9NO1xuXG4vKioqLyB9KSxcbi8qIDEyMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtc
bi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIEFSSUFET01Qcm9wZXJ0
eUNvbmZpZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIxKTtcbnZhciBCZWZvcmVJbnB1dEV2ZW50
UGx1Z2luID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjIpO1xudmFyIENoYW5nZUV2ZW50UGx1Z2lu
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjYpO1xudmFyIERlZmF1bHRFdmVudFBsdWdpbk9yZGVy
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjkpO1xudmFyIEVudGVyTGVhdmVFdmVudFBsdWdpbiA9
IF9fd2VicGFja19yZXF1aXJlX18oMTMwKTtcbnZhciBIVE1MRE9NUHJvcGVydHlDb25maWcgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEzMSk7XG52YXIgUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJv
bm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzMik7XG52YXIgUmVhY3RET01Db21wb25lbnQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzOCk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbnZhciBSZWFjdERPTUVtcHR5Q29tcG9uZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxNjMpO1xudmFyIFJlYWN0RE9NVHJlZVRyYXZlcnNhbCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTY0KTtcbnZhciBSZWFjdERPTVRleHRDb21wb25lbnQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDE2NSk7XG52YXIgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSA9IF9f
d2VicGFja19yZXF1aXJlX18oMTY2KTtcbnZhciBSZWFjdEV2ZW50TGlzdGVuZXIgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDE2Nyk7XG52YXIgUmVhY3RJbmplY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDE2OSk7XG52YXIgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiA9IF9fd2VicGFja19yZXF1
aXJlX18oMTcwKTtcbnZhciBTVkdET01Qcm9wZXJ0eUNvbmZpZyA9IF9fd2VicGFja19yZXF1aXJl
X18oMTc2KTtcbnZhciBTZWxlY3RFdmVudFBsdWdpbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTc3
KTtcbnZhciBTaW1wbGVFdmVudFBsdWdpbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTc4KTtcblxu
dmFyIGFscmVhZHlJbmplY3RlZCA9IGZhbHNlO1xuXG5mdW5jdGlvbiBpbmplY3QoKSB7XG4gIGlm
IChhbHJlYWR5SW5qZWN0ZWQpIHtcbiAgICAvLyBUT0RPOiBUaGlzIGlzIGN1cnJlbnRseSB0cnVl
IGJlY2F1c2UgdGhlc2UgaW5qZWN0aW9ucyBhcmUgc2hhcmVkIGJldHdlZW5cbiAgICAvLyB0aGUg
Y2xpZW50IGFuZCB0aGUgc2VydmVyIHBhY2thZ2UuIFRoZXkgc2hvdWxkIGJlIGJ1aWx0IGluZGVw
ZW5kZW50bHlcbiAgICAvLyBhbmQgbm90IHNoYXJlIGFueSBpbmplY3Rpb24gc3RhdGUuIFRoZW4g
dGhpcyBwcm9ibGVtIHdpbGwgYmUgc29sdmVkLlxuICAgIHJldHVybjtcbiAgfVxuICBhbHJlYWR5
SW5qZWN0ZWQgPSB0cnVlO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50RW1pdHRlci5pbmplY3RS
ZWFjdEV2ZW50TGlzdGVuZXIoUmVhY3RFdmVudExpc3RlbmVyKTtcblxuICAvKipcbiAgICogSW5q
ZWN0IG1vZHVsZXMgZm9yIHJlc29sdmluZyBET00gaGllcmFyY2h5IGFuZCBwbHVnaW4gb3JkZXJp
bmcuXG4gICAqL1xuICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBs
dWdpbk9yZGVyKERlZmF1bHRFdmVudFBsdWdpbk9yZGVyKTtcbiAgUmVhY3RJbmplY3Rpb24uRXZl
bnRQbHVnaW5VdGlscy5pbmplY3RDb21wb25lbnRUcmVlKFJlYWN0RE9NQ29tcG9uZW50VHJlZSk7
XG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luVXRpbHMuaW5qZWN0VHJlZVRyYXZlcnNhbChS
ZWFjdERPTVRyZWVUcmF2ZXJzYWwpO1xuXG4gIC8qKlxuICAgKiBTb21lIGltcG9ydGFudCBldmVu
dCBwbHVnaW5zIGluY2x1ZGVkIGJ5IGRlZmF1bHQgKHdpdGhvdXQgaGF2aW5nIHRvIHJlcXVpcmVc
biAgICogdGhlbSkuXG4gICAqL1xuICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1Yi5pbmpl
Y3RFdmVudFBsdWdpbnNCeU5hbWUoe1xuICAgIFNpbXBsZUV2ZW50UGx1Z2luOiBTaW1wbGVFdmVu
dFBsdWdpbixcbiAgICBFbnRlckxlYXZlRXZlbnRQbHVnaW46IEVudGVyTGVhdmVFdmVudFBsdWdp
bixcbiAgICBDaGFuZ2VFdmVudFBsdWdpbjogQ2hhbmdlRXZlbnRQbHVnaW4sXG4gICAgU2VsZWN0
RXZlbnRQbHVnaW46IFNlbGVjdEV2ZW50UGx1Z2luLFxuICAgIEJlZm9yZUlucHV0RXZlbnRQbHVn
aW46IEJlZm9yZUlucHV0RXZlbnRQbHVnaW5cbiAgfSk7XG5cbiAgUmVhY3RJbmplY3Rpb24uSG9z
dENvbXBvbmVudC5pbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MoUmVhY3RET01Db21wb25lbnQp
O1xuXG4gIFJlYWN0SW5qZWN0aW9uLkhvc3RDb21wb25lbnQuaW5qZWN0VGV4dENvbXBvbmVudENs
YXNzKFJlYWN0RE9NVGV4dENvbXBvbmVudCk7XG5cbiAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVy
dHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoQVJJQURPTVByb3BlcnR5Q29uZmlnKTtcbiAgUmVh
Y3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoSFRNTERPTVBy
b3BlcnR5Q29uZmlnKTtcbiAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJv
cGVydHlDb25maWcoU1ZHRE9NUHJvcGVydHlDb25maWcpO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkVt
cHR5Q29tcG9uZW50LmluamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeShmdW5jdGlvbiAoaW5zdGFu
dGlhdGUpIHtcbiAgICByZXR1cm4gbmV3IFJlYWN0RE9NRW1wdHlDb21wb25lbnQoaW5zdGFudGlh
dGUpO1xuICB9KTtcblxuICBSZWFjdEluamVjdGlvbi5VcGRhdGVzLmluamVjdFJlY29uY2lsZVRy
YW5zYWN0aW9uKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24pO1xuICBSZWFjdEluamVjdGlvbi5V
cGRhdGVzLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVn
eSk7XG5cbiAgUmVhY3RJbmplY3Rpb24uQ29tcG9uZW50LmluamVjdEVudmlyb25tZW50KFJlYWN0
Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4g
IGluamVjdDogaW5qZWN0XG59O1xuXG4vKioqLyB9KSxcbi8qIDEyMSAqL1xuLyoqKi8gKGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJp
Y3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIEFSSUFET01Q
cm9wZXJ0eUNvbmZpZyA9IHtcbiAgUHJvcGVydGllczoge1xuICAgIC8vIEdsb2JhbCBTdGF0ZXMg
YW5kIFByb3BlcnRpZXNcbiAgICAnYXJpYS1jdXJyZW50JzogMCwgLy8gc3RhdGVcbiAgICAnYXJp
YS1kZXRhaWxzJzogMCxcbiAgICAnYXJpYS1kaXNhYmxlZCc6IDAsIC8vIHN0YXRlXG4gICAgJ2Fy
aWEtaGlkZGVuJzogMCwgLy8gc3RhdGVcbiAgICAnYXJpYS1pbnZhbGlkJzogMCwgLy8gc3RhdGVc
biAgICAnYXJpYS1rZXlzaG9ydGN1dHMnOiAwLFxuICAgICdhcmlhLWxhYmVsJzogMCxcbiAgICAn
YXJpYS1yb2xlZGVzY3JpcHRpb24nOiAwLFxuICAgIC8vIFdpZGdldCBBdHRyaWJ1dGVzXG4gICAg
J2FyaWEtYXV0b2NvbXBsZXRlJzogMCxcbiAgICAnYXJpYS1jaGVja2VkJzogMCxcbiAgICAnYXJp
YS1leHBhbmRlZCc6IDAsXG4gICAgJ2FyaWEtaGFzcG9wdXAnOiAwLFxuICAgICdhcmlhLWxldmVs
JzogMCxcbiAgICAnYXJpYS1tb2RhbCc6IDAsXG4gICAgJ2FyaWEtbXVsdGlsaW5lJzogMCxcbiAg
ICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnOiAwLFxuICAgICdhcmlhLW9yaWVudGF0aW9uJzogMCxc
biAgICAnYXJpYS1wbGFjZWhvbGRlcic6IDAsXG4gICAgJ2FyaWEtcHJlc3NlZCc6IDAsXG4gICAg
J2FyaWEtcmVhZG9ubHknOiAwLFxuICAgICdhcmlhLXJlcXVpcmVkJzogMCxcbiAgICAnYXJpYS1z
ZWxlY3RlZCc6IDAsXG4gICAgJ2FyaWEtc29ydCc6IDAsXG4gICAgJ2FyaWEtdmFsdWVtYXgnOiAw
LFxuICAgICdhcmlhLXZhbHVlbWluJzogMCxcbiAgICAnYXJpYS12YWx1ZW5vdyc6IDAsXG4gICAg
J2FyaWEtdmFsdWV0ZXh0JzogMCxcbiAgICAvLyBMaXZlIFJlZ2lvbiBBdHRyaWJ1dGVzXG4gICAg
J2FyaWEtYXRvbWljJzogMCxcbiAgICAnYXJpYS1idXN5JzogMCxcbiAgICAnYXJpYS1saXZlJzog
MCxcbiAgICAnYXJpYS1yZWxldmFudCc6IDAsXG4gICAgLy8gRHJhZy1hbmQtRHJvcCBBdHRyaWJ1
dGVzXG4gICAgJ2FyaWEtZHJvcGVmZmVjdCc6IDAsXG4gICAgJ2FyaWEtZ3JhYmJlZCc6IDAsXG4g
ICAgLy8gUmVsYXRpb25zaGlwIEF0dHJpYnV0ZXNcbiAgICAnYXJpYS1hY3RpdmVkZXNjZW5kYW50
JzogMCxcbiAgICAnYXJpYS1jb2xjb3VudCc6IDAsXG4gICAgJ2FyaWEtY29saW5kZXgnOiAwLFxu
ICAgICdhcmlhLWNvbHNwYW4nOiAwLFxuICAgICdhcmlhLWNvbnRyb2xzJzogMCxcbiAgICAnYXJp
YS1kZXNjcmliZWRieSc6IDAsXG4gICAgJ2FyaWEtZXJyb3JtZXNzYWdlJzogMCxcbiAgICAnYXJp
YS1mbG93dG8nOiAwLFxuICAgICdhcmlhLWxhYmVsbGVkYnknOiAwLFxuICAgICdhcmlhLW93bnMn
OiAwLFxuICAgICdhcmlhLXBvc2luc2V0JzogMCxcbiAgICAnYXJpYS1yb3djb3VudCc6IDAsXG4g
ICAgJ2FyaWEtcm93aW5kZXgnOiAwLFxuICAgICdhcmlhLXJvd3NwYW4nOiAwLFxuICAgICdhcmlh
LXNldHNpemUnOiAwXG4gIH0sXG4gIERPTUF0dHJpYnV0ZU5hbWVzOiB7fSxcbiAgRE9NUHJvcGVy
dHlOYW1lczoge31cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQVJJQURPTVByb3BlcnR5Q29uZmln
O1xuXG4vKioqLyB9KSxcbi8qIDEyMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTkpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg1KTtcbnZhciBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDEyMyk7XG52YXIgU3ludGhldGljQ29tcG9zaXRpb25FdmVudCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTI0KTtcbnZhciBTeW50aGV0aWNJbnB1dEV2ZW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxMjUpO1xuXG52YXIgRU5EX0tFWUNPREVTID0gWzksIDEzLCAyNywgMzJdOyAvLyBUYWIs
IFJldHVybiwgRXNjLCBTcGFjZVxudmFyIFNUQVJUX0tFWUNPREUgPSAyMjk7XG5cbnZhciBjYW5V
c2VDb21wb3NpdGlvbkV2ZW50ID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdD
b21wb3NpdGlvbkV2ZW50JyBpbiB3aW5kb3c7XG5cbnZhciBkb2N1bWVudE1vZGUgPSBudWxsO1xu
aWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnZG9jdW1lbnRNb2RlJyBpbiBk
b2N1bWVudCkge1xuICBkb2N1bWVudE1vZGUgPSBkb2N1bWVudC5kb2N1bWVudE1vZGU7XG59XG5c
bi8vIFdlYmtpdCBvZmZlcnMgYSB2ZXJ5IHVzZWZ1bCBgdGV4dElucHV0YCBldmVudCB0aGF0IGNh
biBiZSB1c2VkIHRvXG4vLyBkaXJlY3RseSByZXByZXNlbnQgYGJlZm9yZUlucHV0YC4gVGhlIElF
IGB0ZXh0aW5wdXRgIGV2ZW50IGlzIG5vdCBhc1xuLy8gdXNlZnVsLCBzbyB3ZSBkb24ndCB1c2Ug
aXQuXG52YXIgY2FuVXNlVGV4dElucHV0RXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5V
c2VET00gJiYgJ1RleHRFdmVudCcgaW4gd2luZG93ICYmICFkb2N1bWVudE1vZGUgJiYgIWlzUHJl
c3RvKCk7XG5cbi8vIEluIElFOSssIHdlIGhhdmUgYWNjZXNzIHRvIGNvbXBvc2l0aW9uIGV2ZW50
cywgYnV0IHRoZSBkYXRhIHN1cHBsaWVkXG4vLyBieSB0aGUgbmF0aXZlIGNvbXBvc2l0aW9uZW5k
IGV2ZW50IG1heSBiZSBpbmNvcnJlY3QuIEphcGFuZXNlIGlkZW9ncmFwaGljXG4vLyBzcGFjZXMs
IGZvciBpbnN0YW5jZSAoXFx1MzAwMCkgYXJlIG5vdCByZWNvcmRlZCBjb3JyZWN0bHkuXG52YXIg
dXNlRmFsbGJhY2tDb21wb3NpdGlvbkRhdGEgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VE
T00gJiYgKCFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50IHx8IGRvY3VtZW50TW9kZSAmJiBkb2N1bWVu
dE1vZGUgPiA4ICYmIGRvY3VtZW50TW9kZSA8PSAxMSk7XG5cbi8qKlxuICogT3BlcmEgPD0gMTIg
aW5jbHVkZXMgVGV4dEV2ZW50IGluIHdpbmRvdywgYnV0IGRvZXMgbm90IGZpcmVcbiAqIHRleHQg
aW5wdXQgZXZlbnRzLiBSZWx5IG9uIGtleXByZXNzIGluc3RlYWQuXG4gKi9cbmZ1bmN0aW9uIGlz
UHJlc3RvKCkge1xuICB2YXIgb3BlcmEgPSB3aW5kb3cub3BlcmE7XG4gIHJldHVybiB0eXBlb2Yg
b3BlcmEgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvcGVyYS52ZXJzaW9uID09PSAnZnVuY3Rpb24n
ICYmIHBhcnNlSW50KG9wZXJhLnZlcnNpb24oKSwgMTApIDw9IDEyO1xufVxuXG52YXIgU1BBQ0VC
QVJfQ09ERSA9IDMyO1xudmFyIFNQQUNFQkFSX0NIQVIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKFNQ
QUNFQkFSX0NPREUpO1xuXG4vLyBFdmVudHMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgcHJvcGVy
dHkgbmFtZXMuXG52YXIgZXZlbnRUeXBlcyA9IHtcbiAgYmVmb3JlSW5wdXQ6IHtcbiAgICBwaGFz
ZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDogJ29uQmVmb3JlSW5wdXQnLFxu
ICAgICAgY2FwdHVyZWQ6ICdvbkJlZm9yZUlucHV0Q2FwdHVyZSdcbiAgICB9LFxuICAgIGRlcGVu
ZGVuY2llczogWyd0b3BDb21wb3NpdGlvbkVuZCcsICd0b3BLZXlQcmVzcycsICd0b3BUZXh0SW5w
dXQnLCAndG9wUGFzdGUnXVxuICB9LFxuICBjb21wb3NpdGlvbkVuZDoge1xuICAgIHBoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiAnb25Db21wb3NpdGlvbkVuZCcsXG4g
ICAgICBjYXB0dXJlZDogJ29uQ29tcG9zaXRpb25FbmRDYXB0dXJlJ1xuICAgIH0sXG4gICAgZGVw
ZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ29tcG9zaXRpb25FbmQnLCAndG9wS2V5RG93bics
ICd0b3BLZXlQcmVzcycsICd0b3BLZXlVcCcsICd0b3BNb3VzZURvd24nXVxuICB9LFxuICBjb21w
b3NpdGlvblN0YXJ0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1
YmJsZWQ6ICdvbkNvbXBvc2l0aW9uU3RhcnQnLFxuICAgICAgY2FwdHVyZWQ6ICdvbkNvbXBvc2l0
aW9uU3RhcnRDYXB0dXJlJ1xuICAgIH0sXG4gICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAn
dG9wQ29tcG9zaXRpb25TdGFydCcsICd0b3BLZXlEb3duJywgJ3RvcEtleVByZXNzJywgJ3RvcEtl
eVVwJywgJ3RvcE1vdXNlRG93biddXG4gIH0sXG4gIGNvbXBvc2l0aW9uVXBkYXRlOiB7XG4gICAg
cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6ICdvbkNvbXBvc2l0aW9u
VXBkYXRlJyxcbiAgICAgIGNhcHR1cmVkOiAnb25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmUnXG4g
ICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFsndG9wQmx1cicsICd0b3BDb21wb3NpdGlvblVwZGF0
ZScsICd0b3BLZXlEb3duJywgJ3RvcEtleVByZXNzJywgJ3RvcEtleVVwJywgJ3RvcE1vdXNlRG93
biddXG4gIH1cbn07XG5cbi8vIFRyYWNrIHdoZXRoZXIgd2UndmUgZXZlciBoYW5kbGVkIGEga2V5
cHJlc3Mgb24gdGhlIHNwYWNlIGtleS5cbnZhciBoYXNTcGFjZUtleXByZXNzID0gZmFsc2U7XG5c
bi8qKlxuICogUmV0dXJuIHdoZXRoZXIgYSBuYXRpdmUga2V5cHJlc3MgZXZlbnQgaXMgYXNzdW1l
ZCB0byBiZSBhIGNvbW1hbmQuXG4gKiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UgRmlyZWZveCBm
aXJlcyBga2V5cHJlc3NgIGV2ZW50cyBmb3Iga2V5IGNvbW1hbmRzXG4gKiAoY3V0LCBjb3B5LCBz
ZWxlY3QtYWxsLCBldGMuKSBldmVuIHRob3VnaCBubyBjaGFyYWN0ZXIgaXMgaW5zZXJ0ZWQuXG4g
Ki9cbmZ1bmN0aW9uIGlzS2V5cHJlc3NDb21tYW5kKG5hdGl2ZUV2ZW50KSB7XG4gIHJldHVybiAo
bmF0aXZlRXZlbnQuY3RybEtleSB8fCBuYXRpdmVFdmVudC5hbHRLZXkgfHwgbmF0aXZlRXZlbnQu
bWV0YUtleSkgJiZcbiAgLy8gY3RybEtleSAmJiBhbHRLZXkgaXMgZXF1aXZhbGVudCB0byBBbHRH
ciwgYW5kIGlzIG5vdCBhIGNvbW1hbmQuXG4gICEobmF0aXZlRXZlbnQuY3RybEtleSAmJiBuYXRp
dmVFdmVudC5hbHRLZXkpO1xufVxuXG4vKipcbiAqIFRyYW5zbGF0ZSBuYXRpdmUgdG9wIGxldmVs
IGV2ZW50cyBpbnRvIGV2ZW50IHR5cGVzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZl
bFR5cGVcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0Q29tcG9zaXRpb25F
dmVudFR5cGUodG9wTGV2ZWxUeXBlKSB7XG4gIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAg
Y2FzZSAndG9wQ29tcG9zaXRpb25TdGFydCc6XG4gICAgICByZXR1cm4gZXZlbnRUeXBlcy5jb21w
b3NpdGlvblN0YXJ0O1xuICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uRW5kJzpcbiAgICAgIHJldHVy
biBldmVudFR5cGVzLmNvbXBvc2l0aW9uRW5kO1xuICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uVXBk
YXRlJzpcbiAgICAgIHJldHVybiBldmVudFR5cGVzLmNvbXBvc2l0aW9uVXBkYXRlO1xuICB9XG59
XG5cbi8qKlxuICogRG9lcyBvdXIgZmFsbGJhY2sgYmVzdC1ndWVzcyBtb2RlbCB0aGluayB0aGlz
IGV2ZW50IHNpZ25pZmllcyB0aGF0XG4gKiBjb21wb3NpdGlvbiBoYXMgYmVndW4/XG4gKlxuICog
QHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZVxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2
ZW50XG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0ZhbGxiYWNrQ29tcG9z
aXRpb25TdGFydCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG4gIHJldHVybiB0b3BMZXZl
bFR5cGUgPT09ICd0b3BLZXlEb3duJyAmJiBuYXRpdmVFdmVudC5rZXlDb2RlID09PSBTVEFSVF9L
RVlDT0RFO1xufVxuXG4vKipcbiAqIERvZXMgb3VyIGZhbGxiYWNrIG1vZGUgdGhpbmsgdGhhdCB0
aGlzIGV2ZW50IGlzIHRoZSBlbmQgb2YgY29tcG9zaXRpb24/XG4gKlxuICogQHBhcmFtIHtzdHJp
bmd9IHRvcExldmVsVHlwZVxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50XG4gKiBAcmV0
dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQodG9w
TGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuICBzd2l0Y2ggKHRvcExldmVsVHlwZSkge1xuICAg
IGNhc2UgJ3RvcEtleVVwJzpcbiAgICAgIC8vIENvbW1hbmQga2V5cyBpbnNlcnQgb3IgY2xlYXIg
SU1FIGlucHV0LlxuICAgICAgcmV0dXJuIEVORF9LRVlDT0RFUy5pbmRleE9mKG5hdGl2ZUV2ZW50
LmtleUNvZGUpICE9PSAtMTtcbiAgICBjYXNlICd0b3BLZXlEb3duJzpcbiAgICAgIC8vIEV4cGVj
dCBJTUUga2V5Q29kZSBvbiBlYWNoIGtleWRvd24uIElmIHdlIGdldCBhbnkgb3RoZXJcbiAgICAg
IC8vIGNvZGUgd2UgbXVzdCBoYXZlIGV4aXRlZCBlYXJsaWVyLlxuICAgICAgcmV0dXJuIG5hdGl2
ZUV2ZW50LmtleUNvZGUgIT09IFNUQVJUX0tFWUNPREU7XG4gICAgY2FzZSAndG9wS2V5UHJlc3Mn
OlxuICAgIGNhc2UgJ3RvcE1vdXNlRG93bic6XG4gICAgY2FzZSAndG9wQmx1cic6XG4gICAgICAv
LyBFdmVudHMgYXJlIG5vdCBwb3NzaWJsZSB3aXRob3V0IGNhbmNlbGxpbmcgSU1FLlxuICAgICAg
cmV0dXJuIHRydWU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxu
XG4vKipcbiAqIEdvb2dsZSBJbnB1dCBUb29scyBwcm92aWRlcyBjb21wb3NpdGlvbiBkYXRhIHZp
YSBhIEN1c3RvbUV2ZW50LFxuICogd2l0aCB0aGUgYGRhdGFgIHByb3BlcnR5IHBvcHVsYXRlZCBp
biB0aGUgYGRldGFpbGAgb2JqZWN0LiBJZiB0aGlzXG4gKiBpcyBhdmFpbGFibGUgb24gdGhlIGV2
ZW50IG9iamVjdCwgdXNlIGl0LiBJZiBub3QsIHRoaXMgaXMgYSBwbGFpblxuICogY29tcG9zaXRp
b24gZXZlbnQgYW5kIHdlIGhhdmUgbm90aGluZyBzcGVjaWFsIHRvIGV4dHJhY3QuXG4gKlxuICog
QHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50XG4gKiBAcmV0dXJuIHs/c3RyaW5nfVxuICovXG5m
dW5jdGlvbiBnZXREYXRhRnJvbUN1c3RvbUV2ZW50KG5hdGl2ZUV2ZW50KSB7XG4gIHZhciBkZXRh
aWwgPSBuYXRpdmVFdmVudC5kZXRhaWw7XG4gIGlmICh0eXBlb2YgZGV0YWlsID09PSAnb2JqZWN0
JyAmJiAnZGF0YScgaW4gZGV0YWlsKSB7XG4gICAgcmV0dXJuIGRldGFpbC5kYXRhO1xuICB9XG4g
IHJldHVybiBudWxsO1xufVxuXG4vLyBUcmFjayB0aGUgY3VycmVudCBJTUUgY29tcG9zaXRpb24g
ZmFsbGJhY2sgb2JqZWN0LCBpZiBhbnkuXG52YXIgY3VycmVudENvbXBvc2l0aW9uID0gbnVsbDtc
blxuLyoqXG4gKiBAcmV0dXJuIHs/b2JqZWN0fSBBIFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQu
XG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RDb21wb3NpdGlvbkV2ZW50KHRvcExldmVsVHlwZSwgdGFy
Z2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHZhciBldmVudFR5
cGU7XG4gIHZhciBmYWxsYmFja0RhdGE7XG5cbiAgaWYgKGNhblVzZUNvbXBvc2l0aW9uRXZlbnQp
IHtcbiAgICBldmVudFR5cGUgPSBnZXRDb21wb3NpdGlvbkV2ZW50VHlwZSh0b3BMZXZlbFR5cGUp
O1xuICB9IGVsc2UgaWYgKCFjdXJyZW50Q29tcG9zaXRpb24pIHtcbiAgICBpZiAoaXNGYWxsYmFj
a0NvbXBvc2l0aW9uU3RhcnQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkpIHtcbiAgICAgIGV2
ZW50VHlwZSA9IGV2ZW50VHlwZXMuY29tcG9zaXRpb25TdGFydDtcbiAgICB9XG4gIH0gZWxzZSBp
ZiAoaXNGYWxsYmFja0NvbXBvc2l0aW9uRW5kKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpKSB7
XG4gICAgZXZlbnRUeXBlID0gZXZlbnRUeXBlcy5jb21wb3NpdGlvbkVuZDtcbiAgfVxuXG4gIGlm
ICghZXZlbnRUeXBlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAodXNlRmFsbGJh
Y2tDb21wb3NpdGlvbkRhdGEpIHtcbiAgICAvLyBUaGUgY3VycmVudCBjb21wb3NpdGlvbiBpcyBz
dG9yZWQgc3RhdGljYWxseSBhbmQgbXVzdCBub3QgYmVcbiAgICAvLyBvdmVyd3JpdHRlbiB3aGls
ZSBjb21wb3NpdGlvbiBjb250aW51ZXMuXG4gICAgaWYgKCFjdXJyZW50Q29tcG9zaXRpb24gJiYg
ZXZlbnRUeXBlID09PSBldmVudFR5cGVzLmNvbXBvc2l0aW9uU3RhcnQpIHtcbiAgICAgIGN1cnJl
bnRDb21wb3NpdGlvbiA9IEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZS5nZXRQb29sZWQobmF0aXZl
RXZlbnRUYXJnZXQpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSBldmVudFR5cGVzLmNv
bXBvc2l0aW9uRW5kKSB7XG4gICAgICBpZiAoY3VycmVudENvbXBvc2l0aW9uKSB7XG4gICAgICAg
IGZhbGxiYWNrRGF0YSA9IGN1cnJlbnRDb21wb3NpdGlvbi5nZXREYXRhKCk7XG4gICAgICB9XG4g
ICAgfVxuICB9XG5cbiAgdmFyIGV2ZW50ID0gU3ludGhldGljQ29tcG9zaXRpb25FdmVudC5nZXRQ
b29sZWQoZXZlbnRUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJn
ZXQpO1xuXG4gIGlmIChmYWxsYmFja0RhdGEpIHtcbiAgICAvLyBJbmplY3QgZGF0YSBnZW5lcmF0
ZWQgZnJvbSBmYWxsYmFjayBwYXRoIGludG8gdGhlIHN5bnRoZXRpYyBldmVudC5cbiAgICAvLyBU
aGlzIG1hdGNoZXMgdGhlIHByb3BlcnR5IG9mIG5hdGl2ZSBDb21wb3NpdGlvbkV2ZW50SW50ZXJm
YWNlLlxuICAgIGV2ZW50LmRhdGEgPSBmYWxsYmFja0RhdGE7XG4gIH0gZWxzZSB7XG4gICAgdmFy
IGN1c3RvbURhdGEgPSBnZXREYXRhRnJvbUN1c3RvbUV2ZW50KG5hdGl2ZUV2ZW50KTtcbiAgICBp
ZiAoY3VzdG9tRGF0YSAhPT0gbnVsbCkge1xuICAgICAgZXZlbnQuZGF0YSA9IGN1c3RvbURhdGE7
XG4gICAgfVxuICB9XG5cbiAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNw
YXRjaGVzKGV2ZW50KTtcbiAgcmV0dXJuIGV2ZW50O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3Ry
aW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cbiAqIEBwYXJh
bSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEByZXR1cm4g
ez9zdHJpbmd9IFRoZSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byB0aGlzIGBiZWZvcmVJbnB1dGAg
ZXZlbnQuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZUJlZm9yZUlucHV0Q2hhcnModG9wTGV2ZWxU
eXBlLCBuYXRpdmVFdmVudCkge1xuICBzd2l0Y2ggKHRvcExldmVsVHlwZSkge1xuICAgIGNhc2Ug
J3RvcENvbXBvc2l0aW9uRW5kJzpcbiAgICAgIHJldHVybiBnZXREYXRhRnJvbUN1c3RvbUV2ZW50
KG5hdGl2ZUV2ZW50KTtcbiAgICBjYXNlICd0b3BLZXlQcmVzcyc6XG4gICAgICAvKipcbiAgICAg
ICAqIElmIG5hdGl2ZSBgdGV4dElucHV0YCBldmVudHMgYXJlIGF2YWlsYWJsZSwgb3VyIGdvYWwg
aXMgdG8gbWFrZVxuICAgICAgICogdXNlIG9mIHRoZW0uIEhvd2V2ZXIsIHRoZXJlIGlzIGEgc3Bl
Y2lhbCBjYXNlOiB0aGUgc3BhY2ViYXIga2V5LlxuICAgICAgICogSW4gV2Via2l0LCBwcmV2ZW50
aW5nIGRlZmF1bHQgb24gYSBzcGFjZWJhciBgdGV4dElucHV0YCBldmVudFxuICAgICAgICogY2Fu
Y2VscyBjaGFyYWN0ZXIgaW5zZXJ0aW9uLCBidXQgaXQgKmFsc28qIGNhdXNlcyB0aGUgYnJvd3Nl
clxuICAgICAgICogdG8gZmFsbCBiYWNrIHRvIGl0cyBkZWZhdWx0IHNwYWNlYmFyIGJlaGF2aW9y
IG9mIHNjcm9sbGluZyB0aGVcbiAgICAgICAqIHBhZ2UuXG4gICAgICAgKlxuICAgICAgICogVHJh
Y2tpbmcgYXQ6XG4gICAgICAgKiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lz
c3Vlcy9kZXRhaWw/aWQ9MzU1MTAzXG4gICAgICAgKlxuICAgICAgICogVG8gYXZvaWQgdGhpcyBp
c3N1ZSwgdXNlIHRoZSBrZXlwcmVzcyBldmVudCBhcyBpZiBubyBgdGV4dElucHV0YFxuICAgICAg
ICogZXZlbnQgaXMgYXZhaWxhYmxlLlxuICAgICAgICovXG4gICAgICB2YXIgd2hpY2ggPSBuYXRp
dmVFdmVudC53aGljaDtcbiAgICAgIGlmICh3aGljaCAhPT0gU1BBQ0VCQVJfQ09ERSkge1xuICAg
ICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaGFzU3BhY2VLZXlwcmVzcyA9IHRy
dWU7XG4gICAgICByZXR1cm4gU1BBQ0VCQVJfQ0hBUjtcblxuICAgIGNhc2UgJ3RvcFRleHRJbnB1
dCc6XG4gICAgICAvLyBSZWNvcmQgdGhlIGNoYXJhY3RlcnMgdG8gYmUgYWRkZWQgdG8gdGhlIERP
TS5cbiAgICAgIHZhciBjaGFycyA9IG5hdGl2ZUV2ZW50LmRhdGE7XG5cbiAgICAgIC8vIElmIGl0
J3MgYSBzcGFjZWJhciBjaGFyYWN0ZXIsIGFzc3VtZSB0aGF0IHdlIGhhdmUgYWxyZWFkeSBoYW5k
bGVkXG4gICAgICAvLyBpdCBhdCB0aGUga2V5cHJlc3MgbGV2ZWwgYW5kIGJhaWwgaW1tZWRpYXRl
bHkuIEFuZHJvaWQgQ2hyb21lXG4gICAgICAvLyBkb2Vzbid0IGdpdmUgdXMga2V5Y29kZXMsIHNv
IHdlIG5lZWQgdG8gYmxhY2tsaXN0IGl0LlxuICAgICAgaWYgKGNoYXJzID09PSBTUEFDRUJBUl9D
SEFSICYmIGhhc1NwYWNlS2V5cHJlc3MpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9
XG5cbiAgICAgIHJldHVybiBjaGFycztcblxuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBGb3Igb3Ro
ZXIgbmF0aXZlIGV2ZW50IHR5cGVzLCBkbyBub3RoaW5nLlxuICAgICAgcmV0dXJuIG51bGw7XG4g
IH1cbn1cblxuLyoqXG4gKiBGb3IgYnJvd3NlcnMgdGhhdCBkbyBub3QgcHJvdmlkZSB0aGUgYHRl
eHRJbnB1dGAgZXZlbnQsIGV4dHJhY3QgdGhlXG4gKiBhcHByb3ByaWF0ZSBzdHJpbmcgdG8gdXNl
IGZvciBTeW50aGV0aWNJbnB1dEV2ZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZl
bFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBu
YXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEByZXR1cm4gez9zdHJpbmd9IFRo
ZSBmYWxsYmFjayBzdHJpbmcgZm9yIHRoaXMgYGJlZm9yZUlucHV0YCBldmVudC5cbiAqL1xuZnVu
Y3Rpb24gZ2V0RmFsbGJhY2tCZWZvcmVJbnB1dENoYXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZl
bnQpIHtcbiAgLy8gSWYgd2UgYXJlIGN1cnJlbnRseSBjb21wb3NpbmcgKElNRSkgYW5kIHVzaW5n
IGEgZmFsbGJhY2sgdG8gZG8gc28sXG4gIC8vIHRyeSB0byBleHRyYWN0IHRoZSBjb21wb3NlZCBj
aGFyYWN0ZXJzIGZyb20gdGhlIGZhbGxiYWNrIG9iamVjdC5cbiAgLy8gSWYgY29tcG9zaXRpb24g
ZXZlbnQgaXMgYXZhaWxhYmxlLCB3ZSBleHRyYWN0IGEgc3RyaW5nIG9ubHkgYXRcbiAgLy8gY29t
cG9zaXRpb25ldmVudCwgb3RoZXJ3aXNlIGV4dHJhY3QgaXQgYXQgZmFsbGJhY2sgZXZlbnRzLlxu
ICBpZiAoY3VycmVudENvbXBvc2l0aW9uKSB7XG4gICAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3Rv
cENvbXBvc2l0aW9uRW5kJyB8fCAhY2FuVXNlQ29tcG9zaXRpb25FdmVudCAmJiBpc0ZhbGxiYWNr
Q29tcG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkpIHtcbiAgICAgIHZhciBj
aGFycyA9IGN1cnJlbnRDb21wb3NpdGlvbi5nZXREYXRhKCk7XG4gICAgICBGYWxsYmFja0NvbXBv
c2l0aW9uU3RhdGUucmVsZWFzZShjdXJyZW50Q29tcG9zaXRpb24pO1xuICAgICAgY3VycmVudENv
bXBvc2l0aW9uID0gbnVsbDtcbiAgICAgIHJldHVybiBjaGFycztcbiAgICB9XG4gICAgcmV0dXJu
IG51bGw7XG4gIH1cblxuICBzd2l0Y2ggKHRvcExldmVsVHlwZSkge1xuICAgIGNhc2UgJ3RvcFBh
c3RlJzpcbiAgICAgIC8vIElmIGEgcGFzdGUgZXZlbnQgb2NjdXJzIGFmdGVyIGEga2V5cHJlc3Ms
IHRocm93IG91dCB0aGUgaW5wdXRcbiAgICAgIC8vIGNoYXJzLiBQYXN0ZSBldmVudHMgc2hvdWxk
IG5vdCBsZWFkIHRvIEJlZm9yZUlucHV0IGV2ZW50cy5cbiAgICAgIHJldHVybiBudWxsO1xuICAg
IGNhc2UgJ3RvcEtleVByZXNzJzpcbiAgICAgIC8qKlxuICAgICAgICogQXMgb2YgdjI3LCBGaXJl
Zm94IG1heSBmaXJlIGtleXByZXNzIGV2ZW50cyBldmVuIHdoZW4gbm8gY2hhcmFjdGVyXG4gICAg
ICAgKiB3aWxsIGJlIGluc2VydGVkLiBBIGZldyBwb3NzaWJpbGl0aWVzOlxuICAgICAgICpcbiAg
ICAgICAqIC0gYHdoaWNoYCBpcyBgMGAuIEFycm93IGtleXMsIEVzYyBrZXksIGV0Yy5cbiAgICAg
ICAqXG4gICAgICAgKiAtIGB3aGljaGAgaXMgdGhlIHByZXNzZWQga2V5IGNvZGUsIGJ1dCBubyBj
aGFyIGlzIGF2YWlsYWJsZS5cbiAgICAgICAqICAgRXg6ICdBbHRHciArIGRgIGluIFBvbGlzaC4g
VGhlcmUgaXMgbm8gbW9kaWZpZWQgY2hhcmFjdGVyIGZvclxuICAgICAgICogICB0aGlzIGtleSBj
b21iaW5hdGlvbiBhbmQgbm8gY2hhcmFjdGVyIGlzIGluc2VydGVkIGludG8gdGhlXG4gICAgICAg
KiAgIGRvY3VtZW50LCBidXQgRkYgZmlyZXMgdGhlIGtleXByZXNzIGZvciBjaGFyIGNvZGUgYDEw
MGAgYW55d2F5LlxuICAgICAgICogICBObyBgaW5wdXRgIGV2ZW50IHdpbGwgb2NjdXIuXG4gICAg
ICAgKlxuICAgICAgICogLSBgd2hpY2hgIGlzIHRoZSBwcmVzc2VkIGtleSBjb2RlLCBidXQgYSBj
b21tYW5kIGNvbWJpbmF0aW9uIGlzXG4gICAgICAgKiAgIGJlaW5nIHVzZWQuIEV4OiBgQ21kK0Ng
LiBObyBjaGFyYWN0ZXIgaXMgaW5zZXJ0ZWQsIGFuZCBub1xuICAgICAgICogICBgaW5wdXRgIGV2
ZW50IHdpbGwgb2NjdXIuXG4gICAgICAgKi9cbiAgICAgIGlmIChuYXRpdmVFdmVudC53aGljaCAm
JiAhaXNLZXlwcmVzc0NvbW1hbmQobmF0aXZlRXZlbnQpKSB7XG4gICAgICAgIHJldHVybiBTdHJp
bmcuZnJvbUNoYXJDb2RlKG5hdGl2ZUV2ZW50LndoaWNoKTtcbiAgICAgIH1cbiAgICAgIHJldHVy
biBudWxsO1xuICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uRW5kJzpcbiAgICAgIHJldHVybiB1c2VG
YWxsYmFja0NvbXBvc2l0aW9uRGF0YSA/IG51bGwgOiBuYXRpdmVFdmVudC5kYXRhO1xuICAgIGRl
ZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIEV4dHJhY3QgYSBT
eW50aGV0aWNJbnB1dEV2ZW50IGZvciBgYmVmb3JlSW5wdXRgLCBiYXNlZCBvbiBlaXRoZXIgbmF0
aXZlXG4gKiBgdGV4dElucHV0YCBvciBmYWxsYmFjayBiZWhhdmlvci5cbiAqXG4gKiBAcmV0dXJu
IHs/b2JqZWN0fSBBIFN5bnRoZXRpY0lucHV0RXZlbnQuXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RC
ZWZvcmVJbnB1dEV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHZhciBjaGFycztcblxuICBpZiAoY2FuVXNlVGV4dElucHV0
RXZlbnQpIHtcbiAgICBjaGFycyA9IGdldE5hdGl2ZUJlZm9yZUlucHV0Q2hhcnModG9wTGV2ZWxU
eXBlLCBuYXRpdmVFdmVudCk7XG4gIH0gZWxzZSB7XG4gICAgY2hhcnMgPSBnZXRGYWxsYmFja0Jl
Zm9yZUlucHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCk7XG4gIH1cblxuICAvLyBJ
ZiBubyBjaGFyYWN0ZXJzIGFyZSBiZWluZyBpbnNlcnRlZCwgbm8gQmVmb3JlSW5wdXQgZXZlbnQg
c2hvdWxkXG4gIC8vIGJlIGZpcmVkLlxuICBpZiAoIWNoYXJzKSB7XG4gICAgcmV0dXJuIG51bGw7
XG4gIH1cblxuICB2YXIgZXZlbnQgPSBTeW50aGV0aWNJbnB1dEV2ZW50LmdldFBvb2xlZChldmVu
dFR5cGVzLmJlZm9yZUlucHV0LCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpO1xuXG4gIGV2ZW50LmRhdGEgPSBjaGFycztcbiAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1
bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcbiAgcmV0dXJuIGV2ZW50O1xufVxuXG4v
KipcbiAqIENyZWF0ZSBhbiBgb25CZWZvcmVJbnB1dGAgZXZlbnQgdG8gbWF0Y2hcbiAqIGh0dHA6
Ly93d3cudzMub3JnL1RSLzIwMTMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMTMxMTA1LyNldmVu
dHMtaW5wdXRldmVudHMuXG4gKlxuICogVGhpcyBldmVudCBwbHVnaW4gaXMgYmFzZWQgb24gdGhl
IG5hdGl2ZSBgdGV4dElucHV0YCBldmVudFxuICogYXZhaWxhYmxlIGluIENocm9tZSwgU2FmYXJp
LCBPcGVyYSwgYW5kIElFLiBUaGlzIGV2ZW50IGZpcmVzIGFmdGVyXG4gKiBgb25LZXlQcmVzc2Ag
YW5kIGBvbkNvbXBvc2l0aW9uRW5kYCwgYnV0IGJlZm9yZSBgb25JbnB1dGAuXG4gKlxuICogYGJl
Zm9yZUlucHV0YCBpcyBzcGVjJ2QgYnV0IG5vdCBpbXBsZW1lbnRlZCBpbiBhbnkgYnJvd3NlcnMs
IGFuZFxuICogdGhlIGBpbnB1dGAgZXZlbnQgZG9lcyBub3QgcHJvdmlkZSBhbnkgdXNlZnVsIGlu
Zm9ybWF0aW9uIGFib3V0IHdoYXQgaGFzXG4gKiBhY3R1YWxseSBiZWVuIGFkZGVkLCBjb250cmFy
eSB0byB0aGUgc3BlYy4gVGh1cywgYHRleHRJbnB1dGAgaXMgdGhlIGJlc3RcbiAqIGF2YWlsYWJs
ZSBldmVudCB0byBpZGVudGlmeSB0aGUgY2hhcmFjdGVycyB0aGF0IGhhdmUgYWN0dWFsbHkgYmVl
biBpbnNlcnRlZFxuICogaW50byB0aGUgdGFyZ2V0IG5vZGUuXG4gKlxuICogVGhpcyBwbHVnaW4g
aXMgYWxzbyByZXNwb25zaWJsZSBmb3IgZW1pdHRpbmcgYGNvbXBvc2l0aW9uYCBldmVudHMsIHRo
dXNcbiAqIGFsbG93aW5nIHVzIHRvIHNoYXJlIGNvbXBvc2l0aW9uIGZhbGxiYWNrIGNvZGUgZm9y
IGJvdGggYGJlZm9yZUlucHV0YCBhbmRcbiAqIGBjb21wb3NpdGlvbmAgZXZlbnQgdHlwZXMuXG4g
Ki9cbnZhciBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luID0ge1xuICBldmVudFR5cGVzOiBldmVudFR5
cGVzLFxuXG4gIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldElu
c3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICAgIHJldHVybiBbZXh0cmFj
dENvbXBvc2l0aW9uRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpLCBleHRyYWN0QmVmb3JlSW5wdXRFdmVudCh0b3BMZXZlbFR5cGUs
IHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCldO1xuICB9XG59O1xu
XG5tb2R1bGUuZXhwb3J0cyA9IEJlZm9yZUlucHV0RXZlbnRQbHVnaW47XG5cbi8qKiovIH0pLFxu
LyogMTIzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICovXG5cblxuXG52YXIgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cbnZhciBQ
b29sZWRDbGFzcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xuXG52YXIgZ2V0VGV4dENvbnRl
bnRBY2Nlc3NvciA9IF9fd2VicGFja19yZXF1aXJlX18oNjEpO1xuXG4vKipcbiAqIFRoaXMgaGVs
cGVyIGNsYXNzIHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCB0ZXh0IGNvbnRlbnQgb2YgYSB0YXJn
ZXQgbm9kZSxcbiAqIGFsbG93aW5nIGNvbXBhcmlzb24gb2YgY29udGVudCBiZWZvcmUgYW5kIGFm
dGVyIGEgZ2l2ZW4gZXZlbnQuXG4gKlxuICogSWRlbnRpZnkgdGhlIG5vZGUgd2hlcmUgc2VsZWN0
aW9uIGN1cnJlbnRseSBiZWdpbnMsIHRoZW4gb2JzZXJ2ZVxuICogYm90aCBpdHMgdGV4dCBjb250
ZW50IGFuZCBpdHMgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgRE9NLiBTaW5jZSB0aGVcbiAqIGJy
b3dzZXIgbWF5IG5hdGl2ZWx5IHJlcGxhY2UgdGhlIHRhcmdldCBub2RlIGR1cmluZyBjb21wb3Np
dGlvbiwgd2UgY2FuXG4gKiB1c2UgaXRzIHBvc2l0aW9uIHRvIGZpbmQgaXRzIHJlcGxhY2VtZW50
LlxuICpcbiAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHJvb3RcbiAqL1xuZnVuY3Rpb24gRmFs
bGJhY2tDb21wb3NpdGlvblN0YXRlKHJvb3QpIHtcbiAgdGhpcy5fcm9vdCA9IHJvb3Q7XG4gIHRo
aXMuX3N0YXJ0VGV4dCA9IHRoaXMuZ2V0VGV4dCgpO1xuICB0aGlzLl9mYWxsYmFja1RleHQgPSBu
dWxsO1xufVxuXG5fYXNzaWduKEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZS5wcm90b3R5cGUsIHtc
biAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuX3Jvb3QgPSBudWxsO1xuICAg
IHRoaXMuX3N0YXJ0VGV4dCA9IG51bGw7XG4gICAgdGhpcy5fZmFsbGJhY2tUZXh0ID0gbnVsbDtc
biAgfSxcblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgdGV4dCBvZiBpbnB1dC5cbiAgICpcbiAg
ICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0VGV4dDogZnVuY3Rpb24gKCkge1xuICAg
IGlmICgndmFsdWUnIGluIHRoaXMuX3Jvb3QpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yb290LnZh
bHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcm9vdFtnZXRUZXh0Q29udGVudEFjY2Vzc29y
KCldO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIGRpZmZlcmluZyBzdWJzdHJp
bmcgYmV0d2VlbiB0aGUgaW5pdGlhbGx5IHN0b3JlZFxuICAgKiB0ZXh0IGNvbnRlbnQgYW5kIHRo
ZSBjdXJyZW50IGNvbnRlbnQuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4g
IGdldERhdGE6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5fZmFsbGJhY2tUZXh0KSB7XG4g
ICAgICByZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0O1xuICAgIH1cblxuICAgIHZhciBzdGFydDtc
biAgICB2YXIgc3RhcnRWYWx1ZSA9IHRoaXMuX3N0YXJ0VGV4dDtcbiAgICB2YXIgc3RhcnRMZW5n
dGggPSBzdGFydFZhbHVlLmxlbmd0aDtcbiAgICB2YXIgZW5kO1xuICAgIHZhciBlbmRWYWx1ZSA9
IHRoaXMuZ2V0VGV4dCgpO1xuICAgIHZhciBlbmRMZW5ndGggPSBlbmRWYWx1ZS5sZW5ndGg7XG5c
biAgICBmb3IgKHN0YXJ0ID0gMDsgc3RhcnQgPCBzdGFydExlbmd0aDsgc3RhcnQrKykge1xuICAg
ICAgaWYgKHN0YXJ0VmFsdWVbc3RhcnRdICE9PSBlbmRWYWx1ZVtzdGFydF0pIHtcbiAgICAgICAg
YnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG1pbkVuZCA9IHN0YXJ0TGVuZ3RoIC0g
c3RhcnQ7XG4gICAgZm9yIChlbmQgPSAxOyBlbmQgPD0gbWluRW5kOyBlbmQrKykge1xuICAgICAg
aWYgKHN0YXJ0VmFsdWVbc3RhcnRMZW5ndGggLSBlbmRdICE9PSBlbmRWYWx1ZVtlbmRMZW5ndGgg
LSBlbmRdKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzbGlj
ZVRhaWwgPSBlbmQgPiAxID8gMSAtIGVuZCA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9mYWxsYmFj
a1RleHQgPSBlbmRWYWx1ZS5zbGljZShzdGFydCwgc2xpY2VUYWlsKTtcbiAgICByZXR1cm4gdGhp
cy5fZmFsbGJhY2tUZXh0O1xuICB9XG59KTtcblxuUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKEZh
bGxiYWNrQ29tcG9zaXRpb25TdGF0ZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gRmFsbGJhY2tDb21w
b3NpdGlvblN0YXRlO1xuXG4vKioqLyB9KSxcbi8qIDEyNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtc
bi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIFN5bnRoZXRpY0V2ZW50
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cbi8qKlxuICogQGludGVyZmFjZSBFdmVudFxu
ICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2V2ZW50cy1j
b21wb3NpdGlvbmV2ZW50c1xuICovXG52YXIgQ29tcG9zaXRpb25FdmVudEludGVyZmFjZSA9IHtc
biAgZGF0YTogbnVsbFxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25m
aWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0g
e3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJn
ZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQu
XG4gKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGlj
Q29tcG9zaXRpb25FdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2
ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0
aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVF
dmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWND
b21wb3NpdGlvbkV2ZW50LCBDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4
cG9ydHMgPSBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50O1xuXG4vKioqLyB9KSxcbi8qIDEyNSAq
L1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5c
blxudmFyIFN5bnRoZXRpY0V2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cbi8qKlxu
ICogQGludGVyZmFjZSBFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDEzL1dE
LURPTS1MZXZlbC0zLUV2ZW50cy0yMDEzMTEwNVxuICogICAgICAvI2V2ZW50cy1pbnB1dGV2ZW50
c1xuICovXG52YXIgSW5wdXRFdmVudEludGVyZmFjZSA9IHtcbiAgZGF0YTogbnVsbFxufTtcblxu
LyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2Vk
IHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJr
ZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVj
dH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhl
dGljVUlFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljSW5wdXRFdmVudChkaXNwYXRjaENv
bmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xu
ICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0
Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRp
Y0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNJbnB1dEV2ZW50LCBJbnB1dEV2ZW50SW50ZXJm
YWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNJbnB1dEV2ZW50O1xuXG4vKioqLyB9
KSxcbi8qIDEyNiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqL1xuXG5cblxudmFyIEV2ZW50UGx1Z2luSHViID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
MCk7XG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpO1xudmFy
IEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbnZhciBSZWFj
dERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xudmFyIFJlYWN0VXBk
YXRlcyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG52YXIgU3ludGhldGljRXZlbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDExKTtcblxudmFyIGlucHV0VmFsdWVUcmFja2luZyA9IF9fd2VicGFj
a19yZXF1aXJlX18oNjQpO1xudmFyIGdldEV2ZW50VGFyZ2V0ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygzNCk7XG52YXIgaXNFdmVudFN1cHBvcnRlZCA9IF9fd2VicGFja19yZXF1aXJlX18oMzUpO1xu
dmFyIGlzVGV4dElucHV0RWxlbWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNjUpO1xuXG52YXIg
ZXZlbnRUeXBlcyA9IHtcbiAgY2hhbmdlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6
IHtcbiAgICAgIGJ1YmJsZWQ6ICdvbkNoYW5nZScsXG4gICAgICBjYXB0dXJlZDogJ29uQ2hhbmdl
Q2FwdHVyZSdcbiAgICB9LFxuICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENoYW5n
ZScsICd0b3BDbGljaycsICd0b3BGb2N1cycsICd0b3BJbnB1dCcsICd0b3BLZXlEb3duJywgJ3Rv
cEtleVVwJywgJ3RvcFNlbGVjdGlvbkNoYW5nZSddXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNyZWF0
ZUFuZEFjY3VtdWxhdGVDaGFuZ2VFdmVudChpbnN0LCBuYXRpdmVFdmVudCwgdGFyZ2V0KSB7XG4g
IHZhciBldmVudCA9IFN5bnRoZXRpY0V2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmNoYW5nZSwg
aW5zdCwgbmF0aXZlRXZlbnQsIHRhcmdldCk7XG4gIGV2ZW50LnR5cGUgPSAnY2hhbmdlJztcbiAg
RXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcbiAg
cmV0dXJuIGV2ZW50O1xufVxuLyoqXG4gKiBGb3IgSUUgc2hpbXNcbiAqL1xudmFyIGFjdGl2ZUVs
ZW1lbnQgPSBudWxsO1xudmFyIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDtcblxuLyoqXG4gKiBT
RUNUSU9OOiBoYW5kbGUgYGNoYW5nZWAgZXZlbnRcbiAqL1xuZnVuY3Rpb24gc2hvdWxkVXNlQ2hh
bmdlRXZlbnQoZWxlbSkge1xuICB2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lICYmIGVsZW0u
bm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIG5vZGVOYW1lID09PSAnc2VsZWN0JyB8
fCBub2RlTmFtZSA9PT0gJ2lucHV0JyAmJiBlbGVtLnR5cGUgPT09ICdmaWxlJztcbn1cblxudmFy
IGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSA9IGZhbHNlO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50
LmNhblVzZURPTSkge1xuICAvLyBTZWUgYGhhbmRsZUNoYW5nZWAgY29tbWVudCBiZWxvd1xuICBk
b2VzQ2hhbmdlRXZlbnRCdWJibGUgPSBpc0V2ZW50U3VwcG9ydGVkKCdjaGFuZ2UnKSAmJiAoIWRv
Y3VtZW50LmRvY3VtZW50TW9kZSB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPiA4KTtcbn1cblxu
ZnVuY3Rpb24gbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudChuYXRpdmVFdmVudCkge1xuICB2YXIg
ZXZlbnQgPSBjcmVhdGVBbmRBY2N1bXVsYXRlQ2hhbmdlRXZlbnQoYWN0aXZlRWxlbWVudEluc3Qs
IG5hdGl2ZUV2ZW50LCBnZXRFdmVudFRhcmdldChuYXRpdmVFdmVudCkpO1xuXG4gIC8vIElmIGNo
YW5nZSBhbmQgcHJvcGVydHljaGFuZ2UgYnViYmxlZCwgd2UnZCBqdXN0IGJpbmQgdG8gaXQgbGlr
ZSBhbGwgdGhlXG4gIC8vIG90aGVyIGV2ZW50cyBhbmQgaGF2ZSBpdCBnbyB0aHJvdWdoIFJlYWN0
QnJvd3NlckV2ZW50RW1pdHRlci4gU2luY2UgaXRcbiAgLy8gZG9lc24ndCwgd2UgbWFudWFsbHkg
bGlzdGVuIGZvciB0aGUgZXZlbnRzIGFuZCBzbyB3ZSBoYXZlIHRvIGVucXVldWUgYW5kXG4gIC8v
IHByb2Nlc3MgdGhlIGFic3RyYWN0IGV2ZW50IG1hbnVhbGx5LlxuICAvL1xuICAvLyBCYXRjaGlu
ZyBpcyBuZWNlc3NhcnkgaGVyZSBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBhbGwgZXZlbnQgaGFu
ZGxlcnMgcnVuXG4gIC8vIGJlZm9yZSB0aGUgbmV4dCByZXJlbmRlciAoaW5jbHVkaW5nIGV2ZW50
IGhhbmRsZXJzIGF0dGFjaGVkIHRvIGFuY2VzdG9yXG4gIC8vIGVsZW1lbnRzIGluc3RlYWQgb2Yg
ZGlyZWN0bHkgb24gdGhlIGlucHV0KS4gV2l0aG91dCB0aGlzLCBjb250cm9sbGVkXG4gIC8vIGNv
bXBvbmVudHMgZG9uJ3Qgd29yayBwcm9wZXJseSBpbiBjb25qdW5jdGlvbiB3aXRoIGV2ZW50IGJ1
YmJsaW5nIGJlY2F1c2VcbiAgLy8gdGhlIGNvbXBvbmVudCBpcyByZXJlbmRlcmVkIGFuZCB0aGUg
dmFsdWUgcmV2ZXJ0ZWQgYmVmb3JlIGFsbCB0aGUgZXZlbnRcbiAgLy8gaGFuZGxlcnMgY2FuIHJ1
bi4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzA4LlxuICBS
ZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMocnVuRXZlbnRJbkJhdGNoLCBldmVudCk7XG59XG5c
bmZ1bmN0aW9uIHJ1bkV2ZW50SW5CYXRjaChldmVudCkge1xuICBFdmVudFBsdWdpbkh1Yi5lbnF1
ZXVlRXZlbnRzKGV2ZW50KTtcbiAgRXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUoZmFs
c2UpO1xufVxuXG5mdW5jdGlvbiBzdGFydFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgodGFyZ2V0
LCB0YXJnZXRJbnN0KSB7XG4gIGFjdGl2ZUVsZW1lbnQgPSB0YXJnZXQ7XG4gIGFjdGl2ZUVsZW1l
bnRJbnN0ID0gdGFyZ2V0SW5zdDtcbiAgYWN0aXZlRWxlbWVudC5hdHRhY2hFdmVudCgnb25jaGFu
Z2UnLCBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KTtcbn1cblxuZnVuY3Rpb24gc3RvcFdhdGNo
aW5nRm9yQ2hhbmdlRXZlbnRJRTgoKSB7XG4gIGlmICghYWN0aXZlRWxlbWVudCkge1xuICAgIHJl
dHVybjtcbiAgfVxuICBhY3RpdmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbmNoYW5nZScsIG1hbnVh
bERpc3BhdGNoQ2hhbmdlRXZlbnQpO1xuICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgYWN0aXZl
RWxlbWVudEluc3QgPSBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXRJbnN0SWZWYWx1ZUNoYW5nZWQo
dGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQpIHtcbiAgdmFyIHVwZGF0ZWQgPSBpbnB1dFZhbHVlVHJh
Y2tpbmcudXBkYXRlVmFsdWVJZkNoYW5nZWQodGFyZ2V0SW5zdCk7XG4gIHZhciBzaW11bGF0ZWQg
PSBuYXRpdmVFdmVudC5zaW11bGF0ZWQgPT09IHRydWUgJiYgQ2hhbmdlRXZlbnRQbHVnaW4uX2Fs
bG93U2ltdWxhdGVkUGFzc1Rocm91Z2g7XG5cbiAgaWYgKHVwZGF0ZWQgfHwgc2ltdWxhdGVkKSB7
XG4gICAgcmV0dXJuIHRhcmdldEluc3Q7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0SW5z
dEZvckNoYW5nZUV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCkge1xuICBpZiAodG9wTGV2
ZWxUeXBlID09PSAndG9wQ2hhbmdlJykge1xuICAgIHJldHVybiB0YXJnZXRJbnN0O1xuICB9XG59
XG5cbmZ1bmN0aW9uIGhhbmRsZUV2ZW50c0ZvckNoYW5nZUV2ZW50SUU4KHRvcExldmVsVHlwZSwg
dGFyZ2V0LCB0YXJnZXRJbnN0KSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BGb2N1cycp
IHtcbiAgICAvLyBzdG9wV2F0Y2hpbmcoKSBzaG91bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNh
bGwgaXQganVzdCBpbiBjYXNlIHdlXG4gICAgLy8gbWlzc2VkIGEgYmx1ciBldmVudCBzb21laG93
LlxuICAgIHN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KCk7XG4gICAgc3RhcnRXYXRjaGlu
Z0ZvckNoYW5nZUV2ZW50SUU4KHRhcmdldCwgdGFyZ2V0SW5zdCk7XG4gIH0gZWxzZSBpZiAodG9w
TGV2ZWxUeXBlID09PSAndG9wQmx1cicpIHtcbiAgICBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVu
dElFOCgpO1xuICB9XG59XG5cbi8qKlxuICogU0VDVElPTjogaGFuZGxlIGBpbnB1dGAgZXZlbnRc
biAqL1xudmFyIGlzSW5wdXRFdmVudFN1cHBvcnRlZCA9IGZhbHNlO1xuaWYgKEV4ZWN1dGlvbkVu
dmlyb25tZW50LmNhblVzZURPTSkge1xuICAvLyBJRTkgY2xhaW1zIHRvIHN1cHBvcnQgdGhlIGlu
cHV0IGV2ZW50IGJ1dCBmYWlscyB0byB0cmlnZ2VyIGl0IHdoZW5cbiAgLy8gZGVsZXRpbmcgdGV4
dCwgc28gd2UgaWdub3JlIGl0cyBpbnB1dCBldmVudHMuXG5cbiAgaXNJbnB1dEV2ZW50U3VwcG9y
dGVkID0gaXNFdmVudFN1cHBvcnRlZCgnaW5wdXQnKSAmJiAoISgnZG9jdW1lbnRNb2RlJyBpbiBk
b2N1bWVudCkgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID4gOSk7XG59XG5cbi8qKlxuICogKEZv
ciBJRSA8PTkpIFN0YXJ0cyB0cmFja2luZyBwcm9wZXJ0eWNoYW5nZSBldmVudHMgb24gdGhlIHBh
c3NlZC1pbiBlbGVtZW50XG4gKiBhbmQgb3ZlcnJpZGUgdGhlIHZhbHVlIHByb3BlcnR5IHNvIHRo
YXQgd2UgY2FuIGRpc3Rpbmd1aXNoIHVzZXIgZXZlbnRzIGZyb21cbiAqIHZhbHVlIGNoYW5nZXMg
aW4gSlMuXG4gKi9cbmZ1bmN0aW9uIHN0YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSh0YXJnZXQs
IHRhcmdldEluc3QpIHtcbiAgYWN0aXZlRWxlbWVudCA9IHRhcmdldDtcbiAgYWN0aXZlRWxlbWVu
dEluc3QgPSB0YXJnZXRJbnN0O1xuICBhY3RpdmVFbGVtZW50LmF0dGFjaEV2ZW50KCdvbnByb3Bl
cnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVydHlDaGFuZ2UpO1xufVxuXG4vKipcbiAqIChGb3IgSUUg
PD05KSBSZW1vdmVzIHRoZSBldmVudCBsaXN0ZW5lcnMgZnJvbSB0aGUgY3VycmVudGx5LXRyYWNr
ZWQgZWxlbWVudCxcbiAqIGlmIGFueSBleGlzdHMuXG4gKi9cbmZ1bmN0aW9uIHN0b3BXYXRjaGlu
Z0ZvclZhbHVlQ2hhbmdlKCkge1xuICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHtcbiAgICByZXR1cm47
XG4gIH1cbiAgYWN0aXZlRWxlbWVudC5kZXRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGhh
bmRsZVByb3BlcnR5Q2hhbmdlKTtcblxuICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgYWN0aXZl
RWxlbWVudEluc3QgPSBudWxsO1xufVxuXG4vKipcbiAqIChGb3IgSUUgPD05KSBIYW5kbGVzIGEg
cHJvcGVydHljaGFuZ2UgZXZlbnQsIHNlbmRpbmcgYSBgY2hhbmdlYCBldmVudCBpZlxuICogdGhl
IHZhbHVlIG9mIHRoZSBhY3RpdmUgZWxlbWVudCBoYXMgY2hhbmdlZC5cbiAqL1xuZnVuY3Rpb24g
aGFuZGxlUHJvcGVydHlDaGFuZ2UobmF0aXZlRXZlbnQpIHtcbiAgaWYgKG5hdGl2ZUV2ZW50LnBy
b3BlcnR5TmFtZSAhPT0gJ3ZhbHVlJykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoZ2V0SW5z
dElmVmFsdWVDaGFuZ2VkKGFjdGl2ZUVsZW1lbnRJbnN0LCBuYXRpdmVFdmVudCkpIHtcbiAgICBt
YW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KG5hdGl2ZUV2ZW50KTtcbiAgfVxufVxuXG5mdW5jdGlv
biBoYW5kbGVFdmVudHNGb3JJbnB1dEV2ZW50UG9seWZpbGwodG9wTGV2ZWxUeXBlLCB0YXJnZXQs
IHRhcmdldEluc3QpIHtcbiAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcEZvY3VzJykge1xuICAg
IC8vIEluIElFOCwgd2UgY2FuIGNhcHR1cmUgYWxtb3N0IGFsbCAudmFsdWUgY2hhbmdlcyBieSBh
ZGRpbmcgYVxuICAgIC8vIHByb3BlcnR5Y2hhbmdlIGhhbmRsZXIgYW5kIGxvb2tpbmcgZm9yIGV2
ZW50cyB3aXRoIHByb3BlcnR5TmFtZVxuICAgIC8vIGVxdWFsIHRvICd2YWx1ZSdcbiAgICAvLyBJ
biBJRTksIHByb3BlcnR5Y2hhbmdlIGZpcmVzIGZvciBtb3N0IGlucHV0IGV2ZW50cyBidXQgaXMg
YnVnZ3kgYW5kXG4gICAgLy8gZG9lc24ndCBmaXJlIHdoZW4gdGV4dCBpcyBkZWxldGVkLCBidXQg
Y29udmVuaWVudGx5LCBzZWxlY3Rpb25jaGFuZ2VcbiAgICAvLyBhcHBlYXJzIHRvIGZpcmUgaW4g
YWxsIG9mIHRoZSByZW1haW5pbmcgY2FzZXMgc28gd2UgY2F0Y2ggdGhvc2UgYW5kXG4gICAgLy8g
Zm9yd2FyZCB0aGUgZXZlbnQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgLy8gSW4gZWl0
aGVyIGNhc2UsIHdlIGRvbid0IHdhbnQgdG8gY2FsbCB0aGUgZXZlbnQgaGFuZGxlciBpZiB0aGUg
dmFsdWVcbiAgICAvLyBpcyBjaGFuZ2VkIGZyb20gSlMgc28gd2UgcmVkZWZpbmUgYSBzZXR0ZXIg
Zm9yIGAudmFsdWVgIHRoYXQgdXBkYXRlc1xuICAgIC8vIG91ciBhY3RpdmVFbGVtZW50VmFsdWUg
dmFyaWFibGUsIGFsbG93aW5nIHVzIHRvIGlnbm9yZSB0aG9zZSBjaGFuZ2VzXG4gICAgLy9cbiAg
ICAvLyBzdG9wV2F0Y2hpbmcoKSBzaG91bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwgaXQg
anVzdCBpbiBjYXNlIHdlXG4gICAgLy8gbWlzc2VkIGEgYmx1ciBldmVudCBzb21laG93LlxuICAg
IHN0b3BXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKCk7XG4gICAgc3RhcnRXYXRjaGluZ0ZvclZhbHVl
Q2hhbmdlKHRhcmdldCwgdGFyZ2V0SW5zdCk7XG4gIH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBlID09
PSAndG9wQmx1cicpIHtcbiAgICBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpO1xuICB9XG59
XG5cbi8vIEZvciBJRTggYW5kIElFOS5cbmZ1bmN0aW9uIGdldFRhcmdldEluc3RGb3JJbnB1dEV2
ZW50UG9seWZpbGwodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCkge1xuICBp
ZiAodG9wTGV2ZWxUeXBlID09PSAndG9wU2VsZWN0aW9uQ2hhbmdlJyB8fCB0b3BMZXZlbFR5cGUg
PT09ICd0b3BLZXlVcCcgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wS2V5RG93bicpIHtcbiAgICAv
LyBPbiB0aGUgc2VsZWN0aW9uY2hhbmdlIGV2ZW50LCB0aGUgdGFyZ2V0IGlzIGp1c3QgZG9jdW1l
bnQgd2hpY2ggaXNuJ3RcbiAgICAvLyBoZWxwZnVsIGZvciB1cyBzbyBqdXN0IGNoZWNrIGFjdGl2
ZUVsZW1lbnQgaW5zdGVhZC5cbiAgICAvL1xuICAgIC8vIDk5JSBvZiB0aGUgdGltZSwga2V5ZG93
biBhbmQga2V5dXAgYXJlbid0IG5lY2Vzc2FyeS4gSUU4IGZhaWxzIHRvIGZpcmVcbiAgICAvLyBw
cm9wZXJ0eWNoYW5nZSBvbiB0aGUgZmlyc3QgaW5wdXQgZXZlbnQgYWZ0ZXIgc2V0dGluZyBgdmFs
dWVgIGZyb20gYVxuICAgIC8vIHNjcmlwdCBhbmQgZmlyZXMgb25seSBrZXlkb3duLCBrZXlwcmVz
cywga2V5dXAuIENhdGNoaW5nIGtleXVwIHVzdWFsbHlcbiAgICAvLyBnZXRzIGl0IGFuZCBjYXRj
aGluZyBrZXlkb3duIGxldHMgdXMgZmlyZSBhbiBldmVudCBmb3IgdGhlIGZpcnN0XG4gICAgLy8g
a2V5c3Ryb2tlIGlmIHVzZXIgZG9lcyBhIGtleSByZXBlYXQgKGl0J2xsIGJlIGEgbGl0dGxlIGRl
bGF5ZWQ6IHJpZ2h0XG4gICAgLy8gYmVmb3JlIHRoZSBzZWNvbmQga2V5c3Ryb2tlKS4gT3RoZXIg
aW5wdXQgbWV0aG9kcyAoZS5nLiwgcGFzdGUpIHNlZW0gdG9cbiAgICAvLyBmaXJlIHNlbGVjdGlv
bmNoYW5nZSBub3JtYWxseS5cbiAgICByZXR1cm4gZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKGFjdGl2
ZUVsZW1lbnRJbnN0LCBuYXRpdmVFdmVudCk7XG4gIH1cbn1cblxuLyoqXG4gKiBTRUNUSU9OOiBo
YW5kbGUgYGNsaWNrYCBldmVudFxuICovXG5mdW5jdGlvbiBzaG91bGRVc2VDbGlja0V2ZW50KGVs
ZW0pIHtcbiAgLy8gVXNlIHRoZSBgY2xpY2tgIGV2ZW50IHRvIGRldGVjdCBjaGFuZ2VzIHRvIGNo
ZWNrYm94IGFuZCByYWRpbyBpbnB1dHMuXG4gIC8vIFRoaXMgYXBwcm9hY2ggd29ya3MgYWNyb3Nz
IGFsbCBicm93c2Vycywgd2hlcmVhcyBgY2hhbmdlYCBkb2VzIG5vdCBmaXJlXG4gIC8vIHVudGls
IGBibHVyYCBpbiBJRTguXG4gIHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWU7XG4gIHJldHVy
biBub2RlTmFtZSAmJiBub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmIChlbGVt
LnR5cGUgPT09ICdjaGVja2JveCcgfHwgZWxlbS50eXBlID09PSAncmFkaW8nKTtcbn1cblxuZnVu
Y3Rpb24gZ2V0VGFyZ2V0SW5zdEZvckNsaWNrRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0
LCBuYXRpdmVFdmVudCkge1xuICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ2xpY2snKSB7XG4g
ICAgcmV0dXJuIGdldEluc3RJZlZhbHVlQ2hhbmdlZCh0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCk7
XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZvcklucHV0T3JDaGFuZ2VFdmVudCh0
b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KSB7XG4gIGlmICh0b3BMZXZlbFR5
cGUgPT09ICd0b3BJbnB1dCcgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wQ2hhbmdlJykge1xuICAg
IHJldHVybiBnZXRJbnN0SWZWYWx1ZUNoYW5nZWQodGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQpO1xu
ICB9XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUNvbnRyb2xsZWRJbnB1dEJsdXIoaW5zdCwgbm9kZSkg
e1xuICAvLyBUT0RPOiBJbiBJRSwgaW5zdCBpcyBvY2Nhc2lvbmFsbHkgbnVsbC4gV2h5P1xuICBp
ZiAoaW5zdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRmliZXIgYW5kIFJl
YWN0RE9NIGtlZXAgd3JhcHBlciBzdGF0ZSBpbiBzZXBhcmF0ZSBwbGFjZXNcbiAgdmFyIHN0YXRl
ID0gaW5zdC5fd3JhcHBlclN0YXRlIHx8IG5vZGUuX3dyYXBwZXJTdGF0ZTtcblxuICBpZiAoIXN0
YXRlIHx8ICFzdGF0ZS5jb250cm9sbGVkIHx8IG5vZGUudHlwZSAhPT0gJ251bWJlcicpIHtcbiAg
ICByZXR1cm47XG4gIH1cblxuICAvLyBJZiBjb250cm9sbGVkLCBhc3NpZ24gdGhlIHZhbHVlIGF0
dHJpYnV0ZSB0byB0aGUgY3VycmVudCB2YWx1ZSBvbiBibHVyXG4gIHZhciB2YWx1ZSA9ICcnICsg
bm9kZS52YWx1ZTtcbiAgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKCd2YWx1ZScpICE9PSB2YWx1ZSkg
e1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsIHZhbHVlKTtcbiAgfVxufVxuXG4vKipc
biAqIFRoaXMgcGx1Z2luIGNyZWF0ZXMgYW4gYG9uQ2hhbmdlYCBldmVudCB0aGF0IG5vcm1hbGl6
ZXMgY2hhbmdlIGV2ZW50c1xuICogYWNyb3NzIGZvcm0gZWxlbWVudHMuIFRoaXMgZXZlbnQgZmly
ZXMgYXQgYSB0aW1lIHdoZW4gaXQncyBwb3NzaWJsZSB0b1xuICogY2hhbmdlIHRoZSBlbGVtZW50
J3MgdmFsdWUgd2l0aG91dCBzZWVpbmcgYSBmbGlja2VyLlxuICpcbiAqIFN1cHBvcnRlZCBlbGVt
ZW50cyBhcmU6XG4gKiAtIGlucHV0IChzZWUgYGlzVGV4dElucHV0RWxlbWVudGApXG4gKiAtIHRl
eHRhcmVhXG4gKiAtIHNlbGVjdFxuICovXG52YXIgQ2hhbmdlRXZlbnRQbHVnaW4gPSB7XG4gIGV2
ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cbiAgX2FsbG93U2ltdWxhdGVkUGFzc1Rocm91Z2g6IHRy
dWUsXG4gIF9pc0lucHV0RXZlbnRTdXBwb3J0ZWQ6IGlzSW5wdXRFdmVudFN1cHBvcnRlZCxcblxu
ICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICB2YXIgdGFyZ2V0Tm9kZSA9IHRhcmdl
dEluc3QgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0YXJnZXRJ
bnN0KSA6IHdpbmRvdztcblxuICAgIHZhciBnZXRUYXJnZXRJbnN0RnVuYywgaGFuZGxlRXZlbnRG
dW5jO1xuICAgIGlmIChzaG91bGRVc2VDaGFuZ2VFdmVudCh0YXJnZXROb2RlKSkge1xuICAgICAg
aWYgKGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSkge1xuICAgICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9
IGdldFRhcmdldEluc3RGb3JDaGFuZ2VFdmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhh
bmRsZUV2ZW50RnVuYyA9IGhhbmRsZUV2ZW50c0ZvckNoYW5nZUV2ZW50SUU4O1xuICAgICAgfVxu
ICAgIH0gZWxzZSBpZiAoaXNUZXh0SW5wdXRFbGVtZW50KHRhcmdldE5vZGUpKSB7XG4gICAgICBp
ZiAoaXNJbnB1dEV2ZW50U3VwcG9ydGVkKSB7XG4gICAgICAgIGdldFRhcmdldEluc3RGdW5jID0g
Z2V0VGFyZ2V0SW5zdEZvcklucHV0T3JDaGFuZ2VFdmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAg
ICAgIGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRQb2x5Zmls
bDtcbiAgICAgICAgaGFuZGxlRXZlbnRGdW5jID0gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudFBv
bHlmaWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc2hvdWxkVXNlQ2xpY2tFdmVudCh0YXJn
ZXROb2RlKSkge1xuICAgICAgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9yQ2xp
Y2tFdmVudDtcbiAgICB9XG5cbiAgICBpZiAoZ2V0VGFyZ2V0SW5zdEZ1bmMpIHtcbiAgICAgIHZh
ciBpbnN0ID0gZ2V0VGFyZ2V0SW5zdEZ1bmModG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRp
dmVFdmVudCk7XG4gICAgICBpZiAoaW5zdCkge1xuICAgICAgICB2YXIgZXZlbnQgPSBjcmVhdGVB
bmRBY2N1bXVsYXRlQ2hhbmdlRXZlbnQoaW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KTtcbiAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICho
YW5kbGVFdmVudEZ1bmMpIHtcbiAgICAgIGhhbmRsZUV2ZW50RnVuYyh0b3BMZXZlbFR5cGUsIHRh
cmdldE5vZGUsIHRhcmdldEluc3QpO1xuICAgIH1cblxuICAgIC8vIFdoZW4gYmx1cnJpbmcsIHNl
dCB0aGUgdmFsdWUgYXR0cmlidXRlIGZvciBudW1iZXIgaW5wdXRzXG4gICAgaWYgKHRvcExldmVs
VHlwZSA9PT0gJ3RvcEJsdXInKSB7XG4gICAgICBoYW5kbGVDb250cm9sbGVkSW5wdXRCbHVyKHRh
cmdldEluc3QsIHRhcmdldE5vZGUpO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMg
PSBDaGFuZ2VFdmVudFBsdWdpbjtcblxuLyoqKi8gfSksXG4vKiAxMjcgKi9cbi8qKiovIChmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3Ry
aWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG5cblxudmFyIFJl
YWN0T3duZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyOCk7XG5cbnZhciBSZWFjdFJlZiA9IHt9
O1xuXG5mdW5jdGlvbiBhdHRhY2hSZWYocmVmLCBjb21wb25lbnQsIG93bmVyKSB7XG4gIGlmICh0
eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmVmKGNvbXBvbmVudC5nZXRQdWJsaWNJ
bnN0YW5jZSgpKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBMZWdhY3kgcmVmXG4gICAgUmVhY3RPd25l
ci5hZGRDb21wb25lbnRBc1JlZlRvKGNvbXBvbmVudCwgcmVmLCBvd25lcik7XG4gIH1cbn1cblxu
ZnVuY3Rpb24gZGV0YWNoUmVmKHJlZiwgY29tcG9uZW50LCBvd25lcikge1xuICBpZiAodHlwZW9m
IHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJlZihudWxsKTtcbiAgfSBlbHNlIHtcbiAgICAv
LyBMZWdhY3kgcmVmXG4gICAgUmVhY3RPd25lci5yZW1vdmVDb21wb25lbnRBc1JlZkZyb20oY29t
cG9uZW50LCByZWYsIG93bmVyKTtcbiAgfVxufVxuXG5SZWFjdFJlZi5hdHRhY2hSZWZzID0gZnVu
Y3Rpb24gKGluc3RhbmNlLCBlbGVtZW50KSB7XG4gIGlmIChlbGVtZW50ID09PSBudWxsIHx8IHR5
cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgcmVm
ID0gZWxlbWVudC5yZWY7XG4gIGlmIChyZWYgIT0gbnVsbCkge1xuICAgIGF0dGFjaFJlZihyZWYs
IGluc3RhbmNlLCBlbGVtZW50Ll9vd25lcik7XG4gIH1cbn07XG5cblJlYWN0UmVmLnNob3VsZFVw
ZGF0ZVJlZnMgPSBmdW5jdGlvbiAocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSB7XG4gIC8vIElm
IGVpdGhlciB0aGUgb3duZXIgb3IgYSBgcmVmYCBoYXMgY2hhbmdlZCwgbWFrZSBzdXJlIHRoZSBu
ZXdlc3Qgb3duZXJcbiAgLy8gaGFzIHN0b3JlZCBhIHJlZmVyZW5jZSB0byBgdGhpc2AsIGFuZCB0
aGUgcHJldmlvdXMgb3duZXIgKGlmIGRpZmZlcmVudClcbiAgLy8gaGFzIGZvcmdvdHRlbiB0aGUg
cmVmZXJlbmNlIHRvIGB0aGlzYC4gV2UgdXNlIHRoZSBlbGVtZW50IGluc3RlYWRcbiAgLy8gb2Yg
dGhlIHB1YmxpYyB0aGlzLnByb3BzIGJlY2F1c2UgdGhlIHBvc3QgcHJvY2Vzc2luZyBjYW5ub3Qg
ZGV0ZXJtaW5lXG4gIC8vIGEgcmVmLiBUaGUgcmVmIGNvbmNlcHR1YWxseSBsaXZlcyBvbiB0aGUg
ZWxlbWVudC5cblxuICAvLyBUT0RPOiBTaG91bGQgdGhpcyBldmVuIGJlIHBvc3NpYmxlPyBUaGUg
b3duZXIgY2Fubm90IGNoYW5nZSBiZWNhdXNlXG4gIC8vIGl0J3MgZm9yYmlkZGVuIGJ5IHNob3Vs
ZFVwZGF0ZVJlYWN0Q29tcG9uZW50LiBUaGUgcmVmIGNhbiBjaGFuZ2VcbiAgLy8gaWYgeW91IHN3
YXAgdGhlIGtleXMgb2YgYnV0IG5vdCB0aGUgcmVmcy4gUmVjb25zaWRlciB3aGVyZSB0aGlzIGNo
ZWNrXG4gIC8vIGlzIG1hZGUuIEl0IHByb2JhYmx5IGJlbG9uZ3Mgd2hlcmUgdGhlIGtleSBjaGVj
a2luZyBhbmRcbiAgLy8gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCBpcyBkb25lLlxuXG4gIHZh
ciBwcmV2UmVmID0gbnVsbDtcbiAgdmFyIHByZXZPd25lciA9IG51bGw7XG4gIGlmIChwcmV2RWxl
bWVudCAhPT0gbnVsbCAmJiB0eXBlb2YgcHJldkVsZW1lbnQgPT09ICdvYmplY3QnKSB7XG4gICAg
cHJldlJlZiA9IHByZXZFbGVtZW50LnJlZjtcbiAgICBwcmV2T3duZXIgPSBwcmV2RWxlbWVudC5f
b3duZXI7XG4gIH1cblxuICB2YXIgbmV4dFJlZiA9IG51bGw7XG4gIHZhciBuZXh0T3duZXIgPSBu
dWxsO1xuICBpZiAobmV4dEVsZW1lbnQgIT09IG51bGwgJiYgdHlwZW9mIG5leHRFbGVtZW50ID09
PSAnb2JqZWN0Jykge1xuICAgIG5leHRSZWYgPSBuZXh0RWxlbWVudC5yZWY7XG4gICAgbmV4dE93
bmVyID0gbmV4dEVsZW1lbnQuX293bmVyO1xuICB9XG5cbiAgcmV0dXJuIHByZXZSZWYgIT09IG5l
eHRSZWYgfHxcbiAgLy8gSWYgb3duZXIgY2hhbmdlcyBidXQgd2UgaGF2ZSBhbiB1bmNoYW5nZWQg
ZnVuY3Rpb24gcmVmLCBkb24ndCB1cGRhdGUgcmVmc1xuICB0eXBlb2YgbmV4dFJlZiA9PT0gJ3N0
cmluZycgJiYgbmV4dE93bmVyICE9PSBwcmV2T3duZXI7XG59O1xuXG5SZWFjdFJlZi5kZXRhY2hS
ZWZzID0gZnVuY3Rpb24gKGluc3RhbmNlLCBlbGVtZW50KSB7XG4gIGlmIChlbGVtZW50ID09PSBu
dWxsIHx8IHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybjtcbiAgfVxu
ICB2YXIgcmVmID0gZWxlbWVudC5yZWY7XG4gIGlmIChyZWYgIT0gbnVsbCkge1xuICAgIGRldGFj
aFJlZihyZWYsIGluc3RhbmNlLCBlbGVtZW50Ll9vd25lcik7XG4gIH1cbn07XG5cbm1vZHVsZS5l
eHBvcnRzID0gUmVhY3RSZWY7XG5cbi8qKiovIH0pLFxuLyogMTI4ICovXG4vKioqLyAoZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmlj
dFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuXG5cbnZhciBfcHJv
ZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cbnZhciBpbnZhcmlhbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG4vKipcbiAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0
XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgdmFsaWQgb3duZXIu
XG4gKiBAZmluYWxcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZE93bmVyKG9iamVjdCkge1xuICByZXR1
cm4gISEob2JqZWN0ICYmIHR5cGVvZiBvYmplY3QuYXR0YWNoUmVmID09PSAnZnVuY3Rpb24nICYm
IHR5cGVvZiBvYmplY3QuZGV0YWNoUmVmID09PSAnZnVuY3Rpb24nKTtcbn1cblxuLyoqXG4gKiBS
ZWFjdE93bmVycyBhcmUgY2FwYWJsZSBvZiBzdG9yaW5nIHJlZmVyZW5jZXMgdG8gb3duZWQgY29t
cG9uZW50cy5cbiAqXG4gKiBBbGwgY29tcG9uZW50cyBhcmUgY2FwYWJsZSBvZiAvL2JlaW5nLy8g
cmVmZXJlbmNlZCBieSBvd25lciBjb21wb25lbnRzLCBidXRcbiAqIG9ubHkgUmVhY3RPd25lciBj
b21wb25lbnRzIGFyZSBjYXBhYmxlIG9mIC8vcmVmZXJlbmNpbmcvLyBvd25lZCBjb21wb25lbnRz
LlxuICogVGhlIG5hbWVkIHJlZmVyZW5jZSBpcyBrbm93biBhcyBhIFwicmVmXCIuXG4gKlxuICog
UmVmcyBhcmUgYXZhaWxhYmxlIHdoZW4gbW91bnRlZCBhbmQgdXBkYXRlZCBkdXJpbmcgcmVjb25j
aWxpYXRpb24uXG4gKlxuICogICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7
XG4gKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAqICAgICAgIHJldHVybiAoXG4gKiAgICAg
ICAgIDxkaXYgb25DbGljaz17dGhpcy5oYW5kbGVDbGlja30+XG4gKiAgICAgICAgICAgPEN1c3Rv
bUNvbXBvbmVudCByZWY9XCJjdXN0b21cIiAvPlxuICogICAgICAgICA8L2Rpdj5cbiAqICAgICAg
ICk7XG4gKiAgICAgfSxcbiAqICAgICBoYW5kbGVDbGljazogZnVuY3Rpb24oKSB7XG4gKiAgICAg
ICB0aGlzLnJlZnMuY3VzdG9tLmhhbmRsZUNsaWNrKCk7XG4gKiAgICAgfSxcbiAqICAgICBjb21w
b25lbnREaWRNb3VudDogZnVuY3Rpb24oKSB7XG4gKiAgICAgICB0aGlzLnJlZnMuY3VzdG9tLmlu
aXRpYWxpemUoKTtcbiAqICAgICB9XG4gKiAgIH0pO1xuICpcbiAqIFJlZnMgc2hvdWxkIHJhcmVs
eSBiZSB1c2VkLiBXaGVuIHJlZnMgYXJlIHVzZWQsIHRoZXkgc2hvdWxkIG9ubHkgYmUgZG9uZSB0
b1xuICogY29udHJvbCBkYXRhIHRoYXQgaXMgbm90IGhhbmRsZWQgYnkgUmVhY3QncyBkYXRhIGZs
b3cuXG4gKlxuICogQGNsYXNzIFJlYWN0T3duZXJcbiAqL1xudmFyIFJlYWN0T3duZXIgPSB7XG4g
IC8qKlxuICAgKiBBZGRzIGEgY29tcG9uZW50IGJ5IHJlZiB0byBhbiBvd25lciBjb21wb25lbnQu
XG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQg
dG8gcmVmZXJlbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIE5hbWUgYnkgd2hpY2ggdG8g
cmVmZXIgdG8gdGhlIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHtSZWFjdE93bmVyfSBvd25lciBD
b21wb25lbnQgb24gd2hpY2ggdG8gcmVjb3JkIHRoZSByZWYuXG4gICAqIEBmaW5hbFxuICAgKiBA
aW50ZXJuYWxcbiAgICovXG4gIGFkZENvbXBvbmVudEFzUmVmVG86IGZ1bmN0aW9uIChjb21wb25l
bnQsIHJlZiwgb3duZXIpIHtcbiAgICAhaXNWYWxpZE93bmVyKG93bmVyKSA/ICBmYWxzZSA/IGlu
dmFyaWFudChmYWxzZSwgJ2FkZENvbXBvbmVudEFzUmVmVG8oLi4uKTogT25seSBhIFJlYWN0T3du
ZXIgY2FuIGhhdmUgcmVmcy4gWW91IG1pZ2h0IGJlIGFkZGluZyBhIHJlZiB0byBhIGNvbXBvbmVu
dCB0aGF0IHdhcyBub3QgY3JlYXRlZCBpbnNpZGUgYSBjb21wb25lbnRcXCdzIGByZW5kZXJgIG1l
dGhvZCwgb3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IGxvYWRlZCAoZGV0YWls
czogaHR0cHM6Ly9mYi5tZS9yZWFjdC1yZWZzLW11c3QtaGF2ZS1vd25lcikuJykgOiBfcHJvZElu
dmFyaWFudCgnMTE5JykgOiB2b2lkIDA7XG4gICAgb3duZXIuYXR0YWNoUmVmKHJlZiwgY29tcG9u
ZW50KTtcbiAgfSxcblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGNvbXBvbmVudCBieSByZWYgZnJv
bSBhbiBvd25lciBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9
IGNvbXBvbmVudCBDb21wb25lbnQgdG8gZGVyZWZlcmVuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5n
fSByZWYgTmFtZSBvZiB0aGUgcmVmIHRvIHJlbW92ZS5cbiAgICogQHBhcmFtIHtSZWFjdE93bmVy
fSBvd25lciBDb21wb25lbnQgb24gd2hpY2ggdGhlIHJlZiBpcyByZWNvcmRlZC5cbiAgICogQGZp
bmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tOiBm
dW5jdGlvbiAoY29tcG9uZW50LCByZWYsIG93bmVyKSB7XG4gICAgIWlzVmFsaWRPd25lcihvd25l
cikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdyZW1vdmVDb21wb25lbnRBc1JlZkZyb20o
Li4uKTogT25seSBhIFJlYWN0T3duZXIgY2FuIGhhdmUgcmVmcy4gWW91IG1pZ2h0IGJlIHJlbW92
aW5nIGEgcmVmIHRvIGEgY29tcG9uZW50IHRoYXQgd2FzIG5vdCBjcmVhdGVkIGluc2lkZSBhIGNv
bXBvbmVudFxcJ3MgYHJlbmRlcmAgbWV0aG9kLCBvciB5b3UgaGF2ZSBtdWx0aXBsZSBjb3BpZXMg
b2YgUmVhY3QgbG9hZGVkIChkZXRhaWxzOiBodHRwczovL2ZiLm1lL3JlYWN0LXJlZnMtbXVzdC1o
YXZlLW93bmVyKS4nKSA6IF9wcm9kSW52YXJpYW50KCcxMjAnKSA6IHZvaWQgMDtcbiAgICB2YXIg
b3duZXJQdWJsaWNJbnN0YW5jZSA9IG93bmVyLmdldFB1YmxpY0luc3RhbmNlKCk7XG4gICAgLy8g
Q2hlY2sgdGhhdCBgY29tcG9uZW50YCdzIG93bmVyIGlzIHN0aWxsIGFsaXZlIGFuZCB0aGF0IGBj
b21wb25lbnRgIGlzIHN0aWxsIHRoZSBjdXJyZW50IHJlZlxuICAgIC8vIGJlY2F1c2Ugd2UgZG8g
bm90IHdhbnQgdG8gZGV0YWNoIHRoZSByZWYgaWYgYW5vdGhlciBjb21wb25lbnQgc3RvbGUgaXQu
XG4gICAgaWYgKG93bmVyUHVibGljSW5zdGFuY2UgJiYgb3duZXJQdWJsaWNJbnN0YW5jZS5yZWZz
W3JlZl0gPT09IGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpKSB7XG4gICAgICBvd25lci5k
ZXRhY2hSZWYocmVmKTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RP
d25lcjtcblxuLyoqKi8gfSksXG4vKiAxMjkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbi8qKlxuICogTW9kdWxlIHRoYXQgaXMgaW5q
ZWN0YWJsZSBpbnRvIGBFdmVudFBsdWdpbkh1YmAsIHRoYXQgc3BlY2lmaWVzIGFcbiAqIGRldGVy
bWluaXN0aWMgb3JkZXJpbmcgb2YgYEV2ZW50UGx1Z2luYHMuIEEgY29udmVuaWVudCB3YXkgdG8g
cmVhc29uIGFib3V0XG4gKiBwbHVnaW5zLCB3aXRob3V0IGhhdmluZyB0byBwYWNrYWdlIGV2ZXJ5
IG9uZSBvZiB0aGVtLiBUaGlzIGlzIGJldHRlciB0aGFuXG4gKiBoYXZpbmcgcGx1Z2lucyBiZSBv
cmRlcmVkIGluIHRoZSBzYW1lIG9yZGVyIHRoYXQgdGhleSBhcmUgaW5qZWN0ZWQgYmVjYXVzZVxu
ICogdGhhdCBvcmRlcmluZyB3b3VsZCBiZSBpbmZsdWVuY2VkIGJ5IHRoZSBwYWNrYWdpbmcgb3Jk
ZXIuXG4gKiBgUmVzcG9uZGVyRXZlbnRQbHVnaW5gIG11c3Qgb2NjdXIgYmVmb3JlIGBTaW1wbGVF
dmVudFBsdWdpbmAgc28gdGhhdFxuICogcHJldmVudGluZyBkZWZhdWx0IG9uIGV2ZW50cyBpcyBj
b252ZW5pZW50IGluIGBTaW1wbGVFdmVudFBsdWdpbmAgaGFuZGxlcnMuXG4gKi9cblxudmFyIERl
ZmF1bHRFdmVudFBsdWdpbk9yZGVyID0gWydSZXNwb25kZXJFdmVudFBsdWdpbicsICdTaW1wbGVF
dmVudFBsdWdpbicsICdUYXBFdmVudFBsdWdpbicsICdFbnRlckxlYXZlRXZlbnRQbHVnaW4nLCAn
Q2hhbmdlRXZlbnRQbHVnaW4nLCAnU2VsZWN0RXZlbnRQbHVnaW4nLCAnQmVmb3JlSW5wdXRFdmVu
dFBsdWdpbiddO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERlZmF1bHRFdmVudFBsdWdpbk9yZGVyO1xu
XG4vKioqLyB9KSxcbi8qIDEzMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIEV2ZW50UHJvcGFnYXRvcnMgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDE5KTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDQpO1xudmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDI1KTtcblxudmFyIGV2ZW50VHlwZXMgPSB7XG4gIG1vdXNlRW50ZXI6IHtcbiAgICByZWdpc3Ry
YXRpb25OYW1lOiAnb25Nb3VzZUVudGVyJyxcbiAgICBkZXBlbmRlbmNpZXM6IFsndG9wTW91c2VP
dXQnLCAndG9wTW91c2VPdmVyJ11cbiAgfSxcbiAgbW91c2VMZWF2ZToge1xuICAgIHJlZ2lzdHJh
dGlvbk5hbWU6ICdvbk1vdXNlTGVhdmUnLFxuICAgIGRlcGVuZGVuY2llczogWyd0b3BNb3VzZU91
dCcsICd0b3BNb3VzZU92ZXInXVxuICB9XG59O1xuXG52YXIgRW50ZXJMZWF2ZUV2ZW50UGx1Z2lu
ID0ge1xuICBldmVudFR5cGVzOiBldmVudFR5cGVzLFxuXG4gIC8qKlxuICAgKiBGb3IgYWxtb3N0
IGV2ZXJ5IGludGVyYWN0aW9uIHdlIGNhcmUgYWJvdXQsIHRoZXJlIHdpbGwgYmUgYm90aCBhIHRv
cC1sZXZlbFxuICAgKiBgbW91c2VvdmVyYCBhbmQgYG1vdXNlb3V0YCBldmVudCB0aGF0IG9jY3Vy
cy4gT25seSB1c2UgYG1vdXNlb3V0YCBzbyB0aGF0XG4gICAqIHdlIGRvIG5vdCBleHRyYWN0IGR1
cGxpY2F0ZSBldmVudHMuIEhvd2V2ZXIsIG1vdmluZyB0aGUgbW91c2UgaW50byB0aGVcbiAgICog
YnJvd3NlciBmcm9tIG91dHNpZGUgd2lsbCBub3QgZmlyZSBhIGBtb3VzZW91dGAgZXZlbnQuIElu
IHRoaXMgY2FzZSwgd2UgdXNlXG4gICAqIHRoZSBgbW91c2VvdmVyYCB0b3AtbGV2ZWwgZXZlbnQu
XG4gICAqL1xuICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJ
bnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICBpZiAodG9wTGV2ZWxU
eXBlID09PSAndG9wTW91c2VPdmVyJyAmJiAobmF0aXZlRXZlbnQucmVsYXRlZFRhcmdldCB8fCBu
YXRpdmVFdmVudC5mcm9tRWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAg
ICBpZiAodG9wTGV2ZWxUeXBlICE9PSAndG9wTW91c2VPdXQnICYmIHRvcExldmVsVHlwZSAhPT0g
J3RvcE1vdXNlT3ZlcicpIHtcbiAgICAgIC8vIE11c3Qgbm90IGJlIGEgbW91c2UgaW4gb3IgbW91
c2Ugb3V0IC0gaWdub3JpbmcuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIg
d2luO1xuICAgIGlmIChuYXRpdmVFdmVudFRhcmdldC53aW5kb3cgPT09IG5hdGl2ZUV2ZW50VGFy
Z2V0KSB7XG4gICAgICAvLyBgbmF0aXZlRXZlbnRUYXJnZXRgIGlzIHByb2JhYmx5IGEgd2luZG93
IG9iamVjdC5cbiAgICAgIHdpbiA9IG5hdGl2ZUV2ZW50VGFyZ2V0O1xuICAgIH0gZWxzZSB7XG4g
ICAgICAvLyBUT0RPOiBGaWd1cmUgb3V0IHdoeSBgb3duZXJEb2N1bWVudGAgaXMgc29tZXRpbWVz
IHVuZGVmaW5lZCBpbiBJRTguXG4gICAgICB2YXIgZG9jID0gbmF0aXZlRXZlbnRUYXJnZXQub3du
ZXJEb2N1bWVudDtcbiAgICAgIGlmIChkb2MpIHtcbiAgICAgICAgd2luID0gZG9jLmRlZmF1bHRW
aWV3IHx8IGRvYy5wYXJlbnRXaW5kb3c7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aW4gPSB3
aW5kb3c7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGZyb207XG4gICAgdmFyIHRvO1xuICAg
IGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BNb3VzZU91dCcpIHtcbiAgICAgIGZyb20gPSB0YXJn
ZXRJbnN0O1xuICAgICAgdmFyIHJlbGF0ZWQgPSBuYXRpdmVFdmVudC5yZWxhdGVkVGFyZ2V0IHx8
IG5hdGl2ZUV2ZW50LnRvRWxlbWVudDtcbiAgICAgIHRvID0gcmVsYXRlZCA/IFJlYWN0RE9NQ29t
cG9uZW50VHJlZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShyZWxhdGVkKSA6IG51bGw7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIC8vIE1vdmluZyB0byBhIG5vZGUgZnJvbSBvdXRzaWRlIHRoZSB3
aW5kb3cuXG4gICAgICBmcm9tID0gbnVsbDtcbiAgICAgIHRvID0gdGFyZ2V0SW5zdDtcbiAgICB9
XG5cbiAgICBpZiAoZnJvbSA9PT0gdG8pIHtcbiAgICAgIC8vIE5vdGhpbmcgcGVydGFpbnMgdG8g
b3VyIG1hbmFnZWQgY29tcG9uZW50cy5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAg
IHZhciBmcm9tTm9kZSA9IGZyb20gPT0gbnVsbCA/IHdpbiA6IFJlYWN0RE9NQ29tcG9uZW50VHJl
ZS5nZXROb2RlRnJvbUluc3RhbmNlKGZyb20pO1xuICAgIHZhciB0b05vZGUgPSB0byA9PSBudWxs
ID8gd2luIDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodG8pO1xu
XG4gICAgdmFyIGxlYXZlID0gU3ludGhldGljTW91c2VFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBl
cy5tb3VzZUxlYXZlLCBmcm9tLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuICAg
IGxlYXZlLnR5cGUgPSAnbW91c2VsZWF2ZSc7XG4gICAgbGVhdmUudGFyZ2V0ID0gZnJvbU5vZGU7
XG4gICAgbGVhdmUucmVsYXRlZFRhcmdldCA9IHRvTm9kZTtcblxuICAgIHZhciBlbnRlciA9IFN5
bnRoZXRpY01vdXNlRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMubW91c2VFbnRlciwgdG8sIG5h
dGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgZW50ZXIudHlwZSA9ICdtb3VzZWVu
dGVyJztcbiAgICBlbnRlci50YXJnZXQgPSB0b05vZGU7XG4gICAgZW50ZXIucmVsYXRlZFRhcmdl
dCA9IGZyb21Ob2RlO1xuXG4gICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlRW50ZXJMZWF2
ZURpc3BhdGNoZXMobGVhdmUsIGVudGVyLCBmcm9tLCB0byk7XG5cbiAgICByZXR1cm4gW2xlYXZl
LCBlbnRlcl07XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRW50ZXJMZWF2ZUV2ZW50UGx1
Z2luO1xuXG4vKioqLyB9KSxcbi8qIDEzMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIERPTVByb3BlcnR5ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxNSk7XG5cbnZhciBNVVNUX1VTRV9QUk9QRVJUWSA9IERPTVByb3BlcnR5Lmlu
amVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWTtcbnZhciBIQVNfQk9PTEVBTl9WQUxVRSA9IERPTVBy
b3BlcnR5LmluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRTtcbnZhciBIQVNfTlVNRVJJQ19WQUxV
RSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfTlVNRVJJQ19WQUxVRTtcbnZhciBIQVNfUE9T
SVRJVkVfTlVNRVJJQ19WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfUE9TSVRJVkVf
TlVNRVJJQ19WQUxVRTtcbnZhciBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFID0gRE9NUHJv
cGVydHkuaW5qZWN0aW9uLkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU7XG5cbnZhciBIVE1M
RE9NUHJvcGVydHlDb25maWcgPSB7XG4gIGlzQ3VzdG9tQXR0cmlidXRlOiBSZWdFeHAucHJvdG90
eXBlLnRlc3QuYmluZChuZXcgUmVnRXhwKCdeKGRhdGF8YXJpYSktWycgKyBET01Qcm9wZXJ0eS5B
VFRSSUJVVEVfTkFNRV9DSEFSICsgJ10qJCcpKSxcbiAgUHJvcGVydGllczoge1xuICAgIC8qKlxu
ICAgICAqIFN0YW5kYXJkIFByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBhY2NlcHQ6IDAsXG4gICAg
YWNjZXB0Q2hhcnNldDogMCxcbiAgICBhY2Nlc3NLZXk6IDAsXG4gICAgYWN0aW9uOiAwLFxuICAg
IGFsbG93RnVsbFNjcmVlbjogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgYWxsb3dUcmFuc3BhcmVu
Y3k6IDAsXG4gICAgYWx0OiAwLFxuICAgIC8vIHNwZWNpZmllcyB0YXJnZXQgY29udGV4dCBmb3Ig
bGlua3Mgd2l0aCBgcHJlbG9hZGAgdHlwZVxuICAgIGFzOiAwLFxuICAgIGFzeW5jOiBIQVNfQk9P
TEVBTl9WQUxVRSxcbiAgICBhdXRvQ29tcGxldGU6IDAsXG4gICAgLy8gYXV0b0ZvY3VzIGlzIHBv
bHlmaWxsZWQvbm9ybWFsaXplZCBieSBBdXRvRm9jdXNVdGlsc1xuICAgIC8vIGF1dG9Gb2N1czog
SEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgYXV0b1BsYXk6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAg
IGNhcHR1cmU6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGNlbGxQYWRkaW5nOiAwLFxuICAgIGNl
bGxTcGFjaW5nOiAwLFxuICAgIGNoYXJTZXQ6IDAsXG4gICAgY2hhbGxlbmdlOiAwLFxuICAgIGNo
ZWNrZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgY2l0ZTog
MCxcbiAgICBjbGFzc0lEOiAwLFxuICAgIGNsYXNzTmFtZTogMCxcbiAgICBjb2xzOiBIQVNfUE9T
SVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICBjb2xTcGFuOiAwLFxuICAgIGNvbnRlbnQ6IDAsXG4g
ICAgY29udGVudEVkaXRhYmxlOiAwLFxuICAgIGNvbnRleHRNZW51OiAwLFxuICAgIGNvbnRyb2xz
OiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBjb29yZHM6IDAsXG4gICAgY3Jvc3NPcmlnaW46IDAs
XG4gICAgZGF0YTogMCwgLy8gRm9yIGA8b2JqZWN0IC8+YCBhY3RzIGFzIGBzcmNgLlxuICAgIGRh
dGVUaW1lOiAwLFxuICAgICdkZWZhdWx0JzogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgZGVmZXI6
IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGRpcjogMCxcbiAgICBkaXNhYmxlZDogSEFTX0JPT0xF
QU5fVkFMVUUsXG4gICAgZG93bmxvYWQ6IEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUsXG4g
ICAgZHJhZ2dhYmxlOiAwLFxuICAgIGVuY1R5cGU6IDAsXG4gICAgZm9ybTogMCxcbiAgICBmb3Jt
QWN0aW9uOiAwLFxuICAgIGZvcm1FbmNUeXBlOiAwLFxuICAgIGZvcm1NZXRob2Q6IDAsXG4gICAg
Zm9ybU5vVmFsaWRhdGU6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGZvcm1UYXJnZXQ6IDAsXG4g
ICAgZnJhbWVCb3JkZXI6IDAsXG4gICAgaGVhZGVyczogMCxcbiAgICBoZWlnaHQ6IDAsXG4gICAg
aGlkZGVuOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBoaWdoOiAwLFxuICAgIGhyZWY6IDAsXG4g
ICAgaHJlZkxhbmc6IDAsXG4gICAgaHRtbEZvcjogMCxcbiAgICBodHRwRXF1aXY6IDAsXG4gICAg
aWNvbjogMCxcbiAgICBpZDogMCxcbiAgICBpbnB1dE1vZGU6IDAsXG4gICAgaW50ZWdyaXR5OiAw
LFxuICAgIGlzOiAwLFxuICAgIGtleVBhcmFtczogMCxcbiAgICBrZXlUeXBlOiAwLFxuICAgIGtp
bmQ6IDAsXG4gICAgbGFiZWw6IDAsXG4gICAgbGFuZzogMCxcbiAgICBsaXN0OiAwLFxuICAgIGxv
b3A6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGxvdzogMCxcbiAgICBtYW5pZmVzdDogMCxcbiAg
ICBtYXJnaW5IZWlnaHQ6IDAsXG4gICAgbWFyZ2luV2lkdGg6IDAsXG4gICAgbWF4OiAwLFxuICAg
IG1heExlbmd0aDogMCxcbiAgICBtZWRpYTogMCxcbiAgICBtZWRpYUdyb3VwOiAwLFxuICAgIG1l
dGhvZDogMCxcbiAgICBtaW46IDAsXG4gICAgbWluTGVuZ3RoOiAwLFxuICAgIC8vIENhdXRpb247
IGBvcHRpb24uc2VsZWN0ZWRgIGlzIG5vdCB1cGRhdGVkIGlmIGBzZWxlY3QubXVsdGlwbGVgIGlz
XG4gICAgLy8gZGlzYWJsZWQgd2l0aCBgcmVtb3ZlQXR0cmlidXRlYC5cbiAgICBtdWx0aXBsZTog
TVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBtdXRlZDogTVVTVF9V
U0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBuYW1lOiAwLFxuICAgIG5vbmNl
OiAwLFxuICAgIG5vVmFsaWRhdGU6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIG9wZW46IEhBU19C
T09MRUFOX1ZBTFVFLFxuICAgIG9wdGltdW06IDAsXG4gICAgcGF0dGVybjogMCxcbiAgICBwbGFj
ZWhvbGRlcjogMCxcbiAgICBwbGF5c0lubGluZTogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgcG9z
dGVyOiAwLFxuICAgIHByZWxvYWQ6IDAsXG4gICAgcHJvZmlsZTogMCxcbiAgICByYWRpb0dyb3Vw
OiAwLFxuICAgIHJlYWRPbmx5OiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICByZWZlcnJlclBvbGlj
eTogMCxcbiAgICByZWw6IDAsXG4gICAgcmVxdWlyZWQ6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAg
IHJldmVyc2VkOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICByb2xlOiAwLFxuICAgIHJvd3M6IEhB
U19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuICAgIHJvd1NwYW46IEhBU19OVU1FUklDX1ZBTFVF
LFxuICAgIHNhbmRib3g6IDAsXG4gICAgc2NvcGU6IDAsXG4gICAgc2NvcGVkOiBIQVNfQk9PTEVB
Tl9WQUxVRSxcbiAgICBzY3JvbGxpbmc6IDAsXG4gICAgc2VhbWxlc3M6IEhBU19CT09MRUFOX1ZB
TFVFLFxuICAgIHNlbGVjdGVkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVF
LFxuICAgIHNoYXBlOiAwLFxuICAgIHNpemU6IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxu
ICAgIHNpemVzOiAwLFxuICAgIHNwYW46IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuICAg
IHNwZWxsQ2hlY2s6IDAsXG4gICAgc3JjOiAwLFxuICAgIHNyY0RvYzogMCxcbiAgICBzcmNMYW5n
OiAwLFxuICAgIHNyY1NldDogMCxcbiAgICBzdGFydDogSEFTX05VTUVSSUNfVkFMVUUsXG4gICAg
c3RlcDogMCxcbiAgICBzdHlsZTogMCxcbiAgICBzdW1tYXJ5OiAwLFxuICAgIHRhYkluZGV4OiAw
LFxuICAgIHRhcmdldDogMCxcbiAgICB0aXRsZTogMCxcbiAgICAvLyBTZXR0aW5nIC50eXBlIHRo
cm93cyBvbiBub24tPGlucHV0PiB0YWdzXG4gICAgdHlwZTogMCxcbiAgICB1c2VNYXA6IDAsXG4g
ICAgdmFsdWU6IDAsXG4gICAgd2lkdGg6IDAsXG4gICAgd21vZGU6IDAsXG4gICAgd3JhcDogMCxc
blxuICAgIC8qKlxuICAgICAqIFJERmEgUHJvcGVydGllc1xuICAgICAqL1xuICAgIGFib3V0OiAw
LFxuICAgIGRhdGF0eXBlOiAwLFxuICAgIGlubGlzdDogMCxcbiAgICBwcmVmaXg6IDAsXG4gICAg
Ly8gcHJvcGVydHkgaXMgYWxzbyBzdXBwb3J0ZWQgZm9yIE9wZW5HcmFwaCBpbiBtZXRhIHRhZ3Mu
XG4gICAgcHJvcGVydHk6IDAsXG4gICAgcmVzb3VyY2U6IDAsXG4gICAgJ3R5cGVvZic6IDAsXG4g
ICAgdm9jYWI6IDAsXG5cbiAgICAvKipcbiAgICAgKiBOb24tc3RhbmRhcmQgUHJvcGVydGllc1xu
ICAgICAqL1xuICAgIC8vIGF1dG9DYXBpdGFsaXplIGFuZCBhdXRvQ29ycmVjdCBhcmUgc3VwcG9y
dGVkIGluIE1vYmlsZSBTYWZhcmkgZm9yXG4gICAgLy8ga2V5Ym9hcmQgaGludHMuXG4gICAgYXV0
b0NhcGl0YWxpemU6IDAsXG4gICAgYXV0b0NvcnJlY3Q6IDAsXG4gICAgLy8gYXV0b1NhdmUgYWxs
b3dzIFdlYktpdC9CbGluayB0byBwZXJzaXN0IHZhbHVlcyBvZiBpbnB1dCBmaWVsZHMgb24gcGFn
ZSByZWxvYWRzXG4gICAgYXV0b1NhdmU6IDAsXG4gICAgLy8gY29sb3IgaXMgZm9yIFNhZmFyaSBt
YXNrLWljb24gbGlua1xuICAgIGNvbG9yOiAwLFxuICAgIC8vIGl0ZW1Qcm9wLCBpdGVtU2NvcGUs
IGl0ZW1UeXBlIGFyZSBmb3JcbiAgICAvLyBNaWNyb2RhdGEgc3VwcG9ydC4gU2VlIGh0dHA6Ly9z
Y2hlbWEub3JnL2RvY3MvZ3MuaHRtbFxuICAgIGl0ZW1Qcm9wOiAwLFxuICAgIGl0ZW1TY29wZTog
SEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgaXRlbVR5cGU6IDAsXG4gICAgLy8gaXRlbUlEIGFuZCBp
dGVtUmVmIGFyZSBmb3IgTWljcm9kYXRhIHN1cHBvcnQgYXMgd2VsbCBidXRcbiAgICAvLyBvbmx5
IHNwZWNpZmllZCBpbiB0aGUgV0hBVFdHIHNwZWMgZG9jdW1lbnQuIFNlZVxuICAgIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL21pY3JvZGF0YS5odG1sI21pY3JvZGF0
YS1kb20tYXBpXG4gICAgaXRlbUlEOiAwLFxuICAgIGl0ZW1SZWY6IDAsXG4gICAgLy8gcmVzdWx0
cyBzaG93IGxvb2tpbmcgZ2xhc3MgaWNvbiBhbmQgcmVjZW50IHNlYXJjaGVzIG9uIGlucHV0XG4g
ICAgLy8gc2VhcmNoIGZpZWxkcyBpbiBXZWJLaXQvQmxpbmtcbiAgICByZXN1bHRzOiAwLFxuICAg
IC8vIElFLW9ubHkgYXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHNlY3VyaXR5IHJlc3RyaWN0aW9u
cyBvbiBhbiBpZnJhbWVcbiAgICAvLyBhcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgc2FuZGJveCBh
dHRyaWJ1dGUgb24gSUU8MTBcbiAgICBzZWN1cml0eTogMCxcbiAgICAvLyBJRS1vbmx5IGF0dHJp
YnV0ZSB0aGF0IGNvbnRyb2xzIGZvY3VzIGJlaGF2aW9yXG4gICAgdW5zZWxlY3RhYmxlOiAwXG4g
IH0sXG4gIERPTUF0dHJpYnV0ZU5hbWVzOiB7XG4gICAgYWNjZXB0Q2hhcnNldDogJ2FjY2VwdC1j
aGFyc2V0JyxcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgaHRtbEZvcjogJ2ZvcicsXG4g
ICAgaHR0cEVxdWl2OiAnaHR0cC1lcXVpdidcbiAgfSxcbiAgRE9NUHJvcGVydHlOYW1lczoge30s
XG4gIERPTU11dGF0aW9uTWV0aG9kczoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiAobm9kZSwgdmFs
dWUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBub2RlLnJl
bW92ZUF0dHJpYnV0ZSgndmFsdWUnKTtcbiAgICAgIH1cblxuICAgICAgLy8gTnVtYmVyIGlucHV0
cyBnZXQgc3BlY2lhbCB0cmVhdG1lbnQgZHVlIHRvIHNvbWUgZWRnZSBjYXNlcyBpblxuICAgICAg
Ly8gQ2hyb21lLiBMZXQgZXZlcnl0aGluZyBlbHNlIGFzc2lnbiB0aGUgdmFsdWUgYXR0cmlidXRl
IGFzIG5vcm1hbC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9p
c3N1ZXMvNzI1MyNpc3N1ZWNvbW1lbnQtMjM2MDc0MzI2XG4gICAgICBpZiAobm9kZS50eXBlICE9
PSAnbnVtYmVyJyB8fCBub2RlLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSA9PT0gZmFsc2UpIHtcbiAg
ICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJycgKyB2YWx1ZSk7XG4gICAgICB9IGVs
c2UgaWYgKG5vZGUudmFsaWRpdHkgJiYgIW5vZGUudmFsaWRpdHkuYmFkSW5wdXQgJiYgbm9kZS5v
d25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IG5vZGUpIHtcbiAgICAgICAgLy8gRG9uJ3Qg
YXNzaWduIGFuIGF0dHJpYnV0ZSBpZiB2YWxpZGF0aW9uIHJlcG9ydHMgYmFkXG4gICAgICAgIC8v
IGlucHV0LiBDaHJvbWUgd2lsbCBjbGVhciB0aGUgdmFsdWUuIEFkZGl0aW9uYWxseSwgZG9uJ3Rc
biAgICAgICAgLy8gb3BlcmF0ZSBvbiBpbnB1dHMgdGhhdCBoYXZlIGZvY3VzLCBvdGhlcndpc2Ug
Q2hyb21lIG1pZ2h0XG4gICAgICAgIC8vIHN0cmlwIG9mZiB0cmFpbGluZyBkZWNpbWFsIHBsYWNl
cyBhbmQgY2F1c2UgdGhlIHVzZXInc1xuICAgICAgICAvLyBjdXJzb3IgcG9zaXRpb24gdG8ganVt
cCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbnB1dC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8g
SW4gUmVhY3RET01JbnB1dCwgd2UgaGF2ZSBhbiBvbkJsdXIgZXZlbnQgdGhhdCB3aWxsIHRyaWdn
ZXJcbiAgICAgICAgLy8gdGhpcyBmdW5jdGlvbiBhZ2FpbiB3aGVuIGZvY3VzIGlzIGxvc3QuXG4g
ICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsICcnICsgdmFsdWUpO1xuICAgICAgfVxu
ICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBIVE1MRE9NUHJvcGVydHlDb25maWc7
XG5cbi8qKiovIH0pLFxuLyogMTMyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0gX193
ZWJwYWNrX3JlcXVpcmVfXygzNyk7XG52YXIgUmVhY3RET01JRE9wZXJhdGlvbnMgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEzNyk7XG5cbi8qKlxuICogQWJzdHJhY3RzIGF3YXkgYWxsIGZ1bmN0aW9u
YWxpdHkgb2YgdGhlIHJlY29uY2lsZXIgdGhhdCByZXF1aXJlcyBrbm93bGVkZ2Ugb2ZcbiAqIHRo
ZSBicm93c2VyIGNvbnRleHQuIFRPRE86IFRoZXNlIGNhbGxlcnMgc2hvdWxkIGJlIHJlZmFjdG9y
ZWQgdG8gYXZvaWQgdGhlXG4gKiBuZWVkIGZvciB0aGlzIGluamVjdGlvbi5cbiAqL1xudmFyIFJl
YWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50ID0ge1xuICBwcm9jZXNzQ2hpbGRyZW5VcGRh
dGVzOiBSZWFjdERPTUlET3BlcmF0aW9ucy5kYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0
ZXMsXG5cbiAgcmVwbGFjZU5vZGVXaXRoTWFya3VwOiBET01DaGlsZHJlbk9wZXJhdGlvbnMuZGFu
Z2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXBcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVh
Y3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQ7XG5cbi8qKiovIH0pLFxuLyogMTMzICovXG4v
KioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52
YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG52YXIgRE9NTGF6
eVRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTtcbnZhciBFeGVjdXRpb25FbnZpcm9ubWVu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cbnZhciBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNCk7XG52YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFj
a19yZXF1aXJlX18oNik7XG52YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtc
blxudmFyIERhbmdlciA9IHtcbiAgLyoqXG4gICAqIFJlcGxhY2VzIGEgbm9kZSB3aXRoIGEgc3Ry
aW5nIG9mIG1hcmt1cCBhdCBpdHMgY3VycmVudCBwb3NpdGlvbiB3aXRoaW4gaXRzXG4gICAqIHBh
cmVudC4gVGhlIG1hcmt1cCBtdXN0IHJlbmRlciBpbnRvIGEgc2luZ2xlIHJvb3Qgbm9kZS5cbiAg
ICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBvbGRDaGlsZCBDaGlsZCBub2RlIHRvIHJlcGxh
Y2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRvIHJlbmRlciBpbiBwbGFj
ZSBvZiB0aGUgY2hpbGQgbm9kZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBkYW5nZXJvdXNs
eVJlcGxhY2VOb2RlV2l0aE1hcmt1cDogZnVuY3Rpb24gKG9sZENoaWxkLCBtYXJrdXApIHtcbiAg
ICAhRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gIGZhbHNlID8gaW52YXJpYW50KGZh
bHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4uKTogQ2Fubm90IHJlbmRl
ciBtYXJrdXAgaW4gYSB3b3JrZXIgdGhyZWFkLiBNYWtlIHN1cmUgYHdpbmRvd2AgYW5kIGBkb2N1
bWVudGAgYXJlIGF2YWlsYWJsZSBnbG9iYWxseSBiZWZvcmUgcmVxdWlyaW5nIFJlYWN0IHdoZW4g
dW5pdCB0ZXN0aW5nIG9yIHVzZSBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZygpIGZvciBz
ZXJ2ZXIgcmVuZGVyaW5nLicpIDogX3Byb2RJbnZhcmlhbnQoJzU2JykgOiB2b2lkIDA7XG4gICAg
IW1hcmt1cCA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5v
ZGVXaXRoTWFya3VwKC4uLik6IE1pc3NpbmcgbWFya3VwLicpIDogX3Byb2RJbnZhcmlhbnQoJzU3
JykgOiB2b2lkIDA7XG4gICAgIShvbGRDaGlsZC5ub2RlTmFtZSAhPT0gJ0hUTUwnKSA/ICBmYWxz
ZSA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4u
Lik6IENhbm5vdCByZXBsYWNlIG1hcmt1cCBvZiB0aGUgPGh0bWw+IG5vZGUuIFRoaXMgaXMgYmVj
YXVzZSBicm93c2VyIHF1aXJrcyBtYWtlIHRoaXMgdW5yZWxpYWJsZSBhbmQvb3Igc2xvdy4gSWYg
eW91IHdhbnQgdG8gcmVuZGVyIHRvIHRoZSByb290IHlvdSBtdXN0IHVzZSBzZXJ2ZXIgcmVuZGVy
aW5nLiBTZWUgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKS4nKSA6IF9wcm9kSW52YXJp
YW50KCc1OCcpIDogdm9pZCAwO1xuXG4gICAgaWYgKHR5cGVvZiBtYXJrdXAgPT09ICdzdHJpbmcn
KSB7XG4gICAgICB2YXIgbmV3Q2hpbGQgPSBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAobWFya3VwLCBl
bXB0eUZ1bmN0aW9uKVswXTtcbiAgICAgIG9sZENoaWxkLnBhcmVudE5vZGUucmVwbGFjZUNoaWxk
KG5ld0NoaWxkLCBvbGRDaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIERPTUxhenlUcmVlLnJl
cGxhY2VDaGlsZFdpdGhUcmVlKG9sZENoaWxkLCBtYXJrdXApO1xuICAgIH1cbiAgfVxufTtcblxu
bW9kdWxlLmV4cG9ydHMgPSBEYW5nZXI7XG5cbi8qKiovIH0pLFxuLyogMTM0ICovXG4vKioqLyAo
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNl
IHN0cmljdFwiO1xuXG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNo
ZWNrc1xuICovXG5cbi8qZXNsaW50LWRpc2FibGUgZmItd3d3L3Vuc2FmZS1odG1sKi9cblxudmFy
IEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblxudmFyIGNy
ZWF0ZUFycmF5RnJvbU1peGVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzUpO1xudmFyIGdldE1h
cmt1cFdyYXAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNik7XG52YXIgaW52YXJpYW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLyoqXG4gKiBEdW1teSBjb250YWluZXIgdXNlZCB0byBy
ZW5kZXIgYWxsIG1hcmt1cC5cbiAqL1xudmFyIGR1bW15Tm9kZSA9IEV4ZWN1dGlvbkVudmlyb25t
ZW50LmNhblVzZURPTSA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIDogbnVsbDtcblxu
LyoqXG4gKiBQYXR0ZXJuIHVzZWQgYnkgYGdldE5vZGVOYW1lYC5cbiAqL1xudmFyIG5vZGVOYW1l
UGF0dGVybiA9IC9eXFxzKjwoXFx3KykvO1xuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBgbm9kZU5h
bWVgIG9mIHRoZSBmaXJzdCBlbGVtZW50IGluIGEgc3RyaW5nIG9mIG1hcmt1cC5cbiAqXG4gKiBA
cGFyYW0ge3N0cmluZ30gbWFya3VwIFN0cmluZyBvZiBtYXJrdXAuXG4gKiBAcmV0dXJuIHs/c3Ry
aW5nfSBOb2RlIG5hbWUgb2YgdGhlIHN1cHBsaWVkIG1hcmt1cC5cbiAqL1xuZnVuY3Rpb24gZ2V0
Tm9kZU5hbWUobWFya3VwKSB7XG4gIHZhciBub2RlTmFtZU1hdGNoID0gbWFya3VwLm1hdGNoKG5v
ZGVOYW1lUGF0dGVybik7XG4gIHJldHVybiBub2RlTmFtZU1hdGNoICYmIG5vZGVOYW1lTWF0Y2hb
MV0udG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5p
bmcgdGhlIG5vZGVzIHJlbmRlcmVkIGZyb20gdGhlIHN1cHBsaWVkIG1hcmt1cC4gVGhlXG4gKiBv
cHRpb25hbGx5IHN1cHBsaWVkIGBoYW5kbGVTY3JpcHRgIGZ1bmN0aW9uIHdpbGwgYmUgaW52b2tl
ZCBvbmNlIGZvciBlYWNoXG4gKiA8c2NyaXB0PiBlbGVtZW50IHRoYXQgaXMgcmVuZGVyZWQuIElm
IG5vIGBoYW5kbGVTY3JpcHRgIGZ1bmN0aW9uIGlzIHN1cHBsaWVkLFxuICogYW4gZXhjZXB0aW9u
IGlzIHRocm93biBpZiBhbnkgPHNjcmlwdD4gZWxlbWVudHMgYXJlIHJlbmRlcmVkLlxuICpcbiAq
IEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgQSBzdHJpbmcgb2YgdmFsaWQgSFRNTCBtYXJrdXAuXG4g
KiBAcGFyYW0gez9mdW5jdGlvbn0gaGFuZGxlU2NyaXB0IEludm9rZWQgb25jZSBmb3IgZWFjaCBy
ZW5kZXJlZCA8c2NyaXB0Pi5cbiAqIEByZXR1cm4ge2FycmF5PERPTUVsZW1lbnR8RE9NVGV4dE5v
ZGU+fSBBbiBhcnJheSBvZiByZW5kZXJlZCBub2Rlcy5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlTm9k
ZXNGcm9tTWFya3VwKG1hcmt1cCwgaGFuZGxlU2NyaXB0KSB7XG4gIHZhciBub2RlID0gZHVtbXlO
b2RlO1xuICAhISFkdW1teU5vZGUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdjcmVhdGVO
b2Rlc0Zyb21NYXJrdXAgZHVtbXkgbm90IGluaXRpYWxpemVkJykgOiBpbnZhcmlhbnQoZmFsc2Up
IDogdm9pZCAwO1xuICB2YXIgbm9kZU5hbWUgPSBnZXROb2RlTmFtZShtYXJrdXApO1xuXG4gIHZh
ciB3cmFwID0gbm9kZU5hbWUgJiYgZ2V0TWFya3VwV3JhcChub2RlTmFtZSk7XG4gIGlmICh3cmFw
KSB7XG4gICAgbm9kZS5pbm5lckhUTUwgPSB3cmFwWzFdICsgbWFya3VwICsgd3JhcFsyXTtcblxu
ICAgIHZhciB3cmFwRGVwdGggPSB3cmFwWzBdO1xuICAgIHdoaWxlICh3cmFwRGVwdGgtLSkge1xu
ICAgICAgbm9kZSA9IG5vZGUubGFzdENoaWxkO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBub2Rl
LmlubmVySFRNTCA9IG1hcmt1cDtcbiAgfVxuXG4gIHZhciBzY3JpcHRzID0gbm9kZS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgnc2NyaXB0Jyk7XG4gIGlmIChzY3JpcHRzLmxlbmd0aCkge1xuICAgICFo
YW5kbGVTY3JpcHQgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdjcmVhdGVOb2Rlc0Zyb21N
YXJrdXAoLi4uKTogVW5leHBlY3RlZCA8c2NyaXB0PiBlbGVtZW50IHJlbmRlcmVkLicpIDogaW52
YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICBjcmVhdGVBcnJheUZyb21NaXhlZChzY3JpcHRz
KS5mb3JFYWNoKGhhbmRsZVNjcmlwdCk7XG4gIH1cblxuICB2YXIgbm9kZXMgPSBBcnJheS5mcm9t
KG5vZGUuY2hpbGROb2Rlcyk7XG4gIHdoaWxlIChub2RlLmxhc3RDaGlsZCkge1xuICAgIG5vZGUu
cmVtb3ZlQ2hpbGQobm9kZS5sYXN0Q2hpbGQpO1xuICB9XG4gIHJldHVybiBub2Rlcztcbn1cblxu
bW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVOb2Rlc0Zyb21NYXJrdXA7XG5cbi8qKiovIH0pLFxuLyog
MTM1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbnZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDApO1xuXG4vKipcbiAqIENvbnZlcnQgYXJyYXktbGlrZSBvYmplY3RzIHRvIGFycmF5
cy5cbiAqXG4gKiBUaGlzIEFQSSBhc3N1bWVzIHRoZSBjYWxsZXIga25vd3MgdGhlIGNvbnRlbnRz
IG9mIHRoZSBkYXRhIHR5cGUuIEZvciBsZXNzXG4gKiB3ZWxsIGRlZmluZWQgaW5wdXRzIHVzZSBj
cmVhdGVBcnJheUZyb21NaXhlZC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbnxmaWxl
bGlzdH0gb2JqXG4gKiBAcmV0dXJuIHthcnJheX1cbiAqL1xuZnVuY3Rpb24gdG9BcnJheShvYmop
IHtcbiAgdmFyIGxlbmd0aCA9IG9iai5sZW5ndGg7XG5cbiAgLy8gU29tZSBicm93c2VycyBidWls
dGluIG9iamVjdHMgY2FuIHJlcG9ydCB0eXBlb2YgJ2Z1bmN0aW9uJyAoZS5nLiBOb2RlTGlzdFxu
ICAvLyBpbiBvbGQgdmVyc2lvbnMgb2YgU2FmYXJpKS5cbiAgISghQXJyYXkuaXNBcnJheShvYmop
ICYmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24n
KSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBBcnJheS1saWtlIG9iamVj
dCBleHBlY3RlZCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcblxuICAhKHR5cGVvZiBs
ZW5ndGggPT09ICdudW1iZXInKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6
IE9iamVjdCBuZWVkcyBhIGxlbmd0aCBwcm9wZXJ0eScpIDogaW52YXJpYW50KGZhbHNlKSA6IHZv
aWQgMDtcblxuICAhKGxlbmd0aCA9PT0gMCB8fCBsZW5ndGggLSAxIGluIG9iaikgPyAgZmFsc2Ug
PyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBPYmplY3Qgc2hvdWxkIGhhdmUga2V5cyBmb3Ig
aW5kaWNlcycpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcblxuICAhKHR5cGVvZiBvYmou
Y2FsbGVlICE9PSAnZnVuY3Rpb24nKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJy
YXk6IE9iamVjdCBjYW5cXCd0IGJlIGBhcmd1bWVudHNgLiBVc2UgcmVzdCBwYXJhbXMgJyArICco
ZnVuY3Rpb24oLi4uYXJncykge30pIG9yIEFycmF5LmZyb20oKSBpbnN0ZWFkLicpIDogaW52YXJp
YW50KGZhbHNlKSA6IHZvaWQgMDtcblxuICAvLyBPbGQgSUUgZG9lc24ndCBnaXZlIGNvbGxlY3Rp
b25zIGFjY2VzcyB0byBoYXNPd25Qcm9wZXJ0eS4gQXNzdW1lIGlucHV0c1xuICAvLyB3aXRob3V0
IG1ldGhvZCB3aWxsIHRocm93IGR1cmluZyB0aGUgc2xpY2UgY2FsbCBhbmQgc2tpcCBzdHJhaWdo
dCB0byB0aGVcbiAgLy8gZmFsbGJhY2suXG4gIGlmIChvYmouaGFzT3duUHJvcGVydHkpIHtcbiAg
ICB0cnkge1xuICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG9iaik7XG4g
ICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gSUUgPCA5IGRvZXMgbm90IHN1cHBvcnQgQXJyYXkj
c2xpY2Ugb24gY29sbGVjdGlvbnMgb2JqZWN0c1xuICAgIH1cbiAgfVxuXG4gIC8vIEZhbGwgYmFj
ayB0byBjb3B5aW5nIGtleSBieSBrZXkuIFRoaXMgYXNzdW1lcyBhbGwga2V5cyBoYXZlIGEgdmFs
dWUsXG4gIC8vIHNvIHdpbGwgbm90IHByZXNlcnZlIHNwYXJzZWx5IHBvcHVsYXRlZCBpbnB1dHMu
XG4gIHZhciByZXQgPSBBcnJheShsZW5ndGgpO1xuICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgbGVu
Z3RoOyBpaSsrKSB7XG4gICAgcmV0W2lpXSA9IG9ialtpaV07XG4gIH1cbiAgcmV0dXJuIHJldDtc
bn1cblxuLyoqXG4gKiBQZXJmb3JtIGEgaGV1cmlzdGljIHRlc3QgdG8gZGV0ZXJtaW5lIGlmIGFu
IG9iamVjdCBpcyBcImFycmF5LWxpa2VcIi5cbiAqXG4gKiAgIEEgbW9uayBhc2tlZCBKb3NodSwg
YSBaZW4gbWFzdGVyLCBcIkhhcyBhIGRvZyBCdWRkaGEgbmF0dXJlP1wiXG4gKiAgIEpvc2h1IHJl
cGxpZWQ6IFwiTXUuXCJcbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgaWYgaXRzIGFy
Z3VtZW50IGhhcyBcImFycmF5IG5hdHVyZVwiOiBpdCByZXR1cm5zXG4gKiB0cnVlIGlmIHRoZSBh
cmd1bWVudCBpcyBhbiBhY3R1YWwgYXJyYXksIGFuIGBhcmd1bWVudHMnIG9iamVjdCwgb3IgYW5c
biAqIEhUTUxDb2xsZWN0aW9uIChlLmcuIG5vZGUuY2hpbGROb2RlcyBvciBub2RlLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCkpLlxuICpcbiAqIEl0IHdpbGwgcmV0dXJuIGZhbHNlIGZvciBvdGhlciBh
cnJheS1saWtlIG9iamVjdHMgbGlrZSBGaWxlbGlzdC5cbiAqXG4gKiBAcGFyYW0geyp9IG9ialxu
ICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaGFzQXJyYXlOYXR1cmUob2JqKSB7
XG4gIHJldHVybiAoXG4gICAgLy8gbm90IG51bGwvZmFsc2VcbiAgICAhIW9iaiAmJiAoXG4gICAg
Ly8gYXJyYXlzIGFyZSBvYmplY3RzLCBOb2RlTGlzdHMgYXJlIGZ1bmN0aW9ucyBpbiBTYWZhcmlc
biAgICB0eXBlb2Ygb2JqID09ICdvYmplY3QnIHx8IHR5cGVvZiBvYmogPT0gJ2Z1bmN0aW9uJykg
JiZcbiAgICAvLyBxdWFja3MgbGlrZSBhbiBhcnJheVxuICAgICdsZW5ndGgnIGluIG9iaiAmJlxu
ICAgIC8vIG5vdCB3aW5kb3dcbiAgICAhKCdzZXRJbnRlcnZhbCcgaW4gb2JqKSAmJlxuICAgIC8v
IG5vIERPTSBub2RlIHNob3VsZCBiZSBjb25zaWRlcmVkIGFuIGFycmF5LWxpa2VcbiAgICAvLyBh
ICdzZWxlY3QnIGVsZW1lbnQgaGFzICdsZW5ndGgnIGFuZCAnaXRlbScgcHJvcGVydGllcyBvbiBJ
RThcbiAgICB0eXBlb2Ygb2JqLm5vZGVUeXBlICE9ICdudW1iZXInICYmIChcbiAgICAvLyBhIHJl
YWwgYXJyYXlcbiAgICBBcnJheS5pc0FycmF5KG9iaikgfHxcbiAgICAvLyBhcmd1bWVudHNcbiAg
ICAnY2FsbGVlJyBpbiBvYmogfHxcbiAgICAvLyBIVE1MQ29sbGVjdGlvbi9Ob2RlTGlzdFxuICAg
ICdpdGVtJyBpbiBvYmopXG4gICk7XG59XG5cbi8qKlxuICogRW5zdXJlIHRoYXQgdGhlIGFyZ3Vt
ZW50IGlzIGFuIGFycmF5IGJ5IHdyYXBwaW5nIGl0IGluIGFuIGFycmF5IGlmIGl0IGlzIG5vdC5c
biAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSBhcmd1bWVudCBpZiBpdCBpcyBhbHJlYWR5IGFuIGFy
cmF5LlxuICpcbiAqIFRoaXMgaXMgbW9zdGx5IHVzZWZ1bCBpZGlvbWF0aWNhbGx5OlxuICpcbiAq
ICAgdmFyIGNyZWF0ZUFycmF5RnJvbU1peGVkID0gcmVxdWlyZSgnY3JlYXRlQXJyYXlGcm9tTWl4
ZWQnKTtcbiAqXG4gKiAgIGZ1bmN0aW9uIHRha2VzT25lT3JNb3JlVGhpbmdzKHRoaW5ncykge1xu
ICogICAgIHRoaW5ncyA9IGNyZWF0ZUFycmF5RnJvbU1peGVkKHRoaW5ncyk7XG4gKiAgICAgLi4u
XG4gKiAgIH1cbiAqXG4gKiBUaGlzIGFsbG93cyB5b3UgdG8gdHJlYXQgYHRoaW5ncycgYXMgYW4g
YXJyYXksIGJ1dCBhY2NlcHQgc2NhbGFycyBpbiB0aGUgQVBJLlxuICpcbiAqIElmIHlvdSBuZWVk
IHRvIGNvbnZlcnQgYW4gYXJyYXktbGlrZSBvYmplY3QsIGxpa2UgYGFyZ3VtZW50c2AsIGludG8g
YW4gYXJyYXlcbiAqIHVzZSB0b0FycmF5IGluc3RlYWQuXG4gKlxuICogQHBhcmFtIHsqfSBvYmpc
biAqIEByZXR1cm4ge2FycmF5fVxuICovXG5mdW5jdGlvbiBjcmVhdGVBcnJheUZyb21NaXhlZChv
YmopIHtcbiAgaWYgKCFoYXNBcnJheU5hdHVyZShvYmopKSB7XG4gICAgcmV0dXJuIFtvYmpdO1xu
ICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmouc2xpY2Uo
KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdG9BcnJheShvYmopO1xuICB9XG59XG5cbm1vZHVs
ZS5leHBvcnRzID0gY3JlYXRlQXJyYXlGcm9tTWl4ZWQ7XG5cbi8qKiovIH0pLFxuLyogMTM2ICov
XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4g
Ki9cblxuLyplc2xpbnQtZGlzYWJsZSBmYi13d3cvdW5zYWZlLWh0bWwgKi9cblxudmFyIEV4ZWN1
dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblxudmFyIGludmFyaWFu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cbi8qKlxuICogRHVtbXkgY29udGFpbmVyIHVz
ZWQgdG8gZGV0ZWN0IHdoaWNoIHdyYXBzIGFyZSBuZWNlc3NhcnkuXG4gKi9cbnZhciBkdW1teU5v
ZGUgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gPyBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKSA6IG51bGw7XG5cbi8qKlxuICogU29tZSBicm93c2VycyBjYW5ub3QgdXNlIGBp
bm5lckhUTUxgIHRvIHJlbmRlciBjZXJ0YWluIGVsZW1lbnRzIHN0YW5kYWxvbmUsXG4gKiBzbyB3
ZSB3cmFwIHRoZW0sIHJlbmRlciB0aGUgd3JhcHBlZCBub2RlcywgdGhlbiBleHRyYWN0IHRoZSBk
ZXNpcmVkIG5vZGUuXG4gKlxuICogSW4gSUU4LCBjZXJ0YWluIGVsZW1lbnRzIGNhbm5vdCByZW5k
ZXIgYWxvbmUsIHNvIHdyYXAgYWxsIGVsZW1lbnRzICgnKicpLlxuICovXG5cbnZhciBzaG91bGRX
cmFwID0ge307XG5cbnZhciBzZWxlY3RXcmFwID0gWzEsICc8c2VsZWN0IG11bHRpcGxlPVwidHJ1
ZVwiPicsICc8L3NlbGVjdD4nXTtcbnZhciB0YWJsZVdyYXAgPSBbMSwgJzx0YWJsZT4nLCAnPC90
YWJsZT4nXTtcbnZhciB0cldyYXAgPSBbMywgJzx0YWJsZT48dGJvZHk+PHRyPicsICc8L3RyPjwv
dGJvZHk+PC90YWJsZT4nXTtcblxudmFyIHN2Z1dyYXAgPSBbMSwgJzxzdmcgeG1sbnM9XCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPicsICc8L3N2Zz4nXTtcblxudmFyIG1hcmt1cFdyYXAg
PSB7XG4gICcqJzogWzEsICc/PGRpdj4nLCAnPC9kaXY+J10sXG5cbiAgJ2FyZWEnOiBbMSwgJzxt
YXA+JywgJzwvbWFwPiddLFxuICAnY29sJzogWzIsICc8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNv
bGdyb3VwPicsICc8L2NvbGdyb3VwPjwvdGFibGU+J10sXG4gICdsZWdlbmQnOiBbMSwgJzxmaWVs
ZHNldD4nLCAnPC9maWVsZHNldD4nXSxcbiAgJ3BhcmFtJzogWzEsICc8b2JqZWN0PicsICc8L29i
amVjdD4nXSxcbiAgJ3RyJzogWzIsICc8dGFibGU+PHRib2R5PicsICc8L3Rib2R5PjwvdGFibGU+
J10sXG5cbiAgJ29wdGdyb3VwJzogc2VsZWN0V3JhcCxcbiAgJ29wdGlvbic6IHNlbGVjdFdyYXAs
XG5cbiAgJ2NhcHRpb24nOiB0YWJsZVdyYXAsXG4gICdjb2xncm91cCc6IHRhYmxlV3JhcCxcbiAg
J3Rib2R5JzogdGFibGVXcmFwLFxuICAndGZvb3QnOiB0YWJsZVdyYXAsXG4gICd0aGVhZCc6IHRh
YmxlV3JhcCxcblxuICAndGQnOiB0cldyYXAsXG4gICd0aCc6IHRyV3JhcFxufTtcblxuLy8gSW5p
dGlhbGl6ZSB0aGUgU1ZHIGVsZW1lbnRzIHNpbmNlIHdlIGtub3cgdGhleSdsbCBhbHdheXMgbmVl
ZCB0byBiZSB3cmFwcGVkXG4vLyBjb25zaXN0ZW50bHkuIElmIHRoZXkgYXJlIGNyZWF0ZWQgaW5z
aWRlIGEgPGRpdj4gdGhleSB3aWxsIGJlIGluaXRpYWxpemVkIGluXG4vLyB0aGUgd3JvbmcgbmFt
ZXNwYWNlIChhbmQgd2lsbCBub3QgZGlzcGxheSkuXG52YXIgc3ZnRWxlbWVudHMgPSBbJ2NpcmNs
ZScsICdjbGlwUGF0aCcsICdkZWZzJywgJ2VsbGlwc2UnLCAnZycsICdpbWFnZScsICdsaW5lJywg
J2xpbmVhckdyYWRpZW50JywgJ21hc2snLCAncGF0aCcsICdwYXR0ZXJuJywgJ3BvbHlnb24nLCAn
cG9seWxpbmUnLCAncmFkaWFsR3JhZGllbnQnLCAncmVjdCcsICdzdG9wJywgJ3RleHQnLCAndHNw
YW4nXTtcbnN2Z0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG5vZGVOYW1lKSB7XG4gIG1hcmt1
cFdyYXBbbm9kZU5hbWVdID0gc3ZnV3JhcDtcbiAgc2hvdWxkV3JhcFtub2RlTmFtZV0gPSB0cnVl
O1xufSk7XG5cbi8qKlxuICogR2V0cyB0aGUgbWFya3VwIHdyYXAgY29uZmlndXJhdGlvbiBmb3Ig
dGhlIHN1cHBsaWVkIGBub2RlTmFtZWAuXG4gKlxuICogTk9URTogVGhpcyBsYXppbHkgZGV0ZWN0
cyB3aGljaCB3cmFwcyBhcmUgbmVjZXNzYXJ5IGZvciB0aGUgY3VycmVudCBicm93c2VyLlxuICpc
biAqIEBwYXJhbSB7c3RyaW5nfSBub2RlTmFtZSBMb3dlcmNhc2UgYG5vZGVOYW1lYC5cbiAqIEBy
ZXR1cm4gez9hcnJheX0gTWFya3VwIHdyYXAgY29uZmlndXJhdGlvbiwgaWYgYXBwbGljYWJsZS5c
biAqL1xuZnVuY3Rpb24gZ2V0TWFya3VwV3JhcChub2RlTmFtZSkge1xuICAhISFkdW1teU5vZGUg
PyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdNYXJrdXAgd3JhcHBpbmcgbm9kZSBub3QgaW5p
dGlhbGl6ZWQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIGlmICghbWFya3VwV3Jh
cC5oYXNPd25Qcm9wZXJ0eShub2RlTmFtZSkpIHtcbiAgICBub2RlTmFtZSA9ICcqJztcbiAgfVxu
ICBpZiAoIXNob3VsZFdyYXAuaGFzT3duUHJvcGVydHkobm9kZU5hbWUpKSB7XG4gICAgaWYgKG5v
ZGVOYW1lID09PSAnKicpIHtcbiAgICAgIGR1bW15Tm9kZS5pbm5lckhUTUwgPSAnPGxpbmsgLz4n
O1xuICAgIH0gZWxzZSB7XG4gICAgICBkdW1teU5vZGUuaW5uZXJIVE1MID0gJzwnICsgbm9kZU5h
bWUgKyAnPjwvJyArIG5vZGVOYW1lICsgJz4nO1xuICAgIH1cbiAgICBzaG91bGRXcmFwW25vZGVO
YW1lXSA9ICFkdW1teU5vZGUuZmlyc3RDaGlsZDtcbiAgfVxuICByZXR1cm4gc2hvdWxkV3JhcFtu
b2RlTmFtZV0gPyBtYXJrdXBXcmFwW25vZGVOYW1lXSA6IG51bGw7XG59XG5cbm1vZHVsZS5leHBv
cnRzID0gZ2V0TWFya3VwV3JhcDtcblxuLyoqKi8gfSksXG4vKiAxMzcgKi9cbi8qKiovIChmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3Ry
aWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBET01DaGls
ZHJlbk9wZXJhdGlvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KTtcbnZhciBSZWFjdERPTUNv
bXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXG4vKipcbiAqIE9wZXJhdGlv
bnMgdXNlZCB0byBwcm9jZXNzIHVwZGF0ZXMgdG8gRE9NIG5vZGVzLlxuICovXG52YXIgUmVhY3RE
T01JRE9wZXJhdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgY29tcG9uZW50J3MgY2hp
bGRyZW4gYnkgcHJvY2Vzc2luZyBhIHNlcmllcyBvZiB1cGRhdGVzLlxuICAgKlxuICAgKiBAcGFy
YW0ge2FycmF5PG9iamVjdD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMu
XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRh
dGVzOiBmdW5jdGlvbiAocGFyZW50SW5zdCwgdXBkYXRlcykge1xuICAgIHZhciBub2RlID0gUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UocGFyZW50SW5zdCk7XG4gICAg
RE9NQ2hpbGRyZW5PcGVyYXRpb25zLnByb2Nlc3NVcGRhdGVzKG5vZGUsIHVwZGF0ZXMpO1xuICB9
XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NSURPcGVyYXRpb25zO1xuXG4vKioqLyB9
KSxcbi8qIDEzOCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqL1xuXG4vKiBnbG9iYWwgaGFzT3duUHJvcGVydHk6dHJ1ZSAqL1xuXG5cblxudmFyIF9w
cm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKSxcbiAgICBfYXNzaWduID0gX193
ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxudmFyIEF1dG9Gb2N1c1V0aWxzID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxMzkpO1xudmFyIENTU1Byb3BlcnR5T3BlcmF0aW9ucyA9IF9fd2VicGFja19yZXF1
aXJlX18oMTQwKTtcbnZhciBET01MYXp5VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpO1xu
dmFyIERPTU5hbWVzcGFjZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM4KTtcbnZhciBET01Qcm9w
ZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpO1xudmFyIERPTVByb3BlcnR5T3BlcmF0aW9u
cyA9IF9fd2VicGFja19yZXF1aXJlX18oNzApO1xudmFyIEV2ZW50UGx1Z2luSHViID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyMCk7XG52YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IF9fd2VicGFja19y
ZXF1aXJlX18oMzEpO1xudmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IF9fd2VicGFja19y
ZXF1aXJlX18oMjgpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3MgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDU4KTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDQpO1xudmFyIFJlYWN0RE9NSW5wdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1MCk7XG52
YXIgUmVhY3RET01PcHRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1Mik7XG52YXIgUmVhY3RE
T01TZWxlY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcxKTtcbnZhciBSZWFjdERPTVRleHRhcmVh
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTMpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcbnZhciBSZWFjdE11bHRpQ2hpbGQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDE1NCk7XG52YXIgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbiA9IF9f
d2VicGFja19yZXF1aXJlX18oMTYxKTtcblxudmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDYpO1xudmFyIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IF9fd2VicGFj
a19yZXF1aXJlX18oMjcpO1xudmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7
XG52YXIgaXNFdmVudFN1cHBvcnRlZCA9IF9fd2VicGFja19yZXF1aXJlX18oMzUpO1xudmFyIHNo
YWxsb3dFcXVhbCA9IF9fd2VicGFja19yZXF1aXJlX18oNDIpO1xudmFyIGlucHV0VmFsdWVUcmFj
a2luZyA9IF9fd2VicGFja19yZXF1aXJlX18oNjQpO1xudmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9
IF9fd2VicGFja19yZXF1aXJlX18oNDYpO1xudmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEpO1xuXG52YXIgRmxhZ3MgPSBSZWFjdERPTUNvbXBvbmVudEZsYWdzO1xudmFyIGRlbGV0
ZUxpc3RlbmVyID0gRXZlbnRQbHVnaW5IdWIuZGVsZXRlTGlzdGVuZXI7XG52YXIgZ2V0Tm9kZSA9
IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlO1xudmFyIGxpc3RlblRv
ID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmxpc3RlblRvO1xudmFyIHJlZ2lzdHJhdGlvbk5h
bWVNb2R1bGVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcztc
blxuLy8gRm9yIHF1aWNrbHkgbWF0Y2hpbmcgY2hpbGRyZW4gdHlwZSwgdG8gdGVzdCBpZiBjYW4g
YmUgdHJlYXRlZCBhcyBjb250ZW50LlxudmFyIENPTlRFTlRfVFlQRVMgPSB7IHN0cmluZzogdHJ1
ZSwgbnVtYmVyOiB0cnVlIH07XG5cbnZhciBTVFlMRSA9ICdzdHlsZSc7XG52YXIgSFRNTCA9ICdf
X2h0bWwnO1xudmFyIFJFU0VSVkVEX1BST1BTID0ge1xuICBjaGlsZHJlbjogbnVsbCxcbiAgZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUw6IG51bGwsXG4gIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2Fy
bmluZzogbnVsbFxufTtcblxuLy8gTm9kZSB0eXBlIGZvciBkb2N1bWVudCBmcmFnbWVudHMgKE5v
ZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSkuXG52YXIgRE9DX0ZSQUdNRU5UX1RZUEUgPSAxMTtc
blxuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGludGVybmFsSW5zdGFuY2Up
IHtcbiAgaWYgKGludGVybmFsSW5zdGFuY2UpIHtcbiAgICB2YXIgb3duZXIgPSBpbnRlcm5hbElu
c3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXIgfHwgbnVsbDtcbiAgICBpZiAob3duZXIpIHtc
biAgICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgICAgaWYgKG5hbWUpIHtcbiAg
ICAgICAgcmV0dXJuICcgVGhpcyBET00gbm9kZSB3YXMgcmVuZGVyZWQgYnkgYCcgKyBuYW1lICsg
J2AuJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBm
cmllbmRseVN0cmluZ2lmeShvYmopIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7
XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgcmV0dXJuICdbJyArIG9iai5t
YXAoZnJpZW5kbHlTdHJpbmdpZnkpLmpvaW4oJywgJykgKyAnXSc7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIHZhciBwYWlycyA9IFtdO1xuICAgICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAg
ICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xu
ICAgICAgICAgIHZhciBrZXlFc2NhcGVkID0gL15bYS16JF9dW1xcdyRfXSokL2kudGVzdChrZXkp
ID8ga2V5IDogSlNPTi5zdHJpbmdpZnkoa2V5KTtcbiAgICAgICAgICBwYWlycy5wdXNoKGtleUVz
Y2FwZWQgKyAnOiAnICsgZnJpZW5kbHlTdHJpbmdpZnkob2JqW2tleV0pKTtcbiAgICAgICAgfVxu
ICAgICAgfVxuICAgICAgcmV0dXJuICd7JyArIHBhaXJzLmpvaW4oJywgJykgKyAnfSc7XG4gICAg
fVxuICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIEpT
T04uc3RyaW5naWZ5KG9iaik7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9u
Jykge1xuICAgIHJldHVybiAnW2Z1bmN0aW9uIG9iamVjdF0nO1xuICB9XG4gIC8vIERpZmZlcnMg
ZnJvbSBKU09OLnN0cmluZ2lmeSBpbiB0aGF0IHVuZGVmaW5lZCBiZWNhdXNlIHVuZGVmaW5lZCBh
bmQgdGhhdFxuICAvLyBpbmYgYW5kIG5hbiBkb24ndCBiZWNvbWUgbnVsbFxuICByZXR1cm4gU3Ry
aW5nKG9iaik7XG59XG5cbnZhciBzdHlsZU11dGF0aW9uV2FybmluZyA9IHt9O1xuXG5mdW5jdGlv
biBjaGVja0FuZFdhcm5Gb3JNdXRhdGVkU3R5bGUoc3R5bGUxLCBzdHlsZTIsIGNvbXBvbmVudCkg
e1xuICBpZiAoc3R5bGUxID09IG51bGwgfHwgc3R5bGUyID09IG51bGwpIHtcbiAgICByZXR1cm47
XG4gIH1cbiAgaWYgKHNoYWxsb3dFcXVhbChzdHlsZTEsIHN0eWxlMikpIHtcbiAgICByZXR1cm47
XG4gIH1cblxuICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudC5fdGFnO1xuICB2YXIgb3du
ZXIgPSBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgdmFyIG93bmVyTmFtZTtc
biAgaWYgKG93bmVyKSB7XG4gICAgb3duZXJOYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICB9XG5c
biAgdmFyIGhhc2ggPSBvd25lck5hbWUgKyAnfCcgKyBjb21wb25lbnROYW1lO1xuXG4gIGlmIChz
dHlsZU11dGF0aW9uV2FybmluZy5oYXNPd25Qcm9wZXJ0eShoYXNoKSkge1xuICAgIHJldHVybjtc
biAgfVxuXG4gIHN0eWxlTXV0YXRpb25XYXJuaW5nW2hhc2hdID0gdHJ1ZTtcblxuICAgZmFsc2Ug
PyB3YXJuaW5nKGZhbHNlLCAnYCVzYCB3YXMgcGFzc2VkIGEgc3R5bGUgb2JqZWN0IHRoYXQgaGFz
IHByZXZpb3VzbHkgYmVlbiBtdXRhdGVkLiAnICsgJ011dGF0aW5nIGBzdHlsZWAgaXMgZGVwcmVj
YXRlZC4gQ29uc2lkZXIgY2xvbmluZyBpdCBiZWZvcmVoYW5kLiBDaGVjayAnICsgJ3RoZSBgcmVu
ZGVyYCAlcy4gUHJldmlvdXMgc3R5bGU6ICVzLiBNdXRhdGVkIHN0eWxlOiAlcy4nLCBjb21wb25l
bnROYW1lLCBvd25lciA/ICdvZiBgJyArIG93bmVyTmFtZSArICdgJyA6ICd1c2luZyA8JyArIGNv
bXBvbmVudE5hbWUgKyAnPicsIGZyaWVuZGx5U3RyaW5naWZ5KHN0eWxlMSksIGZyaWVuZGx5U3Ry
aW5naWZ5KHN0eWxlMikpIDogdm9pZCAwO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBj
b21wb25lbnRcbiAqIEBwYXJhbSB7P29iamVjdH0gcHJvcHNcbiAqL1xuZnVuY3Rpb24gYXNzZXJ0
VmFsaWRQcm9wcyhjb21wb25lbnQsIHByb3BzKSB7XG4gIGlmICghcHJvcHMpIHtcbiAgICByZXR1
cm47XG4gIH1cbiAgLy8gTm90ZSB0aGUgdXNlIG9mIGA9PWAgd2hpY2ggY2hlY2tzIGZvciBudWxs
IG9yIHVuZGVmaW5lZC5cbiAgaWYgKHZvaWRFbGVtZW50VGFnc1tjb21wb25lbnQuX3RhZ10pIHtc
biAgICAhKHByb3BzLmNoaWxkcmVuID09IG51bGwgJiYgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5l
ckhUTUwgPT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICclcyBpcyBhIHZvaWQg
ZWxlbWVudCB0YWcgYW5kIG11c3QgbmVpdGhlciBoYXZlIGBjaGlsZHJlbmAgbm9yIHVzZSBgZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUxgLiVzJywgY29tcG9uZW50Ll90YWcsIGNvbXBvbmVudC5fY3Vy
cmVudEVsZW1lbnQuX293bmVyID8gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAnICsgY29t
cG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpICsgJy4nIDogJycpIDogX3By
b2RJbnZhcmlhbnQoJzEzNycsIGNvbXBvbmVudC5fdGFnLCBjb21wb25lbnQuX2N1cnJlbnRFbGVt
ZW50Ll9vd25lciA/ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgJyArIGNvbXBvbmVudC5f
Y3VycmVudEVsZW1lbnQuX293bmVyLmdldE5hbWUoKSArICcuJyA6ICcnKSA6IHZvaWQgMDtcbiAg
fVxuICBpZiAocHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgIT0gbnVsbCkge1xuICAgICEo
cHJvcHMuY2hpbGRyZW4gPT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW4g
b25seSBzZXQgb25lIG9mIGBjaGlsZHJlbmAgb3IgYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJI
VE1MYC4nKSA6IF9wcm9kSW52YXJpYW50KCc2MCcpIDogdm9pZCAwO1xuICAgICEodHlwZW9mIHBy
b3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09PSAnb2JqZWN0JyAmJiBIVE1MIGluIHByb3Bz
LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2Bw
cm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAgbXVzdCBiZSBpbiB0aGUgZm9ybSBge19faHRt
bDogLi4ufWAuIFBsZWFzZSB2aXNpdCBodHRwczovL2ZiLm1lL3JlYWN0LWludmFyaWFudC1kYW5n
ZXJvdXNseS1zZXQtaW5uZXItaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKSA6IF9wcm9kSW52
YXJpYW50KCc2MScpIDogdm9pZCAwO1xuICB9XG4gIGlmIChmYWxzZSkge1xuICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLmlubmVySFRNTCA9
PSBudWxsLCAnRGlyZWN0bHkgc2V0dGluZyBwcm9wZXJ0eSBgaW5uZXJIVE1MYCBpcyBub3QgcGVy
bWl0dGVkLiAnICsgJ0ZvciBtb3JlIGluZm9ybWF0aW9uLCBsb29rdXAgZG9jdW1lbnRhdGlvbiBv
biBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLicpIDogdm9pZCAwO1xuICAgIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLnN1cHByZXNzQ29udGVu
dEVkaXRhYmxlV2FybmluZyB8fCAhcHJvcHMuY29udGVudEVkaXRhYmxlIHx8IHByb3BzLmNoaWxk
cmVuID09IG51bGwsICdBIGNvbXBvbmVudCBpcyBgY29udGVudEVkaXRhYmxlYCBhbmQgY29udGFp
bnMgYGNoaWxkcmVuYCBtYW5hZ2VkIGJ5ICcgKyAnUmVhY3QuIEl0IGlzIG5vdyB5b3VyIHJlc3Bv
bnNpYmlsaXR5IHRvIGd1YXJhbnRlZSB0aGF0IG5vbmUgb2YgJyArICd0aG9zZSBub2RlcyBhcmUg
dW5leHBlY3RlZGx5IG1vZGlmaWVkIG9yIGR1cGxpY2F0ZWQuIFRoaXMgaXMgJyArICdwcm9iYWJs
eSBub3QgaW50ZW50aW9uYWwuJykgOiB2b2lkIDA7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMub25Gb2N1c0luID09IG51bGwgJiYgcHJv
cHMub25Gb2N1c091dCA9PSBudWxsLCAnUmVhY3QgdXNlcyBvbkZvY3VzIGFuZCBvbkJsdXIgaW5z
dGVhZCBvZiBvbkZvY3VzSW4gYW5kIG9uRm9jdXNPdXQuICcgKyAnQWxsIFJlYWN0IGV2ZW50cyBh
cmUgbm9ybWFsaXplZCB0byBidWJibGUsIHNvIG9uRm9jdXNJbiBhbmQgb25Gb2N1c091dCAnICsg
J2FyZSBub3QgbmVlZGVkL3N1cHBvcnRlZCBieSBSZWFjdC4nKSA6IHZvaWQgMDtcbiAgfVxuICAh
KHByb3BzLnN0eWxlID09IG51bGwgfHwgdHlwZW9mIHByb3BzLnN0eWxlID09PSAnb2JqZWN0Jykg
PyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdUaGUgYHN0eWxlYCBwcm9wIGV4cGVjdHMgYSBt
YXBwaW5nIGZyb20gc3R5bGUgcHJvcGVydGllcyB0byB2YWx1ZXMsIG5vdCBhIHN0cmluZy4gRm9y
IGV4YW1wbGUsIHN0eWxlPXt7bWFyZ2luUmlnaHQ6IHNwYWNpbmcgKyBcXCdlbVxcJ319IHdoZW4g
dXNpbmcgSlNYLiVzJywgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGNvbXBvbmVudCkpIDog
X3Byb2RJbnZhcmlhbnQoJzYyJywgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGNvbXBvbmVu
dCkpIDogdm9pZCAwO1xufVxuXG5mdW5jdGlvbiBlbnF1ZXVlUHV0TGlzdGVuZXIoaW5zdCwgcmVn
aXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIsIHRyYW5zYWN0aW9uKSB7XG4gIGlmICh0cmFuc2FjdGlv
biBpbnN0YW5jZW9mIFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24pIHtcbiAgICByZXR1
cm47XG4gIH1cbiAgaWYgKGZhbHNlKSB7XG4gICAgLy8gSUU4IGhhcyBubyBBUEkgZm9yIGV2ZW50
IGNhcHR1cmluZyBhbmQgdGhlIGBvblNjcm9sbGAgZXZlbnQgZG9lc24ndFxuICAgIC8vIGJ1YmJs
ZS5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhy
ZWdpc3RyYXRpb25OYW1lICE9PSAnb25TY3JvbGwnIHx8IGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9s
bCcsIHRydWUpLCBcIlRoaXMgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgdGhlIGBvblNjcm9sbGAg
ZXZlbnRcIikgOiB2b2lkIDA7XG4gIH1cbiAgdmFyIGNvbnRhaW5lckluZm8gPSBpbnN0Ll9ob3N0
Q29udGFpbmVySW5mbztcbiAgdmFyIGlzRG9jdW1lbnRGcmFnbWVudCA9IGNvbnRhaW5lckluZm8u
X25vZGUgJiYgY29udGFpbmVySW5mby5fbm9kZS5ub2RlVHlwZSA9PT0gRE9DX0ZSQUdNRU5UX1RZ
UEU7XG4gIHZhciBkb2MgPSBpc0RvY3VtZW50RnJhZ21lbnQgPyBjb250YWluZXJJbmZvLl9ub2Rl
IDogY29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDtcbiAgbGlzdGVuVG8ocmVnaXN0cmF0aW9u
TmFtZSwgZG9jKTtcbiAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShw
dXRMaXN0ZW5lciwge1xuICAgIGluc3Q6IGluc3QsXG4gICAgcmVnaXN0cmF0aW9uTmFtZTogcmVn
aXN0cmF0aW9uTmFtZSxcbiAgICBsaXN0ZW5lcjogbGlzdGVuZXJcbiAgfSk7XG59XG5cbmZ1bmN0
aW9uIHB1dExpc3RlbmVyKCkge1xuICB2YXIgbGlzdGVuZXJUb1B1dCA9IHRoaXM7XG4gIEV2ZW50
UGx1Z2luSHViLnB1dExpc3RlbmVyKGxpc3RlbmVyVG9QdXQuaW5zdCwgbGlzdGVuZXJUb1B1dC5y
ZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lclRvUHV0Lmxpc3RlbmVyKTtcbn1cblxuZnVuY3Rpb24g
aW5wdXRQb3N0TW91bnQoKSB7XG4gIHZhciBpbnN0ID0gdGhpcztcbiAgUmVhY3RET01JbnB1dC5w
b3N0TW91bnRXcmFwcGVyKGluc3QpO1xufVxuXG5mdW5jdGlvbiB0ZXh0YXJlYVBvc3RNb3VudCgp
IHtcbiAgdmFyIGluc3QgPSB0aGlzO1xuICBSZWFjdERPTVRleHRhcmVhLnBvc3RNb3VudFdyYXBw
ZXIoaW5zdCk7XG59XG5cbmZ1bmN0aW9uIG9wdGlvblBvc3RNb3VudCgpIHtcbiAgdmFyIGluc3Qg
PSB0aGlzO1xuICBSZWFjdERPTU9wdGlvbi5wb3N0TW91bnRXcmFwcGVyKGluc3QpO1xufVxuXG52
YXIgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYgPSBlbXB0eUZ1bmN0aW9uO1xuaWYgKGZh
bHNlKSB7XG4gIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2ID0gZnVuY3Rpb24gKGNvbnRl
bnQpIHtcbiAgICB2YXIgaGFzRXhpc3RpbmdDb250ZW50ID0gdGhpcy5fY29udGVudERlYnVnSUQg
IT0gbnVsbDtcbiAgICB2YXIgZGVidWdJRCA9IHRoaXMuX2RlYnVnSUQ7XG4gICAgLy8gVGhpcyBJ
RCByZXByZXNlbnRzIHRoZSBpbmxpbmVkIGNoaWxkIHRoYXQgaGFzIG5vIGJhY2tpbmcgaW5zdGFu
Y2U6XG4gICAgdmFyIGNvbnRlbnREZWJ1Z0lEID0gLWRlYnVnSUQ7XG5cbiAgICBpZiAoY29udGVu
dCA9PSBudWxsKSB7XG4gICAgICBpZiAoaGFzRXhpc3RpbmdDb250ZW50KSB7XG4gICAgICAgIFJl
YWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVubW91bnRDb21wb25lbnQodGhpcy5fY29u
dGVudERlYnVnSUQpO1xuICAgICAgfVxuICAgICAgdGhpcy5fY29udGVudERlYnVnSUQgPSBudWxs
O1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhbGlkYXRlRE9NTmVzdGluZyhudWxsLCBT
dHJpbmcoY29udGVudCksIHRoaXMsIHRoaXMuX2FuY2VzdG9ySW5mbyk7XG4gICAgdGhpcy5fY29u
dGVudERlYnVnSUQgPSBjb250ZW50RGVidWdJRDtcbiAgICBpZiAoaGFzRXhpc3RpbmdDb250ZW50
KSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVcGRhdGVD
b21wb25lbnQoY29udGVudERlYnVnSUQsIGNvbnRlbnQpO1xuICAgICAgUmVhY3RJbnN0cnVtZW50
YXRpb24uZGVidWdUb29sLm9uVXBkYXRlQ29tcG9uZW50KGNvbnRlbnREZWJ1Z0lEKTtcbiAgICB9
IGVsc2Uge1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVmb3JlTW91
bnRDb21wb25lbnQoY29udGVudERlYnVnSUQsIGNvbnRlbnQsIGRlYnVnSUQpO1xuICAgICAgUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uTW91bnRDb21wb25lbnQoY29udGVudERlYnVn
SUQpO1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4o
ZGVidWdJRCwgW2NvbnRlbnREZWJ1Z0lEXSk7XG4gICAgfVxuICB9O1xufVxuXG4vLyBUaGVyZSBh
cmUgc28gbWFueSBtZWRpYSBldmVudHMsIGl0IG1ha2VzIHNlbnNlIHRvIGp1c3Rcbi8vIG1haW50
YWluIGEgbGlzdCByYXRoZXIgdGhhbiBjcmVhdGUgYSBgdHJhcEJ1YmJsZWRFdmVudGAgZm9yIGVh
Y2hcbnZhciBtZWRpYUV2ZW50cyA9IHtcbiAgdG9wQWJvcnQ6ICdhYm9ydCcsXG4gIHRvcENhblBs
YXk6ICdjYW5wbGF5JyxcbiAgdG9wQ2FuUGxheVRocm91Z2g6ICdjYW5wbGF5dGhyb3VnaCcsXG4g
IHRvcER1cmF0aW9uQ2hhbmdlOiAnZHVyYXRpb25jaGFuZ2UnLFxuICB0b3BFbXB0aWVkOiAnZW1w
dGllZCcsXG4gIHRvcEVuY3J5cHRlZDogJ2VuY3J5cHRlZCcsXG4gIHRvcEVuZGVkOiAnZW5kZWQn
LFxuICB0b3BFcnJvcjogJ2Vycm9yJyxcbiAgdG9wTG9hZGVkRGF0YTogJ2xvYWRlZGRhdGEnLFxu
ICB0b3BMb2FkZWRNZXRhZGF0YTogJ2xvYWRlZG1ldGFkYXRhJyxcbiAgdG9wTG9hZFN0YXJ0OiAn
bG9hZHN0YXJ0JyxcbiAgdG9wUGF1c2U6ICdwYXVzZScsXG4gIHRvcFBsYXk6ICdwbGF5JyxcbiAg
dG9wUGxheWluZzogJ3BsYXlpbmcnLFxuICB0b3BQcm9ncmVzczogJ3Byb2dyZXNzJyxcbiAgdG9w
UmF0ZUNoYW5nZTogJ3JhdGVjaGFuZ2UnLFxuICB0b3BTZWVrZWQ6ICdzZWVrZWQnLFxuICB0b3BT
ZWVraW5nOiAnc2Vla2luZycsXG4gIHRvcFN0YWxsZWQ6ICdzdGFsbGVkJyxcbiAgdG9wU3VzcGVu
ZDogJ3N1c3BlbmQnLFxuICB0b3BUaW1lVXBkYXRlOiAndGltZXVwZGF0ZScsXG4gIHRvcFZvbHVt
ZUNoYW5nZTogJ3ZvbHVtZWNoYW5nZScsXG4gIHRvcFdhaXRpbmc6ICd3YWl0aW5nJ1xufTtcblxu
ZnVuY3Rpb24gdHJhY2tJbnB1dFZhbHVlKCkge1xuICBpbnB1dFZhbHVlVHJhY2tpbmcudHJhY2so
dGhpcyk7XG59XG5cbmZ1bmN0aW9uIHRyYXBCdWJibGVkRXZlbnRzTG9jYWwoKSB7XG4gIHZhciBp
bnN0ID0gdGhpcztcbiAgLy8gSWYgYSBjb21wb25lbnQgcmVuZGVycyB0byBudWxsIG9yIGlmIGFu
b3RoZXIgY29tcG9uZW50IGZhdGFscyBhbmQgY2F1c2VzXG4gIC8vIHRoZSBzdGF0ZSBvZiB0aGUg
dHJlZSB0byBiZSBjb3JydXB0ZWQsIGBub2RlYCBoZXJlIGNhbiBiZSBudWxsLlxuICAhaW5zdC5f
cm9vdE5vZGVJRCA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ011c3QgYmUgbW91bnRlZCB0
byB0cmFwIGV2ZW50cycpIDogX3Byb2RJbnZhcmlhbnQoJzYzJykgOiB2b2lkIDA7XG4gIHZhciBu
b2RlID0gZ2V0Tm9kZShpbnN0KTtcbiAgIW5vZGUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2Us
ICd0cmFwQnViYmxlZEV2ZW50KC4uLik6IFJlcXVpcmVzIG5vZGUgdG8gYmUgcmVuZGVyZWQuJykg
OiBfcHJvZEludmFyaWFudCgnNjQnKSA6IHZvaWQgMDtcblxuICBzd2l0Y2ggKGluc3QuX3RhZykg
e1xuICAgIGNhc2UgJ2lmcmFtZSc6XG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIGluc3QuX3dy
YXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJi
bGVkRXZlbnQoJ3RvcExvYWQnLCAnbG9hZCcsIG5vZGUpXTtcbiAgICAgIGJyZWFrO1xuICAgIGNh
c2UgJ3ZpZGVvJzpcbiAgICBjYXNlICdhdWRpbyc6XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUu
bGlzdGVuZXJzID0gW107XG4gICAgICAvLyBDcmVhdGUgbGlzdGVuZXIgZm9yIGVhY2ggbWVkaWEg
ZXZlbnRcbiAgICAgIGZvciAodmFyIGV2ZW50IGluIG1lZGlhRXZlbnRzKSB7XG4gICAgICAgIGlm
IChtZWRpYUV2ZW50cy5oYXNPd25Qcm9wZXJ0eShldmVudCkpIHtcbiAgICAgICAgICBpbnN0Ll93
cmFwcGVyU3RhdGUubGlzdGVuZXJzLnB1c2goUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBC
dWJibGVkRXZlbnQoZXZlbnQsIG1lZGlhRXZlbnRzW2V2ZW50XSwgbm9kZSkpO1xuICAgICAgICB9
XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdzb3VyY2UnOlxuICAgICAgaW5zdC5f
d3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1
YmJsZWRFdmVudCgndG9wRXJyb3InLCAnZXJyb3InLCBub2RlKV07XG4gICAgICBicmVhaztcbiAg
ICBjYXNlICdpbWcnOlxuICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtSZWFj
dEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wRXJyb3InLCAnZXJyb3In
LCBub2RlKSwgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcExv
YWQnLCAnbG9hZCcsIG5vZGUpXTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Zvcm0nOlxuICAg
ICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wUmVzZXQnLCAncmVzZXQnLCBub2RlKSwgUmVhY3RCcm93
c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFN1Ym1pdCcsICdzdWJtaXQnLCBu
b2RlKV07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdpbnB1dCc6XG4gICAgY2FzZSAnc2VsZWN0
JzpcbiAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVu
ZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BJbnZh
bGlkJywgJ2ludmFsaWQnLCBub2RlKV07XG4gICAgICBicmVhaztcbiAgfVxufVxuXG5mdW5jdGlv
biBwb3N0VXBkYXRlU2VsZWN0V3JhcHBlcigpIHtcbiAgUmVhY3RET01TZWxlY3QucG9zdFVwZGF0
ZVdyYXBwZXIodGhpcyk7XG59XG5cbi8vIEZvciBIVE1MLCBjZXJ0YWluIHRhZ3Mgc2hvdWxkIG9t
aXQgdGhlaXIgY2xvc2UgdGFnLiBXZSBrZWVwIGEgd2hpdGVsaXN0IGZvclxuLy8gdGhvc2Ugc3Bl
Y2lhbC1jYXNlIHRhZ3MuXG5cbnZhciBvbWl0dGVkQ2xvc2VUYWdzID0ge1xuICBhcmVhOiB0cnVl
LFxuICBiYXNlOiB0cnVlLFxuICBicjogdHJ1ZSxcbiAgY29sOiB0cnVlLFxuICBlbWJlZDogdHJ1
ZSxcbiAgaHI6IHRydWUsXG4gIGltZzogdHJ1ZSxcbiAgaW5wdXQ6IHRydWUsXG4gIGtleWdlbjog
dHJ1ZSxcbiAgbGluazogdHJ1ZSxcbiAgbWV0YTogdHJ1ZSxcbiAgcGFyYW06IHRydWUsXG4gIHNv
dXJjZTogdHJ1ZSxcbiAgdHJhY2s6IHRydWUsXG4gIHdicjogdHJ1ZVxuICAvLyBOT1RFOiBtZW51
aXRlbSdzIGNsb3NlIHRhZyBzaG91bGQgYmUgb21pdHRlZCwgYnV0IHRoYXQgY2F1c2VzIHByb2Js
ZW1zLlxufTtcblxudmFyIG5ld2xpbmVFYXRpbmdUYWdzID0ge1xuICBsaXN0aW5nOiB0cnVlLFxu
ICBwcmU6IHRydWUsXG4gIHRleHRhcmVhOiB0cnVlXG59O1xuXG4vLyBGb3IgSFRNTCwgY2VydGFp
biB0YWdzIGNhbm5vdCBoYXZlIGNoaWxkcmVuLiBUaGlzIGhhcyB0aGUgc2FtZSBwdXJwb3NlIGFz
XG4vLyBgb21pdHRlZENsb3NlVGFnc2AgZXhjZXB0IHRoYXQgYG1lbnVpdGVtYCBzaG91bGQgc3Rp
bGwgaGF2ZSBpdHMgY2xvc2luZyB0YWcuXG5cbnZhciB2b2lkRWxlbWVudFRhZ3MgPSBfYXNzaWdu
KHtcbiAgbWVudWl0ZW06IHRydWVcbn0sIG9taXR0ZWRDbG9zZVRhZ3MpO1xuXG4vLyBXZSBhY2Nl
cHQgYW55IHRhZyB0byBiZSByZW5kZXJlZCBidXQgc2luY2UgdGhpcyBnZXRzIGluamVjdGVkIGlu
dG8gYXJiaXRyYXJ5XG4vLyBIVE1MLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGl0J3MgYSBz
YWZlIHRhZy5cbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwvI05ULU5hbWVcblxudmFy
IFZBTElEX1RBR19SRUdFWCA9IC9eW2EtekEtWl1bYS16QS1aOl9cXC5cXC1cXGRdKiQvOyAvLyBT
aW1wbGlmaWVkIHN1YnNldFxudmFyIHZhbGlkYXRlZFRhZ0NhY2hlID0ge307XG52YXIgaGFzT3du
UHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gdmFsaWRhdGVEYW5nZXJv
dXNUYWcodGFnKSB7XG4gIGlmICghaGFzT3duUHJvcGVydHkuY2FsbCh2YWxpZGF0ZWRUYWdDYWNo
ZSwgdGFnKSkge1xuICAgICFWQUxJRF9UQUdfUkVHRVgudGVzdCh0YWcpID8gIGZhbHNlID8gaW52
YXJpYW50KGZhbHNlLCAnSW52YWxpZCB0YWc6ICVzJywgdGFnKSA6IF9wcm9kSW52YXJpYW50KCc2
NScsIHRhZykgOiB2b2lkIDA7XG4gICAgdmFsaWRhdGVkVGFnQ2FjaGVbdGFnXSA9IHRydWU7XG4g
IH1cbn1cblxuZnVuY3Rpb24gaXNDdXN0b21Db21wb25lbnQodGFnTmFtZSwgcHJvcHMpIHtcbiAg
cmV0dXJuIHRhZ05hbWUuaW5kZXhPZignLScpID49IDAgfHwgcHJvcHMuaXMgIT0gbnVsbDtcbn1c
blxudmFyIGdsb2JhbElkQ291bnRlciA9IDE7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBSZWFj
dCBjbGFzcyB0aGF0IGlzIGlkZW1wb3RlbnQgYW5kIGNhcGFibGUgb2YgY29udGFpbmluZyBvdGhl
clxuICogUmVhY3QgY29tcG9uZW50cy4gSXQgYWNjZXB0cyBldmVudCBsaXN0ZW5lcnMgYW5kIERP
TSBwcm9wZXJ0aWVzIHRoYXQgYXJlXG4gKiB2YWxpZCBhY2NvcmRpbmcgdG8gYERPTVByb3BlcnR5
YC5cbiAqXG4gKiAgLSBFdmVudCBsaXN0ZW5lcnM6IGBvbkNsaWNrYCwgYG9uTW91c2VEb3duYCwg
ZXRjLlxuICogIC0gRE9NIHByb3BlcnRpZXM6IGBjbGFzc05hbWVgLCBgbmFtZWAsIGB0aXRsZWAs
IGV0Yy5cbiAqXG4gKiBUaGUgYHN0eWxlYCBwcm9wZXJ0eSBmdW5jdGlvbnMgZGlmZmVyZW50bHkg
ZnJvbSB0aGUgRE9NIEFQSS4gSXQgYWNjZXB0cyBhblxuICogb2JqZWN0IG1hcHBpbmcgb2Ygc3R5
bGUgcHJvcGVydGllcyB0byB2YWx1ZXMuXG4gKlxuICogQGNvbnN0cnVjdG9yIFJlYWN0RE9NQ29t
cG9uZW50XG4gKiBAZXh0ZW5kcyBSZWFjdE11bHRpQ2hpbGRcbiAqL1xuZnVuY3Rpb24gUmVhY3RE
T01Db21wb25lbnQoZWxlbWVudCkge1xuICB2YXIgdGFnID0gZWxlbWVudC50eXBlO1xuICB2YWxp
ZGF0ZURhbmdlcm91c1RhZyh0YWcpO1xuICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7
XG4gIHRoaXMuX3RhZyA9IHRhZy50b0xvd2VyQ2FzZSgpO1xuICB0aGlzLl9uYW1lc3BhY2VVUkkg
PSBudWxsO1xuICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gbnVsbDtcbiAgdGhpcy5fcHJldmlv
dXNTdHlsZSA9IG51bGw7XG4gIHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcbiAgdGhp
cy5faG9zdE5vZGUgPSBudWxsO1xuICB0aGlzLl9ob3N0UGFyZW50ID0gbnVsbDtcbiAgdGhpcy5f
cm9vdE5vZGVJRCA9IDA7XG4gIHRoaXMuX2RvbUlEID0gMDtcbiAgdGhpcy5faG9zdENvbnRhaW5l
ckluZm8gPSBudWxsO1xuICB0aGlzLl93cmFwcGVyU3RhdGUgPSBudWxsO1xuICB0aGlzLl90b3BM
ZXZlbFdyYXBwZXIgPSBudWxsO1xuICB0aGlzLl9mbGFncyA9IDA7XG4gIGlmIChmYWxzZSkge1xu
ICAgIHRoaXMuX2FuY2VzdG9ySW5mbyA9IG51bGw7XG4gICAgc2V0QW5kVmFsaWRhdGVDb250ZW50
Q2hpbGREZXYuY2FsbCh0aGlzLCBudWxsKTtcbiAgfVxufVxuXG5SZWFjdERPTUNvbXBvbmVudC5k
aXNwbGF5TmFtZSA9ICdSZWFjdERPTUNvbXBvbmVudCc7XG5cblJlYWN0RE9NQ29tcG9uZW50Lk1p
eGluID0ge1xuICAvKipcbiAgICogR2VuZXJhdGVzIHJvb3QgdGFnIG1hcmt1cCB0aGVuIHJlY3Vy
c2VzLiBUaGlzIG1ldGhvZCBoYXMgc2lkZSBlZmZlY3RzIGFuZFxuICAgKiBpcyBub3QgaWRlbXBv
dGVudC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxu
ICAgKiBAcGFyYW0gez9SZWFjdERPTUNvbXBvbmVudH0gdGhlIHBhcmVudCBjb21wb25lbnQgaW5z
dGFuY2VcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBpbmZvIGFib3V0IHRoZSBob3N0IGNvbnRhaW5l
clxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRo
ZSBjb21wdXRlZCBtYXJrdXAuXG4gICAqL1xuICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHRy
YW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCkge1xuICAg
IHRoaXMuX3Jvb3ROb2RlSUQgPSBnbG9iYWxJZENvdW50ZXIrKztcbiAgICB0aGlzLl9kb21JRCA9
IGhvc3RDb250YWluZXJJbmZvLl9pZENvdW50ZXIrKztcbiAgICB0aGlzLl9ob3N0UGFyZW50ID0g
aG9zdFBhcmVudDtcbiAgICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IGhvc3RDb250YWluZXJJ
bmZvO1xuXG4gICAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAg
ICBzd2l0Y2ggKHRoaXMuX3RhZykge1xuICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgY2FzZSAn
Zm9ybSc6XG4gICAgICBjYXNlICdpZnJhbWUnOlxuICAgICAgY2FzZSAnaW1nJzpcbiAgICAgIGNh
c2UgJ2xpbmsnOlxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIGNhc2UgJ3NvdXJjZSc6XG4g
ICAgICBjYXNlICd2aWRlbyc6XG4gICAgICAgIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IHtcbiAgICAg
ICAgICBsaXN0ZW5lcnM6IG51bGxcbiAgICAgICAgfTtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0
UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFwQnViYmxlZEV2ZW50c0xvY2FsLCB0aGlzKTtc
biAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgIFJlYWN0RE9NSW5w
dXQubW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50KTtcbiAgICAgICAgcHJvcHMg
PSBSZWFjdERPTUlucHV0LmdldEhvc3RQcm9wcyh0aGlzLCBwcm9wcyk7XG4gICAgICAgIHRyYW5z
YWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhY2tJbnB1dFZhbHVlLCB0aGlz
KTtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFw
QnViYmxlZEV2ZW50c0xvY2FsLCB0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdv
cHRpb24nOlxuICAgICAgICBSZWFjdERPTU9wdGlvbi5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMs
IGhvc3RQYXJlbnQpO1xuICAgICAgICBwcm9wcyA9IFJlYWN0RE9NT3B0aW9uLmdldEhvc3RQcm9w
cyh0aGlzLCBwcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2VsZWN0JzpcbiAg
ICAgICAgUmVhY3RET01TZWxlY3QubW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50
KTtcbiAgICAgICAgcHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXRIb3N0UHJvcHModGhpcywgcHJv
cHMpO1xuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRy
YXBCdWJibGVkRXZlbnRzTG9jYWwsIHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ug
J3RleHRhcmVhJzpcbiAgICAgICAgUmVhY3RET01UZXh0YXJlYS5tb3VudFdyYXBwZXIodGhpcywg
cHJvcHMsIGhvc3RQYXJlbnQpO1xuICAgICAgICBwcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0
SG9zdFByb3BzKHRoaXMsIHByb3BzKTtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3Vu
dFJlYWR5KCkuZW5xdWV1ZSh0cmFja0lucHV0VmFsdWUsIHRoaXMpO1xuICAgICAgICB0cmFuc2Fj
dGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZlbnRzTG9jYWws
IHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBhc3NlcnRWYWxpZFByb3BzKHRo
aXMsIHByb3BzKTtcblxuICAgIC8vIFdlIGNyZWF0ZSB0YWdzIGluIHRoZSBuYW1lc3BhY2Ugb2Yg
dGhlaXIgcGFyZW50IGNvbnRhaW5lciwgZXhjZXB0IEhUTUxcbiAgICAvLyB0YWdzIGdldCBubyBu
YW1lc3BhY2UuXG4gICAgdmFyIG5hbWVzcGFjZVVSSTtcbiAgICB2YXIgcGFyZW50VGFnO1xuICAg
IGlmIChob3N0UGFyZW50ICE9IG51bGwpIHtcbiAgICAgIG5hbWVzcGFjZVVSSSA9IGhvc3RQYXJl
bnQuX25hbWVzcGFjZVVSSTtcbiAgICAgIHBhcmVudFRhZyA9IGhvc3RQYXJlbnQuX3RhZztcbiAg
ICB9IGVsc2UgaWYgKGhvc3RDb250YWluZXJJbmZvLl90YWcpIHtcbiAgICAgIG5hbWVzcGFjZVVS
SSA9IGhvc3RDb250YWluZXJJbmZvLl9uYW1lc3BhY2VVUkk7XG4gICAgICBwYXJlbnRUYWcgPSBo
b3N0Q29udGFpbmVySW5mby5fdGFnO1xuICAgIH1cbiAgICBpZiAobmFtZXNwYWNlVVJJID09IG51
bGwgfHwgbmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLnN2ZyAmJiBwYXJlbnRUYWcgPT09
ICdmb3JlaWdub2JqZWN0Jykge1xuICAgICAgbmFtZXNwYWNlVVJJID0gRE9NTmFtZXNwYWNlcy5o
dG1sO1xuICAgIH1cbiAgICBpZiAobmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwp
IHtcbiAgICAgIGlmICh0aGlzLl90YWcgPT09ICdzdmcnKSB7XG4gICAgICAgIG5hbWVzcGFjZVVS
SSA9IERPTU5hbWVzcGFjZXMuc3ZnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLl90YWcgPT09ICdt
YXRoJykge1xuICAgICAgICBuYW1lc3BhY2VVUkkgPSBET01OYW1lc3BhY2VzLm1hdGhtbDtcbiAg
ICAgIH1cbiAgICB9XG4gICAgdGhpcy5fbmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJO1xuXG4g
ICAgaWYgKGZhbHNlKSB7XG4gICAgICB2YXIgcGFyZW50SW5mbztcbiAgICAgIGlmIChob3N0UGFy
ZW50ICE9IG51bGwpIHtcbiAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RQYXJlbnQuX2FuY2VzdG9y
SW5mbztcbiAgICAgIH0gZWxzZSBpZiAoaG9zdENvbnRhaW5lckluZm8uX3RhZykge1xuICAgICAg
ICBwYXJlbnRJbmZvID0gaG9zdENvbnRhaW5lckluZm8uX2FuY2VzdG9ySW5mbztcbiAgICAgIH1c
biAgICAgIGlmIChwYXJlbnRJbmZvKSB7XG4gICAgICAgIC8vIHBhcmVudEluZm8gc2hvdWxkIGFs
d2F5cyBiZSBwcmVzZW50IGV4Y2VwdCBmb3IgdGhlIHRvcC1sZXZlbFxuICAgICAgICAvLyBjb21w
b25lbnQgd2hlbiBzZXJ2ZXIgcmVuZGVyaW5nXG4gICAgICAgIHZhbGlkYXRlRE9NTmVzdGluZyh0
aGlzLl90YWcsIG51bGwsIHRoaXMsIHBhcmVudEluZm8pO1xuICAgICAgfVxuICAgICAgdGhpcy5f
YW5jZXN0b3JJbmZvID0gdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8ocGFy
ZW50SW5mbywgdGhpcy5fdGFnLCB0aGlzKTtcbiAgICB9XG5cbiAgICB2YXIgbW91bnRJbWFnZTtc
biAgICBpZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkge1xuICAgICAgdmFyIG93bmVy
RG9jdW1lbnQgPSBob3N0Q29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDtcbiAgICAgIHZhciBl
bDtcbiAgICAgIGlmIChuYW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMuaHRtbCkge1xuICAg
ICAgICBpZiAodGhpcy5fdGFnID09PSAnc2NyaXB0Jykge1xuICAgICAgICAgIC8vIENyZWF0ZSB0
aGUgc2NyaXB0IHZpYSAuaW5uZXJIVE1MIHNvIGl0cyBcInBhcnNlci1pbnNlcnRlZFwiIGZsYWcg
aXNcbiAgICAgICAgICAvLyBzZXQgdG8gdHJ1ZSBhbmQgaXQgZG9lcyBub3QgZXhlY3V0ZVxuICAg
ICAgICAgIHZhciBkaXYgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAg
ICAgICAgIHZhciB0eXBlID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICAgICAgICBk
aXYuaW5uZXJIVE1MID0gJzwnICsgdHlwZSArICc+PC8nICsgdHlwZSArICc+JztcbiAgICAgICAg
ICBlbCA9IGRpdi5yZW1vdmVDaGlsZChkaXYuZmlyc3RDaGlsZCk7XG4gICAgICAgIH0gZWxzZSBp
ZiAocHJvcHMuaXMpIHtcbiAgICAgICAgICBlbCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLCBwcm9wcy5pcyk7XG4gICAgICAgIH0gZWxzZSB7
XG4gICAgICAgICAgLy8gU2VwYXJhdGUgZWxzZSBicmFuY2ggaW5zdGVhZCBvZiB1c2luZyBgcHJv
cHMuaXMgfHwgdW5kZWZpbmVkYCBhYm92ZSBiZWN1YXNlIG9mIGEgRmlyZWZveCBidWcuXG4gICAg
ICAgICAgLy8gU2VlIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3Jl
YWN0L3B1bGwvNjg5NlxuICAgICAgICAgIC8vIGFuZCBkaXNjdXNzaW9uIGluIGh0dHBzOi8vYnVn
emlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzYyNDBcbiAgICAgICAgICBlbCA9
IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtc
biAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWwgPSBvd25lckRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUpO1xu
ICAgICAgfVxuICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZSh0aGlzLCBl
bCk7XG4gICAgICB0aGlzLl9mbGFncyB8PSBGbGFncy5oYXNDYWNoZWRDaGlsZE5vZGVzO1xuICAg
ICAgaWYgKCF0aGlzLl9ob3N0UGFyZW50KSB7XG4gICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9u
cy5zZXRBdHRyaWJ1dGVGb3JSb290KGVsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3VwZGF0ZURP
TVByb3BlcnRpZXMobnVsbCwgcHJvcHMsIHRyYW5zYWN0aW9uKTtcbiAgICAgIHZhciBsYXp5VHJl
ZSA9IERPTUxhenlUcmVlKGVsKTtcbiAgICAgIHRoaXMuX2NyZWF0ZUluaXRpYWxDaGlsZHJlbih0
cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQsIGxhenlUcmVlKTtcbiAgICAgIG1vdW50SW1hZ2Ug
PSBsYXp5VHJlZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHRhZ09wZW4gPSB0aGlzLl9jcmVh
dGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzKHRyYW5zYWN0aW9uLCBwcm9wcyk7XG4gICAg
ICB2YXIgdGFnQ29udGVudCA9IHRoaXMuX2NyZWF0ZUNvbnRlbnRNYXJrdXAodHJhbnNhY3Rpb24s
IHByb3BzLCBjb250ZXh0KTtcbiAgICAgIGlmICghdGFnQ29udGVudCAmJiBvbWl0dGVkQ2xvc2VU
YWdzW3RoaXMuX3RhZ10pIHtcbiAgICAgICAgbW91bnRJbWFnZSA9IHRhZ09wZW4gKyAnLz4nO1xu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW91bnRJbWFnZSA9IHRhZ09wZW4gKyAnPicgKyB0YWdD
b250ZW50ICsgJzwvJyArIHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUgKyAnPic7XG4gICAgICB9
XG4gICAgfVxuXG4gICAgc3dpdGNoICh0aGlzLl90YWcpIHtcbiAgICAgIGNhc2UgJ2lucHV0Jzpc
biAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShpbnB1dFBv
c3RNb3VudCwgdGhpcyk7XG4gICAgICAgIGlmIChwcm9wcy5hdXRvRm9jdXMpIHtcbiAgICAgICAg
ICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKEF1dG9Gb2N1c1V0aWxz
LmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAg
ICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJl
YWR5KCkuZW5xdWV1ZSh0ZXh0YXJlYVBvc3RNb3VudCwgdGhpcyk7XG4gICAgICAgIGlmIChwcm9w
cy5hdXRvRm9jdXMpIHtcbiAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHko
KS5lbnF1ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtcbiAgICAg
ICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIGlmIChw
cm9wcy5hdXRvRm9jdXMpIHtcbiAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVh
ZHkoKS5lbnF1ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtcbiAg
ICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2J1dHRvbic6XG4gICAgICAgIGlm
IChwcm9wcy5hdXRvRm9jdXMpIHtcbiAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50
UmVhZHkoKS5lbnF1ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtc
biAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29wdGlvbic6XG4gICAgICAg
IHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUob3B0aW9uUG9zdE1vdW50
LCB0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vdW50SW1hZ2U7
XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgb3BlbiB0YWcgYW5k
IGFsbCBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBoYXMgc2lkZSBlZmZlY3Rz
IGJlY2F1c2UgZXZlbnRzIGdldCByZWdpc3RlcmVkLlxuICAgKlxuICAgKiBJdGVyYXRpbmcgb3Zl
ciBvYmplY3QgcHJvcGVydGllcyBpcyBmYXN0ZXIgdGhhbiBpdGVyYXRpbmcgb3ZlciBhcnJheXMu
XG4gICAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20vb2JqLXZzLWFyci1pdGVyYXRpb25cbiAgICpc
biAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJl
YWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7
b2JqZWN0fSBwcm9wc1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBvZiBvcGVuaW5nIHRh
Zy5cbiAgICovXG4gIF9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzOiBmdW5jdGlv
biAodHJhbnNhY3Rpb24sIHByb3BzKSB7XG4gICAgdmFyIHJldCA9ICc8JyArIHRoaXMuX2N1cnJl
bnRFbGVtZW50LnR5cGU7XG5cbiAgICBmb3IgKHZhciBwcm9wS2V5IGluIHByb3BzKSB7XG4gICAg
ICBpZiAoIXByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAgIGNvbnRpbnVl
O1xuICAgICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuICAgICAg
aWYgKHByb3BWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAg
ICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7
XG4gICAgICAgIGlmIChwcm9wVmFsdWUpIHtcbiAgICAgICAgICBlbnF1ZXVlUHV0TGlzdGVuZXIo
dGhpcywgcHJvcEtleSwgcHJvcFZhbHVlLCB0cmFuc2FjdGlvbik7XG4gICAgICAgIH1cbiAgICAg
IH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuICAgICAgICAgIGlm
IChwcm9wVmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgICAgICAv
LyBTZWUgYF91cGRhdGVET01Qcm9wZXJ0aWVzYC4gc3R5bGUgYmxvY2tcbiAgICAgICAgICAgICAg
dGhpcy5fcHJldmlvdXNTdHlsZSA9IHByb3BWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAg
ICAgIHByb3BWYWx1ZSA9IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gX2Fzc2lnbih7fSwgcHJv
cHMuc3R5bGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwcm9wVmFsdWUgPSBDU1NQcm9wZXJ0
eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yU3R5bGVzKHByb3BWYWx1ZSwgdGhpcyk7XG4gICAg
ICAgIH1cbiAgICAgICAgdmFyIG1hcmt1cCA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLl90YWcg
IT0gbnVsbCAmJiBpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIHByb3BzKSkge1xuICAgICAg
ICAgIGlmICghUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAg
ICAgICAgIG1hcmt1cCA9IERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JDdXN0
b21BdHRyaWJ1dGUocHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0g
ZWxzZSB7XG4gICAgICAgICAgbWFya3VwID0gRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1h
cmt1cEZvclByb3BlcnR5KHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAg
aWYgKG1hcmt1cCkge1xuICAgICAgICAgIHJldCArPSAnICcgKyBtYXJrdXA7XG4gICAgICAgIH1c
biAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb3Igc3RhdGljIHBhZ2VzLCBubyBuZWVkIHRvIHB1
dCBSZWFjdCBJRCBhbmQgY2hlY2tzdW0uIFNhdmVzIGxvdHMgb2ZcbiAgICAvLyBieXRlcy5cbiAg
ICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcbiAgICAgIHJldHVybiBy
ZXQ7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9ob3N0UGFyZW50KSB7XG4gICAgICByZXQgKz0g
JyAnICsgRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclJvb3QoKTtcbiAgICB9
XG4gICAgcmV0ICs9ICcgJyArIERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JJ
RCh0aGlzLl9kb21JRCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICAvKipcbiAgICogQ3Jl
YXRlcyBtYXJrdXAgZm9yIHRoZSBjb250ZW50IGJldHdlZW4gdGhlIHRhZ3MuXG4gICAqXG4gICAq
IEBwcml2YXRlXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNl
cnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVj
dH0gcHJvcHNcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7c3Ry
aW5nfSBDb250ZW50IG1hcmt1cC5cbiAgICovXG4gIF9jcmVhdGVDb250ZW50TWFya3VwOiBmdW5j
dGlvbiAodHJhbnNhY3Rpb24sIHByb3BzLCBjb250ZXh0KSB7XG4gICAgdmFyIHJldCA9ICcnO1xu
XG4gICAgLy8gSW50ZW50aW9uYWwgdXNlIG9mICE9IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFs
c2UuXG4gICAgdmFyIGlubmVySFRNTCA9IHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO1xu
ICAgIGlmIChpbm5lckhUTUwgIT0gbnVsbCkge1xuICAgICAgaWYgKGlubmVySFRNTC5fX2h0bWwg
IT0gbnVsbCkge1xuICAgICAgICByZXQgPSBpbm5lckhUTUwuX19odG1sO1xuICAgICAgfVxuICAg
IH0gZWxzZSB7XG4gICAgICB2YXIgY29udGVudFRvVXNlID0gQ09OVEVOVF9UWVBFU1t0eXBlb2Yg
cHJvcHMuY2hpbGRyZW5dID8gcHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuICAgICAgdmFyIGNoaWxk
cmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVsbCA/IG51bGwgOiBwcm9wcy5jaGlsZHJlbjtc
biAgICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkge1xuICAgICAgICAvLyBUT0RPOiBWYWxp
ZGF0ZSB0aGF0IHRleHQgaXMgYWxsb3dlZCBhcyBhIGNoaWxkIG9mIHRoaXMgbm9kZVxuICAgICAg
ICByZXQgPSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIoY29udGVudFRvVXNlKTtcbiAgICAg
ICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYu
Y2FsbCh0aGlzLCBjb250ZW50VG9Vc2UpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNo
aWxkcmVuVG9Vc2UgIT0gbnVsbCkge1xuICAgICAgICB2YXIgbW91bnRJbWFnZXMgPSB0aGlzLm1v
dW50Q2hpbGRyZW4oY2hpbGRyZW5Ub1VzZSwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAg
ICByZXQgPSBtb3VudEltYWdlcy5qb2luKCcnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5l
d2xpbmVFYXRpbmdUYWdzW3RoaXMuX3RhZ10gJiYgcmV0LmNoYXJBdCgwKSA9PT0gJ1xcbicpIHtc
biAgICAgIC8vIHRleHQvaHRtbCBpZ25vcmVzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlc2Ug
dGFncyBpZiBpdCdzIGEgbmV3bGluZVxuICAgICAgLy8gUHJlZmVyIHRvIGJyZWFrIGFwcGxpY2F0
aW9uL3htbCBvdmVyIHRleHQvaHRtbCAoZm9yIG5vdykgYnkgYWRkaW5nXG4gICAgICAvLyBhIG5l
d2xpbmUgc3BlY2lmaWNhbGx5IHRvIGdldCBlYXRlbiBieSB0aGUgcGFyc2VyLiAoQWx0ZXJuYXRl
bHkgZm9yXG4gICAgICAvLyB0ZXh0YXJlYXMsIHJlcGxhY2luZyBcIl5cXG5cIiB3aXRoIFwiXFxy
XFxuXCIgZG9lc24ndCBnZXQgZWF0ZW4sIGFuZCB0aGUgZmlyc3RcbiAgICAgIC8vIFxcciBpcyBu
b3JtYWxpemVkIG91dCBieSBIVE1MVGV4dEFyZWFFbGVtZW50I3ZhbHVlLilcbiAgICAgIC8vIFNl
ZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWwtcG9seWdsb3QvI25ld2xpbmVzLWluLXRleHRh
cmVhLWFuZC1wcmU+XG4gICAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9z
eW50YXguaHRtbCNlbGVtZW50LXJlc3RyaWN0aW9ucz5cbiAgICAgIC8vIFNlZTogPGh0dHA6Ly93
d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI25ld2xpbmVzPlxuICAgICAgLy8gU2VlOiBQ
YXJzaW5nIG9mIFwidGV4dGFyZWFcIiBcImxpc3RpbmdcIiBhbmQgXCJwcmVcIiBlbGVtZW50c1xu
ICAgICAgLy8gIGZyb20gPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI3Bh
cnNpbmctbWFpbi1pbmJvZHk+XG4gICAgICByZXR1cm4gJ1xcbicgKyByZXQ7XG4gICAgfSBlbHNl
IHtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICB9LFxuXG4gIF9jcmVhdGVJbml0aWFsQ2hp
bGRyZW46IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQsIGxhenlUcmVlKSB7
XG4gICAgLy8gSW50ZW50aW9uYWwgdXNlIG9mICE9IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFs
c2UuXG4gICAgdmFyIGlubmVySFRNTCA9IHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO1xu
ICAgIGlmIChpbm5lckhUTUwgIT0gbnVsbCkge1xuICAgICAgaWYgKGlubmVySFRNTC5fX2h0bWwg
IT0gbnVsbCkge1xuICAgICAgICBET01MYXp5VHJlZS5xdWV1ZUhUTUwobGF6eVRyZWUsIGlubmVy
SFRNTC5fX2h0bWwpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY29udGVudFRv
VXNlID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgcHJvcHMuY2hpbGRyZW5dID8gcHJvcHMuY2hpbGRy
ZW4gOiBudWxsO1xuICAgICAgdmFyIGNoaWxkcmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVs
bCA/IG51bGwgOiBwcm9wcy5jaGlsZHJlbjtcbiAgICAgIC8vIFRPRE86IFZhbGlkYXRlIHRoYXQg
dGV4dCBpcyBhbGxvd2VkIGFzIGEgY2hpbGQgb2YgdGhpcyBub2RlXG4gICAgICBpZiAoY29udGVu
dFRvVXNlICE9IG51bGwpIHtcbiAgICAgICAgLy8gQXZvaWQgc2V0dGluZyB0ZXh0Q29udGVudCB3
aGVuIHRoZSB0ZXh0IGlzIGVtcHR5LiBJbiBJRTExIHNldHRpbmdcbiAgICAgICAgLy8gdGV4dENv
bnRlbnQgb24gYSB0ZXh0IGFyZWEgd2lsbCBjYXVzZSB0aGUgcGxhY2Vob2xkZXIgdG8gbm90XG4g
ICAgICAgIC8vIHNob3cgd2l0aGluIHRoZSB0ZXh0YXJlYSB1bnRpbCBpdCBoYXMgYmVlbiBmb2N1
c2VkIGFuZCBibHVycmVkIGFnYWluLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFj
ZWJvb2svcmVhY3QvaXNzdWVzLzY3MzEjaXNzdWVjb21tZW50LTI1NDg3NDU1M1xuICAgICAgICBp
ZiAoY29udGVudFRvVXNlICE9PSAnJykge1xuICAgICAgICAgIGlmIChmYWxzZSkge1xuICAgICAg
ICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBjb250ZW50VG9V
c2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBET01MYXp5VHJlZS5xdWV1ZVRleHQobGF6eVRy
ZWUsIGNvbnRlbnRUb1VzZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5U
b1VzZSAhPSBudWxsKSB7XG4gICAgICAgIHZhciBtb3VudEltYWdlcyA9IHRoaXMubW91bnRDaGls
ZHJlbihjaGlsZHJlblRvVXNlLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbW91bnRJbWFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBET01M
YXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBtb3VudEltYWdlc1tpXSk7XG4gICAgICAgIH1c
biAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlY2VpdmVzIGEgbmV4dCBlbGVt
ZW50IGFuZCB1cGRhdGVzIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAg
KiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnRcbiAgICogQHBhcmFtIHtSZWFjdFJl
Y29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5z
YWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAqL1xuICByZWNlaXZlQ29t
cG9uZW50OiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4g
ICAgdmFyIHByZXZFbGVtZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQ7XG4gICAgdGhpcy5fY3Vy
cmVudEVsZW1lbnQgPSBuZXh0RWxlbWVudDtcbiAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFu
c2FjdGlvbiwgcHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0KTtcbiAgfSxcblxuICAv
KipcbiAgICogVXBkYXRlcyBhIERPTSBjb21wb25lbnQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVl
biBhbGxvY2F0ZWQgYW5kXG4gICAqIGF0dGFjaGVkIHRvIHRoZSBET00uIFJlY29uY2lsZXMgdGhl
IHJvb3QgRE9NIG5vZGUsIHRoZW4gcmVjdXJzZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RS
ZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1l
bnR9IHByZXZFbGVtZW50XG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudFxu
ICAgKiBAaW50ZXJuYWxcbiAgICogQG92ZXJyaWRhYmxlXG4gICAqL1xuICB1cGRhdGVDb21wb25l
bnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250
ZXh0KSB7XG4gICAgdmFyIGxhc3RQcm9wcyA9IHByZXZFbGVtZW50LnByb3BzO1xuICAgIHZhciBu
ZXh0UHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICAgIHN3aXRjaCAodGhp
cy5fdGFnKSB7XG4gICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0
RE9NSW5wdXQuZ2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9w
cyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAg
IGJyZWFrO1xuICAgICAgY2FzZSAnb3B0aW9uJzpcbiAgICAgICAgbGFzdFByb3BzID0gUmVhY3RE
T01PcHRpb24uZ2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9w
cyA9IFJlYWN0RE9NT3B0aW9uLmdldEhvc3RQcm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuICAgICAg
ICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0
RE9NU2VsZWN0LmdldEhvc3RQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuICAgICAgICBuZXh0UHJv
cHMgPSBSZWFjdERPTVNlbGVjdC5nZXRIb3N0UHJvcHModGhpcywgbmV4dFByb3BzKTtcbiAgICAg
ICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJl
YWN0RE9NVGV4dGFyZWEuZ2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAgIG5l
eHRQcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7
XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGFzc2VydFZhbGlkUHJvcHModGhpcywgbmV4
dFByb3BzKTtcbiAgICB0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKGxhc3RQcm9wcywgbmV4dFBy
b3BzLCB0cmFuc2FjdGlvbik7XG4gICAgdGhpcy5fdXBkYXRlRE9NQ2hpbGRyZW4obGFzdFByb3Bz
LCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblxuICAgIHN3aXRjaCAodGhpcy5f
dGFnKSB7XG4gICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgd3JhcHBl
ciBhcm91bmQgaW5wdXRzICphZnRlciogdXBkYXRpbmcgcHJvcHMuIFRoaXMgaGFzIHRvXG4gICAg
ICAgIC8vIGhhcHBlbiBhZnRlciBgX3VwZGF0ZURPTVByb3BlcnRpZXNgLiBPdGhlcndpc2UgSFRN
TDUgaW5wdXQgdmFsaWRhdGlvbnNcbiAgICAgICAgLy8gcmFpc2Ugd2FybmluZ3MgYW5kIHByZXZl
bnQgdGhlIG5ldyB2YWx1ZSBmcm9tIGJlaW5nIGFzc2lnbmVkLlxuICAgICAgICBSZWFjdERPTUlu
cHV0LnVwZGF0ZVdyYXBwZXIodGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGV4
dGFyZWEnOlxuICAgICAgICBSZWFjdERPTVRleHRhcmVhLnVwZGF0ZVdyYXBwZXIodGhpcyk7XG4g
ICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgLy8gPHNlbGVjdD4g
dmFsdWUgdXBkYXRlIG5lZWRzIHRvIG9jY3VyIGFmdGVyIDxvcHRpb24+IGNoaWxkcmVuXG4gICAg
ICAgIC8vIHJlY29uY2lsaWF0aW9uXG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRS
ZWFkeSgpLmVucXVldWUocG9zdFVwZGF0ZVNlbGVjdFdyYXBwZXIsIHRoaXMpO1xuICAgICAgICBi
cmVhaztcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlY29uY2lsZXMgdGhlIHByb3BlcnRp
ZXMgYnkgZGV0ZWN0aW5nIGRpZmZlcmVuY2VzIGluIHByb3BlcnR5IHZhbHVlcyBhbmRcbiAgICog
dXBkYXRpbmcgdGhlIERPTSBhcyBuZWNlc3NhcnkuIFRoaXMgZnVuY3Rpb24gaXMgcHJvYmFibHkg
dGhlIHNpbmdsZSBtb3N0XG4gICAqIGNyaXRpY2FsIHBhdGggZm9yIHBlcmZvcm1hbmNlIG9wdGlt
aXphdGlvbi5cbiAgICpcbiAgICogVE9ETzogQmVuY2htYXJrIHdoZXRoZXIgY2hlY2tpbmcgZm9y
IGNoYW5nZWQgdmFsdWVzIGluIG1lbW9yeSBhY3R1YWxseVxuICAgKiAgICAgICBpbXByb3ZlcyBw
ZXJmb3JtYW5jZSAoZXNwZWNpYWxseSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudHMpLlxu
ICAgKiBUT0RPOiBCZW5jaG1hcmsgdGhlIGVmZmVjdHMgb2YgcHV0dGluZyB0aGlzIGF0IHRoZSB0
b3Agc2luY2UgOTklIG9mIHByb3BzXG4gICAqICAgICAgIGRvIG5vdCBjaGFuZ2UgZm9yIGEgZ2l2
ZW4gcmVjb25jaWxpYXRpb24uXG4gICAqIFRPRE86IEJlbmNobWFyayBhcmVhcyB0aGF0IGNhbiBi
ZSBpbXByb3ZlZCB3aXRoIGNhY2hpbmcuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJh
bSB7b2JqZWN0fSBsYXN0UHJvcHNcbiAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAg
KiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlXG4gICAqL1xuICBfdXBkYXRlRE9NUHJvcGVydGll
czogZnVuY3Rpb24gKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbikge1xuICAgIHZh
ciBwcm9wS2V5O1xuICAgIHZhciBzdHlsZU5hbWU7XG4gICAgdmFyIHN0eWxlVXBkYXRlcztcbiAg
ICBmb3IgKHByb3BLZXkgaW4gbGFzdFByb3BzKSB7XG4gICAgICBpZiAobmV4dFByb3BzLmhhc093
blByb3BlcnR5KHByb3BLZXkpIHx8ICFsYXN0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkg
fHwgbGFzdFByb3BzW3Byb3BLZXldID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAg
ICB9XG4gICAgICBpZiAocHJvcEtleSA9PT0gU1RZTEUpIHtcbiAgICAgICAgdmFyIGxhc3RTdHls
ZSA9IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5O1xuICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBs
YXN0U3R5bGUpIHtcbiAgICAgICAgICBpZiAobGFzdFN0eWxlLmhhc093blByb3BlcnR5KHN0eWxl
TmFtZSkpIHtcbiAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTtc
biAgICAgICAgICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gJyc7XG4gICAgICAgICAgfVxu
ICAgICAgICB9XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcbiAgICAg
IH0gZWxzZSBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtl
eSkpIHtcbiAgICAgICAgaWYgKGxhc3RQcm9wc1twcm9wS2V5XSkge1xuICAgICAgICAgIC8vIE9u
bHkgY2FsbCBkZWxldGVMaXN0ZW5lciBpZiB0aGVyZSB3YXMgYSBsaXN0ZW5lciBwcmV2aW91c2x5
IG9yXG4gICAgICAgICAgLy8gZWxzZSB3aWxsRGVsZXRlTGlzdGVuZXIgZ2V0cyBjYWxsZWQgd2hl
biB0aGVyZSB3YXNuJ3QgYWN0dWFsbHkgYVxuICAgICAgICAgIC8vIGxpc3RlbmVyIChlLmcuLCBv
bkNsaWNrPXtudWxsfSlcbiAgICAgICAgICBkZWxldGVMaXN0ZW5lcih0aGlzLCBwcm9wS2V5KTtc
biAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcs
IGxhc3RQcm9wcykpIHtcbiAgICAgICAgaWYgKCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0
eShwcm9wS2V5KSkge1xuICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1
ZUZvckF0dHJpYnV0ZShnZXROb2RlKHRoaXMpLCBwcm9wS2V5KTtcbiAgICAgICAgfVxuICAgICAg
fSBlbHNlIGlmIChET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5
LmlzQ3VzdG9tQXR0cmlidXRlKHByb3BLZXkpKSB7XG4gICAgICAgIERPTVByb3BlcnR5T3BlcmF0
aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGdldE5vZGUodGhpcyksIHByb3BLZXkpO1xuICAg
ICAgfVxuICAgIH1cbiAgICBmb3IgKHByb3BLZXkgaW4gbmV4dFByb3BzKSB7XG4gICAgICB2YXIg
bmV4dFByb3AgPSBuZXh0UHJvcHNbcHJvcEtleV07XG4gICAgICB2YXIgbGFzdFByb3AgPSBwcm9w
S2V5ID09PSBTVFlMRSA/IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5IDogbGFzdFByb3BzICE9IG51
bGwgPyBsYXN0UHJvcHNbcHJvcEtleV0gOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoIW5leHRQcm9w
cy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSB8fCBuZXh0UHJvcCA9PT0gbGFzdFByb3AgfHwgbmV4
dFByb3AgPT0gbnVsbCAmJiBsYXN0UHJvcCA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xu
ICAgICAgfVxuICAgICAgaWYgKHByb3BLZXkgPT09IFNUWUxFKSB7XG4gICAgICAgIGlmIChuZXh0
UHJvcCkge1xuICAgICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgICAgY2hlY2tBbmRXYXJu
Rm9yTXV0YXRlZFN0eWxlKHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5LCB0aGlzLl9wcmV2aW91c1N0
eWxlLCB0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBuZXh0UHJvcDtc
biAgICAgICAgICB9XG4gICAgICAgICAgbmV4dFByb3AgPSB0aGlzLl9wcmV2aW91c1N0eWxlQ29w
eSA9IF9hc3NpZ24oe30sIG5leHRQcm9wKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0
aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxh
c3RQcm9wKSB7XG4gICAgICAgICAgLy8gVW5zZXQgc3R5bGVzIG9uIGBsYXN0UHJvcGAgYnV0IG5v
dCBvbiBgbmV4dFByb3BgLlxuICAgICAgICAgIGZvciAoc3R5bGVOYW1lIGluIGxhc3RQcm9wKSB7
XG4gICAgICAgICAgICBpZiAobGFzdFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSAmJiAo
IW5leHRQcm9wIHx8ICFuZXh0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSkge1xuICAg
ICAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMgfHwge307XG4gICAgICAgICAg
ICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAg
ICAgfVxuICAgICAgICAgIC8vIFVwZGF0ZSBzdHlsZXMgdGhhdCBjaGFuZ2VkIHNpbmNlIGBsYXN0
UHJvcGAuXG4gICAgICAgICAgZm9yIChzdHlsZU5hbWUgaW4gbmV4dFByb3ApIHtcbiAgICAgICAg
ICAgIGlmIChuZXh0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpICYmIGxhc3RQcm9wW3N0
eWxlTmFtZV0gIT09IG5leHRQcm9wW3N0eWxlTmFtZV0pIHtcbiAgICAgICAgICAgICAgc3R5bGVV
cGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuICAgICAgICAgICAgICBzdHlsZVVwZGF0ZXNb
c3R5bGVOYW1lXSA9IG5leHRQcm9wW3N0eWxlTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAg
ICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFJlbGllcyBvbiBgdXBkYXRlU3R5
bGVzQnlJRGAgbm90IG11dGF0aW5nIGBzdHlsZVVwZGF0ZXNgLlxuICAgICAgICAgIHN0eWxlVXBk
YXRlcyA9IG5leHRQcm9wO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJlZ2lzdHJhdGlv
bk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAgIGlmIChuZXh0
UHJvcCkge1xuICAgICAgICAgIGVucXVldWVQdXRMaXN0ZW5lcih0aGlzLCBwcm9wS2V5LCBuZXh0
UHJvcCwgdHJhbnNhY3Rpb24pO1xuICAgICAgICB9IGVsc2UgaWYgKGxhc3RQcm9wKSB7XG4gICAg
ICAgICAgZGVsZXRlTGlzdGVuZXIodGhpcywgcHJvcEtleSk7XG4gICAgICAgIH1cbiAgICAgIH0g
ZWxzZSBpZiAoaXNDdXN0b21Db21wb25lbnQodGhpcy5fdGFnLCBuZXh0UHJvcHMpKSB7XG4gICAg
ICAgIGlmICghUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAg
ICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JBdHRyaWJ1dGUoZ2V0Tm9kZSh0
aGlzKSwgcHJvcEtleSwgbmV4dFByb3ApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKERP
TVByb3BlcnR5LnByb3BlcnRpZXNbcHJvcEtleV0gfHwgRE9NUHJvcGVydHkuaXNDdXN0b21BdHRy
aWJ1dGUocHJvcEtleSkpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBnZXROb2RlKHRoaXMpO1xuICAg
ICAgICAvLyBJZiB3ZSdyZSB1cGRhdGluZyB0byBudWxsIG9yIHVuZGVmaW5lZCwgd2Ugc2hvdWxk
IHJlbW92ZSB0aGUgcHJvcGVydHlcbiAgICAgICAgLy8gZnJvbSB0aGUgRE9NIG5vZGUgaW5zdGVh
ZCBvZiBpbmFkdmVydGVudGx5IHNldHRpbmcgdG8gYSBzdHJpbmcuIFRoaXNcbiAgICAgICAgLy8g
YnJpbmdzIHVzIGluIGxpbmUgd2l0aCB0aGUgc2FtZSBiZWhhdmlvciB3ZSBoYXZlIG9uIGluaXRp
YWwgcmVuZGVyLlxuICAgICAgICBpZiAobmV4dFByb3AgIT0gbnVsbCkge1xuICAgICAgICAgIERP
TVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5KG5vZGUsIHByb3BLZXksIG5l
eHRQcm9wKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlv
bnMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShub2RlLCBwcm9wS2V5KTtcbiAgICAgICAgfVxuICAg
ICAgfVxuICAgIH1cbiAgICBpZiAoc3R5bGVVcGRhdGVzKSB7XG4gICAgICBDU1NQcm9wZXJ0eU9w
ZXJhdGlvbnMuc2V0VmFsdWVGb3JTdHlsZXMoZ2V0Tm9kZSh0aGlzKSwgc3R5bGVVcGRhdGVzLCB0
aGlzKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlY29uY2lsZXMgdGhlIGNoaWxkcmVu
IHdpdGggdGhlIHZhcmlvdXMgcHJvcGVydGllcyB0aGF0IGFmZmVjdCB0aGVcbiAgICogY2hpbGRy
ZW4gY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGxhc3RQcm9wc1xuICAgKiBA
cGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFu
c2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICov
XG4gIF91cGRhdGVET01DaGlsZHJlbjogZnVuY3Rpb24gKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0
cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBsYXN0Q29udGVudCA9IENPTlRFTlRfVFlQ
RVNbdHlwZW9mIGxhc3RQcm9wcy5jaGlsZHJlbl0gPyBsYXN0UHJvcHMuY2hpbGRyZW4gOiBudWxs
O1xuICAgIHZhciBuZXh0Q29udGVudCA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIG5leHRQcm9wcy5j
aGlsZHJlbl0gPyBuZXh0UHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuXG4gICAgdmFyIGxhc3RIdG1s
ID0gbGFzdFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmIGxhc3RQcm9wcy5kYW5nZXJv
dXNseVNldElubmVySFRNTC5fX2h0bWw7XG4gICAgdmFyIG5leHRIdG1sID0gbmV4dFByb3BzLmRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MICYmIG5leHRQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRN
TC5fX2h0bWw7XG5cbiAgICAvLyBOb3RlIHRoZSB1c2Ugb2YgYCE9YCB3aGljaCBjaGVja3MgZm9y
IG51bGwgb3IgdW5kZWZpbmVkLlxuICAgIHZhciBsYXN0Q2hpbGRyZW4gPSBsYXN0Q29udGVudCAh
PSBudWxsID8gbnVsbCA6IGxhc3RQcm9wcy5jaGlsZHJlbjtcbiAgICB2YXIgbmV4dENoaWxkcmVu
ID0gbmV4dENvbnRlbnQgIT0gbnVsbCA/IG51bGwgOiBuZXh0UHJvcHMuY2hpbGRyZW47XG5cbiAg
ICAvLyBJZiB3ZSdyZSBzd2l0Y2hpbmcgZnJvbSBjaGlsZHJlbiB0byBjb250ZW50L2h0bWwgb3Ig
dmljZSB2ZXJzYSwgcmVtb3ZlXG4gICAgLy8gdGhlIG9sZCBjb250ZW50XG4gICAgdmFyIGxhc3RI
YXNDb250ZW50T3JIdG1sID0gbGFzdENvbnRlbnQgIT0gbnVsbCB8fCBsYXN0SHRtbCAhPSBudWxs
O1xuICAgIHZhciBuZXh0SGFzQ29udGVudE9ySHRtbCA9IG5leHRDb250ZW50ICE9IG51bGwgfHwg
bmV4dEh0bWwgIT0gbnVsbDtcbiAgICBpZiAobGFzdENoaWxkcmVuICE9IG51bGwgJiYgbmV4dENo
aWxkcmVuID09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlQ2hpbGRyZW4obnVsbCwgdHJhbnNh
Y3Rpb24sIGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAobGFzdEhhc0NvbnRlbnRPckh0bWwgJiYg
IW5leHRIYXNDb250ZW50T3JIdG1sKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRleHRDb250ZW50KCcn
KTtcbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1
Z1Rvb2wub25TZXRDaGlsZHJlbih0aGlzLl9kZWJ1Z0lELCBbXSk7XG4gICAgICB9XG4gICAgfVxu
XG4gICAgaWYgKG5leHRDb250ZW50ICE9IG51bGwpIHtcbiAgICAgIGlmIChsYXN0Q29udGVudCAh
PT0gbmV4dENvbnRlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVUZXh0Q29udGVudCgnJyArIG5l
eHRDb250ZW50KTtcbiAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgc2V0QW5kVmFsaWRh
dGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBuZXh0Q29udGVudCk7XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICB9IGVsc2UgaWYgKG5leHRIdG1sICE9IG51bGwpIHtcbiAgICAgIGlmIChsYXN0
SHRtbCAhPT0gbmV4dEh0bWwpIHtcbiAgICAgICAgdGhpcy51cGRhdGVNYXJrdXAoJycgKyBuZXh0
SHRtbCk7XG4gICAgICB9XG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4odGhpcy5fZGVidWdJRCwgW10pO1xuICAg
ICAgfVxuICAgIH0gZWxzZSBpZiAobmV4dENoaWxkcmVuICE9IG51bGwpIHtcbiAgICAgIGlmIChm
YWxzZSkge1xuICAgICAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMs
IG51bGwpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKG5leHRDaGlsZHJl
biwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH1cbiAgfSxcblxuICBnZXRIb3N0Tm9kZTog
ZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBnZXROb2RlKHRoaXMpO1xuICB9LFxuXG4gIC8qKlxu
ICAgKiBEZXN0cm95cyBhbGwgZXZlbnQgcmVnaXN0cmF0aW9ucyBmb3IgdGhpcyBpbnN0YW5jZS4g
RG9lcyBub3QgcmVtb3ZlIGZyb21cbiAgICogdGhlIERPTS4gVGhhdCBtdXN0IGJlIGRvbmUgYnkg
dGhlIHBhcmVudC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICB1bm1vdW50Q29tcG9u
ZW50OiBmdW5jdGlvbiAoc2FmZWx5KSB7XG4gICAgc3dpdGNoICh0aGlzLl90YWcpIHtcbiAgICAg
IGNhc2UgJ2F1ZGlvJzpcbiAgICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgY2FzZSAnaWZyYW1lJzpc
biAgICAgIGNhc2UgJ2ltZyc6XG4gICAgICBjYXNlICdsaW5rJzpcbiAgICAgIGNhc2UgJ29iamVj
dCc6XG4gICAgICBjYXNlICdzb3VyY2UnOlxuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICB2
YXIgbGlzdGVuZXJzID0gdGhpcy5fd3JhcHBlclN0YXRlLmxpc3RlbmVycztcbiAgICAgICAgaWYg
KGxpc3RlbmVycykge1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxl
bmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsaXN0ZW5lcnNbaV0ucmVtb3ZlKCk7XG4gICAgICAg
ICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAg
ICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICBpbnB1dFZhbHVlVHJhY2tpbmcuc3RvcFRyYWNr
aW5nKHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2h0bWwnOlxuICAgICAgY2Fz
ZSAnaGVhZCc6XG4gICAgICBjYXNlICdib2R5JzpcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENv
bXBvbmVudHMgbGlrZSA8aHRtbD4gPGhlYWQ+IGFuZCA8Ym9keT4gY2FuJ3QgYmUgcmVtb3ZlZCBv
ciBhZGRlZFxuICAgICAgICAgKiBlYXNpbHkgaW4gYSBjcm9zcy1icm93c2VyIHdheSwgaG93ZXZl
ciBpdCdzIHZhbHVhYmxlIHRvIGJlIGFibGUgdG9cbiAgICAgICAgICogdGFrZSBhZHZhbnRhZ2Ug
b2YgUmVhY3QncyByZWNvbmNpbGlhdGlvbiBmb3Igc3R5bGluZyBhbmQgPHRpdGxlPlxuICAgICAg
ICAgKiBtYW5hZ2VtZW50LiBTbyB3ZSBqdXN0IGRvY3VtZW50IGl0IGFuZCB0aHJvdyBpbiBkYW5n
ZXJvdXMgY2FzZXMuXG4gICAgICAgICAqL1xuICAgICAgICAgdHJ1ZSA/ICBmYWxzZSA/IGludmFy
aWFudChmYWxzZSwgJzwlcz4gdHJpZWQgdG8gdW5tb3VudC4gQmVjYXVzZSBvZiBjcm9zcy1icm93
c2VyIHF1aXJrcyBpdCBpcyBpbXBvc3NpYmxlIHRvIHVubW91bnQgc29tZSB0b3AtbGV2ZWwgY29t
cG9uZW50cyAoZWcgPGh0bWw+LCA8aGVhZD4sIGFuZCA8Ym9keT4pIHJlbGlhYmx5IGFuZCBlZmZp
Y2llbnRseS4gVG8gZml4IHRoaXMsIGhhdmUgYSBzaW5nbGUgdG9wLWxldmVsIGNvbXBvbmVudCB0
aGF0IG5ldmVyIHVubW91bnRzIHJlbmRlciB0aGVzZSBlbGVtZW50cy4nLCB0aGlzLl90YWcpIDog
X3Byb2RJbnZhcmlhbnQoJzY2JywgdGhpcy5fdGFnKSA6IHZvaWQgMDtcbiAgICAgICAgYnJlYWs7
XG4gICAgfVxuXG4gICAgdGhpcy51bm1vdW50Q2hpbGRyZW4oc2FmZWx5KTtcbiAgICBSZWFjdERP
TUNvbXBvbmVudFRyZWUudW5jYWNoZU5vZGUodGhpcyk7XG4gICAgRXZlbnRQbHVnaW5IdWIuZGVs
ZXRlQWxsTGlzdGVuZXJzKHRoaXMpO1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSAwO1xuICAgIHRo
aXMuX2RvbUlEID0gMDtcbiAgICB0aGlzLl93cmFwcGVyU3RhdGUgPSBudWxsO1xuXG4gICAgaWYg
KGZhbHNlKSB7XG4gICAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMs
IG51bGwpO1xuICAgIH1cbiAgfSxcblxuICBnZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rpb24gKCkg
e1xuICAgIHJldHVybiBnZXROb2RlKHRoaXMpO1xuICB9XG59O1xuXG5fYXNzaWduKFJlYWN0RE9N
Q29tcG9uZW50LnByb3RvdHlwZSwgUmVhY3RET01Db21wb25lbnQuTWl4aW4sIFJlYWN0TXVsdGlD
aGlsZC5NaXhpbik7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01Db21wb25lbnQ7XG5cbi8q
KiovIH0pLFxuLyogMTM5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICovXG5cblxuXG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg0KTtcblxudmFyIGZvY3VzTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oNjgp
O1xuXG52YXIgQXV0b0ZvY3VzVXRpbHMgPSB7XG4gIGZvY3VzRE9NQ29tcG9uZW50OiBmdW5jdGlv
biAoKSB7XG4gICAgZm9jdXNOb2RlKFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUlu
c3RhbmNlKHRoaXMpKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBBdXRvRm9jdXNVdGls
cztcblxuLyoqKi8gfSksXG4vKiAxNDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBDU1NQcm9wZXJ0eSA9IF9fd2VicGFja19y
ZXF1aXJlX18oNjkpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg1KTtcbnZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18o
Nyk7XG5cbnZhciBjYW1lbGl6ZVN0eWxlTmFtZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQxKTtc
bnZhciBkYW5nZXJvdXNTdHlsZVZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDMpO1xudmFy
IGh5cGhlbmF0ZVN0eWxlTmFtZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ0KTtcbnZhciBtZW1v
aXplU3RyaW5nT25seSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ2KTtcbnZhciB3YXJuaW5nID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxudmFyIHByb2Nlc3NTdHlsZU5hbWUgPSBtZW1vaXpl
U3RyaW5nT25seShmdW5jdGlvbiAoc3R5bGVOYW1lKSB7XG4gIHJldHVybiBoeXBoZW5hdGVTdHls
ZU5hbWUoc3R5bGVOYW1lKTtcbn0pO1xuXG52YXIgaGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgPSBm
YWxzZTtcbnZhciBzdHlsZUZsb2F0QWNjZXNzb3IgPSAnY3NzRmxvYXQnO1xuaWYgKEV4ZWN1dGlv
bkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICB2YXIgdGVtcFN0eWxlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7XG4gIHRyeSB7XG4gICAgLy8gSUU4IHRocm93cyBcIklu
dmFsaWQgYXJndW1lbnQuXCIgaWYgcmVzZXR0aW5nIHNob3J0aGFuZCBzdHlsZSBwcm9wZXJ0aWVz
LlxuICAgIHRlbXBTdHlsZS5mb250ID0gJyc7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBoYXNTaG9y
dGhhbmRQcm9wZXJ0eUJ1ZyA9IHRydWU7XG4gIH1cbiAgLy8gSUU4IG9ubHkgc3VwcG9ydHMgYWNj
ZXNzaW5nIGNzc0Zsb2F0IChzdGFuZGFyZCkgYXMgc3R5bGVGbG9hdFxuICBpZiAoZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdHls
ZUZsb2F0QWNjZXNzb3IgPSAnc3R5bGVGbG9hdCc7XG4gIH1cbn1cblxuaWYgKGZhbHNlKSB7XG4g
IC8vICdtc1RyYW5zZm9ybScgaXMgY29ycmVjdCwgYnV0IHRoZSBvdGhlciBwcmVmaXhlcyBzaG91
bGQgYmUgY2FwaXRhbGl6ZWRcbiAgdmFyIGJhZFZlbmRvcmVkU3R5bGVOYW1lUGF0dGVybiA9IC9e
KD86d2Via2l0fG1venxvKVtBLVpdLztcblxuICAvLyBzdHlsZSB2YWx1ZXMgc2hvdWxkbid0IGNv
bnRhaW4gYSBzZW1pY29sb25cbiAgdmFyIGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVy
biA9IC87XFxzKiQvO1xuXG4gIHZhciB3YXJuZWRTdHlsZU5hbWVzID0ge307XG4gIHZhciB3YXJu
ZWRTdHlsZVZhbHVlcyA9IHt9O1xuICB2YXIgd2FybmVkRm9yTmFOVmFsdWUgPSBmYWxzZTtcblxu
ICB2YXIgd2Fybkh5cGhlbmF0ZWRTdHlsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSwgb3duZXIpIHtc
biAgICBpZiAod2FybmVkU3R5bGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB3YXJuZWRT
dHlsZU5hbWVzW25hbWVdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgd2FybmVkU3R5
bGVOYW1lc1tuYW1lXSA9IHRydWU7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdVbnN1cHBvcnRlZCBzdHlsZSBwcm9wZXJ0eSAlcy4g
RGlkIHlvdSBtZWFuICVzPyVzJywgbmFtZSwgY2FtZWxpemVTdHlsZU5hbWUobmFtZSksIGNoZWNr
UmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwO1xuICB9O1xuXG4gIHZhciB3YXJuQmFkVmVu
ZG9yZWRTdHlsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSwgb3duZXIpIHtcbiAgICBpZiAod2FybmVk
U3R5bGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB3YXJuZWRTdHlsZU5hbWVzW25hbWVd
KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSA9
IHRydWU7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoZmFsc2UsICdVbnN1cHBvcnRlZCB2ZW5kb3ItcHJlZml4ZWQgc3R5bGUgcHJvcGVydHkgJXMu
IERpZCB5b3UgbWVhbiAlcz8lcycsIG5hbWUsIG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkg
KyBuYW1lLnNsaWNlKDEpLCBjaGVja1JlbmRlck1lc3NhZ2Uob3duZXIpKSA6IHZvaWQgMDtcbiAg
fTtcblxuICB2YXIgd2FyblN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uID0gZnVuY3Rpb24gKG5hbWUs
IHZhbHVlLCBvd25lcikge1xuICAgIGlmICh3YXJuZWRTdHlsZVZhbHVlcy5oYXNPd25Qcm9wZXJ0
eSh2YWx1ZSkgJiYgd2FybmVkU3R5bGVWYWx1ZXNbdmFsdWVdKSB7XG4gICAgICByZXR1cm47XG4g
ICAgfVxuXG4gICAgd2FybmVkU3R5bGVWYWx1ZXNbdmFsdWVdID0gdHJ1ZTtcbiAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgXCJTdHlsZSBw
cm9wZXJ0eSB2YWx1ZXMgc2hvdWxkbid0IGNvbnRhaW4gYSBzZW1pY29sb24uJXMgXCIgKyAnVHJ5
IFwiJXM6ICVzXCIgaW5zdGVhZC4nLCBjaGVja1JlbmRlck1lc3NhZ2Uob3duZXIpLCBuYW1lLCB2
YWx1ZS5yZXBsYWNlKGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybiwgJycpKSA6IHZv
aWQgMDtcbiAgfTtcblxuICB2YXIgd2FyblN0eWxlVmFsdWVJc05hTiA9IGZ1bmN0aW9uIChuYW1l
LCB2YWx1ZSwgb3duZXIpIHtcbiAgICBpZiAod2FybmVkRm9yTmFOVmFsdWUpIHtcbiAgICAgIHJl
dHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRGb3JOYU5WYWx1ZSA9IHRydWU7XG4gICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgTmFOYCBp
cyBhbiBpbnZhbGlkIHZhbHVlIGZvciB0aGUgYCVzYCBjc3Mgc3R5bGUgcHJvcGVydHkuJXMnLCBu
YW1lLCBjaGVja1JlbmRlck1lc3NhZ2Uob3duZXIpKSA6IHZvaWQgMDtcbiAgfTtcblxuICB2YXIg
Y2hlY2tSZW5kZXJNZXNzYWdlID0gZnVuY3Rpb24gKG93bmVyKSB7XG4gICAgaWYgKG93bmVyKSB7
XG4gICAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICAgIGlmIChuYW1lKSB7XG4g
ICAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdg
Lic7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfTtcblxuICAvKipcbiAgICog
QHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKiBAcGFyYW0g
e1JlYWN0RE9NQ29tcG9uZW50fSBjb21wb25lbnRcbiAgICovXG4gIHZhciB3YXJuVmFsaWRTdHls
ZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgY29tcG9uZW50KSB7XG4gICAgdmFyIG93bmVyO1xu
ICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxl
bWVudC5fb3duZXI7XG4gICAgfVxuICAgIGlmIChuYW1lLmluZGV4T2YoJy0nKSA+IC0xKSB7XG4g
ICAgICB3YXJuSHlwaGVuYXRlZFN0eWxlTmFtZShuYW1lLCBvd25lcik7XG4gICAgfSBlbHNlIGlm
IChiYWRWZW5kb3JlZFN0eWxlTmFtZVBhdHRlcm4udGVzdChuYW1lKSkge1xuICAgICAgd2FybkJh
ZFZlbmRvcmVkU3R5bGVOYW1lKG5hbWUsIG93bmVyKTtcbiAgICB9IGVsc2UgaWYgKGJhZFN0eWxl
VmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgd2FyblN0eWxl
VmFsdWVXaXRoU2VtaWNvbG9uKG5hbWUsIHZhbHVlLCBvd25lcik7XG4gICAgfVxuXG4gICAgaWYg
KHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgaXNOYU4odmFsdWUpKSB7XG4gICAgICB3YXJu
U3R5bGVWYWx1ZUlzTmFOKG5hbWUsIHZhbHVlLCBvd25lcik7XG4gICAgfVxuICB9O1xufVxuXG4v
KipcbiAqIE9wZXJhdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCBDU1MgcHJvcGVydGllcy5cbiAqL1xu
dmFyIENTU1Byb3BlcnR5T3BlcmF0aW9ucyA9IHtcbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMgYSBt
YXBwaW5nIG9mIHN0eWxlIHByb3BlcnRpZXMgZm9yIHVzZSBhcyBpbmxpbmUgc3R5bGVzOlxuICAg
KlxuICAgKiAgID4gY3JlYXRlTWFya3VwRm9yU3R5bGVzKHt3aWR0aDogJzIwMHB4JywgaGVpZ2h0
OiAwfSlcbiAgICogICBcIndpZHRoOjIwMHB4O2hlaWdodDowO1wiXG4gICAqXG4gICAqIFVuZGVm
aW5lZCB2YWx1ZXMgYXJlIGlnbm9yZWQgc28gdGhhdCBkZWNsYXJhdGl2ZSBwcm9ncmFtbWluZyBp
cyBlYXNpZXIuXG4gICAqIFRoZSByZXN1bHQgc2hvdWxkIGJlIEhUTUwtZXNjYXBlZCBiZWZvcmUg
aW5zZXJ0aW9uIGludG8gdGhlIERPTS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0eWxl
c1xuICAgKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50fSBjb21wb25lbnRcbiAgICogQHJldHVy
biB7P3N0cmluZ31cbiAgICovXG4gIGNyZWF0ZU1hcmt1cEZvclN0eWxlczogZnVuY3Rpb24gKHN0
eWxlcywgY29tcG9uZW50KSB7XG4gICAgdmFyIHNlcmlhbGl6ZWQgPSAnJztcbiAgICBmb3IgKHZh
ciBzdHlsZU5hbWUgaW4gc3R5bGVzKSB7XG4gICAgICBpZiAoIXN0eWxlcy5oYXNPd25Qcm9wZXJ0
eShzdHlsZU5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIGlz
Q3VzdG9tUHJvcGVydHkgPSBzdHlsZU5hbWUuaW5kZXhPZignLS0nKSA9PT0gMDtcbiAgICAgIHZh
ciBzdHlsZVZhbHVlID0gc3R5bGVzW3N0eWxlTmFtZV07XG4gICAgICBpZiAoZmFsc2UpIHtcbiAg
ICAgICAgaWYgKCFpc0N1c3RvbVByb3BlcnR5KSB7XG4gICAgICAgICAgd2FyblZhbGlkU3R5bGUo
c3R5bGVOYW1lLCBzdHlsZVZhbHVlLCBjb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4g
ICAgICBpZiAoc3R5bGVWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHNlcmlhbGl6ZWQgKz0gcHJv
Y2Vzc1N0eWxlTmFtZShzdHlsZU5hbWUpICsgJzonO1xuICAgICAgICBzZXJpYWxpemVkICs9IGRh
bmdlcm91c1N0eWxlVmFsdWUoc3R5bGVOYW1lLCBzdHlsZVZhbHVlLCBjb21wb25lbnQsIGlzQ3Vz
dG9tUHJvcGVydHkpICsgJzsnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc2VyaWFsaXpl
ZCB8fCBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgbXVsdGlw
bGUgc3R5bGVzIG9uIGEgbm9kZS4gIElmIGEgdmFsdWUgaXMgc3BlY2lmaWVkIGFzXG4gICAqICcn
IChlbXB0eSBzdHJpbmcpLCB0aGUgY29ycmVzcG9uZGluZyBzdHlsZSBwcm9wZXJ0eSB3aWxsIGJl
IHVuc2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAgICogQHBhcmFt
IHtvYmplY3R9IHN0eWxlc1xuICAgKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50fSBjb21wb25l
bnRcbiAgICovXG4gIHNldFZhbHVlRm9yU3R5bGVzOiBmdW5jdGlvbiAobm9kZSwgc3R5bGVzLCBj
b21wb25lbnQpIHtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICBpbnN0YW5jZUlEOiBjb21wb25l
bnQuX2RlYnVnSUQsXG4gICAgICAgIHR5cGU6ICd1cGRhdGUgc3R5bGVzJyxcbiAgICAgICAgcGF5
bG9hZDogc3R5bGVzXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgc3R5bGUgPSBub2RlLnN0
eWxlO1xuICAgIGZvciAodmFyIHN0eWxlTmFtZSBpbiBzdHlsZXMpIHtcbiAgICAgIGlmICghc3R5
bGVzLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAg
ICB9XG4gICAgICB2YXIgaXNDdXN0b21Qcm9wZXJ0eSA9IHN0eWxlTmFtZS5pbmRleE9mKCctLScp
ID09PSAwO1xuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIGlmICghaXNDdXN0b21Qcm9wZXJ0
eSkge1xuICAgICAgICAgIHdhcm5WYWxpZFN0eWxlKHN0eWxlTmFtZSwgc3R5bGVzW3N0eWxlTmFt
ZV0sIGNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBzdHlsZVZhbHVl
ID0gZGFuZ2Vyb3VzU3R5bGVWYWx1ZShzdHlsZU5hbWUsIHN0eWxlc1tzdHlsZU5hbWVdLCBjb21w
b25lbnQsIGlzQ3VzdG9tUHJvcGVydHkpO1xuICAgICAgaWYgKHN0eWxlTmFtZSA9PT0gJ2Zsb2F0
JyB8fCBzdHlsZU5hbWUgPT09ICdjc3NGbG9hdCcpIHtcbiAgICAgICAgc3R5bGVOYW1lID0gc3R5
bGVGbG9hdEFjY2Vzc29yO1xuICAgICAgfVxuICAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHkpIHtc
biAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkoc3R5bGVOYW1lLCBzdHlsZVZhbHVlKTtcbiAgICAg
IH0gZWxzZSBpZiAoc3R5bGVWYWx1ZSkge1xuICAgICAgICBzdHlsZVtzdHlsZU5hbWVdID0gc3R5
bGVWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBleHBhbnNpb24gPSBoYXNTaG9y
dGhhbmRQcm9wZXJ0eUJ1ZyAmJiBDU1NQcm9wZXJ0eS5zaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lv
bnNbc3R5bGVOYW1lXTtcbiAgICAgICAgaWYgKGV4cGFuc2lvbikge1xuICAgICAgICAgIC8vIFNo
b3J0aGFuZCBwcm9wZXJ0eSB0aGF0IElFOCB3b24ndCBsaWtlIHVuc2V0dGluZywgc28gdW5zZXQg
ZWFjaFxuICAgICAgICAgIC8vIGNvbXBvbmVudCB0byBwbGFjYXRlIGl0XG4gICAgICAgICAgZm9y
ICh2YXIgaW5kaXZpZHVhbFN0eWxlTmFtZSBpbiBleHBhbnNpb24pIHtcbiAgICAgICAgICAgIHN0
eWxlW2luZGl2aWR1YWxTdHlsZU5hbWVdID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVs
c2Uge1xuICAgICAgICAgIHN0eWxlW3N0eWxlTmFtZV0gPSAnJztcbiAgICAgICAgfVxuICAgICAg
fVxuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDU1NQcm9wZXJ0eU9wZXJhdGlv
bnM7XG5cbi8qKiovIH0pLFxuLyogMTQxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBD
b3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuXG5cbnZhciBjYW1l
bGl6ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQyKTtcblxudmFyIG1zUGF0dGVybiA9IC9eLW1z
LS87XG5cbi8qKlxuICogQ2FtZWxjYXNlcyBhIGh5cGhlbmF0ZWQgQ1NTIHByb3BlcnR5IG5hbWUs
IGZvciBleGFtcGxlOlxuICpcbiAqICAgPiBjYW1lbGl6ZVN0eWxlTmFtZSgnYmFja2dyb3VuZC1j
b2xvcicpXG4gKiAgIDwgXCJiYWNrZ3JvdW5kQ29sb3JcIlxuICogICA+IGNhbWVsaXplU3R5bGVO
YW1lKCctbW96LXRyYW5zaXRpb24nKVxuICogICA8IFwiTW96VHJhbnNpdGlvblwiXG4gKiAgID4g
Y2FtZWxpemVTdHlsZU5hbWUoJy1tcy10cmFuc2l0aW9uJylcbiAqICAgPCBcIm1zVHJhbnNpdGlv
blwiXG4gKlxuICogQXMgQW5kaSBTbWl0aCBzdWdnZXN0c1xuICogKGh0dHA6Ly93d3cuYW5kaXNt
aXRoLmNvbS9ibG9nLzIwMTIvMDIvbW9kZXJuaXpyLXByZWZpeGVkLyksIGFuIGAtbXNgIHByZWZp
eFxuICogaXMgY29udmVydGVkIHRvIGxvd2VyY2FzZSBgbXNgLlxuICpcbiAqIEBwYXJhbSB7c3Ry
aW5nfSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gY2FtZWxpemVT
dHlsZU5hbWUoc3RyaW5nKSB7XG4gIHJldHVybiBjYW1lbGl6ZShzdHJpbmcucmVwbGFjZShtc1Bh
dHRlcm4sICdtcy0nKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FtZWxpemVTdHlsZU5hbWU7
XG5cbi8qKiovIH0pLFxuLyogMTQyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8qKlxuICog
Q29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbnZhciBfaHlwaGVu
UGF0dGVybiA9IC8tKC4pL2c7XG5cbi8qKlxuICogQ2FtZWxjYXNlcyBhIGh5cGhlbmF0ZWQgc3Ry
aW5nLCBmb3IgZXhhbXBsZTpcbiAqXG4gKiAgID4gY2FtZWxpemUoJ2JhY2tncm91bmQtY29sb3In
KVxuICogICA8IFwiYmFja2dyb3VuZENvbG9yXCJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3Ry
aW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGNhbWVsaXplKHN0cmluZykg
e1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoX2h5cGhlblBhdHRlcm4sIGZ1bmN0aW9uIChfLCBj
aGFyYWN0ZXIpIHtcbiAgICByZXR1cm4gY2hhcmFjdGVyLnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xu
fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhbWVsaXplO1xuXG4vKioqLyB9KSxcbi8qIDE0MyAqL1xu
LyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxu
dmFyIENTU1Byb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OSk7XG52YXIgd2FybmluZyA9
IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cbnZhciBpc1VuaXRsZXNzTnVtYmVyID0gQ1NTUHJv
cGVydHkuaXNVbml0bGVzc051bWJlcjtcbnZhciBzdHlsZVdhcm5pbmdzID0ge307XG5cbi8qKlxu
ICogQ29udmVydCBhIHZhbHVlIGludG8gdGhlIHByb3BlciBjc3Mgd3JpdGFibGUgdmFsdWUuIFRo
ZSBzdHlsZSBuYW1lIGBuYW1lYFxuICogc2hvdWxkIGJlIGxvZ2ljYWwgKG5vIGh5cGhlbnMpLCBh
cyBzcGVjaWZpZWRcbiAqIGluIGBDU1NQcm9wZXJ0eS5pc1VuaXRsZXNzTnVtYmVyYC5cbiAqXG4g
KiBAcGFyYW0ge3N0cmluZ30gbmFtZSBDU1MgcHJvcGVydHkgbmFtZSBzdWNoIGFzIGB0b3BNYXJn
aW5gLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBDU1MgcHJvcGVydHkgdmFsdWUgc3VjaCBhcyBgMTBw
eGAuXG4gKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50fSBjb21wb25lbnRcbiAqIEByZXR1cm4g
e3N0cmluZ30gTm9ybWFsaXplZCBzdHlsZSB2YWx1ZSB3aXRoIGRpbWVuc2lvbnMgYXBwbGllZC5c
biAqL1xuZnVuY3Rpb24gZGFuZ2Vyb3VzU3R5bGVWYWx1ZShuYW1lLCB2YWx1ZSwgY29tcG9uZW50
LCBpc0N1c3RvbVByb3BlcnR5KSB7XG4gIC8vIE5vdGUgdGhhdCB3ZSd2ZSByZW1vdmVkIGVzY2Fw
ZVRleHRGb3JCcm93c2VyKCkgY2FsbHMgaGVyZSBzaW5jZSB0aGVcbiAgLy8gd2hvbGUgc3RyaW5n
IHdpbGwgYmUgZXNjYXBlZCB3aGVuIHRoZSBhdHRyaWJ1dGUgaXMgaW5qZWN0ZWQgaW50b1xuICAv
LyB0aGUgbWFya3VwLiBJZiB5b3UgcHJvdmlkZSB1bnNhZmUgdXNlciBkYXRhIGhlcmUgdGhleSBj
YW4gaW5qZWN0XG4gIC8vIGFyYml0cmFyeSBDU1Mgd2hpY2ggbWF5IGJlIHByb2JsZW1hdGljIChJ
IGNvdWxkbid0IHJlcHJvIHRoaXMpOlxuICAvLyBodHRwczovL3d3dy5vd2FzcC5vcmcvaW5kZXgu
cGhwL1hTU19GaWx0ZXJfRXZhc2lvbl9DaGVhdF9TaGVldFxuICAvLyBodHRwOi8vd3d3LnRoZXNw
YW5uZXIuY28udWsvMjAwNy8xMS8yNi91bHRpbWF0ZS14c3MtY3NzLWluamVjdGlvbi9cbiAgLy8g
VGhpcyBpcyBub3QgYW4gWFNTIGhvbGUgYnV0IGluc3RlYWQgYSBwb3RlbnRpYWwgQ1NTIGluamVj
dGlvbiBpc3N1ZVxuICAvLyB3aGljaCBoYXMgbGVhZCB0byBhIGdyZWF0ZXIgZGlzY3Vzc2lvbiBh
Ym91dCBob3cgd2UncmUgZ29pbmcgdG9cbiAgLy8gdHJ1c3QgVVJMcyBtb3ZpbmcgZm9yd2FyZC4g
U2VlICMyMTE1OTAxXG5cbiAgdmFyIGlzRW1wdHkgPSB2YWx1ZSA9PSBudWxsIHx8IHR5cGVvZiB2
YWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8IHZhbHVlID09PSAnJztcbiAgaWYgKGlzRW1wdHkpIHtcbiAg
ICByZXR1cm4gJyc7XG4gIH1cblxuICB2YXIgaXNOb25OdW1lcmljID0gaXNOYU4odmFsdWUpO1xu
ICBpZiAoaXNDdXN0b21Qcm9wZXJ0eSB8fCBpc05vbk51bWVyaWMgfHwgdmFsdWUgPT09IDAgfHwg
aXNVbml0bGVzc051bWJlci5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiBpc1VuaXRsZXNzTnVtYmVy
W25hbWVdKSB7XG4gICAgcmV0dXJuICcnICsgdmFsdWU7IC8vIGNhc3QgdG8gc3RyaW5nXG4gIH1c
blxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIGlmIChmYWxzZSkge1xu
ICAgICAgLy8gQWxsb3cgJzAnIHRvIHBhc3MgdGhyb3VnaCB3aXRob3V0IHdhcm5pbmcuIDAgaXMg
YWxyZWFkeSBzcGVjaWFsIGFuZFxuICAgICAgLy8gZG9lc24ndCByZXF1aXJlIHVuaXRzLCBzbyB3
ZSBkb24ndCBuZWVkIHRvIHdhcm4gYWJvdXQgaXQuXG4gICAgICBpZiAoY29tcG9uZW50ICYmIHZh
bHVlICE9PSAnMCcpIHtcbiAgICAgICAgdmFyIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxl
bWVudC5fb3duZXI7XG4gICAgICAgIHZhciBvd25lck5hbWUgPSBvd25lciA/IG93bmVyLmdldE5h
bWUoKSA6IG51bGw7XG4gICAgICAgIGlmIChvd25lck5hbWUgJiYgIXN0eWxlV2FybmluZ3Nbb3du
ZXJOYW1lXSkge1xuICAgICAgICAgIHN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXSA9IHt9O1xuICAg
ICAgICB9XG4gICAgICAgIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKG93bmVyTmFt
ZSkge1xuICAgICAgICAgIHZhciB3YXJuaW5ncyA9IHN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXTtc
biAgICAgICAgICB3YXJuZWQgPSB3YXJuaW5nc1tuYW1lXTtcbiAgICAgICAgICBpZiAoIXdhcm5l
ZCkge1xuICAgICAgICAgICAgd2FybmluZ3NbbmFtZV0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAg
ICAgICAgfVxuICAgICAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYSBgJXNgIHRhZyAob3du
ZXI6IGAlc2ApIHdhcyBwYXNzZWQgYSBudW1lcmljIHN0cmluZyB2YWx1ZSAnICsgJ2ZvciBDU1Mg
cHJvcGVydHkgYCVzYCAodmFsdWU6IGAlc2ApIHdoaWNoIHdpbGwgYmUgdHJlYXRlZCAnICsgJ2Fz
IGEgdW5pdGxlc3MgbnVtYmVyIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUmVhY3QuJywgY29tcG9u
ZW50Ll9jdXJyZW50RWxlbWVudC50eXBlLCBvd25lck5hbWUgfHwgJ3Vua25vd24nLCBuYW1lLCB2
YWx1ZSkgOiB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFsdWUgPSB2
YWx1ZS50cmltKCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlICsgJ3B4Jztcbn1cblxubW9kdWxlLmV4
cG9ydHMgPSBkYW5nZXJvdXNTdHlsZVZhbHVlO1xuXG4vKioqLyB9KSxcbi8qIDE0NCAqL1xuLyoq
Ki8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
InVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNo
ZWNrc1xuICovXG5cblxuXG52YXIgaHlwaGVuYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDUp
O1xuXG52YXIgbXNQYXR0ZXJuID0gL15tcy0vO1xuXG4vKipcbiAqIEh5cGhlbmF0ZXMgYSBjYW1l
bGNhc2VkIENTUyBwcm9wZXJ0eSBuYW1lLCBmb3IgZXhhbXBsZTpcbiAqXG4gKiAgID4gaHlwaGVu
YXRlU3R5bGVOYW1lKCdiYWNrZ3JvdW5kQ29sb3InKVxuICogICA8IFwiYmFja2dyb3VuZC1jb2xv
clwiXG4gKiAgID4gaHlwaGVuYXRlU3R5bGVOYW1lKCdNb3pUcmFuc2l0aW9uJylcbiAqICAgPCBc
Ii1tb3otdHJhbnNpdGlvblwiXG4gKiAgID4gaHlwaGVuYXRlU3R5bGVOYW1lKCdtc1RyYW5zaXRp
b24nKVxuICogICA8IFwiLW1zLXRyYW5zaXRpb25cIlxuICpcbiAqIEFzIE1vZGVybml6ciBzdWdn
ZXN0cyAoaHR0cDovL21vZGVybml6ci5jb20vZG9jcy8jcHJlZml4ZWQpLCBhbiBgbXNgIHByZWZp
eFxuICogaXMgY29udmVydGVkIHRvIGAtbXMtYC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3Ry
aW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGh5cGhlbmF0ZVN0eWxlTmFt
ZShzdHJpbmcpIHtcbiAgcmV0dXJuIGh5cGhlbmF0ZShzdHJpbmcpLnJlcGxhY2UobXNQYXR0ZXJu
LCAnLW1zLScpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGh5cGhlbmF0ZVN0eWxlTmFtZTtcblxu
LyoqKi8gfSksXG4vKiAxNDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLyoqXG4gKiBDb3B5
cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxudmFyIF91cHBlcmNhc2VQ
YXR0ZXJuID0gLyhbQS1aXSkvZztcblxuLyoqXG4gKiBIeXBoZW5hdGVzIGEgY2FtZWxjYXNlZCBz
dHJpbmcsIGZvciBleGFtcGxlOlxuICpcbiAqICAgPiBoeXBoZW5hdGUoJ2JhY2tncm91bmRDb2xv
cicpXG4gKiAgIDwgXCJiYWNrZ3JvdW5kLWNvbG9yXCJcbiAqXG4gKiBGb3IgQ1NTIHN0eWxlIG5h
bWVzLCB1c2UgYGh5cGhlbmF0ZVN0eWxlTmFtZWAgaW5zdGVhZCB3aGljaCB3b3JrcyBwcm9wZXJs
eVxuICogd2l0aCBhbGwgdmVuZG9yIHByZWZpeGVzLCBpbmNsdWRpbmcgYG1zYC5cbiAqXG4gKiBA
cGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9u
IGh5cGhlbmF0ZShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKF91cHBlcmNhc2VQ
YXR0ZXJuLCAnLSQxJykudG9Mb3dlckNhc2UoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoeXBo
ZW5hdGU7XG5cbi8qKiovIH0pLFxuLyogMTQ2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4g
KiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlc
biAqL1xuXG5cblxuLyoqXG4gKiBNZW1vaXplcyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rp
b24gdGhhdCBhY2NlcHRzIG9uZSBzdHJpbmcgYXJndW1lbnQuXG4gKi9cblxuZnVuY3Rpb24gbWVt
b2l6ZVN0cmluZ09ubHkoY2FsbGJhY2spIHtcbiAgdmFyIGNhY2hlID0ge307XG4gIHJldHVybiBm
dW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgaWYgKCFjYWNoZS5oYXNPd25Qcm9wZXJ0eShzdHJpbmcp
KSB7XG4gICAgICBjYWNoZVtzdHJpbmddID0gY2FsbGJhY2suY2FsbCh0aGlzLCBzdHJpbmcpO1xu
ICAgIH1cbiAgICByZXR1cm4gY2FjaGVbc3RyaW5nXTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9y
dHMgPSBtZW1vaXplU3RyaW5nT25seTtcblxuLyoqKi8gfSksXG4vKiAxNDcgKi9cbi8qKiovIChm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ug
c3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBlc2Nh
cGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTtcblxuLyoq
XG4gKiBFc2NhcGVzIGF0dHJpYnV0ZSB2YWx1ZSB0byBwcmV2ZW50IHNjcmlwdGluZyBhdHRhY2tz
LlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVmFsdWUgdG8gZXNjYXBlLlxuICogQHJldHVybiB7
c3RyaW5nfSBBbiBlc2NhcGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gcXVvdGVBdHRyaWJ1dGVW
YWx1ZUZvckJyb3dzZXIodmFsdWUpIHtcbiAgcmV0dXJuICdcIicgKyBlc2NhcGVUZXh0Q29udGVu
dEZvckJyb3dzZXIodmFsdWUpICsgJ1wiJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBxdW90ZUF0
dHJpYnV0ZVZhbHVlRm9yQnJvd3NlcjtcblxuLyoqKi8gfSksXG4vKiAxNDggKi9cbi8qKiovIChm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ug
c3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBFdmVu
dFBsdWdpbkh1YiA9IF9fd2VicGFja19yZXF1aXJlX18oMjApO1xuXG5mdW5jdGlvbiBydW5FdmVu
dFF1ZXVlSW5CYXRjaChldmVudHMpIHtcbiAgRXZlbnRQbHVnaW5IdWIuZW5xdWV1ZUV2ZW50cyhl
dmVudHMpO1xuICBFdmVudFBsdWdpbkh1Yi5wcm9jZXNzRXZlbnRRdWV1ZShmYWxzZSk7XG59XG5c
bnZhciBSZWFjdEV2ZW50RW1pdHRlck1peGluID0ge1xuICAvKipcbiAgICogU3RyZWFtcyBhIGZp
cmVkIHRvcC1sZXZlbCBldmVudCB0byBgRXZlbnRQbHVnaW5IdWJgIHdoZXJlIHBsdWdpbnMgaGF2
ZSB0aGVcbiAgICogb3Bwb3J0dW5pdHkgdG8gY3JlYXRlIGBSZWFjdEV2ZW50YHMgdG8gYmUgZGlz
cGF0Y2hlZC5cbiAgICovXG4gIGhhbmRsZVRvcExldmVsOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBl
LCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICB2YXIg
ZXZlbnRzID0gRXZlbnRQbHVnaW5IdWIuZXh0cmFjdEV2ZW50cyh0b3BMZXZlbFR5cGUsIHRhcmdl
dEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgcnVuRXZlbnRRdWV1
ZUluQmF0Y2goZXZlbnRzKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEV2ZW50
RW1pdHRlck1peGluO1xuXG4vKioqLyB9KSxcbi8qIDE0OSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtc
bi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIEV4ZWN1dGlvbkVudmly
b25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIG1h
cHBpbmcgb2Ygc3RhbmRhcmQgdmVuZG9yIHByZWZpeGVzIHVzaW5nIHRoZSBkZWZpbmVkIHN0eWxl
IHByb3BlcnR5IGFuZCBldmVudCBuYW1lLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZVBy
b3BcbiAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWVcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4g
Ki9cbmZ1bmN0aW9uIG1ha2VQcmVmaXhNYXAoc3R5bGVQcm9wLCBldmVudE5hbWUpIHtcbiAgdmFy
IHByZWZpeGVzID0ge307XG5cbiAgcHJlZml4ZXNbc3R5bGVQcm9wLnRvTG93ZXJDYXNlKCldID0g
ZXZlbnROYW1lLnRvTG93ZXJDYXNlKCk7XG4gIHByZWZpeGVzWydXZWJraXQnICsgc3R5bGVQcm9w
XSA9ICd3ZWJraXQnICsgZXZlbnROYW1lO1xuICBwcmVmaXhlc1snTW96JyArIHN0eWxlUHJvcF0g
PSAnbW96JyArIGV2ZW50TmFtZTtcbiAgcHJlZml4ZXNbJ21zJyArIHN0eWxlUHJvcF0gPSAnTVMn
ICsgZXZlbnROYW1lO1xuICBwcmVmaXhlc1snTycgKyBzdHlsZVByb3BdID0gJ28nICsgZXZlbnRO
YW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgcmV0dXJuIHByZWZpeGVzO1xufVxuXG4vKipcbiAqIEEg
bGlzdCBvZiBldmVudCBuYW1lcyB0byBhIGNvbmZpZ3VyYWJsZSBsaXN0IG9mIHZlbmRvciBwcmVm
aXhlcy5cbiAqL1xudmFyIHZlbmRvclByZWZpeGVzID0ge1xuICBhbmltYXRpb25lbmQ6IG1ha2VQ
cmVmaXhNYXAoJ0FuaW1hdGlvbicsICdBbmltYXRpb25FbmQnKSxcbiAgYW5pbWF0aW9uaXRlcmF0
aW9uOiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5pbWF0aW9uSXRlcmF0aW9uJyksXG4g
IGFuaW1hdGlvbnN0YXJ0OiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5pbWF0aW9uU3Rh
cnQnKSxcbiAgdHJhbnNpdGlvbmVuZDogbWFrZVByZWZpeE1hcCgnVHJhbnNpdGlvbicsICdUcmFu
c2l0aW9uRW5kJylcbn07XG5cbi8qKlxuICogRXZlbnQgbmFtZXMgdGhhdCBoYXZlIGFscmVhZHkg
YmVlbiBkZXRlY3RlZCBhbmQgcHJlZml4ZWQgKGlmIGFwcGxpY2FibGUpLlxuICovXG52YXIgcHJl
Zml4ZWRFdmVudE5hbWVzID0ge307XG5cbi8qKlxuICogRWxlbWVudCB0byBjaGVjayBmb3IgcHJl
Zml4ZXMgb24uXG4gKi9cbnZhciBzdHlsZSA9IHt9O1xuXG4vKipcbiAqIEJvb3RzdHJhcCBpZiBh
IERPTSBleGlzdHMuXG4gKi9cbmlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtc
biAgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5zdHlsZTtcblxuICAvLyBP
biBzb21lIHBsYXRmb3JtcywgaW4gcGFydGljdWxhciBzb21lIHJlbGVhc2VzIG9mIEFuZHJvaWQg
NC54LFxuICAvLyB0aGUgdW4tcHJlZml4ZWQgXCJhbmltYXRpb25cIiBhbmQgXCJ0cmFuc2l0aW9u
XCIgcHJvcGVydGllcyBhcmUgZGVmaW5lZCBvbiB0aGVcbiAgLy8gc3R5bGUgb2JqZWN0IGJ1dCB0
aGUgZXZlbnRzIHRoYXQgZmlyZSB3aWxsIHN0aWxsIGJlIHByZWZpeGVkLCBzbyB3ZSBuZWVkXG4g
IC8vIHRvIGNoZWNrIGlmIHRoZSB1bi1wcmVmaXhlZCBldmVudHMgYXJlIHVzYWJsZSwgYW5kIGlm
IG5vdCByZW1vdmUgdGhlbSBmcm9tIHRoZSBtYXAuXG4gIGlmICghKCdBbmltYXRpb25FdmVudCcg
aW4gd2luZG93KSkge1xuICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5hbmltYXRpb25lbmQuYW5p
bWF0aW9uO1xuICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5hbmltYXRpb25pdGVyYXRpb24uYW5p
bWF0aW9uO1xuICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5hbmltYXRpb25zdGFydC5hbmltYXRp
b247XG4gIH1cblxuICAvLyBTYW1lIGFzIGFib3ZlXG4gIGlmICghKCdUcmFuc2l0aW9uRXZlbnQn
IGluIHdpbmRvdykpIHtcbiAgICBkZWxldGUgdmVuZG9yUHJlZml4ZXMudHJhbnNpdGlvbmVuZC50
cmFuc2l0aW9uO1xuICB9XG59XG5cbi8qKlxuICogQXR0ZW1wdHMgdG8gZGV0ZXJtaW5lIHRoZSBj
b3JyZWN0IHZlbmRvciBwcmVmaXhlZCBldmVudCBuYW1lLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5n
fSBldmVudE5hbWVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldFZlbmRv
clByZWZpeGVkRXZlbnROYW1lKGV2ZW50TmFtZSkge1xuICBpZiAocHJlZml4ZWRFdmVudE5hbWVz
W2V2ZW50TmFtZV0pIHtcbiAgICByZXR1cm4gcHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV07
XG4gIH0gZWxzZSBpZiAoIXZlbmRvclByZWZpeGVzW2V2ZW50TmFtZV0pIHtcbiAgICByZXR1cm4g
ZXZlbnROYW1lO1xuICB9XG5cbiAgdmFyIHByZWZpeE1hcCA9IHZlbmRvclByZWZpeGVzW2V2ZW50
TmFtZV07XG5cbiAgZm9yICh2YXIgc3R5bGVQcm9wIGluIHByZWZpeE1hcCkge1xuICAgIGlmIChw
cmVmaXhNYXAuaGFzT3duUHJvcGVydHkoc3R5bGVQcm9wKSAmJiBzdHlsZVByb3AgaW4gc3R5bGUp
IHtcbiAgICAgIHJldHVybiBwcmVmaXhlZEV2ZW50TmFtZXNbZXZlbnROYW1lXSA9IHByZWZpeE1h
cFtzdHlsZVByb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnJztcbn1cblxubW9kdWxlLmV4
cG9ydHMgPSBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZTtcblxuLyoqKi8gfSksXG4vKiAxNTAg
Ki9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxu
XG5cbnZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMiksXG4gICAgX2Fz
c2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cbnZhciBET01Qcm9wZXJ0eU9wZXJhdGlv
bnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKTtcbnZhciBMaW5rZWRWYWx1ZVV0aWxzID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg0MCk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg0KTtcbnZhciBSZWFjdFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDgpO1xuXG52YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbnZhciB3YXJu
aW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxudmFyIGRpZFdhcm5WYWx1ZUxpbmsgPSBm
YWxzZTtcbnZhciBkaWRXYXJuQ2hlY2tlZExpbmsgPSBmYWxzZTtcbnZhciBkaWRXYXJuVmFsdWVE
ZWZhdWx0VmFsdWUgPSBmYWxzZTtcbnZhciBkaWRXYXJuQ2hlY2tlZERlZmF1bHRDaGVja2VkID0g
ZmFsc2U7XG52YXIgZGlkV2FybkNvbnRyb2xsZWRUb1VuY29udHJvbGxlZCA9IGZhbHNlO1xudmFy
IGRpZFdhcm5VbmNvbnRyb2xsZWRUb0NvbnRyb2xsZWQgPSBmYWxzZTtcblxuZnVuY3Rpb24gZm9y
Y2VVcGRhdGVJZk1vdW50ZWQoKSB7XG4gIGlmICh0aGlzLl9yb290Tm9kZUlEKSB7XG4gICAgLy8g
RE9NIGNvbXBvbmVudCBpcyBzdGlsbCBtb3VudGVkOyB1cGRhdGVcbiAgICBSZWFjdERPTUlucHV0
LnVwZGF0ZVdyYXBwZXIodGhpcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNDb250cm9sbGVkKHBy
b3BzKSB7XG4gIHZhciB1c2VzQ2hlY2tlZCA9IHByb3BzLnR5cGUgPT09ICdjaGVja2JveCcgfHwg
cHJvcHMudHlwZSA9PT0gJ3JhZGlvJztcbiAgcmV0dXJuIHVzZXNDaGVja2VkID8gcHJvcHMuY2hl
Y2tlZCAhPSBudWxsIDogcHJvcHMudmFsdWUgIT0gbnVsbDtcbn1cblxuLyoqXG4gKiBJbXBsZW1l
bnRzIGFuIDxpbnB1dD4gaG9zdCBjb21wb25lbnQgdGhhdCBhbGxvd3Mgc2V0dGluZyB0aGVzZSBv
cHRpb25hbFxuICogcHJvcHM6IGBjaGVja2VkYCwgYHZhbHVlYCwgYGRlZmF1bHRDaGVja2VkYCwg
YW5kIGBkZWZhdWx0VmFsdWVgLlxuICpcbiAqIElmIGBjaGVja2VkYCBvciBgdmFsdWVgIGFyZSBu
b3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zXG4gKiB0aGF0IGFm
ZmVjdCB0aGUgY2hlY2tlZCBzdGF0ZSBvciB2YWx1ZSB3aWxsIHRyaWdnZXIgdXBkYXRlcyB0byB0
aGUgZWxlbWVudC5cbiAqXG4gKiBJZiB0aGV5IGFyZSBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3Vu
ZGVmaW5lZCksIHRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGwgbm90XG4gKiB0cmlnZ2VyIHVwZGF0
ZXMgdG8gdGhlIGVsZW1lbnQuIEluc3RlYWQsIHRoZSBwcm9wcyBtdXN0IGNoYW5nZSBpbiBvcmRl
ciBmb3JcbiAqIHRoZSByZW5kZXJlZCBlbGVtZW50IHRvIGJlIHVwZGF0ZWQuXG4gKlxuICogVGhl
IHJlbmRlcmVkIGVsZW1lbnQgd2lsbCBiZSBpbml0aWFsaXplZCBhcyB1bmNoZWNrZWQgKG9yIGBk
ZWZhdWx0Q2hlY2tlZGApXG4gKiB3aXRoIGFuIGVtcHR5IHZhbHVlIChvciBgZGVmYXVsdFZhbHVl
YCkuXG4gKlxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDEyL1dELWh0bWw1LTIwMTIx
MDI1L3RoZS1pbnB1dC1lbGVtZW50Lmh0bWxcbiAqL1xudmFyIFJlYWN0RE9NSW5wdXQgPSB7XG4g
IGdldEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG4gICAgdmFyIHZhbHVlID0g
TGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG4gICAgdmFyIGNoZWNrZWQgPSBMaW5r
ZWRWYWx1ZVV0aWxzLmdldENoZWNrZWQocHJvcHMpO1xuXG4gICAgdmFyIGhvc3RQcm9wcyA9IF9h
c3NpZ24oe1xuICAgICAgLy8gTWFrZSBzdXJlIHdlIHNldCAudHlwZSBiZWZvcmUgYW55IG90aGVy
IHByb3BlcnRpZXMgKHNldHRpbmcgLnZhbHVlXG4gICAgICAvLyBiZWZvcmUgLnR5cGUgbWVhbnMg
LnZhbHVlIGlzIGxvc3QgaW4gSUUxMSBhbmQgYmVsb3cpXG4gICAgICB0eXBlOiB1bmRlZmluZWQs
XG4gICAgICAvLyBNYWtlIHN1cmUgd2Ugc2V0IC5zdGVwIGJlZm9yZSAudmFsdWUgKHNldHRpbmcg
LnZhbHVlIGJlZm9yZSAuc3RlcFxuICAgICAgLy8gbWVhbnMgLnZhbHVlIGlzIHJvdW5kZWQgb24g
bW91bnQsIGJhc2VkIHVwb24gc3RlcCBwcmVjaXNpb24pXG4gICAgICBzdGVwOiB1bmRlZmluZWQs
XG4gICAgICAvLyBNYWtlIHN1cmUgd2Ugc2V0IC5taW4gJiAubWF4IGJlZm9yZSAudmFsdWUgKHRv
IGVuc3VyZSBwcm9wZXIgb3JkZXJcbiAgICAgIC8vIGluIGNvcm5lciBjYXNlcyBzdWNoIGFzIG1p
biBvciBtYXggZGVyaXZpbmcgZnJvbSB2YWx1ZSwgZS5nLiBJc3N1ZSAjNzE3MClcbiAgICAgIG1p
bjogdW5kZWZpbmVkLFxuICAgICAgbWF4OiB1bmRlZmluZWRcbiAgICB9LCBwcm9wcywge1xuICAg
ICAgZGVmYXVsdENoZWNrZWQ6IHVuZGVmaW5lZCxcbiAgICAgIGRlZmF1bHRWYWx1ZTogdW5kZWZp
bmVkLFxuICAgICAgdmFsdWU6IHZhbHVlICE9IG51bGwgPyB2YWx1ZSA6IGluc3QuX3dyYXBwZXJT
dGF0ZS5pbml0aWFsVmFsdWUsXG4gICAgICBjaGVja2VkOiBjaGVja2VkICE9IG51bGwgPyBjaGVj
a2VkIDogaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkLFxuICAgICAgb25DaGFuZ2U6
IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGhvc3RQ
cm9wcztcbiAgfSxcblxuICBtb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xu
ICAgIGlmIChmYWxzZSkge1xuICAgICAgTGlua2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygn
aW5wdXQnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyKTtcblxuICAgICAgdmFy
IG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXG4gICAgICBpZiAocHJvcHMu
dmFsdWVMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZUxpbmspIHtcbiAgICAgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdg
dmFsdWVMaW5rYCBwcm9wIG9uIGBpbnB1dGAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5k
IGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDtcbiAgICAgICAgZGlkV2FyblZhbHVlTGlu
ayA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMuY2hlY2tlZExpbmsgIT09IHVuZGVm
aW5lZCAmJiAhZGlkV2FybkNoZWNrZWRMaW5rKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYGNoZWNrZWRMaW5rYCBwcm9w
IG9uIGBpbnB1dGAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5z
dGVhZC4nKSA6IHZvaWQgMDtcbiAgICAgICAgZGlkV2FybkNoZWNrZWRMaW5rID0gdHJ1ZTtcbiAg
ICAgIH1cbiAgICAgIGlmIChwcm9wcy5jaGVja2VkICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVm
YXVsdENoZWNrZWQgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tl
ZCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyhmYWxzZSwgJyVzIGNvbnRhaW5zIGFuIGlucHV0IG9mIHR5cGUgJXMgd2l0aCBib3RoIGNo
ZWNrZWQgYW5kIGRlZmF1bHRDaGVja2VkIHByb3BzLiAnICsgJ0lucHV0IGVsZW1lbnRzIG11c3Qg
YmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVy
IHRoZSBjaGVja2VkIHByb3AsIG9yIHRoZSBkZWZhdWx0Q2hlY2tlZCBwcm9wLCBidXQgbm90ICcg
KyAnYm90aCkuIERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xs
ZWQgaW5wdXQgJyArICdlbGVtZW50IGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3Jl
IGluZm86ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBv
d25lciAmJiBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2
b2lkIDA7XG4gICAgICAgIGRpZFdhcm5DaGVja2VkRGVmYXVsdENoZWNrZWQgPSB0cnVlO1xuICAg
ICAgfVxuICAgICAgaWYgKHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVs
dFZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSkge1xuICAg
ICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxz
ZSwgJyVzIGNvbnRhaW5zIGFuIGlucHV0IG9mIHR5cGUgJXMgd2l0aCBib3RoIHZhbHVlIGFuZCBk
ZWZhdWx0VmFsdWUgcHJvcHMuICcgKyAnSW5wdXQgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29u
dHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHBy
b3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUg
YmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIGlucHV0ICcgKyAnZWxl
bWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4gTW9yZSBpbmZvOiAnICsgJ2h0dHBz
Oi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJywgb3duZXIgJiYgb3duZXIuZ2V0
TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcsIHByb3BzLnR5cGUpIDogdm9pZCAwO1xuICAgICAgICBk
aWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZh
ciBkZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7XG4gICAgaW5zdC5fd3JhcHBlclN0
YXRlID0ge1xuICAgICAgaW5pdGlhbENoZWNrZWQ6IHByb3BzLmNoZWNrZWQgIT0gbnVsbCA/IHBy
b3BzLmNoZWNrZWQgOiBwcm9wcy5kZWZhdWx0Q2hlY2tlZCxcbiAgICAgIGluaXRpYWxWYWx1ZTog
cHJvcHMudmFsdWUgIT0gbnVsbCA/IHByb3BzLnZhbHVlIDogZGVmYXVsdFZhbHVlLFxuICAgICAg
bGlzdGVuZXJzOiBudWxsLFxuICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0
KSxcbiAgICAgIGNvbnRyb2xsZWQ6IGlzQ29udHJvbGxlZChwcm9wcylcbiAgICB9O1xuICB9LFxu
XG4gIHVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgdmFyIHByb3BzID0gaW5z
dC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIHZhciBj
b250cm9sbGVkID0gaXNDb250cm9sbGVkKHByb3BzKTtcbiAgICAgIHZhciBvd25lciA9IGluc3Qu
X2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcblxuICAgICAgaWYgKCFpbnN0Ll93cmFwcGVyU3RhdGUu
Y29udHJvbGxlZCAmJiBjb250cm9sbGVkICYmICFkaWRXYXJuVW5jb250cm9sbGVkVG9Db250cm9s
bGVkKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKGZhbHNlLCAnJXMgaXMgY2hhbmdpbmcgYW4gdW5jb250cm9sbGVkIGlucHV0IG9mIHR5
cGUgJXMgdG8gYmUgY29udHJvbGxlZC4gJyArICdJbnB1dCBlbGVtZW50cyBzaG91bGQgbm90IHN3
aXRjaCBmcm9tIHVuY29udHJvbGxlZCB0byBjb250cm9sbGVkIChvciB2aWNlIHZlcnNhKS4gJyAr
ICdEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIGlucHV0
ICcgKyAnZWxlbWVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuIE1vcmUgaW5m
bzogaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBvd25lciAmJiBv
d25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2b2lkIDA7XG4g
ICAgICAgIGRpZFdhcm5VbmNvbnRyb2xsZWRUb0NvbnRyb2xsZWQgPSB0cnVlO1xuICAgICAgfVxu
ICAgICAgaWYgKGluc3QuX3dyYXBwZXJTdGF0ZS5jb250cm9sbGVkICYmICFjb250cm9sbGVkICYm
ICFkaWRXYXJuQ29udHJvbGxlZFRvVW5jb250cm9sbGVkKSB7XG4gICAgICAgIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMgaXMgY2hhbmdp
bmcgYSBjb250cm9sbGVkIGlucHV0IG9mIHR5cGUgJXMgdG8gYmUgdW5jb250cm9sbGVkLiAnICsg
J0lucHV0IGVsZW1lbnRzIHNob3VsZCBub3Qgc3dpdGNoIGZyb20gY29udHJvbGxlZCB0byB1bmNv
bnRyb2xsZWQgKG9yIHZpY2UgdmVyc2EpLiAnICsgJ0RlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29u
dHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGZvciB0aGUgbGlmZXRp
bWUgb2YgdGhlIGNvbXBvbmVudC4gTW9yZSBpbmZvOiBodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRy
b2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25l
bnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDtcbiAgICAgICAgZGlkV2FybkNvbnRyb2xsZWRUb1Vu
Y29udHJvbGxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogU2hvdWxk
bid0IHRoaXMgYmUgZ2V0Q2hlY2tlZChwcm9wcyk/XG4gICAgdmFyIGNoZWNrZWQgPSBwcm9wcy5j
aGVja2VkO1xuICAgIGlmIChjaGVja2VkICE9IG51bGwpIHtcbiAgICAgIERPTVByb3BlcnR5T3Bl
cmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5KFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2Rl
RnJvbUluc3RhbmNlKGluc3QpLCAnY2hlY2tlZCcsIGNoZWNrZWQgfHwgZmFsc2UpO1xuICAgIH1c
blxuICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFu
Y2UoaW5zdCk7XG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9w
cyk7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gMCAmJiBu
b2RlLnZhbHVlID09PSAnJykge1xuICAgICAgICBub2RlLnZhbHVlID0gJzAnO1xuICAgICAgICAv
LyBOb3RlOiBJRTkgcmVwb3J0cyBhIG51bWJlciBpbnB1dHMgYXMgJ3RleHQnLCBzbyBjaGVjayBw
cm9wcyBpbnN0ZWFkLlxuICAgICAgfSBlbHNlIGlmIChwcm9wcy50eXBlID09PSAnbnVtYmVyJykg
e1xuICAgICAgICAvLyBTaW11bGF0ZSBgaW5wdXQudmFsdWVBc051bWJlcmAuIElFOSBkb2VzIG5v
dCBzdXBwb3J0IGl0XG4gICAgICAgIHZhciB2YWx1ZUFzTnVtYmVyID0gcGFyc2VGbG9hdChub2Rl
LnZhbHVlLCAxMCkgfHwgMDtcblxuICAgICAgICBpZiAoXG4gICAgICAgIC8vIGVzbGludC1kaXNh
YmxlLW5leHQtbGluZVxuICAgICAgICB2YWx1ZSAhPSB2YWx1ZUFzTnVtYmVyIHx8XG4gICAgICAg
IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICB2YWx1ZSA9PSB2YWx1ZUFzTnVt
YmVyICYmIG5vZGUudmFsdWUgIT0gdmFsdWUpIHtcbiAgICAgICAgICAvLyBDYXN0IGB2YWx1ZWAg
dG8gYSBzdHJpbmcgdG8gZW5zdXJlIHRoZSB2YWx1ZSBpcyBzZXQgY29ycmVjdGx5LiBXaGlsZVxu
ICAgICAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwganNk
b20gZG9lc24ndC5cbiAgICAgICAgICBub2RlLnZhbHVlID0gJycgKyB2YWx1ZTtcbiAgICAgICAg
fVxuICAgICAgfSBlbHNlIGlmIChub2RlLnZhbHVlICE9PSAnJyArIHZhbHVlKSB7XG4gICAgICAg
IC8vIENhc3QgYHZhbHVlYCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlzIHNldCBj
b3JyZWN0bHkuIFdoaWxlXG4gICAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBkbyB0aGlzIGFz
IG5lY2Vzc2FyeSwganNkb20gZG9lc24ndC5cbiAgICAgICAgbm9kZS52YWx1ZSA9ICcnICsgdmFs
dWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9wcy52YWx1ZSA9PSBudWxs
ICYmIHByb3BzLmRlZmF1bHRWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIEluIENocm9tZSwg
YXNzaWduaW5nIGRlZmF1bHRWYWx1ZSB0byBjZXJ0YWluIGlucHV0IHR5cGVzIHRyaWdnZXJzIGlu
cHV0IHZhbGlkYXRpb24uXG4gICAgICAgIC8vIEZvciBudW1iZXIgaW5wdXRzLCB0aGUgZGlzcGxh
eSB2YWx1ZSBsb3NlcyB0cmFpbGluZyBkZWNpbWFsIHBvaW50cy4gRm9yIGVtYWlsIGlucHV0cyxc
biAgICAgICAgLy8gQ2hyb21lIHJhaXNlcyBcIlRoZSBzcGVjaWZpZWQgdmFsdWUgPHg+IGlzIG5v
dCBhIHZhbGlkIGVtYWlsIGFkZHJlc3NcIi5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gSGVyZSB3
ZSBjaGVjayB0byBzZWUgaWYgdGhlIGRlZmF1bHRWYWx1ZSBoYXMgYWN0dWFsbHkgY2hhbmdlZCwg
YXZvaWRpbmcgdGhlc2UgcHJvYmxlbXNcbiAgICAgICAgLy8gd2hlbiB0aGUgdXNlciBpcyBpbnB1
dHRpbmcgdGV4dFxuICAgICAgICAvL1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFj
ZWJvb2svcmVhY3QvaXNzdWVzLzcyNTNcbiAgICAgICAgaWYgKG5vZGUuZGVmYXVsdFZhbHVlICE9
PSAnJyArIHByb3BzLmRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgIG5vZGUuZGVmYXVsdFZhbHVl
ID0gJycgKyBwcm9wcy5kZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlm
IChwcm9wcy5jaGVja2VkID09IG51bGwgJiYgcHJvcHMuZGVmYXVsdENoZWNrZWQgIT0gbnVsbCkg
e1xuICAgICAgICBub2RlLmRlZmF1bHRDaGVja2VkID0gISFwcm9wcy5kZWZhdWx0Q2hlY2tlZDtc
biAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgcG9zdE1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGlu
c3QpIHtcbiAgICB2YXIgcHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICAg
IC8vIFRoaXMgaXMgaW4gcG9zdE1vdW50IGJlY2F1c2Ugd2UgbmVlZCBhY2Nlc3MgdG8gdGhlIERP
TSBub2RlLCB3aGljaCBpcyBub3RcbiAgICAvLyBhdmFpbGFibGUgdW50aWwgYWZ0ZXIgdGhlIGNv
bXBvbmVudCBoYXMgbW91bnRlZC5cbiAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJl
ZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuXG4gICAgLy8gRGV0YWNoIHZhbHVlIGZyb20g
ZGVmYXVsdFZhbHVlLiBXZSB3b24ndCBkbyBhbnl0aGluZyBpZiB3ZSdyZSB3b3JraW5nIG9uXG4g
ICAgLy8gc3VibWl0IG9yIHJlc2V0IGlucHV0cyBhcyB0aG9zZSB2YWx1ZXMgJiBkZWZhdWx0VmFs
dWVzIGFyZSBsaW5rZWQuIFRoZXlcbiAgICAvLyBhcmUgbm90IHJlc2V0YWJsZSBub2RlcyBzbyB0
aGlzIG9wZXJhdGlvbiBkb2Vzbid0IG1hdHRlciBhbmQgYWN0dWFsbHlcbiAgICAvLyByZW1vdmVz
IGJyb3dzZXItZGVmYXVsdCB2YWx1ZXMgKGVnIFwiU3VibWl0IFF1ZXJ5XCIpIHdoZW4gbm8gdmFs
dWUgaXNcbiAgICAvLyBwcm92aWRlZC5cblxuICAgIHN3aXRjaCAocHJvcHMudHlwZSkge1xuICAg
ICAgY2FzZSAnc3VibWl0JzpcbiAgICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgICAgYnJlYWs7XG4g
ICAgICBjYXNlICdjb2xvcic6XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgIGNhc2UgJ2RhdGV0
aW1lJzpcbiAgICAgIGNhc2UgJ2RhdGV0aW1lLWxvY2FsJzpcbiAgICAgIGNhc2UgJ21vbnRoJzpc
biAgICAgIGNhc2UgJ3RpbWUnOlxuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIC8vIFRoaXMg
Zml4ZXMgdGhlIG5vLXNob3cgaXNzdWUgb24gaU9TIFNhZmFyaSBhbmQgQW5kcm9pZCBDaHJvbWU6
XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzIz
M1xuICAgICAgICBub2RlLnZhbHVlID0gJyc7XG4gICAgICAgIG5vZGUudmFsdWUgPSBub2RlLmRl
ZmF1bHRWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBub2Rl
LnZhbHVlID0gbm9kZS52YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gTm9y
bWFsbHksIHdlJ2QganVzdCBkbyBgbm9kZS5jaGVja2VkID0gbm9kZS5jaGVja2VkYCB1cG9uIGlu
aXRpYWwgbW91bnQsIGxlc3MgdGhpcyBidWdcbiAgICAvLyB0aGlzIGlzIG5lZWRlZCB0byB3b3Jr
IGFyb3VuZCBhIGNocm9tZSBidWcgd2hlcmUgc2V0dGluZyBkZWZhdWx0Q2hlY2tlZFxuICAgIC8v
IHdpbGwgc29tZXRpbWVzIGluZmx1ZW5jZSB0aGUgdmFsdWUgb2YgY2hlY2tlZCAoZXZlbiBhZnRl
ciBkZXRhY2htZW50KS5cbiAgICAvLyBSZWZlcmVuY2U6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5v
cmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYwODQxNlxuICAgIC8vIFdlIG5lZWQgdG8g
dGVtcG9yYXJpbHkgdW5zZXQgbmFtZSB0byBhdm9pZCBkaXNydXB0aW5nIHJhZGlvIGJ1dHRvbiBn
cm91cHMuXG4gICAgdmFyIG5hbWUgPSBub2RlLm5hbWU7XG4gICAgaWYgKG5hbWUgIT09ICcnKSB7
XG4gICAgICBub2RlLm5hbWUgPSAnJztcbiAgICB9XG4gICAgbm9kZS5kZWZhdWx0Q2hlY2tlZCA9
ICFub2RlLmRlZmF1bHRDaGVja2VkO1xuICAgIG5vZGUuZGVmYXVsdENoZWNrZWQgPSAhbm9kZS5k
ZWZhdWx0Q2hlY2tlZDtcbiAgICBpZiAobmFtZSAhPT0gJycpIHtcbiAgICAgIG5vZGUubmFtZSA9
IG5hbWU7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7
XG4gIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4gIHZhciByZXR1
cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7
XG5cbiAgLy8gSGVyZSB3ZSB1c2UgYXNhcCB0byB3YWl0IHVudGlsIGFsbCB1cGRhdGVzIGhhdmUg
cHJvcGFnYXRlZCwgd2hpY2hcbiAgLy8gaXMgaW1wb3J0YW50IHdoZW4gdXNpbmcgY29udHJvbGxl
ZCBjb21wb25lbnRzIHdpdGhpbiBsYXllcnM6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNl
Ym9vay9yZWFjdC9pc3N1ZXMvMTY5OFxuICBSZWFjdFVwZGF0ZXMuYXNhcChmb3JjZVVwZGF0ZUlm
TW91bnRlZCwgdGhpcyk7XG5cbiAgdmFyIG5hbWUgPSBwcm9wcy5uYW1lO1xuICBpZiAocHJvcHMu
dHlwZSA9PT0gJ3JhZGlvJyAmJiBuYW1lICE9IG51bGwpIHtcbiAgICB2YXIgcm9vdE5vZGUgPSBS
ZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKTtcbiAgICB2YXIg
cXVlcnlSb290ID0gcm9vdE5vZGU7XG5cbiAgICB3aGlsZSAocXVlcnlSb290LnBhcmVudE5vZGUp
IHtcbiAgICAgIHF1ZXJ5Um9vdCA9IHF1ZXJ5Um9vdC5wYXJlbnROb2RlO1xuICAgIH1cblxuICAg
IC8vIElmIGByb290Tm9kZS5mb3JtYCB3YXMgbm9uLW51bGwsIHRoZW4gd2UgY291bGQgdHJ5IGBm
b3JtLmVsZW1lbnRzYCxcbiAgICAvLyBidXQgdGhhdCBzb21ldGltZXMgYmVoYXZlcyBzdHJhbmdl
bHkgaW4gSUU4LiBXZSBjb3VsZCBhbHNvIHRyeSB1c2luZ1xuICAgIC8vIGBmb3JtLmdldEVsZW1l
bnRzQnlOYW1lYCwgYnV0IHRoYXQgd2lsbCBvbmx5IHJldHVybiBkaXJlY3QgY2hpbGRyZW5cbiAg
ICAvLyBhbmQgd29uJ3QgaW5jbHVkZSBpbnB1dHMgdGhhdCB1c2UgdGhlIEhUTUw1IGBmb3JtPWAg
YXR0cmlidXRlLiBTaW5jZVxuICAgIC8vIHRoZSBpbnB1dCBtaWdodCBub3QgZXZlbiBiZSBpbiBh
IGZvcm0sIGxldCdzIGp1c3QgdXNlIHRoZSBnbG9iYWxcbiAgICAvLyBgcXVlcnlTZWxlY3RvckFs
bGAgdG8gZW5zdXJlIHdlIGRvbid0IG1pc3MgYW55dGhpbmcuXG4gICAgdmFyIGdyb3VwID0gcXVl
cnlSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9JyArIEpTT04uc3RyaW5naWZ5KCcn
ICsgbmFtZSkgKyAnXVt0eXBlPVwicmFkaW9cIl0nKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgZ3JvdXAubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBvdGhlck5vZGUgPSBncm91cFtpXTtc
biAgICAgIGlmIChvdGhlck5vZGUgPT09IHJvb3ROb2RlIHx8IG90aGVyTm9kZS5mb3JtICE9PSBy
b290Tm9kZS5mb3JtKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gVGhp
cyB3aWxsIHRocm93IGlmIHJhZGlvIGJ1dHRvbnMgcmVuZGVyZWQgYnkgZGlmZmVyZW50IGNvcGll
cyBvZiBSZWFjdFxuICAgICAgLy8gYW5kIHRoZSBzYW1lIG5hbWUgYXJlIHJlbmRlcmVkIGludG8g
dGhlIHNhbWUgZm9ybSAoc2FtZSBhcyAjMTkzOSkuXG4gICAgICAvLyBUaGF0J3MgcHJvYmFibHkg
b2theTsgd2UgZG9uJ3Qgc3VwcG9ydCBpdCBqdXN0IGFzIHdlIGRvbid0IHN1cHBvcnRcbiAgICAg
IC8vIG1peGluZyBSZWFjdCByYWRpbyBidXR0b25zIHdpdGggbm9uLVJlYWN0IG9uZXMuXG4gICAg
ICB2YXIgb3RoZXJJbnN0YW5jZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZy
b21Ob2RlKG90aGVyTm9kZSk7XG4gICAgICAhb3RoZXJJbnN0YW5jZSA/ICBmYWxzZSA/IGludmFy
aWFudChmYWxzZSwgJ1JlYWN0RE9NSW5wdXQ6IE1peGluZyBSZWFjdCBhbmQgbm9uLVJlYWN0IHJh
ZGlvIGlucHV0cyB3aXRoIHRoZSBzYW1lIGBuYW1lYCBpcyBub3Qgc3VwcG9ydGVkLicpIDogX3By
b2RJbnZhcmlhbnQoJzkwJykgOiB2b2lkIDA7XG4gICAgICAvLyBJZiB0aGlzIGlzIGEgY29udHJv
bGxlZCByYWRpbyBidXR0b24gZ3JvdXAsIGZvcmNpbmcgdGhlIGlucHV0IHRoYXRcbiAgICAgIC8v
IHdhcyBwcmV2aW91c2x5IGNoZWNrZWQgdG8gdXBkYXRlIHdpbGwgY2F1c2UgaXQgdG8gYmUgY29t
ZSByZS1jaGVja2VkXG4gICAgICAvLyBhcyBhcHByb3ByaWF0ZS5cbiAgICAgIFJlYWN0VXBkYXRl
cy5hc2FwKGZvcmNlVXBkYXRlSWZNb3VudGVkLCBvdGhlckluc3RhbmNlKTtcbiAgICB9XG4gIH1c
blxuICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01J
bnB1dDtcblxuLyoqKi8gfSksXG4vKiAxNTEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG5cblxudmFyIFJlYWN0UHJvcFR5cGVzU2Vj
cmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxu
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcblxuLyoqKi8gfSksXG4vKiAx
NTIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuXG5cbnZhciBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxudmFyIFJlYWN0
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbnZhciBSZWFjdERPTVNlbGVjdCA9IF9fd2VicGFja19y
ZXF1aXJlX18oNzEpO1xuXG52YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG52
YXIgZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbiA9IGZhbHNlO1xuXG5mdW5jdGlvbiBmbGF0
dGVuQ2hpbGRyZW4oY2hpbGRyZW4pIHtcbiAgdmFyIGNvbnRlbnQgPSAnJztcblxuICAvLyBGbGF0
dGVuIGNoaWxkcmVuIGFuZCB3YXJuIGlmIHRoZXkgYXJlbid0IHN0cmluZ3Mgb3IgbnVtYmVycztc
biAgLy8gaW52YWxpZCB0eXBlcyBhcmUgaWdub3JlZC5cbiAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFj
aChjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgaWYgKGNoaWxkID09IG51bGwpIHtc
biAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ3N0cmluZycg
fHwgdHlwZW9mIGNoaWxkID09PSAnbnVtYmVyJykge1xuICAgICAgY29udGVudCArPSBjaGlsZDtc
biAgICB9IGVsc2UgaWYgKCFkaWRXYXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuKSB7XG4gICAgICBk
aWRXYXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuID0gdHJ1ZTtcbiAgICAgICBmYWxzZSA/IHdhcm5p
bmcoZmFsc2UsICdPbmx5IHN0cmluZ3MgYW5kIG51bWJlcnMgYXJlIHN1cHBvcnRlZCBhcyA8b3B0
aW9uPiBjaGlsZHJlbi4nKSA6IHZvaWQgMDtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjb250
ZW50O1xufVxuXG4vKipcbiAqIEltcGxlbWVudHMgYW4gPG9wdGlvbj4gaG9zdCBjb21wb25lbnQg
dGhhdCB3YXJucyB3aGVuIGBzZWxlY3RlZGAgaXMgc2V0LlxuICovXG52YXIgUmVhY3RET01PcHRp
b24gPSB7XG4gIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzLCBob3N0UGFyZW50
KSB7XG4gICAgLy8gVE9ETyAoeXVuZ3N0ZXJzKTogUmVtb3ZlIHN1cHBvcnQgZm9yIGBzZWxlY3Rl
ZGAgaW4gPG9wdGlvbj4uXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9wcy5zZWxlY3RlZCA9PSBudWxsLCAn
VXNlIHRoZSBgZGVmYXVsdFZhbHVlYCBvciBgdmFsdWVgIHByb3BzIG9uIDxzZWxlY3Q+IGluc3Rl
YWQgb2YgJyArICdzZXR0aW5nIGBzZWxlY3RlZGAgb24gPG9wdGlvbj4uJykgOiB2b2lkIDA7XG4g
ICAgfVxuXG4gICAgLy8gTG9vayB1cCB3aGV0aGVyIHRoaXMgb3B0aW9uIGlzICdzZWxlY3RlZCdc
biAgICB2YXIgc2VsZWN0VmFsdWUgPSBudWxsO1xuICAgIGlmIChob3N0UGFyZW50ICE9IG51bGwp
IHtcbiAgICAgIHZhciBzZWxlY3RQYXJlbnQgPSBob3N0UGFyZW50O1xuXG4gICAgICBpZiAoc2Vs
ZWN0UGFyZW50Ll90YWcgPT09ICdvcHRncm91cCcpIHtcbiAgICAgICAgc2VsZWN0UGFyZW50ID0g
c2VsZWN0UGFyZW50Ll9ob3N0UGFyZW50O1xuICAgICAgfVxuXG4gICAgICBpZiAoc2VsZWN0UGFy
ZW50ICE9IG51bGwgJiYgc2VsZWN0UGFyZW50Ll90YWcgPT09ICdzZWxlY3QnKSB7XG4gICAgICAg
IHNlbGVjdFZhbHVlID0gUmVhY3RET01TZWxlY3QuZ2V0U2VsZWN0VmFsdWVDb250ZXh0KHNlbGVj
dFBhcmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHZhbHVlIGlzIG51bGwg
KGUuZy4sIG5vIHNwZWNpZmllZCB2YWx1ZSBvciBhZnRlciBpbml0aWFsIG1vdW50KVxuICAgIC8v
IG9yIG1pc3NpbmcgKGUuZy4sIGZvciA8ZGF0YWxpc3Q+KSwgd2UgZG9uJ3QgY2hhbmdlIHByb3Bz
LnNlbGVjdGVkXG4gICAgdmFyIHNlbGVjdGVkID0gbnVsbDtcbiAgICBpZiAoc2VsZWN0VmFsdWUg
IT0gbnVsbCkge1xuICAgICAgdmFyIHZhbHVlO1xuICAgICAgaWYgKHByb3BzLnZhbHVlICE9IG51
bGwpIHtcbiAgICAgICAgdmFsdWUgPSBwcm9wcy52YWx1ZSArICcnO1xuICAgICAgfSBlbHNlIHtc
biAgICAgICAgdmFsdWUgPSBmbGF0dGVuQ2hpbGRyZW4ocHJvcHMuY2hpbGRyZW4pO1xuICAgICAg
fVxuICAgICAgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVj
dFZhbHVlKSkge1xuICAgICAgICAvLyBtdWx0aXBsZVxuICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHNlbGVjdFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCcnICsgc2VsZWN0
VmFsdWVbaV0gPT09IHZhbHVlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZCA9IHRydWU7XG4gICAg
ICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4g
ICAgICAgIHNlbGVjdGVkID0gJycgKyBzZWxlY3RWYWx1ZSA9PT0gdmFsdWU7XG4gICAgICB9XG4g
ICAgfVxuXG4gICAgaW5zdC5fd3JhcHBlclN0YXRlID0geyBzZWxlY3RlZDogc2VsZWN0ZWQgfTtc
biAgfSxcblxuICBwb3N0TW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIC8vIHZh
bHVlPVwiXCIgc2hvdWxkIG1ha2UgYSB2YWx1ZSBhdHRyaWJ1dGUgKCM2MjE5KVxuICAgIHZhciBw
cm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuICAgIGlmIChwcm9wcy52YWx1ZSAh
PSBudWxsKSB7XG4gICAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2Rl
RnJvbUluc3RhbmNlKGluc3QpO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgcHJv
cHMudmFsdWUpO1xuICAgIH1cbiAgfSxcblxuICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0
LCBwcm9wcykge1xuICAgIHZhciBob3N0UHJvcHMgPSBfYXNzaWduKHsgc2VsZWN0ZWQ6IHVuZGVm
aW5lZCwgY2hpbGRyZW46IHVuZGVmaW5lZCB9LCBwcm9wcyk7XG5cbiAgICAvLyBSZWFkIHN0YXRl
IG9ubHkgZnJvbSBpbml0aWFsIG1vdW50IGJlY2F1c2UgPHNlbGVjdD4gdXBkYXRlcyB2YWx1ZVxu
ICAgIC8vIG1hbnVhbGx5OyB3ZSBuZWVkIHRoZSBpbml0aWFsIHN0YXRlIG9ubHkgZm9yIHNlcnZl
ciByZW5kZXJpbmdcbiAgICBpZiAoaW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVkICE9IG51bGwp
IHtcbiAgICAgIGhvc3RQcm9wcy5zZWxlY3RlZCA9IGluc3QuX3dyYXBwZXJTdGF0ZS5zZWxlY3Rl
ZDtcbiAgICB9XG5cbiAgICB2YXIgY29udGVudCA9IGZsYXR0ZW5DaGlsZHJlbihwcm9wcy5jaGls
ZHJlbik7XG5cbiAgICBpZiAoY29udGVudCkge1xuICAgICAgaG9zdFByb3BzLmNoaWxkcmVuID0g
Y29udGVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gaG9zdFByb3BzO1xuICB9XG59O1xuXG5tb2R1
bGUuZXhwb3J0cyA9IFJlYWN0RE9NT3B0aW9uO1xuXG4vKioqLyB9KSxcbi8qIDE1MyAqL1xuLyoq
Ki8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
InVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFy
IF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKSxcbiAgICBfYXNzaWduID0g
X193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxudmFyIExpbmtlZFZhbHVlVXRpbHMgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDQwKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDQpO1xudmFyIFJlYWN0VXBkYXRlcyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7
XG5cbnZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xudmFyIHdhcm5pbmcg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG52YXIgZGlkV2FyblZhbHVlTGluayA9IGZhbHNl
O1xudmFyIGRpZFdhcm5WYWxEZWZhdWx0VmFsID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGZvcmNlVXBk
YXRlSWZNb3VudGVkKCkge1xuICBpZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuICAgIC8vIERPTSBj
b21wb25lbnQgaXMgc3RpbGwgbW91bnRlZDsgdXBkYXRlXG4gICAgUmVhY3RET01UZXh0YXJlYS51
cGRhdGVXcmFwcGVyKHRoaXMpO1xuICB9XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyBhIDx0ZXh0
YXJlYT4gaG9zdCBjb21wb25lbnQgdGhhdCBhbGxvd3Mgc2V0dGluZyBgdmFsdWVgLCBhbmRcbiAq
IGBkZWZhdWx0VmFsdWVgLiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgdHJhZGl0aW9uYWwgRE9NIEFQ
SSBiZWNhdXNlIHZhbHVlIGlzXG4gKiB1c3VhbGx5IHNldCBhcyBQQ0RBVEEgY2hpbGRyZW4uXG4g
KlxuICogSWYgYHZhbHVlYCBpcyBub3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNl
ciBhY3Rpb25zIHRoYXQgYWZmZWN0IHRoZVxuICogdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMg
dG8gdGhlIGVsZW1lbnQuXG4gKlxuICogSWYgYHZhbHVlYCBpcyBzdXBwbGllZCAoYW5kIG5vdCBu
dWxsL3VuZGVmaW5lZCksIHRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGxcbiAqIG5vdCB0cmlnZ2Vy
IHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuIEluc3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBj
aGFuZ2UgaW5cbiAqIG9yZGVyIGZvciB0aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVk
LlxuICpcbiAqIFRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCBh
biBlbXB0eSB2YWx1ZSwgdGhlIHByb3BcbiAqIGBkZWZhdWx0VmFsdWVgIGlmIHNwZWNpZmllZCwg
b3IgdGhlIGNoaWxkcmVuIGNvbnRlbnQgKGRlcHJlY2F0ZWQpLlxuICovXG52YXIgUmVhY3RET01U
ZXh0YXJlYSA9IHtcbiAgZ2V0SG9zdFByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAg
ICAhKHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09IG51bGwpID8gIGZhbHNlID8gaW52
YXJpYW50KGZhbHNlLCAnYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBkb2VzIG5vdCBtYWtlIHNl
bnNlIG9uIDx0ZXh0YXJlYT4uJykgOiBfcHJvZEludmFyaWFudCgnOTEnKSA6IHZvaWQgMDtcblxu
ICAgIC8vIEFsd2F5cyBzZXQgY2hpbGRyZW4gdG8gdGhlIHNhbWUgdGhpbmcuIEluIElFOSwgdGhl
IHNlbGVjdGlvbiByYW5nZSB3aWxsXG4gICAgLy8gZ2V0IHJlc2V0IGlmIGB0ZXh0Q29udGVudGAg
aXMgbXV0YXRlZC4gIFdlIGNvdWxkIGFkZCBhIGNoZWNrIGluIHNldFRleHRDb250ZW50XG4gICAg
Ly8gdG8gb25seSBzZXQgdGhlIHZhbHVlIGlmL3doZW4gdGhlIHZhbHVlIGRpZmZlcnMgZnJvbSB0
aGUgbm9kZSB2YWx1ZSAod2hpY2ggd291bGRcbiAgICAvLyBjb21wbGV0ZWx5IHNvbHZlIHRoaXMg
SUU5IGJ1ZyksIGJ1dCBTZWJhc3RpYW4rQmVuIHNlZW1lZCB0byBsaWtlIHRoaXMgc29sdXRpb24u
XG4gICAgLy8gVGhlIHZhbHVlIGNhbiBiZSBhIGJvb2xlYW4gb3Igb2JqZWN0IHNvIHRoYXQncyB3
aHkgaXQncyBmb3JjZWQgdG8gYmUgYSBzdHJpbmcuXG4gICAgdmFyIGhvc3RQcm9wcyA9IF9hc3Np
Z24oe30sIHByb3BzLCB7XG4gICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdFZh
bHVlOiB1bmRlZmluZWQsXG4gICAgICBjaGlsZHJlbjogJycgKyBpbnN0Ll93cmFwcGVyU3RhdGUu
aW5pdGlhbFZhbHVlLFxuICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5n
ZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGhvc3RQcm9wcztcbiAgfSxcblxuICBtb3VudFdyYXBw
ZXI6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgTGlu
a2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygndGV4dGFyZWEnLCBwcm9wcywgaW5zdC5fY3Vy
cmVudEVsZW1lbnQuX293bmVyKTtcbiAgICAgIGlmIChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVm
aW5lZCAmJiAhZGlkV2FyblZhbHVlTGluaykge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2B2YWx1ZUxpbmtgIHByb3Agb24g
YHRleHRhcmVhYCBpcyBkZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0
ZWFkLicpIDogdm9pZCAwO1xuICAgICAgICBkaWRXYXJuVmFsdWVMaW5rID0gdHJ1ZTtcbiAgICAg
IH1cbiAgICAgIGlmIChwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRW
YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsRGVmYXVsdFZhbCkge1xuICAgICAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Rl
eHRhcmVhIGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVk
ICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVl
IHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9s
bGVkIG9yIHVuY29udHJvbGxlZCB0ZXh0YXJlYSAnICsgJ2FuZCByZW1vdmUgb25lIG9mIHRoZXNl
IHByb3BzLiBNb3JlIGluZm86ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNv
bXBvbmVudHMnKSA6IHZvaWQgMDtcbiAgICAgICAgZGlkV2FyblZhbERlZmF1bHRWYWwgPSB0cnVl
O1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0
VmFsdWUocHJvcHMpO1xuICAgIHZhciBpbml0aWFsVmFsdWUgPSB2YWx1ZTtcblxuICAgIC8vIE9u
bHkgYm90aGVyIGZldGNoaW5nIGRlZmF1bHQgdmFsdWUgaWYgd2UncmUgZ29pbmcgdG8gdXNlIGl0
XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHZhciBkZWZhdWx0VmFsdWUgPSBwcm9w
cy5kZWZhdWx0VmFsdWU7XG4gICAgICAvLyBUT0RPICh5dW5nc3RlcnMpOiBSZW1vdmUgc3VwcG9y
dCBmb3IgY2hpbGRyZW4gY29udGVudCBpbiA8dGV4dGFyZWE+LlxuICAgICAgdmFyIGNoaWxkcmVu
ID0gcHJvcHMuY2hpbGRyZW47XG4gICAgICBpZiAoY2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAg
ICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1VzZSB0aGUgYGRlZmF1bHRWYWx1ZWAgb3IgYHZhbHVl
YCBwcm9wcyBpbnN0ZWFkIG9mIHNldHRpbmcgJyArICdjaGlsZHJlbiBvbiA8dGV4dGFyZWE+Licp
IDogdm9pZCAwO1xuICAgICAgICB9XG4gICAgICAgICEoZGVmYXVsdFZhbHVlID09IG51bGwpID8g
IGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnSWYgeW91IHN1cHBseSBgZGVmYXVsdFZhbHVlYCBv
biBhIDx0ZXh0YXJlYT4sIGRvIG5vdCBwYXNzIGNoaWxkcmVuLicpIDogX3Byb2RJbnZhcmlhbnQo
JzkyJykgOiB2b2lkIDA7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xu
ICAgICAgICAgICEoY2hpbGRyZW4ubGVuZ3RoIDw9IDEpID8gIGZhbHNlID8gaW52YXJpYW50KGZh
bHNlLCAnPHRleHRhcmVhPiBjYW4gb25seSBoYXZlIGF0IG1vc3Qgb25lIGNoaWxkLicpIDogX3By
b2RJbnZhcmlhbnQoJzkzJykgOiB2b2lkIDA7XG4gICAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJl
blswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9ICcnICsgY2hpbGRyZW47
XG4gICAgICB9XG4gICAgICBpZiAoZGVmYXVsdFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgZGVm
YXVsdFZhbHVlID0gJyc7XG4gICAgICB9XG4gICAgICBpbml0aWFsVmFsdWUgPSBkZWZhdWx0VmFs
dWU7XG4gICAgfVxuXG4gICAgaW5zdC5fd3JhcHBlclN0YXRlID0ge1xuICAgICAgaW5pdGlhbFZh
bHVlOiAnJyArIGluaXRpYWxWYWx1ZSxcbiAgICAgIGxpc3RlbmVyczogbnVsbCxcbiAgICAgIG9u
Q2hhbmdlOiBfaGFuZGxlQ2hhbmdlLmJpbmQoaW5zdClcbiAgICB9O1xuICB9LFxuXG4gIHVwZGF0
ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVu
dEVsZW1lbnQucHJvcHM7XG5cbiAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRp
bHMuZ2V0VmFsdWUocHJvcHMpO1xuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAvLyBD
YXN0IGB2YWx1ZWAgdG8gYSBzdHJpbmcgdG8gZW5zdXJlIHRoZSB2YWx1ZSBpcyBzZXQgY29ycmVj
dGx5LiBXaGlsZVxuICAgICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRvIHRoaXMgYXMgbmVjZXNz
YXJ5LCBqc2RvbSBkb2Vzbid0LlxuICAgICAgdmFyIG5ld1ZhbHVlID0gJycgKyB2YWx1ZTtcblxu
ICAgICAgLy8gVG8gYXZvaWQgc2lkZSBlZmZlY3RzIChzdWNoIGFzIGxvc2luZyB0ZXh0IHNlbGVj
dGlvbiksIG9ubHkgc2V0IHZhbHVlIGlmIGNoYW5nZWRcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0g
bm9kZS52YWx1ZSkge1xuICAgICAgICBub2RlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4g
ICAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgbm9kZS5kZWZh
dWx0VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb3BzLmRlZmF1
bHRWYWx1ZSAhPSBudWxsKSB7XG4gICAgICBub2RlLmRlZmF1bHRWYWx1ZSA9IHByb3BzLmRlZmF1
bHRWYWx1ZTtcbiAgICB9XG4gIH0sXG5cbiAgcG9zdE1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGlu
c3QpIHtcbiAgICAvLyBUaGlzIGlzIGluIHBvc3RNb3VudCBiZWNhdXNlIHdlIG5lZWQgYWNjZXNz
IHRvIHRoZSBET00gbm9kZSwgd2hpY2ggaXMgbm90XG4gICAgLy8gYXZhaWxhYmxlIHVudGlsIGFm
dGVyIHRoZSBjb21wb25lbnQgaGFzIG1vdW50ZWQuXG4gICAgdmFyIG5vZGUgPSBSZWFjdERPTUNv
bXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcbiAgICB2YXIgdGV4dENvbnRl
bnQgPSBub2RlLnRleHRDb250ZW50O1xuXG4gICAgLy8gT25seSBzZXQgbm9kZS52YWx1ZSBpZiB0
ZXh0Q29udGVudCBpcyBlcXVhbCB0byB0aGUgZXhwZWN0ZWRcbiAgICAvLyBpbml0aWFsIHZhbHVl
LiBJbiBJRTEwL0lFMTEgdGhlcmUgaXMgYSBidWcgd2hlcmUgdGhlIHBsYWNlaG9sZGVyIGF0dHJp
YnV0ZVxuICAgIC8vIHdpbGwgcG9wdWxhdGUgdGV4dENvbnRlbnQgYXMgd2VsbC5cbiAgICAvLyBo
dHRwczovL2RldmVsb3Blci5taWNyb3NvZnQuY29tL21pY3Jvc29mdC1lZGdlL3BsYXRmb3JtL2lz
c3Vlcy8xMDE1MjUvXG4gICAgaWYgKHRleHRDb250ZW50ID09PSBpbnN0Ll93cmFwcGVyU3RhdGUu
aW5pdGlhbFZhbHVlKSB7XG4gICAgICBub2RlLnZhbHVlID0gdGV4dENvbnRlbnQ7XG4gICAgfVxu
ICB9XG59O1xuXG5mdW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gIHZhciBwcm9wcyA9
IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuICB2YXIgcmV0dXJuVmFsdWUgPSBMaW5rZWRW
YWx1ZVV0aWxzLmV4ZWN1dGVPbkNoYW5nZShwcm9wcywgZXZlbnQpO1xuICBSZWFjdFVwZGF0ZXMu
YXNhcChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgdGhpcyk7XG4gIHJldHVybiByZXR1cm5WYWx1ZTtc
bn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRhcmVhO1xuXG4vKioqLyB9KSxcbi8q
IDE1NCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
L1xuXG5cblxudmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxu
dmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKTtc
bnZhciBSZWFjdEluc3RhbmNlTWFwID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMik7XG52YXIgUmVh
Y3RJbnN0cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXG52YXIgUmVhY3RD
dXJyZW50T3duZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcbnZhciBSZWFjdFJlY29uY2ls
ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcbnZhciBSZWFjdENoaWxkUmVjb25jaWxlciA9
IF9fd2VicGFja19yZXF1aXJlX18oMTU1KTtcblxudmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDYpO1xudmFyIGZsYXR0ZW5DaGlsZHJlbiA9IF9fd2VicGFja19yZXF1aXJl
X18oMTYwKTtcbnZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG4vKipc
biAqIE1ha2UgYW4gdXBkYXRlIGZvciBtYXJrdXAgdG8gYmUgcmVuZGVyZWQgYW5kIGluc2VydGVk
IGF0IGEgc3VwcGxpZWQgaW5kZXguXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJr
dXAgdGhhdCByZW5kZXJzIGludG8gYW4gZWxlbWVudC5cbiAqIEBwYXJhbSB7bnVtYmVyfSB0b0lu
ZGV4IERlc3RpbmF0aW9uIGluZGV4LlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gbWFrZUlu
c2VydE1hcmt1cChtYXJrdXAsIGFmdGVyTm9kZSwgdG9JbmRleCkge1xuICAvLyBOT1RFOiBOdWxs
IHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0lO
U0VSVF9NQVJLVVAnLFxuICAgIGNvbnRlbnQ6IG1hcmt1cCxcbiAgICBmcm9tSW5kZXg6IG51bGws
XG4gICAgZnJvbU5vZGU6IG51bGwsXG4gICAgdG9JbmRleDogdG9JbmRleCxcbiAgICBhZnRlck5v
ZGU6IGFmdGVyTm9kZVxuICB9O1xufVxuXG4vKipcbiAqIE1ha2UgYW4gdXBkYXRlIGZvciBtb3Zp
bmcgYW4gZXhpc3RpbmcgZWxlbWVudCB0byBhbm90aGVyIGluZGV4LlxuICpcbiAqIEBwYXJhbSB7
bnVtYmVyfSBmcm9tSW5kZXggU291cmNlIGluZGV4IG9mIHRoZSBleGlzdGluZyBlbGVtZW50Llxu
ICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXggRGVzdGluYXRpb24gaW5kZXggb2YgdGhlIGVsZW1l
bnQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBtYWtlTW92ZShjaGlsZCwgYWZ0ZXJOb2Rl
LCB0b0luZGV4KSB7XG4gIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nl
cy5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnTU9WRV9FWElTVElORycsXG4gICAgY29udGVudDog
bnVsbCxcbiAgICBmcm9tSW5kZXg6IGNoaWxkLl9tb3VudEluZGV4LFxuICAgIGZyb21Ob2RlOiBS
ZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUoY2hpbGQpLFxuICAgIHRvSW5kZXg6IHRvSW5kZXgs
XG4gICAgYWZ0ZXJOb2RlOiBhZnRlck5vZGVcbiAgfTtcbn1cblxuLyoqXG4gKiBNYWtlIGFuIHVw
ZGF0ZSBmb3IgcmVtb3ZpbmcgYW4gZWxlbWVudCBhdCBhbiBpbmRleC5cbiAqXG4gKiBAcGFyYW0g
e251bWJlcn0gZnJvbUluZGV4IEluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJlbW92ZS5cbiAqIEBw
cml2YXRlXG4gKi9cbmZ1bmN0aW9uIG1ha2VSZW1vdmUoY2hpbGQsIG5vZGUpIHtcbiAgLy8gTk9U
RTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuICByZXR1cm4ge1xuICAgIHR5
cGU6ICdSRU1PVkVfTk9ERScsXG4gICAgY29udGVudDogbnVsbCxcbiAgICBmcm9tSW5kZXg6IGNo
aWxkLl9tb3VudEluZGV4LFxuICAgIGZyb21Ob2RlOiBub2RlLFxuICAgIHRvSW5kZXg6IG51bGws
XG4gICAgYWZ0ZXJOb2RlOiBudWxsXG4gIH07XG59XG5cbi8qKlxuICogTWFrZSBhbiB1cGRhdGUg
Zm9yIHNldHRpbmcgdGhlIG1hcmt1cCBvZiBhIG5vZGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9
IG1hcmt1cCBNYXJrdXAgdGhhdCByZW5kZXJzIGludG8gYW4gZWxlbWVudC5cbiAqIEBwcml2YXRl
XG4gKi9cbmZ1bmN0aW9uIG1ha2VTZXRNYXJrdXAobWFya3VwKSB7XG4gIC8vIE5PVEU6IE51bGwg
dmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnU0VU
X01BUktVUCcsXG4gICAgY29udGVudDogbWFya3VwLFxuICAgIGZyb21JbmRleDogbnVsbCxcbiAg
ICBmcm9tTm9kZTogbnVsbCxcbiAgICB0b0luZGV4OiBudWxsLFxuICAgIGFmdGVyTm9kZTogbnVs
bFxuICB9O1xufVxuXG4vKipcbiAqIE1ha2UgYW4gdXBkYXRlIGZvciBzZXR0aW5nIHRoZSB0ZXh0
IGNvbnRlbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRleHRDb250ZW50IFRleHQgY29udGVu
dCB0byBzZXQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBtYWtlVGV4dENvbnRlbnQodGV4
dENvbnRlbnQpIHtcbiAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2Vz
LlxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdURVhUX0NPTlRFTlQnLFxuICAgIGNvbnRlbnQ6IHRl
eHRDb250ZW50LFxuICAgIGZyb21JbmRleDogbnVsbCxcbiAgICBmcm9tTm9kZTogbnVsbCxcbiAg
ICB0b0luZGV4OiBudWxsLFxuICAgIGFmdGVyTm9kZTogbnVsbFxuICB9O1xufVxuXG4vKipcbiAq
IFB1c2ggYW4gdXBkYXRlLCBpZiBhbnksIG9udG8gdGhlIHF1ZXVlLiBDcmVhdGVzIGEgbmV3IHF1
ZXVlIGlmIG5vbmUgaXNcbiAqIHBhc3NlZCBhbmQgYWx3YXlzIHJldHVybnMgdGhlIHF1ZXVlLiBN
dXRhdGl2ZS5cbiAqL1xuZnVuY3Rpb24gZW5xdWV1ZShxdWV1ZSwgdXBkYXRlKSB7XG4gIGlmICh1
cGRhdGUpIHtcbiAgICBxdWV1ZSA9IHF1ZXVlIHx8IFtdO1xuICAgIHF1ZXVlLnB1c2godXBkYXRl
KTtcbiAgfVxuICByZXR1cm4gcXVldWU7XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIGFueSBlbnF1
ZXVlZCB1cGRhdGVzLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHByb2Nlc3NRdWV1
ZShpbnN0LCB1cGRhdGVRdWV1ZSkge1xuICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnByb2Nl
c3NDaGlsZHJlblVwZGF0ZXMoaW5zdCwgdXBkYXRlUXVldWUpO1xufVxuXG52YXIgc2V0Q2hpbGRy
ZW5Gb3JJbnN0cnVtZW50YXRpb24gPSBlbXB0eUZ1bmN0aW9uO1xuaWYgKGZhbHNlKSB7XG4gIHZh
ciBnZXREZWJ1Z0lEID0gZnVuY3Rpb24gKGluc3QpIHtcbiAgICBpZiAoIWluc3QuX2RlYnVnSUQp
IHtcbiAgICAgIC8vIENoZWNrIGZvciBBUlQtbGlrZSBpbnN0YW5jZXMuIFRPRE86IFRoaXMgaXMg
c2lsbHkvZ3Jvc3MuXG4gICAgICB2YXIgaW50ZXJuYWw7XG4gICAgICBpZiAoaW50ZXJuYWwgPSBS
ZWFjdEluc3RhbmNlTWFwLmdldChpbnN0KSkge1xuICAgICAgICBpbnN0ID0gaW50ZXJuYWw7XG4g
ICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbnN0Ll9kZWJ1Z0lEO1xuICB9O1xuICBzZXRDaGls
ZHJlbkZvckluc3RydW1lbnRhdGlvbiA9IGZ1bmN0aW9uIChjaGlsZHJlbikge1xuICAgIHZhciBk
ZWJ1Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTtcbiAgICAvLyBUT0RPOiBSZWFjdCBOYXRpdmUgZW1w
dHkgY29tcG9uZW50cyBhcmUgYWxzbyBtdWx0aWNoaWxkLlxuICAgIC8vIFRoaXMgbWVhbnMgdGhl
eSBzdGlsbCBnZXQgaW50byB0aGlzIG1ldGhvZCBidXQgZG9uJ3QgaGF2ZSBfZGVidWdJRC5cbiAg
ICBpZiAoZGVidWdJRCAhPT0gMCkge1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uU2V0Q2hpbGRyZW4oZGVidWdJRCwgY2hpbGRyZW4gPyBPYmplY3Qua2V5cyhjaGlsZHJl
bikubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuW2tleV0uX2Rl
YnVnSUQ7XG4gICAgICB9KSA6IFtdKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogUmVhY3RN
dWx0aUNoaWxkIGFyZSBjYXBhYmxlIG9mIHJlY29uY2lsaW5nIG11bHRpcGxlIGNoaWxkcmVuLlxu
ICpcbiAqIEBjbGFzcyBSZWFjdE11bHRpQ2hpbGRcbiAqIEBpbnRlcm5hbFxuICovXG52YXIgUmVh
Y3RNdWx0aUNoaWxkID0ge1xuICAvKipcbiAgICogUHJvdmlkZXMgY29tbW9uIGZ1bmN0aW9uYWxp
dHkgZm9yIGNvbXBvbmVudHMgdGhhdCBtdXN0IHJlY29uY2lsZSBtdWx0aXBsZVxuICAgKiBjaGls
ZHJlbi4gVGhpcyBpcyB1c2VkIGJ5IGBSZWFjdERPTUNvbXBvbmVudGAgdG8gbW91bnQsIHVwZGF0
ZSwgYW5kXG4gICAqIHVubW91bnQgY2hpbGQgY29tcG9uZW50cy5cbiAgICpcbiAgICogQGxlbmRz
IHtSZWFjdE11bHRpQ2hpbGQucHJvdG90eXBlfVxuICAgKi9cbiAgTWl4aW46IHtcbiAgICBfcmVj
b25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwgdHJh
bnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICB2YXIgc2Vs
ZkRlYnVnSUQgPSBnZXREZWJ1Z0lEKHRoaXMpO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudEVs
ZW1lbnQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIu
Y3VycmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgICAgICAgICAgIHJldHVy
biBSZWFjdENoaWxkUmVjb25jaWxlci5pbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVu
LCB0cmFuc2FjdGlvbiwgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xuICAgICAgICAgIH0gZmluYWxs
eSB7XG4gICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDtcbiAgICAg
ICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBSZWFjdENoaWxkUmVjb25j
aWxlci5pbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29u
dGV4dCk7XG4gICAgfSxcblxuICAgIF9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9u
IChwcmV2Q2hpbGRyZW4sIG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBtb3VudEltYWdlcywg
cmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgdmFyIG5leHRDaGls
ZHJlbjtcbiAgICAgIHZhciBzZWxmRGVidWdJRCA9IDA7XG4gICAgICBpZiAoZmFsc2UpIHtcbiAg
ICAgICAgc2VsZkRlYnVnSUQgPSBnZXREZWJ1Z0lEKHRoaXMpO1xuICAgICAgICBpZiAodGhpcy5f
Y3VycmVudEVsZW1lbnQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgUmVhY3RDdXJy
ZW50T3duZXIuY3VycmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgICAgICAg
ICAgIG5leHRDaGlsZHJlbiA9IGZsYXR0ZW5DaGlsZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5FbGVt
ZW50cywgc2VsZkRlYnVnSUQpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBS
ZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAg
UmVhY3RDaGlsZFJlY29uY2lsZXIudXBkYXRlQ2hpbGRyZW4ocHJldkNoaWxkcmVuLCBuZXh0Q2hp
bGRyZW4sIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCB0aGlzLCB0aGlz
Ll9ob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xuICAgICAgICAgIHJl
dHVybiBuZXh0Q2hpbGRyZW47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5leHRDaGlsZHJl
biA9IGZsYXR0ZW5DaGlsZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgc2VsZkRlYnVn
SUQpO1xuICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudXBkYXRlQ2hpbGRyZW4ocHJldkNoaWxk
cmVuLCBuZXh0Q2hpbGRyZW4sIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9u
LCB0aGlzLCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xu
ICAgICAgcmV0dXJuIG5leHRDaGlsZHJlbjtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogR2Vu
ZXJhdGVzIGEgXCJtb3VudCBpbWFnZVwiIGZvciBlYWNoIG9mIHRoZSBzdXBwbGllZCBjaGlsZHJl
bi4gSW4gdGhlIGNhc2VcbiAgICAgKiBvZiBgUmVhY3RET01Db21wb25lbnRgLCBhIG1vdW50IGlt
YWdlIGlzIGEgc3RyaW5nIG9mIG1hcmt1cC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7P29iamVj
dH0gbmVzdGVkQ2hpbGRyZW4gTmVzdGVkIGNoaWxkIG1hcHMuXG4gICAgICogQHJldHVybiB7YXJy
YXl9IEFuIGFycmF5IG9mIG1vdW50ZWQgcmVwcmVzZW50YXRpb25zLlxuICAgICAqIEBpbnRlcm5h
bFxuICAgICAqL1xuICAgIG1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwg
dHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuX3JlY29u
Y2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29u
dGV4dCk7XG4gICAgICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gY2hpbGRyZW47XG5cbiAgICAg
IHZhciBtb3VudEltYWdlcyA9IFtdO1xuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIGZvciAo
dmFyIG5hbWUgaW4gY2hpbGRyZW4pIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuLmhhc093blByb3Bl
cnR5KG5hbWUpKSB7XG4gICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5bbmFtZV07XG4gICAg
ICAgICAgdmFyIHNlbGZEZWJ1Z0lEID0gMDtcbiAgICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAg
ICAgICAgIHNlbGZEZWJ1Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTtcbiAgICAgICAgICB9XG4gICAg
ICAgICAgdmFyIG1vdW50SW1hZ2UgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY2hp
bGQsIHRyYW5zYWN0aW9uLCB0aGlzLCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwg
c2VsZkRlYnVnSUQpO1xuICAgICAgICAgIGNoaWxkLl9tb3VudEluZGV4ID0gaW5kZXgrKztcbiAg
ICAgICAgICBtb3VudEltYWdlcy5wdXNoKG1vdW50SW1hZ2UpO1xuICAgICAgICB9XG4gICAgICB9
XG5cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRh
dGlvbi5jYWxsKHRoaXMsIGNoaWxkcmVuKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1vdW50
SW1hZ2VzO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVyZWQg
Y2hpbGRyZW4gd2l0aCBhIHRleHQgY29udGVudCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmV4dENvbnRlbnQgU3RyaW5nIG9mIGNvbnRlbnQuXG4gICAgICogQGludGVy
bmFsXG4gICAgICovXG4gICAgdXBkYXRlVGV4dENvbnRlbnQ6IGZ1bmN0aW9uIChuZXh0Q29udGVu
dCkge1xuICAgICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4g
ICAgICAvLyBSZW1vdmUgYW55IHJlbmRlcmVkIGNoaWxkcmVuLlxuICAgICAgUmVhY3RDaGlsZFJl
Y29uY2lsZXIudW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbiwgZmFsc2UpO1xuICAgICAgZm9y
ICh2YXIgbmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHtcbiAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5o
YXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICAgICB0cnVlID8gIGZhbHNlID8gaW52YXJp
YW50KGZhbHNlLCAndXBkYXRlVGV4dENvbnRlbnQgY2FsbGVkIG9uIG5vbi1lbXB0eSBjb21wb25l
bnQuJykgOiBfcHJvZEludmFyaWFudCgnMTE4JykgOiB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICAgIC8vIFNldCBuZXcgdGV4dCBjb250ZW50LlxuICAgICAgdmFyIHVwZGF0ZXMgPSBb
bWFrZVRleHRDb250ZW50KG5leHRDb250ZW50KV07XG4gICAgICBwcm9jZXNzUXVldWUodGhpcywg
dXBkYXRlcyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIGFueSByZW5kZXJl
ZCBjaGlsZHJlbiB3aXRoIGEgbWFya3VwIHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBuZXh0TWFya3VwIFN0cmluZyBvZiBtYXJrdXAuXG4gICAgICogQGludGVybmFsXG4g
ICAgICovXG4gICAgdXBkYXRlTWFya3VwOiBmdW5jdGlvbiAobmV4dE1hcmt1cCkge1xuICAgICAg
dmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgICAvLyBSZW1v
dmUgYW55IHJlbmRlcmVkIGNoaWxkcmVuLlxuICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudW5t
b3VudENoaWxkcmVuKHByZXZDaGlsZHJlbiwgZmFsc2UpO1xuICAgICAgZm9yICh2YXIgbmFtZSBp
biBwcmV2Q2hpbGRyZW4pIHtcbiAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0
eShuYW1lKSkge1xuICAgICAgICAgICB0cnVlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAn
dXBkYXRlVGV4dENvbnRlbnQgY2FsbGVkIG9uIG5vbi1lbXB0eSBjb21wb25lbnQuJykgOiBfcHJv
ZEludmFyaWFudCgnMTE4JykgOiB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZh
ciB1cGRhdGVzID0gW21ha2VTZXRNYXJrdXAobmV4dE1hcmt1cCldO1xuICAgICAgcHJvY2Vzc1F1
ZXVlKHRoaXMsIHVwZGF0ZXMpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRo
ZSByZW5kZXJlZCBjaGlsZHJlbiB3aXRoIG5ldyBjaGlsZHJlbi5cbiAgICAgKlxuICAgICAqIEBw
YXJhbSB7P29iamVjdH0gbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMgTmVzdGVkIGNoaWxkIGVs
ZW1lbnQgbWFwcy5cbiAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRy
YW5zYWN0aW9uXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgdXBkYXRlQ2hpbGRyZW46
IGZ1bmN0aW9uIChuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRl
eHQpIHtcbiAgICAgIC8vIEhvb2sgdXNlZCBieSBSZWFjdCBBUlRcbiAgICAgIHRoaXMuX3VwZGF0
ZUNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4
dCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dE5lc3Rl
ZENoaWxkcmVuRWxlbWVudHMgTmVzdGVkIGNoaWxkIGVsZW1lbnQgbWFwcy5cbiAgICAgKiBAcGFy
YW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAgICogQGZpbmFs
XG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIF91cGRhdGVDaGlsZHJlbjogZnVuY3Rp
b24gKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xu
ICAgICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgICB2
YXIgcmVtb3ZlZE5vZGVzID0ge307XG4gICAgICB2YXIgbW91bnRJbWFnZXMgPSBbXTtcbiAgICAg
IHZhciBuZXh0Q2hpbGRyZW4gPSB0aGlzLl9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW4ocHJldkNo
aWxkcmVuLCBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgbW91bnRJbWFnZXMsIHJlbW92ZWRO
b2RlcywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4gJiYg
IXByZXZDaGlsZHJlbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgdXBk
YXRlcyA9IG51bGw7XG4gICAgICB2YXIgbmFtZTtcbiAgICAgIC8vIGBuZXh0SW5kZXhgIHdpbGwg
aW5jcmVtZW50IGZvciBlYWNoIGNoaWxkIGluIGBuZXh0Q2hpbGRyZW5gLCBidXRcbiAgICAgIC8v
IGBsYXN0SW5kZXhgIHdpbGwgYmUgdGhlIGxhc3QgaW5kZXggdmlzaXRlZCBpbiBgcHJldkNoaWxk
cmVuYC5cbiAgICAgIHZhciBuZXh0SW5kZXggPSAwO1xuICAgICAgdmFyIGxhc3RJbmRleCA9IDA7
XG4gICAgICAvLyBgbmV4dE1vdW50SW5kZXhgIHdpbGwgaW5jcmVtZW50IGZvciBlYWNoIG5ld2x5
IG1vdW50ZWQgY2hpbGQuXG4gICAgICB2YXIgbmV4dE1vdW50SW5kZXggPSAwO1xuICAgICAgdmFy
IGxhc3RQbGFjZWROb2RlID0gbnVsbDtcbiAgICAgIGZvciAobmFtZSBpbiBuZXh0Q2hpbGRyZW4p
IHtcbiAgICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAg
ICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJldkNoaWxkID0gcHJl
dkNoaWxkcmVuICYmIHByZXZDaGlsZHJlbltuYW1lXTtcbiAgICAgICAgdmFyIG5leHRDaGlsZCA9
IG5leHRDaGlsZHJlbltuYW1lXTtcbiAgICAgICAgaWYgKHByZXZDaGlsZCA9PT0gbmV4dENoaWxk
KSB7XG4gICAgICAgICAgdXBkYXRlcyA9IGVucXVldWUodXBkYXRlcywgdGhpcy5tb3ZlQ2hpbGQo
cHJldkNoaWxkLCBsYXN0UGxhY2VkTm9kZSwgbmV4dEluZGV4LCBsYXN0SW5kZXgpKTtcbiAgICAg
ICAgICBsYXN0SW5kZXggPSBNYXRoLm1heChwcmV2Q2hpbGQuX21vdW50SW5kZXgsIGxhc3RJbmRl
eCk7XG4gICAgICAgICAgcHJldkNoaWxkLl9tb3VudEluZGV4ID0gbmV4dEluZGV4O1xuICAgICAg
ICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChwcmV2Q2hpbGQpIHtcbiAgICAgICAgICAgIC8vIFVw
ZGF0ZSBgbGFzdEluZGV4YCBiZWZvcmUgYF9tb3VudEluZGV4YCBnZXRzIHVuc2V0IGJ5IHVubW91
bnRpbmcuXG4gICAgICAgICAgICBsYXN0SW5kZXggPSBNYXRoLm1heChwcmV2Q2hpbGQuX21vdW50
SW5kZXgsIGxhc3RJbmRleCk7XG4gICAgICAgICAgICAvLyBUaGUgYHJlbW92ZWROb2Rlc2AgbG9v
cCBiZWxvdyB3aWxsIGFjdHVhbGx5IHJlbW92ZSB0aGUgY2hpbGQuXG4gICAgICAgICAgfVxuICAg
ICAgICAgIC8vIFRoZSBjaGlsZCBtdXN0IGJlIGluc3RhbnRpYXRlZCBiZWZvcmUgaXQncyBtb3Vu
dGVkLlxuICAgICAgICAgIHVwZGF0ZXMgPSBlbnF1ZXVlKHVwZGF0ZXMsIHRoaXMuX21vdW50Q2hp
bGRBdEluZGV4KG5leHRDaGlsZCwgbW91bnRJbWFnZXNbbmV4dE1vdW50SW5kZXhdLCBsYXN0UGxh
Y2VkTm9kZSwgbmV4dEluZGV4LCB0cmFuc2FjdGlvbiwgY29udGV4dCkpO1xuICAgICAgICAgIG5l
eHRNb3VudEluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgbmV4dEluZGV4Kys7XG4gICAgICAg
IGxhc3RQbGFjZWROb2RlID0gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKG5leHRDaGlsZCk7
XG4gICAgICB9XG4gICAgICAvLyBSZW1vdmUgY2hpbGRyZW4gdGhhdCBhcmUgbm8gbG9uZ2VyIHBy
ZXNlbnQuXG4gICAgICBmb3IgKG5hbWUgaW4gcmVtb3ZlZE5vZGVzKSB7XG4gICAgICAgIGlmIChy
ZW1vdmVkTm9kZXMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICB1cGRhdGVzID0g
ZW5xdWV1ZSh1cGRhdGVzLCB0aGlzLl91bm1vdW50Q2hpbGQocHJldkNoaWxkcmVuW25hbWVdLCBy
ZW1vdmVkTm9kZXNbbmFtZV0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHVwZGF0
ZXMpIHtcbiAgICAgICAgcHJvY2Vzc1F1ZXVlKHRoaXMsIHVwZGF0ZXMpO1xuICAgICAgfVxuICAg
ICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG5leHRDaGlsZHJlbjtcblxuICAgICAgaWYgKGZh
bHNlKSB7XG4gICAgICAgIHNldENoaWxkcmVuRm9ySW5zdHJ1bWVudGF0aW9uLmNhbGwodGhpcywg
bmV4dENoaWxkcmVuKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVW5tb3Vu
dHMgYWxsIHJlbmRlcmVkIGNoaWxkcmVuLiBUaGlzIHNob3VsZCBiZSB1c2VkIHRvIGNsZWFuIHVw
IGNoaWxkcmVuXG4gICAgICogd2hlbiB0aGlzIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQuIEl0IGRv
ZXMgbm90IGFjdHVhbGx5IHBlcmZvcm0gYW55XG4gICAgICogYmFja2VuZCBvcGVyYXRpb25zLlxu
ICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgdW5tb3VudENoaWxkcmVuOiBm
dW5jdGlvbiAoc2FmZWx5KSB7XG4gICAgICB2YXIgcmVuZGVyZWRDaGlsZHJlbiA9IHRoaXMuX3Jl
bmRlcmVkQ2hpbGRyZW47XG4gICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51bm1vdW50Q2hpbGRy
ZW4ocmVuZGVyZWRDaGlsZHJlbiwgc2FmZWx5KTtcbiAgICAgIHRoaXMuX3JlbmRlcmVkQ2hpbGRy
ZW4gPSBudWxsO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBNb3ZlcyBhIGNoaWxkIGNvbXBv
bmVudCB0byB0aGUgc3VwcGxpZWQgaW5kZXguXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0
Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gbW92ZS5cbiAgICAgKiBAcGFyYW0ge251bWJl
cn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleCBvZiB0aGUgZWxlbWVudC5cbiAgICAgKiBAcGFy
YW0ge251bWJlcn0gbGFzdEluZGV4IExhc3QgaW5kZXggdmlzaXRlZCBvZiB0aGUgc2libGluZ3Mg
b2YgYGNoaWxkYC5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgbW92ZUNoaWxkOiBm
dW5jdGlvbiAoY2hpbGQsIGFmdGVyTm9kZSwgdG9JbmRleCwgbGFzdEluZGV4KSB7XG4gICAgICAv
LyBJZiB0aGUgaW5kZXggb2YgYGNoaWxkYCBpcyBsZXNzIHRoYW4gYGxhc3RJbmRleGAsIHRoZW4g
aXQgbmVlZHMgdG9cbiAgICAgIC8vIGJlIG1vdmVkLiBPdGhlcndpc2UsIHdlIGRvIG5vdCBuZWVk
IHRvIG1vdmUgaXQgYmVjYXVzZSBhIGNoaWxkIHdpbGwgYmVcbiAgICAgIC8vIGluc2VydGVkIG9y
IG1vdmVkIGJlZm9yZSBgY2hpbGRgLlxuICAgICAgaWYgKGNoaWxkLl9tb3VudEluZGV4IDwgbGFz
dEluZGV4KSB7XG4gICAgICAgIHJldHVybiBtYWtlTW92ZShjaGlsZCwgYWZ0ZXJOb2RlLCB0b0lu
ZGV4KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNoaWxk
IGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxk
IENvbXBvbmVudCB0byBjcmVhdGUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vdW50SW1hZ2Ug
TWFya3VwIHRvIGluc2VydC5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgY3JlYXRl
Q2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgYWZ0ZXJOb2RlLCBtb3VudEltYWdlKSB7XG4gICAgICBy
ZXR1cm4gbWFrZUluc2VydE1hcmt1cChtb3VudEltYWdlLCBhZnRlck5vZGUsIGNoaWxkLl9tb3Vu
dEluZGV4KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIGNoaWxkIGNvbXBv
bmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENoaWxk
IHRvIHJlbW92ZS5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgcmVtb3ZlQ2hpbGQ6
IGZ1bmN0aW9uIChjaGlsZCwgbm9kZSkge1xuICAgICAgcmV0dXJuIG1ha2VSZW1vdmUoY2hpbGQs
IG5vZGUpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBNb3VudHMgYSBjaGlsZCB3aXRoIHRo
ZSBzdXBwbGllZCBuYW1lLlxuICAgICAqXG4gICAgICogTk9URTogVGhpcyBpcyBwYXJ0IG9mIGB1
cGRhdGVDaGlsZHJlbmAgYW5kIGlzIGhlcmUgZm9yIHJlYWRhYmlsaXR5LlxuICAgICAqXG4gICAg
ICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIG1vdW50LlxuICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGNoaWxkLlxuICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBpbmRleCBJbmRleCBhdCB3aGljaCB0byBpbnNlcnQgdGhlIGNoaWxkLlxuICAg
ICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICAg
KiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIF9tb3VudENoaWxkQXRJbmRleDogZnVuY3Rpb24gKGNo
aWxkLCBtb3VudEltYWdlLCBhZnRlck5vZGUsIGluZGV4LCB0cmFuc2FjdGlvbiwgY29udGV4dCkg
e1xuICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBpbmRleDtcbiAgICAgIHJldHVybiB0aGlzLmNy
ZWF0ZUNoaWxkKGNoaWxkLCBhZnRlck5vZGUsIG1vdW50SW1hZ2UpO1xuICAgIH0sXG5cbiAgICAv
KipcbiAgICAgKiBVbm1vdW50cyBhIHJlbmRlcmVkIGNoaWxkLlxuICAgICAqXG4gICAgICogTk9U
RTogVGhpcyBpcyBwYXJ0IG9mIGB1cGRhdGVDaGlsZHJlbmAgYW5kIGlzIGhlcmUgZm9yIHJlYWRh
YmlsaXR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29t
cG9uZW50IHRvIHVubW91bnQuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBfdW5tb3Vu
dENoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIG5vZGUpIHtcbiAgICAgIHZhciB1cGRhdGUgPSB0aGlz
LnJlbW92ZUNoaWxkKGNoaWxkLCBub2RlKTtcbiAgICAgIGNoaWxkLl9tb3VudEluZGV4ID0gbnVs
bDtcbiAgICAgIHJldHVybiB1cGRhdGU7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0
cyA9IFJlYWN0TXVsdGlDaGlsZDtcblxuLyoqKi8gfSksXG4vKiAxNTUgKi9cbi8qKiovIChmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3Ry
aWN0XCI7XG4vKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJvY2Vzcykgey8q
KlxuICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIFJlYWN0UmVjb25jaWxlciA9
IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuXG52YXIgaW5zdGFudGlhdGVSZWFjdENvbXBvbmVu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oNzMpO1xudmFyIEtleUVzY2FwZVV0aWxzID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg0NCk7XG52YXIgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDQzKTtcbnZhciB0cmF2ZXJzZUFsbENoaWxkcmVuID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg3Nyk7XG52YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5c
bnZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rO1xuXG5pZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1
bmRlZmluZWQnICYmIE9iamVjdCh7XCJOT0RFX0VOVlwiOlwicHJvZHVjdGlvblwiLFwiUFVCTElD
X1VSTFwiOlwiLlwifSkgJiYgXCJwcm9kdWN0aW9uXCIgPT09ICd0ZXN0Jykge1xuICAvLyBUZW1w
b3JhcnkgaGFjay5cbiAgLy8gSW5saW5lIHJlcXVpcmVzIGRvbid0IHdvcmsgd2VsbCB3aXRoIEpl
c3Q6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0MFxu
ICAvLyBSZW1vdmUgdGhlIGlubGluZSByZXF1aXJlcyB3aGVuIHdlIGRvbid0IG5lZWQgdGhlbSBh
bnltb3JlOlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTc4
XG4gIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc4KTtcbn1c
blxuZnVuY3Rpb24gaW5zdGFudGlhdGVDaGlsZChjaGlsZEluc3RhbmNlcywgY2hpbGQsIG5hbWUs
IHNlbGZEZWJ1Z0lEKSB7XG4gIC8vIFdlIGZvdW5kIGEgY29tcG9uZW50IGluc3RhbmNlLlxuICB2
YXIga2V5VW5pcXVlID0gY2hpbGRJbnN0YW5jZXNbbmFtZV0gPT09IHVuZGVmaW5lZDtcbiAgaWYg
KGZhbHNlKSB7XG4gICAgaWYgKCFSZWFjdENvbXBvbmVudFRyZWVIb29rKSB7XG4gICAgICBSZWFj
dENvbXBvbmVudFRyZWVIb29rID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJl
ZUhvb2snKTtcbiAgICB9XG4gICAgaWYgKCFrZXlVbmlxdWUpIHtcbiAgICAgIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnZmxhdHRlbkNoaWxk
cmVuKC4uLik6IEVuY291bnRlcmVkIHR3byBjaGlsZHJlbiB3aXRoIHRoZSBzYW1lIGtleSwgJyAr
ICdgJXNgLiBDaGlsZCBrZXlzIG11c3QgYmUgdW5pcXVlOyB3aGVuIHR3byBjaGlsZHJlbiBzaGFy
ZSBhIGtleSwgb25seSAnICsgJ3RoZSBmaXJzdCBjaGlsZCB3aWxsIGJlIHVzZWQuJXMnLCBLZXlF
c2NhcGVVdGlscy51bmVzY2FwZShuYW1lKSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFj
a0FkZGVuZHVtQnlJRChzZWxmRGVidWdJRCkpIDogdm9pZCAwO1xuICAgIH1cbiAgfVxuICBpZiAo
Y2hpbGQgIT0gbnVsbCAmJiBrZXlVbmlxdWUpIHtcbiAgICBjaGlsZEluc3RhbmNlc1tuYW1lXSA9
IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQoY2hpbGQsIHRydWUpO1xuICB9XG59XG5cbi8qKlxu
ICogUmVhY3RDaGlsZFJlY29uY2lsZXIgcHJvdmlkZXMgaGVscGVycyBmb3IgaW5pdGlhbGl6aW5n
IG9yIHVwZGF0aW5nIGEgc2V0IG9mXG4gKiBjaGlsZHJlbi4gSXRzIG91dHB1dCBpcyBzdWl0YWJs
ZSBmb3IgcGFzc2luZyBpdCBvbnRvIFJlYWN0TXVsdGlDaGlsZCB3aGljaFxuICogZG9lcyBkaWZm
ZWQgcmVvcmRlcmluZyBhbmQgaW5zZXJ0aW9uLlxuICovXG52YXIgUmVhY3RDaGlsZFJlY29uY2ls
ZXIgPSB7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBcIm1vdW50IGltYWdlXCIgZm9yIGVhY2gg
b2YgdGhlIHN1cHBsaWVkIGNoaWxkcmVuLiBJbiB0aGUgY2FzZVxuICAgKiBvZiBgUmVhY3RET01D
b21wb25lbnRgLCBhIG1vdW50IGltYWdlIGlzIGEgc3RyaW5nIG9mIG1hcmt1cC5cbiAgICpcbiAg
ICogQHBhcmFtIHs/b2JqZWN0fSBuZXN0ZWRDaGlsZE5vZGVzIE5lc3RlZCBjaGlsZCBtYXBzLlxu
ICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBBIHNldCBvZiBjaGlsZCBpbnN0YW5jZXMuXG4gICAqIEBp
bnRlcm5hbFxuICAgKi9cbiAgaW5zdGFudGlhdGVDaGlsZHJlbjogZnVuY3Rpb24gKG5lc3RlZENo
aWxkTm9kZXMsIHRyYW5zYWN0aW9uLCBjb250ZXh0LCBzZWxmRGVidWdJRCkgLy8gMCBpbiBwcm9k
dWN0aW9uIGFuZCBmb3Igcm9vdHNcbiAge1xuICAgIGlmIChuZXN0ZWRDaGlsZE5vZGVzID09IG51
bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgY2hpbGRJbnN0YW5jZXMg
PSB7fTtcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihuZXN0
ZWRDaGlsZE5vZGVzLCBmdW5jdGlvbiAoY2hpbGRJbnN0cywgY2hpbGQsIG5hbWUpIHtcbiAgICAg
ICAgcmV0dXJuIGluc3RhbnRpYXRlQ2hpbGQoY2hpbGRJbnN0cywgY2hpbGQsIG5hbWUsIHNlbGZE
ZWJ1Z0lEKTtcbiAgICAgIH0sIGNoaWxkSW5zdGFuY2VzKTtcbiAgICB9IGVsc2Uge1xuICAgICAg
dHJhdmVyc2VBbGxDaGlsZHJlbihuZXN0ZWRDaGlsZE5vZGVzLCBpbnN0YW50aWF0ZUNoaWxkLCBj
aGlsZEluc3RhbmNlcyk7XG4gICAgfVxuICAgIHJldHVybiBjaGlsZEluc3RhbmNlcztcbiAgfSxc
blxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hpbGRyZW4gYW5kIHJldHVybnMg
YSBuZXcgc2V0IG9mIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZD
aGlsZHJlbiBQcmV2aW91c2x5IGluaXRpYWxpemVkIHNldCBvZiBjaGlsZHJlbi5cbiAgICogQHBh
cmFtIHs/b2JqZWN0fSBuZXh0Q2hpbGRyZW4gRmxhdCBjaGlsZCBlbGVtZW50IG1hcHMuXG4gICAq
IEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBh
cmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7P29iamVjdH0gQSBuZXcgc2V0IG9m
IGNoaWxkIGluc3RhbmNlcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB1cGRhdGVDaGlsZHJl
bjogZnVuY3Rpb24gKHByZXZDaGlsZHJlbiwgbmV4dENoaWxkcmVuLCBtb3VudEltYWdlcywgcmVt
b3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNv
bnRleHQsIHNlbGZEZWJ1Z0lEKSAvLyAwIGluIHByb2R1Y3Rpb24gYW5kIGZvciByb290c1xuICB7
XG4gICAgLy8gV2UgY3VycmVudGx5IGRvbid0IGhhdmUgYSB3YXkgdG8gdHJhY2sgbW92ZXMgaGVy
ZSBidXQgaWYgd2UgdXNlIGl0ZXJhdG9yc1xuICAgIC8vIGluc3RlYWQgb2YgZm9yLi5pbiB3ZSBj
YW4gemlwIHRoZSBpdGVyYXRvcnMgYW5kIGNoZWNrIGlmIGFuIGl0ZW0gaGFzXG4gICAgLy8gbW92
ZWQuXG4gICAgLy8gVE9ETzogSWYgbm90aGluZyBoYXMgY2hhbmdlZCwgcmV0dXJuIHRoZSBwcmV2
Q2hpbGRyZW4gb2JqZWN0IHNvIHRoYXQgd2VcbiAgICAvLyBjYW4gcXVpY2tseSBiYWlsb3V0IGlm
IG5vdGhpbmcgaGFzIGNoYW5nZWQuXG4gICAgaWYgKCFuZXh0Q2hpbGRyZW4gJiYgIXByZXZDaGls
ZHJlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgbmFtZTtcbiAgICB2YXIgcHJl
dkNoaWxkO1xuICAgIGZvciAobmFtZSBpbiBuZXh0Q2hpbGRyZW4pIHtcbiAgICAgIGlmICghbmV4
dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAg
ICAgfVxuICAgICAgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuICYmIHByZXZDaGlsZHJlbltuYW1l
XTtcbiAgICAgIHZhciBwcmV2RWxlbWVudCA9IHByZXZDaGlsZCAmJiBwcmV2Q2hpbGQuX2N1cnJl
bnRFbGVtZW50O1xuICAgICAgdmFyIG5leHRFbGVtZW50ID0gbmV4dENoaWxkcmVuW25hbWVdO1xu
ICAgICAgaWYgKHByZXZDaGlsZCAhPSBudWxsICYmIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50
KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkpIHtcbiAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnJl
Y2VpdmVDb21wb25lbnQocHJldkNoaWxkLCBuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRl
eHQpO1xuICAgICAgICBuZXh0Q2hpbGRyZW5bbmFtZV0gPSBwcmV2Q2hpbGQ7XG4gICAgICB9IGVs
c2Uge1xuICAgICAgICBpZiAocHJldkNoaWxkKSB7XG4gICAgICAgICAgcmVtb3ZlZE5vZGVzW25h
bWVdID0gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHByZXZDaGlsZCk7XG4gICAgICAgICAg
UmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocHJldkNoaWxkLCBmYWxzZSk7XG4gICAg
ICAgIH1cbiAgICAgICAgLy8gVGhlIGNoaWxkIG11c3QgYmUgaW5zdGFudGlhdGVkIGJlZm9yZSBp
dCdzIG1vdW50ZWQuXG4gICAgICAgIHZhciBuZXh0Q2hpbGRJbnN0YW5jZSA9IGluc3RhbnRpYXRl
UmVhY3RDb21wb25lbnQobmV4dEVsZW1lbnQsIHRydWUpO1xuICAgICAgICBuZXh0Q2hpbGRyZW5b
bmFtZV0gPSBuZXh0Q2hpbGRJbnN0YW5jZTtcbiAgICAgICAgLy8gQ3JlYXRpbmcgbW91bnQgaW1h
Z2Ugbm93IGVuc3VyZXMgcmVmcyBhcmUgcmVzb2x2ZWQgaW4gcmlnaHQgb3JkZXJcbiAgICAgICAg
Ly8gKHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTAxIGZvciBl
eHBsYW5hdGlvbikuXG4gICAgICAgIHZhciBuZXh0Q2hpbGRNb3VudEltYWdlID0gUmVhY3RSZWNv
bmNpbGVyLm1vdW50Q29tcG9uZW50KG5leHRDaGlsZEluc3RhbmNlLCB0cmFuc2FjdGlvbiwgaG9z
dFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKTtcbiAgICAg
ICAgbW91bnRJbWFnZXMucHVzaChuZXh0Q2hpbGRNb3VudEltYWdlKTtcbiAgICAgIH1cbiAgICB9
XG4gICAgLy8gVW5tb3VudCBjaGlsZHJlbiB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2VudC5cbiAg
ICBmb3IgKG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7XG4gICAgICBpZiAocHJldkNoaWxkcmVuLmhh
c093blByb3BlcnR5KG5hbWUpICYmICEobmV4dENoaWxkcmVuICYmIG5leHRDaGlsZHJlbi5oYXNP
d25Qcm9wZXJ0eShuYW1lKSkpIHtcbiAgICAgICAgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuW25h
bWVdO1xuICAgICAgICByZW1vdmVkTm9kZXNbbmFtZV0gPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9z
dE5vZGUocHJldkNoaWxkKTtcbiAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25l
bnQocHJldkNoaWxkLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAg
KiBVbm1vdW50cyBhbGwgcmVuZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hvdWxkIGJlIHVzZWQgdG8g
Y2xlYW4gdXAgY2hpbGRyZW5cbiAgICogd2hlbiB0aGlzIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQu
XG4gICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gcmVuZGVyZWRDaGlsZHJlbiBQcmV2aW91c2x5
IGluaXRpYWxpemVkIHNldCBvZiBjaGlsZHJlbi5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB1
bm1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uIChyZW5kZXJlZENoaWxkcmVuLCBzYWZlbHkpIHtcbiAg
ICBmb3IgKHZhciBuYW1lIGluIHJlbmRlcmVkQ2hpbGRyZW4pIHtcbiAgICAgIGlmIChyZW5kZXJl
ZENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIHZhciByZW5kZXJlZENo
aWxkID0gcmVuZGVyZWRDaGlsZHJlbltuYW1lXTtcbiAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVu
bW91bnRDb21wb25lbnQocmVuZGVyZWRDaGlsZCwgc2FmZWx5KTtcbiAgICAgIH1cbiAgICB9XG4g
IH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDaGlsZFJlY29uY2lsZXI7XG4vKiBXRUJQ
QUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyg3
MikpKVxuXG4vKioqLyB9KSxcbi8qIDE1NiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyKSxcbiAgICBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtc
blxudmFyIFJlYWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG52YXIgUmVhY3RDb21wb25l
bnRFbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNDEpO1xudmFyIFJlYWN0Q3VycmVu
dE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG52YXIgUmVhY3RFcnJvclV0aWxzID0g
X193ZWJwYWNrX3JlcXVpcmVfXygzMyk7XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMjIpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg3KTtcbnZhciBSZWFjdE5vZGVUeXBlcyA9IF9fd2VicGFja19yZXF1aXJlX18oNzQp
O1xudmFyIFJlYWN0UmVjb25jaWxlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuXG5pZiAo
ZmFsc2UpIHtcbiAgdmFyIGNoZWNrUmVhY3RUeXBlU3BlYyA9IHJlcXVpcmUoJy4vY2hlY2tSZWFj
dFR5cGVTcGVjJyk7XG59XG5cbnZhciBlbXB0eU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18o
MjMpO1xudmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG52YXIgc2hhbGxv
d0VxdWFsID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG52YXIgc2hvdWxkVXBkYXRlUmVhY3RD
b21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQzKTtcbnZhciB3YXJuaW5nID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxKTtcblxudmFyIENvbXBvc2l0ZVR5cGVzID0ge1xuICBJbXB1cmVDbGFz
czogMCxcbiAgUHVyZUNsYXNzOiAxLFxuICBTdGF0ZWxlc3NGdW5jdGlvbmFsOiAyXG59O1xuXG5m
dW5jdGlvbiBTdGF0ZWxlc3NDb21wb25lbnQoQ29tcG9uZW50KSB7fVxuU3RhdGVsZXNzQ29tcG9u
ZW50LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBDb21wb25lbnQgPSBS
ZWFjdEluc3RhbmNlTWFwLmdldCh0aGlzKS5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgdmFyIGVs
ZW1lbnQgPSBDb21wb25lbnQodGhpcy5wcm9wcywgdGhpcy5jb250ZXh0LCB0aGlzLnVwZGF0ZXIp
O1xuICB3YXJuSWZJbnZhbGlkRWxlbWVudChDb21wb25lbnQsIGVsZW1lbnQpO1xuICByZXR1cm4g
ZWxlbWVudDtcbn07XG5cbmZ1bmN0aW9uIHdhcm5JZkludmFsaWRFbGVtZW50KENvbXBvbmVudCwg
ZWxlbWVudCkge1xuICBpZiAoZmFsc2UpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IGZh
bHNlIHx8IFJlYWN0LmlzVmFsaWRFbGVtZW50KGVsZW1lbnQpLCAnJXMoLi4uKTogQSB2YWxpZCBS
ZWFjdCBlbGVtZW50IChvciBudWxsKSBtdXN0IGJlIHJldHVybmVkLiBZb3UgbWF5IGhhdmUgJyAr
ICdyZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3RoZXIgaW52YWxpZCBvYmpl
Y3QuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25l
bnQnKSA6IHZvaWQgMDtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyghQ29tcG9uZW50LmNoaWxkQ29udGV4dFR5cGVzLCAnJXMoLi4uKTogY2hpbGRD
b250ZXh0VHlwZXMgY2Fubm90IGJlIGRlZmluZWQgb24gYSBmdW5jdGlvbmFsIGNvbXBvbmVudC4n
LCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcp
IDogdm9pZCAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNob3VsZENvbnN0cnVjdChDb21wb25lbnQp
IHtcbiAgcmV0dXJuICEhKENvbXBvbmVudC5wcm90b3R5cGUgJiYgQ29tcG9uZW50LnByb3RvdHlw
ZS5pc1JlYWN0Q29tcG9uZW50KTtcbn1cblxuZnVuY3Rpb24gaXNQdXJlQ29tcG9uZW50KENvbXBv
bmVudCkge1xuICByZXR1cm4gISEoQ29tcG9uZW50LnByb3RvdHlwZSAmJiBDb21wb25lbnQucHJv
dG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50KTtcbn1cblxuLy8gU2VwYXJhdGVkIGludG8gYSBm
dW5jdGlvbiB0byBjb250YWluIGRlb3B0aW1pemF0aW9ucyBjYXVzZWQgYnkgdHJ5L2ZpbmFsbHku
XG5mdW5jdGlvbiBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmbiwgZGVidWdJRCwgdGltZXJUeXBlKSB7
XG4gIGlmIChkZWJ1Z0lEID09PSAwKSB7XG4gICAgLy8gVG9wLWxldmVsIHdyYXBwZXJzIChzZWUg
UmVhY3RNb3VudCkgYW5kIGVtcHR5IGNvbXBvbmVudHMgKHNlZVxuICAgIC8vIFJlYWN0RE9NRW1w
dHlDb21wb25lbnQpIGFyZSBpbnZpc2libGUgdG8gaG9va3MgYW5kIGRldnRvb2xzLlxuICAgIC8v
IEJvdGggYXJlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgdGhhdCBzaG91bGQgZ28gYXdheSBpbiB0
aGUgZnV0dXJlLlxuICAgIHJldHVybiBmbigpO1xuICB9XG5cbiAgUmVhY3RJbnN0cnVtZW50YXRp
b24uZGVidWdUb29sLm9uQmVnaW5MaWZlQ3ljbGVUaW1lcihkZWJ1Z0lELCB0aW1lclR5cGUpO1xu
ICB0cnkge1xuICAgIHJldHVybiBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVuZExpZmVDeWNsZVRpbWVyKGRlYnVnSUQsIHRpbWVyVHlw
ZSk7XG4gIH1cbn1cblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0gVGhlIExpZmUtQ3ljbGUg
b2YgYSBDb21wb3NpdGUgQ29tcG9uZW50IC0tLS0tLS0tLS0tLS0tLS0tLVxuICpcbiAqIC0gY29u
c3RydWN0b3I6IEluaXRpYWxpemF0aW9uIG9mIHN0YXRlLiBUaGUgaW5zdGFuY2UgaXMgbm93IHJl
dGFpbmVkLlxuICogICAtIGNvbXBvbmVudFdpbGxNb3VudFxuICogICAtIHJlbmRlclxuICogICAt
IFtjaGlsZHJlbidzIGNvbnN0cnVjdG9yc11cbiAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVu
dFdpbGxNb3VudCBhbmQgcmVuZGVyXVxuICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50RGlk
TW91bnRdXG4gKiAgICAgLSBjb21wb25lbnREaWRNb3VudFxuICpcbiAqICAgICAgIFVwZGF0ZSBQ
aGFzZXM6XG4gKiAgICAgICAtIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgKG9ubHkgY2FsbGVk
IGlmIHBhcmVudCB1cGRhdGVkKVxuICogICAgICAgLSBzaG91bGRDb21wb25lbnRVcGRhdGVcbiAq
ICAgICAgICAgLSBjb21wb25lbnRXaWxsVXBkYXRlXG4gKiAgICAgICAgICAgLSByZW5kZXJcbiAq
ICAgICAgICAgICAtIFtjaGlsZHJlbidzIGNvbnN0cnVjdG9ycyBvciByZWNlaXZlIHByb3BzIHBo
YXNlc11cbiAqICAgICAgICAgLSBjb21wb25lbnREaWRVcGRhdGVcbiAqXG4gKiAgICAgLSBjb21w
b25lbnRXaWxsVW5tb3VudFxuICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50V2lsbFVubW91
bnRdXG4gKiAgIC0gW2NoaWxkcmVuIGRlc3Ryb3llZF1cbiAqIC0gKGRlc3Ryb3llZCk6IFRoZSBp
bnN0YW5jZSBpcyBub3cgYmxhbmssIHJlbGVhc2VkIGJ5IFJlYWN0IGFuZCByZWFkeSBmb3IgR0Mu
XG4gKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4vKipcbiAqIEFuIGluY3JlbWVu
dGluZyBJRCBhc3NpZ25lZCB0byBlYWNoIGNvbXBvbmVudCB3aGVuIGl0IGlzIG1vdW50ZWQuIFRo
aXMgaXNcbiAqIHVzZWQgdG8gZW5mb3JjZSB0aGUgb3JkZXIgaW4gd2hpY2ggYFJlYWN0VXBkYXRl
c2AgdXBkYXRlcyBkaXJ0eSBjb21wb25lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBu
ZXh0TW91bnRJRCA9IDE7XG5cbi8qKlxuICogQGxlbmRzIHtSZWFjdENvbXBvc2l0ZUNvbXBvbmVu
dC5wcm90b3R5cGV9XG4gKi9cbnZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IHtcbiAgLyoq
XG4gICAqIEJhc2UgY29uc3RydWN0b3IgZm9yIGFsbCBjb21wb3NpdGUgY29tcG9uZW50LlxuICAg
KlxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudFxuICAgKiBAZmluYWxcbiAgICog
QGludGVybmFsXG4gICAqL1xuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAg
dGhpcy5fY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSAw
O1xuICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBudWxsO1xuICAgIHRoaXMuX2luc3RhbmNlID0g
bnVsbDtcbiAgICB0aGlzLl9ob3N0UGFyZW50ID0gbnVsbDtcbiAgICB0aGlzLl9ob3N0Q29udGFp
bmVySW5mbyA9IG51bGw7XG5cbiAgICAvLyBTZWUgUmVhY3RVcGRhdGVRdWV1ZVxuICAgIHRoaXMu
X3VwZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51
bGw7XG4gICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsO1xuICAgIHRoaXMuX3BlbmRp
bmdSZXBsYWNlU3RhdGUgPSBmYWxzZTtcbiAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBm
YWxzZTtcblxuICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBudWxsO1xuICAgIHRoaXMuX3Jl
bmRlcmVkQ29tcG9uZW50ID0gbnVsbDtcbiAgICB0aGlzLl9jb250ZXh0ID0gbnVsbDtcbiAgICB0
aGlzLl9tb3VudE9yZGVyID0gMDtcbiAgICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBudWxsO1xu
XG4gICAgLy8gU2VlIFJlYWN0VXBkYXRlcyBhbmQgUmVhY3RVcGRhdGVRdWV1ZS5cbiAgICB0aGlz
Ll9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDtcblxuICAgIC8vIENvbXBvbmVudFdpbGxVbm1vdW50
IHNoYWxsIG9ubHkgYmUgY2FsbGVkIG9uY2VcbiAgICB0aGlzLl9jYWxsZWRDb21wb25lbnRXaWxs
VW5tb3VudCA9IGZhbHNlO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICB0aGlzLl93YXJuZWRB
Ym91dFJlZnNJblJlbmRlciA9IGZhbHNlO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogSW5p
dGlhbGl6ZXMgdGhlIGNvbXBvbmVudCwgcmVuZGVycyBtYXJrdXAsIGFuZCByZWdpc3RlcnMgZXZl
bnQgbGlzdGVuZXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rp
b258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBh
cmFtIHs/b2JqZWN0fSBob3N0UGFyZW50XG4gICAqIEBwYXJhbSB7P29iamVjdH0gaG9zdENvbnRh
aW5lckluZm9cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBjb250ZXh0XG4gICAqIEByZXR1cm4gez9z
dHJpbmd9IFJlbmRlcmVkIG1hcmt1cCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBET00uXG4gICAq
IEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlv
biAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7
XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xu
ICAgIHRoaXMuX21vdW50T3JkZXIgPSBuZXh0TW91bnRJRCsrO1xuICAgIHRoaXMuX2hvc3RQYXJl
bnQgPSBob3N0UGFyZW50O1xuICAgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gaG9zdENvbnRh
aW5lckluZm87XG5cbiAgICB2YXIgcHVibGljUHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5w
cm9wcztcbiAgICB2YXIgcHVibGljQ29udGV4dCA9IHRoaXMuX3Byb2Nlc3NDb250ZXh0KGNvbnRl
eHQpO1xuXG4gICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5c
biAgICB2YXIgdXBkYXRlUXVldWUgPSB0cmFuc2FjdGlvbi5nZXRVcGRhdGVRdWV1ZSgpO1xuXG4g
ICAgLy8gSW5pdGlhbGl6ZSB0aGUgcHVibGljIGNsYXNzXG4gICAgdmFyIGRvQ29uc3RydWN0ID0g
c2hvdWxkQ29uc3RydWN0KENvbXBvbmVudCk7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9jb25zdHJ1
Y3RDb21wb25lbnQoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRh
dGVRdWV1ZSk7XG4gICAgdmFyIHJlbmRlcmVkRWxlbWVudDtcblxuICAgIC8vIFN1cHBvcnQgZnVu
Y3Rpb25hbCBjb21wb25lbnRzXG4gICAgaWYgKCFkb0NvbnN0cnVjdCAmJiAoaW5zdCA9PSBudWxs
IHx8IGluc3QucmVuZGVyID09IG51bGwpKSB7XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSBpbnN0
O1xuICAgICAgd2FybklmSW52YWxpZEVsZW1lbnQoQ29tcG9uZW50LCByZW5kZXJlZEVsZW1lbnQp
O1xuICAgICAgIShpbnN0ID09PSBudWxsIHx8IGluc3QgPT09IGZhbHNlIHx8IFJlYWN0LmlzVmFs
aWRFbGVtZW50KGluc3QpKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJyVzKC4uLik6IEEg
dmFsaWQgUmVhY3QgZWxlbWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91IG1heSBo
YXZlIHJldHVybmVkIHVuZGVmaW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhlciBpbnZhbGlkIG9i
amVjdC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBv
bmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwNScsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBD
b21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBpbnN0ID0gbmV3
IFN0YXRlbGVzc0NvbXBvbmVudChDb21wb25lbnQpO1xuICAgICAgdGhpcy5fY29tcG9zaXRlVHlw
ZSA9IENvbXBvc2l0ZVR5cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWw7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIGlmIChpc1B1cmVDb21wb25lbnQoQ29tcG9uZW50KSkge1xuICAgICAgICB0aGlzLl9jb21w
b3NpdGVUeXBlID0gQ29tcG9zaXRlVHlwZXMuUHVyZUNsYXNzO1xuICAgICAgfSBlbHNlIHtcbiAg
ICAgICAgdGhpcy5fY29tcG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVzLkltcHVyZUNsYXNzO1xu
ICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8gVGhpcyB3aWxsIHRo
cm93IGxhdGVyIGluIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQsIGJ1dCBhZGQgYW4gZWFybHlc
biAgICAgIC8vIHdhcm5pbmcgbm93IHRvIGhlbHAgZGVidWdnaW5nXG4gICAgICBpZiAoaW5zdC5y
ZW5kZXIgPT0gbnVsbCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IE5vIGByZW5kZXJgIG1ldGhvZCBmb3Vu
ZCBvbiB0aGUgcmV0dXJuZWQgY29tcG9uZW50ICcgKyAnaW5zdGFuY2U6IHlvdSBtYXkgaGF2ZSBm
b3Jnb3R0ZW4gdG8gZGVmaW5lIGByZW5kZXJgLicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBD
b21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICB9XG5cbiAgICAg
IHZhciBwcm9wc011dGF0ZWQgPSBpbnN0LnByb3BzICE9PSBwdWJsaWNQcm9wcztcbiAgICAgIHZh
ciBjb21wb25lbnROYW1lID0gQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1l
IHx8ICdDb21wb25lbnQnO1xuXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhpbnN0LnByb3BzID09PSB1bmRlZmluZWQgfHwgIXByb3BzTXV0YXRl
ZCwgJyVzKC4uLik6IFdoZW4gY2FsbGluZyBzdXBlcigpIGluIGAlc2AsIG1ha2Ugc3VyZSB0byBw
YXNzICcgKyBcInVwIHRoZSBzYW1lIHByb3BzIHRoYXQgeW91ciBjb21wb25lbnQncyBjb25zdHJ1
Y3RvciB3YXMgcGFzc2VkLlwiLCBjb21wb25lbnROYW1lLCBjb21wb25lbnROYW1lKSA6IHZvaWQg
MDtcbiAgICB9XG5cbiAgICAvLyBUaGVzZSBzaG91bGQgYmUgc2V0IHVwIGluIHRoZSBjb25zdHJ1
Y3RvciwgYnV0IGFzIGEgY29udmVuaWVuY2UgZm9yXG4gICAgLy8gc2ltcGxlciBjbGFzcyBhYnN0
cmFjdGlvbnMsIHdlIHNldCB0aGVtIHVwIGFmdGVyIHRoZSBmYWN0LlxuICAgIGluc3QucHJvcHMg
PSBwdWJsaWNQcm9wcztcbiAgICBpbnN0LmNvbnRleHQgPSBwdWJsaWNDb250ZXh0O1xuICAgIGlu
c3QucmVmcyA9IGVtcHR5T2JqZWN0O1xuICAgIGluc3QudXBkYXRlciA9IHVwZGF0ZVF1ZXVlO1xu
XG4gICAgdGhpcy5faW5zdGFuY2UgPSBpbnN0O1xuXG4gICAgLy8gU3RvcmUgYSByZWZlcmVuY2Ug
ZnJvbSB0aGUgaW5zdGFuY2UgYmFjayB0byB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb25cbiAg
ICBSZWFjdEluc3RhbmNlTWFwLnNldChpbnN0LCB0aGlzKTtcblxuICAgIGlmIChmYWxzZSkge1xu
ICAgICAgLy8gU2luY2UgcGxhaW4gSlMgY2xhc3NlcyBhcmUgZGVmaW5lZCB3aXRob3V0IGFueSBz
cGVjaWFsIGluaXRpYWxpemF0aW9uXG4gICAgICAvLyBsb2dpYywgd2UgY2FuIG5vdCBjYXRjaCBj
b21tb24gZXJyb3JzIGVhcmx5LiBUaGVyZWZvcmUsIHdlIGhhdmUgdG9cbiAgICAgIC8vIGNhdGNo
IHRoZW0gaGVyZSwgYXQgaW5pdGlhbGl6YXRpb24gdGltZSwgaW5zdGVhZC5cbiAgICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LmdldEluaXRp
YWxTdGF0ZSB8fCBpbnN0LmdldEluaXRpYWxTdGF0ZS5pc1JlYWN0Q2xhc3NBcHByb3ZlZCB8fCBp
bnN0LnN0YXRlLCAnZ2V0SW5pdGlhbFN0YXRlIHdhcyBkZWZpbmVkIG9uICVzLCBhIHBsYWluIEph
dmFTY3JpcHQgY2xhc3MuICcgKyAnVGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgY2xhc3NlcyBj
cmVhdGVkIHVzaW5nIFJlYWN0LmNyZWF0ZUNsYXNzLiAnICsgJ0RpZCB5b3UgbWVhbiB0byBkZWZp
bmUgYSBzdGF0ZSBwcm9wZXJ0eSBpbnN0ZWFkPycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBv
bmVudCcpIDogdm9pZCAwO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoIWluc3QuZ2V0RGVmYXVsdFByb3BzIHx8IGluc3QuZ2V0RGVmYXVsdFBy
b3BzLmlzUmVhY3RDbGFzc0FwcHJvdmVkLCAnZ2V0RGVmYXVsdFByb3BzIHdhcyBkZWZpbmVkIG9u
ICVzLCBhIHBsYWluIEphdmFTY3JpcHQgY2xhc3MuICcgKyAnVGhpcyBpcyBvbmx5IHN1cHBvcnRl
ZCBmb3IgY2xhc3NlcyBjcmVhdGVkIHVzaW5nIFJlYWN0LmNyZWF0ZUNsYXNzLiAnICsgJ1VzZSBh
IHN0YXRpYyBwcm9wZXJ0eSB0byBkZWZpbmUgZGVmYXVsdFByb3BzIGluc3RlYWQuJywgdGhpcy5n
ZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5wcm9wVHlwZXMsICdwcm9w
VHlwZXMgd2FzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgb24gJXMuIFVzZSBhIHN0
YXRpYyAnICsgJ3Byb3BlcnR5IHRvIGRlZmluZSBwcm9wVHlwZXMgaW5zdGVhZC4nLCB0aGlzLmdl
dE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LmNvbnRleHRUeXBlcywgJ2Nv
bnRleHRUeXBlcyB3YXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBvbiAlcy4gVXNl
IGEgJyArICdzdGF0aWMgcHJvcGVydHkgdG8gZGVmaW5lIGNvbnRleHRUeXBlcyBpbnN0ZWFkLics
IHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3QuY29t
cG9uZW50U2hvdWxkVXBkYXRlICE9PSAnZnVuY3Rpb24nLCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxl
ZCAnICsgJ2NvbXBvbmVudFNob3VsZFVwZGF0ZSgpLiBEaWQgeW91IG1lYW4gc2hvdWxkQ29tcG9u
ZW50VXBkYXRlKCk/ICcgKyAnVGhlIG5hbWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1
c2UgdGhlIGZ1bmN0aW9uIGlzICcgKyAnZXhwZWN0ZWQgdG8gcmV0dXJuIGEgdmFsdWUuJywgdGhp
cy5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdC5jb21wb25l
bnREaWRVbm1vdW50ICE9PSAnZnVuY3Rpb24nLCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsg
J2NvbXBvbmVudERpZFVubW91bnQoKS4gQnV0IHRoZXJlIGlzIG5vIHN1Y2ggbGlmZWN5Y2xlIG1l
dGhvZC4gJyArICdEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFVubW91bnQoKT8nLCB0aGlzLmdl
dE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudFdp
bGxSZWNpZXZlUHJvcHMgIT09ICdmdW5jdGlvbicsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcg
KyAnY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcygpLiBEaWQgeW91IG1lYW4gY29tcG9uZW50V2ls
bFJlY2VpdmVQcm9wcygpPycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9p
ZCAwO1xuICAgIH1cblxuICAgIHZhciBpbml0aWFsU3RhdGUgPSBpbnN0LnN0YXRlO1xuICAgIGlm
IChpbml0aWFsU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaW5zdC5zdGF0ZSA9IGluaXRp
YWxTdGF0ZSA9IG51bGw7XG4gICAgfVxuICAgICEodHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ29i
amVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaW5pdGlhbFN0YXRlKSkgPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICclcy5zdGF0ZTogbXVzdCBiZSBzZXQgdG8gYW4gb2JqZWN0IG9yIG51bGwnLCB0
aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IF9wcm9kSW52YXJp
YW50KCcxMDYnLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6
IHZvaWQgMDtcblxuICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcbiAgICB0aGlz
Ll9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBk
YXRlID0gZmFsc2U7XG5cbiAgICB2YXIgbWFya3VwO1xuICAgIGlmIChpbnN0LnVuc3RhYmxlX2hh
bmRsZUVycm9yKSB7XG4gICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnRXaXRo
RXJyb3JIYW5kbGluZyhyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJ
bmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hcmt1cCA9
IHRoaXMucGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhv
c3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgaWYg
KGluc3QuY29tcG9uZW50RGlkTW91bnQpIHtcbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICB0
cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGZ1bmN0aW9uICgpIHtcbiAg
ICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBy
ZXR1cm4gaW5zdC5jb21wb25lbnREaWRNb3VudCgpO1xuICAgICAgICAgIH0sIF90aGlzLl9kZWJ1
Z0lELCAnY29tcG9uZW50RGlkTW91bnQnKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xu
ICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGluc3QuY29t
cG9uZW50RGlkTW91bnQsIGluc3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXJr
dXA7XG4gIH0sXG5cbiAgX2NvbnN0cnVjdENvbXBvbmVudDogZnVuY3Rpb24gKGRvQ29uc3RydWN0
LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpIHtcbiAgICBpZiAoZmFs
c2UpIHtcbiAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlzO1xuICAgICAgdHJ5
IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcihk
b0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtcbiAg
ICAgIH0gZmluYWxseSB7XG4gICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxs
O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0Q29t
cG9uZW50V2l0aG91dE93bmVyKGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4
dCwgdXBkYXRlUXVldWUpO1xuICAgIH1cbiAgfSxcblxuICBfY29uc3RydWN0Q29tcG9uZW50V2l0
aG91dE93bmVyOiBmdW5jdGlvbiAoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWNDb250
ZXh0LCB1cGRhdGVRdWV1ZSkge1xuICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxl
bWVudC50eXBlO1xuXG4gICAgaWYgKGRvQ29uc3RydWN0KSB7XG4gICAgICBpZiAoZmFsc2UpIHtc
biAgICAgICAgcmV0dXJuIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAg
ICAgICByZXR1cm4gbmV3IENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBk
YXRlUXVldWUpO1xuICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY3RvcicpO1xuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnQocHVibGljUHJvcHMsIHB1YmxpY0Nv
bnRleHQsIHVwZGF0ZVF1ZXVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIGNhbiBz
dGlsbCBiZSBhbiBpbnN0YW5jZSBpbiBjYXNlIG9mIGZhY3RvcnkgY29tcG9uZW50c1xuICAgIC8v
IGJ1dCB3ZSdsbCBjb3VudCB0aGlzIGFzIHRpbWUgc3BlbnQgcmVuZGVyaW5nIGFzIHRoZSBtb3Jl
IGNvbW1vbiBjYXNlLlxuICAgIGlmIChmYWxzZSkge1xuICAgICAgcmV0dXJuIG1lYXN1cmVMaWZl
Q3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIENvbXBvbmVudChwdWJsaWNQ
cm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuICAgICAgfSwgdGhpcy5fZGVidWdJ
RCwgJ3JlbmRlcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gQ29tcG9uZW50KHB1Ymxp
Y1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG4gICAgfVxuICB9LFxuXG4gIHBl
cmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZzogZnVuY3Rpb24gKHJlbmRlcmVkRWxl
bWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0
KSB7XG4gICAgdmFyIG1hcmt1cDtcbiAgICB2YXIgY2hlY2twb2ludCA9IHRyYW5zYWN0aW9uLmNo
ZWNrcG9pbnQoKTtcbiAgICB0cnkge1xuICAgICAgbWFya3VwID0gdGhpcy5wZXJmb3JtSW5pdGlh
bE1vdW50KHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRy
YW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBSb2xsIGJh
Y2sgdG8gY2hlY2twb2ludCwgaGFuZGxlIGVycm9yICh3aGljaCBtYXkgYWRkIGl0ZW1zIHRvIHRo
ZSB0cmFuc2FjdGlvbiksIGFuZCB0YWtlIGEgbmV3IGNoZWNrcG9pbnRcbiAgICAgIHRyYW5zYWN0
aW9uLnJvbGxiYWNrKGNoZWNrcG9pbnQpO1xuICAgICAgdGhpcy5faW5zdGFuY2UudW5zdGFibGVf
aGFuZGxlRXJyb3IoZSk7XG4gICAgICBpZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUpIHtcbiAg
ICAgICAgdGhpcy5faW5zdGFuY2Uuc3RhdGUgPSB0aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKHRo
aXMuX2luc3RhbmNlLnByb3BzLCB0aGlzLl9pbnN0YW5jZS5jb250ZXh0KTtcbiAgICAgIH1cbiAg
ICAgIGNoZWNrcG9pbnQgPSB0cmFuc2FjdGlvbi5jaGVja3BvaW50KCk7XG5cbiAgICAgIHRoaXMu
X3JlbmRlcmVkQ29tcG9uZW50LnVubW91bnRDb21wb25lbnQodHJ1ZSk7XG4gICAgICB0cmFuc2Fj
dGlvbi5yb2xsYmFjayhjaGVja3BvaW50KTtcblxuICAgICAgLy8gVHJ5IGFnYWluIC0gd2UndmUg
aW5mb3JtZWQgdGhlIGNvbXBvbmVudCBhYm91dCB0aGUgZXJyb3IsIHNvIHRoZXkgY2FuIHJlbmRl
ciBhbiBlcnJvciBtZXNzYWdlIHRoaXMgdGltZS5cbiAgICAgIC8vIElmIHRoaXMgdGhyb3dzIGFn
YWluLCB0aGUgZXJyb3Igd2lsbCBidWJibGUgdXAgKGFuZCBjYW4gYmUgY2F1Z2h0IGJ5IGEgaGln
aGVyIGVycm9yIGJvdW5kYXJ5KS5cbiAgICAgIG1hcmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxN
b3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFu
c2FjdGlvbiwgY29udGV4dCk7XG4gICAgfVxuICAgIHJldHVybiBtYXJrdXA7XG4gIH0sXG5cbiAg
cGVyZm9ybUluaXRpYWxNb3VudDogZnVuY3Rpb24gKHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVu
dCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIGlu
c3QgPSB0aGlzLl9pbnN0YW5jZTtcblxuICAgIHZhciBkZWJ1Z0lEID0gMDtcbiAgICBpZiAoZmFs
c2UpIHtcbiAgICAgIGRlYnVnSUQgPSB0aGlzLl9kZWJ1Z0lEO1xuICAgIH1cblxuICAgIGlmIChp
bnN0LmNvbXBvbmVudFdpbGxNb3VudCkge1xuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIG1l
YXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gaW5zdC5j
b21wb25lbnRXaWxsTW91bnQoKTtcbiAgICAgICAgfSwgZGVidWdJRCwgJ2NvbXBvbmVudFdpbGxN
b3VudCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5zdC5jb21wb25lbnRXaWxsTW91bnQo
KTtcbiAgICAgIH1cbiAgICAgIC8vIFdoZW4gbW91bnRpbmcsIGNhbGxzIHRvIGBzZXRTdGF0ZWAg
YnkgYGNvbXBvbmVudFdpbGxNb3VudGAgd2lsbCBzZXRcbiAgICAgIC8vIGB0aGlzLl9wZW5kaW5n
U3RhdGVRdWV1ZWAgd2l0aG91dCB0cmlnZ2VyaW5nIGEgcmUtcmVuZGVyLlxuICAgICAgaWYgKHRo
aXMuX3BlbmRpbmdTdGF0ZVF1ZXVlKSB7XG4gICAgICAgIGluc3Quc3RhdGUgPSB0aGlzLl9wcm9j
ZXNzUGVuZGluZ1N0YXRlKGluc3QucHJvcHMsIGluc3QuY29udGV4dCk7XG4gICAgICB9XG4gICAg
fVxuXG4gICAgLy8gSWYgbm90IGEgc3RhdGVsZXNzIGNvbXBvbmVudCwgd2Ugbm93IHJlbmRlclxu
ICAgIGlmIChyZW5kZXJlZEVsZW1lbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVuZGVyZWRF
bGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCk7XG4gICAgfVxuXG4gICAg
dmFyIG5vZGVUeXBlID0gUmVhY3ROb2RlVHlwZXMuZ2V0VHlwZShyZW5kZXJlZEVsZW1lbnQpO1xu
ICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBub2RlVHlwZTtcbiAgICB2YXIgY2hpbGQgPSB0
aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KHJlbmRlcmVkRWxlbWVudCwgbm9kZVR5cGUg
IT09IFJlYWN0Tm9kZVR5cGVzLkVNUFRZIC8qIHNob3VsZEhhdmVEZWJ1Z0lEICovXG4gICAgKTtc
biAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IGNoaWxkO1xuXG4gICAgdmFyIG1hcmt1cCA9
IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgdHJhbnNhY3Rpb24sIGhvc3RQ
YXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRl
eHQpLCBkZWJ1Z0lEKTtcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgaWYgKGRlYnVnSUQgIT09
IDApIHtcbiAgICAgICAgdmFyIGNoaWxkRGVidWdJRHMgPSBjaGlsZC5fZGVidWdJRCAhPT0gMCA/
IFtjaGlsZC5fZGVidWdJRF0gOiBbXTtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVi
dWdUb29sLm9uU2V0Q2hpbGRyZW4oZGVidWdJRCwgY2hpbGREZWJ1Z0lEcyk7XG4gICAgICB9XG4g
ICAgfVxuXG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfSxcblxuICBnZXRIb3N0Tm9kZTogZnVuY3Rp
b24gKCkge1xuICAgIHJldHVybiBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUodGhpcy5fcmVu
ZGVyZWRDb21wb25lbnQpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZWxlYXNlcyBhbnkgcmVzb3Vy
Y2VzIGFsbG9jYXRlZCBieSBgbW91bnRDb21wb25lbnRgLlxuICAgKlxuICAgKiBAZmluYWxcbiAg
ICogQGludGVybmFsXG4gICAqL1xuICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoc2FmZWx5
KSB7XG4gICAgaWYgKCF0aGlzLl9yZW5kZXJlZENvbXBvbmVudCkge1xuICAgICAgcmV0dXJuO1xu
ICAgIH1cblxuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG5cbiAgICBpZiAoaW5zdC5j
b21wb25lbnRXaWxsVW5tb3VudCAmJiAhaW5zdC5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQp
IHtcbiAgICAgIGluc3QuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50ID0gdHJ1ZTtcblxuICAg
ICAgaWYgKHNhZmVseSkge1xuICAgICAgICB2YXIgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpICsgJy5j
b21wb25lbnRXaWxsVW5tb3VudCgpJztcbiAgICAgICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1
YXJkZWRDYWxsYmFjayhuYW1lLCBpbnN0LmNvbXBvbmVudFdpbGxVbm1vdW50LmJpbmQoaW5zdCkp
O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgbWVhc3Vy
ZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGluc3QuY29t
cG9uZW50V2lsbFVubW91bnQoKTtcbiAgICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY29tcG9u
ZW50V2lsbFVubW91bnQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbnN0LmNvbXBv
bmVudFdpbGxVbm1vdW50KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAo
dGhpcy5fcmVuZGVyZWRDb21wb25lbnQpIHtcbiAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50
Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LCBzYWZlbHkpO1xuICAgICAgdGhpcy5f
cmVuZGVyZWROb2RlVHlwZSA9IG51bGw7XG4gICAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9
IG51bGw7XG4gICAgICB0aGlzLl9pbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gUmVz
ZXQgcGVuZGluZyBmaWVsZHNcbiAgICAvLyBFdmVuIGlmIHRoaXMgY29tcG9uZW50IGlzIHNjaGVk
dWxlZCBmb3IgYW5vdGhlciB1cGRhdGUgaW4gUmVhY3RVcGRhdGVzLFxuICAgIC8vIGl0IHdvdWxk
IHN0aWxsIGJlIGlnbm9yZWQgYmVjYXVzZSB0aGVzZSBmaWVsZHMgYXJlIHJlc2V0LlxuICAgIHRo
aXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0
YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG4gICAg
dGhpcy5fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQg
PSBudWxsO1xuXG4gICAgLy8gVGhlc2UgZmllbGRzIGRvIG5vdCByZWFsbHkgbmVlZCB0byBiZSBy
ZXNldCBzaW5jZSB0aGlzIG9iamVjdCBpcyBub1xuICAgIC8vIGxvbmdlciBhY2Nlc3NpYmxlLlxu
ICAgIHRoaXMuX2NvbnRleHQgPSBudWxsO1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSAwO1xuICAg
IHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51bGw7XG5cbiAgICAvLyBEZWxldGUgdGhlIHJlZmVy
ZW5jZSBmcm9tIHRoZSBpbnN0YW5jZSB0byB0aGlzIGludGVybmFsIHJlcHJlc2VudGF0aW9uXG4g
ICAgLy8gd2hpY2ggYWxsb3cgdGhlIGludGVybmFscyB0byBiZSBwcm9wZXJseSBjbGVhbmVkIHVw
IGV2ZW4gaWYgdGhlIHVzZXJcbiAgICAvLyBsZWFrcyBhIHJlZmVyZW5jZSB0byB0aGUgcHVibGlj
IGluc3RhbmNlLlxuICAgIFJlYWN0SW5zdGFuY2VNYXAucmVtb3ZlKGluc3QpO1xuXG4gICAgLy8g
U29tZSBleGlzdGluZyBjb21wb25lbnRzIHJlbHkgb24gaW5zdC5wcm9wcyBldmVuIGFmdGVyIHRo
ZXkndmUgYmVlblxuICAgIC8vIGRlc3Ryb3llZCAoaW4gZXZlbnQgaGFuZGxlcnMpLlxuICAgIC8v
IFRPRE86IGluc3QucHJvcHMgPSBudWxsO1xuICAgIC8vIFRPRE86IGluc3Quc3RhdGUgPSBudWxs
O1xuICAgIC8vIFRPRE86IGluc3QuY29udGV4dCA9IG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAq
IEZpbHRlcnMgdGhlIGNvbnRleHQgb2JqZWN0IHRvIG9ubHkgY29udGFpbiBrZXlzIHNwZWNpZmll
ZCBpblxuICAgKiBgY29udGV4dFR5cGVzYFxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29u
dGV4dFxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX21h
c2tDb250ZXh0OiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBDb21wb25lbnQgPSB0aGlz
Ll9jdXJyZW50RWxlbWVudC50eXBlO1xuICAgIHZhciBjb250ZXh0VHlwZXMgPSBDb21wb25lbnQu
Y29udGV4dFR5cGVzO1xuICAgIGlmICghY29udGV4dFR5cGVzKSB7XG4gICAgICByZXR1cm4gZW1w
dHlPYmplY3Q7XG4gICAgfVxuICAgIHZhciBtYXNrZWRDb250ZXh0ID0ge307XG4gICAgZm9yICh2
YXIgY29udGV4dE5hbWUgaW4gY29udGV4dFR5cGVzKSB7XG4gICAgICBtYXNrZWRDb250ZXh0W2Nv
bnRleHROYW1lXSA9IGNvbnRleHRbY29udGV4dE5hbWVdO1xuICAgIH1cbiAgICByZXR1cm4gbWFz
a2VkQ29udGV4dDtcbiAgfSxcblxuICAvKipcbiAgICogRmlsdGVycyB0aGUgY29udGV4dCBvYmpl
Y3QgdG8gb25seSBjb250YWluIGtleXMgc3BlY2lmaWVkIGluXG4gICAqIGBjb250ZXh0VHlwZXNg
LCBhbmQgYXNzZXJ0cyB0aGF0IHRoZXkgYXJlIHZhbGlkLlxuICAgKlxuICAgKiBAcGFyYW0ge29i
amVjdH0gY29udGV4dFxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAg
Ki9cbiAgX3Byb2Nlc3NDb250ZXh0OiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBtYXNr
ZWRDb250ZXh0ID0gdGhpcy5fbWFza0NvbnRleHQoY29udGV4dCk7XG4gICAgaWYgKGZhbHNlKSB7
XG4gICAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICAg
IGlmIChDb21wb25lbnQuY29udGV4dFR5cGVzKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrQ29udGV4
dFR5cGVzKENvbXBvbmVudC5jb250ZXh0VHlwZXMsIG1hc2tlZENvbnRleHQsICdjb250ZXh0Jyk7
XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXNrZWRDb250ZXh0O1xuICB9LFxuXG4gIC8q
KlxuICAgKiBAcGFyYW0ge29iamVjdH0gY3VycmVudENvbnRleHRcbiAgICogQHJldHVybiB7b2Jq
ZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3Byb2Nlc3NDaGlsZENvbnRleHQ6IGZ1bmN0
aW9uIChjdXJyZW50Q29udGV4dCkge1xuICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50
RWxlbWVudC50eXBlO1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgdmFyIGNo
aWxkQ29udGV4dDtcblxuICAgIGlmIChpbnN0LmdldENoaWxkQ29udGV4dCkge1xuICAgICAgaWYg
KGZhbHNlKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2lu
UHJvY2Vzc2luZ0NoaWxkQ29udGV4dCgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNoaWxk
Q29udGV4dCA9IGluc3QuZ2V0Q2hpbGRDb250ZXh0KCk7XG4gICAgICAgIH0gZmluYWxseSB7XG4g
ICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5kUHJvY2Vzc2luZ0No
aWxkQ29udGV4dCgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGlsZENv
bnRleHQgPSBpbnN0LmdldENoaWxkQ29udGV4dCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlm
IChjaGlsZENvbnRleHQpIHtcbiAgICAgICEodHlwZW9mIENvbXBvbmVudC5jaGlsZENvbnRleHRU
eXBlcyA9PT0gJ29iamVjdCcpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnJXMuZ2V0Q2hp
bGRDb250ZXh0KCk6IGNoaWxkQ29udGV4dFR5cGVzIG11c3QgYmUgZGVmaW5lZCBpbiBvcmRlciB0
byB1c2UgZ2V0Q2hpbGRDb250ZXh0KCkuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9z
aXRlQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMTA3JywgdGhpcy5nZXROYW1lKCkgfHwg
J1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBpZiAoZmFsc2UpIHtc
biAgICAgICAgdGhpcy5fY2hlY2tDb250ZXh0VHlwZXMoQ29tcG9uZW50LmNoaWxkQ29udGV4dFR5
cGVzLCBjaGlsZENvbnRleHQsICdjaGlsZCBjb250ZXh0Jyk7XG4gICAgICB9XG4gICAgICBmb3Ig
KHZhciBuYW1lIGluIGNoaWxkQ29udGV4dCkge1xuICAgICAgICAhKG5hbWUgaW4gQ29tcG9uZW50
LmNoaWxkQ29udGV4dFR5cGVzKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJyVzLmdldENo
aWxkQ29udGV4dCgpOiBrZXkgXCIlc1wiIGlzIG5vdCBkZWZpbmVkIGluIGNoaWxkQ29udGV4dFR5
cGVzLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcsIG5hbWUp
IDogX3Byb2RJbnZhcmlhbnQoJzEwOCcsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudCcsIG5hbWUpIDogdm9pZCAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9hc3Np
Z24oe30sIGN1cnJlbnRDb250ZXh0LCBjaGlsZENvbnRleHQpO1xuICAgIH1cbiAgICByZXR1cm4g
Y3VycmVudENvbnRleHQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFzc2VydCB0aGF0IHRoZSBjb250
ZXh0IHR5cGVzIGFyZSB2YWxpZFxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gdHlwZVNwZWNz
IE1hcCBvZiBjb250ZXh0IGZpZWxkIHRvIGEgUmVhY3RQcm9wVHlwZVxuICAgKiBAcGFyYW0ge29i
amVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWRc
biAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIGUuZy4gXCJwcm9wXCIsIFwiY29udGV4dFwi
LCBcImNoaWxkIGNvbnRleHRcIlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2NoZWNrQ29udGV4
dFR5cGVzOiBmdW5jdGlvbiAodHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uKSB7XG4gICAgaWYg
KGZhbHNlKSB7XG4gICAgICBjaGVja1JlYWN0VHlwZVNwZWModHlwZVNwZWNzLCB2YWx1ZXMsIGxv
Y2F0aW9uLCB0aGlzLmdldE5hbWUoKSwgbnVsbCwgdGhpcy5fZGVidWdJRCk7XG4gICAgfVxuICB9
LFxuXG4gIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgdHJhbnNhY3Rp
b24sIG5leHRDb250ZXh0KSB7XG4gICAgdmFyIHByZXZFbGVtZW50ID0gdGhpcy5fY3VycmVudEVs
ZW1lbnQ7XG4gICAgdmFyIHByZXZDb250ZXh0ID0gdGhpcy5fY29udGV4dDtcblxuICAgIHRoaXMu
X3BlbmRpbmdFbGVtZW50ID0gbnVsbDtcblxuICAgIHRoaXMudXBkYXRlQ29tcG9uZW50KHRyYW5z
YWN0aW9uLCBwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIHByZXZDb250ZXh0LCBuZXh0Q29udGV4
dCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIElmIGFueSBvZiBgX3BlbmRpbmdFbGVtZW50YCwgYF9w
ZW5kaW5nU3RhdGVRdWV1ZWAsIG9yIGBfcGVuZGluZ0ZvcmNlVXBkYXRlYFxuICAgKiBpcyBzZXQs
IHVwZGF0ZSB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcGVyZm9y
bVVwZGF0ZUlmTmVjZXNzYXJ5OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24pIHtcbiAgICBpZiAodGhp
cy5fcGVuZGluZ0VsZW1lbnQgIT0gbnVsbCkge1xuICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2Vp
dmVDb21wb25lbnQodGhpcywgdGhpcy5fcGVuZGluZ0VsZW1lbnQsIHRyYW5zYWN0aW9uLCB0aGlz
Ll9jb250ZXh0KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlICE9PSBu
dWxsIHx8IHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSkge1xuICAgICAgdGhpcy51cGRhdGVDb21w
b25lbnQodHJhbnNhY3Rpb24sIHRoaXMuX2N1cnJlbnRFbGVtZW50LCB0aGlzLl9jdXJyZW50RWxl
bWVudCwgdGhpcy5fY29udGV4dCwgdGhpcy5fY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAg
IHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIFBlcmZvcm0gYW4gdXBkYXRlIHRvIGEgbW91bnRlZCBjb21wb25lbnQuIFRoZSBjb21wb25l
bnRXaWxsUmVjZWl2ZVByb3BzIGFuZFxuICAgKiBzaG91bGRDb21wb25lbnRVcGRhdGUgbWV0aG9k
cyBhcmUgY2FsbGVkLCB0aGVuIChhc3N1bWluZyB0aGUgdXBkYXRlIGlzbid0XG4gICAqIHNraXBw
ZWQpIHRoZSByZW1haW5pbmcgdXBkYXRlIGxpZmVjeWNsZSBtZXRob2RzIGFyZSBjYWxsZWQgYW5k
IHRoZSBET01cbiAgICogcmVwcmVzZW50YXRpb24gaXMgdXBkYXRlZC5cbiAgICpcbiAgICogQnkg
ZGVmYXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5nIGFuZCByZWNvbmNpbGlh
dGlvbiBhbGdvcml0aG0uXG4gICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBv
dmVycmlkZSB0aGlzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rp
b259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBwcmV2UGFyZW50RWxl
bWVudFxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dFBhcmVudEVsZW1lbnRcbiAgICog
QGludGVybmFsXG4gICAqIEBvdmVycmlkYWJsZVxuICAgKi9cbiAgdXBkYXRlQ29tcG9uZW50OiBm
dW5jdGlvbiAodHJhbnNhY3Rpb24sIHByZXZQYXJlbnRFbGVtZW50LCBuZXh0UGFyZW50RWxlbWVu
dCwgcHJldlVubWFza2VkQ29udGV4dCwgbmV4dFVubWFza2VkQ29udGV4dCkge1xuICAgIHZhciBp
bnN0ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgIShpbnN0ICE9IG51bGwpID8gIGZhbHNlID8gaW52
YXJpYW50KGZhbHNlLCAnQXR0ZW1wdGVkIHRvIHVwZGF0ZSBjb21wb25lbnQgYCVzYCB0aGF0IGhh
cyBhbHJlYWR5IGJlZW4gdW5tb3VudGVkIChvciBmYWlsZWQgdG8gbW91bnQpLicsIHRoaXMuZ2V0
TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEz
NicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAw
O1xuXG4gICAgdmFyIHdpbGxSZWNlaXZlID0gZmFsc2U7XG4gICAgdmFyIG5leHRDb250ZXh0O1xu
XG4gICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBjb250ZXh0IGhhcyBjaGFuZ2VkIG9yIG5vdFxuICAg
IGlmICh0aGlzLl9jb250ZXh0ID09PSBuZXh0VW5tYXNrZWRDb250ZXh0KSB7XG4gICAgICBuZXh0
Q29udGV4dCA9IGluc3QuY29udGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dENvbnRleHQg
PSB0aGlzLl9wcm9jZXNzQ29udGV4dChuZXh0VW5tYXNrZWRDb250ZXh0KTtcbiAgICAgIHdpbGxS
ZWNlaXZlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgcHJldlByb3BzID0gcHJldlBhcmVudEVs
ZW1lbnQucHJvcHM7XG4gICAgdmFyIG5leHRQcm9wcyA9IG5leHRQYXJlbnRFbGVtZW50LnByb3Bz
O1xuXG4gICAgLy8gTm90IGEgc2ltcGxlIHN0YXRlIHVwZGF0ZSBidXQgYSBwcm9wcyB1cGRhdGVc
biAgICBpZiAocHJldlBhcmVudEVsZW1lbnQgIT09IG5leHRQYXJlbnRFbGVtZW50KSB7XG4gICAg
ICB3aWxsUmVjZWl2ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gQW4gdXBkYXRlIGhlcmUgd2ls
bCBzY2hlZHVsZSBhbiB1cGRhdGUgYnV0IGltbWVkaWF0ZWx5IHNldFxuICAgIC8vIF9wZW5kaW5n
U3RhdGVRdWV1ZSB3aGljaCB3aWxsIGVuc3VyZSB0aGF0IGFueSBzdGF0ZSB1cGRhdGVzIGdldHNc
biAgICAvLyBpbW1lZGlhdGVseSByZWNvbmNpbGVkIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgdGhl
IG5leHQgYmF0Y2guXG4gICAgaWYgKHdpbGxSZWNlaXZlICYmIGluc3QuY29tcG9uZW50V2lsbFJl
Y2VpdmVQcm9wcykge1xuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIG1lYXN1cmVMaWZlQ3lj
bGVQZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxs
UmVjZWl2ZVByb3BzKG5leHRQcm9wcywgbmV4dENvbnRleHQpO1xuICAgICAgICB9LCB0aGlzLl9k
ZWJ1Z0lELCAnY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcycpO1xuICAgICAgfSBlbHNlIHtcbiAg
ICAgICAgaW5zdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcywgbmV4dENvbnRl
eHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBuZXh0U3RhdGUgPSB0aGlzLl9wcm9jZXNz
UGVuZGluZ1N0YXRlKG5leHRQcm9wcywgbmV4dENvbnRleHQpO1xuICAgIHZhciBzaG91bGRVcGRh
dGUgPSB0cnVlO1xuXG4gICAgaWYgKCF0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUpIHtcbiAgICAg
IGlmIChpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSkge1xuICAgICAgICBpZiAoZmFsc2UpIHtc
biAgICAgICAgICBzaG91bGRVcGRhdGUgPSBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAo
KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5zdC5zaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFBy
b3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KTtcbiAgICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lE
LCAnc2hvdWxkQ29tcG9uZW50VXBkYXRlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAg
c2hvdWxkVXBkYXRlID0gaW5zdC5zaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzLCBuZXh0
U3RhdGUsIG5leHRDb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAg
aWYgKHRoaXMuX2NvbXBvc2l0ZVR5cGUgPT09IENvbXBvc2l0ZVR5cGVzLlB1cmVDbGFzcykge1xu
ICAgICAgICAgIHNob3VsZFVwZGF0ZSA9ICFzaGFsbG93RXF1YWwocHJldlByb3BzLCBuZXh0UHJv
cHMpIHx8ICFzaGFsbG93RXF1YWwoaW5zdC5zdGF0ZSwgbmV4dFN0YXRlKTtcbiAgICAgICAgfVxu
ICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoc2hvdWxkVXBkYXRlICE9PSB1bmRlZmlu
ZWQsICclcy5zaG91bGRDb21wb25lbnRVcGRhdGUoKTogUmV0dXJuZWQgdW5kZWZpbmVkIGluc3Rl
YWQgb2YgYSAnICsgJ2Jvb2xlYW4gdmFsdWUuIE1ha2Ugc3VyZSB0byByZXR1cm4gdHJ1ZSBvciBm
YWxzZS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZv
aWQgMDtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVCYXRjaE51bWJlciA9IG51bGw7XG4gICAg
aWYgKHNob3VsZFVwZGF0ZSkge1xuICAgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFs
c2U7XG4gICAgICAvLyBXaWxsIHNldCBgdGhpcy5wcm9wc2AsIGB0aGlzLnN0YXRlYCBhbmQgYHRo
aXMuY29udGV4dGAuXG4gICAgICB0aGlzLl9wZXJmb3JtQ29tcG9uZW50VXBkYXRlKG5leHRQYXJl
bnRFbGVtZW50LCBuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQsIHRyYW5zYWN0aW9u
LCBuZXh0VW5tYXNrZWRDb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgaXQncyBk
ZXRlcm1pbmVkIHRoYXQgYSBjb21wb25lbnQgc2hvdWxkIG5vdCB1cGRhdGUsIHdlIHN0aWxsIHdh
bnRcbiAgICAgIC8vIHRvIHNldCBwcm9wcyBhbmQgc3RhdGUgYnV0IHdlIHNob3J0Y3V0IHRoZSBy
ZXN0IG9mIHRoZSB1cGRhdGUuXG4gICAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRQYXJl
bnRFbGVtZW50O1xuICAgICAgdGhpcy5fY29udGV4dCA9IG5leHRVbm1hc2tlZENvbnRleHQ7XG4g
ICAgICBpbnN0LnByb3BzID0gbmV4dFByb3BzO1xuICAgICAgaW5zdC5zdGF0ZSA9IG5leHRTdGF0
ZTtcbiAgICAgIGluc3QuY29udGV4dCA9IG5leHRDb250ZXh0O1xuICAgIH1cbiAgfSxcblxuICBf
cHJvY2Vzc1BlbmRpbmdTdGF0ZTogZnVuY3Rpb24gKHByb3BzLCBjb250ZXh0KSB7XG4gICAgdmFy
IGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcbiAgICB2YXIgcXVldWUgPSB0aGlzLl9wZW5kaW5nU3Rh
dGVRdWV1ZTtcbiAgICB2YXIgcmVwbGFjZSA9IHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU7XG4g
ICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdT
dGF0ZVF1ZXVlID0gbnVsbDtcblxuICAgIGlmICghcXVldWUpIHtcbiAgICAgIHJldHVybiBpbnN0
LnN0YXRlO1xuICAgIH1cblxuICAgIGlmIChyZXBsYWNlICYmIHF1ZXVlLmxlbmd0aCA9PT0gMSkg
e1xuICAgICAgcmV0dXJuIHF1ZXVlWzBdO1xuICAgIH1cblxuICAgIHZhciBuZXh0U3RhdGUgPSBf
YXNzaWduKHt9LCByZXBsYWNlID8gcXVldWVbMF0gOiBpbnN0LnN0YXRlKTtcbiAgICBmb3IgKHZh
ciBpID0gcmVwbGFjZSA/IDEgOiAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZh
ciBwYXJ0aWFsID0gcXVldWVbaV07XG4gICAgICBfYXNzaWduKG5leHRTdGF0ZSwgdHlwZW9mIHBh
cnRpYWwgPT09ICdmdW5jdGlvbicgPyBwYXJ0aWFsLmNhbGwoaW5zdCwgbmV4dFN0YXRlLCBwcm9w
cywgY29udGV4dCkgOiBwYXJ0aWFsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dFN0YXRlO1xu
ICB9LFxuXG4gIC8qKlxuICAgKiBNZXJnZXMgbmV3IHByb3BzIGFuZCBzdGF0ZSwgbm90aWZpZXMg
ZGVsZWdhdGUgbWV0aG9kcyBvZiB1cGRhdGUgYW5kXG4gICAqIHBlcmZvcm1zIHVwZGF0ZS5cbiAg
ICpcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IE5leHQgZWxlbWVudFxu
ICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzIE5leHQgcHVibGljIG9iamVjdCB0byBzZXQg
YXMgcHJvcGVydGllcy5cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGUgTmV4dCBvYmpl
Y3QgdG8gc2V0IGFzIHN0YXRlLlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0IE5l
eHQgcHVibGljIG9iamVjdCB0byBzZXQgYXMgY29udGV4dC5cbiAgICogQHBhcmFtIHtSZWFjdFJl
Y29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gez9vYmplY3R9IHVu
bWFza2VkQ29udGV4dFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3BlcmZvcm1Db21wb25lbnRV
cGRhdGU6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgbmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRD
b250ZXh0LCB0cmFuc2FjdGlvbiwgdW5tYXNrZWRDb250ZXh0KSB7XG4gICAgdmFyIF90aGlzMiA9
IHRoaXM7XG5cbiAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXG4gICAgdmFyIGhhc0Nv
bXBvbmVudERpZFVwZGF0ZSA9IEJvb2xlYW4oaW5zdC5jb21wb25lbnREaWRVcGRhdGUpO1xuICAg
IHZhciBwcmV2UHJvcHM7XG4gICAgdmFyIHByZXZTdGF0ZTtcbiAgICB2YXIgcHJldkNvbnRleHQ7
XG4gICAgaWYgKGhhc0NvbXBvbmVudERpZFVwZGF0ZSkge1xuICAgICAgcHJldlByb3BzID0gaW5z
dC5wcm9wcztcbiAgICAgIHByZXZTdGF0ZSA9IGluc3Quc3RhdGU7XG4gICAgICBwcmV2Q29udGV4
dCA9IGluc3QuY29udGV4dDtcbiAgICB9XG5cbiAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsVXBk
YXRlKSB7XG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYo
ZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxVcGRhdGUo
bmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KTtcbiAgICAgICAgfSwgdGhpcy5fZGVi
dWdJRCwgJ2NvbXBvbmVudFdpbGxVcGRhdGUnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlu
c3QuY29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQp
O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dEVsZW1l
bnQ7XG4gICAgdGhpcy5fY29udGV4dCA9IHVubWFza2VkQ29udGV4dDtcbiAgICBpbnN0LnByb3Bz
ID0gbmV4dFByb3BzO1xuICAgIGluc3Quc3RhdGUgPSBuZXh0U3RhdGU7XG4gICAgaW5zdC5jb250
ZXh0ID0gbmV4dENvbnRleHQ7XG5cbiAgICB0aGlzLl91cGRhdGVSZW5kZXJlZENvbXBvbmVudCh0
cmFuc2FjdGlvbiwgdW5tYXNrZWRDb250ZXh0KTtcblxuICAgIGlmIChoYXNDb21wb25lbnREaWRV
cGRhdGUpIHtcbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFj
dE1vdW50UmVhZHkoKS5lbnF1ZXVlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBtZWFzdXJlTGlm
ZUN5Y2xlUGVyZihpbnN0LmNvbXBvbmVudERpZFVwZGF0ZS5iaW5kKGluc3QsIHByZXZQcm9wcywg
cHJldlN0YXRlLCBwcmV2Q29udGV4dCksIF90aGlzMi5fZGVidWdJRCwgJ2NvbXBvbmVudERpZFVw
ZGF0ZScpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zYWN0aW9u
LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoaW5zdC5jb21wb25lbnREaWRVcGRhdGUuYmlu
ZChpbnN0LCBwcmV2UHJvcHMsIHByZXZTdGF0ZSwgcHJldkNvbnRleHQpLCBpbnN0KTtcbiAgICAg
IH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIGNvbXBvbmVudCdzIGByZW5k
ZXJgIG1ldGhvZCBhbmQgdXBkYXRlIHRoZSBET00gYWNjb3JkaW5nbHkuXG4gICAqXG4gICAqIEBw
YXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQGludGVy
bmFsXG4gICAqL1xuICBfdXBkYXRlUmVuZGVyZWRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2Fj
dGlvbiwgY29udGV4dCkge1xuICAgIHZhciBwcmV2Q29tcG9uZW50SW5zdGFuY2UgPSB0aGlzLl9y
ZW5kZXJlZENvbXBvbmVudDtcbiAgICB2YXIgcHJldlJlbmRlcmVkRWxlbWVudCA9IHByZXZDb21w
b25lbnRJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQ7XG4gICAgdmFyIG5leHRSZW5kZXJlZEVsZW1l
bnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKTtcblxuICAgIHZhciBkZWJ1Z0lE
ID0gMDtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGRlYnVnSUQgPSB0aGlzLl9kZWJ1Z0lEO1xu
ICAgIH1cblxuICAgIGlmIChzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudChwcmV2UmVuZGVyZWRF
bGVtZW50LCBuZXh0UmVuZGVyZWRFbGVtZW50KSkge1xuICAgICAgUmVhY3RSZWNvbmNpbGVyLnJl
Y2VpdmVDb21wb25lbnQocHJldkNvbXBvbmVudEluc3RhbmNlLCBuZXh0UmVuZGVyZWRFbGVtZW50
LCB0cmFuc2FjdGlvbiwgdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChjb250ZXh0KSk7XG4gICAg
fSBlbHNlIHtcbiAgICAgIHZhciBvbGRIb3N0Tm9kZSA9IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0
Tm9kZShwcmV2Q29tcG9uZW50SW5zdGFuY2UpO1xuICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91
bnRDb21wb25lbnQocHJldkNvbXBvbmVudEluc3RhbmNlLCBmYWxzZSk7XG5cbiAgICAgIHZhciBu
b2RlVHlwZSA9IFJlYWN0Tm9kZVR5cGVzLmdldFR5cGUobmV4dFJlbmRlcmVkRWxlbWVudCk7XG4g
ICAgICB0aGlzLl9yZW5kZXJlZE5vZGVUeXBlID0gbm9kZVR5cGU7XG4gICAgICB2YXIgY2hpbGQg
PSB0aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG5leHRSZW5kZXJlZEVsZW1lbnQsIG5v
ZGVUeXBlICE9PSBSZWFjdE5vZGVUeXBlcy5FTVBUWSAvKiBzaG91bGRIYXZlRGVidWdJRCAqL1xu
ICAgICAgKTtcbiAgICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gY2hpbGQ7XG5cbiAgICAg
IHZhciBuZXh0TWFya3VwID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNoaWxkLCB0
cmFuc2FjdGlvbiwgdGhpcy5faG9zdFBhcmVudCwgdGhpcy5faG9zdENvbnRhaW5lckluZm8sIHRo
aXMuX3Byb2Nlc3NDaGlsZENvbnRleHQoY29udGV4dCksIGRlYnVnSUQpO1xuXG4gICAgICBpZiAo
ZmFsc2UpIHtcbiAgICAgICAgaWYgKGRlYnVnSUQgIT09IDApIHtcbiAgICAgICAgICB2YXIgY2hp
bGREZWJ1Z0lEcyA9IGNoaWxkLl9kZWJ1Z0lEICE9PSAwID8gW2NoaWxkLl9kZWJ1Z0lEXSA6IFtd
O1xuICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVu
KGRlYnVnSUQsIGNoaWxkRGVidWdJRHMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRo
aXMuX3JlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRIb3N0Tm9kZSwgbmV4dE1hcmt1cCwgcHJldkNv
bXBvbmVudEluc3RhbmNlKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIE92ZXJyaWRkZW4g
aW4gc2hhbGxvdyByZW5kZXJpbmcuXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIF9y
ZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGZ1bmN0aW9uIChvbGRIb3N0Tm9kZSwgbmV4dE1hcmt1cCwg
cHJldkluc3RhbmNlKSB7XG4gICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5yZXBsYWNlTm9k
ZVdpdGhNYXJrdXAob2xkSG9zdE5vZGUsIG5leHRNYXJrdXAsIHByZXZJbnN0YW5jZSk7XG4gIH0s
XG5cbiAgLyoqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIF9yZW5kZXJWYWxpZGF0ZWRDb21w
b25lbnRXaXRob3V0T3duZXJPckNvbnRleHQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaW5zdCA9
IHRoaXMuX2luc3RhbmNlO1xuICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7XG5cbiAgICBpZiAoZmFs
c2UpIHtcbiAgICAgIHJlbmRlcmVkRWxlbWVudCA9IG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0
aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGluc3QucmVuZGVyKCk7XG4gICAgICB9LCB0aGlzLl9k
ZWJ1Z0lELCAncmVuZGVyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbmRlcmVkRWxlbWVudCA9
IGluc3QucmVuZGVyKCk7XG4gICAgfVxuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLyBXZSBh
bGxvdyBhdXRvLW1vY2tzIHRvIHByb2NlZWQgYXMgaWYgdGhleSdyZSByZXR1cm5pbmcgbnVsbC5c
biAgICAgIGlmIChyZW5kZXJlZEVsZW1lbnQgPT09IHVuZGVmaW5lZCAmJiBpbnN0LnJlbmRlci5f
aXNNb2NrRnVuY3Rpb24pIHtcbiAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBiYWQgcHJhY3Rp
Y2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmRcbiAgICAgICAgLy8gZGVwcmVjYXRpbmcgdGhp
cyBjb252ZW5pZW5jZS5cbiAgICAgICAgcmVuZGVyZWRFbGVtZW50ID0gbnVsbDtcbiAgICAgIH1c
biAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyZWRFbGVtZW50O1xuICB9LFxuXG4gIC8qKlxuICAg
KiBAcHJpdmF0ZVxuICAgKi9cbiAgX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudDogZnVuY3Rpb24g
KCkge1xuICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7XG4gICAgaWYgKFwicHJvZHVjdGlvblwiICE9
PSAncHJvZHVjdGlvbicgfHwgdGhpcy5fY29tcG9zaXRlVHlwZSAhPT0gQ29tcG9zaXRlVHlwZXMu
U3RhdGVsZXNzRnVuY3Rpb25hbCkge1xuICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9
IHRoaXM7XG4gICAgICB0cnkge1xuICAgICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5k
ZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKTtcbiAgICAgIH0gZmlu
YWxseSB7XG4gICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsO1xuICAgICAg
fVxuICAgIH0gZWxzZSB7XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxp
ZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKTtcbiAgICB9XG4gICAgIShcbiAg
ICAvLyBUT0RPOiBBbiBgaXNWYWxpZE5vZGVgIGZ1bmN0aW9uIHdvdWxkIHByb2JhYmx5IGJlIG1v
cmUgYXBwcm9wcmlhdGVcbiAgICByZW5kZXJlZEVsZW1lbnQgPT09IG51bGwgfHwgcmVuZGVyZWRF
bGVtZW50ID09PSBmYWxzZSB8fCBSZWFjdC5pc1ZhbGlkRWxlbWVudChyZW5kZXJlZEVsZW1lbnQp
KSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJyVzLnJlbmRlcigpOiBBIHZhbGlkIFJlYWN0
IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuIFlvdSBtYXkgaGF2ZSByZXR1cm5l
ZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3RoZXIgaW52YWxpZCBvYmplY3QuJywgdGhp
cy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFu
dCgnMTA5JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2
b2lkIDA7XG5cbiAgICByZXR1cm4gcmVuZGVyZWRFbGVtZW50O1xuICB9LFxuXG4gIC8qKlxuICAg
KiBMYXppbHkgYWxsb2NhdGVzIHRoZSByZWZzIG9iamVjdCBhbmQgc3RvcmVzIGBjb21wb25lbnRg
IGFzIGByZWZgLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIFJlZmVyZW5jZSBuYW1l
LlxuICAgKiBAcGFyYW0ge2NvbXBvbmVudH0gY29tcG9uZW50IENvbXBvbmVudCB0byBzdG9yZSBh
cyBgcmVmYC5cbiAgICogQGZpbmFsXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBhdHRhY2hSZWY6
IGZ1bmN0aW9uIChyZWYsIGNvbXBvbmVudCkge1xuICAgIHZhciBpbnN0ID0gdGhpcy5nZXRQdWJs
aWNJbnN0YW5jZSgpO1xuICAgICEoaW5zdCAhPSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChm
YWxzZSwgJ1N0YXRlbGVzcyBmdW5jdGlvbiBjb21wb25lbnRzIGNhbm5vdCBoYXZlIHJlZnMuJykg
OiBfcHJvZEludmFyaWFudCgnMTEwJykgOiB2b2lkIDA7XG4gICAgdmFyIHB1YmxpY0NvbXBvbmVu
dEluc3RhbmNlID0gY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7XG4gICAgaWYgKGZhbHNl
KSB7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudCAmJiBjb21wb25lbnQuZ2V0
TmFtZSA/IGNvbXBvbmVudC5nZXROYW1lKCkgOiAnYSBjb21wb25lbnQnO1xuICAgICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHVibGljQ29tcG9uZW50
SW5zdGFuY2UgIT0gbnVsbCB8fCBjb21wb25lbnQuX2NvbXBvc2l0ZVR5cGUgIT09IENvbXBvc2l0
ZVR5cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWwsICdTdGF0ZWxlc3MgZnVuY3Rpb24gY29tcG9uZW50
cyBjYW5ub3QgYmUgZ2l2ZW4gcmVmcyAnICsgJyhTZWUgcmVmIFwiJXNcIiBpbiAlcyBjcmVhdGVk
IGJ5ICVzKS4gJyArICdBdHRlbXB0cyB0byBhY2Nlc3MgdGhpcyByZWYgd2lsbCBmYWlsLicsIHJl
ZiwgY29tcG9uZW50TmFtZSwgdGhpcy5nZXROYW1lKCkpIDogdm9pZCAwO1xuICAgIH1cbiAgICB2
YXIgcmVmcyA9IGluc3QucmVmcyA9PT0gZW1wdHlPYmplY3QgPyBpbnN0LnJlZnMgPSB7fSA6IGlu
c3QucmVmcztcbiAgICByZWZzW3JlZl0gPSBwdWJsaWNDb21wb25lbnRJbnN0YW5jZTtcbiAgfSxc
blxuICAvKipcbiAgICogRGV0YWNoZXMgYSByZWZlcmVuY2UgbmFtZS5cbiAgICpcbiAgICogQHBh
cmFtIHtzdHJpbmd9IHJlZiBOYW1lIHRvIGRlcmVmZXJlbmNlLlxuICAgKiBAZmluYWxcbiAgICog
QHByaXZhdGVcbiAgICovXG4gIGRldGFjaFJlZjogZnVuY3Rpb24gKHJlZikge1xuICAgIHZhciBy
ZWZzID0gdGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpLnJlZnM7XG4gICAgZGVsZXRlIHJlZnNbcmVm
XTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGEgdGV4dCBkZXNjcmlwdGlvbiBvZiB0aGUgY29t
cG9uZW50IHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgaXRcbiAgICogaW4gZXJyb3IgbWVz
c2FnZXMuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIG5hbWUgb3IgbnVsbC5cbiAgICogQGlu
dGVybmFsXG4gICAqL1xuICBnZXROYW1lOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHR5cGUgPSB0
aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IHRoaXMuX2lu
c3RhbmNlICYmIHRoaXMuX2luc3RhbmNlLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiB0eXBlLmRp
c3BsYXlOYW1lIHx8IGNvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8IHR5
cGUubmFtZSB8fCBjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5uYW1lIHx8IG51bGw7XG4gIH0s
XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcHVibGljbHkgYWNjZXNzaWJsZSByZXByZXNlbnRhdGlv
biBvZiB0aGlzIGNvbXBvbmVudCAtIGkuZS4gd2hhdFxuICAgKiBpcyBleHBvc2VkIGJ5IHJlZnMg
YW5kIHJldHVybmVkIGJ5IHJlbmRlci4gQ2FuIGJlIG51bGwgZm9yIHN0YXRlbGVzc1xuICAgKiBj
b21wb25lbnRzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gdGhlIHB1Ymxp
YyBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0UHVibGlj
SW5zdGFuY2U6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xu
ICAgIGlmICh0aGlzLl9jb21wb3NpdGVUeXBlID09PSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NG
dW5jdGlvbmFsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGluc3Q7
XG4gIH0sXG5cbiAgLy8gU3R1YlxuICBfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDogbnVsbFxu
fTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudDtcblxuLyoqKi8g
fSksXG4vKiAxNTcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKiBcbiAqL1xuXG5cblxudmFyIG5leHREZWJ1Z0lEID0gMTtcblxuZnVuY3Rpb24gZ2V0
TmV4dERlYnVnSUQoKSB7XG4gIHJldHVybiBuZXh0RGVidWdJRCsrO1xufVxuXG5tb2R1bGUuZXhw
b3J0cyA9IGdldE5leHREZWJ1Z0lEO1xuXG4vKioqLyB9KSxcbi8qIDE1OCAqL1xuLyoqKi8gKGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBz
dHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cblxuXG4vLyBU
aGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQgdHlwZS4gSWYgdGhlcmUgaXMg
bm8gbmF0aXZlIFN5bWJvbFxuLy8gbm9yIHBvbHlmaWxsLCB0aGVuIGEgcGxhaW4gbnVtYmVyIGlz
IHVzZWQgZm9yIHBlcmZvcm1hbmNlLlxuXG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gdHlwZW9m
IFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2xbJ2ZvciddICYmIFN5bWJvbFsnZm9yJ10o
J3JlYWN0LmVsZW1lbnQnKSB8fCAweGVhYzc7XG5cbm1vZHVsZS5leHBvcnRzID0gUkVBQ1RfRUxF
TUVOVF9UWVBFO1xuXG4vKioqLyB9KSxcbi8qIDE1OSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cblxuXG4vKiBnbG9iYWwgU3ltYm9s
ICovXG5cbnZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24n
ICYmIFN5bWJvbC5pdGVyYXRvcjtcbnZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJh
dG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLlxuXG4vKipcbiAqIFJldHVybnMgdGhlIGl0ZXJh
dG9yIG1ldGhvZCBmdW5jdGlvbiBjb250YWluZWQgb24gdGhlIGl0ZXJhYmxlIG9iamVjdC5cbiAq
XG4gKiBCZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRlcmFibGUgYXMg
Y29udGV4dDpcbiAqXG4gKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG15SXRl
cmFibGUpO1xuICogICAgIGlmIChpdGVyYXRvckZuKSB7XG4gKiAgICAgICB2YXIgaXRlcmF0b3Ig
PSBpdGVyYXRvckZuLmNhbGwobXlJdGVyYWJsZSk7XG4gKiAgICAgICAuLi5cbiAqICAgICB9XG4g
KlxuICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlXG4gKiBAcmV0dXJuIHs/ZnVuY3Rp
b259XG4gKi9cbmZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuICB2YXIg
aXRlcmF0b3JGbiA9IG1heWJlSXRlcmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0
ZXJhYmxlW0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZ
TUJPTF0pO1xuICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICBy
ZXR1cm4gaXRlcmF0b3JGbjtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEl0ZXJhdG9y
Rm47XG5cbi8qKiovIH0pLFxuLyogMTYwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogV0VCUEFD
SyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKHByb2Nlc3MpIHsvKipcbiAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKiBcbiAqL1xuXG5cblxudmFyIEtleUVzY2FwZVV0aWxzID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg0NCk7XG52YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IF9fd2VicGFja19yZXF1aXJl
X18oNzcpO1xudmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG52YXIgUmVh
Y3RDb21wb25lbnRUcmVlSG9vaztcblxuaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVk
JyAmJiBPYmplY3Qoe1wiTk9ERV9FTlZcIjpcInByb2R1Y3Rpb25cIixcIlBVQkxJQ19VUkxcIjpc
Ii5cIn0pICYmIFwicHJvZHVjdGlvblwiID09PSAndGVzdCcpIHtcbiAgLy8gVGVtcG9yYXJ5IGhh
Y2suXG4gIC8vIElubGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OlxuICAv
LyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyNDBcbiAgLy8gUmVt
b3ZlIHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9yZTpc
biAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzE3OFxuICBSZWFj
dENvbXBvbmVudFRyZWVIb29rID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3OCk7XG59XG5cbi8qKlxu
ICogQHBhcmFtIHtmdW5jdGlvbn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgcGFzc2VkIHRocm91
Z2ggdHJhdmVyc2FsLlxuICogQHBhcmFtIHs/UmVhY3RDb21wb25lbnR9IGNoaWxkIFJlYWN0IGNo
aWxkIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7IXN0cmluZ30gbmFtZSBTdHJpbmcgbmFtZSBvZiBr
ZXkgcGF0aCB0byBjaGlsZC5cbiAqIEBwYXJhbSB7bnVtYmVyPX0gc2VsZkRlYnVnSUQgT3B0aW9u
YWwgZGVidWdJRCBvZiB0aGUgY3VycmVudCBpbnRlcm5hbCBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rp
b24gZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwg
bmFtZSwgc2VsZkRlYnVnSUQpIHtcbiAgLy8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5zdGFuY2Uu
XG4gIGlmICh0cmF2ZXJzZUNvbnRleHQgJiYgdHlwZW9mIHRyYXZlcnNlQ29udGV4dCA9PT0gJ29i
amVjdCcpIHtcbiAgICB2YXIgcmVzdWx0ID0gdHJhdmVyc2VDb250ZXh0O1xuICAgIHZhciBrZXlV
bmlxdWUgPSByZXN1bHRbbmFtZV0gPT09IHVuZGVmaW5lZDtcbiAgICBpZiAoZmFsc2UpIHtcbiAg
ICAgIGlmICghUmVhY3RDb21wb25lbnRUcmVlSG9vaykge1xuICAgICAgICBSZWFjdENvbXBvbmVu
dFRyZWVIb29rID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2snKTtc
biAgICAgIH1cbiAgICAgIGlmICgha2V5VW5pcXVlKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnZmxhdHRlbkNoaWxkcmVu
KC4uLik6IEVuY291bnRlcmVkIHR3byBjaGlsZHJlbiB3aXRoIHRoZSBzYW1lIGtleSwgJyArICdg
JXNgLiBDaGlsZCBrZXlzIG11c3QgYmUgdW5pcXVlOyB3aGVuIHR3byBjaGlsZHJlbiBzaGFyZSBh
IGtleSwgb25seSAnICsgJ3RoZSBmaXJzdCBjaGlsZCB3aWxsIGJlIHVzZWQuJXMnLCBLZXlFc2Nh
cGVVdGlscy51bmVzY2FwZShuYW1lKSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFja0Fk
ZGVuZHVtQnlJRChzZWxmRGVidWdJRCkpIDogdm9pZCAwO1xuICAgICAgfVxuICAgIH1cbiAgICBp
ZiAoa2V5VW5pcXVlICYmIGNoaWxkICE9IG51bGwpIHtcbiAgICAgIHJlc3VsdFtuYW1lXSA9IGNo
aWxkO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEZsYXR0ZW5zIGNoaWxkcmVuIHRoYXQgYXJl
IHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC4gQW55IG51bGxcbiAqIGNo
aWxkcmVuIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgb2JqZWN0LlxuICog
QHJldHVybiB7IW9iamVjdH0gZmxhdHRlbmVkIGNoaWxkcmVuIGtleWVkIGJ5IG5hbWUuXG4gKi9c
bmZ1bmN0aW9uIGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJlbiwgc2VsZkRlYnVnSUQpIHtcbiAgaWYg
KGNoaWxkcmVuID09IG51bGwpIHtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgdmFyIHJl
c3VsdCA9IHt9O1xuXG4gIGlmIChmYWxzZSkge1xuICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hp
bGRyZW4sIGZ1bmN0aW9uICh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lKSB7XG4gICAgICBy
ZXR1cm4gZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250ZXh0LCBjaGls
ZCwgbmFtZSwgc2VsZkRlYnVnSUQpO1xuICAgIH0sIHJlc3VsdCk7XG4gIH0gZWxzZSB7XG4gICAg
dHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRl
eHQsIHJlc3VsdCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMg
PSBmbGF0dGVuQ2hpbGRyZW47XG4vKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyg3MikpKVxuXG4vKioqLyB9KSxcbi8qIDE2MSAqL1xu
LyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxu
dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG52YXIgUG9vbGVkQ2xhc3Mg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcbnZhciBUcmFuc2FjdGlvbiA9IF9fd2VicGFja19y
ZXF1aXJlX18oMjQpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg3KTtcbnZhciBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxNjIpO1xuXG4vKipcbiAqIEV4ZWN1dGVkIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIGBUcmFu
c2FjdGlvbmAgaW5zdGFuY2UuIENvbnNpZGVyIHRoZXNlIGFzXG4gKiBiZWluZyBtZW1iZXIgbWV0
aG9kcywgYnV0IHdpdGggYW4gaW1wbGllZCBvcmRlcmluZyB3aGlsZSBiZWluZyBpc29sYXRlZCBm
cm9tXG4gKiBlYWNoIG90aGVyLlxuICovXG52YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbXTtc
blxuaWYgKGZhbHNlKSB7XG4gIFRSQU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goe1xuICAgIGluaXRp
YWxpemU6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1c2gsXG4gICAg
Y2xvc2U6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVuZEZsdXNoXG4gIH0pO1xu
fVxuXG52YXIgbm9vcENhbGxiYWNrUXVldWUgPSB7XG4gIGVucXVldWU6IGZ1bmN0aW9uICgpIHt9
XG59O1xuXG4vKipcbiAqIEBjbGFzcyBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uXG4g
KiBAcGFyYW0ge2Jvb2xlYW59IHJlbmRlclRvU3RhdGljTWFya3VwXG4gKi9cbmZ1bmN0aW9uIFJl
YWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24ocmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcbiAg
dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xuICB0aGlzLnJlbmRlclRvU3RhdGljTWFy
a3VwID0gcmVuZGVyVG9TdGF0aWNNYXJrdXA7XG4gIHRoaXMudXNlQ3JlYXRlRWxlbWVudCA9IGZh
bHNlO1xuICB0aGlzLnVwZGF0ZVF1ZXVlID0gbmV3IFJlYWN0U2VydmVyVXBkYXRlUXVldWUodGhp
cyk7XG59XG5cbnZhciBNaXhpbiA9IHtcbiAgLyoqXG4gICAqIEBzZWUgVHJhbnNhY3Rpb25cbiAg
ICogQGFic3RyYWN0XG4gICAqIEBmaW5hbFxuICAgKiBAcmV0dXJuIHthcnJheX0gRW1wdHkgbGlz
dCBvZiBvcGVyYXRpb24gd3JhcCBwcm9jZWR1cmVzLlxuICAgKi9cbiAgZ2V0VHJhbnNhY3Rpb25X
cmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVSUztc
biAgfSxcblxuICAvKipcbiAgICogQHJldHVybiB7b2JqZWN0fSBUaGUgcXVldWUgdG8gY29sbGVj
dCBgb25ET01SZWFkeWAgY2FsbGJhY2tzIHdpdGguXG4gICAqL1xuICBnZXRSZWFjdE1vdW50UmVh
ZHk6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbm9vcENhbGxiYWNrUXVldWU7XG4gIH0sXG5c
biAgLyoqXG4gICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgUmVhY3Qg
YXN5bmMgZXZlbnRzLlxuICAgKi9cbiAgZ2V0VXBkYXRlUXVldWU6IGZ1bmN0aW9uICgpIHtcbiAg
ICByZXR1cm4gdGhpcy51cGRhdGVRdWV1ZTtcbiAgfSxcblxuICAvKipcbiAgICogYFBvb2xlZENs
YXNzYCBsb29rcyBmb3IgdGhpcywgYW5kIHdpbGwgaW52b2tlIHRoaXMgYmVmb3JlIGFsbG93aW5n
IHRoaXNcbiAgICogaW5zdGFuY2UgdG8gYmUgcmV1c2VkLlxuICAgKi9cbiAgZGVzdHJ1Y3Rvcjog
ZnVuY3Rpb24gKCkge30sXG5cbiAgY2hlY2twb2ludDogZnVuY3Rpb24gKCkge30sXG5cbiAgcm9s
bGJhY2s6IGZ1bmN0aW9uICgpIHt9XG59O1xuXG5fYXNzaWduKFJlYWN0U2VydmVyUmVuZGVyaW5n
VHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4pO1xuXG5Qb29sZWRDbGFz
cy5hZGRQb29saW5nVG8oUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbik7XG5cbm1vZHVs
ZS5leHBvcnRzID0gUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbjtcblxuLyoqKi8gfSks
XG4vKiAxNjIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDE1LXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKiBcbiAqL1xuXG5cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25z
dHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJv
dyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9
IH1cblxudmFyIFJlYWN0VXBkYXRlUXVldWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ1KTtcblxu
dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG5mdW5jdGlvbiB3YXJuTm9v
cChwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkge1xuICBpZiAoZmFsc2UpIHtcbiAgICB2YXIg
Y29uc3RydWN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3RvcjtcbiAgICBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IENh
biBvbmx5IHVwZGF0ZSBhIG1vdW50aW5nIGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVh
bnMgeW91IGNhbGxlZCAlcygpIG91dHNpZGUgY29tcG9uZW50V2lsbE1vdW50KCkgb24gdGhlIHNl
cnZlci4gJyArICdUaGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhl
ICVzIGNvbXBvbmVudC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBjb25zdHJ1Y3RvciAmJiAo
Y29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3IubmFtZSkgfHwgJ1JlYWN0Q2xh
c3MnKSA6IHZvaWQgMDtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgdGhlIHVwZGF0ZSBxdWV1
ZSB1c2VkIGZvciBzZXJ2ZXIgcmVuZGVyaW5nLlxuICogSXQgZGVsZWdhdGVzIHRvIFJlYWN0VXBk
YXRlUXVldWUgd2hpbGUgc2VydmVyIHJlbmRlcmluZyBpcyBpbiBwcm9ncmVzcyBhbmRcbiAqIHN3
aXRjaGVzIHRvIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlIGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBoYXMg
Y29tcGxldGVkLlxuICogQGNsYXNzIFJlYWN0U2VydmVyVXBkYXRlUXVldWVcbiAqIEBwYXJhbSB7
VHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gKi9cblxudmFyIFJlYWN0U2VydmVyVXBkYXRlUXVl
dWUgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFJlYWN0U2VydmVyVXBkYXRlUXVldWUodHJh
bnNhY3Rpb24pIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVhY3RTZXJ2ZXJVcGRhdGVR
dWV1ZSk7XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAv
KipcbiAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBp
cyBtb3VudGVkLlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBp
bnN0YW5jZSB3ZSB3YW50IHRvIHRlc3QuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYg
bW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEBmaW5hbFxu
ICAgKi9cblxuXG4gIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmlzTW91bnRlZCA9
IGZ1bmN0aW9uIGlzTW91bnRlZChwdWJsaWNJbnN0YW5jZSkge1xuICAgIHJldHVybiBmYWxzZTtc
biAgfTtcblxuICAvKipcbiAgICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVj
dXRlZCBhZnRlciBhbGwgdGhlIHBlbmRpbmcgdXBkYXRlc1xuICAgKiBoYXZlIHByb2Nlc3NlZC5c
biAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFu
Y2UgdG8gdXNlIGFzIGB0aGlzYCBjb250ZXh0LlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2Fs
bGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG4gICAqIEBpbnRlcm5hbFxuICAg
Ki9cblxuXG4gIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmVucXVldWVDYWxsYmFj
ayA9IGZ1bmN0aW9uIGVucXVldWVDYWxsYmFjayhwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2ssIGNh
bGxlck5hbWUpIHtcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSkg
e1xuICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlQ2FsbGJhY2socHVibGljSW5zdGFuY2Us
IGNhbGxiYWNrLCBjYWxsZXJOYW1lKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEZvcmNl
cyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3du
IHdpdGhcbiAgICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNh
Y3Rpb24uXG4gICAqXG4gICAqIFlvdSBtYXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25v
dyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBvZiB0aGVcbiAgICogY29tcG9uZW50J3Mgc3RhdGUg
aGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXG4gICAqXG4gICAqIFRo
aXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBp
bnZva2VcbiAgICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRl
YC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5z
dGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cblxuXG4g
IFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmVucXVldWVGb3JjZVVwZGF0ZSA9IGZ1
bmN0aW9uIGVucXVldWVGb3JjZVVwZGF0ZShwdWJsaWNJbnN0YW5jZSkge1xuICAgIGlmICh0aGlz
LnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7XG4gICAgICBSZWFjdFVwZGF0ZVF1ZXVl
LmVucXVldWVGb3JjZVVwZGF0ZShwdWJsaWNJbnN0YW5jZSk7XG4gICAgfSBlbHNlIHtcbiAgICAg
IHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAnZm9yY2VVcGRhdGUnKTtcbiAgICB9XG4gIH07XG5c
biAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyBv
ciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cbiAgICogWW91IHNob3VsZCB0cmVhdCBgdGhp
cy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuICAgKlxuICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUg
dGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzb1xuICAgKiBh
Y2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVy
biB0aGUgb2xkIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0lu
c3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtv
YmplY3R8ZnVuY3Rpb259IGNvbXBsZXRlU3RhdGUgTmV4dCBzdGF0ZS5cbiAgICogQGludGVybmFs
XG4gICAqL1xuXG5cbiAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZVJl
cGxhY2VTdGF0ZSA9IGZ1bmN0aW9uIGVucXVldWVSZXBsYWNlU3RhdGUocHVibGljSW5zdGFuY2Us
IGNvbXBsZXRlU3RhdGUpIHtcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rp
b24oKSkge1xuICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlUmVwbGFjZVN0YXRlKHB1Ymxp
Y0luc3RhbmNlLCBjb21wbGV0ZVN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2Fybk5vb3Ao
cHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUnKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4g
ICAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2Ug
X3BlbmRpbmdTdGF0ZSBpc1xuICAgKiBpbnRlcm5hbC4gVGhpcyBwcm92aWRlcyBhIG1lcmdpbmcg
c3RyYXRlZ3kgdGhhdCBpcyBub3QgYXZhaWxhYmxlIHRvIGRlZXBcbiAgICogcHJvcGVydGllcyB3
aGljaCBpcyBjb25mdXNpbmcuIFRPRE86IEV4cG9zZSBwZW5kaW5nU3RhdGUgb3IgZG9uJ3QgdXNl
IGl0XG4gICAqIGR1cmluZyB0aGUgbWVyZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFz
c30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAg
KiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbn0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0
ZSB0byBiZSBtZXJnZWQgd2l0aCBzdGF0ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuXG5cbiAg
UmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZVNldFN0YXRlID0gZnVuY3Rp
b24gZW5xdWV1ZVNldFN0YXRlKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpIHtcbiAgICBp
ZiAodGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSkge1xuICAgICAgUmVhY3RVcGRh
dGVRdWV1ZS5lbnF1ZXVlU2V0U3RhdGUocHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSk7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUnKTtc
biAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFJlYWN0U2VydmVyVXBkYXRlUXVldWU7XG59KCk7XG5c
bm1vZHVsZS5leHBvcnRzID0gUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZTtcblxuLyoqKi8gfSksXG4v
KiAxNjMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4g
Ki9cblxuXG5cbnZhciBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxudmFyIERP
TUxhenlUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7XG52YXIgUmVhY3RET01Db21wb25l
bnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblxudmFyIFJlYWN0RE9NRW1wdHlDb21w
b25lbnQgPSBmdW5jdGlvbiAoaW5zdGFudGlhdGUpIHtcbiAgLy8gUmVhY3RDb21wb3NpdGVDb21w
b25lbnQgdXNlcyB0aGlzOlxuICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG51bGw7XG4gIC8vIFJl
YWN0RE9NQ29tcG9uZW50VHJlZSB1c2VzIHRoZXNlOlxuICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7
XG4gIHRoaXMuX2hvc3RQYXJlbnQgPSBudWxsO1xuICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9
IG51bGw7XG4gIHRoaXMuX2RvbUlEID0gMDtcbn07XG5fYXNzaWduKFJlYWN0RE9NRW1wdHlDb21w
b25lbnQucHJvdG90eXBlLCB7XG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rp
b24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7XG4gICAgdmFyIGRv
bUlEID0gaG9zdENvbnRhaW5lckluZm8uX2lkQ291bnRlcisrO1xuICAgIHRoaXMuX2RvbUlEID0g
ZG9tSUQ7XG4gICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG4gICAgdGhpcy5faG9z
dENvbnRhaW5lckluZm8gPSBob3N0Q29udGFpbmVySW5mbztcblxuICAgIHZhciBub2RlVmFsdWUg
PSAnIHJlYWN0LWVtcHR5OiAnICsgdGhpcy5fZG9tSUQgKyAnICc7XG4gICAgaWYgKHRyYW5zYWN0
aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcbiAgICAgIHZhciBvd25lckRvY3VtZW50ID0gaG9zdENv
bnRhaW5lckluZm8uX293bmVyRG9jdW1lbnQ7XG4gICAgICB2YXIgbm9kZSA9IG93bmVyRG9jdW1l
bnQuY3JlYXRlQ29tbWVudChub2RlVmFsdWUpO1xuICAgICAgUmVhY3RET01Db21wb25lbnRUcmVl
LnByZWNhY2hlTm9kZSh0aGlzLCBub2RlKTtcbiAgICAgIHJldHVybiBET01MYXp5VHJlZShub2Rl
KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFy
a3VwKSB7XG4gICAgICAgIC8vIE5vcm1hbGx5IHdlJ2QgaW5zZXJ0IGEgY29tbWVudCBub2RlLCBi
dXQgc2luY2UgdGhpcyBpcyBhIHNpdHVhdGlvblxuICAgICAgICAvLyB3aGVyZSBSZWFjdCB3b24n
dCB0YWtlIG92ZXIgKHN0YXRpYyBwYWdlcyksIHdlIGNhbiBzaW1wbHkgcmV0dXJuXG4gICAgICAg
IC8vIG5vdGhpbmcuXG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICAgIHJldHVybiAn
PCEtLScgKyBub2RlVmFsdWUgKyAnLS0+JztcbiAgICB9XG4gIH0sXG4gIHJlY2VpdmVDb21wb25l
bnQ6IGZ1bmN0aW9uICgpIHt9LFxuICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKCkge1xuICAgIHJl
dHVybiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKTtcbiAg
fSxcbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuICAgIFJlYWN0RE9NQ29tcG9u
ZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTtcbiAgfVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0g
UmVhY3RET01FbXB0eUNvbXBvbmVudDtcblxuLyoqKi8gfSksXG4vKiAxNjQgKi9cbi8qKiovIChm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ug
c3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBfcHJv
ZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cbnZhciBpbnZhcmlhbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG4vKipcbiAqIFJldHVybiB0aGUgbG93ZXN0IGNvbW1v
biBhbmNlc3RvciBvZiBBIGFuZCBCLCBvciBudWxsIGlmIHRoZXkgYXJlIGluXG4gKiBkaWZmZXJl
bnQgdHJlZXMuXG4gKi9cbmZ1bmN0aW9uIGdldExvd2VzdENvbW1vbkFuY2VzdG9yKGluc3RBLCBp
bnN0Qikge1xuICAhKCdfaG9zdE5vZGUnIGluIGluc3RBKSA/ICBmYWxzZSA/IGludmFyaWFudChm
YWxzZSwgJ2dldE5vZGVGcm9tSW5zdGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZElu
dmFyaWFudCgnMzMnKSA6IHZvaWQgMDtcbiAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QikgPyAgZmFs
c2UgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJbnZhbGlkIGFyZ3Vt
ZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7XG5cbiAgdmFyIGRlcHRoQSA9
IDA7XG4gIGZvciAodmFyIHRlbXBBID0gaW5zdEE7IHRlbXBBOyB0ZW1wQSA9IHRlbXBBLl9ob3N0
UGFyZW50KSB7XG4gICAgZGVwdGhBKys7XG4gIH1cbiAgdmFyIGRlcHRoQiA9IDA7XG4gIGZvciAo
dmFyIHRlbXBCID0gaW5zdEI7IHRlbXBCOyB0ZW1wQiA9IHRlbXBCLl9ob3N0UGFyZW50KSB7XG4g
ICAgZGVwdGhCKys7XG4gIH1cblxuICAvLyBJZiBBIGlzIGRlZXBlciwgY3Jhd2wgdXAuXG4gIHdo
aWxlIChkZXB0aEEgLSBkZXB0aEIgPiAwKSB7XG4gICAgaW5zdEEgPSBpbnN0QS5faG9zdFBhcmVu
dDtcbiAgICBkZXB0aEEtLTtcbiAgfVxuXG4gIC8vIElmIEIgaXMgZGVlcGVyLCBjcmF3bCB1cC5c
biAgd2hpbGUgKGRlcHRoQiAtIGRlcHRoQSA+IDApIHtcbiAgICBpbnN0QiA9IGluc3RCLl9ob3N0
UGFyZW50O1xuICAgIGRlcHRoQi0tO1xuICB9XG5cbiAgLy8gV2FsayBpbiBsb2Nrc3RlcCB1bnRp
bCB3ZSBmaW5kIGEgbWF0Y2guXG4gIHZhciBkZXB0aCA9IGRlcHRoQTtcbiAgd2hpbGUgKGRlcHRo
LS0pIHtcbiAgICBpZiAoaW5zdEEgPT09IGluc3RCKSB7XG4gICAgICByZXR1cm4gaW5zdEE7XG4g
ICAgfVxuICAgIGluc3RBID0gaW5zdEEuX2hvc3RQYXJlbnQ7XG4gICAgaW5zdEIgPSBpbnN0Qi5f
aG9zdFBhcmVudDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXR1cm4gaWYg
QSBpcyBhbiBhbmNlc3RvciBvZiBCLlxuICovXG5mdW5jdGlvbiBpc0FuY2VzdG9yKGluc3RBLCBp
bnN0Qikge1xuICAhKCdfaG9zdE5vZGUnIGluIGluc3RBKSA/ICBmYWxzZSA/IGludmFyaWFudChm
YWxzZSwgJ2lzQW5jZXN0b3I6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgn
MzUnKSA6IHZvaWQgMDtcbiAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QikgPyAgZmFsc2UgPyBpbnZh
cmlhbnQoZmFsc2UsICdpc0FuY2VzdG9yOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZh
cmlhbnQoJzM1JykgOiB2b2lkIDA7XG5cbiAgd2hpbGUgKGluc3RCKSB7XG4gICAgaWYgKGluc3RC
ID09PSBpbnN0QSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGluc3RCID0gaW5z
dEIuX2hvc3RQYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFJldHVy
biB0aGUgcGFyZW50IGluc3RhbmNlIG9mIHRoZSBwYXNzZWQtaW4gaW5zdGFuY2UuXG4gKi9cbmZ1
bmN0aW9uIGdldFBhcmVudEluc3RhbmNlKGluc3QpIHtcbiAgISgnX2hvc3ROb2RlJyBpbiBpbnN0
KSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2dldFBhcmVudEluc3RhbmNlOiBJbnZhbGlk
IGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzM2JykgOiB2b2lkIDA7XG5cbiAgcmV0dXJu
IGluc3QuX2hvc3RQYXJlbnQ7XG59XG5cbi8qKlxuICogU2ltdWxhdGVzIHRoZSB0cmF2ZXJzYWwg
b2YgYSB0d28tcGhhc2UsIGNhcHR1cmUvYnViYmxlIGV2ZW50IGRpc3BhdGNoLlxuICovXG5mdW5j
dGlvbiB0cmF2ZXJzZVR3b1BoYXNlKGluc3QsIGZuLCBhcmcpIHtcbiAgdmFyIHBhdGggPSBbXTtc
biAgd2hpbGUgKGluc3QpIHtcbiAgICBwYXRoLnB1c2goaW5zdCk7XG4gICAgaW5zdCA9IGluc3Qu
X2hvc3RQYXJlbnQ7XG4gIH1cbiAgdmFyIGk7XG4gIGZvciAoaSA9IHBhdGgubGVuZ3RoOyBpLS0g
PiAwOykge1xuICAgIGZuKHBhdGhbaV0sICdjYXB0dXJlZCcsIGFyZyk7XG4gIH1cbiAgZm9yIChp
ID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICBmbihwYXRoW2ldLCAnYnViYmxlZCcs
IGFyZyk7XG4gIH1cbn1cblxuLyoqXG4gKiBUcmF2ZXJzZXMgdGhlIElEIGhpZXJhcmNoeSBhbmQg
aW52b2tlcyB0aGUgc3VwcGxpZWQgYGNiYCBvbiBhbnkgSURzIHRoYXRcbiAqIHNob3VsZCB3b3Vs
ZCByZWNlaXZlIGEgYG1vdXNlRW50ZXJgIG9yIGBtb3VzZUxlYXZlYCBldmVudC5cbiAqXG4gKiBE
b2VzIG5vdCBpbnZva2UgdGhlIGNhbGxiYWNrIG9uIHRoZSBuZWFyZXN0IGNvbW1vbiBhbmNlc3Rv
ciBiZWNhdXNlIG5vdGhpbmdcbiAqIFwiZW50ZXJlZFwiIG9yIFwibGVmdFwiIHRoYXQgZWxlbWVu
dC5cbiAqL1xuZnVuY3Rpb24gdHJhdmVyc2VFbnRlckxlYXZlKGZyb20sIHRvLCBmbiwgYXJnRnJv
bSwgYXJnVG8pIHtcbiAgdmFyIGNvbW1vbiA9IGZyb20gJiYgdG8gPyBnZXRMb3dlc3RDb21tb25B
bmNlc3Rvcihmcm9tLCB0bykgOiBudWxsO1xuICB2YXIgcGF0aEZyb20gPSBbXTtcbiAgd2hpbGUg
KGZyb20gJiYgZnJvbSAhPT0gY29tbW9uKSB7XG4gICAgcGF0aEZyb20ucHVzaChmcm9tKTtcbiAg
ICBmcm9tID0gZnJvbS5faG9zdFBhcmVudDtcbiAgfVxuICB2YXIgcGF0aFRvID0gW107XG4gIHdo
aWxlICh0byAmJiB0byAhPT0gY29tbW9uKSB7XG4gICAgcGF0aFRvLnB1c2godG8pO1xuICAgIHRv
ID0gdG8uX2hvc3RQYXJlbnQ7XG4gIH1cbiAgdmFyIGk7XG4gIGZvciAoaSA9IDA7IGkgPCBwYXRo
RnJvbS5sZW5ndGg7IGkrKykge1xuICAgIGZuKHBhdGhGcm9tW2ldLCAnYnViYmxlZCcsIGFyZ0Zy
b20pO1xuICB9XG4gIGZvciAoaSA9IHBhdGhUby5sZW5ndGg7IGktLSA+IDA7KSB7XG4gICAgZm4o
cGF0aFRvW2ldLCAnY2FwdHVyZWQnLCBhcmdUbyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMg
PSB7XG4gIGlzQW5jZXN0b3I6IGlzQW5jZXN0b3IsXG4gIGdldExvd2VzdENvbW1vbkFuY2VzdG9y
OiBnZXRMb3dlc3RDb21tb25BbmNlc3RvcixcbiAgZ2V0UGFyZW50SW5zdGFuY2U6IGdldFBhcmVu
dEluc3RhbmNlLFxuICB0cmF2ZXJzZVR3b1BoYXNlOiB0cmF2ZXJzZVR3b1BoYXNlLFxuICB0cmF2
ZXJzZUVudGVyTGVhdmU6IHRyYXZlcnNlRW50ZXJMZWF2ZVxufTtcblxuLyoqKi8gfSksXG4vKiAx
NjUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuXG5cbnZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMiksXG4gICAg
X2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cbnZhciBET01DaGlsZHJlbk9wZXJh
dGlvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KTtcbnZhciBET01MYXp5VHJlZSA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTcpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFj
a19yZXF1aXJlX18oNCk7XG5cbnZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDI3KTtcbnZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDApO1xudmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpO1xu
XG4vKipcbiAqIFRleHQgbm9kZXMgdmlvbGF0ZSBhIGNvdXBsZSBhc3N1bXB0aW9ucyB0aGF0IFJl
YWN0IG1ha2VzIGFib3V0IGNvbXBvbmVudHM6XG4gKlxuICogIC0gV2hlbiBtb3VudGluZyB0ZXh0
IGludG8gdGhlIERPTSwgYWRqYWNlbnQgdGV4dCBub2RlcyBhcmUgbWVyZ2VkLlxuICogIC0gVGV4
dCBub2RlcyBjYW5ub3QgYmUgYXNzaWduZWQgYSBSZWFjdCByb290IElELlxuICpcbiAqIFRoaXMg
Y29tcG9uZW50IGlzIHVzZWQgdG8gd3JhcCBzdHJpbmdzIGJldHdlZW4gY29tbWVudCBub2RlcyBz
byB0aGF0IHRoZXlcbiAqIGNhbiB1bmRlcmdvIHRoZSBzYW1lIHJlY29uY2lsaWF0aW9uIHRoYXQg
aXMgYXBwbGllZCB0byBlbGVtZW50cy5cbiAqXG4gKiBUT0RPOiBJbnZlc3RpZ2F0ZSByZXByZXNl
bnRpbmcgUmVhY3QgY29tcG9uZW50cyBpbiB0aGUgRE9NIHdpdGggdGV4dCBub2Rlcy5cbiAqXG4g
KiBAY2xhc3MgUmVhY3RET01UZXh0Q29tcG9uZW50XG4gKiBAZXh0ZW5kcyBSZWFjdENvbXBvbmVu
dFxuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdERPTVRleHRDb21wb25lbnQgPSBmdW5jdGlv
biAodGV4dCkge1xuICAvLyBUT0RPOiBUaGlzIGlzIHJlYWxseSBhIFJlYWN0VGV4dCAoUmVhY3RO
b2RlKSwgbm90IGEgUmVhY3RFbGVtZW50XG4gIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gdGV4dDtc
biAgdGhpcy5fc3RyaW5nVGV4dCA9ICcnICsgdGV4dDtcbiAgLy8gUmVhY3RET01Db21wb25lbnRU
cmVlIHVzZXMgdGhlc2U6XG4gIHRoaXMuX2hvc3ROb2RlID0gbnVsbDtcbiAgdGhpcy5faG9zdFBh
cmVudCA9IG51bGw7XG5cbiAgLy8gUHJvcGVydGllc1xuICB0aGlzLl9kb21JRCA9IDA7XG4gIHRo
aXMuX21vdW50SW5kZXggPSAwO1xuICB0aGlzLl9jbG9zaW5nQ29tbWVudCA9IG51bGw7XG4gIHRo
aXMuX2NvbW1lbnROb2RlcyA9IG51bGw7XG59O1xuXG5fYXNzaWduKFJlYWN0RE9NVGV4dENvbXBv
bmVudC5wcm90b3R5cGUsIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIG1hcmt1cCBmb3IgdGhp
cyB0ZXh0IG5vZGUuIFRoaXMgbm9kZSBpcyBub3QgaW50ZW5kZWQgdG8gaGF2ZVxuICAgKiBhbnkg
ZmVhdHVyZXMgYmVzaWRlcyBjb250YWluaW5nIHRleHQgY29udGVudC5cbiAgICpcbiAgICogQHBh
cmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNh
Y3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIGZvciB0aGlz
IHRleHQgbm9kZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBtb3VudENvbXBvbmVudDogZnVu
Y3Rpb24gKHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4
dCkge1xuICAgIGlmIChmYWxzZSkge1xuICAgICAgdmFyIHBhcmVudEluZm87XG4gICAgICBpZiAo
aG9zdFBhcmVudCAhPSBudWxsKSB7XG4gICAgICAgIHBhcmVudEluZm8gPSBob3N0UGFyZW50Ll9h
bmNlc3RvckluZm87XG4gICAgICB9IGVsc2UgaWYgKGhvc3RDb250YWluZXJJbmZvICE9IG51bGwp
IHtcbiAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RDb250YWluZXJJbmZvLl9hbmNlc3RvckluZm87
XG4gICAgICB9XG4gICAgICBpZiAocGFyZW50SW5mbykge1xuICAgICAgICAvLyBwYXJlbnRJbmZv
IHNob3VsZCBhbHdheXMgYmUgcHJlc2VudCBleGNlcHQgZm9yIHRoZSB0b3AtbGV2ZWxcbiAgICAg
ICAgLy8gY29tcG9uZW50IHdoZW4gc2VydmVyIHJlbmRlcmluZ1xuICAgICAgICB2YWxpZGF0ZURP
TU5lc3RpbmcobnVsbCwgdGhpcy5fc3RyaW5nVGV4dCwgdGhpcywgcGFyZW50SW5mbyk7XG4gICAg
ICB9XG4gICAgfVxuXG4gICAgdmFyIGRvbUlEID0gaG9zdENvbnRhaW5lckluZm8uX2lkQ291bnRl
cisrO1xuICAgIHZhciBvcGVuaW5nVmFsdWUgPSAnIHJlYWN0LXRleHQ6ICcgKyBkb21JRCArICcg
JztcbiAgICB2YXIgY2xvc2luZ1ZhbHVlID0gJyAvcmVhY3QtdGV4dCAnO1xuICAgIHRoaXMuX2Rv
bUlEID0gZG9tSUQ7XG4gICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG4gICAgaWYg
KHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcbiAgICAgIHZhciBvd25lckRvY3VtZW50
ID0gaG9zdENvbnRhaW5lckluZm8uX293bmVyRG9jdW1lbnQ7XG4gICAgICB2YXIgb3BlbmluZ0Nv
bW1lbnQgPSBvd25lckRvY3VtZW50LmNyZWF0ZUNvbW1lbnQob3BlbmluZ1ZhbHVlKTtcbiAgICAg
IHZhciBjbG9zaW5nQ29tbWVudCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChjbG9zaW5n
VmFsdWUpO1xuICAgICAgdmFyIGxhenlUcmVlID0gRE9NTGF6eVRyZWUob3duZXJEb2N1bWVudC5j
cmVhdGVEb2N1bWVudEZyYWdtZW50KCkpO1xuICAgICAgRE9NTGF6eVRyZWUucXVldWVDaGlsZChs
YXp5VHJlZSwgRE9NTGF6eVRyZWUob3BlbmluZ0NvbW1lbnQpKTtcbiAgICAgIGlmICh0aGlzLl9z
dHJpbmdUZXh0KSB7XG4gICAgICAgIERPTUxhenlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIERP
TUxhenlUcmVlKG93bmVyRG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy5fc3RyaW5nVGV4dCkp
KTtcbiAgICAgIH1cbiAgICAgIERPTUxhenlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxh
enlUcmVlKGNsb3NpbmdDb21tZW50KSk7XG4gICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJl
Y2FjaGVOb2RlKHRoaXMsIG9wZW5pbmdDb21tZW50KTtcbiAgICAgIHRoaXMuX2Nsb3NpbmdDb21t
ZW50ID0gY2xvc2luZ0NvbW1lbnQ7XG4gICAgICByZXR1cm4gbGF6eVRyZWU7XG4gICAgfSBlbHNl
IHtcbiAgICAgIHZhciBlc2NhcGVkVGV4dCA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0
aGlzLl9zdHJpbmdUZXh0KTtcblxuICAgICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGlj
TWFya3VwKSB7XG4gICAgICAgIC8vIE5vcm1hbGx5IHdlJ2Qgd3JhcCB0aGlzIGJldHdlZW4gY29t
bWVudCBub2RlcyBmb3IgdGhlIHJlYXNvbnMgc3RhdGVkXG4gICAgICAgIC8vIGFib3ZlLCBidXQg
c2luY2UgdGhpcyBpcyBhIHNpdHVhdGlvbiB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXJcbiAg
ICAgICAgLy8gKHN0YXRpYyBwYWdlcyksIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSB0ZXh0IGFz
IGl0IGlzLlxuICAgICAgICByZXR1cm4gZXNjYXBlZFRleHQ7XG4gICAgICB9XG5cbiAgICAgIHJl
dHVybiAnPCEtLScgKyBvcGVuaW5nVmFsdWUgKyAnLS0+JyArIGVzY2FwZWRUZXh0ICsgJzwhLS0n
ICsgY2xvc2luZ1ZhbHVlICsgJy0tPic7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBVcGRh
dGVzIHRoaXMgY29tcG9uZW50IGJ5IHVwZGF0aW5nIHRoZSB0ZXh0IGNvbnRlbnQuXG4gICAqXG4g
ICAqIEBwYXJhbSB7UmVhY3RUZXh0fSBuZXh0VGV4dCBUaGUgbmV4dCB0ZXh0IGNvbnRlbnRcbiAg
ICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBA
aW50ZXJuYWxcbiAgICovXG4gIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0VGV4dCwg
dHJhbnNhY3Rpb24pIHtcbiAgICBpZiAobmV4dFRleHQgIT09IHRoaXMuX2N1cnJlbnRFbGVtZW50
KSB7XG4gICAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRUZXh0O1xuICAgICAgdmFyIG5l
eHRTdHJpbmdUZXh0ID0gJycgKyBuZXh0VGV4dDtcbiAgICAgIGlmIChuZXh0U3RyaW5nVGV4dCAh
PT0gdGhpcy5fc3RyaW5nVGV4dCkge1xuICAgICAgICAvLyBUT0RPOiBTYXZlIHRoaXMgYXMgcGVu
ZGluZyBwcm9wcyBhbmQgdXNlIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeVxuICAgICAgICAvLyBh
bmQvb3IgdXBkYXRlQ29tcG9uZW50IHRvIGRvIHRoZSBhY3R1YWwgdXBkYXRlIGZvciBjb25zaXN0
ZW5jeSB3aXRoXG4gICAgICAgIC8vIG90aGVyIGNvbXBvbmVudCB0eXBlcz9cbiAgICAgICAgdGhp
cy5fc3RyaW5nVGV4dCA9IG5leHRTdHJpbmdUZXh0O1xuICAgICAgICB2YXIgY29tbWVudE5vZGVz
ID0gdGhpcy5nZXRIb3N0Tm9kZSgpO1xuICAgICAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMucmVw
bGFjZURlbGltaXRlZFRleHQoY29tbWVudE5vZGVzWzBdLCBjb21tZW50Tm9kZXNbMV0sIG5leHRT
dHJpbmdUZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgZ2V0SG9zdE5vZGU6IGZ1bmN0
aW9uICgpIHtcbiAgICB2YXIgaG9zdE5vZGUgPSB0aGlzLl9jb21tZW50Tm9kZXM7XG4gICAgaWYg
KGhvc3ROb2RlKSB7XG4gICAgICByZXR1cm4gaG9zdE5vZGU7XG4gICAgfVxuICAgIGlmICghdGhp
cy5fY2xvc2luZ0NvbW1lbnQpIHtcbiAgICAgIHZhciBvcGVuaW5nQ29tbWVudCA9IFJlYWN0RE9N
Q29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpO1xuICAgICAgdmFyIG5vZGUg
PSBvcGVuaW5nQ29tbWVudC5uZXh0U2libGluZztcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAg
ICAgICEobm9kZSAhPSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ01pc3Npbmcg
Y2xvc2luZyBjb21tZW50IGZvciB0ZXh0IGNvbXBvbmVudCAlcycsIHRoaXMuX2RvbUlEKSA6IF9w
cm9kSW52YXJpYW50KCc2NycsIHRoaXMuX2RvbUlEKSA6IHZvaWQgMDtcbiAgICAgICAgaWYgKG5v
ZGUubm9kZVR5cGUgPT09IDggJiYgbm9kZS5ub2RlVmFsdWUgPT09ICcgL3JlYWN0LXRleHQgJykg
e1xuICAgICAgICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbm9kZTtcbiAgICAgICAgICBicmVh
aztcbiAgICAgICAgfVxuICAgICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZztcbiAgICAgIH1c
biAgICB9XG4gICAgaG9zdE5vZGUgPSBbdGhpcy5faG9zdE5vZGUsIHRoaXMuX2Nsb3NpbmdDb21t
ZW50XTtcbiAgICB0aGlzLl9jb21tZW50Tm9kZXMgPSBob3N0Tm9kZTtcbiAgICByZXR1cm4gaG9z
dE5vZGU7XG4gIH0sXG5cbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuICAgIHRo
aXMuX2Nsb3NpbmdDb21tZW50ID0gbnVsbDtcbiAgICB0aGlzLl9jb21tZW50Tm9kZXMgPSBudWxs
O1xuICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTtcbiAgfVxufSk7
XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01UZXh0Q29tcG9uZW50O1xuXG4vKioqLyB9KSxc
bi8qIDE2NiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqL1xuXG5cblxudmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG52YXIg
UmVhY3RVcGRhdGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcbnZhciBUcmFuc2FjdGlvbiA9
IF9fd2VicGFja19yZXF1aXJlX18oMjQpO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFj
a19yZXF1aXJlX18oNik7XG5cbnZhciBSRVNFVF9CQVRDSEVEX1VQREFURVMgPSB7XG4gIGluaXRp
YWxpemU6IGVtcHR5RnVuY3Rpb24sXG4gIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG4gICAgUmVhY3RE
ZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcyA9IGZhbHNlO1xuICB9XG59
O1xuXG52YXIgRkxVU0hfQkFUQ0hFRF9VUERBVEVTID0ge1xuICBpbml0aWFsaXplOiBlbXB0eUZ1
bmN0aW9uLFxuICBjbG9zZTogUmVhY3RVcGRhdGVzLmZsdXNoQmF0Y2hlZFVwZGF0ZXMuYmluZChS
ZWFjdFVwZGF0ZXMpXG59O1xuXG52YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbRkxVU0hfQkFU
Q0hFRF9VUERBVEVTLCBSRVNFVF9CQVRDSEVEX1VQREFURVNdO1xuXG5mdW5jdGlvbiBSZWFjdERl
ZmF1bHRCYXRjaGluZ1N0cmF0ZWd5VHJhbnNhY3Rpb24oKSB7XG4gIHRoaXMucmVpbml0aWFsaXpl
VHJhbnNhY3Rpb24oKTtcbn1cblxuX2Fzc2lnbihSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5
VHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwge1xuICBnZXRUcmFuc2FjdGlvbldy
YXBwZXJzOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFRSQU5TQUNUSU9OX1dSQVBQRVJTO1xu
ICB9XG59KTtcblxudmFyIHRyYW5zYWN0aW9uID0gbmV3IFJlYWN0RGVmYXVsdEJhdGNoaW5nU3Ry
YXRlZ3lUcmFuc2FjdGlvbigpO1xuXG52YXIgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSA9
IHtcbiAgaXNCYXRjaGluZ1VwZGF0ZXM6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBDYWxsIHRoZSBw
cm92aWRlZCBmdW5jdGlvbiBpbiBhIGNvbnRleHQgd2l0aGluIHdoaWNoIGNhbGxzIHRvIGBzZXRT
dGF0ZWBcbiAgICogYW5kIGZyaWVuZHMgYXJlIGJhdGNoZWQgc3VjaCB0aGF0IGNvbXBvbmVudHMg
YXJlbid0IHVwZGF0ZWQgdW5uZWNlc3NhcmlseS5cbiAgICovXG4gIGJhdGNoZWRVcGRhdGVzOiBm
dW5jdGlvbiAoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpIHtcbiAgICB2YXIgYWxyZWFkeUJhdGNo
aW5nVXBkYXRlcyA9IFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0
ZXM7XG5cbiAgICBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVz
ID0gdHJ1ZTtcblxuICAgIC8vIFRoZSBjb2RlIGlzIHdyaXR0ZW4gdGhpcyB3YXkgdG8gYXZvaWQg
ZXh0cmEgYWxsb2NhdGlvbnNcbiAgICBpZiAoYWxyZWFkeUJhdGNoaW5nVXBkYXRlcykge1xuICAg
ICAgcmV0dXJuIGNhbGxiYWNrKGEsIGIsIGMsIGQsIGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBy
ZXR1cm4gdHJhbnNhY3Rpb24ucGVyZm9ybShjYWxsYmFjaywgbnVsbCwgYSwgYiwgYywgZCwgZSk7
XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RGVmYXVsdEJhdGNoaW5n
U3RyYXRlZ3k7XG5cbi8qKiovIH0pLFxuLyogMTY3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoq
XG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52YXIgX2Fzc2lnbiA9IF9fd2VicGFj
a19yZXF1aXJlX18oMyk7XG5cbnZhciBFdmVudExpc3RlbmVyID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg3OSk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUp
O1xudmFyIFBvb2xlZENsYXNzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG52YXIgUmVhY3RE
T01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbnZhciBSZWFjdFVwZGF0
ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXG52YXIgZ2V0RXZlbnRUYXJnZXQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDM0KTtcbnZhciBnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbiA9IF9f
d2VicGFja19yZXF1aXJlX18oMTY4KTtcblxuLyoqXG4gKiBGaW5kIHRoZSBkZWVwZXN0IFJlYWN0
IGNvbXBvbmVudCBjb21wbGV0ZWx5IGNvbnRhaW5pbmcgdGhlIHJvb3Qgb2YgdGhlXG4gKiBwYXNz
ZWQtaW4gaW5zdGFuY2UgKGZvciB1c2Ugd2hlbiBlbnRpcmUgUmVhY3QgdHJlZXMgYXJlIG5lc3Rl
ZCB3aXRoaW4gZWFjaFxuICogb3RoZXIpLiBJZiBSZWFjdCB0cmVlcyBhcmUgbm90IG5lc3RlZCwg
cmV0dXJucyBudWxsLlxuICovXG5mdW5jdGlvbiBmaW5kUGFyZW50KGluc3QpIHtcbiAgLy8gVE9E
TzogSXQgbWF5IGJlIGEgZ29vZCBpZGVhIHRvIGNhY2hlIHRoaXMgdG8gcHJldmVudCB1bm5lY2Vz
c2FyeSBET01cbiAgLy8gdHJhdmVyc2FsLCBidXQgY2FjaGluZyBpcyBkaWZmaWN1bHQgdG8gZG8g
Y29ycmVjdGx5IHdpdGhvdXQgdXNpbmcgYVxuICAvLyBtdXRhdGlvbiBvYnNlcnZlciB0byBsaXN0
ZW4gZm9yIGFsbCBET00gY2hhbmdlcy5cbiAgd2hpbGUgKGluc3QuX2hvc3RQYXJlbnQpIHtcbiAg
ICBpbnN0ID0gaW5zdC5faG9zdFBhcmVudDtcbiAgfVxuICB2YXIgcm9vdE5vZGUgPSBSZWFjdERP
TUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcbiAgdmFyIGNvbnRhaW5l
ciA9IHJvb3ROb2RlLnBhcmVudE5vZGU7XG4gIHJldHVybiBSZWFjdERPTUNvbXBvbmVudFRyZWUu
Z2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUoY29udGFpbmVyKTtcbn1cblxuLy8gVXNlZCB0byBz
dG9yZSBhbmNlc3RvciBoaWVyYXJjaHkgaW4gdG9wIGxldmVsIGNhbGxiYWNrXG5mdW5jdGlvbiBU
b3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xu
ICB0aGlzLnRvcExldmVsVHlwZSA9IHRvcExldmVsVHlwZTtcbiAgdGhpcy5uYXRpdmVFdmVudCA9
IG5hdGl2ZUV2ZW50O1xuICB0aGlzLmFuY2VzdG9ycyA9IFtdO1xufVxuX2Fzc2lnbihUb3BMZXZl
bENhbGxiYWNrQm9va0tlZXBpbmcucHJvdG90eXBlLCB7XG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9u
ICgpIHtcbiAgICB0aGlzLnRvcExldmVsVHlwZSA9IG51bGw7XG4gICAgdGhpcy5uYXRpdmVFdmVu
dCA9IG51bGw7XG4gICAgdGhpcy5hbmNlc3RvcnMubGVuZ3RoID0gMDtcbiAgfVxufSk7XG5Qb29s
ZWRDbGFzcy5hZGRQb29saW5nVG8oVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLCBQb29sZWRD
bGFzcy50d29Bcmd1bWVudFBvb2xlcik7XG5cbmZ1bmN0aW9uIGhhbmRsZVRvcExldmVsSW1wbChi
b29rS2VlcGluZykge1xuICB2YXIgbmF0aXZlRXZlbnRUYXJnZXQgPSBnZXRFdmVudFRhcmdldChi
b29rS2VlcGluZy5uYXRpdmVFdmVudCk7XG4gIHZhciB0YXJnZXRJbnN0ID0gUmVhY3RET01Db21w
b25lbnRUcmVlLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG5hdGl2ZUV2ZW50VGFyZ2V0KTtc
blxuICAvLyBMb29wIHRocm91Z2ggdGhlIGhpZXJhcmNoeSwgaW4gY2FzZSB0aGVyZSdzIGFueSBu
ZXN0ZWQgY29tcG9uZW50cy5cbiAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB3ZSBidWlsZCB0aGUg
YXJyYXkgb2YgYW5jZXN0b3JzIGJlZm9yZSBjYWxsaW5nIGFueVxuICAvLyBldmVudCBoYW5kbGVy
cywgYmVjYXVzZSBldmVudCBoYW5kbGVycyBjYW4gbW9kaWZ5IHRoZSBET00sIGxlYWRpbmcgdG9c
biAgLy8gaW5jb25zaXN0ZW5jaWVzIHdpdGggUmVhY3RNb3VudCdzIG5vZGUgY2FjaGUuIFNlZSAj
MTEwNS5cbiAgdmFyIGFuY2VzdG9yID0gdGFyZ2V0SW5zdDtcbiAgZG8ge1xuICAgIGJvb2tLZWVw
aW5nLmFuY2VzdG9ycy5wdXNoKGFuY2VzdG9yKTtcbiAgICBhbmNlc3RvciA9IGFuY2VzdG9yICYm
IGZpbmRQYXJlbnQoYW5jZXN0b3IpO1xuICB9IHdoaWxlIChhbmNlc3Rvcik7XG5cbiAgZm9yICh2
YXIgaSA9IDA7IGkgPCBib29rS2VlcGluZy5hbmNlc3RvcnMubGVuZ3RoOyBpKyspIHtcbiAgICB0
YXJnZXRJbnN0ID0gYm9va0tlZXBpbmcuYW5jZXN0b3JzW2ldO1xuICAgIFJlYWN0RXZlbnRMaXN0
ZW5lci5faGFuZGxlVG9wTGV2ZWwoYm9va0tlZXBpbmcudG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0
LCBib29rS2VlcGluZy5uYXRpdmVFdmVudCwgZ2V0RXZlbnRUYXJnZXQoYm9va0tlZXBpbmcubmF0
aXZlRXZlbnQpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzY3JvbGxWYWx1ZU1vbml0b3IoY2IpIHtc
biAgdmFyIHNjcm9sbFBvc2l0aW9uID0gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24od2luZG93
KTtcbiAgY2Ioc2Nyb2xsUG9zaXRpb24pO1xufVxuXG52YXIgUmVhY3RFdmVudExpc3RlbmVyID0g
e1xuICBfZW5hYmxlZDogdHJ1ZSxcbiAgX2hhbmRsZVRvcExldmVsOiBudWxsLFxuXG4gIFdJTkRP
V19IQU5ETEU6IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IHdpbmRvdyA6IG51bGws
XG5cbiAgc2V0SGFuZGxlVG9wTGV2ZWw6IGZ1bmN0aW9uIChoYW5kbGVUb3BMZXZlbCkge1xuICAg
IFJlYWN0RXZlbnRMaXN0ZW5lci5faGFuZGxlVG9wTGV2ZWwgPSBoYW5kbGVUb3BMZXZlbDtcbiAg
fSxcblxuICBzZXRFbmFibGVkOiBmdW5jdGlvbiAoZW5hYmxlZCkge1xuICAgIFJlYWN0RXZlbnRM
aXN0ZW5lci5fZW5hYmxlZCA9ICEhZW5hYmxlZDtcbiAgfSxcblxuICBpc0VuYWJsZWQ6IGZ1bmN0
aW9uICgpIHtcbiAgICByZXR1cm4gUmVhY3RFdmVudExpc3RlbmVyLl9lbmFibGVkO1xuICB9LFxu
XG4gIC8qKlxuICAgKiBUcmFwcyB0b3AtbGV2ZWwgZXZlbnRzIGJ5IHVzaW5nIGV2ZW50IGJ1YmJs
aW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9t
IGBFdmVudENvbnN0YW50c2AuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBoYW5kbGVyQmFzZU5hbWUg
RXZlbnQgbmFtZSAoZS5nLiBcImNsaWNrXCIpLlxuICAgKiBAcGFyYW0ge29iamVjdH0gZWxlbWVu
dCBFbGVtZW50IG9uIHdoaWNoIHRvIGF0dGFjaCBsaXN0ZW5lci5cbiAgICogQHJldHVybiB7P29i
amVjdH0gQW4gb2JqZWN0IHdpdGggYSByZW1vdmUgZnVuY3Rpb24gd2hpY2ggd2lsbCBmb3JjZWZ1
bGx5XG4gICAqICAgICAgICAgICAgICAgICAgcmVtb3ZlIHRoZSBsaXN0ZW5lci5cbiAgICogQGlu
dGVybmFsXG4gICAqL1xuICB0cmFwQnViYmxlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBl
LCBoYW5kbGVyQmFzZU5hbWUsIGVsZW1lbnQpIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAg
IHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gRXZlbnRMaXN0ZW5lci5saXN0ZW4oZWxl
bWVudCwgaGFuZGxlckJhc2VOYW1lLCBSZWFjdEV2ZW50TGlzdGVuZXIuZGlzcGF0Y2hFdmVudC5i
aW5kKG51bGwsIHRvcExldmVsVHlwZSkpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUcmFwcyBhIHRv
cC1sZXZlbCBldmVudCBieSB1c2luZyBldmVudCBjYXB0dXJpbmcuXG4gICAqXG4gICAqIEBwYXJh
bSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cbiAg
ICogQHBhcmFtIHtzdHJpbmd9IGhhbmRsZXJCYXNlTmFtZSBFdmVudCBuYW1lIChlLmcuIFwiY2xp
Y2tcIikuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50IEVsZW1lbnQgb24gd2hpY2ggdG8g
YXR0YWNoIGxpc3RlbmVyLlxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBBbiBvYmplY3Qgd2l0aCBh
IHJlbW92ZSBmdW5jdGlvbiB3aGljaCB3aWxsIGZvcmNlZnVsbHlcbiAgICogICAgICAgICAgICAg
ICAgICByZW1vdmUgdGhlIGxpc3RlbmVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHRyYXBD
YXB0dXJlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGVs
ZW1lbnQpIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1c
biAgICByZXR1cm4gRXZlbnRMaXN0ZW5lci5jYXB0dXJlKGVsZW1lbnQsIGhhbmRsZXJCYXNlTmFt
ZSwgUmVhY3RFdmVudExpc3RlbmVyLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLCB0b3BMZXZlbFR5
cGUpKTtcbiAgfSxcblxuICBtb25pdG9yU2Nyb2xsVmFsdWU6IGZ1bmN0aW9uIChyZWZyZXNoKSB7
XG4gICAgdmFyIGNhbGxiYWNrID0gc2Nyb2xsVmFsdWVNb25pdG9yLmJpbmQobnVsbCwgcmVmcmVz
aCk7XG4gICAgRXZlbnRMaXN0ZW5lci5saXN0ZW4od2luZG93LCAnc2Nyb2xsJywgY2FsbGJhY2sp
O1xuICB9LFxuXG4gIGRpc3BhdGNoRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIG5hdGl2
ZUV2ZW50KSB7XG4gICAgaWYgKCFSZWFjdEV2ZW50TGlzdGVuZXIuX2VuYWJsZWQpIHtcbiAgICAg
IHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgYm9va0tlZXBpbmcgPSBUb3BMZXZlbENhbGxiYWNr
Qm9va0tlZXBpbmcuZ2V0UG9vbGVkKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpO1xuICAgIHRy
eSB7XG4gICAgICAvLyBFdmVudCBxdWV1ZSBiZWluZyBwcm9jZXNzZWQgaW4gdGhlIHNhbWUgY3lj
bGUgYWxsb3dzXG4gICAgICAvLyBgcHJldmVudERlZmF1bHRgLlxuICAgICAgUmVhY3RVcGRhdGVz
LmJhdGNoZWRVcGRhdGVzKGhhbmRsZVRvcExldmVsSW1wbCwgYm9va0tlZXBpbmcpO1xuICAgIH0g
ZmluYWxseSB7XG4gICAgICBUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcucmVsZWFzZShib29r
S2VlcGluZyk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RXZlbnRM
aXN0ZW5lcjtcblxuLyoqKi8gfSksXG4vKiAxNjggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipc
biAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG5cblxuLyoq
XG4gKiBHZXRzIHRoZSBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIHN1cHBsaWVkIGVsZW1lbnQgb3Ig
d2luZG93LlxuICpcbiAqIFRoZSByZXR1cm4gdmFsdWVzIGFyZSB1bmJvdW5kZWQsIHVubGlrZSBg
Z2V0U2Nyb2xsUG9zaXRpb25gLiBUaGlzIG1lYW5zIHRoZXlcbiAqIG1heSBiZSBuZWdhdGl2ZSBv
ciBleGNlZWQgdGhlIGVsZW1lbnQgYm91bmRhcmllcyAod2hpY2ggaXMgcG9zc2libGUgdXNpbmdc
biAqIGluZXJ0aWFsIHNjcm9sbGluZykuXG4gKlxuICogQHBhcmFtIHtET01XaW5kb3d8RE9NRWxl
bWVudH0gc2Nyb2xsYWJsZVxuICogQHJldHVybiB7b2JqZWN0fSBNYXAgd2l0aCBgeGAgYW5kIGB5
YCBrZXlzLlxuICovXG5cbmZ1bmN0aW9uIGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uKHNjcm9s
bGFibGUpIHtcbiAgaWYgKHNjcm9sbGFibGUuV2luZG93ICYmIHNjcm9sbGFibGUgaW5zdGFuY2Vv
ZiBzY3JvbGxhYmxlLldpbmRvdykge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBzY3JvbGxhYmxl
LnBhZ2VYT2Zmc2V0IHx8IHNjcm9sbGFibGUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9s
bExlZnQsXG4gICAgICB5OiBzY3JvbGxhYmxlLnBhZ2VZT2Zmc2V0IHx8IHNjcm9sbGFibGUuZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtc
biAgICB4OiBzY3JvbGxhYmxlLnNjcm9sbExlZnQsXG4gICAgeTogc2Nyb2xsYWJsZS5zY3JvbGxU
b3BcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlv
bjtcblxuLyoqKi8gfSksXG4vKiAxNjkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBET01Qcm9wZXJ0eSA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTUpO1xudmFyIEV2ZW50UGx1Z2luSHViID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
MCk7XG52YXIgRXZlbnRQbHVnaW5VdGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpO1xudmFy
IFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKTtcbnZh
ciBSZWFjdEVtcHR5Q29tcG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NSk7XG52YXIgUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOCk7XG52YXIgUmVh
Y3RIb3N0Q29tcG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Nik7XG52YXIgUmVhY3RVcGRh
dGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblxudmFyIFJlYWN0SW5qZWN0aW9uID0ge1xu
ICBDb21wb25lbnQ6IFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQuaW5qZWN0aW9uLFxuICBET01Q
cm9wZXJ0eTogRE9NUHJvcGVydHkuaW5qZWN0aW9uLFxuICBFbXB0eUNvbXBvbmVudDogUmVhY3RF
bXB0eUNvbXBvbmVudC5pbmplY3Rpb24sXG4gIEV2ZW50UGx1Z2luSHViOiBFdmVudFBsdWdpbkh1
Yi5pbmplY3Rpb24sXG4gIEV2ZW50UGx1Z2luVXRpbHM6IEV2ZW50UGx1Z2luVXRpbHMuaW5qZWN0
aW9uLFxuICBFdmVudEVtaXR0ZXI6IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5pbmplY3Rpb24s
XG4gIEhvc3RDb21wb25lbnQ6IFJlYWN0SG9zdENvbXBvbmVudC5pbmplY3Rpb24sXG4gIFVwZGF0
ZXM6IFJlYWN0VXBkYXRlcy5pbmplY3Rpb25cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RJ
bmplY3Rpb247XG5cbi8qKiovIH0pLFxuLyogMTcwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoq
XG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52YXIgX2Fzc2lnbiA9IF9fd2VicGFj
a19yZXF1aXJlX18oMyk7XG5cbnZhciBDYWxsYmFja1F1ZXVlID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg2Mik7XG52YXIgUG9vbGVkQ2xhc3MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcbnZhciBS
ZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTtcbnZhciBS
ZWFjdElucHV0U2VsZWN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4MCk7XG52YXIgUmVhY3RJ
bnN0cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xudmFyIFRyYW5zYWN0aW9u
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNCk7XG52YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNDUpO1xuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCwgd2hlbiBwb3NzaWJs
ZSwgdGhlIHNlbGVjdGlvbiByYW5nZSAoY3VycmVudGx5IHNlbGVjdGVkIHRleHRcbiAqIGlucHV0
KSBpcyBub3QgZGlzdHVyYmVkIGJ5IHBlcmZvcm1pbmcgdGhlIHRyYW5zYWN0aW9uLlxuICovXG52
YXIgU0VMRUNUSU9OX1JFU1RPUkFUSU9OID0ge1xuICAvKipcbiAgICogQHJldHVybiB7U2VsZWN0
aW9ufSBTZWxlY3Rpb24gaW5mb3JtYXRpb24uXG4gICAqL1xuICBpbml0aWFsaXplOiBSZWFjdElu
cHV0U2VsZWN0aW9uLmdldFNlbGVjdGlvbkluZm9ybWF0aW9uLFxuICAvKipcbiAgICogQHBhcmFt
IHtTZWxlY3Rpb259IHNlbCBTZWxlY3Rpb24gaW5mb3JtYXRpb24gcmV0dXJuZWQgZnJvbSBgaW5p
dGlhbGl6ZWAuXG4gICAqL1xuICBjbG9zZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5yZXN0b3JlU2Vs
ZWN0aW9uXG59O1xuXG4vKipcbiAqIFN1cHByZXNzZXMgZXZlbnRzIChibHVyL2ZvY3VzKSB0aGF0
IGNvdWxkIGJlIGluYWR2ZXJ0ZW50bHkgZGlzcGF0Y2hlZCBkdWUgdG9cbiAqIGhpZ2ggbGV2ZWwg
RE9NIG1hbmlwdWxhdGlvbnMgKGxpa2UgdGVtcG9yYXJpbHkgcmVtb3ZpbmcgYSB0ZXh0IGlucHV0
IGZyb20gdGhlXG4gKiBET00pLlxuICovXG52YXIgRVZFTlRfU1VQUFJFU1NJT04gPSB7XG4gIC8q
KlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUaGUgZW5hYmxlZCBzdGF0dXMgb2YgYFJlYWN0QnJv
d3NlckV2ZW50RW1pdHRlcmAgYmVmb3JlXG4gICAqIHRoZSByZWNvbmNpbGlhdGlvbi5cbiAgICov
XG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY3VycmVudGx5RW5hYmxlZCA9
IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5pc0VuYWJsZWQoKTtcbiAgICBSZWFjdEJyb3dzZXJF
dmVudEVtaXR0ZXIuc2V0RW5hYmxlZChmYWxzZSk7XG4gICAgcmV0dXJuIGN1cnJlbnRseUVuYWJs
ZWQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJldmlvdXNseUVuYWJs
ZWQgRW5hYmxlZCBzdGF0dXMgb2ZcbiAgICogICBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBi
ZWZvcmUgdGhlIHJlY29uY2lsaWF0aW9uIG9jY3VycmVkLiBgY2xvc2VgXG4gICAqICAgcmVzdG9y
ZXMgdGhlIHByZXZpb3VzIHZhbHVlLlxuICAgKi9cbiAgY2xvc2U6IGZ1bmN0aW9uIChwcmV2aW91
c2x5RW5hYmxlZCkge1xuICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5zZXRFbmFibGVkKHBy
ZXZpb3VzbHlFbmFibGVkKTtcbiAgfVxufTtcblxuLyoqXG4gKiBQcm92aWRlcyBhIHF1ZXVlIGZv
ciBjb2xsZWN0aW5nIGBjb21wb25lbnREaWRNb3VudGAgYW5kXG4gKiBgY29tcG9uZW50RGlkVXBk
YXRlYCBjYWxsYmFja3MgZHVyaW5nIHRoZSB0cmFuc2FjdGlvbi5cbiAqL1xudmFyIE9OX0RPTV9S
RUFEWV9RVUVVRUlORyA9IHtcbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBpbnRlcm5hbCBg
b25ET01SZWFkeWAgcXVldWUuXG4gICAqL1xuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4g
ICAgdGhpcy5yZWFjdE1vdW50UmVhZHkucmVzZXQoKTtcbiAgfSxcblxuICAvKipcbiAgICogQWZ0
ZXIgRE9NIGlzIGZsdXNoZWQsIGludm9rZSBhbGwgcmVnaXN0ZXJlZCBgb25ET01SZWFkeWAgY2Fs
bGJhY2tzLlxuICAgKi9cbiAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJlYWN0TW91
bnRSZWFkeS5ub3RpZnlBbGwoKTtcbiAgfVxufTtcblxuLyoqXG4gKiBFeGVjdXRlZCB3aXRoaW4g
dGhlIHNjb3BlIG9mIHRoZSBgVHJhbnNhY3Rpb25gIGluc3RhbmNlLiBDb25zaWRlciB0aGVzZSBh
c1xuICogYmVpbmcgbWVtYmVyIG1ldGhvZHMsIGJ1dCB3aXRoIGFuIGltcGxpZWQgb3JkZXJpbmcg
d2hpbGUgYmVpbmcgaXNvbGF0ZWQgZnJvbVxuICogZWFjaCBvdGhlci5cbiAqL1xudmFyIFRSQU5T
QUNUSU9OX1dSQVBQRVJTID0gW1NFTEVDVElPTl9SRVNUT1JBVElPTiwgRVZFTlRfU1VQUFJFU1NJ
T04sIE9OX0RPTV9SRUFEWV9RVUVVRUlOR107XG5cbmlmIChmYWxzZSkge1xuICBUUkFOU0FDVElP
Tl9XUkFQUEVSUy5wdXNoKHtcbiAgICBpbml0aWFsaXplOiBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25CZWdpbkZsdXNoLFxuICAgIGNsb3NlOiBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25FbmRGbHVzaFxuICB9KTtcbn1cblxuLyoqXG4gKiBDdXJyZW50bHk6XG4gKiAt
IFRoZSBvcmRlciB0aGF0IHRoZXNlIGFyZSBsaXN0ZWQgaW4gdGhlIHRyYW5zYWN0aW9uIGlzIGNy
aXRpY2FsOlxuICogLSBTdXBwcmVzc2VzIGV2ZW50cy5cbiAqIC0gUmVzdG9yZXMgc2VsZWN0aW9u
IHJhbmdlLlxuICpcbiAqIEZ1dHVyZTpcbiAqIC0gUmVzdG9yZSBkb2N1bWVudC9vdmVyZmxvdyBz
Y3JvbGwgcG9zaXRpb25zIHRoYXQgd2VyZSB1bmludGVudGlvbmFsbHlcbiAqICAgbW9kaWZpZWQg
dmlhIERPTSBpbnNlcnRpb25zIGFib3ZlIHRoZSB0b3Agdmlld3BvcnQgYm91bmRhcnkuXG4gKiAt
IEltcGxlbWVudC9pbnRlZ3JhdGUgd2l0aCBjdXN0b21pemVkIGNvbnN0cmFpbnQgYmFzZWQgbGF5
b3V0IHN5c3RlbSBhbmQga2VlcFxuICogICB0cmFjayBvZiB3aGljaCBkaW1lbnNpb25zIG11c3Qg
YmUgcmVtZWFzdXJlZC5cbiAqXG4gKiBAY2xhc3MgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvblxu
ICovXG5mdW5jdGlvbiBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uKHVzZUNyZWF0ZUVsZW1lbnQp
IHtcbiAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xuICAvLyBPbmx5IHNlcnZlci1z
aWRlIHJlbmRlcmluZyByZWFsbHkgbmVlZHMgdGhpcyBvcHRpb24gKHNlZVxuICAvLyBgUmVhY3RT
ZXJ2ZXJSZW5kZXJpbmdgKSwgYnV0IHNlcnZlci1zaWRlIHVzZXNcbiAgLy8gYFJlYWN0U2VydmVy
UmVuZGVyaW5nVHJhbnNhY3Rpb25gIGluc3RlYWQuIFRoaXMgb3B0aW9uIGlzIGhlcmUgc28gdGhh
dCBpdCdzXG4gIC8vIGFjY2Vzc2libGUgYW5kIGRlZmF1bHRzIHRvIGZhbHNlIHdoZW4gYFJlYWN0
RE9NQ29tcG9uZW50YCBhbmRcbiAgLy8gYFJlYWN0RE9NVGV4dENvbXBvbmVudGAgY2hlY2tzIGl0
IGluIGBtb3VudENvbXBvbmVudGAuYFxuICB0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwID0gZmFs
c2U7XG4gIHRoaXMucmVhY3RNb3VudFJlYWR5ID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQobnVs
bCk7XG4gIHRoaXMudXNlQ3JlYXRlRWxlbWVudCA9IHVzZUNyZWF0ZUVsZW1lbnQ7XG59XG5cbnZh
ciBNaXhpbiA9IHtcbiAgLyoqXG4gICAqIEBzZWUgVHJhbnNhY3Rpb25cbiAgICogQGFic3RyYWN0
XG4gICAqIEBmaW5hbFxuICAgKiBAcmV0dXJuIHthcnJheTxvYmplY3Q+fSBMaXN0IG9mIG9wZXJh
dGlvbiB3cmFwIHByb2NlZHVyZXMuXG4gICAqICAgVE9ETzogY29udmVydCB0byBhcnJheTxUcmFu
c2FjdGlvbldyYXBwZXI+XG4gICAqL1xuICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBmdW5jdGlv
biAoKSB7XG4gICAgcmV0dXJuIFRSQU5TQUNUSU9OX1dSQVBQRVJTO1xuICB9LFxuXG4gIC8qKlxu
ICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IGBvbkRPTVJlYWR5YCBj
YWxsYmFja3Mgd2l0aC5cbiAgICovXG4gIGdldFJlYWN0TW91bnRSZWFkeTogZnVuY3Rpb24gKCkg
e1xuICAgIHJldHVybiB0aGlzLnJlYWN0TW91bnRSZWFkeTtcbiAgfSxcblxuICAvKipcbiAgICog
QHJldHVybiB7b2JqZWN0fSBUaGUgcXVldWUgdG8gY29sbGVjdCBSZWFjdCBhc3luYyBldmVudHMu
XG4gICAqL1xuICBnZXRVcGRhdGVRdWV1ZTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBSZWFj
dFVwZGF0ZVF1ZXVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTYXZlIGN1cnJlbnQgdHJhbnNhY3Rp
b24gc3RhdGUgLS0gaWYgdGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoaXMgbWV0aG9kIGlzXG4gICAq
IHBhc3NlZCB0byBgcm9sbGJhY2tgLCB0aGUgdHJhbnNhY3Rpb24gd2lsbCBiZSByZXNldCB0byB0
aGF0IHN0YXRlLlxuICAgKi9cbiAgY2hlY2twb2ludDogZnVuY3Rpb24gKCkge1xuICAgIC8vIHJl
YWN0TW91bnRSZWFkeSBpcyB0aGUgb3VyIG9ubHkgc3RhdGVmdWwgd3JhcHBlclxuICAgIHJldHVy
biB0aGlzLnJlYWN0TW91bnRSZWFkeS5jaGVja3BvaW50KCk7XG4gIH0sXG5cbiAgcm9sbGJhY2s6
IGZ1bmN0aW9uIChjaGVja3BvaW50KSB7XG4gICAgdGhpcy5yZWFjdE1vdW50UmVhZHkucm9sbGJh
Y2soY2hlY2twb2ludCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIGBQb29sZWRDbGFzc2AgbG9va3Mg
Zm9yIHRoaXMsIGFuZCB3aWxsIGludm9rZSB0aGlzIGJlZm9yZSBhbGxvd2luZyB0aGlzXG4gICAq
IGluc3RhbmNlIHRvIGJlIHJldXNlZC5cbiAgICovXG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgp
IHtcbiAgICBDYWxsYmFja1F1ZXVlLnJlbGVhc2UodGhpcy5yZWFjdE1vdW50UmVhZHkpO1xuICAg
IHRoaXMucmVhY3RNb3VudFJlYWR5ID0gbnVsbDtcbiAgfVxufTtcblxuX2Fzc2lnbihSZWFjdFJl
Y29uY2lsZVRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIE1peGluKTtcblxuUG9v
bGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24pO1xuXG5tb2R1
bGUuZXhwb3J0cyA9IFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb247XG5cbi8qKiovIH0pLFxuLyog
MTcxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cblxuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUp
O1xuXG52YXIgZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldCA9IF9fd2VicGFja19yZXF1aXJlX18o
MTcyKTtcbnZhciBnZXRUZXh0Q29udGVudEFjY2Vzc29yID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2
MSk7XG5cbi8qKlxuICogV2hpbGUgYGlzQ29sbGFwc2VkYCBpcyBhdmFpbGFibGUgb24gdGhlIFNl
bGVjdGlvbiBvYmplY3QgYW5kIGBjb2xsYXBzZWRgXG4gKiBpcyBhdmFpbGFibGUgb24gdGhlIFJh
bmdlIG9iamVjdCwgSUUxMSBzb21ldGltZXMgZ2V0cyB0aGVtIHdyb25nLlxuICogSWYgdGhlIGFu
Y2hvci9mb2N1cyBub2RlcyBhbmQgb2Zmc2V0cyBhcmUgdGhlIHNhbWUsIHRoZSByYW5nZSBpcyBj
b2xsYXBzZWQuXG4gKi9cbmZ1bmN0aW9uIGlzQ29sbGFwc2VkKGFuY2hvck5vZGUsIGFuY2hvck9m
ZnNldCwgZm9jdXNOb2RlLCBmb2N1c09mZnNldCkge1xuICByZXR1cm4gYW5jaG9yTm9kZSA9PT0g
Zm9jdXNOb2RlICYmIGFuY2hvck9mZnNldCA9PT0gZm9jdXNPZmZzZXQ7XG59XG5cbi8qKlxuICog
R2V0IHRoZSBhcHByb3ByaWF0ZSBhbmNob3IgYW5kIGZvY3VzIG5vZGUvb2Zmc2V0IHBhaXJzIGZv
ciBJRS5cbiAqXG4gKiBUaGUgY2F0Y2ggaGVyZSBpcyB0aGF0IElFJ3Mgc2VsZWN0aW9uIEFQSSBk
b2Vzbid0IHByb3ZpZGUgaW5mb3JtYXRpb25cbiAqIGFib3V0IHdoZXRoZXIgdGhlIHNlbGVjdGlv
biBpcyBmb3J3YXJkIG9yIGJhY2t3YXJkLCBzbyB3ZSBoYXZlIHRvXG4gKiBiZWhhdmUgYXMgdGhv
dWdoIGl0J3MgYWx3YXlzIGZvcndhcmQuXG4gKlxuICogSUUgdGV4dCBkaWZmZXJzIGZyb20gbW9k
ZXJuIHNlbGVjdGlvbiBpbiB0aGF0IGl0IGJlaGF2ZXMgYXMgdGhvdWdoXG4gKiBibG9jayBlbGVt
ZW50cyBlbmQgd2l0aCBhIG5ldyBsaW5lLiBUaGlzIG1lYW5zIGNoYXJhY3RlciBvZmZzZXRzIHdp
bGxcbiAqIGRpZmZlciBiZXR3ZWVuIHRoZSB0d28gQVBJcy5cbiAqXG4gKiBAcGFyYW0ge0RPTUVs
ZW1lbnR9IG5vZGVcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0SUVPZmZz
ZXRzKG5vZGUpIHtcbiAgdmFyIHNlbGVjdGlvbiA9IGRvY3VtZW50LnNlbGVjdGlvbjtcbiAgdmFy
IHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtcbiAgdmFyIHNlbGVjdGVk
TGVuZ3RoID0gc2VsZWN0ZWRSYW5nZS50ZXh0Lmxlbmd0aDtcblxuICAvLyBEdXBsaWNhdGUgc2Vs
ZWN0aW9uIHNvIHdlIGNhbiBtb3ZlIHJhbmdlIHdpdGhvdXQgYnJlYWtpbmcgdXNlciBzZWxlY3Rp
b24uXG4gIHZhciBmcm9tU3RhcnQgPSBzZWxlY3RlZFJhbmdlLmR1cGxpY2F0ZSgpO1xuICBmcm9t
U3RhcnQubW92ZVRvRWxlbWVudFRleHQobm9kZSk7XG4gIGZyb21TdGFydC5zZXRFbmRQb2ludCgn
RW5kVG9TdGFydCcsIHNlbGVjdGVkUmFuZ2UpO1xuXG4gIHZhciBzdGFydE9mZnNldCA9IGZyb21T
dGFydC50ZXh0Lmxlbmd0aDtcbiAgdmFyIGVuZE9mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgc2VsZWN0
ZWRMZW5ndGg7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydDogc3RhcnRPZmZzZXQsXG4gICAgZW5k
OiBlbmRPZmZzZXRcbiAgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVc
biAqIEByZXR1cm4gez9vYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldE1vZGVybk9mZnNldHMobm9k
ZSkge1xuICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbiAmJiB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCk7XG5cbiAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQg
PT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBhbmNob3JOb2RlID0gc2Vs
ZWN0aW9uLmFuY2hvck5vZGU7XG4gIHZhciBhbmNob3JPZmZzZXQgPSBzZWxlY3Rpb24uYW5jaG9y
T2Zmc2V0O1xuICB2YXIgZm9jdXNOb2RlID0gc2VsZWN0aW9uLmZvY3VzTm9kZTtcbiAgdmFyIGZv
Y3VzT2Zmc2V0ID0gc2VsZWN0aW9uLmZvY3VzT2Zmc2V0O1xuXG4gIHZhciBjdXJyZW50UmFuZ2Ug
PSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcblxuICAvLyBJbiBGaXJlZm94LCByYW5nZS5zdGFy
dENvbnRhaW5lciBhbmQgcmFuZ2UuZW5kQ29udGFpbmVyIGNhbiBiZSBcImFub255bW91c1xuICAv
LyBkaXZzXCIsIGUuZy4gdGhlIHVwL2Rvd24gYnV0dG9ucyBvbiBhbiA8aW5wdXQgdHlwZT1cIm51
bWJlclwiPi4gQW5vbnltb3VzXG4gIC8vIGRpdnMgZG8gbm90IHNlZW0gdG8gZXhwb3NlIHByb3Bl
cnRpZXMsIHRyaWdnZXJpbmcgYSBcIlBlcm1pc3Npb24gZGVuaWVkXG4gIC8vIGVycm9yXCIgaWYg
YW55IG9mIGl0cyBwcm9wZXJ0aWVzIGFyZSBhY2Nlc3NlZC4gVGhlIG9ubHkgc2VlbWluZ2x5IHBv
c3NpYmxlXG4gIC8vIHdheSB0byBhdm9pZCBlcnJvcmluZyBpcyB0byBhY2Nlc3MgYSBwcm9wZXJ0
eSB0aGF0IHR5cGljYWxseSB3b3JrcyBmb3JcbiAgLy8gbm9uLWFub255bW91cyBkaXZzIGFuZCBj
YXRjaCBhbnkgZXJyb3IgdGhhdCBtYXkgb3RoZXJ3aXNlIGFyaXNlLiBTZWVcbiAgLy8gaHR0cHM6
Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NDI3XG4gIHRyeSB7XG4g
ICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICovXG4gICAgY3VycmVu
dFJhbmdlLnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlO1xuICAgIGN1cnJlbnRSYW5nZS5lbmRDb250
YWluZXIubm9kZVR5cGU7XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtZXhwcmVzc2lv
bnMgKi9cbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gSWYg
dGhlIG5vZGUgYW5kIG9mZnNldCB2YWx1ZXMgYXJlIHRoZSBzYW1lLCB0aGUgc2VsZWN0aW9uIGlz
IGNvbGxhcHNlZC5cbiAgLy8gYFNlbGVjdGlvbi5pc0NvbGxhcHNlZGAgaXMgYXZhaWxhYmxlIG5h
dGl2ZWx5LCBidXQgSUUgc29tZXRpbWVzIGdldHNcbiAgLy8gdGhpcyB2YWx1ZSB3cm9uZy5cbiAg
dmFyIGlzU2VsZWN0aW9uQ29sbGFwc2VkID0gaXNDb2xsYXBzZWQoc2VsZWN0aW9uLmFuY2hvck5v
ZGUsIHNlbGVjdGlvbi5hbmNob3JPZmZzZXQsIHNlbGVjdGlvbi5mb2N1c05vZGUsIHNlbGVjdGlv
bi5mb2N1c09mZnNldCk7XG5cbiAgdmFyIHJhbmdlTGVuZ3RoID0gaXNTZWxlY3Rpb25Db2xsYXBz
ZWQgPyAwIDogY3VycmVudFJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoO1xuXG4gIHZhciB0ZW1wUmFu
Z2UgPSBjdXJyZW50UmFuZ2UuY2xvbmVSYW5nZSgpO1xuICB0ZW1wUmFuZ2Uuc2VsZWN0Tm9kZUNv
bnRlbnRzKG5vZGUpO1xuICB0ZW1wUmFuZ2Uuc2V0RW5kKGN1cnJlbnRSYW5nZS5zdGFydENvbnRh
aW5lciwgY3VycmVudFJhbmdlLnN0YXJ0T2Zmc2V0KTtcblxuICB2YXIgaXNUZW1wUmFuZ2VDb2xs
YXBzZWQgPSBpc0NvbGxhcHNlZCh0ZW1wUmFuZ2Uuc3RhcnRDb250YWluZXIsIHRlbXBSYW5nZS5z
dGFydE9mZnNldCwgdGVtcFJhbmdlLmVuZENvbnRhaW5lciwgdGVtcFJhbmdlLmVuZE9mZnNldCk7
XG5cbiAgdmFyIHN0YXJ0ID0gaXNUZW1wUmFuZ2VDb2xsYXBzZWQgPyAwIDogdGVtcFJhbmdlLnRv
U3RyaW5nKCkubGVuZ3RoO1xuICB2YXIgZW5kID0gc3RhcnQgKyByYW5nZUxlbmd0aDtcblxuICAv
LyBEZXRlY3Qgd2hldGhlciB0aGUgc2VsZWN0aW9uIGlzIGJhY2t3YXJkLlxuICB2YXIgZGV0ZWN0
aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICBkZXRlY3Rpb25SYW5nZS5zZXRT
dGFydChhbmNob3JOb2RlLCBhbmNob3JPZmZzZXQpO1xuICBkZXRlY3Rpb25SYW5nZS5zZXRFbmQo
Zm9jdXNOb2RlLCBmb2N1c09mZnNldCk7XG4gIHZhciBpc0JhY2t3YXJkID0gZGV0ZWN0aW9uUmFu
Z2UuY29sbGFwc2VkO1xuXG4gIHJldHVybiB7XG4gICAgc3RhcnQ6IGlzQmFja3dhcmQgPyBlbmQg
OiBzdGFydCxcbiAgICBlbmQ6IGlzQmFja3dhcmQgPyBzdGFydCA6IGVuZFxuICB9O1xufVxuXG4v
KipcbiAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuICogQHBhcmFtIHtv
YmplY3R9IG9mZnNldHNcbiAqL1xuZnVuY3Rpb24gc2V0SUVPZmZzZXRzKG5vZGUsIG9mZnNldHMp
IHtcbiAgdmFyIHJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGlj
YXRlKCk7XG4gIHZhciBzdGFydCwgZW5kO1xuXG4gIGlmIChvZmZzZXRzLmVuZCA9PT0gdW5kZWZp
bmVkKSB7XG4gICAgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0O1xuICAgIGVuZCA9IHN0YXJ0O1xuICB9
IGVsc2UgaWYgKG9mZnNldHMuc3RhcnQgPiBvZmZzZXRzLmVuZCkge1xuICAgIHN0YXJ0ID0gb2Zm
c2V0cy5lbmQ7XG4gICAgZW5kID0gb2Zmc2V0cy5zdGFydDtcbiAgfSBlbHNlIHtcbiAgICBzdGFy
dCA9IG9mZnNldHMuc3RhcnQ7XG4gICAgZW5kID0gb2Zmc2V0cy5lbmQ7XG4gIH1cblxuICByYW5n
ZS5tb3ZlVG9FbGVtZW50VGV4dChub2RlKTtcbiAgcmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXIn
LCBzdGFydCk7XG4gIHJhbmdlLnNldEVuZFBvaW50KCdFbmRUb1N0YXJ0JywgcmFuZ2UpO1xuICBy
YW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQgLSBzdGFydCk7XG4gIHJhbmdlLnNlbGVjdCgp
O1xufVxuXG4vKipcbiAqIEluIG1vZGVybiBub24tSUUgYnJvd3NlcnMsIHdlIGNhbiBzdXBwb3J0
IGJvdGggZm9yd2FyZCBhbmQgYmFja3dhcmRcbiAqIHNlbGVjdGlvbnMuXG4gKlxuICogTm90ZTog
SUUxMCsgc3VwcG9ydHMgdGhlIFNlbGVjdGlvbiBvYmplY3QsIGJ1dCBpdCBkb2VzIG5vdCBzdXBw
b3J0XG4gKiB0aGUgYGV4dGVuZGAgbWV0aG9kLCB3aGljaCBtZWFucyB0aGF0IGV2ZW4gaW4gbW9k
ZXJuIElFLCBpdCdzIG5vdCBwb3NzaWJsZVxuICogdG8gcHJvZ3JhbW1hdGljYWxseSBjcmVhdGUg
YSBiYWNrd2FyZCBzZWxlY3Rpb24uIFRodXMsIGZvciBhbGwgSUVcbiAqIHZlcnNpb25zLCB3ZSB1
c2UgdGhlIG9sZCBJRSBBUEkgdG8gY3JlYXRlIG91ciBzZWxlY3Rpb25zLlxuICpcbiAqIEBwYXJh
bSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuICogQHBhcmFtIHtvYmplY3R9IG9mZnNl
dHNcbiAqL1xuZnVuY3Rpb24gc2V0TW9kZXJuT2Zmc2V0cyhub2RlLCBvZmZzZXRzKSB7XG4gIGlm
ICghd2luZG93LmdldFNlbGVjdGlvbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBzZWxl
Y3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIHZhciBsZW5ndGggPSBub2RlW2dldFRl
eHRDb250ZW50QWNjZXNzb3IoKV0ubGVuZ3RoO1xuICB2YXIgc3RhcnQgPSBNYXRoLm1pbihvZmZz
ZXRzLnN0YXJ0LCBsZW5ndGgpO1xuICB2YXIgZW5kID0gb2Zmc2V0cy5lbmQgPT09IHVuZGVmaW5l
ZCA/IHN0YXJ0IDogTWF0aC5taW4ob2Zmc2V0cy5lbmQsIGxlbmd0aCk7XG5cbiAgLy8gSUUgMTEg
dXNlcyBtb2Rlcm4gc2VsZWN0aW9uLCBidXQgZG9lc24ndCBzdXBwb3J0IHRoZSBleHRlbmQgbWV0
aG9kLlxuICAvLyBGbGlwIGJhY2t3YXJkIHNlbGVjdGlvbnMsIHNvIHdlIGNhbiBzZXQgd2l0aCBh
IHNpbmdsZSByYW5nZS5cbiAgaWYgKCFzZWxlY3Rpb24uZXh0ZW5kICYmIHN0YXJ0ID4gZW5kKSB7
XG4gICAgdmFyIHRlbXAgPSBlbmQ7XG4gICAgZW5kID0gc3RhcnQ7XG4gICAgc3RhcnQgPSB0ZW1w
O1xuICB9XG5cbiAgdmFyIHN0YXJ0TWFya2VyID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChu
b2RlLCBzdGFydCk7XG4gIHZhciBlbmRNYXJrZXIgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0
KG5vZGUsIGVuZCk7XG5cbiAgaWYgKHN0YXJ0TWFya2VyICYmIGVuZE1hcmtlcikge1xuICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2V0U3RhcnQoc3Rh
cnRNYXJrZXIubm9kZSwgc3RhcnRNYXJrZXIub2Zmc2V0KTtcbiAgICBzZWxlY3Rpb24ucmVtb3Zl
QWxsUmFuZ2VzKCk7XG5cbiAgICBpZiAoc3RhcnQgPiBlbmQpIHtcbiAgICAgIHNlbGVjdGlvbi5h
ZGRSYW5nZShyYW5nZSk7XG4gICAgICBzZWxlY3Rpb24uZXh0ZW5kKGVuZE1hcmtlci5ub2RlLCBl
bmRNYXJrZXIub2Zmc2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZ2Uuc2V0RW5kKGVuZE1h
cmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0KTtcbiAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShy
YW5nZSk7XG4gICAgfVxuICB9XG59XG5cbnZhciB1c2VJRU9mZnNldHMgPSBFeGVjdXRpb25FbnZp
cm9ubWVudC5jYW5Vc2VET00gJiYgJ3NlbGVjdGlvbicgaW4gZG9jdW1lbnQgJiYgISgnZ2V0U2Vs
ZWN0aW9uJyBpbiB3aW5kb3cpO1xuXG52YXIgUmVhY3RET01TZWxlY3Rpb24gPSB7XG4gIC8qKlxu
ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAgICovXG4gIGdldE9mZnNldHM6IHVzZUlF
T2Zmc2V0cyA/IGdldElFT2Zmc2V0cyA6IGdldE1vZGVybk9mZnNldHMsXG5cbiAgLyoqXG4gICAq
IEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuICAgKiBAcGFyYW0ge29iamVj
dH0gb2Zmc2V0c1xuICAgKi9cbiAgc2V0T2Zmc2V0czogdXNlSUVPZmZzZXRzID8gc2V0SUVPZmZz
ZXRzIDogc2V0TW9kZXJuT2Zmc2V0c1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNl
bGVjdGlvbjtcblxuLyoqKi8gfSksXG4vKiAxNzIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipc
biAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbi8qKlxuICogR2l2ZW4gYW55IG5vZGUg
cmV0dXJuIHRoZSBmaXJzdCBsZWFmIG5vZGUgd2l0aG91dCBjaGlsZHJlbi5cbiAqXG4gKiBAcGFy
YW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGVcbiAqIEByZXR1cm4ge0RPTUVsZW1lbnR8
RE9NVGV4dE5vZGV9XG4gKi9cblxuZnVuY3Rpb24gZ2V0TGVhZk5vZGUobm9kZSkge1xuICB3aGls
ZSAobm9kZSAmJiBub2RlLmZpcnN0Q2hpbGQpIHtcbiAgICBub2RlID0gbm9kZS5maXJzdENoaWxk
O1xuICB9XG4gIHJldHVybiBub2RlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbmV4dCBzaWJsaW5n
IHdpdGhpbiBhIGNvbnRhaW5lci4gVGhpcyB3aWxsIHdhbGsgdXAgdGhlXG4gKiBET00gaWYgYSBu
b2RlJ3Mgc2libGluZ3MgaGF2ZSBiZWVuIGV4aGF1c3RlZC5cbiAqXG4gKiBAcGFyYW0ge0RPTUVs
ZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGVcbiAqIEByZXR1cm4gez9ET01FbGVtZW50fERPTVRleHRO
b2RlfVxuICovXG5mdW5jdGlvbiBnZXRTaWJsaW5nTm9kZShub2RlKSB7XG4gIHdoaWxlIChub2Rl
KSB7XG4gICAgaWYgKG5vZGUubmV4dFNpYmxpbmcpIHtcbiAgICAgIHJldHVybiBub2RlLm5leHRT
aWJsaW5nO1xuICAgIH1cbiAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICB9XG59XG5cbi8q
KlxuICogR2V0IG9iamVjdCBkZXNjcmliaW5nIHRoZSBub2RlcyB3aGljaCBjb250YWluIGNoYXJh
Y3RlcnMgYXQgb2Zmc2V0LlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0g
cm9vdFxuICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldFxuICogQHJldHVybiB7P29iamVjdH1cbiAq
L1xuZnVuY3Rpb24gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChyb290LCBvZmZzZXQpIHtcbiAg
dmFyIG5vZGUgPSBnZXRMZWFmTm9kZShyb290KTtcbiAgdmFyIG5vZGVTdGFydCA9IDA7XG4gIHZh
ciBub2RlRW5kID0gMDtcblxuICB3aGlsZSAobm9kZSkge1xuICAgIGlmIChub2RlLm5vZGVUeXBl
ID09PSAzKSB7XG4gICAgICBub2RlRW5kID0gbm9kZVN0YXJ0ICsgbm9kZS50ZXh0Q29udGVudC5s
ZW5ndGg7XG5cbiAgICAgIGlmIChub2RlU3RhcnQgPD0gb2Zmc2V0ICYmIG5vZGVFbmQgPj0gb2Zm
c2V0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAg
ICBvZmZzZXQ6IG9mZnNldCAtIG5vZGVTdGFydFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAg
ICBub2RlU3RhcnQgPSBub2RlRW5kO1xuICAgIH1cblxuICAgIG5vZGUgPSBnZXRMZWFmTm9kZShn
ZXRTaWJsaW5nTm9kZShub2RlKSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXROb2Rl
Rm9yQ2hhcmFjdGVyT2Zmc2V0O1xuXG4vKioqLyB9KSxcbi8qIDE3MyAqL1xuLyoqKi8gKGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJp
Y3RcIjtcblxuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxudmFy
IGlzVGV4dE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3NCk7XG5cbi8qZXNsaW50LWRpc2Fi
bGUgbm8tYml0d2lzZSAqL1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGdpdmVuIERPTSBub2RlIGNv
bnRhaW5zIG9yIGlzIGFub3RoZXIgRE9NIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGNvbnRhaW5zTm9k
ZShvdXRlck5vZGUsIGlubmVyTm9kZSkge1xuICBpZiAoIW91dGVyTm9kZSB8fCAhaW5uZXJOb2Rl
KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGVsc2UgaWYgKG91dGVyTm9kZSA9PT0gaW5uZXJO
b2RlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNUZXh0Tm9kZShvdXRlck5v
ZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGVsc2UgaWYgKGlzVGV4dE5vZGUoaW5uZXJO
b2RlKSkge1xuICAgIHJldHVybiBjb250YWluc05vZGUob3V0ZXJOb2RlLCBpbm5lck5vZGUucGFy
ZW50Tm9kZSk7XG4gIH0gZWxzZSBpZiAoJ2NvbnRhaW5zJyBpbiBvdXRlck5vZGUpIHtcbiAgICBy
ZXR1cm4gb3V0ZXJOb2RlLmNvbnRhaW5zKGlubmVyTm9kZSk7XG4gIH0gZWxzZSBpZiAob3V0ZXJO
b2RlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSB7XG4gICAgcmV0dXJuICEhKG91dGVyTm9kZS5j
b21wYXJlRG9jdW1lbnRQb3NpdGlvbihpbm5lck5vZGUpICYgMTYpO1xuICB9IGVsc2Uge1xuICAg
IHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnRhaW5zTm9kZTtc
blxuLyoqKi8gfSksXG4vKiAxNzQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuLyoqXG4gKiBD
b3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxudmFyIGlzTm9kZSA9
IF9fd2VicGFja19yZXF1aXJlX18oMTc1KTtcblxuLyoqXG4gKiBAcGFyYW0geyp9IG9iamVjdCBU
aGUgb2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciBvciBub3Qg
dGhlIG9iamVjdCBpcyBhIERPTSB0ZXh0IG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGlzVGV4dE5vZGUo
b2JqZWN0KSB7XG4gIHJldHVybiBpc05vZGUob2JqZWN0KSAmJiBvYmplY3Qubm9kZVR5cGUgPT0g
Mztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1RleHROb2RlO1xuXG4vKioqLyB9KSxcbi8qIDE3
NSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4vKipcbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBv
YmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIG9yIG5vdCB0aGUg
b2JqZWN0IGlzIGEgRE9NIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGlzTm9kZShvYmplY3QpIHtcbiAg
dmFyIGRvYyA9IG9iamVjdCA/IG9iamVjdC5vd25lckRvY3VtZW50IHx8IG9iamVjdCA6IGRvY3Vt
ZW50O1xuICB2YXIgZGVmYXVsdFZpZXcgPSBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICBy
ZXR1cm4gISEob2JqZWN0ICYmICh0eXBlb2YgZGVmYXVsdFZpZXcuTm9kZSA9PT0gJ2Z1bmN0aW9u
JyA/IG9iamVjdCBpbnN0YW5jZW9mIGRlZmF1bHRWaWV3Lk5vZGUgOiB0eXBlb2Ygb2JqZWN0ID09
PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqZWN0Lm5vZGVUeXBlID09PSAnbnVtYmVyJyAmJiB0eXBl
b2Ygb2JqZWN0Lm5vZGVOYW1lID09PSAnc3RyaW5nJykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9
IGlzTm9kZTtcblxuLyoqKi8gfSksXG4vKiAxNzYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipc
biAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBOUyA9IHtcbiAgeGxpbms6ICdo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyxcbiAgeG1sOiAnaHR0cDovL3d3dy53My5vcmcv
WE1MLzE5OTgvbmFtZXNwYWNlJ1xufTtcblxuLy8gV2UgdXNlIGF0dHJpYnV0ZXMgZm9yIGV2ZXJ5
dGhpbmcgU1ZHIHNvIGxldCdzIGF2b2lkIHNvbWUgZHVwbGljYXRpb24gYW5kIHJ1blxuLy8gY29k
ZSBpbnN0ZWFkLlxuLy8gVGhlIGZvbGxvd2luZyBhcmUgYWxsIHNwZWNpZmllZCBpbiB0aGUgSFRN
TCBjb25maWcgYWxyZWFkeSBzbyB3ZSBleGNsdWRlIGhlcmUuXG4vLyAtIGNsYXNzIChhcyBjbGFz
c05hbWUpXG4vLyAtIGNvbG9yXG4vLyAtIGhlaWdodFxuLy8gLSBpZFxuLy8gLSBsYW5nXG4vLyAt
IG1heFxuLy8gLSBtZWRpYVxuLy8gLSBtZXRob2Rcbi8vIC0gbWluXG4vLyAtIG5hbWVcbi8vIC0g
c3R5bGVcbi8vIC0gdGFyZ2V0XG4vLyAtIHR5cGVcbi8vIC0gd2lkdGhcbnZhciBBVFRSUyA9IHtc
biAgYWNjZW50SGVpZ2h0OiAnYWNjZW50LWhlaWdodCcsXG4gIGFjY3VtdWxhdGU6IDAsXG4gIGFk
ZGl0aXZlOiAwLFxuICBhbGlnbm1lbnRCYXNlbGluZTogJ2FsaWdubWVudC1iYXNlbGluZScsXG4g
IGFsbG93UmVvcmRlcjogJ2FsbG93UmVvcmRlcicsXG4gIGFscGhhYmV0aWM6IDAsXG4gIGFtcGxp
dHVkZTogMCxcbiAgYXJhYmljRm9ybTogJ2FyYWJpYy1mb3JtJyxcbiAgYXNjZW50OiAwLFxuICBh
dHRyaWJ1dGVOYW1lOiAnYXR0cmlidXRlTmFtZScsXG4gIGF0dHJpYnV0ZVR5cGU6ICdhdHRyaWJ1
dGVUeXBlJyxcbiAgYXV0b1JldmVyc2U6ICdhdXRvUmV2ZXJzZScsXG4gIGF6aW11dGg6IDAsXG4g
IGJhc2VGcmVxdWVuY3k6ICdiYXNlRnJlcXVlbmN5JyxcbiAgYmFzZVByb2ZpbGU6ICdiYXNlUHJv
ZmlsZScsXG4gIGJhc2VsaW5lU2hpZnQ6ICdiYXNlbGluZS1zaGlmdCcsXG4gIGJib3g6IDAsXG4g
IGJlZ2luOiAwLFxuICBiaWFzOiAwLFxuICBieTogMCxcbiAgY2FsY01vZGU6ICdjYWxjTW9kZScs
XG4gIGNhcEhlaWdodDogJ2NhcC1oZWlnaHQnLFxuICBjbGlwOiAwLFxuICBjbGlwUGF0aDogJ2Ns
aXAtcGF0aCcsXG4gIGNsaXBSdWxlOiAnY2xpcC1ydWxlJyxcbiAgY2xpcFBhdGhVbml0czogJ2Ns
aXBQYXRoVW5pdHMnLFxuICBjb2xvckludGVycG9sYXRpb246ICdjb2xvci1pbnRlcnBvbGF0aW9u
JyxcbiAgY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczogJ2NvbG9yLWludGVycG9sYXRpb24tZmls
dGVycycsXG4gIGNvbG9yUHJvZmlsZTogJ2NvbG9yLXByb2ZpbGUnLFxuICBjb2xvclJlbmRlcmlu
ZzogJ2NvbG9yLXJlbmRlcmluZycsXG4gIGNvbnRlbnRTY3JpcHRUeXBlOiAnY29udGVudFNjcmlw
dFR5cGUnLFxuICBjb250ZW50U3R5bGVUeXBlOiAnY29udGVudFN0eWxlVHlwZScsXG4gIGN1cnNv
cjogMCxcbiAgY3g6IDAsXG4gIGN5OiAwLFxuICBkOiAwLFxuICBkZWNlbGVyYXRlOiAwLFxuICBk
ZXNjZW50OiAwLFxuICBkaWZmdXNlQ29uc3RhbnQ6ICdkaWZmdXNlQ29uc3RhbnQnLFxuICBkaXJl
Y3Rpb246IDAsXG4gIGRpc3BsYXk6IDAsXG4gIGRpdmlzb3I6IDAsXG4gIGRvbWluYW50QmFzZWxp
bmU6ICdkb21pbmFudC1iYXNlbGluZScsXG4gIGR1cjogMCxcbiAgZHg6IDAsXG4gIGR5OiAwLFxu
ICBlZGdlTW9kZTogJ2VkZ2VNb2RlJyxcbiAgZWxldmF0aW9uOiAwLFxuICBlbmFibGVCYWNrZ3Jv
dW5kOiAnZW5hYmxlLWJhY2tncm91bmQnLFxuICBlbmQ6IDAsXG4gIGV4cG9uZW50OiAwLFxuICBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOiAnZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCcsXG4g
IGZpbGw6IDAsXG4gIGZpbGxPcGFjaXR5OiAnZmlsbC1vcGFjaXR5JyxcbiAgZmlsbFJ1bGU6ICdm
aWxsLXJ1bGUnLFxuICBmaWx0ZXI6IDAsXG4gIGZpbHRlclJlczogJ2ZpbHRlclJlcycsXG4gIGZp
bHRlclVuaXRzOiAnZmlsdGVyVW5pdHMnLFxuICBmbG9vZENvbG9yOiAnZmxvb2QtY29sb3InLFxu
ICBmbG9vZE9wYWNpdHk6ICdmbG9vZC1vcGFjaXR5JyxcbiAgZm9jdXNhYmxlOiAwLFxuICBmb250
RmFtaWx5OiAnZm9udC1mYW1pbHknLFxuICBmb250U2l6ZTogJ2ZvbnQtc2l6ZScsXG4gIGZvbnRT
aXplQWRqdXN0OiAnZm9udC1zaXplLWFkanVzdCcsXG4gIGZvbnRTdHJldGNoOiAnZm9udC1zdHJl
dGNoJyxcbiAgZm9udFN0eWxlOiAnZm9udC1zdHlsZScsXG4gIGZvbnRWYXJpYW50OiAnZm9udC12
YXJpYW50JyxcbiAgZm9udFdlaWdodDogJ2ZvbnQtd2VpZ2h0JyxcbiAgZm9ybWF0OiAwLFxuICBm
cm9tOiAwLFxuICBmeDogMCxcbiAgZnk6IDAsXG4gIGcxOiAwLFxuICBnMjogMCxcbiAgZ2x5cGhO
YW1lOiAnZ2x5cGgtbmFtZScsXG4gIGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiAnZ2x5cGgt
b3JpZW50YXRpb24taG9yaXpvbnRhbCcsXG4gIGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbDogJ2ds
eXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJyxcbiAgZ2x5cGhSZWY6ICdnbHlwaFJlZicsXG4gIGdy
YWRpZW50VHJhbnNmb3JtOiAnZ3JhZGllbnRUcmFuc2Zvcm0nLFxuICBncmFkaWVudFVuaXRzOiAn
Z3JhZGllbnRVbml0cycsXG4gIGhhbmdpbmc6IDAsXG4gIGhvcml6QWR2WDogJ2hvcml6LWFkdi14
JyxcbiAgaG9yaXpPcmlnaW5YOiAnaG9yaXotb3JpZ2luLXgnLFxuICBpZGVvZ3JhcGhpYzogMCxc
biAgaW1hZ2VSZW5kZXJpbmc6ICdpbWFnZS1yZW5kZXJpbmcnLFxuICAnaW4nOiAwLFxuICBpbjI6
IDAsXG4gIGludGVyY2VwdDogMCxcbiAgazogMCxcbiAgazE6IDAsXG4gIGsyOiAwLFxuICBrMzog
MCxcbiAgazQ6IDAsXG4gIGtlcm5lbE1hdHJpeDogJ2tlcm5lbE1hdHJpeCcsXG4gIGtlcm5lbFVu
aXRMZW5ndGg6ICdrZXJuZWxVbml0TGVuZ3RoJyxcbiAga2VybmluZzogMCxcbiAga2V5UG9pbnRz
OiAna2V5UG9pbnRzJyxcbiAga2V5U3BsaW5lczogJ2tleVNwbGluZXMnLFxuICBrZXlUaW1lczog
J2tleVRpbWVzJyxcbiAgbGVuZ3RoQWRqdXN0OiAnbGVuZ3RoQWRqdXN0JyxcbiAgbGV0dGVyU3Bh
Y2luZzogJ2xldHRlci1zcGFjaW5nJyxcbiAgbGlnaHRpbmdDb2xvcjogJ2xpZ2h0aW5nLWNvbG9y
JyxcbiAgbGltaXRpbmdDb25lQW5nbGU6ICdsaW1pdGluZ0NvbmVBbmdsZScsXG4gIGxvY2FsOiAw
LFxuICBtYXJrZXJFbmQ6ICdtYXJrZXItZW5kJyxcbiAgbWFya2VyTWlkOiAnbWFya2VyLW1pZCcs
XG4gIG1hcmtlclN0YXJ0OiAnbWFya2VyLXN0YXJ0JyxcbiAgbWFya2VySGVpZ2h0OiAnbWFya2Vy
SGVpZ2h0JyxcbiAgbWFya2VyVW5pdHM6ICdtYXJrZXJVbml0cycsXG4gIG1hcmtlcldpZHRoOiAn
bWFya2VyV2lkdGgnLFxuICBtYXNrOiAwLFxuICBtYXNrQ29udGVudFVuaXRzOiAnbWFza0NvbnRl
bnRVbml0cycsXG4gIG1hc2tVbml0czogJ21hc2tVbml0cycsXG4gIG1hdGhlbWF0aWNhbDogMCxc
biAgbW9kZTogMCxcbiAgbnVtT2N0YXZlczogJ251bU9jdGF2ZXMnLFxuICBvZmZzZXQ6IDAsXG4g
IG9wYWNpdHk6IDAsXG4gIG9wZXJhdG9yOiAwLFxuICBvcmRlcjogMCxcbiAgb3JpZW50OiAwLFxu
ICBvcmllbnRhdGlvbjogMCxcbiAgb3JpZ2luOiAwLFxuICBvdmVyZmxvdzogMCxcbiAgb3Zlcmxp
bmVQb3NpdGlvbjogJ292ZXJsaW5lLXBvc2l0aW9uJyxcbiAgb3ZlcmxpbmVUaGlja25lc3M6ICdv
dmVybGluZS10aGlja25lc3MnLFxuICBwYWludE9yZGVyOiAncGFpbnQtb3JkZXInLFxuICBwYW5v
c2UxOiAncGFub3NlLTEnLFxuICBwYXRoTGVuZ3RoOiAncGF0aExlbmd0aCcsXG4gIHBhdHRlcm5D
b250ZW50VW5pdHM6ICdwYXR0ZXJuQ29udGVudFVuaXRzJyxcbiAgcGF0dGVyblRyYW5zZm9ybTog
J3BhdHRlcm5UcmFuc2Zvcm0nLFxuICBwYXR0ZXJuVW5pdHM6ICdwYXR0ZXJuVW5pdHMnLFxuICBw
b2ludGVyRXZlbnRzOiAncG9pbnRlci1ldmVudHMnLFxuICBwb2ludHM6IDAsXG4gIHBvaW50c0F0
WDogJ3BvaW50c0F0WCcsXG4gIHBvaW50c0F0WTogJ3BvaW50c0F0WScsXG4gIHBvaW50c0F0Wjog
J3BvaW50c0F0WicsXG4gIHByZXNlcnZlQWxwaGE6ICdwcmVzZXJ2ZUFscGhhJyxcbiAgcHJlc2Vy
dmVBc3BlY3RSYXRpbzogJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLFxuICBwcmltaXRpdmVVbml0czog
J3ByaW1pdGl2ZVVuaXRzJyxcbiAgcjogMCxcbiAgcmFkaXVzOiAwLFxuICByZWZYOiAncmVmWCcs
XG4gIHJlZlk6ICdyZWZZJyxcbiAgcmVuZGVyaW5nSW50ZW50OiAncmVuZGVyaW5nLWludGVudCcs
XG4gIHJlcGVhdENvdW50OiAncmVwZWF0Q291bnQnLFxuICByZXBlYXREdXI6ICdyZXBlYXREdXIn
LFxuICByZXF1aXJlZEV4dGVuc2lvbnM6ICdyZXF1aXJlZEV4dGVuc2lvbnMnLFxuICByZXF1aXJl
ZEZlYXR1cmVzOiAncmVxdWlyZWRGZWF0dXJlcycsXG4gIHJlc3RhcnQ6IDAsXG4gIHJlc3VsdDog
MCxcbiAgcm90YXRlOiAwLFxuICByeDogMCxcbiAgcnk6IDAsXG4gIHNjYWxlOiAwLFxuICBzZWVk
OiAwLFxuICBzaGFwZVJlbmRlcmluZzogJ3NoYXBlLXJlbmRlcmluZycsXG4gIHNsb3BlOiAwLFxu
ICBzcGFjaW5nOiAwLFxuICBzcGVjdWxhckNvbnN0YW50OiAnc3BlY3VsYXJDb25zdGFudCcsXG4g
IHNwZWN1bGFyRXhwb25lbnQ6ICdzcGVjdWxhckV4cG9uZW50JyxcbiAgc3BlZWQ6IDAsXG4gIHNw
cmVhZE1ldGhvZDogJ3NwcmVhZE1ldGhvZCcsXG4gIHN0YXJ0T2Zmc2V0OiAnc3RhcnRPZmZzZXQn
LFxuICBzdGREZXZpYXRpb246ICdzdGREZXZpYXRpb24nLFxuICBzdGVtaDogMCxcbiAgc3RlbXY6
IDAsXG4gIHN0aXRjaFRpbGVzOiAnc3RpdGNoVGlsZXMnLFxuICBzdG9wQ29sb3I6ICdzdG9wLWNv
bG9yJyxcbiAgc3RvcE9wYWNpdHk6ICdzdG9wLW9wYWNpdHknLFxuICBzdHJpa2V0aHJvdWdoUG9z
aXRpb246ICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJyxcbiAgc3RyaWtldGhyb3VnaFRoaWNrbmVz
czogJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJyxcbiAgc3RyaW5nOiAwLFxuICBzdHJva2U6IDAs
XG4gIHN0cm9rZURhc2hhcnJheTogJ3N0cm9rZS1kYXNoYXJyYXknLFxuICBzdHJva2VEYXNob2Zm
c2V0OiAnc3Ryb2tlLWRhc2hvZmZzZXQnLFxuICBzdHJva2VMaW5lY2FwOiAnc3Ryb2tlLWxpbmVj
YXAnLFxuICBzdHJva2VMaW5lam9pbjogJ3N0cm9rZS1saW5lam9pbicsXG4gIHN0cm9rZU1pdGVy
bGltaXQ6ICdzdHJva2UtbWl0ZXJsaW1pdCcsXG4gIHN0cm9rZU9wYWNpdHk6ICdzdHJva2Utb3Bh
Y2l0eScsXG4gIHN0cm9rZVdpZHRoOiAnc3Ryb2tlLXdpZHRoJyxcbiAgc3VyZmFjZVNjYWxlOiAn
c3VyZmFjZVNjYWxlJyxcbiAgc3lzdGVtTGFuZ3VhZ2U6ICdzeXN0ZW1MYW5ndWFnZScsXG4gIHRh
YmxlVmFsdWVzOiAndGFibGVWYWx1ZXMnLFxuICB0YXJnZXRYOiAndGFyZ2V0WCcsXG4gIHRhcmdl
dFk6ICd0YXJnZXRZJyxcbiAgdGV4dEFuY2hvcjogJ3RleHQtYW5jaG9yJyxcbiAgdGV4dERlY29y
YXRpb246ICd0ZXh0LWRlY29yYXRpb24nLFxuICB0ZXh0UmVuZGVyaW5nOiAndGV4dC1yZW5kZXJp
bmcnLFxuICB0ZXh0TGVuZ3RoOiAndGV4dExlbmd0aCcsXG4gIHRvOiAwLFxuICB0cmFuc2Zvcm06
IDAsXG4gIHUxOiAwLFxuICB1MjogMCxcbiAgdW5kZXJsaW5lUG9zaXRpb246ICd1bmRlcmxpbmUt
cG9zaXRpb24nLFxuICB1bmRlcmxpbmVUaGlja25lc3M6ICd1bmRlcmxpbmUtdGhpY2tuZXNzJyxc
biAgdW5pY29kZTogMCxcbiAgdW5pY29kZUJpZGk6ICd1bmljb2RlLWJpZGknLFxuICB1bmljb2Rl
UmFuZ2U6ICd1bmljb2RlLXJhbmdlJyxcbiAgdW5pdHNQZXJFbTogJ3VuaXRzLXBlci1lbScsXG4g
IHZBbHBoYWJldGljOiAndi1hbHBoYWJldGljJyxcbiAgdkhhbmdpbmc6ICd2LWhhbmdpbmcnLFxu
ICB2SWRlb2dyYXBoaWM6ICd2LWlkZW9ncmFwaGljJyxcbiAgdk1hdGhlbWF0aWNhbDogJ3YtbWF0
aGVtYXRpY2FsJyxcbiAgdmFsdWVzOiAwLFxuICB2ZWN0b3JFZmZlY3Q6ICd2ZWN0b3ItZWZmZWN0
JyxcbiAgdmVyc2lvbjogMCxcbiAgdmVydEFkdlk6ICd2ZXJ0LWFkdi15JyxcbiAgdmVydE9yaWdp
blg6ICd2ZXJ0LW9yaWdpbi14JyxcbiAgdmVydE9yaWdpblk6ICd2ZXJ0LW9yaWdpbi15JyxcbiAg
dmlld0JveDogJ3ZpZXdCb3gnLFxuICB2aWV3VGFyZ2V0OiAndmlld1RhcmdldCcsXG4gIHZpc2li
aWxpdHk6IDAsXG4gIHdpZHRoczogMCxcbiAgd29yZFNwYWNpbmc6ICd3b3JkLXNwYWNpbmcnLFxu
ICB3cml0aW5nTW9kZTogJ3dyaXRpbmctbW9kZScsXG4gIHg6IDAsXG4gIHhIZWlnaHQ6ICd4LWhl
aWdodCcsXG4gIHgxOiAwLFxuICB4MjogMCxcbiAgeENoYW5uZWxTZWxlY3RvcjogJ3hDaGFubmVs
U2VsZWN0b3InLFxuICB4bGlua0FjdHVhdGU6ICd4bGluazphY3R1YXRlJyxcbiAgeGxpbmtBcmNy
b2xlOiAneGxpbms6YXJjcm9sZScsXG4gIHhsaW5rSHJlZjogJ3hsaW5rOmhyZWYnLFxuICB4bGlu
a1JvbGU6ICd4bGluazpyb2xlJyxcbiAgeGxpbmtTaG93OiAneGxpbms6c2hvdycsXG4gIHhsaW5r
VGl0bGU6ICd4bGluazp0aXRsZScsXG4gIHhsaW5rVHlwZTogJ3hsaW5rOnR5cGUnLFxuICB4bWxC
YXNlOiAneG1sOmJhc2UnLFxuICB4bWxuczogMCxcbiAgeG1sbnNYbGluazogJ3htbG5zOnhsaW5r
JyxcbiAgeG1sTGFuZzogJ3htbDpsYW5nJyxcbiAgeG1sU3BhY2U6ICd4bWw6c3BhY2UnLFxuICB5
OiAwLFxuICB5MTogMCxcbiAgeTI6IDAsXG4gIHlDaGFubmVsU2VsZWN0b3I6ICd5Q2hhbm5lbFNl
bGVjdG9yJyxcbiAgejogMCxcbiAgem9vbUFuZFBhbjogJ3pvb21BbmRQYW4nXG59O1xuXG52YXIg
U1ZHRE9NUHJvcGVydHlDb25maWcgPSB7XG4gIFByb3BlcnRpZXM6IHt9LFxuICBET01BdHRyaWJ1
dGVOYW1lc3BhY2VzOiB7XG4gICAgeGxpbmtBY3R1YXRlOiBOUy54bGluayxcbiAgICB4bGlua0Fy
Y3JvbGU6IE5TLnhsaW5rLFxuICAgIHhsaW5rSHJlZjogTlMueGxpbmssXG4gICAgeGxpbmtSb2xl
OiBOUy54bGluayxcbiAgICB4bGlua1Nob3c6IE5TLnhsaW5rLFxuICAgIHhsaW5rVGl0bGU6IE5T
LnhsaW5rLFxuICAgIHhsaW5rVHlwZTogTlMueGxpbmssXG4gICAgeG1sQmFzZTogTlMueG1sLFxu
ICAgIHhtbExhbmc6IE5TLnhtbCxcbiAgICB4bWxTcGFjZTogTlMueG1sXG4gIH0sXG4gIERPTUF0
dHJpYnV0ZU5hbWVzOiB7fVxufTtcblxuT2JqZWN0LmtleXMoQVRUUlMpLmZvckVhY2goZnVuY3Rp
b24gKGtleSkge1xuICBTVkdET01Qcm9wZXJ0eUNvbmZpZy5Qcm9wZXJ0aWVzW2tleV0gPSAwO1xu
ICBpZiAoQVRUUlNba2V5XSkge1xuICAgIFNWR0RPTVByb3BlcnR5Q29uZmlnLkRPTUF0dHJpYnV0
ZU5hbWVzW2tleV0gPSBBVFRSU1trZXldO1xuICB9XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBT
VkdET01Qcm9wZXJ0eUNvbmZpZztcblxuLyoqKi8gfSksXG4vKiAxNzcgKi9cbi8qKiovIChmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3Ry
aWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBFdmVudFBy
b3BhZ2F0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7XG52YXIgRXhlY3V0aW9uRW52aXJv
bm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJl
ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG52YXIgUmVhY3RJbnB1dFNlbGVjdGlvbiA9IF9f
d2VicGFja19yZXF1aXJlX18oODApO1xudmFyIFN5bnRoZXRpY0V2ZW50ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxMSk7XG5cbnZhciBnZXRBY3RpdmVFbGVtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg4MSk7XG52YXIgaXNUZXh0SW5wdXRFbGVtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NSk7
XG52YXIgc2hhbGxvd0VxdWFsID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cbnZhciBza2lw
U2VsZWN0aW9uQ2hhbmdlRXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYg
J2RvY3VtZW50TW9kZScgaW4gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDw9IDEx
O1xuXG52YXIgZXZlbnRUeXBlcyA9IHtcbiAgc2VsZWN0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6ICdvblNlbGVjdCcsXG4gICAgICBjYXB0dXJlZDog
J29uU2VsZWN0Q2FwdHVyZSdcbiAgICB9LFxuICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywg
J3RvcENvbnRleHRNZW51JywgJ3RvcEZvY3VzJywgJ3RvcEtleURvd24nLCAndG9wS2V5VXAnLCAn
dG9wTW91c2VEb3duJywgJ3RvcE1vdXNlVXAnLCAndG9wU2VsZWN0aW9uQ2hhbmdlJ11cbiAgfVxu
fTtcblxudmFyIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xudmFyIGFjdGl2ZUVsZW1lbnRJbnN0ID0g
bnVsbDtcbnZhciBsYXN0U2VsZWN0aW9uID0gbnVsbDtcbnZhciBtb3VzZURvd24gPSBmYWxzZTtc
blxuLy8gVHJhY2sgd2hldGhlciBhIGxpc3RlbmVyIGV4aXN0cyBmb3IgdGhpcyBwbHVnaW4uIElm
IG5vbmUgZXhpc3QsIHdlIGRvXG4vLyBub3QgZXh0cmFjdCBldmVudHMuIFNlZSAjMzYzOS5cbnZh
ciBoYXNMaXN0ZW5lciA9IGZhbHNlO1xuXG4vKipcbiAqIEdldCBhbiBvYmplY3Qgd2hpY2ggaXMg
YSB1bmlxdWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLlxuICpcbiAq
IFRoZSByZXR1cm4gdmFsdWUgd2lsbCBub3QgYmUgY29uc2lzdGVudCBhY3Jvc3Mgbm9kZXMgb3Ig
YnJvd3NlcnMsIGJ1dFxuICogdHdvIGlkZW50aWNhbCBzZWxlY3Rpb25zIG9uIHRoZSBzYW1lIG5v
ZGUgd2lsbCByZXR1cm4gaWRlbnRpY2FsIG9iamVjdHMuXG4gKlxuICogQHBhcmFtIHtET01FbGVt
ZW50fSBub2RlXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldFNlbGVjdGlv
bihub2RlKSB7XG4gIGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIG5vZGUgJiYgUmVhY3RJbnB1dFNl
bGVjdGlvbi5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMobm9kZSkpIHtcbiAgICByZXR1cm4ge1xu
ICAgICAgc3RhcnQ6IG5vZGUuc2VsZWN0aW9uU3RhcnQsXG4gICAgICBlbmQ6IG5vZGUuc2VsZWN0
aW9uRW5kXG4gICAgfTtcbiAgfSBlbHNlIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7XG4gICAg
dmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICByZXR1cm4ge1xuICAg
ICAgYW5jaG9yTm9kZTogc2VsZWN0aW9uLmFuY2hvck5vZGUsXG4gICAgICBhbmNob3JPZmZzZXQ6
IHNlbGVjdGlvbi5hbmNob3JPZmZzZXQsXG4gICAgICBmb2N1c05vZGU6IHNlbGVjdGlvbi5mb2N1
c05vZGUsXG4gICAgICBmb2N1c09mZnNldDogc2VsZWN0aW9uLmZvY3VzT2Zmc2V0XG4gICAgfTtc
biAgfSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24pIHtcbiAgICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtcbiAgICByZXR1cm4ge1xuICAgICAgcGFyZW50
RWxlbWVudDogcmFuZ2UucGFyZW50RWxlbWVudCgpLFxuICAgICAgdGV4dDogcmFuZ2UudGV4dCxc
biAgICAgIHRvcDogcmFuZ2UuYm91bmRpbmdUb3AsXG4gICAgICBsZWZ0OiByYW5nZS5ib3VuZGlu
Z0xlZnRcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogUG9sbCBzZWxlY3Rpb24gdG8gc2VlIHdo
ZXRoZXIgaXQncyBjaGFuZ2VkLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudFxu
ICogQHJldHVybiB7P1N5bnRoZXRpY0V2ZW50fVxuICovXG5mdW5jdGlvbiBjb25zdHJ1Y3RTZWxl
Y3RFdmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgLy8gRW5zdXJlIHdl
IGhhdmUgdGhlIHJpZ2h0IGVsZW1lbnQsIGFuZCB0aGF0IHRoZSB1c2VyIGlzIG5vdCBkcmFnZ2lu
ZyBhXG4gIC8vIHNlbGVjdGlvbiAodGhpcyBtYXRjaGVzIG5hdGl2ZSBgc2VsZWN0YCBldmVudCBi
ZWhhdmlvcikuIEluIEhUTUw1LCBzZWxlY3RcbiAgLy8gZmlyZXMgb25seSBvbiBpbnB1dCBhbmQg
dGV4dGFyZWEgdGh1cyBpZiB0aGVyZSdzIG5vIGZvY3VzZWQgZWxlbWVudCB3ZVxuICAvLyB3b24n
dCBkaXNwYXRjaC5cbiAgaWYgKG1vdXNlRG93biB8fCBhY3RpdmVFbGVtZW50ID09IG51bGwgfHwg
YWN0aXZlRWxlbWVudCAhPT0gZ2V0QWN0aXZlRWxlbWVudCgpKSB7XG4gICAgcmV0dXJuIG51bGw7
XG4gIH1cblxuICAvLyBPbmx5IGZpcmUgd2hlbiBzZWxlY3Rpb24gaGFzIGFjdHVhbGx5IGNoYW5n
ZWQuXG4gIHZhciBjdXJyZW50U2VsZWN0aW9uID0gZ2V0U2VsZWN0aW9uKGFjdGl2ZUVsZW1lbnQp
O1xuICBpZiAoIWxhc3RTZWxlY3Rpb24gfHwgIXNoYWxsb3dFcXVhbChsYXN0U2VsZWN0aW9uLCBj
dXJyZW50U2VsZWN0aW9uKSkge1xuICAgIGxhc3RTZWxlY3Rpb24gPSBjdXJyZW50U2VsZWN0aW9u
O1xuXG4gICAgdmFyIHN5bnRoZXRpY0V2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0UG9vbGVkKGV2
ZW50VHlwZXMuc2VsZWN0LCBhY3RpdmVFbGVtZW50SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2
ZW50VGFyZ2V0KTtcblxuICAgIHN5bnRoZXRpY0V2ZW50LnR5cGUgPSAnc2VsZWN0JztcbiAgICBz
eW50aGV0aWNFdmVudC50YXJnZXQgPSBhY3RpdmVFbGVtZW50O1xuXG4gICAgRXZlbnRQcm9wYWdh
dG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHN5bnRoZXRpY0V2ZW50KTtcblxuICAg
IHJldHVybiBzeW50aGV0aWNFdmVudDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipc
biAqIFRoaXMgcGx1Z2luIGNyZWF0ZXMgYW4gYG9uU2VsZWN0YCBldmVudCB0aGF0IG5vcm1hbGl6
ZXMgc2VsZWN0IGV2ZW50c1xuICogYWNyb3NzIGZvcm0gZWxlbWVudHMuXG4gKlxuICogU3VwcG9y
dGVkIGVsZW1lbnRzIGFyZTpcbiAqIC0gaW5wdXQgKHNlZSBgaXNUZXh0SW5wdXRFbGVtZW50YClc
biAqIC0gdGV4dGFyZWFcbiAqIC0gY29udGVudEVkaXRhYmxlXG4gKlxuICogVGhpcyBkaWZmZXJz
IGZyb20gbmF0aXZlIGJyb3dzZXIgaW1wbGVtZW50YXRpb25zIGluIHRoZSBmb2xsb3dpbmcgd2F5
czpcbiAqIC0gRmlyZXMgb24gY29udGVudEVkaXRhYmxlIGZpZWxkcyBhcyB3ZWxsIGFzIGlucHV0
cy5cbiAqIC0gRmlyZXMgZm9yIGNvbGxhcHNlZCBzZWxlY3Rpb24uXG4gKiAtIEZpcmVzIGFmdGVy
IHVzZXIgaW5wdXQuXG4gKi9cbnZhciBTZWxlY3RFdmVudFBsdWdpbiA9IHtcbiAgZXZlbnRUeXBl
czogZXZlbnRUeXBlcyxcblxuICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBl
LCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICBpZiAo
IWhhc0xpc3RlbmVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgdGFy
Z2V0Tm9kZSA9IHRhcmdldEluc3QgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21J
bnN0YW5jZSh0YXJnZXRJbnN0KSA6IHdpbmRvdztcblxuICAgIHN3aXRjaCAodG9wTGV2ZWxUeXBl
KSB7XG4gICAgICAvLyBUcmFjayB0aGUgaW5wdXQgbm9kZSB0aGF0IGhhcyBmb2N1cy5cbiAgICAg
IGNhc2UgJ3RvcEZvY3VzJzpcbiAgICAgICAgaWYgKGlzVGV4dElucHV0RWxlbWVudCh0YXJnZXRO
b2RlKSB8fCB0YXJnZXROb2RlLmNvbnRlbnRFZGl0YWJsZSA9PT0gJ3RydWUnKSB7XG4gICAgICAg
ICAgYWN0aXZlRWxlbWVudCA9IHRhcmdldE5vZGU7XG4gICAgICAgICAgYWN0aXZlRWxlbWVudElu
c3QgPSB0YXJnZXRJbnN0O1xuICAgICAgICAgIGxhc3RTZWxlY3Rpb24gPSBudWxsO1xuICAgICAg
ICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wQmx1cic6XG4gICAgICAgIGFjdGl2
ZUVsZW1lbnQgPSBudWxsO1xuICAgICAgICBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7XG4gICAg
ICAgIGxhc3RTZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIERvbid0
IGZpcmUgdGhlIGV2ZW50IHdoaWxlIHRoZSB1c2VyIGlzIGRyYWdnaW5nLiBUaGlzIG1hdGNoZXMg
dGhlXG4gICAgICAvLyBzZW1hbnRpY3Mgb2YgdGhlIG5hdGl2ZSBzZWxlY3QgZXZlbnQuXG4gICAg
ICBjYXNlICd0b3BNb3VzZURvd24nOlxuICAgICAgICBtb3VzZURvd24gPSB0cnVlO1xuICAgICAg
ICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcENvbnRleHRNZW51JzpcbiAgICAgIGNhc2UgJ3RvcE1v
dXNlVXAnOlxuICAgICAgICBtb3VzZURvd24gPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGNvbnN0
cnVjdFNlbGVjdEV2ZW50KG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgICAv
LyBDaHJvbWUgYW5kIElFIGZpcmUgbm9uLXN0YW5kYXJkIGV2ZW50IHdoZW4gc2VsZWN0aW9uIGlz
IGNoYW5nZWQgKGFuZFxuICAgICAgLy8gc29tZXRpbWVzIHdoZW4gaXQgaGFzbid0KS4gSUUncyBl
dmVudCBmaXJlcyBvdXQgb2Ygb3JkZXIgd2l0aCByZXNwZWN0XG4gICAgICAvLyB0byBrZXkgYW5k
IGlucHV0IGV2ZW50cyBvbiBkZWxldGlvbiwgc28gd2UgZGlzY2FyZCBpdC5cbiAgICAgIC8vXG4g
ICAgICAvLyBGaXJlZm94IGRvZXNuJ3Qgc3VwcG9ydCBzZWxlY3Rpb25jaGFuZ2UsIHNvIGNoZWNr
IHNlbGVjdGlvbiBzdGF0dXNcbiAgICAgIC8vIGFmdGVyIGVhY2gga2V5IGVudHJ5LiBUaGUgc2Vs
ZWN0aW9uIGNoYW5nZXMgYWZ0ZXIga2V5ZG93biBhbmQgYmVmb3JlXG4gICAgICAvLyBrZXl1cCwg
YnV0IHdlIGNoZWNrIG9uIGtleWRvd24gYXMgd2VsbCBpbiB0aGUgY2FzZSBvZiBob2xkaW5nIGRv
d24gYVxuICAgICAgLy8ga2V5LCB3aGVuIG11bHRpcGxlIGtleWRvd24gZXZlbnRzIGFyZSBmaXJl
ZCBidXQgb25seSBvbmUga2V5dXAgaXMuXG4gICAgICAvLyBUaGlzIGlzIGFsc28gb3VyIGFwcHJv
YWNoIGZvciBJRSBoYW5kbGluZywgZm9yIHRoZSByZWFzb24gYWJvdmUuXG4gICAgICBjYXNlICd0
b3BTZWxlY3Rpb25DaGFuZ2UnOlxuICAgICAgICBpZiAoc2tpcFNlbGVjdGlvbkNoYW5nZUV2ZW50
KSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIC8vIGZhbGxzIHRocm91Z2hc
biAgICAgIGNhc2UgJ3RvcEtleURvd24nOlxuICAgICAgY2FzZSAndG9wS2V5VXAnOlxuICAgICAg
ICByZXR1cm4gY29uc3RydWN0U2VsZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcblxuICBkaWRQdXRMaXN0ZW5l
cjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7XG4gICAgaWYg
KHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdvblNlbGVjdCcpIHtcbiAgICAgIGhhc0xpc3RlbmVyID0g
dHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gU2VsZWN0RXZlbnRQbHVn
aW47XG5cbi8qKiovIH0pLFxuLyogMTc4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuXG5cbnZhciBfcHJvZEludmFyaWFudCA9IF9f
d2VicGFja19yZXF1aXJlX18oMik7XG5cbnZhciBFdmVudExpc3RlbmVyID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg3OSk7XG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18o
MTkpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7
XG52YXIgU3ludGhldGljQW5pbWF0aW9uRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3OSk7
XG52YXIgU3ludGhldGljQ2xpcGJvYXJkRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4MCk7
XG52YXIgU3ludGhldGljRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcbnZhciBTeW50
aGV0aWNGb2N1c0V2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODEpO1xudmFyIFN5bnRoZXRp
Y0tleWJvYXJkRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4Mik7XG52YXIgU3ludGhldGlj
TW91c2VFdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMjUpO1xudmFyIFN5bnRoZXRpY0RyYWdF
dmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTg0KTtcbnZhciBTeW50aGV0aWNUb3VjaEV2ZW50
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODUpO1xudmFyIFN5bnRoZXRpY1RyYW5zaXRpb25FdmVu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTg2KTtcbnZhciBTeW50aGV0aWNVSUV2ZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyMSk7XG52YXIgU3ludGhldGljV2hlZWxFdmVudCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTg3KTtcblxudmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDYpO1xudmFyIGdldEV2ZW50Q2hhckNvZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ3KTtc
bnZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG4vKipcbiAqIFR1cm5z
XG4gKiBbJ2Fib3J0JywgLi4uXVxuICogaW50b1xuICogZXZlbnRUeXBlcyA9IHtcbiAqICAgJ2Fi
b3J0Jzoge1xuICogICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gKiAgICAgICBidWJi
bGVkOiAnb25BYm9ydCcsXG4gKiAgICAgICBjYXB0dXJlZDogJ29uQWJvcnRDYXB0dXJlJyxcbiAq
ICAgICB9LFxuICogICAgIGRlcGVuZGVuY2llczogWyd0b3BBYm9ydCddLFxuICogICB9LFxuICog
ICAuLi5cbiAqIH07XG4gKiB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWcgPSB7XG4gKiAg
ICd0b3BBYm9ydCc6IHsgc2FtZUNvbmZpZyB9XG4gKiB9O1xuICovXG52YXIgZXZlbnRUeXBlcyA9
IHt9O1xudmFyIHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZyA9IHt9O1xuWydhYm9ydCcs
ICdhbmltYXRpb25FbmQnLCAnYW5pbWF0aW9uSXRlcmF0aW9uJywgJ2FuaW1hdGlvblN0YXJ0Jywg
J2JsdXInLCAnY2FuUGxheScsICdjYW5QbGF5VGhyb3VnaCcsICdjbGljaycsICdjb250ZXh0TWVu
dScsICdjb3B5JywgJ2N1dCcsICdkb3VibGVDbGljaycsICdkcmFnJywgJ2RyYWdFbmQnLCAnZHJh
Z0VudGVyJywgJ2RyYWdFeGl0JywgJ2RyYWdMZWF2ZScsICdkcmFnT3ZlcicsICdkcmFnU3RhcnQn
LCAnZHJvcCcsICdkdXJhdGlvbkNoYW5nZScsICdlbXB0aWVkJywgJ2VuY3J5cHRlZCcsICdlbmRl
ZCcsICdlcnJvcicsICdmb2N1cycsICdpbnB1dCcsICdpbnZhbGlkJywgJ2tleURvd24nLCAna2V5
UHJlc3MnLCAna2V5VXAnLCAnbG9hZCcsICdsb2FkZWREYXRhJywgJ2xvYWRlZE1ldGFkYXRhJywg
J2xvYWRTdGFydCcsICdtb3VzZURvd24nLCAnbW91c2VNb3ZlJywgJ21vdXNlT3V0JywgJ21vdXNl
T3ZlcicsICdtb3VzZVVwJywgJ3Bhc3RlJywgJ3BhdXNlJywgJ3BsYXknLCAncGxheWluZycsICdw
cm9ncmVzcycsICdyYXRlQ2hhbmdlJywgJ3Jlc2V0JywgJ3Njcm9sbCcsICdzZWVrZWQnLCAnc2Vl
a2luZycsICdzdGFsbGVkJywgJ3N1Ym1pdCcsICdzdXNwZW5kJywgJ3RpbWVVcGRhdGUnLCAndG91
Y2hDYW5jZWwnLCAndG91Y2hFbmQnLCAndG91Y2hNb3ZlJywgJ3RvdWNoU3RhcnQnLCAndHJhbnNp
dGlvbkVuZCcsICd2b2x1bWVDaGFuZ2UnLCAnd2FpdGluZycsICd3aGVlbCddLmZvckVhY2goZnVu
Y3Rpb24gKGV2ZW50KSB7XG4gIHZhciBjYXBpdGFsaXplZEV2ZW50ID0gZXZlbnRbMF0udG9VcHBl
ckNhc2UoKSArIGV2ZW50LnNsaWNlKDEpO1xuICB2YXIgb25FdmVudCA9ICdvbicgKyBjYXBpdGFs
aXplZEV2ZW50O1xuICB2YXIgdG9wRXZlbnQgPSAndG9wJyArIGNhcGl0YWxpemVkRXZlbnQ7XG5c
biAgdmFyIHR5cGUgPSB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1
YmJsZWQ6IG9uRXZlbnQsXG4gICAgICBjYXB0dXJlZDogb25FdmVudCArICdDYXB0dXJlJ1xuICAg
IH0sXG4gICAgZGVwZW5kZW5jaWVzOiBbdG9wRXZlbnRdXG4gIH07XG4gIGV2ZW50VHlwZXNbZXZl
bnRdID0gdHlwZTtcbiAgdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnW3RvcEV2ZW50XSA9
IHR5cGU7XG59KTtcblxudmFyIG9uQ2xpY2tMaXN0ZW5lcnMgPSB7fTtcblxuZnVuY3Rpb24gZ2V0
RGljdGlvbmFyeUtleShpbnN0KSB7XG4gIC8vIFByZXZlbnRzIFY4IHBlcmZvcm1hbmNlIGlzc3Vl
OlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MjMyXG4gIHJl
dHVybiAnLicgKyBpbnN0Ll9yb290Tm9kZUlEO1xufVxuXG5mdW5jdGlvbiBpc0ludGVyYWN0aXZl
KHRhZykge1xuICByZXR1cm4gdGFnID09PSAnYnV0dG9uJyB8fCB0YWcgPT09ICdpbnB1dCcgfHwg
dGFnID09PSAnc2VsZWN0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYSc7XG59XG5cbnZhciBTaW1wbGVF
dmVudFBsdWdpbiA9IHtcbiAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblxuICBleHRyYWN0RXZl
bnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpIHtcbiAgICB2YXIgZGlzcGF0Y2hDb25maWcgPSB0b3BMZXZlbEV2ZW50
c1RvRGlzcGF0Y2hDb25maWdbdG9wTGV2ZWxUeXBlXTtcbiAgICBpZiAoIWRpc3BhdGNoQ29uZmln
KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIEV2ZW50Q29uc3RydWN0b3I7
XG4gICAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ3RvcEFib3J0JzpcbiAg
ICAgIGNhc2UgJ3RvcENhblBsYXknOlxuICAgICAgY2FzZSAndG9wQ2FuUGxheVRocm91Z2gnOlxu
ICAgICAgY2FzZSAndG9wRHVyYXRpb25DaGFuZ2UnOlxuICAgICAgY2FzZSAndG9wRW1wdGllZCc6
XG4gICAgICBjYXNlICd0b3BFbmNyeXB0ZWQnOlxuICAgICAgY2FzZSAndG9wRW5kZWQnOlxuICAg
ICAgY2FzZSAndG9wRXJyb3InOlxuICAgICAgY2FzZSAndG9wSW5wdXQnOlxuICAgICAgY2FzZSAn
dG9wSW52YWxpZCc6XG4gICAgICBjYXNlICd0b3BMb2FkJzpcbiAgICAgIGNhc2UgJ3RvcExvYWRl
ZERhdGEnOlxuICAgICAgY2FzZSAndG9wTG9hZGVkTWV0YWRhdGEnOlxuICAgICAgY2FzZSAndG9w
TG9hZFN0YXJ0JzpcbiAgICAgIGNhc2UgJ3RvcFBhdXNlJzpcbiAgICAgIGNhc2UgJ3RvcFBsYXkn
OlxuICAgICAgY2FzZSAndG9wUGxheWluZyc6XG4gICAgICBjYXNlICd0b3BQcm9ncmVzcyc6XG4g
ICAgICBjYXNlICd0b3BSYXRlQ2hhbmdlJzpcbiAgICAgIGNhc2UgJ3RvcFJlc2V0JzpcbiAgICAg
IGNhc2UgJ3RvcFNlZWtlZCc6XG4gICAgICBjYXNlICd0b3BTZWVraW5nJzpcbiAgICAgIGNhc2Ug
J3RvcFN0YWxsZWQnOlxuICAgICAgY2FzZSAndG9wU3VibWl0JzpcbiAgICAgIGNhc2UgJ3RvcFN1
c3BlbmQnOlxuICAgICAgY2FzZSAndG9wVGltZVVwZGF0ZSc6XG4gICAgICBjYXNlICd0b3BWb2x1
bWVDaGFuZ2UnOlxuICAgICAgY2FzZSAndG9wV2FpdGluZyc6XG4gICAgICAgIC8vIEhUTUwgRXZl
bnRzXG4gICAgICAgIC8vIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvaW5kZXguaHRt
bCNldmVudHMtMFxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljRXZlbnQ7XG4g
ICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wS2V5UHJlc3MnOlxuICAgICAgICAvLyBGaXJl
Zm94IGNyZWF0ZXMgYSBrZXlwcmVzcyBldmVudCBmb3IgZnVuY3Rpb24ga2V5cyB0b28uIFRoaXMg
cmVtb3Zlc1xuICAgICAgICAvLyB0aGUgdW53YW50ZWQga2V5cHJlc3MgZXZlbnRzLiBFbnRlciBp
cyBob3dldmVyIGJvdGggcHJpbnRhYmxlIGFuZFxuICAgICAgICAvLyBub24tcHJpbnRhYmxlLiBP
bmUgd291bGQgZXhwZWN0IFRhYiB0byBiZSBhcyB3ZWxsIChidXQgaXQgaXNuJ3QpLlxuICAgICAg
ICBpZiAoZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCkgPT09IDApIHtcbiAgICAgICAgICBy
ZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAg
Y2FzZSAndG9wS2V5RG93bic6XG4gICAgICBjYXNlICd0b3BLZXlVcCc6XG4gICAgICAgIEV2ZW50
Q29uc3RydWN0b3IgPSBTeW50aGV0aWNLZXlib2FyZEV2ZW50O1xuICAgICAgICBicmVhaztcbiAg
ICAgIGNhc2UgJ3RvcEJsdXInOlxuICAgICAgY2FzZSAndG9wRm9jdXMnOlxuICAgICAgICBFdmVu
dENvbnN0cnVjdG9yID0gU3ludGhldGljRm9jdXNFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAg
ICBjYXNlICd0b3BDbGljayc6XG4gICAgICAgIC8vIEZpcmVmb3ggY3JlYXRlcyBhIGNsaWNrIGV2
ZW50IG9uIHJpZ2h0IG1vdXNlIGNsaWNrcy4gVGhpcyByZW1vdmVzIHRoZVxuICAgICAgICAvLyB1
bndhbnRlZCBjbGljayBldmVudHMuXG4gICAgICAgIGlmIChuYXRpdmVFdmVudC5idXR0b24gPT09
IDIpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgLyogZmFsbHMg
dGhyb3VnaCAqL1xuICAgICAgY2FzZSAndG9wRG91YmxlQ2xpY2snOlxuICAgICAgY2FzZSAndG9w
TW91c2VEb3duJzpcbiAgICAgIGNhc2UgJ3RvcE1vdXNlTW92ZSc6XG4gICAgICBjYXNlICd0b3BN
b3VzZVVwJzpcbiAgICAgIC8vIFRPRE86IERpc2FibGVkIGVsZW1lbnRzIHNob3VsZCBub3QgcmVz
cG9uZCB0byBtb3VzZSBldmVudHNcbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNh
c2UgJ3RvcE1vdXNlT3V0JzpcbiAgICAgIGNhc2UgJ3RvcE1vdXNlT3Zlcic6XG4gICAgICBjYXNl
ICd0b3BDb250ZXh0TWVudSc6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNN
b3VzZUV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcERyYWcnOlxuICAgICAg
Y2FzZSAndG9wRHJhZ0VuZCc6XG4gICAgICBjYXNlICd0b3BEcmFnRW50ZXInOlxuICAgICAgY2Fz
ZSAndG9wRHJhZ0V4aXQnOlxuICAgICAgY2FzZSAndG9wRHJhZ0xlYXZlJzpcbiAgICAgIGNhc2Ug
J3RvcERyYWdPdmVyJzpcbiAgICAgIGNhc2UgJ3RvcERyYWdTdGFydCc6XG4gICAgICBjYXNlICd0
b3BEcm9wJzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0RyYWdFdmVudDtc
biAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3BUb3VjaENhbmNlbCc6XG4gICAgICBjYXNl
ICd0b3BUb3VjaEVuZCc6XG4gICAgICBjYXNlICd0b3BUb3VjaE1vdmUnOlxuICAgICAgY2FzZSAn
dG9wVG91Y2hTdGFydCc6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNUb3Vj
aEV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcEFuaW1hdGlvbkVuZCc6XG4g
ICAgICBjYXNlICd0b3BBbmltYXRpb25JdGVyYXRpb24nOlxuICAgICAgY2FzZSAndG9wQW5pbWF0
aW9uU3RhcnQnOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljQW5pbWF0aW9u
RXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wVHJhbnNpdGlvbkVuZCc6XG4g
ICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQ7XG4gICAg
ICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wU2Nyb2xsJzpcbiAgICAgICAgRXZlbnRDb25zdHJ1
Y3RvciA9IFN5bnRoZXRpY1VJRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9w
V2hlZWwnOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljV2hlZWxFdmVudDtc
biAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3BDb3B5JzpcbiAgICAgIGNhc2UgJ3RvcEN1
dCc6XG4gICAgICBjYXNlICd0b3BQYXN0ZSc6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBT
eW50aGV0aWNDbGlwYm9hcmRFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgICFFdmVu
dENvbnN0cnVjdG9yID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnU2ltcGxlRXZlbnRQbHVn
aW46IFVuaGFuZGxlZCBldmVudCB0eXBlLCBgJXNgLicsIHRvcExldmVsVHlwZSkgOiBfcHJvZElu
dmFyaWFudCgnODYnLCB0b3BMZXZlbFR5cGUpIDogdm9pZCAwO1xuICAgIHZhciBldmVudCA9IEV2
ZW50Q29uc3RydWN0b3IuZ2V0UG9vbGVkKGRpc3BhdGNoQ29uZmlnLCB0YXJnZXRJbnN0LCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11
bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7XG4gICAgcmV0dXJuIGV2ZW50O1xuICB9LFxu
XG4gIGRpZFB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlz
dGVuZXIpIHtcbiAgICAvLyBNb2JpbGUgU2FmYXJpIGRvZXMgbm90IGZpcmUgcHJvcGVybHkgYnVi
YmxlIGNsaWNrIGV2ZW50cyBvblxuICAgIC8vIG5vbi1pbnRlcmFjdGl2ZSBlbGVtZW50cywgd2hp
Y2ggbWVhbnMgZGVsZWdhdGVkIGNsaWNrIGxpc3RlbmVycyBkbyBub3RcbiAgICAvLyBmaXJlLiBU
aGUgd29ya2Fyb3VuZCBmb3IgdGhpcyBidWcgaW52b2x2ZXMgYXR0YWNoaW5nIGFuIGVtcHR5IGNs
aWNrXG4gICAgLy8gbGlzdGVuZXIgb24gdGhlIHRhcmdldCBub2RlLlxuICAgIC8vIGh0dHA6Ly93
d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDEwLzA5L2NsaWNrX2V2ZW50X2RlbC5o
dG1sXG4gICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdvbkNsaWNrJyAmJiAhaXNJbnRlcmFj
dGl2ZShpbnN0Ll90YWcpKSB7XG4gICAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0
KTtcbiAgICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5z
dGFuY2UoaW5zdCk7XG4gICAgICBpZiAoIW9uQ2xpY2tMaXN0ZW5lcnNba2V5XSkge1xuICAgICAg
ICBvbkNsaWNrTGlzdGVuZXJzW2tleV0gPSBFdmVudExpc3RlbmVyLmxpc3Rlbihub2RlLCAnY2xp
Y2snLCBlbXB0eUZ1bmN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgd2lsbERlbGV0
ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIGlmIChy
ZWdpc3RyYXRpb25OYW1lID09PSAnb25DbGljaycgJiYgIWlzSW50ZXJhY3RpdmUoaW5zdC5fdGFn
KSkge1xuICAgICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG4gICAgICBvbkNs
aWNrTGlzdGVuZXJzW2tleV0ucmVtb3ZlKCk7XG4gICAgICBkZWxldGUgb25DbGlja0xpc3RlbmVy
c1trZXldO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBTaW1wbGVFdmVudFBs
dWdpbjtcblxuLyoqKi8gfSksXG4vKiAxNzkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBTeW50aGV0aWNFdmVudCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTEpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRXZlbnRcbiAqIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1hbmltYXRpb25zLyNBbmltYXRpb25FdmVudC1pbnRl
cmZhY2VcbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9X
ZWIvQVBJL0FuaW1hdGlvbkV2ZW50XG4gKi9cbnZhciBBbmltYXRpb25FdmVudEludGVyZmFjZSA9
IHtcbiAgYW5pbWF0aW9uTmFtZTogbnVsbCxcbiAgZWxhcHNlZFRpbWU6IG51bGwsXG4gIHBzZXVk
b0VsZW1lbnQ6IG51bGxcbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29u
ZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFt
IHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFy
Z2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50
LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY0V2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNB
bmltYXRpb25FdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlz
LCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCk7XG59XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNBbmlt
YXRpb25FdmVudCwgQW5pbWF0aW9uRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9
IFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50O1xuXG4vKioqLyB9KSxcbi8qIDE4MCAqL1xuLyoqKi8g
KGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVz
ZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIFN5
bnRoZXRpY0V2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cbi8qKlxuICogQGludGVy
ZmFjZSBFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9jbGlwYm9hcmQtYXBpcy9c
biAqL1xudmFyIENsaXBib2FyZEV2ZW50SW50ZXJmYWNlID0ge1xuICBjbGlwYm9hcmREYXRhOiBm
dW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ2NsaXBib2FyZERhdGEnIGluIGV2ZW50ID8g
ZXZlbnQuY2xpcGJvYXJkRGF0YSA6IHdpbmRvdy5jbGlwYm9hcmREYXRhO1xuICB9XG59O1xuXG4v
KipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQg
dG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtl
ciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0
fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0
aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNDbGlwYm9hcmRFdmVudChkaXNwYXRj
aENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkg
e1xuICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlz
cGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRo
ZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNDbGlwYm9hcmRFdmVudCwgQ2xpcGJvYXJk
RXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0NsaXBib2FyZEV2
ZW50O1xuXG4vKioqLyB9KSxcbi8qIDE4MSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDIxKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEZvY3VzRXZlbnRcbiAq
IEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52YXIg
Rm9jdXNFdmVudEludGVyZmFjZSA9IHtcbiAgcmVsYXRlZFRhcmdldDogbnVsbFxufTtcblxuLyoq
XG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRv
IGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIg
TWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0g
bmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGlj
VUlFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljRm9jdXNFdmVudChkaXNwYXRjaENvbmZp
ZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICBy
ZXR1cm4gU3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRj
aE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGlj
VUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljRm9jdXNFdmVudCwgRm9jdXNFdmVudEludGVy
ZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljRm9jdXNFdmVudDtcblxuLyoqKi8g
fSksXG4vKiAxODIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKi9cblxuXG5cbnZhciBTeW50aGV0aWNVSUV2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyMSk7XG5cbnZhciBnZXRFdmVudENoYXJDb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nyk7
XG52YXIgZ2V0RXZlbnRLZXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4Myk7XG52YXIgZ2V0RXZl
bnRNb2RpZmllclN0YXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNik7XG5cbi8qKlxuICogQGlu
dGVyZmFjZSBLZXlib2FyZEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1M
ZXZlbC0zLUV2ZW50cy9cbiAqL1xudmFyIEtleWJvYXJkRXZlbnRJbnRlcmZhY2UgPSB7XG4gIGtl
eTogZ2V0RXZlbnRLZXksXG4gIGxvY2F0aW9uOiBudWxsLFxuICBjdHJsS2V5OiBudWxsLFxuICBz
aGlmdEtleTogbnVsbCxcbiAgYWx0S2V5OiBudWxsLFxuICBtZXRhS2V5OiBudWxsLFxuICByZXBl
YXQ6IG51bGwsXG4gIGxvY2FsZTogbnVsbCxcbiAgZ2V0TW9kaWZpZXJTdGF0ZTogZ2V0RXZlbnRN
b2RpZmllclN0YXRlLFxuICAvLyBMZWdhY3kgSW50ZXJmYWNlXG4gIGNoYXJDb2RlOiBmdW5jdGlv
biAoZXZlbnQpIHtcbiAgICAvLyBgY2hhckNvZGVgIGlzIHRoZSByZXN1bHQgb2YgYSBLZXlQcmVz
cyBldmVudCBhbmQgcmVwcmVzZW50cyB0aGUgdmFsdWUgb2ZcbiAgICAvLyB0aGUgYWN0dWFsIHBy
aW50YWJsZSBjaGFyYWN0ZXIuXG5cbiAgICAvLyBLZXlQcmVzcyBpcyBkZXByZWNhdGVkLCBidXQg
aXRzIHJlcGxhY2VtZW50IGlzIG5vdCB5ZXQgZmluYWwgYW5kIG5vdFxuICAgIC8vIGltcGxlbWVu
dGVkIGluIGFueSBtYWpvciBicm93c2VyLiBPbmx5IEtleVByZXNzIGhhcyBjaGFyQ29kZS5cbiAg
ICBpZiAoZXZlbnQudHlwZSA9PT0gJ2tleXByZXNzJykge1xuICAgICAgcmV0dXJuIGdldEV2ZW50
Q2hhckNvZGUoZXZlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfSxcbiAga2V5Q29kZTog
ZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgLy8gYGtleUNvZGVgIGlzIHRoZSByZXN1bHQgb2YgYSBL
ZXlEb3duL1VwIGV2ZW50IGFuZCByZXByZXNlbnRzIHRoZSB2YWx1ZSBvZlxuICAgIC8vIHBoeXNp
Y2FsIGtleWJvYXJkIGtleS5cblxuICAgIC8vIFRoZSBhY3R1YWwgbWVhbmluZyBvZiB0aGUgdmFs
dWUgZGVwZW5kcyBvbiB0aGUgdXNlcnMnIGtleWJvYXJkIGxheW91dFxuICAgIC8vIHdoaWNoIGNh
bm5vdCBiZSBkZXRlY3RlZC4gQXNzdW1pbmcgdGhhdCBpdCBpcyBhIFVTIGtleWJvYXJkIGxheW91
dFxuICAgIC8vIHByb3ZpZGVzIGEgc3VycHJpc2luZ2x5IGFjY3VyYXRlIG1hcHBpbmcgZm9yIFVT
IGFuZCBFdXJvcGVhbiB1c2Vycy5cbiAgICAvLyBEdWUgdG8gdGhpcywgaXQgaXMgbGVmdCB0byB0
aGUgdXNlciB0byBpbXBsZW1lbnQgYXQgdGhpcyB0aW1lLlxuICAgIGlmIChldmVudC50eXBlID09
PSAna2V5ZG93bicgfHwgZXZlbnQudHlwZSA9PT0gJ2tleXVwJykge1xuICAgICAgcmV0dXJuIGV2
ZW50LmtleUNvZGU7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9LFxuICB3aGljaDogZnVuY3Rp
b24gKGV2ZW50KSB7XG4gICAgLy8gYHdoaWNoYCBpcyBhbiBhbGlhcyBmb3IgZWl0aGVyIGBrZXlD
b2RlYCBvciBgY2hhckNvZGVgIGRlcGVuZGluZyBvbiB0aGVcbiAgICAvLyB0eXBlIG9mIHRoZSBl
dmVudC5cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2tleXByZXNzJykge1xuICAgICAgcmV0dXJu
IGdldEV2ZW50Q2hhckNvZGUoZXZlbnQpO1xuICAgIH1cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0g
J2tleWRvd24nIHx8IGV2ZW50LnR5cGUgPT09ICdrZXl1cCcpIHtcbiAgICAgIHJldHVybiBldmVu
dC5rZXlDb2RlO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxufTtcblxuLyoqXG4gKiBAcGFy
YW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNo
IHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlk
ZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZl
bnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1c
biAqL1xuZnVuY3Rpb24gU3ludGhldGljS2V5Ym9hcmRFdmVudChkaXNwYXRjaENvbmZpZywgZGlz
cGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4g
U3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtl
ciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljVUlFdmVu
dC5hdWdtZW50Q2xhc3MoU3ludGhldGljS2V5Ym9hcmRFdmVudCwgS2V5Ym9hcmRFdmVudEludGVy
ZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljS2V5Ym9hcmRFdmVudDtcblxuLyoq
Ki8gfSksXG4vKiAxODMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKi9cblxuXG5cbnZhciBnZXRFdmVudENoYXJDb2RlID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg0Nyk7XG5cbi8qKlxuICogTm9ybWFsaXphdGlvbiBvZiBkZXByZWNhdGVkIEhUTUw1IGBr
ZXlgIHZhbHVlc1xuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9k
b2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNLZXlfbmFtZXNcbiAqL1xudmFyIG5vcm1hbGl6ZUtl
eSA9IHtcbiAgRXNjOiAnRXNjYXBlJyxcbiAgU3BhY2ViYXI6ICcgJyxcbiAgTGVmdDogJ0Fycm93
TGVmdCcsXG4gIFVwOiAnQXJyb3dVcCcsXG4gIFJpZ2h0OiAnQXJyb3dSaWdodCcsXG4gIERvd246
ICdBcnJvd0Rvd24nLFxuICBEZWw6ICdEZWxldGUnLFxuICBXaW46ICdPUycsXG4gIE1lbnU6ICdD
b250ZXh0TWVudScsXG4gIEFwcHM6ICdDb250ZXh0TWVudScsXG4gIFNjcm9sbDogJ1Njcm9sbExv
Y2snLFxuICBNb3pQcmludGFibGVLZXk6ICdVbmlkZW50aWZpZWQnXG59O1xuXG4vKipcbiAqIFRy
YW5zbGF0aW9uIGZyb20gbGVnYWN5IGBrZXlDb2RlYCB0byBIVE1MNSBga2V5YFxuICogT25seSBz
cGVjaWFsIGtleXMgc3VwcG9ydGVkLCBhbGwgb3RoZXJzIGRlcGVuZCBvbiBrZXlib2FyZCBsYXlv
dXQgb3IgYnJvd3NlclxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1V
Uy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNLZXlfbmFtZXNcbiAqL1xudmFyIHRyYW5zbGF0
ZVRvS2V5ID0ge1xuICA4OiAnQmFja3NwYWNlJyxcbiAgOTogJ1RhYicsXG4gIDEyOiAnQ2xlYXIn
LFxuICAxMzogJ0VudGVyJyxcbiAgMTY6ICdTaGlmdCcsXG4gIDE3OiAnQ29udHJvbCcsXG4gIDE4
OiAnQWx0JyxcbiAgMTk6ICdQYXVzZScsXG4gIDIwOiAnQ2Fwc0xvY2snLFxuICAyNzogJ0VzY2Fw
ZScsXG4gIDMyOiAnICcsXG4gIDMzOiAnUGFnZVVwJyxcbiAgMzQ6ICdQYWdlRG93bicsXG4gIDM1
OiAnRW5kJyxcbiAgMzY6ICdIb21lJyxcbiAgMzc6ICdBcnJvd0xlZnQnLFxuICAzODogJ0Fycm93
VXAnLFxuICAzOTogJ0Fycm93UmlnaHQnLFxuICA0MDogJ0Fycm93RG93bicsXG4gIDQ1OiAnSW5z
ZXJ0JyxcbiAgNDY6ICdEZWxldGUnLFxuICAxMTI6ICdGMScsXG4gIDExMzogJ0YyJyxcbiAgMTE0
OiAnRjMnLFxuICAxMTU6ICdGNCcsXG4gIDExNjogJ0Y1JyxcbiAgMTE3OiAnRjYnLFxuICAxMTg6
ICdGNycsXG4gIDExOTogJ0Y4JyxcbiAgMTIwOiAnRjknLFxuICAxMjE6ICdGMTAnLFxuICAxMjI6
ICdGMTEnLFxuICAxMjM6ICdGMTInLFxuICAxNDQ6ICdOdW1Mb2NrJyxcbiAgMTQ1OiAnU2Nyb2xs
TG9jaycsXG4gIDIyNDogJ01ldGEnXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRp
dmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEByZXR1cm4ge3N0cmluZ30gTm9ybWFs
aXplZCBga2V5YCBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gZ2V0RXZlbnRLZXkobmF0aXZlRXZl
bnQpIHtcbiAgaWYgKG5hdGl2ZUV2ZW50LmtleSkge1xuICAgIC8vIE5vcm1hbGl6ZSBpbmNvbnNp
c3RlbnQgdmFsdWVzIHJlcG9ydGVkIGJ5IGJyb3dzZXJzIGR1ZSB0b1xuICAgIC8vIGltcGxlbWVu
dGF0aW9ucyBvZiBhIHdvcmtpbmcgZHJhZnQgc3BlY2lmaWNhdGlvbi5cblxuICAgIC8vIEZpcmVG
b3ggaW1wbGVtZW50cyBga2V5YCBidXQgcmV0dXJucyBgTW96UHJpbnRhYmxlS2V5YCBmb3IgYWxs
XG4gICAgLy8gcHJpbnRhYmxlIGNoYXJhY3RlcnMgKG5vcm1hbGl6ZWQgdG8gYFVuaWRlbnRpZmll
ZGApLCBpZ25vcmUgaXQuXG4gICAgdmFyIGtleSA9IG5vcm1hbGl6ZUtleVtuYXRpdmVFdmVudC5r
ZXldIHx8IG5hdGl2ZUV2ZW50LmtleTtcbiAgICBpZiAoa2V5ICE9PSAnVW5pZGVudGlmaWVkJykg
e1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gIH1cblxuICAvLyBCcm93c2VyIGRvZXMgbm90
IGltcGxlbWVudCBga2V5YCwgcG9seWZpbGwgYXMgbXVjaCBvZiBpdCBhcyB3ZSBjYW4uXG4gIGlm
IChuYXRpdmVFdmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7XG4gICAgdmFyIGNoYXJDb2RlID0g
Z2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCk7XG5cbiAgICAvLyBUaGUgZW50ZXIta2V5IGlz
IHRlY2huaWNhbGx5IGJvdGggcHJpbnRhYmxlIGFuZCBub24tcHJpbnRhYmxlIGFuZCBjYW5cbiAg
ICAvLyB0aHVzIGJlIGNhcHR1cmVkIGJ5IGBrZXlwcmVzc2AsIG5vIG90aGVyIG5vbi1wcmludGFi
bGUga2V5IHNob3VsZC5cbiAgICByZXR1cm4gY2hhckNvZGUgPT09IDEzID8gJ0VudGVyJyA6IFN0
cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpO1xuICB9XG4gIGlmIChuYXRpdmVFdmVudC50eXBl
ID09PSAna2V5ZG93bicgfHwgbmF0aXZlRXZlbnQudHlwZSA9PT0gJ2tleXVwJykge1xuICAgIC8v
IFdoaWxlIHVzZXIga2V5Ym9hcmQgbGF5b3V0IGRldGVybWluZXMgdGhlIGFjdHVhbCBtZWFuaW5n
IG9mIGVhY2hcbiAgICAvLyBga2V5Q29kZWAgdmFsdWUsIGFsbW9zdCBhbGwgZnVuY3Rpb24ga2V5
cyBoYXZlIGEgdW5pdmVyc2FsIHZhbHVlLlxuICAgIHJldHVybiB0cmFuc2xhdGVUb0tleVtuYXRp
dmVFdmVudC5rZXlDb2RlXSB8fCAnVW5pZGVudGlmaWVkJztcbiAgfVxuICByZXR1cm4gJyc7XG59
XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRLZXk7XG5cbi8qKiovIH0pLFxuLyogMTg0ICov
XG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cblxu
XG52YXIgU3ludGhldGljTW91c2VFdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMjUpO1xuXG4v
KipcbiAqIEBpbnRlcmZhY2UgRHJhZ0V2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RS
L0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAqL1xudmFyIERyYWdFdmVudEludGVyZmFjZSA9IHtcbiAg
ZGF0YVRyYW5zZmVyOiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRj
aENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBw
YXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50
IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBl
dmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50
aGV0aWNEcmFnRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY01vdXNlRXZlbnQuY2Fs
bCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRp
dmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY01vdXNlRXZlbnQuYXVnbWVudENsYXNzKFN5
bnRoZXRpY0RyYWdFdmVudCwgRHJhZ0V2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMg
PSBTeW50aGV0aWNEcmFnRXZlbnQ7XG5cbi8qKiovIH0pLFxuLyogMTg1ICovXG4vKioqLyAoZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0
cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52YXIgU3ludGhl
dGljVUlFdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpO1xuXG52YXIgZ2V0RXZlbnRNb2Rp
ZmllclN0YXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNik7XG5cbi8qKlxuICogQGludGVyZmFj
ZSBUb3VjaEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL3RvdWNoLWV2ZW50cy9c
biAqL1xudmFyIFRvdWNoRXZlbnRJbnRlcmZhY2UgPSB7XG4gIHRvdWNoZXM6IG51bGwsXG4gIHRh
cmdldFRvdWNoZXM6IG51bGwsXG4gIGNoYW5nZWRUb3VjaGVzOiBudWxsLFxuICBhbHRLZXk6IG51
bGwsXG4gIG1ldGFLZXk6IG51bGwsXG4gIGN0cmxLZXk6IG51bGwsXG4gIHNoaWZ0S2V5OiBudWxs
LFxuICBnZXRNb2RpZmllclN0YXRlOiBnZXRFdmVudE1vZGlmaWVyU3RhdGVcbn07XG5cbi8qKlxu
ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBk
aXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1h
cmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5h
dGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJ
RXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY1RvdWNoRXZlbnQoZGlzcGF0Y2hDb25maWcs
IGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0
dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hN
YXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY1VJ
RXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1RvdWNoRXZlbnQsIFRvdWNoRXZlbnRJbnRlcmZh
Y2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1RvdWNoRXZlbnQ7XG5cbi8qKiovIH0p
LFxuLyogMTg2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cblxuXG52YXIgU3ludGhldGljRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEx
KTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3Jn
L1RSLzIwMDkvV0QtY3NzMy10cmFuc2l0aW9ucy0yMDA5MDMyMC8jdHJhbnNpdGlvbi1ldmVudHMt
XG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQ
SS9UcmFuc2l0aW9uRXZlbnRcbiAqL1xudmFyIFRyYW5zaXRpb25FdmVudEludGVyZmFjZSA9IHtc
biAgcHJvcGVydHlOYW1lOiBudWxsLFxuICBlbGFwc2VkVGltZTogbnVsbCxcbiAgcHNldWRvRWxl
bWVudDogbnVsbFxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcg
Q29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0
cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQu
XG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4g
KiBAZXh0ZW5kcyB7U3ludGhldGljRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY1RyYW5z
aXRpb25FdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBu
YXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBk
aXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCk7XG59XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNUcmFuc2l0
aW9uRXZlbnQsIFRyYW5zaXRpb25FdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0g
U3ludGhldGljVHJhbnNpdGlvbkV2ZW50O1xuXG4vKioqLyB9KSxcbi8qIDE4NyAqL1xuLyoqKi8g
KGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVz
ZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFyIFN5
bnRoZXRpY01vdXNlRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KTtcblxuLyoqXG4gKiBA
aW50ZXJmYWNlIFdoZWVsRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxl
dmVsLTMtRXZlbnRzL1xuICovXG52YXIgV2hlZWxFdmVudEludGVyZmFjZSA9IHtcbiAgZGVsdGFY
OiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ2RlbHRhWCcgaW4gZXZlbnQgPyBldmVu
dC5kZWx0YVggOiAvLyBGYWxsYmFjayB0byBgd2hlZWxEZWx0YVhgIGZvciBXZWJraXQgYW5kIG5v
cm1hbGl6ZSAocmlnaHQgaXMgcG9zaXRpdmUpLlxuICAgICd3aGVlbERlbHRhWCcgaW4gZXZlbnQg
PyAtZXZlbnQud2hlZWxEZWx0YVggOiAwO1xuICB9LFxuICBkZWx0YVk6IGZ1bmN0aW9uIChldmVu
dCkge1xuICAgIHJldHVybiAnZGVsdGFZJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWSA6IC8vIEZh
bGxiYWNrIHRvIGB3aGVlbERlbHRhWWAgZm9yIFdlYmtpdCBhbmQgbm9ybWFsaXplIChkb3duIGlz
IHBvc2l0aXZlKS5cbiAgICAnd2hlZWxEZWx0YVknIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVs
dGFZIDogLy8gRmFsbGJhY2sgdG8gYHdoZWVsRGVsdGFgIGZvciBJRTw5IGFuZCBub3JtYWxpemUg
KGRvd24gaXMgcG9zaXRpdmUpLlxuICAgICd3aGVlbERlbHRhJyBpbiBldmVudCA/IC1ldmVudC53
aGVlbERlbHRhIDogMDtcbiAgfSxcbiAgZGVsdGFaOiBudWxsLFxuXG4gIC8vIEJyb3dzZXJzIHdp
dGhvdXQgXCJkZWx0YU1vZGVcIiBpcyByZXBvcnRpbmcgaW4gcmF3IHdoZWVsIGRlbHRhIHdoZXJl
IG9uZVxuICAvLyBub3RjaCBvbiB0aGUgc2Nyb2xsIGlzIGFsd2F5cyArLy0gMTIwLCByb3VnaGx5
IGVxdWl2YWxlbnQgdG8gcGl4ZWxzLlxuICAvLyBBIGdvb2QgYXBwcm94aW1hdGlvbiBvZiBET01f
REVMVEFfTElORSAoMSkgaXMgNSUgb2Ygdmlld3BvcnQgc2l6ZSBvclxuICAvLyB+NDAgcGl4ZWxz
LCBmb3IgRE9NX0RFTFRBX1NDUkVFTiAoMikgaXQgaXMgODcuNSUgb2Ygdmlld3BvcnQgc2l6ZS5c
biAgZGVsdGFNb2RlOiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRj
aENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBw
YXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50
IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBl
dmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNNb3VzZUV2ZW50fVxuICovXG5mdW5jdGlvbiBT
eW50aGV0aWNXaGVlbEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZl
RXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBTeW50aGV0aWNNb3VzZUV2ZW50
LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNNb3VzZUV2ZW50LmF1Z21lbnRDbGFz
cyhTeW50aGV0aWNXaGVlbEV2ZW50LCBXaGVlbEV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4
cG9ydHMgPSBTeW50aGV0aWNXaGVlbEV2ZW50O1xuXG4vKioqLyB9KSxcbi8qIDE4OCAqL1xuLyoq
Ki8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
InVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxudmFy
IHZhbGlkYXRlRE9NTmVzdGluZyA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpO1xuXG52YXIgRE9D
X05PREVfVFlQRSA9IDk7XG5cbmZ1bmN0aW9uIFJlYWN0RE9NQ29udGFpbmVySW5mbyh0b3BMZXZl
bFdyYXBwZXIsIG5vZGUpIHtcbiAgdmFyIGluZm8gPSB7XG4gICAgX3RvcExldmVsV3JhcHBlcjog
dG9wTGV2ZWxXcmFwcGVyLFxuICAgIF9pZENvdW50ZXI6IDEsXG4gICAgX293bmVyRG9jdW1lbnQ6
IG5vZGUgPyBub2RlLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFID8gbm9kZSA6IG5vZGUub3du
ZXJEb2N1bWVudCA6IG51bGwsXG4gICAgX25vZGU6IG5vZGUsXG4gICAgX3RhZzogbm9kZSA/IG5v
ZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA6IG51bGwsXG4gICAgX25hbWVzcGFjZVVSSTogbm9k
ZSA/IG5vZGUubmFtZXNwYWNlVVJJIDogbnVsbFxuICB9O1xuICBpZiAoZmFsc2UpIHtcbiAgICBp
bmZvLl9hbmNlc3RvckluZm8gPSBub2RlID8gdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNl
c3RvckluZm8obnVsbCwgaW5mby5fdGFnLCBudWxsKSA6IG51bGw7XG4gIH1cbiAgcmV0dXJuIGlu
Zm87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01Db250YWluZXJJbmZvO1xuXG4vKioq
LyB9KSxcbi8qIDE4OSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG5cblxudmFyIFJlYWN0RE9NRmVhdHVyZUZsYWdzID0ge1xuICB1c2VDcmVh
dGVFbGVtZW50OiB0cnVlLFxuICB1c2VGaWJlcjogZmFsc2Vcbn07XG5cbm1vZHVsZS5leHBvcnRz
ID0gUmVhY3RET01GZWF0dXJlRmxhZ3M7XG5cbi8qKiovIH0pLFxuLyogMTkwICovXG4vKioqLyAo
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNl
IHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cblxuXG52YXIgYWRs
ZXIzMiA9IF9fd2VicGFja19yZXF1aXJlX18oMTkxKTtcblxudmFyIFRBR19FTkQgPSAvXFwvPz4v
O1xudmFyIENPTU1FTlRfU1RBUlQgPSAvXjxcXCFcXC1cXC0vO1xuXG52YXIgUmVhY3RNYXJrdXBD
aGVja3N1bSA9IHtcbiAgQ0hFQ0tTVU1fQVRUUl9OQU1FOiAnZGF0YS1yZWFjdC1jaGVja3N1bScs
XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHN0cmluZ1xuICAg
KiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcgd2l0aCBjaGVja3N1bSBhdHRyaWJ1dGUg
YXR0YWNoZWRcbiAgICovXG4gIGFkZENoZWNrc3VtVG9NYXJrdXA6IGZ1bmN0aW9uIChtYXJrdXAp
IHtcbiAgICB2YXIgY2hlY2tzdW0gPSBhZGxlcjMyKG1hcmt1cCk7XG5cbiAgICAvLyBBZGQgY2hl
Y2tzdW0gKGhhbmRsZSBib3RoIHBhcmVudCB0YWdzLCBjb21tZW50cyBhbmQgc2VsZi1jbG9zaW5n
IHRhZ3MpXG4gICAgaWYgKENPTU1FTlRfU1RBUlQudGVzdChtYXJrdXApKSB7XG4gICAgICByZXR1
cm4gbWFya3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbWFya3VwLnJlcGxhY2UoVEFH
X0VORCwgJyAnICsgUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUgKyAnPVwi
JyArIGNoZWNrc3VtICsgJ1wiJCYnKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJh
bSB7c3RyaW5nfSBtYXJrdXAgdG8gdXNlXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gZWxlbWVu
dCByb290IFJlYWN0IGVsZW1lbnRcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHdoZXRoZXIgb3Ig
bm90IHRoZSBtYXJrdXAgaXMgdGhlIHNhbWVcbiAgICovXG4gIGNhblJldXNlTWFya3VwOiBmdW5j
dGlvbiAobWFya3VwLCBlbGVtZW50KSB7XG4gICAgdmFyIGV4aXN0aW5nQ2hlY2tzdW0gPSBlbGVt
ZW50LmdldEF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7
XG4gICAgZXhpc3RpbmdDaGVja3N1bSA9IGV4aXN0aW5nQ2hlY2tzdW0gJiYgcGFyc2VJbnQoZXhp
c3RpbmdDaGVja3N1bSwgMTApO1xuICAgIHZhciBtYXJrdXBDaGVja3N1bSA9IGFkbGVyMzIobWFy
a3VwKTtcbiAgICByZXR1cm4gbWFya3VwQ2hlY2tzdW0gPT09IGV4aXN0aW5nQ2hlY2tzdW07XG4g
IH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RNYXJrdXBDaGVja3N1bTtcblxuLyoqKi8g
fSksXG4vKiAxOTEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKiBcbiAqL1xuXG5cblxudmFyIE1PRCA9IDY1NTIxO1xuXG4vLyBhZGxlcjMyIGlzIG5v
dCBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcsIGFuZCBpcyBvbmx5IHVzZWQgdG8gc2FuaXR5IGNo
ZWNrIHRoYXRcbi8vIG1hcmt1cCBnZW5lcmF0ZWQgb24gdGhlIHNlcnZlciBtYXRjaGVzIHRoZSBt
YXJrdXAgZ2VuZXJhdGVkIG9uIHRoZSBjbGllbnQuXG4vLyBUaGlzIGltcGxlbWVudGF0aW9uIChh
IG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIFNoZWV0SlMgdmVyc2lvbikgaGFzIGJlZW4gb3B0aW1p
emVkXG4vLyBmb3Igb3VyIHVzZSBjYXNlLCBhdCB0aGUgZXhwZW5zZSBvZiBjb25mb3JtaW5nIHRv
IHRoZSBhZGxlcjMyIHNwZWNpZmljYXRpb25cbi8vIGZvciBub24tYXNjaWkgaW5wdXRzLlxuZnVu
Y3Rpb24gYWRsZXIzMihkYXRhKSB7XG4gIHZhciBhID0gMTtcbiAgdmFyIGIgPSAwO1xuICB2YXIg
aSA9IDA7XG4gIHZhciBsID0gZGF0YS5sZW5ndGg7XG4gIHZhciBtID0gbCAmIH4weDM7XG4gIHdo
aWxlIChpIDwgbSkge1xuICAgIHZhciBuID0gTWF0aC5taW4oaSArIDQwOTYsIG0pO1xuICAgIGZv
ciAoOyBpIDwgbjsgaSArPSA0KSB7XG4gICAgICBiICs9IChhICs9IGRhdGEuY2hhckNvZGVBdChp
KSkgKyAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSArIDEpKSArIChhICs9IGRhdGEuY2hhckNvZGVB
dChpICsgMikpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAzKSk7XG4gICAgfVxuICAgIGEg
JT0gTU9EO1xuICAgIGIgJT0gTU9EO1xuICB9XG4gIGZvciAoOyBpIDwgbDsgaSsrKSB7XG4gICAg
YiArPSBhICs9IGRhdGEuY2hhckNvZGVBdChpKTtcbiAgfVxuICBhICU9IE1PRDtcbiAgYiAlPSBN
T0Q7XG4gIHJldHVybiBhIHwgYiA8PCAxNjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhZGxlcjMy
O1xuXG4vKioqLyB9KSxcbi8qIDE5MiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuICpcbiAqL1xuXG5cblxubW9kdWxlLmV4cG9ydHMgPSAnMTUuNi4xJztcblxu
LyoqKi8gfSksXG4vKiAxOTMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKi9cblxuXG5cbnZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1
aXJlX18oMik7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9fd2VicGFja19yZXF1aXJlX18o
MTApO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7
XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpO1xuXG52YXIg
Z2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgzKTtc
bnZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xudmFyIHdhcm5pbmcgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIERPTSBub2RlIHJl
bmRlcmVkIGJ5IHRoaXMgZWxlbWVudC5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRo
dWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3Rkb20uZmluZGRvbW5vZGVc
biAqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fERPTUVsZW1lbnR9IGNvbXBvbmVudE9yRWxl
bWVudFxuICogQHJldHVybiB7P0RPTUVsZW1lbnR9IFRoZSByb290IG5vZGUgb2YgdGhpcyBlbGVt
ZW50LlxuICovXG5mdW5jdGlvbiBmaW5kRE9NTm9kZShjb21wb25lbnRPckVsZW1lbnQpIHtcbiAg
aWYgKGZhbHNlKSB7XG4gICAgdmFyIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtc
biAgICBpZiAob3duZXIgIT09IG51bGwpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciwg
JyVzIGlzIGFjY2Vzc2luZyBmaW5kRE9NTm9kZSBpbnNpZGUgaXRzIHJlbmRlcigpLiAnICsgJ3Jl
bmRlcigpIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rpb24gb2YgcHJvcHMgYW5kIHN0YXRlLiBJdCBz
aG91bGQgJyArICduZXZlciBhY2Nlc3Mgc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgc3RhbGUgZGF0
YSBmcm9tIHRoZSBwcmV2aW91cyAnICsgJ3JlbmRlciwgc3VjaCBhcyByZWZzLiBNb3ZlIHRoaXMg
bG9naWMgdG8gY29tcG9uZW50RGlkTW91bnQgYW5kICcgKyAnY29tcG9uZW50RGlkVXBkYXRlIGlu
c3RlYWQuJywgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuICAg
ICAgb3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAg
aWYgKGNvbXBvbmVudE9yRWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1c
biAgaWYgKGNvbXBvbmVudE9yRWxlbWVudC5ub2RlVHlwZSA9PT0gMSkge1xuICAgIHJldHVybiBj
b21wb25lbnRPckVsZW1lbnQ7XG4gIH1cblxuICB2YXIgaW5zdCA9IFJlYWN0SW5zdGFuY2VNYXAu
Z2V0KGNvbXBvbmVudE9yRWxlbWVudCk7XG4gIGlmIChpbnN0KSB7XG4gICAgaW5zdCA9IGdldEhv
c3RDb21wb25lbnRGcm9tQ29tcG9zaXRlKGluc3QpO1xuICAgIHJldHVybiBpbnN0ID8gUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkgOiBudWxsO1xuICB9XG5c
biAgaWYgKHR5cGVvZiBjb21wb25lbnRPckVsZW1lbnQucmVuZGVyID09PSAnZnVuY3Rpb24nKSB7
XG4gICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdmaW5kRE9NTm9kZSB3YXMg
Y2FsbGVkIG9uIGFuIHVubW91bnRlZCBjb21wb25lbnQuJykgOiBfcHJvZEludmFyaWFudCgnNDQn
KSA6IHZvaWQgMDtcbiAgfSBlbHNlIHtcbiAgICAgdHJ1ZSA/ICBmYWxzZSA/IGludmFyaWFudChm
YWxzZSwgJ0VsZW1lbnQgYXBwZWFycyB0byBiZSBuZWl0aGVyIFJlYWN0Q29tcG9uZW50IG5vciBE
T01Ob2RlIChrZXlzOiAlcyknLCBPYmplY3Qua2V5cyhjb21wb25lbnRPckVsZW1lbnQpKSA6IF9w
cm9kSW52YXJpYW50KCc0NScsIE9iamVjdC5rZXlzKGNvbXBvbmVudE9yRWxlbWVudCkpIDogdm9p
ZCAwO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmluZERPTU5vZGU7XG5cbi8qKiovIH0p
LFxuLyogMTk0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cblxuXG52YXIgUmVhY3RNb3VudCA9IF9fd2VicGFja19yZXF1aXJlX18oODIpO1xu
XG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0TW91bnQucmVuZGVyU3VidHJlZUludG9Db250YWluZXI7
XG5cbi8qKiovIH0pLFxuLyogMTk1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBh
Y2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xu
LyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fU3lt
Ym9sX2pzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg1KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2dldFJhd1RhZ19qc19fID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxOTgpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMl9fb2JqZWN0VG9TdHJpbmdfanNfXyA9IF9fd2VicGFja19yZXF1aXJl
X18oMTk5KTtcblxuXG5cblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2Vz
LiAqL1xudmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgdW5kZWZpbmVkVGFnID0g
J1tvYmplY3QgVW5kZWZpbmVkXSc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAq
L1xudmFyIHN5bVRvU3RyaW5nVGFnID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19TeW1i
b2xfanNfX1tcImFcIiAvKiBkZWZhdWx0ICovXSA/IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MF9fU3ltYm9sX2pzX19bXCJhXCIgLyogZGVmYXVsdCAqL10udG9TdHJpbmdUYWcgOiB1bmRlZmlu
ZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91
dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICog
QHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5n
fSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZh
bHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRl
ZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHJldHVybiAoc3ltVG9TdHJp
bmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICA/IE9iamVjdChf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2dldFJhd1RhZ19qc19fW1wiYVwiIC8qIGRlZmF1
bHQgKi9dKSh2YWx1ZSlcbiAgICA6IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJf
X29iamVjdFRvU3RyaW5nX2pzX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlKTtcbn1cblxu
LyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9
IChiYXNlR2V0VGFnKTtcblxuXG4vKioqLyB9KSxcbi8qIDE5NiAqL1xuLyoqKi8gKGZ1bmN0aW9u
KG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
InVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfX2ZyZWVHbG9iYWxfanNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTk3KTtc
blxuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xudmFyIGZyZWVTZWxmID0g
dHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0
ICYmIHNlbGY7XG5cbi8qKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0
LiAqL1xudmFyIHJvb3QgPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2ZyZWVHbG9iYWxf
anNfX1tcImFcIiAvKiBkZWZhdWx0ICovXSB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJu
IHRoaXMnKSgpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBv
cnRzX19bXCJhXCJdID0gKHJvb3QpO1xuXG5cbi8qKiovIH0pLFxuLyogMTk3ICovXG4vKioqLyAo
ZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0
aW9uKGdsb2JhbCkgey8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUu
anMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xv
YmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbi8qIGhhcm1vbnkg
ZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnJlZUdsb2Jh
bCk7XG5cbi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChfX3dlYnBhY2tfZXhwb3J0
c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKSkpXG5cbi8qKiovIH0pLFxuLyogMTk4ICovXG4v
KioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fU3ltYm9sX2pzX18gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDg1KTtcblxuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICov
XG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVj
ayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9i
amVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVc
biAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICov
XG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoq
IEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1N5bWJvbF9qc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9d
ID8gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19TeW1ib2xfanNfX1tcImFcIiAvKiBkZWZh
dWx0ICovXS50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVk
IHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1Rh
Z2AgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1
ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJp
bmdUYWdgLlxuICovXG5mdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgdmFyIGlzT3duID0g
aGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLFxuICAgICAgdGFnID0g
dmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXG4gIHRyeSB7XG4gICAgdmFsdWVbc3ltVG9TdHJpbmdU
YWddID0gdW5kZWZpbmVkO1xuICAgIHZhciB1bm1hc2tlZCA9IHRydWU7XG4gIH0gY2F0Y2ggKGUp
IHt9XG5cbiAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xu
ICBpZiAodW5tYXNrZWQpIHtcbiAgICBpZiAoaXNPd24pIHtcbiAgICAgIHZhbHVlW3N5bVRvU3Ry
aW5nVGFnXSA9IHRhZztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3Ry
aW5nVGFnXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyogaGFybW9ueSBk
ZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChnZXRSYXdUYWcp
O1xuXG5cbi8qKiovIH0pLFxuLyogMTk5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dl
YnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwi
O1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVj
dFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhl
XG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0y
NjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAq
L1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8q
KlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlw
ZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZh
bHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0
ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1
cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5cbi8qIGhhcm1vbnkgZGVm
YXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAob2JqZWN0VG9TdHJp
bmcpO1xuXG5cbi8qKiovIH0pLFxuLyogMjAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBf
X3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmlj
dFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MF9fb3ZlckFyZ19qc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMDEpO1xuXG5cbi8qKiBCdWls
dC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZSA9IE9iamVjdChfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX292ZXJBcmdfanNfX1tcImFcIiAvKiBkZWZhdWx0ICov
XSkoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQg
ZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGdldFByb3RvdHlwZSk7XG5c
blxuLyoqKi8gfSksXG4vKiAyMDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFj
a19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4v
KipcbiAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGgg
aXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1
bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICogQHBhcmFtIHtGdW5jdGlvbn0g
dHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259
IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0
cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBmdW5jKHRy
YW5zZm9ybShhcmcpKTtcbiAgfTtcbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBf
X3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChvdmVyQXJnKTtcblxuXG4vKioqLyB9KSxcbi8q
IDIwMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ2hlY2tzIGlm
IGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBu
b3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4g
KlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVn
b3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJl
dHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2Us
IGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xu
ICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9
PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4g
KlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlv
biBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9m
IHZhbHVlID09ICdvYmplY3QnO1xufVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9f
d2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzT2JqZWN0TGlrZSk7XG5cblxuLyoqKi8gfSks
XG4vKiAyMDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwNCk7
XG5cblxuLyoqKi8gfSksXG4vKiAyMDQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBXRUJQQUNL
IFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsLCBtb2R1bGUpIHtcblxuT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59
KTtcblxudmFyIF9wb255ZmlsbCA9IF9fd2VicGFja19yZXF1aXJlX18oMjA2KTtcblxudmFyIF9w
b255ZmlsbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wb255ZmlsbCk7XG5cbmZ1bmN0aW9u
IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1
bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIHJvb3Q7IC8qIGdsb2JhbCB3
aW5kb3cgKi9cblxuXG5pZiAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnKSB7XG4gIHJvb3Qg
PSBzZWxmO1xufSBlbHNlIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICBy
b290ID0gd2luZG93O1xufSBlbHNlIGlmICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJykg
e1xuICByb290ID0gZ2xvYmFsO1xufSBlbHNlIGlmICh0cnVlKSB7XG4gIHJvb3QgPSBtb2R1bGU7
XG59IGVsc2Uge1xuICByb290ID0gRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbn1cblxudmFy
IHJlc3VsdCA9ICgwLCBfcG9ueWZpbGwyWydkZWZhdWx0J10pKHJvb3QpO1xuZXhwb3J0c1snZGVm
YXVsdCddID0gcmVzdWx0O1xuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18oMzApLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwNSkobW9k
dWxlKSkpXG5cbi8qKiovIH0pLFxuLyogMjA1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obW9kdWxlKSB7XHJcblx0aWYo
IW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcclxuXHRcdG1vZHVsZS5kZXByZWNhdGUgPSBmdW5j
dGlvbigpIHt9O1xyXG5cdFx0bW9kdWxlLnBhdGhzID0gW107XHJcblx0XHQvLyBtb2R1bGUucGFy
ZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcclxuXHRcdGlmKCFtb2R1bGUuY2hpbGRyZW4pIG1v
ZHVsZS5jaGlsZHJlbiA9IFtdO1xyXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwg
XCJsb2FkZWRcIiwge1xyXG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxyXG5cdFx0XHRnZXQ6IGZ1
bmN0aW9uKCkge1xyXG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcclxuXHRcdFx0fVxyXG5cdFx0
fSk7XHJcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcclxuXHRc
dFx0ZW51bWVyYWJsZTogdHJ1ZSxcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtcclxuXHRcdFx0
XHRyZXR1cm4gbW9kdWxlLmk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0bW9kdWxlLndl
YnBhY2tQb2x5ZmlsbCA9IDE7XHJcblx0fVxyXG5cdHJldHVybiBtb2R1bGU7XHJcbn07XHJcblxu
XG4vKioqLyB9KSxcbi8qIDIwNiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5PYmplY3QuZGVm
aW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0dmFsdWU6IHRydWVcbn0p
O1xuZXhwb3J0c1snZGVmYXVsdCddID0gc3ltYm9sT2JzZXJ2YWJsZVBvbnlmaWxsO1xuZnVuY3Rp
b24gc3ltYm9sT2JzZXJ2YWJsZVBvbnlmaWxsKHJvb3QpIHtcblx0dmFyIHJlc3VsdDtcblx0dmFy
IF9TeW1ib2wgPSByb290LlN5bWJvbDtcblxuXHRpZiAodHlwZW9mIF9TeW1ib2wgPT09ICdmdW5j
dGlvbicpIHtcblx0XHRpZiAoX1N5bWJvbC5vYnNlcnZhYmxlKSB7XG5cdFx0XHRyZXN1bHQgPSBf
U3ltYm9sLm9ic2VydmFibGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlc3VsdCA9IF9TeW1ib2wo
J29ic2VydmFibGUnKTtcblx0XHRcdF9TeW1ib2wub2JzZXJ2YWJsZSA9IHJlc3VsdDtcblx0XHR9
XG5cdH0gZWxzZSB7XG5cdFx0cmVzdWx0ID0gJ0BAb2JzZXJ2YWJsZSc7XG5cdH1cblxuXHRyZXR1
cm4gcmVzdWx0O1xufTtcblxuLyoqKi8gfSksXG4vKiAyMDcgKi9cbi8qKiovIChmdW5jdGlvbiht
b2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1
c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4cG9ydCAoaW1tdXRhYmxlKSAqLyBfX3dlYnBhY2tf
ZXhwb3J0c19fW1wiYVwiXSA9IGNvbWJpbmVSZWR1Y2Vycztcbi8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2NyZWF0ZVN0b3JlX18gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDg0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzFfbG9kYXNoX2VzX2lzUGxhaW5PYmplY3RfXyA9IF9fd2VicGFja19yZXF1
aXJlX18oNDgpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMl9fdXRpbHNfd2FybmluZ19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Nik7XG5cblxu
XG5cbmZ1bmN0aW9uIGdldFVuZGVmaW5lZFN0YXRlRXJyb3JNZXNzYWdlKGtleSwgYWN0aW9uKSB7
XG4gIHZhciBhY3Rpb25UeXBlID0gYWN0aW9uICYmIGFjdGlvbi50eXBlO1xuICB2YXIgYWN0aW9u
TmFtZSA9IGFjdGlvblR5cGUgJiYgJ1wiJyArIGFjdGlvblR5cGUudG9TdHJpbmcoKSArICdcIicg
fHwgJ2FuIGFjdGlvbic7XG5cbiAgcmV0dXJuICdHaXZlbiBhY3Rpb24gJyArIGFjdGlvbk5hbWUg
KyAnLCByZWR1Y2VyIFwiJyArIGtleSArICdcIiByZXR1cm5lZCB1bmRlZmluZWQuICcgKyAnVG8g
aWdub3JlIGFuIGFjdGlvbiwgeW91IG11c3QgZXhwbGljaXRseSByZXR1cm4gdGhlIHByZXZpb3Vz
IHN0YXRlLiAnICsgJ0lmIHlvdSB3YW50IHRoaXMgcmVkdWNlciB0byBob2xkIG5vIHZhbHVlLCB5
b3UgY2FuIHJldHVybiBudWxsIGluc3RlYWQgb2YgdW5kZWZpbmVkLic7XG59XG5cbmZ1bmN0aW9u
IGdldFVuZXhwZWN0ZWRTdGF0ZVNoYXBlV2FybmluZ01lc3NhZ2UoaW5wdXRTdGF0ZSwgcmVkdWNl
cnMsIGFjdGlvbiwgdW5leHBlY3RlZEtleUNhY2hlKSB7XG4gIHZhciByZWR1Y2VyS2V5cyA9IE9i
amVjdC5rZXlzKHJlZHVjZXJzKTtcbiAgdmFyIGFyZ3VtZW50TmFtZSA9IGFjdGlvbiAmJiBhY3Rp
b24udHlwZSA9PT0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19jcmVhdGVTdG9yZV9fW1wi
YVwiIC8qIEFjdGlvblR5cGVzICovXS5JTklUID8gJ3ByZWxvYWRlZFN0YXRlIGFyZ3VtZW50IHBh
c3NlZCB0byBjcmVhdGVTdG9yZScgOiAncHJldmlvdXMgc3RhdGUgcmVjZWl2ZWQgYnkgdGhlIHJl
ZHVjZXInO1xuXG4gIGlmIChyZWR1Y2VyS2V5cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4g
J1N0b3JlIGRvZXMgbm90IGhhdmUgYSB2YWxpZCByZWR1Y2VyLiBNYWtlIHN1cmUgdGhlIGFyZ3Vt
ZW50IHBhc3NlZCAnICsgJ3RvIGNvbWJpbmVSZWR1Y2VycyBpcyBhbiBvYmplY3Qgd2hvc2UgdmFs
dWVzIGFyZSByZWR1Y2Vycy4nO1xuICB9XG5cbiAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8xX2xvZGFzaF9lc19pc1BsYWluT2JqZWN0X19bXCJhXCIgLyogZGVmYXVsdCAq
L10pKGlucHV0U3RhdGUpKSB7XG4gICAgcmV0dXJuICdUaGUgJyArIGFyZ3VtZW50TmFtZSArICcg
aGFzIHVuZXhwZWN0ZWQgdHlwZSBvZiBcIicgKyB7fS50b1N0cmluZy5jYWxsKGlucHV0U3RhdGUp
Lm1hdGNoKC9cXHMoW2EtenxBLVpdKykvKVsxXSArICdcIi4gRXhwZWN0ZWQgYXJndW1lbnQgdG8g
YmUgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyAnICsgKCdrZXlzOiBcIicgKyByZWR1Y2Vy
S2V5cy5qb2luKCdcIiwgXCInKSArICdcIicpO1xuICB9XG5cbiAgdmFyIHVuZXhwZWN0ZWRLZXlz
ID0gT2JqZWN0LmtleXMoaW5wdXRTdGF0ZSkuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBy
ZXR1cm4gIXJlZHVjZXJzLmhhc093blByb3BlcnR5KGtleSkgJiYgIXVuZXhwZWN0ZWRLZXlDYWNo
ZVtrZXldO1xuICB9KTtcblxuICB1bmV4cGVjdGVkS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkp
IHtcbiAgICB1bmV4cGVjdGVkS2V5Q2FjaGVba2V5XSA9IHRydWU7XG4gIH0pO1xuXG4gIGlmICh1
bmV4cGVjdGVkS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuICdVbmV4cGVjdGVkICcgKyAo
dW5leHBlY3RlZEtleXMubGVuZ3RoID4gMSA/ICdrZXlzJyA6ICdrZXknKSArICcgJyArICgnXCIn
ICsgdW5leHBlY3RlZEtleXMuam9pbignXCIsIFwiJykgKyAnXCIgZm91bmQgaW4gJyArIGFyZ3Vt
ZW50TmFtZSArICcuICcpICsgJ0V4cGVjdGVkIHRvIGZpbmQgb25lIG9mIHRoZSBrbm93biByZWR1
Y2VyIGtleXMgaW5zdGVhZDogJyArICgnXCInICsgcmVkdWNlcktleXMuam9pbignXCIsIFwiJykg
KyAnXCIuIFVuZXhwZWN0ZWQga2V5cyB3aWxsIGJlIGlnbm9yZWQuJyk7XG4gIH1cbn1cblxuZnVu
Y3Rpb24gYXNzZXJ0UmVkdWNlclNoYXBlKHJlZHVjZXJzKSB7XG4gIE9iamVjdC5rZXlzKHJlZHVj
ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgcmVkdWNlciA9IHJlZHVjZXJz
W2tleV07XG4gICAgdmFyIGluaXRpYWxTdGF0ZSA9IHJlZHVjZXIodW5kZWZpbmVkLCB7IHR5cGU6
IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fY3JlYXRlU3RvcmVfX1tcImFcIiAvKiBBY3Rp
b25UeXBlcyAqL10uSU5JVCB9KTtcblxuICAgIGlmICh0eXBlb2YgaW5pdGlhbFN0YXRlID09PSAn
dW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWR1Y2VyIFwiJyArIGtleSAr
ICdcIiByZXR1cm5lZCB1bmRlZmluZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiAnICsgJ0lmIHRo
ZSBzdGF0ZSBwYXNzZWQgdG8gdGhlIHJlZHVjZXIgaXMgdW5kZWZpbmVkLCB5b3UgbXVzdCAnICsg
J2V4cGxpY2l0bHkgcmV0dXJuIHRoZSBpbml0aWFsIHN0YXRlLiBUaGUgaW5pdGlhbCBzdGF0ZSBt
YXkgJyArICdub3QgYmUgdW5kZWZpbmVkLiBJZiB5b3UgZG9uXFwndCB3YW50IHRvIHNldCBhIHZh
bHVlIGZvciB0aGlzIHJlZHVjZXIsICcgKyAneW91IGNhbiB1c2UgbnVsbCBpbnN0ZWFkIG9mIHVu
ZGVmaW5lZC4nKTtcbiAgICB9XG5cbiAgICB2YXIgdHlwZSA9ICdAQHJlZHV4L1BST0JFX1VOS05P
V05fQUNUSU9OXycgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNykuc3Bs
aXQoJycpLmpvaW4oJy4nKTtcbiAgICBpZiAodHlwZW9mIHJlZHVjZXIodW5kZWZpbmVkLCB7IHR5
cGU6IHR5cGUgfSkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Jl
ZHVjZXIgXCInICsga2V5ICsgJ1wiIHJldHVybmVkIHVuZGVmaW5lZCB3aGVuIHByb2JlZCB3aXRo
IGEgcmFuZG9tIHR5cGUuICcgKyAoJ0RvblxcJ3QgdHJ5IHRvIGhhbmRsZSAnICsgX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX19jcmVhdGVTdG9yZV9fW1wiYVwiIC8qIEFjdGlvblR5cGVzICov
XS5JTklUICsgJyBvciBvdGhlciBhY3Rpb25zIGluIFwicmVkdXgvKlwiICcpICsgJ25hbWVzcGFj
ZS4gVGhleSBhcmUgY29uc2lkZXJlZCBwcml2YXRlLiBJbnN0ZWFkLCB5b3UgbXVzdCByZXR1cm4g
dGhlICcgKyAnY3VycmVudCBzdGF0ZSBmb3IgYW55IHVua25vd24gYWN0aW9ucywgdW5sZXNzIGl0
IGlzIHVuZGVmaW5lZCwgJyArICdpbiB3aGljaCBjYXNlIHlvdSBtdXN0IHJldHVybiB0aGUgaW5p
dGlhbCBzdGF0ZSwgcmVnYXJkbGVzcyBvZiB0aGUgJyArICdhY3Rpb24gdHlwZS4gVGhlIGluaXRp
YWwgc3RhdGUgbWF5IG5vdCBiZSB1bmRlZmluZWQsIGJ1dCBjYW4gYmUgbnVsbC4nKTtcbiAgICB9
XG4gIH0pO1xufVxuXG4vKipcbiAqIFR1cm5zIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIGRp
ZmZlcmVudCByZWR1Y2VyIGZ1bmN0aW9ucywgaW50byBhIHNpbmdsZVxuICogcmVkdWNlciBmdW5j
dGlvbi4gSXQgd2lsbCBjYWxsIGV2ZXJ5IGNoaWxkIHJlZHVjZXIsIGFuZCBnYXRoZXIgdGhlaXIg
cmVzdWx0c1xuICogaW50byBhIHNpbmdsZSBzdGF0ZSBvYmplY3QsIHdob3NlIGtleXMgY29ycmVz
cG9uZCB0byB0aGUga2V5cyBvZiB0aGUgcGFzc2VkXG4gKiByZWR1Y2VyIGZ1bmN0aW9ucy5cbiAq
XG4gKiBAcGFyYW0ge09iamVjdH0gcmVkdWNlcnMgQW4gb2JqZWN0IHdob3NlIHZhbHVlcyBjb3Jy
ZXNwb25kIHRvIGRpZmZlcmVudFxuICogcmVkdWNlciBmdW5jdGlvbnMgdGhhdCBuZWVkIHRvIGJl
IGNvbWJpbmVkIGludG8gb25lLiBPbmUgaGFuZHkgd2F5IHRvIG9idGFpblxuICogaXQgaXMgdG8g
dXNlIEVTNiBgaW1wb3J0ICogYXMgcmVkdWNlcnNgIHN5bnRheC4gVGhlIHJlZHVjZXJzIG1heSBu
ZXZlciByZXR1cm5cbiAqIHVuZGVmaW5lZCBmb3IgYW55IGFjdGlvbi4gSW5zdGVhZCwgdGhleSBz
aG91bGQgcmV0dXJuIHRoZWlyIGluaXRpYWwgc3RhdGVcbiAqIGlmIHRoZSBzdGF0ZSBwYXNzZWQg
dG8gdGhlbSB3YXMgdW5kZWZpbmVkLCBhbmQgdGhlIGN1cnJlbnQgc3RhdGUgZm9yIGFueVxuICog
dW5yZWNvZ25pemVkIGFjdGlvbi5cbiAqXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgcmVkdWNl
ciBmdW5jdGlvbiB0aGF0IGludm9rZXMgZXZlcnkgcmVkdWNlciBpbnNpZGUgdGhlXG4gKiBwYXNz
ZWQgb2JqZWN0LCBhbmQgYnVpbGRzIGEgc3RhdGUgb2JqZWN0IHdpdGggdGhlIHNhbWUgc2hhcGUu
XG4gKi9cbmZ1bmN0aW9uIGNvbWJpbmVSZWR1Y2VycyhyZWR1Y2Vycykge1xuICB2YXIgcmVkdWNl
cktleXMgPSBPYmplY3Qua2V5cyhyZWR1Y2Vycyk7XG4gIHZhciBmaW5hbFJlZHVjZXJzID0ge307
XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmVkdWNlcktleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2
YXIga2V5ID0gcmVkdWNlcktleXNbaV07XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGlmICh0
eXBlb2YgcmVkdWNlcnNba2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgd2FybmluZygn
Tm8gcmVkdWNlciBwcm92aWRlZCBmb3Iga2V5IFwiJyArIGtleSArICdcIicpO1xuICAgICAgfVxu
ICAgIH1cblxuICAgIGlmICh0eXBlb2YgcmVkdWNlcnNba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xu
ICAgICAgZmluYWxSZWR1Y2Vyc1trZXldID0gcmVkdWNlcnNba2V5XTtcbiAgICB9XG4gIH1cbiAg
dmFyIGZpbmFsUmVkdWNlcktleXMgPSBPYmplY3Qua2V5cyhmaW5hbFJlZHVjZXJzKTtcblxuICB2
YXIgdW5leHBlY3RlZEtleUNhY2hlID0gdm9pZCAwO1xuICBpZiAoZmFsc2UpIHtcbiAgICB1bmV4
cGVjdGVkS2V5Q2FjaGUgPSB7fTtcbiAgfVxuXG4gIHZhciBzaGFwZUFzc2VydGlvbkVycm9yID0g
dm9pZCAwO1xuICB0cnkge1xuICAgIGFzc2VydFJlZHVjZXJTaGFwZShmaW5hbFJlZHVjZXJzKTtc
biAgfSBjYXRjaCAoZSkge1xuICAgIHNoYXBlQXNzZXJ0aW9uRXJyb3IgPSBlO1xuICB9XG5cbiAg
cmV0dXJuIGZ1bmN0aW9uIGNvbWJpbmF0aW9uKCkge1xuICAgIHZhciBzdGF0ZSA9IGFyZ3VtZW50
cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBd
IDoge307XG4gICAgdmFyIGFjdGlvbiA9IGFyZ3VtZW50c1sxXTtcblxuICAgIGlmIChzaGFwZUFz
c2VydGlvbkVycm9yKSB7XG4gICAgICB0aHJvdyBzaGFwZUFzc2VydGlvbkVycm9yO1xuICAgIH1c
blxuICAgIGlmIChmYWxzZSkge1xuICAgICAgdmFyIHdhcm5pbmdNZXNzYWdlID0gZ2V0VW5leHBl
Y3RlZFN0YXRlU2hhcGVXYXJuaW5nTWVzc2FnZShzdGF0ZSwgZmluYWxSZWR1Y2VycywgYWN0aW9u
LCB1bmV4cGVjdGVkS2V5Q2FjaGUpO1xuICAgICAgaWYgKHdhcm5pbmdNZXNzYWdlKSB7XG4gICAg
ICAgIHdhcm5pbmcod2FybmluZ01lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBo
YXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgdmFyIG5leHRTdGF0ZSA9IHt9O1xuICAgIGZvciAodmFy
IF9pID0gMDsgX2kgPCBmaW5hbFJlZHVjZXJLZXlzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFy
IF9rZXkgPSBmaW5hbFJlZHVjZXJLZXlzW19pXTtcbiAgICAgIHZhciByZWR1Y2VyID0gZmluYWxS
ZWR1Y2Vyc1tfa2V5XTtcbiAgICAgIHZhciBwcmV2aW91c1N0YXRlRm9yS2V5ID0gc3RhdGVbX2tl
eV07XG4gICAgICB2YXIgbmV4dFN0YXRlRm9yS2V5ID0gcmVkdWNlcihwcmV2aW91c1N0YXRlRm9y
S2V5LCBhY3Rpb24pO1xuICAgICAgaWYgKHR5cGVvZiBuZXh0U3RhdGVGb3JLZXkgPT09ICd1bmRl
ZmluZWQnKSB7XG4gICAgICAgIHZhciBlcnJvck1lc3NhZ2UgPSBnZXRVbmRlZmluZWRTdGF0ZUVy
cm9yTWVzc2FnZShfa2V5LCBhY3Rpb24pO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JN
ZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIG5leHRTdGF0ZVtfa2V5XSA9IG5leHRTdGF0ZUZvcktl
eTtcbiAgICAgIGhhc0NoYW5nZWQgPSBoYXNDaGFuZ2VkIHx8IG5leHRTdGF0ZUZvcktleSAhPT0g
cHJldmlvdXNTdGF0ZUZvcktleTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0NoYW5nZWQgPyBuZXh0
U3RhdGUgOiBzdGF0ZTtcbiAgfTtcbn1cblxuLyoqKi8gfSksXG4vKiAyMDggKi9cbi8qKiovIChm
dW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4cG9ydCAoaW1tdXRhYmxlKSAqLyBf
X3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IGJpbmRBY3Rpb25DcmVhdG9ycztcbmZ1bmN0aW9u
IGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3IsIGRpc3BhdGNoKSB7XG4gIHJldHVybiBm
dW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoKGFjdGlvbkNyZWF0b3IuYXBwbHkodW5k
ZWZpbmVkLCBhcmd1bWVudHMpKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBUdXJucyBhbiBvYmplY3Qg
d2hvc2UgdmFsdWVzIGFyZSBhY3Rpb24gY3JlYXRvcnMsIGludG8gYW4gb2JqZWN0IHdpdGggdGhl
XG4gKiBzYW1lIGtleXMsIGJ1dCB3aXRoIGV2ZXJ5IGZ1bmN0aW9uIHdyYXBwZWQgaW50byBhIGBk
aXNwYXRjaGAgY2FsbCBzbyB0aGV5XG4gKiBtYXkgYmUgaW52b2tlZCBkaXJlY3RseS4gVGhpcyBp
cyBqdXN0IGEgY29udmVuaWVuY2UgbWV0aG9kLCBhcyB5b3UgY2FuIGNhbGxcbiAqIGBzdG9yZS5k
aXNwYXRjaChNeUFjdGlvbkNyZWF0b3JzLmRvU29tZXRoaW5nKCkpYCB5b3Vyc2VsZiBqdXN0IGZp
bmUuXG4gKlxuICogRm9yIGNvbnZlbmllbmNlLCB5b3UgY2FuIGFsc28gcGFzcyBhIHNpbmdsZSBm
dW5jdGlvbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQsXG4gKiBhbmQgZ2V0IGEgZnVuY3Rpb24gaW4g
cmV0dXJuLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb258T2JqZWN0fSBhY3Rpb25DcmVhdG9ycyBB
biBvYmplY3Qgd2hvc2UgdmFsdWVzIGFyZSBhY3Rpb25cbiAqIGNyZWF0b3IgZnVuY3Rpb25zLiBP
bmUgaGFuZHkgd2F5IHRvIG9idGFpbiBpdCBpcyB0byB1c2UgRVM2IGBpbXBvcnQgKiBhc2BcbiAq
IHN5bnRheC4gWW91IG1heSBhbHNvIHBhc3MgYSBzaW5nbGUgZnVuY3Rpb24uXG4gKlxuICogQHBh
cmFtIHtGdW5jdGlvbn0gZGlzcGF0Y2ggVGhlIGBkaXNwYXRjaGAgZnVuY3Rpb24gYXZhaWxhYmxl
IG9uIHlvdXIgUmVkdXhcbiAqIHN0b3JlLlxuICpcbiAqIEByZXR1cm5zIHtGdW5jdGlvbnxPYmpl
Y3R9IFRoZSBvYmplY3QgbWltaWNraW5nIHRoZSBvcmlnaW5hbCBvYmplY3QsIGJ1dCB3aXRoXG4g
KiBldmVyeSBhY3Rpb24gY3JlYXRvciB3cmFwcGVkIGludG8gdGhlIGBkaXNwYXRjaGAgY2FsbC4g
SWYgeW91IHBhc3NlZCBhXG4gKiBmdW5jdGlvbiBhcyBgYWN0aW9uQ3JlYXRvcnNgLCB0aGUgcmV0
dXJuIHZhbHVlIHdpbGwgYWxzbyBiZSBhIHNpbmdsZVxuICogZnVuY3Rpb24uXG4gKi9cbmZ1bmN0
aW9uIGJpbmRBY3Rpb25DcmVhdG9ycyhhY3Rpb25DcmVhdG9ycywgZGlzcGF0Y2gpIHtcbiAgaWYg
KHR5cGVvZiBhY3Rpb25DcmVhdG9ycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBiaW5k
QWN0aW9uQ3JlYXRvcihhY3Rpb25DcmVhdG9ycywgZGlzcGF0Y2gpO1xuICB9XG5cbiAgaWYgKHR5
cGVvZiBhY3Rpb25DcmVhdG9ycyAhPT0gJ29iamVjdCcgfHwgYWN0aW9uQ3JlYXRvcnMgPT09IG51
bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2JpbmRBY3Rpb25DcmVhdG9ycyBleHBlY3RlZCBh
biBvYmplY3Qgb3IgYSBmdW5jdGlvbiwgaW5zdGVhZCByZWNlaXZlZCAnICsgKGFjdGlvbkNyZWF0
b3JzID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIGFjdGlvbkNyZWF0b3JzKSArICcuICcgKyAn
RGlkIHlvdSB3cml0ZSBcImltcG9ydCBBY3Rpb25DcmVhdG9ycyBmcm9tXCIgaW5zdGVhZCBvZiBc
ImltcG9ydCAqIGFzIEFjdGlvbkNyZWF0b3JzIGZyb21cIj8nKTtcbiAgfVxuXG4gIHZhciBrZXlz
ID0gT2JqZWN0LmtleXMoYWN0aW9uQ3JlYXRvcnMpO1xuICB2YXIgYm91bmRBY3Rpb25DcmVhdG9y
cyA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2
YXIga2V5ID0ga2V5c1tpXTtcbiAgICB2YXIgYWN0aW9uQ3JlYXRvciA9IGFjdGlvbkNyZWF0b3Jz
W2tleV07XG4gICAgaWYgKHR5cGVvZiBhY3Rpb25DcmVhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4g
ICAgICBib3VuZEFjdGlvbkNyZWF0b3JzW2tleV0gPSBiaW5kQWN0aW9uQ3JlYXRvcihhY3Rpb25D
cmVhdG9yLCBkaXNwYXRjaCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBib3VuZEFjdGlvbkNyZWF0
b3JzO1xufVxuXG4vKioqLyB9KSxcbi8qIDIwOSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwg
X193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJp
Y3RcIjtcbi8qIHVudXNlZCBoYXJtb255IGV4cG9ydCBkZWZhdWx0ICovXG4vKiBoYXJtb255IGlt
cG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19jb21wb3NlX18gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDg3KTtcbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVu
Y3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkr
KykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7
IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7
IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cblxu
XG4vKipcbiAqIENyZWF0ZXMgYSBzdG9yZSBlbmhhbmNlciB0aGF0IGFwcGxpZXMgbWlkZGxld2Fy
ZSB0byB0aGUgZGlzcGF0Y2ggbWV0aG9kXG4gKiBvZiB0aGUgUmVkdXggc3RvcmUuIFRoaXMgaXMg
aGFuZHkgZm9yIGEgdmFyaWV0eSBvZiB0YXNrcywgc3VjaCBhcyBleHByZXNzaW5nXG4gKiBhc3lu
Y2hyb25vdXMgYWN0aW9ucyBpbiBhIGNvbmNpc2UgbWFubmVyLCBvciBsb2dnaW5nIGV2ZXJ5IGFj
dGlvbiBwYXlsb2FkLlxuICpcbiAqIFNlZSBgcmVkdXgtdGh1bmtgIHBhY2thZ2UgYXMgYW4gZXhh
bXBsZSBvZiB0aGUgUmVkdXggbWlkZGxld2FyZS5cbiAqXG4gKiBCZWNhdXNlIG1pZGRsZXdhcmUg
aXMgcG90ZW50aWFsbHkgYXN5bmNocm9ub3VzLCB0aGlzIHNob3VsZCBiZSB0aGUgZmlyc3RcbiAq
IHN0b3JlIGVuaGFuY2VyIGluIHRoZSBjb21wb3NpdGlvbiBjaGFpbi5cbiAqXG4gKiBOb3RlIHRo
YXQgZWFjaCBtaWRkbGV3YXJlIHdpbGwgYmUgZ2l2ZW4gdGhlIGBkaXNwYXRjaGAgYW5kIGBnZXRT
dGF0ZWAgZnVuY3Rpb25zXG4gKiBhcyBuYW1lZCBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIHsu
Li5GdW5jdGlvbn0gbWlkZGxld2FyZXMgVGhlIG1pZGRsZXdhcmUgY2hhaW4gdG8gYmUgYXBwbGll
ZC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBzdG9yZSBlbmhhbmNlciBhcHBseWluZyB0aGUg
bWlkZGxld2FyZS5cbiAqL1xuZnVuY3Rpb24gYXBwbHlNaWRkbGV3YXJlKCkge1xuICBmb3IgKHZh
ciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgbWlkZGxld2FyZXMgPSBBcnJheShfbGVuKSwgX2tl
eSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBtaWRkbGV3YXJlc1tfa2V5XSA9IGFy
Z3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoY3JlYXRlU3RvcmUpIHtc
biAgICByZXR1cm4gZnVuY3Rpb24gKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlLCBlbmhhbmNlcikg
e1xuICAgICAgdmFyIHN0b3JlID0gY3JlYXRlU3RvcmUocmVkdWNlciwgcHJlbG9hZGVkU3RhdGUs
IGVuaGFuY2VyKTtcbiAgICAgIHZhciBfZGlzcGF0Y2ggPSBzdG9yZS5kaXNwYXRjaDtcbiAgICAg
IHZhciBjaGFpbiA9IFtdO1xuXG4gICAgICB2YXIgbWlkZGxld2FyZUFQSSA9IHtcbiAgICAgICAg
Z2V0U3RhdGU6IHN0b3JlLmdldFN0YXRlLFxuICAgICAgICBkaXNwYXRjaDogZnVuY3Rpb24gZGlz
cGF0Y2goYWN0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIF9kaXNwYXRjaChhY3Rpb24pO1xuICAg
ICAgICB9XG4gICAgICB9O1xuICAgICAgY2hhaW4gPSBtaWRkbGV3YXJlcy5tYXAoZnVuY3Rpb24g
KG1pZGRsZXdhcmUpIHtcbiAgICAgICAgcmV0dXJuIG1pZGRsZXdhcmUobWlkZGxld2FyZUFQSSk7
XG4gICAgICB9KTtcbiAgICAgIF9kaXNwYXRjaCA9IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MF9fY29tcG9zZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLmFwcGx5KHVuZGVmaW5lZCwgY2hhaW4p
KHN0b3JlLmRpc3BhdGNoKTtcblxuICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBzdG9yZSwge1xu
ICAgICAgICBkaXNwYXRjaDogX2Rpc3BhdGNoXG4gICAgICB9KTtcbiAgICB9O1xuICB9O1xufVxu
XG4vKioqLyB9KSxcbi8qIDIxMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNr
X2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8q
IHVudXNlZCBoYXJtb255IGV4cG9ydCBjcmVhdGVQcm92aWRlciAqL1xuLyogaGFybW9ueSBpbXBv
cnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg5KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZh
ciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfcHJvcF90eXBlc19fID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg4OSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX3Byb3BfdHlwZXNfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9wcm9wX3R5cGVzX18pO1xuLyogaGFybW9ueSBpbXBv
cnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fdXRpbHNfUHJvcFR5cGVzX18g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX3V0aWxzX3dhcm5pbmdfXyA9IF9fd2VicGFja19yZXF1
aXJlX18oNDkpO1xuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rv
cikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcg
VHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxu
ZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNl
bGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFs
aXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0
eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwi
KSA/IGNhbGwgOiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJD
bGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNs
YXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11
c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xh
c3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBz
dXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVu
dW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7
IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90
eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJD
bGFzczsgfVxuXG5cblxuXG5cblxudmFyIGRpZFdhcm5BYm91dFJlY2VpdmluZ1N0b3JlID0gZmFs
c2U7XG5mdW5jdGlvbiB3YXJuQWJvdXRSZWNlaXZpbmdTdG9yZSgpIHtcbiAgaWYgKGRpZFdhcm5B
Ym91dFJlY2VpdmluZ1N0b3JlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGRpZFdhcm5BYm91dFJl
Y2VpdmluZ1N0b3JlID0gdHJ1ZTtcblxuICBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8zX191dGlsc193YXJuaW5nX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKCc8UHJvdmlkZXI+IGRv
ZXMgbm90IHN1cHBvcnQgY2hhbmdpbmcgYHN0b3JlYCBvbiB0aGUgZmx5LiAnICsgJ0l0IGlzIG1v
c3QgbGlrZWx5IHRoYXQgeW91IHNlZSB0aGlzIGVycm9yIGJlY2F1c2UgeW91IHVwZGF0ZWQgdG8g
JyArICdSZWR1eCAyLnggYW5kIFJlYWN0IFJlZHV4IDIueCB3aGljaCBubyBsb25nZXIgaG90IHJl
bG9hZCByZWR1Y2VycyAnICsgJ2F1dG9tYXRpY2FsbHkuIFNlZSBodHRwczovL2dpdGh1Yi5jb20v
cmVhY3Rqcy9yZWFjdC1yZWR1eC9yZWxlYXNlcy8nICsgJ3RhZy92Mi4wLjAgZm9yIHRoZSBtaWdy
YXRpb24gaW5zdHJ1Y3Rpb25zLicpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQcm92aWRlcigpIHtc
biAgdmFyIF9Qcm92aWRlciRjaGlsZENvbnRleDtcblxuICB2YXIgc3RvcmVLZXkgPSBhcmd1bWVu
dHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sw
XSA6ICdzdG9yZSc7XG4gIHZhciBzdWJLZXkgPSBhcmd1bWVudHNbMV07XG5cbiAgdmFyIHN1YnNj
cmlwdGlvbktleSA9IHN1YktleSB8fCBzdG9yZUtleSArICdTdWJzY3JpcHRpb24nO1xuXG4gIHZh
ciBQcm92aWRlciA9IGZ1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gICAgX2luaGVyaXRzKFByb3Zp
ZGVyLCBfQ29tcG9uZW50KTtcblxuICAgIFByb3ZpZGVyLnByb3RvdHlwZS5nZXRDaGlsZENvbnRl
eHQgPSBmdW5jdGlvbiBnZXRDaGlsZENvbnRleHQoKSB7XG4gICAgICB2YXIgX3JlZjtcblxuICAg
ICAgcmV0dXJuIF9yZWYgPSB7fSwgX3JlZltzdG9yZUtleV0gPSB0aGlzW3N0b3JlS2V5XSwgX3Jl
ZltzdWJzY3JpcHRpb25LZXldID0gbnVsbCwgX3JlZjtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24g
UHJvdmlkZXIocHJvcHMsIGNvbnRleHQpIHtcbiAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQ
cm92aWRlcik7XG5cbiAgICAgIHZhciBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJu
KHRoaXMsIF9Db21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcywgY29udGV4dCkpO1xuXG4gICAgICBf
dGhpc1tzdG9yZUtleV0gPSBwcm9wcy5zdG9yZTtcbiAgICAgIHJldHVybiBfdGhpcztcbiAgICB9
XG5cbiAgICBQcm92aWRlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xu
ICAgICAgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiQ2hpbGRy
ZW5cIl0ub25seSh0aGlzLnByb3BzLmNoaWxkcmVuKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIFBy
b3ZpZGVyO1xuICB9KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiQ29tcG9u
ZW50XCJdKTtcblxuICBpZiAoZmFsc2UpIHtcbiAgICBQcm92aWRlci5wcm90b3R5cGUuY29tcG9u
ZW50V2lsbFJlY2VpdmVQcm9wcyA9IGZ1bmN0aW9uIChuZXh0UHJvcHMpIHtcbiAgICAgIGlmICh0
aGlzW3N0b3JlS2V5XSAhPT0gbmV4dFByb3BzLnN0b3JlKSB7XG4gICAgICAgIHdhcm5BYm91dFJl
Y2VpdmluZ1N0b3JlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIFByb3ZpZGVyLnByb3BU
eXBlcyA9IHtcbiAgICBzdG9yZTogX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX191dGlsc19Q
cm9wVHlwZXNfX1tcImFcIiAvKiBzdG9yZVNoYXBlICovXS5pc1JlcXVpcmVkLFxuICAgIGNoaWxk
cmVuOiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfcHJvcF90eXBlc19fX2RlZmF1bHQuYS5l
bGVtZW50LmlzUmVxdWlyZWRcbiAgfTtcbiAgUHJvdmlkZXIuY2hpbGRDb250ZXh0VHlwZXMgPSAo
X1Byb3ZpZGVyJGNoaWxkQ29udGV4ID0ge30sIF9Qcm92aWRlciRjaGlsZENvbnRleFtzdG9yZUtl
eV0gPSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX3V0aWxzX1Byb3BUeXBlc19fW1wiYVwi
IC8qIHN0b3JlU2hhcGUgKi9dLmlzUmVxdWlyZWQsIF9Qcm92aWRlciRjaGlsZENvbnRleFtzdWJz
Y3JpcHRpb25LZXldID0gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX191dGlsc19Qcm9wVHlw
ZXNfX1tcImJcIiAvKiBzdWJzY3JpcHRpb25TaGFwZSAqL10sIF9Qcm92aWRlciRjaGlsZENvbnRl
eCk7XG5cbiAgcmV0dXJuIFByb3ZpZGVyO1xufVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0
ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGNyZWF0ZVByb3ZpZGVyKCkpO1xuXG4v
KioqLyB9KSxcbi8qIDIxMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuICovXG5cblxuXG52YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18o
Nik7XG52YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbnZhciBSZWFjdFBy
b3BUeXBlc1NlY3JldCA9IF9fd2VicGFja19yZXF1aXJlX18oNTcpO1xuXG5tb2R1bGUuZXhwb3J0
cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9u
ZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3Jl
dCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUg
d2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaW52YXJp
YW50KFxuICAgICAgZmFsc2UsXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBk
aXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyAr
XG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyAr
XG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydc
biAgICApO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRT
aGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtl
ZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9y
eVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJy
YXk6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjog
c2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDog
c2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1l
bnQ6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAg
IG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTog
Z2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbVxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLmNo
ZWNrUHJvcFR5cGVzID0gZW1wdHlGdW5jdGlvbjtcbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVz
ID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcblxuXG4v
KioqLyB9KSxcbi8qIDIxMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0
IDIwMTUsIFlhaG9vISBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcg
QlNEIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMu
XG4gKi9cblxuXG52YXIgUkVBQ1RfU1RBVElDUyA9IHtcbiAgICBjaGlsZENvbnRleHRUeXBlczog
dHJ1ZSxcbiAgICBjb250ZXh0VHlwZXM6IHRydWUsXG4gICAgZGVmYXVsdFByb3BzOiB0cnVlLFxu
ICAgIGRpc3BsYXlOYW1lOiB0cnVlLFxuICAgIGdldERlZmF1bHRQcm9wczogdHJ1ZSxcbiAgICBt
aXhpbnM6IHRydWUsXG4gICAgcHJvcFR5cGVzOiB0cnVlLFxuICAgIHR5cGU6IHRydWVcbn07XG5c
bnZhciBLTk9XTl9TVEFUSUNTID0ge1xuICBuYW1lOiB0cnVlLFxuICBsZW5ndGg6IHRydWUsXG4g
IHByb3RvdHlwZTogdHJ1ZSxcbiAgY2FsbGVyOiB0cnVlLFxuICBjYWxsZWU6IHRydWUsXG4gIGFy
Z3VtZW50czogdHJ1ZSxcbiAgYXJpdHk6IHRydWVcbn07XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gT2JqZWN0
LmdldE93blByb3BlcnR5TmFtZXM7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0
LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIGdldFByb3RvdHlwZU9mID0gT2Jq
ZWN0LmdldFByb3RvdHlwZU9mO1xudmFyIG9iamVjdFByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9m
ICYmIGdldFByb3RvdHlwZU9mKE9iamVjdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24g
aG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBzb3VyY2VDb21wb25lbnQsIGJs
YWNrbGlzdCkge1xuICAgIGlmICh0eXBlb2Ygc291cmNlQ29tcG9uZW50ICE9PSAnc3RyaW5nJykg
eyAvLyBkb24ndCBob2lzdCBvdmVyIHN0cmluZyAoaHRtbCkgY29tcG9uZW50c1xuXG4gICAgICAg
IGlmIChvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgICAgICAgIHZhciBpbmhlcml0ZWRDb21wb25l
bnQgPSBnZXRQcm90b3R5cGVPZihzb3VyY2VDb21wb25lbnQpO1xuICAgICAgICAgICAgaWYgKGlu
aGVyaXRlZENvbXBvbmVudCAmJiBpbmhlcml0ZWRDb21wb25lbnQgIT09IG9iamVjdFByb3RvdHlw
ZSkge1xuICAgICAgICAgICAgICAgIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVu
dCwgaW5oZXJpdGVkQ29tcG9uZW50LCBibGFja2xpc3QpO1xuICAgICAgICAgICAgfVxuICAgICAg
ICB9XG5cbiAgICAgICAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZUNvbXBv
bmVudCk7XG5cbiAgICAgICAgaWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgICAgICAg
ICAga2V5cyA9IGtleXMuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2VDb21wb25l
bnQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5n
dGg7ICsraSkge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgICBp
ZiAoIVJFQUNUX1NUQVRJQ1Nba2V5XSAmJiAhS05PV05fU1RBVElDU1trZXldICYmICghYmxhY2ts
aXN0IHx8ICFibGFja2xpc3Rba2V5XSkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGVzY3JpcHRv
ciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2VDb21wb25lbnQsIGtleSk7XG4gICAg
ICAgICAgICAgICAgdHJ5IHsgLy8gQXZvaWQgZmFpbHVyZXMgZnJvbSByZWFkLW9ubHkgcHJvcGVy
dGllc1xuICAgICAgICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXRDb21wb25lbnQs
IGtleSwgZGVzY3JpcHRvcik7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAg
ICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXRDb21wb25lbnQ7XG4g
ICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldENvbXBvbmVudDtcbn07XG5cblxuLyoqKi8gfSksXG4v
KiAyMTMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG5c
blxuLyoqXG4gKiBVc2UgaW52YXJpYW50KCkgdG8gYXNzZXJ0IHN0YXRlIHdoaWNoIHlvdXIgcHJv
Z3JhbSBhc3N1bWVzIHRvIGJlIHRydWUuXG4gKlxuICogUHJvdmlkZSBzcHJpbnRmLXN0eWxlIGZv
cm1hdCAob25seSAlcyBpcyBzdXBwb3J0ZWQpIGFuZCBhcmd1bWVudHNcbiAqIHRvIHByb3ZpZGUg
aW5mb3JtYXRpb24gYWJvdXQgd2hhdCBicm9rZSBhbmQgd2hhdCB5b3Ugd2VyZVxuICogZXhwZWN0
aW5nLlxuICpcbiAqIFRoZSBpbnZhcmlhbnQgbWVzc2FnZSB3aWxsIGJlIHN0cmlwcGVkIGluIHBy
b2R1Y3Rpb24sIGJ1dCB0aGUgaW52YXJpYW50XG4gKiB3aWxsIHJlbWFpbiB0byBlbnN1cmUgbG9n
aWMgZG9lcyBub3QgZGlmZmVyIGluIHByb2R1Y3Rpb24uXG4gKi9cblxudmFyIGludmFyaWFudCA9
IGZ1bmN0aW9uKGNvbmRpdGlvbiwgZm9ybWF0LCBhLCBiLCBjLCBkLCBlLCBmKSB7XG4gIGlmIChm
YWxzZSkge1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3
IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xu
ICAgIH1cbiAgfVxuXG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdmFyIGVycm9yO1xuICAgIGlm
IChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAg
ICAgICdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRl
diBlbnZpcm9ubWVudCAnICtcbiAgICAgICAgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFu
ZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJ1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xu
ICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07XG4gICAgICB2YXIgYXJnSW5kZXgg
PSAwO1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgIGZvcm1hdC5yZXBsYWNlKC8l
cy9nLCBmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107IH0pXG4gICAgICApO1xu
ICAgICAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB9XG5cbiAgICBl
cnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mg
b3duIGZyYW1lXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0g
aW52YXJpYW50O1xuXG5cbi8qKiovIH0pLFxuLyogMjE0ICovXG4vKioqLyAoZnVuY3Rpb24obW9k
dWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNl
IHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1
aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBT
dWJzY3JpcHRpb247IH0pO1xuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25z
dHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJv
dyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9
IH1cblxuLy8gZW5jYXBzdWxhdGVzIHRoZSBzdWJzY3JpcHRpb24gbG9naWMgZm9yIGNvbm5lY3Rp
bmcgYSBjb21wb25lbnQgdG8gdGhlIHJlZHV4IHN0b3JlLCBhc1xuLy8gd2VsbCBhcyBuZXN0aW5n
IHN1YnNjcmlwdGlvbnMgb2YgZGVzY2VuZGFudCBjb21wb25lbnRzLCBzbyB0aGF0IHdlIGNhbiBl
bnN1cmUgdGhlXG4vLyBhbmNlc3RvciBjb21wb25lbnRzIHJlLXJlbmRlciBiZWZvcmUgZGVzY2Vu
ZGFudHNcblxudmFyIENMRUFSRUQgPSBudWxsO1xudmFyIG51bGxMaXN0ZW5lcnMgPSB7XG4gIG5v
dGlmeTogZnVuY3Rpb24gbm90aWZ5KCkge31cbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUxpc3RlbmVy
Q29sbGVjdGlvbigpIHtcbiAgLy8gdGhlIGN1cnJlbnQvbmV4dCBwYXR0ZXJuIGlzIGNvcGllZCBm
cm9tIHJlZHV4J3MgY3JlYXRlU3RvcmUgY29kZS5cbiAgLy8gVE9ETzogcmVmYWN0b3IrZXhwb3Nl
IHRoYXQgY29kZSB0byBiZSByZXVzYWJsZSBoZXJlP1xuICB2YXIgY3VycmVudCA9IFtdO1xuICB2
YXIgbmV4dCA9IFtdO1xuXG4gIHJldHVybiB7XG4gICAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKCkg
e1xuICAgICAgbmV4dCA9IENMRUFSRUQ7XG4gICAgICBjdXJyZW50ID0gQ0xFQVJFRDtcbiAgICB9
LFxuICAgIG5vdGlmeTogZnVuY3Rpb24gbm90aWZ5KCkge1xuICAgICAgdmFyIGxpc3RlbmVycyA9
IGN1cnJlbnQgPSBuZXh0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVu
Z3RoOyBpKyspIHtcbiAgICAgICAgbGlzdGVuZXJzW2ldKCk7XG4gICAgICB9XG4gICAgfSxcbiAg
ICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH0sXG4gICAg
c3Vic2NyaWJlOiBmdW5jdGlvbiBzdWJzY3JpYmUobGlzdGVuZXIpIHtcbiAgICAgIHZhciBpc1N1
YnNjcmliZWQgPSB0cnVlO1xuICAgICAgaWYgKG5leHQgPT09IGN1cnJlbnQpIG5leHQgPSBjdXJy
ZW50LnNsaWNlKCk7XG4gICAgICBuZXh0LnB1c2gobGlzdGVuZXIpO1xuXG4gICAgICByZXR1cm4g
ZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG4gICAgICAgIGlmICghaXNTdWJzY3JpYmVkIHx8IGN1
cnJlbnQgPT09IENMRUFSRUQpIHJldHVybjtcbiAgICAgICAgaXNTdWJzY3JpYmVkID0gZmFsc2U7
XG5cbiAgICAgICAgaWYgKG5leHQgPT09IGN1cnJlbnQpIG5leHQgPSBjdXJyZW50LnNsaWNlKCk7
XG4gICAgICAgIG5leHQuc3BsaWNlKG5leHQuaW5kZXhPZihsaXN0ZW5lciksIDEpO1xuICAgICAg
fTtcbiAgICB9XG4gIH07XG59XG5cbnZhciBTdWJzY3JpcHRpb24gPSBmdW5jdGlvbiAoKSB7XG4g
IGZ1bmN0aW9uIFN1YnNjcmlwdGlvbihzdG9yZSwgcGFyZW50U3ViLCBvblN0YXRlQ2hhbmdlKSB7
XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFN1YnNjcmlwdGlvbik7XG5cbiAgICB0aGlzLnN0
b3JlID0gc3RvcmU7XG4gICAgdGhpcy5wYXJlbnRTdWIgPSBwYXJlbnRTdWI7XG4gICAgdGhpcy5v
blN0YXRlQ2hhbmdlID0gb25TdGF0ZUNoYW5nZTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlID0gbnVs
bDtcbiAgICB0aGlzLmxpc3RlbmVycyA9IG51bGxMaXN0ZW5lcnM7XG4gIH1cblxuICBTdWJzY3Jp
cHRpb24ucHJvdG90eXBlLmFkZE5lc3RlZFN1YiA9IGZ1bmN0aW9uIGFkZE5lc3RlZFN1YihsaXN0
ZW5lcikge1xuICAgIHRoaXMudHJ5U3Vic2NyaWJlKCk7XG4gICAgcmV0dXJuIHRoaXMubGlzdGVu
ZXJzLnN1YnNjcmliZShsaXN0ZW5lcik7XG4gIH07XG5cbiAgU3Vic2NyaXB0aW9uLnByb3RvdHlw
ZS5ub3RpZnlOZXN0ZWRTdWJzID0gZnVuY3Rpb24gbm90aWZ5TmVzdGVkU3VicygpIHtcbiAgICB0
aGlzLmxpc3RlbmVycy5ub3RpZnkoKTtcbiAgfTtcblxuICBTdWJzY3JpcHRpb24ucHJvdG90eXBl
LmlzU3Vic2NyaWJlZCA9IGZ1bmN0aW9uIGlzU3Vic2NyaWJlZCgpIHtcbiAgICByZXR1cm4gQm9v
bGVhbih0aGlzLnVuc3Vic2NyaWJlKTtcbiAgfTtcblxuICBTdWJzY3JpcHRpb24ucHJvdG90eXBl
LnRyeVN1YnNjcmliZSA9IGZ1bmN0aW9uIHRyeVN1YnNjcmliZSgpIHtcbiAgICBpZiAoIXRoaXMu
dW5zdWJzY3JpYmUpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUgPSB0aGlzLnBhcmVudFN1YiA/
IHRoaXMucGFyZW50U3ViLmFkZE5lc3RlZFN1Yih0aGlzLm9uU3RhdGVDaGFuZ2UpIDogdGhpcy5z
dG9yZS5zdWJzY3JpYmUodGhpcy5vblN0YXRlQ2hhbmdlKTtcblxuICAgICAgdGhpcy5saXN0ZW5l
cnMgPSBjcmVhdGVMaXN0ZW5lckNvbGxlY3Rpb24oKTtcbiAgICB9XG4gIH07XG5cbiAgU3Vic2Ny
aXB0aW9uLnByb3RvdHlwZS50cnlVbnN1YnNjcmliZSA9IGZ1bmN0aW9uIHRyeVVuc3Vic2NyaWJl
KCkge1xuICAgIGlmICh0aGlzLnVuc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJl
KCk7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlID0gbnVsbDtcbiAgICAgIHRoaXMubGlzdGVuZXJz
LmNsZWFyKCk7XG4gICAgICB0aGlzLmxpc3RlbmVycyA9IG51bGxMaXN0ZW5lcnM7XG4gICAgfVxu
ICB9O1xuXG4gIHJldHVybiBTdWJzY3JpcHRpb247XG59KCk7XG5cblxuXG4vKioqLyB9KSxcbi8q
IDIxNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIHVudXNlZCBoYXJtb255
IGV4cG9ydCBjcmVhdGVDb25uZWN0ICovXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8wX19jb21wb25lbnRzX2Nvbm5lY3RBZHZhbmNlZF9fID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg5MSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8xX191dGlsc19zaGFsbG93RXF1YWxfXyA9IF9fd2VicGFja19yZXF1
aXJlX18oMjE2KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzJfX21hcERpc3BhdGNoVG9Qcm9wc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMTcp
O1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19f
bWFwU3RhdGVUb1Byb3BzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxOCk7XG4vKiBoYXJtb255
IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19tZXJnZVByb3BzX18g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxOSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19zZWxlY3RvckZhY3RvcnlfXyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMjIwKTtcbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24g
KHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2
YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdl
dFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbmZ1bmN0aW9u
IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhvYmosIGtleXMpIHsgdmFyIHRhcmdldCA9IHt9OyBm
b3IgKHZhciBpIGluIG9iaikgeyBpZiAoa2V5cy5pbmRleE9mKGkpID49IDApIGNvbnRpbnVlOyBp
ZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGkpKSBjb250aW51
ZTsgdGFyZ2V0W2ldID0gb2JqW2ldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuXG5cblxuXG5cblxu
XG4vKlxuICBjb25uZWN0IGlzIGEgZmFjYWRlIG92ZXIgY29ubmVjdEFkdmFuY2VkLiBJdCB0dXJu
cyBpdHMgYXJncyBpbnRvIGEgY29tcGF0aWJsZVxuICBzZWxlY3RvckZhY3RvcnksIHdoaWNoIGhh
cyB0aGUgc2lnbmF0dXJlOlxuXG4gICAgKGRpc3BhdGNoLCBvcHRpb25zKSA9PiAobmV4dFN0YXRl
LCBuZXh0T3duUHJvcHMpID0+IG5leHRGaW5hbFByb3BzXG4gIFxuICBjb25uZWN0IHBhc3NlcyBp
dHMgYXJncyB0byBjb25uZWN0QWR2YW5jZWQgYXMgb3B0aW9ucywgd2hpY2ggd2lsbCBpbiB0dXJu
IHBhc3MgdGhlbSB0b1xuICBzZWxlY3RvckZhY3RvcnkgZWFjaCB0aW1lIGEgQ29ubmVjdCBjb21w
b25lbnQgaW5zdGFuY2UgaXMgaW5zdGFudGlhdGVkIG9yIGhvdCByZWxvYWRlZC5cblxuICBzZWxl
Y3RvckZhY3RvcnkgcmV0dXJucyBhIGZpbmFsIHByb3BzIHNlbGVjdG9yIGZyb20gaXRzIG1hcFN0
YXRlVG9Qcm9wcyxcbiAgbWFwU3RhdGVUb1Byb3BzRmFjdG9yaWVzLCBtYXBEaXNwYXRjaFRvUHJv
cHMsIG1hcERpc3BhdGNoVG9Qcm9wc0ZhY3RvcmllcywgbWVyZ2VQcm9wcyxcbiAgbWVyZ2VQcm9w
c0ZhY3RvcmllcywgYW5kIHB1cmUgYXJncy5cblxuICBUaGUgcmVzdWx0aW5nIGZpbmFsIHByb3Bz
IHNlbGVjdG9yIGlzIGNhbGxlZCBieSB0aGUgQ29ubmVjdCBjb21wb25lbnQgaW5zdGFuY2Ugd2hl
bmV2ZXJcbiAgaXQgcmVjZWl2ZXMgbmV3IHByb3BzIG9yIHN0b3JlIHN0YXRlLlxuICovXG5cbmZ1
bmN0aW9uIG1hdGNoKGFyZywgZmFjdG9yaWVzLCBuYW1lKSB7XG4gIGZvciAodmFyIGkgPSBmYWN0
b3JpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgcmVzdWx0ID0gZmFjdG9y
aWVzW2ldKGFyZyk7XG4gICAgaWYgKHJlc3VsdCkgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJl
dHVybiBmdW5jdGlvbiAoZGlzcGF0Y2gsIG9wdGlvbnMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3Io
J0ludmFsaWQgdmFsdWUgb2YgdHlwZSAnICsgdHlwZW9mIGFyZyArICcgZm9yICcgKyBuYW1lICsg
JyBhcmd1bWVudCB3aGVuIGNvbm5lY3RpbmcgY29tcG9uZW50ICcgKyBvcHRpb25zLndyYXBwZWRD
b21wb25lbnROYW1lICsgJy4nKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3RyaWN0RXF1YWwoYSwg
Yikge1xuICByZXR1cm4gYSA9PT0gYjtcbn1cblxuLy8gY3JlYXRlQ29ubmVjdCB3aXRoIGRlZmF1
bHQgYXJncyBidWlsZHMgdGhlICdvZmZpY2lhbCcgY29ubmVjdCBiZWhhdmlvci4gQ2FsbGluZyBp
dCB3aXRoXG4vLyBkaWZmZXJlbnQgb3B0aW9ucyBvcGVucyB1cCBzb21lIHRlc3RpbmcgYW5kIGV4
dGVuc2liaWxpdHkgc2NlbmFyaW9zXG5mdW5jdGlvbiBjcmVhdGVDb25uZWN0KCkge1xuICB2YXIg
X3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVk
ID8gYXJndW1lbnRzWzBdIDoge30sXG4gICAgICBfcmVmJGNvbm5lY3RIT0MgPSBfcmVmLmNvbm5l
Y3RIT0MsXG4gICAgICBjb25uZWN0SE9DID0gX3JlZiRjb25uZWN0SE9DID09PSB1bmRlZmluZWQg
PyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2NvbXBvbmVudHNfY29ubmVjdEFkdmFuY2Vk
X19bXCJhXCIgLyogZGVmYXVsdCAqL10gOiBfcmVmJGNvbm5lY3RIT0MsXG4gICAgICBfcmVmJG1h
cFN0YXRlVG9Qcm9wc0YgPSBfcmVmLm1hcFN0YXRlVG9Qcm9wc0ZhY3RvcmllcyxcbiAgICAgIG1h
cFN0YXRlVG9Qcm9wc0ZhY3RvcmllcyA9IF9yZWYkbWFwU3RhdGVUb1Byb3BzRiA9PT0gdW5kZWZp
bmVkID8gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19tYXBTdGF0ZVRvUHJvcHNfX1tcImFc
IiAvKiBkZWZhdWx0ICovXSA6IF9yZWYkbWFwU3RhdGVUb1Byb3BzRixcbiAgICAgIF9yZWYkbWFw
RGlzcGF0Y2hUb1BybyA9IF9yZWYubWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVzLFxuICAgICAg
bWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVzID0gX3JlZiRtYXBEaXNwYXRjaFRvUHJvID09PSB1
bmRlZmluZWQgPyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21hcERpc3BhdGNoVG9Qcm9w
c19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dIDogX3JlZiRtYXBEaXNwYXRjaFRvUHJvLFxuICAgICAg
X3JlZiRtZXJnZVByb3BzRmFjdG9yID0gX3JlZi5tZXJnZVByb3BzRmFjdG9yaWVzLFxuICAgICAg
bWVyZ2VQcm9wc0ZhY3RvcmllcyA9IF9yZWYkbWVyZ2VQcm9wc0ZhY3RvciA9PT0gdW5kZWZpbmVk
ID8gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19tZXJnZVByb3BzX19bXCJhXCIgLyogZGVm
YXVsdCAqL10gOiBfcmVmJG1lcmdlUHJvcHNGYWN0b3IsXG4gICAgICBfcmVmJHNlbGVjdG9yRmFj
dG9yeSA9IF9yZWYuc2VsZWN0b3JGYWN0b3J5LFxuICAgICAgc2VsZWN0b3JGYWN0b3J5ID0gX3Jl
ZiRzZWxlY3RvckZhY3RvcnkgPT09IHVuZGVmaW5lZCA/IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfNV9fc2VsZWN0b3JGYWN0b3J5X19bXCJhXCIgLyogZGVmYXVsdCAqL10gOiBfcmVmJHNlbGVj
dG9yRmFjdG9yeTtcblxuICByZXR1cm4gZnVuY3Rpb24gY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMs
IG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcykge1xuICAgIHZhciBfcmVmMiA9IGFyZ3Vt
ZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRz
WzNdIDoge30sXG4gICAgICAgIF9yZWYyJHB1cmUgPSBfcmVmMi5wdXJlLFxuICAgICAgICBwdXJl
ID0gX3JlZjIkcHVyZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IF9yZWYyJHB1cmUsXG4gICAgICAg
IF9yZWYyJGFyZVN0YXRlc0VxdWFsID0gX3JlZjIuYXJlU3RhdGVzRXF1YWwsXG4gICAgICAgIGFy
ZVN0YXRlc0VxdWFsID0gX3JlZjIkYXJlU3RhdGVzRXF1YWwgPT09IHVuZGVmaW5lZCA/IHN0cmlj
dEVxdWFsIDogX3JlZjIkYXJlU3RhdGVzRXF1YWwsXG4gICAgICAgIF9yZWYyJGFyZU93blByb3Bz
RXF1YSA9IF9yZWYyLmFyZU93blByb3BzRXF1YWwsXG4gICAgICAgIGFyZU93blByb3BzRXF1YWwg
PSBfcmVmMiRhcmVPd25Qcm9wc0VxdWEgPT09IHVuZGVmaW5lZCA/IF9fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMV9fdXRpbHNfc2hhbGxvd0VxdWFsX19bXCJhXCIgLyogZGVmYXVsdCAqL10gOiBf
cmVmMiRhcmVPd25Qcm9wc0VxdWEsXG4gICAgICAgIF9yZWYyJGFyZVN0YXRlUHJvcHNFcSA9IF9y
ZWYyLmFyZVN0YXRlUHJvcHNFcXVhbCxcbiAgICAgICAgYXJlU3RhdGVQcm9wc0VxdWFsID0gX3Jl
ZjIkYXJlU3RhdGVQcm9wc0VxID09PSB1bmRlZmluZWQgPyBfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzFfX3V0aWxzX3NoYWxsb3dFcXVhbF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dIDogX3JlZjIk
YXJlU3RhdGVQcm9wc0VxLFxuICAgICAgICBfcmVmMiRhcmVNZXJnZWRQcm9wc0UgPSBfcmVmMi5h
cmVNZXJnZWRQcm9wc0VxdWFsLFxuICAgICAgICBhcmVNZXJnZWRQcm9wc0VxdWFsID0gX3JlZjIk
YXJlTWVyZ2VkUHJvcHNFID09PSB1bmRlZmluZWQgPyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfX3V0aWxzX3NoYWxsb3dFcXVhbF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dIDogX3JlZjIkYXJl
TWVyZ2VkUHJvcHNFLFxuICAgICAgICBleHRyYU9wdGlvbnMgPSBfb2JqZWN0V2l0aG91dFByb3Bl
cnRpZXMoX3JlZjIsIFsncHVyZScsICdhcmVTdGF0ZXNFcXVhbCcsICdhcmVPd25Qcm9wc0VxdWFs
JywgJ2FyZVN0YXRlUHJvcHNFcXVhbCcsICdhcmVNZXJnZWRQcm9wc0VxdWFsJ10pO1xuXG4gICAg
dmFyIGluaXRNYXBTdGF0ZVRvUHJvcHMgPSBtYXRjaChtYXBTdGF0ZVRvUHJvcHMsIG1hcFN0YXRl
VG9Qcm9wc0ZhY3RvcmllcywgJ21hcFN0YXRlVG9Qcm9wcycpO1xuICAgIHZhciBpbml0TWFwRGlz
cGF0Y2hUb1Byb3BzID0gbWF0Y2gobWFwRGlzcGF0Y2hUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJv
cHNGYWN0b3JpZXMsICdtYXBEaXNwYXRjaFRvUHJvcHMnKTtcbiAgICB2YXIgaW5pdE1lcmdlUHJv
cHMgPSBtYXRjaChtZXJnZVByb3BzLCBtZXJnZVByb3BzRmFjdG9yaWVzLCAnbWVyZ2VQcm9wcycp
O1xuXG4gICAgcmV0dXJuIGNvbm5lY3RIT0Moc2VsZWN0b3JGYWN0b3J5LCBfZXh0ZW5kcyh7XG4g
ICAgICAvLyB1c2VkIGluIGVycm9yIG1lc3NhZ2VzXG4gICAgICBtZXRob2ROYW1lOiAnY29ubmVj
dCcsXG5cbiAgICAgIC8vIHVzZWQgdG8gY29tcHV0ZSBDb25uZWN0J3MgZGlzcGxheU5hbWUgZnJv
bSB0aGUgd3JhcHBlZCBjb21wb25lbnQncyBkaXNwbGF5TmFtZS5cbiAgICAgIGdldERpc3BsYXlO
YW1lOiBmdW5jdGlvbiBnZXREaXNwbGF5TmFtZShuYW1lKSB7XG4gICAgICAgIHJldHVybiAnQ29u
bmVjdCgnICsgbmFtZSArICcpJztcbiAgICAgIH0sXG5cbiAgICAgIC8vIGlmIG1hcFN0YXRlVG9Q
cm9wcyBpcyBmYWxzeSwgdGhlIENvbm5lY3QgY29tcG9uZW50IGRvZXNuJ3Qgc3Vic2NyaWJlIHRv
IHN0b3JlIHN0YXRlIGNoYW5nZXNcbiAgICAgIHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlczogQm9v
bGVhbihtYXBTdGF0ZVRvUHJvcHMpLFxuXG4gICAgICAvLyBwYXNzZWQgdGhyb3VnaCB0byBzZWxl
Y3RvckZhY3RvcnlcbiAgICAgIGluaXRNYXBTdGF0ZVRvUHJvcHM6IGluaXRNYXBTdGF0ZVRvUHJv
cHMsXG4gICAgICBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzOiBpbml0TWFwRGlzcGF0Y2hUb1Byb3Bz
LFxuICAgICAgaW5pdE1lcmdlUHJvcHM6IGluaXRNZXJnZVByb3BzLFxuICAgICAgcHVyZTogcHVy
ZSxcbiAgICAgIGFyZVN0YXRlc0VxdWFsOiBhcmVTdGF0ZXNFcXVhbCxcbiAgICAgIGFyZU93blBy
b3BzRXF1YWw6IGFyZU93blByb3BzRXF1YWwsXG4gICAgICBhcmVTdGF0ZVByb3BzRXF1YWw6IGFy
ZVN0YXRlUHJvcHNFcXVhbCxcbiAgICAgIGFyZU1lcmdlZFByb3BzRXF1YWw6IGFyZU1lcmdlZFBy
b3BzRXF1YWxcblxuICAgIH0sIGV4dHJhT3B0aW9ucykpO1xuICB9O1xufVxuXG4vKiBoYXJtb255
IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGNyZWF0ZUNv
bm5lY3QoKSk7XG5cbi8qKiovIH0pLFxuLyogMjE2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxl
LCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0
cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGltbXV0YWJsZSkgKi8gX193ZWJwYWNrX2V4cG9y
dHNfX1tcImFcIl0gPSBzaGFsbG93RXF1YWw7XG52YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlw
ZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gaXMoeCwgeSkge1xuICBpZiAoeCA9PT0geSkg
e1xuICAgIHJldHVybiB4ICE9PSAwIHx8IHkgIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuICB9
IGVsc2Uge1xuICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG4gIH1cbn1cblxuZnVuY3Rp
b24gc2hhbGxvd0VxdWFsKG9iakEsIG9iakIpIHtcbiAgaWYgKGlzKG9iakEsIG9iakIpKSByZXR1
cm4gdHJ1ZTtcblxuICBpZiAodHlwZW9mIG9iakEgIT09ICdvYmplY3QnIHx8IG9iakEgPT09IG51
bGwgfHwgdHlwZW9mIG9iakIgIT09ICdvYmplY3QnIHx8IG9iakIgPT09IG51bGwpIHtcbiAgICBy
ZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhvYmpBKTtcbiAg
dmFyIGtleXNCID0gT2JqZWN0LmtleXMob2JqQik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0g
a2V5c0IubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlz
QS5sZW5ndGg7IGkrKykge1xuICAgIGlmICghaGFzT3duLmNhbGwob2JqQiwga2V5c0FbaV0pIHx8
ICFpcyhvYmpBW2tleXNBW2ldXSwgb2JqQltrZXlzQVtpXV0pKSB7XG4gICAgICByZXR1cm4gZmFs
c2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKiovIH0pLFxuLyogMjE3
ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogdW51c2VkIGhhcm1vbnkgZXhw
b3J0IHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uICovXG4vKiB1bnVzZWQgaGFybW9u
eSBleHBvcnQgd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzTWlzc2luZyAqL1xuLyogdW51c2VkIGhh
cm1vbnkgZXhwb3J0IHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc09iamVjdCAqL1xuLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWR1eF9fID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyOSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8xX193cmFwTWFwVG9Qcm9wc19fID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg5Mik7XG5cblxuXG5mdW5jdGlvbiB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5jdGlvbiht
YXBEaXNwYXRjaFRvUHJvcHMpIHtcbiAgcmV0dXJuIHR5cGVvZiBtYXBEaXNwYXRjaFRvUHJvcHMg
PT09ICdmdW5jdGlvbicgPyBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX193cmFw
TWFwVG9Qcm9wc19fW1wiYlwiIC8qIHdyYXBNYXBUb1Byb3BzRnVuYyAqL10pKG1hcERpc3BhdGNo
VG9Qcm9wcywgJ21hcERpc3BhdGNoVG9Qcm9wcycpIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlv
biB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nKG1hcERpc3BhdGNoVG9Qcm9wcykge1xu
ICByZXR1cm4gIW1hcERpc3BhdGNoVG9Qcm9wcyA/IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzFfX3dyYXBNYXBUb1Byb3BzX19bXCJhXCIgLyogd3JhcE1hcFRvUHJvcHNDb25zdGFu
dCAqL10pKGZ1bmN0aW9uIChkaXNwYXRjaCkge1xuICAgIHJldHVybiB7IGRpc3BhdGNoOiBkaXNw
YXRjaCB9O1xuICB9KSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gd2hlbk1hcERpc3BhdGNo
VG9Qcm9wc0lzT2JqZWN0KG1hcERpc3BhdGNoVG9Qcm9wcykge1xuICByZXR1cm4gbWFwRGlzcGF0
Y2hUb1Byb3BzICYmIHR5cGVvZiBtYXBEaXNwYXRjaFRvUHJvcHMgPT09ICdvYmplY3QnID8gT2Jq
ZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fd3JhcE1hcFRvUHJvcHNfX1tcImFcIiAv
KiB3cmFwTWFwVG9Qcm9wc0NvbnN0YW50ICovXSkoZnVuY3Rpb24gKGRpc3BhdGNoKSB7XG4gICAg
cmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVkdXhfX1tcImFcIiAv
KiBiaW5kQWN0aW9uQ3JlYXRvcnMgKi9dKShtYXBEaXNwYXRjaFRvUHJvcHMsIGRpc3BhdGNoKTtc
biAgfSkgOiB1bmRlZmluZWQ7XG59XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193
ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoW3doZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0
aW9uLCB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nLCB3aGVuTWFwRGlzcGF0Y2hUb1By
b3BzSXNPYmplY3RdKTtcblxuLyoqKi8gfSksXG4vKiAyMTggKi9cbi8qKiovIChmdW5jdGlvbiht
b2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1
c2Ugc3RyaWN0XCI7XG4vKiB1bnVzZWQgaGFybW9ueSBleHBvcnQgd2hlbk1hcFN0YXRlVG9Qcm9w
c0lzRnVuY3Rpb24gKi9cbi8qIHVudXNlZCBoYXJtb255IGV4cG9ydCB3aGVuTWFwU3RhdGVUb1By
b3BzSXNNaXNzaW5nICovXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX193cmFwTWFwVG9Qcm9wc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Mik7
XG5cblxuZnVuY3Rpb24gd2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb24obWFwU3RhdGVUb1By
b3BzKSB7XG4gIHJldHVybiB0eXBlb2YgbWFwU3RhdGVUb1Byb3BzID09PSAnZnVuY3Rpb24nID8g
T2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fd3JhcE1hcFRvUHJvcHNfX1tcImJc
IiAvKiB3cmFwTWFwVG9Qcm9wc0Z1bmMgKi9dKShtYXBTdGF0ZVRvUHJvcHMsICdtYXBTdGF0ZVRv
UHJvcHMnKSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gd2hlbk1hcFN0YXRlVG9Qcm9wc0lz
TWlzc2luZyhtYXBTdGF0ZVRvUHJvcHMpIHtcbiAgcmV0dXJuICFtYXBTdGF0ZVRvUHJvcHMgPyBP
YmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX193cmFwTWFwVG9Qcm9wc19fW1wiYVwi
IC8qIHdyYXBNYXBUb1Byb3BzQ29uc3RhbnQgKi9dKShmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJu
IHt9O1xuICB9KSA6IHVuZGVmaW5lZDtcbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAq
LyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChbd2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVu
Y3Rpb24sIHdoZW5NYXBTdGF0ZVRvUHJvcHNJc01pc3NpbmddKTtcblxuLyoqKi8gfSksXG4vKiAy
MTkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiB1bnVzZWQgaGFybW9ueSBl
eHBvcnQgZGVmYXVsdE1lcmdlUHJvcHMgKi9cbi8qIHVudXNlZCBoYXJtb255IGV4cG9ydCB3cmFw
TWVyZ2VQcm9wc0Z1bmMgKi9cbi8qIHVudXNlZCBoYXJtb255IGV4cG9ydCB3aGVuTWVyZ2VQcm9w
c0lzRnVuY3Rpb24gKi9cbi8qIHVudXNlZCBoYXJtb255IGV4cG9ydCB3aGVuTWVyZ2VQcm9wc0lz
T21pdHRlZCAqL1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMF9fdXRpbHNfdmVyaWZ5UGxhaW5PYmplY3RfXyA9IF9fd2VicGFja19yZXF1aXJlX18o
OTMpO1xudmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7
IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2Ug
PSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90
b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBz
b3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxuXG5cbmZ1bmN0aW9uIGRlZmF1
bHRNZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKSB7XG4gIHJl
dHVybiBfZXh0ZW5kcyh7fSwgb3duUHJvcHMsIHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMpO1xu
fVxuXG5mdW5jdGlvbiB3cmFwTWVyZ2VQcm9wc0Z1bmMobWVyZ2VQcm9wcykge1xuICByZXR1cm4g
ZnVuY3Rpb24gaW5pdE1lcmdlUHJvcHNQcm94eShkaXNwYXRjaCwgX3JlZikge1xuICAgIHZhciBk
aXNwbGF5TmFtZSA9IF9yZWYuZGlzcGxheU5hbWUsXG4gICAgICAgIHB1cmUgPSBfcmVmLnB1cmUs
XG4gICAgICAgIGFyZU1lcmdlZFByb3BzRXF1YWwgPSBfcmVmLmFyZU1lcmdlZFByb3BzRXF1YWw7
XG5cbiAgICB2YXIgaGFzUnVuT25jZSA9IGZhbHNlO1xuICAgIHZhciBtZXJnZWRQcm9wcyA9IHZv
aWQgMDtcblxuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZVByb3BzUHJveHkoc3RhdGVQcm9wcywg
ZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpIHtcbiAgICAgIHZhciBuZXh0TWVyZ2VkUHJvcHMgPSBt
ZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcblxuICAgICAg
aWYgKGhhc1J1bk9uY2UpIHtcbiAgICAgICAgaWYgKCFwdXJlIHx8ICFhcmVNZXJnZWRQcm9wc0Vx
dWFsKG5leHRNZXJnZWRQcm9wcywgbWVyZ2VkUHJvcHMpKSBtZXJnZWRQcm9wcyA9IG5leHRNZXJn
ZWRQcm9wcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhc1J1bk9uY2UgPSB0cnVlO1xuICAg
ICAgICBtZXJnZWRQcm9wcyA9IG5leHRNZXJnZWRQcm9wcztcblxuICAgICAgICBpZiAoZmFsc2Up
IHZlcmlmeVBsYWluT2JqZWN0KG1lcmdlZFByb3BzLCBkaXNwbGF5TmFtZSwgJ21lcmdlUHJvcHMn
KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuICAgIH07XG4gIH07XG59
XG5cbmZ1bmN0aW9uIHdoZW5NZXJnZVByb3BzSXNGdW5jdGlvbihtZXJnZVByb3BzKSB7XG4gIHJl
dHVybiB0eXBlb2YgbWVyZ2VQcm9wcyA9PT0gJ2Z1bmN0aW9uJyA/IHdyYXBNZXJnZVByb3BzRnVu
YyhtZXJnZVByb3BzKSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gd2hlbk1lcmdlUHJvcHNJ
c09taXR0ZWQobWVyZ2VQcm9wcykge1xuICByZXR1cm4gIW1lcmdlUHJvcHMgPyBmdW5jdGlvbiAo
KSB7XG4gICAgcmV0dXJuIGRlZmF1bHRNZXJnZVByb3BzO1xuICB9IDogdW5kZWZpbmVkO1xufVxu
XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJd
ID0gKFt3aGVuTWVyZ2VQcm9wc0lzRnVuY3Rpb24sIHdoZW5NZXJnZVByb3BzSXNPbWl0dGVkXSk7
XG5cbi8qKiovIH0pLFxuLyogMjIwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBh
Y2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xu
LyogdW51c2VkIGhhcm1vbnkgZXhwb3J0IGltcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3Rvcnkg
Ki9cbi8qIHVudXNlZCBoYXJtb255IGV4cG9ydCBwdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9y
eSAqL1xuLyogaGFybW9ueSBleHBvcnQgKGltbXV0YWJsZSkgKi8gX193ZWJwYWNrX2V4cG9ydHNf
X1tcImFcIl0gPSBmaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5O1xuLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fdmVyaWZ5U3Vic2VsZWN0b3JzX18g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyMSk7XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3Bl
cnRpZXMob2JqLCBrZXlzKSB7IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIgaSBpbiBvYmopIHsg
aWYgKGtleXMuaW5kZXhPZihpKSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBl
Lmhhc093blByb3BlcnR5LmNhbGwob2JqLCBpKSkgY29udGludWU7IHRhcmdldFtpXSA9IG9ialtp
XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cblxuXG5mdW5jdGlvbiBpbXB1cmVGaW5hbFByb3BzU2Vs
ZWN0b3JGYWN0b3J5KG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVBy
b3BzLCBkaXNwYXRjaCkge1xuICByZXR1cm4gZnVuY3Rpb24gaW1wdXJlRmluYWxQcm9wc1NlbGVj
dG9yKHN0YXRlLCBvd25Qcm9wcykge1xuICAgIHJldHVybiBtZXJnZVByb3BzKG1hcFN0YXRlVG9Q
cm9wcyhzdGF0ZSwgb3duUHJvcHMpLCBtYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG93blBy
b3BzKSwgb3duUHJvcHMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBwdXJlRmluYWxQcm9wc1NlbGVj
dG9yRmFjdG9yeShtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9w
cywgZGlzcGF0Y2gsIF9yZWYpIHtcbiAgdmFyIGFyZVN0YXRlc0VxdWFsID0gX3JlZi5hcmVTdGF0
ZXNFcXVhbCxcbiAgICAgIGFyZU93blByb3BzRXF1YWwgPSBfcmVmLmFyZU93blByb3BzRXF1YWws
XG4gICAgICBhcmVTdGF0ZVByb3BzRXF1YWwgPSBfcmVmLmFyZVN0YXRlUHJvcHNFcXVhbDtcblxu
ICB2YXIgaGFzUnVuQXRMZWFzdE9uY2UgPSBmYWxzZTtcbiAgdmFyIHN0YXRlID0gdm9pZCAwO1xu
ICB2YXIgb3duUHJvcHMgPSB2b2lkIDA7XG4gIHZhciBzdGF0ZVByb3BzID0gdm9pZCAwO1xuICB2
YXIgZGlzcGF0Y2hQcm9wcyA9IHZvaWQgMDtcbiAgdmFyIG1lcmdlZFByb3BzID0gdm9pZCAwO1xu
XG4gIGZ1bmN0aW9uIGhhbmRsZUZpcnN0Q2FsbChmaXJzdFN0YXRlLCBmaXJzdE93blByb3BzKSB7
XG4gICAgc3RhdGUgPSBmaXJzdFN0YXRlO1xuICAgIG93blByb3BzID0gZmlyc3RPd25Qcm9wcztc
biAgICBzdGF0ZVByb3BzID0gbWFwU3RhdGVUb1Byb3BzKHN0YXRlLCBvd25Qcm9wcyk7XG4gICAg
ZGlzcGF0Y2hQcm9wcyA9IG1hcERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCwgb3duUHJvcHMpO1xu
ICAgIG1lcmdlZFByb3BzID0gbWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzLCBv
d25Qcm9wcyk7XG4gICAgaGFzUnVuQXRMZWFzdE9uY2UgPSB0cnVlO1xuICAgIHJldHVybiBtZXJn
ZWRQcm9wcztcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZU5ld1Byb3BzQW5kTmV3U3RhdGUoKSB7
XG4gICAgc3RhdGVQcm9wcyA9IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xuXG4g
ICAgaWYgKG1hcERpc3BhdGNoVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcykgZGlzcGF0Y2hQcm9w
cyA9IG1hcERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCwgb3duUHJvcHMpO1xuXG4gICAgbWVyZ2Vk
UHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtc
biAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVOZXdQcm9w
cygpIHtcbiAgICBpZiAobWFwU3RhdGVUb1Byb3BzLmRlcGVuZHNPbk93blByb3BzKSBzdGF0ZVBy
b3BzID0gbWFwU3RhdGVUb1Byb3BzKHN0YXRlLCBvd25Qcm9wcyk7XG5cbiAgICBpZiAobWFwRGlz
cGF0Y2hUb1Byb3BzLmRlcGVuZHNPbk93blByb3BzKSBkaXNwYXRjaFByb3BzID0gbWFwRGlzcGF0
Y2hUb1Byb3BzKGRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cbiAgICBtZXJnZWRQcm9wcyA9IG1lcmdl
UHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuICAgIHJldHVybiBt
ZXJnZWRQcm9wcztcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZU5ld1N0YXRlKCkge1xuICAgIHZh
ciBuZXh0U3RhdGVQcm9wcyA9IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xuICAg
IHZhciBzdGF0ZVByb3BzQ2hhbmdlZCA9ICFhcmVTdGF0ZVByb3BzRXF1YWwobmV4dFN0YXRlUHJv
cHMsIHN0YXRlUHJvcHMpO1xuICAgIHN0YXRlUHJvcHMgPSBuZXh0U3RhdGVQcm9wcztcblxuICAg
IGlmIChzdGF0ZVByb3BzQ2hhbmdlZCkgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJv
cHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcblxuICAgIHJldHVybiBtZXJnZWRQcm9wcztc
biAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZVN1YnNlcXVlbnRDYWxscyhuZXh0U3RhdGUsIG5leHRP
d25Qcm9wcykge1xuICAgIHZhciBwcm9wc0NoYW5nZWQgPSAhYXJlT3duUHJvcHNFcXVhbChuZXh0
T3duUHJvcHMsIG93blByb3BzKTtcbiAgICB2YXIgc3RhdGVDaGFuZ2VkID0gIWFyZVN0YXRlc0Vx
dWFsKG5leHRTdGF0ZSwgc3RhdGUpO1xuICAgIHN0YXRlID0gbmV4dFN0YXRlO1xuICAgIG93blBy
b3BzID0gbmV4dE93blByb3BzO1xuXG4gICAgaWYgKHByb3BzQ2hhbmdlZCAmJiBzdGF0ZUNoYW5n
ZWQpIHJldHVybiBoYW5kbGVOZXdQcm9wc0FuZE5ld1N0YXRlKCk7XG4gICAgaWYgKHByb3BzQ2hh
bmdlZCkgcmV0dXJuIGhhbmRsZU5ld1Byb3BzKCk7XG4gICAgaWYgKHN0YXRlQ2hhbmdlZCkgcmV0
dXJuIGhhbmRsZU5ld1N0YXRlKCk7XG4gICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuICB9XG5cbiAg
cmV0dXJuIGZ1bmN0aW9uIHB1cmVGaW5hbFByb3BzU2VsZWN0b3IobmV4dFN0YXRlLCBuZXh0T3du
UHJvcHMpIHtcbiAgICByZXR1cm4gaGFzUnVuQXRMZWFzdE9uY2UgPyBoYW5kbGVTdWJzZXF1ZW50
Q2FsbHMobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpIDogaGFuZGxlRmlyc3RDYWxsKG5leHRTdGF0
ZSwgbmV4dE93blByb3BzKTtcbiAgfTtcbn1cblxuLy8gVE9ETzogQWRkIG1vcmUgY29tbWVudHNc
blxuLy8gSWYgcHVyZSBpcyB0cnVlLCB0aGUgc2VsZWN0b3IgcmV0dXJuZWQgYnkgc2VsZWN0b3JG
YWN0b3J5IHdpbGwgbWVtb2l6ZSBpdHMgcmVzdWx0cyxcbi8vIGFsbG93aW5nIGNvbm5lY3RBZHZh
bmNlZCdzIHNob3VsZENvbXBvbmVudFVwZGF0ZSB0byByZXR1cm4gZmFsc2UgaWYgZmluYWxcbi8v
IHByb3BzIGhhdmUgbm90IGNoYW5nZWQuIElmIGZhbHNlLCB0aGUgc2VsZWN0b3Igd2lsbCBhbHdh
eXMgcmV0dXJuIGEgbmV3XG4vLyBvYmplY3QgYW5kIHNob3VsZENvbXBvbmVudFVwZGF0ZSB3aWxs
IGFsd2F5cyByZXR1cm4gdHJ1ZS5cblxuZnVuY3Rpb24gZmluYWxQcm9wc1NlbGVjdG9yRmFjdG9y
eShkaXNwYXRjaCwgX3JlZjIpIHtcbiAgdmFyIGluaXRNYXBTdGF0ZVRvUHJvcHMgPSBfcmVmMi5p
bml0TWFwU3RhdGVUb1Byb3BzLFxuICAgICAgaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyA9IF9yZWYy
LmluaXRNYXBEaXNwYXRjaFRvUHJvcHMsXG4gICAgICBpbml0TWVyZ2VQcm9wcyA9IF9yZWYyLmlu
aXRNZXJnZVByb3BzLFxuICAgICAgb3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhf
cmVmMiwgWydpbml0TWFwU3RhdGVUb1Byb3BzJywgJ2luaXRNYXBEaXNwYXRjaFRvUHJvcHMnLCAn
aW5pdE1lcmdlUHJvcHMnXSk7XG5cbiAgdmFyIG1hcFN0YXRlVG9Qcm9wcyA9IGluaXRNYXBTdGF0
ZVRvUHJvcHMoZGlzcGF0Y2gsIG9wdGlvbnMpO1xuICB2YXIgbWFwRGlzcGF0Y2hUb1Byb3BzID0g
aW5pdE1hcERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCwgb3B0aW9ucyk7XG4gIHZhciBtZXJnZVBy
b3BzID0gaW5pdE1lcmdlUHJvcHMoZGlzcGF0Y2gsIG9wdGlvbnMpO1xuXG4gIGlmIChmYWxzZSkg
e1xuICAgIHZlcmlmeVN1YnNlbGVjdG9ycyhtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Q
cm9wcywgbWVyZ2VQcm9wcywgb3B0aW9ucy5kaXNwbGF5TmFtZSk7XG4gIH1cblxuICB2YXIgc2Vs
ZWN0b3JGYWN0b3J5ID0gb3B0aW9ucy5wdXJlID8gcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3Rv
cnkgOiBpbXB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5O1xuXG4gIHJldHVybiBzZWxlY3Rv
ckZhY3RvcnkobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMs
IGRpc3BhdGNoLCBvcHRpb25zKTtcbn1cblxuLyoqKi8gfSksXG4vKiAyMjEgKi9cbi8qKiovIChm
dW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiB1bnVzZWQgaGFybW9ueSBleHBvcnQgZGVmYXVsdCAq
L1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9f
dXRpbHNfd2FybmluZ19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0OSk7XG5cblxuZnVuY3Rpb24g
dmVyaWZ5KHNlbGVjdG9yLCBtZXRob2ROYW1lLCBkaXNwbGF5TmFtZSkge1xuICBpZiAoIXNlbGVj
dG9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHZhbHVlIGZvciAnICsgbWV0
aG9kTmFtZSArICcgaW4gJyArIGRpc3BsYXlOYW1lICsgJy4nKTtcbiAgfSBlbHNlIGlmIChtZXRo
b2ROYW1lID09PSAnbWFwU3RhdGVUb1Byb3BzJyB8fCBtZXRob2ROYW1lID09PSAnbWFwRGlzcGF0
Y2hUb1Byb3BzJykge1xuICAgIGlmICghc2VsZWN0b3IuaGFzT3duUHJvcGVydHkoJ2RlcGVuZHNP
bk93blByb3BzJykpIHtcbiAgICAgIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBf
X3V0aWxzX3dhcm5pbmdfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoJ1RoZSBzZWxlY3RvciBmb3Ig
JyArIG1ldGhvZE5hbWUgKyAnIG9mICcgKyBkaXNwbGF5TmFtZSArICcgZGlkIG5vdCBzcGVjaWZ5
IGEgdmFsdWUgZm9yIGRlcGVuZHNPbk93blByb3BzLicpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5j
dGlvbiB2ZXJpZnlTdWJzZWxlY3RvcnMobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJv
cHMsIG1lcmdlUHJvcHMsIGRpc3BsYXlOYW1lKSB7XG4gIHZlcmlmeShtYXBTdGF0ZVRvUHJvcHMs
ICdtYXBTdGF0ZVRvUHJvcHMnLCBkaXNwbGF5TmFtZSk7XG4gIHZlcmlmeShtYXBEaXNwYXRjaFRv
UHJvcHMsICdtYXBEaXNwYXRjaFRvUHJvcHMnLCBkaXNwbGF5TmFtZSk7XG4gIHZlcmlmeShtZXJn
ZVByb3BzLCAnbWVyZ2VQcm9wcycsIGRpc3BsYXlOYW1lKTtcbn1cblxuLyoqKi8gfSksXG4vKiAy
MjIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAq
LyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X18gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMF9yZWFjdF9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9yZWR1eF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
OSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8y
X3JlYWN0X3JlZHV4X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg4KTtcbi8qIGhhcm1vbnkgaW1w
b3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2NvbXBvbmVudHNfSGVhZGVy
X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyMyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIg
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19jb21wb25lbnRzX01haW5TZWN0aW9uX18gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDIyNCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV81X19hY3Rpb25zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIy
Nyk7XG52YXIgQXBwPWZ1bmN0aW9uIEFwcChfcmVmKXt2YXIgdG9kb3M9X3JlZi50b2RvcyxhY3Rp
b25zPV9yZWYuYWN0aW9ucztyZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0
X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoJ2RpdicsbnVsbCxfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0LmEuY3JlYXRlRWxlbWVudChfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzNfX2NvbXBvbmVudHNfSGVhZGVyX19bXCJhXCIgLyogZGVmYXVsdCAqL10se2Fk
ZFRvZG86YWN0aW9ucy5hZGRUb2RvfSksX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0
X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19j
b21wb25lbnRzX01haW5TZWN0aW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10se3RvZG9zOnRvZG9z
LGFjdGlvbnM6YWN0aW9uc30pKTt9O0FwcC5wcm9wVHlwZXM9e3RvZG9zOl9fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLmFycmF5LmlzUmVxdWlyZWQsYWN0
aW9uczpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5v
YmplY3QuaXNSZXF1aXJlZH07dmFyIG1hcFN0YXRlVG9Qcm9wcz1mdW5jdGlvbiBtYXBTdGF0ZVRv
UHJvcHMoc3RhdGUpe3JldHVybnt0b2RvczpzdGF0ZS50b2Rvc307fTt2YXIgbWFwRGlzcGF0Y2hU
b1Byb3BzPWZ1bmN0aW9uIG1hcERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCl7cmV0dXJue2FjdGlv
bnM6T2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9yZWR1eF9fW1wiYVwiIC8qIGJp
bmRBY3Rpb25DcmVhdG9ycyAqL10pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fYWN0aW9u
c19fLGRpc3BhdGNoKX07fTsvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19l
eHBvcnRzX19bXCJhXCJdID0gKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfcmVh
Y3RfcmVkdXhfX1tcImJcIiAvKiBjb25uZWN0ICovXSkobWFwU3RhdGVUb1Byb3BzLG1hcERpc3Bh
dGNoVG9Qcm9wcykoQXBwKSk7XG5cbi8qKiovIH0pLFxuLyogMjIzICovXG4vKioqLyAoZnVuY3Rp
b24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMF9yZWFjdF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcbi8qIGhhcm1v
bnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX19kZWZh
dWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9y
ZWFjdF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzFfX1RvZG9UZXh0SW5wdXRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOTQpO1xudmFyIF9j
cmVhdGVDbGFzcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LHBy
b3BzKXtmb3IodmFyIGk9MDtpPHByb3BzLmxlbmd0aDtpKyspe3ZhciBkZXNjcmlwdG9yPXByb3Bz
W2ldO2Rlc2NyaXB0b3IuZW51bWVyYWJsZT1kZXNjcmlwdG9yLmVudW1lcmFibGV8fGZhbHNlO2Rl
c2NyaXB0b3IuY29uZmlndXJhYmxlPXRydWU7aWYoXCJ2YWx1ZVwiaW4gZGVzY3JpcHRvcilkZXNj
cmlwdG9yLndyaXRhYmxlPXRydWU7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCxkZXNjcmlw
dG9yLmtleSxkZXNjcmlwdG9yKTt9fXJldHVybiBmdW5jdGlvbihDb25zdHJ1Y3Rvcixwcm90b1By
b3BzLHN0YXRpY1Byb3BzKXtpZihwcm90b1Byb3BzKWRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0
b3IucHJvdG90eXBlLHByb3RvUHJvcHMpO2lmKHN0YXRpY1Byb3BzKWRlZmluZVByb3BlcnRpZXMo
Q29uc3RydWN0b3Isc3RhdGljUHJvcHMpO3JldHVybiBDb25zdHJ1Y3Rvcjt9O30oKTtmdW5jdGlv
biBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsQ29uc3RydWN0b3Ipe2lmKCEoaW5zdGFuY2UgaW5z
dGFuY2VvZiBDb25zdHJ1Y3Rvcikpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBh
IGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7fX1mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJl
dHVybihzZWxmLGNhbGwpe2lmKCFzZWxmKXt0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlz
IGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7
fXJldHVybiBjYWxsJiYodHlwZW9mIGNhbGw9PT1cIm9iamVjdFwifHx0eXBlb2YgY2FsbD09PVwi
ZnVuY3Rpb25cIik/Y2FsbDpzZWxmO31mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3Msc3VwZXJD
bGFzcyl7aWYodHlwZW9mIHN1cGVyQ2xhc3MhPT1cImZ1bmN0aW9uXCImJnN1cGVyQ2xhc3MhPT1u
dWxsKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBi
ZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2Ygc3VwZXJDbGFzcyk7fXN1YkNsYXNz
LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MmJnN1cGVyQ2xhc3MucHJvdG90eXBl
LHtjb25zdHJ1Y3Rvcjp7dmFsdWU6c3ViQ2xhc3MsZW51bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0
cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfX0pO2lmKHN1cGVyQ2xhc3MpT2JqZWN0LnNldFByb3RvdHlw
ZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcyxzdXBlckNsYXNzKTpzdWJDbGFzcy5f
X3Byb3RvX189c3VwZXJDbGFzczt9dmFyIEhlYWRlcj1mdW5jdGlvbihfQ29tcG9uZW50KXtfaW5o
ZXJpdHMoSGVhZGVyLF9Db21wb25lbnQpO2Z1bmN0aW9uIEhlYWRlcigpe3ZhciBfcmVmO3ZhciBf
dGVtcCxfdGhpcyxfcmV0O19jbGFzc0NhbGxDaGVjayh0aGlzLEhlYWRlcik7Zm9yKHZhciBfbGVu
PWFyZ3VtZW50cy5sZW5ndGgsYXJncz1BcnJheShfbGVuKSxfa2V5PTA7X2tleTxfbGVuO19rZXkr
Kyl7YXJnc1tfa2V5XT1hcmd1bWVudHNbX2tleV07fXJldHVybiBfcmV0PShfdGVtcD0oX3RoaXM9
X3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywoX3JlZj1IZWFkZXIuX19wcm90b19ffHxP
YmplY3QuZ2V0UHJvdG90eXBlT2YoSGVhZGVyKSkuY2FsbC5hcHBseShfcmVmLFt0aGlzXS5jb25j
YXQoYXJncykpKSxfdGhpcyksX3RoaXMuaGFuZGxlU2F2ZT1mdW5jdGlvbih0ZXh0KXtpZih0ZXh0
Lmxlbmd0aCE9PTApe190aGlzLnByb3BzLmFkZFRvZG8odGV4dCk7fX0sX3RlbXApLF9wb3NzaWJs
ZUNvbnN0cnVjdG9yUmV0dXJuKF90aGlzLF9yZXQpO31fY3JlYXRlQ2xhc3MoSGVhZGVyLFt7a2V5
OidyZW5kZXInLHZhbHVlOmZ1bmN0aW9uIHJlbmRlcigpe3JldHVybiBfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0LmEuY3JlYXRlRWxlbWVudCgnaGVhZGVyJyx7Y2xh
c3NOYW1lOidoZWFkZXInfSxfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX19kZWZh
dWx0LmEuY3JlYXRlRWxlbWVudCgnaDEnLG51bGwsJ3RvZG9zJyksX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8xX19Ub2RvVGV4dElucHV0X19bXCJhXCIgLyogZGVmYXVsdCAqL10se25ld1Rv
ZG86dHJ1ZSxvblNhdmU6dGhpcy5oYW5kbGVTYXZlLHBsYWNlaG9sZGVyOidXaGF0IG5lZWRzIHRv
IGJlIGRvbmU/J30pKTt9fV0pO3JldHVybiBIZWFkZXI7fShfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzBfcmVhY3RfX1tcIkNvbXBvbmVudFwiXSk7SGVhZGVyLnByb3BUeXBlcz17YWRkVG9kbzpf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5mdW5jLmlz
UmVxdWlyZWR9Oy8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNf
X1tcImFcIl0gPSAoSGVhZGVyKTtcblxuLyoqKi8gfSksXG4vKiAyMjQgKi9cbi8qKiovIChmdW5j
dGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX3JlYWN0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuLyogaGFy
bW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fX2Rl
ZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X3JlYWN0X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMV9fVG9kb0l0ZW1fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjI1KTtcbi8qIGhhcm1v
bnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX0Zvb3Rlcl9fID0g
X193ZWJwYWNrX3JlcXVpcmVfXygyMjYpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfM19fY29uc3RhbnRzX1RvZG9GaWx0ZXJzX18gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDk1KTtcbnZhciBfY3JlYXRlQ2xhc3M9ZnVuY3Rpb24oKXtmdW5jdGlvbiBk
ZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCxwcm9wcyl7Zm9yKHZhciBpPTA7aTxwcm9wcy5sZW5ndGg7
aSsrKXt2YXIgZGVzY3JpcHRvcj1wcm9wc1tpXTtkZXNjcmlwdG9yLmVudW1lcmFibGU9ZGVzY3Jp
cHRvci5lbnVtZXJhYmxlfHxmYWxzZTtkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZT10cnVlO2lmKFwi
dmFsdWVcImluIGRlc2NyaXB0b3IpZGVzY3JpcHRvci53cml0YWJsZT10cnVlO09iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0YXJnZXQsZGVzY3JpcHRvci5rZXksZGVzY3JpcHRvcik7fX1yZXR1cm4gZnVu
Y3Rpb24oQ29uc3RydWN0b3IscHJvdG9Qcm9wcyxzdGF0aWNQcm9wcyl7aWYocHJvdG9Qcm9wcylk
ZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSxwcm90b1Byb3BzKTtpZihzdGF0
aWNQcm9wcylkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLHN0YXRpY1Byb3BzKTtyZXR1cm4g
Q29uc3RydWN0b3I7fTt9KCk7dmFyIF9UT0RPX0ZJTFRFUlM7ZnVuY3Rpb24gX2NsYXNzQ2FsbENo
ZWNrKGluc3RhbmNlLENvbnN0cnVjdG9yKXtpZighKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3Ry
dWN0b3IpKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1
bmN0aW9uXCIpO319ZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZixjYWxs
KXtpZighc2VsZil7dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBp
bml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO31yZXR1cm4gY2FsbCYm
KHR5cGVvZiBjYWxsPT09XCJvYmplY3RcInx8dHlwZW9mIGNhbGw9PT1cImZ1bmN0aW9uXCIpP2Nh
bGw6c2VsZjt9ZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLHN1cGVyQ2xhc3Mpe2lmKHR5cGVv
ZiBzdXBlckNsYXNzIT09XCJmdW5jdGlvblwiJiZzdXBlckNsYXNzIT09bnVsbCl7dGhyb3cgbmV3
IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1
bmN0aW9uLCBub3QgXCIrdHlwZW9mIHN1cGVyQ2xhc3MpO31zdWJDbGFzcy5wcm90b3R5cGU9T2Jq
ZWN0LmNyZWF0ZShzdXBlckNsYXNzJiZzdXBlckNsYXNzLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6
e3ZhbHVlOnN1YkNsYXNzLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFi
bGU6dHJ1ZX19KTtpZihzdXBlckNsYXNzKU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0
UHJvdG90eXBlT2Yoc3ViQ2xhc3Msc3VwZXJDbGFzcyk6c3ViQ2xhc3MuX19wcm90b19fPXN1cGVy
Q2xhc3M7fWZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosa2V5LHZhbHVlKXtpZihrZXkgaW4g
b2JqKXtPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLGtleSx7dmFsdWU6dmFsdWUsZW51bWVyYWJs
ZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlLHdyaXRhYmxlOnRydWV9KTt9ZWxzZXtvYmpba2V5XT12
YWx1ZTt9cmV0dXJuIG9iajt9dmFyIFRPRE9fRklMVEVSUz0oX1RPRE9fRklMVEVSUz17fSxfZGVm
aW5lUHJvcGVydHkoX1RPRE9fRklMVEVSUyxfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2Nv
bnN0YW50c19Ub2RvRmlsdGVyc19fW1wiYlwiIC8qIFNIT1dfQUxMICovXSxmdW5jdGlvbigpe3Jl
dHVybiB0cnVlO30pLF9kZWZpbmVQcm9wZXJ0eShfVE9ET19GSUxURVJTLF9fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfM19fY29uc3RhbnRzX1RvZG9GaWx0ZXJzX19bXCJhXCIgLyogU0hPV19BQ1RJ
VkUgKi9dLGZ1bmN0aW9uKHRvZG8pe3JldHVybiF0b2RvLmNvbXBsZXRlZDt9KSxfZGVmaW5lUHJv
cGVydHkoX1RPRE9fRklMVEVSUyxfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2NvbnN0YW50
c19Ub2RvRmlsdGVyc19fW1wiY1wiIC8qIFNIT1dfQ09NUExFVEVEICovXSxmdW5jdGlvbih0b2Rv
KXtyZXR1cm4gdG9kby5jb21wbGV0ZWQ7fSksX1RPRE9fRklMVEVSUyk7dmFyIE1haW5TZWN0aW9u
PWZ1bmN0aW9uKF9Db21wb25lbnQpe19pbmhlcml0cyhNYWluU2VjdGlvbixfQ29tcG9uZW50KTtm
dW5jdGlvbiBNYWluU2VjdGlvbigpe3ZhciBfcmVmO3ZhciBfdGVtcCxfdGhpcyxfcmV0O19jbGFz
c0NhbGxDaGVjayh0aGlzLE1haW5TZWN0aW9uKTtmb3IodmFyIF9sZW49YXJndW1lbnRzLmxlbmd0
aCxhcmdzPUFycmF5KF9sZW4pLF9rZXk9MDtfa2V5PF9sZW47X2tleSsrKXthcmdzW19rZXldPWFy
Z3VtZW50c1tfa2V5XTt9cmV0dXJuIF9yZXQ9KF90ZW1wPShfdGhpcz1fcG9zc2libGVDb25zdHJ1
Y3RvclJldHVybih0aGlzLChfcmVmPU1haW5TZWN0aW9uLl9fcHJvdG9fX3x8T2JqZWN0LmdldFBy
b3RvdHlwZU9mKE1haW5TZWN0aW9uKSkuY2FsbC5hcHBseShfcmVmLFt0aGlzXS5jb25jYXQoYXJn
cykpKSxfdGhpcyksX3RoaXMuc3RhdGU9e2ZpbHRlcjpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzNfX2NvbnN0YW50c19Ub2RvRmlsdGVyc19fW1wiYlwiIC8qIFNIT1dfQUxMICovXX0sX3RoaXMu
aGFuZGxlQ2xlYXJDb21wbGV0ZWQ9ZnVuY3Rpb24oKXtfdGhpcy5wcm9wcy5hY3Rpb25zLmNsZWFy
Q29tcGxldGVkKCk7fSxfdGhpcy5oYW5kbGVTaG93PWZ1bmN0aW9uKGZpbHRlcil7X3RoaXMuc2V0
U3RhdGUoe2ZpbHRlcjpmaWx0ZXJ9KTt9LF90ZW1wKSxfcG9zc2libGVDb25zdHJ1Y3RvclJldHVy
bihfdGhpcyxfcmV0KTt9X2NyZWF0ZUNsYXNzKE1haW5TZWN0aW9uLFt7a2V5OidyZW5kZXJUb2dn
bGVBbGwnLHZhbHVlOmZ1bmN0aW9uIHJlbmRlclRvZ2dsZUFsbChjb21wbGV0ZWRDb3VudCl7dmFy
IF9wcm9wcz10aGlzLnByb3BzLHRvZG9zPV9wcm9wcy50b2RvcyxhY3Rpb25zPV9wcm9wcy5hY3Rp
b25zO2lmKHRvZG9zLmxlbmd0aD4wKXtyZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyx7Y2xhc3NOYW1lOid0b2dn
bGUtYWxsJyx0eXBlOidjaGVja2JveCcsY2hlY2tlZDpjb21wbGV0ZWRDb3VudD09PXRvZG9zLmxl
bmd0aCxvbkNoYW5nZTphY3Rpb25zLmNvbXBsZXRlQWxsfSk7fX19LHtrZXk6J3JlbmRlckZvb3Rl
cicsdmFsdWU6ZnVuY3Rpb24gcmVuZGVyRm9vdGVyKGNvbXBsZXRlZENvdW50KXt2YXIgdG9kb3M9
dGhpcy5wcm9wcy50b2Rvczt2YXIgZmlsdGVyPXRoaXMuc3RhdGUuZmlsdGVyO3ZhciBhY3RpdmVD
b3VudD10b2Rvcy5sZW5ndGgtY29tcGxldGVkQ291bnQ7aWYodG9kb3MubGVuZ3RoKXtyZXR1cm4g
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1l
bnQoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19Gb290ZXJfX1tcImFcIiAvKiBkZWZhdWx0
ICovXSx7Y29tcGxldGVkQ291bnQ6Y29tcGxldGVkQ291bnQsYWN0aXZlQ291bnQ6YWN0aXZlQ291
bnQsZmlsdGVyOmZpbHRlcixvbkNsZWFyQ29tcGxldGVkOnRoaXMuaGFuZGxlQ2xlYXJDb21wbGV0
ZWQuYmluZCh0aGlzKSxvblNob3c6dGhpcy5oYW5kbGVTaG93LmJpbmQodGhpcyl9KTt9fX0se2tl
eToncmVuZGVyJyx2YWx1ZTpmdW5jdGlvbiByZW5kZXIoKXt2YXIgX3Byb3BzMj10aGlzLnByb3Bz
LHRvZG9zPV9wcm9wczIudG9kb3MsYWN0aW9ucz1fcHJvcHMyLmFjdGlvbnM7dmFyIGZpbHRlcj10
aGlzLnN0YXRlLmZpbHRlcjt2YXIgZmlsdGVyZWRUb2Rvcz10b2Rvcy5maWx0ZXIoVE9ET19GSUxU
RVJTW2ZpbHRlcl0pO3ZhciBjb21wbGV0ZWRDb3VudD10b2Rvcy5yZWR1Y2UoZnVuY3Rpb24oY291
bnQsdG9kbyl7cmV0dXJuIHRvZG8uY29tcGxldGVkP2NvdW50KzE6Y291bnQ7fSwwKTtyZXR1cm4g
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1l
bnQoJ3NlY3Rpb24nLHtjbGFzc05hbWU6J21haW4nfSx0aGlzLnJlbmRlclRvZ2dsZUFsbChjb21w
bGV0ZWRDb3VudCksX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5h
LmNyZWF0ZUVsZW1lbnQoJ3VsJyx7Y2xhc3NOYW1lOid0b2RvLWxpc3QnfSxmaWx0ZXJlZFRvZG9z
Lm1hcChmdW5jdGlvbih0b2RvKXtyZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3Jl
YWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8x
X19Ub2RvSXRlbV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLE9iamVjdC5hc3NpZ24oe2tleTp0b2Rv
LmlkLHRvZG86dG9kb30sYWN0aW9ucykpO30pKSx0aGlzLnJlbmRlckZvb3Rlcihjb21wbGV0ZWRD
b3VudCkpO319XSk7cmV0dXJuIE1haW5TZWN0aW9uO30oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8wX3JlYWN0X19bXCJDb21wb25lbnRcIl0pO01haW5TZWN0aW9uLnByb3BUeXBlcz17dG9kb3M6
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uYXJyYXku
aXNSZXF1aXJlZCxhY3Rpb25zOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wi
UHJvcFR5cGVzXCJdLm9iamVjdC5pc1JlcXVpcmVkfTsvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0
ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKE1haW5TZWN0aW9uKTtcblxuLyoqKi8g
fSksXG4vKiAyMjUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRz
X18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255
IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X18gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4o
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X18pO1xuLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9jbGFzc25hbWVzX18gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDUwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
Lm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2NsYXNzbmFtZXNfXyk7XG4vKiBoYXJtb255
IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19Ub2RvVGV4dElucHV0
X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk0KTtcbnZhciBfY3JlYXRlQ2xhc3M9ZnVuY3Rpb24o
KXtmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCxwcm9wcyl7Zm9yKHZhciBpPTA7aTxw
cm9wcy5sZW5ndGg7aSsrKXt2YXIgZGVzY3JpcHRvcj1wcm9wc1tpXTtkZXNjcmlwdG9yLmVudW1l
cmFibGU9ZGVzY3JpcHRvci5lbnVtZXJhYmxlfHxmYWxzZTtkZXNjcmlwdG9yLmNvbmZpZ3VyYWJs
ZT10cnVlO2lmKFwidmFsdWVcImluIGRlc2NyaXB0b3IpZGVzY3JpcHRvci53cml0YWJsZT10cnVl
O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsZGVzY3JpcHRvci5rZXksZGVzY3JpcHRvcik7
fX1yZXR1cm4gZnVuY3Rpb24oQ29uc3RydWN0b3IscHJvdG9Qcm9wcyxzdGF0aWNQcm9wcyl7aWYo
cHJvdG9Qcm9wcylkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSxwcm90b1By
b3BzKTtpZihzdGF0aWNQcm9wcylkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLHN0YXRpY1By
b3BzKTtyZXR1cm4gQ29uc3RydWN0b3I7fTt9KCk7ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGlu
c3RhbmNlLENvbnN0cnVjdG9yKXtpZighKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3Ip
KXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9u
XCIpO319ZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZixjYWxsKXtpZigh
c2VsZil7dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFs
aXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO31yZXR1cm4gY2FsbCYmKHR5cGVv
ZiBjYWxsPT09XCJvYmplY3RcInx8dHlwZW9mIGNhbGw9PT1cImZ1bmN0aW9uXCIpP2NhbGw6c2Vs
Zjt9ZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLHN1cGVyQ2xhc3Mpe2lmKHR5cGVvZiBzdXBl
ckNsYXNzIT09XCJmdW5jdGlvblwiJiZzdXBlckNsYXNzIT09bnVsbCl7dGhyb3cgbmV3IFR5cGVF
cnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9u
LCBub3QgXCIrdHlwZW9mIHN1cGVyQ2xhc3MpO31zdWJDbGFzcy5wcm90b3R5cGU9T2JqZWN0LmNy
ZWF0ZShzdXBlckNsYXNzJiZzdXBlckNsYXNzLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVl
OnN1YkNsYXNzLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1
ZX19KTtpZihzdXBlckNsYXNzKU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90
eXBlT2Yoc3ViQ2xhc3Msc3VwZXJDbGFzcyk6c3ViQ2xhc3MuX19wcm90b19fPXN1cGVyQ2xhc3M7
fXZhciBUb2RvSXRlbT1mdW5jdGlvbihfQ29tcG9uZW50KXtfaW5oZXJpdHMoVG9kb0l0ZW0sX0Nv
bXBvbmVudCk7ZnVuY3Rpb24gVG9kb0l0ZW0oKXt2YXIgX3JlZjt2YXIgX3RlbXAsX3RoaXMsX3Jl
dDtfY2xhc3NDYWxsQ2hlY2sodGhpcyxUb2RvSXRlbSk7Zm9yKHZhciBfbGVuPWFyZ3VtZW50cy5s
ZW5ndGgsYXJncz1BcnJheShfbGVuKSxfa2V5PTA7X2tleTxfbGVuO19rZXkrKyl7YXJnc1tfa2V5
XT1hcmd1bWVudHNbX2tleV07fXJldHVybiBfcmV0PShfdGVtcD0oX3RoaXM9X3Bvc3NpYmxlQ29u
c3RydWN0b3JSZXR1cm4odGhpcywoX3JlZj1Ub2RvSXRlbS5fX3Byb3RvX198fE9iamVjdC5nZXRQ
cm90b3R5cGVPZihUb2RvSXRlbSkpLmNhbGwuYXBwbHkoX3JlZixbdGhpc10uY29uY2F0KGFyZ3Mp
KSksX3RoaXMpLF90aGlzLnN0YXRlPXtlZGl0aW5nOmZhbHNlfSxfdGhpcy5oYW5kbGVEb3VibGVD
bGljaz1mdW5jdGlvbigpe190aGlzLnNldFN0YXRlKHtlZGl0aW5nOnRydWV9KTt9LF90aGlzLmhh
bmRsZVNhdmU9ZnVuY3Rpb24oaWQsdGV4dCl7aWYodGV4dC5sZW5ndGg9PT0wKXtfdGhpcy5wcm9w
cy5kZWxldGVUb2RvKGlkKTt9ZWxzZXtfdGhpcy5wcm9wcy5lZGl0VG9kbyhpZCx0ZXh0KTt9X3Ro
aXMuc2V0U3RhdGUoe2VkaXRpbmc6ZmFsc2V9KTt9LF90ZW1wKSxfcG9zc2libGVDb25zdHJ1Y3Rv
clJldHVybihfdGhpcyxfcmV0KTt9X2NyZWF0ZUNsYXNzKFRvZG9JdGVtLFt7a2V5OidyZW5kZXIn
LHZhbHVlOmZ1bmN0aW9uIHJlbmRlcigpe3ZhciBfdGhpczI9dGhpczt2YXIgX3Byb3BzPXRoaXMu
cHJvcHMsdG9kbz1fcHJvcHMudG9kbyxjb21wbGV0ZVRvZG89X3Byb3BzLmNvbXBsZXRlVG9kbyxk
ZWxldGVUb2RvPV9wcm9wcy5kZWxldGVUb2RvO3ZhciBlbGVtZW50PXZvaWQgMDtpZih0aGlzLnN0
YXRlLmVkaXRpbmcpe2VsZW1lbnQ9X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19f
ZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19Ub2Rv
VGV4dElucHV0X19bXCJhXCIgLyogZGVmYXVsdCAqL10se3RleHQ6dG9kby50ZXh0LGVkaXRpbmc6
dGhpcy5zdGF0ZS5lZGl0aW5nLG9uU2F2ZTpmdW5jdGlvbiBvblNhdmUodGV4dCl7cmV0dXJuIF90
aGlzMi5oYW5kbGVTYXZlKHRvZG8uaWQsdGV4dCk7fX0pO31lbHNle2VsZW1lbnQ9X19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoJ2Rpdics
e2NsYXNzTmFtZTondmlldyd9LF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fX2Rl
ZmF1bHQuYS5jcmVhdGVFbGVtZW50KCdpbnB1dCcse2NsYXNzTmFtZTondG9nZ2xlJyx0eXBlOidj
aGVja2JveCcsY2hlY2tlZDp0b2RvLmNvbXBsZXRlZCxvbkNoYW5nZTpmdW5jdGlvbiBvbkNoYW5n
ZSgpe3JldHVybiBjb21wbGV0ZVRvZG8odG9kby5pZCk7fX0pLF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMF9yZWFjdF9fX2RlZmF1bHQuYS5jcmVhdGVFbGVtZW50KCdsYWJlbCcse29uRG91Ymxl
Q2xpY2s6dGhpcy5oYW5kbGVEb3VibGVDbGlja30sdG9kby50ZXh0KSxfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0LmEuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyx7Y2xh
c3NOYW1lOidkZXN0cm95JyxvbkNsaWNrOmZ1bmN0aW9uIG9uQ2xpY2soKXtyZXR1cm4gZGVsZXRl
VG9kbyh0b2RvLmlkKTt9fSkpO31yZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3Jl
YWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoJ2xpJyx7Y2xhc3NOYW1lOl9fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMV9jbGFzc25hbWVzX19fZGVmYXVsdCgpKHtjb21wbGV0ZWQ6dG9kby5j
b21wbGV0ZWQsZWRpdGluZzp0aGlzLnN0YXRlLmVkaXRpbmd9KX0sZWxlbWVudCk7fX1dKTtyZXR1
cm4gVG9kb0l0ZW07fShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIkNvbXBv
bmVudFwiXSk7VG9kb0l0ZW0ucHJvcFR5cGVzPXt0b2RvOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLm9iamVjdC5pc1JlcXVpcmVkLGVkaXRUb2RvOl9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLmZ1bmMuaXNS
ZXF1aXJlZCxkZWxldGVUb2RvOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wi
UHJvcFR5cGVzXCJdLmZ1bmMuaXNSZXF1aXJlZCxjb21wbGV0ZVRvZG86X19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uZnVuYy5pc1JlcXVpcmVkfTsvKiBo
YXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKFRv
ZG9JdGVtKTtcblxuLyoqKi8gfSksXG4vKiAyMjYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUs
IF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3Ry
aWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8wX3JlYWN0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fX2RlZmF1bHQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X18pO1xu
LyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9jbGFz
c25hbWVzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fX2RlZmF1bHQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2NsYXNzbmFt
ZXNfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8yX19jb25zdGFudHNfVG9kb0ZpbHRlcnNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOTUpO1xu
dmFyIF9jcmVhdGVDbGFzcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFy
Z2V0LHByb3BzKXtmb3IodmFyIGk9MDtpPHByb3BzLmxlbmd0aDtpKyspe3ZhciBkZXNjcmlwdG9y
PXByb3BzW2ldO2Rlc2NyaXB0b3IuZW51bWVyYWJsZT1kZXNjcmlwdG9yLmVudW1lcmFibGV8fGZh
bHNlO2Rlc2NyaXB0b3IuY29uZmlndXJhYmxlPXRydWU7aWYoXCJ2YWx1ZVwiaW4gZGVzY3JpcHRv
cilkZXNjcmlwdG9yLndyaXRhYmxlPXRydWU7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCxk
ZXNjcmlwdG9yLmtleSxkZXNjcmlwdG9yKTt9fXJldHVybiBmdW5jdGlvbihDb25zdHJ1Y3Rvcixw
cm90b1Byb3BzLHN0YXRpY1Byb3BzKXtpZihwcm90b1Byb3BzKWRlZmluZVByb3BlcnRpZXMoQ29u
c3RydWN0b3IucHJvdG90eXBlLHByb3RvUHJvcHMpO2lmKHN0YXRpY1Byb3BzKWRlZmluZVByb3Bl
cnRpZXMoQ29uc3RydWN0b3Isc3RhdGljUHJvcHMpO3JldHVybiBDb25zdHJ1Y3Rvcjt9O30oKTt2
YXIgX0ZJTFRFUl9USVRMRVM7ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLENvbnN0
cnVjdG9yKXtpZighKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKXt0aHJvdyBuZXcg
VHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO319ZnVuY3Rp
b24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZixjYWxsKXtpZighc2VsZil7dGhyb3cg
bmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVy
KCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO31yZXR1cm4gY2FsbCYmKHR5cGVvZiBjYWxsPT09XCJv
YmplY3RcInx8dHlwZW9mIGNhbGw9PT1cImZ1bmN0aW9uXCIpP2NhbGw6c2VsZjt9ZnVuY3Rpb24g
X2luaGVyaXRzKHN1YkNsYXNzLHN1cGVyQ2xhc3Mpe2lmKHR5cGVvZiBzdXBlckNsYXNzIT09XCJm
dW5jdGlvblwiJiZzdXBlckNsYXNzIT09bnVsbCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVy
IGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlw
ZW9mIHN1cGVyQ2xhc3MpO31zdWJDbGFzcy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShzdXBlckNs
YXNzJiZzdXBlckNsYXNzLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnN1YkNsYXNzLGVu
dW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZX19KTtpZihzdXBl
ckNsYXNzKU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xh
c3Msc3VwZXJDbGFzcyk6c3ViQ2xhc3MuX19wcm90b19fPXN1cGVyQ2xhc3M7fWZ1bmN0aW9uIF9k
ZWZpbmVQcm9wZXJ0eShvYmosa2V5LHZhbHVlKXtpZihrZXkgaW4gb2JqKXtPYmplY3QuZGVmaW5l
UHJvcGVydHkob2JqLGtleSx7dmFsdWU6dmFsdWUsZW51bWVyYWJsZTp0cnVlLGNvbmZpZ3VyYWJs
ZTp0cnVlLHdyaXRhYmxlOnRydWV9KTt9ZWxzZXtvYmpba2V5XT12YWx1ZTt9cmV0dXJuIG9iajt9
dmFyIEZJTFRFUl9USVRMRVM9KF9GSUxURVJfVElUTEVTPXt9LF9kZWZpbmVQcm9wZXJ0eShfRklM
VEVSX1RJVExFUyxfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2NvbnN0YW50c19Ub2RvRmls
dGVyc19fW1wiYlwiIC8qIFNIT1dfQUxMICovXSwnQWxsJyksX2RlZmluZVByb3BlcnR5KF9GSUxU
RVJfVElUTEVTLF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fY29uc3RhbnRzX1RvZG9GaWx0
ZXJzX19bXCJhXCIgLyogU0hPV19BQ1RJVkUgKi9dLCdBY3RpdmUnKSxfZGVmaW5lUHJvcGVydHko
X0ZJTFRFUl9USVRMRVMsX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19jb25zdGFudHNfVG9k
b0ZpbHRlcnNfX1tcImNcIiAvKiBTSE9XX0NPTVBMRVRFRCAqL10sJ0NvbXBsZXRlZCcpLF9GSUxU
RVJfVElUTEVTKTt2YXIgRm9vdGVyPWZ1bmN0aW9uKF9Db21wb25lbnQpe19pbmhlcml0cyhGb290
ZXIsX0NvbXBvbmVudCk7ZnVuY3Rpb24gRm9vdGVyKCl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsRm9v
dGVyKTtyZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywoRm9vdGVyLl9fcHJv
dG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKEZvb3RlcikpLmFwcGx5KHRoaXMsYXJndW1lbnRz
KSk7fV9jcmVhdGVDbGFzcyhGb290ZXIsW3trZXk6J3JlbmRlclRvZG9Db3VudCcsdmFsdWU6ZnVu
Y3Rpb24gcmVuZGVyVG9kb0NvdW50KCl7dmFyIGFjdGl2ZUNvdW50PXRoaXMucHJvcHMuYWN0aXZl
Q291bnQ7dmFyIGl0ZW1Xb3JkPWFjdGl2ZUNvdW50PT09MT8naXRlbSc6J2l0ZW1zJztyZXR1cm4g
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1l
bnQoJ3NwYW4nLHtjbGFzc05hbWU6J3RvZG8tY291bnQnfSxfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzBfcmVhY3RfX19kZWZhdWx0LmEuY3JlYXRlRWxlbWVudCgnc3Ryb25nJyxudWxsLGFjdGl2
ZUNvdW50fHwnTm8nKSwnICcsaXRlbVdvcmQsJyBsZWZ0Jyk7fX0se2tleToncmVuZGVyRmlsdGVy
TGluaycsdmFsdWU6ZnVuY3Rpb24gcmVuZGVyRmlsdGVyTGluayhmaWx0ZXIpe3ZhciB0aXRsZT1G
SUxURVJfVElUTEVTW2ZpbHRlcl07dmFyIF9wcm9wcz10aGlzLnByb3BzLHNlbGVjdGVkRmlsdGVy
PV9wcm9wcy5maWx0ZXIsb25TaG93PV9wcm9wcy5vblNob3c7cmV0dXJuIF9fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMF9yZWFjdF9fX2RlZmF1bHQuYS5jcmVhdGVFbGVtZW50KCdhJyx7Y2xhc3NO
YW1lOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9jbGFzc25hbWVzX19fZGVmYXVsdCgpKHtz
ZWxlY3RlZDpmaWx0ZXI9PT1zZWxlY3RlZEZpbHRlcn0pLHN0eWxlOntjdXJzb3I6J3BvaW50ZXIn
fSxvbkNsaWNrOmZ1bmN0aW9uIG9uQ2xpY2soKXtyZXR1cm4gb25TaG93KGZpbHRlcik7fX0sdGl0
bGUpO319LHtrZXk6J3JlbmRlckNsZWFyQnV0dG9uJyx2YWx1ZTpmdW5jdGlvbiByZW5kZXJDbGVh
ckJ1dHRvbigpe3ZhciBfcHJvcHMyPXRoaXMucHJvcHMsY29tcGxldGVkQ291bnQ9X3Byb3BzMi5j
b21wbGV0ZWRDb3VudCxvbkNsZWFyQ29tcGxldGVkPV9wcm9wczIub25DbGVhckNvbXBsZXRlZDtp
Zihjb21wbGV0ZWRDb3VudD4wKXtyZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3Jl
YWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicse2NsYXNzTmFtZTonY2xlYXIt
Y29tcGxldGVkJyxvbkNsaWNrOm9uQ2xlYXJDb21wbGV0ZWR9LCdDbGVhciBjb21wbGV0ZWQnKTt9
fX0se2tleToncmVuZGVyJyx2YWx1ZTpmdW5jdGlvbiByZW5kZXIoKXt2YXIgX3RoaXMyPXRoaXM7
cmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fX2RlZmF1bHQuYS5jcmVh
dGVFbGVtZW50KCdmb290ZXInLHtjbGFzc05hbWU6J2Zvb3Rlcid9LHRoaXMucmVuZGVyVG9kb0Nv
dW50KCksX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0
ZUVsZW1lbnQoJ3VsJyx7Y2xhc3NOYW1lOidmaWx0ZXJzJ30sW19fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMl9fY29uc3RhbnRzX1RvZG9GaWx0ZXJzX19bXCJiXCIgLyogU0hPV19BTEwgKi9dLF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fY29uc3RhbnRzX1RvZG9GaWx0ZXJzX19bXCJhXCIg
LyogU0hPV19BQ1RJVkUgKi9dLF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fY29uc3RhbnRz
X1RvZG9GaWx0ZXJzX19bXCJjXCIgLyogU0hPV19DT01QTEVURUQgKi9dXS5tYXAoZnVuY3Rpb24o
ZmlsdGVyKXtyZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVs
dC5hLmNyZWF0ZUVsZW1lbnQoJ2xpJyx7a2V5OmZpbHRlcn0sX3RoaXMyLnJlbmRlckZpbHRlckxp
bmsoZmlsdGVyKSk7fSkpLHRoaXMucmVuZGVyQ2xlYXJCdXR0b24oKSk7fX1dKTtyZXR1cm4gRm9v
dGVyO30oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJDb21wb25lbnRcIl0p
O0Zvb3Rlci5wcm9wVHlwZXM9e2NvbXBsZXRlZENvdW50Ol9fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLm51bWJlci5pc1JlcXVpcmVkLGFjdGl2ZUNvdW50
Ol9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLm51bWJl
ci5pc1JlcXVpcmVkLGZpbHRlcjpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tc
IlByb3BUeXBlc1wiXS5zdHJpbmcuaXNSZXF1aXJlZCxvbkNsZWFyQ29tcGxldGVkOl9fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLmZ1bmMuaXNSZXF1aXJl
ZCxvblNob3c6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNc
Il0uZnVuYy5pc1JlcXVpcmVkfTsvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFj
a19leHBvcnRzX19bXCJhXCJdID0gKEZvb3Rlcik7XG5cbi8qKiovIH0pLFxuLyogMjI3ICovXG4v
KioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fd2Vi
cGFja19leHBvcnRzX18sIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyogaGFy
bW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tf
ZXhwb3J0c19fLCBcImFkZFRvZG9cIiwgZnVuY3Rpb24oKSB7IHJldHVybiBhZGRUb2RvOyB9KTtc
bi8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193
ZWJwYWNrX2V4cG9ydHNfXywgXCJkZWxldGVUb2RvXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZGVs
ZXRlVG9kbzsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3Jl
cXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZWRpdFRvZG9cIiwgZnVuY3Rpb24oKSB7
IHJldHVybiBlZGl0VG9kbzsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193
ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiY29tcGxldGVUb2RvXCIs
IGZ1bmN0aW9uKCkgeyByZXR1cm4gY29tcGxldGVUb2RvOyB9KTtcbi8qIGhhcm1vbnkgZXhwb3J0
IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywg
XCJjb21wbGV0ZUFsbFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBsZXRlQWxsOyB9KTtcbi8q
IGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJw
YWNrX2V4cG9ydHNfXywgXCJjbGVhckNvbXBsZXRlZFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGNs
ZWFyQ29tcGxldGVkOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzBfX2NvbnN0YW50c19BY3Rpb25UeXBlc19fID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg5Nik7XG52YXIgYWRkVG9kbz1mdW5jdGlvbiBhZGRUb2RvKHRleHQpe3JldHVybnt0eXBl
Ol9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fY29uc3RhbnRzX0FjdGlvblR5cGVzX19bXCJh
XCIgLyogQUREX1RPRE8gKi9dLHRleHQ6dGV4dH07fTt2YXIgZGVsZXRlVG9kbz1mdW5jdGlvbiBk
ZWxldGVUb2RvKGlkKXtyZXR1cm57dHlwZTpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2Nv
bnN0YW50c19BY3Rpb25UeXBlc19fW1wiZVwiIC8qIERFTEVURV9UT0RPICovXSxpZDppZH07fTt2
YXIgZWRpdFRvZG89ZnVuY3Rpb24gZWRpdFRvZG8oaWQsdGV4dCl7cmV0dXJue3R5cGU6X19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8wX19jb25zdGFudHNfQWN0aW9uVHlwZXNfX1tcImZcIiAvKiBF
RElUX1RPRE8gKi9dLGlkOmlkLHRleHQ6dGV4dH07fTt2YXIgY29tcGxldGVUb2RvPWZ1bmN0aW9u
IGNvbXBsZXRlVG9kbyhpZCl7cmV0dXJue3R5cGU6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X19jb25zdGFudHNfQWN0aW9uVHlwZXNfX1tcImRcIiAvKiBDT01QTEVURV9UT0RPICovXSxpZDpp
ZH07fTt2YXIgY29tcGxldGVBbGw9ZnVuY3Rpb24gY29tcGxldGVBbGwoKXtyZXR1cm57dHlwZTpf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2NvbnN0YW50c19BY3Rpb25UeXBlc19fW1wiY1wi
IC8qIENPTVBMRVRFX0FMTCAqL119O307dmFyIGNsZWFyQ29tcGxldGVkPWZ1bmN0aW9uIGNsZWFy
Q29tcGxldGVkKCl7cmV0dXJue3R5cGU6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19jb25z
dGFudHNfQWN0aW9uVHlwZXNfX1tcImJcIiAvKiBDTEVBUl9DT01QTEVURUQgKi9dfTt9O1xuXG4v
KioqLyB9KSxcbi8qIDIyOCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4
cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhh
cm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVkdXhfXyA9
IF9fd2VicGFja19yZXF1aXJlX18oMjkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fdG9kb3NfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjI5
KTtcbnZhciByb290UmVkdWNlcj1PYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3Jl
ZHV4X19bXCJiXCIgLyogY29tYmluZVJlZHVjZXJzICovXSkoe3RvZG9zOl9fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMV9fdG9kb3NfX1tcImFcIiAvKiBkZWZhdWx0ICovXX0pOy8qIGhhcm1vbnkg
ZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAocm9vdFJlZHVj
ZXIpO1xuXG4vKioqLyB9KSxcbi8qIDIyOSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193
ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3Rc
Ijtcbi8qIGhhcm1vbnkgZXhwb3J0IChpbW11dGFibGUpICovIF9fd2VicGFja19leHBvcnRzX19b
XCJhXCJdID0gdG9kb3M7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX19jb25zdGFudHNfQWN0aW9uVHlwZXNfXyA9IF9fd2VicGFja19yZXF1aXJl
X18oOTYpO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycil7aWYoQXJyYXkuaXNBcnJh
eShhcnIpKXtmb3IodmFyIGk9MCxhcnIyPUFycmF5KGFyci5sZW5ndGgpO2k8YXJyLmxlbmd0aDtp
Kyspe2FycjJbaV09YXJyW2ldO31yZXR1cm4gYXJyMjt9ZWxzZXtyZXR1cm4gQXJyYXkuZnJvbShh
cnIpO319dmFyIGluaXRpYWxTdGF0ZT1bXTtmdW5jdGlvbiB0b2Rvcygpe3ZhciBzdGF0ZT1hcmd1
bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06aW5p
dGlhbFN0YXRlO3ZhciBhY3Rpb249YXJndW1lbnRzWzFdO3N3aXRjaChhY3Rpb24udHlwZSl7Y2Fz
ZSBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2NvbnN0YW50c19BY3Rpb25UeXBlc19fW1wi
YVwiIC8qIEFERF9UT0RPICovXTpyZXR1cm5bXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHN0
YXRlKSxbe2lkOnN0YXRlLnJlZHVjZShmdW5jdGlvbihtYXhJZCx0b2RvKXtyZXR1cm4gTWF0aC5t
YXgodG9kby5pZCxtYXhJZCk7fSwtMSkrMSxjb21wbGV0ZWQ6ZmFsc2UsdGV4dDphY3Rpb24udGV4
dH1dKTtjYXNlIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fY29uc3RhbnRzX0FjdGlvblR5
cGVzX19bXCJlXCIgLyogREVMRVRFX1RPRE8gKi9dOnJldHVybiBzdGF0ZS5maWx0ZXIoZnVuY3Rp
b24odG9kbyl7cmV0dXJuIHRvZG8uaWQhPT1hY3Rpb24uaWQ7fSk7Y2FzZSBfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzBfX2NvbnN0YW50c19BY3Rpb25UeXBlc19fW1wiZlwiIC8qIEVESVRfVE9E
TyAqL106cmV0dXJuIHN0YXRlLm1hcChmdW5jdGlvbih0b2RvKXtyZXR1cm4gdG9kby5pZD09PWFj
dGlvbi5pZD9PYmplY3QuYXNzaWduKHt9LHRvZG8se3RleHQ6YWN0aW9uLnRleHR9KTp0b2RvO30p
O2Nhc2UgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19jb25zdGFudHNfQWN0aW9uVHlwZXNf
X1tcImRcIiAvKiBDT01QTEVURV9UT0RPICovXTpyZXR1cm4gc3RhdGUubWFwKGZ1bmN0aW9uKHRv
ZG8pe3JldHVybiB0b2RvLmlkPT09YWN0aW9uLmlkP09iamVjdC5hc3NpZ24oe30sdG9kbyx7Y29t
cGxldGVkOiF0b2RvLmNvbXBsZXRlZH0pOnRvZG87fSk7Y2FzZSBfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzBfX2NvbnN0YW50c19BY3Rpb25UeXBlc19fW1wiY1wiIC8qIENPTVBMRVRFX0FMTCAq
L106dmFyIGFyZUFsbE1hcmtlZD1zdGF0ZS5ldmVyeShmdW5jdGlvbih0b2RvKXtyZXR1cm4gdG9k
by5jb21wbGV0ZWQ7fSk7cmV0dXJuIHN0YXRlLm1hcChmdW5jdGlvbih0b2RvKXtyZXR1cm4gT2Jq
ZWN0LmFzc2lnbih7fSx0b2RvLHtjb21wbGV0ZWQ6IWFyZUFsbE1hcmtlZH0pO30pO2Nhc2UgX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19jb25zdGFudHNfQWN0aW9uVHlwZXNfX1tcImJcIiAv
KiBDTEVBUl9DT01QTEVURUQgKi9dOnJldHVybiBzdGF0ZS5maWx0ZXIoZnVuY3Rpb24odG9kbyl7
cmV0dXJuIHRvZG8uY29tcGxldGVkPT09ZmFsc2U7fSk7ZGVmYXVsdDpyZXR1cm4gc3RhdGU7fX1c
blxuLyoqKi8gfSksXG4vKiAyMzAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMp
IHtcblxuLy8gcmVtb3ZlZCBieSBleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW5cblxuLyoqKi8g
fSlcbi8qKioqKiovIF0pO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzdGF0aWMvanMv
bWFpbi4xOGI0MDllMS5qcyIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxs
ZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlv
biBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9k
dWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4g
XHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1c
biBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlc
biBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRc
dGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRc
dH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNb
bW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRc
biBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0
aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBl
eHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJw
YWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2Fj
aGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8v
IGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNr
X3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlm
KCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBm
YWxzZSxcbiBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4gXHRcdFx0XHRnZXQ6IGdldHRlclxu
IFx0XHRcdH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0
aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJw
YWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBt
b2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQo
KSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9k
dWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVf
Xy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxu
IFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tf
cmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3Qu
cHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBc
dC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBc
Ii4vXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0
cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gOTcpO1xu
XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIGFjZDBjMmQ2
YzhlMWQwYjBjNTkwIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbi8qKlxuICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3aGlj
aCB5b3VyIHByb2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLlxuICpcbiAqIFByb3ZpZGUgc3ByaW50
Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzXG4gKiB0
byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdlcmVc
biAqIGV4cGVjdGluZy5cbiAqXG4gKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBzdHJp
cHBlZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFudFxuICogd2lsbCByZW1haW4gdG8g
ZW5zdXJlIGxvZ2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLlxuICovXG5cbnZhciB2
YWxpZGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCkge307XG5cbmlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhbGlkYXRlRm9y
bWF0ID0gZnVuY3Rpb24gdmFsaWRhdGVGb3JtYXQoZm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCA9
PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCByZXF1aXJl
cyBhbiBlcnJvciBtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlv
biBpbnZhcmlhbnQoY29uZGl0aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgdmFs
aWRhdGVGb3JtYXQoZm9ybWF0KTtcblxuICBpZiAoIWNvbmRpdGlvbikge1xuICAgIHZhciBlcnJv
cjtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGVycm9yID0gbmV3IEVy
cm9yKCdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRl
diBlbnZpcm9ubWVudCAnICsgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlv
bmFsIGhlbHBmdWwgd2FybmluZ3MuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBhcmdzID0g
W2EsIGIsIGMsIGQsIGUsIGZdO1xuICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICAgIGVycm9y
ID0gbmV3IEVycm9yKGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAg
IHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuICAgICAgfSkpO1xuICAgICAgZXJyb3IubmFtZSA9
ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB9XG5cbiAgICBlcnJvci5mcmFtZXNUb1BvcCA9
IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG4gICAgdGhy
b3cgZXJyb3I7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnZhcmlhbnQ7XG5cblxuLy8v
Ly8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZmJq
cy9saWIvaW52YXJpYW50LmpzXG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0g
MCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBl
bXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9lbXB0eUZ1bmN0aW9uJyk7XG5cbi8qKlxuICogU2lt
aWxhciB0byBpbnZhcmlhbnQgYnV0IG9ubHkgbG9ncyBhIHdhcm5pbmcgaWYgdGhlIGNvbmRpdGlv
biBpcyBub3QgbWV0LlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBsb2cgaXNzdWVzIGluIGRldmVs
b3BtZW50IGVudmlyb25tZW50cyBpbiBjcml0aWNhbFxuICogcGF0aHMuIFJlbW92aW5nIHRoZSBs
b2dnaW5nIGNvZGUgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdpbGwga2VlcCB0aGVcbiAq
IHNhbWUgbG9naWMgYW5kIGZvbGxvdyB0aGUgc2FtZSBjb2RlIHBhdGhzLlxuICovXG5cbnZhciB3
YXJuaW5nID0gZW1wdHlGdW5jdGlvbjtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgdmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uIHByaW50V2Fybmlu
Zyhmb3JtYXQpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9
IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBf
a2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1c
blxuICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyAr
IGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYXJnc1th
cmdJbmRleCsrXTtcbiAgICB9KTtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmlu
ZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0cnkge1xu
ICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAgLy8gVGhp
cyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0
aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlz
IHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9
IGNhdGNoICh4KSB7fVxuICB9O1xuXG4gIHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKGNvbmRp
dGlvbiwgZm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0
aHJvdyBuZXcgRXJyb3IoJ2B3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVx
dWlyZXMgYSB3YXJuaW5nICcgKyAnbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cblxuICAgIGlm
IChmb3JtYXQuaW5kZXhPZignRmFpbGVkIENvbXBvc2l0ZSBwcm9wVHlwZTogJykgPT09IDApIHtc
biAgICAgIHJldHVybjsgLy8gSWdub3JlIENvbXBvc2l0ZUNvbXBvbmVudCBwcm9wdHlwZSBjaGVj
ay5cbiAgICB9XG5cbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgZm9yICh2YXIgX2xlbjIg
PSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIgPiAyID8gX2xlbjIgLSAyIDog
MCksIF9rZXkyID0gMjsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgICBhcmdzW19r
ZXkyIC0gMl0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgICAgfVxuXG4gICAgICBwcmludFdhcm5p
bmcuYXBwbHkodW5kZWZpbmVkLCBbZm9ybWF0XS5jb25jYXQoYXJncykpO1xuICAgIH1cbiAgfTtc
bn1cblxubW9kdWxlLmV4cG9ydHMgPSB3YXJuaW5nO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xu
Ly8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2ZianMvbGliL3dhcm5pbmcuanNc
bi8vIG1vZHVsZSBpZCA9IDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmln
aHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogV0FSTklO
RzogRE8gTk9UIG1hbnVhbGx5IHJlcXVpcmUgdGhpcyBtb2R1bGUuXG4gKiBUaGlzIGlzIGEgcmVw
bGFjZW1lbnQgZm9yIGBpbnZhcmlhbnQoLi4uKWAgdXNlZCBieSB0aGUgZXJyb3IgY29kZSBzeXN0
ZW1cbiAqIGFuZCB3aWxsIF9vbmx5XyBiZSByZXF1aXJlZCBieSB0aGUgY29ycmVzcG9uZGluZyBi
YWJlbCBwYXNzLlxuICogSXQgYWx3YXlzIHRocm93cy5cbiAqL1xuXG5mdW5jdGlvbiByZWFjdFBy
b2RJbnZhcmlhbnQoY29kZSkge1xuICB2YXIgYXJnQ291bnQgPSBhcmd1bWVudHMubGVuZ3RoIC0g
MTtcblxuICB2YXIgbWVzc2FnZSA9ICdNaW5pZmllZCBSZWFjdCBlcnJvciAjJyArIGNvZGUgKyAn
OyB2aXNpdCAnICsgJ2h0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1k
ZWNvZGVyLmh0bWw/aW52YXJpYW50PScgKyBjb2RlO1xuXG4gIGZvciAodmFyIGFyZ0lkeCA9IDA7
IGFyZ0lkeCA8IGFyZ0NvdW50OyBhcmdJZHgrKykge1xuICAgIG1lc3NhZ2UgKz0gJyZhcmdzW109
JyArIGVuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbYXJnSWR4ICsgMV0pO1xuICB9XG5cbiAg
bWVzc2FnZSArPSAnIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVk
IGRldiBlbnZpcm9ubWVudCcgKyAnIGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxw
ZnVsIHdhcm5pbmdzLic7XG5cbiAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICBl
cnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICBlcnJvci5mcmFtZXNUb1BvcCA9
IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgcmVhY3RQcm9kSW52YXJpYW50J3Mgb3duIGZyYW1l
XG5cbiAgdGhyb3cgZXJyb3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVhY3RQcm9kSW52YXJp
YW50O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvcmVhY3RQcm9kSW52YXJpYW50LmpzXG4vLyBtb2R1bGUg
aWQgPSAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qXG5vYmplY3QtYXNzaWduXG4oYykgU2lu
ZHJlIFNvcmh1c1xuQGxpY2Vuc2UgTUlUXG4qL1xuXG4ndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQt
ZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3Qu
cHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3Qu
cHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5mdW5jdGlvbiB0b09iamVjdCh2YWwp
IHtcblx0aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdHRocm93
IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwg
b3IgdW5kZWZpbmVkJyk7XG5cdH1cblxuXHRyZXR1cm4gT2JqZWN0KHZhbCk7XG59XG5cbmZ1bmN0
aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcblx0dHJ5IHtcblx0XHRpZiAoIU9iamVjdC5hc3NpZ24p
IHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBEZXRlY3QgYnVnZ3kgcHJv
cGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjggdmVyc2lvbnMuXG5cblx0XHQvLyBo
dHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4XG5cdFx0
dmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5v
LW5ldy13cmFwcGVyc1xuXHRcdHRlc3QxWzVdID0gJ2RlJztcblx0XHRpZiAoT2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtc
blx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2Rl
dGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QyID0ge307XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkg
PCAxMDsgaSsrKSB7XG5cdFx0XHR0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9
IGk7XG5cdFx0fVxuXHRcdHZhciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0
ZXN0MikubWFwKGZ1bmN0aW9uIChuKSB7XG5cdFx0XHRyZXR1cm4gdGVzdDJbbl07XG5cdFx0fSk7
XG5cdFx0aWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRyZXR1
cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4
L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MyA9IHt9O1xuXHRcdCdhYmNkZWZn
aGlqa2xtbm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRc
dFx0dGVzdDNbbGV0dGVyXSA9IGxldHRlcjtcblx0XHR9KTtcblx0XHRpZiAoT2JqZWN0LmtleXMo
T2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0J2FiY2RlZmdo
aWprbG1ub3BxcnN0Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVy
biB0cnVlO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHQvLyBXZSBkb24ndCBleHBlY3QgYW55IG9m
IHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxuXHRcdHJldHVybiBm
YWxzZTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2Jq
ZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuXHR2YXIgZnJvbTtcblx0
dmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTtcblx0dmFyIHN5bWJvbHM7XG5cblx0Zm9yICh2YXIg
cyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcblx0XHRmcm9tID0gT2JqZWN0KGFy
Z3VtZW50c1tzXSk7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuXHRcdFx0aWYgKGhh
c093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRcdFx0XHR0b1trZXldID0gZnJvbVtr
ZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtc
blx0XHRcdHN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRmb3Ig
KHZhciBpID0gMDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHByb3BJ
c0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xuXHRcdFx0XHRcdHRvW3N5bWJv
bHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0
fVxuXG5cdHJldHVybiB0bztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBB
Q0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9vYmplY3QtYXNzaWduL2luZGV4LmpzXG4vLyBt
b2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVp
cmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBET01Qcm9wZXJ0eSA9IHJlcXVpcmUo
Jy4vRE9NUHJvcGVydHknKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudEZsYWdzID0gcmVxdWlyZSgn
Li9SZWFjdERPTUNvbXBvbmVudEZsYWdzJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdm
YmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIEFUVFJfTkFNRSA9IERPTVByb3BlcnR5LklEX0FU
VFJJQlVURV9OQU1FO1xudmFyIEZsYWdzID0gUmVhY3RET01Db21wb25lbnRGbGFncztcblxudmFy
IGludGVybmFsSW5zdGFuY2VLZXkgPSAnX19yZWFjdEludGVybmFsSW5zdGFuY2UkJyArIE1hdGgu
cmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO1xuXG4vKipcbiAqIENoZWNrIGlmIGEgZ2l2
ZW4gbm9kZSBzaG91bGQgYmUgY2FjaGVkLlxuICovXG5mdW5jdGlvbiBzaG91bGRQcmVjYWNoZU5v
ZGUobm9kZSwgbm9kZUlEKSB7XG4gIHJldHVybiBub2RlLm5vZGVUeXBlID09PSAxICYmIG5vZGUu
Z2V0QXR0cmlidXRlKEFUVFJfTkFNRSkgPT09IFN0cmluZyhub2RlSUQpIHx8IG5vZGUubm9kZVR5
cGUgPT09IDggJiYgbm9kZS5ub2RlVmFsdWUgPT09ICcgcmVhY3QtdGV4dDogJyArIG5vZGVJRCAr
ICcgJyB8fCBub2RlLm5vZGVUeXBlID09PSA4ICYmIG5vZGUubm9kZVZhbHVlID09PSAnIHJlYWN0
LWVtcHR5OiAnICsgbm9kZUlEICsgJyAnO1xufVxuXG4vKipcbiAqIERyaWxsIGRvd24gKHRocm91
Z2ggY29tcG9zaXRlcyBhbmQgZW1wdHkgY29tcG9uZW50cykgdW50aWwgd2UgZ2V0IGEgaG9zdCBv
clxuICogaG9zdCB0ZXh0IGNvbXBvbmVudC5cbiAqXG4gKiBUaGlzIGlzIHByZXR0eSBwb2x5bW9y
cGhpYyBidXQgdW5hdm9pZGFibGUgd2l0aCB0aGUgY3VycmVudCBzdHJ1Y3R1cmUgd2UgaGF2ZVxu
ICogZm9yIGBfcmVuZGVyZWRDaGlsZHJlbmAuXG4gKi9cbmZ1bmN0aW9uIGdldFJlbmRlcmVkSG9z
dE9yVGV4dEZyb21Db21wb25lbnQoY29tcG9uZW50KSB7XG4gIHZhciByZW5kZXJlZDtcbiAgd2hp
bGUgKHJlbmRlcmVkID0gY29tcG9uZW50Ll9yZW5kZXJlZENvbXBvbmVudCkge1xuICAgIGNvbXBv
bmVudCA9IHJlbmRlcmVkO1xuICB9XG4gIHJldHVybiBjb21wb25lbnQ7XG59XG5cbi8qKlxuICog
UG9wdWxhdGUgYF9ob3N0Tm9kZWAgb24gdGhlIHJlbmRlcmVkIGhvc3QvdGV4dCBjb21wb25lbnQg
d2l0aCB0aGUgZ2l2ZW5cbiAqIERPTSBub2RlLiBUaGUgcGFzc2VkIGBpbnN0YCBjYW4gYmUgYSBj
b21wb3NpdGUuXG4gKi9cbmZ1bmN0aW9uIHByZWNhY2hlTm9kZShpbnN0LCBub2RlKSB7XG4gIHZh
ciBob3N0SW5zdCA9IGdldFJlbmRlcmVkSG9zdE9yVGV4dEZyb21Db21wb25lbnQoaW5zdCk7XG4g
IGhvc3RJbnN0Ll9ob3N0Tm9kZSA9IG5vZGU7XG4gIG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0g
PSBob3N0SW5zdDtcbn1cblxuZnVuY3Rpb24gdW5jYWNoZU5vZGUoaW5zdCkge1xuICB2YXIgbm9k
ZSA9IGluc3QuX2hvc3ROb2RlO1xuICBpZiAobm9kZSkge1xuICAgIGRlbGV0ZSBub2RlW2ludGVy
bmFsSW5zdGFuY2VLZXldO1xuICAgIGluc3QuX2hvc3ROb2RlID0gbnVsbDtcbiAgfVxufVxuXG4v
KipcbiAqIFBvcHVsYXRlIGBfaG9zdE5vZGVgIG9uIGVhY2ggY2hpbGQgb2YgYGluc3RgLCBhc3N1
bWluZyB0aGF0IHRoZSBjaGlsZHJlblxuICogbWF0Y2ggdXAgd2l0aCB0aGUgRE9NIChlbGVtZW50
KSBjaGlsZHJlbiBvZiBgbm9kZWAuXG4gKlxuICogV2UgY2FjaGUgZW50aXJlIGxldmVscyBhdCBv
bmNlIHRvIGF2b2lkIGFuIG5eMiBwcm9ibGVtIHdoZXJlIHdlIGFjY2VzcyB0aGVcbiAqIGNoaWxk
cmVuIG9mIGEgbm9kZSBzZXF1ZW50aWFsbHkgYW5kIGhhdmUgdG8gd2FsayBmcm9tIHRoZSBzdGFy
dCB0byBvdXIgdGFyZ2V0XG4gKiBub2RlIGV2ZXJ5IHRpbWUuXG4gKlxuICogU2luY2Ugd2UgdXBk
YXRlIGBfcmVuZGVyZWRDaGlsZHJlbmAgYW5kIHRoZSBhY3R1YWwgRE9NIGF0IChzbGlnaHRseSlc
biAqIGRpZmZlcmVudCB0aW1lcywgd2UgY291bGQgcmFjZSBoZXJlIGFuZCBzZWUgYSBuZXdlciBg
X3JlbmRlcmVkQ2hpbGRyZW5gIHRoYW5cbiAqIHRoZSBET00gbm9kZXMgd2Ugc2VlLiBUbyBhdm9p
ZCB0aGlzLCBSZWFjdE11bHRpQ2hpbGQgY2FsbHNcbiAqIGBwcmVwYXJlVG9NYW5hZ2VDaGlsZHJl
bmAgYmVmb3JlIHdlIGNoYW5nZSBgX3JlbmRlcmVkQ2hpbGRyZW5gLCBhdCB3aGljaFxuICogdGlt
ZSB0aGUgY29udGFpbmVyJ3MgY2hpbGQgbm9kZXMgYXJlIGFsd2F5cyBjYWNoZWQgKHVudGlsIGl0
IHVubW91bnRzKS5cbiAqL1xuZnVuY3Rpb24gcHJlY2FjaGVDaGlsZE5vZGVzKGluc3QsIG5vZGUp
IHtcbiAgaWYgKGluc3QuX2ZsYWdzICYgRmxhZ3MuaGFzQ2FjaGVkQ2hpbGROb2Rlcykge1xuICAg
IHJldHVybjtcbiAgfVxuICB2YXIgY2hpbGRyZW4gPSBpbnN0Ll9yZW5kZXJlZENoaWxkcmVuO1xu
ICB2YXIgY2hpbGROb2RlID0gbm9kZS5maXJzdENoaWxkO1xuICBvdXRlcjogZm9yICh2YXIgbmFt
ZSBpbiBjaGlsZHJlbikge1xuICAgIGlmICghY2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkp
IHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB2YXIgY2hpbGRJbnN0ID0gY2hpbGRyZW5b
bmFtZV07XG4gICAgdmFyIGNoaWxkSUQgPSBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9u
ZW50KGNoaWxkSW5zdCkuX2RvbUlEO1xuICAgIGlmIChjaGlsZElEID09PSAwKSB7XG4gICAgICAv
LyBXZSdyZSBjdXJyZW50bHkgdW5tb3VudGluZyB0aGlzIGNoaWxkIGluIFJlYWN0TXVsdGlDaGls
ZDsgc2tpcCBpdC5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICAvLyBXZSBhc3N1bWUgdGhl
IGNoaWxkIG5vZGVzIGFyZSBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgY2hpbGQgaW5zdGFuY2Vz
LlxuICAgIGZvciAoOyBjaGlsZE5vZGUgIT09IG51bGw7IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5u
ZXh0U2libGluZykge1xuICAgICAgaWYgKHNob3VsZFByZWNhY2hlTm9kZShjaGlsZE5vZGUsIGNo
aWxkSUQpKSB7XG4gICAgICAgIHByZWNhY2hlTm9kZShjaGlsZEluc3QsIGNoaWxkTm9kZSk7XG4g
ICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBXZSByZWFjaGVk
IHRoZSBlbmQgb2YgdGhlIERPTSBjaGlsZHJlbiB3aXRob3V0IGZpbmRpbmcgYW4gSUQgbWF0Y2gu
XG4gICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ1VuYWJsZSB0byBmaW5kIGVsZW1lbnQgd2l0aCBJRCAlcy4nLCBjaGls
ZElEKSA6IF9wcm9kSW52YXJpYW50KCczMicsIGNoaWxkSUQpIDogdm9pZCAwO1xuICB9XG4gIGlu
c3QuX2ZsYWdzIHw9IEZsYWdzLmhhc0NhY2hlZENoaWxkTm9kZXM7XG59XG5cbi8qKlxuICogR2l2
ZW4gYSBET00gbm9kZSwgcmV0dXJuIHRoZSBjbG9zZXN0IFJlYWN0RE9NQ29tcG9uZW50IG9yXG4g
KiBSZWFjdERPTVRleHRDb21wb25lbnQgaW5zdGFuY2UgYW5jZXN0b3IuXG4gKi9cbmZ1bmN0aW9u
IGdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG5vZGUpIHtcbiAgaWYgKG5vZGVbaW50ZXJuYWxJ
bnN0YW5jZUtleV0pIHtcbiAgICByZXR1cm4gbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XTtcbiAg
fVxuXG4gIC8vIFdhbGsgdXAgdGhlIHRyZWUgdW50aWwgd2UgZmluZCBhbiBhbmNlc3RvciB3aG9z
ZSBpbnN0YW5jZSB3ZSBoYXZlIGNhY2hlZC5cbiAgdmFyIHBhcmVudHMgPSBbXTtcbiAgd2hpbGUg
KCFub2RlW2ludGVybmFsSW5zdGFuY2VLZXldKSB7XG4gICAgcGFyZW50cy5wdXNoKG5vZGUpO1xu
ICAgIGlmIChub2RlLnBhcmVudE5vZGUpIHtcbiAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7
XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRvcCBvZiB0aGUgdHJlZS4gVGhpcyBub2RlIG11c3Qg
bm90IGJlIHBhcnQgb2YgYSBSZWFjdCB0cmVlIChvciBpc1xuICAgICAgLy8gdW5tb3VudGVkLCBw
b3RlbnRpYWxseSkuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICB2YXIgY2xv
c2VzdDtcbiAgdmFyIGluc3Q7XG4gIGZvciAoOyBub2RlICYmIChpbnN0ID0gbm9kZVtpbnRlcm5h
bEluc3RhbmNlS2V5XSk7IG5vZGUgPSBwYXJlbnRzLnBvcCgpKSB7XG4gICAgY2xvc2VzdCA9IGlu
c3Q7XG4gICAgaWYgKHBhcmVudHMubGVuZ3RoKSB7XG4gICAgICBwcmVjYWNoZUNoaWxkTm9kZXMo
aW5zdCwgbm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNsb3Nlc3Q7XG59XG5cbi8qKlxu
ICogR2l2ZW4gYSBET00gbm9kZSwgcmV0dXJuIHRoZSBSZWFjdERPTUNvbXBvbmVudCBvciBSZWFj
dERPTVRleHRDb21wb25lbnRcbiAqIGluc3RhbmNlLCBvciBudWxsIGlmIHRoZSBub2RlIHdhcyBu
b3QgcmVuZGVyZWQgYnkgdGhpcyBSZWFjdC5cbiAqL1xuZnVuY3Rpb24gZ2V0SW5zdGFuY2VGcm9t
Tm9kZShub2RlKSB7XG4gIHZhciBpbnN0ID0gZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobm9k
ZSk7XG4gIGlmIChpbnN0ICE9IG51bGwgJiYgaW5zdC5faG9zdE5vZGUgPT09IG5vZGUpIHtcbiAg
ICByZXR1cm4gaW5zdDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4v
KipcbiAqIEdpdmVuIGEgUmVhY3RET01Db21wb25lbnQgb3IgUmVhY3RET01UZXh0Q29tcG9uZW50
LCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmdcbiAqIERPTSBub2RlLlxuICovXG5mdW5jdGlvbiBn
ZXROb2RlRnJvbUluc3RhbmNlKGluc3QpIHtcbiAgLy8gV2l0aG91dCB0aGlzIGZpcnN0IGludmFy
aWFudCwgcGFzc2luZyBhIG5vbi1ET00tY29tcG9uZW50IHRyaWdnZXJzIHRoZSBuZXh0XG4gIC8v
IGludmFyaWFudCBmb3IgYSBtaXNzaW5nIHBhcmVudCwgd2hpY2ggaXMgc3VwZXIgY29uZnVzaW5n
LlxuICAhKGluc3QuX2hvc3ROb2RlICE9PSB1bmRlZmluZWQpID8gcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2dldE5vZGVGcm9tSW5zdGFu
Y2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzMnKSA6IHZvaWQgMDtc
blxuICBpZiAoaW5zdC5faG9zdE5vZGUpIHtcbiAgICByZXR1cm4gaW5zdC5faG9zdE5vZGU7XG4g
IH1cblxuICAvLyBXYWxrIHVwIHRoZSB0cmVlIHVudGlsIHdlIGZpbmQgYW4gYW5jZXN0b3Igd2hv
c2UgRE9NIG5vZGUgd2UgaGF2ZSBjYWNoZWQuXG4gIHZhciBwYXJlbnRzID0gW107XG4gIHdoaWxl
ICghaW5zdC5faG9zdE5vZGUpIHtcbiAgICBwYXJlbnRzLnB1c2goaW5zdCk7XG4gICAgIWluc3Qu
X2hvc3RQYXJlbnQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnUmVhY3QgRE9NIHRyZWUgcm9vdCBzaG91bGQgYWx3YXlzIGhhdmUgYSBu
b2RlIHJlZmVyZW5jZS4nKSA6IF9wcm9kSW52YXJpYW50KCczNCcpIDogdm9pZCAwO1xuICAgIGlu
c3QgPSBpbnN0Ll9ob3N0UGFyZW50O1xuICB9XG5cbiAgLy8gTm93IHBhcmVudHMgY29udGFpbnMg
ZWFjaCBhbmNlc3RvciB0aGF0IGRvZXMgKm5vdCogaGF2ZSBhIGNhY2hlZCBuYXRpdmVcbiAgLy8g
bm9kZSwgYW5kIGBpbnN0YCBpcyB0aGUgZGVlcGVzdCBhbmNlc3RvciB0aGF0IGRvZXMuXG4gIGZv
ciAoOyBwYXJlbnRzLmxlbmd0aDsgaW5zdCA9IHBhcmVudHMucG9wKCkpIHtcbiAgICBwcmVjYWNo
ZUNoaWxkTm9kZXMoaW5zdCwgaW5zdC5faG9zdE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIGluc3Qu
X2hvc3ROb2RlO1xufVxuXG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0ge1xuICBnZXRDbG9z
ZXN0SW5zdGFuY2VGcm9tTm9kZTogZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUsXG4gIGdldElu
c3RhbmNlRnJvbU5vZGU6IGdldEluc3RhbmNlRnJvbU5vZGUsXG4gIGdldE5vZGVGcm9tSW5zdGFu
Y2U6IGdldE5vZGVGcm9tSW5zdGFuY2UsXG4gIHByZWNhY2hlQ2hpbGROb2RlczogcHJlY2FjaGVD
aGlsZE5vZGVzLFxuICBwcmVjYWNoZU5vZGU6IHByZWNhY2hlTm9kZSxcbiAgdW5jYWNoZU5vZGU6
IHVuY2FjaGVOb2RlXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NQ29tcG9uZW50VHJl
ZTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NQ29tcG9uZW50VHJlZS5qc1xuLy8gbW9kdWxl
IGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGNhblVzZURPTSA9ICEhKHR5cGVvZiB3
aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCk7XG5cbi8qKlxuICogU2ltcGxlLCBsaWdodHdlaWdodCBtb2R1bGUg
YXNzaXN0aW5nIHdpdGggdGhlIGRldGVjdGlvbiBhbmQgY29udGV4dCBvZlxuICogV29ya2VyLiBI
ZWxwcyBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYW5kIGFsbG93cyBjb2RlIHRvIHJlYXNv
biBhYm91dFxuICogd2hldGhlciBvciBub3QgdGhleSBhcmUgaW4gYSBXb3JrZXIsIGV2ZW4gaWYg
dGhleSBuZXZlciBpbmNsdWRlIHRoZSBtYWluXG4gKiBgUmVhY3RXb3JrZXJgIGRlcGVuZGVuY3ku
XG4gKi9cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHtcblxuICBjYW5Vc2VET006IGNhblVz
ZURPTSxcblxuICBjYW5Vc2VXb3JrZXJzOiB0eXBlb2YgV29ya2VyICE9PSAndW5kZWZpbmVkJyxc
blxuICBjYW5Vc2VFdmVudExpc3RlbmVyczogY2FuVXNlRE9NICYmICEhKHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyIHx8IHdpbmRvdy5hdHRhY2hFdmVudCksXG5cbiAgY2FuVXNlVmlld3BvcnQ6IGNh
blVzZURPTSAmJiAhIXdpbmRvdy5zY3JlZW4sXG5cbiAgaXNJbldvcmtlcjogIWNhblVzZURPTSAv
LyBGb3Igbm93LCB0aGlzIGlzIHRydWUgLSBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cblxu
fTtcblxubW9kdWxlLmV4cG9ydHMgPSBFeGVjdXRpb25FbnZpcm9ubWVudDtcblxuXG4vLy8vLy8v
Ly8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9mYmpzL2xp
Yi9FeGVjdXRpb25FbnZpcm9ubWVudC5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNo
dW5rcyA9IDAiLCJcInVzZSBzdHJpY3RcIjtcblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqIFxuICovXG5cbmZ1bmN0aW9uIG1ha2VFbXB0eUZ1bmN0aW9uKGFyZykge1xuICByZXR1
cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBhcmc7XG4gIH07XG59XG5cbi8qKlxuICogVGhp
cyBmdW5jdGlvbiBhY2NlcHRzIGFuZCBkaXNjYXJkcyBpbnB1dHM7IGl0IGhhcyBubyBzaWRlIGVm
ZmVjdHMuIFRoaXMgaXNcbiAqIHByaW1hcmlseSB1c2VmdWwgaWRpb21hdGljYWxseSBmb3Igb3Zl
cnJpZGFibGUgZnVuY3Rpb24gZW5kcG9pbnRzIHdoaWNoXG4gKiBhbHdheXMgbmVlZCB0byBiZSBj
YWxsYWJsZSwgc2luY2UgSlMgbGFja3MgYSBudWxsLWNhbGwgaWRpb20gYWxhIENvY29hLlxuICov
XG52YXIgZW1wdHlGdW5jdGlvbiA9IGZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fTtcblxuZW1w
dHlGdW5jdGlvbi50aGF0UmV0dXJucyA9IG1ha2VFbXB0eUZ1bmN0aW9uO1xuZW1wdHlGdW5jdGlv
bi50aGF0UmV0dXJuc0ZhbHNlID0gbWFrZUVtcHR5RnVuY3Rpb24oZmFsc2UpO1xuZW1wdHlGdW5j
dGlvbi50aGF0UmV0dXJuc1RydWUgPSBtYWtlRW1wdHlGdW5jdGlvbih0cnVlKTtcbmVtcHR5RnVu
Y3Rpb24udGhhdFJldHVybnNOdWxsID0gbWFrZUVtcHR5RnVuY3Rpb24obnVsbCk7XG5lbXB0eUZ1
bmN0aW9uLnRoYXRSZXR1cm5zVGhpcyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXM7XG59
O1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50ID0gZnVuY3Rpb24gKGFyZykge1xu
ICByZXR1cm4gYXJnO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBlbXB0eUZ1bmN0aW9uO1xuXG5c
bi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVz
L2ZianMvbGliL2VtcHR5RnVuY3Rpb24uanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBj
aHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBz
dHJpY3QnO1xuXG4vLyBUcnVzdCB0aGUgZGV2ZWxvcGVyIHRvIG9ubHkgdXNlIFJlYWN0SW5zdHJ1
bWVudGF0aW9uIHdpdGggYSBfX0RFVl9fIGNoZWNrXG5cbnZhciBkZWJ1Z1Rvb2wgPSBudWxsO1xu
XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVh
Y3REZWJ1Z1Rvb2wgPSByZXF1aXJlKCcuL1JlYWN0RGVidWdUb29sJyk7XG4gIGRlYnVnVG9vbCA9
IFJlYWN0RGVidWdUb29sO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgZGVidWdUb29sOiBkZWJ1
Z1Rvb2wgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAu
L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0SW5zdHJ1bWVudGF0aW9uLmpzXG4vLyBt
b2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVp
cmUoJy4vcmVhY3RQcm9kSW52YXJpYW50JyksXG4gICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVj
dC1hc3NpZ24nKTtcblxudmFyIENhbGxiYWNrUXVldWUgPSByZXF1aXJlKCcuL0NhbGxiYWNrUXVl
dWUnKTtcbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcbnZhciBS
ZWFjdEZlYXR1cmVGbGFncyA9IHJlcXVpcmUoJy4vUmVhY3RGZWF0dXJlRmxhZ3MnKTtcbnZhciBS
ZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xudmFyIFRyYW5z
YWN0aW9uID0gcmVxdWlyZSgnLi9UcmFuc2FjdGlvbicpO1xuXG52YXIgaW52YXJpYW50ID0gcmVx
dWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBkaXJ0eUNvbXBvbmVudHMgPSBbXTtc
bnZhciB1cGRhdGVCYXRjaE51bWJlciA9IDA7XG52YXIgYXNhcENhbGxiYWNrUXVldWUgPSBDYWxs
YmFja1F1ZXVlLmdldFBvb2xlZCgpO1xudmFyIGFzYXBFbnF1ZXVlZCA9IGZhbHNlO1xuXG52YXIg
YmF0Y2hpbmdTdHJhdGVneSA9IG51bGw7XG5cbmZ1bmN0aW9uIGVuc3VyZUluamVjdGVkKCkge1xu
ICAhKFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uICYmIGJhdGNoaW5nU3Ry
YXRlZ3kpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBpbmplY3QgYSByZWNvbmNpbGUgdHJhbnNhY3Rp
b24gY2xhc3MgYW5kIGJhdGNoaW5nIHN0cmF0ZWd5JykgOiBfcHJvZEludmFyaWFudCgnMTIzJykg
OiB2b2lkIDA7XG59XG5cbnZhciBORVNURURfVVBEQVRFUyA9IHtcbiAgaW5pdGlhbGl6ZTogZnVu
Y3Rpb24gKCkge1xuICAgIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoID0gZGlydHlDb21wb25l
bnRzLmxlbmd0aDtcbiAgfSxcbiAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5k
aXJ0eUNvbXBvbmVudHNMZW5ndGggIT09IGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIHtcbiAgICAg
IC8vIEFkZGl0aW9uYWwgdXBkYXRlcyB3ZXJlIGVucXVldWVkIGJ5IGNvbXBvbmVudERpZFVwZGF0
ZSBoYW5kbGVycyBvclxuICAgICAgLy8gc2ltaWxhcjsgYmVmb3JlIG91ciBvd24gVVBEQVRFX1FV
RVVFSU5HIHdyYXBwZXIgY2xvc2VzLCB3ZSB3YW50IHRvIHJ1blxuICAgICAgLy8gdGhlc2UgbmV3
IHVwZGF0ZXMgc28gdGhhdCBpZiBBJ3MgY29tcG9uZW50RGlkVXBkYXRlIGNhbGxzIHNldFN0YXRl
IG9uXG4gICAgICAvLyBCLCBCIHdpbGwgdXBkYXRlIGJlZm9yZSB0aGUgY2FsbGJhY2sgQSdzIHVw
ZGF0ZXIgcHJvdmlkZWQgd2hlbiBjYWxsaW5nXG4gICAgICAvLyBzZXRTdGF0ZS5cbiAgICAgIGRp
cnR5Q29tcG9uZW50cy5zcGxpY2UoMCwgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgpO1xuICAg
ICAgZmx1c2hCYXRjaGVkVXBkYXRlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXJ0eUNvbXBv
bmVudHMubGVuZ3RoID0gMDtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBVUERBVEVfUVVFVUVJTkcg
PSB7XG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNhbGxiYWNrUXVldWUu
cmVzZXQoKTtcbiAgfSxcbiAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNhbGxiYWNr
UXVldWUubm90aWZ5QWxsKCk7XG4gIH1cbn07XG5cbnZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9
IFtORVNURURfVVBEQVRFUywgVVBEQVRFX1FVRVVFSU5HXTtcblxuZnVuY3Rpb24gUmVhY3RVcGRh
dGVzRmx1c2hUcmFuc2FjdGlvbigpIHtcbiAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigp
O1xuICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9IG51bGw7XG4gIHRoaXMuY2FsbGJhY2tR
dWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7XG4gIHRoaXMucmVjb25jaWxlVHJhbnNh
Y3Rpb24gPSBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQo
XG4gIC8qIHVzZUNyZWF0ZUVsZW1lbnQgKi90cnVlKTtcbn1cblxuX2Fzc2lnbihSZWFjdFVwZGF0
ZXNGbHVzaFRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIHtcbiAgZ2V0VHJhbnNh
Y3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQ
UEVSUztcbiAgfSxcblxuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5kaXJ0
eUNvbXBvbmVudHNMZW5ndGggPSBudWxsO1xuICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0aGlz
LmNhbGxiYWNrUXVldWUpO1xuICAgIHRoaXMuY2FsbGJhY2tRdWV1ZSA9IG51bGw7XG4gICAgUmVh
Y3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2ls
ZVRyYW5zYWN0aW9uKTtcbiAgICB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uID0gbnVsbDtcbiAg
fSxcblxuICBwZXJmb3JtOiBmdW5jdGlvbiAobWV0aG9kLCBzY29wZSwgYSkge1xuICAgIC8vIEVz
c2VudGlhbGx5IGNhbGxzIGB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLnBlcmZvcm0obWV0aG9k
LCBzY29wZSwgYSlgXG4gICAgLy8gd2l0aCB0aGlzIHRyYW5zYWN0aW9uJ3Mgd3JhcHBlcnMgYXJv
dW5kIGl0LlxuICAgIHJldHVybiBUcmFuc2FjdGlvbi5wZXJmb3JtLmNhbGwodGhpcywgdGhpcy5y
ZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtLCB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLCBt
ZXRob2QsIHNjb3BlLCBhKTtcbiAgfVxufSk7XG5cblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhS
ZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uKTtcblxuZnVuY3Rpb24gYmF0Y2hlZFVwZGF0ZXMo
Y2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpIHtcbiAgZW5zdXJlSW5qZWN0ZWQoKTtcbiAgcmV0dXJu
IGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUp
O1xufVxuXG4vKipcbiAqIEFycmF5IGNvbXBhcmF0b3IgZm9yIFJlYWN0Q29tcG9uZW50cyBieSBt
b3VudCBvcmRlcmluZy5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjMSBmaXJzdCBj
b21wb25lbnQgeW91J3JlIGNvbXBhcmluZ1xuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gYzIg
c2Vjb25kIGNvbXBvbmVudCB5b3UncmUgY29tcGFyaW5nXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFJl
dHVybiB2YWx1ZSB1c2FibGUgYnkgQXJyYXkucHJvdG90eXBlLnNvcnQoKS5cbiAqL1xuZnVuY3Rp
b24gbW91bnRPcmRlckNvbXBhcmF0b3IoYzEsIGMyKSB7XG4gIHJldHVybiBjMS5fbW91bnRPcmRl
ciAtIGMyLl9tb3VudE9yZGVyO1xufVxuXG5mdW5jdGlvbiBydW5CYXRjaGVkVXBkYXRlcyh0cmFu
c2FjdGlvbikge1xuICB2YXIgbGVuID0gdHJhbnNhY3Rpb24uZGlydHlDb21wb25lbnRzTGVuZ3Ro
O1xuICAhKGxlbiA9PT0gZGlydHlDb21wb25lbnRzLmxlbmd0aCkgPyBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgZmx1c2gg
dHJhbnNhY3Rpb25cXCdzIHN0b3JlZCBkaXJ0eS1jb21wb25lbnRzIGxlbmd0aCAoJXMpIHRvIG1h
dGNoIGRpcnR5LWNvbXBvbmVudHMgYXJyYXkgbGVuZ3RoICglcykuJywgbGVuLCBkaXJ0eUNvbXBv
bmVudHMubGVuZ3RoKSA6IF9wcm9kSW52YXJpYW50KCcxMjQnLCBsZW4sIGRpcnR5Q29tcG9uZW50
cy5sZW5ndGgpIDogdm9pZCAwO1xuXG4gIC8vIFNpbmNlIHJlY29uY2lsaW5nIGEgY29tcG9uZW50
IGhpZ2hlciBpbiB0aGUgb3duZXIgaGllcmFyY2h5IHVzdWFsbHkgKG5vdFxuICAvLyBhbHdheXMg
LS0gc2VlIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpKSB3aWxsIHJlY29uY2lsZSBjaGlsZHJlbiwg
cmVjb25jaWxlXG4gIC8vIHRoZW0gYmVmb3JlIHRoZWlyIGNoaWxkcmVuIGJ5IHNvcnRpbmcgdGhl
IGFycmF5LlxuICBkaXJ0eUNvbXBvbmVudHMuc29ydChtb3VudE9yZGVyQ29tcGFyYXRvcik7XG5c
biAgLy8gQW55IHVwZGF0ZXMgZW5xdWV1ZWQgd2hpbGUgcmVjb25jaWxpbmcgbXVzdCBiZSBwZXJm
b3JtZWQgYWZ0ZXIgdGhpcyBlbnRpcmVcbiAgLy8gYmF0Y2guIE90aGVyd2lzZSwgaWYgZGlydHlD
b21wb25lbnRzIGlzIFtBLCBCXSB3aGVyZSBBIGhhcyBjaGlsZHJlbiBCIGFuZFxuICAvLyBDLCBC
IGNvdWxkIHVwZGF0ZSB0d2ljZSBpbiBhIHNpbmdsZSBiYXRjaCBpZiBDJ3MgcmVuZGVyIGVucXVl
dWVzIGFuIHVwZGF0ZVxuICAvLyB0byBCIChzaW5jZSBCIHdvdWxkIGhhdmUgYWxyZWFkeSB1cGRh
dGVkLCB3ZSBzaG91bGQgc2tpcCBpdCwgYW5kIHRoZSBvbmx5XG4gIC8vIHdheSB3ZSBjYW4ga25v
dyB0byBkbyBzbyBpcyBieSBjaGVja2luZyB0aGUgYmF0Y2ggY291bnRlcikuXG4gIHVwZGF0ZUJh
dGNoTnVtYmVyKys7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIC8v
IElmIGEgY29tcG9uZW50IGlzIHVubW91bnRlZCBiZWZvcmUgcGVuZGluZyBjaGFuZ2VzIGFwcGx5
LCBpdCB3aWxsIHN0aWxsXG4gICAgLy8gYmUgaGVyZSwgYnV0IHdlIGFzc3VtZSB0aGF0IGl0IGhh
cyBjbGVhcmVkIGl0cyBfcGVuZGluZ0NhbGxiYWNrcyBhbmRcbiAgICAvLyB0aGF0IHBlcmZvcm1V
cGRhdGVJZk5lY2Vzc2FyeSBpcyBhIG5vb3AuXG4gICAgdmFyIGNvbXBvbmVudCA9IGRpcnR5Q29t
cG9uZW50c1tpXTtcblxuICAgIC8vIElmIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSBoYXBwZW5z
IHRvIGVucXVldWUgYW55IG5ldyB1cGRhdGVzLCB3ZVxuICAgIC8vIHNob3VsZG4ndCBleGVjdXRl
IHRoZSBjYWxsYmFja3MgdW50aWwgdGhlIG5leHQgcmVuZGVyIGhhcHBlbnMsIHNvXG4gICAgLy8g
c3Rhc2ggdGhlIGNhbGxiYWNrcyBmaXJzdFxuICAgIHZhciBjYWxsYmFja3MgPSBjb21wb25lbnQu
X3BlbmRpbmdDYWxsYmFja3M7XG4gICAgY29tcG9uZW50Ll9wZW5kaW5nQ2FsbGJhY2tzID0gbnVs
bDtcblxuICAgIHZhciBtYXJrZXJOYW1lO1xuICAgIGlmIChSZWFjdEZlYXR1cmVGbGFncy5sb2dU
b3BMZXZlbFJlbmRlcnMpIHtcbiAgICAgIHZhciBuYW1lZENvbXBvbmVudCA9IGNvbXBvbmVudDtc
biAgICAgIC8vIER1Y2sgdHlwZSBUb3BMZXZlbFdyYXBwZXIuIFRoaXMgaXMgcHJvYmFibHkgYWx3
YXlzIHRydWUuXG4gICAgICBpZiAoY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC50eXBlLmlzUmVh
Y3RUb3BMZXZlbFdyYXBwZXIpIHtcbiAgICAgICAgbmFtZWRDb21wb25lbnQgPSBjb21wb25lbnQu
X3JlbmRlcmVkQ29tcG9uZW50O1xuICAgICAgfVxuICAgICAgbWFya2VyTmFtZSA9ICdSZWFjdCB1
cGRhdGU6ICcgKyBuYW1lZENvbXBvbmVudC5nZXROYW1lKCk7XG4gICAgICBjb25zb2xlLnRpbWUo
bWFya2VyTmFtZSk7XG4gICAgfVxuXG4gICAgUmVhY3RSZWNvbmNpbGVyLnBlcmZvcm1VcGRhdGVJ
Zk5lY2Vzc2FyeShjb21wb25lbnQsIHRyYW5zYWN0aW9uLnJlY29uY2lsZVRyYW5zYWN0aW9uLCB1
cGRhdGVCYXRjaE51bWJlcik7XG5cbiAgICBpZiAobWFya2VyTmFtZSkge1xuICAgICAgY29uc29s
ZS50aW1lRW5kKG1hcmtlck5hbWUpO1xuICAgIH1cblxuICAgIGlmIChjYWxsYmFja3MpIHtcbiAg
ICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2FsbGJhY2tzLmxlbmd0aDsgaisrKSB7XG4gICAgICAg
IHRyYW5zYWN0aW9uLmNhbGxiYWNrUXVldWUuZW5xdWV1ZShjYWxsYmFja3Nbal0sIGNvbXBvbmVu
dC5nZXRQdWJsaWNJbnN0YW5jZSgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxudmFyIGZs
dXNoQmF0Y2hlZFVwZGF0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFJlYWN0VXBkYXRlc0ZsdXNo
VHJhbnNhY3Rpb24ncyB3cmFwcGVycyB3aWxsIGNsZWFyIHRoZSBkaXJ0eUNvbXBvbmVudHNcbiAg
Ly8gYXJyYXkgYW5kIHBlcmZvcm0gYW55IHVwZGF0ZXMgZW5xdWV1ZWQgYnkgbW91bnQtcmVhZHkg
aGFuZGxlcnMgKGkuZS4sXG4gIC8vIGNvbXBvbmVudERpZFVwZGF0ZSkgYnV0IHdlIG5lZWQgdG8g
Y2hlY2sgaGVyZSB0b28gaW4gb3JkZXIgdG8gY2F0Y2hcbiAgLy8gdXBkYXRlcyBlbnF1ZXVlZCBi
eSBzZXRTdGF0ZSBjYWxsYmFja3MgYW5kIGFzYXAgY2FsbHMuXG4gIHdoaWxlIChkaXJ0eUNvbXBv
bmVudHMubGVuZ3RoIHx8IGFzYXBFbnF1ZXVlZCkge1xuICAgIGlmIChkaXJ0eUNvbXBvbmVudHMu
bGVuZ3RoKSB7XG4gICAgICB2YXIgdHJhbnNhY3Rpb24gPSBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5z
YWN0aW9uLmdldFBvb2xlZCgpO1xuICAgICAgdHJhbnNhY3Rpb24ucGVyZm9ybShydW5CYXRjaGVk
VXBkYXRlcywgbnVsbCwgdHJhbnNhY3Rpb24pO1xuICAgICAgUmVhY3RVcGRhdGVzRmx1c2hUcmFu
c2FjdGlvbi5yZWxlYXNlKHRyYW5zYWN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoYXNhcEVucXVl
dWVkKSB7XG4gICAgICBhc2FwRW5xdWV1ZWQgPSBmYWxzZTtcbiAgICAgIHZhciBxdWV1ZSA9IGFz
YXBDYWxsYmFja1F1ZXVlO1xuICAgICAgYXNhcENhbGxiYWNrUXVldWUgPSBDYWxsYmFja1F1ZXVl
LmdldFBvb2xlZCgpO1xuICAgICAgcXVldWUubm90aWZ5QWxsKCk7XG4gICAgICBDYWxsYmFja1F1
ZXVlLnJlbGVhc2UocXVldWUpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBNYXJrIGEgY29t
cG9uZW50IGFzIG5lZWRpbmcgYSByZXJlbmRlciwgYWRkaW5nIGFuIG9wdGlvbmFsIGNhbGxiYWNr
IHRvIGFcbiAqIGxpc3Qgb2YgZnVuY3Rpb25zIHdoaWNoIHdpbGwgYmUgZXhlY3V0ZWQgb25jZSB0
aGUgcmVyZW5kZXIgb2NjdXJzLlxuICovXG5mdW5jdGlvbiBlbnF1ZXVlVXBkYXRlKGNvbXBvbmVu
dCkge1xuICBlbnN1cmVJbmplY3RlZCgpO1xuXG4gIC8vIFZhcmlvdXMgcGFydHMgb2Ygb3VyIGNv
ZGUgKHN1Y2ggYXMgUmVhY3RDb21wb3NpdGVDb21wb25lbnQnc1xuICAvLyBfcmVuZGVyVmFsaWRh
dGVkQ29tcG9uZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDtc
biAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdzIHRoZSBjYXNlLiAoVGhpcyBpcyBjYWxsZWQgYnkgZWFj
aCB0b3AtbGV2ZWwgdXBkYXRlXG4gIC8vIGZ1bmN0aW9uLCBsaWtlIHNldFN0YXRlLCBmb3JjZVVw
ZGF0ZSwgZXRjLjsgY3JlYXRpb24gYW5kXG4gIC8vIGRlc3RydWN0aW9uIG9mIHRvcC1sZXZlbCBj
b21wb25lbnRzIGlzIGd1YXJkZWQgaW4gUmVhY3RNb3VudC4pXG5cbiAgaWYgKCFiYXRjaGluZ1N0
cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzKSB7XG4gICAgYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVk
VXBkYXRlcyhlbnF1ZXVlVXBkYXRlLCBjb21wb25lbnQpO1xuICAgIHJldHVybjtcbiAgfVxuXG4g
IGRpcnR5Q29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gIGlmIChjb21wb25lbnQuX3VwZGF0
ZUJhdGNoTnVtYmVyID09IG51bGwpIHtcbiAgICBjb21wb25lbnQuX3VwZGF0ZUJhdGNoTnVtYmVy
ID0gdXBkYXRlQmF0Y2hOdW1iZXIgKyAxO1xuICB9XG59XG5cbi8qKlxuICogRW5xdWV1ZSBhIGNh
bGxiYWNrIHRvIGJlIHJ1biBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGJhdGNoaW5nIGN5Y2xl
LiBUaHJvd3NcbiAqIGlmIG5vIHVwZGF0ZXMgYXJlIGN1cnJlbnRseSBiZWluZyBwZXJmb3JtZWQu
XG4gKi9cbmZ1bmN0aW9uIGFzYXAoY2FsbGJhY2ssIGNvbnRleHQpIHtcbiAgIWJhdGNoaW5nU3Ry
YXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzLmFzYXA6IENhblxcJ3QgZW5x
dWV1ZSBhbiBhc2FwIGNhbGxiYWNrIGluIGEgY29udGV4dCB3aGVyZXVwZGF0ZXMgYXJlIG5vdCBi
ZWluZyBiYXRjaGVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzEyNScpIDogdm9pZCAwO1xuICBhc2Fw
Q2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKGNhbGxiYWNrLCBjb250ZXh0KTtcbiAgYXNhcEVucXVldWVk
ID0gdHJ1ZTtcbn1cblxudmFyIFJlYWN0VXBkYXRlc0luamVjdGlvbiA9IHtcbiAgaW5qZWN0UmVj
b25jaWxlVHJhbnNhY3Rpb246IGZ1bmN0aW9uIChSZWNvbmNpbGVUcmFuc2FjdGlvbikge1xuICAg
ICFSZWNvbmNpbGVUcmFuc2FjdGlvbiA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhIHJl
Y29uY2lsZSB0cmFuc2FjdGlvbiBjbGFzcycpIDogX3Byb2RJbnZhcmlhbnQoJzEyNicpIDogdm9p
ZCAwO1xuICAgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uID0gUmVjb25j
aWxlVHJhbnNhY3Rpb247XG4gIH0sXG5cbiAgaW5qZWN0QmF0Y2hpbmdTdHJhdGVneTogZnVuY3Rp
b24gKF9iYXRjaGluZ1N0cmF0ZWd5KSB7XG4gICAgIV9iYXRjaGluZ1N0cmF0ZWd5ID8gcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0
VXBkYXRlczogbXVzdCBwcm92aWRlIGEgYmF0Y2hpbmcgc3RyYXRlZ3knKSA6IF9wcm9kSW52YXJp
YW50KCcxMjcnKSA6IHZvaWQgMDtcbiAgICAhKHR5cGVvZiBfYmF0Y2hpbmdTdHJhdGVneS5iYXRj
aGVkVXBkYXRlcyA9PT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUg
YSBiYXRjaGVkVXBkYXRlcygpIGZ1bmN0aW9uJykgOiBfcHJvZEludmFyaWFudCgnMTI4JykgOiB2
b2lkIDA7XG4gICAgISh0eXBlb2YgX2JhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMg
PT09ICdib29sZWFuJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYW4gaXNCYXRjaGlu
Z1VwZGF0ZXMgYm9vbGVhbiBhdHRyaWJ1dGUnKSA6IF9wcm9kSW52YXJpYW50KCcxMjknKSA6IHZv
aWQgMDtcbiAgICBiYXRjaGluZ1N0cmF0ZWd5ID0gX2JhdGNoaW5nU3RyYXRlZ3k7XG4gIH1cbn07
XG5cbnZhciBSZWFjdFVwZGF0ZXMgPSB7XG4gIC8qKlxuICAgKiBSZWFjdCByZWZlcmVuY2VzIGBS
ZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uYCB1c2luZyB0aGlzIHByb3BlcnR5IGluIG9yZGVyXG4g
ICAqIHRvIGFsbG93IGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxuICAgKlxuICAgKiBAaW50ZXJuYWxc
biAgICovXG4gIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb246IG51bGwsXG5cbiAgYmF0Y2hlZFVw
ZGF0ZXM6IGJhdGNoZWRVcGRhdGVzLFxuICBlbnF1ZXVlVXBkYXRlOiBlbnF1ZXVlVXBkYXRlLFxu
ICBmbHVzaEJhdGNoZWRVcGRhdGVzOiBmbHVzaEJhdGNoZWRVcGRhdGVzLFxuICBpbmplY3Rpb246
IFJlYWN0VXBkYXRlc0luamVjdGlvbixcbiAgYXNhcDogYXNhcFxufTtcblxubW9kdWxlLmV4cG9y
dHMgPSBSZWFjdFVwZGF0ZXM7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZP
T1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdFVwZGF0ZXMuanNcbi8v
IG1vZHVsZSBpZCA9IDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnO1xuXG5t
b2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL1JlYWN0Jyk7XG5cblxuXG4vLy8vLy8vLy8v
Ly8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC9yZWFj
dC5qc1xuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogS2Vl
cHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgb3duZXIuXG4gKlxuICogVGhlIGN1cnJlbnQgb3duZXIg
aXMgdGhlIGNvbXBvbmVudCB3aG8gc2hvdWxkIG93biBhbnkgY29tcG9uZW50cyB0aGF0IGFyZVxu
ICogY3VycmVudGx5IGJlaW5nIGNvbnN0cnVjdGVkLlxuICovXG52YXIgUmVhY3RDdXJyZW50T3du
ZXIgPSB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHR5cGUge1JlYWN0Q29tcG9uZW50
fVxuICAgKi9cbiAgY3VycmVudDogbnVsbFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEN1
cnJlbnRPd25lcjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4v
LyAuL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RDdXJyZW50T3duZXIuanNcbi8vIG1vZHVs
ZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0
LWFzc2lnbicpO1xuXG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7
XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicp
O1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBkaWRX
YXJuRm9yQWRkZWROZXdQcm9wZXJ0eSA9IGZhbHNlO1xudmFyIGlzUHJveHlTdXBwb3J0ZWQgPSB0
eXBlb2YgUHJveHkgPT09ICdmdW5jdGlvbic7XG5cbnZhciBzaG91bGRCZVJlbGVhc2VkUHJvcGVy
dGllcyA9IFsnZGlzcGF0Y2hDb25maWcnLCAnX3RhcmdldEluc3QnLCAnbmF0aXZlRXZlbnQnLCAn
aXNEZWZhdWx0UHJldmVudGVkJywgJ2lzUHJvcGFnYXRpb25TdG9wcGVkJywgJ19kaXNwYXRjaExp
c3RlbmVycycsICdfZGlzcGF0Y2hJbnN0YW5jZXMnXTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2
ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAq
L1xudmFyIEV2ZW50SW50ZXJmYWNlID0ge1xuICB0eXBlOiBudWxsLFxuICB0YXJnZXQ6IG51bGws
XG4gIC8vIGN1cnJlbnRUYXJnZXQgaXMgc2V0IHdoZW4gZGlzcGF0Y2hpbmc7IG5vIHVzZSBpbiBj
b3B5aW5nIGl0IGhlcmVcbiAgY3VycmVudFRhcmdldDogZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJu
c051bGwsXG4gIGV2ZW50UGhhc2U6IG51bGwsXG4gIGJ1YmJsZXM6IG51bGwsXG4gIGNhbmNlbGFi
bGU6IG51bGwsXG4gIHRpbWVTdGFtcDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuIGV2
ZW50LnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpO1xuICB9LFxuICBkZWZhdWx0UHJldmVudGVkOiBu
dWxsLFxuICBpc1RydXN0ZWQ6IG51bGxcbn07XG5cbi8qKlxuICogU3ludGhldGljIGV2ZW50cyBh
cmUgZGlzcGF0Y2hlZCBieSBldmVudCBwbHVnaW5zLCB0eXBpY2FsbHkgaW4gcmVzcG9uc2UgdG8g
YVxuICogdG9wLWxldmVsIGV2ZW50IGRlbGVnYXRpb24gaGFuZGxlci5cbiAqXG4gKiBUaGVzZSBz
eXN0ZW1zIHNob3VsZCBnZW5lcmFsbHkgdXNlIHBvb2xpbmcgdG8gcmVkdWNlIHRoZSBmcmVxdWVu
Y3kgb2YgZ2FyYmFnZVxuICogY29sbGVjdGlvbi4gVGhlIHN5c3RlbSBzaG91bGQgY2hlY2sgYGlz
UGVyc2lzdGVudGAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlXG4gKiBldmVudCBzaG91bGQgYmUg
cmVsZWFzZWQgaW50byB0aGUgcG9vbCBhZnRlciBiZWluZyBkaXNwYXRjaGVkLiBVc2VycyB0aGF0
XG4gKiBuZWVkIGEgcGVyc2lzdGVkIGV2ZW50IHNob3VsZCBpbnZva2UgYHBlcnNpc3RgLlxuICpc
biAqIFN5bnRoZXRpYyBldmVudHMgKGFuZCBzdWJjbGFzc2VzKSBpbXBsZW1lbnQgdGhlIERPTSBM
ZXZlbCAzIEV2ZW50cyBBUEkgYnlcbiAqIG5vcm1hbGl6aW5nIGJyb3dzZXIgcXVpcmtzLiBTdWJj
bGFzc2VzIGRvIG5vdCBuZWNlc3NhcmlseSBoYXZlIHRvIGltcGxlbWVudCBhXG4gKiBET00gaW50
ZXJmYWNlOyBjdXN0b20gYXBwbGljYXRpb24tc3BlY2lmaWMgZXZlbnRzIGNhbiBhbHNvIHN1YmNs
YXNzIHRoaXMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3Vy
YXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHsqfSB0YXJnZXRJ
bnN0IE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmpl
Y3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHBhcmFtIHtET01FdmVu
dFRhcmdldH0gbmF0aXZlRXZlbnRUYXJnZXQgVGFyZ2V0IG5vZGUuXG4gKi9cbmZ1bmN0aW9uIFN5
bnRoZXRpY0V2ZW50KGRpc3BhdGNoQ29uZmlnLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICAvLyB0aGVzZSBoYXZlIGEgZ2V0dGVyL3NldHRlciBmb3Igd2FybmluZ3Nc
biAgICBkZWxldGUgdGhpcy5uYXRpdmVFdmVudDtcbiAgICBkZWxldGUgdGhpcy5wcmV2ZW50RGVm
YXVsdDtcbiAgICBkZWxldGUgdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICB0aGlzLmRp
c3BhdGNoQ29uZmlnID0gZGlzcGF0Y2hDb25maWc7XG4gIHRoaXMuX3RhcmdldEluc3QgPSB0YXJn
ZXRJbnN0O1xuICB0aGlzLm5hdGl2ZUV2ZW50ID0gbmF0aXZlRXZlbnQ7XG5cbiAgdmFyIEludGVy
ZmFjZSA9IHRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO1xuICBmb3IgKHZhciBwcm9wTmFtZSBp
biBJbnRlcmZhY2UpIHtcbiAgICBpZiAoIUludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShwcm9wTmFt
ZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgZGVsZXRlIHRoaXNbcHJvcE5hbWVdOyAvLyB0
aGlzIGhhcyBhIGdldHRlci9zZXR0ZXIgZm9yIHdhcm5pbmdzXG4gICAgfVxuICAgIHZhciBub3Jt
YWxpemUgPSBJbnRlcmZhY2VbcHJvcE5hbWVdO1xuICAgIGlmIChub3JtYWxpemUpIHtcbiAgICAg
IHRoaXNbcHJvcE5hbWVdID0gbm9ybWFsaXplKG5hdGl2ZUV2ZW50KTtcbiAgICB9IGVsc2Uge1xu
ICAgICAgaWYgKHByb3BOYW1lID09PSAndGFyZ2V0Jykge1xuICAgICAgICB0aGlzLnRhcmdldCA9
IG5hdGl2ZUV2ZW50VGFyZ2V0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1twcm9wTmFt
ZV0gPSBuYXRpdmVFdmVudFtwcm9wTmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFy
IGRlZmF1bHRQcmV2ZW50ZWQgPSBuYXRpdmVFdmVudC5kZWZhdWx0UHJldmVudGVkICE9IG51bGwg
PyBuYXRpdmVFdmVudC5kZWZhdWx0UHJldmVudGVkIDogbmF0aXZlRXZlbnQucmV0dXJuVmFsdWUg
PT09IGZhbHNlO1xuICBpZiAoZGVmYXVsdFByZXZlbnRlZCkge1xuICAgIHRoaXMuaXNEZWZhdWx0
UHJldmVudGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7XG4gIH0gZWxzZSB7XG4g
ICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFs
c2U7XG4gIH1cbiAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGVtcHR5RnVuY3Rpb24udGhh
dFJldHVybnNGYWxzZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbl9hc3NpZ24oU3ludGhldGljRXZl
bnQucHJvdG90eXBlLCB7XG4gIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhp
cy5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTtcbiAgICB2YXIgZXZlbnQgPSB0aGlzLm5hdGl2ZUV2
ZW50O1xuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAo
ZXZlbnQucHJldmVudERlZmF1bHQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4g
ICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdmFsaWQtdHlwZW9mXG4gICAgfSBlbHNl
IGlmICh0eXBlb2YgZXZlbnQucmV0dXJuVmFsdWUgIT09ICd1bmtub3duJykge1xuICAgICAgZXZl
bnQucmV0dXJuVmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50
ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcbiAgfSxcblxuICBzdG9wUHJvcGFn
YXRpb246IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXZlbnQgPSB0aGlzLm5hdGl2ZUV2ZW50O1xu
ICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQu
c3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAg
IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2YWxpZC10eXBlb2ZcbiAgICB9IGVsc2UgaWYg
KHR5cGVvZiBldmVudC5jYW5jZWxCdWJibGUgIT09ICd1bmtub3duJykge1xuICAgICAgLy8gVGhl
IENoYW5nZUV2ZW50UGx1Z2luIHJlZ2lzdGVycyBhIFwicHJvcGVydHljaGFuZ2VcIiBldmVudCBm
b3JcbiAgICAgIC8vIElFLiBUaGlzIGV2ZW50IGRvZXMgbm90IHN1cHBvcnQgYnViYmxpbmcgb3Ig
Y2FuY2VsbGluZywgYW5kXG4gICAgICAvLyBhbnkgcmVmZXJlbmNlcyB0byBjYW5jZWxCdWJibGUg
dGhyb3cgXCJNZW1iZXIgbm90IGZvdW5kXCIuICBBXG4gICAgICAvLyB0eXBlb2YgY2hlY2sgb2Yg
XCJ1bmtub3duXCIgY2lyY3VtdmVudHMgdGhpcyBpc3N1ZSAoYW5kIGlzIGFsc29cbiAgICAgIC8v
IElFIHNwZWNpZmljKS5cbiAgICAgIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XG4gICAgfVxu
XG4gICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVy
bnNUcnVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBXZSByZWxlYXNlIGFsbCBkaXNwYXRjaGVkIGBT
eW50aGV0aWNFdmVudGBzIGFmdGVyIGVhY2ggZXZlbnQgbG9vcCwgYWRkaW5nXG4gICAqIHRoZW0g
YmFjayBpbnRvIHRoZSBwb29sLiBUaGlzIGFsbG93cyBhIHdheSB0byBob2xkIG9udG8gYSByZWZl
cmVuY2UgdGhhdFxuICAgKiB3b24ndCBiZSBhZGRlZCBiYWNrIGludG8gdGhlIHBvb2wuXG4gICAq
L1xuICBwZXJzaXN0OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5pc1BlcnNpc3RlbnQgPSBlbXB0
eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcbiAgfSxcblxuICAvKipcbiAgICogQ2hlY2tzIGlm
IHRoaXMgZXZlbnQgc2hvdWxkIGJlIHJlbGVhc2VkIGJhY2sgaW50byB0aGUgcG9vbC5cbiAgICpc
biAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGlzIHNob3VsZCBub3QgYmUgcmVsZWFz
ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzUGVyc2lzdGVudDogZW1wdHlGdW5jdGlv
bi50aGF0UmV0dXJuc0ZhbHNlLFxuXG4gIC8qKlxuICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZv
ciBgZGVzdHJ1Y3RvcmAgb24gZWFjaCBpbnN0YW5jZSBpdCByZWxlYXNlcy5cbiAgICovXG4gIGRl
c3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgSW50ZXJmYWNlID0gdGhpcy5jb25zdHJ1
Y3Rvci5JbnRlcmZhY2U7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7XG4g
ICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgcHJvcE5hbWUsIGdldFBvb2xlZFdhcm5pbmdQ
cm9wZXJ0eURlZmluaXRpb24ocHJvcE5hbWUsIEludGVyZmFjZVtwcm9wTmFtZV0pKTtcbiAgICAg
IH0gZWxzZSB7XG4gICAgICAgIHRoaXNbcHJvcE5hbWVdID0gbnVsbDtcbiAgICAgIH1cbiAgICB9
XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllcy5sZW5n
dGg7IGkrKykge1xuICAgICAgdGhpc1tzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllc1tpXV0gPSBu
dWxsO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICduYXRpdmVFdmVudCcsIGdl
dFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24oJ25hdGl2ZUV2ZW50JywgbnVsbCkpO1xu
ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdwcmV2ZW50RGVmYXVsdCcsIGdldFBv
b2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24oJ3ByZXZlbnREZWZhdWx0JywgZW1wdHlGdW5j
dGlvbikpO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdzdG9wUHJvcGFnYXRp
b24nLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9uKCdzdG9wUHJvcGFnYXRpb24n
LCBlbXB0eUZ1bmN0aW9uKSk7XG4gICAgfVxuICB9XG59KTtcblxuU3ludGhldGljRXZlbnQuSW50
ZXJmYWNlID0gRXZlbnRJbnRlcmZhY2U7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gIGlmIChpc1Byb3h5U3VwcG9ydGVkKSB7XG4gICAgLyplc2xpbnQt
ZGlzYWJsZSBuby1mdW5jLWFzc2lnbiAqL1xuICAgIFN5bnRoZXRpY0V2ZW50ID0gbmV3IFByb3h5
KFN5bnRoZXRpY0V2ZW50LCB7XG4gICAgICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uICh0YXJnZXQsIGFy
Z3MpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHkodGFyZ2V0LCBPYmplY3QuY3JlYXRlKHRh
cmdldC5wcm90b3R5cGUpLCBhcmdzKTtcbiAgICAgIH0sXG4gICAgICBhcHBseTogZnVuY3Rpb24g
KGNvbnN0cnVjdG9yLCB0aGF0LCBhcmdzKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJveHkoY29u
c3RydWN0b3IuYXBwbHkodGhhdCwgYXJncyksIHtcbiAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICh0
YXJnZXQsIHByb3AsIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAocHJvcCAhPT0gJ2lzUGVyc2lz
dGVudCcgJiYgIXRhcmdldC5jb25zdHJ1Y3Rvci5JbnRlcmZhY2UuaGFzT3duUHJvcGVydHkocHJv
cCkgJiYgc2hvdWxkQmVSZWxlYXNlZFByb3BlcnRpZXMuaW5kZXhPZihwcm9wKSA9PT0gLTEpIHtc
biAgICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoZGlkV2FybkZvckFkZGVkTmV3UHJvcGVydHkgfHwgdGFyZ2V0LmlzUGVyc2lzdGVudCgp
LCBcIlRoaXMgc3ludGhldGljIGV2ZW50IGlzIHJldXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29u
cy4gSWYgeW91J3JlIFwiICsgXCJzZWVpbmcgdGhpcywgeW91J3JlIGFkZGluZyBhIG5ldyBwcm9w
ZXJ0eSBpbiB0aGUgc3ludGhldGljIGV2ZW50IG9iamVjdC4gXCIgKyAnVGhlIHByb3BlcnR5IGlz
IG5ldmVyIHJlbGVhc2VkLiBTZWUgJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWV2ZW50LXBvb2xp
bmcgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykgOiB2b2lkIDA7XG4gICAgICAgICAgICAgIGRpZFdh
cm5Gb3JBZGRlZE5ld1Byb3BlcnR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAg
IHRhcmdldFtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAg
ICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvKmVzbGludC1lbmFibGUg
bm8tZnVuYy1hc3NpZ24gKi9cbiAgfVxufVxuLyoqXG4gKiBIZWxwZXIgdG8gcmVkdWNlIGJvaWxl
cnBsYXRlIHdoZW4gY3JlYXRpbmcgc3ViY2xhc3Nlcy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9u
fSBDbGFzc1xuICogQHBhcmFtIHs/b2JqZWN0fSBJbnRlcmZhY2VcbiAqL1xuU3ludGhldGljRXZl
bnQuYXVnbWVudENsYXNzID0gZnVuY3Rpb24gKENsYXNzLCBJbnRlcmZhY2UpIHtcbiAgdmFyIFN1
cGVyID0gdGhpcztcblxuICB2YXIgRSA9IGZ1bmN0aW9uICgpIHt9O1xuICBFLnByb3RvdHlwZSA9
IFN1cGVyLnByb3RvdHlwZTtcbiAgdmFyIHByb3RvdHlwZSA9IG5ldyBFKCk7XG5cbiAgX2Fzc2ln
bihwcm90b3R5cGUsIENsYXNzLnByb3RvdHlwZSk7XG4gIENsYXNzLnByb3RvdHlwZSA9IHByb3Rv
dHlwZTtcbiAgQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2xhc3M7XG5cbiAgQ2xhc3Mu
SW50ZXJmYWNlID0gX2Fzc2lnbih7fSwgU3VwZXIuSW50ZXJmYWNlLCBJbnRlcmZhY2UpO1xuICBD
bGFzcy5hdWdtZW50Q2xhc3MgPSBTdXBlci5hdWdtZW50Q2xhc3M7XG5cbiAgUG9vbGVkQ2xhc3Mu
YWRkUG9vbGluZ1RvKENsYXNzLCBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXIpO1xufTtc
blxuUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFN5bnRoZXRpY0V2ZW50LCBQb29sZWRDbGFzcy5m
b3VyQXJndW1lbnRQb29sZXIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0V2ZW50O1xu
XG4vKipcbiAgKiBIZWxwZXIgdG8gbnVsbGlmeSBzeW50aGV0aWNFdmVudCBpbnN0YW5jZSBwcm9w
ZXJ0aWVzIHdoZW4gZGVzdHJ1Y3RpbmdcbiAgKlxuICAqIEBwYXJhbSB7b2JqZWN0fSBTeW50aGV0
aWNFdmVudFxuICAqIEBwYXJhbSB7U3RyaW5nfSBwcm9wTmFtZVxuICAqIEByZXR1cm4ge29iamVj
dH0gZGVmaW5lUHJvcGVydHkgb2JqZWN0XG4gICovXG5mdW5jdGlvbiBnZXRQb29sZWRXYXJuaW5n
UHJvcGVydHlEZWZpbml0aW9uKHByb3BOYW1lLCBnZXRWYWwpIHtcbiAgdmFyIGlzRnVuY3Rpb24g
PSB0eXBlb2YgZ2V0VmFsID09PSAnZnVuY3Rpb24nO1xuICByZXR1cm4ge1xuICAgIGNvbmZpZ3Vy
YWJsZTogdHJ1ZSxcbiAgICBzZXQ6IHNldCxcbiAgICBnZXQ6IGdldFxuICB9O1xuXG4gIGZ1bmN0
aW9uIHNldCh2YWwpIHtcbiAgICB2YXIgYWN0aW9uID0gaXNGdW5jdGlvbiA/ICdzZXR0aW5nIHRo
ZSBtZXRob2QnIDogJ3NldHRpbmcgdGhlIHByb3BlcnR5JztcbiAgICB3YXJuKGFjdGlvbiwgJ1Ro
aXMgaXMgZWZmZWN0aXZlbHkgYSBuby1vcCcpO1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBm
dW5jdGlvbiBnZXQoKSB7XG4gICAgdmFyIGFjdGlvbiA9IGlzRnVuY3Rpb24gPyAnYWNjZXNzaW5n
IHRoZSBtZXRob2QnIDogJ2FjY2Vzc2luZyB0aGUgcHJvcGVydHknO1xuICAgIHZhciByZXN1bHQg
PSBpc0Z1bmN0aW9uID8gJ1RoaXMgaXMgYSBuby1vcCBmdW5jdGlvbicgOiAnVGhpcyBpcyBzZXQg
dG8gbnVsbCc7XG4gICAgd2FybihhY3Rpb24sIHJlc3VsdCk7XG4gICAgcmV0dXJuIGdldFZhbDtc
biAgfVxuXG4gIGZ1bmN0aW9uIHdhcm4oYWN0aW9uLCByZXN1bHQpIHtcbiAgICB2YXIgd2Fybmlu
Z0NvbmRpdGlvbiA9IGZhbHNlO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKHdhcm5pbmdDb25kaXRpb24sIFwiVGhpcyBzeW50aGV0aWMgZXZlbnQg
aXMgcmV1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiBJZiB5b3UncmUgc2VlaW5nIHRoaXMs
IFwiICsgXCJ5b3UncmUgJXMgYCVzYCBvbiBhIHJlbGVhc2VkL251bGxpZmllZCBzeW50aGV0aWMg
ZXZlbnQuICVzLiBcIiArICdJZiB5b3UgbXVzdCBrZWVwIHRoZSBvcmlnaW5hbCBzeW50aGV0aWMg
ZXZlbnQgYXJvdW5kLCB1c2UgZXZlbnQucGVyc2lzdCgpLiAnICsgJ1NlZSBodHRwczovL2ZiLm1l
L3JlYWN0LWV2ZW50LXBvb2xpbmcgZm9yIG1vcmUgaW5mb3JtYXRpb24uJywgYWN0aW9uLCBwcm9w
TmFtZSwgcmVzdWx0KSA6IHZvaWQgMDtcbiAgfVxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xu
Ly8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU3ludGhl
dGljRXZlbnQuanNcbi8vIG1vZHVsZSBpZCA9IDExXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFy
IGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIFN0
YXRpYyBwb29sZXJzLiBTZXZlcmFsIGN1c3RvbSB2ZXJzaW9ucyBmb3IgZWFjaCBwb3RlbnRpYWwg
bnVtYmVyIG9mXG4gKiBhcmd1bWVudHMuIEEgY29tcGxldGVseSBnZW5lcmljIHBvb2xlciBpcyBl
YXN5IHRvIGltcGxlbWVudCwgYnV0IHdvdWxkXG4gKiByZXF1aXJlIGFjY2Vzc2luZyB0aGUgYGFy
Z3VtZW50c2Agb2JqZWN0LiBJbiBlYWNoIG9mIHRoZXNlLCBgdGhpc2AgcmVmZXJzIHRvXG4gKiB0
aGUgQ2xhc3MgaXRzZWxmLCBub3QgYW4gaW5zdGFuY2UuIElmIGFueSBvdGhlcnMgYXJlIG5lZWRl
ZCwgc2ltcGx5IGFkZCB0aGVtXG4gKiBoZXJlLCBvciBpbiB0aGVpciBvd24gZmlsZXMuXG4gKi9c
bnZhciBvbmVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChjb3B5RmllbGRzRnJvbSkge1xuICB2
YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAg
IHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxs
KGluc3RhbmNlLCBjb3B5RmllbGRzRnJvbSk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVs
c2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3MoY29weUZpZWxkc0Zyb20pO1xuICB9XG59O1xuXG52
YXIgdHdvQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyKSB7XG4gIHZhciBLbGFzcyA9
IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3Rh
bmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2Us
IGExLCBhMik7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBu
ZXcgS2xhc3MoYTEsIGEyKTtcbiAgfVxufTtcblxudmFyIHRocmVlQXJndW1lbnRQb29sZXIgPSBm
dW5jdGlvbiAoYTEsIGEyLCBhMykge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3Mu
aW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNl
UG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzKTtcbiAgICBy
ZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIs
IGEzKTtcbiAgfVxufTtcblxudmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwg
YTIsIGEzLCBhNCkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQ
b29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3Ao
KTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzLCBhNCk7XG4gICAgcmV0dXJu
IGluc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMywg
YTQpO1xuICB9XG59O1xuXG52YXIgc3RhbmRhcmRSZWxlYXNlciA9IGZ1bmN0aW9uIChpbnN0YW5j
ZSkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICAhKGluc3RhbmNlIGluc3RhbmNlb2YgS2xhc3Mp
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ1RyeWluZyB0byByZWxlYXNlIGFuIGluc3RhbmNlIGludG8gYSBwb29sIG9mIGEgZGlmZmVy
ZW50IHR5cGUuJykgOiBfcHJvZEludmFyaWFudCgnMjUnKSA6IHZvaWQgMDtcbiAgaW5zdGFuY2Uu
ZGVzdHJ1Y3RvcigpO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCA8IEtsYXNzLnBv
b2xTaXplKSB7XG4gICAgS2xhc3MuaW5zdGFuY2VQb29sLnB1c2goaW5zdGFuY2UpO1xuICB9XG59
O1xuXG52YXIgREVGQVVMVF9QT09MX1NJWkUgPSAxMDtcbnZhciBERUZBVUxUX1BPT0xFUiA9IG9u
ZUFyZ3VtZW50UG9vbGVyO1xuXG4vKipcbiAqIEF1Z21lbnRzIGBDb3B5Q29uc3RydWN0b3JgIHRv
IGJlIGEgcG9vbGFibGUgY2xhc3MsIGF1Z21lbnRpbmcgb25seSB0aGUgY2xhc3NcbiAqIGl0c2Vs
ZiAoc3RhdGljYWxseSkgbm90IGFkZGluZyBhbnkgcHJvdG90eXBpY2FsIGZpZWxkcy4gQW55IENv
cHlDb25zdHJ1Y3RvclxuICogeW91IGdpdmUgdGhpcyBtYXkgaGF2ZSBhIGBwb29sU2l6ZWAgcHJv
cGVydHksIGFuZCB3aWxsIGxvb2sgZm9yIGFcbiAqIHByb3RvdHlwaWNhbCBgZGVzdHJ1Y3RvcmAg
b24gaW5zdGFuY2VzLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IENvcHlDb25zdHJ1Y3RvciBD
b25zdHJ1Y3RvciB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlc2V0LlxuICogQHBhcmFtIHtGdW5jdGlv
bn0gcG9vbGVyIEN1c3RvbWl6YWJsZSBwb29sZXIuXG4gKi9cbnZhciBhZGRQb29saW5nVG8gPSBm
dW5jdGlvbiAoQ29weUNvbnN0cnVjdG9yLCBwb29sZXIpIHtcbiAgLy8gQ2FzdGluZyBhcyBhbnkg
c28gdGhhdCBmbG93IGlnbm9yZXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBhbmQgdHJ1c3Rz
XG4gIC8vIGl0IHRvIG1hdGNoIHRoZSB0eXBlIHdlIGRlY2xhcmVkXG4gIHZhciBOZXdLbGFzcyA9
IENvcHlDb25zdHJ1Y3RvcjtcbiAgTmV3S2xhc3MuaW5zdGFuY2VQb29sID0gW107XG4gIE5ld0ts
YXNzLmdldFBvb2xlZCA9IHBvb2xlciB8fCBERUZBVUxUX1BPT0xFUjtcbiAgaWYgKCFOZXdLbGFz
cy5wb29sU2l6ZSkge1xuICAgIE5ld0tsYXNzLnBvb2xTaXplID0gREVGQVVMVF9QT09MX1NJWkU7
XG4gIH1cbiAgTmV3S2xhc3MucmVsZWFzZSA9IHN0YW5kYXJkUmVsZWFzZXI7XG4gIHJldHVybiBO
ZXdLbGFzcztcbn07XG5cbnZhciBQb29sZWRDbGFzcyA9IHtcbiAgYWRkUG9vbGluZ1RvOiBhZGRQ
b29saW5nVG8sXG4gIG9uZUFyZ3VtZW50UG9vbGVyOiBvbmVBcmd1bWVudFBvb2xlcixcbiAgdHdv
QXJndW1lbnRQb29sZXI6IHR3b0FyZ3VtZW50UG9vbGVyLFxuICB0aHJlZUFyZ3VtZW50UG9vbGVy
OiB0aHJlZUFyZ3VtZW50UG9vbGVyLFxuICBmb3VyQXJndW1lbnRQb29sZXI6IGZvdXJBcmd1bWVu
dFBvb2xlclxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBQb29sZWRDbGFzcztcblxuXG4vLy8vLy8v
Ly8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1k
b20vbGliL1Bvb2xlZENsYXNzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5r
cyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFJlYWN0QmFz
ZUNsYXNzZXMgPSByZXF1aXJlKCcuL1JlYWN0QmFzZUNsYXNzZXMnKTtcbnZhciBSZWFjdENoaWxk
cmVuID0gcmVxdWlyZSgnLi9SZWFjdENoaWxkcmVuJyk7XG52YXIgUmVhY3RET01GYWN0b3JpZXMg
PSByZXF1aXJlKCcuL1JlYWN0RE9NRmFjdG9yaWVzJyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVx
dWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcbnZhciBSZWFjdFByb3BUeXBlcyA9IHJlcXVpcmUoJy4v
UmVhY3RQcm9wVHlwZXMnKTtcbnZhciBSZWFjdFZlcnNpb24gPSByZXF1aXJlKCcuL1JlYWN0VmVy
c2lvbicpO1xuXG52YXIgY3JlYXRlUmVhY3RDbGFzcyA9IHJlcXVpcmUoJy4vY3JlYXRlQ2xhc3Mn
KTtcbnZhciBvbmx5Q2hpbGQgPSByZXF1aXJlKCcuL29ubHlDaGlsZCcpO1xuXG52YXIgY3JlYXRl
RWxlbWVudCA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50O1xudmFyIGNyZWF0ZUZhY3Rvcnkg
PSBSZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeTtcbnZhciBjbG9uZUVsZW1lbnQgPSBSZWFjdEVs
ZW1lbnQuY2xvbmVFbGVtZW50O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICB2YXIgbG93UHJpb3JpdHlXYXJuaW5nID0gcmVxdWlyZSgnLi9sb3dQcmlv
cml0eVdhcm5pbmcnKTtcbiAgdmFyIGNhbkRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9jYW5E
ZWZpbmVQcm9wZXJ0eScpO1xuICB2YXIgUmVhY3RFbGVtZW50VmFsaWRhdG9yID0gcmVxdWlyZSgn
Li9SZWFjdEVsZW1lbnRWYWxpZGF0b3InKTtcbiAgdmFyIGRpZFdhcm5Qcm9wVHlwZXNEZXByZWNh
dGVkID0gZmFsc2U7XG4gIGNyZWF0ZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3Jl
YXRlRWxlbWVudDtcbiAgY3JlYXRlRmFjdG9yeSA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVh
dGVGYWN0b3J5O1xuICBjbG9uZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY2xvbmVF
bGVtZW50O1xufVxuXG52YXIgX19zcHJlYWQgPSBfYXNzaWduO1xudmFyIGNyZWF0ZU1peGluID0g
ZnVuY3Rpb24gKG1peGluKSB7XG4gIHJldHVybiBtaXhpbjtcbn07XG5cbmlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciB3YXJuZWRGb3JTcHJlYWQgPSBm
YWxzZTtcbiAgdmFyIHdhcm5lZEZvckNyZWF0ZU1peGluID0gZmFsc2U7XG4gIF9fc3ByZWFkID0g
ZnVuY3Rpb24gKCkge1xuICAgIGxvd1ByaW9yaXR5V2FybmluZyh3YXJuZWRGb3JTcHJlYWQsICdS
ZWFjdC5fX3NwcmVhZCBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSAn
ICsgJ09iamVjdC5hc3NpZ24gZGlyZWN0bHkgb3IgYW5vdGhlciBoZWxwZXIgZnVuY3Rpb24gd2l0
aCBzaW1pbGFyICcgKyAnc2VtYW50aWNzLiBZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcg
ZHVlIHRvIHlvdXIgY29tcGlsZXIuICcgKyAnU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtc3ByZWFk
LWRlcHJlY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuJyk7XG4gICAgd2FybmVkRm9yU3ByZWFkID0g
dHJ1ZTtcbiAgICByZXR1cm4gX2Fzc2lnbi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICB9O1xu
XG4gIGNyZWF0ZU1peGluID0gZnVuY3Rpb24gKG1peGluKSB7XG4gICAgbG93UHJpb3JpdHlXYXJu
aW5nKHdhcm5lZEZvckNyZWF0ZU1peGluLCAnUmVhY3QuY3JlYXRlTWl4aW4gaXMgZGVwcmVjYXRl
ZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiAnICsgJ0luIFJlYWN0IHYxNi4wLCBpdCB3aWxsIGJl
IHJlbW92ZWQuICcgKyAnWW91IGNhbiB1c2UgdGhpcyBtaXhpbiBkaXJlY3RseSBpbnN0ZWFkLiAn
ICsgJ1NlZSBodHRwczovL2ZiLm1lL2NyZWF0ZW1peGluLXdhcy1uZXZlci1pbXBsZW1lbnRlZCBm
b3IgbW9yZSBpbmZvLicpO1xuICAgIHdhcm5lZEZvckNyZWF0ZU1peGluID0gdHJ1ZTtcbiAgICBy
ZXR1cm4gbWl4aW47XG4gIH07XG59XG5cbnZhciBSZWFjdCA9IHtcbiAgLy8gTW9kZXJuXG5cbiAg
Q2hpbGRyZW46IHtcbiAgICBtYXA6IFJlYWN0Q2hpbGRyZW4ubWFwLFxuICAgIGZvckVhY2g6IFJl
YWN0Q2hpbGRyZW4uZm9yRWFjaCxcbiAgICBjb3VudDogUmVhY3RDaGlsZHJlbi5jb3VudCxcbiAg
ICB0b0FycmF5OiBSZWFjdENoaWxkcmVuLnRvQXJyYXksXG4gICAgb25seTogb25seUNoaWxkXG4g
IH0sXG5cbiAgQ29tcG9uZW50OiBSZWFjdEJhc2VDbGFzc2VzLkNvbXBvbmVudCxcbiAgUHVyZUNv
bXBvbmVudDogUmVhY3RCYXNlQ2xhc3Nlcy5QdXJlQ29tcG9uZW50LFxuXG4gIGNyZWF0ZUVsZW1l
bnQ6IGNyZWF0ZUVsZW1lbnQsXG4gIGNsb25lRWxlbWVudDogY2xvbmVFbGVtZW50LFxuICBpc1Zh
bGlkRWxlbWVudDogUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50LFxuXG4gIC8vIENsYXNzaWNc
blxuICBQcm9wVHlwZXM6IFJlYWN0UHJvcFR5cGVzLFxuICBjcmVhdGVDbGFzczogY3JlYXRlUmVh
Y3RDbGFzcyxcbiAgY3JlYXRlRmFjdG9yeTogY3JlYXRlRmFjdG9yeSxcbiAgY3JlYXRlTWl4aW46
IGNyZWF0ZU1peGluLFxuXG4gIC8vIFRoaXMgbG9va3MgRE9NIHNwZWNpZmljIGJ1dCB0aGVzZSBh
cmUgYWN0dWFsbHkgaXNvbW9ycGhpYyBoZWxwZXJzXG4gIC8vIHNpbmNlIHRoZXkgYXJlIGp1c3Qg
Z2VuZXJhdGluZyBET00gc3RyaW5ncy5cbiAgRE9NOiBSZWFjdERPTUZhY3RvcmllcyxcblxuICB2
ZXJzaW9uOiBSZWFjdFZlcnNpb24sXG5cbiAgLy8gRGVwcmVjYXRlZCBob29rIGZvciBKU1ggc3By
ZWFkLCBkb24ndCB1c2UgdGhpcyBmb3IgYW55dGhpbmcuXG4gIF9fc3ByZWFkOiBfX3NwcmVhZFxu
fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFy
IHdhcm5lZEZvckNyZWF0ZUNsYXNzID0gZmFsc2U7XG4gIGlmIChjYW5EZWZpbmVQcm9wZXJ0eSkg
e1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFjdCwgJ1Byb3BUeXBlcycsIHtcbiAgICAg
IGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICBsb3dQcmlvcml0eVdhcm5pbmcoZGlkV2FyblBy
b3BUeXBlc0RlcHJlY2F0ZWQsICdBY2Nlc3NpbmcgUHJvcFR5cGVzIHZpYSB0aGUgbWFpbiBSZWFj
dCBwYWNrYWdlIGlzIGRlcHJlY2F0ZWQsJyArICcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAgUmVh
Y3QgdjE2LjAuJyArICcgVXNlIHRoZSBsYXRlc3QgYXZhaWxhYmxlIHYxNS4qIHByb3AtdHlwZXMg
cGFja2FnZSBmcm9tIG5wbSBpbnN0ZWFkLicgKyAnIEZvciBpbmZvIG9uIHVzYWdlLCBjb21wYXRp
YmlsaXR5LCBtaWdyYXRpb24gYW5kIG1vcmUsIHNlZSAnICsgJ2h0dHBzOi8vZmIubWUvcHJvcC10
eXBlcy1kb2NzJyk7XG4gICAgICAgIGRpZFdhcm5Qcm9wVHlwZXNEZXByZWNhdGVkID0gdHJ1ZTtc
biAgICAgICAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0LCAnY3JlYXRlQ2xhc3MnLCB7XG4gICAgICBnZXQ6
IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5nKHdhcm5lZEZvckNyZWF0
ZUNsYXNzLCAnQWNjZXNzaW5nIGNyZWF0ZUNsYXNzIHZpYSB0aGUgbWFpbiBSZWFjdCBwYWNrYWdl
IGlzIGRlcHJlY2F0ZWQsJyArICcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBSZWFjdCB2MTYuMC4n
ICsgXCIgVXNlIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcyBpbnN0ZWFkLiBJZiB5b3UncmUgbm90
IHlldCBcIiArICdyZWFkeSB0byBtaWdyYXRlLCBjcmVhdGUtcmVhY3QtY2xhc3MgdjE1LiogaXMg
YXZhaWxhYmxlICcgKyAnb24gbnBtIGFzIGEgdGVtcG9yYXJ5LCBkcm9wLWluIHJlcGxhY2VtZW50
LiAnICsgJ0ZvciBtb3JlIGluZm8gc2VlIGh0dHBzOi8vZmIubWUvcmVhY3QtY3JlYXRlLWNsYXNz
Jyk7XG4gICAgICAgIHdhcm5lZEZvckNyZWF0ZUNsYXNzID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJu
IGNyZWF0ZVJlYWN0Q2xhc3M7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBSZWFjdC5E
T00gZmFjdG9yaWVzIGFyZSBkZXByZWNhdGVkLiBXcmFwIHRoZXNlIG1ldGhvZHMgc28gdGhhdFxu
ICAvLyBpbnZvY2F0aW9ucyBvZiB0aGUgUmVhY3QuRE9NIG5hbWVzcGFjZSBhbmQgYWxlcnQgdXNl
cnMgdG8gc3dpdGNoXG4gIC8vIHRvIHRoZSBgcmVhY3QtZG9tLWZhY3Rvcmllc2AgcGFja2FnZS5c
biAgUmVhY3QuRE9NID0ge307XG4gIHZhciB3YXJuZWRGb3JGYWN0b3JpZXMgPSBmYWxzZTtcbiAg
T2JqZWN0LmtleXMoUmVhY3RET01GYWN0b3JpZXMpLmZvckVhY2goZnVuY3Rpb24gKGZhY3Rvcnkp
IHtcbiAgICBSZWFjdC5ET01bZmFjdG9yeV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXdh
cm5lZEZvckZhY3Rvcmllcykge1xuICAgICAgICBsb3dQcmlvcml0eVdhcm5pbmcoZmFsc2UsICdB
Y2Nlc3NpbmcgZmFjdG9yaWVzIGxpa2UgUmVhY3QuRE9NLiVzIGhhcyBiZWVuIGRlcHJlY2F0ZWQg
JyArICdhbmQgd2lsbCBiZSByZW1vdmVkIGluIHYxNi4wKy4gVXNlIHRoZSAnICsgJ3JlYWN0LWRv
bS1mYWN0b3JpZXMgcGFja2FnZSBpbnN0ZWFkLiAnICsgJyBWZXJzaW9uIDEuMCBwcm92aWRlcyBh
IGRyb3AtaW4gcmVwbGFjZW1lbnQuJyArICcgRm9yIG1vcmUgaW5mbywgc2VlIGh0dHBzOi8vZmIu
bWUvcmVhY3QtZG9tLWZhY3RvcmllcycsIGZhY3RvcnkpO1xuICAgICAgICB3YXJuZWRGb3JGYWN0
b3JpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFJlYWN0RE9NRmFjdG9yaWVzW2Zh
Y3RvcnldLmFwcGx5KFJlYWN0RE9NRmFjdG9yaWVzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0p
O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xu
Ly8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdC5qc1xu
Ly8gbW9kdWxlIGlkID0gMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJl
KCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4v
UmVhY3RDdXJyZW50T3duZXInKTtcblxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93
YXJuaW5nJyk7XG52YXIgY2FuRGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL2NhbkRlZmluZVBy
b3BlcnR5Jyk7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blBy
b3BlcnR5O1xuXG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1l
bnRTeW1ib2wnKTtcblxudmFyIFJFU0VSVkVEX1BST1BTID0ge1xuICBrZXk6IHRydWUsXG4gIHJl
ZjogdHJ1ZSxcbiAgX19zZWxmOiB0cnVlLFxuICBfX3NvdXJjZTogdHJ1ZVxufTtcblxudmFyIHNw
ZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duLCBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bjtcblxu
ZnVuY3Rpb24gaGFzVmFsaWRSZWYoY29uZmlnKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmln
LCAncmVmJykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGNvbmZpZywgJ3JlZicpLmdldDtcbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlz
UmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4g
IH1cbiAgcmV0dXJuIGNvbmZpZy5yZWYgIT09IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaGFz
VmFsaWRLZXkoY29uZmlnKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAna2V5JykpIHtc
biAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZp
ZywgJ2tleScpLmdldDtcbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5n
KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJu
IGNvbmZpZy5rZXkgIT09IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdh
cm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XG4gIHZhciB3YXJuQWJvdXRBY2Nlc3Np
bmdLZXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93
bikge1xuICAgICAgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24gPSB0cnVlO1xuICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclczog
YGtleWAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsg
J2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhl
IHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBw
YXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4gKGh0dHBzOi8vZmIubWUvcmVhY3Qtc3Bl
Y2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSkgOiB2b2lkIDA7XG4gICAgfVxuICB9O1xuICB3YXJu
QWJvdXRBY2Nlc3NpbmdLZXkuaXNSZWFjdFdhcm5pbmcgPSB0cnVlO1xuICBPYmplY3QuZGVmaW5l
UHJvcGVydHkocHJvcHMsICdrZXknLCB7XG4gICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdLZXks
XG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVSZWZQ
cm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHtcbiAgdmFyIHdhcm5BYm91dEFj
Y2Vzc2luZ1JlZiA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXNwZWNpYWxQcm9wUmVmV2Fybmlu
Z1Nob3duKSB7XG4gICAgICBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93biA9IHRydWU7XG4gICAg
ICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwg
JyVzOiBgcmVmYCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0
ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2Vz
cyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hv
dWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9mYi5tZS9yZWFj
dC1zcGVjaWFsLXByb3BzKScsIGRpc3BsYXlOYW1lKSA6IHZvaWQgMDtcbiAgICB9XG4gIH07XG4g
IHdhcm5BYm91dEFjY2Vzc2luZ1JlZi5pc1JlYWN0V2FybmluZyA9IHRydWU7XG4gIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShwcm9wcywgJ3JlZicsIHtcbiAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2lu
Z1JlZixcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG59XG5cbi8qKlxuICogRmFjdG9y
eSBtZXRob2QgdG8gY3JlYXRlIGEgbmV3IFJlYWN0IGVsZW1lbnQuIFRoaXMgbm8gbG9uZ2VyIGFk
aGVyZXMgdG9cbiAqIHRoZSBjbGFzcyBwYXR0ZXJuLCBzbyBkbyBub3QgdXNlIG5ldyB0byBjYWxs
IGl0LiBBbHNvLCBubyBpbnN0YW5jZW9mIGNoZWNrXG4gKiB3aWxsIHdvcmsuIEluc3RlYWQgdGVz
dCAkJHR5cGVvZiBmaWVsZCBhZ2FpbnN0IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSB0byBj
aGVja1xuICogaWYgc29tZXRoaW5nIGlzIGEgUmVhY3QgRWxlbWVudC5cbiAqXG4gKiBAcGFyYW0g
eyp9IHR5cGVcbiAqIEBwYXJhbSB7Kn0ga2V5XG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHJl
ZlxuICogQHBhcmFtIHsqfSBzZWxmIEEgKnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFj
ZXMgd2hlcmUgYHRoaXNgIGlzXG4gKiBkaWZmZXJlbnQgZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJl
YWN0LmNyZWF0ZUVsZW1lbnQgaXMgY2FsbGVkLCBzbyB0aGF0IHdlXG4gKiBjYW4gd2Fybi4gV2Ug
d2FudCB0byBnZXQgcmlkIG9mIG93bmVyIGFuZCByZXBsYWNlIHN0cmluZyBgcmVmYHMgd2l0aCBh
cnJvd1xuICogZnVuY3Rpb25zLCBhbmQgYXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0
aGUgc2FtZSwgdGhlcmUgd2lsbCBiZSBub1xuICogY2hhbmdlIGluIGJlaGF2aW9yLlxuICogQHBh
cmFtIHsqfSBzb3VyY2UgQW4gYW5ub3RhdGlvbiBvYmplY3QgKGFkZGVkIGJ5IGEgdHJhbnNwaWxl
ciBvciBvdGhlcndpc2UpXG4gKiBpbmRpY2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5k
L29yIG90aGVyIGluZm9ybWF0aW9uLlxuICogQHBhcmFtIHsqfSBvd25lclxuICogQHBhcmFtIHsq
fSBwcm9wc1xuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdEVsZW1lbnQgPSBmdW5jdGlvbiAo
dHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgb3duZXIsIHByb3BzKSB7XG4gIHZhciBlbGVt
ZW50ID0ge1xuICAgIC8vIFRoaXMgdGFnIGFsbG93IHVzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRo
aXMgYXMgYSBSZWFjdCBFbGVtZW50XG4gICAgJCR0eXBlb2Y6IFJFQUNUX0VMRU1FTlRfVFlQRSxc
blxuICAgIC8vIEJ1aWx0LWluIHByb3BlcnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnRc
biAgICB0eXBlOiB0eXBlLFxuICAgIGtleToga2V5LFxuICAgIHJlZjogcmVmLFxuICAgIHByb3Bz
OiBwcm9wcyxcblxuICAgIC8vIFJlY29yZCB0aGUgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBj
cmVhdGluZyB0aGlzIGVsZW1lbnQuXG4gICAgX293bmVyOiBvd25lclxuICB9O1xuXG4gIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gVGhlIHZhbGlk
YXRpb24gZmxhZyBpcyBjdXJyZW50bHkgbXV0YXRpdmUuIFdlIHB1dCBpdCBvblxuICAgIC8vIGFu
IGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBv
YmplY3QuXG4gICAgLy8gVGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIFdlYWtNYXAgb25jZSB0
aGV5IGFyZSBpbXBsZW1lbnRlZCBpblxuICAgIC8vIGNvbW1vbmx5IHVzZWQgZGV2ZWxvcG1lbnQg
ZW52aXJvbm1lbnRzLlxuICAgIGVsZW1lbnQuX3N0b3JlID0ge307XG5cbiAgICAvLyBUbyBtYWtl
IGNvbXBhcmluZyBSZWFjdEVsZW1lbnRzIGVhc2llciBmb3IgdGVzdGluZyBwdXJwb3Nlcywgd2Ug
bWFrZVxuICAgIC8vIHRoZSB2YWxpZGF0aW9uIGZsYWcgbm9uLWVudW1lcmFibGUgKHdoZXJlIHBv
c3NpYmxlLCB3aGljaCBzaG91bGRcbiAgICAvLyBpbmNsdWRlIGV2ZXJ5IGVudmlyb25tZW50IHdl
IHJ1biB0ZXN0cyBpbiksIHNvIHRoZSB0ZXN0IGZyYW1ld29ya1xuICAgIC8vIGlnbm9yZXMgaXQu
XG4gICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZWxlbWVudC5fc3RvcmUsICd2YWxpZGF0ZWQnLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTog
ZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1
ZSxcbiAgICAgICAgdmFsdWU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIC8vIHNlbGYgYW5kIHNv
dXJjZSBhcmUgREVWIG9ubHkgcHJvcGVydGllcy5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShlbGVtZW50LCAnX3NlbGYnLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAg
ICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAg
IHZhbHVlOiBzZWxmXG4gICAgICB9KTtcbiAgICAgIC8vIFR3byBlbGVtZW50cyBjcmVhdGVkIGlu
IHR3byBkaWZmZXJlbnQgcGxhY2VzIHNob3VsZCBiZSBjb25zaWRlcmVkXG4gICAgICAvLyBlcXVh
bCBmb3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgdGhlcmVmb3JlIHdlIGhpZGUgaXQgZnJvbSBlbnVt
ZXJhdGlvbi5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NvdXJjZScs
IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFs
c2UsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHNvdXJjZVxuICAg
ICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IGZh
bHNlO1xuICAgICAgZWxlbWVudC5fc2VsZiA9IHNlbGY7XG4gICAgICBlbGVtZW50Ll9zb3VyY2Ug
PSBzb3VyY2U7XG4gICAgfVxuICAgIGlmIChPYmplY3QuZnJlZXplKSB7XG4gICAgICBPYmplY3Qu
ZnJlZXplKGVsZW1lbnQucHJvcHMpO1xuICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50KTtcbiAg
ICB9XG4gIH1cblxuICByZXR1cm4gZWxlbWVudDtcbn07XG5cbi8qKlxuICogQ3JlYXRlIGFuZCBy
ZXR1cm4gYSBuZXcgUmVhY3RFbGVtZW50IG9mIHRoZSBnaXZlbiB0eXBlLlxuICogU2VlIGh0dHBz
Oi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0
LmNyZWF0ZWVsZW1lbnRcbiAqL1xuUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlv
biAodHlwZSwgY29uZmlnLCBjaGlsZHJlbikge1xuICB2YXIgcHJvcE5hbWU7XG5cbiAgLy8gUmVz
ZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZFxuICB2YXIgcHJvcHMgPSB7fTtcblxuICB2YXIga2V5
ID0gbnVsbDtcbiAgdmFyIHJlZiA9IG51bGw7XG4gIHZhciBzZWxmID0gbnVsbDtcbiAgdmFyIHNv
dXJjZSA9IG51bGw7XG5cbiAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgaWYgKGhhc1ZhbGlk
UmVmKGNvbmZpZykpIHtcbiAgICAgIHJlZiA9IGNvbmZpZy5yZWY7XG4gICAgfVxuICAgIGlmICho
YXNWYWxpZEtleShjb25maWcpKSB7XG4gICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7XG4gICAg
fVxuXG4gICAgc2VsZiA9IGNvbmZpZy5fX3NlbGYgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjb25m
aWcuX19zZWxmO1xuICAgIHNvdXJjZSA9IGNvbmZpZy5fX3NvdXJjZSA9PT0gdW5kZWZpbmVkID8g
bnVsbCA6IGNvbmZpZy5fX3NvdXJjZTtcbiAgICAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBhcmUg
YWRkZWQgdG8gYSBuZXcgcHJvcHMgb2JqZWN0XG4gICAgZm9yIChwcm9wTmFtZSBpbiBjb25maWcp
IHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFS
RVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcHNb
cHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAv
LyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFyZSB0
cmFuc2ZlcnJlZCBvbnRvXG4gIC8vIHRoZSBuZXdseSBhbGxvY2F0ZWQgcHJvcHMgb2JqZWN0Llxu
ICB2YXIgY2hpbGRyZW5MZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoIC0gMjtcbiAgaWYgKGNoaWxk
cmVuTGVuZ3RoID09PSAxKSB7XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgfSBl
bHNlIGlmIChjaGlsZHJlbkxlbmd0aCA+IDEpIHtcbiAgICB2YXIgY2hpbGRBcnJheSA9IEFycmF5
KGNoaWxkcmVuTGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3Ro
OyBpKyspIHtcbiAgICAgIGNoaWxkQXJyYXlbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIH1c
biAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
aWYgKE9iamVjdC5mcmVlemUpIHtcbiAgICAgICAgT2JqZWN0LmZyZWV6ZShjaGlsZEFycmF5KTtc
biAgICAgIH1cbiAgICB9XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG5c
biAgLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXG4gIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFBy
b3BzKSB7XG4gICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzO1xuICAgIGZv
ciAocHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7XG4gICAgICBpZiAocHJvcHNbcHJvcE5hbWVd
ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3Bz
W3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoa2V5IHx8IHJlZikge1xuICAgICAgaWYg
KHR5cGVvZiBwcm9wcy4kJHR5cGVvZiA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvcHMuJCR0eXBlb2Yg
IT09IFJFQUNUX0VMRU1FTlRfVFlQRSkge1xuICAgICAgICB2YXIgZGlzcGxheU5hbWUgPSB0eXBl
b2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyA/IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8
ICdVbmtub3duJyA6IHR5cGU7XG4gICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICBkZWZpbmVL
ZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuICAgICAgICB9XG4gICAg
ICAgIGlmIChyZWYpIHtcbiAgICAgICAgICBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9w
cywgZGlzcGxheU5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVy
biBSZWFjdEVsZW1lbnQodHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgUmVhY3RDdXJyZW50
T3duZXIuY3VycmVudCwgcHJvcHMpO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gYSBmdW5jdGlvbiB0
aGF0IHByb2R1Y2VzIFJlYWN0RWxlbWVudHMgb2YgYSBnaXZlbiB0eXBlLlxuICogU2VlIGh0dHBz
Oi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0
LmNyZWF0ZWZhY3RvcnlcbiAqL1xuUmVhY3RFbGVtZW50LmNyZWF0ZUZhY3RvcnkgPSBmdW5jdGlv
biAodHlwZSkge1xuICB2YXIgZmFjdG9yeSA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50LmJp
bmQobnVsbCwgdHlwZSk7XG4gIC8vIEV4cG9zZSB0aGUgdHlwZSBvbiB0aGUgZmFjdG9yeSBhbmQg
dGhlIHByb3RvdHlwZSBzbyB0aGF0IGl0IGNhbiBiZVxuICAvLyBlYXNpbHkgYWNjZXNzZWQgb24g
ZWxlbWVudHMuIEUuZy4gYDxGb28gLz4udHlwZSA9PT0gRm9vYC5cbiAgLy8gVGhpcyBzaG91bGQg
bm90IGJlIG5hbWVkIGBjb25zdHJ1Y3RvcmAgc2luY2UgdGhpcyBtYXkgbm90IGJlIHRoZSBmdW5j
dGlvblxuICAvLyB0aGF0IGNyZWF0ZWQgdGhlIGVsZW1lbnQsIGFuZCBpdCBtYXkgbm90IGV2ZW4g
YmUgYSBjb25zdHJ1Y3Rvci5cbiAgLy8gTGVnYWN5IGhvb2sgVE9ETzogV2FybiBpZiB0aGlzIGlz
IGFjY2Vzc2VkXG4gIGZhY3RvcnkudHlwZSA9IHR5cGU7XG4gIHJldHVybiBmYWN0b3J5O1xufTtc
blxuUmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZUtleSA9IGZ1bmN0aW9uIChvbGRFbGVtZW50
LCBuZXdLZXkpIHtcbiAgdmFyIG5ld0VsZW1lbnQgPSBSZWFjdEVsZW1lbnQob2xkRWxlbWVudC50
eXBlLCBuZXdLZXksIG9sZEVsZW1lbnQucmVmLCBvbGRFbGVtZW50Ll9zZWxmLCBvbGRFbGVtZW50
Ll9zb3VyY2UsIG9sZEVsZW1lbnQuX293bmVyLCBvbGRFbGVtZW50LnByb3BzKTtcblxuICByZXR1
cm4gbmV3RWxlbWVudDtcbn07XG5cbi8qKlxuICogQ2xvbmUgYW5kIHJldHVybiBhIG5ldyBSZWFj
dEVsZW1lbnQgdXNpbmcgZWxlbWVudCBhcyB0aGUgc3RhcnRpbmcgcG9pbnQuXG4gKiBTZWUgaHR0
cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVh
Y3QuY2xvbmVlbGVtZW50XG4gKi9cblJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQgPSBmdW5jdGlv
biAoZWxlbWVudCwgY29uZmlnLCBjaGlsZHJlbikge1xuICB2YXIgcHJvcE5hbWU7XG5cbiAgLy8g
T3JpZ2luYWwgcHJvcHMgYXJlIGNvcGllZFxuICB2YXIgcHJvcHMgPSBfYXNzaWduKHt9LCBlbGVt
ZW50LnByb3BzKTtcblxuICAvLyBSZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFjdGVkXG4gIHZhciBr
ZXkgPSBlbGVtZW50LmtleTtcbiAgdmFyIHJlZiA9IGVsZW1lbnQucmVmO1xuICAvLyBTZWxmIGlz
IHByZXNlcnZlZCBzaW5jZSB0aGUgb3duZXIgaXMgcHJlc2VydmVkLlxuICB2YXIgc2VsZiA9IGVs
ZW1lbnQuX3NlbGY7XG4gIC8vIFNvdXJjZSBpcyBwcmVzZXJ2ZWQgc2luY2UgY2xvbmVFbGVtZW50
IGlzIHVubGlrZWx5IHRvIGJlIHRhcmdldGVkIGJ5IGFcbiAgLy8gdHJhbnNwaWxlciwgYW5kIHRo
ZSBvcmlnaW5hbCBzb3VyY2UgaXMgcHJvYmFibHkgYSBiZXR0ZXIgaW5kaWNhdG9yIG9mIHRoZVxu
ICAvLyB0cnVlIG93bmVyLlxuICB2YXIgc291cmNlID0gZWxlbWVudC5fc291cmNlO1xuXG4gIC8v
IE93bmVyIHdpbGwgYmUgcHJlc2VydmVkLCB1bmxlc3MgcmVmIGlzIG92ZXJyaWRkZW5cbiAgdmFy
IG93bmVyID0gZWxlbWVudC5fb3duZXI7XG5cbiAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAg
aWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcbiAgICAgIC8vIFNpbGVudGx5IHN0ZWFsIHRoZSBy
ZWYgZnJvbSB0aGUgcGFyZW50LlxuICAgICAgcmVmID0gY29uZmlnLnJlZjtcbiAgICAgIG93bmVy
ID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICB9XG4gICAgaWYgKGhhc1ZhbGlkS2V5
KGNvbmZpZykpIHtcbiAgICAgIGtleSA9ICcnICsgY29uZmlnLmtleTtcbiAgICB9XG5cbiAgICAv
LyBSZW1haW5pbmcgcHJvcGVydGllcyBvdmVycmlkZSBleGlzdGluZyBwcm9wc1xuICAgIHZhciBk
ZWZhdWx0UHJvcHM7XG4gICAgaWYgKGVsZW1lbnQudHlwZSAmJiBlbGVtZW50LnR5cGUuZGVmYXVs
dFByb3BzKSB7XG4gICAgICBkZWZhdWx0UHJvcHMgPSBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3Bz
O1xuICAgIH1cbiAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xuICAgICAgaWYgKGhhc093
blByb3BlcnR5LmNhbGwoY29uZmlnLCBwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093
blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBpZiAoY29uZmlnW3Byb3BOYW1lXSA9PT0g
dW5kZWZpbmVkICYmIGRlZmF1bHRQcm9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8g
UmVzb2x2ZSBkZWZhdWx0IHByb3BzXG4gICAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVs
dFByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9wc1twcm9w
TmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9
XG5cbiAgLy8gQ2hpbGRyZW4gY2FuIGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9z
ZSBhcmUgdHJhbnNmZXJyZWQgb250b1xuICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVkIHByb3BzIG9i
amVjdC5cbiAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gIGlm
IChjaGlsZHJlbkxlbmd0aCA9PT0gMSkge1xuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47
XG4gIH0gZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7XG4gICAgdmFyIGNoaWxkQXJyYXkg
PSBBcnJheShjaGlsZHJlbkxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJl
bkxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtc
biAgICB9XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG5cbiAgcmV0dXJu
IFJlYWN0RWxlbWVudChlbGVtZW50LnR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVy
LCBwcm9wcyk7XG59O1xuXG4vKipcbiAqIFZlcmlmaWVzIHRoZSBvYmplY3QgaXMgYSBSZWFjdEVs
ZW1lbnQuXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3At
bGV2ZWwtYXBpLmh0bWwjcmVhY3QuaXN2YWxpZGVsZW1lbnRcbiAqIEBwYXJhbSB7P29iamVjdH0g
b2JqZWN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgdmFsaWQg
Y29tcG9uZW50LlxuICogQGZpbmFsXG4gKi9cblJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudCA9
IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3Qn
ICYmIG9iamVjdCAhPT0gbnVsbCAmJiBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRf
VFlQRTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFbGVtZW50O1xuXG5cbi8vLy8vLy8v
Ly8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0L2xp
Yi9SZWFjdEVsZW1lbnQuanNcbi8vIG1vZHVsZSBpZCA9IDE0XG4vLyBtb2R1bGUgY2h1bmtzID0g
MCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZh
ciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZh
ciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuZnVuY3Rpb24g
Y2hlY2tNYXNrKHZhbHVlLCBiaXRtYXNrKSB7XG4gIHJldHVybiAodmFsdWUgJiBiaXRtYXNrKSA9
PT0gYml0bWFzaztcbn1cblxudmFyIERPTVByb3BlcnR5SW5qZWN0aW9uID0ge1xuICAvKipcbiAg
ICogTWFwcGluZyBmcm9tIG5vcm1hbGl6ZWQsIGNhbWVsY2FzZWQgcHJvcGVydHkgbmFtZXMgdG8g
YSBjb25maWd1cmF0aW9uIHRoYXRcbiAgICogc3BlY2lmaWVzIGhvdyB0aGUgYXNzb2NpYXRlZCBE
T00gcHJvcGVydHkgc2hvdWxkIGJlIGFjY2Vzc2VkIG9yIHJlbmRlcmVkLlxuICAgKi9cbiAgTVVT
VF9VU0VfUFJPUEVSVFk6IDB4MSxcbiAgSEFTX0JPT0xFQU5fVkFMVUU6IDB4NCxcbiAgSEFTX05V
TUVSSUNfVkFMVUU6IDB4OCxcbiAgSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU6IDB4MTAgfCAw
eDgsXG4gIEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU6IDB4MjAsXG5cbiAgLyoqXG4gICAq
IEluamVjdCBzb21lIHNwZWNpYWxpemVkIGtub3dsZWRnZSBhYm91dCB0aGUgRE9NLiBUaGlzIHRh
a2VzIGEgY29uZmlnIG9iamVjdFxuICAgKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpc
biAgICpcbiAgICogaXNDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIHRoYXQgZ2l2ZW4gYW4gYXR0
cmlidXRlIG5hbWUgd2lsbCByZXR1cm4gdHJ1ZVxuICAgKiBpZiBpdCBjYW4gYmUgaW5zZXJ0ZWQg
aW50byB0aGUgRE9NIHZlcmJhdGltLiBVc2VmdWwgZm9yIGRhdGEtKiBvciBhcmlhLSpcbiAgICog
YXR0cmlidXRlcyB3aGVyZSBpdCdzIGltcG9zc2libGUgdG8gZW51bWVyYXRlIGFsbCBvZiB0aGUg
cG9zc2libGVcbiAgICogYXR0cmlidXRlIG5hbWVzLFxuICAgKlxuICAgKiBQcm9wZXJ0aWVzOiBv
YmplY3QgbWFwcGluZyBET00gcHJvcGVydHkgbmFtZSB0byBvbmUgb2YgdGhlXG4gICAqIERPTVBy
b3BlcnR5SW5qZWN0aW9uIGNvbnN0YW50cyBvciBudWxsLiBJZiB5b3VyIGF0dHJpYnV0ZSBpc24n
dCBpbiBoZXJlLFxuICAgKiBpdCB3b24ndCBnZXQgd3JpdHRlbiB0byB0aGUgRE9NLlxuICAgKlxu
ICAgKiBET01BdHRyaWJ1dGVOYW1lczogb2JqZWN0IG1hcHBpbmcgUmVhY3QgYXR0cmlidXRlIG5h
bWUgdG8gdGhlIERPTVxuICAgKiBhdHRyaWJ1dGUgbmFtZS4gQXR0cmlidXRlIG5hbWVzIG5vdCBz
cGVjaWZpZWQgdXNlIHRoZSAqKmxvd2VyY2FzZSoqXG4gICAqIG5vcm1hbGl6ZWQgbmFtZS5cbiAg
ICpcbiAgICogRE9NQXR0cmlidXRlTmFtZXNwYWNlczogb2JqZWN0IG1hcHBpbmcgUmVhY3QgYXR0
cmlidXRlIG5hbWUgdG8gdGhlIERPTVxuICAgKiBhdHRyaWJ1dGUgbmFtZXNwYWNlIFVSTC4gKEF0
dHJpYnV0ZSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSBubyBuYW1lc3BhY2UuKVxuICAgKlxuICAg
KiBET01Qcm9wZXJ0eU5hbWVzOiBzaW1pbGFyIHRvIERPTUF0dHJpYnV0ZU5hbWVzIGJ1dCBmb3Ig
RE9NIHByb3BlcnRpZXMuXG4gICAqIFByb3BlcnR5IG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIHRo
ZSBub3JtYWxpemVkIG5hbWUuXG4gICAqXG4gICAqIERPTU11dGF0aW9uTWV0aG9kczogUHJvcGVy
dGllcyB0aGF0IHJlcXVpcmUgc3BlY2lhbCBtdXRhdGlvbiBtZXRob2RzLiBJZlxuICAgKiBgdmFs
dWVgIGlzIHVuZGVmaW5lZCwgdGhlIG11dGF0aW9uIG1ldGhvZCBzaG91bGQgdW5zZXQgdGhlIHBy
b3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZG9tUHJvcGVydHlDb25maWcgdGhl
IGNvbmZpZyBhcyBkZXNjcmliZWQgYWJvdmUuXG4gICAqL1xuICBpbmplY3RET01Qcm9wZXJ0eUNv
bmZpZzogZnVuY3Rpb24gKGRvbVByb3BlcnR5Q29uZmlnKSB7XG4gICAgdmFyIEluamVjdGlvbiA9
IERPTVByb3BlcnR5SW5qZWN0aW9uO1xuICAgIHZhciBQcm9wZXJ0aWVzID0gZG9tUHJvcGVydHlD
b25maWcuUHJvcGVydGllcyB8fCB7fTtcbiAgICB2YXIgRE9NQXR0cmlidXRlTmFtZXNwYWNlcyA9
IGRvbVByb3BlcnR5Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVzcGFjZXMgfHwge307XG4gICAgdmFy
IERPTUF0dHJpYnV0ZU5hbWVzID0gZG9tUHJvcGVydHlDb25maWcuRE9NQXR0cmlidXRlTmFtZXMg
fHwge307XG4gICAgdmFyIERPTVByb3BlcnR5TmFtZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01Q
cm9wZXJ0eU5hbWVzIHx8IHt9O1xuICAgIHZhciBET01NdXRhdGlvbk1ldGhvZHMgPSBkb21Qcm9w
ZXJ0eUNvbmZpZy5ET01NdXRhdGlvbk1ldGhvZHMgfHwge307XG5cbiAgICBpZiAoZG9tUHJvcGVy
dHlDb25maWcuaXNDdXN0b21BdHRyaWJ1dGUpIHtcbiAgICAgIERPTVByb3BlcnR5Ll9pc0N1c3Rv
bUF0dHJpYnV0ZUZ1bmN0aW9ucy5wdXNoKGRvbVByb3BlcnR5Q29uZmlnLmlzQ3VzdG9tQXR0cmli
dXRlKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBQcm9wZXJ0aWVzKSB7XG4g
ICAgICAhIURPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpID8g
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J2luamVjdERPTVByb3BlcnR5Q29uZmlnKC4uLik6IFlvdVxcJ3JlIHRyeWluZyB0byBpbmplY3Qg
RE9NIHByb3BlcnR5IFxcJyVzXFwnIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gaW5qZWN0ZWQuIFlv
dSBtYXkgYmUgYWNjaWRlbnRhbGx5IGluamVjdGluZyB0aGUgc2FtZSBET00gcHJvcGVydHkgY29u
ZmlnIHR3aWNlLCBvciB5b3UgbWF5IGJlIGluamVjdGluZyB0d28gY29uZmlncyB0aGF0IGhhdmUg
Y29uZmxpY3RpbmcgcHJvcGVydHkgbmFtZXMuJywgcHJvcE5hbWUpIDogX3Byb2RJbnZhcmlhbnQo
JzQ4JywgcHJvcE5hbWUpIDogdm9pZCAwO1xuXG4gICAgICB2YXIgbG93ZXJDYXNlZCA9IHByb3BO
YW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICB2YXIgcHJvcENvbmZpZyA9IFByb3BlcnRpZXNbcHJv
cE5hbWVdO1xuXG4gICAgICB2YXIgcHJvcGVydHlJbmZvID0ge1xuICAgICAgICBhdHRyaWJ1dGVO
YW1lOiBsb3dlckNhc2VkLFxuICAgICAgICBhdHRyaWJ1dGVOYW1lc3BhY2U6IG51bGwsXG4gICAg
ICAgIHByb3BlcnR5TmFtZTogcHJvcE5hbWUsXG4gICAgICAgIG11dGF0aW9uTWV0aG9kOiBudWxs
LFxuXG4gICAgICAgIG11c3RVc2VQcm9wZXJ0eTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVj
dGlvbi5NVVNUX1VTRV9QUk9QRVJUWSksXG4gICAgICAgIGhhc0Jvb2xlYW5WYWx1ZTogY2hlY2tN
YXNrKHByb3BDb25maWcsIEluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRSksXG4gICAgICAgIGhh
c051bWVyaWNWYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5IQVNfTlVNRVJJ
Q19WQUxVRSksXG4gICAgICAgIGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOiBjaGVja01hc2socHJv
cENvbmZpZywgSW5qZWN0aW9uLkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFKSxcbiAgICAgICAg
aGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlv
bi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFKVxuICAgICAgfTtcbiAgICAgICEocHJvcGVy
dHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSArIHByb3BlcnR5SW5mby5oYXNOdW1lcmljVmFsdWUgKyBw
cm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSA8PSAxKSA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdET01Qcm9wZXJ0
eTogVmFsdWUgY2FuIGJlIG9uZSBvZiBib29sZWFuLCBvdmVybG9hZGVkIGJvb2xlYW4sIG9yIG51
bWVyaWMgdmFsdWUsIGJ1dCBub3QgYSBjb21iaW5hdGlvbjogJXMnLCBwcm9wTmFtZSkgOiBfcHJv
ZEludmFyaWFudCgnNTAnLCBwcm9wTmFtZSkgOiB2b2lkIDA7XG5cbiAgICAgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIERPTVByb3BlcnR5Lmdl
dFBvc3NpYmxlU3RhbmRhcmROYW1lW2xvd2VyQ2FzZWRdID0gcHJvcE5hbWU7XG4gICAgICB9XG5c
biAgICAgIGlmIChET01BdHRyaWJ1dGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtc
biAgICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBET01BdHRyaWJ1dGVOYW1lc1twcm9wTmFtZV07
XG4gICAgICAgIHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlTmFtZTtcbiAg
ICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
ICAgICBET01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVthdHRyaWJ1dGVOYW1lXSA9
IHByb3BOYW1lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChET01BdHRyaWJ1dGVO
YW1lc3BhY2VzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wZXJ0eUlu
Zm8uYXR0cmlidXRlTmFtZXNwYWNlID0gRE9NQXR0cmlidXRlTmFtZXNwYWNlc1twcm9wTmFtZV07
XG4gICAgICB9XG5cbiAgICAgIGlmIChET01Qcm9wZXJ0eU5hbWVzLmhhc093blByb3BlcnR5KHBy
b3BOYW1lKSkge1xuICAgICAgICBwcm9wZXJ0eUluZm8ucHJvcGVydHlOYW1lID0gRE9NUHJvcGVy
dHlOYW1lc1twcm9wTmFtZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChET01NdXRhdGlvbk1ldGhv
ZHMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BlcnR5SW5mby5tdXRh
dGlvbk1ldGhvZCA9IERPTU11dGF0aW9uTWV0aG9kc1twcm9wTmFtZV07XG4gICAgICB9XG5cbiAg
ICAgIERPTVByb3BlcnR5LnByb3BlcnRpZXNbcHJvcE5hbWVdID0gcHJvcGVydHlJbmZvO1xuICAg
IH1cbiAgfVxufTtcblxuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xudmFyIEFUVFJJQlVU
RV9OQU1FX1NUQVJUX0NIQVIgPSAnOkEtWl9hLXpcXFxcdTAwQzAtXFxcXHUwMEQ2XFxcXHUwMEQ4
LVxcXFx1MDBGNlxcXFx1MDBGOC1cXFxcdTAyRkZcXFxcdTAzNzAtXFxcXHUwMzdEXFxcXHUwMzdG
LVxcXFx1MUZGRlxcXFx1MjAwQy1cXFxcdTIwMERcXFxcdTIwNzAtXFxcXHUyMThGXFxcXHUyQzAw
LVxcXFx1MkZFRlxcXFx1MzAwMS1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYw
LVxcXFx1RkZGRCc7XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4gKi9cblxuLyoqXG4gKiBET01Q
cm9wZXJ0eSBleHBvcnRzIGxvb2t1cCBvYmplY3RzIHRoYXQgY2FuIGJlIHVzZWQgbGlrZSBmdW5j
dGlvbnM6XG4gKlxuICogICA+IERPTVByb3BlcnR5LmlzVmFsaWRbJ2lkJ11cbiAqICAgdHJ1ZVxu
ICogICA+IERPTVByb3BlcnR5LmlzVmFsaWRbJ2Zvb2JhciddXG4gKiAgIHVuZGVmaW5lZFxuICpc
biAqIEFsdGhvdWdoIHRoaXMgbWF5IGJlIGNvbmZ1c2luZywgaXQgcGVyZm9ybXMgYmV0dGVyIGlu
IGdlbmVyYWwuXG4gKlxuICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9rZXktZXhpc3RzXG4gKiBA
c2VlIGh0dHA6Ly9qc3BlcmYuY29tL2tleS1taXNzaW5nXG4gKi9cbnZhciBET01Qcm9wZXJ0eSA9
IHtcbiAgSURfQVRUUklCVVRFX05BTUU6ICdkYXRhLXJlYWN0aWQnLFxuICBST09UX0FUVFJJQlVU
RV9OQU1FOiAnZGF0YS1yZWFjdHJvb3QnLFxuXG4gIEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVI6
IEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIsXG4gIEFUVFJJQlVURV9OQU1FX0NIQVI6IEFUVFJJ
QlVURV9OQU1FX1NUQVJUX0NIQVIgKyAnXFxcXC0uMC05XFxcXHUwMEI3XFxcXHUwMzAwLVxcXFx1
MDM2RlxcXFx1MjAzRi1cXFxcdTIwNDAnLFxuXG4gIC8qKlxuICAgKiBNYXAgZnJvbSBwcm9wZXJ0
eSBcInN0YW5kYXJkIG5hbWVcIiB0byBhbiBvYmplY3Qgd2l0aCBpbmZvIGFib3V0IGhvdyB0byBz
ZXRcbiAgICogdGhlIHByb3BlcnR5IGluIHRoZSBET00uIEVhY2ggb2JqZWN0IGNvbnRhaW5zOlxu
ICAgKlxuICAgKiBhdHRyaWJ1dGVOYW1lOlxuICAgKiAgIFVzZWQgd2hlbiByZW5kZXJpbmcgbWFy
a3VwIG9yIHdpdGggYCpBdHRyaWJ1dGUoKWAuXG4gICAqIGF0dHJpYnV0ZU5hbWVzcGFjZVxuICAg
KiBwcm9wZXJ0eU5hbWU6XG4gICAqICAgVXNlZCBvbiBET00gbm9kZSBpbnN0YW5jZXMuIChUaGlz
IGluY2x1ZGVzIHByb3BlcnRpZXMgdGhhdCBtdXRhdGUgZHVlIHRvXG4gICAqICAgZXh0ZXJuYWwg
ZmFjdG9ycy4pXG4gICAqIG11dGF0aW9uTWV0aG9kOlxuICAgKiAgIElmIG5vbi1udWxsLCB1c2Vk
IGluc3RlYWQgb2YgdGhlIHByb3BlcnR5IG9yIGBzZXRBdHRyaWJ1dGUoKWAgYWZ0ZXJcbiAgICog
ICBpbml0aWFsIHJlbmRlci5cbiAgICogbXVzdFVzZVByb3BlcnR5OlxuICAgKiAgIFdoZXRoZXIg
dGhlIHByb3BlcnR5IG11c3QgYmUgYWNjZXNzZWQgYW5kIG11dGF0ZWQgYXMgYW4gb2JqZWN0IHBy
b3BlcnR5LlxuICAgKiBoYXNCb29sZWFuVmFsdWU6XG4gICAqICAgV2hldGhlciB0aGUgcHJvcGVy
dHkgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxzZXkgdmFsdWUuXG4gICAqIGhh
c051bWVyaWNWYWx1ZTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIG51bWVy
aWMgb3IgcGFyc2UgYXMgYSBudW1lcmljIGFuZCBzaG91bGQgYmVcbiAgICogICByZW1vdmVkIHdo
ZW4gc2V0IHRvIGEgZmFsc2V5IHZhbHVlLlxuICAgKiBoYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZTpc
biAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIHBvc2l0aXZlIG51bWVyaWMgb3Ig
cGFyc2UgYXMgYSBwb3NpdGl2ZVxuICAgKiAgIG51bWVyaWMgYW5kIHNob3VsZCBiZSByZW1vdmVk
IHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZhbHVlLlxuICAgKiBoYXNPdmVybG9hZGVkQm9vbGVhblZh
bHVlOlxuICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IGNhbiBiZSB1c2VkIGFzIGEgZmxhZyBh
cyB3ZWxsIGFzIHdpdGggYSB2YWx1ZS5cbiAgICogICBSZW1vdmVkIHdoZW4gc3RyaWN0bHkgZXF1
YWwgdG8gZmFsc2U7IHByZXNlbnQgd2l0aG91dCBhIHZhbHVlIHdoZW5cbiAgICogICBzdHJpY3Rs
eSBlcXVhbCB0byB0cnVlOyBwcmVzZW50IHdpdGggYSB2YWx1ZSBvdGhlcndpc2UuXG4gICAqL1xu
ICBwcm9wZXJ0aWVzOiB7fSxcblxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIGxvd2VyY2FzZSBw
cm9wZXJ0eSBuYW1lcyB0byB0aGUgcHJvcGVybHkgY2FzZWQgdmVyc2lvbiwgdXNlZFxuICAgKiB0
byB3YXJuIGluIHRoZSBjYXNlIG9mIG1pc3NpbmcgcHJvcGVydGllcy4gQXZhaWxhYmxlIG9ubHkg
aW4gX19ERVZfXy5cbiAgICpcbiAgICogYXV0b2ZvY3VzIGlzIHByZWRlZmluZWQsIGJlY2F1c2Ug
YWRkaW5nIGl0IHRvIHRoZSBwcm9wZXJ0eSB3aGl0ZWxpc3RcbiAgICogY2F1c2VzIHVuaW50ZW5k
ZWQgc2lkZSBlZmZlY3RzLlxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgZ2V0
UG9zc2libGVTdGFuZGFyZE5hbWU6IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB7IGF1dG9mb2N1czogJ2F1dG9Gb2N1cycgfSA6IG51bGwsXG5cbiAgLyoqXG4gICAqIEFs
bCBvZiB0aGUgaXNDdXN0b21BdHRyaWJ1dGUoKSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gaW5q
ZWN0ZWQuXG4gICAqL1xuICBfaXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnM6IFtdLFxuXG4gIC8q
KlxuICAgKiBDaGVja3Mgd2hldGhlciBhIHByb3BlcnR5IG5hbWUgaXMgYSBjdXN0b20gYXR0cmli
dXRlLlxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBpc0N1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24g
KGF0dHJpYnV0ZU5hbWUpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IERPTVByb3BlcnR5Ll9p
c0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlzQ3Vz
dG9tQXR0cmlidXRlRm4gPSBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnNb
aV07XG4gICAgICBpZiAoaXNDdXN0b21BdHRyaWJ1dGVGbihhdHRyaWJ1dGVOYW1lKSkge1xuICAg
ICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9
LFxuXG4gIGluamVjdGlvbjogRE9NUHJvcGVydHlJbmplY3Rpb25cbn07XG5cbm1vZHVsZS5leHBv
cnRzID0gRE9NUHJvcGVydHk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZP
T1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9ET01Qcm9wZXJ0eS5qc1xuLy8g
bW9kdWxlIGlkID0gMTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UmVmID0gcmVxdWlyZSgn
Li9SZWFjdFJlZicpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9SZWFj
dEluc3RydW1lbnRhdGlvbicpO1xuXG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dh
cm5pbmcnKTtcblxuLyoqXG4gKiBIZWxwZXIgdG8gY2FsbCBSZWFjdFJlZi5hdHRhY2hSZWZzIHdp
dGggdGhpcyBjb21wb3NpdGUgY29tcG9uZW50LCBzcGxpdCBvdXRcbiAqIHRvIGF2b2lkIGFsbG9j
YXRpb25zIGluIHRoZSB0cmFuc2FjdGlvbiBtb3VudC1yZWFkeSBxdWV1ZS5cbiAqL1xuZnVuY3Rp
b24gYXR0YWNoUmVmcygpIHtcbiAgUmVhY3RSZWYuYXR0YWNoUmVmcyh0aGlzLCB0aGlzLl9jdXJy
ZW50RWxlbWVudCk7XG59XG5cbnZhciBSZWFjdFJlY29uY2lsZXIgPSB7XG4gIC8qKlxuICAgKiBJ
bml0aWFsaXplcyB0aGUgY29tcG9uZW50LCByZW5kZXJzIG1hcmt1cCwgYW5kIHJlZ2lzdGVycyBl
dmVudCBsaXN0ZW5lcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVy
bmFsSW5zdGFuY2VcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0
U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7P29i
amVjdH0gdGhlIGNvbnRhaW5pbmcgaG9zdCBjb21wb25lbnQgaW5zdGFuY2VcbiAgICogQHBhcmFt
IHs/b2JqZWN0fSBpbmZvIGFib3V0IHRoZSBob3N0IGNvbnRhaW5lclxuICAgKiBAcmV0dXJuIHs/
c3RyaW5nfSBSZW5kZXJlZCBtYXJrdXAgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLlxuICAg
KiBAZmluYWxcbiAgICogQGludGVybmFsXG4gICAqL1xuICBtb3VudENvbXBvbmVudDogZnVuY3Rp
b24gKGludGVybmFsSW5zdGFuY2UsIHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFp
bmVySW5mbywgY29udGV4dCwgcGFyZW50RGVidWdJRCkgLy8gMCBpbiBwcm9kdWN0aW9uIGFuZCBm
b3Igcm9vdHNcbiAge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuICAg
ICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVNb3VudENvbXBvbmVu
dChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lELCBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxl
bWVudCwgcGFyZW50RGVidWdJRCk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBtYXJrdXAgPSBp
bnRlcm5hbEluc3RhbmNlLm1vdW50Q29tcG9uZW50KHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBo
b3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgcGFyZW50RGVidWdJRCk7XG4gICAgaWYgKGludGVy
bmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50ICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRF
bGVtZW50LnJlZiAhPSBudWxsKSB7XG4gICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVh
ZHkoKS5lbnF1ZXVlKGF0dGFjaFJlZnMsIGludGVybmFsSW5zdGFuY2UpO1xuICAgIH1cbiAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGlu
dGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50
YXRpb24uZGVidWdUb29sLm9uTW91bnRDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJ
RCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXJrdXA7XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIFJldHVybnMgYSB2YWx1ZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG9cbiAgICogUmVhY3RDb21w
b25lbnRFbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAuXG4gICAqL1xuICBnZXRIb3N0
Tm9kZTogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UpIHtcbiAgICByZXR1cm4gaW50ZXJuYWxJ
bnN0YW5jZS5nZXRIb3N0Tm9kZSgpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZWxlYXNlcyBhbnkg
cmVzb3VyY2VzIGFsbG9jYXRlZCBieSBgbW91bnRDb21wb25lbnRgLlxuICAgKlxuICAgKiBAZmlu
YWxcbiAgICogQGludGVybmFsXG4gICAqL1xuICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAo
aW50ZXJuYWxJbnN0YW5jZSwgc2FmZWx5KSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lE
ICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9y
ZVVubW91bnRDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7XG4gICAgICB9XG4g
ICAgfVxuICAgIFJlYWN0UmVmLmRldGFjaFJlZnMoaW50ZXJuYWxJbnN0YW5jZSwgaW50ZXJuYWxJ
bnN0YW5jZS5fY3VycmVudEVsZW1lbnQpO1xuICAgIGludGVybmFsSW5zdGFuY2UudW5tb3VudENv
bXBvbmVudChzYWZlbHkpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xu
ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Vbm1vdW50Q29tcG9uZW50
KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAv
KipcbiAgICogVXBkYXRlIGEgY29tcG9uZW50IHVzaW5nIGEgbmV3IGVsZW1lbnQuXG4gICAqXG4g
ICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFuY2VcbiAgICogQHBhcmFt
IHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50XG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAg
ICogQGludGVybmFsXG4gICAqL1xuICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAoaW50ZXJu
YWxJbnN0YW5jZSwgbmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFy
IHByZXZFbGVtZW50ID0gaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQ7XG5cbiAgICBp
ZiAobmV4dEVsZW1lbnQgPT09IHByZXZFbGVtZW50ICYmIGNvbnRleHQgPT09IGludGVybmFsSW5z
dGFuY2UuX2NvbnRleHQpIHtcbiAgICAgIC8vIFNpbmNlIGVsZW1lbnRzIGFyZSBpbW11dGFibGUg
YWZ0ZXIgdGhlIG93bmVyIGlzIHJlbmRlcmVkLFxuICAgICAgLy8gd2UgY2FuIGRvIGEgY2hlYXAg
aWRlbnRpdHkgY29tcGFyZSBoZXJlIHRvIGRldGVybWluZSBpZiB0aGlzIGlzIGFcbiAgICAgIC8v
IHN1cGVyZmx1b3VzIHJlY29uY2lsZS4gSXQncyBwb3NzaWJsZSBmb3Igc3RhdGUgdG8gYmUgbXV0
YWJsZSBidXQgc3VjaFxuICAgICAgLy8gY2hhbmdlIHNob3VsZCB0cmlnZ2VyIGFuIHVwZGF0ZSBv
ZiB0aGUgb3duZXIgd2hpY2ggd291bGQgcmVjcmVhdGVcbiAgICAgIC8vIHRoZSBlbGVtZW50LiBX
ZSBleHBsaWNpdGx5IGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIG93bmVyIHNpbmNlXG4g
ICAgICAvLyBpdCdzIHBvc3NpYmxlIGZvciBhbiBlbGVtZW50IGNyZWF0ZWQgb3V0c2lkZSBhIGNv
bXBvc2l0ZSB0byBiZVxuICAgICAgLy8gZGVlcGx5IG11dGF0ZWQgYW5kIHJldXNlZC5cblxuICAg
ICAgLy8gVE9ETzogQmFpbGluZyBvdXQgZWFybHkgaXMganVzdCBhIHBlcmYgb3B0aW1pemF0aW9u
IHJpZ2h0P1xuICAgICAgLy8gVE9ETzogUmVtb3ZpbmcgdGhlIHJldHVybiBzdGF0ZW1lbnQgc2hv
dWxkIGFmZmVjdCBjb3JyZWN0bmVzcz9cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGludGVy
bmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRp
b24uZGVidWdUb29sLm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2Rl
YnVnSUQsIG5leHRFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmVmc0NoYW5n
ZWQgPSBSZWFjdFJlZi5zaG91bGRVcGRhdGVSZWZzKHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCk7
XG5cbiAgICBpZiAocmVmc0NoYW5nZWQpIHtcbiAgICAgIFJlYWN0UmVmLmRldGFjaFJlZnMoaW50
ZXJuYWxJbnN0YW5jZSwgcHJldkVsZW1lbnQpO1xuICAgIH1cblxuICAgIGludGVybmFsSW5zdGFu
Y2UucmVjZWl2ZUNvbXBvbmVudChuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xu
XG4gICAgaWYgKHJlZnNDaGFuZ2VkICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50
ICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LnJlZiAhPSBudWxsKSB7XG4gICAg
ICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGF0dGFjaFJlZnMsIGlu
dGVybmFsSW5zdGFuY2UpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAh
PT0gMCkge1xuICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25VcGRhdGVD
b21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7XG4gICAgICB9XG4gICAgfVxuICB9
LFxuXG4gIC8qKlxuICAgKiBGbHVzaCBhbnkgZGlydHkgY2hhbmdlcyBpbiBhIGNvbXBvbmVudC5c
biAgICpcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZVxuICAg
KiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBp
bnRlcm5hbFxuICAgKi9cbiAgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OiBmdW5jdGlvbiAoaW50
ZXJuYWxJbnN0YW5jZSwgdHJhbnNhY3Rpb24sIHVwZGF0ZUJhdGNoTnVtYmVyKSB7XG4gICAgaWYg
KGludGVybmFsSW5zdGFuY2UuX3VwZGF0ZUJhdGNoTnVtYmVyICE9PSB1cGRhdGVCYXRjaE51bWJl
cikge1xuICAgICAgLy8gVGhlIGNvbXBvbmVudCdzIGVucXVldWVkIGJhdGNoIG51bWJlciBzaG91
bGQgYWx3YXlzIGJlIHRoZSBjdXJyZW50XG4gICAgICAvLyBiYXRjaCBvciB0aGUgZm9sbG93aW5n
IG9uZS5cbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGludGVybmFsSW5zdGFuY2UuX3VwZGF0ZUJhdGNoTnVtYmVyID09IG51bGwgfHwgaW50ZXJu
YWxJbnN0YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIgPT09IHVwZGF0ZUJhdGNoTnVtYmVyICsgMSwg
J3BlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogVW5leHBlY3RlZCBiYXRjaCBudW1iZXIgKGN1cnJl
bnQgJXMsICcgKyAncGVuZGluZyAlcyknLCB1cGRhdGVCYXRjaE51bWJlciwgaW50ZXJuYWxJbnN0
YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuO1xuICAgIH1c
biAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
aWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVhY3RJbnN0
cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5z
dGFuY2UuX2RlYnVnSUQsIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50KTtcbiAgICAg
IH1cbiAgICB9XG4gICAgaW50ZXJuYWxJbnN0YW5jZS5wZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnko
dHJhbnNhY3Rpb24pO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuICAg
ICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25VcGRhdGVDb21wb25lbnQoaW50
ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5tb2R1
bGUuZXhwb3J0cyA9IFJlYWN0UmVjb25jaWxlcjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8v
IFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0UmVj
b25jaWxlci5qc1xuLy8gbW9kdWxlIGlkID0gMTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoq
XG4gKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERPTU5h
bWVzcGFjZXMgPSByZXF1aXJlKCcuL0RPTU5hbWVzcGFjZXMnKTtcbnZhciBzZXRJbm5lckhUTUwg
PSByZXF1aXJlKCcuL3NldElubmVySFRNTCcpO1xuXG52YXIgY3JlYXRlTWljcm9zb2Z0VW5zYWZl
TG9jYWxGdW5jdGlvbiA9IHJlcXVpcmUoJy4vY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5j
dGlvbicpO1xudmFyIHNldFRleHRDb250ZW50ID0gcmVxdWlyZSgnLi9zZXRUZXh0Q29udGVudCcp
O1xuXG52YXIgRUxFTUVOVF9OT0RFX1RZUEUgPSAxO1xudmFyIERPQ1VNRU5UX0ZSQUdNRU5UX05P
REVfVFlQRSA9IDExO1xuXG4vKipcbiAqIEluIElFICg4LTExKSBhbmQgRWRnZSwgYXBwZW5kaW5n
IG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gaXMgZHJhbWF0aWNhbGx5XG4gKiBmYXN0ZXIgdGhhbiBh
cHBlbmRpbmcgYSBmdWxsIHN1YnRyZWUsIHNvIHdlIGVzc2VudGlhbGx5IHF1ZXVlIHVwIHRoZVxu
ICogLmFwcGVuZENoaWxkIGNhbGxzIGhlcmUgYW5kIGFwcGx5IHRoZW0gc28gZWFjaCBub2RlIGlz
IGFkZGVkIHRvIGl0cyBwYXJlbnRcbiAqIGJlZm9yZSBhbnkgY2hpbGRyZW4gYXJlIGFkZGVkLlxu
ICpcbiAqIEluIG90aGVyIGJyb3dzZXJzLCBkb2luZyBzbyBpcyBzbG93ZXIgb3IgbmV1dHJhbCBj
b21wYXJlZCB0byB0aGUgb3RoZXIgb3JkZXJcbiAqIChpbiBGaXJlZm94LCB0d2ljZSBhcyBzbG93
KSBzbyB3ZSBvbmx5IGRvIHRoaXMgaW52ZXJzaW9uIGluIElFLlxuICpcbiAqIFNlZSBodHRwczov
L2dpdGh1Yi5jb20vc3BpY3lqL2lubmVyaHRtbC12cy1jcmVhdGVlbGVtZW50LXZzLWNsb25lbm9k
ZS5cbiAqL1xudmFyIGVuYWJsZUxhenkgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQn
ICYmIHR5cGVvZiBkb2N1bWVudC5kb2N1bWVudE1vZGUgPT09ICdudW1iZXInIHx8IHR5cGVvZiBu
YXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBuYXZpZ2F0b3IudXNlckFnZW50ID09
PSAnc3RyaW5nJyAmJiAvXFxiRWRnZVxcL1xcZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtc
blxuZnVuY3Rpb24gaW5zZXJ0VHJlZUNoaWxkcmVuKHRyZWUpIHtcbiAgaWYgKCFlbmFibGVMYXp5
KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBub2RlID0gdHJlZS5ub2RlO1xuICB2YXIgY2hp
bGRyZW4gPSB0cmVlLmNoaWxkcmVuO1xuICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgaW5zZXJ0VHJl
ZUJlZm9yZShub2RlLCBjaGlsZHJlbltpXSwgbnVsbCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHRy
ZWUuaHRtbCAhPSBudWxsKSB7XG4gICAgc2V0SW5uZXJIVE1MKG5vZGUsIHRyZWUuaHRtbCk7XG4g
IH0gZWxzZSBpZiAodHJlZS50ZXh0ICE9IG51bGwpIHtcbiAgICBzZXRUZXh0Q29udGVudChub2Rl
LCB0cmVlLnRleHQpO1xuICB9XG59XG5cbnZhciBpbnNlcnRUcmVlQmVmb3JlID0gY3JlYXRlTWlj
cm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbiAocGFyZW50Tm9kZSwgdHJlZSwgcmVm
ZXJlbmNlTm9kZSkge1xuICAvLyBEb2N1bWVudEZyYWdtZW50cyBhcmVuJ3QgYWN0dWFsbHkgcGFy
dCBvZiB0aGUgRE9NIGFmdGVyIGluc2VydGlvbiBzb1xuICAvLyBhcHBlbmRpbmcgY2hpbGRyZW4g
d29uJ3QgdXBkYXRlIHRoZSBET00uIFdlIG5lZWQgdG8gZW5zdXJlIHRoZSBmcmFnbWVudFxuICAv
LyBpcyBwcm9wZXJseSBwb3B1bGF0ZWQgZmlyc3QsIGJyZWFraW5nIG91dCBvZiBvdXIgbGF6eSBh
cHByb2FjaCBmb3IganVzdFxuICAvLyB0aGlzIGxldmVsLiBBbHNvLCBzb21lIDxvYmplY3Q+IHBs
dWdpbnMgKGxpa2UgRmxhc2ggUGxheWVyKSB3aWxsIHJlYWRcbiAgLy8gPHBhcmFtPiBub2RlcyBp
bW1lZGlhdGVseSB1cG9uIGluc2VydGlvbiBpbnRvIHRoZSBET00sIHNvIDxvYmplY3Q+XG4gIC8v
IG11c3QgYWxzbyBiZSBwb3B1bGF0ZWQgcHJpb3IgdG8gaW5zZXJ0aW9uIGludG8gdGhlIERPTS5c
biAgaWYgKHRyZWUubm9kZS5ub2RlVHlwZSA9PT0gRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBF
IHx8IHRyZWUubm9kZS5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUgJiYgdHJlZS5ub2Rl
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvYmplY3QnICYmICh0cmVlLm5vZGUubmFtZXNw
YWNlVVJJID09IG51bGwgfHwgdHJlZS5ub2RlLm5hbWVzcGFjZVVSSSA9PT0gRE9NTmFtZXNwYWNl
cy5odG1sKSkge1xuICAgIGluc2VydFRyZWVDaGlsZHJlbih0cmVlKTtcbiAgICBwYXJlbnROb2Rl
Lmluc2VydEJlZm9yZSh0cmVlLm5vZGUsIHJlZmVyZW5jZU5vZGUpO1xuICB9IGVsc2Uge1xuICAg
IHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRyZWUubm9kZSwgcmVmZXJlbmNlTm9kZSk7XG4gICAg
aW5zZXJ0VHJlZUNoaWxkcmVuKHRyZWUpO1xuICB9XG59KTtcblxuZnVuY3Rpb24gcmVwbGFjZUNo
aWxkV2l0aFRyZWUob2xkTm9kZSwgbmV3VHJlZSkge1xuICBvbGROb2RlLnBhcmVudE5vZGUucmVw
bGFjZUNoaWxkKG5ld1RyZWUubm9kZSwgb2xkTm9kZSk7XG4gIGluc2VydFRyZWVDaGlsZHJlbihu
ZXdUcmVlKTtcbn1cblxuZnVuY3Rpb24gcXVldWVDaGlsZChwYXJlbnRUcmVlLCBjaGlsZFRyZWUp
IHtcbiAgaWYgKGVuYWJsZUxhenkpIHtcbiAgICBwYXJlbnRUcmVlLmNoaWxkcmVuLnB1c2goY2hp
bGRUcmVlKTtcbiAgfSBlbHNlIHtcbiAgICBwYXJlbnRUcmVlLm5vZGUuYXBwZW5kQ2hpbGQoY2hp
bGRUcmVlLm5vZGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHF1ZXVlSFRNTCh0cmVlLCBodG1sKSB7
XG4gIGlmIChlbmFibGVMYXp5KSB7XG4gICAgdHJlZS5odG1sID0gaHRtbDtcbiAgfSBlbHNlIHtc
biAgICBzZXRJbm5lckhUTUwodHJlZS5ub2RlLCBodG1sKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBx
dWV1ZVRleHQodHJlZSwgdGV4dCkge1xuICBpZiAoZW5hYmxlTGF6eSkge1xuICAgIHRyZWUudGV4
dCA9IHRleHQ7XG4gIH0gZWxzZSB7XG4gICAgc2V0VGV4dENvbnRlbnQodHJlZS5ub2RlLCB0ZXh0
KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIHRoaXMubm9kZS5u
b2RlTmFtZTtcbn1cblxuZnVuY3Rpb24gRE9NTGF6eVRyZWUobm9kZSkge1xuICByZXR1cm4ge1xu
ICAgIG5vZGU6IG5vZGUsXG4gICAgY2hpbGRyZW46IFtdLFxuICAgIGh0bWw6IG51bGwsXG4gICAg
dGV4dDogbnVsbCxcbiAgICB0b1N0cmluZzogdG9TdHJpbmdcbiAgfTtcbn1cblxuRE9NTGF6eVRy
ZWUuaW5zZXJ0VHJlZUJlZm9yZSA9IGluc2VydFRyZWVCZWZvcmU7XG5ET01MYXp5VHJlZS5yZXBs
YWNlQ2hpbGRXaXRoVHJlZSA9IHJlcGxhY2VDaGlsZFdpdGhUcmVlO1xuRE9NTGF6eVRyZWUucXVl
dWVDaGlsZCA9IHF1ZXVlQ2hpbGQ7XG5ET01MYXp5VHJlZS5xdWV1ZUhUTUwgPSBxdWV1ZUhUTUw7
XG5ET01MYXp5VHJlZS5xdWV1ZVRleHQgPSBxdWV1ZVRleHQ7XG5cbm1vZHVsZS5leHBvcnRzID0g
RE9NTGF6eVRyZWU7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxu
Ly8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9ET01MYXp5VHJlZS5qc1xuLy8gbW9kdWxl
IGlkID0gMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqIFxuICovXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogV0FSTklORzogRE8gTk9U
IG1hbnVhbGx5IHJlcXVpcmUgdGhpcyBtb2R1bGUuXG4gKiBUaGlzIGlzIGEgcmVwbGFjZW1lbnQg
Zm9yIGBpbnZhcmlhbnQoLi4uKWAgdXNlZCBieSB0aGUgZXJyb3IgY29kZSBzeXN0ZW1cbiAqIGFu
ZCB3aWxsIF9vbmx5XyBiZSByZXF1aXJlZCBieSB0aGUgY29ycmVzcG9uZGluZyBiYWJlbCBwYXNz
LlxuICogSXQgYWx3YXlzIHRocm93cy5cbiAqL1xuXG5mdW5jdGlvbiByZWFjdFByb2RJbnZhcmlh
bnQoY29kZSkge1xuICB2YXIgYXJnQ291bnQgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTtcblxuICB2
YXIgbWVzc2FnZSA9ICdNaW5pZmllZCBSZWFjdCBlcnJvciAjJyArIGNvZGUgKyAnOyB2aXNpdCAn
ICsgJ2h0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0
bWw/aW52YXJpYW50PScgKyBjb2RlO1xuXG4gIGZvciAodmFyIGFyZ0lkeCA9IDA7IGFyZ0lkeCA8
IGFyZ0NvdW50OyBhcmdJZHgrKykge1xuICAgIG1lc3NhZ2UgKz0gJyZhcmdzW109JyArIGVuY29k
ZVVSSUNvbXBvbmVudChhcmd1bWVudHNbYXJnSWR4ICsgMV0pO1xuICB9XG5cbiAgbWVzc2FnZSAr
PSAnIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZp
cm9ubWVudCcgKyAnIGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5p
bmdzLic7XG5cbiAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICBlcnJvci5uYW1l
ID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdl
IGRvbid0IGNhcmUgYWJvdXQgcmVhY3RQcm9kSW52YXJpYW50J3Mgb3duIGZyYW1lXG5cbiAgdGhy
b3cgZXJyb3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVhY3RQcm9kSW52YXJpYW50O1xuXG5c
bi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVz
L3JlYWN0L2xpYi9yZWFjdFByb2RJbnZhcmlhbnQuanNcbi8vIG1vZHVsZSBpZCA9IDE4XG4vLyBt
b2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBFdmVudFBsdWdpbkh1YiA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5I
dWInKTtcbnZhciBFdmVudFBsdWdpblV0aWxzID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpblV0aWxz
Jyk7XG5cbnZhciBhY2N1bXVsYXRlSW50byA9IHJlcXVpcmUoJy4vYWNjdW11bGF0ZUludG8nKTtc
bnZhciBmb3JFYWNoQWNjdW11bGF0ZWQgPSByZXF1aXJlKCcuL2ZvckVhY2hBY2N1bXVsYXRlZCcp
O1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBnZXRM
aXN0ZW5lciA9IEV2ZW50UGx1Z2luSHViLmdldExpc3RlbmVyO1xuXG4vKipcbiAqIFNvbWUgZXZl
bnQgdHlwZXMgaGF2ZSBhIG5vdGlvbiBvZiBkaWZmZXJlbnQgcmVnaXN0cmF0aW9uIG5hbWVzIGZv
ciBkaWZmZXJlbnRcbiAqIFwicGhhc2VzXCIgb2YgcHJvcGFnYXRpb24uIFRoaXMgZmluZHMgbGlz
dGVuZXJzIGJ5IGEgZ2l2ZW4gcGhhc2UuXG4gKi9cbmZ1bmN0aW9uIGxpc3RlbmVyQXRQaGFzZShp
bnN0LCBldmVudCwgcHJvcGFnYXRpb25QaGFzZSkge1xuICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9
IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3Byb3BhZ2F0aW9u
UGhhc2VdO1xuICByZXR1cm4gZ2V0TGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSk7XG59
XG5cbi8qKlxuICogVGFncyBhIGBTeW50aGV0aWNFdmVudGAgd2l0aCBkaXNwYXRjaGVkIGxpc3Rl
bmVycy4gQ3JlYXRpbmcgdGhpcyBmdW5jdGlvblxuICogaGVyZSwgYWxsb3dzIHVzIHRvIG5vdCBo
YXZlIHRvIGJpbmQgb3IgY3JlYXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBldmVudC5cbiAqIE11dGF0
aW5nIHRoZSBldmVudCdzIG1lbWJlcnMgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGNyZWF0ZSBh
IHdyYXBwaW5nXG4gKiBcImRpc3BhdGNoXCIgb2JqZWN0IHRoYXQgcGFpcnMgdGhlIGV2ZW50IHdp
dGggdGhlIGxpc3RlbmVyLlxuICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNw
YXRjaGVzKGluc3QsIHBoYXNlLCBldmVudCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGluc3QsICdEaXNwYXRjaGluZyBpbnN0IG11c3Qgbm90IGJlIG51bGwn
KSA6IHZvaWQgMDtcbiAgfVxuICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lckF0UGhhc2UoaW5zdCwg
ZXZlbnQsIHBoYXNlKTtcbiAgaWYgKGxpc3RlbmVyKSB7XG4gICAgZXZlbnQuX2Rpc3BhdGNoTGlz
dGVuZXJzID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzLCBsaXN0ZW5l
cik7XG4gICAgZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzID0gYWNjdW11bGF0ZUludG8oZXZlbnQu
X2Rpc3BhdGNoSW5zdGFuY2VzLCBpbnN0KTtcbiAgfVxufVxuXG4vKipcbiAqIENvbGxlY3QgZGlz
cGF0Y2hlcyAobXVzdCBiZSBlbnRpcmVseSBjb2xsZWN0ZWQgYmVmb3JlIGRpc3BhdGNoaW5nIC0g
c2VlIHVuaXRcbiAqIHRlc3RzKS4gTGF6aWx5IGFsbG9jYXRlIHRoZSBhcnJheSB0byBjb25zZXJ2
ZSBtZW1vcnkuICBXZSBtdXN0IGxvb3AgdGhyb3VnaFxuICogZWFjaCBldmVudCBhbmQgcGVyZm9y
bSB0aGUgdHJhdmVyc2FsIGZvciBlYWNoIG9uZS4gV2UgY2Fubm90IHBlcmZvcm0gYVxuICogc2lu
Z2xlIHRyYXZlcnNhbCBmb3IgdGhlIGVudGlyZSBjb2xsZWN0aW9uIG9mIGV2ZW50cyBiZWNhdXNl
IGVhY2ggZXZlbnQgbWF5XG4gKiBoYXZlIGEgZGlmZmVyZW50IHRhcmdldC5cbiAqL1xuZnVuY3Rp
b24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZShldmVudCkge1xuICBpZiAoZXZl
bnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHtcbiAg
ICBFdmVudFBsdWdpblV0aWxzLnRyYXZlcnNlVHdvUGhhc2UoZXZlbnQuX3RhcmdldEluc3QsIGFj
Y3VtdWxhdGVEaXJlY3Rpb25hbERpc3BhdGNoZXMsIGV2ZW50KTtcbiAgfVxufVxuXG4vKipcbiAq
IFNhbWUgYXMgYGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGVgLCBidXQgc2tpcHMg
b3ZlciB0aGUgdGFyZ2V0SUQuXG4gKi9cbmZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3Bh
dGNoZXNTaW5nbGVTa2lwVGFyZ2V0KGV2ZW50KSB7XG4gIGlmIChldmVudCAmJiBldmVudC5kaXNw
YXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuICAgIHZhciB0YXJnZXRJbnN0
ID0gZXZlbnQuX3RhcmdldEluc3Q7XG4gICAgdmFyIHBhcmVudEluc3QgPSB0YXJnZXRJbnN0ID8g
RXZlbnRQbHVnaW5VdGlscy5nZXRQYXJlbnRJbnN0YW5jZSh0YXJnZXRJbnN0KSA6IG51bGw7XG4g
ICAgRXZlbnRQbHVnaW5VdGlscy50cmF2ZXJzZVR3b1BoYXNlKHBhcmVudEluc3QsIGFjY3VtdWxh
dGVEaXJlY3Rpb25hbERpc3BhdGNoZXMsIGV2ZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIEFjY3Vt
dWxhdGVzIHdpdGhvdXQgcmVnYXJkIHRvIGRpcmVjdGlvbiwgZG9lcyBub3QgbG9vayBmb3IgcGhh
c2VkXG4gKiByZWdpc3RyYXRpb24gbmFtZXMuIFNhbWUgYXMgYGFjY3VtdWxhdGVEaXJlY3REaXNw
YXRjaGVzU2luZ2xlYCBidXQgd2l0aG91dFxuICogcmVxdWlyaW5nIHRoYXQgdGhlIGBkaXNwYXRj
aE1hcmtlcmAgYmUgdGhlIHNhbWUgYXMgdGhlIGRpc3BhdGNoZWQgSUQuXG4gKi9cbmZ1bmN0aW9u
IGFjY3VtdWxhdGVEaXNwYXRjaGVzKGluc3QsIGlnbm9yZWREaXJlY3Rpb24sIGV2ZW50KSB7XG4g
IGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG4g
ICAgdmFyIHJlZ2lzdHJhdGlvbk5hbWUgPSBldmVudC5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRp
b25OYW1lO1xuICAgIHZhciBsaXN0ZW5lciA9IGdldExpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlv
bk5hbWUpO1xuICAgIGlmIChsaXN0ZW5lcikge1xuICAgICAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVu
ZXJzID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzLCBsaXN0ZW5lcik7
XG4gICAgICBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMgPSBhY2N1bXVsYXRlSW50byhldmVudC5f
ZGlzcGF0Y2hJbnN0YW5jZXMsIGluc3QpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFjY3Vt
dWxhdGVzIGRpc3BhdGNoZXMgb24gYW4gYFN5bnRoZXRpY0V2ZW50YCwgYnV0IG9ubHkgZm9yIHRo
ZVxuICogYGRpc3BhdGNoTWFya2VyYC5cbiAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50
XG4gKi9cbmZ1bmN0aW9uIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2luZ2xlKGV2ZW50KSB7
XG4gIGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7
XG4gICAgYWNjdW11bGF0ZURpc3BhdGNoZXMoZXZlbnQuX3RhcmdldEluc3QsIG51bGwsIGV2ZW50
KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50
cykge1xuICBmb3JFYWNoQWNjdW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlVHdvUGhhc2VEaXNw
YXRjaGVzU2luZ2xlKTtcbn1cblxuZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hl
c1NraXBUYXJnZXQoZXZlbnRzKSB7XG4gIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3Vt
dWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGVTa2lwVGFyZ2V0KTtcbn1cblxuZnVuY3Rpb24g
YWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzKGxlYXZlLCBlbnRlciwgZnJvbSwgdG8pIHtc
biAgRXZlbnRQbHVnaW5VdGlscy50cmF2ZXJzZUVudGVyTGVhdmUoZnJvbSwgdG8sIGFjY3VtdWxh
dGVEaXNwYXRjaGVzLCBsZWF2ZSwgZW50ZXIpO1xufVxuXG5mdW5jdGlvbiBhY2N1bXVsYXRlRGly
ZWN0RGlzcGF0Y2hlcyhldmVudHMpIHtcbiAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywgYWNj
dW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGUpO1xufVxuXG4vKipcbiAqIEEgc21hbGwgc2V0
IG9mIHByb3BhZ2F0aW9uIHBhdHRlcm5zLCBlYWNoIG9mIHdoaWNoIHdpbGwgYWNjZXB0IGEgc21h
bGwgYW1vdW50XG4gKiBvZiBpbmZvcm1hdGlvbiwgYW5kIGdlbmVyYXRlIGEgc2V0IG9mIFwiZGlz
cGF0Y2ggcmVhZHkgZXZlbnQgb2JqZWN0c1wiIC0gd2hpY2hcbiAqIGFyZSBzZXRzIG9mIGV2ZW50
cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGFubm90YXRlZCB3aXRoIGEgc2V0IG9mIGRpc3BhdGNo
ZWRcbiAqIGxpc3RlbmVyIGZ1bmN0aW9ucy9pZHMuIFRoZSBBUEkgaXMgZGVzaWduZWQgdGhpcyB3
YXkgdG8gZGlzY291cmFnZSB0aGVzZVxuICogcHJvcGFnYXRpb24gc3RyYXRlZ2llcyBmcm9tIGFj
dHVhbGx5IGV4ZWN1dGluZyB0aGUgZGlzcGF0Y2hlcywgc2luY2Ugd2VcbiAqIGFsd2F5cyB3YW50
IHRvIGNvbGxlY3QgdGhlIGVudGlyZSBzZXQgb2YgZGlzcGF0Y2hlcyBiZWZvcmUgZXhlY3V0aW5n
IGV2ZW50IGFcbiAqIHNpbmdsZSBvbmUuXG4gKlxuICogQGNvbnN0cnVjdG9yIEV2ZW50UHJvcGFn
YXRvcnNcbiAqL1xudmFyIEV2ZW50UHJvcGFnYXRvcnMgPSB7XG4gIGFjY3VtdWxhdGVUd29QaGFz
ZURpc3BhdGNoZXM6IGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMsXG4gIGFjY3VtdWxhdGVU
d29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0OiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVz
U2tpcFRhcmdldCxcbiAgYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXM6IGFjY3VtdWxhdGVEaXJl
Y3REaXNwYXRjaGVzLFxuICBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXM6IGFjY3VtdWxh
dGVFbnRlckxlYXZlRGlzcGF0Y2hlc1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdmVudFByb3Bh
Z2F0b3JzO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4v
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRXZlbnRQcm9wYWdhdG9ycy5qc1xuLy8gbW9kdWxl
IGlkID0gMTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgn
Li9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSByZXF1
aXJlKCcuL0V2ZW50UGx1Z2luUmVnaXN0cnknKTtcbnZhciBFdmVudFBsdWdpblV0aWxzID0gcmVx
dWlyZSgnLi9FdmVudFBsdWdpblV0aWxzJyk7XG52YXIgUmVhY3RFcnJvclV0aWxzID0gcmVxdWly
ZSgnLi9SZWFjdEVycm9yVXRpbHMnKTtcblxudmFyIGFjY3VtdWxhdGVJbnRvID0gcmVxdWlyZSgn
Li9hY2N1bXVsYXRlSW50bycpO1xudmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IHJlcXVpcmUoJy4v
Zm9yRWFjaEFjY3VtdWxhdGVkJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIv
aW52YXJpYW50Jyk7XG5cbi8qKlxuICogSW50ZXJuYWwgc3RvcmUgZm9yIGV2ZW50IGxpc3RlbmVy
c1xuICovXG52YXIgbGlzdGVuZXJCYW5rID0ge307XG5cbi8qKlxuICogSW50ZXJuYWwgcXVldWUg
b2YgZXZlbnRzIHRoYXQgaGF2ZSBhY2N1bXVsYXRlZCB0aGVpciBkaXNwYXRjaGVzIGFuZCBhcmVc
biAqIHdhaXRpbmcgdG8gaGF2ZSB0aGVpciBkaXNwYXRjaGVzIGV4ZWN1dGVkLlxuICovXG52YXIg
ZXZlbnRRdWV1ZSA9IG51bGw7XG5cbi8qKlxuICogRGlzcGF0Y2hlcyBhbiBldmVudCBhbmQgcmVs
ZWFzZXMgaXQgYmFjayBpbnRvIHRoZSBwb29sLCB1bmxlc3MgcGVyc2lzdGVudC5cbiAqXG4gKiBA
cGFyYW0gez9vYmplY3R9IGV2ZW50IFN5bnRoZXRpYyBldmVudCB0byBiZSBkaXNwYXRjaGVkLlxu
ICogQHBhcmFtIHtib29sZWFufSBzaW11bGF0ZWQgSWYgdGhlIGV2ZW50IGlzIHNpbXVsYXRlZCAo
Y2hhbmdlcyBleG4gYmVoYXZpb3IpXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgZXhlY3V0ZURpc3Bh
dGNoZXNBbmRSZWxlYXNlID0gZnVuY3Rpb24gKGV2ZW50LCBzaW11bGF0ZWQpIHtcbiAgaWYgKGV2
ZW50KSB7XG4gICAgRXZlbnRQbHVnaW5VdGlscy5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZXZl
bnQsIHNpbXVsYXRlZCk7XG5cbiAgICBpZiAoIWV2ZW50LmlzUGVyc2lzdGVudCgpKSB7XG4gICAg
ICBldmVudC5jb25zdHJ1Y3Rvci5yZWxlYXNlKGV2ZW50KTtcbiAgICB9XG4gIH1cbn07XG52YXIg
ZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlU2ltdWxhdGVkID0gZnVuY3Rpb24gKGUpIHtcbiAg
cmV0dXJuIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZShlLCB0cnVlKTtcbn07XG52YXIgZXhl
Y3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwgPSBmdW5jdGlvbiAoZSkge1xuICByZXR1
cm4gZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlKGUsIGZhbHNlKTtcbn07XG5cbnZhciBnZXRE
aWN0aW9uYXJ5S2V5ID0gZnVuY3Rpb24gKGluc3QpIHtcbiAgLy8gUHJldmVudHMgVjggcGVyZm9y
bWFuY2UgaXNzdWU6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxs
LzcyMzJcbiAgcmV0dXJuICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7XG59O1xuXG5mdW5jdGlvbiBp
c0ludGVyYWN0aXZlKHRhZykge1xuICByZXR1cm4gdGFnID09PSAnYnV0dG9uJyB8fCB0YWcgPT09
ICdpbnB1dCcgfHwgdGFnID09PSAnc2VsZWN0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYSc7XG59XG5c
bmZ1bmN0aW9uIHNob3VsZFByZXZlbnRNb3VzZUV2ZW50KG5hbWUsIHR5cGUsIHByb3BzKSB7XG4g
IHN3aXRjaCAobmFtZSkge1xuICAgIGNhc2UgJ29uQ2xpY2snOlxuICAgIGNhc2UgJ29uQ2xpY2tD
YXB0dXJlJzpcbiAgICBjYXNlICdvbkRvdWJsZUNsaWNrJzpcbiAgICBjYXNlICdvbkRvdWJsZUNs
aWNrQ2FwdHVyZSc6XG4gICAgY2FzZSAnb25Nb3VzZURvd24nOlxuICAgIGNhc2UgJ29uTW91c2VE
b3duQ2FwdHVyZSc6XG4gICAgY2FzZSAnb25Nb3VzZU1vdmUnOlxuICAgIGNhc2UgJ29uTW91c2VN
b3ZlQ2FwdHVyZSc6XG4gICAgY2FzZSAnb25Nb3VzZVVwJzpcbiAgICBjYXNlICdvbk1vdXNlVXBD
YXB0dXJlJzpcbiAgICAgIHJldHVybiAhIShwcm9wcy5kaXNhYmxlZCAmJiBpc0ludGVyYWN0aXZl
KHR5cGUpKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8q
KlxuICogVGhpcyBpcyBhIHVuaWZpZWQgaW50ZXJmYWNlIGZvciBldmVudCBwbHVnaW5zIHRvIGJl
IGluc3RhbGxlZCBhbmQgY29uZmlndXJlZC5cbiAqXG4gKiBFdmVudCBwbHVnaW5zIGNhbiBpbXBs
ZW1lbnQgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgYGV4dHJhY3RFdmVudHNg
IHtmdW5jdGlvbihzdHJpbmcsIERPTUV2ZW50VGFyZ2V0LCBzdHJpbmcsIG9iamVjdCk6ICp9XG4g
KiAgICAgUmVxdWlyZWQuIFdoZW4gYSB0b3AtbGV2ZWwgZXZlbnQgaXMgZmlyZWQsIHRoaXMgbWV0
aG9kIGlzIGV4cGVjdGVkIHRvXG4gKiAgICAgZXh0cmFjdCBzeW50aGV0aWMgZXZlbnRzIHRoYXQg
d2lsbCBpbiB0dXJuIGJlIHF1ZXVlZCBhbmQgZGlzcGF0Y2hlZC5cbiAqXG4gKiAgIGBldmVudFR5
cGVzYCB7b2JqZWN0fVxuICogICAgIE9wdGlvbmFsLCBwbHVnaW5zIHRoYXQgZmlyZSBldmVudHMg
bXVzdCBwdWJsaXNoIGEgbWFwcGluZyBvZiByZWdpc3RyYXRpb25cbiAqICAgICBuYW1lcyB0aGF0
IGFyZSB1c2VkIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy4gVmFsdWVzIG9mIHRoaXMgbWFwcGluZyBt
dXN0XG4gKiAgICAgYmUgb2JqZWN0cyB0aGF0IGNvbnRhaW4gYHJlZ2lzdHJhdGlvbk5hbWVgIG9y
IGBwaGFzZWRSZWdpc3RyYXRpb25OYW1lc2AuXG4gKlxuICogICBgZXhlY3V0ZURpc3BhdGNoYCB7
ZnVuY3Rpb24ob2JqZWN0LCBmdW5jdGlvbiwgc3RyaW5nKX1cbiAqICAgICBPcHRpb25hbCwgYWxs
b3dzIHBsdWdpbnMgdG8gb3ZlcnJpZGUgaG93IGFuIGV2ZW50IGdldHMgZGlzcGF0Y2hlZC4gQnlc
biAqICAgICBkZWZhdWx0LCB0aGUgbGlzdGVuZXIgaXMgc2ltcGx5IGludm9rZWQuXG4gKlxuICog
RWFjaCBwbHVnaW4gdGhhdCBpcyBpbmplY3RlZCBpbnRvIGBFdmVudHNQbHVnaW5IdWJgIGlzIGlt
bWVkaWF0ZWx5IG9wZXJhYmxlLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xudmFyIEV2ZW50UGx1Z2lu
SHViID0ge1xuICAvKipcbiAgICogTWV0aG9kcyBmb3IgaW5qZWN0aW5nIGRlcGVuZGVuY2llcy5c
biAgICovXG4gIGluamVjdGlvbjoge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7YXJyYXl9IElu
amVjdGVkRXZlbnRQbHVnaW5PcmRlclxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICBpbmpl
Y3RFdmVudFBsdWdpbk9yZGVyOiBFdmVudFBsdWdpblJlZ2lzdHJ5LmluamVjdEV2ZW50UGx1Z2lu
T3JkZXIsXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gaW5qZWN0ZWROYW1lc1Rv
UGx1Z2lucyBNYXAgZnJvbSBuYW1lcyB0byBwbHVnaW4gbW9kdWxlcy5cbiAgICAgKi9cbiAgICBp
bmplY3RFdmVudFBsdWdpbnNCeU5hbWU6IEV2ZW50UGx1Z2luUmVnaXN0cnkuaW5qZWN0RXZlbnRQ
bHVnaW5zQnlOYW1lXG4gIH0sXG5cbiAgLyoqXG4gICAqIFN0b3JlcyBgbGlzdGVuZXJgIGF0IGBs
aXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1ba2V5XWAuIElzIGlkZW1wb3RlbnQuXG4gICAq
XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNv
dXJjZSBvZiBldmVudHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5h
bWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0g
bGlzdGVuZXIgVGhlIGNhbGxiYWNrIHRvIHN0b3JlLlxuICAgKi9cbiAgcHV0TGlzdGVuZXI6IGZ1
bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcikge1xuICAgICEodHlwZW9m
IGxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCAlcyBsaXN0ZW5lciB0byBiZSBh
IGZ1bmN0aW9uLCBpbnN0ZWFkIGdvdCB0eXBlICVzJywgcmVnaXN0cmF0aW9uTmFtZSwgdHlwZW9m
IGxpc3RlbmVyKSA6IF9wcm9kSW52YXJpYW50KCc5NCcsIHJlZ2lzdHJhdGlvbk5hbWUsIHR5cGVv
ZiBsaXN0ZW5lcikgOiB2b2lkIDA7XG5cbiAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShp
bnN0KTtcbiAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVn
aXN0cmF0aW9uTmFtZV0gfHwgKGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXSA9IHt9KTtc
biAgICBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtrZXldID0gbGlzdGVuZXI7XG5cbiAgICB2YXIg
UGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxl
c1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVs
ZS5kaWRQdXRMaXN0ZW5lcikge1xuICAgICAgUGx1Z2luTW9kdWxlLmRpZFB1dExpc3RlbmVyKGlu
c3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJj
ZSBvZiBldmVudHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUg
b2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICogQHJldHVybiB7P2Z1bmN0aW9ufSBU
aGUgc3RvcmVkIGNhbGxiYWNrLlxuICAgKi9cbiAgZ2V0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0
LCByZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgLy8gVE9ETzogc2hvdWxkUHJldmVudE1vdXNlRXZl
bnQgaXMgRE9NLXNwZWNpZmljIGFuZCBkZWZpbml0ZWx5IHNob3VsZCBub3RcbiAgICAvLyBsaXZl
IGhlcmU7IG5lZWRzIHRvIGJlIG1vdmVkIHRvIGEgYmV0dGVyIHBsYWNlIHNvb25cbiAgICB2YXIg
YmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV07
XG4gICAgaWYgKHNob3VsZFByZXZlbnRNb3VzZUV2ZW50KHJlZ2lzdHJhdGlvbk5hbWUsIGluc3Qu
X2N1cnJlbnRFbGVtZW50LnR5cGUsIGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzKSkge1xuICAg
ICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGlu
c3QpO1xuICAgIHJldHVybiBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSAmJiBiYW5rRm9yUmVnaXN0
cmF0aW9uTmFtZVtrZXldO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgbGlzdGVuZXIg
ZnJvbSB0aGUgcmVnaXN0cmF0aW9uIGJhbmsuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBp
bnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMuXG4gICAqIEBw
YXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9u
Q2xpY2tgKS5cbiAgICovXG4gIGRlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0
cmF0aW9uTmFtZSkge1xuICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5
LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgIGlmIChQbHVn
aW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcikge1xuICAgICAgUGx1
Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTtcbiAg
ICB9XG5cbiAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVn
aXN0cmF0aW9uTmFtZV07XG4gICAgLy8gVE9ETzogVGhpcyBzaG91bGQgbmV2ZXIgYmUgbnVsbCAt
LSB3aGVuIGlzIGl0P1xuICAgIGlmIChiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSkge1xuICAgICAg
dmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG4gICAgICBkZWxldGUgYmFua0ZvclJl
Z2lzdHJhdGlvbk5hbWVba2V5XTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlbGV0ZXMg
YWxsIGxpc3RlbmVycyBmb3IgdGhlIERPTSBlbGVtZW50IHdpdGggdGhlIHN1cHBsaWVkIElELlxu
ICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNoIGlzIHRo
ZSBzb3VyY2Ugb2YgZXZlbnRzLlxuICAgKi9cbiAgZGVsZXRlQWxsTGlzdGVuZXJzOiBmdW5jdGlv
biAoaW5zdCkge1xuICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xuICAgIGZv
ciAodmFyIHJlZ2lzdHJhdGlvbk5hbWUgaW4gbGlzdGVuZXJCYW5rKSB7XG4gICAgICBpZiAoIWxp
c3RlbmVyQmFuay5oYXNPd25Qcm9wZXJ0eShyZWdpc3RyYXRpb25OYW1lKSkge1xuICAgICAgICBj
b250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9u
TmFtZV1ba2V5XSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIFBs
dWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNb
cmVnaXN0cmF0aW9uTmFtZV07XG4gICAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVs
ZS53aWxsRGVsZXRlTGlzdGVuZXIpIHtcbiAgICAgICAgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVM
aXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRl
IGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtrZXldO1xuICAgIH1cbiAgfSxcblxuICAv
KipcbiAgICogQWxsb3dzIHJlZ2lzdGVyZWQgcGx1Z2lucyBhbiBvcHBvcnR1bml0eSB0byBleHRy
YWN0IGV2ZW50cyBmcm9tIHRvcC1sZXZlbFxuICAgKiBuYXRpdmUgYnJvd3NlciBldmVudHMuXG4g
ICAqXG4gICAqIEByZXR1cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRz
LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BM
ZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xu
ICAgIHZhciBldmVudHM7XG4gICAgdmFyIHBsdWdpbnMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnBs
dWdpbnM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbHVnaW5zLmxlbmd0aDsgaSsrKSB7XG4g
ICAgICAvLyBOb3QgZXZlcnkgcGx1Z2luIGluIHRoZSBvcmRlcmluZyBtYXkgYmUgbG9hZGVkIGF0
IHJ1bnRpbWUuXG4gICAgICB2YXIgcG9zc2libGVQbHVnaW4gPSBwbHVnaW5zW2ldO1xuICAgICAg
aWYgKHBvc3NpYmxlUGx1Z2luKSB7XG4gICAgICAgIHZhciBleHRyYWN0ZWRFdmVudHMgPSBwb3Nz
aWJsZVBsdWdpbi5leHRyYWN0RXZlbnRzKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZl
RXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICAgICAgaWYgKGV4dHJhY3RlZEV2ZW50cykg
e1xuICAgICAgICAgIGV2ZW50cyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50cywgZXh0cmFjdGVkRXZl
bnRzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9
LFxuXG4gIC8qKlxuICAgKiBFbnF1ZXVlcyBhIHN5bnRoZXRpYyBldmVudCB0aGF0IHNob3VsZCBi
ZSBkaXNwYXRjaGVkIHdoZW5cbiAgICogYHByb2Nlc3NFdmVudFF1ZXVlYCBpcyBpbnZva2VkLlxu
ICAgKlxuICAgKiBAcGFyYW0geyp9IGV2ZW50cyBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhldGlj
IGV2ZW50cy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlRXZlbnRzOiBmdW5jdGlv
biAoZXZlbnRzKSB7XG4gICAgaWYgKGV2ZW50cykge1xuICAgICAgZXZlbnRRdWV1ZSA9IGFjY3Vt
dWxhdGVJbnRvKGV2ZW50UXVldWUsIGV2ZW50cyk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAg
KiBEaXNwYXRjaGVzIGFsbCBzeW50aGV0aWMgZXZlbnRzIG9uIHRoZSBldmVudCBxdWV1ZS5cbiAg
ICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm9jZXNzRXZlbnRRdWV1ZTogZnVuY3Rpb24g
KHNpbXVsYXRlZCkge1xuICAgIC8vIFNldCBgZXZlbnRRdWV1ZWAgdG8gbnVsbCBiZWZvcmUgcHJv
Y2Vzc2luZyBpdCBzbyB0aGF0IHdlIGNhbiB0ZWxsIGlmIG1vcmVcbiAgICAvLyBldmVudHMgZ2V0
IGVucXVldWVkIHdoaWxlIHByb2Nlc3NpbmcuXG4gICAgdmFyIHByb2Nlc3NpbmdFdmVudFF1ZXVl
ID0gZXZlbnRRdWV1ZTtcbiAgICBldmVudFF1ZXVlID0gbnVsbDtcbiAgICBpZiAoc2ltdWxhdGVk
KSB7XG4gICAgICBmb3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2ZW50UXVldWUsIGV4ZWN1
dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVNpbXVsYXRlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZv
ckVhY2hBY2N1bXVsYXRlZChwcm9jZXNzaW5nRXZlbnRRdWV1ZSwgZXhlY3V0ZURpc3BhdGNoZXNB
bmRSZWxlYXNlVG9wTGV2ZWwpO1xuICAgIH1cbiAgICAhIWV2ZW50UXVldWUgPyBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAncHJvY2Vzc0V2
ZW50UXVldWUoKTogQWRkaXRpb25hbCBldmVudHMgd2VyZSBlbnF1ZXVlZCB3aGlsZSBwcm9jZXNz
aW5nIGFuIGV2ZW50IHF1ZXVlLiBTdXBwb3J0IGZvciB0aGlzIGhhcyBub3QgeWV0IGJlZW4gaW1w
bGVtZW50ZWQuJykgOiBfcHJvZEludmFyaWFudCgnOTUnKSA6IHZvaWQgMDtcbiAgICAvLyBUaGlz
IHdvdWxkIGJlIGEgZ29vZCB0aW1lIHRvIHJldGhyb3cgaWYgYW55IG9mIHRoZSBldmVudCBoYW5k
bGVycyB0aHJldy5cbiAgICBSZWFjdEVycm9yVXRpbHMucmV0aHJvd0NhdWdodEVycm9yKCk7XG4g
IH0sXG5cbiAgLyoqXG4gICAqIFRoZXNlIGFyZSBuZWVkZWQgZm9yIHRlc3RzIG9ubHkuIERvIG5v
dCB1c2UhXG4gICAqL1xuICBfX3B1cmdlOiBmdW5jdGlvbiAoKSB7XG4gICAgbGlzdGVuZXJCYW5r
ID0ge307XG4gIH0sXG5cbiAgX19nZXRMaXN0ZW5lckJhbms6IGZ1bmN0aW9uICgpIHtcbiAgICBy
ZXR1cm4gbGlzdGVuZXJCYW5rO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1
Z2luSHViO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4v
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRXZlbnRQbHVnaW5IdWIuanNcbi8vIG1vZHVsZSBp
ZCA9IDIwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4v
U3ludGhldGljRXZlbnQnKTtcblxudmFyIGdldEV2ZW50VGFyZ2V0ID0gcmVxdWlyZSgnLi9nZXRF
dmVudFRhcmdldCcpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgVUlFdmVudFxuICogQHNlZSBodHRw
Oi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBVSUV2ZW50SW50
ZXJmYWNlID0ge1xuICB2aWV3OiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQudmll
dykge1xuICAgICAgcmV0dXJuIGV2ZW50LnZpZXc7XG4gICAgfVxuXG4gICAgdmFyIHRhcmdldCA9
IGdldEV2ZW50VGFyZ2V0KGV2ZW50KTtcbiAgICBpZiAodGFyZ2V0LndpbmRvdyA9PT0gdGFyZ2V0
KSB7XG4gICAgICAvLyB0YXJnZXQgaXMgYSB3aW5kb3cgb2JqZWN0XG4gICAgICByZXR1cm4gdGFy
Z2V0O1xuICAgIH1cblxuICAgIHZhciBkb2MgPSB0YXJnZXQub3duZXJEb2N1bWVudDtcbiAgICAv
LyBUT0RPOiBGaWd1cmUgb3V0IHdoeSBgb3duZXJEb2N1bWVudGAgaXMgc29tZXRpbWVzIHVuZGVm
aW5lZCBpbiBJRTguXG4gICAgaWYgKGRvYykge1xuICAgICAgcmV0dXJuIGRvYy5kZWZhdWx0Vmll
dyB8fCBkb2MucGFyZW50V2luZG93O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gd2luZG93
O1xuICAgIH1cbiAgfSxcbiAgZGV0YWlsOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4g
ZXZlbnQuZGV0YWlsIHx8IDA7XG4gIH1cbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRp
c3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50Llxu
ICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUg
ZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93
c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY0V2ZW50fVxuICovXG5mdW5jdGlvbiBT
eW50aGV0aWNVSUV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRo
aXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2
ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1VJ
RXZlbnQsIFVJRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1VJ
RXZlbnQ7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNVSUV2ZW50LmpzXG4vLyBtb2R1bGUg
aWQgPSAyMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIGBSZWFjdEluc3RhbmNlTWFwYCBtYWlu
dGFpbnMgYSBtYXBwaW5nIGZyb20gYSBwdWJsaWMgZmFjaW5nIHN0YXRlZnVsXG4gKiBpbnN0YW5j
ZSAoa2V5KSBhbmQgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uICh2YWx1ZSkuIFRoaXMgYWxs
b3dzIHB1YmxpY1xuICogbWV0aG9kcyB0byBhY2NlcHQgdGhlIHVzZXIgZmFjaW5nIGluc3RhbmNl
IGFzIGFuIGFyZ3VtZW50IGFuZCBtYXAgdGhlbSBiYWNrXG4gKiB0byBpbnRlcm5hbCBtZXRob2Rz
LlxuICovXG5cbi8vIFRPRE86IFJlcGxhY2UgdGhpcyB3aXRoIEVTNjogdmFyIFJlYWN0SW5zdGFu
Y2VNYXAgPSBuZXcgTWFwKCk7XG5cbnZhciBSZWFjdEluc3RhbmNlTWFwID0ge1xuICAvKipcbiAg
ICogVGhpcyBBUEkgc2hvdWxkIGJlIGNhbGxlZCBgZGVsZXRlYCBidXQgd2UnZCBoYXZlIHRvIG1h
a2Ugc3VyZSB0byBhbHdheXNcbiAgICogdHJhbnNmb3JtIHRoZXNlIHRvIHN0cmluZ3MgZm9yIElF
IHN1cHBvcnQuIFdoZW4gdGhpcyB0cmFuc2Zvcm0gaXMgZnVsbHlcbiAgICogc3VwcG9ydGVkIHdl
IGNhbiByZW5hbWUgaXQuXG4gICAqL1xuICByZW1vdmU6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICBr
ZXkuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSA9IHVuZGVmaW5lZDtcbiAgfSxcblxuICBnZXQ6IGZ1
bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4ga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2U7XG4g
IH0sXG5cbiAgaGFzOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGtleS5fcmVhY3RJbnRl
cm5hbEluc3RhbmNlICE9PSB1bmRlZmluZWQ7XG4gIH0sXG5cbiAgc2V0OiBmdW5jdGlvbiAoa2V5
LCB2YWx1ZSkge1xuICAgIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlID0gdmFsdWU7XG4gIH1c
bn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RJbnN0YW5jZU1hcDtcblxuXG4vLy8vLy8vLy8v
Ly8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL1JlYWN0SW5zdGFuY2VNYXAuanNcbi8vIG1vZHVsZSBpZCA9IDIyXG4vLyBtb2R1bGUgY2h1
bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgZW1wdHlPYmplY3QgPSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgT2JqZWN0LmZyZWV6ZShlbXB0eU9iamVjdCk7XG59XG5c
bm1vZHVsZS5leHBvcnRzID0gZW1wdHlPYmplY3Q7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4v
LyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZmJqcy9saWIvZW1wdHlPYmplY3Qu
anNcbi8vIG1vZHVsZSBpZCA9IDIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52
YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIGludmFyaWFu
dCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52YXIgT0JTRVJWRURfRVJST1Ig
PSB7fTtcblxuLyoqXG4gKiBgVHJhbnNhY3Rpb25gIGNyZWF0ZXMgYSBibGFjayBib3ggdGhhdCBp
cyBhYmxlIHRvIHdyYXAgYW55IG1ldGhvZCBzdWNoIHRoYXRcbiAqIGNlcnRhaW4gaW52YXJpYW50
cyBhcmUgbWFpbnRhaW5lZCBiZWZvcmUgYW5kIGFmdGVyIHRoZSBtZXRob2QgaXMgaW52b2tlZFxu
ICogKEV2ZW4gaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biB3aGlsZSBpbnZva2luZyB0aGUgd3Jh
cHBlZCBtZXRob2QpLiBXaG9ldmVyXG4gKiBpbnN0YW50aWF0ZXMgYSB0cmFuc2FjdGlvbiBjYW4g
cHJvdmlkZSBlbmZvcmNlcnMgb2YgdGhlIGludmFyaWFudHMgYXRcbiAqIGNyZWF0aW9uIHRpbWUu
IFRoZSBgVHJhbnNhY3Rpb25gIGNsYXNzIGl0c2VsZiB3aWxsIHN1cHBseSBvbmUgYWRkaXRpb25h
bFxuICogYXV0b21hdGljIGludmFyaWFudCBmb3IgeW91IC0gdGhlIGludmFyaWFudCB0aGF0IGFu
eSB0cmFuc2FjdGlvbiBpbnN0YW5jZVxuICogc2hvdWxkIG5vdCBiZSBydW4gd2hpbGUgaXQgaXMg
YWxyZWFkeSBiZWluZyBydW4uIFlvdSB3b3VsZCB0eXBpY2FsbHkgY3JlYXRlIGFcbiAqIHNpbmds
ZSBpbnN0YW5jZSBvZiBhIGBUcmFuc2FjdGlvbmAgZm9yIHJldXNlIG11bHRpcGxlIHRpbWVzLCB0
aGF0IHBvdGVudGlhbGx5XG4gKiBpcyB1c2VkIHRvIHdyYXAgc2V2ZXJhbCBkaWZmZXJlbnQgbWV0
aG9kcy4gV3JhcHBlcnMgYXJlIGV4dHJlbWVseSBzaW1wbGUgLVxuICogdGhleSBvbmx5IHJlcXVp
cmUgaW1wbGVtZW50aW5nIHR3byBtZXRob2RzLlxuICpcbiAqIDxwcmU+XG4gKiAgICAgICAgICAg
ICAgICAgICAgICAgd3JhcHBlcnMgKGluamVjdGVkIGF0IGNyZWF0aW9uIHRpbWUpXG4gKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgK1xuICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIHxcbiAqICAgICAgICAgICAgICAg
ICAgICArLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0rXG4gKiAgICAg
ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgdiAgICAgICAgfCAgICAgICAgICAgICAg
fFxuICogICAgICAgICAgICAgICAgICAgIHwgICAgICArLS0tLS0tLS0tLS0tLS0tKyAgIHwgICAg
ICAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgKy0tfCAgICB3cmFwcGVyMSAg
IHwtLS18LS0tLSsgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICstLS0t
LS0tLS0tLS0tLS0rICAgdiAgICB8ICAgICAgICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwg
ICB8ICAgICAgICAgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgICAgIHxcbiAqICAgICAgICAgICAg
ICAgICAgICB8ICAgfCAgICAgKy0tLS18ICAgd3JhcHBlcjIgIHwtLS0tLS0tLSsgICB8XG4gKiAg
ICAgICAgICAgICAgICAgICAgfCAgIHwgICAgIHwgICAgKy0tLS0tLS0tLS0tLS0rICB8ICAgICB8
ICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICB8ICAgICAgICAgICAgICAgICAg
ICAgfCAgICAgfCAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgdiAgICAgdiAgICAgICAg
ICAgICAgICAgICAgIHYgICAgIHYgICB8IHdyYXBwZXJcbiAqICAgICAgICAgICAgICAgICAgICB8
ICstLS0rICstLS0rICAgKy0tLS0tLS0tLSsgICArLS0tKyArLS0tKyB8IGludmFyaWFudHNcbiAq
IHBlcmZvcm0oYW55TWV0aG9kKSB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8
ICAgfCB8IG1haW50YWluZWRcbiAqICstLS0tLS0tLS0tLS0tLS0tLT58LXwtLS18LXwtLS18LS0+
fGFueU1ldGhvZHwtLS18LS0tfC18LS0tfC18LS0tLS0tLS0+XG4gKiAgICAgICAgICAgICAgICAg
ICAgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfFxuICogICAgICAg
ICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHxc
biAqICAgICAgICAgICAgICAgICAgICB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAg
fCB8ICAgfCB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCArLS0tKyArLS0tKyAgICstLS0tLS0t
LS0rICAgKy0tLSsgKy0tLSsgfFxuICogICAgICAgICAgICAgICAgICAgIHwgIGluaXRpYWxpemUg
ICAgICAgICAgICAgICAgICAgIGNsb3NlICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICArLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gKiA8L3ByZT5cbiAqXG4g
KiBVc2UgY2FzZXM6XG4gKiAtIFByZXNlcnZpbmcgdGhlIGlucHV0IHNlbGVjdGlvbiByYW5nZXMg
YmVmb3JlL2FmdGVyIHJlY29uY2lsaWF0aW9uLlxuICogICBSZXN0b3Jpbmcgc2VsZWN0aW9uIGV2
ZW4gaW4gdGhlIGV2ZW50IG9mIGFuIHVuZXhwZWN0ZWQgZXJyb3IuXG4gKiAtIERlYWN0aXZhdGlu
ZyBldmVudHMgd2hpbGUgcmVhcnJhbmdpbmcgdGhlIERPTSwgcHJldmVudGluZyBibHVycy9mb2N1
c2VzLFxuICogICB3aGlsZSBndWFyYW50ZWVpbmcgdGhhdCBhZnRlcndhcmRzLCB0aGUgZXZlbnQg
c3lzdGVtIGlzIHJlYWN0aXZhdGVkLlxuICogLSBGbHVzaGluZyBhIHF1ZXVlIG9mIGNvbGxlY3Rl
ZCBET00gbXV0YXRpb25zIHRvIHRoZSBtYWluIFVJIHRocmVhZCBhZnRlciBhXG4gKiAgIHJlY29u
Y2lsaWF0aW9uIHRha2VzIHBsYWNlIGluIGEgd29ya2VyIHRocmVhZC5cbiAqIC0gSW52b2tpbmcg
YW55IGNvbGxlY3RlZCBgY29tcG9uZW50RGlkVXBkYXRlYCBjYWxsYmFja3MgYWZ0ZXIgcmVuZGVy
aW5nIG5ld1xuICogICBjb250ZW50LlxuICogLSAoRnV0dXJlIHVzZSBjYXNlKTogV3JhcHBpbmcg
cGFydGljdWxhciBmbHVzaGVzIG9mIHRoZSBgUmVhY3RXb3JrZXJgIHF1ZXVlXG4gKiAgIHRvIHBy
ZXNlcnZlIHRoZSBgc2Nyb2xsVG9wYCAoYW4gYXV0b21hdGljIHNjcm9sbCBhd2FyZSBET00pLlxu
ICogLSAoRnV0dXJlIHVzZSBjYXNlKTogTGF5b3V0IGNhbGN1bGF0aW9ucyBiZWZvcmUgYW5kIGFm
dGVyIERPTSB1cGRhdGVzLlxuICpcbiAqIFRyYW5zYWN0aW9uYWwgcGx1Z2luIEFQSTpcbiAqIC0g
QSBtb2R1bGUgdGhhdCBoYXMgYW4gYGluaXRpYWxpemVgIG1ldGhvZCB0aGF0IHJldHVybnMgYW55
IHByZWNvbXB1dGF0aW9uLlxuICogLSBhbmQgYSBgY2xvc2VgIG1ldGhvZCB0aGF0IGFjY2VwdHMg
dGhlIHByZWNvbXB1dGF0aW9uLiBgY2xvc2VgIGlzIGludm9rZWRcbiAqICAgd2hlbiB0aGUgd3Jh
cHBlZCBwcm9jZXNzIGlzIGNvbXBsZXRlZCwgb3IgaGFzIGZhaWxlZC5cbiAqXG4gKiBAcGFyYW0g
e0FycmF5PFRyYW5zYWN0aW9uYWxXcmFwcGVyPn0gdHJhbnNhY3Rpb25XcmFwcGVyIFdyYXBwZXIg
bW9kdWxlc1xuICogdGhhdCBpbXBsZW1lbnQgYGluaXRpYWxpemVgIGFuZCBgY2xvc2VgLlxuICog
QHJldHVybiB7VHJhbnNhY3Rpb259IFNpbmdsZSB0cmFuc2FjdGlvbiBmb3IgcmV1c2UgaW4gdGhy
ZWFkLlxuICpcbiAqIEBjbGFzcyBUcmFuc2FjdGlvblxuICovXG52YXIgVHJhbnNhY3Rpb25JbXBs
ID0ge1xuICAvKipcbiAgICogU2V0cyB1cCB0aGlzIGluc3RhbmNlIHNvIHRoYXQgaXQgaXMgcHJl
cGFyZWQgZm9yIGNvbGxlY3RpbmcgbWV0cmljcy4gRG9lc1xuICAgKiBzbyBzdWNoIHRoYXQgdGhp
cyBzZXR1cCBtZXRob2QgbWF5IGJlIHVzZWQgb24gYW4gaW5zdGFuY2UgdGhhdCBpcyBhbHJlYWR5
XG4gICAqIGluaXRpYWxpemVkLCBpbiBhIHdheSB0aGF0IGRvZXMgbm90IGNvbnN1bWUgYWRkaXRp
b25hbCBtZW1vcnkgdXBvbiByZXVzZS5cbiAgICogVGhhdCBjYW4gYmUgdXNlZnVsIGlmIHlvdSBk
ZWNpZGUgdG8gbWFrZSB5b3VyIHN1YmNsYXNzIG9mIHRoaXMgbWl4aW4gYVxuICAgKiBcIlBvb2xl
ZENsYXNzXCIuXG4gICAqL1xuICByZWluaXRpYWxpemVUcmFuc2FjdGlvbjogZnVuY3Rpb24gKCkg
e1xuICAgIHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycyA9IHRoaXMuZ2V0VHJhbnNhY3Rpb25XcmFw
cGVycygpO1xuICAgIGlmICh0aGlzLndyYXBwZXJJbml0RGF0YSkge1xuICAgICAgdGhpcy53cmFw
cGVySW5pdERhdGEubGVuZ3RoID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53cmFwcGVy
SW5pdERhdGEgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5faXNJblRyYW5zYWN0aW9uID0gZmFsc2U7
XG4gIH0sXG5cbiAgX2lzSW5UcmFuc2FjdGlvbjogZmFsc2UsXG5cbiAgLyoqXG4gICAqIEBhYnN0
cmFjdFxuICAgKiBAcmV0dXJuIHtBcnJheTxUcmFuc2FjdGlvbldyYXBwZXI+fSBBcnJheSBvZiB0
cmFuc2FjdGlvbiB3cmFwcGVycy5cbiAgICovXG4gIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IG51
bGwsXG5cbiAgaXNJblRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICEhdGhp
cy5faXNJblRyYW5zYWN0aW9uO1xuICB9LFxuXG4gIC8qIGVzbGludC1kaXNhYmxlIHNwYWNlLWJl
Zm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgZnVuY3Rp
b24gd2l0aGluIGEgc2FmZXR5IHdpbmRvdy4gVXNlIHRoaXMgZm9yIHRoZSB0b3AgbGV2ZWxcbiAg
ICogbWV0aG9kcyB0aGF0IHJlc3VsdCBpbiBsYXJnZSBhbW91bnRzIG9mIGNvbXB1dGF0aW9uL211
dGF0aW9ucyB0aGF0IHdvdWxkXG4gICAqIG5lZWQgdG8gYmUgc2FmZXR5IGNoZWNrZWQuIFRoZSBv
cHRpb25hbCBhcmd1bWVudHMgaGVscHMgcHJldmVudCB0aGUgbmVlZFxuICAgKiB0byBiaW5kIGlu
IG1hbnkgY2FzZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZCBNZW1iZXIg
b2Ygc2NvcGUgdG8gY2FsbC5cbiAgICogQHBhcmFtIHtPYmplY3R9IHNjb3BlIFNjb3BlIHRvIGlu
dm9rZSBmcm9tLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBhIEFyZ3VtZW50IHRvIHBhc3MgdG8g
dGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gYiBBcmd1bWVudCB0byBwYXNzIHRv
IHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGMgQXJndW1lbnQgdG8gcGFzcyB0
byB0aGUgbWV0aG9kLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBkIEFyZ3VtZW50IHRvIHBhc3Mg
dG8gdGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gZSBBcmd1bWVudCB0byBwYXNz
IHRvIHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGYgQXJndW1lbnQgdG8gcGFz
cyB0byB0aGUgbWV0aG9kLlxuICAgKlxuICAgKiBAcmV0dXJuIHsqfSBSZXR1cm4gdmFsdWUgZnJv
bSBgbWV0aG9kYC5cbiAgICovXG4gIHBlcmZvcm06IGZ1bmN0aW9uIChtZXRob2QsIHNjb3BlLCBh
LCBiLCBjLCBkLCBlLCBmKSB7XG4gICAgLyogZXNsaW50LWVuYWJsZSBzcGFjZS1iZWZvcmUtZnVu
Y3Rpb24tcGFyZW4gKi9cbiAgICAhIXRoaXMuaXNJblRyYW5zYWN0aW9uKCkgPyBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVHJhbnNhY3Rp
b24ucGVyZm9ybSguLi4pOiBDYW5ub3QgaW5pdGlhbGl6ZSBhIHRyYW5zYWN0aW9uIHdoZW4gdGhl
cmUgaXMgYWxyZWFkeSBhbiBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbi4nKSA6IF9wcm9kSW52YXJp
YW50KCcyNycpIDogdm9pZCAwO1xuICAgIHZhciBlcnJvclRocm93bjtcbiAgICB2YXIgcmV0O1xu
ICAgIHRyeSB7XG4gICAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSB0cnVlO1xuICAgICAgLy8g
Q2F0Y2hpbmcgZXJyb3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3VsdCwgc28gd2Ugc3Rh
cnQgd2l0aFxuICAgICAgLy8gZXJyb3JUaHJvd24gc2V0IHRvIHRydWUgYmVmb3JlIHNldHRpbmcg
aXQgdG8gZmFsc2UgYWZ0ZXIgY2FsbGluZ1xuICAgICAgLy8gY2xvc2UgLS0gaWYgaXQncyBzdGls
bCBzZXQgdG8gdHJ1ZSBpbiB0aGUgZmluYWxseSBibG9jaywgaXQgbWVhbnNcbiAgICAgIC8vIG9u
ZSBvZiB0aGVzZSBjYWxscyB0aHJldy5cbiAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTtcbiAgICAg
IHRoaXMuaW5pdGlhbGl6ZUFsbCgwKTtcbiAgICAgIHJldCA9IG1ldGhvZC5jYWxsKHNjb3BlLCBh
LCBiLCBjLCBkLCBlLCBmKTtcbiAgICAgIGVycm9yVGhyb3duID0gZmFsc2U7XG4gICAgfSBmaW5h
bGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChlcnJvclRocm93bikge1xuICAgICAgICAg
IC8vIElmIGBtZXRob2RgIHRocm93cywgcHJlZmVyIHRvIHNob3cgdGhhdCBzdGFjayB0cmFjZSBv
dmVyIGFueSB0aHJvd25cbiAgICAgICAgICAvLyBieSBpbnZva2luZyBgY2xvc2VBbGxgLlxuICAg
ICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlQWxsKDApO1xuICAgICAgICAgIH0g
Y2F0Y2ggKGVycikge31cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTaW5jZSBgbWV0
aG9kYCBkaWRuJ3QgdGhyb3csIHdlIGRvbid0IHdhbnQgdG8gc2lsZW5jZSB0aGUgZXhjZXB0aW9u
XG4gICAgICAgICAgLy8gaGVyZS5cbiAgICAgICAgICB0aGlzLmNsb3NlQWxsKDApO1xuICAgICAg
ICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSBm
YWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBpbml0aWFs
aXplQWxsOiBmdW5jdGlvbiAoc3RhcnRJbmRleCkge1xuICAgIHZhciB0cmFuc2FjdGlvbldyYXBw
ZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzO1xuICAgIGZvciAodmFyIGkgPSBzdGFydElu
ZGV4OyBpIDwgdHJhbnNhY3Rpb25XcmFwcGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHdy
YXBwZXIgPSB0cmFuc2FjdGlvbldyYXBwZXJzW2ldO1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8g
Q2F0Y2hpbmcgZXJyb3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3VsdCwgc28gd2Ugc3Rh
cnQgd2l0aCB0aGVcbiAgICAgICAgLy8gT0JTRVJWRURfRVJST1Igc3RhdGUgYmVmb3JlIG92ZXJ3
cml0aW5nIGl0IHdpdGggdGhlIHJlYWwgcmV0dXJuIHZhbHVlXG4gICAgICAgIC8vIG9mIGluaXRp
YWxpemUgLS0gaWYgaXQncyBzdGlsbCBzZXQgdG8gT0JTRVJWRURfRVJST1IgaW4gdGhlIGZpbmFs
bHlcbiAgICAgICAgLy8gYmxvY2ssIGl0IG1lYW5zIHdyYXBwZXIuaW5pdGlhbGl6ZSB0aHJldy5c
biAgICAgICAgdGhpcy53cmFwcGVySW5pdERhdGFbaV0gPSBPQlNFUlZFRF9FUlJPUjtcbiAgICAg
ICAgdGhpcy53cmFwcGVySW5pdERhdGFbaV0gPSB3cmFwcGVyLmluaXRpYWxpemUgPyB3cmFwcGVy
LmluaXRpYWxpemUuY2FsbCh0aGlzKSA6IG51bGw7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAg
ICBpZiAodGhpcy53cmFwcGVySW5pdERhdGFbaV0gPT09IE9CU0VSVkVEX0VSUk9SKSB7XG4gICAg
ICAgICAgLy8gVGhlIGluaXRpYWxpemVyIGZvciB3cmFwcGVyIGkgdGhyZXcgYW4gZXJyb3I7IGlu
aXRpYWxpemUgdGhlXG4gICAgICAgICAgLy8gcmVtYWluaW5nIHdyYXBwZXJzIGJ1dCBzaWxlbmNl
IGFueSBleGNlcHRpb25zIGZyb20gdGhlbSB0byBlbnN1cmVcbiAgICAgICAgICAvLyB0aGF0IHRo
ZSBmaXJzdCBlcnJvciBpcyB0aGUgb25lIHRvIGJ1YmJsZSB1cC5cbiAgICAgICAgICB0cnkge1xu
ICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQWxsKGkgKyAxKTtcbiAgICAgICAgICB9IGNhdGNo
IChlcnIpIHt9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAq
IEludm9rZXMgZWFjaCBvZiBgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLmNsb3NlW2ldYCBmdW5j
dGlvbnMsIHBhc3NpbmcgaW50b1xuICAgKiB0aGVtIHRoZSByZXNwZWN0aXZlIHJldHVybiB2YWx1
ZXMgb2YgYHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycy5pbml0W2ldYFxuICAgKiAoYGNsb3NlYHJz
IHRoYXQgY29ycmVzcG9uZCB0byBpbml0aWFsaXplcnMgdGhhdCBmYWlsZWQgd2lsbCBub3QgYmVc
biAgICogaW52b2tlZCkuXG4gICAqL1xuICBjbG9zZUFsbDogZnVuY3Rpb24gKHN0YXJ0SW5kZXgp
IHtcbiAgICAhdGhpcy5pc0luVHJhbnNhY3Rpb24oKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUcmFuc2FjdGlvbi5jbG9zZUFsbCgp
OiBDYW5ub3QgY2xvc2UgdHJhbnNhY3Rpb24gd2hlbiBub25lIGFyZSBvcGVuLicpIDogX3Byb2RJ
bnZhcmlhbnQoJzI4JykgOiB2b2lkIDA7XG4gICAgdmFyIHRyYW5zYWN0aW9uV3JhcHBlcnMgPSB0
aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkg
PCB0cmFuc2FjdGlvbldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgd3JhcHBlciA9
IHRyYW5zYWN0aW9uV3JhcHBlcnNbaV07XG4gICAgICB2YXIgaW5pdERhdGEgPSB0aGlzLndyYXBw
ZXJJbml0RGF0YVtpXTtcbiAgICAgIHZhciBlcnJvclRocm93bjtcbiAgICAgIHRyeSB7XG4gICAg
ICAgIC8vIENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBkaWZmaWN1bHQsIHNv
IHdlIHN0YXJ0IHdpdGhcbiAgICAgICAgLy8gZXJyb3JUaHJvd24gc2V0IHRvIHRydWUgYmVmb3Jl
IHNldHRpbmcgaXQgdG8gZmFsc2UgYWZ0ZXIgY2FsbGluZ1xuICAgICAgICAvLyBjbG9zZSAtLSBp
ZiBpdCdzIHN0aWxsIHNldCB0byB0cnVlIGluIHRoZSBmaW5hbGx5IGJsb2NrLCBpdCBtZWFuc1xu
ICAgICAgICAvLyB3cmFwcGVyLmNsb3NlIHRocmV3LlxuICAgICAgICBlcnJvclRocm93biA9IHRy
dWU7XG4gICAgICAgIGlmIChpbml0RGF0YSAhPT0gT0JTRVJWRURfRVJST1IgJiYgd3JhcHBlci5j
bG9zZSkge1xuICAgICAgICAgIHdyYXBwZXIuY2xvc2UuY2FsbCh0aGlzLCBpbml0RGF0YSk7XG4g
ICAgICAgIH1cbiAgICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTtcbiAgICAgIH0gZmluYWxseSB7
XG4gICAgICAgIGlmIChlcnJvclRocm93bikge1xuICAgICAgICAgIC8vIFRoZSBjbG9zZXIgZm9y
IHdyYXBwZXIgaSB0aHJldyBhbiBlcnJvcjsgY2xvc2UgdGhlIHJlbWFpbmluZ1xuICAgICAgICAg
IC8vIHdyYXBwZXJzIGJ1dCBzaWxlbmNlIGFueSBleGNlcHRpb25zIGZyb20gdGhlbSB0byBlbnN1
cmUgdGhhdCB0aGVcbiAgICAgICAgICAvLyBmaXJzdCBlcnJvciBpcyB0aGUgb25lIHRvIGJ1YmJs
ZSB1cC5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUFsbChpICsgMSk7
XG4gICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAg
ICB0aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGggPSAwO1xuICB9XG59O1xuXG5tb2R1bGUuZXhw
b3J0cyA9IFRyYW5zYWN0aW9uSW1wbDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBB
Q0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1RyYW5zYWN0aW9uLmpz
XG4vLyBtb2R1bGUgaWQgPSAyNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljVUlFdmVu
dCA9IHJlcXVpcmUoJy4vU3ludGhldGljVUlFdmVudCcpO1xudmFyIFZpZXdwb3J0TWV0cmljcyA9
IHJlcXVpcmUoJy4vVmlld3BvcnRNZXRyaWNzJyk7XG5cbnZhciBnZXRFdmVudE1vZGlmaWVyU3Rh
dGUgPSByZXF1aXJlKCcuL2dldEV2ZW50TW9kaWZpZXJTdGF0ZScpO1xuXG4vKipcbiAqIEBpbnRl
cmZhY2UgTW91c2VFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwt
My1FdmVudHMvXG4gKi9cbnZhciBNb3VzZUV2ZW50SW50ZXJmYWNlID0ge1xuICBzY3JlZW5YOiBu
dWxsLFxuICBzY3JlZW5ZOiBudWxsLFxuICBjbGllbnRYOiBudWxsLFxuICBjbGllbnRZOiBudWxs
LFxuICBjdHJsS2V5OiBudWxsLFxuICBzaGlmdEtleTogbnVsbCxcbiAgYWx0S2V5OiBudWxsLFxu
ICBtZXRhS2V5OiBudWxsLFxuICBnZXRNb2RpZmllclN0YXRlOiBnZXRFdmVudE1vZGlmaWVyU3Rh
dGUsXG4gIGJ1dHRvbjogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgLy8gV2Via2l0LCBGaXJlZm94
LCBJRTkrXG4gICAgLy8gd2hpY2g6ICAxIDIgM1xuICAgIC8vIGJ1dHRvbjogMCAxIDIgKHN0YW5k
YXJkKVxuICAgIHZhciBidXR0b24gPSBldmVudC5idXR0b247XG4gICAgaWYgKCd3aGljaCcgaW4g
ZXZlbnQpIHtcbiAgICAgIHJldHVybiBidXR0b247XG4gICAgfVxuICAgIC8vIElFPDlcbiAgICAv
LyB3aGljaDogIHVuZGVmaW5lZFxuICAgIC8vIGJ1dHRvbjogMCAwIDBcbiAgICAvLyBidXR0b246
IDEgNCAyIChvbm1vdXNldXApXG4gICAgcmV0dXJuIGJ1dHRvbiA9PT0gMiA/IDIgOiBidXR0b24g
PT09IDQgPyAxIDogMDtcbiAgfSxcbiAgYnV0dG9uczogbnVsbCxcbiAgcmVsYXRlZFRhcmdldDog
ZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuIGV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgKGV2
ZW50LmZyb21FbGVtZW50ID09PSBldmVudC5zcmNFbGVtZW50ID8gZXZlbnQudG9FbGVtZW50IDog
ZXZlbnQuZnJvbUVsZW1lbnQpO1xuICB9LFxuICAvLyBcIlByb3ByaWV0YXJ5XCIgSW50ZXJmYWNl
LlxuICBwYWdlWDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuICdwYWdlWCcgaW4gZXZl
bnQgPyBldmVudC5wYWdlWCA6IGV2ZW50LmNsaWVudFggKyBWaWV3cG9ydE1ldHJpY3MuY3VycmVu
dFNjcm9sbExlZnQ7XG4gIH0sXG4gIHBhZ2VZOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1
cm4gJ3BhZ2VZJyBpbiBldmVudCA/IGV2ZW50LnBhZ2VZIDogZXZlbnQuY2xpZW50WSArIFZpZXdw
b3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsVG9wO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7
b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhp
cyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRp
ZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBO
YXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICov
XG5mdW5jdGlvbiBTeW50aGV0aWNNb3VzZUV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1h
cmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBTeW50aGV0
aWNVSUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNVSUV2ZW50LmF1Z21l
bnRDbGFzcyhTeW50aGV0aWNNb3VzZUV2ZW50LCBNb3VzZUV2ZW50SW50ZXJmYWNlKTtcblxubW9k
dWxlLmV4cG9ydHMgPSBTeW50aGV0aWNNb3VzZUV2ZW50O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8v
L1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU3lu
dGhldGljTW91c2VFdmVudC5qc1xuLy8gbW9kdWxlIGlkID0gMjVcbi8vIG1vZHVsZSBjaHVua3Mg
PSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztcblxu
dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52
aXJvbm1lbnQnKTtcbnZhciBET01OYW1lc3BhY2VzID0gcmVxdWlyZSgnLi9ET01OYW1lc3BhY2Vz
Jyk7XG5cbnZhciBXSElURVNQQUNFX1RFU1QgPSAvXlsgXFxyXFxuXFx0XFxmXS87XG52YXIgTk9O
VklTSUJMRV9URVNUID0gLzwoIS0tfGxpbmt8bm9zY3JpcHR8bWV0YXxzY3JpcHR8c3R5bGUpWyBc
XHJcXG5cXHRcXGZcXC8+XS87XG5cbnZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0
aW9uID0gcmVxdWlyZSgnLi9jcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uJyk7XG5c
bi8vIFNWRyB0ZW1wIGNvbnRhaW5lciBmb3IgSUUgbGFja2luZyBpbm5lckhUTUxcbnZhciByZXVz
YWJsZVNWR0NvbnRhaW5lcjtcblxuLyoqXG4gKiBTZXQgdGhlIGlubmVySFRNTCBwcm9wZXJ0eSBv
ZiBhIG5vZGUsIGVuc3VyaW5nIHRoYXQgd2hpdGVzcGFjZSBpcyBwcmVzZXJ2ZWRcbiAqIGV2ZW4g
aW4gSUU4LlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICogQHBhcmFtIHtzdHJp
bmd9IGh0bWxcbiAqIEBpbnRlcm5hbFxuICovXG52YXIgc2V0SW5uZXJIVE1MID0gY3JlYXRlTWlj
cm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbiAobm9kZSwgaHRtbCkge1xuICAvLyBJ
RSBkb2VzIG5vdCBoYXZlIGlubmVySFRNTCBmb3IgU1ZHIG5vZGVzLCBzbyBpbnN0ZWFkIHdlIGlu
amVjdCB0aGVcbiAgLy8gbmV3IG1hcmt1cCBpbiBhIHRlbXAgbm9kZSBhbmQgdGhlbiBtb3ZlIHRo
ZSBjaGlsZCBub2RlcyBhY3Jvc3MgaW50b1xuICAvLyB0aGUgdGFyZ2V0IG5vZGVcbiAgaWYgKG5v
ZGUubmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLnN2ZyAmJiAhKCdpbm5lckhUTUwnIGlu
IG5vZGUpKSB7XG4gICAgcmV1c2FibGVTVkdDb250YWluZXIgPSByZXVzYWJsZVNWR0NvbnRhaW5l
ciB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICByZXVzYWJsZVNWR0NvbnRh
aW5lci5pbm5lckhUTUwgPSAnPHN2Zz4nICsgaHRtbCArICc8L3N2Zz4nO1xuICAgIHZhciBzdmdO
b2RlID0gcmV1c2FibGVTVkdDb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICB3aGlsZSAoc3ZnTm9k
ZS5maXJzdENoaWxkKSB7XG4gICAgICBub2RlLmFwcGVuZENoaWxkKHN2Z05vZGUuZmlyc3RDaGls
ZCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG5vZGUuaW5uZXJIVE1MID0gaHRtbDtcbiAgfVxu
fSk7XG5cbmlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAgLy8gSUU4OiBX
aGVuIHVwZGF0aW5nIGEganVzdCBjcmVhdGVkIG5vZGUgd2l0aCBpbm5lckhUTUwgb25seSBsZWFk
aW5nXG4gIC8vIHdoaXRlc3BhY2UgaXMgcmVtb3ZlZC4gV2hlbiB1cGRhdGluZyBhbiBleGlzdGlu
ZyBub2RlIHdpdGggaW5uZXJIVE1MXG4gIC8vIHdoaXRlc3BhY2UgaW4gcm9vdCBUZXh0Tm9kZXMg
aXMgYWxzbyBjb2xsYXBzZWQuXG4gIC8vIEBzZWUgcXVpcmtzbW9kZS5vcmcvYnVncmVwb3J0cy9h
cmNoaXZlcy8yMDA0LzExL2lubmVyaHRtbF9hbmRfdC5odG1sXG5cbiAgLy8gRmVhdHVyZSBkZXRl
Y3Rpb247IG9ubHkgSUU4IGlzIGtub3duIHRvIGJlaGF2ZSBpbXByb3Blcmx5IGxpa2UgdGhpcy5c
biAgdmFyIHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHRl
c3RFbGVtZW50LmlubmVySFRNTCA9ICcgJztcbiAgaWYgKHRlc3RFbGVtZW50LmlubmVySFRNTCA9
PT0gJycpIHtcbiAgICBzZXRJbm5lckhUTUwgPSBmdW5jdGlvbiAobm9kZSwgaHRtbCkge1xuICAg
ICAgLy8gTWFnaWMgdGhlb3J5OiBJRTggc3VwcG9zZWRseSBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVu
IGFkZGVkIGFuZCB1cGRhdGVkXG4gICAgICAvLyBub2RlcyB3aGVuIHByb2Nlc3NpbmcgaW5uZXJI
VE1MLCBpbm5lckhUTUwgb24gdXBkYXRlZCBub2RlcyBzdWZmZXJzXG4gICAgICAvLyBmcm9tIHdv
cnNlIHdoaXRlc3BhY2UgYmVoYXZpb3IuIFJlLWFkZGluZyBhIG5vZGUgbGlrZSB0aGlzIHRyaWdn
ZXJzXG4gICAgICAvLyB0aGUgaW5pdGlhbCBhbmQgbW9yZSBmYXZvcmFibGUgd2hpdGVzcGFjZSBi
ZWhhdmlvci5cbiAgICAgIC8vIFRPRE86IFdoYXQgdG8gZG8gb24gYSBkZXRhY2hlZCBub2RlP1xu
ICAgICAgaWYgKG5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgICBub2RlLnBhcmVudE5vZGUucmVw
bGFjZUNoaWxkKG5vZGUsIG5vZGUpO1xuICAgICAgfVxuXG4gICAgICAvLyBXZSBhbHNvIGltcGxl
bWVudCBhIHdvcmthcm91bmQgZm9yIG5vbi12aXNpYmxlIHRhZ3MgZGlzYXBwZWFyaW5nIGludG9c
biAgICAgIC8vIHRoaW4gYWlyIG9uIElFOCwgdGhpcyBvbmx5IGhhcHBlbnMgaWYgdGhlcmUgaXMg
bm8gdmlzaWJsZSB0ZXh0XG4gICAgICAvLyBpbi1mcm9udCBvZiB0aGUgbm9uLXZpc2libGUgdGFn
cy4gUGlnZ3liYWNrIG9uIHRoZSB3aGl0ZXNwYWNlIGZpeFxuICAgICAgLy8gYW5kIHNpbXBseSBj
aGVjayBpZiBhbnkgbm9uLXZpc2libGUgdGFncyBhcHBlYXIgaW4gdGhlIHNvdXJjZS5cbiAgICAg
IGlmIChXSElURVNQQUNFX1RFU1QudGVzdChodG1sKSB8fCBodG1sWzBdID09PSAnPCcgJiYgTk9O
VklTSUJMRV9URVNULnRlc3QoaHRtbCkpIHtcbiAgICAgICAgLy8gUmVjb3ZlciBsZWFkaW5nIHdo
aXRlc3BhY2UgYnkgdGVtcG9yYXJpbHkgcHJlcGVuZGluZyBhbnkgY2hhcmFjdGVyLlxuICAgICAg
ICAvLyBcXHVGRUZGIGhhcyB0aGUgcG90ZW50aWFsIGFkdmFudGFnZSBvZiBiZWluZyB6ZXJvLXdp
ZHRoL2ludmlzaWJsZS5cbiAgICAgICAgLy8gVWdsaWZ5SlMgZHJvcHMgVStGRUZGIGNoYXJzIHdo
ZW4gcGFyc2luZywgc28gdXNlIFN0cmluZy5mcm9tQ2hhckNvZGVcbiAgICAgICAgLy8gaW4gaG9w
ZXMgdGhhdCB0aGlzIGlzIHByZXNlcnZlZCBldmVuIGlmIFwiXFx1RkVGRlwiIGlzIHRyYW5zZm9y
bWVkIHRvXG4gICAgICAgIC8vIHRoZSBhY3R1YWwgVW5pY29kZSBjaGFyYWN0ZXIgKGJ5IEJhYmVs
LCBmb3IgZXhhbXBsZSkuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9taXNob28vVWds
aWZ5SlMyL2Jsb2IvdjIuNC4yMC9saWIvcGFyc2UuanMjTDIxNlxuICAgICAgICBub2RlLmlubmVy
SFRNTCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmZWZmKSArIGh0bWw7XG5cbiAgICAgICAgLy8g
ZGVsZXRlRGF0YSBsZWF2ZXMgYW4gZW1wdHkgYFRleHROb2RlYCB3aGljaCBvZmZzZXRzIHRoZSBp
bmRleCBvZiBhbGxcbiAgICAgICAgLy8gY2hpbGRyZW4uIERlZmluaXRlbHkgd2FudCB0byBhdm9p
ZCB0aGlzLlxuICAgICAgICB2YXIgdGV4dE5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7XG4gICAgICAg
IGlmICh0ZXh0Tm9kZS5kYXRhLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIG5vZGUucmVtb3Zl
Q2hpbGQodGV4dE5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRleHROb2RlLmRl
bGV0ZURhdGEoMCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUu
aW5uZXJIVE1MID0gaHRtbDtcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIHRlc3RFbGVtZW50ID0g
bnVsbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRJbm5lckhUTUw7XG5cblxuLy8vLy8vLy8v
Ly8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9zZXRJbm5lckhUTUwuanNcbi8vIG1vZHVsZSBpZCA9IDI2XG4vLyBtb2R1bGUgY2h1bmtz
ID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTYtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEJhc2VkIG9uIHRoZSBlc2NhcGUt
aHRtbCBsaWJyYXJ5LCB3aGljaCBpcyB1c2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSBiZWxvdzpc
biAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJp
Z2h0IChjKSAyMDE1IEFuZHJlYXMgTHViYmVcbiAqIENvcHlyaWdodCAoYykgMjAxNSBUaWFuY2hl
bmcgXCJUaW1vdGh5XCIgR3VcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm
cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmdcbiAqIGEgY29weSBvZiB0aGlz
IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuICogJ1Nv
ZnR3YXJlJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu
Y2x1ZGluZ1xuICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBt
b2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuICogZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y
IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvXG4gKiBwZXJtaXQgcGVyc29ucyB0
byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG9cbiAq
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZVxuICogaW5jbHVkZWQgaW4g
YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxu
ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICdBUyBJUycsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg
QU5ZIEtJTkQsXG4gKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU
RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0ZcbiAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC5cbiAqIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z
XG4gKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULFxuICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VU
IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEVcbiAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig
T1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7
XG5cbi8vIGNvZGUgY29waWVkIGFuZCBtb2RpZmllZCBmcm9tIGVzY2FwZS1odG1sXG4vKipcbiAq
IE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBtYXRjaEh0bWxSZWdF
eHAgPSAvW1wiJyY8Pl0vO1xuXG4vKipcbiAqIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4g
dGhlIGdpdmVuIHN0cmluZyBvZiBodG1sLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gc3RyaW5n
IFRoZSBzdHJpbmcgdG8gZXNjYXBlIGZvciBpbnNlcnRpbmcgaW50byBIVE1MXG4gKiBAcmV0dXJu
IHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZXNjYXBlSHRtbChzdHJpbmcp
IHtcbiAgdmFyIHN0ciA9ICcnICsgc3RyaW5nO1xuICB2YXIgbWF0Y2ggPSBtYXRjaEh0bWxSZWdF
eHAuZXhlYyhzdHIpO1xuXG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG5c
biAgdmFyIGVzY2FwZTtcbiAgdmFyIGh0bWwgPSAnJztcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFy
IGxhc3RJbmRleCA9IDA7XG5cbiAgZm9yIChpbmRleCA9IG1hdGNoLmluZGV4OyBpbmRleCA8IHN0
ci5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGluZGV4KSkg
e1xuICAgICAgY2FzZSAzNDpcbiAgICAgICAgLy8gXCJcbiAgICAgICAgZXNjYXBlID0gJyZxdW90
Oyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzODpcbiAgICAgICAgLy8gJlxuICAgICAg
ICBlc2NhcGUgPSAnJmFtcDsnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzk6XG4gICAg
ICAgIC8vICdcbiAgICAgICAgZXNjYXBlID0gJyYjeDI3Oyc7IC8vIG1vZGlmaWVkIGZyb20gZXNj
YXBlLWh0bWw7IHVzZWQgdG8gYmUgJyYjMzknXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA2
MDpcbiAgICAgICAgLy8gPFxuICAgICAgICBlc2NhcGUgPSAnJmx0Oyc7XG4gICAgICAgIGJyZWFr
O1xuICAgICAgY2FzZSA2MjpcbiAgICAgICAgLy8gPlxuICAgICAgICBlc2NhcGUgPSAnJmd0Oyc7
XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29udGludWU7XG4gICAg
fVxuXG4gICAgaWYgKGxhc3RJbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgIGh0bWwgKz0gc3RyLnN1
YnN0cmluZyhsYXN0SW5kZXgsIGluZGV4KTtcbiAgICB9XG5cbiAgICBsYXN0SW5kZXggPSBpbmRl
eCArIDE7XG4gICAgaHRtbCArPSBlc2NhcGU7XG4gIH1cblxuICByZXR1cm4gbGFzdEluZGV4ICE9
PSBpbmRleCA/IGh0bWwgKyBzdHIuc3Vic3RyaW5nKGxhc3RJbmRleCwgaW5kZXgpIDogaHRtbDtc
bn1cbi8vIGVuZCBjb2RlIGNvcGllZCBhbmQgbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbFxuXG4v
KipcbiAqIEVzY2FwZXMgdGV4dCB0byBwcmV2ZW50IHNjcmlwdGluZyBhdHRhY2tzLlxuICpcbiAq
IEBwYXJhbSB7Kn0gdGV4dCBUZXh0IHZhbHVlIHRvIGVzY2FwZS5cbiAqIEByZXR1cm4ge3N0cmlu
Z30gQW4gZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZVRleHRDb250ZW50Rm9y
QnJvd3Nlcih0ZXh0KSB7XG4gIGlmICh0eXBlb2YgdGV4dCA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGVv
ZiB0ZXh0ID09PSAnbnVtYmVyJykge1xuICAgIC8vIHRoaXMgc2hvcnRjaXJjdWl0IGhlbHBzIHBl
cmYgZm9yIHR5cGVzIHRoYXQgd2Uga25vdyB3aWxsIG5ldmVyIGhhdmVcbiAgICAvLyBzcGVjaWFs
IGNoYXJhY3RlcnMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQg
b2Z0ZW5cbiAgICAvLyBmb3IgbnVtZXJpYyBkb20gaWRzLlxuICAgIHJldHVybiAnJyArIHRleHQ7
XG4gIH1cbiAgcmV0dXJuIGVzY2FwZUh0bWwodGV4dCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0g
ZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8g
V0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZXNjYXBlVGV4
dENvbnRlbnRGb3JCcm93c2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5r
cyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIEV2ZW50UGx1
Z2luUmVnaXN0cnkgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luUmVnaXN0cnknKTtcbnZhciBSZWFj
dEV2ZW50RW1pdHRlck1peGluID0gcmVxdWlyZSgnLi9SZWFjdEV2ZW50RW1pdHRlck1peGluJyk7
XG52YXIgVmlld3BvcnRNZXRyaWNzID0gcmVxdWlyZSgnLi9WaWV3cG9ydE1ldHJpY3MnKTtcblxu
dmFyIGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lID0gcmVxdWlyZSgnLi9nZXRWZW5kb3JQcmVm
aXhlZEV2ZW50TmFtZScpO1xudmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSByZXF1aXJlKCcuL2lzRXZl
bnRTdXBwb3J0ZWQnKTtcblxuLyoqXG4gKiBTdW1tYXJ5IG9mIGBSZWFjdEJyb3dzZXJFdmVudEVt
aXR0ZXJgIGV2ZW50IGhhbmRsaW5nOlxuICpcbiAqICAtIFRvcC1sZXZlbCBkZWxlZ2F0aW9uIGlz
IHVzZWQgdG8gdHJhcCBtb3N0IG5hdGl2ZSBicm93c2VyIGV2ZW50cy4gVGhpc1xuICogICAgbWF5
IG9ubHkgb2NjdXIgaW4gdGhlIG1haW4gdGhyZWFkIGFuZCBpcyB0aGUgcmVzcG9uc2liaWxpdHkg
b2ZcbiAqICAgIFJlYWN0RXZlbnRMaXN0ZW5lciwgd2hpY2ggaXMgaW5qZWN0ZWQgYW5kIGNhbiB0
aGVyZWZvcmUgc3VwcG9ydCBwbHVnZ2FibGVcbiAqICAgIGV2ZW50IHNvdXJjZXMuIFRoaXMgaXMg
dGhlIG9ubHkgd29yayB0aGF0IG9jY3VycyBpbiB0aGUgbWFpbiB0aHJlYWQuXG4gKlxuICogIC0g
V2Ugbm9ybWFsaXplIGFuZCBkZS1kdXBsaWNhdGUgZXZlbnRzIHRvIGFjY291bnQgZm9yIGJyb3dz
ZXIgcXVpcmtzLiBUaGlzXG4gKiAgICBtYXkgYmUgZG9uZSBpbiB0aGUgd29ya2VyIHRocmVhZC5c
biAqXG4gKiAgLSBGb3J3YXJkIHRoZXNlIG5hdGl2ZSBldmVudHMgKHdpdGggdGhlIGFzc29jaWF0
ZWQgdG9wLWxldmVsIHR5cGUgdXNlZCB0b1xuICogICAgdHJhcCBpdCkgdG8gYEV2ZW50UGx1Z2lu
SHViYCwgd2hpY2ggaW4gdHVybiB3aWxsIGFzayBwbHVnaW5zIGlmIHRoZXkgd2FudFxuICogICAg
dG8gZXh0cmFjdCBhbnkgc3ludGhldGljIGV2ZW50cy5cbiAqXG4gKiAgLSBUaGUgYEV2ZW50UGx1
Z2luSHViYCB3aWxsIHRoZW4gcHJvY2VzcyBlYWNoIGV2ZW50IGJ5IGFubm90YXRpbmcgdGhlbSB3
aXRoXG4gKiAgICBcImRpc3BhdGNoZXNcIiwgYSBzZXF1ZW5jZSBvZiBsaXN0ZW5lcnMgYW5kIElE
cyB0aGF0IGNhcmUgYWJvdXQgdGhhdCBldmVudC5cbiAqXG4gKiAgLSBUaGUgYEV2ZW50UGx1Z2lu
SHViYCB0aGVuIGRpc3BhdGNoZXMgdGhlIGV2ZW50cy5cbiAqXG4gKiBPdmVydmlldyBvZiBSZWFj
dCBhbmQgdGhlIGV2ZW50IHN5c3RlbTpcbiAqXG4gKiArLS0tLS0tLS0tLS0tKyAgICAuXG4gKiB8
ICAgIERPTSAgICAgfCAgICAuXG4gKiArLS0tLS0tLS0tLS0tKyAgICAuXG4gKiAgICAgICB8ICAg
ICAgICAgICAuXG4gKiAgICAgICB2ICAgICAgICAgICAuXG4gKiArLS0tLS0tLS0tLS0tKyAgICAu
XG4gKiB8IFJlYWN0RXZlbnQgfCAgICAuXG4gKiB8ICBMaXN0ZW5lciAgfCAgICAuXG4gKiArLS0t
LS0tLS0tLS0tKyAgICAuICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLStcbiAq
ICAgICAgIHwgICAgICAgICAgIC4gICAgICAgICAgICAgICArLS0tLS0tLS0rfFNpbXBsZUV2ZW50
fFxuICogICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAgIHwgICAgICAgICB8UGx1Z2lu
ICAgICB8XG4gKiArLS0tLS18LS0tLS0tKyAgICAuICAgICAgICAgICAgICAgdiAgICAgICAgICst
LS0tLS0tLS0tLStcbiAqIHwgICAgIHwgICAgICB8ICAgIC4gICAgKy0tLS0tLS0tLS0tLS0tKyAg
ICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLStcbiAqIHwgICAgICstLS0tLS0tLS0tLS4t
LS0+fEV2ZW50UGx1Z2luSHVifCAgICAgICAgICAgICAgICAgICAgfCAgICBFdmVudCAgIHxcbiAq
IHwgICAgICAgICAgICB8ICAgIC4gICAgfCAgICAgICAgICAgICAgfCAgICAgKy0tLS0tLS0tLS0t
KyAgfCBQcm9wYWdhdG9yc3xcbiAqIHwgUmVhY3RFdmVudCB8ICAgIC4gICAgfCAgICAgICAgICAg
ICAgfCAgICAgfFRhcEV2ZW50ICAgfCAgfC0tLS0tLS0tLS0tLXxcbiAqIHwgIEVtaXR0ZXIgICB8
ICAgIC4gICAgfCAgICAgICAgICAgICAgfDwtLS0rfFBsdWdpbiAgICAgfCAgfG90aGVyIHBsdWdp
bnxcbiAqIHwgICAgICAgICAgICB8ICAgIC4gICAgfCAgICAgICAgICAgICAgfCAgICAgKy0tLS0t
LS0tLS0tKyAgfCAgdXRpbGl0aWVzIHxcbiAqIHwgICAgICstLS0tLS0tLS0tLS4tLS0+fCAgICAg
ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLStcbiAqIHwgICAgIHwg
ICAgICB8ICAgIC4gICAgKy0tLS0tLS0tLS0tLS0tK1xuICogKy0tLS0tfC0tLS0tLSsgICAgLiAg
ICAgICAgICAgICAgICBeICAgICAgICArLS0tLS0tLS0tLS0rXG4gKiAgICAgICB8ICAgICAgICAg
ICAuICAgICAgICAgICAgICAgIHwgICAgICAgIHxFbnRlci9MZWF2ZXxcbiAqICAgICAgICsgICAg
ICAgICAgIC4gICAgICAgICAgICAgICAgKy0tLS0tLS0rfFBsdWdpbiAgICAgfFxuICogKy0tLS0t
LS0tLS0tLS0rICAgLiAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rXG4gKiB8
IGFwcGxpY2F0aW9uIHwgICAuXG4gKiB8LS0tLS0tLS0tLS0tLXwgICAuXG4gKiB8ICAgICAgICAg
ICAgIHwgICAuXG4gKiB8ICAgICAgICAgICAgIHwgICAuXG4gKiArLS0tLS0tLS0tLS0tLSsgICAu
XG4gKiAgICAgICAgICAgICAgICAgICAuXG4gKiAgICBSZWFjdCBDb3JlICAgICAuICBHZW5lcmFs
IFB1cnBvc2UgRXZlbnQgUGx1Z2luIFN5c3RlbVxuICovXG5cbnZhciBoYXNFdmVudFBhZ2VYWTtc
bnZhciBhbHJlYWR5TGlzdGVuaW5nVG8gPSB7fTtcbnZhciBpc01vbml0b3JpbmdTY3JvbGxWYWx1
ZSA9IGZhbHNlO1xudmFyIHJlYWN0VG9wTGlzdGVuZXJzQ291bnRlciA9IDA7XG5cbi8vIEZvciBl
dmVudHMgbGlrZSAnc3VibWl0JyB3aGljaCBkb24ndCBjb25zaXN0ZW50bHkgYnViYmxlICh3aGlj
aCB3ZSB0cmFwIGF0IGFcbi8vIGxvd2VyIG5vZGUgdGhhbiBgZG9jdW1lbnRgKSwgYmluZGluZyBh
dCBgZG9jdW1lbnRgIHdvdWxkIGNhdXNlIGR1cGxpY2F0ZVxuLy8gZXZlbnRzIHNvIHdlIGRvbid0
IGluY2x1ZGUgdGhlbSBoZXJlXG52YXIgdG9wRXZlbnRNYXBwaW5nID0ge1xuICB0b3BBYm9ydDog
J2Fib3J0JyxcbiAgdG9wQW5pbWF0aW9uRW5kOiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgn
YW5pbWF0aW9uZW5kJykgfHwgJ2FuaW1hdGlvbmVuZCcsXG4gIHRvcEFuaW1hdGlvbkl0ZXJhdGlv
bjogZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoJ2FuaW1hdGlvbml0ZXJhdGlvbicpIHx8ICdh
bmltYXRpb25pdGVyYXRpb24nLFxuICB0b3BBbmltYXRpb25TdGFydDogZ2V0VmVuZG9yUHJlZml4
ZWRFdmVudE5hbWUoJ2FuaW1hdGlvbnN0YXJ0JykgfHwgJ2FuaW1hdGlvbnN0YXJ0JyxcbiAgdG9w
Qmx1cjogJ2JsdXInLFxuICB0b3BDYW5QbGF5OiAnY2FucGxheScsXG4gIHRvcENhblBsYXlUaHJv
dWdoOiAnY2FucGxheXRocm91Z2gnLFxuICB0b3BDaGFuZ2U6ICdjaGFuZ2UnLFxuICB0b3BDbGlj
azogJ2NsaWNrJyxcbiAgdG9wQ29tcG9zaXRpb25FbmQ6ICdjb21wb3NpdGlvbmVuZCcsXG4gIHRv
cENvbXBvc2l0aW9uU3RhcnQ6ICdjb21wb3NpdGlvbnN0YXJ0JyxcbiAgdG9wQ29tcG9zaXRpb25V
cGRhdGU6ICdjb21wb3NpdGlvbnVwZGF0ZScsXG4gIHRvcENvbnRleHRNZW51OiAnY29udGV4dG1l
bnUnLFxuICB0b3BDb3B5OiAnY29weScsXG4gIHRvcEN1dDogJ2N1dCcsXG4gIHRvcERvdWJsZUNs
aWNrOiAnZGJsY2xpY2snLFxuICB0b3BEcmFnOiAnZHJhZycsXG4gIHRvcERyYWdFbmQ6ICdkcmFn
ZW5kJyxcbiAgdG9wRHJhZ0VudGVyOiAnZHJhZ2VudGVyJyxcbiAgdG9wRHJhZ0V4aXQ6ICdkcmFn
ZXhpdCcsXG4gIHRvcERyYWdMZWF2ZTogJ2RyYWdsZWF2ZScsXG4gIHRvcERyYWdPdmVyOiAnZHJh
Z292ZXInLFxuICB0b3BEcmFnU3RhcnQ6ICdkcmFnc3RhcnQnLFxuICB0b3BEcm9wOiAnZHJvcCcs
XG4gIHRvcER1cmF0aW9uQ2hhbmdlOiAnZHVyYXRpb25jaGFuZ2UnLFxuICB0b3BFbXB0aWVkOiAn
ZW1wdGllZCcsXG4gIHRvcEVuY3J5cHRlZDogJ2VuY3J5cHRlZCcsXG4gIHRvcEVuZGVkOiAnZW5k
ZWQnLFxuICB0b3BFcnJvcjogJ2Vycm9yJyxcbiAgdG9wRm9jdXM6ICdmb2N1cycsXG4gIHRvcElu
cHV0OiAnaW5wdXQnLFxuICB0b3BLZXlEb3duOiAna2V5ZG93bicsXG4gIHRvcEtleVByZXNzOiAn
a2V5cHJlc3MnLFxuICB0b3BLZXlVcDogJ2tleXVwJyxcbiAgdG9wTG9hZGVkRGF0YTogJ2xvYWRl
ZGRhdGEnLFxuICB0b3BMb2FkZWRNZXRhZGF0YTogJ2xvYWRlZG1ldGFkYXRhJyxcbiAgdG9wTG9h
ZFN0YXJ0OiAnbG9hZHN0YXJ0JyxcbiAgdG9wTW91c2VEb3duOiAnbW91c2Vkb3duJyxcbiAgdG9w
TW91c2VNb3ZlOiAnbW91c2Vtb3ZlJyxcbiAgdG9wTW91c2VPdXQ6ICdtb3VzZW91dCcsXG4gIHRv
cE1vdXNlT3ZlcjogJ21vdXNlb3ZlcicsXG4gIHRvcE1vdXNlVXA6ICdtb3VzZXVwJyxcbiAgdG9w
UGFzdGU6ICdwYXN0ZScsXG4gIHRvcFBhdXNlOiAncGF1c2UnLFxuICB0b3BQbGF5OiAncGxheScs
XG4gIHRvcFBsYXlpbmc6ICdwbGF5aW5nJyxcbiAgdG9wUHJvZ3Jlc3M6ICdwcm9ncmVzcycsXG4g
IHRvcFJhdGVDaGFuZ2U6ICdyYXRlY2hhbmdlJyxcbiAgdG9wU2Nyb2xsOiAnc2Nyb2xsJyxcbiAg
dG9wU2Vla2VkOiAnc2Vla2VkJyxcbiAgdG9wU2Vla2luZzogJ3NlZWtpbmcnLFxuICB0b3BTZWxl
Y3Rpb25DaGFuZ2U6ICdzZWxlY3Rpb25jaGFuZ2UnLFxuICB0b3BTdGFsbGVkOiAnc3RhbGxlZCcs
XG4gIHRvcFN1c3BlbmQ6ICdzdXNwZW5kJyxcbiAgdG9wVGV4dElucHV0OiAndGV4dElucHV0Jyxc
biAgdG9wVGltZVVwZGF0ZTogJ3RpbWV1cGRhdGUnLFxuICB0b3BUb3VjaENhbmNlbDogJ3RvdWNo
Y2FuY2VsJyxcbiAgdG9wVG91Y2hFbmQ6ICd0b3VjaGVuZCcsXG4gIHRvcFRvdWNoTW92ZTogJ3Rv
dWNobW92ZScsXG4gIHRvcFRvdWNoU3RhcnQ6ICd0b3VjaHN0YXJ0JyxcbiAgdG9wVHJhbnNpdGlv
bkVuZDogZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoJ3RyYW5zaXRpb25lbmQnKSB8fCAndHJh
bnNpdGlvbmVuZCcsXG4gIHRvcFZvbHVtZUNoYW5nZTogJ3ZvbHVtZWNoYW5nZScsXG4gIHRvcFdh
aXRpbmc6ICd3YWl0aW5nJyxcbiAgdG9wV2hlZWw6ICd3aGVlbCdcbn07XG5cbi8qKlxuICogVG8g
ZW5zdXJlIG5vIGNvbmZsaWN0cyB3aXRoIG90aGVyIHBvdGVudGlhbCBSZWFjdCBpbnN0YW5jZXMg
b24gdGhlIHBhZ2VcbiAqL1xudmFyIHRvcExpc3RlbmVyc0lES2V5ID0gJ19yZWFjdExpc3RlbmVy
c0lEJyArIFN0cmluZyhNYXRoLnJhbmRvbSgpKS5zbGljZSgyKTtcblxuZnVuY3Rpb24gZ2V0TGlz
dGVuaW5nRm9yRG9jdW1lbnQobW91bnRBdCkge1xuICAvLyBJbiBJRTgsIGBtb3VudEF0YCBpcyBh
IGhvc3Qgb2JqZWN0IGFuZCBkb2Vzbid0IGhhdmUgYGhhc093blByb3BlcnR5YFxuICAvLyBkaXJl
Y3RseS5cbiAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW91bnRB
dCwgdG9wTGlzdGVuZXJzSURLZXkpKSB7XG4gICAgbW91bnRBdFt0b3BMaXN0ZW5lcnNJREtleV0g
PSByZWFjdFRvcExpc3RlbmVyc0NvdW50ZXIrKztcbiAgICBhbHJlYWR5TGlzdGVuaW5nVG9bbW91
bnRBdFt0b3BMaXN0ZW5lcnNJREtleV1dID0ge307XG4gIH1cbiAgcmV0dXJuIGFscmVhZHlMaXN0
ZW5pbmdUb1ttb3VudEF0W3RvcExpc3RlbmVyc0lES2V5XV07XG59XG5cbi8qKlxuICogYFJlYWN0
QnJvd3NlckV2ZW50RW1pdHRlcmAgaXMgdXNlZCB0byBhdHRhY2ggdG9wLWxldmVsIGV2ZW50IGxp
c3RlbmVycy4gRm9yXG4gKiBleGFtcGxlOlxuICpcbiAqICAgRXZlbnRQbHVnaW5IdWIucHV0TGlz
dGVuZXIoJ215SUQnLCAnb25DbGljaycsIG15RnVuY3Rpb24pO1xuICpcbiAqIFRoaXMgd291bGQg
YWxsb2NhdGUgYSBcInJlZ2lzdHJhdGlvblwiIG9mIGAoJ29uQ2xpY2snLCBteUZ1bmN0aW9uKWAg
b24gJ215SUQnLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG52YXIgUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyID0gX2Fzc2lnbih7fSwgUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiwge1xuICAvKipcbiAg
ICogSW5qZWN0YWJsZSBldmVudCBiYWNrZW5kXG4gICAqL1xuICBSZWFjdEV2ZW50TGlzdGVuZXI6
IG51bGwsXG5cbiAgaW5qZWN0aW9uOiB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtvYmplY3R9
IFJlYWN0RXZlbnRMaXN0ZW5lclxuICAgICAqL1xuICAgIGluamVjdFJlYWN0RXZlbnRMaXN0ZW5l
cjogZnVuY3Rpb24gKFJlYWN0RXZlbnRMaXN0ZW5lcikge1xuICAgICAgUmVhY3RFdmVudExpc3Rl
bmVyLnNldEhhbmRsZVRvcExldmVsKFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5oYW5kbGVUb3BM
ZXZlbCk7XG4gICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVy
ID0gUmVhY3RFdmVudExpc3RlbmVyO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogU2V0cyB3
aGV0aGVyIG9yIG5vdCBhbnkgY3JlYXRlZCBjYWxsYmFja3Mgc2hvdWxkIGJlIGVuYWJsZWQuXG4g
ICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCBUcnVlIGlmIGNhbGxiYWNrcyBzaG91
bGQgYmUgZW5hYmxlZC5cbiAgICovXG4gIHNldEVuYWJsZWQ6IGZ1bmN0aW9uIChlbmFibGVkKSB7
XG4gICAgaWYgKFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIpIHtc
biAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIuc2V0RW5h
YmxlZChlbmFibGVkKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge2Jvb2xl
YW59IFRydWUgaWYgY2FsbGJhY2tzIGFyZSBlbmFibGVkLlxuICAgKi9cbiAgaXNFbmFibGVkOiBm
dW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICEhKFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFj
dEV2ZW50TGlzdGVuZXIgJiYgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0
ZW5lci5pc0VuYWJsZWQoKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFdlIGxpc3RlbiBmb3IgYnVi
YmxlZCB0b3VjaCBldmVudHMgb24gdGhlIGRvY3VtZW50IG9iamVjdC5cbiAgICpcbiAgICogRmly
ZWZveCB2OC4wMSAoYW5kIHBvc3NpYmx5IG90aGVycykgZXhoaWJpdGVkIHN0cmFuZ2UgYmVoYXZp
b3Igd2hlblxuICAgKiBtb3VudGluZyBgb25tb3VzZW1vdmVgIGV2ZW50cyBhdCBzb21lIG5vZGUg
dGhhdCB3YXMgbm90IHRoZSBkb2N1bWVudFxuICAgKiBlbGVtZW50LiBUaGUgc3ltcHRvbXMgd2Vy
ZSB0aGF0IGlmIHlvdXIgbW91c2UgaXMgbm90IG1vdmluZyBvdmVyIHNvbWV0aGluZ1xuICAgKiBj
b250YWluZWQgd2l0aGluIHRoYXQgbW91bnQgcG9pbnQgKGZvciBleGFtcGxlIG9uIHRoZSBiYWNr
Z3JvdW5kKSB0aGVcbiAgICogdG9wLWxldmVsIGxpc3RlbmVycyBmb3IgYG9ubW91c2Vtb3ZlYCB3
b24ndCBiZSBjYWxsZWQuIEhvd2V2ZXIsIGlmIHlvdVxuICAgKiByZWdpc3RlciB0aGUgYG1vdXNl
bW92ZWAgb24gdGhlIGRvY3VtZW50IG9iamVjdCwgdGhlbiBpdCB3aWxsIG9mIGNvdXJzZVxuICAg
KiBjYXRjaCBhbGwgYG1vdXNlbW92ZWBzLiBUaGlzIGFsb25nIHdpdGggaU9TIHF1aXJrcywganVz
dGlmaWVzIHJlc3RyaWN0aW5nXG4gICAqIHRvcC1sZXZlbCBsaXN0ZW5lcnMgdG8gdGhlIGRvY3Vt
ZW50IG9iamVjdCBvbmx5LCBhdCBsZWFzdCBmb3IgdGhlc2VcbiAgICogbW92ZW1lbnQgdHlwZXMg
b2YgZXZlbnRzIGFuZCBwb3NzaWJseSBhbGwgZXZlbnRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHA6
Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDEwLzA5L2NsaWNrX2V2ZW50X2Rl
bC5odG1sXG4gICAqXG4gICAqIEFsc28sIGBrZXl1cGAvYGtleXByZXNzYC9ga2V5ZG93bmAgZG8g
bm90IGJ1YmJsZSB0byB0aGUgd2luZG93IG9uIElFLCBidXRcbiAgICogdGhleSBidWJibGUgdG8g
ZG9jdW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5h
bWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGNv
bnRlbnREb2N1bWVudEhhbmRsZSBEb2N1bWVudCB3aGljaCBvd25zIHRoZSBjb250YWluZXJcbiAg
ICovXG4gIGxpc3RlblRvOiBmdW5jdGlvbiAocmVnaXN0cmF0aW9uTmFtZSwgY29udGVudERvY3Vt
ZW50SGFuZGxlKSB7XG4gICAgdmFyIG1vdW50QXQgPSBjb250ZW50RG9jdW1lbnRIYW5kbGU7XG4g
ICAgdmFyIGlzTGlzdGVuaW5nID0gZ2V0TGlzdGVuaW5nRm9yRG9jdW1lbnQobW91bnRBdCk7XG4g
ICAgdmFyIGRlcGVuZGVuY2llcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFt
ZURlcGVuZGVuY2llc1tyZWdpc3RyYXRpb25OYW1lXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVwZW5kZW5jeSA9IGRl
cGVuZGVuY2llc1tpXTtcbiAgICAgIGlmICghKGlzTGlzdGVuaW5nLmhhc093blByb3BlcnR5KGRl
cGVuZGVuY3kpICYmIGlzTGlzdGVuaW5nW2RlcGVuZGVuY3ldKSkge1xuICAgICAgICBpZiAoZGVw
ZW5kZW5jeSA9PT0gJ3RvcFdoZWVsJykge1xuICAgICAgICAgIGlmIChpc0V2ZW50U3VwcG9ydGVk
KCd3aGVlbCcpKSB7XG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RF
dmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFdoZWVsJywgJ3doZWVsJywgbW91bnRB
dCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdtb3VzZXdoZWVsJykp
IHtcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVu
ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wV2hlZWwnLCAnbW91c2V3aGVlbCcsIG1vdW50QXQpO1xu
ICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGaXJlZm94IG5lZWRzIHRvIGNhcHR1
cmUgYSBkaWZmZXJlbnQgbW91c2Ugc2Nyb2xsIGV2ZW50LlxuICAgICAgICAgICAgLy8gQHNlZSBo
dHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2RvbS9ldmVudHMvdGVzdHMvc2Nyb2xsLmh0bWxcbiAg
ICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJh
cEJ1YmJsZWRFdmVudCgndG9wV2hlZWwnLCAnRE9NTW91c2VTY3JvbGwnLCBtb3VudEF0KTtcbiAg
ICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGVwZW5kZW5jeSA9PT0gJ3RvcFNjcm9sbCcp
IHtcbiAgICAgICAgICBpZiAoaXNFdmVudFN1cHBvcnRlZCgnc2Nyb2xsJywgdHJ1ZSkpIHtcbiAg
ICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJh
cENhcHR1cmVkRXZlbnQoJ3RvcFNjcm9sbCcsICdzY3JvbGwnLCBtb3VudEF0KTtcbiAgICAgICAg
ICB9IGVsc2Uge1xuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZl
bnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BTY3JvbGwnLCAnc2Nyb2xsJywgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5XSU5ET1dfSEFORExFKTtcbiAg
ICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGVwZW5kZW5jeSA9PT0gJ3RvcEZvY3VzJyB8
fCBkZXBlbmRlbmN5ID09PSAndG9wQmx1cicpIHtcbiAgICAgICAgICBpZiAoaXNFdmVudFN1cHBv
cnRlZCgnZm9jdXMnLCB0cnVlKSkge1xuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0
dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgndG9wRm9jdXMnLCAnZm9j
dXMnLCBtb3VudEF0KTtcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFj
dEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoJ3RvcEJsdXInLCAnYmx1cicsIG1vdW50
QXQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNFdmVudFN1cHBvcnRlZCgnZm9jdXNpbicpKSB7
XG4gICAgICAgICAgICAvLyBJRSBoYXMgYGZvY3VzaW5gIGFuZCBgZm9jdXNvdXRgIGV2ZW50cyB3
aGljaCBidWJibGUuXG4gICAgICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5v
cmcvYmxvZy9hcmNoaXZlcy8yMDA4LzA0L2RlbGVnYXRpbmdfdGhlLmh0bWxcbiAgICAgICAgICAg
IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRF
dmVudCgndG9wRm9jdXMnLCAnZm9jdXNpbicsIG1vdW50QXQpO1xuICAgICAgICAgICAgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0
b3BCbHVyJywgJ2ZvY3Vzb3V0JywgbW91bnRBdCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAg
Ly8gdG8gbWFrZSBzdXJlIGJsdXIgYW5kIGZvY3VzIGV2ZW50IGxpc3RlbmVycyBhcmUgb25seSBh
dHRhY2hlZCBvbmNlXG4gICAgICAgICAgaXNMaXN0ZW5pbmcudG9wQmx1ciA9IHRydWU7XG4gICAg
ICAgICAgaXNMaXN0ZW5pbmcudG9wRm9jdXMgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRv
cEV2ZW50TWFwcGluZy5oYXNPd25Qcm9wZXJ0eShkZXBlbmRlbmN5KSkge1xuICAgICAgICAgIFJl
YWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVu
dChkZXBlbmRlbmN5LCB0b3BFdmVudE1hcHBpbmdbZGVwZW5kZW5jeV0sIG1vdW50QXQpO1xuICAg
ICAgICB9XG5cbiAgICAgICAgaXNMaXN0ZW5pbmdbZGVwZW5kZW5jeV0gPSB0cnVlO1xuICAgICAg
fVxuICAgIH1cbiAgfSxcblxuICB0cmFwQnViYmxlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxU
eXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSkge1xuICAgIHJldHVybiBSZWFjdEJyb3dzZXJF
dmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQodG9wTGV2ZWxU
eXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSk7XG4gIH0sXG5cbiAgdHJhcENhcHR1cmVkRXZl
bnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKSB7XG4g
ICAgcmV0dXJuIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJh
cENhcHR1cmVkRXZlbnQodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSk7XG4g
IH0sXG5cbiAgLyoqXG4gICAqIFByb3RlY3QgYWdhaW5zdCBkb2N1bWVudC5jcmVhdGVFdmVudCgp
IHJldHVybmluZyBudWxsXG4gICAqIFNvbWUgcG9wdXAgYmxvY2tlciBleHRlbnNpb25zIGFwcGVh
ciB0byBkbyB0aGlzOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNz
dWVzLzY4ODdcbiAgICovXG4gIHN1cHBvcnRzRXZlbnRQYWdlWFk6IGZ1bmN0aW9uICgpIHtcbiAg
ICBpZiAoIWRvY3VtZW50LmNyZWF0ZUV2ZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAg
fVxuICAgIHZhciBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3VzZUV2ZW50Jyk7XG4gICAg
cmV0dXJuIGV2ICE9IG51bGwgJiYgJ3BhZ2VYJyBpbiBldjtcbiAgfSxcblxuICAvKipcbiAgICog
TGlzdGVucyB0byB3aW5kb3cgc2Nyb2xsIGFuZCByZXNpemUgZXZlbnRzLiBXZSBjYWNoZSBzY3Jv
bGwgdmFsdWVzIHNvIHRoYXRcbiAgICogYXBwbGljYXRpb24gY29kZSBjYW4gYWNjZXNzIHRoZW0g
d2l0aG91dCB0cmlnZ2VyaW5nIHJlZmxvd3MuXG4gICAqXG4gICAqIFZpZXdwb3J0TWV0cmljcyBp
cyBvbmx5IHVzZWQgYnkgU3ludGhldGljTW91c2UvVG91Y2hFdmVudCBhbmQgb25seSB3aGVuXG4g
ICAqIHBhZ2VYL3BhZ2VZIGlzbid0IHN1cHBvcnRlZCAobGVnYWN5IGJyb3dzZXJzKS5cbiAgICpc
biAgICogTk9URTogU2Nyb2xsIGV2ZW50cyBkbyBub3QgYnViYmxlLlxuICAgKlxuICAgKiBAc2Vl
IGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy9zY3JvbGwuaHRtbFxuICAgKi9c
biAgZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGhh
c0V2ZW50UGFnZVhZID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0V2ZW50UGFnZVhZID0gUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyLnN1cHBvcnRzRXZlbnRQYWdlWFkoKTtcbiAgICB9XG4gICAg
aWYgKCFoYXNFdmVudFBhZ2VYWSAmJiAhaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUpIHtcbiAgICAg
IHZhciByZWZyZXNoID0gVmlld3BvcnRNZXRyaWNzLnJlZnJlc2hTY3JvbGxWYWx1ZXM7XG4gICAg
ICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLm1vbml0b3JTY3Jv
bGxWYWx1ZShyZWZyZXNoKTtcbiAgICAgIGlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlID0gdHJ1ZTtc
biAgICB9XG4gIH1cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0QnJvd3NlckV2ZW50RW1p
dHRlcjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5qc1xuLy8g
bW9kdWxlIGlkID0gMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGc7XHJcblxyXG4vLyBU
aGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9kZVxyXG5nID0gKGZ1bmN0aW9uKCkge1xyXG5cdHJl
dHVybiB0aGlzO1xyXG59KSgpO1xyXG5cclxudHJ5IHtcclxuXHQvLyBUaGlzIHdvcmtzIGlmIGV2
YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcclxuXHRnID0gZyB8fCBGdW5jdGlvbihcInJldHVybiB0
aGlzXCIpKCkgfHwgKDEsZXZhbCkoXCJ0aGlzXCIpO1xyXG59IGNhdGNoKGUpIHtcclxuXHQvLyBU
aGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJsZVxyXG5cdGlmKHR5
cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpXHJcblx0XHRnID0gd2luZG93O1xyXG59XHJcblxy
XG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0
Li4uXHJcbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBz
byBpdCdzXHJcbi8vIGVhc2llciB0byBoYW5kbGUgdGhpcyBjYXNlLiBpZighZ2xvYmFsKSB7IC4u
Ln1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZztcclxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8v
XG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzXG4vLyBt
b2R1bGUgaWQgPSAzMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9
IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1
aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBJbmplY3RhYmxlIG9yZGVyaW5n
IG9mIGV2ZW50IHBsdWdpbnMuXG4gKi9cbnZhciBldmVudFBsdWdpbk9yZGVyID0gbnVsbDtcblxu
LyoqXG4gKiBJbmplY3RhYmxlIG1hcHBpbmcgZnJvbSBuYW1lcyB0byBldmVudCBwbHVnaW4gbW9k
dWxlcy5cbiAqL1xudmFyIG5hbWVzVG9QbHVnaW5zID0ge307XG5cbi8qKlxuICogUmVjb21wdXRl
cyB0aGUgcGx1Z2luIGxpc3QgdXNpbmcgdGhlIGluamVjdGVkIHBsdWdpbnMgYW5kIHBsdWdpbiBv
cmRlcmluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiByZWNvbXB1dGVQbHVnaW5P
cmRlcmluZygpIHtcbiAgaWYgKCFldmVudFBsdWdpbk9yZGVyKSB7XG4gICAgLy8gV2FpdCB1bnRp
bCBhbiBgZXZlbnRQbHVnaW5PcmRlcmAgaXMgaW5qZWN0ZWQuXG4gICAgcmV0dXJuO1xuICB9XG4g
IGZvciAodmFyIHBsdWdpbk5hbWUgaW4gbmFtZXNUb1BsdWdpbnMpIHtcbiAgICB2YXIgcGx1Z2lu
TW9kdWxlID0gbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07XG4gICAgdmFyIHBsdWdpbkluZGV4
ID0gZXZlbnRQbHVnaW5PcmRlci5pbmRleE9mKHBsdWdpbk5hbWUpO1xuICAgICEocGx1Z2luSW5k
ZXggPiAtMSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90IGluamVjdCBldmVudCBwbHVn
aW5zIHRoYXQgZG8gbm90IGV4aXN0IGluIHRoZSBwbHVnaW4gb3JkZXJpbmcsIGAlc2AuJywgcGx1
Z2luTmFtZSkgOiBfcHJvZEludmFyaWFudCgnOTYnLCBwbHVnaW5OYW1lKSA6IHZvaWQgMDtcbiAg
ICBpZiAoRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSkge1xuICAgICAg
Y29udGludWU7XG4gICAgfVxuICAgICFwbHVnaW5Nb2R1bGUuZXh0cmFjdEV2ZW50cyA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVu
dFBsdWdpblJlZ2lzdHJ5OiBFdmVudCBwbHVnaW5zIG11c3QgaW1wbGVtZW50IGFuIGBleHRyYWN0
RXZlbnRzYCBtZXRob2QsIGJ1dCBgJXNgIGRvZXMgbm90LicsIHBsdWdpbk5hbWUpIDogX3Byb2RJ
bnZhcmlhbnQoJzk3JywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7XG4gICAgRXZlbnRQbHVnaW5SZWdp
c3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSA9IHBsdWdpbk1vZHVsZTtcbiAgICB2YXIgcHVibGlz
aGVkRXZlbnRzID0gcGx1Z2luTW9kdWxlLmV2ZW50VHlwZXM7XG4gICAgZm9yICh2YXIgZXZlbnRO
YW1lIGluIHB1Ymxpc2hlZEV2ZW50cykge1xuICAgICAgIXB1Ymxpc2hFdmVudEZvclBsdWdpbihw
dWJsaXNoZWRFdmVudHNbZXZlbnROYW1lXSwgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpID8gcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2
ZW50UGx1Z2luUmVnaXN0cnk6IEZhaWxlZCB0byBwdWJsaXNoIGV2ZW50IGAlc2AgZm9yIHBsdWdp
biBgJXNgLicsIGV2ZW50TmFtZSwgcGx1Z2luTmFtZSkgOiBfcHJvZEludmFyaWFudCgnOTgnLCBl
dmVudE5hbWUsIHBsdWdpbk5hbWUpIDogdm9pZCAwO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAq
IFB1Ymxpc2hlcyBhbiBldmVudCBzbyB0aGF0IGl0IGNhbiBiZSBkaXNwYXRjaGVkIGJ5IHRoZSBz
dXBwbGllZCBwbHVnaW4uXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIERp
c3BhdGNoIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBldmVudC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBQ
bHVnaW5Nb2R1bGUgUGx1Z2luIHB1Ymxpc2hpbmcgdGhlIGV2ZW50LlxuICogQHJldHVybiB7Ym9v
bGVhbn0gVHJ1ZSBpZiB0aGUgZXZlbnQgd2FzIHN1Y2Nlc3NmdWxseSBwdWJsaXNoZWQuXG4gKiBA
cHJpdmF0ZVxuICovXG5mdW5jdGlvbiBwdWJsaXNoRXZlbnRGb3JQbHVnaW4oZGlzcGF0Y2hDb25m
aWcsIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSB7XG4gICEhRXZlbnRQbHVnaW5SZWdpc3RyeS5l
dmVudE5hbWVEaXNwYXRjaENvbmZpZ3MuaGFzT3duUHJvcGVydHkoZXZlbnROYW1lKSA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVu
dFBsdWdpbkh1YjogTW9yZSB0aGFuIG9uZSBwbHVnaW4gYXR0ZW1wdGVkIHRvIHB1Ymxpc2ggdGhl
IHNhbWUgZXZlbnQgbmFtZSwgYCVzYC4nLCBldmVudE5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk5
JywgZXZlbnROYW1lKSA6IHZvaWQgMDtcbiAgRXZlbnRQbHVnaW5SZWdpc3RyeS5ldmVudE5hbWVE
aXNwYXRjaENvbmZpZ3NbZXZlbnROYW1lXSA9IGRpc3BhdGNoQ29uZmlnO1xuXG4gIHZhciBwaGFz
ZWRSZWdpc3RyYXRpb25OYW1lcyA9IGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzO1xuICBpZiAocGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHtcbiAgICBmb3IgKHZhciBwaGFz
ZU5hbWUgaW4gcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHtcbiAgICAgIGlmIChwaGFzZWRSZWdp
c3RyYXRpb25OYW1lcy5oYXNPd25Qcm9wZXJ0eShwaGFzZU5hbWUpKSB7XG4gICAgICAgIHZhciBw
aGFzZWRSZWdpc3RyYXRpb25OYW1lID0gcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcGhhc2VOYW1l
XTtcbiAgICAgICAgcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUocGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZSwgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4g
dHJ1ZTtcbiAgfSBlbHNlIGlmIChkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG4g
ICAgcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFt
ZSwgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJl
dHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBQdWJsaXNoZXMgYSByZWdpc3RyYXRpb24gbmFtZSB0
aGF0IGlzIHVzZWQgdG8gaWRlbnRpZnkgZGlzcGF0Y2hlZCBldmVudHMgYW5kXG4gKiBjYW4gYmUg
dXNlZCB3aXRoIGBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcmAgdG8gcmVnaXN0ZXIgbGlzdGVu
ZXJzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIFJlZ2lzdHJhdGlv
biBuYW1lIHRvIGFkZC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBQbHVnaW5Nb2R1bGUgUGx1Z2luIHB1
Ymxpc2hpbmcgdGhlIGV2ZW50LlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gcHVibGlzaFJl
Z2lzdHJhdGlvbk5hbWUocmVnaXN0cmF0aW9uTmFtZSwgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUp
IHtcbiAgISFFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lz
dHJhdGlvbk5hbWVdID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luSHViOiBNb3JlIHRoYW4gb25lIHBsdWdpbiBhdHRl
bXB0ZWQgdG8gcHVibGlzaCB0aGUgc2FtZSByZWdpc3RyYXRpb24gbmFtZSwgYCVzYC4nLCByZWdp
c3RyYXRpb25OYW1lKSA6IF9wcm9kSW52YXJpYW50KCcxMDAnLCByZWdpc3RyYXRpb25OYW1lKSA6
IHZvaWQgMDtcbiAgRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1ty
ZWdpc3RyYXRpb25OYW1lXSA9IHBsdWdpbk1vZHVsZTtcbiAgRXZlbnRQbHVnaW5SZWdpc3RyeS5y
ZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVdID0gcGx1Z2luTW9k
dWxlLmV2ZW50VHlwZXNbZXZlbnROYW1lXS5kZXBlbmRlbmNpZXM7XG5cbiAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgbG93ZXJDYXNlZE5hbWUg
PSByZWdpc3RyYXRpb25OYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgRXZlbnRQbHVnaW5SZWdpc3Ry
eS5wb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzW2xvd2VyQ2FzZWROYW1lXSA9IHJlZ2lzdHJhdGlv
bk5hbWU7XG5cbiAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gJ29uRG91YmxlQ2xpY2snKSB7
XG4gICAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMub25k
YmxjbGljayA9IHJlZ2lzdHJhdGlvbk5hbWU7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVn
aXN0ZXJzIHBsdWdpbnMgc28gdGhhdCB0aGV5IGNhbiBleHRyYWN0IGFuZCBkaXNwYXRjaCBldmVu
dHMuXG4gKlxuICogQHNlZSB7RXZlbnRQbHVnaW5IdWJ9XG4gKi9cbnZhciBFdmVudFBsdWdpblJl
Z2lzdHJ5ID0ge1xuICAvKipcbiAgICogT3JkZXJlZCBsaXN0IG9mIGluamVjdGVkIHBsdWdpbnMu
XG4gICAqL1xuICBwbHVnaW5zOiBbXSxcblxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIGV2ZW50
IG5hbWUgdG8gZGlzcGF0Y2ggY29uZmlnXG4gICAqL1xuICBldmVudE5hbWVEaXNwYXRjaENvbmZp
Z3M6IHt9LFxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gcmVnaXN0cmF0aW9uIG5hbWUgdG8g
cGx1Z2luIG1vZHVsZVxuICAgKi9cbiAgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM6IHt9LFxuXG4g
IC8qKlxuICAgKiBNYXBwaW5nIGZyb20gcmVnaXN0cmF0aW9uIG5hbWUgdG8gZXZlbnQgbmFtZVxu
ICAgKi9cbiAgcmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llczoge30sXG5cbiAgLyoqXG4gICAq
IE1hcHBpbmcgZnJvbSBsb3dlcmNhc2UgcmVnaXN0cmF0aW9uIG5hbWVzIHRvIHRoZSBwcm9wZXJs
eSBjYXNlZCB2ZXJzaW9uLFxuICAgKiB1c2VkIHRvIHdhcm4gaW4gdGhlIGNhc2Ugb2YgbWlzc2lu
ZyBldmVudCBoYW5kbGVycy4gQXZhaWxhYmxlXG4gICAqIG9ubHkgaW4gX19ERVZfXy5cbiAgICog
QHR5cGUge09iamVjdH1cbiAgICovXG4gIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXM6IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB7fSA6IG51bGwsXG4gIC8vIFRydXN0
IHRoZSBkZXZlbG9wZXIgdG8gb25seSB1c2UgcG9zc2libGVSZWdpc3RyYXRpb25OYW1lcyBpbiBf
X0RFVl9fXG5cbiAgLyoqXG4gICAqIEluamVjdHMgYW4gb3JkZXJpbmcgb2YgcGx1Z2lucyAoYnkg
cGx1Z2luIG5hbWUpLiBUaGlzIGFsbG93cyB0aGUgb3JkZXJpbmdcbiAgICogdG8gYmUgZGVjb3Vw
bGVkIGZyb20gaW5qZWN0aW9uIG9mIHRoZSBhY3R1YWwgcGx1Z2lucyBzbyB0aGF0IG9yZGVyaW5n
IGlzXG4gICAqIGFsd2F5cyBkZXRlcm1pbmlzdGljIHJlZ2FyZGxlc3Mgb2YgcGFja2FnaW5nLCBv
bi10aGUtZmx5IGluamVjdGlvbiwgZXRjLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5fSBJbmpl
Y3RlZEV2ZW50UGx1Z2luT3JkZXJcbiAgICogQGludGVybmFsXG4gICAqIEBzZWUge0V2ZW50UGx1
Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVudFBsdWdpbk9yZGVyfVxuICAgKi9cbiAgaW5qZWN0
RXZlbnRQbHVnaW5PcmRlcjogZnVuY3Rpb24gKGluamVjdGVkRXZlbnRQbHVnaW5PcmRlcikge1xu
ICAgICEhZXZlbnRQbHVnaW5PcmRlciA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5q
ZWN0IGV2ZW50IHBsdWdpbiBvcmRlcmluZyBtb3JlIHRoYW4gb25jZS4gWW91IGFyZSBsaWtlbHkg
dHJ5aW5nIHRvIGxvYWQgbW9yZSB0aGFuIG9uZSBjb3B5IG9mIFJlYWN0LicpIDogX3Byb2RJbnZh
cmlhbnQoJzEwMScpIDogdm9pZCAwO1xuICAgIC8vIENsb25lIHRoZSBvcmRlcmluZyBzbyBpdCBj
YW5ub3QgYmUgZHluYW1pY2FsbHkgbXV0YXRlZC5cbiAgICBldmVudFBsdWdpbk9yZGVyID0gQXJy
YXkucHJvdG90eXBlLnNsaWNlLmNhbGwoaW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyKTtcbiAgICBy
ZWNvbXB1dGVQbHVnaW5PcmRlcmluZygpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBJbmplY3RzIHBs
dWdpbnMgdG8gYmUgdXNlZCBieSBgRXZlbnRQbHVnaW5IdWJgLiBUaGUgcGx1Z2luIG5hbWVzIG11
c3QgYmVcbiAgICogaW4gdGhlIG9yZGVyaW5nIGluamVjdGVkIGJ5IGBpbmplY3RFdmVudFBsdWdp
bk9yZGVyYC5cbiAgICpcbiAgICogUGx1Z2lucyBjYW4gYmUgaW5qZWN0ZWQgYXMgcGFydCBvZiBw
YWdlIGluaXRpYWxpemF0aW9uIG9yIG9uLXRoZS1mbHkuXG4gICAqXG4gICAqIEBwYXJhbSB7b2Jq
ZWN0fSBpbmplY3RlZE5hbWVzVG9QbHVnaW5zIE1hcCBmcm9tIG5hbWVzIHRvIHBsdWdpbiBtb2R1
bGVzLlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHNlZSB7RXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9u
LmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZX1cbiAgICovXG4gIGluamVjdEV2ZW50UGx1Z2luc0J5
TmFtZTogZnVuY3Rpb24gKGluamVjdGVkTmFtZXNUb1BsdWdpbnMpIHtcbiAgICB2YXIgaXNPcmRl
cmluZ0RpcnR5ID0gZmFsc2U7XG4gICAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBpbmplY3RlZE5h
bWVzVG9QbHVnaW5zKSB7XG4gICAgICBpZiAoIWluamVjdGVkTmFtZXNUb1BsdWdpbnMuaGFzT3du
UHJvcGVydHkocGx1Z2luTmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAg
ICB2YXIgcGx1Z2luTW9kdWxlID0gaW5qZWN0ZWROYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXTtc
biAgICAgIGlmICghbmFtZXNUb1BsdWdpbnMuaGFzT3duUHJvcGVydHkocGx1Z2luTmFtZSkgfHwg
bmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV0gIT09IHBsdWdpbk1vZHVsZSkge1xuICAgICAgICAh
IW5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5v
dCBpbmplY3QgdHdvIGRpZmZlcmVudCBldmVudCBwbHVnaW5zIHVzaW5nIHRoZSBzYW1lIG5hbWUs
IGAlc2AuJywgcGx1Z2luTmFtZSkgOiBfcHJvZEludmFyaWFudCgnMTAyJywgcGx1Z2luTmFtZSkg
OiB2b2lkIDA7XG4gICAgICAgIG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdID0gcGx1Z2luTW9k
dWxlO1xuICAgICAgICBpc09yZGVyaW5nRGlydHkgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAg
ICBpZiAoaXNPcmRlcmluZ0RpcnR5KSB7XG4gICAgICByZWNvbXB1dGVQbHVnaW5PcmRlcmluZygp
O1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogTG9va3MgdXAgdGhlIHBsdWdpbiBmb3IgdGhl
IHN1cHBsaWVkIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgQSBzeW50
aGV0aWMgZXZlbnQuXG4gICAqIEByZXR1cm4gez9vYmplY3R9IFRoZSBwbHVnaW4gdGhhdCBjcmVh
dGVkIHRoZSBzdXBwbGllZCBldmVudC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXRQbHVn
aW5Nb2R1bGVGb3JFdmVudDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIGRpc3BhdGNoQ29u
ZmlnID0gZXZlbnQuZGlzcGF0Y2hDb25maWc7XG4gICAgaWYgKGRpc3BhdGNoQ29uZmlnLnJlZ2lz
dHJhdGlvbk5hbWUpIHtcbiAgICAgIHJldHVybiBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJh
dGlvbk5hbWVNb2R1bGVzW2Rpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWVdIHx8IG51bGw7
XG4gICAgfVxuICAgIGlmIChkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcyAh
PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBwdWxsaW5nIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
IG91dCBvZiBkaXNwYXRjaENvbmZpZyBoZWxwcyBGbG93IHNlZVxuICAgICAgLy8gdGhhdCBpdCBp
cyBub3QgdW5kZWZpbmVkLlxuICAgICAgdmFyIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzID0gZGlz
cGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7XG5cbiAgICAgIGZvciAodmFyIHBo
YXNlIGluIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgICAgIGlmICghcGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVydHkocGhhc2UpKSB7XG4gICAgICAgICAgY29udGlu
dWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVn
aXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcGhh
c2VdXTtcbiAgICAgICAgaWYgKHBsdWdpbk1vZHVsZSkge1xuICAgICAgICAgIHJldHVybiBwbHVn
aW5Nb2R1bGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4g
IH0sXG5cbiAgLyoqXG4gICAqIEV4cG9zZWQgZm9yIHVuaXQgdGVzdGluZy5cbiAgICogQHByaXZh
dGVcbiAgICovXG4gIF9yZXNldEV2ZW50UGx1Z2luczogZnVuY3Rpb24gKCkge1xuICAgIGV2ZW50
UGx1Z2luT3JkZXIgPSBudWxsO1xuICAgIGZvciAodmFyIHBsdWdpbk5hbWUgaW4gbmFtZXNUb1Bs
dWdpbnMpIHtcbiAgICAgIGlmIChuYW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5O
YW1lKSkge1xuICAgICAgICBkZWxldGUgbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07XG4gICAg
ICB9XG4gICAgfVxuICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2lucy5sZW5ndGggPSAwO1xu
XG4gICAgdmFyIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlncyA9IEV2ZW50UGx1Z2luUmVnaXN0cnku
ZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzO1xuICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBldmVu
dE5hbWVEaXNwYXRjaENvbmZpZ3MpIHtcbiAgICAgIGlmIChldmVudE5hbWVEaXNwYXRjaENvbmZp
Z3MuaGFzT3duUHJvcGVydHkoZXZlbnROYW1lKSkge1xuICAgICAgICBkZWxldGUgZXZlbnROYW1l
RGlzcGF0Y2hDb25maWdzW2V2ZW50TmFtZV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJl
Z2lzdHJhdGlvbk5hbWVNb2R1bGVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25O
YW1lTW9kdWxlcztcbiAgICBmb3IgKHZhciByZWdpc3RyYXRpb25OYW1lIGluIHJlZ2lzdHJhdGlv
bk5hbWVNb2R1bGVzKSB7XG4gICAgICBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3du
UHJvcGVydHkocmVnaXN0cmF0aW9uTmFtZSkpIHtcbiAgICAgICAgZGVsZXRlIHJlZ2lzdHJhdGlv
bk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgcG9z
c2libGVSZWdpc3RyYXRpb25OYW1lcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucG9zc2libGVSZWdp
c3RyYXRpb25OYW1lcztcbiAgICAgIGZvciAodmFyIGxvd2VyQ2FzZWROYW1lIGluIHBvc3NpYmxl
UmVnaXN0cmF0aW9uTmFtZXMpIHtcbiAgICAgICAgaWYgKHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFt
ZXMuaGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpKSB7XG4gICAgICAgICAgZGVsZXRlIHBv
c3NpYmxlUmVnaXN0cmF0aW9uTmFtZXNbbG93ZXJDYXNlZE5hbWVdO1xuICAgICAgICB9XG4gICAg
ICB9XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luUmVnaXN0
cnk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2Rl
X21vZHVsZXMvcmVhY3QtZG9tL2xpYi9FdmVudFBsdWdpblJlZ2lzdHJ5LmpzXG4vLyBtb2R1bGUg
aWQgPSAzMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcu
L3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3RFcnJvclV0aWxzID0gcmVxdWlyZSgn
Li9SZWFjdEVycm9yVXRpbHMnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGli
L2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7
XG5cbi8qKlxuICogSW5qZWN0ZWQgZGVwZW5kZW5jaWVzOlxuICovXG5cbi8qKlxuICogLSBgQ29t
cG9uZW50VHJlZWA6IFtyZXF1aXJlZF0gTW9kdWxlIHRoYXQgY2FuIGNvbnZlcnQgYmV0d2VlbiBS
ZWFjdCBpbnN0YW5jZXNcbiAqICAgYW5kIGFjdHVhbCBub2RlIHJlZmVyZW5jZXMuXG4gKi9cbnZh
ciBDb21wb25lbnRUcmVlO1xudmFyIFRyZWVUcmF2ZXJzYWw7XG52YXIgaW5qZWN0aW9uID0ge1xu
ICBpbmplY3RDb21wb25lbnRUcmVlOiBmdW5jdGlvbiAoSW5qZWN0ZWQpIHtcbiAgICBDb21wb25l
bnRUcmVlID0gSW5qZWN0ZWQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKEluamVjdGVkICYmIEluamVjdGVkLmdldE5vZGVGcm9tSW5zdGFuY2UgJiYgSW5q
ZWN0ZWQuZ2V0SW5zdGFuY2VGcm9tTm9kZSwgJ0V2ZW50UGx1Z2luVXRpbHMuaW5qZWN0aW9uLmlu
amVjdENvbXBvbmVudFRyZWUoLi4uKTogSW5qZWN0ZWQgJyArICdtb2R1bGUgaXMgbWlzc2luZyBn
ZXROb2RlRnJvbUluc3RhbmNlIG9yIGdldEluc3RhbmNlRnJvbU5vZGUuJykgOiB2b2lkIDA7XG4g
ICAgfVxuICB9LFxuICBpbmplY3RUcmVlVHJhdmVyc2FsOiBmdW5jdGlvbiAoSW5qZWN0ZWQpIHtc
biAgICBUcmVlVHJhdmVyc2FsID0gSW5qZWN0ZWQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKEluamVjdGVkICYmIEluamVjdGVkLmlzQW5jZXN0b3IgJiYg
SW5qZWN0ZWQuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IsICdFdmVudFBsdWdpblV0aWxzLmluamVj
dGlvbi5pbmplY3RUcmVlVHJhdmVyc2FsKC4uLik6IEluamVjdGVkICcgKyAnbW9kdWxlIGlzIG1p
c3NpbmcgaXNBbmNlc3RvciBvciBnZXRMb3dlc3RDb21tb25BbmNlc3Rvci4nKSA6IHZvaWQgMDtc
biAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGlzRW5kaXNoKHRvcExldmVsVHlwZSkge1xuICBy
ZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VVcCcgfHwgdG9wTGV2ZWxUeXBlID09PSAn
dG9wVG91Y2hFbmQnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcFRvdWNoQ2FuY2VsJztcbn1cblxu
ZnVuY3Rpb24gaXNNb3ZlaXNoKHRvcExldmVsVHlwZSkge1xuICByZXR1cm4gdG9wTGV2ZWxUeXBl
ID09PSAndG9wTW91c2VNb3ZlJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BUb3VjaE1vdmUnO1xu
fVxuZnVuY3Rpb24gaXNTdGFydGlzaCh0b3BMZXZlbFR5cGUpIHtcbiAgcmV0dXJuIHRvcExldmVs
VHlwZSA9PT0gJ3RvcE1vdXNlRG93bicgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hTdGFy
dCc7XG59XG5cbnZhciB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcztcbmlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rp
c3BhdGNoTGlzdGVuZXJzO1xuICAgIHZhciBkaXNwYXRjaEluc3RhbmNlcyA9IGV2ZW50Ll9kaXNw
YXRjaEluc3RhbmNlcztcblxuICAgIHZhciBsaXN0ZW5lcnNJc0FyciA9IEFycmF5LmlzQXJyYXko
ZGlzcGF0Y2hMaXN0ZW5lcnMpO1xuICAgIHZhciBsaXN0ZW5lcnNMZW4gPSBsaXN0ZW5lcnNJc0Fy
ciA/IGRpc3BhdGNoTGlzdGVuZXJzLmxlbmd0aCA6IGRpc3BhdGNoTGlzdGVuZXJzID8gMSA6IDA7
XG5cbiAgICB2YXIgaW5zdGFuY2VzSXNBcnIgPSBBcnJheS5pc0FycmF5KGRpc3BhdGNoSW5zdGFu
Y2VzKTtcbiAgICB2YXIgaW5zdGFuY2VzTGVuID0gaW5zdGFuY2VzSXNBcnIgPyBkaXNwYXRjaElu
c3RhbmNlcy5sZW5ndGggOiBkaXNwYXRjaEluc3RhbmNlcyA/IDEgOiAwO1xuXG4gICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoaW5zdGFuY2VzSXNBcnIg
PT09IGxpc3RlbmVyc0lzQXJyICYmIGluc3RhbmNlc0xlbiA9PT0gbGlzdGVuZXJzTGVuLCAnRXZl
bnRQbHVnaW5VdGlsczogSW52YWxpZCBgZXZlbnRgLicpIDogdm9pZCAwO1xuICB9O1xufVxuXG4v
KipcbiAqIERpc3BhdGNoIHRoZSBldmVudCB0byB0aGUgbGlzdGVuZXIuXG4gKiBAcGFyYW0ge1N5
bnRoZXRpY0V2ZW50fSBldmVudCBTeW50aGV0aWNFdmVudCB0byBoYW5kbGVcbiAqIEBwYXJhbSB7
Ym9vbGVhbn0gc2ltdWxhdGVkIElmIHRoZSBldmVudCBpcyBzaW11bGF0ZWQgKGNoYW5nZXMgZXhu
IGJlaGF2aW9yKVxuICogQHBhcmFtIHtmdW5jdGlvbn0gbGlzdGVuZXIgQXBwbGljYXRpb24tbGV2
ZWwgY2FsbGJhY2tcbiAqIEBwYXJhbSB7Kn0gaW5zdCBJbnRlcm5hbCBjb21wb25lbnQgaW5zdGFu
Y2VcbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGxpc3Rl
bmVyLCBpbnN0KSB7XG4gIHZhciB0eXBlID0gZXZlbnQudHlwZSB8fCAndW5rbm93bi1ldmVudCc7
XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBFdmVudFBsdWdpblV0aWxzLmdldE5vZGVGcm9tSW5z
dGFuY2UoaW5zdCk7XG4gIGlmIChzaW11bGF0ZWQpIHtcbiAgICBSZWFjdEVycm9yVXRpbHMuaW52
b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoKHR5cGUsIGxpc3RlbmVyLCBldmVudCk7XG4gIH0g
ZWxzZSB7XG4gICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayh0eXBlLCBs
aXN0ZW5lciwgZXZlbnQpO1xuICB9XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBudWxsO1xufVxu
XG4vKipcbiAqIFN0YW5kYXJkL3NpbXBsZSBpdGVyYXRpb24gdGhyb3VnaCBhbiBldmVudCdzIGNv
bGxlY3RlZCBkaXNwYXRjaGVzLlxuICovXG5mdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3Jk
ZXIoZXZlbnQsIHNpbXVsYXRlZCkge1xuICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5f
ZGlzcGF0Y2hMaXN0ZW5lcnM7XG4gIHZhciBkaXNwYXRjaEluc3RhbmNlcyA9IGV2ZW50Ll9kaXNw
YXRjaEluc3RhbmNlcztcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7XG4gIH1cbiAgaWYgKEFy
cmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBkaXNwYXRjaExpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGV2ZW50LmlzUHJv
cGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBM
aXN0ZW5lcnMgYW5kIEluc3RhbmNlcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBh
bHdheXMgaW4gc3luYy5cbiAgICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBk
aXNwYXRjaExpc3RlbmVyc1tpXSwgZGlzcGF0Y2hJbnN0YW5jZXNbaV0pO1xuICAgIH1cbiAgfSBl
bHNlIGlmIChkaXNwYXRjaExpc3RlbmVycykge1xuICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwg
c2ltdWxhdGVkLCBkaXNwYXRjaExpc3RlbmVycywgZGlzcGF0Y2hJbnN0YW5jZXMpO1xuICB9XG4g
IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IG51bGw7XG4gIGV2ZW50Ll9kaXNwYXRjaEluc3Rh
bmNlcyA9IG51bGw7XG59XG5cbi8qKlxuICogU3RhbmRhcmQvc2ltcGxlIGl0ZXJhdGlvbiB0aHJv
dWdoIGFuIGV2ZW50J3MgY29sbGVjdGVkIGRpc3BhdGNoZXMsIGJ1dCBzdG9wc1xuICogYXQgdGhl
IGZpcnN0IGRpc3BhdGNoIGV4ZWN1dGlvbiByZXR1cm5pbmcgdHJ1ZSwgYW5kIHJldHVybnMgdGhh
dCBpZC5cbiAqXG4gKiBAcmV0dXJuIHs/c3RyaW5nfSBpZCBvZiB0aGUgZmlyc3QgZGlzcGF0Y2gg
ZXhlY3V0aW9uIHdobydzIGxpc3RlbmVyIHJldHVybnNcbiAqIHRydWUsIG9yIG51bGwgaWYgbm8g
bGlzdGVuZXIgcmV0dXJuZWQgdHJ1ZS5cbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJ
bk9yZGVyU3RvcEF0VHJ1ZUltcGwoZXZlbnQpIHtcbiAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0g
ZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVu
dC5fZGlzcGF0Y2hJbnN0YW5jZXM7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZlbnQpO1xuICB9XG4g
IGlmIChBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlzdGVuZXJzKSkge1xuICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChldmVu
dC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAg
ICAgLy8gTGlzdGVuZXJzIGFuZCBJbnN0YW5jZXMgYXJlIHR3byBwYXJhbGxlbCBhcnJheXMgdGhh
dCBhcmUgYWx3YXlzIGluIHN5bmMuXG4gICAgICBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnNbaV0oZXZl
bnQsIGRpc3BhdGNoSW5zdGFuY2VzW2ldKSkge1xuICAgICAgICByZXR1cm4gZGlzcGF0Y2hJbnN0
YW5jZXNbaV07XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGRpc3BhdGNoTGlzdGVuZXJz
KSB7XG4gICAgaWYgKGRpc3BhdGNoTGlzdGVuZXJzKGV2ZW50LCBkaXNwYXRjaEluc3RhbmNlcykp
IHtcbiAgICAgIHJldHVybiBkaXNwYXRjaEluc3RhbmNlcztcbiAgICB9XG4gIH1cbiAgcmV0dXJu
IG51bGw7XG59XG5cbi8qKlxuICogQHNlZSBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRU
cnVlSW1wbFxuICovXG5mdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVl
KGV2ZW50KSB7XG4gIHZhciByZXQgPSBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVl
SW1wbChldmVudCk7XG4gIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7XG4gIGV2ZW50
Ll9kaXNwYXRjaExpc3RlbmVycyA9IG51bGw7XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICog
RXhlY3V0aW9uIG9mIGEgXCJkaXJlY3RcIiBkaXNwYXRjaCAtIHRoZXJlIG11c3QgYmUgYXQgbW9z
dCBvbmUgZGlzcGF0Y2hcbiAqIGFjY3VtdWxhdGVkIG9uIHRoZSBldmVudCBvciBpdCBpcyBjb25z
aWRlcmVkIGFuIGVycm9yLiBJdCBkb2Vzbid0IHJlYWxseSBtYWtlXG4gKiBzZW5zZSBmb3IgYW4g
ZXZlbnQgd2l0aCBtdWx0aXBsZSBkaXNwYXRjaGVzIChidWJibGVkKSB0byBrZWVwIHRyYWNrIG9m
IHRoZVxuICogcmV0dXJuIHZhbHVlcyBhdCBlYWNoIGRpc3BhdGNoIGV4ZWN1dGlvbiwgYnV0IGl0
IGRvZXMgdGVuZCB0byBtYWtlIHNlbnNlIHdoZW5cbiAqIGRlYWxpbmcgd2l0aCBcImRpcmVjdFwi
IGRpc3BhdGNoZXMuXG4gKlxuICogQHJldHVybiB7Kn0gVGhlIHJldHVybiB2YWx1ZSBvZiBleGVj
dXRpbmcgdGhlIHNpbmdsZSBkaXNwYXRjaC5cbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpcmVjdERp
c3BhdGNoKGV2ZW50KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZlbnQpO1xuICB9XG4gIHZhciBk
aXNwYXRjaExpc3RlbmVyID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuICB2YXIgZGlzcGF0
Y2hJbnN0YW5jZSA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcztcbiAgISFBcnJheS5pc0FycmF5
KGRpc3BhdGNoTGlzdGVuZXIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ2V4ZWN1dGVEaXJlY3REaXNwYXRjaCguLi4pOiBJbnZhbGlk
IGBldmVudGAuJykgOiBfcHJvZEludmFyaWFudCgnMTAzJykgOiB2b2lkIDA7XG4gIGV2ZW50LmN1
cnJlbnRUYXJnZXQgPSBkaXNwYXRjaExpc3RlbmVyID8gRXZlbnRQbHVnaW5VdGlscy5nZXROb2Rl
RnJvbUluc3RhbmNlKGRpc3BhdGNoSW5zdGFuY2UpIDogbnVsbDtcbiAgdmFyIHJlcyA9IGRpc3Bh
dGNoTGlzdGVuZXIgPyBkaXNwYXRjaExpc3RlbmVyKGV2ZW50KSA6IG51bGw7XG4gIGV2ZW50LmN1
cnJlbnRUYXJnZXQgPSBudWxsO1xuICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBudWxsO1xu
ICBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMgPSBudWxsO1xuICByZXR1cm4gcmVzO1xufVxuXG4v
KipcbiAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50XG4gKiBAcmV0dXJuIHtib29sZWFu
fSBUcnVlIGlmZiBudW1iZXIgb2YgZGlzcGF0Y2hlcyBhY2N1bXVsYXRlZCBpcyBncmVhdGVyIHRo
YW4gMC5cbiAqL1xuZnVuY3Rpb24gaGFzRGlzcGF0Y2hlcyhldmVudCkge1xuICByZXR1cm4gISFl
dmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG59XG5cbi8qKlxuICogR2VuZXJhbCB1dGlsaXRpZXMg
dGhhdCBhcmUgdXNlZnVsIGluIGNyZWF0aW5nIGN1c3RvbSBFdmVudCBQbHVnaW5zLlxuICovXG52
YXIgRXZlbnRQbHVnaW5VdGlscyA9IHtcbiAgaXNFbmRpc2g6IGlzRW5kaXNoLFxuICBpc01vdmVp
c2g6IGlzTW92ZWlzaCxcbiAgaXNTdGFydGlzaDogaXNTdGFydGlzaCxcblxuICBleGVjdXRlRGly
ZWN0RGlzcGF0Y2g6IGV4ZWN1dGVEaXJlY3REaXNwYXRjaCxcbiAgZXhlY3V0ZURpc3BhdGNoZXNJ
bk9yZGVyOiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIsXG4gIGV4ZWN1dGVEaXNwYXRjaGVzSW5P
cmRlclN0b3BBdFRydWU6IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUsXG4gIGhh
c0Rpc3BhdGNoZXM6IGhhc0Rpc3BhdGNoZXMsXG5cbiAgZ2V0SW5zdGFuY2VGcm9tTm9kZTogZnVu
Y3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21O
b2RlKG5vZGUpO1xuICB9LFxuICBnZXROb2RlRnJvbUluc3RhbmNlOiBmdW5jdGlvbiAobm9kZSkg
e1xuICAgIHJldHVybiBDb21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2Uobm9kZSk7XG4g
IH0sXG4gIGlzQW5jZXN0b3I6IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIFRyZWVUcmF2
ZXJzYWwuaXNBbmNlc3RvcihhLCBiKTtcbiAgfSxcbiAgZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6
IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuZ2V0TG93ZXN0Q29t
bW9uQW5jZXN0b3IoYSwgYik7XG4gIH0sXG4gIGdldFBhcmVudEluc3RhbmNlOiBmdW5jdGlvbiAo
aW5zdCkge1xuICAgIHJldHVybiBUcmVlVHJhdmVyc2FsLmdldFBhcmVudEluc3RhbmNlKGluc3Qp
O1xuICB9LFxuICB0cmF2ZXJzZVR3b1BoYXNlOiBmdW5jdGlvbiAodGFyZ2V0LCBmbiwgYXJnKSB7
XG4gICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwudHJhdmVyc2VUd29QaGFzZSh0YXJnZXQsIGZuLCBh
cmcpO1xuICB9LFxuICB0cmF2ZXJzZUVudGVyTGVhdmU6IGZ1bmN0aW9uIChmcm9tLCB0bywgZm4s
IGFyZ0Zyb20sIGFyZ1RvKSB7XG4gICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwudHJhdmVyc2VFbnRl
ckxlYXZlKGZyb20sIHRvLCBmbiwgYXJnRnJvbSwgYXJnVG8pO1xuICB9LFxuXG4gIGluamVjdGlv
bjogaW5qZWN0aW9uXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luVXRpbHM7XG5c
blxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9FdmVudFBsdWdpblV0aWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAzMlxu
Ly8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjYXVnaHRFcnJvciA9IG51bGw7XG5cbi8qKlxuICog
Q2FsbCBhIGZ1bmN0aW9uIHdoaWxlIGd1YXJkaW5nIGFnYWluc3QgZXJyb3JzIHRoYXQgaGFwcGVu
cyB3aXRoaW4gaXQuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgb2YgdGhlIGd1YXJkIHRv
IHVzZSBmb3IgbG9nZ2luZyBvciBkZWJ1Z2dpbmdcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMg
VGhlIGZ1bmN0aW9uIHRvIGludm9rZVxuICogQHBhcmFtIHsqfSBhIEZpcnN0IGFyZ3VtZW50XG4g
KiBAcGFyYW0geyp9IGIgU2Vjb25kIGFyZ3VtZW50XG4gKi9cbmZ1bmN0aW9uIGludm9rZUd1YXJk
ZWRDYWxsYmFjayhuYW1lLCBmdW5jLCBhKSB7XG4gIHRyeSB7XG4gICAgZnVuYyhhKTtcbiAgfSBj
YXRjaCAoeCkge1xuICAgIGlmIChjYXVnaHRFcnJvciA9PT0gbnVsbCkge1xuICAgICAgY2F1Z2h0
RXJyb3IgPSB4O1xuICAgIH1cbiAgfVxufVxuXG52YXIgUmVhY3RFcnJvclV0aWxzID0ge1xuICBp
bnZva2VHdWFyZGVkQ2FsbGJhY2s6IGludm9rZUd1YXJkZWRDYWxsYmFjayxcblxuICAvKipcbiAg
ICogSW52b2tlZCBieSBSZWFjdFRlc3RVdGlscy5TaW11bGF0ZSBzbyB0aGF0IGFueSBlcnJvcnMg
dGhyb3duIGJ5IHRoZSBldmVudFxuICAgKiBoYW5kbGVyIGFyZSBzdXJlIHRvIGJlIHJldGhyb3du
IGJ5IHJldGhyb3dDYXVnaHRFcnJvci5cbiAgICovXG4gIGludm9rZUd1YXJkZWRDYWxsYmFja1dp
dGhDYXRjaDogaW52b2tlR3VhcmRlZENhbGxiYWNrLFxuXG4gIC8qKlxuICAgKiBEdXJpbmcgZXhl
Y3V0aW9uIG9mIGd1YXJkZWQgZnVuY3Rpb25zIHdlIHdpbGwgY2FwdHVyZSB0aGUgZmlyc3QgZXJy
b3Igd2hpY2hcbiAgICogd2Ugd2lsbCByZXRocm93IHRvIGJlIGhhbmRsZWQgYnkgdGhlIHRvcCBs
ZXZlbCBlcnJvciBoYW5kbGVyLlxuICAgKi9cbiAgcmV0aHJvd0NhdWdodEVycm9yOiBmdW5jdGlv
biAoKSB7XG4gICAgaWYgKGNhdWdodEVycm9yKSB7XG4gICAgICB2YXIgZXJyb3IgPSBjYXVnaHRF
cnJvcjtcbiAgICAgIGNhdWdodEVycm9yID0gbnVsbDtcbiAgICAgIHRocm93IGVycm9yO1xuICAg
IH1cbiAgfVxufTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgLyoqXG4gICAqIFRvIGhlbHAgZGV2ZWxvcG1lbnQgd2UgY2FuIGdldCBiZXR0ZXIgZGV2
dG9vbHMgaW50ZWdyYXRpb24gYnkgc2ltdWxhdGluZyBhXG4gICAqIHJlYWwgYnJvd3NlciBldmVu
dC5cbiAgICovXG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Yg
d2luZG93LmRpc3BhdGNoRXZlbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRvY3VtZW50ICE9
PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRXZlbnQgPT09ICdmdW5jdGlv
bicpIHtcbiAgICB2YXIgZmFrZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdyZWFjdCcp
O1xuICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sgPSBmdW5jdGlvbiAo
bmFtZSwgZnVuYywgYSkge1xuICAgICAgdmFyIGJvdW5kRnVuYyA9IGZ1bmMuYmluZChudWxsLCBh
KTtcbiAgICAgIHZhciBldnRUeXBlID0gJ3JlYWN0LScgKyBuYW1lO1xuICAgICAgZmFrZU5vZGUu
YWRkRXZlbnRMaXN0ZW5lcihldnRUeXBlLCBib3VuZEZ1bmMsIGZhbHNlKTtcbiAgICAgIHZhciBl
dnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcbiAgICAgIGV2dC5pbml0RXZlbnQo
ZXZ0VHlwZSwgZmFsc2UsIGZhbHNlKTtcbiAgICAgIGZha2VOb2RlLmRpc3BhdGNoRXZlbnQoZXZ0
KTtcbiAgICAgIGZha2VOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZ0VHlwZSwgYm91bmRGdW5j
LCBmYWxzZSk7XG4gICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RXJyb3JV
dGlscztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RXJyb3JVdGlscy5qc1xuLy8gbW9kdWxlIGlk
ID0gMzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBHZXRzIHRoZSB0YXJnZXQgbm9kZSBmcm9t
IGEgbmF0aXZlIGJyb3dzZXIgZXZlbnQgYnkgYWNjb3VudGluZyBmb3JcbiAqIGluY29uc2lzdGVu
Y2llcyBpbiBicm93c2VyIERPTSBBUElzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVF
dmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEByZXR1cm4ge0RPTUV2ZW50VGFyZ2V0fSBU
YXJnZXQgbm9kZS5cbiAqL1xuXG5mdW5jdGlvbiBnZXRFdmVudFRhcmdldChuYXRpdmVFdmVudCkg
e1xuICB2YXIgdGFyZ2V0ID0gbmF0aXZlRXZlbnQudGFyZ2V0IHx8IG5hdGl2ZUV2ZW50LnNyY0Vs
ZW1lbnQgfHwgd2luZG93O1xuXG4gIC8vIE5vcm1hbGl6ZSBTVkcgPHVzZT4gZWxlbWVudCBldmVu
dHMgIzQ5NjNcbiAgaWYgKHRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCkge1xuICAgIHRh
cmdldCA9IHRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudDtcbiAgfVxuXG4gIC8vIFNhZmFy
aSBtYXkgZmlyZSBldmVudHMgb24gdGV4dCBub2RlcyAoTm9kZS5URVhUX05PREUgaXMgMykuXG4g
IC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9qcy9ldmVudHNfcHJvcGVydGllcy5o
dG1sXG4gIHJldHVybiB0YXJnZXQubm9kZVR5cGUgPT09IDMgPyB0YXJnZXQucGFyZW50Tm9kZSA6
IHRhcmdldDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudFRhcmdldDtcblxuXG4vLy8v
Ly8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL2dldEV2ZW50VGFyZ2V0LmpzXG4vLyBtb2R1bGUgaWQgPSAzNFxuLy8gbW9kdWxl
IGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVj
dXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgdXNlSGFzRmVhdHVyZTtcbmlmIChFeGVjdXRpb25F
bnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAgdXNlSGFzRmVhdHVyZSA9IGRvY3VtZW50LmltcGxl
bWVudGF0aW9uICYmIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUgJiZcbiAgLy8g
YWx3YXlzIHJldHVybnMgdHJ1ZSBpbiBuZXdlciBicm93c2VycyBhcyBwZXIgdGhlIHN0YW5kYXJk
LlxuICAvLyBAc2VlIGh0dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20tZG9taW1wbGVtZW50
YXRpb24taGFzZmVhdHVyZVxuICBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCcn
LCAnJykgIT09IHRydWU7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGFuIGV2ZW50IGlzIHN1cHBv
cnRlZCBpbiB0aGUgY3VycmVudCBleGVjdXRpb24gZW52aXJvbm1lbnQuXG4gKlxuICogTk9URTog
VGhpcyB3aWxsIG5vdCB3b3JrIGNvcnJlY3RseSBmb3Igbm9uLWdlbmVyaWMgZXZlbnRzIHN1Y2gg
YXMgYGNoYW5nZWAsXG4gKiBgcmVzZXRgLCBgbG9hZGAsIGBlcnJvcmAsIGFuZCBgc2VsZWN0YC5c
biAqXG4gKiBCb3Jyb3dzIGZyb20gTW9kZXJuaXpyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBl
dmVudE5hbWVTdWZmaXggRXZlbnQgbmFtZSwgZS5nLiBcImNsaWNrXCIuXG4gKiBAcGFyYW0gez9i
b29sZWFufSBjYXB0dXJlIENoZWNrIGlmIHRoZSBjYXB0dXJlIHBoYXNlIGlzIHN1cHBvcnRlZC5c
biAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGV2ZW50IGlzIHN1cHBvcnRlZC5cbiAq
IEBpbnRlcm5hbFxuICogQGxpY2Vuc2UgTW9kZXJuaXpyIDMuMC4wcHJlIChDdXN0b20gQnVpbGQp
IHwgTUlUXG4gKi9cbmZ1bmN0aW9uIGlzRXZlbnRTdXBwb3J0ZWQoZXZlbnROYW1lU3VmZml4LCBj
YXB0dXJlKSB7XG4gIGlmICghRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NIHx8IGNhcHR1
cmUgJiYgISgnYWRkRXZlbnRMaXN0ZW5lcicgaW4gZG9jdW1lbnQpKSB7XG4gICAgcmV0dXJuIGZh
bHNlO1xuICB9XG5cbiAgdmFyIGV2ZW50TmFtZSA9ICdvbicgKyBldmVudE5hbWVTdWZmaXg7XG4g
IHZhciBpc1N1cHBvcnRlZCA9IGV2ZW50TmFtZSBpbiBkb2N1bWVudDtcblxuICBpZiAoIWlzU3Vw
cG9ydGVkKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShldmVudE5hbWUsICdyZXR1cm47Jyk7XG4gICAg
aXNTdXBwb3J0ZWQgPSB0eXBlb2YgZWxlbWVudFtldmVudE5hbWVdID09PSAnZnVuY3Rpb24nO1xu
ICB9XG5cbiAgaWYgKCFpc1N1cHBvcnRlZCAmJiB1c2VIYXNGZWF0dXJlICYmIGV2ZW50TmFtZVN1
ZmZpeCA9PT0gJ3doZWVsJykge1xuICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIHRlc3Qg
c3VwcG9ydCBmb3IgdGhlIGB3aGVlbGAgZXZlbnQgaW4gSUU5Ky5cbiAgICBpc1N1cHBvcnRlZCA9
IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoJ0V2ZW50cy53aGVlbCcsICczLjAn
KTtcbiAgfVxuXG4gIHJldHVybiBpc1N1cHBvcnRlZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBp
c0V2ZW50U3VwcG9ydGVkO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09U
RVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvaXNFdmVudFN1cHBvcnRlZC5qc1xu
Ly8gbW9kdWxlIGlkID0gMzVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBUcmFuc2xhdGlvbiBm
cm9tIG1vZGlmaWVyIGtleSB0byB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSBpbiB0aGUgZXZlbnQu
XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8ja2V5cy1N
b2RpZmllcnNcbiAqL1xuXG52YXIgbW9kaWZpZXJLZXlUb1Byb3AgPSB7XG4gIEFsdDogJ2FsdEtl
eScsXG4gIENvbnRyb2w6ICdjdHJsS2V5JyxcbiAgTWV0YTogJ21ldGFLZXknLFxuICBTaGlmdDog
J3NoaWZ0S2V5J1xufTtcblxuLy8gSUU4IGRvZXMgbm90IGltcGxlbWVudCBnZXRNb2RpZmllclN0
YXRlIHNvIHdlIHNpbXBseSBtYXAgaXQgdG8gdGhlIG9ubHlcbi8vIG1vZGlmaWVyIGtleXMgZXhw
b3NlZCBieSB0aGUgZXZlbnQgaXRzZWxmLCBkb2VzIG5vdCBzdXBwb3J0IExvY2sta2V5cy5cbi8v
IEN1cnJlbnRseSwgYWxsIG1ham9yIGJyb3dzZXJzIGV4Y2VwdCBDaHJvbWUgc2VlbXMgdG8gc3Vw
cG9ydCBMb2NrLWtleXMuXG5mdW5jdGlvbiBtb2RpZmllclN0YXRlR2V0dGVyKGtleUFyZykge1xu
ICB2YXIgc3ludGhldGljRXZlbnQgPSB0aGlzO1xuICB2YXIgbmF0aXZlRXZlbnQgPSBzeW50aGV0
aWNFdmVudC5uYXRpdmVFdmVudDtcbiAgaWYgKG5hdGl2ZUV2ZW50LmdldE1vZGlmaWVyU3RhdGUp
IHtcbiAgICByZXR1cm4gbmF0aXZlRXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZShrZXlBcmcpO1xuICB9
XG4gIHZhciBrZXlQcm9wID0gbW9kaWZpZXJLZXlUb1Byb3Bba2V5QXJnXTtcbiAgcmV0dXJuIGtl
eVByb3AgPyAhIW5hdGl2ZUV2ZW50W2tleVByb3BdIDogZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdl
dEV2ZW50TW9kaWZpZXJTdGF0ZShuYXRpdmVFdmVudCkge1xuICByZXR1cm4gbW9kaWZpZXJTdGF0
ZUdldHRlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudE1vZGlmaWVyU3RhdGU7XG5c
blxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9nZXRFdmVudE1vZGlmaWVyU3RhdGUuanNcbi8vIG1vZHVsZSBpZCA9
IDM2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01MYXp5VHJlZSA9IHJlcXVpcmUoJy4vRE9NTGF6
eVRyZWUnKTtcbnZhciBEYW5nZXIgPSByZXF1aXJlKCcuL0RhbmdlcicpO1xudmFyIFJlYWN0RE9N
Q29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIg
UmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7
XG5cbnZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uID0gcmVxdWlyZSgnLi9j
cmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uJyk7XG52YXIgc2V0SW5uZXJIVE1MID0g
cmVxdWlyZSgnLi9zZXRJbm5lckhUTUwnKTtcbnZhciBzZXRUZXh0Q29udGVudCA9IHJlcXVpcmUo
Jy4vc2V0VGV4dENvbnRlbnQnKTtcblxuZnVuY3Rpb24gZ2V0Tm9kZUFmdGVyKHBhcmVudE5vZGUs
IG5vZGUpIHtcbiAgLy8gU3BlY2lhbCBjYXNlIGZvciB0ZXh0IGNvbXBvbmVudHMsIHdoaWNoIHJl
dHVybiBbb3BlbiwgY2xvc2VdIGNvbW1lbnRzXG4gIC8vIGZyb20gZ2V0SG9zdE5vZGUuXG4gIGlm
IChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgbm9kZSA9IG5vZGVbMV07XG4gIH1cbiAgcmV0
dXJuIG5vZGUgPyBub2RlLm5leHRTaWJsaW5nIDogcGFyZW50Tm9kZS5maXJzdENoaWxkO1xufVxu
XG4vKipcbiAqIEluc2VydHMgYGNoaWxkTm9kZWAgYXMgYSBjaGlsZCBvZiBgcGFyZW50Tm9kZWAg
YXQgdGhlIGBpbmRleGAuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBwYXJlbnROb2RlIFBh
cmVudCBub2RlIGluIHdoaWNoIHRvIGluc2VydC5cbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY2hp
bGROb2RlIENoaWxkIG5vZGUgdG8gaW5zZXJ0LlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IElu
ZGV4IGF0IHdoaWNoIHRvIGluc2VydCB0aGUgY2hpbGQuXG4gKiBAaW50ZXJuYWxcbiAqL1xudmFy
IGluc2VydENoaWxkQXQgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0
aW9uIChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpIHtcbiAgLy8gV2UgcmVs
eSBleGNsdXNpdmVseSBvbiBgaW5zZXJ0QmVmb3JlKG5vZGUsIG51bGwpYCBpbnN0ZWFkIG9mIGFs
c28gdXNpbmdcbiAgLy8gYGFwcGVuZENoaWxkKG5vZGUpYC4gKFVzaW5nIGB1bmRlZmluZWRgIGlz
IG5vdCBhbGxvd2VkIGJ5IGFsbCBicm93c2VycyBzb1xuICAvLyB3ZSBhcmUgY2FyZWZ1bCB0byB1
c2UgYG51bGxgLilcbiAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoY2hpbGROb2RlLCByZWZlcmVu
Y2VOb2RlKTtcbn0pO1xuXG5mdW5jdGlvbiBpbnNlcnRMYXp5VHJlZUNoaWxkQXQocGFyZW50Tm9k
ZSwgY2hpbGRUcmVlLCByZWZlcmVuY2VOb2RlKSB7XG4gIERPTUxhenlUcmVlLmluc2VydFRyZWVC
ZWZvcmUocGFyZW50Tm9kZSwgY2hpbGRUcmVlLCByZWZlcmVuY2VOb2RlKTtcbn1cblxuZnVuY3Rp
b24gbW92ZUNoaWxkKHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgcmVmZXJlbmNlTm9kZSkge1xuICBp
ZiAoQXJyYXkuaXNBcnJheShjaGlsZE5vZGUpKSB7XG4gICAgbW92ZURlbGltaXRlZFRleHQocGFy
ZW50Tm9kZSwgY2hpbGROb2RlWzBdLCBjaGlsZE5vZGVbMV0sIHJlZmVyZW5jZU5vZGUpO1xuICB9
IGVsc2Uge1xuICAgIGluc2VydENoaWxkQXQocGFyZW50Tm9kZSwgY2hpbGROb2RlLCByZWZlcmVu
Y2VOb2RlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVDaGlsZChwYXJlbnROb2RlLCBjaGls
ZE5vZGUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGROb2RlKSkge1xuICAgIHZhciBjbG9z
aW5nQ29tbWVudCA9IGNoaWxkTm9kZVsxXTtcbiAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGVbMF07
XG4gICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIGNsb3NpbmdD
b21tZW50KTtcbiAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsb3NpbmdDb21tZW50KTtcbiAg
fVxuICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZSk7XG59XG5cbmZ1bmN0aW9uIG1v
dmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUsIG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVu
dCwgcmVmZXJlbmNlTm9kZSkge1xuICB2YXIgbm9kZSA9IG9wZW5pbmdDb21tZW50O1xuICB3aGls
ZSAodHJ1ZSkge1xuICAgIHZhciBuZXh0Tm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgaW5z
ZXJ0Q2hpbGRBdChwYXJlbnROb2RlLCBub2RlLCByZWZlcmVuY2VOb2RlKTtcbiAgICBpZiAobm9k
ZSA9PT0gY2xvc2luZ0NvbW1lbnQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBub2RlID0g
bmV4dE5vZGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnRO
b2RlLCBzdGFydE5vZGUsIGNsb3NpbmdDb21tZW50KSB7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAg
dmFyIG5vZGUgPSBzdGFydE5vZGUubmV4dFNpYmxpbmc7XG4gICAgaWYgKG5vZGUgPT09IGNsb3Np
bmdDb21tZW50KSB7XG4gICAgICAvLyBUaGUgY2xvc2luZyBjb21tZW50IGlzIHJlbW92ZWQgYnkg
UmVhY3RNdWx0aUNoaWxkLlxuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxh
Y2VEZWxpbWl0ZWRUZXh0KG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCwgc3RyaW5nVGV4
dCkge1xuICB2YXIgcGFyZW50Tm9kZSA9IG9wZW5pbmdDb21tZW50LnBhcmVudE5vZGU7XG4gIHZh
ciBub2RlQWZ0ZXJDb21tZW50ID0gb3BlbmluZ0NvbW1lbnQubmV4dFNpYmxpbmc7XG4gIGlmIChu
b2RlQWZ0ZXJDb21tZW50ID09PSBjbG9zaW5nQ29tbWVudCkge1xuICAgIC8vIFRoZXJlIGFyZSBu
byB0ZXh0IG5vZGVzIGJldHdlZW4gdGhlIG9wZW5pbmcgYW5kIGNsb3NpbmcgY29tbWVudHM7IGlu
c2VydFxuICAgIC8vIGEgbmV3IG9uZSBpZiBzdHJpbmdUZXh0IGlzbid0IGVtcHR5LlxuICAgIGlm
IChzdHJpbmdUZXh0KSB7XG4gICAgICBpbnNlcnRDaGlsZEF0KHBhcmVudE5vZGUsIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKHN0cmluZ1RleHQpLCBub2RlQWZ0ZXJDb21tZW50KTtcbiAgICB9XG4g
IH0gZWxzZSB7XG4gICAgaWYgKHN0cmluZ1RleHQpIHtcbiAgICAgIC8vIFNldCB0aGUgdGV4dCBj
b250ZW50IG9mIHRoZSBmaXJzdCBub2RlIGFmdGVyIHRoZSBvcGVuaW5nIGNvbW1lbnQsIGFuZFxu
ICAgICAgLy8gcmVtb3ZlIGFsbCBmb2xsb3dpbmcgbm9kZXMgdXAgdW50aWwgdGhlIGNsb3Npbmcg
Y29tbWVudC5cbiAgICAgIHNldFRleHRDb250ZW50KG5vZGVBZnRlckNvbW1lbnQsIHN0cmluZ1Rl
eHQpO1xuICAgICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBub2RlQWZ0ZXJDb21t
ZW50LCBjbG9zaW5nQ29tbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZURlbGltaXRl
ZFRleHQocGFyZW50Tm9kZSwgb3BlbmluZ0NvbW1lbnQsIGNsb3NpbmdDb21tZW50KTtcbiAgICB9
XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAg
ICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUo
b3BlbmluZ0NvbW1lbnQpLl9kZWJ1Z0lELFxuICAgICAgdHlwZTogJ3JlcGxhY2UgdGV4dCcsXG4g
ICAgICBwYXlsb2FkOiBzdHJpbmdUZXh0XG4gICAgfSk7XG4gIH1cbn1cblxudmFyIGRhbmdlcm91
c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwID0gRGFuZ2VyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVX
aXRoTWFya3VwO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAgPSBmdW5jdGlvbiAob2xkQ2hpbGQs
IG1hcmt1cCwgcHJldkluc3RhbmNlKSB7XG4gICAgRGFuZ2VyLmRhbmdlcm91c2x5UmVwbGFjZU5v
ZGVXaXRoTWFya3VwKG9sZENoaWxkLCBtYXJrdXApO1xuICAgIGlmIChwcmV2SW5zdGFuY2UuX2Rl
YnVnSUQgIT09IDApIHtcbiAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhv
c3RPcGVyYXRpb24oe1xuICAgICAgICBpbnN0YW5jZUlEOiBwcmV2SW5zdGFuY2UuX2RlYnVnSUQs
XG4gICAgICAgIHR5cGU6ICdyZXBsYWNlIHdpdGgnLFxuICAgICAgICBwYXlsb2FkOiBtYXJrdXAu
dG9TdHJpbmcoKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBuZXh0SW5zdGFu
Y2UgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShtYXJrdXAubm9k
ZSk7XG4gICAgICBpZiAobmV4dEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIFJl
YWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICAg
IGluc3RhbmNlSUQ6IG5leHRJbnN0YW5jZS5fZGVidWdJRCxcbiAgICAgICAgICB0eXBlOiAnbW91
bnQnLFxuICAgICAgICAgIHBheWxvYWQ6IG1hcmt1cC50b1N0cmluZygpXG4gICAgICAgIH0pO1xu
ICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBPcGVyYXRpb25zIGZvciB1cGRhdGlu
ZyB3aXRoIERPTSBjaGlsZHJlbi5cbiAqL1xudmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9IHtc
biAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGRhbmdlcm91c2x5UmVwbGFjZU5v
ZGVXaXRoTWFya3VwLFxuXG4gIHJlcGxhY2VEZWxpbWl0ZWRUZXh0OiByZXBsYWNlRGVsaW1pdGVk
VGV4dCxcblxuICAvKipcbiAgICogVXBkYXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHBy
b2Nlc3NpbmcgYSBzZXJpZXMgb2YgdXBkYXRlcy4gVGhlXG4gICAqIHVwZGF0ZSBjb25maWd1cmF0
aW9ucyBhcmUgZWFjaCBleHBlY3RlZCB0byBoYXZlIGEgYHBhcmVudE5vZGVgIHByb3BlcnR5Llxu
ICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PG9iamVjdD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUg
Y29uZmlndXJhdGlvbnMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvY2Vzc1VwZGF0ZXM6
IGZ1bmN0aW9uIChwYXJlbnROb2RlLCB1cGRhdGVzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBwYXJlbnROb2RlRGVidWdJRCA9
IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKHBhcmVudE5vZGUpLl9k
ZWJ1Z0lEO1xuICAgIH1cblxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdXBkYXRlcy5sZW5ndGg7
IGsrKykge1xuICAgICAgdmFyIHVwZGF0ZSA9IHVwZGF0ZXNba107XG4gICAgICBzd2l0Y2ggKHVw
ZGF0ZS50eXBlKSB7XG4gICAgICAgIGNhc2UgJ0lOU0VSVF9NQVJLVVAnOlxuICAgICAgICAgIGlu
c2VydExhenlUcmVlQ2hpbGRBdChwYXJlbnROb2RlLCB1cGRhdGUuY29udGVudCwgZ2V0Tm9kZUFm
dGVyKHBhcmVudE5vZGUsIHVwZGF0ZS5hZnRlck5vZGUpKTtcbiAgICAgICAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgUmVhY3RJbnN0
cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAgICAgICAgIGlu
c3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELFxuICAgICAgICAgICAgICB0eXBlOiAnaW5zZXJ0
IGNoaWxkJyxcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgIHRvSW5k
ZXg6IHVwZGF0ZS50b0luZGV4LFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHVwZGF0ZS5jb250
ZW50LnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAg
ICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdNT1ZFX0VYSVNUSU5HJzpcbiAg
ICAgICAgICBtb3ZlQ2hpbGQocGFyZW50Tm9kZSwgdXBkYXRlLmZyb21Ob2RlLCBnZXROb2RlQWZ0
ZXIocGFyZW50Tm9kZSwgdXBkYXRlLmFmdGVyTm9kZSkpO1xuICAgICAgICAgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICBSZWFjdEluc3Ry
dW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgICAgICAgaW5z
dGFuY2VJRDogcGFyZW50Tm9kZURlYnVnSUQsXG4gICAgICAgICAgICAgIHR5cGU6ICdtb3ZlIGNo
aWxkJyxcbiAgICAgICAgICAgICAgcGF5bG9hZDogeyBmcm9tSW5kZXg6IHVwZGF0ZS5mcm9tSW5k
ZXgsIHRvSW5kZXg6IHVwZGF0ZS50b0luZGV4IH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAg
IH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnU0VUX01BUktVUCc6XG4gICAgICAg
ICAgc2V0SW5uZXJIVE1MKHBhcmVudE5vZGUsIHVwZGF0ZS5jb250ZW50KTtcbiAgICAgICAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAg
UmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAg
ICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELFxuICAgICAgICAgICAgICB0eXBl
OiAncmVwbGFjZSBjaGlsZHJlbicsXG4gICAgICAgICAgICAgIHBheWxvYWQ6IHVwZGF0ZS5jb250
ZW50LnRvU3RyaW5nKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBi
cmVhaztcbiAgICAgICAgY2FzZSAnVEVYVF9DT05URU5UJzpcbiAgICAgICAgICBzZXRUZXh0Q29u
dGVudChwYXJlbnROb2RlLCB1cGRhdGUuY29udGVudCk7XG4gICAgICAgICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICAgICAgICBpbnN0
YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCxcbiAgICAgICAgICAgICAgdHlwZTogJ3JlcGxhY2Ug
dGV4dCcsXG4gICAgICAgICAgICAgIHBheWxvYWQ6IHVwZGF0ZS5jb250ZW50LnRvU3RyaW5nKClc
biAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAg
Y2FzZSAnUkVNT1ZFX05PREUnOlxuICAgICAgICAgIHJlbW92ZUNoaWxkKHBhcmVudE5vZGUsIHVw
ZGF0ZS5mcm9tTm9kZSk7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2Rl
RGVidWdJRCxcbiAgICAgICAgICAgICAgdHlwZTogJ3JlbW92ZSBjaGlsZCcsXG4gICAgICAgICAg
ICAgIHBheWxvYWQ6IHsgZnJvbUluZGV4OiB1cGRhdGUuZnJvbUluZGV4IH1cbiAgICAgICAgICAg
IH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1c
bn07XG5cbm1vZHVsZS5leHBvcnRzID0gRE9NQ2hpbGRyZW5PcGVyYXRpb25zO1xuXG5cbi8vLy8v
Ly8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvRE9NQ2hpbGRyZW5PcGVyYXRpb25zLmpzXG4vLyBtb2R1bGUgaWQgPSAzN1xuLy8g
bW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG52YXIgRE9NTmFtZXNwYWNlcyA9IHtcbiAgaHRtbDogJ2h0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwnLFxuICBtYXRobWw6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01h
dGgvTWF0aE1MJyxcbiAgc3ZnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnXG59O1xuXG5t
b2R1bGUuZXhwb3J0cyA9IERPTU5hbWVzcGFjZXM7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4v
LyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9ET01OYW1l
c3BhY2VzLmpzXG4vLyBtb2R1bGUgaWQgPSAzOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipc
biAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuLyogZ2xvYmFscyBNU0FwcCAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbi8qKlxuICogQ3JlYXRlIGEgZnVuY3Rpb24gd2hpY2ggaGFzICd1bnNhZmUn
IHByaXZpbGVnZXMgKHJlcXVpcmVkIGJ5IHdpbmRvd3M4IGFwcHMpXG4gKi9cblxudmFyIGNyZWF0
ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSBmdW5jdGlvbiAoZnVuYykge1xuICBpZiAo
dHlwZW9mIE1TQXBwICE9PSAndW5kZWZpbmVkJyAmJiBNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5j
dGlvbikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMykge1xu
ICAgICAgTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24gKCkge1xuICAgICAg
ICByZXR1cm4gZnVuYyhhcmcwLCBhcmcxLCBhcmcyLCBhcmczKTtcbiAgICAgIH0pO1xuICAgIH07
XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRz
ID0gY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbjtcblxuXG4vLy8vLy8vLy8vLy8v
Ly8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGli
L2NyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24uanNcbi8vIG1vZHVsZSBpZCA9IDM5
XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQ
cm9kSW52YXJpYW50Jyk7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4v
UmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcbnZhciBwcm9wVHlwZXNGYWN0b3J5ID0gcmVxdWlyZSgn
cHJvcC10eXBlcy9mYWN0b3J5Jyk7XG5cbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9S
ZWFjdCcpO1xudmFyIFByb3BUeXBlcyA9IHByb3BUeXBlc0ZhY3RvcnkoUmVhY3QuaXNWYWxpZEVs
ZW1lbnQpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7
XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIGhhc1Jl
YWRPbmx5VmFsdWUgPSB7XG4gIGJ1dHRvbjogdHJ1ZSxcbiAgY2hlY2tib3g6IHRydWUsXG4gIGlt
YWdlOiB0cnVlLFxuICBoaWRkZW46IHRydWUsXG4gIHJhZGlvOiB0cnVlLFxuICByZXNldDogdHJ1
ZSxcbiAgc3VibWl0OiB0cnVlXG59O1xuXG5mdW5jdGlvbiBfYXNzZXJ0U2luZ2xlTGluayhpbnB1
dFByb3BzKSB7XG4gICEoaW5wdXRQcm9wcy5jaGVja2VkTGluayA9PSBudWxsIHx8IGlucHV0UHJv
cHMudmFsdWVMaW5rID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgY2hlY2tlZExpbmsgYW5k
IGEgdmFsdWVMaW5rLiBJZiB5b3Ugd2FudCB0byB1c2UgY2hlY2tlZExpbmssIHlvdSBwcm9iYWJs
eSBkb25cXCd0IHdhbnQgdG8gdXNlIHZhbHVlTGluayBhbmQgdmljZSB2ZXJzYS4nKSA6IF9wcm9k
SW52YXJpYW50KCc4NycpIDogdm9pZCAwO1xufVxuZnVuY3Rpb24gX2Fzc2VydFZhbHVlTGluayhp
bnB1dFByb3BzKSB7XG4gIF9hc3NlcnRTaW5nbGVMaW5rKGlucHV0UHJvcHMpO1xuICAhKGlucHV0
UHJvcHMudmFsdWUgPT0gbnVsbCAmJiBpbnB1dFByb3BzLm9uQ2hhbmdlID09IG51bGwpID8gcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nh
bm5vdCBwcm92aWRlIGEgdmFsdWVMaW5rIGFuZCBhIHZhbHVlIG9yIG9uQ2hhbmdlIGV2ZW50LiBJ
ZiB5b3Ugd2FudCB0byB1c2UgdmFsdWUgb3Igb25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25cXCd0
IHdhbnQgdG8gdXNlIHZhbHVlTGluay4nKSA6IF9wcm9kSW52YXJpYW50KCc4OCcpIDogdm9pZCAw
O1xufVxuXG5mdW5jdGlvbiBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcykge1xuICBfYXNz
ZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKTtcbiAgIShpbnB1dFByb3BzLmNoZWNrZWQgPT0gbnVs
bCAmJiBpbnB1dFByb3BzLm9uQ2hhbmdlID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgY2hl
Y2tlZExpbmsgYW5kIGEgY2hlY2tlZCBwcm9wZXJ0eSBvciBvbkNoYW5nZSBldmVudC4gSWYgeW91
IHdhbnQgdG8gdXNlIGNoZWNrZWQgb3Igb25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25cXCd0IHdh
bnQgdG8gdXNlIGNoZWNrZWRMaW5rJykgOiBfcHJvZEludmFyaWFudCgnODknKSA6IHZvaWQgMDtc
bn1cblxudmFyIHByb3BUeXBlcyA9IHtcbiAgdmFsdWU6IGZ1bmN0aW9uIChwcm9wcywgcHJvcE5h
bWUsIGNvbXBvbmVudE5hbWUpIHtcbiAgICBpZiAoIXByb3BzW3Byb3BOYW1lXSB8fCBoYXNSZWFk
T25seVZhbHVlW3Byb3BzLnR5cGVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5
IHx8IHByb3BzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0
dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYHZhbHVlYCBwcm9wIHRvIGEgZm9ybSBmaWVs
ZCB3aXRob3V0IGFuICcgKyAnYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEg
cmVhZC1vbmx5IGZpZWxkLiBJZiAnICsgJ3RoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2Ug
YGRlZmF1bHRWYWx1ZWAuIE90aGVyd2lzZSwgJyArICdzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3Ig
YHJlYWRPbmx5YC4nKTtcbiAgfSxcbiAgY2hlY2tlZDogZnVuY3Rpb24gKHByb3BzLCBwcm9wTmFt
ZSwgY29tcG9uZW50TmFtZSkge1xuICAgIGlmICghcHJvcHNbcHJvcE5hbWVdIHx8IHByb3BzLm9u
Q2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7XG4gICAgICByZXR1
cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYGNo
ZWNrZWRgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gJyArICdgb25DaGFuZ2VgIGhh
bmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmICcgKyAndGhlIGZp
ZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdENoZWNrZWRgLiBPdGhlcndpc2UsICcg
KyAnc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuJyk7XG4gIH0sXG4gIG9uQ2hh
bmdlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxudmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xu
ZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7XG4gIGlmIChvd25l
cikge1xuICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgIGlmIChuYW1lKSB7XG4g
ICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4n
O1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbi8qKlxuICogUHJvdmlkZSBhIGxpbmtl
ZCBgdmFsdWVgIGF0dHJpYnV0ZSBmb3IgY29udHJvbGxlZCBmb3Jtcy4gWW91IHNob3VsZCBub3Qg
dXNlXG4gKiB0aGlzIG91dHNpZGUgb2YgdGhlIFJlYWN0RE9NIGNvbnRyb2xsZWQgZm9ybSBjb21w
b25lbnRzLlxuICovXG52YXIgTGlua2VkVmFsdWVVdGlscyA9IHtcbiAgY2hlY2tQcm9wVHlwZXM6
IGZ1bmN0aW9uICh0YWdOYW1lLCBwcm9wcywgb3duZXIpIHtcbiAgICBmb3IgKHZhciBwcm9wTmFt
ZSBpbiBwcm9wVHlwZXMpIHtcbiAgICAgIGlmIChwcm9wVHlwZXMuaGFzT3duUHJvcGVydHkocHJv
cE5hbWUpKSB7XG4gICAgICAgIHZhciBlcnJvciA9IHByb3BUeXBlc1twcm9wTmFtZV0ocHJvcHMs
IHByb3BOYW1lLCB0YWdOYW1lLCAncHJvcCcsIG51bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtc
biAgICAgIH1cbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVz
c2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7XG4gICAgICAgIC8vIE9ubHkgbW9uaXRvciB0
aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxu
ICAgICAgICAvLyBzYW1lIGVycm9yLlxuICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3Iu
bWVzc2FnZV0gPSB0cnVlO1xuXG4gICAgICAgIHZhciBhZGRlbmR1bSA9IGdldERlY2xhcmF0aW9u
RXJyb3JBZGRlbmR1bShvd25lcik7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkIGZvcm0gcHJvcFR5cGU6ICVzJXMn
LCBlcnJvci5tZXNzYWdlLCBhZGRlbmR1bSkgOiB2b2lkIDA7XG4gICAgICB9XG4gICAgfVxuICB9
LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9y
bSBjb21wb25lbnRcbiAgICogQHJldHVybiB7Kn0gY3VycmVudCB2YWx1ZSBvZiB0aGUgaW5wdXQg
ZWl0aGVyIGZyb20gdmFsdWUgcHJvcCBvciBsaW5rLlxuICAgKi9cbiAgZ2V0VmFsdWU6IGZ1bmN0
aW9uIChpbnB1dFByb3BzKSB7XG4gICAgaWYgKGlucHV0UHJvcHMudmFsdWVMaW5rKSB7XG4gICAg
ICBfYXNzZXJ0VmFsdWVMaW5rKGlucHV0UHJvcHMpO1xuICAgICAgcmV0dXJuIGlucHV0UHJvcHMu
dmFsdWVMaW5rLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZTtcbiAg
fSxcblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9yIGZv
cm0gY29tcG9uZW50XG4gICAqIEByZXR1cm4geyp9IGN1cnJlbnQgY2hlY2tlZCBzdGF0dXMgb2Yg
dGhlIGlucHV0IGVpdGhlciBmcm9tIGNoZWNrZWQgcHJvcFxuICAgKiAgICAgICAgICAgICBvciBs
aW5rLlxuICAgKi9cbiAgZ2V0Q2hlY2tlZDogZnVuY3Rpb24gKGlucHV0UHJvcHMpIHtcbiAgICBp
ZiAoaW5wdXRQcm9wcy5jaGVja2VkTGluaykge1xuICAgICAgX2Fzc2VydENoZWNrZWRMaW5rKGlu
cHV0UHJvcHMpO1xuICAgICAgcmV0dXJuIGlucHV0UHJvcHMuY2hlY2tlZExpbmsudmFsdWU7XG4g
ICAgfVxuICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWQ7XG4gIH0sXG5cbiAgLyoqXG4gICAq
IEBwYXJhbSB7b2JqZWN0fSBpbnB1dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVudFxuICAg
KiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBldmVudCBjaGFuZ2UgZXZlbnQgdG8gaGFuZGxlXG4g
ICAqL1xuICBleGVjdXRlT25DaGFuZ2U6IGZ1bmN0aW9uIChpbnB1dFByb3BzLCBldmVudCkge1xu
ICAgIGlmIChpbnB1dFByb3BzLnZhbHVlTGluaykge1xuICAgICAgX2Fzc2VydFZhbHVlTGluayhp
bnB1dFByb3BzKTtcbiAgICAgIHJldHVybiBpbnB1dFByb3BzLnZhbHVlTGluay5yZXF1ZXN0Q2hh
bmdlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChpbnB1dFByb3BzLmNoZWNr
ZWRMaW5rKSB7XG4gICAgICBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcyk7XG4gICAgICBy
ZXR1cm4gaW5wdXRQcm9wcy5jaGVja2VkTGluay5yZXF1ZXN0Q2hhbmdlKGV2ZW50LnRhcmdldC5j
aGVja2VkKTtcbiAgICB9IGVsc2UgaWYgKGlucHV0UHJvcHMub25DaGFuZ2UpIHtcbiAgICAgIHJl
dHVybiBpbnB1dFByb3BzLm9uQ2hhbmdlLmNhbGwodW5kZWZpbmVkLCBldmVudCk7XG4gICAgfVxu
ICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExpbmtlZFZhbHVlVXRpbHM7XG5cblxuLy8vLy8v
Ly8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL2xpYi9MaW5rZWRWYWx1ZVV0aWxzLmpzXG4vLyBtb2R1bGUgaWQgPSA0MFxuLy8gbW9kdWxl
IGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52
YXJpYW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQn
KTtcblxudmFyIGluamVjdGVkID0gZmFsc2U7XG5cbnZhciBSZWFjdENvbXBvbmVudEVudmlyb25t
ZW50ID0ge1xuICAvKipcbiAgICogT3B0aW9uYWxseSBpbmplY3RhYmxlIGhvb2sgZm9yIHN3YXBw
aW5nIG91dCBtb3VudCBpbWFnZXMgaW4gdGhlIG1pZGRsZSBvZlxuICAgKiB0aGUgdHJlZS5cbiAg
ICovXG4gIHJlcGxhY2VOb2RlV2l0aE1hcmt1cDogbnVsbCxcblxuICAvKipcbiAgICogT3B0aW9u
YWxseSBpbmplY3RhYmxlIGhvb2sgZm9yIHByb2Nlc3NpbmcgYSBxdWV1ZSBvZiBjaGlsZCB1cGRh
dGVzLiBXaWxsXG4gICAqIGxhdGVyIG1vdmUgaW50byBNdWx0aUNoaWxkQ29tcG9uZW50cy5cbiAg
ICovXG4gIHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IG51bGwsXG5cbiAgaW5qZWN0aW9uOiB7XG4g
ICAgaW5qZWN0RW52aXJvbm1lbnQ6IGZ1bmN0aW9uIChlbnZpcm9ubWVudCkge1xuICAgICAgISFp
bmplY3RlZCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudDogaW5qZWN0RW52aXJvbm1lbnQoKSBj
YW4gb25seSBiZSBjYWxsZWQgb25jZS4nKSA6IF9wcm9kSW52YXJpYW50KCcxMDQnKSA6IHZvaWQg
MDtcbiAgICAgIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQucmVwbGFjZU5vZGVXaXRoTWFya3Vw
ID0gZW52aXJvbm1lbnQucmVwbGFjZU5vZGVXaXRoTWFya3VwO1xuICAgICAgUmVhY3RDb21wb25l
bnRFbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzID0gZW52aXJvbm1lbnQucHJvY2Vz
c0NoaWxkcmVuVXBkYXRlcztcbiAgICAgIGluamVjdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07
XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudDtcblxuXG4vLy8v
Ly8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQuanNcbi8vIG1vZHVsZSBpZCA9IDQx
XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4g
KiBAdHlwZWNoZWNrc1xuICogXG4gKi9cblxuLyplc2xpbnQtZGlzYWJsZSBuby1zZWxmLWNvbXBh
cmUgKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJv
dG90eXBlLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIGlubGluZWQgT2JqZWN0LmlzIHBvbHlm
aWxsIHRvIGF2b2lkIHJlcXVpcmluZyBjb25zdW1lcnMgc2hpcCB0aGVpciBvd25cbiAqIGh0dHBz
Oi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJl
bmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9pc1xuICovXG5mdW5jdGlvbiBpcyh4LCB5KSB7XG4g
IC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1cbiAgaWYgKHggPT09IHkpIHtcbiAgICAvLyBTdGVwcyAx
LTUsIDctMTBcbiAgICAvLyBTdGVwcyA2LmItNi5lOiArMCAhPSAtMFxuICAgIC8vIEFkZGVkIHRo
ZSBub256ZXJvIHkgY2hlY2sgdG8gbWFrZSBGbG93IGhhcHB5LCBidXQgaXQgaXMgcmVkdW5kYW50
XG4gICAgcmV0dXJuIHggIT09IDAgfHwgeSAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHk7XG4gIH0g
ZWxzZSB7XG4gICAgLy8gU3RlcCA2LmE6IE5hTiA9PSBOYU5cbiAgICByZXR1cm4geCAhPT0geCAm
JiB5ICE9PSB5O1xuICB9XG59XG5cbi8qKlxuICogUGVyZm9ybXMgZXF1YWxpdHkgYnkgaXRlcmF0
aW5nIHRocm91Z2gga2V5cyBvbiBhbiBvYmplY3QgYW5kIHJldHVybmluZyBmYWxzZVxuICogd2hl
biBhbnkga2V5IGhhcyB2YWx1ZXMgd2hpY2ggYXJlIG5vdCBzdHJpY3RseSBlcXVhbCBiZXR3ZWVu
IHRoZSBhcmd1bWVudHMuXG4gKiBSZXR1cm5zIHRydWUgd2hlbiB0aGUgdmFsdWVzIG9mIGFsbCBr
ZXlzIGFyZSBzdHJpY3RseSBlcXVhbC5cbiAqL1xuZnVuY3Rpb24gc2hhbGxvd0VxdWFsKG9iakEs
IG9iakIpIHtcbiAgaWYgKGlzKG9iakEsIG9iakIpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1c
blxuICBpZiAodHlwZW9mIG9iakEgIT09ICdvYmplY3QnIHx8IG9iakEgPT09IG51bGwgfHwgdHlw
ZW9mIG9iakIgIT09ICdvYmplY3QnIHx8IG9iakIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFs
c2U7XG4gIH1cblxuICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhvYmpBKTtcbiAgdmFyIGtleXNC
ID0gT2JqZWN0LmtleXMob2JqQik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVu
Z3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gVGVzdCBmb3IgQSdzIGtleXMg
ZGlmZmVyZW50IGZyb20gQi5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzQS5sZW5ndGg7IGkr
Kykge1xuICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChvYmpCLCBrZXlzQVtpXSkgfHwgIWlz
KG9iakFba2V5c0FbaV1dLCBvYmpCW2tleXNBW2ldXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtc
biAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaGFs
bG93RXF1YWw7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8g
Li9ub2RlX21vZHVsZXMvZmJqcy9saWIvc2hhbGxvd0VxdWFsLmpzXG4vLyBtb2R1bGUgaWQgPSA0
MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEdpdmVuIGEgYHByZXZFbGVtZW50YCBhbmQgYG5l
eHRFbGVtZW50YCwgZGV0ZXJtaW5lcyBpZiB0aGUgZXhpc3RpbmdcbiAqIGluc3RhbmNlIHNob3Vs
ZCBiZSB1cGRhdGVkIGFzIG9wcG9zZWQgdG8gYmVpbmcgZGVzdHJveWVkIG9yIHJlcGxhY2VkIGJ5
IGEgbmV3XG4gKiBpbnN0YW5jZS4gQm90aCBhcmd1bWVudHMgYXJlIGVsZW1lbnRzLiBUaGlzIGVu
c3VyZXMgdGhhdCB0aGlzIGxvZ2ljIGNhblxuICogb3BlcmF0ZSBvbiBzdGF0ZWxlc3MgdHJlZXMg
d2l0aG91dCBhbnkgYmFja2luZyBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0gez9vYmplY3R9IHBy
ZXZFbGVtZW50XG4gKiBAcGFyYW0gez9vYmplY3R9IG5leHRFbGVtZW50XG4gKiBAcmV0dXJuIHti
b29sZWFufSBUcnVlIGlmIHRoZSBleGlzdGluZyBpbnN0YW5jZSBzaG91bGQgYmUgdXBkYXRlZC5c
biAqIEBwcm90ZWN0ZWRcbiAqL1xuXG5mdW5jdGlvbiBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVu
dChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpIHtcbiAgdmFyIHByZXZFbXB0eSA9IHByZXZFbGVt
ZW50ID09PSBudWxsIHx8IHByZXZFbGVtZW50ID09PSBmYWxzZTtcbiAgdmFyIG5leHRFbXB0eSA9
IG5leHRFbGVtZW50ID09PSBudWxsIHx8IG5leHRFbGVtZW50ID09PSBmYWxzZTtcbiAgaWYgKHBy
ZXZFbXB0eSB8fCBuZXh0RW1wdHkpIHtcbiAgICByZXR1cm4gcHJldkVtcHR5ID09PSBuZXh0RW1w
dHk7XG4gIH1cblxuICB2YXIgcHJldlR5cGUgPSB0eXBlb2YgcHJldkVsZW1lbnQ7XG4gIHZhciBu
ZXh0VHlwZSA9IHR5cGVvZiBuZXh0RWxlbWVudDtcbiAgaWYgKHByZXZUeXBlID09PSAnc3RyaW5n
JyB8fCBwcmV2VHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gbmV4dFR5cGUgPT09ICdz
dHJpbmcnIHx8IG5leHRUeXBlID09PSAnbnVtYmVyJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4g
bmV4dFR5cGUgPT09ICdvYmplY3QnICYmIHByZXZFbGVtZW50LnR5cGUgPT09IG5leHRFbGVtZW50
LnR5cGUgJiYgcHJldkVsZW1lbnQua2V5ID09PSBuZXh0RWxlbWVudC5rZXk7XG4gIH1cbn1cblxu
bW9kdWxlLmV4cG9ydHMgPSBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudDtcblxuXG4vLy8vLy8v
Ly8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1k
b20vbGliL3Nob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50LmpzXG4vLyBtb2R1bGUgaWQgPSA0M1xu
Ly8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogRXNjYXBlIGFuZCB3cmFwIGtleSBzbyBpdCBp
cyBzYWZlIHRvIHVzZSBhcyBhIHJlYWN0aWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRv
IGJlIGVzY2FwZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSBlc2NhcGVkIGtleS5cbiAqL1xu
XG5mdW5jdGlvbiBlc2NhcGUoa2V5KSB7XG4gIHZhciBlc2NhcGVSZWdleCA9IC9bPTpdL2c7XG4g
IHZhciBlc2NhcGVyTG9va3VwID0ge1xuICAgICc9JzogJz0wJyxcbiAgICAnOic6ICc9MidcbiAg
fTtcbiAgdmFyIGVzY2FwZWRTdHJpbmcgPSAoJycgKyBrZXkpLnJlcGxhY2UoZXNjYXBlUmVnZXgs
IGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHJldHVybiBlc2NhcGVyTG9va3VwW21hdGNoXTtcbiAg
fSk7XG5cbiAgcmV0dXJuICckJyArIGVzY2FwZWRTdHJpbmc7XG59XG5cbi8qKlxuICogVW5lc2Nh
cGUgYW5kIHVud3JhcCBrZXkgZm9yIGh1bWFuLXJlYWRhYmxlIGRpc3BsYXlcbiAqXG4gKiBAcGFy
YW0ge3N0cmluZ30ga2V5IHRvIHVuZXNjYXBlLlxuICogQHJldHVybiB7c3RyaW5nfSB0aGUgdW5l
c2NhcGVkIGtleS5cbiAqL1xuZnVuY3Rpb24gdW5lc2NhcGUoa2V5KSB7XG4gIHZhciB1bmVzY2Fw
ZVJlZ2V4ID0gLyg9MHw9MikvZztcbiAgdmFyIHVuZXNjYXBlckxvb2t1cCA9IHtcbiAgICAnPTAn
OiAnPScsXG4gICAgJz0yJzogJzonXG4gIH07XG4gIHZhciBrZXlTdWJzdHJpbmcgPSBrZXlbMF0g
PT09ICcuJyAmJiBrZXlbMV0gPT09ICckJyA/IGtleS5zdWJzdHJpbmcoMikgOiBrZXkuc3Vic3Ry
aW5nKDEpO1xuXG4gIHJldHVybiAoJycgKyBrZXlTdWJzdHJpbmcpLnJlcGxhY2UodW5lc2NhcGVS
ZWdleCwgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgcmV0dXJuIHVuZXNjYXBlckxvb2t1cFttYXRj
aF07XG4gIH0pO1xufVxuXG52YXIgS2V5RXNjYXBlVXRpbHMgPSB7XG4gIGVzY2FwZTogZXNjYXBl
LFxuICB1bmVzY2FwZTogdW5lc2NhcGVcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gS2V5RXNjYXBl
VXRpbHM7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9LZXlFc2NhcGVVdGlscy5qc1xuLy8gbW9kdWxlIGlk
ID0gNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNS1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9y
ZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgn
cmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHJl
cXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1hcCcpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0g
cmVxdWlyZSgnLi9SZWFjdEluc3RydW1lbnRhdGlvbicpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJl
cXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpz
L2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fybmlu
ZycpO1xuXG5mdW5jdGlvbiBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpIHtcbiAgUmVh
Y3RVcGRhdGVzLmVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG59XG5cbmZ1bmN0aW9u
IGZvcm1hdFVuZXhwZWN0ZWRBcmd1bWVudChhcmcpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgYXJn
O1xuICBpZiAodHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuICB2
YXIgZGlzcGxheU5hbWUgPSBhcmcuY29uc3RydWN0b3IgJiYgYXJnLmNvbnN0cnVjdG9yLm5hbWUg
fHwgdHlwZTtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhcmcpO1xuICBpZiAoa2V5cy5sZW5n
dGggPiAwICYmIGtleXMubGVuZ3RoIDwgMjApIHtcbiAgICByZXR1cm4gZGlzcGxheU5hbWUgKyAn
IChrZXlzOiAnICsga2V5cy5qb2luKCcsICcpICsgJyknO1xuICB9XG4gIHJldHVybiBkaXNwbGF5
TmFtZTtcbn1cblxuZnVuY3Rpb24gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1
YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7XG4gIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVh
Y3RJbnN0YW5jZU1hcC5nZXQocHVibGljSW5zdGFuY2UpO1xuICBpZiAoIWludGVybmFsSW5zdGFu
Y2UpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgdmFyIGN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3RvcjtcbiAgICAgIC8vIE9u
bHkgd2FybiB3aGVuIHdlIGhhdmUgYSBjYWxsZXJOYW1lLiBPdGhlcndpc2Ugd2Ugc2hvdWxkIGJl
IHNpbGVudC5cbiAgICAgIC8vIFdlJ3JlIHByb2JhYmx5IGNhbGxpbmcgZnJvbSBlbnF1ZXVlQ2Fs
bGJhY2suIFdlIGRvbid0IHdhbnQgdG8gd2FyblxuICAgICAgLy8gdGhlcmUgYmVjYXVzZSB3ZSBh
bHJlYWR5IHdhcm5lZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgbGlmZWN5Y2xlIG1ldGhvZC5cbiAg
ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjYWxs
ZXJOYW1lLCAnJXMoLi4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRlZCBvciBtb3VudGluZyBj
b21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxsZWQgJXMoKSBvbiBhbiB1
bm1vdW50ZWQgY29tcG9uZW50LiAnICsgJ1RoaXMgaXMgYSBuby1vcC4gUGxlYXNlIGNoZWNrIHRo
ZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIGN0
b3IgJiYgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSB8fCAnUmVhY3RDbGFzcycpIDog
dm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBu
dWxsLCAnJXMoLi4uKTogQ2Fubm90IHVwZGF0ZSBkdXJpbmcgYW4gZXhpc3Rpbmcgc3RhdGUgdHJh
bnNpdGlvbiAoc3VjaCBhcyAnICsgXCJ3aXRoaW4gYHJlbmRlcmAgb3IgYW5vdGhlciBjb21wb25l
bnQncyBjb25zdHJ1Y3RvcikuIFJlbmRlciBtZXRob2RzIFwiICsgJ3Nob3VsZCBiZSBhIHB1cmUg
ZnVuY3Rpb24gb2YgcHJvcHMgYW5kIHN0YXRlOyBjb25zdHJ1Y3RvciAnICsgJ3NpZGUtZWZmZWN0
cyBhcmUgYW4gYW50aS1wYXR0ZXJuLCBidXQgY2FuIGJlIG1vdmVkIHRvICcgKyAnYGNvbXBvbmVu
dFdpbGxNb3VudGAuJywgY2FsbGVyTmFtZSkgOiB2b2lkIDA7XG4gIH1cblxuICByZXR1cm4gaW50
ZXJuYWxJbnN0YW5jZTtcbn1cblxuLyoqXG4gKiBSZWFjdFVwZGF0ZVF1ZXVlIGFsbG93cyBmb3Ig
c3RhdGUgdXBkYXRlcyB0byBiZSBzY2hlZHVsZWQgaW50byBhIGxhdGVyXG4gKiByZWNvbmNpbGlh
dGlvbiBzdGVwLlxuICovXG52YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHtcbiAgLyoqXG4gICAqIENo
ZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5c
biAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ug
d2FudCB0byB0ZXN0LlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZh
bHNlIG90aGVyd2lzZS5cbiAgICogQHByb3RlY3RlZFxuICAgKiBAZmluYWxcbiAgICovXG4gIGlz
TW91bnRlZDogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBvd25lciA9IFJlYWN0Q3Vy
cmVudE93bmVyLmN1cnJlbnQ7XG4gICAgICBpZiAob3duZXIgIT09IG51bGwpIHtcbiAgICAgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcob3duZXIuX3dh
cm5lZEFib3V0UmVmc0luUmVuZGVyLCAnJXMgaXMgYWNjZXNzaW5nIGlzTW91bnRlZCBpbnNpZGUg
aXRzIHJlbmRlcigpIGZ1bmN0aW9uLiAnICsgJ3JlbmRlcigpIHNob3VsZCBiZSBhIHB1cmUgZnVu
Y3Rpb24gb2YgcHJvcHMgYW5kIHN0YXRlLiBJdCBzaG91bGQgJyArICduZXZlciBhY2Nlc3Mgc29t
ZXRoaW5nIHRoYXQgcmVxdWlyZXMgc3RhbGUgZGF0YSBmcm9tIHRoZSBwcmV2aW91cyAnICsgJ3Jl
bmRlciwgc3VjaCBhcyByZWZzLiBNb3ZlIHRoaXMgbG9naWMgdG8gY29tcG9uZW50RGlkTW91bnQg
YW5kICcgKyAnY29tcG9uZW50RGlkVXBkYXRlIGluc3RlYWQuJywgb3duZXIuZ2V0TmFtZSgpIHx8
ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgICAgICBvd25lci5fd2FybmVkQWJvdXRSZWZz
SW5SZW5kZXIgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5j
ZSA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHB1YmxpY0luc3RhbmNlKTtcbiAgICBpZiAoaW50ZXJu
YWxJbnN0YW5jZSkge1xuICAgICAgLy8gRHVyaW5nIGNvbXBvbmVudFdpbGxNb3VudCBhbmQgcmVu
ZGVyIHRoaXMgd2lsbCBzdGlsbCBiZSBudWxsIGJ1dCBhZnRlclxuICAgICAgLy8gdGhhdCB3aWxs
IGFsd2F5cyByZW5kZXIgdG8gc29tZXRoaW5nLiBBdCBsZWFzdCBmb3Igbm93LiBTbyB3ZSBjYW4g
dXNlXG4gICAgICAvLyB0aGlzIGhhY2suXG4gICAgICByZXR1cm4gISFpbnRlcm5hbEluc3RhbmNl
Ll9yZW5kZXJlZENvbXBvbmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xu
ICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRoYXQgd2lsbCBi
ZSBleGVjdXRlZCBhZnRlciBhbGwgdGhlIHBlbmRpbmcgdXBkYXRlc1xuICAgKiBoYXZlIHByb2Nl
c3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUg
aW5zdGFuY2UgdG8gdXNlIGFzIGB0aGlzYCBjb250ZXh0LlxuICAgKiBAcGFyYW0gez9mdW5jdGlv
bn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG4gICAqIEBwYXJhbSB7
c3RyaW5nfSBjYWxsZXJOYW1lIE5hbWUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb24gaW4gdGhlIHB1
YmxpYyBBUEkuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUNhbGxiYWNrOiBmdW5j
dGlvbiAocHVibGljSW5zdGFuY2UsIGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7XG4gICAgUmVhY3RV
cGRhdGVRdWV1ZS52YWxpZGF0ZUNhbGxiYWNrKGNhbGxiYWNrLCBjYWxsZXJOYW1lKTtcbiAgICB2
YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShw
dWJsaWNJbnN0YW5jZSk7XG5cbiAgICAvLyBQcmV2aW91c2x5IHdlIHdvdWxkIHRocm93IGFuIGVy
cm9yIGlmIHdlIGRpZG4ndCBoYXZlIGFuIGludGVybmFsXG4gICAgLy8gaW5zdGFuY2UuIFNpbmNl
IHdlIHdhbnQgdG8gbWFrZSBpdCBhIG5vLW9wIGluc3RlYWQsIHdlIG1pcnJvciB0aGUgc2FtZVxu
ICAgIC8vIGJlaGF2aW9yIHdlIGhhdmUgaW4gb3RoZXIgZW5xdWV1ZSogbWV0aG9kcy5cbiAgICAv
LyBXZSBhbHNvIG5lZWQgdG8gaWdub3JlIGNhbGxiYWNrcyBpbiBjb21wb25lbnRXaWxsTW91bnQu
IFNlZVxuICAgIC8vIGVucXVldWVVcGRhdGVzLlxuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkg
e1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGludGVybmFsSW5zdGFuY2Uu
X3BlbmRpbmdDYWxsYmFja3MpIHtcbiAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxs
YmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGludGVybmFsSW5zdGFu
Y2UuX3BlbmRpbmdDYWxsYmFja3MgPSBbY2FsbGJhY2tdO1xuICAgIH1cbiAgICAvLyBUT0RPOiBU
aGUgY2FsbGJhY2sgaGVyZSBpcyBpZ25vcmVkIHdoZW4gc2V0U3RhdGUgaXMgY2FsbGVkIGZyb21c
biAgICAvLyBjb21wb25lbnRXaWxsTW91bnQuIEVpdGhlciBmaXggaXQgb3IgZGlzYWxsb3cgZG9p
bmcgc28gY29tcGxldGVseSBpblxuICAgIC8vIGZhdm9yIG9mIGdldEluaXRpYWxTdGF0ZS4gQWx0
ZXJuYXRpdmVseSwgd2UgY2FuIGRpc2FsbG93XG4gICAgLy8gY29tcG9uZW50V2lsbE1vdW50IGR1
cmluZyBzZXJ2ZXItc2lkZSByZW5kZXJpbmcuXG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbElu
c3RhbmNlKTtcbiAgfSxcblxuICBlbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbDogZnVuY3Rpb24gKGlu
dGVybmFsSW5zdGFuY2UsIGNhbGxiYWNrKSB7XG4gICAgaWYgKGludGVybmFsSW5zdGFuY2UuX3Bl
bmRpbmdDYWxsYmFja3MpIHtcbiAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFj
a3MucHVzaChjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGludGVybmFsSW5zdGFuY2Uu
X3BlbmRpbmdDYWxsYmFja3MgPSBbY2FsbGJhY2tdO1xuICAgIH1cbiAgICBlbnF1ZXVlVXBkYXRl
KGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBGb3JjZXMgYW4gdXBkYXRl
LiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG4gICAq
IGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuICAg
KlxuICAgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21l
IGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2Vk
IGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgbm90
IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG4gICAq
IGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG4gICAqXG4g
ICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQg
c2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVGb3JjZVVw
ZGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgdmFyIGludGVybmFsSW5zdGFu
Y2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdm
b3JjZVVwZGF0ZScpO1xuXG4gICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgICByZXR1
cm47XG4gICAgfVxuXG4gICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0ZvcmNlVXBkYXRlID0g
dHJ1ZTtcblxuICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG4gIH0sXG5cbiAg
LyoqXG4gICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyBvciBg
c2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cbiAgICogWW91IHNob3VsZCB0cmVhdCBgdGhpcy5z
dGF0ZWAgYXMgaW1tdXRhYmxlLlxuICAgKlxuICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhh
dCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzb1xuICAgKiBhY2Nl
c3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0
aGUgb2xkIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3Rh
bmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmpl
Y3R9IGNvbXBsZXRlU3RhdGUgTmV4dCBzdGF0ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBl
bnF1ZXVlUmVwbGFjZVN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3Rh
dGUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbElu
c3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUnKTtcblxu
ICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAg
IGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gW2NvbXBsZXRlU3RhdGVdO1xu
ICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSB0cnVlO1xuXG4gICAg
Ly8gRnV0dXJlLXByb29mIDE1LjVcbiAgICBpZiAoY2FsbGJhY2sgIT09IHVuZGVmaW5lZCAmJiBj
YWxsYmFjayAhPT0gbnVsbCkge1xuICAgICAgUmVhY3RVcGRhdGVRdWV1ZS52YWxpZGF0ZUNhbGxi
YWNrKGNhbGxiYWNrLCAncmVwbGFjZVN0YXRlJyk7XG4gICAgICBpZiAoaW50ZXJuYWxJbnN0YW5j
ZS5fcGVuZGluZ0NhbGxiYWNrcykge1xuICAgICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5n
Q2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW50ZXJu
YWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcyA9IFtjYWxsYmFja107XG4gICAgICB9XG4gICAg
fVxuXG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICAvKipc
biAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVz
ZSBfcGVuZGluZ1N0YXRlIGlzXG4gICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2lu
ZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcFxuICAgKiBwcm9wZXJ0aWVz
IHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1
c2UgaXRcbiAgICogZHVyaW5nIHRoZSBtZXJnZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENs
YXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4g
ICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJl
IG1lcmdlZCB3aXRoIHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVTZXRT
dGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpIHtcbiAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgUmVhY3RJbnN0
cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0U3RhdGUoKTtcbiAgICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHBhcnRpYWxTdGF0ZSAhPSBudWxsLCAn
c2V0U3RhdGUoLi4uKTogWW91IHBhc3NlZCBhbiB1bmRlZmluZWQgb3IgbnVsbCBzdGF0ZSBvYmpl
Y3Q7ICcgKyAnaW5zdGVhZCwgdXNlIGZvcmNlVXBkYXRlKCkuJykgOiB2b2lkIDA7XG4gICAgfVxu
XG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JV
cGRhdGUocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpO1xuXG4gICAgaWYgKCFpbnRlcm5hbElu
c3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHF1ZXVlID0gaW50ZXJu
YWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUgfHwgKGludGVybmFsSW5zdGFuY2UuX3BlbmRp
bmdTdGF0ZVF1ZXVlID0gW10pO1xuICAgIHF1ZXVlLnB1c2gocGFydGlhbFN0YXRlKTtcblxuICAg
IGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG4gIH0sXG5cbiAgZW5xdWV1ZUVsZW1l
bnRJbnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIG5leHRFbGVtZW50LCBuZXh0
Q29udGV4dCkge1xuICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdFbGVtZW50ID0gbmV4dEVs
ZW1lbnQ7XG4gICAgLy8gVE9ETzogaW50cm9kdWNlIF9wZW5kaW5nQ29udGV4dCBpbnN0ZWFkIG9m
IHNldHRpbmcgaXQgZGlyZWN0bHkuXG4gICAgaW50ZXJuYWxJbnN0YW5jZS5fY29udGV4dCA9IG5l
eHRDb250ZXh0O1xuICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG4gIH0sXG5c
biAgdmFsaWRhdGVDYWxsYmFjazogZnVuY3Rpb24gKGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7XG4g
ICAgISghY2FsbGJhY2sgfHwgdHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcygu
Li4pOiBFeHBlY3RlZCB0aGUgbGFzdCBvcHRpb25hbCBgY2FsbGJhY2tgIGFyZ3VtZW50IHRvIGJl
IGEgZnVuY3Rpb24uIEluc3RlYWQgcmVjZWl2ZWQ6ICVzLicsIGNhbGxlck5hbWUsIGZvcm1hdFVu
ZXhwZWN0ZWRBcmd1bWVudChjYWxsYmFjaykpIDogX3Byb2RJbnZhcmlhbnQoJzEyMicsIGNhbGxl
ck5hbWUsIGZvcm1hdFVuZXhwZWN0ZWRBcmd1bWVudChjYWxsYmFjaykpIDogdm9pZCAwO1xuICB9
XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0VXBkYXRlUXVldWU7XG5cblxuLy8vLy8vLy8v
Ly8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9SZWFjdFVwZGF0ZVF1ZXVlLmpzXG4vLyBtb2R1bGUgaWQgPSA0NVxuLy8gbW9kdWxlIGNo
dW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3Qn
O1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIGVtcHR5
RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgd2Fybmlu
ZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIHZhbGlkYXRlRE9NTmVzdGlu
ZyA9IGVtcHR5RnVuY3Rpb247XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gIC8vIFRoaXMgdmFsaWRhdGlvbiBjb2RlIHdhcyB3cml0dGVuIGJhc2VkIG9u
IHRoZSBIVE1MNSBwYXJzaW5nIHNwZWM6XG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2hhcy1hbi1lbGVtZW50LWluLXNjb3BlXG4gIC8vXG4g
IC8vIE5vdGU6IHRoaXMgZG9lcyBub3QgY2F0Y2ggYWxsIGludmFsaWQgbmVzdGluZywgbm9yIGRv
ZXMgaXQgdHJ5IHRvIChhcyBpdCdzXG4gIC8vIG5vdCBjbGVhciB3aGF0IHByYWN0aWNhbCBiZW5l
Zml0IGRvaW5nIHNvIHByb3ZpZGVzKTsgaW5zdGVhZCwgd2Ugd2FybiBvbmx5XG4gIC8vIGZvciBj
YXNlcyB3aGVyZSB0aGUgcGFyc2VyIHdpbGwgZ2l2ZSBhIHBhcnNlIHRyZWUgZGlmZmVyaW5nIGZy
b20gd2hhdCBSZWFjdFxuICAvLyBpbnRlbmRlZC4gRm9yIGV4YW1wbGUsIDxiPjxkaXY+PC9kaXY+
PC9iPiBpcyBpbnZhbGlkIGJ1dCB3ZSBkb24ndCB3YXJuXG4gIC8vIGJlY2F1c2UgaXQgc3RpbGwg
cGFyc2VzIGNvcnJlY3RseTsgd2UgZG8gd2FybiBmb3Igb3RoZXIgY2FzZXMgbGlrZSBuZXN0ZWRc
biAgLy8gPHA+IHRhZ3Mgd2hlcmUgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2Vjb25kIGVsZW1lbnQg
aW1wbGljaXRseSBjbG9zZXMgdGhlXG4gIC8vIGZpcnN0LCBjYXVzaW5nIGEgY29uZnVzaW5nIG1l
c3MuXG5cbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4
Lmh0bWwjc3BlY2lhbFxuICB2YXIgc3BlY2lhbFRhZ3MgPSBbJ2FkZHJlc3MnLCAnYXBwbGV0Jywg
J2FyZWEnLCAnYXJ0aWNsZScsICdhc2lkZScsICdiYXNlJywgJ2Jhc2Vmb250JywgJ2Jnc291bmQn
LCAnYmxvY2txdW90ZScsICdib2R5JywgJ2JyJywgJ2J1dHRvbicsICdjYXB0aW9uJywgJ2NlbnRl
cicsICdjb2wnLCAnY29sZ3JvdXAnLCAnZGQnLCAnZGV0YWlscycsICdkaXInLCAnZGl2JywgJ2Rs
JywgJ2R0JywgJ2VtYmVkJywgJ2ZpZWxkc2V0JywgJ2ZpZ2NhcHRpb24nLCAnZmlndXJlJywgJ2Zv
b3RlcicsICdmb3JtJywgJ2ZyYW1lJywgJ2ZyYW1lc2V0JywgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0
JywgJ2g1JywgJ2g2JywgJ2hlYWQnLCAnaGVhZGVyJywgJ2hncm91cCcsICdocicsICdodG1sJywg
J2lmcmFtZScsICdpbWcnLCAnaW5wdXQnLCAnaXNpbmRleCcsICdsaScsICdsaW5rJywgJ2xpc3Rp
bmcnLCAnbWFpbicsICdtYXJxdWVlJywgJ21lbnUnLCAnbWVudWl0ZW0nLCAnbWV0YScsICduYXYn
LCAnbm9lbWJlZCcsICdub2ZyYW1lcycsICdub3NjcmlwdCcsICdvYmplY3QnLCAnb2wnLCAncCcs
ICdwYXJhbScsICdwbGFpbnRleHQnLCAncHJlJywgJ3NjcmlwdCcsICdzZWN0aW9uJywgJ3NlbGVj
dCcsICdzb3VyY2UnLCAnc3R5bGUnLCAnc3VtbWFyeScsICd0YWJsZScsICd0Ym9keScsICd0ZCcs
ICd0ZW1wbGF0ZScsICd0ZXh0YXJlYScsICd0Zm9vdCcsICd0aCcsICd0aGVhZCcsICd0aXRsZScs
ICd0cicsICd0cmFjaycsICd1bCcsICd3YnInLCAneG1wJ107XG5cbiAgLy8gaHR0cHM6Ly9odG1s
LnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4t
c2NvcGVcbiAgdmFyIGluU2NvcGVUYWdzID0gWydhcHBsZXQnLCAnY2FwdGlvbicsICdodG1sJywg
J3RhYmxlJywgJ3RkJywgJ3RoJywgJ21hcnF1ZWUnLCAnb2JqZWN0JywgJ3RlbXBsYXRlJyxcblxu
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNo
dG1sLWludGVncmF0aW9uLXBvaW50XG4gIC8vIFRPRE86IERpc3Rpbmd1aXNoIGJ5IG5hbWVzcGFj
ZSBoZXJlIC0tIGZvciA8dGl0bGU+LCBpbmNsdWRpbmcgaXQgaGVyZVxuICAvLyBlcnJzIG9uIHRo
ZSBzaWRlIG9mIGZld2VyIHdhcm5pbmdzXG4gICdmb3JlaWduT2JqZWN0JywgJ2Rlc2MnLCAndGl0
bGUnXTtcblxuICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50
YXguaHRtbCNoYXMtYW4tZWxlbWVudC1pbi1idXR0b24tc2NvcGVcbiAgdmFyIGJ1dHRvblNjb3Bl
VGFncyA9IGluU2NvcGVUYWdzLmNvbmNhdChbJ2J1dHRvbiddKTtcblxuICAvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNnZW5lcmF0ZS1pbXBsaWVk
LWVuZC10YWdzXG4gIHZhciBpbXBsaWVkRW5kVGFncyA9IFsnZGQnLCAnZHQnLCAnbGknLCAnb3B0
aW9uJywgJ29wdGdyb3VwJywgJ3AnLCAncnAnLCAncnQnXTtcblxuICB2YXIgZW1wdHlBbmNlc3Rv
ckluZm8gPSB7XG4gICAgY3VycmVudDogbnVsbCxcblxuICAgIGZvcm1UYWc6IG51bGwsXG4gICAg
YVRhZ0luU2NvcGU6IG51bGwsXG4gICAgYnV0dG9uVGFnSW5TY29wZTogbnVsbCxcbiAgICBub2Jy
VGFnSW5TY29wZTogbnVsbCxcbiAgICBwVGFnSW5CdXR0b25TY29wZTogbnVsbCxcblxuICAgIGxp
c3RJdGVtVGFnQXV0b2Nsb3Npbmc6IG51bGwsXG4gICAgZGxJdGVtVGFnQXV0b2Nsb3Npbmc6IG51
bGxcbiAgfTtcblxuICB2YXIgdXBkYXRlZEFuY2VzdG9ySW5mbyA9IGZ1bmN0aW9uIChvbGRJbmZv
LCB0YWcsIGluc3RhbmNlKSB7XG4gICAgdmFyIGFuY2VzdG9ySW5mbyA9IF9hc3NpZ24oe30sIG9s
ZEluZm8gfHwgZW1wdHlBbmNlc3RvckluZm8pO1xuICAgIHZhciBpbmZvID0geyB0YWc6IHRhZywg
aW5zdGFuY2U6IGluc3RhbmNlIH07XG5cbiAgICBpZiAoaW5TY29wZVRhZ3MuaW5kZXhPZih0YWcp
ICE9PSAtMSkge1xuICAgICAgYW5jZXN0b3JJbmZvLmFUYWdJblNjb3BlID0gbnVsbDtcbiAgICAg
IGFuY2VzdG9ySW5mby5idXR0b25UYWdJblNjb3BlID0gbnVsbDtcbiAgICAgIGFuY2VzdG9ySW5m
by5ub2JyVGFnSW5TY29wZSA9IG51bGw7XG4gICAgfVxuICAgIGlmIChidXR0b25TY29wZVRhZ3Mu
aW5kZXhPZih0YWcpICE9PSAtMSkge1xuICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNj
b3BlID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBTZWUgcnVsZXMgZm9yICdsaScsICdkZCcsICdk
dCcgc3RhcnQgdGFncyBpblxuICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHlcbiAgICBpZiAoc3BlY2lhbFRh
Z3MuaW5kZXhPZih0YWcpICE9PSAtMSAmJiB0YWcgIT09ICdhZGRyZXNzJyAmJiB0YWcgIT09ICdk
aXYnICYmIHRhZyAhPT0gJ3AnKSB7XG4gICAgICBhbmNlc3RvckluZm8ubGlzdEl0ZW1UYWdBdXRv
Y2xvc2luZyA9IG51bGw7XG4gICAgICBhbmNlc3RvckluZm8uZGxJdGVtVGFnQXV0b2Nsb3Npbmcg
PSBudWxsO1xuICAgIH1cblxuICAgIGFuY2VzdG9ySW5mby5jdXJyZW50ID0gaW5mbztcblxuICAg
IGlmICh0YWcgPT09ICdmb3JtJykge1xuICAgICAgYW5jZXN0b3JJbmZvLmZvcm1UYWcgPSBpbmZv
O1xuICAgIH1cbiAgICBpZiAodGFnID09PSAnYScpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5hVGFn
SW5TY29wZSA9IGluZm87XG4gICAgfVxuICAgIGlmICh0YWcgPT09ICdidXR0b24nKSB7XG4gICAg
ICBhbmNlc3RvckluZm8uYnV0dG9uVGFnSW5TY29wZSA9IGluZm87XG4gICAgfVxuICAgIGlmICh0
YWcgPT09ICdub2JyJykge1xuICAgICAgYW5jZXN0b3JJbmZvLm5vYnJUYWdJblNjb3BlID0gaW5m
bztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ3AnKSB7XG4gICAgICBhbmNlc3RvckluZm8ucFRh
Z0luQnV0dG9uU2NvcGUgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAnbGknKSB7XG4g
ICAgICBhbmNlc3RvckluZm8ubGlzdEl0ZW1UYWdBdXRvY2xvc2luZyA9IGluZm87XG4gICAgfVxu
ICAgIGlmICh0YWcgPT09ICdkZCcgfHwgdGFnID09PSAnZHQnKSB7XG4gICAgICBhbmNlc3Rvcklu
Zm8uZGxJdGVtVGFnQXV0b2Nsb3NpbmcgPSBpbmZvO1xuICAgIH1cblxuICAgIHJldHVybiBhbmNl
c3RvckluZm87XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlclxuICAgKi9cbiAg
dmFyIGlzVGFnVmFsaWRXaXRoUGFyZW50ID0gZnVuY3Rpb24gKHRhZywgcGFyZW50VGFnKSB7XG4g
ICAgLy8gRmlyc3QsIGxldCdzIGNoZWNrIGlmIHdlJ3JlIGluIGFuIHVudXN1YWwgcGFyc2luZyBt
b2RlLi4uXG4gICAgc3dpdGNoIChwYXJlbnRUYWcpIHtcbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnNlbGVj
dFxuICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ29wdGlvbicg
fHwgdGFnID09PSAnb3B0Z3JvdXAnIHx8IHRhZyA9PT0gJyN0ZXh0JztcbiAgICAgIGNhc2UgJ29w
dGdyb3VwJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ29wdGlvbicgfHwgdGFnID09PSAnI3Rl
eHQnO1xuICAgICAgLy8gU3RyaWN0bHkgc3BlYWtpbmcsIHNlZWluZyBhbiA8b3B0aW9uPiBkb2Vz
bid0IG1lYW4gd2UncmUgaW4gYSA8c2VsZWN0PlxuICAgICAgLy8gYnV0XG4gICAgICBjYXNlICdv
cHRpb24nOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnI3RleHQnO1xuICAgICAgLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWlu
LWludGRcbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5
bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmNhcHRpb25cbiAgICAgIC8vIE5vIHNwZWNpYWwgYmVo
YXZpb3Igc2luY2UgdGhlc2UgcnVsZXMgZmFsbCBiYWNrIHRvIFwiaW4gYm9keVwiIG1vZGUgZm9y
XG4gICAgICAvLyBhbGwgZXhjZXB0IHNwZWNpYWwgdGFibGUgbm9kZXMgd2hpY2ggY2F1c2UgYmFk
IHBhcnNpbmcgYmVoYXZpb3IgYW55d2F5LlxuXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50clxuICAgICAg
Y2FzZSAndHInOlxuICAgICAgICByZXR1cm4gdGFnID09PSAndGgnIHx8IHRhZyA9PT0gJ3RkJyB8
fCB0YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0
ZSc7XG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50
YXguaHRtbCNwYXJzaW5nLW1haW4taW50Ym9keVxuICAgICAgY2FzZSAndGJvZHknOlxuICAgICAg
Y2FzZSAndGhlYWQnOlxuICAgICAgY2FzZSAndGZvb3QnOlxuICAgICAgICByZXR1cm4gdGFnID09
PSAndHInIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0g
J3RlbXBsYXRlJztcbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmNvbGdyb3VwXG4gICAgICBjYXNlICdjb2xn
cm91cCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdjb2wnIHx8IHRhZyA9PT0gJ3RlbXBsYXRl
JztcbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRh
eC5odG1sI3BhcnNpbmctbWFpbi1pbnRhYmxlXG4gICAgICBjYXNlICd0YWJsZSc6XG4gICAgICAg
IHJldHVybiB0YWcgPT09ICdjYXB0aW9uJyB8fCB0YWcgPT09ICdjb2xncm91cCcgfHwgdGFnID09
PSAndGJvZHknIHx8IHRhZyA9PT0gJ3Rmb290JyB8fCB0YWcgPT09ICd0aGVhZCcgfHwgdGFnID09
PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuICAg
ICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwj
cGFyc2luZy1tYWluLWluaGVhZFxuICAgICAgY2FzZSAnaGVhZCc6XG4gICAgICAgIHJldHVybiB0
YWcgPT09ICdiYXNlJyB8fCB0YWcgPT09ICdiYXNlZm9udCcgfHwgdGFnID09PSAnYmdzb3VuZCcg
fHwgdGFnID09PSAnbGluaycgfHwgdGFnID09PSAnbWV0YScgfHwgdGFnID09PSAndGl0bGUnIHx8
IHRhZyA9PT0gJ25vc2NyaXB0JyB8fCB0YWcgPT09ICdub2ZyYW1lcycgfHwgdGFnID09PSAnc3R5
bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuICAgICAgLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2VtYW50aWNzLmh0bWwjdGhl
LWh0bWwtZWxlbWVudFxuICAgICAgY2FzZSAnaHRtbCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09
ICdoZWFkJyB8fCB0YWcgPT09ICdib2R5JztcbiAgICAgIGNhc2UgJyNkb2N1bWVudCc6XG4gICAg
ICAgIHJldHVybiB0YWcgPT09ICdodG1sJztcbiAgICB9XG5cbiAgICAvLyBQcm9iYWJseSBpbiB0
aGUgXCJpbiBib2R5XCIgcGFyc2luZyBtb2RlLCBzbyB3ZSBvdXRsYXcgb25seSB0YWcgY29tYm9z
XG4gICAgLy8gd2hlcmUgdGhlIHBhcnNpbmcgcnVsZXMgY2F1c2UgaW1wbGljaXQgb3BlbnMgb3Ig
Y2xvc2VzIHRvIGJlIGFkZGVkLlxuICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHlcbiAgICBzd2l0Y2ggKHRh
Zykge1xuICAgICAgY2FzZSAnaDEnOlxuICAgICAgY2FzZSAnaDInOlxuICAgICAgY2FzZSAnaDMn
OlxuICAgICAgY2FzZSAnaDQnOlxuICAgICAgY2FzZSAnaDUnOlxuICAgICAgY2FzZSAnaDYnOlxu
ICAgICAgICByZXR1cm4gcGFyZW50VGFnICE9PSAnaDEnICYmIHBhcmVudFRhZyAhPT0gJ2gyJyAm
JiBwYXJlbnRUYWcgIT09ICdoMycgJiYgcGFyZW50VGFnICE9PSAnaDQnICYmIHBhcmVudFRhZyAh
PT0gJ2g1JyAmJiBwYXJlbnRUYWcgIT09ICdoNic7XG5cbiAgICAgIGNhc2UgJ3JwJzpcbiAgICAg
IGNhc2UgJ3J0JzpcbiAgICAgICAgcmV0dXJuIGltcGxpZWRFbmRUYWdzLmluZGV4T2YocGFyZW50
VGFnKSA9PT0gLTE7XG5cbiAgICAgIGNhc2UgJ2JvZHknOlxuICAgICAgY2FzZSAnY2FwdGlvbic6
XG4gICAgICBjYXNlICdjb2wnOlxuICAgICAgY2FzZSAnY29sZ3JvdXAnOlxuICAgICAgY2FzZSAn
ZnJhbWUnOlxuICAgICAgY2FzZSAnaGVhZCc6XG4gICAgICBjYXNlICdodG1sJzpcbiAgICAgIGNh
c2UgJ3Rib2R5JzpcbiAgICAgIGNhc2UgJ3RkJzpcbiAgICAgIGNhc2UgJ3Rmb290JzpcbiAgICAg
IGNhc2UgJ3RoJzpcbiAgICAgIGNhc2UgJ3RoZWFkJzpcbiAgICAgIGNhc2UgJ3RyJzpcbiAgICAg
ICAgLy8gVGhlc2UgdGFncyBhcmUgb25seSB2YWxpZCB3aXRoIGEgZmV3IHBhcmVudHMgdGhhdCBo
YXZlIHNwZWNpYWwgY2hpbGRcbiAgICAgICAgLy8gcGFyc2luZyBydWxlcyAtLSBpZiB3ZSdyZSBk
b3duIGhlcmUsIHRoZW4gbm9uZSBvZiB0aG9zZSBtYXRjaGVkIGFuZFxuICAgICAgICAvLyBzbyB3
ZSBhbGxvdyBpdCBvbmx5IGlmIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcGFyZW50IGlzLCBhcyBh
bGwgb3RoZXJcbiAgICAgICAgLy8gY2FzZXMgYXJlIGludmFsaWQuXG4gICAgICAgIHJldHVybiBw
YXJlbnRUYWcgPT0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICAv
KipcbiAgICogUmV0dXJucyB3aGV0aGVyXG4gICAqL1xuICB2YXIgZmluZEludmFsaWRBbmNlc3Rv
ckZvclRhZyA9IGZ1bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykge1xuICAgIHN3aXRjaCAodGFn
KSB7XG4gICAgICBjYXNlICdhZGRyZXNzJzpcbiAgICAgIGNhc2UgJ2FydGljbGUnOlxuICAgICAg
Y2FzZSAnYXNpZGUnOlxuICAgICAgY2FzZSAnYmxvY2txdW90ZSc6XG4gICAgICBjYXNlICdjZW50
ZXInOlxuICAgICAgY2FzZSAnZGV0YWlscyc6XG4gICAgICBjYXNlICdkaWFsb2cnOlxuICAgICAg
Y2FzZSAnZGlyJzpcbiAgICAgIGNhc2UgJ2Rpdic6XG4gICAgICBjYXNlICdkbCc6XG4gICAgICBj
YXNlICdmaWVsZHNldCc6XG4gICAgICBjYXNlICdmaWdjYXB0aW9uJzpcbiAgICAgIGNhc2UgJ2Zp
Z3VyZSc6XG4gICAgICBjYXNlICdmb290ZXInOlxuICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAg
IGNhc2UgJ2hncm91cCc6XG4gICAgICBjYXNlICdtYWluJzpcbiAgICAgIGNhc2UgJ21lbnUnOlxu
ICAgICAgY2FzZSAnbmF2JzpcbiAgICAgIGNhc2UgJ29sJzpcbiAgICAgIGNhc2UgJ3AnOlxuICAg
ICAgY2FzZSAnc2VjdGlvbic6XG4gICAgICBjYXNlICdzdW1tYXJ5JzpcbiAgICAgIGNhc2UgJ3Vs
JzpcbiAgICAgIGNhc2UgJ3ByZSc6XG4gICAgICBjYXNlICdsaXN0aW5nJzpcbiAgICAgIGNhc2Ug
J3RhYmxlJzpcbiAgICAgIGNhc2UgJ2hyJzpcbiAgICAgIGNhc2UgJ3htcCc6XG4gICAgICBjYXNl
ICdoMSc6XG4gICAgICBjYXNlICdoMic6XG4gICAgICBjYXNlICdoMyc6XG4gICAgICBjYXNlICdo
NCc6XG4gICAgICBjYXNlICdoNSc6XG4gICAgICBjYXNlICdoNic6XG4gICAgICAgIHJldHVybiBh
bmNlc3RvckluZm8ucFRhZ0luQnV0dG9uU2NvcGU7XG5cbiAgICAgIGNhc2UgJ2Zvcm0nOlxuICAg
ICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmZvcm1UYWcgfHwgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1
dHRvblNjb3BlO1xuXG4gICAgICBjYXNlICdsaSc6XG4gICAgICAgIHJldHVybiBhbmNlc3Rvcklu
Zm8ubGlzdEl0ZW1UYWdBdXRvY2xvc2luZztcblxuICAgICAgY2FzZSAnZGQnOlxuICAgICAgY2Fz
ZSAnZHQnOlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5n
O1xuXG4gICAgICBjYXNlICdidXR0b24nOlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmJ1
dHRvblRhZ0luU2NvcGU7XG5cbiAgICAgIGNhc2UgJ2EnOlxuICAgICAgICAvLyBTcGVjIHNheXMg
c29tZXRoaW5nIGFib3V0IHN0b3JpbmcgYSBsaXN0IG9mIG1hcmtlcnMsIGJ1dCBpdCBzb3VuZHNc
biAgICAgICAgLy8gZXF1aXZhbGVudCB0byB0aGlzIGNoZWNrLlxuICAgICAgICByZXR1cm4gYW5j
ZXN0b3JJbmZvLmFUYWdJblNjb3BlO1xuXG4gICAgICBjYXNlICdub2JyJzpcbiAgICAgICAgcmV0
dXJuIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVs
bDtcbiAgfTtcblxuICAvKipcbiAgICogR2l2ZW4gYSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCBp
bnN0YW5jZSwgcmV0dXJuIGEgbGlzdCBvZiBpdHMgcmVjdXJzaXZlXG4gICAqIG93bmVycywgc3Rh
cnRpbmcgYXQgdGhlIHJvb3QgYW5kIGVuZGluZyB3aXRoIHRoZSBpbnN0YW5jZSBpdHNlbGYuXG4g
ICAqL1xuICB2YXIgZmluZE93bmVyU3RhY2sgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgICBp
ZiAoIWluc3RhbmNlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgdmFyIHN0YWNr
ID0gW107XG4gICAgZG8ge1xuICAgICAgc3RhY2sucHVzaChpbnN0YW5jZSk7XG4gICAgfSB3aGls
ZSAoaW5zdGFuY2UgPSBpbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyKTtcbiAgICBzdGFj
ay5yZXZlcnNlKCk7XG4gICAgcmV0dXJuIHN0YWNrO1xuICB9O1xuXG4gIHZhciBkaWRXYXJuID0g
e307XG5cbiAgdmFsaWRhdGVET01OZXN0aW5nID0gZnVuY3Rpb24gKGNoaWxkVGFnLCBjaGlsZFRl
eHQsIGNoaWxkSW5zdGFuY2UsIGFuY2VzdG9ySW5mbykge1xuICAgIGFuY2VzdG9ySW5mbyA9IGFu
Y2VzdG9ySW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbztcbiAgICB2YXIgcGFyZW50SW5mbyA9IGFu
Y2VzdG9ySW5mby5jdXJyZW50O1xuICAgIHZhciBwYXJlbnRUYWcgPSBwYXJlbnRJbmZvICYmIHBh
cmVudEluZm8udGFnO1xuXG4gICAgaWYgKGNoaWxkVGV4dCAhPSBudWxsKSB7XG4gICAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhjaGlsZFRhZyA9PSBu
dWxsLCAndmFsaWRhdGVET01OZXN0aW5nOiB3aGVuIGNoaWxkVGV4dCBpcyBwYXNzZWQsIGNoaWxk
VGFnIHNob3VsZCBiZSBudWxsJykgOiB2b2lkIDA7XG4gICAgICBjaGlsZFRhZyA9ICcjdGV4dCc7
XG4gICAgfVxuXG4gICAgdmFyIGludmFsaWRQYXJlbnQgPSBpc1RhZ1ZhbGlkV2l0aFBhcmVudChj
aGlsZFRhZywgcGFyZW50VGFnKSA/IG51bGwgOiBwYXJlbnRJbmZvO1xuICAgIHZhciBpbnZhbGlk
QW5jZXN0b3IgPSBpbnZhbGlkUGFyZW50ID8gbnVsbCA6IGZpbmRJbnZhbGlkQW5jZXN0b3JGb3JU
YWcoY2hpbGRUYWcsIGFuY2VzdG9ySW5mbyk7XG4gICAgdmFyIHByb2JsZW1hdGljID0gaW52YWxp
ZFBhcmVudCB8fCBpbnZhbGlkQW5jZXN0b3I7XG5cbiAgICBpZiAocHJvYmxlbWF0aWMpIHtcbiAg
ICAgIHZhciBhbmNlc3RvclRhZyA9IHByb2JsZW1hdGljLnRhZztcbiAgICAgIHZhciBhbmNlc3Rv
ckluc3RhbmNlID0gcHJvYmxlbWF0aWMuaW5zdGFuY2U7XG5cbiAgICAgIHZhciBjaGlsZE93bmVy
ID0gY2hpbGRJbnN0YW5jZSAmJiBjaGlsZEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXI7
XG4gICAgICB2YXIgYW5jZXN0b3JPd25lciA9IGFuY2VzdG9ySW5zdGFuY2UgJiYgYW5jZXN0b3JJ
bnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXG4gICAgICB2YXIgY2hpbGRPd25lcnMg
PSBmaW5kT3duZXJTdGFjayhjaGlsZE93bmVyKTtcbiAgICAgIHZhciBhbmNlc3Rvck93bmVycyA9
IGZpbmRPd25lclN0YWNrKGFuY2VzdG9yT3duZXIpO1xuXG4gICAgICB2YXIgbWluU3RhY2tMZW4g
PSBNYXRoLm1pbihjaGlsZE93bmVycy5sZW5ndGgsIGFuY2VzdG9yT3duZXJzLmxlbmd0aCk7XG4g
ICAgICB2YXIgaTtcblxuICAgICAgdmFyIGRlZXBlc3RDb21tb24gPSAtMTtcbiAgICAgIGZvciAo
aSA9IDA7IGkgPCBtaW5TdGFja0xlbjsgaSsrKSB7XG4gICAgICAgIGlmIChjaGlsZE93bmVyc1tp
XSA9PT0gYW5jZXN0b3JPd25lcnNbaV0pIHtcbiAgICAgICAgICBkZWVwZXN0Q29tbW9uID0gaTtc
biAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxu
XG4gICAgICB2YXIgVU5LTk9XTiA9ICcodW5rbm93biknO1xuICAgICAgdmFyIGNoaWxkT3duZXJO
YW1lcyA9IGNoaWxkT3duZXJzLnNsaWNlKGRlZXBlc3RDb21tb24gKyAxKS5tYXAoZnVuY3Rpb24g
KGluc3QpIHtcbiAgICAgICAgcmV0dXJuIGluc3QuZ2V0TmFtZSgpIHx8IFVOS05PV047XG4gICAg
ICB9KTtcbiAgICAgIHZhciBhbmNlc3Rvck93bmVyTmFtZXMgPSBhbmNlc3Rvck93bmVycy5zbGlj
ZShkZWVwZXN0Q29tbW9uICsgMSkubWFwKGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgICAgIHJldHVy
biBpbnN0LmdldE5hbWUoKSB8fCBVTktOT1dOO1xuICAgICAgfSk7XG4gICAgICB2YXIgb3duZXJJ
bmZvID0gW10uY29uY2F0KFxuICAgICAgLy8gSWYgdGhlIHBhcmVudCBhbmQgY2hpbGQgaW5zdGFu
Y2VzIGhhdmUgYSBjb21tb24gb3duZXIgYW5jZXN0b3IsIHN0YXJ0XG4gICAgICAvLyB3aXRoIHRo
YXQgLS0gb3RoZXJ3aXNlIHdlIGp1c3Qgc3RhcnQgd2l0aCB0aGUgcGFyZW50J3Mgb3duZXJzLlxu
ICAgICAgZGVlcGVzdENvbW1vbiAhPT0gLTEgPyBjaGlsZE93bmVyc1tkZWVwZXN0Q29tbW9uXS5n
ZXROYW1lKCkgfHwgVU5LTk9XTiA6IFtdLCBhbmNlc3Rvck93bmVyTmFtZXMsIGFuY2VzdG9yVGFn
LFxuICAgICAgLy8gSWYgd2UncmUgd2FybmluZyBhYm91dCBhbiBpbnZhbGlkIChub24tcGFyZW50
KSBhbmNlc3RyeSwgYWRkICcuLi4nXG4gICAgICBpbnZhbGlkQW5jZXN0b3IgPyBbJy4uLiddIDog
W10sIGNoaWxkT3duZXJOYW1lcywgY2hpbGRUYWcpLmpvaW4oJyA+ICcpO1xuXG4gICAgICB2YXIg
d2FybktleSA9ICEhaW52YWxpZFBhcmVudCArICd8JyArIGNoaWxkVGFnICsgJ3wnICsgYW5jZXN0
b3JUYWcgKyAnfCcgKyBvd25lckluZm87XG4gICAgICBpZiAoZGlkV2Fyblt3YXJuS2V5XSkge1xu
ICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBkaWRXYXJuW3dhcm5LZXldID0gdHJ1ZTtc
blxuICAgICAgdmFyIHRhZ0Rpc3BsYXlOYW1lID0gY2hpbGRUYWc7XG4gICAgICB2YXIgd2hpdGVz
cGFjZUluZm8gPSAnJztcbiAgICAgIGlmIChjaGlsZFRhZyA9PT0gJyN0ZXh0Jykge1xuICAgICAg
ICBpZiAoL1xcUy8udGVzdChjaGlsZFRleHQpKSB7XG4gICAgICAgICAgdGFnRGlzcGxheU5hbWUg
PSAnVGV4dCBub2Rlcyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFnRGlzcGxheU5h
bWUgPSAnV2hpdGVzcGFjZSB0ZXh0IG5vZGVzJztcbiAgICAgICAgICB3aGl0ZXNwYWNlSW5mbyA9
IFwiIE1ha2Ugc3VyZSB5b3UgZG9uJ3QgaGF2ZSBhbnkgZXh0cmEgd2hpdGVzcGFjZSBiZXR3ZWVu
IHRhZ3Mgb24gXCIgKyAnZWFjaCBsaW5lIG9mIHlvdXIgc291cmNlIGNvZGUuJztcbiAgICAgICAg
fVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFnRGlzcGxheU5hbWUgPSAnPCcgKyBjaGlsZFRh
ZyArICc+JztcbiAgICAgIH1cblxuICAgICAgaWYgKGludmFsaWRQYXJlbnQpIHtcbiAgICAgICAg
dmFyIGluZm8gPSAnJztcbiAgICAgICAgaWYgKGFuY2VzdG9yVGFnID09PSAndGFibGUnICYmIGNo
aWxkVGFnID09PSAndHInKSB7XG4gICAgICAgICAgaW5mbyArPSAnIEFkZCBhIDx0Ym9keT4gdG8g
eW91ciBjb2RlIHRvIG1hdGNoIHRoZSBET00gdHJlZSBnZW5lcmF0ZWQgYnkgJyArICd0aGUgYnJv
d3Nlci4nO1xuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAndmFsaWRhdGVET01OZXN0aW5nKC4uLik6ICVzIGNh
bm5vdCBhcHBlYXIgYXMgYSBjaGlsZCBvZiA8JXM+LiVzICcgKyAnU2VlICVzLiVzJywgdGFnRGlz
cGxheU5hbWUsIGFuY2VzdG9yVGFnLCB3aGl0ZXNwYWNlSW5mbywgb3duZXJJbmZvLCBpbmZvKSA6
IHZvaWQgMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAndmFsaWRhdGVET01OZXN0aW5nKC4uLik6
ICVzIGNhbm5vdCBhcHBlYXIgYXMgYSBkZXNjZW5kYW50IG9mICcgKyAnPCVzPi4gU2VlICVzLics
IHRhZ0Rpc3BsYXlOYW1lLCBhbmNlc3RvclRhZywgb3duZXJJbmZvKSA6IHZvaWQgMDtcbiAgICAg
IH1cbiAgICB9XG4gIH07XG5cbiAgdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3Rvcklu
Zm8gPSB1cGRhdGVkQW5jZXN0b3JJbmZvO1xuXG4gIC8vIEZvciB0ZXN0aW5nXG4gIHZhbGlkYXRl
RE9NTmVzdGluZy5pc1RhZ1ZhbGlkSW5Db250ZXh0ID0gZnVuY3Rpb24gKHRhZywgYW5jZXN0b3JJ
bmZvKSB7XG4gICAgYW5jZXN0b3JJbmZvID0gYW5jZXN0b3JJbmZvIHx8IGVtcHR5QW5jZXN0b3JJ
bmZvO1xuICAgIHZhciBwYXJlbnRJbmZvID0gYW5jZXN0b3JJbmZvLmN1cnJlbnQ7XG4gICAgdmFy
IHBhcmVudFRhZyA9IHBhcmVudEluZm8gJiYgcGFyZW50SW5mby50YWc7XG4gICAgcmV0dXJuIGlz
VGFnVmFsaWRXaXRoUGFyZW50KHRhZywgcGFyZW50VGFnKSAmJiAhZmluZEludmFsaWRBbmNlc3Rv
ckZvclRhZyh0YWcsIGFuY2VzdG9ySW5mbyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0g
dmFsaWRhdGVET01OZXN0aW5nO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBG
T09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvdmFsaWRhdGVET01OZXN0aW5n
LmpzXG4vLyBtb2R1bGUgaWQgPSA0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIGBjaGFyQ29k
ZWAgcmVwcmVzZW50cyB0aGUgYWN0dWFsIFwiY2hhcmFjdGVyIGNvZGVcIiBhbmQgaXMgc2FmZSB0
byB1c2Ugd2l0aFxuICogYFN0cmluZy5mcm9tQ2hhckNvZGVgLiBBcyBzdWNoLCBvbmx5IGtleXMg
dGhhdCBjb3JyZXNwb25kIHRvIHByaW50YWJsZVxuICogY2hhcmFjdGVycyBwcm9kdWNlIGEgdmFs
aWQgYGNoYXJDb2RlYCwgdGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgRW50ZXIuXG4gKiBU
aGUgVGFiLWtleSBpcyBjb25zaWRlcmVkIG5vbi1wcmludGFibGUgYW5kIGRvZXMgbm90IGhhdmUg
YSBgY2hhckNvZGVgLFxuICogcHJlc3VtYWJseSBiZWNhdXNlIGl0IGRvZXMgbm90IHByb2R1Y2Ug
YSB0YWItY2hhcmFjdGVyIGluIGJyb3dzZXJzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRp
dmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEByZXR1cm4ge251bWJlcn0gTm9ybWFs
aXplZCBgY2hhckNvZGVgIHByb3BlcnR5LlxuICovXG5cbmZ1bmN0aW9uIGdldEV2ZW50Q2hhckNv
ZGUobmF0aXZlRXZlbnQpIHtcbiAgdmFyIGNoYXJDb2RlO1xuICB2YXIga2V5Q29kZSA9IG5hdGl2
ZUV2ZW50LmtleUNvZGU7XG5cbiAgaWYgKCdjaGFyQ29kZScgaW4gbmF0aXZlRXZlbnQpIHtcbiAg
ICBjaGFyQ29kZSA9IG5hdGl2ZUV2ZW50LmNoYXJDb2RlO1xuXG4gICAgLy8gRkYgZG9lcyBub3Qg
c2V0IGBjaGFyQ29kZWAgZm9yIHRoZSBFbnRlci1rZXksIGNoZWNrIGFnYWluc3QgYGtleUNvZGVg
LlxuICAgIGlmIChjaGFyQ29kZSA9PT0gMCAmJiBrZXlDb2RlID09PSAxMykge1xuICAgICAgY2hh
ckNvZGUgPSAxMztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSUU4IGRvZXMgbm90IGltcGxl
bWVudCBgY2hhckNvZGVgLCBidXQgYGtleUNvZGVgIGhhcyB0aGUgY29ycmVjdCB2YWx1ZS5cbiAg
ICBjaGFyQ29kZSA9IGtleUNvZGU7XG4gIH1cblxuICAvLyBTb21lIG5vbi1wcmludGFibGUga2V5
cyBhcmUgcmVwb3J0ZWQgaW4gYGNoYXJDb2RlYC9ga2V5Q29kZWAsIGRpc2NhcmQgdGhlbS5cbiAg
Ly8gTXVzdCBub3QgZGlzY2FyZCB0aGUgKG5vbi0pcHJpbnRhYmxlIEVudGVyLWtleS5cbiAgaWYg
KGNoYXJDb2RlID49IDMyIHx8IGNoYXJDb2RlID09PSAxMykge1xuICAgIHJldHVybiBjaGFyQ29k
ZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEV2ZW50Q2hh
ckNvZGU7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9nZXRFdmVudENoYXJDb2RlLmpzXG4vLyBtb2R1bGUg
aWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcu
L19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBnZXRQcm90b3R5cGUgZnJvbSAnLi9fZ2V0UHJvdG90
eXBlLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xu
XG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0
VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2Qg
cmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAg
b2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRo
ZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0g
ZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24g
cHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blBy
b3BlcnR5O1xuXG4vKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICov
XG52YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cbi8q
KlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9i
amVjdCBjcmVhdGVkIGJ5IHRoZVxuICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGgg
YSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJP
ZiBfXG4gKiBAc2luY2UgMC44LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZh
bHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0
cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhh
bXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqIH1cbiAq
XG4gKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8u
aXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxh
aW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlz
UGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1
bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdExpa2UodmFsdWUp
IHx8IGJhc2VHZXRUYWcodmFsdWUpICE9IG9iamVjdFRhZykge1xuICAgIHJldHVybiBmYWxzZTtc
biAgfVxuICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICBpZiAocHJvdG8gPT09
IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgQ3RvciA9IGhhc093blByb3Bl
cnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICBy
ZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAm
JlxuICAgIGZ1bmNUb1N0cmluZy5jYWxsKEN0b3IpID09IG9iamVjdEN0b3JTdHJpbmc7XG59XG5c
bmV4cG9ydCBkZWZhdWx0IGlzUGxhaW5PYmplY3Q7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9c
bi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNQbGFpbk9i
amVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4g
KiBQcmludHMgYSB3YXJuaW5nIGluIHRoZSBjb25zb2xlIGlmIGl0IGV4aXN0cy5cbiAqXG4gKiBA
cGFyYW0ge1N0cmluZ30gbWVzc2FnZSBUaGUgd2FybmluZyBtZXNzYWdlLlxuICogQHJldHVybnMg
e3ZvaWR9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdhcm5pbmcobWVzc2FnZSkge1xu
ICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4gIGlmICh0eXBlb2YgY29uc29sZSAh
PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicpIHtc
biAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICB9XG4gIC8qIGVzbGludC1lbmFibGUgbm8t
Y29uc29sZSAqL1xuICB0cnkge1xuICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNv
bnZlbmllbmNlIHNvIHRoYXQgaWYgeW91IGVuYWJsZVxuICAgIC8vIFwiYnJlYWsgb24gYWxsIGV4
Y2VwdGlvbnNcIiBpbiB5b3VyIGNvbnNvbGUsXG4gICAgLy8gaXQgd291bGQgcGF1c2UgdGhlIGV4
ZWN1dGlvbiBhdCB0aGlzIGxpbmUuXG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAg
IC8qIGVzbGludC1kaXNhYmxlIG5vLWVtcHR5ICovXG4gIH0gY2F0Y2ggKGUpIHt9XG4gIC8qIGVz
bGludC1lbmFibGUgbm8tZW1wdHkgKi9cbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdF
QlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy93YXJu
aW5nLmpzXG4vLyBtb2R1bGUgaWQgPSA0OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAg
Q29weXJpZ2h0IChjKSAyMDE2IEplZCBXYXRzb24uXG4gIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQg
TGljZW5zZSAoTUlUKSwgc2VlXG4gIGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFt
ZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3Ry
aWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cblx0ZnVuY3Rpb24g
Y2xhc3NOYW1lcyAoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkg
PSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1l
bnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9
IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBl
ID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxz
ZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdGNsYXNzZXMucHVzaChjbGFzc05h
bWVzLmFwcGx5KG51bGwsIGFyZykpO1xuXHRcdFx0fSBlbHNlIGlmIChhcmdUeXBlID09PSAnb2Jq
ZWN0Jykge1xuXHRcdFx0XHRmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG5cdFx0XHRcdFx0aWYgKGhh
c093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5w
dXNoKGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0
cmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBtb2R1bGUgIT09
ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBj
bGFzc05hbWVzO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYg
dHlwZW9mIGRlZmluZS5hbWQgPT09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBy
ZWdpc3RlciBhcyAnY2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1l
XG5cdFx0ZGVmaW5lKCdjbGFzc25hbWVzJywgW10sIGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVy
biBjbGFzc05hbWVzO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHdpbmRvdy5jbGFzc05hbWVz
ID0gY2xhc3NOYW1lcztcblx0fVxufSgpKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8g
V0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanNcbi8v
IG1vZHVsZSBpZCA9IDUwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0Jztcblxu
dmFyIGFzYXAgPSByZXF1aXJlKCdhc2FwL3JhdycpO1xuXG5mdW5jdGlvbiBub29wKCkge31cblxu
Ly8gU3RhdGVzOlxuLy9cbi8vIDAgLSBwZW5kaW5nXG4vLyAxIC0gZnVsZmlsbGVkIHdpdGggX3Zh
bHVlXG4vLyAyIC0gcmVqZWN0ZWQgd2l0aCBfdmFsdWVcbi8vIDMgLSBhZG9wdGVkIHRoZSBzdGF0
ZSBvZiBhbm90aGVyIHByb21pc2UsIF92YWx1ZVxuLy9cbi8vIG9uY2UgdGhlIHN0YXRlIGlzIG5v
IGxvbmdlciBwZW5kaW5nICgwKSBpdCBpcyBpbW11dGFibGVcblxuLy8gQWxsIGBfYCBwcmVmaXhl
ZCBwcm9wZXJ0aWVzIHdpbGwgYmUgcmVkdWNlZCB0byBgX3tyYW5kb20gbnVtYmVyfWBcbi8vIGF0
IGJ1aWxkIHRpbWUgdG8gb2JmdXNjYXRlIHRoZW0gYW5kIGRpc2NvdXJhZ2UgdGhlaXIgdXNlLlxu
Ly8gV2UgZG9uJ3QgdXNlIHN5bWJvbHMgb3IgT2JqZWN0LmRlZmluZVByb3BlcnR5IHRvIGZ1bGx5
IGhpZGUgdGhlbVxuLy8gYmVjYXVzZSB0aGUgcGVyZm9ybWFuY2UgaXNuJ3QgZ29vZCBlbm91Z2gu
XG5cblxuLy8gdG8gYXZvaWQgdXNpbmcgdHJ5L2NhdGNoIGluc2lkZSBjcml0aWNhbCBmdW5jdGlv
bnMsIHdlXG4vLyBleHRyYWN0IHRoZW0gdG8gaGVyZS5cbnZhciBMQVNUX0VSUk9SID0gbnVsbDtc
bnZhciBJU19FUlJPUiA9IHt9O1xuZnVuY3Rpb24gZ2V0VGhlbihvYmopIHtcbiAgdHJ5IHtcbiAg
ICByZXR1cm4gb2JqLnRoZW47XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgTEFTVF9FUlJPUiA9IGV4
O1xuICAgIHJldHVybiBJU19FUlJPUjtcbiAgfVxufVxuXG5mdW5jdGlvbiB0cnlDYWxsT25lKGZu
LCBhKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZuKGEpO1xuICB9IGNhdGNoIChleCkge1xuICAg
IExBU1RfRVJST1IgPSBleDtcbiAgICByZXR1cm4gSVNfRVJST1I7XG4gIH1cbn1cbmZ1bmN0aW9u
IHRyeUNhbGxUd28oZm4sIGEsIGIpIHtcbiAgdHJ5IHtcbiAgICBmbihhLCBiKTtcbiAgfSBjYXRj
aCAoZXgpIHtcbiAgICBMQVNUX0VSUk9SID0gZXg7XG4gICAgcmV0dXJuIElTX0VSUk9SO1xuICB9
XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcblxuZnVuY3Rpb24gUHJvbWlzZShmbikg
e1xuICBpZiAodHlwZW9mIHRoaXMgIT09ICdvYmplY3QnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVF
cnJvcignUHJvbWlzZXMgbXVzdCBiZSBjb25zdHJ1Y3RlZCB2aWEgbmV3Jyk7XG4gIH1cbiAgaWYg
KHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1By
b21pc2UgY29uc3RydWN0b3JcXCdzIGFyZ3VtZW50IGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH1c
biAgdGhpcy5fNzUgPSAwO1xuICB0aGlzLl84MyA9IDA7XG4gIHRoaXMuXzE4ID0gbnVsbDtcbiAg
dGhpcy5fMzggPSBudWxsO1xuICBpZiAoZm4gPT09IG5vb3ApIHJldHVybjtcbiAgZG9SZXNvbHZl
KGZuLCB0aGlzKTtcbn1cblByb21pc2UuXzQ3ID0gbnVsbDtcblByb21pc2UuXzcxID0gbnVsbDtc
blByb21pc2UuXzQ0ID0gbm9vcDtcblxuUHJvbWlzZS5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9u
KG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gIGlmICh0aGlzLmNvbnN0cnVjdG9yICE9PSBQ
cm9taXNlKSB7XG4gICAgcmV0dXJuIHNhZmVUaGVuKHRoaXMsIG9uRnVsZmlsbGVkLCBvblJlamVj
dGVkKTtcbiAgfVxuICB2YXIgcmVzID0gbmV3IFByb21pc2Uobm9vcCk7XG4gIGhhbmRsZSh0aGlz
LCBuZXcgSGFuZGxlcihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcmVzKSk7XG4gIHJldHVybiBy
ZXM7XG59O1xuXG5mdW5jdGlvbiBzYWZlVGhlbihzZWxmLCBvbkZ1bGZpbGxlZCwgb25SZWplY3Rl
ZCkge1xuICByZXR1cm4gbmV3IHNlbGYuY29uc3RydWN0b3IoZnVuY3Rpb24gKHJlc29sdmUsIHJl
amVjdCkge1xuICAgIHZhciByZXMgPSBuZXcgUHJvbWlzZShub29wKTtcbiAgICByZXMudGhlbihy
ZXNvbHZlLCByZWplY3QpO1xuICAgIGhhbmRsZShzZWxmLCBuZXcgSGFuZGxlcihvbkZ1bGZpbGxl
ZCwgb25SZWplY3RlZCwgcmVzKSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gaGFuZGxlKHNlbGYsIGRl
ZmVycmVkKSB7XG4gIHdoaWxlIChzZWxmLl84MyA9PT0gMykge1xuICAgIHNlbGYgPSBzZWxmLl8x
ODtcbiAgfVxuICBpZiAoUHJvbWlzZS5fNDcpIHtcbiAgICBQcm9taXNlLl80NyhzZWxmKTtcbiAg
fVxuICBpZiAoc2VsZi5fODMgPT09IDApIHtcbiAgICBpZiAoc2VsZi5fNzUgPT09IDApIHtcbiAg
ICAgIHNlbGYuXzc1ID0gMTtcbiAgICAgIHNlbGYuXzM4ID0gZGVmZXJyZWQ7XG4gICAgICByZXR1
cm47XG4gICAgfVxuICAgIGlmIChzZWxmLl83NSA9PT0gMSkge1xuICAgICAgc2VsZi5fNzUgPSAy
O1xuICAgICAgc2VsZi5fMzggPSBbc2VsZi5fMzgsIGRlZmVycmVkXTtcbiAgICAgIHJldHVybjtc
biAgICB9XG4gICAgc2VsZi5fMzgucHVzaChkZWZlcnJlZCk7XG4gICAgcmV0dXJuO1xuICB9XG4g
IGhhbmRsZVJlc29sdmVkKHNlbGYsIGRlZmVycmVkKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlUmVz
b2x2ZWQoc2VsZiwgZGVmZXJyZWQpIHtcbiAgYXNhcChmdW5jdGlvbigpIHtcbiAgICB2YXIgY2Ig
PSBzZWxmLl84MyA9PT0gMSA/IGRlZmVycmVkLm9uRnVsZmlsbGVkIDogZGVmZXJyZWQub25SZWpl
Y3RlZDtcbiAgICBpZiAoY2IgPT09IG51bGwpIHtcbiAgICAgIGlmIChzZWxmLl84MyA9PT0gMSkg
e1xuICAgICAgICByZXNvbHZlKGRlZmVycmVkLnByb21pc2UsIHNlbGYuXzE4KTtcbiAgICAgIH0g
ZWxzZSB7XG4gICAgICAgIHJlamVjdChkZWZlcnJlZC5wcm9taXNlLCBzZWxmLl8xOCk7XG4gICAg
ICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciByZXQgPSB0cnlDYWxsT25lKGNiLCBz
ZWxmLl8xOCk7XG4gICAgaWYgKHJldCA9PT0gSVNfRVJST1IpIHtcbiAgICAgIHJlamVjdChkZWZl
cnJlZC5wcm9taXNlLCBMQVNUX0VSUk9SKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZShk
ZWZlcnJlZC5wcm9taXNlLCByZXQpO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiByZXNvbHZl
KHNlbGYsIG5ld1ZhbHVlKSB7XG4gIC8vIFByb21pc2UgUmVzb2x1dGlvbiBQcm9jZWR1cmU6IGh0
dHBzOi8vZ2l0aHViLmNvbS9wcm9taXNlcy1hcGx1cy9wcm9taXNlcy1zcGVjI3RoZS1wcm9taXNl
LXJlc29sdXRpb24tcHJvY2VkdXJlXG4gIGlmIChuZXdWYWx1ZSA9PT0gc2VsZikge1xuICAgIHJl
dHVybiByZWplY3QoXG4gICAgICBzZWxmLFxuICAgICAgbmV3IFR5cGVFcnJvcignQSBwcm9taXNl
IGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0c2VsZi4nKVxuICAgICk7XG4gIH1cbiAgaWYgKFxu
ICAgIG5ld1ZhbHVlICYmXG4gICAgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlw
ZW9mIG5ld1ZhbHVlID09PSAnZnVuY3Rpb24nKVxuICApIHtcbiAgICB2YXIgdGhlbiA9IGdldFRo
ZW4obmV3VmFsdWUpO1xuICAgIGlmICh0aGVuID09PSBJU19FUlJPUikge1xuICAgICAgcmV0dXJu
IHJlamVjdChzZWxmLCBMQVNUX0VSUk9SKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhlbiA9
PT0gc2VsZi50aGVuICYmXG4gICAgICBuZXdWYWx1ZSBpbnN0YW5jZW9mIFByb21pc2VcbiAgICAp
IHtcbiAgICAgIHNlbGYuXzgzID0gMztcbiAgICAgIHNlbGYuXzE4ID0gbmV3VmFsdWU7XG4gICAg
ICBmaW5hbGUoc2VsZik7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhl
biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZG9SZXNvbHZlKHRoZW4uYmluZChuZXdWYWx1ZSks
IHNlbGYpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBzZWxmLl84MyA9IDE7XG4gIHNl
bGYuXzE4ID0gbmV3VmFsdWU7XG4gIGZpbmFsZShzZWxmKTtcbn1cblxuZnVuY3Rpb24gcmVqZWN0
KHNlbGYsIG5ld1ZhbHVlKSB7XG4gIHNlbGYuXzgzID0gMjtcbiAgc2VsZi5fMTggPSBuZXdWYWx1
ZTtcbiAgaWYgKFByb21pc2UuXzcxKSB7XG4gICAgUHJvbWlzZS5fNzEoc2VsZiwgbmV3VmFsdWUp
O1xuICB9XG4gIGZpbmFsZShzZWxmKTtcbn1cbmZ1bmN0aW9uIGZpbmFsZShzZWxmKSB7XG4gIGlm
IChzZWxmLl83NSA9PT0gMSkge1xuICAgIGhhbmRsZShzZWxmLCBzZWxmLl8zOCk7XG4gICAgc2Vs
Zi5fMzggPSBudWxsO1xuICB9XG4gIGlmIChzZWxmLl83NSA9PT0gMikge1xuICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgc2VsZi5fMzgubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhhbmRsZShzZWxmLCBz
ZWxmLl8zOFtpXSk7XG4gICAgfVxuICAgIHNlbGYuXzM4ID0gbnVsbDtcbiAgfVxufVxuXG5mdW5j
dGlvbiBIYW5kbGVyKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBwcm9taXNlKXtcbiAgdGhpcy5v
bkZ1bGZpbGxlZCA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmls
bGVkIDogbnVsbDtcbiAgdGhpcy5vblJlamVjdGVkID0gdHlwZW9mIG9uUmVqZWN0ZWQgPT09ICdm
dW5jdGlvbicgPyBvblJlamVjdGVkIDogbnVsbDtcbiAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtc
bn1cblxuLyoqXG4gKiBUYWtlIGEgcG90ZW50aWFsbHkgbWlzYmVoYXZpbmcgcmVzb2x2ZXIgZnVu
Y3Rpb24gYW5kIG1ha2Ugc3VyZVxuICogb25GdWxmaWxsZWQgYW5kIG9uUmVqZWN0ZWQgYXJlIG9u
bHkgY2FsbGVkIG9uY2UuXG4gKlxuICogTWFrZXMgbm8gZ3VhcmFudGVlcyBhYm91dCBhc3luY2hy
b255LlxuICovXG5mdW5jdGlvbiBkb1Jlc29sdmUoZm4sIHByb21pc2UpIHtcbiAgdmFyIGRvbmUg
PSBmYWxzZTtcbiAgdmFyIHJlcyA9IHRyeUNhbGxUd28oZm4sIGZ1bmN0aW9uICh2YWx1ZSkge1xu
ICAgIGlmIChkb25lKSByZXR1cm47XG4gICAgZG9uZSA9IHRydWU7XG4gICAgcmVzb2x2ZShwcm9t
aXNlLCB2YWx1ZSk7XG4gIH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICBpZiAoZG9uZSkgcmV0
dXJuO1xuICAgIGRvbmUgPSB0cnVlO1xuICAgIHJlamVjdChwcm9taXNlLCByZWFzb24pO1xuICB9
KTtcbiAgaWYgKCFkb25lICYmIHJlcyA9PT0gSVNfRVJST1IpIHtcbiAgICBkb25lID0gdHJ1ZTtc
biAgICByZWplY3QocHJvbWlzZSwgTEFTVF9FUlJPUik7XG4gIH1cbn1cblxuXG5cbi8vLy8vLy8v
Ly8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LXNj
cmlwdHMvbm9kZV9tb2R1bGVzL3Byb21pc2UvbGliL2NvcmUuanNcbi8vIG1vZHVsZSBpZCA9IDUx
XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQ
cm9kSW52YXJpYW50JyksXG4gICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtc
blxudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9SZWFjdE5vb3BVcGRhdGVR
dWV1ZScpO1xuXG52YXIgY2FuRGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL2NhbkRlZmluZVBy
b3BlcnR5Jyk7XG52YXIgZW1wdHlPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVj
dCcpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFy
IGxvd1ByaW9yaXR5V2FybmluZyA9IHJlcXVpcmUoJy4vbG93UHJpb3JpdHlXYXJuaW5nJyk7XG5c
bi8qKlxuICogQmFzZSBjbGFzcyBoZWxwZXJzIGZvciB0aGUgdXBkYXRpbmcgc3RhdGUgb2YgYSBj
b21wb25lbnQuXG4gKi9cbmZ1bmN0aW9uIFJlYWN0Q29tcG9uZW50KHByb3BzLCBjb250ZXh0LCB1
cGRhdGVyKSB7XG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4
dDtcbiAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gIC8vIFdlIGluaXRpYWxpemUgdGhlIGRl
ZmF1bHQgdXBkYXRlciBidXQgdGhlIHJlYWwgb25lIGdldHMgaW5qZWN0ZWQgYnkgdGhlXG4gIC8v
IHJlbmRlcmVyLlxuICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1
ZXVlO1xufVxuXG5SZWFjdENvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCA9IHt9
O1xuXG4vKipcbiAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMg
dG8gbXV0YXRlXG4gKiBzdGF0ZS4gWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1t
dXRhYmxlLlxuICpcbiAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3
aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVg
IGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuICpc
biAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGNhbGxzIHRvIGBzZXRTdGF0ZWAgd2lsbCBy
dW4gc3luY2hyb25vdXNseSxcbiAqIGFzIHRoZXkgbWF5IGV2ZW50dWFsbHkgYmUgYmF0Y2hlZCB0
b2dldGhlci4gIFlvdSBjYW4gcHJvdmlkZSBhbiBvcHRpb25hbFxuICogY2FsbGJhY2sgdGhhdCB3
aWxsIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIGNhbGwgdG8gc2V0U3RhdGUgaXMgYWN0dWFsbHlcbiAq
IGNvbXBsZXRlZC5cbiAqXG4gKiBXaGVuIGEgZnVuY3Rpb24gaXMgcHJvdmlkZWQgdG8gc2V0U3Rh
dGUsIGl0IHdpbGwgYmUgY2FsbGVkIGF0IHNvbWUgcG9pbnQgaW5cbiAqIHRoZSBmdXR1cmUgKG5v
dCBzeW5jaHJvbm91c2x5KS4gSXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgdXAgdG8gZGF0ZVxu
ICogY29tcG9uZW50IGFyZ3VtZW50cyAoc3RhdGUsIHByb3BzLCBjb250ZXh0KS4gVGhlc2UgdmFs
dWVzIGNhbiBiZSBkaWZmZXJlbnRcbiAqIGZyb20gdGhpcy4qIGJlY2F1c2UgeW91ciBmdW5jdGlv
biBtYXkgYmUgY2FsbGVkIGFmdGVyIHJlY2VpdmVQcm9wcyBidXQgYmVmb3JlXG4gKiBzaG91bGRD
b21wb25lbnRVcGRhdGUsIGFuZCB0aGlzIG5ldyBzdGF0ZSwgcHJvcHMsIGFuZCBjb250ZXh0IHdp
bGwgbm90IHlldCBiZVxuICogYXNzaWduZWQgdG8gdGhpcy5cbiAqXG4gKiBAcGFyYW0ge29iamVj
dHxmdW5jdGlvbn0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSBvciBmdW5jdGlvbiB0
b1xuICogICAgICAgIHByb2R1Y2UgbmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRo
IGN1cnJlbnQgc3RhdGUuXG4gKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFm
dGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG4gKiBAZmluYWxcbiAqIEBwcm90ZWN0ZWRcbiAqL1xuUmVh
Y3RDb21wb25lbnQucHJvdG90eXBlLnNldFN0YXRlID0gZnVuY3Rpb24gKHBhcnRpYWxTdGF0ZSwg
Y2FsbGJhY2spIHtcbiAgISh0eXBlb2YgcGFydGlhbFN0YXRlID09PSAnb2JqZWN0JyB8fCB0eXBl
b2YgcGFydGlhbFN0YXRlID09PSAnZnVuY3Rpb24nIHx8IHBhcnRpYWxTdGF0ZSA9PSBudWxsKSA/
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdzZXRTdGF0ZSguLi4pOiB0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzIHRvIHVw
ZGF0ZSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlh
Ymxlcy4nKSA6IF9wcm9kSW52YXJpYW50KCc4NScpIDogdm9pZCAwO1xuICB0aGlzLnVwZGF0ZXIu
ZW5xdWV1ZVNldFN0YXRlKHRoaXMsIHBhcnRpYWxTdGF0ZSk7XG4gIGlmIChjYWxsYmFjaykge1xu
ICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJhY2ssICdzZXRTdGF0
ZScpO1xuICB9XG59O1xuXG4vKipcbiAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9u
bHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcbiAqIGNlcnRhaW50eSB0aGF0IHdl
IGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuICpcbiAqIFlvdSBtYXkgd2FudCB0
byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBvZiB0aGVc
biAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3Qg
Y2FsbGVkLlxuICpcbiAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21wb25lbnRVcGRh
dGVgLCBidXQgaXQgd2lsbCBpbnZva2VcbiAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNv
bXBvbmVudERpZFVwZGF0ZWAuXG4gKlxuICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENh
bGxlZCBhZnRlciB1cGRhdGUgaXMgY29tcGxldGUuXG4gKiBAZmluYWxcbiAqIEBwcm90ZWN0ZWRc
biAqL1xuUmVhY3RDb21wb25lbnQucHJvdG90eXBlLmZvcmNlVXBkYXRlID0gZnVuY3Rpb24gKGNh
bGxiYWNrKSB7XG4gIHRoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyk7XG4gIGlm
IChjYWxsYmFjaykge1xuICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2Fs
bGJhY2ssICdmb3JjZVVwZGF0ZScpO1xuICB9XG59O1xuXG4vKipcbiAqIERlcHJlY2F0ZWQgQVBJ
cy4gVGhlc2UgQVBJcyB1c2VkIHRvIGV4aXN0IG9uIGNsYXNzaWMgUmVhY3QgY2xhc3NlcyBidXQg
c2luY2VcbiAqIHdlIHdvdWxkIGxpa2UgdG8gZGVwcmVjYXRlIHRoZW0sIHdlJ3JlIG5vdCBnb2lu
ZyB0byBtb3ZlIHRoZW0gb3ZlciB0byB0aGlzXG4gKiBtb2Rlcm4gYmFzZSBjbGFzcy4gSW5zdGVh
ZCwgd2UgZGVmaW5lIGEgZ2V0dGVyIHRoYXQgd2FybnMgaWYgaXQncyBhY2Nlc3NlZC5cbiAqL1xu
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGRlcHJl
Y2F0ZWRBUElzID0ge1xuICAgIGlzTW91bnRlZDogWydpc01vdW50ZWQnLCAnSW5zdGVhZCwgbWFr
ZSBzdXJlIHRvIGNsZWFuIHVwIHN1YnNjcmlwdGlvbnMgYW5kIHBlbmRpbmcgcmVxdWVzdHMgaW4g
JyArICdjb21wb25lbnRXaWxsVW5tb3VudCB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcy4nXSxcbiAg
ICByZXBsYWNlU3RhdGU6IFsncmVwbGFjZVN0YXRlJywgJ1JlZmFjdG9yIHlvdXIgY29kZSB0byB1
c2Ugc2V0U3RhdGUgaW5zdGVhZCAoc2VlICcgKyAnaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29r
L3JlYWN0L2lzc3Vlcy8zMjM2KS4nXVxuICB9O1xuICB2YXIgZGVmaW5lRGVwcmVjYXRpb25XYXJu
aW5nID0gZnVuY3Rpb24gKG1ldGhvZE5hbWUsIGluZm8pIHtcbiAgICBpZiAoY2FuRGVmaW5lUHJv
cGVydHkpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFjdENvbXBvbmVudC5wcm90
b3R5cGUsIG1ldGhvZE5hbWUsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAg
ICAgbG93UHJpb3JpdHlXYXJuaW5nKGZhbHNlLCAnJXMoLi4uKSBpcyBkZXByZWNhdGVkIGluIHBs
YWluIEphdmFTY3JpcHQgUmVhY3QgY2xhc3Nlcy4gJXMnLCBpbmZvWzBdLCBpbmZvWzFdKTtcbiAg
ICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4g
IH07XG4gIGZvciAodmFyIGZuTmFtZSBpbiBkZXByZWNhdGVkQVBJcykge1xuICAgIGlmIChkZXBy
ZWNhdGVkQVBJcy5oYXNPd25Qcm9wZXJ0eShmbk5hbWUpKSB7XG4gICAgICBkZWZpbmVEZXByZWNh
dGlvbldhcm5pbmcoZm5OYW1lLCBkZXByZWNhdGVkQVBJc1tmbk5hbWVdKTtcbiAgICB9XG4gIH1c
bn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGhlbHBlcnMgZm9yIHRoZSB1cGRhdGluZyBzdGF0ZSBv
ZiBhIGNvbXBvbmVudC5cbiAqL1xuZnVuY3Rpb24gUmVhY3RQdXJlQ29tcG9uZW50KHByb3BzLCBj
b250ZXh0LCB1cGRhdGVyKSB7XG4gIC8vIER1cGxpY2F0ZWQgZnJvbSBSZWFjdENvbXBvbmVudC5c
biAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB0aGlz
LnJlZnMgPSBlbXB0eU9iamVjdDtcbiAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB1cGRh
dGVyIGJ1dCB0aGUgcmVhbCBvbmUgZ2V0cyBpbmplY3RlZCBieSB0aGVcbiAgLy8gcmVuZGVyZXIu
XG4gIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG59XG5c
bmZ1bmN0aW9uIENvbXBvbmVudER1bW15KCkge31cbkNvbXBvbmVudER1bW15LnByb3RvdHlwZSA9
IFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZTtcblJlYWN0UHVyZUNvbXBvbmVudC5wcm90b3R5cGUg
PSBuZXcgQ29tcG9uZW50RHVtbXkoKTtcblJlYWN0UHVyZUNvbXBvbmVudC5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBSZWFjdFB1cmVDb21wb25lbnQ7XG4vLyBBdm9pZCBhbiBleHRyYSBwcm90b3R5
cGUganVtcCBmb3IgdGhlc2UgbWV0aG9kcy5cbl9hc3NpZ24oUmVhY3RQdXJlQ29tcG9uZW50LnBy
b3RvdHlwZSwgUmVhY3RDb21wb25lbnQucHJvdG90eXBlKTtcblJlYWN0UHVyZUNvbXBvbmVudC5w
cm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQgPSB0cnVlO1xuXG5tb2R1bGUuZXhwb3J0cyA9
IHtcbiAgQ29tcG9uZW50OiBSZWFjdENvbXBvbmVudCxcbiAgUHVyZUNvbXBvbmVudDogUmVhY3RQ
dXJlQ29tcG9uZW50XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09U
RVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEJhc2VDbGFzc2VzLmpzXG4vLyBt
b2R1bGUgaWQgPSA1MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAy
MDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2Zi
anMvbGliL3dhcm5pbmcnKTtcblxuZnVuY3Rpb24gd2Fybk5vb3AocHVibGljSW5zdGFuY2UsIGNh
bGxlck5hbWUpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICB2YXIgY29uc3RydWN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3RvcjtcbiAg
ICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwg
JyVzKC4uLik6IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50ZWQgb3IgbW91bnRpbmcgY29tcG9uZW50
LiAnICsgJ1RoaXMgdXN1YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb24gYW4gdW5tb3VudGVk
IGNvbXBvbmVudC4gJyArICdUaGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBm
b3IgdGhlICVzIGNvbXBvbmVudC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBjb25zdHJ1Y3Rv
ciAmJiAoY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3IubmFtZSkgfHwgJ1Jl
YWN0Q2xhc3MnKSA6IHZvaWQgMDtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgdGhlIGFic3Ry
YWN0IEFQSSBmb3IgYW4gdXBkYXRlIHF1ZXVlLlxuICovXG52YXIgUmVhY3ROb29wVXBkYXRlUXVl
dWUgPSB7XG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUg
Y29tcG9uZW50IGlzIG1vdW50ZWQuXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5z
dGFuY2UgVGhlIGluc3RhbmNlIHdlIHdhbnQgdG8gdGVzdC5cbiAgICogQHJldHVybiB7Ym9vbGVh
bn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqIEBwcm90ZWN0ZWRcbiAg
ICogQGZpbmFsXG4gICAqL1xuICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkg
e1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcblxuICAvKipcbiAgICogRW5xdWV1ZSBhIGNhbGxi
YWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBhbGwgdGhlIHBlbmRpbmcgdXBkYXRlc1xu
ICAgKiBoYXZlIHByb2Nlc3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJs
aWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gdXNlIGFzIGB0aGlzYCBjb250ZXh0LlxuICAgKiBA
cGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQu
XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUNhbGxiYWNrOiBmdW5jdGlvbiAocHVi
bGljSW5zdGFuY2UsIGNhbGxiYWNrKSB7fSxcblxuICAvKipcbiAgICogRm9yY2VzIGFuIHVwZGF0
ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuICAg
KiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cbiAg
ICpcbiAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29t
ZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdl
ZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cbiAgICpcbiAgICogVGhpcyB3aWxsIG5v
dCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuICAg
KiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuICAgKlxu
ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0
IHNob3VsZCByZXJlbmRlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlRm9yY2VV
cGRhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuICAgIHdhcm5Ob29wKHB1YmxpY0lu
c3RhbmNlLCAnZm9yY2VVcGRhdGUnKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVwbGFjZXMgYWxs
IG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0YXRlIHN0
YXRlLlxuICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG4g
ICAqXG4gICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJl
IGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0
ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG4gICAqXG4g
ICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQg
c2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcGxldGVTdGF0ZSBOZXh0
IHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVSZXBsYWNlU3RhdGU6IGZ1
bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSkge1xuICAgIHdhcm5Ob29wKHB1
YmxpY0luc3RhbmNlLCAncmVwbGFjZVN0YXRlJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMg
YSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2UgX3BlbmRpbmdT
dGF0ZSBpc1xuICAgKiBpbnRlcm5hbC4gVGhpcyBwcm92aWRlcyBhIG1lcmdpbmcgc3RyYXRlZ3kg
dGhhdCBpcyBub3QgYXZhaWxhYmxlIHRvIGRlZXBcbiAgICogcHJvcGVydGllcyB3aGljaCBpcyBj
b25mdXNpbmcuIFRPRE86IEV4cG9zZSBwZW5kaW5nU3RhdGUgb3IgZG9uJ3QgdXNlIGl0XG4gICAq
IGR1cmluZyB0aGUgbWVyZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGlj
SW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0g
e29iamVjdH0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0
aCBzdGF0ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlU2V0U3RhdGU6IGZ1bmN0
aW9uIChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKSB7XG4gICAgd2Fybk5vb3AocHVibGlj
SW5zdGFuY2UsICdzZXRTdGF0ZScpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0
Tm9vcFVwZGF0ZVF1ZXVlO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09U
RVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdE5vb3BVcGRhdGVRdWV1ZS5qc1xu
Ly8gbW9kdWxlIGlkID0gNTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2FuRGVmaW5lUHJv
cGVydHkgPSBmYWxzZTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gIHRyeSB7XG4gICAgLy8gJEZsb3dGaXhNZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJv
b2svZmxvdy9pc3N1ZXMvMjg1XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAneCcsIHsg
Z2V0OiBmdW5jdGlvbiAoKSB7fSB9KTtcbiAgICBjYW5EZWZpbmVQcm9wZXJ0eSA9IHRydWU7XG4g
IH0gY2F0Y2ggKHgpIHtcbiAgICAvLyBJRSB3aWxsIGZhaWwgb24gZGVmaW5lUHJvcGVydHlcbiAg
fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhbkRlZmluZVByb3BlcnR5O1xuXG5cbi8vLy8vLy8v
Ly8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0L2xp
Yi9jYW5EZWZpbmVQcm9wZXJ0eS5qc1xuLy8gbW9kdWxlIGlkID0gNTRcbi8vIG1vZHVsZSBjaHVu
a3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG4vLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQgdHlwZS4g
SWYgdGhlcmUgaXMgbm8gbmF0aXZlIFN5bWJvbFxuLy8gbm9yIHBvbHlmaWxsLCB0aGVuIGEgcGxh
aW4gbnVtYmVyIGlzIHVzZWQgZm9yIHBlcmZvcm1hbmNlLlxuXG52YXIgUkVBQ1RfRUxFTUVOVF9U
WVBFID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2xbJ2ZvciddICYmIFN5
bWJvbFsnZm9yJ10oJ3JlYWN0LmVsZW1lbnQnKSB8fCAweGVhYzc7XG5cbm1vZHVsZS5leHBvcnRz
ID0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFD
SyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9SZWFjdEVsZW1lbnRTeW1ib2wu
anNcbi8vIG1vZHVsZSBpZCA9IDU1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gUmVhY3QgMTUuNSByZWZlcmVu
Y2VzIHRoaXMgbW9kdWxlLCBhbmQgYXNzdW1lcyBQcm9wVHlwZXMgYXJlIHN0aWxsIGNhbGxhYmxl
IGluIHByb2R1Y3Rpb24uXG4vLyBUaGVyZWZvcmUgd2UgcmUtZXhwb3J0IGRldmVsb3BtZW50LW9u
bHkgdmVyc2lvbiB3aXRoIGFsbCB0aGUgUHJvcFR5cGVzIGNoZWNrcyBoZXJlLlxuLy8gSG93ZXZl
ciBpZiBvbmUgaXMgbWlncmF0aW5nIHRvIHRoZSBgcHJvcC10eXBlc2AgbnBtIGxpYnJhcnksIHRo
ZXkgd2lsbCBnbyB0aHJvdWdoIHRoZVxuLy8gYGluZGV4LmpzYCBlbnRyeSBwb2ludCwgYW5kIGl0
IHdpbGwgYnJhbmNoIGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnQuXG52YXIgZmFjdG9yeSA9
IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKTtcbm1vZHVsZS5leHBvcnRzID0g
ZnVuY3Rpb24oaXNWYWxpZEVsZW1lbnQpIHtcbiAgLy8gSXQgaXMgc3RpbGwgYWxsb3dlZCBpbiAx
NS41LlxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IGZhbHNlO1xuICByZXR1cm4gZmFjdG9y
eShpc1ZhbGlkRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59O1xuXG5cblxuLy8vLy8v
Ly8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcHJvcC10
eXBlcy9mYWN0b3J5LmpzXG4vLyBtb2R1bGUgaWQgPSA1NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAi
LCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFj
dFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9C
RV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG5cblxu
XG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxl
cy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qc1xuLy8gbW9kdWxlIGlkID0g
NTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3MgPSB7XG4gIGhh
c0NhY2hlZENoaWxkTm9kZXM6IDEgPDwgMFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERP
TUNvbXBvbmVudEZsYWdzO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09U
RVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01Db21wb25lbnRGbGFn
cy5qc1xuLy8gbW9kdWxlIGlkID0gNThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBD
b3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJ
bnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgaW52YXJp
YW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogQWNjdW11bGF0
ZXMgaXRlbXMgdGhhdCBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCBpbnRvIHRoZSBmaXJz
dCBvbmUuIFRoaXNcbiAqIGlzIHVzZWQgdG8gY29uc2VydmUgbWVtb3J5IGJ5IGF2b2lkaW5nIGFy
cmF5IGFsbG9jYXRpb25zLCBhbmQgdGh1cyBzYWNyaWZpY2VzXG4gKiBBUEkgY2xlYW5uZXNzLiBT
aW5jZSBgY3VycmVudGAgY2FuIGJlIG51bGwgYmVmb3JlIGJlaW5nIHBhc3NlZCBpbiBhbmQgbm90
XG4gKiBudWxsIGFmdGVyIHRoaXMgZnVuY3Rpb24sIG1ha2Ugc3VyZSB0byBhc3NpZ24gaXQgYmFj
ayB0byBgY3VycmVudGA6XG4gKlxuICogYGEgPSBhY2N1bXVsYXRlSW50byhhLCBiKTtgXG4gKlxu
ICogVGhpcyBBUEkgc2hvdWxkIGJlIHNwYXJpbmdseSB1c2VkLiBUcnkgYGFjY3VtdWxhdGVgIGZv
ciBzb21ldGhpbmcgY2xlYW5lci5cbiAqXG4gKiBAcmV0dXJuIHsqfGFycmF5PCo+fSBBbiBhY2N1
bXVsYXRpb24gb2YgaXRlbXMuXG4gKi9cblxuZnVuY3Rpb24gYWNjdW11bGF0ZUludG8oY3VycmVu
dCwgbmV4dCkge1xuICAhKG5leHQgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnYWNjdW11bGF0ZUludG8oLi4uKTogQWNj
dW11bGF0ZWQgaXRlbXMgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuJykgOiBfcHJvZElu
dmFyaWFudCgnMzAnKSA6IHZvaWQgMDtcblxuICBpZiAoY3VycmVudCA9PSBudWxsKSB7XG4gICAg
cmV0dXJuIG5leHQ7XG4gIH1cblxuICAvLyBCb3RoIGFyZSBub3QgZW1wdHkuIFdhcm5pbmc6IE5l
dmVyIGNhbGwgeC5jb25jYXQoeSkgd2hlbiB5b3UgYXJlIG5vdFxuICAvLyBjZXJ0YWluIHRoYXQg
eCBpcyBhbiBBcnJheSAoeCBjb3VsZCBiZSBhIHN0cmluZyB3aXRoIGNvbmNhdCBtZXRob2QpLlxu
ICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50KSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG5l
eHQpKSB7XG4gICAgICBjdXJyZW50LnB1c2guYXBwbHkoY3VycmVudCwgbmV4dCk7XG4gICAgICBy
ZXR1cm4gY3VycmVudDtcbiAgICB9XG4gICAgY3VycmVudC5wdXNoKG5leHQpO1xuICAgIHJldHVy
biBjdXJyZW50O1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkobmV4dCkpIHtcbiAgICAvLyBB
IGJpdCB0b28gZGFuZ2Vyb3VzIHRvIG11dGF0ZSBgbmV4dGAuXG4gICAgcmV0dXJuIFtjdXJyZW50
XS5jb25jYXQobmV4dCk7XG4gIH1cblxuICByZXR1cm4gW2N1cnJlbnQsIG5leHRdO1xufVxuXG5t
b2R1bGUuZXhwb3J0cyA9IGFjY3VtdWxhdGVJbnRvO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xu
Ly8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvYWNjdW11
bGF0ZUludG8uanNcbi8vIG1vZHVsZSBpZCA9IDU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoq
XG4gKiBAcGFyYW0ge2FycmF5fSBhcnIgYW4gXCJhY2N1bXVsYXRpb25cIiBvZiBpdGVtcyB3aGlj
aCBpcyBlaXRoZXIgYW4gQXJyYXkgb3JcbiAqIGEgc2luZ2xlIGl0ZW0uIFVzZWZ1bCB3aGVuIHBh
aXJlZCB3aXRoIHRoZSBgYWNjdW11bGF0ZWAgbW9kdWxlLiBUaGlzIGlzIGFcbiAqIHNpbXBsZSB1
dGlsaXR5IHRoYXQgYWxsb3dzIHVzIHRvIHJlYXNvbiBhYm91dCBhIGNvbGxlY3Rpb24gb2YgaXRl
bXMsIGJ1dFxuICogaGFuZGxpbmcgdGhlIGNhc2Ugd2hlbiB0aGVyZSBpcyBleGFjdGx5IG9uZSBp
dGVtIChhbmQgd2UgZG8gbm90IG5lZWQgdG9cbiAqIGFsbG9jYXRlIGFuIGFycmF5KS5cbiAqL1xu
XG5mdW5jdGlvbiBmb3JFYWNoQWNjdW11bGF0ZWQoYXJyLCBjYiwgc2NvcGUpIHtcbiAgaWYgKEFy
cmF5LmlzQXJyYXkoYXJyKSkge1xuICAgIGFyci5mb3JFYWNoKGNiLCBzY29wZSk7XG4gIH0gZWxz
ZSBpZiAoYXJyKSB7XG4gICAgY2IuY2FsbChzY29wZSwgYXJyKTtcbiAgfVxufVxuXG5tb2R1bGUu
ZXhwb3J0cyA9IGZvckVhY2hBY2N1bXVsYXRlZDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8v
IFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2ZvckVhY2hB
Y2N1bXVsYXRlZC5qc1xuLy8gbW9kdWxlIGlkID0gNjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwi
LyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV4
ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1l
bnQnKTtcblxudmFyIGNvbnRlbnRLZXkgPSBudWxsO1xuXG4vKipcbiAqIEdldHMgdGhlIGtleSB1
c2VkIHRvIGFjY2VzcyB0ZXh0IGNvbnRlbnQgb24gYSBET00gbm9kZS5cbiAqXG4gKiBAcmV0dXJu
IHs/c3RyaW5nfSBLZXkgdXNlZCB0byBhY2Nlc3MgdGV4dCBjb250ZW50LlxuICogQGludGVybmFs
XG4gKi9cbmZ1bmN0aW9uIGdldFRleHRDb250ZW50QWNjZXNzb3IoKSB7XG4gIGlmICghY29udGVu
dEtleSAmJiBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAgICAvLyBQcmVmZXIg
dGV4dENvbnRlbnQgdG8gaW5uZXJUZXh0IGJlY2F1c2UgbWFueSBicm93c2VycyBzdXBwb3J0IGJv
dGggYnV0XG4gICAgLy8gU1ZHIDx0ZXh0PiBlbGVtZW50cyBkb24ndCBzdXBwb3J0IGlubmVyVGV4
dCBldmVuIHdoZW4gPGRpdj4gZG9lcy5cbiAgICBjb250ZW50S2V5ID0gJ3RleHRDb250ZW50JyBp
biBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgPyAndGV4dENvbnRlbnQnIDogJ2lubmVyVGV4dCc7
XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnRLZXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VGV4
dENvbnRlbnRBY2Nlc3NvcjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9P
VEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2dldFRleHRDb250ZW50QWNjZXNz
b3IuanNcbi8vIG1vZHVsZSBpZCA9IDYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9k
SW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxuZnVuY3Rpb24g
X2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBp
bnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNh
bGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIFBvb2xlZENsYXNzID0gcmVx
dWlyZSgnLi9Qb29sZWRDbGFzcycpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9s
aWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCBwc2V1ZG8tZXZlbnQgbW9k
dWxlIHRvIGhlbHAga2VlcCB0cmFjayBvZiBjb21wb25lbnRzIHdhaXRpbmcgdG9cbiAqIGJlIG5v
dGlmaWVkIHdoZW4gdGhlaXIgRE9NIHJlcHJlc2VudGF0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciB1
c2UuXG4gKlxuICogVGhpcyBpbXBsZW1lbnRzIGBQb29sZWRDbGFzc2AsIHNvIHlvdSBzaG91bGQg
bmV2ZXIgbmVlZCB0byBpbnN0YW50aWF0ZSB0aGlzLlxuICogSW5zdGVhZCwgdXNlIGBDYWxsYmFj
a1F1ZXVlLmdldFBvb2xlZCgpYC5cbiAqXG4gKiBAY2xhc3MgUmVhY3RNb3VudFJlYWR5XG4gKiBA
aW1wbGVtZW50cyBQb29sZWRDbGFzc1xuICogQGludGVybmFsXG4gKi9cblxudmFyIENhbGxiYWNr
UXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIENhbGxiYWNrUXVldWUoYXJnKSB7XG4g
ICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENhbGxiYWNrUXVldWUpO1xuXG4gICAgdGhpcy5fY2Fs
bGJhY2tzID0gbnVsbDtcbiAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG4gICAgdGhpcy5fYXJn
ID0gYXJnO1xuICB9XG5cbiAgLyoqXG4gICAqIEVucXVldWVzIGEgY2FsbGJhY2sgdG8gYmUgaW52
b2tlZCB3aGVuIGBub3RpZnlBbGxgIGlzIGludm9rZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVu
Y3Rpb259IGNhbGxiYWNrIEludm9rZWQgd2hlbiBgbm90aWZ5QWxsYCBpcyBpbnZva2VkLlxuICAg
KiBAcGFyYW0gez9vYmplY3R9IGNvbnRleHQgQ29udGV4dCB0byBjYWxsIGBjYWxsYmFja2Agd2l0
aC5cbiAgICogQGludGVybmFsXG4gICAqL1xuXG5cbiAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUu
ZW5xdWV1ZSA9IGZ1bmN0aW9uIGVucXVldWUoY2FsbGJhY2ssIGNvbnRleHQpIHtcbiAgICB0aGlz
Ll9jYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3MgfHwgW107XG4gICAgdGhpcy5fY2FsbGJhY2tz
LnB1c2goY2FsbGJhY2spO1xuICAgIHRoaXMuX2NvbnRleHRzID0gdGhpcy5fY29udGV4dHMgfHwg
W107XG4gICAgdGhpcy5fY29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgfTtcblxuICAvKipcbiAg
ICogSW52b2tlcyBhbGwgZW5xdWV1ZWQgY2FsbGJhY2tzIGFuZCBjbGVhcnMgdGhlIHF1ZXVlLiBU
aGlzIGlzIGludm9rZWQgYWZ0ZXJcbiAgICogdGhlIERPTSByZXByZXNlbnRhdGlvbiBvZiBhIGNv
bXBvbmVudCBoYXMgYmVlbiBjcmVhdGVkIG9yIHVwZGF0ZWQuXG4gICAqXG4gICAqIEBpbnRlcm5h
bFxuICAgKi9cblxuXG4gIENhbGxiYWNrUXVldWUucHJvdG90eXBlLm5vdGlmeUFsbCA9IGZ1bmN0
aW9uIG5vdGlmeUFsbCgpIHtcbiAgICB2YXIgY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzO1xu
ICAgIHZhciBjb250ZXh0cyA9IHRoaXMuX2NvbnRleHRzO1xuICAgIHZhciBhcmcgPSB0aGlzLl9h
cmc7XG4gICAgaWYgKGNhbGxiYWNrcyAmJiBjb250ZXh0cykge1xuICAgICAgIShjYWxsYmFja3Mu
bGVuZ3RoID09PSBjb250ZXh0cy5sZW5ndGgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ01pc21hdGNoZWQgbGlzdCBvZiBjb250ZXh0
cyBpbiBjYWxsYmFjayBxdWV1ZScpIDogX3Byb2RJbnZhcmlhbnQoJzI0JykgOiB2b2lkIDA7XG4g
ICAgICB0aGlzLl9jYWxsYmFja3MgPSBudWxsO1xuICAgICAgdGhpcy5fY29udGV4dHMgPSBudWxs
O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcbiAg
ICAgICAgY2FsbGJhY2tzW2ldLmNhbGwoY29udGV4dHNbaV0sIGFyZyk7XG4gICAgICB9XG4gICAg
ICBjYWxsYmFja3MubGVuZ3RoID0gMDtcbiAgICAgIGNvbnRleHRzLmxlbmd0aCA9IDA7XG4gICAg
fVxuICB9O1xuXG4gIENhbGxiYWNrUXVldWUucHJvdG90eXBlLmNoZWNrcG9pbnQgPSBmdW5jdGlv
biBjaGVja3BvaW50KCkge1xuICAgIHJldHVybiB0aGlzLl9jYWxsYmFja3MgPyB0aGlzLl9jYWxs
YmFja3MubGVuZ3RoIDogMDtcbiAgfTtcblxuICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5yb2xs
YmFjayA9IGZ1bmN0aW9uIHJvbGxiYWNrKGxlbikge1xuICAgIGlmICh0aGlzLl9jYWxsYmFja3Mg
JiYgdGhpcy5fY29udGV4dHMpIHtcbiAgICAgIHRoaXMuX2NhbGxiYWNrcy5sZW5ndGggPSBsZW47
XG4gICAgICB0aGlzLl9jb250ZXh0cy5sZW5ndGggPSBsZW47XG4gICAgfVxuICB9O1xuXG4gIC8q
KlxuICAgKiBSZXNldHMgdGhlIGludGVybmFsIHF1ZXVlLlxuICAgKlxuICAgKiBAaW50ZXJuYWxc
biAgICovXG5cblxuICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uIHJl
c2V0KCkge1xuICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7XG4gICAgdGhpcy5fY29udGV4dHMg
PSBudWxsO1xuICB9O1xuXG4gIC8qKlxuICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciB0aGlz
LlxuICAgKi9cblxuXG4gIENhbGxiYWNrUXVldWUucHJvdG90eXBlLmRlc3RydWN0b3IgPSBmdW5j
dGlvbiBkZXN0cnVjdG9yKCkge1xuICAgIHRoaXMucmVzZXQoKTtcbiAgfTtcblxuICByZXR1cm4g
Q2FsbGJhY2tRdWV1ZTtcbn0oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQb29sZWRDbGFzcy5hZGRQ
b29saW5nVG8oQ2FsbGJhY2tRdWV1ZSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQ
QUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9DYWxsYmFja1F1ZXVl
LmpzXG4vLyBtb2R1bGUgaWQgPSA2MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEZl
YXR1cmVGbGFncyA9IHtcbiAgLy8gV2hlbiB0cnVlLCBjYWxsIGNvbnNvbGUudGltZSgpIGJlZm9y
ZSBhbmQgLnRpbWVFbmQoKSBhZnRlciBlYWNoIHRvcC1sZXZlbFxuICAvLyByZW5kZXIgKGJvdGgg
aW5pdGlhbCByZW5kZXJzIGFuZCB1cGRhdGVzKS4gVXNlZnVsIHdoZW4gbG9va2luZyBhdCBwcm9k
LW1vZGVcbiAgLy8gdGltZWxpbmUgcHJvZmlsZXMgaW4gQ2hyb21lLCBmb3IgZXhhbXBsZS5cbiAg
bG9nVG9wTGV2ZWxSZW5kZXJzOiBmYWxzZVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEZl
YXR1cmVGbGFncztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4v
LyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RmVhdHVyZUZsYWdzLmpzXG4vLyBt
b2R1bGUgaWQgPSA2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RET01Db21wb25lbnRUcmVl
ID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcblxuZnVuY3Rpb24gaXNDaGVj
a2FibGUoZWxlbSkge1xuICB2YXIgdHlwZSA9IGVsZW0udHlwZTtcbiAgdmFyIG5vZGVOYW1lID0g
ZWxlbS5ub2RlTmFtZTtcbiAgcmV0dXJuIG5vZGVOYW1lICYmIG5vZGVOYW1lLnRvTG93ZXJDYXNl
KCkgPT09ICdpbnB1dCcgJiYgKHR5cGUgPT09ICdjaGVja2JveCcgfHwgdHlwZSA9PT0gJ3JhZGlv
Jyk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYWNrZXIoaW5zdCkge1xuICByZXR1cm4gaW5zdC5fd3Jh
cHBlclN0YXRlLnZhbHVlVHJhY2tlcjtcbn1cblxuZnVuY3Rpb24gYXR0YWNoVHJhY2tlcihpbnN0
LCB0cmFja2VyKSB7XG4gIGluc3QuX3dyYXBwZXJTdGF0ZS52YWx1ZVRyYWNrZXIgPSB0cmFja2Vy
O1xufVxuXG5mdW5jdGlvbiBkZXRhY2hUcmFja2VyKGluc3QpIHtcbiAgZGVsZXRlIGluc3QuX3dy
YXBwZXJTdGF0ZS52YWx1ZVRyYWNrZXI7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRnJvbU5vZGUo
bm9kZSkge1xuICB2YXIgdmFsdWU7XG4gIGlmIChub2RlKSB7XG4gICAgdmFsdWUgPSBpc0NoZWNr
YWJsZShub2RlKSA/ICcnICsgbm9kZS5jaGVja2VkIDogbm9kZS52YWx1ZTtcbiAgfVxuICByZXR1
cm4gdmFsdWU7XG59XG5cbnZhciBpbnB1dFZhbHVlVHJhY2tpbmcgPSB7XG4gIC8vIGV4cG9zZWQg
Zm9yIHRlc3RpbmdcbiAgX2dldFRyYWNrZXJGcm9tTm9kZTogZnVuY3Rpb24gKG5vZGUpIHtcbiAg
ICByZXR1cm4gZ2V0VHJhY2tlcihSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9t
Tm9kZShub2RlKSk7XG4gIH0sXG5cblxuICB0cmFjazogZnVuY3Rpb24gKGluc3QpIHtcbiAgICBp
ZiAoZ2V0VHJhY2tlcihpbnN0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBu
b2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG4g
ICAgdmFyIHZhbHVlRmllbGQgPSBpc0NoZWNrYWJsZShub2RlKSA/ICdjaGVja2VkJyA6ICd2YWx1
ZSc7XG4gICAgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KG5vZGUuY29uc3RydWN0b3IucHJvdG90eXBlLCB2YWx1ZUZpZWxkKTtcblxuICAgIHZhciBjdXJy
ZW50VmFsdWUgPSAnJyArIG5vZGVbdmFsdWVGaWVsZF07XG5cbiAgICAvLyBpZiBzb21lb25lIGhh
cyBhbHJlYWR5IGRlZmluZWQgYSB2YWx1ZSBvciBTYWZhcmksIHRoZW4gYmFpbFxuICAgIC8vIGFu
ZCBkb24ndCB0cmFjayB2YWx1ZSB3aWxsIGNhdXNlIG92ZXIgcmVwb3J0aW5nIG9mIGNoYW5nZXMs
XG4gICAgLy8gYnV0IGl0J3MgYmV0dGVyIHRoZW4gYSBoYXJkIGZhaWx1cmVcbiAgICAvLyAobmVl
ZGVkIGZvciBjZXJ0YWluIHRlc3RzIHRoYXQgc3B5T24gaW5wdXQgdmFsdWVzIGFuZCBTYWZhcmkp
XG4gICAgaWYgKG5vZGUuaGFzT3duUHJvcGVydHkodmFsdWVGaWVsZCkgfHwgdHlwZW9mIGRlc2Ny
aXB0b3IuZ2V0ICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBkZXNjcmlwdG9yLnNldCAhPT0gJ2Z1
bmN0aW9uJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShub2RlLCB2YWx1ZUZpZWxkLCB7XG4gICAgICBlbnVtZXJhYmxlOiBkZXNjcmlwdG9yLmVu
dW1lcmFibGUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9u
ICgpIHtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0LmNhbGwodGhpcyk7XG4gICAgICB9
LFxuICAgICAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgY3VycmVudFZhbHVlID0g
JycgKyB2YWx1ZTtcbiAgICAgICAgZGVzY3JpcHRvci5zZXQuY2FsbCh0aGlzLCB2YWx1ZSk7XG4g
ICAgICB9XG4gICAgfSk7XG5cbiAgICBhdHRhY2hUcmFja2VyKGluc3QsIHtcbiAgICAgIGdldFZh
bHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50VmFsdWU7XG4gICAgICB9
LFxuICAgICAgc2V0VmFsdWU6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBjdXJyZW50VmFs
dWUgPSAnJyArIHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHN0b3BUcmFja2luZzogZnVuY3Rpb24g
KCkge1xuICAgICAgICBkZXRhY2hUcmFja2VyKGluc3QpO1xuICAgICAgICBkZWxldGUgbm9kZVt2
YWx1ZUZpZWxkXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICB1cGRhdGVWYWx1ZUlmQ2hh
bmdlZDogZnVuY3Rpb24gKGluc3QpIHtcbiAgICBpZiAoIWluc3QpIHtcbiAgICAgIHJldHVybiBm
YWxzZTtcbiAgICB9XG4gICAgdmFyIHRyYWNrZXIgPSBnZXRUcmFja2VyKGluc3QpO1xuXG4gICAg
aWYgKCF0cmFja2VyKSB7XG4gICAgICBpbnB1dFZhbHVlVHJhY2tpbmcudHJhY2soaW5zdCk7XG4g
ICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgbGFzdFZhbHVlID0gdHJhY2tlci5n
ZXRWYWx1ZSgpO1xuICAgIHZhciBuZXh0VmFsdWUgPSBnZXRWYWx1ZUZyb21Ob2RlKFJlYWN0RE9N
Q29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpKTtcblxuICAgIGlmIChuZXh0
VmFsdWUgIT09IGxhc3RWYWx1ZSkge1xuICAgICAgdHJhY2tlci5zZXRWYWx1ZShuZXh0VmFsdWUp
O1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxu
ICBzdG9wVHJhY2tpbmc6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgdmFyIHRyYWNrZXIgPSBnZXRU
cmFja2VyKGluc3QpO1xuICAgIGlmICh0cmFja2VyKSB7XG4gICAgICB0cmFja2VyLnN0b3BUcmFj
a2luZygpO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbnB1dFZhbHVlVHJh
Y2tpbmc7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9pbnB1dFZhbHVlVHJhY2tpbmcuanNcbi8vIG1vZHVs
ZSBpZCA9IDY0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBAc2VlIGh0dHA6Ly93d3cu
d2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1pbnB1
dC1lbGVtZW50Lmh0bWwjaW5wdXQtdHlwZS1hdHRyLXN1bW1hcnlcbiAqL1xuXG52YXIgc3VwcG9y
dGVkSW5wdXRUeXBlcyA9IHtcbiAgY29sb3I6IHRydWUsXG4gIGRhdGU6IHRydWUsXG4gIGRhdGV0
aW1lOiB0cnVlLFxuICAnZGF0ZXRpbWUtbG9jYWwnOiB0cnVlLFxuICBlbWFpbDogdHJ1ZSxcbiAg
bW9udGg6IHRydWUsXG4gIG51bWJlcjogdHJ1ZSxcbiAgcGFzc3dvcmQ6IHRydWUsXG4gIHJhbmdl
OiB0cnVlLFxuICBzZWFyY2g6IHRydWUsXG4gIHRlbDogdHJ1ZSxcbiAgdGV4dDogdHJ1ZSxcbiAg
dGltZTogdHJ1ZSxcbiAgdXJsOiB0cnVlLFxuICB3ZWVrOiB0cnVlXG59O1xuXG5mdW5jdGlvbiBp
c1RleHRJbnB1dEVsZW1lbnQoZWxlbSkge1xuICB2YXIgbm9kZU5hbWUgPSBlbGVtICYmIGVsZW0u
bm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChub2RlTmFt
ZSA9PT0gJ2lucHV0Jykge1xuICAgIHJldHVybiAhIXN1cHBvcnRlZElucHV0VHlwZXNbZWxlbS50
eXBlXTtcbiAgfVxuXG4gIGlmIChub2RlTmFtZSA9PT0gJ3RleHRhcmVhJykge1xuICAgIHJldHVy
biB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlz
VGV4dElucHV0RWxlbWVudDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9P
VEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2lzVGV4dElucHV0RWxlbWVudC5q
c1xuLy8gbW9kdWxlIGlkID0gNjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFZpZXdwb3J0TWV0cmlj
cyA9IHtcbiAgY3VycmVudFNjcm9sbExlZnQ6IDAsXG5cbiAgY3VycmVudFNjcm9sbFRvcDogMCxc
blxuICByZWZyZXNoU2Nyb2xsVmFsdWVzOiBmdW5jdGlvbiAoc2Nyb2xsUG9zaXRpb24pIHtcbiAg
ICBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbExlZnQgPSBzY3JvbGxQb3NpdGlvbi54O1xu
ICAgIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsVG9wID0gc2Nyb2xsUG9zaXRpb24ueTtc
biAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3cG9ydE1ldHJpY3M7XG5cblxuLy8vLy8v
Ly8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL2xpYi9WaWV3cG9ydE1ldHJpY3MuanNcbi8vIG1vZHVsZSBpZCA9IDY2XG4vLyBtb2R1bGUg
Y2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmlj
dCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1
dGlvbkVudmlyb25tZW50Jyk7XG52YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gcmVx
dWlyZSgnLi9lc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXInKTtcbnZhciBzZXRJbm5lckhUTUwg
PSByZXF1aXJlKCcuL3NldElubmVySFRNTCcpO1xuXG4vKipcbiAqIFNldCB0aGUgdGV4dENvbnRl
bnQgcHJvcGVydHkgb2YgYSBub2RlLCBlbnN1cmluZyB0aGF0IHdoaXRlc3BhY2UgaXMgcHJlc2Vy
dmVkXG4gKiBldmVuIGluIElFOC4gaW5uZXJUZXh0IGlzIGEgcG9vciBzdWJzdGl0dXRlIGZvciB0
ZXh0Q29udGVudCBhbmQsIGFtb25nIG1hbnlcbiAqIGlzc3VlcywgaW5zZXJ0cyA8YnI+IGluc3Rl
YWQgb2YgdGhlIGxpdGVyYWwgbmV3bGluZSBjaGFycy4gaW5uZXJIVE1MIGJlaGF2ZXNcbiAqIGFz
IGl0IHNob3VsZC5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAqIEBwYXJhbSB7
c3RyaW5nfSB0ZXh0XG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIHNldFRleHRDb250ZW50ID0gZnVu
Y3Rpb24gKG5vZGUsIHRleHQpIHtcbiAgaWYgKHRleHQpIHtcbiAgICB2YXIgZmlyc3RDaGlsZCA9
IG5vZGUuZmlyc3RDaGlsZDtcblxuICAgIGlmIChmaXJzdENoaWxkICYmIGZpcnN0Q2hpbGQgPT09
IG5vZGUubGFzdENoaWxkICYmIGZpcnN0Q2hpbGQubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgIGZp
cnN0Q2hpbGQubm9kZVZhbHVlID0gdGV4dDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAg
bm9kZS50ZXh0Q29udGVudCA9IHRleHQ7XG59O1xuXG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQu
Y2FuVXNlRE9NKSB7XG4gIGlmICghKCd0ZXh0Q29udGVudCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50KSkge1xuICAgIHNldFRleHRDb250ZW50ID0gZnVuY3Rpb24gKG5vZGUsIHRleHQpIHtc
biAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICAgIG5vZGUubm9kZVZhbHVl
ID0gdGV4dDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc2V0SW5uZXJIVE1MKG5v
ZGUsIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0ZXh0KSk7XG4gICAgfTtcbiAgfVxufVxu
XG5tb2R1bGUuZXhwb3J0cyA9IHNldFRleHRDb250ZW50O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8v
L1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvc2V0
VGV4dENvbnRlbnQuanNcbi8vIG1vZHVsZSBpZCA9IDY3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIs
Ii8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4v
KipcbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZSBpbnB1dC90ZXh0YXJlYSB0byBmb2N1c1xu
ICovXG5cbmZ1bmN0aW9uIGZvY3VzTm9kZShub2RlKSB7XG4gIC8vIElFOCBjYW4gdGhyb3cgXCJD
YW4ndCBtb3ZlIGZvY3VzIHRvIHRoZSBjb250cm9sIGJlY2F1c2UgaXQgaXMgaW52aXNpYmxlLFxu
ICAvLyBub3QgZW5hYmxlZCwgb3Igb2YgYSB0eXBlIHRoYXQgZG9lcyBub3QgYWNjZXB0IHRoZSBm
b2N1cy5cIiBmb3IgYWxsIGtpbmRzIG9mXG4gIC8vIHJlYXNvbnMgdGhhdCBhcmUgdG9vIGV4cGVu
c2l2ZSBhbmQgZnJhZ2lsZSB0byB0ZXN0LlxuICB0cnkge1xuICAgIG5vZGUuZm9jdXMoKTtcbiAg
fSBjYXRjaCAoZSkge31cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmb2N1c05vZGU7XG5cblxuLy8v
Ly8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZmJq
cy9saWIvZm9jdXNOb2RlLmpzXG4vLyBtb2R1bGUgaWQgPSA2OFxuLy8gbW9kdWxlIGNodW5rcyA9
IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4v
KipcbiAqIENTUyBwcm9wZXJ0aWVzIHdoaWNoIGFjY2VwdCBudW1iZXJzIGJ1dCBhcmUgbm90IGlu
IHVuaXRzIG9mIFwicHhcIi5cbiAqL1xuXG52YXIgaXNVbml0bGVzc051bWJlciA9IHtcbiAgYW5p
bWF0aW9uSXRlcmF0aW9uQ291bnQ6IHRydWUsXG4gIGJvcmRlckltYWdlT3V0c2V0OiB0cnVlLFxu
ICBib3JkZXJJbWFnZVNsaWNlOiB0cnVlLFxuICBib3JkZXJJbWFnZVdpZHRoOiB0cnVlLFxuICBi
b3hGbGV4OiB0cnVlLFxuICBib3hGbGV4R3JvdXA6IHRydWUsXG4gIGJveE9yZGluYWxHcm91cDog
dHJ1ZSxcbiAgY29sdW1uQ291bnQ6IHRydWUsXG4gIGZsZXg6IHRydWUsXG4gIGZsZXhHcm93OiB0
cnVlLFxuICBmbGV4UG9zaXRpdmU6IHRydWUsXG4gIGZsZXhTaHJpbms6IHRydWUsXG4gIGZsZXhO
ZWdhdGl2ZTogdHJ1ZSxcbiAgZmxleE9yZGVyOiB0cnVlLFxuICBncmlkUm93OiB0cnVlLFxuICBn
cmlkUm93RW5kOiB0cnVlLFxuICBncmlkUm93U3BhbjogdHJ1ZSxcbiAgZ3JpZFJvd1N0YXJ0OiB0
cnVlLFxuICBncmlkQ29sdW1uOiB0cnVlLFxuICBncmlkQ29sdW1uRW5kOiB0cnVlLFxuICBncmlk
Q29sdW1uU3BhbjogdHJ1ZSxcbiAgZ3JpZENvbHVtblN0YXJ0OiB0cnVlLFxuICBmb250V2VpZ2h0
OiB0cnVlLFxuICBsaW5lQ2xhbXA6IHRydWUsXG4gIGxpbmVIZWlnaHQ6IHRydWUsXG4gIG9wYWNp
dHk6IHRydWUsXG4gIG9yZGVyOiB0cnVlLFxuICBvcnBoYW5zOiB0cnVlLFxuICB0YWJTaXplOiB0
cnVlLFxuICB3aWRvd3M6IHRydWUsXG4gIHpJbmRleDogdHJ1ZSxcbiAgem9vbTogdHJ1ZSxcblxu
ICAvLyBTVkctcmVsYXRlZCBwcm9wZXJ0aWVzXG4gIGZpbGxPcGFjaXR5OiB0cnVlLFxuICBmbG9v
ZE9wYWNpdHk6IHRydWUsXG4gIHN0b3BPcGFjaXR5OiB0cnVlLFxuICBzdHJva2VEYXNoYXJyYXk6
IHRydWUsXG4gIHN0cm9rZURhc2hvZmZzZXQ6IHRydWUsXG4gIHN0cm9rZU1pdGVybGltaXQ6IHRy
dWUsXG4gIHN0cm9rZU9wYWNpdHk6IHRydWUsXG4gIHN0cm9rZVdpZHRoOiB0cnVlXG59O1xuXG4v
KipcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXggdmVuZG9yLXNwZWNpZmljIHByZWZpeCwgZWc6
IFdlYmtpdFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBzdHlsZSBuYW1lLCBlZzogdHJhbnNpdGlv
bkR1cmF0aW9uXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHN0eWxlIG5hbWUgcHJlZml4ZWQgd2l0aCBg
cHJlZml4YCwgcHJvcGVybHkgY2FtZWxDYXNlZCwgZWc6XG4gKiBXZWJraXRUcmFuc2l0aW9uRHVy
YXRpb25cbiAqL1xuZnVuY3Rpb24gcHJlZml4S2V5KHByZWZpeCwga2V5KSB7XG4gIHJldHVybiBw
cmVmaXggKyBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc3Vic3RyaW5nKDEpO1xu
fVxuXG4vKipcbiAqIFN1cHBvcnQgc3R5bGUgbmFtZXMgdGhhdCBtYXkgY29tZSBwYXNzZWQgaW4g
cHJlZml4ZWQgYnkgYWRkaW5nIHBlcm11dGF0aW9uc1xuICogb2YgdmVuZG9yIHByZWZpeGVzLlxu
ICovXG52YXIgcHJlZml4ZXMgPSBbJ1dlYmtpdCcsICdtcycsICdNb3onLCAnTyddO1xuXG4vLyBV
c2luZyBPYmplY3Qua2V5cyBoZXJlLCBvciBlbHNlIHRoZSB2YW5pbGxhIGZvci1pbiBsb29wIG1h
a2VzIElFOCBnbyBpbnRvIGFuXG4vLyBpbmZpbml0ZSBsb29wLCBiZWNhdXNlIGl0IGl0ZXJhdGVz
IG92ZXIgdGhlIG5ld2x5IGFkZGVkIHByb3BzIHRvby5cbk9iamVjdC5rZXlzKGlzVW5pdGxlc3NO
dW1iZXIpLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgcHJlZml4ZXMuZm9yRWFjaChmdW5j
dGlvbiAocHJlZml4KSB7XG4gICAgaXNVbml0bGVzc051bWJlcltwcmVmaXhLZXkocHJlZml4LCBw
cm9wKV0gPSBpc1VuaXRsZXNzTnVtYmVyW3Byb3BdO1xuICB9KTtcbn0pO1xuXG4vKipcbiAqIE1v
c3Qgc3R5bGUgcHJvcGVydGllcyBjYW4gYmUgdW5zZXQgYnkgZG9pbmcgLnN0eWxlW3Byb3BdID0g
JycgYnV0IElFOFxuICogZG9lc24ndCBsaWtlIGRvaW5nIHRoYXQgd2l0aCBzaG9ydGhhbmQgcHJv
cGVydGllcyBzbyBmb3IgdGhlIHByb3BlcnRpZXMgdGhhdFxuICogSUU4IGJyZWFrcyBvbiwgd2hp
Y2ggYXJlIGxpc3RlZCBoZXJlLCB3ZSBpbnN0ZWFkIHVuc2V0IGVhY2ggb2YgdGhlXG4gKiBpbmRp
dmlkdWFsIHByb3BlcnRpZXMuIFNlZSBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMjM4
NS5cbiAqIFRoZSA0LXZhbHVlICdjbG9jaycgcHJvcGVydGllcyBsaWtlIG1hcmdpbiwgcGFkZGlu
ZywgYm9yZGVyLXdpZHRoIHNlZW0gdG9cbiAqIGJlaGF2ZSB3aXRob3V0IGFueSBwcm9ibGVtcy4g
Q3VyaW91c2x5LCBsaXN0LXN0eWxlIHdvcmtzIHRvbyB3aXRob3V0IGFueVxuICogc3BlY2lhbCBw
cm9kZGluZy5cbiAqL1xudmFyIHNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9ucyA9IHtcbiAgYmFj
a2dyb3VuZDoge1xuICAgIGJhY2tncm91bmRBdHRhY2htZW50OiB0cnVlLFxuICAgIGJhY2tncm91
bmRDb2xvcjogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kSW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3Vu
ZFBvc2l0aW9uWDogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kUG9zaXRpb25ZOiB0cnVlLFxuICAgIGJh
Y2tncm91bmRSZXBlYXQ6IHRydWVcbiAgfSxcbiAgYmFja2dyb3VuZFBvc2l0aW9uOiB7XG4gICAg
YmFja2dyb3VuZFBvc2l0aW9uWDogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kUG9zaXRpb25ZOiB0cnVl
XG4gIH0sXG4gIGJvcmRlcjoge1xuICAgIGJvcmRlcldpZHRoOiB0cnVlLFxuICAgIGJvcmRlclN0
eWxlOiB0cnVlLFxuICAgIGJvcmRlckNvbG9yOiB0cnVlXG4gIH0sXG4gIGJvcmRlckJvdHRvbTog
e1xuICAgIGJvcmRlckJvdHRvbVdpZHRoOiB0cnVlLFxuICAgIGJvcmRlckJvdHRvbVN0eWxlOiB0
cnVlLFxuICAgIGJvcmRlckJvdHRvbUNvbG9yOiB0cnVlXG4gIH0sXG4gIGJvcmRlckxlZnQ6IHtc
biAgICBib3JkZXJMZWZ0V2lkdGg6IHRydWUsXG4gICAgYm9yZGVyTGVmdFN0eWxlOiB0cnVlLFxu
ICAgIGJvcmRlckxlZnRDb2xvcjogdHJ1ZVxuICB9LFxuICBib3JkZXJSaWdodDoge1xuICAgIGJv
cmRlclJpZ2h0V2lkdGg6IHRydWUsXG4gICAgYm9yZGVyUmlnaHRTdHlsZTogdHJ1ZSxcbiAgICBi
b3JkZXJSaWdodENvbG9yOiB0cnVlXG4gIH0sXG4gIGJvcmRlclRvcDoge1xuICAgIGJvcmRlclRv
cFdpZHRoOiB0cnVlLFxuICAgIGJvcmRlclRvcFN0eWxlOiB0cnVlLFxuICAgIGJvcmRlclRvcENv
bG9yOiB0cnVlXG4gIH0sXG4gIGZvbnQ6IHtcbiAgICBmb250U3R5bGU6IHRydWUsXG4gICAgZm9u
dFZhcmlhbnQ6IHRydWUsXG4gICAgZm9udFdlaWdodDogdHJ1ZSxcbiAgICBmb250U2l6ZTogdHJ1
ZSxcbiAgICBsaW5lSGVpZ2h0OiB0cnVlLFxuICAgIGZvbnRGYW1pbHk6IHRydWVcbiAgfSxcbiAg
b3V0bGluZToge1xuICAgIG91dGxpbmVXaWR0aDogdHJ1ZSxcbiAgICBvdXRsaW5lU3R5bGU6IHRy
dWUsXG4gICAgb3V0bGluZUNvbG9yOiB0cnVlXG4gIH1cbn07XG5cbnZhciBDU1NQcm9wZXJ0eSA9
IHtcbiAgaXNVbml0bGVzc051bWJlcjogaXNVbml0bGVzc051bWJlcixcbiAgc2hvcnRoYW5kUHJv
cGVydHlFeHBhbnNpb25zOiBzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNcbn07XG5cbm1vZHVs
ZS5leHBvcnRzID0gQ1NTUHJvcGVydHk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQ
QUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9DU1NQcm9wZXJ0eS5q
c1xuLy8gbW9kdWxlIGlkID0gNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERPTVByb3BlcnR5ID0g
cmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJl
cXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRp
b24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG5cbnZhciBxdW90ZUF0dHJp
YnV0ZVZhbHVlRm9yQnJvd3NlciA9IHJlcXVpcmUoJy4vcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJy
b3dzZXInKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52
YXIgVkFMSURfQVRUUklCVVRFX05BTUVfUkVHRVggPSBuZXcgUmVnRXhwKCdeWycgKyBET01Qcm9w
ZXJ0eS5BVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSICsgJ11bJyArIERPTVByb3BlcnR5LkFUVFJJ
QlVURV9OQU1FX0NIQVIgKyAnXSokJyk7XG52YXIgaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZSA9
IHt9O1xudmFyIHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9O1xuXG5mdW5jdGlvbiBp
c0F0dHJpYnV0ZU5hbWVTYWZlKGF0dHJpYnV0ZU5hbWUpIHtcbiAgaWYgKHZhbGlkYXRlZEF0dHJp
YnV0ZU5hbWVDYWNoZS5oYXNPd25Qcm9wZXJ0eShhdHRyaWJ1dGVOYW1lKSkge1xuICAgIHJldHVy
biB0cnVlO1xuICB9XG4gIGlmIChpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlLmhhc093blByb3Bl
cnR5KGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChWQUxJ
RF9BVFRSSUJVVEVfTkFNRV9SRUdFWC50ZXN0KGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgdmFsaWRh
dGVkQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gdHJ1ZTtcbiAgICByZXR1cm4g
dHJ1ZTtcbiAgfVxuICBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0g
dHJ1ZTtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
ZmFsc2UsICdJbnZhbGlkIGF0dHJpYnV0ZSBuYW1lOiBgJXNgJywgYXR0cmlidXRlTmFtZSkgOiB2
b2lkIDA7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkSWdub3JlVmFsdWUo
cHJvcGVydHlJbmZvLCB2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCBwcm9wZXJ0
eUluZm8uaGFzQm9vbGVhblZhbHVlICYmICF2YWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzTnVtZXJp
Y1ZhbHVlICYmIGlzTmFOKHZhbHVlKSB8fCBwcm9wZXJ0eUluZm8uaGFzUG9zaXRpdmVOdW1lcmlj
VmFsdWUgJiYgdmFsdWUgPCAxIHx8IHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZh
bHVlICYmIHZhbHVlID09PSBmYWxzZTtcbn1cblxuLyoqXG4gKiBPcGVyYXRpb25zIGZvciBkZWFs
aW5nIHdpdGggRE9NIHByb3BlcnRpZXMuXG4gKi9cbnZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMg
PSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIElEIHByb3BlcnR5LlxuICAg
KlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgVW5lc2NhcGVkIElELlxuICAgKiBAcmV0dXJuIHtz
dHJpbmd9IE1hcmt1cCBzdHJpbmcuXG4gICAqL1xuICBjcmVhdGVNYXJrdXBGb3JJRDogZnVuY3Rp
b24gKGlkKSB7XG4gICAgcmV0dXJuIERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FICsgJz0n
ICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIoaWQpO1xuICB9LFxuXG4gIHNldEF0dHJp
YnV0ZUZvcklEOiBmdW5jdGlvbiAobm9kZSwgaWQpIHtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShE
T01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRSwgaWQpO1xuICB9LFxuXG4gIGNyZWF0ZU1hcmt1
cEZvclJvb3Q6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gRE9NUHJvcGVydHkuUk9PVF9BVFRS
SUJVVEVfTkFNRSArICc9XCJcIic7XG4gIH0sXG5cbiAgc2V0QXR0cmlidXRlRm9yUm9vdDogZnVu
Y3Rpb24gKG5vZGUpIHtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShET01Qcm9wZXJ0eS5ST09UX0FU
VFJJQlVURV9OQU1FLCAnJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZv
ciBhIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFy
YW0geyp9IHZhbHVlXG4gICAqIEByZXR1cm4gez9zdHJpbmd9IE1hcmt1cCBzdHJpbmcsIG9yIG51
bGwgaWYgdGhlIHByb3BlcnR5IHdhcyBpbnZhbGlkLlxuICAgKi9cbiAgY3JlYXRlTWFya3VwRm9y
UHJvcGVydHk6IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBwcm9wZXJ0eUluZm8g
PSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpID8gRE9NUHJvcGVy
dHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7XG4gICAgaWYgKHByb3BlcnR5SW5mbykge1xuICAg
ICAgaWYgKHNob3VsZElnbm9yZVZhbHVlKHByb3BlcnR5SW5mbywgdmFsdWUpKSB7XG4gICAgICAg
IHJldHVybiAnJztcbiAgICAgIH1cbiAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gcHJvcGVydHlJ
bmZvLmF0dHJpYnV0ZU5hbWU7XG4gICAgICBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1
ZSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0g
dHJ1ZSkge1xuICAgICAgICByZXR1cm4gYXR0cmlidXRlTmFtZSArICc9XCJcIic7XG4gICAgICB9
XG4gICAgICByZXR1cm4gYXR0cmlidXRlTmFtZSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVG
b3JCcm93c2VyKHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0
cmlidXRlKG5hbWUpKSB7XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1
cm4gJyc7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmFtZSArICc9JyArIHF1b3RlQXR0cmlidXRl
VmFsdWVGb3JCcm93c2VyKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG5c
biAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZvciBhIGN1c3RvbSBwcm9wZXJ0eS5cbiAgICpc
biAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKiBA
cmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcsIG9yIGVtcHR5IHN0cmluZyBpZiB0aGUgcHJv
cGVydHkgd2FzIGludmFsaWQuXG4gICAqL1xuICBjcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1
dGU6IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgIGlmICghaXNBdHRyaWJ1dGVOYW1lU2Fm
ZShuYW1lKSB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAg
IHJldHVybiBuYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUp
O1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgYSBwcm9wZXJ0eSBvbiBh
IG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICAgKiBAcGFyYW0g
e3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqL1xuICBzZXRWYWx1ZUZv
clByb3BlcnR5OiBmdW5jdGlvbiAobm9kZSwgbmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgcHJvcGVy
dHlJbmZvID0gRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERP
TVByb3BlcnR5LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsO1xuICAgIGlmIChwcm9wZXJ0eUluZm8p
IHtcbiAgICAgIHZhciBtdXRhdGlvbk1ldGhvZCA9IHByb3BlcnR5SW5mby5tdXRhdGlvbk1ldGhv
ZDtcbiAgICAgIGlmIChtdXRhdGlvbk1ldGhvZCkge1xuICAgICAgICBtdXRhdGlvbk1ldGhvZChu
b2RlLCB2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNob3VsZElnbm9yZVZhbHVlKHByb3BlcnR5
SW5mbywgdmFsdWUpKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShub2Rl
LCBuYW1lKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUluZm8u
bXVzdFVzZVByb3BlcnR5KSB7XG4gICAgICAgIC8vIENvbnRyYXJ5IHRvIGBzZXRBdHRyaWJ1dGVg
LCBvYmplY3QgcHJvcGVydGllcyBhcmUgcHJvcGVybHlcbiAgICAgICAgLy8gYHRvU3RyaW5nYGVk
IGJ5IElFOC85LlxuICAgICAgICBub2RlW3Byb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWVdID0gdmFs
dWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5
SW5mby5hdHRyaWJ1dGVOYW1lO1xuICAgICAgICB2YXIgbmFtZXNwYWNlID0gcHJvcGVydHlJbmZv
LmF0dHJpYnV0ZU5hbWVzcGFjZTtcbiAgICAgICAgLy8gYHNldEF0dHJpYnV0ZWAgd2l0aCBvYmpl
Y3RzIGJlY29tZXMgb25seSBgW29iamVjdF1gIGluIElFOC85LFxuICAgICAgICAvLyAoJycgKyB2
YWx1ZSkgbWFrZXMgaXQgb3V0cHV0IHRoZSBjb3JyZWN0IHRvU3RyaW5nKCktdmFsdWUuXG4gICAg
ICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZU5TKG5hbWVz
cGFjZSwgYXR0cmlidXRlTmFtZSwgJycgKyB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJv
cGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJv
b2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUsICcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2Rl
LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCAnJyArIHZhbHVlKTtcbiAgICAgICAgfVxuICAg
ICAgfVxuICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkp
IHtcbiAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShub2Rl
LCBuYW1lLCB2YWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBwYXlsb2FkID0ge307
XG4gICAgICBwYXlsb2FkW25hbWVdID0gdmFsdWU7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlv
bi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsXG4gICAg
ICAgIHR5cGU6ICd1cGRhdGUgYXR0cmlidXRlJyxcbiAgICAgICAgcGF5bG9hZDogcGF5bG9hZFxu
ICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIHNldFZhbHVlRm9yQXR0cmlidXRlOiBmdW5jdGlv
biAobm9kZSwgbmFtZSwgdmFsdWUpIHtcbiAgICBpZiAoIWlzQXR0cmlidXRlTmFtZVNhZmUobmFt
ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAg
ICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2Rl
LnNldEF0dHJpYnV0ZShuYW1lLCAnJyArIHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIHBheWxvYWQgPSB7
fTtcbiAgICAgIHBheWxvYWRbbmFtZV0gPSB2YWx1ZTtcbiAgICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICBpbnN0YW5jZUlEOiBSZWFj
dERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKS5fZGVidWdJRCxcbiAg
ICAgICAgdHlwZTogJ3VwZGF0ZSBhdHRyaWJ1dGUnLFxuICAgICAgICBwYXlsb2FkOiBwYXlsb2Fk
XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gYXR0cmli
dXRlcyBmcm9tIGEgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4g
ICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqL1xuICBkZWxldGVWYWx1ZUZvckF0dHJpYnV0
ZTogZnVuY3Rpb24gKG5vZGUsIG5hbWUpIHtcbiAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1l
KTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAg
ICAgIGluc3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2Rl
KG5vZGUpLl9kZWJ1Z0lELFxuICAgICAgICB0eXBlOiAncmVtb3ZlIGF0dHJpYnV0ZScsXG4gICAg
ICAgIHBheWxvYWQ6IG5hbWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog
RGVsZXRlcyB0aGUgdmFsdWUgZm9yIGEgcHJvcGVydHkgb24gYSBub2RlLlxuICAgKlxuICAgKiBA
cGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICov
XG4gIGRlbGV0ZVZhbHVlRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChub2RlLCBuYW1lKSB7XG4gICAg
dmFyIHByb3BlcnR5SW5mbyA9IERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHko
bmFtZSkgPyBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVsbDtcbiAgICBpZiAocHJv
cGVydHlJbmZvKSB7XG4gICAgICB2YXIgbXV0YXRpb25NZXRob2QgPSBwcm9wZXJ0eUluZm8ubXV0
YXRpb25NZXRob2Q7XG4gICAgICBpZiAobXV0YXRpb25NZXRob2QpIHtcbiAgICAgICAgbXV0YXRp
b25NZXRob2Qobm9kZSwgdW5kZWZpbmVkKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZv
Lm11c3RVc2VQcm9wZXJ0eSkge1xuICAgICAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eUluZm8u
cHJvcGVydHlOYW1lO1xuICAgICAgICBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSkg
e1xuICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4g
ICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSAnJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtc
biAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUocHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWUp
O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUo
bmFtZSkpIHtcbiAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIH1cblxuICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgaW5z
dGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSku
X2RlYnVnSUQsXG4gICAgICAgIHR5cGU6ICdyZW1vdmUgYXR0cmlidXRlJyxcbiAgICAgICAgcGF5
bG9hZDogbmFtZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9
IERPTVByb3BlcnR5T3BlcmF0aW9ucztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBB
Q0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0RPTVByb3BlcnR5T3Bl
cmF0aW9ucy5qc1xuLy8gbW9kdWxlIGlkID0gNzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoq
XG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3Np
Z24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBMaW5rZWRWYWx1ZVV0aWxzID0g
cmVxdWlyZSgnLi9MaW5rZWRWYWx1ZVV0aWxzJyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVl
ID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdFVwZGF0ZXMg
PSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xuXG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2Zi
anMvbGliL3dhcm5pbmcnKTtcblxudmFyIGRpZFdhcm5WYWx1ZUxpbmsgPSBmYWxzZTtcbnZhciBk
aWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUgPSBmYWxzZTtcblxuZnVuY3Rpb24gdXBkYXRlT3B0aW9u
c0lmUGVuZGluZ1VwZGF0ZUFuZE1vdW50ZWQoKSB7XG4gIGlmICh0aGlzLl9yb290Tm9kZUlEICYm
IHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlKSB7XG4gICAgdGhpcy5fd3JhcHBlclN0
YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTtcblxuICAgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJl
bnRFbGVtZW50LnByb3BzO1xuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFs
dWUocHJvcHMpO1xuXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHVwZGF0ZU9wdGlv
bnModGhpcywgQm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHZhbHVlKTtcbiAgICB9XG4gIH1cbn1c
blxuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7XG4gIGlmIChv
d25lcikge1xuICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgIGlmIChuYW1lKSB7
XG4gICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAn
YC4nO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbnZhciB2YWx1ZVByb3BOYW1lcyA9
IFsndmFsdWUnLCAnZGVmYXVsdFZhbHVlJ107XG5cbi8qKlxuICogVmFsaWRhdGlvbiBmdW5jdGlv
biBmb3IgYHZhbHVlYCBhbmQgYGRlZmF1bHRWYWx1ZWAuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5j
dGlvbiBjaGVja1NlbGVjdFByb3BUeXBlcyhpbnN0LCBwcm9wcykge1xuICB2YXIgb3duZXIgPSBp
bnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG4gIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9w
VHlwZXMoJ3NlbGVjdCcsIHByb3BzLCBvd25lcik7XG5cbiAgaWYgKHByb3BzLnZhbHVlTGluayAh
PT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVMaW5rKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgdmFsdWVMaW5rYCBwcm9w
IG9uIGBzZWxlY3RgIGlzIGRlcHJlY2F0ZWQ7IHNldCBgdmFsdWVgIGFuZCBgb25DaGFuZ2VgIGlu
c3RlYWQuJykgOiB2b2lkIDA7XG4gICAgZGlkV2FyblZhbHVlTGluayA9IHRydWU7XG4gIH1cblxu
ICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlUHJvcE5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAg
dmFyIHByb3BOYW1lID0gdmFsdWVQcm9wTmFtZXNbaV07XG4gICAgaWYgKHByb3BzW3Byb3BOYW1l
XSA9PSBudWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdmFyIGlzQXJyYXkgPSBB
cnJheS5pc0FycmF5KHByb3BzW3Byb3BOYW1lXSk7XG4gICAgaWYgKHByb3BzLm11bHRpcGxlICYm
ICFpc0FycmF5KSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhmYWxzZSwgJ1RoZSBgJXNgIHByb3Agc3VwcGxpZWQgdG8gPHNlbGVjdD4gbXVz
dCBiZSBhbiBhcnJheSBpZiAnICsgJ2BtdWx0aXBsZWAgaXMgdHJ1ZS4lcycsIHByb3BOYW1lLCBn
ZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpKSA6IHZvaWQgMDtcbiAgICB9IGVsc2Ug
aWYgKCFwcm9wcy5tdWx0aXBsZSAmJiBpc0FycmF5KSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1RoZSBgJXNgIHByb3Agc3Vw
cGxpZWQgdG8gPHNlbGVjdD4gbXVzdCBiZSBhIHNjYWxhciAnICsgJ3ZhbHVlIGlmIGBtdWx0aXBs
ZWAgaXMgZmFsc2UuJXMnLCBwcm9wTmFtZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93
bmVyKSkgOiB2b2lkIDA7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWFjdERP
TUNvbXBvbmVudH0gaW5zdFxuICogQHBhcmFtIHtib29sZWFufSBtdWx0aXBsZVxuICogQHBhcmFt
IHsqfSBwcm9wVmFsdWUgQSBzdHJpbmdhYmxlICh3aXRoIGBtdWx0aXBsZWAsIGEgbGlzdCBvZiBz
dHJpbmdhYmxlcykuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiB1cGRhdGVPcHRpb25zKGlu
c3QsIG11bHRpcGxlLCBwcm9wVmFsdWUpIHtcbiAgdmFyIHNlbGVjdGVkVmFsdWUsIGk7XG4gIHZh
ciBvcHRpb25zID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5z
dCkub3B0aW9ucztcblxuICBpZiAobXVsdGlwbGUpIHtcbiAgICBzZWxlY3RlZFZhbHVlID0ge307
XG4gICAgZm9yIChpID0gMDsgaSA8IHByb3BWYWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgc2Vs
ZWN0ZWRWYWx1ZVsnJyArIHByb3BWYWx1ZVtpXV0gPSB0cnVlO1xuICAgIH1cbiAgICBmb3IgKGkg
PSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlbGVjdGVkID0gc2Vs
ZWN0ZWRWYWx1ZS5oYXNPd25Qcm9wZXJ0eShvcHRpb25zW2ldLnZhbHVlKTtcbiAgICAgIGlmIChv
cHRpb25zW2ldLnNlbGVjdGVkICE9PSBzZWxlY3RlZCkge1xuICAgICAgICBvcHRpb25zW2ldLnNl
bGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIERv
IG5vdCBzZXQgYHNlbGVjdC52YWx1ZWAgYXMgZXhhY3QgYmVoYXZpb3IgaXNuJ3QgY29uc2lzdGVu
dCBhY3Jvc3MgYWxsXG4gICAgLy8gYnJvd3NlcnMgZm9yIGFsbCBjYXNlcy5cbiAgICBzZWxlY3Rl
ZFZhbHVlID0gJycgKyBwcm9wVmFsdWU7XG4gICAgZm9yIChpID0gMDsgaSA8IG9wdGlvbnMubGVu
Z3RoOyBpKyspIHtcbiAgICAgIGlmIChvcHRpb25zW2ldLnZhbHVlID09PSBzZWxlY3RlZFZhbHVl
KSB7XG4gICAgICAgIG9wdGlvbnNbaV0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm47
XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxlbmd0aCkge1xuICAgICAgb3B0aW9u
c1swXS5zZWxlY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogSW1wbGVtZW50
cyBhIDxzZWxlY3Q+IGhvc3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIG9wdGlvbmFsbHkgc2V0dGlu
ZyB0aGVcbiAqIHByb3BzIGB2YWx1ZWAgYW5kIGBkZWZhdWx0VmFsdWVgLiBJZiBgbXVsdGlwbGVg
IGlzIGZhbHNlLCB0aGUgcHJvcCBtdXN0IGJlIGFcbiAqIHN0cmluZ2FibGUuIElmIGBtdWx0aXBs
ZWAgaXMgdHJ1ZSwgdGhlIHByb3AgbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdhYmxlcy5cbiAq
XG4gKiBJZiBgdmFsdWVgIGlzIG5vdCBzdXBwbGllZCAob3IgbnVsbC91bmRlZmluZWQpLCB1c2Vy
IGFjdGlvbnMgdGhhdCBjaGFuZ2UgdGhlXG4gKiBzZWxlY3RlZCBvcHRpb24gd2lsbCB0cmlnZ2Vy
IHVwZGF0ZXMgdG8gdGhlIHJlbmRlcmVkIG9wdGlvbnMuXG4gKlxuICogSWYgaXQgaXMgc3VwcGxp
ZWQgKGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgb3B0aW9ucyB3aWxsIG5v
dFxuICogdXBkYXRlIGluIHJlc3BvbnNlIHRvIHVzZXIgYWN0aW9ucy4gSW5zdGVhZCwgdGhlIGB2
YWx1ZWAgcHJvcCBtdXN0IGNoYW5nZSBpblxuICogb3JkZXIgZm9yIHRoZSByZW5kZXJlZCBvcHRp
b25zIHRvIHVwZGF0ZS5cbiAqXG4gKiBJZiBgZGVmYXVsdFZhbHVlYCBpcyBwcm92aWRlZCwgYW55
IG9wdGlvbnMgd2l0aCB0aGUgc3VwcGxpZWQgdmFsdWVzIHdpbGwgYmVcbiAqIHNlbGVjdGVkLlxu
ICovXG52YXIgUmVhY3RET01TZWxlY3QgPSB7XG4gIGdldEhvc3RQcm9wczogZnVuY3Rpb24gKGlu
c3QsIHByb3BzKSB7XG4gICAgcmV0dXJuIF9hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICBvbkNo
YW5nZTogaW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlLFxuICAgICAgdmFsdWU6IHVuZGVmaW5l
ZFxuICAgIH0pO1xuICB9LFxuXG4gIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3Bz
KSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgIGNoZWNrU2VsZWN0UHJvcFR5cGVzKGluc3QsIHByb3BzKTtcbiAgICB9XG5cbiAgICB2YXIg
dmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpbnN0Ll93cmFw
cGVyU3RhdGUgPSB7XG4gICAgICBwZW5kaW5nVXBkYXRlOiBmYWxzZSxcbiAgICAgIGluaXRpYWxW
YWx1ZTogdmFsdWUgIT0gbnVsbCA/IHZhbHVlIDogcHJvcHMuZGVmYXVsdFZhbHVlLFxuICAgICAg
bGlzdGVuZXJzOiBudWxsLFxuICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0
KSxcbiAgICAgIHdhc011bHRpcGxlOiBCb29sZWFuKHByb3BzLm11bHRpcGxlKVxuICAgIH07XG5c
biAgICBpZiAocHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUg
IT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlKSB7XG4gICAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1NlbGVj
dCBlbGVtZW50cyBtdXN0IGJlIGVpdGhlciBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCAnICsg
JyhzcGVjaWZ5IGVpdGhlciB0aGUgdmFsdWUgcHJvcCwgb3IgdGhlIGRlZmF1bHRWYWx1ZSBwcm9w
LCBidXQgbm90ICcgKyAnYm90aCkuIERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBv
ciB1bmNvbnRyb2xsZWQgc2VsZWN0ICcgKyAnZWxlbWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVz
ZSBwcm9wcy4gTW9yZSBpbmZvOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1j
b21wb25lbnRzJykgOiB2b2lkIDA7XG4gICAgICBkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUgPSB0
cnVlO1xuICAgIH1cbiAgfSxcblxuICBnZXRTZWxlY3RWYWx1ZUNvbnRleHQ6IGZ1bmN0aW9uIChp
bnN0KSB7XG4gICAgLy8gUmVhY3RET01PcHRpb24gbG9va3MgYXQgdGhpcyBpbml0aWFsIHZhbHVl
IHNvIHRoZSBpbml0aWFsIGdlbmVyYXRlZFxuICAgIC8vIG1hcmt1cCBoYXMgY29ycmVjdCBgc2Vs
ZWN0ZWRgIGF0dHJpYnV0ZXNcbiAgICByZXR1cm4gaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxW
YWx1ZTtcbiAgfSxcblxuICBwb3N0VXBkYXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcbiAg
ICB2YXIgcHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICAgIC8vIEFmdGVy
IHRoZSBpbml0aWFsIG1vdW50LCB3ZSBjb250cm9sIHNlbGVjdGVkLW5lc3MgbWFudWFsbHkgc28g
ZG9uJ3QgcGFzc1xuICAgIC8vIHRoaXMgdmFsdWUgZG93blxuICAgIGluc3QuX3dyYXBwZXJTdGF0
ZS5pbml0aWFsVmFsdWUgPSB1bmRlZmluZWQ7XG5cbiAgICB2YXIgd2FzTXVsdGlwbGUgPSBpbnN0
Ll93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7XG4gICAgaW5zdC5fd3JhcHBlclN0YXRlLndhc011
bHRpcGxlID0gQm9vbGVhbihwcm9wcy5tdWx0aXBsZSk7XG5cbiAgICB2YXIgdmFsdWUgPSBMaW5r
ZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xu
ICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTtcbiAgICAgIHVw
ZGF0ZU9wdGlvbnMoaW5zdCwgQm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHZhbHVlKTtcbiAgICB9
IGVsc2UgaWYgKHdhc011bHRpcGxlICE9PSBCb29sZWFuKHByb3BzLm11bHRpcGxlKSkge1xuICAg
ICAgLy8gRm9yIHNpbXBsaWNpdHksIHJlYXBwbHkgYGRlZmF1bHRWYWx1ZWAgaWYgYG11bHRpcGxl
YCBpcyB0b2dnbGVkLlxuICAgICAgaWYgKHByb3BzLmRlZmF1bHRWYWx1ZSAhPSBudWxsKSB7XG4g
ICAgICAgIHVwZGF0ZU9wdGlvbnMoaW5zdCwgQm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHByb3Bz
LmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBSZXZlcnQgdGhlIHNl
bGVjdCBiYWNrIHRvIGl0cyBkZWZhdWx0IHVuc2VsZWN0ZWQgc3RhdGUuXG4gICAgICAgIHVwZGF0
ZU9wdGlvbnMoaW5zdCwgQm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHByb3BzLm11bHRpcGxlID8g
W10gOiAnJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBfaGFuZGxlQ2hh
bmdlKGV2ZW50KSB7XG4gIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xu
ICB2YXIgcmV0dXJuVmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmV4ZWN1dGVPbkNoYW5nZShwcm9w
cywgZXZlbnQpO1xuXG4gIGlmICh0aGlzLl9yb290Tm9kZUlEKSB7XG4gICAgdGhpcy5fd3JhcHBl
clN0YXRlLnBlbmRpbmdVcGRhdGUgPSB0cnVlO1xuICB9XG4gIFJlYWN0VXBkYXRlcy5hc2FwKHVw
ZGF0ZU9wdGlvbnNJZlBlbmRpbmdVcGRhdGVBbmRNb3VudGVkLCB0aGlzKTtcbiAgcmV0dXJuIHJl
dHVyblZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NU2VsZWN0O1xuXG5cbi8v
Ly8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Jl
YWN0LWRvbS9saWIvUmVhY3RET01TZWxlY3QuanNcbi8vIG1vZHVsZSBpZCA9IDcxXG4vLyBtb2R1
bGUgY2h1bmtzID0gMCIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFy
IHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZl
ciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8v
IGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0
Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRv
ZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVj
YXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNh
Y2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZh
dWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90
IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4g
ICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtc
bn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1l
b3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0
VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQg
PSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAg
ICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtc
biAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAg
ICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNl
IHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7
XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91
dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVv
dXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAg
ICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJl
dHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fz
bid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRU
aW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRU
aW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAg
ICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAv
LyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJ
LkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4g
ICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJl
IGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0
cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAg
cmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNh
dGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVy
c2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycs
IGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBn
bG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhp
cywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRp
bWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1l
b3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xu
ICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNs
ZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBp
ZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVk
Q2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1l
b3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7
XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2Ny
ZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJu
IGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0
cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBo
YXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3
aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91
dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAg
Ly8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVz
dCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0
IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAg
ICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNs
ZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJU
aW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZh
ciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xu
dmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAg
IGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAg
fVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtc
biAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Ug
e1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgp
IHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1
ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2
YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9
IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xu
ICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAg
ICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRR
dWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtc
biAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAg
ICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtc
biAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1c
blxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5l
dyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgg
PiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsr
KSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxu
ICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1
ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5R
dWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVu
Y3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5h
cnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAg
IHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAn
YnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnBy
b2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0
byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9u
IG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBu
b29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3Mu
cmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29w
O1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtc
bnByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lciA9IG5vb3A7XG5cbnByb2Nlc3MubGlzdGVuZXJz
ID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cblxucHJvY2Vzcy5iaW5kaW5nID0gZnVu
Y3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBu
b3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJu
ICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcg
RXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1h
c2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9c
bi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanNc
bi8vIG1vZHVsZSBpZCA9IDcyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9
IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50JyksXG4gICAgX2Fzc2lnbiA9IHJlcXVpcmUo
J29iamVjdC1hc3NpZ24nKTtcblxudmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50ID0gcmVxdWly
ZSgnLi9SZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpO1xudmFyIFJlYWN0RW1wdHlDb21wb25lbnQg
PSByZXF1aXJlKCcuL1JlYWN0RW1wdHlDb21wb25lbnQnKTtcbnZhciBSZWFjdEhvc3RDb21wb25l
bnQgPSByZXF1aXJlKCcuL1JlYWN0SG9zdENvbXBvbmVudCcpO1xuXG52YXIgZ2V0TmV4dERlYnVn
SUQgPSByZXF1aXJlKCdyZWFjdC9saWIvZ2V0TmV4dERlYnVnSUQnKTtcbnZhciBpbnZhcmlhbnQg
PSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgn
ZmJqcy9saWIvd2FybmluZycpO1xuXG4vLyBUbyBhdm9pZCBhIGN5Y2xpYyBkZXBlbmRlbmN5LCB3
ZSBjcmVhdGUgdGhlIGZpbmFsIGNsYXNzIGluIHRoaXMgbW9kdWxlXG52YXIgUmVhY3RDb21wb3Np
dGVDb21wb25lbnRXcmFwcGVyID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgdGhpcy5jb25zdHJ1
Y3QoZWxlbWVudCk7XG59O1xuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0o
b3duZXIpIHtcbiAgaWYgKG93bmVyKSB7XG4gICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7
XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9k
IG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuLyoq
XG4gKiBDaGVjayBpZiB0aGUgdHlwZSByZWZlcmVuY2UgaXMgYSBrbm93biBpbnRlcm5hbCB0eXBl
LiBJLmUuIG5vdCBhIHVzZXJcbiAqIHByb3ZpZGVkIGNvbXBvc2l0ZSB0eXBlLlxuICpcbiAqIEBw
YXJhbSB7ZnVuY3Rpb259IHR5cGVcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBp
ZiB0aGlzIGlzIGEgdmFsaWQgaW50ZXJuYWwgdHlwZS5cbiAqL1xuZnVuY3Rpb24gaXNJbnRlcm5h
bENvbXBvbmVudFR5cGUodHlwZSkge1xuICByZXR1cm4gdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlv
bicgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgdHlw
ZS5wcm90b3R5cGUubW91bnRDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUu
cHJvdG90eXBlLnJlY2VpdmVDb21wb25lbnQgPT09ICdmdW5jdGlvbic7XG59XG5cbi8qKlxuICog
R2l2ZW4gYSBSZWFjdE5vZGUsIGNyZWF0ZSBhbiBpbnN0YW5jZSB0aGF0IHdpbGwgYWN0dWFsbHkg
YmUgbW91bnRlZC5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0Tm9kZX0gbm9kZVxuICogQHBhcmFtIHti
b29sZWFufSBzaG91bGRIYXZlRGVidWdJRFxuICogQHJldHVybiB7b2JqZWN0fSBBIG5ldyBpbnN0
YW5jZSBvZiB0aGUgZWxlbWVudCdzIGNvbnN0cnVjdG9yLlxuICogQHByb3RlY3RlZFxuICovXG5m
dW5jdGlvbiBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG5vZGUsIHNob3VsZEhhdmVEZWJ1Z0lE
KSB7XG4gIHZhciBpbnN0YW5jZTtcblxuICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSBm
YWxzZSkge1xuICAgIGluc3RhbmNlID0gUmVhY3RFbXB0eUNvbXBvbmVudC5jcmVhdGUoaW5zdGFu
dGlhdGVSZWFjdENvbXBvbmVudCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdvYmpl
Y3QnKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBub2RlO1xuICAgIHZhciB0eXBlID0gZWxlbWVudC50
eXBlO1xuICAgIGlmICh0eXBlb2YgdHlwZSAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdHlwZSAh
PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBpbmZvID0gJyc7XG4gICAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAodHlwZSA9PT0gdW5k
ZWZpbmVkIHx8IHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsICYmIE9i
amVjdC5rZXlzKHR5cGUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGluZm8gKz0gJyBZb3Ug
bGlrZWx5IGZvcmdvdCB0byBleHBvcnQgeW91ciBjb21wb25lbnQgZnJvbSB0aGUgZmlsZSAnICsg
XCJpdCdzIGRlZmluZWQgaW4uXCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGluZm8gKz0g
Z2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGVsZW1lbnQuX293bmVyKTtcbiAgICAgICFmYWxz
ZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdFbGVtZW50IHR5cGUgaXMgaW52YWxpZDogZXhwZWN0ZWQgYSBzdHJpbmcgKGZvciBidWls
dC1pbiBjb21wb25lbnRzKSBvciBhIGNsYXNzL2Z1bmN0aW9uIChmb3IgY29tcG9zaXRlIGNvbXBv
bmVudHMpIGJ1dCBnb3Q6ICVzLiVzJywgdHlwZSA9PSBudWxsID8gdHlwZSA6IHR5cGVvZiB0eXBl
LCBpbmZvKSA6IF9wcm9kSW52YXJpYW50KCcxMzAnLCB0eXBlID09IG51bGwgPyB0eXBlIDogdHlw
ZW9mIHR5cGUsIGluZm8pIDogdm9pZCAwO1xuICAgIH1cblxuICAgIC8vIFNwZWNpYWwgY2FzZSBz
dHJpbmcgdmFsdWVzXG4gICAgaWYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSB7
XG4gICAgICBpbnN0YW5jZSA9IFJlYWN0SG9zdENvbXBvbmVudC5jcmVhdGVJbnRlcm5hbENvbXBv
bmVudChlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKGlzSW50ZXJuYWxDb21wb25lbnRUeXBlKGVs
ZW1lbnQudHlwZSkpIHtcbiAgICAgIC8vIFRoaXMgaXMgdGVtcG9yYXJpbHkgYXZhaWxhYmxlIGZv
ciBjdXN0b20gY29tcG9uZW50cyB0aGF0IGFyZSBub3Qgc3RyaW5nXG4gICAgICAvLyByZXByZXNl
bnRhdGlvbnMuIEkuZS4gQVJULiBPbmNlIHRob3NlIGFyZSB1cGRhdGVkIHRvIHVzZSB0aGUgc3Ry
aW5nXG4gICAgICAvLyByZXByZXNlbnRhdGlvbiwgd2UgY2FuIGRyb3AgdGhpcyBjb2RlIHBhdGgu
XG4gICAgICBpbnN0YW5jZSA9IG5ldyBlbGVtZW50LnR5cGUoZWxlbWVudCk7XG5cbiAgICAgIC8v
IFdlIHJlbmFtZWQgdGhpcy4gQWxsb3cgdGhlIG9sZCBuYW1lIGZvciBjb21wYXQuIDooXG4gICAg
ICBpZiAoIWluc3RhbmNlLmdldEhvc3ROb2RlKSB7XG4gICAgICAgIGluc3RhbmNlLmdldEhvc3RO
b2RlID0gaW5zdGFuY2UuZ2V0TmF0aXZlTm9kZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAg
ICAgaW5zdGFuY2UgPSBuZXcgUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyKGVsZW1lbnQp
O1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9m
IG5vZGUgPT09ICdudW1iZXInKSB7XG4gICAgaW5zdGFuY2UgPSBSZWFjdEhvc3RDb21wb25lbnQu
Y3JlYXRlSW5zdGFuY2VGb3JUZXh0KG5vZGUpO1xuICB9IGVsc2Uge1xuICAgICFmYWxzZSA/IHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdF
bmNvdW50ZXJlZCBpbnZhbGlkIFJlYWN0IG5vZGUgb2YgdHlwZSAlcycsIHR5cGVvZiBub2RlKSA6
IF9wcm9kSW52YXJpYW50KCcxMzEnLCB0eXBlb2Ygbm9kZSkgOiB2b2lkIDA7XG4gIH1cblxuICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0YW5jZS5t
b3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UucmVjZWl2ZUNv
bXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UuZ2V0SG9zdE5vZGUgPT09
ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLnVubW91bnRDb21wb25lbnQgPT09ICdmdW5j
dGlvbicsICdPbmx5IFJlYWN0IENvbXBvbmVudHMgY2FuIGJlIG1vdW50ZWQuJykgOiB2b2lkIDA7
XG4gIH1cblxuICAvLyBUaGVzZSB0d28gZmllbGRzIGFyZSB1c2VkIGJ5IHRoZSBET00gYW5kIEFS
VCBkaWZmaW5nIGFsZ29yaXRobXNcbiAgLy8gcmVzcGVjdGl2ZWx5LiBJbnN0ZWFkIG9mIHVzaW5n
IGV4cGFuZG9zIG9uIGNvbXBvbmVudHMsIHdlIHNob3VsZCBiZVxuICAvLyBzdG9yaW5nIHRoZSBz
dGF0ZSBuZWVkZWQgYnkgdGhlIGRpZmZpbmcgYWxnb3JpdGhtcyBlbHNld2hlcmUuXG4gIGluc3Rh
bmNlLl9tb3VudEluZGV4ID0gMDtcbiAgaW5zdGFuY2UuX21vdW50SW1hZ2UgPSBudWxsO1xuXG4g
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaW5zdGFu
Y2UuX2RlYnVnSUQgPSBzaG91bGRIYXZlRGVidWdJRCA/IGdldE5leHREZWJ1Z0lEKCkgOiAwO1xu
ICB9XG5cbiAgLy8gSW50ZXJuYWwgaW5zdGFuY2VzIHNob3VsZCBmdWxseSBjb25zdHJ1Y3RlZCBh
dCB0aGlzIHBvaW50LCBzbyB0aGV5IHNob3VsZFxuICAvLyBub3QgZ2V0IGFueSBuZXcgZmllbGRz
IGFkZGVkIHRvIHRoZW0gYXQgdGhpcyBwb2ludC5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKSB7
XG4gICAgICBPYmplY3QucHJldmVudEV4dGVuc2lvbnMoaW5zdGFuY2UpO1xuICAgIH1cbiAgfVxu
XG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxuX2Fzc2lnbihSZWFjdENvbXBvc2l0ZUNvbXBvbmVu
dFdyYXBwZXIucHJvdG90eXBlLCBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCwge1xuICBfaW5zdGFu
dGlhdGVSZWFjdENvbXBvbmVudDogaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudFxufSk7XG5cbm1v
ZHVsZS5leHBvcnRzID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDtcblxuXG4vLy8vLy8vLy8v
Ly8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQuanNcbi8vIG1vZHVsZSBpZCA9IDczXG4vLyBt
b2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5c
bid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFBy
b2RJbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Jyk7
XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFy
IFJlYWN0Tm9kZVR5cGVzID0ge1xuICBIT1NUOiAwLFxuICBDT01QT1NJVEU6IDEsXG4gIEVNUFRZ
OiAyLFxuXG4gIGdldFR5cGU6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKG5vZGUgPT09IG51
bGwgfHwgbm9kZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBSZWFjdE5vZGVUeXBlcy5FTVBU
WTtcbiAgICB9IGVsc2UgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KG5vZGUpKSB7XG4gICAgICBp
ZiAodHlwZW9mIG5vZGUudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gUmVh
Y3ROb2RlVHlwZXMuQ09NUE9TSVRFO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFJl
YWN0Tm9kZVR5cGVzLkhPU1Q7XG4gICAgICB9XG4gICAgfVxuICAgICFmYWxzZSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdVbmV4cGVj
dGVkIG5vZGU6ICVzJywgbm9kZSkgOiBfcHJvZEludmFyaWFudCgnMjYnLCBub2RlKSA6IHZvaWQg
MDtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5vZGVUeXBlcztcblxuXG4vLy8v
Ly8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0Tm9kZVR5cGVzLmpzXG4vLyBtb2R1bGUgaWQgPSA3NFxuLy8gbW9kdWxl
IGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgZW1wdHlDb21wb25lbnRGYWN0b3J5O1xuXG52YXIgUmVhY3RFbXB0eUNvbXBv
bmVudEluamVjdGlvbiA9IHtcbiAgaW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5OiBmdW5jdGlv
biAoZmFjdG9yeSkge1xuICAgIGVtcHR5Q29tcG9uZW50RmFjdG9yeSA9IGZhY3Rvcnk7XG4gIH1c
bn07XG5cbnZhciBSZWFjdEVtcHR5Q29tcG9uZW50ID0ge1xuICBjcmVhdGU6IGZ1bmN0aW9uIChp
bnN0YW50aWF0ZSkge1xuICAgIHJldHVybiBlbXB0eUNvbXBvbmVudEZhY3RvcnkoaW5zdGFudGlh
dGUpO1xuICB9XG59O1xuXG5SZWFjdEVtcHR5Q29tcG9uZW50LmluamVjdGlvbiA9IFJlYWN0RW1w
dHlDb21wb25lbnRJbmplY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFbXB0eUNvbXBv
bmVudDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RW1wdHlDb21wb25lbnQuanNcbi8vIG1vZHVs
ZSBpZCA9IDc1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUo
Jy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpz
L2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9IG51bGw7XG52
YXIgdGV4dENvbXBvbmVudENsYXNzID0gbnVsbDtcblxudmFyIFJlYWN0SG9zdENvbXBvbmVudElu
amVjdGlvbiA9IHtcbiAgLy8gVGhpcyBhY2NlcHRzIGEgY2xhc3MgdGhhdCByZWNlaXZlcyB0aGUg
dGFnIHN0cmluZy4gVGhpcyBpcyBhIGNhdGNoIGFsbFxuICAvLyB0aGF0IGNhbiByZW5kZXIgYW55
IGtpbmQgb2YgdGFnLlxuICBpbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6IGZ1bmN0aW9uIChj
b21wb25lbnRDbGFzcykge1xuICAgIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENs
YXNzO1xuICB9LFxuICAvLyBUaGlzIGFjY2VwdHMgYSB0ZXh0IGNvbXBvbmVudCBjbGFzcyB0aGF0
IHRha2VzIHRoZSB0ZXh0IHN0cmluZyB0byBiZVxuICAvLyByZW5kZXJlZCBhcyBwcm9wcy5cbiAg
aW5qZWN0VGV4dENvbXBvbmVudENsYXNzOiBmdW5jdGlvbiAoY29tcG9uZW50Q2xhc3MpIHtcbiAg
ICB0ZXh0Q29tcG9uZW50Q2xhc3MgPSBjb21wb25lbnRDbGFzcztcbiAgfVxufTtcblxuLyoqXG4g
KiBHZXQgYSBob3N0IGludGVybmFsIGNvbXBvbmVudCBjbGFzcyBmb3IgYSBzcGVjaWZpYyB0YWcu
XG4gKlxuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gY3Jl
YXRlLlxuICogQHJldHVybiB7ZnVuY3Rpb259IFRoZSBpbnRlcm5hbCBjbGFzcyBjb25zdHJ1Y3Rv
ciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW50ZXJuYWxDb21wb25lbnQoZWxlbWVu
dCkge1xuICAhZ2VuZXJpY0NvbXBvbmVudENsYXNzID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1RoZXJlIGlzIG5vIHJlZ2lzdGVyZWQg
Y29tcG9uZW50IGZvciB0aGUgdGFnICVzJywgZWxlbWVudC50eXBlKSA6IF9wcm9kSW52YXJpYW50
KCcxMTEnLCBlbGVtZW50LnR5cGUpIDogdm9pZCAwO1xuICByZXR1cm4gbmV3IGdlbmVyaWNDb21w
b25lbnRDbGFzcyhlbGVtZW50KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlYWN0VGV4dH0gdGV4
dFxuICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluc3Rh
bmNlRm9yVGV4dCh0ZXh0KSB7XG4gIHJldHVybiBuZXcgdGV4dENvbXBvbmVudENsYXNzKHRleHQp
O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudFxuICogQHJl
dHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNUZXh0Q29tcG9uZW50KGNvbXBvbmVudCkg
e1xuICByZXR1cm4gY29tcG9uZW50IGluc3RhbmNlb2YgdGV4dENvbXBvbmVudENsYXNzO1xufVxu
XG52YXIgUmVhY3RIb3N0Q29tcG9uZW50ID0ge1xuICBjcmVhdGVJbnRlcm5hbENvbXBvbmVudDog
Y3JlYXRlSW50ZXJuYWxDb21wb25lbnQsXG4gIGNyZWF0ZUluc3RhbmNlRm9yVGV4dDogY3JlYXRl
SW5zdGFuY2VGb3JUZXh0LFxuICBpc1RleHRDb21wb25lbnQ6IGlzVGV4dENvbXBvbmVudCxcbiAg
aW5qZWN0aW9uOiBSZWFjdEhvc3RDb21wb25lbnRJbmplY3Rpb25cbn07XG5cbm1vZHVsZS5leHBv
cnRzID0gUmVhY3RIb3N0Q29tcG9uZW50O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VC
UEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RIb3N0Q29t
cG9uZW50LmpzXG4vLyBtb2R1bGUgaWQgPSA3NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipc
biAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJ
bnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3RD
dXJyZW50T3duZXIgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDdXJyZW50T3duZXInKTtcbnZh
ciBSRUFDVF9FTEVNRU5UX1RZUEUgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudFN5bWJvbCcpO1xu
XG52YXIgZ2V0SXRlcmF0b3JGbiA9IHJlcXVpcmUoJy4vZ2V0SXRlcmF0b3JGbicpO1xudmFyIGlu
dmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIEtleUVzY2FwZVV0
aWxzID0gcmVxdWlyZSgnLi9LZXlFc2NhcGVVdGlscycpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJl
KCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBTRVBBUkFUT1IgPSAnLic7XG52YXIgU1VCU0VQ
QVJBVE9SID0gJzonO1xuXG4vKipcbiAqIFRoaXMgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxlbWVu
dCBzaW5jZSB0aGlzIGZpbGUgaXMgc2hhcmVkIGJldHdlZW5cbiAqIGlzb21vcnBoaWMgYW5kIHJl
bmRlcmVycy4gV2UgY291bGQgZXh0cmFjdCB0aGlzIHRvIGFcbiAqXG4gKi9cblxuLyoqXG4gKiBU
T0RPOiBUZXN0IHRoYXQgYSBzaW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5IHdpdGggb25lIGl0ZW0g
aGF2ZSB0aGUgc2FtZSBrZXlcbiAqIHBhdHRlcm4uXG4gKi9cblxudmFyIGRpZFdhcm5BYm91dE1h
cHMgPSBmYWxzZTtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBpZGVudGlm
aWVzIGEgY29tcG9uZW50IHdpdGhpbiBhIHNldC5cbiAqXG4gKiBAcGFyYW0geyp9IGNvbXBvbmVu
dCBBIGNvbXBvbmVudCB0aGF0IGNvdWxkIGNvbnRhaW4gYSBtYW51YWwga2V5LlxuICogQHBhcmFt
IHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQgaXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkgaXMgbm90
IHByb3ZpZGVkLlxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRDb21wb25l
bnRLZXkoY29tcG9uZW50LCBpbmRleCkge1xuICAvLyBEbyBzb21lIHR5cGVjaGVja2luZyBoZXJl
IHNpbmNlIHdlIGNhbGwgdGhpcyBibGluZGx5LiBXZSB3YW50IHRvIGVuc3VyZVxuICAvLyB0aGF0
IHdlIGRvbid0IGJsb2NrIHBvdGVudGlhbCBmdXR1cmUgRVMgQVBJcy5cbiAgaWYgKGNvbXBvbmVu
dCAmJiB0eXBlb2YgY29tcG9uZW50ID09PSAnb2JqZWN0JyAmJiBjb21wb25lbnQua2V5ICE9IG51
bGwpIHtcbiAgICAvLyBFeHBsaWNpdCBrZXlcbiAgICByZXR1cm4gS2V5RXNjYXBlVXRpbHMuZXNj
YXBlKGNvbXBvbmVudC5rZXkpO1xuICB9XG4gIC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVkIGJ5
IHRoZSBpbmRleCBpbiB0aGUgc2V0XG4gIHJldHVybiBpbmRleC50b1N0cmluZygzNik7XG59XG5c
bi8qKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4g
KiBAcGFyYW0geyFzdHJpbmd9IG5hbWVTb0ZhciBOYW1lIG9mIHRoZSBrZXkgcGF0aCBzbyBmYXIu
XG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8gaW52b2tlIHdpdGgg
ZWFjaCBjaGlsZCBmb3VuZC5cbiAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBVc2VkIHRv
IHBhc3MgaW5mb3JtYXRpb24gdGhyb3VnaG91dCB0aGUgdHJhdmVyc2FsXG4gKiBwcm9jZXNzLlxu
ICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRy
ZWUuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCBuYW1l
U29GYXIsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2Yg
Y2hpbGRyZW47XG5cbiAgaWYgKHR5cGUgPT09ICd1bmRlZmluZWQnIHx8IHR5cGUgPT09ICdib29s
ZWFuJykge1xuICAgIC8vIEFsbCBvZiB0aGUgYWJvdmUgYXJlIHBlcmNlaXZlZCBhcyBudWxsLlxu
ICAgIGNoaWxkcmVuID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjaGlsZHJlbiA9PT0gbnVsbCB8fCB0
eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09PSAnbnVtYmVyJyB8fFxuICAvLyBUaGUgZm9sbG93
aW5nIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQuIFRoaXMgbWVhbnMgd2UgY2FuIG9wdGlt
aXplXG4gIC8vIHNvbWUgY2hlY2tzLiBSZWFjdCBGaWJlciBhbHNvIGlubGluZXMgdGhpcyBsb2dp
YyBmb3Igc2ltaWxhciBwdXJwb3Nlcy5cbiAgdHlwZSA9PT0gJ29iamVjdCcgJiYgY2hpbGRyZW4u
JCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRSkge1xuICAgIGNhbGxiYWNrKHRyYXZlcnNl
Q29udGV4dCwgY2hpbGRyZW4sXG4gICAgLy8gSWYgaXQncyB0aGUgb25seSBjaGlsZCwgdHJlYXQg
dGhlIG5hbWUgYXMgaWYgaXQgd2FzIHdyYXBwZWQgaW4gYW4gYXJyYXlcbiAgICAvLyBzbyB0aGF0
IGl0J3MgY29uc2lzdGVudCBpZiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGdyb3dzLlxuICAgIG5h
bWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGRyZW4sIDAp
IDogbmFtZVNvRmFyKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHZhciBjaGlsZDtcbiAgdmFy
IG5leHROYW1lO1xuICB2YXIgc3VidHJlZUNvdW50ID0gMDsgLy8gQ291bnQgb2YgY2hpbGRyZW4g
Zm91bmQgaW4gdGhlIGN1cnJlbnQgc3VidHJlZS5cbiAgdmFyIG5leHROYW1lUHJlZml4ID0gbmFt
ZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiA6IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRPUjtcblxu
ICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAg
ICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaSk7
XG4gICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5l
eHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4g
ICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKGNoaWxkcmVuKTtcbiAgICBpZiAoaXRl
cmF0b3JGbikge1xuICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKGNoaWxkcmVu
KTtcbiAgICAgIHZhciBzdGVwO1xuICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IGNoaWxkcmVuLmVu
dHJpZXMpIHtcbiAgICAgICAgdmFyIGlpID0gMDtcbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0
ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIGNoaWxkID0gc3RlcC52YWx1ZTtcbiAg
ICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxk
LCBpaSsrKTtcbiAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbklt
cGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICAgICAg
fVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSA9ICcn
O1xuICAgICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgICAgICAg
ICB2YXIgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
LmdldE5hbWUoKTtcbiAgICAgICAgICAgIGlmIChtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSkge1xu
ICAgICAgICAgICAgICBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyBDaGVjayB0aGUgcmVuZGVy
IG1ldGhvZCBvZiBgJyArIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lICsgJ2AuJztcbiAgICAgICAg
ICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoZGlkV2FybkFib3V0TWFwcywgJ1VzaW5nIE1hcHMgYXMgY2hp
bGRyZW4gaXMgbm90IHlldCBmdWxseSBzdXBwb3J0ZWQuIEl0IGlzIGFuICcgKyAnZXhwZXJpbWVu
dGFsIGZlYXR1cmUgdGhhdCBtaWdodCBiZSByZW1vdmVkLiBDb252ZXJ0IGl0IHRvIGEgJyArICdz
ZXF1ZW5jZSAvIGl0ZXJhYmxlIG9mIGtleWVkIFJlYWN0RWxlbWVudHMgaW5zdGVhZC4lcycsIG1h
cHNBc0NoaWxkcmVuQWRkZW5kdW0pIDogdm9pZCAwO1xuICAgICAgICAgIGRpZFdhcm5BYm91dE1h
cHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBl
bnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFsdWVzLlxuICAgICAgICB3aGlsZSAoIShz
dGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgdmFyIGVudHJ5ID0gc3Rl
cC52YWx1ZTtcbiAgICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICAgIGNoaWxkID0gZW50
cnlbMV07XG4gICAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgS2V5RXNjYXBl
VXRpbHMuZXNjYXBlKGVudHJ5WzBdKSArIFNVQlNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShj
aGlsZCwgMCk7XG4gICAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJl
bkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICAg
ICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmpl
Y3QnKSB7XG4gICAgICB2YXIgYWRkZW5kdW0gPSAnJztcbiAgICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGFkZGVuZHVtID0gJyBJZiB5b3Ug
bWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5ICcg
KyAnaW5zdGVhZCBvciB3cmFwIHRoZSBvYmplY3QgdXNpbmcgY3JlYXRlRnJhZ21lbnQob2JqZWN0
KSBmcm9tIHRoZSAnICsgJ1JlYWN0IGFkZC1vbnMuJztcbiAgICAgICAgaWYgKGNoaWxkcmVuLl9p
c1JlYWN0RWxlbWVudCkge1xuICAgICAgICAgIGFkZGVuZHVtID0gXCIgSXQgbG9va3MgbGlrZSB5
b3UncmUgdXNpbmcgYW4gZWxlbWVudCBjcmVhdGVkIGJ5IGEgZGlmZmVyZW50IFwiICsgJ3ZlcnNp
b24gb2YgUmVhY3QuIE1ha2Ugc3VyZSB0byB1c2Ugb25seSBvbmUgY29weSBvZiBSZWFjdC4nO1xu
ICAgICAgICB9XG4gICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAg
ICAgICAgdmFyIG5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTtcbiAg
ICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgYWRkZW5kdW0gKz0gJyBDaGVjayB0aGUg
cmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgICAgICAgIH1cbiAgICAgICAg
fVxuICAgICAgfVxuICAgICAgdmFyIGNoaWxkcmVuU3RyaW5nID0gU3RyaW5nKGNoaWxkcmVuKTtc
biAgICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAo
Zm91bmQ6ICVzKS4lcycsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdv
YmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAn
fScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogX3Byb2RJbnZhcmlhbnQoJzMxJywgY2hp
bGRyZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8gJ29iamVjdCB3aXRoIGtleXMgeycg
KyBPYmplY3Qua2V5cyhjaGlsZHJlbikuam9pbignLCAnKSArICd9JyA6IGNoaWxkcmVuU3RyaW5n
LCBhZGRlbmR1bSkgOiB2b2lkIDA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN1YnRyZWVDb3Vu
dDtcbn1cblxuLyoqXG4gKiBUcmF2ZXJzZXMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNw
ZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLCBidXRcbiAqIG1pZ2h0IGFsc28gYmUgc3BlY2lm
aWVkIHRocm91Z2ggYXR0cmlidXRlczpcbiAqXG4gKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRo
aXMucHJvcHMuY2hpbGRyZW4sIC4uLilgXG4gKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMu
cHJvcHMubGVmdFBhbmVsQ2hpbGRyZW4sIC4uLilgXG4gKlxuICogVGhlIGB0cmF2ZXJzZUNvbnRl
eHRgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRoYXQgaXMgcGFzc2VkIHRocm91Z2ggdGhlXG4g
KiBlbnRpcmUgdHJhdmVyc2FsLiBJdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBhY2N1bXVsYXRpb25z
IG9yIGFueXRoaW5nIGVsc2UgdGhhdFxuICogdGhlIGNhbGxiYWNrIG1pZ2h0IGZpbmQgcmVsZXZh
bnQuXG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBvYmplY3QuXG4g
KiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgVG8gaW52b2tlIHVwb24gdHJhdmVyc2luZyBl
YWNoIGNoaWxkLlxuICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgZm9yIHRy
YXZlcnNhbC5cbiAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4g
dGhpcyBzdWJ0cmVlLlxuICovXG5mdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVu
LCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7
XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwo
Y2hpbGRyZW4sICcnLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbn1cblxubW9kdWxlLmV4
cG9ydHMgPSB0cmF2ZXJzZUFsbENoaWxkcmVuO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8g
V0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvdHJhdmVyc2VB
bGxDaGlsZHJlbi5qc1xuLy8gbW9kdWxlIGlkID0gNzdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwi
LyoqXG4gKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52
YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52
YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG5c
bnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJu
aW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiBpc05hdGl2ZShm
bikge1xuICAvLyBCYXNlZCBvbiBpc05hdGl2ZSgpIGZyb20gTG9kYXNoXG4gIHZhciBmdW5jVG9T
dHJpbmcgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7XG4gIHZhciBoYXNPd25Qcm9wZXJ0
eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG4gIHZhciByZUlzTmF0aXZlID0g
UmVnRXhwKCdeJyArIGZ1bmNUb1N0cmluZ1xuICAvLyBUYWtlIGFuIGV4YW1wbGUgbmF0aXZlIGZ1
bmN0aW9uIHNvdXJjZSBmb3IgY29tcGFyaXNvblxuICAuY2FsbChoYXNPd25Qcm9wZXJ0eVxuICAv
LyBTdHJpcCByZWdleCBjaGFyYWN0ZXJzIHNvIHdlIGNhbiB1c2UgaXQgZm9yIHJlZ2V4XG4gICku
cmVwbGFjZSgvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2csICdcXFxcJCYnXG4gIC8vIFJlbW92ZSBo
YXNPd25Qcm9wZXJ0eSBmcm9tIHRoZSB0ZW1wbGF0ZSB0byBtYWtlIGl0IGdlbmVyaWNcbiAgKS5y
ZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8o
Pz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJyk7XG4gIHRyeSB7XG4gICAgdmFyIHNvdXJjZSA9
IGZ1bmNUb1N0cmluZy5jYWxsKGZuKTtcbiAgICByZXR1cm4gcmVJc05hdGl2ZS50ZXN0KHNvdXJj
ZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG52YXIg
Y2FuVXNlQ29sbGVjdGlvbnMgPVxuLy8gQXJyYXkuZnJvbVxudHlwZW9mIEFycmF5LmZyb20gPT09
ICdmdW5jdGlvbicgJiZcbi8vIE1hcFxudHlwZW9mIE1hcCA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05h
dGl2ZShNYXApICYmXG4vLyBNYXAucHJvdG90eXBlLmtleXNcbk1hcC5wcm90b3R5cGUgIT0gbnVs
bCAmJiB0eXBlb2YgTWFwLnByb3RvdHlwZS5rZXlzID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZl
KE1hcC5wcm90b3R5cGUua2V5cykgJiZcbi8vIFNldFxudHlwZW9mIFNldCA9PT0gJ2Z1bmN0aW9u
JyAmJiBpc05hdGl2ZShTZXQpICYmXG4vLyBTZXQucHJvdG90eXBlLmtleXNcblNldC5wcm90b3R5
cGUgIT0gbnVsbCAmJiB0eXBlb2YgU2V0LnByb3RvdHlwZS5rZXlzID09PSAnZnVuY3Rpb24nICYm
IGlzTmF0aXZlKFNldC5wcm90b3R5cGUua2V5cyk7XG5cbnZhciBzZXRJdGVtO1xudmFyIGdldEl0
ZW07XG52YXIgcmVtb3ZlSXRlbTtcbnZhciBnZXRJdGVtSURzO1xudmFyIGFkZFJvb3Q7XG52YXIg
cmVtb3ZlUm9vdDtcbnZhciBnZXRSb290SURzO1xuXG5pZiAoY2FuVXNlQ29sbGVjdGlvbnMpIHtc
biAgdmFyIGl0ZW1NYXAgPSBuZXcgTWFwKCk7XG4gIHZhciByb290SURTZXQgPSBuZXcgU2V0KCk7
XG5cbiAgc2V0SXRlbSA9IGZ1bmN0aW9uIChpZCwgaXRlbSkge1xuICAgIGl0ZW1NYXAuc2V0KGlk
LCBpdGVtKTtcbiAgfTtcbiAgZ2V0SXRlbSA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHJldHVybiBp
dGVtTWFwLmdldChpZCk7XG4gIH07XG4gIHJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAg
ICBpdGVtTWFwWydkZWxldGUnXShpZCk7XG4gIH07XG4gIGdldEl0ZW1JRHMgPSBmdW5jdGlvbiAo
KSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oaXRlbU1hcC5rZXlzKCkpO1xuICB9O1xuXG4gIGFk
ZFJvb3QgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICByb290SURTZXQuYWRkKGlkKTtcbiAgfTtcbiAg
cmVtb3ZlUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHJvb3RJRFNldFsnZGVsZXRlJ10oaWQp
O1xuICB9O1xuICBnZXRSb290SURzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBBcnJheS5m
cm9tKHJvb3RJRFNldC5rZXlzKCkpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIGl0ZW1CeUtleSA9
IHt9O1xuICB2YXIgcm9vdEJ5S2V5ID0ge307XG5cbiAgLy8gVXNlIG5vbi1udW1lcmljIGtleXMg
dG8gcHJldmVudCBWOCBwZXJmb3JtYW5jZSBpc3N1ZXM6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS9mYWNlYm9vay9yZWFjdC9wdWxsLzcyMzJcbiAgdmFyIGdldEtleUZyb21JRCA9IGZ1bmN0aW9u
IChpZCkge1xuICAgIHJldHVybiAnLicgKyBpZDtcbiAgfTtcbiAgdmFyIGdldElERnJvbUtleSA9
IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gcGFyc2VJbnQoa2V5LnN1YnN0cigxKSwgMTAp
O1xuICB9O1xuXG4gIHNldEl0ZW0gPSBmdW5jdGlvbiAoaWQsIGl0ZW0pIHtcbiAgICB2YXIga2V5
ID0gZ2V0S2V5RnJvbUlEKGlkKTtcbiAgICBpdGVtQnlLZXlba2V5XSA9IGl0ZW07XG4gIH07XG4g
IGdldEl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlk
KTtcbiAgICByZXR1cm4gaXRlbUJ5S2V5W2tleV07XG4gIH07XG4gIHJlbW92ZUl0ZW0gPSBmdW5j
dGlvbiAoaWQpIHtcbiAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcbiAgICBkZWxldGUg
aXRlbUJ5S2V5W2tleV07XG4gIH07XG4gIGdldEl0ZW1JRHMgPSBmdW5jdGlvbiAoKSB7XG4gICAg
cmV0dXJuIE9iamVjdC5rZXlzKGl0ZW1CeUtleSkubWFwKGdldElERnJvbUtleSk7XG4gIH07XG5c
biAgYWRkUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQo
aWQpO1xuICAgIHJvb3RCeUtleVtrZXldID0gdHJ1ZTtcbiAgfTtcbiAgcmVtb3ZlUm9vdCA9IGZ1
bmN0aW9uIChpZCkge1xuICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xuICAgIGRlbGV0
ZSByb290QnlLZXlba2V5XTtcbiAgfTtcbiAgZ2V0Um9vdElEcyA9IGZ1bmN0aW9uICgpIHtcbiAg
ICByZXR1cm4gT2JqZWN0LmtleXMocm9vdEJ5S2V5KS5tYXAoZ2V0SURGcm9tS2V5KTtcbiAgfTtc
bn1cblxudmFyIHVubW91bnRlZElEcyA9IFtdO1xuXG5mdW5jdGlvbiBwdXJnZURlZXAoaWQpIHtc
biAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgaWYgKGl0ZW0pIHtcbiAgICB2YXIgY2hpbGRJ
RHMgPSBpdGVtLmNoaWxkSURzO1xuXG4gICAgcmVtb3ZlSXRlbShpZCk7XG4gICAgY2hpbGRJRHMu
Zm9yRWFjaChwdXJnZURlZXApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlQ29tcG9uZW50
RnJhbWUobmFtZSwgc291cmNlLCBvd25lck5hbWUpIHtcbiAgcmV0dXJuICdcXG4gICAgaW4gJyAr
IChuYW1lIHx8ICdVbmtub3duJykgKyAoc291cmNlID8gJyAoYXQgJyArIHNvdXJjZS5maWxlTmFt
ZS5yZXBsYWNlKC9eLipbXFxcXFxcL10vLCAnJykgKyAnOicgKyBzb3VyY2UubGluZU51bWJlciAr
ICcpJyA6IG93bmVyTmFtZSA/ICcgKGNyZWF0ZWQgYnkgJyArIG93bmVyTmFtZSArICcpJyA6ICcn
KTtcbn1cblxuZnVuY3Rpb24gZ2V0RGlzcGxheU5hbWUoZWxlbWVudCkge1xuICBpZiAoZWxlbWVu
dCA9PSBudWxsKSB7XG4gICAgcmV0dXJuICcjZW1wdHknO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBl
bGVtZW50ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgZWxlbWVudCA9PT0gJ251bWJlcicpIHtcbiAg
ICByZXR1cm4gJyN0ZXh0JztcbiAgfSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudC50eXBlID09PSAn
c3RyaW5nJykge1xuICAgIHJldHVybiBlbGVtZW50LnR5cGU7XG4gIH0gZWxzZSB7XG4gICAgcmV0
dXJuIGVsZW1lbnQudHlwZS5kaXNwbGF5TmFtZSB8fCBlbGVtZW50LnR5cGUubmFtZSB8fCAnVW5r
bm93bic7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVJRChpZCkge1xuICB2YXIgbmFtZSA9
IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUoaWQpO1xuICB2YXIgZWxlbWVu
dCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG4gIHZhciBvd25lcklE
ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRPd25lcklEKGlkKTtcbiAgdmFyIG93bmVyTmFt
ZTtcbiAgaWYgKG93bmVySUQpIHtcbiAgICBvd25lck5hbWUgPSBSZWFjdENvbXBvbmVudFRyZWVI
b29rLmdldERpc3BsYXlOYW1lKG93bmVySUQpO1xuICB9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGVsZW1lbnQsICdSZWFjdENvbXBvbmVudFRyZWVI
b29rOiBNaXNzaW5nIFJlYWN0IGVsZW1lbnQgZm9yIGRlYnVnSUQgJXMgd2hlbiAnICsgJ2J1aWxk
aW5nIHN0YWNrJywgaWQpIDogdm9pZCAwO1xuICByZXR1cm4gZGVzY3JpYmVDb21wb25lbnRGcmFt
ZShuYW1lLCBlbGVtZW50ICYmIGVsZW1lbnQuX3NvdXJjZSwgb3duZXJOYW1lKTtcbn1cblxudmFy
IFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSB7XG4gIG9uU2V0Q2hpbGRyZW46IGZ1bmN0aW9uIChp
ZCwgbmV4dENoaWxkSURzKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICAhaXRl
bSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdJdGVtIG11c3QgaGF2ZSBiZWVuIHNldCcpIDogX3Byb2RJbnZhcmlhbnQoJzE0NCcpIDog
dm9pZCAwO1xuICAgIGl0ZW0uY2hpbGRJRHMgPSBuZXh0Q2hpbGRJRHM7XG5cbiAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG5leHRDaGlsZElEcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5leHRD
aGlsZElEID0gbmV4dENoaWxkSURzW2ldO1xuICAgICAgdmFyIG5leHRDaGlsZCA9IGdldEl0ZW0o
bmV4dENoaWxkSUQpO1xuICAgICAgIW5leHRDaGlsZCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBob29rIGV2ZW50cyB0
byBmaXJlIGZvciB0aGUgY2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMgaXQgaW4gb25T
ZXRDaGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MCcpIDogdm9pZCAwO1xuICAgICAg
IShuZXh0Q2hpbGQuY2hpbGRJRHMgIT0gbnVsbCB8fCB0eXBlb2YgbmV4dENoaWxkLmVsZW1lbnQg
IT09ICdvYmplY3QnIHx8IG5leHRDaGlsZC5lbGVtZW50ID09IG51bGwpID8gcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIG9u
U2V0Q2hpbGRyZW4oKSB0byBmaXJlIGZvciBhIGNvbnRhaW5lciBjaGlsZCBiZWZvcmUgaXRzIHBh
cmVudCBpbmNsdWRlcyBpdCBpbiBvblNldENoaWxkcmVuKCkuJykgOiBfcHJvZEludmFyaWFudCgn
MTQxJykgOiB2b2lkIDA7XG4gICAgICAhbmV4dENoaWxkLmlzTW91bnRlZCA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBv
bk1vdW50Q29tcG9uZW50KCkgdG8gZmlyZSBmb3IgdGhlIGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50
IGluY2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4nKSA6IF9wcm9kSW52YXJpYW50KCc3MScp
IDogdm9pZCAwO1xuICAgICAgaWYgKG5leHRDaGlsZC5wYXJlbnRJRCA9PSBudWxsKSB7XG4gICAg
ICAgIG5leHRDaGlsZC5wYXJlbnRJRCA9IGlkO1xuICAgICAgICAvLyBUT0RPOiBUaGlzIHNob3Vs
ZG4ndCBiZSBuZWNlc3NhcnkgYnV0IG1vdW50aW5nIGEgbmV3IHJvb3QgZHVyaW5nIGluXG4gICAg
ICAgIC8vIGNvbXBvbmVudFdpbGxNb3VudCBjdXJyZW50bHkgY2F1c2VzIG5vdC15ZXQtbW91bnRl
ZCBjb21wb25lbnRzIHRvXG4gICAgICAgIC8vIGJlIHB1cmdlZCBmcm9tIG91ciB0cmVlIGRhdGEg
c28gdGhlaXIgcGFyZW50IGlkIGlzIG1pc3NpbmcuXG4gICAgICB9XG4gICAgICAhKG5leHRDaGls
ZC5wYXJlbnRJRCA9PT0gaWQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIG9uQmVmb3JlTW91bnRDb21wb25lbnQoKSBw
YXJlbnQgYW5kIG9uU2V0Q2hpbGRyZW4oKSB0byBiZSBjb25zaXN0ZW50ICglcyBoYXMgcGFyZW50
cyAlcyBhbmQgJXMpLicsIG5leHRDaGlsZElELCBuZXh0Q2hpbGQucGFyZW50SUQsIGlkKSA6IF9w
cm9kSW52YXJpYW50KCcxNDInLCBuZXh0Q2hpbGRJRCwgbmV4dENoaWxkLnBhcmVudElELCBpZCkg
OiB2b2lkIDA7XG4gICAgfVxuICB9LFxuICBvbkJlZm9yZU1vdW50Q29tcG9uZW50OiBmdW5jdGlv
biAoaWQsIGVsZW1lbnQsIHBhcmVudElEKSB7XG4gICAgdmFyIGl0ZW0gPSB7XG4gICAgICBlbGVt
ZW50OiBlbGVtZW50LFxuICAgICAgcGFyZW50SUQ6IHBhcmVudElELFxuICAgICAgdGV4dDogbnVs
bCxcbiAgICAgIGNoaWxkSURzOiBbXSxcbiAgICAgIGlzTW91bnRlZDogZmFsc2UsXG4gICAgICB1
cGRhdGVDb3VudDogMFxuICAgIH07XG4gICAgc2V0SXRlbShpZCwgaXRlbSk7XG4gIH0sXG4gIG9u
QmVmb3JlVXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoaWQsIGVsZW1lbnQpIHtcbiAgICB2YXIg
aXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIGlmICghaXRlbSB8fCAhaXRlbS5pc01vdW50ZWQpIHtc
biAgICAgIC8vIFdlIG1heSBlbmQgdXAgaGVyZSBhcyBhIHJlc3VsdCBvZiBzZXRTdGF0ZSgpIGlu
IGNvbXBvbmVudFdpbGxVbm1vdW50KCkuXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIGlnbm9yZSB0
aGUgZWxlbWVudC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXRlbS5lbGVtZW50ID0gZWxl
bWVudDtcbiAgfSxcbiAgb25Nb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFy
IGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICAhaXRlbSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdJdGVtIG11c3QgaGF2ZSBiZWVuIHNl
dCcpIDogX3Byb2RJbnZhcmlhbnQoJzE0NCcpIDogdm9pZCAwO1xuICAgIGl0ZW0uaXNNb3VudGVk
ID0gdHJ1ZTtcbiAgICB2YXIgaXNSb290ID0gaXRlbS5wYXJlbnRJRCA9PT0gMDtcbiAgICBpZiAo
aXNSb290KSB7XG4gICAgICBhZGRSb290KGlkKTtcbiAgICB9XG4gIH0sXG4gIG9uVXBkYXRlQ29t
cG9uZW50OiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAg
IGlmICghaXRlbSB8fCAhaXRlbS5pc01vdW50ZWQpIHtcbiAgICAgIC8vIFdlIG1heSBlbmQgdXAg
aGVyZSBhcyBhIHJlc3VsdCBvZiBzZXRTdGF0ZSgpIGluIGNvbXBvbmVudFdpbGxVbm1vdW50KCku
XG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIGlnbm9yZSB0aGUgZWxlbWVudC5cbiAgICAgIHJldHVy
bjtcbiAgICB9XG4gICAgaXRlbS51cGRhdGVDb3VudCsrO1xuICB9LFxuICBvblVubW91bnRDb21w
b25lbnQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAg
aWYgKGl0ZW0pIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaWYgaXQgZXhpc3RzLlxuICAg
ICAgLy8gYGl0ZW1gIG1pZ2h0IG5vdCBleGlzdCBpZiBpdCBpcyBpbnNpZGUgYW4gZXJyb3IgYm91
bmRhcnksIGFuZCBhIHNpYmxpbmdcbiAgICAgIC8vIGVycm9yIGJvdW5kYXJ5IGNoaWxkIHRocmV3
IHdoaWxlIG1vdW50aW5nLiBUaGVuIHRoaXMgaW5zdGFuY2UgbmV2ZXJcbiAgICAgIC8vIGdvdCBh
IGNoYW5jZSB0byBtb3VudCwgYnV0IGl0IHN0aWxsIGdldHMgYW4gdW5tb3VudGluZyBldmVudCBk
dXJpbmdcbiAgICAgIC8vIHRoZSBlcnJvciBib3VuZGFyeSBjbGVhbnVwLlxuICAgICAgaXRlbS5p
c01vdW50ZWQgPSBmYWxzZTtcbiAgICAgIHZhciBpc1Jvb3QgPSBpdGVtLnBhcmVudElEID09PSAw
O1xuICAgICAgaWYgKGlzUm9vdCkge1xuICAgICAgICByZW1vdmVSb290KGlkKTtcbiAgICAgIH1c
biAgICB9XG4gICAgdW5tb3VudGVkSURzLnB1c2goaWQpO1xuICB9LFxuICBwdXJnZVVubW91bnRl
ZENvbXBvbmVudHM6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoUmVhY3RDb21wb25lbnRUcmVlSG9v
ay5fcHJldmVudFB1cmdpbmcpIHtcbiAgICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHRl
c3RpbmcuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1
bm1vdW50ZWRJRHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZCA9IHVubW91bnRlZElEc1tp
XTtcbiAgICAgIHB1cmdlRGVlcChpZCk7XG4gICAgfVxuICAgIHVubW91bnRlZElEcy5sZW5ndGgg
PSAwO1xuICB9LFxuICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0g
Z2V0SXRlbShpZCk7XG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLmlzTW91bnRlZCA6IGZhbHNlO1xu
ICB9LFxuICBnZXRDdXJyZW50U3RhY2tBZGRlbmR1bTogZnVuY3Rpb24gKHRvcEVsZW1lbnQpIHtc
biAgICB2YXIgaW5mbyA9ICcnO1xuICAgIGlmICh0b3BFbGVtZW50KSB7XG4gICAgICB2YXIgbmFt
ZSA9IGdldERpc3BsYXlOYW1lKHRvcEVsZW1lbnQpO1xuICAgICAgdmFyIG93bmVyID0gdG9wRWxl
bWVudC5fb3duZXI7XG4gICAgICBpbmZvICs9IGRlc2NyaWJlQ29tcG9uZW50RnJhbWUobmFtZSwg
dG9wRWxlbWVudC5fc291cmNlLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkpO1xuICAgIH1cblxu
ICAgIHZhciBjdXJyZW50T3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuICAgIHZh
ciBpZCA9IGN1cnJlbnRPd25lciAmJiBjdXJyZW50T3duZXIuX2RlYnVnSUQ7XG5cbiAgICBpbmZv
ICs9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoaWQpO1xuICAg
IHJldHVybiBpbmZvO1xuICB9LFxuICBnZXRTdGFja0FkZGVuZHVtQnlJRDogZnVuY3Rpb24gKGlk
KSB7XG4gICAgdmFyIGluZm8gPSAnJztcbiAgICB3aGlsZSAoaWQpIHtcbiAgICAgIGluZm8gKz0g
ZGVzY3JpYmVJRChpZCk7XG4gICAgICBpZCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0UGFy
ZW50SUQoaWQpO1xuICAgIH1cbiAgICByZXR1cm4gaW5mbztcbiAgfSxcbiAgZ2V0Q2hpbGRJRHM6
IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgcmV0dXJu
IGl0ZW0gPyBpdGVtLmNoaWxkSURzIDogW107XG4gIH0sXG4gIGdldERpc3BsYXlOYW1lOiBmdW5j
dGlvbiAoaWQpIHtcbiAgICB2YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0
RWxlbWVudChpZCk7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAg
ICB9XG4gICAgcmV0dXJuIGdldERpc3BsYXlOYW1lKGVsZW1lbnQpO1xuICB9LFxuICBnZXRFbGVt
ZW50OiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIHJl
dHVybiBpdGVtID8gaXRlbS5lbGVtZW50IDogbnVsbDtcbiAgfSxcbiAgZ2V0T3duZXJJRDogZnVu
Y3Rpb24gKGlkKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdl
dEVsZW1lbnQoaWQpO1xuICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC5fb3duZXIpIHtcbiAg
ICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudC5fb3duZXIuX2RlYnVn
SUQ7XG4gIH0sXG4gIGdldFBhcmVudElEOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgaXRlbSA9
IGdldEl0ZW0oaWQpO1xuICAgIHJldHVybiBpdGVtID8gaXRlbS5wYXJlbnRJRCA6IG51bGw7XG4g
IH0sXG4gIGdldFNvdXJjZTogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVt
KGlkKTtcbiAgICB2YXIgZWxlbWVudCA9IGl0ZW0gPyBpdGVtLmVsZW1lbnQgOiBudWxsO1xuICAg
IHZhciBzb3VyY2UgPSBlbGVtZW50ICE9IG51bGwgPyBlbGVtZW50Ll9zb3VyY2UgOiBudWxsO1xu
ICAgIHJldHVybiBzb3VyY2U7XG4gIH0sXG4gIGdldFRleHQ6IGZ1bmN0aW9uIChpZCkge1xuICAg
IHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtcbiAg
ICBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZWxlbWVu
dDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnbnVtYmVyJykge1xuICAgICAg
cmV0dXJuICcnICsgZWxlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4g
ICAgfVxuICB9LFxuICBnZXRVcGRhdGVDb3VudDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGl0
ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0udXBkYXRlQ291bnQgOiAw
O1xuICB9LFxuXG5cbiAgZ2V0Um9vdElEczogZ2V0Um9vdElEcyxcbiAgZ2V0UmVnaXN0ZXJlZElE
czogZ2V0SXRlbUlEcyxcblxuICBwdXNoTm9uU3RhbmRhcmRXYXJuaW5nU3RhY2s6IGZ1bmN0aW9u
IChpc0NyZWF0aW5nRWxlbWVudCwgY3VycmVudFNvdXJjZSkge1xuICAgIGlmICh0eXBlb2YgY29u
c29sZS5yZWFjdFN0YWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxu
XG4gICAgdmFyIHN0YWNrID0gW107XG4gICAgdmFyIGN1cnJlbnRPd25lciA9IFJlYWN0Q3VycmVu
dE93bmVyLmN1cnJlbnQ7XG4gICAgdmFyIGlkID0gY3VycmVudE93bmVyICYmIGN1cnJlbnRPd25l
ci5fZGVidWdJRDtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoaXNDcmVhdGluZ0VsZW1lbnQpIHtc
biAgICAgICAgc3RhY2sucHVzaCh7XG4gICAgICAgICAgbmFtZTogaWQgPyBSZWFjdENvbXBvbmVu
dFRyZWVIb29rLmdldERpc3BsYXlOYW1lKGlkKSA6IG51bGwsXG4gICAgICAgICAgZmlsZU5hbWU6
IGN1cnJlbnRTb3VyY2UgPyBjdXJyZW50U291cmNlLmZpbGVOYW1lIDogbnVsbCxcbiAgICAgICAg
ICBsaW5lTnVtYmVyOiBjdXJyZW50U291cmNlID8gY3VycmVudFNvdXJjZS5saW5lTnVtYmVyIDog
bnVsbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKGlkKSB7XG4gICAgICAg
IHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtcbiAg
ICAgICAgdmFyIHBhcmVudElEID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRQYXJlbnRJRChp
ZCk7XG4gICAgICAgIHZhciBvd25lcklEID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRPd25l
cklEKGlkKTtcbiAgICAgICAgdmFyIG93bmVyTmFtZSA9IG93bmVySUQgPyBSZWFjdENvbXBvbmVu
dFRyZWVIb29rLmdldERpc3BsYXlOYW1lKG93bmVySUQpIDogbnVsbDtcbiAgICAgICAgdmFyIHNv
dXJjZSA9IGVsZW1lbnQgJiYgZWxlbWVudC5fc291cmNlO1xuICAgICAgICBzdGFjay5wdXNoKHtc
biAgICAgICAgICBuYW1lOiBvd25lck5hbWUsXG4gICAgICAgICAgZmlsZU5hbWU6IHNvdXJjZSA/
IHNvdXJjZS5maWxlTmFtZSA6IG51bGwsXG4gICAgICAgICAgbGluZU51bWJlcjogc291cmNlID8g
c291cmNlLmxpbmVOdW1iZXIgOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgICBpZCA9IHBhcmVu
dElEO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gSW50ZXJuYWwgc3Rh
dGUgaXMgbWVzc2VkIHVwLlxuICAgICAgLy8gU3RvcCBidWlsZGluZyB0aGUgc3RhY2sgKGl0J3Mg
anVzdCBhIG5pY2UgdG8gaGF2ZSkuXG4gICAgfVxuXG4gICAgY29uc29sZS5yZWFjdFN0YWNrKHN0
YWNrKTtcbiAgfSxcbiAgcG9wTm9uU3RhbmRhcmRXYXJuaW5nU3RhY2s6IGZ1bmN0aW9uICgpIHtc
biAgICBpZiAodHlwZW9mIGNvbnNvbGUucmVhY3RTdGFja0VuZCAhPT0gJ2Z1bmN0aW9uJykge1xu
ICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLnJlYWN0U3RhY2tFbmQoKTtcbiAgfVxu
fTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rO1xuXG5cbi8vLy8v
Ly8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0
L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rLmpzXG4vLyBtb2R1bGUgaWQgPSA3OFxuLy8gbW9k
dWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWly
ZSgnLi9lbXB0eUZ1bmN0aW9uJyk7XG5cbi8qKlxuICogVXBzdHJlYW0gdmVyc2lvbiBvZiBldmVu
dCBsaXN0ZW5lci4gRG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgc3BlY2lmaWNcbiAqIG5hdHVy
ZSBvZiBwbGF0Zm9ybS5cbiAqL1xudmFyIEV2ZW50TGlzdGVuZXIgPSB7XG4gIC8qKlxuICAgKiBM
aXN0ZW4gdG8gRE9NIGV2ZW50cyBkdXJpbmcgdGhlIGJ1YmJsZSBwaGFzZS5cbiAgICpcbiAgICog
QHBhcmFtIHtET01FdmVudFRhcmdldH0gdGFyZ2V0IERPTSBlbGVtZW50IHRvIHJlZ2lzdGVyIGxp
c3RlbmVyIG9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRUeXBlIEV2ZW50IHR5cGUsIGUu
Zy4gJ2NsaWNrJyBvciAnbW91c2VvdmVyJy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJh
Y2sgQ2FsbGJhY2sgZnVuY3Rpb24uXG4gICAqIEByZXR1cm4ge29iamVjdH0gT2JqZWN0IHdpdGgg
YSBgcmVtb3ZlYCBtZXRob2QuXG4gICAqL1xuICBsaXN0ZW46IGZ1bmN0aW9uIGxpc3Rlbih0YXJn
ZXQsIGV2ZW50VHlwZSwgY2FsbGJhY2spIHtcbiAgICBpZiAodGFyZ2V0LmFkZEV2ZW50TGlzdGVu
ZXIpIHtcbiAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ss
IGZhbHNlKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3Zl
KCkge1xuICAgICAgICAgIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2Fs
bGJhY2ssIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHRhcmdl
dC5hdHRhY2hFdmVudCkge1xuICAgICAgdGFyZ2V0LmF0dGFjaEV2ZW50KCdvbicgKyBldmVudFR5
cGUsIGNhbGxiYWNrKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24g
cmVtb3ZlKCkge1xuICAgICAgICAgIHRhcmdldC5kZXRhY2hFdmVudCgnb24nICsgZXZlbnRUeXBl
LCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9LFxuXG4gIC8qKlxu
ICAgKiBMaXN0ZW4gdG8gRE9NIGV2ZW50cyBkdXJpbmcgdGhlIGNhcHR1cmUgcGhhc2UuXG4gICAq
XG4gICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRhcmdldCBET00gZWxlbWVudCB0byByZWdp
c3RlciBsaXN0ZW5lciBvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VHlwZSBFdmVudCB0
eXBlLCBlLmcuICdjbGljaycgb3IgJ21vdXNlb3ZlcicuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259
IGNhbGxiYWNrIENhbGxiYWNrIGZ1bmN0aW9uLlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IE9iamVj
dCB3aXRoIGEgYHJlbW92ZWAgbWV0aG9kLlxuICAgKi9cbiAgY2FwdHVyZTogZnVuY3Rpb24gY2Fw
dHVyZSh0YXJnZXQsIGV2ZW50VHlwZSwgY2FsbGJhY2spIHtcbiAgICBpZiAodGFyZ2V0LmFkZEV2
ZW50TGlzdGVuZXIpIHtcbiAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwg
Y2FsbGJhY2ssIHRydWUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlv
biByZW1vdmUoKSB7XG4gICAgICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRU
eXBlLCBjYWxsYmFjaywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtc
biAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
ICAgIGNvbnNvbGUuZXJyb3IoJ0F0dGVtcHRlZCB0byBsaXN0ZW4gdG8gZXZlbnRzIGR1cmluZyB0
aGUgY2FwdHVyZSBwaGFzZSBvbiBhICcgKyAnYnJvd3NlciB0aGF0IGRvZXMgbm90IHN1cHBvcnQg
dGhlIGNhcHR1cmUgcGhhc2UuIFlvdXIgYXBwbGljYXRpb24gJyArICd3aWxsIG5vdCByZWNlaXZl
IHNvbWUgZXZlbnRzLicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVtb3Zl
OiBlbXB0eUZ1bmN0aW9uXG4gICAgICB9O1xuICAgIH1cbiAgfSxcblxuICByZWdpc3RlckRlZmF1
bHQ6IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdCgpIHt9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9
IEV2ZW50TGlzdGVuZXI7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RF
UlxuLy8gLi9ub2RlX21vZHVsZXMvZmJqcy9saWIvRXZlbnRMaXN0ZW5lci5qc1xuLy8gbW9kdWxl
IGlkID0gNzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RE9NU2VsZWN0aW9uID0gcmVxdWly
ZSgnLi9SZWFjdERPTVNlbGVjdGlvbicpO1xuXG52YXIgY29udGFpbnNOb2RlID0gcmVxdWlyZSgn
ZmJqcy9saWIvY29udGFpbnNOb2RlJyk7XG52YXIgZm9jdXNOb2RlID0gcmVxdWlyZSgnZmJqcy9s
aWIvZm9jdXNOb2RlJyk7XG52YXIgZ2V0QWN0aXZlRWxlbWVudCA9IHJlcXVpcmUoJ2ZianMvbGli
L2dldEFjdGl2ZUVsZW1lbnQnKTtcblxuZnVuY3Rpb24gaXNJbkRvY3VtZW50KG5vZGUpIHtcbiAg
cmV0dXJuIGNvbnRhaW5zTm9kZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIG5vZGUpO1xufVxu
XG4vKipcbiAqIEBSZWFjdElucHV0U2VsZWN0aW9uOiBSZWFjdCBpbnB1dCBzZWxlY3Rpb24gbW9k
dWxlLiBCYXNlZCBvbiBTZWxlY3Rpb24uanMsXG4gKiBidXQgbW9kaWZpZWQgdG8gYmUgc3VpdGFi
bGUgZm9yIHJlYWN0IGFuZCBoYXMgYSBjb3VwbGUgb2YgYnVnIGZpeGVzIChkb2Vzbid0XG4gKiBh
c3N1bWUgYnV0dG9ucyBoYXZlIHJhbmdlIHNlbGVjdGlvbnMgYWxsb3dlZCkuXG4gKiBJbnB1dCBz
ZWxlY3Rpb24gbW9kdWxlIGZvciBSZWFjdC5cbiAqL1xudmFyIFJlYWN0SW5wdXRTZWxlY3Rpb24g
PSB7XG4gIGhhc1NlbGVjdGlvbkNhcGFiaWxpdGllczogZnVuY3Rpb24gKGVsZW0pIHtcbiAgICB2
YXIgbm9kZU5hbWUgPSBlbGVtICYmIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpO1xuICAgIHJldHVybiBub2RlTmFtZSAmJiAobm9kZU5hbWUgPT09ICdpbnB1dCcg
JiYgZWxlbS50eXBlID09PSAndGV4dCcgfHwgbm9kZU5hbWUgPT09ICd0ZXh0YXJlYScgfHwgZWxl
bS5jb250ZW50RWRpdGFibGUgPT09ICd0cnVlJyk7XG4gIH0sXG5cbiAgZ2V0U2VsZWN0aW9uSW5m
b3JtYXRpb246IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZm9jdXNlZEVsZW0gPSBnZXRBY3RpdmVF
bGVtZW50KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvY3VzZWRFbGVtOiBmb2N1c2VkRWxlbSxc
biAgICAgIHNlbGVjdGlvblJhbmdlOiBSZWFjdElucHV0U2VsZWN0aW9uLmhhc1NlbGVjdGlvbkNh
cGFiaWxpdGllcyhmb2N1c2VkRWxlbSkgPyBSZWFjdElucHV0U2VsZWN0aW9uLmdldFNlbGVjdGlv
bihmb2N1c2VkRWxlbSkgOiBudWxsXG4gICAgfTtcbiAgfSxcblxuICAvKipcbiAgICogQHJlc3Rv
cmVTZWxlY3Rpb246IElmIGFueSBzZWxlY3Rpb24gaW5mb3JtYXRpb24gd2FzIHBvdGVudGlhbGx5
IGxvc3QsXG4gICAqIHJlc3RvcmUgaXQuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcGVyZm9ybWluZyBv
cGVyYXRpb25zIHRoYXQgY291bGQgcmVtb3ZlIGRvbVxuICAgKiBub2RlcyBhbmQgcGxhY2UgdGhl
bSBiYWNrIGluLCByZXN1bHRpbmcgaW4gZm9jdXMgYmVpbmcgbG9zdC5cbiAgICovXG4gIHJlc3Rv
cmVTZWxlY3Rpb246IGZ1bmN0aW9uIChwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uKSB7XG4gICAg
dmFyIGN1ckZvY3VzZWRFbGVtID0gZ2V0QWN0aXZlRWxlbWVudCgpO1xuICAgIHZhciBwcmlvckZv
Y3VzZWRFbGVtID0gcHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbi5mb2N1c2VkRWxlbTtcbiAgICB2
YXIgcHJpb3JTZWxlY3Rpb25SYW5nZSA9IHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24uc2VsZWN0
aW9uUmFuZ2U7XG4gICAgaWYgKGN1ckZvY3VzZWRFbGVtICE9PSBwcmlvckZvY3VzZWRFbGVtICYm
IGlzSW5Eb2N1bWVudChwcmlvckZvY3VzZWRFbGVtKSkge1xuICAgICAgaWYgKFJlYWN0SW5wdXRT
ZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKHByaW9yRm9jdXNlZEVsZW0pKSB7XG4g
ICAgICAgIFJlYWN0SW5wdXRTZWxlY3Rpb24uc2V0U2VsZWN0aW9uKHByaW9yRm9jdXNlZEVsZW0s
IHByaW9yU2VsZWN0aW9uUmFuZ2UpO1xuICAgICAgfVxuICAgICAgZm9jdXNOb2RlKHByaW9yRm9j
dXNlZEVsZW0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQGdldFNlbGVjdGlvbjogR2V0
cyB0aGUgc2VsZWN0aW9uIGJvdW5kcyBvZiBhIGZvY3VzZWQgdGV4dGFyZWEsIGlucHV0IG9yXG4g
ICAqIGNvbnRlbnRFZGl0YWJsZSBub2RlLlxuICAgKiAtQGlucHV0OiBMb29rIHVwIHNlbGVjdGlv
biBib3VuZHMgb2YgdGhpcyBpbnB1dFxuICAgKiAtQHJldHVybiB7c3RhcnQ6IHNlbGVjdGlvblN0
YXJ0LCBlbmQ6IHNlbGVjdGlvbkVuZH1cbiAgICovXG4gIGdldFNlbGVjdGlvbjogZnVuY3Rpb24g
KGlucHV0KSB7XG4gICAgdmFyIHNlbGVjdGlvbjtcblxuICAgIGlmICgnc2VsZWN0aW9uU3RhcnQn
IGluIGlucHV0KSB7XG4gICAgICAvLyBNb2Rlcm4gYnJvd3NlciB3aXRoIGlucHV0IG9yIHRleHRh
cmVhLlxuICAgICAgc2VsZWN0aW9uID0ge1xuICAgICAgICBzdGFydDogaW5wdXQuc2VsZWN0aW9u
U3RhcnQsXG4gICAgICAgIGVuZDogaW5wdXQuc2VsZWN0aW9uRW5kXG4gICAgICB9O1xuICAgIH0g
ZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uICYmIGlucHV0Lm5vZGVOYW1lICYmIGlucHV0Lm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcpIHtcbiAgICAgIC8vIElFOCBpbnB1dC5c
biAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO1xuICAg
ICAgLy8gVGhlcmUgY2FuIG9ubHkgYmUgb25lIHNlbGVjdGlvbiBwZXIgZG9jdW1lbnQgaW4gSUUs
IHNvIGl0IG11c3RcbiAgICAgIC8vIGJlIGluIG91ciBlbGVtZW50LlxuICAgICAgaWYgKHJhbmdl
LnBhcmVudEVsZW1lbnQoKSA9PT0gaW5wdXQpIHtcbiAgICAgICAgc2VsZWN0aW9uID0ge1xuICAg
ICAgICAgIHN0YXJ0OiAtcmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCAtaW5wdXQudmFsdWUu
bGVuZ3RoKSxcbiAgICAgICAgICBlbmQ6IC1yYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCAtaW5w
dXQudmFsdWUubGVuZ3RoKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAg
ICAvLyBDb250ZW50IGVkaXRhYmxlIG9yIG9sZCBJRSB0ZXh0YXJlYS5cbiAgICAgIHNlbGVjdGlv
biA9IFJlYWN0RE9NU2VsZWN0aW9uLmdldE9mZnNldHMoaW5wdXQpO1xuICAgIH1cblxuICAgIHJl
dHVybiBzZWxlY3Rpb24gfHwgeyBzdGFydDogMCwgZW5kOiAwIH07XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIEBzZXRTZWxlY3Rpb246IFNldHMgdGhlIHNlbGVjdGlvbiBib3VuZHMgb2YgYSB0ZXh0YXJl
YSBvciBpbnB1dCBhbmQgZm9jdXNlc1xuICAgKiB0aGUgaW5wdXQuXG4gICAqIC1AaW5wdXQgICAg
IFNldCBzZWxlY3Rpb24gYm91bmRzIG9mIHRoaXMgaW5wdXQgb3IgdGV4dGFyZWFcbiAgICogLUBv
ZmZzZXRzICAgT2JqZWN0IG9mIHNhbWUgZm9ybSB0aGF0IGlzIHJldHVybmVkIGZyb20gZ2V0Klxu
ICAgKi9cbiAgc2V0U2VsZWN0aW9uOiBmdW5jdGlvbiAoaW5wdXQsIG9mZnNldHMpIHtcbiAgICB2
YXIgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0O1xuICAgIHZhciBlbmQgPSBvZmZzZXRzLmVuZDtcbiAg
ICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGVuZCA9IHN0YXJ0O1xuICAgIH1cblxu
ICAgIGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIGlucHV0KSB7XG4gICAgICBpbnB1dC5zZWxlY3Rp
b25TdGFydCA9IHN0YXJ0O1xuICAgICAgaW5wdXQuc2VsZWN0aW9uRW5kID0gTWF0aC5taW4oZW5k
LCBpbnB1dC52YWx1ZS5sZW5ndGgpO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0aW9u
ICYmIGlucHV0Lm5vZGVOYW1lICYmIGlucHV0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdp
bnB1dCcpIHtcbiAgICAgIHZhciByYW5nZSA9IGlucHV0LmNyZWF0ZVRleHRSYW5nZSgpO1xuICAg
ICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7XG4gICAgICByYW5nZS5tb3ZlU3RhcnQoJ2NoYXJhY3Rl
cicsIHN0YXJ0KTtcbiAgICAgIHJhbmdlLm1vdmVFbmQoJ2NoYXJhY3RlcicsIGVuZCAtIHN0YXJ0
KTtcbiAgICAgIHJhbmdlLnNlbGVjdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBSZWFjdERPTVNl
bGVjdGlvbi5zZXRPZmZzZXRzKGlucHV0LCBvZmZzZXRzKTtcbiAgICB9XG4gIH1cbn07XG5cbm1v
ZHVsZS5leHBvcnRzID0gUmVhY3RJbnB1dFNlbGVjdGlvbjtcblxuXG4vLy8vLy8vLy8vLy8vLy8v
Ly9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1Jl
YWN0SW5wdXRTZWxlY3Rpb24uanNcbi8vIG1vZHVsZSBpZCA9IDgwXG4vLyBtb2R1bGUgY2h1bmtz
ID0gMCIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
IEB0eXBlY2hlY2tzXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgZmItd3d3L3R5cGVvZi11bmRl
ZmluZWQgKi9cblxuLyoqXG4gKiBTYW1lIGFzIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYnV0IHdy
YXBzIGluIGEgdHJ5LWNhdGNoIGJsb2NrLiBJbiBJRSBpdCBpc1xuICogbm90IHNhZmUgdG8gY2Fs
bCBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlmIHRoZXJlIGlzIG5vdGhpbmcgZm9jdXNlZC5cbiAq
XG4gKiBUaGUgYWN0aXZlRWxlbWVudCB3aWxsIGJlIG51bGwgb25seSBpZiB0aGUgZG9jdW1lbnQg
b3IgZG9jdW1lbnQgYm9keSBpcyBub3RcbiAqIHlldCBkZWZpbmVkLlxuICpcbiAqIEBwYXJhbSB7
P0RPTURvY3VtZW50fSBkb2MgRGVmYXVsdHMgdG8gY3VycmVudCBkb2N1bWVudC5cbiAqIEByZXR1
cm4gez9ET01FbGVtZW50fVxuICovXG5mdW5jdGlvbiBnZXRBY3RpdmVFbGVtZW50KGRvYykgLyo/
RE9NRWxlbWVudCove1xuICBkb2MgPSBkb2MgfHwgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVm
aW5lZCcgPyBkb2N1bWVudCA6IHVuZGVmaW5lZCk7XG4gIGlmICh0eXBlb2YgZG9jID09PSAndW5k
ZWZpbmVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRv
Yy5hY3RpdmVFbGVtZW50IHx8IGRvYy5ib2R5O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJu
IGRvYy5ib2R5O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWN0aXZlRWxlbWVudDtc
blxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9k
dWxlcy9mYmpzL2xpYi9nZXRBY3RpdmVFbGVtZW50LmpzXG4vLyBtb2R1bGUgaWQgPSA4MVxuLy8g
bW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZElu
dmFyaWFudCcpO1xuXG52YXIgRE9NTGF6eVRyZWUgPSByZXF1aXJlKCcuL0RPTUxhenlUcmVlJyk7
XG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7XG52YXIgUmVhY3Qg
PSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3QnKTtcbnZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIgPSByZXF1aXJlKCcuL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlcicpO1xudmFyIFJlYWN0Q3Vy
cmVudE93bmVyID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIg
UmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUn
KTtcbnZhciBSZWFjdERPTUNvbnRhaW5lckluZm8gPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29udGFp
bmVySW5mbycpO1xudmFyIFJlYWN0RE9NRmVhdHVyZUZsYWdzID0gcmVxdWlyZSgnLi9SZWFjdERP
TUZlYXR1cmVGbGFncycpO1xudmFyIFJlYWN0RmVhdHVyZUZsYWdzID0gcmVxdWlyZSgnLi9SZWFj
dEZlYXR1cmVGbGFncycpO1xudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcuL1JlYWN0
SW5zdGFuY2VNYXAnKTtcbnZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVh
Y3RJbnN0cnVtZW50YXRpb24nKTtcbnZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0gcmVxdWlyZSgn
Li9SZWFjdE1hcmt1cENoZWNrc3VtJyk7XG52YXIgUmVhY3RSZWNvbmNpbGVyID0gcmVxdWlyZSgn
Li9SZWFjdFJlY29uY2lsZXInKTtcbnZhciBSZWFjdFVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9S
ZWFjdFVwZGF0ZVF1ZXVlJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVw
ZGF0ZXMnKTtcblxudmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlPYmpl
Y3QnKTtcbnZhciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9pbnN0YW50
aWF0ZVJlYWN0Q29tcG9uZW50Jyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIv
aW52YXJpYW50Jyk7XG52YXIgc2V0SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9zZXRJbm5lckhUTUwn
KTtcbnZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vc2hvdWxkVXBk
YXRlUmVhY3RDb21wb25lbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fy
bmluZycpO1xuXG52YXIgQVRUUl9OQU1FID0gRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05BTUU7
XG52YXIgUk9PVF9BVFRSX05BTUUgPSBET01Qcm9wZXJ0eS5ST09UX0FUVFJJQlVURV9OQU1FO1xu
XG52YXIgRUxFTUVOVF9OT0RFX1RZUEUgPSAxO1xudmFyIERPQ19OT0RFX1RZUEUgPSA5O1xudmFy
IERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSA9IDExO1xuXG52YXIgaW5zdGFuY2VzQnlSZWFj
dFJvb3RJRCA9IHt9O1xuXG4vKipcbiAqIEZpbmRzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hh
cmFjdGVyXG4gKiB0aGF0J3Mgbm90IGNvbW1vbiBiZXR3ZWVuIHRoZSB0d28gZ2l2ZW4gc3RyaW5n
cy5cbiAqXG4gKiBAcmV0dXJuIHtudW1iZXJ9IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHdo
ZXJlIHRoZSBzdHJpbmdzIGRpdmVyZ2VcbiAqL1xuZnVuY3Rpb24gZmlyc3REaWZmZXJlbmNlSW5k
ZXgoc3RyaW5nMSwgc3RyaW5nMikge1xuICB2YXIgbWluTGVuID0gTWF0aC5taW4oc3RyaW5nMS5s
ZW5ndGgsIHN0cmluZzIubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaW5MZW47IGkr
Kykge1xuICAgIGlmIChzdHJpbmcxLmNoYXJBdChpKSAhPT0gc3RyaW5nMi5jaGFyQXQoaSkpIHtc
biAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3RyaW5nMS5sZW5ndGggPT09
IHN0cmluZzIubGVuZ3RoID8gLTEgOiBtaW5MZW47XG59XG5cbi8qKlxuICogQHBhcmFtIHtET01F
bGVtZW50fERPTURvY3VtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdGhhdCBtYXkgY29udGFp
blxuICogYSBSZWFjdCBjb21wb25lbnRcbiAqIEByZXR1cm4gez8qfSBET00gZWxlbWVudCB0aGF0
IG1heSBoYXZlIHRoZSByZWFjdFJvb3QgSUQsIG9yIG51bGwuXG4gKi9cbmZ1bmN0aW9uIGdldFJl
YWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpIHtcbiAgaWYgKCFjb250YWluZXIp
IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09
IERPQ19OT0RFX1RZUEUpIHtcbiAgICByZXR1cm4gY29udGFpbmVyLmRvY3VtZW50RWxlbWVudDtc
biAgfSBlbHNlIHtcbiAgICByZXR1cm4gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gIH1cbn1cblxu
ZnVuY3Rpb24gaW50ZXJuYWxHZXRJRChub2RlKSB7XG4gIC8vIElmIG5vZGUgaXMgc29tZXRoaW5n
IGxpa2UgYSB3aW5kb3csIGRvY3VtZW50LCBvciB0ZXh0IG5vZGUsIG5vbmUgb2ZcbiAgLy8gd2hp
Y2ggc3VwcG9ydCBhdHRyaWJ1dGVzIG9yIGEgLmdldEF0dHJpYnV0ZSBtZXRob2QsIGdyYWNlZnVs
bHkgcmV0dXJuXG4gIC8vIHRoZSBlbXB0eSBzdHJpbmcsIGFzIGlmIHRoZSBhdHRyaWJ1dGUgd2Vy
ZSBtaXNzaW5nLlxuICByZXR1cm4gbm9kZS5nZXRBdHRyaWJ1dGUgJiYgbm9kZS5nZXRBdHRyaWJ1
dGUoQVRUUl9OQU1FKSB8fCAnJztcbn1cblxuLyoqXG4gKiBNb3VudHMgdGhpcyBjb21wb25lbnQg
YW5kIGluc2VydHMgaXQgaW50byB0aGUgRE9NLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25l
bnR9IGNvbXBvbmVudEluc3RhbmNlIFRoZSBpbnN0YW5jZSB0byBtb3VudC5cbiAqIEBwYXJhbSB7
RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIG1vdW50IGludG8uXG4gKiBAcGFy
YW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gKiBAcGFyYW0ge2Jv
b2xlYW59IHNob3VsZFJldXNlTWFya3VwIElmIHRydWUsIGRvIG5vdCBpbnNlcnQgbWFya3VwXG4g
Ki9cbmZ1bmN0aW9uIG1vdW50Q29tcG9uZW50SW50b05vZGUod3JhcHBlckluc3RhbmNlLCBjb250
YWluZXIsIHRyYW5zYWN0aW9uLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCkge1xuICB2YXIg
bWFya2VyTmFtZTtcbiAgaWYgKFJlYWN0RmVhdHVyZUZsYWdzLmxvZ1RvcExldmVsUmVuZGVycykg
e1xuICAgIHZhciB3cmFwcGVkRWxlbWVudCA9IHdyYXBwZXJJbnN0YW5jZS5fY3VycmVudEVsZW1l
bnQucHJvcHMuY2hpbGQ7XG4gICAgdmFyIHR5cGUgPSB3cmFwcGVkRWxlbWVudC50eXBlO1xuICAg
IG1hcmtlck5hbWUgPSAnUmVhY3QgbW91bnQ6ICcgKyAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcn
ID8gdHlwZSA6IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lKTtcbiAgICBjb25zb2xlLnRp
bWUobWFya2VyTmFtZSk7XG4gIH1cblxuICB2YXIgbWFya3VwID0gUmVhY3RSZWNvbmNpbGVyLm1v
dW50Q29tcG9uZW50KHdyYXBwZXJJbnN0YW5jZSwgdHJhbnNhY3Rpb24sIG51bGwsIFJlYWN0RE9N
Q29udGFpbmVySW5mbyh3cmFwcGVySW5zdGFuY2UsIGNvbnRhaW5lciksIGNvbnRleHQsIDAgLyog
cGFyZW50RGVidWdJRCAqL1xuICApO1xuXG4gIGlmIChtYXJrZXJOYW1lKSB7XG4gICAgY29uc29s
ZS50aW1lRW5kKG1hcmtlck5hbWUpO1xuICB9XG5cbiAgd3JhcHBlckluc3RhbmNlLl9yZW5kZXJl
ZENvbXBvbmVudC5fdG9wTGV2ZWxXcmFwcGVyID0gd3JhcHBlckluc3RhbmNlO1xuICBSZWFjdE1v
dW50Ll9tb3VudEltYWdlSW50b05vZGUobWFya3VwLCBjb250YWluZXIsIHdyYXBwZXJJbnN0YW5j
ZSwgc2hvdWxkUmV1c2VNYXJrdXAsIHRyYW5zYWN0aW9uKTtcbn1cblxuLyoqXG4gKiBCYXRjaGVk
IG1vdW50LlxuICpcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudEluc3RhbmNl
IFRoZSBpbnN0YW5jZSB0byBtb3VudC5cbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVy
IERPTSBlbGVtZW50IHRvIG1vdW50IGludG8uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFJl
dXNlTWFya3VwIElmIHRydWUsIGRvIG5vdCBpbnNlcnQgbWFya3VwXG4gKi9cbmZ1bmN0aW9uIGJh
dGNoZWRNb3VudENvbXBvbmVudEludG9Ob2RlKGNvbXBvbmVudEluc3RhbmNlLCBjb250YWluZXIs
IHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7XG4gIHZhciB0cmFuc2FjdGlvbiA9IFJlYWN0
VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZChcbiAgLyogdXNlQ3Jl
YXRlRWxlbWVudCAqL1xuICAhc2hvdWxkUmV1c2VNYXJrdXAgJiYgUmVhY3RET01GZWF0dXJlRmxh
Z3MudXNlQ3JlYXRlRWxlbWVudCk7XG4gIHRyYW5zYWN0aW9uLnBlcmZvcm0obW91bnRDb21wb25l
bnRJbnRvTm9kZSwgbnVsbCwgY29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lciwgdHJhbnNhY3Rp
b24sIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KTtcbiAgUmVhY3RVcGRhdGVzLlJlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0cmFuc2FjdGlvbik7XG59XG5cbi8qKlxuICogVW5t
b3VudHMgYSBjb21wb25lbnQgYW5kIHJlbW92ZXMgaXQgZnJvbSB0aGUgRE9NLlxuICpcbiAqIEBw
YXJhbSB7UmVhY3RDb21wb25lbnR9IGluc3RhbmNlIFJlYWN0IGNvbXBvbmVudCBpbnN0YW5jZS5c
biAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHVubW91bnQg
ZnJvbS5cbiAqIEBmaW5hbFxuICogQGludGVybmFsXG4gKiBAc2VlIHtSZWFjdE1vdW50LnVubW91
bnRDb21wb25lbnRBdE5vZGV9XG4gKi9cbmZ1bmN0aW9uIHVubW91bnRDb21wb25lbnRGcm9tTm9k
ZShpbnN0YW5jZSwgY29udGFpbmVyLCBzYWZlbHkpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25CZWdpbkZsdXNoKCk7XG4gIH1cbiAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25l
bnQoaW5zdGFuY2UsIHNhZmVseSk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5kRmx1
c2goKTtcbiAgfVxuXG4gIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUp
IHtcbiAgICBjb250YWluZXIgPSBjb250YWluZXIuZG9jdW1lbnRFbGVtZW50O1xuICB9XG5cbiAg
Ly8gaHR0cDovL2pzcGVyZi5jb20vZW1wdHlpbmctYS1ub2RlXG4gIHdoaWxlIChjb250YWluZXIu
bGFzdENoaWxkKSB7XG4gICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRhaW5lci5sYXN0Q2hp
bGQpO1xuICB9XG59XG5cbi8qKlxuICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaGFz
IGEgZGlyZWN0IFJlYWN0LXJlbmRlcmVkIGNoaWxkIHRoYXQgaXNcbiAqIG5vdCBhIFJlYWN0IHJv
b3QgZWxlbWVudC4gVXNlZnVsIGZvciB3YXJuaW5nIGluIGByZW5kZXJgLFxuICogYHVubW91bnRD
b21wb25lbnRBdE5vZGVgLCBldGMuXG4gKlxuICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBU
aGUgY2FuZGlkYXRlIERPTSBub2RlLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUg
RE9NIGVsZW1lbnQgY29udGFpbnMgYSBkaXJlY3QgY2hpbGQgdGhhdCB3YXNcbiAqIHJlbmRlcmVk
IGJ5IFJlYWN0IGJ1dCBpcyBub3QgYSByb290IGVsZW1lbnQuXG4gKiBAaW50ZXJuYWxcbiAqL1xu
ZnVuY3Rpb24gaGFzTm9uUm9vdFJlYWN0Q2hpbGQoY29udGFpbmVyKSB7XG4gIHZhciByb290RWwg
PSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgaWYgKHJvb3RF
bCkge1xuICAgIHZhciBpbnN0ID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJv
bU5vZGUocm9vdEVsKTtcbiAgICByZXR1cm4gISEoaW5zdCAmJiBpbnN0Ll9ob3N0UGFyZW50KTtc
biAgfVxufVxuXG4vKipcbiAqIFRydWUgaWYgdGhlIHN1cHBsaWVkIERPTSBub2RlIGlzIGEgUmVh
Y3QgRE9NIGVsZW1lbnQgYW5kXG4gKiBpdCBoYXMgYmVlbiByZW5kZXJlZCBieSBhbm90aGVyIGNv
cHkgb2YgUmVhY3QuXG4gKlxuICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlk
YXRlIERPTSBub2RlLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGhhcyBi
ZWVuIHJlbmRlcmVkIGJ5IGFub3RoZXIgY29weSBvZiBSZWFjdFxuICogQGludGVybmFsXG4gKi9c
bmZ1bmN0aW9uIG5vZGVJc1JlbmRlcmVkQnlPdGhlckluc3RhbmNlKGNvbnRhaW5lcikge1xuICB2
YXIgcm9vdEVsID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4g
IHJldHVybiAhIShyb290RWwgJiYgaXNSZWFjdE5vZGUocm9vdEVsKSAmJiAhUmVhY3RET01Db21w
b25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUocm9vdEVsKSk7XG59XG5cbi8qKlxuICogVHJ1
ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaXMgYSB2YWxpZCBub2RlIGVsZW1lbnQuXG4gKlxu
ICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLlxuICog
QHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGlzIGEgdmFsaWQgRE9NIG5vZGUuXG4g
KiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZENvbnRhaW5lcihub2RlKSB7XG4gIHJl
dHVybiAhIShub2RlICYmIChub2RlLm5vZGVUeXBlID09PSBFTEVNRU5UX05PREVfVFlQRSB8fCBu
b2RlLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFIHx8IG5vZGUubm9kZVR5cGUgPT09IERPQ1VN
RU5UX0ZSQUdNRU5UX05PREVfVFlQRSkpO1xufVxuXG4vKipcbiAqIFRydWUgaWYgdGhlIHN1cHBs
aWVkIERPTSBub2RlIGlzIGEgdmFsaWQgUmVhY3Qgbm9kZSBlbGVtZW50LlxuICpcbiAqIEBwYXJh
bSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0ZSBET00gbm9kZS5cbiAqIEByZXR1cm4g
e2Jvb2xlYW59IFRydWUgaWYgdGhlIERPTSBpcyBhIHZhbGlkIFJlYWN0IERPTSBub2RlLlxuICog
QGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGlzUmVhY3ROb2RlKG5vZGUpIHtcbiAgcmV0dXJuIGlz
VmFsaWRDb250YWluZXIobm9kZSkgJiYgKG5vZGUuaGFzQXR0cmlidXRlKFJPT1RfQVRUUl9OQU1F
KSB8fCBub2RlLmhhc0F0dHJpYnV0ZShBVFRSX05BTUUpKTtcbn1cblxuZnVuY3Rpb24gZ2V0SG9z
dFJvb3RJbnN0YW5jZUluQ29udGFpbmVyKGNvbnRhaW5lcikge1xuICB2YXIgcm9vdEVsID0gZ2V0
UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gIHZhciBwcmV2SG9zdElu
c3RhbmNlID0gcm9vdEVsICYmIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21O
b2RlKHJvb3RFbCk7XG4gIHJldHVybiBwcmV2SG9zdEluc3RhbmNlICYmICFwcmV2SG9zdEluc3Rh
bmNlLl9ob3N0UGFyZW50ID8gcHJldkhvc3RJbnN0YW5jZSA6IG51bGw7XG59XG5cbmZ1bmN0aW9u
IGdldFRvcExldmVsV3JhcHBlckluQ29udGFpbmVyKGNvbnRhaW5lcikge1xuICB2YXIgcm9vdCA9
IGdldEhvc3RSb290SW5zdGFuY2VJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICByZXR1cm4gcm9v
dCA/IHJvb3QuX2hvc3RDb250YWluZXJJbmZvLl90b3BMZXZlbFdyYXBwZXIgOiBudWxsO1xufVxu
XG4vKipcbiAqIFRlbXBvcmFyeSAoPykgaGFjayBzbyB0aGF0IHdlIGNhbiBzdG9yZSBhbGwgdG9w
LWxldmVsIHBlbmRpbmcgdXBkYXRlcyBvblxuICogY29tcG9zaXRlcyBpbnN0ZWFkIG9mIGhhdmlu
ZyB0byB3b3JyeSBhYm91dCBkaWZmZXJlbnQgdHlwZXMgb2YgY29tcG9uZW50c1xuICogaGVyZS5c
biAqL1xudmFyIHRvcExldmVsUm9vdENvdW50ZXIgPSAxO1xudmFyIFRvcExldmVsV3JhcHBlciA9
IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5yb290SUQgPSB0b3BMZXZlbFJvb3RDb3VudGVyKys7XG59
O1xuVG9wTGV2ZWxXcmFwcGVyLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0ge307XG5pZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBUb3BMZXZlbFdyYXBw
ZXIuZGlzcGxheU5hbWUgPSAnVG9wTGV2ZWxXcmFwcGVyJztcbn1cblRvcExldmVsV3JhcHBlci5w
cm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5wcm9wcy5jaGls
ZDtcbn07XG5Ub3BMZXZlbFdyYXBwZXIuaXNSZWFjdFRvcExldmVsV3JhcHBlciA9IHRydWU7XG5c
bi8qKlxuICogTW91bnRpbmcgaXMgdGhlIHByb2Nlc3Mgb2YgaW5pdGlhbGl6aW5nIGEgUmVhY3Qg
Y29tcG9uZW50IGJ5IGNyZWF0aW5nIGl0c1xuICogcmVwcmVzZW50YXRpdmUgRE9NIGVsZW1lbnRz
IGFuZCBpbnNlcnRpbmcgdGhlbSBpbnRvIGEgc3VwcGxpZWQgYGNvbnRhaW5lcmAuXG4gKiBBbnkg
cHJpb3IgY29udGVudCBpbnNpZGUgYGNvbnRhaW5lcmAgaXMgZGVzdHJveWVkIGluIHRoZSBwcm9j
ZXNzLlxuICpcbiAqICAgUmVhY3RNb3VudC5yZW5kZXIoXG4gKiAgICAgY29tcG9uZW50LFxuICog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKVxuICogICApO1xuICpcbiAq
ICAgPGRpdiBpZD1cImNvbnRhaW5lclwiPiAgICAgICAgICAgICAgICAgICA8LS0gU3VwcGxpZWQg
YGNvbnRhaW5lcmAuXG4gKiAgICAgPGRpdiBkYXRhLXJlYWN0aWQ9XCIuM1wiPiAgICAgICAgICAg
ICAgPC0tIFJlbmRlcmVkIHJlYWN0Um9vdCBvZiBSZWFjdFxuICogICAgICAgLy8gLi4uICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LlxuICogICAgIDwvZGl2PlxuICog
ICA8L2Rpdj5cbiAqXG4gKiBJbnNpZGUgb2YgYGNvbnRhaW5lcmAsIHRoZSBmaXJzdCBlbGVtZW50
IHJlbmRlcmVkIGlzIHRoZSBcInJlYWN0Um9vdFwiLlxuICovXG52YXIgUmVhY3RNb3VudCA9IHtc
biAgVG9wTGV2ZWxXcmFwcGVyOiBUb3BMZXZlbFdyYXBwZXIsXG5cbiAgLyoqXG4gICAqIFVzZWQg
YnkgZGV2dG9vbHMuIFRoZSBrZXlzIGFyZSBub3QgaW1wb3J0YW50LlxuICAgKi9cbiAgX2luc3Rh
bmNlc0J5UmVhY3RSb290SUQ6IGluc3RhbmNlc0J5UmVhY3RSb290SUQsXG5cbiAgLyoqXG4gICAq
IFRoaXMgaXMgYSBob29rIHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVuZGVyaW5nIFJlYWN0IGNvbXBv
bmVudHMgd2hpbGVcbiAgICogZW5zdXJpbmcgdGhhdCB0aGUgYXBwYXJlbnQgc2Nyb2xsIHBvc2l0
aW9uIG9mIGl0cyBgY29udGFpbmVyYCBkb2VzIG5vdFxuICAgKiBjaGFuZ2UuXG4gICAqXG4gICAq
IEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIFRoZSBgY29udGFpbmVyYCBiZWluZyByZW5k
ZXJlZCBpbnRvLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSByZW5kZXJDYWxsYmFjayBUaGlzIG11
c3QgYmUgY2FsbGVkIG9uY2UgdG8gZG8gdGhlIHJlbmRlci5cbiAgICovXG4gIHNjcm9sbE1vbml0
b3I6IGZ1bmN0aW9uIChjb250YWluZXIsIHJlbmRlckNhbGxiYWNrKSB7XG4gICAgcmVuZGVyQ2Fs
bGJhY2soKTtcbiAgfSxcblxuICAvKipcbiAgICogVGFrZSBhIGNvbXBvbmVudCB0aGF0J3MgYWxy
ZWFkeSBtb3VudGVkIGludG8gdGhlIERPTSBhbmQgcmVwbGFjZSBpdHMgcHJvcHNcbiAgICogQHBh
cmFtIHtSZWFjdENvbXBvbmVudH0gcHJldkNvbXBvbmVudCBjb21wb25lbnQgaW5zdGFuY2UgYWxy
ZWFkeSBpbiB0aGUgRE9NXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBj
b21wb25lbnQgaW5zdGFuY2UgdG8gcmVuZGVyXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29u
dGFpbmVyIGNvbnRhaW5lciB0byByZW5kZXIgaW50b1xuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0g
Y2FsbGJhY2sgZnVuY3Rpb24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRpb25cbiAgICovXG4gIF91cGRh
dGVSb290Q29tcG9uZW50OiBmdW5jdGlvbiAocHJldkNvbXBvbmVudCwgbmV4dEVsZW1lbnQsIG5l
eHRDb250ZXh0LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4gICAgUmVhY3RNb3VudC5zY3JvbGxN
b25pdG9yKGNvbnRhaW5lciwgZnVuY3Rpb24gKCkge1xuICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5l
bnF1ZXVlRWxlbWVudEludGVybmFsKHByZXZDb21wb25lbnQsIG5leHRFbGVtZW50LCBuZXh0Q29u
dGV4dCk7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5l
bnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbChwcmV2Q29tcG9uZW50LCBjYWxsYmFjayk7XG4gICAgICB9
XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJldkNvbXBvbmVudDtcbiAgfSxcblxuICAvKipcbiAg
ICogUmVuZGVyIGEgbmV3IGNvbXBvbmVudCBpbnRvIHRoZSBET00uIEhvb2tlZCBieSBob29rcyFc
biAgICpcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IGVsZW1lbnQgdG8g
cmVuZGVyXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIGNvbnRhaW5lciB0byBy
ZW5kZXIgaW50b1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFJldXNlTWFya3VwIGlmIHdl
IHNob3VsZCBza2lwIHRoZSBtYXJrdXAgaW5zZXJ0aW9uXG4gICAqIEByZXR1cm4ge1JlYWN0Q29t
cG9uZW50fSBuZXh0Q29tcG9uZW50XG4gICAqL1xuICBfcmVuZGVyTmV3Um9vdENvbXBvbmVudDog
ZnVuY3Rpb24gKG5leHRFbGVtZW50LCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBjb250
ZXh0KSB7XG4gICAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENv
bXBvc2l0ZUNvbXBvbmVudCdzXG4gICAgLy8gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCkgYXNz
dW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7XG4gICAgLy8gdmVyaWZ5IHRo
YXQgdGhhdCdzIHRoZSBjYXNlLlxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwgJ19yZW5k
ZXJOZXdSb290Q29tcG9uZW50KCk6IFJlbmRlciBtZXRob2RzIHNob3VsZCBiZSBhIHB1cmUgZnVu
Y3Rpb24gJyArICdvZiBwcm9wcyBhbmQgc3RhdGU7IHRyaWdnZXJpbmcgbmVzdGVkIGNvbXBvbmVu
dCB1cGRhdGVzIGZyb20gJyArICdyZW5kZXIgaXMgbm90IGFsbG93ZWQuIElmIG5lY2Vzc2FyeSwg
dHJpZ2dlciBuZXN0ZWQgdXBkYXRlcyBpbiAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZS4gQ2hlY2sg
dGhlIHJlbmRlciBtZXRob2Qgb2YgJXMuJywgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCAmJiBS
ZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21w
b25lbnQnKSA6IHZvaWQgMDtcblxuICAgICFpc1ZhbGlkQ29udGFpbmVyKGNvbnRhaW5lcikgPyBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
X3JlZ2lzdGVyQ29tcG9uZW50KC4uLik6IFRhcmdldCBjb250YWluZXIgaXMgbm90IGEgRE9NIGVs
ZW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzcnKSA6IHZvaWQgMDtcblxuICAgIFJlYWN0QnJv
d3NlckV2ZW50RW1pdHRlci5lbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3JpbmcoKTtcbiAgICB2YXIg
Y29tcG9uZW50SW5zdGFuY2UgPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG5leHRFbGVtZW50
LCBmYWxzZSk7XG5cbiAgICAvLyBUaGUgaW5pdGlhbCByZW5kZXIgaXMgc3luY2hyb25vdXMgYnV0
IGFueSB1cGRhdGVzIHRoYXQgaGFwcGVuIGR1cmluZ1xuICAgIC8vIHJlbmRlcmluZywgaW4gY29t
cG9uZW50V2lsbE1vdW50IG9yIGNvbXBvbmVudERpZE1vdW50LCB3aWxsIGJlIGJhdGNoZWRcbiAg
ICAvLyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgYmF0Y2hpbmcgc3RyYXRlZ3kuXG5cbiAgICBS
ZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMoYmF0Y2hlZE1vdW50Q29tcG9uZW50SW50b05vZGUs
IGNvbXBvbmVudEluc3RhbmNlLCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0
KTtcblxuICAgIHZhciB3cmFwcGVySUQgPSBjb21wb25lbnRJbnN0YW5jZS5faW5zdGFuY2Uucm9v
dElEO1xuICAgIGluc3RhbmNlc0J5UmVhY3RSb290SURbd3JhcHBlcklEXSA9IGNvbXBvbmVudElu
c3RhbmNlO1xuXG4gICAgcmV0dXJuIGNvbXBvbmVudEluc3RhbmNlO1xuICB9LFxuXG4gIC8qKlxu
ICAgKiBSZW5kZXJzIGEgUmVhY3QgY29tcG9uZW50IGludG8gdGhlIERPTSBpbiB0aGUgc3VwcGxp
ZWQgYGNvbnRhaW5lcmAuXG4gICAqXG4gICAqIElmIHRoZSBSZWFjdCBjb21wb25lbnQgd2FzIHBy
ZXZpb3VzbHkgcmVuZGVyZWQgaW50byBgY29udGFpbmVyYCwgdGhpcyB3aWxsXG4gICAqIHBlcmZv
cm0gYW4gdXBkYXRlIG9uIGl0IGFuZCBvbmx5IG11dGF0ZSB0aGUgRE9NIGFzIG5lY2Vzc2FyeSB0
byByZWZsZWN0IHRoZVxuICAgKiBsYXRlc3QgUmVhY3QgY29tcG9uZW50LlxuICAgKlxuICAgKiBA
cGFyYW0ge1JlYWN0Q29tcG9uZW50fSBwYXJlbnRDb21wb25lbnQgVGhlIGNvbmNlcHR1YWwgcGFy
ZW50IG9mIHRoaXMgcmVuZGVyIHRyZWUuXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0
RWxlbWVudCBDb21wb25lbnQgZWxlbWVudCB0byByZW5kZXIuXG4gICAqIEBwYXJhbSB7RE9NRWxl
bWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHJlbmRlciBpbnRvLlxuICAgKiBAcGFyYW0g
ez9mdW5jdGlvbn0gY2FsbGJhY2sgZnVuY3Rpb24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRpb25cbiAg
ICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IENvbXBvbmVudCBpbnN0YW5jZSByZW5kZXJlZCBp
biBgY29udGFpbmVyYC5cbiAgICovXG4gIHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOiBmdW5j
dGlvbiAocGFyZW50Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjaykg
e1xuICAgICEocGFyZW50Q29tcG9uZW50ICE9IG51bGwgJiYgUmVhY3RJbnN0YW5jZU1hcC5oYXMo
cGFyZW50Q29tcG9uZW50KSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAncGFyZW50Q29tcG9uZW50IG11c3QgYmUgYSB2YWxpZCBSZWFj
dCBDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCczOCcpIDogdm9pZCAwO1xuICAgIHJldHVy
biBSZWFjdE1vdW50Ll9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihwYXJlbnRDb21wb25lbnQs
IG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKTtcbiAgfSxcblxuICBfcmVuZGVyU3Vi
dHJlZUludG9Db250YWluZXI6IGZ1bmN0aW9uIChwYXJlbnRDb21wb25lbnQsIG5leHRFbGVtZW50
LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4gICAgUmVhY3RVcGRhdGVRdWV1ZS52YWxpZGF0ZUNh
bGxiYWNrKGNhbGxiYWNrLCAnUmVhY3RET00ucmVuZGVyJyk7XG4gICAgIVJlYWN0LmlzVmFsaWRF
bGVtZW50KG5leHRFbGVtZW50KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdERPTS5yZW5kZXIoKTogSW52YWxpZCBjb21wb25l
bnQgZWxlbWVudC4lcycsIHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ3N0cmluZycgPyBcIiBJbnN0
ZWFkIG9mIHBhc3NpbmcgYSBzdHJpbmcgbGlrZSAnZGl2JywgcGFzcyBcIiArIFwiUmVhY3QuY3Jl
YXRlRWxlbWVudCgnZGl2Jykgb3IgPGRpdiAvPi5cIiA6IHR5cGVvZiBuZXh0RWxlbWVudCA9PT0g
J2Z1bmN0aW9uJyA/ICcgSW5zdGVhZCBvZiBwYXNzaW5nIGEgY2xhc3MgbGlrZSBGb28sIHBhc3Mg
JyArICdSZWFjdC5jcmVhdGVFbGVtZW50KEZvbykgb3IgPEZvbyAvPi4nIDogLy8gQ2hlY2sgaWYg
aXQgcXVhY2tzIGxpa2UgYW4gZWxlbWVudFxuICAgIG5leHRFbGVtZW50ICE9IG51bGwgJiYgbmV4
dEVsZW1lbnQucHJvcHMgIT09IHVuZGVmaW5lZCA/ICcgVGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHVu
aW50ZW50aW9uYWxseSBsb2FkaW5nIHR3byBpbmRlcGVuZGVudCAnICsgJ2NvcGllcyBvZiBSZWFj
dC4nIDogJycpIDogX3Byb2RJbnZhcmlhbnQoJzM5JywgdHlwZW9mIG5leHRFbGVtZW50ID09PSAn
c3RyaW5nJyA/IFwiIEluc3RlYWQgb2YgcGFzc2luZyBhIHN0cmluZyBsaWtlICdkaXYnLCBwYXNz
IFwiICsgXCJSZWFjdC5jcmVhdGVFbGVtZW50KCdkaXYnKSBvciA8ZGl2IC8+LlwiIDogdHlwZW9m
IG5leHRFbGVtZW50ID09PSAnZnVuY3Rpb24nID8gJyBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBjbGFz
cyBsaWtlIEZvbywgcGFzcyAnICsgJ1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9vKSBvciA8Rm9vIC8+
LicgOiBuZXh0RWxlbWVudCAhPSBudWxsICYmIG5leHRFbGVtZW50LnByb3BzICE9PSB1bmRlZmlu
ZWQgPyAnIFRoaXMgbWF5IGJlIGNhdXNlZCBieSB1bmludGVudGlvbmFsbHkgbG9hZGluZyB0d28g
aW5kZXBlbmRlbnQgJyArICdjb3BpZXMgb2YgUmVhY3QuJyA6ICcnKSA6IHZvaWQgMDtcblxuICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjb250YWlu
ZXIgfHwgIWNvbnRhaW5lci50YWdOYW1lIHx8IGNvbnRhaW5lci50YWdOYW1lLnRvVXBwZXJDYXNl
KCkgIT09ICdCT0RZJywgJ3JlbmRlcigpOiBSZW5kZXJpbmcgY29tcG9uZW50cyBkaXJlY3RseSBp
bnRvIGRvY3VtZW50LmJvZHkgaXMgJyArICdkaXNjb3VyYWdlZCwgc2luY2UgaXRzIGNoaWxkcmVu
IGFyZSBvZnRlbiBtYW5pcHVsYXRlZCBieSB0aGlyZC1wYXJ0eSAnICsgJ3NjcmlwdHMgYW5kIGJy
b3dzZXIgZXh0ZW5zaW9ucy4gVGhpcyBtYXkgbGVhZCB0byBzdWJ0bGUgJyArICdyZWNvbmNpbGlh
dGlvbiBpc3N1ZXMuIFRyeSByZW5kZXJpbmcgaW50byBhIGNvbnRhaW5lciBlbGVtZW50IGNyZWF0
ZWQgJyArICdmb3IgeW91ciBhcHAuJykgOiB2b2lkIDA7XG5cbiAgICB2YXIgbmV4dFdyYXBwZWRF
bGVtZW50ID0gUmVhY3QuY3JlYXRlRWxlbWVudChUb3BMZXZlbFdyYXBwZXIsIHtcbiAgICAgIGNo
aWxkOiBuZXh0RWxlbWVudFxuICAgIH0pO1xuXG4gICAgdmFyIG5leHRDb250ZXh0O1xuICAgIGlm
IChwYXJlbnRDb21wb25lbnQpIHtcbiAgICAgIHZhciBwYXJlbnRJbnN0ID0gUmVhY3RJbnN0YW5j
ZU1hcC5nZXQocGFyZW50Q29tcG9uZW50KTtcbiAgICAgIG5leHRDb250ZXh0ID0gcGFyZW50SW5z
dC5fcHJvY2Vzc0NoaWxkQ29udGV4dChwYXJlbnRJbnN0Ll9jb250ZXh0KTtcbiAgICB9IGVsc2Ug
e1xuICAgICAgbmV4dENvbnRleHQgPSBlbXB0eU9iamVjdDtcbiAgICB9XG5cbiAgICB2YXIgcHJl
dkNvbXBvbmVudCA9IGdldFRvcExldmVsV3JhcHBlckluQ29udGFpbmVyKGNvbnRhaW5lcik7XG5c
biAgICBpZiAocHJldkNvbXBvbmVudCkge1xuICAgICAgdmFyIHByZXZXcmFwcGVkRWxlbWVudCA9
IHByZXZDb21wb25lbnQuX2N1cnJlbnRFbGVtZW50O1xuICAgICAgdmFyIHByZXZFbGVtZW50ID0g
cHJldldyYXBwZWRFbGVtZW50LnByb3BzLmNoaWxkO1xuICAgICAgaWYgKHNob3VsZFVwZGF0ZVJl
YWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkpIHtcbiAgICAgICAgdmFyIHB1
YmxpY0luc3QgPSBwcmV2Q29tcG9uZW50Ll9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0
YW5jZSgpO1xuICAgICAgICB2YXIgdXBkYXRlZENhbGxiYWNrID0gY2FsbGJhY2sgJiYgZnVuY3Rp
b24gKCkge1xuICAgICAgICAgIGNhbGxiYWNrLmNhbGwocHVibGljSW5zdCk7XG4gICAgICAgIH07
XG4gICAgICAgIFJlYWN0TW91bnQuX3VwZGF0ZVJvb3RDb21wb25lbnQocHJldkNvbXBvbmVudCwg
bmV4dFdyYXBwZWRFbGVtZW50LCBuZXh0Q29udGV4dCwgY29udGFpbmVyLCB1cGRhdGVkQ2FsbGJh
Y2spO1xuICAgICAgICByZXR1cm4gcHVibGljSW5zdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAg
IFJlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9kZShjb250YWluZXIpO1xuICAgICAgfVxu
ICAgIH1cblxuICAgIHZhciByZWFjdFJvb3RFbGVtZW50ID0gZ2V0UmVhY3RSb290RWxlbWVudElu
Q29udGFpbmVyKGNvbnRhaW5lcik7XG4gICAgdmFyIGNvbnRhaW5lckhhc1JlYWN0TWFya3VwID0g
cmVhY3RSb290RWxlbWVudCAmJiAhIWludGVybmFsR2V0SUQocmVhY3RSb290RWxlbWVudCk7XG4g
ICAgdmFyIGNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkID0gaGFzTm9uUm9vdFJlYWN0Q2hp
bGQoY29udGFpbmVyKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyghY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQsICdyZW5kZXIoLi4uKTogUmVw
bGFjaW5nIFJlYWN0LXJlbmRlcmVkIGNoaWxkcmVuIHdpdGggYSBuZXcgcm9vdCAnICsgJ2NvbXBv
bmVudC4gSWYgeW91IGludGVuZGVkIHRvIHVwZGF0ZSB0aGUgY2hpbGRyZW4gb2YgdGhpcyBub2Rl
LCAnICsgJ3lvdSBzaG91bGQgaW5zdGVhZCBoYXZlIHRoZSBleGlzdGluZyBjaGlsZHJlbiB1cGRh
dGUgdGhlaXIgc3RhdGUgJyArICdhbmQgcmVuZGVyIHRoZSBuZXcgY29tcG9uZW50cyBpbnN0ZWFk
IG9mIGNhbGxpbmcgUmVhY3RET00ucmVuZGVyLicpIDogdm9pZCAwO1xuXG4gICAgICBpZiAoIWNv
bnRhaW5lckhhc1JlYWN0TWFya3VwIHx8IHJlYWN0Um9vdEVsZW1lbnQubmV4dFNpYmxpbmcpIHtc
biAgICAgICAgdmFyIHJvb3RFbGVtZW50U2libGluZyA9IHJlYWN0Um9vdEVsZW1lbnQ7XG4gICAg
ICAgIHdoaWxlIChyb290RWxlbWVudFNpYmxpbmcpIHtcbiAgICAgICAgICBpZiAoaW50ZXJuYWxH
ZXRJRChyb290RWxlbWVudFNpYmxpbmcpKSB7XG4gICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3JlbmRlcigpOiBUYXJnZXQg
bm9kZSBoYXMgbWFya3VwIHJlbmRlcmVkIGJ5IFJlYWN0LCBidXQgdGhlcmUgJyArICdhcmUgdW5y
ZWxhdGVkIG5vZGVzIGFzIHdlbGwuIFRoaXMgaXMgbW9zdCBjb21tb25seSBjYXVzZWQgYnkgJyAr
ICd3aGl0ZS1zcGFjZSBpbnNlcnRlZCBhcm91bmQgc2VydmVyLXJlbmRlcmVkIG1hcmt1cC4nKSA6
IHZvaWQgMDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICByb290
RWxlbWVudFNpYmxpbmcgPSByb290RWxlbWVudFNpYmxpbmcubmV4dFNpYmxpbmc7XG4gICAgICAg
IH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc2hvdWxkUmV1c2VNYXJrdXAgPSBjb250YWlu
ZXJIYXNSZWFjdE1hcmt1cCAmJiAhcHJldkNvbXBvbmVudCAmJiAhY29udGFpbmVySGFzTm9uUm9v
dFJlYWN0Q2hpbGQ7XG4gICAgdmFyIGNvbXBvbmVudCA9IFJlYWN0TW91bnQuX3JlbmRlck5ld1Jv
b3RDb21wb25lbnQobmV4dFdyYXBwZWRFbGVtZW50LCBjb250YWluZXIsIHNob3VsZFJldXNlTWFy
a3VwLCBuZXh0Q29udGV4dCkuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7
XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjay5jYWxsKGNvbXBvbmVudCk7XG4g
ICAgfVxuICAgIHJldHVybiBjb21wb25lbnQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMg
YSBSZWFjdCBjb21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBzdXBwbGllZCBgY29udGFpbmVy
YC5cbiAgICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxl
dmVsLWFwaS5odG1sI3JlYWN0ZG9tLnJlbmRlclxuICAgKlxuICAgKiBJZiB0aGUgUmVhY3QgY29t
cG9uZW50IHdhcyBwcmV2aW91c2x5IHJlbmRlcmVkIGludG8gYGNvbnRhaW5lcmAsIHRoaXMgd2ls
bFxuICAgKiBwZXJmb3JtIGFuIHVwZGF0ZSBvbiBpdCBhbmQgb25seSBtdXRhdGUgdGhlIERPTSBh
cyBuZWNlc3NhcnkgdG8gcmVmbGVjdCB0aGVcbiAgICogbGF0ZXN0IFJlYWN0IGNvbXBvbmVudC5c
biAgICpcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IENvbXBvbmVudCBl
bGVtZW50IHRvIHJlbmRlci5cbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9N
IGVsZW1lbnQgdG8gcmVuZGVyIGludG8uXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFj
ayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvblxuICAgKiBAcmV0dXJuIHtSZWFjdENv
bXBvbmVudH0gQ29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIGBjb250YWluZXJgLlxuICAg
Ki9cbiAgcmVuZGVyOiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2sp
IHtcbiAgICByZXR1cm4gUmVhY3RNb3VudC5fcmVuZGVyU3VidHJlZUludG9Db250YWluZXIobnVs
bCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spO1xuICB9LFxuXG4gIC8qKlxuICAg
KiBVbm1vdW50cyBhbmQgZGVzdHJveXMgdGhlIFJlYWN0IGNvbXBvbmVudCByZW5kZXJlZCBpbiB0
aGUgYGNvbnRhaW5lcmAuXG4gICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFj
dC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdGRvbS51bm1vdW50Y29tcG9uZW50YXRub2Rl
XG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IGNv
bnRhaW5pbmcgYSBSZWFjdCBjb21wb25lbnQuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUg
aWYgYSBjb21wb25lbnQgd2FzIGZvdW5kIGluIGFuZCB1bm1vdW50ZWQgZnJvbVxuICAgKiAgICAg
ICAgICAgICAgICAgICBgY29udGFpbmVyYFxuICAgKi9cbiAgdW5tb3VudENvbXBvbmVudEF0Tm9k
ZTogZnVuY3Rpb24gKGNvbnRhaW5lcikge1xuICAgIC8vIFZhcmlvdXMgcGFydHMgb2Ygb3VyIGNv
ZGUgKHN1Y2ggYXMgUmVhY3RDb21wb3NpdGVDb21wb25lbnQnc1xuICAgIC8vIF9yZW5kZXJWYWxp
ZGF0ZWRDb21wb25lbnQpIGFzc3VtZSB0aGF0IGNhbGxzIHRvIHJlbmRlciBhcmVuJ3QgbmVzdGVk
O1xuICAgIC8vIHZlcmlmeSB0aGF0IHRoYXQncyB0aGUgY2FzZS4gKFN0cmljdGx5IHNwZWFraW5n
LCB1bm1vdW50aW5nIHdvbid0IGNhdXNlIGFcbiAgICAvLyByZW5kZXIgYnV0IHdlIHN0aWxsIGRv
bid0IGV4cGVjdCB0byBiZSBpbiBhIHJlbmRlciBjYWxsIGhlcmUuKVxuICAgIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1
cnJlbnQgPT0gbnVsbCwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoKTogUmVuZGVyIG1ldGhvZHMg
c2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiAnICsgJ29mIHByb3BzIGFuZCBzdGF0ZTsgdHJpZ2dl
cmluZyBuZXN0ZWQgY29tcG9uZW50IHVwZGF0ZXMgZnJvbSByZW5kZXIgJyArICdpcyBub3QgYWxs
b3dlZC4gSWYgbmVjZXNzYXJ5LCB0cmlnZ2VyIG5lc3RlZCB1cGRhdGVzIGluICcgKyAnY29tcG9u
ZW50RGlkVXBkYXRlLiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAlcy4nLCBSZWFjdEN1cnJl
bnRPd25lci5jdXJyZW50ICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpIHx8
ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXG4gICAgIWlzVmFsaWRDb250
YWluZXIoY29udGFpbmVyKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICd1bm1vdW50Q29tcG9uZW50QXROb2RlKC4uLik6IFRhcmdldCBj
b250YWluZXIgaXMgbm90IGEgRE9NIGVsZW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnNDAnKSA6
IHZvaWQgMDtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
Zyghbm9kZUlzUmVuZGVyZWRCeU90aGVySW5zdGFuY2UoY29udGFpbmVyKSwgXCJ1bm1vdW50Q29t
cG9uZW50QXROb2RlKCk6IFRoZSBub2RlIHlvdSdyZSBhdHRlbXB0aW5nIHRvIHVubW91bnQgXCIg
KyAnd2FzIHJlbmRlcmVkIGJ5IGFub3RoZXIgY29weSBvZiBSZWFjdC4nKSA6IHZvaWQgMDtcbiAg
ICB9XG5cbiAgICB2YXIgcHJldkNvbXBvbmVudCA9IGdldFRvcExldmVsV3JhcHBlckluQ29udGFp
bmVyKGNvbnRhaW5lcik7XG4gICAgaWYgKCFwcmV2Q29tcG9uZW50KSB7XG4gICAgICAvLyBDaGVj
ayBpZiB0aGUgbm9kZSBiZWluZyB1bm1vdW50ZWQgd2FzIHJlbmRlcmVkIGJ5IFJlYWN0LCBidXQg
aXNuJ3QgYVxuICAgICAgLy8gcm9vdCBub2RlLlxuICAgICAgdmFyIGNvbnRhaW5lckhhc05vblJv
b3RSZWFjdENoaWxkID0gaGFzTm9uUm9vdFJlYWN0Q2hpbGQoY29udGFpbmVyKTtcblxuICAgICAg
Ly8gQ2hlY2sgaWYgdGhlIGNvbnRhaW5lciBpdHNlbGYgaXMgYSBSZWFjdCByb290IG5vZGUuXG4g
ICAgICB2YXIgaXNDb250YWluZXJSZWFjdFJvb3QgPSBjb250YWluZXIubm9kZVR5cGUgPT09IDEg
JiYgY29udGFpbmVyLmhhc0F0dHJpYnV0ZShST09UX0FUVFJfTkFNRSk7XG5cbiAgICAgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjb250YWluZXJIYXNOb25S
b290UmVhY3RDaGlsZCwgXCJ1bm1vdW50Q29tcG9uZW50QXROb2RlKCk6IFRoZSBub2RlIHlvdSdy
ZSBhdHRlbXB0aW5nIHRvIHVubW91bnQgXCIgKyAnd2FzIHJlbmRlcmVkIGJ5IFJlYWN0IGFuZCBp
cyBub3QgYSB0b3AtbGV2ZWwgY29udGFpbmVyLiAlcycsIGlzQ29udGFpbmVyUmVhY3RSb290ID8g
J1lvdSBtYXkgaGF2ZSBhY2NpZGVudGFsbHkgcGFzc2VkIGluIGEgUmVhY3Qgcm9vdCBub2RlIGlu
c3RlYWQgJyArICdvZiBpdHMgY29udGFpbmVyLicgOiAnSW5zdGVhZCwgaGF2ZSB0aGUgcGFyZW50
IGNvbXBvbmVudCB1cGRhdGUgaXRzIHN0YXRlIGFuZCAnICsgJ3JlcmVuZGVyIGluIG9yZGVyIHRv
IHJlbW92ZSB0aGlzIGNvbXBvbmVudC4nKSA6IHZvaWQgMDtcbiAgICAgIH1cblxuICAgICAgcmV0
dXJuIGZhbHNlO1xuICAgIH1cbiAgICBkZWxldGUgaW5zdGFuY2VzQnlSZWFjdFJvb3RJRFtwcmV2
Q29tcG9uZW50Ll9pbnN0YW5jZS5yb290SURdO1xuICAgIFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBk
YXRlcyh1bm1vdW50Q29tcG9uZW50RnJvbU5vZGUsIHByZXZDb21wb25lbnQsIGNvbnRhaW5lciwg
ZmFsc2UpO1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuXG4gIF9tb3VudEltYWdlSW50b05vZGU6
IGZ1bmN0aW9uIChtYXJrdXAsIGNvbnRhaW5lciwgaW5zdGFuY2UsIHNob3VsZFJldXNlTWFya3Vw
LCB0cmFuc2FjdGlvbikge1xuICAgICFpc1ZhbGlkQ29udGFpbmVyKGNvbnRhaW5lcikgPyBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnbW91
bnRDb21wb25lbnRJbnRvTm9kZSguLi4pOiBUYXJnZXQgY29udGFpbmVyIGlzIG5vdCB2YWxpZC4n
KSA6IF9wcm9kSW52YXJpYW50KCc0MScpIDogdm9pZCAwO1xuXG4gICAgaWYgKHNob3VsZFJldXNl
TWFya3VwKSB7XG4gICAgICB2YXIgcm9vdEVsZW1lbnQgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5D
b250YWluZXIoY29udGFpbmVyKTtcbiAgICAgIGlmIChSZWFjdE1hcmt1cENoZWNrc3VtLmNhblJl
dXNlTWFya3VwKG1hcmt1cCwgcm9vdEVsZW1lbnQpKSB7XG4gICAgICAgIFJlYWN0RE9NQ29tcG9u
ZW50VHJlZS5wcmVjYWNoZU5vZGUoaW5zdGFuY2UsIHJvb3RFbGVtZW50KTtcbiAgICAgICAgcmV0
dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGNoZWNrc3VtID0gcm9vdEVsZW1lbnQu
Z2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1FKTtcbiAg
ICAgICAgcm9vdEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hF
Q0tTVU1fQVRUUl9OQU1FKTtcblxuICAgICAgICB2YXIgcm9vdE1hcmt1cCA9IHJvb3RFbGVtZW50
Lm91dGVySFRNTDtcbiAgICAgICAgcm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlKFJlYWN0TWFya3Vw
Q2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1FLCBjaGVja3N1bSk7XG5cbiAgICAgICAgdmFyIG5v
cm1hbGl6ZWRNYXJrdXAgPSBtYXJrdXA7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgLy8gYmVjYXVzZSByb290TWFya3VwIGlz
IHJldHJpZXZlZCBmcm9tIHRoZSBET00sIHZhcmlvdXMgbm9ybWFsaXphdGlvbnNcbiAgICAgICAg
ICAvLyB3aWxsIGhhdmUgb2NjdXJyZWQgd2hpY2ggd2lsbCBub3QgYmUgcHJlc2VudCBpbiBgbWFy
a3VwYC4gSGVyZSxcbiAgICAgICAgICAvLyBpbnNlcnQgbWFya3VwIGludG8gYSA8ZGl2PiBvciA8
aWZyYW1lPiBkZXBlbmRpbmcgb24gdGhlIGNvbnRhaW5lclxuICAgICAgICAgIC8vIHR5cGUgdG8g
cGVyZm9ybSB0aGUgc2FtZSBub3JtYWxpemF0aW9ucyBiZWZvcmUgY29tcGFyaW5nLlxuICAgICAg
ICAgIHZhciBub3JtYWxpemVyO1xuICAgICAgICAgIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09
IEVMRU1FTlRfTk9ERV9UWVBFKSB7XG4gICAgICAgICAgICBub3JtYWxpemVyID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICBub3JtYWxpemVyLmlubmVySFRNTCA9
IG1hcmt1cDtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAgPSBub3JtYWxpemVyLmlubmVy
SFRNTDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9ybWFsaXplciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChub3JtYWxpemVyKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZXIuY29udGVudERv
Y3VtZW50LndyaXRlKG1hcmt1cCk7XG4gICAgICAgICAgICBub3JtYWxpemVkTWFya3VwID0gbm9y
bWFsaXplci5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm91dGVySFRNTDtcbiAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobm9ybWFsaXplcik7XG4gICAgICAgICAg
fVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGRpZmZJbmRleCA9IGZpcnN0RGlmZmVyZW5jZUlu
ZGV4KG5vcm1hbGl6ZWRNYXJrdXAsIHJvb3RNYXJrdXApO1xuICAgICAgICB2YXIgZGlmZmVyZW5j
ZSA9ICcgKGNsaWVudCkgJyArIG5vcm1hbGl6ZWRNYXJrdXAuc3Vic3RyaW5nKGRpZmZJbmRleCAt
IDIwLCBkaWZmSW5kZXggKyAyMCkgKyAnXFxuIChzZXJ2ZXIpICcgKyByb290TWFya3VwLnN1YnN0
cmluZyhkaWZmSW5kZXggLSAyMCwgZGlmZkluZGV4ICsgMjApO1xuXG4gICAgICAgICEoY29udGFp
bmVyLm5vZGVUeXBlICE9PSBET0NfTk9ERV9UWVBFKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdZb3VcXCdyZSB0cnlpbmcgdG8gcmVu
ZGVyIGEgY29tcG9uZW50IHRvIHRoZSBkb2N1bWVudCB1c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGJ1
dCB0aGUgY2hlY2tzdW0gd2FzIGludmFsaWQuIFRoaXMgdXN1YWxseSBtZWFucyB5b3UgcmVuZGVy
ZWQgYSBkaWZmZXJlbnQgY29tcG9uZW50IHR5cGUgb3IgcHJvcHMgb24gdGhlIGNsaWVudCBmcm9t
IHRoZSBvbmUgb24gdGhlIHNlcnZlciwgb3IgeW91ciByZW5kZXIoKSBtZXRob2RzIGFyZSBpbXB1
cmUuIFJlYWN0IGNhbm5vdCBoYW5kbGUgdGhpcyBjYXNlIGR1ZSB0byBjcm9zcy1icm93c2VyIHF1
aXJrcyBieSByZW5kZXJpbmcgYXQgdGhlIGRvY3VtZW50IHJvb3QuIFlvdSBzaG91bGQgbG9vayBm
b3IgZW52aXJvbm1lbnQgZGVwZW5kZW50IGNvZGUgaW4geW91ciBjb21wb25lbnRzIGFuZCBlbnN1
cmUgdGhlIHByb3BzIGFyZSB0aGUgc2FtZSBjbGllbnQgYW5kIHNlcnZlciBzaWRlOlxcbiVzJywg
ZGlmZmVyZW5jZSkgOiBfcHJvZEludmFyaWFudCgnNDInLCBkaWZmZXJlbmNlKSA6IHZvaWQgMDtc
blxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KGZhbHNlLCAnUmVhY3QgYXR0ZW1wdGVkIHRvIHJldXNlIG1hcmt1cCBpbiBhIGNvbnRhaW5lciBi
dXQgdGhlICcgKyAnY2hlY2tzdW0gd2FzIGludmFsaWQuIFRoaXMgZ2VuZXJhbGx5IG1lYW5zIHRo
YXQgeW91IGFyZSAnICsgJ3VzaW5nIHNlcnZlciByZW5kZXJpbmcgYW5kIHRoZSBtYXJrdXAgZ2Vu
ZXJhdGVkIG9uIHRoZSAnICsgJ3NlcnZlciB3YXMgbm90IHdoYXQgdGhlIGNsaWVudCB3YXMgZXhw
ZWN0aW5nLiBSZWFjdCBpbmplY3RlZCAnICsgJ25ldyBtYXJrdXAgdG8gY29tcGVuc2F0ZSB3aGlj
aCB3b3JrcyBidXQgeW91IGhhdmUgbG9zdCBtYW55ICcgKyAnb2YgdGhlIGJlbmVmaXRzIG9mIHNl
cnZlciByZW5kZXJpbmcuIEluc3RlYWQsIGZpZ3VyZSBvdXQgJyArICd3aHkgdGhlIG1hcmt1cCBi
ZWluZyBnZW5lcmF0ZWQgaXMgZGlmZmVyZW50IG9uIHRoZSBjbGllbnQgJyArICdvciBzZXJ2ZXI6
XFxuJXMnLCBkaWZmZXJlbmNlKSA6IHZvaWQgMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1c
blxuICAgICEoY29udGFpbmVyLm5vZGVUeXBlICE9PSBET0NfTk9ERV9UWVBFKSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdZb3VcXCdy
ZSB0cnlpbmcgdG8gcmVuZGVyIGEgY29tcG9uZW50IHRvIHRoZSBkb2N1bWVudCBidXQgeW91IGRp
ZG5cXCd0IHVzZSBzZXJ2ZXIgcmVuZGVyaW5nLiBXZSBjYW5cXCd0IGRvIHRoaXMgd2l0aG91dCB1
c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGR1ZSB0byBjcm9zcy1icm93c2VyIHF1aXJrcy4gU2VlIFJl
YWN0RE9NU2VydmVyLnJlbmRlclRvU3RyaW5nKCkgZm9yIHNlcnZlciByZW5kZXJpbmcuJykgOiBf
cHJvZEludmFyaWFudCgnNDMnKSA6IHZvaWQgMDtcblxuICAgIGlmICh0cmFuc2FjdGlvbi51c2VD
cmVhdGVFbGVtZW50KSB7XG4gICAgICB3aGlsZSAoY29udGFpbmVyLmxhc3RDaGlsZCkge1xuICAg
ICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RDaGlsZCk7XG4gICAgICB9
XG4gICAgICBET01MYXp5VHJlZS5pbnNlcnRUcmVlQmVmb3JlKGNvbnRhaW5lciwgbWFya3VwLCBu
dWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SW5uZXJIVE1MKGNvbnRhaW5lciwgbWFya3Vw
KTtcbiAgICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNoZU5vZGUoaW5zdGFuY2UsIGNv
bnRhaW5lci5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIGhvc3ROb2RlID0gUmVhY3RET01Db21w
b25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUoY29udGFpbmVyLmZpcnN0Q2hpbGQpO1xuICAg
ICAgaWYgKGhvc3ROb2RlLl9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICAgIGluc3RhbmNlSUQ6
IGhvc3ROb2RlLl9kZWJ1Z0lELFxuICAgICAgICAgIHR5cGU6ICdtb3VudCcsXG4gICAgICAgICAg
cGF5bG9hZDogbWFya3VwLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxu
ICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0TW91bnQ7XG5cblxuLy8vLy8vLy8vLy8v
Ly8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xp
Yi9SZWFjdE1vdW50LmpzXG4vLyBtb2R1bGUgaWQgPSA4MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAi
LCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIg
UmVhY3ROb2RlVHlwZXMgPSByZXF1aXJlKCcuL1JlYWN0Tm9kZVR5cGVzJyk7XG5cbmZ1bmN0aW9u
IGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlKGluc3QpIHtcbiAgdmFyIHR5cGU7XG5cbiAg
d2hpbGUgKCh0eXBlID0gaW5zdC5fcmVuZGVyZWROb2RlVHlwZSkgPT09IFJlYWN0Tm9kZVR5cGVz
LkNPTVBPU0lURSkge1xuICAgIGluc3QgPSBpbnN0Ll9yZW5kZXJlZENvbXBvbmVudDtcbiAgfVxu
XG4gIGlmICh0eXBlID09PSBSZWFjdE5vZGVUeXBlcy5IT1NUKSB7XG4gICAgcmV0dXJuIGluc3Qu
X3JlbmRlcmVkQ29tcG9uZW50O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFJlYWN0Tm9kZVR5cGVz
LkVNUFRZKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBn
ZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8v
IFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2dldEhvc3RD
b21wb25lbnRGcm9tQ29tcG9zaXRlLmpzXG4vLyBtb2R1bGUgaWQgPSA4M1xuLy8gbW9kdWxlIGNo
dW5rcyA9IDAiLCJpbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICdsb2Rhc2gtZXMvaXNQbGFpbk9i
amVjdCc7XG5pbXBvcnQgJCRvYnNlcnZhYmxlIGZyb20gJ3N5bWJvbC1vYnNlcnZhYmxlJztcblxu
LyoqXG4gKiBUaGVzZSBhcmUgcHJpdmF0ZSBhY3Rpb24gdHlwZXMgcmVzZXJ2ZWQgYnkgUmVkdXgu
XG4gKiBGb3IgYW55IHVua25vd24gYWN0aW9ucywgeW91IG11c3QgcmV0dXJuIHRoZSBjdXJyZW50
IHN0YXRlLlxuICogSWYgdGhlIGN1cnJlbnQgc3RhdGUgaXMgdW5kZWZpbmVkLCB5b3UgbXVzdCBy
ZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUuXG4gKiBEbyBub3QgcmVmZXJlbmNlIHRoZXNlIGFjdGlv
biB0eXBlcyBkaXJlY3RseSBpbiB5b3VyIGNvZGUuXG4gKi9cbmV4cG9ydCB2YXIgQWN0aW9uVHlw
ZXMgPSB7XG4gIElOSVQ6ICdAQHJlZHV4L0lOSVQnXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBS
ZWR1eCBzdG9yZSB0aGF0IGhvbGRzIHRoZSBzdGF0ZSB0cmVlLlxuICAgKiBUaGUgb25seSB3YXkg
dG8gY2hhbmdlIHRoZSBkYXRhIGluIHRoZSBzdG9yZSBpcyB0byBjYWxsIGBkaXNwYXRjaCgpYCBv
biBpdC5cbiAgICpcbiAgICogVGhlcmUgc2hvdWxkIG9ubHkgYmUgYSBzaW5nbGUgc3RvcmUgaW4g
eW91ciBhcHAuIFRvIHNwZWNpZnkgaG93IGRpZmZlcmVudFxuICAgKiBwYXJ0cyBvZiB0aGUgc3Rh
dGUgdHJlZSByZXNwb25kIHRvIGFjdGlvbnMsIHlvdSBtYXkgY29tYmluZSBzZXZlcmFsIHJlZHVj
ZXJzXG4gICAqIGludG8gYSBzaW5nbGUgcmVkdWNlciBmdW5jdGlvbiBieSB1c2luZyBgY29tYmlu
ZVJlZHVjZXJzYC5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcmVkdWNlciBBIGZ1bmN0
aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV4dCBzdGF0ZSB0cmVlLCBnaXZlblxuICAgKiB0aGUgY3Vy
cmVudCBzdGF0ZSB0cmVlIGFuZCB0aGUgYWN0aW9uIHRvIGhhbmRsZS5cbiAgICpcbiAgICogQHBh
cmFtIHthbnl9IFtwcmVsb2FkZWRTdGF0ZV0gVGhlIGluaXRpYWwgc3RhdGUuIFlvdSBtYXkgb3B0
aW9uYWxseSBzcGVjaWZ5IGl0XG4gICAqIHRvIGh5ZHJhdGUgdGhlIHN0YXRlIGZyb20gdGhlIHNl
cnZlciBpbiB1bml2ZXJzYWwgYXBwcywgb3IgdG8gcmVzdG9yZSBhXG4gICAqIHByZXZpb3VzbHkg
c2VyaWFsaXplZCB1c2VyIHNlc3Npb24uXG4gICAqIElmIHlvdSB1c2UgYGNvbWJpbmVSZWR1Y2Vy
c2AgdG8gcHJvZHVjZSB0aGUgcm9vdCByZWR1Y2VyIGZ1bmN0aW9uLCB0aGlzIG11c3QgYmVcbiAg
ICogYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgc2hhcGUgYXMgYGNvbWJpbmVSZWR1Y2Vyc2Aga2V5
cy5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2VuaGFuY2VyXSBUaGUgc3RvcmUgZW5o
YW5jZXIuIFlvdSBtYXkgb3B0aW9uYWxseSBzcGVjaWZ5IGl0XG4gICAqIHRvIGVuaGFuY2UgdGhl
IHN0b3JlIHdpdGggdGhpcmQtcGFydHkgY2FwYWJpbGl0aWVzIHN1Y2ggYXMgbWlkZGxld2FyZSxc
biAgICogdGltZSB0cmF2ZWwsIHBlcnNpc3RlbmNlLCBldGMuIFRoZSBvbmx5IHN0b3JlIGVuaGFu
Y2VyIHRoYXQgc2hpcHMgd2l0aCBSZWR1eFxuICAgKiBpcyBgYXBwbHlNaWRkbGV3YXJlKClgLlxu
ICAgKlxuICAgKiBAcmV0dXJucyB7U3RvcmV9IEEgUmVkdXggc3RvcmUgdGhhdCBsZXRzIHlvdSBy
ZWFkIHRoZSBzdGF0ZSwgZGlzcGF0Y2ggYWN0aW9uc1xuICAgKiBhbmQgc3Vic2NyaWJlIHRvIGNo
YW5nZXMuXG4gICAqL1xufTtleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVTdG9yZShyZWR1
Y2VyLCBwcmVsb2FkZWRTdGF0ZSwgZW5oYW5jZXIpIHtcbiAgdmFyIF9yZWYyO1xuXG4gIGlmICh0
eXBlb2YgcHJlbG9hZGVkU3RhdGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGVuaGFuY2VyID09
PSAndW5kZWZpbmVkJykge1xuICAgIGVuaGFuY2VyID0gcHJlbG9hZGVkU3RhdGU7XG4gICAgcHJl
bG9hZGVkU3RhdGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAodHlwZW9mIGVuaGFuY2VyICE9
PSAndW5kZWZpbmVkJykge1xuICAgIGlmICh0eXBlb2YgZW5oYW5jZXIgIT09ICdmdW5jdGlvbicp
IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgdGhlIGVuaGFuY2VyIHRvIGJlIGEg
ZnVuY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVuaGFuY2VyKGNyZWF0ZVN0b3JlKShy
ZWR1Y2VyLCBwcmVsb2FkZWRTdGF0ZSk7XG4gIH1cblxuICBpZiAodHlwZW9mIHJlZHVjZXIgIT09
ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHRoZSByZWR1Y2Vy
IHRvIGJlIGEgZnVuY3Rpb24uJyk7XG4gIH1cblxuICB2YXIgY3VycmVudFJlZHVjZXIgPSByZWR1
Y2VyO1xuICB2YXIgY3VycmVudFN0YXRlID0gcHJlbG9hZGVkU3RhdGU7XG4gIHZhciBjdXJyZW50
TGlzdGVuZXJzID0gW107XG4gIHZhciBuZXh0TGlzdGVuZXJzID0gY3VycmVudExpc3RlbmVycztc
biAgdmFyIGlzRGlzcGF0Y2hpbmcgPSBmYWxzZTtcblxuICBmdW5jdGlvbiBlbnN1cmVDYW5NdXRh
dGVOZXh0TGlzdGVuZXJzKCkge1xuICAgIGlmIChuZXh0TGlzdGVuZXJzID09PSBjdXJyZW50TGlz
dGVuZXJzKSB7XG4gICAgICBuZXh0TGlzdGVuZXJzID0gY3VycmVudExpc3RlbmVycy5zbGljZSgp
O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyB0aGUgc3RhdGUgdHJlZSBtYW5hZ2Vk
IGJ5IHRoZSBzdG9yZS5cbiAgICpcbiAgICogQHJldHVybnMge2FueX0gVGhlIGN1cnJlbnQgc3Rh
dGUgdHJlZSBvZiB5b3VyIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0U3RhdGUo
KSB7XG4gICAgcmV0dXJuIGN1cnJlbnRTdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEg
Y2hhbmdlIGxpc3RlbmVyLiBJdCB3aWxsIGJlIGNhbGxlZCBhbnkgdGltZSBhbiBhY3Rpb24gaXMg
ZGlzcGF0Y2hlZCxcbiAgICogYW5kIHNvbWUgcGFydCBvZiB0aGUgc3RhdGUgdHJlZSBtYXkgcG90
ZW50aWFsbHkgaGF2ZSBjaGFuZ2VkLiBZb3UgbWF5IHRoZW5cbiAgICogY2FsbCBgZ2V0U3RhdGUo
KWAgdG8gcmVhZCB0aGUgY3VycmVudCBzdGF0ZSB0cmVlIGluc2lkZSB0aGUgY2FsbGJhY2suXG4g
ICAqXG4gICAqIFlvdSBtYXkgY2FsbCBgZGlzcGF0Y2goKWAgZnJvbSBhIGNoYW5nZSBsaXN0ZW5l
ciwgd2l0aCB0aGUgZm9sbG93aW5nXG4gICAqIGNhdmVhdHM6XG4gICAqXG4gICAqIDEuIFRoZSBz
dWJzY3JpcHRpb25zIGFyZSBzbmFwc2hvdHRlZCBqdXN0IGJlZm9yZSBldmVyeSBgZGlzcGF0Y2go
KWAgY2FsbC5cbiAgICogSWYgeW91IHN1YnNjcmliZSBvciB1bnN1YnNjcmliZSB3aGlsZSB0aGUg
bGlzdGVuZXJzIGFyZSBiZWluZyBpbnZva2VkLCB0aGlzXG4gICAqIHdpbGwgbm90IGhhdmUgYW55
IGVmZmVjdCBvbiB0aGUgYGRpc3BhdGNoKClgIHRoYXQgaXMgY3VycmVudGx5IGluIHByb2dyZXNz
LlxuICAgKiBIb3dldmVyLCB0aGUgbmV4dCBgZGlzcGF0Y2goKWAgY2FsbCwgd2hldGhlciBuZXN0
ZWQgb3Igbm90LCB3aWxsIHVzZSBhIG1vcmVcbiAgICogcmVjZW50IHNuYXBzaG90IG9mIHRoZSBz
dWJzY3JpcHRpb24gbGlzdC5cbiAgICpcbiAgICogMi4gVGhlIGxpc3RlbmVyIHNob3VsZCBub3Qg
ZXhwZWN0IHRvIHNlZSBhbGwgc3RhdGUgY2hhbmdlcywgYXMgdGhlIHN0YXRlXG4gICAqIG1pZ2h0
IGhhdmUgYmVlbiB1cGRhdGVkIG11bHRpcGxlIHRpbWVzIGR1cmluZyBhIG5lc3RlZCBgZGlzcGF0
Y2goKWAgYmVmb3JlXG4gICAqIHRoZSBsaXN0ZW5lciBpcyBjYWxsZWQuIEl0IGlzLCBob3dldmVy
LCBndWFyYW50ZWVkIHRoYXQgYWxsIHN1YnNjcmliZXJzXG4gICAqIHJlZ2lzdGVyZWQgYmVmb3Jl
IHRoZSBgZGlzcGF0Y2goKWAgc3RhcnRlZCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBsYXRlc3Rc
biAgICogc3RhdGUgYnkgdGhlIHRpbWUgaXQgZXhpdHMuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVu
Y3Rpb259IGxpc3RlbmVyIEEgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCBvbiBldmVyeSBkaXNwYXRj
aC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBBIGZ1bmN0aW9uIHRvIHJlbW92ZSB0aGlzIGNo
YW5nZSBsaXN0ZW5lci5cbiAgICovXG4gIGZ1bmN0aW9uIHN1YnNjcmliZShsaXN0ZW5lcikge1xu
ICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5l
dyBFcnJvcignRXhwZWN0ZWQgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9XG5c
biAgICB2YXIgaXNTdWJzY3JpYmVkID0gdHJ1ZTtcblxuICAgIGVuc3VyZUNhbk11dGF0ZU5leHRM
aXN0ZW5lcnMoKTtcbiAgICBuZXh0TGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuXG4gICAgcmV0
dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgICAgaWYgKCFpc1N1YnNjcmliZWQpIHtc
biAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpc1N1YnNjcmliZWQgPSBmYWxzZTtc
blxuICAgICAgZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3RlbmVycygpO1xuICAgICAgdmFyIGluZGV4
ID0gbmV4dExpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcbiAgICAgIG5leHRMaXN0ZW5lcnMu
c3BsaWNlKGluZGV4LCAxKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoZXMg
YW4gYWN0aW9uLiBJdCBpcyB0aGUgb25seSB3YXkgdG8gdHJpZ2dlciBhIHN0YXRlIGNoYW5nZS5c
biAgICpcbiAgICogVGhlIGByZWR1Y2VyYCBmdW5jdGlvbiwgdXNlZCB0byBjcmVhdGUgdGhlIHN0
b3JlLCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZVxuICAgKiBjdXJyZW50IHN0YXRlIHRyZWUgYW5k
IHRoZSBnaXZlbiBgYWN0aW9uYC4gSXRzIHJldHVybiB2YWx1ZSB3aWxsXG4gICAqIGJlIGNvbnNp
ZGVyZWQgdGhlICoqbmV4dCoqIHN0YXRlIG9mIHRoZSB0cmVlLCBhbmQgdGhlIGNoYW5nZSBsaXN0
ZW5lcnNcbiAgICogd2lsbCBiZSBub3RpZmllZC5cbiAgICpcbiAgICogVGhlIGJhc2UgaW1wbGVt
ZW50YXRpb24gb25seSBzdXBwb3J0cyBwbGFpbiBvYmplY3QgYWN0aW9ucy4gSWYgeW91IHdhbnQg
dG9cbiAgICogZGlzcGF0Y2ggYSBQcm9taXNlLCBhbiBPYnNlcnZhYmxlLCBhIHRodW5rLCBvciBz
b21ldGhpbmcgZWxzZSwgeW91IG5lZWQgdG9cbiAgICogd3JhcCB5b3VyIHN0b3JlIGNyZWF0aW5n
IGZ1bmN0aW9uIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgbWlkZGxld2FyZS4gRm9yXG4gICAqIGV4
YW1wbGUsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGByZWR1eC10aHVua2AgcGFja2Fn
ZS4gRXZlbiB0aGVcbiAgICogbWlkZGxld2FyZSB3aWxsIGV2ZW50dWFsbHkgZGlzcGF0Y2ggcGxh
aW4gb2JqZWN0IGFjdGlvbnMgdXNpbmcgdGhpcyBtZXRob2QuXG4gICAqXG4gICAqIEBwYXJhbSB7
T2JqZWN0fSBhY3Rpb24gQSBwbGFpbiBvYmplY3QgcmVwcmVzZW50aW5nIOKAnHdoYXQgY2hhbmdl
ZOKAnS4gSXQgaXNcbiAgICogYSBnb29kIGlkZWEgdG8ga2VlcCBhY3Rpb25zIHNlcmlhbGl6YWJs
ZSBzbyB5b3UgY2FuIHJlY29yZCBhbmQgcmVwbGF5IHVzZXJcbiAgICogc2Vzc2lvbnMsIG9yIHVz
ZSB0aGUgdGltZSB0cmF2ZWxsaW5nIGByZWR1eC1kZXZ0b29sc2AuIEFuIGFjdGlvbiBtdXN0IGhh
dmVcbiAgICogYSBgdHlwZWAgcHJvcGVydHkgd2hpY2ggbWF5IG5vdCBiZSBgdW5kZWZpbmVkYC4g
SXQgaXMgYSBnb29kIGlkZWEgdG8gdXNlXG4gICAqIHN0cmluZyBjb25zdGFudHMgZm9yIGFjdGlv
biB0eXBlcy5cbiAgICpcbiAgICogQHJldHVybnMge09iamVjdH0gRm9yIGNvbnZlbmllbmNlLCB0
aGUgc2FtZSBhY3Rpb24gb2JqZWN0IHlvdSBkaXNwYXRjaGVkLlxuICAgKlxuICAgKiBOb3RlIHRo
YXQsIGlmIHlvdSB1c2UgYSBjdXN0b20gbWlkZGxld2FyZSwgaXQgbWF5IHdyYXAgYGRpc3BhdGNo
KClgIHRvXG4gICAqIHJldHVybiBzb21ldGhpbmcgZWxzZSAoZm9yIGV4YW1wbGUsIGEgUHJvbWlz
ZSB5b3UgY2FuIGF3YWl0KS5cbiAgICovXG4gIGZ1bmN0aW9uIGRpc3BhdGNoKGFjdGlvbikge1xu
ICAgIGlmICghaXNQbGFpbk9iamVjdChhY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3Io
J0FjdGlvbnMgbXVzdCBiZSBwbGFpbiBvYmplY3RzLiAnICsgJ1VzZSBjdXN0b20gbWlkZGxld2Fy
ZSBmb3IgYXN5bmMgYWN0aW9ucy4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGFjdGlvbi50
eXBlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY3Rpb25zIG1h
eSBub3QgaGF2ZSBhbiB1bmRlZmluZWQgXCJ0eXBlXCIgcHJvcGVydHkuICcgKyAnSGF2ZSB5b3Ug
bWlzc3BlbGxlZCBhIGNvbnN0YW50PycpO1xuICAgIH1cblxuICAgIGlmIChpc0Rpc3BhdGNoaW5n
KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZHVjZXJzIG1heSBub3QgZGlzcGF0Y2ggYWN0
aW9ucy4nKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgaXNEaXNwYXRjaGluZyA9IHRydWU7
XG4gICAgICBjdXJyZW50U3RhdGUgPSBjdXJyZW50UmVkdWNlcihjdXJyZW50U3RhdGUsIGFjdGlv
bik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlzRGlzcGF0Y2hpbmcgPSBmYWxzZTtcbiAgICB9
XG5cbiAgICB2YXIgbGlzdGVuZXJzID0gY3VycmVudExpc3RlbmVycyA9IG5leHRMaXN0ZW5lcnM7
XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAg
IHZhciBsaXN0ZW5lciA9IGxpc3RlbmVyc1tpXTtcbiAgICAgIGxpc3RlbmVyKCk7XG4gICAgfVxu
XG4gICAgcmV0dXJuIGFjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgcmVk
dWNlciBjdXJyZW50bHkgdXNlZCBieSB0aGUgc3RvcmUgdG8gY2FsY3VsYXRlIHRoZSBzdGF0ZS5c
biAgICpcbiAgICogWW91IG1pZ2h0IG5lZWQgdGhpcyBpZiB5b3VyIGFwcCBpbXBsZW1lbnRzIGNv
ZGUgc3BsaXR0aW5nIGFuZCB5b3Ugd2FudCB0b1xuICAgKiBsb2FkIHNvbWUgb2YgdGhlIHJlZHVj
ZXJzIGR5bmFtaWNhbGx5LiBZb3UgbWlnaHQgYWxzbyBuZWVkIHRoaXMgaWYgeW91XG4gICAqIGlt
cGxlbWVudCBhIGhvdCByZWxvYWRpbmcgbWVjaGFuaXNtIGZvciBSZWR1eC5cbiAgICpcbiAgICog
QHBhcmFtIHtGdW5jdGlvbn0gbmV4dFJlZHVjZXIgVGhlIHJlZHVjZXIgZm9yIHRoZSBzdG9yZSB0
byB1c2UgaW5zdGVhZC5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmdW5jdGlvbiBy
ZXBsYWNlUmVkdWNlcihuZXh0UmVkdWNlcikge1xuICAgIGlmICh0eXBlb2YgbmV4dFJlZHVjZXIg
IT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgdGhlIG5l
eHRSZWR1Y2VyIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgY3VycmVudFJlZHVj
ZXIgPSBuZXh0UmVkdWNlcjtcbiAgICBkaXNwYXRjaCh7IHR5cGU6IEFjdGlvblR5cGVzLklOSVQg
fSk7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJvcGVyYWJpbGl0eSBwb2ludCBmb3Igb2JzZXJ2
YWJsZS9yZWFjdGl2ZSBsaWJyYXJpZXMuXG4gICAqIEByZXR1cm5zIHtvYnNlcnZhYmxlfSBBIG1p
bmltYWwgb2JzZXJ2YWJsZSBvZiBzdGF0ZSBjaGFuZ2VzLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1h
dGlvbiwgc2VlIHRoZSBvYnNlcnZhYmxlIHByb3Bvc2FsOlxuICAgKiBodHRwczovL2dpdGh1Yi5j
b20vdGMzOS9wcm9wb3NhbC1vYnNlcnZhYmxlXG4gICAqL1xuICBmdW5jdGlvbiBvYnNlcnZhYmxl
KCkge1xuICAgIHZhciBfcmVmO1xuXG4gICAgdmFyIG91dGVyU3Vic2NyaWJlID0gc3Vic2NyaWJl
O1xuICAgIHJldHVybiBfcmVmID0ge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgbWluaW1hbCBv
YnNlcnZhYmxlIHN1YnNjcmlwdGlvbiBtZXRob2QuXG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0g
b2JzZXJ2ZXIgQW55IG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIGFzIGFuIG9ic2VydmVyLlxuICAg
ICAgICogVGhlIG9ic2VydmVyIG9iamVjdCBzaG91bGQgaGF2ZSBhIGBuZXh0YCBtZXRob2QuXG4g
ICAgICAgKiBAcmV0dXJucyB7c3Vic2NyaXB0aW9ufSBBbiBvYmplY3Qgd2l0aCBhbiBgdW5zdWJz
Y3JpYmVgIG1ldGhvZCB0aGF0IGNhblxuICAgICAgICogYmUgdXNlZCB0byB1bnN1YnNjcmliZSB0
aGUgb2JzZXJ2YWJsZSBmcm9tIHRoZSBzdG9yZSwgYW5kIHByZXZlbnQgZnVydGhlclxuICAgICAg
ICogZW1pc3Npb24gb2YgdmFsdWVzIGZyb20gdGhlIG9ic2VydmFibGUuXG4gICAgICAgKi9cbiAg
ICAgIHN1YnNjcmliZTogZnVuY3Rpb24gc3Vic2NyaWJlKG9ic2VydmVyKSB7XG4gICAgICAgIGlm
ICh0eXBlb2Ygb2JzZXJ2ZXIgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5
cGVFcnJvcignRXhwZWN0ZWQgdGhlIG9ic2VydmVyIHRvIGJlIGFuIG9iamVjdC4nKTtcbiAgICAg
ICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG9ic2VydmVTdGF0ZSgpIHtcbiAgICAgICAgICBpZiAo
b2JzZXJ2ZXIubmV4dCkge1xuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChnZXRTdGF0ZSgpKTtc
biAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBvYnNlcnZlU3RhdGUoKTtcbiAgICAg
ICAgdmFyIHVuc3Vic2NyaWJlID0gb3V0ZXJTdWJzY3JpYmUob2JzZXJ2ZVN0YXRlKTtcbiAgICAg
ICAgcmV0dXJuIHsgdW5zdWJzY3JpYmU6IHVuc3Vic2NyaWJlIH07XG4gICAgICB9XG4gICAgfSwg
X3JlZlskJG9ic2VydmFibGVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4g
ICAgfSwgX3JlZjtcbiAgfVxuXG4gIC8vIFdoZW4gYSBzdG9yZSBpcyBjcmVhdGVkLCBhbiBcIklO
SVRcIiBhY3Rpb24gaXMgZGlzcGF0Y2hlZCBzbyB0aGF0IGV2ZXJ5XG4gIC8vIHJlZHVjZXIgcmV0
dXJucyB0aGVpciBpbml0aWFsIHN0YXRlLiBUaGlzIGVmZmVjdGl2ZWx5IHBvcHVsYXRlc1xuICAv
LyB0aGUgaW5pdGlhbCBzdGF0ZSB0cmVlLlxuICBkaXNwYXRjaCh7IHR5cGU6IEFjdGlvblR5cGVz
LklOSVQgfSk7XG5cbiAgcmV0dXJuIF9yZWYyID0ge1xuICAgIGRpc3BhdGNoOiBkaXNwYXRjaCxc
biAgICBzdWJzY3JpYmU6IHN1YnNjcmliZSxcbiAgICBnZXRTdGF0ZTogZ2V0U3RhdGUsXG4gICAg
cmVwbGFjZVJlZHVjZXI6IHJlcGxhY2VSZWR1Y2VyXG4gIH0sIF9yZWYyWyQkb2JzZXJ2YWJsZV0g
PSBvYnNlcnZhYmxlLCBfcmVmMjtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBB
Q0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWR1eC9lcy9jcmVhdGVTdG9yZS5qc1xuLy8g
bW9kdWxlIGlkID0gODRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0IHJvb3QgZnJvbSAn
Li9fcm9vdC5qcyc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5
bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5leHBvcnQgZGVmYXVsdCBTeW1ib2w7XG5cblxuXG4vLy8v
Ly8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rh
c2gtZXMvX1N5bWJvbC5qc1xuLy8gbW9kdWxlIGlkID0gODVcbi8vIG1vZHVsZSBjaHVua3MgPSAw
IiwiLyoqXG4gKiBDb21wb3NlcyBzaW5nbGUtYXJndW1lbnQgZnVuY3Rpb25zIGZyb20gcmlnaHQg
dG8gbGVmdC4gVGhlIHJpZ2h0bW9zdFxuICogZnVuY3Rpb24gY2FuIHRha2UgbXVsdGlwbGUgYXJn
dW1lbnRzIGFzIGl0IHByb3ZpZGVzIHRoZSBzaWduYXR1cmUgZm9yXG4gKiB0aGUgcmVzdWx0aW5n
IGNvbXBvc2l0ZSBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gey4uLkZ1bmN0aW9ufSBmdW5jcyBU
aGUgZnVuY3Rpb25zIHRvIGNvbXBvc2UuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgZnVuY3Rp
b24gb2J0YWluZWQgYnkgY29tcG9zaW5nIHRoZSBhcmd1bWVudCBmdW5jdGlvbnNcbiAqIGZyb20g
cmlnaHQgdG8gbGVmdC4gRm9yIGV4YW1wbGUsIGNvbXBvc2UoZiwgZywgaCkgaXMgaWRlbnRpY2Fs
IHRvIGRvaW5nXG4gKiAoLi4uYXJncykgPT4gZihnKGgoLi4uYXJncykpKS5cbiAqL1xuXG5leHBv
cnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wb3NlKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1l
bnRzLmxlbmd0aCwgZnVuY3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBf
a2V5KyspIHtcbiAgICBmdW5jc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIGlm
IChmdW5jcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAg
ICAgcmV0dXJuIGFyZztcbiAgICB9O1xuICB9XG5cbiAgaWYgKGZ1bmNzLmxlbmd0aCA9PT0gMSkg
e1xuICAgIHJldHVybiBmdW5jc1swXTtcbiAgfVxuXG4gIHJldHVybiBmdW5jcy5yZWR1Y2UoZnVu
Y3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGEo
Yi5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cykpO1xuICAgIH07XG4gIH0pO1xufVxuXG5cbi8v
Ly8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Jl
ZHV4L2VzL2NvbXBvc2UuanNcbi8vIG1vZHVsZSBpZCA9IDg3XG4vLyBtb2R1bGUgY2h1bmtzID0g
MCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSAodHlwZW9m
IFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIFN5bWJvbC5mb3IgJiZcbiAgICBTeW1ib2wu
Zm9yKCdyZWFjdC5lbGVtZW50JykpIHx8XG4gICAgMHhlYWM3O1xuXG4gIHZhciBpc1ZhbGlkRWxl
bWVudCA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAn
b2JqZWN0JyAmJlxuICAgICAgb2JqZWN0ICE9PSBudWxsICYmXG4gICAgICBvYmplY3QuJCR0eXBl
b2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbiAgfTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVz
aW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhh
dmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dP
bkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0
b3J5V2l0aFR5cGVDaGVja2VycycpKGlzVmFsaWRFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNz
KTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBh
cmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5t
ZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3Rv
cnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8v
IFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzXG4v
LyBtb2R1bGUgaWQgPSA4OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJpbXBvcnQgUHJvcFR5cGVz
IGZyb20gJ3Byb3AtdHlwZXMnO1xuXG5leHBvcnQgdmFyIHN1YnNjcmlwdGlvblNoYXBlID0gUHJv
cFR5cGVzLnNoYXBlKHtcbiAgdHJ5U3Vic2NyaWJlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVk
LFxuICB0cnlVbnN1YnNjcmliZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgbm90aWZ5
TmVzdGVkU3ViczogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgaXNTdWJzY3JpYmVkOiBQ
cm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59KTtcblxuZXhwb3J0IHZhciBzdG9yZVNoYXBlID0g
UHJvcFR5cGVzLnNoYXBlKHtcbiAgc3Vic2NyaWJlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVk
LFxuICBkaXNwYXRjaDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZ2V0U3RhdGU6IFBy
b3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8g
V0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL3V0aWxzL1By
b3BUeXBlcy5qc1xuLy8gbW9kdWxlIGlkID0gOTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFy
IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFy
IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVu
dHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5
XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGlu
c3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVj
dG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1
bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2Vs
ZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBo
YXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9
IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2Fs
bCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0
cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVu
Y3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJT
dXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwi
ICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2
YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmln
dXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2Yg
PyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3Mu
X19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3Bl
cnRpZXMob2JqLCBrZXlzKSB7IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIgaSBpbiBvYmopIHsg
aWYgKGtleXMuaW5kZXhPZihpKSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBl
Lmhhc093blByb3BlcnR5LmNhbGwob2JqLCBpKSkgY29udGludWU7IHRhcmdldFtpXSA9IG9ialtp
XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCBob2lzdFN0YXRpY3MgZnJvbSAnaG9pc3Qt
bm9uLXJlYWN0LXN0YXRpY3MnO1xuaW1wb3J0IGludmFyaWFudCBmcm9tICdpbnZhcmlhbnQnO1xu
aW1wb3J0IHsgQ29tcG9uZW50LCBjcmVhdGVFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuXG5pbXBv
cnQgU3Vic2NyaXB0aW9uIGZyb20gJy4uL3V0aWxzL1N1YnNjcmlwdGlvbic7XG5pbXBvcnQgeyBz
dG9yZVNoYXBlLCBzdWJzY3JpcHRpb25TaGFwZSB9IGZyb20gJy4uL3V0aWxzL1Byb3BUeXBlcyc7
XG5cbnZhciBob3RSZWxvYWRpbmdWZXJzaW9uID0gMDtcbnZhciBkdW1teVN0YXRlID0ge307XG5m
dW5jdGlvbiBub29wKCkge31cbmZ1bmN0aW9uIG1ha2VTZWxlY3RvclN0YXRlZnVsKHNvdXJjZVNl
bGVjdG9yLCBzdG9yZSkge1xuICAvLyB3cmFwIHRoZSBzZWxlY3RvciBpbiBhbiBvYmplY3QgdGhh
dCB0cmFja3MgaXRzIHJlc3VsdHMgYmV0d2VlbiBydW5zLlxuICB2YXIgc2VsZWN0b3IgPSB7XG4g
ICAgcnVuOiBmdW5jdGlvbiBydW5Db21wb25lbnRTZWxlY3Rvcihwcm9wcykge1xuICAgICAgdHJ5
IHtcbiAgICAgICAgdmFyIG5leHRQcm9wcyA9IHNvdXJjZVNlbGVjdG9yKHN0b3JlLmdldFN0YXRl
KCksIHByb3BzKTtcbiAgICAgICAgaWYgKG5leHRQcm9wcyAhPT0gc2VsZWN0b3IucHJvcHMgfHwg
c2VsZWN0b3IuZXJyb3IpIHtcbiAgICAgICAgICBzZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRh
dGUgPSB0cnVlO1xuICAgICAgICAgIHNlbGVjdG9yLnByb3BzID0gbmV4dFByb3BzO1xuICAgICAg
ICAgIHNlbGVjdG9yLmVycm9yID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJy
b3IpIHtcbiAgICAgICAgc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gdHJ1ZTtcbiAg
ICAgICAgc2VsZWN0b3IuZXJyb3IgPSBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAg
cmV0dXJuIHNlbGVjdG9yO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb25uZWN0QWR2
YW5jZWQoXG4vKlxuICBzZWxlY3RvckZhY3RvcnkgaXMgYSBmdW5jIHRoYXQgaXMgcmVzcG9uc2li
bGUgZm9yIHJldHVybmluZyB0aGUgc2VsZWN0b3IgZnVuY3Rpb24gdXNlZCB0b1xuICBjb21wdXRl
IG5ldyBwcm9wcyBmcm9tIHN0YXRlLCBwcm9wcywgYW5kIGRpc3BhdGNoLiBGb3IgZXhhbXBsZTpc
biAgICAgZXhwb3J0IGRlZmF1bHQgY29ubmVjdEFkdmFuY2VkKChkaXNwYXRjaCwgb3B0aW9ucykg
PT4gKHN0YXRlLCBwcm9wcykgPT4gKHtcbiAgICAgIHRoaW5nOiBzdGF0ZS50aGluZ3NbcHJvcHMu
dGhpbmdJZF0sXG4gICAgICBzYXZlVGhpbmc6IGZpZWxkcyA9PiBkaXNwYXRjaChhY3Rpb25DcmVh
dG9ycy5zYXZlVGhpbmcocHJvcHMudGhpbmdJZCwgZmllbGRzKSksXG4gICAgfSkpKFlvdXJDb21w
b25lbnQpXG4gICBBY2Nlc3MgdG8gZGlzcGF0Y2ggaXMgcHJvdmlkZWQgdG8gdGhlIGZhY3Rvcnkg
c28gc2VsZWN0b3JGYWN0b3JpZXMgY2FuIGJpbmQgYWN0aW9uQ3JlYXRvcnNcbiAgb3V0c2lkZSBv
ZiB0aGVpciBzZWxlY3RvciBhcyBhbiBvcHRpbWl6YXRpb24uIE9wdGlvbnMgcGFzc2VkIHRvIGNv
bm5lY3RBZHZhbmNlZCBhcmUgcGFzc2VkIHRvXG4gIHRoZSBzZWxlY3RvckZhY3RvcnksIGFsb25n
IHdpdGggZGlzcGxheU5hbWUgYW5kIFdyYXBwZWRDb21wb25lbnQsIGFzIHRoZSBzZWNvbmQgYXJn
dW1lbnQuXG4gICBOb3RlIHRoYXQgc2VsZWN0b3JGYWN0b3J5IGlzIHJlc3BvbnNpYmxlIGZvciBh
bGwgY2FjaGluZy9tZW1vaXphdGlvbiBvZiBpbmJvdW5kIGFuZCBvdXRib3VuZFxuICBwcm9wcy4g
RG8gbm90IHVzZSBjb25uZWN0QWR2YW5jZWQgZGlyZWN0bHkgd2l0aG91dCBtZW1vaXppbmcgcmVz
dWx0cyBiZXR3ZWVuIGNhbGxzIHRvIHlvdXJcbiAgc2VsZWN0b3IsIG90aGVyd2lzZSB0aGUgQ29u
bmVjdCBjb21wb25lbnQgd2lsbCByZS1yZW5kZXIgb24gZXZlcnkgc3RhdGUgb3IgcHJvcHMgY2hh
bmdlLlxuKi9cbnNlbGVjdG9yRmFjdG9yeSkge1xuICB2YXIgX2NvbnRleHRUeXBlcywgX2NoaWxk
Q29udGV4dFR5cGVzO1xuXG4gIHZhciBfcmVmID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJn
dW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fSxcbiAgICAgIF9yZWYk
Z2V0RGlzcGxheU5hbWUgPSBfcmVmLmdldERpc3BsYXlOYW1lLFxuICAgICAgZ2V0RGlzcGxheU5h
bWUgPSBfcmVmJGdldERpc3BsYXlOYW1lID09PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAobmFtZSkg
e1xuICAgIHJldHVybiAnQ29ubmVjdEFkdmFuY2VkKCcgKyBuYW1lICsgJyknO1xuICB9IDogX3Jl
ZiRnZXREaXNwbGF5TmFtZSxcbiAgICAgIF9yZWYkbWV0aG9kTmFtZSA9IF9yZWYubWV0aG9kTmFt
ZSxcbiAgICAgIG1ldGhvZE5hbWUgPSBfcmVmJG1ldGhvZE5hbWUgPT09IHVuZGVmaW5lZCA/ICdj
b25uZWN0QWR2YW5jZWQnIDogX3JlZiRtZXRob2ROYW1lLFxuICAgICAgX3JlZiRyZW5kZXJDb3Vu
dFByb3AgPSBfcmVmLnJlbmRlckNvdW50UHJvcCxcbiAgICAgIHJlbmRlckNvdW50UHJvcCA9IF9y
ZWYkcmVuZGVyQ291bnRQcm9wID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBfcmVmJHJlbmRl
ckNvdW50UHJvcCxcbiAgICAgIF9yZWYkc2hvdWxkSGFuZGxlU3RhdCA9IF9yZWYuc2hvdWxkSGFu
ZGxlU3RhdGVDaGFuZ2VzLFxuICAgICAgc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzID0gX3JlZiRz
aG91bGRIYW5kbGVTdGF0ID09PSB1bmRlZmluZWQgPyB0cnVlIDogX3JlZiRzaG91bGRIYW5kbGVT
dGF0LFxuICAgICAgX3JlZiRzdG9yZUtleSA9IF9yZWYuc3RvcmVLZXksXG4gICAgICBzdG9yZUtl
eSA9IF9yZWYkc3RvcmVLZXkgPT09IHVuZGVmaW5lZCA/ICdzdG9yZScgOiBfcmVmJHN0b3JlS2V5
LFxuICAgICAgX3JlZiR3aXRoUmVmID0gX3JlZi53aXRoUmVmLFxuICAgICAgd2l0aFJlZiA9IF9y
ZWYkd2l0aFJlZiA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBfcmVmJHdpdGhSZWYsXG4gICAgICBj
b25uZWN0T3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBbJ2dldERpc3Bs
YXlOYW1lJywgJ21ldGhvZE5hbWUnLCAncmVuZGVyQ291bnRQcm9wJywgJ3Nob3VsZEhhbmRsZVN0
YXRlQ2hhbmdlcycsICdzdG9yZUtleScsICd3aXRoUmVmJ10pO1xuXG4gIHZhciBzdWJzY3JpcHRp
b25LZXkgPSBzdG9yZUtleSArICdTdWJzY3JpcHRpb24nO1xuICB2YXIgdmVyc2lvbiA9IGhvdFJl
bG9hZGluZ1ZlcnNpb24rKztcblxuICB2YXIgY29udGV4dFR5cGVzID0gKF9jb250ZXh0VHlwZXMg
PSB7fSwgX2NvbnRleHRUeXBlc1tzdG9yZUtleV0gPSBzdG9yZVNoYXBlLCBfY29udGV4dFR5cGVz
W3N1YnNjcmlwdGlvbktleV0gPSBzdWJzY3JpcHRpb25TaGFwZSwgX2NvbnRleHRUeXBlcyk7XG4g
IHZhciBjaGlsZENvbnRleHRUeXBlcyA9IChfY2hpbGRDb250ZXh0VHlwZXMgPSB7fSwgX2NoaWxk
Q29udGV4dFR5cGVzW3N1YnNjcmlwdGlvbktleV0gPSBzdWJzY3JpcHRpb25TaGFwZSwgX2NoaWxk
Q29udGV4dFR5cGVzKTtcblxuICByZXR1cm4gZnVuY3Rpb24gd3JhcFdpdGhDb25uZWN0KFdyYXBw
ZWRDb21wb25lbnQpIHtcbiAgICBpbnZhcmlhbnQodHlwZW9mIFdyYXBwZWRDb21wb25lbnQgPT0g
J2Z1bmN0aW9uJywgJ1lvdSBtdXN0IHBhc3MgYSBjb21wb25lbnQgdG8gdGhlIGZ1bmN0aW9uIHJl
dHVybmVkIGJ5ICcgKyAoJ2Nvbm5lY3QuIEluc3RlYWQgcmVjZWl2ZWQgJyArIEpTT04uc3RyaW5n
aWZ5KFdyYXBwZWRDb21wb25lbnQpKSk7XG5cbiAgICB2YXIgd3JhcHBlZENvbXBvbmVudE5hbWUg
PSBXcmFwcGVkQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IFdyYXBwZWRDb21wb25lbnQubmFtZSB8
fCAnQ29tcG9uZW50JztcblxuICAgIHZhciBkaXNwbGF5TmFtZSA9IGdldERpc3BsYXlOYW1lKHdy
YXBwZWRDb21wb25lbnROYW1lKTtcblxuICAgIHZhciBzZWxlY3RvckZhY3RvcnlPcHRpb25zID0g
X2V4dGVuZHMoe30sIGNvbm5lY3RPcHRpb25zLCB7XG4gICAgICBnZXREaXNwbGF5TmFtZTogZ2V0
RGlzcGxheU5hbWUsXG4gICAgICBtZXRob2ROYW1lOiBtZXRob2ROYW1lLFxuICAgICAgcmVuZGVy
Q291bnRQcm9wOiByZW5kZXJDb3VudFByb3AsXG4gICAgICBzaG91bGRIYW5kbGVTdGF0ZUNoYW5n
ZXM6IHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcyxcbiAgICAgIHN0b3JlS2V5OiBzdG9yZUtleSxc
biAgICAgIHdpdGhSZWY6IHdpdGhSZWYsXG4gICAgICBkaXNwbGF5TmFtZTogZGlzcGxheU5hbWUs
XG4gICAgICB3cmFwcGVkQ29tcG9uZW50TmFtZTogd3JhcHBlZENvbXBvbmVudE5hbWUsXG4gICAg
ICBXcmFwcGVkQ29tcG9uZW50OiBXcmFwcGVkQ29tcG9uZW50XG4gICAgfSk7XG5cbiAgICB2YXIg
Q29ubmVjdCA9IGZ1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gICAgICBfaW5oZXJpdHMoQ29ubmVj
dCwgX0NvbXBvbmVudCk7XG5cbiAgICAgIGZ1bmN0aW9uIENvbm5lY3QocHJvcHMsIGNvbnRleHQp
IHtcbiAgICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENvbm5lY3QpO1xuXG4gICAgICAgIHZh
ciBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9Db21wb25lbnQuY2Fs
bCh0aGlzLCBwcm9wcywgY29udGV4dCkpO1xuXG4gICAgICAgIF90aGlzLnZlcnNpb24gPSB2ZXJz
aW9uO1xuICAgICAgICBfdGhpcy5zdGF0ZSA9IHt9O1xuICAgICAgICBfdGhpcy5yZW5kZXJDb3Vu
dCA9IDA7XG4gICAgICAgIF90aGlzLnN0b3JlID0gcHJvcHNbc3RvcmVLZXldIHx8IGNvbnRleHRb
c3RvcmVLZXldO1xuICAgICAgICBfdGhpcy5wcm9wc01vZGUgPSBCb29sZWFuKHByb3BzW3N0b3Jl
S2V5XSk7XG4gICAgICAgIF90aGlzLnNldFdyYXBwZWRJbnN0YW5jZSA9IF90aGlzLnNldFdyYXBw
ZWRJbnN0YW5jZS5iaW5kKF90aGlzKTtcblxuICAgICAgICBpbnZhcmlhbnQoX3RoaXMuc3RvcmUs
ICdDb3VsZCBub3QgZmluZCBcIicgKyBzdG9yZUtleSArICdcIiBpbiBlaXRoZXIgdGhlIGNvbnRl
eHQgb3IgcHJvcHMgb2YgJyArICgnXCInICsgZGlzcGxheU5hbWUgKyAnXCIuIEVpdGhlciB3cmFw
IHRoZSByb290IGNvbXBvbmVudCBpbiBhIDxQcm92aWRlcj4sICcpICsgKCdvciBleHBsaWNpdGx5
IHBhc3MgXCInICsgc3RvcmVLZXkgKyAnXCIgYXMgYSBwcm9wIHRvIFwiJyArIGRpc3BsYXlOYW1l
ICsgJ1wiLicpKTtcblxuICAgICAgICBfdGhpcy5pbml0U2VsZWN0b3IoKTtcbiAgICAgICAgX3Ro
aXMuaW5pdFN1YnNjcmlwdGlvbigpO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgICB9XG5c
biAgICAgIENvbm5lY3QucHJvdG90eXBlLmdldENoaWxkQ29udGV4dCA9IGZ1bmN0aW9uIGdldENo
aWxkQ29udGV4dCgpIHtcbiAgICAgICAgdmFyIF9yZWYyO1xuXG4gICAgICAgIC8vIElmIHRoaXMg
Y29tcG9uZW50IHJlY2VpdmVkIHN0b3JlIGZyb20gcHJvcHMsIGl0cyBzdWJzY3JpcHRpb24gc2hv
dWxkIGJlIHRyYW5zcGFyZW50XG4gICAgICAgIC8vIHRvIGFueSBkZXNjZW5kYW50cyByZWNlaXZp
bmcgc3RvcmUrc3Vic2NyaXB0aW9uIGZyb20gY29udGV4dDsgaXQgcGFzc2VzIGFsb25nXG4gICAg
ICAgIC8vIHN1YnNjcmlwdGlvbiBwYXNzZWQgdG8gaXQuIE90aGVyd2lzZSwgaXQgc2hhZG93cyB0
aGUgcGFyZW50IHN1YnNjcmlwdGlvbiwgd2hpY2ggYWxsb3dzXG4gICAgICAgIC8vIENvbm5lY3Qg
dG8gY29udHJvbCBvcmRlcmluZyBvZiBub3RpZmljYXRpb25zIHRvIGZsb3cgdG9wLWRvd24uXG4g
ICAgICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGlzLnByb3BzTW9kZSA/IG51bGwgOiB0aGlzLnN1
YnNjcmlwdGlvbjtcbiAgICAgICAgcmV0dXJuIF9yZWYyID0ge30sIF9yZWYyW3N1YnNjcmlwdGlv
bktleV0gPSBzdWJzY3JpcHRpb24gfHwgdGhpcy5jb250ZXh0W3N1YnNjcmlwdGlvbktleV0sIF9y
ZWYyO1xuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91
bnQgPSBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgaWYgKCFzaG91bGRI
YW5kbGVTdGF0ZUNoYW5nZXMpIHJldHVybjtcblxuICAgICAgICAvLyBjb21wb25lbnRXaWxsTW91
bnQgZmlyZXMgZHVyaW5nIHNlcnZlciBzaWRlIHJlbmRlcmluZywgYnV0IGNvbXBvbmVudERpZE1v
dW50IGFuZFxuICAgICAgICAvLyBjb21wb25lbnRXaWxsVW5tb3VudCBkbyBub3QuIEJlY2F1c2Ug
b2YgdGhpcywgdHJ5U3Vic2NyaWJlIGhhcHBlbnMgZHVyaW5nIC4uLmRpZE1vdW50LlxuICAgICAg
ICAvLyBPdGhlcndpc2UsIHVuc3Vic2NyaXB0aW9uIHdvdWxkIG5ldmVyIHRha2UgcGxhY2UgZHVy
aW5nIFNTUiwgY2F1c2luZyBhIG1lbW9yeSBsZWFrLlxuICAgICAgICAvLyBUbyBoYW5kbGUgdGhl
IGNhc2Ugd2hlcmUgYSBjaGlsZCBjb21wb25lbnQgbWF5IGhhdmUgdHJpZ2dlcmVkIGEgc3RhdGUg
Y2hhbmdlIGJ5XG4gICAgICAgIC8vIGRpc3BhdGNoaW5nIGFuIGFjdGlvbiBpbiBpdHMgY29tcG9u
ZW50V2lsbE1vdW50LCB3ZSBoYXZlIHRvIHJlLXJ1biB0aGUgc2VsZWN0IGFuZCBtYXliZVxuICAg
ICAgICAvLyByZS1yZW5kZXIuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnRyeVN1YnNjcmli
ZSgpO1xuICAgICAgICB0aGlzLnNlbGVjdG9yLnJ1bih0aGlzLnByb3BzKTtcbiAgICAgICAgaWYg
KHRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlKSB0aGlzLmZvcmNlVXBkYXRlKCk7
XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2
ZVByb3BzID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtc
biAgICAgICAgdGhpcy5zZWxlY3Rvci5ydW4obmV4dFByb3BzKTtcbiAgICAgIH07XG5cbiAgICAg
IENvbm5lY3QucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IGZ1bmN0aW9uIHNob3Vs
ZENvbXBvbmVudFVwZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0b3Iuc2hvdWxk
Q29tcG9uZW50VXBkYXRlO1xuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUuY29t
cG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAg
ICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB0aGlzLnN1YnNjcmlwdGlvbi50cnlVbnN1YnNj
cmliZSgpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMu
bm90aWZ5TmVzdGVkU3VicyA9IG5vb3A7XG4gICAgICAgIHRoaXMuc3RvcmUgPSBudWxsO1xuICAg
ICAgICB0aGlzLnNlbGVjdG9yLnJ1biA9IG5vb3A7XG4gICAgICAgIHRoaXMuc2VsZWN0b3Iuc2hv
dWxkQ29tcG9uZW50VXBkYXRlID0gZmFsc2U7XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnBy
b3RvdHlwZS5nZXRXcmFwcGVkSW5zdGFuY2UgPSBmdW5jdGlvbiBnZXRXcmFwcGVkSW5zdGFuY2Uo
KSB7XG4gICAgICAgIGludmFyaWFudCh3aXRoUmVmLCAnVG8gYWNjZXNzIHRoZSB3cmFwcGVkIGlu
c3RhbmNlLCB5b3UgbmVlZCB0byBzcGVjaWZ5ICcgKyAoJ3sgd2l0aFJlZjogdHJ1ZSB9IGluIHRo
ZSBvcHRpb25zIGFyZ3VtZW50IG9mIHRoZSAnICsgbWV0aG9kTmFtZSArICcoKSBjYWxsLicpKTtc
biAgICAgICAgcmV0dXJuIHRoaXMud3JhcHBlZEluc3RhbmNlO1xuICAgICAgfTtcblxuICAgICAg
Q29ubmVjdC5wcm90b3R5cGUuc2V0V3JhcHBlZEluc3RhbmNlID0gZnVuY3Rpb24gc2V0V3JhcHBl
ZEluc3RhbmNlKHJlZikge1xuICAgICAgICB0aGlzLndyYXBwZWRJbnN0YW5jZSA9IHJlZjtcbiAg
ICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmluaXRTZWxlY3RvciA9IGZ1bmN0aW9u
IGluaXRTZWxlY3RvcigpIHtcbiAgICAgICAgdmFyIHNvdXJjZVNlbGVjdG9yID0gc2VsZWN0b3JG
YWN0b3J5KHRoaXMuc3RvcmUuZGlzcGF0Y2gsIHNlbGVjdG9yRmFjdG9yeU9wdGlvbnMpO1xuICAg
ICAgICB0aGlzLnNlbGVjdG9yID0gbWFrZVNlbGVjdG9yU3RhdGVmdWwoc291cmNlU2VsZWN0b3Is
IHRoaXMuc3RvcmUpO1xuICAgICAgICB0aGlzLnNlbGVjdG9yLnJ1bih0aGlzLnByb3BzKTtcbiAg
ICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmluaXRTdWJzY3JpcHRpb24gPSBmdW5j
dGlvbiBpbml0U3Vic2NyaXB0aW9uKCkge1xuICAgICAgICBpZiAoIXNob3VsZEhhbmRsZVN0YXRl
Q2hhbmdlcykgcmV0dXJuO1xuXG4gICAgICAgIC8vIHBhcmVudFN1YidzIHNvdXJjZSBzaG91bGQg
bWF0Y2ggd2hlcmUgc3RvcmUgY2FtZSBmcm9tOiBwcm9wcyB2cy4gY29udGV4dC4gQSBjb21wb25l
bnRcbiAgICAgICAgLy8gY29ubmVjdGVkIHRvIHRoZSBzdG9yZSB2aWEgcHJvcHMgc2hvdWxkbid0
IHVzZSBzdWJzY3JpcHRpb24gZnJvbSBjb250ZXh0LCBvciB2aWNlIHZlcnNhLlxuICAgICAgICB2
YXIgcGFyZW50U3ViID0gKHRoaXMucHJvcHNNb2RlID8gdGhpcy5wcm9wcyA6IHRoaXMuY29udGV4
dClbc3Vic2NyaXB0aW9uS2V5XTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBuZXcgU3Vi
c2NyaXB0aW9uKHRoaXMuc3RvcmUsIHBhcmVudFN1YiwgdGhpcy5vblN0YXRlQ2hhbmdlLmJpbmQo
dGhpcykpO1xuXG4gICAgICAgIC8vIGBub3RpZnlOZXN0ZWRTdWJzYCBpcyBkdXBsaWNhdGVkIHRv
IGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgY29tcG9uZW50IGlzICB1bm1vdW50ZWQgaW5cbiAg
ICAgICAgLy8gdGhlIG1pZGRsZSBvZiB0aGUgbm90aWZpY2F0aW9uIGxvb3AsIHdoZXJlIGB0aGlz
LnN1YnNjcmlwdGlvbmAgd2lsbCB0aGVuIGJlIG51bGwuIEFuXG4gICAgICAgIC8vIGV4dHJhIG51
bGwgY2hlY2sgZXZlcnkgY2hhbmdlIGNhbiBiZSBhdm9pZGVkIGJ5IGNvcHlpbmcgdGhlIG1ldGhv
ZCBvbnRvIGB0aGlzYCBhbmQgdGhlblxuICAgICAgICAvLyByZXBsYWNpbmcgaXQgd2l0aCBhIG5v
LW9wIG9uIHVubW91bnQuIFRoaXMgY2FuIHByb2JhYmx5IGJlIGF2b2lkZWQgaWYgU3Vic2NyaXB0
aW9uJ3NcbiAgICAgICAgLy8gbGlzdGVuZXJzIGxvZ2ljIGlzIGNoYW5nZWQgdG8gbm90IGNhbGwg
bGlzdGVuZXJzIHRoYXQgaGF2ZSBiZWVuIHVuc3Vic2NyaWJlZCBpbiB0aGVcbiAgICAgICAgLy8g
bWlkZGxlIG9mIHRoZSBub3RpZmljYXRpb24gbG9vcC5cbiAgICAgICAgdGhpcy5ub3RpZnlOZXN0
ZWRTdWJzID0gdGhpcy5zdWJzY3JpcHRpb24ubm90aWZ5TmVzdGVkU3Vicy5iaW5kKHRoaXMuc3Vi
c2NyaXB0aW9uKTtcbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLm9uU3RhdGVD
aGFuZ2UgPSBmdW5jdGlvbiBvblN0YXRlQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLnNlbGVjdG9y
LnJ1bih0aGlzLnByb3BzKTtcblxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29t
cG9uZW50VXBkYXRlKSB7XG4gICAgICAgICAgdGhpcy5ub3RpZnlOZXN0ZWRTdWJzKCk7XG4gICAg
ICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jb21wb25lbnREaWRVcGRhdGUgPSB0aGlzLm5v
dGlmeU5lc3RlZFN1YnNPbkNvbXBvbmVudERpZFVwZGF0ZTtcbiAgICAgICAgICB0aGlzLnNldFN0
YXRlKGR1bW15U3RhdGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnBy
b3RvdHlwZS5ub3RpZnlOZXN0ZWRTdWJzT25Db21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbiBu
b3RpZnlOZXN0ZWRTdWJzT25Db21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICAgIC8vIGBjb21w
b25lbnREaWRVcGRhdGVgIGlzIGNvbmRpdGlvbmFsbHkgaW1wbGVtZW50ZWQgd2hlbiBgb25TdGF0
ZUNoYW5nZWAgZGV0ZXJtaW5lcyBpdFxuICAgICAgICAvLyBuZWVkcyB0byBub3RpZnkgbmVzdGVk
IHN1YnMuIE9uY2UgY2FsbGVkLCBpdCB1bmltcGxlbWVudHMgaXRzZWxmIHVudGlsIGZ1cnRoZXIg
c3RhdGVcbiAgICAgICAgLy8gY2hhbmdlcyBvY2N1ci4gRG9pbmcgaXQgdGhpcyB3YXkgdnMgaGF2
aW5nIGEgcGVybWFuZW50IGBjb21wb25lbnREaWRVcGRhdGVgIHRoYXQgZG9lc1xuICAgICAgICAv
LyBhIGJvb2xlYW4gY2hlY2sgZXZlcnkgdGltZSBhdm9pZHMgYW4gZXh0cmEgbWV0aG9kIGNhbGwg
bW9zdCBvZiB0aGUgdGltZSwgcmVzdWx0aW5nXG4gICAgICAgIC8vIGluIHNvbWUgcGVyZiBib29z
dC5cbiAgICAgICAgdGhpcy5jb21wb25lbnREaWRVcGRhdGUgPSB1bmRlZmluZWQ7XG4gICAgICAg
IHRoaXMubm90aWZ5TmVzdGVkU3VicygpO1xuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90
b3R5cGUuaXNTdWJzY3JpYmVkID0gZnVuY3Rpb24gaXNTdWJzY3JpYmVkKCkge1xuICAgICAgICBy
ZXR1cm4gQm9vbGVhbih0aGlzLnN1YnNjcmlwdGlvbikgJiYgdGhpcy5zdWJzY3JpcHRpb24uaXNT
dWJzY3JpYmVkKCk7XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5hZGRFeHRy
YVByb3BzID0gZnVuY3Rpb24gYWRkRXh0cmFQcm9wcyhwcm9wcykge1xuICAgICAgICBpZiAoIXdp
dGhSZWYgJiYgIXJlbmRlckNvdW50UHJvcCAmJiAhKHRoaXMucHJvcHNNb2RlICYmIHRoaXMuc3Vi
c2NyaXB0aW9uKSkgcmV0dXJuIHByb3BzO1xuICAgICAgICAvLyBtYWtlIGEgc2hhbGxvdyBjb3B5
IHNvIHRoYXQgZmllbGRzIGFkZGVkIGRvbid0IGxlYWsgdG8gdGhlIG9yaWdpbmFsIHNlbGVjdG9y
LlxuICAgICAgICAvLyB0aGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZvciAncmVmJyBzaW5j
ZSB0aGF0J3MgYSByZWZlcmVuY2UgYmFjayB0byB0aGUgY29tcG9uZW50XG4gICAgICAgIC8vIGlu
c3RhbmNlLiBhIHNpbmdsZXRvbiBtZW1vaXplZCBzZWxlY3RvciB3b3VsZCB0aGVuIGJlIGhvbGRp
bmcgYSByZWZlcmVuY2UgdG8gdGhlXG4gICAgICAgIC8vIGluc3RhbmNlLCBwcmV2ZW50aW5nIHRo
ZSBpbnN0YW5jZSBmcm9tIGJlaW5nIGdhcmJhZ2UgY29sbGVjdGVkLCBhbmQgdGhhdCB3b3VsZCBi
ZSBiYWRcbiAgICAgICAgdmFyIHdpdGhFeHRyYXMgPSBfZXh0ZW5kcyh7fSwgcHJvcHMpO1xuICAg
ICAgICBpZiAod2l0aFJlZikgd2l0aEV4dHJhcy5yZWYgPSB0aGlzLnNldFdyYXBwZWRJbnN0YW5j
ZTtcbiAgICAgICAgaWYgKHJlbmRlckNvdW50UHJvcCkgd2l0aEV4dHJhc1tyZW5kZXJDb3VudFBy
b3BdID0gdGhpcy5yZW5kZXJDb3VudCsrO1xuICAgICAgICBpZiAodGhpcy5wcm9wc01vZGUgJiYg
dGhpcy5zdWJzY3JpcHRpb24pIHdpdGhFeHRyYXNbc3Vic2NyaXB0aW9uS2V5XSA9IHRoaXMuc3Vi
c2NyaXB0aW9uO1xuICAgICAgICByZXR1cm4gd2l0aEV4dHJhcztcbiAgICAgIH07XG5cbiAgICAg
IENvbm5lY3QucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgICAg
dmFyIHNlbGVjdG9yID0gdGhpcy5zZWxlY3RvcjtcbiAgICAgICAgc2VsZWN0b3Iuc2hvdWxkQ29t
cG9uZW50VXBkYXRlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHNlbGVjdG9yLmVycm9yKSB7XG4g
ICAgICAgICAgdGhyb3cgc2VsZWN0b3IuZXJyb3I7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoV3JhcHBlZENvbXBvbmVudCwgdGhpcy5hZGRFeHRyYVBy
b3BzKHNlbGVjdG9yLnByb3BzKSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJldHVy
biBDb25uZWN0O1xuICAgIH0oQ29tcG9uZW50KTtcblxuICAgIENvbm5lY3QuV3JhcHBlZENvbXBv
bmVudCA9IFdyYXBwZWRDb21wb25lbnQ7XG4gICAgQ29ubmVjdC5kaXNwbGF5TmFtZSA9IGRpc3Bs
YXlOYW1lO1xuICAgIENvbm5lY3QuY2hpbGRDb250ZXh0VHlwZXMgPSBjaGlsZENvbnRleHRUeXBl
cztcbiAgICBDb25uZWN0LmNvbnRleHRUeXBlcyA9IGNvbnRleHRUeXBlcztcbiAgICBDb25uZWN0
LnByb3BUeXBlcyA9IGNvbnRleHRUeXBlcztcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5jb21wb25lbnRX
aWxsVXBkYXRlID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVwZGF0ZSgpIHtcbiAgICAgICAgdmFy
IF90aGlzMiA9IHRoaXM7XG5cbiAgICAgICAgLy8gV2UgYXJlIGhvdCByZWxvYWRpbmchXG4gICAg
ICAgIGlmICh0aGlzLnZlcnNpb24gIT09IHZlcnNpb24pIHtcbiAgICAgICAgICB0aGlzLnZlcnNp
b24gPSB2ZXJzaW9uO1xuICAgICAgICAgIHRoaXMuaW5pdFNlbGVjdG9yKCk7XG5cbiAgICAgICAg
ICAvLyBJZiBhbnkgY29ubmVjdGVkIGRlc2NlbmRhbnRzIGRvbid0IGhvdCByZWxvYWQgKGFuZCBy
ZXN1YnNjcmliZSBpbiB0aGUgcHJvY2VzcyksIHRoZWlyXG4gICAgICAgICAgLy8gbGlzdGVuZXJz
IHdpbGwgYmUgbG9zdCB3aGVuIHdlIHVuc3Vic2NyaWJlLiBVbmZvcnR1bmF0ZWx5LCBieSBjb3B5
aW5nIG92ZXIgYWxsXG4gICAgICAgICAgLy8gbGlzdGVuZXJzLCB0aGlzIGRvZXMgbWVhbiB0aGF0
IHRoZSBvbGQgdmVyc2lvbnMgb2YgY29ubmVjdGVkIGRlc2NlbmRhbnRzIHdpbGwgc3RpbGwgYmVc
biAgICAgICAgICAvLyBub3RpZmllZCBvZiBzdGF0ZSBjaGFuZ2VzOyBob3dldmVyLCB0aGVpciBv
blN0YXRlQ2hhbmdlIGZ1bmN0aW9uIGlzIGEgbm8tb3Agc28gdGhpc1xuICAgICAgICAgIC8vIGlz
bid0IGEgaHVnZSBkZWFsLlxuICAgICAgICAgIHZhciBvbGRMaXN0ZW5lcnMgPSBbXTtcblxuICAg
ICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgb2xkTGlzdGVuZXJz
ID0gdGhpcy5zdWJzY3JpcHRpb24ubGlzdGVuZXJzLmdldCgpO1xuICAgICAgICAgICAgdGhpcy5z
dWJzY3JpcHRpb24udHJ5VW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhp
cy5pbml0U3Vic2NyaXB0aW9uKCk7XG4gICAgICAgICAgaWYgKHNob3VsZEhhbmRsZVN0YXRlQ2hh
bmdlcykge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udHJ5U3Vic2NyaWJlKCk7XG4g
ICAgICAgICAgICBvbGRMaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAg
ICAgICAgICAgICAgcmV0dXJuIF90aGlzMi5zdWJzY3JpcHRpb24ubGlzdGVuZXJzLnN1YnNjcmli
ZShsaXN0ZW5lcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAg
ICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvaXN0U3RhdGljcyhDb25uZWN0LCBXcmFwcGVk
Q29tcG9uZW50KTtcbiAgfTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sg
Rk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb21wb25lbnRzL2Nvbm5l
Y3RBZHZhbmNlZC5qc1xuLy8gbW9kdWxlIGlkID0gOTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwi
aW1wb3J0IHZlcmlmeVBsYWluT2JqZWN0IGZyb20gJy4uL3V0aWxzL3ZlcmlmeVBsYWluT2JqZWN0
JztcblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBNYXBUb1Byb3BzQ29uc3RhbnQoZ2V0Q29uc3RhbnQp
IHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGluaXRDb25zdGFudFNlbGVjdG9yKGRpc3BhdGNoLCBvcHRp
b25zKSB7XG4gICAgdmFyIGNvbnN0YW50ID0gZ2V0Q29uc3RhbnQoZGlzcGF0Y2gsIG9wdGlvbnMp
O1xuXG4gICAgZnVuY3Rpb24gY29uc3RhbnRTZWxlY3RvcigpIHtcbiAgICAgIHJldHVybiBjb25z
dGFudDtcbiAgICB9XG4gICAgY29uc3RhbnRTZWxlY3Rvci5kZXBlbmRzT25Pd25Qcm9wcyA9IGZh
bHNlO1xuICAgIHJldHVybiBjb25zdGFudFNlbGVjdG9yO1xuICB9O1xufVxuXG4vLyBkZXBlbmRz
T25Pd25Qcm9wcyBpcyB1c2VkIGJ5IGNyZWF0ZU1hcFRvUHJvcHNQcm94eSB0byBkZXRlcm1pbmUg
d2hldGhlciB0byBwYXNzIHByb3BzIGFzIGFyZ3Ncbi8vIHRvIHRoZSBtYXBUb1Byb3BzIGZ1bmN0
aW9uIGJlaW5nIHdyYXBwZWQuIEl0IGlzIGFsc28gdXNlZCBieSBtYWtlUHVyZVByb3BzU2VsZWN0
b3IgdG8gZGV0ZXJtaW5lXG4vLyB3aGV0aGVyIG1hcFRvUHJvcHMgbmVlZHMgdG8gYmUgaW52b2tl
ZCB3aGVuIHByb3BzIGhhdmUgY2hhbmdlZC5cbi8vIFxuLy8gQSBsZW5ndGggb2Ygb25lIHNpZ25h
bHMgdGhhdCBtYXBUb1Byb3BzIGRvZXMgbm90IGRlcGVuZCBvbiBwcm9wcyBmcm9tIHRoZSBwYXJl
bnQgY29tcG9uZW50LlxuLy8gQSBsZW5ndGggb2YgemVybyBpcyBhc3N1bWVkIHRvIG1lYW4gbWFw
VG9Qcm9wcyBpcyBnZXR0aW5nIGFyZ3MgdmlhIGFyZ3VtZW50cyBvciAuLi5hcmdzIGFuZFxuLy8g
dGhlcmVmb3JlIG5vdCByZXBvcnRpbmcgaXRzIGxlbmd0aCBhY2N1cmF0ZWx5Li5cbmV4cG9ydCBm
dW5jdGlvbiBnZXREZXBlbmRzT25Pd25Qcm9wcyhtYXBUb1Byb3BzKSB7XG4gIHJldHVybiBtYXBU
b1Byb3BzLmRlcGVuZHNPbk93blByb3BzICE9PSBudWxsICYmIG1hcFRvUHJvcHMuZGVwZW5kc09u
T3duUHJvcHMgIT09IHVuZGVmaW5lZCA/IEJvb2xlYW4obWFwVG9Qcm9wcy5kZXBlbmRzT25Pd25Q
cm9wcykgOiBtYXBUb1Byb3BzLmxlbmd0aCAhPT0gMTtcbn1cblxuLy8gVXNlZCBieSB3aGVuTWFw
U3RhdGVUb1Byb3BzSXNGdW5jdGlvbiBhbmQgd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzRnVuY3Rp
b24sXG4vLyB0aGlzIGZ1bmN0aW9uIHdyYXBzIG1hcFRvUHJvcHMgaW4gYSBwcm94eSBmdW5jdGlv
biB3aGljaCBkb2VzIHNldmVyYWwgdGhpbmdzOlxuLy8gXG4vLyAgKiBEZXRlY3RzIHdoZXRoZXIg
dGhlIG1hcFRvUHJvcHMgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGRlcGVuZHMgb24gcHJvcHMsIHdo
aWNoXG4vLyAgICBpcyB1c2VkIGJ5IHNlbGVjdG9yRmFjdG9yeSB0byBkZWNpZGUgaWYgaXQgc2hv
dWxkIHJlaW52b2tlIG9uIHByb3BzIGNoYW5nZXMuXG4vLyAgICBcbi8vICAqIE9uIGZpcnN0IGNh
bGwsIGhhbmRsZXMgbWFwVG9Qcm9wcyBpZiByZXR1cm5zIGFub3RoZXIgZnVuY3Rpb24sIGFuZCB0
cmVhdHMgdGhhdFxuLy8gICAgbmV3IGZ1bmN0aW9uIGFzIHRoZSB0cnVlIG1hcFRvUHJvcHMgZm9y
IHN1YnNlcXVlbnQgY2FsbHMuXG4vLyAgICBcbi8vICAqIE9uIGZpcnN0IGNhbGwsIHZlcmlmaWVz
IHRoZSBmaXJzdCByZXN1bHQgaXMgYSBwbGFpbiBvYmplY3QsIGluIG9yZGVyIHRvIHdhcm5cbi8v
ICAgIHRoZSBkZXZlbG9wZXIgdGhhdCB0aGVpciBtYXBUb1Byb3BzIGZ1bmN0aW9uIGlzIG5vdCBy
ZXR1cm5pbmcgYSB2YWxpZCByZXN1bHQuXG4vLyAgICBcbmV4cG9ydCBmdW5jdGlvbiB3cmFwTWFw
VG9Qcm9wc0Z1bmMobWFwVG9Qcm9wcywgbWV0aG9kTmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24g
aW5pdFByb3h5U2VsZWN0b3IoZGlzcGF0Y2gsIF9yZWYpIHtcbiAgICB2YXIgZGlzcGxheU5hbWUg
PSBfcmVmLmRpc3BsYXlOYW1lO1xuXG4gICAgdmFyIHByb3h5ID0gZnVuY3Rpb24gbWFwVG9Qcm9w
c1Byb3h5KHN0YXRlT3JEaXNwYXRjaCwgb3duUHJvcHMpIHtcbiAgICAgIHJldHVybiBwcm94eS5k
ZXBlbmRzT25Pd25Qcm9wcyA/IHByb3h5Lm1hcFRvUHJvcHMoc3RhdGVPckRpc3BhdGNoLCBvd25Q
cm9wcykgOiBwcm94eS5tYXBUb1Byb3BzKHN0YXRlT3JEaXNwYXRjaCk7XG4gICAgfTtcblxuICAg
IC8vIGFsbG93IGRldGVjdEZhY3RvcnlBbmRWZXJpZnkgdG8gZ2V0IG93blByb3BzXG4gICAgcHJv
eHkuZGVwZW5kc09uT3duUHJvcHMgPSB0cnVlO1xuXG4gICAgcHJveHkubWFwVG9Qcm9wcyA9IGZ1
bmN0aW9uIGRldGVjdEZhY3RvcnlBbmRWZXJpZnkoc3RhdGVPckRpc3BhdGNoLCBvd25Qcm9wcykg
e1xuICAgICAgcHJveHkubWFwVG9Qcm9wcyA9IG1hcFRvUHJvcHM7XG4gICAgICBwcm94eS5kZXBl
bmRzT25Pd25Qcm9wcyA9IGdldERlcGVuZHNPbk93blByb3BzKG1hcFRvUHJvcHMpO1xuICAgICAg
dmFyIHByb3BzID0gcHJveHkoc3RhdGVPckRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cbiAgICAgIGlm
ICh0eXBlb2YgcHJvcHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcHJveHkubWFwVG9Qcm9w
cyA9IHByb3BzO1xuICAgICAgICBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA9IGdldERlcGVuZHNP
bk93blByb3BzKHByb3BzKTtcbiAgICAgICAgcHJvcHMgPSBwcm94eShzdGF0ZU9yRGlzcGF0Y2gs
IG93blByb3BzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHZlcmlmeVBsYWluT2JqZWN0KHByb3BzLCBkaXNwbGF5TmFtZSwgbWV0
aG9kTmFtZSk7XG5cbiAgICAgIHJldHVybiBwcm9wcztcbiAgICB9O1xuXG4gICAgcmV0dXJuIHBy
b3h5O1xuICB9O1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJc
bi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2Nvbm5lY3Qvd3JhcE1hcFRvUHJvcHMu
anNcbi8vIG1vZHVsZSBpZCA9IDkyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImltcG9ydCBSZWFj
dCwgeyBDb21wb25lbnQsIFByb3BUeXBlcyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGNsYXNzbmFt
ZXMgZnJvbSAnY2xhc3NuYW1lcydcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9kb1RleHRJbnB1
dCBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgb25TYXZl
OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIHRleHQ6IFByb3BUeXBlcy5zdHJpbmcs
XG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZWRpdGluZzogUHJvcFR5
cGVzLmJvb2wsXG4gICAgbmV3VG9kbzogUHJvcFR5cGVzLmJvb2xcbiAgfVxuXG4gIHN0YXRlID0g
e1xuICAgIHRleHQ6IHRoaXMucHJvcHMudGV4dCB8fCAnJ1xuICB9XG5cbiAgaGFuZGxlU3VibWl0
ID0gZSA9PiB7XG4gICAgY29uc3QgdGV4dCA9IGUudGFyZ2V0LnZhbHVlLnRyaW0oKVxuICAgIGlm
IChlLndoaWNoID09PSAxMykge1xuICAgICAgdGhpcy5wcm9wcy5vblNhdmUodGV4dClcbiAgICAg
IGlmICh0aGlzLnByb3BzLm5ld1RvZG8pIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHRleHQ6
ICcnIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ2hhbmdlID0gZSA9PiB7XG4g
ICAgdGhpcy5zZXRTdGF0ZSh7IHRleHQ6IGUudGFyZ2V0LnZhbHVlIH0pXG4gIH1cblxuICBoYW5k
bGVCbHVyID0gZSA9PiB7XG4gICAgaWYgKCF0aGlzLnByb3BzLm5ld1RvZG8pIHtcbiAgICAgIHRo
aXMucHJvcHMub25TYXZlKGUudGFyZ2V0LnZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigp
IHtcbiAgICByZXR1cm4gKFxuICAgICAgPGlucHV0IGNsYXNzTmFtZT17XG4gICAgICAgIGNsYXNz
bmFtZXMoe1xuICAgICAgICAgIGVkaXQ6IHRoaXMucHJvcHMuZWRpdGluZyxcbiAgICAgICAgICAn
bmV3LXRvZG8nOiB0aGlzLnByb3BzLm5ld1RvZG9cbiAgICAgICAgfSl9XG4gICAgICAgIHR5cGU9
XCJ0ZXh0XCJcbiAgICAgICAgcGxhY2Vob2xkZXI9e3RoaXMucHJvcHMucGxhY2Vob2xkZXJ9XG4g
ICAgICAgIGF1dG9Gb2N1cz1cInRydWVcIlxuICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS50ZXh0
fVxuICAgICAgICBvbkJsdXI9e3RoaXMuaGFuZGxlQmx1cn1cbiAgICAgICAgb25DaGFuZ2U9e3Ro
aXMuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbktleURvd249e3RoaXMuaGFuZGxlU3VibWl0fSAv
PlxuICAgIClcbiAgfVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2Nv
bXBvbmVudHMvVG9kb1RleHRJbnB1dC5qcyIsImV4cG9ydCBjb25zdCBTSE9XX0FMTCA9ICdzaG93
X2FsbCdcbmV4cG9ydCBjb25zdCBTSE9XX0NPTVBMRVRFRCA9ICdzaG93X2NvbXBsZXRlZCdcbmV4
cG9ydCBjb25zdCBTSE9XX0FDVElWRSA9ICdzaG93X2FjdGl2ZSdcblxuXG5cbi8vIFdFQlBBQ0sg
Rk9PVEVSIC8vXG4vLyAuL3NyYy9jb25zdGFudHMvVG9kb0ZpbHRlcnMuanMiLCJleHBvcnQgY29u
c3QgQUREX1RPRE8gPSAnQUREX1RPRE8nXG5leHBvcnQgY29uc3QgREVMRVRFX1RPRE8gPSAnREVM
RVRFX1RPRE8nXG5leHBvcnQgY29uc3QgRURJVF9UT0RPID0gJ0VESVRfVE9ETydcbmV4cG9ydCBj
b25zdCBDT01QTEVURV9UT0RPID0gJ0NPTVBMRVRFX1RPRE8nXG5leHBvcnQgY29uc3QgQ09NUExF
VEVfQUxMID0gJ0NPTVBMRVRFX0FMTCdcbmV4cG9ydCBjb25zdCBDTEVBUl9DT01QTEVURUQgPSAn
Q0xFQVJfQ09NUExFVEVEJ1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2Nv
bnN0YW50cy9BY3Rpb25UeXBlcy5qcyIsIi8vIEByZW1vdmUtb24tZWplY3QtYmVnaW5cbi8qKlxu
ICogQ29weXJpZ2h0IChjKSAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuLy8gQHJlbW92ZS1vbi1lamVjdC1lbmRcbid1c2Ug
c3RyaWN0JztcblxuaWYgKHR5cGVvZiBQcm9taXNlID09PSAndW5kZWZpbmVkJykge1xuICAvLyBS
ZWplY3Rpb24gdHJhY2tpbmcgcHJldmVudHMgYSBjb21tb24gaXNzdWUgd2hlcmUgUmVhY3QgZ2V0
cyBpbnRvIGFuXG4gIC8vIGluY29uc2lzdGVudCBzdGF0ZSBkdWUgdG8gYW4gZXJyb3IsIGJ1dCBp
dCBnZXRzIHN3YWxsb3dlZCBieSBhIFByb21pc2UsXG4gIC8vIGFuZCB0aGUgdXNlciBoYXMgbm8g
aWRlYSB3aGF0IGNhdXNlcyBSZWFjdCdzIGVycmF0aWMgZnV0dXJlIGJlaGF2aW9yLlxuICByZXF1
aXJlKCdwcm9taXNlL2xpYi9yZWplY3Rpb24tdHJhY2tpbmcnKS5lbmFibGUoKTtcbiAgd2luZG93
LlByb21pc2UgPSByZXF1aXJlKCdwcm9taXNlL2xpYi9lczYtZXh0ZW5zaW9ucy5qcycpO1xufVxu
XG4vLyBmZXRjaCgpIHBvbHlmaWxsIGZvciBtYWtpbmcgQVBJIGNhbGxzLlxucmVxdWlyZSgnd2hh
dHdnLWZldGNoJyk7XG5cbi8vIE9iamVjdC5hc3NpZ24oKSBpcyBjb21tb25seSB1c2VkIHdpdGgg
UmVhY3QuXG4vLyBJdCB3aWxsIHVzZSB0aGUgbmF0aXZlIGltcGxlbWVudGF0aW9uIGlmIGl0J3Mg
cHJlc2VudCBhbmQgaXNuJ3QgYnVnZ3kuXG5PYmplY3QuYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0
LWFzc2lnbicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxu
Ly8gLi9ub2RlX21vZHVsZXMvcmVhY3Qtc2NyaXB0cy9jb25maWcvcG9seWZpbGxzLmpzXG4vLyBt
b2R1bGUgaWQgPSA5OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG5cbnZh
ciBQcm9taXNlID0gcmVxdWlyZSgnLi9jb3JlJyk7XG5cbnZhciBERUZBVUxUX1dISVRFTElTVCA9
IFtcbiAgUmVmZXJlbmNlRXJyb3IsXG4gIFR5cGVFcnJvcixcbiAgUmFuZ2VFcnJvclxuXTtcblxu
dmFyIGVuYWJsZWQgPSBmYWxzZTtcbmV4cG9ydHMuZGlzYWJsZSA9IGRpc2FibGU7XG5mdW5jdGlv
biBkaXNhYmxlKCkge1xuICBlbmFibGVkID0gZmFsc2U7XG4gIFByb21pc2UuXzQ3ID0gbnVsbDtc
biAgUHJvbWlzZS5fNzEgPSBudWxsO1xufVxuXG5leHBvcnRzLmVuYWJsZSA9IGVuYWJsZTtcbmZ1
bmN0aW9uIGVuYWJsZShvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBp
ZiAoZW5hYmxlZCkgZGlzYWJsZSgpO1xuICBlbmFibGVkID0gdHJ1ZTtcbiAgdmFyIGlkID0gMDtc
biAgdmFyIGRpc3BsYXlJZCA9IDA7XG4gIHZhciByZWplY3Rpb25zID0ge307XG4gIFByb21pc2Uu
XzQ3ID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICBpZiAoXG4gICAgICBwcm9taXNlLl84MyA9
PT0gMiAmJiAvLyBJUyBSRUpFQ1RFRFxuICAgICAgcmVqZWN0aW9uc1twcm9taXNlLl81Nl1cbiAg
ICApIHtcbiAgICAgIGlmIChyZWplY3Rpb25zW3Byb21pc2UuXzU2XS5sb2dnZWQpIHtcbiAgICAg
ICAgb25IYW5kbGVkKHByb21pc2UuXzU2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsZWFy
VGltZW91dChyZWplY3Rpb25zW3Byb21pc2UuXzU2XS50aW1lb3V0KTtcbiAgICAgIH1cbiAgICAg
IGRlbGV0ZSByZWplY3Rpb25zW3Byb21pc2UuXzU2XTtcbiAgICB9XG4gIH07XG4gIFByb21pc2Uu
XzcxID0gZnVuY3Rpb24gKHByb21pc2UsIGVycikge1xuICAgIGlmIChwcm9taXNlLl83NSA9PT0g
MCkgeyAvLyBub3QgeWV0IGhhbmRsZWRcbiAgICAgIHByb21pc2UuXzU2ID0gaWQrKztcbiAgICAg
IHJlamVjdGlvbnNbcHJvbWlzZS5fNTZdID0ge1xuICAgICAgICBkaXNwbGF5SWQ6IG51bGwsXG4g
ICAgICAgIGVycm9yOiBlcnIsXG4gICAgICAgIHRpbWVvdXQ6IHNldFRpbWVvdXQoXG4gICAgICAg
ICAgb25VbmhhbmRsZWQuYmluZChudWxsLCBwcm9taXNlLl81NiksXG4gICAgICAgICAgLy8gRm9y
IHJlZmVyZW5jZSBlcnJvcnMgYW5kIHR5cGUgZXJyb3JzLCB0aGlzIGFsbW9zdCBhbHdheXNcbiAg
ICAgICAgICAvLyBtZWFucyB0aGUgcHJvZ3JhbW1lciBtYWRlIGEgbWlzdGFrZSwgc28gbG9nIHRo
ZW0gYWZ0ZXIganVzdFxuICAgICAgICAgIC8vIDEwMG1zXG4gICAgICAgICAgLy8gb3RoZXJ3aXNl
LCB3YWl0IDIgc2Vjb25kcyB0byBzZWUgaWYgdGhleSBnZXQgaGFuZGxlZFxuICAgICAgICAgIG1h
dGNoV2hpdGVsaXN0KGVyciwgREVGQVVMVF9XSElURUxJU1QpXG4gICAgICAgICAgICA/IDEwMFxu
ICAgICAgICAgICAgOiAyMDAwXG4gICAgICAgICksXG4gICAgICAgIGxvZ2dlZDogZmFsc2VcbiAg
ICAgIH07XG4gICAgfVxuICB9O1xuICBmdW5jdGlvbiBvblVuaGFuZGxlZChpZCkge1xuICAgIGlm
IChcbiAgICAgIG9wdGlvbnMuYWxsUmVqZWN0aW9ucyB8fFxuICAgICAgbWF0Y2hXaGl0ZWxpc3Qo
XG4gICAgICAgIHJlamVjdGlvbnNbaWRdLmVycm9yLFxuICAgICAgICBvcHRpb25zLndoaXRlbGlz
dCB8fCBERUZBVUxUX1dISVRFTElTVFxuICAgICAgKVxuICAgICkge1xuICAgICAgcmVqZWN0aW9u
c1tpZF0uZGlzcGxheUlkID0gZGlzcGxheUlkKys7XG4gICAgICBpZiAob3B0aW9ucy5vblVuaGFu
ZGxlZCkge1xuICAgICAgICByZWplY3Rpb25zW2lkXS5sb2dnZWQgPSB0cnVlO1xuICAgICAgICBv
cHRpb25zLm9uVW5oYW5kbGVkKFxuICAgICAgICAgIHJlamVjdGlvbnNbaWRdLmRpc3BsYXlJZCxc
biAgICAgICAgICByZWplY3Rpb25zW2lkXS5lcnJvclxuICAgICAgICApO1xuICAgICAgfSBlbHNl
IHtcbiAgICAgICAgcmVqZWN0aW9uc1tpZF0ubG9nZ2VkID0gdHJ1ZTtcbiAgICAgICAgbG9nRXJy
b3IoXG4gICAgICAgICAgcmVqZWN0aW9uc1tpZF0uZGlzcGxheUlkLFxuICAgICAgICAgIHJlamVj
dGlvbnNbaWRdLmVycm9yXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGZ1bmN0
aW9uIG9uSGFuZGxlZChpZCkge1xuICAgIGlmIChyZWplY3Rpb25zW2lkXS5sb2dnZWQpIHtcbiAg
ICAgIGlmIChvcHRpb25zLm9uSGFuZGxlZCkge1xuICAgICAgICBvcHRpb25zLm9uSGFuZGxlZChy
ZWplY3Rpb25zW2lkXS5kaXNwbGF5SWQsIHJlamVjdGlvbnNbaWRdLmVycm9yKTtcbiAgICAgIH0g
ZWxzZSBpZiAoIXJlamVjdGlvbnNbaWRdLm9uVW5oYW5kbGVkKSB7XG4gICAgICAgIGNvbnNvbGUu
d2FybihcbiAgICAgICAgICAnUHJvbWlzZSBSZWplY3Rpb24gSGFuZGxlZCAoaWQ6ICcgKyByZWpl
Y3Rpb25zW2lkXS5kaXNwbGF5SWQgKyAnKTonXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUu
d2FybihcbiAgICAgICAgICAnICBUaGlzIG1lYW5zIHlvdSBjYW4gaWdub3JlIGFueSBwcmV2aW91
cyBtZXNzYWdlcyBvZiB0aGUgZm9ybSBcIlBvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVj
dGlvblwiIHdpdGggaWQgJyArXG4gICAgICAgICAgcmVqZWN0aW9uc1tpZF0uZGlzcGxheUlkICsg
Jy4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGxvZ0Vy
cm9yKGlkLCBlcnJvcikge1xuICBjb25zb2xlLndhcm4oJ1Bvc3NpYmxlIFVuaGFuZGxlZCBQcm9t
aXNlIFJlamVjdGlvbiAoaWQ6ICcgKyBpZCArICcpOicpO1xuICB2YXIgZXJyU3RyID0gKGVycm9y
ICYmIChlcnJvci5zdGFjayB8fCBlcnJvcikpICsgJyc7XG4gIGVyclN0ci5zcGxpdCgnXFxuJyku
Zm9yRWFjaChmdW5jdGlvbiAobGluZSkge1xuICAgIGNvbnNvbGUud2FybignICAnICsgbGluZSk7
XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBtYXRjaFdoaXRlbGlzdChlcnJvciwgbGlzdCkge1xuICBy
ZXR1cm4gbGlzdC5zb21lKGZ1bmN0aW9uIChjbHMpIHtcbiAgICByZXR1cm4gZXJyb3IgaW5zdGFu
Y2VvZiBjbHM7XG4gIH0pO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBG
T09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LXNjcmlwdHMvbm9kZV9tb2R1bGVzL3Byb21p
c2UvbGliL3JlamVjdGlvbi10cmFja2luZy5qc1xuLy8gbW9kdWxlIGlkID0gOTlcbi8vIG1vZHVs
ZSBjaHVua3MgPSAwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8vIFVzZSB0aGUgZmFzdGVzdCBtZWFu
cyBwb3NzaWJsZSB0byBleGVjdXRlIGEgdGFzayBpbiBpdHMgb3duIHR1cm4sIHdpdGhcbi8vIHBy
aW9yaXR5IG92ZXIgb3RoZXIgZXZlbnRzIGluY2x1ZGluZyBJTywgYW5pbWF0aW9uLCByZWZsb3cs
IGFuZCByZWRyYXdcbi8vIGV2ZW50cyBpbiBicm93c2Vycy5cbi8vXG4vLyBBbiBleGNlcHRpb24g
dGhyb3duIGJ5IGEgdGFzayB3aWxsIHBlcm1hbmVudGx5IGludGVycnVwdCB0aGUgcHJvY2Vzc2lu
ZyBvZlxuLy8gc3Vic2VxdWVudCB0YXNrcy4gVGhlIGhpZ2hlciBsZXZlbCBgYXNhcGAgZnVuY3Rp
b24gZW5zdXJlcyB0aGF0IGlmIGFuXG4vLyBleGNlcHRpb24gaXMgdGhyb3duIGJ5IGEgdGFzaywg
dGhhdCB0aGUgdGFzayBxdWV1ZSB3aWxsIGNvbnRpbnVlIGZsdXNoaW5nIGFzXG4vLyBzb29uIGFz
IHBvc3NpYmxlLCBidXQgaWYgeW91IHVzZSBgcmF3QXNhcGAgZGlyZWN0bHksIHlvdSBhcmUgcmVz
cG9uc2libGUgdG9cbi8vIGVpdGhlciBlbnN1cmUgdGhhdCBubyBleGNlcHRpb25zIGFyZSB0aHJv
d24gZnJvbSB5b3VyIHRhc2ssIG9yIHRvIG1hbnVhbGx5XG4vLyBjYWxsIGByYXdBc2FwLnJlcXVl
c3RGbHVzaGAgaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93bi5cbm1vZHVsZS5leHBvcnRzID0gcmF3
QXNhcDtcbmZ1bmN0aW9uIHJhd0FzYXAodGFzaykge1xuICAgIGlmICghcXVldWUubGVuZ3RoKSB7
XG4gICAgICAgIHJlcXVlc3RGbHVzaCgpO1xuICAgICAgICBmbHVzaGluZyA9IHRydWU7XG4gICAg
fVxuICAgIC8vIEVxdWl2YWxlbnQgdG8gcHVzaCwgYnV0IGF2b2lkcyBhIGZ1bmN0aW9uIGNhbGwu
XG4gICAgcXVldWVbcXVldWUubGVuZ3RoXSA9IHRhc2s7XG59XG5cbnZhciBxdWV1ZSA9IFtdO1xu
Ly8gT25jZSBhIGZsdXNoIGhhcyBiZWVuIHJlcXVlc3RlZCwgbm8gZnVydGhlciBjYWxscyB0byBg
cmVxdWVzdEZsdXNoYCBhcmVcbi8vIG5lY2Vzc2FyeSB1bnRpbCB0aGUgbmV4dCBgZmx1c2hgIGNv
bXBsZXRlcy5cbnZhciBmbHVzaGluZyA9IGZhbHNlO1xuLy8gYHJlcXVlc3RGbHVzaGAgaXMgYW4g
aW1wbGVtZW50YXRpb24tc3BlY2lmaWMgbWV0aG9kIHRoYXQgYXR0ZW1wdHMgdG8ga2lja1xuLy8g
b2ZmIGEgYGZsdXNoYCBldmVudCBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLiBgZmx1c2hgIHdpbGwg
YXR0ZW1wdCB0byBleGhhdXN0XG4vLyB0aGUgZXZlbnQgcXVldWUgYmVmb3JlIHlpZWxkaW5nIHRv
IHRoZSBicm93c2VyJ3Mgb3duIGV2ZW50IGxvb3AuXG52YXIgcmVxdWVzdEZsdXNoO1xuLy8gVGhl
IHBvc2l0aW9uIG9mIHRoZSBuZXh0IHRhc2sgdG8gZXhlY3V0ZSBpbiB0aGUgdGFzayBxdWV1ZS4g
VGhpcyBpc1xuLy8gcHJlc2VydmVkIGJldHdlZW4gY2FsbHMgdG8gYGZsdXNoYCBzbyB0aGF0IGl0
IGNhbiBiZSByZXN1bWVkIGlmXG4vLyBhIHRhc2sgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cbnZhciBp
bmRleCA9IDA7XG4vLyBJZiBhIHRhc2sgc2NoZWR1bGVzIGFkZGl0aW9uYWwgdGFza3MgcmVjdXJz
aXZlbHksIHRoZSB0YXNrIHF1ZXVlIGNhbiBncm93XG4vLyB1bmJvdW5kZWQuIFRvIHByZXZlbnQg
bWVtb3J5IGV4aGF1c3Rpb24sIHRoZSB0YXNrIHF1ZXVlIHdpbGwgcGVyaW9kaWNhbGx5XG4vLyB0
cnVuY2F0ZSBhbHJlYWR5LWNvbXBsZXRlZCB0YXNrcy5cbnZhciBjYXBhY2l0eSA9IDEwMjQ7XG5c
bi8vIFRoZSBmbHVzaCBmdW5jdGlvbiBwcm9jZXNzZXMgYWxsIHRhc2tzIHRoYXQgaGF2ZSBiZWVu
IHNjaGVkdWxlZCB3aXRoXG4vLyBgcmF3QXNhcGAgdW5sZXNzIGFuZCB1bnRpbCBvbmUgb2YgdGhv
c2UgdGFza3MgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cbi8vIElmIGEgdGFzayB0aHJvd3MgYW4gZXhj
ZXB0aW9uLCBgZmx1c2hgIGVuc3VyZXMgdGhhdCBpdHMgc3RhdGUgd2lsbCByZW1haW5cbi8vIGNv
bnNpc3RlbnQgYW5kIHdpbGwgcmVzdW1lIHdoZXJlIGl0IGxlZnQgb2ZmIHdoZW4gY2FsbGVkIGFn
YWluLlxuLy8gSG93ZXZlciwgYGZsdXNoYCBkb2VzIG5vdCBtYWtlIGFueSBhcnJhbmdlbWVudHMg
dG8gYmUgY2FsbGVkIGFnYWluIGlmIGFuXG4vLyBleGNlcHRpb24gaXMgdGhyb3duLlxuZnVuY3Rp
b24gZmx1c2goKSB7XG4gICAgd2hpbGUgKGluZGV4IDwgcXVldWUubGVuZ3RoKSB7XG4gICAgICAg
IHZhciBjdXJyZW50SW5kZXggPSBpbmRleDtcbiAgICAgICAgLy8gQWR2YW5jZSB0aGUgaW5kZXgg
YmVmb3JlIGNhbGxpbmcgdGhlIHRhc2suIFRoaXMgZW5zdXJlcyB0aGF0IHdlIHdpbGxcbiAgICAg
ICAgLy8gYmVnaW4gZmx1c2hpbmcgb24gdGhlIG5leHQgdGFzayB0aGUgdGFzayB0aHJvd3MgYW4g
ZXJyb3IuXG4gICAgICAgIGluZGV4ID0gaW5kZXggKyAxO1xuICAgICAgICBxdWV1ZVtjdXJyZW50
SW5kZXhdLmNhbGwoKTtcbiAgICAgICAgLy8gUHJldmVudCBsZWFraW5nIG1lbW9yeSBmb3IgbG9u
ZyBjaGFpbnMgb2YgcmVjdXJzaXZlIGNhbGxzIHRvIGBhc2FwYC5cbiAgICAgICAgLy8gSWYgd2Ug
Y2FsbCBgYXNhcGAgd2l0aGluIHRhc2tzIHNjaGVkdWxlZCBieSBgYXNhcGAsIHRoZSBxdWV1ZSB3
aWxsXG4gICAgICAgIC8vIGdyb3csIGJ1dCB0byBhdm9pZCBhbiBPKG4pIHdhbGsgZm9yIGV2ZXJ5
IHRhc2sgd2UgZXhlY3V0ZSwgd2UgZG9uJ3RcbiAgICAgICAgLy8gc2hpZnQgdGFza3Mgb2ZmIHRo
ZSBxdWV1ZSBhZnRlciB0aGV5IGhhdmUgYmVlbiBleGVjdXRlZC5cbiAgICAgICAgLy8gSW5zdGVh
ZCwgd2UgcGVyaW9kaWNhbGx5IHNoaWZ0IDEwMjQgdGFza3Mgb2ZmIHRoZSBxdWV1ZS5cbiAgICAg
ICAgaWYgKGluZGV4ID4gY2FwYWNpdHkpIHtcbiAgICAgICAgICAgIC8vIE1hbnVhbGx5IHNoaWZ0
IGFsbCB2YWx1ZXMgc3RhcnRpbmcgYXQgdGhlIGluZGV4IGJhY2sgdG8gdGhlXG4gICAgICAgICAg
ICAvLyBiZWdpbm5pbmcgb2YgdGhlIHF1ZXVlLlxuICAgICAgICAgICAgZm9yICh2YXIgc2NhbiA9
IDAsIG5ld0xlbmd0aCA9IHF1ZXVlLmxlbmd0aCAtIGluZGV4OyBzY2FuIDwgbmV3TGVuZ3RoOyBz
Y2FuKyspIHtcbiAgICAgICAgICAgICAgICBxdWV1ZVtzY2FuXSA9IHF1ZXVlW3NjYW4gKyBpbmRl
eF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBxdWV1ZS5sZW5ndGggLT0gaW5kZXg7XG4g
ICAgICAgICAgICBpbmRleCA9IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUubGVuZ3Ro
ID0gMDtcbiAgICBpbmRleCA9IDA7XG4gICAgZmx1c2hpbmcgPSBmYWxzZTtcbn1cblxuLy8gYHJl
cXVlc3RGbHVzaGAgaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBzdHJhdGVneSBiYXNlZCBvbiBkYXRh
IGNvbGxlY3RlZCBmcm9tXG4vLyBldmVyeSBhdmFpbGFibGUgU2F1Y2VMYWJzIFNlbGVuaXVtIHdl
YiBkcml2ZXIgd29ya2VyIGF0IHRpbWUgb2Ygd3JpdGluZy5cbi8vIGh0dHBzOi8vZG9jcy5nb29n
bGUuY29tL3NwcmVhZHNoZWV0cy9kLzFtRy01VVlHdXA1cXhHZEVNV2toUDZCV0N6MDUzTlViMkUx
UW9VVFUxNnVBL2VkaXQjZ2lkPTc4MzcyNDU5M1xuXG4vLyBTYWZhcmkgNiBhbmQgNi4xIGZvciBk
ZXNrdG9wLCBpUGFkLCBhbmQgaVBob25lIGFyZSB0aGUgb25seSBicm93c2VycyB0aGF0XG4vLyBo
YXZlIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIgYnV0IG5vdCB1bi1wcmVmaXhlZCBNdXRhdGlvbk9i
c2VydmVyLlxuLy8gTXVzdCB1c2UgYGdsb2JhbGAgb3IgYHNlbGZgIGluc3RlYWQgb2YgYHdpbmRv
d2AgdG8gd29yayBpbiBib3RoIGZyYW1lcyBhbmQgd2ViXG4vLyB3b3JrZXJzLiBgZ2xvYmFsYCBp
cyBhIHByb3Zpc2lvbiBvZiBCcm93c2VyaWZ5LCBNciwgTXJzLCBvciBNb3AuXG5cbi8qIGdsb2Jh
bHMgc2VsZiAqL1xudmFyIHNjb3BlID0gdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/
IGdsb2JhbCA6IHNlbGY7XG52YXIgQnJvd3Nlck11dGF0aW9uT2JzZXJ2ZXIgPSBzY29wZS5NdXRh
dGlvbk9ic2VydmVyIHx8IHNjb3BlLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7XG5cbi8vIE11dGF0
aW9uT2JzZXJ2ZXJzIGFyZSBkZXNpcmFibGUgYmVjYXVzZSB0aGV5IGhhdmUgaGlnaCBwcmlvcml0
eSBhbmQgd29ya1xuLy8gcmVsaWFibHkgZXZlcnl3aGVyZSB0aGV5IGFyZSBpbXBsZW1lbnRlZC5c
bi8vIFRoZXkgYXJlIGltcGxlbWVudGVkIGluIGFsbCBtb2Rlcm4gYnJvd3NlcnMuXG4vL1xuLy8g
LSBBbmRyb2lkIDQtNC4zXG4vLyAtIENocm9tZSAyNi0zNFxuLy8gLSBGaXJlZm94IDE0LTI5XG4v
LyAtIEludGVybmV0IEV4cGxvcmVyIDExXG4vLyAtIGlQYWQgU2FmYXJpIDYtNy4xXG4vLyAtIGlQ
aG9uZSBTYWZhcmkgNy03LjFcbi8vIC0gU2FmYXJpIDYtN1xuaWYgKHR5cGVvZiBCcm93c2VyTXV0
YXRpb25PYnNlcnZlciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmVxdWVzdEZsdXNoID0gbWFr
ZVJlcXVlc3RDYWxsRnJvbU11dGF0aW9uT2JzZXJ2ZXIoZmx1c2gpO1xuXG4vLyBNZXNzYWdlQ2hh
bm5lbHMgYXJlIGRlc2lyYWJsZSBiZWNhdXNlIHRoZXkgZ2l2ZSBkaXJlY3QgYWNjZXNzIHRvIHRo
ZSBIVE1MXG4vLyB0YXNrIHF1ZXVlLCBhcmUgaW1wbGVtZW50ZWQgaW4gSW50ZXJuZXQgRXhwbG9y
ZXIgMTAsIFNhZmFyaSA1LjAtMSwgYW5kIE9wZXJhXG4vLyAxMS0xMiwgYW5kIGluIHdlYiB3b3Jr
ZXJzIGluIG1hbnkgZW5naW5lcy5cbi8vIEFsdGhvdWdoIG1lc3NhZ2UgY2hhbm5lbHMgeWllbGQg
dG8gYW55IHF1ZXVlZCByZW5kZXJpbmcgYW5kIElPIHRhc2tzLCB0aGV5XG4vLyB3b3VsZCBiZSBi
ZXR0ZXIgdGhhbiBpbXBvc2luZyB0aGUgNG1zIGRlbGF5IG9mIHRpbWVycy5cbi8vIEhvd2V2ZXIs
IHRoZXkgZG8gbm90IHdvcmsgcmVsaWFibHkgaW4gSW50ZXJuZXQgRXhwbG9yZXIgb3IgU2FmYXJp
LlxuXG4vLyBJbnRlcm5ldCBFeHBsb3JlciAxMCBpcyB0aGUgb25seSBicm93c2VyIHRoYXQgaGFz
IHNldEltbWVkaWF0ZSBidXQgZG9lc1xuLy8gbm90IGhhdmUgTXV0YXRpb25PYnNlcnZlcnMuXG4v
LyBBbHRob3VnaCBzZXRJbW1lZGlhdGUgeWllbGRzIHRvIHRoZSBicm93c2VyJ3MgcmVuZGVyZXIs
IGl0IHdvdWxkIGJlXG4vLyBwcmVmZXJyYWJsZSB0byBmYWxsaW5nIGJhY2sgdG8gc2V0VGltZW91
dCBzaW5jZSBpdCBkb2VzIG5vdCBoYXZlXG4vLyB0aGUgbWluaW11bSA0bXMgcGVuYWx0eS5cbi8v
IFVuZm9ydHVuYXRlbHkgdGhlcmUgYXBwZWFycyB0byBiZSBhIGJ1ZyBpbiBJbnRlcm5ldCBFeHBs
b3JlciAxMCBNb2JpbGUgKGFuZFxuLy8gRGVza3RvcCB0byBhIGxlc3NlciBleHRlbnQpIHRoYXQg
cmVuZGVycyBib3RoIHNldEltbWVkaWF0ZSBhbmRcbi8vIE1lc3NhZ2VDaGFubmVsIHVzZWxlc3Mg
Zm9yIHRoZSBwdXJwb3NlcyBvZiBBU0FQLlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2tyaXNrb3dh
bC9xL2lzc3Vlcy8zOTZcblxuLy8gVGltZXJzIGFyZSBpbXBsZW1lbnRlZCB1bml2ZXJzYWxseS5c
bi8vIFdlIGZhbGwgYmFjayB0byB0aW1lcnMgaW4gd29ya2VycyBpbiBtb3N0IGVuZ2luZXMsIGFu
ZCBpbiBmb3JlZ3JvdW5kXG4vLyBjb250ZXh0cyBpbiB0aGUgZm9sbG93aW5nIGJyb3dzZXJzLlxu
Ly8gSG93ZXZlciwgbm90ZSB0aGF0IGV2ZW4gdGhpcyBzaW1wbGUgY2FzZSByZXF1aXJlcyBudWFu
Y2VzIHRvIG9wZXJhdGUgaW4gYVxuLy8gYnJvYWQgc3BlY3RydW0gb2YgYnJvd3NlcnMuXG4vL1xu
Ly8gLSBGaXJlZm94IDMtMTNcbi8vIC0gSW50ZXJuZXQgRXhwbG9yZXIgNi05XG4vLyAtIGlQYWQg
U2FmYXJpIDQuM1xuLy8gLSBMeW54IDIuOC43XG59IGVsc2Uge1xuICAgIHJlcXVlc3RGbHVzaCA9
IG1ha2VSZXF1ZXN0Q2FsbEZyb21UaW1lcihmbHVzaCk7XG59XG5cbi8vIGByZXF1ZXN0Rmx1c2hg
IHJlcXVlc3RzIHRoYXQgdGhlIGhpZ2ggcHJpb3JpdHkgZXZlbnQgcXVldWUgYmUgZmx1c2hlZCBh
c1xuLy8gc29vbiBhcyBwb3NzaWJsZS5cbi8vIFRoaXMgaXMgdXNlZnVsIHRvIHByZXZlbnQgYW4g
ZXJyb3IgdGhyb3duIGluIGEgdGFzayBmcm9tIHN0YWxsaW5nIHRoZSBldmVudFxuLy8gcXVldWUg
aWYgdGhlIGV4Y2VwdGlvbiBoYW5kbGVkIGJ5IE5vZGUuanPigJlzXG4vLyBgcHJvY2Vzcy5vbihc
InVuY2F1Z2h0RXhjZXB0aW9uXCIpYCBvciBieSBhIGRvbWFpbi5cbnJhd0FzYXAucmVxdWVzdEZs
dXNoID0gcmVxdWVzdEZsdXNoO1xuXG4vLyBUbyByZXF1ZXN0IGEgaGlnaCBwcmlvcml0eSBldmVu
dCwgd2UgaW5kdWNlIGEgbXV0YXRpb24gb2JzZXJ2ZXIgYnkgdG9nZ2xpbmdcbi8vIHRoZSB0ZXh0
IG9mIGEgdGV4dCBub2RlIGJldHdlZW4gXCIxXCIgYW5kIFwiLTFcIi5cbmZ1bmN0aW9uIG1ha2VS
ZXF1ZXN0Q2FsbEZyb21NdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKSB7XG4gICAgdmFyIHRvZ2ds
ZSA9IDE7XG4gICAgdmFyIG9ic2VydmVyID0gbmV3IEJyb3dzZXJNdXRhdGlvbk9ic2VydmVyKGNh
bGxiYWNrKTtcbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpO1xu
ICAgIG9ic2VydmVyLm9ic2VydmUobm9kZSwge2NoYXJhY3RlckRhdGE6IHRydWV9KTtcbiAgICBy
ZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwoKSB7XG4gICAgICAgIHRvZ2dsZSA9IC10b2dnbGU7
XG4gICAgICAgIG5vZGUuZGF0YSA9IHRvZ2dsZTtcbiAgICB9O1xufVxuXG4vLyBUaGUgbWVzc2Fn
ZSBjaGFubmVsIHRlY2huaXF1ZSB3YXMgZGlzY292ZXJlZCBieSBNYWx0ZSBVYmwgYW5kIHdhcyB0
aGVcbi8vIG9yaWdpbmFsIGZvdW5kYXRpb24gZm9yIHRoaXMgbGlicmFyeS5cbi8vIGh0dHA6Ly93
d3cubm9uYmxvY2tpbmcuaW8vMjAxMS8wNi93aW5kb3duZXh0dGljay5odG1sXG5cbi8vIFNhZmFy
aSA2LjAuNSAoYXQgbGVhc3QpIGludGVybWl0dGVudGx5IGZhaWxzIHRvIGNyZWF0ZSBtZXNzYWdl
IHBvcnRzIG9uIGFcbi8vIHBhZ2UncyBmaXJzdCBsb2FkLiBUaGFua2Z1bGx5LCB0aGlzIHZlcnNp
b24gb2YgU2FmYXJpIHN1cHBvcnRzXG4vLyBNdXRhdGlvbk9ic2VydmVycywgc28gd2UgZG9uJ3Qg
bmVlZCB0byBmYWxsIGJhY2sgaW4gdGhhdCBjYXNlLlxuXG4vLyBmdW5jdGlvbiBtYWtlUmVxdWVz
dENhbGxGcm9tTWVzc2FnZUNoYW5uZWwoY2FsbGJhY2spIHtcbi8vICAgICB2YXIgY2hhbm5lbCA9
IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuLy8gICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0g
Y2FsbGJhY2s7XG4vLyAgICAgcmV0dXJuIGZ1bmN0aW9uIHJlcXVlc3RDYWxsKCkge1xuLy8gICAg
ICAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKDApO1xuLy8gICAgIH07XG4vLyB9XG5cbi8v
IEZvciByZWFzb25zIGV4cGxhaW5lZCBhYm92ZSwgd2UgYXJlIGFsc28gdW5hYmxlIHRvIHVzZSBg
c2V0SW1tZWRpYXRlYFxuLy8gdW5kZXIgYW55IGNpcmN1bXN0YW5jZXMuXG4vLyBFdmVuIGlmIHdl
IHdlcmUsIHRoZXJlIGlzIGFub3RoZXIgYnVnIGluIEludGVybmV0IEV4cGxvcmVyIDEwLlxuLy8g
SXQgaXMgbm90IHN1ZmZpY2llbnQgdG8gYXNzaWduIGBzZXRJbW1lZGlhdGVgIHRvIGByZXF1ZXN0
Rmx1c2hgIGJlY2F1c2Vcbi8vIGBzZXRJbW1lZGlhdGVgIG11c3QgYmUgY2FsbGVkICpieSBuYW1l
KiBhbmQgdGhlcmVmb3JlIG11c3QgYmUgd3JhcHBlZCBpbiBhXG4vLyBjbG9zdXJlLlxuLy8gTmV2
ZXIgZm9yZ2V0LlxuXG4vLyBmdW5jdGlvbiBtYWtlUmVxdWVzdENhbGxGcm9tU2V0SW1tZWRpYXRl
KGNhbGxiYWNrKSB7XG4vLyAgICAgcmV0dXJuIGZ1bmN0aW9uIHJlcXVlc3RDYWxsKCkge1xuLy8g
ICAgICAgICBzZXRJbW1lZGlhdGUoY2FsbGJhY2spO1xuLy8gICAgIH07XG4vLyB9XG5cbi8vIFNh
ZmFyaSA2LjAgaGFzIGEgcHJvYmxlbSB3aGVyZSB0aW1lcnMgd2lsbCBnZXQgbG9zdCB3aGlsZSB0
aGUgdXNlciBpc1xuLy8gc2Nyb2xsaW5nLiBUaGlzIHByb2JsZW0gZG9lcyBub3QgaW1wYWN0IEFT
QVAgYmVjYXVzZSBTYWZhcmkgNi4wIHN1cHBvcnRzXG4vLyBtdXRhdGlvbiBvYnNlcnZlcnMsIHNv
IHRoYXQgaW1wbGVtZW50YXRpb24gaXMgdXNlZCBpbnN0ZWFkLlxuLy8gSG93ZXZlciwgaWYgd2Ug
ZXZlciBlbGVjdCB0byB1c2UgdGltZXJzIGluIFNhZmFyaSwgdGhlIHByZXZhbGVudCB3b3JrLWFy
b3VuZFxuLy8gaXMgdG8gYWRkIGEgc2Nyb2xsIGV2ZW50IGxpc3RlbmVyIHRoYXQgY2FsbHMgZm9y
IGEgZmx1c2guXG5cbi8vIGBzZXRUaW1lb3V0YCBkb2VzIG5vdCBjYWxsIHRoZSBwYXNzZWQgY2Fs
bGJhY2sgaWYgdGhlIGRlbGF5IGlzIGxlc3MgdGhhblxuLy8gYXBwcm94aW1hdGVseSA3IGluIHdl
YiB3b3JrZXJzIGluIEZpcmVmb3ggOCB0aHJvdWdoIDE4LCBhbmQgc29tZXRpbWVzIG5vdFxuLy8g
ZXZlbiB0aGVuLlxuXG5mdW5jdGlvbiBtYWtlUmVxdWVzdENhbGxGcm9tVGltZXIoY2FsbGJhY2sp
IHtcbiAgICByZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwoKSB7XG4gICAgICAgIC8vIFdlIGRp
c3BhdGNoIGEgdGltZW91dCB3aXRoIGEgc3BlY2lmaWVkIGRlbGF5IG9mIDAgZm9yIGVuZ2luZXMg
dGhhdFxuICAgICAgICAvLyBjYW4gcmVsaWFibHkgYWNjb21tb2RhdGUgdGhhdCByZXF1ZXN0LiBU
aGlzIHdpbGwgdXN1YWxseSBiZSBzbmFwcGVkXG4gICAgICAgIC8vIHRvIGEgNCBtaWxpc2Vjb25k
IGRlbGF5LCBidXQgb25jZSB3ZSdyZSBmbHVzaGluZywgdGhlcmUncyBubyBkZWxheVxuICAgICAg
ICAvLyBiZXR3ZWVuIGV2ZW50cy5cbiAgICAgICAgdmFyIHRpbWVvdXRIYW5kbGUgPSBzZXRUaW1l
b3V0KGhhbmRsZVRpbWVyLCAwKTtcbiAgICAgICAgLy8gSG93ZXZlciwgc2luY2UgdGhpcyB0aW1l
ciBnZXRzIGZyZXF1ZW50bHkgZHJvcHBlZCBpbiBGaXJlZm94XG4gICAgICAgIC8vIHdvcmtlcnMs
IHdlIGVubGlzdCBhbiBpbnRlcnZhbCBoYW5kbGUgdGhhdCB3aWxsIHRyeSB0byBmaXJlXG4gICAg
ICAgIC8vIGFuIGV2ZW50IDIwIHRpbWVzIHBlciBzZWNvbmQgdW50aWwgaXQgc3VjY2VlZHMuXG4g
ICAgICAgIHZhciBpbnRlcnZhbEhhbmRsZSA9IHNldEludGVydmFsKGhhbmRsZVRpbWVyLCA1MCk7
XG5cbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlVGltZXIoKSB7XG4gICAgICAgICAgICAvLyBXaGlj
aGV2ZXIgdGltZXIgc3VjY2VlZHMgd2lsbCBjYW5jZWwgYm90aCB0aW1lcnMgYW5kXG4gICAgICAg
ICAgICAvLyBleGVjdXRlIHRoZSBjYWxsYmFjay5cbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0
aW1lb3V0SGFuZGxlKTtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxIYW5kbGUp
O1xuICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbi8vIFRo
aXMgaXMgZm9yIGBhc2FwLmpzYCBvbmx5LlxuLy8gSXRzIG5hbWUgd2lsbCBiZSBwZXJpb2RpY2Fs
bHkgcmFuZG9taXplZCB0byBicmVhayBhbnkgY29kZSB0aGF0IGRlcGVuZHMgb25cbi8vIGl0cyBl
eGlzdGVuY2UuXG5yYXdBc2FwLm1ha2VSZXF1ZXN0Q2FsbEZyb21UaW1lciA9IG1ha2VSZXF1ZXN0
Q2FsbEZyb21UaW1lcjtcblxuLy8gQVNBUCB3YXMgb3JpZ2luYWxseSBhIG5leHRUaWNrIHNoaW0g
aW5jbHVkZWQgaW4gUS4gVGhpcyB3YXMgZmFjdG9yZWQgb3V0XG4vLyBpbnRvIHRoaXMgQVNBUCBw
YWNrYWdlLiBJdCB3YXMgbGF0ZXIgYWRhcHRlZCB0byBSU1ZQIHdoaWNoIG1hZGUgZnVydGhlclxu
Ly8gYW1lbmRtZW50cy4gVGhlc2UgZGVjaXNpb25zLCBwYXJ0aWN1bGFybHkgdG8gbWFyZ2luYWxp
emUgTWVzc2FnZUNoYW5uZWwgYW5kXG4vLyB0byBjYXB0dXJlIHRoZSBNdXRhdGlvbk9ic2VydmVy
IGltcGxlbWVudGF0aW9uIGluIGEgY2xvc3VyZSwgd2VyZSBpbnRlZ3JhdGVkXG4vLyBiYWNrIGlu
dG8gQVNBUCBwcm9wZXIuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGlsZGVpby9yc3ZwLmpzL2Js
b2IvY2RkZjcyMzI1NDZhOWNmODU4NTI0Yjc1Y2RlNmY5ZWRmNzI2MjBhNy9saWIvcnN2cC9hc2Fw
LmpzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25v
ZGVfbW9kdWxlcy9hc2FwL2Jyb3dzZXItcmF3LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDBcbi8vIG1v
ZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnO1xuXG4vL1RoaXMgZmlsZSBjb250YWlucyB0
aGUgRVM2IGV4dGVuc2lvbnMgdG8gdGhlIGNvcmUgUHJvbWlzZXMvQSsgQVBJXG5cbnZhciBQcm9t
aXNlID0gcmVxdWlyZSgnLi9jb3JlLmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtc
blxuLyogU3RhdGljIEZ1bmN0aW9ucyAqL1xuXG52YXIgVFJVRSA9IHZhbHVlUHJvbWlzZSh0cnVl
KTtcbnZhciBGQUxTRSA9IHZhbHVlUHJvbWlzZShmYWxzZSk7XG52YXIgTlVMTCA9IHZhbHVlUHJv
bWlzZShudWxsKTtcbnZhciBVTkRFRklORUQgPSB2YWx1ZVByb21pc2UodW5kZWZpbmVkKTtcbnZh
ciBaRVJPID0gdmFsdWVQcm9taXNlKDApO1xudmFyIEVNUFRZU1RSSU5HID0gdmFsdWVQcm9taXNl
KCcnKTtcblxuZnVuY3Rpb24gdmFsdWVQcm9taXNlKHZhbHVlKSB7XG4gIHZhciBwID0gbmV3IFBy
b21pc2UoUHJvbWlzZS5fNDQpO1xuICBwLl84MyA9IDE7XG4gIHAuXzE4ID0gdmFsdWU7XG4gIHJl
dHVybiBwO1xufVxuUHJvbWlzZS5yZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGlmICh2
YWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHJldHVybiB2YWx1ZTtcblxuICBpZiAodmFsdWUgPT09
IG51bGwpIHJldHVybiBOVUxMO1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFVO
REVGSU5FRDtcbiAgaWYgKHZhbHVlID09PSB0cnVlKSByZXR1cm4gVFJVRTtcbiAgaWYgKHZhbHVl
ID09PSBmYWxzZSkgcmV0dXJuIEZBTFNFO1xuICBpZiAodmFsdWUgPT09IDApIHJldHVybiBaRVJP
O1xuICBpZiAodmFsdWUgPT09ICcnKSByZXR1cm4gRU1QVFlTVFJJTkc7XG5cbiAgaWYgKHR5cGVv
ZiB2YWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4g
ICAgdHJ5IHtcbiAgICAgIHZhciB0aGVuID0gdmFsdWUudGhlbjtcbiAgICAgIGlmICh0eXBlb2Yg
dGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UodGhlbi5i
aW5kKHZhbHVlKSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHJlamVjdChl
eCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhbHVlUHJvbWlzZSh2YWx1ZSk7
XG59O1xuXG5Qcm9taXNlLmFsbCA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgdmFyIGFyZ3MgPSBBcnJh
eS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5j
dGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSByZXR1
cm4gcmVzb2x2ZShbXSk7XG4gICAgdmFyIHJlbWFpbmluZyA9IGFyZ3MubGVuZ3RoO1xuICAgIGZ1
bmN0aW9uIHJlcyhpLCB2YWwpIHtcbiAgICAgIGlmICh2YWwgJiYgKHR5cGVvZiB2YWwgPT09ICdv
YmplY3QnIHx8IHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgIGlmICh2YWwg
aW5zdGFuY2VvZiBQcm9taXNlICYmIHZhbC50aGVuID09PSBQcm9taXNlLnByb3RvdHlwZS50aGVu
KSB7XG4gICAgICAgICAgd2hpbGUgKHZhbC5fODMgPT09IDMpIHtcbiAgICAgICAgICAgIHZhbCA9
IHZhbC5fMTg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2YWwuXzgzID09PSAxKSByZXR1
cm4gcmVzKGksIHZhbC5fMTgpO1xuICAgICAgICAgIGlmICh2YWwuXzgzID09PSAyKSByZWplY3Qo
dmFsLl8xOCk7XG4gICAgICAgICAgdmFsLnRoZW4oZnVuY3Rpb24gKHZhbCkge1xuICAgICAgICAg
ICAgcmVzKGksIHZhbCk7XG4gICAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgICAgICByZXR1cm47
XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHRoZW4gPSB2YWwudGhlbjtcbiAgICAg
ICAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhciBw
ID0gbmV3IFByb21pc2UodGhlbi5iaW5kKHZhbCkpO1xuICAgICAgICAgICAgcC50aGVuKGZ1bmN0
aW9uICh2YWwpIHtcbiAgICAgICAgICAgICAgcmVzKGksIHZhbCk7XG4gICAgICAgICAgICB9LCBy
ZWplY3QpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAg
ICAgfVxuICAgICAgYXJnc1tpXSA9IHZhbDtcbiAgICAgIGlmICgtLXJlbWFpbmluZyA9PT0gMCkg
e1xuICAgICAgICByZXNvbHZlKGFyZ3MpO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlcyhpLCBhcmdzW2ldKTtcbiAg
ICB9XG4gIH0pO1xufTtcblxuUHJvbWlzZS5yZWplY3QgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAg
cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZWpl
Y3QodmFsdWUpO1xuICB9KTtcbn07XG5cblByb21pc2UucmFjZSA9IGZ1bmN0aW9uICh2YWx1ZXMp
IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAg
ICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSl7XG4gICAgICBQcm9taXNlLnJlc29sdmUo
dmFsdWUpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vKiBQ
cm90b3R5cGUgTWV0aG9kcyAqL1xuXG5Qcm9taXNlLnByb3RvdHlwZVsnY2F0Y2gnXSA9IGZ1bmN0
aW9uIChvblJlamVjdGVkKSB7XG4gIHJldHVybiB0aGlzLnRoZW4obnVsbCwgb25SZWplY3RlZCk7
XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9u
b2RlX21vZHVsZXMvcmVhY3Qtc2NyaXB0cy9ub2RlX21vZHVsZXMvcHJvbWlzZS9saWIvZXM2LWV4
dGVuc2lvbnMuanNcbi8vIG1vZHVsZSBpZCA9IDEwMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIo
ZnVuY3Rpb24oc2VsZikge1xuICAndXNlIHN0cmljdCc7XG5cbiAgaWYgKHNlbGYuZmV0Y2gpIHtc
biAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBzdXBwb3J0ID0ge1xuICAgIHNlYXJjaFBhcmFtczog
J1VSTFNlYXJjaFBhcmFtcycgaW4gc2VsZixcbiAgICBpdGVyYWJsZTogJ1N5bWJvbCcgaW4gc2Vs
ZiAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcbiAgICBibG9iOiAnRmlsZVJlYWRlcicgaW4gc2Vs
ZiAmJiAnQmxvYicgaW4gc2VsZiAmJiAoZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAg
ICBuZXcgQmxvYigpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9IGNhdGNoKGUpIHtcbiAg
ICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSkoKSxcbiAgICBmb3JtRGF0YTogJ0Zv
cm1EYXRhJyBpbiBzZWxmLFxuICAgIGFycmF5QnVmZmVyOiAnQXJyYXlCdWZmZXInIGluIHNlbGZc
biAgfVxuXG4gIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyKSB7XG4gICAgdmFyIHZpZXdDbGFzc2Vz
ID0gW1xuICAgICAgJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgICAnW29iamVjdCBVaW50OEFy
cmF5XScsXG4gICAgICAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgICAgJ1tvYmpl
Y3QgSW50MTZBcnJheV0nLFxuICAgICAgJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAgICdb
b2JqZWN0IEludDMyQXJyYXldJyxcbiAgICAgICdbb2JqZWN0IFVpbnQzMkFycmF5XScsXG4gICAg
ICAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICAgICdbb2JqZWN0IEZsb2F0NjRBcnJheV0n
XG4gICAgXVxuXG4gICAgdmFyIGlzRGF0YVZpZXcgPSBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJl
dHVybiBvYmogJiYgRGF0YVZpZXcucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yob2JqKVxuICAgIH1c
blxuICAgIHZhciBpc0FycmF5QnVmZmVyVmlldyA9IEFycmF5QnVmZmVyLmlzVmlldyB8fCBmdW5j
dGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdmlld0NsYXNzZXMuaW5kZXhPZihPYmpl
Y3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSkgPiAtMVxuICAgIH1cbiAgfVxuXG4gIGZ1
bmN0aW9uIG5vcm1hbGl6ZU5hbWUobmFtZSkge1xuICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0
cmluZycpIHtcbiAgICAgIG5hbWUgPSBTdHJpbmcobmFtZSlcbiAgICB9XG4gICAgaWYgKC9bXmEt
ejAtOVxcLSMkJSYnKisuXFxeX2B8fl0vaS50ZXN0KG5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcg
VHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZScpXG4gICAg
fVxuICAgIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIG5vcm1h
bGl6ZVZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtc
biAgICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAg
fVxuXG4gIC8vIEJ1aWxkIGEgZGVzdHJ1Y3RpdmUgaXRlcmF0b3IgZm9yIHRoZSB2YWx1ZSBsaXN0
XG4gIGZ1bmN0aW9uIGl0ZXJhdG9yRm9yKGl0ZW1zKSB7XG4gICAgdmFyIGl0ZXJhdG9yID0ge1xu
ICAgICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGl0ZW1zLnNoaWZ0
KClcbiAgICAgICAgcmV0dXJuIHtkb25lOiB2YWx1ZSA9PT0gdW5kZWZpbmVkLCB2YWx1ZTogdmFs
dWV9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgICAg
IGl0ZXJhdG9yW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJu
IGl0ZXJhdG9yXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZXJhdG9yXG4gIH1cblxu
ICBmdW5jdGlvbiBIZWFkZXJzKGhlYWRlcnMpIHtcbiAgICB0aGlzLm1hcCA9IHt9XG5cbiAgICBp
ZiAoaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpIHtcbiAgICAgIGhlYWRlcnMuZm9yRWFjaChm
dW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICB0aGlzLmFwcGVuZChuYW1lLCB2YWx1ZSlc
biAgICAgIH0sIHRoaXMpXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7
XG4gICAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICAgIHRoaXMu
YXBwZW5kKGhlYWRlclswXSwgaGVhZGVyWzFdKVxuICAgICAgfSwgdGhpcylcbiAgICB9IGVsc2Ug
aWYgKGhlYWRlcnMpIHtcbiAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGhlYWRlcnMp
LmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgICB0aGlzLmFwcGVuZChuYW1lLCBoZWFk
ZXJzW25hbWVdKVxuICAgICAgfSwgdGhpcylcbiAgICB9XG4gIH1cblxuICBIZWFkZXJzLnByb3Rv
dHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICAgIG5hbWUgPSBub3JtYWxp
emVOYW1lKG5hbWUpXG4gICAgdmFsdWUgPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbiAgICB2YXIg
b2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXVxuICAgIHRoaXMubWFwW25hbWVdID0gb2xkVmFsdWUg
PyBvbGRWYWx1ZSsnLCcrdmFsdWUgOiB2YWx1ZVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGVb
J2RlbGV0ZSddID0gZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxp
emVOYW1lKG5hbWUpXVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24o
bmFtZSkge1xuICAgIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gICAgcmV0dXJuIHRoaXMu
aGFzKG5hbWUpID8gdGhpcy5tYXBbbmFtZV0gOiBudWxsXG4gIH1cblxuICBIZWFkZXJzLnByb3Rv
dHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmhhc093blBy
b3BlcnR5KG5vcm1hbGl6ZU5hbWUobmFtZSkpXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5z
ZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICAgIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUo
bmFtZSldID0gbm9ybWFsaXplVmFsdWUodmFsdWUpXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlw
ZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgICBmb3IgKHZhciBu
YW1lIGluIHRoaXMubWFwKSB7XG4gICAgICBpZiAodGhpcy5tYXAuaGFzT3duUHJvcGVydHkobmFt
ZSkpIHtcbiAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFt
ZSwgdGhpcylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5rZXlz
ID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGl0ZW1zID0gW11cbiAgICB0aGlzLmZvckVhY2goZnVu
Y3Rpb24odmFsdWUsIG5hbWUpIHsgaXRlbXMucHVzaChuYW1lKSB9KVxuICAgIHJldHVybiBpdGVy
YXRvckZvcihpdGVtcylcbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0
aW9uKCkge1xuICAgIHZhciBpdGVtcyA9IFtdXG4gICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZh
bHVlKSB7IGl0ZW1zLnB1c2godmFsdWUpIH0pXG4gICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1z
KVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICAg
IHZhciBpdGVtcyA9IFtdXG4gICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7
IGl0ZW1zLnB1c2goW25hbWUsIHZhbHVlXSkgfSlcbiAgICByZXR1cm4gaXRlcmF0b3JGb3IoaXRl
bXMpXG4gIH1cblxuICBpZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICAgIEhlYWRlcnMucHJvdG90
eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzXG4gIH1cblxu
ICBmdW5jdGlvbiBjb25zdW1lZChib2R5KSB7XG4gICAgaWYgKGJvZHkuYm9keVVzZWQpIHtcbiAg
ICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlc
biAgICB9XG4gICAgYm9keS5ib2R5VXNlZCA9IHRydWVcbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbGVS
ZWFkZXJSZWFkeShyZWFkZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVz
b2x2ZSwgcmVqZWN0KSB7XG4gICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAg
ICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdClcbiAgICAgIH1cbiAgICAgIHJlYWRlci5vbmVycm9y
ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpXG4gICAgICB9XG4g
ICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWRCbG9iQXNBcnJheUJ1ZmZlcihibG9iKSB7XG4g
ICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgICB2YXIgcHJvbWlzZSA9IGZpbGVS
ZWFkZXJSZWFkeShyZWFkZXIpXG4gICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpXG4g
ICAgcmV0dXJuIHByb21pc2VcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWRCbG9iQXNUZXh0KGJsb2Ip
IHtcbiAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICAgIHZhciBwcm9taXNlID0g
ZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgICByZWFkZXIucmVhZEFzVGV4dChibG9iKVxuICAg
IHJldHVybiBwcm9taXNlXG4gIH1cblxuICBmdW5jdGlvbiByZWFkQXJyYXlCdWZmZXJBc1RleHQo
YnVmKSB7XG4gICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXG4gICAgdmFyIGNoYXJz
ID0gbmV3IEFycmF5KHZpZXcubGVuZ3RoKVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aWV3
Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGFyc1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodmll
d1tpXSlcbiAgICB9XG4gICAgcmV0dXJuIGNoYXJzLmpvaW4oJycpXG4gIH1cblxuICBmdW5jdGlv
biBidWZmZXJDbG9uZShidWYpIHtcbiAgICBpZiAoYnVmLnNsaWNlKSB7XG4gICAgICByZXR1cm4g
YnVmLnNsaWNlKDApXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJy
YXkoYnVmLmJ5dGVMZW5ndGgpXG4gICAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKVxu
ICAgICAgcmV0dXJuIHZpZXcuYnVmZmVyXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gQm9keSgp
IHtcbiAgICB0aGlzLmJvZHlVc2VkID0gZmFsc2VcblxuICAgIHRoaXMuX2luaXRCb2R5ID0gZnVu
Y3Rpb24oYm9keSkge1xuICAgICAgdGhpcy5fYm9keUluaXQgPSBib2R5XG4gICAgICBpZiAoIWJv
ZHkpIHtcbiAgICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuICAgICAgfSBlbHNlIGlmICh0eXBl
b2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5XG4g
ICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYiAmJiBCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlw
ZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuX2JvZHlCbG9iID0gYm9keVxuICAgICAgfSBlbHNl
IGlmIChzdXBwb3J0LmZvcm1EYXRhICYmIEZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9m
KGJvZHkpKSB7XG4gICAgICAgIHRoaXMuX2JvZHlGb3JtRGF0YSA9IGJvZHlcbiAgICAgIH0gZWxz
ZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5p
c1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keS50b1N0
cmluZygpXG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgc3VwcG9ydC5i
bG9iICYmIGlzRGF0YVZpZXcoYm9keSkpIHtcbiAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVy
ID0gYnVmZmVyQ2xvbmUoYm9keS5idWZmZXIpXG4gICAgICAgIC8vIElFIDEwLTExIGNhbid0IGhh
bmRsZSBhIERhdGFWaWV3IGJvZHkuXG4gICAgICAgIHRoaXMuX2JvZHlJbml0ID0gbmV3IEJsb2Io
W3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pXG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlC
dWZmZXIgJiYgKEFycmF5QnVmZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpIHx8IGlz
QXJyYXlCdWZmZXJWaWV3KGJvZHkpKSkge1xuICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIg
PSBidWZmZXJDbG9uZShib2R5KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCd1bnN1cHBvcnRlZCBCb2R5SW5pdCB0eXBlJylcbiAgICAgIH1cblxuICAgICAgaWYgKCF0
aGlzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSkge1xuICAgICAgICBpZiAodHlwZW9mIGJv
ZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10
eXBlJywgJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCcpXG4gICAgICAgIH0gZWxzZSBpZiAodGhp
cy5fYm9keUJsb2IgJiYgdGhpcy5fYm9keUJsb2IudHlwZSkge1xuICAgICAgICAgIHRoaXMuaGVh
ZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsIHRoaXMuX2JvZHlCbG9iLnR5cGUpXG4gICAgICAgIH0g
ZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlw
ZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29u
dGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVU
Ri04JylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdXBwb3J0LmJsb2Ip
IHtcbiAgICAgIHRoaXMuYmxvYiA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcmVqZWN0ZWQg
PSBjb25zdW1lZCh0aGlzKVxuICAgICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgICByZXR1
cm4gcmVqZWN0ZWRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xu
ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICAg
IH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSkpXG4gICAgICAg
IH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIGJsb2InKVxuICAgICAgICB9IGVs
c2Uge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2Jv
ZHlUZXh0XSkpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5hcnJheUJ1ZmZlciA9
IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAg
ICAgICAgcmV0dXJuIGNvbnN1bWVkKHRoaXMpIHx8IFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5
QXJyYXlCdWZmZXIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYmxv
YigpLnRoZW4ocmVhZEJsb2JBc0FycmF5QnVmZmVyKVxuICAgICAgICB9XG4gICAgICB9XG4gICAg
fVxuXG4gICAgdGhpcy50ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgcmVqZWN0ZWQgPSBj
b25zdW1lZCh0aGlzKVxuICAgICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiByZWpl
Y3RlZFxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgICAgcmV0
dXJuIHJlYWRCbG9iQXNUZXh0KHRoaXMuX2JvZHlCbG9iKVxuICAgICAgfSBlbHNlIGlmICh0aGlz
Ll9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZWFk
QXJyYXlCdWZmZXJBc1RleHQodGhpcy5fYm9keUFycmF5QnVmZmVyKSlcbiAgICAgIH0gZWxzZSBp
ZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQg
bm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAg
IHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpXG4gICAgICB9XG4gICAgfVxu
XG4gICAgaWYgKHN1cHBvcnQuZm9ybURhdGEpIHtcbiAgICAgIHRoaXMuZm9ybURhdGEgPSBmdW5j
dGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oZGVjb2RlKVxuICAgICAg
fVxuICAgIH1cblxuICAgIHRoaXMuanNvbiA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRo
aXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9
XG5cbiAgLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3Jt
YWxpemVkXG4gIHZhciBtZXRob2RzID0gWydERUxFVEUnLCAnR0VUJywgJ0hFQUQnLCAnT1BUSU9O
UycsICdQT1NUJywgJ1BVVCddXG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplTWV0aG9kKG1ldGhvZCkg
e1xuICAgIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgICByZXR1cm4gKG1l
dGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xKSA/IHVwY2FzZWQgOiBtZXRob2RcbiAgfVxuXG4g
IGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9u
cyB8fCB7fVxuICAgIHZhciBib2R5ID0gb3B0aW9ucy5ib2R5XG5cbiAgICBpZiAoaW5wdXQgaW5z
dGFuY2VvZiBSZXF1ZXN0KSB7XG4gICAgICBpZiAoaW5wdXQuYm9keVVzZWQpIHtcbiAgICAgICAg
dGhyb3cgbmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJylcbiAgICAgIH1cbiAgICAgIHRoaXMu
dXJsID0gaW5wdXQudXJsXG4gICAgICB0aGlzLmNyZWRlbnRpYWxzID0gaW5wdXQuY3JlZGVudGlh
bHNcbiAgICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycyA9
IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG4gICAgICB9XG4gICAgICB0aGlzLm1ldGhvZCA9
IGlucHV0Lm1ldGhvZFxuICAgICAgdGhpcy5tb2RlID0gaW5wdXQubW9kZVxuICAgICAgaWYgKCFi
b2R5ICYmIGlucHV0Ll9ib2R5SW5pdCAhPSBudWxsKSB7XG4gICAgICAgIGJvZHkgPSBpbnB1dC5f
Ym9keUluaXRcbiAgICAgICAgaW5wdXQuYm9keVVzZWQgPSB0cnVlXG4gICAgICB9XG4gICAgfSBl
bHNlIHtcbiAgICAgIHRoaXMudXJsID0gU3RyaW5nKGlucHV0KVxuICAgIH1cblxuICAgIHRoaXMu
Y3JlZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzIHx8IHRoaXMuY3JlZGVudGlhbHMgfHwg
J29taXQnXG4gICAgaWYgKG9wdGlvbnMuaGVhZGVycyB8fCAhdGhpcy5oZWFkZXJzKSB7XG4gICAg
ICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gICAgfVxuICAg
IHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlvbnMubWV0aG9kIHx8IHRoaXMubWV0
aG9kIHx8ICdHRVQnKVxuICAgIHRoaXMubW9kZSA9IG9wdGlvbnMubW9kZSB8fCB0aGlzLm1vZGUg
fHwgbnVsbFxuICAgIHRoaXMucmVmZXJyZXIgPSBudWxsXG5cbiAgICBpZiAoKHRoaXMubWV0aG9k
ID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSAmJiBib2R5KSB7XG4gICAgICB0
aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1
ZXN0cycpXG4gICAgfVxuICAgIHRoaXMuX2luaXRCb2R5KGJvZHkpXG4gIH1cblxuICBSZXF1ZXN0
LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgUmVxdWVzdCh0
aGlzLCB7IGJvZHk6IHRoaXMuX2JvZHlJbml0IH0pXG4gIH1cblxuICBmdW5jdGlvbiBkZWNvZGUo
Ym9keSkge1xuICAgIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgICBib2R5LnRyaW0oKS5z
cGxpdCgnJicpLmZvckVhY2goZnVuY3Rpb24oYnl0ZXMpIHtcbiAgICAgIGlmIChieXRlcykge1xu
ICAgICAgICB2YXIgc3BsaXQgPSBieXRlcy5zcGxpdCgnPScpXG4gICAgICAgIHZhciBuYW1lID0g
c3BsaXQuc2hpZnQoKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICB2YXIgdmFsdWUgPSBz
cGxpdC5qb2luKCc9JykucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgZm9ybS5hcHBlbmQo
ZGVjb2RlVVJJQ29tcG9uZW50KG5hbWUpLCBkZWNvZGVVUklDb21wb25lbnQodmFsdWUpKVxuICAg
ICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIGZvcm1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlSGVh
ZGVycyhyYXdIZWFkZXJzKSB7XG4gICAgdmFyIGhlYWRlcnMgPSBuZXcgSGVhZGVycygpXG4gICAg
cmF3SGVhZGVycy5zcGxpdCgvXFxyP1xcbi8pLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAg
ICAgdmFyIHBhcnRzID0gbGluZS5zcGxpdCgnOicpXG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hp
ZnQoKS50cmltKClcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcGFydHMu
am9pbignOicpLnRyaW0oKVxuICAgICAgICBoZWFkZXJzLmFwcGVuZChrZXksIHZhbHVlKVxuICAg
ICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIGhlYWRlcnNcbiAgfVxuXG4gIEJvZHkuY2FsbChSZXF1
ZXN0LnByb3RvdHlwZSlcblxuICBmdW5jdGlvbiBSZXNwb25zZShib2R5SW5pdCwgb3B0aW9ucykg
e1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgb3B0aW9ucyA9IHt9XG4gICAgfVxuXG4gICAg
dGhpcy50eXBlID0gJ2RlZmF1bHQnXG4gICAgdGhpcy5zdGF0dXMgPSAnc3RhdHVzJyBpbiBvcHRp
b25zID8gb3B0aW9ucy5zdGF0dXMgOiAyMDBcbiAgICB0aGlzLm9rID0gdGhpcy5zdGF0dXMgPj0g
MjAwICYmIHRoaXMuc3RhdHVzIDwgMzAwXG4gICAgdGhpcy5zdGF0dXNUZXh0ID0gJ3N0YXR1c1Rl
eHQnIGluIG9wdGlvbnMgPyBvcHRpb25zLnN0YXR1c1RleHQgOiAnT0snXG4gICAgdGhpcy5oZWFk
ZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICAgIHRoaXMudXJsID0gb3B0aW9u
cy51cmwgfHwgJydcbiAgICB0aGlzLl9pbml0Qm9keShib2R5SW5pdClcbiAgfVxuXG4gIEJvZHku
Y2FsbChSZXNwb25zZS5wcm90b3R5cGUpXG5cbiAgUmVzcG9uc2UucHJvdG90eXBlLmNsb25lID0g
ZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xu
ICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICAgIHN0YXR1c1RleHQ6IHRoaXMuc3RhdHVz
VGV4dCxcbiAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG4gICAgICB1
cmw6IHRoaXMudXJsXG4gICAgfSlcbiAgfVxuXG4gIFJlc3BvbnNlLmVycm9yID0gZnVuY3Rpb24o
KSB7XG4gICAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IDAsIHN0
YXR1c1RleHQ6ICcnfSlcbiAgICByZXNwb25zZS50eXBlID0gJ2Vycm9yJ1xuICAgIHJldHVybiBy
ZXNwb25zZVxuICB9XG5cbiAgdmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywg
MzA3LCAzMDhdXG5cbiAgUmVzcG9uc2UucmVkaXJlY3QgPSBmdW5jdGlvbih1cmwsIHN0YXR1cykg
e1xuICAgIGlmIChyZWRpcmVjdFN0YXR1c2VzLmluZGV4T2Yoc3RhdHVzKSA9PT0gLTEpIHtcbiAg
ICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcbiAgICB9XG5c
biAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IHN0YXR1cywgaGVhZGVyczog
e2xvY2F0aW9uOiB1cmx9fSlcbiAgfVxuXG4gIHNlbGYuSGVhZGVycyA9IEhlYWRlcnNcbiAgc2Vs
Zi5SZXF1ZXN0ID0gUmVxdWVzdFxuICBzZWxmLlJlc3BvbnNlID0gUmVzcG9uc2VcblxuICBzZWxm
LmZldGNoID0gZnVuY3Rpb24oaW5wdXQsIGluaXQpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2Uo
ZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1
ZXN0KGlucHV0LCBpbml0KVxuICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpXG5c
biAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSB7
XG4gICAgICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzLFxuICAgICAgICAgIHN0YXR1c1RleHQ6IHho
ci5zdGF0dXNUZXh0LFxuICAgICAgICAgIGhlYWRlcnM6IHBhcnNlSGVhZGVycyh4aHIuZ2V0QWxs
UmVzcG9uc2VIZWFkZXJzKCkgfHwgJycpXG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9ucy51cmwg
PSAncmVzcG9uc2VVUkwnIGluIHhociA/IHhoci5yZXNwb25zZVVSTCA6IG9wdGlvbnMuaGVhZGVy
cy5nZXQoJ1gtUmVxdWVzdC1VUkwnKVxuICAgICAgICB2YXIgYm9keSA9ICdyZXNwb25zZScgaW4g
eGhyID8geGhyLnJlc3BvbnNlIDogeGhyLnJlc3BvbnNlVGV4dFxuICAgICAgICByZXNvbHZlKG5l
dyBSZXNwb25zZShib2R5LCBvcHRpb25zKSlcbiAgICAgIH1cblxuICAgICAgeGhyLm9uZXJyb3Ig
PSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVx
dWVzdCBmYWlsZWQnKSlcbiAgICAgIH1cblxuICAgICAgeGhyLm9udGltZW91dCA9IGZ1bmN0aW9u
KCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxl
ZCcpKVxuICAgICAgfVxuXG4gICAgICB4aHIub3BlbihyZXF1ZXN0Lm1ldGhvZCwgcmVxdWVzdC51
cmwsIHRydWUpXG5cbiAgICAgIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnaW5jbHVkZScp
IHtcbiAgICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWVcbiAgICAgIH1cblxuICAgICAg
aWYgKCdyZXNwb25zZVR5cGUnIGluIHhociAmJiBzdXBwb3J0LmJsb2IpIHtcbiAgICAgICAgeGhy
LnJlc3BvbnNlVHlwZSA9ICdibG9iJ1xuICAgICAgfVxuXG4gICAgICByZXF1ZXN0LmhlYWRlcnMu
Zm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhl
YWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgIH0pXG5cbiAgICAgIHhoci5zZW5kKHR5cGVvZiByZXF1
ZXN0Ll9ib2R5SW5pdCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogcmVxdWVzdC5fYm9keUluaXQp
XG4gICAgfSlcbiAgfVxuICBzZWxmLmZldGNoLnBvbHlmaWxsID0gdHJ1ZVxufSkodHlwZW9mIHNl
bGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8v
Ly8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvd2hhdHdnLWZldGNoL2Zl
dGNoLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0
IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSAncmVhY3QtZG9tJ1xu
aW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tICdyZWR1eCdcbmltcG9ydCB7IFByb3ZpZGVyIH0g
ZnJvbSAncmVhY3QtcmVkdXgnXG5pbXBvcnQgQXBwIGZyb20gJy4vY29udGFpbmVycy9BcHAnXG5p
bXBvcnQgcmVkdWNlciBmcm9tICcuL3JlZHVjZXJzJ1xuaW1wb3J0ICd0b2RvbXZjLWFwcC1jc3Mv
aW5kZXguY3NzJ1xuXG5jb25zdCBzdG9yZSA9IGNyZWF0ZVN0b3JlKHJlZHVjZXIpXG5cbnJlbmRl
cihcbiAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgPEFwcCAvPlxuICA8L1Byb3ZpZGVy
PixcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKVxuKVxuXG5cblxuLy8gV0VCUEFD
SyBGT09URVIgLy9cbi8vIC4vc3JjL2luZGV4LmpzIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0y
MDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBGb3JrZWQgZnJvbSBmYmpzL3dhcm5pbmc6
XG4gKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmJqcy9ibG9iL2U2NmJhMjBhZDViZTQz
M2ViNTQ0MjNmMmIwOTdkODI5MzI0ZDlkZTYvcGFja2FnZXMvZmJqcy9zcmMvX19mb3Jrc19fL3dh
cm5pbmcuanNcbiAqXG4gKiBPbmx5IGNoYW5nZSBpcyB3ZSB1c2UgY29uc29sZS53YXJuIGluc3Rl
YWQgb2YgY29uc29sZS5lcnJvcixcbiAqIGFuZCBkbyBub3RoaW5nIHdoZW4gJ2NvbnNvbGUnIGlz
IG5vdCBzdXBwb3J0ZWQuXG4gKiBUaGlzIHJlYWxseSBzaW1wbGlmaWVzIHRoZSBjb2RlLlxuICog
LS0tXG4gKiBTaW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0
aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1
ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2FsXG4gKiBwYXRocy4gUmVt
b3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBr
ZWVwIHRoZVxuICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuXG4g
Ki9cblxudmFyIGxvd1ByaW9yaXR5V2FybmluZyA9IGZ1bmN0aW9uICgpIHt9O1xuXG5pZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgcHJpbnRXYXJuaW5n
ID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVu
Z3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tl
eSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tl
eV07XG4gICAgfVxuXG4gICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICB2YXIgbWVzc2FnZSA9ICdX
YXJuaW5nOiAnICsgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJl
dHVybiBhcmdzW2FyZ0luZGV4KytdO1xuICAgIH0pO1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAh
PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgICB9XG4g
ICAgdHJ5IHtcbiAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAg
ICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91
IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBj
YXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2Fn
ZSk7XG4gICAgfSBjYXRjaCAoeCkge31cbiAgfTtcblxuICBsb3dQcmlvcml0eVdhcm5pbmcgPSBm
dW5jdGlvbiAoY29uZGl0aW9uLCBmb3JtYXQpIHtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmlu
ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQs
IC4uLmFyZ3MpYCByZXF1aXJlcyBhIHdhcm5pbmcgJyArICdtZXNzYWdlIGFyZ3VtZW50Jyk7XG4g
ICAgfVxuICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3Vt
ZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuMiA+IDIgPyBfbGVuMiAtIDIgOiAwKSwgX2tl
eTIgPSAyOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgIGFyZ3NbX2tleTIgLSAy
XSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgICB9XG5cbiAgICAgIHByaW50V2FybmluZy5hcHBs
eSh1bmRlZmluZWQsIFtmb3JtYXRdLmNvbmNhdChhcmdzKSk7XG4gICAgfVxuICB9O1xufVxuXG5t
b2R1bGUuZXhwb3J0cyA9IGxvd1ByaW9yaXR5V2FybmluZztcblxuXG4vLy8vLy8vLy8vLy8vLy8v
Ly9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvbG93UHJp
b3JpdHlXYXJuaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDRcbi8vIG1vZHVsZSBjaHVua3MgPSAw
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IFBvb2xlZENsYXNzID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xudmFyIFJlYWN0RWxlbWVu
dCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVx
dWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4g
PSByZXF1aXJlKCcuL3RyYXZlcnNlQWxsQ2hpbGRyZW4nKTtcblxudmFyIHR3b0FyZ3VtZW50UG9v
bGVyID0gUG9vbGVkQ2xhc3MudHdvQXJndW1lbnRQb29sZXI7XG52YXIgZm91ckFyZ3VtZW50UG9v
bGVyID0gUG9vbGVkQ2xhc3MuZm91ckFyZ3VtZW50UG9vbGVyO1xuXG52YXIgdXNlclByb3ZpZGVk
S2V5RXNjYXBlUmVnZXggPSAvXFwvKy9nO1xuZnVuY3Rpb24gZXNjYXBlVXNlclByb3ZpZGVkS2V5
KHRleHQpIHtcbiAgcmV0dXJuICgnJyArIHRleHQpLnJlcGxhY2UodXNlclByb3ZpZGVkS2V5RXNj
YXBlUmVnZXgsICckJi8nKTtcbn1cblxuLyoqXG4gKiBQb29sZWRDbGFzcyByZXByZXNlbnRpbmcg
dGhlIGJvb2trZWVwaW5nIGFzc29jaWF0ZWQgd2l0aCBwZXJmb3JtaW5nIGEgY2hpbGRcbiAqIHRy
YXZlcnNhbC4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tzLlxuICpcbiAqIEBjb25z
dHJ1Y3RvciBGb3JFYWNoQm9va0tlZXBpbmdcbiAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBmb3JFYWNo
RnVuY3Rpb24gRnVuY3Rpb24gdG8gcGVyZm9ybSB0cmF2ZXJzYWwgd2l0aC5cbiAqIEBwYXJhbSB7
Pyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBjb250ZXh0IHdpdGguXG4gKi9c
bmZ1bmN0aW9uIEZvckVhY2hCb29rS2VlcGluZyhmb3JFYWNoRnVuY3Rpb24sIGZvckVhY2hDb250
ZXh0KSB7XG4gIHRoaXMuZnVuYyA9IGZvckVhY2hGdW5jdGlvbjtcbiAgdGhpcy5jb250ZXh0ID0g
Zm9yRWFjaENvbnRleHQ7XG4gIHRoaXMuY291bnQgPSAwO1xufVxuRm9yRWFjaEJvb2tLZWVwaW5n
LnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmZ1bmMgPSBudWxs
O1xuICB0aGlzLmNvbnRleHQgPSBudWxsO1xuICB0aGlzLmNvdW50ID0gMDtcbn07XG5Qb29sZWRD
bGFzcy5hZGRQb29saW5nVG8oRm9yRWFjaEJvb2tLZWVwaW5nLCB0d29Bcmd1bWVudFBvb2xlcik7
XG5cbmZ1bmN0aW9uIGZvckVhY2hTaW5nbGVDaGlsZChib29rS2VlcGluZywgY2hpbGQsIG5hbWUp
IHtcbiAgdmFyIGZ1bmMgPSBib29rS2VlcGluZy5mdW5jLFxuICAgICAgY29udGV4dCA9IGJvb2tL
ZWVwaW5nLmNvbnRleHQ7XG5cbiAgZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGlu
Zy5jb3VudCsrKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGNoaWxkcmVuIHRoYXQg
YXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC5cbiAqXG4gKiBTZWUg
aHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwj
cmVhY3QuY2hpbGRyZW4uZm9yZWFjaFxuICpcbiAqIFRoZSBwcm92aWRlZCBmb3JFYWNoRnVuYyhj
aGlsZCwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoXG4gKiBsZWFmIGNoaWxkLlxuICpc
biAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHBh
cmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmb3JFYWNoRnVuY1xuICogQHBhcmFtIHsqfSBmb3JFYWNo
Q29udGV4dCBDb250ZXh0IGZvciBmb3JFYWNoQ29udGV4dC5cbiAqL1xuZnVuY3Rpb24gZm9yRWFj
aENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoRnVuYywgZm9yRWFjaENvbnRleHQpIHtcbiAgaWYg
KGNoaWxkcmVuID09IG51bGwpIHtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgdmFyIHRy
YXZlcnNlQ29udGV4dCA9IEZvckVhY2hCb29rS2VlcGluZy5nZXRQb29sZWQoZm9yRWFjaEZ1bmMs
IGZvckVhY2hDb250ZXh0KTtcbiAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZm9yRWFj
aFNpbmdsZUNoaWxkLCB0cmF2ZXJzZUNvbnRleHQpO1xuICBGb3JFYWNoQm9va0tlZXBpbmcucmVs
ZWFzZSh0cmF2ZXJzZUNvbnRleHQpO1xufVxuXG4vKipcbiAqIFBvb2xlZENsYXNzIHJlcHJlc2Vu
dGluZyB0aGUgYm9va2tlZXBpbmcgYXNzb2NpYXRlZCB3aXRoIHBlcmZvcm1pbmcgYSBjaGlsZFxu
ICogbWFwcGluZy4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tzLlxuICpcbiAqIEBj
b25zdHJ1Y3RvciBNYXBCb29rS2VlcGluZ1xuICogQHBhcmFtIHshKn0gbWFwUmVzdWx0IE9iamVj
dCBjb250YWluaW5nIHRoZSBvcmRlcmVkIG1hcCBvZiByZXN1bHRzLlxuICogQHBhcmFtIHshZnVu
Y3Rpb259IG1hcEZ1bmN0aW9uIEZ1bmN0aW9uIHRvIHBlcmZvcm0gbWFwcGluZyB3aXRoLlxuICog
QHBhcmFtIHs/Kn0gbWFwQ29udGV4dCBDb250ZXh0IHRvIHBlcmZvcm0gbWFwcGluZyB3aXRoLlxu
ICovXG5mdW5jdGlvbiBNYXBCb29rS2VlcGluZyhtYXBSZXN1bHQsIGtleVByZWZpeCwgbWFwRnVu
Y3Rpb24sIG1hcENvbnRleHQpIHtcbiAgdGhpcy5yZXN1bHQgPSBtYXBSZXN1bHQ7XG4gIHRoaXMu
a2V5UHJlZml4ID0ga2V5UHJlZml4O1xuICB0aGlzLmZ1bmMgPSBtYXBGdW5jdGlvbjtcbiAgdGhp
cy5jb250ZXh0ID0gbWFwQ29udGV4dDtcbiAgdGhpcy5jb3VudCA9IDA7XG59XG5NYXBCb29rS2Vl
cGluZy5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5yZXN1bHQg
PSBudWxsO1xuICB0aGlzLmtleVByZWZpeCA9IG51bGw7XG4gIHRoaXMuZnVuYyA9IG51bGw7XG4g
IHRoaXMuY29udGV4dCA9IG51bGw7XG4gIHRoaXMuY291bnQgPSAwO1xufTtcblBvb2xlZENsYXNz
LmFkZFBvb2xpbmdUbyhNYXBCb29rS2VlcGluZywgZm91ckFyZ3VtZW50UG9vbGVyKTtcblxuZnVu
Y3Rpb24gbWFwU2luZ2xlQ2hpbGRJbnRvQ29udGV4dChib29rS2VlcGluZywgY2hpbGQsIGNoaWxk
S2V5KSB7XG4gIHZhciByZXN1bHQgPSBib29rS2VlcGluZy5yZXN1bHQsXG4gICAgICBrZXlQcmVm
aXggPSBib29rS2VlcGluZy5rZXlQcmVmaXgsXG4gICAgICBmdW5jID0gYm9va0tlZXBpbmcuZnVu
YyxcbiAgICAgIGNvbnRleHQgPSBib29rS2VlcGluZy5jb250ZXh0O1xuXG5cbiAgdmFyIG1hcHBl
ZENoaWxkID0gZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGluZy5jb3VudCsrKTtc
biAgaWYgKEFycmF5LmlzQXJyYXkobWFwcGVkQ2hpbGQpKSB7XG4gICAgbWFwSW50b1dpdGhLZXlQ
cmVmaXhJbnRlcm5hbChtYXBwZWRDaGlsZCwgcmVzdWx0LCBjaGlsZEtleSwgZW1wdHlGdW5jdGlv
bi50aGF0UmV0dXJuc0FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChtYXBwZWRDaGlsZCAhPSBudWxs
KSB7XG4gICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChtYXBwZWRDaGlsZCkpIHtc
biAgICAgIG1hcHBlZENoaWxkID0gUmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZUtleShtYXBw
ZWRDaGlsZCxcbiAgICAgIC8vIEtlZXAgYm90aCB0aGUgKG1hcHBlZCkgYW5kIG9sZCBrZXlzIGlm
IHRoZXkgZGlmZmVyLCBqdXN0IGFzXG4gICAgICAvLyB0cmF2ZXJzZUFsbENoaWxkcmVuIHVzZWQg
dG8gZG8gZm9yIG9iamVjdHMgYXMgY2hpbGRyZW5cbiAgICAgIGtleVByZWZpeCArIChtYXBwZWRD
aGlsZC5rZXkgJiYgKCFjaGlsZCB8fCBjaGlsZC5rZXkgIT09IG1hcHBlZENoaWxkLmtleSkgPyBl
c2NhcGVVc2VyUHJvdmlkZWRLZXkobWFwcGVkQ2hpbGQua2V5KSArICcvJyA6ICcnKSArIGNoaWxk
S2V5KTtcbiAgICB9XG4gICAgcmVzdWx0LnB1c2gobWFwcGVkQ2hpbGQpO1xuICB9XG59XG5cbmZ1
bmN0aW9uIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwoY2hpbGRyZW4sIGFycmF5LCBwcmVm
aXgsIGZ1bmMsIGNvbnRleHQpIHtcbiAgdmFyIGVzY2FwZWRQcmVmaXggPSAnJztcbiAgaWYgKHBy
ZWZpeCAhPSBudWxsKSB7XG4gICAgZXNjYXBlZFByZWZpeCA9IGVzY2FwZVVzZXJQcm92aWRlZEtl
eShwcmVmaXgpICsgJy8nO1xuICB9XG4gIHZhciB0cmF2ZXJzZUNvbnRleHQgPSBNYXBCb29rS2Vl
cGluZy5nZXRQb29sZWQoYXJyYXksIGVzY2FwZWRQcmVmaXgsIGZ1bmMsIGNvbnRleHQpO1xuICB0
cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBtYXBTaW5nbGVDaGlsZEludG9Db250ZXh0LCB0
cmF2ZXJzZUNvbnRleHQpO1xuICBNYXBCb29rS2VlcGluZy5yZWxlYXNlKHRyYXZlcnNlQ29udGV4
dCk7XG59XG5cbi8qKlxuICogTWFwcyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lm
aWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuXG4gKlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0
aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLm1hcFxu
ICpcbiAqIFRoZSBwcm92aWRlZCBtYXBGdW5jdGlvbihjaGlsZCwga2V5LCBpbmRleCkgd2lsbCBi
ZSBjYWxsZWQgZm9yIGVhY2hcbiAqIGxlYWYgY2hpbGQuXG4gKlxuICogQHBhcmFtIHs/Kn0gY2hp
bGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCosIGlu
dCl9IGZ1bmMgVGhlIG1hcCBmdW5jdGlvbi5cbiAqIEBwYXJhbSB7Kn0gY29udGV4dCBDb250ZXh0
IGZvciBtYXBGdW5jdGlvbi5cbiAqIEByZXR1cm4ge29iamVjdH0gT2JqZWN0IGNvbnRhaW5pbmcg
dGhlIG9yZGVyZWQgbWFwIG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIG1hcENoaWxkcmVuKGNo
aWxkcmVuLCBmdW5jLCBjb250ZXh0KSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAg
cmV0dXJuIGNoaWxkcmVuO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgbWFwSW50b1dpdGhL
ZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgcmVzdWx0LCBudWxsLCBmdW5jLCBjb250ZXh0KTtc
biAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZm9yRWFjaFNpbmdsZUNoaWxkRHVtbXko
dHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkge1xuICByZXR1cm4gbnVsbDtcbn1cblxuLyoq
XG4gKiBDb3VudCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVj
aWZpZWQgYXNcbiAqIGBwcm9wcy5jaGlsZHJlbmAuXG4gKlxuICogU2VlIGh0dHBzOi8vZmFjZWJv
b2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVu
LmNvdW50XG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWlu
ZXIuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4uXG4gKi9cbmZ1
bmN0aW9uIGNvdW50Q2hpbGRyZW4oY2hpbGRyZW4sIGNvbnRleHQpIHtcbiAgcmV0dXJuIHRyYXZl
cnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hTaW5nbGVDaGlsZER1bW15LCBudWxsKTtc
bn1cblxuLyoqXG4gKiBGbGF0dGVuIGEgY2hpbGRyZW4gb2JqZWN0ICh0eXBpY2FsbHkgc3BlY2lm
aWVkIGFzIGBwcm9wcy5jaGlsZHJlbmApIGFuZFxuICogcmV0dXJuIGFuIGFycmF5IHdpdGggYXBw
cm9wcmlhdGVseSByZS1rZXllZCBjaGlsZHJlbi5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9v
ay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4u
dG9hcnJheVxuICovXG5mdW5jdGlvbiB0b0FycmF5KGNoaWxkcmVuKSB7XG4gIHZhciByZXN1bHQg
PSBbXTtcbiAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgcmVzdWx0LCBu
dWxsLCBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQpO1xuICByZXR1cm4gcmVzdWx0
O1xufVxuXG52YXIgUmVhY3RDaGlsZHJlbiA9IHtcbiAgZm9yRWFjaDogZm9yRWFjaENoaWxkcmVu
LFxuICBtYXA6IG1hcENoaWxkcmVuLFxuICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsOiBt
YXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsLFxuICBjb3VudDogY291bnRDaGlsZHJlbixcbiAg
dG9BcnJheTogdG9BcnJheVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENoaWxkcmVuO1xu
XG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1
bGVzL3JlYWN0L2xpYi9SZWFjdENoaWxkcmVuLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDVcbi8vIG1v
ZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJv
ZEludmFyaWFudCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJp
YW50Jyk7XG5cbi8qKlxuICogU3RhdGljIHBvb2xlcnMuIFNldmVyYWwgY3VzdG9tIHZlcnNpb25z
IGZvciBlYWNoIHBvdGVudGlhbCBudW1iZXIgb2ZcbiAqIGFyZ3VtZW50cy4gQSBjb21wbGV0ZWx5
IGdlbmVyaWMgcG9vbGVyIGlzIGVhc3kgdG8gaW1wbGVtZW50LCBidXQgd291bGRcbiAqIHJlcXVp
cmUgYWNjZXNzaW5nIHRoZSBgYXJndW1lbnRzYCBvYmplY3QuIEluIGVhY2ggb2YgdGhlc2UsIGB0
aGlzYCByZWZlcnMgdG9cbiAqIHRoZSBDbGFzcyBpdHNlbGYsIG5vdCBhbiBpbnN0YW5jZS4gSWYg
YW55IG90aGVycyBhcmUgbmVlZGVkLCBzaW1wbHkgYWRkIHRoZW1cbiAqIGhlcmUsIG9yIGluIHRo
ZWlyIG93biBmaWxlcy5cbiAqL1xudmFyIG9uZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGNv
cHlGaWVsZHNGcm9tKSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5j
ZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBv
cCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGNvcHlGaWVsZHNGcm9tKTtcbiAgICByZXR1
cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhjb3B5RmllbGRz
RnJvbSk7XG4gIH1cbn07XG5cbnZhciB0d29Bcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwg
YTIpIHtcbiAgdmFyIEtsYXNzID0gdGhpcztcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5n
dGgpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG4gICAg
S2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0g
ZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIpO1xuICB9XG59O1xuXG52YXIgdGhy
ZWVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzKSB7XG4gIHZhciBLbGFzcyA9
IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3Rh
bmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2Us
IGExLCBhMiwgYTMpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1
cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMpO1xuICB9XG59O1xuXG52YXIgZm91ckFyZ3VtZW50UG9v
bGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMsIGE0KSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4g
IGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3RhbmNlID0gS2xh
c3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwg
YTMsIGE0KTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5l
dyBLbGFzcyhhMSwgYTIsIGEzLCBhNCk7XG4gIH1cbn07XG5cbnZhciBzdGFuZGFyZFJlbGVhc2Vy
ID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gICEoaW5zdGFu
Y2UgaW5zdGFuY2VvZiBLbGFzcykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnVHJ5aW5nIHRvIHJlbGVhc2UgYW4gaW5zdGFuY2UgaW50
byBhIHBvb2wgb2YgYSBkaWZmZXJlbnQgdHlwZS4nKSA6IF9wcm9kSW52YXJpYW50KCcyNScpIDog
dm9pZCAwO1xuICBpbnN0YW5jZS5kZXN0cnVjdG9yKCk7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBv
b2wubGVuZ3RoIDwgS2xhc3MucG9vbFNpemUpIHtcbiAgICBLbGFzcy5pbnN0YW5jZVBvb2wucHVz
aChpbnN0YW5jZSk7XG4gIH1cbn07XG5cbnZhciBERUZBVUxUX1BPT0xfU0laRSA9IDEwO1xudmFy
IERFRkFVTFRfUE9PTEVSID0gb25lQXJndW1lbnRQb29sZXI7XG5cbi8qKlxuICogQXVnbWVudHMg
YENvcHlDb25zdHJ1Y3RvcmAgdG8gYmUgYSBwb29sYWJsZSBjbGFzcywgYXVnbWVudGluZyBvbmx5
IHRoZSBjbGFzc1xuICogaXRzZWxmIChzdGF0aWNhbGx5KSBub3QgYWRkaW5nIGFueSBwcm90b3R5
cGljYWwgZmllbGRzLiBBbnkgQ29weUNvbnN0cnVjdG9yXG4gKiB5b3UgZ2l2ZSB0aGlzIG1heSBo
YXZlIGEgYHBvb2xTaXplYCBwcm9wZXJ0eSwgYW5kIHdpbGwgbG9vayBmb3IgYVxuICogcHJvdG90
eXBpY2FsIGBkZXN0cnVjdG9yYCBvbiBpbnN0YW5jZXMuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlv
bn0gQ29weUNvbnN0cnVjdG9yIENvbnN0cnVjdG9yIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVzZXQu
XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb29sZXIgQ3VzdG9taXphYmxlIHBvb2xlci5cbiAqL1xu
dmFyIGFkZFBvb2xpbmdUbyA9IGZ1bmN0aW9uIChDb3B5Q29uc3RydWN0b3IsIHBvb2xlcikge1xu
ICAvLyBDYXN0aW5nIGFzIGFueSBzbyB0aGF0IGZsb3cgaWdub3JlcyB0aGUgYWN0dWFsIGltcGxl
bWVudGF0aW9uIGFuZCB0cnVzdHNcbiAgLy8gaXQgdG8gbWF0Y2ggdGhlIHR5cGUgd2UgZGVjbGFy
ZWRcbiAgdmFyIE5ld0tsYXNzID0gQ29weUNvbnN0cnVjdG9yO1xuICBOZXdLbGFzcy5pbnN0YW5j
ZVBvb2wgPSBbXTtcbiAgTmV3S2xhc3MuZ2V0UG9vbGVkID0gcG9vbGVyIHx8IERFRkFVTFRfUE9P
TEVSO1xuICBpZiAoIU5ld0tsYXNzLnBvb2xTaXplKSB7XG4gICAgTmV3S2xhc3MucG9vbFNpemUg
PSBERUZBVUxUX1BPT0xfU0laRTtcbiAgfVxuICBOZXdLbGFzcy5yZWxlYXNlID0gc3RhbmRhcmRS
ZWxlYXNlcjtcbiAgcmV0dXJuIE5ld0tsYXNzO1xufTtcblxudmFyIFBvb2xlZENsYXNzID0ge1xu
ICBhZGRQb29saW5nVG86IGFkZFBvb2xpbmdUbyxcbiAgb25lQXJndW1lbnRQb29sZXI6IG9uZUFy
Z3VtZW50UG9vbGVyLFxuICB0d29Bcmd1bWVudFBvb2xlcjogdHdvQXJndW1lbnRQb29sZXIsXG4g
IHRocmVlQXJndW1lbnRQb29sZXI6IHRocmVlQXJndW1lbnRQb29sZXIsXG4gIGZvdXJBcmd1bWVu
dFBvb2xlcjogZm91ckFyZ3VtZW50UG9vbGVyXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBvb2xl
ZENsYXNzO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4v
bm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9Qb29sZWRDbGFzcy5qc1xuLy8gbW9kdWxlIGlkID0gMTA2
XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQ
cm9kSW52YXJpYW50Jyk7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVh
Y3RDdXJyZW50T3duZXInKTtcbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSByZXF1aXJlKCcuL1Jl
YWN0RWxlbWVudFN5bWJvbCcpO1xuXG52YXIgZ2V0SXRlcmF0b3JGbiA9IHJlcXVpcmUoJy4vZ2V0
SXRlcmF0b3JGbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFu
dCcpO1xudmFyIEtleUVzY2FwZVV0aWxzID0gcmVxdWlyZSgnLi9LZXlFc2NhcGVVdGlscycpO1xu
dmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBTRVBBUkFU
T1IgPSAnLic7XG52YXIgU1VCU0VQQVJBVE9SID0gJzonO1xuXG4vKipcbiAqIFRoaXMgaXMgaW5s
aW5lZCBmcm9tIFJlYWN0RWxlbWVudCBzaW5jZSB0aGlzIGZpbGUgaXMgc2hhcmVkIGJldHdlZW5c
biAqIGlzb21vcnBoaWMgYW5kIHJlbmRlcmVycy4gV2UgY291bGQgZXh0cmFjdCB0aGlzIHRvIGFc
biAqXG4gKi9cblxuLyoqXG4gKiBUT0RPOiBUZXN0IHRoYXQgYSBzaW5nbGUgY2hpbGQgYW5kIGFu
IGFycmF5IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUgc2FtZSBrZXlcbiAqIHBhdHRlcm4uXG4gKi9c
blxudmFyIGRpZFdhcm5BYm91dE1hcHMgPSBmYWxzZTtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIGtl
eSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgY29tcG9uZW50IHdpdGhpbiBhIHNldC5cbiAqXG4g
KiBAcGFyYW0geyp9IGNvbXBvbmVudCBBIGNvbXBvbmVudCB0aGF0IGNvdWxkIGNvbnRhaW4gYSBt
YW51YWwga2V5LlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQgaXMgdXNlZCBp
ZiBhIG1hbnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLlxuICogQHJldHVybiB7c3RyaW5nfVxuICov
XG5mdW5jdGlvbiBnZXRDb21wb25lbnRLZXkoY29tcG9uZW50LCBpbmRleCkge1xuICAvLyBEbyBz
b21lIHR5cGVjaGVja2luZyBoZXJlIHNpbmNlIHdlIGNhbGwgdGhpcyBibGluZGx5LiBXZSB3YW50
IHRvIGVuc3VyZVxuICAvLyB0aGF0IHdlIGRvbid0IGJsb2NrIHBvdGVudGlhbCBmdXR1cmUgRVMg
QVBJcy5cbiAgaWYgKGNvbXBvbmVudCAmJiB0eXBlb2YgY29tcG9uZW50ID09PSAnb2JqZWN0JyAm
JiBjb21wb25lbnQua2V5ICE9IG51bGwpIHtcbiAgICAvLyBFeHBsaWNpdCBrZXlcbiAgICByZXR1
cm4gS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGNvbXBvbmVudC5rZXkpO1xuICB9XG4gIC8vIEltcGxp
Y2l0IGtleSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0XG4gIHJldHVybiBpbmRl
eC50b1N0cmluZygzNik7XG59XG5cbi8qKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRy
ZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0geyFzdHJpbmd9IG5hbWVTb0ZhciBOYW1lIG9m
IHRoZSBrZXkgcGF0aCBzbyBmYXIuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgQ2Fs
bGJhY2sgdG8gaW52b2tlIHdpdGggZWFjaCBjaGlsZCBmb3VuZC5cbiAqIEBwYXJhbSB7Pyp9IHRy
YXZlcnNlQ29udGV4dCBVc2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdGhyb3VnaG91dCB0aGUgdHJh
dmVyc2FsXG4gKiBwcm9jZXNzLlxuICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBj
aGlsZHJlbiBpbiB0aGlzIHN1YnRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRy
ZW5JbXBsKGNoaWxkcmVuLCBuYW1lU29GYXIsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHtc
biAgdmFyIHR5cGUgPSB0eXBlb2YgY2hpbGRyZW47XG5cbiAgaWYgKHR5cGUgPT09ICd1bmRlZmlu
ZWQnIHx8IHR5cGUgPT09ICdib29sZWFuJykge1xuICAgIC8vIEFsbCBvZiB0aGUgYWJvdmUgYXJl
IHBlcmNlaXZlZCBhcyBudWxsLlxuICAgIGNoaWxkcmVuID0gbnVsbDtcbiAgfVxuXG4gIGlmIChj
aGlsZHJlbiA9PT0gbnVsbCB8fCB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09PSAnbnVtYmVy
JyB8fFxuICAvLyBUaGUgZm9sbG93aW5nIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQuIFRo
aXMgbWVhbnMgd2UgY2FuIG9wdGltaXplXG4gIC8vIHNvbWUgY2hlY2tzLiBSZWFjdCBGaWJlciBh
bHNvIGlubGluZXMgdGhpcyBsb2dpYyBmb3Igc2ltaWxhciBwdXJwb3Nlcy5cbiAgdHlwZSA9PT0g
J29iamVjdCcgJiYgY2hpbGRyZW4uJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRSkge1xu
ICAgIGNhbGxiYWNrKHRyYXZlcnNlQ29udGV4dCwgY2hpbGRyZW4sXG4gICAgLy8gSWYgaXQncyB0
aGUgb25seSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUgYXMgaWYgaXQgd2FzIHdyYXBwZWQgaW4gYW4g
YXJyYXlcbiAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0aGUgbnVtYmVyIG9mIGNo
aWxkcmVuIGdyb3dzLlxuICAgIG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgKyBnZXRDb21w
b25lbnRLZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFyKTtcbiAgICByZXR1cm4gMTtcbiAgfVxu
XG4gIHZhciBjaGlsZDtcbiAgdmFyIG5leHROYW1lO1xuICB2YXIgc3VidHJlZUNvdW50ID0gMDsg
Ly8gQ291bnQgb2YgY2hpbGRyZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc3VidHJlZS5cbiAgdmFy
IG5leHROYW1lUHJlZml4ID0gbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiA6IG5hbWVTb0Zh
ciArIFNVQlNFUEFSQVRPUjtcblxuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGls
ZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENv
bXBvbmVudEtleShjaGlsZCwgaSk7XG4gICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxD
aGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtc
biAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKGNo
aWxkcmVuKTtcbiAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgdmFyIGl0ZXJhdG9yID0gaXRl
cmF0b3JGbi5jYWxsKGNoaWxkcmVuKTtcbiAgICAgIHZhciBzdGVwO1xuICAgICAgaWYgKGl0ZXJh
dG9yRm4gIT09IGNoaWxkcmVuLmVudHJpZXMpIHtcbiAgICAgICAgdmFyIGlpID0gMDtcbiAgICAg
ICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIGNo
aWxkID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsg
Z2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpaSsrKTtcbiAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0g
dHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVy
c2VDb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB2YXIgbWFwc0Fz
Q2hpbGRyZW5BZGRlbmR1bSA9ICcnO1xuICAgICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5j
dXJyZW50KSB7XG4gICAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgPSBSZWFj
dEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTtcbiAgICAgICAgICAgIGlmIChtYXBzQXND
aGlsZHJlbk93bmVyTmFtZSkge1xuICAgICAgICAgICAgICBtYXBzQXNDaGlsZHJlbkFkZGVuZHVt
ID0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG1hcHNBc0NoaWxkcmVuT3duZXJO
YW1lICsgJ2AuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZGlkV2FybkFib3V0TWFw
cywgJ1VzaW5nIE1hcHMgYXMgY2hpbGRyZW4gaXMgbm90IHlldCBmdWxseSBzdXBwb3J0ZWQuIEl0
IGlzIGFuICcgKyAnZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtaWdodCBiZSByZW1vdmVkLiBD
b252ZXJ0IGl0IHRvIGEgJyArICdzZXF1ZW5jZSAvIGl0ZXJhYmxlIG9mIGtleWVkIFJlYWN0RWxl
bWVudHMgaW5zdGVhZC4lcycsIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0pIDogdm9pZCAwO1xuICAg
ICAgICAgIGRpZFdhcm5BYm91dE1hcHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEl0
ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFsdWVz
LlxuICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAg
ICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICBpZiAoZW50cnkpIHtcbiAg
ICAgICAgICAgIGNoaWxkID0gZW50cnlbMV07XG4gICAgICAgICAgICBuZXh0TmFtZSA9IG5leHRO
YW1lUHJlZml4ICsgS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGVudHJ5WzBdKSArIFNVQlNFUEFSQVRP
UiArIGdldENvbXBvbmVudEtleShjaGlsZCwgMCk7XG4gICAgICAgICAgICBzdWJ0cmVlQ291bnQg
Kz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJh
dmVyc2VDb250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVs
c2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YXIgYWRkZW5kdW0gPSAnJztcbiAg
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAg
IGFkZGVuZHVtID0gJyBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGls
ZHJlbiwgdXNlIGFuIGFycmF5ICcgKyAnaW5zdGVhZCBvciB3cmFwIHRoZSBvYmplY3QgdXNpbmcg
Y3JlYXRlRnJhZ21lbnQob2JqZWN0KSBmcm9tIHRoZSAnICsgJ1JlYWN0IGFkZC1vbnMuJztcbiAg
ICAgICAgaWYgKGNoaWxkcmVuLl9pc1JlYWN0RWxlbWVudCkge1xuICAgICAgICAgIGFkZGVuZHVt
ID0gXCIgSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgYW4gZWxlbWVudCBjcmVhdGVkIGJ5IGEg
ZGlmZmVyZW50IFwiICsgJ3ZlcnNpb24gb2YgUmVhY3QuIE1ha2Ugc3VyZSB0byB1c2Ugb25seSBv
bmUgY29weSBvZiBSZWFjdC4nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChSZWFjdEN1cnJlbnRP
d25lci5jdXJyZW50KSB7XG4gICAgICAgICAgdmFyIG5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5j
dXJyZW50LmdldE5hbWUoKTtcbiAgICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgYWRk
ZW5kdW0gKz0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xu
ICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIGNoaWxkcmVuU3RyaW5n
ID0gU3RyaW5nKGNoaWxkcmVuKTtcbiAgICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdPYmplY3RzIGFyZSBub3QgdmFs
aWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6ICVzKS4lcycsIGNoaWxkcmVuU3RyaW5nID09PSAn
W29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hp
bGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogX3By
b2RJbnZhcmlhbnQoJzMxJywgY2hpbGRyZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8g
J29iamVjdCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhjaGlsZHJlbikuam9pbignLCAnKSAr
ICd9JyA6IGNoaWxkcmVuU3RyaW5nLCBhZGRlbmR1bSkgOiB2b2lkIDA7XG4gICAgfVxuICB9XG5c
biAgcmV0dXJuIHN1YnRyZWVDb3VudDtcbn1cblxuLyoqXG4gKiBUcmF2ZXJzZXMgY2hpbGRyZW4g
dGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLCBidXRcbiAq
IG1pZ2h0IGFsc28gYmUgc3BlY2lmaWVkIHRocm91Z2ggYXR0cmlidXRlczpcbiAqXG4gKiAtIGB0
cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMuY2hpbGRyZW4sIC4uLilgXG4gKiAtIGB0cmF2
ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMubGVmdFBhbmVsQ2hpbGRyZW4sIC4uLilgXG4gKlxu
ICogVGhlIGB0cmF2ZXJzZUNvbnRleHRgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRoYXQgaXMg
cGFzc2VkIHRocm91Z2ggdGhlXG4gKiBlbnRpcmUgdHJhdmVyc2FsLiBJdCBjYW4gYmUgdXNlZCB0
byBzdG9yZSBhY2N1bXVsYXRpb25zIG9yIGFueXRoaW5nIGVsc2UgdGhhdFxuICogdGhlIGNhbGxi
YWNrIG1pZ2h0IGZpbmQgcmVsZXZhbnQuXG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hp
bGRyZW4gdHJlZSBvYmplY3QuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgVG8gaW52
b2tlIHVwb24gdHJhdmVyc2luZyBlYWNoIGNoaWxkLlxuICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VD
b250ZXh0IENvbnRleHQgZm9yIHRyYXZlcnNhbC5cbiAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBu
dW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuICovXG5mdW5jdGlvbiB0cmF2ZXJz
ZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG4gIGlm
IChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gdHJh
dmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sICcnLCBjYWxsYmFjaywgdHJhdmVyc2VDb250
ZXh0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmF2ZXJzZUFsbENoaWxkcmVuO1xuXG5cbi8v
Ly8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Jl
YWN0L2xpYi90cmF2ZXJzZUFsbENoaWxkcmVuLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDdcbi8vIG1v
ZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG4vKiBnbG9iYWwgU3ltYm9sICovXG5cbnZhciBJVEVSQVRPUl9TWU1C
T0wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVyYXRvcjtcbnZh
ciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBz
cGVjLlxuXG4vKipcbiAqIFJldHVybnMgdGhlIGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlvbiBjb250
YWluZWQgb24gdGhlIGl0ZXJhYmxlIG9iamVjdC5cbiAqXG4gKiBCZSBzdXJlIHRvIGludm9rZSB0
aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRlcmFibGUgYXMgY29udGV4dDpcbiAqXG4gKiAgICAgdmFy
IGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUpO1xuICogICAgIGlmIChpdGVy
YXRvckZuKSB7XG4gKiAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobXlJdGVy
YWJsZSk7XG4gKiAgICAgICAuLi5cbiAqICAgICB9XG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBt
YXliZUl0ZXJhYmxlXG4gKiBAcmV0dXJuIHs/ZnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIGdldEl0
ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuICB2YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRlcmFi
bGUgJiYgKElURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJPTF0g
fHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF0pO1xuICBpZiAodHlwZW9mIGl0
ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gaXRlcmF0b3JGbjtcbiAgfVxu
fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEl0ZXJhdG9yRm47XG5cblxuLy8vLy8vLy8vLy8vLy8v
Ly8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2dldEl0
ZXJhdG9yRm4uanNcbi8vIG1vZHVsZSBpZCA9IDEwOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIv
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8q
KlxuICogRXNjYXBlIGFuZCB3cmFwIGtleSBzbyBpdCBpcyBzYWZlIHRvIHVzZSBhcyBhIHJlYWN0
aWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIGJlIGVzY2FwZWQuXG4gKiBAcmV0dXJu
IHtzdHJpbmd9IHRoZSBlc2NhcGVkIGtleS5cbiAqL1xuXG5mdW5jdGlvbiBlc2NhcGUoa2V5KSB7
XG4gIHZhciBlc2NhcGVSZWdleCA9IC9bPTpdL2c7XG4gIHZhciBlc2NhcGVyTG9va3VwID0ge1xu
ICAgICc9JzogJz0wJyxcbiAgICAnOic6ICc9MidcbiAgfTtcbiAgdmFyIGVzY2FwZWRTdHJpbmcg
PSAoJycgKyBrZXkpLnJlcGxhY2UoZXNjYXBlUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAg
IHJldHVybiBlc2NhcGVyTG9va3VwW21hdGNoXTtcbiAgfSk7XG5cbiAgcmV0dXJuICckJyArIGVz
Y2FwZWRTdHJpbmc7XG59XG5cbi8qKlxuICogVW5lc2NhcGUgYW5kIHVud3JhcCBrZXkgZm9yIGh1
bWFuLXJlYWRhYmxlIGRpc3BsYXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIHVuZXNj
YXBlLlxuICogQHJldHVybiB7c3RyaW5nfSB0aGUgdW5lc2NhcGVkIGtleS5cbiAqL1xuZnVuY3Rp
b24gdW5lc2NhcGUoa2V5KSB7XG4gIHZhciB1bmVzY2FwZVJlZ2V4ID0gLyg9MHw9MikvZztcbiAg
dmFyIHVuZXNjYXBlckxvb2t1cCA9IHtcbiAgICAnPTAnOiAnPScsXG4gICAgJz0yJzogJzonXG4g
IH07XG4gIHZhciBrZXlTdWJzdHJpbmcgPSBrZXlbMF0gPT09ICcuJyAmJiBrZXlbMV0gPT09ICck
JyA/IGtleS5zdWJzdHJpbmcoMikgOiBrZXkuc3Vic3RyaW5nKDEpO1xuXG4gIHJldHVybiAoJycg
KyBrZXlTdWJzdHJpbmcpLnJlcGxhY2UodW5lc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNoKSB7
XG4gICAgcmV0dXJuIHVuZXNjYXBlckxvb2t1cFttYXRjaF07XG4gIH0pO1xufVxuXG52YXIgS2V5
RXNjYXBlVXRpbHMgPSB7XG4gIGVzY2FwZTogZXNjYXBlLFxuICB1bmVzY2FwZTogdW5lc2NhcGVc
bn07XG5cbm1vZHVsZS5leHBvcnRzID0gS2V5RXNjYXBlVXRpbHM7XG5cblxuLy8vLy8vLy8vLy8v
Ly8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QvbGliL0tl
eUVzY2FwZVV0aWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDlcbi8vIG1vZHVsZSBjaHVua3MgPSAw
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG5cbi8qKlxuICogQ3Jl
YXRlIGEgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgSFRNTCB0YWcgZWxlbWVudHMuXG4gKlxuICogQHBy
aXZhdGVcbiAqL1xudmFyIGNyZWF0ZURPTUZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRmFj
dG9yeTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZh
ciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudFZhbGlkYXRv
cicpO1xuICBjcmVhdGVET01GYWN0b3J5ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUZh
Y3Rvcnk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcHBpbmcgZnJvbSBzdXBwb3J0ZWQgSFRN
TCB0YWdzIHRvIGBSZWFjdERPTUNvbXBvbmVudGAgY2xhc3Nlcy5cbiAqXG4gKiBAcHVibGljXG4g
Ki9cbnZhciBSZWFjdERPTUZhY3RvcmllcyA9IHtcbiAgYTogY3JlYXRlRE9NRmFjdG9yeSgnYScp
LFxuICBhYmJyOiBjcmVhdGVET01GYWN0b3J5KCdhYmJyJyksXG4gIGFkZHJlc3M6IGNyZWF0ZURP
TUZhY3RvcnkoJ2FkZHJlc3MnKSxcbiAgYXJlYTogY3JlYXRlRE9NRmFjdG9yeSgnYXJlYScpLFxu
ICBhcnRpY2xlOiBjcmVhdGVET01GYWN0b3J5KCdhcnRpY2xlJyksXG4gIGFzaWRlOiBjcmVhdGVE
T01GYWN0b3J5KCdhc2lkZScpLFxuICBhdWRpbzogY3JlYXRlRE9NRmFjdG9yeSgnYXVkaW8nKSxc
biAgYjogY3JlYXRlRE9NRmFjdG9yeSgnYicpLFxuICBiYXNlOiBjcmVhdGVET01GYWN0b3J5KCdi
YXNlJyksXG4gIGJkaTogY3JlYXRlRE9NRmFjdG9yeSgnYmRpJyksXG4gIGJkbzogY3JlYXRlRE9N
RmFjdG9yeSgnYmRvJyksXG4gIGJpZzogY3JlYXRlRE9NRmFjdG9yeSgnYmlnJyksXG4gIGJsb2Nr
cXVvdGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2Jsb2NrcXVvdGUnKSxcbiAgYm9keTogY3JlYXRlRE9N
RmFjdG9yeSgnYm9keScpLFxuICBicjogY3JlYXRlRE9NRmFjdG9yeSgnYnInKSxcbiAgYnV0dG9u
OiBjcmVhdGVET01GYWN0b3J5KCdidXR0b24nKSxcbiAgY2FudmFzOiBjcmVhdGVET01GYWN0b3J5
KCdjYW52YXMnKSxcbiAgY2FwdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnY2FwdGlvbicpLFxuICBj
aXRlOiBjcmVhdGVET01GYWN0b3J5KCdjaXRlJyksXG4gIGNvZGU6IGNyZWF0ZURPTUZhY3Rvcnko
J2NvZGUnKSxcbiAgY29sOiBjcmVhdGVET01GYWN0b3J5KCdjb2wnKSxcbiAgY29sZ3JvdXA6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2NvbGdyb3VwJyksXG4gIGRhdGE6IGNyZWF0ZURPTUZhY3RvcnkoJ2Rh
dGEnKSxcbiAgZGF0YWxpc3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ2RhdGFsaXN0JyksXG4gIGRkOiBj
cmVhdGVET01GYWN0b3J5KCdkZCcpLFxuICBkZWw6IGNyZWF0ZURPTUZhY3RvcnkoJ2RlbCcpLFxu
ICBkZXRhaWxzOiBjcmVhdGVET01GYWN0b3J5KCdkZXRhaWxzJyksXG4gIGRmbjogY3JlYXRlRE9N
RmFjdG9yeSgnZGZuJyksXG4gIGRpYWxvZzogY3JlYXRlRE9NRmFjdG9yeSgnZGlhbG9nJyksXG4g
IGRpdjogY3JlYXRlRE9NRmFjdG9yeSgnZGl2JyksXG4gIGRsOiBjcmVhdGVET01GYWN0b3J5KCdk
bCcpLFxuICBkdDogY3JlYXRlRE9NRmFjdG9yeSgnZHQnKSxcbiAgZW06IGNyZWF0ZURPTUZhY3Rv
cnkoJ2VtJyksXG4gIGVtYmVkOiBjcmVhdGVET01GYWN0b3J5KCdlbWJlZCcpLFxuICBmaWVsZHNl
dDogY3JlYXRlRE9NRmFjdG9yeSgnZmllbGRzZXQnKSxcbiAgZmlnY2FwdGlvbjogY3JlYXRlRE9N
RmFjdG9yeSgnZmlnY2FwdGlvbicpLFxuICBmaWd1cmU6IGNyZWF0ZURPTUZhY3RvcnkoJ2ZpZ3Vy
ZScpLFxuICBmb290ZXI6IGNyZWF0ZURPTUZhY3RvcnkoJ2Zvb3RlcicpLFxuICBmb3JtOiBjcmVh
dGVET01GYWN0b3J5KCdmb3JtJyksXG4gIGgxOiBjcmVhdGVET01GYWN0b3J5KCdoMScpLFxuICBo
MjogY3JlYXRlRE9NRmFjdG9yeSgnaDInKSxcbiAgaDM6IGNyZWF0ZURPTUZhY3RvcnkoJ2gzJyks
XG4gIGg0OiBjcmVhdGVET01GYWN0b3J5KCdoNCcpLFxuICBoNTogY3JlYXRlRE9NRmFjdG9yeSgn
aDUnKSxcbiAgaDY6IGNyZWF0ZURPTUZhY3RvcnkoJ2g2JyksXG4gIGhlYWQ6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2hlYWQnKSxcbiAgaGVhZGVyOiBjcmVhdGVET01GYWN0b3J5KCdoZWFkZXInKSxcbiAg
aGdyb3VwOiBjcmVhdGVET01GYWN0b3J5KCdoZ3JvdXAnKSxcbiAgaHI6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2hyJyksXG4gIGh0bWw6IGNyZWF0ZURPTUZhY3RvcnkoJ2h0bWwnKSxcbiAgaTogY3JlYXRl
RE9NRmFjdG9yeSgnaScpLFxuICBpZnJhbWU6IGNyZWF0ZURPTUZhY3RvcnkoJ2lmcmFtZScpLFxu
ICBpbWc6IGNyZWF0ZURPTUZhY3RvcnkoJ2ltZycpLFxuICBpbnB1dDogY3JlYXRlRE9NRmFjdG9y
eSgnaW5wdXQnKSxcbiAgaW5zOiBjcmVhdGVET01GYWN0b3J5KCdpbnMnKSxcbiAga2JkOiBjcmVh
dGVET01GYWN0b3J5KCdrYmQnKSxcbiAga2V5Z2VuOiBjcmVhdGVET01GYWN0b3J5KCdrZXlnZW4n
KSxcbiAgbGFiZWw6IGNyZWF0ZURPTUZhY3RvcnkoJ2xhYmVsJyksXG4gIGxlZ2VuZDogY3JlYXRl
RE9NRmFjdG9yeSgnbGVnZW5kJyksXG4gIGxpOiBjcmVhdGVET01GYWN0b3J5KCdsaScpLFxuICBs
aW5rOiBjcmVhdGVET01GYWN0b3J5KCdsaW5rJyksXG4gIG1haW46IGNyZWF0ZURPTUZhY3Rvcnko
J21haW4nKSxcbiAgbWFwOiBjcmVhdGVET01GYWN0b3J5KCdtYXAnKSxcbiAgbWFyazogY3JlYXRl
RE9NRmFjdG9yeSgnbWFyaycpLFxuICBtZW51OiBjcmVhdGVET01GYWN0b3J5KCdtZW51JyksXG4g
IG1lbnVpdGVtOiBjcmVhdGVET01GYWN0b3J5KCdtZW51aXRlbScpLFxuICBtZXRhOiBjcmVhdGVE
T01GYWN0b3J5KCdtZXRhJyksXG4gIG1ldGVyOiBjcmVhdGVET01GYWN0b3J5KCdtZXRlcicpLFxu
ICBuYXY6IGNyZWF0ZURPTUZhY3RvcnkoJ25hdicpLFxuICBub3NjcmlwdDogY3JlYXRlRE9NRmFj
dG9yeSgnbm9zY3JpcHQnKSxcbiAgb2JqZWN0OiBjcmVhdGVET01GYWN0b3J5KCdvYmplY3QnKSxc
biAgb2w6IGNyZWF0ZURPTUZhY3RvcnkoJ29sJyksXG4gIG9wdGdyb3VwOiBjcmVhdGVET01GYWN0
b3J5KCdvcHRncm91cCcpLFxuICBvcHRpb246IGNyZWF0ZURPTUZhY3RvcnkoJ29wdGlvbicpLFxu
ICBvdXRwdXQ6IGNyZWF0ZURPTUZhY3RvcnkoJ291dHB1dCcpLFxuICBwOiBjcmVhdGVET01GYWN0
b3J5KCdwJyksXG4gIHBhcmFtOiBjcmVhdGVET01GYWN0b3J5KCdwYXJhbScpLFxuICBwaWN0dXJl
OiBjcmVhdGVET01GYWN0b3J5KCdwaWN0dXJlJyksXG4gIHByZTogY3JlYXRlRE9NRmFjdG9yeSgn
cHJlJyksXG4gIHByb2dyZXNzOiBjcmVhdGVET01GYWN0b3J5KCdwcm9ncmVzcycpLFxuICBxOiBj
cmVhdGVET01GYWN0b3J5KCdxJyksXG4gIHJwOiBjcmVhdGVET01GYWN0b3J5KCdycCcpLFxuICBy
dDogY3JlYXRlRE9NRmFjdG9yeSgncnQnKSxcbiAgcnVieTogY3JlYXRlRE9NRmFjdG9yeSgncnVi
eScpLFxuICBzOiBjcmVhdGVET01GYWN0b3J5KCdzJyksXG4gIHNhbXA6IGNyZWF0ZURPTUZhY3Rv
cnkoJ3NhbXAnKSxcbiAgc2NyaXB0OiBjcmVhdGVET01GYWN0b3J5KCdzY3JpcHQnKSxcbiAgc2Vj
dGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnc2VjdGlvbicpLFxuICBzZWxlY3Q6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3NlbGVjdCcpLFxuICBzbWFsbDogY3JlYXRlRE9NRmFjdG9yeSgnc21hbGwnKSxcbiAg
c291cmNlOiBjcmVhdGVET01GYWN0b3J5KCdzb3VyY2UnKSxcbiAgc3BhbjogY3JlYXRlRE9NRmFj
dG9yeSgnc3BhbicpLFxuICBzdHJvbmc6IGNyZWF0ZURPTUZhY3RvcnkoJ3N0cm9uZycpLFxuICBz
dHlsZTogY3JlYXRlRE9NRmFjdG9yeSgnc3R5bGUnKSxcbiAgc3ViOiBjcmVhdGVET01GYWN0b3J5
KCdzdWInKSxcbiAgc3VtbWFyeTogY3JlYXRlRE9NRmFjdG9yeSgnc3VtbWFyeScpLFxuICBzdXA6
IGNyZWF0ZURPTUZhY3RvcnkoJ3N1cCcpLFxuICB0YWJsZTogY3JlYXRlRE9NRmFjdG9yeSgndGFi
bGUnKSxcbiAgdGJvZHk6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rib2R5JyksXG4gIHRkOiBjcmVhdGVE
T01GYWN0b3J5KCd0ZCcpLFxuICB0ZXh0YXJlYTogY3JlYXRlRE9NRmFjdG9yeSgndGV4dGFyZWEn
KSxcbiAgdGZvb3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rmb290JyksXG4gIHRoOiBjcmVhdGVET01G
YWN0b3J5KCd0aCcpLFxuICB0aGVhZDogY3JlYXRlRE9NRmFjdG9yeSgndGhlYWQnKSxcbiAgdGlt
ZTogY3JlYXRlRE9NRmFjdG9yeSgndGltZScpLFxuICB0aXRsZTogY3JlYXRlRE9NRmFjdG9yeSgn
dGl0bGUnKSxcbiAgdHI6IGNyZWF0ZURPTUZhY3RvcnkoJ3RyJyksXG4gIHRyYWNrOiBjcmVhdGVE
T01GYWN0b3J5KCd0cmFjaycpLFxuICB1OiBjcmVhdGVET01GYWN0b3J5KCd1JyksXG4gIHVsOiBj
cmVhdGVET01GYWN0b3J5KCd1bCcpLFxuICAndmFyJzogY3JlYXRlRE9NRmFjdG9yeSgndmFyJyks
XG4gIHZpZGVvOiBjcmVhdGVET01GYWN0b3J5KCd2aWRlbycpLFxuICB3YnI6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3dicicpLFxuXG4gIC8vIFNWR1xuICBjaXJjbGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2Np
cmNsZScpLFxuICBjbGlwUGF0aDogY3JlYXRlRE9NRmFjdG9yeSgnY2xpcFBhdGgnKSxcbiAgZGVm
czogY3JlYXRlRE9NRmFjdG9yeSgnZGVmcycpLFxuICBlbGxpcHNlOiBjcmVhdGVET01GYWN0b3J5
KCdlbGxpcHNlJyksXG4gIGc6IGNyZWF0ZURPTUZhY3RvcnkoJ2cnKSxcbiAgaW1hZ2U6IGNyZWF0
ZURPTUZhY3RvcnkoJ2ltYWdlJyksXG4gIGxpbmU6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmUnKSxc
biAgbGluZWFyR3JhZGllbnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmVhckdyYWRpZW50JyksXG4g
IG1hc2s6IGNyZWF0ZURPTUZhY3RvcnkoJ21hc2snKSxcbiAgcGF0aDogY3JlYXRlRE9NRmFjdG9y
eSgncGF0aCcpLFxuICBwYXR0ZXJuOiBjcmVhdGVET01GYWN0b3J5KCdwYXR0ZXJuJyksXG4gIHBv
bHlnb246IGNyZWF0ZURPTUZhY3RvcnkoJ3BvbHlnb24nKSxcbiAgcG9seWxpbmU6IGNyZWF0ZURP
TUZhY3RvcnkoJ3BvbHlsaW5lJyksXG4gIHJhZGlhbEdyYWRpZW50OiBjcmVhdGVET01GYWN0b3J5
KCdyYWRpYWxHcmFkaWVudCcpLFxuICByZWN0OiBjcmVhdGVET01GYWN0b3J5KCdyZWN0JyksXG4g
IHN0b3A6IGNyZWF0ZURPTUZhY3RvcnkoJ3N0b3AnKSxcbiAgc3ZnOiBjcmVhdGVET01GYWN0b3J5
KCdzdmcnKSxcbiAgdGV4dDogY3JlYXRlRE9NRmFjdG9yeSgndGV4dCcpLFxuICB0c3BhbjogY3Jl
YXRlRE9NRmFjdG9yeSgndHNwYW4nKVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUZh
Y3RvcmllcztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAu
L25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RET01GYWN0b3JpZXMuanNcbi8vIG1vZHVsZSBp
ZCA9IDExMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3JlcXVpcmUgPSByZXF1aXJlKCcuL1JlYWN0
RWxlbWVudCcpLFxuICAgIGlzVmFsaWRFbGVtZW50ID0gX3JlcXVpcmUuaXNWYWxpZEVsZW1lbnQ7
XG5cbnZhciBmYWN0b3J5ID0gcmVxdWlyZSgncHJvcC10eXBlcy9mYWN0b3J5Jyk7XG5cbm1vZHVs
ZS5leHBvcnRzID0gZmFjdG9yeShpc1ZhbGlkRWxlbWVudCk7XG5cblxuLy8vLy8vLy8vLy8vLy8v
Ly8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QvbGliL1JlYWN0
UHJvcFR5cGVzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwi
LyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlG
dW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciBpbnZhcmlh
bnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWly
ZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1
aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xudmFyIGNoZWNrUHJvcFR5cGVzID0g
cmVxdWlyZSgnLi9jaGVja1Byb3BUeXBlcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9u
KGlzVmFsaWRFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKSB7XG4gIC8qIGdsb2JhbCBTeW1i
b2wgKi9cbiAgdmFyIElURVJBVE9SX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlv
bicgJiYgU3ltYm9sLml0ZXJhdG9yO1xuICB2YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBp
dGVyYXRvcic7IC8vIEJlZm9yZSBTeW1ib2wgc3BlYy5cblxuICAvKipcbiAgICogUmV0dXJucyB0
aGUgaXRlcmF0b3IgbWV0aG9kIGZ1bmN0aW9uIGNvbnRhaW5lZCBvbiB0aGUgaXRlcmFibGUgb2Jq
ZWN0LlxuICAgKlxuICAgKiBCZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUg
aXRlcmFibGUgYXMgY29udGV4dDpcbiAgICpcbiAgICogICAgIHZhciBpdGVyYXRvckZuID0gZ2V0
SXRlcmF0b3JGbihteUl0ZXJhYmxlKTtcbiAgICogICAgIGlmIChpdGVyYXRvckZuKSB7XG4gICAq
ICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChteUl0ZXJhYmxlKTtcbiAgICog
ICAgICAgLi4uXG4gICAqICAgICB9XG4gICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbWF5YmVJ
dGVyYWJsZVxuICAgKiBAcmV0dXJuIHs/ZnVuY3Rpb259XG4gICAqL1xuICBmdW5jdGlvbiBnZXRJ
dGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgICB2YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRl
cmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJP
TF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF0pO1xuICAgIGlmICh0eXBl
b2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yRm47
XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbGxlY3Rpb24gb2YgbWV0aG9kcyB0aGF0IGFs
bG93IGRlY2xhcmF0aW9uIGFuZCB2YWxpZGF0aW9uIG9mIHByb3BzIHRoYXQgYXJlXG4gICAqIHN1
cHBsaWVkIHRvIFJlYWN0IGNvbXBvbmVudHMuIEV4YW1wbGUgdXNhZ2U6XG4gICAqXG4gICAqICAg
dmFyIFByb3BzID0gcmVxdWlyZSgnUmVhY3RQcm9wVHlwZXMnKTtcbiAgICogICB2YXIgTXlBcnRp
Y2xlID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgKiAgICAgcHJvcFR5cGVzOiB7XG4gICAqICAg
ICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBwcm9wIG5hbWVkIFwiZGVzY3JpcHRpb25cIi5cbiAg
ICogICAgICAgZGVzY3JpcHRpb246IFByb3BzLnN0cmluZyxcbiAgICpcbiAgICogICAgICAgLy8g
QSByZXF1aXJlZCBlbnVtIHByb3AgbmFtZWQgXCJjYXRlZ29yeVwiLlxuICAgKiAgICAgICBjYXRl
Z29yeTogUHJvcHMub25lT2YoWydOZXdzJywnUGhvdG9zJ10pLmlzUmVxdWlyZWQsXG4gICAqXG4g
ICAqICAgICAgIC8vIEEgcHJvcCBuYW1lZCBcImRpYWxvZ1wiIHRoYXQgcmVxdWlyZXMgYW4gaW5z
dGFuY2Ugb2YgRGlhbG9nLlxuICAgKiAgICAgICBkaWFsb2c6IFByb3BzLmluc3RhbmNlT2YoRGlh
bG9nKS5pc1JlcXVpcmVkXG4gICAqICAgICB9LFxuICAgKiAgICAgcmVuZGVyOiBmdW5jdGlvbigp
IHsgLi4uIH1cbiAgICogICB9KTtcbiAgICpcbiAgICogQSBtb3JlIGZvcm1hbCBzcGVjaWZpY2F0
aW9uIG9mIGhvdyB0aGVzZSBtZXRob2RzIGFyZSB1c2VkOlxuICAgKlxuICAgKiAgIHR5cGUgOj0g
YXJyYXl8Ym9vbHxmdW5jfG9iamVjdHxudW1iZXJ8c3RyaW5nfG9uZU9mKFsuLi5dKXxpbnN0YW5j
ZU9mKC4uLilcbiAgICogICBkZWNsIDo9IFJlYWN0UHJvcFR5cGVzLnt0eXBlfSguaXNSZXF1aXJl
ZCk/XG4gICAqXG4gICAqIEVhY2ggYW5kIGV2ZXJ5IGRlY2xhcmF0aW9uIHByb2R1Y2VzIGEgZnVu
Y3Rpb24gd2l0aCB0aGUgc2FtZSBzaWduYXR1cmUuIFRoaXNcbiAgICogYWxsb3dzIHRoZSBjcmVh
dGlvbiBvZiBjdXN0b20gdmFsaWRhdGlvbiBmdW5jdGlvbnMuIEZvciBleGFtcGxlOlxuICAgKlxu
ICAgKiAgdmFyIE15TGluayA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgICogICAgcHJvcFR5cGVz
OiB7XG4gICAqICAgICAgLy8gQW4gb3B0aW9uYWwgc3RyaW5nIG9yIFVSSSBwcm9wIG5hbWVkIFwi
aHJlZlwiLlxuICAgKiAgICAgIGhyZWY6IGZ1bmN0aW9uKHByb3BzLCBwcm9wTmFtZSwgY29tcG9u
ZW50TmFtZSkge1xuICAgKiAgICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtc
biAgICogICAgICAgIGlmIChwcm9wVmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgcHJvcFZhbHVlICE9
PSAnc3RyaW5nJyAmJlxuICAgKiAgICAgICAgICAgICEocHJvcFZhbHVlIGluc3RhbmNlb2YgVVJJ
KSkge1xuICAgKiAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFxuICAgKiAgICAgICAgICAgICdF
eHBlY3RlZCBhIHN0cmluZyBvciBhbiBVUkkgZm9yICcgKyBwcm9wTmFtZSArICcgaW4gJyArXG4g
ICAqICAgICAgICAgICAgY29tcG9uZW50TmFtZVxuICAgKiAgICAgICAgICApO1xuICAgKiAgICAg
ICAgfVxuICAgKiAgICAgIH1cbiAgICogICAgfSxcbiAgICogICAgcmVuZGVyOiBmdW5jdGlvbigp
IHsuLi59XG4gICAqICB9KTtcbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuXG4gIHZhciBB
Tk9OWU1PVVMgPSAnPDxhbm9ueW1vdXM+Pic7XG5cbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVw
IHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlX
aXRoVGhyb3dpbmdTaGltcy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJh
eTogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2FycmF5JyksXG4gICAgYm9vbDogY3JlYXRl
UHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Jvb2xlYW4nKSxcbiAgICBmdW5jOiBjcmVhdGVQcmltaXRp
dmVUeXBlQ2hlY2tlcignZnVuY3Rpb24nKSxcbiAgICBudW1iZXI6IGNyZWF0ZVByaW1pdGl2ZVR5
cGVDaGVja2VyKCdudW1iZXInKSxcbiAgICBvYmplY3Q6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVj
a2VyKCdvYmplY3QnKSxcbiAgICBzdHJpbmc6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdz
dHJpbmcnKSxcbiAgICBzeW1ib2w6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzeW1ib2wn
KSxcblxuICAgIGFueTogY3JlYXRlQW55VHlwZUNoZWNrZXIoKSxcbiAgICBhcnJheU9mOiBjcmVh
dGVBcnJheU9mVHlwZUNoZWNrZXIsXG4gICAgZWxlbWVudDogY3JlYXRlRWxlbWVudFR5cGVDaGVj
a2VyKCksXG4gICAgaW5zdGFuY2VPZjogY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlcixcbiAgICBu
b2RlOiBjcmVhdGVOb2RlQ2hlY2tlcigpLFxuICAgIG9iamVjdE9mOiBjcmVhdGVPYmplY3RPZlR5
cGVDaGVja2VyLFxuICAgIG9uZU9mOiBjcmVhdGVFbnVtVHlwZUNoZWNrZXIsXG4gICAgb25lT2ZU
eXBlOiBjcmVhdGVVbmlvblR5cGVDaGVja2VyLFxuICAgIHNoYXBlOiBjcmVhdGVTaGFwZVR5cGVD
aGVja2VyXG4gIH07XG5cbiAgLyoqXG4gICAqIGlubGluZWQgT2JqZWN0LmlzIHBvbHlmaWxsIHRv
IGF2b2lkIHJlcXVpcmluZyBjb25zdW1lcnMgc2hpcCB0aGVpciBvd25cbiAgICogaHR0cHM6Ly9k
ZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2Uv
R2xvYmFsX09iamVjdHMvT2JqZWN0L2lzXG4gICAqL1xuICAvKmVzbGludC1kaXNhYmxlIG5vLXNl
bGYtY29tcGFyZSovXG4gIGZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgICAvLyBTYW1lVmFsdWUgYWxn
b3JpdGhtXG4gICAgaWYgKHggPT09IHkpIHtcbiAgICAgIC8vIFN0ZXBzIDEtNSwgNy0xMFxuICAg
ICAgLy8gU3RlcHMgNi5iLTYuZTogKzAgIT0gLTBcbiAgICAgIHJldHVybiB4ICE9PSAwIHx8IDEg
LyB4ID09PSAxIC8geTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RlcCA2LmE6IE5hTiA9PSBO
YU5cbiAgICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG4gICAgfVxuICB9XG4gIC8qZXNs
aW50LWVuYWJsZSBuby1zZWxmLWNvbXBhcmUqL1xuXG4gIC8qKlxuICAgKiBXZSB1c2UgYW4gRXJy
b3ItbGlrZSBvYmplY3QgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYXMgcGVvcGxlIG1heSBj
YWxsXG4gICAqIFByb3BUeXBlcyBkaXJlY3RseSBhbmQgaW5zcGVjdCB0aGVpciBvdXRwdXQuIEhv
d2V2ZXIsIHdlIGRvbid0IHVzZSByZWFsXG4gICAqIEVycm9ycyBhbnltb3JlLiBXZSBkb24ndCBp
bnNwZWN0IHRoZWlyIHN0YWNrIGFueXdheSwgYW5kIGNyZWF0aW5nIHRoZW1cbiAgICogaXMgcHJv
aGliaXRpdmVseSBleHBlbnNpdmUgaWYgdGhleSBhcmUgY3JlYXRlZCB0b28gb2Z0ZW4sIHN1Y2gg
YXMgd2hhdFxuICAgKiBoYXBwZW5zIGluIG9uZU9mVHlwZSgpIGZvciBhbnkgdHlwZSBiZWZvcmUg
dGhlIG9uZSB0aGF0IG1hdGNoZWQuXG4gICAqL1xuICBmdW5jdGlvbiBQcm9wVHlwZUVycm9yKG1l
c3NhZ2UpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuc3RhY2sgPSAn
JztcbiAgfVxuICAvLyBNYWtlIGBpbnN0YW5jZW9mIEVycm9yYCBzdGlsbCB3b3JrIGZvciByZXR1
cm5lZCBlcnJvcnMuXG4gIFByb3BUeXBlRXJyb3IucHJvdG90eXBlID0gRXJyb3IucHJvdG90eXBl
O1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKSB7XG4g
ICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZh
ciBtYW51YWxQcm9wVHlwZUNhbGxDYWNoZSA9IHt9O1xuICAgICAgdmFyIG1hbnVhbFByb3BUeXBl
V2FybmluZ0NvdW50ID0gMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2hlY2tUeXBlKGlzUmVxdWly
ZWQsIHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFt
ZSwgc2VjcmV0KSB7XG4gICAgICBjb21wb25lbnROYW1lID0gY29tcG9uZW50TmFtZSB8fCBBTk9O
WU1PVVM7XG4gICAgICBwcm9wRnVsbE5hbWUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG5c
biAgICAgIGlmIChzZWNyZXQgIT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAgIGlm
ICh0aHJvd09uRGlyZWN0QWNjZXNzKSB7XG4gICAgICAgICAgLy8gTmV3IGJlaGF2aW9yIG9ubHkg
Zm9yIHVzZXJzIG9mIGBwcm9wLXR5cGVzYCBwYWNrYWdlXG4gICAgICAgICAgaW52YXJpYW50KFxu
ICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRh
dG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2Fn
ZS4gJyArXG4gICAgICAgICAgICAnVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKWAgdG8g
Y2FsbCB0aGVtLiAnICtcbiAgICAgICAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3Vz
ZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0eXBlb2YgY29uc29sZSAhPT0g
J3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAvLyBPbGQgYmVoYXZpb3IgZm9yIHBlb3BsZSB1c2lu
ZyBSZWFjdC5Qcm9wVHlwZXNcbiAgICAgICAgICB2YXIgY2FjaGVLZXkgPSBjb21wb25lbnROYW1l
ICsgJzonICsgcHJvcE5hbWU7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIW1hbnVhbFBy
b3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSAmJlxuICAgICAgICAgICAgLy8gQXZvaWQgc3BhbW1p
bmcgdGhlIGNvbnNvbGUgYmVjYXVzZSB0aGV5IGFyZSBvZnRlbiBub3QgYWN0aW9uYWJsZSBleGNl
cHQgZm9yIGxpYiBhdXRob3JzXG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3Vu
dCA8IDNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICAg
IGZhbHNlLFxuICAgICAgICAgICAgICAnWW91IGFyZSBtYW51YWxseSBjYWxsaW5nIGEgUmVhY3Qu
UHJvcFR5cGVzIHZhbGlkYXRpb24gJyArXG4gICAgICAgICAgICAgICdmdW5jdGlvbiBmb3IgdGhl
IGAlc2AgcHJvcCBvbiBgJXNgLiBUaGlzIGlzIGRlcHJlY2F0ZWQgJyArXG4gICAgICAgICAgICAg
ICdhbmQgd2lsbCB0aHJvdyBpbiB0aGUgc3RhbmRhbG9uZSBgcHJvcC10eXBlc2AgcGFja2FnZS4g
JyArXG4gICAgICAgICAgICAgICdZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVlIHRv
IGEgdGhpcmQtcGFydHkgUHJvcFR5cGVzICcgK1xuICAgICAgICAgICAgICAnbGlicmFyeS4gU2Vl
IGh0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1kb250LWNhbGwtcHJvcHR5cGVzICcgKyAnZm9y
IGRldGFpbHMuJyxcbiAgICAgICAgICAgICAgcHJvcEZ1bGxOYW1lLFxuICAgICAgICAgICAgICBj
b21wb25lbnROYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbWFudWFsUHJvcFR5cGVD
YWxsQ2FjaGVbY2FjaGVLZXldID0gdHJ1ZTtcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlV2Fy
bmluZ0NvdW50Kys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAo
cHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHtcbiAgICAgICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAg
ICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1
cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxO
YW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkICcgKyAoJ2luIGAnICsgY29tcG9uZW50TmFt
ZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4nKSk7XG4gICAgICAgICAgfVxuICAgICAg
ICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBsb2NhdGlvbiArICcgYCcgKyBw
cm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gJyArICgnYCcgKyBjb21w
b25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuJykpO1xuICAgICAg
ICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJu
IHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BG
dWxsTmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNoYWluZWRDaGVja1R5cGUgPSBj
aGVja1R5cGUuYmluZChudWxsLCBmYWxzZSk7XG4gICAgY2hhaW5lZENoZWNrVHlwZS5pc1JlcXVp
cmVkID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgdHJ1ZSk7XG5cbiAgICByZXR1cm4gY2hhaW5lZENo
ZWNrVHlwZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKGV4
cGVjdGVkVHlwZSkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29t
cG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICB2YXIg
cHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJv
cFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gZXhwZWN0ZWRUeXBlKSB7
XG4gICAgICAgIC8vIGBwcm9wVmFsdWVgIGJlaW5nIGluc3RhbmNlIG9mLCBzYXksIGRhdGUvcmVn
ZXhwLCBwYXNzIHRoZSAnb2JqZWN0J1xuICAgICAgICAvLyBjaGVjaywgYnV0IHdlIGNhbiBvZmZl
ciBhIG1vcmUgcHJlY2lzZSBlcnJvciBtZXNzYWdlIGhlcmUgcmF0aGVyIHRoYW5cbiAgICAgICAg
Ly8gJ29mIHR5cGUgYG9iamVjdGAnLlxuICAgICAgICB2YXIgcHJlY2lzZVR5cGUgPSBnZXRQcmVj
aXNlVHlwZShwcm9wVmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcign
SW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAn
ICsgKCdgJyArIHByZWNpc2VUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1l
ICsgJ2AsIGV4cGVjdGVkICcpICsgKCdgJyArIGV4cGVjdGVkVHlwZSArICdgLicpKTtcbiAgICAg
IH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxl
VHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQW55VHlwZUNo
ZWNrZXIoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKGVtcHR5RnVu
Y3Rpb24udGhhdFJldHVybnNOdWxsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFycmF5T2ZU
eXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBw
cm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAg
aWYgKHR5cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4g
bmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29t
cG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0
aW9uIGluc2lkZSBhcnJheU9mLicpO1xuICAgICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHBy
b3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4g
ICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICAgIHJl
dHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJv
cEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQg
dG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIGFycmF5LicpKTtcbiAgICAg
IH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4g
ICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwgaSwgY29tcG9uZW50TmFt
ZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICdbJyArIGkgKyAnXScsIFJlYWN0UHJvcFR5cGVz
U2VjcmV0KTtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAg
ICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xu
ICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xu
ICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCkge1xuICAgIGZ1bmN0
aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHBy
b3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAg
ICAgIGlmICghaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5
cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBl
RXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9m
IHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50
TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuJykpO1xuICAgICAgfVxu
ICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBl
Q2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZVR5cGVD
aGVja2VyKGV4cGVjdGVkQ2xhc3MpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJv
cE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlm
ICghKHByb3BzW3Byb3BOYW1lXSBpbnN0YW5jZW9mIGV4cGVjdGVkQ2xhc3MpKSB7XG4gICAgICAg
IHZhciBleHBlY3RlZENsYXNzTmFtZSA9IGV4cGVjdGVkQ2xhc3MubmFtZSB8fCBBTk9OWU1PVVM7
XG4gICAgICAgIHZhciBhY3R1YWxDbGFzc05hbWUgPSBnZXRDbGFzc05hbWUocHJvcHNbcHJvcE5h
bWVdKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2Nh
dGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgYWN0dWFs
Q2xhc3NOYW1lICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVj
dGVkICcpICsgKCdpbnN0YW5jZSBvZiBgJyArIGV4cGVjdGVkQ2xhc3NOYW1lICsgJ2AuJykpO1xu
ICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFp
bmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVFbnVt
VHlwZUNoZWNrZXIoZXhwZWN0ZWRWYWx1ZXMpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXhw
ZWN0ZWRWYWx1ZXMpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2Ys
IGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpIDogdm9pZCAwO1xuICAgICAgcmV0dXJu
IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZh
bGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxs
TmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAg
aWYgKGlzKHByb3BWYWx1ZSwgZXhwZWN0ZWRWYWx1ZXNbaV0pKSB7XG4gICAgICAgICAgcmV0dXJu
IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHZhbHVlc1N0cmluZyA9IEpT
T04uc3RyaW5naWZ5KGV4cGVjdGVkVmFsdWVzKTtcbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVF
cnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2Yg
dmFsdWUgYCcgKyBwcm9wVmFsdWUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVu
dE5hbWUgKyAnYCwgZXhwZWN0ZWQgb25lIG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAnLicpKTtcbiAg
ICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAg
fVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtc
biAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxv
Y2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09
ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdQcm9wZXJ0
eSBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIGNvbXBvbmVudCBgJyArIGNvbXBvbmVudE5hbWUg
KyAnYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuJyk7XG4g
ICAgICB9XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFy
IHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAh
PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlk
ICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2An
ICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhw
ZWN0ZWQgYW4gb2JqZWN0LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBwcm9w
VmFsdWUpIHtcbiAgICAgICAgaWYgKHByb3BWYWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4g
ICAgICAgICAgdmFyIGVycm9yID0gdHlwZUNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVu
dE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVz
U2VjcmV0KTtcbiAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAg
ICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAg
ICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hl
Y2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVVbmlvblR5cGVDaGVja2Vy
KGFycmF5T2ZUeXBlQ2hlY2tlcnMpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXlPZlR5
cGVDaGVja2VycykpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGZhbHNlLCAnSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5
cGUsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpIDogdm9pZCAwO1xuICAgICAgcmV0
dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsO1xuICAgIH1cblxuICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgYXJyYXlPZlR5cGVDaGVja2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFy
IGNoZWNrZXIgPSBhcnJheU9mVHlwZUNoZWNrZXJzW2ldO1xuICAgICAgaWYgKHR5cGVvZiBjaGVj
a2VyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgZmFsc2Us
XG4gICAgICAgICAgJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZCB0byBvbmVPZlR5cGUuIEV4cGVj
dGVkIGFuIGFycmF5IG9mIGNoZWNrIGZ1bmN0aW9ucywgYnV0ICcgK1xuICAgICAgICAgICdyZWNl
aXZlZCAlcyBhdCBpbmRleCAlcy4nLFxuICAgICAgICAgIGdldFBvc3RmaXhGb3JUeXBlV2Fybmlu
ZyhjaGVja2VyKSxcbiAgICAgICAgICBpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBlbXB0
eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlv
biB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9w
RnVsbE5hbWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZlR5cGVDaGVja2Vy
cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hlY2tl
cnNbaV07XG4gICAgICAgIGlmIChjaGVja2VyKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFt
ZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpID09IG51bGwp
IHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBy
ZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHBy
b3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdg
LicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlk
YXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU5vZGVDaGVja2VyKCkge1xuICAgIGZ1bmN0
aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHBy
b3BGdWxsTmFtZSkge1xuICAgICAgaWYgKCFpc05vZGUocHJvcHNbcHJvcE5hbWVdKSkge1xuICAg
ICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBg
JyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2AnICsgY29tcG9uZW50TmFt
ZSArICdgLCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4g
bnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlk
YXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIoc2hhcGVUeXBl
cykge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFt
ZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3Bz
W3Byb3BOYW1lXTtcbiAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7
XG4gICAgICBpZiAocHJvcFR5cGUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBuZXcg
UHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1l
ICsgJ2Agb2YgdHlwZSBgJyArIHByb3BUeXBlICsgJ2AgJyArICgnc3VwcGxpZWQgdG8gYCcgKyBj
b21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGBvYmplY3RgLicpKTtcbiAgICAgIH1cbiAgICAg
IGZvciAodmFyIGtleSBpbiBzaGFwZVR5cGVzKSB7XG4gICAgICAgIHZhciBjaGVja2VyID0gc2hh
cGVUeXBlc1trZXldO1xuICAgICAgICBpZiAoIWNoZWNrZXIpIHtcbiAgICAgICAgICBjb250aW51
ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZXJyb3IgPSBjaGVja2VyKHByb3BWYWx1ZSwga2V5
LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFj
dFByb3BUeXBlc1NlY3JldCk7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVy
biBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxu
ICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxu
ICBmdW5jdGlvbiBpc05vZGUocHJvcFZhbHVlKSB7XG4gICAgc3dpdGNoICh0eXBlb2YgcHJvcFZh
bHVlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAg
IGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnYm9v
bGVhbic6XG4gICAgICAgIHJldHVybiAhcHJvcFZhbHVlO1xuICAgICAgY2FzZSAnb2JqZWN0Jzpc
biAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAgICAgICAgIHJldHVy
biBwcm9wVmFsdWUuZXZlcnkoaXNOb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcFZh
bHVlID09PSBudWxsIHx8IGlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICBy
ZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRl
cmF0b3JGbihwcm9wVmFsdWUpO1xuICAgICAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgICAg
IHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChwcm9wVmFsdWUpO1xuICAgICAgICAgIHZh
ciBzdGVwO1xuICAgICAgICAgIGlmIChpdGVyYXRvckZuICE9PSBwcm9wVmFsdWUuZW50cmllcykg
e1xuICAgICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xu
ICAgICAgICAgICAgICBpZiAoIWlzTm9kZShzdGVwLnZhbHVlKSkge1xuICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAg
IH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ss
dl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cbiAgICAgICAgICAgIHdoaWxlICghKHN0ZXAg
PSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gc3Rl
cC52YWx1ZTtcbiAgICAgICAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgaWYg
KCFpc05vZGUoZW50cnlbMV0pKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4g
ICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAg
ICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAg
fVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJu
IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzU3ltYm9sKHByb3BUeXBlLCBwcm9w
VmFsdWUpIHtcbiAgICAvLyBOYXRpdmUgU3ltYm9sLlxuICAgIGlmIChwcm9wVHlwZSA9PT0gJ3N5
bWJvbCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIDE5LjQuMy41IFN5
bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ10gPT09ICdTeW1ib2wnXG4gICAgaWYgKHByb3BW
YWx1ZVsnQEB0b1N0cmluZ1RhZyddID09PSAnU3ltYm9sJykge1xuICAgICAgcmV0dXJuIHRydWU7
XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2sgZm9yIG5vbi1zcGVjIGNvbXBsaWFudCBTeW1ib2xz
IHdoaWNoIGFyZSBwb2x5ZmlsbGVkLlxuICAgIGlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rp
b24nICYmIHByb3BWYWx1ZSBpbnN0YW5jZW9mIFN5bWJvbCkge1xuICAgICAgcmV0dXJuIHRydWU7
XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRXF1aXZhbGVudCBvZiBg
dHlwZW9mYCBidXQgd2l0aCBzcGVjaWFsIGhhbmRsaW5nIGZvciBhcnJheSBhbmQgcmVnZXhwLlxu
ICBmdW5jdGlvbiBnZXRQcm9wVHlwZShwcm9wVmFsdWUpIHtcbiAgICB2YXIgcHJvcFR5cGUgPSB0
eXBlb2YgcHJvcFZhbHVlO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcbiAg
ICAgIHJldHVybiAnYXJyYXknO1xuICAgIH1cbiAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2Yg
UmVnRXhwKSB7XG4gICAgICAvLyBPbGQgd2Via2l0cyAoYXQgbGVhc3QgdW50aWwgQW5kcm9pZCA0
LjApIHJldHVybiAnZnVuY3Rpb24nIHJhdGhlciB0aGFuXG4gICAgICAvLyAnb2JqZWN0JyBmb3Ig
dHlwZW9mIGEgUmVnRXhwLiBXZSdsbCBub3JtYWxpemUgdGhpcyBoZXJlIHNvIHRoYXQgL2JsYS9c
biAgICAgIC8vIHBhc3NlcyBQcm9wVHlwZXMub2JqZWN0LlxuICAgICAgcmV0dXJuICdvYmplY3Qn
O1xuICAgIH1cbiAgICBpZiAoaXNTeW1ib2wocHJvcFR5cGUsIHByb3BWYWx1ZSkpIHtcbiAgICAg
IHJldHVybiAnc3ltYm9sJztcbiAgICB9XG4gICAgcmV0dXJuIHByb3BUeXBlO1xuICB9XG5cbiAg
Ly8gVGhpcyBoYW5kbGVzIG1vcmUgdHlwZXMgdGhhbiBgZ2V0UHJvcFR5cGVgLiBPbmx5IHVzZWQg
Zm9yIGVycm9yIG1lc3NhZ2VzLlxuICAvLyBTZWUgYGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2Vy
YC5cbiAgZnVuY3Rpb24gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKSB7XG4gICAgaWYgKHR5cGVv
ZiBwcm9wVmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IHByb3BWYWx1ZSA9PT0gbnVsbCkge1xuICAg
ICAgcmV0dXJuICcnICsgcHJvcFZhbHVlO1xuICAgIH1cbiAgICB2YXIgcHJvcFR5cGUgPSBnZXRQ
cm9wVHlwZShwcm9wVmFsdWUpO1xuICAgIGlmIChwcm9wVHlwZSA9PT0gJ29iamVjdCcpIHtcbiAg
ICAgIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiAnZGF0
ZSc7XG4gICAgICB9IGVsc2UgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAg
ICAgICByZXR1cm4gJ3JlZ2V4cCc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcm9wVHlw
ZTtcbiAgfVxuXG4gIC8vIFJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwb3N0Zml4ZWQgdG8gYSB3
YXJuaW5nIGFib3V0IGFuIGludmFsaWQgdHlwZS5cbiAgLy8gRm9yIGV4YW1wbGUsIFwidW5kZWZp
bmVkXCIgb3IgXCJvZiB0eXBlIGFycmF5XCJcbiAgZnVuY3Rpb24gZ2V0UG9zdGZpeEZvclR5cGVX
YXJuaW5nKHZhbHVlKSB7XG4gICAgdmFyIHR5cGUgPSBnZXRQcmVjaXNlVHlwZSh2YWx1ZSk7XG4g
ICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdvYmpl
Y3QnOlxuICAgICAgICByZXR1cm4gJ2FuICcgKyB0eXBlO1xuICAgICAgY2FzZSAnYm9vbGVhbic6
XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgIGNhc2UgJ3JlZ2V4cCc6XG4gICAgICAgIHJldHVy
biAnYSAnICsgdHlwZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0eXBlO1xuICAg
IH1cbiAgfVxuXG4gIC8vIFJldHVybnMgY2xhc3MgbmFtZSBvZiB0aGUgb2JqZWN0LCBpZiBhbnku
XG4gIGZ1bmN0aW9uIGdldENsYXNzTmFtZShwcm9wVmFsdWUpIHtcbiAgICBpZiAoIXByb3BWYWx1
ZS5jb25zdHJ1Y3RvciB8fCAhcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5hbWUpIHtcbiAgICAgIHJl
dHVybiBBTk9OWU1PVVM7XG4gICAgfVxuICAgIHJldHVybiBwcm9wVmFsdWUuY29uc3RydWN0b3Iu
bmFtZTtcbiAgfVxuXG4gIFJlYWN0UHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzID0gY2hlY2tQcm9w
VHlwZXM7XG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4g
IHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8v
IFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRo
VHlwZUNoZWNrZXJzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMTJcbi8vIG1vZHVsZSBjaHVua3MgPSAw
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgaW52YXJpYW50ID0g
cmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG4gIHZhciB3YXJuaW5nID0gcmVxdWlyZSgn
ZmJqcy9saWIvd2FybmluZycpO1xuICB2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJl
KCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuICB2YXIgbG9nZ2VkVHlwZUZhaWx1cmVz
ID0ge307XG59XG5cbi8qKlxuICogQXNzZXJ0IHRoYXQgdGhlIHZhbHVlcyBtYXRjaCB3aXRoIHRo
ZSB0eXBlIHNwZWNzLlxuICogRXJyb3IgbWVzc2FnZXMgYXJlIG1lbW9yaXplZCBhbmQgd2lsbCBv
bmx5IGJlIHNob3duIG9uY2UuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHR5cGVTcGVjcyBNYXAg
b2YgbmFtZSB0byBhIFJlYWN0UHJvcFR5cGVcbiAqIEBwYXJhbSB7b2JqZWN0fSB2YWx1ZXMgUnVu
dGltZSB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHR5cGUtY2hlY2tlZFxuICogQHBhcmFtIHtzdHJp
bmd9IGxvY2F0aW9uIGUuZy4gXCJwcm9wXCIsIFwiY29udGV4dFwiLCBcImNoaWxkIGNvbnRleHRc
IlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbXBvbmVudE5hbWUgTmFtZSBvZiB0aGUgY29tcG9uZW50
IGZvciBlcnJvciBtZXNzYWdlcy5cbiAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBnZXRTdGFjayBSZXR1
cm5zIHRoZSBjb21wb25lbnQgc3RhY2suXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBjaGVj
a1Byb3BUeXBlcyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIGNvbXBvbmVudE5hbWUsIGdl
dFN0YWNrKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgZm9yICh2YXIgdHlwZVNwZWNOYW1lIGluIHR5cGVTcGVjcykge1xuICAgICAgaWYgKHR5
cGVTcGVjcy5oYXNPd25Qcm9wZXJ0eSh0eXBlU3BlY05hbWUpKSB7XG4gICAgICAgIHZhciBlcnJv
cjtcbiAgICAgICAgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRo
ZXkgZG8sIHdlIGRvbid0IHdhbnQgdG9cbiAgICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNl
IHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LlxuICAgICAgICAvLyBB
ZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG4g
ICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGFuIGludmFy
aWFudCB0aGF0IGdldHMgY2F1Z2h0LiBJdCdzIHRoZSBzYW1lXG4gICAgICAgICAgLy8gYmVoYXZp
b3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNzYWdl
LlxuICAgICAgICAgIGludmFyaWFudCh0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gPT09
ICdmdW5jdGlvbicsICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3QgYmUgYSBm
dW5jdGlvbiwgdXN1YWxseSBmcm9tICcgKyAnUmVhY3QuUHJvcFR5cGVzLicsIGNvbXBvbmVudE5h
bWUgfHwgJ1JlYWN0IGNsYXNzJywgbG9jYXRpb24sIHR5cGVTcGVjTmFtZSk7XG4gICAgICAgICAg
ZXJyb3IgPSB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSh2YWx1ZXMsIHR5cGVTcGVjTmFtZSwgY29t
cG9uZW50TmFtZSwgbG9jYXRpb24sIG51bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAg
ICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICBlcnJvciA9IGV4O1xuICAgICAgICB9XG4gICAg
ICAgIHdhcm5pbmcoIWVycm9yIHx8IGVycm9yIGluc3RhbmNlb2YgRXJyb3IsICclczogdHlwZSBz
cGVjaWZpY2F0aW9uIG9mICVzIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciAnICsg
J2Z1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1cm5lZCBh
ICVzLiAnICsgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVudCB0byB0
aGUgdHlwZSBjaGVja2VyICcgKyAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0
T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFsbCByZXF1aXJlIGFuIGFyZ3Vt
ZW50KS4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIGxvY2F0aW9uLCB0eXBlU3Bl
Y05hbWUsIHR5cGVvZiBlcnJvcik7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9y
ICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7XG4gICAgICAgICAg
Ly8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8g
YmUgYSBsb3Qgb2YgdGhlXG4gICAgICAgICAgLy8gc2FtZSBlcnJvci5cbiAgICAgICAgICBsb2dn
ZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0cnVlO1xuXG4gICAgICAgICAgdmFyIHN0
YWNrID0gZ2V0U3RhY2sgPyBnZXRTdGFjaygpIDogJyc7XG5cbiAgICAgICAgICB3YXJuaW5nKGZh
bHNlLCAnRmFpbGVkICVzIHR5cGU6ICVzJXMnLCBsb2NhdGlvbiwgZXJyb3IubWVzc2FnZSwgc3Rh
Y2sgIT0gbnVsbCA/IHN0YWNrIDogJycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9
XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2hlY2tQcm9wVHlwZXM7XG5cblxuXG4vLy8vLy8vLy8v
Ly8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVz
L2NoZWNrUHJvcFR5cGVzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMTNcbi8vIG1vZHVsZSBjaHVua3Mg
PSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztcblxu
bW9kdWxlLmV4cG9ydHMgPSAnMTUuNi4xJztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdF
QlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC9saWIvUmVhY3RWZXJzaW9uLmpz
XG4vLyBtb2R1bGUgaWQgPSAxMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9yZXF1aXJlID0gcmVx
dWlyZSgnLi9SZWFjdEJhc2VDbGFzc2VzJyksXG4gICAgQ29tcG9uZW50ID0gX3JlcXVpcmUuQ29t
cG9uZW50O1xuXG52YXIgX3JlcXVpcmUyID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKSxcbiAg
ICBpc1ZhbGlkRWxlbWVudCA9IF9yZXF1aXJlMi5pc1ZhbGlkRWxlbWVudDtcblxudmFyIFJlYWN0
Tm9vcFVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9SZWFjdE5vb3BVcGRhdGVRdWV1ZScpO1xudmFy
IGZhY3RvcnkgPSByZXF1aXJlKCdjcmVhdGUtcmVhY3QtY2xhc3MvZmFjdG9yeScpO1xuXG5tb2R1
bGUuZXhwb3J0cyA9IGZhY3RvcnkoQ29tcG9uZW50LCBpc1ZhbGlkRWxlbWVudCwgUmVhY3ROb29w
VXBkYXRlUXVldWUpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJc
bi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9jcmVhdGVDbGFzcy5qc1xuLy8gbW9kdWxlIGlk
ID0gMTE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFz
c2lnbicpO1xuXG52YXIgZW1wdHlPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVj
dCcpO1xudmFyIF9pbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxu
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHdhcm5p
bmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG59XG5cbnZhciBNSVhJTlNfS0VZID0g
J21peGlucyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBhbGxvdyB0aGUgY3JlYXRpb24gb2Yg
YW5vbnltb3VzIGZ1bmN0aW9ucyB3aGljaCBkbyBub3Rcbi8vIGhhdmUgLm5hbWUgc2V0IHRvIHRo
ZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBiZWluZyBhc3NpZ25lZCB0by5cbmZ1bmN0aW9uIGlkZW50
aXR5KGZuKSB7XG4gIHJldHVybiBmbjtcbn1cblxudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5h
bWVzO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgUmVh
Y3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7XG4gICAgcHJvcDogJ3Byb3AnLFxuICAgIGNvbnRl
eHQ6ICdjb250ZXh0JyxcbiAgICBjaGlsZENvbnRleHQ6ICdjaGlsZCBjb250ZXh0J1xuICB9O1xu
fSBlbHNlIHtcbiAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7fTtcbn1cblxuZnVuY3Rp
b24gZmFjdG9yeShSZWFjdENvbXBvbmVudCwgaXNWYWxpZEVsZW1lbnQsIFJlYWN0Tm9vcFVwZGF0
ZVF1ZXVlKSB7XG4gIC8qKlxuICAgKiBQb2xpY2llcyB0aGF0IGRlc2NyaWJlIG1ldGhvZHMgaW4g
YFJlYWN0Q2xhc3NJbnRlcmZhY2VgLlxuICAgKi9cblxuICB2YXIgaW5qZWN0ZWRNaXhpbnMgPSBb
XTtcblxuICAvKipcbiAgICogQ29tcG9zaXRlIGNvbXBvbmVudHMgYXJlIGhpZ2hlci1sZXZlbCBj
b21wb25lbnRzIHRoYXQgY29tcG9zZSBvdGhlciBjb21wb3NpdGVcbiAgICogb3IgaG9zdCBjb21w
b25lbnRzLlxuICAgKlxuICAgKiBUbyBjcmVhdGUgYSBuZXcgdHlwZSBvZiBgUmVhY3RDbGFzc2As
IHBhc3MgYSBzcGVjaWZpY2F0aW9uIG9mXG4gICAqIHlvdXIgbmV3IGNsYXNzIHRvIGBSZWFjdC5j
cmVhdGVDbGFzc2AuIFRoZSBvbmx5IHJlcXVpcmVtZW50IG9mIHlvdXIgY2xhc3NcbiAgICogc3Bl
Y2lmaWNhdGlvbiBpcyB0aGF0IHlvdSBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2QuXG4gICAq
XG4gICAqICAgdmFyIE15Q29tcG9uZW50ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgKiAgICAg
cmVuZGVyOiBmdW5jdGlvbigpIHtcbiAgICogICAgICAgcmV0dXJuIDxkaXY+SGVsbG8gV29ybGQ8
L2Rpdj47XG4gICAqICAgICB9XG4gICAqICAgfSk7XG4gICAqXG4gICAqIFRoZSBjbGFzcyBzcGVj
aWZpY2F0aW9uIHN1cHBvcnRzIGEgc3BlY2lmaWMgcHJvdG9jb2wgb2YgbWV0aG9kcyB0aGF0IGhh
dmVcbiAgICogc3BlY2lhbCBtZWFuaW5nIChlLmcuIGByZW5kZXJgKS4gU2VlIGBSZWFjdENsYXNz
SW50ZXJmYWNlYCBmb3JcbiAgICogbW9yZSB0aGUgY29tcHJlaGVuc2l2ZSBwcm90b2NvbC4gQW55
IG90aGVyIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgaW4gdGhlXG4gICAqIGNsYXNzIHNwZWNpZmlj
YXRpb24gd2lsbCBiZSBhdmFpbGFibGUgb24gdGhlIHByb3RvdHlwZS5cbiAgICpcbiAgICogQGlu
dGVyZmFjZSBSZWFjdENsYXNzSW50ZXJmYWNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdmFy
IFJlYWN0Q2xhc3NJbnRlcmZhY2UgPSB7XG4gICAgLyoqXG4gICAgICogQW4gYXJyYXkgb2YgTWl4
aW4gb2JqZWN0cyB0byBpbmNsdWRlIHdoZW4gZGVmaW5pbmcgeW91ciBjb21wb25lbnQuXG4gICAg
ICpcbiAgICAgKiBAdHlwZSB7YXJyYXl9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAg
bWl4aW5zOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogQW4gb2JqZWN0IGNvbnRh
aW5pbmcgcHJvcGVydGllcyBhbmQgbWV0aG9kcyB0aGF0IHNob3VsZCBiZSBkZWZpbmVkIG9uXG4g
ICAgICogdGhlIGNvbXBvbmVudCdzIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgaXRzIHByb3RvdHlw
ZSAoc3RhdGljIG1ldGhvZHMpLlxuICAgICAqXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAg
KiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBzdGF0aWNzOiAnREVGSU5FX01BTlknLFxuXG4gICAg
LyoqXG4gICAgICogRGVmaW5pdGlvbiBvZiBwcm9wIHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC5c
biAgICAgKlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICov
XG4gICAgcHJvcFR5cGVzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogRGVmaW5p
dGlvbiBvZiBjb250ZXh0IHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAq
IEB0eXBlIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29udGV4dFR5
cGVzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogRGVmaW5pdGlvbiBvZiBjb250
ZXh0IHR5cGVzIHRoaXMgY29tcG9uZW50IHNldHMgZm9yIGl0cyBjaGlsZHJlbi5cbiAgICAgKlxu
ICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY2hp
bGRDb250ZXh0VHlwZXM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvLyA9PT09IERlZmluaXRpb24g
bWV0aG9kcyA9PT09XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVu
dCBpcyBtb3VudGVkLiBWYWx1ZXMgaW4gdGhlIG1hcHBpbmcgd2lsbCBiZSBzZXQgb25cbiAgICAg
KiBgdGhpcy5wcm9wc2AgaWYgdGhhdCBwcm9wIGlzIG5vdCBzcGVjaWZpZWQgKGkuZS4gdXNpbmcg
YW4gYGluYCBjaGVjaykuXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJl
Zm9yZSBgZ2V0SW5pdGlhbFN0YXRlYCBhbmQgdGhlcmVmb3JlIGNhbm5vdCByZWx5XG4gICAgICog
b24gYHRoaXMuc3RhdGVgIG9yIHVzZSBgdGhpcy5zZXRTdGF0ZWAuXG4gICAgICpcbiAgICAgKiBA
cmV0dXJuIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgZ2V0RGVmYXVs
dFByb3BzOiAnREVGSU5FX01BTllfTUVSR0VEJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQg
b25jZSBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyBtb3VudGVkLiBUaGUgcmV0dXJuIHZhbHVlIHdp
bGwgYmUgdXNlZFxuICAgICAqIGFzIHRoZSBpbml0aWFsIHZhbHVlIG9mIGB0aGlzLnN0YXRlYC5c
biAgICAgKlxuICAgICAqICAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbigpIHtcbiAgICAgKiAg
ICAgcmV0dXJuIHtcbiAgICAgKiAgICAgICBpc09uOiBmYWxzZSxcbiAgICAgKiAgICAgICBmb29C
YXo6IG5ldyBCYXpGb28oKVxuICAgICAqICAgICB9XG4gICAgICogICB9XG4gICAgICpcbiAgICAg
KiBAcmV0dXJuIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgZ2V0SW5p
dGlhbFN0YXRlOiAnREVGSU5FX01BTllfTUVSR0VEJyxcblxuICAgIC8qKlxuICAgICAqIEByZXR1
cm4ge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBnZXRDaGlsZENvbnRl
eHQ6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuXG4gICAgLyoqXG4gICAgICogVXNlcyBwcm9wcyBm
cm9tIGB0aGlzLnByb3BzYCBhbmQgc3RhdGUgZnJvbSBgdGhpcy5zdGF0ZWAgdG8gcmVuZGVyIHRo
ZVxuICAgICAqIHN0cnVjdHVyZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogTm8g
Z3VhcmFudGVlcyBhcmUgbWFkZSBhYm91dCB3aGVuIG9yIGhvdyBvZnRlbiB0aGlzIG1ldGhvZCBp
cyBpbnZva2VkLCBzb1xuICAgICAqIGl0IG11c3Qgbm90IGhhdmUgc2lkZSBlZmZlY3RzLlxuICAg
ICAqXG4gICAgICogICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuICAgICAqICAgICB2YXIgbmFtZSA9
IHRoaXMucHJvcHMubmFtZTtcbiAgICAgKiAgICAgcmV0dXJuIDxkaXY+SGVsbG8sIHtuYW1lfSE8
L2Rpdj47XG4gICAgICogICB9XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVu
dH1cbiAgICAgKiBAcmVxdWlyZWRcbiAgICAgKi9cbiAgICByZW5kZXI6ICdERUZJTkVfT05DRScs
XG5cbiAgICAvLyA9PT09IERlbGVnYXRlIG1ldGhvZHMgPT09PVxuXG4gICAgLyoqXG4gICAgICog
SW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGx5IGNyZWF0ZWQgYW5kIGFib3V0
IHRvIGJlIG1vdW50ZWQuXG4gICAgICogVGhpcyBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMsIGJ1dCBh
bnkgZXh0ZXJuYWwgc3Vic2NyaXB0aW9ucyBvciBkYXRhIGNyZWF0ZWRcbiAgICAgKiBieSB0aGlz
IG1ldGhvZCBtdXN0IGJlIGNsZWFuZWQgdXAgaW4gYGNvbXBvbmVudFdpbGxVbm1vdW50YC5cbiAg
ICAgKlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudFdpbGxNb3VudDog
J0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9u
ZW50IGhhcyBiZWVuIG1vdW50ZWQgYW5kIGhhcyBhIERPTSByZXByZXNlbnRhdGlvbi5cbiAgICAg
KiBIb3dldmVyLCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgRE9NIG5vZGUgaXMgaW4g
dGhlIGRvY3VtZW50LlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkg
dG8gb3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhlIGNvbXBvbmVudCBoYXNcbiAgICAgKiBiZWVu
IG1vdW50ZWQgKGluaXRpYWxpemVkIGFuZCByZW5kZXJlZCkgZm9yIHRoZSBmaXJzdCB0aW1lLlxu
ICAgICAqXG4gICAgICogQHBhcmFtIHtET01FbGVtZW50fSByb290Tm9kZSBET00gZWxlbWVudCBy
ZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAg
ICBjb21wb25lbnREaWRNb3VudDogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIElu
dm9rZWQgYmVmb3JlIHRoZSBjb21wb25lbnQgcmVjZWl2ZXMgbmV3IHByb3BzLlxuICAgICAqXG4g
ICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcmVhY3QgdG8gYSBwcm9wIHRyYW5z
aXRpb24gYnkgdXBkYXRpbmcgdGhlXG4gICAgICogc3RhdGUgdXNpbmcgYHRoaXMuc2V0U3RhdGVg
LiBDdXJyZW50IHByb3BzIGFyZSBhY2Nlc3NlZCB2aWEgYHRoaXMucHJvcHNgLlxuICAgICAqXG4g
ICAgICogICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5l
eHRDb250ZXh0KSB7XG4gICAgICogICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAqICAgICAgIGxp
a2VzSW5jcmVhc2luZzogbmV4dFByb3BzLmxpa2VDb3VudCA+IHRoaXMucHJvcHMubGlrZUNvdW50
XG4gICAgICogICAgIH0pO1xuICAgICAqICAgfVxuICAgICAqXG4gICAgICogTk9URTogVGhlcmUg
aXMgbm8gZXF1aXZhbGVudCBgY29tcG9uZW50V2lsbFJlY2VpdmVTdGF0ZWAuIEFuIGluY29taW5n
IHByb3BcbiAgICAgKiB0cmFuc2l0aW9uIG1heSBjYXVzZSBhIHN0YXRlIGNoYW5nZSwgYnV0IHRo
ZSBvcHBvc2l0ZSBpcyBub3QgdHJ1ZS4gSWYgeW91XG4gICAgICogbmVlZCBpdCwgeW91IGFyZSBw
cm9iYWJseSBsb29raW5nIGZvciBgY29tcG9uZW50V2lsbFVwZGF0ZWAuXG4gICAgICpcbiAgICAg
KiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4g
ICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxu
ICAgICAqIEludm9rZWQgd2hpbGUgZGVjaWRpbmcgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUg
dXBkYXRlZCBhcyBhIHJlc3VsdCBvZlxuICAgICAqIHJlY2VpdmluZyBuZXcgcHJvcHMsIHN0YXRl
IGFuZC9vciBjb250ZXh0LlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5p
dHkgdG8gYHJldHVybiBmYWxzZWAgd2hlbiB5b3UncmUgY2VydGFpbiB0aGF0IHRoZVxuICAgICAq
IHRyYW5zaXRpb24gdG8gdGhlIG5ldyBwcm9wcy9zdGF0ZS9jb250ZXh0IHdpbGwgbm90IHJlcXVp
cmUgYSBjb21wb25lbnRcbiAgICAgKiB1cGRhdGUuXG4gICAgICpcbiAgICAgKiAgIHNob3VsZENv
bXBvbmVudFVwZGF0ZTogZnVuY3Rpb24obmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0
KSB7XG4gICAgICogICAgIHJldHVybiAhZXF1YWwobmV4dFByb3BzLCB0aGlzLnByb3BzKSB8fFxu
ICAgICAqICAgICAgICFlcXVhbChuZXh0U3RhdGUsIHRoaXMuc3RhdGUpIHx8XG4gICAgICogICAg
ICAgIWVxdWFsKG5leHRDb250ZXh0LCB0aGlzLmNvbnRleHQpO1xuICAgICAqICAgfVxuICAgICAq
XG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgICAqIEBwYXJhbSB7P29iamVj
dH0gbmV4dFN0YXRlXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dFxuICAgICAq
IEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlLlxu
ICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIHNob3VsZENvbXBvbmVudFVwZGF0ZTogJ0RF
RklORV9PTkNFJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50
IGlzIGFib3V0IHRvIHVwZGF0ZSBkdWUgdG8gYSB0cmFuc2l0aW9uIGZyb21cbiAgICAgKiBgdGhp
cy5wcm9wc2AsIGB0aGlzLnN0YXRlYCBhbmQgYHRoaXMuY29udGV4dGAgdG8gYG5leHRQcm9wc2As
IGBuZXh0U3RhdGVgXG4gICAgICogYW5kIGBuZXh0Q29udGV4dGAuXG4gICAgICpcbiAgICAgKiBV
c2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBwZXJmb3JtIHByZXBhcmF0aW9uIGJlZm9yZSBh
biB1cGRhdGUgb2NjdXJzLlxuICAgICAqXG4gICAgICogTk9URTogWW91ICoqY2Fubm90KiogdXNl
IGB0aGlzLnNldFN0YXRlKClgIGluIHRoaXMgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHBhcmFt
IHtvYmplY3R9IG5leHRQcm9wc1xuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlXG4g
ICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dFxuICAgICAqIEBwYXJhbSB7UmVhY3RS
ZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAg
Ki9cbiAgICBjb21wb25lbnRXaWxsVXBkYXRlOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4g
ICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQncyBET00gcmVwcmVzZW50YXRpb24gaGFz
IGJlZW4gdXBkYXRlZC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5
IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25lbnQgaGFzXG4gICAgICogYmVl
biB1cGRhdGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHByZXZQcm9wc1xuICAg
ICAqIEBwYXJhbSB7P29iamVjdH0gcHJldlN0YXRlXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBw
cmV2Q29udGV4dFxuICAgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1l
bnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQuXG4gICAgICogQG9wdGlvbmFsXG4gICAgICov
XG4gICAgY29tcG9uZW50RGlkVXBkYXRlOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAg
ICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgYWJvdXQgdG8gYmUgcmVtb3ZlZCBmcm9t
IGl0cyBwYXJlbnQgYW5kIGhhdmVcbiAgICAgKiBpdHMgRE9NIHJlcHJlc2VudGF0aW9uIGRlc3Ry
b3llZC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIGRlYWxs
b2NhdGUgYW55IGV4dGVybmFsIHJlc291cmNlcy5cbiAgICAgKlxuICAgICAqIE5PVEU6IFRoZXJl
IGlzIG5vIGBjb21wb25lbnREaWRVbm1vdW50YCBzaW5jZSB5b3VyIGNvbXBvbmVudCB3aWxsIGhh
dmUgYmVlblxuICAgICAqIGRlc3Ryb3llZCBieSB0aGF0IHBvaW50LlxuICAgICAqXG4gICAgICog
QG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQ6ICdERUZJTkVfTUFO
WScsXG5cbiAgICAvLyA9PT09IEFkdmFuY2VkIG1ldGhvZHMgPT09PVxuXG4gICAgLyoqXG4gICAg
ICogVXBkYXRlcyB0aGUgY29tcG9uZW50J3MgY3VycmVudGx5IG1vdW50ZWQgRE9NIHJlcHJlc2Vu
dGF0aW9uLlxuICAgICAqXG4gICAgICogQnkgZGVmYXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0
J3MgcmVuZGVyaW5nIGFuZCByZWNvbmNpbGlhdGlvbiBhbGdvcml0aG0uXG4gICAgICogU29waGlz
dGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92ZXJyaWRlIHRoaXMuXG4gICAgICpcbiAgICAg
KiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAgICog
QGludGVybmFsXG4gICAgICogQG92ZXJyaWRhYmxlXG4gICAgICovXG4gICAgdXBkYXRlQ29tcG9u
ZW50OiAnT1ZFUlJJREVfQkFTRSdcbiAgfTtcblxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIGNs
YXNzIHNwZWNpZmljYXRpb24ga2V5cyB0byBzcGVjaWFsIHByb2Nlc3NpbmcgZnVuY3Rpb25zLlxu
ICAgKlxuICAgKiBBbHRob3VnaCB0aGVzZSBhcmUgZGVjbGFyZWQgbGlrZSBpbnN0YW5jZSBwcm9w
ZXJ0aWVzIGluIHRoZSBzcGVjaWZpY2F0aW9uXG4gICAqIHdoZW4gZGVmaW5pbmcgY2xhc3NlcyB1
c2luZyBgUmVhY3QuY3JlYXRlQ2xhc3NgLCB0aGV5IGFyZSBhY3R1YWxseSBzdGF0aWNcbiAgICog
YW5kIGFyZSBhY2Nlc3NpYmxlIG9uIHRoZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIHRoZSBwcm90
b3R5cGUuIERlc3BpdGVcbiAgICogYmVpbmcgc3RhdGljLCB0aGV5IG11c3QgYmUgZGVmaW5lZCBv
dXRzaWRlIG9mIHRoZSBcInN0YXRpY3NcIiBrZXkgdW5kZXJcbiAgICogd2hpY2ggYWxsIG90aGVy
IHN0YXRpYyBtZXRob2RzIGFyZSBkZWZpbmVkLlxuICAgKi9cbiAgdmFyIFJFU0VSVkVEX1NQRUNf
S0VZUyA9IHtcbiAgICBkaXNwbGF5TmFtZTogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGRpc3BsYXlO
YW1lKSB7XG4gICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xuICAg
IH0sXG4gICAgbWl4aW5zOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgbWl4aW5zKSB7XG4gICAgICBp
ZiAobWl4aW5zKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWl4aW5zLmxlbmd0aDsg
aSsrKSB7XG4gICAgICAgICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIG1peGlu
c1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGNoaWxkQ29udGV4dFR5cGVz
OiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgY2hpbGRDb250ZXh0VHlwZXMpIHtcbiAgICAgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhbGlkYXRl
VHlwZURlZihDb25zdHJ1Y3RvciwgY2hpbGRDb250ZXh0VHlwZXMsICdjaGlsZENvbnRleHQnKTtc
biAgICAgIH1cbiAgICAgIENvbnN0cnVjdG9yLmNoaWxkQ29udGV4dFR5cGVzID0gX2Fzc2lnbihc
biAgICAgICAge30sXG4gICAgICAgIENvbnN0cnVjdG9yLmNoaWxkQ29udGV4dFR5cGVzLFxuICAg
ICAgICBjaGlsZENvbnRleHRUeXBlc1xuICAgICAgKTtcbiAgICB9LFxuICAgIGNvbnRleHRUeXBl
czogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGNvbnRleHRUeXBlcykge1xuICAgICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFsaWRhdGVUeXBl
RGVmKENvbnN0cnVjdG9yLCBjb250ZXh0VHlwZXMsICdjb250ZXh0Jyk7XG4gICAgICB9XG4gICAg
ICBDb25zdHJ1Y3Rvci5jb250ZXh0VHlwZXMgPSBfYXNzaWduKFxuICAgICAgICB7fSxcbiAgICAg
ICAgQ29uc3RydWN0b3IuY29udGV4dFR5cGVzLFxuICAgICAgICBjb250ZXh0VHlwZXNcbiAgICAg
ICk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBTcGVjaWFsIGNhc2UgZ2V0RGVmYXVsdFByb3Bz
IHdoaWNoIHNob3VsZCBtb3ZlIGludG8gc3RhdGljcyBidXQgcmVxdWlyZXNcbiAgICAgKiBhdXRv
bWF0aWMgbWVyZ2luZy5cbiAgICAgKi9cbiAgICBnZXREZWZhdWx0UHJvcHM6IGZ1bmN0aW9uKENv
bnN0cnVjdG9yLCBnZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgIGlmIChDb25zdHJ1Y3Rvci5nZXRE
ZWZhdWx0UHJvcHMpIHtcbiAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gY3Jl
YXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24oXG4gICAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVs
dFByb3BzLFxuICAgICAgICAgIGdldERlZmF1bHRQcm9wc1xuICAgICAgICApO1xuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gZ2V0RGVmYXVsdFBy
b3BzO1xuICAgICAgfVxuICAgIH0sXG4gICAgcHJvcFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3Rv
ciwgcHJvcFR5cGVzKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIHByb3BUeXBl
cywgJ3Byb3AnKTtcbiAgICAgIH1cbiAgICAgIENvbnN0cnVjdG9yLnByb3BUeXBlcyA9IF9hc3Np
Z24oe30sIENvbnN0cnVjdG9yLnByb3BUeXBlcywgcHJvcFR5cGVzKTtcbiAgICB9LFxuICAgIHN0
YXRpY3M6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBzdGF0aWNzKSB7XG4gICAgICBtaXhTdGF0aWNT
cGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3RhdGljcyk7XG4gICAgfSxcbiAgICBhdXRv
YmluZDogZnVuY3Rpb24oKSB7fVxuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlVHlwZURlZihD
b25zdHJ1Y3RvciwgdHlwZURlZiwgbG9jYXRpb24pIHtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBp
biB0eXBlRGVmKSB7XG4gICAgICBpZiAodHlwZURlZi5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkp
IHtcbiAgICAgICAgLy8gdXNlIGEgd2FybmluZyBpbnN0ZWFkIG9mIGFuIF9pbnZhcmlhbnQgc28g
Y29tcG9uZW50c1xuICAgICAgICAvLyBkb24ndCBzaG93IHVwIGluIHByb2QgYnV0IG9ubHkgaW4g
X19ERVZfX1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICB0eXBlb2YgdHlwZURlZltwcm9w
TmFtZV0gPT09ICdmdW5jdGlvbicsXG4gICAgICAgICAgICAnJXM6ICVzIHR5cGUgYCVzYCBpcyBp
bnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICtcbiAgICAgICAg
ICAgICAgJ1JlYWN0LlByb3BUeXBlcy4nLFxuICAgICAgICAgICAgQ29uc3RydWN0b3IuZGlzcGxh
eU5hbWUgfHwgJ1JlYWN0Q2xhc3MnLFxuICAgICAgICAgICAgUmVhY3RQcm9wVHlwZUxvY2F0aW9u
TmFtZXNbbG9jYXRpb25dLFxuICAgICAgICAgICAgcHJvcE5hbWVcbiAgICAgICAgICApO1xuICAg
ICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVNZXRob2RP
dmVycmlkZShpc0FscmVhZHlEZWZpbmVkLCBuYW1lKSB7XG4gICAgdmFyIHNwZWNQb2xpY3kgPSBS
ZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpXG4gICAgICA/IFJlYWN0Q2xh
c3NJbnRlcmZhY2VbbmFtZV1cbiAgICAgIDogbnVsbDtcblxuICAgIC8vIERpc2FsbG93IG92ZXJy
aWRpbmcgb2YgYmFzZSBjbGFzcyBtZXRob2RzIHVubGVzcyBleHBsaWNpdGx5IGFsbG93ZWQuXG4g
ICAgaWYgKFJlYWN0Q2xhc3NNaXhpbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgX2lu
dmFyaWFudChcbiAgICAgICAgc3BlY1BvbGljeSA9PT0gJ09WRVJSSURFX0JBU0UnLFxuICAgICAg
ICAnUmVhY3RDbGFzc0ludGVyZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRvIG92ZXJyaWRlICcg
K1xuICAgICAgICAgICdgJXNgIGZyb20geW91ciBjbGFzcyBzcGVjaWZpY2F0aW9uLiBFbnN1cmUg
dGhhdCB5b3VyIG1ldGhvZCBuYW1lcyAnICtcbiAgICAgICAgICAnZG8gbm90IG92ZXJsYXAgd2l0
aCBSZWFjdCBtZXRob2RzLicsXG4gICAgICAgIG5hbWVcbiAgICAgICk7XG4gICAgfVxuXG4gICAg
Ly8gRGlzYWxsb3cgZGVmaW5pbmcgbWV0aG9kcyBtb3JlIHRoYW4gb25jZSB1bmxlc3MgZXhwbGlj
aXRseSBhbGxvd2VkLlxuICAgIGlmIChpc0FscmVhZHlEZWZpbmVkKSB7XG4gICAgICBfaW52YXJp
YW50KFxuICAgICAgICBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknIHx8IHNwZWNQb2xpY3kg
PT09ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuICAgICAgICAnUmVhY3RDbGFzc0ludGVyZmFjZTog
WW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSAnICtcbiAgICAgICAgICAnYCVzYCBvbiB5b3Vy
IGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUgZHVlICcgK1xu
ICAgICAgICAgICd0byBhIG1peGluLicsXG4gICAgICAgIG5hbWVcbiAgICAgICk7XG4gICAgfVxu
ICB9XG5cbiAgLyoqXG4gICAqIE1peGluIGhlbHBlciB3aGljaCBoYW5kbGVzIHBvbGljeSB2YWxp
ZGF0aW9uIGFuZCByZXNlcnZlZFxuICAgKiBzcGVjaWZpY2F0aW9uIGtleXMgd2hlbiBidWlsZGlu
ZyBSZWFjdCBjbGFzc2VzLlxuICAgKi9cbiAgZnVuY3Rpb24gbWl4U3BlY0ludG9Db21wb25lbnQo
Q29uc3RydWN0b3IsIHNwZWMpIHtcbiAgICBpZiAoIXNwZWMpIHtcbiAgICAgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhciB0eXBlb2ZTcGVj
ID0gdHlwZW9mIHNwZWM7XG4gICAgICAgIHZhciBpc01peGluVmFsaWQgPSB0eXBlb2ZTcGVjID09
PSAnb2JqZWN0JyAmJiBzcGVjICE9PSBudWxsO1xuXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2FybmluZyhcbiAgICAgICAg
ICAgIGlzTWl4aW5WYWxpZCxcbiAgICAgICAgICAgIFwiJXM6IFlvdSdyZSBhdHRlbXB0aW5nIHRv
IGluY2x1ZGUgYSBtaXhpbiB0aGF0IGlzIGVpdGhlciBudWxsIFwiICtcbiAgICAgICAgICAgICAg
J29yIG5vdCBhbiBvYmplY3QuIENoZWNrIHRoZSBtaXhpbnMgaW5jbHVkZWQgYnkgdGhlIGNvbXBv
bmVudCwgJyArXG4gICAgICAgICAgICAgICdhcyB3ZWxsIGFzIGFueSBtaXhpbnMgdGhleSBpbmNs
dWRlIHRoZW1zZWx2ZXMuICcgK1xuICAgICAgICAgICAgICAnRXhwZWN0ZWQgb2JqZWN0IGJ1dCBn
b3QgJXMuJyxcbiAgICAgICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENs
YXNzJyxcbiAgICAgICAgICAgIHNwZWMgPT09IG51bGwgPyBudWxsIDogdHlwZW9mU3BlY1xuICAg
ICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxu
ICAgIF9pbnZhcmlhbnQoXG4gICAgICB0eXBlb2Ygc3BlYyAhPT0gJ2Z1bmN0aW9uJyxcbiAgICAg
IFwiUmVhY3RDbGFzczogWW91J3JlIGF0dGVtcHRpbmcgdG8gXCIgK1xuICAgICAgICAndXNlIGEg
Y29tcG9uZW50IGNsYXNzIG9yIGZ1bmN0aW9uIGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNl
IGEgJyArXG4gICAgICAgICdyZWd1bGFyIG9iamVjdC4nXG4gICAgKTtcbiAgICBfaW52YXJpYW50
KFxuICAgICAgIWlzVmFsaWRFbGVtZW50KHNwZWMpLFxuICAgICAgXCJSZWFjdENsYXNzOiBZb3Un
cmUgYXR0ZW1wdGluZyB0byBcIiArXG4gICAgICAgICd1c2UgYSBjb21wb25lbnQgYXMgYSBtaXhp
bi4gSW5zdGVhZCwganVzdCB1c2UgYSByZWd1bGFyIG9iamVjdC4nXG4gICAgKTtcblxuICAgIHZh
ciBwcm90byA9IENvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgICB2YXIgYXV0b0JpbmRQYWlycyA9
IHByb3RvLl9fcmVhY3RBdXRvQmluZFBhaXJzO1xuXG4gICAgLy8gQnkgaGFuZGxpbmcgbWl4aW5z
IGJlZm9yZSBhbnkgb3RoZXIgcHJvcGVydGllcywgd2UgZW5zdXJlIHRoZSBzYW1lXG4gICAgLy8g
Y2hhaW5pbmcgb3JkZXIgaXMgYXBwbGllZCB0byBtZXRob2RzIHdpdGggREVGSU5FX01BTlkgcG9s
aWN5LCB3aGV0aGVyXG4gICAgLy8gbWl4aW5zIGFyZSBsaXN0ZWQgYmVmb3JlIG9yIGFmdGVyIHRo
ZXNlIG1ldGhvZHMgaW4gdGhlIHNwZWMuXG4gICAgaWYgKHNwZWMuaGFzT3duUHJvcGVydHkoTUlY
SU5TX0tFWSkpIHtcbiAgICAgIFJFU0VSVkVEX1NQRUNfS0VZUy5taXhpbnMoQ29uc3RydWN0b3Is
IHNwZWMubWl4aW5zKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBuYW1lIGluIHNwZWMpIHtcbiAg
ICAgIGlmICghc3BlYy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBjb250aW51ZTtc
biAgICAgIH1cblxuICAgICAgaWYgKG5hbWUgPT09IE1JWElOU19LRVkpIHtcbiAgICAgICAgLy8g
V2UgaGF2ZSBhbHJlYWR5IGhhbmRsZWQgbWl4aW5zIGluIGEgc3BlY2lhbCBjYXNlIGFib3ZlLlxu
ICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHByb3BlcnR5ID0gc3BlY1tu
YW1lXTtcbiAgICAgIHZhciBpc0FscmVhZHlEZWZpbmVkID0gcHJvdG8uaGFzT3duUHJvcGVydHko
bmFtZSk7XG4gICAgICB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5h
bWUpO1xuXG4gICAgICBpZiAoUkVTRVJWRURfU1BFQ19LRVlTLmhhc093blByb3BlcnR5KG5hbWUp
KSB7XG4gICAgICAgIFJFU0VSVkVEX1NQRUNfS0VZU1tuYW1lXShDb25zdHJ1Y3RvciwgcHJvcGVy
dHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2V0dXAgbWV0aG9kcyBvbiBwcm90b3R5
cGU6XG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbWVtYmVyIG1ldGhvZHMgc2hvdWxkIG5vdCBi
ZSBhdXRvbWF0aWNhbGx5IGJvdW5kOlxuICAgICAgICAvLyAxLiBFeHBlY3RlZCBSZWFjdENsYXNz
IG1ldGhvZHMgKGluIHRoZSBcImludGVyZmFjZVwiKS5cbiAgICAgICAgLy8gMi4gT3ZlcnJpZGRl
biBtZXRob2RzICh0aGF0IHdlcmUgbWl4ZWQgaW4pLlxuICAgICAgICB2YXIgaXNSZWFjdENsYXNz
TWV0aG9kID0gUmVhY3RDbGFzc0ludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShuYW1lKTtcbiAgICAg
ICAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgcHJvcGVydHkgPT09ICdmdW5jdGlvbic7XG4gICAg
ICAgIHZhciBzaG91bGRBdXRvQmluZCA9XG4gICAgICAgICAgaXNGdW5jdGlvbiAmJlxuICAgICAg
ICAgICFpc1JlYWN0Q2xhc3NNZXRob2QgJiZcbiAgICAgICAgICAhaXNBbHJlYWR5RGVmaW5lZCAm
JlxuICAgICAgICAgIHNwZWMuYXV0b2JpbmQgIT09IGZhbHNlO1xuXG4gICAgICAgIGlmIChzaG91
bGRBdXRvQmluZCkge1xuICAgICAgICAgIGF1dG9CaW5kUGFpcnMucHVzaChuYW1lLCBwcm9wZXJ0
eSk7XG4gICAgICAgICAgcHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICAgICAgfSBlbHNlIHtc
biAgICAgICAgICBpZiAoaXNBbHJlYWR5RGVmaW5lZCkge1xuICAgICAgICAgICAgdmFyIHNwZWNQ
b2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlW25hbWVdO1xuXG4gICAgICAgICAgICAvLyBUaGVz
ZSBjYXNlcyBzaG91bGQgYWxyZWFkeSBiZSBjYXVnaHQgYnkgdmFsaWRhdGVNZXRob2RPdmVycmlk
ZS5cbiAgICAgICAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgICAgICAgIGlzUmVhY3RDbGFzc01l
dGhvZCAmJlxuICAgICAgICAgICAgICAgIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVS
R0VEJyB8fFxuICAgICAgICAgICAgICAgICAgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJyks
XG4gICAgICAgICAgICAgICdSZWFjdENsYXNzOiBVbmV4cGVjdGVkIHNwZWMgcG9saWN5ICVzIGZv
ciBrZXkgJXMgJyArXG4gICAgICAgICAgICAgICAgJ3doZW4gbWl4aW5nIGluIGNvbXBvbmVudCBz
cGVjcy4nLFxuICAgICAgICAgICAgICBzcGVjUG9saWN5LFxuICAgICAgICAgICAgICBuYW1lXG4g
ICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBGb3IgbWV0aG9kcyB3aGljaCBhcmUgZGVm
aW5lZCBtb3JlIHRoYW4gb25jZSwgY2FsbCB0aGUgZXhpc3RpbmdcbiAgICAgICAgICAgIC8vIG1l
dGhvZHMgYmVmb3JlIGNhbGxpbmcgdGhlIG5ldyBwcm9wZXJ0eSwgbWVyZ2luZyBpZiBhcHByb3By
aWF0ZS5cbiAgICAgICAgICAgIGlmIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VE
Jykge1xuICAgICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0
aW9uKHByb3RvW25hbWVdLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNwZWNQ
b2xpY3kgPT09ICdERUZJTkVfTUFOWScpIHtcbiAgICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBj
cmVhdGVDaGFpbmVkRnVuY3Rpb24ocHJvdG9bbmFtZV0sIHByb3BlcnR5KTtcbiAgICAgICAgICAg
IH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBwcm9wZXJ0
eTtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgICAgICAgICAgIC8vIEFkZCB2ZXJib3NlIGRpc3BsYXlOYW1lIHRvIHRoZSBmdW5j
dGlvbiwgd2hpY2ggaGVscHMgd2hlbiBsb29raW5nXG4gICAgICAgICAgICAgIC8vIGF0IHByb2Zp
bGluZyB0b29scy5cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0
aW9uJyAmJiBzcGVjLmRpc3BsYXlOYW1lKSB7XG4gICAgICAgICAgICAgICAgcHJvdG9bbmFtZV0u
ZGlzcGxheU5hbWUgPSBzcGVjLmRpc3BsYXlOYW1lICsgJ18nICsgbmFtZTtcbiAgICAgICAgICAg
ICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAg
IH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVj
dG9yLCBzdGF0aWNzKSB7XG4gICAgaWYgKCFzdGF0aWNzKSB7XG4gICAgICByZXR1cm47XG4gICAg
fVxuICAgIGZvciAodmFyIG5hbWUgaW4gc3RhdGljcykge1xuICAgICAgdmFyIHByb3BlcnR5ID0g
c3RhdGljc1tuYW1lXTtcbiAgICAgIGlmICghc3RhdGljcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkg
e1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGlzUmVzZXJ2ZWQgPSBu
YW1lIGluIFJFU0VSVkVEX1NQRUNfS0VZUztcbiAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgICFp
c1Jlc2VydmVkLFxuICAgICAgICAnUmVhY3RDbGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRl
ZmluZSBhIHJlc2VydmVkICcgK1xuICAgICAgICAgICdwcm9wZXJ0eSwgYCVzYCwgdGhhdCBzaG91
bGRuXFwndCBiZSBvbiB0aGUgXCJzdGF0aWNzXCIga2V5LiBEZWZpbmUgaXQgJyArXG4gICAgICAg
ICAgJ2FzIGFuIGluc3RhbmNlIHByb3BlcnR5IGluc3RlYWQ7IGl0IHdpbGwgc3RpbGwgYmUgYWNj
ZXNzaWJsZSBvbiB0aGUgJyArXG4gICAgICAgICAgJ2NvbnN0cnVjdG9yLicsXG4gICAgICAgIG5h
bWVcbiAgICAgICk7XG5cbiAgICAgIHZhciBpc0luaGVyaXRlZCA9IG5hbWUgaW4gQ29uc3RydWN0
b3I7XG4gICAgICBfaW52YXJpYW50KFxuICAgICAgICAhaXNJbmhlcml0ZWQsXG4gICAgICAgICdS
ZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgK1xuICAgICAgICAgICdg
JXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBi
ZSAnICtcbiAgICAgICAgICAnZHVlIHRvIGEgbWl4aW4uJyxcbiAgICAgICAgbmFtZVxuICAgICAg
KTtcbiAgICAgIENvbnN0cnVjdG9yW25hbWVdID0gcHJvcGVydHk7XG4gICAgfVxuICB9XG5cbiAg
LyoqXG4gICAqIE1lcmdlIHR3byBvYmplY3RzLCBidXQgdGhyb3cgaWYgYm90aCBjb250YWluIHRo
ZSBzYW1lIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG9uZSBUaGUgZmlyc3Qgb2Jq
ZWN0LCB3aGljaCBpcyBtdXRhdGVkLlxuICAgKiBAcGFyYW0ge29iamVjdH0gdHdvIFRoZSBzZWNv
bmQgb2JqZWN0XG4gICAqIEByZXR1cm4ge29iamVjdH0gb25lIGFmdGVyIGl0IGhhcyBiZWVuIG11
dGF0ZWQgdG8gY29udGFpbiBldmVyeXRoaW5nIGluIHR3by5cbiAgICovXG4gIGZ1bmN0aW9uIG1l
cmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMob25lLCB0d28pIHtcbiAgICBfaW52YXJpYW50KFxu
ICAgICAgb25lICYmIHR3byAmJiB0eXBlb2Ygb25lID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdHdv
ID09PSAnb2JqZWN0JyxcbiAgICAgICdtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6IENh
bm5vdCBtZXJnZSBub24tb2JqZWN0cy4nXG4gICAgKTtcblxuICAgIGZvciAodmFyIGtleSBpbiB0
d28pIHtcbiAgICAgIGlmICh0d28uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBfaW52
YXJpYW50KFxuICAgICAgICAgIG9uZVtrZXldID09PSB1bmRlZmluZWQsXG4gICAgICAgICAgJ21l
cmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoKTogJyArXG4gICAgICAgICAgICAnVHJpZWQgdG8g
bWVyZ2UgdHdvIG9iamVjdHMgd2l0aCB0aGUgc2FtZSBrZXk6IGAlc2AuIFRoaXMgY29uZmxpY3Qg
JyArXG4gICAgICAgICAgICAnbWF5IGJlIGR1ZSB0byBhIG1peGluOyBpbiBwYXJ0aWN1bGFyLCB0
aGlzIG1heSBiZSBjYXVzZWQgYnkgdHdvICcgK1xuICAgICAgICAgICAgJ2dldEluaXRpYWxTdGF0
ZSgpIG9yIGdldERlZmF1bHRQcm9wcygpIG1ldGhvZHMgcmV0dXJuaW5nIG9iamVjdHMgJyArXG4g
ICAgICAgICAgICAnd2l0aCBjbGFzaGluZyBrZXlzLicsXG4gICAgICAgICAga2V5XG4gICAgICAg
ICk7XG4gICAgICAgIG9uZVtrZXldID0gdHdvW2tleV07XG4gICAgICB9XG4gICAgfVxuICAgIHJl
dHVybiBvbmU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52
b2tlcyB0d28gZnVuY3Rpb25zIGFuZCBtZXJnZXMgdGhlaXIgcmV0dXJuIHZhbHVlcy5cbiAgICpc
biAgICogQHBhcmFtIHtmdW5jdGlvbn0gb25lIEZ1bmN0aW9uIHRvIGludm9rZSBmaXJzdC5cbiAg
ICogQHBhcmFtIHtmdW5jdGlvbn0gdHdvIEZ1bmN0aW9uIHRvIGludm9rZSBzZWNvbmQuXG4gICAq
IEByZXR1cm4ge2Z1bmN0aW9ufSBGdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIHR3byBhcmd1bWVu
dCBmdW5jdGlvbnMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBjcmVhdGVNZXJn
ZWRSZXN1bHRGdW5jdGlvbihvbmUsIHR3bykge1xuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWRS
ZXN1bHQoKSB7XG4gICAgICB2YXIgYSA9IG9uZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAg
ICAgdmFyIGIgPSB0d28uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIGlmIChhID09IG51
bGwpIHtcbiAgICAgICAgcmV0dXJuIGI7XG4gICAgICB9IGVsc2UgaWYgKGIgPT0gbnVsbCkge1xu
ICAgICAgICByZXR1cm4gYTtcbiAgICAgIH1cbiAgICAgIHZhciBjID0ge307XG4gICAgICBtZXJn
ZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKGMsIGEpO1xuICAgICAgbWVyZ2VJbnRvV2l0aE5vRHVw
bGljYXRlS2V5cyhjLCBiKTtcbiAgICAgIHJldHVybiBjO1xuICAgIH07XG4gIH1cblxuICAvKipc
biAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0d28gZnVuY3Rpb25zIGFuZCBp
Z25vcmVzIHRoZWlyIHJldHVybiB2YWxlcy5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0g
b25lIEZ1bmN0aW9uIHRvIGludm9rZSBmaXJzdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gdHdv
IEZ1bmN0aW9uIHRvIGludm9rZSBzZWNvbmQuXG4gICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBGdW5j
dGlvbiB0aGF0IGludm9rZXMgdGhlIHR3byBhcmd1bWVudCBmdW5jdGlvbnMuXG4gICAqIEBwcml2
YXRlXG4gICAqL1xuICBmdW5jdGlvbiBjcmVhdGVDaGFpbmVkRnVuY3Rpb24ob25lLCB0d28pIHtc
biAgICByZXR1cm4gZnVuY3Rpb24gY2hhaW5lZEZ1bmN0aW9uKCkge1xuICAgICAgb25lLmFwcGx5
KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB0d28uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAg
ICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgbWV0aG9kIHRvIHRoZSBjb21wb25lbnQu
XG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnQgQ29tcG9uZW50IHdob3NlIG1l
dGhvZCBpcyBnb2luZyB0byBiZSBib3VuZC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9k
IE1ldGhvZCB0byBiZSBib3VuZC5cbiAgICogQHJldHVybiB7ZnVuY3Rpb259IFRoZSBib3VuZCBt
ZXRob2QuXG4gICAqL1xuICBmdW5jdGlvbiBiaW5kQXV0b0JpbmRNZXRob2QoY29tcG9uZW50LCBt
ZXRob2QpIHtcbiAgICB2YXIgYm91bmRNZXRob2QgPSBtZXRob2QuYmluZChjb21wb25lbnQpO1xu
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBi
b3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9uZW50O1xuICAgICAgYm91bmRN
ZXRob2QuX19yZWFjdEJvdW5kTWV0aG9kID0gbWV0aG9kO1xuICAgICAgYm91bmRNZXRob2QuX19y
ZWFjdEJvdW5kQXJndW1lbnRzID0gbnVsbDtcbiAgICAgIHZhciBjb21wb25lbnROYW1lID0gY29t
cG9uZW50LmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lO1xuICAgICAgdmFyIF9iaW5kID0gYm91bmRN
ZXRob2QuYmluZDtcbiAgICAgIGJvdW5kTWV0aG9kLmJpbmQgPSBmdW5jdGlvbihuZXdUaGlzKSB7
XG4gICAgICAgIGZvciAoXG4gICAgICAgICAgdmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLFxu
ICAgICAgICAgICAgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSxcbiAgICAg
ICAgICAgIF9rZXkgPSAxO1xuICAgICAgICAgIF9rZXkgPCBfbGVuO1xuICAgICAgICAgIF9rZXkr
K1xuICAgICAgICApIHtcbiAgICAgICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5
XTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVzZXIgaXMgdHJ5aW5nIHRvIGJpbmQoKSBhbiBh
dXRvYm91bmQgbWV0aG9kOyB3ZSBlZmZlY3RpdmVseSB3aWxsXG4gICAgICAgIC8vIGlnbm9yZSB0
aGUgdmFsdWUgb2YgXCJ0aGlzXCIgdGhhdCB0aGUgdXNlciBpcyB0cnlpbmcgdG8gdXNlLCBzb1xu
ICAgICAgICAvLyBsZXQncyB3YXJuLlxuICAgICAgICBpZiAobmV3VGhpcyAhPT0gY29tcG9uZW50
ICYmIG5ld1RoaXMgIT09IG51bGwpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAg
ICAgZmFsc2UsXG4gICAgICAgICAgICAgICdiaW5kKCk6IFJlYWN0IGNvbXBvbmVudCBtZXRob2Rz
IG1heSBvbmx5IGJlIGJvdW5kIHRvIHRoZSAnICtcbiAgICAgICAgICAgICAgICAnY29tcG9uZW50
IGluc3RhbmNlLiBTZWUgJXMnLFxuICAgICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAgICAg
ICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghYXJncy5sZW5ndGgpIHtc
biAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAg
ICdiaW5kKCk6IFlvdSBhcmUgYmluZGluZyBhIGNvbXBvbmVudCBtZXRob2QgdG8gdGhlIGNvbXBv
bmVudC4gJyArXG4gICAgICAgICAgICAgICAgJ1JlYWN0IGRvZXMgdGhpcyBmb3IgeW91IGF1dG9t
YXRpY2FsbHkgaW4gYSBoaWdoLXBlcmZvcm1hbmNlICcgK1xuICAgICAgICAgICAgICAgICd3YXks
IHNvIHlvdSBjYW4gc2FmZWx5IHJlbW92ZSB0aGlzIGNhbGwuIFNlZSAlcycsXG4gICAgICAgICAg
ICAgIGNvbXBvbmVudE5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAg
IHJldHVybiBib3VuZE1ldGhvZDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVib3VuZE1ldGhv
ZCA9IF9iaW5kLmFwcGx5KGJvdW5kTWV0aG9kLCBhcmd1bWVudHMpO1xuICAgICAgICByZWJvdW5k
TWV0aG9kLl9fcmVhY3RCb3VuZENvbnRleHQgPSBjb21wb25lbnQ7XG4gICAgICAgIHJlYm91bmRN
ZXRob2QuX19yZWFjdEJvdW5kTWV0aG9kID0gbWV0aG9kO1xuICAgICAgICByZWJvdW5kTWV0aG9k
Ll9fcmVhY3RCb3VuZEFyZ3VtZW50cyA9IGFyZ3M7XG4gICAgICAgIHJldHVybiByZWJvdW5kTWV0
aG9kO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGJvdW5kTWV0aG9kO1xuICB9XG5cbiAg
LyoqXG4gICAqIEJpbmRzIGFsbCBhdXRvLWJvdW5kIG1ldGhvZHMgaW4gYSBjb21wb25lbnQuXG4g
ICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnQgQ29tcG9uZW50IHdob3NlIG1ldGhv
ZCBpcyBnb2luZyB0byBiZSBib3VuZC5cbiAgICovXG4gIGZ1bmN0aW9uIGJpbmRBdXRvQmluZE1l
dGhvZHMoY29tcG9uZW50KSB7XG4gICAgdmFyIHBhaXJzID0gY29tcG9uZW50Ll9fcmVhY3RBdXRv
QmluZFBhaXJzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFpcnMubGVuZ3RoOyBpICs9IDIp
IHtcbiAgICAgIHZhciBhdXRvQmluZEtleSA9IHBhaXJzW2ldO1xuICAgICAgdmFyIG1ldGhvZCA9
IHBhaXJzW2kgKyAxXTtcbiAgICAgIGNvbXBvbmVudFthdXRvQmluZEtleV0gPSBiaW5kQXV0b0Jp
bmRNZXRob2QoY29tcG9uZW50LCBtZXRob2QpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBJc01vdW50
ZWRQcmVNaXhpbiA9IHtcbiAgICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24oKSB7XG4gICAg
ICB0aGlzLl9faXNNb3VudGVkID0gdHJ1ZTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIElzTW91bnRl
ZFBvc3RNaXhpbiA9IHtcbiAgICBjb21wb25lbnRXaWxsVW5tb3VudDogZnVuY3Rpb24oKSB7XG4g
ICAgICB0aGlzLl9faXNNb3VudGVkID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAg
KiBBZGQgbW9yZSB0byB0aGUgUmVhY3RDbGFzcyBiYXNlIGNsYXNzLiBUaGVzZSBhcmUgYWxsIGxl
Z2FjeSBmZWF0dXJlcyBhbmRcbiAgICogdGhlcmVmb3JlIG5vdCBhbHJlYWR5IHBhcnQgb2YgdGhl
IG1vZGVybiBSZWFjdENvbXBvbmVudC5cbiAgICovXG4gIHZhciBSZWFjdENsYXNzTWl4aW4gPSB7
XG4gICAgLyoqXG4gICAgICogVE9ETzogVGhpcyB3aWxsIGJlIGRlcHJlY2F0ZWQgYmVjYXVzZSBz
dGF0ZSBzaG91bGQgYWx3YXlzIGtlZXAgYSBjb25zaXN0ZW50XG4gICAgICogdHlwZSBzaWduYXR1
cmUgYW5kIHRoZSBvbmx5IHVzZSBjYXNlIGZvciB0aGlzLCBpcyB0byBhdm9pZCB0aGF0LlxuICAg
ICAqL1xuICAgIHJlcGxhY2VTdGF0ZTogZnVuY3Rpb24obmV3U3RhdGUsIGNhbGxiYWNrKSB7XG4g
ICAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVJlcGxhY2VTdGF0ZSh0aGlzLCBuZXdTdGF0ZSwgY2Fs
bGJhY2spO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciBvciBub3Qg
dGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuXG4gICAgICogQHJldHVybiB7Ym9v
bGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICogQHByb3RlY3Rl
ZFxuICAgICAqIEBmaW5hbFxuICAgICAqL1xuICAgIGlzTW91bnRlZDogZnVuY3Rpb24oKSB7XG4g
ICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
ICB3YXJuaW5nKFxuICAgICAgICAgIHRoaXMuX19kaWRXYXJuSXNNb3VudGVkLFxuICAgICAgICAg
ICclczogaXNNb3VudGVkIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIG1ha2Ugc3VyZSB0byBjbGVh
biB1cCAnICtcbiAgICAgICAgICAgICdzdWJzY3JpcHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3Rz
IGluIGNvbXBvbmVudFdpbGxVbm1vdW50IHRvICcgK1xuICAgICAgICAgICAgJ3ByZXZlbnQgbWVt
b3J5IGxlYWtzLicsXG4gICAgICAgICAgKHRoaXMuY29uc3RydWN0b3IgJiYgdGhpcy5jb25zdHJ1
Y3Rvci5kaXNwbGF5TmFtZSkgfHxcbiAgICAgICAgICAgIHRoaXMubmFtZSB8fFxuICAgICAgICAg
ICAgJ0NvbXBvbmVudCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fX2RpZFdhcm5Jc01vdW50
ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuICEhdGhpcy5fX2lzTW91bnRlZDtcbiAg
ICB9XG4gIH07XG5cbiAgdmFyIFJlYWN0Q2xhc3NDb21wb25lbnQgPSBmdW5jdGlvbigpIHt9O1xu
ICBfYXNzaWduKFxuICAgIFJlYWN0Q2xhc3NDb21wb25lbnQucHJvdG90eXBlLFxuICAgIFJlYWN0
Q29tcG9uZW50LnByb3RvdHlwZSxcbiAgICBSZWFjdENsYXNzTWl4aW5cbiAgKTtcblxuICAvKipc
biAgICogQ3JlYXRlcyBhIGNvbXBvc2l0ZSBjb21wb25lbnQgY2xhc3MgZ2l2ZW4gYSBjbGFzcyBz
cGVjaWZpY2F0aW9uLlxuICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3Qv
ZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlY2xhc3NcbiAgICpcbiAgICogQHBh
cmFtIHtvYmplY3R9IHNwZWMgQ2xhc3Mgc3BlY2lmaWNhdGlvbiAod2hpY2ggbXVzdCBkZWZpbmUg
YHJlbmRlcmApLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gQ29tcG9uZW50IGNvbnN0cnVjdG9y
IGZ1bmN0aW9uLlxuICAgKiBAcHVibGljXG4gICAqL1xuICBmdW5jdGlvbiBjcmVhdGVDbGFzcyhz
cGVjKSB7XG4gICAgLy8gVG8ga2VlcCBvdXIgd2FybmluZ3MgbW9yZSB1bmRlcnN0YW5kYWJsZSwg
d2UnbGwgdXNlIGEgbGl0dGxlIGhhY2sgaGVyZSB0b1xuICAgIC8vIGVuc3VyZSB0aGF0IENvbnN0
cnVjdG9yLm5hbWUgIT09ICdDb25zdHJ1Y3RvcicuIFRoaXMgbWFrZXMgc3VyZSB3ZSBkb24ndFxu
ICAgIC8vIHVubmVjZXNzYXJpbHkgaWRlbnRpZnkgYSBjbGFzcyB3aXRob3V0IGRpc3BsYXlOYW1l
IGFzICdDb25zdHJ1Y3RvcicuXG4gICAgdmFyIENvbnN0cnVjdG9yID0gaWRlbnRpdHkoZnVuY3Rp
b24ocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcbiAgICAgIC8vIFRoaXMgY29uc3RydWN0b3Ig
Z2V0cyBvdmVycmlkZGVuIGJ5IG1vY2tzLiBUaGUgYXJndW1lbnQgaXMgdXNlZFxuICAgICAgLy8g
YnkgbW9ja3MgdG8gYXNzZXJ0IG9uIHdoYXQgZ2V0cyBtb3VudGVkLlxuXG4gICAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuaW5nKFxu
ICAgICAgICAgIHRoaXMgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcixcbiAgICAgICAgICAnU29tZXRo
aW5nIGlzIGNhbGxpbmcgYSBSZWFjdCBjb21wb25lbnQgZGlyZWN0bHkuIFVzZSBhIGZhY3Rvcnkg
b3IgJyArXG4gICAgICAgICAgICAnSlNYIGluc3RlYWQuIFNlZTogaHR0cHM6Ly9mYi5tZS9yZWFj
dC1sZWdhY3lmYWN0b3J5J1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBXaXJlIHVw
IGF1dG8tYmluZGluZ1xuICAgICAgaWYgKHRoaXMuX19yZWFjdEF1dG9CaW5kUGFpcnMubGVuZ3Ro
KSB7XG4gICAgICAgIGJpbmRBdXRvQmluZE1ldGhvZHModGhpcyk7XG4gICAgICB9XG5cbiAgICAg
IHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAg
ICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDtcbiAgICAgIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIg
fHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG5cbiAgICAgIHRoaXMuc3RhdGUgPSBudWxsO1xuXG4g
ICAgICAvLyBSZWFjdENsYXNzZXMgZG9lc24ndCBoYXZlIGNvbnN0cnVjdG9ycy4gSW5zdGVhZCwg
dGhleSB1c2UgdGhlXG4gICAgICAvLyBnZXRJbml0aWFsU3RhdGUgYW5kIGNvbXBvbmVudFdpbGxN
b3VudCBtZXRob2RzIGZvciBpbml0aWFsaXphdGlvbi5cblxuICAgICAgdmFyIGluaXRpYWxTdGF0
ZSA9IHRoaXMuZ2V0SW5pdGlhbFN0YXRlID8gdGhpcy5nZXRJbml0aWFsU3RhdGUoKSA6IG51bGw7
XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
ICAgICAvLyBXZSBhbGxvdyBhdXRvLW1vY2tzIHRvIHByb2NlZWQgYXMgaWYgdGhleSdyZSByZXR1
cm5pbmcgbnVsbC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGluaXRpYWxTdGF0ZSA9PT0gdW5k
ZWZpbmVkICYmXG4gICAgICAgICAgdGhpcy5nZXRJbml0aWFsU3RhdGUuX2lzTW9ja0Z1bmN0aW9u
XG4gICAgICAgICkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgYmFkIHByYWN0aWNl
LiBDb25zaWRlciB3YXJuaW5nIGhlcmUgYW5kXG4gICAgICAgICAgLy8gZGVwcmVjYXRpbmcgdGhp
cyBjb252ZW5pZW5jZS5cbiAgICAgICAgICBpbml0aWFsU3RhdGUgPSBudWxsO1xuICAgICAgICB9
XG4gICAgICB9XG4gICAgICBfaW52YXJpYW50KFxuICAgICAgICB0eXBlb2YgaW5pdGlhbFN0YXRl
ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpbml0aWFsU3RhdGUpLFxuICAgICAgICAn
JXMuZ2V0SW5pdGlhbFN0YXRlKCk6IG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsJyxcbiAg
ICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50
J1xuICAgICAgKTtcblxuICAgICAgdGhpcy5zdGF0ZSA9IGluaXRpYWxTdGF0ZTtcbiAgICB9KTtc
biAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBuZXcgUmVhY3RDbGFzc0NvbXBvbmVudCgpO1xu
ICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yO1xuICAg
IENvbnN0cnVjdG9yLnByb3RvdHlwZS5fX3JlYWN0QXV0b0JpbmRQYWlycyA9IFtdO1xuXG4gICAg
aW5qZWN0ZWRNaXhpbnMuZm9yRWFjaChtaXhTcGVjSW50b0NvbXBvbmVudC5iaW5kKG51bGwsIENv
bnN0cnVjdG9yKSk7XG5cbiAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3RvciwgSXNN
b3VudGVkUHJlTWl4aW4pO1xuICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBz
cGVjKTtcbiAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3RvciwgSXNNb3VudGVkUG9z
dE1peGluKTtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIGRlZmF1bHRQcm9wcyBwcm9wZXJ0eSBh
ZnRlciBhbGwgbWl4aW5zIGhhdmUgYmVlbiBtZXJnZWQuXG4gICAgaWYgKENvbnN0cnVjdG9yLmdl
dERlZmF1bHRQcm9wcykge1xuICAgICAgQ29uc3RydWN0b3IuZGVmYXVsdFByb3BzID0gQ29uc3Ry
dWN0b3IuZ2V0RGVmYXVsdFByb3BzKCk7XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIFRoaXMgaXMgYSB0YWcgdG8gaW5k
aWNhdGUgdGhhdCB0aGUgdXNlIG9mIHRoZXNlIG1ldGhvZCBuYW1lcyBpcyBvayxcbiAgICAgIC8v
IHNpbmNlIGl0J3MgdXNlZCB3aXRoIGNyZWF0ZUNsYXNzLiBJZiBpdCdzIG5vdCwgdGhlbiBpdCdz
IGxpa2VseSBhXG4gICAgICAvLyBtaXN0YWtlIHNvIHdlJ2xsIHdhcm4geW91IHRvIHVzZSB0aGUg
c3RhdGljIHByb3BlcnR5LCBwcm9wZXJ0eVxuICAgICAgLy8gaW5pdGlhbGl6ZXIgb3IgY29uc3Ry
dWN0b3IgcmVzcGVjdGl2ZWx5LlxuICAgICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9w
cykge1xuICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBw
cm92ZWQgPSB7fTtcbiAgICAgIH1cbiAgICAgIGlmIChDb25zdHJ1Y3Rvci5wcm90b3R5cGUuZ2V0
SW5pdGlhbFN0YXRlKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFs
U3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBf
aW52YXJpYW50KFxuICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlLnJlbmRlcixcbiAgICAgICdj
cmVhdGVDbGFzcyguLi4pOiBDbGFzcyBzcGVjaWZpY2F0aW9uIG11c3QgaW1wbGVtZW50IGEgYHJl
bmRlcmAgbWV0aG9kLidcbiAgICApO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm5pbmcoXG4gICAgICAgICFDb25zdHJ1Y3Rvci5w
cm90b3R5cGUuY29tcG9uZW50U2hvdWxkVXBkYXRlLFxuICAgICAgICAnJXMgaGFzIGEgbWV0aG9k
IGNhbGxlZCAnICtcbiAgICAgICAgICAnY29tcG9uZW50U2hvdWxkVXBkYXRlKCkuIERpZCB5b3Ug
bWVhbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKT8gJyArXG4gICAgICAgICAgJ1RoZSBuYW1lIGlz
IHBocmFzZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyAnICtcbiAgICAg
ICAgICAnZXhwZWN0ZWQgdG8gcmV0dXJuIGEgdmFsdWUuJyxcbiAgICAgICAgc3BlYy5kaXNwbGF5
TmFtZSB8fCAnQSBjb21wb25lbnQnXG4gICAgICApO1xuICAgICAgd2FybmluZyhcbiAgICAgICAg
IUNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzLFxuICAgICAg
ICAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICtcbiAgICAgICAgICAnY29tcG9uZW50V2lsbFJl
Y2lldmVQcm9wcygpLiBEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpPycs
XG4gICAgICAgIHNwZWMuZGlzcGxheU5hbWUgfHwgJ0EgY29tcG9uZW50J1xuICAgICAgKTtcbiAg
ICB9XG5cbiAgICAvLyBSZWR1Y2UgdGltZSBzcGVudCBkb2luZyBsb29rdXBzIGJ5IHNldHRpbmcg
dGhlc2Ugb24gdGhlIHByb3RvdHlwZS5cbiAgICBmb3IgKHZhciBtZXRob2ROYW1lIGluIFJlYWN0
Q2xhc3NJbnRlcmZhY2UpIHtcbiAgICAgIGlmICghQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhv
ZE5hbWVdKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IG51
bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9XG5cbiAg
cmV0dXJuIGNyZWF0ZUNsYXNzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3Rvcnk7XG5cblxu
XG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxl
cy9jcmVhdGUtcmVhY3QtY2xhc3MvZmFjdG9yeS5qc1xuLy8gbW9kdWxlIGlkID0gMTE2XG4vLyBt
b2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuJ3VzZSBz
dHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFy
aWFudCcpO1xuXG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtc
blxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipc
biAqIFJldHVybnMgdGhlIGZpcnN0IGNoaWxkIGluIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiBh
bmQgdmVyaWZpZXMgdGhhdCB0aGVyZVxuICogaXMgb25seSBvbmUgY2hpbGQgaW4gdGhlIGNvbGxl
Y3Rpb24uXG4gKlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3Mv
dG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLm9ubHlcbiAqXG4gKiBUaGUgY3VycmVu
dCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBhIHNpbmdsZSBj
aGlsZCBnZXRzXG4gKiBwYXNzZWQgd2l0aG91dCBhIHdyYXBwZXIsIGJ1dCB0aGUgcHVycG9zZSBv
ZiB0aGlzIGhlbHBlciBmdW5jdGlvbiBpcyB0b1xuICogYWJzdHJhY3QgYXdheSB0aGUgcGFydGlj
dWxhciBzdHJ1Y3R1cmUgb2YgY2hpbGRyZW4uXG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBjaGls
ZHJlbiBDaGlsZCBjb2xsZWN0aW9uIHN0cnVjdHVyZS5cbiAqIEByZXR1cm4ge1JlYWN0RWxlbWVu
dH0gVGhlIGZpcnN0IGFuZCBvbmx5IGBSZWFjdEVsZW1lbnRgIGNvbnRhaW5lZCBpbiB0aGVcbiAq
IHN0cnVjdHVyZS5cbiAqL1xuZnVuY3Rpb24gb25seUNoaWxkKGNoaWxkcmVuKSB7XG4gICFSZWFj
dEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0LkNoaWxkcmVuLm9ubHkg
ZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLicpIDogX3By
b2RJbnZhcmlhbnQoJzE0MycpIDogdm9pZCAwO1xuICByZXR1cm4gY2hpbGRyZW47XG59XG5cbm1v
ZHVsZS5leHBvcnRzID0gb25seUNoaWxkO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VC
UEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0L2xpYi9vbmx5Q2hpbGQuanNcbi8v
IG1vZHVsZSBpZCA9IDExN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG5c
bm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvUmVhY3RET00nKTtcblxuXG5cbi8vLy8v
Ly8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIs
Ii8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4vKiBnbG9iYWxzIF9fUkVBQ1RfREVW
VE9PTFNfR0xPQkFMX0hPT0tfXyovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RE9NQ29t
cG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVh
Y3REZWZhdWx0SW5qZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdERlZmF1bHRJbmplY3Rpb24nKTtc
bnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG52YXIgUmVhY3RSZWNv
bmNpbGVyID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTtcbnZhciBSZWFjdFVwZGF0ZXMg
PSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xudmFyIFJlYWN0VmVyc2lvbiA9IHJlcXVpcmUo
Jy4vUmVhY3RWZXJzaW9uJyk7XG5cbnZhciBmaW5kRE9NTm9kZSA9IHJlcXVpcmUoJy4vZmluZERP
TU5vZGUnKTtcbnZhciBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZSA9IHJlcXVpcmUoJy4v
Z2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUnKTtcbnZhciByZW5kZXJTdWJ0cmVlSW50b0Nv
bnRhaW5lciA9IHJlcXVpcmUoJy4vcmVuZGVyU3VidHJlZUludG9Db250YWluZXInKTtcbnZhciB3
YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5SZWFjdERlZmF1bHRJbmpl
Y3Rpb24uaW5qZWN0KCk7XG5cbnZhciBSZWFjdERPTSA9IHtcbiAgZmluZERPTU5vZGU6IGZpbmRE
T01Ob2RlLFxuICByZW5kZXI6IFJlYWN0TW91bnQucmVuZGVyLFxuICB1bm1vdW50Q29tcG9uZW50
QXROb2RlOiBSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGUsXG4gIHZlcnNpb246IFJl
YWN0VmVyc2lvbixcblxuICAvKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbiAgdW5zdGFi
bGVfYmF0Y2hlZFVwZGF0ZXM6IFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyxcbiAgdW5zdGFi
bGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVy
XG4gIC8qIGVzbGludC1lbmFibGUgY2FtZWxjYXNlICovXG59O1xuXG4vLyBJbmplY3QgdGhlIHJ1
bnRpbWUgaW50byBhIGRldnRvb2xzIGdsb2JhbCBob29rIHJlZ2FyZGxlc3Mgb2YgYnJvd3Nlci5c
bi8vIEFsbG93cyBmb3IgZGVidWdnaW5nIHdoZW4gdGhlIGhvb2sgaXMgaW5qZWN0ZWQgb24gdGhl
IHBhZ2UuXG5pZiAodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAhPT0gJ3Vu
ZGVmaW5lZCcgJiYgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3Qg
PT09ICdmdW5jdGlvbicpIHtcbiAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVj
dCh7XG4gICAgQ29tcG9uZW50VHJlZToge1xuICAgICAgZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5v
ZGU6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZSxcbiAg
ICAgIGdldE5vZGVGcm9tSW5zdGFuY2U6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgICAgIC8vIGlu
c3QgaXMgYW4gaW50ZXJuYWwgaW5zdGFuY2UgKGJ1dCBjb3VsZCBiZSBhIGNvbXBvc2l0ZSlcbiAg
ICAgICAgaWYgKGluc3QuX3JlbmRlcmVkQ29tcG9uZW50KSB7XG4gICAgICAgICAgaW5zdCA9IGdl
dEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlKGluc3QpO1xuICAgICAgICB9XG4gICAgICAgIGlm
IChpbnN0KSB7XG4gICAgICAgICAgcmV0dXJuIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2Rl
RnJvbUluc3RhbmNlKGluc3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBu
dWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNb3VudDogUmVhY3RNb3VudCxc
biAgICBSZWNvbmNpbGVyOiBSZWFjdFJlY29uY2lsZXJcbiAgfSk7XG59XG5cbmlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBFeGVjdXRpb25FbnZpcm9u
bWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG4gIGlmIChF
eGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgd2luZG93LnRvcCA9PT0gd2luZG93LnNl
bGYpIHtcbiAgICAvLyBGaXJzdCBjaGVjayBpZiBkZXZ0b29scyBpcyBub3QgaW5zdGFsbGVkXG4g
ICAgaWYgKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRlZmlu
ZWQnKSB7XG4gICAgICAvLyBJZiB3ZSdyZSBpbiBDaHJvbWUgb3IgRmlyZWZveCwgcHJvdmlkZSBh
IGRvd25sb2FkIGxpbmsgaWYgbm90IGluc3RhbGxlZC5cbiAgICAgIGlmIChuYXZpZ2F0b3IudXNl
ckFnZW50LmluZGV4T2YoJ0Nocm9tZScpID4gLTEgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRl
eE9mKCdFZGdlJykgPT09IC0xIHx8IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmlyZWZv
eCcpID4gLTEpIHtcbiAgICAgICAgLy8gRmlyZWZveCBkb2VzIG5vdCBoYXZlIHRoZSBpc3N1ZSB3
aXRoIGRldnRvb2xzIGxvYWRlZCBvdmVyIGZpbGU6Ly9cbiAgICAgICAgdmFyIHNob3dGaWxlVXJs
TWVzc2FnZSA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbC5pbmRleE9mKCdodHRwJykgPT09IC0x
ICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmlyZWZveCcpID09PSAtMTtcbiAgICAg
ICAgY29uc29sZS5kZWJ1ZygnRG93bmxvYWQgdGhlIFJlYWN0IERldlRvb2xzICcgKyAoc2hvd0Zp
bGVVcmxNZXNzYWdlID8gJ2FuZCB1c2UgYW4gSFRUUCBzZXJ2ZXIgKGluc3RlYWQgb2YgYSBmaWxl
OiBVUkwpICcgOiAnJykgKyAnZm9yIGEgYmV0dGVyIGRldmVsb3BtZW50IGV4cGVyaWVuY2U6ICcg
KyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1kZXZ0b29scycpO1xuICAgICAgfVxuICAgIH1cblxuICAg
IHZhciB0ZXN0RnVuYyA9IGZ1bmN0aW9uIHRlc3RGbigpIHt9O1xuICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCh0ZXN0RnVuYy5uYW1lIHx8IHRlc3RG
dW5jLnRvU3RyaW5nKCkpLmluZGV4T2YoJ3Rlc3RGbicpICE9PSAtMSwgXCJJdCBsb29rcyBsaWtl
IHlvdSdyZSB1c2luZyBhIG1pbmlmaWVkIGNvcHkgb2YgdGhlIGRldmVsb3BtZW50IGJ1aWxkIFwi
ICsgJ29mIFJlYWN0LiBXaGVuIGRlcGxveWluZyBSZWFjdCBhcHBzIHRvIHByb2R1Y3Rpb24sIG1h
a2Ugc3VyZSB0byB1c2UgJyArICd0aGUgcHJvZHVjdGlvbiBidWlsZCB3aGljaCBza2lwcyBkZXZl
bG9wbWVudCB3YXJuaW5ncyBhbmQgaXMgZmFzdGVyLiAnICsgJ1NlZSBodHRwczovL2ZiLm1lL3Jl
YWN0LW1pbmlmaWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLicpIDogdm9pZCAwO1xuXG4gICAgLy8g
SWYgd2UncmUgaW4gSUU4LCBjaGVjayB0byBzZWUgaWYgd2UgYXJlIGluIGNvbXBhdGliaWxpdHkg
bW9kZSBhbmQgcHJvdmlkZVxuICAgIC8vIGluZm9ybWF0aW9uIG9uIHByZXZlbnRpbmcgY29tcGF0
aWJpbGl0eSBtb2RlXG4gICAgdmFyIGllQ29tcGF0aWJpbGl0eU1vZGUgPSBkb2N1bWVudC5kb2N1
bWVudE1vZGUgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDwgODtcblxuICAgIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpZUNvbXBhdGliaWxpdHlNb2Rl
LCAnSW50ZXJuZXQgRXhwbG9yZXIgaXMgcnVubmluZyBpbiBjb21wYXRpYmlsaXR5IG1vZGU7IHBs
ZWFzZSBhZGQgdGhlICcgKyAnZm9sbG93aW5nIHRhZyB0byB5b3VyIEhUTUwgdG8gcHJldmVudCB0
aGlzIGZyb20gaGFwcGVuaW5nOiAnICsgJzxtZXRhIGh0dHAtZXF1aXY9XCJYLVVBLUNvbXBhdGli
bGVcIiBjb250ZW50PVwiSUU9ZWRnZVwiIC8+JykgOiB2b2lkIDA7XG5cbiAgICB2YXIgZXhwZWN0
ZWRGZWF0dXJlcyA9IFtcbiAgICAvLyBzaGltc1xuICAgIEFycmF5LmlzQXJyYXksIEFycmF5LnBy
b3RvdHlwZS5ldmVyeSwgQXJyYXkucHJvdG90eXBlLmZvckVhY2gsIEFycmF5LnByb3RvdHlwZS5p
bmRleE9mLCBBcnJheS5wcm90b3R5cGUubWFwLCBEYXRlLm5vdywgRnVuY3Rpb24ucHJvdG90eXBl
LmJpbmQsIE9iamVjdC5rZXlzLCBTdHJpbmcucHJvdG90eXBlLnRyaW1dO1xuXG4gICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBleHBlY3RlZEZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAo
IWV4cGVjdGVkRmVhdHVyZXNbaV0pIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdPbmUgb3IgbW9yZSBFUzUgc2hpbXMgZXhw
ZWN0ZWQgYnkgUmVhY3QgYXJlIG5vdCBhdmFpbGFibGU6ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFj
dC13YXJuaW5nLXBvbHlmaWxscycpIDogdm9pZCAwO1xuICAgICAgICBicmVhaztcbiAgICAgIH1c
biAgICB9XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgdmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluc3Ry
dW1lbnRhdGlvbicpO1xuICB2YXIgUmVhY3RET01Vbmtub3duUHJvcGVydHlIb29rID0gcmVxdWly
ZSgnLi9SZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2snKTtcbiAgdmFyIFJlYWN0RE9NTnVsbElu
cHV0VmFsdWVQcm9wSG9vayA9IHJlcXVpcmUoJy4vUmVhY3RET01OdWxsSW5wdXRWYWx1ZVByb3BI
b29rJyk7XG4gIHZhciBSZWFjdERPTUludmFsaWRBUklBSG9vayA9IHJlcXVpcmUoJy4vUmVhY3RE
T01JbnZhbGlkQVJJQUhvb2snKTtcblxuICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wu
YWRkSG9vayhSZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2spO1xuICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdERPTU51bGxJbnB1dFZhbHVlUHJvcEhvb2spO1xu
ICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdERPTUludmFsaWRB
UklBSG9vayk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET007XG5cblxuLy8vLy8vLy8v
Ly8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9SZWFjdERPTS5qc1xuLy8gbW9kdWxlIGlkID0gMTE5XG4vLyBtb2R1bGUgY2h1bmtzID0g
MCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZh
ciBBUklBRE9NUHJvcGVydHlDb25maWcgPSByZXF1aXJlKCcuL0FSSUFET01Qcm9wZXJ0eUNvbmZp
ZycpO1xudmFyIEJlZm9yZUlucHV0RXZlbnRQbHVnaW4gPSByZXF1aXJlKCcuL0JlZm9yZUlucHV0
RXZlbnRQbHVnaW4nKTtcbnZhciBDaGFuZ2VFdmVudFBsdWdpbiA9IHJlcXVpcmUoJy4vQ2hhbmdl
RXZlbnRQbHVnaW4nKTtcbnZhciBEZWZhdWx0RXZlbnRQbHVnaW5PcmRlciA9IHJlcXVpcmUoJy4v
RGVmYXVsdEV2ZW50UGx1Z2luT3JkZXInKTtcbnZhciBFbnRlckxlYXZlRXZlbnRQbHVnaW4gPSBy
ZXF1aXJlKCcuL0VudGVyTGVhdmVFdmVudFBsdWdpbicpO1xudmFyIEhUTUxET01Qcm9wZXJ0eUNv
bmZpZyA9IHJlcXVpcmUoJy4vSFRNTERPTVByb3BlcnR5Q29uZmlnJyk7XG52YXIgUmVhY3RDb21w
b25lbnRCcm93c2VyRW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9uZW50QnJvd3Nl
ckVudmlyb25tZW50Jyk7XG52YXIgUmVhY3RET01Db21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0
RE9NQ29tcG9uZW50Jyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9S
ZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdERPTUVtcHR5Q29tcG9uZW50ID0gcmVx
dWlyZSgnLi9SZWFjdERPTUVtcHR5Q29tcG9uZW50Jyk7XG52YXIgUmVhY3RET01UcmVlVHJhdmVy
c2FsID0gcmVxdWlyZSgnLi9SZWFjdERPTVRyZWVUcmF2ZXJzYWwnKTtcbnZhciBSZWFjdERPTVRl
eHRDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RE9NVGV4dENvbXBvbmVudCcpO1xudmFyIFJl
YWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kgPSByZXF1aXJlKCcuL1JlYWN0RGVmYXVsdEJhdGNo
aW5nU3RyYXRlZ3knKTtcbnZhciBSZWFjdEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKCcuL1JlYWN0
RXZlbnRMaXN0ZW5lcicpO1xudmFyIFJlYWN0SW5qZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdElu
amVjdGlvbicpO1xudmFyIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1Jl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb24nKTtcbnZhciBTVkdET01Qcm9wZXJ0eUNvbmZpZyA9IHJl
cXVpcmUoJy4vU1ZHRE9NUHJvcGVydHlDb25maWcnKTtcbnZhciBTZWxlY3RFdmVudFBsdWdpbiA9
IHJlcXVpcmUoJy4vU2VsZWN0RXZlbnRQbHVnaW4nKTtcbnZhciBTaW1wbGVFdmVudFBsdWdpbiA9
IHJlcXVpcmUoJy4vU2ltcGxlRXZlbnRQbHVnaW4nKTtcblxudmFyIGFscmVhZHlJbmplY3RlZCA9
IGZhbHNlO1xuXG5mdW5jdGlvbiBpbmplY3QoKSB7XG4gIGlmIChhbHJlYWR5SW5qZWN0ZWQpIHtc
biAgICAvLyBUT0RPOiBUaGlzIGlzIGN1cnJlbnRseSB0cnVlIGJlY2F1c2UgdGhlc2UgaW5qZWN0
aW9ucyBhcmUgc2hhcmVkIGJldHdlZW5cbiAgICAvLyB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVy
IHBhY2thZ2UuIFRoZXkgc2hvdWxkIGJlIGJ1aWx0IGluZGVwZW5kZW50bHlcbiAgICAvLyBhbmQg
bm90IHNoYXJlIGFueSBpbmplY3Rpb24gc3RhdGUuIFRoZW4gdGhpcyBwcm9ibGVtIHdpbGwgYmUg
c29sdmVkLlxuICAgIHJldHVybjtcbiAgfVxuICBhbHJlYWR5SW5qZWN0ZWQgPSB0cnVlO1xuXG4g
IFJlYWN0SW5qZWN0aW9uLkV2ZW50RW1pdHRlci5pbmplY3RSZWFjdEV2ZW50TGlzdGVuZXIoUmVh
Y3RFdmVudExpc3RlbmVyKTtcblxuICAvKipcbiAgICogSW5qZWN0IG1vZHVsZXMgZm9yIHJlc29s
dmluZyBET00gaGllcmFyY2h5IGFuZCBwbHVnaW4gb3JkZXJpbmcuXG4gICAqL1xuICBSZWFjdElu
amVjdGlvbi5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbk9yZGVyKERlZmF1bHRFdmVu
dFBsdWdpbk9yZGVyKTtcbiAgUmVhY3RJbmplY3Rpb24uRXZlbnRQbHVnaW5VdGlscy5pbmplY3RD
b21wb25lbnRUcmVlKFJlYWN0RE9NQ29tcG9uZW50VHJlZSk7XG4gIFJlYWN0SW5qZWN0aW9uLkV2
ZW50UGx1Z2luVXRpbHMuaW5qZWN0VHJlZVRyYXZlcnNhbChSZWFjdERPTVRyZWVUcmF2ZXJzYWwp
O1xuXG4gIC8qKlxuICAgKiBTb21lIGltcG9ydGFudCBldmVudCBwbHVnaW5zIGluY2x1ZGVkIGJ5
IGRlZmF1bHQgKHdpdGhvdXQgaGF2aW5nIHRvIHJlcXVpcmVcbiAgICogdGhlbSkuXG4gICAqL1xu
ICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUo
e1xuICAgIFNpbXBsZUV2ZW50UGx1Z2luOiBTaW1wbGVFdmVudFBsdWdpbixcbiAgICBFbnRlckxl
YXZlRXZlbnRQbHVnaW46IEVudGVyTGVhdmVFdmVudFBsdWdpbixcbiAgICBDaGFuZ2VFdmVudFBs
dWdpbjogQ2hhbmdlRXZlbnRQbHVnaW4sXG4gICAgU2VsZWN0RXZlbnRQbHVnaW46IFNlbGVjdEV2
ZW50UGx1Z2luLFxuICAgIEJlZm9yZUlucHV0RXZlbnRQbHVnaW46IEJlZm9yZUlucHV0RXZlbnRQ
bHVnaW5cbiAgfSk7XG5cbiAgUmVhY3RJbmplY3Rpb24uSG9zdENvbXBvbmVudC5pbmplY3RHZW5l
cmljQ29tcG9uZW50Q2xhc3MoUmVhY3RET01Db21wb25lbnQpO1xuXG4gIFJlYWN0SW5qZWN0aW9u
Lkhvc3RDb21wb25lbnQuaW5qZWN0VGV4dENvbXBvbmVudENsYXNzKFJlYWN0RE9NVGV4dENvbXBv
bmVudCk7XG5cbiAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlD
b25maWcoQVJJQURPTVByb3BlcnR5Q29uZmlnKTtcbiAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVy
dHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoSFRNTERPTVByb3BlcnR5Q29uZmlnKTtcbiAgUmVh
Y3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoU1ZHRE9NUHJv
cGVydHlDb25maWcpO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkVtcHR5Q29tcG9uZW50LmluamVjdEVt
cHR5Q29tcG9uZW50RmFjdG9yeShmdW5jdGlvbiAoaW5zdGFudGlhdGUpIHtcbiAgICByZXR1cm4g
bmV3IFJlYWN0RE9NRW1wdHlDb21wb25lbnQoaW5zdGFudGlhdGUpO1xuICB9KTtcblxuICBSZWFj
dEluamVjdGlvbi5VcGRhdGVzLmluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uKFJlYWN0UmVjb25j
aWxlVHJhbnNhY3Rpb24pO1xuICBSZWFjdEluamVjdGlvbi5VcGRhdGVzLmluamVjdEJhdGNoaW5n
U3RyYXRlZ3koUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSk7XG5cbiAgUmVhY3RJbmplY3Rp
b24uQ29tcG9uZW50LmluamVjdEVudmlyb25tZW50KFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmly
b25tZW50KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGluamVjdDogaW5qZWN0XG59O1xu
XG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9saWIvUmVhY3REZWZhdWx0SW5qZWN0aW9uLmpzXG4vLyBtb2R1bGUgaWQg
PSAxMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEFSSUFET01Qcm9wZXJ0eUNvbmZpZyA9IHtcbiAg
UHJvcGVydGllczoge1xuICAgIC8vIEdsb2JhbCBTdGF0ZXMgYW5kIFByb3BlcnRpZXNcbiAgICAn
YXJpYS1jdXJyZW50JzogMCwgLy8gc3RhdGVcbiAgICAnYXJpYS1kZXRhaWxzJzogMCxcbiAgICAn
YXJpYS1kaXNhYmxlZCc6IDAsIC8vIHN0YXRlXG4gICAgJ2FyaWEtaGlkZGVuJzogMCwgLy8gc3Rh
dGVcbiAgICAnYXJpYS1pbnZhbGlkJzogMCwgLy8gc3RhdGVcbiAgICAnYXJpYS1rZXlzaG9ydGN1
dHMnOiAwLFxuICAgICdhcmlhLWxhYmVsJzogMCxcbiAgICAnYXJpYS1yb2xlZGVzY3JpcHRpb24n
OiAwLFxuICAgIC8vIFdpZGdldCBBdHRyaWJ1dGVzXG4gICAgJ2FyaWEtYXV0b2NvbXBsZXRlJzog
MCxcbiAgICAnYXJpYS1jaGVja2VkJzogMCxcbiAgICAnYXJpYS1leHBhbmRlZCc6IDAsXG4gICAg
J2FyaWEtaGFzcG9wdXAnOiAwLFxuICAgICdhcmlhLWxldmVsJzogMCxcbiAgICAnYXJpYS1tb2Rh
bCc6IDAsXG4gICAgJ2FyaWEtbXVsdGlsaW5lJzogMCxcbiAgICAnYXJpYS1tdWx0aXNlbGVjdGFi
bGUnOiAwLFxuICAgICdhcmlhLW9yaWVudGF0aW9uJzogMCxcbiAgICAnYXJpYS1wbGFjZWhvbGRl
cic6IDAsXG4gICAgJ2FyaWEtcHJlc3NlZCc6IDAsXG4gICAgJ2FyaWEtcmVhZG9ubHknOiAwLFxu
ICAgICdhcmlhLXJlcXVpcmVkJzogMCxcbiAgICAnYXJpYS1zZWxlY3RlZCc6IDAsXG4gICAgJ2Fy
aWEtc29ydCc6IDAsXG4gICAgJ2FyaWEtdmFsdWVtYXgnOiAwLFxuICAgICdhcmlhLXZhbHVlbWlu
JzogMCxcbiAgICAnYXJpYS12YWx1ZW5vdyc6IDAsXG4gICAgJ2FyaWEtdmFsdWV0ZXh0JzogMCxc
biAgICAvLyBMaXZlIFJlZ2lvbiBBdHRyaWJ1dGVzXG4gICAgJ2FyaWEtYXRvbWljJzogMCxcbiAg
ICAnYXJpYS1idXN5JzogMCxcbiAgICAnYXJpYS1saXZlJzogMCxcbiAgICAnYXJpYS1yZWxldmFu
dCc6IDAsXG4gICAgLy8gRHJhZy1hbmQtRHJvcCBBdHRyaWJ1dGVzXG4gICAgJ2FyaWEtZHJvcGVm
ZmVjdCc6IDAsXG4gICAgJ2FyaWEtZ3JhYmJlZCc6IDAsXG4gICAgLy8gUmVsYXRpb25zaGlwIEF0
dHJpYnV0ZXNcbiAgICAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JzogMCxcbiAgICAnYXJpYS1jb2xj
b3VudCc6IDAsXG4gICAgJ2FyaWEtY29saW5kZXgnOiAwLFxuICAgICdhcmlhLWNvbHNwYW4nOiAw
LFxuICAgICdhcmlhLWNvbnRyb2xzJzogMCxcbiAgICAnYXJpYS1kZXNjcmliZWRieSc6IDAsXG4g
ICAgJ2FyaWEtZXJyb3JtZXNzYWdlJzogMCxcbiAgICAnYXJpYS1mbG93dG8nOiAwLFxuICAgICdh
cmlhLWxhYmVsbGVkYnknOiAwLFxuICAgICdhcmlhLW93bnMnOiAwLFxuICAgICdhcmlhLXBvc2lu
c2V0JzogMCxcbiAgICAnYXJpYS1yb3djb3VudCc6IDAsXG4gICAgJ2FyaWEtcm93aW5kZXgnOiAw
LFxuICAgICdhcmlhLXJvd3NwYW4nOiAwLFxuICAgICdhcmlhLXNldHNpemUnOiAwXG4gIH0sXG4g
IERPTUF0dHJpYnV0ZU5hbWVzOiB7fSxcbiAgRE9NUHJvcGVydHlOYW1lczoge31cbn07XG5cbm1v
ZHVsZS5leHBvcnRzID0gQVJJQURPTVByb3BlcnR5Q29uZmlnO1xuXG5cbi8vLy8vLy8vLy8vLy8v
Ly8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIv
QVJJQURPTVByb3BlcnR5Q29uZmlnLmpzXG4vLyBtb2R1bGUgaWQgPSAxMjFcbi8vIG1vZHVsZSBj
aHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50IEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3Qn
O1xuXG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHJlcXVpcmUoJy4vRXZlbnRQcm9wYWdhdG9ycycp
O1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9u
RW52aXJvbm1lbnQnKTtcbnZhciBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUgPSByZXF1aXJlKCcu
L0ZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZScpO1xudmFyIFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZl
bnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQnKTtcbnZhciBTeW50aGV0
aWNJbnB1dEV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNJbnB1dEV2ZW50Jyk7XG5cbnZhciBF
TkRfS0VZQ09ERVMgPSBbOSwgMTMsIDI3LCAzMl07IC8vIFRhYiwgUmV0dXJuLCBFc2MsIFNwYWNl
XG52YXIgU1RBUlRfS0VZQ09ERSA9IDIyOTtcblxudmFyIGNhblVzZUNvbXBvc2l0aW9uRXZlbnQg
PSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ0NvbXBvc2l0aW9uRXZlbnQnIGlu
IHdpbmRvdztcblxudmFyIGRvY3VtZW50TW9kZSA9IG51bGw7XG5pZiAoRXhlY3V0aW9uRW52aXJv
bm1lbnQuY2FuVXNlRE9NICYmICdkb2N1bWVudE1vZGUnIGluIGRvY3VtZW50KSB7XG4gIGRvY3Vt
ZW50TW9kZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZTtcbn1cblxuLy8gV2Via2l0IG9mZmVycyBh
IHZlcnkgdXNlZnVsIGB0ZXh0SW5wdXRgIGV2ZW50IHRoYXQgY2FuIGJlIHVzZWQgdG9cbi8vIGRp
cmVjdGx5IHJlcHJlc2VudCBgYmVmb3JlSW5wdXRgLiBUaGUgSUUgYHRleHRpbnB1dGAgZXZlbnQg
aXMgbm90IGFzXG4vLyB1c2VmdWwsIHNvIHdlIGRvbid0IHVzZSBpdC5cbnZhciBjYW5Vc2VUZXh0
SW5wdXRFdmVudCA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnVGV4dEV2ZW50
JyBpbiB3aW5kb3cgJiYgIWRvY3VtZW50TW9kZSAmJiAhaXNQcmVzdG8oKTtcblxuLy8gSW4gSUU5
Kywgd2UgaGF2ZSBhY2Nlc3MgdG8gY29tcG9zaXRpb24gZXZlbnRzLCBidXQgdGhlIGRhdGEgc3Vw
cGxpZWRcbi8vIGJ5IHRoZSBuYXRpdmUgY29tcG9zaXRpb25lbmQgZXZlbnQgbWF5IGJlIGluY29y
cmVjdC4gSmFwYW5lc2UgaWRlb2dyYXBoaWNcbi8vIHNwYWNlcywgZm9yIGluc3RhbmNlIChcXHUz
MDAwKSBhcmUgbm90IHJlY29yZGVkIGNvcnJlY3RseS5cbnZhciB1c2VGYWxsYmFja0NvbXBvc2l0
aW9uRGF0YSA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAoIWNhblVzZUNvbXBv
c2l0aW9uRXZlbnQgfHwgZG9jdW1lbnRNb2RlICYmIGRvY3VtZW50TW9kZSA+IDggJiYgZG9jdW1l
bnRNb2RlIDw9IDExKTtcblxuLyoqXG4gKiBPcGVyYSA8PSAxMiBpbmNsdWRlcyBUZXh0RXZlbnQg
aW4gd2luZG93LCBidXQgZG9lcyBub3QgZmlyZVxuICogdGV4dCBpbnB1dCBldmVudHMuIFJlbHkg
b24ga2V5cHJlc3MgaW5zdGVhZC5cbiAqL1xuZnVuY3Rpb24gaXNQcmVzdG8oKSB7XG4gIHZhciBv
cGVyYSA9IHdpbmRvdy5vcGVyYTtcbiAgcmV0dXJuIHR5cGVvZiBvcGVyYSA9PT0gJ29iamVjdCcg
JiYgdHlwZW9mIG9wZXJhLnZlcnNpb24gPT09ICdmdW5jdGlvbicgJiYgcGFyc2VJbnQob3BlcmEu
dmVyc2lvbigpLCAxMCkgPD0gMTI7XG59XG5cbnZhciBTUEFDRUJBUl9DT0RFID0gMzI7XG52YXIg
U1BBQ0VCQVJfQ0hBUiA9IFN0cmluZy5mcm9tQ2hhckNvZGUoU1BBQ0VCQVJfQ09ERSk7XG5cbi8v
IEV2ZW50cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBuYW1lcy5cbnZhciBldmVu
dFR5cGVzID0ge1xuICBiZWZvcmVJbnB1dDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OiB7XG4gICAgICBidWJibGVkOiAnb25CZWZvcmVJbnB1dCcsXG4gICAgICBjYXB0dXJlZDogJ29u
QmVmb3JlSW5wdXRDYXB0dXJlJ1xuICAgIH0sXG4gICAgZGVwZW5kZW5jaWVzOiBbJ3RvcENvbXBv
c2l0aW9uRW5kJywgJ3RvcEtleVByZXNzJywgJ3RvcFRleHRJbnB1dCcsICd0b3BQYXN0ZSddXG4g
IH0sXG4gIGNvbXBvc2l0aW9uRW5kOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtc
biAgICAgIGJ1YmJsZWQ6ICdvbkNvbXBvc2l0aW9uRW5kJyxcbiAgICAgIGNhcHR1cmVkOiAnb25D
b21wb3NpdGlvbkVuZENhcHR1cmUnXG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFsndG9wQmx1
cicsICd0b3BDb21wb3NpdGlvbkVuZCcsICd0b3BLZXlEb3duJywgJ3RvcEtleVByZXNzJywgJ3Rv
cEtleVVwJywgJ3RvcE1vdXNlRG93biddXG4gIH0sXG4gIGNvbXBvc2l0aW9uU3RhcnQ6IHtcbiAg
ICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDogJ29uQ29tcG9zaXRp
b25TdGFydCcsXG4gICAgICBjYXB0dXJlZDogJ29uQ29tcG9zaXRpb25TdGFydENhcHR1cmUnXG4g
ICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFsndG9wQmx1cicsICd0b3BDb21wb3NpdGlvblN0YXJ0
JywgJ3RvcEtleURvd24nLCAndG9wS2V5UHJlc3MnLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3du
J11cbiAgfSxcbiAgY29tcG9zaXRpb25VcGRhdGU6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25O
YW1lczoge1xuICAgICAgYnViYmxlZDogJ29uQ29tcG9zaXRpb25VcGRhdGUnLFxuICAgICAgY2Fw
dHVyZWQ6ICdvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZSdcbiAgICB9LFxuICAgIGRlcGVuZGVu
Y2llczogWyd0b3BCbHVyJywgJ3RvcENvbXBvc2l0aW9uVXBkYXRlJywgJ3RvcEtleURvd24nLCAn
dG9wS2V5UHJlc3MnLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3duJ11cbiAgfVxufTtcblxuLy8g
VHJhY2sgd2hldGhlciB3ZSd2ZSBldmVyIGhhbmRsZWQgYSBrZXlwcmVzcyBvbiB0aGUgc3BhY2Ug
a2V5LlxudmFyIGhhc1NwYWNlS2V5cHJlc3MgPSBmYWxzZTtcblxuLyoqXG4gKiBSZXR1cm4gd2hl
dGhlciBhIG5hdGl2ZSBrZXlwcmVzcyBldmVudCBpcyBhc3N1bWVkIHRvIGJlIGEgY29tbWFuZC5c
biAqIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBGaXJlZm94IGZpcmVzIGBrZXlwcmVzc2AgZXZl
bnRzIGZvciBrZXkgY29tbWFuZHNcbiAqIChjdXQsIGNvcHksIHNlbGVjdC1hbGwsIGV0Yy4pIGV2
ZW4gdGhvdWdoIG5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlw
cmVzc0NvbW1hbmQobmF0aXZlRXZlbnQpIHtcbiAgcmV0dXJuIChuYXRpdmVFdmVudC5jdHJsS2V5
IHx8IG5hdGl2ZUV2ZW50LmFsdEtleSB8fCBuYXRpdmVFdmVudC5tZXRhS2V5KSAmJlxuICAvLyBj
dHJsS2V5ICYmIGFsdEtleSBpcyBlcXVpdmFsZW50IHRvIEFsdEdyLCBhbmQgaXMgbm90IGEgY29t
bWFuZC5cbiAgIShuYXRpdmVFdmVudC5jdHJsS2V5ICYmIG5hdGl2ZUV2ZW50LmFsdEtleSk7XG59
XG5cbi8qKlxuICogVHJhbnNsYXRlIG5hdGl2ZSB0b3AgbGV2ZWwgZXZlbnRzIGludG8gZXZlbnQg
dHlwZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZVxuICogQHJldHVybiB7
b2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRDb21wb3NpdGlvbkV2ZW50VHlwZSh0b3BMZXZlbFR5
cGUpIHtcbiAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcbiAgICBjYXNlICd0b3BDb21wb3NpdGlv
blN0YXJ0JzpcbiAgICAgIHJldHVybiBldmVudFR5cGVzLmNvbXBvc2l0aW9uU3RhcnQ7XG4gICAg
Y2FzZSAndG9wQ29tcG9zaXRpb25FbmQnOlxuICAgICAgcmV0dXJuIGV2ZW50VHlwZXMuY29tcG9z
aXRpb25FbmQ7XG4gICAgY2FzZSAndG9wQ29tcG9zaXRpb25VcGRhdGUnOlxuICAgICAgcmV0dXJu
IGV2ZW50VHlwZXMuY29tcG9zaXRpb25VcGRhdGU7XG4gIH1cbn1cblxuLyoqXG4gKiBEb2VzIG91
ciBmYWxsYmFjayBiZXN0LWd1ZXNzIG1vZGVsIHRoaW5rIHRoaXMgZXZlbnQgc2lnbmlmaWVzIHRo
YXRcbiAqIGNvbXBvc2l0aW9uIGhhcyBiZWd1bj9cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9w
TGV2ZWxUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRcbiAqIEByZXR1cm4ge2Jv
b2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzRmFsbGJhY2tDb21wb3NpdGlvblN0YXJ0KHRvcExldmVs
VHlwZSwgbmF0aXZlRXZlbnQpIHtcbiAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gJ3RvcEtleURv
d24nICYmIG5hdGl2ZUV2ZW50LmtleUNvZGUgPT09IFNUQVJUX0tFWUNPREU7XG59XG5cbi8qKlxu
ICogRG9lcyBvdXIgZmFsbGJhY2sgbW9kZSB0aGluayB0aGF0IHRoaXMgZXZlbnQgaXMgdGhlIGVu
ZCBvZiBjb21wb3NpdGlvbj9cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlXG4g
KiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9c
bmZ1bmN0aW9uIGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2
ZW50KSB7XG4gIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgY2FzZSAndG9wS2V5VXAnOlxu
ICAgICAgLy8gQ29tbWFuZCBrZXlzIGluc2VydCBvciBjbGVhciBJTUUgaW5wdXQuXG4gICAgICBy
ZXR1cm4gRU5EX0tFWUNPREVTLmluZGV4T2YobmF0aXZlRXZlbnQua2V5Q29kZSkgIT09IC0xO1xu
ICAgIGNhc2UgJ3RvcEtleURvd24nOlxuICAgICAgLy8gRXhwZWN0IElNRSBrZXlDb2RlIG9uIGVh
Y2gga2V5ZG93bi4gSWYgd2UgZ2V0IGFueSBvdGhlclxuICAgICAgLy8gY29kZSB3ZSBtdXN0IGhh
dmUgZXhpdGVkIGVhcmxpZXIuXG4gICAgICByZXR1cm4gbmF0aXZlRXZlbnQua2V5Q29kZSAhPT0g
U1RBUlRfS0VZQ09ERTtcbiAgICBjYXNlICd0b3BLZXlQcmVzcyc6XG4gICAgY2FzZSAndG9wTW91
c2VEb3duJzpcbiAgICBjYXNlICd0b3BCbHVyJzpcbiAgICAgIC8vIEV2ZW50cyBhcmUgbm90IHBv
c3NpYmxlIHdpdGhvdXQgY2FuY2VsbGluZyBJTUUuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBk
ZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogR29vZ2xlIElu
cHV0IFRvb2xzIHByb3ZpZGVzIGNvbXBvc2l0aW9uIGRhdGEgdmlhIGEgQ3VzdG9tRXZlbnQsXG4g
KiB3aXRoIHRoZSBgZGF0YWAgcHJvcGVydHkgcG9wdWxhdGVkIGluIHRoZSBgZGV0YWlsYCBvYmpl
Y3QuIElmIHRoaXNcbiAqIGlzIGF2YWlsYWJsZSBvbiB0aGUgZXZlbnQgb2JqZWN0LCB1c2UgaXQu
IElmIG5vdCwgdGhpcyBpcyBhIHBsYWluXG4gKiBjb21wb3NpdGlvbiBldmVudCBhbmQgd2UgaGF2
ZSBub3RoaW5nIHNwZWNpYWwgdG8gZXh0cmFjdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0
aXZlRXZlbnRcbiAqIEByZXR1cm4gez9zdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldERhdGFGcm9t
Q3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpIHtcbiAgdmFyIGRldGFpbCA9IG5hdGl2ZUV2ZW50LmRl
dGFpbDtcbiAgaWYgKHR5cGVvZiBkZXRhaWwgPT09ICdvYmplY3QnICYmICdkYXRhJyBpbiBkZXRh
aWwpIHtcbiAgICByZXR1cm4gZGV0YWlsLmRhdGE7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5c
bi8vIFRyYWNrIHRoZSBjdXJyZW50IElNRSBjb21wb3NpdGlvbiBmYWxsYmFjayBvYmplY3QsIGlm
IGFueS5cbnZhciBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxsO1xuXG4vKipcbiAqIEByZXR1cm4g
ez9vYmplY3R9IEEgU3ludGhldGljQ29tcG9zaXRpb25FdmVudC5cbiAqL1xuZnVuY3Rpb24gZXh0
cmFjdENvbXBvc2l0aW9uRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgdmFyIGV2ZW50VHlwZTtcbiAgdmFyIGZhbGxiYWNr
RGF0YTtcblxuICBpZiAoY2FuVXNlQ29tcG9zaXRpb25FdmVudCkge1xuICAgIGV2ZW50VHlwZSA9
IGdldENvbXBvc2l0aW9uRXZlbnRUeXBlKHRvcExldmVsVHlwZSk7XG4gIH0gZWxzZSBpZiAoIWN1
cnJlbnRDb21wb3NpdGlvbikge1xuICAgIGlmIChpc0ZhbGxiYWNrQ29tcG9zaXRpb25TdGFydCh0
b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xuICAgICAgZXZlbnRUeXBlID0gZXZlbnRUeXBl
cy5jb21wb3NpdGlvblN0YXJ0O1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc0ZhbGxiYWNrQ29tcG9z
aXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkpIHtcbiAgICBldmVudFR5cGUgPSBl
dmVudFR5cGVzLmNvbXBvc2l0aW9uRW5kO1xuICB9XG5cbiAgaWYgKCFldmVudFR5cGUpIHtcbiAg
ICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICh1c2VGYWxsYmFja0NvbXBvc2l0aW9uRGF0YSkg
e1xuICAgIC8vIFRoZSBjdXJyZW50IGNvbXBvc2l0aW9uIGlzIHN0b3JlZCBzdGF0aWNhbGx5IGFu
ZCBtdXN0IG5vdCBiZVxuICAgIC8vIG92ZXJ3cml0dGVuIHdoaWxlIGNvbXBvc2l0aW9uIGNvbnRp
bnVlcy5cbiAgICBpZiAoIWN1cnJlbnRDb21wb3NpdGlvbiAmJiBldmVudFR5cGUgPT09IGV2ZW50
VHlwZXMuY29tcG9zaXRpb25TdGFydCkge1xuICAgICAgY3VycmVudENvbXBvc2l0aW9uID0gRmFs
bGJhY2tDb21wb3NpdGlvblN0YXRlLmdldFBvb2xlZChuYXRpdmVFdmVudFRhcmdldCk7XG4gICAg
fSBlbHNlIGlmIChldmVudFR5cGUgPT09IGV2ZW50VHlwZXMuY29tcG9zaXRpb25FbmQpIHtcbiAg
ICAgIGlmIChjdXJyZW50Q29tcG9zaXRpb24pIHtcbiAgICAgICAgZmFsbGJhY2tEYXRhID0gY3Vy
cmVudENvbXBvc2l0aW9uLmdldERhdGEoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIg
ZXZlbnQgPSBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LmdldFBvb2xlZChldmVudFR5cGUsIHRh
cmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cbiAgaWYgKGZhbGxi
YWNrRGF0YSkge1xuICAgIC8vIEluamVjdCBkYXRhIGdlbmVyYXRlZCBmcm9tIGZhbGxiYWNrIHBh
dGggaW50byB0aGUgc3ludGhldGljIGV2ZW50LlxuICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgcHJv
cGVydHkgb2YgbmF0aXZlIENvbXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UuXG4gICAgZXZlbnQuZGF0
YSA9IGZhbGxiYWNrRGF0YTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3VzdG9tRGF0YSA9IGdldERh
dGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpO1xuICAgIGlmIChjdXN0b21EYXRhICE9PSBu
dWxsKSB7XG4gICAgICBldmVudC5kYXRhID0gY3VzdG9tRGF0YTtcbiAgICB9XG4gIH1cblxuICBF
dmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xuICBy
ZXR1cm4gZXZlbnQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBS
ZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2
ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7P3N0cmluZ30gVGhlIHN0cmlu
ZyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgYGJlZm9yZUlucHV0YCBldmVudC5cbiAqL1xuZnVuY3Rp
b24gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7
XG4gIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgY2FzZSAndG9wQ29tcG9zaXRpb25FbmQn
OlxuICAgICAgcmV0dXJuIGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpO1xuICAg
IGNhc2UgJ3RvcEtleVByZXNzJzpcbiAgICAgIC8qKlxuICAgICAgICogSWYgbmF0aXZlIGB0ZXh0
SW5wdXRgIGV2ZW50cyBhcmUgYXZhaWxhYmxlLCBvdXIgZ29hbCBpcyB0byBtYWtlXG4gICAgICAg
KiB1c2Ugb2YgdGhlbS4gSG93ZXZlciwgdGhlcmUgaXMgYSBzcGVjaWFsIGNhc2U6IHRoZSBzcGFj
ZWJhciBrZXkuXG4gICAgICAgKiBJbiBXZWJraXQsIHByZXZlbnRpbmcgZGVmYXVsdCBvbiBhIHNw
YWNlYmFyIGB0ZXh0SW5wdXRgIGV2ZW50XG4gICAgICAgKiBjYW5jZWxzIGNoYXJhY3RlciBpbnNl
cnRpb24sIGJ1dCBpdCAqYWxzbyogY2F1c2VzIHRoZSBicm93c2VyXG4gICAgICAgKiB0byBmYWxs
IGJhY2sgdG8gaXRzIGRlZmF1bHQgc3BhY2ViYXIgYmVoYXZpb3Igb2Ygc2Nyb2xsaW5nIHRoZVxu
ICAgICAgICogcGFnZS5cbiAgICAgICAqXG4gICAgICAgKiBUcmFja2luZyBhdDpcbiAgICAgICAq
IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0zNTUx
MDNcbiAgICAgICAqXG4gICAgICAgKiBUbyBhdm9pZCB0aGlzIGlzc3VlLCB1c2UgdGhlIGtleXBy
ZXNzIGV2ZW50IGFzIGlmIG5vIGB0ZXh0SW5wdXRgXG4gICAgICAgKiBldmVudCBpcyBhdmFpbGFi
bGUuXG4gICAgICAgKi9cbiAgICAgIHZhciB3aGljaCA9IG5hdGl2ZUV2ZW50LndoaWNoO1xuICAg
ICAgaWYgKHdoaWNoICE9PSBTUEFDRUJBUl9DT0RFKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xu
ICAgICAgfVxuXG4gICAgICBoYXNTcGFjZUtleXByZXNzID0gdHJ1ZTtcbiAgICAgIHJldHVybiBT
UEFDRUJBUl9DSEFSO1xuXG4gICAgY2FzZSAndG9wVGV4dElucHV0JzpcbiAgICAgIC8vIFJlY29y
ZCB0aGUgY2hhcmFjdGVycyB0byBiZSBhZGRlZCB0byB0aGUgRE9NLlxuICAgICAgdmFyIGNoYXJz
ID0gbmF0aXZlRXZlbnQuZGF0YTtcblxuICAgICAgLy8gSWYgaXQncyBhIHNwYWNlYmFyIGNoYXJh
Y3RlciwgYXNzdW1lIHRoYXQgd2UgaGF2ZSBhbHJlYWR5IGhhbmRsZWRcbiAgICAgIC8vIGl0IGF0
IHRoZSBrZXlwcmVzcyBsZXZlbCBhbmQgYmFpbCBpbW1lZGlhdGVseS4gQW5kcm9pZCBDaHJvbWVc
biAgICAgIC8vIGRvZXNuJ3QgZ2l2ZSB1cyBrZXljb2Rlcywgc28gd2UgbmVlZCB0byBibGFja2xp
c3QgaXQuXG4gICAgICBpZiAoY2hhcnMgPT09IFNQQUNFQkFSX0NIQVIgJiYgaGFzU3BhY2VLZXlw
cmVzcykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNo
YXJzO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIEZvciBvdGhlciBuYXRpdmUgZXZlbnQgdHlw
ZXMsIGRvIG5vdGhpbmcuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIEZv
ciBicm93c2VycyB0aGF0IGRvIG5vdCBwcm92aWRlIHRoZSBgdGV4dElucHV0YCBldmVudCwgZXh0
cmFjdCB0aGVcbiAqIGFwcHJvcHJpYXRlIHN0cmluZyB0byB1c2UgZm9yIFN5bnRoZXRpY0lucHV0
RXZlbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBg
RXZlbnRDb25zdGFudHNgLlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBi
cm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7P3N0cmluZ30gVGhlIGZhbGxiYWNrIHN0cmluZyBm
b3IgdGhpcyBgYmVmb3JlSW5wdXRgIGV2ZW50LlxuICovXG5mdW5jdGlvbiBnZXRGYWxsYmFja0Jl
Zm9yZUlucHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuICAvLyBJZiB3ZSBh
cmUgY3VycmVudGx5IGNvbXBvc2luZyAoSU1FKSBhbmQgdXNpbmcgYSBmYWxsYmFjayB0byBkbyBz
byxcbiAgLy8gdHJ5IHRvIGV4dHJhY3QgdGhlIGNvbXBvc2VkIGNoYXJhY3RlcnMgZnJvbSB0aGUg
ZmFsbGJhY2sgb2JqZWN0LlxuICAvLyBJZiBjb21wb3NpdGlvbiBldmVudCBpcyBhdmFpbGFibGUs
IHdlIGV4dHJhY3QgYSBzdHJpbmcgb25seSBhdFxuICAvLyBjb21wb3NpdGlvbmV2ZW50LCBvdGhl
cndpc2UgZXh0cmFjdCBpdCBhdCBmYWxsYmFjayBldmVudHMuXG4gIGlmIChjdXJyZW50Q29tcG9z
aXRpb24pIHtcbiAgICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ29tcG9zaXRpb25FbmQnIHx8
ICFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50ICYmIGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0b3BM
ZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xuICAgICAgdmFyIGNoYXJzID0gY3VycmVudENvbXBv
c2l0aW9uLmdldERhdGEoKTtcbiAgICAgIEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZS5yZWxlYXNl
KGN1cnJlbnRDb21wb3NpdGlvbik7XG4gICAgICBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxsO1xu
ICAgICAgcmV0dXJuIGNoYXJzO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN3
aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgY2FzZSAndG9wUGFzdGUnOlxuICAgICAgLy8gSWYg
YSBwYXN0ZSBldmVudCBvY2N1cnMgYWZ0ZXIgYSBrZXlwcmVzcywgdGhyb3cgb3V0IHRoZSBpbnB1
dFxuICAgICAgLy8gY2hhcnMuIFBhc3RlIGV2ZW50cyBzaG91bGQgbm90IGxlYWQgdG8gQmVmb3Jl
SW5wdXQgZXZlbnRzLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSAndG9wS2V5UHJlc3Mn
OlxuICAgICAgLyoqXG4gICAgICAgKiBBcyBvZiB2MjcsIEZpcmVmb3ggbWF5IGZpcmUga2V5cHJl
c3MgZXZlbnRzIGV2ZW4gd2hlbiBubyBjaGFyYWN0ZXJcbiAgICAgICAqIHdpbGwgYmUgaW5zZXJ0
ZWQuIEEgZmV3IHBvc3NpYmlsaXRpZXM6XG4gICAgICAgKlxuICAgICAgICogLSBgd2hpY2hgIGlz
IGAwYC4gQXJyb3cga2V5cywgRXNjIGtleSwgZXRjLlxuICAgICAgICpcbiAgICAgICAqIC0gYHdo
aWNoYCBpcyB0aGUgcHJlc3NlZCBrZXkgY29kZSwgYnV0IG5vIGNoYXIgaXMgYXZhaWxhYmxlLlxu
ICAgICAgICogICBFeDogJ0FsdEdyICsgZGAgaW4gUG9saXNoLiBUaGVyZSBpcyBubyBtb2RpZmll
ZCBjaGFyYWN0ZXIgZm9yXG4gICAgICAgKiAgIHRoaXMga2V5IGNvbWJpbmF0aW9uIGFuZCBubyBj
aGFyYWN0ZXIgaXMgaW5zZXJ0ZWQgaW50byB0aGVcbiAgICAgICAqICAgZG9jdW1lbnQsIGJ1dCBG
RiBmaXJlcyB0aGUga2V5cHJlc3MgZm9yIGNoYXIgY29kZSBgMTAwYCBhbnl3YXkuXG4gICAgICAg
KiAgIE5vIGBpbnB1dGAgZXZlbnQgd2lsbCBvY2N1ci5cbiAgICAgICAqXG4gICAgICAgKiAtIGB3
aGljaGAgaXMgdGhlIHByZXNzZWQga2V5IGNvZGUsIGJ1dCBhIGNvbW1hbmQgY29tYmluYXRpb24g
aXNcbiAgICAgICAqICAgYmVpbmcgdXNlZC4gRXg6IGBDbWQrQ2AuIE5vIGNoYXJhY3RlciBpcyBp
bnNlcnRlZCwgYW5kIG5vXG4gICAgICAgKiAgIGBpbnB1dGAgZXZlbnQgd2lsbCBvY2N1ci5cbiAg
ICAgICAqL1xuICAgICAgaWYgKG5hdGl2ZUV2ZW50LndoaWNoICYmICFpc0tleXByZXNzQ29tbWFu
ZChuYXRpdmVFdmVudCkpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUobmF0
aXZlRXZlbnQud2hpY2gpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSAn
dG9wQ29tcG9zaXRpb25FbmQnOlxuICAgICAgcmV0dXJuIHVzZUZhbGxiYWNrQ29tcG9zaXRpb25E
YXRhID8gbnVsbCA6IG5hdGl2ZUV2ZW50LmRhdGE7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVy
biBudWxsO1xuICB9XG59XG5cbi8qKlxuICogRXh0cmFjdCBhIFN5bnRoZXRpY0lucHV0RXZlbnQg
Zm9yIGBiZWZvcmVJbnB1dGAsIGJhc2VkIG9uIGVpdGhlciBuYXRpdmVcbiAqIGB0ZXh0SW5wdXRg
IG9yIGZhbGxiYWNrIGJlaGF2aW9yLlxuICpcbiAqIEByZXR1cm4gez9vYmplY3R9IEEgU3ludGhl
dGljSW5wdXRFdmVudC5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdEJlZm9yZUlucHV0RXZlbnQodG9w
TGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtc
biAgdmFyIGNoYXJzO1xuXG4gIGlmIChjYW5Vc2VUZXh0SW5wdXRFdmVudCkge1xuICAgIGNoYXJz
ID0gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KTtc
biAgfSBlbHNlIHtcbiAgICBjaGFycyA9IGdldEZhbGxiYWNrQmVmb3JlSW5wdXRDaGFycyh0b3BM
ZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KTtcbiAgfVxuXG4gIC8vIElmIG5vIGNoYXJhY3RlcnMgYXJl
IGJlaW5nIGluc2VydGVkLCBubyBCZWZvcmVJbnB1dCBldmVudCBzaG91bGRcbiAgLy8gYmUgZmly
ZWQuXG4gIGlmICghY2hhcnMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBldmVu
dCA9IFN5bnRoZXRpY0lucHV0RXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuYmVmb3JlSW5wdXQs
IHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cbiAgZXZlbnQu
ZGF0YSA9IGNoYXJzO1xuICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3Bh
dGNoZXMoZXZlbnQpO1xuICByZXR1cm4gZXZlbnQ7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIGBv
bkJlZm9yZUlucHV0YCBldmVudCB0byBtYXRjaFxuICogaHR0cDovL3d3dy53My5vcmcvVFIvMjAx
My9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAxMzExMDUvI2V2ZW50cy1pbnB1dGV2ZW50cy5cbiAq
XG4gKiBUaGlzIGV2ZW50IHBsdWdpbiBpcyBiYXNlZCBvbiB0aGUgbmF0aXZlIGB0ZXh0SW5wdXRg
IGV2ZW50XG4gKiBhdmFpbGFibGUgaW4gQ2hyb21lLCBTYWZhcmksIE9wZXJhLCBhbmQgSUUuIFRo
aXMgZXZlbnQgZmlyZXMgYWZ0ZXJcbiAqIGBvbktleVByZXNzYCBhbmQgYG9uQ29tcG9zaXRpb25F
bmRgLCBidXQgYmVmb3JlIGBvbklucHV0YC5cbiAqXG4gKiBgYmVmb3JlSW5wdXRgIGlzIHNwZWMn
ZCBidXQgbm90IGltcGxlbWVudGVkIGluIGFueSBicm93c2VycywgYW5kXG4gKiB0aGUgYGlucHV0
YCBldmVudCBkb2VzIG5vdCBwcm92aWRlIGFueSB1c2VmdWwgaW5mb3JtYXRpb24gYWJvdXQgd2hh
dCBoYXNcbiAqIGFjdHVhbGx5IGJlZW4gYWRkZWQsIGNvbnRyYXJ5IHRvIHRoZSBzcGVjLiBUaHVz
LCBgdGV4dElucHV0YCBpcyB0aGUgYmVzdFxuICogYXZhaWxhYmxlIGV2ZW50IHRvIGlkZW50aWZ5
IHRoZSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBhY3R1YWxseSBiZWVuIGluc2VydGVkXG4gKiBpbnRv
IHRoZSB0YXJnZXQgbm9kZS5cbiAqXG4gKiBUaGlzIHBsdWdpbiBpcyBhbHNvIHJlc3BvbnNpYmxl
IGZvciBlbWl0dGluZyBgY29tcG9zaXRpb25gIGV2ZW50cywgdGh1c1xuICogYWxsb3dpbmcgdXMg
dG8gc2hhcmUgY29tcG9zaXRpb24gZmFsbGJhY2sgY29kZSBmb3IgYm90aCBgYmVmb3JlSW5wdXRg
IGFuZFxuICogYGNvbXBvc2l0aW9uYCBldmVudCB0eXBlcy5cbiAqL1xudmFyIEJlZm9yZUlucHV0
RXZlbnRQbHVnaW4gPSB7XG4gIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cbiAgZXh0cmFjdEV2
ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgcmV0dXJuIFtleHRyYWN0Q29tcG9zaXRpb25FdmVudCh0
b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCks
IGV4dHJhY3RCZWZvcmVJbnB1dEV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZl
RXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KV07XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0g
QmVmb3JlSW5wdXRFdmVudFBsdWdpbjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBB
Q0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0JlZm9yZUlucHV0RXZl
bnRQbHVnaW4uanNcbi8vIG1vZHVsZSBpZCA9IDEyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIv
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fz
c2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFBvb2xlZENsYXNzID0gcmVx
dWlyZSgnLi9Qb29sZWRDbGFzcycpO1xuXG52YXIgZ2V0VGV4dENvbnRlbnRBY2Nlc3NvciA9IHJl
cXVpcmUoJy4vZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcicpO1xuXG4vKipcbiAqIFRoaXMgaGVscGVy
IGNsYXNzIHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCB0ZXh0IGNvbnRlbnQgb2YgYSB0YXJnZXQg
bm9kZSxcbiAqIGFsbG93aW5nIGNvbXBhcmlzb24gb2YgY29udGVudCBiZWZvcmUgYW5kIGFmdGVy
IGEgZ2l2ZW4gZXZlbnQuXG4gKlxuICogSWRlbnRpZnkgdGhlIG5vZGUgd2hlcmUgc2VsZWN0aW9u
IGN1cnJlbnRseSBiZWdpbnMsIHRoZW4gb2JzZXJ2ZVxuICogYm90aCBpdHMgdGV4dCBjb250ZW50
IGFuZCBpdHMgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgRE9NLiBTaW5jZSB0aGVcbiAqIGJyb3dz
ZXIgbWF5IG5hdGl2ZWx5IHJlcGxhY2UgdGhlIHRhcmdldCBub2RlIGR1cmluZyBjb21wb3NpdGlv
biwgd2UgY2FuXG4gKiB1c2UgaXRzIHBvc2l0aW9uIHRvIGZpbmQgaXRzIHJlcGxhY2VtZW50Llxu
ICpcbiAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHJvb3RcbiAqL1xuZnVuY3Rpb24gRmFsbGJh
Y2tDb21wb3NpdGlvblN0YXRlKHJvb3QpIHtcbiAgdGhpcy5fcm9vdCA9IHJvb3Q7XG4gIHRoaXMu
X3N0YXJ0VGV4dCA9IHRoaXMuZ2V0VGV4dCgpO1xuICB0aGlzLl9mYWxsYmFja1RleHQgPSBudWxs
O1xufVxuXG5fYXNzaWduKEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZS5wcm90b3R5cGUsIHtcbiAg
ZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuX3Jvb3QgPSBudWxsO1xuICAgIHRo
aXMuX3N0YXJ0VGV4dCA9IG51bGw7XG4gICAgdGhpcy5fZmFsbGJhY2tUZXh0ID0gbnVsbDtcbiAg
fSxcblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgdGV4dCBvZiBpbnB1dC5cbiAgICpcbiAgICog
QHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0VGV4dDogZnVuY3Rpb24gKCkge1xuICAgIGlm
ICgndmFsdWUnIGluIHRoaXMuX3Jvb3QpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yb290LnZhbHVl
O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcm9vdFtnZXRUZXh0Q29udGVudEFjY2Vzc29yKCld
O1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIGRpZmZlcmluZyBzdWJzdHJpbmcg
YmV0d2VlbiB0aGUgaW5pdGlhbGx5IHN0b3JlZFxuICAgKiB0ZXh0IGNvbnRlbnQgYW5kIHRoZSBj
dXJyZW50IGNvbnRlbnQuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIGdl
dERhdGE6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5fZmFsbGJhY2tUZXh0KSB7XG4gICAg
ICByZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0O1xuICAgIH1cblxuICAgIHZhciBzdGFydDtcbiAg
ICB2YXIgc3RhcnRWYWx1ZSA9IHRoaXMuX3N0YXJ0VGV4dDtcbiAgICB2YXIgc3RhcnRMZW5ndGgg
PSBzdGFydFZhbHVlLmxlbmd0aDtcbiAgICB2YXIgZW5kO1xuICAgIHZhciBlbmRWYWx1ZSA9IHRo
aXMuZ2V0VGV4dCgpO1xuICAgIHZhciBlbmRMZW5ndGggPSBlbmRWYWx1ZS5sZW5ndGg7XG5cbiAg
ICBmb3IgKHN0YXJ0ID0gMDsgc3RhcnQgPCBzdGFydExlbmd0aDsgc3RhcnQrKykge1xuICAgICAg
aWYgKHN0YXJ0VmFsdWVbc3RhcnRdICE9PSBlbmRWYWx1ZVtzdGFydF0pIHtcbiAgICAgICAgYnJl
YWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG1pbkVuZCA9IHN0YXJ0TGVuZ3RoIC0gc3Rh
cnQ7XG4gICAgZm9yIChlbmQgPSAxOyBlbmQgPD0gbWluRW5kOyBlbmQrKykge1xuICAgICAgaWYg
KHN0YXJ0VmFsdWVbc3RhcnRMZW5ndGggLSBlbmRdICE9PSBlbmRWYWx1ZVtlbmRMZW5ndGggLSBl
bmRdKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzbGljZVRh
aWwgPSBlbmQgPiAxID8gMSAtIGVuZCA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9mYWxsYmFja1Rl
eHQgPSBlbmRWYWx1ZS5zbGljZShzdGFydCwgc2xpY2VUYWlsKTtcbiAgICByZXR1cm4gdGhpcy5f
ZmFsbGJhY2tUZXh0O1xuICB9XG59KTtcblxuUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKEZhbGxi
YWNrQ29tcG9zaXRpb25TdGF0ZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gRmFsbGJhY2tDb21wb3Np
dGlvblN0YXRlO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8v
IC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLmpz
XG4vLyBtb2R1bGUgaWQgPSAxMjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY0V2ZW50
ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNFdmVudCcpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRXZl
bnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNldmVu
dHMtY29tcG9zaXRpb25ldmVudHNcbiAqL1xudmFyIENvbXBvc2l0aW9uRXZlbnRJbnRlcmZhY2Ug
PSB7XG4gIGRhdGE6IG51bGxcbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNo
Q29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBh
cmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQg
dGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2
ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRo
ZXRpY0NvbXBvc2l0aW9uRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY0V2ZW50LmNh
bGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhl
dGljQ29tcG9zaXRpb25FdmVudCwgQ29tcG9zaXRpb25FdmVudEludGVyZmFjZSk7XG5cbm1vZHVs
ZS5leHBvcnRzID0gU3ludGhldGljQ29tcG9zaXRpb25FdmVudDtcblxuXG4vLy8vLy8vLy8vLy8v
Ly8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGli
L1N5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQuanNcbi8vIG1vZHVsZSBpZCA9IDEyNFxuLy8gbW9k
dWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBz
dHJpY3QnO1xuXG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50
Jyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9y
Zy9UUi8yMDEzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDEzMTEwNVxuICogICAgICAvI2V2ZW50
cy1pbnB1dGV2ZW50c1xuICovXG52YXIgSW5wdXRFdmVudEludGVyZmFjZSA9IHtcbiAgZGF0YTog
bnVsbFxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmln
dXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30g
ZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBA
cGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0
ZW5kcyB7U3ludGhldGljVUlFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljSW5wdXRFdmVu
dChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCkge1xuICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENv
bmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59
XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNJbnB1dEV2ZW50LCBJbnB1
dEV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNJbnB1dEV2ZW50
O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvU3ludGhldGljSW5wdXRFdmVudC5qc1xuLy8gbW9kdWxlIGlk
ID0gMTI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudFBsdWdpbkh1YiA9IHJlcXVpcmUoJy4v
RXZlbnRQbHVnaW5IdWInKTtcbnZhciBFdmVudFByb3BhZ2F0b3JzID0gcmVxdWlyZSgnLi9FdmVu
dFByb3BhZ2F0b3JzJyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpz
L2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9
IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3RVcGRhdGVzID0g
cmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUo
Jy4vU3ludGhldGljRXZlbnQnKTtcblxudmFyIGlucHV0VmFsdWVUcmFja2luZyA9IHJlcXVpcmUo
Jy4vaW5wdXRWYWx1ZVRyYWNraW5nJyk7XG52YXIgZ2V0RXZlbnRUYXJnZXQgPSByZXF1aXJlKCcu
L2dldEV2ZW50VGFyZ2V0Jyk7XG52YXIgaXNFdmVudFN1cHBvcnRlZCA9IHJlcXVpcmUoJy4vaXNF
dmVudFN1cHBvcnRlZCcpO1xudmFyIGlzVGV4dElucHV0RWxlbWVudCA9IHJlcXVpcmUoJy4vaXNU
ZXh0SW5wdXRFbGVtZW50Jyk7XG5cbnZhciBldmVudFR5cGVzID0ge1xuICBjaGFuZ2U6IHtcbiAg
ICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDogJ29uQ2hhbmdlJyxc
biAgICAgIGNhcHR1cmVkOiAnb25DaGFuZ2VDYXB0dXJlJ1xuICAgIH0sXG4gICAgZGVwZW5kZW5j
aWVzOiBbJ3RvcEJsdXInLCAndG9wQ2hhbmdlJywgJ3RvcENsaWNrJywgJ3RvcEZvY3VzJywgJ3Rv
cElucHV0JywgJ3RvcEtleURvd24nLCAndG9wS2V5VXAnLCAndG9wU2VsZWN0aW9uQ2hhbmdlJ11c
biAgfVxufTtcblxuZnVuY3Rpb24gY3JlYXRlQW5kQWNjdW11bGF0ZUNoYW5nZUV2ZW50KGluc3Qs
IG5hdGl2ZUV2ZW50LCB0YXJnZXQpIHtcbiAgdmFyIGV2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0
UG9vbGVkKGV2ZW50VHlwZXMuY2hhbmdlLCBpbnN0LCBuYXRpdmVFdmVudCwgdGFyZ2V0KTtcbiAg
ZXZlbnQudHlwZSA9ICdjaGFuZ2UnO1xuICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29Q
aGFzZURpc3BhdGNoZXMoZXZlbnQpO1xuICByZXR1cm4gZXZlbnQ7XG59XG4vKipcbiAqIEZvciBJ
RSBzaGltc1xuICovXG52YXIgYWN0aXZlRWxlbWVudCA9IG51bGw7XG52YXIgYWN0aXZlRWxlbWVu
dEluc3QgPSBudWxsO1xuXG4vKipcbiAqIFNFQ1RJT046IGhhbmRsZSBgY2hhbmdlYCBldmVudFxu
ICovXG5mdW5jdGlvbiBzaG91bGRVc2VDaGFuZ2VFdmVudChlbGVtKSB7XG4gIHZhciBub2RlTmFt
ZSA9IGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1
cm4gbm9kZU5hbWUgPT09ICdzZWxlY3QnIHx8IG5vZGVOYW1lID09PSAnaW5wdXQnICYmIGVsZW0u
dHlwZSA9PT0gJ2ZpbGUnO1xufVxuXG52YXIgZG9lc0NoYW5nZUV2ZW50QnViYmxlID0gZmFsc2U7
XG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIC8vIFNlZSBgaGFuZGxl
Q2hhbmdlYCBjb21tZW50IGJlbG93XG4gIGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSA9IGlzRXZlbnRT
dXBwb3J0ZWQoJ2NoYW5nZScpICYmICghZG9jdW1lbnQuZG9jdW1lbnRNb2RlIHx8IGRvY3VtZW50
LmRvY3VtZW50TW9kZSA+IDgpO1xufVxuXG5mdW5jdGlvbiBtYW51YWxEaXNwYXRjaENoYW5nZUV2
ZW50KG5hdGl2ZUV2ZW50KSB7XG4gIHZhciBldmVudCA9IGNyZWF0ZUFuZEFjY3VtdWxhdGVDaGFu
Z2VFdmVudChhY3RpdmVFbGVtZW50SW5zdCwgbmF0aXZlRXZlbnQsIGdldEV2ZW50VGFyZ2V0KG5h
dGl2ZUV2ZW50KSk7XG5cbiAgLy8gSWYgY2hhbmdlIGFuZCBwcm9wZXJ0eWNoYW5nZSBidWJibGVk
LCB3ZSdkIGp1c3QgYmluZCB0byBpdCBsaWtlIGFsbCB0aGVcbiAgLy8gb3RoZXIgZXZlbnRzIGFu
ZCBoYXZlIGl0IGdvIHRocm91Z2ggUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLiBTaW5jZSBpdFxu
ICAvLyBkb2Vzbid0LCB3ZSBtYW51YWxseSBsaXN0ZW4gZm9yIHRoZSBldmVudHMgYW5kIHNvIHdl
IGhhdmUgdG8gZW5xdWV1ZSBhbmRcbiAgLy8gcHJvY2VzcyB0aGUgYWJzdHJhY3QgZXZlbnQgbWFu
dWFsbHkuXG4gIC8vXG4gIC8vIEJhdGNoaW5nIGlzIG5lY2Vzc2FyeSBoZXJlIGluIG9yZGVyIHRv
IGVuc3VyZSB0aGF0IGFsbCBldmVudCBoYW5kbGVycyBydW5cbiAgLy8gYmVmb3JlIHRoZSBuZXh0
IHJlcmVuZGVyIChpbmNsdWRpbmcgZXZlbnQgaGFuZGxlcnMgYXR0YWNoZWQgdG8gYW5jZXN0b3Jc
biAgLy8gZWxlbWVudHMgaW5zdGVhZCBvZiBkaXJlY3RseSBvbiB0aGUgaW5wdXQpLiBXaXRob3V0
IHRoaXMsIGNvbnRyb2xsZWRcbiAgLy8gY29tcG9uZW50cyBkb24ndCB3b3JrIHByb3Blcmx5IGlu
IGNvbmp1bmN0aW9uIHdpdGggZXZlbnQgYnViYmxpbmcgYmVjYXVzZVxuICAvLyB0aGUgY29tcG9u
ZW50IGlzIHJlcmVuZGVyZWQgYW5kIHRoZSB2YWx1ZSByZXZlcnRlZCBiZWZvcmUgYWxsIHRoZSBl
dmVudFxuICAvLyBoYW5kbGVycyBjYW4gcnVuLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vi
b29rL3JlYWN0L2lzc3Vlcy83MDguXG4gIFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyhydW5F
dmVudEluQmF0Y2gsIGV2ZW50KTtcbn1cblxuZnVuY3Rpb24gcnVuRXZlbnRJbkJhdGNoKGV2ZW50
KSB7XG4gIEV2ZW50UGx1Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnQpO1xuICBFdmVudFBsdWdp
bkh1Yi5wcm9jZXNzRXZlbnRRdWV1ZShmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0V2F0Y2hp
bmdGb3JDaGFuZ2VFdmVudElFOCh0YXJnZXQsIHRhcmdldEluc3QpIHtcbiAgYWN0aXZlRWxlbWVu
dCA9IHRhcmdldDtcbiAgYWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJbnN0O1xuICBhY3RpdmVF
bGVtZW50LmF0dGFjaEV2ZW50KCdvbmNoYW5nZScsIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQp
O1xufVxuXG5mdW5jdGlvbiBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgpIHtcbiAgaWYg
KCFhY3RpdmVFbGVtZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGFjdGl2ZUVsZW1lbnQuZGV0
YWNoRXZlbnQoJ29uY2hhbmdlJywgbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudCk7XG4gIGFjdGl2
ZUVsZW1lbnQgPSBudWxsO1xuICBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7XG59XG5cbmZ1bmN0
aW9uIGdldEluc3RJZlZhbHVlQ2hhbmdlZCh0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCkge1xuICB2
YXIgdXBkYXRlZCA9IGlucHV0VmFsdWVUcmFja2luZy51cGRhdGVWYWx1ZUlmQ2hhbmdlZCh0YXJn
ZXRJbnN0KTtcbiAgdmFyIHNpbXVsYXRlZCA9IG5hdGl2ZUV2ZW50LnNpbXVsYXRlZCA9PT0gdHJ1
ZSAmJiBDaGFuZ2VFdmVudFBsdWdpbi5fYWxsb3dTaW11bGF0ZWRQYXNzVGhyb3VnaDtcblxuICBp
ZiAodXBkYXRlZCB8fCBzaW11bGF0ZWQpIHtcbiAgICByZXR1cm4gdGFyZ2V0SW5zdDtcbiAgfVxu
fVxuXG5mdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9yQ2hhbmdlRXZlbnQodG9wTGV2ZWxUeXBlLCB0
YXJnZXRJbnN0KSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BDaGFuZ2UnKSB7XG4gICAg
cmV0dXJuIHRhcmdldEluc3Q7XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlRXZlbnRzRm9yQ2hh
bmdlRXZlbnRJRTgodG9wTGV2ZWxUeXBlLCB0YXJnZXQsIHRhcmdldEluc3QpIHtcbiAgaWYgKHRv
cExldmVsVHlwZSA9PT0gJ3RvcEZvY3VzJykge1xuICAgIC8vIHN0b3BXYXRjaGluZygpIHNob3Vs
ZCBiZSBhIG5vb3AgaGVyZSBidXQgd2UgY2FsbCBpdCBqdXN0IGluIGNhc2Ugd2VcbiAgICAvLyBt
aXNzZWQgYSBibHVyIGV2ZW50IHNvbWVob3cuXG4gICAgc3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZl
bnRJRTgoKTtcbiAgICBzdGFydFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgodGFyZ2V0LCB0YXJn
ZXRJbnN0KTtcbiAgfSBlbHNlIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BCbHVyJykge1xuICAg
IHN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBTRUNU
SU9OOiBoYW5kbGUgYGlucHV0YCBldmVudFxuICovXG52YXIgaXNJbnB1dEV2ZW50U3VwcG9ydGVk
ID0gZmFsc2U7XG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIC8vIElF
OSBjbGFpbXMgdG8gc3VwcG9ydCB0aGUgaW5wdXQgZXZlbnQgYnV0IGZhaWxzIHRvIHRyaWdnZXIg
aXQgd2hlblxuICAvLyBkZWxldGluZyB0ZXh0LCBzbyB3ZSBpZ25vcmUgaXRzIGlucHV0IGV2ZW50
cy5cblxuICBpc0lucHV0RXZlbnRTdXBwb3J0ZWQgPSBpc0V2ZW50U3VwcG9ydGVkKCdpbnB1dCcp
ICYmICghKCdkb2N1bWVudE1vZGUnIGluIGRvY3VtZW50KSB8fCBkb2N1bWVudC5kb2N1bWVudE1v
ZGUgPiA5KTtcbn1cblxuLyoqXG4gKiAoRm9yIElFIDw9OSkgU3RhcnRzIHRyYWNraW5nIHByb3Bl
cnR5Y2hhbmdlIGV2ZW50cyBvbiB0aGUgcGFzc2VkLWluIGVsZW1lbnRcbiAqIGFuZCBvdmVycmlk
ZSB0aGUgdmFsdWUgcHJvcGVydHkgc28gdGhhdCB3ZSBjYW4gZGlzdGluZ3Vpc2ggdXNlciBldmVu
dHMgZnJvbVxuICogdmFsdWUgY2hhbmdlcyBpbiBKUy5cbiAqL1xuZnVuY3Rpb24gc3RhcnRXYXRj
aGluZ0ZvclZhbHVlQ2hhbmdlKHRhcmdldCwgdGFyZ2V0SW5zdCkge1xuICBhY3RpdmVFbGVtZW50
ID0gdGFyZ2V0O1xuICBhY3RpdmVFbGVtZW50SW5zdCA9IHRhcmdldEluc3Q7XG4gIGFjdGl2ZUVs
ZW1lbnQuYXR0YWNoRXZlbnQoJ29ucHJvcGVydHljaGFuZ2UnLCBoYW5kbGVQcm9wZXJ0eUNoYW5n
ZSk7XG59XG5cbi8qKlxuICogKEZvciBJRSA8PTkpIFJlbW92ZXMgdGhlIGV2ZW50IGxpc3RlbmVy
cyBmcm9tIHRoZSBjdXJyZW50bHktdHJhY2tlZCBlbGVtZW50LFxuICogaWYgYW55IGV4aXN0cy5c
biAqL1xuZnVuY3Rpb24gc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKSB7XG4gIGlmICghYWN0
aXZlRWxlbWVudCkge1xuICAgIHJldHVybjtcbiAgfVxuICBhY3RpdmVFbGVtZW50LmRldGFjaEV2
ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVydHlDaGFuZ2UpO1xuXG4gIGFjdGl2
ZUVsZW1lbnQgPSBudWxsO1xuICBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7XG59XG5cbi8qKlxu
ICogKEZvciBJRSA8PTkpIEhhbmRsZXMgYSBwcm9wZXJ0eWNoYW5nZSBldmVudCwgc2VuZGluZyBh
IGBjaGFuZ2VgIGV2ZW50IGlmXG4gKiB0aGUgdmFsdWUgb2YgdGhlIGFjdGl2ZSBlbGVtZW50IGhh
cyBjaGFuZ2VkLlxuICovXG5mdW5jdGlvbiBoYW5kbGVQcm9wZXJ0eUNoYW5nZShuYXRpdmVFdmVu
dCkge1xuICBpZiAobmF0aXZlRXZlbnQucHJvcGVydHlOYW1lICE9PSAndmFsdWUnKSB7XG4gICAg
cmV0dXJuO1xuICB9XG4gIGlmIChnZXRJbnN0SWZWYWx1ZUNoYW5nZWQoYWN0aXZlRWxlbWVudElu
c3QsIG5hdGl2ZUV2ZW50KSkge1xuICAgIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQobmF0aXZl
RXZlbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUV2ZW50c0ZvcklucHV0RXZlbnRQb2x5
ZmlsbCh0b3BMZXZlbFR5cGUsIHRhcmdldCwgdGFyZ2V0SW5zdCkge1xuICBpZiAodG9wTGV2ZWxU
eXBlID09PSAndG9wRm9jdXMnKSB7XG4gICAgLy8gSW4gSUU4LCB3ZSBjYW4gY2FwdHVyZSBhbG1v
c3QgYWxsIC52YWx1ZSBjaGFuZ2VzIGJ5IGFkZGluZyBhXG4gICAgLy8gcHJvcGVydHljaGFuZ2Ug
aGFuZGxlciBhbmQgbG9va2luZyBmb3IgZXZlbnRzIHdpdGggcHJvcGVydHlOYW1lXG4gICAgLy8g
ZXF1YWwgdG8gJ3ZhbHVlJ1xuICAgIC8vIEluIElFOSwgcHJvcGVydHljaGFuZ2UgZmlyZXMgZm9y
IG1vc3QgaW5wdXQgZXZlbnRzIGJ1dCBpcyBidWdneSBhbmRcbiAgICAvLyBkb2Vzbid0IGZpcmUg
d2hlbiB0ZXh0IGlzIGRlbGV0ZWQsIGJ1dCBjb252ZW5pZW50bHksIHNlbGVjdGlvbmNoYW5nZVxu
ICAgIC8vIGFwcGVhcnMgdG8gZmlyZSBpbiBhbGwgb2YgdGhlIHJlbWFpbmluZyBjYXNlcyBzbyB3
ZSBjYXRjaCB0aG9zZSBhbmRcbiAgICAvLyBmb3J3YXJkIHRoZSBldmVudCBpZiB0aGUgdmFsdWUg
aGFzIGNoYW5nZWRcbiAgICAvLyBJbiBlaXRoZXIgY2FzZSwgd2UgZG9uJ3Qgd2FudCB0byBjYWxs
IHRoZSBldmVudCBoYW5kbGVyIGlmIHRoZSB2YWx1ZVxuICAgIC8vIGlzIGNoYW5nZWQgZnJvbSBK
UyBzbyB3ZSByZWRlZmluZSBhIHNldHRlciBmb3IgYC52YWx1ZWAgdGhhdCB1cGRhdGVzXG4gICAg
Ly8gb3VyIGFjdGl2ZUVsZW1lbnRWYWx1ZSB2YXJpYWJsZSwgYWxsb3dpbmcgdXMgdG8gaWdub3Jl
IHRob3NlIGNoYW5nZXNcbiAgICAvL1xuICAgIC8vIHN0b3BXYXRjaGluZygpIHNob3VsZCBiZSBh
IG5vb3AgaGVyZSBidXQgd2UgY2FsbCBpdCBqdXN0IGluIGNhc2Ugd2VcbiAgICAvLyBtaXNzZWQg
YSBibHVyIGV2ZW50IHNvbWVob3cuXG4gICAgc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKTtc
biAgICBzdGFydFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UodGFyZ2V0LCB0YXJnZXRJbnN0KTtcbiAg
fSBlbHNlIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BCbHVyJykge1xuICAgIHN0b3BXYXRjaGlu
Z0ZvclZhbHVlQ2hhbmdlKCk7XG4gIH1cbn1cblxuLy8gRm9yIElFOCBhbmQgSUU5LlxuZnVuY3Rp
b24gZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRQb2x5ZmlsbCh0b3BMZXZlbFR5cGUsIHRhcmdl
dEluc3QsIG5hdGl2ZUV2ZW50KSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BTZWxlY3Rp
b25DaGFuZ2UnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcEtleVVwJyB8fCB0b3BMZXZlbFR5cGUg
PT09ICd0b3BLZXlEb3duJykge1xuICAgIC8vIE9uIHRoZSBzZWxlY3Rpb25jaGFuZ2UgZXZlbnQs
IHRoZSB0YXJnZXQgaXMganVzdCBkb2N1bWVudCB3aGljaCBpc24ndFxuICAgIC8vIGhlbHBmdWwg
Zm9yIHVzIHNvIGp1c3QgY2hlY2sgYWN0aXZlRWxlbWVudCBpbnN0ZWFkLlxuICAgIC8vXG4gICAg
Ly8gOTklIG9mIHRoZSB0aW1lLCBrZXlkb3duIGFuZCBrZXl1cCBhcmVuJ3QgbmVjZXNzYXJ5LiBJ
RTggZmFpbHMgdG8gZmlyZVxuICAgIC8vIHByb3BlcnR5Y2hhbmdlIG9uIHRoZSBmaXJzdCBpbnB1
dCBldmVudCBhZnRlciBzZXR0aW5nIGB2YWx1ZWAgZnJvbSBhXG4gICAgLy8gc2NyaXB0IGFuZCBm
aXJlcyBvbmx5IGtleWRvd24sIGtleXByZXNzLCBrZXl1cC4gQ2F0Y2hpbmcga2V5dXAgdXN1YWxs
eVxuICAgIC8vIGdldHMgaXQgYW5kIGNhdGNoaW5nIGtleWRvd24gbGV0cyB1cyBmaXJlIGFuIGV2
ZW50IGZvciB0aGUgZmlyc3RcbiAgICAvLyBrZXlzdHJva2UgaWYgdXNlciBkb2VzIGEga2V5IHJl
cGVhdCAoaXQnbGwgYmUgYSBsaXR0bGUgZGVsYXllZDogcmlnaHRcbiAgICAvLyBiZWZvcmUgdGhl
IHNlY29uZCBrZXlzdHJva2UpLiBPdGhlciBpbnB1dCBtZXRob2RzIChlLmcuLCBwYXN0ZSkgc2Vl
bSB0b1xuICAgIC8vIGZpcmUgc2VsZWN0aW9uY2hhbmdlIG5vcm1hbGx5LlxuICAgIHJldHVybiBn
ZXRJbnN0SWZWYWx1ZUNoYW5nZWQoYWN0aXZlRWxlbWVudEluc3QsIG5hdGl2ZUV2ZW50KTtcbiAg
fVxufVxuXG4vKipcbiAqIFNFQ1RJT046IGhhbmRsZSBgY2xpY2tgIGV2ZW50XG4gKi9cbmZ1bmN0
aW9uIHNob3VsZFVzZUNsaWNrRXZlbnQoZWxlbSkge1xuICAvLyBVc2UgdGhlIGBjbGlja2AgZXZl
bnQgdG8gZGV0ZWN0IGNoYW5nZXMgdG8gY2hlY2tib3ggYW5kIHJhZGlvIGlucHV0cy5cbiAgLy8g
VGhpcyBhcHByb2FjaCB3b3JrcyBhY3Jvc3MgYWxsIGJyb3dzZXJzLCB3aGVyZWFzIGBjaGFuZ2Vg
IGRvZXMgbm90IGZpcmVcbiAgLy8gdW50aWwgYGJsdXJgIGluIElFOC5cbiAgdmFyIG5vZGVOYW1l
ID0gZWxlbS5ub2RlTmFtZTtcbiAgcmV0dXJuIG5vZGVOYW1lICYmIG5vZGVOYW1lLnRvTG93ZXJD
YXNlKCkgPT09ICdpbnB1dCcgJiYgKGVsZW0udHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBlbGVtLnR5
cGUgPT09ICdyYWRpbycpO1xufVxuXG5mdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9yQ2xpY2tFdmVu
dCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KSB7XG4gIGlmICh0b3BMZXZl
bFR5cGUgPT09ICd0b3BDbGljaycpIHtcbiAgICByZXR1cm4gZ2V0SW5zdElmVmFsdWVDaGFuZ2Vk
KHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRUYXJnZXRJ
bnN0Rm9ySW5wdXRPckNoYW5nZUV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZl
RXZlbnQpIHtcbiAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcElucHV0JyB8fCB0b3BMZXZlbFR5
cGUgPT09ICd0b3BDaGFuZ2UnKSB7XG4gICAgcmV0dXJuIGdldEluc3RJZlZhbHVlQ2hhbmdlZCh0
YXJnZXRJbnN0LCBuYXRpdmVFdmVudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlQ29udHJv
bGxlZElucHV0Qmx1cihpbnN0LCBub2RlKSB7XG4gIC8vIFRPRE86IEluIElFLCBpbnN0IGlzIG9j
Y2FzaW9uYWxseSBudWxsLiBXaHk/XG4gIGlmIChpbnN0ID09IG51bGwpIHtcbiAgICByZXR1cm47
XG4gIH1cblxuICAvLyBGaWJlciBhbmQgUmVhY3RET00ga2VlcCB3cmFwcGVyIHN0YXRlIGluIHNl
cGFyYXRlIHBsYWNlc1xuICB2YXIgc3RhdGUgPSBpbnN0Ll93cmFwcGVyU3RhdGUgfHwgbm9kZS5f
d3JhcHBlclN0YXRlO1xuXG4gIGlmICghc3RhdGUgfHwgIXN0YXRlLmNvbnRyb2xsZWQgfHwgbm9k
ZS50eXBlICE9PSAnbnVtYmVyJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIElmIGNvbnRy
b2xsZWQsIGFzc2lnbiB0aGUgdmFsdWUgYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IHZhbHVlIG9u
IGJsdXJcbiAgdmFyIHZhbHVlID0gJycgKyBub2RlLnZhbHVlO1xuICBpZiAobm9kZS5nZXRBdHRy
aWJ1dGUoJ3ZhbHVlJykgIT09IHZhbHVlKSB7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVl
JywgdmFsdWUpO1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBwbHVnaW4gY3JlYXRlcyBhbiBgb25D
aGFuZ2VgIGV2ZW50IHRoYXQgbm9ybWFsaXplcyBjaGFuZ2UgZXZlbnRzXG4gKiBhY3Jvc3MgZm9y
bSBlbGVtZW50cy4gVGhpcyBldmVudCBmaXJlcyBhdCBhIHRpbWUgd2hlbiBpdCdzIHBvc3NpYmxl
IHRvXG4gKiBjaGFuZ2UgdGhlIGVsZW1lbnQncyB2YWx1ZSB3aXRob3V0IHNlZWluZyBhIGZsaWNr
ZXIuXG4gKlxuICogU3VwcG9ydGVkIGVsZW1lbnRzIGFyZTpcbiAqIC0gaW5wdXQgKHNlZSBgaXNU
ZXh0SW5wdXRFbGVtZW50YClcbiAqIC0gdGV4dGFyZWFcbiAqIC0gc2VsZWN0XG4gKi9cbnZhciBD
aGFuZ2VFdmVudFBsdWdpbiA9IHtcbiAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblxuICBfYWxs
b3dTaW11bGF0ZWRQYXNzVGhyb3VnaDogdHJ1ZSxcbiAgX2lzSW5wdXRFdmVudFN1cHBvcnRlZDog
aXNJbnB1dEV2ZW50U3VwcG9ydGVkLFxuXG4gIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BM
ZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xu
ICAgIHZhciB0YXJnZXROb2RlID0gdGFyZ2V0SW5zdCA/IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXROb2RlRnJvbUluc3RhbmNlKHRhcmdldEluc3QpIDogd2luZG93O1xuXG4gICAgdmFyIGdldFRh
cmdldEluc3RGdW5jLCBoYW5kbGVFdmVudEZ1bmM7XG4gICAgaWYgKHNob3VsZFVzZUNoYW5nZUV2
ZW50KHRhcmdldE5vZGUpKSB7XG4gICAgICBpZiAoZG9lc0NoYW5nZUV2ZW50QnViYmxlKSB7XG4g
ICAgICAgIGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvckNoYW5nZUV2ZW50O1xu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFuZGxlRXZlbnRGdW5jID0gaGFuZGxlRXZlbnRzRm9y
Q2hhbmdlRXZlbnRJRTg7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RleHRJbnB1dEVsZW1l
bnQodGFyZ2V0Tm9kZSkpIHtcbiAgICAgIGlmIChpc0lucHV0RXZlbnRTdXBwb3J0ZWQpIHtcbiAg
ICAgICAgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9ySW5wdXRPckNoYW5nZUV2
ZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJn
ZXRJbnN0Rm9ySW5wdXRFdmVudFBvbHlmaWxsO1xuICAgICAgICBoYW5kbGVFdmVudEZ1bmMgPSBo
YW5kbGVFdmVudHNGb3JJbnB1dEV2ZW50UG9seWZpbGw7XG4gICAgICB9XG4gICAgfSBlbHNlIGlm
IChzaG91bGRVc2VDbGlja0V2ZW50KHRhcmdldE5vZGUpKSB7XG4gICAgICBnZXRUYXJnZXRJbnN0
RnVuYyA9IGdldFRhcmdldEluc3RGb3JDbGlja0V2ZW50O1xuICAgIH1cblxuICAgIGlmIChnZXRU
YXJnZXRJbnN0RnVuYykge1xuICAgICAgdmFyIGluc3QgPSBnZXRUYXJnZXRJbnN0RnVuYyh0b3BM
ZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KTtcbiAgICAgIGlmIChpbnN0KSB7XG4g
ICAgICAgIHZhciBldmVudCA9IGNyZWF0ZUFuZEFjY3VtdWxhdGVDaGFuZ2VFdmVudChpbnN0LCBu
YXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgICAgICByZXR1cm4gZXZlbnQ7XG4g
ICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGhhbmRsZUV2ZW50RnVuYykge1xuICAgICAgaGFuZGxl
RXZlbnRGdW5jKHRvcExldmVsVHlwZSwgdGFyZ2V0Tm9kZSwgdGFyZ2V0SW5zdCk7XG4gICAgfVxu
XG4gICAgLy8gV2hlbiBibHVycmluZywgc2V0IHRoZSB2YWx1ZSBhdHRyaWJ1dGUgZm9yIG51bWJl
ciBpbnB1dHNcbiAgICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQmx1cicpIHtcbiAgICAgIGhh
bmRsZUNvbnRyb2xsZWRJbnB1dEJsdXIodGFyZ2V0SW5zdCwgdGFyZ2V0Tm9kZSk7XG4gICAgfVxu
ICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IENoYW5nZUV2ZW50UGx1Z2luO1xuXG5cbi8vLy8v
Ly8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvQ2hhbmdlRXZlbnRQbHVnaW4uanNcbi8vIG1vZHVsZSBpZCA9IDEyNlxuLy8gbW9k
dWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4n
dXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdE93bmVyJyk7
XG5cbnZhciBSZWFjdFJlZiA9IHt9O1xuXG5mdW5jdGlvbiBhdHRhY2hSZWYocmVmLCBjb21wb25l
bnQsIG93bmVyKSB7XG4gIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmVm
KGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBMZWdh
Y3kgcmVmXG4gICAgUmVhY3RPd25lci5hZGRDb21wb25lbnRBc1JlZlRvKGNvbXBvbmVudCwgcmVm
LCBvd25lcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGV0YWNoUmVmKHJlZiwgY29tcG9uZW50LCBv
d25lcikge1xuICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJlZihudWxs
KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBMZWdhY3kgcmVmXG4gICAgUmVhY3RPd25lci5yZW1vdmVD
b21wb25lbnRBc1JlZkZyb20oY29tcG9uZW50LCByZWYsIG93bmVyKTtcbiAgfVxufVxuXG5SZWFj
dFJlZi5hdHRhY2hSZWZzID0gZnVuY3Rpb24gKGluc3RhbmNlLCBlbGVtZW50KSB7XG4gIGlmIChl
bGVtZW50ID09PSBudWxsIHx8IHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0Jykge1xuICAgIHJl
dHVybjtcbiAgfVxuICB2YXIgcmVmID0gZWxlbWVudC5yZWY7XG4gIGlmIChyZWYgIT0gbnVsbCkg
e1xuICAgIGF0dGFjaFJlZihyZWYsIGluc3RhbmNlLCBlbGVtZW50Ll9vd25lcik7XG4gIH1cbn07
XG5cblJlYWN0UmVmLnNob3VsZFVwZGF0ZVJlZnMgPSBmdW5jdGlvbiAocHJldkVsZW1lbnQsIG5l
eHRFbGVtZW50KSB7XG4gIC8vIElmIGVpdGhlciB0aGUgb3duZXIgb3IgYSBgcmVmYCBoYXMgY2hh
bmdlZCwgbWFrZSBzdXJlIHRoZSBuZXdlc3Qgb3duZXJcbiAgLy8gaGFzIHN0b3JlZCBhIHJlZmVy
ZW5jZSB0byBgdGhpc2AsIGFuZCB0aGUgcHJldmlvdXMgb3duZXIgKGlmIGRpZmZlcmVudClcbiAg
Ly8gaGFzIGZvcmdvdHRlbiB0aGUgcmVmZXJlbmNlIHRvIGB0aGlzYC4gV2UgdXNlIHRoZSBlbGVt
ZW50IGluc3RlYWRcbiAgLy8gb2YgdGhlIHB1YmxpYyB0aGlzLnByb3BzIGJlY2F1c2UgdGhlIHBv
c3QgcHJvY2Vzc2luZyBjYW5ub3QgZGV0ZXJtaW5lXG4gIC8vIGEgcmVmLiBUaGUgcmVmIGNvbmNl
cHR1YWxseSBsaXZlcyBvbiB0aGUgZWxlbWVudC5cblxuICAvLyBUT0RPOiBTaG91bGQgdGhpcyBl
dmVuIGJlIHBvc3NpYmxlPyBUaGUgb3duZXIgY2Fubm90IGNoYW5nZSBiZWNhdXNlXG4gIC8vIGl0
J3MgZm9yYmlkZGVuIGJ5IHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50LiBUaGUgcmVmIGNhbiBj
aGFuZ2VcbiAgLy8gaWYgeW91IHN3YXAgdGhlIGtleXMgb2YgYnV0IG5vdCB0aGUgcmVmcy4gUmVj
b25zaWRlciB3aGVyZSB0aGlzIGNoZWNrXG4gIC8vIGlzIG1hZGUuIEl0IHByb2JhYmx5IGJlbG9u
Z3Mgd2hlcmUgdGhlIGtleSBjaGVja2luZyBhbmRcbiAgLy8gaW5zdGFudGlhdGVSZWFjdENvbXBv
bmVudCBpcyBkb25lLlxuXG4gIHZhciBwcmV2UmVmID0gbnVsbDtcbiAgdmFyIHByZXZPd25lciA9
IG51bGw7XG4gIGlmIChwcmV2RWxlbWVudCAhPT0gbnVsbCAmJiB0eXBlb2YgcHJldkVsZW1lbnQg
PT09ICdvYmplY3QnKSB7XG4gICAgcHJldlJlZiA9IHByZXZFbGVtZW50LnJlZjtcbiAgICBwcmV2
T3duZXIgPSBwcmV2RWxlbWVudC5fb3duZXI7XG4gIH1cblxuICB2YXIgbmV4dFJlZiA9IG51bGw7
XG4gIHZhciBuZXh0T3duZXIgPSBudWxsO1xuICBpZiAobmV4dEVsZW1lbnQgIT09IG51bGwgJiYg
dHlwZW9mIG5leHRFbGVtZW50ID09PSAnb2JqZWN0Jykge1xuICAgIG5leHRSZWYgPSBuZXh0RWxl
bWVudC5yZWY7XG4gICAgbmV4dE93bmVyID0gbmV4dEVsZW1lbnQuX293bmVyO1xuICB9XG5cbiAg
cmV0dXJuIHByZXZSZWYgIT09IG5leHRSZWYgfHxcbiAgLy8gSWYgb3duZXIgY2hhbmdlcyBidXQg
d2UgaGF2ZSBhbiB1bmNoYW5nZWQgZnVuY3Rpb24gcmVmLCBkb24ndCB1cGRhdGUgcmVmc1xuICB0
eXBlb2YgbmV4dFJlZiA9PT0gJ3N0cmluZycgJiYgbmV4dE93bmVyICE9PSBwcmV2T3duZXI7XG59
O1xuXG5SZWFjdFJlZi5kZXRhY2hSZWZzID0gZnVuY3Rpb24gKGluc3RhbmNlLCBlbGVtZW50KSB7
XG4gIGlmIChlbGVtZW50ID09PSBudWxsIHx8IHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0Jykg
e1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgcmVmID0gZWxlbWVudC5yZWY7XG4gIGlmIChyZWYg
IT0gbnVsbCkge1xuICAgIGRldGFjaFJlZihyZWYsIGluc3RhbmNlLCBlbGVtZW50Ll9vd25lcik7
XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RSZWY7XG5cblxuLy8vLy8vLy8vLy8v
Ly8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xp
Yi9SZWFjdFJlZi5qc1xuLy8gbW9kdWxlIGlkID0gMTI3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIs
Ii8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0Jztcblxu
dmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxu
dmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAq
IEBwYXJhbSB7P29iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBv
YmplY3RgIGlzIGEgdmFsaWQgb3duZXIuXG4gKiBAZmluYWxcbiAqL1xuZnVuY3Rpb24gaXNWYWxp
ZE93bmVyKG9iamVjdCkge1xuICByZXR1cm4gISEob2JqZWN0ICYmIHR5cGVvZiBvYmplY3QuYXR0
YWNoUmVmID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBvYmplY3QuZGV0YWNoUmVmID09PSAnZnVu
Y3Rpb24nKTtcbn1cblxuLyoqXG4gKiBSZWFjdE93bmVycyBhcmUgY2FwYWJsZSBvZiBzdG9yaW5n
IHJlZmVyZW5jZXMgdG8gb3duZWQgY29tcG9uZW50cy5cbiAqXG4gKiBBbGwgY29tcG9uZW50cyBh
cmUgY2FwYWJsZSBvZiAvL2JlaW5nLy8gcmVmZXJlbmNlZCBieSBvd25lciBjb21wb25lbnRzLCBi
dXRcbiAqIG9ubHkgUmVhY3RPd25lciBjb21wb25lbnRzIGFyZSBjYXBhYmxlIG9mIC8vcmVmZXJl
bmNpbmcvLyBvd25lZCBjb21wb25lbnRzLlxuICogVGhlIG5hbWVkIHJlZmVyZW5jZSBpcyBrbm93
biBhcyBhIFwicmVmXCIuXG4gKlxuICogUmVmcyBhcmUgYXZhaWxhYmxlIHdoZW4gbW91bnRlZCBh
bmQgdXBkYXRlZCBkdXJpbmcgcmVjb25jaWxpYXRpb24uXG4gKlxuICogICB2YXIgTXlDb21wb25l
bnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAq
ICAgICAgIHJldHVybiAoXG4gKiAgICAgICAgIDxkaXYgb25DbGljaz17dGhpcy5oYW5kbGVDbGlj
a30+XG4gKiAgICAgICAgICAgPEN1c3RvbUNvbXBvbmVudCByZWY9XCJjdXN0b21cIiAvPlxuICog
ICAgICAgICA8L2Rpdj5cbiAqICAgICAgICk7XG4gKiAgICAgfSxcbiAqICAgICBoYW5kbGVDbGlj
azogZnVuY3Rpb24oKSB7XG4gKiAgICAgICB0aGlzLnJlZnMuY3VzdG9tLmhhbmRsZUNsaWNrKCk7
XG4gKiAgICAgfSxcbiAqICAgICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24oKSB7XG4gKiAg
ICAgICB0aGlzLnJlZnMuY3VzdG9tLmluaXRpYWxpemUoKTtcbiAqICAgICB9XG4gKiAgIH0pO1xu
ICpcbiAqIFJlZnMgc2hvdWxkIHJhcmVseSBiZSB1c2VkLiBXaGVuIHJlZnMgYXJlIHVzZWQsIHRo
ZXkgc2hvdWxkIG9ubHkgYmUgZG9uZSB0b1xuICogY29udHJvbCBkYXRhIHRoYXQgaXMgbm90IGhh
bmRsZWQgYnkgUmVhY3QncyBkYXRhIGZsb3cuXG4gKlxuICogQGNsYXNzIFJlYWN0T3duZXJcbiAq
L1xudmFyIFJlYWN0T3duZXIgPSB7XG4gIC8qKlxuICAgKiBBZGRzIGEgY29tcG9uZW50IGJ5IHJl
ZiB0byBhbiBvd25lciBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25l
bnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gcmVmZXJlbmNlLlxuICAgKiBAcGFyYW0ge3N0cmlu
Z30gcmVmIE5hbWUgYnkgd2hpY2ggdG8gcmVmZXIgdG8gdGhlIGNvbXBvbmVudC5cbiAgICogQHBh
cmFtIHtSZWFjdE93bmVyfSBvd25lciBDb21wb25lbnQgb24gd2hpY2ggdG8gcmVjb3JkIHRoZSBy
ZWYuXG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGFkZENvbXBvbmVudEFz
UmVmVG86IGZ1bmN0aW9uIChjb21wb25lbnQsIHJlZiwgb3duZXIpIHtcbiAgICAhaXNWYWxpZE93
bmVyKG93bmVyKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICdhZGRDb21wb25lbnRBc1JlZlRvKC4uLik6IE9ubHkgYSBSZWFjdE93bmVy
IGNhbiBoYXZlIHJlZnMuIFlvdSBtaWdodCBiZSBhZGRpbmcgYSByZWYgdG8gYSBjb21wb25lbnQg
dGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRlIGEgY29tcG9uZW50XFwncyBgcmVuZGVyYCBtZXRo
b2QsIG9yIHlvdSBoYXZlIG11bHRpcGxlIGNvcGllcyBvZiBSZWFjdCBsb2FkZWQgKGRldGFpbHM6
IGh0dHBzOi8vZmIubWUvcmVhY3QtcmVmcy1tdXN0LWhhdmUtb3duZXIpLicpIDogX3Byb2RJbnZh
cmlhbnQoJzExOScpIDogdm9pZCAwO1xuICAgIG93bmVyLmF0dGFjaFJlZihyZWYsIGNvbXBvbmVu
dCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBjb21wb25lbnQgYnkgcmVmIGZyb20g
YW4gb3duZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBj
b21wb25lbnQgQ29tcG9uZW50IHRvIGRlcmVmZXJlbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30g
cmVmIE5hbWUgb2YgdGhlIHJlZiB0byByZW1vdmUuXG4gICAqIEBwYXJhbSB7UmVhY3RPd25lcn0g
b3duZXIgQ29tcG9uZW50IG9uIHdoaWNoIHRoZSByZWYgaXMgcmVjb3JkZWQuXG4gICAqIEBmaW5h
bFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbTogZnVu
Y3Rpb24gKGNvbXBvbmVudCwgcmVmLCBvd25lcikge1xuICAgICFpc1ZhbGlkT3duZXIob3duZXIp
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ3JlbW92ZUNvbXBvbmVudEFzUmVmRnJvbSguLi4pOiBPbmx5IGEgUmVhY3RPd25lciBjYW4g
aGF2ZSByZWZzLiBZb3UgbWlnaHQgYmUgcmVtb3ZpbmcgYSByZWYgdG8gYSBjb21wb25lbnQgdGhh
dCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRlIGEgY29tcG9uZW50XFwncyBgcmVuZGVyYCBtZXRob2Qs
IG9yIHlvdSBoYXZlIG11bHRpcGxlIGNvcGllcyBvZiBSZWFjdCBsb2FkZWQgKGRldGFpbHM6IGh0
dHBzOi8vZmIubWUvcmVhY3QtcmVmcy1tdXN0LWhhdmUtb3duZXIpLicpIDogX3Byb2RJbnZhcmlh
bnQoJzEyMCcpIDogdm9pZCAwO1xuICAgIHZhciBvd25lclB1YmxpY0luc3RhbmNlID0gb3duZXIu
Z2V0UHVibGljSW5zdGFuY2UoKTtcbiAgICAvLyBDaGVjayB0aGF0IGBjb21wb25lbnRgJ3Mgb3du
ZXIgaXMgc3RpbGwgYWxpdmUgYW5kIHRoYXQgYGNvbXBvbmVudGAgaXMgc3RpbGwgdGhlIGN1cnJl
bnQgcmVmXG4gICAgLy8gYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0byBkZXRhY2ggdGhlIHJlZiBp
ZiBhbm90aGVyIGNvbXBvbmVudCBzdG9sZSBpdC5cbiAgICBpZiAob3duZXJQdWJsaWNJbnN0YW5j
ZSAmJiBvd25lclB1YmxpY0luc3RhbmNlLnJlZnNbcmVmXSA9PT0gY29tcG9uZW50LmdldFB1Ymxp
Y0luc3RhbmNlKCkpIHtcbiAgICAgIG93bmVyLmRldGFjaFJlZihyZWYpO1xuICAgIH1cbiAgfVxu
fTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE93bmVyO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8v
L1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVh
Y3RPd25lci5qc1xuLy8gbW9kdWxlIGlkID0gMTI4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICog
TW9kdWxlIHRoYXQgaXMgaW5qZWN0YWJsZSBpbnRvIGBFdmVudFBsdWdpbkh1YmAsIHRoYXQgc3Bl
Y2lmaWVzIGFcbiAqIGRldGVybWluaXN0aWMgb3JkZXJpbmcgb2YgYEV2ZW50UGx1Z2luYHMuIEEg
Y29udmVuaWVudCB3YXkgdG8gcmVhc29uIGFib3V0XG4gKiBwbHVnaW5zLCB3aXRob3V0IGhhdmlu
ZyB0byBwYWNrYWdlIGV2ZXJ5IG9uZSBvZiB0aGVtLiBUaGlzIGlzIGJldHRlciB0aGFuXG4gKiBo
YXZpbmcgcGx1Z2lucyBiZSBvcmRlcmVkIGluIHRoZSBzYW1lIG9yZGVyIHRoYXQgdGhleSBhcmUg
aW5qZWN0ZWQgYmVjYXVzZVxuICogdGhhdCBvcmRlcmluZyB3b3VsZCBiZSBpbmZsdWVuY2VkIGJ5
IHRoZSBwYWNrYWdpbmcgb3JkZXIuXG4gKiBgUmVzcG9uZGVyRXZlbnRQbHVnaW5gIG11c3Qgb2Nj
dXIgYmVmb3JlIGBTaW1wbGVFdmVudFBsdWdpbmAgc28gdGhhdFxuICogcHJldmVudGluZyBkZWZh
dWx0IG9uIGV2ZW50cyBpcyBjb252ZW5pZW50IGluIGBTaW1wbGVFdmVudFBsdWdpbmAgaGFuZGxl
cnMuXG4gKi9cblxudmFyIERlZmF1bHRFdmVudFBsdWdpbk9yZGVyID0gWydSZXNwb25kZXJFdmVu
dFBsdWdpbicsICdTaW1wbGVFdmVudFBsdWdpbicsICdUYXBFdmVudFBsdWdpbicsICdFbnRlckxl
YXZlRXZlbnRQbHVnaW4nLCAnQ2hhbmdlRXZlbnRQbHVnaW4nLCAnU2VsZWN0RXZlbnRQbHVnaW4n
LCAnQmVmb3JlSW5wdXRFdmVudFBsdWdpbiddO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERlZmF1bHRF
dmVudFBsdWdpbk9yZGVyO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09U
RVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRGVmYXVsdEV2ZW50UGx1Z2luT3Jk
ZXIuanNcbi8vIG1vZHVsZSBpZCA9IDEyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZlbnRQcm9w
YWdhdG9ycyA9IHJlcXVpcmUoJy4vRXZlbnRQcm9wYWdhdG9ycycpO1xudmFyIFJlYWN0RE9NQ29t
cG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgU3lu
dGhldGljTW91c2VFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljTW91c2VFdmVudCcpO1xuXG52
YXIgZXZlbnRUeXBlcyA9IHtcbiAgbW91c2VFbnRlcjoge1xuICAgIHJlZ2lzdHJhdGlvbk5hbWU6
ICdvbk1vdXNlRW50ZXInLFxuICAgIGRlcGVuZGVuY2llczogWyd0b3BNb3VzZU91dCcsICd0b3BN
b3VzZU92ZXInXVxuICB9LFxuICBtb3VzZUxlYXZlOiB7XG4gICAgcmVnaXN0cmF0aW9uTmFtZTog
J29uTW91c2VMZWF2ZScsXG4gICAgZGVwZW5kZW5jaWVzOiBbJ3RvcE1vdXNlT3V0JywgJ3RvcE1v
dXNlT3ZlciddXG4gIH1cbn07XG5cbnZhciBFbnRlckxlYXZlRXZlbnRQbHVnaW4gPSB7XG4gIGV2
ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cbiAgLyoqXG4gICAqIEZvciBhbG1vc3QgZXZlcnkgaW50
ZXJhY3Rpb24gd2UgY2FyZSBhYm91dCwgdGhlcmUgd2lsbCBiZSBib3RoIGEgdG9wLWxldmVsXG4g
ICAqIGBtb3VzZW92ZXJgIGFuZCBgbW91c2VvdXRgIGV2ZW50IHRoYXQgb2NjdXJzLiBPbmx5IHVz
ZSBgbW91c2VvdXRgIHNvIHRoYXRcbiAgICogd2UgZG8gbm90IGV4dHJhY3QgZHVwbGljYXRlIGV2
ZW50cy4gSG93ZXZlciwgbW92aW5nIHRoZSBtb3VzZSBpbnRvIHRoZVxuICAgKiBicm93c2VyIGZy
b20gb3V0c2lkZSB3aWxsIG5vdCBmaXJlIGEgYG1vdXNlb3V0YCBldmVudC4gSW4gdGhpcyBjYXNl
LCB3ZSB1c2VcbiAgICogdGhlIGBtb3VzZW92ZXJgIHRvcC1sZXZlbCBldmVudC5cbiAgICovXG4g
IGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2
ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICAgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0
b3BNb3VzZU92ZXInICYmIChuYXRpdmVFdmVudC5yZWxhdGVkVGFyZ2V0IHx8IG5hdGl2ZUV2ZW50
LmZyb21FbGVtZW50KSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0b3BM
ZXZlbFR5cGUgIT09ICd0b3BNb3VzZU91dCcgJiYgdG9wTGV2ZWxUeXBlICE9PSAndG9wTW91c2VP
dmVyJykge1xuICAgICAgLy8gTXVzdCBub3QgYmUgYSBtb3VzZSBpbiBvciBtb3VzZSBvdXQgLSBp
Z25vcmluZy5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciB3aW47XG4gICAg
aWYgKG5hdGl2ZUV2ZW50VGFyZ2V0LndpbmRvdyA9PT0gbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAg
ICAgIC8vIGBuYXRpdmVFdmVudFRhcmdldGAgaXMgcHJvYmFibHkgYSB3aW5kb3cgb2JqZWN0Llxu
ICAgICAgd2luID0gbmF0aXZlRXZlbnRUYXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRP
RE86IEZpZ3VyZSBvdXQgd2h5IGBvd25lckRvY3VtZW50YCBpcyBzb21ldGltZXMgdW5kZWZpbmVk
IGluIElFOC5cbiAgICAgIHZhciBkb2MgPSBuYXRpdmVFdmVudFRhcmdldC5vd25lckRvY3VtZW50
O1xuICAgICAgaWYgKGRvYykge1xuICAgICAgICB3aW4gPSBkb2MuZGVmYXVsdFZpZXcgfHwgZG9j
LnBhcmVudFdpbmRvdztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbiA9IHdpbmRvdztcbiAg
ICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZnJvbTtcbiAgICB2YXIgdG87XG4gICAgaWYgKHRvcExl
dmVsVHlwZSA9PT0gJ3RvcE1vdXNlT3V0Jykge1xuICAgICAgZnJvbSA9IHRhcmdldEluc3Q7XG4g
ICAgICB2YXIgcmVsYXRlZCA9IG5hdGl2ZUV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgbmF0aXZlRXZl
bnQudG9FbGVtZW50O1xuICAgICAgdG8gPSByZWxhdGVkID8gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKHJlbGF0ZWQpIDogbnVsbDtcbiAgICB9IGVsc2Ug
e1xuICAgICAgLy8gTW92aW5nIHRvIGEgbm9kZSBmcm9tIG91dHNpZGUgdGhlIHdpbmRvdy5cbiAg
ICAgIGZyb20gPSBudWxsO1xuICAgICAgdG8gPSB0YXJnZXRJbnN0O1xuICAgIH1cblxuICAgIGlm
IChmcm9tID09PSB0bykge1xuICAgICAgLy8gTm90aGluZyBwZXJ0YWlucyB0byBvdXIgbWFuYWdl
ZCBjb21wb25lbnRzLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIGZyb21O
b2RlID0gZnJvbSA9PSBudWxsID8gd2luIDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVG
cm9tSW5zdGFuY2UoZnJvbSk7XG4gICAgdmFyIHRvTm9kZSA9IHRvID09IG51bGwgPyB3aW4gOiBS
ZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0byk7XG5cbiAgICB2YXIg
bGVhdmUgPSBTeW50aGV0aWNNb3VzZUV2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLm1vdXNlTGVh
dmUsIGZyb20sIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgbGVhdmUudHlw
ZSA9ICdtb3VzZWxlYXZlJztcbiAgICBsZWF2ZS50YXJnZXQgPSBmcm9tTm9kZTtcbiAgICBsZWF2
ZS5yZWxhdGVkVGFyZ2V0ID0gdG9Ob2RlO1xuXG4gICAgdmFyIGVudGVyID0gU3ludGhldGljTW91
c2VFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5tb3VzZUVudGVyLCB0bywgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICBlbnRlci50eXBlID0gJ21vdXNlZW50ZXInO1xuICAg
IGVudGVyLnRhcmdldCA9IHRvTm9kZTtcbiAgICBlbnRlci5yZWxhdGVkVGFyZ2V0ID0gZnJvbU5v
ZGU7XG5cbiAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hl
cyhsZWF2ZSwgZW50ZXIsIGZyb20sIHRvKTtcblxuICAgIHJldHVybiBbbGVhdmUsIGVudGVyXTtc
biAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFbnRlckxlYXZlRXZlbnRQbHVnaW47XG5cblxu
Ly8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMv
cmVhY3QtZG9tL2xpYi9FbnRlckxlYXZlRXZlbnRQbHVnaW4uanNcbi8vIG1vZHVsZSBpZCA9IDEz
MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3Bl
cnR5Jyk7XG5cbnZhciBNVVNUX1VTRV9QUk9QRVJUWSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5N
VVNUX1VTRV9QUk9QRVJUWTtcbnZhciBIQVNfQk9PTEVBTl9WQUxVRSA9IERPTVByb3BlcnR5Lmlu
amVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRTtcbnZhciBIQVNfTlVNRVJJQ19WQUxVRSA9IERPTVBy
b3BlcnR5LmluamVjdGlvbi5IQVNfTlVNRVJJQ19WQUxVRTtcbnZhciBIQVNfUE9TSVRJVkVfTlVN
RVJJQ19WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfUE9TSVRJVkVfTlVNRVJJQ19W
QUxVRTtcbnZhciBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFID0gRE9NUHJvcGVydHkuaW5q
ZWN0aW9uLkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU7XG5cbnZhciBIVE1MRE9NUHJvcGVy
dHlDb25maWcgPSB7XG4gIGlzQ3VzdG9tQXR0cmlidXRlOiBSZWdFeHAucHJvdG90eXBlLnRlc3Qu
YmluZChuZXcgUmVnRXhwKCdeKGRhdGF8YXJpYSktWycgKyBET01Qcm9wZXJ0eS5BVFRSSUJVVEVf
TkFNRV9DSEFSICsgJ10qJCcpKSxcbiAgUHJvcGVydGllczoge1xuICAgIC8qKlxuICAgICAqIFN0
YW5kYXJkIFByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBhY2NlcHQ6IDAsXG4gICAgYWNjZXB0Q2hh
cnNldDogMCxcbiAgICBhY2Nlc3NLZXk6IDAsXG4gICAgYWN0aW9uOiAwLFxuICAgIGFsbG93RnVs
bFNjcmVlbjogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgYWxsb3dUcmFuc3BhcmVuY3k6IDAsXG4g
ICAgYWx0OiAwLFxuICAgIC8vIHNwZWNpZmllcyB0YXJnZXQgY29udGV4dCBmb3IgbGlua3Mgd2l0
aCBgcHJlbG9hZGAgdHlwZVxuICAgIGFzOiAwLFxuICAgIGFzeW5jOiBIQVNfQk9PTEVBTl9WQUxV
RSxcbiAgICBhdXRvQ29tcGxldGU6IDAsXG4gICAgLy8gYXV0b0ZvY3VzIGlzIHBvbHlmaWxsZWQv
bm9ybWFsaXplZCBieSBBdXRvRm9jdXNVdGlsc1xuICAgIC8vIGF1dG9Gb2N1czogSEFTX0JPT0xF
QU5fVkFMVUUsXG4gICAgYXV0b1BsYXk6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGNhcHR1cmU6
IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGNlbGxQYWRkaW5nOiAwLFxuICAgIGNlbGxTcGFjaW5n
OiAwLFxuICAgIGNoYXJTZXQ6IDAsXG4gICAgY2hhbGxlbmdlOiAwLFxuICAgIGNoZWNrZWQ6IE1V
U1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgY2l0ZTogMCxcbiAgICBj
bGFzc0lEOiAwLFxuICAgIGNsYXNzTmFtZTogMCxcbiAgICBjb2xzOiBIQVNfUE9TSVRJVkVfTlVN
RVJJQ19WQUxVRSxcbiAgICBjb2xTcGFuOiAwLFxuICAgIGNvbnRlbnQ6IDAsXG4gICAgY29udGVu
dEVkaXRhYmxlOiAwLFxuICAgIGNvbnRleHRNZW51OiAwLFxuICAgIGNvbnRyb2xzOiBIQVNfQk9P
TEVBTl9WQUxVRSxcbiAgICBjb29yZHM6IDAsXG4gICAgY3Jvc3NPcmlnaW46IDAsXG4gICAgZGF0
YTogMCwgLy8gRm9yIGA8b2JqZWN0IC8+YCBhY3RzIGFzIGBzcmNgLlxuICAgIGRhdGVUaW1lOiAw
LFxuICAgICdkZWZhdWx0JzogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgZGVmZXI6IEhBU19CT09M
RUFOX1ZBTFVFLFxuICAgIGRpcjogMCxcbiAgICBkaXNhYmxlZDogSEFTX0JPT0xFQU5fVkFMVUUs
XG4gICAgZG93bmxvYWQ6IEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUsXG4gICAgZHJhZ2dh
YmxlOiAwLFxuICAgIGVuY1R5cGU6IDAsXG4gICAgZm9ybTogMCxcbiAgICBmb3JtQWN0aW9uOiAw
LFxuICAgIGZvcm1FbmNUeXBlOiAwLFxuICAgIGZvcm1NZXRob2Q6IDAsXG4gICAgZm9ybU5vVmFs
aWRhdGU6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGZvcm1UYXJnZXQ6IDAsXG4gICAgZnJhbWVC
b3JkZXI6IDAsXG4gICAgaGVhZGVyczogMCxcbiAgICBoZWlnaHQ6IDAsXG4gICAgaGlkZGVuOiBI
QVNfQk9PTEVBTl9WQUxVRSxcbiAgICBoaWdoOiAwLFxuICAgIGhyZWY6IDAsXG4gICAgaHJlZkxh
bmc6IDAsXG4gICAgaHRtbEZvcjogMCxcbiAgICBodHRwRXF1aXY6IDAsXG4gICAgaWNvbjogMCxc
biAgICBpZDogMCxcbiAgICBpbnB1dE1vZGU6IDAsXG4gICAgaW50ZWdyaXR5OiAwLFxuICAgIGlz
OiAwLFxuICAgIGtleVBhcmFtczogMCxcbiAgICBrZXlUeXBlOiAwLFxuICAgIGtpbmQ6IDAsXG4g
ICAgbGFiZWw6IDAsXG4gICAgbGFuZzogMCxcbiAgICBsaXN0OiAwLFxuICAgIGxvb3A6IEhBU19C
T09MRUFOX1ZBTFVFLFxuICAgIGxvdzogMCxcbiAgICBtYW5pZmVzdDogMCxcbiAgICBtYXJnaW5I
ZWlnaHQ6IDAsXG4gICAgbWFyZ2luV2lkdGg6IDAsXG4gICAgbWF4OiAwLFxuICAgIG1heExlbmd0
aDogMCxcbiAgICBtZWRpYTogMCxcbiAgICBtZWRpYUdyb3VwOiAwLFxuICAgIG1ldGhvZDogMCxc
biAgICBtaW46IDAsXG4gICAgbWluTGVuZ3RoOiAwLFxuICAgIC8vIENhdXRpb247IGBvcHRpb24u
c2VsZWN0ZWRgIGlzIG5vdCB1cGRhdGVkIGlmIGBzZWxlY3QubXVsdGlwbGVgIGlzXG4gICAgLy8g
ZGlzYWJsZWQgd2l0aCBgcmVtb3ZlQXR0cmlidXRlYC5cbiAgICBtdWx0aXBsZTogTVVTVF9VU0Vf
UFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBtdXRlZDogTVVTVF9VU0VfUFJPUEVS
VFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBuYW1lOiAwLFxuICAgIG5vbmNlOiAwLFxuICAg
IG5vVmFsaWRhdGU6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIG9wZW46IEhBU19CT09MRUFOX1ZB
TFVFLFxuICAgIG9wdGltdW06IDAsXG4gICAgcGF0dGVybjogMCxcbiAgICBwbGFjZWhvbGRlcjog
MCxcbiAgICBwbGF5c0lubGluZTogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgcG9zdGVyOiAwLFxu
ICAgIHByZWxvYWQ6IDAsXG4gICAgcHJvZmlsZTogMCxcbiAgICByYWRpb0dyb3VwOiAwLFxuICAg
IHJlYWRPbmx5OiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICByZWZlcnJlclBvbGljeTogMCxcbiAg
ICByZWw6IDAsXG4gICAgcmVxdWlyZWQ6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIHJldmVyc2Vk
OiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICByb2xlOiAwLFxuICAgIHJvd3M6IEhBU19QT1NJVElW
RV9OVU1FUklDX1ZBTFVFLFxuICAgIHJvd1NwYW46IEhBU19OVU1FUklDX1ZBTFVFLFxuICAgIHNh
bmRib3g6IDAsXG4gICAgc2NvcGU6IDAsXG4gICAgc2NvcGVkOiBIQVNfQk9PTEVBTl9WQUxVRSxc
biAgICBzY3JvbGxpbmc6IDAsXG4gICAgc2VhbWxlc3M6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAg
IHNlbGVjdGVkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIHNo
YXBlOiAwLFxuICAgIHNpemU6IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuICAgIHNpemVz
OiAwLFxuICAgIHNwYW46IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuICAgIHNwZWxsQ2hl
Y2s6IDAsXG4gICAgc3JjOiAwLFxuICAgIHNyY0RvYzogMCxcbiAgICBzcmNMYW5nOiAwLFxuICAg
IHNyY1NldDogMCxcbiAgICBzdGFydDogSEFTX05VTUVSSUNfVkFMVUUsXG4gICAgc3RlcDogMCxc
biAgICBzdHlsZTogMCxcbiAgICBzdW1tYXJ5OiAwLFxuICAgIHRhYkluZGV4OiAwLFxuICAgIHRh
cmdldDogMCxcbiAgICB0aXRsZTogMCxcbiAgICAvLyBTZXR0aW5nIC50eXBlIHRocm93cyBvbiBu
b24tPGlucHV0PiB0YWdzXG4gICAgdHlwZTogMCxcbiAgICB1c2VNYXA6IDAsXG4gICAgdmFsdWU6
IDAsXG4gICAgd2lkdGg6IDAsXG4gICAgd21vZGU6IDAsXG4gICAgd3JhcDogMCxcblxuICAgIC8q
KlxuICAgICAqIFJERmEgUHJvcGVydGllc1xuICAgICAqL1xuICAgIGFib3V0OiAwLFxuICAgIGRh
dGF0eXBlOiAwLFxuICAgIGlubGlzdDogMCxcbiAgICBwcmVmaXg6IDAsXG4gICAgLy8gcHJvcGVy
dHkgaXMgYWxzbyBzdXBwb3J0ZWQgZm9yIE9wZW5HcmFwaCBpbiBtZXRhIHRhZ3MuXG4gICAgcHJv
cGVydHk6IDAsXG4gICAgcmVzb3VyY2U6IDAsXG4gICAgJ3R5cGVvZic6IDAsXG4gICAgdm9jYWI6
IDAsXG5cbiAgICAvKipcbiAgICAgKiBOb24tc3RhbmRhcmQgUHJvcGVydGllc1xuICAgICAqL1xu
ICAgIC8vIGF1dG9DYXBpdGFsaXplIGFuZCBhdXRvQ29ycmVjdCBhcmUgc3VwcG9ydGVkIGluIE1v
YmlsZSBTYWZhcmkgZm9yXG4gICAgLy8ga2V5Ym9hcmQgaGludHMuXG4gICAgYXV0b0NhcGl0YWxp
emU6IDAsXG4gICAgYXV0b0NvcnJlY3Q6IDAsXG4gICAgLy8gYXV0b1NhdmUgYWxsb3dzIFdlYktp
dC9CbGluayB0byBwZXJzaXN0IHZhbHVlcyBvZiBpbnB1dCBmaWVsZHMgb24gcGFnZSByZWxvYWRz
XG4gICAgYXV0b1NhdmU6IDAsXG4gICAgLy8gY29sb3IgaXMgZm9yIFNhZmFyaSBtYXNrLWljb24g
bGlua1xuICAgIGNvbG9yOiAwLFxuICAgIC8vIGl0ZW1Qcm9wLCBpdGVtU2NvcGUsIGl0ZW1UeXBl
IGFyZSBmb3JcbiAgICAvLyBNaWNyb2RhdGEgc3VwcG9ydC4gU2VlIGh0dHA6Ly9zY2hlbWEub3Jn
L2RvY3MvZ3MuaHRtbFxuICAgIGl0ZW1Qcm9wOiAwLFxuICAgIGl0ZW1TY29wZTogSEFTX0JPT0xF
QU5fVkFMVUUsXG4gICAgaXRlbVR5cGU6IDAsXG4gICAgLy8gaXRlbUlEIGFuZCBpdGVtUmVmIGFy
ZSBmb3IgTWljcm9kYXRhIHN1cHBvcnQgYXMgd2VsbCBidXRcbiAgICAvLyBvbmx5IHNwZWNpZmll
ZCBpbiB0aGUgV0hBVFdHIHNwZWMgZG9jdW1lbnQuIFNlZVxuICAgIC8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL21pY3JvZGF0YS5odG1sI21pY3JvZGF0YS1kb20tYXBp
XG4gICAgaXRlbUlEOiAwLFxuICAgIGl0ZW1SZWY6IDAsXG4gICAgLy8gcmVzdWx0cyBzaG93IGxv
b2tpbmcgZ2xhc3MgaWNvbiBhbmQgcmVjZW50IHNlYXJjaGVzIG9uIGlucHV0XG4gICAgLy8gc2Vh
cmNoIGZpZWxkcyBpbiBXZWJLaXQvQmxpbmtcbiAgICByZXN1bHRzOiAwLFxuICAgIC8vIElFLW9u
bHkgYXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHNlY3VyaXR5IHJlc3RyaWN0aW9ucyBvbiBhbiBp
ZnJhbWVcbiAgICAvLyBhcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgc2FuZGJveCBhdHRyaWJ1dGUg
b24gSUU8MTBcbiAgICBzZWN1cml0eTogMCxcbiAgICAvLyBJRS1vbmx5IGF0dHJpYnV0ZSB0aGF0
IGNvbnRyb2xzIGZvY3VzIGJlaGF2aW9yXG4gICAgdW5zZWxlY3RhYmxlOiAwXG4gIH0sXG4gIERP
TUF0dHJpYnV0ZU5hbWVzOiB7XG4gICAgYWNjZXB0Q2hhcnNldDogJ2FjY2VwdC1jaGFyc2V0Jyxc
biAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgaHRtbEZvcjogJ2ZvcicsXG4gICAgaHR0cEVx
dWl2OiAnaHR0cC1lcXVpdidcbiAgfSxcbiAgRE9NUHJvcGVydHlOYW1lczoge30sXG4gIERPTU11
dGF0aW9uTWV0aG9kczoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiAobm9kZSwgdmFsdWUpIHtcbiAg
ICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBub2RlLnJlbW92ZUF0dHJp
YnV0ZSgndmFsdWUnKTtcbiAgICAgIH1cblxuICAgICAgLy8gTnVtYmVyIGlucHV0cyBnZXQgc3Bl
Y2lhbCB0cmVhdG1lbnQgZHVlIHRvIHNvbWUgZWRnZSBjYXNlcyBpblxuICAgICAgLy8gQ2hyb21l
LiBMZXQgZXZlcnl0aGluZyBlbHNlIGFzc2lnbiB0aGUgdmFsdWUgYXR0cmlidXRlIGFzIG5vcm1h
bC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI1
MyNpc3N1ZWNvbW1lbnQtMjM2MDc0MzI2XG4gICAgICBpZiAobm9kZS50eXBlICE9PSAnbnVtYmVy
JyB8fCBub2RlLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgbm9k
ZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJycgKyB2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKG5v
ZGUudmFsaWRpdHkgJiYgIW5vZGUudmFsaWRpdHkuYmFkSW5wdXQgJiYgbm9kZS5vd25lckRvY3Vt
ZW50LmFjdGl2ZUVsZW1lbnQgIT09IG5vZGUpIHtcbiAgICAgICAgLy8gRG9uJ3QgYXNzaWduIGFu
IGF0dHJpYnV0ZSBpZiB2YWxpZGF0aW9uIHJlcG9ydHMgYmFkXG4gICAgICAgIC8vIGlucHV0LiBD
aHJvbWUgd2lsbCBjbGVhciB0aGUgdmFsdWUuIEFkZGl0aW9uYWxseSwgZG9uJ3RcbiAgICAgICAg
Ly8gb3BlcmF0ZSBvbiBpbnB1dHMgdGhhdCBoYXZlIGZvY3VzLCBvdGhlcndpc2UgQ2hyb21lIG1p
Z2h0XG4gICAgICAgIC8vIHN0cmlwIG9mZiB0cmFpbGluZyBkZWNpbWFsIHBsYWNlcyBhbmQgY2F1
c2UgdGhlIHVzZXInc1xuICAgICAgICAvLyBjdXJzb3IgcG9zaXRpb24gdG8ganVtcCB0byB0aGUg
YmVnaW5uaW5nIG9mIHRoZSBpbnB1dC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gSW4gUmVhY3RE
T01JbnB1dCwgd2UgaGF2ZSBhbiBvbkJsdXIgZXZlbnQgdGhhdCB3aWxsIHRyaWdnZXJcbiAgICAg
ICAgLy8gdGhpcyBmdW5jdGlvbiBhZ2FpbiB3aGVuIGZvY3VzIGlzIGxvc3QuXG4gICAgICAgIG5v
ZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsICcnICsgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAg
fVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBIVE1MRE9NUHJvcGVydHlDb25maWc7XG5cblxuLy8v
Ly8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVh
Y3QtZG9tL2xpYi9IVE1MRE9NUHJvcGVydHlDb25maWcuanNcbi8vIG1vZHVsZSBpZCA9IDEzMVxu
Ly8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0gcmVxdWlyZSgnLi9E
T01DaGlsZHJlbk9wZXJhdGlvbnMnKTtcbnZhciBSZWFjdERPTUlET3BlcmF0aW9ucyA9IHJlcXVp
cmUoJy4vUmVhY3RET01JRE9wZXJhdGlvbnMnKTtcblxuLyoqXG4gKiBBYnN0cmFjdHMgYXdheSBh
bGwgZnVuY3Rpb25hbGl0eSBvZiB0aGUgcmVjb25jaWxlciB0aGF0IHJlcXVpcmVzIGtub3dsZWRn
ZSBvZlxuICogdGhlIGJyb3dzZXIgY29udGV4dC4gVE9ETzogVGhlc2UgY2FsbGVycyBzaG91bGQg
YmUgcmVmYWN0b3JlZCB0byBhdm9pZCB0aGVcbiAqIG5lZWQgZm9yIHRoaXMgaW5qZWN0aW9uLlxu
ICovXG52YXIgUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQgPSB7XG4gIHByb2Nlc3ND
aGlsZHJlblVwZGF0ZXM6IFJlYWN0RE9NSURPcGVyYXRpb25zLmRhbmdlcm91c2x5UHJvY2Vzc0No
aWxkcmVuVXBkYXRlcyxcblxuICByZXBsYWNlTm9kZVdpdGhNYXJrdXA6IERPTUNoaWxkcmVuT3Bl
cmF0aW9ucy5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cFxufTtcblxubW9kdWxlLmV4
cG9ydHMgPSBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudDtcblxuXG4vLy8vLy8vLy8v
Ly8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL1JlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50LmpzXG4vLyBtb2R1bGUgaWQgPSAx
MzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFj
dFByb2RJbnZhcmlhbnQnKTtcblxudmFyIERPTUxhenlUcmVlID0gcmVxdWlyZSgnLi9ET01MYXp5
VHJlZScpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhl
Y3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIGNyZWF0ZU5vZGVzRnJvbU1hcmt1cCA9IHJlcXVp
cmUoJ2ZianMvbGliL2NyZWF0ZU5vZGVzRnJvbU1hcmt1cCcpO1xudmFyIGVtcHR5RnVuY3Rpb24g
PSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgaW52YXJpYW50ID0gcmVx
dWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBEYW5nZXIgPSB7XG4gIC8qKlxuICAg
KiBSZXBsYWNlcyBhIG5vZGUgd2l0aCBhIHN0cmluZyBvZiBtYXJrdXAgYXQgaXRzIGN1cnJlbnQg
cG9zaXRpb24gd2l0aGluIGl0c1xuICAgKiBwYXJlbnQuIFRoZSBtYXJrdXAgbXVzdCByZW5kZXIg
aW50byBhIHNpbmdsZSByb290IG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0g
b2xkQ2hpbGQgQ2hpbGQgbm9kZSB0byByZXBsYWNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWFy
a3VwIE1hcmt1cCB0byByZW5kZXIgaW4gcGxhY2Ugb2YgdGhlIGNoaWxkIG5vZGUuXG4gICAqIEBp
bnRlcm5hbFxuICAgKi9cbiAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGZ1bmN0
aW9uIChvbGRDaGlsZCwgbWFya3VwKSB7XG4gICAgIUV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVz
ZURPTSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCguLi4pOiBDYW5ub3QgcmVu
ZGVyIG1hcmt1cCBpbiBhIHdvcmtlciB0aHJlYWQuIE1ha2Ugc3VyZSBgd2luZG93YCBhbmQgYGRv
Y3VtZW50YCBhcmUgYXZhaWxhYmxlIGdsb2JhbGx5IGJlZm9yZSByZXF1aXJpbmcgUmVhY3Qgd2hl
biB1bml0IHRlc3Rpbmcgb3IgdXNlIFJlYWN0RE9NU2VydmVyLnJlbmRlclRvU3RyaW5nKCkgZm9y
IHNlcnZlciByZW5kZXJpbmcuJykgOiBfcHJvZEludmFyaWFudCgnNTYnKSA6IHZvaWQgMDtcbiAg
ICAhbWFya3VwID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IE1pc3Np
bmcgbWFya3VwLicpIDogX3Byb2RJbnZhcmlhbnQoJzU3JykgOiB2b2lkIDA7XG4gICAgIShvbGRD
aGlsZC5ub2RlTmFtZSAhPT0gJ0hUTUwnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1h
cmt1cCguLi4pOiBDYW5ub3QgcmVwbGFjZSBtYXJrdXAgb2YgdGhlIDxodG1sPiBub2RlLiBUaGlz
IGlzIGJlY2F1c2UgYnJvd3NlciBxdWlya3MgbWFrZSB0aGlzIHVucmVsaWFibGUgYW5kL29yIHNs
b3cuIElmIHlvdSB3YW50IHRvIHJlbmRlciB0byB0aGUgcm9vdCB5b3UgbXVzdCB1c2Ugc2VydmVy
IHJlbmRlcmluZy4gU2VlIFJlYWN0RE9NU2VydmVyLnJlbmRlclRvU3RyaW5nKCkuJykgOiBfcHJv
ZEludmFyaWFudCgnNTgnKSA6IHZvaWQgMDtcblxuICAgIGlmICh0eXBlb2YgbWFya3VwID09PSAn
c3RyaW5nJykge1xuICAgICAgdmFyIG5ld0NoaWxkID0gY3JlYXRlTm9kZXNGcm9tTWFya3VwKG1h
cmt1cCwgZW1wdHlGdW5jdGlvbilbMF07XG4gICAgICBvbGRDaGlsZC5wYXJlbnROb2RlLnJlcGxh
Y2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBET01MYXp5
VHJlZS5yZXBsYWNlQ2hpbGRXaXRoVHJlZShvbGRDaGlsZCwgbWFya3VwKTtcbiAgICB9XG4gIH1c
bn07XG5cbm1vZHVsZS5leHBvcnRzID0gRGFuZ2VyO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xu
Ly8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvRGFuZ2Vy
LmpzXG4vLyBtb2R1bGUgaWQgPSAxMzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJp
Y3QnO1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAq
L1xuXG4vKmVzbGludC1kaXNhYmxlIGZiLXd3dy91bnNhZmUtaHRtbCovXG5cbnZhciBFeGVjdXRp
b25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFy
IGNyZWF0ZUFycmF5RnJvbU1peGVkID0gcmVxdWlyZSgnLi9jcmVhdGVBcnJheUZyb21NaXhlZCcp
O1xudmFyIGdldE1hcmt1cFdyYXAgPSByZXF1aXJlKCcuL2dldE1hcmt1cFdyYXAnKTtcbnZhciBp
bnZhcmlhbnQgPSByZXF1aXJlKCcuL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIER1bW15IGNvbnRh
aW5lciB1c2VkIHRvIHJlbmRlciBhbGwgbWFya3VwLlxuICovXG52YXIgZHVtbXlOb2RlID0gRXhl
Y3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
JykgOiBudWxsO1xuXG4vKipcbiAqIFBhdHRlcm4gdXNlZCBieSBgZ2V0Tm9kZU5hbWVgLlxuICov
XG52YXIgbm9kZU5hbWVQYXR0ZXJuID0gL15cXHMqPChcXHcrKS87XG5cbi8qKlxuICogRXh0cmFj
dHMgdGhlIGBub2RlTmFtZWAgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYSBzdHJpbmcgb2YgbWFy
a3VwLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgU3RyaW5nIG9mIG1hcmt1cC5cbiAq
IEByZXR1cm4gez9zdHJpbmd9IE5vZGUgbmFtZSBvZiB0aGUgc3VwcGxpZWQgbWFya3VwLlxuICov
XG5mdW5jdGlvbiBnZXROb2RlTmFtZShtYXJrdXApIHtcbiAgdmFyIG5vZGVOYW1lTWF0Y2ggPSBt
YXJrdXAubWF0Y2gobm9kZU5hbWVQYXR0ZXJuKTtcbiAgcmV0dXJuIG5vZGVOYW1lTWF0Y2ggJiYg
bm9kZU5hbWVNYXRjaFsxXS50b0xvd2VyQ2FzZSgpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4g
YXJyYXkgY29udGFpbmluZyB0aGUgbm9kZXMgcmVuZGVyZWQgZnJvbSB0aGUgc3VwcGxpZWQgbWFy
a3VwLiBUaGVcbiAqIG9wdGlvbmFsbHkgc3VwcGxpZWQgYGhhbmRsZVNjcmlwdGAgZnVuY3Rpb24g
d2lsbCBiZSBpbnZva2VkIG9uY2UgZm9yIGVhY2hcbiAqIDxzY3JpcHQ+IGVsZW1lbnQgdGhhdCBp
cyByZW5kZXJlZC4gSWYgbm8gYGhhbmRsZVNjcmlwdGAgZnVuY3Rpb24gaXMgc3VwcGxpZWQsXG4g
KiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGlmIGFueSA8c2NyaXB0PiBlbGVtZW50cyBhcmUgcmVu
ZGVyZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBBIHN0cmluZyBvZiB2YWxpZCBI
VE1MIG1hcmt1cC5cbiAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBoYW5kbGVTY3JpcHQgSW52b2tlZCBv
bmNlIGZvciBlYWNoIHJlbmRlcmVkIDxzY3JpcHQ+LlxuICogQHJldHVybiB7YXJyYXk8RE9NRWxl
bWVudHxET01UZXh0Tm9kZT59IEFuIGFycmF5IG9mIHJlbmRlcmVkIG5vZGVzLlxuICovXG5mdW5j
dGlvbiBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAobWFya3VwLCBoYW5kbGVTY3JpcHQpIHtcbiAgdmFy
IG5vZGUgPSBkdW1teU5vZGU7XG4gICEhIWR1bW15Tm9kZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdjcmVhdGVOb2Rlc0Zyb21NYXJr
dXAgZHVtbXkgbm90IGluaXRpYWxpemVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xu
ICB2YXIgbm9kZU5hbWUgPSBnZXROb2RlTmFtZShtYXJrdXApO1xuXG4gIHZhciB3cmFwID0gbm9k
ZU5hbWUgJiYgZ2V0TWFya3VwV3JhcChub2RlTmFtZSk7XG4gIGlmICh3cmFwKSB7XG4gICAgbm9k
ZS5pbm5lckhUTUwgPSB3cmFwWzFdICsgbWFya3VwICsgd3JhcFsyXTtcblxuICAgIHZhciB3cmFw
RGVwdGggPSB3cmFwWzBdO1xuICAgIHdoaWxlICh3cmFwRGVwdGgtLSkge1xuICAgICAgbm9kZSA9
IG5vZGUubGFzdENoaWxkO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBub2RlLmlubmVySFRNTCA9
IG1hcmt1cDtcbiAgfVxuXG4gIHZhciBzY3JpcHRzID0gbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgnc2NyaXB0Jyk7XG4gIGlmIChzY3JpcHRzLmxlbmd0aCkge1xuICAgICFoYW5kbGVTY3JpcHQg
PyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnY3JlYXRlTm9kZXNGcm9tTWFya3VwKC4uLik6IFVuZXhwZWN0ZWQgPHNjcmlwdD4gZWxlbWVu
dCByZW5kZXJlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY3JlYXRlQXJy
YXlGcm9tTWl4ZWQoc2NyaXB0cykuZm9yRWFjaChoYW5kbGVTY3JpcHQpO1xuICB9XG5cbiAgdmFy
IG5vZGVzID0gQXJyYXkuZnJvbShub2RlLmNoaWxkTm9kZXMpO1xuICB3aGlsZSAobm9kZS5sYXN0
Q2hpbGQpIHtcbiAgICBub2RlLnJlbW92ZUNoaWxkKG5vZGUubGFzdENoaWxkKTtcbiAgfVxuICBy
ZXR1cm4gbm9kZXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlTm9kZXNGcm9tTWFya3Vw
O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9t
b2R1bGVzL2ZianMvbGliL2NyZWF0ZU5vZGVzRnJvbU1hcmt1cC5qc1xuLy8gbW9kdWxlIGlkID0g
MTM0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDb3B5
cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxudmFyIGludmFyaWFudCA9
IHJlcXVpcmUoJy4vaW52YXJpYW50Jyk7XG5cbi8qKlxuICogQ29udmVydCBhcnJheS1saWtlIG9i
amVjdHMgdG8gYXJyYXlzLlxuICpcbiAqIFRoaXMgQVBJIGFzc3VtZXMgdGhlIGNhbGxlciBrbm93
cyB0aGUgY29udGVudHMgb2YgdGhlIGRhdGEgdHlwZS4gRm9yIGxlc3NcbiAqIHdlbGwgZGVmaW5l
ZCBpbnB1dHMgdXNlIGNyZWF0ZUFycmF5RnJvbU1peGVkLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0
fGZ1bmN0aW9ufGZpbGVsaXN0fSBvYmpcbiAqIEByZXR1cm4ge2FycmF5fVxuICovXG5mdW5jdGlv
biB0b0FycmF5KG9iaikge1xuICB2YXIgbGVuZ3RoID0gb2JqLmxlbmd0aDtcblxuICAvLyBTb21l
IGJyb3dzZXJzIGJ1aWx0aW4gb2JqZWN0cyBjYW4gcmVwb3J0IHR5cGVvZiAnZnVuY3Rpb24nIChl
LmcuIE5vZGVMaXN0XG4gIC8vIGluIG9sZCB2ZXJzaW9ucyBvZiBTYWZhcmkpLlxuICAhKCFBcnJh
eS5pc0FycmF5KG9iaikgJiYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnIHx8IHR5cGVvZiBvYmog
PT09ICdmdW5jdGlvbicpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBBcnJheS1saWtlIG9iamVjdCBleHBlY3RlZCcp
IDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcblxuICAhKHR5cGVvZiBsZW5ndGggPT09ICdu
dW1iZXInKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICd0b0FycmF5OiBPYmplY3QgbmVlZHMgYSBsZW5ndGggcHJvcGVydHknKSA6IGlu
dmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG5cbiAgIShsZW5ndGggPT09IDAgfHwgbGVuZ3RoIC0g
MSBpbiBvYmopID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ3RvQXJyYXk6IE9iamVjdCBzaG91bGQgaGF2ZSBrZXlzIGZvciBpbmRpY2Vz
JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuXG4gICEodHlwZW9mIG9iai5jYWxsZWUg
IT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IE9iamVjdCBjYW5cXCd0IGJlIGBhcmd1bWVudHNg
LiBVc2UgcmVzdCBwYXJhbXMgJyArICcoZnVuY3Rpb24oLi4uYXJncykge30pIG9yIEFycmF5LmZy
b20oKSBpbnN0ZWFkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcblxuICAvLyBPbGQg
SUUgZG9lc24ndCBnaXZlIGNvbGxlY3Rpb25zIGFjY2VzcyB0byBoYXNPd25Qcm9wZXJ0eS4gQXNz
dW1lIGlucHV0c1xuICAvLyB3aXRob3V0IG1ldGhvZCB3aWxsIHRocm93IGR1cmluZyB0aGUgc2xp
Y2UgY2FsbCBhbmQgc2tpcCBzdHJhaWdodCB0byB0aGVcbiAgLy8gZmFsbGJhY2suXG4gIGlmIChv
YmouaGFzT3duUHJvcGVydHkpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEFycmF5LnByb3Rv
dHlwZS5zbGljZS5jYWxsKG9iaik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gSUUgPCA5
IGRvZXMgbm90IHN1cHBvcnQgQXJyYXkjc2xpY2Ugb24gY29sbGVjdGlvbnMgb2JqZWN0c1xuICAg
IH1cbiAgfVxuXG4gIC8vIEZhbGwgYmFjayB0byBjb3B5aW5nIGtleSBieSBrZXkuIFRoaXMgYXNz
dW1lcyBhbGwga2V5cyBoYXZlIGEgdmFsdWUsXG4gIC8vIHNvIHdpbGwgbm90IHByZXNlcnZlIHNw
YXJzZWx5IHBvcHVsYXRlZCBpbnB1dHMuXG4gIHZhciByZXQgPSBBcnJheShsZW5ndGgpO1xuICBm
b3IgKHZhciBpaSA9IDA7IGlpIDwgbGVuZ3RoOyBpaSsrKSB7XG4gICAgcmV0W2lpXSA9IG9ialtp
aV07XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBQZXJmb3JtIGEgaGV1cmlzdGlj
IHRlc3QgdG8gZGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBcImFycmF5LWxpa2VcIi5cbiAqXG4g
KiAgIEEgbW9uayBhc2tlZCBKb3NodSwgYSBaZW4gbWFzdGVyLCBcIkhhcyBhIGRvZyBCdWRkaGEg
bmF0dXJlP1wiXG4gKiAgIEpvc2h1IHJlcGxpZWQ6IFwiTXUuXCJcbiAqXG4gKiBUaGlzIGZ1bmN0
aW9uIGRldGVybWluZXMgaWYgaXRzIGFyZ3VtZW50IGhhcyBcImFycmF5IG5hdHVyZVwiOiBpdCBy
ZXR1cm5zXG4gKiB0cnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhbiBhY3R1YWwgYXJyYXksIGFuIGBh
cmd1bWVudHMnIG9iamVjdCwgb3IgYW5cbiAqIEhUTUxDb2xsZWN0aW9uIChlLmcuIG5vZGUuY2hp
bGROb2RlcyBvciBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCkpLlxuICpcbiAqIEl0IHdpbGwg
cmV0dXJuIGZhbHNlIGZvciBvdGhlciBhcnJheS1saWtlIG9iamVjdHMgbGlrZSBGaWxlbGlzdC5c
biAqXG4gKiBAcGFyYW0geyp9IG9ialxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rp
b24gaGFzQXJyYXlOYXR1cmUob2JqKSB7XG4gIHJldHVybiAoXG4gICAgLy8gbm90IG51bGwvZmFs
c2VcbiAgICAhIW9iaiAmJiAoXG4gICAgLy8gYXJyYXlzIGFyZSBvYmplY3RzLCBOb2RlTGlzdHMg
YXJlIGZ1bmN0aW9ucyBpbiBTYWZhcmlcbiAgICB0eXBlb2Ygb2JqID09ICdvYmplY3QnIHx8IHR5
cGVvZiBvYmogPT0gJ2Z1bmN0aW9uJykgJiZcbiAgICAvLyBxdWFja3MgbGlrZSBhbiBhcnJheVxu
ICAgICdsZW5ndGgnIGluIG9iaiAmJlxuICAgIC8vIG5vdCB3aW5kb3dcbiAgICAhKCdzZXRJbnRl
cnZhbCcgaW4gb2JqKSAmJlxuICAgIC8vIG5vIERPTSBub2RlIHNob3VsZCBiZSBjb25zaWRlcmVk
IGFuIGFycmF5LWxpa2VcbiAgICAvLyBhICdzZWxlY3QnIGVsZW1lbnQgaGFzICdsZW5ndGgnIGFu
ZCAnaXRlbScgcHJvcGVydGllcyBvbiBJRThcbiAgICB0eXBlb2Ygb2JqLm5vZGVUeXBlICE9ICdu
dW1iZXInICYmIChcbiAgICAvLyBhIHJlYWwgYXJyYXlcbiAgICBBcnJheS5pc0FycmF5KG9iaikg
fHxcbiAgICAvLyBhcmd1bWVudHNcbiAgICAnY2FsbGVlJyBpbiBvYmogfHxcbiAgICAvLyBIVE1M
Q29sbGVjdGlvbi9Ob2RlTGlzdFxuICAgICdpdGVtJyBpbiBvYmopXG4gICk7XG59XG5cbi8qKlxu
ICogRW5zdXJlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIGFuIGFycmF5IGJ5IHdyYXBwaW5nIGl0IGlu
IGFuIGFycmF5IGlmIGl0IGlzIG5vdC5cbiAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSBhcmd1bWVu
dCBpZiBpdCBpcyBhbHJlYWR5IGFuIGFycmF5LlxuICpcbiAqIFRoaXMgaXMgbW9zdGx5IHVzZWZ1
bCBpZGlvbWF0aWNhbGx5OlxuICpcbiAqICAgdmFyIGNyZWF0ZUFycmF5RnJvbU1peGVkID0gcmVx
dWlyZSgnY3JlYXRlQXJyYXlGcm9tTWl4ZWQnKTtcbiAqXG4gKiAgIGZ1bmN0aW9uIHRha2VzT25l
T3JNb3JlVGhpbmdzKHRoaW5ncykge1xuICogICAgIHRoaW5ncyA9IGNyZWF0ZUFycmF5RnJvbU1p
eGVkKHRoaW5ncyk7XG4gKiAgICAgLi4uXG4gKiAgIH1cbiAqXG4gKiBUaGlzIGFsbG93cyB5b3Ug
dG8gdHJlYXQgYHRoaW5ncycgYXMgYW4gYXJyYXksIGJ1dCBhY2NlcHQgc2NhbGFycyBpbiB0aGUg
QVBJLlxuICpcbiAqIElmIHlvdSBuZWVkIHRvIGNvbnZlcnQgYW4gYXJyYXktbGlrZSBvYmplY3Qs
IGxpa2UgYGFyZ3VtZW50c2AsIGludG8gYW4gYXJyYXlcbiAqIHVzZSB0b0FycmF5IGluc3RlYWQu
XG4gKlxuICogQHBhcmFtIHsqfSBvYmpcbiAqIEByZXR1cm4ge2FycmF5fVxuICovXG5mdW5jdGlv
biBjcmVhdGVBcnJheUZyb21NaXhlZChvYmopIHtcbiAgaWYgKCFoYXNBcnJheU5hdHVyZShvYmop
KSB7XG4gICAgcmV0dXJuIFtvYmpdO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkg
e1xuICAgIHJldHVybiBvYmouc2xpY2UoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdG9BcnJh
eShvYmopO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQXJyYXlGcm9tTWl4ZWQ7
XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21v
ZHVsZXMvZmJqcy9saWIvY3JlYXRlQXJyYXlGcm9tTWl4ZWQuanNcbi8vIG1vZHVsZSBpZCA9IDEz
NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ29weXJp
Z2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuLyplc2xpbnQtZGlzYWJsZSBmYi13d3cvdW5zYWZlLWh0
bWwgKi9cblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9FeGVjdXRpb25F
bnZpcm9ubWVudCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnLi9pbnZhcmlhbnQnKTtc
blxuLyoqXG4gKiBEdW1teSBjb250YWluZXIgdXNlZCB0byBkZXRlY3Qgd2hpY2ggd3JhcHMgYXJl
IG5lY2Vzc2FyeS5cbiAqL1xudmFyIGR1bW15Tm9kZSA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNh
blVzZURPTSA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIDogbnVsbDtcblxuLyoqXG4g
KiBTb21lIGJyb3dzZXJzIGNhbm5vdCB1c2UgYGlubmVySFRNTGAgdG8gcmVuZGVyIGNlcnRhaW4g
ZWxlbWVudHMgc3RhbmRhbG9uZSxcbiAqIHNvIHdlIHdyYXAgdGhlbSwgcmVuZGVyIHRoZSB3cmFw
cGVkIG5vZGVzLCB0aGVuIGV4dHJhY3QgdGhlIGRlc2lyZWQgbm9kZS5cbiAqXG4gKiBJbiBJRTgs
IGNlcnRhaW4gZWxlbWVudHMgY2Fubm90IHJlbmRlciBhbG9uZSwgc28gd3JhcCBhbGwgZWxlbWVu
dHMgKCcqJykuXG4gKi9cblxudmFyIHNob3VsZFdyYXAgPSB7fTtcblxudmFyIHNlbGVjdFdyYXAg
PSBbMSwgJzxzZWxlY3QgbXVsdGlwbGU9XCJ0cnVlXCI+JywgJzwvc2VsZWN0PiddO1xudmFyIHRh
YmxlV3JhcCA9IFsxLCAnPHRhYmxlPicsICc8L3RhYmxlPiddO1xudmFyIHRyV3JhcCA9IFszLCAn
PHRhYmxlPjx0Ym9keT48dHI+JywgJzwvdHI+PC90Ym9keT48L3RhYmxlPiddO1xuXG52YXIgc3Zn
V3JhcCA9IFsxLCAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+Jywg
Jzwvc3ZnPiddO1xuXG52YXIgbWFya3VwV3JhcCA9IHtcbiAgJyonOiBbMSwgJz88ZGl2PicsICc8
L2Rpdj4nXSxcblxuICAnYXJlYSc6IFsxLCAnPG1hcD4nLCAnPC9tYXA+J10sXG4gICdjb2wnOiBb
MiwgJzx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+JywgJzwvY29sZ3JvdXA+PC90YWJs
ZT4nXSxcbiAgJ2xlZ2VuZCc6IFsxLCAnPGZpZWxkc2V0PicsICc8L2ZpZWxkc2V0PiddLFxuICAn
cGFyYW0nOiBbMSwgJzxvYmplY3Q+JywgJzwvb2JqZWN0PiddLFxuICAndHInOiBbMiwgJzx0YWJs
ZT48dGJvZHk+JywgJzwvdGJvZHk+PC90YWJsZT4nXSxcblxuICAnb3B0Z3JvdXAnOiBzZWxlY3RX
cmFwLFxuICAnb3B0aW9uJzogc2VsZWN0V3JhcCxcblxuICAnY2FwdGlvbic6IHRhYmxlV3JhcCxc
biAgJ2NvbGdyb3VwJzogdGFibGVXcmFwLFxuICAndGJvZHknOiB0YWJsZVdyYXAsXG4gICd0Zm9v
dCc6IHRhYmxlV3JhcCxcbiAgJ3RoZWFkJzogdGFibGVXcmFwLFxuXG4gICd0ZCc6IHRyV3JhcCxc
biAgJ3RoJzogdHJXcmFwXG59O1xuXG4vLyBJbml0aWFsaXplIHRoZSBTVkcgZWxlbWVudHMgc2lu
Y2Ugd2Uga25vdyB0aGV5J2xsIGFsd2F5cyBuZWVkIHRvIGJlIHdyYXBwZWRcbi8vIGNvbnNpc3Rl
bnRseS4gSWYgdGhleSBhcmUgY3JlYXRlZCBpbnNpZGUgYSA8ZGl2PiB0aGV5IHdpbGwgYmUgaW5p
dGlhbGl6ZWQgaW5cbi8vIHRoZSB3cm9uZyBuYW1lc3BhY2UgKGFuZCB3aWxsIG5vdCBkaXNwbGF5
KS5cbnZhciBzdmdFbGVtZW50cyA9IFsnY2lyY2xlJywgJ2NsaXBQYXRoJywgJ2RlZnMnLCAnZWxs
aXBzZScsICdnJywgJ2ltYWdlJywgJ2xpbmUnLCAnbGluZWFyR3JhZGllbnQnLCAnbWFzaycsICdw
YXRoJywgJ3BhdHRlcm4nLCAncG9seWdvbicsICdwb2x5bGluZScsICdyYWRpYWxHcmFkaWVudCcs
ICdyZWN0JywgJ3N0b3AnLCAndGV4dCcsICd0c3BhbiddO1xuc3ZnRWxlbWVudHMuZm9yRWFjaChm
dW5jdGlvbiAobm9kZU5hbWUpIHtcbiAgbWFya3VwV3JhcFtub2RlTmFtZV0gPSBzdmdXcmFwO1xu
ICBzaG91bGRXcmFwW25vZGVOYW1lXSA9IHRydWU7XG59KTtcblxuLyoqXG4gKiBHZXRzIHRoZSBt
YXJrdXAgd3JhcCBjb25maWd1cmF0aW9uIGZvciB0aGUgc3VwcGxpZWQgYG5vZGVOYW1lYC5cbiAq
XG4gKiBOT1RFOiBUaGlzIGxhemlseSBkZXRlY3RzIHdoaWNoIHdyYXBzIGFyZSBuZWNlc3Nhcnkg
Zm9yIHRoZSBjdXJyZW50IGJyb3dzZXIuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5vZGVOYW1l
IExvd2VyY2FzZSBgbm9kZU5hbWVgLlxuICogQHJldHVybiB7P2FycmF5fSBNYXJrdXAgd3JhcCBj
b25maWd1cmF0aW9uLCBpZiBhcHBsaWNhYmxlLlxuICovXG5mdW5jdGlvbiBnZXRNYXJrdXBXcmFw
KG5vZGVOYW1lKSB7XG4gICEhIWR1bW15Tm9kZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdNYXJrdXAgd3JhcHBpbmcgbm9kZSBub3Qg
aW5pdGlhbGl6ZWQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIGlmICghbWFya3Vw
V3JhcC5oYXNPd25Qcm9wZXJ0eShub2RlTmFtZSkpIHtcbiAgICBub2RlTmFtZSA9ICcqJztcbiAg
fVxuICBpZiAoIXNob3VsZFdyYXAuaGFzT3duUHJvcGVydHkobm9kZU5hbWUpKSB7XG4gICAgaWYg
KG5vZGVOYW1lID09PSAnKicpIHtcbiAgICAgIGR1bW15Tm9kZS5pbm5lckhUTUwgPSAnPGxpbmsg
Lz4nO1xuICAgIH0gZWxzZSB7XG4gICAgICBkdW1teU5vZGUuaW5uZXJIVE1MID0gJzwnICsgbm9k
ZU5hbWUgKyAnPjwvJyArIG5vZGVOYW1lICsgJz4nO1xuICAgIH1cbiAgICBzaG91bGRXcmFwW25v
ZGVOYW1lXSA9ICFkdW1teU5vZGUuZmlyc3RDaGlsZDtcbiAgfVxuICByZXR1cm4gc2hvdWxkV3Jh
cFtub2RlTmFtZV0gPyBtYXJrdXBXcmFwW25vZGVOYW1lXSA6IG51bGw7XG59XG5cbm1vZHVsZS5l
eHBvcnRzID0gZ2V0TWFya3VwV3JhcDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBB
Q0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9mYmpzL2xpYi9nZXRNYXJrdXBXcmFwLmpzXG4v
LyBtb2R1bGUgaWQgPSAxMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERPTUNoaWxkcmVuT3BlcmF0
aW9ucyA9IHJlcXVpcmUoJy4vRE9NQ2hpbGRyZW5PcGVyYXRpb25zJyk7XG52YXIgUmVhY3RET01D
b21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcblxuLyoq
XG4gKiBPcGVyYXRpb25zIHVzZWQgdG8gcHJvY2VzcyB1cGRhdGVzIHRvIERPTSBub2Rlcy5cbiAq
L1xudmFyIFJlYWN0RE9NSURPcGVyYXRpb25zID0ge1xuICAvKipcbiAgICogVXBkYXRlcyBhIGNv
bXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJpZXMgb2YgdXBkYXRlcy5cbiAg
ICpcbiAgICogQHBhcmFtIHthcnJheTxvYmplY3Q+fSB1cGRhdGVzIExpc3Qgb2YgdXBkYXRlIGNv
bmZpZ3VyYXRpb25zLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGRhbmdlcm91c2x5UHJvY2Vz
c0NoaWxkcmVuVXBkYXRlczogZnVuY3Rpb24gKHBhcmVudEluc3QsIHVwZGF0ZXMpIHtcbiAgICB2
YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHBhcmVu
dEluc3QpO1xuICAgIERPTUNoaWxkcmVuT3BlcmF0aW9ucy5wcm9jZXNzVXBkYXRlcyhub2RlLCB1
cGRhdGVzKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUlET3BlcmF0aW9u
cztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NSURPcGVyYXRpb25zLmpzXG4vLyBtb2R1bGUg
aWQgPSAxMzdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cbi8qIGdsb2JhbCBoYXNPd25Qcm9wZXJ0eTp0cnVlICovXG5cbid1c2Ugc3RyaWN0
JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQn
KSxcbiAgICBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgQXV0b0Zv
Y3VzVXRpbHMgPSByZXF1aXJlKCcuL0F1dG9Gb2N1c1V0aWxzJyk7XG52YXIgQ1NTUHJvcGVydHlP
cGVyYXRpb25zID0gcmVxdWlyZSgnLi9DU1NQcm9wZXJ0eU9wZXJhdGlvbnMnKTtcbnZhciBET01M
YXp5VHJlZSA9IHJlcXVpcmUoJy4vRE9NTGF6eVRyZWUnKTtcbnZhciBET01OYW1lc3BhY2VzID0g
cmVxdWlyZSgnLi9ET01OYW1lc3BhY2VzJyk7XG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcu
L0RPTVByb3BlcnR5Jyk7XG52YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0gcmVxdWlyZSgnLi9E
T01Qcm9wZXJ0eU9wZXJhdGlvbnMnKTtcbnZhciBFdmVudFBsdWdpbkh1YiA9IHJlcXVpcmUoJy4v
RXZlbnRQbHVnaW5IdWInKTtcbnZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0gcmVxdWlyZSgnLi9F
dmVudFBsdWdpblJlZ2lzdHJ5Jyk7XG52YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gcmVx
dWlyZSgnLi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXInKTtcbnZhciBSZWFjdERPTUNvbXBvbmVu
dEZsYWdzID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudEZsYWdzJyk7XG52YXIgUmVhY3RE
T01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZh
ciBSZWFjdERPTUlucHV0ID0gcmVxdWlyZSgnLi9SZWFjdERPTUlucHV0Jyk7XG52YXIgUmVhY3RE
T01PcHRpb24gPSByZXF1aXJlKCcuL1JlYWN0RE9NT3B0aW9uJyk7XG52YXIgUmVhY3RET01TZWxl
Y3QgPSByZXF1aXJlKCcuL1JlYWN0RE9NU2VsZWN0Jyk7XG52YXIgUmVhY3RET01UZXh0YXJlYSA9
IHJlcXVpcmUoJy4vUmVhY3RET01UZXh0YXJlYScpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9u
ID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1lbnRhdGlvbicpO1xudmFyIFJlYWN0TXVsdGlDaGls
ZCA9IHJlcXVpcmUoJy4vUmVhY3RNdWx0aUNoaWxkJyk7XG52YXIgUmVhY3RTZXJ2ZXJSZW5kZXJp
bmdUcmFuc2FjdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlv
bicpO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rp
b24nKTtcbnZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSByZXF1aXJlKCcuL2VzY2Fw
ZVRleHRDb250ZW50Rm9yQnJvd3NlcicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMv
bGliL2ludmFyaWFudCcpO1xudmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSByZXF1aXJlKCcuL2lzRXZl
bnRTdXBwb3J0ZWQnKTtcbnZhciBzaGFsbG93RXF1YWwgPSByZXF1aXJlKCdmYmpzL2xpYi9zaGFs
bG93RXF1YWwnKTtcbnZhciBpbnB1dFZhbHVlVHJhY2tpbmcgPSByZXF1aXJlKCcuL2lucHV0VmFs
dWVUcmFja2luZycpO1xudmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IHJlcXVpcmUoJy4vdmFsaWRh
dGVET01OZXN0aW5nJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcn
KTtcblxudmFyIEZsYWdzID0gUmVhY3RET01Db21wb25lbnRGbGFncztcbnZhciBkZWxldGVMaXN0
ZW5lciA9IEV2ZW50UGx1Z2luSHViLmRlbGV0ZUxpc3RlbmVyO1xudmFyIGdldE5vZGUgPSBSZWFj
dERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZTtcbnZhciBsaXN0ZW5UbyA9IFJl
YWN0QnJvd3NlckV2ZW50RW1pdHRlci5saXN0ZW5UbztcbnZhciByZWdpc3RyYXRpb25OYW1lTW9k
dWxlcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM7XG5cbi8v
IEZvciBxdWlja2x5IG1hdGNoaW5nIGNoaWxkcmVuIHR5cGUsIHRvIHRlc3QgaWYgY2FuIGJlIHRy
ZWF0ZWQgYXMgY29udGVudC5cbnZhciBDT05URU5UX1RZUEVTID0geyBzdHJpbmc6IHRydWUsIG51
bWJlcjogdHJ1ZSB9O1xuXG52YXIgU1RZTEUgPSAnc3R5bGUnO1xudmFyIEhUTUwgPSAnX19odG1s
JztcbnZhciBSRVNFUlZFRF9QUk9QUyA9IHtcbiAgY2hpbGRyZW46IG51bGwsXG4gIGRhbmdlcm91
c2x5U2V0SW5uZXJIVE1MOiBudWxsLFxuICBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmc6
IG51bGxcbn07XG5cbi8vIE5vZGUgdHlwZSBmb3IgZG9jdW1lbnQgZnJhZ21lbnRzIChOb2RlLkRP
Q1VNRU5UX0ZSQUdNRU5UX05PREUpLlxudmFyIERPQ19GUkFHTUVOVF9UWVBFID0gMTE7XG5cbmZ1
bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShpbnRlcm5hbEluc3RhbmNlKSB7XG4g
IGlmIChpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgdmFyIG93bmVyID0gaW50ZXJuYWxJbnN0YW5j
ZS5fY3VycmVudEVsZW1lbnQuX293bmVyIHx8IG51bGw7XG4gICAgaWYgKG93bmVyKSB7XG4gICAg
ICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICAgIGlmIChuYW1lKSB7XG4gICAgICAg
IHJldHVybiAnIFRoaXMgRE9NIG5vZGUgd2FzIHJlbmRlcmVkIGJ5IGAnICsgbmFtZSArICdgLic7
XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gZnJpZW5k
bHlTdHJpbmdpZnkob2JqKSB7XG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuICAg
IGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgIHJldHVybiAnWycgKyBvYmoubWFwKGZy
aWVuZGx5U3RyaW5naWZ5KS5qb2luKCcsICcpICsgJ10nO1xuICAgIH0gZWxzZSB7XG4gICAgICB2
YXIgcGFpcnMgPSBbXTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgICAgaWYg
KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAg
ICAgICB2YXIga2V5RXNjYXBlZCA9IC9eW2EteiRfXVtcXHckX10qJC9pLnRlc3Qoa2V5KSA/IGtl
eSA6IEpTT04uc3RyaW5naWZ5KGtleSk7XG4gICAgICAgICAgcGFpcnMucHVzaChrZXlFc2NhcGVk
ICsgJzogJyArIGZyaWVuZGx5U3RyaW5naWZ5KG9ialtrZXldKSk7XG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICAgIHJldHVybiAneycgKyBwYWlycy5qb2luKCcsICcpICsgJ30nO1xuICAgIH1cbiAg
fSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBKU09OLnN0
cmluZ2lmeShvYmopO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpIHtc
biAgICByZXR1cm4gJ1tmdW5jdGlvbiBvYmplY3RdJztcbiAgfVxuICAvLyBEaWZmZXJzIGZyb20g
SlNPTi5zdHJpbmdpZnkgaW4gdGhhdCB1bmRlZmluZWQgYmVjYXVzZSB1bmRlZmluZWQgYW5kIHRo
YXRcbiAgLy8gaW5mIGFuZCBuYW4gZG9uJ3QgYmVjb21lIG51bGxcbiAgcmV0dXJuIFN0cmluZyhv
YmopO1xufVxuXG52YXIgc3R5bGVNdXRhdGlvbldhcm5pbmcgPSB7fTtcblxuZnVuY3Rpb24gY2hl
Y2tBbmRXYXJuRm9yTXV0YXRlZFN0eWxlKHN0eWxlMSwgc3R5bGUyLCBjb21wb25lbnQpIHtcbiAg
aWYgKHN0eWxlMSA9PSBudWxsIHx8IHN0eWxlMiA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9
XG4gIGlmIChzaGFsbG93RXF1YWwoc3R5bGUxLCBzdHlsZTIpKSB7XG4gICAgcmV0dXJuO1xuICB9
XG5cbiAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQuX3RhZztcbiAgdmFyIG93bmVyID0g
Y29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG4gIHZhciBvd25lck5hbWU7XG4gIGlm
IChvd25lcikge1xuICAgIG93bmVyTmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgfVxuXG4gIHZh
ciBoYXNoID0gb3duZXJOYW1lICsgJ3wnICsgY29tcG9uZW50TmFtZTtcblxuICBpZiAoc3R5bGVN
dXRhdGlvbldhcm5pbmcuaGFzT3duUHJvcGVydHkoaGFzaCkpIHtcbiAgICByZXR1cm47XG4gIH1c
blxuICBzdHlsZU11dGF0aW9uV2FybmluZ1toYXNoXSA9IHRydWU7XG5cbiAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgJXNgIHdhcyBwYXNz
ZWQgYSBzdHlsZSBvYmplY3QgdGhhdCBoYXMgcHJldmlvdXNseSBiZWVuIG11dGF0ZWQuICcgKyAn
TXV0YXRpbmcgYHN0eWxlYCBpcyBkZXByZWNhdGVkLiBDb25zaWRlciBjbG9uaW5nIGl0IGJlZm9y
ZWhhbmQuIENoZWNrICcgKyAndGhlIGByZW5kZXJgICVzLiBQcmV2aW91cyBzdHlsZTogJXMuIE11
dGF0ZWQgc3R5bGU6ICVzLicsIGNvbXBvbmVudE5hbWUsIG93bmVyID8gJ29mIGAnICsgb3duZXJO
YW1lICsgJ2AnIDogJ3VzaW5nIDwnICsgY29tcG9uZW50TmFtZSArICc+JywgZnJpZW5kbHlTdHJp
bmdpZnkoc3R5bGUxKSwgZnJpZW5kbHlTdHJpbmdpZnkoc3R5bGUyKSkgOiB2b2lkIDA7XG59XG5c
bi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudFxuICogQHBhcmFtIHs/b2JqZWN0fSBw
cm9wc1xuICovXG5mdW5jdGlvbiBhc3NlcnRWYWxpZFByb3BzKGNvbXBvbmVudCwgcHJvcHMpIHtc
biAgaWYgKCFwcm9wcykge1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBOb3RlIHRoZSB1c2Ugb2Yg
YD09YCB3aGljaCBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkLlxuICBpZiAodm9pZEVsZW1l
bnRUYWdzW2NvbXBvbmVudC5fdGFnXSkge1xuICAgICEocHJvcHMuY2hpbGRyZW4gPT0gbnVsbCAm
JiBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcyBpcyBhIHZvaWQg
ZWxlbWVudCB0YWcgYW5kIG11c3QgbmVpdGhlciBoYXZlIGBjaGlsZHJlbmAgbm9yIHVzZSBgZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUxgLiVzJywgY29tcG9uZW50Ll90YWcsIGNvbXBvbmVudC5fY3Vy
cmVudEVsZW1lbnQuX293bmVyID8gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAnICsgY29t
cG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpICsgJy4nIDogJycpIDogX3By
b2RJbnZhcmlhbnQoJzEzNycsIGNvbXBvbmVudC5fdGFnLCBjb21wb25lbnQuX2N1cnJlbnRFbGVt
ZW50Ll9vd25lciA/ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgJyArIGNvbXBvbmVudC5f
Y3VycmVudEVsZW1lbnQuX293bmVyLmdldE5hbWUoKSArICcuJyA6ICcnKSA6IHZvaWQgMDtcbiAg
fVxuICBpZiAocHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgIT0gbnVsbCkge1xuICAgICEo
cHJvcHMuY2hpbGRyZW4gPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2FuIG9ubHkgc2V0IG9uZSBvZiBgY2hpbGRyZW5g
IG9yIGBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAuJykgOiBfcHJvZEludmFyaWFudCgn
NjAnKSA6IHZvaWQgMDtcbiAgICAhKHR5cGVvZiBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRN
TCA9PT0gJ29iamVjdCcgJiYgSFRNTCBpbiBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCkg
PyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBtdXN0IGJlIGluIHRoZSBmb3JtIGB7
X19odG1sOiAuLi59YC4gUGxlYXNlIHZpc2l0IGh0dHBzOi8vZmIubWUvcmVhY3QtaW52YXJpYW50
LWRhbmdlcm91c2x5LXNldC1pbm5lci1odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLicpIDogX3By
b2RJbnZhcmlhbnQoJzYxJykgOiB2b2lkIDA7XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhwcm9wcy5pbm5lckhUTUwgPT0gbnVsbCwgJ0RpcmVjdGx5IHNl
dHRpbmcgcHJvcGVydHkgYGlubmVySFRNTGAgaXMgbm90IHBlcm1pdHRlZC4gJyArICdGb3IgbW9y
ZSBpbmZvcm1hdGlvbiwgbG9va3VwIGRvY3VtZW50YXRpb24gb24gYGRhbmdlcm91c2x5U2V0SW5u
ZXJIVE1MYC4nKSA6IHZvaWQgMDtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhwcm9wcy5zdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgfHwg
IXByb3BzLmNvbnRlbnRFZGl0YWJsZSB8fCBwcm9wcy5jaGlsZHJlbiA9PSBudWxsLCAnQSBjb21w
b25lbnQgaXMgYGNvbnRlbnRFZGl0YWJsZWAgYW5kIGNvbnRhaW5zIGBjaGlsZHJlbmAgbWFuYWdl
ZCBieSAnICsgJ1JlYWN0LiBJdCBpcyBub3cgeW91ciByZXNwb25zaWJpbGl0eSB0byBndWFyYW50
ZWUgdGhhdCBub25lIG9mICcgKyAndGhvc2Ugbm9kZXMgYXJlIHVuZXhwZWN0ZWRseSBtb2RpZmll
ZCBvciBkdXBsaWNhdGVkLiBUaGlzIGlzICcgKyAncHJvYmFibHkgbm90IGludGVudGlvbmFsLicp
IDogdm9pZCAwO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKHByb3BzLm9uRm9jdXNJbiA9PSBudWxsICYmIHByb3BzLm9uRm9jdXNPdXQgPT0gbnVs
bCwgJ1JlYWN0IHVzZXMgb25Gb2N1cyBhbmQgb25CbHVyIGluc3RlYWQgb2Ygb25Gb2N1c0luIGFu
ZCBvbkZvY3VzT3V0LiAnICsgJ0FsbCBSZWFjdCBldmVudHMgYXJlIG5vcm1hbGl6ZWQgdG8gYnVi
YmxlLCBzbyBvbkZvY3VzSW4gYW5kIG9uRm9jdXNPdXQgJyArICdhcmUgbm90IG5lZWRlZC9zdXBw
b3J0ZWQgYnkgUmVhY3QuJykgOiB2b2lkIDA7XG4gIH1cbiAgIShwcm9wcy5zdHlsZSA9PSBudWxs
IHx8IHR5cGVvZiBwcm9wcy5zdHlsZSA9PT0gJ29iamVjdCcpID8gcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1RoZSBgc3R5bGVgIHByb3Ag
ZXhwZWN0cyBhIG1hcHBpbmcgZnJvbSBzdHlsZSBwcm9wZXJ0aWVzIHRvIHZhbHVlcywgbm90IGEg
c3RyaW5nLiBGb3IgZXhhbXBsZSwgc3R5bGU9e3ttYXJnaW5SaWdodDogc3BhY2luZyArIFxcJ2Vt
XFwnfX0gd2hlbiB1c2luZyBKU1guJXMnLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29t
cG9uZW50KSkgOiBfcHJvZEludmFyaWFudCgnNjInLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5k
dW0oY29tcG9uZW50KSkgOiB2b2lkIDA7XG59XG5cbmZ1bmN0aW9uIGVucXVldWVQdXRMaXN0ZW5l
cihpbnN0LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lciwgdHJhbnNhY3Rpb24pIHtcbiAgaWYg
KHRyYW5zYWN0aW9uIGluc3RhbmNlb2YgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbikg
e1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgIC8vIElFOCBoYXMgbm8gQVBJIGZvciBldmVudCBjYXB0dXJpbmcgYW5k
IHRoZSBgb25TY3JvbGxgIGV2ZW50IGRvZXNuJ3RcbiAgICAvLyBidWJibGUuXG4gICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocmVnaXN0cmF0aW9uTmFt
ZSAhPT0gJ29uU2Nyb2xsJyB8fCBpc0V2ZW50U3VwcG9ydGVkKCdzY3JvbGwnLCB0cnVlKSwgXCJU
aGlzIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IHRoZSBgb25TY3JvbGxgIGV2ZW50XCIpIDogdm9p
ZCAwO1xuICB9XG4gIHZhciBjb250YWluZXJJbmZvID0gaW5zdC5faG9zdENvbnRhaW5lckluZm87
XG4gIHZhciBpc0RvY3VtZW50RnJhZ21lbnQgPSBjb250YWluZXJJbmZvLl9ub2RlICYmIGNvbnRh
aW5lckluZm8uX25vZGUubm9kZVR5cGUgPT09IERPQ19GUkFHTUVOVF9UWVBFO1xuICB2YXIgZG9j
ID0gaXNEb2N1bWVudEZyYWdtZW50ID8gY29udGFpbmVySW5mby5fbm9kZSA6IGNvbnRhaW5lcklu
Zm8uX293bmVyRG9jdW1lbnQ7XG4gIGxpc3RlblRvKHJlZ2lzdHJhdGlvbk5hbWUsIGRvYyk7XG4g
IHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocHV0TGlzdGVuZXIsIHtc
biAgICBpbnN0OiBpbnN0LFxuICAgIHJlZ2lzdHJhdGlvbk5hbWU6IHJlZ2lzdHJhdGlvbk5hbWUs
XG4gICAgbGlzdGVuZXI6IGxpc3RlbmVyXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwdXRMaXN0ZW5l
cigpIHtcbiAgdmFyIGxpc3RlbmVyVG9QdXQgPSB0aGlzO1xuICBFdmVudFBsdWdpbkh1Yi5wdXRM
aXN0ZW5lcihsaXN0ZW5lclRvUHV0Lmluc3QsIGxpc3RlbmVyVG9QdXQucmVnaXN0cmF0aW9uTmFt
ZSwgbGlzdGVuZXJUb1B1dC5saXN0ZW5lcik7XG59XG5cbmZ1bmN0aW9uIGlucHV0UG9zdE1vdW50
KCkge1xuICB2YXIgaW5zdCA9IHRoaXM7XG4gIFJlYWN0RE9NSW5wdXQucG9zdE1vdW50V3JhcHBl
cihpbnN0KTtcbn1cblxuZnVuY3Rpb24gdGV4dGFyZWFQb3N0TW91bnQoKSB7XG4gIHZhciBpbnN0
ID0gdGhpcztcbiAgUmVhY3RET01UZXh0YXJlYS5wb3N0TW91bnRXcmFwcGVyKGluc3QpO1xufVxu
XG5mdW5jdGlvbiBvcHRpb25Qb3N0TW91bnQoKSB7XG4gIHZhciBpbnN0ID0gdGhpcztcbiAgUmVh
Y3RET01PcHRpb24ucG9zdE1vdW50V3JhcHBlcihpbnN0KTtcbn1cblxudmFyIHNldEFuZFZhbGlk
YXRlQ29udGVudENoaWxkRGV2ID0gZW1wdHlGdW5jdGlvbjtcbmlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2
ID0gZnVuY3Rpb24gKGNvbnRlbnQpIHtcbiAgICB2YXIgaGFzRXhpc3RpbmdDb250ZW50ID0gdGhp
cy5fY29udGVudERlYnVnSUQgIT0gbnVsbDtcbiAgICB2YXIgZGVidWdJRCA9IHRoaXMuX2RlYnVn
SUQ7XG4gICAgLy8gVGhpcyBJRCByZXByZXNlbnRzIHRoZSBpbmxpbmVkIGNoaWxkIHRoYXQgaGFz
IG5vIGJhY2tpbmcgaW5zdGFuY2U6XG4gICAgdmFyIGNvbnRlbnREZWJ1Z0lEID0gLWRlYnVnSUQ7
XG5cbiAgICBpZiAoY29udGVudCA9PSBudWxsKSB7XG4gICAgICBpZiAoaGFzRXhpc3RpbmdDb250
ZW50KSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVubW91bnRD
b21wb25lbnQodGhpcy5fY29udGVudERlYnVnSUQpO1xuICAgICAgfVxuICAgICAgdGhpcy5fY29u
dGVudERlYnVnSUQgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhbGlkYXRl
RE9NTmVzdGluZyhudWxsLCBTdHJpbmcoY29udGVudCksIHRoaXMsIHRoaXMuX2FuY2VzdG9ySW5m
byk7XG4gICAgdGhpcy5fY29udGVudERlYnVnSUQgPSBjb250ZW50RGVidWdJRDtcbiAgICBpZiAo
aGFzRXhpc3RpbmdDb250ZW50KSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25CZWZvcmVVcGRhdGVDb21wb25lbnQoY29udGVudERlYnVnSUQsIGNvbnRlbnQpO1xuICAg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVXBkYXRlQ29tcG9uZW50KGNvbnRl
bnREZWJ1Z0lEKTtcbiAgICB9IGVsc2Uge1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVi
dWdUb29sLm9uQmVmb3JlTW91bnRDb21wb25lbnQoY29udGVudERlYnVnSUQsIGNvbnRlbnQsIGRl
YnVnSUQpO1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uTW91bnRDb21w
b25lbnQoY29udGVudERlYnVnSUQpO1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uU2V0Q2hpbGRyZW4oZGVidWdJRCwgW2NvbnRlbnREZWJ1Z0lEXSk7XG4gICAgfVxuICB9
O1xufVxuXG4vLyBUaGVyZSBhcmUgc28gbWFueSBtZWRpYSBldmVudHMsIGl0IG1ha2VzIHNlbnNl
IHRvIGp1c3Rcbi8vIG1haW50YWluIGEgbGlzdCByYXRoZXIgdGhhbiBjcmVhdGUgYSBgdHJhcEJ1
YmJsZWRFdmVudGAgZm9yIGVhY2hcbnZhciBtZWRpYUV2ZW50cyA9IHtcbiAgdG9wQWJvcnQ6ICdh
Ym9ydCcsXG4gIHRvcENhblBsYXk6ICdjYW5wbGF5JyxcbiAgdG9wQ2FuUGxheVRocm91Z2g6ICdj
YW5wbGF5dGhyb3VnaCcsXG4gIHRvcER1cmF0aW9uQ2hhbmdlOiAnZHVyYXRpb25jaGFuZ2UnLFxu
ICB0b3BFbXB0aWVkOiAnZW1wdGllZCcsXG4gIHRvcEVuY3J5cHRlZDogJ2VuY3J5cHRlZCcsXG4g
IHRvcEVuZGVkOiAnZW5kZWQnLFxuICB0b3BFcnJvcjogJ2Vycm9yJyxcbiAgdG9wTG9hZGVkRGF0
YTogJ2xvYWRlZGRhdGEnLFxuICB0b3BMb2FkZWRNZXRhZGF0YTogJ2xvYWRlZG1ldGFkYXRhJyxc
biAgdG9wTG9hZFN0YXJ0OiAnbG9hZHN0YXJ0JyxcbiAgdG9wUGF1c2U6ICdwYXVzZScsXG4gIHRv
cFBsYXk6ICdwbGF5JyxcbiAgdG9wUGxheWluZzogJ3BsYXlpbmcnLFxuICB0b3BQcm9ncmVzczog
J3Byb2dyZXNzJyxcbiAgdG9wUmF0ZUNoYW5nZTogJ3JhdGVjaGFuZ2UnLFxuICB0b3BTZWVrZWQ6
ICdzZWVrZWQnLFxuICB0b3BTZWVraW5nOiAnc2Vla2luZycsXG4gIHRvcFN0YWxsZWQ6ICdzdGFs
bGVkJyxcbiAgdG9wU3VzcGVuZDogJ3N1c3BlbmQnLFxuICB0b3BUaW1lVXBkYXRlOiAndGltZXVw
ZGF0ZScsXG4gIHRvcFZvbHVtZUNoYW5nZTogJ3ZvbHVtZWNoYW5nZScsXG4gIHRvcFdhaXRpbmc6
ICd3YWl0aW5nJ1xufTtcblxuZnVuY3Rpb24gdHJhY2tJbnB1dFZhbHVlKCkge1xuICBpbnB1dFZh
bHVlVHJhY2tpbmcudHJhY2sodGhpcyk7XG59XG5cbmZ1bmN0aW9uIHRyYXBCdWJibGVkRXZlbnRz
TG9jYWwoKSB7XG4gIHZhciBpbnN0ID0gdGhpcztcbiAgLy8gSWYgYSBjb21wb25lbnQgcmVuZGVy
cyB0byBudWxsIG9yIGlmIGFub3RoZXIgY29tcG9uZW50IGZhdGFscyBhbmQgY2F1c2VzXG4gIC8v
IHRoZSBzdGF0ZSBvZiB0aGUgdHJlZSB0byBiZSBjb3JydXB0ZWQsIGBub2RlYCBoZXJlIGNhbiBi
ZSBudWxsLlxuICAhaW5zdC5fcm9vdE5vZGVJRCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdNdXN0IGJlIG1vdW50ZWQgdG8gdHJhcCBl
dmVudHMnKSA6IF9wcm9kSW52YXJpYW50KCc2MycpIDogdm9pZCAwO1xuICB2YXIgbm9kZSA9IGdl
dE5vZGUoaW5zdCk7XG4gICFub2RlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RyYXBCdWJibGVkRXZlbnQoLi4uKTogUmVxdWlyZXMg
bm9kZSB0byBiZSByZW5kZXJlZC4nKSA6IF9wcm9kSW52YXJpYW50KCc2NCcpIDogdm9pZCAwO1xu
XG4gIHN3aXRjaCAoaW5zdC5fdGFnKSB7XG4gICAgY2FzZSAnaWZyYW1lJzpcbiAgICBjYXNlICdv
YmplY3QnOlxuICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtSZWFjdEJyb3dz
ZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wTG9hZCcsICdsb2FkJywgbm9kZSld
O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndmlkZW8nOlxuICAgIGNhc2UgJ2F1ZGlvJzpcbiAg
ICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbXTtcbiAgICAgIC8vIENyZWF0ZSBs
aXN0ZW5lciBmb3IgZWFjaCBtZWRpYSBldmVudFxuICAgICAgZm9yICh2YXIgZXZlbnQgaW4gbWVk
aWFFdmVudHMpIHtcbiAgICAgICAgaWYgKG1lZGlhRXZlbnRzLmhhc093blByb3BlcnR5KGV2ZW50
KSkge1xuICAgICAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMucHVzaChSZWFjdEJy
b3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudChldmVudCwgbWVkaWFFdmVudHNbZXZl
bnRdLCBub2RlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2Ug
J3NvdXJjZSc6XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJv
d3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BFcnJvcicsICdlcnJvcicsIG5v
ZGUpXTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ltZyc6XG4gICAgICBpbnN0Ll93cmFwcGVy
U3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2
ZW50KCd0b3BFcnJvcicsICdlcnJvcicsIG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIu
dHJhcEJ1YmJsZWRFdmVudCgndG9wTG9hZCcsICdsb2FkJywgbm9kZSldO1xuICAgICAgYnJlYWs7
XG4gICAgY2FzZSAnZm9ybSc6XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0g
W1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BSZXNldCcsICdy
ZXNldCcsIG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgn
dG9wU3VibWl0JywgJ3N1Ym1pdCcsIG5vZGUpXTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2lu
cHV0JzpcbiAgICBjYXNlICdzZWxlY3QnOlxuICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAgIGlu
c3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRy
YXBCdWJibGVkRXZlbnQoJ3RvcEludmFsaWQnLCAnaW52YWxpZCcsIG5vZGUpXTtcbiAgICAgIGJy
ZWFrO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBvc3RVcGRhdGVTZWxlY3RXcmFwcGVyKCkge1xuICBS
ZWFjdERPTVNlbGVjdC5wb3N0VXBkYXRlV3JhcHBlcih0aGlzKTtcbn1cblxuLy8gRm9yIEhUTUws
IGNlcnRhaW4gdGFncyBzaG91bGQgb21pdCB0aGVpciBjbG9zZSB0YWcuIFdlIGtlZXAgYSB3aGl0
ZWxpc3QgZm9yXG4vLyB0aG9zZSBzcGVjaWFsLWNhc2UgdGFncy5cblxudmFyIG9taXR0ZWRDbG9z
ZVRhZ3MgPSB7XG4gIGFyZWE6IHRydWUsXG4gIGJhc2U6IHRydWUsXG4gIGJyOiB0cnVlLFxuICBj
b2w6IHRydWUsXG4gIGVtYmVkOiB0cnVlLFxuICBocjogdHJ1ZSxcbiAgaW1nOiB0cnVlLFxuICBp
bnB1dDogdHJ1ZSxcbiAga2V5Z2VuOiB0cnVlLFxuICBsaW5rOiB0cnVlLFxuICBtZXRhOiB0cnVl
LFxuICBwYXJhbTogdHJ1ZSxcbiAgc291cmNlOiB0cnVlLFxuICB0cmFjazogdHJ1ZSxcbiAgd2Jy
OiB0cnVlXG4gIC8vIE5PVEU6IG1lbnVpdGVtJ3MgY2xvc2UgdGFnIHNob3VsZCBiZSBvbWl0dGVk
LCBidXQgdGhhdCBjYXVzZXMgcHJvYmxlbXMuXG59O1xuXG52YXIgbmV3bGluZUVhdGluZ1RhZ3Mg
PSB7XG4gIGxpc3Rpbmc6IHRydWUsXG4gIHByZTogdHJ1ZSxcbiAgdGV4dGFyZWE6IHRydWVcbn07
XG5cbi8vIEZvciBIVE1MLCBjZXJ0YWluIHRhZ3MgY2Fubm90IGhhdmUgY2hpbGRyZW4uIFRoaXMg
aGFzIHRoZSBzYW1lIHB1cnBvc2UgYXNcbi8vIGBvbWl0dGVkQ2xvc2VUYWdzYCBleGNlcHQgdGhh
dCBgbWVudWl0ZW1gIHNob3VsZCBzdGlsbCBoYXZlIGl0cyBjbG9zaW5nIHRhZy5cblxudmFyIHZv
aWRFbGVtZW50VGFncyA9IF9hc3NpZ24oe1xuICBtZW51aXRlbTogdHJ1ZVxufSwgb21pdHRlZENs
b3NlVGFncyk7XG5cbi8vIFdlIGFjY2VwdCBhbnkgdGFnIHRvIGJlIHJlbmRlcmVkIGJ1dCBzaW5j
ZSB0aGlzIGdldHMgaW5qZWN0ZWQgaW50byBhcmJpdHJhcnlcbi8vIEhUTUwsIHdlIHdhbnQgdG8g
bWFrZSBzdXJlIHRoYXQgaXQncyBhIHNhZmUgdGFnLlxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIv
UkVDLXhtbC8jTlQtTmFtZVxuXG52YXIgVkFMSURfVEFHX1JFR0VYID0gL15bYS16QS1aXVthLXpB
LVo6X1xcLlxcLVxcZF0qJC87IC8vIFNpbXBsaWZpZWQgc3Vic2V0XG52YXIgdmFsaWRhdGVkVGFn
Q2FjaGUgPSB7fTtcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5m
dW5jdGlvbiB2YWxpZGF0ZURhbmdlcm91c1RhZyh0YWcpIHtcbiAgaWYgKCFoYXNPd25Qcm9wZXJ0
eS5jYWxsKHZhbGlkYXRlZFRhZ0NhY2hlLCB0YWcpKSB7XG4gICAgIVZBTElEX1RBR19SRUdFWC50
ZXN0KHRhZykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnSW52YWxpZCB0YWc6ICVzJywgdGFnKSA6IF9wcm9kSW52YXJpYW50KCc2NScs
IHRhZykgOiB2b2lkIDA7XG4gICAgdmFsaWRhdGVkVGFnQ2FjaGVbdGFnXSA9IHRydWU7XG4gIH1c
bn1cblxuZnVuY3Rpb24gaXNDdXN0b21Db21wb25lbnQodGFnTmFtZSwgcHJvcHMpIHtcbiAgcmV0
dXJuIHRhZ05hbWUuaW5kZXhPZignLScpID49IDAgfHwgcHJvcHMuaXMgIT0gbnVsbDtcbn1cblxu
dmFyIGdsb2JhbElkQ291bnRlciA9IDE7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBSZWFjdCBj
bGFzcyB0aGF0IGlzIGlkZW1wb3RlbnQgYW5kIGNhcGFibGUgb2YgY29udGFpbmluZyBvdGhlclxu
ICogUmVhY3QgY29tcG9uZW50cy4gSXQgYWNjZXB0cyBldmVudCBsaXN0ZW5lcnMgYW5kIERPTSBw
cm9wZXJ0aWVzIHRoYXQgYXJlXG4gKiB2YWxpZCBhY2NvcmRpbmcgdG8gYERPTVByb3BlcnR5YC5c
biAqXG4gKiAgLSBFdmVudCBsaXN0ZW5lcnM6IGBvbkNsaWNrYCwgYG9uTW91c2VEb3duYCwgZXRj
LlxuICogIC0gRE9NIHByb3BlcnRpZXM6IGBjbGFzc05hbWVgLCBgbmFtZWAsIGB0aXRsZWAsIGV0
Yy5cbiAqXG4gKiBUaGUgYHN0eWxlYCBwcm9wZXJ0eSBmdW5jdGlvbnMgZGlmZmVyZW50bHkgZnJv
bSB0aGUgRE9NIEFQSS4gSXQgYWNjZXB0cyBhblxuICogb2JqZWN0IG1hcHBpbmcgb2Ygc3R5bGUg
cHJvcGVydGllcyB0byB2YWx1ZXMuXG4gKlxuICogQGNvbnN0cnVjdG9yIFJlYWN0RE9NQ29tcG9u
ZW50XG4gKiBAZXh0ZW5kcyBSZWFjdE11bHRpQ2hpbGRcbiAqL1xuZnVuY3Rpb24gUmVhY3RET01D
b21wb25lbnQoZWxlbWVudCkge1xuICB2YXIgdGFnID0gZWxlbWVudC50eXBlO1xuICB2YWxpZGF0
ZURhbmdlcm91c1RhZyh0YWcpO1xuICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7XG4g
IHRoaXMuX3RhZyA9IHRhZy50b0xvd2VyQ2FzZSgpO1xuICB0aGlzLl9uYW1lc3BhY2VVUkkgPSBu
dWxsO1xuICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gbnVsbDtcbiAgdGhpcy5fcHJldmlvdXNT
dHlsZSA9IG51bGw7XG4gIHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcbiAgdGhpcy5f
aG9zdE5vZGUgPSBudWxsO1xuICB0aGlzLl9ob3N0UGFyZW50ID0gbnVsbDtcbiAgdGhpcy5fcm9v
dE5vZGVJRCA9IDA7XG4gIHRoaXMuX2RvbUlEID0gMDtcbiAgdGhpcy5faG9zdENvbnRhaW5lcklu
Zm8gPSBudWxsO1xuICB0aGlzLl93cmFwcGVyU3RhdGUgPSBudWxsO1xuICB0aGlzLl90b3BMZXZl
bFdyYXBwZXIgPSBudWxsO1xuICB0aGlzLl9mbGFncyA9IDA7XG4gIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdGhpcy5fYW5jZXN0b3JJbmZvID0gbnVs
bDtcbiAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIG51bGwpO1xu
ICB9XG59XG5cblJlYWN0RE9NQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gJ1JlYWN0RE9NQ29tcG9u
ZW50JztcblxuUmVhY3RET01Db21wb25lbnQuTWl4aW4gPSB7XG4gIC8qKlxuICAgKiBHZW5lcmF0
ZXMgcm9vdCB0YWcgbWFya3VwIHRoZW4gcmVjdXJzZXMuIFRoaXMgbWV0aG9kIGhhcyBzaWRlIGVm
ZmVjdHMgYW5kXG4gICAqIGlzIG5vdCBpZGVtcG90ZW50LlxuICAgKlxuICAgKiBAaW50ZXJuYWxc
biAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVy
aW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7P1JlYWN0RE9NQ29tcG9u
ZW50fSB0aGUgcGFyZW50IGNvbXBvbmVudCBpbnN0YW5jZVxuICAgKiBAcGFyYW0gez9vYmplY3R9
IGluZm8gYWJvdXQgdGhlIGhvc3QgY29udGFpbmVyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250
ZXh0XG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvbXB1dGVkIG1hcmt1cC5cbiAgICovXG4g
IG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RD
b250YWluZXJJbmZvLCBjb250ZXh0KSB7XG4gICAgdGhpcy5fcm9vdE5vZGVJRCA9IGdsb2JhbElk
Q291bnRlcisrO1xuICAgIHRoaXMuX2RvbUlEID0gaG9zdENvbnRhaW5lckluZm8uX2lkQ291bnRl
cisrO1xuICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50O1xuICAgIHRoaXMuX2hvc3RD
b250YWluZXJJbmZvID0gaG9zdENvbnRhaW5lckluZm87XG5cbiAgICB2YXIgcHJvcHMgPSB0aGlz
Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG4gICAg
ICBjYXNlICdhdWRpbyc6XG4gICAgICBjYXNlICdmb3JtJzpcbiAgICAgIGNhc2UgJ2lmcmFtZSc6
XG4gICAgICBjYXNlICdpbWcnOlxuICAgICAgY2FzZSAnbGluayc6XG4gICAgICBjYXNlICdvYmpl
Y3QnOlxuICAgICAgY2FzZSAnc291cmNlJzpcbiAgICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgICAg
dGhpcy5fd3JhcHBlclN0YXRlID0ge1xuICAgICAgICAgIGxpc3RlbmVyczogbnVsbFxuICAgICAg
ICB9O1xuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRy
YXBCdWJibGVkRXZlbnRzTG9jYWwsIHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ug
J2lucHV0JzpcbiAgICAgICAgUmVhY3RET01JbnB1dC5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMs
IGhvc3RQYXJlbnQpO1xuICAgICAgICBwcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFByb3Bz
KHRoaXMsIHByb3BzKTtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCku
ZW5xdWV1ZSh0cmFja0lucHV0VmFsdWUsIHRoaXMpO1xuICAgICAgICB0cmFuc2FjdGlvbi5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZlbnRzTG9jYWwsIHRoaXMpO1xu
ICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29wdGlvbic6XG4gICAgICAgIFJlYWN0RE9NT3B0
aW9uLm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7XG4gICAgICAgIHByb3Bz
ID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFByb3BzKHRoaXMsIHByb3BzKTtcbiAgICAgICAgYnJl
YWs7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICBSZWFjdERPTVNlbGVjdC5tb3VudFdy
YXBwZXIodGhpcywgcHJvcHMsIGhvc3RQYXJlbnQpO1xuICAgICAgICBwcm9wcyA9IFJlYWN0RE9N
U2VsZWN0LmdldEhvc3RQcm9wcyh0aGlzLCBwcm9wcyk7XG4gICAgICAgIHRyYW5zYWN0aW9uLmdl
dFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhpcyk7
XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICBSZWFjdERP
TVRleHRhcmVhLm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7XG4gICAgICAg
IHByb3BzID0gUmVhY3RET01UZXh0YXJlYS5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpO1xuICAg
ICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYWNrSW5wdXRW
YWx1ZSwgdGhpcyk7XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAg
IH1cblxuICAgIGFzc2VydFZhbGlkUHJvcHModGhpcywgcHJvcHMpO1xuXG4gICAgLy8gV2UgY3Jl
YXRlIHRhZ3MgaW4gdGhlIG5hbWVzcGFjZSBvZiB0aGVpciBwYXJlbnQgY29udGFpbmVyLCBleGNl
cHQgSFRNTFxuICAgIC8vIHRhZ3MgZ2V0IG5vIG5hbWVzcGFjZS5cbiAgICB2YXIgbmFtZXNwYWNl
VVJJO1xuICAgIHZhciBwYXJlbnRUYWc7XG4gICAgaWYgKGhvc3RQYXJlbnQgIT0gbnVsbCkge1xu
ICAgICAgbmFtZXNwYWNlVVJJID0gaG9zdFBhcmVudC5fbmFtZXNwYWNlVVJJO1xuICAgICAgcGFy
ZW50VGFnID0gaG9zdFBhcmVudC5fdGFnO1xuICAgIH0gZWxzZSBpZiAoaG9zdENvbnRhaW5lcklu
Zm8uX3RhZykge1xuICAgICAgbmFtZXNwYWNlVVJJID0gaG9zdENvbnRhaW5lckluZm8uX25hbWVz
cGFjZVVSSTtcbiAgICAgIHBhcmVudFRhZyA9IGhvc3RDb250YWluZXJJbmZvLl90YWc7XG4gICAg
fVxuICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gbnVsbCB8fCBuYW1lc3BhY2VVUkkgPT09IERPTU5h
bWVzcGFjZXMuc3ZnICYmIHBhcmVudFRhZyA9PT0gJ2ZvcmVpZ25vYmplY3QnKSB7XG4gICAgICBu
YW1lc3BhY2VVUkkgPSBET01OYW1lc3BhY2VzLmh0bWw7XG4gICAgfVxuICAgIGlmIChuYW1lc3Bh
Y2VVUkkgPT09IERPTU5hbWVzcGFjZXMuaHRtbCkge1xuICAgICAgaWYgKHRoaXMuX3RhZyA9PT0g
J3N2ZycpIHtcbiAgICAgICAgbmFtZXNwYWNlVVJJID0gRE9NTmFtZXNwYWNlcy5zdmc7XG4gICAg
ICB9IGVsc2UgaWYgKHRoaXMuX3RhZyA9PT0gJ21hdGgnKSB7XG4gICAgICAgIG5hbWVzcGFjZVVS
SSA9IERPTU5hbWVzcGFjZXMubWF0aG1sO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9uYW1l
c3BhY2VVUkkgPSBuYW1lc3BhY2VVUkk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIHBhcmVudEluZm87XG4gICAgICBpZiAoaG9z
dFBhcmVudCAhPSBudWxsKSB7XG4gICAgICAgIHBhcmVudEluZm8gPSBob3N0UGFyZW50Ll9hbmNl
c3RvckluZm87XG4gICAgICB9IGVsc2UgaWYgKGhvc3RDb250YWluZXJJbmZvLl90YWcpIHtcbiAg
ICAgICAgcGFyZW50SW5mbyA9IGhvc3RDb250YWluZXJJbmZvLl9hbmNlc3RvckluZm87XG4gICAg
ICB9XG4gICAgICBpZiAocGFyZW50SW5mbykge1xuICAgICAgICAvLyBwYXJlbnRJbmZvIHNob3Vs
ZCBhbHdheXMgYmUgcHJlc2VudCBleGNlcHQgZm9yIHRoZSB0b3AtbGV2ZWxcbiAgICAgICAgLy8g
Y29tcG9uZW50IHdoZW4gc2VydmVyIHJlbmRlcmluZ1xuICAgICAgICB2YWxpZGF0ZURPTU5lc3Rp
bmcodGhpcy5fdGFnLCBudWxsLCB0aGlzLCBwYXJlbnRJbmZvKTtcbiAgICAgIH1cbiAgICAgIHRo
aXMuX2FuY2VzdG9ySW5mbyA9IHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZv
KHBhcmVudEluZm8sIHRoaXMuX3RhZywgdGhpcyk7XG4gICAgfVxuXG4gICAgdmFyIG1vdW50SW1h
Z2U7XG4gICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcbiAgICAgIHZhciBv
d25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5lckluZm8uX293bmVyRG9jdW1lbnQ7XG4gICAgICB2
YXIgZWw7XG4gICAgICBpZiAobmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpIHtc
biAgICAgICAgaWYgKHRoaXMuX3RhZyA9PT0gJ3NjcmlwdCcpIHtcbiAgICAgICAgICAvLyBDcmVh
dGUgdGhlIHNjcmlwdCB2aWEgLmlubmVySFRNTCBzbyBpdHMgXCJwYXJzZXItaW5zZXJ0ZWRcIiBm
bGFnIGlzXG4gICAgICAgICAgLy8gc2V0IHRvIHRydWUgYW5kIGl0IGRvZXMgbm90IGV4ZWN1dGVc
biAgICAgICAgICB2YXIgZGl2ID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtc
biAgICAgICAgICB2YXIgdHlwZSA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG4gICAgICAg
ICAgZGl2LmlubmVySFRNTCA9ICc8JyArIHR5cGUgKyAnPjwvJyArIHR5cGUgKyAnPic7XG4gICAg
ICAgICAgZWwgPSBkaXYucmVtb3ZlQ2hpbGQoZGl2LmZpcnN0Q2hpbGQpO1xuICAgICAgICB9IGVs
c2UgaWYgKHByb3BzLmlzKSB7XG4gICAgICAgICAgZWwgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQodGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSwgcHJvcHMuaXMpO1xuICAgICAgICB9IGVs
c2Uge1xuICAgICAgICAgIC8vIFNlcGFyYXRlIGVsc2UgYnJhbmNoIGluc3RlYWQgb2YgdXNpbmcg
YHByb3BzLmlzIHx8IHVuZGVmaW5lZGAgYWJvdmUgYmVjdWFzZSBvZiBhIEZpcmVmb3ggYnVnLlxu
ICAgICAgICAgIC8vIFNlZSBkaXNjdXNzaW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9v
ay9yZWFjdC9wdWxsLzY4OTZcbiAgICAgICAgICAvLyBhbmQgZGlzY3Vzc2lvbiBpbiBodHRwczov
L2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc2MjQwXG4gICAgICAgICAg
ZWwgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy5fY3VycmVudEVsZW1lbnQudHlw
ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsID0gb3duZXJEb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlVVJJLCB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBl
KTtcbiAgICAgIH1cbiAgICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNoZU5vZGUodGhp
cywgZWwpO1xuICAgICAgdGhpcy5fZmxhZ3MgfD0gRmxhZ3MuaGFzQ2FjaGVkQ2hpbGROb2Rlcztc
biAgICAgIGlmICghdGhpcy5faG9zdFBhcmVudCkge1xuICAgICAgICBET01Qcm9wZXJ0eU9wZXJh
dGlvbnMuc2V0QXR0cmlidXRlRm9yUm9vdChlbCk7XG4gICAgICB9XG4gICAgICB0aGlzLl91cGRh
dGVET01Qcm9wZXJ0aWVzKG51bGwsIHByb3BzLCB0cmFuc2FjdGlvbik7XG4gICAgICB2YXIgbGF6
eVRyZWUgPSBET01MYXp5VHJlZShlbCk7XG4gICAgICB0aGlzLl9jcmVhdGVJbml0aWFsQ2hpbGRy
ZW4odHJhbnNhY3Rpb24sIHByb3BzLCBjb250ZXh0LCBsYXp5VHJlZSk7XG4gICAgICBtb3VudElt
YWdlID0gbGF6eVRyZWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB0YWdPcGVuID0gdGhpcy5f
Y3JlYXRlT3BlblRhZ01hcmt1cEFuZFB1dExpc3RlbmVycyh0cmFuc2FjdGlvbiwgcHJvcHMpO1xu
ICAgICAgdmFyIHRhZ0NvbnRlbnQgPSB0aGlzLl9jcmVhdGVDb250ZW50TWFya3VwKHRyYW5zYWN0
aW9uLCBwcm9wcywgY29udGV4dCk7XG4gICAgICBpZiAoIXRhZ0NvbnRlbnQgJiYgb21pdHRlZENs
b3NlVGFnc1t0aGlzLl90YWddKSB7XG4gICAgICAgIG1vdW50SW1hZ2UgPSB0YWdPcGVuICsgJy8+
JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1vdW50SW1hZ2UgPSB0YWdPcGVuICsgJz4nICsg
dGFnQ29udGVudCArICc8LycgKyB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlICsgJz4nO1xuICAg
ICAgfVxuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG4gICAgICBjYXNlICdpbnB1
dCc6XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoaW5w
dXRQb3N0TW91bnQsIHRoaXMpO1xuICAgICAgICBpZiAocHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAg
ICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShBdXRvRm9jdXNV
dGlscy5mb2N1c0RPTUNvbXBvbmVudCwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7
XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUodGV4dGFyZWFQb3N0TW91bnQsIHRoaXMpO1xuICAgICAgICBpZiAo
cHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJl
YWR5KCkuZW5xdWV1ZShBdXRvRm9jdXNVdGlscy5mb2N1c0RPTUNvbXBvbmVudCwgdGhpcyk7XG4g
ICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICBp
ZiAocHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3Vu
dFJlYWR5KCkuZW5xdWV1ZShBdXRvRm9jdXNVdGlscy5mb2N1c0RPTUNvbXBvbmVudCwgdGhpcyk7
XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdidXR0b24nOlxuICAgICAg
ICBpZiAocHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RN
b3VudFJlYWR5KCkuZW5xdWV1ZShBdXRvRm9jdXNVdGlscy5mb2N1c0RPTUNvbXBvbmVudCwgdGhp
cyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvcHRpb24nOlxuICAg
ICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKG9wdGlvblBvc3RN
b3VudCwgdGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBtb3VudElt
YWdlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIG9wZW4gdGFn
IGFuZCBhbGwgYXR0cmlidXRlcy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaGFzIHNpZGUgZWZm
ZWN0cyBiZWNhdXNlIGV2ZW50cyBnZXQgcmVnaXN0ZXJlZC5cbiAgICpcbiAgICogSXRlcmF0aW5n
IG92ZXIgb2JqZWN0IHByb3BlcnRpZXMgaXMgZmFzdGVyIHRoYW4gaXRlcmF0aW5nIG92ZXIgYXJy
YXlzLlxuICAgKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL29iai12cy1hcnItaXRlcmF0aW9uXG4g
ICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFy
YW0ge29iamVjdH0gcHJvcHNcbiAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgb2Ygb3Blbmlu
ZyB0YWcuXG4gICAqL1xuICBfY3JlYXRlT3BlblRhZ01hcmt1cEFuZFB1dExpc3RlbmVyczogZnVu
Y3Rpb24gKHRyYW5zYWN0aW9uLCBwcm9wcykge1xuICAgIHZhciByZXQgPSAnPCcgKyB0aGlzLl9j
dXJyZW50RWxlbWVudC50eXBlO1xuXG4gICAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcykge1xu
ICAgICAgaWYgKCFwcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICBjb250
aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wS2V5XTtcbiAg
ICAgIGlmIChwcm9wVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1c
biAgICAgIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5
KSkge1xuICAgICAgICBpZiAocHJvcFZhbHVlKSB7XG4gICAgICAgICAgZW5xdWV1ZVB1dExpc3Rl
bmVyKHRoaXMsIHByb3BLZXksIHByb3BWYWx1ZSwgdHJhbnNhY3Rpb24pO1xuICAgICAgICB9XG4g
ICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvcEtleSA9PT0gU1RZTEUpIHtcbiAgICAgICAg
ICBpZiAocHJvcFZhbHVlKSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAvLyBTZWUgYF91cGRhdGVET01Qcm9w
ZXJ0aWVzYC4gc3R5bGUgYmxvY2tcbiAgICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZSA9
IHByb3BWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb3BWYWx1ZSA9IHRoaXMu
X3ByZXZpb3VzU3R5bGVDb3B5ID0gX2Fzc2lnbih7fSwgcHJvcHMuc3R5bGUpO1xuICAgICAgICAg
IH1cbiAgICAgICAgICBwcm9wVmFsdWUgPSBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFy
a3VwRm9yU3R5bGVzKHByb3BWYWx1ZSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1h
cmt1cCA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLl90YWcgIT0gbnVsbCAmJiBpc0N1c3RvbUNv
bXBvbmVudCh0aGlzLl90YWcsIHByb3BzKSkge1xuICAgICAgICAgIGlmICghUkVTRVJWRURfUFJP
UFMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgICAgIG1hcmt1cCA9IERPTVBy
b3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGUocHJvcEtleSwg
cHJvcFZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWFy
a3VwID0gRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclByb3BlcnR5KHByb3BL
ZXksIHByb3BWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hcmt1cCkge1xuICAgICAg
ICAgIHJldCArPSAnICcgKyBtYXJrdXA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAg
ICAvLyBGb3Igc3RhdGljIHBhZ2VzLCBubyBuZWVkIHRvIHB1dCBSZWFjdCBJRCBhbmQgY2hlY2tz
dW0uIFNhdmVzIGxvdHMgb2ZcbiAgICAvLyBieXRlcy5cbiAgICBpZiAodHJhbnNhY3Rpb24ucmVu
ZGVyVG9TdGF0aWNNYXJrdXApIHtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgaWYg
KCF0aGlzLl9ob3N0UGFyZW50KSB7XG4gICAgICByZXQgKz0gJyAnICsgRE9NUHJvcGVydHlPcGVy
YXRpb25zLmNyZWF0ZU1hcmt1cEZvclJvb3QoKTtcbiAgICB9XG4gICAgcmV0ICs9ICcgJyArIERP
TVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JJRCh0aGlzLl9kb21JRCk7XG4gICAg
cmV0dXJuIHJldDtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIHRoZSBj
b250ZW50IGJldHdlZW4gdGhlIHRhZ3MuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJh
bSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0
aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAgICogQHBhcmFt
IHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7c3RyaW5nfSBDb250ZW50IG1hcmt1cC5c
biAgICovXG4gIF9jcmVhdGVDb250ZW50TWFya3VwOiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHBy
b3BzLCBjb250ZXh0KSB7XG4gICAgdmFyIHJldCA9ICcnO1xuXG4gICAgLy8gSW50ZW50aW9uYWwg
dXNlIG9mICE9IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFsc2UuXG4gICAgdmFyIGlubmVySFRN
TCA9IHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO1xuICAgIGlmIChpbm5lckhUTUwgIT0g
bnVsbCkge1xuICAgICAgaWYgKGlubmVySFRNTC5fX2h0bWwgIT0gbnVsbCkge1xuICAgICAgICBy
ZXQgPSBpbm5lckhUTUwuX19odG1sO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIg
Y29udGVudFRvVXNlID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgcHJvcHMuY2hpbGRyZW5dID8gcHJv
cHMuY2hpbGRyZW4gOiBudWxsO1xuICAgICAgdmFyIGNoaWxkcmVuVG9Vc2UgPSBjb250ZW50VG9V
c2UgIT0gbnVsbCA/IG51bGwgOiBwcm9wcy5jaGlsZHJlbjtcbiAgICAgIGlmIChjb250ZW50VG9V
c2UgIT0gbnVsbCkge1xuICAgICAgICAvLyBUT0RPOiBWYWxpZGF0ZSB0aGF0IHRleHQgaXMgYWxs
b3dlZCBhcyBhIGNoaWxkIG9mIHRoaXMgbm9kZVxuICAgICAgICByZXQgPSBlc2NhcGVUZXh0Q29u
dGVudEZvckJyb3dzZXIoY29udGVudFRvVXNlKTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBzZXRBbmRWYWxpZGF0ZUNvbnRl
bnRDaGlsZERldi5jYWxsKHRoaXMsIGNvbnRlbnRUb1VzZSk7XG4gICAgICAgIH1cbiAgICAgIH0g
ZWxzZSBpZiAoY2hpbGRyZW5Ub1VzZSAhPSBudWxsKSB7XG4gICAgICAgIHZhciBtb3VudEltYWdl
cyA9IHRoaXMubW91bnRDaGlsZHJlbihjaGlsZHJlblRvVXNlLCB0cmFuc2FjdGlvbiwgY29udGV4
dCk7XG4gICAgICAgIHJldCA9IG1vdW50SW1hZ2VzLmpvaW4oJycpO1xuICAgICAgfVxuICAgIH1c
biAgICBpZiAobmV3bGluZUVhdGluZ1RhZ3NbdGhpcy5fdGFnXSAmJiByZXQuY2hhckF0KDApID09
PSAnXFxuJykge1xuICAgICAgLy8gdGV4dC9odG1sIGlnbm9yZXMgdGhlIGZpcnN0IGNoYXJhY3Rl
ciBpbiB0aGVzZSB0YWdzIGlmIGl0J3MgYSBuZXdsaW5lXG4gICAgICAvLyBQcmVmZXIgdG8gYnJl
YWsgYXBwbGljYXRpb24veG1sIG92ZXIgdGV4dC9odG1sIChmb3Igbm93KSBieSBhZGRpbmdcbiAg
ICAgIC8vIGEgbmV3bGluZSBzcGVjaWZpY2FsbHkgdG8gZ2V0IGVhdGVuIGJ5IHRoZSBwYXJzZXIu
IChBbHRlcm5hdGVseSBmb3JcbiAgICAgIC8vIHRleHRhcmVhcywgcmVwbGFjaW5nIFwiXlxcblwi
IHdpdGggXCJcXHJcXG5cIiBkb2Vzbid0IGdldCBlYXRlbiwgYW5kIHRoZSBmaXJzdFxuICAgICAg
Ly8gXFxyIGlzIG5vcm1hbGl6ZWQgb3V0IGJ5IEhUTUxUZXh0QXJlYUVsZW1lbnQjdmFsdWUuKVxu
ICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC1wb2x5Z2xvdC8jbmV3bGlu
ZXMtaW4tdGV4dGFyZWEtYW5kLXByZT5cbiAgICAgIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3Jn
L1RSL2h0bWw1L3N5bnRheC5odG1sI2VsZW1lbnQtcmVzdHJpY3Rpb25zPlxuICAgICAgLy8gU2Vl
OiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjbmV3bGluZXM+XG4gICAg
ICAvLyBTZWU6IFBhcnNpbmcgb2YgXCJ0ZXh0YXJlYVwiIFwibGlzdGluZ1wiIGFuZCBcInByZVwi
IGVsZW1lbnRzXG4gICAgICAvLyAgZnJvbSA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3lu
dGF4Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keT5cbiAgICAgIHJldHVybiAnXFxuJyArIHJldDtc
biAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gIH0sXG5cbiAgX2NyZWF0
ZUluaXRpYWxDaGlsZHJlbjogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCwg
bGF6eVRyZWUpIHtcbiAgICAvLyBJbnRlbnRpb25hbCB1c2Ugb2YgIT0gdG8gYXZvaWQgY2F0Y2hp
bmcgemVyby9mYWxzZS5cbiAgICB2YXIgaW5uZXJIVE1MID0gcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUw7XG4gICAgaWYgKGlubmVySFRNTCAhPSBudWxsKSB7XG4gICAgICBpZiAoaW5uZXJI
VE1MLl9faHRtbCAhPSBudWxsKSB7XG4gICAgICAgIERPTUxhenlUcmVlLnF1ZXVlSFRNTChsYXp5
VHJlZSwgaW5uZXJIVE1MLl9faHRtbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZh
ciBjb250ZW50VG9Vc2UgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBwcm9wcy5jaGlsZHJlbl0gPyBw
cm9wcy5jaGlsZHJlbiA6IG51bGw7XG4gICAgICB2YXIgY2hpbGRyZW5Ub1VzZSA9IGNvbnRlbnRU
b1VzZSAhPSBudWxsID8gbnVsbCA6IHByb3BzLmNoaWxkcmVuO1xuICAgICAgLy8gVE9ETzogVmFs
aWRhdGUgdGhhdCB0ZXh0IGlzIGFsbG93ZWQgYXMgYSBjaGlsZCBvZiB0aGlzIG5vZGVcbiAgICAg
IGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkge1xuICAgICAgICAvLyBBdm9pZCBzZXR0aW5nIHRl
eHRDb250ZW50IHdoZW4gdGhlIHRleHQgaXMgZW1wdHkuIEluIElFMTEgc2V0dGluZ1xuICAgICAg
ICAvLyB0ZXh0Q29udGVudCBvbiBhIHRleHQgYXJlYSB3aWxsIGNhdXNlIHRoZSBwbGFjZWhvbGRl
ciB0byBub3RcbiAgICAgICAgLy8gc2hvdyB3aXRoaW4gdGhlIHRleHRhcmVhIHVudGlsIGl0IGhh
cyBiZWVuIGZvY3VzZWQgYW5kIGJsdXJyZWQgYWdhaW4uXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNjczMSNpc3N1ZWNvbW1lbnQtMjU0ODc0NTUz
XG4gICAgICAgIGlmIChjb250ZW50VG9Vc2UgIT09ICcnKSB7XG4gICAgICAgICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHNldEFuZFZh
bGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgY29udGVudFRvVXNlKTtcbiAgICAgICAg
ICB9XG4gICAgICAgICAgRE9NTGF6eVRyZWUucXVldWVUZXh0KGxhenlUcmVlLCBjb250ZW50VG9V
c2UpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNoaWxkcmVuVG9Vc2UgIT0gbnVsbCkg
e1xuICAgICAgICB2YXIgbW91bnRJbWFnZXMgPSB0aGlzLm1vdW50Q2hpbGRyZW4oY2hpbGRyZW5U
b1VzZSwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG1vdW50SW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgRE9NTGF6eVRyZWUucXVldWVD
aGlsZChsYXp5VHJlZSwgbW91bnRJbWFnZXNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAg
fVxuICB9LFxuXG4gIC8qKlxuICAgKiBSZWNlaXZlcyBhIG5leHQgZWxlbWVudCBhbmQgdXBkYXRl
cyB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHBhcmFtIHtSZWFj
dEVsZW1lbnR9IG5leHRFbGVtZW50XG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBA
cGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKi9cbiAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rp
b24gKG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBwcmV2RWxl
bWVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50O1xuICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0g
bmV4dEVsZW1lbnQ7XG4gICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHByZXZF
bGVtZW50LCBuZXh0RWxlbWVudCwgY29udGV4dCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVwZGF0
ZXMgYSBET00gY29tcG9uZW50IGFmdGVyIGl0IGhhcyBhbHJlYWR5IGJlZW4gYWxsb2NhdGVkIGFu
ZFxuICAgKiBhdHRhY2hlZCB0byB0aGUgRE9NLiBSZWNvbmNpbGVzIHRoZSByb290IERPTSBub2Rl
LCB0aGVuIHJlY3Vyc2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBwcmV2RWxlbWVu
dFxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnRcbiAgICogQGludGVybmFs
XG4gICAqIEBvdmVycmlkYWJsZVxuICAgKi9cbiAgdXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAo
dHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCwgY29udGV4dCkge1xuICAgIHZh
ciBsYXN0UHJvcHMgPSBwcmV2RWxlbWVudC5wcm9wcztcbiAgICB2YXIgbmV4dFByb3BzID0gdGhp
cy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3RhZykge1xuICAg
ICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICBsYXN0UHJvcHMgPSBSZWFjdERPTUlucHV0LmdldEhv
c3RQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTUlu
cHV0LmdldEhvc3RQcm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICAg
IGNhc2UgJ29wdGlvbic6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NT3B0aW9uLmdldEhv
c3RQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTU9w
dGlvbi5nZXRIb3N0UHJvcHModGhpcywgbmV4dFByb3BzKTtcbiAgICAgICAgYnJlYWs7XG4gICAg
ICBjYXNlICdzZWxlY3QnOlxuICAgICAgICBsYXN0UHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXRI
b3N0UHJvcHModGhpcywgbGFzdFByb3BzKTtcbiAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01T
ZWxlY3QuZ2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAg
ICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICBsYXN0UHJvcHMgPSBSZWFjdERPTVRleHRhcmVh
LmdldEhvc3RQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuICAgICAgICBuZXh0UHJvcHMgPSBSZWFj
dERPTVRleHRhcmVhLmdldEhvc3RQcm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuICAgICAgICBicmVh
aztcbiAgICB9XG5cbiAgICBhc3NlcnRWYWxpZFByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAg
dGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhsYXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNhY3Rp
b24pO1xuICAgIHRoaXMuX3VwZGF0ZURPTUNoaWxkcmVuKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0
cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3RhZykge1xuICAgICAg
Y2FzZSAnaW5wdXQnOlxuICAgICAgICAvLyBVcGRhdGUgdGhlIHdyYXBwZXIgYXJvdW5kIGlucHV0
cyAqYWZ0ZXIqIHVwZGF0aW5nIHByb3BzLiBUaGlzIGhhcyB0b1xuICAgICAgICAvLyBoYXBwZW4g
YWZ0ZXIgYF91cGRhdGVET01Qcm9wZXJ0aWVzYC4gT3RoZXJ3aXNlIEhUTUw1IGlucHV0IHZhbGlk
YXRpb25zXG4gICAgICAgIC8vIHJhaXNlIHdhcm5pbmdzIGFuZCBwcmV2ZW50IHRoZSBuZXcgdmFs
dWUgZnJvbSBiZWluZyBhc3NpZ25lZC5cbiAgICAgICAgUmVhY3RET01JbnB1dC51cGRhdGVXcmFw
cGVyKHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAg
ICAgUmVhY3RET01UZXh0YXJlYS51cGRhdGVXcmFwcGVyKHRoaXMpO1xuICAgICAgICBicmVhaztc
biAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIC8vIDxzZWxlY3Q+IHZhbHVlIHVwZGF0ZSBu
ZWVkcyB0byBvY2N1ciBhZnRlciA8b3B0aW9uPiBjaGlsZHJlblxuICAgICAgICAvLyByZWNvbmNp
bGlhdGlvblxuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVl
KHBvc3RVcGRhdGVTZWxlY3RXcmFwcGVyLCB0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxu
ICB9LFxuXG4gIC8qKlxuICAgKiBSZWNvbmNpbGVzIHRoZSBwcm9wZXJ0aWVzIGJ5IGRldGVjdGlu
ZyBkaWZmZXJlbmNlcyBpbiBwcm9wZXJ0eSB2YWx1ZXMgYW5kXG4gICAqIHVwZGF0aW5nIHRoZSBE
T00gYXMgbmVjZXNzYXJ5LiBUaGlzIGZ1bmN0aW9uIGlzIHByb2JhYmx5IHRoZSBzaW5nbGUgbW9z
dFxuICAgKiBjcml0aWNhbCBwYXRoIGZvciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uXG4gICAq
XG4gICAqIFRPRE86IEJlbmNobWFyayB3aGV0aGVyIGNoZWNraW5nIGZvciBjaGFuZ2VkIHZhbHVl
cyBpbiBtZW1vcnkgYWN0dWFsbHlcbiAgICogICAgICAgaW1wcm92ZXMgcGVyZm9ybWFuY2UgKGVz
cGVjaWFsbHkgc3RhdGljYWxseSBwb3NpdGlvbmVkIGVsZW1lbnRzKS5cbiAgICogVE9ETzogQmVu
Y2htYXJrIHRoZSBlZmZlY3RzIG9mIHB1dHRpbmcgdGhpcyBhdCB0aGUgdG9wIHNpbmNlIDk5JSBv
ZiBwcm9wc1xuICAgKiAgICAgICBkbyBub3QgY2hhbmdlIGZvciBhIGdpdmVuIHJlY29uY2lsaWF0
aW9uLlxuICAgKiBUT0RPOiBCZW5jaG1hcmsgYXJlYXMgdGhhdCBjYW4gYmUgaW1wcm92ZWQgd2l0
aCBjYWNoaW5nLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge29iamVjdH0gbGFz
dFByb3BzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICogQHBhcmFtIHs/RE9N
RWxlbWVudH0gbm9kZVxuICAgKi9cbiAgX3VwZGF0ZURPTVByb3BlcnRpZXM6IGZ1bmN0aW9uIChs
YXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNhY3Rpb24pIHtcbiAgICB2YXIgcHJvcEtleTtcbiAg
ICB2YXIgc3R5bGVOYW1lO1xuICAgIHZhciBzdHlsZVVwZGF0ZXM7XG4gICAgZm9yIChwcm9wS2V5
IGluIGxhc3RQcm9wcykge1xuICAgICAgaWYgKG5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9w
S2V5KSB8fCAhbGFzdFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpIHx8IGxhc3RQcm9wc1tw
cm9wS2V5XSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYg
KHByb3BLZXkgPT09IFNUWUxFKSB7XG4gICAgICAgIHZhciBsYXN0U3R5bGUgPSB0aGlzLl9wcmV2
aW91c1N0eWxlQ29weTtcbiAgICAgICAgZm9yIChzdHlsZU5hbWUgaW4gbGFzdFN0eWxlKSB7XG4g
ICAgICAgICAgaWYgKGxhc3RTdHlsZS5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSB7XG4gICAg
ICAgICAgICBzdHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMgfHwge307XG4gICAgICAgICAgICBz
dHlsZVVwZGF0ZXNbc3R5bGVOYW1lXSA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAg
ICAgICB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKHJl
Z2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAg
IGlmIChsYXN0UHJvcHNbcHJvcEtleV0pIHtcbiAgICAgICAgICAvLyBPbmx5IGNhbGwgZGVsZXRl
TGlzdGVuZXIgaWYgdGhlcmUgd2FzIGEgbGlzdGVuZXIgcHJldmlvdXNseSBvclxuICAgICAgICAg
IC8vIGVsc2Ugd2lsbERlbGV0ZUxpc3RlbmVyIGdldHMgY2FsbGVkIHdoZW4gdGhlcmUgd2Fzbid0
IGFjdHVhbGx5IGFcbiAgICAgICAgICAvLyBsaXN0ZW5lciAoZS5nLiwgb25DbGljaz17bnVsbH0p
XG4gICAgICAgICAgZGVsZXRlTGlzdGVuZXIodGhpcywgcHJvcEtleSk7XG4gICAgICAgIH1cbiAg
ICAgIH0gZWxzZSBpZiAoaXNDdXN0b21Db21wb25lbnQodGhpcy5fdGFnLCBsYXN0UHJvcHMpKSB7
XG4gICAgICAgIGlmICghUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtc
biAgICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGUo
Z2V0Tm9kZSh0aGlzKSwgcHJvcEtleSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoRE9N
UHJvcGVydHkucHJvcGVydGllc1twcm9wS2V5XSB8fCBET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJp
YnV0ZShwcm9wS2V5KSkge1xuICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuZGVsZXRlVmFs
dWVGb3JQcm9wZXJ0eShnZXROb2RlKHRoaXMpLCBwcm9wS2V5KTtcbiAgICAgIH1cbiAgICB9XG4g
ICAgZm9yIChwcm9wS2V5IGluIG5leHRQcm9wcykge1xuICAgICAgdmFyIG5leHRQcm9wID0gbmV4
dFByb3BzW3Byb3BLZXldO1xuICAgICAgdmFyIGxhc3RQcm9wID0gcHJvcEtleSA9PT0gU1RZTEUg
PyB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA6IGxhc3RQcm9wcyAhPSBudWxsID8gbGFzdFByb3Bz
W3Byb3BLZXldIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKCFuZXh0UHJvcHMuaGFzT3duUHJvcGVy
dHkocHJvcEtleSkgfHwgbmV4dFByb3AgPT09IGxhc3RQcm9wIHx8IG5leHRQcm9wID09IG51bGwg
JiYgbGFzdFByb3AgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAg
IGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuICAgICAgICBpZiAobmV4dFByb3ApIHtcbiAgICAg
ICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
ICAgICAgY2hlY2tBbmRXYXJuRm9yTXV0YXRlZFN0eWxlKHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5
LCB0aGlzLl9wcmV2aW91c1N0eWxlLCB0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3Vz
U3R5bGUgPSBuZXh0UHJvcDtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dFByb3AgPSB0aGlz
Ll9wcmV2aW91c1N0eWxlQ29weSA9IF9hc3NpZ24oe30sIG5leHRQcm9wKTtcbiAgICAgICAgfSBl
bHNlIHtcbiAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IG51bGw7XG4gICAgICAg
IH1cbiAgICAgICAgaWYgKGxhc3RQcm9wKSB7XG4gICAgICAgICAgLy8gVW5zZXQgc3R5bGVzIG9u
IGBsYXN0UHJvcGAgYnV0IG5vdCBvbiBgbmV4dFByb3BgLlxuICAgICAgICAgIGZvciAoc3R5bGVO
YW1lIGluIGxhc3RQcm9wKSB7XG4gICAgICAgICAgICBpZiAobGFzdFByb3AuaGFzT3duUHJvcGVy
dHkoc3R5bGVOYW1lKSAmJiAoIW5leHRQcm9wIHx8ICFuZXh0UHJvcC5oYXNPd25Qcm9wZXJ0eShz
dHlsZU5hbWUpKSkge1xuICAgICAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMg
fHwge307XG4gICAgICAgICAgICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gJyc7XG4gICAg
ICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFVwZGF0ZSBzdHlsZXMgdGhhdCBj
aGFuZ2VkIHNpbmNlIGBsYXN0UHJvcGAuXG4gICAgICAgICAgZm9yIChzdHlsZU5hbWUgaW4gbmV4
dFByb3ApIHtcbiAgICAgICAgICAgIGlmIChuZXh0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5h
bWUpICYmIGxhc3RQcm9wW3N0eWxlTmFtZV0gIT09IG5leHRQcm9wW3N0eWxlTmFtZV0pIHtcbiAg
ICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuICAgICAgICAg
ICAgICBzdHlsZVVwZGF0ZXNbc3R5bGVOYW1lXSA9IG5leHRQcm9wW3N0eWxlTmFtZV07XG4gICAg
ICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFJl
bGllcyBvbiBgdXBkYXRlU3R5bGVzQnlJRGAgbm90IG11dGF0aW5nIGBzdHlsZVVwZGF0ZXNgLlxu
ICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IG5leHRQcm9wO1xuICAgICAgICB9XG4gICAgICB9IGVs
c2UgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7
XG4gICAgICAgIGlmIChuZXh0UHJvcCkge1xuICAgICAgICAgIGVucXVldWVQdXRMaXN0ZW5lcih0
aGlzLCBwcm9wS2V5LCBuZXh0UHJvcCwgdHJhbnNhY3Rpb24pO1xuICAgICAgICB9IGVsc2UgaWYg
KGxhc3RQcm9wKSB7XG4gICAgICAgICAgZGVsZXRlTGlzdGVuZXIodGhpcywgcHJvcEtleSk7XG4g
ICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNDdXN0b21Db21wb25lbnQodGhpcy5fdGFnLCBu
ZXh0UHJvcHMpKSB7XG4gICAgICAgIGlmICghUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHko
cHJvcEtleSkpIHtcbiAgICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JB
dHRyaWJ1dGUoZ2V0Tm9kZSh0aGlzKSwgcHJvcEtleSwgbmV4dFByb3ApO1xuICAgICAgICB9XG4g
ICAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LnByb3BlcnRpZXNbcHJvcEtleV0gfHwgRE9NUHJv
cGVydHkuaXNDdXN0b21BdHRyaWJ1dGUocHJvcEtleSkpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBn
ZXROb2RlKHRoaXMpO1xuICAgICAgICAvLyBJZiB3ZSdyZSB1cGRhdGluZyB0byBudWxsIG9yIHVu
ZGVmaW5lZCwgd2Ugc2hvdWxkIHJlbW92ZSB0aGUgcHJvcGVydHlcbiAgICAgICAgLy8gZnJvbSB0
aGUgRE9NIG5vZGUgaW5zdGVhZCBvZiBpbmFkdmVydGVudGx5IHNldHRpbmcgdG8gYSBzdHJpbmcu
IFRoaXNcbiAgICAgICAgLy8gYnJpbmdzIHVzIGluIGxpbmUgd2l0aCB0aGUgc2FtZSBiZWhhdmlv
ciB3ZSBoYXZlIG9uIGluaXRpYWwgcmVuZGVyLlxuICAgICAgICBpZiAobmV4dFByb3AgIT0gbnVs
bCkge1xuICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5
KG5vZGUsIHByb3BLZXksIG5leHRQcm9wKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBE
T01Qcm9wZXJ0eU9wZXJhdGlvbnMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShub2RlLCBwcm9wS2V5
KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3R5bGVVcGRhdGVzKSB7XG4g
ICAgICBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JTdHlsZXMoZ2V0Tm9kZSh0aGlz
KSwgc3R5bGVVcGRhdGVzLCB0aGlzKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlY29u
Y2lsZXMgdGhlIGNoaWxkcmVuIHdpdGggdGhlIHZhcmlvdXMgcHJvcGVydGllcyB0aGF0IGFmZmVj
dCB0aGVcbiAgICogY2hpbGRyZW4gY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9
IGxhc3RQcm9wc1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAqIEBwYXJhbSB7
UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmpl
Y3R9IGNvbnRleHRcbiAgICovXG4gIF91cGRhdGVET01DaGlsZHJlbjogZnVuY3Rpb24gKGxhc3RQ
cm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBsYXN0Q29u
dGVudCA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIGxhc3RQcm9wcy5jaGlsZHJlbl0gPyBsYXN0UHJv
cHMuY2hpbGRyZW4gOiBudWxsO1xuICAgIHZhciBuZXh0Q29udGVudCA9IENPTlRFTlRfVFlQRVNb
dHlwZW9mIG5leHRQcm9wcy5jaGlsZHJlbl0gPyBuZXh0UHJvcHMuY2hpbGRyZW4gOiBudWxsO1xu
XG4gICAgdmFyIGxhc3RIdG1sID0gbGFzdFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYm
IGxhc3RQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWw7XG4gICAgdmFyIG5leHRI
dG1sID0gbmV4dFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmIG5leHRQcm9wcy5kYW5n
ZXJvdXNseVNldElubmVySFRNTC5fX2h0bWw7XG5cbiAgICAvLyBOb3RlIHRoZSB1c2Ugb2YgYCE9
YCB3aGljaCBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkLlxuICAgIHZhciBsYXN0Q2hpbGRy
ZW4gPSBsYXN0Q29udGVudCAhPSBudWxsID8gbnVsbCA6IGxhc3RQcm9wcy5jaGlsZHJlbjtcbiAg
ICB2YXIgbmV4dENoaWxkcmVuID0gbmV4dENvbnRlbnQgIT0gbnVsbCA/IG51bGwgOiBuZXh0UHJv
cHMuY2hpbGRyZW47XG5cbiAgICAvLyBJZiB3ZSdyZSBzd2l0Y2hpbmcgZnJvbSBjaGlsZHJlbiB0
byBjb250ZW50L2h0bWwgb3IgdmljZSB2ZXJzYSwgcmVtb3ZlXG4gICAgLy8gdGhlIG9sZCBjb250
ZW50XG4gICAgdmFyIGxhc3RIYXNDb250ZW50T3JIdG1sID0gbGFzdENvbnRlbnQgIT0gbnVsbCB8
fCBsYXN0SHRtbCAhPSBudWxsO1xuICAgIHZhciBuZXh0SGFzQ29udGVudE9ySHRtbCA9IG5leHRD
b250ZW50ICE9IG51bGwgfHwgbmV4dEh0bWwgIT0gbnVsbDtcbiAgICBpZiAobGFzdENoaWxkcmVu
ICE9IG51bGwgJiYgbmV4dENoaWxkcmVuID09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlQ2hp
bGRyZW4obnVsbCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH0gZWxzZSBpZiAobGFzdEhh
c0NvbnRlbnRPckh0bWwgJiYgIW5leHRIYXNDb250ZW50T3JIdG1sKSB7XG4gICAgICB0aGlzLnVw
ZGF0ZVRleHRDb250ZW50KCcnKTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5v
blNldENoaWxkcmVuKHRoaXMuX2RlYnVnSUQsIFtdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBp
ZiAobmV4dENvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgaWYgKGxhc3RDb250ZW50ICE9PSBuZXh0
Q29udGVudCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVRleHRDb250ZW50KCcnICsgbmV4dENvbnRl
bnQpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICAgICAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgbmV4
dENvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChuZXh0SHRtbCAh
PSBudWxsKSB7XG4gICAgICBpZiAobGFzdEh0bWwgIT09IG5leHRIdG1sKSB7XG4gICAgICAgIHRo
aXMudXBkYXRlTWFya3VwKCcnICsgbmV4dEh0bWwpO1xuICAgICAgfVxuICAgICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4odGhpcy5fZGVidWdJRCwgW10pO1xuICAg
ICAgfVxuICAgIH0gZWxzZSBpZiAobmV4dENoaWxkcmVuICE9IG51bGwpIHtcbiAgICAgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHNldEFuZFZh
bGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgbnVsbCk7XG4gICAgICB9XG5cbiAgICAg
IHRoaXMudXBkYXRlQ2hpbGRyZW4obmV4dENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7
XG4gICAgfVxuICB9LFxuXG4gIGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJu
IGdldE5vZGUodGhpcyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGFsbCBldmVudCBy
ZWdpc3RyYXRpb25zIGZvciB0aGlzIGluc3RhbmNlLiBEb2VzIG5vdCByZW1vdmUgZnJvbVxuICAg
KiB0aGUgRE9NLiBUaGF0IG11c3QgYmUgZG9uZSBieSB0aGUgcGFyZW50LlxuICAgKlxuICAgKiBA
aW50ZXJuYWxcbiAgICovXG4gIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChzYWZlbHkpIHtc
biAgICBzd2l0Y2ggKHRoaXMuX3RhZykge1xuICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgY2Fz
ZSAnZm9ybSc6XG4gICAgICBjYXNlICdpZnJhbWUnOlxuICAgICAgY2FzZSAnaW1nJzpcbiAgICAg
IGNhc2UgJ2xpbmsnOlxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIGNhc2UgJ3NvdXJjZSc6
XG4gICAgICBjYXNlICd2aWRlbyc6XG4gICAgICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl93cmFw
cGVyU3RhdGUubGlzdGVuZXJzO1xuICAgICAgICBpZiAobGlzdGVuZXJzKSB7XG4gICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAg
IGxpc3RlbmVyc1tpXS5yZW1vdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAg
YnJlYWs7XG4gICAgICBjYXNlICdpbnB1dCc6XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAg
ICAgIGlucHV0VmFsdWVUcmFja2luZy5zdG9wVHJhY2tpbmcodGhpcyk7XG4gICAgICAgIGJyZWFr
O1xuICAgICAgY2FzZSAnaHRtbCc6XG4gICAgICBjYXNlICdoZWFkJzpcbiAgICAgIGNhc2UgJ2Jv
ZHknOlxuICAgICAgICAvKipcbiAgICAgICAgICogQ29tcG9uZW50cyBsaWtlIDxodG1sPiA8aGVh
ZD4gYW5kIDxib2R5PiBjYW4ndCBiZSByZW1vdmVkIG9yIGFkZGVkXG4gICAgICAgICAqIGVhc2ls
eSBpbiBhIGNyb3NzLWJyb3dzZXIgd2F5LCBob3dldmVyIGl0J3MgdmFsdWFibGUgdG8gYmUgYWJs
ZSB0b1xuICAgICAgICAgKiB0YWtlIGFkdmFudGFnZSBvZiBSZWFjdCdzIHJlY29uY2lsaWF0aW9u
IGZvciBzdHlsaW5nIGFuZCA8dGl0bGU+XG4gICAgICAgICAqIG1hbmFnZW1lbnQuIFNvIHdlIGp1
c3QgZG9jdW1lbnQgaXQgYW5kIHRocm93IGluIGRhbmdlcm91cyBjYXNlcy5cbiAgICAgICAgICov
XG4gICAgICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICc8JXM+IHRyaWVkIHRvIHVubW91bnQuIEJlY2F1c2Ugb2YgY3Jv
c3MtYnJvd3NlciBxdWlya3MgaXQgaXMgaW1wb3NzaWJsZSB0byB1bm1vdW50IHNvbWUgdG9wLWxl
dmVsIGNvbXBvbmVudHMgKGVnIDxodG1sPiwgPGhlYWQ+LCBhbmQgPGJvZHk+KSByZWxpYWJseSBh
bmQgZWZmaWNpZW50bHkuIFRvIGZpeCB0aGlzLCBoYXZlIGEgc2luZ2xlIHRvcC1sZXZlbCBjb21w
b25lbnQgdGhhdCBuZXZlciB1bm1vdW50cyByZW5kZXIgdGhlc2UgZWxlbWVudHMuJywgdGhpcy5f
dGFnKSA6IF9wcm9kSW52YXJpYW50KCc2NicsIHRoaXMuX3RhZykgOiB2b2lkIDA7XG4gICAgICAg
IGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMudW5tb3VudENoaWxkcmVuKHNhZmVseSk7XG4gICAg
UmVhY3RET01Db21wb25lbnRUcmVlLnVuY2FjaGVOb2RlKHRoaXMpO1xuICAgIEV2ZW50UGx1Z2lu
SHViLmRlbGV0ZUFsbExpc3RlbmVycyh0aGlzKTtcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gMDtc
biAgICB0aGlzLl9kb21JRCA9IDA7XG4gICAgdGhpcy5fd3JhcHBlclN0YXRlID0gbnVsbDtcblxu
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBz
ZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIG51bGwpO1xuICAgIH1cbiAg
fSxcblxuICBnZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBnZXRO
b2RlKHRoaXMpO1xuICB9XG59O1xuXG5fYXNzaWduKFJlYWN0RE9NQ29tcG9uZW50LnByb3RvdHlw
ZSwgUmVhY3RET01Db21wb25lbnQuTWl4aW4sIFJlYWN0TXVsdGlDaGlsZC5NaXhpbik7XG5cbm1v
ZHVsZS5leHBvcnRzID0gUmVhY3RET01Db21wb25lbnQ7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8v
XG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFj
dERPTUNvbXBvbmVudC5qc1xuLy8gbW9kdWxlIGlkID0gMTM4XG4vLyBtb2R1bGUgY2h1bmtzID0g
MCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZh
ciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJl
ZScpO1xuXG52YXIgZm9jdXNOb2RlID0gcmVxdWlyZSgnZmJqcy9saWIvZm9jdXNOb2RlJyk7XG5c
bnZhciBBdXRvRm9jdXNVdGlscyA9IHtcbiAgZm9jdXNET01Db21wb25lbnQ6IGZ1bmN0aW9uICgp
IHtcbiAgICBmb2N1c05vZGUoUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFu
Y2UodGhpcykpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEF1dG9Gb2N1c1V0aWxzO1xu
XG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1
bGVzL3JlYWN0LWRvbS9saWIvQXV0b0ZvY3VzVXRpbHMuanNcbi8vIG1vZHVsZSBpZCA9IDEzOVxu
Ly8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG52YXIgQ1NTUHJvcGVydHkgPSByZXF1aXJlKCcuL0NTU1Byb3BlcnR5
Jyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRp
b25FbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9S
ZWFjdEluc3RydW1lbnRhdGlvbicpO1xuXG52YXIgY2FtZWxpemVTdHlsZU5hbWUgPSByZXF1aXJl
KCdmYmpzL2xpYi9jYW1lbGl6ZVN0eWxlTmFtZScpO1xudmFyIGRhbmdlcm91c1N0eWxlVmFsdWUg
PSByZXF1aXJlKCcuL2Rhbmdlcm91c1N0eWxlVmFsdWUnKTtcbnZhciBoeXBoZW5hdGVTdHlsZU5h
bWUgPSByZXF1aXJlKCdmYmpzL2xpYi9oeXBoZW5hdGVTdHlsZU5hbWUnKTtcbnZhciBtZW1vaXpl
U3RyaW5nT25seSA9IHJlcXVpcmUoJ2ZianMvbGliL21lbW9pemVTdHJpbmdPbmx5Jyk7XG52YXIg
d2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIHByb2Nlc3NTdHls
ZU5hbWUgPSBtZW1vaXplU3RyaW5nT25seShmdW5jdGlvbiAoc3R5bGVOYW1lKSB7XG4gIHJldHVy
biBoeXBoZW5hdGVTdHlsZU5hbWUoc3R5bGVOYW1lKTtcbn0pO1xuXG52YXIgaGFzU2hvcnRoYW5k
UHJvcGVydHlCdWcgPSBmYWxzZTtcbnZhciBzdHlsZUZsb2F0QWNjZXNzb3IgPSAnY3NzRmxvYXQn
O1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICB2YXIgdGVtcFN0eWxl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7XG4gIHRyeSB7XG4gICAgLy8g
SUU4IHRocm93cyBcIkludmFsaWQgYXJndW1lbnQuXCIgaWYgcmVzZXR0aW5nIHNob3J0aGFuZCBz
dHlsZSBwcm9wZXJ0aWVzLlxuICAgIHRlbXBTdHlsZS5mb250ID0gJyc7XG4gIH0gY2F0Y2ggKGUp
IHtcbiAgICBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyA9IHRydWU7XG4gIH1cbiAgLy8gSUU4IG9u
bHkgc3VwcG9ydHMgYWNjZXNzaW5nIGNzc0Zsb2F0IChzdGFuZGFyZCkgYXMgc3R5bGVGbG9hdFxu
ICBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0ID09PSB1bmRlZmlu
ZWQpIHtcbiAgICBzdHlsZUZsb2F0QWNjZXNzb3IgPSAnc3R5bGVGbG9hdCc7XG4gIH1cbn1cblxu
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgLy8gJ21zVHJh
bnNmb3JtJyBpcyBjb3JyZWN0LCBidXQgdGhlIG90aGVyIHByZWZpeGVzIHNob3VsZCBiZSBjYXBp
dGFsaXplZFxuICB2YXIgYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuID0gL14oPzp3ZWJraXR8
bW96fG8pW0EtWl0vO1xuXG4gIC8vIHN0eWxlIHZhbHVlcyBzaG91bGRuJ3QgY29udGFpbiBhIHNl
bWljb2xvblxuICB2YXIgYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuID0gLztcXHMq
JC87XG5cbiAgdmFyIHdhcm5lZFN0eWxlTmFtZXMgPSB7fTtcbiAgdmFyIHdhcm5lZFN0eWxlVmFs
dWVzID0ge307XG4gIHZhciB3YXJuZWRGb3JOYU5WYWx1ZSA9IGZhbHNlO1xuXG4gIHZhciB3YXJu
SHlwaGVuYXRlZFN0eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lLCBvd25lcikge1xuICAgIGlmICh3
YXJuZWRTdHlsZU5hbWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5lZFN0eWxlTmFtZXNb
bmFtZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRTdHlsZU5hbWVzW25h
bWVdID0gdHJ1ZTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyhmYWxzZSwgJ1Vuc3VwcG9ydGVkIHN0eWxlIHByb3BlcnR5ICVzLiBEaWQgeW91IG1l
YW4gJXM/JXMnLCBuYW1lLCBjYW1lbGl6ZVN0eWxlTmFtZShuYW1lKSwgY2hlY2tSZW5kZXJNZXNz
YWdlKG93bmVyKSkgOiB2b2lkIDA7XG4gIH07XG5cbiAgdmFyIHdhcm5CYWRWZW5kb3JlZFN0eWxl
TmFtZSA9IGZ1bmN0aW9uIChuYW1lLCBvd25lcikge1xuICAgIGlmICh3YXJuZWRTdHlsZU5hbWVz
Lmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0pIHtcbiAgICAg
IHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRTdHlsZU5hbWVzW25hbWVdID0gdHJ1ZTtcbiAg
ICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwg
J1Vuc3VwcG9ydGVkIHZlbmRvci1wcmVmaXhlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBt
ZWFuICVzPyVzJywgbmFtZSwgbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xp
Y2UoMSksIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwO1xuICB9O1xuXG4gIHZh
ciB3YXJuU3R5bGVWYWx1ZVdpdGhTZW1pY29sb24gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG93
bmVyKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlVmFsdWVzLmhhc093blByb3BlcnR5KHZhbHVlKSAm
JiB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAg
ICB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0gPSB0cnVlO1xuICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCBcIlN0eWxlIHByb3BlcnR5IHZh
bHVlcyBzaG91bGRuJ3QgY29udGFpbiBhIHNlbWljb2xvbi4lcyBcIiArICdUcnkgXCIlczogJXNc
IiBpbnN0ZWFkLicsIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lciksIG5hbWUsIHZhbHVlLnJlcGxh
Y2UoYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuLCAnJykpIDogdm9pZCAwO1xuICB9
O1xuXG4gIHZhciB3YXJuU3R5bGVWYWx1ZUlzTmFOID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBv
d25lcikge1xuICAgIGlmICh3YXJuZWRGb3JOYU5WYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAg
IH1cblxuICAgIHdhcm5lZEZvck5hTlZhbHVlID0gdHJ1ZTtcbiAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2BOYU5gIGlzIGFuIGludmFs
aWQgdmFsdWUgZm9yIHRoZSBgJXNgIGNzcyBzdHlsZSBwcm9wZXJ0eS4lcycsIG5hbWUsIGNoZWNr
UmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwO1xuICB9O1xuXG4gIHZhciBjaGVja1JlbmRl
ck1lc3NhZ2UgPSBmdW5jdGlvbiAob3duZXIpIHtcbiAgICBpZiAob3duZXIpIHtcbiAgICAgIHZh
ciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgcmV0
dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICAg
IH1cbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0
cmluZ30gbmFtZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqIEBwYXJhbSB7UmVhY3RET01D
b21wb25lbnR9IGNvbXBvbmVudFxuICAgKi9cbiAgdmFyIHdhcm5WYWxpZFN0eWxlID0gZnVuY3Rp
b24gKG5hbWUsIHZhbHVlLCBjb21wb25lbnQpIHtcbiAgICB2YXIgb3duZXI7XG4gICAgaWYgKGNv
bXBvbmVudCkge1xuICAgICAgb3duZXIgPSBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25l
cjtcbiAgICB9XG4gICAgaWYgKG5hbWUuaW5kZXhPZignLScpID4gLTEpIHtcbiAgICAgIHdhcm5I
eXBoZW5hdGVkU3R5bGVOYW1lKG5hbWUsIG93bmVyKTtcbiAgICB9IGVsc2UgaWYgKGJhZFZlbmRv
cmVkU3R5bGVOYW1lUGF0dGVybi50ZXN0KG5hbWUpKSB7XG4gICAgICB3YXJuQmFkVmVuZG9yZWRT
dHlsZU5hbWUobmFtZSwgb3duZXIpO1xuICAgIH0gZWxzZSBpZiAoYmFkU3R5bGVWYWx1ZVdpdGhT
ZW1pY29sb25QYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICB3YXJuU3R5bGVWYWx1ZVdpdGhT
ZW1pY29sb24obmFtZSwgdmFsdWUsIG93bmVyKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZh
bHVlID09PSAnbnVtYmVyJyAmJiBpc05hTih2YWx1ZSkpIHtcbiAgICAgIHdhcm5TdHlsZVZhbHVl
SXNOYU4obmFtZSwgdmFsdWUsIG93bmVyKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogT3Bl
cmF0aW9ucyBmb3IgZGVhbGluZyB3aXRoIENTUyBwcm9wZXJ0aWVzLlxuICovXG52YXIgQ1NTUHJv
cGVydHlPcGVyYXRpb25zID0ge1xuICAvKipcbiAgICogU2VyaWFsaXplcyBhIG1hcHBpbmcgb2Yg
c3R5bGUgcHJvcGVydGllcyBmb3IgdXNlIGFzIGlubGluZSBzdHlsZXM6XG4gICAqXG4gICAqICAg
PiBjcmVhdGVNYXJrdXBGb3JTdHlsZXMoe3dpZHRoOiAnMjAwcHgnLCBoZWlnaHQ6IDB9KVxuICAg
KiAgIFwid2lkdGg6MjAwcHg7aGVpZ2h0OjA7XCJcbiAgICpcbiAgICogVW5kZWZpbmVkIHZhbHVl
cyBhcmUgaWdub3JlZCBzbyB0aGF0IGRlY2xhcmF0aXZlIHByb2dyYW1taW5nIGlzIGVhc2llci5c
biAgICogVGhlIHJlc3VsdCBzaG91bGQgYmUgSFRNTC1lc2NhcGVkIGJlZm9yZSBpbnNlcnRpb24g
aW50byB0aGUgRE9NLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gc3R5bGVzXG4gICAqIEBw
YXJhbSB7UmVhY3RET01Db21wb25lbnR9IGNvbXBvbmVudFxuICAgKiBAcmV0dXJuIHs/c3RyaW5n
fVxuICAgKi9cbiAgY3JlYXRlTWFya3VwRm9yU3R5bGVzOiBmdW5jdGlvbiAoc3R5bGVzLCBjb21w
b25lbnQpIHtcbiAgICB2YXIgc2VyaWFsaXplZCA9ICcnO1xuICAgIGZvciAodmFyIHN0eWxlTmFt
ZSBpbiBzdHlsZXMpIHtcbiAgICAgIGlmICghc3R5bGVzLmhhc093blByb3BlcnR5KHN0eWxlTmFt
ZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2YXIgaXNDdXN0b21Qcm9w
ZXJ0eSA9IHN0eWxlTmFtZS5pbmRleE9mKCctLScpID09PSAwO1xuICAgICAgdmFyIHN0eWxlVmFs
dWUgPSBzdHlsZXNbc3R5bGVOYW1lXTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmICghaXNDdXN0b21Qcm9wZXJ0eSkge1xuICAg
ICAgICAgIHdhcm5WYWxpZFN0eWxlKHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSwgY29tcG9uZW50KTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHN0eWxlVmFsdWUgIT0gbnVsbCkge1xuICAg
ICAgICBzZXJpYWxpemVkICs9IHByb2Nlc3NTdHlsZU5hbWUoc3R5bGVOYW1lKSArICc6JztcbiAg
ICAgICAgc2VyaWFsaXplZCArPSBkYW5nZXJvdXNTdHlsZVZhbHVlKHN0eWxlTmFtZSwgc3R5bGVW
YWx1ZSwgY29tcG9uZW50LCBpc0N1c3RvbVByb3BlcnR5KSArICc7JztcbiAgICAgIH1cbiAgICB9
XG4gICAgcmV0dXJuIHNlcmlhbGl6ZWQgfHwgbnVsbDtcbiAgfSxcblxuICAvKipcbiAgICogU2V0
cyB0aGUgdmFsdWUgZm9yIG11bHRpcGxlIHN0eWxlcyBvbiBhIG5vZGUuICBJZiBhIHZhbHVlIGlz
IHNwZWNpZmllZCBhc1xuICAgKiAnJyAoZW1wdHkgc3RyaW5nKSwgdGhlIGNvcnJlc3BvbmRpbmcg
c3R5bGUgcHJvcGVydHkgd2lsbCBiZSB1bnNldC5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVt
ZW50fSBub2RlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdHlsZXNcbiAgICogQHBhcmFtIHtSZWFj
dERPTUNvbXBvbmVudH0gY29tcG9uZW50XG4gICAqL1xuICBzZXRWYWx1ZUZvclN0eWxlczogZnVu
Y3Rpb24gKG5vZGUsIHN0eWxlcywgY29tcG9uZW50KSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICBpbnN0YW5jZUlEOiBjb21wb25lbnQu
X2RlYnVnSUQsXG4gICAgICAgIHR5cGU6ICd1cGRhdGUgc3R5bGVzJyxcbiAgICAgICAgcGF5bG9h
ZDogc3R5bGVzXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgc3R5bGUgPSBub2RlLnN0eWxl
O1xuICAgIGZvciAodmFyIHN0eWxlTmFtZSBpbiBzdHlsZXMpIHtcbiAgICAgIGlmICghc3R5bGVz
Lmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9
XG4gICAgICB2YXIgaXNDdXN0b21Qcm9wZXJ0eSA9IHN0eWxlTmFtZS5pbmRleE9mKCctLScpID09
PSAwO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgICAgaWYgKCFpc0N1c3RvbVByb3BlcnR5KSB7XG4gICAgICAgICAgd2FyblZhbGlkU3R5
bGUoc3R5bGVOYW1lLCBzdHlsZXNbc3R5bGVOYW1lXSwgY29tcG9uZW50KTtcbiAgICAgICAgfVxu
ICAgICAgfVxuICAgICAgdmFyIHN0eWxlVmFsdWUgPSBkYW5nZXJvdXNTdHlsZVZhbHVlKHN0eWxl
TmFtZSwgc3R5bGVzW3N0eWxlTmFtZV0sIGNvbXBvbmVudCwgaXNDdXN0b21Qcm9wZXJ0eSk7XG4g
ICAgICBpZiAoc3R5bGVOYW1lID09PSAnZmxvYXQnIHx8IHN0eWxlTmFtZSA9PT0gJ2Nzc0Zsb2F0
Jykge1xuICAgICAgICBzdHlsZU5hbWUgPSBzdHlsZUZsb2F0QWNjZXNzb3I7XG4gICAgICB9XG4g
ICAgICBpZiAoaXNDdXN0b21Qcm9wZXJ0eSkge1xuICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShz
dHlsZU5hbWUsIHN0eWxlVmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChzdHlsZVZhbHVlKSB7XG4g
ICAgICAgIHN0eWxlW3N0eWxlTmFtZV0gPSBzdHlsZVZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAg
ICAgICAgdmFyIGV4cGFuc2lvbiA9IGhhc1Nob3J0aGFuZFByb3BlcnR5QnVnICYmIENTU1Byb3Bl
cnR5LnNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uc1tzdHlsZU5hbWVdO1xuICAgICAgICBpZiAo
ZXhwYW5zaW9uKSB7XG4gICAgICAgICAgLy8gU2hvcnRoYW5kIHByb3BlcnR5IHRoYXQgSUU4IHdv
bid0IGxpa2UgdW5zZXR0aW5nLCBzbyB1bnNldCBlYWNoXG4gICAgICAgICAgLy8gY29tcG9uZW50
IHRvIHBsYWNhdGUgaXRcbiAgICAgICAgICBmb3IgKHZhciBpbmRpdmlkdWFsU3R5bGVOYW1lIGlu
IGV4cGFuc2lvbikge1xuICAgICAgICAgICAgc3R5bGVbaW5kaXZpZHVhbFN0eWxlTmFtZV0gPSAn
JztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3R5bGVbc3R5bGVO
YW1lXSA9ICcnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IENTU1Byb3BlcnR5T3BlcmF0aW9ucztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9c
bi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL0NTU1By
b3BlcnR5T3BlcmF0aW9ucy5qc1xuLy8gbW9kdWxlIGlkID0gMTQwXG4vLyBtb2R1bGUgY2h1bmtz
ID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGNhbWVsaXplID0gcmVxdWlyZSgnLi9jYW1lbGl6ZScp
O1xuXG52YXIgbXNQYXR0ZXJuID0gL14tbXMtLztcblxuLyoqXG4gKiBDYW1lbGNhc2VzIGEgaHlw
aGVuYXRlZCBDU1MgcHJvcGVydHkgbmFtZSwgZm9yIGV4YW1wbGU6XG4gKlxuICogICA+IGNhbWVs
aXplU3R5bGVOYW1lKCdiYWNrZ3JvdW5kLWNvbG9yJylcbiAqICAgPCBcImJhY2tncm91bmRDb2xv
clwiXG4gKiAgID4gY2FtZWxpemVTdHlsZU5hbWUoJy1tb3otdHJhbnNpdGlvbicpXG4gKiAgIDwg
XCJNb3pUcmFuc2l0aW9uXCJcbiAqICAgPiBjYW1lbGl6ZVN0eWxlTmFtZSgnLW1zLXRyYW5zaXRp
b24nKVxuICogICA8IFwibXNUcmFuc2l0aW9uXCJcbiAqXG4gKiBBcyBBbmRpIFNtaXRoIHN1Z2dl
c3RzXG4gKiAoaHR0cDovL3d3dy5hbmRpc21pdGguY29tL2Jsb2cvMjAxMi8wMi9tb2Rlcm5penIt
cHJlZml4ZWQvKSwgYW4gYC1tc2AgcHJlZml4XG4gKiBpcyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNl
IGBtc2AuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5n
fVxuICovXG5mdW5jdGlvbiBjYW1lbGl6ZVN0eWxlTmFtZShzdHJpbmcpIHtcbiAgcmV0dXJuIGNh
bWVsaXplKHN0cmluZy5yZXBsYWNlKG1zUGF0dGVybiwgJ21zLScpKTtcbn1cblxubW9kdWxlLmV4
cG9ydHMgPSBjYW1lbGl6ZVN0eWxlTmFtZTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdF
QlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9mYmpzL2xpYi9jYW1lbGl6ZVN0eWxlTmFt
ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTQxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlwidXNlIHN0
cmljdFwiO1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3Nc
biAqL1xuXG52YXIgX2h5cGhlblBhdHRlcm4gPSAvLSguKS9nO1xuXG4vKipcbiAqIENhbWVsY2Fz
ZXMgYSBoeXBoZW5hdGVkIHN0cmluZywgZm9yIGV4YW1wbGU6XG4gKlxuICogICA+IGNhbWVsaXpl
KCdiYWNrZ3JvdW5kLWNvbG9yJylcbiAqICAgPCBcImJhY2tncm91bmRDb2xvclwiXG4gKlxuICog
QHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlv
biBjYW1lbGl6ZShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKF9oeXBoZW5QYXR0
ZXJuLCBmdW5jdGlvbiAoXywgY2hhcmFjdGVyKSB7XG4gICAgcmV0dXJuIGNoYXJhY3Rlci50b1Vw
cGVyQ2FzZSgpO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYW1lbGl6ZTtcblxuXG4v
Ly8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9m
YmpzL2xpYi9jYW1lbGl6ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTQyXG4vLyBtb2R1bGUgY2h1bmtz
ID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBDU1NQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vQ1NTUHJvcGVydHknKTtcbnZhciB3YXJuaW5n
ID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgaXNVbml0bGVzc051bWJlciA9
IENTU1Byb3BlcnR5LmlzVW5pdGxlc3NOdW1iZXI7XG52YXIgc3R5bGVXYXJuaW5ncyA9IHt9O1xu
XG4vKipcbiAqIENvbnZlcnQgYSB2YWx1ZSBpbnRvIHRoZSBwcm9wZXIgY3NzIHdyaXRhYmxlIHZh
bHVlLiBUaGUgc3R5bGUgbmFtZSBgbmFtZWBcbiAqIHNob3VsZCBiZSBsb2dpY2FsIChubyBoeXBo
ZW5zKSwgYXMgc3BlY2lmaWVkXG4gKiBpbiBgQ1NTUHJvcGVydHkuaXNVbml0bGVzc051bWJlcmAu
XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgQ1NTIHByb3BlcnR5IG5hbWUgc3VjaCBhcyBg
dG9wTWFyZ2luYC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgQ1NTIHByb3BlcnR5IHZhbHVlIHN1Y2gg
YXMgYDEwcHhgLlxuICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9uZW50XG4gKiBA
cmV0dXJuIHtzdHJpbmd9IE5vcm1hbGl6ZWQgc3R5bGUgdmFsdWUgd2l0aCBkaW1lbnNpb25zIGFw
cGxpZWQuXG4gKi9cbmZ1bmN0aW9uIGRhbmdlcm91c1N0eWxlVmFsdWUobmFtZSwgdmFsdWUsIGNv
bXBvbmVudCwgaXNDdXN0b21Qcm9wZXJ0eSkge1xuICAvLyBOb3RlIHRoYXQgd2UndmUgcmVtb3Zl
ZCBlc2NhcGVUZXh0Rm9yQnJvd3NlcigpIGNhbGxzIGhlcmUgc2luY2UgdGhlXG4gIC8vIHdob2xl
IHN0cmluZyB3aWxsIGJlIGVzY2FwZWQgd2hlbiB0aGUgYXR0cmlidXRlIGlzIGluamVjdGVkIGlu
dG9cbiAgLy8gdGhlIG1hcmt1cC4gSWYgeW91IHByb3ZpZGUgdW5zYWZlIHVzZXIgZGF0YSBoZXJl
IHRoZXkgY2FuIGluamVjdFxuICAvLyBhcmJpdHJhcnkgQ1NTIHdoaWNoIG1heSBiZSBwcm9ibGVt
YXRpYyAoSSBjb3VsZG4ndCByZXBybyB0aGlzKTpcbiAgLy8gaHR0cHM6Ly93d3cub3dhc3Aub3Jn
L2luZGV4LnBocC9YU1NfRmlsdGVyX0V2YXNpb25fQ2hlYXRfU2hlZXRcbiAgLy8gaHR0cDovL3d3
dy50aGVzcGFubmVyLmNvLnVrLzIwMDcvMTEvMjYvdWx0aW1hdGUteHNzLWNzcy1pbmplY3Rpb24v
XG4gIC8vIFRoaXMgaXMgbm90IGFuIFhTUyBob2xlIGJ1dCBpbnN0ZWFkIGEgcG90ZW50aWFsIENT
UyBpbmplY3Rpb24gaXNzdWVcbiAgLy8gd2hpY2ggaGFzIGxlYWQgdG8gYSBncmVhdGVyIGRpc2N1
c3Npb24gYWJvdXQgaG93IHdlJ3JlIGdvaW5nIHRvXG4gIC8vIHRydXN0IFVSTHMgbW92aW5nIGZv
cndhcmQuIFNlZSAjMjExNTkwMVxuXG4gIHZhciBpc0VtcHR5ID0gdmFsdWUgPT0gbnVsbCB8fCB0
eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fCB2YWx1ZSA9PT0gJyc7XG4gIGlmIChpc0VtcHR5
KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgdmFyIGlzTm9uTnVtZXJpYyA9IGlzTmFOKHZh
bHVlKTtcbiAgaWYgKGlzQ3VzdG9tUHJvcGVydHkgfHwgaXNOb25OdW1lcmljIHx8IHZhbHVlID09
PSAwIHx8IGlzVW5pdGxlc3NOdW1iZXIuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgaXNVbml0bGVz
c051bWJlcltuYW1lXSkge1xuICAgIHJldHVybiAnJyArIHZhbHVlOyAvLyBjYXN0IHRvIHN0cmlu
Z1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gQWxsb3cgJzAn
IHRvIHBhc3MgdGhyb3VnaCB3aXRob3V0IHdhcm5pbmcuIDAgaXMgYWxyZWFkeSBzcGVjaWFsIGFu
ZFxuICAgICAgLy8gZG9lc24ndCByZXF1aXJlIHVuaXRzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHdh
cm4gYWJvdXQgaXQuXG4gICAgICBpZiAoY29tcG9uZW50ICYmIHZhbHVlICE9PSAnMCcpIHtcbiAg
ICAgICAgdmFyIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG4gICAg
ICAgIHZhciBvd25lck5hbWUgPSBvd25lciA/IG93bmVyLmdldE5hbWUoKSA6IG51bGw7XG4gICAg
ICAgIGlmIChvd25lck5hbWUgJiYgIXN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXSkge1xuICAgICAg
ICAgIHN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHZh
ciB3YXJuZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKG93bmVyTmFtZSkge1xuICAgICAgICAgIHZh
ciB3YXJuaW5ncyA9IHN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXTtcbiAgICAgICAgICB3YXJuZWQg
PSB3YXJuaW5nc1tuYW1lXTtcbiAgICAgICAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgICAgICAg
d2FybmluZ3NbbmFtZV0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBp
ZiAoIXdhcm5lZCkge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYSBgJXNgIHRhZyAob3duZXI6IGAlc2ApIHdhcyBwYXNz
ZWQgYSBudW1lcmljIHN0cmluZyB2YWx1ZSAnICsgJ2ZvciBDU1MgcHJvcGVydHkgYCVzYCAodmFs
dWU6IGAlc2ApIHdoaWNoIHdpbGwgYmUgdHJlYXRlZCAnICsgJ2FzIGEgdW5pdGxlc3MgbnVtYmVy
IGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUmVhY3QuJywgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVu
dC50eXBlLCBvd25lck5hbWUgfHwgJ3Vua25vd24nLCBuYW1lLCB2YWx1ZSkgOiB2b2lkIDA7XG4g
ICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG4gIH1c
biAgcmV0dXJuIHZhbHVlICsgJ3B4Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkYW5nZXJvdXNT
dHlsZVZhbHVlO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8v
IC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvZGFuZ2Vyb3VzU3R5bGVWYWx1ZS5qc1xuLy8g
bW9kdWxlIGlkID0gMTQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0
IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IGh5cGhlbmF0ZSA9IHJlcXVpcmUoJy4vaHlwaGVuYXRlJyk7XG5cbnZhciBtc1BhdHRlcm4gPSAv
Xm1zLS87XG5cbi8qKlxuICogSHlwaGVuYXRlcyBhIGNhbWVsY2FzZWQgQ1NTIHByb3BlcnR5IG5h
bWUsIGZvciBleGFtcGxlOlxuICpcbiAqICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ2JhY2tncm91
bmRDb2xvcicpXG4gKiAgIDwgXCJiYWNrZ3JvdW5kLWNvbG9yXCJcbiAqICAgPiBoeXBoZW5hdGVT
dHlsZU5hbWUoJ01velRyYW5zaXRpb24nKVxuICogICA8IFwiLW1vei10cmFuc2l0aW9uXCJcbiAq
ICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ21zVHJhbnNpdGlvbicpXG4gKiAgIDwgXCItbXMtdHJh
bnNpdGlvblwiXG4gKlxuICogQXMgTW9kZXJuaXpyIHN1Z2dlc3RzIChodHRwOi8vbW9kZXJuaXpy
LmNvbS9kb2NzLyNwcmVmaXhlZCksIGFuIGBtc2AgcHJlZml4XG4gKiBpcyBjb252ZXJ0ZWQgdG8g
YC1tcy1gLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmlu
Z31cbiAqL1xuZnVuY3Rpb24gaHlwaGVuYXRlU3R5bGVOYW1lKHN0cmluZykge1xuICByZXR1cm4g
aHlwaGVuYXRlKHN0cmluZykucmVwbGFjZShtc1BhdHRlcm4sICctbXMtJyk7XG59XG5cbm1vZHVs
ZS5leHBvcnRzID0gaHlwaGVuYXRlU3R5bGVOYW1lO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xu
Ly8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2ZianMvbGliL2h5cGhlbmF0ZVN0
eWxlTmFtZS5qc1xuLy8gbW9kdWxlIGlkID0gMTQ0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1
c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBlY2hl
Y2tzXG4gKi9cblxudmFyIF91cHBlcmNhc2VQYXR0ZXJuID0gLyhbQS1aXSkvZztcblxuLyoqXG4g
KiBIeXBoZW5hdGVzIGEgY2FtZWxjYXNlZCBzdHJpbmcsIGZvciBleGFtcGxlOlxuICpcbiAqICAg
PiBoeXBoZW5hdGUoJ2JhY2tncm91bmRDb2xvcicpXG4gKiAgIDwgXCJiYWNrZ3JvdW5kLWNvbG9y
XCJcbiAqXG4gKiBGb3IgQ1NTIHN0eWxlIG5hbWVzLCB1c2UgYGh5cGhlbmF0ZVN0eWxlTmFtZWAg
aW5zdGVhZCB3aGljaCB3b3JrcyBwcm9wZXJseVxuICogd2l0aCBhbGwgdmVuZG9yIHByZWZpeGVz
LCBpbmNsdWRpbmcgYG1zYC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0
dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGh5cGhlbmF0ZShzdHJpbmcpIHtcbiAgcmV0dXJu
IHN0cmluZy5yZXBsYWNlKF91cHBlcmNhc2VQYXR0ZXJuLCAnLSQxJykudG9Mb3dlckNhc2UoKTtc
bn1cblxubW9kdWxlLmV4cG9ydHMgPSBoeXBoZW5hdGU7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8v
XG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZmJqcy9saWIvaHlwaGVuYXRl
LmpzXG4vLyBtb2R1bGUgaWQgPSAxNDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBD
b3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTWVtb2l6ZXMgdGhlIHJldHVybiB2YWx1ZSBv
ZiBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBvbmUgc3RyaW5nIGFyZ3VtZW50LlxuICovXG5cbmZ1
bmN0aW9uIG1lbW9pemVTdHJpbmdPbmx5KGNhbGxiYWNrKSB7XG4gIHZhciBjYWNoZSA9IHt9O1xu
ICByZXR1cm4gZnVuY3Rpb24gKHN0cmluZykge1xuICAgIGlmICghY2FjaGUuaGFzT3duUHJvcGVy
dHkoc3RyaW5nKSkge1xuICAgICAgY2FjaGVbc3RyaW5nXSA9IGNhbGxiYWNrLmNhbGwodGhpcywg
c3RyaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlW3N0cmluZ107XG4gIH07XG59XG5cbm1v
ZHVsZS5leHBvcnRzID0gbWVtb2l6ZVN0cmluZ09ubHk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8v
XG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZmJqcy9saWIvbWVtb2l6ZVN0
cmluZ09ubHkuanNcbi8vIG1vZHVsZSBpZCA9IDE0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIv
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZXNj
YXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gcmVxdWlyZSgnLi9lc2NhcGVUZXh0Q29udGVudEZv
ckJyb3dzZXInKTtcblxuLyoqXG4gKiBFc2NhcGVzIGF0dHJpYnV0ZSB2YWx1ZSB0byBwcmV2ZW50
IHNjcmlwdGluZyBhdHRhY2tzLlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVmFsdWUgdG8gZXNj
YXBlLlxuICogQHJldHVybiB7c3RyaW5nfSBBbiBlc2NhcGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rp
b24gcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpIHtcbiAgcmV0dXJuICdcIicg
KyBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIodmFsdWUpICsgJ1wiJztcbn1cblxubW9kdWxl
LmV4cG9ydHMgPSBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlcjtcblxuXG4vLy8vLy8vLy8v
Ly8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL3F1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAxNDdc
bi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5c
bid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgnLi9FdmVudFBs
dWdpbkh1YicpO1xuXG5mdW5jdGlvbiBydW5FdmVudFF1ZXVlSW5CYXRjaChldmVudHMpIHtcbiAg
RXZlbnRQbHVnaW5IdWIuZW5xdWV1ZUV2ZW50cyhldmVudHMpO1xuICBFdmVudFBsdWdpbkh1Yi5w
cm9jZXNzRXZlbnRRdWV1ZShmYWxzZSk7XG59XG5cbnZhciBSZWFjdEV2ZW50RW1pdHRlck1peGlu
ID0ge1xuICAvKipcbiAgICogU3RyZWFtcyBhIGZpcmVkIHRvcC1sZXZlbCBldmVudCB0byBgRXZl
bnRQbHVnaW5IdWJgIHdoZXJlIHBsdWdpbnMgaGF2ZSB0aGVcbiAgICogb3Bwb3J0dW5pdHkgdG8g
Y3JlYXRlIGBSZWFjdEV2ZW50YHMgdG8gYmUgZGlzcGF0Y2hlZC5cbiAgICovXG4gIGhhbmRsZVRv
cExldmVsOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICB2YXIgZXZlbnRzID0gRXZlbnRQbHVnaW5IdWIuZXh0
cmFjdEV2ZW50cyh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVF
dmVudFRhcmdldCk7XG4gICAgcnVuRXZlbnRRdWV1ZUluQmF0Y2goZXZlbnRzKTtcbiAgfVxufTtc
blxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEV2ZW50RW1pdHRlck1peGluO1xuXG5cbi8vLy8vLy8v
Ly8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRv
bS9saWIvUmVhY3RFdmVudEVtaXR0ZXJNaXhpbi5qc1xuLy8gbW9kdWxlIGlkID0gMTQ4XG4vLyBt
b2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGli
L0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBtYXBwaW5nIG9m
IHN0YW5kYXJkIHZlbmRvciBwcmVmaXhlcyB1c2luZyB0aGUgZGVmaW5lZCBzdHlsZSBwcm9wZXJ0
eSBhbmQgZXZlbnQgbmFtZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3R5bGVQcm9wXG4gKiBA
cGFyYW0ge3N0cmluZ30gZXZlbnROYW1lXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5mdW5j
dGlvbiBtYWtlUHJlZml4TWFwKHN0eWxlUHJvcCwgZXZlbnROYW1lKSB7XG4gIHZhciBwcmVmaXhl
cyA9IHt9O1xuXG4gIHByZWZpeGVzW3N0eWxlUHJvcC50b0xvd2VyQ2FzZSgpXSA9IGV2ZW50TmFt
ZS50b0xvd2VyQ2FzZSgpO1xuICBwcmVmaXhlc1snV2Via2l0JyArIHN0eWxlUHJvcF0gPSAnd2Vi
a2l0JyArIGV2ZW50TmFtZTtcbiAgcHJlZml4ZXNbJ01veicgKyBzdHlsZVByb3BdID0gJ21veicg
KyBldmVudE5hbWU7XG4gIHByZWZpeGVzWydtcycgKyBzdHlsZVByb3BdID0gJ01TJyArIGV2ZW50
TmFtZTtcbiAgcHJlZml4ZXNbJ08nICsgc3R5bGVQcm9wXSA9ICdvJyArIGV2ZW50TmFtZS50b0xv
d2VyQ2FzZSgpO1xuXG4gIHJldHVybiBwcmVmaXhlcztcbn1cblxuLyoqXG4gKiBBIGxpc3Qgb2Yg
ZXZlbnQgbmFtZXMgdG8gYSBjb25maWd1cmFibGUgbGlzdCBvZiB2ZW5kb3IgcHJlZml4ZXMuXG4g
Ki9cbnZhciB2ZW5kb3JQcmVmaXhlcyA9IHtcbiAgYW5pbWF0aW9uZW5kOiBtYWtlUHJlZml4TWFw
KCdBbmltYXRpb24nLCAnQW5pbWF0aW9uRW5kJyksXG4gIGFuaW1hdGlvbml0ZXJhdGlvbjogbWFr
ZVByZWZpeE1hcCgnQW5pbWF0aW9uJywgJ0FuaW1hdGlvbkl0ZXJhdGlvbicpLFxuICBhbmltYXRp
b25zdGFydDogbWFrZVByZWZpeE1hcCgnQW5pbWF0aW9uJywgJ0FuaW1hdGlvblN0YXJ0JyksXG4g
IHRyYW5zaXRpb25lbmQ6IG1ha2VQcmVmaXhNYXAoJ1RyYW5zaXRpb24nLCAnVHJhbnNpdGlvbkVu
ZCcpXG59O1xuXG4vKipcbiAqIEV2ZW50IG5hbWVzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZGV0
ZWN0ZWQgYW5kIHByZWZpeGVkIChpZiBhcHBsaWNhYmxlKS5cbiAqL1xudmFyIHByZWZpeGVkRXZl
bnROYW1lcyA9IHt9O1xuXG4vKipcbiAqIEVsZW1lbnQgdG8gY2hlY2sgZm9yIHByZWZpeGVzIG9u
LlxuICovXG52YXIgc3R5bGUgPSB7fTtcblxuLyoqXG4gKiBCb290c3RyYXAgaWYgYSBET00gZXhp
c3RzLlxuICovXG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIHN0eWxl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7XG5cbiAgLy8gT24gc29tZSBw
bGF0Zm9ybXMsIGluIHBhcnRpY3VsYXIgc29tZSByZWxlYXNlcyBvZiBBbmRyb2lkIDQueCxcbiAg
Ly8gdGhlIHVuLXByZWZpeGVkIFwiYW5pbWF0aW9uXCIgYW5kIFwidHJhbnNpdGlvblwiIHByb3Bl
cnRpZXMgYXJlIGRlZmluZWQgb24gdGhlXG4gIC8vIHN0eWxlIG9iamVjdCBidXQgdGhlIGV2ZW50
cyB0aGF0IGZpcmUgd2lsbCBzdGlsbCBiZSBwcmVmaXhlZCwgc28gd2UgbmVlZFxuICAvLyB0byBj
aGVjayBpZiB0aGUgdW4tcHJlZml4ZWQgZXZlbnRzIGFyZSB1c2FibGUsIGFuZCBpZiBub3QgcmVt
b3ZlIHRoZW0gZnJvbSB0aGUgbWFwLlxuICBpZiAoISgnQW5pbWF0aW9uRXZlbnQnIGluIHdpbmRv
dykpIHtcbiAgICBkZWxldGUgdmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbjtc
biAgICBkZWxldGUgdmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbjtc
biAgICBkZWxldGUgdmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uO1xuICB9
XG5cbiAgLy8gU2FtZSBhcyBhYm92ZVxuICBpZiAoISgnVHJhbnNpdGlvbkV2ZW50JyBpbiB3aW5k
b3cpKSB7XG4gICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLnRyYW5zaXRpb25lbmQudHJhbnNpdGlv
bjtcbiAgfVxufVxuXG4vKipcbiAqIEF0dGVtcHRzIHRvIGRldGVybWluZSB0aGUgY29ycmVjdCB2
ZW5kb3IgcHJlZml4ZWQgZXZlbnQgbmFtZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRO
YW1lXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRWZW5kb3JQcmVmaXhl
ZEV2ZW50TmFtZShldmVudE5hbWUpIHtcbiAgaWYgKHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5h
bWVdKSB7XG4gICAgcmV0dXJuIHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5hbWVdO1xuICB9IGVs
c2UgaWYgKCF2ZW5kb3JQcmVmaXhlc1tldmVudE5hbWVdKSB7XG4gICAgcmV0dXJuIGV2ZW50TmFt
ZTtcbiAgfVxuXG4gIHZhciBwcmVmaXhNYXAgPSB2ZW5kb3JQcmVmaXhlc1tldmVudE5hbWVdO1xu
XG4gIGZvciAodmFyIHN0eWxlUHJvcCBpbiBwcmVmaXhNYXApIHtcbiAgICBpZiAocHJlZml4TWFw
Lmhhc093blByb3BlcnR5KHN0eWxlUHJvcCkgJiYgc3R5bGVQcm9wIGluIHN0eWxlKSB7XG4gICAg
ICByZXR1cm4gcHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0gPSBwcmVmaXhNYXBbc3R5bGVQ
cm9wXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0g
Z2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWU7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBX
RUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9nZXRWZW5kb3JQ
cmVmaXhlZEV2ZW50TmFtZS5qc1xuLy8gbW9kdWxlIGlkID0gMTQ5XG4vLyBtb2R1bGUgY2h1bmtz
ID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50JyksXG4g
ICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIERPTVByb3BlcnR5
T3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHlPcGVyYXRpb25zJyk7XG52YXIgTGlu
a2VkVmFsdWVVdGlscyA9IHJlcXVpcmUoJy4vTGlua2VkVmFsdWVVdGlscycpO1xudmFyIFJlYWN0
RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52
YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGludmFy
aWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1
aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBkaWRXYXJuVmFsdWVMaW5rID0gZmFsc2U7
XG52YXIgZGlkV2FybkNoZWNrZWRMaW5rID0gZmFsc2U7XG52YXIgZGlkV2FyblZhbHVlRGVmYXVs
dFZhbHVlID0gZmFsc2U7XG52YXIgZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCA9IGZhbHNl
O1xudmFyIGRpZFdhcm5Db250cm9sbGVkVG9VbmNvbnRyb2xsZWQgPSBmYWxzZTtcbnZhciBkaWRX
YXJuVW5jb250cm9sbGVkVG9Db250cm9sbGVkID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGZvcmNlVXBk
YXRlSWZNb3VudGVkKCkge1xuICBpZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuICAgIC8vIERPTSBj
b21wb25lbnQgaXMgc3RpbGwgbW91bnRlZDsgdXBkYXRlXG4gICAgUmVhY3RET01JbnB1dC51cGRh
dGVXcmFwcGVyKHRoaXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQ29udHJvbGxlZChwcm9wcykg
e1xuICB2YXIgdXNlc0NoZWNrZWQgPSBwcm9wcy50eXBlID09PSAnY2hlY2tib3gnIHx8IHByb3Bz
LnR5cGUgPT09ICdyYWRpbyc7XG4gIHJldHVybiB1c2VzQ2hlY2tlZCA/IHByb3BzLmNoZWNrZWQg
IT0gbnVsbCA6IHByb3BzLnZhbHVlICE9IG51bGw7XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyBh
biA8aW5wdXQ+IGhvc3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIHNldHRpbmcgdGhlc2Ugb3B0aW9u
YWxcbiAqIHByb3BzOiBgY2hlY2tlZGAsIGB2YWx1ZWAsIGBkZWZhdWx0Q2hlY2tlZGAsIGFuZCBg
ZGVmYXVsdFZhbHVlYC5cbiAqXG4gKiBJZiBgY2hlY2tlZGAgb3IgYHZhbHVlYCBhcmUgbm90IHN1
cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9uc1xuICogdGhhdCBhZmZlY3Qg
dGhlIGNoZWNrZWQgc3RhdGUgb3IgdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVs
ZW1lbnQuXG4gKlxuICogSWYgdGhleSBhcmUgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRlZmlu
ZWQpLCB0aGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsIG5vdFxuICogdHJpZ2dlciB1cGRhdGVzIHRv
IHRoZSBlbGVtZW50LiBJbnN0ZWFkLCB0aGUgcHJvcHMgbXVzdCBjaGFuZ2UgaW4gb3JkZXIgZm9y
XG4gKiB0aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLlxuICpcbiAqIFRoZSByZW5k
ZXJlZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYXMgdW5jaGVja2VkIChvciBgZGVmYXVs
dENoZWNrZWRgKVxuICogd2l0aCBhbiBlbXB0eSB2YWx1ZSAob3IgYGRlZmF1bHRWYWx1ZWApLlxu
ICpcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9XRC1odG1sNS0yMDEyMTAyNS90
aGUtaW5wdXQtZWxlbWVudC5odG1sXG4gKi9cbnZhciBSZWFjdERPTUlucHV0ID0ge1xuICBnZXRI
b3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuICAgIHZhciB2YWx1ZSA9IExpbmtl
ZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuICAgIHZhciBjaGVja2VkID0gTGlua2VkVmFs
dWVVdGlscy5nZXRDaGVja2VkKHByb3BzKTtcblxuICAgIHZhciBob3N0UHJvcHMgPSBfYXNzaWdu
KHtcbiAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBzZXQgLnR5cGUgYmVmb3JlIGFueSBvdGhlciBwcm9w
ZXJ0aWVzIChzZXR0aW5nIC52YWx1ZVxuICAgICAgLy8gYmVmb3JlIC50eXBlIG1lYW5zIC52YWx1
ZSBpcyBsb3N0IGluIElFMTEgYW5kIGJlbG93KVxuICAgICAgdHlwZTogdW5kZWZpbmVkLFxuICAg
ICAgLy8gTWFrZSBzdXJlIHdlIHNldCAuc3RlcCBiZWZvcmUgLnZhbHVlIChzZXR0aW5nIC52YWx1
ZSBiZWZvcmUgLnN0ZXBcbiAgICAgIC8vIG1lYW5zIC52YWx1ZSBpcyByb3VuZGVkIG9uIG1vdW50
LCBiYXNlZCB1cG9uIHN0ZXAgcHJlY2lzaW9uKVxuICAgICAgc3RlcDogdW5kZWZpbmVkLFxuICAg
ICAgLy8gTWFrZSBzdXJlIHdlIHNldCAubWluICYgLm1heCBiZWZvcmUgLnZhbHVlICh0byBlbnN1
cmUgcHJvcGVyIG9yZGVyXG4gICAgICAvLyBpbiBjb3JuZXIgY2FzZXMgc3VjaCBhcyBtaW4gb3Ig
bWF4IGRlcml2aW5nIGZyb20gdmFsdWUsIGUuZy4gSXNzdWUgIzcxNzApXG4gICAgICBtaW46IHVu
ZGVmaW5lZCxcbiAgICAgIG1heDogdW5kZWZpbmVkXG4gICAgfSwgcHJvcHMsIHtcbiAgICAgIGRl
ZmF1bHRDaGVja2VkOiB1bmRlZmluZWQsXG4gICAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCxc
biAgICAgIHZhbHVlOiB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBpbnN0Ll93cmFwcGVyU3RhdGUu
aW5pdGlhbFZhbHVlLFxuICAgICAgY2hlY2tlZDogY2hlY2tlZCAhPSBudWxsID8gY2hlY2tlZCA6
IGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZCxcbiAgICAgIG9uQ2hhbmdlOiBpbnN0
Ll93cmFwcGVyU3RhdGUub25DaGFuZ2VcbiAgICB9KTtcblxuICAgIHJldHVybiBob3N0UHJvcHM7
XG4gIH0sXG5cbiAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgTGlua2Vk
VmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygnaW5wdXQnLCBwcm9wcywgaW5zdC5fY3VycmVudEVs
ZW1lbnQuX293bmVyKTtcblxuICAgICAgdmFyIG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1lbnQu
X293bmVyO1xuXG4gICAgICBpZiAocHJvcHMudmFsdWVMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRp
ZFdhcm5WYWx1ZUxpbmspIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgdmFsdWVMaW5rYCBwcm9wIG9uIGBpbnB1dGAgaXMg
ZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQg
MDtcbiAgICAgICAgZGlkV2FyblZhbHVlTGluayA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAo
cHJvcHMuY2hlY2tlZExpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FybkNoZWNrZWRMaW5rKSB7
XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KGZhbHNlLCAnYGNoZWNrZWRMaW5rYCBwcm9wIG9uIGBpbnB1dGAgaXMgZGVwcmVjYXRlZDsgc2V0
IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDtcbiAgICAgICAgZGlk
V2FybkNoZWNrZWRMaW5rID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5jaGVja2Vk
ICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdENoZWNrZWQgIT09IHVuZGVmaW5lZCAmJiAh
ZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGNvbnRhaW5zIGFuIGlu
cHV0IG9mIHR5cGUgJXMgd2l0aCBib3RoIGNoZWNrZWQgYW5kIGRlZmF1bHRDaGVja2VkIHByb3Bz
LiAnICsgJ0lucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250
cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSBjaGVja2VkIHByb3AsIG9yIHRoZSBkZWZh
dWx0Q2hlY2tlZCBwcm9wLCBidXQgbm90ICcgKyAnYm90aCkuIERlY2lkZSBiZXR3ZWVuIHVzaW5n
IGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGFuZCByZW1v
dmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFj
dC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkgfHwgJ0Eg
Y29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2b2lkIDA7XG4gICAgICAgIGRpZFdhcm5DaGVja2Vk
RGVmYXVsdENoZWNrZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLnZhbHVlICE9
PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWRpZFdh
cm5WYWx1ZURlZmF1bHRWYWx1ZSkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGNvbnRhaW5zIGFuIGlucHV0IG9mIHR5
cGUgJXMgd2l0aCBib3RoIHZhbHVlIGFuZCBkZWZhdWx0VmFsdWUgcHJvcHMuICcgKyAnSW5wdXQg
ZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICco
c3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwg
YnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3Ig
dW5jb250cm9sbGVkIGlucHV0ICcgKyAnZWxlbWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBw
cm9wcy4gTW9yZSBpbmZvOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21w
b25lbnRzJywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcsIHByb3Bz
LnR5cGUpIDogdm9pZCAwO1xuICAgICAgICBkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUgPSB0cnVl
O1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0
VmFsdWU7XG4gICAgaW5zdC5fd3JhcHBlclN0YXRlID0ge1xuICAgICAgaW5pdGlhbENoZWNrZWQ6
IHByb3BzLmNoZWNrZWQgIT0gbnVsbCA/IHByb3BzLmNoZWNrZWQgOiBwcm9wcy5kZWZhdWx0Q2hl
Y2tlZCxcbiAgICAgIGluaXRpYWxWYWx1ZTogcHJvcHMudmFsdWUgIT0gbnVsbCA/IHByb3BzLnZh
bHVlIDogZGVmYXVsdFZhbHVlLFxuICAgICAgbGlzdGVuZXJzOiBudWxsLFxuICAgICAgb25DaGFu
Z2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KSxcbiAgICAgIGNvbnRyb2xsZWQ6IGlzQ29udHJv
bGxlZChwcm9wcylcbiAgICB9O1xuICB9LFxuXG4gIHVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9uIChp
bnN0KSB7XG4gICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFy
IGNvbnRyb2xsZWQgPSBpc0NvbnRyb2xsZWQocHJvcHMpO1xuICAgICAgdmFyIG93bmVyID0gaW5z
dC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXG4gICAgICBpZiAoIWluc3QuX3dyYXBwZXJTdGF0
ZS5jb250cm9sbGVkICYmIGNvbnRyb2xsZWQgJiYgIWRpZFdhcm5VbmNvbnRyb2xsZWRUb0NvbnRy
b2xsZWQpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsICclcyBpcyBjaGFuZ2luZyBhbiB1bmNvbnRyb2xsZWQgaW5wdXQgb2Yg
dHlwZSAlcyB0byBiZSBjb250cm9sbGVkLiAnICsgJ0lucHV0IGVsZW1lbnRzIHNob3VsZCBub3Qg
c3dpdGNoIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2EpLiAn
ICsgJ0RlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5w
dXQgJyArICdlbGVtZW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4gTW9yZSBp
bmZvOiBodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYm
IG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDtc
biAgICAgICAgZGlkV2FyblVuY29udHJvbGxlZFRvQ29udHJvbGxlZCA9IHRydWU7XG4gICAgICB9
XG4gICAgICBpZiAoaW5zdC5fd3JhcHBlclN0YXRlLmNvbnRyb2xsZWQgJiYgIWNvbnRyb2xsZWQg
JiYgIWRpZFdhcm5Db250cm9sbGVkVG9VbmNvbnRyb2xsZWQpIHtcbiAgICAgICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBpcyBjaGFu
Z2luZyBhIGNvbnRyb2xsZWQgaW5wdXQgb2YgdHlwZSAlcyB0byBiZSB1bmNvbnRyb2xsZWQuICcg
KyAnSW5wdXQgZWxlbWVudHMgc2hvdWxkIG5vdCBzd2l0Y2ggZnJvbSBjb250cm9sbGVkIHRvIHVu
Y29udHJvbGxlZCAob3IgdmljZSB2ZXJzYSkuICcgKyAnRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBj
b250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgZm9yIHRoZSBsaWZl
dGltZSBvZiB0aGUgY29tcG9uZW50LiBNb3JlIGluZm86IGh0dHBzOi8vZmIubWUvcmVhY3QtY29u
dHJvbGxlZC1jb21wb25lbnRzJywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBv
bmVudCcsIHByb3BzLnR5cGUpIDogdm9pZCAwO1xuICAgICAgICBkaWRXYXJuQ29udHJvbGxlZFRv
VW5jb250cm9sbGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBTaG91
bGRuJ3QgdGhpcyBiZSBnZXRDaGVja2VkKHByb3BzKT9cbiAgICB2YXIgY2hlY2tlZCA9IHByb3Bz
LmNoZWNrZWQ7XG4gICAgaWYgKGNoZWNrZWQgIT0gbnVsbCkge1xuICAgICAgRE9NUHJvcGVydHlP
cGVyYXRpb25zLnNldFZhbHVlRm9yUHJvcGVydHkoUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5v
ZGVGcm9tSW5zdGFuY2UoaW5zdCksICdjaGVja2VkJywgY2hlY2tlZCB8fCBmYWxzZSk7XG4gICAg
fVxuXG4gICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0
YW5jZShpbnN0KTtcbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHBy
b3BzKTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgaWYgKHZhbHVlID09PSAwICYm
IG5vZGUudmFsdWUgPT09ICcnKSB7XG4gICAgICAgIG5vZGUudmFsdWUgPSAnMCc7XG4gICAgICAg
IC8vIE5vdGU6IElFOSByZXBvcnRzIGEgbnVtYmVyIGlucHV0cyBhcyAndGV4dCcsIHNvIGNoZWNr
IHByb3BzIGluc3RlYWQuXG4gICAgICB9IGVsc2UgaWYgKHByb3BzLnR5cGUgPT09ICdudW1iZXIn
KSB7XG4gICAgICAgIC8vIFNpbXVsYXRlIGBpbnB1dC52YWx1ZUFzTnVtYmVyYC4gSUU5IGRvZXMg
bm90IHN1cHBvcnQgaXRcbiAgICAgICAgdmFyIHZhbHVlQXNOdW1iZXIgPSBwYXJzZUZsb2F0KG5v
ZGUudmFsdWUsIDEwKSB8fCAwO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgLy8gZXNsaW50LWRp
c2FibGUtbmV4dC1saW5lXG4gICAgICAgIHZhbHVlICE9IHZhbHVlQXNOdW1iZXIgfHxcbiAgICAg
ICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIHZhbHVlID09IHZhbHVlQXNO
dW1iZXIgJiYgbm9kZS52YWx1ZSAhPSB2YWx1ZSkge1xuICAgICAgICAgIC8vIENhc3QgYHZhbHVl
YCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlzIHNldCBjb3JyZWN0bHkuIFdoaWxl
XG4gICAgICAgICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRvIHRoaXMgYXMgbmVjZXNzYXJ5LCBq
c2RvbSBkb2Vzbid0LlxuICAgICAgICAgIG5vZGUudmFsdWUgPSAnJyArIHZhbHVlO1xuICAgICAg
ICB9XG4gICAgICB9IGVsc2UgaWYgKG5vZGUudmFsdWUgIT09ICcnICsgdmFsdWUpIHtcbiAgICAg
ICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMgc2V0
IGNvcnJlY3RseS4gV2hpbGVcbiAgICAgICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRvIHRoaXMg
YXMgbmVjZXNzYXJ5LCBqc2RvbSBkb2Vzbid0LlxuICAgICAgICBub2RlLnZhbHVlID0gJycgKyB2
YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb3BzLnZhbHVlID09IG51
bGwgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgLy8gSW4gQ2hyb21l
LCBhc3NpZ25pbmcgZGVmYXVsdFZhbHVlIHRvIGNlcnRhaW4gaW5wdXQgdHlwZXMgdHJpZ2dlcnMg
aW5wdXQgdmFsaWRhdGlvbi5cbiAgICAgICAgLy8gRm9yIG51bWJlciBpbnB1dHMsIHRoZSBkaXNw
bGF5IHZhbHVlIGxvc2VzIHRyYWlsaW5nIGRlY2ltYWwgcG9pbnRzLiBGb3IgZW1haWwgaW5wdXRz
LFxuICAgICAgICAvLyBDaHJvbWUgcmFpc2VzIFwiVGhlIHNwZWNpZmllZCB2YWx1ZSA8eD4gaXMg
bm90IGEgdmFsaWQgZW1haWwgYWRkcmVzc1wiLlxuICAgICAgICAvL1xuICAgICAgICAvLyBIZXJl
IHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUgZGVmYXVsdFZhbHVlIGhhcyBhY3R1YWxseSBjaGFuZ2Vk
LCBhdm9pZGluZyB0aGVzZSBwcm9ibGVtc1xuICAgICAgICAvLyB3aGVuIHRoZSB1c2VyIGlzIGlu
cHV0dGluZyB0ZXh0XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9m
YWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI1M1xuICAgICAgICBpZiAobm9kZS5kZWZhdWx0VmFsdWUg
IT09ICcnICsgcHJvcHMuZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgbm9kZS5kZWZhdWx0VmFs
dWUgPSAnJyArIHByb3BzLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAg
aWYgKHByb3BzLmNoZWNrZWQgPT0gbnVsbCAmJiBwcm9wcy5kZWZhdWx0Q2hlY2tlZCAhPSBudWxs
KSB7XG4gICAgICAgIG5vZGUuZGVmYXVsdENoZWNrZWQgPSAhIXByb3BzLmRlZmF1bHRDaGVja2Vk
O1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBwb3N0TW91bnRXcmFwcGVyOiBmdW5jdGlvbiAo
aW5zdCkge1xuICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4g
ICAgLy8gVGhpcyBpcyBpbiBwb3N0TW91bnQgYmVjYXVzZSB3ZSBuZWVkIGFjY2VzcyB0byB0aGUg
RE9NIG5vZGUsIHdoaWNoIGlzIG5vdFxuICAgIC8vIGF2YWlsYWJsZSB1bnRpbCBhZnRlciB0aGUg
Y29tcG9uZW50IGhhcyBtb3VudGVkLlxuICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRU
cmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG5cbiAgICAvLyBEZXRhY2ggdmFsdWUgZnJv
bSBkZWZhdWx0VmFsdWUuIFdlIHdvbid0IGRvIGFueXRoaW5nIGlmIHdlJ3JlIHdvcmtpbmcgb25c
biAgICAvLyBzdWJtaXQgb3IgcmVzZXQgaW5wdXRzIGFzIHRob3NlIHZhbHVlcyAmIGRlZmF1bHRW
YWx1ZXMgYXJlIGxpbmtlZC4gVGhleVxuICAgIC8vIGFyZSBub3QgcmVzZXRhYmxlIG5vZGVzIHNv
IHRoaXMgb3BlcmF0aW9uIGRvZXNuJ3QgbWF0dGVyIGFuZCBhY3R1YWxseVxuICAgIC8vIHJlbW92
ZXMgYnJvd3Nlci1kZWZhdWx0IHZhbHVlcyAoZWcgXCJTdWJtaXQgUXVlcnlcIikgd2hlbiBubyB2
YWx1ZSBpc1xuICAgIC8vIHByb3ZpZGVkLlxuXG4gICAgc3dpdGNoIChwcm9wcy50eXBlKSB7XG4g
ICAgICBjYXNlICdzdWJtaXQnOlxuICAgICAgY2FzZSAncmVzZXQnOlxuICAgICAgICBicmVhaztc
biAgICAgIGNhc2UgJ2NvbG9yJzpcbiAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgY2FzZSAnZGF0
ZXRpbWUnOlxuICAgICAgY2FzZSAnZGF0ZXRpbWUtbG9jYWwnOlxuICAgICAgY2FzZSAnbW9udGgn
OlxuICAgICAgY2FzZSAndGltZSc6XG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgLy8gVGhp
cyBmaXhlcyB0aGUgbm8tc2hvdyBpc3N1ZSBvbiBpT1MgU2FmYXJpIGFuZCBBbmRyb2lkIENocm9t
ZTpcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy83
MjMzXG4gICAgICAgIG5vZGUudmFsdWUgPSAnJztcbiAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGUu
ZGVmYXVsdFZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIG5v
ZGUudmFsdWUgPSBub2RlLnZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBO
b3JtYWxseSwgd2UnZCBqdXN0IGRvIGBub2RlLmNoZWNrZWQgPSBub2RlLmNoZWNrZWRgIHVwb24g
aW5pdGlhbCBtb3VudCwgbGVzcyB0aGlzIGJ1Z1xuICAgIC8vIHRoaXMgaXMgbmVlZGVkIHRvIHdv
cmsgYXJvdW5kIGEgY2hyb21lIGJ1ZyB3aGVyZSBzZXR0aW5nIGRlZmF1bHRDaGVja2VkXG4gICAg
Ly8gd2lsbCBzb21ldGltZXMgaW5mbHVlbmNlIHRoZSB2YWx1ZSBvZiBjaGVja2VkIChldmVuIGFm
dGVyIGRldGFjaG1lbnQpLlxuICAgIC8vIFJlZmVyZW5jZTogaHR0cHM6Ly9idWdzLmNocm9taXVt
Lm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjA4NDE2XG4gICAgLy8gV2UgbmVlZCB0
byB0ZW1wb3JhcmlseSB1bnNldCBuYW1lIHRvIGF2b2lkIGRpc3J1cHRpbmcgcmFkaW8gYnV0dG9u
IGdyb3Vwcy5cbiAgICB2YXIgbmFtZSA9IG5vZGUubmFtZTtcbiAgICBpZiAobmFtZSAhPT0gJycp
IHtcbiAgICAgIG5vZGUubmFtZSA9ICcnO1xuICAgIH1cbiAgICBub2RlLmRlZmF1bHRDaGVja2Vk
ID0gIW5vZGUuZGVmYXVsdENoZWNrZWQ7XG4gICAgbm9kZS5kZWZhdWx0Q2hlY2tlZCA9ICFub2Rl
LmRlZmF1bHRDaGVja2VkO1xuICAgIGlmIChuYW1lICE9PSAnJykge1xuICAgICAgbm9kZS5uYW1l
ID0gbmFtZTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZlbnQp
IHtcbiAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgdmFyIHJl
dHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2ZW50
KTtcblxuICAvLyBIZXJlIHdlIHVzZSBhc2FwIHRvIHdhaXQgdW50aWwgYWxsIHVwZGF0ZXMgaGF2
ZSBwcm9wYWdhdGVkLCB3aGljaFxuICAvLyBpcyBpbXBvcnRhbnQgd2hlbiB1c2luZyBjb250cm9s
bGVkIGNvbXBvbmVudHMgd2l0aGluIGxheWVyczpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zh
Y2Vib29rL3JlYWN0L2lzc3Vlcy8xNjk4XG4gIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRl
SWZNb3VudGVkLCB0aGlzKTtcblxuICB2YXIgbmFtZSA9IHByb3BzLm5hbWU7XG4gIGlmIChwcm9w
cy50eXBlID09PSAncmFkaW8nICYmIG5hbWUgIT0gbnVsbCkge1xuICAgIHZhciByb290Tm9kZSA9
IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpO1xuICAgIHZh
ciBxdWVyeVJvb3QgPSByb290Tm9kZTtcblxuICAgIHdoaWxlIChxdWVyeVJvb3QucGFyZW50Tm9k
ZSkge1xuICAgICAgcXVlcnlSb290ID0gcXVlcnlSb290LnBhcmVudE5vZGU7XG4gICAgfVxuXG4g
ICAgLy8gSWYgYHJvb3ROb2RlLmZvcm1gIHdhcyBub24tbnVsbCwgdGhlbiB3ZSBjb3VsZCB0cnkg
YGZvcm0uZWxlbWVudHNgLFxuICAgIC8vIGJ1dCB0aGF0IHNvbWV0aW1lcyBiZWhhdmVzIHN0cmFu
Z2VseSBpbiBJRTguIFdlIGNvdWxkIGFsc28gdHJ5IHVzaW5nXG4gICAgLy8gYGZvcm0uZ2V0RWxl
bWVudHNCeU5hbWVgLCBidXQgdGhhdCB3aWxsIG9ubHkgcmV0dXJuIGRpcmVjdCBjaGlsZHJlblxu
ICAgIC8vIGFuZCB3b24ndCBpbmNsdWRlIGlucHV0cyB0aGF0IHVzZSB0aGUgSFRNTDUgYGZvcm09
YCBhdHRyaWJ1dGUuIFNpbmNlXG4gICAgLy8gdGhlIGlucHV0IG1pZ2h0IG5vdCBldmVuIGJlIGlu
IGEgZm9ybSwgbGV0J3MganVzdCB1c2UgdGhlIGdsb2JhbFxuICAgIC8vIGBxdWVyeVNlbGVjdG9y
QWxsYCB0byBlbnN1cmUgd2UgZG9uJ3QgbWlzcyBhbnl0aGluZy5cbiAgICB2YXIgZ3JvdXAgPSBx
dWVyeVJvb3QucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbbmFtZT0nICsgSlNPTi5zdHJpbmdpZnko
JycgKyBuYW1lKSArICddW3R5cGU9XCJyYWRpb1wiXScpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBncm91cC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG90aGVyTm9kZSA9IGdyb3VwW2ld
O1xuICAgICAgaWYgKG90aGVyTm9kZSA9PT0gcm9vdE5vZGUgfHwgb3RoZXJOb2RlLmZvcm0gIT09
IHJvb3ROb2RlLmZvcm0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAvLyBU
aGlzIHdpbGwgdGhyb3cgaWYgcmFkaW8gYnV0dG9ucyByZW5kZXJlZCBieSBkaWZmZXJlbnQgY29w
aWVzIG9mIFJlYWN0XG4gICAgICAvLyBhbmQgdGhlIHNhbWUgbmFtZSBhcmUgcmVuZGVyZWQgaW50
byB0aGUgc2FtZSBmb3JtIChzYW1lIGFzICMxOTM5KS5cbiAgICAgIC8vIFRoYXQncyBwcm9iYWJs
eSBva2F5OyB3ZSBkb24ndCBzdXBwb3J0IGl0IGp1c3QgYXMgd2UgZG9uJ3Qgc3VwcG9ydFxuICAg
ICAgLy8gbWl4aW5nIFJlYWN0IHJhZGlvIGJ1dHRvbnMgd2l0aCBub24tUmVhY3Qgb25lcy5cbiAg
ICAgIHZhciBvdGhlckluc3RhbmNlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNl
RnJvbU5vZGUob3RoZXJOb2RlKTtcbiAgICAgICFvdGhlckluc3RhbmNlID8gcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0RE9NSW5w
dXQ6IE1peGluZyBSZWFjdCBhbmQgbm9uLVJlYWN0IHJhZGlvIGlucHV0cyB3aXRoIHRoZSBzYW1l
IGBuYW1lYCBpcyBub3Qgc3VwcG9ydGVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzkwJykgOiB2b2lk
IDA7XG4gICAgICAvLyBJZiB0aGlzIGlzIGEgY29udHJvbGxlZCByYWRpbyBidXR0b24gZ3JvdXAs
IGZvcmNpbmcgdGhlIGlucHV0IHRoYXRcbiAgICAgIC8vIHdhcyBwcmV2aW91c2x5IGNoZWNrZWQg
dG8gdXBkYXRlIHdpbGwgY2F1c2UgaXQgdG8gYmUgY29tZSByZS1jaGVja2VkXG4gICAgICAvLyBh
cyBhcHByb3ByaWF0ZS5cbiAgICAgIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZNb3Vu
dGVkLCBvdGhlckluc3RhbmNlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0dXJuVmFsdWU7
XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01JbnB1dDtcblxuXG4vLy8vLy8vLy8vLy8v
Ly8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGli
L1JlYWN0RE9NSW5wdXQuanNcbi8vIG1vZHVsZSBpZCA9IDE1MFxuLy8gbW9kdWxlIGNodW5rcyA9
IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7
XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19P
Ul9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNT
ZWNyZXQ7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9u
b2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qc1xuLy8gbW9k
dWxlIGlkID0gMTUxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2Jq
ZWN0LWFzc2lnbicpO1xuXG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3QnKTtc
bnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50
VHJlZScpO1xudmFyIFJlYWN0RE9NU2VsZWN0ID0gcmVxdWlyZSgnLi9SZWFjdERPTVNlbGVjdCcp
O1xuXG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcbnZhciBkaWRX
YXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGZsYXR0ZW5DaGls
ZHJlbihjaGlsZHJlbikge1xuICB2YXIgY29udGVudCA9ICcnO1xuXG4gIC8vIEZsYXR0ZW4gY2hp
bGRyZW4gYW5kIHdhcm4gaWYgdGhleSBhcmVuJ3Qgc3RyaW5ncyBvciBudW1iZXJzO1xuICAvLyBp
bnZhbGlkIHR5cGVzIGFyZSBpZ25vcmVkLlxuICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxk
cmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICBpZiAoY2hpbGQgPT0gbnVsbCkge1xuICAgICAg
cmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGNoaWxkID09PSAnc3RyaW5nJyB8fCB0eXBl
b2YgY2hpbGQgPT09ICdudW1iZXInKSB7XG4gICAgICBjb250ZW50ICs9IGNoaWxkO1xuICAgIH0g
ZWxzZSBpZiAoIWRpZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4pIHtcbiAgICAgIGRpZFdhcm5J
bnZhbGlkT3B0aW9uQ2hpbGRyZW4gPSB0cnVlO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdPbmx5IHN0cmluZ3MgYW5kIG51bWJl
cnMgYXJlIHN1cHBvcnRlZCBhcyA8b3B0aW9uPiBjaGlsZHJlbi4nKSA6IHZvaWQgMDtcbiAgICB9
XG4gIH0pO1xuXG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vKipcbiAqIEltcGxlbWVudHMgYW4g
PG9wdGlvbj4gaG9zdCBjb21wb25lbnQgdGhhdCB3YXJucyB3aGVuIGBzZWxlY3RlZGAgaXMgc2V0
LlxuICovXG52YXIgUmVhY3RET01PcHRpb24gPSB7XG4gIG1vdW50V3JhcHBlcjogZnVuY3Rpb24g
KGluc3QsIHByb3BzLCBob3N0UGFyZW50KSB7XG4gICAgLy8gVE9ETyAoeXVuZ3N0ZXJzKTogUmVt
b3ZlIHN1cHBvcnQgZm9yIGBzZWxlY3RlZGAgaW4gPG9wdGlvbj4uXG4gICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLnNlbGVjdGVkID09IG51bGwsICdV
c2UgdGhlIGBkZWZhdWx0VmFsdWVgIG9yIGB2YWx1ZWAgcHJvcHMgb24gPHNlbGVjdD4gaW5zdGVh
ZCBvZiAnICsgJ3NldHRpbmcgYHNlbGVjdGVkYCBvbiA8b3B0aW9uPi4nKSA6IHZvaWQgMDtcbiAg
ICB9XG5cbiAgICAvLyBMb29rIHVwIHdoZXRoZXIgdGhpcyBvcHRpb24gaXMgJ3NlbGVjdGVkJ1xu
ICAgIHZhciBzZWxlY3RWYWx1ZSA9IG51bGw7XG4gICAgaWYgKGhvc3RQYXJlbnQgIT0gbnVsbCkg
e1xuICAgICAgdmFyIHNlbGVjdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG5cbiAgICAgIGlmIChzZWxl
Y3RQYXJlbnQuX3RhZyA9PT0gJ29wdGdyb3VwJykge1xuICAgICAgICBzZWxlY3RQYXJlbnQgPSBz
ZWxlY3RQYXJlbnQuX2hvc3RQYXJlbnQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxlY3RQYXJl
bnQgIT0gbnVsbCAmJiBzZWxlY3RQYXJlbnQuX3RhZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgICAg
c2VsZWN0VmFsdWUgPSBSZWFjdERPTVNlbGVjdC5nZXRTZWxlY3RWYWx1ZUNvbnRleHQoc2VsZWN0
UGFyZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgdmFsdWUgaXMgbnVsbCAo
ZS5nLiwgbm8gc3BlY2lmaWVkIHZhbHVlIG9yIGFmdGVyIGluaXRpYWwgbW91bnQpXG4gICAgLy8g
b3IgbWlzc2luZyAoZS5nLiwgZm9yIDxkYXRhbGlzdD4pLCB3ZSBkb24ndCBjaGFuZ2UgcHJvcHMu
c2VsZWN0ZWRcbiAgICB2YXIgc2VsZWN0ZWQgPSBudWxsO1xuICAgIGlmIChzZWxlY3RWYWx1ZSAh
PSBudWxsKSB7XG4gICAgICB2YXIgdmFsdWU7XG4gICAgICBpZiAocHJvcHMudmFsdWUgIT0gbnVs
bCkge1xuICAgICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlICsgJyc7XG4gICAgICB9IGVsc2Uge1xu
ICAgICAgICB2YWx1ZSA9IGZsYXR0ZW5DaGlsZHJlbihwcm9wcy5jaGlsZHJlbik7XG4gICAgICB9
XG4gICAgICBzZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0
VmFsdWUpKSB7XG4gICAgICAgIC8vIG11bHRpcGxlXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc2VsZWN0VmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoJycgKyBzZWxlY3RW
YWx1ZVtpXSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkID0gdHJ1ZTtcbiAgICAg
ICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAg
ICAgICAgc2VsZWN0ZWQgPSAnJyArIHNlbGVjdFZhbHVlID09PSB2YWx1ZTtcbiAgICAgIH1cbiAg
ICB9XG5cbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7IHNlbGVjdGVkOiBzZWxlY3RlZCB9O1xu
ICB9LFxuXG4gIHBvc3RNb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgLy8gdmFs
dWU9XCJcIiBzaG91bGQgbWFrZSBhIHZhbHVlIGF0dHJpYnV0ZSAoIzYyMTkpXG4gICAgdmFyIHBy
b3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG4gICAgaWYgKHByb3BzLnZhbHVlICE9
IG51bGwpIHtcbiAgICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVG
cm9tSW5zdGFuY2UoaW5zdCk7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBwcm9w
cy52YWx1ZSk7XG4gICAgfVxuICB9LFxuXG4gIGdldEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3Qs
IHByb3BzKSB7XG4gICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24oeyBzZWxlY3RlZDogdW5kZWZp
bmVkLCBjaGlsZHJlbjogdW5kZWZpbmVkIH0sIHByb3BzKTtcblxuICAgIC8vIFJlYWQgc3RhdGUg
b25seSBmcm9tIGluaXRpYWwgbW91bnQgYmVjYXVzZSA8c2VsZWN0PiB1cGRhdGVzIHZhbHVlXG4g
ICAgLy8gbWFudWFsbHk7IHdlIG5lZWQgdGhlIGluaXRpYWwgc3RhdGUgb25seSBmb3Igc2VydmVy
IHJlbmRlcmluZ1xuICAgIGlmIChpbnN0Ll93cmFwcGVyU3RhdGUuc2VsZWN0ZWQgIT0gbnVsbCkg
e1xuICAgICAgaG9zdFByb3BzLnNlbGVjdGVkID0gaW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVk
O1xuICAgIH1cblxuICAgIHZhciBjb250ZW50ID0gZmxhdHRlbkNoaWxkcmVuKHByb3BzLmNoaWxk
cmVuKTtcblxuICAgIGlmIChjb250ZW50KSB7XG4gICAgICBob3N0UHJvcHMuY2hpbGRyZW4gPSBj
b250ZW50O1xuICAgIH1cblxuICAgIHJldHVybiBob3N0UHJvcHM7XG4gIH1cbn07XG5cbm1vZHVs
ZS5leHBvcnRzID0gUmVhY3RET01PcHRpb247XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBX
RUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTU9w
dGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMTUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxu
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZElu
dmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50JyksXG4gICAgX2Fzc2lnbiA9
IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIExpbmtlZFZhbHVlVXRpbHMgPSByZXF1
aXJlKCcuL0xpbmtlZFZhbHVlVXRpbHMnKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBy
ZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJl
cXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpz
L2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fybmlu
ZycpO1xuXG52YXIgZGlkV2FyblZhbHVlTGluayA9IGZhbHNlO1xudmFyIGRpZFdhcm5WYWxEZWZh
dWx0VmFsID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3VudGVkKCkge1xuICBp
ZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuICAgIC8vIERPTSBjb21wb25lbnQgaXMgc3RpbGwgbW91
bnRlZDsgdXBkYXRlXG4gICAgUmVhY3RET01UZXh0YXJlYS51cGRhdGVXcmFwcGVyKHRoaXMpO1xu
ICB9XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyBhIDx0ZXh0YXJlYT4gaG9zdCBjb21wb25lbnQg
dGhhdCBhbGxvd3Mgc2V0dGluZyBgdmFsdWVgLCBhbmRcbiAqIGBkZWZhdWx0VmFsdWVgLiBUaGlz
IGRpZmZlcnMgZnJvbSB0aGUgdHJhZGl0aW9uYWwgRE9NIEFQSSBiZWNhdXNlIHZhbHVlIGlzXG4g
KiB1c3VhbGx5IHNldCBhcyBQQ0RBVEEgY2hpbGRyZW4uXG4gKlxuICogSWYgYHZhbHVlYCBpcyBu
b3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zIHRoYXQgYWZmZWN0
IHRoZVxuICogdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuXG4gKlxu
ICogSWYgYHZhbHVlYCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSBy
ZW5kZXJlZCBlbGVtZW50IHdpbGxcbiAqIG5vdCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1l
bnQuIEluc3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBjaGFuZ2UgaW5cbiAqIG9yZGVyIGZv
ciB0aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLlxuICpcbiAqIFRoZSByZW5kZXJl
ZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCBhbiBlbXB0eSB2YWx1ZSwgdGhlIHBy
b3BcbiAqIGBkZWZhdWx0VmFsdWVgIGlmIHNwZWNpZmllZCwgb3IgdGhlIGNoaWxkcmVuIGNvbnRl
bnQgKGRlcHJlY2F0ZWQpLlxuICovXG52YXIgUmVhY3RET01UZXh0YXJlYSA9IHtcbiAgZ2V0SG9z
dFByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICAhKHByb3BzLmRhbmdlcm91c2x5
U2V0SW5uZXJIVE1MID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2BkYW5nZXJvdXNseVNldElubmVySFRNTGAgZG9lcyBu
b3QgbWFrZSBzZW5zZSBvbiA8dGV4dGFyZWE+LicpIDogX3Byb2RJbnZhcmlhbnQoJzkxJykgOiB2
b2lkIDA7XG5cbiAgICAvLyBBbHdheXMgc2V0IGNoaWxkcmVuIHRvIHRoZSBzYW1lIHRoaW5nLiBJ
biBJRTksIHRoZSBzZWxlY3Rpb24gcmFuZ2Ugd2lsbFxuICAgIC8vIGdldCByZXNldCBpZiBgdGV4
dENvbnRlbnRgIGlzIG11dGF0ZWQuICBXZSBjb3VsZCBhZGQgYSBjaGVjayBpbiBzZXRUZXh0Q29u
dGVudFxuICAgIC8vIHRvIG9ubHkgc2V0IHRoZSB2YWx1ZSBpZi93aGVuIHRoZSB2YWx1ZSBkaWZm
ZXJzIGZyb20gdGhlIG5vZGUgdmFsdWUgKHdoaWNoIHdvdWxkXG4gICAgLy8gY29tcGxldGVseSBz
b2x2ZSB0aGlzIElFOSBidWcpLCBidXQgU2ViYXN0aWFuK0JlbiBzZWVtZWQgdG8gbGlrZSB0aGlz
IHNvbHV0aW9uLlxuICAgIC8vIFRoZSB2YWx1ZSBjYW4gYmUgYSBib29sZWFuIG9yIG9iamVjdCBz
byB0aGF0J3Mgd2h5IGl0J3MgZm9yY2VkIHRvIGJlIGEgc3RyaW5nLlxuICAgIHZhciBob3N0UHJv
cHMgPSBfYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAg
IGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgY2hpbGRyZW46ICcnICsgaW5zdC5fd3Jh
cHBlclN0YXRlLmluaXRpYWxWYWx1ZSxcbiAgICAgIG9uQ2hhbmdlOiBpbnN0Ll93cmFwcGVyU3Rh
dGUub25DaGFuZ2VcbiAgICB9KTtcblxuICAgIHJldHVybiBob3N0UHJvcHM7XG4gIH0sXG5cbiAg
bW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgTGlua2VkVmFsdWVVdGlscy5j
aGVja1Byb3BUeXBlcygndGV4dGFyZWEnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293
bmVyKTtcbiAgICAgIGlmIChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2Fy
blZhbHVlTGluaykge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhmYWxzZSwgJ2B2YWx1ZUxpbmtgIHByb3Agb24gYHRleHRhcmVhYCBpcyBk
ZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFkLicpIDogdm9pZCAw
O1xuICAgICAgICBkaWRXYXJuVmFsdWVMaW5rID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChw
cm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZp
bmVkICYmICFkaWRXYXJuVmFsRGVmYXVsdFZhbCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1RleHRhcmVhIGVsZW1lbnRz
IG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkg
ZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3Qg
JyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJv
bGxlZCB0ZXh0YXJlYSAnICsgJ2FuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGlu
Zm86ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnKSA6IHZv
aWQgMDtcbiAgICAgICAgZGlkV2FyblZhbERlZmF1bHRWYWwgPSB0cnVlO1xuICAgICAgfVxuICAg
IH1cblxuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xu
ICAgIHZhciBpbml0aWFsVmFsdWUgPSB2YWx1ZTtcblxuICAgIC8vIE9ubHkgYm90aGVyIGZldGNo
aW5nIGRlZmF1bHQgdmFsdWUgaWYgd2UncmUgZ29pbmcgdG8gdXNlIGl0XG4gICAgaWYgKHZhbHVl
ID09IG51bGwpIHtcbiAgICAgIHZhciBkZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7
XG4gICAgICAvLyBUT0RPICh5dW5nc3RlcnMpOiBSZW1vdmUgc3VwcG9ydCBmb3IgY2hpbGRyZW4g
Y29udGVudCBpbiA8dGV4dGFyZWE+LlxuICAgICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRy
ZW47XG4gICAgICBpZiAoY2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVXNlIHRoZSBgZGVmYXVs
dFZhbHVlYCBvciBgdmFsdWVgIHByb3BzIGluc3RlYWQgb2Ygc2V0dGluZyAnICsgJ2NoaWxkcmVu
IG9uIDx0ZXh0YXJlYT4uJykgOiB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAgICAgIShkZWZhdWx0
VmFsdWUgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnSWYgeW91IHN1cHBseSBgZGVmYXVsdFZhbHVlYCBvbiBhIDx0ZXh0
YXJlYT4sIGRvIG5vdCBwYXNzIGNoaWxkcmVuLicpIDogX3Byb2RJbnZhcmlhbnQoJzkyJykgOiB2
b2lkIDA7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICAg
ICEoY2hpbGRyZW4ubGVuZ3RoIDw9IDEpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJzx0ZXh0YXJlYT4gY2FuIG9ubHkgaGF2ZSBhdCBt
b3N0IG9uZSBjaGlsZC4nKSA6IF9wcm9kSW52YXJpYW50KCc5MycpIDogdm9pZCAwO1xuICAgICAg
ICAgIGNoaWxkcmVuID0gY2hpbGRyZW5bMF07XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0
VmFsdWUgPSAnJyArIGNoaWxkcmVuO1xuICAgICAgfVxuICAgICAgaWYgKGRlZmF1bHRWYWx1ZSA9
PSBudWxsKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9ICcnO1xuICAgICAgfVxuICAgICAgaW5p
dGlhbFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIGluc3QuX3dyYXBwZXJTdGF0
ZSA9IHtcbiAgICAgIGluaXRpYWxWYWx1ZTogJycgKyBpbml0aWFsVmFsdWUsXG4gICAgICBsaXN0
ZW5lcnM6IG51bGwsXG4gICAgICBvbkNoYW5nZTogX2hhbmRsZUNoYW5nZS5iaW5kKGluc3QpXG4g
ICAgfTtcbiAgfSxcblxuICB1cGRhdGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIHZh
ciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4gICAgdmFyIG5vZGUgPSBS
ZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcbiAgICB2YXIg
dmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpZiAodmFsdWUg
IT0gbnVsbCkge1xuICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0
aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hpbGVcbiAgICAgIC8vIGJyb3dzZXJzIHR5cGlj
YWxseSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwganNkb20gZG9lc24ndC5cbiAgICAgIHZhciBuZXdW
YWx1ZSA9ICcnICsgdmFsdWU7XG5cbiAgICAgIC8vIFRvIGF2b2lkIHNpZGUgZWZmZWN0cyAoc3Vj
aCBhcyBsb3NpbmcgdGV4dCBzZWxlY3Rpb24pLCBvbmx5IHNldCB2YWx1ZSBpZiBjaGFuZ2VkXG4g
ICAgICBpZiAobmV3VmFsdWUgIT09IG5vZGUudmFsdWUpIHtcbiAgICAgICAgbm9kZS52YWx1ZSA9
IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmRlZmF1bHRWYWx1ZSA9PSBudWxs
KSB7XG4gICAgICAgIG5vZGUuZGVmYXVsdFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAg
fVxuICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuICAgICAgbm9kZS5kZWZh
dWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7XG4gICAgfVxuICB9LFxuXG4gIHBvc3RNb3Vu
dFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgLy8gVGhpcyBpcyBpbiBwb3N0TW91bnQg
YmVjYXVzZSB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgRE9NIG5vZGUsIHdoaWNoIGlzIG5vdFxuICAg
IC8vIGF2YWlsYWJsZSB1bnRpbCBhZnRlciB0aGUgY29tcG9uZW50IGhhcyBtb3VudGVkLlxuICAg
IHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5z
dCk7XG4gICAgdmFyIHRleHRDb250ZW50ID0gbm9kZS50ZXh0Q29udGVudDtcblxuICAgIC8vIE9u
bHkgc2V0IG5vZGUudmFsdWUgaWYgdGV4dENvbnRlbnQgaXMgZXF1YWwgdG8gdGhlIGV4cGVjdGVk
XG4gICAgLy8gaW5pdGlhbCB2YWx1ZS4gSW4gSUUxMC9JRTExIHRoZXJlIGlzIGEgYnVnIHdoZXJl
IHRoZSBwbGFjZWhvbGRlciBhdHRyaWJ1dGVcbiAgICAvLyB3aWxsIHBvcHVsYXRlIHRleHRDb250
ZW50IGFzIHdlbGwuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubWljcm9zb2Z0LmNvbS9taWNy
b3NvZnQtZWRnZS9wbGF0Zm9ybS9pc3N1ZXMvMTAxNTI1L1xuICAgIGlmICh0ZXh0Q29udGVudCA9
PT0gaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSkge1xuICAgICAgbm9kZS52YWx1ZSA9
IHRleHRDb250ZW50O1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gX2hhbmRsZUNoYW5nZShl
dmVudCkge1xuICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgdmFy
IHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2
ZW50KTtcbiAgUmVhY3RVcGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIHRoaXMpO1xu
ICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01UZXh0
YXJlYTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25v
ZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NVGV4dGFyZWEuanNcbi8vIG1vZHVsZSBp
ZCA9IDE1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcu
L3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9
IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0SW5zdGFu
Y2VNYXAgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VNYXAnKTtcbnZhciBSZWFjdEluc3RydW1l
bnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVtZW50YXRpb24nKTtcblxudmFyIFJlYWN0
Q3VycmVudE93bmVyID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyJyk7XG52
YXIgUmVhY3RSZWNvbmNpbGVyID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTtcbnZhciBS
ZWFjdENoaWxkUmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RDaGlsZFJlY29uY2lsZXInKTtc
blxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7
XG52YXIgZmxhdHRlbkNoaWxkcmVuID0gcmVxdWlyZSgnLi9mbGF0dGVuQ2hpbGRyZW4nKTtcbnZh
ciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBN
YWtlIGFuIHVwZGF0ZSBmb3IgbWFya3VwIHRvIGJlIHJlbmRlcmVkIGFuZCBpbnNlcnRlZCBhdCBh
IHN1cHBsaWVkIGluZGV4LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRo
YXQgcmVuZGVycyBpbnRvIGFuIGVsZW1lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBE
ZXN0aW5hdGlvbiBpbmRleC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIG1ha2VJbnNlcnRN
YXJrdXAobWFya3VwLCBhZnRlck5vZGUsIHRvSW5kZXgpIHtcbiAgLy8gTk9URTogTnVsbCB2YWx1
ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdJTlNFUlRf
TUFSS1VQJyxcbiAgICBjb250ZW50OiBtYXJrdXAsXG4gICAgZnJvbUluZGV4OiBudWxsLFxuICAg
IGZyb21Ob2RlOiBudWxsLFxuICAgIHRvSW5kZXg6IHRvSW5kZXgsXG4gICAgYWZ0ZXJOb2RlOiBh
ZnRlck5vZGVcbiAgfTtcbn1cblxuLyoqXG4gKiBNYWtlIGFuIHVwZGF0ZSBmb3IgbW92aW5nIGFu
IGV4aXN0aW5nIGVsZW1lbnQgdG8gYW5vdGhlciBpbmRleC5cbiAqXG4gKiBAcGFyYW0ge251bWJl
cn0gZnJvbUluZGV4IFNvdXJjZSBpbmRleCBvZiB0aGUgZXhpc3RpbmcgZWxlbWVudC5cbiAqIEBw
YXJhbSB7bnVtYmVyfSB0b0luZGV4IERlc3RpbmF0aW9uIGluZGV4IG9mIHRoZSBlbGVtZW50Llxu
ICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gbWFrZU1vdmUoY2hpbGQsIGFmdGVyTm9kZSwgdG9J
bmRleCkge1xuICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4g
IHJldHVybiB7XG4gICAgdHlwZTogJ01PVkVfRVhJU1RJTkcnLFxuICAgIGNvbnRlbnQ6IG51bGws
XG4gICAgZnJvbUluZGV4OiBjaGlsZC5fbW91bnRJbmRleCxcbiAgICBmcm9tTm9kZTogUmVhY3RS
ZWNvbmNpbGVyLmdldEhvc3ROb2RlKGNoaWxkKSxcbiAgICB0b0luZGV4OiB0b0luZGV4LFxuICAg
IGFmdGVyTm9kZTogYWZ0ZXJOb2RlXG4gIH07XG59XG5cbi8qKlxuICogTWFrZSBhbiB1cGRhdGUg
Zm9yIHJlbW92aW5nIGFuIGVsZW1lbnQgYXQgYW4gaW5kZXguXG4gKlxuICogQHBhcmFtIHtudW1i
ZXJ9IGZyb21JbmRleCBJbmRleCBvZiB0aGUgZWxlbWVudCB0byByZW1vdmUuXG4gKiBAcHJpdmF0
ZVxuICovXG5mdW5jdGlvbiBtYWtlUmVtb3ZlKGNoaWxkLCBub2RlKSB7XG4gIC8vIE5PVEU6IE51
bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAn
UkVNT1ZFX05PREUnLFxuICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgZnJvbUluZGV4OiBjaGlsZC5f
bW91bnRJbmRleCxcbiAgICBmcm9tTm9kZTogbm9kZSxcbiAgICB0b0luZGV4OiBudWxsLFxuICAg
IGFmdGVyTm9kZTogbnVsbFxuICB9O1xufVxuXG4vKipcbiAqIE1ha2UgYW4gdXBkYXRlIGZvciBz
ZXR0aW5nIHRoZSBtYXJrdXAgb2YgYSBub2RlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXJr
dXAgTWFya3VwIHRoYXQgcmVuZGVycyBpbnRvIGFuIGVsZW1lbnQuXG4gKiBAcHJpdmF0ZVxuICov
XG5mdW5jdGlvbiBtYWtlU2V0TWFya3VwKG1hcmt1cCkge1xuICAvLyBOT1RFOiBOdWxsIHZhbHVl
cyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ1NFVF9NQVJL
VVAnLFxuICAgIGNvbnRlbnQ6IG1hcmt1cCxcbiAgICBmcm9tSW5kZXg6IG51bGwsXG4gICAgZnJv
bU5vZGU6IG51bGwsXG4gICAgdG9JbmRleDogbnVsbCxcbiAgICBhZnRlck5vZGU6IG51bGxcbiAg
fTtcbn1cblxuLyoqXG4gKiBNYWtlIGFuIHVwZGF0ZSBmb3Igc2V0dGluZyB0aGUgdGV4dCBjb250
ZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0Q29udGVudCBUZXh0IGNvbnRlbnQgdG8g
c2V0LlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gbWFrZVRleHRDb250ZW50KHRleHRDb250
ZW50KSB7XG4gIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5cbiAg
cmV0dXJuIHtcbiAgICB0eXBlOiAnVEVYVF9DT05URU5UJyxcbiAgICBjb250ZW50OiB0ZXh0Q29u
dGVudCxcbiAgICBmcm9tSW5kZXg6IG51bGwsXG4gICAgZnJvbU5vZGU6IG51bGwsXG4gICAgdG9J
bmRleDogbnVsbCxcbiAgICBhZnRlck5vZGU6IG51bGxcbiAgfTtcbn1cblxuLyoqXG4gKiBQdXNo
IGFuIHVwZGF0ZSwgaWYgYW55LCBvbnRvIHRoZSBxdWV1ZS4gQ3JlYXRlcyBhIG5ldyBxdWV1ZSBp
ZiBub25lIGlzXG4gKiBwYXNzZWQgYW5kIGFsd2F5cyByZXR1cm5zIHRoZSBxdWV1ZS4gTXV0YXRp
dmUuXG4gKi9cbmZ1bmN0aW9uIGVucXVldWUocXVldWUsIHVwZGF0ZSkge1xuICBpZiAodXBkYXRl
KSB7XG4gICAgcXVldWUgPSBxdWV1ZSB8fCBbXTtcbiAgICBxdWV1ZS5wdXNoKHVwZGF0ZSk7XG4g
IH1cbiAgcmV0dXJuIHF1ZXVlO1xufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhbnkgZW5xdWV1ZWQg
dXBkYXRlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBwcm9jZXNzUXVldWUoaW5z
dCwgdXBkYXRlUXVldWUpIHtcbiAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5wcm9jZXNzQ2hp
bGRyZW5VcGRhdGVzKGluc3QsIHVwZGF0ZVF1ZXVlKTtcbn1cblxudmFyIHNldENoaWxkcmVuRm9y
SW5zdHJ1bWVudGF0aW9uID0gZW1wdHlGdW5jdGlvbjtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBnZXREZWJ1Z0lEID0gZnVuY3Rpb24gKGluc3Qp
IHtcbiAgICBpZiAoIWluc3QuX2RlYnVnSUQpIHtcbiAgICAgIC8vIENoZWNrIGZvciBBUlQtbGlr
ZSBpbnN0YW5jZXMuIFRPRE86IFRoaXMgaXMgc2lsbHkvZ3Jvc3MuXG4gICAgICB2YXIgaW50ZXJu
YWw7XG4gICAgICBpZiAoaW50ZXJuYWwgPSBSZWFjdEluc3RhbmNlTWFwLmdldChpbnN0KSkge1xu
ICAgICAgICBpbnN0ID0gaW50ZXJuYWw7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbnN0
Ll9kZWJ1Z0lEO1xuICB9O1xuICBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRhdGlvbiA9IGZ1bmN0
aW9uIChjaGlsZHJlbikge1xuICAgIHZhciBkZWJ1Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTtcbiAg
ICAvLyBUT0RPOiBSZWFjdCBOYXRpdmUgZW1wdHkgY29tcG9uZW50cyBhcmUgYWxzbyBtdWx0aWNo
aWxkLlxuICAgIC8vIFRoaXMgbWVhbnMgdGhleSBzdGlsbCBnZXQgaW50byB0aGlzIG1ldGhvZCBi
dXQgZG9uJ3QgaGF2ZSBfZGVidWdJRC5cbiAgICBpZiAoZGVidWdJRCAhPT0gMCkge1xuICAgICAg
UmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4oZGVidWdJRCwgY2hp
bGRyZW4gPyBPYmplY3Qua2V5cyhjaGlsZHJlbikubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAg
ICAgcmV0dXJuIGNoaWxkcmVuW2tleV0uX2RlYnVnSUQ7XG4gICAgICB9KSA6IFtdKTtcbiAgICB9
XG4gIH07XG59XG5cbi8qKlxuICogUmVhY3RNdWx0aUNoaWxkIGFyZSBjYXBhYmxlIG9mIHJlY29u
Y2lsaW5nIG11bHRpcGxlIGNoaWxkcmVuLlxuICpcbiAqIEBjbGFzcyBSZWFjdE11bHRpQ2hpbGRc
biAqIEBpbnRlcm5hbFxuICovXG52YXIgUmVhY3RNdWx0aUNoaWxkID0ge1xuICAvKipcbiAgICog
UHJvdmlkZXMgY29tbW9uIGZ1bmN0aW9uYWxpdHkgZm9yIGNvbXBvbmVudHMgdGhhdCBtdXN0IHJl
Y29uY2lsZSBtdWx0aXBsZVxuICAgKiBjaGlsZHJlbi4gVGhpcyBpcyB1c2VkIGJ5IGBSZWFjdERP
TUNvbXBvbmVudGAgdG8gbW91bnQsIHVwZGF0ZSwgYW5kXG4gICAqIHVubW91bnQgY2hpbGQgY29t
cG9uZW50cy5cbiAgICpcbiAgICogQGxlbmRzIHtSZWFjdE11bHRpQ2hpbGQucHJvdG90eXBlfVxu
ICAgKi9cbiAgTWl4aW46IHtcbiAgICBfcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW46IGZ1
bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhciBz
ZWxmRGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50
RWxlbWVudCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25l
ci5jdXJyZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuICAgICAgICAgICAgcmV0
dXJuIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLmluc3RhbnRpYXRlQ2hpbGRyZW4obmVzdGVkQ2hpbGRy
ZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7XG4gICAgICAgICAgfSBmaW5h
bGx5IHtcbiAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsO1xuICAg
ICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIFJlYWN0Q2hpbGRSZWNv
bmNpbGVyLmluc3RhbnRpYXRlQ2hpbGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBj
b250ZXh0KTtcbiAgICB9LFxuXG4gICAgX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbjogZnVuY3Rp
b24gKHByZXZDaGlsZHJlbiwgbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIG1vdW50SW1hZ2Vz
LCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgICB2YXIgbmV4dENo
aWxkcmVuO1xuICAgICAgdmFyIHNlbGZEZWJ1Z0lEID0gMDtcbiAgICAgIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHNlbGZEZWJ1Z0lEID0gZ2V0
RGVidWdJRCh0aGlzKTtcbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRFbGVtZW50KSB7XG4gICAg
ICAgICAgdHJ5IHtcbiAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlz
Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG4gICAgICAgICAgICBuZXh0Q2hpbGRyZW4gPSBmbGF0
dGVuQ2hpbGRyZW4obmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHNlbGZEZWJ1Z0lEKTtcbiAg
ICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVu
dCA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVw
ZGF0ZUNoaWxkcmVuKHByZXZDaGlsZHJlbiwgbmV4dENoaWxkcmVuLCBtb3VudEltYWdlcywgcmVt
b3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgdGhpcywgdGhpcy5faG9zdENvbnRhaW5lckluZm8sIGNv
bnRleHQsIHNlbGZEZWJ1Z0lEKTtcbiAgICAgICAgICByZXR1cm4gbmV4dENoaWxkcmVuO1xuICAg
ICAgICB9XG4gICAgICB9XG4gICAgICBuZXh0Q2hpbGRyZW4gPSBmbGF0dGVuQ2hpbGRyZW4obmV4
dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHNlbGZEZWJ1Z0lEKTtcbiAgICAgIFJlYWN0Q2hpbGRS
ZWNvbmNpbGVyLnVwZGF0ZUNoaWxkcmVuKHByZXZDaGlsZHJlbiwgbmV4dENoaWxkcmVuLCBtb3Vu
dEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgdGhpcywgdGhpcy5faG9zdENvbnRh
aW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKTtcbiAgICAgIHJldHVybiBuZXh0Q2hpbGRy
ZW47XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIFwibW91bnQgaW1hZ2Vc
IiBmb3IgZWFjaCBvZiB0aGUgc3VwcGxpZWQgY2hpbGRyZW4uIEluIHRoZSBjYXNlXG4gICAgICog
b2YgYFJlYWN0RE9NQ29tcG9uZW50YCwgYSBtb3VudCBpbWFnZSBpcyBhIHN0cmluZyBvZiBtYXJr
dXAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5lc3RlZENoaWxkcmVuIE5lc3Rl
ZCBjaGlsZCBtYXBzLlxuICAgICAqIEByZXR1cm4ge2FycmF5fSBBbiBhcnJheSBvZiBtb3VudGVk
IHJlcHJlc2VudGF0aW9ucy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBtb3VudENo
aWxkcmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7
XG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLl9yZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJl
bihuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgdGhpcy5fcmVu
ZGVyZWRDaGlsZHJlbiA9IGNoaWxkcmVuO1xuXG4gICAgICB2YXIgbW91bnRJbWFnZXMgPSBbXTtc
biAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICBmb3IgKHZhciBuYW1lIGluIGNoaWxkcmVuKSB7
XG4gICAgICAgIGlmIChjaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICAg
IHZhciBjaGlsZCA9IGNoaWxkcmVuW25hbWVdO1xuICAgICAgICAgIHZhciBzZWxmRGVidWdJRCA9
IDA7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICAgICAgICAgIHNlbGZEZWJ1Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTtcbiAgICAgICAg
ICB9XG4gICAgICAgICAgdmFyIG1vdW50SW1hZ2UgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21w
b25lbnQoY2hpbGQsIHRyYW5zYWN0aW9uLCB0aGlzLCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywg
Y29udGV4dCwgc2VsZkRlYnVnSUQpO1xuICAgICAgICAgIGNoaWxkLl9tb3VudEluZGV4ID0gaW5k
ZXgrKztcbiAgICAgICAgICBtb3VudEltYWdlcy5wdXNoKG1vdW50SW1hZ2UpO1xuICAgICAgICB9
XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAgIHNldENoaWxkcmVuRm9ySW5zdHJ1bWVudGF0aW9uLmNhbGwodGhpcywg
Y2hpbGRyZW4pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbW91bnRJbWFnZXM7XG4gICAgfSxc
blxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIGFueSByZW5kZXJlZCBjaGlsZHJlbiB3aXRoIGEg
dGV4dCBjb250ZW50IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXh0
Q29udGVudCBTdHJpbmcgb2YgY29udGVudC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAg
ICB1cGRhdGVUZXh0Q29udGVudDogZnVuY3Rpb24gKG5leHRDb250ZW50KSB7XG4gICAgICB2YXIg
cHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtcbiAgICAgIC8vIFJlbW92ZSBh
bnkgcmVuZGVyZWQgY2hpbGRyZW4uXG4gICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51bm1vdW50
Q2hpbGRyZW4ocHJldkNoaWxkcmVuLCBmYWxzZSk7XG4gICAgICBmb3IgKHZhciBuYW1lIGluIHBy
ZXZDaGlsZHJlbikge1xuICAgICAgICBpZiAocHJldkNoaWxkcmVuLmhhc093blByb3BlcnR5KG5h
bWUpKSB7XG4gICAgICAgICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZVRleHRDb250ZW50IGNhbGxlZCBvbiBu
b24tZW1wdHkgY29tcG9uZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzExOCcpIDogdm9pZCAwO1xu
ICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBTZXQgbmV3IHRleHQgY29udGVudC5cbiAgICAg
IHZhciB1cGRhdGVzID0gW21ha2VUZXh0Q29udGVudChuZXh0Q29udGVudCldO1xuICAgICAgcHJv
Y2Vzc1F1ZXVlKHRoaXMsIHVwZGF0ZXMpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXBs
YWNlcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIG1hcmt1cCBzdHJpbmcuXG4gICAgICpc
biAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV4dE1hcmt1cCBTdHJpbmcgb2YgbWFya3VwLlxuICAg
ICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHVwZGF0ZU1hcmt1cDogZnVuY3Rpb24gKG5leHRN
YXJrdXApIHtcbiAgICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVu
O1xuICAgICAgLy8gUmVtb3ZlIGFueSByZW5kZXJlZCBjaGlsZHJlbi5cbiAgICAgIFJlYWN0Q2hp
bGRSZWNvbmNpbGVyLnVubW91bnRDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIGZhbHNlKTtcbiAgICAg
IGZvciAodmFyIG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7XG4gICAgICAgIGlmIChwcmV2Q2hpbGRy
ZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICAhZmFsc2UgPyBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlVGV4
dENvbnRlbnQgY2FsbGVkIG9uIG5vbi1lbXB0eSBjb21wb25lbnQuJykgOiBfcHJvZEludmFyaWFu
dCgnMTE4JykgOiB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciB1cGRhdGVz
ID0gW21ha2VTZXRNYXJrdXAobmV4dE1hcmt1cCldO1xuICAgICAgcHJvY2Vzc1F1ZXVlKHRoaXMs
IHVwZGF0ZXMpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSByZW5kZXJl
ZCBjaGlsZHJlbiB3aXRoIG5ldyBjaGlsZHJlbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7P29i
amVjdH0gbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMgTmVzdGVkIGNoaWxkIGVsZW1lbnQgbWFw
cy5cbiAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9u
XG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9u
IChuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAg
ICAgIC8vIEhvb2sgdXNlZCBieSBSZWFjdCBBUlRcbiAgICAgIHRoaXMuX3VwZGF0ZUNoaWxkcmVu
KG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAg
fSxcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dE5lc3RlZENoaWxkcmVu
RWxlbWVudHMgTmVzdGVkIGNoaWxkIGVsZW1lbnQgbWFwcy5cbiAgICAgKiBAcGFyYW0ge1JlYWN0
UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAgICogQGZpbmFsXG4gICAgICog
QHByb3RlY3RlZFxuICAgICAqL1xuICAgIF91cGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKG5leHRO
ZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgdmFy
IHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgICB2YXIgcmVtb3Zl
ZE5vZGVzID0ge307XG4gICAgICB2YXIgbW91bnRJbWFnZXMgPSBbXTtcbiAgICAgIHZhciBuZXh0
Q2hpbGRyZW4gPSB0aGlzLl9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW4ocHJldkNoaWxkcmVuLCBu
ZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJh
bnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4gJiYgIXByZXZDaGls
ZHJlbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgdXBkYXRlcyA9IG51
bGw7XG4gICAgICB2YXIgbmFtZTtcbiAgICAgIC8vIGBuZXh0SW5kZXhgIHdpbGwgaW5jcmVtZW50
IGZvciBlYWNoIGNoaWxkIGluIGBuZXh0Q2hpbGRyZW5gLCBidXRcbiAgICAgIC8vIGBsYXN0SW5k
ZXhgIHdpbGwgYmUgdGhlIGxhc3QgaW5kZXggdmlzaXRlZCBpbiBgcHJldkNoaWxkcmVuYC5cbiAg
ICAgIHZhciBuZXh0SW5kZXggPSAwO1xuICAgICAgdmFyIGxhc3RJbmRleCA9IDA7XG4gICAgICAv
LyBgbmV4dE1vdW50SW5kZXhgIHdpbGwgaW5jcmVtZW50IGZvciBlYWNoIG5ld2x5IG1vdW50ZWQg
Y2hpbGQuXG4gICAgICB2YXIgbmV4dE1vdW50SW5kZXggPSAwO1xuICAgICAgdmFyIGxhc3RQbGFj
ZWROb2RlID0gbnVsbDtcbiAgICAgIGZvciAobmFtZSBpbiBuZXh0Q2hpbGRyZW4pIHtcbiAgICAg
ICAgaWYgKCFuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICBj
b250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJldkNoaWxkID0gcHJldkNoaWxkcmVu
ICYmIHByZXZDaGlsZHJlbltuYW1lXTtcbiAgICAgICAgdmFyIG5leHRDaGlsZCA9IG5leHRDaGls
ZHJlbltuYW1lXTtcbiAgICAgICAgaWYgKHByZXZDaGlsZCA9PT0gbmV4dENoaWxkKSB7XG4gICAg
ICAgICAgdXBkYXRlcyA9IGVucXVldWUodXBkYXRlcywgdGhpcy5tb3ZlQ2hpbGQocHJldkNoaWxk
LCBsYXN0UGxhY2VkTm9kZSwgbmV4dEluZGV4LCBsYXN0SW5kZXgpKTtcbiAgICAgICAgICBsYXN0
SW5kZXggPSBNYXRoLm1heChwcmV2Q2hpbGQuX21vdW50SW5kZXgsIGxhc3RJbmRleCk7XG4gICAg
ICAgICAgcHJldkNoaWxkLl9tb3VudEluZGV4ID0gbmV4dEluZGV4O1xuICAgICAgICB9IGVsc2Ug
e1xuICAgICAgICAgIGlmIChwcmV2Q2hpbGQpIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBgbGFz
dEluZGV4YCBiZWZvcmUgYF9tb3VudEluZGV4YCBnZXRzIHVuc2V0IGJ5IHVubW91bnRpbmcuXG4g
ICAgICAgICAgICBsYXN0SW5kZXggPSBNYXRoLm1heChwcmV2Q2hpbGQuX21vdW50SW5kZXgsIGxh
c3RJbmRleCk7XG4gICAgICAgICAgICAvLyBUaGUgYHJlbW92ZWROb2Rlc2AgbG9vcCBiZWxvdyB3
aWxsIGFjdHVhbGx5IHJlbW92ZSB0aGUgY2hpbGQuXG4gICAgICAgICAgfVxuICAgICAgICAgIC8v
IFRoZSBjaGlsZCBtdXN0IGJlIGluc3RhbnRpYXRlZCBiZWZvcmUgaXQncyBtb3VudGVkLlxuICAg
ICAgICAgIHVwZGF0ZXMgPSBlbnF1ZXVlKHVwZGF0ZXMsIHRoaXMuX21vdW50Q2hpbGRBdEluZGV4
KG5leHRDaGlsZCwgbW91bnRJbWFnZXNbbmV4dE1vdW50SW5kZXhdLCBsYXN0UGxhY2VkTm9kZSwg
bmV4dEluZGV4LCB0cmFuc2FjdGlvbiwgY29udGV4dCkpO1xuICAgICAgICAgIG5leHRNb3VudElu
ZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgbmV4dEluZGV4Kys7XG4gICAgICAgIGxhc3RQbGFj
ZWROb2RlID0gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKG5leHRDaGlsZCk7XG4gICAgICB9
XG4gICAgICAvLyBSZW1vdmUgY2hpbGRyZW4gdGhhdCBhcmUgbm8gbG9uZ2VyIHByZXNlbnQuXG4g
ICAgICBmb3IgKG5hbWUgaW4gcmVtb3ZlZE5vZGVzKSB7XG4gICAgICAgIGlmIChyZW1vdmVkTm9k
ZXMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICB1cGRhdGVzID0gZW5xdWV1ZSh1
cGRhdGVzLCB0aGlzLl91bm1vdW50Q2hpbGQocHJldkNoaWxkcmVuW25hbWVdLCByZW1vdmVkTm9k
ZXNbbmFtZV0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHVwZGF0ZXMpIHtcbiAg
ICAgICAgcHJvY2Vzc1F1ZXVlKHRoaXMsIHVwZGF0ZXMpO1xuICAgICAgfVxuICAgICAgdGhpcy5f
cmVuZGVyZWRDaGlsZHJlbiA9IG5leHRDaGlsZHJlbjtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgc2V0Q2hpbGRyZW5Gb3JJbnN0
cnVtZW50YXRpb24uY2FsbCh0aGlzLCBuZXh0Q2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH0sXG5c
biAgICAvKipcbiAgICAgKiBVbm1vdW50cyBhbGwgcmVuZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hv
dWxkIGJlIHVzZWQgdG8gY2xlYW4gdXAgY2hpbGRyZW5cbiAgICAgKiB3aGVuIHRoaXMgY29tcG9u
ZW50IGlzIHVubW91bnRlZC4gSXQgZG9lcyBub3QgYWN0dWFsbHkgcGVyZm9ybSBhbnlcbiAgICAg
KiBiYWNrZW5kIG9wZXJhdGlvbnMuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9c
biAgICB1bm1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uIChzYWZlbHkpIHtcbiAgICAgIHZhciByZW5k
ZXJlZENoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtcbiAgICAgIFJlYWN0Q2hpbGRS
ZWNvbmNpbGVyLnVubW91bnRDaGlsZHJlbihyZW5kZXJlZENoaWxkcmVuLCBzYWZlbHkpO1xuICAg
ICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG51bGw7XG4gICAgfSxcblxuICAgIC8qKlxuICAg
ICAqIE1vdmVzIGEgY2hpbGQgY29tcG9uZW50IHRvIHRoZSBzdXBwbGllZCBpbmRleC5cbiAgICAg
KlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBtb3Zl
LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0b0luZGV4IERlc3RpbmF0aW9uIGluZGV4IG9mIHRo
ZSBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsYXN0SW5kZXggTGFzdCBpbmRleCB2
aXNpdGVkIG9mIHRoZSBzaWJsaW5ncyBvZiBgY2hpbGRgLlxuICAgICAqIEBwcm90ZWN0ZWRcbiAg
ICAgKi9cbiAgICBtb3ZlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgYWZ0ZXJOb2RlLCB0b0luZGV4
LCBsYXN0SW5kZXgpIHtcbiAgICAgIC8vIElmIHRoZSBpbmRleCBvZiBgY2hpbGRgIGlzIGxlc3Mg
dGhhbiBgbGFzdEluZGV4YCwgdGhlbiBpdCBuZWVkcyB0b1xuICAgICAgLy8gYmUgbW92ZWQuIE90
aGVyd2lzZSwgd2UgZG8gbm90IG5lZWQgdG8gbW92ZSBpdCBiZWNhdXNlIGEgY2hpbGQgd2lsbCBi
ZVxuICAgICAgLy8gaW5zZXJ0ZWQgb3IgbW92ZWQgYmVmb3JlIGBjaGlsZGAuXG4gICAgICBpZiAo
Y2hpbGQuX21vdW50SW5kZXggPCBsYXN0SW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VNb3Zl
KGNoaWxkLCBhZnRlck5vZGUsIHRvSW5kZXgpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipc
biAgICAgKiBDcmVhdGVzIGEgY2hpbGQgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHBhcmFt
IHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIGNyZWF0ZS5cbiAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbW91bnRJbWFnZSBNYXJrdXAgdG8gaW5zZXJ0LlxuICAgICAqIEBwcm90ZWN0
ZWRcbiAgICAgKi9cbiAgICBjcmVhdGVDaGlsZDogZnVuY3Rpb24gKGNoaWxkLCBhZnRlck5vZGUs
IG1vdW50SW1hZ2UpIHtcbiAgICAgIHJldHVybiBtYWtlSW5zZXJ0TWFya3VwKG1vdW50SW1hZ2Us
IGFmdGVyTm9kZSwgY2hpbGQuX21vdW50SW5kZXgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAg
KiBSZW1vdmVzIGEgY2hpbGQgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFj
dENvbXBvbmVudH0gY2hpbGQgQ2hpbGQgdG8gcmVtb3ZlLlxuICAgICAqIEBwcm90ZWN0ZWRcbiAg
ICAgKi9cbiAgICByZW1vdmVDaGlsZDogZnVuY3Rpb24gKGNoaWxkLCBub2RlKSB7XG4gICAgICBy
ZXR1cm4gbWFrZVJlbW92ZShjaGlsZCwgbm9kZSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAq
IE1vdW50cyBhIGNoaWxkIHdpdGggdGhlIHN1cHBsaWVkIG5hbWUuXG4gICAgICpcbiAgICAgKiBO
T1RFOiBUaGlzIGlzIHBhcnQgb2YgYHVwZGF0ZUNoaWxkcmVuYCBhbmQgaXMgaGVyZSBmb3IgcmVh
ZGFiaWxpdHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBD
b21wb25lbnQgdG8gbW91bnQuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiB0
aGUgY2hpbGQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IGF0IHdoaWNoIHRv
IGluc2VydCB0aGUgY2hpbGQuXG4gICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0
aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgX21vdW50Q2hp
bGRBdEluZGV4OiBmdW5jdGlvbiAoY2hpbGQsIG1vdW50SW1hZ2UsIGFmdGVyTm9kZSwgaW5kZXgs
IHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgICBjaGlsZC5fbW91bnRJbmRleCA9IGluZGV4
O1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ2hpbGQoY2hpbGQsIGFmdGVyTm9kZSwgbW91bnRJ
bWFnZSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFVubW91bnRzIGEgcmVuZGVyZWQgY2hp
bGQuXG4gICAgICpcbiAgICAgKiBOT1RFOiBUaGlzIGlzIHBhcnQgb2YgYHVwZGF0ZUNoaWxkcmVu
YCBhbmQgaXMgaGVyZSBmb3IgcmVhZGFiaWxpdHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1Jl
YWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gdW5tb3VudC5cbiAgICAgKiBAcHJpdmF0
ZVxuICAgICAqL1xuICAgIF91bm1vdW50Q2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgbm9kZSkge1xu
ICAgICAgdmFyIHVwZGF0ZSA9IHRoaXMucmVtb3ZlQ2hpbGQoY2hpbGQsIG5vZGUpO1xuICAgICAg
Y2hpbGQuX21vdW50SW5kZXggPSBudWxsO1xuICAgICAgcmV0dXJuIHVwZGF0ZTtcbiAgICB9XG4g
IH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RNdWx0aUNoaWxkO1xuXG5cbi8vLy8vLy8v
Ly8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRv
bS9saWIvUmVhY3RNdWx0aUNoaWxkLmpzXG4vLyBtb2R1bGUgaWQgPSAxNTRcbi8vIG1vZHVsZSBj
aHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0
JztcblxudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7
XG5cbnZhciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9pbnN0YW50aWF0
ZVJlYWN0Q29tcG9uZW50Jyk7XG52YXIgS2V5RXNjYXBlVXRpbHMgPSByZXF1aXJlKCcuL0tleUVz
Y2FwZVV0aWxzJyk7XG52YXIgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcu
L3Nob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50Jyk7XG52YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9
IHJlcXVpcmUoJy4vdHJhdmVyc2VBbGxDaGlsZHJlbicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJl
KCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rO1xuXG5p
ZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52ICYmIHByb2Nl
c3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcbiAgLy8gVGVtcG9yYXJ5IGhhY2suXG4gIC8v
IElubGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OlxuICAvLyBodHRwczov
L2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyNDBcbiAgLy8gUmVtb3ZlIHRoZSBp
bmxpbmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9yZTpcbiAgLy8gaHR0
cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzE3OFxuICBSZWFjdENvbXBvbmVu
dFRyZWVIb29rID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2snKTtc
bn1cblxuZnVuY3Rpb24gaW5zdGFudGlhdGVDaGlsZChjaGlsZEluc3RhbmNlcywgY2hpbGQsIG5h
bWUsIHNlbGZEZWJ1Z0lEKSB7XG4gIC8vIFdlIGZvdW5kIGEgY29tcG9uZW50IGluc3RhbmNlLlxu
ICB2YXIga2V5VW5pcXVlID0gY2hpbGRJbnN0YW5jZXNbbmFtZV0gPT09IHVuZGVmaW5lZDtcbiAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoIVJl
YWN0Q29tcG9uZW50VHJlZUhvb2spIHtcbiAgICAgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBy
ZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDb21wb25lbnRUcmVlSG9vaycpO1xuICAgIH1cbiAgICBp
ZiAoIWtleVVuaXF1ZSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdmbGF0dGVuQ2hpbGRyZW4oLi4uKTogRW5jb3VudGVyZWQg
dHdvIGNoaWxkcmVuIHdpdGggdGhlIHNhbWUga2V5LCAnICsgJ2Alc2AuIENoaWxkIGtleXMgbXVz
dCBiZSB1bmlxdWU7IHdoZW4gdHdvIGNoaWxkcmVuIHNoYXJlIGEga2V5LCBvbmx5ICcgKyAndGhl
IGZpcnN0IGNoaWxkIHdpbGwgYmUgdXNlZC4lcycsIEtleUVzY2FwZVV0aWxzLnVuZXNjYXBlKG5h
bWUpLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKHNlbGZEZWJ1
Z0lEKSkgOiB2b2lkIDA7XG4gICAgfVxuICB9XG4gIGlmIChjaGlsZCAhPSBudWxsICYmIGtleVVu
aXF1ZSkge1xuICAgIGNoaWxkSW5zdGFuY2VzW25hbWVdID0gaW5zdGFudGlhdGVSZWFjdENvbXBv
bmVudChjaGlsZCwgdHJ1ZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFjdENoaWxkUmVjb25jaWxl
ciBwcm92aWRlcyBoZWxwZXJzIGZvciBpbml0aWFsaXppbmcgb3IgdXBkYXRpbmcgYSBzZXQgb2Zc
biAqIGNoaWxkcmVuLiBJdHMgb3V0cHV0IGlzIHN1aXRhYmxlIGZvciBwYXNzaW5nIGl0IG9udG8g
UmVhY3RNdWx0aUNoaWxkIHdoaWNoXG4gKiBkb2VzIGRpZmZlZCByZW9yZGVyaW5nIGFuZCBpbnNl
cnRpb24uXG4gKi9cbnZhciBSZWFjdENoaWxkUmVjb25jaWxlciA9IHtcbiAgLyoqXG4gICAqIEdl
bmVyYXRlcyBhIFwibW91bnQgaW1hZ2VcIiBmb3IgZWFjaCBvZiB0aGUgc3VwcGxpZWQgY2hpbGRy
ZW4uIEluIHRoZSBjYXNlXG4gICAqIG9mIGBSZWFjdERPTUNvbXBvbmVudGAsIGEgbW91bnQgaW1h
Z2UgaXMgYSBzdHJpbmcgb2YgbWFya3VwLlxuICAgKlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG5l
c3RlZENoaWxkTm9kZXMgTmVzdGVkIGNoaWxkIG1hcHMuXG4gICAqIEByZXR1cm4gez9vYmplY3R9
IEEgc2V0IG9mIGNoaWxkIGluc3RhbmNlcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBpbnN0
YW50aWF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hpbGROb2RlcywgdHJhbnNhY3Rpb24s
IGNvbnRleHQsIHNlbGZEZWJ1Z0lEKSAvLyAwIGluIHByb2R1Y3Rpb24gYW5kIGZvciByb290c1xu
ICB7XG4gICAgaWYgKG5lc3RlZENoaWxkTm9kZXMgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51
bGw7XG4gICAgfVxuICAgIHZhciBjaGlsZEluc3RhbmNlcyA9IHt9O1xuXG4gICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRyYXZlcnNlQWxsQ2hp
bGRyZW4obmVzdGVkQ2hpbGROb2RlcywgZnVuY3Rpb24gKGNoaWxkSW5zdHMsIGNoaWxkLCBuYW1l
KSB7XG4gICAgICAgIHJldHVybiBpbnN0YW50aWF0ZUNoaWxkKGNoaWxkSW5zdHMsIGNoaWxkLCBu
YW1lLCBzZWxmRGVidWdJRCk7XG4gICAgICB9LCBjaGlsZEluc3RhbmNlcyk7XG4gICAgfSBlbHNl
IHtcbiAgICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4obmVzdGVkQ2hpbGROb2RlcywgaW5zdGFudGlh
dGVDaGlsZCwgY2hpbGRJbnN0YW5jZXMpO1xuICAgIH1cbiAgICByZXR1cm4gY2hpbGRJbnN0YW5j
ZXM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHJlbmRlcmVkIGNoaWxkcmVuIGFu
ZCByZXR1cm5zIGEgbmV3IHNldCBvZiBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHs/b2Jq
ZWN0fSBwcmV2Q2hpbGRyZW4gUHJldmlvdXNseSBpbml0aWFsaXplZCBzZXQgb2YgY2hpbGRyZW4u
XG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENoaWxkcmVuIEZsYXQgY2hpbGQgZWxlbWVudCBt
YXBzLlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9u
XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAqIEByZXR1cm4gez9vYmplY3R9IEEg
bmV3IHNldCBvZiBjaGlsZCBpbnN0YW5jZXMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdXBk
YXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgbW91bnRJ
bWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWlu
ZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCkgLy8gMCBpbiBwcm9kdWN0aW9uIGFuZCBmb3Ig
cm9vdHNcbiAge1xuICAgIC8vIFdlIGN1cnJlbnRseSBkb24ndCBoYXZlIGEgd2F5IHRvIHRyYWNr
IG1vdmVzIGhlcmUgYnV0IGlmIHdlIHVzZSBpdGVyYXRvcnNcbiAgICAvLyBpbnN0ZWFkIG9mIGZv
ci4uaW4gd2UgY2FuIHppcCB0aGUgaXRlcmF0b3JzIGFuZCBjaGVjayBpZiBhbiBpdGVtIGhhc1xu
ICAgIC8vIG1vdmVkLlxuICAgIC8vIFRPRE86IElmIG5vdGhpbmcgaGFzIGNoYW5nZWQsIHJldHVy
biB0aGUgcHJldkNoaWxkcmVuIG9iamVjdCBzbyB0aGF0IHdlXG4gICAgLy8gY2FuIHF1aWNrbHkg
YmFpbG91dCBpZiBub3RoaW5nIGhhcyBjaGFuZ2VkLlxuICAgIGlmICghbmV4dENoaWxkcmVuICYm
ICFwcmV2Q2hpbGRyZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIG5hbWU7XG4g
ICAgdmFyIHByZXZDaGlsZDtcbiAgICBmb3IgKG5hbWUgaW4gbmV4dENoaWxkcmVuKSB7XG4gICAg
ICBpZiAoIW5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBjb250
aW51ZTtcbiAgICAgIH1cbiAgICAgIHByZXZDaGlsZCA9IHByZXZDaGlsZHJlbiAmJiBwcmV2Q2hp
bGRyZW5bbmFtZV07XG4gICAgICB2YXIgcHJldkVsZW1lbnQgPSBwcmV2Q2hpbGQgJiYgcHJldkNo
aWxkLl9jdXJyZW50RWxlbWVudDtcbiAgICAgIHZhciBuZXh0RWxlbWVudCA9IG5leHRDaGlsZHJl
bltuYW1lXTtcbiAgICAgIGlmIChwcmV2Q2hpbGQgIT0gbnVsbCAmJiBzaG91bGRVcGRhdGVSZWFj
dENvbXBvbmVudChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpKSB7XG4gICAgICAgIFJlYWN0UmVj
b25jaWxlci5yZWNlaXZlQ29tcG9uZW50KHByZXZDaGlsZCwgbmV4dEVsZW1lbnQsIHRyYW5zYWN0
aW9uLCBjb250ZXh0KTtcbiAgICAgICAgbmV4dENoaWxkcmVuW25hbWVdID0gcHJldkNoaWxkO1xu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByZXZDaGlsZCkge1xuICAgICAgICAgIHJlbW92
ZWROb2Rlc1tuYW1lXSA9IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShwcmV2Q2hpbGQpO1xu
ICAgICAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHByZXZDaGlsZCwgZmFs
c2UpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBjaGlsZCBtdXN0IGJlIGluc3RhbnRpYXRl
ZCBiZWZvcmUgaXQncyBtb3VudGVkLlxuICAgICAgICB2YXIgbmV4dENoaWxkSW5zdGFuY2UgPSBp
bnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG5leHRFbGVtZW50LCB0cnVlKTtcbiAgICAgICAgbmV4
dENoaWxkcmVuW25hbWVdID0gbmV4dENoaWxkSW5zdGFuY2U7XG4gICAgICAgIC8vIENyZWF0aW5n
IG1vdW50IGltYWdlIG5vdyBlbnN1cmVzIHJlZnMgYXJlIHJlc29sdmVkIGluIHJpZ2h0IG9yZGVy
XG4gICAgICAgIC8vIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwv
NzEwMSBmb3IgZXhwbGFuYXRpb24pLlxuICAgICAgICB2YXIgbmV4dENoaWxkTW91bnRJbWFnZSA9
IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChuZXh0Q2hpbGRJbnN0YW5jZSwgdHJhbnNh
Y3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJ
RCk7XG4gICAgICAgIG1vdW50SW1hZ2VzLnB1c2gobmV4dENoaWxkTW91bnRJbWFnZSk7XG4gICAg
ICB9XG4gICAgfVxuICAgIC8vIFVubW91bnQgY2hpbGRyZW4gdGhhdCBhcmUgbm8gbG9uZ2VyIHBy
ZXNlbnQuXG4gICAgZm9yIChuYW1lIGluIHByZXZDaGlsZHJlbikge1xuICAgICAgaWYgKHByZXZD
aGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiAhKG5leHRDaGlsZHJlbiAmJiBuZXh0Q2hp
bGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpKSB7XG4gICAgICAgIHByZXZDaGlsZCA9IHByZXZD
aGlsZHJlbltuYW1lXTtcbiAgICAgICAgcmVtb3ZlZE5vZGVzW25hbWVdID0gUmVhY3RSZWNvbmNp
bGVyLmdldEhvc3ROb2RlKHByZXZDaGlsZCk7XG4gICAgICAgIFJlYWN0UmVjb25jaWxlci51bm1v
dW50Q29tcG9uZW50KHByZXZDaGlsZCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxu
ICAvKipcbiAgICogVW5tb3VudHMgYWxsIHJlbmRlcmVkIGNoaWxkcmVuLiBUaGlzIHNob3VsZCBi
ZSB1c2VkIHRvIGNsZWFuIHVwIGNoaWxkcmVuXG4gICAqIHdoZW4gdGhpcyBjb21wb25lbnQgaXMg
dW5tb3VudGVkLlxuICAgKlxuICAgKiBAcGFyYW0gez9vYmplY3R9IHJlbmRlcmVkQ2hpbGRyZW4g
UHJldmlvdXNseSBpbml0aWFsaXplZCBzZXQgb2YgY2hpbGRyZW4uXG4gICAqIEBpbnRlcm5hbFxu
ICAgKi9cbiAgdW5tb3VudENoaWxkcmVuOiBmdW5jdGlvbiAocmVuZGVyZWRDaGlsZHJlbiwgc2Fm
ZWx5KSB7XG4gICAgZm9yICh2YXIgbmFtZSBpbiByZW5kZXJlZENoaWxkcmVuKSB7XG4gICAgICBp
ZiAocmVuZGVyZWRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICB2YXIg
cmVuZGVyZWRDaGlsZCA9IHJlbmRlcmVkQ2hpbGRyZW5bbmFtZV07XG4gICAgICAgIFJlYWN0UmVj
b25jaWxlci51bm1vdW50Q29tcG9uZW50KHJlbmRlcmVkQ2hpbGQsIHNhZmVseSk7XG4gICAgICB9
XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q2hpbGRSZWNvbmNpbGVy
O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RDaGlsZFJlY29uY2lsZXIuanNcbi8vIG1vZHVsZSBp
ZCA9IDE1NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcu
L3JlYWN0UHJvZEludmFyaWFudCcpLFxuICAgIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNz
aWduJyk7XG5cbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdCcpO1xudmFyIFJl
YWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9uZW50RW52aXJv
bm1lbnQnKTtcbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFj
dEN1cnJlbnRPd25lcicpO1xudmFyIFJlYWN0RXJyb3JVdGlscyA9IHJlcXVpcmUoJy4vUmVhY3RF
cnJvclV0aWxzJyk7XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0
YW5jZU1hcCcpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdElu
c3RydW1lbnRhdGlvbicpO1xudmFyIFJlYWN0Tm9kZVR5cGVzID0gcmVxdWlyZSgnLi9SZWFjdE5v
ZGVUeXBlcycpO1xudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNp
bGVyJyk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
IHZhciBjaGVja1JlYWN0VHlwZVNwZWMgPSByZXF1aXJlKCcuL2NoZWNrUmVhY3RUeXBlU3BlYycp
O1xufVxuXG52YXIgZW1wdHlPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVjdCcp
O1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHNo
YWxsb3dFcXVhbCA9IHJlcXVpcmUoJ2ZianMvbGliL3NoYWxsb3dFcXVhbCcpO1xudmFyIHNob3Vs
ZFVwZGF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9zaG91bGRVcGRhdGVSZWFjdENvbXBv
bmVudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZh
ciBDb21wb3NpdGVUeXBlcyA9IHtcbiAgSW1wdXJlQ2xhc3M6IDAsXG4gIFB1cmVDbGFzczogMSxc
biAgU3RhdGVsZXNzRnVuY3Rpb25hbDogMlxufTtcblxuZnVuY3Rpb24gU3RhdGVsZXNzQ29tcG9u
ZW50KENvbXBvbmVudCkge31cblN0YXRlbGVzc0NvbXBvbmVudC5wcm90b3R5cGUucmVuZGVyID0g
ZnVuY3Rpb24gKCkge1xuICB2YXIgQ29tcG9uZW50ID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQodGhp
cykuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG4gIHZhciBlbGVtZW50ID0gQ29tcG9uZW50KHRoaXMu
cHJvcHMsIHRoaXMuY29udGV4dCwgdGhpcy51cGRhdGVyKTtcbiAgd2FybklmSW52YWxpZEVsZW1l
bnQoQ29tcG9uZW50LCBlbGVtZW50KTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59O1xuXG5mdW5jdGlv
biB3YXJuSWZJbnZhbGlkRWxlbWVudChDb21wb25lbnQsIGVsZW1lbnQpIHtcbiAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhlbGVtZW50ID09PSBudWxsIHx8IGVsZW1l
bnQgPT09IGZhbHNlIHx8IFJlYWN0LmlzVmFsaWRFbGVtZW50KGVsZW1lbnQpLCAnJXMoLi4uKTog
QSB2YWxpZCBSZWFjdCBlbGVtZW50IChvciBudWxsKSBtdXN0IGJlIHJldHVybmVkLiBZb3UgbWF5
IGhhdmUgJyArICdyZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3RoZXIgaW52
YWxpZCBvYmplY3QuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8
ICdDb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyghQ29tcG9uZW50LmNoaWxkQ29udGV4dFR5cGVzLCAnJXMoLi4u
KTogY2hpbGRDb250ZXh0VHlwZXMgY2Fubm90IGJlIGRlZmluZWQgb24gYSBmdW5jdGlvbmFsIGNv
bXBvbmVudC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0Nv
bXBvbmVudCcpIDogdm9pZCAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNob3VsZENvbnN0cnVjdChD
b21wb25lbnQpIHtcbiAgcmV0dXJuICEhKENvbXBvbmVudC5wcm90b3R5cGUgJiYgQ29tcG9uZW50
LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50KTtcbn1cblxuZnVuY3Rpb24gaXNQdXJlQ29tcG9u
ZW50KENvbXBvbmVudCkge1xuICByZXR1cm4gISEoQ29tcG9uZW50LnByb3RvdHlwZSAmJiBDb21w
b25lbnQucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50KTtcbn1cblxuLy8gU2VwYXJhdGVk
IGludG8gYSBmdW5jdGlvbiB0byBjb250YWluIGRlb3B0aW1pemF0aW9ucyBjYXVzZWQgYnkgdHJ5
L2ZpbmFsbHkuXG5mdW5jdGlvbiBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmbiwgZGVidWdJRCwgdGlt
ZXJUeXBlKSB7XG4gIGlmIChkZWJ1Z0lEID09PSAwKSB7XG4gICAgLy8gVG9wLWxldmVsIHdyYXBw
ZXJzIChzZWUgUmVhY3RNb3VudCkgYW5kIGVtcHR5IGNvbXBvbmVudHMgKHNlZVxuICAgIC8vIFJl
YWN0RE9NRW1wdHlDb21wb25lbnQpIGFyZSBpbnZpc2libGUgdG8gaG9va3MgYW5kIGRldnRvb2xz
LlxuICAgIC8vIEJvdGggYXJlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgdGhhdCBzaG91bGQgZ28g
YXdheSBpbiB0aGUgZnV0dXJlLlxuICAgIHJldHVybiBmbigpO1xuICB9XG5cbiAgUmVhY3RJbnN0
cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5MaWZlQ3ljbGVUaW1lcihkZWJ1Z0lELCB0aW1l
clR5cGUpO1xuICB0cnkge1xuICAgIHJldHVybiBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIFJl
YWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVuZExpZmVDeWNsZVRpbWVyKGRlYnVnSUQs
IHRpbWVyVHlwZSk7XG4gIH1cbn1cblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0gVGhlIExp
ZmUtQ3ljbGUgb2YgYSBDb21wb3NpdGUgQ29tcG9uZW50IC0tLS0tLS0tLS0tLS0tLS0tLVxuICpc
biAqIC0gY29uc3RydWN0b3I6IEluaXRpYWxpemF0aW9uIG9mIHN0YXRlLiBUaGUgaW5zdGFuY2Ug
aXMgbm93IHJldGFpbmVkLlxuICogICAtIGNvbXBvbmVudFdpbGxNb3VudFxuICogICAtIHJlbmRl
clxuICogICAtIFtjaGlsZHJlbidzIGNvbnN0cnVjdG9yc11cbiAqICAgICAtIFtjaGlsZHJlbidz
IGNvbXBvbmVudFdpbGxNb3VudCBhbmQgcmVuZGVyXVxuICogICAgIC0gW2NoaWxkcmVuJ3MgY29t
cG9uZW50RGlkTW91bnRdXG4gKiAgICAgLSBjb21wb25lbnREaWRNb3VudFxuICpcbiAqICAgICAg
IFVwZGF0ZSBQaGFzZXM6XG4gKiAgICAgICAtIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgKG9u
bHkgY2FsbGVkIGlmIHBhcmVudCB1cGRhdGVkKVxuICogICAgICAgLSBzaG91bGRDb21wb25lbnRV
cGRhdGVcbiAqICAgICAgICAgLSBjb21wb25lbnRXaWxsVXBkYXRlXG4gKiAgICAgICAgICAgLSBy
ZW5kZXJcbiAqICAgICAgICAgICAtIFtjaGlsZHJlbidzIGNvbnN0cnVjdG9ycyBvciByZWNlaXZl
IHByb3BzIHBoYXNlc11cbiAqICAgICAgICAgLSBjb21wb25lbnREaWRVcGRhdGVcbiAqXG4gKiAg
ICAgLSBjb21wb25lbnRXaWxsVW5tb3VudFxuICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50
V2lsbFVubW91bnRdXG4gKiAgIC0gW2NoaWxkcmVuIGRlc3Ryb3llZF1cbiAqIC0gKGRlc3Ryb3ll
ZCk6IFRoZSBpbnN0YW5jZSBpcyBub3cgYmxhbmssIHJlbGVhc2VkIGJ5IFJlYWN0IGFuZCByZWFk
eSBmb3IgR0MuXG4gKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4vKipcbiAqIEFu
IGluY3JlbWVudGluZyBJRCBhc3NpZ25lZCB0byBlYWNoIGNvbXBvbmVudCB3aGVuIGl0IGlzIG1v
dW50ZWQuIFRoaXMgaXNcbiAqIHVzZWQgdG8gZW5mb3JjZSB0aGUgb3JkZXIgaW4gd2hpY2ggYFJl
YWN0VXBkYXRlc2AgdXBkYXRlcyBkaXJ0eSBjb21wb25lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4g
Ki9cbnZhciBuZXh0TW91bnRJRCA9IDE7XG5cbi8qKlxuICogQGxlbmRzIHtSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudC5wcm90b3R5cGV9XG4gKi9cbnZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9
IHtcbiAgLyoqXG4gICAqIEJhc2UgY29uc3RydWN0b3IgZm9yIGFsbCBjb21wb3NpdGUgY29tcG9u
ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudFxuICAgKiBAZmlu
YWxcbiAgICogQGludGVybmFsXG4gICAqL1xuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIChlbGVtZW50
KSB7XG4gICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMuX3Jvb3RO
b2RlSUQgPSAwO1xuICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBudWxsO1xuICAgIHRoaXMuX2lu
c3RhbmNlID0gbnVsbDtcbiAgICB0aGlzLl9ob3N0UGFyZW50ID0gbnVsbDtcbiAgICB0aGlzLl9o
b3N0Q29udGFpbmVySW5mbyA9IG51bGw7XG5cbiAgICAvLyBTZWUgUmVhY3RVcGRhdGVRdWV1ZVxu
ICAgIHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5nRWxl
bWVudCA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsO1xuICAgIHRo
aXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTtcbiAgICB0aGlzLl9wZW5kaW5nRm9yY2VV
cGRhdGUgPSBmYWxzZTtcblxuICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBudWxsO1xuICAg
IHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDtcbiAgICB0aGlzLl9jb250ZXh0ID0gbnVs
bDtcbiAgICB0aGlzLl9tb3VudE9yZGVyID0gMDtcbiAgICB0aGlzLl90b3BMZXZlbFdyYXBwZXIg
PSBudWxsO1xuXG4gICAgLy8gU2VlIFJlYWN0VXBkYXRlcyBhbmQgUmVhY3RVcGRhdGVRdWV1ZS5c
biAgICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDtcblxuICAgIC8vIENvbXBvbmVudFdp
bGxVbm1vdW50IHNoYWxsIG9ubHkgYmUgY2FsbGVkIG9uY2VcbiAgICB0aGlzLl9jYWxsZWRDb21w
b25lbnRXaWxsVW5tb3VudCA9IGZhbHNlO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRoaXMuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVy
ID0gZmFsc2U7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgY29t
cG9uZW50LCByZW5kZXJzIG1hcmt1cCwgYW5kIHJlZ2lzdGVycyBldmVudCBsaXN0ZW5lcnMuXG4g
ICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJl
bmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gez9vYmplY3R9IGhv
c3RQYXJlbnRcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBob3N0Q29udGFpbmVySW5mb1xuICAgKiBA
cGFyYW0gez9vYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7P3N0cmluZ30gUmVuZGVyZWQg
bWFya3VwIHRvIGJlIGluc2VydGVkIGludG8gdGhlIERPTS5cbiAgICogQGZpbmFsXG4gICAqIEBp
bnRlcm5hbFxuICAgKi9cbiAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwg
aG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQpIHtcbiAgICB2YXIgX3RoaXMg
PSB0aGlzO1xuXG4gICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gICAgdGhpcy5fbW91bnRP
cmRlciA9IG5leHRNb3VudElEKys7XG4gICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7
XG4gICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBob3N0Q29udGFpbmVySW5mbztcblxuICAg
IHZhciBwdWJsaWNQcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuICAgIHZhciBw
dWJsaWNDb250ZXh0ID0gdGhpcy5fcHJvY2Vzc0NvbnRleHQoY29udGV4dCk7XG5cbiAgICB2YXIg
Q29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblxuICAgIHZhciB1cGRhdGVR
dWV1ZSA9IHRyYW5zYWN0aW9uLmdldFVwZGF0ZVF1ZXVlKCk7XG5cbiAgICAvLyBJbml0aWFsaXpl
IHRoZSBwdWJsaWMgY2xhc3NcbiAgICB2YXIgZG9Db25zdHJ1Y3QgPSBzaG91bGRDb25zdHJ1Y3Qo
Q29tcG9uZW50KTtcbiAgICB2YXIgaW5zdCA9IHRoaXMuX2NvbnN0cnVjdENvbXBvbmVudChkb0Nv
bnN0cnVjdCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtcbiAgICB2
YXIgcmVuZGVyZWRFbGVtZW50O1xuXG4gICAgLy8gU3VwcG9ydCBmdW5jdGlvbmFsIGNvbXBvbmVu
dHNcbiAgICBpZiAoIWRvQ29uc3RydWN0ICYmIChpbnN0ID09IG51bGwgfHwgaW5zdC5yZW5kZXIg
PT0gbnVsbCkpIHtcbiAgICAgIHJlbmRlcmVkRWxlbWVudCA9IGluc3Q7XG4gICAgICB3YXJuSWZJ
bnZhbGlkRWxlbWVudChDb21wb25lbnQsIHJlbmRlcmVkRWxlbWVudCk7XG4gICAgICAhKGluc3Qg
PT09IG51bGwgfHwgaW5zdCA9PT0gZmFsc2UgfHwgUmVhY3QuaXNWYWxpZEVsZW1lbnQoaW5zdCkp
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJyVzKC4uLik6IEEgdmFsaWQgUmVhY3QgZWxlbWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1
cm5lZC4gWW91IG1heSBoYXZlIHJldHVybmVkIHVuZGVmaW5lZCwgYW4gYXJyYXkgb3Igc29tZSBv
dGhlciBpbnZhbGlkIG9iamVjdC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50
Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwNScsIENvbXBvbmVudC5k
aXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiB2b2lkIDA7XG4g
ICAgICBpbnN0ID0gbmV3IFN0YXRlbGVzc0NvbXBvbmVudChDb21wb25lbnQpO1xuICAgICAgdGhp
cy5fY29tcG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWw7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1B1cmVDb21wb25lbnQoQ29tcG9uZW50KSkge1xuICAg
ICAgICB0aGlzLl9jb21wb3NpdGVUeXBlID0gQ29tcG9zaXRlVHlwZXMuUHVyZUNsYXNzO1xuICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fY29tcG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVz
LkltcHVyZUNsYXNzO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgbGF0ZXIg
aW4gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCwgYnV0IGFkZCBhbiBlYXJseVxuICAgICAgLy8g
d2FybmluZyBub3cgdG8gaGVscCBkZWJ1Z2dpbmdcbiAgICAgIGlmIChpbnN0LnJlbmRlciA9PSBu
dWxsKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogTm8gYHJlbmRlcmAgbWV0aG9kIGZvdW5kIG9uIHRoZSBy
ZXR1cm5lZCBjb21wb25lbnQgJyArICdpbnN0YW5jZTogeW91IG1heSBoYXZlIGZvcmdvdHRlbiB0
byBkZWZpbmUgYHJlbmRlcmAuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5u
YW1lIHx8ICdDb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICAgIH1cblxuICAgICAgdmFyIHByb3Bz
TXV0YXRlZCA9IGluc3QucHJvcHMgIT09IHB1YmxpY1Byb3BzO1xuICAgICAgdmFyIGNvbXBvbmVu
dE5hbWUgPSBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBv
bmVudCc7XG5cbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKGluc3QucHJvcHMgPT09IHVuZGVmaW5lZCB8fCAhcHJvcHNNdXRhdGVkLCAnJXMoLi4u
KTogV2hlbiBjYWxsaW5nIHN1cGVyKCkgaW4gYCVzYCwgbWFrZSBzdXJlIHRvIHBhc3MgJyArIFwi
dXAgdGhlIHNhbWUgcHJvcHMgdGhhdCB5b3VyIGNvbXBvbmVudCdzIGNvbnN0cnVjdG9yIHdhcyBw
YXNzZWQuXCIsIGNvbXBvbmVudE5hbWUsIGNvbXBvbmVudE5hbWUpIDogdm9pZCAwO1xuICAgIH1c
blxuICAgIC8vIFRoZXNlIHNob3VsZCBiZSBzZXQgdXAgaW4gdGhlIGNvbnN0cnVjdG9yLCBidXQg
YXMgYSBjb252ZW5pZW5jZSBmb3JcbiAgICAvLyBzaW1wbGVyIGNsYXNzIGFic3RyYWN0aW9ucywg
d2Ugc2V0IHRoZW0gdXAgYWZ0ZXIgdGhlIGZhY3QuXG4gICAgaW5zdC5wcm9wcyA9IHB1YmxpY1By
b3BzO1xuICAgIGluc3QuY29udGV4dCA9IHB1YmxpY0NvbnRleHQ7XG4gICAgaW5zdC5yZWZzID0g
ZW1wdHlPYmplY3Q7XG4gICAgaW5zdC51cGRhdGVyID0gdXBkYXRlUXVldWU7XG5cbiAgICB0aGlz
Ll9pbnN0YW5jZSA9IGluc3Q7XG5cbiAgICAvLyBTdG9yZSBhIHJlZmVyZW5jZSBmcm9tIHRoZSBp
bnN0YW5jZSBiYWNrIHRvIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvblxuICAgIFJlYWN0SW5z
dGFuY2VNYXAuc2V0KGluc3QsIHRoaXMpO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIFNpbmNlIHBsYWluIEpTIGNsYXNzZXMgYXJl
IGRlZmluZWQgd2l0aG91dCBhbnkgc3BlY2lhbCBpbml0aWFsaXphdGlvblxuICAgICAgLy8gbG9n
aWMsIHdlIGNhbiBub3QgY2F0Y2ggY29tbW9uIGVycm9ycyBlYXJseS4gVGhlcmVmb3JlLCB3ZSBo
YXZlIHRvXG4gICAgICAvLyBjYXRjaCB0aGVtIGhlcmUsIGF0IGluaXRpYWxpemF0aW9uIHRpbWUs
IGluc3RlYWQuXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyghaW5zdC5nZXRJbml0aWFsU3RhdGUgfHwgaW5zdC5nZXRJbml0aWFsU3RhdGUuaXNS
ZWFjdENsYXNzQXBwcm92ZWQgfHwgaW5zdC5zdGF0ZSwgJ2dldEluaXRpYWxTdGF0ZSB3YXMgZGVm
aW5lZCBvbiAlcywgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzLiAnICsgJ1RoaXMgaXMgb25seSBz
dXBwb3J0ZWQgZm9yIGNsYXNzZXMgY3JlYXRlZCB1c2luZyBSZWFjdC5jcmVhdGVDbGFzcy4gJyAr
ICdEaWQgeW91IG1lYW4gdG8gZGVmaW5lIGEgc3RhdGUgcHJvcGVydHkgaW5zdGVhZD8nLCB0aGlz
LmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICAgIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LmdldERlZmF1bHRQcm9w
cyB8fCBpbnN0LmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCwgJ2dldERlZmF1
bHRQcm9wcyB3YXMgZGVmaW5lZCBvbiAlcywgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzLiAnICsg
J1RoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNsYXNzZXMgY3JlYXRlZCB1c2luZyBSZWFjdC5j
cmVhdGVDbGFzcy4gJyArICdVc2UgYSBzdGF0aWMgcHJvcGVydHkgdG8gZGVmaW5lIGRlZmF1bHRQ
cm9wcyBpbnN0ZWFkLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAw
O1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
IWluc3QucHJvcFR5cGVzLCAncHJvcFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIHBy
b3BlcnR5IG9uICVzLiBVc2UgYSBzdGF0aWMgJyArICdwcm9wZXJ0eSB0byBkZWZpbmUgcHJvcFR5
cGVzIGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB2b2lkIDA7
XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZygh
aW5zdC5jb250ZXh0VHlwZXMsICdjb250ZXh0VHlwZXMgd2FzIGRlZmluZWQgYXMgYW4gaW5zdGFu
Y2UgcHJvcGVydHkgb24gJXMuIFVzZSBhICcgKyAnc3RhdGljIHByb3BlcnR5IHRvIGRlZmluZSBj
b250ZXh0VHlwZXMgaW5zdGVhZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6
IHZvaWQgMDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudFNob3VsZFVwZGF0ZSAhPT0gJ2Z1bmN0aW9uJywg
JyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRTaG91bGRVcGRhdGUoKS4gRGlk
IHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpPyAnICsgJ1RoZSBuYW1lIGlzIHBocmFz
ZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyAnICsgJ2V4cGVjdGVkIHRv
IHJldHVybiBhIHZhbHVlLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9p
ZCAwO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcodHlwZW9mIGluc3QuY29tcG9uZW50RGlkVW5tb3VudCAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhh
cyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnREaWRVbm1vdW50KCkuIEJ1dCB0aGVyZSBp
cyBubyBzdWNoIGxpZmVjeWNsZSBtZXRob2QuICcgKyAnRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdp
bGxVbm1vdW50KCk/JywgdGhpcy5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7
XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0
eXBlb2YgaW5zdC5jb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzICE9PSAnZnVuY3Rpb24nLCAnJXMg
aGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMoKS4gRGlk
IHlvdSBtZWFuIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKT8nLCB0aGlzLmdldE5hbWUoKSB8
fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICB9XG5cbiAgICB2YXIgaW5pdGlhbFN0YXRl
ID0gaW5zdC5zdGF0ZTtcbiAgICBpZiAoaW5pdGlhbFN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAg
ICAgIGluc3Quc3RhdGUgPSBpbml0aWFsU3RhdGUgPSBudWxsO1xuICAgIH1cbiAgICAhKHR5cGVv
ZiBpbml0aWFsU3RhdGUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGluaXRpYWxTdGF0
ZSkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJyVzLnN0YXRlOiBtdXN0IGJlIHNldCB0byBhbiBvYmplY3Qgb3IgbnVsbCcsIHRoaXMu
Z2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQo
JzEwNicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9p
ZCAwO1xuXG4gICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsO1xuICAgIHRoaXMuX3Bl
bmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTtcbiAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUg
PSBmYWxzZTtcblxuICAgIHZhciBtYXJrdXA7XG4gICAgaWYgKGluc3QudW5zdGFibGVfaGFuZGxl
RXJyb3IpIHtcbiAgICAgIG1hcmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJv
ckhhbmRsaW5nKHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8s
IHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWFya3VwID0gdGhp
cy5wZXJmb3JtSW5pdGlhbE1vdW50KHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENv
bnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoaW5z
dC5jb21wb25lbnREaWRNb3VudCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYo
ZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50RGlkTW91bnQo
KTtcbiAgICAgICAgICB9LCBfdGhpcy5fZGVidWdJRCwgJ2NvbXBvbmVudERpZE1vdW50Jyk7XG4g
ICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RN
b3VudFJlYWR5KCkuZW5xdWV1ZShpbnN0LmNvbXBvbmVudERpZE1vdW50LCBpbnN0KTtcbiAgICAg
IH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWFya3VwO1xuICB9LFxuXG4gIF9jb25zdHJ1Y3RDb21w
b25lbnQ6IGZ1bmN0aW9uIChkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQs
IHVwZGF0ZVF1ZXVlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlzO1xuICAgICAg
dHJ5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25l
cihkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtc
biAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBu
dWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0
Q29tcG9uZW50V2l0aG91dE93bmVyKGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29u
dGV4dCwgdXBkYXRlUXVldWUpO1xuICAgIH1cbiAgfSxcblxuICBfY29uc3RydWN0Q29tcG9uZW50
V2l0aG91dE93bmVyOiBmdW5jdGlvbiAoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWND
b250ZXh0LCB1cGRhdGVRdWV1ZSkge1xuICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50
RWxlbWVudC50eXBlO1xuXG4gICAgaWYgKGRvQ29uc3RydWN0KSB7XG4gICAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICByZXR1cm4gbWVhc3Vy
ZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBuZXcgQ29tcG9u
ZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG4gICAgICAgIH0s
IHRoaXMuX2RlYnVnSUQsICdjdG9yJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4g
bmV3IENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xu
ICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoaXMgY2FuIHN0aWxsIGJlIGFuIGluc3RhbmNlIGlu
IGNhc2Ugb2YgZmFjdG9yeSBjb21wb25lbnRzXG4gICAgLy8gYnV0IHdlJ2xsIGNvdW50IHRoaXMg
YXMgdGltZSBzcGVudCByZW5kZXJpbmcgYXMgdGhlIG1vcmUgY29tbW9uIGNhc2UuXG4gICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHJldHVybiBt
ZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBDb21wb25l
bnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtcbiAgICAgIH0sIHRo
aXMuX2RlYnVnSUQsICdyZW5kZXInKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIENvbXBv
bmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuICAgIH1cbiAg
fSxcblxuICBwZXJmb3JtSW5pdGlhbE1vdW50V2l0aEVycm9ySGFuZGxpbmc6IGZ1bmN0aW9uIChy
ZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlv
biwgY29udGV4dCkge1xuICAgIHZhciBtYXJrdXA7XG4gICAgdmFyIGNoZWNrcG9pbnQgPSB0cmFu
c2FjdGlvbi5jaGVja3BvaW50KCk7XG4gICAgdHJ5IHtcbiAgICAgIG1hcmt1cCA9IHRoaXMucGVy
Zm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWlu
ZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAg
Ly8gUm9sbCBiYWNrIHRvIGNoZWNrcG9pbnQsIGhhbmRsZSBlcnJvciAod2hpY2ggbWF5IGFkZCBp
dGVtcyB0byB0aGUgdHJhbnNhY3Rpb24pLCBhbmQgdGFrZSBhIG5ldyBjaGVja3BvaW50XG4gICAg
ICB0cmFuc2FjdGlvbi5yb2xsYmFjayhjaGVja3BvaW50KTtcbiAgICAgIHRoaXMuX2luc3RhbmNl
LnVuc3RhYmxlX2hhbmRsZUVycm9yKGUpO1xuICAgICAgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1
ZXVlKSB7XG4gICAgICAgIHRoaXMuX2luc3RhbmNlLnN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRp
bmdTdGF0ZSh0aGlzLl9pbnN0YW5jZS5wcm9wcywgdGhpcy5faW5zdGFuY2UuY29udGV4dCk7XG4g
ICAgICB9XG4gICAgICBjaGVja3BvaW50ID0gdHJhbnNhY3Rpb24uY2hlY2twb2ludCgpO1xuXG4g
ICAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudC51bm1vdW50Q29tcG9uZW50KHRydWUpO1xuICAg
ICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soY2hlY2twb2ludCk7XG5cbiAgICAgIC8vIFRyeSBhZ2Fp
biAtIHdlJ3ZlIGluZm9ybWVkIHRoZSBjb21wb25lbnQgYWJvdXQgdGhlIGVycm9yLCBzbyB0aGV5
IGNhbiByZW5kZXIgYW4gZXJyb3IgbWVzc2FnZSB0aGlzIHRpbWUuXG4gICAgICAvLyBJZiB0aGlz
IHRocm93cyBhZ2FpbiwgdGhlIGVycm9yIHdpbGwgYnViYmxlIHVwIChhbmQgY2FuIGJlIGNhdWdo
dCBieSBhIGhpZ2hlciBlcnJvciBib3VuZGFyeSkuXG4gICAgICBtYXJrdXAgPSB0aGlzLnBlcmZv
cm1Jbml0aWFsTW91bnQocmVuZGVyZWRFbGVtZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVy
SW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH1cbiAgICByZXR1cm4gbWFya3VwO1xu
ICB9LFxuXG4gIHBlcmZvcm1Jbml0aWFsTW91bnQ6IGZ1bmN0aW9uIChyZW5kZXJlZEVsZW1lbnQs
IGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xu
ICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG5cbiAgICB2YXIgZGVidWdJRCA9IDA7XG4g
ICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGRl
YnVnSUQgPSB0aGlzLl9kZWJ1Z0lEO1xuICAgIH1cblxuICAgIGlmIChpbnN0LmNvbXBvbmVudFdp
bGxNb3VudCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuICAgICAg
ICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxNb3VudCgpO1xuICAgICAgICB9LCBkZWJ1Z0lE
LCAnY29tcG9uZW50V2lsbE1vdW50Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnN0LmNv
bXBvbmVudFdpbGxNb3VudCgpO1xuICAgICAgfVxuICAgICAgLy8gV2hlbiBtb3VudGluZywgY2Fs
bHMgdG8gYHNldFN0YXRlYCBieSBgY29tcG9uZW50V2lsbE1vdW50YCB3aWxsIHNldFxuICAgICAg
Ly8gYHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlYCB3aXRob3V0IHRyaWdnZXJpbmcgYSByZS1yZW5k
ZXIuXG4gICAgICBpZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUpIHtcbiAgICAgICAgaW5zdC5z
dGF0ZSA9IHRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUoaW5zdC5wcm9wcywgaW5zdC5jb250ZXh0
KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBub3QgYSBzdGF0ZWxlc3MgY29tcG9uZW50
LCB3ZSBub3cgcmVuZGVyXG4gICAgaWYgKHJlbmRlcmVkRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7
XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQo
KTtcbiAgICB9XG5cbiAgICB2YXIgbm9kZVR5cGUgPSBSZWFjdE5vZGVUeXBlcy5nZXRUeXBlKHJl
bmRlcmVkRWxlbWVudCk7XG4gICAgdGhpcy5fcmVuZGVyZWROb2RlVHlwZSA9IG5vZGVUeXBlO1xu
ICAgIHZhciBjaGlsZCA9IHRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQocmVuZGVyZWRF
bGVtZW50LCBub2RlVHlwZSAhPT0gUmVhY3ROb2RlVHlwZXMuRU1QVFkgLyogc2hvdWxkSGF2ZURl
YnVnSUQgKi9cbiAgICApO1xuICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gY2hpbGQ7XG5c
biAgICB2YXIgbWFya3VwID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNoaWxkLCB0
cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRoaXMuX3Byb2Nlc3ND
aGlsZENvbnRleHQoY29udGV4dCksIGRlYnVnSUQpO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChkZWJ1Z0lEICE9PSAwKSB7XG4g
ICAgICAgIHZhciBjaGlsZERlYnVnSURzID0gY2hpbGQuX2RlYnVnSUQgIT09IDAgPyBbY2hpbGQu
X2RlYnVnSURdIDogW107XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5v
blNldENoaWxkcmVuKGRlYnVnSUQsIGNoaWxkRGVidWdJRHMpO1xuICAgICAgfVxuICAgIH1cblxu
ICAgIHJldHVybiBtYXJrdXA7XG4gIH0sXG5cbiAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHtc
biAgICByZXR1cm4gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHRoaXMuX3JlbmRlcmVkQ29t
cG9uZW50KTtcbiAgfSxcblxuICAvKipcbiAgICogUmVsZWFzZXMgYW55IHJlc291cmNlcyBhbGxv
Y2F0ZWQgYnkgYG1vdW50Q29tcG9uZW50YC5cbiAgICpcbiAgICogQGZpbmFsXG4gICAqIEBpbnRl
cm5hbFxuICAgKi9cbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHNhZmVseSkge1xuICAg
IGlmICghdGhpcy5fcmVuZGVyZWRDb21wb25lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5c
biAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXG4gICAgaWYgKGluc3QuY29tcG9uZW50
V2lsbFVubW91bnQgJiYgIWluc3QuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50KSB7XG4gICAg
ICBpbnN0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCA9IHRydWU7XG5cbiAgICAgIGlmIChz
YWZlbHkpIHtcbiAgICAgICAgdmFyIG5hbWUgPSB0aGlzLmdldE5hbWUoKSArICcuY29tcG9uZW50
V2lsbFVubW91bnQoKSc7XG4gICAgICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2Fs
bGJhY2sobmFtZSwgaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudC5iaW5kKGluc3QpKTtcbiAgICAg
IH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuICAg
ICAgICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50V2lsbFVubW91bnQoKTtcbiAgICAgICAgICB9
LCB0aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50V2lsbFVubW91bnQnKTtcbiAgICAgICAgfSBlbHNl
IHtcbiAgICAgICAgICBpbnN0LmNvbXBvbmVudFdpbGxVbm1vdW50KCk7XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpIHtcbiAgICAg
IFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50
LCBzYWZlbHkpO1xuICAgICAgdGhpcy5fcmVuZGVyZWROb2RlVHlwZSA9IG51bGw7XG4gICAgICB0
aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IG51bGw7XG4gICAgICB0aGlzLl9pbnN0YW5jZSA9IG51
bGw7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgcGVuZGluZyBmaWVsZHNcbiAgICAvLyBFdmVuIGlm
IHRoaXMgY29tcG9uZW50IGlzIHNjaGVkdWxlZCBmb3IgYW5vdGhlciB1cGRhdGUgaW4gUmVhY3RV
cGRhdGVzLFxuICAgIC8vIGl0IHdvdWxkIHN0aWxsIGJlIGlnbm9yZWQgYmVjYXVzZSB0aGVzZSBm
aWVsZHMgYXJlIHJlc2V0LlxuICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcbiAg
ICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ0Zv
cmNlVXBkYXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG4g
ICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQgPSBudWxsO1xuXG4gICAgLy8gVGhlc2UgZmllbGRzIGRv
IG5vdCByZWFsbHkgbmVlZCB0byBiZSByZXNldCBzaW5jZSB0aGlzIG9iamVjdCBpcyBub1xuICAg
IC8vIGxvbmdlciBhY2Nlc3NpYmxlLlxuICAgIHRoaXMuX2NvbnRleHQgPSBudWxsO1xuICAgIHRo
aXMuX3Jvb3ROb2RlSUQgPSAwO1xuICAgIHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51bGw7XG5c
biAgICAvLyBEZWxldGUgdGhlIHJlZmVyZW5jZSBmcm9tIHRoZSBpbnN0YW5jZSB0byB0aGlzIGlu
dGVybmFsIHJlcHJlc2VudGF0aW9uXG4gICAgLy8gd2hpY2ggYWxsb3cgdGhlIGludGVybmFscyB0
byBiZSBwcm9wZXJseSBjbGVhbmVkIHVwIGV2ZW4gaWYgdGhlIHVzZXJcbiAgICAvLyBsZWFrcyBh
IHJlZmVyZW5jZSB0byB0aGUgcHVibGljIGluc3RhbmNlLlxuICAgIFJlYWN0SW5zdGFuY2VNYXAu
cmVtb3ZlKGluc3QpO1xuXG4gICAgLy8gU29tZSBleGlzdGluZyBjb21wb25lbnRzIHJlbHkgb24g
aW5zdC5wcm9wcyBldmVuIGFmdGVyIHRoZXkndmUgYmVlblxuICAgIC8vIGRlc3Ryb3llZCAoaW4g
ZXZlbnQgaGFuZGxlcnMpLlxuICAgIC8vIFRPRE86IGluc3QucHJvcHMgPSBudWxsO1xuICAgIC8v
IFRPRE86IGluc3Quc3RhdGUgPSBudWxsO1xuICAgIC8vIFRPRE86IGluc3QuY29udGV4dCA9IG51
bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgdGhlIGNvbnRleHQgb2JqZWN0IHRvIG9u
bHkgY29udGFpbiBrZXlzIHNwZWNpZmllZCBpblxuICAgKiBgY29udGV4dFR5cGVzYFxuICAgKlxu
ICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fVxuICAg
KiBAcHJpdmF0ZVxuICAgKi9cbiAgX21hc2tDb250ZXh0OiBmdW5jdGlvbiAoY29udGV4dCkge1xu
ICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuICAgIHZhciBj
b250ZXh0VHlwZXMgPSBDb21wb25lbnQuY29udGV4dFR5cGVzO1xuICAgIGlmICghY29udGV4dFR5
cGVzKSB7XG4gICAgICByZXR1cm4gZW1wdHlPYmplY3Q7XG4gICAgfVxuICAgIHZhciBtYXNrZWRD
b250ZXh0ID0ge307XG4gICAgZm9yICh2YXIgY29udGV4dE5hbWUgaW4gY29udGV4dFR5cGVzKSB7
XG4gICAgICBtYXNrZWRDb250ZXh0W2NvbnRleHROYW1lXSA9IGNvbnRleHRbY29udGV4dE5hbWVd
O1xuICAgIH1cbiAgICByZXR1cm4gbWFza2VkQ29udGV4dDtcbiAgfSxcblxuICAvKipcbiAgICog
RmlsdGVycyB0aGUgY29udGV4dCBvYmplY3QgdG8gb25seSBjb250YWluIGtleXMgc3BlY2lmaWVk
IGluXG4gICAqIGBjb250ZXh0VHlwZXNgLCBhbmQgYXNzZXJ0cyB0aGF0IHRoZXkgYXJlIHZhbGlk
LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKiBAcmV0dXJuIHs/b2Jq
ZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3Byb2Nlc3NDb250ZXh0OiBmdW5jdGlvbiAo
Y29udGV4dCkge1xuICAgIHZhciBtYXNrZWRDb250ZXh0ID0gdGhpcy5fbWFza0NvbnRleHQoY29u
dGV4dCk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuICAgICAg
aWYgKENvbXBvbmVudC5jb250ZXh0VHlwZXMpIHtcbiAgICAgICAgdGhpcy5fY2hlY2tDb250ZXh0
VHlwZXMoQ29tcG9uZW50LmNvbnRleHRUeXBlcywgbWFza2VkQ29udGV4dCwgJ2NvbnRleHQnKTtc
biAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hc2tlZENvbnRleHQ7XG4gIH0sXG5cbiAgLyoq
XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjdXJyZW50Q29udGV4dFxuICAgKiBAcmV0dXJuIHtvYmpl
Y3R9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcHJvY2Vzc0NoaWxkQ29udGV4dDogZnVuY3Rp
b24gKGN1cnJlbnRDb250ZXh0KSB7XG4gICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRF
bGVtZW50LnR5cGU7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcbiAgICB2YXIgY2hp
bGRDb250ZXh0O1xuXG4gICAgaWYgKGluc3QuZ2V0Q2hpbGRDb250ZXh0KSB7XG4gICAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBSZWFjdElu
c3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWdpblByb2Nlc3NpbmdDaGlsZENvbnRleHQoKTtc
biAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjaGlsZENvbnRleHQgPSBpbnN0LmdldENoaWxkQ29u
dGV4dCgpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vbkVuZFByb2Nlc3NpbmdDaGlsZENvbnRleHQoKTtcbiAgICAgICAgfVxu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hpbGRDb250ZXh0ID0gaW5zdC5nZXRDaGlsZENvbnRl
eHQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hpbGRDb250ZXh0KSB7XG4gICAgICAh
KHR5cGVvZiBDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMgPT09ICdvYmplY3QnKSA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5n
ZXRDaGlsZENvbnRleHQoKTogY2hpbGRDb250ZXh0VHlwZXMgbXVzdCBiZSBkZWZpbmVkIGluIG9y
ZGVyIHRvIHVzZSBnZXRDaGlsZENvbnRleHQoKS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RD
b21wb3NpdGVDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMDcnLCB0aGlzLmdldE5hbWUo
KSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICAgIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHRoaXMuX2NoZWNr
Q29udGV4dFR5cGVzKENvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcywgY2hpbGRDb250ZXh0LCAn
Y2hpbGQgY29udGV4dCcpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgbmFtZSBpbiBjaGlsZENv
bnRleHQpIHtcbiAgICAgICAgIShuYW1lIGluIENvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcykg
PyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnJXMuZ2V0Q2hpbGRDb250ZXh0KCk6IGtleSBcIiVzXCIgaXMgbm90IGRlZmluZWQgaW4gY2hp
bGRDb250ZXh0VHlwZXMuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9u
ZW50JywgbmFtZSkgOiBfcHJvZEludmFyaWFudCgnMTA4JywgdGhpcy5nZXROYW1lKCkgfHwgJ1Jl
YWN0Q29tcG9zaXRlQ29tcG9uZW50JywgbmFtZSkgOiB2b2lkIDA7XG4gICAgICB9XG4gICAgICBy
ZXR1cm4gX2Fzc2lnbih7fSwgY3VycmVudENvbnRleHQsIGNoaWxkQ29udGV4dCk7XG4gICAgfVxu
ICAgIHJldHVybiBjdXJyZW50Q29udGV4dDtcbiAgfSxcblxuICAvKipcbiAgICogQXNzZXJ0IHRo
YXQgdGhlIGNvbnRleHQgdHlwZXMgYXJlIHZhbGlkXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0
fSB0eXBlU3BlY3MgTWFwIG9mIGNvbnRleHQgZmllbGQgdG8gYSBSZWFjdFByb3BUeXBlXG4gICAq
IEBwYXJhbSB7b2JqZWN0fSB2YWx1ZXMgUnVudGltZSB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHR5
cGUtY2hlY2tlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRpb24gZS5nLiBcInByb3BcIiwg
XCJjb250ZXh0XCIsIFwiY2hpbGQgY29udGV4dFwiXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBf
Y2hlY2tDb250ZXh0VHlwZXM6IGZ1bmN0aW9uICh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24p
IHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
ICAgY2hlY2tSZWFjdFR5cGVTcGVjKHR5cGVTcGVjcywgdmFsdWVzLCBsb2NhdGlvbiwgdGhpcy5n
ZXROYW1lKCksIG51bGwsIHRoaXMuX2RlYnVnSUQpO1xuICAgIH1cbiAgfSxcblxuICByZWNlaXZl
Q29tcG9uZW50OiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBuZXh0Q29udGV4
dCkge1xuICAgIHZhciBwcmV2RWxlbWVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50O1xuICAgIHZh
ciBwcmV2Q29udGV4dCA9IHRoaXMuX2NvbnRleHQ7XG5cbiAgICB0aGlzLl9wZW5kaW5nRWxlbWVu
dCA9IG51bGw7XG5cbiAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgcHJldkVs
ZW1lbnQsIG5leHRFbGVtZW50LCBwcmV2Q29udGV4dCwgbmV4dENvbnRleHQpO1xuICB9LFxuXG4g
IC8qKlxuICAgKiBJZiBhbnkgb2YgYF9wZW5kaW5nRWxlbWVudGAsIGBfcGVuZGluZ1N0YXRlUXVl
dWVgLCBvciBgX3BlbmRpbmdGb3JjZVVwZGF0ZWBcbiAgICogaXMgc2V0LCB1cGRhdGUgdGhlIGNv
bXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0
cmFuc2FjdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHBlcmZvcm1VcGRhdGVJZk5lY2Vz
c2FyeTogZnVuY3Rpb24gKHRyYW5zYWN0aW9uKSB7XG4gICAgaWYgKHRoaXMuX3BlbmRpbmdFbGVt
ZW50ICE9IG51bGwpIHtcbiAgICAgIFJlYWN0UmVjb25jaWxlci5yZWNlaXZlQ29tcG9uZW50KHRo
aXMsIHRoaXMuX3BlbmRpbmdFbGVtZW50LCB0cmFuc2FjdGlvbiwgdGhpcy5fY29udGV4dCk7XG4g
ICAgfSBlbHNlIGlmICh0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSAhPT0gbnVsbCB8fCB0aGlzLl9w
ZW5kaW5nRm9yY2VVcGRhdGUpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tcG9uZW50KHRyYW5zYWN0
aW9uLCB0aGlzLl9jdXJyZW50RWxlbWVudCwgdGhpcy5fY3VycmVudEVsZW1lbnQsIHRoaXMuX2Nv
bnRleHQsIHRoaXMuX2NvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl91cGRhdGVC
YXRjaE51bWJlciA9IG51bGw7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBQZXJmb3JtIGFu
IHVwZGF0ZSB0byBhIG1vdW50ZWQgY29tcG9uZW50LiBUaGUgY29tcG9uZW50V2lsbFJlY2VpdmVQ
cm9wcyBhbmRcbiAgICogc2hvdWxkQ29tcG9uZW50VXBkYXRlIG1ldGhvZHMgYXJlIGNhbGxlZCwg
dGhlbiAoYXNzdW1pbmcgdGhlIHVwZGF0ZSBpc24ndFxuICAgKiBza2lwcGVkKSB0aGUgcmVtYWlu
aW5nIHVwZGF0ZSBsaWZlY3ljbGUgbWV0aG9kcyBhcmUgY2FsbGVkIGFuZCB0aGUgRE9NXG4gICAq
IHJlcHJlc2VudGF0aW9uIGlzIHVwZGF0ZWQuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoaXMg
aW1wbGVtZW50cyBSZWFjdCdzIHJlbmRlcmluZyBhbmQgcmVjb25jaWxpYXRpb24gYWxnb3JpdGht
LlxuICAgKiBTb3BoaXN0aWNhdGVkIGNsaWVudHMgbWF5IHdpc2ggdG8gb3ZlcnJpZGUgdGhpcy5c
biAgICpcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlv
blxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gcHJldlBhcmVudEVsZW1lbnRcbiAgICogQHBh
cmFtIHtSZWFjdEVsZW1lbnR9IG5leHRQYXJlbnRFbGVtZW50XG4gICAqIEBpbnRlcm5hbFxuICAg
KiBAb3ZlcnJpZGFibGVcbiAgICovXG4gIHVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5z
YWN0aW9uLCBwcmV2UGFyZW50RWxlbWVudCwgbmV4dFBhcmVudEVsZW1lbnQsIHByZXZVbm1hc2tl
ZENvbnRleHQsIG5leHRVbm1hc2tlZENvbnRleHQpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuX2lu
c3RhbmNlO1xuICAgICEoaW5zdCAhPSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdBdHRlbXB0ZWQgdG8gdXBkYXRlIGNvbXBv
bmVudCBgJXNgIHRoYXQgaGFzIGFscmVhZHkgYmVlbiB1bm1vdW50ZWQgKG9yIGZhaWxlZCB0byBt
b3VudCkuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBf
cHJvZEludmFyaWFudCgnMTM2JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29t
cG9uZW50JykgOiB2b2lkIDA7XG5cbiAgICB2YXIgd2lsbFJlY2VpdmUgPSBmYWxzZTtcbiAgICB2
YXIgbmV4dENvbnRleHQ7XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIGNvbnRleHQgaGFzIGNo
YW5nZWQgb3Igbm90XG4gICAgaWYgKHRoaXMuX2NvbnRleHQgPT09IG5leHRVbm1hc2tlZENvbnRl
eHQpIHtcbiAgICAgIG5leHRDb250ZXh0ID0gaW5zdC5jb250ZXh0O1xuICAgIH0gZWxzZSB7XG4g
ICAgICBuZXh0Q29udGV4dCA9IHRoaXMuX3Byb2Nlc3NDb250ZXh0KG5leHRVbm1hc2tlZENvbnRl
eHQpO1xuICAgICAgd2lsbFJlY2VpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBwcmV2UHJv
cHMgPSBwcmV2UGFyZW50RWxlbWVudC5wcm9wcztcbiAgICB2YXIgbmV4dFByb3BzID0gbmV4dFBh
cmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICAvLyBOb3QgYSBzaW1wbGUgc3RhdGUgdXBkYXRlIGJ1
dCBhIHByb3BzIHVwZGF0ZVxuICAgIGlmIChwcmV2UGFyZW50RWxlbWVudCAhPT0gbmV4dFBhcmVu
dEVsZW1lbnQpIHtcbiAgICAgIHdpbGxSZWNlaXZlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBB
biB1cGRhdGUgaGVyZSB3aWxsIHNjaGVkdWxlIGFuIHVwZGF0ZSBidXQgaW1tZWRpYXRlbHkgc2V0
XG4gICAgLy8gX3BlbmRpbmdTdGF0ZVF1ZXVlIHdoaWNoIHdpbGwgZW5zdXJlIHRoYXQgYW55IHN0
YXRlIHVwZGF0ZXMgZ2V0c1xuICAgIC8vIGltbWVkaWF0ZWx5IHJlY29uY2lsZWQgaW5zdGVhZCBv
ZiB3YWl0aW5nIGZvciB0aGUgbmV4dCBiYXRjaC5cbiAgICBpZiAod2lsbFJlY2VpdmUgJiYgaW5z
dC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihm
dW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50V2lsbFJlY2VpdmVQ
cm9wcyhuZXh0UHJvcHMsIG5leHRDb250ZXh0KTtcbiAgICAgICAgfSwgdGhpcy5fZGVidWdJRCwg
J2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlu
c3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMsIG5leHRDb250ZXh0KTtcbiAg
ICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbmV4dFN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdT
dGF0ZShuZXh0UHJvcHMsIG5leHRDb250ZXh0KTtcbiAgICB2YXIgc2hvdWxkVXBkYXRlID0gdHJ1
ZTtcblxuICAgIGlmICghdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlKSB7XG4gICAgICBpZiAoaW5z
dC5zaG91bGRDb21wb25lbnRVcGRhdGUpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBzaG91bGRVcGRhdGUgPSBtZWFzdXJl
TGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5zdC5zaG91
bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KTtcbiAg
ICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnc2hvdWxkQ29tcG9uZW50VXBkYXRlJyk7XG4gICAg
ICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2hvdWxkVXBkYXRlID0gaW5zdC5zaG91bGRDb21wb25l
bnRVcGRhdGUobmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KTtcbiAgICAgICAgfVxu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbXBvc2l0ZVR5cGUgPT09IENvbXBv
c2l0ZVR5cGVzLlB1cmVDbGFzcykge1xuICAgICAgICAgIHNob3VsZFVwZGF0ZSA9ICFzaGFsbG93
RXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpIHx8ICFzaGFsbG93RXF1YWwoaW5zdC5zdGF0ZSwg
bmV4dFN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhzaG91bGRVcGRhdGUgIT09IHVuZGVmaW5l
ZCwgJyVzLnNob3VsZENvbXBvbmVudFVwZGF0ZSgpOiBSZXR1cm5lZCB1bmRlZmluZWQgaW5zdGVh
ZCBvZiBhICcgKyAnYm9vbGVhbiB2YWx1ZS4gTWFrZSBzdXJlIHRvIHJldHVybiB0cnVlIG9yIGZh
bHNlLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9p
ZCAwO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDtcbiAgICBp
ZiAoc2hvdWxkVXBkYXRlKSB7XG4gICAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxz
ZTtcbiAgICAgIC8vIFdpbGwgc2V0IGB0aGlzLnByb3BzYCwgYHRoaXMuc3RhdGVgIGFuZCBgdGhp
cy5jb250ZXh0YC5cbiAgICAgIHRoaXMuX3BlcmZvcm1Db21wb25lbnRVcGRhdGUobmV4dFBhcmVu
dEVsZW1lbnQsIG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCwgdHJhbnNhY3Rpb24s
IG5leHRVbm1hc2tlZENvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBpdCdzIGRl
dGVybWluZWQgdGhhdCBhIGNvbXBvbmVudCBzaG91bGQgbm90IHVwZGF0ZSwgd2Ugc3RpbGwgd2Fu
dFxuICAgICAgLy8gdG8gc2V0IHByb3BzIGFuZCBzdGF0ZSBidXQgd2Ugc2hvcnRjdXQgdGhlIHJl
c3Qgb2YgdGhlIHVwZGF0ZS5cbiAgICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dFBhcmVu
dEVsZW1lbnQ7XG4gICAgICB0aGlzLl9jb250ZXh0ID0gbmV4dFVubWFza2VkQ29udGV4dDtcbiAg
ICAgIGluc3QucHJvcHMgPSBuZXh0UHJvcHM7XG4gICAgICBpbnN0LnN0YXRlID0gbmV4dFN0YXRl
O1xuICAgICAgaW5zdC5jb250ZXh0ID0gbmV4dENvbnRleHQ7XG4gICAgfVxuICB9LFxuXG4gIF9w
cm9jZXNzUGVuZGluZ1N0YXRlOiBmdW5jdGlvbiAocHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIg
aW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuICAgIHZhciBxdWV1ZSA9IHRoaXMuX3BlbmRpbmdTdGF0
ZVF1ZXVlO1xuICAgIHZhciByZXBsYWNlID0gdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZTtcbiAg
ICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ1N0
YXRlUXVldWUgPSBudWxsO1xuXG4gICAgaWYgKCFxdWV1ZSkge1xuICAgICAgcmV0dXJuIGluc3Qu
c3RhdGU7XG4gICAgfVxuXG4gICAgaWYgKHJlcGxhY2UgJiYgcXVldWUubGVuZ3RoID09PSAxKSB7
XG4gICAgICByZXR1cm4gcXVldWVbMF07XG4gICAgfVxuXG4gICAgdmFyIG5leHRTdGF0ZSA9IF9h
c3NpZ24oe30sIHJlcGxhY2UgPyBxdWV1ZVswXSA6IGluc3Quc3RhdGUpO1xuICAgIGZvciAodmFy
IGkgPSByZXBsYWNlID8gMSA6IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFy
IHBhcnRpYWwgPSBxdWV1ZVtpXTtcbiAgICAgIF9hc3NpZ24obmV4dFN0YXRlLCB0eXBlb2YgcGFy
dGlhbCA9PT0gJ2Z1bmN0aW9uJyA/IHBhcnRpYWwuY2FsbChpbnN0LCBuZXh0U3RhdGUsIHByb3Bz
LCBjb250ZXh0KSA6IHBhcnRpYWwpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXh0U3RhdGU7XG4g
IH0sXG5cbiAgLyoqXG4gICAqIE1lcmdlcyBuZXcgcHJvcHMgYW5kIHN0YXRlLCBub3RpZmllcyBk
ZWxlZ2F0ZSBtZXRob2RzIG9mIHVwZGF0ZSBhbmRcbiAgICogcGVyZm9ybXMgdXBkYXRlLlxuICAg
KlxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgTmV4dCBlbGVtZW50XG4g
ICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHMgTmV4dCBwdWJsaWMgb2JqZWN0IHRvIHNldCBh
cyBwcm9wZXJ0aWVzLlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZSBOZXh0IG9iamVj
dCB0byBzZXQgYXMgc3RhdGUuXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHQgTmV4
dCBwdWJsaWMgb2JqZWN0IHRvIHNldCBhcyBjb250ZXh0LlxuICAgKiBAcGFyYW0ge1JlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7P29iamVjdH0gdW5t
YXNrZWRDb250ZXh0XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcGVyZm9ybUNvbXBvbmVudFVw
ZGF0ZTogZnVuY3Rpb24gKG5leHRFbGVtZW50LCBuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENv
bnRleHQsIHRyYW5zYWN0aW9uLCB1bm1hc2tlZENvbnRleHQpIHtcbiAgICB2YXIgX3RoaXMyID0g
dGhpcztcblxuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG5cbiAgICB2YXIgaGFzQ29t
cG9uZW50RGlkVXBkYXRlID0gQm9vbGVhbihpbnN0LmNvbXBvbmVudERpZFVwZGF0ZSk7XG4gICAg
dmFyIHByZXZQcm9wcztcbiAgICB2YXIgcHJldlN0YXRlO1xuICAgIHZhciBwcmV2Q29udGV4dDtc
biAgICBpZiAoaGFzQ29tcG9uZW50RGlkVXBkYXRlKSB7XG4gICAgICBwcmV2UHJvcHMgPSBpbnN0
LnByb3BzO1xuICAgICAgcHJldlN0YXRlID0gaW5zdC5zdGF0ZTtcbiAgICAgIHByZXZDb250ZXh0
ID0gaW5zdC5jb250ZXh0O1xuICAgIH1cblxuICAgIGlmIChpbnN0LmNvbXBvbmVudFdpbGxVcGRh
dGUpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBy
ZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsVXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0
Q29udGV4dCk7XG4gICAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdjb21wb25lbnRXaWxsVXBkYXRl
Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnN0LmNvbXBvbmVudFdpbGxVcGRhdGUobmV4
dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0
aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRFbGVtZW50O1xuICAgIHRoaXMuX2NvbnRleHQgPSB1
bm1hc2tlZENvbnRleHQ7XG4gICAgaW5zdC5wcm9wcyA9IG5leHRQcm9wcztcbiAgICBpbnN0LnN0
YXRlID0gbmV4dFN0YXRlO1xuICAgIGluc3QuY29udGV4dCA9IG5leHRDb250ZXh0O1xuXG4gICAg
dGhpcy5fdXBkYXRlUmVuZGVyZWRDb21wb25lbnQodHJhbnNhY3Rpb24sIHVubWFza2VkQ29udGV4
dCk7XG5cbiAgICBpZiAoaGFzQ29tcG9uZW50RGlkVXBkYXRlKSB7XG4gICAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB0cmFuc2FjdGlvbi5n
ZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBtZWFz
dXJlTGlmZUN5Y2xlUGVyZihpbnN0LmNvbXBvbmVudERpZFVwZGF0ZS5iaW5kKGluc3QsIHByZXZQ
cm9wcywgcHJldlN0YXRlLCBwcmV2Q29udGV4dCksIF90aGlzMi5fZGVidWdJRCwgJ2NvbXBvbmVu
dERpZFVwZGF0ZScpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5z
YWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoaW5zdC5jb21wb25lbnREaWRVcGRh
dGUuYmluZChpbnN0LCBwcmV2UHJvcHMsIHByZXZTdGF0ZSwgcHJldkNvbnRleHQpLCBpbnN0KTtc
biAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIGNvbXBvbmVudCdz
IGByZW5kZXJgIG1ldGhvZCBhbmQgdXBkYXRlIHRoZSBET00gYWNjb3JkaW5nbHkuXG4gICAqXG4g
ICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICog
QGludGVybmFsXG4gICAqL1xuICBfdXBkYXRlUmVuZGVyZWRDb21wb25lbnQ6IGZ1bmN0aW9uICh0
cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBwcmV2Q29tcG9uZW50SW5zdGFuY2UgPSB0
aGlzLl9yZW5kZXJlZENvbXBvbmVudDtcbiAgICB2YXIgcHJldlJlbmRlcmVkRWxlbWVudCA9IHBy
ZXZDb21wb25lbnRJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQ7XG4gICAgdmFyIG5leHRSZW5kZXJl
ZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKTtcblxuICAgIHZhciBk
ZWJ1Z0lEID0gMDtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgZGVidWdJRCA9IHRoaXMuX2RlYnVnSUQ7XG4gICAgfVxuXG4gICAgaWYgKHNo
b3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZSZW5kZXJlZEVsZW1lbnQsIG5leHRSZW5kZXJl
ZEVsZW1lbnQpKSB7XG4gICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudChwcmV2
Q29tcG9uZW50SW5zdGFuY2UsIG5leHRSZW5kZXJlZEVsZW1lbnQsIHRyYW5zYWN0aW9uLCB0aGlz
Ll9wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFy
IG9sZEhvc3ROb2RlID0gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHByZXZDb21wb25lbnRJ
bnN0YW5jZSk7XG4gICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChwcmV2Q29t
cG9uZW50SW5zdGFuY2UsIGZhbHNlKTtcblxuICAgICAgdmFyIG5vZGVUeXBlID0gUmVhY3ROb2Rl
VHlwZXMuZ2V0VHlwZShuZXh0UmVuZGVyZWRFbGVtZW50KTtcbiAgICAgIHRoaXMuX3JlbmRlcmVk
Tm9kZVR5cGUgPSBub2RlVHlwZTtcbiAgICAgIHZhciBjaGlsZCA9IHRoaXMuX2luc3RhbnRpYXRl
UmVhY3RDb21wb25lbnQobmV4dFJlbmRlcmVkRWxlbWVudCwgbm9kZVR5cGUgIT09IFJlYWN0Tm9k
ZVR5cGVzLkVNUFRZIC8qIHNob3VsZEhhdmVEZWJ1Z0lEICovXG4gICAgICApO1xuICAgICAgdGhp
cy5fcmVuZGVyZWRDb21wb25lbnQgPSBjaGlsZDtcblxuICAgICAgdmFyIG5leHRNYXJrdXAgPSBS
ZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY2hpbGQsIHRyYW5zYWN0aW9uLCB0aGlzLl9o
b3N0UGFyZW50LCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywgdGhpcy5fcHJvY2Vzc0NoaWxkQ29u
dGV4dChjb250ZXh0KSwgZGVidWdJRCk7XG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmIChkZWJ1Z0lEICE9PSAwKSB7XG4gICAg
ICAgICAgdmFyIGNoaWxkRGVidWdJRHMgPSBjaGlsZC5fZGVidWdJRCAhPT0gMCA/IFtjaGlsZC5f
ZGVidWdJRF0gOiBbXTtcbiAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wu
b25TZXRDaGlsZHJlbihkZWJ1Z0lELCBjaGlsZERlYnVnSURzKTtcbiAgICAgICAgfVxuICAgICAg
fVxuXG4gICAgICB0aGlzLl9yZXBsYWNlTm9kZVdpdGhNYXJrdXAob2xkSG9zdE5vZGUsIG5leHRN
YXJrdXAsIHByZXZDb21wb25lbnRJbnN0YW5jZSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAg
KiBPdmVycmlkZGVuIGluIHNoYWxsb3cgcmVuZGVyaW5nLlxuICAgKlxuICAgKiBAcHJvdGVjdGVk
XG4gICAqL1xuICBfcmVwbGFjZU5vZGVXaXRoTWFya3VwOiBmdW5jdGlvbiAob2xkSG9zdE5vZGUs
IG5leHRNYXJrdXAsIHByZXZJbnN0YW5jZSkge1xuICAgIFJlYWN0Q29tcG9uZW50RW52aXJvbm1l
bnQucmVwbGFjZU5vZGVXaXRoTWFya3VwKG9sZEhvc3ROb2RlLCBuZXh0TWFya3VwLCBwcmV2SW5z
dGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBfcmVuZGVy
VmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0OiBmdW5jdGlvbiAoKSB7XG4g
ICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcbiAgICB2YXIgcmVuZGVyZWRFbGVtZW50O1xu
XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
IHJlbmRlcmVkRWxlbWVudCA9IG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcbiAg
ICAgICAgcmV0dXJuIGluc3QucmVuZGVyKCk7XG4gICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAncmVu
ZGVyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbmRlcmVkRWxlbWVudCA9IGluc3QucmVuZGVy
KCk7XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5
J3JlIHJldHVybmluZyBudWxsLlxuICAgICAgaWYgKHJlbmRlcmVkRWxlbWVudCA9PT0gdW5kZWZp
bmVkICYmIGluc3QucmVuZGVyLl9pc01vY2tGdW5jdGlvbikge1xuICAgICAgICAvLyBUaGlzIGlz
IHByb2JhYmx5IGJhZCBwcmFjdGljZS4gQ29uc2lkZXIgd2FybmluZyBoZXJlIGFuZFxuICAgICAg
ICAvLyBkZXByZWNhdGluZyB0aGlzIGNvbnZlbmllbmNlLlxuICAgICAgICByZW5kZXJlZEVsZW1l
bnQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZW5kZXJlZEVsZW1lbnQ7
XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcmVuZGVyVmFsaWRhdGVk
Q29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlbmRlcmVkRWxlbWVudDtcbiAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyB8fCB0aGlzLl9jb21wb3Np
dGVUeXBlICE9PSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsKSB7XG4gICAgICBS
ZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcztcbiAgICAgIHRyeSB7XG4gICAgICAgIHJl
bmRlcmVkRWxlbWVudCA9IHRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25l
ck9yQ29udGV4dCgpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgUmVhY3RDdXJyZW50T3du
ZXIuY3VycmVudCA9IG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbmRlcmVk
RWxlbWVudCA9IHRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29u
dGV4dCgpO1xuICAgIH1cbiAgICAhKFxuICAgIC8vIFRPRE86IEFuIGBpc1ZhbGlkTm9kZWAgZnVu
Y3Rpb24gd291bGQgcHJvYmFibHkgYmUgbW9yZSBhcHByb3ByaWF0ZVxuICAgIHJlbmRlcmVkRWxl
bWVudCA9PT0gbnVsbCB8fCByZW5kZXJlZEVsZW1lbnQgPT09IGZhbHNlIHx8IFJlYWN0LmlzVmFs
aWRFbGVtZW50KHJlbmRlcmVkRWxlbWVudCkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzLnJlbmRlcigpOiBBIHZhbGlkIFJlYWN0
IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuIFlvdSBtYXkgaGF2ZSByZXR1cm5l
ZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3RoZXIgaW52YWxpZCBvYmplY3QuJywgdGhp
cy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFu
dCgnMTA5JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2
b2lkIDA7XG5cbiAgICByZXR1cm4gcmVuZGVyZWRFbGVtZW50O1xuICB9LFxuXG4gIC8qKlxuICAg
KiBMYXppbHkgYWxsb2NhdGVzIHRoZSByZWZzIG9iamVjdCBhbmQgc3RvcmVzIGBjb21wb25lbnRg
IGFzIGByZWZgLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIFJlZmVyZW5jZSBuYW1l
LlxuICAgKiBAcGFyYW0ge2NvbXBvbmVudH0gY29tcG9uZW50IENvbXBvbmVudCB0byBzdG9yZSBh
cyBgcmVmYC5cbiAgICogQGZpbmFsXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBhdHRhY2hSZWY6
IGZ1bmN0aW9uIChyZWYsIGNvbXBvbmVudCkge1xuICAgIHZhciBpbnN0ID0gdGhpcy5nZXRQdWJs
aWNJbnN0YW5jZSgpO1xuICAgICEoaW5zdCAhPSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdTdGF0ZWxlc3MgZnVuY3Rpb24g
Y29tcG9uZW50cyBjYW5ub3QgaGF2ZSByZWZzLicpIDogX3Byb2RJbnZhcmlhbnQoJzExMCcpIDog
dm9pZCAwO1xuICAgIHZhciBwdWJsaWNDb21wb25lbnRJbnN0YW5jZSA9IGNvbXBvbmVudC5nZXRQ
dWJsaWNJbnN0YW5jZSgpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudCAmJiBjb21wb25l
bnQuZ2V0TmFtZSA/IGNvbXBvbmVudC5nZXROYW1lKCkgOiAnYSBjb21wb25lbnQnO1xuICAgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHVibGljQ29t
cG9uZW50SW5zdGFuY2UgIT0gbnVsbCB8fCBjb21wb25lbnQuX2NvbXBvc2l0ZVR5cGUgIT09IENv
bXBvc2l0ZVR5cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWwsICdTdGF0ZWxlc3MgZnVuY3Rpb24gY29t
cG9uZW50cyBjYW5ub3QgYmUgZ2l2ZW4gcmVmcyAnICsgJyhTZWUgcmVmIFwiJXNcIiBpbiAlcyBj
cmVhdGVkIGJ5ICVzKS4gJyArICdBdHRlbXB0cyB0byBhY2Nlc3MgdGhpcyByZWYgd2lsbCBmYWls
LicsIHJlZiwgY29tcG9uZW50TmFtZSwgdGhpcy5nZXROYW1lKCkpIDogdm9pZCAwO1xuICAgIH1c
biAgICB2YXIgcmVmcyA9IGluc3QucmVmcyA9PT0gZW1wdHlPYmplY3QgPyBpbnN0LnJlZnMgPSB7
fSA6IGluc3QucmVmcztcbiAgICByZWZzW3JlZl0gPSBwdWJsaWNDb21wb25lbnRJbnN0YW5jZTtc
biAgfSxcblxuICAvKipcbiAgICogRGV0YWNoZXMgYSByZWZlcmVuY2UgbmFtZS5cbiAgICpcbiAg
ICogQHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1lIHRvIGRlcmVmZXJlbmNlLlxuICAgKiBAZmluYWxc
biAgICogQHByaXZhdGVcbiAgICovXG4gIGRldGFjaFJlZjogZnVuY3Rpb24gKHJlZikge1xuICAg
IHZhciByZWZzID0gdGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpLnJlZnM7XG4gICAgZGVsZXRlIHJl
ZnNbcmVmXTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGEgdGV4dCBkZXNjcmlwdGlvbiBvZiB0
aGUgY29tcG9uZW50IHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgaXRcbiAgICogaW4gZXJy
b3IgbWVzc2FnZXMuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIG5hbWUgb3IgbnVsbC5cbiAg
ICogQGludGVybmFsXG4gICAqL1xuICBnZXROYW1lOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHR5
cGUgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IHRo
aXMuX2luc3RhbmNlICYmIHRoaXMuX2luc3RhbmNlLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiB0
eXBlLmRpc3BsYXlOYW1lIHx8IGNvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yLmRpc3BsYXlOYW1l
IHx8IHR5cGUubmFtZSB8fCBjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5uYW1lIHx8IG51bGw7
XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcHVibGljbHkgYWNjZXNzaWJsZSByZXByZXNl
bnRhdGlvbiBvZiB0aGlzIGNvbXBvbmVudCAtIGkuZS4gd2hhdFxuICAgKiBpcyBleHBvc2VkIGJ5
IHJlZnMgYW5kIHJldHVybmVkIGJ5IHJlbmRlci4gQ2FuIGJlIG51bGwgZm9yIHN0YXRlbGVzc1xu
ICAgKiBjb21wb25lbnRzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gdGhl
IHB1YmxpYyBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0
UHVibGljSW5zdGFuY2U6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3Rh
bmNlO1xuICAgIGlmICh0aGlzLl9jb21wb3NpdGVUeXBlID09PSBDb21wb3NpdGVUeXBlcy5TdGF0
ZWxlc3NGdW5jdGlvbmFsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJu
IGluc3Q7XG4gIH0sXG5cbiAgLy8gU3R1YlxuICBfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDog
bnVsbFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudDtcblxu
XG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50LmpzXG4vLyBtb2R1bGUgaWQg
PSAxNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgbmV4dERlYnVnSUQgPSAxO1xuXG5mdW5j
dGlvbiBnZXROZXh0RGVidWdJRCgpIHtcbiAgcmV0dXJuIG5leHREZWJ1Z0lEKys7XG59XG5cbm1v
ZHVsZS5leHBvcnRzID0gZ2V0TmV4dERlYnVnSUQ7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4v
LyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QvbGliL2dldE5leHREZWJ1
Z0lELmpzXG4vLyBtb2R1bGUgaWQgPSAxNTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4g
KiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vLyBUaGUg
U3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQgdHlwZS4gSWYgdGhlcmUgaXMgbm8g
bmF0aXZlIFN5bWJvbFxuLy8gbm9yIHBvbHlmaWxsLCB0aGVuIGEgcGxhaW4gbnVtYmVyIGlzIHVz
ZWQgZm9yIHBlcmZvcm1hbmNlLlxuXG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gdHlwZW9mIFN5
bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2xbJ2ZvciddICYmIFN5bWJvbFsnZm9yJ10oJ3Jl
YWN0LmVsZW1lbnQnKSB8fCAweGVhYzc7XG5cbm1vZHVsZS5leHBvcnRzID0gUkVBQ1RfRUxFTUVO
VF9UWVBFO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4v
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RFbGVtZW50U3ltYm9sLmpzXG4vLyBtb2R1
bGUgaWQgPSAxNThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKiBnbG9iYWwgU3ltYm9sICovXG5c
bnZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5
bWJvbC5pdGVyYXRvcjtcbnZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsg
Ly8gQmVmb3JlIFN5bWJvbCBzcGVjLlxuXG4vKipcbiAqIFJldHVybnMgdGhlIGl0ZXJhdG9yIG1l
dGhvZCBmdW5jdGlvbiBjb250YWluZWQgb24gdGhlIGl0ZXJhYmxlIG9iamVjdC5cbiAqXG4gKiBC
ZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRlcmFibGUgYXMgY29udGV4
dDpcbiAqXG4gKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUp
O1xuICogICAgIGlmIChpdGVyYXRvckZuKSB7XG4gKiAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVy
YXRvckZuLmNhbGwobXlJdGVyYWJsZSk7XG4gKiAgICAgICAuLi5cbiAqICAgICB9XG4gKlxuICog
QHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlXG4gKiBAcmV0dXJuIHs/ZnVuY3Rpb259XG4g
Ki9cbmZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuICB2YXIgaXRlcmF0
b3JGbiA9IG1heWJlSXRlcmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxl
W0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF0p
O1xuICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4g
aXRlcmF0b3JGbjtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEl0ZXJhdG9yRm47XG5c
blxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9nZXRJdGVyYXRvckZuLmpzXG4vLyBtb2R1bGUgaWQgPSAxNTlcbi8v
IG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgS2V5RXNjYXBlVXRpbHMgPSByZXF1aXJlKCcuL0tleUVz
Y2FwZVV0aWxzJyk7XG52YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IHJlcXVpcmUoJy4vdHJhdmVy
c2VBbGxDaGlsZHJlbicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5n
Jyk7XG5cbnZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rO1xuXG5pZiAodHlwZW9mIHByb2Nlc3Mg
IT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WID09
PSAndGVzdCcpIHtcbiAgLy8gVGVtcG9yYXJ5IGhhY2suXG4gIC8vIElubGluZSByZXF1aXJlcyBk
b24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJv
b2svcmVhY3QvaXNzdWVzLzcyNDBcbiAgLy8gUmVtb3ZlIHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hl
biB3ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9yZTpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zh
Y2Vib29rL3JlYWN0L3B1bGwvNzE3OFxuICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gcmVxdWly
ZSgncmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2snKTtcbn1cblxuLyoqXG4gKiBAcGFy
YW0ge2Z1bmN0aW9ufSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBwYXNzZWQgdGhyb3VnaCB0cmF2
ZXJzYWwuXG4gKiBAcGFyYW0gez9SZWFjdENvbXBvbmVudH0gY2hpbGQgUmVhY3QgY2hpbGQgY29t
cG9uZW50LlxuICogQHBhcmFtIHshc3RyaW5nfSBuYW1lIFN0cmluZyBuYW1lIG9mIGtleSBwYXRo
IHRvIGNoaWxkLlxuICogQHBhcmFtIHtudW1iZXI9fSBzZWxmRGVidWdJRCBPcHRpb25hbCBkZWJ1
Z0lEIG9mIHRoZSBjdXJyZW50IGludGVybmFsIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBmbGF0
dGVuU2luZ2xlQ2hpbGRJbnRvQ29udGV4dCh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lLCBz
ZWxmRGVidWdJRCkge1xuICAvLyBXZSBmb3VuZCBhIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgaWYg
KHRyYXZlcnNlQ29udGV4dCAmJiB0eXBlb2YgdHJhdmVyc2VDb250ZXh0ID09PSAnb2JqZWN0Jykg
e1xuICAgIHZhciByZXN1bHQgPSB0cmF2ZXJzZUNvbnRleHQ7XG4gICAgdmFyIGtleVVuaXF1ZSA9
IHJlc3VsdFtuYW1lXSA9PT0gdW5kZWZpbmVkO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoIVJlYWN0Q29tcG9uZW50VHJlZUhvb2sp
IHtcbiAgICAgICAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9S
ZWFjdENvbXBvbmVudFRyZWVIb29rJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWtleVVuaXF1ZSkg
e1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhmYWxzZSwgJ2ZsYXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4g
d2l0aCB0aGUgc2FtZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsg
d2hlbiB0d28gY2hpbGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQg
d2lsbCBiZSB1c2VkLiVzJywgS2V5RXNjYXBlVXRpbHMudW5lc2NhcGUobmFtZSksIFJlYWN0Q29t
cG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6IHZvaWQg
MDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGtleVVuaXF1ZSAmJiBjaGlsZCAhPSBudWxsKSB7
XG4gICAgICByZXN1bHRbbmFtZV0gPSBjaGlsZDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBG
bGF0dGVucyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5j
aGlsZHJlbmAuIEFueSBudWxsXG4gKiBjaGlsZHJlbiB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0
aGUgcmVzdWx0aW5nIG9iamVjdC5cbiAqIEByZXR1cm4geyFvYmplY3R9IGZsYXR0ZW5lZCBjaGls
ZHJlbiBrZXllZCBieSBuYW1lLlxuICovXG5mdW5jdGlvbiBmbGF0dGVuQ2hpbGRyZW4oY2hpbGRy
ZW4sIHNlbGZEZWJ1Z0lEKSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0dXJu
IGNoaWxkcmVuO1xuICB9XG4gIHZhciByZXN1bHQgPSB7fTtcblxuICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hp
bGRyZW4sIGZ1bmN0aW9uICh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lKSB7XG4gICAgICBy
ZXR1cm4gZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250ZXh0LCBjaGls
ZCwgbmFtZSwgc2VsZkRlYnVnSUQpO1xuICAgIH0sIHJlc3VsdCk7XG4gIH0gZWxzZSB7XG4gICAg
dHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRl
eHQsIHJlc3VsdCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMg
PSBmbGF0dGVuQ2hpbGRyZW47XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZP
T1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9mbGF0dGVuQ2hpbGRyZW4uanNc
bi8vIG1vZHVsZSBpZCA9IDE2MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHly
aWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVp
cmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgnLi9Qb29s
ZWRDbGFzcycpO1xudmFyIFRyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi9UcmFuc2FjdGlvbicpO1xu
dmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1lbnRhdGlv
bicpO1xudmFyIFJlYWN0U2VydmVyVXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0U2VydmVy
VXBkYXRlUXVldWUnKTtcblxuLyoqXG4gKiBFeGVjdXRlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRo
ZSBgVHJhbnNhY3Rpb25gIGluc3RhbmNlLiBDb25zaWRlciB0aGVzZSBhc1xuICogYmVpbmcgbWVt
YmVyIG1ldGhvZHMsIGJ1dCB3aXRoIGFuIGltcGxpZWQgb3JkZXJpbmcgd2hpbGUgYmVpbmcgaXNv
bGF0ZWQgZnJvbVxuICogZWFjaCBvdGhlci5cbiAqL1xudmFyIFRSQU5TQUNUSU9OX1dSQVBQRVJT
ID0gW107XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
IFRSQU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goe1xuICAgIGluaXRpYWxpemU6IFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1c2gsXG4gICAgY2xvc2U6IFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVuZEZsdXNoXG4gIH0pO1xufVxuXG52YXIgbm9vcENhbGxi
YWNrUXVldWUgPSB7XG4gIGVucXVldWU6IGZ1bmN0aW9uICgpIHt9XG59O1xuXG4vKipcbiAqIEBj
bGFzcyBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uXG4gKiBAcGFyYW0ge2Jvb2xlYW59
IHJlbmRlclRvU3RhdGljTWFya3VwXG4gKi9cbmZ1bmN0aW9uIFJlYWN0U2VydmVyUmVuZGVyaW5n
VHJhbnNhY3Rpb24ocmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcbiAgdGhpcy5yZWluaXRpYWxpemVU
cmFuc2FjdGlvbigpO1xuICB0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwID0gcmVuZGVyVG9TdGF0
aWNNYXJrdXA7XG4gIHRoaXMudXNlQ3JlYXRlRWxlbWVudCA9IGZhbHNlO1xuICB0aGlzLnVwZGF0
ZVF1ZXVlID0gbmV3IFJlYWN0U2VydmVyVXBkYXRlUXVldWUodGhpcyk7XG59XG5cbnZhciBNaXhp
biA9IHtcbiAgLyoqXG4gICAqIEBzZWUgVHJhbnNhY3Rpb25cbiAgICogQGFic3RyYWN0XG4gICAq
IEBmaW5hbFxuICAgKiBAcmV0dXJuIHthcnJheX0gRW1wdHkgbGlzdCBvZiBvcGVyYXRpb24gd3Jh
cCBwcm9jZWR1cmVzLlxuICAgKi9cbiAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24g
KCkge1xuICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVSUztcbiAgfSxcblxuICAvKipcbiAg
ICogQHJldHVybiB7b2JqZWN0fSBUaGUgcXVldWUgdG8gY29sbGVjdCBgb25ET01SZWFkeWAgY2Fs
bGJhY2tzIHdpdGguXG4gICAqL1xuICBnZXRSZWFjdE1vdW50UmVhZHk6IGZ1bmN0aW9uICgpIHtc
biAgICByZXR1cm4gbm9vcENhbGxiYWNrUXVldWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEByZXR1
cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgUmVhY3QgYXN5bmMgZXZlbnRzLlxuICAg
Ki9cbiAgZ2V0VXBkYXRlUXVldWU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRh
dGVRdWV1ZTtcbiAgfSxcblxuICAvKipcbiAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgdGhp
cywgYW5kIHdpbGwgaW52b2tlIHRoaXMgYmVmb3JlIGFsbG93aW5nIHRoaXNcbiAgICogaW5zdGFu
Y2UgdG8gYmUgcmV1c2VkLlxuICAgKi9cbiAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge30sXG5c
biAgY2hlY2twb2ludDogZnVuY3Rpb24gKCkge30sXG5cbiAgcm9sbGJhY2s6IGZ1bmN0aW9uICgp
IHt9XG59O1xuXG5fYXNzaWduKFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24ucHJvdG90
eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4pO1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVh
Y3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbik7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RT
ZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdF
QlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0U2VydmVy
UmVuZGVyaW5nVHJhbnNhY3Rpb24uanNcbi8vIG1vZHVsZSBpZCA9IDE2MVxuLy8gbW9kdWxlIGNo
dW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0
cmljdCc7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3Ip
IHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5
cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZh
ciBSZWFjdFVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZVF1ZXVlJyk7XG5cbnZh
ciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiB3YXJu
Tm9vcChwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IHB1YmxpY0lu
c3RhbmNlLmNvbnN0cnVjdG9yO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRp
bmcgY29tcG9uZW50LiAnICsgJ1RoaXMgdXN1YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb3V0
c2lkZSBjb21wb25lbnRXaWxsTW91bnQoKSBvbiB0aGUgc2VydmVyLiAnICsgJ1RoaXMgaXMgYSBu
by1vcC4gUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxl
ck5hbWUsIGNhbGxlck5hbWUsIGNvbnN0cnVjdG9yICYmIChjb25zdHJ1Y3Rvci5kaXNwbGF5TmFt
ZSB8fCBjb25zdHJ1Y3Rvci5uYW1lKSB8fCAnUmVhY3RDbGFzcycpIDogdm9pZCAwO1xuICB9XG59
XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgdXBkYXRlIHF1ZXVlIHVzZWQgZm9yIHNlcnZlciByZW5k
ZXJpbmcuXG4gKiBJdCBkZWxlZ2F0ZXMgdG8gUmVhY3RVcGRhdGVRdWV1ZSB3aGlsZSBzZXJ2ZXIg
cmVuZGVyaW5nIGlzIGluIHByb2dyZXNzIGFuZFxuICogc3dpdGNoZXMgdG8gUmVhY3ROb29wVXBk
YXRlUXVldWUgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGhhcyBjb21wbGV0ZWQuXG4gKiBAY2xhc3Mg
UmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZVxuICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHJhbnNhY3Rp
b25cbiAqL1xuXG52YXIgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAg
ZnVuY3Rpb24gUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSh0cmFuc2FjdGlvbikge1xuICAgIF9jbGFz
c0NhbGxDaGVjayh0aGlzLCBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlKTtcblxuICAgIHRoaXMudHJh
bnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhl
ciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuXG4gICAqIEBwYXJh
bSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHdlIHdhbnQgdG8gdGVz
dC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndp
c2UuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQGZpbmFsXG4gICAqL1xuXG5cbiAgUmVhY3RTZXJ2
ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuaXNNb3VudGVkID0gZnVuY3Rpb24gaXNNb3VudGVkKHB1
YmxpY0luc3RhbmNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBF
bnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUgcGVu
ZGluZyB1cGRhdGVzXG4gICAqIGhhdmUgcHJvY2Vzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge1Jl
YWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0byB1c2UgYXMgYHRoaXNgIGNv
bnRleHQuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3Rh
dGUgaXMgdXBkYXRlZC5cbiAgICogQGludGVybmFsXG4gICAqL1xuXG5cbiAgUmVhY3RTZXJ2ZXJV
cGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZUNhbGxiYWNrID0gZnVuY3Rpb24gZW5xdWV1ZUNh
bGxiYWNrKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSkge1xuICAgIGlmICh0
aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7XG4gICAgICBSZWFjdFVwZGF0ZVF1
ZXVlLmVucXVldWVDYWxsYmFjayhwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUp
O1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91
bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuICAgKiBjZXJ0YWludHkg
dGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogWW91
IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNw
ZWN0IG9mIHRoZVxuICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0
YXRlYCB3YXMgbm90IGNhbGxlZC5cbiAgICpcbiAgICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNo
b3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuICAgKiBgY29tcG9uZW50
V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuICAgKlxuICAgKiBAcGFyYW0g
e1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJl
bmRlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuXG5cbiAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1
ZS5wcm90b3R5cGUuZW5xdWV1ZUZvcmNlVXBkYXRlID0gZnVuY3Rpb24gZW5xdWV1ZUZvcmNlVXBk
YXRlKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5z
YWN0aW9uKCkpIHtcbiAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUZvcmNlVXBkYXRlKHB1
YmxpY0luc3RhbmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2Fybk5vb3AocHVibGljSW5zdGFu
Y2UsICdmb3JjZVVwZGF0ZScpO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogUmVwbGFjZXMg
YWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0YXRl
IHN0YXRlLlxuICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUu
XG4gICAqXG4gICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxs
IGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAg
YWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG4gICAq
XG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRo
YXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbn0gY29tcGxl
dGVTdGF0ZSBOZXh0IHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG5cblxuICBSZWFjdFNl
cnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlUmVwbGFjZVN0YXRlID0gZnVuY3Rpb24g
ZW5xdWV1ZVJlcGxhY2VTdGF0ZShwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSkge1xuICAg
IGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7XG4gICAgICBSZWFjdFVw
ZGF0ZVF1ZXVlLmVucXVldWVSZXBsYWNlU3RhdGUocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3Rh
dGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3JlcGxh
Y2VTdGF0ZScpO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0
aGUgc3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzXG4gICAq
IGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBh
dmFpbGFibGUgdG8gZGVlcFxuICAgKiBwcm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9E
TzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2UgaXRcbiAgICogZHVyaW5nIHRoZSBt
ZXJnZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUg
aW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0
aW9ufSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0
YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG5cblxuICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVl
LnByb3RvdHlwZS5lbnF1ZXVlU2V0U3RhdGUgPSBmdW5jdGlvbiBlbnF1ZXVlU2V0U3RhdGUocHVi
bGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlz
SW5UcmFuc2FjdGlvbigpKSB7XG4gICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVTZXRTdGF0
ZShwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2Fy
bk5vb3AocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpO1xuICAgIH1cbiAgfTtcblxuICByZXR1
cm4gUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZTtcbn0oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFj
dFNlcnZlclVwZGF0ZVF1ZXVlO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBG
T09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RTZXJ2ZXJVcGRhdGVR
dWV1ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxu
ICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfYXNzaWdu
ID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgRE9NTGF6eVRyZWUgPSByZXF1aXJl
KCcuL0RPTUxhenlUcmVlJyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgn
Li9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcblxudmFyIFJlYWN0RE9NRW1wdHlDb21wb25lbnQg
PSBmdW5jdGlvbiAoaW5zdGFudGlhdGUpIHtcbiAgLy8gUmVhY3RDb21wb3NpdGVDb21wb25lbnQg
dXNlcyB0aGlzOlxuICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG51bGw7XG4gIC8vIFJlYWN0RE9N
Q29tcG9uZW50VHJlZSB1c2VzIHRoZXNlOlxuICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7XG4gIHRo
aXMuX2hvc3RQYXJlbnQgPSBudWxsO1xuICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IG51bGw7
XG4gIHRoaXMuX2RvbUlEID0gMDtcbn07XG5fYXNzaWduKFJlYWN0RE9NRW1wdHlDb21wb25lbnQu
cHJvdG90eXBlLCB7XG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhv
c3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7XG4gICAgdmFyIGRvbUlEID0g
aG9zdENvbnRhaW5lckluZm8uX2lkQ291bnRlcisrO1xuICAgIHRoaXMuX2RvbUlEID0gZG9tSUQ7
XG4gICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG4gICAgdGhpcy5faG9zdENvbnRh
aW5lckluZm8gPSBob3N0Q29udGFpbmVySW5mbztcblxuICAgIHZhciBub2RlVmFsdWUgPSAnIHJl
YWN0LWVtcHR5OiAnICsgdGhpcy5fZG9tSUQgKyAnICc7XG4gICAgaWYgKHRyYW5zYWN0aW9uLnVz
ZUNyZWF0ZUVsZW1lbnQpIHtcbiAgICAgIHZhciBvd25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5l
ckluZm8uX293bmVyRG9jdW1lbnQ7XG4gICAgICB2YXIgbm9kZSA9IG93bmVyRG9jdW1lbnQuY3Jl
YXRlQ29tbWVudChub2RlVmFsdWUpO1xuICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNh
Y2hlTm9kZSh0aGlzLCBub2RlKTtcbiAgICAgIHJldHVybiBET01MYXp5VHJlZShub2RlKTtcbiAg
ICB9IGVsc2Uge1xuICAgICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7
XG4gICAgICAgIC8vIE5vcm1hbGx5IHdlJ2QgaW5zZXJ0IGEgY29tbWVudCBub2RlLCBidXQgc2lu
Y2UgdGhpcyBpcyBhIHNpdHVhdGlvblxuICAgICAgICAvLyB3aGVyZSBSZWFjdCB3b24ndCB0YWtl
IG92ZXIgKHN0YXRpYyBwYWdlcyksIHdlIGNhbiBzaW1wbHkgcmV0dXJuXG4gICAgICAgIC8vIG5v
dGhpbmcuXG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICAgIHJldHVybiAnPCEtLScg
KyBub2RlVmFsdWUgKyAnLS0+JztcbiAgICB9XG4gIH0sXG4gIHJlY2VpdmVDb21wb25lbnQ6IGZ1
bmN0aW9uICgpIHt9LFxuICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBS
ZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKTtcbiAgfSxcbiAg
dW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuICAgIFJlYWN0RE9NQ29tcG9uZW50VHJl
ZS51bmNhY2hlTm9kZSh0aGlzKTtcbiAgfVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RE
T01FbXB0eUNvbXBvbmVudDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9P
VEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0RE9NRW1wdHlDb21wb25l
bnQuanNcbi8vIG1vZHVsZSBpZCA9IDE2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAq
IENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZh
cmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgaW52YXJpYW50
ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBs
b3dlc3QgY29tbW9uIGFuY2VzdG9yIG9mIEEgYW5kIEIsIG9yIG51bGwgaWYgdGhleSBhcmUgaW5c
biAqIGRpZmZlcmVudCB0cmVlcy5cbiAqL1xuZnVuY3Rpb24gZ2V0TG93ZXN0Q29tbW9uQW5jZXN0
b3IoaW5zdEEsIGluc3RCKSB7XG4gICEoJ19ob3N0Tm9kZScgaW4gaW5zdEEpID8gcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2dldE5vZGVG
cm9tSW5zdGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzMnKSA6
IHZvaWQgMDtcbiAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QikgPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0Tm9kZUZyb21JbnN0YW5j
ZTogSW52YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczMycpIDogdm9pZCAwO1xu
XG4gIHZhciBkZXB0aEEgPSAwO1xuICBmb3IgKHZhciB0ZW1wQSA9IGluc3RBOyB0ZW1wQTsgdGVt
cEEgPSB0ZW1wQS5faG9zdFBhcmVudCkge1xuICAgIGRlcHRoQSsrO1xuICB9XG4gIHZhciBkZXB0
aEIgPSAwO1xuICBmb3IgKHZhciB0ZW1wQiA9IGluc3RCOyB0ZW1wQjsgdGVtcEIgPSB0ZW1wQi5f
aG9zdFBhcmVudCkge1xuICAgIGRlcHRoQisrO1xuICB9XG5cbiAgLy8gSWYgQSBpcyBkZWVwZXIs
IGNyYXdsIHVwLlxuICB3aGlsZSAoZGVwdGhBIC0gZGVwdGhCID4gMCkge1xuICAgIGluc3RBID0g
aW5zdEEuX2hvc3RQYXJlbnQ7XG4gICAgZGVwdGhBLS07XG4gIH1cblxuICAvLyBJZiBCIGlzIGRl
ZXBlciwgY3Jhd2wgdXAuXG4gIHdoaWxlIChkZXB0aEIgLSBkZXB0aEEgPiAwKSB7XG4gICAgaW5z
dEIgPSBpbnN0Qi5faG9zdFBhcmVudDtcbiAgICBkZXB0aEItLTtcbiAgfVxuXG4gIC8vIFdhbGsg
aW4gbG9ja3N0ZXAgdW50aWwgd2UgZmluZCBhIG1hdGNoLlxuICB2YXIgZGVwdGggPSBkZXB0aEE7
XG4gIHdoaWxlIChkZXB0aC0tKSB7XG4gICAgaWYgKGluc3RBID09PSBpbnN0Qikge1xuICAgICAg
cmV0dXJuIGluc3RBO1xuICAgIH1cbiAgICBpbnN0QSA9IGluc3RBLl9ob3N0UGFyZW50O1xuICAg
IGluc3RCID0gaW5zdEIuX2hvc3RQYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8q
KlxuICogUmV0dXJuIGlmIEEgaXMgYW4gYW5jZXN0b3Igb2YgQi5cbiAqL1xuZnVuY3Rpb24gaXNB
bmNlc3RvcihpbnN0QSwgaW5zdEIpIHtcbiAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QSkgPyBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnaXNB
bmNlc3RvcjogSW52YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczNScpIDogdm9p
ZCAwO1xuICAhKCdfaG9zdE5vZGUnIGluIGluc3RCKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdpc0FuY2VzdG9yOiBJbnZhbGlkIGFy
Z3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzM1JykgOiB2b2lkIDA7XG5cbiAgd2hpbGUgKGlu
c3RCKSB7XG4gICAgaWYgKGluc3RCID09PSBpbnN0QSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4g
ICAgfVxuICAgIGluc3RCID0gaW5zdEIuX2hvc3RQYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIGZhbHNl
O1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgcGFyZW50IGluc3RhbmNlIG9mIHRoZSBwYXNzZWQt
aW4gaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGdldFBhcmVudEluc3RhbmNlKGluc3QpIHtcbiAg
ISgnX2hvc3ROb2RlJyBpbiBpbnN0KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXRQYXJlbnRJbnN0YW5jZTogSW52YWxpZCBhcmd1
bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczNicpIDogdm9pZCAwO1xuXG4gIHJldHVybiBpbnN0
Ll9ob3N0UGFyZW50O1xufVxuXG4vKipcbiAqIFNpbXVsYXRlcyB0aGUgdHJhdmVyc2FsIG9mIGEg
dHdvLXBoYXNlLCBjYXB0dXJlL2J1YmJsZSBldmVudCBkaXNwYXRjaC5cbiAqL1xuZnVuY3Rpb24g
dHJhdmVyc2VUd29QaGFzZShpbnN0LCBmbiwgYXJnKSB7XG4gIHZhciBwYXRoID0gW107XG4gIHdo
aWxlIChpbnN0KSB7XG4gICAgcGF0aC5wdXNoKGluc3QpO1xuICAgIGluc3QgPSBpbnN0Ll9ob3N0
UGFyZW50O1xuICB9XG4gIHZhciBpO1xuICBmb3IgKGkgPSBwYXRoLmxlbmd0aDsgaS0tID4gMDsp
IHtcbiAgICBmbihwYXRoW2ldLCAnY2FwdHVyZWQnLCBhcmcpO1xuICB9XG4gIGZvciAoaSA9IDA7
IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgZm4ocGF0aFtpXSwgJ2J1YmJsZWQnLCBhcmcp
O1xuICB9XG59XG5cbi8qKlxuICogVHJhdmVyc2VzIHRoZSBJRCBoaWVyYXJjaHkgYW5kIGludm9r
ZXMgdGhlIHN1cHBsaWVkIGBjYmAgb24gYW55IElEcyB0aGF0XG4gKiBzaG91bGQgd291bGQgcmVj
ZWl2ZSBhIGBtb3VzZUVudGVyYCBvciBgbW91c2VMZWF2ZWAgZXZlbnQuXG4gKlxuICogRG9lcyBu
b3QgaW52b2tlIHRoZSBjYWxsYmFjayBvbiB0aGUgbmVhcmVzdCBjb21tb24gYW5jZXN0b3IgYmVj
YXVzZSBub3RoaW5nXG4gKiBcImVudGVyZWRcIiBvciBcImxlZnRcIiB0aGF0IGVsZW1lbnQuXG4g
Ki9cbmZ1bmN0aW9uIHRyYXZlcnNlRW50ZXJMZWF2ZShmcm9tLCB0bywgZm4sIGFyZ0Zyb20sIGFy
Z1RvKSB7XG4gIHZhciBjb21tb24gPSBmcm9tICYmIHRvID8gZ2V0TG93ZXN0Q29tbW9uQW5jZXN0
b3IoZnJvbSwgdG8pIDogbnVsbDtcbiAgdmFyIHBhdGhGcm9tID0gW107XG4gIHdoaWxlIChmcm9t
ICYmIGZyb20gIT09IGNvbW1vbikge1xuICAgIHBhdGhGcm9tLnB1c2goZnJvbSk7XG4gICAgZnJv
bSA9IGZyb20uX2hvc3RQYXJlbnQ7XG4gIH1cbiAgdmFyIHBhdGhUbyA9IFtdO1xuICB3aGlsZSAo
dG8gJiYgdG8gIT09IGNvbW1vbikge1xuICAgIHBhdGhUby5wdXNoKHRvKTtcbiAgICB0byA9IHRv
Ll9ob3N0UGFyZW50O1xuICB9XG4gIHZhciBpO1xuICBmb3IgKGkgPSAwOyBpIDwgcGF0aEZyb20u
bGVuZ3RoOyBpKyspIHtcbiAgICBmbihwYXRoRnJvbVtpXSwgJ2J1YmJsZWQnLCBhcmdGcm9tKTtc
biAgfVxuICBmb3IgKGkgPSBwYXRoVG8ubGVuZ3RoOyBpLS0gPiAwOykge1xuICAgIGZuKHBhdGhU
b1tpXSwgJ2NhcHR1cmVkJywgYXJnVG8pO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xu
ICBpc0FuY2VzdG9yOiBpc0FuY2VzdG9yLFxuICBnZXRMb3dlc3RDb21tb25BbmNlc3RvcjogZ2V0
TG93ZXN0Q29tbW9uQW5jZXN0b3IsXG4gIGdldFBhcmVudEluc3RhbmNlOiBnZXRQYXJlbnRJbnN0
YW5jZSxcbiAgdHJhdmVyc2VUd29QaGFzZTogdHJhdmVyc2VUd29QaGFzZSxcbiAgdHJhdmVyc2VF
bnRlckxlYXZlOiB0cmF2ZXJzZUVudGVyTGVhdmVcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8v
XG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFj
dERPTVRyZWVUcmF2ZXJzYWwuanNcbi8vIG1vZHVsZSBpZCA9IDE2NFxuLy8gbW9kdWxlIGNodW5r
cyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpLFxu
ICAgIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBET01DaGlsZHJl
bk9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0RPTUNoaWxkcmVuT3BlcmF0aW9ucycpO1xudmFyIERP
TUxhenlUcmVlID0gcmVxdWlyZSgnLi9ET01MYXp5VHJlZScpO1xudmFyIFJlYWN0RE9NQ29tcG9u
ZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG5cbnZhciBlc2Nh
cGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSByZXF1aXJlKCcuL2VzY2FwZVRleHRDb250ZW50Rm9y
QnJvd3NlcicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcp
O1xudmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IHJlcXVpcmUoJy4vdmFsaWRhdGVET01OZXN0aW5n
Jyk7XG5cbi8qKlxuICogVGV4dCBub2RlcyB2aW9sYXRlIGEgY291cGxlIGFzc3VtcHRpb25zIHRo
YXQgUmVhY3QgbWFrZXMgYWJvdXQgY29tcG9uZW50czpcbiAqXG4gKiAgLSBXaGVuIG1vdW50aW5n
IHRleHQgaW50byB0aGUgRE9NLCBhZGphY2VudCB0ZXh0IG5vZGVzIGFyZSBtZXJnZWQuXG4gKiAg
LSBUZXh0IG5vZGVzIGNhbm5vdCBiZSBhc3NpZ25lZCBhIFJlYWN0IHJvb3QgSUQuXG4gKlxuICog
VGhpcyBjb21wb25lbnQgaXMgdXNlZCB0byB3cmFwIHN0cmluZ3MgYmV0d2VlbiBjb21tZW50IG5v
ZGVzIHNvIHRoYXQgdGhleVxuICogY2FuIHVuZGVyZ28gdGhlIHNhbWUgcmVjb25jaWxpYXRpb24g
dGhhdCBpcyBhcHBsaWVkIHRvIGVsZW1lbnRzLlxuICpcbiAqIFRPRE86IEludmVzdGlnYXRlIHJl
cHJlc2VudGluZyBSZWFjdCBjb21wb25lbnRzIGluIHRoZSBET00gd2l0aCB0ZXh0IG5vZGVzLlxu
ICpcbiAqIEBjbGFzcyBSZWFjdERPTVRleHRDb21wb25lbnRcbiAqIEBleHRlbmRzIFJlYWN0Q29t
cG9uZW50XG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIFJlYWN0RE9NVGV4dENvbXBvbmVudCA9IGZ1
bmN0aW9uICh0ZXh0KSB7XG4gIC8vIFRPRE86IFRoaXMgaXMgcmVhbGx5IGEgUmVhY3RUZXh0IChS
ZWFjdE5vZGUpLCBub3QgYSBSZWFjdEVsZW1lbnRcbiAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSB0
ZXh0O1xuICB0aGlzLl9zdHJpbmdUZXh0ID0gJycgKyB0ZXh0O1xuICAvLyBSZWFjdERPTUNvbXBv
bmVudFRyZWUgdXNlcyB0aGVzZTpcbiAgdGhpcy5faG9zdE5vZGUgPSBudWxsO1xuICB0aGlzLl9o
b3N0UGFyZW50ID0gbnVsbDtcblxuICAvLyBQcm9wZXJ0aWVzXG4gIHRoaXMuX2RvbUlEID0gMDtc
biAgdGhpcy5fbW91bnRJbmRleCA9IDA7XG4gIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbnVsbDtc
biAgdGhpcy5fY29tbWVudE5vZGVzID0gbnVsbDtcbn07XG5cbl9hc3NpZ24oUmVhY3RET01UZXh0
Q29tcG9uZW50LnByb3RvdHlwZSwge1xuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgbWFya3VwIGZv
ciB0aGlzIHRleHQgbm9kZS4gVGhpcyBub2RlIGlzIG5vdCBpbnRlbmRlZCB0byBoYXZlXG4gICAq
IGFueSBmZWF0dXJlcyBiZXNpZGVzIGNvbnRhaW5pbmcgdGV4dCBjb250ZW50LlxuICAgKlxuICAg
KiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdU
cmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgZm9y
IHRoaXMgdGV4dCBub2RlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG1vdW50Q29tcG9uZW50
OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBj
b250ZXh0KSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICAgIHZhciBwYXJlbnRJbmZvO1xuICAgICAgaWYgKGhvc3RQYXJlbnQgIT0gbnVsbCkg
e1xuICAgICAgICBwYXJlbnRJbmZvID0gaG9zdFBhcmVudC5fYW5jZXN0b3JJbmZvO1xuICAgICAg
fSBlbHNlIGlmIChob3N0Q29udGFpbmVySW5mbyAhPSBudWxsKSB7XG4gICAgICAgIHBhcmVudElu
Zm8gPSBob3N0Q29udGFpbmVySW5mby5fYW5jZXN0b3JJbmZvO1xuICAgICAgfVxuICAgICAgaWYg
KHBhcmVudEluZm8pIHtcbiAgICAgICAgLy8gcGFyZW50SW5mbyBzaG91bGQgYWx3YXlzIGJlIHBy
ZXNlbnQgZXhjZXB0IGZvciB0aGUgdG9wLWxldmVsXG4gICAgICAgIC8vIGNvbXBvbmVudCB3aGVu
IHNlcnZlciByZW5kZXJpbmdcbiAgICAgICAgdmFsaWRhdGVET01OZXN0aW5nKG51bGwsIHRoaXMu
X3N0cmluZ1RleHQsIHRoaXMsIHBhcmVudEluZm8pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZh
ciBkb21JRCA9IGhvc3RDb250YWluZXJJbmZvLl9pZENvdW50ZXIrKztcbiAgICB2YXIgb3Blbmlu
Z1ZhbHVlID0gJyByZWFjdC10ZXh0OiAnICsgZG9tSUQgKyAnICc7XG4gICAgdmFyIGNsb3NpbmdW
YWx1ZSA9ICcgL3JlYWN0LXRleHQgJztcbiAgICB0aGlzLl9kb21JRCA9IGRvbUlEO1xuICAgIHRo
aXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50O1xuICAgIGlmICh0cmFuc2FjdGlvbi51c2VDcmVh
dGVFbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXJEb2N1bWVudCA9IGhvc3RDb250YWluZXJJbmZv
Ll9vd25lckRvY3VtZW50O1xuICAgICAgdmFyIG9wZW5pbmdDb21tZW50ID0gb3duZXJEb2N1bWVu
dC5jcmVhdGVDb21tZW50KG9wZW5pbmdWYWx1ZSk7XG4gICAgICB2YXIgY2xvc2luZ0NvbW1lbnQg
PSBvd25lckRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoY2xvc2luZ1ZhbHVlKTtcbiAgICAgIHZhciBs
YXp5VHJlZSA9IERPTUxhenlUcmVlKG93bmVyRG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCgpKTtcbiAgICAgIERPTUxhenlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxhenlUcmVl
KG9wZW5pbmdDb21tZW50KSk7XG4gICAgICBpZiAodGhpcy5fc3RyaW5nVGV4dCkge1xuICAgICAg
ICBET01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBET01MYXp5VHJlZShvd25lckRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuX3N0cmluZ1RleHQpKSk7XG4gICAgICB9XG4gICAgICBE
T01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBET01MYXp5VHJlZShjbG9zaW5nQ29tbWVu
dCkpO1xuICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZSh0aGlzLCBvcGVu
aW5nQ29tbWVudCk7XG4gICAgICB0aGlzLl9jbG9zaW5nQ29tbWVudCA9IGNsb3NpbmdDb21tZW50
O1xuICAgICAgcmV0dXJuIGxhenlUcmVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZXNjYXBl
ZFRleHQgPSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIodGhpcy5fc3RyaW5nVGV4dCk7XG5c
biAgICAgIGlmICh0cmFuc2FjdGlvbi5yZW5kZXJUb1N0YXRpY01hcmt1cCkge1xuICAgICAgICAv
LyBOb3JtYWxseSB3ZSdkIHdyYXAgdGhpcyBiZXR3ZWVuIGNvbW1lbnQgbm9kZXMgZm9yIHRoZSBy
ZWFzb25zIHN0YXRlZFxuICAgICAgICAvLyBhYm92ZSwgYnV0IHNpbmNlIHRoaXMgaXMgYSBzaXR1
YXRpb24gd2hlcmUgUmVhY3Qgd29uJ3QgdGFrZSBvdmVyXG4gICAgICAgIC8vIChzdGF0aWMgcGFn
ZXMpLCB3ZSBjYW4gc2ltcGx5IHJldHVybiB0aGUgdGV4dCBhcyBpdCBpcy5cbiAgICAgICAgcmV0
dXJuIGVzY2FwZWRUZXh0O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gJzwhLS0nICsgb3Blbmlu
Z1ZhbHVlICsgJy0tPicgKyBlc2NhcGVkVGV4dCArICc8IS0tJyArIGNsb3NpbmdWYWx1ZSArICct
LT4nO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGlzIGNvbXBvbmVudCBi
eSB1cGRhdGluZyB0aGUgdGV4dCBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0VGV4
dH0gbmV4dFRleHQgVGhlIG5leHQgdGV4dCBjb250ZW50XG4gICAqIEBwYXJhbSB7UmVhY3RSZWNv
bmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBy
ZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAobmV4dFRleHQsIHRyYW5zYWN0aW9uKSB7XG4gICAg
aWYgKG5leHRUZXh0ICE9PSB0aGlzLl9jdXJyZW50RWxlbWVudCkge1xuICAgICAgdGhpcy5fY3Vy
cmVudEVsZW1lbnQgPSBuZXh0VGV4dDtcbiAgICAgIHZhciBuZXh0U3RyaW5nVGV4dCA9ICcnICsg
bmV4dFRleHQ7XG4gICAgICBpZiAobmV4dFN0cmluZ1RleHQgIT09IHRoaXMuX3N0cmluZ1RleHQp
IHtcbiAgICAgICAgLy8gVE9ETzogU2F2ZSB0aGlzIGFzIHBlbmRpbmcgcHJvcHMgYW5kIHVzZSBw
ZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnlcbiAgICAgICAgLy8gYW5kL29yIHVwZGF0ZUNvbXBvbmVu
dCB0byBkbyB0aGUgYWN0dWFsIHVwZGF0ZSBmb3IgY29uc2lzdGVuY3kgd2l0aFxuICAgICAgICAv
LyBvdGhlciBjb21wb25lbnQgdHlwZXM/XG4gICAgICAgIHRoaXMuX3N0cmluZ1RleHQgPSBuZXh0
U3RyaW5nVGV4dDtcbiAgICAgICAgdmFyIGNvbW1lbnROb2RlcyA9IHRoaXMuZ2V0SG9zdE5vZGUo
KTtcbiAgICAgICAgRE9NQ2hpbGRyZW5PcGVyYXRpb25zLnJlcGxhY2VEZWxpbWl0ZWRUZXh0KGNv
bW1lbnROb2Rlc1swXSwgY29tbWVudE5vZGVzWzFdLCBuZXh0U3RyaW5nVGV4dCk7XG4gICAgICB9
XG4gICAgfVxuICB9LFxuXG4gIGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGhv
c3ROb2RlID0gdGhpcy5fY29tbWVudE5vZGVzO1xuICAgIGlmIChob3N0Tm9kZSkge1xuICAgICAg
cmV0dXJuIGhvc3ROb2RlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX2Nsb3NpbmdDb21tZW50KSB7
XG4gICAgICB2YXIgb3BlbmluZ0NvbW1lbnQgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9k
ZUZyb21JbnN0YW5jZSh0aGlzKTtcbiAgICAgIHZhciBub2RlID0gb3BlbmluZ0NvbW1lbnQubmV4
dFNpYmxpbmc7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAhKG5vZGUgIT0gbnVsbCkg
PyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnTWlzc2luZyBjbG9zaW5nIGNvbW1lbnQgZm9yIHRleHQgY29tcG9uZW50ICVzJywgdGhpcy5f
ZG9tSUQpIDogX3Byb2RJbnZhcmlhbnQoJzY3JywgdGhpcy5fZG9tSUQpIDogdm9pZCAwO1xuICAg
ICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gOCAmJiBub2RlLm5vZGVWYWx1ZSA9PT0gJyAvcmVh
Y3QtdGV4dCAnKSB7XG4gICAgICAgICAgdGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBub2RlO1xuICAg
ICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5n
O1xuICAgICAgfVxuICAgIH1cbiAgICBob3N0Tm9kZSA9IFt0aGlzLl9ob3N0Tm9kZSwgdGhpcy5f
Y2xvc2luZ0NvbW1lbnRdO1xuICAgIHRoaXMuX2NvbW1lbnROb2RlcyA9IGhvc3ROb2RlO1xuICAg
IHJldHVybiBob3N0Tm9kZTtcbiAgfSxcblxuICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAo
KSB7XG4gICAgdGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBudWxsO1xuICAgIHRoaXMuX2NvbW1lbnRO
b2RlcyA9IG51bGw7XG4gICAgUmVhY3RET01Db21wb25lbnRUcmVlLnVuY2FjaGVOb2RlKHRoaXMp
O1xuICB9XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRDb21wb25lbnQ7XG5c
blxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTVRleHRDb21wb25lbnQuanNcbi8vIG1vZHVsZSBpZCA9
IDE2NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4g
Ki9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3Np
Z24nKTtcblxudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG52
YXIgVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1RyYW5zYWN0aW9uJyk7XG5cbnZhciBlbXB0eUZ1
bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xuXG52YXIgUkVTRVRf
QkFUQ0hFRF9VUERBVEVTID0ge1xuICBpbml0aWFsaXplOiBlbXB0eUZ1bmN0aW9uLFxuICBjbG9z
ZTogZnVuY3Rpb24gKCkge1xuICAgIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRj
aGluZ1VwZGF0ZXMgPSBmYWxzZTtcbiAgfVxufTtcblxudmFyIEZMVVNIX0JBVENIRURfVVBEQVRF
UyA9IHtcbiAgaW5pdGlhbGl6ZTogZW1wdHlGdW5jdGlvbixcbiAgY2xvc2U6IFJlYWN0VXBkYXRl
cy5mbHVzaEJhdGNoZWRVcGRhdGVzLmJpbmQoUmVhY3RVcGRhdGVzKVxufTtcblxudmFyIFRSQU5T
QUNUSU9OX1dSQVBQRVJTID0gW0ZMVVNIX0JBVENIRURfVVBEQVRFUywgUkVTRVRfQkFUQ0hFRF9V
UERBVEVTXTtcblxuZnVuY3Rpb24gUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0
aW9uKCkge1xuICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG59XG5cbl9hc3NpZ24o
UmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNh
Y3Rpb24sIHtcbiAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAgIHJl
dHVybiBUUkFOU0FDVElPTl9XUkFQUEVSUztcbiAgfVxufSk7XG5cbnZhciB0cmFuc2FjdGlvbiA9
IG5ldyBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5VHJhbnNhY3Rpb24oKTtcblxudmFyIFJl
YWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kgPSB7XG4gIGlzQmF0Y2hpbmdVcGRhdGVzOiBmYWxz
ZSxcblxuICAvKipcbiAgICogQ2FsbCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gaW4gYSBjb250ZXh0
IHdpdGhpbiB3aGljaCBjYWxscyB0byBgc2V0U3RhdGVgXG4gICAqIGFuZCBmcmllbmRzIGFyZSBi
YXRjaGVkIHN1Y2ggdGhhdCBjb21wb25lbnRzIGFyZW4ndCB1cGRhdGVkIHVubmVjZXNzYXJpbHku
XG4gICAqL1xuICBiYXRjaGVkVXBkYXRlczogZnVuY3Rpb24gKGNhbGxiYWNrLCBhLCBiLCBjLCBk
LCBlKSB7XG4gICAgdmFyIGFscmVhZHlCYXRjaGluZ1VwZGF0ZXMgPSBSZWFjdERlZmF1bHRCYXRj
aGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzO1xuXG4gICAgUmVhY3REZWZhdWx0QmF0Y2hp
bmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcyA9IHRydWU7XG5cbiAgICAvLyBUaGUgY29kZSBp
cyB3cml0dGVuIHRoaXMgd2F5IHRvIGF2b2lkIGV4dHJhIGFsbG9jYXRpb25zXG4gICAgaWYgKGFs
cmVhZHlCYXRjaGluZ1VwZGF0ZXMpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhhLCBiLCBjLCBk
LCBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnBlcmZvcm0oY2Fs
bGJhY2ssIG51bGwsIGEsIGIsIGMsIGQsIGUpO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4
cG9ydHMgPSBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5O1xuXG5cbi8vLy8vLy8vLy8vLy8v
Ly8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIv
UmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5qc1xuLy8gbW9kdWxlIGlkID0gMTY2XG4vLyBt
b2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52
YXIgRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoJ2ZianMvbGliL0V2ZW50TGlzdGVuZXInKTtcbnZh
ciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmly
b25tZW50Jyk7XG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG52
YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRy
ZWUnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xuXG52
YXIgZ2V0RXZlbnRUYXJnZXQgPSByZXF1aXJlKCcuL2dldEV2ZW50VGFyZ2V0Jyk7XG52YXIgZ2V0
VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9nZXRVbmJvdW5kZWRT
Y3JvbGxQb3NpdGlvbicpO1xuXG4vKipcbiAqIEZpbmQgdGhlIGRlZXBlc3QgUmVhY3QgY29tcG9u
ZW50IGNvbXBsZXRlbHkgY29udGFpbmluZyB0aGUgcm9vdCBvZiB0aGVcbiAqIHBhc3NlZC1pbiBp
bnN0YW5jZSAoZm9yIHVzZSB3aGVuIGVudGlyZSBSZWFjdCB0cmVlcyBhcmUgbmVzdGVkIHdpdGhp
biBlYWNoXG4gKiBvdGhlcikuIElmIFJlYWN0IHRyZWVzIGFyZSBub3QgbmVzdGVkLCByZXR1cm5z
IG51bGwuXG4gKi9cbmZ1bmN0aW9uIGZpbmRQYXJlbnQoaW5zdCkge1xuICAvLyBUT0RPOiBJdCBt
YXkgYmUgYSBnb29kIGlkZWEgdG8gY2FjaGUgdGhpcyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IERP
TVxuICAvLyB0cmF2ZXJzYWwsIGJ1dCBjYWNoaW5nIGlzIGRpZmZpY3VsdCB0byBkbyBjb3JyZWN0
bHkgd2l0aG91dCB1c2luZyBhXG4gIC8vIG11dGF0aW9uIG9ic2VydmVyIHRvIGxpc3RlbiBmb3Ig
YWxsIERPTSBjaGFuZ2VzLlxuICB3aGlsZSAoaW5zdC5faG9zdFBhcmVudCkge1xuICAgIGluc3Qg
PSBpbnN0Ll9ob3N0UGFyZW50O1xuICB9XG4gIHZhciByb290Tm9kZSA9IFJlYWN0RE9NQ29tcG9u
ZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuICB2YXIgY29udGFpbmVyID0gcm9v
dE5vZGUucGFyZW50Tm9kZTtcbiAgcmV0dXJuIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRDbG9z
ZXN0SW5zdGFuY2VGcm9tTm9kZShjb250YWluZXIpO1xufVxuXG4vLyBVc2VkIHRvIHN0b3JlIGFu
Y2VzdG9yIGhpZXJhcmNoeSBpbiB0b3AgbGV2ZWwgY2FsbGJhY2tcbmZ1bmN0aW9uIFRvcExldmVs
Q2FsbGJhY2tCb29rS2VlcGluZyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG4gIHRoaXMu
dG9wTGV2ZWxUeXBlID0gdG9wTGV2ZWxUeXBlO1xuICB0aGlzLm5hdGl2ZUV2ZW50ID0gbmF0aXZl
RXZlbnQ7XG4gIHRoaXMuYW5jZXN0b3JzID0gW107XG59XG5fYXNzaWduKFRvcExldmVsQ2FsbGJh
Y2tCb29rS2VlcGluZy5wcm90b3R5cGUsIHtcbiAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xu
ICAgIHRoaXMudG9wTGV2ZWxUeXBlID0gbnVsbDtcbiAgICB0aGlzLm5hdGl2ZUV2ZW50ID0gbnVs
bDtcbiAgICB0aGlzLmFuY2VzdG9ycy5sZW5ndGggPSAwO1xuICB9XG59KTtcblBvb2xlZENsYXNz
LmFkZFBvb2xpbmdUbyhUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcsIFBvb2xlZENsYXNzLnR3
b0FyZ3VtZW50UG9vbGVyKTtcblxuZnVuY3Rpb24gaGFuZGxlVG9wTGV2ZWxJbXBsKGJvb2tLZWVw
aW5nKSB7XG4gIHZhciBuYXRpdmVFdmVudFRhcmdldCA9IGdldEV2ZW50VGFyZ2V0KGJvb2tLZWVw
aW5nLm5hdGl2ZUV2ZW50KTtcbiAgdmFyIHRhcmdldEluc3QgPSBSZWFjdERPTUNvbXBvbmVudFRy
ZWUuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobmF0aXZlRXZlbnRUYXJnZXQpO1xuXG4gIC8v
IExvb3AgdGhyb3VnaCB0aGUgaGllcmFyY2h5LCBpbiBjYXNlIHRoZXJlJ3MgYW55IG5lc3RlZCBj
b21wb25lbnRzLlxuICAvLyBJdCdzIGltcG9ydGFudCB0aGF0IHdlIGJ1aWxkIHRoZSBhcnJheSBv
ZiBhbmNlc3RvcnMgYmVmb3JlIGNhbGxpbmcgYW55XG4gIC8vIGV2ZW50IGhhbmRsZXJzLCBiZWNh
dXNlIGV2ZW50IGhhbmRsZXJzIGNhbiBtb2RpZnkgdGhlIERPTSwgbGVhZGluZyB0b1xuICAvLyBp
bmNvbnNpc3RlbmNpZXMgd2l0aCBSZWFjdE1vdW50J3Mgbm9kZSBjYWNoZS4gU2VlICMxMTA1Llxu
ICB2YXIgYW5jZXN0b3IgPSB0YXJnZXRJbnN0O1xuICBkbyB7XG4gICAgYm9va0tlZXBpbmcuYW5j
ZXN0b3JzLnB1c2goYW5jZXN0b3IpO1xuICAgIGFuY2VzdG9yID0gYW5jZXN0b3IgJiYgZmluZFBh
cmVudChhbmNlc3Rvcik7XG4gIH0gd2hpbGUgKGFuY2VzdG9yKTtcblxuICBmb3IgKHZhciBpID0g
MDsgaSA8IGJvb2tLZWVwaW5nLmFuY2VzdG9ycy5sZW5ndGg7IGkrKykge1xuICAgIHRhcmdldElu
c3QgPSBib29rS2VlcGluZy5hbmNlc3RvcnNbaV07XG4gICAgUmVhY3RFdmVudExpc3RlbmVyLl9o
YW5kbGVUb3BMZXZlbChib29rS2VlcGluZy50b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIGJvb2tL
ZWVwaW5nLm5hdGl2ZUV2ZW50LCBnZXRFdmVudFRhcmdldChib29rS2VlcGluZy5uYXRpdmVFdmVu
dCkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNjcm9sbFZhbHVlTW9uaXRvcihjYikge1xuICB2YXIg
c2Nyb2xsUG9zaXRpb24gPSBnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbih3aW5kb3cpO1xuICBj
YihzY3JvbGxQb3NpdGlvbik7XG59XG5cbnZhciBSZWFjdEV2ZW50TGlzdGVuZXIgPSB7XG4gIF9l
bmFibGVkOiB0cnVlLFxuICBfaGFuZGxlVG9wTGV2ZWw6IG51bGwsXG5cbiAgV0lORE9XX0hBTkRM
RTogRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gd2luZG93IDogbnVsbCxcblxuICBz
ZXRIYW5kbGVUb3BMZXZlbDogZnVuY3Rpb24gKGhhbmRsZVRvcExldmVsKSB7XG4gICAgUmVhY3RF
dmVudExpc3RlbmVyLl9oYW5kbGVUb3BMZXZlbCA9IGhhbmRsZVRvcExldmVsO1xuICB9LFxuXG4g
IHNldEVuYWJsZWQ6IGZ1bmN0aW9uIChlbmFibGVkKSB7XG4gICAgUmVhY3RFdmVudExpc3RlbmVy
Ll9lbmFibGVkID0gISFlbmFibGVkO1xuICB9LFxuXG4gIGlzRW5hYmxlZDogZnVuY3Rpb24gKCkg
e1xuICAgIHJldHVybiBSZWFjdEV2ZW50TGlzdGVuZXIuX2VuYWJsZWQ7XG4gIH0sXG5cbiAgLyoq
XG4gICAqIFRyYXBzIHRvcC1sZXZlbCBldmVudHMgYnkgdXNpbmcgZXZlbnQgYnViYmxpbmcuXG4g
ICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50
Q29uc3RhbnRzYC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGhhbmRsZXJCYXNlTmFtZSBFdmVudCBu
YW1lIChlLmcuIFwiY2xpY2tcIikuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50IEVsZW1l
bnQgb24gd2hpY2ggdG8gYXR0YWNoIGxpc3RlbmVyLlxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBB
biBvYmplY3Qgd2l0aCBhIHJlbW92ZSBmdW5jdGlvbiB3aGljaCB3aWxsIGZvcmNlZnVsbHlcbiAg
ICogICAgICAgICAgICAgICAgICByZW1vdmUgdGhlIGxpc3RlbmVyLlxuICAgKiBAaW50ZXJuYWxc
biAgICovXG4gIHRyYXBCdWJibGVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRs
ZXJCYXNlTmFtZSwgZWxlbWVudCkge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJu
IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBFdmVudExpc3RlbmVyLmxpc3RlbihlbGVtZW50LCBo
YW5kbGVyQmFzZU5hbWUsIFJlYWN0RXZlbnRMaXN0ZW5lci5kaXNwYXRjaEV2ZW50LmJpbmQobnVs
bCwgdG9wTGV2ZWxUeXBlKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRyYXBzIGEgdG9wLWxldmVs
IGV2ZW50IGJ5IHVzaW5nIGV2ZW50IGNhcHR1cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJp
bmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICAgKiBAcGFy
YW0ge3N0cmluZ30gaGFuZGxlckJhc2VOYW1lIEV2ZW50IG5hbWUgKGUuZy4gXCJjbGlja1wiKS5c
biAgICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnQgRWxlbWVudCBvbiB3aGljaCB0byBhdHRhY2gg
bGlzdGVuZXIuXG4gICAqIEByZXR1cm4gez9vYmplY3R9IEFuIG9iamVjdCB3aXRoIGEgcmVtb3Zl
IGZ1bmN0aW9uIHdoaWNoIHdpbGwgZm9yY2VmdWxseVxuICAgKiAgICAgICAgICAgICAgICAgIHJl
bW92ZSB0aGUgbGlzdGVuZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdHJhcENhcHR1cmVk
RXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgZWxlbWVudCkg
e1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJl
dHVybiBFdmVudExpc3RlbmVyLmNhcHR1cmUoZWxlbWVudCwgaGFuZGxlckJhc2VOYW1lLCBSZWFj
dEV2ZW50TGlzdGVuZXIuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsIHRvcExldmVsVHlwZSkpO1xu
ICB9LFxuXG4gIG1vbml0b3JTY3JvbGxWYWx1ZTogZnVuY3Rpb24gKHJlZnJlc2gpIHtcbiAgICB2
YXIgY2FsbGJhY2sgPSBzY3JvbGxWYWx1ZU1vbml0b3IuYmluZChudWxsLCByZWZyZXNoKTtcbiAg
ICBFdmVudExpc3RlbmVyLmxpc3Rlbih3aW5kb3csICdzY3JvbGwnLCBjYWxsYmFjayk7XG4gIH0s
XG5cbiAgZGlzcGF0Y2hFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQp
IHtcbiAgICBpZiAoIVJlYWN0RXZlbnRMaXN0ZW5lci5fZW5hYmxlZCkge1xuICAgICAgcmV0dXJu
O1xuICAgIH1cblxuICAgIHZhciBib29rS2VlcGluZyA9IFRvcExldmVsQ2FsbGJhY2tCb29rS2Vl
cGluZy5nZXRQb29sZWQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCk7XG4gICAgdHJ5IHtcbiAg
ICAgIC8vIEV2ZW50IHF1ZXVlIGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgc2FtZSBjeWNsZSBhbGxv
d3NcbiAgICAgIC8vIGBwcmV2ZW50RGVmYXVsdGAuXG4gICAgICBSZWFjdFVwZGF0ZXMuYmF0Y2hl
ZFVwZGF0ZXMoaGFuZGxlVG9wTGV2ZWxJbXBsLCBib29rS2VlcGluZyk7XG4gICAgfSBmaW5hbGx5
IHtcbiAgICAgIFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZy5yZWxlYXNlKGJvb2tLZWVwaW5n
KTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFdmVudExpc3RlbmVy
O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9t
b2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RFdmVudExpc3RlbmVyLmpzXG4vLyBtb2R1bGUgaWQg
PSAxNjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEdldHMg
dGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgc3VwcGxpZWQgZWxlbWVudCBvciB3aW5kb3cuXG4g
KlxuICogVGhlIHJldHVybiB2YWx1ZXMgYXJlIHVuYm91bmRlZCwgdW5saWtlIGBnZXRTY3JvbGxQ
b3NpdGlvbmAuIFRoaXMgbWVhbnMgdGhleVxuICogbWF5IGJlIG5lZ2F0aXZlIG9yIGV4Y2VlZCB0
aGUgZWxlbWVudCBib3VuZGFyaWVzICh3aGljaCBpcyBwb3NzaWJsZSB1c2luZ1xuICogaW5lcnRp
YWwgc2Nyb2xsaW5nKS5cbiAqXG4gKiBAcGFyYW0ge0RPTVdpbmRvd3xET01FbGVtZW50fSBzY3Jv
bGxhYmxlXG4gKiBAcmV0dXJuIHtvYmplY3R9IE1hcCB3aXRoIGB4YCBhbmQgYHlgIGtleXMuXG4g
Ki9cblxuZnVuY3Rpb24gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24oc2Nyb2xsYWJsZSkge1xu
ICBpZiAoc2Nyb2xsYWJsZS5XaW5kb3cgJiYgc2Nyb2xsYWJsZSBpbnN0YW5jZW9mIHNjcm9sbGFi
bGUuV2luZG93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHNjcm9sbGFibGUucGFnZVhPZmZz
ZXQgfHwgc2Nyb2xsYWJsZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAg
ICAgIHk6IHNjcm9sbGFibGUucGFnZVlPZmZzZXQgfHwgc2Nyb2xsYWJsZS5kb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuc2Nyb2xsVG9wXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHNj
cm9sbGFibGUuc2Nyb2xsTGVmdCxcbiAgICB5OiBzY3JvbGxhYmxlLnNjcm9sbFRvcFxuICB9O1xu
fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uO1xuXG5cbi8v
Ly8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Zi
anMvbGliL2dldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjhc
bi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5c
bid1c2Ugc3RyaWN0JztcblxudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0
eScpO1xudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpbkh1YicpO1xu
dmFyIEV2ZW50UGx1Z2luVXRpbHMgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luVXRpbHMnKTtcbnZh
ciBSZWFjdENvbXBvbmVudEVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudEVu
dmlyb25tZW50Jyk7XG52YXIgUmVhY3RFbXB0eUNvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RF
bXB0eUNvbXBvbmVudCcpO1xudmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IHJlcXVpcmUo
Jy4vUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyJyk7XG52YXIgUmVhY3RIb3N0Q29tcG9uZW50ID0g
cmVxdWlyZSgnLi9SZWFjdEhvc3RDb21wb25lbnQnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1
aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xuXG52YXIgUmVhY3RJbmplY3Rpb24gPSB7XG4gIENvbXBv
bmVudDogUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5pbmplY3Rpb24sXG4gIERPTVByb3BlcnR5
OiBET01Qcm9wZXJ0eS5pbmplY3Rpb24sXG4gIEVtcHR5Q29tcG9uZW50OiBSZWFjdEVtcHR5Q29t
cG9uZW50LmluamVjdGlvbixcbiAgRXZlbnRQbHVnaW5IdWI6IEV2ZW50UGx1Z2luSHViLmluamVj
dGlvbixcbiAgRXZlbnRQbHVnaW5VdGlsczogRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rpb24sXG4g
IEV2ZW50RW1pdHRlcjogUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmluamVjdGlvbixcbiAgSG9z
dENvbXBvbmVudDogUmVhY3RIb3N0Q29tcG9uZW50LmluamVjdGlvbixcbiAgVXBkYXRlczogUmVh
Y3RVcGRhdGVzLmluamVjdGlvblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluamVjdGlv
bjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVf
bW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0SW5qZWN0aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAx
Njlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWdu
Jyk7XG5cbnZhciBDYWxsYmFja1F1ZXVlID0gcmVxdWlyZSgnLi9DYWxsYmFja1F1ZXVlJyk7XG52
YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG52YXIgUmVhY3RCcm93
c2VyRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnLi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXInKTtc
bnZhciBSZWFjdElucHV0U2VsZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdElucHV0U2VsZWN0aW9u
Jyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVu
dGF0aW9uJyk7XG52YXIgVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1RyYW5zYWN0aW9uJyk7XG52
YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVRdWV1ZScpO1xuXG4v
KipcbiAqIEVuc3VyZXMgdGhhdCwgd2hlbiBwb3NzaWJsZSwgdGhlIHNlbGVjdGlvbiByYW5nZSAo
Y3VycmVudGx5IHNlbGVjdGVkIHRleHRcbiAqIGlucHV0KSBpcyBub3QgZGlzdHVyYmVkIGJ5IHBl
cmZvcm1pbmcgdGhlIHRyYW5zYWN0aW9uLlxuICovXG52YXIgU0VMRUNUSU9OX1JFU1RPUkFUSU9O
ID0ge1xuICAvKipcbiAgICogQHJldHVybiB7U2VsZWN0aW9ufSBTZWxlY3Rpb24gaW5mb3JtYXRp
b24uXG4gICAqL1xuICBpbml0aWFsaXplOiBSZWFjdElucHV0U2VsZWN0aW9uLmdldFNlbGVjdGlv
bkluZm9ybWF0aW9uLFxuICAvKipcbiAgICogQHBhcmFtIHtTZWxlY3Rpb259IHNlbCBTZWxlY3Rp
b24gaW5mb3JtYXRpb24gcmV0dXJuZWQgZnJvbSBgaW5pdGlhbGl6ZWAuXG4gICAqL1xuICBjbG9z
ZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5yZXN0b3JlU2VsZWN0aW9uXG59O1xuXG4vKipcbiAqIFN1
cHByZXNzZXMgZXZlbnRzIChibHVyL2ZvY3VzKSB0aGF0IGNvdWxkIGJlIGluYWR2ZXJ0ZW50bHkg
ZGlzcGF0Y2hlZCBkdWUgdG9cbiAqIGhpZ2ggbGV2ZWwgRE9NIG1hbmlwdWxhdGlvbnMgKGxpa2Ug
dGVtcG9yYXJpbHkgcmVtb3ZpbmcgYSB0ZXh0IGlucHV0IGZyb20gdGhlXG4gKiBET00pLlxuICov
XG52YXIgRVZFTlRfU1VQUFJFU1NJT04gPSB7XG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFu
fSBUaGUgZW5hYmxlZCBzdGF0dXMgb2YgYFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcmAgYmVmb3Jl
XG4gICAqIHRoZSByZWNvbmNpbGlhdGlvbi5cbiAgICovXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9u
ICgpIHtcbiAgICB2YXIgY3VycmVudGx5RW5hYmxlZCA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ci5pc0VuYWJsZWQoKTtcbiAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc2V0RW5hYmxlZChm
YWxzZSk7XG4gICAgcmV0dXJuIGN1cnJlbnRseUVuYWJsZWQ7XG4gIH0sXG5cbiAgLyoqXG4gICAq
IEBwYXJhbSB7Ym9vbGVhbn0gcHJldmlvdXNseUVuYWJsZWQgRW5hYmxlZCBzdGF0dXMgb2ZcbiAg
ICogICBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBiZWZvcmUgdGhlIHJlY29uY2lsaWF0aW9u
IG9jY3VycmVkLiBgY2xvc2VgXG4gICAqICAgcmVzdG9yZXMgdGhlIHByZXZpb3VzIHZhbHVlLlxu
ICAgKi9cbiAgY2xvc2U6IGZ1bmN0aW9uIChwcmV2aW91c2x5RW5hYmxlZCkge1xuICAgIFJlYWN0
QnJvd3NlckV2ZW50RW1pdHRlci5zZXRFbmFibGVkKHByZXZpb3VzbHlFbmFibGVkKTtcbiAgfVxu
fTtcblxuLyoqXG4gKiBQcm92aWRlcyBhIHF1ZXVlIGZvciBjb2xsZWN0aW5nIGBjb21wb25lbnRE
aWRNb3VudGAgYW5kXG4gKiBgY29tcG9uZW50RGlkVXBkYXRlYCBjYWxsYmFja3MgZHVyaW5nIHRo
ZSB0cmFuc2FjdGlvbi5cbiAqL1xudmFyIE9OX0RPTV9SRUFEWV9RVUVVRUlORyA9IHtcbiAgLyoq
XG4gICAqIEluaXRpYWxpemVzIHRoZSBpbnRlcm5hbCBgb25ET01SZWFkeWAgcXVldWUuXG4gICAq
L1xuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5yZWFjdE1vdW50UmVhZHku
cmVzZXQoKTtcbiAgfSxcblxuICAvKipcbiAgICogQWZ0ZXIgRE9NIGlzIGZsdXNoZWQsIGludm9r
ZSBhbGwgcmVnaXN0ZXJlZCBgb25ET01SZWFkeWAgY2FsbGJhY2tzLlxuICAgKi9cbiAgY2xvc2U6
IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJlYWN0TW91bnRSZWFkeS5ub3RpZnlBbGwoKTtcbiAg
fVxufTtcblxuLyoqXG4gKiBFeGVjdXRlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBgVHJhbnNh
Y3Rpb25gIGluc3RhbmNlLiBDb25zaWRlciB0aGVzZSBhc1xuICogYmVpbmcgbWVtYmVyIG1ldGhv
ZHMsIGJ1dCB3aXRoIGFuIGltcGxpZWQgb3JkZXJpbmcgd2hpbGUgYmVpbmcgaXNvbGF0ZWQgZnJv
bVxuICogZWFjaCBvdGhlci5cbiAqL1xudmFyIFRSQU5TQUNUSU9OX1dSQVBQRVJTID0gW1NFTEVD
VElPTl9SRVNUT1JBVElPTiwgRVZFTlRfU1VQUFJFU1NJT04sIE9OX0RPTV9SRUFEWV9RVUVVRUlO
R107XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFRS
QU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goe1xuICAgIGluaXRpYWxpemU6IFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1c2gsXG4gICAgY2xvc2U6IFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vbkVuZEZsdXNoXG4gIH0pO1xufVxuXG4vKipcbiAqIEN1cnJlbnRs
eTpcbiAqIC0gVGhlIG9yZGVyIHRoYXQgdGhlc2UgYXJlIGxpc3RlZCBpbiB0aGUgdHJhbnNhY3Rp
b24gaXMgY3JpdGljYWw6XG4gKiAtIFN1cHByZXNzZXMgZXZlbnRzLlxuICogLSBSZXN0b3JlcyBz
ZWxlY3Rpb24gcmFuZ2UuXG4gKlxuICogRnV0dXJlOlxuICogLSBSZXN0b3JlIGRvY3VtZW50L292
ZXJmbG93IHNjcm9sbCBwb3NpdGlvbnMgdGhhdCB3ZXJlIHVuaW50ZW50aW9uYWxseVxuICogICBt
b2RpZmllZCB2aWEgRE9NIGluc2VydGlvbnMgYWJvdmUgdGhlIHRvcCB2aWV3cG9ydCBib3VuZGFy
eS5cbiAqIC0gSW1wbGVtZW50L2ludGVncmF0ZSB3aXRoIGN1c3RvbWl6ZWQgY29uc3RyYWludCBi
YXNlZCBsYXlvdXQgc3lzdGVtIGFuZCBrZWVwXG4gKiAgIHRyYWNrIG9mIHdoaWNoIGRpbWVuc2lv
bnMgbXVzdCBiZSByZW1lYXN1cmVkLlxuICpcbiAqIEBjbGFzcyBSZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9uXG4gKi9cbmZ1bmN0aW9uIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24odXNlQ3JlYXRl
RWxlbWVudCkge1xuICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG4gIC8vIE9ubHkg
c2VydmVyLXNpZGUgcmVuZGVyaW5nIHJlYWxseSBuZWVkcyB0aGlzIG9wdGlvbiAoc2VlXG4gIC8v
IGBSZWFjdFNlcnZlclJlbmRlcmluZ2ApLCBidXQgc2VydmVyLXNpZGUgdXNlc1xuICAvLyBgUmVh
Y3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbmAgaW5zdGVhZC4gVGhpcyBvcHRpb24gaXMgaGVy
ZSBzbyB0aGF0IGl0J3NcbiAgLy8gYWNjZXNzaWJsZSBhbmQgZGVmYXVsdHMgdG8gZmFsc2Ugd2hl
biBgUmVhY3RET01Db21wb25lbnRgIGFuZFxuICAvLyBgUmVhY3RET01UZXh0Q29tcG9uZW50YCBj
aGVja3MgaXQgaW4gYG1vdW50Q29tcG9uZW50YC5gXG4gIHRoaXMucmVuZGVyVG9TdGF0aWNNYXJr
dXAgPSBmYWxzZTtcbiAgdGhpcy5yZWFjdE1vdW50UmVhZHkgPSBDYWxsYmFja1F1ZXVlLmdldFBv
b2xlZChudWxsKTtcbiAgdGhpcy51c2VDcmVhdGVFbGVtZW50ID0gdXNlQ3JlYXRlRWxlbWVudDtc
bn1cblxudmFyIE1peGluID0ge1xuICAvKipcbiAgICogQHNlZSBUcmFuc2FjdGlvblxuICAgKiBA
YWJzdHJhY3RcbiAgICogQGZpbmFsXG4gICAqIEByZXR1cm4ge2FycmF5PG9iamVjdD59IExpc3Qg
b2Ygb3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJlcy5cbiAgICogICBUT0RPOiBjb252ZXJ0IHRvIGFy
cmF5PFRyYW5zYWN0aW9uV3JhcHBlcj5cbiAgICovXG4gIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6
IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG4gIH0sXG5c
biAgLyoqXG4gICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgYG9uRE9N
UmVhZHlgIGNhbGxiYWNrcyB3aXRoLlxuICAgKi9cbiAgZ2V0UmVhY3RNb3VudFJlYWR5OiBmdW5j
dGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5O1xuICB9LFxuXG4gIC8q
KlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IFJlYWN0IGFzeW5j
IGV2ZW50cy5cbiAgICovXG4gIGdldFVwZGF0ZVF1ZXVlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0
dXJuIFJlYWN0VXBkYXRlUXVldWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhdmUgY3VycmVudCB0
cmFuc2FjdGlvbiBzdGF0ZSAtLSBpZiB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhpcyBtZXRob2Qg
aXNcbiAgICogcGFzc2VkIHRvIGByb2xsYmFja2AsIHRoZSB0cmFuc2FjdGlvbiB3aWxsIGJlIHJl
c2V0IHRvIHRoYXQgc3RhdGUuXG4gICAqL1xuICBjaGVja3BvaW50OiBmdW5jdGlvbiAoKSB7XG4g
ICAgLy8gcmVhY3RNb3VudFJlYWR5IGlzIHRoZSBvdXIgb25seSBzdGF0ZWZ1bCB3cmFwcGVyXG4g
ICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5LmNoZWNrcG9pbnQoKTtcbiAgfSxcblxuICBy
b2xsYmFjazogZnVuY3Rpb24gKGNoZWNrcG9pbnQpIHtcbiAgICB0aGlzLnJlYWN0TW91bnRSZWFk
eS5yb2xsYmFjayhjaGVja3BvaW50KTtcbiAgfSxcblxuICAvKipcbiAgICogYFBvb2xlZENsYXNz
YCBsb29rcyBmb3IgdGhpcywgYW5kIHdpbGwgaW52b2tlIHRoaXMgYmVmb3JlIGFsbG93aW5nIHRo
aXNcbiAgICogaW5zdGFuY2UgdG8gYmUgcmV1c2VkLlxuICAgKi9cbiAgZGVzdHJ1Y3RvcjogZnVu
Y3Rpb24gKCkge1xuICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFk
eSk7XG4gICAgdGhpcy5yZWFjdE1vdW50UmVhZHkgPSBudWxsO1xuICB9XG59O1xuXG5fYXNzaWdu
KFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4p
O1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7
XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjtcblxuXG4vLy8v
Ly8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFj
dC1kb20vbGliL1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uanNcbi8vIG1vZHVsZSBpZCA9IDE3
MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdm
YmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgZ2V0Tm9kZUZvckNoYXJhY3Rl
ck9mZnNldCA9IHJlcXVpcmUoJy4vZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldCcpO1xudmFyIGdl
dFRleHRDb250ZW50QWNjZXNzb3IgPSByZXF1aXJlKCcuL2dldFRleHRDb250ZW50QWNjZXNzb3In
KTtcblxuLyoqXG4gKiBXaGlsZSBgaXNDb2xsYXBzZWRgIGlzIGF2YWlsYWJsZSBvbiB0aGUgU2Vs
ZWN0aW9uIG9iamVjdCBhbmQgYGNvbGxhcHNlZGBcbiAqIGlzIGF2YWlsYWJsZSBvbiB0aGUgUmFu
Z2Ugb2JqZWN0LCBJRTExIHNvbWV0aW1lcyBnZXRzIHRoZW0gd3JvbmcuXG4gKiBJZiB0aGUgYW5j
aG9yL2ZvY3VzIG5vZGVzIGFuZCBvZmZzZXRzIGFyZSB0aGUgc2FtZSwgdGhlIHJhbmdlIGlzIGNv
bGxhcHNlZC5cbiAqL1xuZnVuY3Rpb24gaXNDb2xsYXBzZWQoYW5jaG9yTm9kZSwgYW5jaG9yT2Zm
c2V0LCBmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KSB7XG4gIHJldHVybiBhbmNob3JOb2RlID09PSBm
b2N1c05vZGUgJiYgYW5jaG9yT2Zmc2V0ID09PSBmb2N1c09mZnNldDtcbn1cblxuLyoqXG4gKiBH
ZXQgdGhlIGFwcHJvcHJpYXRlIGFuY2hvciBhbmQgZm9jdXMgbm9kZS9vZmZzZXQgcGFpcnMgZm9y
IElFLlxuICpcbiAqIFRoZSBjYXRjaCBoZXJlIGlzIHRoYXQgSUUncyBzZWxlY3Rpb24gQVBJIGRv
ZXNuJ3QgcHJvdmlkZSBpbmZvcm1hdGlvblxuICogYWJvdXQgd2hldGhlciB0aGUgc2VsZWN0aW9u
IGlzIGZvcndhcmQgb3IgYmFja3dhcmQsIHNvIHdlIGhhdmUgdG9cbiAqIGJlaGF2ZSBhcyB0aG91
Z2ggaXQncyBhbHdheXMgZm9yd2FyZC5cbiAqXG4gKiBJRSB0ZXh0IGRpZmZlcnMgZnJvbSBtb2Rl
cm4gc2VsZWN0aW9uIGluIHRoYXQgaXQgYmVoYXZlcyBhcyB0aG91Z2hcbiAqIGJsb2NrIGVsZW1l
bnRzIGVuZCB3aXRoIGEgbmV3IGxpbmUuIFRoaXMgbWVhbnMgY2hhcmFjdGVyIG9mZnNldHMgd2ls
bFxuICogZGlmZmVyIGJldHdlZW4gdGhlIHR3byBBUElzLlxuICpcbiAqIEBwYXJhbSB7RE9NRWxl
bWVudH0gbm9kZVxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRJRU9mZnNl
dHMobm9kZSkge1xuICB2YXIgc2VsZWN0aW9uID0gZG9jdW1lbnQuc2VsZWN0aW9uO1xuICB2YXIg
c2VsZWN0ZWRSYW5nZSA9IHNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO1xuICB2YXIgc2VsZWN0ZWRM
ZW5ndGggPSBzZWxlY3RlZFJhbmdlLnRleHQubGVuZ3RoO1xuXG4gIC8vIER1cGxpY2F0ZSBzZWxl
Y3Rpb24gc28gd2UgY2FuIG1vdmUgcmFuZ2Ugd2l0aG91dCBicmVha2luZyB1c2VyIHNlbGVjdGlv
bi5cbiAgdmFyIGZyb21TdGFydCA9IHNlbGVjdGVkUmFuZ2UuZHVwbGljYXRlKCk7XG4gIGZyb21T
dGFydC5tb3ZlVG9FbGVtZW50VGV4dChub2RlKTtcbiAgZnJvbVN0YXJ0LnNldEVuZFBvaW50KCdF
bmRUb1N0YXJ0Jywgc2VsZWN0ZWRSYW5nZSk7XG5cbiAgdmFyIHN0YXJ0T2Zmc2V0ID0gZnJvbVN0
YXJ0LnRleHQubGVuZ3RoO1xuICB2YXIgZW5kT2Zmc2V0ID0gc3RhcnRPZmZzZXQgKyBzZWxlY3Rl
ZExlbmd0aDtcblxuICByZXR1cm4ge1xuICAgIHN0YXJ0OiBzdGFydE9mZnNldCxcbiAgICBlbmQ6
IGVuZE9mZnNldFxuICB9O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxu
ICogQHJldHVybiB7P29iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0TW9kZXJuT2Zmc2V0cyhub2Rl
KSB7XG4gIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uICYmIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKTtcblxuICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9
PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIGFuY2hvck5vZGUgPSBzZWxl
Y3Rpb24uYW5jaG9yTm9kZTtcbiAgdmFyIGFuY2hvck9mZnNldCA9IHNlbGVjdGlvbi5hbmNob3JP
ZmZzZXQ7XG4gIHZhciBmb2N1c05vZGUgPSBzZWxlY3Rpb24uZm9jdXNOb2RlO1xuICB2YXIgZm9j
dXNPZmZzZXQgPSBzZWxlY3Rpb24uZm9jdXNPZmZzZXQ7XG5cbiAgdmFyIGN1cnJlbnRSYW5nZSA9
IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xuXG4gIC8vIEluIEZpcmVmb3gsIHJhbmdlLnN0YXJ0
Q29udGFpbmVyIGFuZCByYW5nZS5lbmRDb250YWluZXIgY2FuIGJlIFwiYW5vbnltb3VzXG4gIC8v
IGRpdnNcIiwgZS5nLiB0aGUgdXAvZG93biBidXR0b25zIG9uIGFuIDxpbnB1dCB0eXBlPVwibnVt
YmVyXCI+LiBBbm9ueW1vdXNcbiAgLy8gZGl2cyBkbyBub3Qgc2VlbSB0byBleHBvc2UgcHJvcGVy
dGllcywgdHJpZ2dlcmluZyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcbiAgLy8gZXJyb3JcIiBpZiBh
bnkgb2YgaXRzIHByb3BlcnRpZXMgYXJlIGFjY2Vzc2VkLiBUaGUgb25seSBzZWVtaW5nbHkgcG9z
c2libGVcbiAgLy8gd2F5IHRvIGF2b2lkIGVycm9yaW5nIGlzIHRvIGFjY2VzcyBhIHByb3BlcnR5
IHRoYXQgdHlwaWNhbGx5IHdvcmtzIGZvclxuICAvLyBub24tYW5vbnltb3VzIGRpdnMgYW5kIGNh
dGNoIGFueSBlcnJvciB0aGF0IG1heSBvdGhlcndpc2UgYXJpc2UuIFNlZVxuICAvLyBodHRwczov
L2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MjdcbiAgdHJ5IHtcbiAg
ICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMgKi9cbiAgICBjdXJyZW50
UmFuZ2Uuc3RhcnRDb250YWluZXIubm9kZVR5cGU7XG4gICAgY3VycmVudFJhbmdlLmVuZENvbnRh
aW5lci5ub2RlVHlwZTtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC1leHByZXNzaW9u
cyAqL1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBJZiB0
aGUgbm9kZSBhbmQgb2Zmc2V0IHZhbHVlcyBhcmUgdGhlIHNhbWUsIHRoZSBzZWxlY3Rpb24gaXMg
Y29sbGFwc2VkLlxuICAvLyBgU2VsZWN0aW9uLmlzQ29sbGFwc2VkYCBpcyBhdmFpbGFibGUgbmF0
aXZlbHksIGJ1dCBJRSBzb21ldGltZXMgZ2V0c1xuICAvLyB0aGlzIHZhbHVlIHdyb25nLlxuICB2
YXIgaXNTZWxlY3Rpb25Db2xsYXBzZWQgPSBpc0NvbGxhcHNlZChzZWxlY3Rpb24uYW5jaG9yTm9k
ZSwgc2VsZWN0aW9uLmFuY2hvck9mZnNldCwgc2VsZWN0aW9uLmZvY3VzTm9kZSwgc2VsZWN0aW9u
LmZvY3VzT2Zmc2V0KTtcblxuICB2YXIgcmFuZ2VMZW5ndGggPSBpc1NlbGVjdGlvbkNvbGxhcHNl
ZCA/IDAgOiBjdXJyZW50UmFuZ2UudG9TdHJpbmcoKS5sZW5ndGg7XG5cbiAgdmFyIHRlbXBSYW5n
ZSA9IGN1cnJlbnRSYW5nZS5jbG9uZVJhbmdlKCk7XG4gIHRlbXBSYW5nZS5zZWxlY3ROb2RlQ29u
dGVudHMobm9kZSk7XG4gIHRlbXBSYW5nZS5zZXRFbmQoY3VycmVudFJhbmdlLnN0YXJ0Q29udGFp
bmVyLCBjdXJyZW50UmFuZ2Uuc3RhcnRPZmZzZXQpO1xuXG4gIHZhciBpc1RlbXBSYW5nZUNvbGxh
cHNlZCA9IGlzQ29sbGFwc2VkKHRlbXBSYW5nZS5zdGFydENvbnRhaW5lciwgdGVtcFJhbmdlLnN0
YXJ0T2Zmc2V0LCB0ZW1wUmFuZ2UuZW5kQ29udGFpbmVyLCB0ZW1wUmFuZ2UuZW5kT2Zmc2V0KTtc
blxuICB2YXIgc3RhcnQgPSBpc1RlbXBSYW5nZUNvbGxhcHNlZCA/IDAgOiB0ZW1wUmFuZ2UudG9T
dHJpbmcoKS5sZW5ndGg7XG4gIHZhciBlbmQgPSBzdGFydCArIHJhbmdlTGVuZ3RoO1xuXG4gIC8v
IERldGVjdCB3aGV0aGVyIHRoZSBzZWxlY3Rpb24gaXMgYmFja3dhcmQuXG4gIHZhciBkZXRlY3Rp
b25SYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gIGRldGVjdGlvblJhbmdlLnNldFN0
YXJ0KGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7XG4gIGRldGVjdGlvblJhbmdlLnNldEVuZChm
b2N1c05vZGUsIGZvY3VzT2Zmc2V0KTtcbiAgdmFyIGlzQmFja3dhcmQgPSBkZXRlY3Rpb25SYW5n
ZS5jb2xsYXBzZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydDogaXNCYWNrd2FyZCA/IGVuZCA6
IHN0YXJ0LFxuICAgIGVuZDogaXNCYWNrd2FyZCA/IHN0YXJ0IDogZW5kXG4gIH07XG59XG5cbi8q
KlxuICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlXG4gKiBAcGFyYW0ge29i
amVjdH0gb2Zmc2V0c1xuICovXG5mdW5jdGlvbiBzZXRJRU9mZnNldHMobm9kZSwgb2Zmc2V0cykg
e1xuICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5kdXBsaWNh
dGUoKTtcbiAgdmFyIHN0YXJ0LCBlbmQ7XG5cbiAgaWYgKG9mZnNldHMuZW5kID09PSB1bmRlZmlu
ZWQpIHtcbiAgICBzdGFydCA9IG9mZnNldHMuc3RhcnQ7XG4gICAgZW5kID0gc3RhcnQ7XG4gIH0g
ZWxzZSBpZiAob2Zmc2V0cy5zdGFydCA+IG9mZnNldHMuZW5kKSB7XG4gICAgc3RhcnQgPSBvZmZz
ZXRzLmVuZDtcbiAgICBlbmQgPSBvZmZzZXRzLnN0YXJ0O1xuICB9IGVsc2Uge1xuICAgIHN0YXJ0
ID0gb2Zmc2V0cy5zdGFydDtcbiAgICBlbmQgPSBvZmZzZXRzLmVuZDtcbiAgfVxuXG4gIHJhbmdl
Lm1vdmVUb0VsZW1lbnRUZXh0KG5vZGUpO1xuICByYW5nZS5tb3ZlU3RhcnQoJ2NoYXJhY3Rlcics
IHN0YXJ0KTtcbiAgcmFuZ2Uuc2V0RW5kUG9pbnQoJ0VuZFRvU3RhcnQnLCByYW5nZSk7XG4gIHJh
bmdlLm1vdmVFbmQoJ2NoYXJhY3RlcicsIGVuZCAtIHN0YXJ0KTtcbiAgcmFuZ2Uuc2VsZWN0KCk7
XG59XG5cbi8qKlxuICogSW4gbW9kZXJuIG5vbi1JRSBicm93c2Vycywgd2UgY2FuIHN1cHBvcnQg
Ym90aCBmb3J3YXJkIGFuZCBiYWNrd2FyZFxuICogc2VsZWN0aW9ucy5cbiAqXG4gKiBOb3RlOiBJ
RTEwKyBzdXBwb3J0cyB0aGUgU2VsZWN0aW9uIG9iamVjdCwgYnV0IGl0IGRvZXMgbm90IHN1cHBv
cnRcbiAqIHRoZSBgZXh0ZW5kYCBtZXRob2QsIHdoaWNoIG1lYW5zIHRoYXQgZXZlbiBpbiBtb2Rl
cm4gSUUsIGl0J3Mgbm90IHBvc3NpYmxlXG4gKiB0byBwcm9ncmFtbWF0aWNhbGx5IGNyZWF0ZSBh
IGJhY2t3YXJkIHNlbGVjdGlvbi4gVGh1cywgZm9yIGFsbCBJRVxuICogdmVyc2lvbnMsIHdlIHVz
ZSB0aGUgb2xkIElFIEFQSSB0byBjcmVhdGUgb3VyIHNlbGVjdGlvbnMuXG4gKlxuICogQHBhcmFt
IHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlXG4gKiBAcGFyYW0ge29iamVjdH0gb2Zmc2V0
c1xuICovXG5mdW5jdGlvbiBzZXRNb2Rlcm5PZmZzZXRzKG5vZGUsIG9mZnNldHMpIHtcbiAgaWYg
KCF3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHNlbGVj
dGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgdmFyIGxlbmd0aCA9IG5vZGVbZ2V0VGV4
dENvbnRlbnRBY2Nlc3NvcigpXS5sZW5ndGg7XG4gIHZhciBzdGFydCA9IE1hdGgubWluKG9mZnNl
dHMuc3RhcnQsIGxlbmd0aCk7XG4gIHZhciBlbmQgPSBvZmZzZXRzLmVuZCA9PT0gdW5kZWZpbmVk
ID8gc3RhcnQgOiBNYXRoLm1pbihvZmZzZXRzLmVuZCwgbGVuZ3RoKTtcblxuICAvLyBJRSAxMSB1
c2VzIG1vZGVybiBzZWxlY3Rpb24sIGJ1dCBkb2Vzbid0IHN1cHBvcnQgdGhlIGV4dGVuZCBtZXRo
b2QuXG4gIC8vIEZsaXAgYmFja3dhcmQgc2VsZWN0aW9ucywgc28gd2UgY2FuIHNldCB3aXRoIGEg
c2luZ2xlIHJhbmdlLlxuICBpZiAoIXNlbGVjdGlvbi5leHRlbmQgJiYgc3RhcnQgPiBlbmQpIHtc
biAgICB2YXIgdGVtcCA9IGVuZDtcbiAgICBlbmQgPSBzdGFydDtcbiAgICBzdGFydCA9IHRlbXA7
XG4gIH1cblxuICB2YXIgc3RhcnRNYXJrZXIgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KG5v
ZGUsIHN0YXJ0KTtcbiAgdmFyIGVuZE1hcmtlciA9IGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQo
bm9kZSwgZW5kKTtcblxuICBpZiAoc3RhcnRNYXJrZXIgJiYgZW5kTWFya2VyKSB7XG4gICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICByYW5nZS5zZXRTdGFydChzdGFy
dE1hcmtlci5ub2RlLCBzdGFydE1hcmtlci5vZmZzZXQpO1xuICAgIHNlbGVjdGlvbi5yZW1vdmVB
bGxSYW5nZXMoKTtcblxuICAgIGlmIChzdGFydCA+IGVuZCkge1xuICAgICAgc2VsZWN0aW9uLmFk
ZFJhbmdlKHJhbmdlKTtcbiAgICAgIHNlbGVjdGlvbi5leHRlbmQoZW5kTWFya2VyLm5vZGUsIGVu
ZE1hcmtlci5vZmZzZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByYW5nZS5zZXRFbmQoZW5kTWFy
a2VyLm5vZGUsIGVuZE1hcmtlci5vZmZzZXQpO1xuICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJh
bmdlKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIHVzZUlFT2Zmc2V0cyA9IEV4ZWN1dGlvbkVudmly
b25tZW50LmNhblVzZURPTSAmJiAnc2VsZWN0aW9uJyBpbiBkb2N1bWVudCAmJiAhKCdnZXRTZWxl
Y3Rpb24nIGluIHdpbmRvdyk7XG5cbnZhciBSZWFjdERPTVNlbGVjdGlvbiA9IHtcbiAgLyoqXG4g
ICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICAgKi9cbiAgZ2V0T2Zmc2V0czogdXNlSUVP
ZmZzZXRzID8gZ2V0SUVPZmZzZXRzIDogZ2V0TW9kZXJuT2Zmc2V0cyxcblxuICAvKipcbiAgICog
QHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlXG4gICAqIEBwYXJhbSB7b2JqZWN0
fSBvZmZzZXRzXG4gICAqL1xuICBzZXRPZmZzZXRzOiB1c2VJRU9mZnNldHMgPyBzZXRJRU9mZnNl
dHMgOiBzZXRNb2Rlcm5PZmZzZXRzXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NU2Vs
ZWN0aW9uO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4v
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RET01TZWxlY3Rpb24uanNcbi8vIG1vZHVs
ZSBpZCA9IDE3MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEdpdmVuIGFueSBub2RlIHJldHVy
biB0aGUgZmlyc3QgbGVhZiBub2RlIHdpdGhvdXQgY2hpbGRyZW4uXG4gKlxuICogQHBhcmFtIHtE
T01FbGVtZW50fERPTVRleHROb2RlfSBub2RlXG4gKiBAcmV0dXJuIHtET01FbGVtZW50fERPTVRl
eHROb2RlfVxuICovXG5cbmZ1bmN0aW9uIGdldExlYWZOb2RlKG5vZGUpIHtcbiAgd2hpbGUgKG5v
ZGUgJiYgbm9kZS5maXJzdENoaWxkKSB7XG4gICAgbm9kZSA9IG5vZGUuZmlyc3RDaGlsZDtcbiAg
fVxuICByZXR1cm4gbm9kZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG5leHQgc2libGluZyB3aXRo
aW4gYSBjb250YWluZXIuIFRoaXMgd2lsbCB3YWxrIHVwIHRoZVxuICogRE9NIGlmIGEgbm9kZSdz
IHNpYmxpbmdzIGhhdmUgYmVlbiBleGhhdXN0ZWQuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50
fERPTVRleHROb2RlfSBub2RlXG4gKiBAcmV0dXJuIHs/RE9NRWxlbWVudHxET01UZXh0Tm9kZX1c
biAqL1xuZnVuY3Rpb24gZ2V0U2libGluZ05vZGUobm9kZSkge1xuICB3aGlsZSAobm9kZSkge1xu
ICAgIGlmIChub2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICByZXR1cm4gbm9kZS5uZXh0U2libGlu
ZztcbiAgICB9XG4gICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgfVxufVxuXG4vKipcbiAq
IEdldCBvYmplY3QgZGVzY3JpYmluZyB0aGUgbm9kZXMgd2hpY2ggY29udGFpbiBjaGFyYWN0ZXJz
IGF0IG9mZnNldC5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IHJvb3Rc
biAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXRcbiAqIEByZXR1cm4gez9vYmplY3R9XG4gKi9cbmZ1
bmN0aW9uIGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQocm9vdCwgb2Zmc2V0KSB7XG4gIHZhciBu
b2RlID0gZ2V0TGVhZk5vZGUocm9vdCk7XG4gIHZhciBub2RlU3RhcnQgPSAwO1xuICB2YXIgbm9k
ZUVuZCA9IDA7XG5cbiAgd2hpbGUgKG5vZGUpIHtcbiAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0g
Mykge1xuICAgICAgbm9kZUVuZCA9IG5vZGVTdGFydCArIG5vZGUudGV4dENvbnRlbnQubGVuZ3Ro
O1xuXG4gICAgICBpZiAobm9kZVN0YXJ0IDw9IG9mZnNldCAmJiBub2RlRW5kID49IG9mZnNldCkg
e1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgb2Zm
c2V0OiBvZmZzZXQgLSBub2RlU3RhcnRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgbm9k
ZVN0YXJ0ID0gbm9kZUVuZDtcbiAgICB9XG5cbiAgICBub2RlID0gZ2V0TGVhZk5vZGUoZ2V0U2li
bGluZ05vZGUobm9kZSkpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0Tm9kZUZvckNo
YXJhY3Rlck9mZnNldDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVS
XG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2dldE5vZGVGb3JDaGFyYWN0ZXJPZmZz
ZXQuanNcbi8vIG1vZHVsZSBpZCA9IDE3MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0
cmljdCc7XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG52YXIg
aXNUZXh0Tm9kZSA9IHJlcXVpcmUoJy4vaXNUZXh0Tm9kZScpO1xuXG4vKmVzbGludC1kaXNhYmxl
IG5vLWJpdHdpc2UgKi9cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBnaXZlbiBET00gbm9kZSBjb250
YWlucyBvciBpcyBhbm90aGVyIERPTSBub2RlLlxuICovXG5mdW5jdGlvbiBjb250YWluc05vZGUo
b3V0ZXJOb2RlLCBpbm5lck5vZGUpIHtcbiAgaWYgKCFvdXRlck5vZGUgfHwgIWlubmVyTm9kZSkg
e1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIGlmIChvdXRlck5vZGUgPT09IGlubmVyTm9k
ZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzVGV4dE5vZGUob3V0ZXJOb2Rl
KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIGlmIChpc1RleHROb2RlKGlubmVyTm9k
ZSkpIHtcbiAgICByZXR1cm4gY29udGFpbnNOb2RlKG91dGVyTm9kZSwgaW5uZXJOb2RlLnBhcmVu
dE5vZGUpO1xuICB9IGVsc2UgaWYgKCdjb250YWlucycgaW4gb3V0ZXJOb2RlKSB7XG4gICAgcmV0
dXJuIG91dGVyTm9kZS5jb250YWlucyhpbm5lck5vZGUpO1xuICB9IGVsc2UgaWYgKG91dGVyTm9k
ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikge1xuICAgIHJldHVybiAhIShvdXRlck5vZGUuY29t
cGFyZURvY3VtZW50UG9zaXRpb24oaW5uZXJOb2RlKSAmIDE2KTtcbiAgfSBlbHNlIHtcbiAgICBy
ZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb250YWluc05vZGU7XG5c
blxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVs
ZXMvZmJqcy9saWIvY29udGFpbnNOb2RlLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzNcbi8vIG1vZHVs
ZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG52YXIgaXNOb2RlID0gcmVxdWlyZSgnLi9pc05v
ZGUnKTtcblxuLyoqXG4gKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNoZWNrLlxu
ICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciBvciBub3QgdGhlIG9iamVjdCBpcyBhIERPTSB0
ZXh0IG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGlzVGV4dE5vZGUob2JqZWN0KSB7XG4gIHJldHVybiBp
c05vZGUob2JqZWN0KSAmJiBvYmplY3Qubm9kZVR5cGUgPT0gMztcbn1cblxubW9kdWxlLmV4cG9y
dHMgPSBpc1RleHROb2RlO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09U
RVJcbi8vIC4vbm9kZV9tb2R1bGVzL2ZianMvbGliL2lzVGV4dE5vZGUuanNcbi8vIG1vZHVsZSBp
ZCA9IDE3NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICog
Q29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbi8qKlxuICogQHBh
cmFtIHsqfSBvYmplY3QgVGhlIG9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm4ge2Jvb2xlYW59
IFdoZXRoZXIgb3Igbm90IHRoZSBvYmplY3QgaXMgYSBET00gbm9kZS5cbiAqL1xuZnVuY3Rpb24g
aXNOb2RlKG9iamVjdCkge1xuICB2YXIgZG9jID0gb2JqZWN0ID8gb2JqZWN0Lm93bmVyRG9jdW1l
bnQgfHwgb2JqZWN0IDogZG9jdW1lbnQ7XG4gIHZhciBkZWZhdWx0VmlldyA9IGRvYy5kZWZhdWx0
VmlldyB8fCB3aW5kb3c7XG4gIHJldHVybiAhIShvYmplY3QgJiYgKHR5cGVvZiBkZWZhdWx0Vmll
dy5Ob2RlID09PSAnZnVuY3Rpb24nID8gb2JqZWN0IGluc3RhbmNlb2YgZGVmYXVsdFZpZXcuTm9k
ZSA6IHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmplY3Qubm9kZVR5cGUg
PT09ICdudW1iZXInICYmIHR5cGVvZiBvYmplY3Qubm9kZU5hbWUgPT09ICdzdHJpbmcnKSk7XG59
XG5cbm1vZHVsZS5leHBvcnRzID0gaXNOb2RlO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8g
V0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2ZianMvbGliL2lzTm9kZS5qc1xuLy8g
bW9kdWxlIGlkID0gMTc1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBOUyA9IHtcbiAgeGxpbms6ICdo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyxcbiAgeG1sOiAnaHR0cDovL3d3dy53My5vcmcv
WE1MLzE5OTgvbmFtZXNwYWNlJ1xufTtcblxuLy8gV2UgdXNlIGF0dHJpYnV0ZXMgZm9yIGV2ZXJ5
dGhpbmcgU1ZHIHNvIGxldCdzIGF2b2lkIHNvbWUgZHVwbGljYXRpb24gYW5kIHJ1blxuLy8gY29k
ZSBpbnN0ZWFkLlxuLy8gVGhlIGZvbGxvd2luZyBhcmUgYWxsIHNwZWNpZmllZCBpbiB0aGUgSFRN
TCBjb25maWcgYWxyZWFkeSBzbyB3ZSBleGNsdWRlIGhlcmUuXG4vLyAtIGNsYXNzIChhcyBjbGFz
c05hbWUpXG4vLyAtIGNvbG9yXG4vLyAtIGhlaWdodFxuLy8gLSBpZFxuLy8gLSBsYW5nXG4vLyAt
IG1heFxuLy8gLSBtZWRpYVxuLy8gLSBtZXRob2Rcbi8vIC0gbWluXG4vLyAtIG5hbWVcbi8vIC0g
c3R5bGVcbi8vIC0gdGFyZ2V0XG4vLyAtIHR5cGVcbi8vIC0gd2lkdGhcbnZhciBBVFRSUyA9IHtc
biAgYWNjZW50SGVpZ2h0OiAnYWNjZW50LWhlaWdodCcsXG4gIGFjY3VtdWxhdGU6IDAsXG4gIGFk
ZGl0aXZlOiAwLFxuICBhbGlnbm1lbnRCYXNlbGluZTogJ2FsaWdubWVudC1iYXNlbGluZScsXG4g
IGFsbG93UmVvcmRlcjogJ2FsbG93UmVvcmRlcicsXG4gIGFscGhhYmV0aWM6IDAsXG4gIGFtcGxp
dHVkZTogMCxcbiAgYXJhYmljRm9ybTogJ2FyYWJpYy1mb3JtJyxcbiAgYXNjZW50OiAwLFxuICBh
dHRyaWJ1dGVOYW1lOiAnYXR0cmlidXRlTmFtZScsXG4gIGF0dHJpYnV0ZVR5cGU6ICdhdHRyaWJ1
dGVUeXBlJyxcbiAgYXV0b1JldmVyc2U6ICdhdXRvUmV2ZXJzZScsXG4gIGF6aW11dGg6IDAsXG4g
IGJhc2VGcmVxdWVuY3k6ICdiYXNlRnJlcXVlbmN5JyxcbiAgYmFzZVByb2ZpbGU6ICdiYXNlUHJv
ZmlsZScsXG4gIGJhc2VsaW5lU2hpZnQ6ICdiYXNlbGluZS1zaGlmdCcsXG4gIGJib3g6IDAsXG4g
IGJlZ2luOiAwLFxuICBiaWFzOiAwLFxuICBieTogMCxcbiAgY2FsY01vZGU6ICdjYWxjTW9kZScs
XG4gIGNhcEhlaWdodDogJ2NhcC1oZWlnaHQnLFxuICBjbGlwOiAwLFxuICBjbGlwUGF0aDogJ2Ns
aXAtcGF0aCcsXG4gIGNsaXBSdWxlOiAnY2xpcC1ydWxlJyxcbiAgY2xpcFBhdGhVbml0czogJ2Ns
aXBQYXRoVW5pdHMnLFxuICBjb2xvckludGVycG9sYXRpb246ICdjb2xvci1pbnRlcnBvbGF0aW9u
JyxcbiAgY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczogJ2NvbG9yLWludGVycG9sYXRpb24tZmls
dGVycycsXG4gIGNvbG9yUHJvZmlsZTogJ2NvbG9yLXByb2ZpbGUnLFxuICBjb2xvclJlbmRlcmlu
ZzogJ2NvbG9yLXJlbmRlcmluZycsXG4gIGNvbnRlbnRTY3JpcHRUeXBlOiAnY29udGVudFNjcmlw
dFR5cGUnLFxuICBjb250ZW50U3R5bGVUeXBlOiAnY29udGVudFN0eWxlVHlwZScsXG4gIGN1cnNv
cjogMCxcbiAgY3g6IDAsXG4gIGN5OiAwLFxuICBkOiAwLFxuICBkZWNlbGVyYXRlOiAwLFxuICBk
ZXNjZW50OiAwLFxuICBkaWZmdXNlQ29uc3RhbnQ6ICdkaWZmdXNlQ29uc3RhbnQnLFxuICBkaXJl
Y3Rpb246IDAsXG4gIGRpc3BsYXk6IDAsXG4gIGRpdmlzb3I6IDAsXG4gIGRvbWluYW50QmFzZWxp
bmU6ICdkb21pbmFudC1iYXNlbGluZScsXG4gIGR1cjogMCxcbiAgZHg6IDAsXG4gIGR5OiAwLFxu
ICBlZGdlTW9kZTogJ2VkZ2VNb2RlJyxcbiAgZWxldmF0aW9uOiAwLFxuICBlbmFibGVCYWNrZ3Jv
dW5kOiAnZW5hYmxlLWJhY2tncm91bmQnLFxuICBlbmQ6IDAsXG4gIGV4cG9uZW50OiAwLFxuICBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOiAnZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCcsXG4g
IGZpbGw6IDAsXG4gIGZpbGxPcGFjaXR5OiAnZmlsbC1vcGFjaXR5JyxcbiAgZmlsbFJ1bGU6ICdm
aWxsLXJ1bGUnLFxuICBmaWx0ZXI6IDAsXG4gIGZpbHRlclJlczogJ2ZpbHRlclJlcycsXG4gIGZp
bHRlclVuaXRzOiAnZmlsdGVyVW5pdHMnLFxuICBmbG9vZENvbG9yOiAnZmxvb2QtY29sb3InLFxu
ICBmbG9vZE9wYWNpdHk6ICdmbG9vZC1vcGFjaXR5JyxcbiAgZm9jdXNhYmxlOiAwLFxuICBmb250
RmFtaWx5OiAnZm9udC1mYW1pbHknLFxuICBmb250U2l6ZTogJ2ZvbnQtc2l6ZScsXG4gIGZvbnRT
aXplQWRqdXN0OiAnZm9udC1zaXplLWFkanVzdCcsXG4gIGZvbnRTdHJldGNoOiAnZm9udC1zdHJl
dGNoJyxcbiAgZm9udFN0eWxlOiAnZm9udC1zdHlsZScsXG4gIGZvbnRWYXJpYW50OiAnZm9udC12
YXJpYW50JyxcbiAgZm9udFdlaWdodDogJ2ZvbnQtd2VpZ2h0JyxcbiAgZm9ybWF0OiAwLFxuICBm
cm9tOiAwLFxuICBmeDogMCxcbiAgZnk6IDAsXG4gIGcxOiAwLFxuICBnMjogMCxcbiAgZ2x5cGhO
YW1lOiAnZ2x5cGgtbmFtZScsXG4gIGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiAnZ2x5cGgt
b3JpZW50YXRpb24taG9yaXpvbnRhbCcsXG4gIGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbDogJ2ds
eXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJyxcbiAgZ2x5cGhSZWY6ICdnbHlwaFJlZicsXG4gIGdy
YWRpZW50VHJhbnNmb3JtOiAnZ3JhZGllbnRUcmFuc2Zvcm0nLFxuICBncmFkaWVudFVuaXRzOiAn
Z3JhZGllbnRVbml0cycsXG4gIGhhbmdpbmc6IDAsXG4gIGhvcml6QWR2WDogJ2hvcml6LWFkdi14
JyxcbiAgaG9yaXpPcmlnaW5YOiAnaG9yaXotb3JpZ2luLXgnLFxuICBpZGVvZ3JhcGhpYzogMCxc
biAgaW1hZ2VSZW5kZXJpbmc6ICdpbWFnZS1yZW5kZXJpbmcnLFxuICAnaW4nOiAwLFxuICBpbjI6
IDAsXG4gIGludGVyY2VwdDogMCxcbiAgazogMCxcbiAgazE6IDAsXG4gIGsyOiAwLFxuICBrMzog
MCxcbiAgazQ6IDAsXG4gIGtlcm5lbE1hdHJpeDogJ2tlcm5lbE1hdHJpeCcsXG4gIGtlcm5lbFVu
aXRMZW5ndGg6ICdrZXJuZWxVbml0TGVuZ3RoJyxcbiAga2VybmluZzogMCxcbiAga2V5UG9pbnRz
OiAna2V5UG9pbnRzJyxcbiAga2V5U3BsaW5lczogJ2tleVNwbGluZXMnLFxuICBrZXlUaW1lczog
J2tleVRpbWVzJyxcbiAgbGVuZ3RoQWRqdXN0OiAnbGVuZ3RoQWRqdXN0JyxcbiAgbGV0dGVyU3Bh
Y2luZzogJ2xldHRlci1zcGFjaW5nJyxcbiAgbGlnaHRpbmdDb2xvcjogJ2xpZ2h0aW5nLWNvbG9y
JyxcbiAgbGltaXRpbmdDb25lQW5nbGU6ICdsaW1pdGluZ0NvbmVBbmdsZScsXG4gIGxvY2FsOiAw
LFxuICBtYXJrZXJFbmQ6ICdtYXJrZXItZW5kJyxcbiAgbWFya2VyTWlkOiAnbWFya2VyLW1pZCcs
XG4gIG1hcmtlclN0YXJ0OiAnbWFya2VyLXN0YXJ0JyxcbiAgbWFya2VySGVpZ2h0OiAnbWFya2Vy
SGVpZ2h0JyxcbiAgbWFya2VyVW5pdHM6ICdtYXJrZXJVbml0cycsXG4gIG1hcmtlcldpZHRoOiAn
bWFya2VyV2lkdGgnLFxuICBtYXNrOiAwLFxuICBtYXNrQ29udGVudFVuaXRzOiAnbWFza0NvbnRl
bnRVbml0cycsXG4gIG1hc2tVbml0czogJ21hc2tVbml0cycsXG4gIG1hdGhlbWF0aWNhbDogMCxc
biAgbW9kZTogMCxcbiAgbnVtT2N0YXZlczogJ251bU9jdGF2ZXMnLFxuICBvZmZzZXQ6IDAsXG4g
IG9wYWNpdHk6IDAsXG4gIG9wZXJhdG9yOiAwLFxuICBvcmRlcjogMCxcbiAgb3JpZW50OiAwLFxu
ICBvcmllbnRhdGlvbjogMCxcbiAgb3JpZ2luOiAwLFxuICBvdmVyZmxvdzogMCxcbiAgb3Zlcmxp
bmVQb3NpdGlvbjogJ292ZXJsaW5lLXBvc2l0aW9uJyxcbiAgb3ZlcmxpbmVUaGlja25lc3M6ICdv
dmVybGluZS10aGlja25lc3MnLFxuICBwYWludE9yZGVyOiAncGFpbnQtb3JkZXInLFxuICBwYW5v
c2UxOiAncGFub3NlLTEnLFxuICBwYXRoTGVuZ3RoOiAncGF0aExlbmd0aCcsXG4gIHBhdHRlcm5D
b250ZW50VW5pdHM6ICdwYXR0ZXJuQ29udGVudFVuaXRzJyxcbiAgcGF0dGVyblRyYW5zZm9ybTog
J3BhdHRlcm5UcmFuc2Zvcm0nLFxuICBwYXR0ZXJuVW5pdHM6ICdwYXR0ZXJuVW5pdHMnLFxuICBw
b2ludGVyRXZlbnRzOiAncG9pbnRlci1ldmVudHMnLFxuICBwb2ludHM6IDAsXG4gIHBvaW50c0F0
WDogJ3BvaW50c0F0WCcsXG4gIHBvaW50c0F0WTogJ3BvaW50c0F0WScsXG4gIHBvaW50c0F0Wjog
J3BvaW50c0F0WicsXG4gIHByZXNlcnZlQWxwaGE6ICdwcmVzZXJ2ZUFscGhhJyxcbiAgcHJlc2Vy
dmVBc3BlY3RSYXRpbzogJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLFxuICBwcmltaXRpdmVVbml0czog
J3ByaW1pdGl2ZVVuaXRzJyxcbiAgcjogMCxcbiAgcmFkaXVzOiAwLFxuICByZWZYOiAncmVmWCcs
XG4gIHJlZlk6ICdyZWZZJyxcbiAgcmVuZGVyaW5nSW50ZW50OiAncmVuZGVyaW5nLWludGVudCcs
XG4gIHJlcGVhdENvdW50OiAncmVwZWF0Q291bnQnLFxuICByZXBlYXREdXI6ICdyZXBlYXREdXIn
LFxuICByZXF1aXJlZEV4dGVuc2lvbnM6ICdyZXF1aXJlZEV4dGVuc2lvbnMnLFxuICByZXF1aXJl
ZEZlYXR1cmVzOiAncmVxdWlyZWRGZWF0dXJlcycsXG4gIHJlc3RhcnQ6IDAsXG4gIHJlc3VsdDog
MCxcbiAgcm90YXRlOiAwLFxuICByeDogMCxcbiAgcnk6IDAsXG4gIHNjYWxlOiAwLFxuICBzZWVk
OiAwLFxuICBzaGFwZVJlbmRlcmluZzogJ3NoYXBlLXJlbmRlcmluZycsXG4gIHNsb3BlOiAwLFxu
ICBzcGFjaW5nOiAwLFxuICBzcGVjdWxhckNvbnN0YW50OiAnc3BlY3VsYXJDb25zdGFudCcsXG4g
IHNwZWN1bGFyRXhwb25lbnQ6ICdzcGVjdWxhckV4cG9uZW50JyxcbiAgc3BlZWQ6IDAsXG4gIHNw
cmVhZE1ldGhvZDogJ3NwcmVhZE1ldGhvZCcsXG4gIHN0YXJ0T2Zmc2V0OiAnc3RhcnRPZmZzZXQn
LFxuICBzdGREZXZpYXRpb246ICdzdGREZXZpYXRpb24nLFxuICBzdGVtaDogMCxcbiAgc3RlbXY6
IDAsXG4gIHN0aXRjaFRpbGVzOiAnc3RpdGNoVGlsZXMnLFxuICBzdG9wQ29sb3I6ICdzdG9wLWNv
bG9yJyxcbiAgc3RvcE9wYWNpdHk6ICdzdG9wLW9wYWNpdHknLFxuICBzdHJpa2V0aHJvdWdoUG9z
aXRpb246ICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJyxcbiAgc3RyaWtldGhyb3VnaFRoaWNrbmVz
czogJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJyxcbiAgc3RyaW5nOiAwLFxuICBzdHJva2U6IDAs
XG4gIHN0cm9rZURhc2hhcnJheTogJ3N0cm9rZS1kYXNoYXJyYXknLFxuICBzdHJva2VEYXNob2Zm
c2V0OiAnc3Ryb2tlLWRhc2hvZmZzZXQnLFxuICBzdHJva2VMaW5lY2FwOiAnc3Ryb2tlLWxpbmVj
YXAnLFxuICBzdHJva2VMaW5lam9pbjogJ3N0cm9rZS1saW5lam9pbicsXG4gIHN0cm9rZU1pdGVy
bGltaXQ6ICdzdHJva2UtbWl0ZXJsaW1pdCcsXG4gIHN0cm9rZU9wYWNpdHk6ICdzdHJva2Utb3Bh
Y2l0eScsXG4gIHN0cm9rZVdpZHRoOiAnc3Ryb2tlLXdpZHRoJyxcbiAgc3VyZmFjZVNjYWxlOiAn
c3VyZmFjZVNjYWxlJyxcbiAgc3lzdGVtTGFuZ3VhZ2U6ICdzeXN0ZW1MYW5ndWFnZScsXG4gIHRh
YmxlVmFsdWVzOiAndGFibGVWYWx1ZXMnLFxuICB0YXJnZXRYOiAndGFyZ2V0WCcsXG4gIHRhcmdl
dFk6ICd0YXJnZXRZJyxcbiAgdGV4dEFuY2hvcjogJ3RleHQtYW5jaG9yJyxcbiAgdGV4dERlY29y
YXRpb246ICd0ZXh0LWRlY29yYXRpb24nLFxuICB0ZXh0UmVuZGVyaW5nOiAndGV4dC1yZW5kZXJp
bmcnLFxuICB0ZXh0TGVuZ3RoOiAndGV4dExlbmd0aCcsXG4gIHRvOiAwLFxuICB0cmFuc2Zvcm06
IDAsXG4gIHUxOiAwLFxuICB1MjogMCxcbiAgdW5kZXJsaW5lUG9zaXRpb246ICd1bmRlcmxpbmUt
cG9zaXRpb24nLFxuICB1bmRlcmxpbmVUaGlja25lc3M6ICd1bmRlcmxpbmUtdGhpY2tuZXNzJyxc
biAgdW5pY29kZTogMCxcbiAgdW5pY29kZUJpZGk6ICd1bmljb2RlLWJpZGknLFxuICB1bmljb2Rl
UmFuZ2U6ICd1bmljb2RlLXJhbmdlJyxcbiAgdW5pdHNQZXJFbTogJ3VuaXRzLXBlci1lbScsXG4g
IHZBbHBoYWJldGljOiAndi1hbHBoYWJldGljJyxcbiAgdkhhbmdpbmc6ICd2LWhhbmdpbmcnLFxu
ICB2SWRlb2dyYXBoaWM6ICd2LWlkZW9ncmFwaGljJyxcbiAgdk1hdGhlbWF0aWNhbDogJ3YtbWF0
aGVtYXRpY2FsJyxcbiAgdmFsdWVzOiAwLFxuICB2ZWN0b3JFZmZlY3Q6ICd2ZWN0b3ItZWZmZWN0
JyxcbiAgdmVyc2lvbjogMCxcbiAgdmVydEFkdlk6ICd2ZXJ0LWFkdi15JyxcbiAgdmVydE9yaWdp
blg6ICd2ZXJ0LW9yaWdpbi14JyxcbiAgdmVydE9yaWdpblk6ICd2ZXJ0LW9yaWdpbi15JyxcbiAg
dmlld0JveDogJ3ZpZXdCb3gnLFxuICB2aWV3VGFyZ2V0OiAndmlld1RhcmdldCcsXG4gIHZpc2li
aWxpdHk6IDAsXG4gIHdpZHRoczogMCxcbiAgd29yZFNwYWNpbmc6ICd3b3JkLXNwYWNpbmcnLFxu
ICB3cml0aW5nTW9kZTogJ3dyaXRpbmctbW9kZScsXG4gIHg6IDAsXG4gIHhIZWlnaHQ6ICd4LWhl
aWdodCcsXG4gIHgxOiAwLFxuICB4MjogMCxcbiAgeENoYW5uZWxTZWxlY3RvcjogJ3hDaGFubmVs
U2VsZWN0b3InLFxuICB4bGlua0FjdHVhdGU6ICd4bGluazphY3R1YXRlJyxcbiAgeGxpbmtBcmNy
b2xlOiAneGxpbms6YXJjcm9sZScsXG4gIHhsaW5rSHJlZjogJ3hsaW5rOmhyZWYnLFxuICB4bGlu
a1JvbGU6ICd4bGluazpyb2xlJyxcbiAgeGxpbmtTaG93OiAneGxpbms6c2hvdycsXG4gIHhsaW5r
VGl0bGU6ICd4bGluazp0aXRsZScsXG4gIHhsaW5rVHlwZTogJ3hsaW5rOnR5cGUnLFxuICB4bWxC
YXNlOiAneG1sOmJhc2UnLFxuICB4bWxuczogMCxcbiAgeG1sbnNYbGluazogJ3htbG5zOnhsaW5r
JyxcbiAgeG1sTGFuZzogJ3htbDpsYW5nJyxcbiAgeG1sU3BhY2U6ICd4bWw6c3BhY2UnLFxuICB5
OiAwLFxuICB5MTogMCxcbiAgeTI6IDAsXG4gIHlDaGFubmVsU2VsZWN0b3I6ICd5Q2hhbm5lbFNl
bGVjdG9yJyxcbiAgejogMCxcbiAgem9vbUFuZFBhbjogJ3pvb21BbmRQYW4nXG59O1xuXG52YXIg
U1ZHRE9NUHJvcGVydHlDb25maWcgPSB7XG4gIFByb3BlcnRpZXM6IHt9LFxuICBET01BdHRyaWJ1
dGVOYW1lc3BhY2VzOiB7XG4gICAgeGxpbmtBY3R1YXRlOiBOUy54bGluayxcbiAgICB4bGlua0Fy
Y3JvbGU6IE5TLnhsaW5rLFxuICAgIHhsaW5rSHJlZjogTlMueGxpbmssXG4gICAgeGxpbmtSb2xl
OiBOUy54bGluayxcbiAgICB4bGlua1Nob3c6IE5TLnhsaW5rLFxuICAgIHhsaW5rVGl0bGU6IE5T
LnhsaW5rLFxuICAgIHhsaW5rVHlwZTogTlMueGxpbmssXG4gICAgeG1sQmFzZTogTlMueG1sLFxu
ICAgIHhtbExhbmc6IE5TLnhtbCxcbiAgICB4bWxTcGFjZTogTlMueG1sXG4gIH0sXG4gIERPTUF0
dHJpYnV0ZU5hbWVzOiB7fVxufTtcblxuT2JqZWN0LmtleXMoQVRUUlMpLmZvckVhY2goZnVuY3Rp
b24gKGtleSkge1xuICBTVkdET01Qcm9wZXJ0eUNvbmZpZy5Qcm9wZXJ0aWVzW2tleV0gPSAwO1xu
ICBpZiAoQVRUUlNba2V5XSkge1xuICAgIFNWR0RPTVByb3BlcnR5Q29uZmlnLkRPTUF0dHJpYnV0
ZU5hbWVzW2tleV0gPSBBVFRSU1trZXldO1xuICB9XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBT
VkdET01Qcm9wZXJ0eUNvbmZpZztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sg
Rk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1NWR0RPTVByb3BlcnR5Q29u
ZmlnLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4g
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50UHJv
cGFnYXRvcnMgPSByZXF1aXJlKCcuL0V2ZW50UHJvcGFnYXRvcnMnKTtcbnZhciBFeGVjdXRpb25F
bnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52
YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRy
ZWUnKTtcbnZhciBSZWFjdElucHV0U2VsZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdElucHV0U2Vs
ZWN0aW9uJyk7XG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50
Jyk7XG5cbnZhciBnZXRBY3RpdmVFbGVtZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvZ2V0QWN0aXZl
RWxlbWVudCcpO1xudmFyIGlzVGV4dElucHV0RWxlbWVudCA9IHJlcXVpcmUoJy4vaXNUZXh0SW5w
dXRFbGVtZW50Jyk7XG52YXIgc2hhbGxvd0VxdWFsID0gcmVxdWlyZSgnZmJqcy9saWIvc2hhbGxv
d0VxdWFsJyk7XG5cbnZhciBza2lwU2VsZWN0aW9uQ2hhbmdlRXZlbnQgPSBFeGVjdXRpb25FbnZp
cm9ubWVudC5jYW5Vc2VET00gJiYgJ2RvY3VtZW50TW9kZScgaW4gZG9jdW1lbnQgJiYgZG9jdW1l
bnQuZG9jdW1lbnRNb2RlIDw9IDExO1xuXG52YXIgZXZlbnRUeXBlcyA9IHtcbiAgc2VsZWN0OiB7
XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6ICdvblNlbGVj
dCcsXG4gICAgICBjYXB0dXJlZDogJ29uU2VsZWN0Q2FwdHVyZSdcbiAgICB9LFxuICAgIGRlcGVu
ZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbnRleHRNZW51JywgJ3RvcEZvY3VzJywgJ3RvcEtl
eURvd24nLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3duJywgJ3RvcE1vdXNlVXAnLCAndG9wU2Vs
ZWN0aW9uQ2hhbmdlJ11cbiAgfVxufTtcblxudmFyIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xudmFy
IGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDtcbnZhciBsYXN0U2VsZWN0aW9uID0gbnVsbDtcbnZh
ciBtb3VzZURvd24gPSBmYWxzZTtcblxuLy8gVHJhY2sgd2hldGhlciBhIGxpc3RlbmVyIGV4aXN0
cyBmb3IgdGhpcyBwbHVnaW4uIElmIG5vbmUgZXhpc3QsIHdlIGRvXG4vLyBub3QgZXh0cmFjdCBl
dmVudHMuIFNlZSAjMzYzOS5cbnZhciBoYXNMaXN0ZW5lciA9IGZhbHNlO1xuXG4vKipcbiAqIEdl
dCBhbiBvYmplY3Qgd2hpY2ggaXMgYSB1bmlxdWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJl
bnQgc2VsZWN0aW9uLlxuICpcbiAqIFRoZSByZXR1cm4gdmFsdWUgd2lsbCBub3QgYmUgY29uc2lz
dGVudCBhY3Jvc3Mgbm9kZXMgb3IgYnJvd3NlcnMsIGJ1dFxuICogdHdvIGlkZW50aWNhbCBzZWxl
Y3Rpb25zIG9uIHRoZSBzYW1lIG5vZGUgd2lsbCByZXR1cm4gaWRlbnRpY2FsIG9iamVjdHMuXG4g
KlxuICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9c
bmZ1bmN0aW9uIGdldFNlbGVjdGlvbihub2RlKSB7XG4gIGlmICgnc2VsZWN0aW9uU3RhcnQnIGlu
IG5vZGUgJiYgUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMobm9k
ZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IG5vZGUuc2VsZWN0aW9uU3RhcnQsXG4g
ICAgICBlbmQ6IG5vZGUuc2VsZWN0aW9uRW5kXG4gICAgfTtcbiAgfSBlbHNlIGlmICh3aW5kb3cu
Z2V0U2VsZWN0aW9uKSB7XG4gICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24o
KTtcbiAgICByZXR1cm4ge1xuICAgICAgYW5jaG9yTm9kZTogc2VsZWN0aW9uLmFuY2hvck5vZGUs
XG4gICAgICBhbmNob3JPZmZzZXQ6IHNlbGVjdGlvbi5hbmNob3JPZmZzZXQsXG4gICAgICBmb2N1
c05vZGU6IHNlbGVjdGlvbi5mb2N1c05vZGUsXG4gICAgICBmb2N1c09mZnNldDogc2VsZWN0aW9u
LmZvY3VzT2Zmc2V0XG4gICAgfTtcbiAgfSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24pIHtc
biAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtcbiAgICBy
ZXR1cm4ge1xuICAgICAgcGFyZW50RWxlbWVudDogcmFuZ2UucGFyZW50RWxlbWVudCgpLFxuICAg
ICAgdGV4dDogcmFuZ2UudGV4dCxcbiAgICAgIHRvcDogcmFuZ2UuYm91bmRpbmdUb3AsXG4gICAg
ICBsZWZ0OiByYW5nZS5ib3VuZGluZ0xlZnRcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogUG9s
bCBzZWxlY3Rpb24gdG8gc2VlIHdoZXRoZXIgaXQncyBjaGFuZ2VkLlxuICpcbiAqIEBwYXJhbSB7
b2JqZWN0fSBuYXRpdmVFdmVudFxuICogQHJldHVybiB7P1N5bnRoZXRpY0V2ZW50fVxuICovXG5m
dW5jdGlvbiBjb25zdHJ1Y3RTZWxlY3RFdmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJn
ZXQpIHtcbiAgLy8gRW5zdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IGVsZW1lbnQsIGFuZCB0aGF0IHRo
ZSB1c2VyIGlzIG5vdCBkcmFnZ2luZyBhXG4gIC8vIHNlbGVjdGlvbiAodGhpcyBtYXRjaGVzIG5h
dGl2ZSBgc2VsZWN0YCBldmVudCBiZWhhdmlvcikuIEluIEhUTUw1LCBzZWxlY3RcbiAgLy8gZmly
ZXMgb25seSBvbiBpbnB1dCBhbmQgdGV4dGFyZWEgdGh1cyBpZiB0aGVyZSdzIG5vIGZvY3VzZWQg
ZWxlbWVudCB3ZVxuICAvLyB3b24ndCBkaXNwYXRjaC5cbiAgaWYgKG1vdXNlRG93biB8fCBhY3Rp
dmVFbGVtZW50ID09IG51bGwgfHwgYWN0aXZlRWxlbWVudCAhPT0gZ2V0QWN0aXZlRWxlbWVudCgp
KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBPbmx5IGZpcmUgd2hlbiBzZWxlY3Rp
b24gaGFzIGFjdHVhbGx5IGNoYW5nZWQuXG4gIHZhciBjdXJyZW50U2VsZWN0aW9uID0gZ2V0U2Vs
ZWN0aW9uKGFjdGl2ZUVsZW1lbnQpO1xuICBpZiAoIWxhc3RTZWxlY3Rpb24gfHwgIXNoYWxsb3dF
cXVhbChsYXN0U2VsZWN0aW9uLCBjdXJyZW50U2VsZWN0aW9uKSkge1xuICAgIGxhc3RTZWxlY3Rp
b24gPSBjdXJyZW50U2VsZWN0aW9uO1xuXG4gICAgdmFyIHN5bnRoZXRpY0V2ZW50ID0gU3ludGhl
dGljRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuc2VsZWN0LCBhY3RpdmVFbGVtZW50SW5zdCwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblxuICAgIHN5bnRoZXRpY0V2ZW50LnR5
cGUgPSAnc2VsZWN0JztcbiAgICBzeW50aGV0aWNFdmVudC50YXJnZXQgPSBhY3RpdmVFbGVtZW50
O1xuXG4gICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHN5
bnRoZXRpY0V2ZW50KTtcblxuICAgIHJldHVybiBzeW50aGV0aWNFdmVudDtcbiAgfVxuXG4gIHJl
dHVybiBudWxsO1xufVxuXG4vKipcbiAqIFRoaXMgcGx1Z2luIGNyZWF0ZXMgYW4gYG9uU2VsZWN0
YCBldmVudCB0aGF0IG5vcm1hbGl6ZXMgc2VsZWN0IGV2ZW50c1xuICogYWNyb3NzIGZvcm0gZWxl
bWVudHMuXG4gKlxuICogU3VwcG9ydGVkIGVsZW1lbnRzIGFyZTpcbiAqIC0gaW5wdXQgKHNlZSBg
aXNUZXh0SW5wdXRFbGVtZW50YClcbiAqIC0gdGV4dGFyZWFcbiAqIC0gY29udGVudEVkaXRhYmxl
XG4gKlxuICogVGhpcyBkaWZmZXJzIGZyb20gbmF0aXZlIGJyb3dzZXIgaW1wbGVtZW50YXRpb25z
IGluIHRoZSBmb2xsb3dpbmcgd2F5czpcbiAqIC0gRmlyZXMgb24gY29udGVudEVkaXRhYmxlIGZp
ZWxkcyBhcyB3ZWxsIGFzIGlucHV0cy5cbiAqIC0gRmlyZXMgZm9yIGNvbGxhcHNlZCBzZWxlY3Rp
b24uXG4gKiAtIEZpcmVzIGFmdGVyIHVzZXIgaW5wdXQuXG4gKi9cbnZhciBTZWxlY3RFdmVudFBs
dWdpbiA9IHtcbiAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblxuICBleHRyYWN0RXZlbnRzOiBm
dW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZl
bnRUYXJnZXQpIHtcbiAgICBpZiAoIWhhc0xpc3RlbmVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtc
biAgICB9XG5cbiAgICB2YXIgdGFyZ2V0Tm9kZSA9IHRhcmdldEluc3QgPyBSZWFjdERPTUNvbXBv
bmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0YXJnZXRJbnN0KSA6IHdpbmRvdztcblxuICAg
IHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgICAvLyBUcmFjayB0aGUgaW5wdXQgbm9kZSB0
aGF0IGhhcyBmb2N1cy5cbiAgICAgIGNhc2UgJ3RvcEZvY3VzJzpcbiAgICAgICAgaWYgKGlzVGV4
dElucHV0RWxlbWVudCh0YXJnZXROb2RlKSB8fCB0YXJnZXROb2RlLmNvbnRlbnRFZGl0YWJsZSA9
PT0gJ3RydWUnKSB7XG4gICAgICAgICAgYWN0aXZlRWxlbWVudCA9IHRhcmdldE5vZGU7XG4gICAg
ICAgICAgYWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJbnN0O1xuICAgICAgICAgIGxhc3RTZWxl
Y3Rpb24gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9w
Qmx1cic6XG4gICAgICAgIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuICAgICAgICBhY3RpdmVFbGVt
ZW50SW5zdCA9IG51bGw7XG4gICAgICAgIGxhc3RTZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICBi
cmVhaztcbiAgICAgIC8vIERvbid0IGZpcmUgdGhlIGV2ZW50IHdoaWxlIHRoZSB1c2VyIGlzIGRy
YWdnaW5nLiBUaGlzIG1hdGNoZXMgdGhlXG4gICAgICAvLyBzZW1hbnRpY3Mgb2YgdGhlIG5hdGl2
ZSBzZWxlY3QgZXZlbnQuXG4gICAgICBjYXNlICd0b3BNb3VzZURvd24nOlxuICAgICAgICBtb3Vz
ZURvd24gPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcENvbnRleHRNZW51
JzpcbiAgICAgIGNhc2UgJ3RvcE1vdXNlVXAnOlxuICAgICAgICBtb3VzZURvd24gPSBmYWxzZTtc
biAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFNlbGVjdEV2ZW50KG5hdGl2ZUV2ZW50LCBuYXRpdmVF
dmVudFRhcmdldCk7XG4gICAgICAvLyBDaHJvbWUgYW5kIElFIGZpcmUgbm9uLXN0YW5kYXJkIGV2
ZW50IHdoZW4gc2VsZWN0aW9uIGlzIGNoYW5nZWQgKGFuZFxuICAgICAgLy8gc29tZXRpbWVzIHdo
ZW4gaXQgaGFzbid0KS4gSUUncyBldmVudCBmaXJlcyBvdXQgb2Ygb3JkZXIgd2l0aCByZXNwZWN0
XG4gICAgICAvLyB0byBrZXkgYW5kIGlucHV0IGV2ZW50cyBvbiBkZWxldGlvbiwgc28gd2UgZGlz
Y2FyZCBpdC5cbiAgICAgIC8vXG4gICAgICAvLyBGaXJlZm94IGRvZXNuJ3Qgc3VwcG9ydCBzZWxl
Y3Rpb25jaGFuZ2UsIHNvIGNoZWNrIHNlbGVjdGlvbiBzdGF0dXNcbiAgICAgIC8vIGFmdGVyIGVh
Y2gga2V5IGVudHJ5LiBUaGUgc2VsZWN0aW9uIGNoYW5nZXMgYWZ0ZXIga2V5ZG93biBhbmQgYmVm
b3JlXG4gICAgICAvLyBrZXl1cCwgYnV0IHdlIGNoZWNrIG9uIGtleWRvd24gYXMgd2VsbCBpbiB0
aGUgY2FzZSBvZiBob2xkaW5nIGRvd24gYVxuICAgICAgLy8ga2V5LCB3aGVuIG11bHRpcGxlIGtl
eWRvd24gZXZlbnRzIGFyZSBmaXJlZCBidXQgb25seSBvbmUga2V5dXAgaXMuXG4gICAgICAvLyBU
aGlzIGlzIGFsc28gb3VyIGFwcHJvYWNoIGZvciBJRSBoYW5kbGluZywgZm9yIHRoZSByZWFzb24g
YWJvdmUuXG4gICAgICBjYXNlICd0b3BTZWxlY3Rpb25DaGFuZ2UnOlxuICAgICAgICBpZiAoc2tp
cFNlbGVjdGlvbkNoYW5nZUV2ZW50KSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAg
ICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGNhc2UgJ3RvcEtleURvd24nOlxuICAgICAgY2Fz
ZSAndG9wS2V5VXAnOlxuICAgICAgICByZXR1cm4gY29uc3RydWN0U2VsZWN0RXZlbnQobmF0aXZl
RXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAg
fSxcblxuICBkaWRQdXRMaXN0ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUs
IGxpc3RlbmVyKSB7XG4gICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdvblNlbGVjdCcpIHtc
biAgICAgIGhhc0xpc3RlbmVyID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBv
cnRzID0gU2VsZWN0RXZlbnRQbHVnaW47XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQ
QUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9TZWxlY3RFdmVudFBs
dWdpbi5qc1xuLy8gbW9kdWxlIGlkID0gMTc3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxu
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9w
cm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIEV2
ZW50TGlzdGVuZXIgPSByZXF1aXJlKCdmYmpzL2xpYi9FdmVudExpc3RlbmVyJyk7XG52YXIgRXZl
bnRQcm9wYWdhdG9ycyA9IHJlcXVpcmUoJy4vRXZlbnRQcm9wYWdhdG9ycycpO1xudmFyIFJlYWN0
RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52
YXIgU3ludGhldGljQW5pbWF0aW9uRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0FuaW1hdGlv
bkV2ZW50Jyk7XG52YXIgU3ludGhldGljQ2xpcGJvYXJkRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRo
ZXRpY0NsaXBib2FyZEV2ZW50Jyk7XG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5
bnRoZXRpY0V2ZW50Jyk7XG52YXIgU3ludGhldGljRm9jdXNFdmVudCA9IHJlcXVpcmUoJy4vU3lu
dGhldGljRm9jdXNFdmVudCcpO1xudmFyIFN5bnRoZXRpY0tleWJvYXJkRXZlbnQgPSByZXF1aXJl
KCcuL1N5bnRoZXRpY0tleWJvYXJkRXZlbnQnKTtcbnZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0g
cmVxdWlyZSgnLi9TeW50aGV0aWNNb3VzZUV2ZW50Jyk7XG52YXIgU3ludGhldGljRHJhZ0V2ZW50
ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNEcmFnRXZlbnQnKTtcbnZhciBTeW50aGV0aWNUb3VjaEV2
ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNUb3VjaEV2ZW50Jyk7XG52YXIgU3ludGhldGljVHJh
bnNpdGlvbkV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQnKTtcbnZh
ciBTeW50aGV0aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2ZW50Jyk7XG52YXIg
U3ludGhldGljV2hlZWxFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljV2hlZWxFdmVudCcpO1xu
XG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtc
bnZhciBnZXRFdmVudENoYXJDb2RlID0gcmVxdWlyZSgnLi9nZXRFdmVudENoYXJDb2RlJyk7XG52
YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICog
VHVybnNcbiAqIFsnYWJvcnQnLCAuLi5dXG4gKiBpbnRvXG4gKiBldmVudFR5cGVzID0ge1xuICog
ICAnYWJvcnQnOiB7XG4gKiAgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAqICAgICAg
IGJ1YmJsZWQ6ICdvbkFib3J0JyxcbiAqICAgICAgIGNhcHR1cmVkOiAnb25BYm9ydENhcHR1cmUn
LFxuICogICAgIH0sXG4gKiAgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEFib3J0J10sXG4gKiAgIH0s
XG4gKiAgIC4uLlxuICogfTtcbiAqIHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZyA9IHtc
biAqICAgJ3RvcEFib3J0JzogeyBzYW1lQ29uZmlnIH1cbiAqIH07XG4gKi9cbnZhciBldmVudFR5
cGVzID0ge307XG52YXIgdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnID0ge307XG5bJ2Fi
b3J0JywgJ2FuaW1hdGlvbkVuZCcsICdhbmltYXRpb25JdGVyYXRpb24nLCAnYW5pbWF0aW9uU3Rh
cnQnLCAnYmx1cicsICdjYW5QbGF5JywgJ2NhblBsYXlUaHJvdWdoJywgJ2NsaWNrJywgJ2NvbnRl
eHRNZW51JywgJ2NvcHknLCAnY3V0JywgJ2RvdWJsZUNsaWNrJywgJ2RyYWcnLCAnZHJhZ0VuZCcs
ICdkcmFnRW50ZXInLCAnZHJhZ0V4aXQnLCAnZHJhZ0xlYXZlJywgJ2RyYWdPdmVyJywgJ2RyYWdT
dGFydCcsICdkcm9wJywgJ2R1cmF0aW9uQ2hhbmdlJywgJ2VtcHRpZWQnLCAnZW5jcnlwdGVkJywg
J2VuZGVkJywgJ2Vycm9yJywgJ2ZvY3VzJywgJ2lucHV0JywgJ2ludmFsaWQnLCAna2V5RG93bics
ICdrZXlQcmVzcycsICdrZXlVcCcsICdsb2FkJywgJ2xvYWRlZERhdGEnLCAnbG9hZGVkTWV0YWRh
dGEnLCAnbG9hZFN0YXJ0JywgJ21vdXNlRG93bicsICdtb3VzZU1vdmUnLCAnbW91c2VPdXQnLCAn
bW91c2VPdmVyJywgJ21vdXNlVXAnLCAncGFzdGUnLCAncGF1c2UnLCAncGxheScsICdwbGF5aW5n
JywgJ3Byb2dyZXNzJywgJ3JhdGVDaGFuZ2UnLCAncmVzZXQnLCAnc2Nyb2xsJywgJ3NlZWtlZCcs
ICdzZWVraW5nJywgJ3N0YWxsZWQnLCAnc3VibWl0JywgJ3N1c3BlbmQnLCAndGltZVVwZGF0ZScs
ICd0b3VjaENhbmNlbCcsICd0b3VjaEVuZCcsICd0b3VjaE1vdmUnLCAndG91Y2hTdGFydCcsICd0
cmFuc2l0aW9uRW5kJywgJ3ZvbHVtZUNoYW5nZScsICd3YWl0aW5nJywgJ3doZWVsJ10uZm9yRWFj
aChmdW5jdGlvbiAoZXZlbnQpIHtcbiAgdmFyIGNhcGl0YWxpemVkRXZlbnQgPSBldmVudFswXS50
b1VwcGVyQ2FzZSgpICsgZXZlbnQuc2xpY2UoMSk7XG4gIHZhciBvbkV2ZW50ID0gJ29uJyArIGNh
cGl0YWxpemVkRXZlbnQ7XG4gIHZhciB0b3BFdmVudCA9ICd0b3AnICsgY2FwaXRhbGl6ZWRFdmVu
dDtcblxuICB2YXIgdHlwZSA9IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAg
ICAgYnViYmxlZDogb25FdmVudCxcbiAgICAgIGNhcHR1cmVkOiBvbkV2ZW50ICsgJ0NhcHR1cmUn
XG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFt0b3BFdmVudF1cbiAgfTtcbiAgZXZlbnRUeXBl
c1tldmVudF0gPSB0eXBlO1xuICB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWdbdG9wRXZl
bnRdID0gdHlwZTtcbn0pO1xuXG52YXIgb25DbGlja0xpc3RlbmVycyA9IHt9O1xuXG5mdW5jdGlv
biBnZXREaWN0aW9uYXJ5S2V5KGluc3QpIHtcbiAgLy8gUHJldmVudHMgVjggcGVyZm9ybWFuY2Ug
aXNzdWU6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcyMzJc
biAgcmV0dXJuICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7XG59XG5cbmZ1bmN0aW9uIGlzSW50ZXJh
Y3RpdmUodGFnKSB7XG4gIHJldHVybiB0YWcgPT09ICdidXR0b24nIHx8IHRhZyA9PT0gJ2lucHV0
JyB8fCB0YWcgPT09ICdzZWxlY3QnIHx8IHRhZyA9PT0gJ3RleHRhcmVhJztcbn1cblxudmFyIFNp
bXBsZUV2ZW50UGx1Z2luID0ge1xuICBldmVudFR5cGVzOiBldmVudFR5cGVzLFxuXG4gIGV4dHJh
Y3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IHRvcExldmVs
RXZlbnRzVG9EaXNwYXRjaENvbmZpZ1t0b3BMZXZlbFR5cGVdO1xuICAgIGlmICghZGlzcGF0Y2hD
b25maWcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgRXZlbnRDb25zdHJ1
Y3RvcjtcbiAgICBzd2l0Y2ggKHRvcExldmVsVHlwZSkge1xuICAgICAgY2FzZSAndG9wQWJvcnQn
OlxuICAgICAgY2FzZSAndG9wQ2FuUGxheSc6XG4gICAgICBjYXNlICd0b3BDYW5QbGF5VGhyb3Vn
aCc6XG4gICAgICBjYXNlICd0b3BEdXJhdGlvbkNoYW5nZSc6XG4gICAgICBjYXNlICd0b3BFbXB0
aWVkJzpcbiAgICAgIGNhc2UgJ3RvcEVuY3J5cHRlZCc6XG4gICAgICBjYXNlICd0b3BFbmRlZCc6
XG4gICAgICBjYXNlICd0b3BFcnJvcic6XG4gICAgICBjYXNlICd0b3BJbnB1dCc6XG4gICAgICBj
YXNlICd0b3BJbnZhbGlkJzpcbiAgICAgIGNhc2UgJ3RvcExvYWQnOlxuICAgICAgY2FzZSAndG9w
TG9hZGVkRGF0YSc6XG4gICAgICBjYXNlICd0b3BMb2FkZWRNZXRhZGF0YSc6XG4gICAgICBjYXNl
ICd0b3BMb2FkU3RhcnQnOlxuICAgICAgY2FzZSAndG9wUGF1c2UnOlxuICAgICAgY2FzZSAndG9w
UGxheSc6XG4gICAgICBjYXNlICd0b3BQbGF5aW5nJzpcbiAgICAgIGNhc2UgJ3RvcFByb2dyZXNz
JzpcbiAgICAgIGNhc2UgJ3RvcFJhdGVDaGFuZ2UnOlxuICAgICAgY2FzZSAndG9wUmVzZXQnOlxu
ICAgICAgY2FzZSAndG9wU2Vla2VkJzpcbiAgICAgIGNhc2UgJ3RvcFNlZWtpbmcnOlxuICAgICAg
Y2FzZSAndG9wU3RhbGxlZCc6XG4gICAgICBjYXNlICd0b3BTdWJtaXQnOlxuICAgICAgY2FzZSAn
dG9wU3VzcGVuZCc6XG4gICAgICBjYXNlICd0b3BUaW1lVXBkYXRlJzpcbiAgICAgIGNhc2UgJ3Rv
cFZvbHVtZUNoYW5nZSc6XG4gICAgICBjYXNlICd0b3BXYWl0aW5nJzpcbiAgICAgICAgLy8gSFRN
TCBFdmVudHNcbiAgICAgICAgLy8gQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9pbmRl
eC5odG1sI2V2ZW50cy0wXG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNFdmVu
dDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3BLZXlQcmVzcyc6XG4gICAgICAgIC8v
IEZpcmVmb3ggY3JlYXRlcyBhIGtleXByZXNzIGV2ZW50IGZvciBmdW5jdGlvbiBrZXlzIHRvby4g
VGhpcyByZW1vdmVzXG4gICAgICAgIC8vIHRoZSB1bndhbnRlZCBrZXlwcmVzcyBldmVudHMuIEVu
dGVyIGlzIGhvd2V2ZXIgYm90aCBwcmludGFibGUgYW5kXG4gICAgICAgIC8vIG5vbi1wcmludGFi
bGUuIE9uZSB3b3VsZCBleHBlY3QgVGFiIHRvIGJlIGFzIHdlbGwgKGJ1dCBpdCBpc24ndCkuXG4g
ICAgICAgIGlmIChnZXRFdmVudENoYXJDb2RlKG5hdGl2ZUV2ZW50KSA9PT0gMCkge1xuICAgICAg
ICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4g
ICAgICBjYXNlICd0b3BLZXlEb3duJzpcbiAgICAgIGNhc2UgJ3RvcEtleVVwJzpcbiAgICAgICAg
RXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0tleWJvYXJkRXZlbnQ7XG4gICAgICAgIGJyZWFr
O1xuICAgICAgY2FzZSAndG9wQmx1cic6XG4gICAgICBjYXNlICd0b3BGb2N1cyc6XG4gICAgICAg
IEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNGb2N1c0V2ZW50O1xuICAgICAgICBicmVhaztc
biAgICAgIGNhc2UgJ3RvcENsaWNrJzpcbiAgICAgICAgLy8gRmlyZWZveCBjcmVhdGVzIGEgY2xp
Y2sgZXZlbnQgb24gcmlnaHQgbW91c2UgY2xpY2tzLiBUaGlzIHJlbW92ZXMgdGhlXG4gICAgICAg
IC8vIHVud2FudGVkIGNsaWNrIGV2ZW50cy5cbiAgICAgICAgaWYgKG5hdGl2ZUV2ZW50LmJ1dHRv
biA9PT0gMikge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAvKiBm
YWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlICd0b3BEb3VibGVDbGljayc6XG4gICAgICBjYXNl
ICd0b3BNb3VzZURvd24nOlxuICAgICAgY2FzZSAndG9wTW91c2VNb3ZlJzpcbiAgICAgIGNhc2Ug
J3RvcE1vdXNlVXAnOlxuICAgICAgLy8gVE9ETzogRGlzYWJsZWQgZWxlbWVudHMgc2hvdWxkIG5v
dCByZXNwb25kIHRvIG1vdXNlIGV2ZW50c1xuICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAg
ICAgY2FzZSAndG9wTW91c2VPdXQnOlxuICAgICAgY2FzZSAndG9wTW91c2VPdmVyJzpcbiAgICAg
IGNhc2UgJ3RvcENvbnRleHRNZW51JzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRo
ZXRpY01vdXNlRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wRHJhZyc6XG4g
ICAgICBjYXNlICd0b3BEcmFnRW5kJzpcbiAgICAgIGNhc2UgJ3RvcERyYWdFbnRlcic6XG4gICAg
ICBjYXNlICd0b3BEcmFnRXhpdCc6XG4gICAgICBjYXNlICd0b3BEcmFnTGVhdmUnOlxuICAgICAg
Y2FzZSAndG9wRHJhZ092ZXInOlxuICAgICAgY2FzZSAndG9wRHJhZ1N0YXJ0JzpcbiAgICAgIGNh
c2UgJ3RvcERyb3AnOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljRHJhZ0V2
ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcFRvdWNoQ2FuY2VsJzpcbiAgICAg
IGNhc2UgJ3RvcFRvdWNoRW5kJzpcbiAgICAgIGNhc2UgJ3RvcFRvdWNoTW92ZSc6XG4gICAgICBj
YXNlICd0b3BUb3VjaFN0YXJ0JzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRp
Y1RvdWNoRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wQW5pbWF0aW9uRW5k
JzpcbiAgICAgIGNhc2UgJ3RvcEFuaW1hdGlvbkl0ZXJhdGlvbic6XG4gICAgICBjYXNlICd0b3BB
bmltYXRpb25TdGFydCc6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNBbmlt
YXRpb25FdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3BUcmFuc2l0aW9uRW5k
JzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY1RyYW5zaXRpb25FdmVudDtc
biAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3BTY3JvbGwnOlxuICAgICAgICBFdmVudENv
bnN0cnVjdG9yID0gU3ludGhldGljVUlFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNl
ICd0b3BXaGVlbCc6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNXaGVlbEV2
ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcENvcHknOlxuICAgICAgY2FzZSAn
dG9wQ3V0JzpcbiAgICAgIGNhc2UgJ3RvcFBhc3RlJzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3Rv
ciA9IFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAg
IUV2ZW50Q29uc3RydWN0b3IgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAnU2ltcGxlRXZlbnRQbHVnaW46IFVuaGFuZGxlZCBldmVudCB0
eXBlLCBgJXNgLicsIHRvcExldmVsVHlwZSkgOiBfcHJvZEludmFyaWFudCgnODYnLCB0b3BMZXZl
bFR5cGUpIDogdm9pZCAwO1xuICAgIHZhciBldmVudCA9IEV2ZW50Q29uc3RydWN0b3IuZ2V0UG9v
bGVkKGRpc3BhdGNoQ29uZmlnLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpO1xuICAgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hl
cyhldmVudCk7XG4gICAgcmV0dXJuIGV2ZW50O1xuICB9LFxuXG4gIGRpZFB1dExpc3RlbmVyOiBm
dW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpIHtcbiAgICAvLyBNb2Jp
bGUgU2FmYXJpIGRvZXMgbm90IGZpcmUgcHJvcGVybHkgYnViYmxlIGNsaWNrIGV2ZW50cyBvblxu
ICAgIC8vIG5vbi1pbnRlcmFjdGl2ZSBlbGVtZW50cywgd2hpY2ggbWVhbnMgZGVsZWdhdGVkIGNs
aWNrIGxpc3RlbmVycyBkbyBub3RcbiAgICAvLyBmaXJlLiBUaGUgd29ya2Fyb3VuZCBmb3IgdGhp
cyBidWcgaW52b2x2ZXMgYXR0YWNoaW5nIGFuIGVtcHR5IGNsaWNrXG4gICAgLy8gbGlzdGVuZXIg
b24gdGhlIHRhcmdldCBub2RlLlxuICAgIC8vIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxv
Zy9hcmNoaXZlcy8yMDEwLzA5L2NsaWNrX2V2ZW50X2RlbC5odG1sXG4gICAgaWYgKHJlZ2lzdHJh
dGlvbk5hbWUgPT09ICdvbkNsaWNrJyAmJiAhaXNJbnRlcmFjdGl2ZShpbnN0Ll90YWcpKSB7XG4g
ICAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTtcbiAgICAgIHZhciBub2RlID0g
UmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG4gICAgICBp
ZiAoIW9uQ2xpY2tMaXN0ZW5lcnNba2V5XSkge1xuICAgICAgICBvbkNsaWNrTGlzdGVuZXJzW2tl
eV0gPSBFdmVudExpc3RlbmVyLmxpc3Rlbihub2RlLCAnY2xpY2snLCBlbXB0eUZ1bmN0aW9uKTtc
biAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgd2lsbERlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAo
aW5zdCwgcmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIGlmIChyZWdpc3RyYXRpb25OYW1lID09PSAn
b25DbGljaycgJiYgIWlzSW50ZXJhY3RpdmUoaW5zdC5fdGFnKSkge1xuICAgICAgdmFyIGtleSA9
IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG4gICAgICBvbkNsaWNrTGlzdGVuZXJzW2tleV0ucmVt
b3ZlKCk7XG4gICAgICBkZWxldGUgb25DbGlja0xpc3RlbmVyc1trZXldO1xuICAgIH1cbiAgfVxu
fTtcblxubW9kdWxlLmV4cG9ydHMgPSBTaW1wbGVFdmVudFBsdWdpbjtcblxuXG4vLy8vLy8vLy8v
Ly8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL1NpbXBsZUV2ZW50UGx1Z2luLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzhcbi8vIG1vZHVsZSBj
aHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0
JztcblxudmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNFdmVudCcpO1xu
XG4vKipcbiAqIEBpbnRlcmZhY2UgRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIv
Y3NzMy1hbmltYXRpb25zLyNBbmltYXRpb25FdmVudC1pbnRlcmZhY2VcbiAqIEBzZWUgaHR0cHM6
Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0FuaW1hdGlvbkV2ZW50
XG4gKi9cbnZhciBBbmltYXRpb25FdmVudEludGVyZmFjZSA9IHtcbiAgYW5pbWF0aW9uTmFtZTog
bnVsbCxcbiAgZWxhcHNlZFRpbWU6IG51bGwsXG4gIHBzZXVkb0VsZW1lbnQ6IG51bGxcbn07XG5c
bi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNl
ZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFy
a2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmpl
Y3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRo
ZXRpY0V2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNBbmltYXRpb25FdmVudChkaXNwYXRj
aENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkg
e1xuICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlz
cGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRo
ZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNBbmltYXRpb25FdmVudCwgQW5pbWF0aW9u
RXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0FuaW1hdGlvbkV2
ZW50O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU3ludGhldGljQW5pbWF0aW9uRXZlbnQuanNcbi8vIG1v
ZHVsZSBpZCA9IDE3OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1
aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBFdmVudFxuICog
QHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9jbGlwYm9hcmQtYXBpcy9cbiAqL1xudmFyIENsaXBi
b2FyZEV2ZW50SW50ZXJmYWNlID0ge1xuICBjbGlwYm9hcmREYXRhOiBmdW5jdGlvbiAoZXZlbnQp
IHtcbiAgICByZXR1cm4gJ2NsaXBib2FyZERhdGEnIGluIGV2ZW50ID8gZXZlbnQuY2xpcGJvYXJk
RGF0YSA6IHdpbmRvdy5jbGlwYm9hcmREYXRhO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7
b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhp
cyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRp
ZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBO
YXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICov
XG5mdW5jdGlvbiBTeW50aGV0aWNDbGlwYm9hcmRFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0
Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3lu
dGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5h
dGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21l
bnRDbGFzcyhTeW50aGV0aWNDbGlwYm9hcmRFdmVudCwgQ2xpcGJvYXJkRXZlbnRJbnRlcmZhY2Up
O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50O1xuXG5cbi8vLy8v
Ly8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0
LWRvbS9saWIvU3ludGhldGljQ2xpcGJvYXJkRXZlbnQuanNcbi8vIG1vZHVsZSBpZCA9IDE4MFxu
Ly8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljVUlFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhl
dGljVUlFdmVudCcpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRm9jdXNFdmVudFxuICogQHNlZSBo
dHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBGb2N1c0V2
ZW50SW50ZXJmYWNlID0ge1xuICByZWxhdGVkVGFyZ2V0OiBudWxsXG59O1xuXG4vKipcbiAqIEBw
YXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0
Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIg
aWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVF
dmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50
fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNGb2N1c0V2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNw
YXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBT
eW50aGV0aWNVSUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2Vy
LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNVSUV2ZW50
LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNGb2N1c0V2ZW50LCBGb2N1c0V2ZW50SW50ZXJmYWNlKTtc
blxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNGb2N1c0V2ZW50O1xuXG5cbi8vLy8vLy8vLy8v
Ly8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9s
aWIvU3ludGhldGljRm9jdXNFdmVudC5qc1xuLy8gbW9kdWxlIGlkID0gMTgxXG4vLyBtb2R1bGUg
Y2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmlj
dCc7XG5cbnZhciBTeW50aGV0aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2ZW50
Jyk7XG5cbnZhciBnZXRFdmVudENoYXJDb2RlID0gcmVxdWlyZSgnLi9nZXRFdmVudENoYXJDb2Rl
Jyk7XG52YXIgZ2V0RXZlbnRLZXkgPSByZXF1aXJlKCcuL2dldEV2ZW50S2V5Jyk7XG52YXIgZ2V0
RXZlbnRNb2RpZmllclN0YXRlID0gcmVxdWlyZSgnLi9nZXRFdmVudE1vZGlmaWVyU3RhdGUnKTtc
blxuLyoqXG4gKiBAaW50ZXJmYWNlIEtleWJvYXJkRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53
My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52YXIgS2V5Ym9hcmRFdmVudEludGVy
ZmFjZSA9IHtcbiAga2V5OiBnZXRFdmVudEtleSxcbiAgbG9jYXRpb246IG51bGwsXG4gIGN0cmxL
ZXk6IG51bGwsXG4gIHNoaWZ0S2V5OiBudWxsLFxuICBhbHRLZXk6IG51bGwsXG4gIG1ldGFLZXk6
IG51bGwsXG4gIHJlcGVhdDogbnVsbCxcbiAgbG9jYWxlOiBudWxsLFxuICBnZXRNb2RpZmllclN0
YXRlOiBnZXRFdmVudE1vZGlmaWVyU3RhdGUsXG4gIC8vIExlZ2FjeSBJbnRlcmZhY2VcbiAgY2hh
ckNvZGU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIC8vIGBjaGFyQ29kZWAgaXMgdGhlIHJlc3Vs
dCBvZiBhIEtleVByZXNzIGV2ZW50IGFuZCByZXByZXNlbnRzIHRoZSB2YWx1ZSBvZlxuICAgIC8v
IHRoZSBhY3R1YWwgcHJpbnRhYmxlIGNoYXJhY3Rlci5cblxuICAgIC8vIEtleVByZXNzIGlzIGRl
cHJlY2F0ZWQsIGJ1dCBpdHMgcmVwbGFjZW1lbnQgaXMgbm90IHlldCBmaW5hbCBhbmQgbm90XG4g
ICAgLy8gaW1wbGVtZW50ZWQgaW4gYW55IG1ham9yIGJyb3dzZXIuIE9ubHkgS2V5UHJlc3MgaGFz
IGNoYXJDb2RlLlxuICAgIGlmIChldmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7XG4gICAgICBy
ZXR1cm4gZ2V0RXZlbnRDaGFyQ29kZShldmVudCk7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9
LFxuICBrZXlDb2RlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAvLyBga2V5Q29kZWAgaXMgdGhl
IHJlc3VsdCBvZiBhIEtleURvd24vVXAgZXZlbnQgYW5kIHJlcHJlc2VudHMgdGhlIHZhbHVlIG9m
XG4gICAgLy8gcGh5c2ljYWwga2V5Ym9hcmQga2V5LlxuXG4gICAgLy8gVGhlIGFjdHVhbCBtZWFu
aW5nIG9mIHRoZSB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1c2Vycycga2V5Ym9hcmQgbGF5b3V0XG4g
ICAgLy8gd2hpY2ggY2Fubm90IGJlIGRldGVjdGVkLiBBc3N1bWluZyB0aGF0IGl0IGlzIGEgVVMg
a2V5Ym9hcmQgbGF5b3V0XG4gICAgLy8gcHJvdmlkZXMgYSBzdXJwcmlzaW5nbHkgYWNjdXJhdGUg
bWFwcGluZyBmb3IgVVMgYW5kIEV1cm9wZWFuIHVzZXJzLlxuICAgIC8vIER1ZSB0byB0aGlzLCBp
dCBpcyBsZWZ0IHRvIHRoZSB1c2VyIHRvIGltcGxlbWVudCBhdCB0aGlzIHRpbWUuXG4gICAgaWYg
KGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyB8fCBldmVudC50eXBlID09PSAna2V5dXAnKSB7XG4g
ICAgICByZXR1cm4gZXZlbnQua2V5Q29kZTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0sXG4g
IHdoaWNoOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAvLyBgd2hpY2hgIGlzIGFuIGFsaWFzIGZv
ciBlaXRoZXIgYGtleUNvZGVgIG9yIGBjaGFyQ29kZWAgZGVwZW5kaW5nIG9uIHRoZVxuICAgIC8v
IHR5cGUgb2YgdGhlIGV2ZW50LlxuICAgIGlmIChldmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7
XG4gICAgICByZXR1cm4gZ2V0RXZlbnRDaGFyQ29kZShldmVudCk7XG4gICAgfVxuICAgIGlmIChl
dmVudC50eXBlID09PSAna2V5ZG93bicgfHwgZXZlbnQudHlwZSA9PT0gJ2tleXVwJykge1xuICAg
ICAgcmV0dXJuIGV2ZW50LmtleUNvZGU7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG59O1xu
XG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVz
ZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1h
cmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2Jq
ZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50
aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNLZXlib2FyZEV2ZW50KGRpc3Bh
dGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KSB7XG4gIHJldHVybiBTeW50aGV0aWNVSUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcs
IGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5T
eW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNLZXlib2FyZEV2ZW50LCBLZXli
b2FyZEV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNLZXlib2Fy
ZEV2ZW50O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4v
bm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU3ludGhldGljS2V5Ym9hcmRFdmVudC5qc1xuLy8g
bW9kdWxlIGlkID0gMTgyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBnZXRFdmVudENoYXJDb2RlID0g
cmVxdWlyZSgnLi9nZXRFdmVudENoYXJDb2RlJyk7XG5cbi8qKlxuICogTm9ybWFsaXphdGlvbiBv
ZiBkZXByZWNhdGVkIEhUTUw1IGBrZXlgIHZhbHVlc1xuICogQHNlZSBodHRwczovL2RldmVsb3Bl
ci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNLZXlfbmFtZXNc
biAqL1xudmFyIG5vcm1hbGl6ZUtleSA9IHtcbiAgRXNjOiAnRXNjYXBlJyxcbiAgU3BhY2ViYXI6
ICcgJyxcbiAgTGVmdDogJ0Fycm93TGVmdCcsXG4gIFVwOiAnQXJyb3dVcCcsXG4gIFJpZ2h0OiAn
QXJyb3dSaWdodCcsXG4gIERvd246ICdBcnJvd0Rvd24nLFxuICBEZWw6ICdEZWxldGUnLFxuICBX
aW46ICdPUycsXG4gIE1lbnU6ICdDb250ZXh0TWVudScsXG4gIEFwcHM6ICdDb250ZXh0TWVudScs
XG4gIFNjcm9sbDogJ1Njcm9sbExvY2snLFxuICBNb3pQcmludGFibGVLZXk6ICdVbmlkZW50aWZp
ZWQnXG59O1xuXG4vKipcbiAqIFRyYW5zbGF0aW9uIGZyb20gbGVnYWN5IGBrZXlDb2RlYCB0byBI
VE1MNSBga2V5YFxuICogT25seSBzcGVjaWFsIGtleXMgc3VwcG9ydGVkLCBhbGwgb3RoZXJzIGRl
cGVuZCBvbiBrZXlib2FyZCBsYXlvdXQgb3IgYnJvd3NlclxuICogQHNlZSBodHRwczovL2RldmVs
b3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNLZXlfbmFt
ZXNcbiAqL1xudmFyIHRyYW5zbGF0ZVRvS2V5ID0ge1xuICA4OiAnQmFja3NwYWNlJyxcbiAgOTog
J1RhYicsXG4gIDEyOiAnQ2xlYXInLFxuICAxMzogJ0VudGVyJyxcbiAgMTY6ICdTaGlmdCcsXG4g
IDE3OiAnQ29udHJvbCcsXG4gIDE4OiAnQWx0JyxcbiAgMTk6ICdQYXVzZScsXG4gIDIwOiAnQ2Fw
c0xvY2snLFxuICAyNzogJ0VzY2FwZScsXG4gIDMyOiAnICcsXG4gIDMzOiAnUGFnZVVwJyxcbiAg
MzQ6ICdQYWdlRG93bicsXG4gIDM1OiAnRW5kJyxcbiAgMzY6ICdIb21lJyxcbiAgMzc6ICdBcnJv
d0xlZnQnLFxuICAzODogJ0Fycm93VXAnLFxuICAzOTogJ0Fycm93UmlnaHQnLFxuICA0MDogJ0Fy
cm93RG93bicsXG4gIDQ1OiAnSW5zZXJ0JyxcbiAgNDY6ICdEZWxldGUnLFxuICAxMTI6ICdGMScs
XG4gIDExMzogJ0YyJyxcbiAgMTE0OiAnRjMnLFxuICAxMTU6ICdGNCcsXG4gIDExNjogJ0Y1Jyxc
biAgMTE3OiAnRjYnLFxuICAxMTg6ICdGNycsXG4gIDExOTogJ0Y4JyxcbiAgMTIwOiAnRjknLFxu
ICAxMjE6ICdGMTAnLFxuICAxMjI6ICdGMTEnLFxuICAxMjM6ICdGMTInLFxuICAxNDQ6ICdOdW1M
b2NrJyxcbiAgMTQ1OiAnU2Nyb2xsTG9jaycsXG4gIDIyNDogJ01ldGEnXG59O1xuXG4vKipcbiAq
IEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBy
ZXR1cm4ge3N0cmluZ30gTm9ybWFsaXplZCBga2V5YCBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24g
Z2V0RXZlbnRLZXkobmF0aXZlRXZlbnQpIHtcbiAgaWYgKG5hdGl2ZUV2ZW50LmtleSkge1xuICAg
IC8vIE5vcm1hbGl6ZSBpbmNvbnNpc3RlbnQgdmFsdWVzIHJlcG9ydGVkIGJ5IGJyb3dzZXJzIGR1
ZSB0b1xuICAgIC8vIGltcGxlbWVudGF0aW9ucyBvZiBhIHdvcmtpbmcgZHJhZnQgc3BlY2lmaWNh
dGlvbi5cblxuICAgIC8vIEZpcmVGb3ggaW1wbGVtZW50cyBga2V5YCBidXQgcmV0dXJucyBgTW96
UHJpbnRhYmxlS2V5YCBmb3IgYWxsXG4gICAgLy8gcHJpbnRhYmxlIGNoYXJhY3RlcnMgKG5vcm1h
bGl6ZWQgdG8gYFVuaWRlbnRpZmllZGApLCBpZ25vcmUgaXQuXG4gICAgdmFyIGtleSA9IG5vcm1h
bGl6ZUtleVtuYXRpdmVFdmVudC5rZXldIHx8IG5hdGl2ZUV2ZW50LmtleTtcbiAgICBpZiAoa2V5
ICE9PSAnVW5pZGVudGlmaWVkJykge1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gIH1cblxu
ICAvLyBCcm93c2VyIGRvZXMgbm90IGltcGxlbWVudCBga2V5YCwgcG9seWZpbGwgYXMgbXVjaCBv
ZiBpdCBhcyB3ZSBjYW4uXG4gIGlmIChuYXRpdmVFdmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7
XG4gICAgdmFyIGNoYXJDb2RlID0gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCk7XG5cbiAg
ICAvLyBUaGUgZW50ZXIta2V5IGlzIHRlY2huaWNhbGx5IGJvdGggcHJpbnRhYmxlIGFuZCBub24t
cHJpbnRhYmxlIGFuZCBjYW5cbiAgICAvLyB0aHVzIGJlIGNhcHR1cmVkIGJ5IGBrZXlwcmVzc2As
IG5vIG90aGVyIG5vbi1wcmludGFibGUga2V5IHNob3VsZC5cbiAgICByZXR1cm4gY2hhckNvZGUg
PT09IDEzID8gJ0VudGVyJyA6IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpO1xuICB9XG4g
IGlmIChuYXRpdmVFdmVudC50eXBlID09PSAna2V5ZG93bicgfHwgbmF0aXZlRXZlbnQudHlwZSA9
PT0gJ2tleXVwJykge1xuICAgIC8vIFdoaWxlIHVzZXIga2V5Ym9hcmQgbGF5b3V0IGRldGVybWlu
ZXMgdGhlIGFjdHVhbCBtZWFuaW5nIG9mIGVhY2hcbiAgICAvLyBga2V5Q29kZWAgdmFsdWUsIGFs
bW9zdCBhbGwgZnVuY3Rpb24ga2V5cyBoYXZlIGEgdW5pdmVyc2FsIHZhbHVlLlxuICAgIHJldHVy
biB0cmFuc2xhdGVUb0tleVtuYXRpdmVFdmVudC5rZXlDb2RlXSB8fCAnVW5pZGVudGlmaWVkJztc
biAgfVxuICByZXR1cm4gJyc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRLZXk7XG5c
blxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2xpYi9nZXRFdmVudEtleS5qc1xuLy8gbW9kdWxlIGlkID0gMTgzXG4vLyBt
b2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0
aWNNb3VzZUV2ZW50Jyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBEcmFnRXZlbnRcbiAqIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52YXIgRHJhZ0V2
ZW50SW50ZXJmYWNlID0ge1xuICBkYXRhVHJhbnNmZXI6IG51bGxcbn07XG5cbi8qKlxuICogQHBh
cmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRj
aCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBp
ZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2
ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9
XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY0RyYWdFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0
Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3lu
dGhldGljTW91c2VFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtl
ciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljTW91c2VF
dmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljRHJhZ0V2ZW50LCBEcmFnRXZlbnRJbnRlcmZhY2Up
O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0RyYWdFdmVudDtcblxuXG4vLy8vLy8vLy8v
Ly8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
bGliL1N5bnRoZXRpY0RyYWdFdmVudC5qc1xuLy8gbW9kdWxlIGlkID0gMTg0XG4vLyBtb2R1bGUg
Y2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmlj
dCc7XG5cbnZhciBTeW50aGV0aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2ZW50
Jyk7XG5cbnZhciBnZXRFdmVudE1vZGlmaWVyU3RhdGUgPSByZXF1aXJlKCcuL2dldEV2ZW50TW9k
aWZpZXJTdGF0ZScpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgVG91Y2hFdmVudFxuICogQHNlZSBo
dHRwOi8vd3d3LnczLm9yZy9UUi90b3VjaC1ldmVudHMvXG4gKi9cbnZhciBUb3VjaEV2ZW50SW50
ZXJmYWNlID0ge1xuICB0b3VjaGVzOiBudWxsLFxuICB0YXJnZXRUb3VjaGVzOiBudWxsLFxuICBj
aGFuZ2VkVG91Y2hlczogbnVsbCxcbiAgYWx0S2V5OiBudWxsLFxuICBtZXRhS2V5OiBudWxsLFxu
ICBjdHJsS2V5OiBudWxsLFxuICBzaGlmdEtleTogbnVsbCxcbiAgZ2V0TW9kaWZpZXJTdGF0ZTog
Z2V0RXZlbnRNb2RpZmllclN0YXRlXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNw
YXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAq
IEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2
ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3Nl
ciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBT
eW50aGV0aWNUb3VjaEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZl
RXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBTeW50aGV0aWNVSUV2ZW50LmNh
bGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50
aGV0aWNUb3VjaEV2ZW50LCBUb3VjaEV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMg
PSBTeW50aGV0aWNUb3VjaEV2ZW50O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFD
SyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU3ludGhldGljVG91Y2hF
dmVudC5qc1xuLy8gbW9kdWxlIGlkID0gMTg1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxu
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0
aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJm
YWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDkvV0QtY3NzMy10cmFu
c2l0aW9ucy0yMDA5MDMyMC8jdHJhbnNpdGlvbi1ldmVudHMtXG4gKiBAc2VlIGh0dHBzOi8vZGV2
ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9UcmFuc2l0aW9uRXZlbnRcbiAq
L1xudmFyIFRyYW5zaXRpb25FdmVudEludGVyZmFjZSA9IHtcbiAgcHJvcGVydHlOYW1lOiBudWxs
LFxuICBlbGFwc2VkVGltZTogbnVsbCxcbiAgcHNldWRvRWxlbWVudDogbnVsbFxufTtcblxuLyoq
XG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRv
IGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIg
TWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0g
bmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGlj
RXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY1RyYW5zaXRpb25FdmVudChkaXNwYXRjaENv
bmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xu
ICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0
Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRp
Y0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQsIFRyYW5zaXRpb25F
dmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljVHJhbnNpdGlvbkV2
ZW50O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU3ludGhldGljVHJhbnNpdGlvbkV2ZW50LmpzXG4vLyBt
b2R1bGUgaWQgPSAxODZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY01vdXNlRXZlbnQg
PSByZXF1aXJlKCcuL1N5bnRoZXRpY01vdXNlRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNl
IFdoZWVsRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZl
bnRzL1xuICovXG52YXIgV2hlZWxFdmVudEludGVyZmFjZSA9IHtcbiAgZGVsdGFYOiBmdW5jdGlv
biAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ2RlbHRhWCcgaW4gZXZlbnQgPyBldmVudC5kZWx0YVgg
OiAvLyBGYWxsYmFjayB0byBgd2hlZWxEZWx0YVhgIGZvciBXZWJraXQgYW5kIG5vcm1hbGl6ZSAo
cmlnaHQgaXMgcG9zaXRpdmUpLlxuICAgICd3aGVlbERlbHRhWCcgaW4gZXZlbnQgPyAtZXZlbnQu
d2hlZWxEZWx0YVggOiAwO1xuICB9LFxuICBkZWx0YVk6IGZ1bmN0aW9uIChldmVudCkge1xuICAg
IHJldHVybiAnZGVsdGFZJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWSA6IC8vIEZhbGxiYWNrIHRv
IGB3aGVlbERlbHRhWWAgZm9yIFdlYmtpdCBhbmQgbm9ybWFsaXplIChkb3duIGlzIHBvc2l0aXZl
KS5cbiAgICAnd2hlZWxEZWx0YVknIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFZIDogLy8g
RmFsbGJhY2sgdG8gYHdoZWVsRGVsdGFgIGZvciBJRTw5IGFuZCBub3JtYWxpemUgKGRvd24gaXMg
cG9zaXRpdmUpLlxuICAgICd3aGVlbERlbHRhJyBpbiBldmVudCA/IC1ldmVudC53aGVlbERlbHRh
IDogMDtcbiAgfSxcbiAgZGVsdGFaOiBudWxsLFxuXG4gIC8vIEJyb3dzZXJzIHdpdGhvdXQgXCJk
ZWx0YU1vZGVcIiBpcyByZXBvcnRpbmcgaW4gcmF3IHdoZWVsIGRlbHRhIHdoZXJlIG9uZVxuICAv
LyBub3RjaCBvbiB0aGUgc2Nyb2xsIGlzIGFsd2F5cyArLy0gMTIwLCByb3VnaGx5IGVxdWl2YWxl
bnQgdG8gcGl4ZWxzLlxuICAvLyBBIGdvb2QgYXBwcm94aW1hdGlvbiBvZiBET01fREVMVEFfTElO
RSAoMSkgaXMgNSUgb2Ygdmlld3BvcnQgc2l6ZSBvclxuICAvLyB+NDAgcGl4ZWxzLCBmb3IgRE9N
X0RFTFRBX1NDUkVFTiAoMikgaXQgaXMgODcuNSUgb2Ygdmlld3BvcnQgc2l6ZS5cbiAgZGVsdGFN
b2RlOiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBD
b25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3Ry
aW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5c
biAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAq
IEBleHRlbmRzIHtTeW50aGV0aWNNb3VzZUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNX
aGVlbEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBTeW50aGV0aWNNb3VzZUV2ZW50LmNhbGwodGhp
cywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZl
bnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNNb3VzZUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0
aWNXaGVlbEV2ZW50LCBXaGVlbEV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBT
eW50aGV0aWNXaGVlbEV2ZW50O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBG
T09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvU3ludGhldGljV2hlZWxFdmVu
dC5qc1xuLy8gbW9kdWxlIGlkID0gMTg3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciB2YWxpZGF0ZURP
TU5lc3RpbmcgPSByZXF1aXJlKCcuL3ZhbGlkYXRlRE9NTmVzdGluZycpO1xuXG52YXIgRE9DX05P
REVfVFlQRSA9IDk7XG5cbmZ1bmN0aW9uIFJlYWN0RE9NQ29udGFpbmVySW5mbyh0b3BMZXZlbFdy
YXBwZXIsIG5vZGUpIHtcbiAgdmFyIGluZm8gPSB7XG4gICAgX3RvcExldmVsV3JhcHBlcjogdG9w
TGV2ZWxXcmFwcGVyLFxuICAgIF9pZENvdW50ZXI6IDEsXG4gICAgX293bmVyRG9jdW1lbnQ6IG5v
ZGUgPyBub2RlLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFID8gbm9kZSA6IG5vZGUub3duZXJE
b2N1bWVudCA6IG51bGwsXG4gICAgX25vZGU6IG5vZGUsXG4gICAgX3RhZzogbm9kZSA/IG5vZGUu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKSA6IG51bGwsXG4gICAgX25hbWVzcGFjZVVSSTogbm9kZSA/
IG5vZGUubmFtZXNwYWNlVVJJIDogbnVsbFxuICB9O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGluZm8uX2FuY2VzdG9ySW5mbyA9IG5vZGUgPyB2
YWxpZGF0ZURPTU5lc3RpbmcudXBkYXRlZEFuY2VzdG9ySW5mbyhudWxsLCBpbmZvLl90YWcsIG51
bGwpIDogbnVsbDtcbiAgfVxuICByZXR1cm4gaW5mbztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdERPTUNvbnRhaW5lckluZm87XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNL
IEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2xpYi9SZWFjdERPTUNvbnRhaW5l
ckluZm8uanNcbi8vIG1vZHVsZSBpZCA9IDE4OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipc
biAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RE
T01GZWF0dXJlRmxhZ3MgPSB7XG4gIHVzZUNyZWF0ZUVsZW1lbnQ6IHRydWUsXG4gIHVzZUZpYmVy
OiBmYWxzZVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUZlYXR1cmVGbGFncztcblxu
XG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxl
cy9yZWFjdC1kb20vbGliL1JlYWN0RE9NRmVhdHVyZUZsYWdzLmpzXG4vLyBtb2R1bGUgaWQgPSAx
ODlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGFkbGVyMzIgPSByZXF1aXJlKCcuL2FkbGVyMzInKTtc
blxudmFyIFRBR19FTkQgPSAvXFwvPz4vO1xudmFyIENPTU1FTlRfU1RBUlQgPSAvXjxcXCFcXC1c
XC0vO1xuXG52YXIgUmVhY3RNYXJrdXBDaGVja3N1bSA9IHtcbiAgQ0hFQ0tTVU1fQVRUUl9OQU1F
OiAnZGF0YS1yZWFjdC1jaGVja3N1bScsXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBt
YXJrdXAgTWFya3VwIHN0cmluZ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcg
d2l0aCBjaGVja3N1bSBhdHRyaWJ1dGUgYXR0YWNoZWRcbiAgICovXG4gIGFkZENoZWNrc3VtVG9N
YXJrdXA6IGZ1bmN0aW9uIChtYXJrdXApIHtcbiAgICB2YXIgY2hlY2tzdW0gPSBhZGxlcjMyKG1h
cmt1cCk7XG5cbiAgICAvLyBBZGQgY2hlY2tzdW0gKGhhbmRsZSBib3RoIHBhcmVudCB0YWdzLCBj
b21tZW50cyBhbmQgc2VsZi1jbG9zaW5nIHRhZ3MpXG4gICAgaWYgKENPTU1FTlRfU1RBUlQudGVz
dChtYXJrdXApKSB7XG4gICAgICByZXR1cm4gbWFya3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICBy
ZXR1cm4gbWFya3VwLnJlcGxhY2UoVEFHX0VORCwgJyAnICsgUmVhY3RNYXJrdXBDaGVja3N1bS5D
SEVDS1NVTV9BVFRSX05BTUUgKyAnPVwiJyArIGNoZWNrc3VtICsgJ1wiJCYnKTtcbiAgICB9XG4g
IH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgdG8gdXNlXG4gICAqIEBw
YXJhbSB7RE9NRWxlbWVudH0gZWxlbWVudCByb290IFJlYWN0IGVsZW1lbnRcbiAgICogQHJldHVy
bnMge2Jvb2xlYW59IHdoZXRoZXIgb3Igbm90IHRoZSBtYXJrdXAgaXMgdGhlIHNhbWVcbiAgICov
XG4gIGNhblJldXNlTWFya3VwOiBmdW5jdGlvbiAobWFya3VwLCBlbGVtZW50KSB7XG4gICAgdmFy
IGV4aXN0aW5nQ2hlY2tzdW0gPSBlbGVtZW50LmdldEF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNr
c3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7XG4gICAgZXhpc3RpbmdDaGVja3N1bSA9IGV4aXN0aW5n
Q2hlY2tzdW0gJiYgcGFyc2VJbnQoZXhpc3RpbmdDaGVja3N1bSwgMTApO1xuICAgIHZhciBtYXJr
dXBDaGVja3N1bSA9IGFkbGVyMzIobWFya3VwKTtcbiAgICByZXR1cm4gbWFya3VwQ2hlY2tzdW0g
PT09IGV4aXN0aW5nQ2hlY2tzdW07XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RN
YXJrdXBDaGVja3N1bTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVS
XG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL1JlYWN0TWFya3VwQ2hlY2tzdW0uanNc
bi8vIG1vZHVsZSBpZCA9IDE5MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBNT0QgPSA2NTUy
MTtcblxuLy8gYWRsZXIzMiBpcyBub3QgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nLCBhbmQgaXMg
b25seSB1c2VkIHRvIHNhbml0eSBjaGVjayB0aGF0XG4vLyBtYXJrdXAgZ2VuZXJhdGVkIG9uIHRo
ZSBzZXJ2ZXIgbWF0Y2hlcyB0aGUgbWFya3VwIGdlbmVyYXRlZCBvbiB0aGUgY2xpZW50LlxuLy8g
VGhpcyBpbXBsZW1lbnRhdGlvbiAoYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBTaGVldEpTIHZl
cnNpb24pIGhhcyBiZWVuIG9wdGltaXplZFxuLy8gZm9yIG91ciB1c2UgY2FzZSwgYXQgdGhlIGV4
cGVuc2Ugb2YgY29uZm9ybWluZyB0byB0aGUgYWRsZXIzMiBzcGVjaWZpY2F0aW9uXG4vLyBmb3Ig
bm9uLWFzY2lpIGlucHV0cy5cbmZ1bmN0aW9uIGFkbGVyMzIoZGF0YSkge1xuICB2YXIgYSA9IDE7
XG4gIHZhciBiID0gMDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbCA9IGRhdGEubGVuZ3RoO1xuICB2
YXIgbSA9IGwgJiB+MHgzO1xuICB3aGlsZSAoaSA8IG0pIHtcbiAgICB2YXIgbiA9IE1hdGgubWlu
KGkgKyA0MDk2LCBtKTtcbiAgICBmb3IgKDsgaSA8IG47IGkgKz0gNCkge1xuICAgICAgYiArPSAo
YSArPSBkYXRhLmNoYXJDb2RlQXQoaSkpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAxKSkg
KyAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSArIDIpKSArIChhICs9IGRhdGEuY2hhckNvZGVBdChp
ICsgMykpO1xuICAgIH1cbiAgICBhICU9IE1PRDtcbiAgICBiICU9IE1PRDtcbiAgfVxuICBmb3Ig
KDsgaSA8IGw7IGkrKykge1xuICAgIGIgKz0gYSArPSBkYXRhLmNoYXJDb2RlQXQoaSk7XG4gIH1c
biAgYSAlPSBNT0Q7XG4gIGIgJT0gTU9EO1xuICByZXR1cm4gYSB8IGIgPDwgMTY7XG59XG5cbm1v
ZHVsZS5leHBvcnRzID0gYWRsZXIzMjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBB
Q0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vbGliL2FkbGVyMzIuanNcbi8v
IG1vZHVsZSBpZCA9IDE5MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICcxNS42
LjEnO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9k
ZV9tb2R1bGVzL3JlYWN0LWRvbS9saWIvUmVhY3RWZXJzaW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAx
OTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFj
dFByb2RJbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgncmVh
Y3QvbGliL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0g
cmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdEluc3RhbmNlTWFw
ID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7XG5cbnZhciBnZXRIb3N0Q29tcG9uZW50
RnJvbUNvbXBvc2l0ZSA9IHJlcXVpcmUoJy4vZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUn
KTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3
YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vKipcbiAqIFJldHVybnMg
dGhlIERPTSBub2RlIHJlbmRlcmVkIGJ5IHRoaXMgZWxlbWVudC5cbiAqXG4gKiBTZWUgaHR0cHM6
Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3Rk
b20uZmluZGRvbW5vZGVcbiAqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fERPTUVsZW1lbnR9
IGNvbXBvbmVudE9yRWxlbWVudFxuICogQHJldHVybiB7P0RPTUVsZW1lbnR9IFRoZSByb290IG5v
ZGUgb2YgdGhpcyBlbGVtZW50LlxuICovXG5mdW5jdGlvbiBmaW5kRE9NTm9kZShjb21wb25lbnRP
ckVsZW1lbnQpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICB2YXIgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuICAgIGlmIChv
d25lciAhPT0gbnVsbCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcob3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyLCAnJXMgaXMgYWNj
ZXNzaW5nIGZpbmRET01Ob2RlIGluc2lkZSBpdHMgcmVuZGVyKCkuICcgKyAncmVuZGVyKCkgc2hv
dWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQgc3RhdGUuIEl0IHNob3VsZCAnICsg
J25ldmVyIGFjY2VzcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBzdGFsZSBkYXRhIGZyb20gdGhl
IHByZXZpb3VzICcgKyAncmVuZGVyLCBzdWNoIGFzIHJlZnMuIE1vdmUgdGhpcyBsb2dpYyB0byBj
b21wb25lbnREaWRNb3VudCBhbmQgJyArICdjb21wb25lbnREaWRVcGRhdGUgaW5zdGVhZC4nLCBv
d25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBvd25lci5f
d2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBpZiAoY29tcG9u
ZW50T3JFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoY29t
cG9uZW50T3JFbGVtZW50Lm5vZGVUeXBlID09PSAxKSB7XG4gICAgcmV0dXJuIGNvbXBvbmVudE9y
RWxlbWVudDtcbiAgfVxuXG4gIHZhciBpbnN0ID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQoY29tcG9u
ZW50T3JFbGVtZW50KTtcbiAgaWYgKGluc3QpIHtcbiAgICBpbnN0ID0gZ2V0SG9zdENvbXBvbmVu
dEZyb21Db21wb3NpdGUoaW5zdCk7XG4gICAgcmV0dXJuIGluc3QgPyBSZWFjdERPTUNvbXBvbmVu
dFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KSA6IG51bGw7XG4gIH1cblxuICBpZiAodHlw
ZW9mIGNvbXBvbmVudE9yRWxlbWVudC5yZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAhZmFs
c2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnZmluZERPTU5vZGUgd2FzIGNhbGxlZCBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50Licp
IDogX3Byb2RJbnZhcmlhbnQoJzQ0JykgOiB2b2lkIDA7XG4gIH0gZWxzZSB7XG4gICAgIWZhbHNl
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ0VsZW1lbnQgYXBwZWFycyB0byBiZSBuZWl0aGVyIFJlYWN0Q29tcG9uZW50IG5vciBET01O
b2RlIChrZXlzOiAlcyknLCBPYmplY3Qua2V5cyhjb21wb25lbnRPckVsZW1lbnQpKSA6IF9wcm9k
SW52YXJpYW50KCc0NScsIE9iamVjdC5rZXlzKGNvbXBvbmVudE9yRWxlbWVudCkpIDogdm9pZCAw
O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmluZERPTU5vZGU7XG5cblxuLy8vLy8vLy8v
Ly8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9t
L2xpYi9maW5kRE9NTm9kZS5qc1xuLy8gbW9kdWxlIGlkID0gMTkzXG4vLyBtb2R1bGUgY2h1bmtz
ID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBSZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG5cbm1vZHVsZS5leHBv
cnRzID0gUmVhY3RNb3VudC5yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjtcblxuXG4vLy8vLy8v
Ly8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1k
b20vbGliL3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyLmpzXG4vLyBtb2R1bGUgaWQgPSAxOTRc
bi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0IFN5bWJvbCBmcm9tICcuL19TeW1ib2wuanMn
O1xuaW1wb3J0IGdldFJhd1RhZyBmcm9tICcuL19nZXRSYXdUYWcuanMnO1xuaW1wb3J0IG9iamVj
dFRvU3RyaW5nIGZyb20gJy4vX29iamVjdFRvU3RyaW5nLmpzJztcblxuLyoqIGBPYmplY3QjdG9T
dHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxs
XScsXG4gICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXSc7XG5cbi8qKiBCdWls
dC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8g
U3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxl
bWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9u
bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRv
IHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5c
biAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkg
e1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRh
ZztcbiAgfVxuICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9i
amVjdCh2YWx1ZSkpXG4gICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgOiBvYmplY3RUb1N0cmlu
Zyh2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VHZXRUYWc7XG5cblxuXG4vLy8vLy8v
Ly8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rhc2gt
ZXMvX2Jhc2VHZXRUYWcuanNcbi8vIG1vZHVsZSBpZCA9IDE5NVxuLy8gbW9kdWxlIGNodW5rcyA9
IDAiLCJpbXBvcnQgZnJlZUdsb2JhbCBmcm9tICcuL19mcmVlR2xvYmFsLmpzJztcblxuLyoqIERl
dGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxm
ID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xu
XG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciBy
b290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgp
O1xuXG5leHBvcnQgZGVmYXVsdCByb290O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBX
RUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19yb290LmpzXG4vLyBt
b2R1bGUgaWQgPSAxOTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqIERldGVjdCBmcmVlIHZh
cmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9m
IGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0
ICYmIGdsb2JhbDtcblxuZXhwb3J0IGRlZmF1bHQgZnJlZUdsb2JhbDtcblxuXG5cbi8vLy8vLy8v
Ly8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1l
cy9fZnJlZUdsb2JhbC5qc1xuLy8gbW9kdWxlIGlkID0gMTk3XG4vLyBtb2R1bGUgY2h1bmtzID0g
MCIsImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1
aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnBy
b3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMu
ICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxu
LyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2Vj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50
b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0g
b2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAq
L1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5k
ZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Ag
d2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZh
dGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMg
e3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdl
dFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVl
LCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5c
biAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFy
IHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0
aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlm
IChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxz
ZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICBy
ZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRSYXdUYWc7XG5cblxuXG4vLy8v
Ly8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9sb2Rh
c2gtZXMvX2dldFJhd1RhZy5qc1xuLy8gbW9kdWxlIGlkID0gMTk4XG4vLyBtb2R1bGUgY2h1bmtz
ID0gMCIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBv
YmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZl
IHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMu
XG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xu
XG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90
b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRo
ZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29u
dmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAg
cmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5leHBvcnQgZGVm
YXVsdCBvYmplY3RUb1N0cmluZztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFD
SyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fb2JqZWN0VG9TdHJpbmcuanNc
bi8vIG1vZHVsZSBpZCA9IDE5OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJpbXBvcnQgb3ZlckFy
ZyBmcm9tICcuL19vdmVyQXJnLmpzJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMu
ICovXG52YXIgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9i
amVjdCk7XG5cbmV4cG9ydCBkZWZhdWx0IGdldFByb3RvdHlwZTtcblxuXG5cbi8vLy8vLy8vLy8v
Ly8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9f
Z2V0UHJvdG90eXBlLmpzXG4vLyBtb2R1bGUgaWQgPSAyMDBcbi8vIG1vZHVsZSBjaHVua3MgPSAw
IiwiLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3
aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFt
IHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rp
b259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0
aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVu
YywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVu
Yyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IG92ZXJBcmc7XG5c
blxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9k
dWxlcy9sb2Rhc2gtZXMvX292ZXJBcmcuanNcbi8vIG1vZHVsZSBpZCA9IDIwMVxuLy8gbW9kdWxl
IGNodW5rcyA9IDAiLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBB
IHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0
eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJP
ZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZh
bHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0
cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBs
ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlz
T2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RM
aWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwp
O1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4g
IHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxu
ZXhwb3J0IGRlZmF1bHQgaXNPYmplY3RMaWtlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4v
LyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzT2JqZWN0TGlr
ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5l
eHBvcnRzID0gcmVxdWlyZSgnLi9saWIvaW5kZXgnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8v
L1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3N5bWJvbC1vYnNlcnZhYmxl
L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyMDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3Vz
ZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxl
XCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3BvbnlmaWxsID0gcmVxdWlyZSgnLi9w
b255ZmlsbCcpO1xuXG52YXIgX3BvbnlmaWxsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Bv
bnlmaWxsKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJu
IG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52
YXIgcm9vdDsgLyogZ2xvYmFsIHdpbmRvdyAqL1xuXG5cbmlmICh0eXBlb2Ygc2VsZiAhPT0gJ3Vu
ZGVmaW5lZCcpIHtcbiAgcm9vdCA9IHNlbGY7XG59IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09
ICd1bmRlZmluZWQnKSB7XG4gIHJvb3QgPSB3aW5kb3c7XG59IGVsc2UgaWYgKHR5cGVvZiBnbG9i
YWwgIT09ICd1bmRlZmluZWQnKSB7XG4gIHJvb3QgPSBnbG9iYWw7XG59IGVsc2UgaWYgKHR5cGVv
ZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG4gIHJvb3QgPSBtb2R1bGU7XG59IGVsc2Uge1xu
ICByb290ID0gRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbn1cblxudmFyIHJlc3VsdCA9ICgw
LCBfcG9ueWZpbGwyWydkZWZhdWx0J10pKHJvb3QpO1xuZXhwb3J0c1snZGVmYXVsdCddID0gcmVz
dWx0O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9k
ZV9tb2R1bGVzL3N5bWJvbC1vYnNlcnZhYmxlL2xpYi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0g
MjA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obW9k
dWxlKSB7XHJcblx0aWYoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcclxuXHRcdG1vZHVsZS5k
ZXByZWNhdGUgPSBmdW5jdGlvbigpIHt9O1xyXG5cdFx0bW9kdWxlLnBhdGhzID0gW107XHJcblx0
XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcclxuXHRcdGlmKCFtb2R1
bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xyXG5cdFx0T2JqZWN0LmRlZmluZVBy
b3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xyXG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxy
XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcclxu
XHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBc
ImlkXCIsIHtcclxuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcclxuXHRcdFx0Z2V0OiBmdW5jdGlv
bigpIHtcclxuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xy
XG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XHJcblx0fVxyXG5cdHJldHVybiBtb2R1
bGU7XHJcbn07XHJcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJc
bi8vICh3ZWJwYWNrKS9idWlsZGluL21vZHVsZS5qc1xuLy8gbW9kdWxlIGlkID0gMjA1XG4vLyBt
b2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5
KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNb
J2RlZmF1bHQnXSA9IHN5bWJvbE9ic2VydmFibGVQb255ZmlsbDtcbmZ1bmN0aW9uIHN5bWJvbE9i
c2VydmFibGVQb255ZmlsbChyb290KSB7XG5cdHZhciByZXN1bHQ7XG5cdHZhciBfU3ltYm9sID0g
cm9vdC5TeW1ib2w7XG5cblx0aWYgKHR5cGVvZiBfU3ltYm9sID09PSAnZnVuY3Rpb24nKSB7XG5c
dFx0aWYgKF9TeW1ib2wub2JzZXJ2YWJsZSkge1xuXHRcdFx0cmVzdWx0ID0gX1N5bWJvbC5vYnNl
cnZhYmxlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXN1bHQgPSBfU3ltYm9sKCdvYnNlcnZhYmxl
Jyk7XG5cdFx0XHRfU3ltYm9sLm9ic2VydmFibGUgPSByZXN1bHQ7XG5cdFx0fVxuXHR9IGVsc2Ug
e1xuXHRcdHJlc3VsdCA9ICdAQG9ic2VydmFibGUnO1xuXHR9XG5cblx0cmV0dXJuIHJlc3VsdDtc
bn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2Rl
X21vZHVsZXMvc3ltYm9sLW9ic2VydmFibGUvbGliL3BvbnlmaWxsLmpzXG4vLyBtb2R1bGUgaWQg
PSAyMDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0IHsgQWN0aW9uVHlwZXMgfSBmcm9t
ICcuL2NyZWF0ZVN0b3JlJztcbmltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gJ2xvZGFzaC1lcy9p
c1BsYWluT2JqZWN0JztcbmltcG9ydCB3YXJuaW5nIGZyb20gJy4vdXRpbHMvd2FybmluZyc7XG5c
bmZ1bmN0aW9uIGdldFVuZGVmaW5lZFN0YXRlRXJyb3JNZXNzYWdlKGtleSwgYWN0aW9uKSB7XG4g
IHZhciBhY3Rpb25UeXBlID0gYWN0aW9uICYmIGFjdGlvbi50eXBlO1xuICB2YXIgYWN0aW9uTmFt
ZSA9IGFjdGlvblR5cGUgJiYgJ1wiJyArIGFjdGlvblR5cGUudG9TdHJpbmcoKSArICdcIicgfHwg
J2FuIGFjdGlvbic7XG5cbiAgcmV0dXJuICdHaXZlbiBhY3Rpb24gJyArIGFjdGlvbk5hbWUgKyAn
LCByZWR1Y2VyIFwiJyArIGtleSArICdcIiByZXR1cm5lZCB1bmRlZmluZWQuICcgKyAnVG8gaWdu
b3JlIGFuIGFjdGlvbiwgeW91IG11c3QgZXhwbGljaXRseSByZXR1cm4gdGhlIHByZXZpb3VzIHN0
YXRlLiAnICsgJ0lmIHlvdSB3YW50IHRoaXMgcmVkdWNlciB0byBob2xkIG5vIHZhbHVlLCB5b3Ug
Y2FuIHJldHVybiBudWxsIGluc3RlYWQgb2YgdW5kZWZpbmVkLic7XG59XG5cbmZ1bmN0aW9uIGdl
dFVuZXhwZWN0ZWRTdGF0ZVNoYXBlV2FybmluZ01lc3NhZ2UoaW5wdXRTdGF0ZSwgcmVkdWNlcnMs
IGFjdGlvbiwgdW5leHBlY3RlZEtleUNhY2hlKSB7XG4gIHZhciByZWR1Y2VyS2V5cyA9IE9iamVj
dC5rZXlzKHJlZHVjZXJzKTtcbiAgdmFyIGFyZ3VtZW50TmFtZSA9IGFjdGlvbiAmJiBhY3Rpb24u
dHlwZSA9PT0gQWN0aW9uVHlwZXMuSU5JVCA/ICdwcmVsb2FkZWRTdGF0ZSBhcmd1bWVudCBwYXNz
ZWQgdG8gY3JlYXRlU3RvcmUnIDogJ3ByZXZpb3VzIHN0YXRlIHJlY2VpdmVkIGJ5IHRoZSByZWR1
Y2VyJztcblxuICBpZiAocmVkdWNlcktleXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdT
dG9yZSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgcmVkdWNlci4gTWFrZSBzdXJlIHRoZSBhcmd1bWVu
dCBwYXNzZWQgJyArICd0byBjb21iaW5lUmVkdWNlcnMgaXMgYW4gb2JqZWN0IHdob3NlIHZhbHVl
cyBhcmUgcmVkdWNlcnMuJztcbiAgfVxuXG4gIGlmICghaXNQbGFpbk9iamVjdChpbnB1dFN0YXRl
KSkge1xuICAgIHJldHVybiAnVGhlICcgKyBhcmd1bWVudE5hbWUgKyAnIGhhcyB1bmV4cGVjdGVk
IHR5cGUgb2YgXCInICsge30udG9TdHJpbmcuY2FsbChpbnB1dFN0YXRlKS5tYXRjaCgvXFxzKFth
LXp8QS1aXSspLylbMV0gKyAnXCIuIEV4cGVjdGVkIGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCB3
aXRoIHRoZSBmb2xsb3dpbmcgJyArICgna2V5czogXCInICsgcmVkdWNlcktleXMuam9pbignXCIs
IFwiJykgKyAnXCInKTtcbiAgfVxuXG4gIHZhciB1bmV4cGVjdGVkS2V5cyA9IE9iamVjdC5rZXlz
KGlucHV0U3RhdGUpLmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuICFyZWR1Y2Vy
cy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmICF1bmV4cGVjdGVkS2V5Q2FjaGVba2V5XTtcbiAgfSk7
XG5cbiAgdW5leHBlY3RlZEtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdW5leHBl
Y3RlZEtleUNhY2hlW2tleV0gPSB0cnVlO1xuICB9KTtcblxuICBpZiAodW5leHBlY3RlZEtleXMu
bGVuZ3RoID4gMCkge1xuICAgIHJldHVybiAnVW5leHBlY3RlZCAnICsgKHVuZXhwZWN0ZWRLZXlz
Lmxlbmd0aCA+IDEgPyAna2V5cycgOiAna2V5JykgKyAnICcgKyAoJ1wiJyArIHVuZXhwZWN0ZWRL
ZXlzLmpvaW4oJ1wiLCBcIicpICsgJ1wiIGZvdW5kIGluICcgKyBhcmd1bWVudE5hbWUgKyAnLiAn
KSArICdFeHBlY3RlZCB0byBmaW5kIG9uZSBvZiB0aGUga25vd24gcmVkdWNlciBrZXlzIGluc3Rl
YWQ6ICcgKyAoJ1wiJyArIHJlZHVjZXJLZXlzLmpvaW4oJ1wiLCBcIicpICsgJ1wiLiBVbmV4cGVj
dGVkIGtleXMgd2lsbCBiZSBpZ25vcmVkLicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFJl
ZHVjZXJTaGFwZShyZWR1Y2Vycykge1xuICBPYmplY3Qua2V5cyhyZWR1Y2VycykuZm9yRWFjaChm
dW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIHJlZHVjZXIgPSByZWR1Y2Vyc1trZXldO1xuICAgIHZh
ciBpbml0aWFsU3RhdGUgPSByZWR1Y2VyKHVuZGVmaW5lZCwgeyB0eXBlOiBBY3Rpb25UeXBlcy5J
TklUIH0pO1xuXG4gICAgaWYgKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICd1bmRlZmluZWQnKSB7
XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZHVjZXIgXCInICsga2V5ICsgJ1wiIHJldHVybmVk
IHVuZGVmaW5lZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uICcgKyAnSWYgdGhlIHN0YXRlIHBhc3Nl
ZCB0byB0aGUgcmVkdWNlciBpcyB1bmRlZmluZWQsIHlvdSBtdXN0ICcgKyAnZXhwbGljaXRseSBy
ZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSAnICsgJ25vdCBi
ZSB1bmRlZmluZWQuIElmIHlvdSBkb25cXCd0IHdhbnQgdG8gc2V0IGEgdmFsdWUgZm9yIHRoaXMg
cmVkdWNlciwgJyArICd5b3UgY2FuIHVzZSBudWxsIGluc3RlYWQgb2YgdW5kZWZpbmVkLicpO1xu
ICAgIH1cblxuICAgIHZhciB0eXBlID0gJ0BAcmVkdXgvUFJPQkVfVU5LTk9XTl9BQ1RJT05fJyAr
IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg3KS5zcGxpdCgnJykuam9pbign
LicpO1xuICAgIGlmICh0eXBlb2YgcmVkdWNlcih1bmRlZmluZWQsIHsgdHlwZTogdHlwZSB9KSA9
PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNlciBcIicgKyBr
ZXkgKyAnXCIgcmV0dXJuZWQgdW5kZWZpbmVkIHdoZW4gcHJvYmVkIHdpdGggYSByYW5kb20gdHlw
ZS4gJyArICgnRG9uXFwndCB0cnkgdG8gaGFuZGxlICcgKyBBY3Rpb25UeXBlcy5JTklUICsgJyBv
ciBvdGhlciBhY3Rpb25zIGluIFwicmVkdXgvKlwiICcpICsgJ25hbWVzcGFjZS4gVGhleSBhcmUg
Y29uc2lkZXJlZCBwcml2YXRlLiBJbnN0ZWFkLCB5b3UgbXVzdCByZXR1cm4gdGhlICcgKyAnY3Vy
cmVudCBzdGF0ZSBmb3IgYW55IHVua25vd24gYWN0aW9ucywgdW5sZXNzIGl0IGlzIHVuZGVmaW5l
ZCwgJyArICdpbiB3aGljaCBjYXNlIHlvdSBtdXN0IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZSwg
cmVnYXJkbGVzcyBvZiB0aGUgJyArICdhY3Rpb24gdHlwZS4gVGhlIGluaXRpYWwgc3RhdGUgbWF5
IG5vdCBiZSB1bmRlZmluZWQsIGJ1dCBjYW4gYmUgbnVsbC4nKTtcbiAgICB9XG4gIH0pO1xufVxu
XG4vKipcbiAqIFR1cm5zIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIGRpZmZlcmVudCByZWR1
Y2VyIGZ1bmN0aW9ucywgaW50byBhIHNpbmdsZVxuICogcmVkdWNlciBmdW5jdGlvbi4gSXQgd2ls
bCBjYWxsIGV2ZXJ5IGNoaWxkIHJlZHVjZXIsIGFuZCBnYXRoZXIgdGhlaXIgcmVzdWx0c1xuICog
aW50byBhIHNpbmdsZSBzdGF0ZSBvYmplY3QsIHdob3NlIGtleXMgY29ycmVzcG9uZCB0byB0aGUg
a2V5cyBvZiB0aGUgcGFzc2VkXG4gKiByZWR1Y2VyIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcGFyYW0g
e09iamVjdH0gcmVkdWNlcnMgQW4gb2JqZWN0IHdob3NlIHZhbHVlcyBjb3JyZXNwb25kIHRvIGRp
ZmZlcmVudFxuICogcmVkdWNlciBmdW5jdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGNvbWJpbmVkIGlu
dG8gb25lLiBPbmUgaGFuZHkgd2F5IHRvIG9idGFpblxuICogaXQgaXMgdG8gdXNlIEVTNiBgaW1w
b3J0ICogYXMgcmVkdWNlcnNgIHN5bnRheC4gVGhlIHJlZHVjZXJzIG1heSBuZXZlciByZXR1cm5c
biAqIHVuZGVmaW5lZCBmb3IgYW55IGFjdGlvbi4gSW5zdGVhZCwgdGhleSBzaG91bGQgcmV0dXJu
IHRoZWlyIGluaXRpYWwgc3RhdGVcbiAqIGlmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlbSB3YXMg
dW5kZWZpbmVkLCBhbmQgdGhlIGN1cnJlbnQgc3RhdGUgZm9yIGFueVxuICogdW5yZWNvZ25pemVk
IGFjdGlvbi5cbiAqXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgcmVkdWNlciBmdW5jdGlvbiB0
aGF0IGludm9rZXMgZXZlcnkgcmVkdWNlciBpbnNpZGUgdGhlXG4gKiBwYXNzZWQgb2JqZWN0LCBh
bmQgYnVpbGRzIGEgc3RhdGUgb2JqZWN0IHdpdGggdGhlIHNhbWUgc2hhcGUuXG4gKi9cbmV4cG9y
dCBkZWZhdWx0IGZ1bmN0aW9uIGNvbWJpbmVSZWR1Y2VycyhyZWR1Y2Vycykge1xuICB2YXIgcmVk
dWNlcktleXMgPSBPYmplY3Qua2V5cyhyZWR1Y2Vycyk7XG4gIHZhciBmaW5hbFJlZHVjZXJzID0g
e307XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmVkdWNlcktleXMubGVuZ3RoOyBpKyspIHtcbiAg
ICB2YXIga2V5ID0gcmVkdWNlcktleXNbaV07XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiByZWR1Y2Vyc1trZXldID09
PSAndW5kZWZpbmVkJykge1xuICAgICAgICB3YXJuaW5nKCdObyByZWR1Y2VyIHByb3ZpZGVkIGZv
ciBrZXkgXCInICsga2V5ICsgJ1wiJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVv
ZiByZWR1Y2Vyc1trZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBmaW5hbFJlZHVjZXJzW2tl
eV0gPSByZWR1Y2Vyc1trZXldO1xuICAgIH1cbiAgfVxuICB2YXIgZmluYWxSZWR1Y2VyS2V5cyA9
IE9iamVjdC5rZXlzKGZpbmFsUmVkdWNlcnMpO1xuXG4gIHZhciB1bmV4cGVjdGVkS2V5Q2FjaGUg
PSB2b2lkIDA7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgdW5leHBlY3RlZEtleUNhY2hlID0ge307XG4gIH1cblxuICB2YXIgc2hhcGVBc3NlcnRp
b25FcnJvciA9IHZvaWQgMDtcbiAgdHJ5IHtcbiAgICBhc3NlcnRSZWR1Y2VyU2hhcGUoZmluYWxS
ZWR1Y2Vycyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBzaGFwZUFzc2VydGlvbkVycm9yID0gZTtc
biAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBjb21iaW5hdGlvbigpIHtcbiAgICB2YXIgc3RhdGUg
PSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFy
Z3VtZW50c1swXSA6IHt9O1xuICAgIHZhciBhY3Rpb24gPSBhcmd1bWVudHNbMV07XG5cbiAgICBp
ZiAoc2hhcGVBc3NlcnRpb25FcnJvcikge1xuICAgICAgdGhyb3cgc2hhcGVBc3NlcnRpb25FcnJv
cjtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgdmFyIHdhcm5pbmdNZXNzYWdlID0gZ2V0VW5leHBlY3RlZFN0YXRlU2hhcGVX
YXJuaW5nTWVzc2FnZShzdGF0ZSwgZmluYWxSZWR1Y2VycywgYWN0aW9uLCB1bmV4cGVjdGVkS2V5
Q2FjaGUpO1xuICAgICAgaWYgKHdhcm5pbmdNZXNzYWdlKSB7XG4gICAgICAgIHdhcm5pbmcod2Fy
bmluZ01lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBoYXNDaGFuZ2VkID0gZmFs
c2U7XG4gICAgdmFyIG5leHRTdGF0ZSA9IHt9O1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBm
aW5hbFJlZHVjZXJLZXlzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9rZXkgPSBmaW5hbFJl
ZHVjZXJLZXlzW19pXTtcbiAgICAgIHZhciByZWR1Y2VyID0gZmluYWxSZWR1Y2Vyc1tfa2V5XTtc
biAgICAgIHZhciBwcmV2aW91c1N0YXRlRm9yS2V5ID0gc3RhdGVbX2tleV07XG4gICAgICB2YXIg
bmV4dFN0YXRlRm9yS2V5ID0gcmVkdWNlcihwcmV2aW91c1N0YXRlRm9yS2V5LCBhY3Rpb24pO1xu
ICAgICAgaWYgKHR5cGVvZiBuZXh0U3RhdGVGb3JLZXkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAg
ICAgIHZhciBlcnJvck1lc3NhZ2UgPSBnZXRVbmRlZmluZWRTdGF0ZUVycm9yTWVzc2FnZShfa2V5
LCBhY3Rpb24pO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICAg
IH1cbiAgICAgIG5leHRTdGF0ZVtfa2V5XSA9IG5leHRTdGF0ZUZvcktleTtcbiAgICAgIGhhc0No
YW5nZWQgPSBoYXNDaGFuZ2VkIHx8IG5leHRTdGF0ZUZvcktleSAhPT0gcHJldmlvdXNTdGF0ZUZv
cktleTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0NoYW5nZWQgPyBuZXh0U3RhdGUgOiBzdGF0ZTtc
biAgfTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAu
L25vZGVfbW9kdWxlcy9yZWR1eC9lcy9jb21iaW5lUmVkdWNlcnMuanNcbi8vIG1vZHVsZSBpZCA9
IDIwN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJmdW5jdGlvbiBiaW5kQWN0aW9uQ3JlYXRvcihh
Y3Rpb25DcmVhdG9yLCBkaXNwYXRjaCkge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJl
dHVybiBkaXNwYXRjaChhY3Rpb25DcmVhdG9yLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKSk7
XG4gIH07XG59XG5cbi8qKlxuICogVHVybnMgYW4gb2JqZWN0IHdob3NlIHZhbHVlcyBhcmUgYWN0
aW9uIGNyZWF0b3JzLCBpbnRvIGFuIG9iamVjdCB3aXRoIHRoZVxuICogc2FtZSBrZXlzLCBidXQg
d2l0aCBldmVyeSBmdW5jdGlvbiB3cmFwcGVkIGludG8gYSBgZGlzcGF0Y2hgIGNhbGwgc28gdGhl
eVxuICogbWF5IGJlIGludm9rZWQgZGlyZWN0bHkuIFRoaXMgaXMganVzdCBhIGNvbnZlbmllbmNl
IG1ldGhvZCwgYXMgeW91IGNhbiBjYWxsXG4gKiBgc3RvcmUuZGlzcGF0Y2goTXlBY3Rpb25DcmVh
dG9ycy5kb1NvbWV0aGluZygpKWAgeW91cnNlbGYganVzdCBmaW5lLlxuICpcbiAqIEZvciBjb252
ZW5pZW5jZSwgeW91IGNhbiBhbHNvIHBhc3MgYSBzaW5nbGUgZnVuY3Rpb24gYXMgdGhlIGZpcnN0
IGFyZ3VtZW50LFxuICogYW5kIGdldCBhIGZ1bmN0aW9uIGluIHJldHVybi5cbiAqXG4gKiBAcGFy
YW0ge0Z1bmN0aW9ufE9iamVjdH0gYWN0aW9uQ3JlYXRvcnMgQW4gb2JqZWN0IHdob3NlIHZhbHVl
cyBhcmUgYWN0aW9uXG4gKiBjcmVhdG9yIGZ1bmN0aW9ucy4gT25lIGhhbmR5IHdheSB0byBvYnRh
aW4gaXQgaXMgdG8gdXNlIEVTNiBgaW1wb3J0ICogYXNgXG4gKiBzeW50YXguIFlvdSBtYXkgYWxz
byBwYXNzIGEgc2luZ2xlIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGRpc3Bh
dGNoIFRoZSBgZGlzcGF0Y2hgIGZ1bmN0aW9uIGF2YWlsYWJsZSBvbiB5b3VyIFJlZHV4XG4gKiBz
dG9yZS5cbiAqXG4gKiBAcmV0dXJucyB7RnVuY3Rpb258T2JqZWN0fSBUaGUgb2JqZWN0IG1pbWlj
a2luZyB0aGUgb3JpZ2luYWwgb2JqZWN0LCBidXQgd2l0aFxuICogZXZlcnkgYWN0aW9uIGNyZWF0
b3Igd3JhcHBlZCBpbnRvIHRoZSBgZGlzcGF0Y2hgIGNhbGwuIElmIHlvdSBwYXNzZWQgYVxuICog
ZnVuY3Rpb24gYXMgYGFjdGlvbkNyZWF0b3JzYCwgdGhlIHJldHVybiB2YWx1ZSB3aWxsIGFsc28g
YmUgYSBzaW5nbGVcbiAqIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBi
aW5kQWN0aW9uQ3JlYXRvcnMoYWN0aW9uQ3JlYXRvcnMsIGRpc3BhdGNoKSB7XG4gIGlmICh0eXBl
b2YgYWN0aW9uQ3JlYXRvcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gYmluZEFjdGlv
bkNyZWF0b3IoYWN0aW9uQ3JlYXRvcnMsIGRpc3BhdGNoKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Yg
YWN0aW9uQ3JlYXRvcnMgIT09ICdvYmplY3QnIHx8IGFjdGlvbkNyZWF0b3JzID09PSBudWxsKSB7
XG4gICAgdGhyb3cgbmV3IEVycm9yKCdiaW5kQWN0aW9uQ3JlYXRvcnMgZXhwZWN0ZWQgYW4gb2Jq
ZWN0IG9yIGEgZnVuY3Rpb24sIGluc3RlYWQgcmVjZWl2ZWQgJyArIChhY3Rpb25DcmVhdG9ycyA9
PT0gbnVsbCA/ICdudWxsJyA6IHR5cGVvZiBhY3Rpb25DcmVhdG9ycykgKyAnLiAnICsgJ0RpZCB5
b3Ugd3JpdGUgXCJpbXBvcnQgQWN0aW9uQ3JlYXRvcnMgZnJvbVwiIGluc3RlYWQgb2YgXCJpbXBv
cnQgKiBhcyBBY3Rpb25DcmVhdG9ycyBmcm9tXCI/Jyk7XG4gIH1cblxuICB2YXIga2V5cyA9IE9i
amVjdC5rZXlzKGFjdGlvbkNyZWF0b3JzKTtcbiAgdmFyIGJvdW5kQWN0aW9uQ3JlYXRvcnMgPSB7
fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtl
eSA9IGtleXNbaV07XG4gICAgdmFyIGFjdGlvbkNyZWF0b3IgPSBhY3Rpb25DcmVhdG9yc1trZXld
O1xuICAgIGlmICh0eXBlb2YgYWN0aW9uQ3JlYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAg
Ym91bmRBY3Rpb25DcmVhdG9yc1trZXldID0gYmluZEFjdGlvbkNyZWF0b3IoYWN0aW9uQ3JlYXRv
ciwgZGlzcGF0Y2gpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYm91bmRBY3Rpb25DcmVhdG9ycztc
bn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVf
bW9kdWxlcy9yZWR1eC9lcy9iaW5kQWN0aW9uQ3JlYXRvcnMuanNcbi8vIG1vZHVsZSBpZCA9IDIw
OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8
IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3Ro
OyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJj
ZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5
KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xu
XG5pbXBvcnQgY29tcG9zZSBmcm9tICcuL2NvbXBvc2UnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBz
dG9yZSBlbmhhbmNlciB0aGF0IGFwcGxpZXMgbWlkZGxld2FyZSB0byB0aGUgZGlzcGF0Y2ggbWV0
aG9kXG4gKiBvZiB0aGUgUmVkdXggc3RvcmUuIFRoaXMgaXMgaGFuZHkgZm9yIGEgdmFyaWV0eSBv
ZiB0YXNrcywgc3VjaCBhcyBleHByZXNzaW5nXG4gKiBhc3luY2hyb25vdXMgYWN0aW9ucyBpbiBh
IGNvbmNpc2UgbWFubmVyLCBvciBsb2dnaW5nIGV2ZXJ5IGFjdGlvbiBwYXlsb2FkLlxuICpcbiAq
IFNlZSBgcmVkdXgtdGh1bmtgIHBhY2thZ2UgYXMgYW4gZXhhbXBsZSBvZiB0aGUgUmVkdXggbWlk
ZGxld2FyZS5cbiAqXG4gKiBCZWNhdXNlIG1pZGRsZXdhcmUgaXMgcG90ZW50aWFsbHkgYXN5bmNo
cm9ub3VzLCB0aGlzIHNob3VsZCBiZSB0aGUgZmlyc3RcbiAqIHN0b3JlIGVuaGFuY2VyIGluIHRo
ZSBjb21wb3NpdGlvbiBjaGFpbi5cbiAqXG4gKiBOb3RlIHRoYXQgZWFjaCBtaWRkbGV3YXJlIHdp
bGwgYmUgZ2l2ZW4gdGhlIGBkaXNwYXRjaGAgYW5kIGBnZXRTdGF0ZWAgZnVuY3Rpb25zXG4gKiBh
cyBuYW1lZCBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIHsuLi5GdW5jdGlvbn0gbWlkZGxld2Fy
ZXMgVGhlIG1pZGRsZXdhcmUgY2hhaW4gdG8gYmUgYXBwbGllZC5cbiAqIEByZXR1cm5zIHtGdW5j
dGlvbn0gQSBzdG9yZSBlbmhhbmNlciBhcHBseWluZyB0aGUgbWlkZGxld2FyZS5cbiAqL1xuZXhw
b3J0IGRlZmF1bHQgZnVuY3Rpb24gYXBwbHlNaWRkbGV3YXJlKCkge1xuICBmb3IgKHZhciBfbGVu
ID0gYXJndW1lbnRzLmxlbmd0aCwgbWlkZGxld2FyZXMgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7
IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBtaWRkbGV3YXJlc1tfa2V5XSA9IGFyZ3VtZW50
c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoY3JlYXRlU3RvcmUpIHtcbiAgICBy
ZXR1cm4gZnVuY3Rpb24gKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlLCBlbmhhbmNlcikge1xuICAg
ICAgdmFyIHN0b3JlID0gY3JlYXRlU3RvcmUocmVkdWNlciwgcHJlbG9hZGVkU3RhdGUsIGVuaGFu
Y2VyKTtcbiAgICAgIHZhciBfZGlzcGF0Y2ggPSBzdG9yZS5kaXNwYXRjaDtcbiAgICAgIHZhciBj
aGFpbiA9IFtdO1xuXG4gICAgICB2YXIgbWlkZGxld2FyZUFQSSA9IHtcbiAgICAgICAgZ2V0U3Rh
dGU6IHN0b3JlLmdldFN0YXRlLFxuICAgICAgICBkaXNwYXRjaDogZnVuY3Rpb24gZGlzcGF0Y2go
YWN0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIF9kaXNwYXRjaChhY3Rpb24pO1xuICAgICAgICB9
XG4gICAgICB9O1xuICAgICAgY2hhaW4gPSBtaWRkbGV3YXJlcy5tYXAoZnVuY3Rpb24gKG1pZGRs
ZXdhcmUpIHtcbiAgICAgICAgcmV0dXJuIG1pZGRsZXdhcmUobWlkZGxld2FyZUFQSSk7XG4gICAg
ICB9KTtcbiAgICAgIF9kaXNwYXRjaCA9IGNvbXBvc2UuYXBwbHkodW5kZWZpbmVkLCBjaGFpbiko
c3RvcmUuZGlzcGF0Y2gpO1xuXG4gICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHN0b3JlLCB7XG4g
ICAgICAgIGRpc3BhdGNoOiBfZGlzcGF0Y2hcbiAgICAgIH0pO1xuICAgIH07XG4gIH07XG59XG5c
blxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVs
ZXMvcmVkdXgvZXMvYXBwbHlNaWRkbGV3YXJlLmpzXG4vLyBtb2R1bGUgaWQgPSAyMDlcbi8vIG1v
ZHVsZSBjaHVua3MgPSAwIiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25z
dHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJv
dyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9
IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBp
ZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBp
bml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxs
ICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5j
dGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywg
c3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBz
dXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNz
aW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1
cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFz
cyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xh
c3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVl
IH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0
UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0g
c3VwZXJDbGFzczsgfVxuXG5pbXBvcnQgeyBDb21wb25lbnQsIENoaWxkcmVuIH0gZnJvbSAncmVh
Y3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IHN0b3Jl
U2hhcGUsIHN1YnNjcmlwdGlvblNoYXBlIH0gZnJvbSAnLi4vdXRpbHMvUHJvcFR5cGVzJztcbmlt
cG9ydCB3YXJuaW5nIGZyb20gJy4uL3V0aWxzL3dhcm5pbmcnO1xuXG52YXIgZGlkV2FybkFib3V0
UmVjZWl2aW5nU3RvcmUgPSBmYWxzZTtcbmZ1bmN0aW9uIHdhcm5BYm91dFJlY2VpdmluZ1N0b3Jl
KCkge1xuICBpZiAoZGlkV2FybkFib3V0UmVjZWl2aW5nU3RvcmUpIHtcbiAgICByZXR1cm47XG4g
IH1cbiAgZGlkV2FybkFib3V0UmVjZWl2aW5nU3RvcmUgPSB0cnVlO1xuXG4gIHdhcm5pbmcoJzxQ
cm92aWRlcj4gZG9lcyBub3Qgc3VwcG9ydCBjaGFuZ2luZyBgc3RvcmVgIG9uIHRoZSBmbHkuICcg
KyAnSXQgaXMgbW9zdCBsaWtlbHkgdGhhdCB5b3Ugc2VlIHRoaXMgZXJyb3IgYmVjYXVzZSB5b3Ug
dXBkYXRlZCB0byAnICsgJ1JlZHV4IDIueCBhbmQgUmVhY3QgUmVkdXggMi54IHdoaWNoIG5vIGxv
bmdlciBob3QgcmVsb2FkIHJlZHVjZXJzICcgKyAnYXV0b21hdGljYWxseS4gU2VlIGh0dHBzOi8v
Z2l0aHViLmNvbS9yZWFjdGpzL3JlYWN0LXJlZHV4L3JlbGVhc2VzLycgKyAndGFnL3YyLjAuMCBm
b3IgdGhlIG1pZ3JhdGlvbiBpbnN0cnVjdGlvbnMuJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBj
cmVhdGVQcm92aWRlcigpIHtcbiAgdmFyIF9Qcm92aWRlciRjaGlsZENvbnRleDtcblxuICB2YXIg
c3RvcmVLZXkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVm
aW5lZCA/IGFyZ3VtZW50c1swXSA6ICdzdG9yZSc7XG4gIHZhciBzdWJLZXkgPSBhcmd1bWVudHNb
MV07XG5cbiAgdmFyIHN1YnNjcmlwdGlvbktleSA9IHN1YktleSB8fCBzdG9yZUtleSArICdTdWJz
Y3JpcHRpb24nO1xuXG4gIHZhciBQcm92aWRlciA9IGZ1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4g
ICAgX2luaGVyaXRzKFByb3ZpZGVyLCBfQ29tcG9uZW50KTtcblxuICAgIFByb3ZpZGVyLnByb3Rv
dHlwZS5nZXRDaGlsZENvbnRleHQgPSBmdW5jdGlvbiBnZXRDaGlsZENvbnRleHQoKSB7XG4gICAg
ICB2YXIgX3JlZjtcblxuICAgICAgcmV0dXJuIF9yZWYgPSB7fSwgX3JlZltzdG9yZUtleV0gPSB0
aGlzW3N0b3JlS2V5XSwgX3JlZltzdWJzY3JpcHRpb25LZXldID0gbnVsbCwgX3JlZjtcbiAgICB9
O1xuXG4gICAgZnVuY3Rpb24gUHJvdmlkZXIocHJvcHMsIGNvbnRleHQpIHtcbiAgICAgIF9jbGFz
c0NhbGxDaGVjayh0aGlzLCBQcm92aWRlcik7XG5cbiAgICAgIHZhciBfdGhpcyA9IF9wb3NzaWJs
ZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9Db21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcywgY29u
dGV4dCkpO1xuXG4gICAgICBfdGhpc1tzdG9yZUtleV0gPSBwcm9wcy5zdG9yZTtcbiAgICAgIHJl
dHVybiBfdGhpcztcbiAgICB9XG5cbiAgICBQcm92aWRlci5wcm90b3R5cGUucmVuZGVyID0gZnVu
Y3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIENoaWxkcmVuLm9ubHkodGhpcy5wcm9wcy5j
aGlsZHJlbik7XG4gICAgfTtcblxuICAgIHJldHVybiBQcm92aWRlcjtcbiAgfShDb21wb25lbnQp
O1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
UHJvdmlkZXIucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPSBmdW5jdGlvbiAo
bmV4dFByb3BzKSB7XG4gICAgICBpZiAodGhpc1tzdG9yZUtleV0gIT09IG5leHRQcm9wcy5zdG9y
ZSkge1xuICAgICAgICB3YXJuQWJvdXRSZWNlaXZpbmdTdG9yZSgpO1xuICAgICAgfVxuICAgIH07
XG4gIH1cblxuICBQcm92aWRlci5wcm9wVHlwZXMgPSB7XG4gICAgc3RvcmU6IHN0b3JlU2hhcGUu
aXNSZXF1aXJlZCxcbiAgICBjaGlsZHJlbjogUHJvcFR5cGVzLmVsZW1lbnQuaXNSZXF1aXJlZFxu
ICB9O1xuICBQcm92aWRlci5jaGlsZENvbnRleHRUeXBlcyA9IChfUHJvdmlkZXIkY2hpbGRDb250
ZXggPSB7fSwgX1Byb3ZpZGVyJGNoaWxkQ29udGV4W3N0b3JlS2V5XSA9IHN0b3JlU2hhcGUuaXNS
ZXF1aXJlZCwgX1Byb3ZpZGVyJGNoaWxkQ29udGV4W3N1YnNjcmlwdGlvbktleV0gPSBzdWJzY3Jp
cHRpb25TaGFwZSwgX1Byb3ZpZGVyJGNoaWxkQ29udGV4KTtcblxuICByZXR1cm4gUHJvdmlkZXI7
XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVByb3ZpZGVyKCk7XG5cblxuLy8vLy8vLy8vLy8v
Ly8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgv
ZXMvY29tcG9uZW50cy9Qcm92aWRlci5qc1xuLy8gbW9kdWxlIGlkID0gMjEwXG4vLyBtb2R1bGUg
Y2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0Jztc
blxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7
XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgUmVh
Y3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcp
O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3Bz
LCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0
KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8v
IEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtc
biAgICB9XG4gICAgaW52YXJpYW50KFxuICAgICAgZmFsc2UsXG4gICAgICAnQ2FsbGluZyBQcm9w
VHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10
eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygp
IHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2Ut
Y2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGlt
O1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJ
bXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZl
cnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9w
VHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBz
aGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBz
aGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBn
ZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAg
ICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGlt
LFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbVxuICB9O1xuXG4g
IFJlYWN0UHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzID0gZW1wdHlGdW5jdGlvbjtcbiAgUmVhY3RQ
cm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJv
cFR5cGVzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJc
bi8vIC4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpz
XG4vLyBtb2R1bGUgaWQgPSAyMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5
cmlnaHQgMjAxNSwgWWFob28hIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhl
IE5ldyBCU0QgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0
ZXJtcy5cbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUkVBQ1RfU1RBVElDUyA9IHtcbiAgICBj
aGlsZENvbnRleHRUeXBlczogdHJ1ZSxcbiAgICBjb250ZXh0VHlwZXM6IHRydWUsXG4gICAgZGVm
YXVsdFByb3BzOiB0cnVlLFxuICAgIGRpc3BsYXlOYW1lOiB0cnVlLFxuICAgIGdldERlZmF1bHRQ
cm9wczogdHJ1ZSxcbiAgICBtaXhpbnM6IHRydWUsXG4gICAgcHJvcFR5cGVzOiB0cnVlLFxuICAg
IHR5cGU6IHRydWVcbn07XG5cbnZhciBLTk9XTl9TVEFUSUNTID0ge1xuICBuYW1lOiB0cnVlLFxu
ICBsZW5ndGg6IHRydWUsXG4gIHByb3RvdHlwZTogdHJ1ZSxcbiAgY2FsbGVyOiB0cnVlLFxuICBj
YWxsZWU6IHRydWUsXG4gIGFyZ3VtZW50czogdHJ1ZSxcbiAgYXJpdHk6IHRydWVcbn07XG5cbnZh
ciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBnZXRPd25Qcm9w
ZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7XG52YXIgZ2V0T3duUHJvcGVy
dHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIGdl
dFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xudmFyIG9iamVjdFByb3RvdHlw
ZSA9IGdldFByb3RvdHlwZU9mICYmIGdldFByb3RvdHlwZU9mKE9iamVjdCk7XG5cbm1vZHVsZS5l
eHBvcnRzID0gZnVuY3Rpb24gaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBz
b3VyY2VDb21wb25lbnQsIGJsYWNrbGlzdCkge1xuICAgIGlmICh0eXBlb2Ygc291cmNlQ29tcG9u
ZW50ICE9PSAnc3RyaW5nJykgeyAvLyBkb24ndCBob2lzdCBvdmVyIHN0cmluZyAoaHRtbCkgY29t
cG9uZW50c1xuXG4gICAgICAgIGlmIChvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgICAgICAgIHZh
ciBpbmhlcml0ZWRDb21wb25lbnQgPSBnZXRQcm90b3R5cGVPZihzb3VyY2VDb21wb25lbnQpO1xu
ICAgICAgICAgICAgaWYgKGluaGVyaXRlZENvbXBvbmVudCAmJiBpbmhlcml0ZWRDb21wb25lbnQg
IT09IG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgICAgICAgICAgIGhvaXN0Tm9uUmVhY3RTdGF0
aWNzKHRhcmdldENvbXBvbmVudCwgaW5oZXJpdGVkQ29tcG9uZW50LCBibGFja2xpc3QpO1xuICAg
ICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0
eU5hbWVzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICAgICAgaWYgKGdldE93blByb3BlcnR5U3lt
Ym9scykge1xuICAgICAgICAgICAga2V5cyA9IGtleXMuY29uY2F0KGdldE93blByb3BlcnR5U3lt
Ym9scyhzb3VyY2VDb21wb25lbnQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNb
aV07XG4gICAgICAgICAgICBpZiAoIVJFQUNUX1NUQVRJQ1Nba2V5XSAmJiAhS05PV05fU1RBVElD
U1trZXldICYmICghYmxhY2tsaXN0IHx8ICFibGFja2xpc3Rba2V5XSkpIHtcbiAgICAgICAgICAg
ICAgICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2VDb21w
b25lbnQsIGtleSk7XG4gICAgICAgICAgICAgICAgdHJ5IHsgLy8gQXZvaWQgZmFpbHVyZXMgZnJv
bSByZWFkLW9ubHkgcHJvcGVydGllc1xuICAgICAgICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0
eSh0YXJnZXRDb21wb25lbnQsIGtleSwgZGVzY3JpcHRvcik7XG4gICAgICAgICAgICAgICAgfSBj
YXRjaCAoZSkge31cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0
YXJnZXRDb21wb25lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldENvbXBvbmVudDtcbn07
XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVf
bW9kdWxlcy9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0g
MjEyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbid1
c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBVc2UgaW52YXJpYW50KCkgdG8gYXNzZXJ0IHN0YXRlIHdo
aWNoIHlvdXIgcHJvZ3JhbSBhc3N1bWVzIHRvIGJlIHRydWUuXG4gKlxuICogUHJvdmlkZSBzcHJp
bnRmLXN0eWxlIGZvcm1hdCAob25seSAlcyBpcyBzdXBwb3J0ZWQpIGFuZCBhcmd1bWVudHNcbiAq
IHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBicm9rZSBhbmQgd2hhdCB5b3Ugd2Vy
ZVxuICogZXhwZWN0aW5nLlxuICpcbiAqIFRoZSBpbnZhcmlhbnQgbWVzc2FnZSB3aWxsIGJlIHN0
cmlwcGVkIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgaW52YXJpYW50XG4gKiB3aWxsIHJlbWFpbiB0
byBlbnN1cmUgbG9naWMgZG9lcyBub3QgZGlmZmVyIGluIHByb2R1Y3Rpb24uXG4gKi9cblxudmFy
IGludmFyaWFudCA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgZm9ybWF0LCBhLCBiLCBjLCBkLCBlLCBm
KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
aWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFy
aWFudCByZXF1aXJlcyBhbiBlcnJvciBtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgfVxuICB9XG5c
biAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB2YXIgZXJyb3I7XG4gICAgaWYgKGZvcm1hdCA9PT0g
dW5kZWZpbmVkKSB7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgJ01pbmlmaWVk
IGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50
ICcgK1xuICAgICAgICAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwg
aGVscGZ1bCB3YXJuaW5ncy4nXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYXJn
cyA9IFthLCBiLCBjLCBkLCBlLCBmXTtcbiAgICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgICBl
cnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9u
KCkgeyByZXR1cm4gYXJnc1thcmdJbmRleCsrXTsgfSlcbiAgICAgICk7XG4gICAgICBlcnJvci5u
YW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIH1cblxuICAgIGVycm9yLmZyYW1lc1Rv
UG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCBpbnZhcmlhbnQncyBvd24gZnJhbWVcbiAg
ICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbnZhcmlhbnQ7XG5c
blxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9k
dWxlcy9pbnZhcmlhbnQvYnJvd3Nlci5qc1xuLy8gbW9kdWxlIGlkID0gMjEzXG4vLyBtb2R1bGUg
Y2h1bmtzID0gMCIsImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0
b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3
IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5c
bi8vIGVuY2Fwc3VsYXRlcyB0aGUgc3Vic2NyaXB0aW9uIGxvZ2ljIGZvciBjb25uZWN0aW5nIGEg
Y29tcG9uZW50IHRvIHRoZSByZWR1eCBzdG9yZSwgYXNcbi8vIHdlbGwgYXMgbmVzdGluZyBzdWJz
Y3JpcHRpb25zIG9mIGRlc2NlbmRhbnQgY29tcG9uZW50cywgc28gdGhhdCB3ZSBjYW4gZW5zdXJl
IHRoZVxuLy8gYW5jZXN0b3IgY29tcG9uZW50cyByZS1yZW5kZXIgYmVmb3JlIGRlc2NlbmRhbnRz
XG5cbnZhciBDTEVBUkVEID0gbnVsbDtcbnZhciBudWxsTGlzdGVuZXJzID0ge1xuICBub3RpZnk6
IGZ1bmN0aW9uIG5vdGlmeSgpIHt9XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVMaXN0ZW5lckNvbGxl
Y3Rpb24oKSB7XG4gIC8vIHRoZSBjdXJyZW50L25leHQgcGF0dGVybiBpcyBjb3BpZWQgZnJvbSBy
ZWR1eCdzIGNyZWF0ZVN0b3JlIGNvZGUuXG4gIC8vIFRPRE86IHJlZmFjdG9yK2V4cG9zZSB0aGF0
IGNvZGUgdG8gYmUgcmV1c2FibGUgaGVyZT9cbiAgdmFyIGN1cnJlbnQgPSBbXTtcbiAgdmFyIG5l
eHQgPSBbXTtcblxuICByZXR1cm4ge1xuICAgIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpIHtcbiAg
ICAgIG5leHQgPSBDTEVBUkVEO1xuICAgICAgY3VycmVudCA9IENMRUFSRUQ7XG4gICAgfSxcbiAg
ICBub3RpZnk6IGZ1bmN0aW9uIG5vdGlmeSgpIHtcbiAgICAgIHZhciBsaXN0ZW5lcnMgPSBjdXJy
ZW50ID0gbmV4dDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsg
aSsrKSB7XG4gICAgICAgIGxpc3RlbmVyc1tpXSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0
OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9LFxuICAgIHN1YnNj
cmliZTogZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgICB2YXIgaXNTdWJzY3Jp
YmVkID0gdHJ1ZTtcbiAgICAgIGlmIChuZXh0ID09PSBjdXJyZW50KSBuZXh0ID0gY3VycmVudC5z
bGljZSgpO1xuICAgICAgbmV4dC5wdXNoKGxpc3RlbmVyKTtcblxuICAgICAgcmV0dXJuIGZ1bmN0
aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgICAgICBpZiAoIWlzU3Vic2NyaWJlZCB8fCBjdXJyZW50
ID09PSBDTEVBUkVEKSByZXR1cm47XG4gICAgICAgIGlzU3Vic2NyaWJlZCA9IGZhbHNlO1xuXG4g
ICAgICAgIGlmIChuZXh0ID09PSBjdXJyZW50KSBuZXh0ID0gY3VycmVudC5zbGljZSgpO1xuICAg
ICAgICBuZXh0LnNwbGljZShuZXh0LmluZGV4T2YobGlzdGVuZXIpLCAxKTtcbiAgICAgIH07XG4g
ICAgfVxuICB9O1xufVxuXG52YXIgU3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gKCkge1xuICBmdW5j
dGlvbiBTdWJzY3JpcHRpb24oc3RvcmUsIHBhcmVudFN1Yiwgb25TdGF0ZUNoYW5nZSkge1xuICAg
IF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdWJzY3JpcHRpb24pO1xuXG4gICAgdGhpcy5zdG9yZSA9
IHN0b3JlO1xuICAgIHRoaXMucGFyZW50U3ViID0gcGFyZW50U3ViO1xuICAgIHRoaXMub25TdGF0
ZUNoYW5nZSA9IG9uU3RhdGVDaGFuZ2U7XG4gICAgdGhpcy51bnN1YnNjcmliZSA9IG51bGw7XG4g
ICAgdGhpcy5saXN0ZW5lcnMgPSBudWxsTGlzdGVuZXJzO1xuICB9XG5cbiAgU3Vic2NyaXB0aW9u
LnByb3RvdHlwZS5hZGROZXN0ZWRTdWIgPSBmdW5jdGlvbiBhZGROZXN0ZWRTdWIobGlzdGVuZXIp
IHtcbiAgICB0aGlzLnRyeVN1YnNjcmliZSgpO1xuICAgIHJldHVybiB0aGlzLmxpc3RlbmVycy5z
dWJzY3JpYmUobGlzdGVuZXIpO1xuICB9O1xuXG4gIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUubm90
aWZ5TmVzdGVkU3VicyA9IGZ1bmN0aW9uIG5vdGlmeU5lc3RlZFN1YnMoKSB7XG4gICAgdGhpcy5s
aXN0ZW5lcnMubm90aWZ5KCk7XG4gIH07XG5cbiAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5pc1N1
YnNjcmliZWQgPSBmdW5jdGlvbiBpc1N1YnNjcmliZWQoKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4o
dGhpcy51bnN1YnNjcmliZSk7XG4gIH07XG5cbiAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS50cnlT
dWJzY3JpYmUgPSBmdW5jdGlvbiB0cnlTdWJzY3JpYmUoKSB7XG4gICAgaWYgKCF0aGlzLnVuc3Vi
c2NyaWJlKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlID0gdGhpcy5wYXJlbnRTdWIgPyB0aGlz
LnBhcmVudFN1Yi5hZGROZXN0ZWRTdWIodGhpcy5vblN0YXRlQ2hhbmdlKSA6IHRoaXMuc3RvcmUu
c3Vic2NyaWJlKHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICAgIHRoaXMubGlzdGVuZXJzID0g
Y3JlYXRlTGlzdGVuZXJDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9O1xuXG4gIFN1YnNjcmlwdGlv
bi5wcm90b3R5cGUudHJ5VW5zdWJzY3JpYmUgPSBmdW5jdGlvbiB0cnlVbnN1YnNjcmliZSgpIHtc
biAgICBpZiAodGhpcy51bnN1YnNjcmliZSkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xu
ICAgICAgdGhpcy51bnN1YnNjcmliZSA9IG51bGw7XG4gICAgICB0aGlzLmxpc3RlbmVycy5jbGVh
cigpO1xuICAgICAgdGhpcy5saXN0ZW5lcnMgPSBudWxsTGlzdGVuZXJzO1xuICAgIH1cbiAgfTtc
blxuICByZXR1cm4gU3Vic2NyaXB0aW9uO1xufSgpO1xuXG5leHBvcnQgeyBTdWJzY3JpcHRpb24g
YXMgZGVmYXVsdCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJc
bi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL3V0aWxzL1N1YnNjcmlwdGlvbi5qc1xu
Ly8gbW9kdWxlIGlkID0gMjE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBfZXh0ZW5kcyA9
IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8
IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3Ig
KHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5
LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJl
dHVybiB0YXJnZXQ7IH07XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhvYmos
IGtleXMpIHsgdmFyIHRhcmdldCA9IHt9OyBmb3IgKHZhciBpIGluIG9iaikgeyBpZiAoa2V5cy5p
bmRleE9mKGkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJv
cGVydHkuY2FsbChvYmosIGkpKSBjb250aW51ZTsgdGFyZ2V0W2ldID0gb2JqW2ldOyB9IHJldHVy
biB0YXJnZXQ7IH1cblxuaW1wb3J0IGNvbm5lY3RBZHZhbmNlZCBmcm9tICcuLi9jb21wb25lbnRz
L2Nvbm5lY3RBZHZhbmNlZCc7XG5pbXBvcnQgc2hhbGxvd0VxdWFsIGZyb20gJy4uL3V0aWxzL3No
YWxsb3dFcXVhbCc7XG5pbXBvcnQgZGVmYXVsdE1hcERpc3BhdGNoVG9Qcm9wc0ZhY3RvcmllcyBm
cm9tICcuL21hcERpc3BhdGNoVG9Qcm9wcyc7XG5pbXBvcnQgZGVmYXVsdE1hcFN0YXRlVG9Qcm9w
c0ZhY3RvcmllcyBmcm9tICcuL21hcFN0YXRlVG9Qcm9wcyc7XG5pbXBvcnQgZGVmYXVsdE1lcmdl
UHJvcHNGYWN0b3JpZXMgZnJvbSAnLi9tZXJnZVByb3BzJztcbmltcG9ydCBkZWZhdWx0U2VsZWN0
b3JGYWN0b3J5IGZyb20gJy4vc2VsZWN0b3JGYWN0b3J5JztcblxuLypcbiAgY29ubmVjdCBpcyBh
IGZhY2FkZSBvdmVyIGNvbm5lY3RBZHZhbmNlZC4gSXQgdHVybnMgaXRzIGFyZ3MgaW50byBhIGNv
bXBhdGlibGVcbiAgc2VsZWN0b3JGYWN0b3J5LCB3aGljaCBoYXMgdGhlIHNpZ25hdHVyZTpcblxu
ICAgIChkaXNwYXRjaCwgb3B0aW9ucykgPT4gKG5leHRTdGF0ZSwgbmV4dE93blByb3BzKSA9PiBu
ZXh0RmluYWxQcm9wc1xuICBcbiAgY29ubmVjdCBwYXNzZXMgaXRzIGFyZ3MgdG8gY29ubmVjdEFk
dmFuY2VkIGFzIG9wdGlvbnMsIHdoaWNoIHdpbGwgaW4gdHVybiBwYXNzIHRoZW0gdG9cbiAgc2Vs
ZWN0b3JGYWN0b3J5IGVhY2ggdGltZSBhIENvbm5lY3QgY29tcG9uZW50IGluc3RhbmNlIGlzIGlu
c3RhbnRpYXRlZCBvciBob3QgcmVsb2FkZWQuXG5cbiAgc2VsZWN0b3JGYWN0b3J5IHJldHVybnMg
YSBmaW5hbCBwcm9wcyBzZWxlY3RvciBmcm9tIGl0cyBtYXBTdGF0ZVRvUHJvcHMsXG4gIG1hcFN0
YXRlVG9Qcm9wc0ZhY3RvcmllcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJv
cHNGYWN0b3JpZXMsIG1lcmdlUHJvcHMsXG4gIG1lcmdlUHJvcHNGYWN0b3JpZXMsIGFuZCBwdXJl
IGFyZ3MuXG5cbiAgVGhlIHJlc3VsdGluZyBmaW5hbCBwcm9wcyBzZWxlY3RvciBpcyBjYWxsZWQg
YnkgdGhlIENvbm5lY3QgY29tcG9uZW50IGluc3RhbmNlIHdoZW5ldmVyXG4gIGl0IHJlY2VpdmVz
IG5ldyBwcm9wcyBvciBzdG9yZSBzdGF0ZS5cbiAqL1xuXG5mdW5jdGlvbiBtYXRjaChhcmcsIGZh
Y3RvcmllcywgbmFtZSkge1xuICBmb3IgKHZhciBpID0gZmFjdG9yaWVzLmxlbmd0aCAtIDE7IGkg
Pj0gMDsgaS0tKSB7XG4gICAgdmFyIHJlc3VsdCA9IGZhY3Rvcmllc1tpXShhcmcpO1xuICAgIGlm
IChyZXN1bHQpIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGRpc3Bh
dGNoLCBvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIG9mIHR5
cGUgJyArIHR5cGVvZiBhcmcgKyAnIGZvciAnICsgbmFtZSArICcgYXJndW1lbnQgd2hlbiBjb25u
ZWN0aW5nIGNvbXBvbmVudCAnICsgb3B0aW9ucy53cmFwcGVkQ29tcG9uZW50TmFtZSArICcuJyk7
XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0cmljdEVxdWFsKGEsIGIpIHtcbiAgcmV0dXJuIGEgPT09
IGI7XG59XG5cbi8vIGNyZWF0ZUNvbm5lY3Qgd2l0aCBkZWZhdWx0IGFyZ3MgYnVpbGRzIHRoZSAn
b2ZmaWNpYWwnIGNvbm5lY3QgYmVoYXZpb3IuIENhbGxpbmcgaXQgd2l0aFxuLy8gZGlmZmVyZW50
IG9wdGlvbnMgb3BlbnMgdXAgc29tZSB0ZXN0aW5nIGFuZCBleHRlbnNpYmlsaXR5IHNjZW5hcmlv
c1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbm5lY3QoKSB7XG4gIHZhciBfcmVmID0gYXJndW1l
bnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNb
MF0gOiB7fSxcbiAgICAgIF9yZWYkY29ubmVjdEhPQyA9IF9yZWYuY29ubmVjdEhPQyxcbiAgICAg
IGNvbm5lY3RIT0MgPSBfcmVmJGNvbm5lY3RIT0MgPT09IHVuZGVmaW5lZCA/IGNvbm5lY3RBZHZh
bmNlZCA6IF9yZWYkY29ubmVjdEhPQyxcbiAgICAgIF9yZWYkbWFwU3RhdGVUb1Byb3BzRiA9IF9y
ZWYubWFwU3RhdGVUb1Byb3BzRmFjdG9yaWVzLFxuICAgICAgbWFwU3RhdGVUb1Byb3BzRmFjdG9y
aWVzID0gX3JlZiRtYXBTdGF0ZVRvUHJvcHNGID09PSB1bmRlZmluZWQgPyBkZWZhdWx0TWFwU3Rh
dGVUb1Byb3BzRmFjdG9yaWVzIDogX3JlZiRtYXBTdGF0ZVRvUHJvcHNGLFxuICAgICAgX3JlZiRt
YXBEaXNwYXRjaFRvUHJvID0gX3JlZi5tYXBEaXNwYXRjaFRvUHJvcHNGYWN0b3JpZXMsXG4gICAg
ICBtYXBEaXNwYXRjaFRvUHJvcHNGYWN0b3JpZXMgPSBfcmVmJG1hcERpc3BhdGNoVG9Qcm8gPT09
IHVuZGVmaW5lZCA/IGRlZmF1bHRNYXBEaXNwYXRjaFRvUHJvcHNGYWN0b3JpZXMgOiBfcmVmJG1h
cERpc3BhdGNoVG9Qcm8sXG4gICAgICBfcmVmJG1lcmdlUHJvcHNGYWN0b3IgPSBfcmVmLm1lcmdl
UHJvcHNGYWN0b3JpZXMsXG4gICAgICBtZXJnZVByb3BzRmFjdG9yaWVzID0gX3JlZiRtZXJnZVBy
b3BzRmFjdG9yID09PSB1bmRlZmluZWQgPyBkZWZhdWx0TWVyZ2VQcm9wc0ZhY3RvcmllcyA6IF9y
ZWYkbWVyZ2VQcm9wc0ZhY3RvcixcbiAgICAgIF9yZWYkc2VsZWN0b3JGYWN0b3J5ID0gX3JlZi5z
ZWxlY3RvckZhY3RvcnksXG4gICAgICBzZWxlY3RvckZhY3RvcnkgPSBfcmVmJHNlbGVjdG9yRmFj
dG9yeSA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdFNlbGVjdG9yRmFjdG9yeSA6IF9yZWYkc2VsZWN0
b3JGYWN0b3J5O1xuXG4gIHJldHVybiBmdW5jdGlvbiBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywg
bWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzKSB7XG4gICAgdmFyIF9yZWYyID0gYXJndW1l
bnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNb
M10gOiB7fSxcbiAgICAgICAgX3JlZjIkcHVyZSA9IF9yZWYyLnB1cmUsXG4gICAgICAgIHB1cmUg
PSBfcmVmMiRwdXJlID09PSB1bmRlZmluZWQgPyB0cnVlIDogX3JlZjIkcHVyZSxcbiAgICAgICAg
X3JlZjIkYXJlU3RhdGVzRXF1YWwgPSBfcmVmMi5hcmVTdGF0ZXNFcXVhbCxcbiAgICAgICAgYXJl
U3RhdGVzRXF1YWwgPSBfcmVmMiRhcmVTdGF0ZXNFcXVhbCA9PT0gdW5kZWZpbmVkID8gc3RyaWN0
RXF1YWwgOiBfcmVmMiRhcmVTdGF0ZXNFcXVhbCxcbiAgICAgICAgX3JlZjIkYXJlT3duUHJvcHNF
cXVhID0gX3JlZjIuYXJlT3duUHJvcHNFcXVhbCxcbiAgICAgICAgYXJlT3duUHJvcHNFcXVhbCA9
IF9yZWYyJGFyZU93blByb3BzRXF1YSA9PT0gdW5kZWZpbmVkID8gc2hhbGxvd0VxdWFsIDogX3Jl
ZjIkYXJlT3duUHJvcHNFcXVhLFxuICAgICAgICBfcmVmMiRhcmVTdGF0ZVByb3BzRXEgPSBfcmVm
Mi5hcmVTdGF0ZVByb3BzRXF1YWwsXG4gICAgICAgIGFyZVN0YXRlUHJvcHNFcXVhbCA9IF9yZWYy
JGFyZVN0YXRlUHJvcHNFcSA9PT0gdW5kZWZpbmVkID8gc2hhbGxvd0VxdWFsIDogX3JlZjIkYXJl
U3RhdGVQcm9wc0VxLFxuICAgICAgICBfcmVmMiRhcmVNZXJnZWRQcm9wc0UgPSBfcmVmMi5hcmVN
ZXJnZWRQcm9wc0VxdWFsLFxuICAgICAgICBhcmVNZXJnZWRQcm9wc0VxdWFsID0gX3JlZjIkYXJl
TWVyZ2VkUHJvcHNFID09PSB1bmRlZmluZWQgPyBzaGFsbG93RXF1YWwgOiBfcmVmMiRhcmVNZXJn
ZWRQcm9wc0UsXG4gICAgICAgIGV4dHJhT3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGll
cyhfcmVmMiwgWydwdXJlJywgJ2FyZVN0YXRlc0VxdWFsJywgJ2FyZU93blByb3BzRXF1YWwnLCAn
YXJlU3RhdGVQcm9wc0VxdWFsJywgJ2FyZU1lcmdlZFByb3BzRXF1YWwnXSk7XG5cbiAgICB2YXIg
aW5pdE1hcFN0YXRlVG9Qcm9wcyA9IG1hdGNoKG1hcFN0YXRlVG9Qcm9wcywgbWFwU3RhdGVUb1By
b3BzRmFjdG9yaWVzLCAnbWFwU3RhdGVUb1Byb3BzJyk7XG4gICAgdmFyIGluaXRNYXBEaXNwYXRj
aFRvUHJvcHMgPSBtYXRjaChtYXBEaXNwYXRjaFRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wc0Zh
Y3RvcmllcywgJ21hcERpc3BhdGNoVG9Qcm9wcycpO1xuICAgIHZhciBpbml0TWVyZ2VQcm9wcyA9
IG1hdGNoKG1lcmdlUHJvcHMsIG1lcmdlUHJvcHNGYWN0b3JpZXMsICdtZXJnZVByb3BzJyk7XG5c
biAgICByZXR1cm4gY29ubmVjdEhPQyhzZWxlY3RvckZhY3RvcnksIF9leHRlbmRzKHtcbiAgICAg
IC8vIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICAgIG1ldGhvZE5hbWU6ICdjb25uZWN0Jyxc
blxuICAgICAgLy8gdXNlZCB0byBjb21wdXRlIENvbm5lY3QncyBkaXNwbGF5TmFtZSBmcm9tIHRo
ZSB3cmFwcGVkIGNvbXBvbmVudCdzIGRpc3BsYXlOYW1lLlxuICAgICAgZ2V0RGlzcGxheU5hbWU6
IGZ1bmN0aW9uIGdldERpc3BsYXlOYW1lKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuICdDb25uZWN0
KCcgKyBuYW1lICsgJyknO1xuICAgICAgfSxcblxuICAgICAgLy8gaWYgbWFwU3RhdGVUb1Byb3Bz
IGlzIGZhbHN5LCB0aGUgQ29ubmVjdCBjb21wb25lbnQgZG9lc24ndCBzdWJzY3JpYmUgdG8gc3Rv
cmUgc3RhdGUgY2hhbmdlc1xuICAgICAgc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzOiBCb29sZWFu
KG1hcFN0YXRlVG9Qcm9wcyksXG5cbiAgICAgIC8vIHBhc3NlZCB0aHJvdWdoIHRvIHNlbGVjdG9y
RmFjdG9yeVxuICAgICAgaW5pdE1hcFN0YXRlVG9Qcm9wczogaW5pdE1hcFN0YXRlVG9Qcm9wcyxc
biAgICAgIGluaXRNYXBEaXNwYXRjaFRvUHJvcHM6IGluaXRNYXBEaXNwYXRjaFRvUHJvcHMsXG4g
ICAgICBpbml0TWVyZ2VQcm9wczogaW5pdE1lcmdlUHJvcHMsXG4gICAgICBwdXJlOiBwdXJlLFxu
ICAgICAgYXJlU3RhdGVzRXF1YWw6IGFyZVN0YXRlc0VxdWFsLFxuICAgICAgYXJlT3duUHJvcHNF
cXVhbDogYXJlT3duUHJvcHNFcXVhbCxcbiAgICAgIGFyZVN0YXRlUHJvcHNFcXVhbDogYXJlU3Rh
dGVQcm9wc0VxdWFsLFxuICAgICAgYXJlTWVyZ2VkUHJvcHNFcXVhbDogYXJlTWVyZ2VkUHJvcHNF
cXVhbFxuXG4gICAgfSwgZXh0cmFPcHRpb25zKSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0
IGNyZWF0ZUNvbm5lY3QoKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9P
VEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb25uZWN0L2Nvbm5lY3QuanNc
bi8vIG1vZHVsZSBpZCA9IDIxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgaGFzT3duID0g
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gaXMoeCwgeSkge1xu
ICBpZiAoeCA9PT0geSkge1xuICAgIHJldHVybiB4ICE9PSAwIHx8IHkgIT09IDAgfHwgMSAvIHgg
PT09IDEgLyB5O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG4g
IH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2hhbGxvd0VxdWFsKG9iakEsIG9iakIp
IHtcbiAgaWYgKGlzKG9iakEsIG9iakIpKSByZXR1cm4gdHJ1ZTtcblxuICBpZiAodHlwZW9mIG9i
akEgIT09ICdvYmplY3QnIHx8IG9iakEgPT09IG51bGwgfHwgdHlwZW9mIG9iakIgIT09ICdvYmpl
Y3QnIHx8IG9iakIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIg
a2V5c0EgPSBPYmplY3Qua2V5cyhvYmpBKTtcbiAgdmFyIGtleXNCID0gT2JqZWN0LmtleXMob2Jq
Qik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSByZXR1cm4gZmFsc2U7
XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzQS5sZW5ndGg7IGkrKykge1xuICAgIGlmICgh
aGFzT3duLmNhbGwob2JqQiwga2V5c0FbaV0pIHx8ICFpcyhvYmpBW2tleXNBW2ldXSwgb2JqQltr
ZXlzQVtpXV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJu
IHRydWU7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8g
Li9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvc2hhbGxvd0VxdWFsLmpzXG4vLyBt
b2R1bGUgaWQgPSAyMTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0IHsgYmluZEFjdGlv
bkNyZWF0b3JzIH0gZnJvbSAncmVkdXgnO1xuaW1wb3J0IHsgd3JhcE1hcFRvUHJvcHNDb25zdGFu
dCwgd3JhcE1hcFRvUHJvcHNGdW5jIH0gZnJvbSAnLi93cmFwTWFwVG9Qcm9wcyc7XG5cbmV4cG9y
dCBmdW5jdGlvbiB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5jdGlvbihtYXBEaXNwYXRjaFRv
UHJvcHMpIHtcbiAgcmV0dXJuIHR5cGVvZiBtYXBEaXNwYXRjaFRvUHJvcHMgPT09ICdmdW5jdGlv
bicgPyB3cmFwTWFwVG9Qcm9wc0Z1bmMobWFwRGlzcGF0Y2hUb1Byb3BzLCAnbWFwRGlzcGF0Y2hU
b1Byb3BzJykgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aGVuTWFwRGlzcGF0
Y2hUb1Byb3BzSXNNaXNzaW5nKG1hcERpc3BhdGNoVG9Qcm9wcykge1xuICByZXR1cm4gIW1hcERp
c3BhdGNoVG9Qcm9wcyA/IHdyYXBNYXBUb1Byb3BzQ29uc3RhbnQoZnVuY3Rpb24gKGRpc3BhdGNo
KSB7XG4gICAgcmV0dXJuIHsgZGlzcGF0Y2g6IGRpc3BhdGNoIH07XG4gIH0pIDogdW5kZWZpbmVk
O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzT2JqZWN0KG1h
cERpc3BhdGNoVG9Qcm9wcykge1xuICByZXR1cm4gbWFwRGlzcGF0Y2hUb1Byb3BzICYmIHR5cGVv
ZiBtYXBEaXNwYXRjaFRvUHJvcHMgPT09ICdvYmplY3QnID8gd3JhcE1hcFRvUHJvcHNDb25zdGFu
dChmdW5jdGlvbiAoZGlzcGF0Y2gpIHtcbiAgICByZXR1cm4gYmluZEFjdGlvbkNyZWF0b3JzKG1h
cERpc3BhdGNoVG9Qcm9wcywgZGlzcGF0Y2gpO1xuICB9KSA6IHVuZGVmaW5lZDtcbn1cblxuZXhw
b3J0IGRlZmF1bHQgW3doZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uLCB3aGVuTWFwRGlz
cGF0Y2hUb1Byb3BzSXNNaXNzaW5nLCB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNPYmplY3RdO1xu
XG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1
bGVzL3JlYWN0LXJlZHV4L2VzL2Nvbm5lY3QvbWFwRGlzcGF0Y2hUb1Byb3BzLmpzXG4vLyBtb2R1
bGUgaWQgPSAyMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0IHsgd3JhcE1hcFRvUHJv
cHNDb25zdGFudCwgd3JhcE1hcFRvUHJvcHNGdW5jIH0gZnJvbSAnLi93cmFwTWFwVG9Qcm9wcyc7
XG5cbmV4cG9ydCBmdW5jdGlvbiB3aGVuTWFwU3RhdGVUb1Byb3BzSXNGdW5jdGlvbihtYXBTdGF0
ZVRvUHJvcHMpIHtcbiAgcmV0dXJuIHR5cGVvZiBtYXBTdGF0ZVRvUHJvcHMgPT09ICdmdW5jdGlv
bicgPyB3cmFwTWFwVG9Qcm9wc0Z1bmMobWFwU3RhdGVUb1Byb3BzLCAnbWFwU3RhdGVUb1Byb3Bz
JykgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aGVuTWFwU3RhdGVUb1Byb3Bz
SXNNaXNzaW5nKG1hcFN0YXRlVG9Qcm9wcykge1xuICByZXR1cm4gIW1hcFN0YXRlVG9Qcm9wcyA/
IHdyYXBNYXBUb1Byb3BzQ29uc3RhbnQoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7fTtcbiAg
fSkgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFt3aGVuTWFwU3RhdGVUb1Byb3Bz
SXNGdW5jdGlvbiwgd2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZ107XG5cblxuLy8vLy8vLy8v
Ly8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVk
dXgvZXMvY29ubmVjdC9tYXBTdGF0ZVRvUHJvcHMuanNcbi8vIG1vZHVsZSBpZCA9IDIxOFxuLy8g
bW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0
aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysp
IHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBp
ZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0
YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG5pbXBv
cnQgdmVyaWZ5UGxhaW5PYmplY3QgZnJvbSAnLi4vdXRpbHMvdmVyaWZ5UGxhaW5PYmplY3QnO1xu
XG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdE1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQ
cm9wcywgb3duUHJvcHMpIHtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvd25Qcm9wcywgc3RhdGVQ
cm9wcywgZGlzcGF0Y2hQcm9wcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwTWVyZ2VQcm9w
c0Z1bmMobWVyZ2VQcm9wcykge1xuICByZXR1cm4gZnVuY3Rpb24gaW5pdE1lcmdlUHJvcHNQcm94
eShkaXNwYXRjaCwgX3JlZikge1xuICAgIHZhciBkaXNwbGF5TmFtZSA9IF9yZWYuZGlzcGxheU5h
bWUsXG4gICAgICAgIHB1cmUgPSBfcmVmLnB1cmUsXG4gICAgICAgIGFyZU1lcmdlZFByb3BzRXF1
YWwgPSBfcmVmLmFyZU1lcmdlZFByb3BzRXF1YWw7XG5cbiAgICB2YXIgaGFzUnVuT25jZSA9IGZh
bHNlO1xuICAgIHZhciBtZXJnZWRQcm9wcyA9IHZvaWQgMDtcblxuICAgIHJldHVybiBmdW5jdGlv
biBtZXJnZVByb3BzUHJveHkoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpIHtc
biAgICAgIHZhciBuZXh0TWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3Bh
dGNoUHJvcHMsIG93blByb3BzKTtcblxuICAgICAgaWYgKGhhc1J1bk9uY2UpIHtcbiAgICAgICAg
aWYgKCFwdXJlIHx8ICFhcmVNZXJnZWRQcm9wc0VxdWFsKG5leHRNZXJnZWRQcm9wcywgbWVyZ2Vk
UHJvcHMpKSBtZXJnZWRQcm9wcyA9IG5leHRNZXJnZWRQcm9wcztcbiAgICAgIH0gZWxzZSB7XG4g
ICAgICAgIGhhc1J1bk9uY2UgPSB0cnVlO1xuICAgICAgICBtZXJnZWRQcm9wcyA9IG5leHRNZXJn
ZWRQcm9wcztcblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykgdmVyaWZ5UGxhaW5PYmplY3QobWVyZ2VkUHJvcHMsIGRpc3BsYXlOYW1lLCAnbWVyZ2VQ
cm9wcycpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4gICAgfTtcbiAg
fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdoZW5NZXJnZVByb3BzSXNGdW5jdGlvbihtZXJnZVBy
b3BzKSB7XG4gIHJldHVybiB0eXBlb2YgbWVyZ2VQcm9wcyA9PT0gJ2Z1bmN0aW9uJyA/IHdyYXBN
ZXJnZVByb3BzRnVuYyhtZXJnZVByb3BzKSA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0
aW9uIHdoZW5NZXJnZVByb3BzSXNPbWl0dGVkKG1lcmdlUHJvcHMpIHtcbiAgcmV0dXJuICFtZXJn
ZVByb3BzID8gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBkZWZhdWx0TWVyZ2VQcm9wcztcbiAg
fSA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgW3doZW5NZXJnZVByb3BzSXNGdW5j
dGlvbiwgd2hlbk1lcmdlUHJvcHNJc09taXR0ZWRdO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xu
Ly8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2Nvbm5l
Y3QvbWVyZ2VQcm9wcy5qc1xuLy8gbW9kdWxlIGlkID0gMjE5XG4vLyBtb2R1bGUgY2h1bmtzID0g
MCIsImZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhvYmosIGtleXMpIHsgdmFyIHRh
cmdldCA9IHt9OyBmb3IgKHZhciBpIGluIG9iaikgeyBpZiAoa2V5cy5pbmRleE9mKGkpID49IDAp
IGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmos
IGkpKSBjb250aW51ZTsgdGFyZ2V0W2ldID0gb2JqW2ldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxu
aW1wb3J0IHZlcmlmeVN1YnNlbGVjdG9ycyBmcm9tICcuL3ZlcmlmeVN1YnNlbGVjdG9ycyc7XG5c
bmV4cG9ydCBmdW5jdGlvbiBpbXB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5KG1hcFN0YXRl
VG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzLCBkaXNwYXRjaCkge1xuICBy
ZXR1cm4gZnVuY3Rpb24gaW1wdXJlRmluYWxQcm9wc1NlbGVjdG9yKHN0YXRlLCBvd25Qcm9wcykg
e1xuICAgIHJldHVybiBtZXJnZVByb3BzKG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMp
LCBtYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG93blByb3BzKSwgb3duUHJvcHMpO1xuICB9
O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkobWFw
U3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMsIGRpc3BhdGNoLCBf
cmVmKSB7XG4gIHZhciBhcmVTdGF0ZXNFcXVhbCA9IF9yZWYuYXJlU3RhdGVzRXF1YWwsXG4gICAg
ICBhcmVPd25Qcm9wc0VxdWFsID0gX3JlZi5hcmVPd25Qcm9wc0VxdWFsLFxuICAgICAgYXJlU3Rh
dGVQcm9wc0VxdWFsID0gX3JlZi5hcmVTdGF0ZVByb3BzRXF1YWw7XG5cbiAgdmFyIGhhc1J1bkF0
TGVhc3RPbmNlID0gZmFsc2U7XG4gIHZhciBzdGF0ZSA9IHZvaWQgMDtcbiAgdmFyIG93blByb3Bz
ID0gdm9pZCAwO1xuICB2YXIgc3RhdGVQcm9wcyA9IHZvaWQgMDtcbiAgdmFyIGRpc3BhdGNoUHJv
cHMgPSB2b2lkIDA7XG4gIHZhciBtZXJnZWRQcm9wcyA9IHZvaWQgMDtcblxuICBmdW5jdGlvbiBo
YW5kbGVGaXJzdENhbGwoZmlyc3RTdGF0ZSwgZmlyc3RPd25Qcm9wcykge1xuICAgIHN0YXRlID0g
Zmlyc3RTdGF0ZTtcbiAgICBvd25Qcm9wcyA9IGZpcnN0T3duUHJvcHM7XG4gICAgc3RhdGVQcm9w
cyA9IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xuICAgIGRpc3BhdGNoUHJvcHMg
PSBtYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG93blByb3BzKTtcbiAgICBtZXJnZWRQcm9w
cyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuICAg
IGhhc1J1bkF0TGVhc3RPbmNlID0gdHJ1ZTtcbiAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4gIH1c
blxuICBmdW5jdGlvbiBoYW5kbGVOZXdQcm9wc0FuZE5ld1N0YXRlKCkge1xuICAgIHN0YXRlUHJv
cHMgPSBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtcblxuICAgIGlmIChtYXBEaXNw
YXRjaFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMpIGRpc3BhdGNoUHJvcHMgPSBtYXBEaXNwYXRj
aFRvUHJvcHMoZGlzcGF0Y2gsIG93blByb3BzKTtcblxuICAgIG1lcmdlZFByb3BzID0gbWVyZ2VQ
cm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzLCBvd25Qcm9wcyk7XG4gICAgcmV0dXJuIG1l
cmdlZFByb3BzO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlTmV3UHJvcHMoKSB7XG4gICAgaWYg
KG1hcFN0YXRlVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcykgc3RhdGVQcm9wcyA9IG1hcFN0YXRl
VG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xuXG4gICAgaWYgKG1hcERpc3BhdGNoVG9Qcm9wcy5k
ZXBlbmRzT25Pd25Qcm9wcykgZGlzcGF0Y2hQcm9wcyA9IG1hcERpc3BhdGNoVG9Qcm9wcyhkaXNw
YXRjaCwgb3duUHJvcHMpO1xuXG4gICAgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJv
cHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcbiAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4g
IH1cblxuICBmdW5jdGlvbiBoYW5kbGVOZXdTdGF0ZSgpIHtcbiAgICB2YXIgbmV4dFN0YXRlUHJv
cHMgPSBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtcbiAgICB2YXIgc3RhdGVQcm9w
c0NoYW5nZWQgPSAhYXJlU3RhdGVQcm9wc0VxdWFsKG5leHRTdGF0ZVByb3BzLCBzdGF0ZVByb3Bz
KTtcbiAgICBzdGF0ZVByb3BzID0gbmV4dFN0YXRlUHJvcHM7XG5cbiAgICBpZiAoc3RhdGVQcm9w
c0NoYW5nZWQpIG1lcmdlZFByb3BzID0gbWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRjaFBy
b3BzLCBvd25Qcm9wcyk7XG5cbiAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4gIH1cblxuICBmdW5j
dGlvbiBoYW5kbGVTdWJzZXF1ZW50Q2FsbHMobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpIHtcbiAg
ICB2YXIgcHJvcHNDaGFuZ2VkID0gIWFyZU93blByb3BzRXF1YWwobmV4dE93blByb3BzLCBvd25Q
cm9wcyk7XG4gICAgdmFyIHN0YXRlQ2hhbmdlZCA9ICFhcmVTdGF0ZXNFcXVhbChuZXh0U3RhdGUs
IHN0YXRlKTtcbiAgICBzdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICBvd25Qcm9wcyA9IG5leHRPd25Q
cm9wcztcblxuICAgIGlmIChwcm9wc0NoYW5nZWQgJiYgc3RhdGVDaGFuZ2VkKSByZXR1cm4gaGFu
ZGxlTmV3UHJvcHNBbmROZXdTdGF0ZSgpO1xuICAgIGlmIChwcm9wc0NoYW5nZWQpIHJldHVybiBo
YW5kbGVOZXdQcm9wcygpO1xuICAgIGlmIChzdGF0ZUNoYW5nZWQpIHJldHVybiBoYW5kbGVOZXdT
dGF0ZSgpO1xuICAgIHJldHVybiBtZXJnZWRQcm9wcztcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlv
biBwdXJlRmluYWxQcm9wc1NlbGVjdG9yKG5leHRTdGF0ZSwgbmV4dE93blByb3BzKSB7XG4gICAg
cmV0dXJuIGhhc1J1bkF0TGVhc3RPbmNlID8gaGFuZGxlU3Vic2VxdWVudENhbGxzKG5leHRTdGF0
ZSwgbmV4dE93blByb3BzKSA6IGhhbmRsZUZpcnN0Q2FsbChuZXh0U3RhdGUsIG5leHRPd25Qcm9w
cyk7XG4gIH07XG59XG5cbi8vIFRPRE86IEFkZCBtb3JlIGNvbW1lbnRzXG5cbi8vIElmIHB1cmUg
aXMgdHJ1ZSwgdGhlIHNlbGVjdG9yIHJldHVybmVkIGJ5IHNlbGVjdG9yRmFjdG9yeSB3aWxsIG1l
bW9pemUgaXRzIHJlc3VsdHMsXG4vLyBhbGxvd2luZyBjb25uZWN0QWR2YW5jZWQncyBzaG91bGRD
b21wb25lbnRVcGRhdGUgdG8gcmV0dXJuIGZhbHNlIGlmIGZpbmFsXG4vLyBwcm9wcyBoYXZlIG5v
dCBjaGFuZ2VkLiBJZiBmYWxzZSwgdGhlIHNlbGVjdG9yIHdpbGwgYWx3YXlzIHJldHVybiBhIG5l
d1xuLy8gb2JqZWN0IGFuZCBzaG91bGRDb21wb25lbnRVcGRhdGUgd2lsbCBhbHdheXMgcmV0dXJu
IHRydWUuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZpbmFsUHJvcHNTZWxlY3RvckZhY3Rv
cnkoZGlzcGF0Y2gsIF9yZWYyKSB7XG4gIHZhciBpbml0TWFwU3RhdGVUb1Byb3BzID0gX3JlZjIu
aW5pdE1hcFN0YXRlVG9Qcm9wcyxcbiAgICAgIGluaXRNYXBEaXNwYXRjaFRvUHJvcHMgPSBfcmVm
Mi5pbml0TWFwRGlzcGF0Y2hUb1Byb3BzLFxuICAgICAgaW5pdE1lcmdlUHJvcHMgPSBfcmVmMi5p
bml0TWVyZ2VQcm9wcyxcbiAgICAgIG9wdGlvbnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMo
X3JlZjIsIFsnaW5pdE1hcFN0YXRlVG9Qcm9wcycsICdpbml0TWFwRGlzcGF0Y2hUb1Byb3BzJywg
J2luaXRNZXJnZVByb3BzJ10pO1xuXG4gIHZhciBtYXBTdGF0ZVRvUHJvcHMgPSBpbml0TWFwU3Rh
dGVUb1Byb3BzKGRpc3BhdGNoLCBvcHRpb25zKTtcbiAgdmFyIG1hcERpc3BhdGNoVG9Qcm9wcyA9
IGluaXRNYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG9wdGlvbnMpO1xuICB2YXIgbWVyZ2VQ
cm9wcyA9IGluaXRNZXJnZVByb3BzKGRpc3BhdGNoLCBvcHRpb25zKTtcblxuICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZlcmlmeVN1YnNlbGVjdG9y
cyhtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcywgb3B0aW9u
cy5kaXNwbGF5TmFtZSk7XG4gIH1cblxuICB2YXIgc2VsZWN0b3JGYWN0b3J5ID0gb3B0aW9ucy5w
dXJlID8gcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkgOiBpbXB1cmVGaW5hbFByb3BzU2Vs
ZWN0b3JGYWN0b3J5O1xuXG4gIHJldHVybiBzZWxlY3RvckZhY3RvcnkobWFwU3RhdGVUb1Byb3Bz
LCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMsIGRpc3BhdGNoLCBvcHRpb25zKTtcbn1c
blxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9k
dWxlcy9yZWFjdC1yZWR1eC9lcy9jb25uZWN0L3NlbGVjdG9yRmFjdG9yeS5qc1xuLy8gbW9kdWxl
IGlkID0gMjIwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImltcG9ydCBSZWFjdCwgeyBQcm9wVHlw
ZXMgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGJpbmRBY3Rpb25DcmVhdG9ycyB9IGZyb20gJ3Jl
ZHV4J1xuaW1wb3J0IHsgY29ubmVjdCB9IGZyb20gJ3JlYWN0LXJlZHV4J1xuaW1wb3J0IEhlYWRl
ciBmcm9tICcuLi9jb21wb25lbnRzL0hlYWRlcidcbmltcG9ydCBNYWluU2VjdGlvbiBmcm9tICcu
Li9jb21wb25lbnRzL01haW5TZWN0aW9uJ1xuaW1wb3J0ICogYXMgVG9kb0FjdGlvbnMgZnJvbSAn
Li4vYWN0aW9ucydcblxuY29uc3QgQXBwID0gKHt0b2RvcywgYWN0aW9uc30pID0+IChcbiAgPGRp
dj5cbiAgICA8SGVhZGVyIGFkZFRvZG89e2FjdGlvbnMuYWRkVG9kb30gLz5cbiAgICA8TWFpblNl
Y3Rpb24gdG9kb3M9e3RvZG9zfSBhY3Rpb25zPXthY3Rpb25zfSAvPlxuICA8L2Rpdj5cbilcblxu
QXBwLnByb3BUeXBlcyA9IHtcbiAgdG9kb3M6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxu
ICBhY3Rpb25zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWRcbn1cblxuY29uc3QgbWFwU3Rh
dGVUb1Byb3BzID0gc3RhdGUgPT4gKHtcbiAgdG9kb3M6IHN0YXRlLnRvZG9zXG59KVxuXG5jb25z
dCBtYXBEaXNwYXRjaFRvUHJvcHMgPSBkaXNwYXRjaCA9PiAoe1xuICAgIGFjdGlvbnM6IGJpbmRB
Y3Rpb25DcmVhdG9ycyhUb2RvQWN0aW9ucywgZGlzcGF0Y2gpXG59KVxuXG5leHBvcnQgZGVmYXVs
dCBjb25uZWN0KFxuICBtYXBTdGF0ZVRvUHJvcHMsXG4gIG1hcERpc3BhdGNoVG9Qcm9wc1xuKShB
cHApXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvY29udGFpbmVycy9BcHAu
anMiLCJpbXBvcnQgUmVhY3QsIHsgUHJvcFR5cGVzLCBDb21wb25lbnQgfSBmcm9tICdyZWFjdCdc
bmltcG9ydCBUb2RvVGV4dElucHV0IGZyb20gJy4vVG9kb1RleHRJbnB1dCdcblxuZXhwb3J0IGRl
ZmF1bHQgY2xhc3MgSGVhZGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBl
cyA9IHtcbiAgICBhZGRUb2RvOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gIH1cblxuICBo
YW5kbGVTYXZlID0gdGV4dCA9PiB7XG4gICAgaWYgKHRleHQubGVuZ3RoICE9PSAwKSB7XG4gICAg
ICB0aGlzLnByb3BzLmFkZFRvZG8odGV4dClcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4g
ICAgcmV0dXJuIChcbiAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwiaGVhZGVyXCI+XG4gICAgICAg
IDxoMT50b2RvczwvaDE+XG4gICAgICAgIDxUb2RvVGV4dElucHV0IG5ld1RvZG9cbiAgICAgICAg
ICAgICAgICAgICAgICAgb25TYXZlPXt0aGlzLmhhbmRsZVNhdmV9XG4gICAgICAgICAgICAgICAg
ICAgICAgIHBsYWNlaG9sZGVyPVwiV2hhdCBuZWVkcyB0byBiZSBkb25lP1wiIC8+XG4gICAgICA8
L2hlYWRlcj5cbiAgICApXG4gIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAu
L3NyYy9jb21wb25lbnRzL0hlYWRlci5qcyIsImltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQsIFBy
b3BUeXBlcyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFRvZG9JdGVtIGZyb20gJy4vVG9kb0l0ZW0n
XG5pbXBvcnQgRm9vdGVyIGZyb20gJy4vRm9vdGVyJ1xuaW1wb3J0IHsgU0hPV19BTEwsIFNIT1df
Q09NUExFVEVELCBTSE9XX0FDVElWRSB9IGZyb20gJy4uL2NvbnN0YW50cy9Ub2RvRmlsdGVycydc
blxuY29uc3QgVE9ET19GSUxURVJTID0ge1xuICBbU0hPV19BTExdOiAoKSA9PiB0cnVlLFxuICBb
U0hPV19BQ1RJVkVdOiB0b2RvID0+ICF0b2RvLmNvbXBsZXRlZCxcbiAgW1NIT1dfQ09NUExFVEVE
XTogdG9kbyA9PiB0b2RvLmNvbXBsZXRlZFxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYWlu
U2VjdGlvbiBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAg
dG9kb3M6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICAgIGFjdGlvbnM6IFByb3BUeXBl
cy5vYmplY3QuaXNSZXF1aXJlZFxuICB9XG5cbiAgc3RhdGUgPSB7IGZpbHRlcjogU0hPV19BTEwg
fVxuXG4gIGhhbmRsZUNsZWFyQ29tcGxldGVkID0gKCkgPT4ge1xuICAgIHRoaXMucHJvcHMuYWN0
aW9ucy5jbGVhckNvbXBsZXRlZCgpXG4gIH1cblxuICBoYW5kbGVTaG93ID0gZmlsdGVyID0+IHtc
biAgICB0aGlzLnNldFN0YXRlKHsgZmlsdGVyIH0pXG4gIH1cblxuICByZW5kZXJUb2dnbGVBbGwo
Y29tcGxldGVkQ291bnQpIHtcbiAgICBjb25zdCB7IHRvZG9zLCBhY3Rpb25zIH0gPSB0aGlzLnBy
b3BzXG4gICAgaWYgKHRvZG9zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAg
IDxpbnB1dCBjbGFzc05hbWU9XCJ0b2dnbGUtYWxsXCJcbiAgICAgICAgICAgICAgIHR5cGU9XCJj
aGVja2JveFwiXG4gICAgICAgICAgICAgICBjaGVja2VkPXtjb21wbGV0ZWRDb3VudCA9PT0gdG9k
b3MubGVuZ3RofVxuICAgICAgICAgICAgICAgb25DaGFuZ2U9e2FjdGlvbnMuY29tcGxldGVBbGx9
IC8+XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyRm9vdGVyKGNvbXBsZXRlZENvdW50
KSB7XG4gICAgY29uc3QgeyB0b2RvcyB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHsgZmlsdGVy
IH0gPSB0aGlzLnN0YXRlXG4gICAgY29uc3QgYWN0aXZlQ291bnQgPSB0b2Rvcy5sZW5ndGggLSBj
b21wbGV0ZWRDb3VudFxuXG4gICAgaWYgKHRvZG9zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIChc
biAgICAgICAgPEZvb3RlciBjb21wbGV0ZWRDb3VudD17Y29tcGxldGVkQ291bnR9XG4gICAgICAg
ICAgICAgICAgYWN0aXZlQ291bnQ9e2FjdGl2ZUNvdW50fVxuICAgICAgICAgICAgICAgIGZpbHRl
cj17ZmlsdGVyfVxuICAgICAgICAgICAgICAgIG9uQ2xlYXJDb21wbGV0ZWQ9e3RoaXMuaGFuZGxl
Q2xlYXJDb21wbGV0ZWQuYmluZCh0aGlzKX1cbiAgICAgICAgICAgICAgICBvblNob3c9e3RoaXMu
aGFuZGxlU2hvdy5iaW5kKHRoaXMpfSAvPlxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRl
cigpIHtcbiAgICBjb25zdCB7IHRvZG9zLCBhY3Rpb25zIH0gPSB0aGlzLnByb3BzXG4gICAgY29u
c3QgeyBmaWx0ZXIgfSA9IHRoaXMuc3RhdGVcblxuICAgIGNvbnN0IGZpbHRlcmVkVG9kb3MgPSB0
b2Rvcy5maWx0ZXIoVE9ET19GSUxURVJTW2ZpbHRlcl0pXG4gICAgY29uc3QgY29tcGxldGVkQ291
bnQgPSB0b2Rvcy5yZWR1Y2UoKGNvdW50LCB0b2RvKSA9PlxuICAgICAgdG9kby5jb21wbGV0ZWQg
PyBjb3VudCArIDEgOiBjb3VudCxcbiAgICAgIDBcbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAg
ICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwibWFpblwiPlxuICAgICAgICB7dGhpcy5yZW5kZXJUb2dn
bGVBbGwoY29tcGxldGVkQ291bnQpfVxuICAgICAgICA8dWwgY2xhc3NOYW1lPVwidG9kby1saXN0
XCI+XG4gICAgICAgICAge2ZpbHRlcmVkVG9kb3MubWFwKHRvZG8gPT5cbiAgICAgICAgICAgIDxU
b2RvSXRlbSBrZXk9e3RvZG8uaWR9IHRvZG89e3RvZG99IHsuLi5hY3Rpb25zfSAvPlxuICAgICAg
ICAgICl9XG4gICAgICAgIDwvdWw+XG4gICAgICAgIHt0aGlzLnJlbmRlckZvb3Rlcihjb21wbGV0
ZWRDb3VudCl9XG4gICAgICA8L3NlY3Rpb24+XG4gICAgKVxuICB9XG59XG5cblxuXG4vLyBXRUJQ
QUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvY29tcG9uZW50cy9NYWluU2VjdGlvbi5qcyIsImltcG9y
dCBSZWFjdCwgeyBDb21wb25lbnQsIFByb3BUeXBlcyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGNs
YXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcbmltcG9ydCBUb2RvVGV4dElucHV0IGZyb20gJy4v
VG9kb1RleHRJbnB1dCdcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9kb0l0ZW0gZXh0ZW5kcyBD
b21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIHRvZG86IFByb3BUeXBlcy5v
YmplY3QuaXNSZXF1aXJlZCxcbiAgICBlZGl0VG9kbzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJl
ZCxcbiAgICBkZWxldGVUb2RvOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGNvbXBs
ZXRlVG9kbzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICB9XG5cbiAgc3RhdGUgPSB7XG4g
ICAgZWRpdGluZzogZmFsc2VcbiAgfVxuXG4gIGhhbmRsZURvdWJsZUNsaWNrID0gKCkgPT4ge1xu
ICAgIHRoaXMuc2V0U3RhdGUoeyBlZGl0aW5nOiB0cnVlIH0pXG4gIH1cblxuICBoYW5kbGVTYXZl
ID0gKGlkLCB0ZXh0KSA9PiB7XG4gICAgaWYgKHRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICB0
aGlzLnByb3BzLmRlbGV0ZVRvZG8oaWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvcHMu
ZWRpdFRvZG8oaWQsIHRleHQpXG4gICAgfVxuICAgIHRoaXMuc2V0U3RhdGUoeyBlZGl0aW5nOiBm
YWxzZSB9KVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgdG9kbywgY29tcGxldGVU
b2RvLCBkZWxldGVUb2RvIH0gPSB0aGlzLnByb3BzXG5cbiAgICBsZXQgZWxlbWVudFxuICAgIGlm
ICh0aGlzLnN0YXRlLmVkaXRpbmcpIHtcbiAgICAgIGVsZW1lbnQgPSAoXG4gICAgICAgIDxUb2Rv
VGV4dElucHV0IHRleHQ9e3RvZG8udGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgZWRpdGlu
Zz17dGhpcy5zdGF0ZS5lZGl0aW5nfVxuICAgICAgICAgICAgICAgICAgICAgICBvblNhdmU9eyh0
ZXh0KSA9PiB0aGlzLmhhbmRsZVNhdmUodG9kby5pZCwgdGV4dCl9IC8+XG4gICAgICApXG4gICAg
fSBlbHNlIHtcbiAgICAgIGVsZW1lbnQgPSAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidmll
d1wiPlxuICAgICAgICAgIDxpbnB1dCBjbGFzc05hbWU9XCJ0b2dnbGVcIlxuICAgICAgICAgICAg
ICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICBjaGVja2VkPXt0b2RvLmNv
bXBsZXRlZH1cbiAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGNvbXBsZXRlVG9kbyh0
b2RvLmlkKX0gLz5cbiAgICAgICAgICA8bGFiZWwgb25Eb3VibGVDbGljaz17dGhpcy5oYW5kbGVE
b3VibGVDbGlja30+XG4gICAgICAgICAgICB7dG9kby50ZXh0fVxuICAgICAgICAgIDwvbGFiZWw+
XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJkZXN0cm95XCJcbiAgICAgICAgICAgICAg
ICAgIG9uQ2xpY2s9eygpID0+IGRlbGV0ZVRvZG8odG9kby5pZCl9IC8+XG4gICAgICAgIDwvZGl2
PlxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8bGkgY2xhc3NOYW1lPXtj
bGFzc25hbWVzKHtcbiAgICAgICAgY29tcGxldGVkOiB0b2RvLmNvbXBsZXRlZCxcbiAgICAgICAg
ZWRpdGluZzogdGhpcy5zdGF0ZS5lZGl0aW5nXG4gICAgICB9KX0+XG4gICAgICAgIHtlbGVtZW50
fVxuICAgICAgPC9saT5cbiAgICApXG4gIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8v
XG4vLyAuL3NyYy9jb21wb25lbnRzL1RvZG9JdGVtLmpzIiwiaW1wb3J0IFJlYWN0LCB7IFByb3BU
eXBlcywgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdj
bGFzc25hbWVzJ1xuaW1wb3J0IHsgU0hPV19BTEwsIFNIT1dfQ09NUExFVEVELCBTSE9XX0FDVElW
RSB9IGZyb20gJy4uL2NvbnN0YW50cy9Ub2RvRmlsdGVycydcblxuY29uc3QgRklMVEVSX1RJVExF
UyA9IHtcbiAgW1NIT1dfQUxMXTogJ0FsbCcsXG4gIFtTSE9XX0FDVElWRV06ICdBY3RpdmUnLFxu
ICBbU0hPV19DT01QTEVURURdOiAnQ29tcGxldGVkJ1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFz
cyBGb290ZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAg
IGNvbXBsZXRlZENvdW50OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgYWN0aXZl
Q291bnQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBmaWx0ZXI6IFByb3BUeXBl
cy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBvbkNsZWFyQ29tcGxldGVkOiBQcm9wVHlwZXMuZnVu
Yy5pc1JlcXVpcmVkLFxuICAgIG9uU2hvdzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICB9
XG5cbiAgcmVuZGVyVG9kb0NvdW50KCkge1xuICAgIGNvbnN0IHsgYWN0aXZlQ291bnQgfSA9IHRo
aXMucHJvcHNcbiAgICBjb25zdCBpdGVtV29yZCA9IGFjdGl2ZUNvdW50ID09PSAxID8gJ2l0ZW0n
IDogJ2l0ZW1zJ1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRvZG8t
Y291bnRcIj5cbiAgICAgICAgPHN0cm9uZz57YWN0aXZlQ291bnQgfHwgJ05vJ308L3N0cm9uZz4g
e2l0ZW1Xb3JkfSBsZWZ0XG4gICAgICA8L3NwYW4+XG4gICAgKVxuICB9XG5cbiAgcmVuZGVyRmls
dGVyTGluayhmaWx0ZXIpIHtcbiAgICBjb25zdCB0aXRsZSA9IEZJTFRFUl9USVRMRVNbZmlsdGVy
XVxuICAgIGNvbnN0IHsgZmlsdGVyOiBzZWxlY3RlZEZpbHRlciwgb25TaG93IH0gPSB0aGlzLnBy
b3BzXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGEgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHsgc2Vs
ZWN0ZWQ6IGZpbHRlciA9PT0gc2VsZWN0ZWRGaWx0ZXIgfSl9XG4gICAgICAgICBzdHlsZT17eyBj
dXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICAgb25DbGljaz17KCkgPT4gb25TaG93KGZpbHRl
cil9PlxuICAgICAgICB7dGl0bGV9XG4gICAgICA8L2E+XG4gICAgKVxuICB9XG5cbiAgcmVuZGVy
Q2xlYXJCdXR0b24oKSB7XG4gICAgY29uc3QgeyBjb21wbGV0ZWRDb3VudCwgb25DbGVhckNvbXBs
ZXRlZCB9ID0gdGhpcy5wcm9wc1xuICAgIGlmIChjb21wbGV0ZWRDb3VudCA+IDApIHtcbiAgICAg
IHJldHVybiAoXG4gICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiY2xlYXItY29tcGxldGVkXCJc
biAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNsZWFyQ29tcGxldGVkfSA+XG4gICAgICAgICAg
Q2xlYXIgY29tcGxldGVkXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgKVxuICAgIH1cbiAgfVxu
XG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGZvb3RlciBjbGFzc05hbWU9XCJm
b290ZXJcIj5cbiAgICAgICAge3RoaXMucmVuZGVyVG9kb0NvdW50KCl9XG4gICAgICAgIDx1bCBj
bGFzc05hbWU9XCJmaWx0ZXJzXCI+XG4gICAgICAgICAge1sgU0hPV19BTEwsIFNIT1dfQUNUSVZF
LCBTSE9XX0NPTVBMRVRFRCBdLm1hcChmaWx0ZXIgPT5cbiAgICAgICAgICAgIDxsaSBrZXk9e2Zp
bHRlcn0+XG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckZpbHRlckxpbmsoZmlsdGVyKX1cbiAg
ICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC91bD5cbiAgICAgICAge3Ro
aXMucmVuZGVyQ2xlYXJCdXR0b24oKX1cbiAgICAgIDwvZm9vdGVyPlxuICAgIClcbiAgfVxufVxu
XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2NvbXBvbmVudHMvRm9vdGVyLmpz
IiwiaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnLi4vY29uc3RhbnRzL0FjdGlvblR5cGVzJ1xuXG5l
eHBvcnQgY29uc3QgYWRkVG9kbyA9IHRleHQgPT4gKHsgdHlwZTogdHlwZXMuQUREX1RPRE8sIHRl
eHQgfSlcbmV4cG9ydCBjb25zdCBkZWxldGVUb2RvID0gaWQgPT4gKHsgdHlwZTogdHlwZXMuREVM
RVRFX1RPRE8sIGlkIH0pXG5leHBvcnQgY29uc3QgZWRpdFRvZG8gPSAoaWQsIHRleHQpID0+ICh7
IHR5cGU6IHR5cGVzLkVESVRfVE9ETywgaWQsIHRleHQgfSlcbmV4cG9ydCBjb25zdCBjb21wbGV0
ZVRvZG8gPSBpZCA9PiAoeyB0eXBlOiB0eXBlcy5DT01QTEVURV9UT0RPLCBpZCB9KVxuZXhwb3J0
IGNvbnN0IGNvbXBsZXRlQWxsID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuQ09NUExFVEVfQUxMIH0p
XG5leHBvcnQgY29uc3QgY2xlYXJDb21wbGV0ZWQgPSAoKSA9PiAoeyB0eXBlOiB0eXBlcy5DTEVB
Ul9DT01QTEVURUQgfSlcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hY3Rp
b25zL2luZGV4LmpzIiwiaW1wb3J0IHsgY29tYmluZVJlZHVjZXJzIH0gZnJvbSAncmVkdXgnXG5p
bXBvcnQgdG9kb3MgZnJvbSAnLi90b2RvcydcblxuY29uc3Qgcm9vdFJlZHVjZXIgPSBjb21iaW5l
UmVkdWNlcnMoe1xuICB0b2Rvc1xufSlcblxuZXhwb3J0IGRlZmF1bHQgcm9vdFJlZHVjZXJcblxu
XG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9yZWR1Y2Vycy9pbmRleC5qcyIsImlt
cG9ydCB7IEFERF9UT0RPLCBERUxFVEVfVE9ETywgRURJVF9UT0RPLCBDT01QTEVURV9UT0RPLCBD
T01QTEVURV9BTEwsIENMRUFSX0NPTVBMRVRFRCB9IGZyb20gJy4uL2NvbnN0YW50cy9BY3Rpb25U
eXBlcydcblxuY29uc3QgaW5pdGlhbFN0YXRlID0gW11cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rp
b24gdG9kb3Moc3RhdGUgPSBpbml0aWFsU3RhdGUsIGFjdGlvbikge1xuICBzd2l0Y2ggKGFjdGlv
bi50eXBlKSB7XG4gICAgY2FzZSBBRERfVE9ETzpcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4u
LnN0YXRlLFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6IHN0YXRlLnJlZHVjZSgobWF4SWQsIHRv
ZG8pID0+IE1hdGgubWF4KHRvZG8uaWQsIG1heElkKSwgLTEpICsgMSxcbiAgICAgICAgICBjb21w
bGV0ZWQ6IGZhbHNlLFxuICAgICAgICAgIHRleHQ6IGFjdGlvbi50ZXh0XG4gICAgICAgIH1cbiAg
ICAgIF1cblxuICAgIGNhc2UgREVMRVRFX1RPRE86XG4gICAgICByZXR1cm4gc3RhdGUuZmlsdGVy
KHRvZG8gPT5cbiAgICAgICAgdG9kby5pZCAhPT0gYWN0aW9uLmlkXG4gICAgICApXG5cbiAgICBj
YXNlIEVESVRfVE9ETzpcbiAgICAgIHJldHVybiBzdGF0ZS5tYXAodG9kbyA9PlxuICAgICAgICB0
b2RvLmlkID09PSBhY3Rpb24uaWQgP1xuICAgICAgICAgIHsgLi4udG9kbywgdGV4dDogYWN0aW9u
LnRleHQgfSA6XG4gICAgICAgICAgdG9kb1xuICAgICAgKVxuXG4gICAgY2FzZSBDT01QTEVURV9U
T0RPOlxuICAgICAgcmV0dXJuIHN0YXRlLm1hcCh0b2RvID0+XG4gICAgICAgIHRvZG8uaWQgPT09
IGFjdGlvbi5pZCA/XG4gICAgICAgICAgeyAuLi50b2RvLCBjb21wbGV0ZWQ6ICF0b2RvLmNvbXBs
ZXRlZCB9IDpcbiAgICAgICAgICB0b2RvXG4gICAgICApXG5cbiAgICBjYXNlIENPTVBMRVRFX0FM
TDpcbiAgICAgIGNvbnN0IGFyZUFsbE1hcmtlZCA9IHN0YXRlLmV2ZXJ5KHRvZG8gPT4gdG9kby5j
b21wbGV0ZWQpXG4gICAgICByZXR1cm4gc3RhdGUubWFwKHRvZG8gPT4gKHtcbiAgICAgICAgLi4u
dG9kbyxcbiAgICAgICAgY29tcGxldGVkOiAhYXJlQWxsTWFya2VkXG4gICAgICB9KSlcblxuICAg
IGNhc2UgQ0xFQVJfQ09NUExFVEVEOlxuICAgICAgcmV0dXJuIHN0YXRlLmZpbHRlcih0b2RvID0+
IHRvZG8uY29tcGxldGVkID09PSBmYWxzZSlcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4g
c3RhdGVcbiAgfVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL3JlZHVj
ZXJzL3RvZG9zLmpzIl0sInNvdXJjZVJvb3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2pzL21h
aW4uNjljZDk2NTUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9t
YWluLjY5Y2Q5NjU1LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGM4MWNjYTcz
MGI5NDhlMDQ3ZDExOWQxY2YxZWZjYjNlYzdmNTdiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGlj
L2pzL21haW4uNjljZDk2NTUuanMKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLSFmdW5j
dGlvbihlKXtmdW5jdGlvbiB0KHIpe2lmKG5bcl0pcmV0dXJuIG5bcl0uZXhwb3J0czt2YXIgbz1u
W3JdPXtleHBvcnRzOnt9LGlkOnIsbG9hZGVkOiExfTtyZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0
cyxvLG8uZXhwb3J0cyx0KSxvLmxvYWRlZD0hMCxvLmV4cG9ydHN9dmFyIG49e307cmV0dXJuIHQu
bT1lLHQuYz1uLHQucD0iLi8iLHQoMCl9KGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWlmKE9i
amVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpKXN3aXRjaCh0eXBlb2YgZVt0
XSl7Y2FzZSJmdW5jdGlvbiI6YnJlYWs7Y2FzZSJvYmplY3QiOmVbdF09ZnVuY3Rpb24odCl7dmFy
IG49dC5zbGljZSgxKSxyPWVbdFswXV07cmV0dXJuIGZ1bmN0aW9uKGUsdCxvKXtyLmFwcGx5KHRo
aXMsW2UsdCxvXS5jb25jYXQobikpfX0oZVt0XSk7YnJlYWs7ZGVmYXVsdDplW3RdPWVbZVt0XV19
cmV0dXJuIGV9KFtmdW5jdGlvbihlLHQsbil7bigxOTYpLGUuZXhwb3J0cz1uKDIwNCl9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyLGksYSx1LHMpe2lmKG8o
dCksIWUpe3ZhciBjO2lmKHZvaWQgMD09PXQpYz1uZXcgRXJyb3IoIk1pbmlmaWVkIGV4Y2VwdGlv
biBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciB0aGUg
ZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIik7ZWxz
ZXt2YXIgbD1bbixyLGksYSx1LHNdLHA9MDtjPW5ldyBFcnJvcih0LnJlcGxhY2UoLyVzL2csZnVu
Y3Rpb24oKXtyZXR1cm4gbFtwKytdfSkpLGMubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhy
b3cgYy5mcmFtZXNUb1BvcD0xLGN9fXZhciBvPWZ1bmN0aW9uKGUpe307ZS5leHBvcnRzPXJ9LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3KSxvPXI7ZS5leHBvcnRzPW99LGZ1
bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7Zm9yKHZhciB0PWFyZ3VtZW50
cy5sZW5ndGgtMSxuPSJNaW5pZmllZCBSZWFjdCBlcnJvciAjIitlKyI7IHZpc2l0IGh0dHA6Ly9m
YWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50
PSIrZSxyPTA7cjx0O3IrKyluKz0iJmFyZ3NbXT0iK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVu
dHNbcisxXSk7bis9IiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmll
ZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwg
d2FybmluZ3MuIjt2YXIgbz1uZXcgRXJyb3Iobik7dGhyb3cgby5uYW1lPSJJbnZhcmlhbnQgVmlv
bGF0aW9uIixvLmZyYW1lc1RvUG9wPTEsb31lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gbihlKXtpZihudWxsPT09ZXx8dm9pZCAwPT09ZSl0aHJvdyBuZXcg
VHlwZUVycm9yKCJPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVu
ZGVmaW5lZCIpO3JldHVybiBPYmplY3QoZSl9ZnVuY3Rpb24gcigpe3RyeXtpZighT2JqZWN0LmFz
c2lnbilyZXR1cm4hMTt2YXIgZT1uZXcgU3RyaW5nKCJhYmMiKTtpZihlWzVdPSJkZSIsIjUiPT09
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSlbMF0pcmV0dXJuITE7Zm9yKHZhciB0PXt9LG49
MDtuPDEwO24rKyl0WyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlKG4pXT1uO3ZhciByPU9iamVjdC5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pO2lmKCIw
MTIzNDU2Nzg5IiE9PXIuam9pbigiIikpcmV0dXJuITE7dmFyIG89e307cmV0dXJuImFiY2RlZmdo
aWprbG1ub3BxcnN0Ii5zcGxpdCgiIikuZm9yRWFjaChmdW5jdGlvbihlKXtvW2VdPWV9KSwiYWJj
ZGVmZ2hpamtsbW5vcHFyc3QiPT09T2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxvKSkuam9p
bigiIil9Y2F0Y2goaSl7cmV0dXJuITF9fXZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHMsaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGE9T2JqZWN0LnByb3RvdHlwZS5w
cm9wZXJ0eUlzRW51bWVyYWJsZTtlLmV4cG9ydHM9cigpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24o
ZSx0KXtmb3IodmFyIHIsdSxzPW4oZSksYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3I9T2Jq
ZWN0KGFyZ3VtZW50c1tjXSk7Zm9yKHZhciBsIGluIHIpaS5jYWxsKHIsbCkmJihzW2xdPXJbbF0p
O2lmKG8pe3U9byhyKTtmb3IodmFyIHA9MDtwPHUubGVuZ3RoO3ArKylhLmNhbGwocix1W3BdKSYm
KHNbdVtwXV09clt1W3BdXSl9fXJldHVybiBzfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlJiZlLmdldEF0dHJpYnV0ZSho
KT09PVN0cmluZyh0KXx8OD09PWUubm9kZVR5cGUmJmUubm9kZVZhbHVlPT09IiByZWFjdC10ZXh0
OiAiK3QrIiAifHw4PT09ZS5ub2RlVHlwZSYmZS5ub2RlVmFsdWU9PT0iIHJlYWN0LWVtcHR5OiAi
K3QrIiAifWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciB0O3Q9ZS5fcmVuZGVyZWRDb21wb25lbnQ7KWU9
dDtyZXR1cm4gZX1mdW5jdGlvbiBpKGUsdCl7dmFyIG49byhlKTtuLl9ob3N0Tm9kZT10LHRbbV09
bn1mdW5jdGlvbiBhKGUpe3ZhciB0PWUuX2hvc3ROb2RlO3QmJihkZWxldGUgdFttXSxlLl9ob3N0
Tm9kZT1udWxsKX1mdW5jdGlvbiB1KGUsdCl7aWYoIShlLl9mbGFncyZ2Lmhhc0NhY2hlZENoaWxk
Tm9kZXMpKXt2YXIgbj1lLl9yZW5kZXJlZENoaWxkcmVuLGE9dC5maXJzdENoaWxkO2U6Zm9yKHZh
ciB1IGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eSh1KSl7dmFyIHM9blt1XSxjPW8ocykuX2RvbUlE
O2lmKDAhPT1jKXtmb3IoO251bGwhPT1hO2E9YS5uZXh0U2libGluZylpZihyKGEsYykpe2kocyxh
KTtjb250aW51ZSBlfXAoIjMyIixjKX19ZS5fZmxhZ3N8PXYuaGFzQ2FjaGVkQ2hpbGROb2Rlc319
ZnVuY3Rpb24gcyhlKXtpZihlW21dKXJldHVybiBlW21dO2Zvcih2YXIgdD1bXTshZVttXTspe2lm
KHQucHVzaChlKSwhZS5wYXJlbnROb2RlKXJldHVybiBudWxsO2U9ZS5wYXJlbnROb2RlfWZvcih2
YXIgbixyO2UmJihyPWVbbV0pO2U9dC5wb3AoKSluPXIsdC5sZW5ndGgmJnUocixlKTtyZXR1cm4g
bn1mdW5jdGlvbiBjKGUpe3ZhciB0PXMoZSk7cmV0dXJuIG51bGwhPXQmJnQuX2hvc3ROb2RlPT09
ZT90Om51bGx9ZnVuY3Rpb24gbChlKXtpZih2b2lkIDA9PT1lLl9ob3N0Tm9kZT9wKCIzMyIpOnZv
aWQgMCxlLl9ob3N0Tm9kZSlyZXR1cm4gZS5faG9zdE5vZGU7Zm9yKHZhciB0PVtdOyFlLl9ob3N0
Tm9kZTspdC5wdXNoKGUpLGUuX2hvc3RQYXJlbnQ/dm9pZCAwOnAoIjM0IiksZT1lLl9ob3N0UGFy
ZW50O2Zvcig7dC5sZW5ndGg7ZT10LnBvcCgpKXUoZSxlLl9ob3N0Tm9kZSk7cmV0dXJuIGUuX2hv
c3ROb2RlfXZhciBwPW4oMyksZD1uKDE1KSxmPW4oNjEpLGg9KG4oMSksZC5JRF9BVFRSSUJVVEVf
TkFNRSksdj1mLG09Il9fcmVhY3RJbnRlcm5hbEluc3RhbmNlJCIrTWF0aC5yYW5kb20oKS50b1N0
cmluZygzNikuc2xpY2UoMikseT17Z2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGU6cyxnZXRJbnN0
YW5jZUZyb21Ob2RlOmMsZ2V0Tm9kZUZyb21JbnN0YW5jZTpsLHByZWNhY2hlQ2hpbGROb2Rlczp1
LHByZWNhY2hlTm9kZTppLHVuY2FjaGVOb2RlOmF9O2UuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0Ijt2YXIgbj0hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93
LmRvY3VtZW50fHwhd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLHI9e2NhblVzZURPTTpu
LGNhblVzZVdvcmtlcnM6InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXIsY2FuVXNlRXZlbnRMaXN0
ZW5lcnM6biYmISghd2luZG93LmFkZEV2ZW50TGlzdGVuZXImJiF3aW5kb3cuYXR0YWNoRXZlbnQp
LGNhblVzZVZpZXdwb3J0Om4mJiEhd2luZG93LnNjcmVlbixpc0luV29ya2VyOiFufTtlLmV4cG9y
dHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZnVu
Y3Rpb24oKXtyZXR1cm4gZX19dmFyIHI9ZnVuY3Rpb24oKXt9O3IudGhhdFJldHVybnM9bixyLnRo
YXRSZXR1cm5zRmFsc2U9bighMSksci50aGF0UmV0dXJuc1RydWU9bighMCksci50aGF0UmV0dXJu
c051bGw9bihudWxsKSxyLnRoYXRSZXR1cm5zVGhpcz1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxy
LnRoYXRSZXR1cm5zQXJndW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGUuZXhwb3J0cz1yfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW51bGw7ZS5leHBvcnRzPXtkZWJ1Z1Rv
b2w6cn19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe08uUmVhY3RS
ZWNvbmNpbGVUcmFuc2FjdGlvbiYmQz92b2lkIDA6bCgiMTIzIil9ZnVuY3Rpb24gbygpe3RoaXMu
cmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aD1udWxs
LHRoaXMuY2FsbGJhY2tRdWV1ZT1kLmdldFBvb2xlZCgpLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rp
b249Ty5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZCghMCl9ZnVuY3Rpb24gaShl
LHQsbixvLGksYSl7cmV0dXJuIHIoKSxDLmJhdGNoZWRVcGRhdGVzKGUsdCxuLG8saSxhKX1mdW5j
dGlvbiBhKGUsdCl7cmV0dXJuIGUuX21vdW50T3JkZXItdC5fbW91bnRPcmRlcn1mdW5jdGlvbiB1
KGUpe3ZhciB0PWUuZGlydHlDb21wb25lbnRzTGVuZ3RoO3QhPT15Lmxlbmd0aD9sKCIxMjQiLHQs
eS5sZW5ndGgpOnZvaWQgMCx5LnNvcnQoYSksZysrO2Zvcih2YXIgbj0wO248dDtuKyspe3ZhciBy
PXlbbl0sbz1yLl9wZW5kaW5nQ2FsbGJhY2tzO3IuX3BlbmRpbmdDYWxsYmFja3M9bnVsbDt2YXIg
aTtpZihoLmxvZ1RvcExldmVsUmVuZGVycyl7dmFyIHU9cjtyLl9jdXJyZW50RWxlbWVudC50eXBl
LmlzUmVhY3RUb3BMZXZlbFdyYXBwZXImJih1PXIuX3JlbmRlcmVkQ29tcG9uZW50KSxpPSJSZWFj
dCB1cGRhdGU6ICIrdS5nZXROYW1lKCksY29uc29sZS50aW1lKGkpfWlmKHYucGVyZm9ybVVwZGF0
ZUlmTmVjZXNzYXJ5KHIsZS5yZWNvbmNpbGVUcmFuc2FjdGlvbixnKSxpJiZjb25zb2xlLnRpbWVF
bmQoaSksbylmb3IodmFyIHM9MDtzPG8ubGVuZ3RoO3MrKyllLmNhbGxiYWNrUXVldWUuZW5xdWV1
ZShvW3NdLHIuZ2V0UHVibGljSW5zdGFuY2UoKSl9fWZ1bmN0aW9uIHMoZSl7cmV0dXJuIHIoKSxD
LmlzQmF0Y2hpbmdVcGRhdGVzPyh5LnB1c2goZSksdm9pZChudWxsPT1lLl91cGRhdGVCYXRjaE51
bWJlciYmKGUuX3VwZGF0ZUJhdGNoTnVtYmVyPWcrMSkpKTp2b2lkIEMuYmF0Y2hlZFVwZGF0ZXMo
cyxlKX1mdW5jdGlvbiBjKGUsdCl7Qy5pc0JhdGNoaW5nVXBkYXRlcz92b2lkIDA6bCgiMTI1Iiks
Yi5lbnF1ZXVlKGUsdCksXz0hMH12YXIgbD1uKDMpLHA9big0KSxkPW4oNTkpLGY9bigxMyksaD1u
KDY0KSx2PW4oMTYpLG09bigyNykseT0obigxKSxbXSksZz0wLGI9ZC5nZXRQb29sZWQoKSxfPSEx
LEM9bnVsbCxFPXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5n
dGg9eS5sZW5ndGh9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgh
PT15Lmxlbmd0aD8oeS5zcGxpY2UoMCx0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCksUCgpKTp5
Lmxlbmd0aD0wfX0sdz17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuY2FsbGJhY2tRdWV1ZS5y
ZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuY2FsbGJhY2tRdWV1ZS5ub3RpZnlBbGwoKX19
LFQ9W0Usd107cChvLnByb3RvdHlwZSxtLHtnZXRUcmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9u
KCl7cmV0dXJuIFR9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLmRpcnR5Q29tcG9uZW50c0xl
bmd0aD1udWxsLGQucmVsZWFzZSh0aGlzLmNhbGxiYWNrUXVldWUpLHRoaXMuY2FsbGJhY2tRdWV1
ZT1udWxsLE8uUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5yZWxlYXNlKHRoaXMucmVjb25jaWxl
VHJhbnNhY3Rpb24pLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb249bnVsbH0scGVyZm9ybTpmdW5j
dGlvbihlLHQsbil7cmV0dXJuIG0ucGVyZm9ybS5jYWxsKHRoaXMsdGhpcy5yZWNvbmNpbGVUcmFu
c2FjdGlvbi5wZXJmb3JtLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24sZSx0LG4pfX0pLGYuYWRk
UG9vbGluZ1RvKG8pO3ZhciBQPWZ1bmN0aW9uKCl7Zm9yKDt5Lmxlbmd0aHx8Xzspe2lmKHkubGVu
Z3RoKXt2YXIgZT1vLmdldFBvb2xlZCgpO2UucGVyZm9ybSh1LG51bGwsZSksby5yZWxlYXNlKGUp
fWlmKF8pe189ITE7dmFyIHQ9YjtiPWQuZ2V0UG9vbGVkKCksdC5ub3RpZnlBbGwoKSxkLnJlbGVh
c2UodCl9fX0seD17aW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb246ZnVuY3Rpb24oZSl7ZT92b2lk
IDA6bCgiMTI2IiksTy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uPWV9LGluamVjdEJhdGNoaW5n
U3RyYXRlZ3k6ZnVuY3Rpb24oZSl7ZT92b2lkIDA6bCgiMTI3IiksImZ1bmN0aW9uIiE9dHlwZW9m
IGUuYmF0Y2hlZFVwZGF0ZXM/bCgiMTI4Iik6dm9pZCAwLCJib29sZWFuIiE9dHlwZW9mIGUuaXNC
YXRjaGluZ1VwZGF0ZXM/bCgiMTI5Iik6dm9pZCAwLEM9ZX19LE89e1JlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb246bnVsbCxiYXRjaGVkVXBkYXRlczppLGVucXVldWVVcGRhdGU6cyxmbHVzaEJhdGNo
ZWRVcGRhdGVzOlAsaW5qZWN0aW9uOngsYXNhcDpjfTtlLmV4cG9ydHM9T30sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3RoaXMuZGlzcGF0Y2hDb25maWc9
ZSx0aGlzLl90YXJnZXRJbnN0PXQsdGhpcy5uYXRpdmVFdmVudD1uO3ZhciBvPXRoaXMuY29uc3Ry
dWN0b3IuSW50ZXJmYWNlO2Zvcih2YXIgaSBpbiBvKWlmKG8uaGFzT3duUHJvcGVydHkoaSkpe3Zh
ciB1PW9baV07dT90aGlzW2ldPXUobik6InRhcmdldCI9PT1pP3RoaXMudGFyZ2V0PXI6dGhpc1tp
XT1uW2ldfXZhciBzPW51bGwhPW4uZGVmYXVsdFByZXZlbnRlZD9uLmRlZmF1bHRQcmV2ZW50ZWQ6
bi5yZXR1cm5WYWx1ZT09PSExO3JldHVybiBzP3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEudGhh
dFJldHVybnNUcnVlOnRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEudGhhdFJldHVybnNGYWxzZSx0
aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWEudGhhdFJldHVybnNGYWxzZSx0aGlzfXZhciBvPW4o
NCksaT1uKDEzKSxhPW4oNyksdT0obigyKSwiZnVuY3Rpb24iPT10eXBlb2YgUHJveHksWyJkaXNw
YXRjaENvbmZpZyIsIl90YXJnZXRJbnN0IiwibmF0aXZlRXZlbnQiLCJpc0RlZmF1bHRQcmV2ZW50
ZWQiLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsIl9kaXNwYXRjaExpc3RlbmVycyIsIl9kaXNwYXRj
aEluc3RhbmNlcyJdKSxzPXt0eXBlOm51bGwsdGFyZ2V0Om51bGwsY3VycmVudFRhcmdldDphLnRo
YXRSZXR1cm5zTnVsbCxldmVudFBoYXNlOm51bGwsYnViYmxlczpudWxsLGNhbmNlbGFibGU6bnVs
bCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0YW1wfHxEYXRlLm5vdygpfSxk
ZWZhdWx0UHJldmVudGVkOm51bGwsaXNUcnVzdGVkOm51bGx9O28oci5wcm90b3R5cGUse3ByZXZl
bnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBlPXRoaXMu
bmF0aXZlRXZlbnQ7ZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOiJ1bmtu
b3duIiE9dHlwZW9mIGUucmV0dXJuVmFsdWUmJihlLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVm
YXVsdFByZXZlbnRlZD1hLnRoYXRSZXR1cm5zVHJ1ZSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlv
bigpe3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUuc3RvcFByb3BhZ2F0aW9uP2Uuc3RvcFBy
b3BhZ2F0aW9uKCk6InVua25vd24iIT10eXBlb2YgZS5jYW5jZWxCdWJibGUmJihlLmNhbmNlbEJ1
YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1hLnRoYXRSZXR1cm5zVHJ1ZSl9LHBl
cnNpc3Q6ZnVuY3Rpb24oKXt0aGlzLmlzUGVyc2lzdGVudD1hLnRoYXRSZXR1cm5zVHJ1ZX0saXNQ
ZXJzaXN0ZW50OmEudGhhdFJldHVybnNGYWxzZSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGU9
dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7Zm9yKHZhciB0IGluIGUpdGhpc1t0XT1udWxsO2Zv
cih2YXIgbj0wO248dS5sZW5ndGg7bisrKXRoaXNbdVtuXV09bnVsbH19KSxyLkludGVyZmFjZT1z
LHIuYXVnbWVudENsYXNzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPWZ1bmN0aW9uKCl7fTty
LnByb3RvdHlwZT1uLnByb3RvdHlwZTt2YXIgYT1uZXcgcjtvKGEsZS5wcm90b3R5cGUpLGUucHJv
dG90eXBlPWEsZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLkludGVyZmFjZT1vKHt9LG4uSW50
ZXJmYWNlLHQpLGUuYXVnbWVudENsYXNzPW4uYXVnbWVudENsYXNzLGkuYWRkUG9vbGluZ1RvKGUs
aS5mb3VyQXJndW1lbnRQb29sZXIpfSxpLmFkZFBvb2xpbmdUbyhyLGkuZm91ckFyZ3VtZW50UG9v
bGVyKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e2N1cnJl
bnQ6bnVsbH07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBv
cnRzPW4oMTcpfSxbMjMxLDNdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtpZihtKXt2YXIgdD1lLm5vZGUsbj1lLmNoaWxkcmVuO2lmKG4ubGVuZ3RoKWZvcih2YXIg
cj0wO3I8bi5sZW5ndGg7cisrKXkodCxuW3JdLG51bGwpO2Vsc2UgbnVsbCE9ZS5odG1sP3AodCxl
Lmh0bWwpOm51bGwhPWUudGV4dCYmZih0LGUudGV4dCl9fWZ1bmN0aW9uIG8oZSx0KXtlLnBhcmVu
dE5vZGUucmVwbGFjZUNoaWxkKHQubm9kZSxlKSxyKHQpfWZ1bmN0aW9uIGkoZSx0KXttP2UuY2hp
bGRyZW4ucHVzaCh0KTplLm5vZGUuYXBwZW5kQ2hpbGQodC5ub2RlKX1mdW5jdGlvbiBhKGUsdCl7
bT9lLmh0bWw9dDpwKGUubm9kZSx0KX1mdW5jdGlvbiB1KGUsdCl7bT9lLnRleHQ9dDpmKGUubm9k
ZSx0KX1mdW5jdGlvbiBzKCl7cmV0dXJuIHRoaXMubm9kZS5ub2RlTmFtZX1mdW5jdGlvbiBjKGUp
e3JldHVybntub2RlOmUsY2hpbGRyZW46W10saHRtbDpudWxsLHRleHQ6bnVsbCx0b1N0cmluZzpz
fX12YXIgbD1uKDM1KSxwPW4oMjkpLGQ9big0MyksZj1uKDc3KSxoPTEsdj0xMSxtPSJ1bmRlZmlu
ZWQiIT10eXBlb2YgZG9jdW1lbnQmJiJudW1iZXIiPT10eXBlb2YgZG9jdW1lbnQuZG9jdW1lbnRN
b2RlfHwidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmInN0cmluZyI9PXR5cGVvZiBuYXZp
Z2F0b3IudXNlckFnZW50JiYvXGJFZGdlXC9cZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx5
PWQoZnVuY3Rpb24oZSx0LG4pe3Qubm9kZS5ub2RlVHlwZT09PXZ8fHQubm9kZS5ub2RlVHlwZT09
PWgmJiJvYmplY3QiPT09dC5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJihudWxsPT10Lm5v
ZGUubmFtZXNwYWNlVVJJfHx0Lm5vZGUubmFtZXNwYWNlVVJJPT09bC5odG1sKT8ocih0KSxlLmlu
c2VydEJlZm9yZSh0Lm5vZGUsbikpOihlLmluc2VydEJlZm9yZSh0Lm5vZGUsbikscih0KSl9KTtj
Lmluc2VydFRyZWVCZWZvcmU9eSxjLnJlcGxhY2VDaGlsZFdpdGhUcmVlPW8sYy5xdWV1ZUNoaWxk
PWksYy5xdWV1ZUhUTUw9YSxjLnF1ZXVlVGV4dD11LGUuZXhwb3J0cz1jfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4oZSZ0KT09PXR9dmFyIG89bigz
KSxpPShuKDEpLHtNVVNUX1VTRV9QUk9QRVJUWToxLEhBU19CT09MRUFOX1ZBTFVFOjQsSEFTX05V
TUVSSUNfVkFMVUU6OCxIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRToyNCxIQVNfT1ZFUkxPQURF
RF9CT09MRUFOX1ZBTFVFOjMyLGluamVjdERPTVByb3BlcnR5Q29uZmlnOmZ1bmN0aW9uKGUpe3Zh
ciB0PWksbj1lLlByb3BlcnRpZXN8fHt9LGE9ZS5ET01BdHRyaWJ1dGVOYW1lc3BhY2VzfHx7fSxz
PWUuRE9NQXR0cmlidXRlTmFtZXN8fHt9LGM9ZS5ET01Qcm9wZXJ0eU5hbWVzfHx7fSxsPWUuRE9N
TXV0YXRpb25NZXRob2RzfHx7fTtlLmlzQ3VzdG9tQXR0cmlidXRlJiZ1Ll9pc0N1c3RvbUF0dHJp
YnV0ZUZ1bmN0aW9ucy5wdXNoKGUuaXNDdXN0b21BdHRyaWJ1dGUpO2Zvcih2YXIgcCBpbiBuKXt1
LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocCk/bygiNDgiLHApOnZvaWQgMDt2YXIgZD1wLnRv
TG93ZXJDYXNlKCksZj1uW3BdLGg9e2F0dHJpYnV0ZU5hbWU6ZCxhdHRyaWJ1dGVOYW1lc3BhY2U6
bnVsbCxwcm9wZXJ0eU5hbWU6cCxtdXRhdGlvbk1ldGhvZDpudWxsLG11c3RVc2VQcm9wZXJ0eTpy
KGYsdC5NVVNUX1VTRV9QUk9QRVJUWSksaGFzQm9vbGVhblZhbHVlOnIoZix0LkhBU19CT09MRUFO
X1ZBTFVFKSxoYXNOdW1lcmljVmFsdWU6cihmLHQuSEFTX05VTUVSSUNfVkFMVUUpLGhhc1Bvc2l0
aXZlTnVtZXJpY1ZhbHVlOnIoZix0LkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFKSxoYXNPdmVy
bG9hZGVkQm9vbGVhblZhbHVlOnIoZix0LkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUpfTtp
ZihoLmhhc0Jvb2xlYW5WYWx1ZStoLmhhc051bWVyaWNWYWx1ZStoLmhhc092ZXJsb2FkZWRCb29s
ZWFuVmFsdWU8PTE/dm9pZCAwOm8oIjUwIixwKSxzLmhhc093blByb3BlcnR5KHApKXt2YXIgdj1z
W3BdO2guYXR0cmlidXRlTmFtZT12fWEuaGFzT3duUHJvcGVydHkocCkmJihoLmF0dHJpYnV0ZU5h
bWVzcGFjZT1hW3BdKSxjLmhhc093blByb3BlcnR5KHApJiYoaC5wcm9wZXJ0eU5hbWU9Y1twXSks
bC5oYXNPd25Qcm9wZXJ0eShwKSYmKGgubXV0YXRpb25NZXRob2Q9bFtwXSksdS5wcm9wZXJ0aWVz
W3BdPWh9fX0pLGE9IjpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBG
OC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1
MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENG
XFx1RkRGMC1cXHVGRkZEIix1PXtJRF9BVFRSSUJVVEVfTkFNRToiZGF0YS1yZWFjdGlkIixST09U
X0FUVFJJQlVURV9OQU1FOiJkYXRhLXJlYWN0cm9vdCIsQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hB
UjphLEFUVFJJQlVURV9OQU1FX0NIQVI6YSsiXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxcdTAzNkZc
XHUyMDNGLVxcdTIwNDAiLHByb3BlcnRpZXM6e30sZ2V0UG9zc2libGVTdGFuZGFyZE5hbWU6bnVs
bCxfaXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnM6W10saXNDdXN0b21BdHRyaWJ1dGU6ZnVuY3Rp
b24oZSl7Zm9yKHZhciB0PTA7dDx1Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5sZW5ndGg7
dCsrKXt2YXIgbj11Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uc1t0XTtpZihuKGUpKXJldHVy
biEwfXJldHVybiExfSxpbmplY3Rpb246aX07ZS5leHBvcnRzPXV9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe28uYXR0YWNoUmVmcyh0aGlzLHRoaXMuX2N1cnJlbnRF
bGVtZW50KX12YXIgbz1uKDE2MCksaT0obig4KSxuKDIpLHttb3VudENvbXBvbmVudDpmdW5jdGlv
bihlLHQsbixvLGksYSl7dmFyIHU9ZS5tb3VudENvbXBvbmVudCh0LG4sbyxpLGEpO3JldHVybiBl
Ll9jdXJyZW50RWxlbWVudCYmbnVsbCE9ZS5fY3VycmVudEVsZW1lbnQucmVmJiZ0LmdldFJlYWN0
TW91bnRSZWFkeSgpLmVucXVldWUocixlKSx1fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbihlKXtyZXR1
cm4gZS5nZXRIb3N0Tm9kZSgpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7by5kZXRh
Y2hSZWZzKGUsZS5fY3VycmVudEVsZW1lbnQpLGUudW5tb3VudENvbXBvbmVudCh0KX0scmVjZWl2
ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixpKXt2YXIgYT1lLl9jdXJyZW50RWxlbWVudDtpZih0
IT09YXx8aSE9PWUuX2NvbnRleHQpe3ZhciB1PW8uc2hvdWxkVXBkYXRlUmVmcyhhLHQpO3UmJm8u
ZGV0YWNoUmVmcyhlLGEpLGUucmVjZWl2ZUNvbXBvbmVudCh0LG4saSksdSYmZS5fY3VycmVudEVs
ZW1lbnQmJm51bGwhPWUuX2N1cnJlbnRFbGVtZW50LnJlZiYmbi5nZXRSZWFjdE1vdW50UmVhZHko
KS5lbnF1ZXVlKHIsZSl9fSxwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVuY3Rpb24oZSx0LG4p
e2UuX3VwZGF0ZUJhdGNoTnVtYmVyPT09biYmZS5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkodCl9
fSk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big0KSxv
PW4oODkpLGk9bigyMTUpLGE9bigyMTYpLHU9bigxOCkscz1uKDIxNyksYz1uKDIxOCksbD1uKDIx
OSkscD1uKDIyMyksZD11LmNyZWF0ZUVsZW1lbnQsZj11LmNyZWF0ZUZhY3RvcnksaD11LmNsb25l
RWxlbWVudCx2PXIsbT1mdW5jdGlvbihlKXtyZXR1cm4gZX0seT17Q2hpbGRyZW46e21hcDppLm1h
cCxmb3JFYWNoOmkuZm9yRWFjaCxjb3VudDppLmNvdW50LHRvQXJyYXk6aS50b0FycmF5LG9ubHk6
cH0sQ29tcG9uZW50Om8uQ29tcG9uZW50LFB1cmVDb21wb25lbnQ6by5QdXJlQ29tcG9uZW50LGNy
ZWF0ZUVsZW1lbnQ6ZCxjbG9uZUVsZW1lbnQ6aCxpc1ZhbGlkRWxlbWVudDp1LmlzVmFsaWRFbGVt
ZW50LFByb3BUeXBlczpzLGNyZWF0ZUNsYXNzOmwsY3JlYXRlRmFjdG9yeTpmLGNyZWF0ZU1peGlu
Om0sRE9NOmEsdmVyc2lvbjpjLF9fc3ByZWFkOnZ9O2UuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHZvaWQgMCE9PWUucmVmfWZ1bmN0
aW9uIG8oZSl7cmV0dXJuIHZvaWQgMCE9PWUua2V5fXZhciBpPW4oNCksYT1uKDExKSx1PShuKDIp
LG4oOTMpLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLHM9big5MSksYz17a2V5OiEw
LHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9LGw9ZnVuY3Rpb24oZSx0LG4scixvLGksYSl7
dmFyIHU9eyQkdHlwZW9mOnMsdHlwZTplLGtleTp0LHJlZjpuLHByb3BzOmEsX293bmVyOml9O3Jl
dHVybiB1fTtsLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM9e30scD1udWxs
LGQ9bnVsbCxmPW51bGwsaD1udWxsO2lmKG51bGwhPXQpe3IodCkmJihkPXQucmVmKSxvKHQpJiYo
cD0iIit0LmtleSksZj12b2lkIDA9PT10Ll9fc2VsZj9udWxsOnQuX19zZWxmLGg9dm9pZCAwPT09
dC5fX3NvdXJjZT9udWxsOnQuX19zb3VyY2U7Zm9yKGkgaW4gdCl1LmNhbGwodCxpKSYmIWMuaGFz
T3duUHJvcGVydHkoaSkmJihzW2ldPXRbaV0pfXZhciB2PWFyZ3VtZW50cy5sZW5ndGgtMjtpZigx
PT09dilzLmNoaWxkcmVuPW47ZWxzZSBpZih2PjEpe2Zvcih2YXIgbT1BcnJheSh2KSx5PTA7eTx2
O3krKyltW3ldPWFyZ3VtZW50c1t5KzJdO3MuY2hpbGRyZW49bX1pZihlJiZlLmRlZmF1bHRQcm9w
cyl7dmFyIGc9ZS5kZWZhdWx0UHJvcHM7Zm9yKGkgaW4gZyl2b2lkIDA9PT1zW2ldJiYoc1tpXT1n
W2ldKX1yZXR1cm4gbChlLHAsZCxmLGgsYS5jdXJyZW50LHMpfSxsLmNyZWF0ZUZhY3Rvcnk9ZnVu
Y3Rpb24oZSl7dmFyIHQ9bC5jcmVhdGVFbGVtZW50LmJpbmQobnVsbCxlKTtyZXR1cm4gdC50eXBl
PWUsdH0sbC5jbG9uZUFuZFJlcGxhY2VLZXk9ZnVuY3Rpb24oZSx0KXt2YXIgbj1sKGUudHlwZSx0
LGUucmVmLGUuX3NlbGYsZS5fc291cmNlLGUuX293bmVyLGUucHJvcHMpO3JldHVybiBufSxsLmNs
b25lRWxlbWVudD1mdW5jdGlvbihlLHQsbil7dmFyIHMscD1pKHt9LGUucHJvcHMpLGQ9ZS5rZXks
Zj1lLnJlZixoPWUuX3NlbGYsdj1lLl9zb3VyY2UsbT1lLl9vd25lcjtpZihudWxsIT10KXtyKHQp
JiYoZj10LnJlZixtPWEuY3VycmVudCksbyh0KSYmKGQ9IiIrdC5rZXkpO3ZhciB5O2UudHlwZSYm
ZS50eXBlLmRlZmF1bHRQcm9wcyYmKHk9ZS50eXBlLmRlZmF1bHRQcm9wcyk7Zm9yKHMgaW4gdCl1
LmNhbGwodCxzKSYmIWMuaGFzT3duUHJvcGVydHkocykmJih2b2lkIDA9PT10W3NdJiZ2b2lkIDAh
PT15P3Bbc109eVtzXTpwW3NdPXRbc10pfXZhciBnPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09
ZylwLmNoaWxkcmVuPW47ZWxzZSBpZihnPjEpe2Zvcih2YXIgYj1BcnJheShnKSxfPTA7XzxnO18r
KyliW19dPWFyZ3VtZW50c1tfKzJdO3AuY2hpbGRyZW49Yn1yZXR1cm4gbChlLnR5cGUsZCxmLGgs
dixtLHApfSxsLmlzVmFsaWRFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBl
b2YgZSYmbnVsbCE9PWUmJmUuJCR0eXBlb2Y9PT1zfSxlLmV4cG9ydHM9bH0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiJidXR0b24iPT09ZXx8ImlucHV0
Ij09PWV8fCJzZWxlY3QiPT09ZXx8InRleHRhcmVhIj09PWV9ZnVuY3Rpb24gbyhlLHQsbil7c3dp
dGNoKGUpe2Nhc2Uib25DbGljayI6Y2FzZSJvbkNsaWNrQ2FwdHVyZSI6Y2FzZSJvbkRvdWJsZUNs
aWNrIjpjYXNlIm9uRG91YmxlQ2xpY2tDYXB0dXJlIjpjYXNlIm9uTW91c2VEb3duIjpjYXNlIm9u
TW91c2VEb3duQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlTW92ZSI6Y2FzZSJvbk1vdXNlTW92ZUNhcHR1
cmUiOmNhc2Uib25Nb3VzZVVwIjpjYXNlIm9uTW91c2VVcENhcHR1cmUiOnJldHVybiEoIW4uZGlz
YWJsZWR8fCFyKHQpKTtkZWZhdWx0OnJldHVybiExfX12YXIgaT1uKDMpLGE9bigzNiksdT1uKDM3
KSxzPW4oNDEpLGM9big3MCksbD1uKDcxKSxwPShuKDEpLHt9KSxkPW51bGwsZj1mdW5jdGlvbihl
LHQpe2UmJih1LmV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcihlLHQpLGUuaXNQZXJzaXN0ZW50KCl8
fGUuY29uc3RydWN0b3IucmVsZWFzZShlKSl9LGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGYoZSwhMCl9
LHY9ZnVuY3Rpb24oZSl7cmV0dXJuIGYoZSwhMSl9LG09ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK2Uu
X3Jvb3ROb2RlSUR9LHk9e2luamVjdGlvbjp7aW5qZWN0RXZlbnRQbHVnaW5PcmRlcjphLmluamVj
dEV2ZW50UGx1Z2luT3JkZXIsaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOmEuaW5qZWN0RXZlbnRQ
bHVnaW5zQnlOYW1lfSxwdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7ImZ1bmN0aW9uIiE9dHlw
ZW9mIG4/aSgiOTQiLHQsdHlwZW9mIG4pOnZvaWQgMDt2YXIgcj1tKGUpLG89cFt0XXx8KHBbdF09
e30pO29bcl09bjt2YXIgdT1hLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3RdO3UmJnUuZGlkUHV0
TGlzdGVuZXImJnUuZGlkUHV0TGlzdGVuZXIoZSx0LG4pfSxnZXRMaXN0ZW5lcjpmdW5jdGlvbihl
LHQpe3ZhciBuPXBbdF07aWYobyh0LGUuX2N1cnJlbnRFbGVtZW50LnR5cGUsZS5fY3VycmVudEVs
ZW1lbnQucHJvcHMpKXJldHVybiBudWxsO3ZhciByPW0oZSk7cmV0dXJuIG4mJm5bcl19LGRlbGV0
ZUxpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49YS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0
XTtuJiZuLndpbGxEZWxldGVMaXN0ZW5lciYmbi53aWxsRGVsZXRlTGlzdGVuZXIoZSx0KTt2YXIg
cj1wW3RdO2lmKHIpe3ZhciBvPW0oZSk7ZGVsZXRlIHJbb119fSxkZWxldGVBbGxMaXN0ZW5lcnM6
ZnVuY3Rpb24oZSl7dmFyIHQ9bShlKTtmb3IodmFyIG4gaW4gcClpZihwLmhhc093blByb3BlcnR5
KG4pJiZwW25dW3RdKXt2YXIgcj1hLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW25dO3ImJnIud2ls
bERlbGV0ZUxpc3RlbmVyJiZyLndpbGxEZWxldGVMaXN0ZW5lcihlLG4pLGRlbGV0ZSBwW25dW3Rd
fX0sZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIG8saT1hLnBsdWdpbnMs
dT0wO3U8aS5sZW5ndGg7dSsrKXt2YXIgcz1pW3VdO2lmKHMpe3ZhciBsPXMuZXh0cmFjdEV2ZW50
cyhlLHQsbixyKTtsJiYobz1jKG8sbCkpfX1yZXR1cm4gb30sZW5xdWV1ZUV2ZW50czpmdW5jdGlv
bihlKXtlJiYoZD1jKGQsZSkpfSxwcm9jZXNzRXZlbnRRdWV1ZTpmdW5jdGlvbihlKXt2YXIgdD1k
O2Q9bnVsbCxlP2wodCxoKTpsKHQsdiksZD9pKCI5NSIpOnZvaWQgMCxzLnJldGhyb3dDYXVnaHRF
cnJvcigpfSxfX3B1cmdlOmZ1bmN0aW9uKCl7cD17fX0sX19nZXRMaXN0ZW5lckJhbms6ZnVuY3Rp
b24oKXtyZXR1cm4gcH19O2UuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0LG4pe3ZhciByPXQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXNbbl07cmV0dXJuIHkoZSxyKX1mdW5jdGlvbiBvKGUsdCxuKXt2YXIgbz1yKGUsbix0
KTtvJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9dihuLl9kaXNwYXRjaExpc3RlbmVycyxvKSxuLl9k
aXNwYXRjaEluc3RhbmNlcz12KG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlvbiBpKGUp
e2UmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMmJmgudHJhdmVyc2VU
d29QaGFzZShlLl90YXJnZXRJbnN0LG8sZSl9ZnVuY3Rpb24gYShlKXtpZihlJiZlLmRpc3BhdGNo
Q29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXt2YXIgdD1lLl90YXJnZXRJbnN0LG49dD9o
LmdldFBhcmVudEluc3RhbmNlKHQpOm51bGw7aC50cmF2ZXJzZVR3b1BoYXNlKG4sbyxlKX19ZnVu
Y3Rpb24gdShlLHQsbil7aWYobiYmbi5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKXt2
YXIgcj1uLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUsbz15KGUscik7byYmKG4uX2Rp
c3BhdGNoTGlzdGVuZXJzPXYobi5fZGlzcGF0Y2hMaXN0ZW5lcnMsbyksbi5fZGlzcGF0Y2hJbnN0
YW5jZXM9dihuLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9fWZ1bmN0aW9uIHMoZSl7ZSYmZS5kaXNw
YXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lJiZ1KGUuX3RhcmdldEluc3QsbnVsbCxlKX1mdW5j
dGlvbiBjKGUpe20oZSxpKX1mdW5jdGlvbiBsKGUpe20oZSxhKX1mdW5jdGlvbiBwKGUsdCxuLHIp
e2gudHJhdmVyc2VFbnRlckxlYXZlKG4scix1LGUsdCl9ZnVuY3Rpb24gZChlKXttKGUscyl9dmFy
IGY9bigxOSksaD1uKDM3KSx2PW4oNzApLG09big3MSkseT0obigyKSxmLmdldExpc3RlbmVyKSxn
PXthY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzOmMsYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0
Y2hlc1NraXBUYXJnZXQ6bCxhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlczpkLGFjY3VtdWxhdGVF
bnRlckxlYXZlRGlzcGF0Y2hlczpwfTtlLmV4cG9ydHM9Z30sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7dmFyIG49e3JlbW92ZTpmdW5jdGlvbihlKXtlLl9yZWFjdEludGVybmFsSW5zdGFuY2U9
dm9pZCAwfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZX0s
aGFzOmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lLl9yZWFjdEludGVybmFsSW5zdGFuY2V9
LHNldDpmdW5jdGlvbihlLHQpe2UuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZT10fX07ZS5leHBvcnRz
PW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1
cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigxMCksaT1uKDQ2KSxhPXt2aWV3OmZ1bmN0
aW9uKGUpe2lmKGUudmlldylyZXR1cm4gZS52aWV3O3ZhciB0PWkoZSk7aWYodC53aW5kb3c9PT10
KXJldHVybiB0O3ZhciBuPXQub3duZXJEb2N1bWVudDtyZXR1cm4gbj9uLmRlZmF1bHRWaWV3fHxu
LnBhcmVudFdpbmRvdzp3aW5kb3d9LGRldGFpbDpmdW5jdGlvbihlKXtyZXR1cm4gZS5kZXRhaWx8
fDB9fTtvLmF1Z21lbnRDbGFzcyhyLGEpLGUuZXhwb3J0cz1yfSwzLGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9e307ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eS5jYWxsKGUsdil8fChlW3ZdPWYrKyxwW2Vbdl1dPXt9KSxwW2Vbdl1dfXZhciBvLGk9big0KSxh
PW4oMzYpLHU9bigxNTIpLHM9big2OSksYz1uKDE4NCksbD1uKDQ3KSxwPXt9LGQ9ITEsZj0wLGg9
e3RvcEFib3J0OiJhYm9ydCIsdG9wQW5pbWF0aW9uRW5kOmMoImFuaW1hdGlvbmVuZCIpfHwiYW5p
bWF0aW9uZW5kIix0b3BBbmltYXRpb25JdGVyYXRpb246YygiYW5pbWF0aW9uaXRlcmF0aW9uIil8
fCJhbmltYXRpb25pdGVyYXRpb24iLHRvcEFuaW1hdGlvblN0YXJ0OmMoImFuaW1hdGlvbnN0YXJ0
Iil8fCJhbmltYXRpb25zdGFydCIsdG9wQmx1cjoiYmx1ciIsdG9wQ2FuUGxheToiY2FucGxheSIs
dG9wQ2FuUGxheVRocm91Z2g6ImNhbnBsYXl0aHJvdWdoIix0b3BDaGFuZ2U6ImNoYW5nZSIsdG9w
Q2xpY2s6ImNsaWNrIix0b3BDb21wb3NpdGlvbkVuZDoiY29tcG9zaXRpb25lbmQiLHRvcENvbXBv
c2l0aW9uU3RhcnQ6ImNvbXBvc2l0aW9uc3RhcnQiLHRvcENvbXBvc2l0aW9uVXBkYXRlOiJjb21w
b3NpdGlvbnVwZGF0ZSIsdG9wQ29udGV4dE1lbnU6ImNvbnRleHRtZW51Iix0b3BDb3B5OiJjb3B5
Iix0b3BDdXQ6ImN1dCIsdG9wRG91YmxlQ2xpY2s6ImRibGNsaWNrIix0b3BEcmFnOiJkcmFnIix0
b3BEcmFnRW5kOiJkcmFnZW5kIix0b3BEcmFnRW50ZXI6ImRyYWdlbnRlciIsdG9wRHJhZ0V4aXQ6
ImRyYWdleGl0Iix0b3BEcmFnTGVhdmU6ImRyYWdsZWF2ZSIsdG9wRHJhZ092ZXI6ImRyYWdvdmVy
Iix0b3BEcmFnU3RhcnQ6ImRyYWdzdGFydCIsdG9wRHJvcDoiZHJvcCIsdG9wRHVyYXRpb25DaGFu
Z2U6ImR1cmF0aW9uY2hhbmdlIix0b3BFbXB0aWVkOiJlbXB0aWVkIix0b3BFbmNyeXB0ZWQ6ImVu
Y3J5cHRlZCIsdG9wRW5kZWQ6ImVuZGVkIix0b3BFcnJvcjoiZXJyb3IiLHRvcEZvY3VzOiJmb2N1
cyIsdG9wSW5wdXQ6ImlucHV0Iix0b3BLZXlEb3duOiJrZXlkb3duIix0b3BLZXlQcmVzczoia2V5
cHJlc3MiLHRvcEtleVVwOiJrZXl1cCIsdG9wTG9hZGVkRGF0YToibG9hZGVkZGF0YSIsdG9wTG9h
ZGVkTWV0YWRhdGE6ImxvYWRlZG1ldGFkYXRhIix0b3BMb2FkU3RhcnQ6ImxvYWRzdGFydCIsdG9w
TW91c2VEb3duOiJtb3VzZWRvd24iLHRvcE1vdXNlTW92ZToibW91c2Vtb3ZlIix0b3BNb3VzZU91
dDoibW91c2VvdXQiLHRvcE1vdXNlT3ZlcjoibW91c2VvdmVyIix0b3BNb3VzZVVwOiJtb3VzZXVw
Iix0b3BQYXN0ZToicGFzdGUiLHRvcFBhdXNlOiJwYXVzZSIsdG9wUGxheToicGxheSIsdG9wUGxh
eWluZzoicGxheWluZyIsdG9wUHJvZ3Jlc3M6InByb2dyZXNzIix0b3BSYXRlQ2hhbmdlOiJyYXRl
Y2hhbmdlIix0b3BTY3JvbGw6InNjcm9sbCIsdG9wU2Vla2VkOiJzZWVrZWQiLHRvcFNlZWtpbmc6
InNlZWtpbmciLHRvcFNlbGVjdGlvbkNoYW5nZToic2VsZWN0aW9uY2hhbmdlIix0b3BTdGFsbGVk
OiJzdGFsbGVkIix0b3BTdXNwZW5kOiJzdXNwZW5kIix0b3BUZXh0SW5wdXQ6InRleHRJbnB1dCIs
dG9wVGltZVVwZGF0ZToidGltZXVwZGF0ZSIsdG9wVG91Y2hDYW5jZWw6InRvdWNoY2FuY2VsIix0
b3BUb3VjaEVuZDoidG91Y2hlbmQiLHRvcFRvdWNoTW92ZToidG91Y2htb3ZlIix0b3BUb3VjaFN0
YXJ0OiJ0b3VjaHN0YXJ0Iix0b3BUcmFuc2l0aW9uRW5kOmMoInRyYW5zaXRpb25lbmQiKXx8InRy
YW5zaXRpb25lbmQiLHRvcFZvbHVtZUNoYW5nZToidm9sdW1lY2hhbmdlIix0b3BXYWl0aW5nOiJ3
YWl0aW5nIix0b3BXaGVlbDoid2hlZWwifSx2PSJfcmVhY3RMaXN0ZW5lcnNJRCIrU3RyaW5nKE1h
dGgucmFuZG9tKCkpLnNsaWNlKDIpLG09aSh7fSx1LHtSZWFjdEV2ZW50TGlzdGVuZXI6bnVsbCxp
bmplY3Rpb246e2luamVjdFJlYWN0RXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihlKXtlLnNldEhhbmRs
ZVRvcExldmVsKG0uaGFuZGxlVG9wTGV2ZWwpLG0uUmVhY3RFdmVudExpc3RlbmVyPWV9fSxzZXRF
bmFibGVkOmZ1bmN0aW9uKGUpe20uUmVhY3RFdmVudExpc3RlbmVyJiZtLlJlYWN0RXZlbnRMaXN0
ZW5lci5zZXRFbmFibGVkKGUpfSxpc0VuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hKCFtLlJlYWN0
RXZlbnRMaXN0ZW5lcnx8IW0uUmVhY3RFdmVudExpc3RlbmVyLmlzRW5hYmxlZCgpKX0sbGlzdGVu
VG86ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dCxvPXIobiksaT1hLnJlZ2lzdHJhdGlvbk5hbWVE
ZXBlbmRlbmNpZXNbZV0sdT0wO3U8aS5sZW5ndGg7dSsrKXt2YXIgcz1pW3VdO28uaGFzT3duUHJv
cGVydHkocykmJm9bc118fCgidG9wV2hlZWwiPT09cz9sKCJ3aGVlbCIpP20uUmVhY3RFdmVudExp
c3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFdoZWVsIiwid2hlZWwiLG4pOmwoIm1vdXNld2hl
ZWwiKT9tLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BXaGVlbCIsIm1v
dXNld2hlZWwiLG4pOm0uUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFdo
ZWVsIiwiRE9NTW91c2VTY3JvbGwiLG4pOiJ0b3BTY3JvbGwiPT09cz9sKCJzY3JvbGwiLCEwKT9t
LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgidG9wU2Nyb2xsIiwic2Nyb2xs
IixuKTptLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BTY3JvbGwiLCJz
Y3JvbGwiLG0uUmVhY3RFdmVudExpc3RlbmVyLldJTkRPV19IQU5ETEUpOiJ0b3BGb2N1cyI9PT1z
fHwidG9wQmx1ciI9PT1zPyhsKCJmb2N1cyIsITApPyhtLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFw
Q2FwdHVyZWRFdmVudCgidG9wRm9jdXMiLCJmb2N1cyIsbiksbS5SZWFjdEV2ZW50TGlzdGVuZXIu
dHJhcENhcHR1cmVkRXZlbnQoInRvcEJsdXIiLCJibHVyIixuKSk6bCgiZm9jdXNpbiIpJiYobS5S
ZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wRm9jdXMiLCJmb2N1c2luIixu
KSxtLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BCbHVyIiwiZm9jdXNv
dXQiLG4pKSxvLnRvcEJsdXI9ITAsby50b3BGb2N1cz0hMCk6aC5oYXNPd25Qcm9wZXJ0eShzKSYm
bS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudChzLGhbc10sbiksb1tzXT0hMCl9
fSx0cmFwQnViYmxlZEV2ZW50OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbS5SZWFjdEV2ZW50TGlz
dGVuZXIudHJhcEJ1YmJsZWRFdmVudChlLHQsbil9LHRyYXBDYXB0dXJlZEV2ZW50OmZ1bmN0aW9u
KGUsdCxuKXtyZXR1cm4gbS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoZSx0
LG4pfSxzdXBwb3J0c0V2ZW50UGFnZVhZOmZ1bmN0aW9uKCl7aWYoIWRvY3VtZW50LmNyZWF0ZUV2
ZW50KXJldHVybiExO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50Iik7cmV0
dXJuIG51bGwhPWUmJiJwYWdlWCJpbiBlfSxlbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3Jpbmc6ZnVu
Y3Rpb24oKXtpZih2b2lkIDA9PT1vJiYobz1tLnN1cHBvcnRzRXZlbnRQYWdlWFkoKSksIW8mJiFk
KXt2YXIgZT1zLnJlZnJlc2hTY3JvbGxWYWx1ZXM7bS5SZWFjdEV2ZW50TGlzdGVuZXIubW9uaXRv
clNjcm9sbFZhbHVlKGUpLGQ9ITB9fX0pO2UuZXhwb3J0cz1tfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIp
fXZhciBvPW4oMjIpLGk9big2OSksYT1uKDQ1KSx1PXtzY3JlZW5YOm51bGwsc2NyZWVuWTpudWxs
LGNsaWVudFg6bnVsbCxjbGllbnRZOm51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsYWx0
S2V5Om51bGwsbWV0YUtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6YSxidXR0b246ZnVuY3Rpb24o
ZSl7dmFyIHQ9ZS5idXR0b247cmV0dXJuIndoaWNoImluIGU/dDoyPT09dD8yOjQ9PT10PzE6MH0s
YnV0dG9uczpudWxsLHJlbGF0ZWRUYXJnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVsYXRlZFRh
cmdldHx8KGUuZnJvbUVsZW1lbnQ9PT1lLnNyY0VsZW1lbnQ/ZS50b0VsZW1lbnQ6ZS5mcm9tRWxl
bWVudCl9LHBhZ2VYOmZ1bmN0aW9uKGUpe3JldHVybiJwYWdlWCJpbiBlP2UucGFnZVg6ZS5jbGll
bnRYK2kuY3VycmVudFNjcm9sbExlZnR9LHBhZ2VZOmZ1bmN0aW9uKGUpe3JldHVybiJwYWdlWSJp
biBlP2UucGFnZVk6ZS5jbGllbnRZK2kuY3VycmVudFNjcm9sbFRvcH19O28uYXVnbWVudENsYXNz
KHIsdSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigz
KSxvPShuKDEpLHt9KSxpPXtyZWluaXRpYWxpemVUcmFuc2FjdGlvbjpmdW5jdGlvbigpe3RoaXMu
dHJhbnNhY3Rpb25XcmFwcGVycz10aGlzLmdldFRyYW5zYWN0aW9uV3JhcHBlcnMoKSx0aGlzLndy
YXBwZXJJbml0RGF0YT90aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGg9MDp0aGlzLndyYXBwZXJJ
bml0RGF0YT1bXSx0aGlzLl9pc0luVHJhbnNhY3Rpb249ITF9LF9pc0luVHJhbnNhY3Rpb246ITEs
Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpudWxsLGlzSW5UcmFuc2FjdGlvbjpmdW5jdGlvbigpe3Jl
dHVybiEhdGhpcy5faXNJblRyYW5zYWN0aW9ufSxwZXJmb3JtOmZ1bmN0aW9uKGUsdCxuLG8saSxh
LHUscyl7dGhpcy5pc0luVHJhbnNhY3Rpb24oKT9yKCIyNyIpOnZvaWQgMDt2YXIgYyxsO3RyeXt0
aGlzLl9pc0luVHJhbnNhY3Rpb249ITAsYz0hMCx0aGlzLmluaXRpYWxpemVBbGwoMCksbD1lLmNh
bGwodCxuLG8saSxhLHUscyksYz0hMX1maW5hbGx5e3RyeXtpZihjKXRyeXt0aGlzLmNsb3NlQWxs
KDApfWNhdGNoKHApe31lbHNlIHRoaXMuY2xvc2VBbGwoMCl9ZmluYWxseXt0aGlzLl9pc0luVHJh
bnNhY3Rpb249ITF9fXJldHVybiBsfSxpbml0aWFsaXplQWxsOmZ1bmN0aW9uKGUpe2Zvcih2YXIg
dD10aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMsbj1lO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25d
O3RyeXt0aGlzLndyYXBwZXJJbml0RGF0YVtuXT1vLHRoaXMud3JhcHBlckluaXREYXRhW25dPXIu
aW5pdGlhbGl6ZT9yLmluaXRpYWxpemUuY2FsbCh0aGlzKTpudWxsfWZpbmFsbHl7aWYodGhpcy53
cmFwcGVySW5pdERhdGFbbl09PT1vKXRyeXt0aGlzLmluaXRpYWxpemVBbGwobisxKX1jYXRjaChp
KXt9fX19LGNsb3NlQWxsOmZ1bmN0aW9uKGUpe3RoaXMuaXNJblRyYW5zYWN0aW9uKCk/dm9pZCAw
OnIoIjI4Iik7Zm9yKHZhciB0PXRoaXMudHJhbnNhY3Rpb25XcmFwcGVycyxuPWU7bjx0Lmxlbmd0
aDtuKyspe3ZhciBpLGE9dFtuXSx1PXRoaXMud3JhcHBlckluaXREYXRhW25dO3RyeXtpPSEwLHUh
PT1vJiZhLmNsb3NlJiZhLmNsb3NlLmNhbGwodGhpcyx1KSxpPSExfWZpbmFsbHl7aWYoaSl0cnl7
dGhpcy5jbG9zZUFsbChuKzEpfWNhdGNoKHMpe319fXRoaXMud3JhcHBlckluaXREYXRhLmxlbmd0
aD0wfX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4o
ZSl7dmFyIHQ9IiIrZSxuPW8uZXhlYyh0KTtpZighbilyZXR1cm4gdDt2YXIgcixpPSIiLGE9MCx1
PTA7Zm9yKGE9bi5pbmRleDthPHQubGVuZ3RoO2ErKyl7c3dpdGNoKHQuY2hhckNvZGVBdChhKSl7
Y2FzZSAzNDpyPSImcXVvdDsiO2JyZWFrO2Nhc2UgMzg6cj0iJmFtcDsiO2JyZWFrO2Nhc2UgMzk6
cj0iJiN4Mjc7IjticmVhaztjYXNlIDYwOnI9IiZsdDsiO2JyZWFrO2Nhc2UgNjI6cj0iJmd0OyI7
YnJlYWs7ZGVmYXVsdDpjb250aW51ZX11IT09YSYmKGkrPXQuc3Vic3RyaW5nKHUsYSkpLHU9YSsx
LGkrPXJ9cmV0dXJuIHUhPT1hP2krdC5zdWJzdHJpbmcodSxhKTppfWZ1bmN0aW9uIHIoZSl7cmV0
dXJuImJvb2xlYW4iPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlPyIiK2U6bihlKX12YXIg
bz0vWyInJjw+XS87ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHIsbz1uKDYpLGk9bigzNSksYT0vXlsgXHJcblx0XGZdLyx1PS88KCEtLXxsaW5rfG5vc2NyaXB0
fG1ldGF8c2NyaXB0fHN0eWxlKVsgXHJcblx0XGZcLz5dLyxzPW4oNDMpLGM9cyhmdW5jdGlvbihl
LHQpe2lmKGUubmFtZXNwYWNlVVJJIT09aS5zdmd8fCJpbm5lckhUTUwiaW4gZSllLmlubmVySFRN
TD10O2Vsc2V7cj1yfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxyLmlubmVySFRNTD0i
PHN2Zz4iK3QrIjwvc3ZnPiI7Zm9yKHZhciBuPXIuZmlyc3RDaGlsZDtuLmZpcnN0Q2hpbGQ7KWUu
YXBwZW5kQ2hpbGQobi5maXJzdENoaWxkKX19KTtpZihvLmNhblVzZURPTSl7dmFyIGw9ZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5pbm5lckhUTUw9IiAiLCIiPT09bC5pbm5lckhUTUwm
JihjPWZ1bmN0aW9uKGUsdCl7aWYoZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVwbGFjZUNo
aWxkKGUsZSksYS50ZXN0KHQpfHwiPCI9PT10WzBdJiZ1LnRlc3QodCkpe2UuaW5uZXJIVE1MPVN0
cmluZy5mcm9tQ2hhckNvZGUoNjUyNzkpK3Q7dmFyIG49ZS5maXJzdENoaWxkOzE9PT1uLmRhdGEu
bGVuZ3RoP2UucmVtb3ZlQ2hpbGQobik6bi5kZWxldGVEYXRhKDAsMSl9ZWxzZSBlLmlubmVySFRN
TD10fSksbD1udWxsfWUuZXhwb3J0cz1jfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXQuX19lc01v
ZHVsZT0hMCx0LmNvbXBvc2U9dC5hcHBseU1pZGRsZXdhcmU9dC5iaW5kQWN0aW9uQ3JlYXRvcnM9
dC5jb21iaW5lUmVkdWNlcnM9dC5jcmVhdGVTdG9yZT12b2lkIDA7dmFyIG89big5NSksaT1yKG8p
LGE9bigyMjcpLHU9cihhKSxzPW4oMjI2KSxjPXIocyksbD1uKDIyNSkscD1yKGwpLGQ9big5NCks
Zj1yKGQpLGg9big5Nik7cihoKTt0LmNyZWF0ZVN0b3JlPWkuZGVmYXVsdCx0LmNvbWJpbmVSZWR1
Y2Vycz11LmRlZmF1bHQsdC5iaW5kQWN0aW9uQ3JlYXRvcnM9Yy5kZWZhdWx0LHQuYXBwbHlNaWRk
bGV3YXJlPXAuZGVmYXVsdCx0LmNvbXBvc2U9Zi5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7dmFy
IHIsbzshZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe2Zvcih2YXIgZT1bXSx0
PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9YXJndW1lbnRzW3RdO2lmKHIpe3ZhciBv
PXR5cGVvZiByO2lmKCJzdHJpbmciPT09b3x8Im51bWJlciI9PT1vKWUucHVzaChyKTtlbHNlIGlm
KEFycmF5LmlzQXJyYXkocikpZS5wdXNoKG4uYXBwbHkobnVsbCxyKSk7ZWxzZSBpZigib2JqZWN0
Ij09PW8pZm9yKHZhciBhIGluIHIpaS5jYWxsKHIsYSkmJnJbYV0mJmUucHVzaChhKX19cmV0dXJu
IGUuam9pbigiICIpfXZhciBpPXt9Lmhhc093blByb3BlcnR5OyJ1bmRlZmluZWQiIT10eXBlb2Yg
ZSYmZS5leHBvcnRzP2UuZXhwb3J0cz1uOihyPVtdLG89ZnVuY3Rpb24oKXtyZXR1cm4gbn0uYXBw
bHkodCxyKSwhKHZvaWQgMCE9PW8mJihlLmV4cG9ydHM9bykpKX0oKX0sZnVuY3Rpb24oZSx0KXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe3JldHVybiBlPT09dD8wIT09ZXx8MCE9PXR8fDEv
ZT09PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rpb24gcihlLHQpe2lmKG4oZSx0KSlyZXR1cm4hMDtp
Zigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIHR8fG51bGw9
PT10KXJldHVybiExO3ZhciByPU9iamVjdC5rZXlzKGUpLGk9T2JqZWN0LmtleXModCk7aWYoci5s
ZW5ndGghPT1pLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGE9MDthPHIubGVuZ3RoO2ErKylpZigh
by5jYWxsKHQsclthXSl8fCFuKGVbclthXV0sdFtyW2FdXSkpcmV0dXJuITE7cmV0dXJuITB9dmFy
IG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24o
ZSx0LG4pe2Z1bmN0aW9uIHIoZSl7aWYoIWEoZSl8fG8oZSkhPXUpcmV0dXJuITE7dmFyIHQ9aShl
KTtpZihudWxsPT09dClyZXR1cm4hMDt2YXIgbj1wLmNhbGwodCwiY29uc3RydWN0b3IiKSYmdC5j
b25zdHJ1Y3RvcjtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbiYmbiBpbnN0YW5jZW9mIG4mJmwu
Y2FsbChuKT09ZH12YXIgbz1uKDExMiksaT1uKDExNCksYT1uKDExOSksdT0iW29iamVjdCBPYmpl
Y3RdIixzPUZ1bmN0aW9uLnByb3RvdHlwZSxjPU9iamVjdC5wcm90b3R5cGUsbD1zLnRvU3RyaW5n
LHA9Yy5oYXNPd25Qcm9wZXJ0eSxkPWwuY2FsbChPYmplY3QpO2UuZXhwb3J0cz1yfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJh
eSh0KSYmKHQ9dFsxXSksdD90Lm5leHRTaWJsaW5nOmUuZmlyc3RDaGlsZH1mdW5jdGlvbiBvKGUs
dCxuKXtsLmluc2VydFRyZWVCZWZvcmUoZSx0LG4pfWZ1bmN0aW9uIGkoZSx0LG4pe0FycmF5Lmlz
QXJyYXkodCk/dShlLHRbMF0sdFsxXSxuKTp2KGUsdCxuKX1mdW5jdGlvbiBhKGUsdCl7aWYoQXJy
YXkuaXNBcnJheSh0KSl7dmFyIG49dFsxXTt0PXRbMF0scyhlLHQsbiksZS5yZW1vdmVDaGlsZChu
KX1lLnJlbW92ZUNoaWxkKHQpfWZ1bmN0aW9uIHUoZSx0LG4scil7Zm9yKHZhciBvPXQ7Oyl7dmFy
IGk9by5uZXh0U2libGluZztpZih2KGUsbyxyKSxvPT09bilicmVhaztvPWl9fWZ1bmN0aW9uIHMo
ZSx0LG4pe2Zvcig7Oyl7dmFyIHI9dC5uZXh0U2libGluZztpZihyPT09bilicmVhaztlLnJlbW92
ZUNoaWxkKHIpfX1mdW5jdGlvbiBjKGUsdCxuKXt2YXIgcj1lLnBhcmVudE5vZGUsbz1lLm5leHRT
aWJsaW5nO289PT10P24mJnYocixkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuKSxvKTpuPyhoKG8s
bikscyhyLG8sdCkpOnMocixlLHQpfXZhciBsPW4oMTQpLHA9bigxMjkpLGQ9KG4oNSksbig4KSxu
KDQzKSksZj1uKDI5KSxoPW4oNzcpLHY9ZChmdW5jdGlvbihlLHQsbil7ZS5pbnNlcnRCZWZvcmUo
dCxuKX0pLG09cC5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCx5PXtkYW5nZXJvdXNs
eVJlcGxhY2VOb2RlV2l0aE1hcmt1cDptLHJlcGxhY2VEZWxpbWl0ZWRUZXh0OmMscHJvY2Vzc1Vw
ZGF0ZXM6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHU9dFtu
XTtzd2l0Y2godS50eXBlKXtjYXNlIklOU0VSVF9NQVJLVVAiOm8oZSx1LmNvbnRlbnQscihlLHUu
YWZ0ZXJOb2RlKSk7YnJlYWs7Y2FzZSJNT1ZFX0VYSVNUSU5HIjppKGUsdS5mcm9tTm9kZSxyKGUs
dS5hZnRlck5vZGUpKTticmVhaztjYXNlIlNFVF9NQVJLVVAiOmYoZSx1LmNvbnRlbnQpO2JyZWFr
O2Nhc2UiVEVYVF9DT05URU5UIjpoKGUsdS5jb250ZW50KTticmVhaztjYXNlIlJFTU9WRV9OT0RF
IjphKGUsdS5mcm9tTm9kZSl9fX19O2UuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3Ry
aWN0Ijt2YXIgbj17aHRtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsbWF0aG1sOiJo
dHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIixzdmc6Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIn07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcigpe2lmKHUpZm9yKHZhciBlIGluIHMpe3ZhciB0PXNbZV0sbj11LmluZGV4T2YoZSk7
aWYobj4tMT92b2lkIDA6YSgiOTYiLGUpLCFjLnBsdWdpbnNbbl0pe3QuZXh0cmFjdEV2ZW50cz92
b2lkIDA6YSgiOTciLGUpLGMucGx1Z2luc1tuXT10O3ZhciByPXQuZXZlbnRUeXBlcztmb3IodmFy
IGkgaW4gcilvKHJbaV0sdCxpKT92b2lkIDA6YSgiOTgiLGksZSl9fX1mdW5jdGlvbiBvKGUsdCxu
KXtjLmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0eShuKT9hKCI5OSIsbik6
dm9pZCAwLGMuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzW25dPWU7dmFyIHI9ZS5waGFzZWRSZWdp
c3RyYXRpb25OYW1lcztpZihyKXtmb3IodmFyIG8gaW4gcilpZihyLmhhc093blByb3BlcnR5KG8p
KXt2YXIgdT1yW29dO2kodSx0LG4pfXJldHVybiEwfXJldHVybiEhZS5yZWdpc3RyYXRpb25OYW1l
JiYoaShlLnJlZ2lzdHJhdGlvbk5hbWUsdCxuKSwhMCl9ZnVuY3Rpb24gaShlLHQsbil7Yy5yZWdp
c3RyYXRpb25OYW1lTW9kdWxlc1tlXT9hKCIxMDAiLGUpOnZvaWQgMCxjLnJlZ2lzdHJhdGlvbk5h
bWVNb2R1bGVzW2VdPXQsYy5yZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzW2VdPXQuZXZlbnRU
eXBlc1tuXS5kZXBlbmRlbmNpZXN9dmFyIGE9bigzKSx1PShuKDEpLG51bGwpLHM9e30sYz17cGx1
Z2luczpbXSxldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M6e30scmVnaXN0cmF0aW9uTmFtZU1vZHVs
ZXM6e30scmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llczp7fSxwb3NzaWJsZVJlZ2lzdHJhdGlv
bk5hbWVzOm51bGwsaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjpmdW5jdGlvbihlKXt1P2EoIjEwMSIp
OnZvaWQgMCx1PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpLHIoKX0saW5qZWN0RXZlbnRQ
bHVnaW5zQnlOYW1lOmZ1bmN0aW9uKGUpe3ZhciB0PSExO2Zvcih2YXIgbiBpbiBlKWlmKGUuaGFz
T3duUHJvcGVydHkobikpe3ZhciBvPWVbbl07cy5oYXNPd25Qcm9wZXJ0eShuKSYmc1tuXT09PW98
fChzW25dP2EoIjEwMiIsbik6dm9pZCAwLHNbbl09byx0PSEwKX10JiZyKCl9LGdldFBsdWdpbk1v
ZHVsZUZvckV2ZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUuZGlzcGF0Y2hDb25maWc7aWYodC5yZWdp
c3RyYXRpb25OYW1lKXJldHVybiBjLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3QucmVnaXN0cmF0
aW9uTmFtZV18fG51bGw7aWYodm9pZCAwIT09dC5waGFzZWRSZWdpc3RyYXRpb25OYW1lcyl7dmFy
IG49dC5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztmb3IodmFyIHIgaW4gbilpZihuLmhhc093blBy
b3BlcnR5KHIpKXt2YXIgbz1jLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW25bcl1dO2lmKG8pcmV0
dXJuIG99fXJldHVybiBudWxsfSxfcmVzZXRFdmVudFBsdWdpbnM6ZnVuY3Rpb24oKXt1PW51bGw7
Zm9yKHZhciBlIGluIHMpcy5oYXNPd25Qcm9wZXJ0eShlKSYmZGVsZXRlIHNbZV07Yy5wbHVnaW5z
Lmxlbmd0aD0wO3ZhciB0PWMuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzO2Zvcih2YXIgbiBpbiB0
KXQuaGFzT3duUHJvcGVydHkobikmJmRlbGV0ZSB0W25dO3ZhciByPWMucmVnaXN0cmF0aW9uTmFt
ZU1vZHVsZXM7Zm9yKHZhciBvIGluIHIpci5oYXNPd25Qcm9wZXJ0eShvKSYmZGVsZXRlIHJbb119
fTtlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3JldHVybiJ0b3BNb3VzZVVwIj09PWV8fCJ0b3BUb3VjaEVuZCI9PT1lfHwidG9wVG91Y2hDYW5j
ZWwiPT09ZX1mdW5jdGlvbiBvKGUpe3JldHVybiJ0b3BNb3VzZU1vdmUiPT09ZXx8InRvcFRvdWNo
TW92ZSI9PT1lfWZ1bmN0aW9uIGkoZSl7cmV0dXJuInRvcE1vdXNlRG93biI9PT1lfHwidG9wVG91
Y2hTdGFydCI9PT1lfWZ1bmN0aW9uIGEoZSx0LG4scil7dmFyIG89ZS50eXBlfHwidW5rbm93bi1l
dmVudCI7ZS5jdXJyZW50VGFyZ2V0PXkuZ2V0Tm9kZUZyb21JbnN0YW5jZShyKSx0P3YuaW52b2tl
R3VhcmRlZENhbGxiYWNrV2l0aENhdGNoKG8sbixlKTp2Lmludm9rZUd1YXJkZWRDYWxsYmFjayhv
LG4sZSksZS5jdXJyZW50VGFyZ2V0PW51bGx9ZnVuY3Rpb24gdShlLHQpe3ZhciBuPWUuX2Rpc3Bh
dGNoTGlzdGVuZXJzLHI9ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7aWYoQXJyYXkuaXNBcnJheShuKSlm
b3IodmFyIG89MDtvPG4ubGVuZ3RoJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO28rKylhKGUs
dCxuW29dLHJbb10pO2Vsc2UgbiYmYShlLHQsbixyKTtlLl9kaXNwYXRjaExpc3RlbmVycz1udWxs
LGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGx9ZnVuY3Rpb24gcyhlKXt2YXIgdD1lLl9kaXNwYXRj
aExpc3RlbmVycyxuPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO2lmKEFycmF5LmlzQXJyYXkodCkpe2Zv
cih2YXIgcj0wO3I8dC5sZW5ndGgmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7cisrKWlmKHRb
cl0oZSxuW3JdKSlyZXR1cm4gbltyXX1lbHNlIGlmKHQmJnQoZSxuKSlyZXR1cm4gbjtyZXR1cm4g
bnVsbH1mdW5jdGlvbiBjKGUpe3ZhciB0PXMoZSk7cmV0dXJuIGUuX2Rpc3BhdGNoSW5zdGFuY2Vz
PW51bGwsZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCx0fWZ1bmN0aW9uIGwoZSl7dmFyIHQ9ZS5f
ZGlzcGF0Y2hMaXN0ZW5lcnMsbj1lLl9kaXNwYXRjaEluc3RhbmNlcztBcnJheS5pc0FycmF5KHQp
P2goIjEwMyIpOnZvaWQgMCxlLmN1cnJlbnRUYXJnZXQ9dD95LmdldE5vZGVGcm9tSW5zdGFuY2Uo
bik6bnVsbDt2YXIgcj10P3QoZSk6bnVsbDtyZXR1cm4gZS5jdXJyZW50VGFyZ2V0PW51bGwsZS5f
ZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCxlLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsLHJ9ZnVuY3Rp
b24gcChlKXtyZXR1cm4hIWUuX2Rpc3BhdGNoTGlzdGVuZXJzfXZhciBkLGYsaD1uKDMpLHY9big0
MSksbT0obigxKSxuKDIpLHtpbmplY3RDb21wb25lbnRUcmVlOmZ1bmN0aW9uKGUpe2Q9ZX0saW5q
ZWN0VHJlZVRyYXZlcnNhbDpmdW5jdGlvbihlKXtmPWV9fSkseT17aXNFbmRpc2g6cixpc01vdmVp
c2g6byxpc1N0YXJ0aXNoOmksZXhlY3V0ZURpcmVjdERpc3BhdGNoOmwsZXhlY3V0ZURpc3BhdGNo
ZXNJbk9yZGVyOnUsZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZTpjLGhhc0Rpc3Bh
dGNoZXM6cCxnZXRJbnN0YW5jZUZyb21Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBkLmdldEluc3Rh
bmNlRnJvbU5vZGUoZSl9LGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGQu
Z2V0Tm9kZUZyb21JbnN0YW5jZShlKX0saXNBbmNlc3RvcjpmdW5jdGlvbihlLHQpe3JldHVybiBm
LmlzQW5jZXN0b3IoZSx0KX0sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6ZnVuY3Rpb24oZSx0KXty
ZXR1cm4gZi5nZXRMb3dlc3RDb21tb25BbmNlc3RvcihlLHQpfSxnZXRQYXJlbnRJbnN0YW5jZTpm
dW5jdGlvbihlKXtyZXR1cm4gZi5nZXRQYXJlbnRJbnN0YW5jZShlKX0sdHJhdmVyc2VUd29QaGFz
ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGYudHJhdmVyc2VUd29QaGFzZShlLHQsbil9LHRyYXZl
cnNlRW50ZXJMZWF2ZTpmdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiBmLnRyYXZlcnNlRW50ZXJM
ZWF2ZShlLHQsbixyLG8pfSxpbmplY3Rpb246bX07ZS5leHBvcnRzPXl9LGZ1bmN0aW9uKGUsdCl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9L1s9Ol0vZyxuPXsiPSI6Ij0wIiwiOiI6
Ij0yIn0scj0oIiIrZSkucmVwbGFjZSh0LGZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfSk7cmV0dXJu
IiQiK3J9ZnVuY3Rpb24gcihlKXt2YXIgdD0vKD0wfD0yKS9nLG49eyI9MCI6Ij0iLCI9MiI6Ijoi
fSxyPSIuIj09PWVbMF0mJiIkIj09PWVbMV0/ZS5zdWJzdHJpbmcoMik6ZS5zdWJzdHJpbmcoMSk7
cmV0dXJuKCIiK3IpLnJlcGxhY2UodCxmdW5jdGlvbihlKXtyZXR1cm4gbltlXX0pfXZhciBvPXtl
c2NhcGU6bix1bmVzY2FwZTpyfTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe251bGwhPWUuY2hlY2tlZExpbmsmJm51bGwhPWUudmFsdWVMaW5r
P3UoIjg3Iik6dm9pZCAwfWZ1bmN0aW9uIG8oZSl7cihlKSxudWxsIT1lLnZhbHVlfHxudWxsIT1l
Lm9uQ2hhbmdlP3UoIjg4Iik6dm9pZCAwfWZ1bmN0aW9uIGkoZSl7cihlKSxudWxsIT1lLmNoZWNr
ZWR8fG51bGwhPWUub25DaGFuZ2U/dSgiODkiKTp2b2lkIDB9ZnVuY3Rpb24gYShlKXtpZihlKXt2
YXIgdD1lLmdldE5hbWUoKTtpZih0KXJldHVybiIgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2Yg
YCIrdCsiYC4ifXJldHVybiIifXZhciB1PW4oMykscz1uKDE1OCksYz1uKDU1KSxsPW4oMTcpLHA9
YyhsLmlzVmFsaWRFbGVtZW50KSxkPShuKDEpLG4oMikse2J1dHRvbjohMCxjaGVja2JveDohMCxp
bWFnZTohMCxoaWRkZW46ITAscmFkaW86ITAscmVzZXQ6ITAsc3VibWl0OiEwfSksZj17dmFsdWU6
ZnVuY3Rpb24oZSx0LG4pe3JldHVybiFlW3RdfHxkW2UudHlwZV18fGUub25DaGFuZ2V8fGUucmVh
ZE9ubHl8fGUuZGlzYWJsZWQ/bnVsbDpuZXcgRXJyb3IoIllvdSBwcm92aWRlZCBhIGB2YWx1ZWAg
cHJvcCB0byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiBgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMg
d2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmIHRoZSBmaWVsZCBzaG91bGQgYmUgbXV0
YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAuIE90aGVyd2lzZSwgc2V0IGVpdGhlciBgb25DaGFuZ2Vg
IG9yIGByZWFkT25seWAuIik7Ci19LGNoZWNrZWQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiFlW3Rd
fHxlLm9uQ2hhbmdlfHxlLnJlYWRPbmx5fHxlLmRpc2FibGVkP251bGw6bmV3IEVycm9yKCJZb3Ug
cHJvdmlkZWQgYSBgY2hlY2tlZGAgcHJvcCB0byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiBgb25D
aGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmIHRo
ZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRDaGVja2VkYC4gT3RoZXJ3aXNl
LCBzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4iKX0sb25DaGFuZ2U6cC5mdW5j
fSxoPXt9LHY9e2NoZWNrUHJvcFR5cGVzOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIgaW4gZil7
aWYoZi5oYXNPd25Qcm9wZXJ0eShyKSl2YXIgbz1mW3JdKHQscixlLCJwcm9wIixudWxsLHMpO2lm
KG8gaW5zdGFuY2VvZiBFcnJvciYmIShvLm1lc3NhZ2UgaW4gaCkpe2hbby5tZXNzYWdlXT0hMDth
KG4pfX19LGdldFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlTGluaz8obyhlKSxlLnZh
bHVlTGluay52YWx1ZSk6ZS52YWx1ZX0sZ2V0Q2hlY2tlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5j
aGVja2VkTGluaz8oaShlKSxlLmNoZWNrZWRMaW5rLnZhbHVlKTplLmNoZWNrZWR9LGV4ZWN1dGVP
bkNoYW5nZTpmdW5jdGlvbihlLHQpe3JldHVybiBlLnZhbHVlTGluaz8obyhlKSxlLnZhbHVlTGlu
ay5yZXF1ZXN0Q2hhbmdlKHQudGFyZ2V0LnZhbHVlKSk6ZS5jaGVja2VkTGluaz8oaShlKSxlLmNo
ZWNrZWRMaW5rLnJlcXVlc3RDaGFuZ2UodC50YXJnZXQuY2hlY2tlZCkpOmUub25DaGFuZ2U/ZS5v
bkNoYW5nZS5jYWxsKHZvaWQgMCx0KTp2b2lkIDB9fTtlLmV4cG9ydHM9dn0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDMpLG89KG4oMSksITEpLGk9e3JlcGxhY2VOb2RlV2l0
aE1hcmt1cDpudWxsLHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6bnVsbCxpbmplY3Rpb246e2luamVj
dEVudmlyb25tZW50OmZ1bmN0aW9uKGUpe28/cigiMTA0Iik6dm9pZCAwLGkucmVwbGFjZU5vZGVX
aXRoTWFya3VwPWUucmVwbGFjZU5vZGVXaXRoTWFya3VwLGkucHJvY2Vzc0NoaWxkcmVuVXBkYXRl
cz1lLnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMsbz0hMH19fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt0cnl7dChuKX1jYXRjaChyKXtu
dWxsPT09byYmKG89cil9fXZhciBvPW51bGwsaT17aW52b2tlR3VhcmRlZENhbGxiYWNrOnIsaW52
b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOnIscmV0aHJvd0NhdWdodEVycm9yOmZ1bmN0aW9u
KCl7aWYobyl7dmFyIGU9bzt0aHJvdyBvPW51bGwsZX19fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3MuZW5xdWV1ZVVwZGF0ZShlKX1mdW5j
dGlvbiBvKGUpe3ZhciB0PXR5cGVvZiBlO2lmKCJvYmplY3QiIT09dClyZXR1cm4gdDt2YXIgbj1l
LmNvbnN0cnVjdG9yJiZlLmNvbnN0cnVjdG9yLm5hbWV8fHQscj1PYmplY3Qua2V5cyhlKTtyZXR1
cm4gci5sZW5ndGg+MCYmci5sZW5ndGg8MjA/bisiIChrZXlzOiAiK3Iuam9pbigiLCAiKSsiKSI6
bn1mdW5jdGlvbiBpKGUsdCl7dmFyIG49dS5nZXQoZSk7aWYoIW4pe3JldHVybiBudWxsfXJldHVy
biBufXZhciBhPW4oMyksdT0obigxMSksbigyMSkpLHM9KG4oOCksbig5KSksYz0obigxKSxuKDIp
LHtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dS5nZXQoZSk7cmV0dXJuISF0JiYhIXQuX3Jl
bmRlcmVkQ29tcG9uZW50fSxlbnF1ZXVlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0LG4pe2MudmFsaWRh
dGVDYWxsYmFjayh0LG4pO3ZhciBvPWkoZSk7cmV0dXJuIG8/KG8uX3BlbmRpbmdDYWxsYmFja3M/
by5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKHQpOm8uX3BlbmRpbmdDYWxsYmFja3M9W3RdLHZvaWQg
cihvKSk6bnVsbH0sZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWw6ZnVuY3Rpb24oZSx0KXtlLl9wZW5k
aW5nQ2FsbGJhY2tzP2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaCh0KTplLl9wZW5kaW5nQ2FsbGJh
Y2tzPVt0XSxyKGUpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9aShlLCJm
b3JjZVVwZGF0ZSIpO3QmJih0Ll9wZW5kaW5nRm9yY2VVcGRhdGU9ITAscih0KSl9LGVucXVldWVS
ZXBsYWNlU3RhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPWkoZSwicmVwbGFjZVN0YXRlIik7byYm
KG8uX3BlbmRpbmdTdGF0ZVF1ZXVlPVt0XSxvLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSEwLHZvaWQg
MCE9PW4mJm51bGwhPT1uJiYoYy52YWxpZGF0ZUNhbGxiYWNrKG4sInJlcGxhY2VTdGF0ZSIpLG8u
X3BlbmRpbmdDYWxsYmFja3M/by5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKG4pOm8uX3BlbmRpbmdD
YWxsYmFja3M9W25dKSxyKG8pKX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49
aShlLCJzZXRTdGF0ZSIpO2lmKG4pe3ZhciBvPW4uX3BlbmRpbmdTdGF0ZVF1ZXVlfHwobi5fcGVu
ZGluZ1N0YXRlUXVldWU9W10pO28ucHVzaCh0KSxyKG4pfX0sZW5xdWV1ZUVsZW1lbnRJbnRlcm5h
bDpmdW5jdGlvbihlLHQsbil7ZS5fcGVuZGluZ0VsZW1lbnQ9dCxlLl9jb250ZXh0PW4scihlKX0s
dmFsaWRhdGVDYWxsYmFjazpmdW5jdGlvbihlLHQpe2UmJiJmdW5jdGlvbiIhPXR5cGVvZiBlP2Eo
IjEyMiIsdCxvKGUpKTp2b2lkIDB9fSk7ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCl7InVzZSBz
dHJpY3QiO3ZhciBuPWZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgTVNBcHAm
Jk1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uP2Z1bmN0aW9uKHQsbixyLG8pe01TQXBwLmV4
ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uKCl7cmV0dXJuIGUodCxuLHIsbyl9KX06ZX07
ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFy
IHQsbj1lLmtleUNvZGU7cmV0dXJuImNoYXJDb2RlImluIGU/KHQ9ZS5jaGFyQ29kZSwwPT09dCYm
MTM9PT1uJiYodD0xMykpOnQ9bix0Pj0zMnx8MTM9PT10P3Q6MH1lLmV4cG9ydHM9bn0sZnVuY3Rp
b24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdD10aGlzLG49dC5uYXRpdmVF
dmVudDtpZihuLmdldE1vZGlmaWVyU3RhdGUpcmV0dXJuIG4uZ2V0TW9kaWZpZXJTdGF0ZShlKTt2
YXIgcj1vW2VdO3JldHVybiEhciYmISFuW3JdfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIG59dmFyIG89
e0FsdDoiYWx0S2V5IixDb250cm9sOiJjdHJsS2V5IixNZXRhOiJtZXRhS2V5IixTaGlmdDoic2hp
ZnRLZXkifTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
bihlKXt2YXIgdD1lLnRhcmdldHx8ZS5zcmNFbGVtZW50fHx3aW5kb3c7cmV0dXJuIHQuY29ycmVz
cG9uZGluZ1VzZUVsZW1lbnQmJih0PXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpLDM9PT10Lm5v
ZGVUeXBlP3QucGFyZW50Tm9kZTp0fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighaS5jYW5Vc2VET018fHQmJiEoImFkZEV2ZW50TGlz
dGVuZXIiaW4gZG9jdW1lbnQpKXJldHVybiExO3ZhciBuPSJvbiIrZSxyPW4gaW4gZG9jdW1lbnQ7
aWYoIXIpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Euc2V0QXR0cmlidXRl
KG4sInJldHVybjsiKSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBhW25dfXJldHVybiFyJiZvJiYid2hl
ZWwiPT09ZSYmKHI9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgiRXZlbnRzLndo
ZWVsIiwiMy4wIikpLHJ9dmFyIG8saT1uKDYpO2kuY2FuVXNlRE9NJiYobz1kb2N1bWVudC5pbXBs
ZW1lbnRhdGlvbiYmZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSYmZG9jdW1lbnQu
aW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgiIiwiIikhPT0hMCksZS5leHBvcnRzPXJ9LGZ1bmN0
aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXt2YXIgbj1udWxsPT09ZXx8ZT09
PSExLHI9bnVsbD09PXR8fHQ9PT0hMTtpZihufHxyKXJldHVybiBuPT09cjt2YXIgbz10eXBlb2Yg
ZSxpPXR5cGVvZiB0O3JldHVybiJzdHJpbmciPT09b3x8Im51bWJlciI9PT1vPyJzdHJpbmciPT09
aXx8Im51bWJlciI9PT1pOiJvYmplY3QiPT09aSYmZS50eXBlPT09dC50eXBlJiZlLmtleT09PXQu
a2V5fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPShuKDQp
LG4oNykpLG89KG4oMikscik7ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIG4oZSl7InVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiYiZnVuY3Rpb24iPT10
eXBlb2YgY29uc29sZS5lcnJvciYmY29uc29sZS5lcnJvcihlKTt0cnl7dGhyb3cgbmV3IEVycm9y
KGUpfWNhdGNoKHQpe319dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1ufSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO3ZhciByPW4oNyksbz17bGlzdGVuOmZ1bmN0aW9uKGUsdCxuKXtyZXR1
cm4gZS5hZGRFdmVudExpc3RlbmVyPyhlLmFkZEV2ZW50TGlzdGVuZXIodCxuLCExKSx7cmVtb3Zl
OmZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwhMSl9fSk6ZS5hdHRhY2hFdmVu
dD8oZS5hdHRhY2hFdmVudCgib24iK3Qsbikse3JlbW92ZTpmdW5jdGlvbigpe2UuZGV0YWNoRXZl
bnQoIm9uIit0LG4pfX0pOnZvaWQgMH0sY2FwdHVyZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUu
YWRkRXZlbnRMaXN0ZW5lcj8oZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMCkse3JlbW92ZTpmdW5j
dGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4sITApfX0pOntyZW1vdmU6cn19LHJlZ2lz
dGVyRGVmYXVsdDpmdW5jdGlvbigpe319O2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiBuKGUpe3RyeXtlLmZvY3VzKCl9Y2F0Y2godCl7fX1lLmV4cG9ydHM9
bn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtpZihlPWV8fCgidW5k
ZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OnZvaWQgMCksInVuZGVmaW5lZCI9PXR5
cGVvZiBlKXJldHVybiBudWxsO3RyeXtyZXR1cm4gZS5hY3RpdmVFbGVtZW50fHxlLmJvZHl9Y2F0
Y2godCl7cmV0dXJuIGUuYm9keX19ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1u
KDExOCksbz1yLlN5bWJvbDtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1uKDEyMik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PSExO3JldHVybiByKGUs
dCl9fSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oMTIxKSgpfSxmdW5jdGlvbihlLHQpeyJ1
c2Ugc3RyaWN0Ijt2YXIgbj0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVf
RklSRUQiO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBu
KGUsdCl7cmV0dXJuIGUrdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnN1YnN0cmluZygxKX12
YXIgcj17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9y
ZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdy
b3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxmbGV4OiEwLGZsZXhHcm93
OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4T3Jk
ZXI6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTcGFuOiEwLGdyaWRSb3dTdGFy
dDohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblNwYW46ITAsZ3Jp
ZENvbHVtblN0YXJ0OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAs
b3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRl
eDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eToh
MCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0
OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9LG89WyJXZWJraXQiLCJtcyIsIk1v
eiIsIk8iXTtPYmplY3Qua2V5cyhyKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe28uZm9yRWFjaChmdW5j
dGlvbih0KXtyW24odCxlKV09cltlXX0pfSk7dmFyIGk9e2JhY2tncm91bmQ6e2JhY2tncm91bmRB
dHRhY2htZW50OiEwLGJhY2tncm91bmRDb2xvcjohMCxiYWNrZ3JvdW5kSW1hZ2U6ITAsYmFja2dy
b3VuZFBvc2l0aW9uWDohMCxiYWNrZ3JvdW5kUG9zaXRpb25ZOiEwLGJhY2tncm91bmRSZXBlYXQ6
ITB9LGJhY2tncm91bmRQb3NpdGlvbjp7YmFja2dyb3VuZFBvc2l0aW9uWDohMCxiYWNrZ3JvdW5k
UG9zaXRpb25ZOiEwfSxib3JkZXI6e2JvcmRlcldpZHRoOiEwLGJvcmRlclN0eWxlOiEwLGJvcmRl
ckNvbG9yOiEwfSxib3JkZXJCb3R0b206e2JvcmRlckJvdHRvbVdpZHRoOiEwLGJvcmRlckJvdHRv
bVN0eWxlOiEwLGJvcmRlckJvdHRvbUNvbG9yOiEwfSxib3JkZXJMZWZ0Ontib3JkZXJMZWZ0V2lk
dGg6ITAsYm9yZGVyTGVmdFN0eWxlOiEwLGJvcmRlckxlZnRDb2xvcjohMH0sYm9yZGVyUmlnaHQ6
e2JvcmRlclJpZ2h0V2lkdGg6ITAsYm9yZGVyUmlnaHRTdHlsZTohMCxib3JkZXJSaWdodENvbG9y
OiEwfSxib3JkZXJUb3A6e2JvcmRlclRvcFdpZHRoOiEwLGJvcmRlclRvcFN0eWxlOiEwLGJvcmRl
clRvcENvbG9yOiEwfSxmb250Ontmb250U3R5bGU6ITAsZm9udFZhcmlhbnQ6ITAsZm9udFdlaWdo
dDohMCxmb250U2l6ZTohMCxsaW5lSGVpZ2h0OiEwLGZvbnRGYW1pbHk6ITB9LG91dGxpbmU6e291
dGxpbmVXaWR0aDohMCxvdXRsaW5lU3R5bGU6ITAsb3V0bGluZUNvbG9yOiEwfX0sYT17aXNVbml0
bGVzc051bWJlcjpyLHNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uczppfTtlLmV4cG9ydHM9YX0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIShlIGluc3Rh
bmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1
bmN0aW9uIil9dmFyIG89bigzKSxpPW4oMTMpLGE9KG4oMSksZnVuY3Rpb24oKXtmdW5jdGlvbiBl
KHQpe3IodGhpcyxlKSx0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250ZXh0cz1udWxsLHRo
aXMuX2FyZz10fXJldHVybiBlLnByb3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKGUsdCl7dGhpcy5f
Y2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrc3x8W10sdGhpcy5fY2FsbGJhY2tzLnB1c2goZSksdGhp
cy5fY29udGV4dHM9dGhpcy5fY29udGV4dHN8fFtdLHRoaXMuX2NvbnRleHRzLnB1c2godCl9LGUu
cHJvdG90eXBlLm5vdGlmeUFsbD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhbGxiYWNrcyx0PXRo
aXMuX2NvbnRleHRzLG49dGhpcy5fYXJnO2lmKGUmJnQpe2UubGVuZ3RoIT09dC5sZW5ndGg/bygi
MjQiKTp2b2lkIDAsdGhpcy5fY2FsbGJhY2tzPW51bGwsdGhpcy5fY29udGV4dHM9bnVsbDtmb3Io
dmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdLmNhbGwodFtyXSxuKTtlLmxlbmd0aD0wLHQubGVu
Z3RoPTB9fSxlLnByb3RvdHlwZS5jaGVja3BvaW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Nh
bGxiYWNrcz90aGlzLl9jYWxsYmFja3MubGVuZ3RoOjB9LGUucHJvdG90eXBlLnJvbGxiYWNrPWZ1
bmN0aW9uKGUpe3RoaXMuX2NhbGxiYWNrcyYmdGhpcy5fY29udGV4dHMmJih0aGlzLl9jYWxsYmFj
a3MubGVuZ3RoPWUsdGhpcy5fY29udGV4dHMubGVuZ3RoPWUpfSxlLnByb3RvdHlwZS5yZXNldD1m
dW5jdGlvbigpe3RoaXMuX2NhbGxiYWNrcz1udWxsLHRoaXMuX2NvbnRleHRzPW51bGx9LGUucHJv
dG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rpb24oKXt0aGlzLnJlc2V0KCl9LGV9KCkpO2UuZXhwb3J0
cz1pLmFkZFBvb2xpbmdUbyhhKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe3JldHVybiEhYy5oYXNPd25Qcm9wZXJ0eShlKXx8IXMuaGFzT3duUHJvcGVydHkoZSkm
Jih1LnRlc3QoZSk/KGNbZV09ITAsITApOihzW2VdPSEwLCExKSl9ZnVuY3Rpb24gbyhlLHQpe3Jl
dHVybiBudWxsPT10fHxlLmhhc0Jvb2xlYW5WYWx1ZSYmIXR8fGUuaGFzTnVtZXJpY1ZhbHVlJiZp
c05hTih0KXx8ZS5oYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZSYmdDwxfHxlLmhhc092ZXJsb2FkZWRC
b29sZWFuVmFsdWUmJnQ9PT0hMX12YXIgaT1uKDE1KSxhPShuKDUpLG4oOCksbigxODUpKSx1PShu
KDIpLG5ldyBSZWdFeHAoIl5bIitpLkFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIrIl1bIitpLkFU
VFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSxzPXt9LGM9e30sbD17Y3JlYXRlTWFya3VwRm9ySUQ6
ZnVuY3Rpb24oZSl7cmV0dXJuIGkuSURfQVRUUklCVVRFX05BTUUrIj0iK2EoZSl9LHNldEF0dHJp
YnV0ZUZvcklEOmZ1bmN0aW9uKGUsdCl7ZS5zZXRBdHRyaWJ1dGUoaS5JRF9BVFRSSUJVVEVfTkFN
RSx0KX0sY3JlYXRlTWFya3VwRm9yUm9vdDpmdW5jdGlvbigpe3JldHVybiBpLlJPT1RfQVRUUklC
VVRFX05BTUUrJz0iIid9LHNldEF0dHJpYnV0ZUZvclJvb3Q6ZnVuY3Rpb24oZSl7ZS5zZXRBdHRy
aWJ1dGUoaS5ST09UX0FUVFJJQlVURV9OQU1FLCIiKX0sY3JlYXRlTWFya3VwRm9yUHJvcGVydHk6
ZnVuY3Rpb24oZSx0KXt2YXIgbj1pLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoZSk/aS5wcm9w
ZXJ0aWVzW2VdOm51bGw7aWYobil7aWYobyhuLHQpKXJldHVybiIiO3ZhciByPW4uYXR0cmlidXRl
TmFtZTtyZXR1cm4gbi5oYXNCb29sZWFuVmFsdWV8fG4uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1
ZSYmdD09PSEwP3IrJz0iIic6cisiPSIrYSh0KX1yZXR1cm4gaS5pc0N1c3RvbUF0dHJpYnV0ZShl
KT9udWxsPT10PyIiOmUrIj0iK2EodCk6bnVsbH0sY3JlYXRlTWFya3VwRm9yQ3VzdG9tQXR0cmli
dXRlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIoZSkmJm51bGwhPXQ/ZSsiPSIrYSh0KToiIn0sc2V0
VmFsdWVGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQsbil7dmFyIHI9aS5wcm9wZXJ0aWVzLmhhc093
blByb3BlcnR5KHQpP2kucHJvcGVydGllc1t0XTpudWxsO2lmKHIpe3ZhciBhPXIubXV0YXRpb25N
ZXRob2Q7aWYoYSlhKGUsbik7ZWxzZXtpZihvKHIsbikpcmV0dXJuIHZvaWQgdGhpcy5kZWxldGVW
YWx1ZUZvclByb3BlcnR5KGUsdCk7aWYoci5tdXN0VXNlUHJvcGVydHkpZVtyLnByb3BlcnR5TmFt
ZV09bjtlbHNle3ZhciB1PXIuYXR0cmlidXRlTmFtZSxzPXIuYXR0cmlidXRlTmFtZXNwYWNlO3M/
ZS5zZXRBdHRyaWJ1dGVOUyhzLHUsIiIrbik6ci5oYXNCb29sZWFuVmFsdWV8fHIuaGFzT3Zlcmxv
YWRlZEJvb2xlYW5WYWx1ZSYmbj09PSEwP2Uuc2V0QXR0cmlidXRlKHUsIiIpOmUuc2V0QXR0cmli
dXRlKHUsIiIrbil9fX1lbHNlIGlmKGkuaXNDdXN0b21BdHRyaWJ1dGUodCkpcmV0dXJuIHZvaWQg
bC5zZXRWYWx1ZUZvckF0dHJpYnV0ZShlLHQsbil9LHNldFZhbHVlRm9yQXR0cmlidXRlOmZ1bmN0
aW9uKGUsdCxuKXtpZihyKHQpKXtudWxsPT1uP2UucmVtb3ZlQXR0cmlidXRlKHQpOmUuc2V0QXR0
cmlidXRlKHQsIiIrbil9fSxkZWxldGVWYWx1ZUZvckF0dHJpYnV0ZTpmdW5jdGlvbihlLHQpe2Uu
cmVtb3ZlQXR0cmlidXRlKHQpfSxkZWxldGVWYWx1ZUZvclByb3BlcnR5OmZ1bmN0aW9uKGUsdCl7
dmFyIG49aS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHQpP2kucHJvcGVydGllc1t0XTpudWxs
O2lmKG4pe3ZhciByPW4ubXV0YXRpb25NZXRob2Q7aWYocilyKGUsdm9pZCAwKTtlbHNlIGlmKG4u
bXVzdFVzZVByb3BlcnR5KXt2YXIgbz1uLnByb3BlcnR5TmFtZTtuLmhhc0Jvb2xlYW5WYWx1ZT9l
W29dPSExOmVbb109IiJ9ZWxzZSBlLnJlbW92ZUF0dHJpYnV0ZShuLmF0dHJpYnV0ZU5hbWUpfWVs
c2UgaS5pc0N1c3RvbUF0dHJpYnV0ZSh0KSYmZS5yZW1vdmVBdHRyaWJ1dGUodCl9fTtlLmV4cG9y
dHM9bH0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e2hhc0NhY2hlZENoaWxkTm9k
ZXM6MX07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cigpe2lmKHRoaXMuX3Jvb3ROb2RlSUQmJnRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRl
KXt0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMTt2YXIgZT10aGlzLl9jdXJyZW50
RWxlbWVudC5wcm9wcyx0PXUuZ2V0VmFsdWUoZSk7bnVsbCE9dCYmbyh0aGlzLEJvb2xlYW4oZS5t
dWx0aXBsZSksdCl9fWZ1bmN0aW9uIG8oZSx0LG4pe3ZhciByLG8saT1zLmdldE5vZGVGcm9tSW5z
dGFuY2UoZSkub3B0aW9ucztpZih0KXtmb3Iocj17fSxvPTA7bzxuLmxlbmd0aDtvKyspclsiIitu
W29dXT0hMDtmb3Iobz0wO288aS5sZW5ndGg7bysrKXt2YXIgYT1yLmhhc093blByb3BlcnR5KGlb
b10udmFsdWUpO2lbb10uc2VsZWN0ZWQhPT1hJiYoaVtvXS5zZWxlY3RlZD1hKX19ZWxzZXtmb3Io
cj0iIituLG89MDtvPGkubGVuZ3RoO28rKylpZihpW29dLnZhbHVlPT09cilyZXR1cm4gdm9pZChp
W29dLnNlbGVjdGVkPSEwKTtpLmxlbmd0aCYmKGlbMF0uc2VsZWN0ZWQ9ITApfX1mdW5jdGlvbiBp
KGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49dS5leGVjdXRlT25DaGFuZ2Uo
dCxlKTtyZXR1cm4gdGhpcy5fcm9vdE5vZGVJRCYmKHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5n
VXBkYXRlPSEwKSxjLmFzYXAocix0aGlzKSxufXZhciBhPW4oNCksdT1uKDM5KSxzPW4oNSksYz1u
KDkpLGw9KG4oMiksITEpLHA9e2dldEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe3JldHVybiBhKHt9
LHQse29uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZSx2YWx1ZTp2b2lkIDB9KX0sbW91
bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49dS5nZXRWYWx1ZSh0KTtlLl93cmFwcGVyU3Rh
dGU9e3BlbmRpbmdVcGRhdGU6ITEsaW5pdGlhbFZhbHVlOm51bGwhPW4/bjp0LmRlZmF1bHRWYWx1
ZSxsaXN0ZW5lcnM6bnVsbCxvbkNoYW5nZTppLmJpbmQoZSksd2FzTXVsdGlwbGU6Qm9vbGVhbih0
Lm11bHRpcGxlKX0sdm9pZCAwPT09dC52YWx1ZXx8dm9pZCAwPT09dC5kZWZhdWx0VmFsdWV8fGx8
fChsPSEwKX0sZ2V0U2VsZWN0VmFsdWVDb250ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBlLl93cmFw
cGVyU3RhdGUuaW5pdGlhbFZhbHVlfSxwb3N0VXBkYXRlV3JhcHBlcjpmdW5jdGlvbihlKXt2YXIg
dD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcztlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlPXZv
aWQgMDt2YXIgbj1lLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7ZS5fd3JhcHBlclN0YXRlLndh
c011bHRpcGxlPUJvb2xlYW4odC5tdWx0aXBsZSk7dmFyIHI9dS5nZXRWYWx1ZSh0KTtudWxsIT1y
PyhlLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMSxvKGUsQm9vbGVhbih0Lm11bHRpcGxl
KSxyKSk6biE9PUJvb2xlYW4odC5tdWx0aXBsZSkmJihudWxsIT10LmRlZmF1bHRWYWx1ZT9vKGUs
Qm9vbGVhbih0Lm11bHRpcGxlKSx0LmRlZmF1bHRWYWx1ZSk6byhlLEJvb2xlYW4odC5tdWx0aXBs
ZSksdC5tdWx0aXBsZT9bXToiIikpfX07ZS5leHBvcnRzPXB9LGZ1bmN0aW9uKGUsdCl7InVzZSBz
dHJpY3QiO3ZhciBuLHI9e2luamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeTpmdW5jdGlvbihlKXtu
PWV9fSxvPXtjcmVhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSl9fTtvLmluamVjdGlvbj1yLGUu
ZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17bG9nVG9wTGV2ZWxS
ZW5kZXJzOiExfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiB1P3ZvaWQgMDphKCIxMTEiLGUudHlwZSksbmV3IHUoZSl9ZnVuY3Rp
b24gbyhlKXtyZXR1cm4gbmV3IHMoZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSBpbnN0YW5jZW9m
IHN9dmFyIGE9bigzKSx1PShuKDEpLG51bGwpLHM9bnVsbCxjPXtpbmplY3RHZW5lcmljQ29tcG9u
ZW50Q2xhc3M6ZnVuY3Rpb24oZSl7dT1lfSxpbmplY3RUZXh0Q29tcG9uZW50Q2xhc3M6ZnVuY3Rp
b24oZSl7cz1lfX0sbD17Y3JlYXRlSW50ZXJuYWxDb21wb25lbnQ6cixjcmVhdGVJbnN0YW5jZUZv
clRleHQ6byxpc1RleHRDb21wb25lbnQ6aSxpbmplY3Rpb246Y307ZS5leHBvcnRzPWx9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gaShkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQsZSl9dmFyIG89bigxNDUpLGk9bigxMDApLGE9big1MiksdT1uKDUzKSxz
PXtoYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXM6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5ub2RlTmFt
ZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiB0JiYoImlucHV0Ij09PXQmJiJ0ZXh0
Ij09PWUudHlwZXx8InRleHRhcmVhIj09PXR8fCJ0cnVlIj09PWUuY29udGVudEVkaXRhYmxlKX0s
Z2V0U2VsZWN0aW9uSW5mb3JtYXRpb246ZnVuY3Rpb24oKXt2YXIgZT11KCk7cmV0dXJue2ZvY3Vz
ZWRFbGVtOmUsc2VsZWN0aW9uUmFuZ2U6cy5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMoZSk/cy5n
ZXRTZWxlY3Rpb24oZSk6bnVsbH19LHJlc3RvcmVTZWxlY3Rpb246ZnVuY3Rpb24oZSl7dmFyIHQ9
dSgpLG49ZS5mb2N1c2VkRWxlbSxvPWUuc2VsZWN0aW9uUmFuZ2U7dCE9PW4mJnIobikmJihzLmhh
c1NlbGVjdGlvbkNhcGFiaWxpdGllcyhuKSYmcy5zZXRTZWxlY3Rpb24obixvKSxhKG4pKX0sZ2V0
U2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKCJzZWxlY3Rpb25TdGFydCJpbiBlKXQ9e3N0
YXJ0OmUuc2VsZWN0aW9uU3RhcnQsZW5kOmUuc2VsZWN0aW9uRW5kfTtlbHNlIGlmKGRvY3VtZW50
LnNlbGVjdGlvbiYmZS5ub2RlTmFtZSYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KSl7dmFyIG49ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7bi5wYXJlbnRFbGVtZW50
KCk9PT1lJiYodD17c3RhcnQ6LW4ubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLC1lLnZhbHVlLmxlbmd0
aCksZW5kOi1uLm1vdmVFbmQoImNoYXJhY3RlciIsLWUudmFsdWUubGVuZ3RoKX0pfWVsc2UgdD1v
LmdldE9mZnNldHMoZSk7cmV0dXJuIHR8fHtzdGFydDowLGVuZDowfX0sc2V0U2VsZWN0aW9uOmZ1
bmN0aW9uKGUsdCl7dmFyIG49dC5zdGFydCxyPXQuZW5kO2lmKHZvaWQgMD09PXImJihyPW4pLCJz
ZWxlY3Rpb25TdGFydCJpbiBlKWUuc2VsZWN0aW9uU3RhcnQ9bixlLnNlbGVjdGlvbkVuZD1NYXRo
Lm1pbihyLGUudmFsdWUubGVuZ3RoKTtlbHNlIGlmKGRvY3VtZW50LnNlbGVjdGlvbiYmZS5ub2Rl
TmFtZSYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7dmFyIGk9ZS5jcmVhdGVU
ZXh0UmFuZ2UoKTtpLmNvbGxhcHNlKCEwKSxpLm1vdmVTdGFydCgiY2hhcmFjdGVyIixuKSxpLm1v
dmVFbmQoImNoYXJhY3RlciIsci1uKSxpLnNlbGVjdCgpfWVsc2Ugby5zZXRPZmZzZXRzKGUsdCl9
fTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCl7Zm9yKHZhciBuPU1hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKSxyPTA7cjxuO3IrKylpZihl
LmNoYXJBdChyKSE9PXQuY2hhckF0KHIpKXJldHVybiByO3JldHVybiBlLmxlbmd0aD09PXQubGVu
Z3RoPy0xOm59ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZT9lLm5vZGVUeXBlPT09QT9lLmRvY3VtZW50
RWxlbWVudDplLmZpcnN0Q2hpbGQ6bnVsbH1mdW5jdGlvbiBpKGUpe3JldHVybiBlLmdldEF0dHJp
YnV0ZSYmZS5nZXRBdHRyaWJ1dGUoTil8fCIifWZ1bmN0aW9uIGEoZSx0LG4scixvKXt2YXIgaTtp
ZihDLmxvZ1RvcExldmVsUmVuZGVycyl7dmFyIGE9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMuY2hp
bGQsdT1hLnR5cGU7aT0iUmVhY3QgbW91bnQ6ICIrKCJzdHJpbmciPT10eXBlb2YgdT91OnUuZGlz
cGxheU5hbWV8fHUubmFtZSksY29uc29sZS50aW1lKGkpfXZhciBzPVQubW91bnRDb21wb25lbnQo
ZSxuLG51bGwsYihlLHQpLG8sMCk7aSYmY29uc29sZS50aW1lRW5kKGkpLGUuX3JlbmRlcmVkQ29t
cG9uZW50Ll90b3BMZXZlbFdyYXBwZXI9ZSxGLl9tb3VudEltYWdlSW50b05vZGUocyx0LGUscixu
KX1mdW5jdGlvbiB1KGUsdCxuLHIpe3ZhciBvPXguUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5n
ZXRQb29sZWQoIW4mJl8udXNlQ3JlYXRlRWxlbWVudCk7by5wZXJmb3JtKGEsbnVsbCxlLHQsbyxu
LHIpLHguUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5yZWxlYXNlKG8pfWZ1bmN0aW9uIHMoZSx0
LG4pe2ZvcihULnVubW91bnRDb21wb25lbnQoZSxuKSx0Lm5vZGVUeXBlPT09QSYmKHQ9dC5kb2N1
bWVudEVsZW1lbnQpO3QubGFzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKX1mdW5j
dGlvbiBjKGUpe3ZhciB0PW8oZSk7aWYodCl7dmFyIG49Zy5nZXRJbnN0YW5jZUZyb21Ob2RlKHQp
O3JldHVybiEoIW58fCFuLl9ob3N0UGFyZW50KX19ZnVuY3Rpb24gbChlKXtyZXR1cm4hKCFlfHxl
Lm5vZGVUeXBlIT09UiYmZS5ub2RlVHlwZSE9PUEmJmUubm9kZVR5cGUhPT1EKX1mdW5jdGlvbiBw
KGUpe3ZhciB0PW8oZSksbj10JiZnLmdldEluc3RhbmNlRnJvbU5vZGUodCk7cmV0dXJuIG4mJiFu
Ll9ob3N0UGFyZW50P246bnVsbH1mdW5jdGlvbiBkKGUpe3ZhciB0PXAoZSk7cmV0dXJuIHQ/dC5f
aG9zdENvbnRhaW5lckluZm8uX3RvcExldmVsV3JhcHBlcjpudWxsfXZhciBmPW4oMyksaD1uKDE0
KSx2PW4oMTUpLG09bigxNykseT1uKDI1KSxnPShuKDExKSxuKDUpKSxiPW4oMTM5KSxfPW4oMTQx
KSxDPW4oNjQpLEU9bigyMSksdz0obig4KSxuKDE1NSkpLFQ9bigxNiksUD1uKDQyKSx4PW4oOSks
Tz1uKDI0KSxTPW4oNzUpLGs9KG4oMSksbigyOSkpLE09big0OCksTj0obigyKSx2LklEX0FUVFJJ
QlVURV9OQU1FKSxJPXYuUk9PVF9BVFRSSUJVVEVfTkFNRSxSPTEsQT05LEQ9MTEsaj17fSxMPTEs
VT1mdW5jdGlvbigpe3RoaXMucm9vdElEPUwrK307VS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVu
dD17fSxVLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5jaGls
ZH0sVS5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyPSEwO3ZhciBGPXtUb3BMZXZlbFdyYXBwZXI6VSxf
aW5zdGFuY2VzQnlSZWFjdFJvb3RJRDpqLHNjcm9sbE1vbml0b3I6ZnVuY3Rpb24oZSx0KXt0KCl9
LF91cGRhdGVSb290Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIsbyl7cmV0dXJuIEYuc2Nyb2xs
TW9uaXRvcihyLGZ1bmN0aW9uKCl7UC5lbnF1ZXVlRWxlbWVudEludGVybmFsKGUsdCxuKSxvJiZQ
LmVucXVldWVDYWxsYmFja0ludGVybmFsKGUsbyl9KSxlfSxfcmVuZGVyTmV3Um9vdENvbXBvbmVu
dDpmdW5jdGlvbihlLHQsbixyKXtsKHQpP3ZvaWQgMDpmKCIzNyIpLHkuZW5zdXJlU2Nyb2xsVmFs
dWVNb25pdG9yaW5nKCk7dmFyIG89UyhlLCExKTt4LmJhdGNoZWRVcGRhdGVzKHUsbyx0LG4scik7
dmFyIGk9by5faW5zdGFuY2Uucm9vdElEO3JldHVybiBqW2ldPW8sb30scmVuZGVyU3VidHJlZUlu
dG9Db250YWluZXI6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG51bGwhPWUmJkUuaGFzKGUpP3Zv
aWQgMDpmKCIzOCIpLEYuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKGUsdCxuLHIpfSxfcmVu
ZGVyU3VidHJlZUludG9Db250YWluZXI6ZnVuY3Rpb24oZSx0LG4scil7UC52YWxpZGF0ZUNhbGxi
YWNrKHIsIlJlYWN0RE9NLnJlbmRlciIpLG0uaXNWYWxpZEVsZW1lbnQodCk/dm9pZCAwOmYoIjM5
Iiwic3RyaW5nIj09dHlwZW9mIHQ/IiBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBzdHJpbmcgbGlrZSAn
ZGl2JywgcGFzcyBSZWFjdC5jcmVhdGVFbGVtZW50KCdkaXYnKSBvciA8ZGl2IC8+LiI6ImZ1bmN0
aW9uIj09dHlwZW9mIHQ/IiBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBjbGFzcyBsaWtlIEZvbywgcGFz
cyBSZWFjdC5jcmVhdGVFbGVtZW50KEZvbykgb3IgPEZvbyAvPi4iOm51bGwhPXQmJnZvaWQgMCE9
PXQucHJvcHM/IiBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbGx5IGxvYWRpbmcg
dHdvIGluZGVwZW5kZW50IGNvcGllcyBvZiBSZWFjdC4iOiIiKTt2YXIgYSx1PW0uY3JlYXRlRWxl
bWVudChVLHtjaGlsZDp0fSk7aWYoZSl7dmFyIHM9RS5nZXQoZSk7YT1zLl9wcm9jZXNzQ2hpbGRD
b250ZXh0KHMuX2NvbnRleHQpfWVsc2UgYT1PO3ZhciBsPWQobik7aWYobCl7dmFyIHA9bC5fY3Vy
cmVudEVsZW1lbnQsaD1wLnByb3BzLmNoaWxkO2lmKE0oaCx0KSl7dmFyIHY9bC5fcmVuZGVyZWRD
b21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSx5PXImJmZ1bmN0aW9uKCl7ci5jYWxsKHYpfTty
ZXR1cm4gRi5fdXBkYXRlUm9vdENvbXBvbmVudChsLHUsYSxuLHkpLHZ9Ri51bm1vdW50Q29tcG9u
ZW50QXROb2RlKG4pfXZhciBnPW8obiksYj1nJiYhIWkoZyksXz1jKG4pLEM9YiYmIWwmJiFfLHc9
Ri5fcmVuZGVyTmV3Um9vdENvbXBvbmVudCh1LG4sQyxhKS5fcmVuZGVyZWRDb21wb25lbnQuZ2V0
UHVibGljSW5zdGFuY2UoKTtyZXR1cm4gciYmci5jYWxsKHcpLHd9LHJlbmRlcjpmdW5jdGlvbihl
LHQsbil7cmV0dXJuIEYuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKG51bGwsZSx0LG4pfSx1
bm1vdW50Q29tcG9uZW50QXROb2RlOmZ1bmN0aW9uKGUpe2woZSk/dm9pZCAwOmYoIjQwIik7dmFy
IHQ9ZChlKTtpZighdCl7YyhlKSwxPT09ZS5ub2RlVHlwZSYmZS5oYXNBdHRyaWJ1dGUoSSk7cmV0
dXJuITF9cmV0dXJuIGRlbGV0ZSBqW3QuX2luc3RhbmNlLnJvb3RJRF0seC5iYXRjaGVkVXBkYXRl
cyhzLHQsZSwhMSksITB9LF9tb3VudEltYWdlSW50b05vZGU6ZnVuY3Rpb24oZSx0LG4saSxhKXtp
ZihsKHQpP3ZvaWQgMDpmKCI0MSIpLGkpe3ZhciB1PW8odCk7aWYody5jYW5SZXVzZU1hcmt1cChl
LHUpKXJldHVybiB2b2lkIGcucHJlY2FjaGVOb2RlKG4sdSk7dmFyIHM9dS5nZXRBdHRyaWJ1dGUo
dy5DSEVDS1NVTV9BVFRSX05BTUUpO3UucmVtb3ZlQXR0cmlidXRlKHcuQ0hFQ0tTVU1fQVRUUl9O
QU1FKTt2YXIgYz11Lm91dGVySFRNTDt1LnNldEF0dHJpYnV0ZSh3LkNIRUNLU1VNX0FUVFJfTkFN
RSxzKTt2YXIgcD1lLGQ9cihwLGMpLHY9IiAoY2xpZW50KSAiK3Auc3Vic3RyaW5nKGQtMjAsZCsy
MCkrIlxuIChzZXJ2ZXIpICIrYy5zdWJzdHJpbmcoZC0yMCxkKzIwKTt0Lm5vZGVUeXBlPT09QT9m
KCI0MiIsdik6dm9pZCAwfWlmKHQubm9kZVR5cGU9PT1BP2YoIjQzIik6dm9pZCAwLGEudXNlQ3Jl
YXRlRWxlbWVudCl7Zm9yKDt0Lmxhc3RDaGlsZDspdC5yZW1vdmVDaGlsZCh0Lmxhc3RDaGlsZCk7
aC5pbnNlcnRUcmVlQmVmb3JlKHQsZSxudWxsKX1lbHNlIGsodCxlKSxnLnByZWNhY2hlTm9kZShu
LHQuZmlyc3RDaGlsZCl9fTtlLmV4cG9ydHM9Rn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1uKDMpLG89bigxNyksaT0obigxKSx7SE9TVDowLENPTVBPU0lURToxLEVNUFRZOjIs
Z2V0VHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWV8fGU9PT0hMT9pLkVNUFRZOm8uaXNW
YWxpZEVsZW1lbnQoZSk/ImZ1bmN0aW9uIj09dHlwZW9mIGUudHlwZT9pLkNPTVBPU0lURTppLkhP
U1Q6dm9pZCByKCIyNiIsZSl9fSk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO3ZhciBuPXtjdXJyZW50U2Nyb2xsTGVmdDowLGN1cnJlbnRTY3JvbGxUb3A6MCxyZWZyZXNo
U2Nyb2xsVmFsdWVzOmZ1bmN0aW9uKGUpe24uY3VycmVudFNjcm9sbExlZnQ9ZS54LG4uY3VycmVu
dFNjcm9sbFRvcD1lLnl9fTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIG51bGw9PXQ/bygiMzAiKTp2b2lkIDAsbnVsbD09ZT90
OkFycmF5LmlzQXJyYXkoZSk/QXJyYXkuaXNBcnJheSh0KT8oZS5wdXNoLmFwcGx5KGUsdCksZSk6
KGUucHVzaCh0KSxlKTpBcnJheS5pc0FycmF5KHQpP1tlXS5jb25jYXQodCk6W2UsdF19dmFyIG89
bigzKTtuKDEpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biBuKGUsdCxuKXtBcnJheS5pc0FycmF5KGUpP2UuZm9yRWFjaCh0LG4pOmUmJnQuY2FsbChuLGUp
fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
Zm9yKHZhciB0Oyh0PWUuX3JlbmRlcmVkTm9kZVR5cGUpPT09by5DT01QT1NJVEU7KWU9ZS5fcmVu
ZGVyZWRDb21wb25lbnQ7cmV0dXJuIHQ9PT1vLkhPU1Q/ZS5fcmVuZGVyZWRDb21wb25lbnQ6dD09
PW8uRU1QVFk/bnVsbDp2b2lkIDB9dmFyIG89big2OCk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3JldHVybiFpJiZvLmNhblVzZURPTSYmKGk9
InRleHRDb250ZW50ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudD8idGV4dENvbnRlbnQiOiJp
bm5lclRleHQiKSxpfXZhciBvPW4oNiksaT1udWxsO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS50eXBlLG49ZS5ub2RlTmFtZTty
ZXR1cm4gbiYmImlucHV0Ij09PW4udG9Mb3dlckNhc2UoKSYmKCJjaGVja2JveCI9PT10fHwicmFk
aW8iPT09dCl9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZS5fd3JhcHBlclN0YXRlLnZhbHVlVHJhY2tl
cn1mdW5jdGlvbiBpKGUsdCl7ZS5fd3JhcHBlclN0YXRlLnZhbHVlVHJhY2tlcj10fWZ1bmN0aW9u
IGEoZSl7ZGVsZXRlIGUuX3dyYXBwZXJTdGF0ZS52YWx1ZVRyYWNrZXJ9ZnVuY3Rpb24gdShlKXt2
YXIgdDtyZXR1cm4gZSYmKHQ9cihlKT8iIitlLmNoZWNrZWQ6ZS52YWx1ZSksdH12YXIgcz1uKDUp
LGM9e19nZXRUcmFja2VyRnJvbU5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG8ocy5nZXRJbnN0YW5j
ZUZyb21Ob2RlKGUpKX0sdHJhY2s6ZnVuY3Rpb24oZSl7aWYoIW8oZSkpe3ZhciB0PXMuZ2V0Tm9k
ZUZyb21JbnN0YW5jZShlKSxuPXIodCk/ImNoZWNrZWQiOiJ2YWx1ZSIsdT1PYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHQuY29uc3RydWN0b3IucHJvdG90eXBlLG4pLGM9IiIrdFtuXTt0
Lmhhc093blByb3BlcnR5KG4pfHwiZnVuY3Rpb24iIT10eXBlb2YgdS5nZXR8fCJmdW5jdGlvbiIh
PXR5cGVvZiB1LnNldHx8KE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2VudW1lcmFibGU6dS5l
bnVtZXJhYmxlLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdS5nZXQuY2Fs
bCh0aGlzKX0sc2V0OmZ1bmN0aW9uKGUpe2M9IiIrZSx1LnNldC5jYWxsKHRoaXMsZSl9fSksaShl
LHtnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBjfSxzZXRWYWx1ZTpmdW5jdGlvbihlKXtjPSIi
K2V9LHN0b3BUcmFja2luZzpmdW5jdGlvbigpe2EoZSksZGVsZXRlIHRbbl19fSkpfX0sdXBkYXRl
VmFsdWVJZkNoYW5nZWQ6ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuITE7dmFyIHQ9byhlKTtpZigh
dClyZXR1cm4gYy50cmFjayhlKSwhMDt2YXIgbj10LmdldFZhbHVlKCkscj11KHMuZ2V0Tm9kZUZy
b21JbnN0YW5jZShlKSk7cmV0dXJuIHIhPT1uJiYodC5zZXRWYWx1ZShyKSwhMCl9LHN0b3BUcmFj
a2luZzpmdW5jdGlvbihlKXt2YXIgdD1vKGUpO3QmJnQuc3RvcFRyYWNraW5nKCl9fTtlLmV4cG9y
dHM9Y30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUpe3Zh
ciB0PWUuZ2V0TmFtZSgpO2lmKHQpcmV0dXJuIiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBg
Iit0KyJgLiJ9cmV0dXJuIiJ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Yg
ZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBlLnByb3RvdHlwZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUu
cHJvdG90eXBlLm1vdW50Q29tcG9uZW50JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5wcm90b3R5cGUu
cmVjZWl2ZUNvbXBvbmVudH1mdW5jdGlvbiBpKGUsdCl7dmFyIG47aWYobnVsbD09PWV8fGU9PT0h
MSluPWMuY3JlYXRlKGkpO2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBlKXt2YXIgdT1lLHM9dS50
eXBlO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBzJiYic3RyaW5nIiE9dHlwZW9mIHMpe3ZhciBkPSIi
O2QrPXIodS5fb3duZXIpLGEoIjEzMCIsbnVsbD09cz9zOnR5cGVvZiBzLGQpfSJzdHJpbmciPT10
eXBlb2YgdS50eXBlP249bC5jcmVhdGVJbnRlcm5hbENvbXBvbmVudCh1KTpvKHUudHlwZSk/KG49
bmV3IHUudHlwZSh1KSxuLmdldEhvc3ROb2RlfHwobi5nZXRIb3N0Tm9kZT1uLmdldE5hdGl2ZU5v
ZGUpKTpuPW5ldyBwKHUpfWVsc2Uic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2Yg
ZT9uPWwuY3JlYXRlSW5zdGFuY2VGb3JUZXh0KGUpOmEoIjEzMSIsdHlwZW9mIGUpO3JldHVybiBu
Ll9tb3VudEluZGV4PTAsbi5fbW91bnRJbWFnZT1udWxsLG59dmFyIGE9bigzKSx1PW4oNCkscz1u
KDEzNiksYz1uKDYzKSxsPW4oNjUpLHA9KG4oMjIxKSxuKDEpLG4oMiksZnVuY3Rpb24oZSl7dGhp
cy5jb25zdHJ1Y3QoZSl9KTt1KHAucHJvdG90eXBlLHMse19pbnN0YW50aWF0ZVJlYWN0Q29tcG9u
ZW50Oml9KSxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
bihlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJu
ImlucHV0Ij09PXQ/ISFyW2UudHlwZV06InRleHRhcmVhIj09PXR9dmFyIHI9e2NvbG9yOiEwLGRh
dGU6ITAsZGF0ZXRpbWU6ITAsImRhdGV0aW1lLWxvY2FsIjohMCxlbWFpbDohMCxtb250aDohMCxu
dW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2VhcmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRp
bWU6ITAsdXJsOiEwLHdlZWs6ITB9O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPW4oNiksbz1uKDI4KSxpPW4oMjkpLGE9ZnVuY3Rpb24oZSx0KXtpZih0KXt2
YXIgbj1lLmZpcnN0Q2hpbGQ7aWYobiYmbj09PWUubGFzdENoaWxkJiYzPT09bi5ub2RlVHlwZSly
ZXR1cm4gdm9pZChuLm5vZGVWYWx1ZT10KX1lLnRleHRDb250ZW50PXR9O3IuY2FuVXNlRE9NJiYo
InRleHRDb250ZW50ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KGE9ZnVuY3Rpb24oZSx0
KXtyZXR1cm4gMz09PWUubm9kZVR5cGU/dm9pZChlLm5vZGVWYWx1ZT10KTp2b2lkIGkoZSxvKHQp
KX0pKSxlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9ZS5rZXk/Yy5lc2NhcGUo
ZS5rZXkpOnQudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIG8oZSx0LG4saSl7dmFyIGQ9dHlwZW9mIGU7
aWYoInVuZGVmaW5lZCIhPT1kJiYiYm9vbGVhbiIhPT1kfHwoZT1udWxsKSxudWxsPT09ZXx8InN0
cmluZyI9PT1kfHwibnVtYmVyIj09PWR8fCJvYmplY3QiPT09ZCYmZS4kJHR5cGVvZj09PXUpcmV0
dXJuIG4oaSxlLCIiPT09dD9sK3IoZSwwKTp0KSwxO3ZhciBmLGgsdj0wLG09IiI9PT10P2w6dCtw
O2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciB5PTA7eTxlLmxlbmd0aDt5KyspZj1lW3ldLGg9
bStyKGYseSksdis9byhmLGgsbixpKTtlbHNle3ZhciBnPXMoZSk7aWYoZyl7dmFyIGIsXz1nLmNh
bGwoZSk7aWYoZyE9PWUuZW50cmllcylmb3IodmFyIEM9MDshKGI9Xy5uZXh0KCkpLmRvbmU7KWY9
Yi52YWx1ZSxoPW0rcihmLEMrKyksdis9byhmLGgsbixpKTtlbHNlIGZvcig7IShiPV8ubmV4dCgp
KS5kb25lOyl7dmFyIEU9Yi52YWx1ZTtFJiYoZj1FWzFdLGg9bStjLmVzY2FwZShFWzBdKStwK3Io
ZiwwKSx2Kz1vKGYsaCxuLGkpKX19ZWxzZSBpZigib2JqZWN0Ij09PWQpe3ZhciB3PSIiLFQ9U3Ry
aW5nKGUpO2EoIjMxIiwiW29iamVjdCBPYmplY3RdIj09PVQ/Im9iamVjdCB3aXRoIGtleXMgeyIr
T2JqZWN0LmtleXMoZSkuam9pbigiLCAiKSsifSI6VCx3KX19cmV0dXJuIHZ9ZnVuY3Rpb24gaShl
LHQsbil7cmV0dXJuIG51bGw9PWU/MDpvKGUsIiIsdCxuKX12YXIgYT1uKDMpLHU9KG4oMTEpLG4o
MTUxKSkscz1uKDE4MiksYz0obigxKSxuKDM4KSksbD0obigyKSwiLiIpLHA9IjoiO2UuZXhwb3J0
cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUm
JmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFu
Y2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVu
Y3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0
aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQi
KTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9
ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBu
ZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBm
dW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5w
cm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFBy
b3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9ZnVuY3Rpb24gdShlLHQpe3ZhciBuPXt9O2Zv
cih2YXIgciBpbiBlKXQuaW5kZXhPZihyKT49MHx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eS5jYWxsKGUscikmJihuW3JdPWVbcl0pO3JldHVybiBufWZ1bmN0aW9uIHMoKXt9ZnVuY3Rp
b24gYyhlLHQpe3ZhciBuPXtydW46ZnVuY3Rpb24ocil7dHJ5e3ZhciBvPWUodC5nZXRTdGF0ZSgp
LHIpOyhvIT09bi5wcm9wc3x8bi5lcnJvcikmJihuLnNob3VsZENvbXBvbmVudFVwZGF0ZT0hMCxu
LnByb3BzPW8sbi5lcnJvcj1udWxsKX1jYXRjaChpKXtuLnNob3VsZENvbXBvbmVudFVwZGF0ZT0h
MCxuLmVycm9yPWl9fX07cmV0dXJuIG59ZnVuY3Rpb24gbChlKXt2YXIgdCxuLHI9YXJndW1lbnRz
Lmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LGw9ci5nZXRE
aXNwbGF5TmFtZSxkPXZvaWQgMD09PWw/ZnVuY3Rpb24oZSl7cmV0dXJuIkNvbm5lY3RBZHZhbmNl
ZCgiK2UrIikifTpsLGg9ci5tZXRob2ROYW1lLHk9dm9pZCAwPT09aD8iY29ubmVjdEFkdmFuY2Vk
IjpoLEU9ci5yZW5kZXJDb3VudFByb3Asdz12b2lkIDA9PT1FP3ZvaWQgMDpFLFQ9ci5zaG91bGRI
YW5kbGVTdGF0ZUNoYW5nZXMsUD12b2lkIDA9PT1UfHxULHg9ci5zdG9yZUtleSxPPXZvaWQgMD09
PXg/InN0b3JlIjp4LFM9ci53aXRoUmVmLGs9dm9pZCAwIT09UyYmUyxNPXUocixbImdldERpc3Bs
YXlOYW1lIiwibWV0aG9kTmFtZSIsInJlbmRlckNvdW50UHJvcCIsInNob3VsZEhhbmRsZVN0YXRl
Q2hhbmdlcyIsInN0b3JlS2V5Iiwid2l0aFJlZiJdKSxOPU8rIlN1YnNjcmlwdGlvbiIsST1fKyss
Uj0odD17fSx0W09dPWIuc3RvcmVTaGFwZSx0W05dPWIuc3Vic2NyaXB0aW9uU2hhcGUsdCksQT0o
bj17fSxuW05dPWIuc3Vic2NyaXB0aW9uU2hhcGUsbik7cmV0dXJuIGZ1bmN0aW9uKHQpeygwLHYu
ZGVmYXVsdCkoImZ1bmN0aW9uIj09dHlwZW9mIHQsIllvdSBtdXN0IHBhc3MgYSBjb21wb25lbnQg
dG8gdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGNvbm5lY3QuIEluc3RlYWQgcmVjZWl2ZWQgIitK
U09OLnN0cmluZ2lmeSh0KSk7dmFyIG49dC5kaXNwbGF5TmFtZXx8dC5uYW1lfHwiQ29tcG9uZW50
IixyPWQobiksdT1wKHt9LE0se2dldERpc3BsYXlOYW1lOmQsbWV0aG9kTmFtZTp5LHJlbmRlckNv
dW50UHJvcDp3LHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlczpQLHN0b3JlS2V5Ok8sd2l0aFJlZjpr
LGRpc3BsYXlOYW1lOnIsd3JhcHBlZENvbXBvbmVudE5hbWU6bixXcmFwcGVkQ29tcG9uZW50OnR9
KSxsPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIGwoZSx0KXtvKHRoaXMsbCk7dmFyIGE9aSh0aGlzLG4u
Y2FsbCh0aGlzLGUsdCkpO3JldHVybiBhLnZlcnNpb249SSxhLnN0YXRlPXt9LGEucmVuZGVyQ291
bnQ9MCxhLnN0b3JlPWVbT118fHRbT10sYS5wcm9wc01vZGU9Qm9vbGVhbihlW09dKSxhLnNldFdy
YXBwZWRJbnN0YW5jZT1hLnNldFdyYXBwZWRJbnN0YW5jZS5iaW5kKGEpLCgwLHYuZGVmYXVsdCko
YS5zdG9yZSwnQ291bGQgbm90IGZpbmQgIicrTysnIiBpbiBlaXRoZXIgdGhlIGNvbnRleHQgb3Ig
cHJvcHMgb2YgJysoJyInK3IrJyIuIEVpdGhlciB3cmFwIHRoZSByb290IGNvbXBvbmVudCBpbiBh
IDxQcm92aWRlcj4sICcpKygnb3IgZXhwbGljaXRseSBwYXNzICInK08rJyIgYXMgYSBwcm9wIHRv
ICInK3IrJyIuJykpLGEuaW5pdFNlbGVjdG9yKCksYS5pbml0U3Vic2NyaXB0aW9uKCksYX1yZXR1
cm4gYShsLG4pLGwucHJvdG90eXBlLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3ZhciBlLHQ9
dGhpcy5wcm9wc01vZGU/bnVsbDp0aGlzLnN1YnNjcmlwdGlvbjtyZXR1cm4gZT17fSxlW05dPXR8
fHRoaXMuY29udGV4dFtOXSxlfSxsLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlv
bigpe1AmJih0aGlzLnN1YnNjcmlwdGlvbi50cnlTdWJzY3JpYmUoKSx0aGlzLnNlbGVjdG9yLnJ1
bih0aGlzLnByb3BzKSx0aGlzLnNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZSYmdGhpcy5m
b3JjZVVwZGF0ZSgpKX0sbC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz1mdW5j
dGlvbihlKXt0aGlzLnNlbGVjdG9yLnJ1bihlKX0sbC5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50
VXBkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBk
YXRlfSxsLnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMuc3Vi
c2NyaXB0aW9uJiZ0aGlzLnN1YnNjcmlwdGlvbi50cnlVbnN1YnNjcmliZSgpLHRoaXMuc3Vic2Ny
aXB0aW9uPW51bGwsdGhpcy5ub3RpZnlOZXN0ZWRTdWJzPXMsdGhpcy5zdG9yZT1udWxsLHRoaXMu
c2VsZWN0b3IucnVuPXMsdGhpcy5zZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGU9ITF9LGwu
cHJvdG90eXBlLmdldFdyYXBwZWRJbnN0YW5jZT1mdW5jdGlvbigpe3JldHVybigwLHYuZGVmYXVs
dCkoaywiVG8gYWNjZXNzIHRoZSB3cmFwcGVkIGluc3RhbmNlLCB5b3UgbmVlZCB0byBzcGVjaWZ5
ICIrKCJ7IHdpdGhSZWY6IHRydWUgfSBpbiB0aGUgb3B0aW9ucyBhcmd1bWVudCBvZiB0aGUgIit5
KyIoKSBjYWxsLiIpKSx0aGlzLndyYXBwZWRJbnN0YW5jZX0sbC5wcm90b3R5cGUuc2V0V3JhcHBl
ZEluc3RhbmNlPWZ1bmN0aW9uKGUpe3RoaXMud3JhcHBlZEluc3RhbmNlPWV9LGwucHJvdG90eXBl
LmluaXRTZWxlY3Rvcj1mdW5jdGlvbigpe3ZhciB0PWUodGhpcy5zdG9yZS5kaXNwYXRjaCx1KTt0
aGlzLnNlbGVjdG9yPWModCx0aGlzLnN0b3JlKSx0aGlzLnNlbGVjdG9yLnJ1bih0aGlzLnByb3Bz
KX0sbC5wcm90b3R5cGUuaW5pdFN1YnNjcmlwdGlvbj1mdW5jdGlvbigpe2lmKFApe3ZhciBlPSh0
aGlzLnByb3BzTW9kZT90aGlzLnByb3BzOnRoaXMuY29udGV4dClbTl07dGhpcy5zdWJzY3JpcHRp
b249bmV3IGcuZGVmYXVsdCh0aGlzLnN0b3JlLGUsdGhpcy5vblN0YXRlQ2hhbmdlLmJpbmQodGhp
cykpLHRoaXMubm90aWZ5TmVzdGVkU3Vicz10aGlzLnN1YnNjcmlwdGlvbi5ub3RpZnlOZXN0ZWRT
dWJzLmJpbmQodGhpcy5zdWJzY3JpcHRpb24pfX0sbC5wcm90b3R5cGUub25TdGF0ZUNoYW5nZT1m
dW5jdGlvbigpe3RoaXMuc2VsZWN0b3IucnVuKHRoaXMucHJvcHMpLHRoaXMuc2VsZWN0b3Iuc2hv
dWxkQ29tcG9uZW50VXBkYXRlPyh0aGlzLmNvbXBvbmVudERpZFVwZGF0ZT10aGlzLm5vdGlmeU5l
c3RlZFN1YnNPbkNvbXBvbmVudERpZFVwZGF0ZSx0aGlzLnNldFN0YXRlKEMpKTp0aGlzLm5vdGlm
eU5lc3RlZFN1YnMoKX0sbC5wcm90b3R5cGUubm90aWZ5TmVzdGVkU3Vic09uQ29tcG9uZW50RGlk
VXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5jb21wb25lbnREaWRVcGRhdGU9dm9pZCAwLHRoaXMubm90
aWZ5TmVzdGVkU3VicygpfSxsLnByb3RvdHlwZS5pc1N1YnNjcmliZWQ9ZnVuY3Rpb24oKXtyZXR1
cm4gQm9vbGVhbih0aGlzLnN1YnNjcmlwdGlvbikmJnRoaXMuc3Vic2NyaXB0aW9uLmlzU3Vic2Ny
aWJlZCgpfSxsLnByb3RvdHlwZS5hZGRFeHRyYVByb3BzPWZ1bmN0aW9uKGUpe2lmKCEoa3x8d3x8
dGhpcy5wcm9wc01vZGUmJnRoaXMuc3Vic2NyaXB0aW9uKSlyZXR1cm4gZTt2YXIgdD1wKHt9LGUp
O3JldHVybiBrJiYodC5yZWY9dGhpcy5zZXRXcmFwcGVkSW5zdGFuY2UpLHcmJih0W3ddPXRoaXMu
cmVuZGVyQ291bnQrKyksdGhpcy5wcm9wc01vZGUmJnRoaXMuc3Vic2NyaXB0aW9uJiYodFtOXT10
aGlzLnN1YnNjcmlwdGlvbiksdH0sbC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9
dGhpcy5zZWxlY3RvcjtpZihlLnNob3VsZENvbXBvbmVudFVwZGF0ZT0hMSxlLmVycm9yKXRocm93
IGUuZXJyb3I7cmV0dXJuKDAsbS5jcmVhdGVFbGVtZW50KSh0LHRoaXMuYWRkRXh0cmFQcm9wcyhl
LnByb3BzKSl9LGx9KG0uQ29tcG9uZW50KTtyZXR1cm4gbC5XcmFwcGVkQ29tcG9uZW50PXQsbC5k
aXNwbGF5TmFtZT1yLGwuY2hpbGRDb250ZXh0VHlwZXM9QSxsLmNvbnRleHRUeXBlcz1SLGwucHJv
cFR5cGVzPVIsKDAsZi5kZWZhdWx0KShsLHQpfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHA9T2JqZWN0
LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7
dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3du
UHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX07dC5kZWZhdWx0PWw7dmFy
IGQ9bigxMTApLGY9cihkKSxoPW4oMTExKSx2PXIoaCksbT1uKDEyKSx5PW4oMTk0KSxnPXIoeSks
Yj1uKDgyKSxfPTAsQz17fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUpe3Jl
dHVybiBmdW5jdGlvbih0LG4pe2Z1bmN0aW9uIHIoKXtyZXR1cm4gb312YXIgbz1lKHQsbik7cmV0
dXJuIHIuZGVwZW5kc09uT3duUHJvcHM9ITEscn19ZnVuY3Rpb24gaShlKXtyZXR1cm4gbnVsbCE9
PWUuZGVwZW5kc09uT3duUHJvcHMmJnZvaWQgMCE9PWUuZGVwZW5kc09uT3duUHJvcHM/Qm9vbGVh
bihlLmRlcGVuZHNPbk93blByb3BzKToxIT09ZS5sZW5ndGh9ZnVuY3Rpb24gYShlLHQpe3JldHVy
biBmdW5jdGlvbih0LG4pe3ZhciByPShuLmRpc3BsYXlOYW1lLGZ1bmN0aW9uKGUsdCl7cmV0dXJu
IHIuZGVwZW5kc09uT3duUHJvcHM/ci5tYXBUb1Byb3BzKGUsdCk6ci5tYXBUb1Byb3BzKGUpfSk7
cmV0dXJuIHIuZGVwZW5kc09uT3duUHJvcHM9ITAsci5tYXBUb1Byb3BzPWZ1bmN0aW9uKHQsbil7
ci5tYXBUb1Byb3BzPWUsci5kZXBlbmRzT25Pd25Qcm9wcz1pKGUpO3ZhciBvPXIodCxuKTtyZXR1
cm4iZnVuY3Rpb24iPT10eXBlb2YgbyYmKHIubWFwVG9Qcm9wcz1vLHIuZGVwZW5kc09uT3duUHJv
cHM9aShvKSxvPXIodCxuKSksb30scn19dC5fX2VzTW9kdWxlPSEwLHQud3JhcE1hcFRvUHJvcHND
b25zdGFudD1vLHQuZ2V0RGVwZW5kc09uT3duUHJvcHM9aSx0LndyYXBNYXBUb1Byb3BzRnVuYz1h
O3ZhciB1PW4oODMpO3IodSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dC5fX2VzTW9kdWxlPSEw
LHQuY29ubmVjdD10LmNvbm5lY3RBZHZhbmNlZD10LmNyZWF0ZVByb3ZpZGVyPXQuUHJvdmlkZXI9
dm9pZCAwO3ZhciBvPW4oMTg3KSxpPXIobyksYT1uKDc5KSx1PXIoYSkscz1uKDE4OCksYz1yKHMp
O3QuUHJvdmlkZXI9aS5kZWZhdWx0LHQuY3JlYXRlUHJvdmlkZXI9by5jcmVhdGVQcm92aWRlcix0
LmNvbm5lY3RBZHZhbmNlZD11LmRlZmF1bHQsdC5jb25uZWN0PWMuZGVmYXVsdH0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/
ZTp7ZGVmYXVsdDplfX10Ll9fZXNNb2R1bGU9ITAsdC5zdG9yZVNoYXBlPXQuc3Vic2NyaXB0aW9u
U2hhcGU9dm9pZCAwO3ZhciBvPW4oNTYpLGk9cihvKTt0LnN1YnNjcmlwdGlvblNoYXBlPWkuZGVm
YXVsdC5zaGFwZSh7dHJ5U3Vic2NyaWJlOmkuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsdHJ5VW5z
dWJzY3JpYmU6aS5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCxub3RpZnlOZXN0ZWRTdWJzOmkuZGVm
YXVsdC5mdW5jLmlzUmVxdWlyZWQsaXNTdWJzY3JpYmVkOmkuZGVmYXVsdC5mdW5jLmlzUmVxdWly
ZWR9KSx0LnN0b3JlU2hhcGU9aS5kZWZhdWx0LnNoYXBlKHtzdWJzY3JpYmU6aS5kZWZhdWx0LmZ1
bmMuaXNSZXF1aXJlZCxkaXNwYXRjaDppLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLGdldFN0YXRl
OmkuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWR9KX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5j
dGlvbiBvKGUsdCxuKXsoMCxhLmRlZmF1bHQpKGUpfHwoMCxzLmRlZmF1bHQpKG4rIigpIGluICIr
dCsiIG11c3QgcmV0dXJuIGEgcGxhaW4gb2JqZWN0LiBJbnN0ZWFkIHJlY2VpdmVkICIrZSsiLiIp
fXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bzt2YXIgaT1uKDMzKSxhPXIoaSksdT1uKDUwKSxz
PXIodSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4g
ZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0
YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBm
dW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3Io
InRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxl
ZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6
dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93
IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBh
IGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0
LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZToh
MCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0
UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwi
X19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7
Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51
bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEw
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixy
KXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCkscz1uKDEyKSxjPXIo
cyksbD1uKDMxKSxwPXIobCksZD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbixyLGE7
byh0aGlzLHQpO2Zvcih2YXIgdT1hcmd1bWVudHMubGVuZ3RoLHM9QXJyYXkodSksYz0wO2M8dTtj
Kyspc1tjXT1hcmd1bWVudHNbY107cmV0dXJuIG49cj1pKHRoaXMsKGU9dC5fX3Byb3RvX198fE9i
amVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQocykpKSxy
LnN0YXRlPXt0ZXh0OnIucHJvcHMudGV4dHx8IiJ9LHIuaGFuZGxlU3VibWl0PWZ1bmN0aW9uKGUp
e3ZhciB0PWUudGFyZ2V0LnZhbHVlLnRyaW0oKTsxMz09PWUud2hpY2gmJihyLnByb3BzLm9uU2F2
ZSh0KSxyLnByb3BzLm5ld1RvZG8mJnIuc2V0U3RhdGUoe3RleHQ6IiJ9KSl9LHIuaGFuZGxlQ2hh
bmdlPWZ1bmN0aW9uKGUpe3Iuc2V0U3RhdGUoe3RleHQ6ZS50YXJnZXQudmFsdWV9KX0sci5oYW5k
bGVCbHVyPWZ1bmN0aW9uKGUpe3IucHJvcHMubmV3VG9kb3x8ci5wcm9wcy5vblNhdmUoZS50YXJn
ZXQudmFsdWUpfSxhPW4saShyLGEpfXJldHVybiBhKHQsZSksdSh0LFt7a2V5OiJyZW5kZXIiLHZh
bHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGMuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJpbnB1dCIse2Ns
YXNzTmFtZTooMCxwLmRlZmF1bHQpKHtlZGl0OnRoaXMucHJvcHMuZWRpdGluZywibmV3LXRvZG8i
OnRoaXMucHJvcHMubmV3VG9kb30pLHR5cGU6InRleHQiLHBsYWNlaG9sZGVyOnRoaXMucHJvcHMu
cGxhY2Vob2xkZXIsYXV0b0ZvY3VzOiJ0cnVlIix2YWx1ZTp0aGlzLnN0YXRlLnRleHQsb25CbHVy
OnRoaXMuaGFuZGxlQmx1cixvbkNoYW5nZTp0aGlzLmhhbmRsZUNoYW5nZSxvbktleURvd246dGhp
cy5oYW5kbGVTdWJtaXR9KX19XSksdH0ocy5Db21wb25lbnQpO2QucHJvcFR5cGVzPXtvblNhdmU6
cy5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLHRleHQ6cy5Qcm9wVHlwZXMuc3RyaW5nLHBsYWNl
aG9sZGVyOnMuUHJvcFR5cGVzLnN0cmluZyxlZGl0aW5nOnMuUHJvcFR5cGVzLmJvb2wsbmV3VG9k
bzpzLlByb3BUeXBlcy5ib29sfSx0LmRlZmF1bHQ9ZH0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmlj
dCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQURE
X1RPRE89IkFERF9UT0RPIix0LkRFTEVURV9UT0RPPSJERUxFVEVfVE9ETyIsdC5FRElUX1RPRE89
IkVESVRfVE9ETyIsdC5DT01QTEVURV9UT0RPPSJDT01QTEVURV9UT0RPIix0LkNPTVBMRVRFX0FM
TD0iQ09NUExFVEVfQUxMIix0LkNMRUFSX0NPTVBMRVRFRD0iQ0xFQVJfQ09NUExFVEVEIn0sZnVu
Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1
bGUiLHt2YWx1ZTohMH0pO3QuU0hPV19BTEw9InNob3dfYWxsIix0LlNIT1dfQ09NUExFVEVEPSJz
aG93X2NvbXBsZXRlZCIsdC5TSE9XX0FDVElWRT0ic2hvd19hY3RpdmUifSxmdW5jdGlvbihlLHQp
e2Z1bmN0aW9uIG4oKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRl
ZmluZWQiKX1mdW5jdGlvbiByKCl7dGhyb3cgbmV3IEVycm9yKCJjbGVhclRpbWVvdXQgaGFzIG5v
dCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBvKGUpe2lmKGw9PT1zZXRUaW1lb3V0KXJldHVybiBz
ZXRUaW1lb3V0KGUsMCk7aWYoKGw9PT1ufHwhbCkmJnNldFRpbWVvdXQpcmV0dXJuIGw9c2V0VGlt
ZW91dCxzZXRUaW1lb3V0KGUsMCk7dHJ5e3JldHVybiBsKGUsMCl9Y2F0Y2godCl7dHJ5e3JldHVy
biBsLmNhbGwobnVsbCxlLDApfWNhdGNoKHQpe3JldHVybiBsLmNhbGwodGhpcyxlLDApfX19ZnVu
Y3Rpb24gaShlKXtpZihwPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQoZSk7aWYo
KHA9PT1yfHwhcCkmJmNsZWFyVGltZW91dClyZXR1cm4gcD1jbGVhclRpbWVvdXQsY2xlYXJUaW1l
b3V0KGUpO3RyeXtyZXR1cm4gcChlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIHAuY2FsbChudWxsLGUp
OwotfWNhdGNoKHQpe3JldHVybiBwLmNhbGwodGhpcyxlKX19fWZ1bmN0aW9uIGEoKXt2JiZmJiYo
dj0hMSxmLmxlbmd0aD9oPWYuY29uY2F0KGgpOm09LTEsaC5sZW5ndGgmJnUoKSl9ZnVuY3Rpb24g
dSgpe2lmKCF2KXt2YXIgZT1vKGEpO3Y9ITA7Zm9yKHZhciB0PWgubGVuZ3RoO3Q7KXtmb3IoZj1o
LGg9W107KyttPHQ7KWYmJmZbbV0ucnVuKCk7bT0tMSx0PWgubGVuZ3RofWY9bnVsbCx2PSExLGko
ZSl9fWZ1bmN0aW9uIHMoZSx0KXt0aGlzLmZ1bj1lLHRoaXMuYXJyYXk9dH1mdW5jdGlvbiBjKCl7
fXZhciBsLHAsZD1lLmV4cG9ydHM9e307IWZ1bmN0aW9uKCl7dHJ5e2w9ImZ1bmN0aW9uIj09dHlw
ZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpufWNhdGNoKGUpe2w9bn10cnl7cD0iZnVuY3Rpb24i
PT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDpyfWNhdGNoKGUpe3A9cn19KCk7dmFy
IGYsaD1bXSx2PSExLG09LTE7ZC5uZXh0VGljaz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgQXJyYXko
YXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciBuPTE7bjxh
cmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO2gucHVzaChuZXcgcyhlLHQp
KSwxIT09aC5sZW5ndGh8fHZ8fG8odSl9LHMucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMu
ZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LGQudGl0bGU9ImJyb3dzZXIiLGQuYnJvd3Nlcj0h
MCxkLmVudj17fSxkLmFyZ3Y9W10sZC52ZXJzaW9uPSIiLGQudmVyc2lvbnM9e30sZC5vbj1jLGQu
YWRkTGlzdGVuZXI9YyxkLm9uY2U9YyxkLm9mZj1jLGQucmVtb3ZlTGlzdGVuZXI9YyxkLnJlbW92
ZUFsbExpc3RlbmVycz1jLGQuZW1pdD1jLGQuYmluZGluZz1mdW5jdGlvbihlKXt0aHJvdyBuZXcg
RXJyb3IoInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkIil9LGQuY3dkPWZ1bmN0aW9u
KCl7cmV0dXJuIi8ifSxkLmNoZGlyPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vz
cy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkIil9LGQudW1hc2s9ZnVuY3Rpb24oKXtyZXR1cm4gMH19
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBvKGUp
e3RyeXtyZXR1cm4gZS50aGVufWNhdGNoKHQpe3JldHVybiB5PXQsZ319ZnVuY3Rpb24gaShlLHQp
e3RyeXtyZXR1cm4gZSh0KX1jYXRjaChuKXtyZXR1cm4geT1uLGd9fWZ1bmN0aW9uIGEoZSx0LG4p
e3RyeXtlKHQsbil9Y2F0Y2gocil7cmV0dXJuIHk9cixnfX1mdW5jdGlvbiB1KGUpe2lmKCJvYmpl
Y3QiIT10eXBlb2YgdGhpcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm9taXNlcyBtdXN0IGJlIGNv
bnN0cnVjdGVkIHZpYSBuZXciKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlw
ZUVycm9yKCJub3QgYSBmdW5jdGlvbiIpO3RoaXMuXzQ1PTAsdGhpcy5fODE9MCx0aGlzLl82NT1u
dWxsLHRoaXMuXzU0PW51bGwsZSE9PXImJnYoZSx0aGlzKX1mdW5jdGlvbiBzKGUsdCxuKXtyZXR1
cm4gbmV3IGUuY29uc3RydWN0b3IoZnVuY3Rpb24obyxpKXt2YXIgYT1uZXcgdShyKTthLnRoZW4o
byxpKSxjKGUsbmV3IGgodCxuLGEpKX0pfWZ1bmN0aW9uIGMoZSx0KXtmb3IoOzM9PT1lLl84MTsp
ZT1lLl82NTtyZXR1cm4gdS5fMTAmJnUuXzEwKGUpLDA9PT1lLl84MT8wPT09ZS5fNDU/KGUuXzQ1
PTEsdm9pZChlLl81ND10KSk6MT09PWUuXzQ1PyhlLl80NT0yLHZvaWQoZS5fNTQ9W2UuXzU0LHRd
KSk6dm9pZCBlLl81NC5wdXNoKHQpOnZvaWQgbChlLHQpfWZ1bmN0aW9uIGwoZSx0KXttKGZ1bmN0
aW9uKCl7dmFyIG49MT09PWUuXzgxP3Qub25GdWxmaWxsZWQ6dC5vblJlamVjdGVkO2lmKG51bGw9
PT1uKXJldHVybiB2b2lkKDE9PT1lLl84MT9wKHQucHJvbWlzZSxlLl82NSk6ZCh0LnByb21pc2Us
ZS5fNjUpKTt2YXIgcj1pKG4sZS5fNjUpO3I9PT1nP2QodC5wcm9taXNlLHkpOnAodC5wcm9taXNl
LHIpfSl9ZnVuY3Rpb24gcChlLHQpe2lmKHQ9PT1lKXJldHVybiBkKGUsbmV3IFR5cGVFcnJvcigi
QSBwcm9taXNlIGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0c2VsZi4iKSk7aWYodCYmKCJvYmpl
Y3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXt2YXIgbj1vKHQpO2lmKG49PT1n
KXJldHVybiBkKGUseSk7aWYobj09PWUudGhlbiYmdCBpbnN0YW5jZW9mIHUpcmV0dXJuIGUuXzgx
PTMsZS5fNjU9dCx2b2lkIGYoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4pcmV0dXJuIHZvaWQg
dihuLmJpbmQodCksZSl9ZS5fODE9MSxlLl82NT10LGYoZSl9ZnVuY3Rpb24gZChlLHQpe2UuXzgx
PTIsZS5fNjU9dCx1Ll85NyYmdS5fOTcoZSx0KSxmKGUpfWZ1bmN0aW9uIGYoZSl7aWYoMT09PWUu
XzQ1JiYoYyhlLGUuXzU0KSxlLl81ND1udWxsKSwyPT09ZS5fNDUpe2Zvcih2YXIgdD0wO3Q8ZS5f
NTQubGVuZ3RoO3QrKyljKGUsZS5fNTRbdF0pO2UuXzU0PW51bGx9fWZ1bmN0aW9uIGgoZSx0LG4p
e3RoaXMub25GdWxmaWxsZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpudWxsLHRoaXMub25SZWpl
Y3RlZD0iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGwsdGhpcy5wcm9taXNlPW59ZnVuY3Rpb24g
dihlLHQpe3ZhciBuPSExLHI9YShlLGZ1bmN0aW9uKGUpe258fChuPSEwLHAodCxlKSl9LGZ1bmN0
aW9uKGUpe258fChuPSEwLGQodCxlKSl9KTtufHxyIT09Z3x8KG49ITAsZCh0LHkpKX12YXIgbT1u
KDE5NykseT1udWxsLGc9e307ZS5leHBvcnRzPXUsdS5fMTA9bnVsbCx1Ll85Nz1udWxsLHUuXzYx
PXIsdS5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihlLHQpe2lmKHRoaXMuY29uc3RydWN0b3IhPT11
KXJldHVybiBzKHRoaXMsZSx0KTt2YXIgbj1uZXcgdShyKTtyZXR1cm4gYyh0aGlzLG5ldyBoKGUs
dCxuKSksbn19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7
dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1jLHRoaXMudXBkYXRlcj1ufHxz
fWZ1bmN0aW9uIG8oZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9
Yyx0aGlzLnVwZGF0ZXI9bnx8c31mdW5jdGlvbiBpKCl7fXZhciBhPW4oMjMpLHU9big0KSxzPW4o
OTIpLGM9KG4oOTMpLG4oMjQpKTtuKDEpLG4oMjIyKTtyLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9u
ZW50PXt9LHIucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7Im9iamVjdCIhPXR5cGVv
ZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9ZT9hKCI4NSIpOnZvaWQgMCx0aGlzLnVw
ZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsZSksdCYmdGhpcy51cGRhdGVyLmVucXVldWVDYWxs
YmFjayh0aGlzLHQsInNldFN0YXRlIil9LHIucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9u
KGUpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyksZSYmdGhpcy51cGRhdGVy
LmVucXVldWVDYWxsYmFjayh0aGlzLGUsImZvcmNlVXBkYXRlIil9O2kucHJvdG90eXBlPXIucHJv
dG90eXBlLG8ucHJvdG90eXBlPW5ldyBpLG8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW8sdShvLnBy
b3RvdHlwZSxyLnByb3RvdHlwZSksby5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITAs
ZS5leHBvcnRzPXtDb21wb25lbnQ6cixQdXJlQ29tcG9uZW50Om99fSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3Ry
aW5nLG49T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxyPVJlZ0V4cCgiXiIrdC5jYWxs
KG4pLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3du
UHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8i
KSsiJCIpO3RyeXt2YXIgbz10LmNhbGwoZSk7cmV0dXJuIHIudGVzdChvKX1jYXRjaChpKXtyZXR1
cm4hMX19ZnVuY3Rpb24gbyhlKXt2YXIgdD1jKGUpO2lmKHQpe3ZhciBuPXQuY2hpbGRJRHM7bChl
KSxuLmZvckVhY2gobyl9fWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybiJcbiAgICBpbiAiKyhlfHwi
VW5rbm93biIpKyh0PyIgKGF0ICIrdC5maWxlTmFtZS5yZXBsYWNlKC9eLipbXFxcL10vLCIiKSsi
OiIrdC5saW5lTnVtYmVyKyIpIjpuPyIgKGNyZWF0ZWQgYnkgIituKyIpIjoiIil9ZnVuY3Rpb24g
YShlKXtyZXR1cm4gbnVsbD09ZT8iI2VtcHR5Ijoic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIi
PT10eXBlb2YgZT8iI3RleHQiOiJzdHJpbmciPT10eXBlb2YgZS50eXBlP2UudHlwZTplLnR5cGUu
ZGlzcGxheU5hbWV8fGUudHlwZS5uYW1lfHwiVW5rbm93biJ9ZnVuY3Rpb24gdShlKXt2YXIgdCxu
PVAuZ2V0RGlzcGxheU5hbWUoZSkscj1QLmdldEVsZW1lbnQoZSksbz1QLmdldE93bmVySUQoZSk7
cmV0dXJuIG8mJih0PVAuZ2V0RGlzcGxheU5hbWUobykpLGkobixyJiZyLl9zb3VyY2UsdCl9dmFy
IHMsYyxsLHAsZCxmLGgsdj1uKDIzKSxtPW4oMTEpLHk9KG4oMSksbigyKSwiZnVuY3Rpb24iPT10
eXBlb2YgQXJyYXkuZnJvbSYmImZ1bmN0aW9uIj09dHlwZW9mIE1hcCYmcihNYXApJiZudWxsIT1N
YXAucHJvdG90eXBlJiYiZnVuY3Rpb24iPT10eXBlb2YgTWFwLnByb3RvdHlwZS5rZXlzJiZyKE1h
cC5wcm90b3R5cGUua2V5cykmJiJmdW5jdGlvbiI9PXR5cGVvZiBTZXQmJnIoU2V0KSYmbnVsbCE9
U2V0LnByb3RvdHlwZSYmImZ1bmN0aW9uIj09dHlwZW9mIFNldC5wcm90b3R5cGUua2V5cyYmcihT
ZXQucHJvdG90eXBlLmtleXMpKTtpZih5KXt2YXIgZz1uZXcgTWFwLGI9bmV3IFNldDtzPWZ1bmN0
aW9uKGUsdCl7Zy5zZXQoZSx0KX0sYz1mdW5jdGlvbihlKXtyZXR1cm4gZy5nZXQoZSl9LGw9ZnVu
Y3Rpb24oZSl7Zy5kZWxldGUoZSl9LHA9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbShnLmtl
eXMoKSl9LGQ9ZnVuY3Rpb24oZSl7Yi5hZGQoZSl9LGY9ZnVuY3Rpb24oZSl7Yi5kZWxldGUoZSl9
LGg9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbShiLmtleXMoKSl9fWVsc2V7dmFyIF89e30s
Qz17fSxFPWZ1bmN0aW9uKGUpe3JldHVybiIuIitlfSx3PWZ1bmN0aW9uKGUpe3JldHVybiBwYXJz
ZUludChlLnN1YnN0cigxKSwxMCl9O3M9ZnVuY3Rpb24oZSx0KXt2YXIgbj1FKGUpO19bbl09dH0s
Yz1mdW5jdGlvbihlKXt2YXIgdD1FKGUpO3JldHVybiBfW3RdfSxsPWZ1bmN0aW9uKGUpe3ZhciB0
PUUoZSk7ZGVsZXRlIF9bdF19LHA9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMoXykubWFw
KHcpfSxkPWZ1bmN0aW9uKGUpe3ZhciB0PUUoZSk7Q1t0XT0hMH0sZj1mdW5jdGlvbihlKXt2YXIg
dD1FKGUpO2RlbGV0ZSBDW3RdfSxoPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKEMpLm1h
cCh3KX19dmFyIFQ9W10sUD17b25TZXRDaGlsZHJlbjpmdW5jdGlvbihlLHQpe3ZhciBuPWMoZSk7
bj92b2lkIDA6digiMTQ0Iiksbi5jaGlsZElEcz10O2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisr
KXt2YXIgbz10W3JdLGk9YyhvKTtpP3ZvaWQgMDp2KCIxNDAiKSxudWxsPT1pLmNoaWxkSURzJiYi
b2JqZWN0Ij09dHlwZW9mIGkuZWxlbWVudCYmbnVsbCE9aS5lbGVtZW50P3YoIjE0MSIpOnZvaWQg
MCxpLmlzTW91bnRlZD92b2lkIDA6digiNzEiKSxudWxsPT1pLnBhcmVudElEJiYoaS5wYXJlbnRJ
RD1lKSxpLnBhcmVudElEIT09ZT92KCIxNDIiLG8saS5wYXJlbnRJRCxlKTp2b2lkIDB9fSxvbkJl
Zm9yZU1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17ZWxlbWVudDp0LHBhcmVu
dElEOm4sdGV4dDpudWxsLGNoaWxkSURzOltdLGlzTW91bnRlZDohMSx1cGRhdGVDb3VudDowfTtz
KGUscil9LG9uQmVmb3JlVXBkYXRlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG49YyhlKTtu
JiZuLmlzTW91bnRlZCYmKG4uZWxlbWVudD10KX0sb25Nb3VudENvbXBvbmVudDpmdW5jdGlvbihl
KXt2YXIgdD1jKGUpO3Q/dm9pZCAwOnYoIjE0NCIpLHQuaXNNb3VudGVkPSEwO3ZhciBuPTA9PT10
LnBhcmVudElEO24mJmQoZSl9LG9uVXBkYXRlQ29tcG9uZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWMo
ZSk7dCYmdC5pc01vdW50ZWQmJnQudXBkYXRlQ291bnQrK30sb25Vbm1vdW50Q29tcG9uZW50OmZ1
bmN0aW9uKGUpe3ZhciB0PWMoZSk7aWYodCl7dC5pc01vdW50ZWQ9ITE7dmFyIG49MD09PXQucGFy
ZW50SUQ7biYmZihlKX1ULnB1c2goZSl9LHB1cmdlVW5tb3VudGVkQ29tcG9uZW50czpmdW5jdGlv
bigpe2lmKCFQLl9wcmV2ZW50UHVyZ2luZyl7Zm9yKHZhciBlPTA7ZTxULmxlbmd0aDtlKyspe3Zh
ciB0PVRbZV07byh0KX1ULmxlbmd0aD0wfX0saXNNb3VudGVkOmZ1bmN0aW9uKGUpe3ZhciB0PWMo
ZSk7cmV0dXJuISF0JiZ0LmlzTW91bnRlZH0sZ2V0Q3VycmVudFN0YWNrQWRkZW5kdW06ZnVuY3Rp
b24oZSl7dmFyIHQ9IiI7aWYoZSl7dmFyIG49YShlKSxyPWUuX293bmVyO3QrPWkobixlLl9zb3Vy
Y2UsciYmci5nZXROYW1lKCkpfXZhciBvPW0uY3VycmVudCx1PW8mJm8uX2RlYnVnSUQ7cmV0dXJu
IHQrPVAuZ2V0U3RhY2tBZGRlbmR1bUJ5SUQodSl9LGdldFN0YWNrQWRkZW5kdW1CeUlEOmZ1bmN0
aW9uKGUpe2Zvcih2YXIgdD0iIjtlOyl0Kz11KGUpLGU9UC5nZXRQYXJlbnRJRChlKTtyZXR1cm4g
dH0sZ2V0Q2hpbGRJRHM6ZnVuY3Rpb24oZSl7dmFyIHQ9YyhlKTtyZXR1cm4gdD90LmNoaWxkSURz
OltdfSxnZXREaXNwbGF5TmFtZTpmdW5jdGlvbihlKXt2YXIgdD1QLmdldEVsZW1lbnQoZSk7cmV0
dXJuIHQ/YSh0KTpudWxsfSxnZXRFbGVtZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWMoZSk7cmV0dXJu
IHQ/dC5lbGVtZW50Om51bGx9LGdldE93bmVySUQ6ZnVuY3Rpb24oZSl7dmFyIHQ9UC5nZXRFbGVt
ZW50KGUpO3JldHVybiB0JiZ0Ll9vd25lcj90Ll9vd25lci5fZGVidWdJRDpudWxsfSxnZXRQYXJl
bnRJRDpmdW5jdGlvbihlKXt2YXIgdD1jKGUpO3JldHVybiB0P3QucGFyZW50SUQ6bnVsbH0sZ2V0
U291cmNlOmZ1bmN0aW9uKGUpe3ZhciB0PWMoZSksbj10P3QuZWxlbWVudDpudWxsLHI9bnVsbCE9
bj9uLl9zb3VyY2U6bnVsbDtyZXR1cm4gcn0sZ2V0VGV4dDpmdW5jdGlvbihlKXt2YXIgdD1QLmdl
dEVsZW1lbnQoZSk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Q6Im51bWJlciI9PXR5cGVvZiB0
PyIiK3Q6bnVsbH0sZ2V0VXBkYXRlQ291bnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9YyhlKTtyZXR1cm4g
dD90LnVwZGF0ZUNvdW50OjB9LGdldFJvb3RJRHM6aCxnZXRSZWdpc3RlcmVkSURzOnAscHVzaE5v
blN0YW5kYXJkV2FybmluZ1N0YWNrOmZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIj09dHlwZW9m
IGNvbnNvbGUucmVhY3RTdGFjayl7dmFyIG49W10scj1tLmN1cnJlbnQsbz1yJiZyLl9kZWJ1Z0lE
O3RyeXtmb3IoZSYmbi5wdXNoKHtuYW1lOm8/UC5nZXREaXNwbGF5TmFtZShvKTpudWxsLGZpbGVO
YW1lOnQ/dC5maWxlTmFtZTpudWxsLGxpbmVOdW1iZXI6dD90LmxpbmVOdW1iZXI6bnVsbH0pO287
KXt2YXIgaT1QLmdldEVsZW1lbnQobyksYT1QLmdldFBhcmVudElEKG8pLHU9UC5nZXRPd25lcklE
KG8pLHM9dT9QLmdldERpc3BsYXlOYW1lKHUpOm51bGwsYz1pJiZpLl9zb3VyY2U7bi5wdXNoKHtu
YW1lOnMsZmlsZU5hbWU6Yz9jLmZpbGVOYW1lOm51bGwsbGluZU51bWJlcjpjP2MubGluZU51bWJl
cjpudWxsfSksbz1hfX1jYXRjaChsKXt9Y29uc29sZS5yZWFjdFN0YWNrKG4pfX0scG9wTm9uU3Rh
bmRhcmRXYXJuaW5nU3RhY2s6ZnVuY3Rpb24oKXsiZnVuY3Rpb24iPT10eXBlb2YgY29uc29sZS5y
ZWFjdFN0YWNrRW5kJiZjb25zb2xlLnJlYWN0U3RhY2tFbmQoKX19O2UuZXhwb3J0cz1QfSxmdW5j
dGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZT
eW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50Iil8fDYwMTAzO2UuZXhwb3J0cz1u
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt9dmFyIG89KG4o
Mikse2lzTW91bnRlZDpmdW5jdGlvbihlKXtyZXR1cm4hMX0sZW5xdWV1ZUNhbGxiYWNrOmZ1bmN0
aW9uKGUsdCl7fSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oZSl7cihlLCJmb3JjZVVwZGF0
ZSIpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCl7cihlLCJyZXBsYWNlU3RhdGUi
KX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUsdCl7cihlLCJzZXRTdGF0ZSIpfX0pO2UuZXhw
b3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSExO2UuZXhwb3J0cz1y
fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7Zm9yKHZhciBlPWFyZ3Vt
ZW50cy5sZW5ndGgsdD1BcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1
cm4gMD09PXQubGVuZ3RoP2Z1bmN0aW9uKGUpe3JldHVybiBlfToxPT09dC5sZW5ndGg/dFswXTp0
LnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlKHQuYXBwbHko
dm9pZCAwLGFyZ3VtZW50cykpfX0pfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bn0sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1
bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCxuKXtmdW5jdGlvbiByKCl7eT09PW0mJih5
PW0uc2xpY2UoKSl9ZnVuY3Rpb24gaSgpe3JldHVybiB2fWZ1bmN0aW9uIHUoZSl7aWYoImZ1bmN0
aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBsaXN0ZW5lciB0byBiZSBh
IGZ1bmN0aW9uLiIpO3ZhciB0PSEwO3JldHVybiByKCkseS5wdXNoKGUpLGZ1bmN0aW9uKCl7aWYo
dCl7dD0hMSxyKCk7dmFyIG49eS5pbmRleE9mKGUpO3kuc3BsaWNlKG4sMSl9fX1mdW5jdGlvbiBs
KGUpe2lmKCEoMCxhLmRlZmF1bHQpKGUpKXRocm93IG5ldyBFcnJvcigiQWN0aW9ucyBtdXN0IGJl
IHBsYWluIG9iamVjdHMuIFVzZSBjdXN0b20gbWlkZGxld2FyZSBmb3IgYXN5bmMgYWN0aW9ucy4i
KTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGUudHlwZSl0aHJvdyBuZXcgRXJyb3IoJ0FjdGlvbnMg
bWF5IG5vdCBoYXZlIGFuIHVuZGVmaW5lZCAidHlwZSIgcHJvcGVydHkuIEhhdmUgeW91IG1pc3Nw
ZWxsZWQgYSBjb25zdGFudD8nKTtpZihnKXRocm93IG5ldyBFcnJvcigiUmVkdWNlcnMgbWF5IG5v
dCBkaXNwYXRjaCBhY3Rpb25zLiIpO3RyeXtnPSEwLHY9aCh2LGUpfWZpbmFsbHl7Zz0hMX1mb3Io
dmFyIHQ9bT15LG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyKCl9cmV0dXJuIGV9ZnVu
Y3Rpb24gcChlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRoZSBuZXh0UmVkdWNlciB0byBiZSBhIGZ1bmN0aW9uLiIpO2g9ZSxsKHt0eXBlOmMuSU5J
VH0pfWZ1bmN0aW9uIGQoKXt2YXIgZSx0PXU7cmV0dXJuIGU9e3N1YnNjcmliZTpmdW5jdGlvbihl
KXtmdW5jdGlvbiBuKCl7ZS5uZXh0JiZlLm5leHQoaSgpKX1pZigib2JqZWN0IiE9dHlwZW9mIGUp
dGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgdGhlIG9ic2VydmVyIHRvIGJlIGFuIG9iamVj
dC4iKTtuKCk7dmFyIHI9dChuKTtyZXR1cm57dW5zdWJzY3JpYmU6cn19fSxlW3MuZGVmYXVsdF09
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZX12YXIgZjtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCYm
InVuZGVmaW5lZCI9PXR5cGVvZiBuJiYobj10LHQ9dm9pZCAwKSwidW5kZWZpbmVkIiE9dHlwZW9m
IG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdGhl
IGVuaGFuY2VyIHRvIGJlIGEgZnVuY3Rpb24uIik7cmV0dXJuIG4obykoZSx0KX1pZigiZnVuY3Rp
b24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRoZSByZWR1Y2VyIHRvIGJl
IGEgZnVuY3Rpb24uIik7dmFyIGg9ZSx2PXQsbT1bXSx5PW0sZz0hMTtyZXR1cm4gbCh7dHlwZTpj
LklOSVR9KSxmPXtkaXNwYXRjaDpsLHN1YnNjcmliZTp1LGdldFN0YXRlOmkscmVwbGFjZVJlZHVj
ZXI6cH0sZltzLmRlZmF1bHRdPWQsZn10Ll9fZXNNb2R1bGU9ITAsdC5BY3Rpb25UeXBlcz12b2lk
IDAsdC5kZWZhdWx0PW87dmFyIGk9bigzMyksYT1yKGkpLHU9bigyMjgpLHM9cih1KSxjPXQuQWN0
aW9uVHlwZXM9e0lOSVQ6IkBAcmVkdXgvSU5JVCJ9fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiBuKGUpeyJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmImZ1bmN0aW9uIj09
dHlwZW9mIGNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoZSk7dHJ5e3Rocm93IG5ldyBFcnJv
cihlKX1jYXRjaCh0KXt9fXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bn0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlfWZ1bmN0aW9uIG8oZSx0LG4p
e2Z1bmN0aW9uIG8oZSx0KXt2YXIgbj1nLmhhc093blByb3BlcnR5KHQpP2dbdF06bnVsbDtFLmhh
c093blByb3BlcnR5KHQpJiZzKCJPVkVSUklERV9CQVNFIj09PW4sIlJlYWN0Q2xhc3NJbnRlcmZh
Y2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBvdmVycmlkZSBgJXNgIGZyb20geW91ciBjbGFzcyBz
cGVjaWZpY2F0aW9uLiBFbnN1cmUgdGhhdCB5b3VyIG1ldGhvZCBuYW1lcyBkbyBub3Qgb3Zlcmxh
cCB3aXRoIFJlYWN0IG1ldGhvZHMuIix0KSxlJiZzKCJERUZJTkVfTUFOWSI9PT1ufHwiREVGSU5F
X01BTllfTUVSR0VEIj09PW4sIlJlYWN0Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGlu
ZyB0byBkZWZpbmUgYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBj
b25mbGljdCBtYXkgYmUgZHVlIHRvIGEgbWl4aW4uIix0KX1mdW5jdGlvbiBpKGUsbil7aWYobil7
cygiZnVuY3Rpb24iIT10eXBlb2YgbiwiUmVhY3RDbGFzczogWW91J3JlIGF0dGVtcHRpbmcgdG8g
dXNlIGEgY29tcG9uZW50IGNsYXNzIG9yIGZ1bmN0aW9uIGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1
c3QgdXNlIGEgcmVndWxhciBvYmplY3QuIikscyghdChuKSwiUmVhY3RDbGFzczogWW91J3JlIGF0
dGVtcHRpbmcgdG8gdXNlIGEgY29tcG9uZW50IGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNl
IGEgcmVndWxhciBvYmplY3QuIik7dmFyIHI9ZS5wcm90b3R5cGUsaT1yLl9fcmVhY3RBdXRvQmlu
ZFBhaXJzO24uaGFzT3duUHJvcGVydHkoYykmJmIubWl4aW5zKGUsbi5taXhpbnMpO2Zvcih2YXIg
YSBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkoYSkmJmEhPT1jKXt2YXIgdT1uW2FdLGw9ci5oYXNP
d25Qcm9wZXJ0eShhKTtpZihvKGwsYSksYi5oYXNPd25Qcm9wZXJ0eShhKSliW2FdKGUsdSk7ZWxz
ZXt2YXIgcD1nLmhhc093blByb3BlcnR5KGEpLGg9ImZ1bmN0aW9uIj09dHlwZW9mIHUsdj1oJiYh
cCYmIWwmJm4uYXV0b2JpbmQhPT0hMTtpZih2KWkucHVzaChhLHUpLHJbYV09dTtlbHNlIGlmKGwp
e3ZhciBtPWdbYV07cyhwJiYoIkRFRklORV9NQU5ZX01FUkdFRCI9PT1tfHwiREVGSU5FX01BTlki
PT09bSksIlJlYWN0Q2xhc3M6IFVuZXhwZWN0ZWQgc3BlYyBwb2xpY3kgJXMgZm9yIGtleSAlcyB3
aGVuIG1peGluZyBpbiBjb21wb25lbnQgc3BlY3MuIixtLGEpLCJERUZJTkVfTUFOWV9NRVJHRUQi
PT09bT9yW2FdPWQoclthXSx1KToiREVGSU5FX01BTlkiPT09bSYmKHJbYV09ZihyW2FdLHUpKX1l
bHNlIHJbYV09dX19fWVsc2U7fWZ1bmN0aW9uIGwoZSx0KXtpZih0KWZvcih2YXIgbiBpbiB0KXt2
YXIgcj10W25dO2lmKHQuaGFzT3duUHJvcGVydHkobikpe3ZhciBvPW4gaW4gYjtzKCFvLCdSZWFj
dENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lIGEgcmVzZXJ2ZWQgcHJvcGVydHks
IGAlc2AsIHRoYXQgc2hvdWxkblwndCBiZSBvbiB0aGUgInN0YXRpY3MiIGtleS4gRGVmaW5lIGl0
IGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IGluc3RlYWQ7IGl0IHdpbGwgc3RpbGwgYmUgYWNjZXNz
aWJsZSBvbiB0aGUgY29uc3RydWN0b3IuJyxuKTt2YXIgaT1uIGluIGU7cyghaSwiUmVhY3RDbGFz
czogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSBgJXNgIG9uIHlvdXIgY29tcG9uZW50IG1v
cmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSBkdWUgdG8gYSBtaXhpbi4iLG4pLGVb
bl09cn19fWZ1bmN0aW9uIHAoZSx0KXtzKGUmJnQmJiJvYmplY3QiPT10eXBlb2YgZSYmIm9iamVj
dCI9PXR5cGVvZiB0LCJtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6IENhbm5vdCBtZXJn
ZSBub24tb2JqZWN0cy4iKTtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiYocyh2
b2lkIDA9PT1lW25dLCJtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6IFRyaWVkIHRvIG1l
cmdlIHR3byBvYmplY3RzIHdpdGggdGhlIHNhbWUga2V5OiBgJXNgLiBUaGlzIGNvbmZsaWN0IG1h
eSBiZSBkdWUgdG8gYSBtaXhpbjsgaW4gcGFydGljdWxhciwgdGhpcyBtYXkgYmUgY2F1c2VkIGJ5
IHR3byBnZXRJbml0aWFsU3RhdGUoKSBvciBnZXREZWZhdWx0UHJvcHMoKSBtZXRob2RzIHJldHVy
bmluZyBvYmplY3RzIHdpdGggY2xhc2hpbmcga2V5cy4iLG4pLGVbbl09dFtuXSk7cmV0dXJuIGV9
ZnVuY3Rpb24gZChlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1
bWVudHMpLHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYobnVsbD09bilyZXR1cm4gcjtpZihu
dWxsPT1yKXJldHVybiBuO3ZhciBvPXt9O3JldHVybiBwKG8sbikscChvLHIpLG99fWZ1bmN0aW9u
IGYoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0LmFwcGx5
KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gaChlLHQpe3ZhciBuPXQuYmluZChlKTtyZXR1cm4g
bn1mdW5jdGlvbiB2KGUpe2Zvcih2YXIgdD1lLl9fcmVhY3RBdXRvQmluZFBhaXJzLG49MDtuPHQu
bGVuZ3RoO24rPTIpe3ZhciByPXRbbl0sbz10W24rMV07ZVtyXT1oKGUsbyl9fWZ1bmN0aW9uIG0o
ZSl7dmFyIHQ9cihmdW5jdGlvbihlLHIsbyl7dGhpcy5fX3JlYWN0QXV0b0JpbmRQYWlycy5sZW5n
dGgmJnYodGhpcyksdGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD1yLHRoaXMucmVmcz11LHRoaXMu
dXBkYXRlcj1vfHxuLHRoaXMuc3RhdGU9bnVsbDt2YXIgaT10aGlzLmdldEluaXRpYWxTdGF0ZT90
aGlzLmdldEluaXRpYWxTdGF0ZSgpOm51bGw7cygib2JqZWN0Ij09dHlwZW9mIGkmJiFBcnJheS5p
c0FycmF5KGkpLCIlcy5nZXRJbml0aWFsU3RhdGUoKTogbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9y
IG51bGwiLHQuZGlzcGxheU5hbWV8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpLHRoaXMuc3Rh
dGU9aX0pO3QucHJvdG90eXBlPW5ldyB3LHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5wcm90
b3R5cGUuX19yZWFjdEF1dG9CaW5kUGFpcnM9W10seS5mb3JFYWNoKGkuYmluZChudWxsLHQpKSxp
KHQsXyksaSh0LGUpLGkodCxDKSx0LmdldERlZmF1bHRQcm9wcyYmKHQuZGVmYXVsdFByb3BzPXQu
Z2V0RGVmYXVsdFByb3BzKCkpLHModC5wcm90b3R5cGUucmVuZGVyLCJjcmVhdGVDbGFzcyguLi4p
OiBDbGFzcyBzcGVjaWZpY2F0aW9uIG11c3QgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLiIp
O2Zvcih2YXIgbyBpbiBnKXQucHJvdG90eXBlW29dfHwodC5wcm90b3R5cGVbb109bnVsbCk7cmV0
dXJuIHR9dmFyIHk9W10sZz17bWl4aW5zOiJERUZJTkVfTUFOWSIsc3RhdGljczoiREVGSU5FX01B
TlkiLHByb3BUeXBlczoiREVGSU5FX01BTlkiLGNvbnRleHRUeXBlczoiREVGSU5FX01BTlkiLGNo
aWxkQ29udGV4dFR5cGVzOiJERUZJTkVfTUFOWSIsZ2V0RGVmYXVsdFByb3BzOiJERUZJTkVfTUFO
WV9NRVJHRUQiLGdldEluaXRpYWxTdGF0ZToiREVGSU5FX01BTllfTUVSR0VEIixnZXRDaGlsZENv
bnRleHQ6IkRFRklORV9NQU5ZX01FUkdFRCIscmVuZGVyOiJERUZJTkVfT05DRSIsY29tcG9uZW50
V2lsbE1vdW50OiJERUZJTkVfTUFOWSIsY29tcG9uZW50RGlkTW91bnQ6IkRFRklORV9NQU5ZIixj
b21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiJERUZJTkVfTUFOWSIsc2hvdWxkQ29tcG9uZW50VXBk
YXRlOiJERUZJTkVfT05DRSIsY29tcG9uZW50V2lsbFVwZGF0ZToiREVGSU5FX01BTlkiLGNvbXBv
bmVudERpZFVwZGF0ZToiREVGSU5FX01BTlkiLGNvbXBvbmVudFdpbGxVbm1vdW50OiJERUZJTkVf
TUFOWSIsdXBkYXRlQ29tcG9uZW50OiJPVkVSUklERV9CQVNFIn0sYj17ZGlzcGxheU5hbWU6ZnVu
Y3Rpb24oZSx0KXtlLmRpc3BsYXlOYW1lPXR9LG1peGluczpmdW5jdGlvbihlLHQpe2lmKHQpZm9y
KHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspaShlLHRbbl0pfSxjaGlsZENvbnRleHRUeXBlczpmdW5j
dGlvbihlLHQpe2UuY2hpbGRDb250ZXh0VHlwZXM9YSh7fSxlLmNoaWxkQ29udGV4dFR5cGVzLHQp
fSxjb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0KXtlLmNvbnRleHRUeXBlcz1hKHt9LGUuY29udGV4
dFR5cGVzLHQpfSxnZXREZWZhdWx0UHJvcHM6ZnVuY3Rpb24oZSx0KXtlLmdldERlZmF1bHRQcm9w
cz9lLmdldERlZmF1bHRQcm9wcz1kKGUuZ2V0RGVmYXVsdFByb3BzLHQpOmUuZ2V0RGVmYXVsdFBy
b3BzPXR9LHByb3BUeXBlczpmdW5jdGlvbihlLHQpe2UucHJvcFR5cGVzPWEoe30sZS5wcm9wVHlw
ZXMsdCl9LHN0YXRpY3M6ZnVuY3Rpb24oZSx0KXtsKGUsdCl9LGF1dG9iaW5kOmZ1bmN0aW9uKCl7
fX0sXz17Y29tcG9uZW50RGlkTW91bnQ6ZnVuY3Rpb24oKXt0aGlzLl9faXNNb3VudGVkPSEwfX0s
Qz17Y29tcG9uZW50V2lsbFVubW91bnQ6ZnVuY3Rpb24oKXt0aGlzLl9faXNNb3VudGVkPSExfX0s
RT17cmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCl7dGhpcy51cGRhdGVyLmVucXVldWVSZXBsYWNl
U3RhdGUodGhpcyxlLHQpfSxpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX19pc01v
dW50ZWR9fSx3PWZ1bmN0aW9uKCl7fTtyZXR1cm4gYSh3LnByb3RvdHlwZSxlLnByb3RvdHlwZSxF
KSxtfXZhciBpLGE9big0KSx1PW4oMjQpLHM9bigxKSxjPSJtaXhpbnMiO2k9e30sZS5leHBvcnRz
PW99LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGUucmVw
bGFjZShyLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX0pfXZhciByPS8tKC4p
L2c7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4gbyhlLnJlcGxhY2UoaSwibXMtIikpfXZhciBvPW4oOTgpLGk9L14tbXMtLztlLmV4
cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0
dXJuISghZXx8IXQpJiYoZT09PXR8fCFvKGUpJiYobyh0KT9yKGUsdC5wYXJlbnROb2RlKToiY29u
dGFpbnMiaW4gZT9lLmNvbnRhaW5zKHQpOiEhZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmISEo
MTYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSkpKX12YXIgbz1uKDEwOCk7ZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLmxl
bmd0aDtpZihBcnJheS5pc0FycmF5KGUpfHwib2JqZWN0IiE9dHlwZW9mIGUmJiJmdW5jdGlvbiIh
PXR5cGVvZiBlP2EoITEpOnZvaWQgMCwibnVtYmVyIiE9dHlwZW9mIHQ/YSghMSk6dm9pZCAwLDA9
PT10fHx0LTEgaW4gZT92b2lkIDA6YSghMSksImZ1bmN0aW9uIj09dHlwZW9mIGUuY2FsbGVlP2Eo
ITEpOnZvaWQgMCxlLmhhc093blByb3BlcnR5KXRyeXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNs
aWNlLmNhbGwoZSl9Y2F0Y2gobil7fWZvcih2YXIgcj1BcnJheSh0KSxvPTA7bzx0O28rKylyW29d
PWVbb107cmV0dXJuIHJ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4hIWUmJigib2JqZWN0Ij09dHlwZW9m
IGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmImxlbmd0aCJpbiBlJiYhKCJzZXRJbnRlcnZhbCJp
biBlKSYmIm51bWJlciIhPXR5cGVvZiBlLm5vZGVUeXBlJiYoQXJyYXkuaXNBcnJheShlKXx8ImNh
bGxlZSJpbiBlfHwiaXRlbSJpbiBlKX1mdW5jdGlvbiBpKGUpe3JldHVybiBvKGUpP0FycmF5Lmlz
QXJyYXkoZSk/ZS5zbGljZSgpOnIoZSk6W2VdfXZhciBhPW4oMSk7ZS5leHBvcnRzPWl9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLm1hdGNoKGwpO3Jl
dHVybiB0JiZ0WzFdLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPWM7Yz92b2lk
IDA6cyghMSk7dmFyIG89cihlKSxpPW8mJnUobyk7aWYoaSl7bi5pbm5lckhUTUw9aVsxXStlK2lb
Ml07Zm9yKHZhciBsPWlbMF07bC0tOyluPW4ubGFzdENoaWxkfWVsc2Ugbi5pbm5lckhUTUw9ZTt2
YXIgcD1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKTtwLmxlbmd0aCYmKHQ/dm9pZCAw
OnMoITEpLGEocCkuZm9yRWFjaCh0KSk7Zm9yKHZhciBkPUFycmF5LmZyb20obi5jaGlsZE5vZGVz
KTtuLmxhc3RDaGlsZDspbi5yZW1vdmVDaGlsZChuLmxhc3RDaGlsZCk7cmV0dXJuIGR9dmFyIGk9
big2KSxhPW4oMTAxKSx1PW4oMTAzKSxzPW4oMSksYz1pLmNhblVzZURPTT9kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTpudWxsLGw9L15ccyo8KFx3KykvO2UuZXhwb3J0cz1vfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGE/dm9pZCAwOmkoITEp
LGQuaGFzT3duUHJvcGVydHkoZSl8fChlPSIqIiksdS5oYXNPd25Qcm9wZXJ0eShlKXx8KCIqIj09
PWU/YS5pbm5lckhUTUw9IjxsaW5rIC8+IjphLmlubmVySFRNTD0iPCIrZSsiPjwvIitlKyI+Iix1
W2VdPSFhLmZpcnN0Q2hpbGQpLHVbZV0/ZFtlXTpudWxsfXZhciBvPW4oNiksaT1uKDEpLGE9by5j
YW5Vc2VET00/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik6bnVsbCx1PXt9LHM9WzEsJzxz
ZWxlY3QgbXVsdGlwbGU9InRydWUiPicsIjwvc2VsZWN0PiJdLGM9WzEsIjx0YWJsZT4iLCI8L3Rh
YmxlPiJdLGw9WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJd
LHA9WzEsJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4nLCI8L3N2Zz4i
XSxkPXsiKiI6WzEsIj88ZGl2PiIsIjwvZGl2PiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0s
Y29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90
YWJsZT4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLHBhcmFtOlsxLCI8
b2JqZWN0PiIsIjwvb2JqZWN0PiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90
YWJsZT4iXSxvcHRncm91cDpzLG9wdGlvbjpzLGNhcHRpb246Yyxjb2xncm91cDpjLHRib2R5OmMs
dGZvb3Q6Yyx0aGVhZDpjLHRkOmwsdGg6bH0sZj1bImNpcmNsZSIsImNsaXBQYXRoIiwiZGVmcyIs
ImVsbGlwc2UiLCJnIiwiaW1hZ2UiLCJsaW5lIiwibGluZWFyR3JhZGllbnQiLCJtYXNrIiwicGF0
aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxHcmFkaWVudCIsInJlY3Qi
LCJzdG9wIiwidGV4dCIsInRzcGFuIl07Zi5mb3JFYWNoKGZ1bmN0aW9uKGUpe2RbZV09cCx1W2Vd
PSEwfSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4o
ZSl7cmV0dXJuIGUuV2luZG93JiZlIGluc3RhbmNlb2YgZS5XaW5kb3c/e3g6ZS5wYWdlWE9mZnNl
dHx8ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCx5OmUucGFnZVlPZmZzZXR8
fGUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcH06e3g6ZS5zY3JvbGxMZWZ0LHk6
ZS5zY3JvbGxUb3B9fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBuKGUpe3JldHVybiBlLnJlcGxhY2UociwiLSQxIikudG9Mb3dlckNhc2UoKX12YXIgcj0v
KFtBLVpdKS9nO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7cmV0dXJuIG8oZSkucmVwbGFjZShpLCItbXMtIil9dmFyIG89bigxMDUpLGk9L15t
cy0vO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUp
e3ZhciB0PWU/ZS5vd25lckRvY3VtZW50fHxlOmRvY3VtZW50LG49dC5kZWZhdWx0Vmlld3x8d2lu
ZG93O3JldHVybiEoIWV8fCEoImZ1bmN0aW9uIj09dHlwZW9mIG4uTm9kZT9lIGluc3RhbmNlb2Yg
bi5Ob2RlOiJvYmplY3QiPT10eXBlb2YgZSYmIm51bWJlciI9PXR5cGVvZiBlLm5vZGVUeXBlJiYi
c3RyaW5nIj09dHlwZW9mIGUubm9kZU5hbWUpKX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBvKGUpJiYzPT1lLm5vZGVUeXBlfXZh
ciBvPW4oMTA3KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gbihlKXt2YXIgdD17fTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQuaGFzT3duUHJvcGVy
dHkobil8fCh0W25dPWUuY2FsbCh0aGlzLG4pKSx0W25dfX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24o
ZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e2NoaWxkQ29udGV4dFR5cGVzOiEwLGNvbnRleHRUeXBl
czohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAsZ2V0RGVmYXVsdFByb3BzOiEwLG1p
eGluczohMCxwcm9wVHlwZXM6ITAsdHlwZTohMH0scj17bmFtZTohMCxsZW5ndGg6ITAscHJvdG90
eXBlOiEwLGNhbGxlcjohMCxjYWxsZWU6ITAsYXJndW1lbnRzOiEwLGFyaXR5OiEwfSxvPU9iamVj
dC5kZWZpbmVQcm9wZXJ0eSxpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLGE9T2JqZWN0Lmdl
dE93blByb3BlcnR5U3ltYm9scyx1PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iscz1P
YmplY3QuZ2V0UHJvdG90eXBlT2YsYz1zJiZzKE9iamVjdCk7ZS5leHBvcnRzPWZ1bmN0aW9uIGUo
dCxsLHApe2lmKCJzdHJpbmciIT10eXBlb2YgbCl7aWYoYyl7dmFyIGQ9cyhsKTtkJiZkIT09YyYm
ZSh0LGQscCl9dmFyIGY9aShsKTthJiYoZj1mLmNvbmNhdChhKGwpKSk7Zm9yKHZhciBoPTA7aDxm
Lmxlbmd0aDsrK2gpe3ZhciB2PWZbaF07aWYoIShuW3ZdfHxyW3ZdfHxwJiZwW3ZdKSl7dmFyIG09
dShsLHYpO3RyeXtvKHQsdixtKX1jYXRjaCh5KXt9fX1yZXR1cm4gdH1yZXR1cm4gdH19LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZnVuY3Rpb24oZSx0LG4scixvLGksYSx1KXtp
ZighZSl7dmFyIHM7aWYodm9pZCAwPT09dClzPW5ldyBFcnJvcigiTWluaWZpZWQgZXhjZXB0aW9u
IG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIHRoZSBm
dWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4iKTtlbHNl
e3ZhciBjPVtuLHIsbyxpLGEsdV0sbD0wO3M9bmV3IEVycm9yKHQucmVwbGFjZSgvJXMvZyxmdW5j
dGlvbigpe3JldHVybiBjW2wrK119KSkscy5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIn10aHJv
dyBzLmZyYW1lc1RvUG9wPTEsc319O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rp
b24gcihlKXtyZXR1cm4gbnVsbD09ZT92b2lkIDA9PT1lP3M6dTpjJiZjIGluIE9iamVjdChlKT9p
KGUpOmEoZSl9dmFyIG89big1NCksaT1uKDExNSksYT1uKDExNiksdT0iW29iamVjdCBOdWxsXSIs
cz0iW29iamVjdCBVbmRlZmluZWRdIixjPW8/by50b1N0cmluZ1RhZzp2b2lkIDA7ZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCl7KGZ1bmN0aW9uKHQpe3ZhciBuPSJvYmplY3QiPT10eXBlb2YgdCYm
dCYmdC5PYmplY3Q9PT1PYmplY3QmJnQ7ZS5leHBvcnRzPW59KS5jYWxsKHQsZnVuY3Rpb24oKXty
ZXR1cm4gdGhpc30oKSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDExNyksbz1yKE9iamVjdC5n
ZXRQcm90b3R5cGVPZixPYmplY3QpO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rp
b24gcihlKXt2YXIgdD1hLmNhbGwoZSxzKSxuPWVbc107dHJ5e2Vbc109dm9pZCAwO3ZhciByPSEw
fWNhdGNoKG8pe312YXIgaT11LmNhbGwoZSk7cmV0dXJuIHImJih0P2Vbc109bjpkZWxldGUgZVtz
XSksaX12YXIgbz1uKDU0KSxpPU9iamVjdC5wcm90b3R5cGUsYT1pLmhhc093blByb3BlcnR5LHU9
aS50b1N0cmluZyxzPW8/by50b1N0cmluZ1RhZzp2b2lkIDA7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9u
KGUsdCl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gby5jYWxsKGUpfXZhciByPU9iamVjdC5wcm90b3R5
cGUsbz1yLnRvU3RyaW5nO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSx0
KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGUodChuKSl9fWUuZXhwb3J0cz1ufSxmdW5jdGlv
bihlLHQsbil7dmFyIHI9bigxMTMpLG89Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxm
Lk9iamVjdD09PU9iamVjdCYmc2VsZixpPXJ8fG98fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7
ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gbnVsbCE9ZSYm
Im9iamVjdCI9PXR5cGVvZiBlfWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0LG4scixvKXt9ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9big3KSxvPW4oMSksaT1uKDU3KTtlLmV4cG9ydHM9ZnVuY3Rpb24o
KXtmdW5jdGlvbiBlKGUsdCxuLHIsYSx1KXt1IT09aSYmbyghMSwiQ2FsbGluZyBQcm9wVHlwZXMg
dmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2Ag
cGFja2FnZS4gVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gUmVh
ZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcyIpfWZ1bmN0aW9uIHQo
KXtyZXR1cm4gZX1lLmlzUmVxdWlyZWQ9ZTt2YXIgbj17YXJyYXk6ZSxib29sOmUsZnVuYzplLG51
bWJlcjplLG9iamVjdDplLHN0cmluZzplLHN5bWJvbDplLGFueTplLGFycmF5T2Y6dCxlbGVtZW50
OmUsaW5zdGFuY2VPZjp0LG5vZGU6ZSxvYmplY3RPZjp0LG9uZU9mOnQsb25lT2ZUeXBlOnQsc2hh
cGU6dH07cmV0dXJuIG4uY2hlY2tQcm9wVHlwZXM9cixuLlByb3BUeXBlcz1uLG59fSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNyksbz1uKDEpLGk9bigyKSxhPW4oNTcpLHU9
bigxMjApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSl7dmFyIHQ9ZSYmKE8m
JmVbT118fGVbU10pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0fWZ1bmN0aW9uIHMo
ZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDEvZT09PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rpb24g
YyhlKXt0aGlzLm1lc3NhZ2U9ZSx0aGlzLnN0YWNrPSIifWZ1bmN0aW9uIGwoZSl7ZnVuY3Rpb24g
bihuLHIsaSx1LHMsbCxwKXtpZih1PXV8fGssbD1sfHxpLHAhPT1hKWlmKHQpbyghMSwiQ2FsbGlu
ZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBg
cHJvcC10eXBlc2AgcGFja2FnZS4gVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKWAgdG8g
Y2FsbCB0aGVtLiBSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVz
Iik7ZWxzZTtyZXR1cm4gbnVsbD09cltpXT9uP25ldyBjKG51bGw9PT1yW2ldPyJUaGUgIitzKyIg
YCIrbCsiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgIisoImluIGAiK3UrImAsIGJ1dCBpdHMgdmFs
dWUgaXMgYG51bGxgLiIpOiJUaGUgIitzKyIgYCIrbCsiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQg
aW4gIisoImAiK3UrImAsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuIikpOm51bGw6ZShy
LGksdSxzLGwpfXZhciByPW4uYmluZChudWxsLCExKTtyZXR1cm4gci5pc1JlcXVpcmVkPW4uYmlu
ZChudWxsLCEwKSxyfWZ1bmN0aW9uIHAoZSl7ZnVuY3Rpb24gdCh0LG4scixvLGksYSl7dmFyIHU9
dFtuXSxzPXcodSk7aWYocyE9PWUpe3ZhciBsPVQodSk7cmV0dXJuIG5ldyBjKCJJbnZhbGlkICIr
bysiIGAiK2krImAgb2YgdHlwZSAiKygiYCIrbCsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBl
Y3RlZCAiKSsoImAiK2UrImAuIikpfXJldHVybiBudWxsfXJldHVybiBsKHQpfWZ1bmN0aW9uIGQo
KXtyZXR1cm4gbChyLnRoYXRSZXR1cm5zTnVsbCl9ZnVuY3Rpb24gZihlKXtmdW5jdGlvbiB0KHQs
bixyLG8saSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyBjKCJQcm9wZXJ0eSBg
IitpKyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9u
IGluc2lkZSBhcnJheU9mLiIpO3ZhciB1PXRbbl07aWYoIUFycmF5LmlzQXJyYXkodSkpe3ZhciBz
PXcodSk7cmV0dXJuIG5ldyBjKCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdHlwZSAiKygiYCIr
cysiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBhbiBhcnJheS4iKSl9Zm9yKHZhciBs
PTA7bDx1Lmxlbmd0aDtsKyspe3ZhciBwPWUodSxsLHIsbyxpKyJbIitsKyJdIixhKTtpZihwIGlu
c3RhbmNlb2YgRXJyb3IpcmV0dXJuIHB9cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24g
aCgpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXt2YXIgYT10W25dO2lmKCFlKGEpKXt2YXIgdT13KGEp
O3JldHVybiBuZXcgYygiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgIisoImAiK3UrImAg
c3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3RFbGVtZW50LiIpKX1y
ZXR1cm4gbnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlvbiB2KGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxp
KXtpZighKHRbbl1pbnN0YW5jZW9mIGUpKXt2YXIgYT1lLm5hbWV8fGssdT14KHRbbl0pO3JldHVy
biBuZXcgYygiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgIisoImAiK3UrImAgc3VwcGxp
ZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgIikrKCJpbnN0YW5jZSBvZiBgIithKyJgLiIpKX1yZXR1
cm4gbnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlvbiBtKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXtm
b3IodmFyIGE9dFtuXSx1PTA7dTxlLmxlbmd0aDt1KyspaWYocyhhLGVbdV0pKXJldHVybiBudWxs
O3ZhciBsPUpTT04uc3RyaW5naWZ5KGUpO3JldHVybiBuZXcgYygiSW52YWxpZCAiK28rIiBgIitp
KyJgIG9mIHZhbHVlIGAiK2ErImAgIisoInN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIG9u
ZSBvZiAiK2wrIi4iKSl9cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/bCh0KTpyLnRoYXRSZXR1cm5z
TnVsbH1mdW5jdGlvbiB5KGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXtpZigiZnVuY3Rpb24iIT10
eXBlb2YgZSlyZXR1cm4gbmV3IGMoIlByb3BlcnR5IGAiK2krImAgb2YgY29tcG9uZW50IGAiK3Ir
ImAgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIG9iamVjdE9mLiIpO3ZhciB1
PXRbbl0scz13KHUpO2lmKCJvYmplY3QiIT09cylyZXR1cm4gbmV3IGMoIkludmFsaWQgIitvKyIg
YCIraSsiYCBvZiB0eXBlICIrKCJgIitzKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVk
IGFuIG9iamVjdC4iKSk7Zm9yKHZhciBsIGluIHUpaWYodS5oYXNPd25Qcm9wZXJ0eShsKSl7dmFy
IHA9ZSh1LGwscixvLGkrIi4iK2wsYSk7aWYocCBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBwfXJl
dHVybiBudWxsfXJldHVybiBsKHQpfWZ1bmN0aW9uIGcoZSl7ZnVuY3Rpb24gdCh0LG4scixvLGkp
e2Zvcih2YXIgdT0wO3U8ZS5sZW5ndGg7dSsrKXt2YXIgcz1lW3VdO2lmKG51bGw9PXModCxuLHIs
byxpLGEpKXJldHVybiBudWxsfXJldHVybiBuZXcgYygiSW52YWxpZCAiK28rIiBgIitpKyJgIHN1
cHBsaWVkIHRvICIrKCJgIityKyJgLiIpKX1pZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gci50
aGF0UmV0dXJuc051bGw7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBvPWVbbl07aWYo
ImZ1bmN0aW9uIiE9dHlwZW9mIG8pcmV0dXJuIGkoITEsIkludmFsaWQgYXJndW1lbnQgc3VwcGxp
ZCB0byBvbmVPZlR5cGUuIEV4cGVjdGVkIGFuIGFycmF5IG9mIGNoZWNrIGZ1bmN0aW9ucywgYnV0
IHJlY2VpdmVkICVzIGF0IGluZGV4ICVzLiIsUChvKSxuKSxyLnRoYXRSZXR1cm5zTnVsbH1yZXR1
cm4gbCh0KX1mdW5jdGlvbiBiKCl7ZnVuY3Rpb24gZShlLHQsbixyLG8pe3JldHVybiBDKGVbdF0p
P251bGw6bmV3IGMoIkludmFsaWQgIityKyIgYCIrbysiYCBzdXBwbGllZCB0byAiKygiYCIrbisi
YCwgZXhwZWN0ZWQgYSBSZWFjdE5vZGUuIikpfXJldHVybiBsKGUpfWZ1bmN0aW9uIF8oZSl7ZnVu
Y3Rpb24gdCh0LG4scixvLGkpe3ZhciB1PXRbbl0scz13KHUpO2lmKCJvYmplY3QiIT09cylyZXR1
cm4gbmV3IGMoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB0eXBlIGAiK3MrImAgIisoInN1cHBs
aWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGBvYmplY3RgLiIpKTtmb3IodmFyIGwgaW4gZSl7dmFy
IHA9ZVtsXTtpZihwKXt2YXIgZD1wKHUsbCxyLG8saSsiLiIrbCxhKTtpZihkKXJldHVybiBkfX1y
ZXR1cm4gbnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlvbiBDKHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2Fz
ZSJudW1iZXIiOmNhc2Uic3RyaW5nIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuITA7Y2FzZSJib29s
ZWFuIjpyZXR1cm4hdDtjYXNlIm9iamVjdCI6aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdC5l
dmVyeShDKTtpZihudWxsPT09dHx8ZSh0KSlyZXR1cm4hMDt2YXIgcj1uKHQpO2lmKCFyKXJldHVy
biExO3ZhciBvLGk9ci5jYWxsKHQpO2lmKHIhPT10LmVudHJpZXMpe2Zvcig7IShvPWkubmV4dCgp
KS5kb25lOylpZighQyhvLnZhbHVlKSlyZXR1cm4hMX1lbHNlIGZvcig7IShvPWkubmV4dCgpKS5k
b25lOyl7dmFyIGE9by52YWx1ZTtpZihhJiYhQyhhWzFdKSlyZXR1cm4hMX1yZXR1cm4hMDtkZWZh
dWx0OnJldHVybiExfX1mdW5jdGlvbiBFKGUsdCl7cmV0dXJuInN5bWJvbCI9PT1lfHwoIlN5bWJv
bCI9PT10WyJAQHRvU3RyaW5nVGFnIl18fCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQgaW5z
dGFuY2VvZiBTeW1ib2wpfWZ1bmN0aW9uIHcoZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuIEFycmF5
LmlzQXJyYXkoZSk/ImFycmF5IjplIGluc3RhbmNlb2YgUmVnRXhwPyJvYmplY3QiOkUodCxlKT8i
c3ltYm9sIjp0fWZ1bmN0aW9uIFQoZSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBlfHxudWxsPT09
ZSlyZXR1cm4iIitlO3ZhciB0PXcoZSk7aWYoIm9iamVjdCI9PT10KXtpZihlIGluc3RhbmNlb2Yg
RGF0ZSlyZXR1cm4iZGF0ZSI7aWYoZSBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4icmVnZXhwIn1y
ZXR1cm4gdH1mdW5jdGlvbiBQKGUpe3ZhciB0PVQoZSk7c3dpdGNoKHQpe2Nhc2UiYXJyYXkiOmNh
c2Uib2JqZWN0IjpyZXR1cm4iYW4gIit0O2Nhc2UiYm9vbGVhbiI6Y2FzZSJkYXRlIjpjYXNlInJl
Z2V4cCI6cmV0dXJuImEgIit0O2RlZmF1bHQ6cmV0dXJuIHR9fWZ1bmN0aW9uIHgoZSl7cmV0dXJu
IGUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IubmFtZT9lLmNvbnN0cnVjdG9yLm5hbWU6a312
YXIgTz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsUz0iQEBpdGVy
YXRvciIsaz0iPDxhbm9ueW1vdXM+PiIsTT17YXJyYXk6cCgiYXJyYXkiKSxib29sOnAoImJvb2xl
YW4iKSxmdW5jOnAoImZ1bmN0aW9uIiksbnVtYmVyOnAoIm51bWJlciIpLG9iamVjdDpwKCJvYmpl
Y3QiKSxzdHJpbmc6cCgic3RyaW5nIiksc3ltYm9sOnAoInN5bWJvbCIpLGFueTpkKCksYXJyYXlP
ZjpmLGVsZW1lbnQ6aCgpLGluc3RhbmNlT2Y6dixub2RlOmIoKSxvYmplY3RPZjp5LG9uZU9mOm0s
b25lT2ZUeXBlOmcsc2hhcGU6X307cmV0dXJuIGMucHJvdG90eXBlPUVycm9yLnByb3RvdHlwZSxN
LmNoZWNrUHJvcFR5cGVzPXUsTS5Qcm9wVHlwZXM9TSxNfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtlLmV4cG9ydHM9bigxMzcpfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIg
bj17UHJvcGVydGllczp7ImFyaWEtY3VycmVudCI6MCwiYXJpYS1kZXRhaWxzIjowLCJhcmlhLWRp
c2FibGVkIjowLCJhcmlhLWhpZGRlbiI6MCwiYXJpYS1pbnZhbGlkIjowLCJhcmlhLWtleXNob3J0
Y3V0cyI6MCwiYXJpYS1sYWJlbCI6MCwiYXJpYS1yb2xlZGVzY3JpcHRpb24iOjAsImFyaWEtYXV0
b2NvbXBsZXRlIjowLCJhcmlhLWNoZWNrZWQiOjAsImFyaWEtZXhwYW5kZWQiOjAsImFyaWEtaGFz
cG9wdXAiOjAsImFyaWEtbGV2ZWwiOjAsImFyaWEtbW9kYWwiOjAsImFyaWEtbXVsdGlsaW5lIjow
LCJhcmlhLW11bHRpc2VsZWN0YWJsZSI6MCwiYXJpYS1vcmllbnRhdGlvbiI6MCwiYXJpYS1wbGFj
ZWhvbGRlciI6MCwiYXJpYS1wcmVzc2VkIjowLCJhcmlhLXJlYWRvbmx5IjowLCJhcmlhLXJlcXVp
cmVkIjowLCJhcmlhLXNlbGVjdGVkIjowLCJhcmlhLXNvcnQiOjAsImFyaWEtdmFsdWVtYXgiOjAs
ImFyaWEtdmFsdWVtaW4iOjAsImFyaWEtdmFsdWVub3ciOjAsImFyaWEtdmFsdWV0ZXh0IjowLCJh
cmlhLWF0b21pYyI6MCwiYXJpYS1idXN5IjowLCJhcmlhLWxpdmUiOjAsImFyaWEtcmVsZXZhbnQi
OjAsImFyaWEtZHJvcGVmZmVjdCI6MCwiYXJpYS1ncmFiYmVkIjowLCJhcmlhLWFjdGl2ZWRlc2Nl
bmRhbnQiOjAsImFyaWEtY29sY291bnQiOjAsImFyaWEtY29saW5kZXgiOjAsImFyaWEtY29sc3Bh
biI6MCwiYXJpYS1jb250cm9scyI6MCwiYXJpYS1kZXNjcmliZWRieSI6MCwiYXJpYS1lcnJvcm1l
c3NhZ2UiOjAsImFyaWEtZmxvd3RvIjowLCJhcmlhLWxhYmVsbGVkYnkiOjAsImFyaWEtb3ducyI6
MCwiYXJpYS1wb3NpbnNldCI6MCwiYXJpYS1yb3djb3VudCI6MCwiYXJpYS1yb3dpbmRleCI6MCwi
YXJpYS1yb3dzcGFuIjowLCJhcmlhLXNldHNpemUiOjB9LERPTUF0dHJpYnV0ZU5hbWVzOnt9LERP
TVByb3BlcnR5TmFtZXM6e319O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPW4oNSksbz1uKDUyKSxpPXtmb2N1c0RPTUNvbXBvbmVudDpmdW5jdGlvbigpe28o
ci5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpKX19O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt2YXIgZT13aW5kb3cub3BlcmE7cmV0dXJuIm9i
amVjdCI9PXR5cGVvZiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS52ZXJzaW9uJiZwYXJzZUludChl
LnZlcnNpb24oKSwxMCk8PTEyfWZ1bmN0aW9uIG8oZSl7cmV0dXJuKGUuY3RybEtleXx8ZS5hbHRL
ZXl8fGUubWV0YUtleSkmJiEoZS5jdHJsS2V5JiZlLmFsdEtleSl9ZnVuY3Rpb24gaShlKXtzd2l0
Y2goZSl7Y2FzZSJ0b3BDb21wb3NpdGlvblN0YXJ0IjpyZXR1cm4geC5jb21wb3NpdGlvblN0YXJ0
O2Nhc2UidG9wQ29tcG9zaXRpb25FbmQiOnJldHVybiB4LmNvbXBvc2l0aW9uRW5kO2Nhc2UidG9w
Q29tcG9zaXRpb25VcGRhdGUiOnJldHVybiB4LmNvbXBvc2l0aW9uVXBkYXRlfX1mdW5jdGlvbiBh
KGUsdCl7cmV0dXJuInRvcEtleURvd24iPT09ZSYmdC5rZXlDb2RlPT09Yn1mdW5jdGlvbiB1KGUs
dCl7c3dpdGNoKGUpe2Nhc2UidG9wS2V5VXAiOnJldHVybiBnLmluZGV4T2YodC5rZXlDb2RlKSE9
PS0xO2Nhc2UidG9wS2V5RG93biI6cmV0dXJuIHQua2V5Q29kZSE9PWI7Y2FzZSJ0b3BLZXlQcmVz
cyI6Y2FzZSJ0b3BNb3VzZURvd24iOmNhc2UidG9wQmx1ciI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1
cm4hMX19ZnVuY3Rpb24gcyhlKXt2YXIgdD1lLmRldGFpbDtyZXR1cm4ib2JqZWN0Ij09dHlwZW9m
IHQmJiJkYXRhImluIHQ/dC5kYXRhOm51bGx9ZnVuY3Rpb24gYyhlLHQsbixyKXt2YXIgbyxjO2lm
KF8/bz1pKGUpOlM/dShlLG4pJiYobz14LmNvbXBvc2l0aW9uRW5kKTphKGUsbikmJihvPXguY29t
cG9zaXRpb25TdGFydCksIW8pcmV0dXJuIG51bGw7dyYmKFN8fG8hPT14LmNvbXBvc2l0aW9uU3Rh
cnQ/bz09PXguY29tcG9zaXRpb25FbmQmJlMmJihjPVMuZ2V0RGF0YSgpKTpTPXYuZ2V0UG9vbGVk
KHIpKTt2YXIgbD1tLmdldFBvb2xlZChvLHQsbixyKTtpZihjKWwuZGF0YT1jO2Vsc2V7dmFyIHA9
cyhuKTtudWxsIT09cCYmKGwuZGF0YT1wKX1yZXR1cm4gZi5hY2N1bXVsYXRlVHdvUGhhc2VEaXNw
YXRjaGVzKGwpLGx9ZnVuY3Rpb24gbChlLHQpe3N3aXRjaChlKXtjYXNlInRvcENvbXBvc2l0aW9u
RW5kIjpyZXR1cm4gcyh0KTtjYXNlInRvcEtleVByZXNzIjp2YXIgbj10LndoaWNoO3JldHVybiBu
IT09VD9udWxsOihPPSEwLFApO2Nhc2UidG9wVGV4dElucHV0Ijp2YXIgcj10LmRhdGE7cmV0dXJu
IHI9PT1QJiZPP251bGw6cjtkZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBwKGUsdCl7aWYo
Uyl7aWYoInRvcENvbXBvc2l0aW9uRW5kIj09PWV8fCFfJiZ1KGUsdCkpe3ZhciBuPVMuZ2V0RGF0
YSgpO3JldHVybiB2LnJlbGVhc2UoUyksUz1udWxsLG59cmV0dXJuIG51bGx9c3dpdGNoKGUpe2Nh
c2UidG9wUGFzdGUiOnJldHVybiBudWxsO2Nhc2UidG9wS2V5UHJlc3MiOnJldHVybiB0LndoaWNo
JiYhbyh0KT9TdHJpbmcuZnJvbUNoYXJDb2RlKHQud2hpY2gpOm51bGw7Y2FzZSJ0b3BDb21wb3Np
dGlvbkVuZCI6cmV0dXJuIHc/bnVsbDp0LmRhdGE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rp
b24gZChlLHQsbixyKXt2YXIgbztpZihvPUU/bChlLG4pOnAoZSxuKSwhbylyZXR1cm4gbnVsbDt2
YXIgaT15LmdldFBvb2xlZCh4LmJlZm9yZUlucHV0LHQsbixyKTtyZXR1cm4gaS5kYXRhPW8sZi5h
Y2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGkpLGl9dmFyIGY9bigyMCksaD1uKDYpLHY9bigx
MzIpLG09bigxNjkpLHk9bigxNzIpLGc9WzksMTMsMjcsMzJdLGI9MjI5LF89aC5jYW5Vc2VET00m
JiJDb21wb3NpdGlvbkV2ZW50ImluIHdpbmRvdyxDPW51bGw7aC5jYW5Vc2VET00mJiJkb2N1bWVu
dE1vZGUiaW4gZG9jdW1lbnQmJihDPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIEU9aC5jYW5V
c2VET00mJiJUZXh0RXZlbnQiaW4gd2luZG93JiYhQyYmIXIoKSx3PWguY2FuVXNlRE9NJiYoIV98
fEMmJkM+OCYmQzw9MTEpLFQ9MzIsUD1TdHJpbmcuZnJvbUNoYXJDb2RlKFQpLHg9e2JlZm9yZUlu
cHV0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25CZWZvcmVJbnB1dCIsY2Fw
dHVyZWQ6Im9uQmVmb3JlSW5wdXRDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQ29tcG9zaXRp
b25FbmQiLCJ0b3BLZXlQcmVzcyIsInRvcFRleHRJbnB1dCIsInRvcFBhc3RlIl19LGNvbXBvc2l0
aW9uRW5kOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25Db21wb3NpdGlvbkVu
ZCIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25FbmRDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9w
Qmx1ciIsInRvcENvbXBvc2l0aW9uRW5kIiwidG9wS2V5RG93biIsInRvcEtleVByZXNzIiwidG9w
S2V5VXAiLCJ0b3BNb3VzZURvd24iXX0sY29tcG9zaXRpb25TdGFydDp7cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25TdGFydCIsY2FwdHVyZWQ6Im9uQ29tcG9z
aXRpb25TdGFydENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9wQ29tcG9zaXRp
b25TdGFydCIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRvcEtleVVwIiwidG9wTW91c2VE
b3duIl19LGNvbXBvc2l0aW9uVXBkYXRlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxl
ZDoib25Db21wb3NpdGlvblVwZGF0ZSIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25VcGRhdGVDYXB0
dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENvbXBvc2l0aW9uVXBkYXRlIiwidG9w
S2V5RG93biIsInRvcEtleVByZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iXX19LE89ITEs
Uz1udWxsLGs9e2V2ZW50VHlwZXM6eCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3Jl
dHVybltjKGUsdCxuLHIpLGQoZSx0LG4scildfX07ZS5leHBvcnRzPWt9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7dmFyIHI9big1OCksbz1uKDYpLGk9KG4oOCksbig5OSksbigxNzgpKSxh
PW4oMTA2KSx1PW4oMTA5KSxzPShuKDIpLHUoZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSl9KSksYz0h
MSxsPSJjc3NGbG9hdCI7aWYoby5jYW5Vc2VET00pe3ZhciBwPWRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpLnN0eWxlO3RyeXtwLmZvbnQ9IiJ9Y2F0Y2goZCl7Yz0hMH12b2lkIDA9PT1kb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuY3NzRmxvYXQmJihsPSJzdHlsZUZsb2F0Iil9dmFy
IGY9e2NyZWF0ZU1hcmt1cEZvclN0eWxlczpmdW5jdGlvbihlLHQpe3ZhciBuPSIiO2Zvcih2YXIg
ciBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikpe3ZhciBvPTA9PT1yLmluZGV4T2YoIi0tIiks
YT1lW3JdO251bGwhPWEmJihuKz1zKHIpKyI6IixuKz1pKHIsYSx0LG8pKyI7Iil9cmV0dXJuIG58
fG51bGx9LHNldFZhbHVlRm9yU3R5bGVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1lLnN0eWxlO2Zv
cih2YXIgYSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoYSkpe3ZhciB1PTA9PT1hLmluZGV4T2Yo
Ii0tIikscz1pKGEsdFthXSxuLHUpO2lmKCJmbG9hdCIhPT1hJiYiY3NzRmxvYXQiIT09YXx8KGE9
bCksdSlvLnNldFByb3BlcnR5KGEscyk7ZWxzZSBpZihzKW9bYV09cztlbHNle3ZhciBwPWMmJnIu
c2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zW2FdO2lmKHApZm9yKHZhciBkIGluIHApb1tkXT0i
IjtlbHNlIG9bYV09IiJ9fX19O2UuZXhwb3J0cz1mfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3ZhciByPXguZ2V0UG9vbGVkKE4uY2hhbmdlLGUsdCxuKTty
ZXR1cm4gci50eXBlPSJjaGFuZ2UiLEUuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhyKSxy
fWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
O3JldHVybiJzZWxlY3QiPT09dHx8ImlucHV0Ij09PXQmJiJmaWxlIj09PWUudHlwZX1mdW5jdGlv
biBpKGUpe3ZhciB0PXIoUixlLFMoZSkpO1AuYmF0Y2hlZFVwZGF0ZXMoYSx0KX1mdW5jdGlvbiBh
KGUpe0MuZW5xdWV1ZUV2ZW50cyhlKSxDLnByb2Nlc3NFdmVudFF1ZXVlKCExKX1mdW5jdGlvbiB1
KGUsdCl7ST1lLFI9dCxJLmF0dGFjaEV2ZW50KCJvbmNoYW5nZSIsaSl9ZnVuY3Rpb24gcygpe0km
JihJLmRldGFjaEV2ZW50KCJvbmNoYW5nZSIsaSksST1udWxsLFI9bnVsbCl9ZnVuY3Rpb24gYyhl
LHQpe3ZhciBuPU8udXBkYXRlVmFsdWVJZkNoYW5nZWQoZSkscj10LnNpbXVsYXRlZD09PSEwJiZq
Ll9hbGxvd1NpbXVsYXRlZFBhc3NUaHJvdWdoO2lmKG58fHIpcmV0dXJuIGV9ZnVuY3Rpb24gbChl
LHQpe2lmKCJ0b3BDaGFuZ2UiPT09ZSlyZXR1cm4gdH1mdW5jdGlvbiBwKGUsdCxuKXsidG9wRm9j
dXMiPT09ZT8ocygpLHUodCxuKSk6InRvcEJsdXIiPT09ZSYmcygpfWZ1bmN0aW9uIGQoZSx0KXtJ
PWUsUj10LEkuYXR0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGgpfWZ1bmN0aW9uIGYoKXtJ
JiYoSS5kZXRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsaCksST1udWxsLFI9bnVsbCl9ZnVu
Y3Rpb24gaChlKXsidmFsdWUiPT09ZS5wcm9wZXJ0eU5hbWUmJmMoUixlKSYmaShlKX1mdW5jdGlv
biB2KGUsdCxuKXsidG9wRm9jdXMiPT09ZT8oZigpLGQodCxuKSk6InRvcEJsdXIiPT09ZSYmZigp
fWZ1bmN0aW9uIG0oZSx0LG4pe2lmKCJ0b3BTZWxlY3Rpb25DaGFuZ2UiPT09ZXx8InRvcEtleVVw
Ij09PWV8fCJ0b3BLZXlEb3duIj09PWUpcmV0dXJuIGMoUixuKX1mdW5jdGlvbiB5KGUpe3ZhciB0
PWUubm9kZU5hbWU7cmV0dXJuIHQmJiJpbnB1dCI9PT10LnRvTG93ZXJDYXNlKCkmJigiY2hlY2ti
b3giPT09ZS50eXBlfHwicmFkaW8iPT09ZS50eXBlKTsKLX1mdW5jdGlvbiBnKGUsdCxuKXtpZigi
dG9wQ2xpY2siPT09ZSlyZXR1cm4gYyh0LG4pfWZ1bmN0aW9uIGIoZSx0LG4pe2lmKCJ0b3BJbnB1
dCI9PT1lfHwidG9wQ2hhbmdlIj09PWUpcmV0dXJuIGModCxuKX1mdW5jdGlvbiBfKGUsdCl7aWYo
bnVsbCE9ZSl7dmFyIG49ZS5fd3JhcHBlclN0YXRlfHx0Ll93cmFwcGVyU3RhdGU7aWYobiYmbi5j
b250cm9sbGVkJiYibnVtYmVyIj09PXQudHlwZSl7dmFyIHI9IiIrdC52YWx1ZTt0LmdldEF0dHJp
YnV0ZSgidmFsdWUiKSE9PXImJnQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIscil9fX12YXIgQz1uKDE5
KSxFPW4oMjApLHc9big2KSxUPW4oNSksUD1uKDkpLHg9bigxMCksTz1uKDc0KSxTPW4oNDYpLGs9
big0NyksTT1uKDc2KSxOPXtjaGFuZ2U6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVk
OiJvbkNoYW5nZSIsY2FwdHVyZWQ6Im9uQ2hhbmdlQ2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbInRv
cEJsdXIiLCJ0b3BDaGFuZ2UiLCJ0b3BDbGljayIsInRvcEZvY3VzIiwidG9wSW5wdXQiLCJ0b3BL
ZXlEb3duIiwidG9wS2V5VXAiLCJ0b3BTZWxlY3Rpb25DaGFuZ2UiXX19LEk9bnVsbCxSPW51bGws
QT0hMTt3LmNhblVzZURPTSYmKEE9aygiY2hhbmdlIikmJighZG9jdW1lbnQuZG9jdW1lbnRNb2Rl
fHxkb2N1bWVudC5kb2N1bWVudE1vZGU+OCkpO3ZhciBEPSExO3cuY2FuVXNlRE9NJiYoRD1rKCJp
bnB1dCIpJiYoISgiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50KXx8ZG9jdW1lbnQuZG9jdW1lbnRN
b2RlPjkpKTt2YXIgaj17ZXZlbnRUeXBlczpOLF9hbGxvd1NpbXVsYXRlZFBhc3NUaHJvdWdoOiEw
LF9pc0lucHV0RXZlbnRTdXBwb3J0ZWQ6RCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLGkp
e3ZhciBhLHUscz10P1QuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0KTp3aW5kb3c7aWYobyhzKT9BP2E9
bDp1PXA6TShzKT9EP2E9YjooYT1tLHU9dik6eShzKSYmKGE9ZyksYSl7dmFyIGM9YShlLHQsbik7
aWYoYyl7dmFyIGQ9cihjLG4saSk7cmV0dXJuIGR9fXUmJnUoZSxzLHQpLCJ0b3BCbHVyIj09PWUm
Jl8odCxzKX19O2UuZXhwb3J0cz1qfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
PW4oMyksbz1uKDE0KSxpPW4oNiksYT1uKDEwMiksdT1uKDcpLHM9KG4oMSkse2Rhbmdlcm91c2x5
UmVwbGFjZU5vZGVXaXRoTWFya3VwOmZ1bmN0aW9uKGUsdCl7aWYoaS5jYW5Vc2VET00/dm9pZCAw
OnIoIjU2IiksdD92b2lkIDA6cigiNTciKSwiSFRNTCI9PT1lLm5vZGVOYW1lP3IoIjU4Iik6dm9p
ZCAwLCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIG49YSh0LHUpWzBdO2UucGFyZW50Tm9kZS5yZXBs
YWNlQ2hpbGQobixlKX1lbHNlIG8ucmVwbGFjZUNoaWxkV2l0aFRyZWUoZSx0KX19KTtlLmV4cG9y
dHM9c30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49WyJSZXNwb25kZXJFdmVudFBs
dWdpbiIsIlNpbXBsZUV2ZW50UGx1Z2luIiwiVGFwRXZlbnRQbHVnaW4iLCJFbnRlckxlYXZlRXZl
bnRQbHVnaW4iLCJDaGFuZ2VFdmVudFBsdWdpbiIsIlNlbGVjdEV2ZW50UGx1Z2luIiwiQmVmb3Jl
SW5wdXRFdmVudFBsdWdpbiJdO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPW4oMjApLG89big1KSxpPW4oMjYpLGE9e21vdXNlRW50ZXI6e3JlZ2lzdHJhdGlv
bk5hbWU6Im9uTW91c2VFbnRlciIsZGVwZW5kZW5jaWVzOlsidG9wTW91c2VPdXQiLCJ0b3BNb3Vz
ZU92ZXIiXX0sbW91c2VMZWF2ZTp7cmVnaXN0cmF0aW9uTmFtZToib25Nb3VzZUxlYXZlIixkZXBl
bmRlbmNpZXM6WyJ0b3BNb3VzZU91dCIsInRvcE1vdXNlT3ZlciJdfX0sdT17ZXZlbnRUeXBlczph
LGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4sdSl7aWYoInRvcE1vdXNlT3ZlciI9PT1lJiYo
bi5yZWxhdGVkVGFyZ2V0fHxuLmZyb21FbGVtZW50KSlyZXR1cm4gbnVsbDtpZigidG9wTW91c2VP
dXQiIT09ZSYmInRvcE1vdXNlT3ZlciIhPT1lKXJldHVybiBudWxsO3ZhciBzO2lmKHUud2luZG93
PT09dSlzPXU7ZWxzZXt2YXIgYz11Lm93bmVyRG9jdW1lbnQ7cz1jP2MuZGVmYXVsdFZpZXd8fGMu
cGFyZW50V2luZG93OndpbmRvd312YXIgbCxwO2lmKCJ0b3BNb3VzZU91dCI9PT1lKXtsPXQ7dmFy
IGQ9bi5yZWxhdGVkVGFyZ2V0fHxuLnRvRWxlbWVudDtwPWQ/by5nZXRDbG9zZXN0SW5zdGFuY2VG
cm9tTm9kZShkKTpudWxsfWVsc2UgbD1udWxsLHA9dDtpZihsPT09cClyZXR1cm4gbnVsbDt2YXIg
Zj1udWxsPT1sP3M6by5nZXROb2RlRnJvbUluc3RhbmNlKGwpLGg9bnVsbD09cD9zOm8uZ2V0Tm9k
ZUZyb21JbnN0YW5jZShwKSx2PWkuZ2V0UG9vbGVkKGEubW91c2VMZWF2ZSxsLG4sdSk7di50eXBl
PSJtb3VzZWxlYXZlIix2LnRhcmdldD1mLHYucmVsYXRlZFRhcmdldD1oO3ZhciBtPWkuZ2V0UG9v
bGVkKGEubW91c2VFbnRlcixwLG4sdSk7cmV0dXJuIG0udHlwZT0ibW91c2VlbnRlciIsbS50YXJn
ZXQ9aCxtLnJlbGF0ZWRUYXJnZXQ9ZixyLmFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlcyh2
LG0sbCxwKSxbdixtXX19O2UuZXhwb3J0cz11fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7dGhpcy5fcm9vdD1lLHRoaXMuX3N0YXJ0VGV4dD10aGlzLmdldFRleHQo
KSx0aGlzLl9mYWxsYmFja1RleHQ9bnVsbH12YXIgbz1uKDQpLGk9bigxMyksYT1uKDczKTtvKHIu
cHJvdG90eXBlLHtkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5fcm9vdD1udWxsLHRoaXMuX3N0
YXJ0VGV4dD1udWxsLHRoaXMuX2ZhbGxiYWNrVGV4dD1udWxsfSxnZXRUZXh0OmZ1bmN0aW9uKCl7
cmV0dXJuInZhbHVlImluIHRoaXMuX3Jvb3Q/dGhpcy5fcm9vdC52YWx1ZTp0aGlzLl9yb290W2Eo
KV19LGdldERhdGE6ZnVuY3Rpb24oKXtpZih0aGlzLl9mYWxsYmFja1RleHQpcmV0dXJuIHRoaXMu
X2ZhbGxiYWNrVGV4dDt2YXIgZSx0LG49dGhpcy5fc3RhcnRUZXh0LHI9bi5sZW5ndGgsbz10aGlz
LmdldFRleHQoKSxpPW8ubGVuZ3RoO2ZvcihlPTA7ZTxyJiZuW2VdPT09b1tlXTtlKyspO3ZhciBh
PXItZTtmb3IodD0xO3Q8PWEmJm5bci10XT09PW9baS10XTt0KyspO3ZhciB1PXQ+MT8xLXQ6dm9p
ZCAwO3JldHVybiB0aGlzLl9mYWxsYmFja1RleHQ9by5zbGljZShlLHUpLHRoaXMuX2ZhbGxiYWNr
VGV4dH19KSxpLmFkZFBvb2xpbmdUbyhyKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj1uKDE1KSxvPXIuaW5qZWN0aW9uLk1VU1RfVVNFX1BST1BFUlRZLGk9
ci5pbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFMVUUsYT1yLmluamVjdGlvbi5IQVNfTlVNRVJJQ19W
QUxVRSx1PXIuaW5qZWN0aW9uLkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLHM9ci5pbmplY3Rp
b24uSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSxjPXtpc0N1c3RvbUF0dHJpYnV0ZTpSZWdF
eHAucHJvdG90eXBlLnRlc3QuYmluZChuZXcgUmVnRXhwKCJeKGRhdGF8YXJpYSktWyIrci5BVFRS
SUJVVEVfTkFNRV9DSEFSKyJdKiQiKSksUHJvcGVydGllczp7YWNjZXB0OjAsYWNjZXB0Q2hhcnNl
dDowLGFjY2Vzc0tleTowLGFjdGlvbjowLGFsbG93RnVsbFNjcmVlbjppLGFsbG93VHJhbnNwYXJl
bmN5OjAsYWx0OjAsYXM6MCxhc3luYzppLGF1dG9Db21wbGV0ZTowLGF1dG9QbGF5OmksY2FwdHVy
ZTppLGNlbGxQYWRkaW5nOjAsY2VsbFNwYWNpbmc6MCxjaGFyU2V0OjAsY2hhbGxlbmdlOjAsY2hl
Y2tlZDpvfGksY2l0ZTowLGNsYXNzSUQ6MCxjbGFzc05hbWU6MCxjb2xzOnUsY29sU3BhbjowLGNv
bnRlbnQ6MCxjb250ZW50RWRpdGFibGU6MCxjb250ZXh0TWVudTowLGNvbnRyb2xzOmksY29vcmRz
OjAsY3Jvc3NPcmlnaW46MCxkYXRhOjAsZGF0ZVRpbWU6MCxkZWZhdWx0OmksZGVmZXI6aSxkaXI6
MCxkaXNhYmxlZDppLGRvd25sb2FkOnMsZHJhZ2dhYmxlOjAsZW5jVHlwZTowLGZvcm06MCxmb3Jt
QWN0aW9uOjAsZm9ybUVuY1R5cGU6MCxmb3JtTWV0aG9kOjAsZm9ybU5vVmFsaWRhdGU6aSxmb3Jt
VGFyZ2V0OjAsZnJhbWVCb3JkZXI6MCxoZWFkZXJzOjAsaGVpZ2h0OjAsaGlkZGVuOmksaGlnaDow
LGhyZWY6MCxocmVmTGFuZzowLGh0bWxGb3I6MCxodHRwRXF1aXY6MCxpY29uOjAsaWQ6MCxpbnB1
dE1vZGU6MCxpbnRlZ3JpdHk6MCxpczowLGtleVBhcmFtczowLGtleVR5cGU6MCxraW5kOjAsbGFi
ZWw6MCxsYW5nOjAsbGlzdDowLGxvb3A6aSxsb3c6MCxtYW5pZmVzdDowLG1hcmdpbkhlaWdodDow
LG1hcmdpbldpZHRoOjAsbWF4OjAsbWF4TGVuZ3RoOjAsbWVkaWE6MCxtZWRpYUdyb3VwOjAsbWV0
aG9kOjAsbWluOjAsbWluTGVuZ3RoOjAsbXVsdGlwbGU6b3xpLG11dGVkOm98aSxuYW1lOjAsbm9u
Y2U6MCxub1ZhbGlkYXRlOmksb3BlbjppLG9wdGltdW06MCxwYXR0ZXJuOjAscGxhY2Vob2xkZXI6
MCxwbGF5c0lubGluZTppLHBvc3RlcjowLHByZWxvYWQ6MCxwcm9maWxlOjAscmFkaW9Hcm91cDow
LHJlYWRPbmx5OmkscmVmZXJyZXJQb2xpY3k6MCxyZWw6MCxyZXF1aXJlZDppLHJldmVyc2VkOmks
cm9sZTowLHJvd3M6dSxyb3dTcGFuOmEsc2FuZGJveDowLHNjb3BlOjAsc2NvcGVkOmksc2Nyb2xs
aW5nOjAsc2VhbWxlc3M6aSxzZWxlY3RlZDpvfGksc2hhcGU6MCxzaXplOnUsc2l6ZXM6MCxzcGFu
OnUsc3BlbGxDaGVjazowLHNyYzowLHNyY0RvYzowLHNyY0xhbmc6MCxzcmNTZXQ6MCxzdGFydDph
LHN0ZXA6MCxzdHlsZTowLHN1bW1hcnk6MCx0YWJJbmRleDowLHRhcmdldDowLHRpdGxlOjAsdHlw
ZTowLHVzZU1hcDowLHZhbHVlOjAsd2lkdGg6MCx3bW9kZTowLHdyYXA6MCxhYm91dDowLGRhdGF0
eXBlOjAsaW5saXN0OjAscHJlZml4OjAscHJvcGVydHk6MCxyZXNvdXJjZTowLHR5cGVvZjowLHZv
Y2FiOjAsYXV0b0NhcGl0YWxpemU6MCxhdXRvQ29ycmVjdDowLGF1dG9TYXZlOjAsY29sb3I6MCxp
dGVtUHJvcDowLGl0ZW1TY29wZTppLGl0ZW1UeXBlOjAsaXRlbUlEOjAsaXRlbVJlZjowLHJlc3Vs
dHM6MCxzZWN1cml0eTowLHVuc2VsZWN0YWJsZTowfSxET01BdHRyaWJ1dGVOYW1lczp7YWNjZXB0
Q2hhcnNldDoiYWNjZXB0LWNoYXJzZXQiLGNsYXNzTmFtZToiY2xhc3MiLGh0bWxGb3I6ImZvciIs
aHR0cEVxdWl2OiJodHRwLWVxdWl2In0sRE9NUHJvcGVydHlOYW1lczp7fSxET01NdXRhdGlvbk1l
dGhvZHM6e3ZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PXQ/ZS5yZW1vdmVBdHRyaWJ1
dGUoInZhbHVlIik6dm9pZCgibnVtYmVyIiE9PWUudHlwZXx8ZS5oYXNBdHRyaWJ1dGUoInZhbHVl
Iik9PT0hMT9lLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiK3QpOmUudmFsaWRpdHkmJiFlLnZhbGlk
aXR5LmJhZElucHV0JiZlLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PWUmJmUuc2V0QXR0
cmlidXRlKCJ2YWx1ZSIsIiIrdCkpfX19O2UuZXhwb3J0cz1jfSxmdW5jdGlvbihlLHQsbil7KGZ1
bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3ZhciBvPXZvaWQgMD09
PWVbbl07bnVsbCE9dCYmbyYmKGVbbl09aSh0LCEwKSl9dmFyIG89bigxNiksaT1uKDc1KSxhPShu
KDM4KSxuKDQ4KSksdT1uKDc4KTtuKDIpOyJ1bmRlZmluZWQiIT10eXBlb2YgdCYmdC5lbnYsMTt2
YXIgcz17aW5zdGFudGlhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixvKXtpZihudWxsPT1lKXJl
dHVybiBudWxsO3ZhciBpPXt9O3JldHVybiB1KGUscixpKSxpfSx1cGRhdGVDaGlsZHJlbjpmdW5j
dGlvbihlLHQsbixyLHUscyxjLGwscCl7aWYodHx8ZSl7dmFyIGQsZjtmb3IoZCBpbiB0KWlmKHQu
aGFzT3duUHJvcGVydHkoZCkpe2Y9ZSYmZVtkXTt2YXIgaD1mJiZmLl9jdXJyZW50RWxlbWVudCx2
PXRbZF07aWYobnVsbCE9ZiYmYShoLHYpKW8ucmVjZWl2ZUNvbXBvbmVudChmLHYsdSxsKSx0W2Rd
PWY7ZWxzZXtmJiYocltkXT1vLmdldEhvc3ROb2RlKGYpLG8udW5tb3VudENvbXBvbmVudChmLCEx
KSk7dmFyIG09aSh2LCEwKTt0W2RdPW07dmFyIHk9by5tb3VudENvbXBvbmVudChtLHUscyxjLGws
cCk7bi5wdXNoKHkpfX1mb3IoZCBpbiBlKSFlLmhhc093blByb3BlcnR5KGQpfHx0JiZ0Lmhhc093
blByb3BlcnR5KGQpfHwoZj1lW2RdLHJbZF09by5nZXRIb3N0Tm9kZShmKSxvLnVubW91bnRDb21w
b25lbnQoZiwhMSkpfX0sdW5tb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGlu
IGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIHI9ZVtuXTtvLnVubW91bnRDb21wb25lbnQo
cix0KX19fTtlLmV4cG9ydHM9c30pLmNhbGwodCxuKDg3KSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9bigzNCksbz1uKDE0MiksaT17cHJvY2Vzc0NoaWxkcmVuVXBkYXRlczpv
LmRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxyZXBsYWNlTm9kZVdpdGhNYXJrdXA6
ci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cH07ZS5leHBvcnRzPWl9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt9ZnVuY3Rpb24gbyhlLHQpe31mdW5j
dGlvbiBpKGUpe3JldHVybiEoIWUucHJvdG90eXBlfHwhZS5wcm90b3R5cGUuaXNSZWFjdENvbXBv
bmVudCl9ZnVuY3Rpb24gYShlKXtyZXR1cm4hKCFlLnByb3RvdHlwZXx8IWUucHJvdG90eXBlLmlz
UHVyZVJlYWN0Q29tcG9uZW50KX12YXIgdT1uKDMpLHM9big0KSxjPW4oMTcpLGw9big0MCkscD1u
KDExKSxkPW4oNDEpLGY9bigyMSksaD0obig4KSxuKDY4KSksdj1uKDE2KSxtPW4oMjQpLHk9KG4o
MSksbigzMikpLGc9big0OCksYj0obigyKSx7SW1wdXJlQ2xhc3M6MCxQdXJlQ2xhc3M6MSxTdGF0
ZWxlc3NGdW5jdGlvbmFsOjJ9KTtyLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT1m
LmdldCh0aGlzKS5fY3VycmVudEVsZW1lbnQudHlwZSx0PWUodGhpcy5wcm9wcyx0aGlzLmNvbnRl
eHQsdGhpcy51cGRhdGVyKTtyZXR1cm4gbyhlLHQpLHR9O3ZhciBfPTEsQz17Y29uc3RydWN0OmZ1
bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMu
X2NvbXBvc2l0ZVR5cGU9bnVsbCx0aGlzLl9pbnN0YW5jZT1udWxsLHRoaXMuX2hvc3RQYXJlbnQ9
bnVsbCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVy
PW51bGwsdGhpcy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1u
dWxsLHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRl
PSExLHRoaXMuX3JlbmRlcmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1u
dWxsLHRoaXMuX2NvbnRleHQ9bnVsbCx0aGlzLl9tb3VudE9yZGVyPTAsdGhpcy5fdG9wTGV2ZWxX
cmFwcGVyPW51bGwsdGhpcy5fcGVuZGluZ0NhbGxiYWNrcz1udWxsLHRoaXMuX2NhbGxlZENvbXBv
bmVudFdpbGxVbm1vdW50PSExfSxtb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixzKXt0aGlz
Ll9jb250ZXh0PXMsdGhpcy5fbW91bnRPcmRlcj1fKyssdGhpcy5faG9zdFBhcmVudD10LHRoaXMu
X2hvc3RDb250YWluZXJJbmZvPW47dmFyIGwscD10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyxk
PXRoaXMuX3Byb2Nlc3NDb250ZXh0KHMpLGg9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSx2PWUu
Z2V0VXBkYXRlUXVldWUoKSx5PWkoaCksZz10aGlzLl9jb25zdHJ1Y3RDb21wb25lbnQoeSxwLGQs
dik7eXx8bnVsbCE9ZyYmbnVsbCE9Zy5yZW5kZXI/YShoKT90aGlzLl9jb21wb3NpdGVUeXBlPWIu
UHVyZUNsYXNzOnRoaXMuX2NvbXBvc2l0ZVR5cGU9Yi5JbXB1cmVDbGFzczoobD1nLG8oaCxsKSxu
dWxsPT09Z3x8Zz09PSExfHxjLmlzVmFsaWRFbGVtZW50KGcpP3ZvaWQgMDp1KCIxMDUiLGguZGlz
cGxheU5hbWV8fGgubmFtZXx8IkNvbXBvbmVudCIpLGc9bmV3IHIoaCksdGhpcy5fY29tcG9zaXRl
VHlwZT1iLlN0YXRlbGVzc0Z1bmN0aW9uYWwpO2cucHJvcHM9cCxnLmNvbnRleHQ9ZCxnLnJlZnM9
bSxnLnVwZGF0ZXI9dix0aGlzLl9pbnN0YW5jZT1nLGYuc2V0KGcsdGhpcyk7dmFyIEM9Zy5zdGF0
ZTt2b2lkIDA9PT1DJiYoZy5zdGF0ZT1DPW51bGwpLCJvYmplY3QiIT10eXBlb2YgQ3x8QXJyYXku
aXNBcnJheShDKT91KCIxMDYiLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25l
bnQiKTp2b2lkIDAsdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlzLl9wZW5kaW5nUmVw
bGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMTt2YXIgRTtyZXR1cm4gRT1n
LnVuc3RhYmxlX2hhbmRsZUVycm9yP3RoaXMucGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhh
bmRsaW5nKGwsdCxuLGUscyk6dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KGwsdCxuLGUscyksZy5j
b21wb25lbnREaWRNb3VudCYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGcuY29tcG9u
ZW50RGlkTW91bnQsZyksRX0sX2NvbnN0cnVjdENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXty
ZXR1cm4gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGUsdCxuLHIpfSxfY29u
c3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXRoaXMu
X2N1cnJlbnRFbGVtZW50LnR5cGU7cmV0dXJuIGU/bmV3IG8odCxuLHIpOm8odCxuLHIpfSxwZXJm
b3JtSW5pdGlhbE1vdW50V2l0aEVycm9ySGFuZGxpbmc6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIg
aSxhPXIuY2hlY2twb2ludCgpO3RyeXtpPXRoaXMucGVyZm9ybUluaXRpYWxNb3VudChlLHQsbixy
LG8pfWNhdGNoKHUpe3Iucm9sbGJhY2soYSksdGhpcy5faW5zdGFuY2UudW5zdGFibGVfaGFuZGxl
RXJyb3IodSksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUmJih0aGlzLl9pbnN0YW5jZS5zdGF0ZT10
aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKHRoaXMuX2luc3RhbmNlLnByb3BzLHRoaXMuX2luc3Rh
bmNlLmNvbnRleHQpKSxhPXIuY2hlY2twb2ludCgpLHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LnVu
bW91bnRDb21wb25lbnQoITApLHIucm9sbGJhY2soYSksaT10aGlzLnBlcmZvcm1Jbml0aWFsTW91
bnQoZSx0LG4scixvKX1yZXR1cm4gaX0scGVyZm9ybUluaXRpYWxNb3VudDpmdW5jdGlvbihlLHQs
bixyLG8pe3ZhciBpPXRoaXMuX2luc3RhbmNlLGE9MDtpLmNvbXBvbmVudFdpbGxNb3VudCYmKGku
Y29tcG9uZW50V2lsbE1vdW50KCksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUmJihpLnN0YXRlPXRo
aXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUoaS5wcm9wcyxpLmNvbnRleHQpKSksdm9pZCAwPT09ZSYm
KGU9dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCkpO3ZhciB1PWguZ2V0VHlwZShlKTt0
aGlzLl9yZW5kZXJlZE5vZGVUeXBlPXU7dmFyIHM9dGhpcy5faW5zdGFudGlhdGVSZWFjdENvbXBv
bmVudChlLHUhPT1oLkVNUFRZKTt0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1zO3ZhciBjPXYubW91
bnRDb21wb25lbnQocyxyLHQsbix0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KG8pLGEpO3JldHVy
biBjfSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiB2LmdldEhvc3ROb2RlKHRoaXMuX3Jl
bmRlcmVkQ29tcG9uZW50KX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihlKXtpZih0aGlzLl9y
ZW5kZXJlZENvbXBvbmVudCl7dmFyIHQ9dGhpcy5faW5zdGFuY2U7aWYodC5jb21wb25lbnRXaWxs
VW5tb3VudCYmIXQuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50KWlmKHQuX2NhbGxlZENvbXBv
bmVudFdpbGxVbm1vdW50PSEwLGUpe3ZhciBuPXRoaXMuZ2V0TmFtZSgpKyIuY29tcG9uZW50V2ls
bFVubW91bnQoKSI7ZC5pbnZva2VHdWFyZGVkQ2FsbGJhY2sobix0LmNvbXBvbmVudFdpbGxVbm1v
dW50LmJpbmQodCkpfWVsc2UgdC5jb21wb25lbnRXaWxsVW5tb3VudCgpO3RoaXMuX3JlbmRlcmVk
Q29tcG9uZW50JiYodi51bm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LGUp
LHRoaXMuX3JlbmRlcmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1udWxs
LHRoaXMuX2luc3RhbmNlPW51bGwpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhpcy5f
cGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITEsdGhpcy5f
cGVuZGluZ0NhbGxiYWNrcz1udWxsLHRoaXMuX3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy5fY29u
dGV4dD1udWxsLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCxm
LnJlbW92ZSh0KX19LF9tYXNrQ29udGV4dDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jdXJyZW50
RWxlbWVudC50eXBlLG49dC5jb250ZXh0VHlwZXM7aWYoIW4pcmV0dXJuIG07dmFyIHI9e307Zm9y
KHZhciBvIGluIG4pcltvXT1lW29dO3JldHVybiByfSxfcHJvY2Vzc0NvbnRleHQ6ZnVuY3Rpb24o
ZSl7dmFyIHQ9dGhpcy5fbWFza0NvbnRleHQoZSk7cmV0dXJuIHR9LF9wcm9jZXNzQ2hpbGRDb250
ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0LG49dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxyPXRoaXMu
X2luc3RhbmNlO2lmKHIuZ2V0Q2hpbGRDb250ZXh0JiYodD1yLmdldENoaWxkQ29udGV4dCgpKSx0
KXsib2JqZWN0IiE9dHlwZW9mIG4uY2hpbGRDb250ZXh0VHlwZXM/dSgiMTA3Iix0aGlzLmdldE5h
bWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwO2Zvcih2YXIgbyBpbiB0KW8g
aW4gbi5jaGlsZENvbnRleHRUeXBlcz92b2lkIDA6dSgiMTA4Iix0aGlzLmdldE5hbWUoKXx8IlJl
YWN0Q29tcG9zaXRlQ29tcG9uZW50IixvKTtyZXR1cm4gcyh7fSxlLHQpfXJldHVybiBlfSxfY2hl
Y2tDb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0LG4pe30scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlv
bihlLHQsbil7dmFyIHI9dGhpcy5fY3VycmVudEVsZW1lbnQsbz10aGlzLl9jb250ZXh0O3RoaXMu
X3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUsbyxuKX0scGVy
Zm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OmZ1bmN0aW9uKGUpe251bGwhPXRoaXMuX3BlbmRpbmdFbGVt
ZW50P3YucmVjZWl2ZUNvbXBvbmVudCh0aGlzLHRoaXMuX3BlbmRpbmdFbGVtZW50LGUsdGhpcy5f
Y29udGV4dCk6bnVsbCE9PXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlfHx0aGlzLl9wZW5kaW5nRm9y
Y2VVcGRhdGU/dGhpcy51cGRhdGVDb21wb25lbnQoZSx0aGlzLl9jdXJyZW50RWxlbWVudCx0aGlz
Ll9jdXJyZW50RWxlbWVudCx0aGlzLl9jb250ZXh0LHRoaXMuX2NvbnRleHQpOnRoaXMuX3VwZGF0
ZUJhdGNoTnVtYmVyPW51bGx9LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyLG8pe3Zh
ciBpPXRoaXMuX2luc3RhbmNlO251bGw9PWk/dSgiMTM2Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0
Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwO3ZhciBhLHM9ITE7dGhpcy5fY29udGV4dD09PW8/
YT1pLmNvbnRleHQ6KGE9dGhpcy5fcHJvY2Vzc0NvbnRleHQobykscz0hMCk7dmFyIGM9dC5wcm9w
cyxsPW4ucHJvcHM7dCE9PW4mJihzPSEwKSxzJiZpLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMm
JmkuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhsLGEpO3ZhciBwPXRoaXMuX3Byb2Nlc3NQZW5k
aW5nU3RhdGUobCxhKSxkPSEwO3RoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZXx8KGkuc2hvdWxkQ29t
cG9uZW50VXBkYXRlP2Q9aS5zaG91bGRDb21wb25lbnRVcGRhdGUobCxwLGEpOnRoaXMuX2NvbXBv
c2l0ZVR5cGU9PT1iLlB1cmVDbGFzcyYmKGQ9IXkoYyxsKXx8IXkoaS5zdGF0ZSxwKSkpLHRoaXMu
X3VwZGF0ZUJhdGNoTnVtYmVyPW51bGwsZD8odGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExLHRo
aXMuX3BlcmZvcm1Db21wb25lbnRVcGRhdGUobixsLHAsYSxlLG8pKToodGhpcy5fY3VycmVudEVs
ZW1lbnQ9bix0aGlzLl9jb250ZXh0PW8saS5wcm9wcz1sLGkuc3RhdGU9cCxpLmNvbnRleHQ9YSl9
LF9wcm9jZXNzUGVuZGluZ1N0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5faW5zdGFuY2Us
cj10aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSxvPXRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU7aWYo
dGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxs
LCFyKXJldHVybiBuLnN0YXRlO2lmKG8mJjE9PT1yLmxlbmd0aClyZXR1cm4gclswXTtmb3IodmFy
IGk9cyh7fSxvP3JbMF06bi5zdGF0ZSksYT1vPzE6MDthPHIubGVuZ3RoO2ErKyl7dmFyIHU9clth
XTtzKGksImZ1bmN0aW9uIj09dHlwZW9mIHU/dS5jYWxsKG4saSxlLHQpOnUpfXJldHVybiBpfSxf
cGVyZm9ybUNvbXBvbmVudFVwZGF0ZTpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGEsdSxzLGM9
dGhpcy5faW5zdGFuY2UsbD1Cb29sZWFuKGMuY29tcG9uZW50RGlkVXBkYXRlKTtsJiYoYT1jLnBy
b3BzLHU9Yy5zdGF0ZSxzPWMuY29udGV4dCksYy5jb21wb25lbnRXaWxsVXBkYXRlJiZjLmNvbXBv
bmVudFdpbGxVcGRhdGUodCxuLHIpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fY29udGV4
dD1pLGMucHJvcHM9dCxjLnN0YXRlPW4sYy5jb250ZXh0PXIsdGhpcy5fdXBkYXRlUmVuZGVyZWRD
b21wb25lbnQobyxpKSxsJiZvLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYy5jb21wb25l
bnREaWRVcGRhdGUuYmluZChjLGEsdSxzKSxjKX0sX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50OmZ1
bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fcmVuZGVyZWRDb21wb25lbnQscj1uLl9jdXJyZW50RWxl
bWVudCxvPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpLGk9MDtpZihnKHIsbykpdi5y
ZWNlaXZlQ29tcG9uZW50KG4sbyxlLHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQodCkpO2Vsc2V7
dmFyIGE9di5nZXRIb3N0Tm9kZShuKTt2LnVubW91bnRDb21wb25lbnQobiwhMSk7dmFyIHU9aC5n
ZXRUeXBlKG8pO3RoaXMuX3JlbmRlcmVkTm9kZVR5cGU9dTt2YXIgcz10aGlzLl9pbnN0YW50aWF0
ZVJlYWN0Q29tcG9uZW50KG8sdSE9PWguRU1QVFkpO3RoaXMuX3JlbmRlcmVkQ29tcG9uZW50PXM7
dmFyIGM9di5tb3VudENvbXBvbmVudChzLGUsdGhpcy5faG9zdFBhcmVudCx0aGlzLl9ob3N0Q29u
dGFpbmVySW5mbyx0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KHQpLGkpO3RoaXMuX3JlcGxhY2VO
b2RlV2l0aE1hcmt1cChhLGMsbil9fSxfcmVwbGFjZU5vZGVXaXRoTWFya3VwOmZ1bmN0aW9uKGUs
dCxuKXtsLnJlcGxhY2VOb2RlV2l0aE1hcmt1cChlLHQsbil9LF9yZW5kZXJWYWxpZGF0ZWRDb21w
b25lbnRXaXRob3V0T3duZXJPckNvbnRleHQ6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuX2luc3Rh
bmNlO3JldHVybiBlPXQucmVuZGVyKCl9LF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQ6ZnVuY3Rp
b24oKXt2YXIgZTtpZih0aGlzLl9jb21wb3NpdGVUeXBlIT09Yi5TdGF0ZWxlc3NGdW5jdGlvbmFs
KXtwLmN1cnJlbnQ9dGhpczt0cnl7ZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRo
b3V0T3duZXJPckNvbnRleHQoKX1maW5hbGx5e3AuY3VycmVudD1udWxsfX1lbHNlIGU9dGhpcy5f
cmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7cmV0dXJuIG51
bGw9PT1lfHxlPT09ITF8fGMuaXNWYWxpZEVsZW1lbnQoZSk/dm9pZCAwOnUoIjEwOSIsdGhpcy5n
ZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpLGV9LGF0dGFjaFJlZjpmdW5jdGlv
bihlLHQpe3ZhciBuPXRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKTtudWxsPT1uP3UoIjExMCIpOnZv
aWQgMDt2YXIgcj10LmdldFB1YmxpY0luc3RhbmNlKCksbz1uLnJlZnM9PT1tP24ucmVmcz17fTpu
LnJlZnM7b1tlXT1yfSxkZXRhY2hSZWY6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRQdWJsaWNJ
bnN0YW5jZSgpLnJlZnM7ZGVsZXRlIHRbZV19LGdldE5hbWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlz
Ll9jdXJyZW50RWxlbWVudC50eXBlLHQ9dGhpcy5faW5zdGFuY2UmJnRoaXMuX2luc3RhbmNlLmNv
bnN0cnVjdG9yO3JldHVybiBlLmRpc3BsYXlOYW1lfHx0JiZ0LmRpc3BsYXlOYW1lfHxlLm5hbWV8
fHQmJnQubmFtZXx8bnVsbH0sZ2V0UHVibGljSW5zdGFuY2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlz
Ll9pbnN0YW5jZTtyZXR1cm4gdGhpcy5fY29tcG9zaXRlVHlwZT09PWIuU3RhdGVsZXNzRnVuY3Rp
b25hbD9udWxsOmV9LF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Om51bGx9O2UuZXhwb3J0cz1D
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNSksbz1uKDE1MCksaT1uKDY3
KSxhPW4oMTYpLHU9big5KSxzPW4oMTYzKSxjPW4oMTc5KSxsPW4oNzIpLHA9bigxODYpO24oMik7
by5pbmplY3QoKTt2YXIgZD17ZmluZERPTU5vZGU6YyxyZW5kZXI6aS5yZW5kZXIsdW5tb3VudENv
bXBvbmVudEF0Tm9kZTppLnVubW91bnRDb21wb25lbnRBdE5vZGUsdmVyc2lvbjpzLHVuc3RhYmxl
X2JhdGNoZWRVcGRhdGVzOnUuYmF0Y2hlZFVwZGF0ZXMsdW5zdGFibGVfcmVuZGVyU3VidHJlZUlu
dG9Db250YWluZXI6cH07InVuZGVmaW5lZCIhPXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JB
TF9IT09LX18mJiJmdW5jdGlvbiI9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09L
X18uaW5qZWN0JiZfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0KHtDb21wb25l
bnRUcmVlOntnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTpyLmdldENsb3Nlc3RJbnN0YW5jZUZy
b21Ob2RlLGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX3JlbmRlcmVk
Q29tcG9uZW50JiYoZT1sKGUpKSxlP3IuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTpudWxsfX0sTW91
bnQ6aSxSZWNvbmNpbGVyOmF9KTtlLmV4cG9ydHM9ZH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe2lmKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50Ll9vd25lcnx8
bnVsbDtpZih0KXt2YXIgbj10LmdldE5hbWUoKTtpZihuKXJldHVybiIgVGhpcyBET00gbm9kZSB3
YXMgcmVuZGVyZWQgYnkgYCIrbisiYC4ifX1yZXR1cm4iIn1mdW5jdGlvbiBvKGUsdCl7dCYmKFFb
ZS5fdGFnXSYmKG51bGwhPXQuY2hpbGRyZW58fG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhU
TUw/bSgiMTM3IixlLl90YWcsZS5fY3VycmVudEVsZW1lbnQuX293bmVyPyIgQ2hlY2sgdGhlIHJl
bmRlciBtZXRob2Qgb2YgIitlLl9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpKyIuIjoi
Iik6dm9pZCAwKSxudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiYobnVsbCE9dC5jaGls
ZHJlbj9tKCI2MCIpOnZvaWQgMCwib2JqZWN0Ij09dHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5l
ckhUTUwmJnEgaW4gdC5kYW5nZXJvdXNseVNldElubmVySFRNTD92b2lkIDA6bSgiNjEiKSksbnVs
bCE9dC5zdHlsZSYmIm9iamVjdCIhPXR5cGVvZiB0LnN0eWxlP20oIjYyIixyKGUpKTp2b2lkIDAp
fWZ1bmN0aW9uIGkoZSx0LG4scil7aWYoIShyIGluc3RhbmNlb2YgQSkpe3ZhciBvPWUuX2hvc3RD
b250YWluZXJJbmZvLGk9by5fbm9kZSYmby5fbm9kZS5ub2RlVHlwZT09PVksdT1pP28uX25vZGU6
by5fb3duZXJEb2N1bWVudDtCKHQsdSksci5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGEs
e2luc3Q6ZSxyZWdpc3RyYXRpb25OYW1lOnQsbGlzdGVuZXI6bn0pfX1mdW5jdGlvbiBhKCl7dmFy
IGU9dGhpcztULnB1dExpc3RlbmVyKGUuaW5zdCxlLnJlZ2lzdHJhdGlvbk5hbWUsZS5saXN0ZW5l
cil9ZnVuY3Rpb24gdSgpe3ZhciBlPXRoaXM7ay5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9u
IHMoKXt2YXIgZT10aGlzO0kucG9zdE1vdW50V3JhcHBlcihlKX1mdW5jdGlvbiBjKCl7dmFyIGU9
dGhpcztNLnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVuY3Rpb24gbCgpe2oudHJhY2sodGhpcyl9ZnVu
Y3Rpb24gcCgpe3ZhciBlPXRoaXM7ZS5fcm9vdE5vZGVJRD92b2lkIDA6bSgiNjMiKTt2YXIgdD1G
KGUpO3N3aXRjaCh0P3ZvaWQgMDptKCI2NCIpLGUuX3RhZyl7Y2FzZSJpZnJhbWUiOmNhc2Uib2Jq
ZWN0IjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVt4LnRyYXBCdWJibGVkRXZlbnQoInRvcExv
YWQiLCJsb2FkIix0KV07YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRpbyI6ZS5fd3JhcHBlclN0
YXRlLmxpc3RlbmVycz1bXTtmb3IodmFyIG4gaW4geil6Lmhhc093blByb3BlcnR5KG4pJiZlLl93
cmFwcGVyU3RhdGUubGlzdGVuZXJzLnB1c2goeC50cmFwQnViYmxlZEV2ZW50KG4seltuXSx0KSk7
YnJlYWs7Y2FzZSJzb3VyY2UiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJs
ZWRFdmVudCgidG9wRXJyb3IiLCJlcnJvciIsdCldO2JyZWFrO2Nhc2UiaW1nIjplLl93cmFwcGVy
U3RhdGUubGlzdGVuZXJzPVt4LnRyYXBCdWJibGVkRXZlbnQoInRvcEVycm9yIiwiZXJyb3IiLHQp
LHgudHJhcEJ1YmJsZWRFdmVudCgidG9wTG9hZCIsImxvYWQiLHQpXTticmVhaztjYXNlImZvcm0i
OmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJsZWRFdmVudCgidG9wUmVzZXQi
LCJyZXNldCIsdCkseC50cmFwQnViYmxlZEV2ZW50KCJ0b3BTdWJtaXQiLCJzdWJtaXQiLHQpXTti
cmVhaztjYXNlImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6ZS5fd3JhcHBlclN0
YXRlLmxpc3RlbmVycz1beC50cmFwQnViYmxlZEV2ZW50KCJ0b3BJbnZhbGlkIiwiaW52YWxpZCIs
dCldfX1mdW5jdGlvbiBkKCl7Ti5wb3N0VXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBmKGUp
e0ouY2FsbChaLGUpfHwoJC50ZXN0KGUpP3ZvaWQgMDptKCI2NSIsZSksWltlXT0hMCl9ZnVuY3Rp
b24gaChlLHQpe3JldHVybiBlLmluZGV4T2YoIi0iKT49MHx8bnVsbCE9dC5pc31mdW5jdGlvbiB2
KGUpe3ZhciB0PWUudHlwZTtmKHQpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fdGFnPXQu
dG9Mb3dlckNhc2UoKSx0aGlzLl9uYW1lc3BhY2VVUkk9bnVsbCx0aGlzLl9yZW5kZXJlZENoaWxk
cmVuPW51bGwsdGhpcy5fcHJldmlvdXNTdHlsZT1udWxsLHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5
PW51bGwsdGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5fcm9v
dE5vZGVJRD0wLHRoaXMuX2RvbUlEPTAsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlz
Ll93cmFwcGVyU3RhdGU9bnVsbCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCx0aGlzLl9mbGFn
cz0wfXZhciBtPW4oMykseT1uKDQpLGc9bigxMjUpLGI9bigxMjcpLF89bigxNCksQz1uKDM1KSxF
PW4oMTUpLHc9big2MCksVD1uKDE5KSxQPW4oMzYpLHg9bigyNSksTz1uKDYxKSxTPW4oNSksaz1u
KDE0MyksTT1uKDE0NCksTj1uKDYyKSxJPW4oMTQ3KSxSPShuKDgpLG4oMTU2KSksQT1uKDE2MSks
RD0obig3KSxuKDI4KSksaj0obigxKSxuKDQ3KSxuKDMyKSxuKDc0KSksTD0obig0OSksbigyKSxP
KSxVPVQuZGVsZXRlTGlzdGVuZXIsRj1TLmdldE5vZGVGcm9tSW5zdGFuY2UsQj14Lmxpc3RlblRv
LFY9UC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcyxXPXtzdHJpbmc6ITAsbnVtYmVyOiEwfSxIPSJz
dHlsZSIscT0iX19odG1sIixLPXtjaGlsZHJlbjpudWxsLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1M
Om51bGwsc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nOm51bGx9LFk9MTEsej17dG9wQWJv
cnQ6ImFib3J0Iix0b3BDYW5QbGF5OiJjYW5wbGF5Iix0b3BDYW5QbGF5VGhyb3VnaDoiY2FucGxh
eXRocm91Z2giLHRvcER1cmF0aW9uQ2hhbmdlOiJkdXJhdGlvbmNoYW5nZSIsdG9wRW1wdGllZDoi
ZW1wdGllZCIsdG9wRW5jcnlwdGVkOiJlbmNyeXB0ZWQiLHRvcEVuZGVkOiJlbmRlZCIsdG9wRXJy
b3I6ImVycm9yIix0b3BMb2FkZWREYXRhOiJsb2FkZWRkYXRhIix0b3BMb2FkZWRNZXRhZGF0YToi
bG9hZGVkbWV0YWRhdGEiLHRvcExvYWRTdGFydDoibG9hZHN0YXJ0Iix0b3BQYXVzZToicGF1c2Ui
LHRvcFBsYXk6InBsYXkiLHRvcFBsYXlpbmc6InBsYXlpbmciLHRvcFByb2dyZXNzOiJwcm9ncmVz
cyIsdG9wUmF0ZUNoYW5nZToicmF0ZWNoYW5nZSIsdG9wU2Vla2VkOiJzZWVrZWQiLHRvcFNlZWtp
bmc6InNlZWtpbmciLHRvcFN0YWxsZWQ6InN0YWxsZWQiLHRvcFN1c3BlbmQ6InN1c3BlbmQiLHRv
cFRpbWVVcGRhdGU6InRpbWV1cGRhdGUiLHRvcFZvbHVtZUNoYW5nZToidm9sdW1lY2hhbmdlIix0
b3BXYWl0aW5nOiJ3YWl0aW5nIn0sWD17YXJlYTohMCxiYXNlOiEwLGJyOiEwLGNvbDohMCxlbWJl
ZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJh
bTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSxHPXtsaXN0aW5nOiEwLHByZTohMCx0ZXh0
YXJlYTohMH0sUT15KHttZW51aXRlbTohMH0sWCksJD0vXlthLXpBLVpdW2EtekEtWjpfXC5cLVxk
XSokLyxaPXt9LEo9e30uaGFzT3duUHJvcGVydHksZWU9MTt2LmRpc3BsYXlOYW1lPSJSZWFjdERP
TUNvbXBvbmVudCIsdi5NaXhpbj17bW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dGhp
cy5fcm9vdE5vZGVJRD1lZSsrLHRoaXMuX2RvbUlEPW4uX2lkQ291bnRlcisrLHRoaXMuX2hvc3RQ
YXJlbnQ9dCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1uO3ZhciBpPXRoaXMuX2N1cnJlbnRFbGVt
ZW50LnByb3BzO3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiYXVkaW8iOmNhc2UiZm9ybSI6Y2FzZSJp
ZnJhbWUiOmNhc2UiaW1nIjpjYXNlImxpbmsiOmNhc2Uib2JqZWN0IjpjYXNlInNvdXJjZSI6Y2Fz
ZSJ2aWRlbyI6dGhpcy5fd3JhcHBlclN0YXRlPXtsaXN0ZW5lcnM6bnVsbH0sZS5nZXRSZWFjdE1v
dW50UmVhZHkoKS5lbnF1ZXVlKHAsdGhpcyk7YnJlYWs7Y2FzZSJpbnB1dCI6ay5tb3VudFdyYXBw
ZXIodGhpcyxpLHQpLGk9ay5nZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUobCx0aGlzKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocCx0aGlz
KTticmVhaztjYXNlIm9wdGlvbiI6TS5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9TS5nZXRIb3N0
UHJvcHModGhpcyxpKTticmVhaztjYXNlInNlbGVjdCI6Ti5tb3VudFdyYXBwZXIodGhpcyxpLHQp
LGk9Ti5nZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
cCx0aGlzKTticmVhaztjYXNlInRleHRhcmVhIjpJLm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1J
LmdldEhvc3RQcm9wcyh0aGlzLGkpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShsLHRo
aXMpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwLHRoaXMpfW8odGhpcyxpKTt2YXIg
YSxkO251bGwhPXQ/KGE9dC5fbmFtZXNwYWNlVVJJLGQ9dC5fdGFnKTpuLl90YWcmJihhPW4uX25h
bWVzcGFjZVVSSSxkPW4uX3RhZyksKG51bGw9PWF8fGE9PT1DLnN2ZyYmImZvcmVpZ25vYmplY3Qi
PT09ZCkmJihhPUMuaHRtbCksYT09PUMuaHRtbCYmKCJzdmciPT09dGhpcy5fdGFnP2E9Qy5zdmc6
Im1hdGgiPT09dGhpcy5fdGFnJiYoYT1DLm1hdGhtbCkpLHRoaXMuX25hbWVzcGFjZVVSST1hO3Zh
ciBmO2lmKGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIGgsdj1uLl9vd25lckRvY3VtZW50O2lmKGE9
PT1DLmh0bWwpaWYoInNjcmlwdCI9PT10aGlzLl90YWcpe3ZhciBtPXYuY3JlYXRlRWxlbWVudCgi
ZGl2IikseT10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO20uaW5uZXJIVE1MPSI8Iit5KyI+PC8i
K3krIj4iLGg9bS5yZW1vdmVDaGlsZChtLmZpcnN0Q2hpbGQpfWVsc2UgaD1pLmlzP3YuY3JlYXRl
RWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLGkuaXMpOnYuY3JlYXRlRWxlbWVudCh0
aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtlbHNlIGg9di5jcmVhdGVFbGVtZW50TlMoYSx0aGlz
Ll9jdXJyZW50RWxlbWVudC50eXBlKTtTLnByZWNhY2hlTm9kZSh0aGlzLGgpLHRoaXMuX2ZsYWdz
fD1MLmhhc0NhY2hlZENoaWxkTm9kZXMsdGhpcy5faG9zdFBhcmVudHx8dy5zZXRBdHRyaWJ1dGVG
b3JSb290KGgpLHRoaXMuX3VwZGF0ZURPTVByb3BlcnRpZXMobnVsbCxpLGUpO3ZhciBiPV8oaCk7
dGhpcy5fY3JlYXRlSW5pdGlhbENoaWxkcmVuKGUsaSxyLGIpLGY9Yn1lbHNle3ZhciBFPXRoaXMu
X2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnMoZSxpKSxUPXRoaXMuX2NyZWF0ZUNv
bnRlbnRNYXJrdXAoZSxpLHIpO2Y9IVQmJlhbdGhpcy5fdGFnXT9FKyIvPiI6RSsiPiIrVCsiPC8i
K3RoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUrIj4ifXN3aXRjaCh0aGlzLl90YWcpe2Nhc2UiaW5w
dXQiOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh1LHRoaXMpLGkuYXV0b0ZvY3VzJiZl
LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1c0RPTUNvbXBvbmVudCx0aGlzKTti
cmVhaztjYXNlInRleHRhcmVhIjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocyx0aGlz
KSxpLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGcuZm9jdXNET01D
b21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJzZWxlY3QiOmkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0
TW91bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1c0RPTUNvbXBvbmVudCx0aGlzKTticmVhaztjYXNl
ImJ1dHRvbiI6aS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmZv
Y3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2Uib3B0aW9uIjplLmdldFJlYWN0TW91bnRS
ZWFkeSgpLmVucXVldWUoYyx0aGlzKX1yZXR1cm4gZn0sX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQ
dXRMaXN0ZW5lcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iPCIrdGhpcy5fY3VycmVudEVsZW1lbnQu
dHlwZTtmb3IodmFyIHIgaW4gdClpZih0Lmhhc093blByb3BlcnR5KHIpKXt2YXIgbz10W3JdO2lm
KG51bGwhPW8paWYoVi5oYXNPd25Qcm9wZXJ0eShyKSlvJiZpKHRoaXMscixvLGUpO2Vsc2V7cj09
PUgmJihvJiYobz10aGlzLl9wcmV2aW91c1N0eWxlQ29weT15KHt9LHQuc3R5bGUpKSxvPWIuY3Jl
YXRlTWFya3VwRm9yU3R5bGVzKG8sdGhpcykpO3ZhciBhPW51bGw7bnVsbCE9dGhpcy5fdGFnJiZo
KHRoaXMuX3RhZyx0KT9LLmhhc093blByb3BlcnR5KHIpfHwoYT13LmNyZWF0ZU1hcmt1cEZvckN1
c3RvbUF0dHJpYnV0ZShyLG8pKTphPXcuY3JlYXRlTWFya3VwRm9yUHJvcGVydHkocixvKSxhJiYo
bis9IiAiK2EpfX1yZXR1cm4gZS5yZW5kZXJUb1N0YXRpY01hcmt1cD9uOih0aGlzLl9ob3N0UGFy
ZW50fHwobis9IiAiK3cuY3JlYXRlTWFya3VwRm9yUm9vdCgpKSxuKz0iICIrdy5jcmVhdGVNYXJr
dXBGb3JJRCh0aGlzLl9kb21JRCkpfSxfY3JlYXRlQ29udGVudE1hcmt1cDpmdW5jdGlvbihlLHQs
bil7dmFyIHI9IiIsbz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9
by5fX2h0bWwmJihyPW8uX19odG1sKTtlbHNle3ZhciBpPVdbdHlwZW9mIHQuY2hpbGRyZW5dP3Qu
Y2hpbGRyZW46bnVsbCxhPW51bGwhPWk/bnVsbDp0LmNoaWxkcmVuO2lmKG51bGwhPWkpcj1EKGkp
O2Vsc2UgaWYobnVsbCE9YSl7dmFyIHU9dGhpcy5tb3VudENoaWxkcmVuKGEsZSxuKTtyPXUuam9p
bigiIil9fXJldHVybiBHW3RoaXMuX3RhZ10mJiJcbiI9PT1yLmNoYXJBdCgwKT8iXG4iK3I6cn0s
X2NyZWF0ZUluaXRpYWxDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz10LmRhbmdlcm91
c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9by5fX2h0bWwmJl8ucXVldWVIVE1MKHIs
by5fX2h0bWwpO2Vsc2V7dmFyIGk9V1t0eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxs
LGE9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW47aWYobnVsbCE9aSkiIiE9PWkmJl8ucXVldWVUZXh0
KHIsaSk7ZWxzZSBpZihudWxsIT1hKWZvcih2YXIgdT10aGlzLm1vdW50Q2hpbGRyZW4oYSxlLG4p
LHM9MDtzPHUubGVuZ3RoO3MrKylfLnF1ZXVlQ2hpbGQocix1W3NdKX19LHJlY2VpdmVDb21wb25l
bnQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX2N1cnJlbnRFbGVtZW50O3RoaXMuX2N1cnJl
bnRFbGVtZW50PWUsdGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUsbil9LHVwZGF0ZUNvbXBvbmVu
dDpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT10LnByb3BzLGE9dGhpcy5fY3VycmVudEVsZW1lbnQu
cHJvcHM7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6aT1rLmdldEhvc3RQcm9wcyh0aGlz
LGkpLGE9ay5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlIm9wdGlvbiI6aT1NLmdldEhv
c3RQcm9wcyh0aGlzLGkpLGE9TS5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlInNlbGVj
dCI6aT1OLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9Ti5nZXRIb3N0UHJvcHModGhpcyxhKTticmVh
aztjYXNlInRleHRhcmVhIjppPUkuZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1JLmdldEhvc3RQcm9w
cyh0aGlzLGEpfXN3aXRjaChvKHRoaXMsYSksdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhpLGEs
ZSksdGhpcy5fdXBkYXRlRE9NQ2hpbGRyZW4oaSxhLGUsciksdGhpcy5fdGFnKXtjYXNlImlucHV0
IjprLnVwZGF0ZVdyYXBwZXIodGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6SS51cGRhdGVXcmFw
cGVyKHRoaXMpO2JyZWFrO2Nhc2Uic2VsZWN0IjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVl
dWUoZCx0aGlzKX19LF91cGRhdGVET01Qcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixv
LGE7Zm9yKHIgaW4gZSlpZighdC5oYXNPd25Qcm9wZXJ0eShyKSYmZS5oYXNPd25Qcm9wZXJ0eShy
KSYmbnVsbCE9ZVtyXSlpZihyPT09SCl7dmFyIHU9dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk7Zm9y
KG8gaW4gdSl1Lmhhc093blByb3BlcnR5KG8pJiYoYT1hfHx7fSxhW29dPSIiKTt0aGlzLl9wcmV2
aW91c1N0eWxlQ29weT1udWxsfWVsc2UgVi5oYXNPd25Qcm9wZXJ0eShyKT9lW3JdJiZVKHRoaXMs
cik6aCh0aGlzLl90YWcsZSk/Sy5oYXNPd25Qcm9wZXJ0eShyKXx8dy5kZWxldGVWYWx1ZUZvckF0
dHJpYnV0ZShGKHRoaXMpLHIpOihFLnByb3BlcnRpZXNbcl18fEUuaXNDdXN0b21BdHRyaWJ1dGUo
cikpJiZ3LmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoRih0aGlzKSxyKTtmb3IociBpbiB0KXt2YXIg
cz10W3JdLGM9cj09PUg/dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk6bnVsbCE9ZT9lW3JdOnZvaWQg
MDtpZih0Lmhhc093blByb3BlcnR5KHIpJiZzIT09YyYmKG51bGwhPXN8fG51bGwhPWMpKWlmKHI9
PT1IKWlmKHM/cz10aGlzLl9wcmV2aW91c1N0eWxlQ29weT15KHt9LHMpOnRoaXMuX3ByZXZpb3Vz
U3R5bGVDb3B5PW51bGwsYyl7Zm9yKG8gaW4gYykhYy5oYXNPd25Qcm9wZXJ0eShvKXx8cyYmcy5o
YXNPd25Qcm9wZXJ0eShvKXx8KGE9YXx8e30sYVtvXT0iIik7Zm9yKG8gaW4gcylzLmhhc093blBy
b3BlcnR5KG8pJiZjW29dIT09c1tvXSYmKGE9YXx8e30sYVtvXT1zW29dKX1lbHNlIGE9cztlbHNl
IGlmKFYuaGFzT3duUHJvcGVydHkocikpcz9pKHRoaXMscixzLG4pOmMmJlUodGhpcyxyKTtlbHNl
IGlmKGgodGhpcy5fdGFnLHQpKUsuaGFzT3duUHJvcGVydHkocil8fHcuc2V0VmFsdWVGb3JBdHRy
aWJ1dGUoRih0aGlzKSxyLHMpO2Vsc2UgaWYoRS5wcm9wZXJ0aWVzW3JdfHxFLmlzQ3VzdG9tQXR0
cmlidXRlKHIpKXt2YXIgbD1GKHRoaXMpO251bGwhPXM/dy5zZXRWYWx1ZUZvclByb3BlcnR5KGws
cixzKTp3LmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobCxyKX19YSYmYi5zZXRWYWx1ZUZvclN0eWxl
cyhGKHRoaXMpLGEsdGhpcyl9LF91cGRhdGVET01DaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyKXt2
YXIgbz1XW3R5cGVvZiBlLmNoaWxkcmVuXT9lLmNoaWxkcmVuOm51bGwsaT1XW3R5cGVvZiB0LmNo
aWxkcmVuXT90LmNoaWxkcmVuOm51bGwsYT1lLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZlLmRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCx1PXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwm
JnQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sLHM9bnVsbCE9bz9udWxsOmUuY2hpbGRy
ZW4sYz1udWxsIT1pP251bGw6dC5jaGlsZHJlbixsPW51bGwhPW98fG51bGwhPWEscD1udWxsIT1p
fHxudWxsIT11O251bGwhPXMmJm51bGw9PWM/dGhpcy51cGRhdGVDaGlsZHJlbihudWxsLG4scik6
bCYmIXAmJnRoaXMudXBkYXRlVGV4dENvbnRlbnQoIiIpLG51bGwhPWk/byE9PWkmJnRoaXMudXBk
YXRlVGV4dENvbnRlbnQoIiIraSk6bnVsbCE9dT9hIT09dSYmdGhpcy51cGRhdGVNYXJrdXAoIiIr
dSk6bnVsbCE9YyYmdGhpcy51cGRhdGVDaGlsZHJlbihjLG4scil9LGdldEhvc3ROb2RlOmZ1bmN0
aW9uKCl7cmV0dXJuIEYodGhpcyl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7c3dpdGNo
KHRoaXMuX3RhZyl7Y2FzZSJhdWRpbyI6Y2FzZSJmb3JtIjpjYXNlImlmcmFtZSI6Y2FzZSJpbWci
OmNhc2UibGluayI6Y2FzZSJvYmplY3QiOmNhc2Uic291cmNlIjpjYXNlInZpZGVvIjp2YXIgdD10
aGlzLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzO2lmKHQpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtu
KyspdFtuXS5yZW1vdmUoKTticmVhaztjYXNlImlucHV0IjpjYXNlInRleHRhcmVhIjpqLnN0b3BU
cmFja2luZyh0aGlzKTticmVhaztjYXNlImh0bWwiOmNhc2UiaGVhZCI6Y2FzZSJib2R5IjptKCI2
NiIsdGhpcy5fdGFnKX10aGlzLnVubW91bnRDaGlsZHJlbihlKSxTLnVuY2FjaGVOb2RlKHRoaXMp
LFQuZGVsZXRlQWxsTGlzdGVuZXJzKHRoaXMpLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl9kb21J
RD0wLHRoaXMuX3dyYXBwZXJTdGF0ZT1udWxsfSxnZXRQdWJsaWNJbnN0YW5jZTpmdW5jdGlvbigp
e3JldHVybiBGKHRoaXMpfX0seSh2LnByb3RvdHlwZSx2Lk1peGluLFIuTWl4aW4pLGUuZXhwb3J0
cz12fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj17
X3RvcExldmVsV3JhcHBlcjplLF9pZENvdW50ZXI6MSxfb3duZXJEb2N1bWVudDp0P3Qubm9kZVR5
cGU9PT1vP3Q6dC5vd25lckRvY3VtZW50Om51bGwsX25vZGU6dCxfdGFnOnQ/dC5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpOm51bGwsX25hbWVzcGFjZVVSSTp0P3QubmFtZXNwYWNlVVJJOm51bGx9O3Jl
dHVybiBufXZhciBvPShuKDQ5KSw5KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj1uKDQpLG89bigxNCksaT1uKDUpLGE9ZnVuY3Rpb24oZSl7dGhpcy5fY3Vy
cmVudEVsZW1lbnQ9bnVsbCx0aGlzLl9ob3N0Tm9kZT1udWxsLHRoaXMuX2hvc3RQYXJlbnQ9bnVs
bCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX2RvbUlEPTB9O3IoYS5wcm90b3R5
cGUse21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBhPW4uX2lkQ291bnRlcisr
O3RoaXMuX2RvbUlEPWEsdGhpcy5faG9zdFBhcmVudD10LHRoaXMuX2hvc3RDb250YWluZXJJbmZv
PW47dmFyIHU9IiByZWFjdC1lbXB0eTogIit0aGlzLl9kb21JRCsiICI7aWYoZS51c2VDcmVhdGVF
bGVtZW50KXt2YXIgcz1uLl9vd25lckRvY3VtZW50LGM9cy5jcmVhdGVDb21tZW50KHUpO3JldHVy
biBpLnByZWNhY2hlTm9kZSh0aGlzLGMpLG8oYyl9cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJr
dXA/IiI6IjwhLS0iK3UrIi0tPiJ9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oKXt9LGdldEhv
c3ROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKX0sdW5t
b3VudENvbXBvbmVudDpmdW5jdGlvbigpe2kudW5jYWNoZU5vZGUodGhpcyl9fSksZS5leHBvcnRz
PWF9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXt1c2VDcmVhdGVFbGVtZW50OiEw
LHVzZUZpYmVyOiExfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcj1uKDM0KSxvPW4oNSksaT17ZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOmZ1
bmN0aW9uKGUsdCl7dmFyIG49by5nZXROb2RlRnJvbUluc3RhbmNlKGUpO3IucHJvY2Vzc1VwZGF0
ZXMobix0KX19O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoKXt0aGlzLl9yb290Tm9kZUlEJiZkLnVwZGF0ZVdyYXBwZXIodGhpcyl9ZnVuY3Rpb24g
byhlKXt2YXIgdD0iY2hlY2tib3giPT09ZS50eXBlfHwicmFkaW8iPT09ZS50eXBlO3JldHVybiB0
P251bGwhPWUuY2hlY2tlZDpudWxsIT1lLnZhbHVlfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9dGhpcy5f
Y3VycmVudEVsZW1lbnQucHJvcHMsbj1jLmV4ZWN1dGVPbkNoYW5nZSh0LGUpO3AuYXNhcChyLHRo
aXMpO3ZhciBvPXQubmFtZTtpZigicmFkaW8iPT09dC50eXBlJiZudWxsIT1vKXtmb3IodmFyIGk9
bC5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpLHU9aTt1LnBhcmVudE5vZGU7KXU9dS5wYXJlbnRO
b2RlO2Zvcih2YXIgcz11LnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0W25hbWU9IitKU09OLnN0cmlu
Z2lmeSgiIitvKSsnXVt0eXBlPSJyYWRpbyJdJyksZD0wO2Q8cy5sZW5ndGg7ZCsrKXt2YXIgZj1z
W2RdO2lmKGYhPT1pJiZmLmZvcm09PT1pLmZvcm0pe3ZhciBoPWwuZ2V0SW5zdGFuY2VGcm9tTm9k
ZShmKTtoP3ZvaWQgMDphKCI5MCIpLHAuYXNhcChyLGgpfX19cmV0dXJuIG59dmFyIGE9bigzKSx1
PW4oNCkscz1uKDYwKSxjPW4oMzkpLGw9big1KSxwPW4oOSksZD0obigxKSxuKDIpLHtnZXRIb3N0
UHJvcHM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1jLmdldFZhbHVlKHQpLHI9Yy5nZXRDaGVja2VkKHQp
LG89dSh7dHlwZTp2b2lkIDAsc3RlcDp2b2lkIDAsbWluOnZvaWQgMCxtYXg6dm9pZCAwfSx0LHtk
ZWZhdWx0Q2hlY2tlZDp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCx2YWx1ZTpudWxsIT1uP246
ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxjaGVja2VkOm51bGwhPXI/cjplLl93cmFwcGVy
U3RhdGUuaW5pdGlhbENoZWNrZWQsb25DaGFuZ2U6ZS5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlfSk7
cmV0dXJuIG99LG1vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXQuZGVmYXVsdFZhbHVl
O2UuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNrZWQ6bnVsbCE9dC5jaGVja2VkP3QuY2hlY2tl
ZDp0LmRlZmF1bHRDaGVja2VkLGluaXRpYWxWYWx1ZTpudWxsIT10LnZhbHVlP3QudmFsdWU6bixs
aXN0ZW5lcnM6bnVsbCxvbkNoYW5nZTppLmJpbmQoZSksY29udHJvbGxlZDpvKHQpfX0sdXBkYXRl
V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXQuY2hl
Y2tlZDtudWxsIT1uJiZzLnNldFZhbHVlRm9yUHJvcGVydHkobC5nZXROb2RlRnJvbUluc3RhbmNl
KGUpLCJjaGVja2VkIixufHwhMSk7dmFyIHI9bC5nZXROb2RlRnJvbUluc3RhbmNlKGUpLG89Yy5n
ZXRWYWx1ZSh0KTtpZihudWxsIT1vKWlmKDA9PT1vJiYiIj09PXIudmFsdWUpci52YWx1ZT0iMCI7
ZWxzZSBpZigibnVtYmVyIj09PXQudHlwZSl7dmFyIGk9cGFyc2VGbG9hdChyLnZhbHVlLDEwKXx8
MDsobyE9aXx8bz09aSYmci52YWx1ZSE9bykmJihyLnZhbHVlPSIiK28pfWVsc2Ugci52YWx1ZSE9
PSIiK28mJihyLnZhbHVlPSIiK28pO2Vsc2UgbnVsbD09dC52YWx1ZSYmbnVsbCE9dC5kZWZhdWx0
VmFsdWUmJnIuZGVmYXVsdFZhbHVlIT09IiIrdC5kZWZhdWx0VmFsdWUmJihyLmRlZmF1bHRWYWx1
ZT0iIit0LmRlZmF1bHRWYWx1ZSksbnVsbD09dC5jaGVja2VkJiZudWxsIT10LmRlZmF1bHRDaGVj
a2VkJiYoci5kZWZhdWx0Q2hlY2tlZD0hIXQuZGVmYXVsdENoZWNrZWQpfSxwb3N0TW91bnRXcmFw
cGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49bC5nZXROb2Rl
RnJvbUluc3RhbmNlKGUpO3N3aXRjaCh0LnR5cGUpe2Nhc2Uic3VibWl0IjpjYXNlInJlc2V0Ijpi
cmVhaztjYXNlImNvbG9yIjpjYXNlImRhdGUiOmNhc2UiZGF0ZXRpbWUiOmNhc2UiZGF0ZXRpbWUt
bG9jYWwiOmNhc2UibW9udGgiOmNhc2UidGltZSI6Y2FzZSJ3ZWVrIjpuLnZhbHVlPSIiLG4udmFs
dWU9bi5kZWZhdWx0VmFsdWU7YnJlYWs7ZGVmYXVsdDpuLnZhbHVlPW4udmFsdWV9dmFyIHI9bi5u
YW1lOyIiIT09ciYmKG4ubmFtZT0iIiksbi5kZWZhdWx0Q2hlY2tlZD0hbi5kZWZhdWx0Q2hlY2tl
ZCxuLmRlZmF1bHRDaGVja2VkPSFuLmRlZmF1bHRDaGVja2VkLCIiIT09ciYmKG4ubmFtZT1yKX19
KTtlLmV4cG9ydHM9ZH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3ZhciB0PSIiO3JldHVybiBpLkNoaWxkcmVuLmZvckVhY2goZSxmdW5jdGlvbihlKXtudWxsIT1l
JiYoInN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/dCs9ZTpzfHwocz0hMCkp
fSksdH12YXIgbz1uKDQpLGk9bigxNyksYT1uKDUpLHU9big2Mikscz0obigyKSwhMSksYz17bW91
bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1udWxsO2lmKG51bGwhPW4pe3ZhciBpPW47
Im9wdGdyb3VwIj09PWkuX3RhZyYmKGk9aS5faG9zdFBhcmVudCksbnVsbCE9aSYmInNlbGVjdCI9
PT1pLl90YWcmJihvPXUuZ2V0U2VsZWN0VmFsdWVDb250ZXh0KGkpKX12YXIgYT1udWxsO2lmKG51
bGwhPW8pe3ZhciBzO2lmKHM9bnVsbCE9dC52YWx1ZT90LnZhbHVlKyIiOnIodC5jaGlsZHJlbiks
YT0hMSxBcnJheS5pc0FycmF5KG8pKXtmb3IodmFyIGM9MDtjPG8ubGVuZ3RoO2MrKylpZigiIitv
W2NdPT09cyl7YT0hMDticmVha319ZWxzZSBhPSIiK289PT1zfWUuX3dyYXBwZXJTdGF0ZT17c2Vs
ZWN0ZWQ6YX19LHBvc3RNb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVs
ZW1lbnQucHJvcHM7aWYobnVsbCE9dC52YWx1ZSl7dmFyIG49YS5nZXROb2RlRnJvbUluc3RhbmNl
KGUpO24uc2V0QXR0cmlidXRlKCJ2YWx1ZSIsdC52YWx1ZSl9fSxnZXRIb3N0UHJvcHM6ZnVuY3Rp
b24oZSx0KXt2YXIgbj1vKHtzZWxlY3RlZDp2b2lkIDAsY2hpbGRyZW46dm9pZCAwfSx0KTtudWxs
IT1lLl93cmFwcGVyU3RhdGUuc2VsZWN0ZWQmJihuLnNlbGVjdGVkPWUuX3dyYXBwZXJTdGF0ZS5z
ZWxlY3RlZCk7dmFyIGk9cih0LmNoaWxkcmVuKTtyZXR1cm4gaSYmKG4uY2hpbGRyZW49aSksbn19
O2UuZXhwb3J0cz1jfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
LG4scil7cmV0dXJuIGU9PT1uJiZ0PT09cn1mdW5jdGlvbiBvKGUpe3ZhciB0PWRvY3VtZW50LnNl
bGVjdGlvbixuPXQuY3JlYXRlUmFuZ2UoKSxyPW4udGV4dC5sZW5ndGgsbz1uLmR1cGxpY2F0ZSgp
O28ubW92ZVRvRWxlbWVudFRleHQoZSksby5zZXRFbmRQb2ludCgiRW5kVG9TdGFydCIsbik7dmFy
IGk9by50ZXh0Lmxlbmd0aCxhPWkrcjtyZXR1cm57c3RhcnQ6aSxlbmQ6YX19ZnVuY3Rpb24gaShl
KXt2YXIgdD13aW5kb3cuZ2V0U2VsZWN0aW9uJiZ3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYoIXR8
fDA9PT10LnJhbmdlQ291bnQpcmV0dXJuIG51bGw7dmFyIG49dC5hbmNob3JOb2RlLG89dC5hbmNo
b3JPZmZzZXQsaT10LmZvY3VzTm9kZSxhPXQuZm9jdXNPZmZzZXQsdT10LmdldFJhbmdlQXQoMCk7
dHJ5e3Uuc3RhcnRDb250YWluZXIubm9kZVR5cGUsdS5lbmRDb250YWluZXIubm9kZVR5cGV9Y2F0
Y2gocyl7cmV0dXJuIG51bGx9dmFyIGM9cih0LmFuY2hvck5vZGUsdC5hbmNob3JPZmZzZXQsdC5m
b2N1c05vZGUsdC5mb2N1c09mZnNldCksbD1jPzA6dS50b1N0cmluZygpLmxlbmd0aCxwPXUuY2xv
bmVSYW5nZSgpO3Auc2VsZWN0Tm9kZUNvbnRlbnRzKGUpLHAuc2V0RW5kKHUuc3RhcnRDb250YWlu
ZXIsdS5zdGFydE9mZnNldCk7dmFyIGQ9cihwLnN0YXJ0Q29udGFpbmVyLHAuc3RhcnRPZmZzZXQs
cC5lbmRDb250YWluZXIscC5lbmRPZmZzZXQpLGY9ZD8wOnAudG9TdHJpbmcoKS5sZW5ndGgsaD1m
K2wsdj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3Yuc2V0U3RhcnQobixvKSx2LnNldEVuZChpLGEp
O3ZhciBtPXYuY29sbGFwc2VkO3JldHVybntzdGFydDptP2g6ZixlbmQ6bT9mOmh9fWZ1bmN0aW9u
IGEoZSx0KXt2YXIgbixyLG89ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGlj
YXRlKCk7dm9pZCAwPT09dC5lbmQ/KG49dC5zdGFydCxyPW4pOnQuc3RhcnQ+dC5lbmQ/KG49dC5l
bmQscj10LnN0YXJ0KToobj10LnN0YXJ0LHI9dC5lbmQpLG8ubW92ZVRvRWxlbWVudFRleHQoZSks
by5tb3ZlU3RhcnQoImNoYXJhY3RlciIsbiksby5zZXRFbmRQb2ludCgiRW5kVG9TdGFydCIsbyks
by5tb3ZlRW5kKCJjaGFyYWN0ZXIiLHItbiksby5zZWxlY3QoKX1mdW5jdGlvbiB1KGUsdCl7aWYo
d2luZG93LmdldFNlbGVjdGlvbil7dmFyIG49d2luZG93LmdldFNlbGVjdGlvbigpLHI9ZVtsKCld
Lmxlbmd0aCxvPU1hdGgubWluKHQuc3RhcnQsciksaT12b2lkIDA9PT10LmVuZD9vOk1hdGgubWlu
KHQuZW5kLHIpO2lmKCFuLmV4dGVuZCYmbz5pKXt2YXIgYT1pO2k9byxvPWF9dmFyIHU9YyhlLG8p
LHM9YyhlLGkpO2lmKHUmJnMpe3ZhciBwPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cC5zZXRTdGFy
dCh1Lm5vZGUsdS5vZmZzZXQpLG4ucmVtb3ZlQWxsUmFuZ2VzKCksbz5pPyhuLmFkZFJhbmdlKHAp
LG4uZXh0ZW5kKHMubm9kZSxzLm9mZnNldCkpOihwLnNldEVuZChzLm5vZGUscy5vZmZzZXQpLG4u
YWRkUmFuZ2UocCkpfX19dmFyIHM9big2KSxjPW4oMTgzKSxsPW4oNzMpLHA9cy5jYW5Vc2VET00m
JiJzZWxlY3Rpb24iaW4gZG9jdW1lbnQmJiEoImdldFNlbGVjdGlvbiJpbiB3aW5kb3cpLGQ9e2dl
dE9mZnNldHM6cD9vOmksc2V0T2Zmc2V0czpwP2E6dX07ZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzKSxvPW4oNCksaT1uKDM0KSxhPW4oMTQpLHU9big1
KSxzPW4oMjgpLGM9KG4oMSksbig0OSksZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudEVsZW1lbnQ9
ZSx0aGlzLl9zdHJpbmdUZXh0PSIiK2UsdGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFy
ZW50PW51bGwsdGhpcy5fZG9tSUQ9MCx0aGlzLl9tb3VudEluZGV4PTAsdGhpcy5fY2xvc2luZ0Nv
bW1lbnQ9bnVsbCx0aGlzLl9jb21tZW50Tm9kZXM9bnVsbH0pO28oYy5wcm90b3R5cGUse21vdW50
Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPW4uX2lkQ291bnRlcisrLGk9IiByZWFj
dC10ZXh0OiAiK28rIiAiLGM9IiAvcmVhY3QtdGV4dCAiO2lmKHRoaXMuX2RvbUlEPW8sdGhpcy5f
aG9zdFBhcmVudD10LGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIGw9bi5fb3duZXJEb2N1bWVudCxw
PWwuY3JlYXRlQ29tbWVudChpKSxkPWwuY3JlYXRlQ29tbWVudChjKSxmPWEobC5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCkpO3JldHVybiBhLnF1ZXVlQ2hpbGQoZixhKHApKSx0aGlzLl9zdHJpbmdU
ZXh0JiZhLnF1ZXVlQ2hpbGQoZixhKGwuY3JlYXRlVGV4dE5vZGUodGhpcy5fc3RyaW5nVGV4dCkp
KSxhLnF1ZXVlQ2hpbGQoZixhKGQpKSx1LnByZWNhY2hlTm9kZSh0aGlzLHApLHRoaXMuX2Nsb3Np
bmdDb21tZW50PWQsZn12YXIgaD1zKHRoaXMuX3N0cmluZ1RleHQpO3JldHVybiBlLnJlbmRlclRv
U3RhdGljTWFya3VwP2g6IjwhLS0iK2krIi0tPiIraCsiPCEtLSIrYysiLS0+In0scmVjZWl2ZUNv
bXBvbmVudDpmdW5jdGlvbihlLHQpe2lmKGUhPT10aGlzLl9jdXJyZW50RWxlbWVudCl7dGhpcy5f
Y3VycmVudEVsZW1lbnQ9ZTt2YXIgbj0iIitlO2lmKG4hPT10aGlzLl9zdHJpbmdUZXh0KXt0aGlz
Ll9zdHJpbmdUZXh0PW47dmFyIHI9dGhpcy5nZXRIb3N0Tm9kZSgpO2kucmVwbGFjZURlbGltaXRl
ZFRleHQoclswXSxyWzFdLG4pfX19LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5f
Y29tbWVudE5vZGVzO2lmKGUpcmV0dXJuIGU7aWYoIXRoaXMuX2Nsb3NpbmdDb21tZW50KWZvcih2
YXIgdD11LmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyksbj10Lm5leHRTaWJsaW5nOzspewotaWYo
bnVsbD09bj9yKCI2NyIsdGhpcy5fZG9tSUQpOnZvaWQgMCw4PT09bi5ub2RlVHlwZSYmIiAvcmVh
Y3QtdGV4dCAiPT09bi5ub2RlVmFsdWUpe3RoaXMuX2Nsb3NpbmdDb21tZW50PW47YnJlYWt9bj1u
Lm5leHRTaWJsaW5nfXJldHVybiBlPVt0aGlzLl9ob3N0Tm9kZSx0aGlzLl9jbG9zaW5nQ29tbWVu
dF0sdGhpcy5fY29tbWVudE5vZGVzPWUsZX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbigpe3Ro
aXMuX2Nsb3NpbmdDb21tZW50PW51bGwsdGhpcy5fY29tbWVudE5vZGVzPW51bGwsdS51bmNhY2hl
Tm9kZSh0aGlzKX19KSxlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKCl7dGhpcy5fcm9vdE5vZGVJRCYmbC51cGRhdGVXcmFwcGVyKHRoaXMpfWZ1bmN0
aW9uIG8oZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsbj11LmV4ZWN1dGVPbkNo
YW5nZSh0LGUpO3JldHVybiBjLmFzYXAocix0aGlzKSxufXZhciBpPW4oMyksYT1uKDQpLHU9bigz
OSkscz1uKDUpLGM9big5KSxsPShuKDEpLG4oMikse2dldEhvc3RQcm9wczpmdW5jdGlvbihlLHQp
e251bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw/aSgiOTEiKTp2b2lkIDA7dmFyIG49YSh7
fSx0LHt2YWx1ZTp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjoiIitlLl93cmFw
cGVyU3RhdGUuaW5pdGlhbFZhbHVlLG9uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0p
O3JldHVybiBufSxtb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj11LmdldFZhbHVlKHQp
LHI9bjtpZihudWxsPT1uKXt2YXIgYT10LmRlZmF1bHRWYWx1ZSxzPXQuY2hpbGRyZW47bnVsbCE9
cyYmKG51bGwhPWE/aSgiOTIiKTp2b2lkIDAsQXJyYXkuaXNBcnJheShzKSYmKHMubGVuZ3RoPD0x
P3ZvaWQgMDppKCI5MyIpLHM9c1swXSksYT0iIitzKSxudWxsPT1hJiYoYT0iIikscj1hfWUuX3dy
YXBwZXJTdGF0ZT17aW5pdGlhbFZhbHVlOiIiK3IsbGlzdGVuZXJzOm51bGwsb25DaGFuZ2U6by5i
aW5kKGUpfX0sdXBkYXRlV3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVu
dC5wcm9wcyxuPXMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxyPXUuZ2V0VmFsdWUodCk7aWYobnVs
bCE9cil7dmFyIG89IiIrcjtvIT09bi52YWx1ZSYmKG4udmFsdWU9byksbnVsbD09dC5kZWZhdWx0
VmFsdWUmJihuLmRlZmF1bHRWYWx1ZT1vKX1udWxsIT10LmRlZmF1bHRWYWx1ZSYmKG4uZGVmYXVs
dFZhbHVlPXQuZGVmYXVsdFZhbHVlKX0scG9zdE1vdW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIg
dD1zLmdldE5vZGVGcm9tSW5zdGFuY2UoZSksbj10LnRleHRDb250ZW50O249PT1lLl93cmFwcGVy
U3RhdGUuaW5pdGlhbFZhbHVlJiYodC52YWx1ZT1uKX19KTtlLmV4cG9ydHM9bH0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7Il9ob3N0Tm9kZSJpbiBlP3ZvaWQg
MDpzKCIzMyIpLCJfaG9zdE5vZGUiaW4gdD92b2lkIDA6cygiMzMiKTtmb3IodmFyIG49MCxyPWU7
cjtyPXIuX2hvc3RQYXJlbnQpbisrO2Zvcih2YXIgbz0wLGk9dDtpO2k9aS5faG9zdFBhcmVudClv
Kys7Zm9yKDtuLW8+MDspZT1lLl9ob3N0UGFyZW50LG4tLTtmb3IoO28tbj4wOyl0PXQuX2hvc3RQ
YXJlbnQsby0tO2Zvcih2YXIgYT1uO2EtLTspe2lmKGU9PT10KXJldHVybiBlO2U9ZS5faG9zdFBh
cmVudCx0PXQuX2hvc3RQYXJlbnR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gbyhlLHQpeyJfaG9zdE5v
ZGUiaW4gZT92b2lkIDA6cygiMzUiKSwiX2hvc3ROb2RlImluIHQ/dm9pZCAwOnMoIjM1Iik7Zm9y
KDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10Ll9ob3N0UGFyZW50fXJldHVybiExfWZ1bmN0aW9u
IGkoZSl7cmV0dXJuIl9ob3N0Tm9kZSJpbiBlP3ZvaWQgMDpzKCIzNiIpLGUuX2hvc3RQYXJlbnR9
ZnVuY3Rpb24gYShlLHQsbil7Zm9yKHZhciByPVtdO2U7KXIucHVzaChlKSxlPWUuX2hvc3RQYXJl
bnQ7dmFyIG87Zm9yKG89ci5sZW5ndGg7by0tID4wOyl0KHJbb10sImNhcHR1cmVkIixuKTtmb3Io
bz0wO288ci5sZW5ndGg7bysrKXQocltvXSwiYnViYmxlZCIsbil9ZnVuY3Rpb24gdShlLHQsbixv
LGkpe2Zvcih2YXIgYT1lJiZ0P3IoZSx0KTpudWxsLHU9W107ZSYmZSE9PWE7KXUucHVzaChlKSxl
PWUuX2hvc3RQYXJlbnQ7Zm9yKHZhciBzPVtdO3QmJnQhPT1hOylzLnB1c2godCksdD10Ll9ob3N0
UGFyZW50O3ZhciBjO2ZvcihjPTA7Yzx1Lmxlbmd0aDtjKyspbih1W2NdLCJidWJibGVkIixvKTtm
b3IoYz1zLmxlbmd0aDtjLS0gPjA7KW4oc1tjXSwiY2FwdHVyZWQiLGkpfXZhciBzPW4oMyk7bigx
KTtlLmV4cG9ydHM9e2lzQW5jZXN0b3I6byxnZXRMb3dlc3RDb21tb25BbmNlc3RvcjpyLGdldFBh
cmVudEluc3RhbmNlOmksdHJhdmVyc2VUd29QaGFzZTphLHRyYXZlcnNlRW50ZXJMZWF2ZTp1fX0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dGhpcy5yZWluaXRpYWxp
emVUcmFuc2FjdGlvbigpfXZhciBvPW4oNCksaT1uKDkpLGE9bigyNyksdT1uKDcpLHM9e2luaXRp
YWxpemU6dSxjbG9zZTpmdW5jdGlvbigpe2QuaXNCYXRjaGluZ1VwZGF0ZXM9ITF9fSxjPXtpbml0
aWFsaXplOnUsY2xvc2U6aS5mbHVzaEJhdGNoZWRVcGRhdGVzLmJpbmQoaSl9LGw9W2Msc107byhy
LnByb3RvdHlwZSxhLHtnZXRUcmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGx9
fSk7dmFyIHA9bmV3IHIsZD17aXNCYXRjaGluZ1VwZGF0ZXM6ITEsYmF0Y2hlZFVwZGF0ZXM6ZnVu
Y3Rpb24oZSx0LG4scixvLGkpe3ZhciBhPWQuaXNCYXRjaGluZ1VwZGF0ZXM7cmV0dXJuIGQuaXNC
YXRjaGluZ1VwZGF0ZXM9ITAsYT9lKHQsbixyLG8saSk6cC5wZXJmb3JtKGUsbnVsbCx0LG4scixv
LGkpfX07ZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cigpe3d8fCh3PSEwLGcuRXZlbnRFbWl0dGVyLmluamVjdFJlYWN0RXZlbnRMaXN0ZW5lcih5KSxn
LkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luT3JkZXIodSksZy5FdmVudFBsdWdpblV0
aWxzLmluamVjdENvbXBvbmVudFRyZWUoZCksZy5FdmVudFBsdWdpblV0aWxzLmluamVjdFRyZWVU
cmF2ZXJzYWwoaCksZy5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUoe1Np
bXBsZUV2ZW50UGx1Z2luOkUsRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOnMsQ2hhbmdlRXZlbnRQbHVn
aW46YSxTZWxlY3RFdmVudFBsdWdpbjpDLEJlZm9yZUlucHV0RXZlbnRQbHVnaW46aX0pLGcuSG9z
dENvbXBvbmVudC5pbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MocCksZy5Ib3N0Q29tcG9uZW50
LmluamVjdFRleHRDb21wb25lbnRDbGFzcyh2KSxnLkRPTVByb3BlcnR5LmluamVjdERPTVByb3Bl
cnR5Q29uZmlnKG8pLGcuRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoYyksZy5E
T01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhfKSxnLkVtcHR5Q29tcG9uZW50Lmlu
amVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeShmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGYoZSl9KSxn
LlVwZGF0ZXMuaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb24oYiksZy5VcGRhdGVzLmluamVjdEJh
dGNoaW5nU3RyYXRlZ3kobSksZy5Db21wb25lbnQuaW5qZWN0RW52aXJvbm1lbnQobCkpfXZhciBv
PW4oMTI0KSxpPW4oMTI2KSxhPW4oMTI4KSx1PW4oMTMwKSxzPW4oMTMxKSxjPW4oMTMzKSxsPW4o
MTM1KSxwPW4oMTM4KSxkPW4oNSksZj1uKDE0MCksaD1uKDE0OCksdj1uKDE0NiksbT1uKDE0OSks
eT1uKDE1MyksZz1uKDE1NCksYj1uKDE1OSksXz1uKDE2NCksQz1uKDE2NSksRT1uKDE2Niksdz0h
MTtlLmV4cG9ydHM9e2luamVjdDpyfX0sOTEsZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe28uZW5xdWV1ZUV2ZW50cyhlKSxvLnByb2Nlc3NFdmVudFF1ZXVlKCExKX12
YXIgbz1uKDE5KSxpPXtoYW5kbGVUb3BMZXZlbDpmdW5jdGlvbihlLHQsbixpKXt2YXIgYT1vLmV4
dHJhY3RFdmVudHMoZSx0LG4saSk7cihhKX19O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKDtlLl9ob3N0UGFyZW50OyllPWUuX2hvc3RQ
YXJlbnQ7dmFyIHQ9cC5nZXROb2RlRnJvbUluc3RhbmNlKGUpLG49dC5wYXJlbnROb2RlO3JldHVy
biBwLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG4pfWZ1bmN0aW9uIG8oZSx0KXt0aGlzLnRv
cExldmVsVHlwZT1lLHRoaXMubmF0aXZlRXZlbnQ9dCx0aGlzLmFuY2VzdG9ycz1bXX1mdW5jdGlv
biBpKGUpe3ZhciB0PWYoZS5uYXRpdmVFdmVudCksbj1wLmdldENsb3Nlc3RJbnN0YW5jZUZyb21O
b2RlKHQpLG89bjtkbyBlLmFuY2VzdG9ycy5wdXNoKG8pLG89byYmcihvKTt3aGlsZShvKTtmb3Io
dmFyIGk9MDtpPGUuYW5jZXN0b3JzLmxlbmd0aDtpKyspbj1lLmFuY2VzdG9yc1tpXSx2Ll9oYW5k
bGVUb3BMZXZlbChlLnRvcExldmVsVHlwZSxuLGUubmF0aXZlRXZlbnQsZihlLm5hdGl2ZUV2ZW50
KSl9ZnVuY3Rpb24gYShlKXt2YXIgdD1oKHdpbmRvdyk7ZSh0KX12YXIgdT1uKDQpLHM9big1MSks
Yz1uKDYpLGw9bigxMykscD1uKDUpLGQ9big5KSxmPW4oNDYpLGg9bigxMDQpO3Uoby5wcm90b3R5
cGUse2Rlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLnRvcExldmVsVHlwZT1udWxsLHRoaXMubmF0
aXZlRXZlbnQ9bnVsbCx0aGlzLmFuY2VzdG9ycy5sZW5ndGg9MH19KSxsLmFkZFBvb2xpbmdUbyhv
LGwudHdvQXJndW1lbnRQb29sZXIpO3ZhciB2PXtfZW5hYmxlZDohMCxfaGFuZGxlVG9wTGV2ZWw6
bnVsbCxXSU5ET1dfSEFORExFOmMuY2FuVXNlRE9NP3dpbmRvdzpudWxsLHNldEhhbmRsZVRvcExl
dmVsOmZ1bmN0aW9uKGUpe3YuX2hhbmRsZVRvcExldmVsPWV9LHNldEVuYWJsZWQ6ZnVuY3Rpb24o
ZSl7di5fZW5hYmxlZD0hIWV9LGlzRW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiB2Ll9lbmFibGVk
fSx0cmFwQnViYmxlZEV2ZW50OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj9zLmxpc3RlbihuLHQs
di5kaXNwYXRjaEV2ZW50LmJpbmQobnVsbCxlKSk6bnVsbH0sdHJhcENhcHR1cmVkRXZlbnQ6ZnVu
Y3Rpb24oZSx0LG4pe3JldHVybiBuP3MuY2FwdHVyZShuLHQsdi5kaXNwYXRjaEV2ZW50LmJpbmQo
bnVsbCxlKSk6bnVsbH0sbW9uaXRvclNjcm9sbFZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWEuYmlu
ZChudWxsLGUpO3MubGlzdGVuKHdpbmRvdywic2Nyb2xsIix0KX0sZGlzcGF0Y2hFdmVudDpmdW5j
dGlvbihlLHQpe2lmKHYuX2VuYWJsZWQpe3ZhciBuPW8uZ2V0UG9vbGVkKGUsdCk7dHJ5e2QuYmF0
Y2hlZFVwZGF0ZXMoaSxuKX1maW5hbGx5e28ucmVsZWFzZShuKX19fX07ZS5leHBvcnRzPXZ9LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigxNSksbz1uKDE5KSxpPW4oMzcpLGE9
big0MCksdT1uKDYzKSxzPW4oMjUpLGM9big2NSksbD1uKDkpLHA9e0NvbXBvbmVudDphLmluamVj
dGlvbixET01Qcm9wZXJ0eTpyLmluamVjdGlvbixFbXB0eUNvbXBvbmVudDp1LmluamVjdGlvbixF
dmVudFBsdWdpbkh1YjpvLmluamVjdGlvbixFdmVudFBsdWdpblV0aWxzOmkuaW5qZWN0aW9uLEV2
ZW50RW1pdHRlcjpzLmluamVjdGlvbixIb3N0Q29tcG9uZW50OmMuaW5qZWN0aW9uLFVwZGF0ZXM6
bC5pbmplY3Rpb259O2UuZXhwb3J0cz1wfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPW4oMTc3KSxvPS9cLz8+LyxpPS9ePFwhXC1cLS8sYT17Q0hFQ0tTVU1fQVRUUl9OQU1FOiJk
YXRhLXJlYWN0LWNoZWNrc3VtIixhZGRDaGVja3N1bVRvTWFya3VwOmZ1bmN0aW9uKGUpe3ZhciB0
PXIoZSk7cmV0dXJuIGkudGVzdChlKT9lOmUucmVwbGFjZShvLCIgIithLkNIRUNLU1VNX0FUVFJf
TkFNRSsnPSInK3QrJyIkJicpfSxjYW5SZXVzZU1hcmt1cDpmdW5jdGlvbihlLHQpe3ZhciBuPXQu
Z2V0QXR0cmlidXRlKGEuQ0hFQ0tTVU1fQVRUUl9OQU1FKTtuPW4mJnBhcnNlSW50KG4sMTApO3Zh
ciBvPXIoZSk7cmV0dXJuIG89PT1ufX07ZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJue3R5cGU6IklOU0VSVF9NQVJLVVAiLGNv
bnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6bixhZnRlck5vZGU6
dH19ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJue3R5cGU6Ik1PVkVfRVhJU1RJTkciLGNvbnRlbnQ6
bnVsbCxmcm9tSW5kZXg6ZS5fbW91bnRJbmRleCxmcm9tTm9kZTpkLmdldEhvc3ROb2RlKGUpLHRv
SW5kZXg6bixhZnRlck5vZGU6dH19ZnVuY3Rpb24gaShlLHQpe3JldHVybnt0eXBlOiJSRU1PVkVf
Tk9ERSIsY29udGVudDpudWxsLGZyb21JbmRleDplLl9tb3VudEluZGV4LGZyb21Ob2RlOnQsdG9J
bmRleDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiBhKGUpe3JldHVybnt0eXBlOiJTRVRf
TUFSS1VQIixjb250ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0luZGV4Om51
bGwsYWZ0ZXJOb2RlOm51bGx9fWZ1bmN0aW9uIHUoZSl7cmV0dXJue3R5cGU6IlRFWFRfQ09OVEVO
VCIsY29udGVudDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51bGwsdG9JbmRleDpudWxsLGFm
dGVyTm9kZTpudWxsfX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIHQmJihlPWV8fFtdLGUucHVzaCh0
KSksZX1mdW5jdGlvbiBjKGUsdCl7cC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzKGUsdCl9dmFyIGw9
bigzKSxwPW4oNDApLGQ9KG4oMjEpLG4oOCksbigxMSksbigxNikpLGY9bigxMzQpLGg9KG4oNyks
bigxODApKSx2PShuKDEpLHtNaXhpbjp7X3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuOmZ1
bmN0aW9uKGUsdCxuKXtyZXR1cm4gZi5pbnN0YW50aWF0ZUNoaWxkcmVuKGUsdCxuKX0sX3JlY29u
Y2lsZXJVcGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGEsdT0wO3JldHVy
biBhPWgodCx1KSxmLnVwZGF0ZUNoaWxkcmVuKGUsYSxuLHIsbyx0aGlzLHRoaXMuX2hvc3RDb250
YWluZXJJbmZvLGksdSksYX0sbW91bnRDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhp
cy5fcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW4oZSx0LG4pO3RoaXMuX3JlbmRlcmVkQ2hp
bGRyZW49cjt2YXIgbz1bXSxpPTA7Zm9yKHZhciBhIGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eShh
KSl7dmFyIHU9clthXSxzPTAsYz1kLm1vdW50Q29tcG9uZW50KHUsdCx0aGlzLHRoaXMuX2hvc3RD
b250YWluZXJJbmZvLG4scyk7dS5fbW91bnRJbmRleD1pKyssby5wdXNoKGMpfXJldHVybiBvfSx1
cGRhdGVUZXh0Q29udGVudDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVu
O2YudW5tb3VudENoaWxkcmVuKHQsITEpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHko
bikmJmwoIjExOCIpO3ZhciByPVt1KGUpXTtjKHRoaXMscil9LHVwZGF0ZU1hcmt1cDpmdW5jdGlv
bihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVuKHQsITEp
O2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJmwoIjExOCIpO3ZhciByPVthKGUp
XTtjKHRoaXMscil9LHVwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt0aGlzLl91cGRhdGVD
aGlsZHJlbihlLHQsbil9LF91cGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhp
cy5fcmVuZGVyZWRDaGlsZHJlbixvPXt9LGk9W10sYT10aGlzLl9yZWNvbmNpbGVyVXBkYXRlQ2hp
bGRyZW4ocixlLGksbyx0LG4pO2lmKGF8fHIpe3ZhciB1LGw9bnVsbCxwPTAsZj0wLGg9MCx2PW51
bGw7Zm9yKHUgaW4gYSlpZihhLmhhc093blByb3BlcnR5KHUpKXt2YXIgbT1yJiZyW3VdLHk9YVt1
XTttPT09eT8obD1zKGwsdGhpcy5tb3ZlQ2hpbGQobSx2LHAsZikpLGY9TWF0aC5tYXgobS5fbW91
bnRJbmRleCxmKSxtLl9tb3VudEluZGV4PXApOihtJiYoZj1NYXRoLm1heChtLl9tb3VudEluZGV4
LGYpKSxsPXMobCx0aGlzLl9tb3VudENoaWxkQXRJbmRleCh5LGlbaF0sdixwLHQsbikpLGgrKyks
cCsrLHY9ZC5nZXRIb3N0Tm9kZSh5KX1mb3IodSBpbiBvKW8uaGFzT3duUHJvcGVydHkodSkmJihs
PXMobCx0aGlzLl91bm1vdW50Q2hpbGQoclt1XSxvW3VdKSkpO2wmJmModGhpcyxsKSx0aGlzLl9y
ZW5kZXJlZENoaWxkcmVuPWF9fSx1bm1vdW50Q2hpbGRyZW46ZnVuY3Rpb24oZSl7dmFyIHQ9dGhp
cy5fcmVuZGVyZWRDaGlsZHJlbjtmLnVubW91bnRDaGlsZHJlbih0LGUpLHRoaXMuX3JlbmRlcmVk
Q2hpbGRyZW49bnVsbH0sbW92ZUNoaWxkOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKGUuX21vdW50SW5k
ZXg8cilyZXR1cm4gbyhlLHQsbil9LGNyZWF0ZUNoaWxkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4g
cihuLHQsZS5fbW91bnRJbmRleCl9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGko
ZSx0KX0sX21vdW50Q2hpbGRBdEluZGV4OmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXtyZXR1cm4gZS5f
bW91bnRJbmRleD1yLHRoaXMuY3JlYXRlQ2hpbGQoZSxuLHQpfSxfdW5tb3VudENoaWxkOmZ1bmN0
aW9uKGUsdCl7dmFyIG49dGhpcy5yZW1vdmVDaGlsZChlLHQpO3JldHVybiBlLl9tb3VudEluZGV4
PW51bGwsbn19fSk7ZS5leHBvcnRzPXZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtyZXR1cm4hKCFlfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5hdHRhY2hSZWZ8fCJm
dW5jdGlvbiIhPXR5cGVvZiBlLmRldGFjaFJlZil9dmFyIG89bigzKSxpPShuKDEpLHthZGRDb21w
b25lbnRBc1JlZlRvOmZ1bmN0aW9uKGUsdCxuKXtyKG4pP3ZvaWQgMDpvKCIxMTkiKSxuLmF0dGFj
aFJlZih0LGUpfSxyZW1vdmVDb21wb25lbnRBc1JlZkZyb206ZnVuY3Rpb24oZSx0LG4pe3Iobik/
dm9pZCAwOm8oIjEyMCIpO3ZhciBpPW4uZ2V0UHVibGljSW5zdGFuY2UoKTtpJiZpLnJlZnNbdF09
PT1lLmdldFB1YmxpY0luc3RhbmNlKCkmJm4uZGV0YWNoUmVmKHQpfX0pO2UuZXhwb3J0cz1pfSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNf
T1JfWU9VX1dJTExfQkVfRklSRUQiO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpLHRoaXMu
cmVuZGVyVG9TdGF0aWNNYXJrdXA9ITEsdGhpcy5yZWFjdE1vdW50UmVhZHk9aS5nZXRQb29sZWQo
bnVsbCksdGhpcy51c2VDcmVhdGVFbGVtZW50PWV9dmFyIG89big0KSxpPW4oNTkpLGE9bigxMyks
dT1uKDI1KSxzPW4oNjYpLGM9KG4oOCksbigyNykpLGw9big0MikscD17aW5pdGlhbGl6ZTpzLmdl
dFNlbGVjdGlvbkluZm9ybWF0aW9uLGNsb3NlOnMucmVzdG9yZVNlbGVjdGlvbn0sZD17aW5pdGlh
bGl6ZTpmdW5jdGlvbigpe3ZhciBlPXUuaXNFbmFibGVkKCk7cmV0dXJuIHUuc2V0RW5hYmxlZCgh
MSksZX0sY2xvc2U6ZnVuY3Rpb24oZSl7dS5zZXRFbmFibGVkKGUpfX0sZj17aW5pdGlhbGl6ZTpm
dW5jdGlvbigpe3RoaXMucmVhY3RNb3VudFJlYWR5LnJlc2V0KCl9LGNsb3NlOmZ1bmN0aW9uKCl7
dGhpcy5yZWFjdE1vdW50UmVhZHkubm90aWZ5QWxsKCl9fSxoPVtwLGQsZl0sdj17Z2V0VHJhbnNh
Y3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiBofSxnZXRSZWFjdE1vdW50UmVhZHk6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFjdE1vdW50UmVhZHl9LGdldFVwZGF0ZVF1ZXVlOmZ1bmN0
aW9uKCl7cmV0dXJuIGx9LGNoZWNrcG9pbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFjdE1v
dW50UmVhZHkuY2hlY2twb2ludCgpfSxyb2xsYmFjazpmdW5jdGlvbihlKXt0aGlzLnJlYWN0TW91
bnRSZWFkeS5yb2xsYmFjayhlKX0sZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe2kucmVsZWFzZSh0aGlz
LnJlYWN0TW91bnRSZWFkeSksdGhpcy5yZWFjdE1vdW50UmVhZHk9bnVsbH19O28oci5wcm90b3R5
cGUsYyx2KSxhLmFkZFBvb2xpbmdUbyhyKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXsiZnVuY3Rpb24iPT10eXBlb2YgZT9lKHQuZ2V0
UHVibGljSW5zdGFuY2UoKSk6aS5hZGRDb21wb25lbnRBc1JlZlRvKHQsZSxuKX1mdW5jdGlvbiBv
KGUsdCxuKXsiZnVuY3Rpb24iPT10eXBlb2YgZT9lKG51bGwpOmkucmVtb3ZlQ29tcG9uZW50QXNS
ZWZGcm9tKHQsZSxuKX12YXIgaT1uKDE1NyksYT17fTthLmF0dGFjaFJlZnM9ZnVuY3Rpb24oZSx0
KXtpZihudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0KXt2YXIgbj10LnJlZjtudWxsIT1uJiZy
KG4sZSx0Ll9vd25lcil9fSxhLnNob3VsZFVwZGF0ZVJlZnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1u
dWxsLHI9bnVsbDtudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYobj1lLnJlZixyPWUuX293
bmVyKTt2YXIgbz1udWxsLGk9bnVsbDtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2Yg
dCYmKG89dC5yZWYsaT10Ll9vd25lciksbiE9PW98fCJzdHJpbmciPT10eXBlb2YgbyYmaSE9PXJ9
LGEuZGV0YWNoUmVmcz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9m
IHQpe3ZhciBuPXQucmVmO251bGwhPW4mJm8obixlLHQuX293bmVyKX19LGUuZXhwb3J0cz1hfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dGhpcy5yZWluaXRpYWxp
emVUcmFuc2FjdGlvbigpLHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXA9ZSx0aGlzLnVzZUNyZWF0
ZUVsZW1lbnQ9ITEsdGhpcy51cGRhdGVRdWV1ZT1uZXcgdSh0aGlzKX12YXIgbz1uKDQpLGk9bigx
MyksYT1uKDI3KSx1PShuKDgpLG4oMTYyKSkscz1bXSxjPXtlbnF1ZXVlOmZ1bmN0aW9uKCl7fX0s
bD17Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiBzfSxnZXRSZWFjdE1v
dW50UmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gY30sZ2V0VXBkYXRlUXVldWU6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy51cGRhdGVRdWV1ZX0sZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe30sY2hlY2twb2lu
dDpmdW5jdGlvbigpe30scm9sbGJhY2s6ZnVuY3Rpb24oKXt9fTtvKHIucHJvdG90eXBlLGEsbCks
aS5hZGRQb29saW5nVG8ociksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJy
b3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXt9
dmFyIGk9big0MiksYT0obigyKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7cih0aGlzLGUpLHRo
aXMudHJhbnNhY3Rpb249dH1yZXR1cm4gZS5wcm90b3R5cGUuaXNNb3VudGVkPWZ1bmN0aW9uKGUp
e3JldHVybiExfSxlLnByb3RvdHlwZS5lbnF1ZXVlQ2FsbGJhY2s9ZnVuY3Rpb24oZSx0LG4pe3Ro
aXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkmJmkuZW5xdWV1ZUNhbGxiYWNrKGUsdCxu
KX0sZS5wcm90b3R5cGUuZW5xdWV1ZUZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMudHJhbnNh
Y3Rpb24uaXNJblRyYW5zYWN0aW9uKCk/aS5lbnF1ZXVlRm9yY2VVcGRhdGUoZSk6byhlLCJmb3Jj
ZVVwZGF0ZSIpfSxlLnByb3RvdHlwZS5lbnF1ZXVlUmVwbGFjZVN0YXRlPWZ1bmN0aW9uKGUsdCl7
dGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKT9pLmVucXVldWVSZXBsYWNlU3RhdGUo
ZSx0KTpvKGUsInJlcGxhY2VTdGF0ZSIpfSxlLnByb3RvdHlwZS5lbnF1ZXVlU2V0U3RhdGU9ZnVu
Y3Rpb24oZSx0KXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpP2kuZW5xdWV1ZVNl
dFN0YXRlKGUsdCk6byhlLCJzZXRTdGF0ZSIpfSxlfSgpKTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24o
ZSx0KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPSIxNS42LjEifSxmdW5jdGlvbihlLHQpeyJ1c2Ug
c3RyaWN0Ijt2YXIgbj17eGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoi
aHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIn0scj17YWNjZW50SGVpZ2h0OiJh
Y2NlbnQtaGVpZ2h0IixhY2N1bXVsYXRlOjAsYWRkaXRpdmU6MCxhbGlnbm1lbnRCYXNlbGluZToi
YWxpZ25tZW50LWJhc2VsaW5lIixhbGxvd1Jlb3JkZXI6ImFsbG93UmVvcmRlciIsYWxwaGFiZXRp
YzowLGFtcGxpdHVkZTowLGFyYWJpY0Zvcm06ImFyYWJpYy1mb3JtIixhc2NlbnQ6MCxhdHRyaWJ1
dGVOYW1lOiJhdHRyaWJ1dGVOYW1lIixhdHRyaWJ1dGVUeXBlOiJhdHRyaWJ1dGVUeXBlIixhdXRv
UmV2ZXJzZToiYXV0b1JldmVyc2UiLGF6aW11dGg6MCxiYXNlRnJlcXVlbmN5OiJiYXNlRnJlcXVl
bmN5IixiYXNlUHJvZmlsZToiYmFzZVByb2ZpbGUiLGJhc2VsaW5lU2hpZnQ6ImJhc2VsaW5lLXNo
aWZ0IixiYm94OjAsYmVnaW46MCxiaWFzOjAsYnk6MCxjYWxjTW9kZToiY2FsY01vZGUiLGNhcEhl
aWdodDoiY2FwLWhlaWdodCIsY2xpcDowLGNsaXBQYXRoOiJjbGlwLXBhdGgiLGNsaXBSdWxlOiJj
bGlwLXJ1bGUiLGNsaXBQYXRoVW5pdHM6ImNsaXBQYXRoVW5pdHMiLGNvbG9ySW50ZXJwb2xhdGlv
bjoiY29sb3ItaW50ZXJwb2xhdGlvbiIsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoiY29sb3It
aW50ZXJwb2xhdGlvbi1maWx0ZXJzIixjb2xvclByb2ZpbGU6ImNvbG9yLXByb2ZpbGUiLGNvbG9y
UmVuZGVyaW5nOiJjb2xvci1yZW5kZXJpbmciLGNvbnRlbnRTY3JpcHRUeXBlOiJjb250ZW50U2Ny
aXB0VHlwZSIsY29udGVudFN0eWxlVHlwZToiY29udGVudFN0eWxlVHlwZSIsY3Vyc29yOjAsY3g6
MCxjeTowLGQ6MCxkZWNlbGVyYXRlOjAsZGVzY2VudDowLGRpZmZ1c2VDb25zdGFudDoiZGlmZnVz
ZUNvbnN0YW50IixkaXJlY3Rpb246MCxkaXNwbGF5OjAsZGl2aXNvcjowLGRvbWluYW50QmFzZWxp
bmU6ImRvbWluYW50LWJhc2VsaW5lIixkdXI6MCxkeDowLGR5OjAsZWRnZU1vZGU6ImVkZ2VNb2Rl
IixlbGV2YXRpb246MCxlbmFibGVCYWNrZ3JvdW5kOiJlbmFibGUtYmFja2dyb3VuZCIsZW5kOjAs
ZXhwb25lbnQ6MCxleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOiJleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkIixmaWxsOjAsZmlsbE9wYWNpdHk6ImZpbGwtb3BhY2l0eSIsZmlsbFJ1bGU6ImZpbGwt
cnVsZSIsZmlsdGVyOjAsZmlsdGVyUmVzOiJmaWx0ZXJSZXMiLGZpbHRlclVuaXRzOiJmaWx0ZXJV
bml0cyIsZmxvb2RDb2xvcjoiZmxvb2QtY29sb3IiLGZsb29kT3BhY2l0eToiZmxvb2Qtb3BhY2l0
eSIsZm9jdXNhYmxlOjAsZm9udEZhbWlseToiZm9udC1mYW1pbHkiLGZvbnRTaXplOiJmb250LXNp
emUiLGZvbnRTaXplQWRqdXN0OiJmb250LXNpemUtYWRqdXN0Iixmb250U3RyZXRjaDoiZm9udC1z
dHJldGNoIixmb250U3R5bGU6ImZvbnQtc3R5bGUiLGZvbnRWYXJpYW50OiJmb250LXZhcmlhbnQi
LGZvbnRXZWlnaHQ6ImZvbnQtd2VpZ2h0Iixmb3JtYXQ6MCxmcm9tOjAsZng6MCxmeTowLGcxOjAs
ZzI6MCxnbHlwaE5hbWU6ImdseXBoLW5hbWUiLGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiJn
bHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIixnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6Imds
eXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIixnbHlwaFJlZjoiZ2x5cGhSZWYiLGdyYWRpZW50VHJh
bnNmb3JtOiJncmFkaWVudFRyYW5zZm9ybSIsZ3JhZGllbnRVbml0czoiZ3JhZGllbnRVbml0cyIs
aGFuZ2luZzowLGhvcml6QWR2WDoiaG9yaXotYWR2LXgiLGhvcml6T3JpZ2luWDoiaG9yaXotb3Jp
Z2luLXgiLGlkZW9ncmFwaGljOjAsaW1hZ2VSZW5kZXJpbmc6ImltYWdlLXJlbmRlcmluZyIsaW46
MCxpbjI6MCxpbnRlcmNlcHQ6MCxrOjAsazE6MCxrMjowLGszOjAsazQ6MCxrZXJuZWxNYXRyaXg6
Imtlcm5lbE1hdHJpeCIsa2VybmVsVW5pdExlbmd0aDoia2VybmVsVW5pdExlbmd0aCIsa2Vybmlu
ZzowLGtleVBvaW50czoia2V5UG9pbnRzIixrZXlTcGxpbmVzOiJrZXlTcGxpbmVzIixrZXlUaW1l
czoia2V5VGltZXMiLGxlbmd0aEFkanVzdDoibGVuZ3RoQWRqdXN0IixsZXR0ZXJTcGFjaW5nOiJs
ZXR0ZXItc3BhY2luZyIsbGlnaHRpbmdDb2xvcjoibGlnaHRpbmctY29sb3IiLGxpbWl0aW5nQ29u
ZUFuZ2xlOiJsaW1pdGluZ0NvbmVBbmdsZSIsbG9jYWw6MCxtYXJrZXJFbmQ6Im1hcmtlci1lbmQi
LG1hcmtlck1pZDoibWFya2VyLW1pZCIsbWFya2VyU3RhcnQ6Im1hcmtlci1zdGFydCIsbWFya2Vy
SGVpZ2h0OiJtYXJrZXJIZWlnaHQiLG1hcmtlclVuaXRzOiJtYXJrZXJVbml0cyIsbWFya2VyV2lk
dGg6Im1hcmtlcldpZHRoIixtYXNrOjAsbWFza0NvbnRlbnRVbml0czoibWFza0NvbnRlbnRVbml0
cyIsbWFza1VuaXRzOiJtYXNrVW5pdHMiLG1hdGhlbWF0aWNhbDowLG1vZGU6MCxudW1PY3RhdmVz
OiJudW1PY3RhdmVzIixvZmZzZXQ6MCxvcGFjaXR5OjAsb3BlcmF0b3I6MCxvcmRlcjowLG9yaWVu
dDowLG9yaWVudGF0aW9uOjAsb3JpZ2luOjAsb3ZlcmZsb3c6MCxvdmVybGluZVBvc2l0aW9uOiJv
dmVybGluZS1wb3NpdGlvbiIsb3ZlcmxpbmVUaGlja25lc3M6Im92ZXJsaW5lLXRoaWNrbmVzcyIs
cGFpbnRPcmRlcjoicGFpbnQtb3JkZXIiLHBhbm9zZTE6InBhbm9zZS0xIixwYXRoTGVuZ3RoOiJw
YXRoTGVuZ3RoIixwYXR0ZXJuQ29udGVudFVuaXRzOiJwYXR0ZXJuQ29udGVudFVuaXRzIixwYXR0
ZXJuVHJhbnNmb3JtOiJwYXR0ZXJuVHJhbnNmb3JtIixwYXR0ZXJuVW5pdHM6InBhdHRlcm5Vbml0
cyIscG9pbnRlckV2ZW50czoicG9pbnRlci1ldmVudHMiLHBvaW50czowLHBvaW50c0F0WDoicG9p
bnRzQXRYIixwb2ludHNBdFk6InBvaW50c0F0WSIscG9pbnRzQXRaOiJwb2ludHNBdFoiLHByZXNl
cnZlQWxwaGE6InByZXNlcnZlQWxwaGEiLHByZXNlcnZlQXNwZWN0UmF0aW86InByZXNlcnZlQXNw
ZWN0UmF0aW8iLHByaW1pdGl2ZVVuaXRzOiJwcmltaXRpdmVVbml0cyIscjowLHJhZGl1czowLHJl
Zlg6InJlZlgiLHJlZlk6InJlZlkiLHJlbmRlcmluZ0ludGVudDoicmVuZGVyaW5nLWludGVudCIs
cmVwZWF0Q291bnQ6InJlcGVhdENvdW50IixyZXBlYXREdXI6InJlcGVhdER1ciIscmVxdWlyZWRF
eHRlbnNpb25zOiJyZXF1aXJlZEV4dGVuc2lvbnMiLHJlcXVpcmVkRmVhdHVyZXM6InJlcXVpcmVk
RmVhdHVyZXMiLHJlc3RhcnQ6MCxyZXN1bHQ6MCxyb3RhdGU6MCxyeDowLHJ5OjAsc2NhbGU6MCxz
ZWVkOjAsc2hhcGVSZW5kZXJpbmc6InNoYXBlLXJlbmRlcmluZyIsc2xvcGU6MCxzcGFjaW5nOjAs
c3BlY3VsYXJDb25zdGFudDoic3BlY3VsYXJDb25zdGFudCIsc3BlY3VsYXJFeHBvbmVudDoic3Bl
Y3VsYXJFeHBvbmVudCIsc3BlZWQ6MCxzcHJlYWRNZXRob2Q6InNwcmVhZE1ldGhvZCIsc3RhcnRP
ZmZzZXQ6InN0YXJ0T2Zmc2V0IixzdGREZXZpYXRpb246InN0ZERldmlhdGlvbiIsc3RlbWg6MCxz
dGVtdjowLHN0aXRjaFRpbGVzOiJzdGl0Y2hUaWxlcyIsc3RvcENvbG9yOiJzdG9wLWNvbG9yIixz
dG9wT3BhY2l0eToic3RvcC1vcGFjaXR5IixzdHJpa2V0aHJvdWdoUG9zaXRpb246InN0cmlrZXRo
cm91Z2gtcG9zaXRpb24iLHN0cmlrZXRocm91Z2hUaGlja25lc3M6InN0cmlrZXRocm91Z2gtdGhp
Y2tuZXNzIixzdHJpbmc6MCxzdHJva2U6MCxzdHJva2VEYXNoYXJyYXk6InN0cm9rZS1kYXNoYXJy
YXkiLHN0cm9rZURhc2hvZmZzZXQ6InN0cm9rZS1kYXNob2Zmc2V0IixzdHJva2VMaW5lY2FwOiJz
dHJva2UtbGluZWNhcCIsc3Ryb2tlTGluZWpvaW46InN0cm9rZS1saW5lam9pbiIsc3Ryb2tlTWl0
ZXJsaW1pdDoic3Ryb2tlLW1pdGVybGltaXQiLHN0cm9rZU9wYWNpdHk6InN0cm9rZS1vcGFjaXR5
IixzdHJva2VXaWR0aDoic3Ryb2tlLXdpZHRoIixzdXJmYWNlU2NhbGU6InN1cmZhY2VTY2FsZSIs
c3lzdGVtTGFuZ3VhZ2U6InN5c3RlbUxhbmd1YWdlIix0YWJsZVZhbHVlczoidGFibGVWYWx1ZXMi
LHRhcmdldFg6InRhcmdldFgiLHRhcmdldFk6InRhcmdldFkiLHRleHRBbmNob3I6InRleHQtYW5j
aG9yIix0ZXh0RGVjb3JhdGlvbjoidGV4dC1kZWNvcmF0aW9uIix0ZXh0UmVuZGVyaW5nOiJ0ZXh0
LXJlbmRlcmluZyIsdGV4dExlbmd0aDoidGV4dExlbmd0aCIsdG86MCx0cmFuc2Zvcm06MCx1MTow
LHUyOjAsdW5kZXJsaW5lUG9zaXRpb246InVuZGVybGluZS1wb3NpdGlvbiIsdW5kZXJsaW5lVGhp
Y2tuZXNzOiJ1bmRlcmxpbmUtdGhpY2tuZXNzIix1bmljb2RlOjAsdW5pY29kZUJpZGk6InVuaWNv
ZGUtYmlkaSIsdW5pY29kZVJhbmdlOiJ1bmljb2RlLXJhbmdlIix1bml0c1BlckVtOiJ1bml0cy1w
ZXItZW0iLHZBbHBoYWJldGljOiJ2LWFscGhhYmV0aWMiLHZIYW5naW5nOiJ2LWhhbmdpbmciLHZJ
ZGVvZ3JhcGhpYzoidi1pZGVvZ3JhcGhpYyIsdk1hdGhlbWF0aWNhbDoidi1tYXRoZW1hdGljYWwi
LHZhbHVlczowLHZlY3RvckVmZmVjdDoidmVjdG9yLWVmZmVjdCIsdmVyc2lvbjowLHZlcnRBZHZZ
OiJ2ZXJ0LWFkdi15Iix2ZXJ0T3JpZ2luWDoidmVydC1vcmlnaW4teCIsdmVydE9yaWdpblk6InZl
cnQtb3JpZ2luLXkiLHZpZXdCb3g6InZpZXdCb3giLHZpZXdUYXJnZXQ6InZpZXdUYXJnZXQiLHZp
c2liaWxpdHk6MCx3aWR0aHM6MCx3b3JkU3BhY2luZzoid29yZC1zcGFjaW5nIix3cml0aW5nTW9k
ZToid3JpdGluZy1tb2RlIix4OjAseEhlaWdodDoieC1oZWlnaHQiLHgxOjAseDI6MCx4Q2hhbm5l
bFNlbGVjdG9yOiJ4Q2hhbm5lbFNlbGVjdG9yIix4bGlua0FjdHVhdGU6InhsaW5rOmFjdHVhdGUi
LHhsaW5rQXJjcm9sZToieGxpbms6YXJjcm9sZSIseGxpbmtIcmVmOiJ4bGluazpocmVmIix4bGlu
a1JvbGU6InhsaW5rOnJvbGUiLHhsaW5rU2hvdzoieGxpbms6c2hvdyIseGxpbmtUaXRsZToieGxp
bms6dGl0bGUiLHhsaW5rVHlwZToieGxpbms6dHlwZSIseG1sQmFzZToieG1sOmJhc2UiLHhtbG5z
OjAseG1sbnNYbGluazoieG1sbnM6eGxpbmsiLHhtbExhbmc6InhtbDpsYW5nIix4bWxTcGFjZToi
eG1sOnNwYWNlIix5OjAseTE6MCx5MjowLHlDaGFubmVsU2VsZWN0b3I6InlDaGFubmVsU2VsZWN0
b3IiLHo6MCx6b29tQW5kUGFuOiJ6b29tQW5kUGFuIn0sbz17UHJvcGVydGllczp7fSxET01BdHRy
aWJ1dGVOYW1lc3BhY2VzOnt4bGlua0FjdHVhdGU6bi54bGluayx4bGlua0FyY3JvbGU6bi54bGlu
ayx4bGlua0hyZWY6bi54bGluayx4bGlua1JvbGU6bi54bGluayx4bGlua1Nob3c6bi54bGluayx4
bGlua1RpdGxlOm4ueGxpbmsseGxpbmtUeXBlOm4ueGxpbmsseG1sQmFzZTpuLnhtbCx4bWxMYW5n
Om4ueG1sLHhtbFNwYWNlOm4ueG1sfSxET01BdHRyaWJ1dGVOYW1lczp7fX07T2JqZWN0LmtleXMo
cikuZm9yRWFjaChmdW5jdGlvbihlKXtvLlByb3BlcnRpZXNbZV09MCxyW2VdJiYoby5ET01BdHRy
aWJ1dGVOYW1lc1tlXT1yW2VdKX0pLGUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoInNlbGVjdGlvblN0YXJ0ImluIGUmJnMuaGFzU2VsZWN0
aW9uQ2FwYWJpbGl0aWVzKGUpKXJldHVybntzdGFydDplLnNlbGVjdGlvblN0YXJ0LGVuZDplLnNl
bGVjdGlvbkVuZH07aWYod2luZG93LmdldFNlbGVjdGlvbil7dmFyIHQ9d2luZG93LmdldFNlbGVj
dGlvbigpO3JldHVybnthbmNob3JOb2RlOnQuYW5jaG9yTm9kZSxhbmNob3JPZmZzZXQ6dC5hbmNo
b3JPZmZzZXQsZm9jdXNOb2RlOnQuZm9jdXNOb2RlLGZvY3VzT2Zmc2V0OnQuZm9jdXNPZmZzZXR9
fWlmKGRvY3VtZW50LnNlbGVjdGlvbil7dmFyIG49ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJh
bmdlKCk7cmV0dXJue3BhcmVudEVsZW1lbnQ6bi5wYXJlbnRFbGVtZW50KCksdGV4dDpuLnRleHQs
dG9wOm4uYm91bmRpbmdUb3AsbGVmdDpuLmJvdW5kaW5nTGVmdH19fWZ1bmN0aW9uIG8oZSx0KXtp
ZihnfHxudWxsPT12fHx2IT09bCgpKXJldHVybiBudWxsO3ZhciBuPXIodik7aWYoIXl8fCFkKHks
bikpe3k9bjt2YXIgbz1jLmdldFBvb2xlZChoLnNlbGVjdCxtLGUsdCk7cmV0dXJuIG8udHlwZT0i
c2VsZWN0IixvLnRhcmdldD12LGkuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhvKSxvfXJl
dHVybiBudWxsfXZhciBpPW4oMjApLGE9big2KSx1PW4oNSkscz1uKDY2KSxjPW4oMTApLGw9big1
MykscD1uKDc2KSxkPW4oMzIpLGY9YS5jYW5Vc2VET00mJiJkb2N1bWVudE1vZGUiaW4gZG9jdW1l
bnQmJmRvY3VtZW50LmRvY3VtZW50TW9kZTw9MTEsaD17c2VsZWN0OntwaGFzZWRSZWdpc3RyYXRp
b25OYW1lczp7YnViYmxlZDoib25TZWxlY3QiLGNhcHR1cmVkOiJvblNlbGVjdENhcHR1cmUifSxk
ZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9wQ29udGV4dE1lbnUiLCJ0b3BGb2N1cyIsInRvcEtl
eURvd24iLCJ0b3BLZXlVcCIsInRvcE1vdXNlRG93biIsInRvcE1vdXNlVXAiLCJ0b3BTZWxlY3Rp
b25DaGFuZ2UiXX19LHY9bnVsbCxtPW51bGwseT1udWxsLGc9ITEsYj0hMSxfPXtldmVudFR5cGVz
OmgsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXtpZighYilyZXR1cm4gbnVsbDt2YXIg
aT10P3UuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0KTp3aW5kb3c7c3dpdGNoKGUpe2Nhc2UidG9wRm9j
dXMiOihwKGkpfHwidHJ1ZSI9PT1pLmNvbnRlbnRFZGl0YWJsZSkmJih2PWksbT10LHk9bnVsbCk7
YnJlYWs7Y2FzZSJ0b3BCbHVyIjp2PW51bGwsbT1udWxsLHk9bnVsbDticmVhaztjYXNlInRvcE1v
dXNlRG93biI6Zz0hMDticmVhaztjYXNlInRvcENvbnRleHRNZW51IjpjYXNlInRvcE1vdXNlVXAi
OnJldHVybiBnPSExLG8obixyKTtjYXNlInRvcFNlbGVjdGlvbkNoYW5nZSI6aWYoZilicmVhaztj
YXNlInRvcEtleURvd24iOmNhc2UidG9wS2V5VXAiOnJldHVybiBvKG4scil9cmV0dXJuIG51bGx9
LGRpZFB1dExpc3RlbmVyOmZ1bmN0aW9uKGUsdCxuKXsib25TZWxlY3QiPT09dCYmKGI9ITApfX07
ZS5leHBvcnRzPV99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXty
ZXR1cm4iLiIrZS5fcm9vdE5vZGVJRH1mdW5jdGlvbiBvKGUpe3JldHVybiJidXR0b24iPT09ZXx8
ImlucHV0Ij09PWV8fCJzZWxlY3QiPT09ZXx8InRleHRhcmVhIj09PWV9dmFyIGk9bigzKSxhPW4o
NTEpLHU9bigyMCkscz1uKDUpLGM9bigxNjcpLGw9bigxNjgpLHA9bigxMCksZD1uKDE3MSksZj1u
KDE3MyksaD1uKDI2KSx2PW4oMTcwKSxtPW4oMTc0KSx5PW4oMTc1KSxnPW4oMjIpLGI9bigxNzYp
LF89big3KSxDPW4oNDQpLEU9KG4oMSkse30pLHc9e307WyJhYm9ydCIsImFuaW1hdGlvbkVuZCIs
ImFuaW1hdGlvbkl0ZXJhdGlvbiIsImFuaW1hdGlvblN0YXJ0IiwiYmx1ciIsImNhblBsYXkiLCJj
YW5QbGF5VGhyb3VnaCIsImNsaWNrIiwiY29udGV4dE1lbnUiLCJjb3B5IiwiY3V0IiwiZG91Ymxl
Q2xpY2siLCJkcmFnIiwiZHJhZ0VuZCIsImRyYWdFbnRlciIsImRyYWdFeGl0IiwiZHJhZ0xlYXZl
IiwiZHJhZ092ZXIiLCJkcmFnU3RhcnQiLCJkcm9wIiwiZHVyYXRpb25DaGFuZ2UiLCJlbXB0aWVk
IiwiZW5jcnlwdGVkIiwiZW5kZWQiLCJlcnJvciIsImZvY3VzIiwiaW5wdXQiLCJpbnZhbGlkIiwi
a2V5RG93biIsImtleVByZXNzIiwia2V5VXAiLCJsb2FkIiwibG9hZGVkRGF0YSIsImxvYWRlZE1l
dGFkYXRhIiwibG9hZFN0YXJ0IiwibW91c2VEb3duIiwibW91c2VNb3ZlIiwibW91c2VPdXQiLCJt
b3VzZU92ZXIiLCJtb3VzZVVwIiwicGFzdGUiLCJwYXVzZSIsInBsYXkiLCJwbGF5aW5nIiwicHJv
Z3Jlc3MiLCJyYXRlQ2hhbmdlIiwicmVzZXQiLCJzY3JvbGwiLCJzZWVrZWQiLCJzZWVraW5nIiwi
c3RhbGxlZCIsInN1Ym1pdCIsInN1c3BlbmQiLCJ0aW1lVXBkYXRlIiwidG91Y2hDYW5jZWwiLCJ0
b3VjaEVuZCIsInRvdWNoTW92ZSIsInRvdWNoU3RhcnQiLCJ0cmFuc2l0aW9uRW5kIiwidm9sdW1l
Q2hhbmdlIiwid2FpdGluZyIsIndoZWVsIl0uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lWzBd
LnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxuPSJvbiIrdCxyPSJ0b3AiK3Qsbz17cGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6bixjYXB0dXJlZDpuKyJDYXB0dXJlIn0sZGVwZW5kZW5j
aWVzOltyXX07RVtlXT1vLHdbcl09b30pO3ZhciBUPXt9LFA9e2V2ZW50VHlwZXM6RSxleHRyYWN0
RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXdbZV07aWYoIW8pcmV0dXJuIG51bGw7dmFy
IGE7c3dpdGNoKGUpe2Nhc2UidG9wQWJvcnQiOmNhc2UidG9wQ2FuUGxheSI6Y2FzZSJ0b3BDYW5Q
bGF5VGhyb3VnaCI6Y2FzZSJ0b3BEdXJhdGlvbkNoYW5nZSI6Y2FzZSJ0b3BFbXB0aWVkIjpjYXNl
InRvcEVuY3J5cHRlZCI6Y2FzZSJ0b3BFbmRlZCI6Y2FzZSJ0b3BFcnJvciI6Y2FzZSJ0b3BJbnB1
dCI6Y2FzZSJ0b3BJbnZhbGlkIjpjYXNlInRvcExvYWQiOmNhc2UidG9wTG9hZGVkRGF0YSI6Y2Fz
ZSJ0b3BMb2FkZWRNZXRhZGF0YSI6Y2FzZSJ0b3BMb2FkU3RhcnQiOmNhc2UidG9wUGF1c2UiOmNh
c2UidG9wUGxheSI6Y2FzZSJ0b3BQbGF5aW5nIjpjYXNlInRvcFByb2dyZXNzIjpjYXNlInRvcFJh
dGVDaGFuZ2UiOmNhc2UidG9wUmVzZXQiOmNhc2UidG9wU2Vla2VkIjpjYXNlInRvcFNlZWtpbmci
OmNhc2UidG9wU3RhbGxlZCI6Y2FzZSJ0b3BTdWJtaXQiOmNhc2UidG9wU3VzcGVuZCI6Y2FzZSJ0
b3BUaW1lVXBkYXRlIjpjYXNlInRvcFZvbHVtZUNoYW5nZSI6Y2FzZSJ0b3BXYWl0aW5nIjphPXA7
YnJlYWs7Y2FzZSJ0b3BLZXlQcmVzcyI6aWYoMD09PUMobikpcmV0dXJuIG51bGw7Y2FzZSJ0b3BL
ZXlEb3duIjpjYXNlInRvcEtleVVwIjphPWY7YnJlYWs7Y2FzZSJ0b3BCbHVyIjpjYXNlInRvcEZv
Y3VzIjphPWQ7YnJlYWs7Y2FzZSJ0b3BDbGljayI6aWYoMj09PW4uYnV0dG9uKXJldHVybiBudWxs
O2Nhc2UidG9wRG91YmxlQ2xpY2siOmNhc2UidG9wTW91c2VEb3duIjpjYXNlInRvcE1vdXNlTW92
ZSI6Y2FzZSJ0b3BNb3VzZVVwIjpjYXNlInRvcE1vdXNlT3V0IjpjYXNlInRvcE1vdXNlT3ZlciI6
Y2FzZSJ0b3BDb250ZXh0TWVudSI6YT1oO2JyZWFrO2Nhc2UidG9wRHJhZyI6Y2FzZSJ0b3BEcmFn
RW5kIjpjYXNlInRvcERyYWdFbnRlciI6Y2FzZSJ0b3BEcmFnRXhpdCI6Y2FzZSJ0b3BEcmFnTGVh
dmUiOmNhc2UidG9wRHJhZ092ZXIiOmNhc2UidG9wRHJhZ1N0YXJ0IjpjYXNlInRvcERyb3AiOmE9
djticmVhaztjYXNlInRvcFRvdWNoQ2FuY2VsIjpjYXNlInRvcFRvdWNoRW5kIjpjYXNlInRvcFRv
dWNoTW92ZSI6Y2FzZSJ0b3BUb3VjaFN0YXJ0IjphPW07YnJlYWs7Y2FzZSJ0b3BBbmltYXRpb25F
bmQiOmNhc2UidG9wQW5pbWF0aW9uSXRlcmF0aW9uIjpjYXNlInRvcEFuaW1hdGlvblN0YXJ0Ijph
PWM7YnJlYWs7Y2FzZSJ0b3BUcmFuc2l0aW9uRW5kIjphPXk7YnJlYWs7Y2FzZSJ0b3BTY3JvbGwi
OmE9ZzticmVhaztjYXNlInRvcFdoZWVsIjphPWI7YnJlYWs7Y2FzZSJ0b3BDb3B5IjpjYXNlInRv
cEN1dCI6Y2FzZSJ0b3BQYXN0ZSI6YT1sfWE/dm9pZCAwOmkoIjg2IixlKTt2YXIgcz1hLmdldFBv
b2xlZChvLHQsbixyKTtyZXR1cm4gdS5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHMpLHN9
LGRpZFB1dExpc3RlbmVyOmZ1bmN0aW9uKGUsdCxuKXtpZigib25DbGljayI9PT10JiYhbyhlLl90
YWcpKXt2YXIgaT1yKGUpLHU9cy5nZXROb2RlRnJvbUluc3RhbmNlKGUpO1RbaV18fChUW2ldPWEu
bGlzdGVuKHUsImNsaWNrIixfKSl9fSx3aWxsRGVsZXRlTGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXtp
Zigib25DbGljayI9PT10JiYhbyhlLl90YWcpKXt2YXIgbj1yKGUpO1Rbbl0ucmVtb3ZlKCksZGVs
ZXRlIFRbbl19fX07ZS5leHBvcnRzPVB9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigxMCks
aT17YW5pbWF0aW9uTmFtZTpudWxsLGVsYXBzZWRUaW1lOm51bGwscHNldWRvRWxlbWVudDpudWxs
fTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZh
ciBvPW4oMTApLGk9e2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuImNsaXBib2FyZERh
dGEiaW4gZT9lLmNsaXBib2FyZERhdGE6d2luZG93LmNsaXBib2FyZERhdGF9fTtvLmF1Z21lbnRD
bGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMTApLGk9
e2RhdGE6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxl
LHQsbixyKX12YXIgbz1uKDI2KSxpPXtkYXRhVHJhbnNmZXI6bnVsbH07by5hdWdtZW50Q2xhc3Mo
cixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDIyKSxpPXtyZWxh
dGVkVGFyZ2V0Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRo
aXMsZSx0LG4scil9dmFyIG89bigxMCksaT17ZGF0YTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkp
LGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMjIpLGk9big0NCksYT1u
KDE4MSksdT1uKDQ1KSxzPXtrZXk6YSxsb2NhdGlvbjpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtl
eTpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVsbCxyZXBlYXQ6bnVsbCxsb2NhbGU6bnVsbCxn
ZXRNb2RpZmllclN0YXRlOnUsY2hhckNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuImtleXByZXNzIj09
PWUudHlwZT9pKGUpOjB9LGtleUNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuImtleWRvd24iPT09ZS50
eXBlfHwia2V5dXAiPT09ZS50eXBlP2Uua2V5Q29kZTowfSx3aGljaDpmdW5jdGlvbihlKXtyZXR1
cm4ia2V5cHJlc3MiPT09ZS50eXBlP2koZSk6ImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09
ZS50eXBlP2Uua2V5Q29kZTowfX07by5hdWdtZW50Q2xhc3MocixzKSxlLmV4cG9ydHM9cn0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNh
bGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDIyKSxpPW4oNDUpLGE9e3RvdWNoZXM6bnVsbCx0YXJn
ZXRUb3VjaGVzOm51bGwsY2hhbmdlZFRvdWNoZXM6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51
bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTppfTtvLmF1Z21l
bnRDbGFzcyhyLGEpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMTAp
LGk9e3Byb3BlcnR5TmFtZTpudWxsLGVsYXBzZWRUaW1lOm51bGwscHNldWRvRWxlbWVudDpudWxs
fTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZh
ciBvPW4oMjYpLGk9e2RlbHRhWDpmdW5jdGlvbihlKXtyZXR1cm4iZGVsdGFYImluIGU/ZS5kZWx0
YVg6IndoZWVsRGVsdGFYImluIGU/LWUud2hlZWxEZWx0YVg6MH0sZGVsdGFZOmZ1bmN0aW9uKGUp
e3JldHVybiJkZWx0YVkiaW4gZT9lLmRlbHRhWToid2hlZWxEZWx0YVkiaW4gZT8tZS53aGVlbERl
bHRhWToid2hlZWxEZWx0YSJpbiBlPy1lLndoZWVsRGVsdGE6MH0sZGVsdGFaOm51bGwsZGVsdGFN
b2RlOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7Zm9yKHZhciB0PTEsbj0wLG89MCxpPWUubGVuZ3Ro
LGE9aSYtNDtvPGE7KXtmb3IodmFyIHU9TWF0aC5taW4obys0MDk2LGEpO288dTtvKz00KW4rPSh0
Kz1lLmNoYXJDb2RlQXQobykpKyh0Kz1lLmNoYXJDb2RlQXQobysxKSkrKHQrPWUuY2hhckNvZGVB
dChvKzIpKSsodCs9ZS5jaGFyQ29kZUF0KG8rMykpO3QlPXIsbiU9cn1mb3IoO288aTtvKyspbis9
dCs9ZS5jaGFyQ29kZUF0KG8pO3JldHVybiB0JT1yLG4lPXIsdHxuPDwxNn12YXIgcj02NTUyMTtl
LmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
LHIpe3ZhciBvPW51bGw9PXR8fCJib29sZWFuIj09dHlwZW9mIHR8fCIiPT09dDtpZihvKXJldHVy
biIiO3ZhciBhPWlzTmFOKHQpO2lmKHJ8fGF8fDA9PT10fHxpLmhhc093blByb3BlcnR5KGUpJiZp
W2VdKXJldHVybiIiK3Q7aWYoInN0cmluZyI9PXR5cGVvZiB0KXt0PXQudHJpbSgpfXJldHVybiB0
KyJweCJ9dmFyIG89big1OCksaT0obigyKSxvLmlzVW5pdGxlc3NOdW1iZXIpO2UuZXhwb3J0cz1y
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYobnVsbD09ZSly
ZXR1cm4gbnVsbDtpZigxPT09ZS5ub2RlVHlwZSlyZXR1cm4gZTt2YXIgdD1hLmdldChlKTtyZXR1
cm4gdD8odD11KHQpLHQ/aS5nZXROb2RlRnJvbUluc3RhbmNlKHQpOm51bGwpOnZvaWQoImZ1bmN0
aW9uIj09dHlwZW9mIGUucmVuZGVyP28oIjQ0Iik6bygiNDUiLE9iamVjdC5rZXlzKGUpKSl9dmFy
IG89bigzKSxpPShuKDExKSxuKDUpKSxhPW4oMjEpLHU9big3Mik7bigxKSxuKDIpO2UuZXhwb3J0
cz1yfSxmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCxuLHIpe2lmKGUmJiJvYmplY3QiPT10eXBlb2YgZSl7dmFyIG89ZSxpPXZvaWQgMD09PW9b
bl07aSYmbnVsbCE9dCYmKG9bbl09dCl9fWZ1bmN0aW9uIG8oZSx0KXtpZihudWxsPT1lKXJldHVy
biBlO3ZhciBuPXt9O3JldHVybiBpKGUscixuKSxufXZhciBpPShuKDM4KSxuKDc4KSk7bigyKTsi
dW5kZWZpbmVkIiE9dHlwZW9mIHQmJnQuZW52LDEsZS5leHBvcnRzPW99KS5jYWxsKHQsbig4Nykp
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZS5rZXkpe3Zh
ciB0PWlbZS5rZXldfHxlLmtleTtpZigiVW5pZGVudGlmaWVkIiE9PXQpcmV0dXJuIHR9aWYoImtl
eXByZXNzIj09PWUudHlwZSl7dmFyIG49byhlKTtyZXR1cm4gMTM9PT1uPyJFbnRlciI6U3RyaW5n
LmZyb21DaGFyQ29kZShuKX1yZXR1cm4ia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5
cGU/YVtlLmtleUNvZGVdfHwiVW5pZGVudGlmaWVkIjoiIn12YXIgbz1uKDQ0KSxpPXtFc2M6IkVz
Y2FwZSIsU3BhY2ViYXI6IiAiLExlZnQ6IkFycm93TGVmdCIsVXA6IkFycm93VXAiLFJpZ2h0OiJB
cnJvd1JpZ2h0IixEb3duOiJBcnJvd0Rvd24iLERlbDoiRGVsZXRlIixXaW46Ik9TIixNZW51OiJD
b250ZXh0TWVudSIsQXBwczoiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsTW96UHJp
bnRhYmxlS2V5OiJVbmlkZW50aWZpZWQifSxhPXs4OiJCYWNrc3BhY2UiLDk6IlRhYiIsMTI6IkNs
ZWFyIiwxMzoiRW50ZXIiLDE2OiJTaGlmdCIsMTc6IkNvbnRyb2wiLDE4OiJBbHQiLDE5OiJQYXVz
ZSIsMjA6IkNhcHNMb2NrIiwyNzoiRXNjYXBlIiwzMjoiICIsMzM6IlBhZ2VVcCIsMzQ6IlBhZ2VE
b3duIiwzNToiRW5kIiwzNjoiSG9tZSIsMzc6IkFycm93TGVmdCIsMzg6IkFycm93VXAiLDM5OiJB
cnJvd1JpZ2h0Iiw0MDoiQXJyb3dEb3duIiw0NToiSW5zZXJ0Iiw0NjoiRGVsZXRlIiwxMTI6IkYx
IiwxMTM6IkYyIiwxMTQ6IkYzIiwxMTU6IkY0IiwxMTY6IkY1IiwxMTc6IkY2IiwxMTg6IkY3Iiwx
MTk6IkY4IiwxMjA6IkY5IiwxMjE6IkYxMCIsMTIyOiJGMTEiLDEyMzoiRjEyIiwxNDQ6Ik51bUxv
Y2siLDE0NToiU2Nyb2xsTG9jayIsMjI0OiJNZXRhIn07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUs
dCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9ZSYmKHImJmVbcl18fGVbb10pO2lm
KCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0fXZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiBT
eW1ib2wmJlN5bWJvbC5pdGVyYXRvcixvPSJAQGl0ZXJhdG9yIjtlLmV4cG9ydHM9bn0sZnVuY3Rp
b24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtmb3IoO2UmJmUuZmlyc3RDaGlsZDsp
ZT1lLmZpcnN0Q2hpbGQ7cmV0dXJuIGV9ZnVuY3Rpb24gcihlKXtmb3IoO2U7KXtpZihlLm5leHRT
aWJsaW5nKXJldHVybiBlLm5leHRTaWJsaW5nO2U9ZS5wYXJlbnROb2RlfX1mdW5jdGlvbiBvKGUs
dCl7Zm9yKHZhciBvPW4oZSksaT0wLGE9MDtvOyl7aWYoMz09PW8ubm9kZVR5cGUpe2lmKGE9aStv
LnRleHRDb250ZW50Lmxlbmd0aCxpPD10JiZhPj10KXJldHVybntub2RlOm8sb2Zmc2V0OnQtaX07
aT1hfW89bihyKG8pKX19ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlLHQpe3ZhciBuPXt9O3JldHVybiBuW2UudG9Mb3dlckNhc2UoKV09dC50b0xv
d2VyQ2FzZSgpLG5bIldlYmtpdCIrZV09IndlYmtpdCIrdCxuWyJNb3oiK2VdPSJtb3oiK3Qsblsi
bXMiK2VdPSJNUyIrdCxuWyJPIitlXT0ibyIrdC50b0xvd2VyQ2FzZSgpLG59ZnVuY3Rpb24gbyhl
KXtpZih1W2VdKXJldHVybiB1W2VdO2lmKCFhW2VdKXJldHVybiBlO3ZhciB0PWFbZV07Zm9yKHZh
ciBuIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShuKSYmbiBpbiBzKXJldHVybiB1W2VdPXRbbl07
cmV0dXJuIiJ9dmFyIGk9big2KSxhPXthbmltYXRpb25lbmQ6cigiQW5pbWF0aW9uIiwiQW5pbWF0
aW9uRW5kIiksYW5pbWF0aW9uaXRlcmF0aW9uOnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkl0ZXJh
dGlvbiIpLGFuaW1hdGlvbnN0YXJ0OnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvblN0YXJ0IiksdHJh
bnNpdGlvbmVuZDpyKCJUcmFuc2l0aW9uIiwiVHJhbnNpdGlvbkVuZCIpfSx1PXt9LHM9e307aS5j
YW5Vc2VET00mJihzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLCJBbmltYXRp
b25FdmVudCJpbiB3aW5kb3d8fChkZWxldGUgYS5hbmltYXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0
ZSBhLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIGEuYW5pbWF0aW9uc3RhcnQu
YW5pbWF0aW9uKSwiVHJhbnNpdGlvbkV2ZW50ImluIHdpbmRvd3x8ZGVsZXRlIGEudHJhbnNpdGlv
bmVuZC50cmFuc2l0aW9uKSxlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3JldHVybiciJytvKGUpKyciJ312YXIgbz1uKDI4KTtlLmV4cG9ydHM9
cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDY3KTtlLmV4cG9ydHM9ci5y
ZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlv
biBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90
IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lmKCFlKXRocm93
IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVy
KCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1
bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGEoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBl
b2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0
IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlw
ZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVt
ZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFBy
b3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfWZ1bmN0
aW9uIHUoKXt2YXIgZSx0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBd
P2FyZ3VtZW50c1swXToic3RvcmUiLG49YXJndW1lbnRzWzFdLHI9bnx8dCsiU3Vic2NyaXB0aW9u
Iix1PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4ocixhKXtvKHRoaXMsbik7dmFyIHU9aSh0aGlzLGUu
Y2FsbCh0aGlzLHIsYSkpO3JldHVybiB1W3RdPXIuc3RvcmUsdX1yZXR1cm4gYShuLGUpLG4ucHJv
dG90eXBlLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3ZhciBlO3JldHVybiBlPXt9LGVbdF09
dGhpc1t0XSxlW3JdPW51bGwsZX0sbi5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJu
IHMuQ2hpbGRyZW4ub25seSh0aGlzLnByb3BzLmNoaWxkcmVuKX0sbn0ocy5Db21wb25lbnQpO3Jl
dHVybiB1LnByb3BUeXBlcz17c3RvcmU6cC5zdG9yZVNoYXBlLmlzUmVxdWlyZWQsY2hpbGRyZW46
bC5kZWZhdWx0LmVsZW1lbnQuaXNSZXF1aXJlZH0sdS5jaGlsZENvbnRleHRUeXBlcz0oZT17fSxl
W3RdPXAuc3RvcmVTaGFwZS5pc1JlcXVpcmVkLGVbcl09cC5zdWJzY3JpcHRpb25TaGFwZSxlKSx1
fXQuX19lc01vZHVsZT0hMCx0LmNyZWF0ZVByb3ZpZGVyPXU7dmFyIHM9bigxMiksYz1uKDU2KSxs
PXIoYykscD1uKDgyKSxkPW4oNTApO3IoZCk7dC5kZWZhdWx0PXUoKX0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVm
YXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpdC5pbmRleE9m
KHIpPj0wfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09
ZVtyXSk7cmV0dXJuIG59ZnVuY3Rpb24gaShlLHQsbil7Zm9yKHZhciByPXQubGVuZ3RoLTE7cj49
MDtyLS0pe3ZhciBvPXRbcl0oZSk7aWYobylyZXR1cm4gb31yZXR1cm4gZnVuY3Rpb24odCxyKXt0
aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdmFsdWUgb2YgdHlwZSAiK3R5cGVvZiBlKyIgZm9yICIr
bisiIGFyZ3VtZW50IHdoZW4gY29ubmVjdGluZyBjb21wb25lbnQgIityLndyYXBwZWRDb21wb25l
bnROYW1lKyIuIil9fWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4gZT09PXR9ZnVuY3Rpb24gdSgpe3Zh
ciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1sw
XTp7fSx0PWUuY29ubmVjdEhPQyxuPXZvaWQgMD09PXQ/bC5kZWZhdWx0OnQscj1lLm1hcFN0YXRl
VG9Qcm9wc0ZhY3Rvcmllcyx1PXZvaWQgMD09PXI/bS5kZWZhdWx0OnIsYz1lLm1hcERpc3BhdGNo
VG9Qcm9wc0ZhY3RvcmllcyxwPXZvaWQgMD09PWM/aC5kZWZhdWx0OmMsZj1lLm1lcmdlUHJvcHNG
YWN0b3JpZXMsdj12b2lkIDA9PT1mP2cuZGVmYXVsdDpmLHk9ZS5zZWxlY3RvckZhY3RvcnksYj12
b2lkIDA9PT15P18uZGVmYXVsdDp5O3JldHVybiBmdW5jdGlvbihlLHQscil7dmFyIGM9YXJndW1l
bnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOnt9LGw9Yy5w
dXJlLGY9dm9pZCAwPT09bHx8bCxoPWMuYXJlU3RhdGVzRXF1YWwsbT12b2lkIDA9PT1oP2E6aCx5
PWMuYXJlT3duUHJvcHNFcXVhbCxnPXZvaWQgMD09PXk/ZC5kZWZhdWx0OnksXz1jLmFyZVN0YXRl
UHJvcHNFcXVhbCxDPXZvaWQgMD09PV8/ZC5kZWZhdWx0Ol8sRT1jLmFyZU1lcmdlZFByb3BzRXF1
YWwsdz12b2lkIDA9PT1FP2QuZGVmYXVsdDpFLFQ9byhjLFsicHVyZSIsImFyZVN0YXRlc0VxdWFs
IiwiYXJlT3duUHJvcHNFcXVhbCIsImFyZVN0YXRlUHJvcHNFcXVhbCIsImFyZU1lcmdlZFByb3Bz
RXF1YWwiXSksUD1pKGUsdSwibWFwU3RhdGVUb1Byb3BzIikseD1pKHQscCwibWFwRGlzcGF0Y2hU
b1Byb3BzIiksTz1pKHIsdiwibWVyZ2VQcm9wcyIpO3JldHVybiBuKGIscyh7bWV0aG9kTmFtZToi
Y29ubmVjdCIsZ2V0RGlzcGxheU5hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIkNvbm5lY3QoIitlKyIp
In0sc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzOkJvb2xlYW4oZSksaW5pdE1hcFN0YXRlVG9Qcm9w
czpQLGluaXRNYXBEaXNwYXRjaFRvUHJvcHM6eCxpbml0TWVyZ2VQcm9wczpPLHB1cmU6ZixhcmVT
dGF0ZXNFcXVhbDptLGFyZU93blByb3BzRXF1YWw6ZyxhcmVTdGF0ZVByb3BzRXF1YWw6QyxhcmVN
ZXJnZWRQcm9wc0VxdWFsOnd9LFQpKX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPU9iamVjdC5hc3Np
Z258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBu
PWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9O3QuY3JlYXRlQ29ubmVjdD11O3Zh
ciBjPW4oNzkpLGw9cihjKSxwPW4oMTk1KSxkPXIocCksZj1uKDE4OSksaD1yKGYpLHY9bigxOTAp
LG09cih2KSx5PW4oMTkxKSxnPXIoeSksYj1uKDE5MiksXz1yKGIpO3QuZGVmYXVsdD11KCl9LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4iZnVuY3Rpb24i
PT10eXBlb2YgZT8oMCx1LndyYXBNYXBUb1Byb3BzRnVuYykoZSwibWFwRGlzcGF0Y2hUb1Byb3Bz
Iik6dm9pZCAwfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGU/dm9pZCAwOigwLHUud3JhcE1hcFRvUHJv
cHNDb25zdGFudCkoZnVuY3Rpb24oZSl7cmV0dXJue2Rpc3BhdGNoOmV9fSl9ZnVuY3Rpb24gaShl
KXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlPygwLHUud3JhcE1hcFRvUHJvcHNDb25zdGFu
dCkoZnVuY3Rpb24odCl7cmV0dXJuKDAsYS5iaW5kQWN0aW9uQ3JlYXRvcnMpKGUsdCl9KTp2b2lk
IDB9dC5fX2VzTW9kdWxlPSEwLHQud2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzRnVuY3Rpb249cix0
LndoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc01pc3Npbmc9byx0LndoZW5NYXBEaXNwYXRjaFRvUHJv
cHNJc09iamVjdD1pO3ZhciBhPW4oMzApLHU9big4MCk7dC5kZWZhdWx0PVtyLG8saV19LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4iZnVuY3Rpb24iPT10
eXBlb2YgZT8oMCxpLndyYXBNYXBUb1Byb3BzRnVuYykoZSwibWFwU3RhdGVUb1Byb3BzIik6dm9p
ZCAwfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGU/dm9pZCAwOigwLGkud3JhcE1hcFRvUHJvcHNDb25z
dGFudCkoZnVuY3Rpb24oKXtyZXR1cm57fX0pfXQuX19lc01vZHVsZT0hMCx0LndoZW5NYXBTdGF0
ZVRvUHJvcHNJc0Z1bmN0aW9uPXIsdC53aGVuTWFwU3RhdGVUb1Byb3BzSXNNaXNzaW5nPW87dmFy
IGk9big4MCk7dC5kZWZhdWx0PVtyLG9dfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9u
IG8oZSx0LG4pe3JldHVybiBzKHt9LG4sZSx0KX1mdW5jdGlvbiBpKGUpe3JldHVybiBmdW5jdGlv
bih0LG4pe3ZhciByPShuLmRpc3BsYXlOYW1lLG4ucHVyZSksbz1uLmFyZU1lcmdlZFByb3BzRXF1
YWwsaT0hMSxhPXZvaWQgMDtyZXR1cm4gZnVuY3Rpb24odCxuLHUpe3ZhciBzPWUodCxuLHUpO3Jl
dHVybiBpP3ImJm8ocyxhKXx8KGE9cyk6KGk9ITAsYT1zKSxhfX19ZnVuY3Rpb24gYShlKXtyZXR1
cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9pKGUpOnZvaWQgMH1mdW5jdGlvbiB1KGUpe3JldHVybiBl
P3ZvaWQgMDpmdW5jdGlvbigpe3JldHVybiBvOwotfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9T2Jq
ZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3Qr
Kyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX07dC5kZWZhdWx0TWVy
Z2VQcm9wcz1vLHQud3JhcE1lcmdlUHJvcHNGdW5jPWksdC53aGVuTWVyZ2VQcm9wc0lzRnVuY3Rp
b249YSx0LndoZW5NZXJnZVByb3BzSXNPbWl0dGVkPXU7dmFyIGM9big4Myk7cihjKTt0LmRlZmF1
bHQ9W2EsdV19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1
cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPXt9
O2Zvcih2YXIgciBpbiBlKXQuaW5kZXhPZihyKT49MHx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q
cm9wZXJ0eS5jYWxsKGUscikmJihuW3JdPWVbcl0pO3JldHVybiBufWZ1bmN0aW9uIGkoZSx0LG4s
cil7cmV0dXJuIGZ1bmN0aW9uKG8saSl7cmV0dXJuIG4oZShvLGkpLHQocixpKSxpKX19ZnVuY3Rp
b24gYShlLHQsbixyLG8pe2Z1bmN0aW9uIGkobyxpKXtyZXR1cm4gaD1vLHY9aSxtPWUoaCx2KSx5
PXQocix2KSxnPW4obSx5LHYpLGY9ITAsZ31mdW5jdGlvbiBhKCl7cmV0dXJuIG09ZShoLHYpLHQu
ZGVwZW5kc09uT3duUHJvcHMmJih5PXQocix2KSksZz1uKG0seSx2KX1mdW5jdGlvbiB1KCl7cmV0
dXJuIGUuZGVwZW5kc09uT3duUHJvcHMmJihtPWUoaCx2KSksdC5kZXBlbmRzT25Pd25Qcm9wcyYm
KHk9dChyLHYpKSxnPW4obSx5LHYpfWZ1bmN0aW9uIHMoKXt2YXIgdD1lKGgsdikscj0hZCh0LG0p
O3JldHVybiBtPXQsciYmKGc9bihtLHksdikpLGd9ZnVuY3Rpb24gYyhlLHQpe3ZhciBuPSFwKHQs
dikscj0hbChlLGgpO3JldHVybiBoPWUsdj10LG4mJnI/YSgpOm4/dSgpOnI/cygpOmd9dmFyIGw9
by5hcmVTdGF0ZXNFcXVhbCxwPW8uYXJlT3duUHJvcHNFcXVhbCxkPW8uYXJlU3RhdGVQcm9wc0Vx
dWFsLGY9ITEsaD12b2lkIDAsdj12b2lkIDAsbT12b2lkIDAseT12b2lkIDAsZz12b2lkIDA7cmV0
dXJuIGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGY/YyhlLHQpOmkoZSx0KX19ZnVuY3Rpb24gdShlLHQp
e3ZhciBuPXQuaW5pdE1hcFN0YXRlVG9Qcm9wcyxyPXQuaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyx1
PXQuaW5pdE1lcmdlUHJvcHMscz1vKHQsWyJpbml0TWFwU3RhdGVUb1Byb3BzIiwiaW5pdE1hcERp
c3BhdGNoVG9Qcm9wcyIsImluaXRNZXJnZVByb3BzIl0pLGM9bihlLHMpLGw9cihlLHMpLHA9dShl
LHMpLGQ9cy5wdXJlP2E6aTtyZXR1cm4gZChjLGwscCxlLHMpfXQuX19lc01vZHVsZT0hMCx0Lmlt
cHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3Rvcnk9aSx0LnB1cmVGaW5hbFByb3BzU2VsZWN0b3JG
YWN0b3J5PWEsdC5kZWZhdWx0PXU7dmFyIHM9bigxOTMpO3Iocyl9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1
bHQ6ZX19ZnVuY3Rpb24gbyhlLHQsbil7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVk
IHZhbHVlIGZvciAiK3QrIiBpbiAiK24rIi4iKTsibWFwU3RhdGVUb1Byb3BzIiE9PXQmJiJtYXBE
aXNwYXRjaFRvUHJvcHMiIT09dHx8ZS5oYXNPd25Qcm9wZXJ0eSgiZGVwZW5kc09uT3duUHJvcHMi
KXx8KDAsdS5kZWZhdWx0KSgiVGhlIHNlbGVjdG9yIGZvciAiK3QrIiBvZiAiK24rIiBkaWQgbm90
IHNwZWNpZnkgYSB2YWx1ZSBmb3IgZGVwZW5kc09uT3duUHJvcHMuIil9ZnVuY3Rpb24gaShlLHQs
bixyKXtvKGUsIm1hcFN0YXRlVG9Qcm9wcyIsciksbyh0LCJtYXBEaXNwYXRjaFRvUHJvcHMiLHIp
LG8obiwibWVyZ2VQcm9wcyIscil9dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1pO3ZhciBhPW4o
NTApLHU9cihhKX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe2lm
KCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xh
c3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHIoKXt2YXIgZT1bXSx0PVtdO3JldHVybntjbGVh
cjpmdW5jdGlvbigpe3Q9byxlPW99LG5vdGlmeTpmdW5jdGlvbigpe2Zvcih2YXIgbj1lPXQscj0w
O3I8bi5sZW5ndGg7cisrKW5bcl0oKX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR9LHN1YnNjcmli
ZTpmdW5jdGlvbihuKXt2YXIgcj0hMDtyZXR1cm4gdD09PWUmJih0PWUuc2xpY2UoKSksdC5wdXNo
KG4pLGZ1bmN0aW9uKCl7ciYmZSE9PW8mJihyPSExLHQ9PT1lJiYodD1lLnNsaWNlKCkpLHQuc3Bs
aWNlKHQuaW5kZXhPZihuKSwxKSl9fX19dC5fX2VzTW9kdWxlPSEwO3ZhciBvPW51bGwsaT17bm90
aWZ5OmZ1bmN0aW9uKCl7fX0sYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyLG8pe24odGhpcyxl
KSx0aGlzLnN0b3JlPXQsdGhpcy5wYXJlbnRTdWI9cix0aGlzLm9uU3RhdGVDaGFuZ2U9byx0aGlz
LnVuc3Vic2NyaWJlPW51bGwsdGhpcy5saXN0ZW5lcnM9aX1yZXR1cm4gZS5wcm90b3R5cGUuYWRk
TmVzdGVkU3ViPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRyeVN1YnNjcmliZSgpLHRoaXMubGlz
dGVuZXJzLnN1YnNjcmliZShlKX0sZS5wcm90b3R5cGUubm90aWZ5TmVzdGVkU3Vicz1mdW5jdGlv
bigpe3RoaXMubGlzdGVuZXJzLm5vdGlmeSgpfSxlLnByb3RvdHlwZS5pc1N1YnNjcmliZWQ9ZnVu
Y3Rpb24oKXtyZXR1cm4gQm9vbGVhbih0aGlzLnVuc3Vic2NyaWJlKX0sZS5wcm90b3R5cGUudHJ5
U3Vic2NyaWJlPWZ1bmN0aW9uKCl7dGhpcy51bnN1YnNjcmliZXx8KHRoaXMudW5zdWJzY3JpYmU9
dGhpcy5wYXJlbnRTdWI/dGhpcy5wYXJlbnRTdWIuYWRkTmVzdGVkU3ViKHRoaXMub25TdGF0ZUNo
YW5nZSk6dGhpcy5zdG9yZS5zdWJzY3JpYmUodGhpcy5vblN0YXRlQ2hhbmdlKSx0aGlzLmxpc3Rl
bmVycz1yKCkpfSxlLnByb3RvdHlwZS50cnlVbnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMudW5z
dWJzY3JpYmUmJih0aGlzLnVuc3Vic2NyaWJlKCksdGhpcy51bnN1YnNjcmliZT1udWxsLHRoaXMu
bGlzdGVuZXJzLmNsZWFyKCksdGhpcy5saXN0ZW5lcnM9aSl9LGV9KCk7dC5kZWZhdWx0PWF9LGZ1
bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gZT09PXQ/MCE9
PWV8fDAhPT10fHwxL2U9PT0xL3Q6ZSE9PWUmJnQhPT10fWZ1bmN0aW9uIHIoZSx0KXtpZihuKGUs
dCkpcmV0dXJuITA7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZXx8Im9iamVjdCIhPXR5
cGVvZiB0fHxudWxsPT09dClyZXR1cm4hMTt2YXIgcj1PYmplY3Qua2V5cyhlKSxpPU9iamVjdC5r
ZXlzKHQpO2lmKHIubGVuZ3RoIT09aS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBhPTA7YTxyLmxl
bmd0aDthKyspaWYoIW8uY2FsbCh0LHJbYV0pfHwhbihlW3JbYV1dLHRbclthXV0pKXJldHVybiEx
O3JldHVybiEwfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9cjt2YXIgbz1PYmplY3QucHJvdG90
eXBlLmhhc093blByb3BlcnR5fSxmdW5jdGlvbihlLHQsbil7InVuZGVmaW5lZCI9PXR5cGVvZiBQ
cm9taXNlJiYobigyMTApLmVuYWJsZSgpLHdpbmRvdy5Qcm9taXNlPW4oMjA5KSksbigyMTIpLE9i
amVjdC5hc3NpZ249bigyMDgpfSxmdW5jdGlvbihlLHQpeyhmdW5jdGlvbih0KXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gbihlKXt1Lmxlbmd0aHx8KGEoKSxzPSEwKSx1W3UubGVuZ3RoXT1lfWZ1bmN0
aW9uIHIoKXtmb3IoO2M8dS5sZW5ndGg7KXt2YXIgZT1jO2lmKGMrPTEsdVtlXS5jYWxsKCksYz5s
KXtmb3IodmFyIHQ9MCxuPXUubGVuZ3RoLWM7dDxuO3QrKyl1W3RdPXVbdCtjXTt1Lmxlbmd0aC09
YyxjPTB9fXUubGVuZ3RoPTAsYz0wLHM9ITF9ZnVuY3Rpb24gbyhlKXt2YXIgdD0xLG49bmV3IGQo
ZSkscj1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIik7cmV0dXJuIG4ub2JzZXJ2ZShyLHtjaGFy
YWN0ZXJEYXRhOiEwfSksZnVuY3Rpb24oKXt0PS10LHIuZGF0YT10fX1mdW5jdGlvbiBpKGUpe3Jl
dHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtjbGVhclRpbWVvdXQobiksY2xlYXJJbnRlcnZh
bChyKSxlKCl9dmFyIG49c2V0VGltZW91dCh0LDApLHI9c2V0SW50ZXJ2YWwodCw1MCl9fWUuZXhw
b3J0cz1uO3ZhciBhLHU9W10scz0hMSxjPTAsbD0xMDI0LHA9InVuZGVmaW5lZCIhPXR5cGVvZiB0
P3Q6c2VsZixkPXAuTXV0YXRpb25PYnNlcnZlcnx8cC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO2E9
ImZ1bmN0aW9uIj09dHlwZW9mIGQ/byhyKTppKHIpLG4ucmVxdWVzdEZsdXNoPWEsbi5tYWtlUmVx
dWVzdENhbGxGcm9tVGltZXI9aX0pLmNhbGwodCxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpKX0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUmJmUuX19lc01v
ZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKU9iamVjdC5w
cm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYodFtuXT1lW25dKTtyZXR1cm4gdC5k
ZWZhdWx0PWUsdH1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEw
fSksdC5jbGVhckNvbXBsZXRlZD10LmNvbXBsZXRlQWxsPXQuY29tcGxldGVUb2RvPXQuZWRpdFRv
ZG89dC5kZWxldGVUb2RvPXQuYWRkVG9kbz12b2lkIDA7dmFyIG89big4NSksaT1yKG8pO3QuYWRk
VG9kbz1mdW5jdGlvbihlKXtyZXR1cm57dHlwZTppLkFERF9UT0RPLHRleHQ6ZX19LHQuZGVsZXRl
VG9kbz1mdW5jdGlvbihlKXtyZXR1cm57dHlwZTppLkRFTEVURV9UT0RPLGlkOmV9fSx0LmVkaXRU
b2RvPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3R5cGU6aS5FRElUX1RPRE8saWQ6ZSx0ZXh0OnR9fSx0
LmNvbXBsZXRlVG9kbz1mdW5jdGlvbihlKXtyZXR1cm57dHlwZTppLkNPTVBMRVRFX1RPRE8saWQ6
ZX19LHQuY29tcGxldGVBbGw9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTppLkNPTVBMRVRFX0FMTH19
LHQuY2xlYXJDb21wbGV0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTppLkNMRUFSX0NPTVBMRVRF
RH19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUm
JmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFu
Y2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVu
Y3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0
aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQi
KTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9
ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBu
ZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBm
dW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5w
cm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFBy
b3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9ZnVuY3Rpb24gdShlLHQsbil7cmV0dXJuIHQg
aW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29u
ZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9T2JqZWN0LmRlZmluZVByb3BlcnR5
KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBzLGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBl
KGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxl
PXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRh
YmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9u
KHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksbD1uKDEy
KSxwPXIobCksZD1uKDMxKSxmPXIoZCksaD1uKDg2KSx2PShzPXt9LHUocyxoLlNIT1dfQUxMLCJB
bGwiKSx1KHMsaC5TSE9XX0FDVElWRSwiQWN0aXZlIiksdShzLGguU0hPV19DT01QTEVURUQsIkNv
bXBsZXRlZCIpLHMpLG09ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBvKHRoaXMsdCks
aSh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlz
LGFyZ3VtZW50cykpfXJldHVybiBhKHQsZSksYyh0LFt7a2V5OiJyZW5kZXJUb2RvQ291bnQiLHZh
bHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcy5hY3RpdmVDb3VudCx0PTE9PT1lPyJpdGVt
IjoiaXRlbXMiO3JldHVybiBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFt
ZToidG9kby1jb3VudCJ9LHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzdHJvbmciLG51bGwsZXx8
Ik5vIiksIiAiLHQsIiBsZWZ0Iil9fSx7a2V5OiJyZW5kZXJGaWx0ZXJMaW5rIix2YWx1ZTpmdW5j
dGlvbihlKXt2YXIgdD12W2VdLG49dGhpcy5wcm9wcyxyPW4uZmlsdGVyLG89bi5vblNob3c7cmV0
dXJuIHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJhIix7Y2xhc3NOYW1lOigwLGYuZGVmYXVsdCko
e3NlbGVjdGVkOmU9PT1yfSksc3R5bGU6e2N1cnNvcjoicG9pbnRlciJ9LG9uQ2xpY2s6ZnVuY3Rp
b24oKXtyZXR1cm4gbyhlKX19LHQpfX0se2tleToicmVuZGVyQ2xlYXJCdXR0b24iLHZhbHVlOmZ1
bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuY29tcGxldGVkQ291bnQsbj1lLm9uQ2xlYXJD
b21wbGV0ZWQ7aWYodD4wKXJldHVybiBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7
Y2xhc3NOYW1lOiJjbGVhci1jb21wbGV0ZWQiLG9uQ2xpY2s6bn0sIkNsZWFyIGNvbXBsZXRlZCIp
fX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHAuZGVm
YXVsdC5jcmVhdGVFbGVtZW50KCJmb290ZXIiLHtjbGFzc05hbWU6ImZvb3RlciJ9LHRoaXMucmVu
ZGVyVG9kb0NvdW50KCkscC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInVsIix7Y2xhc3NOYW1lOiJm
aWx0ZXJzIn0sW2guU0hPV19BTEwsaC5TSE9XX0FDVElWRSxoLlNIT1dfQ09NUExFVEVEXS5tYXAo
ZnVuY3Rpb24odCl7cmV0dXJuIHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJsaSIse2tleTp0fSxl
LnJlbmRlckZpbHRlckxpbmsodCkpfSkpLHRoaXMucmVuZGVyQ2xlYXJCdXR0b24oKSl9fV0pLHR9
KGwuQ29tcG9uZW50KTttLnByb3BUeXBlcz17Y29tcGxldGVkQ291bnQ6bC5Qcm9wVHlwZXMubnVt
YmVyLmlzUmVxdWlyZWQsYWN0aXZlQ291bnQ6bC5Qcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQs
ZmlsdGVyOmwuUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLG9uQ2xlYXJDb21wbGV0ZWQ6bC5Q
cm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLG9uU2hvdzpsLlByb3BUeXBlcy5mdW5jLmlzUmVxdWly
ZWR9LHQuZGVmYXVsdD1tfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtp
ZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNs
YXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVy
ZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3Qg
YmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10
eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxs
IT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJl
IG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5j
cmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEs
d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/
T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9T2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB1PWZ1bmN0aW9uKCl7ZnVuY3Rp
b24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVy
YWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53
cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5j
dGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLHM9
bigxMiksYz1yKHMpLGw9big4NCkscD1yKGwpLGQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3Zh
ciBlLG4scixhO28odGhpcyx0KTtmb3IodmFyIHU9YXJndW1lbnRzLmxlbmd0aCxzPUFycmF5KHUp
LGM9MDtjPHU7YysrKXNbY109YXJndW1lbnRzW2NdO3JldHVybiBuPXI9aSh0aGlzLChlPXQuX19w
cm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29u
Y2F0KHMpKSksci5oYW5kbGVTYXZlPWZ1bmN0aW9uKGUpezAhPT1lLmxlbmd0aCYmci5wcm9wcy5h
ZGRUb2RvKGUpfSxhPW4saShyLGEpfXJldHVybiBhKHQsZSksdSh0LFt7a2V5OiJyZW5kZXIiLHZh
bHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGMuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJoZWFkZXIiLHtj
bGFzc05hbWU6ImhlYWRlciJ9LGMuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJoMSIsbnVsbCwidG9k
b3MiKSxjLmRlZmF1bHQuY3JlYXRlRWxlbWVudChwLmRlZmF1bHQse25ld1RvZG86ITAsb25TYXZl
OnRoaXMuaGFuZGxlU2F2ZSxwbGFjZWhvbGRlcjoiV2hhdCBuZWVkcyB0byBiZSBkb25lPyJ9KSl9
fV0pLHR9KHMuQ29tcG9uZW50KTtkLnByb3BUeXBlcz17YWRkVG9kbzpzLlByb3BUeXBlcy5mdW5j
LmlzUmVxdWlyZWR9LHQuZGVmYXVsdD1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9u
IG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3Qg
Y2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cg
bmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIo
KSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVu
Y3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVv
ZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3Qg
ZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBl
PU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1l
cmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJv
dG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9ZnVuY3Rp
b24gdShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1
ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBzLGM9
T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3Ro
O3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUu
aGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbD1mdW5jdGlv
bigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtu
XTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUi
aW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1y
ZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxy
KSx0fX0oKSxwPW4oMTIpLGQ9cihwKSxmPW4oMjAyKSxoPXIoZiksdj1uKDE5OSksbT1yKHYpLHk9
big4NiksZz0ocz17fSx1KHMseS5TSE9XX0FMTCxmdW5jdGlvbigpe3JldHVybiEwfSksdShzLHku
U0hPV19BQ1RJVkUsZnVuY3Rpb24oZSl7cmV0dXJuIWUuY29tcGxldGVkfSksdShzLHkuU0hPV19D
T01QTEVURUQsZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29tcGxldGVkfSkscyksYj1mdW5jdGlvbihl
KXtmdW5jdGlvbiB0KCl7dmFyIGUsbixyLGE7byh0aGlzLHQpO2Zvcih2YXIgdT1hcmd1bWVudHMu
bGVuZ3RoLHM9QXJyYXkodSksYz0wO2M8dTtjKyspc1tjXT1hcmd1bWVudHNbY107cmV0dXJuIG49
cj1pKHRoaXMsKGU9dC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbC5h
cHBseShlLFt0aGlzXS5jb25jYXQocykpKSxyLnN0YXRlPXtmaWx0ZXI6eS5TSE9XX0FMTH0sci5o
YW5kbGVDbGVhckNvbXBsZXRlZD1mdW5jdGlvbigpe3IucHJvcHMuYWN0aW9ucy5jbGVhckNvbXBs
ZXRlZCgpfSxyLmhhbmRsZVNob3c9ZnVuY3Rpb24oZSl7ci5zZXRTdGF0ZSh7ZmlsdGVyOmV9KX0s
YT1uLGkocixhKX1yZXR1cm4gYSh0LGUpLGwodCxbe2tleToicmVuZGVyVG9nZ2xlQWxsIix2YWx1
ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLG49dC50b2RvcyxyPXQuYWN0aW9ucztpZihu
Lmxlbmd0aD4wKXJldHVybiBkLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHtjbGFzc05h
bWU6InRvZ2dsZS1hbGwiLHR5cGU6ImNoZWNrYm94IixjaGVja2VkOmU9PT1uLmxlbmd0aCxvbkNo
YW5nZTpyLmNvbXBsZXRlQWxsfSl9fSx7a2V5OiJyZW5kZXJGb290ZXIiLHZhbHVlOmZ1bmN0aW9u
KGUpe3ZhciB0PXRoaXMucHJvcHMudG9kb3Msbj10aGlzLnN0YXRlLmZpbHRlcixyPXQubGVuZ3Ro
LWU7aWYodC5sZW5ndGgpcmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KG0uZGVmYXVsdCx7
Y29tcGxldGVkQ291bnQ6ZSxhY3RpdmVDb3VudDpyLGZpbHRlcjpuLG9uQ2xlYXJDb21wbGV0ZWQ6
dGhpcy5oYW5kbGVDbGVhckNvbXBsZXRlZC5iaW5kKHRoaXMpLG9uU2hvdzp0aGlzLmhhbmRsZVNo
b3cuYmluZCh0aGlzKX0pfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRo
aXMucHJvcHMsdD1lLnRvZG9zLG49ZS5hY3Rpb25zLHI9dGhpcy5zdGF0ZS5maWx0ZXIsbz10LmZp
bHRlcihnW3JdKSxpPXQucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuY29tcGxldGVkP2Ur
MTplfSwwKTtyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNlY3Rpb24iLHtjbGFzc05h
bWU6Im1haW4ifSx0aGlzLnJlbmRlclRvZ2dsZUFsbChpKSxkLmRlZmF1bHQuY3JlYXRlRWxlbWVu
dCgidWwiLHtjbGFzc05hbWU6InRvZG8tbGlzdCJ9LG8ubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBk
LmRlZmF1bHQuY3JlYXRlRWxlbWVudChoLmRlZmF1bHQsYyh7a2V5OmUuaWQsdG9kbzplfSxuKSl9
KSksdGhpcy5yZW5kZXJGb290ZXIoaSkpfX1dKSx0fShwLkNvbXBvbmVudCk7Yi5wcm9wVHlwZXM9
e3RvZG9zOnAuUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsYWN0aW9uczpwLlByb3BUeXBlcy5v
YmplY3QuaXNSZXF1aXJlZH0sdC5kZWZhdWx0PWJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVu
Y3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNh
bm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0
aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBz
dXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQm
JiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9
dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24g
bXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90
b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUs
ZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5z
ZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1P
YmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHU9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBy
PXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZh
bHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxy
KX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZl
KHQsciksdH19KCkscz1uKDEyKSxjPXIocyksbD1uKDMxKSxwPXIobCksZD1uKDg0KSxmPXIoZCks
aD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbixyLGE7byh0aGlzLHQpO2Zvcih2YXIg
dT1hcmd1bWVudHMubGVuZ3RoLHM9QXJyYXkodSksYz0wO2M8dTtjKyspc1tjXT1hcmd1bWVudHNb
Y107cmV0dXJuIG49cj1pKHRoaXMsKGU9dC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVP
Zih0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQocykpKSxyLnN0YXRlPXtlZGl0aW5nOiEx
fSxyLmhhbmRsZURvdWJsZUNsaWNrPWZ1bmN0aW9uKCl7ci5zZXRTdGF0ZSh7ZWRpdGluZzohMH0p
fSxyLmhhbmRsZVNhdmU9ZnVuY3Rpb24oZSx0KXswPT09dC5sZW5ndGg/ci5wcm9wcy5kZWxldGVU
b2RvKGUpOnIucHJvcHMuZWRpdFRvZG8oZSx0KSxyLnNldFN0YXRlKHtlZGl0aW5nOiExfSl9LGE9
bixpKHIsYSl9cmV0dXJuIGEodCxlKSx1KHQsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24o
KXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxuPXQudG9kbyxyPXQuY29tcGxldGVUb2RvLG89dC5k
ZWxldGVUb2RvLGk9dm9pZCAwO3JldHVybiBpPXRoaXMuc3RhdGUuZWRpdGluZz9jLmRlZmF1bHQu
Y3JlYXRlRWxlbWVudChmLmRlZmF1bHQse3RleHQ6bi50ZXh0LGVkaXRpbmc6dGhpcy5zdGF0ZS5l
ZGl0aW5nLG9uU2F2ZTpmdW5jdGlvbih0KXtyZXR1cm4gZS5oYW5kbGVTYXZlKG4uaWQsdCl9fSk6
Yy5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToidmlldyJ9LGMuZGVmYXVs
dC5jcmVhdGVFbGVtZW50KCJpbnB1dCIse2NsYXNzTmFtZToidG9nZ2xlIix0eXBlOiJjaGVja2Jv
eCIsY2hlY2tlZDpuLmNvbXBsZXRlZCxvbkNoYW5nZTpmdW5jdGlvbigpe3JldHVybiByKG4uaWQp
fX0pLGMuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJsYWJlbCIse29uRG91YmxlQ2xpY2s6dGhpcy5o
YW5kbGVEb3VibGVDbGlja30sbi50ZXh0KSxjLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiYnV0dG9u
Iix7Y2xhc3NOYW1lOiJkZXN0cm95IixvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIG8obi5pZCl9
fSkpLGMuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJsaSIse2NsYXNzTmFtZTooMCxwLmRlZmF1bHQp
KHtjb21wbGV0ZWQ6bi5jb21wbGV0ZWQsZWRpdGluZzp0aGlzLnN0YXRlLmVkaXRpbmd9KX0saSl9
fV0pLHR9KHMuQ29tcG9uZW50KTtoLnByb3BUeXBlcz17dG9kbzpzLlByb3BUeXBlcy5vYmplY3Qu
aXNSZXF1aXJlZCxlZGl0VG9kbzpzLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsZGVsZXRlVG9k
bzpzLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsY29tcGxldGVUb2RvOnMuUHJvcFR5cGVzLmZ1
bmMuaXNSZXF1aXJlZH0sdC5kZWZhdWx0PWh9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVs
bCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwo
ZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9ZnVuY3Rpb24gbyhlKXtyZXR1
cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHQs
Il9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPW4oMTIpLGE9byhpKSx1PW4oMzApLHM9big4
MSksYz1uKDIwMCksbD1vKGMpLHA9bigyMDEpLGQ9byhwKSxmPW4oMTk4KSxoPXIoZiksdj1mdW5j
dGlvbihlKXt2YXIgdD1lLnRvZG9zLG49ZS5hY3Rpb25zO3JldHVybiBhLmRlZmF1bHQuY3JlYXRl
RWxlbWVudCgiZGl2IixudWxsLGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGwuZGVmYXVsdCx7YWRk
VG9kbzpuLmFkZFRvZG99KSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChkLmRlZmF1bHQse3RvZG9z
OnQsYWN0aW9uczpufSkpfTt2LnByb3BUeXBlcz17dG9kb3M6aS5Qcm9wVHlwZXMuYXJyYXkuaXNS
ZXF1aXJlZCxhY3Rpb25zOmkuUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkfTt2YXIgbT1mdW5j
dGlvbihlKXtyZXR1cm57dG9kb3M6ZS50b2Rvc319LHk9ZnVuY3Rpb24oZSl7cmV0dXJue2FjdGlv
bnM6KDAsdS5iaW5kQWN0aW9uQ3JlYXRvcnMpKGgsZSl9fTt0LmRlZmF1bHQ9KDAscy5jb25uZWN0
KShtLHkpKHYpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0
dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBvPW4oMTIpLGk9cihvKSxhPW4o
MTIzKSx1PW4oMzApLHM9big4MSksYz1uKDIwMyksbD1yKGMpLHA9bigyMDUpLGQ9cihwKTtuKDIw
Nyk7dmFyIGY9KDAsdS5jcmVhdGVTdG9yZSkoZC5kZWZhdWx0KTsoMCxhLnJlbmRlcikoaS5kZWZh
dWx0LmNyZWF0ZUVsZW1lbnQocy5Qcm92aWRlcix7c3RvcmU6Zn0saS5kZWZhdWx0LmNyZWF0ZUVs
ZW1lbnQobC5kZWZhdWx0LG51bGwpKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm9vdCIpKX0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9f
ZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVs
ZSIse3ZhbHVlOiEwfSk7dmFyIG89bigzMCksaT1uKDIwNiksYT1yKGkpLHU9KDAsby5jb21iaW5l
UmVkdWNlcnMpKHt0b2RvczphLmRlZmF1bHR9KTt0LmRlZmF1bHQ9dX0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIg
dD0wLG49QXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKW5bdF09ZVt0XTtyZXR1cm4gbn1y
ZXR1cm4gQXJyYXkuZnJvbShlKX1mdW5jdGlvbiBvKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDw9
MHx8dm9pZCAwPT09YXJndW1lbnRzWzBdP3M6YXJndW1lbnRzWzBdLHQ9YXJndW1lbnRzWzFdLG49
ZnVuY3Rpb24oKXtzd2l0Y2godC50eXBlKXtjYXNlIHUuQUREX1RPRE86cmV0dXJue3Y6W10uY29u
Y2F0KHIoZSksW3tpZDplLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heCh0Lmlk
LGUpfSwtMSkrMSxjb21wbGV0ZWQ6ITEsdGV4dDp0LnRleHR9XSl9O2Nhc2UgdS5ERUxFVEVfVE9E
TzpyZXR1cm57djplLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5pZCE9PXQuaWR9KX07Y2Fz
ZSB1LkVESVRfVE9ETzpyZXR1cm57djplLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXQu
aWQ/YSh7fSxlLHt0ZXh0OnQudGV4dH0pOmV9KX07Y2FzZSB1LkNPTVBMRVRFX1RPRE86cmV0dXJu
e3Y6ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT10LmlkP2Eoe30sZSx7Y29tcGxldGVk
OiFlLmNvbXBsZXRlZH0pOmV9KX07Y2FzZSB1LkNPTVBMRVRFX0FMTDp2YXIgbj1lLmV2ZXJ5KGZ1
bmN0aW9uKGUpe3JldHVybiBlLmNvbXBsZXRlZH0pO3JldHVybnt2OmUubWFwKGZ1bmN0aW9uKGUp
e3JldHVybiBhKHt9LGUse2NvbXBsZXRlZDohbn0pfSl9O2Nhc2UgdS5DTEVBUl9DT01QTEVURUQ6
cmV0dXJue3Y6ZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29tcGxldGVkPT09ITF9KX07
ZGVmYXVsdDpyZXR1cm57djplfX19KCk7aWYoIm9iamVjdCI9PT0oInVuZGVmaW5lZCI9PXR5cGVv
ZiBuPyJ1bmRlZmluZWQiOmkobikpKXJldHVybiBuLnZ9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQs
Il9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wm
JiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBl
b2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUu
Y29uc3RydWN0b3I9PT1TeW1ib2w/InN5bWJvbCI6dHlwZW9mIGV9LGE9T2JqZWN0LmFzc2lnbnx8
ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJn
dW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHku
Y2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX07dC5kZWZhdWx0PW87dmFyIHU9big4NSks
cz1bXX0sZnVuY3Rpb24oZSx0KXt9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IG4oZSl7aWYobnVsbD09PWV8fHZvaWQgMD09PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0
LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4g
T2JqZWN0KGUpfWZ1bmN0aW9uIHIoKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFy
IGU9bmV3IFN0cmluZygiYWJjIik7aWYoZVs1XT0iZGUiLCI1Ij09PU9iamVjdC5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKGUpWzBdKXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFsiXyIr
U3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1l
cyh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KTtpZigiMDEyMzQ1Njc4OSIhPT1yLmpv
aW4oIiIpKXJldHVybiExO3ZhciBvPXt9O3JldHVybiJhYmNkZWZnaGlqa2xtbm9wcXJzdCIuc3Bs
aXQoIiIpLmZvckVhY2goZnVuY3Rpb24oZSl7b1tlXT1lfSksImFiY2RlZmdoaWprbG1ub3BxcnN0
Ij09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sbykpLmpvaW4oIiIpfWNhdGNoKGkpe3Jl
dHVybiExfX12YXIgbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGk9T2JqZWN0LnBy
b3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtlLmV4cG9ydHM9cigpP09iamVjdC5hc3NpZ246
ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIsYSx1PW4oZSkscz0xO3M8YXJndW1lbnRzLmxlbmd0aDtz
Kyspe3I9T2JqZWN0KGFyZ3VtZW50c1tzXSk7Zm9yKHZhciBjIGluIHIpby5jYWxsKHIsYykmJih1
W2NdPXJbY10pO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe2E9T2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scyhyKTtmb3IodmFyIGw9MDtsPGEubGVuZ3RoO2wrKylpLmNhbGwocixh
W2xdKSYmKHVbYVtsXV09clthW2xdXSl9fXJldHVybiB1fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PW5ldyBvKG8uXzYxKTtyZXR1cm4gdC5fODE9MSx0
Ll82NT1lLHR9dmFyIG89big4OCk7ZS5leHBvcnRzPW87dmFyIGk9cighMCksYT1yKCExKSx1PXIo
bnVsbCkscz1yKHZvaWQgMCksYz1yKDApLGw9cigiIik7by5yZXNvbHZlPWZ1bmN0aW9uKGUpe2lm
KGUgaW5zdGFuY2VvZiBvKXJldHVybiBlO2lmKG51bGw9PT1lKXJldHVybiB1O2lmKHZvaWQgMD09
PWUpcmV0dXJuIHM7aWYoZT09PSEwKXJldHVybiBpO2lmKGU9PT0hMSlyZXR1cm4gYTtpZigwPT09
ZSlyZXR1cm4gYztpZigiIj09PWUpcmV0dXJuIGw7aWYoIm9iamVjdCI9PXR5cGVvZiBlfHwiZnVu
Y3Rpb24iPT10eXBlb2YgZSl0cnl7dmFyIHQ9ZS50aGVuO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0
KXJldHVybiBuZXcgbyh0LmJpbmQoZSkpfWNhdGNoKG4pe3JldHVybiBuZXcgbyhmdW5jdGlvbihl
LHQpe3Qobil9KX1yZXR1cm4gcihlKX0sby5hbGw9ZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkucHJv
dG90eXBlLnNsaWNlLmNhbGwoZSk7cmV0dXJuIG5ldyBvKGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24g
cihhLHUpe2lmKHUmJigib2JqZWN0Ij09dHlwZW9mIHV8fCJmdW5jdGlvbiI9PXR5cGVvZiB1KSl7
aWYodSBpbnN0YW5jZW9mIG8mJnUudGhlbj09PW8ucHJvdG90eXBlLnRoZW4pe2Zvcig7Mz09PXUu
XzgxOyl1PXUuXzY1O3JldHVybiAxPT09dS5fODE/cihhLHUuXzY1KTooMj09PXUuXzgxJiZuKHUu
XzY1KSx2b2lkIHUudGhlbihmdW5jdGlvbihlKXtyKGEsZSl9LG4pKX12YXIgcz11LnRoZW47aWYo
ImZ1bmN0aW9uIj09dHlwZW9mIHMpe3ZhciBjPW5ldyBvKHMuYmluZCh1KSk7cmV0dXJuIHZvaWQg
Yy50aGVuKGZ1bmN0aW9uKGUpe3IoYSxlKX0sbil9fXRbYV09dSwwPT09LS1pJiZlKHQpfWlmKDA9
PT10Lmxlbmd0aClyZXR1cm4gZShbXSk7Zm9yKHZhciBpPXQubGVuZ3RoLGE9MDthPHQubGVuZ3Ro
O2ErKylyKGEsdFthXSl9KX0sby5yZWplY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBvKGZ1bmN0
aW9uKHQsbil7bihlKX0pfSxvLnJhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBvKGZ1bmN0aW9u
KHQsbil7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe28ucmVzb2x2ZShlKS50aGVuKHQsbil9KX0pfSxv
LnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50aGVuKG51bGwsZSl9fSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtjPSExLHUuXzEwPW51bGws
dS5fOTc9bnVsbH1mdW5jdGlvbiBvKGUpe2Z1bmN0aW9uIHQodCl7KGUuYWxsUmVqZWN0aW9uc3x8
YShwW3RdLmVycm9yLGUud2hpdGVsaXN0fHxzKSkmJihwW3RdLmRpc3BsYXlJZD1sKyssZS5vblVu
aGFuZGxlZD8ocFt0XS5sb2dnZWQ9ITAsZS5vblVuaGFuZGxlZChwW3RdLmRpc3BsYXlJZCxwW3Rd
LmVycm9yKSk6KHBbdF0ubG9nZ2VkPSEwLGkocFt0XS5kaXNwbGF5SWQscFt0XS5lcnJvcikpKX1m
dW5jdGlvbiBuKHQpe3BbdF0ubG9nZ2VkJiYoZS5vbkhhbmRsZWQ/ZS5vbkhhbmRsZWQocFt0XS5k
aXNwbGF5SWQscFt0XS5lcnJvcik6cFt0XS5vblVuaGFuZGxlZHx8KGNvbnNvbGUud2FybigiUHJv
bWlzZSBSZWplY3Rpb24gSGFuZGxlZCAoaWQ6ICIrcFt0XS5kaXNwbGF5SWQrIik6IiksY29uc29s
ZS53YXJuKCcgIFRoaXMgbWVhbnMgeW91IGNhbiBpZ25vcmUgYW55IHByZXZpb3VzIG1lc3NhZ2Vz
IG9mIHRoZSBmb3JtICJQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb24iIHdpdGgg
aWQgJytwW3RdLmRpc3BsYXlJZCsiLiIpKSl9ZT1lfHx7fSxjJiZyKCksYz0hMDt2YXIgbz0wLGw9
MCxwPXt9O3UuXzEwPWZ1bmN0aW9uKGUpezI9PT1lLl84MSYmcFtlLl83Ml0mJihwW2UuXzcyXS5s
b2dnZWQ/bihlLl83Mik6Y2xlYXJUaW1lb3V0KHBbZS5fNzJdLnRpbWVvdXQpLGRlbGV0ZSBwW2Uu
XzcyXSl9LHUuXzk3PWZ1bmN0aW9uKGUsbil7MD09PWUuXzQ1JiYoZS5fNzI9bysrLHBbZS5fNzJd
PXtkaXNwbGF5SWQ6bnVsbCxlcnJvcjpuLHRpbWVvdXQ6c2V0VGltZW91dCh0LmJpbmQobnVsbCxl
Ll83MiksYShuLHMpPzEwMDoyZTMpLGxvZ2dlZDohMX0pfX1mdW5jdGlvbiBpKGUsdCl7Y29uc29s
ZS53YXJuKCJQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb24gKGlkOiAiK2UrIik6
Iik7dmFyIG49KHQmJih0LnN0YWNrfHx0KSkrIiI7bi5zcGxpdCgiXG4iKS5mb3JFYWNoKGZ1bmN0
aW9uKGUpe2NvbnNvbGUud2FybigiICAiK2UpfSl9ZnVuY3Rpb24gYShlLHQpe3JldHVybiB0LnNv
bWUoZnVuY3Rpb24odCl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0fSl9dmFyIHU9big4OCkscz1bUmVm
ZXJlbmNlRXJyb3IsVHlwZUVycm9yLFJhbmdlRXJyb3JdLGM9ITE7dC5kaXNhYmxlPXIsdC5lbmFi
bGU9b30sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUud2VicGFj
a1BvbHlmaWxsfHwoZS5kZXByZWNhdGU9ZnVuY3Rpb24oKXt9LGUucGF0aHM9W10sZS5jaGlsZHJl
bj1bXSxlLndlYnBhY2tQb2x5ZmlsbD0xKSxlfX0sZnVuY3Rpb24oZSx0KXshZnVuY3Rpb24oZSl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlJiYoZT1TdHJp
bmcoZSkpLC9bXmEtejAtOVwtIyQlJicqKy5cXl9gfH5dL2kudGVzdChlKSl0aHJvdyBuZXcgVHlw
ZUVycm9yKCJJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZSIpO3JldHVybiBl
LnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGUmJihl
PVN0cmluZyhlKSksZX1mdW5jdGlvbiByKGUpe3ZhciB0PXtuZXh0OmZ1bmN0aW9uKCl7dmFyIHQ9
ZS5zaGlmdCgpO3JldHVybntkb25lOnZvaWQgMD09PXQsdmFsdWU6dH19fTtyZXR1cm4gdi5pdGVy
YWJsZSYmKHRbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0fSksdH1mdW5jdGlv
biBvKGUpe3RoaXMubWFwPXt9LGUgaW5zdGFuY2VvZiBvP2UuZm9yRWFjaChmdW5jdGlvbihlLHQp
e3RoaXMuYXBwZW5kKHQsZSl9LHRoaXMpOmUmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUp
LmZvckVhY2goZnVuY3Rpb24odCl7dGhpcy5hcHBlbmQodCxlW3RdKX0sdGhpcyl9ZnVuY3Rpb24g
aShlKXtyZXR1cm4gZS5ib2R5VXNlZD9Qcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJBbHJl
YWR5IHJlYWQiKSk6dm9pZChlLmJvZHlVc2VkPSEwKX1mdW5jdGlvbiBhKGUpe3JldHVybiBuZXcg
UHJvbWlzZShmdW5jdGlvbih0LG4pe2Uub25sb2FkPWZ1bmN0aW9uKCl7dChlLnJlc3VsdCl9LGUu
b25lcnJvcj1mdW5jdGlvbigpe24oZS5lcnJvcil9fSl9ZnVuY3Rpb24gdShlKXt2YXIgdD1uZXcg
RmlsZVJlYWRlcjtyZXR1cm4gdC5yZWFkQXNBcnJheUJ1ZmZlcihlKSxhKHQpfWZ1bmN0aW9uIHMo
ZSl7dmFyIHQ9bmV3IEZpbGVSZWFkZXI7cmV0dXJuIHQucmVhZEFzVGV4dChlKSxhKHQpfWZ1bmN0
aW9uIGMoKXtyZXR1cm4gdGhpcy5ib2R5VXNlZD0hMSx0aGlzLl9pbml0Qm9keT1mdW5jdGlvbihl
KXtpZih0aGlzLl9ib2R5SW5pdD1lLCJzdHJpbmciPT10eXBlb2YgZSl0aGlzLl9ib2R5VGV4dD1l
O2Vsc2UgaWYodi5ibG9iJiZCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpKXRoaXMuX2Jv
ZHlCbG9iPWU7ZWxzZSBpZih2LmZvcm1EYXRhJiZGb3JtRGF0YS5wcm90b3R5cGUuaXNQcm90b3R5
cGVPZihlKSl0aGlzLl9ib2R5Rm9ybURhdGE9ZTtlbHNlIGlmKHYuc2VhcmNoUGFyYW1zJiZVUkxT
ZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSkpdGhpcy5fYm9keVRleHQ9ZS50
b1N0cmluZygpO2Vsc2UgaWYoZSl7aWYoIXYuYXJyYXlCdWZmZXJ8fCFBcnJheUJ1ZmZlci5wcm90
b3R5cGUuaXNQcm90b3R5cGVPZihlKSl0aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIEJvZHlJ
bml0IHR5cGUiKX1lbHNlIHRoaXMuX2JvZHlUZXh0PSIiO3RoaXMuaGVhZGVycy5nZXQoImNvbnRl
bnQtdHlwZSIpfHwoInN0cmluZyI9PXR5cGVvZiBlP3RoaXMuaGVhZGVycy5zZXQoImNvbnRlbnQt
dHlwZSIsInRleHQvcGxhaW47Y2hhcnNldD1VVEYtOCIpOnRoaXMuX2JvZHlCbG9iJiZ0aGlzLl9i
b2R5QmxvYi50eXBlP3RoaXMuaGVhZGVycy5zZXQoImNvbnRlbnQtdHlwZSIsdGhpcy5fYm9keUJs
b2IudHlwZSk6di5zZWFyY2hQYXJhbXMmJlVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90
b3R5cGVPZihlKSYmdGhpcy5oZWFkZXJzLnNldCgiY29udGVudC10eXBlIiwiYXBwbGljYXRpb24v
eC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgiKSl9LHYuYmxvYj8odGhpcy5ibG9i
PWZ1bmN0aW9uKCl7dmFyIGU9aSh0aGlzKTtpZihlKXJldHVybiBlO2lmKHRoaXMuX2JvZHlCbG9i
KXJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpO2lmKHRoaXMuX2JvZHlGb3Jt
RGF0YSl0aHJvdyBuZXcgRXJyb3IoImNvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgYmxv
YiIpO3JldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpfSx0
aGlzLmFycmF5QnVmZmVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYmxvYigpLnRoZW4odSl9LHRo
aXMudGV4dD1mdW5jdGlvbigpe3ZhciBlPWkodGhpcyk7aWYoZSlyZXR1cm4gZTtpZih0aGlzLl9i
b2R5QmxvYilyZXR1cm4gcyh0aGlzLl9ib2R5QmxvYik7aWYodGhpcy5fYm9keUZvcm1EYXRhKXRo
cm93IG5ldyBFcnJvcigiY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0Iik7cmV0
dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dCl9KTp0aGlzLnRleHQ9ZnVuY3Rpb24o
KXt2YXIgZT1pKHRoaXMpO3JldHVybiBlP2U6UHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlUZXh0
KX0sdi5mb3JtRGF0YSYmKHRoaXMuZm9ybURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0
KCkudGhlbihkKX0pLHRoaXMuanNvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHQoKS50aGVu
KEpTT04ucGFyc2UpfSx0aGlzfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9ZS50b1VwcGVyQ2FzZSgpO3Jl
dHVybiBtLmluZGV4T2YodCk+LTE/dDplfWZ1bmN0aW9uIHAoZSx0KXt0PXR8fHt9O3ZhciBuPXQu
Ym9keTtpZihwLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpKXtpZihlLmJvZHlVc2VkKXRocm93
IG5ldyBUeXBlRXJyb3IoIkFscmVhZHkgcmVhZCIpO3RoaXMudXJsPWUudXJsLHRoaXMuY3JlZGVu
dGlhbHM9ZS5jcmVkZW50aWFscyx0LmhlYWRlcnN8fCh0aGlzLmhlYWRlcnM9bmV3IG8oZS5oZWFk
ZXJzKSksdGhpcy5tZXRob2Q9ZS5tZXRob2QsdGhpcy5tb2RlPWUubW9kZSxufHwobj1lLl9ib2R5
SW5pdCxlLmJvZHlVc2VkPSEwKX1lbHNlIHRoaXMudXJsPWU7aWYodGhpcy5jcmVkZW50aWFscz10
LmNyZWRlbnRpYWxzfHx0aGlzLmNyZWRlbnRpYWxzfHwib21pdCIsIXQuaGVhZGVycyYmdGhpcy5o
ZWFkZXJzfHwodGhpcy5oZWFkZXJzPW5ldyBvKHQuaGVhZGVycykpLHRoaXMubWV0aG9kPWwodC5t
ZXRob2R8fHRoaXMubWV0aG9kfHwiR0VUIiksdGhpcy5tb2RlPXQubW9kZXx8dGhpcy5tb2RlfHxu
dWxsLHRoaXMucmVmZXJyZXI9bnVsbCwoIkdFVCI9PT10aGlzLm1ldGhvZHx8IkhFQUQiPT09dGhp
cy5tZXRob2QpJiZuKXRocm93IG5ldyBUeXBlRXJyb3IoIkJvZHkgbm90IGFsbG93ZWQgZm9yIEdF
VCBvciBIRUFEIHJlcXVlc3RzIik7dGhpcy5faW5pdEJvZHkobil9ZnVuY3Rpb24gZChlKXt2YXIg
dD1uZXcgRm9ybURhdGE7cmV0dXJuIGUudHJpbSgpLnNwbGl0KCImIikuZm9yRWFjaChmdW5jdGlv
bihlKXtpZihlKXt2YXIgbj1lLnNwbGl0KCI9Iikscj1uLnNoaWZ0KCkucmVwbGFjZSgvXCsvZywi
ICIpLG89bi5qb2luKCI9IikucmVwbGFjZSgvXCsvZywiICIpO3QuYXBwZW5kKGRlY29kZVVSSUNv
bXBvbmVudChyKSxkZWNvZGVVUklDb21wb25lbnQobykpfX0pLHR9ZnVuY3Rpb24gZihlKXt2YXIg
dD1uZXcgbyxuPShlLmdldEFsbFJlc3BvbnNlSGVhZGVycygpfHwiIikudHJpbSgpLnNwbGl0KCJc
biIpO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG49ZS50cmltKCkuc3BsaXQoIjoi
KSxyPW4uc2hpZnQoKS50cmltKCksbz1uLmpvaW4oIjoiKS50cmltKCk7dC5hcHBlbmQocixvKX0p
LHR9ZnVuY3Rpb24gaChlLHQpe3R8fCh0PXt9KSx0aGlzLnR5cGU9ImRlZmF1bHQiLHRoaXMuc3Rh
dHVzPXQuc3RhdHVzLHRoaXMub2s9dGhpcy5zdGF0dXM+PTIwMCYmdGhpcy5zdGF0dXM8MzAwLHRo
aXMuc3RhdHVzVGV4dD10LnN0YXR1c1RleHQsdGhpcy5oZWFkZXJzPXQuaGVhZGVycyBpbnN0YW5j
ZW9mIG8/dC5oZWFkZXJzOm5ldyBvKHQuaGVhZGVycyksdGhpcy51cmw9dC51cmx8fCIiLHRoaXMu
X2luaXRCb2R5KGUpfWlmKCFlLmZldGNoKXt2YXIgdj17c2VhcmNoUGFyYW1zOiJVUkxTZWFyY2hQ
YXJhbXMiaW4gZSxpdGVyYWJsZToiU3ltYm9sImluIGUmJiJpdGVyYXRvciJpbiBTeW1ib2wsYmxv
YjoiRmlsZVJlYWRlciJpbiBlJiYiQmxvYiJpbiBlJiZmdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3
IEJsb2IsITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZvcm1EYXRhOiJGb3JtRGF0YSJpbiBlLGFy
cmF5QnVmZmVyOiJBcnJheUJ1ZmZlciJpbiBlfTtvLnByb3RvdHlwZS5hcHBlbmQ9ZnVuY3Rpb24o
ZSxyKXtlPXQoZSkscj1uKHIpO3ZhciBvPXRoaXMubWFwW2VdO298fChvPVtdLHRoaXMubWFwW2Vd
PW8pLG8ucHVzaChyKX0sby5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlz
Lm1hcFt0KGUpXX0sby5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMubWFwW3Qo
ZSldO3JldHVybiBuP25bMF06bnVsbH0sby5wcm90b3R5cGUuZ2V0QWxsPWZ1bmN0aW9uKGUpe3Jl
dHVybiB0aGlzLm1hcFt0KGUpXXx8W119LG8ucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1
cm4gdGhpcy5tYXAuaGFzT3duUHJvcGVydHkodChlKSl9LG8ucHJvdG90eXBlLnNldD1mdW5jdGlv
bihlLHIpe3RoaXMubWFwW3QoZSldPVtuKHIpXX0sby5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlv
bihlLHQpe09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMubWFwKS5mb3JFYWNoKGZ1bmN0
aW9uKG4pe3RoaXMubWFwW25dLmZvckVhY2goZnVuY3Rpb24ocil7ZS5jYWxsKHQscixuLHRoaXMp
fSx0aGlzKX0sdGhpcyl9LG8ucHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1
cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7ZS5wdXNoKG4pfSkscihlKX0sby5wcm90b3R5
cGUudmFsdWVzPWZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlv
bih0KXtlLnB1c2godCl9KSxyKGUpfSxvLnByb3RvdHlwZS5lbnRyaWVzPWZ1bmN0aW9uKCl7dmFy
IGU9W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbih0LG4pe2UucHVzaChbbix0XSl9KSxy
KGUpfSx2Lml0ZXJhYmxlJiYoby5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1vLnByb3RvdHlw
ZS5lbnRyaWVzKTt2YXIgbT1bIkRFTEVURSIsIkdFVCIsIkhFQUQiLCJPUFRJT05TIiwiUE9TVCIs
IlBVVCJdO3AucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBwKHRoaXMpfSxj
LmNhbGwocC5wcm90b3R5cGUpLGMuY2FsbChoLnByb3RvdHlwZSksaC5wcm90b3R5cGUuY2xvbmU9
ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGgodGhpcy5fYm9keUluaXQse3N0YXR1czp0aGlzLnN0YXR1
cyxzdGF0dXNUZXh0OnRoaXMuc3RhdHVzVGV4dCxoZWFkZXJzOm5ldyBvKHRoaXMuaGVhZGVycyks
dXJsOnRoaXMudXJsfSl9LGguZXJyb3I9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgaChudWxsLHtzdGF0
dXM6MCxzdGF0dXNUZXh0OiIifSk7cmV0dXJuIGUudHlwZT0iZXJyb3IiLGV9O3ZhciB5PVszMDEs
MzAyLDMwMywzMDcsMzA4XTtoLnJlZGlyZWN0PWZ1bmN0aW9uKGUsdCl7aWYoeS5pbmRleE9mKHQp
PT09LTEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgc3RhdHVzIGNvZGUiKTtyZXR1cm4g
bmV3IGgobnVsbCx7c3RhdHVzOnQsaGVhZGVyczp7bG9jYXRpb246ZX19KX0sZS5IZWFkZXJzPW8s
ZS5SZXF1ZXN0PXAsZS5SZXNwb25zZT1oLGUuZmV0Y2g9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3
IFByb21pc2UoZnVuY3Rpb24obixyKXtmdW5jdGlvbiBvKCl7cmV0dXJuInJlc3BvbnNlVVJMImlu
IGE/YS5yZXNwb25zZVVSTDovXlgtUmVxdWVzdC1VUkw6L20udGVzdChhLmdldEFsbFJlc3BvbnNl
SGVhZGVycygpKT9hLmdldFJlc3BvbnNlSGVhZGVyKCJYLVJlcXVlc3QtVVJMIik6dm9pZCAwfXZh
ciBpO2k9cC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKSYmIXQ/ZTpuZXcgcChlLHQpO3ZhciBh
PW5ldyBYTUxIdHRwUmVxdWVzdDthLm9ubG9hZD1mdW5jdGlvbigpe3ZhciBlPXtzdGF0dXM6YS5z
dGF0dXMsc3RhdHVzVGV4dDphLnN0YXR1c1RleHQsaGVhZGVyczpmKGEpLHVybDpvKCl9LHQ9InJl
c3BvbnNlImluIGE/YS5yZXNwb25zZTphLnJlc3BvbnNlVGV4dDtuKG5ldyBoKHQsZSkpfSxhLm9u
ZXJyb3I9ZnVuY3Rpb24oKXtyKG5ldyBUeXBlRXJyb3IoIk5ldHdvcmsgcmVxdWVzdCBmYWlsZWQi
KSl9LGEub250aW1lb3V0PWZ1bmN0aW9uKCl7cihuZXcgVHlwZUVycm9yKCJOZXR3b3JrIHJlcXVl
c3QgZmFpbGVkIikpfSxhLm9wZW4oaS5tZXRob2QsaS51cmwsITApLCJpbmNsdWRlIj09PWkuY3Jl
ZGVudGlhbHMmJihhLndpdGhDcmVkZW50aWFscz0hMCksInJlc3BvbnNlVHlwZSJpbiBhJiZ2LmJs
b2ImJihhLnJlc3BvbnNlVHlwZT0iYmxvYiIpLGkuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGUs
dCl7YS5zZXRSZXF1ZXN0SGVhZGVyKHQsZSl9KSxhLnNlbmQoInVuZGVmaW5lZCI9PXR5cGVvZiBp
Ll9ib2R5SW5pdD9udWxsOmkuX2JvZHlJbml0KX0pfSxlLmZldGNoLnBvbHlmaWxsPSEwfX0oInVu
ZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyl9LDM4LFsyMzEsMjNdLGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4oIiIrZSkucmVwbGFjZShfLCIk
Ji8iKX1mdW5jdGlvbiBvKGUsdCl7dGhpcy5mdW5jPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5jb3Vu
dD0wfWZ1bmN0aW9uIGkoZSx0LG4pe3ZhciByPWUuZnVuYyxvPWUuY29udGV4dDtyLmNhbGwobyx0
LGUuY291bnQrKyl9ZnVuY3Rpb24gYShlLHQsbil7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgcj1v
LmdldFBvb2xlZCh0LG4pO3koZSxpLHIpLG8ucmVsZWFzZShyKX1mdW5jdGlvbiB1KGUsdCxuLHIp
e3RoaXMucmVzdWx0PWUsdGhpcy5rZXlQcmVmaXg9dCx0aGlzLmZ1bmM9bix0aGlzLmNvbnRleHQ9
cix0aGlzLmNvdW50PTB9ZnVuY3Rpb24gcyhlLHQsbil7dmFyIG89ZS5yZXN1bHQsaT1lLmtleVBy
ZWZpeCxhPWUuZnVuYyx1PWUuY29udGV4dCxzPWEuY2FsbCh1LHQsZS5jb3VudCsrKTtBcnJheS5p
c0FycmF5KHMpP2MocyxvLG4sbS50aGF0UmV0dXJuc0FyZ3VtZW50KTpudWxsIT1zJiYodi5pc1Zh
bGlkRWxlbWVudChzKSYmKHM9di5jbG9uZUFuZFJlcGxhY2VLZXkocyxpKyghcy5rZXl8fHQmJnQu
a2V5PT09cy5rZXk/IiI6cihzLmtleSkrIi8iKStuKSksby5wdXNoKHMpKX1mdW5jdGlvbiBjKGUs
dCxuLG8saSl7dmFyIGE9IiI7bnVsbCE9biYmKGE9cihuKSsiLyIpO3ZhciBjPXUuZ2V0UG9vbGVk
KHQsYSxvLGkpO3koZSxzLGMpLHUucmVsZWFzZShjKX1mdW5jdGlvbiBsKGUsdCxuKXtpZihudWxs
PT1lKXJldHVybiBlO3ZhciByPVtdO3JldHVybiBjKGUscixudWxsLHQsbikscn1mdW5jdGlvbiBw
KGUsdCxuKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBkKGUsdCl7cmV0dXJuIHkoZSxwLG51bGwpfWZ1
bmN0aW9uIGYoZSl7dmFyIHQ9W107cmV0dXJuIGMoZSx0LG51bGwsbS50aGF0UmV0dXJuc0FyZ3Vt
ZW50KSx0fXZhciBoPW4oMjE0KSx2PW4oMTgpLG09big3KSx5PW4oMjI0KSxnPWgudHdvQXJndW1l
bnRQb29sZXIsYj1oLmZvdXJBcmd1bWVudFBvb2xlcixfPS9cLysvZztvLnByb3RvdHlwZS5kZXN0
cnVjdG9yPWZ1bmN0aW9uKCl7dGhpcy5mdW5jPW51bGwsdGhpcy5jb250ZXh0PW51bGwsdGhpcy5j
b3VudD0wfSxoLmFkZFBvb2xpbmdUbyhvLGcpLHUucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rp
b24oKXt0aGlzLnJlc3VsdD1udWxsLHRoaXMua2V5UHJlZml4PW51bGwsdGhpcy5mdW5jPW51bGws
dGhpcy5jb250ZXh0PW51bGwsdGhpcy5jb3VudD0wfSxoLmFkZFBvb2xpbmdUbyh1LGIpO3ZhciBD
PXtmb3JFYWNoOmEsbWFwOmwsbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbDpjLGNvdW50OmQs
dG9BcnJheTpmfTtlLmV4cG9ydHM9Q30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj1uKDE4KSxvPXIuY3JlYXRlRmFjdG9yeSxpPXthOm8oImEiKSxhYmJyOm8oImFiYnIiKSxhZGRy
ZXNzOm8oImFkZHJlc3MiKSxhcmVhOm8oImFyZWEiKSxhcnRpY2xlOm8oImFydGljbGUiKSxhc2lk
ZTpvKCJhc2lkZSIpLGF1ZGlvOm8oImF1ZGlvIiksYjpvKCJiIiksYmFzZTpvKCJiYXNlIiksYmRp
Om8oImJkaSIpLGJkbzpvKCJiZG8iKSxiaWc6bygiYmlnIiksYmxvY2txdW90ZTpvKCJibG9ja3F1
b3RlIiksYm9keTpvKCJib2R5IiksYnI6bygiYnIiKSxidXR0b246bygiYnV0dG9uIiksY2FudmFz
Om8oImNhbnZhcyIpLGNhcHRpb246bygiY2FwdGlvbiIpLGNpdGU6bygiY2l0ZSIpLGNvZGU6bygi
Y29kZSIpLGNvbDpvKCJjb2wiKSxjb2xncm91cDpvKCJjb2xncm91cCIpLGRhdGE6bygiZGF0YSIp
LGRhdGFsaXN0Om8oImRhdGFsaXN0IiksZGQ6bygiZGQiKSxkZWw6bygiZGVsIiksZGV0YWlsczpv
KCJkZXRhaWxzIiksZGZuOm8oImRmbiIpLGRpYWxvZzpvKCJkaWFsb2ciKSxkaXY6bygiZGl2Iiks
ZGw6bygiZGwiKSxkdDpvKCJkdCIpLGVtOm8oImVtIiksZW1iZWQ6bygiZW1iZWQiKSxmaWVsZHNl
dDpvKCJmaWVsZHNldCIpLGZpZ2NhcHRpb246bygiZmlnY2FwdGlvbiIpLGZpZ3VyZTpvKCJmaWd1
cmUiKSxmb290ZXI6bygiZm9vdGVyIiksZm9ybTpvKCJmb3JtIiksaDE6bygiaDEiKSxoMjpvKCJo
MiIpLGgzOm8oImgzIiksaDQ6bygiaDQiKSxoNTpvKCJoNSIpLGg2Om8oImg2IiksaGVhZDpvKCJo
ZWFkIiksaGVhZGVyOm8oImhlYWRlciIpLGhncm91cDpvKCJoZ3JvdXAiKSxocjpvKCJociIpLGh0
bWw6bygiaHRtbCIpLGk6bygiaSIpLGlmcmFtZTpvKCJpZnJhbWUiKSxpbWc6bygiaW1nIiksaW5w
dXQ6bygiaW5wdXQiKSxpbnM6bygiaW5zIiksa2JkOm8oImtiZCIpLGtleWdlbjpvKCJrZXlnZW4i
KSxsYWJlbDpvKCJsYWJlbCIpLGxlZ2VuZDpvKCJsZWdlbmQiKSxsaTpvKCJsaSIpLGxpbms6bygi
bGluayIpLG1haW46bygibWFpbiIpLG1hcDpvKCJtYXAiKSxtYXJrOm8oIm1hcmsiKSxtZW51Om8o
Im1lbnUiKSxtZW51aXRlbTpvKCJtZW51aXRlbSIpLG1ldGE6bygibWV0YSIpLG1ldGVyOm8oIm1l
dGVyIiksbmF2Om8oIm5hdiIpLG5vc2NyaXB0Om8oIm5vc2NyaXB0Iiksb2JqZWN0Om8oIm9iamVj
dCIpLG9sOm8oIm9sIiksb3B0Z3JvdXA6bygib3B0Z3JvdXAiKSxvcHRpb246bygib3B0aW9uIiks
b3V0cHV0Om8oIm91dHB1dCIpLHA6bygicCIpLHBhcmFtOm8oInBhcmFtIikscGljdHVyZTpvKCJw
aWN0dXJlIikscHJlOm8oInByZSIpLHByb2dyZXNzOm8oInByb2dyZXNzIikscTpvKCJxIikscnA6
bygicnAiKSxydDpvKCJydCIpLHJ1Ynk6bygicnVieSIpLHM6bygicyIpLHNhbXA6bygic2FtcCIp
LHNjcmlwdDpvKCJzY3JpcHQiKSxzZWN0aW9uOm8oInNlY3Rpb24iKSxzZWxlY3Q6bygic2VsZWN0
Iiksc21hbGw6bygic21hbGwiKSxzb3VyY2U6bygic291cmNlIiksc3BhbjpvKCJzcGFuIiksc3Ry
b25nOm8oInN0cm9uZyIpLHN0eWxlOm8oInN0eWxlIiksc3ViOm8oInN1YiIpLHN1bW1hcnk6bygi
c3VtbWFyeSIpLHN1cDpvKCJzdXAiKSx0YWJsZTpvKCJ0YWJsZSIpLHRib2R5Om8oInRib2R5Iiks
dGQ6bygidGQiKSx0ZXh0YXJlYTpvKCJ0ZXh0YXJlYSIpLHRmb290Om8oInRmb290IiksdGg6bygi
dGgiKSx0aGVhZDpvKCJ0aGVhZCIpLHRpbWU6bygidGltZSIpLHRpdGxlOm8oInRpdGxlIiksdHI6
bygidHIiKSx0cmFjazpvKCJ0cmFjayIpLHU6bygidSIpLHVsOm8oInVsIiksdmFyOm8oInZhciIp
LHZpZGVvOm8oInZpZGVvIiksd2JyOm8oIndiciIpLGNpcmNsZTpvKCJjaXJjbGUiKSxjbGlwUGF0
aDpvKCJjbGlwUGF0aCIpLGRlZnM6bygiZGVmcyIpLGVsbGlwc2U6bygiZWxsaXBzZSIpLGc6bygi
ZyIpLGltYWdlOm8oImltYWdlIiksbGluZTpvKCJsaW5lIiksbGluZWFyR3JhZGllbnQ6bygibGlu
ZWFyR3JhZGllbnQiKSxtYXNrOm8oIm1hc2siKSxwYXRoOm8oInBhdGgiKSxwYXR0ZXJuOm8oInBh
dHRlcm4iKSxwb2x5Z29uOm8oInBvbHlnb24iKSxwb2x5bGluZTpvKCJwb2x5bGluZSIpLHJhZGlh
bEdyYWRpZW50Om8oInJhZGlhbEdyYWRpZW50IikscmVjdDpvKCJyZWN0Iiksc3RvcDpvKCJzdG9w
Iiksc3ZnOm8oInN2ZyIpLHRleHQ6bygidGV4dCIpLHRzcGFuOm8oInRzcGFuIil9O2UuZXhwb3J0
cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTgpLG89ci5pc1ZhbGlk
RWxlbWVudCxpPW4oNTUpO2UuZXhwb3J0cz1pKG8pfSwxNjMsZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0Ijt2YXIgcj1uKDg5KSxvPXIuQ29tcG9uZW50LGk9bigxOCksYT1pLmlzVmFsaWRFbGVt
ZW50LHU9big5Mikscz1uKDk3KTtlLmV4cG9ydHM9cyhvLGEsdSl9LDE4MixmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7cmV0dXJuIHIrK312YXIgcj0xO2UuZXhwb3J0cz1u
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKCl7fTtlLmV4cG9y
dHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBp
LmlzVmFsaWRFbGVtZW50KGUpP3ZvaWQgMDpvKCIxNDMiKSxlfXZhciBvPW4oMjMpLGk9bigxOCk7
bigxKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9ZS5rZXk/Yy5lc2NhcGUo
ZS5rZXkpOnQudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIG8oZSx0LG4saSl7dmFyIGQ9dHlwZW9mIGU7
aWYoInVuZGVmaW5lZCIhPT1kJiYiYm9vbGVhbiIhPT1kfHwoZT1udWxsKSxudWxsPT09ZXx8InN0
cmluZyI9PT1kfHwibnVtYmVyIj09PWR8fCJvYmplY3QiPT09ZCYmZS4kJHR5cGVvZj09PXUpcmV0
dXJuIG4oaSxlLCIiPT09dD9sK3IoZSwwKTp0KSwxO3ZhciBmLGgsdj0wLG09IiI9PT10P2w6dCtw
O2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciB5PTA7eTxlLmxlbmd0aDt5KyspZj1lW3ldLGg9
bStyKGYseSksdis9byhmLGgsbixpKTtlbHNle3ZhciBnPXMoZSk7aWYoZyl7dmFyIGIsXz1nLmNh
bGwoZSk7aWYoZyE9PWUuZW50cmllcylmb3IodmFyIEM9MDshKGI9Xy5uZXh0KCkpLmRvbmU7KWY9
Yi52YWx1ZSxoPW0rcihmLEMrKyksdis9byhmLGgsbixpKTtlbHNlIGZvcig7IShiPV8ubmV4dCgp
KS5kb25lOyl7dmFyIEU9Yi52YWx1ZTtFJiYoZj1FWzFdLGg9bStjLmVzY2FwZShFWzBdKStwK3Io
ZiwwKSx2Kz1vKGYsaCxuLGkpKX19ZWxzZSBpZigib2JqZWN0Ij09PWQpe3ZhciB3PSIiLFQ9U3Ry
aW5nKGUpO2EoIjMxIiwiW29iamVjdCBPYmplY3RdIj09PVQ/Im9iamVjdCB3aXRoIGtleXMgeyIr
T2JqZWN0LmtleXMoZSkuam9pbigiLCAiKSsifSI6VCx3KX19cmV0dXJuIHZ9ZnVuY3Rpb24gaShl
LHQsbil7Ci1yZXR1cm4gbnVsbD09ZT8wOm8oZSwiIix0LG4pfXZhciBhPW4oMjMpLHU9KG4oMTEp
LG4oOTEpKSxzPW4oMjIwKSxjPShuKDEpLG4oMjEzKSksbD0obigyKSwiLiIpLHA9IjoiO2UuZXhw
b3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJu
IGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oKXtmb3IodmFyIGU9YXJn
dW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3Jl
dHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obixyLG8pe3ZhciBhPWUobixyLG8pLHM9
YS5kaXNwYXRjaCxjPVtdLGw9e2dldFN0YXRlOmEuZ2V0U3RhdGUsZGlzcGF0Y2g6ZnVuY3Rpb24o
ZSl7cmV0dXJuIHMoZSl9fTtyZXR1cm4gYz10Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZShsKX0p
LHM9dS5kZWZhdWx0LmFwcGx5KHZvaWQgMCxjKShhLmRpc3BhdGNoKSxpKHt9LGEse2Rpc3BhdGNo
OnN9KX19fXQuX19lc01vZHVsZT0hMDt2YXIgaT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtm
b3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9y
KHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihl
W3JdPW5bcl0pfXJldHVybiBlfTt0LmRlZmF1bHQ9bzt2YXIgYT1uKDk0KSx1PXIoYSl9LGZ1bmN0
aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXty
ZXR1cm4gdChlLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKX19ZnVuY3Rpb24gcihlLHQpe2lmKCJm
dW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiBuKGUsdCk7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxu
dWxsPT09ZSl0aHJvdyBuZXcgRXJyb3IoImJpbmRBY3Rpb25DcmVhdG9ycyBleHBlY3RlZCBhbiBv
YmplY3Qgb3IgYSBmdW5jdGlvbiwgaW5zdGVhZCByZWNlaXZlZCAiKyhudWxsPT09ZT8ibnVsbCI6
dHlwZW9mIGUpKycuIERpZCB5b3Ugd3JpdGUgImltcG9ydCBBY3Rpb25DcmVhdG9ycyBmcm9tIiBp
bnN0ZWFkIG9mICJpbXBvcnQgKiBhcyBBY3Rpb25DcmVhdG9ycyBmcm9tIj8nKTtmb3IodmFyIHI9
T2JqZWN0LmtleXMoZSksbz17fSxpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBhPXJbaV0sdT1lW2Fd
OyJmdW5jdGlvbiI9PXR5cGVvZiB1JiYob1thXT1uKHUsdCkpfXJldHVybiBvfXQuX19lc01vZHVs
ZT0hMCx0LmRlZmF1bHQ9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7
dmFyIG49dCYmdC50eXBlLHI9biYmJyInK24udG9TdHJpbmcoKSsnIid8fCJhbiBhY3Rpb24iO3Jl
dHVybiJHaXZlbiBhY3Rpb24gIityKycsIHJlZHVjZXIgIicrZSsnIiByZXR1cm5lZCB1bmRlZmlu
ZWQuIFRvIGlnbm9yZSBhbiBhY3Rpb24sIHlvdSBtdXN0IGV4cGxpY2l0bHkgcmV0dXJuIHRoZSBw
cmV2aW91cyBzdGF0ZS4gSWYgeW91IHdhbnQgdGhpcyByZWR1Y2VyIHRvIGhvbGQgbm8gdmFsdWUs
IHlvdSBjYW4gcmV0dXJuIG51bGwgaW5zdGVhZCBvZiB1bmRlZmluZWQuJ31mdW5jdGlvbiBpKGUp
e09iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG49ZVt0XSxyPW4odm9pZCAw
LHt0eXBlOnUuQWN0aW9uVHlwZXMuSU5JVH0pO2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygcil0aHJv
dyBuZXcgRXJyb3IoJ1JlZHVjZXIgIicrdCsiXCIgcmV0dXJuZWQgdW5kZWZpbmVkIGR1cmluZyBp
bml0aWFsaXphdGlvbi4gSWYgdGhlIHN0YXRlIHBhc3NlZCB0byB0aGUgcmVkdWNlciBpcyB1bmRl
ZmluZWQsIHlvdSBtdXN0IGV4cGxpY2l0bHkgcmV0dXJuIHRoZSBpbml0aWFsIHN0YXRlLiBUaGUg
aW5pdGlhbCBzdGF0ZSBtYXkgbm90IGJlIHVuZGVmaW5lZC4gSWYgeW91IGRvbid0IHdhbnQgdG8g
c2V0IGEgdmFsdWUgZm9yIHRoaXMgcmVkdWNlciwgeW91IGNhbiB1c2UgbnVsbCBpbnN0ZWFkIG9m
IHVuZGVmaW5lZC4iKTt2YXIgbz0iQEByZWR1eC9QUk9CRV9VTktOT1dOX0FDVElPTl8iK01hdGgu
cmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg3KS5zcGxpdCgiIikuam9pbigiLiIpO2lm
KCJ1bmRlZmluZWQiPT10eXBlb2Ygbih2b2lkIDAse3R5cGU6b30pKXRocm93IG5ldyBFcnJvcign
UmVkdWNlciAiJyt0KyciIHJldHVybmVkIHVuZGVmaW5lZCB3aGVuIHByb2JlZCB3aXRoIGEgcmFu
ZG9tIHR5cGUuICcrKCJEb24ndCB0cnkgdG8gaGFuZGxlICIrdS5BY3Rpb25UeXBlcy5JTklUKycg
b3Igb3RoZXIgYWN0aW9ucyBpbiAicmVkdXgvKiIgJykrIm5hbWVzcGFjZS4gVGhleSBhcmUgY29u
c2lkZXJlZCBwcml2YXRlLiBJbnN0ZWFkLCB5b3UgbXVzdCByZXR1cm4gdGhlIGN1cnJlbnQgc3Rh
dGUgZm9yIGFueSB1bmtub3duIGFjdGlvbnMsIHVubGVzcyBpdCBpcyB1bmRlZmluZWQsIGluIHdo
aWNoIGNhc2UgeW91IG11c3QgcmV0dXJuIHRoZSBpbml0aWFsIHN0YXRlLCByZWdhcmRsZXNzIG9m
IHRoZSBhY3Rpb24gdHlwZS4gVGhlIGluaXRpYWwgc3RhdGUgbWF5IG5vdCBiZSB1bmRlZmluZWQs
IGJ1dCBjYW4gYmUgbnVsbC4iKX0pfWZ1bmN0aW9uIGEoZSl7Zm9yKHZhciB0PU9iamVjdC5rZXlz
KGUpLG49e30scj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgYT10W3JdOyJmdW5jdGlvbiI9PXR5cGVv
ZiBlW2FdJiYoblthXT1lW2FdKX12YXIgdT1PYmplY3Qua2V5cyhuKSxzPXZvaWQgMDt0cnl7aShu
KX1jYXRjaChjKXtzPWN9cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4w
JiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9YXJndW1lbnRzWzFdO2lm
KHMpdGhyb3cgcztmb3IodmFyIHI9ITEsaT17fSxhPTA7YTx1Lmxlbmd0aDthKyspe3ZhciBjPXVb
YV0sbD1uW2NdLHA9ZVtjXSxkPWwocCx0KTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGQpe3ZhciBm
PW8oYyx0KTt0aHJvdyBuZXcgRXJyb3IoZil9aVtjXT1kLHI9cnx8ZCE9PXB9cmV0dXJuIHI/aTpl
fX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWE7dmFyIHU9big5NSkscz1uKDMzKSxjPShyKHMp
LG4oOTYpKTtyKGMpfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oMjI5KX0sZnVuY3Rpb24o
ZSx0LG4peyhmdW5jdGlvbihlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUpe3JldHVybiBl
JiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19l
c01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGksYT1uKDIzMCksdT1vKGEpO2k9InVuZGVmaW5lZCIh
PXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRl
ZmluZWQiIT10eXBlb2YgZT9lOnI7dmFyIHM9KDAsdS5kZWZhdWx0KShpKTt0LmRlZmF1bHQ9c30p
LmNhbGwodCxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpLG4oMjExKShlKSl9LGZ1bmN0aW9uKGUs
dCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQsbj1lLlN5bWJvbDtyZXR1cm4iZnVu
Y3Rpb24iPT10eXBlb2Ygbj9uLm9ic2VydmFibGU/dD1uLm9ic2VydmFibGU6KHQ9bigib2JzZXJ2
YWJsZSIpLG4ub2JzZXJ2YWJsZT10KTp0PSJAQG9ic2VydmFibGUiLHR9T2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1ufSxmdW5jdGlvbihl
LHQsbixyKXsidXNlIHN0cmljdCI7dmFyIG89bihyKSxpPShuKDEpLGZ1bmN0aW9uKGUpe3ZhciB0
PXRoaXM7aWYodC5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgbj10Lmluc3RhbmNlUG9vbC5wb3Ao
KTtyZXR1cm4gdC5jYWxsKG4sZSksbn1yZXR1cm4gbmV3IHQoZSl9KSxhPWZ1bmN0aW9uKGUsdCl7
dmFyIG49dGhpcztpZihuLmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciByPW4uaW5zdGFuY2VQb29s
LnBvcCgpO3JldHVybiBuLmNhbGwocixlLHQpLHJ9cmV0dXJuIG5ldyBuKGUsdCl9LHU9ZnVuY3Rp
b24oZSx0LG4pe3ZhciByPXRoaXM7aWYoci5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgbz1yLmlu
c3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gci5jYWxsKG8sZSx0LG4pLG99cmV0dXJuIG5ldyByKGUs
dCxuKX0scz1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz10aGlzO2lmKG8uaW5zdGFuY2VQb29sLmxl
bmd0aCl7dmFyIGk9by5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIG8uY2FsbChpLGUsdCxuLHIp
LGl9cmV0dXJuIG5ldyBvKGUsdCxuLHIpfSxjPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7ZSBpbnN0
YW5jZW9mIHQ/dm9pZCAwOm8oIjI1IiksZS5kZXN0cnVjdG9yKCksdC5pbnN0YW5jZVBvb2wubGVu
Z3RoPHQucG9vbFNpemUmJnQuaW5zdGFuY2VQb29sLnB1c2goZSl9LGw9MTAscD1pLGQ9ZnVuY3Rp
b24oZSx0KXt2YXIgbj1lO3JldHVybiBuLmluc3RhbmNlUG9vbD1bXSxuLmdldFBvb2xlZD10fHxw
LG4ucG9vbFNpemV8fChuLnBvb2xTaXplPWwpLG4ucmVsZWFzZT1jLG59LGY9e2FkZFBvb2xpbmdU
bzpkLG9uZUFyZ3VtZW50UG9vbGVyOmksdHdvQXJndW1lbnRQb29sZXI6YSx0aHJlZUFyZ3VtZW50
UG9vbGVyOnUsZm91ckFyZ3VtZW50UG9vbGVyOnN9O2UuZXhwb3J0cz1mfV0pKTsKLS8vIyBzb3Vy
Y2VNYXBwaW5nVVJMPW1haW4uNjljZDk2NTUuanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvanMv
bWFpbi42OWNkOTY1NS5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRp
Yy9qcy9tYWluLjY5Y2Q5NjU1LmpzLm1hcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGUwNjg2ZGQyNzVhZjRjMWFkMzZkNzU2ODRiMDM5Mjc3ZDRkMWJiZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9k
aXN0L3N0YXRpYy9qcy9tYWluLjY5Y2Q5NjU1LmpzLm1hcAorKysgL2Rldi9udWxsCkBAIC0xICsw
LDAgQEAKLXsidmVyc2lvbiI6Mywic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3N0YXRpYy9qcy9tYWlu
LjY5Y2Q5NjU1LmpzIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCAxYzE0ZWYzNDdmYjc1
MjI5MjQ2YyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2ludmFyaWFudC5qcyIsIndlYnBhY2s6
Ly8vLi9+L2ZianMvbGliL3dhcm5pbmcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGli
L3JlYWN0UHJvZEludmFyaWFudC5qcyIsIndlYnBhY2s6Ly8vLi9+L29iamVjdC1hc3NpZ24vaW5k
ZXguanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NQ29tcG9uZW50VHJl
ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50LmpzIiwi
d2VicGFjazovLy8uL34vZmJqcy9saWIvZW1wdHlGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+
L3JlYWN0LWRvbS9saWIvUmVhY3RJbnN0cnVtZW50YXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1kb20vbGliL1JlYWN0VXBkYXRlcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvU3ludGhldGljRXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvUmVhY3RDdXJy
ZW50T3duZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9yZWFjdC5qcyIsIndlYnBhY2s6Ly8v
Li9+L3JlYWN0LWRvbS9saWIvRE9NTGF6eVRyZWUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1k
b20vbGliL0RPTVByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFj
dFJlY29uY2lsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvUmVhY3QuanMiLCJ3ZWJw
YWNrOi8vLy4vfi9yZWFjdC9saWIvUmVhY3RFbGVtZW50LmpzIiwid2VicGFjazovLy8uL34vcmVh
Y3QtZG9tL2xpYi9FdmVudFBsdWdpbkh1Yi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvRXZlbnRQcm9wYWdhdG9ycy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVh
Y3RJbnN0YW5jZU1hcC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGlj
VUlFdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2VtcHR5T2JqZWN0LmpzIiwid2Vi
cGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY01vdXNlRXZlbnQuanMiLCJ3ZWJw
YWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1RyYW5zYWN0aW9uLmpzIiwid2VicGFjazovLy8uL34v
cmVhY3QtZG9tL2xpYi9lc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9yZWFjdC1kb20vbGliL3NldElubmVySFRNTC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlZHV4
L2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9+L2NsYXNzbmFtZXMvaW5kZXguanMiLCJ3ZWJw
YWNrOi8vLy4vfi9mYmpzL2xpYi9zaGFsbG93RXF1YWwuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rh
c2gvaXNQbGFpbk9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvRE9NQ2hp
bGRyZW5PcGVyYXRpb25zLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9ET01OYW1l
c3BhY2VzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9FdmVudFBsdWdpblJlZ2lz
dHJ5LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9FdmVudFBsdWdpblV0aWxzLmpz
Iiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9LZXlFc2NhcGVVdGlscy5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvTGlua2VkVmFsdWVVdGlscy5qcyIsIndlYnBhY2s6Ly8v
Li9+L3JlYWN0LWRvbS9saWIvUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RFcnJvclV0aWxzLmpzIiwid2VicGFjazovLy8uL34v
cmVhY3QtZG9tL2xpYi9SZWFjdFVwZGF0ZVF1ZXVlLmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qt
ZG9tL2xpYi9jcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uLmpzIiwid2VicGFjazov
Ly8uL34vcmVhY3QtZG9tL2xpYi9nZXRFdmVudENoYXJDb2RlLmpzIiwid2VicGFjazovLy8uL34v
cmVhY3QtZG9tL2xpYi9nZXRFdmVudE1vZGlmaWVyU3RhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1kb20vbGliL2dldEV2ZW50VGFyZ2V0LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9t
L2xpYi9pc0V2ZW50U3VwcG9ydGVkLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9z
aG91bGRVcGRhdGVSZWFjdENvbXBvbmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvdmFsaWRhdGVET01OZXN0aW5nLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGli
L3V0aWxzL3dhcm5pbmcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi9FdmVudExpc3RlbmVy
LmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvZm9jdXNOb2RlLmpzIiwid2VicGFjazovLy8u
L34vZmJqcy9saWIvZ2V0QWN0aXZlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9f
U3ltYm9sLmpzIiwid2VicGFjazovLy8uL34vcHJvcC10eXBlcy9mYWN0b3J5LmpzIiwid2VicGFj
azovLy8uL34vcHJvcC10eXBlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9+L3Byb3AtdHlwZXMv
bGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xp
Yi9DU1NQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvQ2FsbGJhY2tR
dWV1ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvRE9NUHJvcGVydHlPcGVyYXRp
b25zLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUNvbXBvbmVudEZs
YWdzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVNlbGVjdC5qcyIs
IndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RFbXB0eUNvbXBvbmVudC5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RGZWF0dXJlRmxhZ3MuanMiLCJ3ZWJwYWNr
Oi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0SG9zdENvbXBvbmVudC5qcyIsIndlYnBhY2s6Ly8v
Li9+L3JlYWN0LWRvbS9saWIvUmVhY3RJbnB1dFNlbGVjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+
L3JlYWN0LWRvbS9saWIvUmVhY3RNb3VudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvUmVhY3ROb2RlVHlwZXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1ZpZXdw
b3J0TWV0cmljcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvYWNjdW11bGF0ZUlu
dG8uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2ZvckVhY2hBY2N1bXVsYXRlZC5q
cyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZ2V0SG9zdENvbXBvbmVudEZyb21Db21w
b3NpdGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2dldFRleHRDb250ZW50QWNj
ZXNzb3IuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2lucHV0VmFsdWVUcmFja2lu
Zy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvaW5zdGFudGlhdGVSZWFjdENvbXBv
bmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvaXNUZXh0SW5wdXRFbGVtZW50
LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9zZXRUZXh0Q29udGVudC5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvdHJhdmVyc2VBbGxDaGlsZHJlbi5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xpYi9jb21wb25lbnRzL2Nvbm5lY3RBZHZhbmNlZC5qcyIs
IndlYnBhY2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0L3dyYXBNYXBUb1Byb3BzLmpz
Iiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGliL2luZGV4LmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtcmVkdXgvbGliL3V0aWxzL1Byb3BUeXBlcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3Jl
YWN0LXJlZHV4L2xpYi91dGlscy92ZXJpZnlQbGFpbk9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9z
cmMvY29tcG9uZW50cy9Ub2RvVGV4dElucHV0LmpzIiwid2VicGFjazovLy8uL3NyYy9jb25zdGFu
dHMvQWN0aW9uVHlwZXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbnN0YW50cy9Ub2RvRmlsdGVy
cy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXNjcmlwdHMvfi9wcm9jZXNzL2Jyb3dzZXIuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1zY3JpcHRzL34vcHJvbWlzZS9saWIvY29yZS5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdEJhc2VDbGFzc2VzLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2suanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC9saWIvUmVhY3RFbGVtZW50U3ltYm9sLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGli
L1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL2NhbkRl
ZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL34vcmVkdXgvbGliL2NvbXBvc2UuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWR1eC9saWIvY3JlYXRlU3RvcmUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWR1eC9saWIvdXRpbHMvd2FybmluZy5qcyIsIndlYnBhY2s6Ly8vLi9+L2NyZWF0ZS1yZWFjdC1j
bGFzcy9mYWN0b3J5LmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvY2FtZWxpemUuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi9jYW1lbGl6ZVN0eWxlTmFtZS5qcyIsIndlYnBhY2s6Ly8v
Li9+L2ZianMvbGliL2NvbnRhaW5zTm9kZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2Ny
ZWF0ZUFycmF5RnJvbU1peGVkLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvY3JlYXRlTm9k
ZXNGcm9tTWFya3VwLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvZ2V0TWFya3VwV3JhcC5q
cyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2dldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uLmpz
Iiwid2VicGFjazovLy8uL34vZmJqcy9saWIvaHlwaGVuYXRlLmpzIiwid2VicGFjazovLy8uL34v
ZmJqcy9saWIvaHlwaGVuYXRlU3R5bGVOYW1lLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIv
aXNOb2RlLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvaXNUZXh0Tm9kZS5qcyIsIndlYnBh
Y2s6Ly8vLi9+L2ZianMvbGliL21lbW9pemVTdHJpbmdPbmx5LmpzIiwid2VicGFjazovLy8uL34v
aG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vfi9pbnZhcmlh
bnQvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZUdldFRhZy5qcyIsIndl
YnBhY2s6Ly8vLi9+L2xvZGFzaC9fZnJlZUdsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFz
aC9fZ2V0UHJvdG90eXBlLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19nZXRSYXdUYWcuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX29iamVjdFRvU3RyaW5nLmpzIiwid2VicGFjazovLy8u
L34vbG9kYXNoL19vdmVyQXJnLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19yb290LmpzIiwi
d2VicGFjazovLy8uL34vbG9kYXNoL2lzT2JqZWN0TGlrZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3By
b3AtdHlwZXMvY2hlY2tQcm9wVHlwZXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9wcm9wLXR5cGVzL2Zh
Y3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3Byb3AtdHlwZXMvZmFj
dG9yeVdpdGhUeXBlQ2hlY2tlcnMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vaW5kZXgu
anMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0FSSUFET01Qcm9wZXJ0eUNvbmZpZy5q
cyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvQXV0b0ZvY3VzVXRpbHMuanMiLCJ3ZWJw
YWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0JlZm9yZUlucHV0RXZlbnRQbHVnaW4uanMiLCJ3ZWJw
YWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0NTU1Byb3BlcnR5T3BlcmF0aW9ucy5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvQ2hhbmdlRXZlbnRQbHVnaW4uanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9yZWFjdC1kb20vbGliL0Rhbmdlci5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20v
bGliL0VudGVyTGVhdmVFdmVudFBsdWdpbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9t
L2xpYi9IVE1MRE9NUHJvcGVydHlDb25maWcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20v
bGliL1JlYWN0Q2hpbGRSZWNvbmNpbGVyLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xp
Yi9SZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3Jl
YWN0LWRvbS9saWIvUmVhY3RDb21wb3NpdGVDb21wb25lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1kb20vbGliL1JlYWN0RE9NLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9S
ZWFjdERPTUNvbXBvbmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RE
T01Db250YWluZXJJbmZvLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERP
TUVtcHR5Q29tcG9uZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERP
TUZlYXR1cmVGbGFncy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01J
RE9wZXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NSW5w
dXQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NT3B0aW9uLmpzIiwi
d2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVNlbGVjdGlvbi5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01UZXh0Q29tcG9uZW50LmpzIiwid2VicGFj
azovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVRleHRhcmVhLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVRyZWVUcmF2ZXJzYWwuanMiLCJ3ZWJwYWNrOi8vLy4v
fi9yZWFjdC1kb20vbGliL1JlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuanMiLCJ3ZWJwYWNr
Oi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RGVmYXVsdEluamVjdGlvbi5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RFdmVudEVtaXR0ZXJNaXhpbi5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RFdmVudExpc3RlbmVyLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtZG9tL2xpYi9SZWFjdEluamVjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
LWRvbS9saWIvUmVhY3RNYXJrdXBDaGVja3N1bS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRv
bS9saWIvUmVhY3RNdWx0aUNoaWxkLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9S
ZWFjdE93bmVyLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdFByb3BUeXBl
c1NlY3JldC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RSZWYuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNh
Y3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0U2VydmVyVXBkYXRl
UXVldWUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0VmVyc2lvbi5qcyIs
IndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvU1ZHRE9NUHJvcGVydHlDb25maWcuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1NlbGVjdEV2ZW50UGx1Z2luLmpzIiwid2VicGFj
azovLy8uL34vcmVhY3QtZG9tL2xpYi9TaW1wbGVFdmVudFBsdWdpbi5qcyIsIndlYnBhY2s6Ly8v
Li9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljQW5pbWF0aW9uRXZlbnQuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0NsaXBib2FyZEV2ZW50LmpzIiwid2VicGFjazov
Ly8uL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LmpzIiwid2VicGFj
azovLy8uL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNEcmFnRXZlbnQuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0ZvY3VzRXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4v
fi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0lucHV0RXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1kb20vbGliL1N5bnRoZXRpY0tleWJvYXJkRXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1kb20vbGliL1N5bnRoZXRpY1RvdWNoRXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFj
dC1kb20vbGliL1N5bnRoZXRpY1RyYW5zaXRpb25FdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3Jl
YWN0LWRvbS9saWIvU3ludGhldGljV2hlZWxFdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
LWRvbS9saWIvYWRsZXIzMi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZGFuZ2Vy
b3VzU3R5bGVWYWx1ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZmluZERPTU5v
ZGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2ZsYXR0ZW5DaGlsZHJlbi5qcyIs
IndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZ2V0RXZlbnRLZXkuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9yZWFjdC1kb20vbGliL2dldEl0ZXJhdG9yRm4uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFj
dC1kb20vbGliL2dldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1kb20vbGliL2dldFZlbmRvclByZWZpeGVkRXZlbnROYW1lLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtZG9tL2xpYi9xdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlci5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvcmVuZGVyU3VidHJlZUludG9Db250YWluZXIuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1yZWR1eC9saWIvY29tcG9uZW50cy9Qcm92aWRlci5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0L2Nvbm5lY3QuanMiLCJ3ZWJwYWNr
Oi8vLy4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC9tYXBEaXNwYXRjaFRvUHJvcHMuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC9tYXBTdGF0ZVRvUHJvcHMuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC9tZXJnZVByb3BzLmpzIiwi
d2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGliL2Nvbm5lY3Qvc2VsZWN0b3JGYWN0b3J5Lmpz
Iiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGliL2Nvbm5lY3QvdmVyaWZ5U3Vic2VsZWN0
b3JzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGliL3V0aWxzL1N1YnNjcmlwdGlv
bi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xpYi91dGlscy9zaGFsbG93RXF1YWwu
anMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1zY3JpcHRzL2NvbmZpZy9wb2x5ZmlsbHMuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1zY3JpcHRzL34vYXNhcC9icm93c2VyLXJhdy5qcyIsIndlYnBh
Y2s6Ly8vLi9zcmMvYWN0aW9ucy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50
cy9Gb290ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSGVhZGVyLmpzIiwid2Vi
cGFjazovLy8uL3NyYy9jb21wb25lbnRzL01haW5TZWN0aW9uLmpzIiwid2VicGFjazovLy8uL3Ny
Yy9jb21wb25lbnRzL1RvZG9JdGVtLmpzIiwid2VicGFjazovLy8uL3NyYy9jb250YWluZXJzL0Fw
cC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlZHVj
ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9yZWR1Y2Vycy90b2Rvcy5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlYWN0LXNjcmlwdHMvfi9vYmplY3QtYXNzaWduL2luZGV4LmpzIiwid2VicGFj
azovLy8uL34vcmVhY3Qtc2NyaXB0cy9+L3Byb21pc2UvbGliL2VzNi1leHRlbnNpb25zLmpzIiwi
d2VicGFjazovLy8uL34vcmVhY3Qtc2NyaXB0cy9+L3Byb21pc2UvbGliL3JlamVjdGlvbi10cmFj
a2luZy5qcyIsIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vbW9kdWxlLmpzIiwid2VicGFj
azovLy8uL34vcmVhY3Qtc2NyaXB0cy9+L3doYXR3Zy1mZXRjaC9mZXRjaC5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdENoaWxkcmVuLmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qv
bGliL1JlYWN0RE9NRmFjdG9yaWVzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL1JlYWN0
UHJvcFR5cGVzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL2NyZWF0ZUNsYXNzLmpzIiwi
d2VicGFjazovLy8uL34vcmVhY3QvbGliL2dldE5leHREZWJ1Z0lELmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QvbGliL2xvd1ByaW9yaXR5V2FybmluZy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
L2xpYi9vbmx5Q2hpbGQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvdHJhdmVyc2VBbGxD
aGlsZHJlbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlZHV4L2xpYi9hcHBseU1pZGRsZXdhcmUuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWR1eC9saWIvYmluZEFjdGlvbkNyZWF0b3JzLmpzIiwid2VicGFj
azovLy8uL34vcmVkdXgvbGliL2NvbWJpbmVSZWR1Y2Vycy5qcyIsIndlYnBhY2s6Ly8vLi9+L3N5
bWJvbC1vYnNlcnZhYmxlL2luZGV4LmpzIiwid2VicGFjazovLy8uL34vc3ltYm9sLW9ic2VydmFi
bGUvbGliL2luZGV4LmpzIiwid2VicGFjazovLy8uL34vc3ltYm9sLW9ic2VydmFibGUvbGliL3Bv
bnlmaWxsLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL1Bvb2xlZENsYXNzLmpzIl0sIm5h
bWVzIjpbIm1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpbnN0YWxs
ZWRNb2R1bGVzIiwiZXhwb3J0cyIsIm1vZHVsZSIsImlkIiwibG9hZGVkIiwiY2FsbCIsIm0iLCJj
IiwicCIsImkiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIl9tIiwiYXJn
cyIsInNsaWNlIiwiZm4iLCJhIiwiYiIsImFwcGx5IiwidGhpcyIsImNvbmNhdCIsImludmFyaWFu
dCIsImNvbmRpdGlvbiIsImZvcm1hdCIsImQiLCJlIiwiZiIsInZhbGlkYXRlRm9ybWF0IiwiZXJy
b3IiLCJ1bmRlZmluZWQiLCJFcnJvciIsImFyZ0luZGV4IiwicmVwbGFjZSIsIm5hbWUiLCJmcmFt
ZXNUb1BvcCIsImVtcHR5RnVuY3Rpb24iLCJ3YXJuaW5nIiwicmVhY3RQcm9kSW52YXJpYW50Iiwi
Y29kZSIsImFyZ0NvdW50IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwibWVzc2FnZSIsImFyZ0lkeCIs
ImVuY29kZVVSSUNvbXBvbmVudCIsInRvT2JqZWN0IiwidmFsIiwiVHlwZUVycm9yIiwic2hvdWxk
VXNlTmF0aXZlIiwiYXNzaWduIiwidGVzdDEiLCJTdHJpbmciLCJnZXRPd25Qcm9wZXJ0eU5hbWVz
IiwidGVzdDIiLCJmcm9tQ2hhckNvZGUiLCJvcmRlcjIiLCJtYXAiLCJuIiwiam9pbiIsInRlc3Qz
Iiwic3BsaXQiLCJmb3JFYWNoIiwibGV0dGVyIiwia2V5cyIsImVyciIsImdldE93blByb3BlcnR5
U3ltYm9scyIsInByb3BJc0VudW1lcmFibGUiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRhcmdl
dCIsInNvdXJjZSIsImZyb20iLCJzeW1ib2xzIiwidG8iLCJzIiwia2V5Iiwic2hvdWxkUHJlY2Fj
aGVOb2RlIiwibm9kZSIsIm5vZGVJRCIsIm5vZGVUeXBlIiwiZ2V0QXR0cmlidXRlIiwiQVRUUl9O
QU1FIiwibm9kZVZhbHVlIiwiZ2V0UmVuZGVyZWRIb3N0T3JUZXh0RnJvbUNvbXBvbmVudCIsImNv
bXBvbmVudCIsInJlbmRlcmVkIiwiX3JlbmRlcmVkQ29tcG9uZW50IiwicHJlY2FjaGVOb2RlIiwi
aW5zdCIsImhvc3RJbnN0IiwiX2hvc3ROb2RlIiwiaW50ZXJuYWxJbnN0YW5jZUtleSIsInVuY2Fj
aGVOb2RlIiwicHJlY2FjaGVDaGlsZE5vZGVzIiwiX2ZsYWdzIiwiRmxhZ3MiLCJoYXNDYWNoZWRD
aGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJfcmVuZGVyZWRDaGlsZHJlbiIsImNoaWxkTm9kZSIsImZp
cnN0Q2hpbGQiLCJvdXRlciIsImNoaWxkSW5zdCIsImNoaWxkSUQiLCJfZG9tSUQiLCJuZXh0U2li
bGluZyIsIl9wcm9kSW52YXJpYW50IiwiZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUiLCJwYXJl
bnRzIiwicHVzaCIsInBhcmVudE5vZGUiLCJjbG9zZXN0IiwicG9wIiwiZ2V0SW5zdGFuY2VGcm9t
Tm9kZSIsImdldE5vZGVGcm9tSW5zdGFuY2UiLCJfaG9zdFBhcmVudCIsIkRPTVByb3BlcnR5Iiwi
UmVhY3RET01Db21wb25lbnRGbGFncyIsIklEX0FUVFJJQlVURV9OQU1FIiwiTWF0aCIsInJhbmRv
bSIsInRvU3RyaW5nIiwiUmVhY3RET01Db21wb25lbnRUcmVlIiwiY2FuVXNlRE9NIiwid2luZG93
IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiRXhlY3V0aW9uRW52aXJvbm1lbnQiLCJjYW5V
c2VXb3JrZXJzIiwiV29ya2VyIiwiY2FuVXNlRXZlbnRMaXN0ZW5lcnMiLCJhZGRFdmVudExpc3Rl
bmVyIiwiYXR0YWNoRXZlbnQiLCJjYW5Vc2VWaWV3cG9ydCIsInNjcmVlbiIsImlzSW5Xb3JrZXIi
LCJtYWtlRW1wdHlGdW5jdGlvbiIsImFyZyIsInRoYXRSZXR1cm5zIiwidGhhdFJldHVybnNGYWxz
ZSIsInRoYXRSZXR1cm5zVHJ1ZSIsInRoYXRSZXR1cm5zTnVsbCIsInRoYXRSZXR1cm5zVGhpcyIs
InRoYXRSZXR1cm5zQXJndW1lbnQiLCJkZWJ1Z1Rvb2wiLCJlbnN1cmVJbmplY3RlZCIsIlJlYWN0
VXBkYXRlcyIsIlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24iLCJiYXRjaGluZ1N0cmF0ZWd5Iiwi
UmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbiIsInJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uIiwi
ZGlydHlDb21wb25lbnRzTGVuZ3RoIiwiY2FsbGJhY2tRdWV1ZSIsIkNhbGxiYWNrUXVldWUiLCJn
ZXRQb29sZWQiLCJyZWNvbmNpbGVUcmFuc2FjdGlvbiIsImJhdGNoZWRVcGRhdGVzIiwiY2FsbGJh
Y2siLCJtb3VudE9yZGVyQ29tcGFyYXRvciIsImMxIiwiYzIiLCJfbW91bnRPcmRlciIsInJ1bkJh
dGNoZWRVcGRhdGVzIiwidHJhbnNhY3Rpb24iLCJsZW4iLCJkaXJ0eUNvbXBvbmVudHMiLCJzb3J0
IiwidXBkYXRlQmF0Y2hOdW1iZXIiLCJjYWxsYmFja3MiLCJfcGVuZGluZ0NhbGxiYWNrcyIsIm1h
cmtlck5hbWUiLCJSZWFjdEZlYXR1cmVGbGFncyIsImxvZ1RvcExldmVsUmVuZGVycyIsIm5hbWVk
Q29tcG9uZW50IiwiX2N1cnJlbnRFbGVtZW50IiwidHlwZSIsImlzUmVhY3RUb3BMZXZlbFdyYXBw
ZXIiLCJnZXROYW1lIiwiY29uc29sZSIsInRpbWUiLCJSZWFjdFJlY29uY2lsZXIiLCJwZXJmb3Jt
VXBkYXRlSWZOZWNlc3NhcnkiLCJ0aW1lRW5kIiwiaiIsImVucXVldWUiLCJnZXRQdWJsaWNJbnN0
YW5jZSIsImVucXVldWVVcGRhdGUiLCJpc0JhdGNoaW5nVXBkYXRlcyIsIl91cGRhdGVCYXRjaE51
bWJlciIsImFzYXAiLCJjb250ZXh0IiwiYXNhcENhbGxiYWNrUXVldWUiLCJhc2FwRW5xdWV1ZWQi
LCJfYXNzaWduIiwiUG9vbGVkQ2xhc3MiLCJUcmFuc2FjdGlvbiIsIk5FU1RFRF9VUERBVEVTIiwi
aW5pdGlhbGl6ZSIsImNsb3NlIiwic3BsaWNlIiwiZmx1c2hCYXRjaGVkVXBkYXRlcyIsIlVQREFU
RV9RVUVVRUlORyIsInJlc2V0Iiwibm90aWZ5QWxsIiwiVFJBTlNBQ1RJT05fV1JBUFBFUlMiLCJn
ZXRUcmFuc2FjdGlvbldyYXBwZXJzIiwiZGVzdHJ1Y3RvciIsInJlbGVhc2UiLCJwZXJmb3JtIiwi
bWV0aG9kIiwic2NvcGUiLCJhZGRQb29saW5nVG8iLCJxdWV1ZSIsIlJlYWN0VXBkYXRlc0luamVj
dGlvbiIsImluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uIiwiUmVjb25jaWxlVHJhbnNhY3Rpb24i
LCJpbmplY3RCYXRjaGluZ1N0cmF0ZWd5IiwiX2JhdGNoaW5nU3RyYXRlZ3kiLCJpbmplY3Rpb24i
LCJTeW50aGV0aWNFdmVudCIsImRpc3BhdGNoQ29uZmlnIiwidGFyZ2V0SW5zdCIsIm5hdGl2ZUV2
ZW50IiwibmF0aXZlRXZlbnRUYXJnZXQiLCJfdGFyZ2V0SW5zdCIsIkludGVyZmFjZSIsImNvbnN0
cnVjdG9yIiwicHJvcE5hbWUiLCJub3JtYWxpemUiLCJkZWZhdWx0UHJldmVudGVkIiwicmV0dXJu
VmFsdWUiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsInNob3Vs
ZEJlUmVsZWFzZWRQcm9wZXJ0aWVzIiwiUHJveHkiLCJFdmVudEludGVyZmFjZSIsImN1cnJlbnRU
YXJnZXQiLCJldmVudFBoYXNlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJ0aW1lU3RhbXAiLCJl
dmVudCIsIkRhdGUiLCJub3ciLCJpc1RydXN0ZWQiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9w
YWdhdGlvbiIsImNhbmNlbEJ1YmJsZSIsInBlcnNpc3QiLCJpc1BlcnNpc3RlbnQiLCJhdWdtZW50
Q2xhc3MiLCJDbGFzcyIsIlN1cGVyIiwiRSIsImZvdXJBcmd1bWVudFBvb2xlciIsIlJlYWN0Q3Vy
cmVudE93bmVyIiwiY3VycmVudCIsImluc2VydFRyZWVDaGlsZHJlbiIsInRyZWUiLCJlbmFibGVM
YXp5IiwiaW5zZXJ0VHJlZUJlZm9yZSIsImh0bWwiLCJzZXRJbm5lckhUTUwiLCJ0ZXh0Iiwic2V0
VGV4dENvbnRlbnQiLCJyZXBsYWNlQ2hpbGRXaXRoVHJlZSIsIm9sZE5vZGUiLCJuZXdUcmVlIiwi
cmVwbGFjZUNoaWxkIiwicXVldWVDaGlsZCIsInBhcmVudFRyZWUiLCJjaGlsZFRyZWUiLCJhcHBl
bmRDaGlsZCIsInF1ZXVlSFRNTCIsInF1ZXVlVGV4dCIsIm5vZGVOYW1lIiwiRE9NTGF6eVRyZWUi
LCJET01OYW1lc3BhY2VzIiwiY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiIsIkVM
RU1FTlRfTk9ERV9UWVBFIiwiRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFIiwiZG9jdW1lbnRN
b2RlIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidGVzdCIsInJlZmVyZW5jZU5vZGUiLCJ0b0xv
d2VyQ2FzZSIsIm5hbWVzcGFjZVVSSSIsImluc2VydEJlZm9yZSIsImNoZWNrTWFzayIsInZhbHVl
IiwiYml0bWFzayIsIkRPTVByb3BlcnR5SW5qZWN0aW9uIiwiTVVTVF9VU0VfUFJPUEVSVFkiLCJI
QVNfQk9PTEVBTl9WQUxVRSIsIkhBU19OVU1FUklDX1ZBTFVFIiwiSEFTX1BPU0lUSVZFX05VTUVS
SUNfVkFMVUUiLCJIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFIiwiaW5qZWN0RE9NUHJvcGVy
dHlDb25maWciLCJkb21Qcm9wZXJ0eUNvbmZpZyIsIkluamVjdGlvbiIsIlByb3BlcnRpZXMiLCJE
T01BdHRyaWJ1dGVOYW1lc3BhY2VzIiwiRE9NQXR0cmlidXRlTmFtZXMiLCJET01Qcm9wZXJ0eU5h
bWVzIiwiRE9NTXV0YXRpb25NZXRob2RzIiwiaXNDdXN0b21BdHRyaWJ1dGUiLCJfaXNDdXN0b21B
dHRyaWJ1dGVGdW5jdGlvbnMiLCJwcm9wZXJ0aWVzIiwibG93ZXJDYXNlZCIsInByb3BDb25maWci
LCJwcm9wZXJ0eUluZm8iLCJhdHRyaWJ1dGVOYW1lIiwiYXR0cmlidXRlTmFtZXNwYWNlIiwicHJv
cGVydHlOYW1lIiwibXV0YXRpb25NZXRob2QiLCJtdXN0VXNlUHJvcGVydHkiLCJoYXNCb29sZWFu
VmFsdWUiLCJoYXNOdW1lcmljVmFsdWUiLCJoYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZSIsImhhc092
ZXJsb2FkZWRCb29sZWFuVmFsdWUiLCJBVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSIiwiUk9PVF9B
VFRSSUJVVEVfTkFNRSIsIkFUVFJJQlVURV9OQU1FX0NIQVIiLCJnZXRQb3NzaWJsZVN0YW5kYXJk
TmFtZSIsImlzQ3VzdG9tQXR0cmlidXRlRm4iLCJhdHRhY2hSZWZzIiwiUmVhY3RSZWYiLCJtb3Vu
dENvbXBvbmVudCIsImludGVybmFsSW5zdGFuY2UiLCJob3N0UGFyZW50IiwiaG9zdENvbnRhaW5l
ckluZm8iLCJwYXJlbnREZWJ1Z0lEIiwibWFya3VwIiwicmVmIiwiZ2V0UmVhY3RNb3VudFJlYWR5
IiwiZ2V0SG9zdE5vZGUiLCJ1bm1vdW50Q29tcG9uZW50Iiwic2FmZWx5IiwiZGV0YWNoUmVmcyIs
InJlY2VpdmVDb21wb25lbnQiLCJuZXh0RWxlbWVudCIsInByZXZFbGVtZW50IiwiX2NvbnRleHQi
LCJyZWZzQ2hhbmdlZCIsInNob3VsZFVwZGF0ZVJlZnMiLCJSZWFjdEJhc2VDbGFzc2VzIiwiUmVh
Y3RDaGlsZHJlbiIsIlJlYWN0RE9NRmFjdG9yaWVzIiwiUmVhY3RFbGVtZW50IiwiUmVhY3RQcm9w
VHlwZXMiLCJSZWFjdFZlcnNpb24iLCJjcmVhdGVSZWFjdENsYXNzIiwib25seUNoaWxkIiwiY3Jl
YXRlRmFjdG9yeSIsImNsb25lRWxlbWVudCIsIl9fc3ByZWFkIiwiY3JlYXRlTWl4aW4iLCJtaXhp
biIsIlJlYWN0IiwiQ2hpbGRyZW4iLCJjb3VudCIsInRvQXJyYXkiLCJvbmx5IiwiQ29tcG9uZW50
IiwiUHVyZUNvbXBvbmVudCIsImlzVmFsaWRFbGVtZW50IiwiUHJvcFR5cGVzIiwiY3JlYXRlQ2xh
c3MiLCJET00iLCJ2ZXJzaW9uIiwiaGFzVmFsaWRSZWYiLCJjb25maWciLCJoYXNWYWxpZEtleSIs
IlJFQUNUX0VMRU1FTlRfVFlQRSIsIlJFU0VSVkVEX1BST1BTIiwiX19zZWxmIiwiX19zb3VyY2Ui
LCJzZWxmIiwib3duZXIiLCJwcm9wcyIsImVsZW1lbnQiLCIkJHR5cGVvZiIsIl9vd25lciIsImNo
aWxkcmVuTGVuZ3RoIiwiY2hpbGRBcnJheSIsIkFycmF5IiwiZGVmYXVsdFByb3BzIiwiZmFjdG9y
eSIsImJpbmQiLCJjbG9uZUFuZFJlcGxhY2VLZXkiLCJvbGRFbGVtZW50IiwibmV3S2V5IiwibmV3
RWxlbWVudCIsIl9zZWxmIiwiX3NvdXJjZSIsIm9iamVjdCIsImlzSW50ZXJhY3RpdmUiLCJ0YWci
LCJzaG91bGRQcmV2ZW50TW91c2VFdmVudCIsImRpc2FibGVkIiwiRXZlbnRQbHVnaW5SZWdpc3Ry
eSIsIkV2ZW50UGx1Z2luVXRpbHMiLCJSZWFjdEVycm9yVXRpbHMiLCJhY2N1bXVsYXRlSW50byIs
ImZvckVhY2hBY2N1bXVsYXRlZCIsImxpc3RlbmVyQmFuayIsImV2ZW50UXVldWUiLCJleGVjdXRl
RGlzcGF0Y2hlc0FuZFJlbGVhc2UiLCJzaW11bGF0ZWQiLCJleGVjdXRlRGlzcGF0Y2hlc0luT3Jk
ZXIiLCJleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VTaW11bGF0ZWQiLCJleGVjdXRlRGlzcGF0
Y2hlc0FuZFJlbGVhc2VUb3BMZXZlbCIsImdldERpY3Rpb25hcnlLZXkiLCJfcm9vdE5vZGVJRCIs
IkV2ZW50UGx1Z2luSHViIiwiaW5qZWN0RXZlbnRQbHVnaW5PcmRlciIsImluamVjdEV2ZW50UGx1
Z2luc0J5TmFtZSIsInB1dExpc3RlbmVyIiwicmVnaXN0cmF0aW9uTmFtZSIsImxpc3RlbmVyIiwi
YmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUiLCJQbHVnaW5Nb2R1bGUiLCJyZWdpc3RyYXRpb25OYW1l
TW9kdWxlcyIsImRpZFB1dExpc3RlbmVyIiwiZ2V0TGlzdGVuZXIiLCJkZWxldGVMaXN0ZW5lciIs
IndpbGxEZWxldGVMaXN0ZW5lciIsImRlbGV0ZUFsbExpc3RlbmVycyIsImV4dHJhY3RFdmVudHMi
LCJ0b3BMZXZlbFR5cGUiLCJldmVudHMiLCJwbHVnaW5zIiwicG9zc2libGVQbHVnaW4iLCJleHRy
YWN0ZWRFdmVudHMiLCJlbnF1ZXVlRXZlbnRzIiwicHJvY2Vzc0V2ZW50UXVldWUiLCJwcm9jZXNz
aW5nRXZlbnRRdWV1ZSIsInJldGhyb3dDYXVnaHRFcnJvciIsIl9fcHVyZ2UiLCJfX2dldExpc3Rl
bmVyQmFuayIsImxpc3RlbmVyQXRQaGFzZSIsInByb3BhZ2F0aW9uUGhhc2UiLCJwaGFzZWRSZWdp
c3RyYXRpb25OYW1lcyIsImFjY3VtdWxhdGVEaXJlY3Rpb25hbERpc3BhdGNoZXMiLCJwaGFzZSIs
Il9kaXNwYXRjaExpc3RlbmVycyIsIl9kaXNwYXRjaEluc3RhbmNlcyIsImFjY3VtdWxhdGVUd29Q
aGFzZURpc3BhdGNoZXNTaW5nbGUiLCJ0cmF2ZXJzZVR3b1BoYXNlIiwiYWNjdW11bGF0ZVR3b1Bo
YXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQiLCJwYXJlbnRJbnN0IiwiZ2V0UGFyZW50SW5z
dGFuY2UiLCJhY2N1bXVsYXRlRGlzcGF0Y2hlcyIsImlnbm9yZWREaXJlY3Rpb24iLCJhY2N1bXVs
YXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZSIsImFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMi
LCJhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldCIsImFjY3VtdWxhdGVFbnRl
ckxlYXZlRGlzcGF0Y2hlcyIsImxlYXZlIiwiZW50ZXIiLCJ0cmF2ZXJzZUVudGVyTGVhdmUiLCJh
Y2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyIsIkV2ZW50UHJvcGFnYXRvcnMiLCJSZWFjdEluc3Rh
bmNlTWFwIiwicmVtb3ZlIiwiX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSIsImdldCIsImhhcyIsInNl
dCIsIlN5bnRoZXRpY1VJRXZlbnQiLCJkaXNwYXRjaE1hcmtlciIsImdldEV2ZW50VGFyZ2V0Iiwi
VUlFdmVudEludGVyZmFjZSIsInZpZXciLCJkb2MiLCJvd25lckRvY3VtZW50IiwiZGVmYXVsdFZp
ZXciLCJwYXJlbnRXaW5kb3ciLCJkZXRhaWwiLCJlbXB0eU9iamVjdCIsImdldExpc3RlbmluZ0Zv
ckRvY3VtZW50IiwibW91bnRBdCIsInRvcExpc3RlbmVyc0lES2V5IiwicmVhY3RUb3BMaXN0ZW5l
cnNDb3VudGVyIiwiYWxyZWFkeUxpc3RlbmluZ1RvIiwiaGFzRXZlbnRQYWdlWFkiLCJSZWFjdEV2
ZW50RW1pdHRlck1peGluIiwiVmlld3BvcnRNZXRyaWNzIiwiZ2V0VmVuZG9yUHJlZml4ZWRFdmVu
dE5hbWUiLCJpc0V2ZW50U3VwcG9ydGVkIiwiaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUiLCJ0b3BF
dmVudE1hcHBpbmciLCJ0b3BBYm9ydCIsInRvcEFuaW1hdGlvbkVuZCIsInRvcEFuaW1hdGlvbkl0
ZXJhdGlvbiIsInRvcEFuaW1hdGlvblN0YXJ0IiwidG9wQmx1ciIsInRvcENhblBsYXkiLCJ0b3BD
YW5QbGF5VGhyb3VnaCIsInRvcENoYW5nZSIsInRvcENsaWNrIiwidG9wQ29tcG9zaXRpb25FbmQi
LCJ0b3BDb21wb3NpdGlvblN0YXJ0IiwidG9wQ29tcG9zaXRpb25VcGRhdGUiLCJ0b3BDb250ZXh0
TWVudSIsInRvcENvcHkiLCJ0b3BDdXQiLCJ0b3BEb3VibGVDbGljayIsInRvcERyYWciLCJ0b3BE
cmFnRW5kIiwidG9wRHJhZ0VudGVyIiwidG9wRHJhZ0V4aXQiLCJ0b3BEcmFnTGVhdmUiLCJ0b3BE
cmFnT3ZlciIsInRvcERyYWdTdGFydCIsInRvcERyb3AiLCJ0b3BEdXJhdGlvbkNoYW5nZSIsInRv
cEVtcHRpZWQiLCJ0b3BFbmNyeXB0ZWQiLCJ0b3BFbmRlZCIsInRvcEVycm9yIiwidG9wRm9jdXMi
LCJ0b3BJbnB1dCIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRvcEtleVVwIiwidG9wTG9h
ZGVkRGF0YSIsInRvcExvYWRlZE1ldGFkYXRhIiwidG9wTG9hZFN0YXJ0IiwidG9wTW91c2VEb3du
IiwidG9wTW91c2VNb3ZlIiwidG9wTW91c2VPdXQiLCJ0b3BNb3VzZU92ZXIiLCJ0b3BNb3VzZVVw
IiwidG9wUGFzdGUiLCJ0b3BQYXVzZSIsInRvcFBsYXkiLCJ0b3BQbGF5aW5nIiwidG9wUHJvZ3Jl
c3MiLCJ0b3BSYXRlQ2hhbmdlIiwidG9wU2Nyb2xsIiwidG9wU2Vla2VkIiwidG9wU2Vla2luZyIs
InRvcFNlbGVjdGlvbkNoYW5nZSIsInRvcFN0YWxsZWQiLCJ0b3BTdXNwZW5kIiwidG9wVGV4dElu
cHV0IiwidG9wVGltZVVwZGF0ZSIsInRvcFRvdWNoQ2FuY2VsIiwidG9wVG91Y2hFbmQiLCJ0b3BU
b3VjaE1vdmUiLCJ0b3BUb3VjaFN0YXJ0IiwidG9wVHJhbnNpdGlvbkVuZCIsInRvcFZvbHVtZUNo
YW5nZSIsInRvcFdhaXRpbmciLCJ0b3BXaGVlbCIsIlJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciIs
IlJlYWN0RXZlbnRMaXN0ZW5lciIsImluamVjdFJlYWN0RXZlbnRMaXN0ZW5lciIsInNldEhhbmRs
ZVRvcExldmVsIiwiaGFuZGxlVG9wTGV2ZWwiLCJzZXRFbmFibGVkIiwiZW5hYmxlZCIsImlzRW5h
YmxlZCIsImxpc3RlblRvIiwiY29udGVudERvY3VtZW50SGFuZGxlIiwiaXNMaXN0ZW5pbmciLCJk
ZXBlbmRlbmNpZXMiLCJyZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzIiwiZGVwZW5kZW5jeSIs
InRyYXBCdWJibGVkRXZlbnQiLCJ0cmFwQ2FwdHVyZWRFdmVudCIsIldJTkRPV19IQU5ETEUiLCJo
YW5kbGVyQmFzZU5hbWUiLCJoYW5kbGUiLCJzdXBwb3J0c0V2ZW50UGFnZVhZIiwiY3JlYXRlRXZl
bnQiLCJldiIsImVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZyIsInJlZnJlc2giLCJyZWZyZXNo
U2Nyb2xsVmFsdWVzIiwibW9uaXRvclNjcm9sbFZhbHVlIiwiU3ludGhldGljTW91c2VFdmVudCIs
ImdldEV2ZW50TW9kaWZpZXJTdGF0ZSIsIk1vdXNlRXZlbnRJbnRlcmZhY2UiLCJzY3JlZW5YIiwi
c2NyZWVuWSIsImNsaWVudFgiLCJjbGllbnRZIiwiY3RybEtleSIsInNoaWZ0S2V5IiwiYWx0S2V5
IiwibWV0YUtleSIsImdldE1vZGlmaWVyU3RhdGUiLCJidXR0b24iLCJidXR0b25zIiwicmVsYXRl
ZFRhcmdldCIsImZyb21FbGVtZW50Iiwic3JjRWxlbWVudCIsInRvRWxlbWVudCIsInBhZ2VYIiwi
Y3VycmVudFNjcm9sbExlZnQiLCJwYWdlWSIsImN1cnJlbnRTY3JvbGxUb3AiLCJPQlNFUlZFRF9F
UlJPUiIsIlRyYW5zYWN0aW9uSW1wbCIsInRyYW5zYWN0aW9uV3JhcHBlcnMiLCJ3cmFwcGVySW5p
dERhdGEiLCJfaXNJblRyYW5zYWN0aW9uIiwiaXNJblRyYW5zYWN0aW9uIiwiZXJyb3JUaHJvd24i
LCJyZXQiLCJpbml0aWFsaXplQWxsIiwiY2xvc2VBbGwiLCJzdGFydEluZGV4Iiwid3JhcHBlciIs
ImluaXREYXRhIiwiZXNjYXBlSHRtbCIsInN0cmluZyIsInN0ciIsIm1hdGNoIiwibWF0Y2hIdG1s
UmVnRXhwIiwiZXhlYyIsImVzY2FwZSIsImluZGV4IiwibGFzdEluZGV4IiwiY2hhckNvZGVBdCIs
InN1YnN0cmluZyIsImVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciIsInJldXNhYmxlU1ZHQ29u
dGFpbmVyIiwiV0hJVEVTUEFDRV9URVNUIiwiTk9OVklTSUJMRV9URVNUIiwic3ZnIiwiaW5uZXJI
VE1MIiwic3ZnTm9kZSIsInRlc3RFbGVtZW50IiwidGV4dE5vZGUiLCJkYXRhIiwicmVtb3ZlQ2hp
bGQiLCJkZWxldGVEYXRhIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIm9iaiIsIl9fZXNNb2R1
bGUiLCJkZWZhdWx0IiwiY29tcG9zZSIsImFwcGx5TWlkZGxld2FyZSIsImJpbmRBY3Rpb25DcmVh
dG9ycyIsImNvbWJpbmVSZWR1Y2VycyIsImNyZWF0ZVN0b3JlIiwiX2NyZWF0ZVN0b3JlIiwiX2Ny
ZWF0ZVN0b3JlMiIsIl9jb21iaW5lUmVkdWNlcnMiLCJfY29tYmluZVJlZHVjZXJzMiIsIl9iaW5k
QWN0aW9uQ3JlYXRvcnMiLCJfYmluZEFjdGlvbkNyZWF0b3JzMiIsIl9hcHBseU1pZGRsZXdhcmUi
LCJfYXBwbHlNaWRkbGV3YXJlMiIsIl9jb21wb3NlIiwiX2NvbXBvc2UyIiwiX3dhcm5pbmciLCJf
X1dFQlBBQ0tfQU1EX0RFRklORV9BUlJBWV9fIiwiX19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxU
X18iLCJjbGFzc05hbWVzIiwiY2xhc3NlcyIsImFyZ1R5cGUiLCJpc0FycmF5IiwiaGFzT3duIiwi
aXMiLCJ4IiwieSIsInNoYWxsb3dFcXVhbCIsIm9iakEiLCJvYmpCIiwia2V5c0EiLCJrZXlzQiIs
ImlzUGxhaW5PYmplY3QiLCJpc09iamVjdExpa2UiLCJiYXNlR2V0VGFnIiwib2JqZWN0VGFnIiwi
cHJvdG8iLCJnZXRQcm90b3R5cGUiLCJDdG9yIiwiZnVuY1RvU3RyaW5nIiwib2JqZWN0Q3RvclN0
cmluZyIsImZ1bmNQcm90byIsIkZ1bmN0aW9uIiwib2JqZWN0UHJvdG8iLCJnZXROb2RlQWZ0ZXIi
LCJpbnNlcnRMYXp5VHJlZUNoaWxkQXQiLCJtb3ZlQ2hpbGQiLCJtb3ZlRGVsaW1pdGVkVGV4dCIs
Imluc2VydENoaWxkQXQiLCJjbG9zaW5nQ29tbWVudCIsInJlbW92ZURlbGltaXRlZFRleHQiLCJv
cGVuaW5nQ29tbWVudCIsIm5leHROb2RlIiwic3RhcnROb2RlIiwicmVwbGFjZURlbGltaXRlZFRl
eHQiLCJzdHJpbmdUZXh0Iiwibm9kZUFmdGVyQ29tbWVudCIsImNyZWF0ZVRleHROb2RlIiwiRGFu
Z2VyIiwiZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAiLCJET01DaGlsZHJlbk9wZXJh
dGlvbnMiLCJwcm9jZXNzVXBkYXRlcyIsInVwZGF0ZXMiLCJrIiwidXBkYXRlIiwiY29udGVudCIs
ImFmdGVyTm9kZSIsImZyb21Ob2RlIiwibWF0aG1sIiwicmVjb21wdXRlUGx1Z2luT3JkZXJpbmci
LCJldmVudFBsdWdpbk9yZGVyIiwicGx1Z2luTmFtZSIsIm5hbWVzVG9QbHVnaW5zIiwicGx1Z2lu
TW9kdWxlIiwicGx1Z2luSW5kZXgiLCJpbmRleE9mIiwicHVibGlzaGVkRXZlbnRzIiwiZXZlbnRU
eXBlcyIsImV2ZW50TmFtZSIsInB1Ymxpc2hFdmVudEZvclBsdWdpbiIsImV2ZW50TmFtZURpc3Bh
dGNoQ29uZmlncyIsInBoYXNlTmFtZSIsInBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUiLCJwdWJsaXNo
UmVnaXN0cmF0aW9uTmFtZSIsInBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMiLCJpbmplY3RlZEV2
ZW50UGx1Z2luT3JkZXIiLCJpbmplY3RlZE5hbWVzVG9QbHVnaW5zIiwiaXNPcmRlcmluZ0RpcnR5
IiwiZ2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQiLCJfcmVzZXRFdmVudFBsdWdpbnMiLCJpc0VuZGlz
aCIsImlzTW92ZWlzaCIsImlzU3RhcnRpc2giLCJleGVjdXRlRGlzcGF0Y2giLCJpbnZva2VHdWFy
ZGVkQ2FsbGJhY2tXaXRoQ2F0Y2giLCJpbnZva2VHdWFyZGVkQ2FsbGJhY2siLCJkaXNwYXRjaExp
c3RlbmVycyIsImRpc3BhdGNoSW5zdGFuY2VzIiwiZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3Rv
cEF0VHJ1ZUltcGwiLCJleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlIiwiZXhlY3V0
ZURpcmVjdERpc3BhdGNoIiwiZGlzcGF0Y2hMaXN0ZW5lciIsImRpc3BhdGNoSW5zdGFuY2UiLCJy
ZXMiLCJoYXNEaXNwYXRjaGVzIiwiQ29tcG9uZW50VHJlZSIsIlRyZWVUcmF2ZXJzYWwiLCJpbmpl
Y3RDb21wb25lbnRUcmVlIiwiSW5qZWN0ZWQiLCJpbmplY3RUcmVlVHJhdmVyc2FsIiwiaXNBbmNl
c3RvciIsImdldExvd2VzdENvbW1vbkFuY2VzdG9yIiwiYXJnRnJvbSIsImFyZ1RvIiwiZXNjYXBl
UmVnZXgiLCJlc2NhcGVyTG9va3VwIiwiPSIsIjoiLCJlc2NhcGVkU3RyaW5nIiwidW5lc2NhcGUi
LCJ1bmVzY2FwZVJlZ2V4IiwidW5lc2NhcGVyTG9va3VwIiwiPTAiLCI9MiIsImtleVN1YnN0cmlu
ZyIsIktleUVzY2FwZVV0aWxzIiwiX2Fzc2VydFNpbmdsZUxpbmsiLCJpbnB1dFByb3BzIiwiY2hl
Y2tlZExpbmsiLCJ2YWx1ZUxpbmsiLCJfYXNzZXJ0VmFsdWVMaW5rIiwib25DaGFuZ2UiLCJfYXNz
ZXJ0Q2hlY2tlZExpbmsiLCJjaGVja2VkIiwiZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtIiwi
UmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJwcm9wVHlwZXNGYWN0b3J5IiwiaGFzUmVhZE9ubHlWYWx1
ZSIsImNoZWNrYm94IiwiaW1hZ2UiLCJoaWRkZW4iLCJyYWRpbyIsInN1Ym1pdCIsInByb3BUeXBl
cyIsImNvbXBvbmVudE5hbWUiLCJyZWFkT25seSIsImZ1bmMiLCJsb2dnZWRUeXBlRmFpbHVyZXMi
LCJMaW5rZWRWYWx1ZVV0aWxzIiwiY2hlY2tQcm9wVHlwZXMiLCJ0YWdOYW1lIiwiZ2V0VmFsdWUi
LCJnZXRDaGVja2VkIiwiZXhlY3V0ZU9uQ2hhbmdlIiwicmVxdWVzdENoYW5nZSIsImluamVjdGVk
IiwiUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCIsInJlcGxhY2VOb2RlV2l0aE1hcmt1cCIsInBy
b2Nlc3NDaGlsZHJlblVwZGF0ZXMiLCJpbmplY3RFbnZpcm9ubWVudCIsImVudmlyb25tZW50Iiwi
Y2F1Z2h0RXJyb3IiLCJmb3JtYXRVbmV4cGVjdGVkQXJndW1lbnQiLCJkaXNwbGF5TmFtZSIsImdl
dEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZSIsInB1YmxpY0luc3RhbmNlIiwiY2FsbGVy
TmFtZSIsIlJlYWN0VXBkYXRlUXVldWUiLCJpc01vdW50ZWQiLCJlbnF1ZXVlQ2FsbGJhY2siLCJ2
YWxpZGF0ZUNhbGxiYWNrIiwiZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwiLCJlbnF1ZXVlRm9yY2VV
cGRhdGUiLCJfcGVuZGluZ0ZvcmNlVXBkYXRlIiwiZW5xdWV1ZVJlcGxhY2VTdGF0ZSIsImNvbXBs
ZXRlU3RhdGUiLCJfcGVuZGluZ1N0YXRlUXVldWUiLCJfcGVuZGluZ1JlcGxhY2VTdGF0ZSIsImVu
cXVldWVTZXRTdGF0ZSIsInBhcnRpYWxTdGF0ZSIsImVucXVldWVFbGVtZW50SW50ZXJuYWwiLCJu
ZXh0Q29udGV4dCIsIl9wZW5kaW5nRWxlbWVudCIsIk1TQXBwIiwiZXhlY1Vuc2FmZUxvY2FsRnVu
Y3Rpb24iLCJhcmcwIiwiYXJnMSIsImFyZzIiLCJhcmczIiwiZ2V0RXZlbnRDaGFyQ29kZSIsImNo
YXJDb2RlIiwia2V5Q29kZSIsIm1vZGlmaWVyU3RhdGVHZXR0ZXIiLCJrZXlBcmciLCJzeW50aGV0
aWNFdmVudCIsImtleVByb3AiLCJtb2RpZmllcktleVRvUHJvcCIsIkFsdCIsIkNvbnRyb2wiLCJN
ZXRhIiwiU2hpZnQiLCJjb3JyZXNwb25kaW5nVXNlRWxlbWVudCIsImV2ZW50TmFtZVN1ZmZpeCIs
ImNhcHR1cmUiLCJpc1N1cHBvcnRlZCIsInNldEF0dHJpYnV0ZSIsInVzZUhhc0ZlYXR1cmUiLCJp
bXBsZW1lbnRhdGlvbiIsImhhc0ZlYXR1cmUiLCJzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCIs
InByZXZFbXB0eSIsIm5leHRFbXB0eSIsInByZXZUeXBlIiwibmV4dFR5cGUiLCJ2YWxpZGF0ZURP
TU5lc3RpbmciLCJFdmVudExpc3RlbmVyIiwibGlzdGVuIiwiZXZlbnRUeXBlIiwicmVtb3ZlRXZl
bnRMaXN0ZW5lciIsImRldGFjaEV2ZW50IiwicmVnaXN0ZXJEZWZhdWx0IiwiZm9jdXNOb2RlIiwi
Zm9jdXMiLCJnZXRBY3RpdmVFbGVtZW50IiwiYWN0aXZlRWxlbWVudCIsImJvZHkiLCJyb290Iiwi
U3ltYm9sIiwidGhyb3dPbkRpcmVjdEFjY2VzcyIsInByZWZpeEtleSIsInByZWZpeCIsImNoYXJB
dCIsInRvVXBwZXJDYXNlIiwiaXNVbml0bGVzc051bWJlciIsImFuaW1hdGlvbkl0ZXJhdGlvbkNv
dW50IiwiYm9yZGVySW1hZ2VPdXRzZXQiLCJib3JkZXJJbWFnZVNsaWNlIiwiYm9yZGVySW1hZ2VX
aWR0aCIsImJveEZsZXgiLCJib3hGbGV4R3JvdXAiLCJib3hPcmRpbmFsR3JvdXAiLCJjb2x1bW5D
b3VudCIsImZsZXgiLCJmbGV4R3JvdyIsImZsZXhQb3NpdGl2ZSIsImZsZXhTaHJpbmsiLCJmbGV4
TmVnYXRpdmUiLCJmbGV4T3JkZXIiLCJncmlkUm93IiwiZ3JpZFJvd0VuZCIsImdyaWRSb3dTcGFu
IiwiZ3JpZFJvd1N0YXJ0IiwiZ3JpZENvbHVtbiIsImdyaWRDb2x1bW5FbmQiLCJncmlkQ29sdW1u
U3BhbiIsImdyaWRDb2x1bW5TdGFydCIsImZvbnRXZWlnaHQiLCJsaW5lQ2xhbXAiLCJsaW5lSGVp
Z2h0Iiwib3BhY2l0eSIsIm9yZGVyIiwib3JwaGFucyIsInRhYlNpemUiLCJ3aWRvd3MiLCJ6SW5k
ZXgiLCJ6b29tIiwiZmlsbE9wYWNpdHkiLCJmbG9vZE9wYWNpdHkiLCJzdG9wT3BhY2l0eSIsInN0
cm9rZURhc2hhcnJheSIsInN0cm9rZURhc2hvZmZzZXQiLCJzdHJva2VNaXRlcmxpbWl0Iiwic3Ry
b2tlT3BhY2l0eSIsInN0cm9rZVdpZHRoIiwicHJlZml4ZXMiLCJwcm9wIiwic2hvcnRoYW5kUHJv
cGVydHlFeHBhbnNpb25zIiwiYmFja2dyb3VuZCIsImJhY2tncm91bmRBdHRhY2htZW50IiwiYmFj
a2dyb3VuZENvbG9yIiwiYmFja2dyb3VuZEltYWdlIiwiYmFja2dyb3VuZFBvc2l0aW9uWCIsImJh
Y2tncm91bmRQb3NpdGlvblkiLCJiYWNrZ3JvdW5kUmVwZWF0IiwiYmFja2dyb3VuZFBvc2l0aW9u
IiwiYm9yZGVyIiwiYm9yZGVyV2lkdGgiLCJib3JkZXJTdHlsZSIsImJvcmRlckNvbG9yIiwiYm9y
ZGVyQm90dG9tIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJib3JkZXJCb3R0b21TdHlsZSIsImJvcmRl
ckJvdHRvbUNvbG9yIiwiYm9yZGVyTGVmdCIsImJvcmRlckxlZnRXaWR0aCIsImJvcmRlckxlZnRT
dHlsZSIsImJvcmRlckxlZnRDb2xvciIsImJvcmRlclJpZ2h0IiwiYm9yZGVyUmlnaHRXaWR0aCIs
ImJvcmRlclJpZ2h0U3R5bGUiLCJib3JkZXJSaWdodENvbG9yIiwiYm9yZGVyVG9wIiwiYm9yZGVy
VG9wV2lkdGgiLCJib3JkZXJUb3BTdHlsZSIsImJvcmRlclRvcENvbG9yIiwiZm9udCIsImZvbnRT
dHlsZSIsImZvbnRWYXJpYW50IiwiZm9udFNpemUiLCJmb250RmFtaWx5Iiwib3V0bGluZSIsIm91
dGxpbmVXaWR0aCIsIm91dGxpbmVTdHlsZSIsIm91dGxpbmVDb2xvciIsIkNTU1Byb3BlcnR5Iiwi
X2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIl9jYWxsYmFja3MiLCJf
Y29udGV4dHMiLCJfYXJnIiwiY29udGV4dHMiLCJjaGVja3BvaW50Iiwicm9sbGJhY2siLCJpc0F0
dHJpYnV0ZU5hbWVTYWZlIiwidmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlIiwiaWxsZWdhbEF0
dHJpYnV0ZU5hbWVDYWNoZSIsIlZBTElEX0FUVFJJQlVURV9OQU1FX1JFR0VYIiwic2hvdWxkSWdu
b3JlVmFsdWUiLCJpc05hTiIsInF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyIiwiUmVnRXhw
IiwiRE9NUHJvcGVydHlPcGVyYXRpb25zIiwiY3JlYXRlTWFya3VwRm9ySUQiLCJzZXRBdHRyaWJ1
dGVGb3JJRCIsImNyZWF0ZU1hcmt1cEZvclJvb3QiLCJzZXRBdHRyaWJ1dGVGb3JSb290IiwiY3Jl
YXRlTWFya3VwRm9yUHJvcGVydHkiLCJjcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGUiLCJz
ZXRWYWx1ZUZvclByb3BlcnR5IiwiZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eSIsIm5hbWVzcGFjZSIs
InNldEF0dHJpYnV0ZU5TIiwic2V0VmFsdWVGb3JBdHRyaWJ1dGUiLCJyZW1vdmVBdHRyaWJ1dGUi
LCJkZWxldGVWYWx1ZUZvckF0dHJpYnV0ZSIsInVwZGF0ZU9wdGlvbnNJZlBlbmRpbmdVcGRhdGVB
bmRNb3VudGVkIiwiX3dyYXBwZXJTdGF0ZSIsInBlbmRpbmdVcGRhdGUiLCJ1cGRhdGVPcHRpb25z
IiwiQm9vbGVhbiIsIm11bHRpcGxlIiwicHJvcFZhbHVlIiwic2VsZWN0ZWRWYWx1ZSIsIm9wdGlv
bnMiLCJzZWxlY3RlZCIsIl9oYW5kbGVDaGFuZ2UiLCJkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUi
LCJSZWFjdERPTVNlbGVjdCIsImdldEhvc3RQcm9wcyIsIm1vdW50V3JhcHBlciIsImluaXRpYWxW
YWx1ZSIsImRlZmF1bHRWYWx1ZSIsImxpc3RlbmVycyIsIndhc011bHRpcGxlIiwiZ2V0U2VsZWN0
VmFsdWVDb250ZXh0IiwicG9zdFVwZGF0ZVdyYXBwZXIiLCJlbXB0eUNvbXBvbmVudEZhY3Rvcnki
LCJSZWFjdEVtcHR5Q29tcG9uZW50SW5qZWN0aW9uIiwiaW5qZWN0RW1wdHlDb21wb25lbnRGYWN0
b3J5IiwiUmVhY3RFbXB0eUNvbXBvbmVudCIsImNyZWF0ZSIsImluc3RhbnRpYXRlIiwiY3JlYXRl
SW50ZXJuYWxDb21wb25lbnQiLCJnZW5lcmljQ29tcG9uZW50Q2xhc3MiLCJjcmVhdGVJbnN0YW5j
ZUZvclRleHQiLCJ0ZXh0Q29tcG9uZW50Q2xhc3MiLCJpc1RleHRDb21wb25lbnQiLCJSZWFjdEhv
c3RDb21wb25lbnRJbmplY3Rpb24iLCJpbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MiLCJjb21w
b25lbnRDbGFzcyIsImluamVjdFRleHRDb21wb25lbnRDbGFzcyIsIlJlYWN0SG9zdENvbXBvbmVu
dCIsImlzSW5Eb2N1bWVudCIsImNvbnRhaW5zTm9kZSIsImRvY3VtZW50RWxlbWVudCIsIlJlYWN0
RE9NU2VsZWN0aW9uIiwiUmVhY3RJbnB1dFNlbGVjdGlvbiIsImhhc1NlbGVjdGlvbkNhcGFiaWxp
dGllcyIsImVsZW0iLCJjb250ZW50RWRpdGFibGUiLCJnZXRTZWxlY3Rpb25JbmZvcm1hdGlvbiIs
ImZvY3VzZWRFbGVtIiwic2VsZWN0aW9uUmFuZ2UiLCJnZXRTZWxlY3Rpb24iLCJyZXN0b3JlU2Vs
ZWN0aW9uIiwicHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbiIsImN1ckZvY3VzZWRFbGVtIiwicHJp
b3JGb2N1c2VkRWxlbSIsInByaW9yU2VsZWN0aW9uUmFuZ2UiLCJzZXRTZWxlY3Rpb24iLCJpbnB1
dCIsInNlbGVjdGlvbiIsInN0YXJ0Iiwic2VsZWN0aW9uU3RhcnQiLCJlbmQiLCJzZWxlY3Rpb25F
bmQiLCJyYW5nZSIsImNyZWF0ZVJhbmdlIiwicGFyZW50RWxlbWVudCIsIm1vdmVTdGFydCIsIm1v
dmVFbmQiLCJnZXRPZmZzZXRzIiwib2Zmc2V0cyIsIm1pbiIsImNyZWF0ZVRleHRSYW5nZSIsImNv
bGxhcHNlIiwic2VsZWN0Iiwic2V0T2Zmc2V0cyIsImZpcnN0RGlmZmVyZW5jZUluZGV4Iiwic3Ry
aW5nMSIsInN0cmluZzIiLCJtaW5MZW4iLCJnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIi
LCJjb250YWluZXIiLCJET0NfTk9ERV9UWVBFIiwiaW50ZXJuYWxHZXRJRCIsIm1vdW50Q29tcG9u
ZW50SW50b05vZGUiLCJ3cmFwcGVySW5zdGFuY2UiLCJzaG91bGRSZXVzZU1hcmt1cCIsIndyYXBw
ZWRFbGVtZW50IiwiY2hpbGQiLCJSZWFjdERPTUNvbnRhaW5lckluZm8iLCJfdG9wTGV2ZWxXcmFw
cGVyIiwiUmVhY3RNb3VudCIsIl9tb3VudEltYWdlSW50b05vZGUiLCJiYXRjaGVkTW91bnRDb21w
b25lbnRJbnRvTm9kZSIsImNvbXBvbmVudEluc3RhbmNlIiwiUmVhY3RET01GZWF0dXJlRmxhZ3Mi
LCJ1c2VDcmVhdGVFbGVtZW50IiwidW5tb3VudENvbXBvbmVudEZyb21Ob2RlIiwibGFzdENoaWxk
IiwiaGFzTm9uUm9vdFJlYWN0Q2hpbGQiLCJyb290RWwiLCJpc1ZhbGlkQ29udGFpbmVyIiwiZ2V0
SG9zdFJvb3RJbnN0YW5jZUluQ29udGFpbmVyIiwicHJldkhvc3RJbnN0YW5jZSIsImdldFRvcExl
dmVsV3JhcHBlckluQ29udGFpbmVyIiwiX2hvc3RDb250YWluZXJJbmZvIiwiUmVhY3RNYXJrdXBD
aGVja3N1bSIsImluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQiLCJST09UX0FUVFJfTkFNRSIsImlu
c3RhbmNlc0J5UmVhY3RSb290SUQiLCJ0b3BMZXZlbFJvb3RDb3VudGVyIiwiVG9wTGV2ZWxXcmFw
cGVyIiwicm9vdElEIiwiaXNSZWFjdENvbXBvbmVudCIsInJlbmRlciIsIl9pbnN0YW5jZXNCeVJl
YWN0Um9vdElEIiwic2Nyb2xsTW9uaXRvciIsInJlbmRlckNhbGxiYWNrIiwiX3VwZGF0ZVJvb3RD
b21wb25lbnQiLCJwcmV2Q29tcG9uZW50IiwiX3JlbmRlck5ld1Jvb3RDb21wb25lbnQiLCJ3cmFw
cGVySUQiLCJfaW5zdGFuY2UiLCJyZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lciIsInBhcmVudENv
bXBvbmVudCIsIl9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lciIsIm5leHRXcmFwcGVkRWxlbWVu
dCIsIl9wcm9jZXNzQ2hpbGRDb250ZXh0IiwicHJldldyYXBwZWRFbGVtZW50IiwicHVibGljSW5z
dCIsInVwZGF0ZWRDYWxsYmFjayIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJyZWFjdFJvb3RF
bGVtZW50IiwiY29udGFpbmVySGFzUmVhY3RNYXJrdXAiLCJjb250YWluZXJIYXNOb25Sb290UmVh
Y3RDaGlsZCIsImhhc0F0dHJpYnV0ZSIsInJvb3RFbGVtZW50IiwiY2FuUmV1c2VNYXJrdXAiLCJj
aGVja3N1bSIsIkNIRUNLU1VNX0FUVFJfTkFNRSIsInJvb3RNYXJrdXAiLCJvdXRlckhUTUwiLCJu
b3JtYWxpemVkTWFya3VwIiwiZGlmZkluZGV4IiwiZGlmZmVyZW5jZSIsIlJlYWN0Tm9kZVR5cGVz
IiwiSE9TVCIsIkNPTVBPU0lURSIsIkVNUFRZIiwiZ2V0VHlwZSIsInNjcm9sbFBvc2l0aW9uIiwi
bmV4dCIsImFyciIsImNiIiwiZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUiLCJfcmVuZGVy
ZWROb2RlVHlwZSIsImdldFRleHRDb250ZW50QWNjZXNzb3IiLCJjb250ZW50S2V5IiwiaXNDaGVj
a2FibGUiLCJnZXRUcmFja2VyIiwidmFsdWVUcmFja2VyIiwiYXR0YWNoVHJhY2tlciIsInRyYWNr
ZXIiLCJkZXRhY2hUcmFja2VyIiwiZ2V0VmFsdWVGcm9tTm9kZSIsImlucHV0VmFsdWVUcmFja2lu
ZyIsIl9nZXRUcmFja2VyRnJvbU5vZGUiLCJ0cmFjayIsInZhbHVlRmllbGQiLCJkZXNjcmlwdG9y
IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiY3VycmVudFZhbHVlIiwiZGVmaW5lUHJvcGVy
dHkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwic2V0VmFsdWUiLCJzdG9wVHJhY2tpbmci
LCJ1cGRhdGVWYWx1ZUlmQ2hhbmdlZCIsImxhc3RWYWx1ZSIsIm5leHRWYWx1ZSIsImlzSW50ZXJu
YWxDb21wb25lbnRUeXBlIiwic2hvdWxkSGF2ZURlYnVnSUQiLCJpbmZvIiwiZ2V0TmF0aXZlTm9k
ZSIsIlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlciIsIl9tb3VudEluZGV4IiwiX21vdW50
SW1hZ2UiLCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIsImNvbnN0cnVjdCIsIl9pbnN0YW50aWF0
ZVJlYWN0Q29tcG9uZW50IiwiaXNUZXh0SW5wdXRFbGVtZW50Iiwic3VwcG9ydGVkSW5wdXRUeXBl
cyIsImNvbG9yIiwiZGF0ZSIsImRhdGV0aW1lIiwiZGF0ZXRpbWUtbG9jYWwiLCJlbWFpbCIsIm1v
bnRoIiwibnVtYmVyIiwicGFzc3dvcmQiLCJzZWFyY2giLCJ0ZWwiLCJ1cmwiLCJ3ZWVrIiwidGV4
dENvbnRlbnQiLCJnZXRDb21wb25lbnRLZXkiLCJ0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbCIsIm5h
bWVTb0ZhciIsInRyYXZlcnNlQ29udGV4dCIsIlNFUEFSQVRPUiIsIm5leHROYW1lIiwic3VidHJl
ZUNvdW50IiwibmV4dE5hbWVQcmVmaXgiLCJTVUJTRVBBUkFUT1IiLCJpdGVyYXRvckZuIiwiZ2V0
SXRlcmF0b3JGbiIsInN0ZXAiLCJpdGVyYXRvciIsImVudHJpZXMiLCJpaSIsImRvbmUiLCJlbnRy
eSIsImFkZGVuZHVtIiwiY2hpbGRyZW5TdHJpbmciLCJ0cmF2ZXJzZUFsbENoaWxkcmVuIiwiX3Bv
c3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJSZWZlcmVuY2VFcnJvciIsIl9pbmhlcml0cyIsInN1
YkNsYXNzIiwic3VwZXJDbGFzcyIsIndyaXRhYmxlIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3Rv
X18iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJub29wIiwibWFrZVNlbGVjdG9yU3RhdGVm
dWwiLCJzb3VyY2VTZWxlY3RvciIsInN0b3JlIiwic2VsZWN0b3IiLCJydW4iLCJuZXh0UHJvcHMi
LCJnZXRTdGF0ZSIsInNob3VsZENvbXBvbmVudFVwZGF0ZSIsImNvbm5lY3RBZHZhbmNlZCIsInNl
bGVjdG9yRmFjdG9yeSIsIl9jb250ZXh0VHlwZXMiLCJfY2hpbGRDb250ZXh0VHlwZXMiLCJfcmVm
IiwiX3JlZiRnZXREaXNwbGF5TmFtZSIsImdldERpc3BsYXlOYW1lIiwiX3JlZiRtZXRob2ROYW1l
IiwibWV0aG9kTmFtZSIsIl9yZWYkcmVuZGVyQ291bnRQcm9wIiwicmVuZGVyQ291bnRQcm9wIiwi
X3JlZiRzaG91bGRIYW5kbGVTdGF0Iiwic2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzIiwiX3JlZiRz
dG9yZUtleSIsInN0b3JlS2V5IiwiX3JlZiR3aXRoUmVmIiwid2l0aFJlZiIsImNvbm5lY3RPcHRp
b25zIiwic3Vic2NyaXB0aW9uS2V5IiwiaG90UmVsb2FkaW5nVmVyc2lvbiIsImNvbnRleHRUeXBl
cyIsIl9Qcm9wVHlwZXMiLCJzdG9yZVNoYXBlIiwic3Vic2NyaXB0aW9uU2hhcGUiLCJjaGlsZENv
bnRleHRUeXBlcyIsIldyYXBwZWRDb21wb25lbnQiLCJfaW52YXJpYW50MiIsIkpTT04iLCJzdHJp
bmdpZnkiLCJ3cmFwcGVkQ29tcG9uZW50TmFtZSIsInNlbGVjdG9yRmFjdG9yeU9wdGlvbnMiLCJf
ZXh0ZW5kcyIsIkNvbm5lY3QiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJzdGF0ZSIsInJlbmRlckNv
dW50IiwicHJvcHNNb2RlIiwic2V0V3JhcHBlZEluc3RhbmNlIiwiaW5pdFNlbGVjdG9yIiwiaW5p
dFN1YnNjcmlwdGlvbiIsImdldENoaWxkQ29udGV4dCIsIl9yZWYyIiwic3Vic2NyaXB0aW9uIiwi
Y29tcG9uZW50RGlkTW91bnQiLCJ0cnlTdWJzY3JpYmUiLCJmb3JjZVVwZGF0ZSIsImNvbXBvbmVu
dFdpbGxSZWNlaXZlUHJvcHMiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInRyeVVuc3Vic2NyaWJl
Iiwibm90aWZ5TmVzdGVkU3VicyIsImdldFdyYXBwZWRJbnN0YW5jZSIsIndyYXBwZWRJbnN0YW5j
ZSIsImRpc3BhdGNoIiwicGFyZW50U3ViIiwiX1N1YnNjcmlwdGlvbjIiLCJvblN0YXRlQ2hhbmdl
IiwiY29tcG9uZW50RGlkVXBkYXRlIiwibm90aWZ5TmVzdGVkU3Vic09uQ29tcG9uZW50RGlkVXBk
YXRlIiwic2V0U3RhdGUiLCJkdW1teVN0YXRlIiwiaXNTdWJzY3JpYmVkIiwiYWRkRXh0cmFQcm9w
cyIsIndpdGhFeHRyYXMiLCJfcmVhY3QiLCJfaG9pc3ROb25SZWFjdFN0YXRpY3MyIiwiX2hvaXN0
Tm9uUmVhY3RTdGF0aWNzIiwiX2ludmFyaWFudCIsIl9TdWJzY3JpcHRpb24iLCJ3cmFwTWFwVG9Q
cm9wc0NvbnN0YW50IiwiZ2V0Q29uc3RhbnQiLCJjb25zdGFudFNlbGVjdG9yIiwiY29uc3RhbnQi
LCJkZXBlbmRzT25Pd25Qcm9wcyIsImdldERlcGVuZHNPbk93blByb3BzIiwibWFwVG9Qcm9wcyIs
IndyYXBNYXBUb1Byb3BzRnVuYyIsInByb3h5Iiwic3RhdGVPckRpc3BhdGNoIiwib3duUHJvcHMi
LCJfdmVyaWZ5UGxhaW5PYmplY3QiLCJjb25uZWN0IiwiY3JlYXRlUHJvdmlkZXIiLCJQcm92aWRl
ciIsIl9Qcm92aWRlciIsIl9Qcm92aWRlcjIiLCJfY29ubmVjdEFkdmFuY2VkIiwiX2Nvbm5lY3RB
ZHZhbmNlZDIiLCJfY29ubmVjdCIsIl9jb25uZWN0MiIsIl9wcm9wVHlwZXMiLCJfcHJvcFR5cGVz
MiIsInNoYXBlIiwiaXNSZXF1aXJlZCIsInN1YnNjcmliZSIsInZlcmlmeVBsYWluT2JqZWN0Iiwi
X2lzUGxhaW5PYmplY3QyIiwiX3dhcm5pbmcyIiwiX2lzUGxhaW5PYmplY3QiLCJfY3JlYXRlQ2xh
c3MiLCJkZWZpbmVQcm9wZXJ0aWVzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX3JlYWN0
MiIsIl9jbGFzc25hbWVzIiwiX2NsYXNzbmFtZXMyIiwiVG9kb1RleHRJbnB1dCIsIl90ZW1wIiwi
X3JldCIsIl9sZW4iLCJfa2V5IiwiZ2V0UHJvdG90eXBlT2YiLCJoYW5kbGVTdWJtaXQiLCJ0cmlt
Iiwid2hpY2giLCJvblNhdmUiLCJuZXdUb2RvIiwiaGFuZGxlQ2hhbmdlIiwiaGFuZGxlQmx1ciIs
ImNsYXNzTmFtZSIsImVkaXQiLCJlZGl0aW5nIiwibmV3LXRvZG8iLCJwbGFjZWhvbGRlciIsImF1
dG9Gb2N1cyIsIm9uQmx1ciIsIm9uS2V5RG93biIsImJvb2wiLCJBRERfVE9ETyIsIkRFTEVURV9U
T0RPIiwiRURJVF9UT0RPIiwiQ09NUExFVEVfVE9ETyIsIkNPTVBMRVRFX0FMTCIsIkNMRUFSX0NP
TVBMRVRFRCIsIlNIT1dfQUxMIiwiU0hPV19DT01QTEVURUQiLCJTSE9XX0FDVElWRSIsImRlZmF1
bHRTZXRUaW1vdXQiLCJkZWZhdWx0Q2xlYXJUaW1lb3V0IiwicnVuVGltZW91dCIsImZ1biIsImNh
Y2hlZFNldFRpbWVvdXQiLCJzZXRUaW1lb3V0IiwicnVuQ2xlYXJUaW1lb3V0IiwibWFya2VyIiwi
Y2FjaGVkQ2xlYXJUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiY2xlYW5VcE5leHRUaWNrIiwiZHJh
aW5pbmciLCJjdXJyZW50UXVldWUiLCJxdWV1ZUluZGV4IiwiZHJhaW5RdWV1ZSIsInRpbWVvdXQi
LCJJdGVtIiwiYXJyYXkiLCJwcm9jZXNzIiwibmV4dFRpY2siLCJ0aXRsZSIsImJyb3dzZXIiLCJl
bnYiLCJhcmd2IiwidmVyc2lvbnMiLCJvbiIsImFkZExpc3RlbmVyIiwib25jZSIsIm9mZiIsInJl
bW92ZUxpc3RlbmVyIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwiZW1pdCIsImJpbmRpbmciLCJjd2Qi
LCJjaGRpciIsImRpciIsInVtYXNrIiwiZ2V0VGhlbiIsInRoZW4iLCJleCIsIkxBU1RfRVJST1Ii
LCJJU19FUlJPUiIsInRyeUNhbGxPbmUiLCJ0cnlDYWxsVHdvIiwiUHJvbWlzZSIsIl80NSIsIl84
MSIsIl82NSIsIl81NCIsImRvUmVzb2x2ZSIsInNhZmVUaGVuIiwib25GdWxmaWxsZWQiLCJvblJl
amVjdGVkIiwicmVzb2x2ZSIsInJlamVjdCIsIkhhbmRsZXIiLCJkZWZlcnJlZCIsIl8xMCIsImhh
bmRsZVJlc29sdmVkIiwicHJvbWlzZSIsIm5ld1ZhbHVlIiwiZmluYWxlIiwiXzk3IiwicmVhc29u
IiwiXzYxIiwiUmVhY3RDb21wb25lbnQiLCJ1cGRhdGVyIiwicmVmcyIsIlJlYWN0Tm9vcFVwZGF0
ZVF1ZXVlIiwiUmVhY3RQdXJlQ29tcG9uZW50IiwiQ29tcG9uZW50RHVtbXkiLCJpc1B1cmVSZWFj
dENvbXBvbmVudCIsImlzTmF0aXZlIiwicmVJc05hdGl2ZSIsInB1cmdlRGVlcCIsIml0ZW0iLCJn
ZXRJdGVtIiwiY2hpbGRJRHMiLCJyZW1vdmVJdGVtIiwiZGVzY3JpYmVDb21wb25lbnRGcmFtZSIs
Im93bmVyTmFtZSIsImZpbGVOYW1lIiwibGluZU51bWJlciIsImRlc2NyaWJlSUQiLCJSZWFjdENv
bXBvbmVudFRyZWVIb29rIiwiZ2V0RWxlbWVudCIsIm93bmVySUQiLCJnZXRPd25lcklEIiwic2V0
SXRlbSIsImdldEl0ZW1JRHMiLCJhZGRSb290IiwicmVtb3ZlUm9vdCIsImdldFJvb3RJRHMiLCJj
YW5Vc2VDb2xsZWN0aW9ucyIsIk1hcCIsIlNldCIsIml0ZW1NYXAiLCJyb290SURTZXQiLCJhZGQi
LCJpdGVtQnlLZXkiLCJyb290QnlLZXkiLCJnZXRLZXlGcm9tSUQiLCJnZXRJREZyb21LZXkiLCJw
YXJzZUludCIsInN1YnN0ciIsInVubW91bnRlZElEcyIsIm9uU2V0Q2hpbGRyZW4iLCJuZXh0Q2hp
bGRJRHMiLCJuZXh0Q2hpbGRJRCIsIm5leHRDaGlsZCIsInBhcmVudElEIiwib25CZWZvcmVNb3Vu
dENvbXBvbmVudCIsInVwZGF0ZUNvdW50Iiwib25CZWZvcmVVcGRhdGVDb21wb25lbnQiLCJvbk1v
dW50Q29tcG9uZW50IiwiaXNSb290Iiwib25VcGRhdGVDb21wb25lbnQiLCJvblVubW91bnRDb21w
b25lbnQiLCJwdXJnZVVubW91bnRlZENvbXBvbmVudHMiLCJfcHJldmVudFB1cmdpbmciLCJnZXRD
dXJyZW50U3RhY2tBZGRlbmR1bSIsInRvcEVsZW1lbnQiLCJjdXJyZW50T3duZXIiLCJfZGVidWdJ
RCIsImdldFN0YWNrQWRkZW5kdW1CeUlEIiwiZ2V0UGFyZW50SUQiLCJnZXRDaGlsZElEcyIsImdl
dFNvdXJjZSIsImdldFRleHQiLCJnZXRVcGRhdGVDb3VudCIsImdldFJlZ2lzdGVyZWRJRHMiLCJw
dXNoTm9uU3RhbmRhcmRXYXJuaW5nU3RhY2siLCJpc0NyZWF0aW5nRWxlbWVudCIsImN1cnJlbnRT
b3VyY2UiLCJyZWFjdFN0YWNrIiwic3RhY2siLCJwb3BOb25TdGFuZGFyZFdhcm5pbmdTdGFjayIs
InJlYWN0U3RhY2tFbmQiLCJ3YXJuTm9vcCIsImNhbkRlZmluZVByb3BlcnR5IiwiZnVuY3MiLCJy
ZWR1Y2UiLCJyZWR1Y2VyIiwicHJlbG9hZGVkU3RhdGUiLCJlbmhhbmNlciIsImVuc3VyZUNhbk11
dGF0ZU5leHRMaXN0ZW5lcnMiLCJuZXh0TGlzdGVuZXJzIiwiY3VycmVudExpc3RlbmVycyIsImN1
cnJlbnRTdGF0ZSIsImFjdGlvbiIsImlzRGlzcGF0Y2hpbmciLCJjdXJyZW50UmVkdWNlciIsInJl
cGxhY2VSZWR1Y2VyIiwibmV4dFJlZHVjZXIiLCJBY3Rpb25UeXBlcyIsIklOSVQiLCJvYnNlcnZh
YmxlIiwib3V0ZXJTdWJzY3JpYmUiLCJvYnNlcnZlciIsIm9ic2VydmVTdGF0ZSIsInVuc3Vic2Ny
aWJlIiwiX3N5bWJvbE9ic2VydmFibGUyIiwiX3N5bWJvbE9ic2VydmFibGUiLCJpZGVudGl0eSIs
InZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUiLCJpc0FscmVhZHlEZWZpbmVkIiwic3BlY1BvbGljeSIs
IlJlYWN0Q2xhc3NJbnRlcmZhY2UiLCJSZWFjdENsYXNzTWl4aW4iLCJtaXhTcGVjSW50b0NvbXBv
bmVudCIsInNwZWMiLCJhdXRvQmluZFBhaXJzIiwiX19yZWFjdEF1dG9CaW5kUGFpcnMiLCJNSVhJ
TlNfS0VZIiwiUkVTRVJWRURfU1BFQ19LRVlTIiwibWl4aW5zIiwicHJvcGVydHkiLCJpc1JlYWN0
Q2xhc3NNZXRob2QiLCJpc0Z1bmN0aW9uIiwic2hvdWxkQXV0b0JpbmQiLCJhdXRvYmluZCIsImNy
ZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uIiwiY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIiwibWl4U3Rh
dGljU3BlY0ludG9Db21wb25lbnQiLCJzdGF0aWNzIiwiaXNSZXNlcnZlZCIsImlzSW5oZXJpdGVk
IiwibWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyIsIm9uZSIsInR3byIsImJpbmRBdXRvQmlu
ZE1ldGhvZCIsImJvdW5kTWV0aG9kIiwiYmluZEF1dG9CaW5kTWV0aG9kcyIsInBhaXJzIiwiYXV0
b0JpbmRLZXkiLCJpbml0aWFsU3RhdGUiLCJnZXRJbml0aWFsU3RhdGUiLCJSZWFjdENsYXNzQ29t
cG9uZW50IiwiaW5qZWN0ZWRNaXhpbnMiLCJJc01vdW50ZWRQcmVNaXhpbiIsIklzTW91bnRlZFBv
c3RNaXhpbiIsImdldERlZmF1bHRQcm9wcyIsImNvbXBvbmVudFdpbGxNb3VudCIsImNvbXBvbmVu
dFdpbGxVcGRhdGUiLCJ1cGRhdGVDb21wb25lbnQiLCJfX2lzTW91bnRlZCIsInJlcGxhY2VTdGF0
ZSIsIm5ld1N0YXRlIiwiUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMiLCJjYW1lbGl6ZSIsIl9o
eXBoZW5QYXR0ZXJuIiwiXyIsImNoYXJhY3RlciIsImNhbWVsaXplU3R5bGVOYW1lIiwibXNQYXR0
ZXJuIiwib3V0ZXJOb2RlIiwiaW5uZXJOb2RlIiwiaXNUZXh0Tm9kZSIsImNvbnRhaW5zIiwiY29t
cGFyZURvY3VtZW50UG9zaXRpb24iLCJjYWxsZWUiLCJoYXNBcnJheU5hdHVyZSIsImNyZWF0ZUFy
cmF5RnJvbU1peGVkIiwiZ2V0Tm9kZU5hbWUiLCJub2RlTmFtZU1hdGNoIiwibm9kZU5hbWVQYXR0
ZXJuIiwiY3JlYXRlTm9kZXNGcm9tTWFya3VwIiwiaGFuZGxlU2NyaXB0IiwiZHVtbXlOb2RlIiwi
d3JhcCIsImdldE1hcmt1cFdyYXAiLCJ3cmFwRGVwdGgiLCJzY3JpcHRzIiwiZ2V0RWxlbWVudHNC
eVRhZ05hbWUiLCJub2RlcyIsImNoaWxkTm9kZXMiLCJtYXJrdXBXcmFwIiwic2hvdWxkV3JhcCIs
InNlbGVjdFdyYXAiLCJ0YWJsZVdyYXAiLCJ0cldyYXAiLCJzdmdXcmFwIiwiKiIsImFyZWEiLCJj
b2wiLCJsZWdlbmQiLCJwYXJhbSIsInRyIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJjYXB0aW9uIiwi
Y29sZ3JvdXAiLCJ0Ym9keSIsInRmb290IiwidGhlYWQiLCJ0ZCIsInRoIiwic3ZnRWxlbWVudHMi
LCJnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbiIsInNjcm9sbGFibGUiLCJXaW5kb3ciLCJwYWdl
WE9mZnNldCIsInNjcm9sbExlZnQiLCJwYWdlWU9mZnNldCIsInNjcm9sbFRvcCIsImh5cGhlbmF0
ZSIsIl91cHBlcmNhc2VQYXR0ZXJuIiwiaHlwaGVuYXRlU3R5bGVOYW1lIiwiaXNOb2RlIiwiTm9k
ZSIsIm1lbW9pemVTdHJpbmdPbmx5IiwiY2FjaGUiLCJSRUFDVF9TVEFUSUNTIiwiS05PV05fU1RB
VElDUyIsImNhbGxlciIsImFyaXR5Iiwib2JqZWN0UHJvdG90eXBlIiwiaG9pc3ROb25SZWFjdFN0
YXRpY3MiLCJ0YXJnZXRDb21wb25lbnQiLCJzb3VyY2VDb21wb25lbnQiLCJibGFja2xpc3QiLCJp
bmhlcml0ZWRDb21wb25lbnQiLCJ1bmRlZmluZWRUYWciLCJudWxsVGFnIiwic3ltVG9TdHJpbmdU
YWciLCJnZXRSYXdUYWciLCJvYmplY3RUb1N0cmluZyIsInRvU3RyaW5nVGFnIiwiZ2xvYmFsIiwi
ZnJlZUdsb2JhbCIsIm92ZXJBcmciLCJpc093biIsInVubWFza2VkIiwicmVzdWx0IiwibmF0aXZl
T2JqZWN0VG9TdHJpbmciLCJ0cmFuc2Zvcm0iLCJmcmVlU2VsZiIsInR5cGVTcGVjcyIsInZhbHVl
cyIsImxvY2F0aW9uIiwiZ2V0U3RhY2siLCJzaGltIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0Iiwi
Z2V0U2hpbSIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJpbnN0YW5jZU9mIiwib2JqZWN0T2Yi
LCJvbmVPZiIsIm9uZU9mVHlwZSIsIm1heWJlSXRlcmFibGUiLCJJVEVSQVRPUl9TWU1CT0wiLCJG
QVVYX0lURVJBVE9SX1NZTUJPTCIsIlByb3BUeXBlRXJyb3IiLCJjcmVhdGVDaGFpbmFibGVUeXBl
Q2hlY2tlciIsInZhbGlkYXRlIiwiY2hlY2tUeXBlIiwiQU5PTllNT1VTIiwiY2hhaW5lZENoZWNr
VHlwZSIsImNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyIiwiZXhwZWN0ZWRUeXBlIiwicHJvcFR5
cGUiLCJnZXRQcm9wVHlwZSIsInByZWNpc2VUeXBlIiwiZ2V0UHJlY2lzZVR5cGUiLCJjcmVhdGVB
bnlUeXBlQ2hlY2tlciIsImNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlciIsInR5cGVDaGVja2VyIiwi
Y3JlYXRlRWxlbWVudFR5cGVDaGVja2VyIiwiY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlciIsImV4
cGVjdGVkQ2xhc3MiLCJleHBlY3RlZENsYXNzTmFtZSIsImFjdHVhbENsYXNzTmFtZSIsImdldENs
YXNzTmFtZSIsImNyZWF0ZUVudW1UeXBlQ2hlY2tlciIsImV4cGVjdGVkVmFsdWVzIiwidmFsdWVz
U3RyaW5nIiwiY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlciIsImNyZWF0ZVVuaW9uVHlwZUNoZWNr
ZXIiLCJhcnJheU9mVHlwZUNoZWNrZXJzIiwiY2hlY2tlciIsImdldFBvc3RmaXhGb3JUeXBlV2Fy
bmluZyIsImNyZWF0ZU5vZGVDaGVja2VyIiwiY3JlYXRlU2hhcGVUeXBlQ2hlY2tlciIsInNoYXBl
VHlwZXMiLCJldmVyeSIsImlzU3ltYm9sIiwiQVJJQURPTVByb3BlcnR5Q29uZmlnIiwiYXJpYS1j
dXJyZW50IiwiYXJpYS1kZXRhaWxzIiwiYXJpYS1kaXNhYmxlZCIsImFyaWEtaGlkZGVuIiwiYXJp
YS1pbnZhbGlkIiwiYXJpYS1rZXlzaG9ydGN1dHMiLCJhcmlhLWxhYmVsIiwiYXJpYS1yb2xlZGVz
Y3JpcHRpb24iLCJhcmlhLWF1dG9jb21wbGV0ZSIsImFyaWEtY2hlY2tlZCIsImFyaWEtZXhwYW5k
ZWQiLCJhcmlhLWhhc3BvcHVwIiwiYXJpYS1sZXZlbCIsImFyaWEtbW9kYWwiLCJhcmlhLW11bHRp
bGluZSIsImFyaWEtbXVsdGlzZWxlY3RhYmxlIiwiYXJpYS1vcmllbnRhdGlvbiIsImFyaWEtcGxh
Y2Vob2xkZXIiLCJhcmlhLXByZXNzZWQiLCJhcmlhLXJlYWRvbmx5IiwiYXJpYS1yZXF1aXJlZCIs
ImFyaWEtc2VsZWN0ZWQiLCJhcmlhLXNvcnQiLCJhcmlhLXZhbHVlbWF4IiwiYXJpYS12YWx1ZW1p
biIsImFyaWEtdmFsdWVub3ciLCJhcmlhLXZhbHVldGV4dCIsImFyaWEtYXRvbWljIiwiYXJpYS1i
dXN5IiwiYXJpYS1saXZlIiwiYXJpYS1yZWxldmFudCIsImFyaWEtZHJvcGVmZmVjdCIsImFyaWEt
Z3JhYmJlZCIsImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsImFyaWEtY29sY291bnQiLCJhcmlhLWNv
bGluZGV4IiwiYXJpYS1jb2xzcGFuIiwiYXJpYS1jb250cm9scyIsImFyaWEtZGVzY3JpYmVkYnki
LCJhcmlhLWVycm9ybWVzc2FnZSIsImFyaWEtZmxvd3RvIiwiYXJpYS1sYWJlbGxlZGJ5IiwiYXJp
YS1vd25zIiwiYXJpYS1wb3NpbnNldCIsImFyaWEtcm93Y291bnQiLCJhcmlhLXJvd2luZGV4Iiwi
YXJpYS1yb3dzcGFuIiwiYXJpYS1zZXRzaXplIiwiQXV0b0ZvY3VzVXRpbHMiLCJmb2N1c0RPTUNv
bXBvbmVudCIsImlzUHJlc3RvIiwib3BlcmEiLCJpc0tleXByZXNzQ29tbWFuZCIsImdldENvbXBv
c2l0aW9uRXZlbnRUeXBlIiwiY29tcG9zaXRpb25TdGFydCIsImNvbXBvc2l0aW9uRW5kIiwiY29t
cG9zaXRpb25VcGRhdGUiLCJpc0ZhbGxiYWNrQ29tcG9zaXRpb25TdGFydCIsIlNUQVJUX0tFWUNP
REUiLCJpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQiLCJFTkRfS0VZQ09ERVMiLCJnZXREYXRhRnJv
bUN1c3RvbUV2ZW50IiwiZXh0cmFjdENvbXBvc2l0aW9uRXZlbnQiLCJmYWxsYmFja0RhdGEiLCJj
YW5Vc2VDb21wb3NpdGlvbkV2ZW50IiwiY3VycmVudENvbXBvc2l0aW9uIiwidXNlRmFsbGJhY2tD
b21wb3NpdGlvbkRhdGEiLCJnZXREYXRhIiwiRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlIiwiU3lu
dGhldGljQ29tcG9zaXRpb25FdmVudCIsImN1c3RvbURhdGEiLCJnZXROYXRpdmVCZWZvcmVJbnB1
dENoYXJzIiwiU1BBQ0VCQVJfQ09ERSIsImhhc1NwYWNlS2V5cHJlc3MiLCJTUEFDRUJBUl9DSEFS
IiwiY2hhcnMiLCJnZXRGYWxsYmFja0JlZm9yZUlucHV0Q2hhcnMiLCJleHRyYWN0QmVmb3JlSW5w
dXRFdmVudCIsImNhblVzZVRleHRJbnB1dEV2ZW50IiwiU3ludGhldGljSW5wdXRFdmVudCIsImJl
Zm9yZUlucHV0IiwiYnViYmxlZCIsImNhcHR1cmVkIiwiQmVmb3JlSW5wdXRFdmVudFBsdWdpbiIs
ImRhbmdlcm91c1N0eWxlVmFsdWUiLCJwcm9jZXNzU3R5bGVOYW1lIiwic3R5bGVOYW1lIiwiaGFz
U2hvcnRoYW5kUHJvcGVydHlCdWciLCJzdHlsZUZsb2F0QWNjZXNzb3IiLCJ0ZW1wU3R5bGUiLCJz
dHlsZSIsImNzc0Zsb2F0IiwiQ1NTUHJvcGVydHlPcGVyYXRpb25zIiwiY3JlYXRlTWFya3VwRm9y
U3R5bGVzIiwic3R5bGVzIiwic2VyaWFsaXplZCIsImlzQ3VzdG9tUHJvcGVydHkiLCJzdHlsZVZh
bHVlIiwic2V0VmFsdWVGb3JTdHlsZXMiLCJzZXRQcm9wZXJ0eSIsImV4cGFuc2lvbiIsImluZGl2
aWR1YWxTdHlsZU5hbWUiLCJjcmVhdGVBbmRBY2N1bXVsYXRlQ2hhbmdlRXZlbnQiLCJjaGFuZ2Ui
LCJzaG91bGRVc2VDaGFuZ2VFdmVudCIsIm1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQiLCJhY3Rp
dmVFbGVtZW50SW5zdCIsInJ1bkV2ZW50SW5CYXRjaCIsInN0YXJ0V2F0Y2hpbmdGb3JDaGFuZ2VF
dmVudElFOCIsInN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4IiwiZ2V0SW5zdElmVmFsdWVD
aGFuZ2VkIiwidXBkYXRlZCIsIkNoYW5nZUV2ZW50UGx1Z2luIiwiX2FsbG93U2ltdWxhdGVkUGFz
c1Rocm91Z2giLCJnZXRUYXJnZXRJbnN0Rm9yQ2hhbmdlRXZlbnQiLCJoYW5kbGVFdmVudHNGb3JD
aGFuZ2VFdmVudElFOCIsInN0YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSIsImhhbmRsZVByb3Bl
cnR5Q2hhbmdlIiwic3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UiLCJoYW5kbGVFdmVudHNGb3JJ
bnB1dEV2ZW50UG9seWZpbGwiLCJnZXRUYXJnZXRJbnN0Rm9ySW5wdXRFdmVudFBvbHlmaWxsIiwi
c2hvdWxkVXNlQ2xpY2tFdmVudCIsImdldFRhcmdldEluc3RGb3JDbGlja0V2ZW50IiwiZ2V0VGFy
Z2V0SW5zdEZvcklucHV0T3JDaGFuZ2VFdmVudCIsImhhbmRsZUNvbnRyb2xsZWRJbnB1dEJsdXIi
LCJjb250cm9sbGVkIiwiZG9lc0NoYW5nZUV2ZW50QnViYmxlIiwiaXNJbnB1dEV2ZW50U3VwcG9y
dGVkIiwiX2lzSW5wdXRFdmVudFN1cHBvcnRlZCIsImdldFRhcmdldEluc3RGdW5jIiwiaGFuZGxl
RXZlbnRGdW5jIiwidGFyZ2V0Tm9kZSIsIm9sZENoaWxkIiwibmV3Q2hpbGQiLCJEZWZhdWx0RXZl
bnRQbHVnaW5PcmRlciIsIm1vdXNlRW50ZXIiLCJtb3VzZUxlYXZlIiwiRW50ZXJMZWF2ZUV2ZW50
UGx1Z2luIiwid2luIiwicmVsYXRlZCIsInRvTm9kZSIsIl9yb290IiwiX3N0YXJ0VGV4dCIsIl9m
YWxsYmFja1RleHQiLCJzdGFydFZhbHVlIiwic3RhcnRMZW5ndGgiLCJlbmRWYWx1ZSIsImVuZExl
bmd0aCIsIm1pbkVuZCIsInNsaWNlVGFpbCIsIkhUTUxET01Qcm9wZXJ0eUNvbmZpZyIsImFjY2Vw
dCIsImFjY2VwdENoYXJzZXQiLCJhY2Nlc3NLZXkiLCJhbGxvd0Z1bGxTY3JlZW4iLCJhbGxvd1Ry
YW5zcGFyZW5jeSIsImFsdCIsImFzIiwiYXN5bmMiLCJhdXRvQ29tcGxldGUiLCJhdXRvUGxheSIs
ImNlbGxQYWRkaW5nIiwiY2VsbFNwYWNpbmciLCJjaGFyU2V0IiwiY2hhbGxlbmdlIiwiY2l0ZSIs
ImNsYXNzSUQiLCJjb2xzIiwiY29sU3BhbiIsImNvbnRleHRNZW51IiwiY29udHJvbHMiLCJjb29y
ZHMiLCJjcm9zc09yaWdpbiIsImRhdGVUaW1lIiwiZGVmZXIiLCJkb3dubG9hZCIsImRyYWdnYWJs
ZSIsImVuY1R5cGUiLCJmb3JtIiwiZm9ybUFjdGlvbiIsImZvcm1FbmNUeXBlIiwiZm9ybU1ldGhv
ZCIsImZvcm1Ob1ZhbGlkYXRlIiwiZm9ybVRhcmdldCIsImZyYW1lQm9yZGVyIiwiaGVhZGVycyIs
ImhlaWdodCIsImhpZ2giLCJocmVmIiwiaHJlZkxhbmciLCJodG1sRm9yIiwiaHR0cEVxdWl2Iiwi
aWNvbiIsImlucHV0TW9kZSIsImludGVncml0eSIsImtleVBhcmFtcyIsImtleVR5cGUiLCJraW5k
IiwibGFiZWwiLCJsYW5nIiwibGlzdCIsImxvb3AiLCJsb3ciLCJtYW5pZmVzdCIsIm1hcmdpbkhl
aWdodCIsIm1hcmdpbldpZHRoIiwibWF4IiwibWF4TGVuZ3RoIiwibWVkaWEiLCJtZWRpYUdyb3Vw
IiwibWluTGVuZ3RoIiwibXV0ZWQiLCJub25jZSIsIm5vVmFsaWRhdGUiLCJvcGVuIiwib3B0aW11
bSIsInBhdHRlcm4iLCJwbGF5c0lubGluZSIsInBvc3RlciIsInByZWxvYWQiLCJwcm9maWxlIiwi
cmFkaW9Hcm91cCIsInJlZmVycmVyUG9saWN5IiwicmVsIiwicmVxdWlyZWQiLCJyZXZlcnNlZCIs
InJvbGUiLCJyb3dzIiwicm93U3BhbiIsInNhbmRib3giLCJzY29wZWQiLCJzY3JvbGxpbmciLCJz
ZWFtbGVzcyIsInNpemUiLCJzaXplcyIsInNwYW4iLCJzcGVsbENoZWNrIiwic3JjIiwic3JjRG9j
Iiwic3JjTGFuZyIsInNyY1NldCIsInN1bW1hcnkiLCJ0YWJJbmRleCIsInVzZU1hcCIsIndpZHRo
Iiwid21vZGUiLCJhYm91dCIsImRhdGF0eXBlIiwiaW5saXN0IiwicmVzb3VyY2UiLCJ0eXBlb2Yi
LCJ2b2NhYiIsImF1dG9DYXBpdGFsaXplIiwiYXV0b0NvcnJlY3QiLCJhdXRvU2F2ZSIsIml0ZW1Q
cm9wIiwiaXRlbVNjb3BlIiwiaXRlbVR5cGUiLCJpdGVtSUQiLCJpdGVtUmVmIiwicmVzdWx0cyIs
InNlY3VyaXR5IiwidW5zZWxlY3RhYmxlIiwidmFsaWRpdHkiLCJiYWRJbnB1dCIsImluc3RhbnRp
YXRlQ2hpbGQiLCJjaGlsZEluc3RhbmNlcyIsInNlbGZEZWJ1Z0lEIiwia2V5VW5pcXVlIiwiUmVh
Y3RDaGlsZFJlY29uY2lsZXIiLCJpbnN0YW50aWF0ZUNoaWxkcmVuIiwibmVzdGVkQ2hpbGROb2Rl
cyIsInVwZGF0ZUNoaWxkcmVuIiwicHJldkNoaWxkcmVuIiwibmV4dENoaWxkcmVuIiwibW91bnRJ
bWFnZXMiLCJyZW1vdmVkTm9kZXMiLCJwcmV2Q2hpbGQiLCJuZXh0Q2hpbGRJbnN0YW5jZSIsIm5l
eHRDaGlsZE1vdW50SW1hZ2UiLCJ1bm1vdW50Q2hpbGRyZW4iLCJyZW5kZXJlZENoaWxkcmVuIiwi
cmVuZGVyZWRDaGlsZCIsIlJlYWN0RE9NSURPcGVyYXRpb25zIiwiUmVhY3RDb21wb25lbnRCcm93
c2VyRW52aXJvbm1lbnQiLCJkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXMiLCJTdGF0
ZWxlc3NDb21wb25lbnQiLCJ3YXJuSWZJbnZhbGlkRWxlbWVudCIsInNob3VsZENvbnN0cnVjdCIs
ImlzUHVyZUNvbXBvbmVudCIsIkNvbXBvc2l0ZVR5cGVzIiwiSW1wdXJlQ2xhc3MiLCJQdXJlQ2xh
c3MiLCJTdGF0ZWxlc3NGdW5jdGlvbmFsIiwibmV4dE1vdW50SUQiLCJfY29tcG9zaXRlVHlwZSIs
Il9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCIsInJlbmRlcmVkRWxlbWVudCIsInB1YmxpY1By
b3BzIiwicHVibGljQ29udGV4dCIsIl9wcm9jZXNzQ29udGV4dCIsInVwZGF0ZVF1ZXVlIiwiZ2V0
VXBkYXRlUXVldWUiLCJkb0NvbnN0cnVjdCIsIl9jb25zdHJ1Y3RDb21wb25lbnQiLCJ1bnN0YWJs
ZV9oYW5kbGVFcnJvciIsInBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZyIsInBl
cmZvcm1Jbml0aWFsTW91bnQiLCJfY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyIiwiX3By
b2Nlc3NQZW5kaW5nU3RhdGUiLCJkZWJ1Z0lEIiwiX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCIs
Il9tYXNrQ29udGV4dCIsIm1hc2tlZENvbnRleHQiLCJjb250ZXh0TmFtZSIsImN1cnJlbnRDb250
ZXh0IiwiY2hpbGRDb250ZXh0IiwiX2NoZWNrQ29udGV4dFR5cGVzIiwicHJldkNvbnRleHQiLCJw
cmV2UGFyZW50RWxlbWVudCIsIm5leHRQYXJlbnRFbGVtZW50IiwicHJldlVubWFza2VkQ29udGV4
dCIsIm5leHRVbm1hc2tlZENvbnRleHQiLCJ3aWxsUmVjZWl2ZSIsInByZXZQcm9wcyIsIm5leHRT
dGF0ZSIsInNob3VsZFVwZGF0ZSIsIl9wZXJmb3JtQ29tcG9uZW50VXBkYXRlIiwicGFydGlhbCIs
InVubWFza2VkQ29udGV4dCIsInByZXZTdGF0ZSIsImhhc0NvbXBvbmVudERpZFVwZGF0ZSIsIl91
cGRhdGVSZW5kZXJlZENvbXBvbmVudCIsInByZXZDb21wb25lbnRJbnN0YW5jZSIsInByZXZSZW5k
ZXJlZEVsZW1lbnQiLCJuZXh0UmVuZGVyZWRFbGVtZW50Iiwib2xkSG9zdE5vZGUiLCJuZXh0TWFy
a3VwIiwiX3JlcGxhY2VOb2RlV2l0aE1hcmt1cCIsInByZXZJbnN0YW5jZSIsIl9yZW5kZXJWYWxp
ZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQiLCJhdHRhY2hSZWYiLCJwdWJsaWND
b21wb25lbnRJbnN0YW5jZSIsImRldGFjaFJlZiIsIlJlYWN0RGVmYXVsdEluamVjdGlvbiIsImZp
bmRET01Ob2RlIiwiaW5qZWN0IiwiUmVhY3RET00iLCJ1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyIs
InVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyIiwiX19SRUFDVF9ERVZUT09MU19H
TE9CQUxfSE9PS19fIiwiTW91bnQiLCJSZWNvbmNpbGVyIiwiYXNzZXJ0VmFsaWRQcm9wcyIsInZv
aWRFbGVtZW50VGFncyIsIl90YWciLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIkhUTUwiLCJl
bnF1ZXVlUHV0TGlzdGVuZXIiLCJSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uIiwiY29u
dGFpbmVySW5mbyIsImlzRG9jdW1lbnRGcmFnbWVudCIsIl9ub2RlIiwiRE9DX0ZSQUdNRU5UX1RZ
UEUiLCJfb3duZXJEb2N1bWVudCIsImxpc3RlbmVyVG9QdXQiLCJpbnB1dFBvc3RNb3VudCIsIlJl
YWN0RE9NSW5wdXQiLCJwb3N0TW91bnRXcmFwcGVyIiwidGV4dGFyZWFQb3N0TW91bnQiLCJSZWFj
dERPTVRleHRhcmVhIiwib3B0aW9uUG9zdE1vdW50IiwiUmVhY3RET01PcHRpb24iLCJ0cmFja0lu
cHV0VmFsdWUiLCJ0cmFwQnViYmxlZEV2ZW50c0xvY2FsIiwiZ2V0Tm9kZSIsIm1lZGlhRXZlbnRz
IiwicG9zdFVwZGF0ZVNlbGVjdFdyYXBwZXIiLCJ2YWxpZGF0ZURhbmdlcm91c1RhZyIsInZhbGlk
YXRlZFRhZ0NhY2hlIiwiVkFMSURfVEFHX1JFR0VYIiwiaXNDdXN0b21Db21wb25lbnQiLCJSZWFj
dERPTUNvbXBvbmVudCIsIl9uYW1lc3BhY2VVUkkiLCJfcHJldmlvdXNTdHlsZSIsIl9wcmV2aW91
c1N0eWxlQ29weSIsIlJlYWN0TXVsdGlDaGlsZCIsIkNPTlRFTlRfVFlQRVMiLCJTVFlMRSIsInN1
cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIsIm9taXR0ZWRDbG9zZVRhZ3MiLCJiYXNlIiwi
YnIiLCJlbWJlZCIsImhyIiwiaW1nIiwia2V5Z2VuIiwibGluayIsIm1ldGEiLCJ3YnIiLCJuZXds
aW5lRWF0aW5nVGFncyIsImxpc3RpbmciLCJwcmUiLCJ0ZXh0YXJlYSIsIm1lbnVpdGVtIiwiZ2xv
YmFsSWRDb3VudGVyIiwiTWl4aW4iLCJfaWRDb3VudGVyIiwicGFyZW50VGFnIiwibW91bnRJbWFn
ZSIsImVsIiwiZGl2IiwiY3JlYXRlRWxlbWVudE5TIiwiX3VwZGF0ZURPTVByb3BlcnRpZXMiLCJs
YXp5VHJlZSIsIl9jcmVhdGVJbml0aWFsQ2hpbGRyZW4iLCJ0YWdPcGVuIiwiX2NyZWF0ZU9wZW5U
YWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnMiLCJ0YWdDb250ZW50IiwiX2NyZWF0ZUNvbnRlbnRNYXJr
dXAiLCJwcm9wS2V5IiwicmVuZGVyVG9TdGF0aWNNYXJrdXAiLCJfX2h0bWwiLCJjb250ZW50VG9V
c2UiLCJjaGlsZHJlblRvVXNlIiwibW91bnRDaGlsZHJlbiIsImxhc3RQcm9wcyIsIl91cGRhdGVE
T01DaGlsZHJlbiIsInVwZGF0ZVdyYXBwZXIiLCJzdHlsZVVwZGF0ZXMiLCJsYXN0U3R5bGUiLCJu
ZXh0UHJvcCIsImxhc3RQcm9wIiwibGFzdENvbnRlbnQiLCJuZXh0Q29udGVudCIsImxhc3RIdG1s
IiwibmV4dEh0bWwiLCJsYXN0Q2hpbGRyZW4iLCJsYXN0SGFzQ29udGVudE9ySHRtbCIsIm5leHRI
YXNDb250ZW50T3JIdG1sIiwidXBkYXRlVGV4dENvbnRlbnQiLCJ1cGRhdGVNYXJrdXAiLCJ0b3BM
ZXZlbFdyYXBwZXIiLCJSZWFjdERPTUVtcHR5Q29tcG9uZW50IiwiZG9tSUQiLCJjcmVhdGVDb21t
ZW50IiwidXNlRmliZXIiLCJmb3JjZVVwZGF0ZUlmTW91bnRlZCIsImlzQ29udHJvbGxlZCIsInVz
ZXNDaGVja2VkIiwicm9vdE5vZGUiLCJxdWVyeVJvb3QiLCJncm91cCIsInF1ZXJ5U2VsZWN0b3JB
bGwiLCJvdGhlck5vZGUiLCJvdGhlckluc3RhbmNlIiwiaG9zdFByb3BzIiwiZGVmYXVsdENoZWNr
ZWQiLCJpbml0aWFsQ2hlY2tlZCIsInZhbHVlQXNOdW1iZXIiLCJwYXJzZUZsb2F0IiwiZmxhdHRl
bkNoaWxkcmVuIiwiZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbiIsInNlbGVjdFZhbHVlIiwi
c2VsZWN0UGFyZW50IiwiaXNDb2xsYXBzZWQiLCJhbmNob3JOb2RlIiwiYW5jaG9yT2Zmc2V0Iiwi
Zm9jdXNPZmZzZXQiLCJnZXRJRU9mZnNldHMiLCJzZWxlY3RlZFJhbmdlIiwic2VsZWN0ZWRMZW5n
dGgiLCJmcm9tU3RhcnQiLCJkdXBsaWNhdGUiLCJtb3ZlVG9FbGVtZW50VGV4dCIsInNldEVuZFBv
aW50Iiwic3RhcnRPZmZzZXQiLCJlbmRPZmZzZXQiLCJnZXRNb2Rlcm5PZmZzZXRzIiwicmFuZ2VD
b3VudCIsImN1cnJlbnRSYW5nZSIsImdldFJhbmdlQXQiLCJzdGFydENvbnRhaW5lciIsImVuZENv
bnRhaW5lciIsImlzU2VsZWN0aW9uQ29sbGFwc2VkIiwicmFuZ2VMZW5ndGgiLCJ0ZW1wUmFuZ2Ui
LCJjbG9uZVJhbmdlIiwic2VsZWN0Tm9kZUNvbnRlbnRzIiwic2V0RW5kIiwiaXNUZW1wUmFuZ2VD
b2xsYXBzZWQiLCJkZXRlY3Rpb25SYW5nZSIsInNldFN0YXJ0IiwiaXNCYWNrd2FyZCIsImNvbGxh
cHNlZCIsInNldElFT2Zmc2V0cyIsInNldE1vZGVybk9mZnNldHMiLCJleHRlbmQiLCJ0ZW1wIiwi
c3RhcnRNYXJrZXIiLCJnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0IiwiZW5kTWFya2VyIiwib2Zm
c2V0IiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJ1c2VJRU9mZnNldHMiLCJSZWFjdERP
TVRleHRDb21wb25lbnQiLCJfc3RyaW5nVGV4dCIsIl9jbG9zaW5nQ29tbWVudCIsIl9jb21tZW50
Tm9kZXMiLCJvcGVuaW5nVmFsdWUiLCJjbG9zaW5nVmFsdWUiLCJjcmVhdGVEb2N1bWVudEZyYWdt
ZW50IiwiZXNjYXBlZFRleHQiLCJuZXh0VGV4dCIsIm5leHRTdHJpbmdUZXh0IiwiY29tbWVudE5v
ZGVzIiwiaG9zdE5vZGUiLCJpbnN0QSIsImluc3RCIiwiZGVwdGhBIiwidGVtcEEiLCJkZXB0aEIi
LCJ0ZW1wQiIsImRlcHRoIiwicGF0aCIsImNvbW1vbiIsInBhdGhGcm9tIiwicGF0aFRvIiwiUmVh
Y3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uIiwiUkVTRVRfQkFUQ0hFRF9VUERB
VEVTIiwiUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSIsIkZMVVNIX0JBVENIRURfVVBEQVRF
UyIsImFscmVhZHlCYXRjaGluZ1VwZGF0ZXMiLCJhbHJlYWR5SW5qZWN0ZWQiLCJSZWFjdEluamVj
dGlvbiIsIkV2ZW50RW1pdHRlciIsIlJlYWN0RE9NVHJlZVRyYXZlcnNhbCIsIlNpbXBsZUV2ZW50
UGx1Z2luIiwiU2VsZWN0RXZlbnRQbHVnaW4iLCJIb3N0Q29tcG9uZW50IiwiU1ZHRE9NUHJvcGVy
dHlDb25maWciLCJFbXB0eUNvbXBvbmVudCIsIlVwZGF0ZXMiLCJydW5FdmVudFF1ZXVlSW5CYXRj
aCIsImZpbmRQYXJlbnQiLCJUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmciLCJhbmNlc3RvcnMi
LCJoYW5kbGVUb3BMZXZlbEltcGwiLCJib29rS2VlcGluZyIsImFuY2VzdG9yIiwiX2hhbmRsZVRv
cExldmVsIiwic2Nyb2xsVmFsdWVNb25pdG9yIiwidHdvQXJndW1lbnRQb29sZXIiLCJfZW5hYmxl
ZCIsImRpc3BhdGNoRXZlbnQiLCJhZGxlcjMyIiwiVEFHX0VORCIsIkNPTU1FTlRfU1RBUlQiLCJh
ZGRDaGVja3N1bVRvTWFya3VwIiwiZXhpc3RpbmdDaGVja3N1bSIsIm1hcmt1cENoZWNrc3VtIiwi
bWFrZUluc2VydE1hcmt1cCIsInRvSW5kZXgiLCJmcm9tSW5kZXgiLCJtYWtlTW92ZSIsIm1ha2VS
ZW1vdmUiLCJtYWtlU2V0TWFya3VwIiwibWFrZVRleHRDb250ZW50IiwicHJvY2Vzc1F1ZXVlIiwi
X3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuIiwibmVzdGVkQ2hpbGRyZW4iLCJfcmVjb25j
aWxlclVwZGF0ZUNoaWxkcmVuIiwibmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMiLCJfdXBkYXRl
Q2hpbGRyZW4iLCJuZXh0SW5kZXgiLCJuZXh0TW91bnRJbmRleCIsImxhc3RQbGFjZWROb2RlIiwi
X21vdW50Q2hpbGRBdEluZGV4IiwiX3VubW91bnRDaGlsZCIsImNyZWF0ZUNoaWxkIiwiaXNWYWxp
ZE93bmVyIiwiUmVhY3RPd25lciIsImFkZENvbXBvbmVudEFzUmVmVG8iLCJyZW1vdmVDb21wb25l
bnRBc1JlZkZyb20iLCJvd25lclB1YmxpY0luc3RhbmNlIiwicmVhY3RNb3VudFJlYWR5IiwiU0VM
RUNUSU9OX1JFU1RPUkFUSU9OIiwiRVZFTlRfU1VQUFJFU1NJT04iLCJjdXJyZW50bHlFbmFibGVk
IiwicHJldmlvdXNseUVuYWJsZWQiLCJPTl9ET01fUkVBRFlfUVVFVUVJTkciLCJwcmV2UmVmIiwi
cHJldk93bmVyIiwibmV4dFJlZiIsIm5leHRPd25lciIsIlJlYWN0U2VydmVyVXBkYXRlUXVldWUi
LCJub29wQ2FsbGJhY2tRdWV1ZSIsIk5TIiwieGxpbmsiLCJ4bWwiLCJBVFRSUyIsImFjY2VudEhl
aWdodCIsImFjY3VtdWxhdGUiLCJhZGRpdGl2ZSIsImFsaWdubWVudEJhc2VsaW5lIiwiYWxsb3dS
ZW9yZGVyIiwiYWxwaGFiZXRpYyIsImFtcGxpdHVkZSIsImFyYWJpY0Zvcm0iLCJhc2NlbnQiLCJh
dHRyaWJ1dGVUeXBlIiwiYXV0b1JldmVyc2UiLCJhemltdXRoIiwiYmFzZUZyZXF1ZW5jeSIsImJh
c2VQcm9maWxlIiwiYmFzZWxpbmVTaGlmdCIsImJib3giLCJiZWdpbiIsImJpYXMiLCJieSIsImNh
bGNNb2RlIiwiY2FwSGVpZ2h0IiwiY2xpcCIsImNsaXBQYXRoIiwiY2xpcFJ1bGUiLCJjbGlwUGF0
aFVuaXRzIiwiY29sb3JJbnRlcnBvbGF0aW9uIiwiY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyIs
ImNvbG9yUHJvZmlsZSIsImNvbG9yUmVuZGVyaW5nIiwiY29udGVudFNjcmlwdFR5cGUiLCJjb250
ZW50U3R5bGVUeXBlIiwiY3Vyc29yIiwiY3giLCJjeSIsImRlY2VsZXJhdGUiLCJkZXNjZW50Iiwi
ZGlmZnVzZUNvbnN0YW50IiwiZGlyZWN0aW9uIiwiZGlzcGxheSIsImRpdmlzb3IiLCJkb21pbmFu
dEJhc2VsaW5lIiwiZHVyIiwiZHgiLCJkeSIsImVkZ2VNb2RlIiwiZWxldmF0aW9uIiwiZW5hYmxl
QmFja2dyb3VuZCIsImV4cG9uZW50IiwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsImZpbGwi
LCJmaWxsUnVsZSIsImZpbHRlciIsImZpbHRlclJlcyIsImZpbHRlclVuaXRzIiwiZmxvb2RDb2xv
ciIsImZvY3VzYWJsZSIsImZvbnRTaXplQWRqdXN0IiwiZm9udFN0cmV0Y2giLCJmeCIsImZ5Iiwi
ZzEiLCJnMiIsImdseXBoTmFtZSIsImdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsIiwiZ2x5cGhP
cmllbnRhdGlvblZlcnRpY2FsIiwiZ2x5cGhSZWYiLCJncmFkaWVudFRyYW5zZm9ybSIsImdyYWRp
ZW50VW5pdHMiLCJoYW5naW5nIiwiaG9yaXpBZHZYIiwiaG9yaXpPcmlnaW5YIiwiaWRlb2dyYXBo
aWMiLCJpbWFnZVJlbmRlcmluZyIsImluIiwiaW4yIiwiaW50ZXJjZXB0IiwiazEiLCJrMiIsImsz
IiwiazQiLCJrZXJuZWxNYXRyaXgiLCJrZXJuZWxVbml0TGVuZ3RoIiwia2VybmluZyIsImtleVBv
aW50cyIsImtleVNwbGluZXMiLCJrZXlUaW1lcyIsImxlbmd0aEFkanVzdCIsImxldHRlclNwYWNp
bmciLCJsaWdodGluZ0NvbG9yIiwibGltaXRpbmdDb25lQW5nbGUiLCJsb2NhbCIsIm1hcmtlckVu
ZCIsIm1hcmtlck1pZCIsIm1hcmtlclN0YXJ0IiwibWFya2VySGVpZ2h0IiwibWFya2VyVW5pdHMi
LCJtYXJrZXJXaWR0aCIsIm1hc2siLCJtYXNrQ29udGVudFVuaXRzIiwibWFza1VuaXRzIiwibWF0
aGVtYXRpY2FsIiwibW9kZSIsIm51bU9jdGF2ZXMiLCJvcGVyYXRvciIsIm9yaWVudCIsIm9yaWVu
dGF0aW9uIiwib3JpZ2luIiwib3ZlcmZsb3ciLCJvdmVybGluZVBvc2l0aW9uIiwib3ZlcmxpbmVU
aGlja25lc3MiLCJwYWludE9yZGVyIiwicGFub3NlMSIsInBhdGhMZW5ndGgiLCJwYXR0ZXJuQ29u
dGVudFVuaXRzIiwicGF0dGVyblRyYW5zZm9ybSIsInBhdHRlcm5Vbml0cyIsInBvaW50ZXJFdmVu
dHMiLCJwb2ludHMiLCJwb2ludHNBdFgiLCJwb2ludHNBdFkiLCJwb2ludHNBdFoiLCJwcmVzZXJ2
ZUFscGhhIiwicHJlc2VydmVBc3BlY3RSYXRpbyIsInByaW1pdGl2ZVVuaXRzIiwiciIsInJhZGl1
cyIsInJlZlgiLCJyZWZZIiwicmVuZGVyaW5nSW50ZW50IiwicmVwZWF0Q291bnQiLCJyZXBlYXRE
dXIiLCJyZXF1aXJlZEV4dGVuc2lvbnMiLCJyZXF1aXJlZEZlYXR1cmVzIiwicmVzdGFydCIsInJv
dGF0ZSIsInJ4IiwicnkiLCJzY2FsZSIsInNlZWQiLCJzaGFwZVJlbmRlcmluZyIsInNsb3BlIiwi
c3BhY2luZyIsInNwZWN1bGFyQ29uc3RhbnQiLCJzcGVjdWxhckV4cG9uZW50Iiwic3BlZWQiLCJz
cHJlYWRNZXRob2QiLCJzdGREZXZpYXRpb24iLCJzdGVtaCIsInN0ZW12Iiwic3RpdGNoVGlsZXMi
LCJzdG9wQ29sb3IiLCJzdHJpa2V0aHJvdWdoUG9zaXRpb24iLCJzdHJpa2V0aHJvdWdoVGhpY2tu
ZXNzIiwic3Ryb2tlIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3VyZmFjZVNj
YWxlIiwic3lzdGVtTGFuZ3VhZ2UiLCJ0YWJsZVZhbHVlcyIsInRhcmdldFgiLCJ0YXJnZXRZIiwi
dGV4dEFuY2hvciIsInRleHREZWNvcmF0aW9uIiwidGV4dFJlbmRlcmluZyIsInRleHRMZW5ndGgi
LCJ1MSIsInUyIiwidW5kZXJsaW5lUG9zaXRpb24iLCJ1bmRlcmxpbmVUaGlja25lc3MiLCJ1bmlj
b2RlIiwidW5pY29kZUJpZGkiLCJ1bmljb2RlUmFuZ2UiLCJ1bml0c1BlckVtIiwidkFscGhhYmV0
aWMiLCJ2SGFuZ2luZyIsInZJZGVvZ3JhcGhpYyIsInZNYXRoZW1hdGljYWwiLCJ2ZWN0b3JFZmZl
Y3QiLCJ2ZXJ0QWR2WSIsInZlcnRPcmlnaW5YIiwidmVydE9yaWdpblkiLCJ2aWV3Qm94Iiwidmll
d1RhcmdldCIsInZpc2liaWxpdHkiLCJ3aWR0aHMiLCJ3b3JkU3BhY2luZyIsIndyaXRpbmdNb2Rl
IiwieEhlaWdodCIsIngxIiwieDIiLCJ4Q2hhbm5lbFNlbGVjdG9yIiwieGxpbmtBY3R1YXRlIiwi
eGxpbmtBcmNyb2xlIiwieGxpbmtIcmVmIiwieGxpbmtSb2xlIiwieGxpbmtTaG93IiwieGxpbmtU
aXRsZSIsInhsaW5rVHlwZSIsInhtbEJhc2UiLCJ4bWxucyIsInhtbG5zWGxpbmsiLCJ4bWxMYW5n
IiwieG1sU3BhY2UiLCJ5MSIsInkyIiwieUNoYW5uZWxTZWxlY3RvciIsInoiLCJ6b29tQW5kUGFu
IiwidG9wIiwiYm91bmRpbmdUb3AiLCJsZWZ0IiwiYm91bmRpbmdMZWZ0IiwiY29uc3RydWN0U2Vs
ZWN0RXZlbnQiLCJtb3VzZURvd24iLCJjdXJyZW50U2VsZWN0aW9uIiwibGFzdFNlbGVjdGlvbiIs
InNraXBTZWxlY3Rpb25DaGFuZ2VFdmVudCIsImhhc0xpc3RlbmVyIiwiU3ludGhldGljQW5pbWF0
aW9uRXZlbnQiLCJTeW50aGV0aWNDbGlwYm9hcmRFdmVudCIsIlN5bnRoZXRpY0ZvY3VzRXZlbnQi
LCJTeW50aGV0aWNLZXlib2FyZEV2ZW50IiwiU3ludGhldGljRHJhZ0V2ZW50IiwiU3ludGhldGlj
VG91Y2hFdmVudCIsIlN5bnRoZXRpY1RyYW5zaXRpb25FdmVudCIsIlN5bnRoZXRpY1doZWVsRXZl
bnQiLCJ0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWciLCJjYXBpdGFsaXplZEV2ZW50Iiwi
b25FdmVudCIsInRvcEV2ZW50Iiwib25DbGlja0xpc3RlbmVycyIsIkV2ZW50Q29uc3RydWN0b3Ii
LCJBbmltYXRpb25FdmVudEludGVyZmFjZSIsImFuaW1hdGlvbk5hbWUiLCJlbGFwc2VkVGltZSIs
InBzZXVkb0VsZW1lbnQiLCJDbGlwYm9hcmRFdmVudEludGVyZmFjZSIsImNsaXBib2FyZERhdGEi
LCJDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlIiwiRHJhZ0V2ZW50SW50ZXJmYWNlIiwiZGF0YVRy
YW5zZmVyIiwiRm9jdXNFdmVudEludGVyZmFjZSIsIklucHV0RXZlbnRJbnRlcmZhY2UiLCJnZXRF
dmVudEtleSIsIktleWJvYXJkRXZlbnRJbnRlcmZhY2UiLCJyZXBlYXQiLCJsb2NhbGUiLCJUb3Vj
aEV2ZW50SW50ZXJmYWNlIiwidG91Y2hlcyIsInRhcmdldFRvdWNoZXMiLCJjaGFuZ2VkVG91Y2hl
cyIsIlRyYW5zaXRpb25FdmVudEludGVyZmFjZSIsIldoZWVsRXZlbnRJbnRlcmZhY2UiLCJkZWx0
YVgiLCJ3aGVlbERlbHRhWCIsImRlbHRhWSIsIndoZWVsRGVsdGFZIiwid2hlZWxEZWx0YSIsImRl
bHRhWiIsImRlbHRhTW9kZSIsImwiLCJNT0QiLCJpc0VtcHR5IiwiaXNOb25OdW1lcmljIiwiY29t
cG9uZW50T3JFbGVtZW50IiwiZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQiLCJub3JtYWxp
emVLZXkiLCJ0cmFuc2xhdGVUb0tleSIsIkVzYyIsIlNwYWNlYmFyIiwiTGVmdCIsIlVwIiwiUmln
aHQiLCJEb3duIiwiRGVsIiwiV2luIiwiTWVudSIsIkFwcHMiLCJTY3JvbGwiLCJNb3pQcmludGFi
bGVLZXkiLCI4IiwiOSIsIjEyIiwiMTMiLCIxNiIsIjE3IiwiMTgiLCIxOSIsIjIwIiwiMjciLCIz
MiIsIjMzIiwiMzQiLCIzNSIsIjM2IiwiMzciLCIzOCIsIjM5IiwiNDAiLCI0NSIsIjQ2IiwiMTEy
IiwiMTEzIiwiMTE0IiwiMTE1IiwiMTE2IiwiMTE3IiwiMTE4IiwiMTE5IiwiMTIwIiwiMTIxIiwi
MTIyIiwiMTIzIiwiMTQ0IiwiMTQ1IiwiMjI0IiwiZ2V0TGVhZk5vZGUiLCJnZXRTaWJsaW5nTm9k
ZSIsIm5vZGVTdGFydCIsIm5vZGVFbmQiLCJtYWtlUHJlZml4TWFwIiwic3R5bGVQcm9wIiwicHJl
Zml4ZWRFdmVudE5hbWVzIiwidmVuZG9yUHJlZml4ZXMiLCJwcmVmaXhNYXAiLCJhbmltYXRpb25l
bmQiLCJhbmltYXRpb25pdGVyYXRpb24iLCJhbmltYXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQi
LCJhbmltYXRpb24iLCJ0cmFuc2l0aW9uIiwiX1Byb3ZpZGVyJGNoaWxkQ29udGV4Iiwic3ViS2V5
IiwiZmFjdG9yaWVzIiwic3RyaWN0RXF1YWwiLCJjcmVhdGVDb25uZWN0IiwiX3JlZiRjb25uZWN0
SE9DIiwiY29ubmVjdEhPQyIsIl9yZWYkbWFwU3RhdGVUb1Byb3BzRiIsIm1hcFN0YXRlVG9Qcm9w
c0ZhY3RvcmllcyIsIl9tYXBTdGF0ZVRvUHJvcHMyIiwiX3JlZiRtYXBEaXNwYXRjaFRvUHJvIiwi
bWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVzIiwiX21hcERpc3BhdGNoVG9Qcm9wczIiLCJfcmVm
JG1lcmdlUHJvcHNGYWN0b3IiLCJtZXJnZVByb3BzRmFjdG9yaWVzIiwiX21lcmdlUHJvcHMyIiwi
X3JlZiRzZWxlY3RvckZhY3RvcnkiLCJfc2VsZWN0b3JGYWN0b3J5MiIsIm1hcFN0YXRlVG9Qcm9w
cyIsIm1hcERpc3BhdGNoVG9Qcm9wcyIsIm1lcmdlUHJvcHMiLCJfcmVmMiRwdXJlIiwicHVyZSIs
Il9yZWYyJGFyZVN0YXRlc0VxdWFsIiwiYXJlU3RhdGVzRXF1YWwiLCJfcmVmMiRhcmVPd25Qcm9w
c0VxdWEiLCJhcmVPd25Qcm9wc0VxdWFsIiwiX3NoYWxsb3dFcXVhbDIiLCJfcmVmMiRhcmVTdGF0
ZVByb3BzRXEiLCJhcmVTdGF0ZVByb3BzRXF1YWwiLCJfcmVmMiRhcmVNZXJnZWRQcm9wc0UiLCJh
cmVNZXJnZWRQcm9wc0VxdWFsIiwiZXh0cmFPcHRpb25zIiwiaW5pdE1hcFN0YXRlVG9Qcm9wcyIs
ImluaXRNYXBEaXNwYXRjaFRvUHJvcHMiLCJpbml0TWVyZ2VQcm9wcyIsIl9zaGFsbG93RXF1YWwi
LCJfbWFwRGlzcGF0Y2hUb1Byb3BzIiwiX21hcFN0YXRlVG9Qcm9wcyIsIl9tZXJnZVByb3BzIiwi
X3NlbGVjdG9yRmFjdG9yeSIsIndoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uIiwiX3dy
YXBNYXBUb1Byb3BzIiwid2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzTWlzc2luZyIsIndoZW5NYXBE
aXNwYXRjaFRvUHJvcHNJc09iamVjdCIsIl9yZWR1eCIsIndoZW5NYXBTdGF0ZVRvUHJvcHNJc0Z1
bmN0aW9uIiwid2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZyIsImRlZmF1bHRNZXJnZVByb3Bz
Iiwic3RhdGVQcm9wcyIsImRpc3BhdGNoUHJvcHMiLCJ3cmFwTWVyZ2VQcm9wc0Z1bmMiLCJoYXNS
dW5PbmNlIiwibWVyZ2VkUHJvcHMiLCJuZXh0TWVyZ2VkUHJvcHMiLCJ3aGVuTWVyZ2VQcm9wc0lz
RnVuY3Rpb24iLCJ3aGVuTWVyZ2VQcm9wc0lzT21pdHRlZCIsImltcHVyZUZpbmFsUHJvcHNTZWxl
Y3RvckZhY3RvcnkiLCJwdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeSIsImhhbmRsZUZpcnN0
Q2FsbCIsImZpcnN0U3RhdGUiLCJmaXJzdE93blByb3BzIiwiaGFzUnVuQXRMZWFzdE9uY2UiLCJo
YW5kbGVOZXdQcm9wc0FuZE5ld1N0YXRlIiwiaGFuZGxlTmV3UHJvcHMiLCJoYW5kbGVOZXdTdGF0
ZSIsIm5leHRTdGF0ZVByb3BzIiwic3RhdGVQcm9wc0NoYW5nZWQiLCJoYW5kbGVTdWJzZXF1ZW50
Q2FsbHMiLCJuZXh0T3duUHJvcHMiLCJwcm9wc0NoYW5nZWQiLCJzdGF0ZUNoYW5nZWQiLCJmaW5h
bFByb3BzU2VsZWN0b3JGYWN0b3J5IiwiX3ZlcmlmeVN1YnNlbGVjdG9ycyIsInZlcmlmeSIsInZl
cmlmeVN1YnNlbGVjdG9ycyIsImNyZWF0ZUxpc3RlbmVyQ29sbGVjdGlvbiIsImNsZWFyIiwiQ0xF
QVJFRCIsIm5vdGlmeSIsIm51bGxMaXN0ZW5lcnMiLCJTdWJzY3JpcHRpb24iLCJhZGROZXN0ZWRT
dWIiLCJlbmFibGUiLCJyYXdBc2FwIiwidGFzayIsInJlcXVlc3RGbHVzaCIsImZsdXNoaW5nIiwi
Zmx1c2giLCJjdXJyZW50SW5kZXgiLCJjYXBhY2l0eSIsInNjYW4iLCJuZXdMZW5ndGgiLCJtYWtl
UmVxdWVzdENhbGxGcm9tTXV0YXRpb25PYnNlcnZlciIsInRvZ2dsZSIsIkJyb3dzZXJNdXRhdGlv
bk9ic2VydmVyIiwib2JzZXJ2ZSIsImNoYXJhY3RlckRhdGEiLCJtYWtlUmVxdWVzdENhbGxGcm9t
VGltZXIiLCJoYW5kbGVUaW1lciIsInRpbWVvdXRIYW5kbGUiLCJjbGVhckludGVydmFsIiwiaW50
ZXJ2YWxIYW5kbGUiLCJzZXRJbnRlcnZhbCIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJXZWJLaXRNdXRh
dGlvbk9ic2VydmVyIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJuZXdPYmoiLCJjbGVhckNv
bXBsZXRlZCIsImNvbXBsZXRlQWxsIiwiY29tcGxldGVUb2RvIiwiZWRpdFRvZG8iLCJkZWxldGVU
b2RvIiwiYWRkVG9kbyIsIl9BY3Rpb25UeXBlcyIsInR5cGVzIiwiX2RlZmluZVByb3BlcnR5Iiwi
X0ZJTFRFUl9USVRMRVMiLCJfVG9kb0ZpbHRlcnMiLCJGSUxURVJfVElUTEVTIiwiRm9vdGVyIiwi
YWN0aXZlQ291bnQiLCJpdGVtV29yZCIsIl9wcm9wcyIsInNlbGVjdGVkRmlsdGVyIiwib25TaG93
Iiwib25DbGljayIsIl9wcm9wczIiLCJjb21wbGV0ZWRDb3VudCIsIm9uQ2xlYXJDb21wbGV0ZWQi
LCJfdGhpczIiLCJyZW5kZXJUb2RvQ291bnQiLCJyZW5kZXJGaWx0ZXJMaW5rIiwicmVuZGVyQ2xl
YXJCdXR0b24iLCJfVG9kb1RleHRJbnB1dCIsIl9Ub2RvVGV4dElucHV0MiIsIkhlYWRlciIsImhh
bmRsZVNhdmUiLCJfVE9ET19GSUxURVJTIiwiX1RvZG9JdGVtIiwiX1RvZG9JdGVtMiIsIl9Gb290
ZXIiLCJfRm9vdGVyMiIsIlRPRE9fRklMVEVSUyIsInRvZG8iLCJjb21wbGV0ZWQiLCJNYWluU2Vj
dGlvbiIsImhhbmRsZUNsZWFyQ29tcGxldGVkIiwiYWN0aW9ucyIsImhhbmRsZVNob3ciLCJ0b2Rv
cyIsImZpbHRlcmVkVG9kb3MiLCJyZW5kZXJUb2dnbGVBbGwiLCJyZW5kZXJGb290ZXIiLCJUb2Rv
SXRlbSIsImhhbmRsZURvdWJsZUNsaWNrIiwib25Eb3VibGVDbGljayIsIl9yZWFjdFJlZHV4Iiwi
X0hlYWRlciIsIl9IZWFkZXIyIiwiX01haW5TZWN0aW9uIiwiX01haW5TZWN0aW9uMiIsIl9hY3Rp
b25zIiwiVG9kb0FjdGlvbnMiLCJBcHAiLCJfcmVhY3REb20iLCJfQXBwIiwiX0FwcDIiLCJfcmVk
dWNlcnMiLCJfcmVkdWNlcnMyIiwiZ2V0RWxlbWVudEJ5SWQiLCJfdG9kb3MiLCJfdG9kb3MyIiwi
cm9vdFJlZHVjZXIiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIyIiwidiIsIm1heElkIiwiYXJl
QWxsTWFya2VkIiwiX3R5cGVvZiIsInZhbHVlUHJvbWlzZSIsIlRSVUUiLCJGQUxTRSIsIk5VTEwi
LCJVTkRFRklORUQiLCJaRVJPIiwiRU1QVFlTVFJJTkciLCJhbGwiLCJyZW1haW5pbmciLCJyYWNl
IiwiZGlzYWJsZSIsIm9uVW5oYW5kbGVkIiwiYWxsUmVqZWN0aW9ucyIsIm1hdGNoV2hpdGVsaXN0
IiwicmVqZWN0aW9ucyIsIndoaXRlbGlzdCIsIkRFRkFVTFRfV0hJVEVMSVNUIiwiZGlzcGxheUlk
IiwibG9nZ2VkIiwibG9nRXJyb3IiLCJvbkhhbmRsZWQiLCJ3YXJuIiwiXzcyIiwiZXJyU3RyIiwi
bGluZSIsInNvbWUiLCJjbHMiLCJSYW5nZUVycm9yIiwid2VicGFja1BvbHlmaWxsIiwiZGVwcmVj
YXRlIiwicGF0aHMiLCJub3JtYWxpemVOYW1lIiwibm9ybWFsaXplVmFsdWUiLCJpdGVyYXRvckZv
ciIsIml0ZW1zIiwic2hpZnQiLCJzdXBwb3J0IiwiaXRlcmFibGUiLCJIZWFkZXJzIiwiYXBwZW5k
IiwiY29uc3VtZWQiLCJib2R5VXNlZCIsImZpbGVSZWFkZXJSZWFkeSIsInJlYWRlciIsIm9ubG9h
ZCIsIm9uZXJyb3IiLCJyZWFkQmxvYkFzQXJyYXlCdWZmZXIiLCJibG9iIiwiRmlsZVJlYWRlciIs
InJlYWRBc0FycmF5QnVmZmVyIiwicmVhZEJsb2JBc1RleHQiLCJyZWFkQXNUZXh0IiwiQm9keSIs
Il9pbml0Qm9keSIsIl9ib2R5SW5pdCIsIl9ib2R5VGV4dCIsIkJsb2IiLCJpc1Byb3RvdHlwZU9m
IiwiX2JvZHlCbG9iIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsIl9ib2R5Rm9ybURhdGEiLCJzZWFy
Y2hQYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJhcnJheUJ1ZmZlciIsIkFycmF5QnVmZmVyIiwi
cmVqZWN0ZWQiLCJkZWNvZGUiLCJqc29uIiwicGFyc2UiLCJub3JtYWxpemVNZXRob2QiLCJ1cGNh
c2VkIiwibWV0aG9kcyIsIlJlcXVlc3QiLCJjcmVkZW50aWFscyIsInJlZmVycmVyIiwiYnl0ZXMi
LCJkZWNvZGVVUklDb21wb25lbnQiLCJ4aHIiLCJoZWFkIiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
IiwiaGVhZGVyIiwiUmVzcG9uc2UiLCJib2R5SW5pdCIsInN0YXR1cyIsIm9rIiwic3RhdHVzVGV4
dCIsImZldGNoIiwiZ2V0QWxsIiwidGhpc0FyZyIsImNsb25lIiwicmVzcG9uc2UiLCJyZWRpcmVj
dFN0YXR1c2VzIiwicmVkaXJlY3QiLCJpbml0IiwicmVzcG9uc2VVUkwiLCJnZXRSZXNwb25zZUhl
YWRlciIsInJlcXVlc3QiLCJYTUxIdHRwUmVxdWVzdCIsInJlc3BvbnNlVGV4dCIsIm9udGltZW91
dCIsIndpdGhDcmVkZW50aWFscyIsInJlc3BvbnNlVHlwZSIsInNldFJlcXVlc3RIZWFkZXIiLCJz
ZW5kIiwicG9seWZpbGwiLCJlc2NhcGVVc2VyUHJvdmlkZWRLZXkiLCJ1c2VyUHJvdmlkZWRLZXlF
c2NhcGVSZWdleCIsIkZvckVhY2hCb29rS2VlcGluZyIsImZvckVhY2hGdW5jdGlvbiIsImZvckVh
Y2hDb250ZXh0IiwiZm9yRWFjaFNpbmdsZUNoaWxkIiwiZm9yRWFjaENoaWxkcmVuIiwiZm9yRWFj
aEZ1bmMiLCJNYXBCb29rS2VlcGluZyIsIm1hcFJlc3VsdCIsImtleVByZWZpeCIsIm1hcEZ1bmN0
aW9uIiwibWFwQ29udGV4dCIsIm1hcFNpbmdsZUNoaWxkSW50b0NvbnRleHQiLCJjaGlsZEtleSIs
Im1hcHBlZENoaWxkIiwibWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbCIsImVzY2FwZWRQcmVm
aXgiLCJtYXBDaGlsZHJlbiIsImZvckVhY2hTaW5nbGVDaGlsZER1bW15IiwiY291bnRDaGlsZHJl
biIsImNyZWF0ZURPTUZhY3RvcnkiLCJhYmJyIiwiYWRkcmVzcyIsImFydGljbGUiLCJhc2lkZSIs
ImF1ZGlvIiwiYmRpIiwiYmRvIiwiYmlnIiwiYmxvY2txdW90ZSIsImNhbnZhcyIsImRhdGFsaXN0
IiwiZGQiLCJkZWwiLCJkZXRhaWxzIiwiZGZuIiwiZGlhbG9nIiwiZGwiLCJkdCIsImVtIiwiZmll
bGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9vdGVyIiwiaDEiLCJoMiIsImgzIiwiaDQi
LCJoNSIsImg2IiwiaGdyb3VwIiwiaWZyYW1lIiwiaW5zIiwia2JkIiwibGkiLCJtYWluIiwibWFy
ayIsIm1lbnUiLCJtZXRlciIsIm5hdiIsIm5vc2NyaXB0Iiwib2wiLCJvdXRwdXQiLCJwaWN0dXJl
IiwicHJvZ3Jlc3MiLCJxIiwicnAiLCJydCIsInJ1YnkiLCJzYW1wIiwic2NyaXB0Iiwic2VjdGlv
biIsInNtYWxsIiwic3Ryb25nIiwic3ViIiwic3VwIiwidGFibGUiLCJ1IiwidWwiLCJ2YXIiLCJ2
aWRlbyIsImNpcmNsZSIsImRlZnMiLCJlbGxpcHNlIiwiZyIsImxpbmVhckdyYWRpZW50IiwicG9s
eWdvbiIsInBvbHlsaW5lIiwicmFkaWFsR3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInRzcGFuIiwi
X3JlcXVpcmUiLCJfcmVxdWlyZTIiLCJnZXROZXh0RGVidWdJRCIsIm5leHREZWJ1Z0lEIiwibG93
UHJpb3JpdHlXYXJuaW5nIiwibWlkZGxld2FyZXMiLCJfZGlzcGF0Y2giLCJjaGFpbiIsIm1pZGRs
ZXdhcmVBUEkiLCJtaWRkbGV3YXJlIiwiYmluZEFjdGlvbkNyZWF0b3IiLCJhY3Rpb25DcmVhdG9y
IiwiYWN0aW9uQ3JlYXRvcnMiLCJib3VuZEFjdGlvbkNyZWF0b3JzIiwiZ2V0VW5kZWZpbmVkU3Rh
dGVFcnJvck1lc3NhZ2UiLCJhY3Rpb25UeXBlIiwiYWN0aW9uTmFtZSIsImFzc2VydFJlZHVjZXJT
aGFwZSIsInJlZHVjZXJzIiwicmVkdWNlcktleXMiLCJmaW5hbFJlZHVjZXJzIiwiZmluYWxSZWR1
Y2VyS2V5cyIsInNoYXBlQXNzZXJ0aW9uRXJyb3IiLCJoYXNDaGFuZ2VkIiwiX2kiLCJwcmV2aW91
c1N0YXRlRm9yS2V5IiwibmV4dFN0YXRlRm9yS2V5IiwiZXJyb3JNZXNzYWdlIiwiX3BvbnlmaWxs
IiwiX3BvbnlmaWxsMiIsInN5bWJvbE9ic2VydmFibGVQb255ZmlsbCIsIl9TeW1ib2wiLCJfX3dl
YnBhY2tfbW9kdWxlX3RlbXBsYXRlX2FyZ3VtZW50XzBfXyIsIm9uZUFyZ3VtZW50UG9vbGVyIiwi
Y29weUZpZWxkc0Zyb20iLCJLbGFzcyIsImluc3RhbmNlUG9vbCIsImExIiwiYTIiLCJ0aHJlZUFy
Z3VtZW50UG9vbGVyIiwiYTMiLCJhNCIsInN0YW5kYXJkUmVsZWFzZXIiLCJwb29sU2l6ZSIsIkRF
RkFVTFRfUE9PTF9TSVpFIiwiREVGQVVMVF9QT09MRVIiLCJDb3B5Q29uc3RydWN0b3IiLCJwb29s
ZXIiLCJOZXdLbGFzcyJdLCJtYXBwaW5ncyI6IkNBQVMsU0FBVUEsR0NJbkIsUUFBQUMsR0FBQUMs
R0FHQSxHQUFBQyxFQUFBRCxHQUNBLE1BQUFDLEdBQUFELEdBQUFFLE9BR0EsSUFBQUMsR0FBQUYs
RUFBQUQsSUFDQUUsV0FDQUUsR0FBQUosRUFDQUssUUFBQSxFQVVBLE9BTkFQLEdBQUFFLEdBQUFN
LEtBQUFILEVBQUFELFFBQUFDLElBQUFELFFBQUFILEdBR0FJLEVBQUFFLFFBQUEsRUFHQUYsRUFB
QUQsUUF2QkEsR0FBQUQsS0FxQ0EsT0FUQUYsR0FBQVEsRUFBQVQsRUFHQUMsRUFBQVMsRUFBQVAs
RUFHQUYsRUFBQVUsRUFBQSxLQUdBVixFQUFBLElESVcsU0FBU0QsR0FFbkIsSUFBSSxHQUFJWSxL
QUFLWixHQUNaLEdBQUdhLE9BQU9DLFVBQVVDLGVBQWVQLEtBQUtSLEVBQVNZLEdBQ2hELGFBQWNa
LEdBQVFZLElBQ3RCLElBQUssV0FBWSxLQUNqQixLQUFLLFNBRUpaLEVBQVFZLEdBQU0sU0FBU0ks
R0FDdEIsR0FBSUMsR0FBT0QsRUFBR0UsTUFBTSxHQUFJQyxFQUFLbkIsRUFBUWdCLEVBQUcsR0FD
eEMsT0FBTyxVQUFVSSxFQUFFQyxFQUFFWCxHQUNwQlMsRUFBR0csTUFBTUMsTUFBT0gsRUFBRUMs
RUFBRVgsR0FBR2MsT0FBT1AsTUFFOUJqQixFQUFRWSxHQUNWLE1BQ0QsU0FFQ1osRUFBUVksR0FB
S1osRUFBUUEsRUFBUVksSUFLaEMsTUFBT1osS0FHRixTQUFTSyxFQUFRRCxFQUFTSCxHQUUvQkEs
RUFBb0IsS0FDcEJJLEVBQU9ELFFBQVVILEVBQW9CLE1BS2hDLFNBQVNJLEVBQVFELEVBQVNILEdF
akVoQyxZQXVCQSxTQUFBd0IsR0FBQUMsRUFBQUMsRUFBQVAsRUFBQUMsRUFBQVgsRUFBQWtCLEVB
QUFDLEVBQUFDLEdBR0EsR0FGQUMsRUFBQUosSUFFQUQsRUFBQSxDQUNBLEdBQUFNLEVBQ0EsSUFB
QUMsU0FBQU4sRUFDQUssRUFBQSxHQUFBRSxPQUFBLHFJQUNLLENBQ0wsR0FBQWpCLElBQUFHLEVB
QUFDLEVBQUFYLEVBQUFrQixFQUFBQyxFQUFBQyxHQUNBSyxFQUFBLENBQ0FILEdBQUEsR0FBQUUs
T0FBQVAsRUFBQVMsUUFBQSxpQkFDQSxNQUFBbkIsR0FBQWtCLFFBRUFILEVBQUFLLEtBQUEsc0JB
SUEsS0FEQUwsR0FBQU0sWUFBQSxFQUNBTixHQTNCQSxHQUFBRCxHQUFBLFNBQUFKLElBK0JBdEIs
R0FBQUQsUUFBQXFCLEdGaUZNLFNBQVNwQixFQUFRRCxFQUFTSCxHRzdIaEMsWUFFQSxJQUFBc0Ms
R0FBQXRDLEVBQUEsR0FTQXVDLEVBQUFELENBMENBbEMsR0FBQUQsUUFBQW9DLEdINklNLFNBQVNu
QyxFQUFRRCxHSWxNdkIsWUFTQSxTQUFBcUMsR0FBQUMsR0FLQSxPQUpBQyxHQUFBQyxVQUFBQyxP
QUFBLEVBRUFDLEVBQUEseUJBQUFKLEVBQUEsNkVBQW9EQSxFQUVwREssRUFBQSxFQUFzQkEsRUFB
QUosRUFBbUJJLElBQ3pDRCxHQUFBLFdBQUFFLG1CQUFBSixVQUFBRyxFQUFBLEdBR0FELElBQUEs
Z0hBRUEsSUFBQWQsR0FBQSxHQUFBRSxPQUFBWSxFQUlBLE1BSEFkLEdBQUFLLEtBQUEsc0JBQ0FM
LEVBQUFNLFlBQUEsRUFFQU4sRUFHQTNCLEVBQUFELFFBQUFxQyxHSmtOTSxTQUFTcEMsRUFBUUQs
R0tqUHZCLFlBTUEsU0FBQTZDLEdBQUFDLEdBQ0EsVUFBQUEsR0FBQWpCLFNBQUFpQixFQUNBLFNB
QUFDLFdBQUEsd0RBR0EsT0FBQXRDLFFBQUFxQyxHQUdBLFFBQUFFLEtBQ0EsSUFDQSxJQUFBdkMs
T0FBQXdDLE9BQ0EsUUFNQSxJQUFBQyxHQUFBLEdBQUFDLFFBQUEsTUFFQSxJQURBRCxFQUFBLFFB
Q0EsTUFBQXpDLE9BQUEyQyxvQkFBQUYsR0FBQSxHQUNBLFFBS0EsUUFEQUcsTUFDQTdDLEVBQUEs
RUFBaUJBLEVBQUEsR0FBUUEsSUFDekI2QyxFQUFBLElBQUFGLE9BQUFHLGFBQUE5QyxLQUVBLElB
QUErQyxHQUFBOUMsT0FBQTJDLG9CQUFBQyxHQUFBRyxJQUFBLFNBQUFDLEdBQ0EsTUFBQUosR0FB
QUksSUFFQSxtQkFBQUYsRUFBQUcsS0FBQSxJQUNBLFFBSUEsSUFBQUMsS0FJQSxPQUhBLHVCQUFB
QyxNQUFBLElBQUFDLFFBQUEsU0FBQUMsR0FDQUgsRUFBQUcsT0FHQSx5QkFEQXJELE9BQUFzRCxL
QUFBdEQsT0FBQXdDLFVBQWtDVSxJQUFBRCxLQUFBLElBTWhDLE1BQUFNLEdBRUYsVUFwREEsR0FB
QUMsR0FBQXhELE9BQUF3RCxzQkFDQXRELEVBQUFGLE9BQUFDLFVBQUFDLGVBQ0F1RCxFQUFBekQs
T0FBQUMsVUFBQXlELG9CQXNEQWxFLEdBQUFELFFBQUFnRCxJQUFBdkMsT0FBQXdDLE9BQUEsU0FB
QW1CLEVBQUFDLEdBS0EsT0FKQUMsR0FFQUMsRUFEQUMsRUFBQTNCLEVBQUF1QixHQUdBSyxFQUFB
LEVBQWdCQSxFQUFBakMsVUFBQUMsT0FBc0JnQyxJQUFBLENBQ3RDSCxFQUFBN0QsT0FBQStCLFVB
QUFpQyxHQUVBLFFBQUFDLEtBQUFKLEdBQ0EzRCxFQUFBUCxLQUFBa0UsRUFBQUksS0FDQUYsRUFB
QUUsR0FBQUosRUFBQUksR0FJQSxJQUFBVCxFQUFBLENBQ0FNLEVBQUFOLEVBQUFLLEVBQ0EsUUFB
QTlELEdBQUEsRUFBa0JBLEVBQUErRCxFQUFBOUIsT0FBb0JqQyxJQUN0QzBELEVBQUE5RCxLQUFB
a0UsRUFBQUMsRUFBQS9ELE1BQ0FnRSxFQUFBRCxFQUFBL0QsSUFBQThELEVBQUFDLEVBQUEvRCxN
QU1BLE1BQUFnRSxLTCtQTSxTQUFTdkUsRUFBUUQsRUFBU0gsR003VWhDLFlBaUJBLFNBQUE4RSxH
QUFBQyxFQUFBQyxHQUNBLFdBQUFELEVBQUFFLFVBQUFGLEVBQUFHLGFBQUFDLEtBQUE3QixPQUFB
MEIsSUFBQSxJQUFBRCxFQUFBRSxVQUFBRixFQUFBSyxZQUFBLGdCQUFBSixFQUFBLFNBQUFELEVB
QUFFLFVBQUFGLEVBQUFLLFlBQUEsaUJBQUFKLEVBQUEsSUFVQSxRQUFBSyxHQUFBQyxHQUVBLElB
REEsR0FBQUMsR0FDQUEsRUFBQUQsRUFBQUUsb0JBQ0FGLEVBQUFDLENBRUEsT0FBQUQsR0FPQSxR
QUFBRyxHQUFBQyxFQUFBWCxHQUNBLEdBQUFZLEdBQUFOLEVBQUFLLEVBQ0FDLEdBQUFDLFVBQUFi
LEVBQ0FBLEVBQUFjLEdBQUFGLEVBR0EsUUFBQUcsR0FBQUosR0FDQSxHQUFBWCxHQUFBVyxFQUFB
RSxTQUNBYixXQUNBQSxHQUFBYyxHQUNBSCxFQUFBRSxVQUFBLE1Ba0JBLFFBQUFHLEdBQUFMLEVB
QUFYLEdBQ0EsS0FBQVcsRUFBQU0sT0FBQUMsRUFBQUMscUJBQUEsQ0FHQSxHQUFBQyxHQUFBVCxF
QUFBVSxrQkFDQUMsRUFBQXRCLEVBQUF1QixVQUNBQyxHQUFBLE9BQUFuRSxLQUFBK0QsR0FDQSxH
QUFBQSxFQUFBckYsZUFBQXNCLEdBQUEsQ0FHQSxHQUFBb0UsR0FBQUwsRUFBQS9ELEdBQ0FxRSxF
QUFBcEIsRUFBQW1CLEdBQUFFLE1BQ0EsUUFBQUQsRUFBQSxDQUtBLEtBQVUsT0FBQUosRUFBb0JB
LElBQUFNLFlBQzlCLEdBQUE3QixFQUFBdUIsRUFBQUksR0FBQSxDQUNBaEIsRUFBQWUsRUFBQUgs
RUFDQSxTQUFBRSxHQUlBSyxFQUFBLEtBQUFILElBRUFmLEVBQUFNLFFBQUFDLEVBQUFDLHFCQU9B
LFFBQUFXLEdBQUE5QixHQUNBLEdBQUFBLEVBQUFjLEdBQ0EsTUFBQWQsR0FBQWMsRUFLQSxLQURB
LEdBQUFpQixPQUNBL0IsRUFBQWMsSUFBQSxDQUVBLEdBREFpQixFQUFBQyxLQUFBaEMsSUFDQUEs
RUFBQWlDLFdBS0EsV0FKQWpDLEtBQUFpQyxXQVVBLElBRkEsR0FBQUMsR0FDQXZCLEVBQ1FYLElB
QUFXLEVBQUFYLEVBQUFjLElBQTRDZCxFQUFBK0IsRUFBQUksTUFDcERELEVBQUF2QixFQUNBb0Is
RUFBQWxFLFFBQ0FtRCxFQUFBTCxFQUFBWCxFQUlBLE9BQUFrQyxHQU9BLFFBQUFFLEdBQUFwQyxH
QUNBLEdBQUFXLEdBQUFtQixFQUFBOUIsRUFDQSxjQUFBVyxLQUFBRSxZQUFBYixFQUNBVyxFQUVB
LEtBUUEsUUFBQTBCLEdBQUExQixHQUtBLEdBRkExRCxTQUFBMEQsRUFBQUUsVUFBQWdCLEVBQUEs
YUFFQWxCLEVBQUFFLFVBQ0EsTUFBQUYsR0FBQUUsU0FLQSxLQURBLEdBQUFrQixPQUNBcEIsRUFB
QUUsV0FDQWtCLEVBQUFDLEtBQUFyQixHQUNBQSxFQUFBMkIsWUFBQSxPQUFBVCxFQUFBLE1BQ0Fs
QixJQUFBMkIsV0FLQSxNQUFRUCxFQUFBbEUsT0FBZ0I4QyxFQUFBb0IsRUFBQUksTUFDeEJuQixF
QUFBTCxJQUFBRSxVQUdBLE9BQUFGLEdBQUFFLFVBektBLEdBQUFnQixHQUFBNUcsRUFBQSxHQUVB
c0gsRUFBQXRILEVBQUEsSUFDQXVILEVBQUF2SCxFQUFBLElBSUFtRixHQUZBbkYsRUFBQSxHQUVB
c0gsRUFBQUUsbUJBQ0F2QixFQUFBc0IsRUFFQTFCLEVBQUEsMkJBQUE0QixLQUFBQyxTQUFBQyxT
QUFBLElBQUExRyxNQUFBLEdBa0tBMkcsR0FDQWYsNkJBQ0FNLHNCQUNBQyxzQkFDQXJCLHFCQUNB
TixlQUNBSyxjQUdBMUYsR0FBQUQsUUFBQXlILEdONlZNLFNBQVN4SCxFQUFRRCxHT3BoQnZCLFlB
RUEsSUFBQTBILEtBQUEsbUJBQUFDLGlCQUFBQyxXQUFBRCxPQUFBQyxTQUFBQyxlQVFBQyxHQUVB
SixZQUVBSyxjQUFBLG1CQUFBQyxRQUVBQyxxQkFBQVAsTUFBQUMsT0FBQU8sbUJBQUFQLE9BQUFR
LGFBRUFDLGVBQUFWLEtBQUFDLE9BQUFVLE9BRUFDLFlBQUFaLEVBSUF6SCxHQUFBRCxRQUFBOEgs
R1BvaUJNLFNBQVM3SCxFQUFRRCxHUXRrQnZCLFlBYUEsU0FBQXVJLEdBQUFDLEdBQ0Esa0JBQ0Es
TUFBQUEsSUFTQSxHQUFBckcsR0FBQSxZQUVBQSxHQUFBc0csWUFBQUYsRUFDQXBHLEVBQUF1Ryxp
QkFBQUgsR0FBQSxHQUNBcEcsRUFBQXdHLGdCQUFBSixHQUFBLEdBQ0FwRyxFQUFBeUcsZ0JBQUFM
LEVBQUEsTUFDQXBHLEVBQUEwRyxnQkFBQSxXQUNBLE1BQUExSCxPQUVBZ0IsRUFBQTJHLG9CQUFB
LFNBQUFOLEdBQ0EsTUFBQUEsSUFHQXZJLEVBQUFELFFBQUFtQyxHUjRrQk0sU0FBU2xDLEVBQVFE
LEVBQVNILEdTdG1CaEMsWUFJQSxJQUFBa0osR0FBQSxJQU9BOUksR0FBQUQsU0FBa0IrSSxjVHVu
QlosU0FBUzlJLEVBQVFELEVBQVNILEdVbm9CaEMsWUFvQkEsU0FBQW1KLEtBQ0FDLEVBQUFDLDJC
QUFBQyxFQUFBLE9BQUExQyxFQUFBLE9BaUNBLFFBQUEyQyxLQUNBakksS0FBQWtJLDBCQUNBbEks
S0FBQW1JLHNCQUFBLEtBQ0FuSSxLQUFBb0ksY0FBQUMsRUFBQUMsWUFDQXRJLEtBQUF1SSxxQkFB
QVQsRUFBQUMsMEJBQUFPLFdBQ0EsR0F5QkEsUUFBQUUsR0FBQUMsRUFBQTVJLEVBQUFDLEVBQUFY
LEVBQUFrQixFQUFBQyxHQUVBLE1BREF1SCxLQUNBRyxFQUFBUSxlQUFBQyxFQUFBNUksRUFBQUMs
RUFBQVgsRUFBQWtCLEVBQUFDLEdBVUEsUUFBQW9JLEdBQUFDLEVBQUFDLEdBQ0EsTUFBQUQsR0FB
QUUsWUFBQUQsRUFBQUMsWUFHQSxRQUFBQyxHQUFBQyxHQUNBLEdBQUFDLEdBQUFELEVBQUFaLHFC
QUNBYSxLQUFBQyxFQUFBM0gsT0FBQWdFLEVBQUEsTUFBQTBELEVBQUFDLEVBQUEzSCxRQUFBLE9B
S0EySCxFQUFBQyxLQUFBUixHQU9BUyxHQUVBLFFBQUE5SixHQUFBLEVBQWlCQSxFQUFBMkosRUFB
UzNKLElBQUEsQ0FJMUIsR0FBQTJFLEdBQUFpRixFQUFBNUosR0FLQStKLEVBQUFwRixFQUFBcUYs
aUJBQ0FyRixHQUFBcUYsa0JBQUEsSUFFQSxJQUFBQyxFQUNBLElBQUFDLEVBQUFDLG1CQUFBLENB
Q0EsR0FBQUMsR0FBQXpGLENBRUFBLEdBQUEwRixnQkFBQUMsS0FBQUMseUJBQ0FILEVBQUF6RixF
QUFBRSxvQkFFQW9GLEVBQUEsaUJBQUFHLEVBQUFJLFVBQ0FDLFFBQUFDLEtBQUFULEdBU0EsR0FO
QVUsRUFBQUMseUJBQUFqRyxFQUFBK0UsRUFBQVIscUJBQUFZLEdBRUFHLEdBQ0FRLFFBQUFJLFFB
QUFaLEdBR0FGLEVBQ0EsT0FBQWUsR0FBQSxFQUFxQkEsRUFBQWYsRUFBQTlILE9BQXNCNkksSUFD
M0NwQixFQUFBWCxjQUFBZ0MsUUFBQWhCLEVBQUFlLEdBQUFuRyxFQUFBcUcsc0JBZ0NBLFFBQUFD
LEdBQUF0RyxHQVNBLE1BUkE2RCxLQVFBRyxFQUFBdUMsbUJBS0F0QixFQUFBeEQsS0FBQXpCLFFB
Q0EsTUFBQUEsRUFBQXdHLHFCQUNBeEcsRUFBQXdHLG1CQUFBckIsRUFBQSxTQU5BbkIsR0FBQVEs
ZUFBQThCLEVBQUF0RyxHQWNBLFFBQUF5RyxHQUFBaEMsRUFBQWlDLEdBQ0ExQyxFQUFBdUMsa0JB
QUEsT0FBQWpGLEVBQUEsT0FDQXFGLEVBQUFQLFFBQUEzQixFQUFBaUMsR0FDQUUsR0FBQSxFQTVN
QSxHQUFBdEYsR0FBQTVHLEVBQUEsR0FDQW1NLEVBQUFuTSxFQUFBLEdBRUEySixFQUFBM0osRUFB
QSxJQUNBb00sRUFBQXBNLEVBQUEsSUFDQTZLLEVBQUE3SyxFQUFBLElBQ0FzTCxFQUFBdEwsRUFB
QSxJQUNBcU0sRUFBQXJNLEVBQUEsSUFJQXVLLEdBRkF2SyxFQUFBLE9BR0F5SyxFQUFBLEVBQ0F3
QixFQUFBdEMsRUFBQUMsWUFDQXNDLEdBQUEsRUFFQTVDLEVBQUEsS0FNQWdELEdBQ0FDLFdBQUEs
V0FDQWpMLEtBQUFtSSxzQkFBQWMsRUFBQTNILFFBRUE0SixNQUFBLFdBQ0FsTCxLQUFBbUksd0JB
QUFjLEVBQUEzSCxRQU1BMkgsRUFBQWtDLE9BQUEsRUFBQW5MLEtBQUFtSSx1QkFDQWlELEtBRUFu
QyxFQUFBM0gsT0FBQSxJQUtBK0osR0FDQUosV0FBQSxXQUNBakwsS0FBQW9JLGNBQUFrRCxTQUVB
SixNQUFBLFdBQ0FsTCxLQUFBb0ksY0FBQW1ELGNBSUFDLEdBQUFSLEVBQUFLLEVBVUFSLEdBQUE1
QyxFQUFBMUksVUFBQXdMLEdBQ0FVLHVCQUFBLFdBQ0EsTUFBQUQsSUFHQUUsV0FBQSxXQUNBMUws
S0FBQW1JLHNCQUFBLEtBQ0FFLEVBQUFzRCxRQUFBM0wsS0FBQW9JLGVBQ0FwSSxLQUFBb0ksY0FB
QSxLQUNBTixFQUFBQywwQkFBQTRELFFBQUEzTCxLQUFBdUksc0JBQ0F2SSxLQUFBdUkscUJBQUEs
TUFHQXFELFFBQUEsU0FBQUMsRUFBQUMsRUFBQWpNLEdBR0EsTUFBQWtMLEdBQUFhLFFBQUEzTSxL
QUFBZSxVQUFBdUkscUJBQUFxRCxRQUFBNUwsS0FBQXVJLHFCQUFBc0QsRUFBQUMsRUFBQWpNLE1B
SUFpTCxFQUFBaUIsYUFBQTlELEVBdUVBLElBQUFtRCxHQUFBLFdBS0EsS0FBQW5DLEVBQUEzSCxR
QUFBc0osR0FBQSxDQUNBLEdBQUEzQixFQUFBM0gsT0FBQSxDQUNBLEdBQUF5SCxHQUFBZCxFQUFB
SyxXQUNBUyxHQUFBNkMsUUFBQTlDLEVBQUEsS0FBQUMsR0FDQWQsRUFBQTBELFFBQUE1QyxHQUdB
LEdBQUE2QixFQUFBLENBQ0FBLEdBQUEsQ0FDQSxJQUFBb0IsR0FBQXJCLENBQ0FBLEdBQUF0QyxF
QUFBQyxZQUNBMEQsRUFBQVQsWUFDQWxELEVBQUFzRCxRQUFBSyxNQXVDQUMsR0FDQUMsMkJBQUEs
U0FBQUMsR0FDQUEsRUFBQSxPQUFBN0csRUFBQSxPQUNBd0MsRUFBQUMsMEJBQUFvRSxHQUdBQyx1
QkFBQSxTQUFBQyxHQUNBQSxFQUFBLE9BQUEvRyxFQUFBLE9BQ0Esa0JBQUErRyxHQUFBN0QsZUFB
QWxELEVBQUEsY0FDQSxpQkFBQStHLEdBQUE5QixrQkFBQWpGLEVBQUEsY0FDQTBDLEVBQUFxRSxJ
QUlBdkUsR0FPQUMsMEJBQUEsS0FFQVMsaUJBQ0E4QixnQkFDQWMsc0JBQ0FrQixVQUFBTCxFQUNB
eEIsT0FHQTNMLEdBQUFELFFBQUFpSixHVm1wQk0sU0FBU2hKLEVBQVFELEVBQVNILEdXbDRCaEMs
WUFtREEsU0FBQTZOLEdBQUFDLEVBQUFDLEVBQUFDLEVBQUFDLEdBUUEzTSxLQUFBd00saUJBQ0F4
TSxLQUFBNE0sWUFBQUgsRUFDQXpNLEtBQUEwTSxhQUVBLElBQUFHLEdBQUE3TSxLQUFBOE0sWUFB
QUQsU0FDQSxRQUFBRSxLQUFBRixHQUNBLEdBQUFBLEVBQUFyTixlQUFBdU4sR0FBQSxDQU1BLEdB
QUFDLEdBQUFILEVBQUFFLEVBQ0FDLEdBQ0FoTixLQUFBK00sR0FBQUMsRUFBQU4sR0FFQSxXQUFB
SyxFQUNBL00sS0FBQWlELE9BQUEwSixFQUVBM00sS0FBQStNLEdBQUFMLEVBQUFLLEdBS0EsR0FB
QUUsR0FBQSxNQUFBUCxFQUFBTyxpQkFBQVAsRUFBQU8saUJBQUFQLEVBQUFRLGVBQUEsQ0FPQSxP
QU5BRCxHQUNBak4sS0FBQW1OLG1CQUFBbk0sRUFBQXdHLGdCQUVBeEgsS0FBQW1OLG1CQUFBbk0s
RUFBQXVHLGlCQUVBdkgsS0FBQW9OLHFCQUFBcE0sRUFBQXVHLGlCQUNBdkgsS0F4RkEsR0FBQTZL
LEdBQUFuTSxFQUFBLEdBRUFvTSxFQUFBcE0sRUFBQSxJQUVBc0MsRUFBQXRDLEVBQUEsR0FNQTJP
LEdBTEEzTyxFQUFBLEdBR0Esa0JBQUE0TyxRQUVBLHFJQU1BQyxHQUNBNUQsS0FBQSxLQUNBMUcs
T0FBQSxLQUVBdUssY0FBQXhNLEVBQUF5RyxnQkFDQWdHLFdBQUEsS0FDQUMsUUFBQSxLQUNBQyxX
QUFBLEtBQ0FDLFVBQUEsU0FBQUMsR0FDQSxNQUFBQSxHQUFBRCxXQUFBRSxLQUFBQyxPQUVBZCxp
QkFBQSxLQUNBZSxVQUFBLEtBK0RBbkQsR0FBQTBCLEVBQUFoTixXQUNBME8sZUFBQSxXQUNBak8s
S0FBQWlOLGtCQUFBLENBQ0EsSUFBQVksR0FBQTdOLEtBQUEwTSxXQUNBbUIsS0FJQUEsRUFBQUks
ZUFDQUosRUFBQUksaUJBRUssaUJBQUFKLEdBQUFYLGNBQ0xXLEVBQUFYLGFBQUEsR0FFQWxOLEtB
QUFtTixtQkFBQW5NLEVBQUF3RyxrQkFHQTBHLGdCQUFBLFdBQ0EsR0FBQUwsR0FBQTdOLEtBQUEw
TSxXQUNBbUIsS0FJQUEsRUFBQUssZ0JBQ0FMLEVBQUFLLGtCQUVLLGlCQUFBTCxHQUFBTSxlQU1M
TixFQUFBTSxjQUFBLEdBR0FuTyxLQUFBb04scUJBQUFwTSxFQUFBd0csa0JBUUE0RyxRQUFBLFdB
Q0FwTyxLQUFBcU8sYUFBQXJOLEVBQUF3RyxpQkFRQTZHLGFBQUFyTixFQUFBdUcsaUJBS0FtRSxX
QUFBLFdBQ0EsR0FBQW1CLEdBQUE3TSxLQUFBOE0sWUFBQUQsU0FDQSxRQUFBRSxLQUFBRixHQUlB
N00sS0FBQStNLEdBQUEsSUFHQSxRQUFBMU4sR0FBQSxFQUFtQkEsRUFBQWdPLEVBQUEvTCxPQUF1
Q2pDLElBQzFEVyxLQUFBcU4sRUFBQWhPLElBQUEsUUFVQWtOLEVBQUFNLFVBQUFVLEVBK0JBaEIs
RUFBQStCLGFBQUEsU0FBQUMsRUFBQTFCLEdBQ0EsR0FBQTJCLEdBQUF4TyxLQUVBeU8sRUFBQSxZ
QUNBQSxHQUFBbFAsVUFBQWlQLEVBQUFqUCxTQUNBLElBQUFBLEdBQUEsR0FBQWtQLEVBRUE1RCxH
QUFBdEwsRUFBQWdQLEVBQUFoUCxXQUNBZ1AsRUFBQWhQLFlBQ0FnUCxFQUFBaFAsVUFBQXVOLFlB
QUF5QixFQUVBQSxFQUFBMUIsVUFBQWhDLEtBQThCMkQsRUFBQTNCLGFBQzlCMEIsRUFBQUQsYUFB
QUUsRUFBQUYsYUFFQXhELEVBQUFpQixhQUFBd0MsRUFBQXpELEVBQUE0RCxxQkFHQTVELEVBQUFp
QixhQUFBUSxFQUFBekIsRUFBQTRELG9CQUVBNVAsRUFBQUQsUUFBQTBOLEdYbzdCTSxTQUFTek4s
RUFBUUQsR1kvb0N2QixZQVFBLElBQUE4UCxJQUtBQyxRQUFBLEtBR0E5UCxHQUFBRCxRQUFBOFAs
R1pncUNNLFNBQVM3UCxFQUFRRCxFQUFTSCxHYTNyQ2hDLFlBRUFJLEdBQUFELFFBQUFILEVBQUEs
TWJrc0NDLElBQUssR0FFQSxTQUFTSSxFQUFRRCxFQUFTSCxHYzVyQ2hDLFlBd0JBLFNBQUFtUSxH
QUFBQyxHQUNBLEdBQUFDLEVBQUEsQ0FHQSxHQUFBdEwsR0FBQXFMLEVBQUFyTCxLQUNBb0IsRUFB
QWlLLEVBQUFqSyxRQUNBLElBQUFBLEVBQUF2RCxPQUNBLE9BQUFqQyxHQUFBLEVBQW1CQSxFQUFB
d0YsRUFBQXZELE9BQXFCakMsSUFDeEMyUCxFQUFBdkwsRUFBQW9CLEVBQUF4RixHQUFBLFVBRUcs
T0FBQXlQLEVBQUFHLEtBQ0hDLEVBQUF6TCxFQUFBcUwsRUFBQUcsTUFDRyxNQUFBSCxFQUFBSyxN
QUNIQyxFQUFBM0wsRUFBQXFMLEVBQUFLLE9Bb0JBLFFBQUFFLEdBQUFDLEVBQUFDLEdBQ0FELEVB
QUE1SixXQUFBOEosYUFBQUQsRUFBQTlMLEtBQUE2TCxHQUNBVCxFQUFBVSxHQUdBLFFBQUFFLEdB
QUFDLEVBQUFDLEdBQ0FaLEVBQ0FXLEVBQUE3SyxTQUFBWSxLQUFBa0ssR0FFQUQsRUFBQWpNLEtB
QUFtTSxZQUFBRCxFQUFBbE0sTUFJQSxRQUFBb00sR0FBQWYsRUFBQUcsR0FDQUYsRUFDQUQsRUFB
QUcsT0FFQUMsRUFBQUosRUFBQXJMLEtBQUF3TCxHQUlBLFFBQUFhLEdBQUFoQixFQUFBSyxHQUNB
SixFQUNBRCxFQUFBSyxPQUVBQyxFQUFBTixFQUFBckwsS0FBQTBMLEdBSUEsUUFBQTlJLEtBQ0Es
TUFBQXJHLE1BQUF5RCxLQUFBc00sU0FHQSxRQUFBQyxHQUFBdk0sR0FDQSxPQUNBQSxPQUNBb0Is
WUFDQW9LLEtBQUEsS0FDQUUsS0FBQSxLQUNBOUksWUE5RkEsR0FBQTRKLEdBQUF2UixFQUFBLElB
Q0F3USxFQUFBeFEsRUFBQSxJQUVBd1IsRUFBQXhSLEVBQUEsSUFDQTBRLEVBQUExUSxFQUFBLElB
RUF5UixFQUFBLEVBQ0FDLEVBQUEsR0FhQXJCLEVBQUEsbUJBQUF0SSxXQUFBLGdCQUFBQSxVQUFB
NEosY0FBQSxtQkFBQUMsWUFBQSxnQkFBQUEsV0FBQUMsV0FBQSxhQUFBQyxLQUFBRixVQUFBQyxX
QW1CQXZCLEVBQUFrQixFQUFBLFNBQUF4SyxFQUFBb0osRUFBQTJCLEdBT0EzQixFQUFBckwsS0FB
QUUsV0FBQXlNLEdBQUF0QixFQUFBckwsS0FBQUUsV0FBQXdNLEdBQUEsV0FBQXJCLEVBQUFyTCxL
QUFBc00sU0FBQVcsZ0JBQUEsTUFBQTVCLEVBQUFyTCxLQUFBa04sY0FBQTdCLEVBQUFyTCxLQUFB
a04sZUFBQVYsRUFBQWhCLE9BQ0FKLEVBQUFDLEdBQ0FwSixFQUFBa0wsYUFBQTlCLEVBQUFyTCxL
QUFBZ04sS0FFQS9LLEVBQUFrTCxhQUFBOUIsRUFBQXJMLEtBQUFnTixHQUNBNUIsRUFBQUMsS0Er
Q0FrQixHQUFBaEIsbUJBQ0FnQixFQUFBWCx1QkFDQVcsRUFBQVAsYUFDQU8sRUFBQUgsWUFDQUcs
RUFBQUYsWUFFQWhSLEVBQUFELFFBQUFtUixHZDRzQ00sU0FBU2xSLEVBQVFELEVBQVNILEdldHpD
aEMsWUFNQSxTQUFBbVMsR0FBQUMsRUFBQUMsR0FDQSxPQUFBRCxFQUFBQyxPQUxBLEdBQUF6TCxH
QUFBNUcsRUFBQSxHQVFBc1MsR0FOQXRTLEVBQUEsSUFXQXVTLGtCQUFBLEVBQ0FDLGtCQUFBLEVB
Q0FDLGtCQUFBLEVBQ0FDLDJCQUFBLEdBQ0FDLDZCQUFBLEdBOEJBQyx3QkFBQSxTQUFBQyxHQUNB
LEdBQUFDLEdBQUFSLEVBQ0FTLEVBQUFGLEVBQUFFLGVBQ0FDLEVBQUFILEVBQUFHLDJCQUNBQyxF
QUFBSixFQUFBSSxzQkFDQUMsRUFBQUwsRUFBQUsscUJBQ0FDLEVBQUFOLEVBQUFNLHNCQUVBTixH
QUFBTyxtQkFDQTlMLEVBQUErTCw0QkFBQXRNLEtBQUE4TCxFQUFBTyxrQkFHQSxRQUFBL0UsS0FB
QTBFLEdBQUEsQ0FDQXpMLEVBQUFnTSxXQUFBeFMsZUFBQXVOLEdBQUF6SCxFQUFBLEtBQUF5SCxH
QUFBLE1BRUEsSUFBQWtGLEdBQUFsRixFQUFBMkQsY0FDQXdCLEVBQUFULEVBQUExRSxHQUVBb0Ys
R0FDQUMsY0FBQUgsRUFDQUksbUJBQUEsS0FDQUMsYUFBQXZGLEVBQ0F3RixlQUFBLEtBRUFDLGdC
QUFBM0IsRUFBQXFCLEVBQUFWLEVBQUFQLG1CQUNBd0IsZ0JBQUE1QixFQUFBcUIsRUFBQVYsRUFB
QU4sbUJBQ0F3QixnQkFBQTdCLEVBQUFxQixFQUFBVixFQUFBTCxtQkFDQXdCLHdCQUFBOUIsRUFB
QXFCLEVBQUFWLEVBQUFKLDRCQUNBd0IsMEJBQUEvQixFQUFBcUIsRUFBQVYsRUFBQUgsOEJBUUEs
SUFOQWMsRUFBQU0sZ0JBQUFOLEVBQUFPLGdCQUFBUCxFQUFBUywyQkFBQSxTQUFBdE4sRUFBQSxL
QUFBeUgsR0FNQTRFLEVBQUFuUyxlQUFBdU4sR0FBQSxDQUNBLEdBQUFxRixHQUFBVCxFQUFBNUUs
RUFDQW9GLEdBQUFDLGdCQU1BVixFQUFBbFMsZUFBQXVOLEtBQ0FvRixFQUFBRSxtQkFBQVgsRUFB
QTNFLElBR0E2RSxFQUFBcFMsZUFBQXVOLEtBQ0FvRixFQUFBRyxhQUFBVixFQUFBN0UsSUFHQThF
LEVBQUFyUyxlQUFBdU4sS0FDQW9GLEVBQUFJLGVBQUFWLEVBQUE5RSxJQUdBL0csRUFBQWdNLFdB
QUFqRixHQUFBb0YsTUFNQVUsRUFBQSxnTEFnQkE3TSxHQUNBRSxrQkFBQSxlQUNBNE0sb0JBQUEs
aUJBRUFELDRCQUNBRSxvQkFBQUYsRUFBQSwrQ0E4QkFiLGNBV0FnQix3QkFBNkYsS0FLN0ZqQiwr
QkFNQUQsa0JBQUEsU0FBQU0sR0FDQSxPQUFBL1MsR0FBQSxFQUFtQkEsRUFBQTJHLEVBQUErTCw0
QkFBQXpRLE9BQW9EakMsSUFBQSxDQUN2RSxHQUFBNFQsR0FBQWpOLEVBQUErTCw0QkFBQTFTLEVB
Q0EsSUFBQTRULEVBQUFiLEdBQ0EsU0FHQSxVQUdBOUYsVUFBQTBFLEVBR0FsUyxHQUFBRCxRQUFB
bUgsR2ZzMENNLFNBQVNsSCxFQUFRRCxFQUFTSCxHZ0IzZ0RoQyxZQVdBLFNBQUF3VSxLQUNBQyxF
QUFBRCxXQUFBbFQsVUFBQTBKLGlCQVZBLEdBQUF5SixHQUFBelUsRUFBQSxLQWFBc0wsR0FaQXRM
LEVBQUEsR0FFQUEsRUFBQSxJQXNCQTBVLGVBQUEsU0FBQUMsRUFBQXRLLEVBQUF1SyxFQUFBQyxF
QUFBN0ksRUFBQThJLEdBT0EsR0FBQUMsR0FBQUosRUFBQUQsZUFBQXJLLEVBQUF1SyxFQUFBQyxF
QUFBN0ksRUFBQThJLEVBU0EsT0FSQUgsR0FBQTNKLGlCQUFBLE1BQUEySixFQUFBM0osZ0JBQUFn
SyxLQUNBM0ssRUFBQTRLLHFCQUFBdkosUUFBQThJLEVBQUFHLEdBT0FJLEdBT0FHLFlBQUEsU0FB
QVAsR0FDQSxNQUFBQSxHQUFBTyxlQVNBQyxpQkFBQSxTQUFBUixFQUFBUyxHQU1BWCxFQUFBWSxX
QUFBVixJQUFBM0osaUJBQ0EySixFQUFBUSxpQkFBQUMsSUFpQkFFLGlCQUFBLFNBQUFYLEVBQUFZ
LEVBQUFsTCxFQUFBMkIsR0FDQSxHQUFBd0osR0FBQWIsRUFBQTNKLGVBRUEsSUFBQXVLLElBQUFD
LEdBQUF4SixJQUFBMkksRUFBQWMsU0FBQSxDQW9CQSxHQUFBQyxHQUFBakIsRUFBQWtCLGlCQUFB
SCxFQUFBRCxFQUVBRyxJQUNBakIsRUFBQVksV0FBQVYsRUFBQWEsR0FHQWIsRUFBQVcsaUJBQUFD
LEVBQUFsTCxFQUFBMkIsR0FFQTBKLEdBQUFmLEVBQUEzSixpQkFBQSxNQUFBMkosRUFBQTNKLGdC
QUFBZ0ssS0FDQTNLLEVBQUE0SyxxQkFBQXZKLFFBQUE4SSxFQUFBRyxLQWlCQXBKLHlCQUFBLFNB
QUFvSixFQUFBdEssRUFBQUksR0FDQWtLLEVBQUE3SSxxQkFBQXJCLEdBV0FrSyxFQUFBcEoseUJB
QUFsQixLQVNBakssR0FBQUQsUUFBQW1MLEdoQjJoRE0sU0FBU2xMLEVBQVFELEVBQVNILEdpQnJy
RGhDLFlBRUEsSUFBQW1NLEdBQUFuTSxFQUFBLEdBRUE0VixFQUFBNVYsRUFBQSxJQUNBNlYsRUFB
QTdWLEVBQUEsS0FDQThWLEVBQUE5VixFQUFBLEtBQ0ErVixFQUFBL1YsRUFBQSxJQUNBZ1csRUFB
QWhXLEVBQUEsS0FDQWlXLEVBQUFqVyxFQUFBLEtBRUFrVyxFQUFBbFcsRUFBQSxLQUNBbVcsRUFB
QW5XLEVBQUEsS0FFQWdJLEVBQUErTixFQUFBL04sY0FDQW9PLEVBQUFMLEVBQUFLLGNBQ0FDLEVB
QUFOLEVBQUFNLGFBWUFDLEVBQUFuSyxFQUNBb0ssRUFBQSxTQUFBQyxHQUNBLE1BQUFBLElBbUJB
QyxHQUdBQyxVQUNBL1MsSUFBQWtTLEVBQUFsUyxJQUNBSyxRQUFBNlIsRUFBQTdSLFFBQ0EyUyxN
QUFBZCxFQUFBYyxNQUNBQyxRQUFBZixFQUFBZSxRQUNBQyxLQUFBVixHQUdBVyxVQUFBbEIsRUFB
QWtCLFVBQ0FDLGNBQUFuQixFQUFBbUIsY0FFQS9PLGdCQUNBcU8sZUFDQVcsZUFBQWpCLEVBQUFp
QixlQUlBQyxVQUFBakIsRUFDQWtCLFlBQUFoQixFQUNBRSxnQkFDQUcsY0FJQVksSUFBQXJCLEVB
RUFzQixRQUFBbkIsRUFHQUssV0F1Q0FsVyxHQUFBRCxRQUFBc1csR2pCcXNETSxTQUFTclcsRUFB
UUQsRUFBU0gsR2tCN3pEaEMsWUFxQkEsU0FBQXFYLEdBQUFDLEdBU0EsTUFBQXRWLFVBQUFzVixF
QUFBdEMsSUFHQSxRQUFBdUMsR0FBQUQsR0FTQSxNQUFBdFYsVUFBQXNWLEVBQUF6UyxJQXhDQSxH
QUFBc0gsR0FBQW5NLEVBQUEsR0FFQWlRLEVBQUFqUSxFQUFBLElBSUFjLEdBRkFkLEVBQUEsR0FD
QUEsRUFBQSxJQUNBWSxPQUFBQyxVQUFBQyxnQkFFQTBXLEVBQUF4WCxFQUFBLElBRUF5WCxHQUNB
NVMsS0FBQSxFQUNBbVEsS0FBQSxFQUNBMEMsUUFBQSxFQUNBQyxVQUFBLEdBNkVBNUIsRUFBQSxT
QUFBOUssRUFBQXBHLEVBQUFtUSxFQUFBNEMsRUFBQXBULEVBQUFxVCxFQUFBQyxHQUNBLEdBQUFD
LElBRUFDLFNBQUFSLEVBR0F2TSxPQUNBcEcsTUFDQW1RLE1BQ0E4QyxRQUdBRyxPQUFBSixFQStD
QSxPQUFBRSxHQU9BaEMsR0FBQS9OLGNBQUEsU0FBQWlELEVBQUFxTSxFQUFBblIsR0FDQSxHQUFB
a0ksR0FHQXlKLEtBRUFqVCxFQUFBLEtBQ0FtUSxFQUFBLEtBQ0E0QyxFQUFBLEtBQ0FwVCxFQUFB
LElBRUEsVUFBQThTLEVBQUEsQ0FDQUQsRUFBQUMsS0FDQXRDLEVBQUFzQyxFQUFBdEMsS0FFQXVD
LEVBQUFELEtBQ0F6UyxFQUFBLEdBQUF5UyxFQUFBelMsS0FHQStTLEVBQUE1VixTQUFBc1YsRUFB
QUksT0FBQSxLQUFBSixFQUFBSSxPQUNBbFQsRUFBQXhDLFNBQUFzVixFQUFBSyxTQUFBLEtBQUFM
LEVBQUFLLFFBRUEsS0FBQXRKLElBQUFpSixHQUNBeFcsRUFBQVAsS0FBQStXLEVBQUFqSixLQUFB
b0osRUFBQTNXLGVBQUF1TixLQUNBeUosRUFBQXpKLEdBQUFpSixFQUFBakosSUFPQSxHQUFBNkos
R0FBQXZWLFVBQUFDLE9BQUEsQ0FDQSxRQUFBc1YsRUFDQUosRUFBQTNSLGVBQ0csSUFBQStSLEVB
QUEsR0FFSCxPQURBQyxHQUFBQyxNQUFBRixHQUNBdlgsRUFBQSxFQUFtQkEsRUFBQXVYLEVBQW9C
dlgsSUFDdkN3WCxFQUFBeFgsR0FBQWdDLFVBQUFoQyxFQUFBLEVBT0FtWCxHQUFBM1IsU0FBQWdT
LEVBSUEsR0FBQWxOLEtBQUFvTixhQUFBLENBQ0EsR0FBQUEsR0FBQXBOLEVBQUFvTixZQUNBLEtB
QUFoSyxJQUFBZ0ssR0FDQXJXLFNBQUE4VixFQUFBekosS0FDQXlKLEVBQUF6SixHQUFBZ0ssRUFB
QWhLLElBaUJBLE1BQUEwSCxHQUFBOUssRUFBQXBHLEVBQUFtUSxFQUFBNEMsRUFBQXBULEVBQUF5
TCxFQUFBQyxRQUFBNEgsSUFPQS9CLEVBQUFLLGNBQUEsU0FBQW5MLEdBQ0EsR0FBQXFOLEdBQUF2
QyxFQUFBL04sY0FBQXVRLEtBQUEsS0FBQXROLEVBT0EsT0FEQXFOLEdBQUFyTixPQUNBcU4sR0FH
QXZDLEVBQUF5QyxtQkFBQSxTQUFBQyxFQUFBQyxHQUNBLEdBQUFDLEdBQUE1QyxFQUFBMEMsRUFB
QXhOLEtBQUF5TixFQUFBRCxFQUFBekQsSUFBQXlELEVBQUFHLE1BQUFILEVBQUFJLFFBQUFKLEVB
QUFSLE9BQUFRLEVBQUFYLE1BRUEsT0FBQWEsSUFPQTVDLEVBQUFNLGFBQUEsU0FBQTBCLEVBQUFU
LEVBQUFuUixHQUNBLEdBQUFrSSxHQUdBeUosRUFBQTNMLEtBQXdCNEwsRUFBQUQsT0FHeEJqVCxF
QUFBa1QsRUFBQWxULElBQ0FtUSxFQUFBK0MsRUFBQS9DLElBRUE0QyxFQUFBRyxFQUFBYSxNQUlB
cFUsRUFBQXVULEVBQUFjLFFBR0FoQixFQUFBRSxFQUFBRSxNQUVBLFVBQUFYLEVBQUEsQ0FDQUQs
RUFBQUMsS0FFQXRDLEVBQUFzQyxFQUFBdEMsSUFDQTZDLEVBQUE1SCxFQUFBQyxTQUVBcUgsRUFB
QUQsS0FDQXpTLEVBQUEsR0FBQXlTLEVBQUF6UyxJQUlBLElBQUF3VCxFQUNBTixHQUFBOU0sTUFB
QThNLEVBQUE5TSxLQUFBb04sZUFDQUEsRUFBQU4sRUFBQTlNLEtBQUFvTixhQUVBLEtBQUFoSyxJ
QUFBaUosR0FDQXhXLEVBQUFQLEtBQUErVyxFQUFBakosS0FBQW9KLEVBQUEzVyxlQUFBdU4sS0FD
QXJNLFNBQUFzVixFQUFBakosSUFBQXJNLFNBQUFxVyxFQUVBUCxFQUFBekosR0FBQWdLLEVBQUFo
SyxHQUVBeUosRUFBQXpKLEdBQUFpSixFQUFBakosSUFRQSxHQUFBNkosR0FBQXZWLFVBQUFDLE9B
QUEsQ0FDQSxRQUFBc1YsRUFDQUosRUFBQTNSLGVBQ0csSUFBQStSLEVBQUEsR0FFSCxPQURBQyxH
QUFBQyxNQUFBRixHQUNBdlgsRUFBQSxFQUFtQkEsRUFBQXVYLEVBQW9CdlgsSUFDdkN3WCxFQUFB
eFgsR0FBQWdDLFVBQUFoQyxFQUFBLEVBRUFtWCxHQUFBM1IsU0FBQWdTLEVBR0EsTUFBQXBDLEdB
QUFnQyxFQUFBOU0sS0FBQXBHLEVBQUFtUSxFQUFBNEMsRUFBQXBULEVBQUFxVCxFQUFBQyxJQVVB
L0IsRUFBQWlCLGVBQUEsU0FBQThCLEdBQ0Esc0JBQUFBLElBQUEsT0FBQUEsS0FBQWQsV0FBQVIs
R0FHQXBYLEVBQUFELFFBQUE0VixHbEI2MERNLFNBQVMzVixFQUFRRCxFQUFTSCxHbUJ0cEVoQyxZ
QW9EQSxTQUFBK1ksR0FBQUMsR0FDQSxpQkFBQUEsR0FBQSxVQUFBQSxHQUFBLFdBQUFBLEdBQUEs
YUFBQUEsRUFHQSxRQUFBQyxHQUFBN1csRUFBQTZJLEVBQUE2TSxHQUNBLE9BQUExVixHQUNBLGNB
Q0EscUJBQ0Esb0JBQ0EsMkJBQ0Esa0JBQ0EseUJBQ0Esa0JBQ0EseUJBQ0EsZ0JBQ0EsdUJBQ0Es
U0FBQTBWLEVBQUFvQixXQUFBSCxFQUFBOU4sR0FDQSxTQUNBLFVBcEVBLEdBQUFyRSxHQUFBNUcs
RUFBQSxHQUVBbVosRUFBQW5aLEVBQUEsSUFDQW9aLEVBQUFwWixFQUFBLElBQ0FxWixFQUFBclos
RUFBQSxJQUVBc1osRUFBQXRaLEVBQUEsSUFDQXVaLEVBQUF2WixFQUFBLElBTUF3WixHQUxBeFos
RUFBQSxPQVdBeVosRUFBQSxLQVNBQyxFQUFBLFNBQUF2SyxFQUFBd0ssR0FDQXhLLElBQ0FpSyxF
QUFBUSx5QkFBQXpLLEVBQUF3SyxHQUVBeEssRUFBQVEsZ0JBQ0FSLEVBQUFmLFlBQUFuQixRQUFB
a0MsS0FJQTBLLEVBQUEsU0FBQWpZLEdBQ0EsTUFBQThYLEdBQUE5WCxHQUFBLElBRUFrWSxFQUFB
LFNBQUFsWSxHQUNBLE1BQUE4WCxHQUFBOVgsR0FBQSxJQUdBbVksRUFBQSxTQUFBclUsR0FHQSxV
QUFBQSxFQUFBc1UsYUErQ0FDLEdBSUFyTSxXQUtBc00sdUJBQUFmLEVBQUFlLHVCQUtBQyx5QkFB
QWhCLEVBQUFnQiwwQkFVQUMsWUFBQSxTQUFBMVUsRUFBQTJVLEVBQUFDLEdBQ0Esa0JBQUFBLEdB
QUExVCxFQUFBLEtBQUF5VCxRQUFBQyxJQUFBLE1BRUEsSUFBQXpWLEdBQUFrVixFQUFBclUsR0FD
QTZVLEVBQUFmLEVBQUFhLEtBQUFiLEVBQUFhLE1BQ0FFLEdBQUExVixHQUFBeVYsQ0FFQSxJQUFB
RSxHQUFBckIsRUFBQXNCLHdCQUFBSixFQUNBRyxNQUFBRSxnQkFDQUYsRUFBQUUsZUFBQWhWLEVB
QUEyVSxFQUFBQyxJQVNBSyxZQUFBLFNBQUFqVixFQUFBMlUsR0FHQSxHQUFBRSxHQUFBZixFQUFB
YSxFQUNBLElBQUFwQixFQUFBb0IsRUFBQTNVLEVBQUFzRixnQkFBQUMsS0FBQXZGLEVBQUFzRixn
QkFBQThNLE9BQ0EsV0FFQSxJQUFBalQsR0FBQWtWLEVBQUFyVSxFQUNBLE9BQUE2VSxNQUFBMVYs
SUFTQStWLGVBQUEsU0FBQWxWLEVBQUEyVSxHQUNBLEdBQUFHLEdBQUFyQixFQUFBc0Isd0JBQUFK
LEVBQ0FHLE1BQUFLLG9CQUNBTCxFQUFBSyxtQkFBQW5WLEVBQUEyVSxFQUdBLElBQUFFLEdBQUFm
LEVBQUFhLEVBRUEsSUFBQUUsRUFBQSxDQUNBLEdBQUExVixHQUFBa1YsRUFBQXJVLFNBQ0E2VSxH
QUFBMVYsS0FTQWlXLG1CQUFBLFNBQUFwVixHQUNBLEdBQUFiLEdBQUFrVixFQUFBclUsRUFDQSxR
QUFBMlUsS0FBQWIsR0FDQSxHQUFBQSxFQUFBMVksZUFBQXVaLElBSUFiLEVBQUFhLEdBQUF4VixH
QUFBLENBSUEsR0FBQTJWLEdBQUFyQixFQUFBc0Isd0JBQUFKLEVBQ0FHLE1BQUFLLG9CQUNBTCxF
QUFBSyxtQkFBQW5WLEVBQUEyVSxTQUdBYixHQUFBYSxHQUFBeFYsS0FXQWtXLGNBQUEsU0FBQUMs
RUFBQWpOLEVBQUFDLEVBQUFDLEdBR0EsT0FGQWdOLEdBQ0FDLEVBQUEvQixFQUFBK0IsUUFDQXZh
LEVBQUEsRUFBbUJBLEVBQUF1YSxFQUFBdFksT0FBb0JqQyxJQUFBLENBRXZDLEdBQUF3YSxHQUFB
RCxFQUFBdmEsRUFDQSxJQUFBd2EsRUFBQSxDQUNBLEdBQUFDLEdBQUFELEVBQUFKLGNBQUFDLEVB
QUFqTixFQUFBQyxFQUFBQyxFQUNBbU4sS0FDQUgsRUFBQTNCLEVBQUEyQixFQUFBRyxLQUlBLE1B
QUFILElBVUFJLGNBQUEsU0FBQUosR0FDQUEsSUFDQXhCLEVBQUFILEVBQUFHLEVBQUF3QixLQVNB
SyxrQkFBQSxTQUFBM0IsR0FHQSxHQUFBNEIsR0FBQTlCLENBQ0FBLEdBQUEsS0FDQUUsRUFDQUos
RUFBQWdDLEVBQUExQixHQUVBTixFQUFBZ0MsRUFBQXpCLEdBRUFMLEVBQUE3UyxFQUFBLGFBRUF5
UyxFQUFBbUMsc0JBTUFDLFFBQUEsV0FDQWpDLE1BR0FrQyxrQkFBQSxXQUNBLE1BQUFsQyxJQUlB
cFosR0FBQUQsUUFBQThaLEduQnNxRU0sU0FBUzdaLEVBQVFELEVBQVNILEdvQjU2RWhDLFlBZUEs
U0FBQTJiLEdBQUFqVyxFQUFBeUosRUFBQXlNLEdBQ0EsR0FBQXZCLEdBQUFsTCxFQUFBckIsZUFB
QStOLHdCQUFBRCxFQUNBLE9BQUFqQixHQUFBalYsRUFBQTJVLEdBU0EsUUFBQXlCLEdBQUFwVyxF
QUFBcVcsRUFBQTVNLEdBSUEsR0FBQW1MLEdBQUFxQixFQUFBalcsRUFBQXlKLEVBQUE0TSxFQUNB
ekIsS0FDQW5MLEVBQUE2TSxtQkFBQTFDLEVBQUFuSyxFQUFBNk0sbUJBQUExQixHQUNBbkwsRUFB
QThNLG1CQUFBM0MsRUFBQW5LLEVBQUE4TSxtQkFBQXZXLElBV0EsUUFBQXdXLEdBQUEvTSxHQUNB
QSxLQUFBckIsZUFBQStOLHlCQUNBekMsRUFBQStDLGlCQUFBaE4sRUFBQWpCLFlBQUE0TixFQUFB
M00sR0FPQSxRQUFBaU4sR0FBQWpOLEdBQ0EsR0FBQUEsS0FBQXJCLGVBQUErTix3QkFBQSxDQUNB
LEdBQUE5TixHQUFBb0IsRUFBQWpCLFlBQ0FtTyxFQUFBdE8sRUFBQXFMLEVBQUFrRCxrQkFBQXZP
LEdBQUEsSUFDQXFMLEdBQUErQyxpQkFBQUUsRUFBQVAsRUFBQTNNLElBU0EsUUFBQW9OLEdBQUE3
VyxFQUFBOFcsRUFBQXJOLEdBQ0EsR0FBQUEsS0FBQXJCLGVBQUF1TSxpQkFBQSxDQUNBLEdBQUFB
LEdBQUFsTCxFQUFBckIsZUFBQXVNLGlCQUNBQyxFQUFBSyxFQUFBalYsRUFBQTJVLEVBQ0FDLEtB
Q0FuTCxFQUFBNk0sbUJBQUExQyxFQUFBbkssRUFBQTZNLG1CQUFBMUIsR0FDQW5MLEVBQUE4TSxt
QkFBQTNDLEVBQUFuSyxFQUFBOE0sbUJBQUF2VyxLQVVBLFFBQUErVyxHQUFBdE4sR0FDQUEsS0FB
QXJCLGVBQUF1TSxrQkFDQWtDLEVBQUFwTixFQUFBakIsWUFBQSxLQUFBaUIsR0FJQSxRQUFBdU4s
R0FBQXpCLEdBQ0ExQixFQUFBMEIsRUFBQWlCLEdBR0EsUUFBQVMsR0FBQTFCLEdBQ0ExQixFQUFB
MEIsRUFBQW1CLEdBR0EsUUFBQVEsR0FBQUMsRUFBQUMsRUFBQXJZLEVBQUFFLEdBQ0F5VSxFQUFB
MkQsbUJBQUF0WSxFQUFBRSxFQUFBNFgsRUFBQU0sRUFBQUMsR0FHQSxRQUFBRSxHQUFBL0IsR0FD
QTFCLEVBQUEwQixFQUFBd0IsR0FuR0EsR0FBQXhDLEdBQUFqYSxFQUFBLElBQ0FvWixFQUFBcFos
RUFBQSxJQUVBc1osRUFBQXRaLEVBQUEsSUFDQXVaLEVBQUF2WixFQUFBLElBR0EyYSxHQUZBM2Es
RUFBQSxHQUVBaWEsRUFBQVUsYUEwR0FzQyxHQUNBUCwrQkFDQUMseUNBQ0FLLDZCQUNBSixpQ0FH
QXhjLEdBQUFELFFBQUE4YyxHcEI0N0VNLFNBQVM3YyxFQUFRRCxHcUJ0akZ2QixZQVdBLElBQUEr
YyxJQU1BQyxPQUFBLFNBQUF0WSxHQUNBQSxFQUFBdVksdUJBQUFwYixRQUdBcWIsSUFBQSxTQUFB
eFksR0FDQSxNQUFBQSxHQUFBdVksd0JBR0FFLElBQUEsU0FBQXpZLEdBQ0EsTUFBQTdDLFVBQUE2
QyxFQUFBdVksd0JBR0FHLElBQUEsU0FBQTFZLEVBQUF1TixHQUNBdk4sRUFBQXVZLHVCQUFBaEws
R0FJQWhTLEdBQUFELFFBQUErYyxHckJza0ZNLFNBQVM5YyxFQUFRRCxFQUFTSCxHc0J4bUZoQyxZ
QXlDQSxTQUFBd2QsR0FBQTFQLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBSixHQUFBdE4s
S0FBQWUsS0FBQXdNLEVBQUEyUCxFQUFBelAsRUFBQUMsR0F4Q0EsR0FBQUosR0FBQTdOLEVBQUEs
SUFFQTBkLEVBQUExZCxFQUFBLElBTUEyZCxHQUNBQyxLQUFBLFNBQUF6TyxHQUNBLEdBQUFBLEVB
QUF5TyxLQUNBLE1BQUF6TyxHQUFBeU8sSUFHQSxJQUFBclosR0FBQW1aLEVBQUF2TyxFQUNBLElB
QUE1SyxFQUFBdUQsU0FBQXZELEVBRUEsTUFBQUEsRUFHQSxJQUFBc1osR0FBQXRaLEVBQUF1Wixh
QUVBLE9BQUFELEdBQ0FBLEVBQUFFLGFBQUFGLEVBQUFHLGFBRUFsVyxRQUdBbVcsT0FBQSxTQUFB
OU8sR0FDQSxNQUFBQSxHQUFBOE8sUUFBQSxHQWNBcFEsR0FBQStCLGFBQUE0TixFQUFBRyxHQUVB
dmQsRUFBQUQsUUFBQXFkLEd0QnduRkEsRUFFTSxTQUFTcGQsRUFBUUQsRUFBU0gsR3VCenFGaEMs
WUFFQSxJQUFBa2UsS0FNQTlkLEdBQUFELFFBQUErZCxHdkJ5ckZNLFNBQVM5ZCxFQUFRRCxFQUFT
SCxHd0Jqc0ZoQyxZQWtKQSxTQUFBbWUsR0FBQUMsR0FPQSxNQUpBeGQsUUFBQUMsVUFBQUMsZUFB
QVAsS0FBQTZkLEVBQUFDLEtBQ0FELEVBQUFDLEdBQUFDLElBQ0FDLEVBQUFILEVBQUFDLFFBRUFF
LEVBQUFILEVBQUFDLElBdkpBLEdBZ0VBRyxHQWhFQXJTLEVBQUFuTSxFQUFBLEdBRUFtWixFQUFB
blosRUFBQSxJQUNBeWUsRUFBQXplLEVBQUEsS0FDQTBlLEVBQUExZSxFQUFBLElBRUEyZSxFQUFB
M2UsRUFBQSxLQUNBNGUsRUFBQTVlLEVBQUEsSUEwREF1ZSxLQUNBTSxHQUFBLEVBQ0FQLEVBQUEs
RUFLQVEsR0FDQUMsU0FBQSxRQUNBQyxnQkFBQUwsRUFBQSxnQ0FDQU0sc0JBQUFOLEVBQUEsNENB
Q0FPLGtCQUFBUCxFQUFBLG9DQUNBUSxRQUFBLE9BQ0FDLFdBQUEsVUFDQUMsa0JBQUEsaUJBQ0FD
LFVBQUEsU0FDQUMsU0FBQSxRQUNBQyxrQkFBQSxpQkFDQUMsb0JBQUEsbUJBQ0FDLHFCQUFBLG9C
QUNBQyxlQUFBLGNBQ0FDLFFBQUEsT0FDQUMsT0FBQSxNQUNBQyxlQUFBLFdBQ0FDLFFBQUEsT0FD
QUMsV0FBQSxVQUNBQyxhQUFBLFlBQ0FDLFlBQUEsV0FDQUMsYUFBQSxZQUNBQyxZQUFBLFdBQ0FD
LGFBQUEsWUFDQUMsUUFBQSxPQUNBQyxrQkFBQSxpQkFDQUMsV0FBQSxVQUNBQyxhQUFBLFlBQ0FD
LFNBQUEsUUFDQUMsU0FBQSxRQUNBQyxTQUFBLFFBQ0FDLFNBQUEsUUFDQUMsV0FBQSxVQUNBQyxZ
QUFBLFdBQ0FDLFNBQUEsUUFDQUMsY0FBQSxhQUNBQyxrQkFBQSxpQkFDQUMsYUFBQSxZQUNBQyxh
QUFBLFlBQ0FDLGFBQUEsWUFDQUMsWUFBQSxXQUNBQyxhQUFBLFlBQ0FDLFdBQUEsVUFDQUMsU0FB
QSxRQUNBQyxTQUFBLFFBQ0FDLFFBQUEsT0FDQUMsV0FBQSxVQUNBQyxZQUFBLFdBQ0FDLGNBQUEs
YUFDQUMsVUFBQSxTQUNBQyxVQUFBLFNBQ0FDLFdBQUEsVUFDQUMsbUJBQUEsa0JBQ0FDLFdBQUEs
VUFDQUMsV0FBQSxVQUNBQyxhQUFBLFlBQ0FDLGNBQUEsYUFDQUMsZUFBQSxjQUNBQyxZQUFBLFdB
Q0FDLGFBQUEsWUFDQUMsY0FBQSxhQUNBQyxpQkFBQWhFLEVBQUEsa0NBQ0FpRSxnQkFBQSxlQUNB
QyxXQUFBLFVBQ0FDLFNBQUEsU0FNQXpFLEVBQUEsb0JBQUEvYSxPQUFBbUUsS0FBQUMsVUFBQXpH
LE1BQUEsR0FzQkE4aEIsRUFBQTVXLEtBQXlDc1MsR0FJekN1RSxtQkFBQSxLQUVBcFYsV0FJQXFW
LHlCQUFBLFNBQUFELEdBQ0FBLEVBQUFFLGtCQUFBSCxFQUFBSSxnQkFDQUosRUFBQUMsdUJBU0FJ
LFdBQUEsU0FBQUMsR0FDQU4sRUFBQUMsb0JBQ0FELEVBQUFDLG1CQUFBSSxXQUFBQyxJQU9BQyxV
QUFBLFdBQ0EsU0FBQVAsRUFBQUMscUJBQUFELEVBQUFDLG1CQUFBTSxjQXdCQUMsU0FBQSxTQUFB
bEosRUFBQW1KLEdBS0EsT0FKQXBGLEdBQUFvRixFQUNBQyxFQUFBdEYsRUFBQUMsR0FDQXNGLEVB
QUF2SyxFQUFBd0ssNkJBQUF0SixHQUVBMVosRUFBQSxFQUFtQkEsRUFBQStpQixFQUFBOWdCLE9B
QXlCakMsSUFBQSxDQUM1QyxHQUFBaWpCLEdBQUFGLEVBQUEvaUIsRUFDQThpQixHQUFBM2lCLGVB
QUE4aUIsSUFBQUgsRUFBQUcsS0FDQSxhQUFBQSxFQUNBaEYsRUFBQSxTQUNBbUUsRUFBQUMsbUJB
QUFhLGlCQUFBLG1CQUFBekYsR0FDV1EsRUFBQSxjQUNYbUUsRUFBQUMsbUJBQUFhLGlCQUFBLHdC
QUFBekYsR0FJQTJFLEVBQUFDLG1CQUFBYSxpQkFBQSw0QkFBQXpGLEdBRVMsY0FBQXdGLEVBQ1Ro
RixFQUFBLGFBQ0FtRSxFQUFBQyxtQkFBQWMsa0JBQUEscUJBQUExRixHQUVBMkUsRUFBQUMsbUJB
QUFhLGlCQUFBLHFCQUFBZCxFQUFBQyxtQkFBQWUsZUFFUyxhQUFBSCxHQUFBLFlBQUFBLEdBQ1Ro
RixFQUFBLGFBQ0FtRSxFQUFBQyxtQkFBQWMsa0JBQUEsbUJBQUExRixHQUNBMkUsRUFBQUMsbUJB
QUFjLGtCQUFBLGlCQUFBMUYsSUFDV1EsRUFBQSxhQUdYbUUsRUFBQUMsbUJBQUFhLGlCQUFBLHFC
QUFBekYsR0FDQTJFLEVBQUFDLG1CQUFBYSxpQkFBQSxxQkFBQXpGLElBSUFxRixFQUFBdEUsU0FB
QSxFQUNBc0UsRUFBQTdDLFVBQUEsR0FDUzlCLEVBQUFoZSxlQUFBOGlCLElBQ1RiLEVBQUFDLG1C
QUFBYSxpQkFBQUQsRUFBQTlFLEVBQUE4RSxHQUFBeEYsR0FHQXFGLEVBQUFHLElBQUEsS0FLQUMs
aUJBQUEsU0FBQTdJLEVBQUFnSixFQUFBQyxHQUNBLE1BQUFsQixHQUFBQyxtQkFBQWEsaUJBQUE3
SSxFQUFBZ0osRUFBQUMsSUFHQUgsa0JBQUEsU0FBQTlJLEVBQUFnSixFQUFBQyxHQUNBLE1BQUFs
QixHQUFBQyxtQkFBQWMsa0JBQUE5SSxFQUFBZ0osRUFBQUMsSUFRQUMsb0JBQUEsV0FDQSxJQUFB
bmMsU0FBQW9jLFlBQ0EsUUFFQSxJQUFBQyxHQUFBcmMsU0FBQW9jLFlBQUEsYUFDQSxjQUFBQyxH
QUFBLFNBQUFBLElBY0FDLDRCQUFBLFdBSUEsR0FIQXJpQixTQUFBd2MsSUFDQUEsRUFBQXVFLEVB
QUFtQix3QkFFQTFGLElBQUFLLEVBQUEsQ0FDQSxHQUFBeUYsR0FBQTVGLEVBQUE2RixtQkFDQXhC
LEdBQUFDLG1CQUFBd0IsbUJBQUFGLEdBQ0F6RixHQUFBLEtBS0F6ZSxHQUFBRCxRQUFBNGlCLEd4
Qml0Rk0sU0FBUzNpQixFQUFRRCxFQUFTSCxHeUJ6Z0doQyxZQXNEQSxTQUFBeWtCLEdBQUEzVyxF
QUFBMlAsRUFBQXpQLEVBQUFDLEdBQ0EsTUFBQXVQLEdBQUFqZCxLQUFBZSxLQUFBd00sRUFBQTJQ
LEVBQUF6UCxFQUFBQyxHQXJEQSxHQUFBdVAsR0FBQXhkLEVBQUEsSUFDQTBlLEVBQUExZSxFQUFB
LElBRUEwa0IsRUFBQTFrQixFQUFBLElBTUEya0IsR0FDQUMsUUFBQSxLQUNBQyxRQUFBLEtBQ0FD
LFFBQUEsS0FDQUMsUUFBQSxLQUNBQyxRQUFBLEtBQ0FDLFNBQUEsS0FDQUMsT0FBQSxLQUNBQyxR
QUFBLEtBQ0FDLGlCQUFBVixFQUNBVyxPQUFBLFNBQUFsVyxHQUlBLEdBQUFrVyxHQUFBbFcsRUFB
QWtXLE1BQ0EsZ0JBQUFsVyxHQUNBa1csRUFNQSxJQUFBQSxFQUFBLE1BQUFBLEVBQUEsS0FFQUMs
UUFBQSxLQUNBQyxjQUFBLFNBQUFwVyxHQUNBLE1BQUFBLEdBQUFvVyxnQkFBQXBXLEVBQUFxVyxj
QUFBclcsRUFBQXNXLFdBQUF0VyxFQUFBdVcsVUFBQXZXLEVBQUFxVyxjQUdBRyxNQUFBLFNBQUF4
VyxHQUNBLGVBQUFBLEtBQUF3VyxNQUFBeFcsRUFBQTJWLFFBQUFwRyxFQUFBa0gsbUJBRUFDLE1B
QUEsU0FBQTFXLEdBQ0EsZUFBQUEsS0FBQTBXLE1BQUExVyxFQUFBNFYsUUFBQXJHLEVBQUFvSCxr
QkFjQXRJLEdBQUE1TixhQUFBNlUsRUFBQUUsR0FFQXZrQixFQUFBRCxRQUFBc2tCLEd6QnloR00s
U0FBU3JrQixFQUFRRCxFQUFTSCxHMEJwbEdoQyxZQUVBLElBQUE0RyxHQUFBNUcsRUFBQSxHQUlB
K2xCLEdBRkEvbEIsRUFBQSxPQWlFQWdtQixHQVFBeGMsd0JBQUEsV0FDQWxJLEtBQUEya0Isb0JB
QUEza0IsS0FBQXlMLHlCQUNBekwsS0FBQTRrQixnQkFDQTVrQixLQUFBNGtCLGdCQUFBdGpCLE9B
QUEsRUFFQXRCLEtBQUE0a0IsbUJBRUE1a0IsS0FBQTZrQixrQkFBQSxHQUdBQSxrQkFBQSxFQU1B
cFosdUJBQUEsS0FFQXFaLGdCQUFBLFdBQ0EsUUFBQTlrQixLQUFBNmtCLGtCQXNCQWpaLFFBQUEs
U0FBQUMsRUFBQUMsRUFBQWpNLEVBQUFDLEVBQUFYLEVBQUFrQixFQUFBQyxFQUFBQyxHQUVBUCxL
QUFBOGtCLGtCQUFBeGYsRUFBQSxZQUNBLElBQUF5ZixHQUNBQyxDQUNBLEtBQ0FobEIsS0FBQTZr
QixrQkFBQSxFQUtBRSxHQUFBLEVBQ0Eva0IsS0FBQWlsQixjQUFBLEdBQ0FELEVBQUFuWixFQUFB
NU0sS0FBQTZNLEVBQUFqTSxFQUFBQyxFQUFBWCxFQUFBa0IsRUFBQUMsRUFBQUMsR0FDQXdrQixH
QUFBLEVBQ0ssUUFDTCxJQUNBLEdBQUFBLEVBR0EsSUFDQS9rQixLQUFBa2xCLFNBQUEsR0FDVyxN
QUFBcmlCLFFBSVg3QyxNQUFBa2xCLFNBQUEsR0FFTyxRQUNQbGxCLEtBQUE2a0Isa0JBQUEsR0FH
QSxNQUFBRyxJQUdBQyxjQUFBLFNBQUFFLEdBRUEsT0FEQVIsR0FBQTNrQixLQUFBMmtCLG9CQUNB
dGxCLEVBQUE4bEIsRUFBNEI5bEIsRUFBQXNsQixFQUFBcmpCLE9BQWdDakMsSUFBQSxDQUM1RCxH
QUFBK2xCLEdBQUFULEVBQUF0bEIsRUFDQSxLQUtBVyxLQUFBNGtCLGdCQUFBdmxCLEdBQUFvbEIs
RUFDQXprQixLQUFBNGtCLGdCQUFBdmxCLEdBQUErbEIsRUFBQW5hLFdBQUFtYSxFQUFBbmEsV0FB
QWhNLEtBQUFlLE1BQUEsS0FDTyxRQUNQLEdBQUFBLEtBQUE0a0IsZ0JBQUF2bEIsS0FBQW9sQixF
QUlBLElBQ0F6a0IsS0FBQWlsQixjQUFBNWxCLEVBQUEsR0FDVyxNQUFBd0QsUUFZWHFpQixTQUFB
LFNBQUFDLEdBQ0FubEIsS0FBQThrQixrQkFBQSxPQUFBeGYsRUFBQSxLQUVBLFFBREFxZixHQUFB
M2tCLEtBQUEya0Isb0JBQ0F0bEIsRUFBQThsQixFQUE0QjlsQixFQUFBc2xCLEVBQUFyakIsT0FB
Z0NqQyxJQUFBLENBQzVELEdBRUEwbEIsR0FGQUssRUFBQVQsRUFBQXRsQixHQUNBZ21CLEVBQUFy
bEIsS0FBQTRrQixnQkFBQXZsQixFQUVBLEtBS0EwbEIsR0FBQSxFQUNBTSxJQUFBWixHQUFBVyxF
QUFBbGEsT0FDQWthLEVBQUFsYSxNQUFBak0sS0FBQWUsS0FBQXFsQixHQUVBTixHQUFBLEVBQ08s
UUFDUCxHQUFBQSxFQUlBLElBQ0Eva0IsS0FBQWtsQixTQUFBN2xCLEVBQUEsR0FDVyxNQUFBaUIs
TUFJWE4sS0FBQTRrQixnQkFBQXRqQixPQUFBLEdBSUF4QyxHQUFBRCxRQUFBNmxCLEcxQnFtR00s
U0FBUzVsQixFQUFRRCxHMkJweUd2QixZQWtCQSxTQUFBeW1CLEdBQUFDLEdBQ0EsR0FBQUMsR0FB
QSxHQUFBRCxFQUNBRSxFQUFBQyxFQUFBQyxLQUFBSCxFQUVBLEtBQUFDLEVBQ0EsTUFBQUQsRUFH
QSxJQUFBSSxHQUNBM1csRUFBQSxHQUNBNFcsRUFBQSxFQUNBQyxFQUFBLENBRUEsS0FBQUQsRUFB
QUosRUFBQUksTUFBMkJBLEVBQUFMLEVBQUFsa0IsT0FBb0J1a0IsSUFBQSxDQUMvQyxPQUFBTCxF
QUFBTyxXQUFBRixJQUNBLFFBRUFELEVBQUEsUUFDQSxNQUNBLFNBRUFBLEVBQUEsT0FDQSxNQUNB
LFNBRUFBLEVBQUEsUUFDQSxNQUNBLFNBRUFBLEVBQUEsTUFDQSxNQUNBLFNBRUFBLEVBQUEsTUFD
QSxNQUNBLFNBQ0EsU0FHQUUsSUFBQUQsSUFDQTVXLEdBQUF1VyxFQUFBUSxVQUFBRixFQUFBRCxJ
QUdBQyxFQUFBRCxFQUFBLEVBQ0E1VyxHQUFBMlcsRUFHQSxNQUFBRSxLQUFBRCxFQUFBNVcsRUFB
QXVXLEVBQUFRLFVBQUFGLEVBQUFELEdBQUE1VyxFQVVBLFFBQUFnWCxHQUFBOVcsR0FDQSx1QkFB
QUEsSUFBQSxnQkFBQUEsR0FJQSxHQUFBQSxFQUVBbVcsRUFBQW5XLEdBMUVBLEdBQUF1VyxHQUFB
LFNBNkVBNW1CLEdBQUFELFFBQUFvbkIsRzNCNjBHTSxTQUFTbm5CLEVBQVFELEVBQVNILEc0QjM3
R2hDLFlBRUEsSUFTQXduQixHQVRBdmYsRUFBQWpJLEVBQUEsR0FDQXVSLEVBQUF2UixFQUFBLElB
RUF5bkIsRUFBQSxlQUNBQyxFQUFBLHVEQUVBbFcsRUFBQXhSLEVBQUEsSUFhQXdRLEVBQUFnQixF
QUFBLFNBQUF6TSxFQUFBd0wsR0FJQSxHQUFBeEwsRUFBQWtOLGVBQUFWLEVBQUFvVyxLQUFBLGFB
QUE1aUIsR0FRQUEsRUFBQTZpQixVQUFBclgsTUFSQSxDQUNBaVgsS0FBQXpmLFNBQUFDLGNBQUEs
T0FDQXdmLEVBQUFJLFVBQUEsUUFBQXJYLEVBQUEsUUFFQSxLQURBLEdBQUFzWCxHQUFBTCxFQUFB
bGhCLFdBQ0F1aEIsRUFBQXZoQixZQUNBdkIsRUFBQW1NLFlBQUEyVyxFQUFBdmhCLGNBT0EsSUFB
QTJCLEVBQUFKLFVBQUEsQ0FPQSxHQUFBaWdCLEdBQUEvZixTQUFBQyxjQUFBLE1BQ0E4ZixHQUFB
RixVQUFBLElBQ0EsS0FBQUUsRUFBQUYsWUFDQXBYLEVBQUEsU0FBQXpMLEVBQUF3TCxHQWNBLEdB
UkF4TCxFQUFBaUMsWUFDQWpDLEVBQUFpQyxXQUFBOEosYUFBQS9MLEtBT0EwaUIsRUFBQTNWLEtB
QUF2QixJQUFBLE1BQUFBLEVBQUEsSUFBQW1YLEVBQUE1VixLQUFBdkIsR0FBQSxDQU9BeEwsRUFB
QTZpQixVQUFBdGtCLE9BQUFHLGFBQUEsT0FBQThNLENBSUEsSUFBQXdYLEdBQUFoakIsRUFBQXVC
LFVBQ0EsS0FBQXloQixFQUFBQyxLQUFBcGxCLE9BQ0FtQyxFQUFBa2pCLFlBQUFGLEdBRUFBLEVB
QUFHLFdBQUEsU0FHQW5qQixHQUFBNmlCLFVBQUFyWCxJQUlBdVgsRUFBQSxLQUdBMW5CLEVBQUFE
LFFBQUFxUSxHNUIyOEdNLFNBQVNwUSxFQUFRRCxFQUFTSCxHNkIzaUhoQyxZQTZCQSxTQUFBbW9C
LEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxRQUFBRixHQTNCN0Vqb0IsRUFB
QWtvQixZQUFBLEVBQ0Fsb0IsRUFBQW9vQixRQUFBcG9CLEVBQUFxb0IsZ0JBQUFyb0IsRUFBQXNv
QixtQkFBQXRvQixFQUFBdW9CLGdCQUFBdm9CLEVBQUF3b0IsWUFBQTNtQixNQUVBLElBQUE0bUIs
R0FBQTVvQixFQUFBLElBRUE2b0IsRUFBQVYsRUFBQVMsR0FFQUUsRUFBQTlvQixFQUFBLEtBRUEr
b0IsRUFBQVosRUFBQVcsR0FFQUUsRUFBQWhwQixFQUFBLEtBRUFpcEIsRUFBQWQsRUFBQWEsR0FF
QUUsRUFBQWxwQixFQUFBLEtBRUFtcEIsRUFBQWhCLEVBQUFlLEdBRUFFLEVBQUFwcEIsRUFBQSxJ
QUVBcXBCLEVBQUFsQixFQUFBaUIsR0FFQUUsRUFBQXRwQixFQUFBLEdBRUFtb0IsR0FBQW1CLEVB
Y0FucEIsR0FBQXdvQixZQUFBRSxFQUFBLFFBQ0Exb0IsRUFBQXVvQixnQkFBQUssRUFBQSxRQUNB
NW9CLEVBQUFzb0IsbUJBQUFRLEVBQUEsUUFDQTlvQixFQUFBcW9CLGdCQUFBVyxFQUFBLFFBQ0Fo
cEIsRUFBQW9vQixRQUFBYyxFQUFBLFM3QmlqSE0sU0FBU2pwQixFQUFRRCxFQUFTSCxHOEI5bEho
QyxHQUFBdXBCLEdBQUFDLEdBT0EsV0FDQSxZQUlBLFNBQUFDLEtBR0EsT0FGQUMsTUFFQS9vQixF
QUFBLEVBQWlCQSxFQUFBZ0MsVUFBQUMsT0FBc0JqQyxJQUFBLENBQ3ZDLEdBQUFnSSxHQUFBaEcs
VUFBQWhDLEVBQ0EsSUFBQWdJLEVBQUEsQ0FFQSxHQUFBZ2hCLFNBQUFoaEIsRUFFQSxlQUFBZ2hC
LEdBQUEsV0FBQUEsRUFDQUQsRUFBQTNpQixLQUFBNEIsT0FDSSxJQUFBeVAsTUFBQXdSLFFBQUFq
aEIsR0FDSitnQixFQUFBM2lCLEtBQUEwaUIsRUFBQXBvQixNQUFBLEtBQUFzSCxRQUNJLGVBQUFn
aEIsRUFDSixPQUFBOWtCLEtBQUE4RCxHQUNBa2hCLEVBQUF0cEIsS0FBQW9JLEVBQUE5RCxJQUFB
OEQsRUFBQTlELElBQ0E2a0IsRUFBQTNpQixLQUFBbEMsSUFNQSxNQUFBNmtCLEdBQUE3bEIsS0FB
QSxLQXhCQSxHQUFBZ21CLE1BQWdCL29CLGNBMkJoQixvQkFBQVYsTUFBQUQsUUFDQUMsRUFBQUQs
UUFBQXNwQixHQUdBRixLQUFBQyxFQUFBLFdBQ0EsTUFBQUMsSUFDR3BvQixNQUFBbEIsRUFBQW9w
QixLQUFBdm5CLFNBQUF3bkIsSUFBQXBwQixFQUFBRCxRQUFBcXBCLFM5QnltSEcsU0FBU3BwQixF
QUFRRCxHK0J0b0h2QixZQVFBLFNBQUEycEIsR0FBQUMsRUFBQUMsR0FFQSxNQUFBRCxLQUFBQyxF
QUlBLElBQUFELEdBQUEsSUFBQUMsR0FBQSxFQUFBRCxJQUFBLEVBQUFDLEVBR0FELE9BQUFDLE1B
U0EsUUFBQUMsR0FBQUMsRUFBQUMsR0FDQSxHQUFBTCxFQUFBSSxFQUFBQyxHQUNBLFFBR0Esb0JB
QUFELElBQUEsT0FBQUEsR0FBQSxnQkFBQUMsSUFBQSxPQUFBQSxFQUNBLFFBR0EsSUFBQUMsR0FB
QXhwQixPQUFBc0QsS0FBQWdtQixHQUNBRyxFQUFBenBCLE9BQUFzRCxLQUFBaW1CLEVBRUEsSUFB
QUMsRUFBQXhuQixTQUFBeW5CLEVBQUF6bkIsT0FDQSxRQUlBLFFBQUFqQyxHQUFBLEVBQWlCQSxF
QUFBeXBCLEVBQUF4bkIsT0FBa0JqQyxJQUNuQyxJQUFBRyxFQUFBUCxLQUFBNHBCLEVBQUFDLEVB
QUF6cEIsTUFBQW1wQixFQUFBSSxFQUFBRSxFQUFBenBCLElBQUF3cEIsRUFBQUMsRUFBQXpwQixL
QUNBLFFBSUEsVUEvQ0EsR0FBQUcsR0FBQUYsT0FBQUMsVUFBQUMsY0FrREFWLEdBQUFELFFBQUE4
cEIsRy9CMHBITSxTQUFTN3BCLEVBQVFELEVBQVNILEdnQzVxSGhDLFFBQUFzcUIsR0FBQWxZLEdB
Q0EsSUFBQW1ZLEVBQUFuWSxJQUFBb1ksRUFBQXBZLElBQUFxWSxFQUNBLFFBRUEsSUFBQUMsR0FB
QUMsRUFBQXZZLEVBQ0EsV0FBQXNZLEVBQ0EsUUFFQSxJQUFBRSxHQUFBOXBCLEVBQUFQLEtBQUFt
cUIsRUFBQSxnQkFBQUEsRUFBQXRjLFdBQ0EseUJBQUF3YyxvQkFDQUMsRUFBQXRxQixLQUFBcXFC
LElBQUFFLEVBMURBLEdBQUFOLEdBQUF4cUIsRUFBQSxLQUNBMnFCLEVBQUEzcUIsRUFBQSxLQUNB
dXFCLEVBQUF2cUIsRUFBQSxLQUdBeXFCLEVBQUEsa0JBR0FNLEVBQUFDLFNBQUFucUIsVUFDQW9x
QixFQUFBcnFCLE9BQUFDLFVBR0FncUIsRUFBQUUsRUFBQXBqQixTQUdBN0csRUFBQW1xQixFQUFB
bnFCLGVBR0FncUIsRUFBQUQsRUFBQXRxQixLQUFBSyxPQTJDQVIsR0FBQUQsUUFBQW1xQixHaENt
dUhNLFNBQVNscUIsRUFBUUQsRUFBU0gsR2lDdHhIaEMsWUFXQSxTQUFBa3JCLEdBQUFsa0IsRUFB
QWpDLEdBTUEsTUFIQXFULE9BQUF3UixRQUFBN2tCLEtBQ0FBLElBQUEsSUFFQUEsSUFBQTRCLFlB
QUFLLEVBQUFWLFdBa0JBLFFBQUE2a0IsR0FBQW5rQixFQUFBaUssRUFBQWMsR0FDQVQsRUFBQWhC
LGlCQUFBdEosRUFBQWlLLEVBQUFjLEdBR0EsUUFBQXFaLEdBQUFwa0IsRUFBQVgsRUFBQTBMLEdB
Q0FxRyxNQUFBd1IsUUFBQXZqQixHQUNBZ2xCLEVBQUFya0IsRUFBQVgsRUFBQSxHQUFBQSxFQUFB
LEdBQUEwTCxHQUVBdVosRUFBQXRrQixFQUFBWCxFQUFBMEwsR0FJQSxRQUFBa1csR0FBQWpoQixF
QUFBWCxHQUNBLEdBQUErUixNQUFBd1IsUUFBQXZqQixHQUFBLENBQ0EsR0FBQWtsQixHQUFBbGxC
LEVBQUEsRUFDQUEsS0FBQSxHQUNBbWxCLEVBQUF4a0IsRUFBQVgsRUFBQWtsQixHQUNBdmtCLEVB
QUFpaEIsWUFBQXNELEdBRUF2a0IsRUFBQWloQixZQUFBNWhCLEdBR0EsUUFBQWdsQixHQUFBcmtC
LEVBQUF5a0IsRUFBQUYsRUFBQXhaLEdBRUEsSUFEQSxHQUFBaE4sR0FBQTBtQixJQUNBLENBQ0Es
R0FBQUMsR0FBQTNtQixFQUFBNEIsV0FFQSxJQURBMmtCLEVBQUF0a0IsRUFBQWpDLEVBQUFnTixH
QUNBaE4sSUFBQXdtQixFQUNBLEtBRUF4bUIsR0FBQTJtQixHQUlBLFFBQUFGLEdBQUF4a0IsRUFB
QTJrQixFQUFBSixHQUNBLFFBQ0EsR0FBQXhtQixHQUFBNG1CLEVBQUFobEIsV0FDQSxJQUFBNUIs
SUFBQXdtQixFQUVBLEtBRUF2a0IsR0FBQWloQixZQUFBbGpCLElBS0EsUUFBQTZtQixHQUFBSCxF
QUFBRixFQUFBTSxHQUNBLEdBQUE3a0IsR0FBQXlrQixFQUFBemtCLFdBQ0E4a0IsRUFBQUwsRUFB
QTlrQixXQUNBbWxCLEtBQUFQLEVBR0FNLEdBQ0FQLEVBQUF0a0IsRUFBQWUsU0FBQWdrQixlQUFB
RixHQUFBQyxHQUdBRCxHQUdBbmIsRUFBQW9iLEVBQUFELEdBQ0FMLEVBQUF4a0IsRUFBQThrQixF
QUFBUCxJQUVBQyxFQUFBeGtCLEVBQUF5a0IsRUFBQUYsR0EvRkEsR0FBQWphLEdBQUF0UixFQUFB
LElBQ0Fnc0IsRUFBQWhzQixFQUFBLEtBSUF3UixHQUhBeFIsRUFBQSxHQUNBQSxFQUFBLEdBRUFB
LEVBQUEsS0FDQXdRLEVBQUF4USxFQUFBLElBQ0EwUSxFQUFBMVEsRUFBQSxJQW1CQXNyQixFQUFB
OVosRUFBQSxTQUFBeEssRUFBQVgsRUFBQTBMLEdBSUEvSyxFQUFBa0wsYUFBQTdMLEVBQUEwTCxL
QThFQWthLEVBQUFELEVBQUFDLGlDQTBCQUMsR0FDQUQsbUNBRUFMLHVCQVNBTyxlQUFBLFNBQUFu
bEIsRUFBQW9sQixHQUtBLE9BQUFDLEdBQUEsRUFBbUJBLEVBQUFELEVBQUF4cEIsT0FBb0J5cEIs
SUFBQSxDQUN2QyxHQUFBQyxHQUFBRixFQUFBQyxFQUNBLFFBQUFDLEVBQUFyaEIsTUFDQSxvQkFD
QWtnQixFQUFBbmtCLEVBQUFzbEIsRUFBQUMsUUFBQXJCLEVBQUFsa0IsRUFBQXNsQixFQUFBRSxX
QVdBLE1BQ0EscUJBQ0FwQixFQUFBcGtCLEVBQUFzbEIsRUFBQUcsU0FBQXZCLEVBQUFsa0IsRUFB
QXNsQixFQUFBRSxXQVFBLE1BQ0Esa0JBQ0FoYyxFQUFBeEosRUFBQXNsQixFQUFBQyxRQVFBLE1B
Q0Esb0JBQ0E3YixFQUFBMUosRUFBQXNsQixFQUFBQyxRQVFBLE1BQ0EsbUJBQ0F0RSxFQUFBamhC
LEVBQUFzbEIsRUFBQUcsYUFjQXJzQixHQUFBRCxRQUFBK3JCLEdqQ3N5SE0sU0FBUzlyQixFQUFR
RCxHa0M1L0h2QixZQUVBLElBQUFvUixJQUNBaEIsS0FBQSwrQkFDQW1jLE9BQUEscUNBQ0EvRSxJ
QUFBLDZCQUdBdm5CLEdBQUFELFFBQUFvUixHbEM0Z0lNLFNBQVNuUixFQUFRRCxFQUFTSCxHbUNu
aEloQyxZQXFCQSxTQUFBMnNCLEtBQ0EsR0FBQUMsRUFJQSxPQUFBQyxLQUFBQyxHQUFBLENBQ0Es
R0FBQUMsR0FBQUQsRUFBQUQsR0FDQUcsRUFBQUosRUFBQUssUUFBQUosRUFFQSxJQURBRyxLQUFB
LE9BQUFwbUIsRUFBQSxLQUFBaW1CLElBQ0ExVCxFQUFBK0IsUUFBQThSLEdBQUEsQ0FHQUQsRUFB
QWhTLGNBQUEsT0FBQW5VLEVBQUEsS0FBQWltQixHQUNBMVQsRUFBQStCLFFBQUE4UixHQUFBRCxD
QUNBLElBQUFHLEdBQUFILEVBQUFJLFVBQ0EsUUFBQUMsS0FBQUYsR0FDQUcsRUFBQUgsRUFBQUUs
R0FBQUwsRUFBQUssR0FBQSxPQUFBeG1CLEVBQUEsS0FBQXdtQixFQUFBUCxLQWFBLFFBQUFRLEdB
QUF2ZixFQUFBaWYsRUFBQUssR0FDQWpVLEVBQUFtVSx5QkFBQXhzQixlQUFBc3NCLEdBQUF4bUIs
RUFBQSxLQUFBd21CLEdBQUEsT0FDQWpVLEVBQUFtVSx5QkFBQUYsR0FBQXRmLENBRUEsSUFBQStO
LEdBQUEvTixFQUFBK04sdUJBQ0EsSUFBQUEsRUFBQSxDQUNBLE9BQUEwUixLQUFBMVIsR0FDQSxH
QUFBQSxFQUFBL2EsZUFBQXlzQixHQUFBLENBQ0EsR0FBQUMsR0FBQTNSLEVBQUEwUixFQUNBRSxH
QUFBRCxFQUFBVCxFQUFBSyxHQUdBLFNBQ0csUUFBQXRmLEVBQUF1TSxtQkFDSG9ULEVBQUEzZixF
QUFBdU0saUJBQUEwUyxFQUFBSyxJQUNBLEdBYUEsUUFBQUssR0FBQXBULEVBQUEwUyxFQUFBSyxH
QUNBalUsRUFBQXNCLHdCQUFBSixHQUFBelQsRUFBQSxNQUFBeVQsR0FBQSxPQUNBbEIsRUFBQXNC
LHdCQUFBSixHQUFBMFMsRUFDQTVULEVBQUF3Syw2QkFBQXRKLEdBQUEwUyxFQUFBSSxXQUFBQyxH
QUFBMUosYUEvRUEsR0FBQTljLEdBQUE1RyxFQUFBLEdBT0E0c0IsR0FMQTVzQixFQUFBLEdBS0Es
TUFLQThzQixLQW9GQTNULEdBSUErQixXQUtBb1MsNEJBS0E3UywyQkFLQWtKLGdDQVFBK0osMEJB
QXVFLEtBWXZFeFQsdUJBQUEsU0FBQXlULEdBQ0FmLEVBQUFobUIsRUFBQSxjQUVBZ21CLEVBQUF4
VSxNQUFBdlgsVUFBQUksTUFBQVYsS0FBQW90QixHQUNBaEIsS0FhQXhTLHlCQUFBLFNBQUF5VCxH
QUNBLEdBQUFDLElBQUEsQ0FDQSxRQUFBaEIsS0FBQWUsR0FDQSxHQUFBQSxFQUFBOXNCLGVBQUEr
ckIsR0FBQSxDQUdBLEdBQUFFLEdBQUFhLEVBQUFmLEVBQ0FDLEdBQUFoc0IsZUFBQStyQixJQUFB
QyxFQUFBRCxLQUFBRSxJQUNBRCxFQUFBRCxHQUFBam1CLEVBQUEsTUFBQWltQixHQUFBLE9BQ0FD
LEVBQUFELEdBQUFFLEVBQ0FjLEdBQUEsR0FHQUEsR0FDQWxCLEtBV0FtQix3QkFBQSxTQUFBM2Us
R0FDQSxHQUFBckIsR0FBQXFCLEVBQUFyQixjQUNBLElBQUFBLEVBQUF1TSxpQkFDQSxNQUFBbEIs
R0FBQXNCLHdCQUFBM00sRUFBQXVNLG1CQUFBLElBRUEsSUFBQXJZLFNBQUE4TCxFQUFBK04sd0JB
QUEsQ0FHQSxHQUFBQSxHQUFBL04sRUFBQStOLHVCQUVBLFFBQUFFLEtBQUFGLEdBQ0EsR0FBQUEs
RUFBQS9hLGVBQUFpYixHQUFBLENBR0EsR0FBQWdSLEdBQUE1VCxFQUFBc0Isd0JBQUFvQixFQUFB
RSxHQUNBLElBQUFnUixFQUNBLE1BQUFBLElBSUEsYUFPQWdCLG1CQUFBLFdBQ0FuQixFQUFBLElB
Q0EsUUFBQUMsS0FBQUMsR0FDQUEsRUFBQWhzQixlQUFBK3JCLFVBQ0FDLEdBQUFELEVBR0ExVCxH
QUFBK0IsUUFBQXRZLE9BQUEsQ0FFQSxJQUFBMHFCLEdBQUFuVSxFQUFBbVUsd0JBQ0EsUUFBQUYs
S0FBQUUsR0FDQUEsRUFBQXhzQixlQUFBc3NCLFVBQ0FFLEdBQUFGLEVBSUEsSUFBQTNTLEdBQUF0
QixFQUFBc0IsdUJBQ0EsUUFBQUosS0FBQUksR0FDQUEsRUFBQTNaLGVBQUF1WixVQUNBSSxHQUFB
SixJQWVBamEsR0FBQUQsUUFBQWdaLEduQ29pSU0sU0FBUy9ZLEVBQVFELEVBQVNILEdvQ3J4SWhD
LFlBa0NBLFNBQUFndUIsR0FBQWhULEdBQ0EscUJBQUFBLEdBQUEsZ0JBQUFBLEdBQUEsbUJBQUFB
LEVBR0EsUUFBQWlULEdBQUFqVCxHQUNBLHVCQUFBQSxHQUFBLGlCQUFBQSxFQUVBLFFBQUFrVCxH
QUFBbFQsR0FDQSx1QkFBQUEsR0FBQSxrQkFBQUEsRUEwQkEsUUFBQW1ULEdBQUFoZixFQUFBd0ss
RUFBQVcsRUFBQTVVLEdBQ0EsR0FBQXVGLEdBQUFrRSxFQUFBbEUsTUFBQSxlQUNBa0UsR0FBQUws
Y0FBQXNLLEVBQUFoUyxvQkFBQTFCLEdBQ0FpVSxFQUNBTixFQUFBK1UsK0JBQUFuakIsRUFBQXFQ
LEVBQUFuTCxHQUVBa0ssRUFBQWdWLHNCQUFBcGpCLEVBQUFxUCxFQUFBbkwsR0FFQUEsRUFBQUws
Y0FBQSxLQU1BLFFBQUE4SyxHQUFBekssRUFBQXdLLEdBQ0EsR0FBQTJVLEdBQUFuZixFQUFBNk0s
bUJBQ0F1UyxFQUFBcGYsRUFBQThNLGtCQUlBLElBQUE3RCxNQUFBd1IsUUFBQTBFLEdBQ0EsT0FB
QTN0QixHQUFBLEVBQW1CQSxFQUFBMnRCLEVBQUExckIsU0FDbkJ1TSxFQUFBVCx1QkFEaUQvTixJ
QUtqRHd0QixFQUFBaGYsRUFBQXdLLEVBQUEyVSxFQUFBM3RCLEdBQUE0dEIsRUFBQTV0QixRQUVH
MnRCLElBQ0hILEVBQUFoZixFQUFBd0ssRUFBQTJVLEVBQUFDLEVBRUFwZixHQUFBNk0sbUJBQUEs
S0FDQTdNLEVBQUE4TSxtQkFBQSxLQVVBLFFBQUF1UyxHQUFBcmYsR0FDQSxHQUFBbWYsR0FBQW5m
LEVBQUE2TSxtQkFDQXVTLEVBQUFwZixFQUFBOE0sa0JBSUEsSUFBQTdELE1BQUF3UixRQUFBMEUs
SUFDQSxPQUFBM3RCLEdBQUEsRUFBbUJBLEVBQUEydEIsRUFBQTFyQixTQUNuQnVNLEVBQUFULHVC
QURpRC9OLElBS2pELEdBQUEydEIsRUFBQTN0QixHQUFBd08sRUFBQW9mLEVBQUE1dEIsSUFDQSxN
QUFBNHRCLEdBQUE1dEIsT0FHRyxJQUFBMnRCLEdBQ0hBLEVBQUFuZixFQUFBb2YsR0FDQSxNQUFB
QSxFQUdBLGFBTUEsUUFBQUUsR0FBQXRmLEdBQ0EsR0FBQW1YLEdBQUFrSSxFQUFBcmYsRUFHQSxP
QUZBQSxHQUFBOE0sbUJBQUEsS0FDQTlNLEVBQUE2TSxtQkFBQSxLQUNBc0ssRUFZQSxRQUFBb0ks
R0FBQXZmLEdBSUEsR0FBQXdmLEdBQUF4ZixFQUFBNk0sbUJBQ0E0UyxFQUFBemYsRUFBQThNLGtC
QUNBN0QsT0FBQXdSLFFBQUErRSxHQUFBL25CLEVBQUEsY0FDQXVJLEVBQUFMLGNBQUE2ZixFQUFB
dlYsRUFBQWhTLG9CQUFBd25CLEdBQUEsSUFDQSxJQUFBQyxHQUFBRixJQUFBeGYsR0FBQSxJQUlB
LE9BSEFBLEdBQUFMLGNBQUEsS0FDQUssRUFBQTZNLG1CQUFBLEtBQ0E3TSxFQUFBOE0sbUJBQUEs
S0FDQTRTLEVBT0EsUUFBQUMsR0FBQTNmLEdBQ0EsUUFBQUEsRUFBQTZNLG1CQTNLQSxHQWVBK1Ms
R0FDQUMsRUFoQkFwb0IsRUFBQTVHLEVBQUEsR0FFQXFaLEVBQUFyWixFQUFBLElBZUE0TixHQWJB
NU4sRUFBQSxHQUNBQSxFQUFBLElBYUFpdkIsb0JBQUEsU0FBQUMsR0FDQUgsRUFBQUcsR0FLQUMs
b0JBQUEsU0FBQUQsR0FDQUYsRUFBQUUsS0F3SkE5VixHQUNBNFUsV0FDQUMsWUFDQUMsYUFFQVEs
d0JBQ0E5VSwyQkFDQTZVLHFDQUNBSyxnQkFFQTNuQixvQkFBQSxTQUFBcEMsR0FDQSxNQUFBZ3FC
LEdBQUE1bkIsb0JBQUFwQyxJQUVBcUMsb0JBQUEsU0FBQXJDLEdBQ0EsTUFBQWdxQixHQUFBM25C
LG9CQUFBckMsSUFFQXFxQixXQUFBLFNBQUFqdUIsRUFBQUMsR0FDQSxNQUFBNHRCLEdBQUFJLFdB
QUFqdUIsRUFBQUMsSUFFQWl1Qix3QkFBQSxTQUFBbHVCLEVBQUFDLEdBQ0EsTUFBQTR0QixHQUFB
Syx3QkFBQWx1QixFQUFBQyxJQUVBa2Isa0JBQUEsU0FBQTVXLEdBQ0EsTUFBQXNwQixHQUFBMVMs
a0JBQUE1VyxJQUVBeVcsaUJBQUEsU0FBQTVYLEVBQUFyRCxFQUFBeUgsR0FDQSxNQUFBcW1CLEdB
QUE3UyxpQkFBQTVYLEVBQUFyRCxFQUFBeUgsSUFFQW9VLG1CQUFBLFNBQUF0WSxFQUFBRSxFQUFB
ekQsRUFBQW91QixFQUFBQyxHQUNBLE1BQUFQLEdBQUFqUyxtQkFBQXRZLEVBQUFFLEVBQUF6RCxF
QUFBb3VCLEVBQUFDLElBR0EzaEIsWUFHQXhOLEdBQUFELFFBQUFpWixHcENxeUlNLFNBQVNoWixF
QUFRRCxHcUMxL0l2QixZQVNBLFNBQUErbUIsR0FBQXJpQixHQUNBLEdBQUEycUIsR0FBQSxRQUNB
QyxHQUNBQyxJQUFBLEtBQ0FDLElBQUEsTUFFQUMsR0FBQSxHQUFBL3FCLEdBQUExQyxRQUFBcXRC
LEVBQUEsU0FBQXpJLEdBQ0EsTUFBQTBJLEdBQUExSSxJQUdBLFdBQUE2SSxFQVNBLFFBQUFDLEdB
QUFockIsR0FDQSxHQUFBaXJCLEdBQUEsV0FDQUMsR0FDQUMsS0FBQSxJQUNBQyxLQUFBLEtBRUFD
LEVBQUEsTUFBQXJyQixFQUFBLFVBQUFBLEVBQUEsR0FBQUEsRUFBQXlpQixVQUFBLEdBQUF6aUIs
RUFBQXlpQixVQUFBLEVBRUEsV0FBQTRJLEdBQUEvdEIsUUFBQTJ0QixFQUFBLFNBQUEvSSxHQUNB
LE1BQUFnSixHQUFBaEosS0FJQSxHQUFBb0osSUFDQWpKLFNBQ0EySSxXQUdBenZCLEdBQUFELFFB
QUFnd0IsR3JDMmdKTSxTQUFTL3ZCLEVBQVFELEVBQVNILEdzQzFqSmhDLFlBdUJBLFNBQUFvd0Is
R0FBQUMsR0FDQSxNQUFBQSxFQUFBQyxhQUFBLE1BQUFELEVBQUFFLFVBQUEzcEIsRUFBQSxhQUVB
LFFBQUE0cEIsR0FBQUgsR0FDQUQsRUFBQUMsR0FDQSxNQUFBQSxFQUFBamUsT0FBQSxNQUFBaWUs
RUFBQUksU0FBQTdwQixFQUFBLGFBR0EsUUFBQThwQixHQUFBTCxHQUNBRCxFQUFBQyxHQUNBLE1B
QUFBLEVBQUFNLFNBQUEsTUFBQU4sRUFBQUksU0FBQTdwQixFQUFBLGFBb0JBLFFBQUFncUIsR0FB
QS9ZLEdBQ0EsR0FBQUEsRUFBQSxDQUNBLEdBQUF6VixHQUFBeVYsRUFBQTFNLFNBQ0EsSUFBQS9J
LEVBQ0Esc0NBQUFBLEVBQUEsS0FHQSxTQTFEQSxHQUFBd0UsR0FBQTVHLEVBQUEsR0FFQTZ3QixF
QUFBN3dCLEVBQUEsS0FDQTh3QixFQUFBOXdCLEVBQUEsSUFFQXlXLEVBQUF6VyxFQUFBLElBQ0Fp
WCxFQUFBNlosRUFBQXJhLEVBQUFPLGdCQUtBK1osR0FIQS93QixFQUFBLEdBQ0FBLEVBQUEsSUFH
QXFsQixRQUFBLEVBQ0EyTCxVQUFBLEVBQ0FDLE9BQUEsRUFDQUMsUUFBQSxFQUNBQyxPQUFBLEVB
Q0F2a0IsT0FBQSxFQUNBd2tCLFFBQUEsSUFnQkFDLEdBQ0FqZixNQUFBLFNBQUEwRixFQUFBekos
RUFBQWlqQixHQUNBLE9BQUF4WixFQUFBekosSUFBQTBpQixFQUFBalosRUFBQTdNLE9BQUE2TSxF
QUFBMlksVUFBQTNZLEVBQUF5WixVQUFBelosRUFBQW9CLFNBQ0EsS0FFQSxHQUFBalgsT0FBQTtF
QUVBMHVCLFFBQUEsU0FBQTdZLEVBQUF6SixFQUFBaWpCLEdBQ0EsT0FBQXhaLEVBQUF6SixJQUFB
eUosRUFBQTJZLFVBQUEzWSxFQUFBeVosVUFBQXpaLEVBQUFvQixTQUNBLEtBRUEsR0FBQWpYLE9B
QUEsME5BRUF3dUIsU0FBQXhaLEVBQUF1YSxNQUdBQyxLQWVBQyxHQUNBQyxlQUFBLFNBQUFDLEVB
QUE5WixFQUFBRCxHQUNBLE9BQUF4SixLQUFBZ2pCLEdBQUEsQ0FDQSxHQUFBQSxFQUFBdndCLGVB
QUF1TixHQUNBLEdBQUF0TSxHQUFBc3ZCLEVBQUFoakIsR0FBQXlKLEVBQUF6SixFQUFBdWpCLEVB
QUEsWUFBQWYsRUFFQSxJQUFBOXVCLFlBQUFFLFVBQUFGLEVBQUFjLFVBQUE0dUIsSUFBQSxDQUdB
QSxFQUFBMXZCLEVBQUFjLFVBQUEsQ0FFQSt0QixHQUFBL1ksTUFVQWdhLFNBQUEsU0FBQXhCLEdB
Q0EsTUFBQUEsR0FBQUUsV0FDQUMsRUFBQUgsR0FDQUEsRUFBQUUsVUFBQW5lLE9BRUFpZSxFQUFB
amUsT0FRQTBmLFdBQUEsU0FBQXpCLEdBQ0EsTUFBQUEsR0FBQUMsYUFDQUksRUFBQUwsR0FDQUEs
RUFBQUMsWUFBQWxlLE9BRUFpZSxFQUFBTSxTQU9Bb0IsZ0JBQUEsU0FBQTFCLEVBQUFsaEIsR0FD
QSxNQUFBa2hCLEdBQUFFLFdBQ0FDLEVBQUFILEdBQ0FBLEVBQUFFLFVBQUF5QixjQUFBN2lCLEVB
QUE1SyxPQUFBNk4sUUFDS2llLEVBQUFDLGFBQ0xJLEVBQUFMLEdBQ0FBLEVBQUFDLFlBQUEwQixj
QUFBN2lCLEVBQUE1SyxPQUFBb3NCLFVBQ0tOLEVBQUFJLFNBQ0xKLEVBQUFJLFNBQUFsd0IsS0FB
QXlCLE9BQUFtTixHQURLLFFBTUwvTyxHQUFBRCxRQUFBdXhCLEd0QzBrSk0sU0FBU3R4QixFQUFR
RCxFQUFTSCxHdUN2c0poQyxZQUVBLElBQUE0RyxHQUFBNUcsRUFBQSxHQUlBaXlCLEdBRkFqeUIs
RUFBQSxJQUVBLEdBRUFreUIsR0FLQUMsc0JBQUEsS0FNQUMsdUJBQUEsS0FFQXhrQixXQUNBeWtC
LGtCQUFBLFNBQUFDLEdBQ0FMLEVBQUFyckIsRUFBQSxjQUNBc3JCLEVBQUFDLHNCQUFBRyxFQUFB
SCxzQkFDQUQsRUFBQUUsdUJBQUFFLEVBQUFGLHVCQUNBSCxHQUFBLElBS0E3eEIsR0FBQUQsUUFB
QSt4QixHdkN3dEpNLFNBQVM5eEIsRUFBUUQsRUFBU0gsR3dDdnZKaEMsWUFZQSxTQUFBcXVCLEdB
QUFqc0IsRUFBQW92QixFQUFBcndCLEdBQ0EsSUFDQXF3QixFQUFBcndCLEdBQ0csTUFBQTRvQixH
QUNILE9BQUF3SSxJQUNBQSxFQUFBeEksSUFmQSxHQUFBd0ksR0FBQSxLQW9CQWxaLEdBQ0FnVix3
QkFNQUQsK0JBQUFDLEVBTUE3UyxtQkFBQSxXQUNBLEdBQUErVyxFQUFBLENBQ0EsR0FBQXh3QixH
QUFBd3dCLENBRUEsTUFEQUEsR0FBQSxLQUNBeHdCLElBd0JBM0IsR0FBQUQsUUFBQWtaLEd4Q3d3
Sk0sU0FBU2paLEVBQVFELEVBQVNILEd5Q3gwSmhDLFlBWUEsU0FBQTRMLEdBQUErSSxHQUNBdkws
RUFBQXdDLGNBQUErSSxHQUdBLFFBQUE2ZCxHQUFBN3BCLEdBQ0EsR0FBQXNDLFNBQUF0QyxFQUNB
LGVBQUFzQyxFQUNBLE1BQUFBLEVBRUEsSUFBQXduQixHQUFBOXBCLEVBQUF5RixhQUFBekYsRUFB
QXlGLFlBQUFoTSxNQUFBNkksRUFDQS9HLEVBQUF0RCxPQUFBc0QsS0FBQXlFLEVBQ0EsT0FBQXpF
LEdBQUF0QixPQUFBLEdBQUFzQixFQUFBdEIsT0FBQSxHQUNBNnZCLEVBQUEsV0FBQXZ1QixFQUFB
TCxLQUFBLFVBRUE0dUIsRUFHQSxRQUFBQyxHQUFBQyxFQUFBQyxHQUNBLEdBQUFqZSxHQUFBdUks
RUFBQUcsSUFBQXNWLEVBQ0EsS0FBQWhlLEVBQUEsQ0FRQSxZQU9BLE1BQUFBLEdBNUNBLEdBQUEv
TixHQUFBNUcsRUFBQSxHQUdBa2QsR0FEQWxkLEVBQUEsSUFDQUEsRUFBQSxLQUVBb0osR0FEQXBK
LEVBQUEsR0FDQUEsRUFBQSxJQThDQTZ5QixHQTVDQTd5QixFQUFBLEdBQ0FBLEVBQUEsSUFtREE4
eUIsVUFBQSxTQUFBSCxHQUVBLEdBTUFoZSxHQUFBdUksRUFBQUcsSUFBQXNWLEVBQ0EsU0FBQWhl
LEtBSUFBLEVBQUFuUCxvQkFlQXV0QixnQkFBQSxTQUFBSixFQUFBNW9CLEVBQUE2b0IsR0FDQUMs
RUFBQUcsaUJBQUFqcEIsRUFBQTZvQixFQUNBLElBQUFqZSxHQUFBK2QsRUFBQUMsRUFPQSxPQUFB
aGUsSUFJQUEsRUFBQWhLLGtCQUNBZ0ssRUFBQWhLLGtCQUFBNUQsS0FBQWdELEdBRUE0SyxFQUFB
aEssbUJBQUFaLE9BTUE2QixHQUFBK0ksSUFaQSxNQWVBc2Usd0JBQUEsU0FBQXRlLEVBQUE1SyxH
QUNBNEssRUFBQWhLLGtCQUNBZ0ssRUFBQWhLLGtCQUFBNUQsS0FBQWdELEdBRUE0SyxFQUFBaEss
bUJBQUFaLEdBRUE2QixFQUFBK0ksSUFnQkF1ZSxtQkFBQSxTQUFBUCxHQUNBLEdBQUFoZSxHQUFB
K2QsRUFBQUMsRUFBQSxjQUVBaGUsS0FJQUEsRUFBQXdlLHFCQUFBLEVBRUF2bkIsRUFBQStJLEtB
Y0F5ZSxvQkFBQSxTQUFBVCxFQUFBVSxFQUFBdHBCLEdBQ0EsR0FBQTRLLEdBQUErZCxFQUFBQyxF
QUFBLGVBRUFoZSxLQUlBQSxFQUFBMmUsb0JBQUFELEdBQ0ExZSxFQUFBNGUsc0JBQUEsRUFHQXZ4
QixTQUFBK0gsR0FBQSxPQUFBQSxJQUNBOG9CLEVBQUFHLGlCQUFBanBCLEVBQUEsZ0JBQ0E0SyxF
QUFBaEssa0JBQ0FnSyxFQUFBaEssa0JBQUE1RCxLQUFBZ0QsR0FFQTRLLEVBQUFoSyxtQkFBQVos
SUFJQTZCLEVBQUErSSxLQWFBNmUsZ0JBQUEsU0FBQWIsRUFBQWMsR0FNQSxHQUFBOWUsR0FBQStk
LEVBQUFDLEVBQUEsV0FFQSxJQUFBaGUsRUFBQSxDQUlBLEdBQUFySCxHQUFBcUgsRUFBQTJlLHFC
QUFBM2UsRUFBQTJlLHNCQUNBaG1CLEdBQUF2RyxLQUFBMHNCLEdBRUE3bkIsRUFBQStJLEtBR0Er
ZSx1QkFBQSxTQUFBL2UsRUFBQVksRUFBQW9lLEdBQ0FoZixFQUFBaWYsZ0JBQUFyZSxFQUVBWixF
QUFBYyxTQUFBa2UsRUFDQS9uQixFQUFBK0ksSUFHQXFlLGlCQUFBLFNBQUFqcEIsRUFBQTZvQixH
QUNBN29CLEdBQUEsa0JBQUFBLEdBQUFuRCxFQUFBLE1BQUFnc0IsRUFBQUosRUFBQXpvQixJQUFB
LFNBSUEzSixHQUFBRCxRQUFBMHlCLEd6Q3cxSk0sU0FBU3p5QixFQUFRRCxHMENwakt2QixZQU1B
LElBQUFxUixHQUFBLFNBQUFnZ0IsR0FDQSx5QkFBQXFDLGNBQUFDLHdCQUNBLFNBQUFDLEVBQUFD
LEVBQUFDLEVBQUFDLEdBQ0FMLE1BQUFDLHdCQUFBLFdBQ0EsTUFBQXRDLEdBQUF1QyxFQUFBQyxF
QUFBQyxFQUFBQyxNQUlBMUMsRUFJQXB4QixHQUFBRCxRQUFBcVIsRzFDc2tLTSxTQUFTcFIsRUFB
UUQsRzJDMWxLdkIsWUFhQSxTQUFBZzBCLEdBQUFubUIsR0FDQSxHQUFBb21CLEdBQ0FDLEVBQUFy
bUIsRUFBQXFtQixPQWdCQSxPQWRBLFlBQUFybUIsSUFDQW9tQixFQUFBcG1CLEVBQUFvbUIsU0FH
QSxJQUFBQSxHQUFBLEtBQUFDLElBQ0FELEVBQUEsS0FJQUEsRUFBQUMsRUFLQUQsR0FBQSxTQUFB
QSxFQUNBQSxFQUdBLEVBR0FoMEIsRUFBQUQsUUFBQWcwQixHM0MwbUtNLFNBQVMvekIsRUFBUUQs
RzRDaHBLdkIsWUFpQkEsU0FBQW0wQixHQUFBQyxHQUNBLEdBQUFDLEdBQUFsekIsS0FDQTBNLEVB
QUF3bUIsRUFBQXhtQixXQUNBLElBQUFBLEVBQUFvWCxpQkFDQSxNQUFBcFgsR0FBQW9YLGlCQUFB
bVAsRUFFQSxJQUFBRSxHQUFBQyxFQUFBSCxFQUNBLFNBQUFFLEtBQUF6bUIsRUFBQXltQixHQUdB
LFFBQUEvUCxHQUFBMVcsR0FDQSxNQUFBc21CLEdBckJBLEdBQUFJLElBQ0FDLElBQUEsU0FDQUMs
UUFBQSxVQUNBQyxLQUFBLFVBQ0FDLE1BQUEsV0FvQkExMEIsR0FBQUQsUUFBQXVrQixHNUNncUtN
LFNBQVN0a0IsRUFBUUQsRzZDL3JLdkIsWUFVQSxTQUFBdWQsR0FBQTFQLEdBQ0EsR0FBQXpKLEdB
QUF5SixFQUFBekosUUFBQXlKLEVBQUF5WCxZQUFBM2QsTUFTQSxPQU5BdkQsR0FBQXd3QiwwQkFD
QXh3QixJQUFBd3dCLHlCQUtBLElBQUF4d0IsRUFBQVUsU0FBQVYsRUFBQXlDLFdBQUF6QyxFQUdB
bkUsRUFBQUQsUUFBQXVkLEc3QytzS00sU0FBU3RkLEVBQVFELEVBQVNILEc4Q3R1S2hDLFlBMEJB
LFNBQUE0ZSxHQUFBb1csRUFBQUMsR0FDQSxJQUFBaHRCLEVBQUFKLFdBQUFvdEIsS0FBQSxvQkFB
QWx0QixXQUNBLFFBR0EsSUFBQXFsQixHQUFBLEtBQUE0SCxFQUNBRSxFQUFBOUgsSUFBQXJsQixT
QUVBLEtBQUFtdEIsRUFBQSxDQUNBLEdBQUFuZCxHQUFBaFEsU0FBQUMsY0FBQSxNQUNBK1AsR0FB
QW9kLGFBQUEvSCxFQUFBLFdBQ0E4SCxFQUFBLGtCQUFBbmQsR0FBQXFWLEdBUUEsT0FMQThILEdB
QUFFLEdBQUEsVUFBQUosSUFFQUUsRUFBQW50QixTQUFBc3RCLGVBQUFDLFdBQUEsdUJBR0FKLEVB
M0NBLEdBRUFFLEdBRkFudEIsRUFBQWpJLEVBQUEsRUFHQWlJLEdBQUFKLFlBQ0F1dEIsRUFBQXJ0
QixTQUFBc3RCLGdCQUFBdHRCLFNBQUFzdEIsZUFBQUMsWUFHQXZ0QixTQUFBc3RCLGVBQUFDLFdB
QUEsYUF1Q0FsMUIsRUFBQUQsUUFBQXllLEc5Q3N2S00sU0FBU3hlLEVBQVFELEcrQ3R5S3ZCLFlB
Y0EsU0FBQW8xQixHQUFBL2YsRUFBQUQsR0FDQSxHQUFBaWdCLEdBQUEsT0FBQWhnQixRQUFBLEVB
Q0FpZ0IsRUFBQSxPQUFBbGdCLFFBQUEsQ0FDQSxJQUFBaWdCLEdBQUFDLEVBQ0EsTUFBQUQsS0FB
QUMsQ0FHQSxJQUFBQyxTQUFBbGdCLEdBQ0FtZ0IsUUFBQXBnQixFQUNBLGtCQUFBbWdCLEdBQUEs
V0FBQUEsRUFDQSxXQUFBQyxHQUFBLFdBQUFBLEVBRUEsV0FBQUEsR0FBQW5nQixFQUFBdkssT0FB
QXNLLEVBQUF0SyxNQUFBdUssRUFBQTNRLE1BQUEwUSxFQUFBMVEsSUFJQXpFLEVBQUFELFFBQUFv
MUIsRy9Dc3pLTSxTQUFTbjFCLEVBQVFELEVBQVNILEdnRHAxS2hDLFlBRUEsSUFFQXNDLElBRkF0
QyxFQUFBLEdBRUFBLEVBQUEsSUFHQTQxQixHQUZBNTFCLEVBQUEsR0FFQXNDLEVBZ1dBbEMsR0FB
QUQsUUFBQXkxQixHaERvMktNLFNBQVN4MUIsRUFBUUQsR2lEcnRMdkIsWUFVQSxTQUFBb0MsR0FB
QU0sR0FFQSxtQkFBQXVJLFVBQUEsa0JBQUFBLFNBQUFySixPQUNBcUosUUFBQXJKLE1BQUFjLEVB
R0EsS0FJQSxTQUFBWixPQUFBWSxHQUVHLE1BQUFqQixLQXBCSHpCLEVBQUFrb0IsWUFBQSxFQUNB
bG9CLEVBQUFtb0IsUUFBQS9sQixHakRndkxNLFNBQVNuQyxFQUFRRCxFQUFTSCxHa0RudkxoQyxZ
QWFBLElBQUFzQyxHQUFBdEMsRUFBQSxHQU1BNjFCLEdBU0FDLE9BQUEsU0FBQXZ4QixFQUFBd3hC
LEVBQUFoc0IsR0FDQSxNQUFBeEYsR0FBQThELGtCQUNBOUQsRUFBQThELGlCQUFBMHRCLEVBQUFo
c0IsR0FBQSxJQUVBb1QsT0FBQSxXQUNBNVksRUFBQXl4QixvQkFBQUQsRUFBQWhzQixHQUFBLE1B
R0t4RixFQUFBK0QsYUFDTC9ELEVBQUErRCxZQUFBLEtBQUF5dEIsRUFBQWhzQixJQUVBb1QsT0FB
QSxXQUNBNVksRUFBQTB4QixZQUFBLEtBQUFGLEVBQUFoc0IsTUFKSyxRQWtCTGtyQixRQUFBLFNB
QUExd0IsRUFBQXd4QixFQUFBaHNCLEdBQ0EsTUFBQXhGLEdBQUE4RCxrQkFDQTlELEVBQUE4RCxp
QkFBQTB0QixFQUFBaHNCLEdBQUEsSUFFQW9ULE9BQUEsV0FDQTVZLEVBQUF5eEIsb0JBQUFELEVB
QUFoc0IsR0FBQSxPQVFBb1QsT0FBQTdhLElBS0E0ekIsZ0JBQUEsYUFHQTkxQixHQUFBRCxRQUFB
MDFCLEdsRHl2TE0sU0FBU3oxQixFQUFRRCxHbUQxekx2QixZQU1BLFNBQUFnMkIsR0FBQXB4QixH
QUlBLElBQ0FBLEVBQUFxeEIsUUFDRyxNQUFBeDBCLEtBR0h4QixFQUFBRCxRQUFBZzJCLEduRDAw
TE0sU0FBUy8xQixFQUFRRCxHb0RuMkx2QixZQXlCQSxTQUFBazJCLEdBQUF4WSxHQUVBLEdBREFB
LE1BQUEsbUJBQUE5VixtQkFBQS9GLFFBQ0EsbUJBQUE2YixHQUNBLFdBRUEsS0FDQSxNQUFBQSxH
QUFBeVksZUFBQXpZLEVBQUEwWSxLQUNHLE1BQUEzMEIsR0FDSCxNQUFBaWMsR0FBQTBZLE1BSUFu
MkIsRUFBQUQsUUFBQWsyQixHcER5MkxNLFNBQVNqMkIsRUFBUUQsRUFBU0gsR3FEOTRMaEMsR0FB
QXcyQixHQUFBeDJCLEVBQUEsS0FHQXkyQixFQUFBRCxFQUFBQyxNQUVBcjJCLEdBQUFELFFBQUFz
MkIsR3JEcTVMTSxTQUFTcjJCLEVBQVFELEVBQVNILEdzRGo1TGhDLFlBTUEsSUFBQXNZLEdBQUF0
WSxFQUFBLElBQ0FJLEdBQUFELFFBQUEsU0FBQTZXLEdBRUEsR0FBQTBmLElBQUEsQ0FDQSxPQUFB
cGUsR0FBQXRCLEVBQUEwZixLdERrNkxNLFNBQVN0MkIsRUFBUUQsRUFBU0gsR3VEejVMaENJLEVB
QUFELFFBQUFILEVBQUEsUXZENjdMTSxTQUFTSSxFQUFRRCxHd0RoOUx2QixZQUVBLElBQUEwd0Is
R0FBQSw4Q0FFQXp3QixHQUFBRCxRQUFBMHdCLEd4RGcrTE0sU0FBU3p3QixFQUFRRCxHeURuK0x2
QixZQXlEQSxTQUFBdzJCLEdBQUFDLEVBQUEveEIsR0FDQSxNQUFBK3hCLEdBQUEveEIsRUFBQWd5
QixPQUFBLEdBQUFDLGNBQUFqeUIsRUFBQXlpQixVQUFBLEdBcERBLEdBQUF5UCxJQUNBQyx5QkFB
QSxFQUNBQyxtQkFBQSxFQUNBQyxrQkFBQSxFQUNBQyxrQkFBQSxFQUNBQyxTQUFBLEVBQ0FDLGNB
QUEsRUFDQUMsaUJBQUEsRUFDQUMsYUFBQSxFQUNBQyxNQUFBLEVBQ0FDLFVBQUEsRUFDQUMsY0FB
QSxFQUNBQyxZQUFBLEVBQ0FDLGNBQUEsRUFDQUMsV0FBQSxFQUNBQyxTQUFBLEVBQ0FDLFlBQUEs
RUFDQUMsYUFBQSxFQUNBQyxjQUFBLEVBQ0FDLFlBQUEsRUFDQUMsZUFBQSxFQUNBQyxnQkFBQSxF
QUNBQyxpQkFBQSxFQUNBQyxZQUFBLEVBQ0FDLFdBQUEsRUFDQUMsWUFBQSxFQUNBQyxTQUFBLEVB
Q0FDLE9BQUEsRUFDQUMsU0FBQSxFQUNBQyxTQUFBLEVBQ0FDLFFBQUEsRUFDQUMsUUFBQSxFQUNB
QyxNQUFBLEVBR0FDLGFBQUEsRUFDQUMsY0FBQSxFQUNBQyxhQUFBLEVBQ0FDLGlCQUFBLEVBQ0FD
LGtCQUFBLEVBQ0FDLGtCQUFBLEVBQ0FDLGVBQUEsRUFDQUMsYUFBQSxHQWlCQUMsR0FBQSx3QkFJ
QTU0QixRQUFBc0QsS0FBQTZ5QixHQUFBL3lCLFFBQUEsU0FBQXkxQixHQUNBRCxFQUFBeDFCLFFB
QUEsU0FBQTR5QixHQUNBRyxFQUFBSixFQUFBQyxFQUFBNkMsSUFBQTFDLEVBQUEwQyxNQWFBLElB
QUFDLElBQ0FDLFlBQ0FDLHNCQUFBLEVBQ0FDLGlCQUFBLEVBQ0FDLGlCQUFBLEVBQ0FDLHFCQUFB
LEVBQ0FDLHFCQUFBLEVBQ0FDLGtCQUFBLEdBRUFDLG9CQUNBSCxxQkFBQSxFQUNBQyxxQkFBQSxH
QUVBRyxRQUNBQyxhQUFBLEVBQ0FDLGFBQUEsRUFDQUMsYUFBQSxHQUVBQyxjQUNBQyxtQkFBQSxF
QUNBQyxtQkFBQSxFQUNBQyxtQkFBQSxHQUVBQyxZQUNBQyxpQkFBQSxFQUNBQyxpQkFBQSxFQUNB
QyxpQkFBQSxHQUVBQyxhQUNBQyxrQkFBQSxFQUNBQyxrQkFBQSxFQUNBQyxrQkFBQSxHQUVBQyxX
QUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxHQUVBQyxNQUNBQyxXQUFBLEVBQ0FD
LGFBQUEsRUFDQW5ELFlBQUEsRUFDQW9ELFVBQUEsRUFDQWxELFlBQUEsRUFDQW1ELFlBQUEsR0FF
QUMsU0FDQUMsY0FBQSxFQUNBQyxjQUFBLEVBQ0FDLGNBQUEsSUFJQUMsR0FDQWpGLG1CQUNBMkMs
OEJBR0F0NUIsR0FBQUQsUUFBQTY3QixHekRtL0xNLFNBQVM1N0IsRUFBUUQsRUFBU0gsRzBEaG9N
aEMsWUFJQSxTQUFBaThCLEdBQUFDLEVBQUFDLEdBQWlELEtBQUFELFlBQUFDLElBQTBDLFNBQUFq
NUIsV0FBQSxxQ0FGM0YsR0FBQTBELEdBQUE1RyxFQUFBLEdBSUFvTSxFQUFBcE0sRUFBQSxJQWdC
QTJKLEdBZEEzSixFQUFBLEdBY0EsV0FDQSxRQUFBMkosR0FBQWhCLEdBQ0FzekIsRUFBQTM2QixL
QUFBcUksR0FFQXJJLEtBQUE4NkIsV0FBQSxLQUNBOTZCLEtBQUErNkIsVUFBQSxLQUNBLzZCLEtB
QUFnN0IsS0FBQTN6QixFQTJFQSxNQS9EQWdCLEdBQUE5SSxVQUFBNkssUUFBQSxTQUFBM0IsRUFB
QWlDLEdBQ0ExSyxLQUFBODZCLFdBQUE5NkIsS0FBQTg2QixlQUNBOTZCLEtBQUE4NkIsV0FBQXIx
QixLQUFBZ0QsR0FDQXpJLEtBQUErNkIsVUFBQS82QixLQUFBKzZCLGNBQ0EvNkIsS0FBQSs2QixV
QUFBdDFCLEtBQUFpRixJQVdBckMsRUFBQTlJLFVBQUFnTSxVQUFBLFdBQ0EsR0FBQW5DLEdBQUFw
SixLQUFBODZCLFdBQ0FHLEVBQUFqN0IsS0FBQSs2QixVQUNBMXpCLEVBQUFySCxLQUFBZzdCLElB
Q0EsSUFBQTV4QixHQUFBNnhCLEVBQUEsQ0FDQTd4QixFQUFBOUgsU0FBQTI1QixFQUFBMzVCLE9B
QUFnRSxFQUFBLGFBQ0F0RixLQUFBODZCLFdBQUEsS0FDQTk2QixLQUFBKzZCLFVBQUEsSUFDQSxR
QUFBMTdCLEdBQUEsRUFBcUJBLEVBQUErSixFQUFBOUgsT0FBc0JqQyxJQUMzQytKLEVBQUEvSixH
QUFBSixLQUFBZzhCLEVBQUE1N0IsR0FBQWdJLEVBRUErQixHQUFBOUgsT0FBQSxFQUNBMjVCLEVB
QUEzNUIsT0FBQSxJQUlBK0csRUFBQTlJLFVBQUEyN0IsV0FBQSxXQUNBLE1BQUFsN0IsTUFBQTg2
QixXQUFBOTZCLEtBQUE4NkIsV0FBQXg1QixPQUFBLEdBR0ErRyxFQUFBOUksVUFBQTQ3QixTQUFB
LFNBQUFueUIsR0FDQWhKLEtBQUE4NkIsWUFBQTk2QixLQUFBKzZCLFlBQ0EvNkIsS0FBQTg2QixX
QUFBeDVCLE9BQUEwSCxFQUNBaEosS0FBQSs2QixVQUFBejVCLE9BQUEwSCxJQVdBWCxFQUFBOUks
VUFBQStMLE1BQUEsV0FDQXRMLEtBQUE4NkIsV0FBQSxLQUNBOTZCLEtBQUErNkIsVUFBQSxNQVFB
MXlCLEVBQUE5SSxVQUFBbU0sV0FBQSxXQUNBMUwsS0FBQXNMLFNBR0FqRCxLQUdBdkosR0FBQUQs
UUFBQWlNLEVBQUFpQixhQUFBMUQsSTFEaXBNTSxTQUFTdkosRUFBUUQsRUFBU0gsRzJENXZNaEMs
WUFhQSxTQUFBMDhCLEdBQUFocEIsR0FDQSxRQUFBaXBCLEVBQUE3N0IsZUFBQTRTLEtBR0FrcEIs
RUFBQTk3QixlQUFBNFMsS0FHQW1wQixFQUFBL3FCLEtBQUE0QixJQUNBaXBCLEVBQUFqcEIsSUFB
QSxHQUNBLElBRUFrcEIsRUFBQWxwQixJQUFBLEdBRUEsSUFHQSxRQUFBb3BCLEdBQUFycEIsRUFB
QXJCLEdBQ0EsYUFBQUEsR0FBQXFCLEVBQUFNLGtCQUFBM0IsR0FBQXFCLEVBQUFPLGlCQUFBK29C
LE1BQUEzcUIsSUFBQXFCLEVBQUFRLHlCQUFBN0IsRUFBQSxHQUFBcUIsRUFBQVMsMkJBQUE5QixL
QUFBLEVBNUJBLEdBQUE5SyxHQUFBdEgsRUFBQSxJQUlBZzlCLEdBSEFoOUIsRUFBQSxHQUNBQSxF
QUFBLEdBRUFBLEVBQUEsTUFHQTY4QixHQUZBNzhCLEVBQUEsR0FFQSxHQUFBaTlCLFFBQUEsS0FB
QTMxQixFQUFBNk0sMEJBQUEsS0FBQTdNLEVBQUErTSxvQkFBQSxRQUNBdW9CLEtBQ0FELEtBeUJB
TyxHQU9BQyxrQkFBQSxTQUFBOThCLEdBQ0EsTUFBQWlILEdBQUFFLGtCQUFBLElBQUF3MUIsRUFB
QTM4QixJQUdBKzhCLGtCQUFBLFNBQUFyNEIsRUFBQTFFLEdBQ0EwRSxFQUFBb3dCLGFBQUE3dEIs
RUFBQUUsa0JBQUFuSCxJQUdBZzlCLG9CQUFBLFdBQ0EsTUFBQS8xQixHQUFBOE0sb0JBQUEsT0FH
QWtwQixvQkFBQSxTQUFBdjRCLEdBQ0FBLEVBQUFvd0IsYUFBQTd0QixFQUFBOE0sb0JBQUEsS0FV
QW1wQix3QkFBQSxTQUFBbjdCLEVBQUFnUSxHQUNBLEdBQUFxQixHQUFBbk0sRUFBQWdNLFdBQUF4
UyxlQUFBc0IsR0FBQWtGLEVBQUFnTSxXQUFBbFIsR0FBQSxJQUNBLElBQUFxUixFQUFBLENBQ0Es
R0FBQXFwQixFQUFBcnBCLEVBQUFyQixHQUNBLFFBRUEsSUFBQXNCLEdBQUFELEVBQUFDLGFBQ0Es
T0FBQUQsR0FBQU0saUJBQUFOLEVBQUFTLDJCQUFBOUIsS0FBQSxFQUNBc0IsRUFBQSxNQUVBQSxF
QUFBLElBQUFzcEIsRUFBQTVxQixHQUNLLE1BQUE5SyxHQUFBOEwsa0JBQUFoUixHQUNMLE1BQUFn
USxFQUNBLEdBRUFoUSxFQUFBLElBQUE0NkIsRUFBQTVxQixHQUVBLE1BVUFvckIsK0JBQUEsU0FB
QXA3QixFQUFBZ1EsR0FDQSxNQUFBc3FCLEdBQUF0NkIsSUFBQSxNQUFBZ1EsRUFHQWhRLEVBQUEs
SUFBQTQ2QixFQUFBNXFCLEdBRkEsSUFZQXFyQixvQkFBQSxTQUFBMTRCLEVBQUEzQyxFQUFBZ1Es
R0FDQSxHQUFBcUIsR0FBQW5NLEVBQUFnTSxXQUFBeFMsZUFBQXNCLEdBQUFrRixFQUFBZ00sV0FB
QWxSLEdBQUEsSUFDQSxJQUFBcVIsRUFBQSxDQUNBLEdBQUFJLEdBQUFKLEVBQUFJLGNBQ0EsSUFB
QUEsRUFDQUEsRUFBQTlPLEVBQUFxTixPQUNPLElBQUEwcUIsRUFBQXJwQixFQUFBckIsR0FFUCxX
QURBOVEsTUFBQW84Qix1QkFBQTM0QixFQUFBM0MsRUFFTyxJQUFBcVIsRUFBQUssZ0JBR1AvTyxF
QUFBME8sRUFBQUcsY0FBQXhCLE1BQ08sQ0FDUCxHQUFBc0IsR0FBQUQsRUFBQUMsY0FDQWlxQixF
QUFBbHFCLEVBQUFFLGtCQUdBZ3FCLEdBQ0E1NEIsRUFBQTY0QixlQUFBRCxFQUFBanFCLEVBQUEs
R0FBQXRCLEdBQ1NxQixFQUFBTSxpQkFBQU4sRUFBQVMsMkJBQUE5QixLQUFBLEVBQ1RyTixFQUFB
b3dCLGFBQUF6aEIsRUFBQSxJQUVBM08sRUFBQW93QixhQUFBemhCLEVBQUEsR0FBQXRCLFNBR0ss
SUFBQTlLLEVBQUE4TCxrQkFBQWhSLEdBRUwsV0FEQTg2QixHQUFBVyxxQkFBQTk0QixFQUFBM0Ms
RUFBQWdRLElBZUF5ckIscUJBQUEsU0FBQTk0QixFQUFBM0MsRUFBQWdRLEdBQ0EsR0FBQXNxQixF
QUFBdDZCLEdBQUEsQ0FHQSxNQUFBZ1EsRUFDQXJOLEVBQUErNEIsZ0JBQUExN0IsR0FFQTJDLEVB
QUFvd0IsYUFBQS95QixFQUFBLEdBQUFnUSxLQW9CQTJyQix3QkFBQSxTQUFBaDVCLEVBQUEzQyxH
QUNBMkMsRUFBQSs0QixnQkFBQTE3QixJQWdCQXM3Qix1QkFBQSxTQUFBMzRCLEVBQUEzQyxHQUNB
LEdBQUFxUixHQUFBbk0sRUFBQWdNLFdBQUF4UyxlQUFBc0IsR0FBQWtGLEVBQUFnTSxXQUFBbFIs
R0FBQSxJQUNBLElBQUFxUixFQUFBLENBQ0EsR0FBQUksR0FBQUosRUFBQUksY0FDQSxJQUFBQSxF
QUNBQSxFQUFBOU8sRUFBQS9DLFlBQ08sSUFBQXlSLEVBQUFLLGdCQUFBLENBQ1AsR0FBQXpGLEdB
QUFvRixFQUFBRyxZQUNBSCxHQUFBTSxnQkFDQWhQLEVBQUFzSixJQUFBLEVBRUF0SixFQUFBc0os
R0FBQSxPQUdBdEosR0FBQSs0QixnQkFBQXJxQixFQUFBQyxtQkFFS3BNLEdBQUE4TCxrQkFBQWhS
LElBQ0wyQyxFQUFBKzRCLGdCQUFBMTdCLElBYUFoQyxHQUFBRCxRQUFBKzhCLEczRDR3TU0sU0FB
Uzk4QixFQUFRRCxHNEQzK012QixZQUVBLElBQUFvSCxJQUNBckIsb0JBQUEsRUFHQTlGLEdBQUFE
LFFBQUFvSCxHNUQyL01NLFNBQVNuSCxFQUFRRCxFQUFTSCxHNkRqZ05oQyxZQWFBLFNBQUFnK0Is
S0FDQSxHQUFBMThCLEtBQUEwWSxhQUFBMVksS0FBQTI4QixjQUFBQyxjQUFBLENBQ0E1OEIsS0FB
QTI4QixjQUFBQyxlQUFBLENBRUEsSUFBQXBtQixHQUFBeFcsS0FBQTBKLGdCQUFBOE0sTUFDQTFG
LEVBQUFzZixFQUFBRyxTQUFBL1osRUFFQSxPQUFBMUYsR0FDQStyQixFQUFBNzhCLEtBQUE4OEIs
UUFBQXRtQixFQUFBdW1CLFVBQUFqc0IsSUFrREEsUUFBQStyQixHQUFBejRCLEVBQUEyNEIsRUFB
QUMsR0FDQSxHQUFBQyxHQUFBNTlCLEVBQ0E2OUIsRUFBQTUyQixFQUFBUixvQkFBQTFCLEdBQUE4
NEIsT0FFQSxJQUFBSCxFQUFBLENBRUEsSUFEQUUsS0FDQTU5QixFQUFBLEVBQWVBLEVBQUEyOUIs
RUFBQTE3QixPQUFzQmpDLElBQ3JDNDlCLEVBQUEsR0FBQUQsRUFBQTM5QixLQUFBLENBRUEsS0FB
QUEsRUFBQSxFQUFlQSxFQUFBNjlCLEVBQUE1N0IsT0FBb0JqQyxJQUFBLENBQ25DLEdBQUE4OUIs
R0FBQUYsRUFBQXo5QixlQUFBMDlCLEVBQUE3OUIsR0FBQXlSLE1BQ0Fvc0IsR0FBQTc5QixHQUFB
ODlCLGVBQ0FELEVBQUE3OUIsR0FBQTg5QixpQkFHRyxDQUlILElBREFGLEVBQUEsR0FBQUQsRUFD
QTM5QixFQUFBLEVBQWVBLEVBQUE2OUIsRUFBQTU3QixPQUFvQmpDLElBQ25DLEdBQUE2OUIsRUFB
QTc5QixHQUFBeVIsUUFBQW1zQixFQUVBLFlBREFDLEVBQUE3OUIsR0FBQTg5QixVQUFBLEVBSUFE
LEdBQUE1N0IsU0FDQTQ3QixFQUFBLEdBQUFDLFVBQUEsSUFnRkEsUUFBQUMsR0FBQXZ2QixHQUNB
LEdBQUEySSxHQUFBeFcsS0FBQTBKLGdCQUFBOE0sTUFDQXRKLEVBQUFrakIsRUFBQUssZ0JBQUFq
YSxFQUFBM0ksRUFNQSxPQUpBN04sTUFBQTBZLGNBQ0ExWSxLQUFBMjhCLGNBQUFDLGVBQUEsR0FF
QTkwQixFQUFBMkMsS0FBQWl5QixFQUFBMThCLE1BQ0FrTixFQXZMQSxHQUFBckMsR0FBQW5NLEVB
QUEsR0FFQTB4QixFQUFBMXhCLEVBQUEsSUFDQTRILEVBQUE1SCxFQUFBLEdBQ0FvSixFQUFBcEos
RUFBQSxHQUtBMitCLEdBSEEzK0IsRUFBQSxJQUdBLEdBMEdBNCtCLEdBQ0FDLGFBQUEsU0FBQW41
QixFQUFBb1MsR0FDQSxNQUFBM0wsTUFBcUIyTCxHQUNyQjJZLFNBQUEvcUIsRUFBQXU0QixjQUFB
eE4sU0FDQXJlLE1BQUFwUSxVQUlBODhCLGFBQUEsU0FBQXA1QixFQUFBb1MsR0FLQSxHQUFBMUYs
R0FBQXNmLEVBQUFHLFNBQUEvWixFQUNBcFMsR0FBQXU0QixlQUNBQyxlQUFBLEVBQ0FhLGFBQUEs
TUFBQTNzQixJQUFBMEYsRUFBQWtuQixhQUNBQyxVQUFBLEtBQ0F4TyxTQUFBaU8sRUFBQW5tQixL
QUFBN1MsR0FDQXc1QixZQUFBZCxRQUFBdG1CLEVBQUF1bUIsV0FHQXI4QixTQUFBOFYsRUFBQTFG
LE9BQUFwUSxTQUFBOFYsRUFBQWtuQixjQUFBTCxJQUVBQSxHQUFBLElBSUFRLHNCQUFBLFNBQUF6
NUIsR0FHQSxNQUFBQSxHQUFBdTRCLGNBQUFjLGNBR0FLLGtCQUFBLFNBQUExNUIsR0FDQSxHQUFB
b1MsR0FBQXBTLEVBQUFzRixnQkFBQThNLEtBSUFwUyxHQUFBdTRCLGNBQUFjLGFBQUEvOEIsTUFF
QSxJQUFBazlCLEdBQUF4NUIsRUFBQXU0QixjQUFBaUIsV0FDQXg1QixHQUFBdTRCLGNBQUFpQixZ
QUFBZCxRQUFBdG1CLEVBQUF1bUIsU0FFQSxJQUFBanNCLEdBQUFzZixFQUFBRyxTQUFBL1osRUFD
QSxPQUFBMUYsR0FDQTFNLEVBQUF1NEIsY0FBQUMsZUFBQSxFQUNBQyxFQUFBejRCLEVBQUEwNEIs
UUFBQXRtQixFQUFBdW1CLFVBQUFqc0IsSUFDSzhzQixJQUFBZCxRQUFBdG1CLEVBQUF1bUIsWUFF
TCxNQUFBdm1CLEVBQUFrbkIsYUFDQWIsRUFBQXo0QixFQUFBMDRCLFFBQUF0bUIsRUFBQXVtQixV
QUFBdm1CLEVBQUFrbkIsY0FHQWIsRUFBQXo0QixFQUFBMDRCLFFBQUF0bUIsRUFBQXVtQixVQUFB
dm1CLEVBQUF1bUIsWUFBQSxNQWlCQWorQixHQUFBRCxRQUFBeStCLEc3RGloTk0sU0FBU3grQixF
QUFRRCxHOEQ3c052QixZQUVBLElBQUFrL0IsR0FFQUMsR0FDQUMsNEJBQUEsU0FBQWpuQixHQUNB
K21CLEVBQUEvbUIsSUFJQWtuQixHQUNBQyxPQUFBLFNBQUFDLEdBQ0EsTUFBQUwsR0FBQUssSUFJ
QUYsR0FBQTV4QixVQUFBMHhCLEVBRUFsL0IsRUFBQUQsUUFBQXEvQixHOUQ2dE5NLFNBQVNwL0Is
RUFBUUQsRytEOXVOdkIsWUFFQSxJQUFBMEssSUFJQUMsb0JBQUEsRUFHQTFLLEdBQUFELFFBQUEw
SyxHL0Qrdk5NLFNBQVN6SyxFQUFRRCxFQUFTSCxHZ0V6d05oQyxZQTRCQSxTQUFBMi9CLEdBQUE1
bkIsR0FFQSxNQURBNm5CLEdBQUEsT0FBQWg1QixFQUFBLE1BQUFtUixFQUFBOU0sTUFDQSxHQUFB
MjBCLEdBQUE3bkIsR0FPQSxRQUFBOG5CLEdBQUFwdkIsR0FDQSxVQUFBcXZCLEdBQUFydkIsR0FP
QSxRQUFBc3ZCLEdBQUF6NkIsR0FDQSxNQUFBQSxhQUFBdzZCLEdBNUNBLEdBQUFsNUIsR0FBQTVH
LEVBQUEsR0FJQTQvQixHQUZBNS9CLEVBQUEsR0FFQSxNQUNBOC9CLEVBQUEsS0FFQUUsR0FHQUMs
NEJBQUEsU0FBQUMsR0FDQU4sRUFBQU0sR0FJQUMseUJBQUEsU0FBQUQsR0FDQUosRUFBQUksSUEr
QkFFLEdBQ0FULDBCQUNBRSx3QkFDQUUsa0JBQ0FueUIsVUFBQW95QixFQUdBNS9CLEdBQUFELFFB
QUFpZ0MsR2hFeXhOTSxTQUFTaGdDLEVBQVFELEVBQVNILEdpRWoxTmhDLFlBUUEsU0FBQXFnQyxH
QUFBdDdCLEdBQ0EsTUFBQXU3QixHQUFBdjRCLFNBQUF3NEIsZ0JBQUF4N0IsR0FQQSxHQUFBeTdC
LEdBQUF4Z0MsRUFBQSxLQUVBc2dDLEVBQUF0Z0MsRUFBQSxLQUNBbTJCLEVBQUFuMkIsRUFBQSxJ
QUNBcTJCLEVBQUFyMkIsRUFBQSxJQVlBeWdDLEdBQ0FDLHlCQUFBLFNBQUFDLEdBQ0EsR0FBQXR2
QixHQUFBc3ZCLEtBQUF0dkIsVUFBQXN2QixFQUFBdHZCLFNBQUFXLGFBQ0EsT0FBQVgsS0FBQSxV
QUFBQSxHQUFBLFNBQUFzdkIsRUFBQTExQixNQUFBLGFBQUFvRyxHQUFBLFNBQUFzdkIsRUFBQUMs
a0JBR0FDLHdCQUFBLFdBQ0EsR0FBQUMsR0FBQXpLLEdBQ0EsUUFDQXlLLGNBQ0FDLGVBQUFOLEVB
QUFDLHlCQUFBSSxHQUFBTCxFQUFBTyxhQUFBRixHQUFBLE9BU0FHLGlCQUFBLFNBQUFDLEdBQ0Es
R0FBQUMsR0FBQTlLLElBQ0ErSyxFQUFBRixFQUFBSixZQUNBTyxFQUFBSCxFQUFBSCxjQUNBSSxL
QUFBQyxHQUFBZixFQUFBZSxLQUNBWCxFQUFBQyx5QkFBQVUsSUFDQVgsRUFBQWEsYUFBQUYsRUFB
QUMsR0FFQWxMLEVBQUFpTCxLQVVBSixhQUFBLFNBQUFPLEdBQ0EsR0FBQUMsRUFFQSxzQkFBQUQs
R0FFQUMsR0FDQUMsTUFBQUYsRUFBQUcsZUFDQUMsSUFBQUosRUFBQUssa0JBRUssSUFBQTc1QixT
QUFBeTVCLFdBQUFELEVBQUFsd0IsVUFBQSxVQUFBa3dCLEVBQUFsd0IsU0FBQVcsY0FBQSxDQUVM
LEdBQUE2dkIsR0FBQTk1QixTQUFBeTVCLFVBQUFNLGFBR0FELEdBQUFFLGtCQUFBUixJQUNBQyxH
QUNBQyxPQUFBSSxFQUFBRyxVQUFBLGFBQUFULEVBQUFudkIsTUFBQXhQLFFBQ0ErK0IsS0FBQUUs
RUFBQUksUUFBQSxhQUFBVixFQUFBbnZCLE1BQUF4UCxjQUtBNCtCLEdBQUFoQixFQUFBMEIsV0FB
QVgsRUFHQSxPQUFBQyxLQUF5QkMsTUFBQSxFQUFBRSxJQUFBLElBU3pCTCxhQUFBLFNBQUFDLEVB
QUFZLEdBQ0EsR0FBQVYsR0FBQVUsRUFBQVYsTUFDQUUsRUFBQVEsRUFBQVIsR0FLQSxJQUpBMy9C
LFNBQUEyL0IsSUFDQUEsRUFBQUYsR0FHQSxrQkFBQUYsR0FDQUEsRUFBQUcsZUFBQUQsRUFDQUYs
RUFBQUssYUFBQW42QixLQUFBMjZCLElBQUFULEVBQUFKLEVBQUFudkIsTUFBQXhQLFlBQ0ssSUFB
QW1GLFNBQUF5NUIsV0FBQUQsRUFBQWx3QixVQUFBLFVBQUFrd0IsRUFBQWx3QixTQUFBVyxjQUFB
LENBQ0wsR0FBQTZ2QixHQUFBTixFQUFBYyxpQkFDQVIsR0FBQVMsVUFBQSxHQUNBVCxFQUFBRyxV
QUFBLFlBQUFQLEdBQ0FJLEVBQUFJLFFBQUEsWUFBQU4sRUFBQUYsR0FDQUksRUFBQVUsYUFFQS9C
LEdBQUFnQyxXQUFBakIsRUFBQVksSUFLQS9oQyxHQUFBRCxRQUFBc2dDLEdqRWkyTk0sU0FBU3Jn
QyxFQUFRRCxFQUFTSCxHa0VoOU5oQyxZQTBDQSxTQUFBeWlDLEdBQUFDLEVBQUFDLEdBRUEsT0FE
QUMsR0FBQW43QixLQUFBMjZCLElBQUFNLEVBQUE5L0IsT0FBQSsvQixFQUFBLy9CLFFBQ0FqQyxF
QUFBLEVBQWlCQSxFQUFBaWlDLEVBQVlqaUMsSUFDN0IsR0FBQStoQyxFQUFBN0wsT0FBQWwyQixL
QUFBZ2lDLEVBQUE5TCxPQUFBbDJCLEdBQ0EsTUFBQUEsRUFHQSxPQUFBK2hDLEdBQUE5L0IsU0FB
QSsvQixFQUFBLy9CLFVBQUFnZ0MsRUFRQSxRQUFBQyxHQUFBQyxHQUNBLE1BQUFBLEdBSUFBLEVB
QUE3OUIsV0FBQTg5QixFQUNBRCxFQUFBdkMsZ0JBRUF1QyxFQUFBeDhCLFdBTkEsS0FVQSxRQUFB
MDhCLEdBQUFqK0IsR0FJQSxNQUFBQSxHQUFBRyxjQUFBSCxFQUFBRyxhQUFBQyxJQUFBLEdBV0Es
UUFBQTg5QixHQUFBQyxFQUFBSixFQUFBejRCLEVBQUE4NEIsRUFBQW4zQixHQUNBLEdBQUFwQixF
QUNBLElBQUFDLEVBQUFDLG1CQUFBLENBQ0EsR0FBQXM0QixHQUFBRixFQUFBbDRCLGdCQUFBOE0s
TUFBQXVyQixNQUNBcDRCLEVBQUFtNEIsRUFBQW40QixJQUNBTCxHQUFBLGlDQUFBSyxPQUFBd25C
LGFBQUF4bkIsRUFBQTdJLE1BQ0FnSixRQUFBQyxLQUFBVCxHQUdBLEdBQUFtSyxHQUFBekosRUFB
QW9KLGVBQUF3dUIsRUFBQTc0QixFQUFBLEtBQUFpNUIsRUFBQUosRUFBQUosR0FBQTkyQixFQUFB
LEVBR0FwQixJQUNBUSxRQUFBSSxRQUFBWixHQUdBczRCLEVBQUExOUIsbUJBQUErOUIsaUJBQUFM
LEVBQ0FNLEVBQUFDLG9CQUFBMXVCLEVBQUErdEIsRUFBQUksRUFBQUMsRUFBQTk0QixHQVVBLFFB
QUFxNUIsR0FBQUMsRUFBQWIsRUFBQUssRUFBQW4zQixHQUNBLEdBQUEzQixHQUFBakIsRUFBQUMs
MEJBQUFPLFdBRUF1NUIsR0FBQVMsRUFBQUMsaUJBQ0F4NUIsR0FBQTZDLFFBQUErMUIsRUFBQSxL
QUFBVSxFQUFBYixFQUFBejRCLEVBQUE4NEIsRUFBQW4zQixHQUNBNUMsRUFBQUMsMEJBQUE0RCxR
QUFBNUMsR0FZQSxRQUFBeTVCLEdBQUE1SCxFQUFBNEcsRUFBQTF0QixHQWNBLElBVkE5SixFQUFB
NkosaUJBQUErbUIsRUFBQTltQixHQUtBMHRCLEVBQUE3OUIsV0FBQTg5QixJQUNBRCxJQUFBdkMs
aUJBSUF1QyxFQUFBaUIsV0FDQWpCLEVBQUE3YSxZQUFBNmEsRUFBQWlCLFdBY0EsUUFBQUMsR0FB
QWxCLEdBQ0EsR0FBQW1CLEdBQUFwQixFQUFBQyxFQUNBLElBQUFtQixFQUFBLENBQ0EsR0FBQXYr
QixHQUFBa0MsRUFBQVQsb0JBQUE4OEIsRUFDQSxVQUFBditCLE1BQUEyQixjQXdCQSxRQUFBNjhC
LEdBQUFuL0IsR0FDQSxTQUFBQSxLQUFBRSxXQUFBd00sR0FBQTFNLEVBQUFFLFdBQUE4OUIsR0FB
QWgrQixFQUFBRSxXQUFBeU0sR0FjQSxRQUFBeXlCLEdBQUFyQixHQUNBLEdBQUFtQixHQUFBcEIs
RUFBQUMsR0FDQXNCLEVBQUFILEdBQUFyOEIsRUFBQVQsb0JBQUE4OEIsRUFDQSxPQUFBRyxPQUFB
LzhCLFlBQUErOEIsRUFBQSxLQUdBLFFBQUFDLEdBQUF2QixHQUNBLEdBQUF0TSxHQUFBMk4sRUFB
QXJCLEVBQ0EsT0FBQXRNLEtBQUE4TixtQkFBQWYsaUJBQUEsS0E5TUEsR0FBQTM4QixHQUFBNUcs
RUFBQSxHQUVBc1IsRUFBQXRSLEVBQUEsSUFDQXNILEVBQUF0SCxFQUFBLElBQ0F5VyxFQUFBelcs
RUFBQSxJQUNBK2lCLEVBQUEvaUIsRUFBQSxJQUVBNEgsR0FEQTVILEVBQUEsSUFDQUEsRUFBQSxJ
QUNBc2pDLEVBQUF0akMsRUFBQSxLQUNBNGpDLEVBQUE1akMsRUFBQSxLQUNBNkssRUFBQTdLLEVB
QUEsSUFDQWtkLEVBQUFsZCxFQUFBLElBRUF1a0MsR0FEQXZrQyxFQUFBLEdBQ0FBLEVBQUEsTUFD
QXNMLEVBQUF0TCxFQUFBLElBQ0E2eUIsRUFBQTd5QixFQUFBLElBQ0FvSixFQUFBcEosRUFBQSxH
QUVBa2UsRUFBQWxlLEVBQUEsSUFDQXdrQyxFQUFBeGtDLEVBQUEsSUFFQXdRLEdBREF4USxFQUFB
LEdBQ0FBLEVBQUEsS0FDQXUxQixFQUFBdjFCLEVBQUEsSUFHQW1GLEdBRkFuRixFQUFBLEdBRUFz
SCxFQUFBRSxtQkFDQWk5QixFQUFBbjlCLEVBQUE4TSxvQkFFQTNDLEVBQUEsRUFDQXN4QixFQUFB
LEVBQ0FyeEIsRUFBQSxHQUVBZ3pCLEtBc0xBQyxFQUFBLEVBQ0FDLEVBQUEsV0FDQXRqQyxLQUFB
dWpDLE9BQUFGLElBRUFDLEdBQUEvakMsVUFBQWlrQyxvQkFJQUYsRUFBQS9qQyxVQUFBa2tDLE9B
QUEsV0FDQSxNQUFBempDLE1BQUF3VyxNQUFBdXJCLE9BRUF1QixFQUFBMTVCLHdCQUFBLENBb0JB
LElBQUFzNEIsSUFDQW9CLGtCQUtBSSx3QkFBQU4sRUFVQU8sY0FBQSxTQUFBbkMsRUFBQW9DLEdB
Q0FBLEtBVUFDLHFCQUFBLFNBQUFDLEVBQUE3dkIsRUFBQW9lLEVBQUFtUCxFQUFBLzRCLEdBUUEs
TUFQQXk1QixHQUFBeUIsY0FBQW5DLEVBQUEsV0FDQWpRLEVBQUFhLHVCQUFBMFIsRUFBQTd2QixF
QUFBb2UsR0FDQTVwQixHQUNBOG9CLEVBQUFJLHdCQUFBbVMsRUFBQXI3QixLQUlBcTdCLEdBV0FD
LHdCQUFBLFNBQUE5dkIsRUFBQXV0QixFQUFBSyxFQUFBbjNCLEdBTUFrNEIsRUFBQXBCLEdBQUEs
T0FBQWw4QixFQUFBLE1BRUFtYyxFQUFBc0IsNkJBQ0EsSUFBQXNmLEdBQUFhLEVBQUFqdkIsR0FB
QSxFQU1Bbk0sR0FBQVUsZUFBQTQ1QixFQUFBQyxFQUFBYixFQUFBSyxFQUFBbjNCLEVBRUEsSUFB
QXM1QixHQUFBM0IsRUFBQTRCLFVBQUFWLE1BR0EsT0FGQUgsR0FBQVksR0FBQTNCLEVBRUFBLEdB
Z0JBNkIsMkJBQUEsU0FBQUMsRUFBQWx3QixFQUFBdXRCLEVBQUEvNEIsR0FFQSxNQURBLE9BQUEw
N0IsR0FBQXZvQixFQUFBSSxJQUFBbW9CLEdBQUEsT0FBQTcrQixFQUFBLE1BQ0E0OEIsRUFBQWtD
LDRCQUFBRCxFQUFBbHdCLEVBQUF1dEIsRUFBQS80QixJQUdBMjdCLDRCQUFBLFNBQUFELEVBQUFs
d0IsRUFBQXV0QixFQUFBLzRCLEdBQ0E4b0IsRUFBQUcsaUJBQUFqcEIsRUFBQSxtQkFDQTBNLEVB
QUFPLGVBQUF6QixHQUNBLE9BQUEzTyxFQUFBLHFCQUFBMk8sR0FBQSx5R0FBQUEsR0FBQSx3RkFB
QUEsR0FBQXZULFNBQUF1VCxFQUFBdUMsTUFBQSxxRkFJQSxJQUlBNmIsR0FKQWdTLEVBQUFsdkIs
RUFBQXpPLGNBQUE0OEIsR0FDQXZCLE1BQUE5dEIsR0FJQSxJQUFBa3dCLEVBQUEsQ0FDQSxHQUFB
cHBCLEdBQUFhLEVBQUFHLElBQUFvb0IsRUFDQTlSLEdBQUF0WCxFQUFBdXBCLHFCQUFBdnBCLEVB
QUE1RyxjQUVBa2UsR0FBQXpWLENBR0EsSUFBQWtuQixHQUFBZixFQUFBdkIsRUFFQSxJQUFBc0Ms
RUFBQSxDQUNBLEdBQUFTLEdBQUFULEVBQUFwNkIsZ0JBQ0F3SyxFQUFBcXdCLEVBQUEvdEIsTUFB
QXVyQixLQUNBLElBQUE5TixFQUFBL2YsRUFBQUQsR0FBQSxDQUNBLEdBQUF1d0IsR0FBQVYsRUFB
QTUvQixtQkFBQW1HLG9CQUNBbzZCLEVBQUFoOEIsR0FBQSxXQUNBQSxFQUFBeEosS0FBQXVsQyxH
QUdBLE9BREF0QyxHQUFBMkIscUJBQUFDLEVBQUFPLEVBQUFoUyxFQUFBbVAsRUFBQWlELEdBQ0FE
LEVBRUF0QyxFQUFBd0MsdUJBQUFsRCxHQUlBLEdBQUFtRCxHQUFBcEQsRUFBQUMsR0FDQW9ELEVB
QUFELEtBQUFqRCxFQUFBaUQsR0FDQUUsRUFBQW5DLEVBQUFsQixHQWlCQUssRUFBQStDLElBQUFk
LElBQUFlLEVBQ0E3Z0MsRUFBQWsrQixFQUFBNkIsd0JBQUFNLEVBQUE3QyxFQUFBSyxFQUFBeFAs
R0FBQW51QixtQkFBQW1HLG1CQUlBLE9BSEE1QixJQUNBQSxFQUFBeEosS0FBQStFLEdBRUFBLEdB
Z0JBeS9CLE9BQUEsU0FBQXh2QixFQUFBdXRCLEVBQUEvNEIsR0FDQSxNQUFBeTVCLEdBQUFrQyw0
QkFBQSxLQUFBbndCLEVBQUF1dEIsRUFBQS80QixJQVdBaThCLHVCQUFBLFNBQUFsRCxHQU9Bb0Is
RUFBQXBCLEdBQUEsT0FBQWw4QixFQUFBLEtBTUEsSUFBQXcrQixHQUFBZixFQUFBdkIsRUFDQSxL
QUFBc0MsRUFBQSxDQUdBcEIsRUFBQWxCLEdBR0EsSUFBQUEsRUFBQTc5QixVQUFBNjlCLEVBQUFz
RCxhQUFBM0IsRUFNQSxVQUlBLGFBRkFDLEdBQUFVLEVBQUFHLFVBQUFWLFFBQ0F6N0IsRUFBQVUs
ZUFBQWc2QixFQUFBc0IsRUFBQXRDLEdBQUEsSUFDQSxHQUdBVyxvQkFBQSxTQUFBMXVCLEVBQUEr
dEIsRUFBQTVHLEVBQUFpSCxFQUFBOTRCLEdBR0EsR0FGQTY1QixFQUFBcEIsR0FBQSxPQUFBbDhC
LEVBQUEsTUFFQXU4QixFQUFBLENBQ0EsR0FBQWtELEdBQUF4RCxFQUFBQyxFQUNBLElBQUF5QixF
QUFBK0IsZUFBQXZ4QixFQUFBc3hCLEdBRUEsV0FEQXorQixHQUFBbkMsYUFBQXkyQixFQUFBbUss
RUFHQSxJQUFBRSxHQUFBRixFQUFBbmhDLGFBQUFxL0IsRUFBQWlDLG1CQUNBSCxHQUFBdkksZ0JB
QUF5RyxFQUFBaUMsbUJBRUEsSUFBQUMsR0FBQUosRUFBQUssU0FDQUwsR0FBQWxSLGFBQUFvUCxF
QUFBaUMsbUJBQUFELEVBRUEsSUFBQUksR0FBQTV4QixFQW9CQTZ4QixFQUFBbkUsRUFBQWtFLEVB
QUFGLEdBQ0FJLEVBQUEsYUFBQUYsRUFBQXJmLFVBQUFzZixFQUFBLEdBQUFBLEVBQUEsbUJBQUFI
LEVBQUFuZixVQUFBc2YsRUFBQSxHQUFBQSxFQUFBLEdBRUE5RCxHQUFBNzlCLFdBQUE4OUIsRUFB
QW44QixFQUFBLEtBQUFpZ0MsR0FBQSxPQVVBLEdBRkEvRCxFQUFBNzlCLFdBQUE4OUIsRUFBQW44
QixFQUFBLGFBRUF5RCxFQUFBdzVCLGlCQUFBLENBQ0EsS0FBQWYsRUFBQWlCLFdBQ0FqQixFQUFB
N2EsWUFBQTZhLEVBQUFpQixVQUVBenlCLEdBQUFoQixpQkFBQXd5QixFQUFBL3RCLEVBQUEsVUFF
QXZFLEdBQUFzeUIsRUFBQS90QixHQUNBbk4sRUFBQW5DLGFBQUF5MkIsRUFBQTRHLEVBQUF4OEIs
YUFnQkFsRyxHQUFBRCxRQUFBcWpDLEdsRWcrTk0sU0FBU3BqQyxFQUFRRCxFQUFTSCxHbUU3K09o
QyxZQUVBLElBQUE0RyxHQUFBNUcsRUFBQSxHQUVBeVcsRUFBQXpXLEVBQUEsSUFJQThtQyxHQUZB
OW1DLEVBQUEsSUFHQSttQyxLQUFBLEVBQ0FDLFVBQUEsRUFDQUMsTUFBQSxFQUVBQyxRQUFBLFNB
QUFuaUMsR0FDQSxjQUFBQSxRQUFBLEVBQ0EraEMsRUFBQUcsTUFDS3h3QixFQUFBTyxlQUFBalMs
R0FDTCxrQkFBQUEsR0FBQWtHLEtBQ0E2N0IsRUFBQUUsVUFFQUYsRUFBQUMsU0FHQW5nQyxHQUFB
LEtBQUE3QixLQUlBM0UsR0FBQUQsUUFBQTJtQyxHbkU4L09NLFNBQVMxbUMsRUFBUUQsR29FMWhQ
dkIsWUFFQSxJQUFBdWUsSUFDQWtILGtCQUFBLEVBRUFFLGlCQUFBLEVBRUF2QixvQkFBQSxTQUFB
NGlCLEdBQ0F6b0IsRUFBQWtILGtCQUFBdWhCLEVBQUFwZCxFQUNBckwsRUFBQW9ILGlCQUFBcWhC
LEVBQUFuZCxHQUlBNXBCLEdBQUFELFFBQUF1ZSxHcEUwaVBNLFNBQVN0ZSxFQUFRRCxFQUFTSCxH
cUV0alBoQyxZQW1CQSxTQUFBc1osR0FBQXBKLEVBQUFrM0IsR0FHQSxNQUZBLE9BQUFBLEVBQUF4
Z0MsRUFBQSxhQUVBLE1BQUFzSixFQUNBazNCLEVBS0FodkIsTUFBQXdSLFFBQUExWixHQUNBa0ks
TUFBQXdSLFFBQUF3ZCxJQUNBbDNCLEVBQUFuSixLQUFBMUYsTUFBQTZPLEVBQUFrM0IsR0FDQWwz
QixJQUVBQSxFQUFBbkosS0FBQXFnQyxHQUNBbDNCLEdBR0FrSSxNQUFBd1IsUUFBQXdkLElBRUFs
M0IsR0FBQTNPLE9BQUE2bEMsSUFHQWwzQixFQUFBazNCLEdBeENBLEdBQUF4Z0MsR0FBQTVHLEVB
QUEsRUFFQUEsR0FBQSxFQXlDQUksR0FBQUQsUUFBQW1aLEdyRXVrUE0sU0FBU2xaLEVBQVFELEdz
RXBuUHZCLFlBVUEsU0FBQW9aLEdBQUE4dEIsRUFBQUMsRUFBQWw2QixHQUNBZ0wsTUFBQXdSLFFB
QUF5ZCxHQUNBQSxFQUFBcmpDLFFBQUFzakMsRUFBQWw2QixHQUNHaTZCLEdBQ0hDLEVBQUEvbUMs
S0FBQTZNLEVBQUFpNkIsR0FJQWpuQyxFQUFBRCxRQUFBb1osR3RFcW9QTSxTQUFTblosRUFBUUQs
RUFBU0gsR3VFeHBQaEMsWUFJQSxTQUFBdW5DLEdBQUE3aEMsR0FHQSxJQUZBLEdBQUF1RixJQUVB
QSxFQUFBdkYsRUFBQThoQyxxQkFBQVYsRUFBQUUsV0FDQXRoQyxJQUFBRixrQkFHQSxPQUFBeUYs
S0FBQTY3QixFQUFBQyxLQUNBcmhDLEVBQUFGLG1CQUNHeUYsSUFBQTY3QixFQUFBRyxNQUNILEtB
REcsT0FYSCxHQUFBSCxHQUFBOW1DLEVBQUEsR0FnQkFJLEdBQUFELFFBQUFvbkMsR3ZFd3FQTSxT
QUFTbm5DLEVBQVFELEVBQVNILEd3RTFyUGhDLFlBWUEsU0FBQXluQyxLQU1BLE9BTEFDLEdBQUF6
L0IsRUFBQUosWUFHQTYvQixFQUFBLGVBQUEzL0IsVUFBQXc0QixnQkFBQSwyQkFFQW1ILEVBaEJB
LEdBQUF6L0IsR0FBQWpJLEVBQUEsR0FFQTBuQyxFQUFBLElBaUJBdG5DLEdBQUFELFFBQUFzbkMs
R3hFMHNQTSxTQUFTcm5DLEVBQVFELEVBQVNILEd5RS90UGhDLFlBSUEsU0FBQTJuQyxHQUFBaEgs
R0FDQSxHQUFBMTFCLEdBQUEwMUIsRUFBQTExQixLQUNBb0csRUFBQXN2QixFQUFBdHZCLFFBQ0Es
T0FBQUEsSUFBQSxVQUFBQSxFQUFBVyxnQkFBQSxhQUFBL0csR0FBQSxVQUFBQSxHQUdBLFFBQUEy
OEIsR0FBQWxpQyxHQUNBLE1BQUFBLEdBQUF1NEIsY0FBQTRKLGFBR0EsUUFBQUMsR0FBQXBpQyxF
QUFBcWlDLEdBQ0FyaUMsRUFBQXU0QixjQUFBNEosYUFBQUUsRUFHQSxRQUFBQyxHQUFBdGlDLFNB
Q0FBLEdBQUF1NEIsY0FBQTRKLGFBR0EsUUFBQUksR0FBQWxqQyxHQUNBLEdBQUFxTixFQUlBLE9B
SEFyTixLQUNBcU4sRUFBQXUxQixFQUFBNWlDLEdBQUEsR0FBQUEsRUFBQTRyQixRQUFBNXJCLEVB
QUFxTixPQUVBQSxFQXpCQSxHQUFBeEssR0FBQTVILEVBQUEsR0E0QkFrb0MsR0FFQUMsb0JBQUEs
U0FBQXBqQyxHQUNBLE1BQUE2aUMsR0FBQWhnQyxFQUFBVCxvQkFBQXBDLEtBSUFxakMsTUFBQSxT
QUFBMWlDLEdBQ0EsSUFBQWtpQyxFQUFBbGlDLEdBQUEsQ0FJQSxHQUFBWCxHQUFBNkMsRUFBQVIs
b0JBQUExQixHQUNBMmlDLEVBQUFWLEVBQUE1aUMsR0FBQSxrQkFDQXVqQyxFQUFBMW5DLE9BQUEy
bkMseUJBQUF4akMsRUFBQXFKLFlBQUF2TixVQUFBd25DLEdBRUFHLEVBQUEsR0FBQXpqQyxFQUFB
c2pDLEVBTUF0akMsR0FBQWpFLGVBQUF1bkMsSUFBQSxrQkFBQUMsR0FBQWpyQixLQUFBLGtCQUFB
aXJCLEdBQUEvcUIsTUFJQTNjLE9BQUE2bkMsZUFBQTFqQyxFQUFBc2pDLEdBQ0FLLFdBQUFKLEVB
QUFJLFdBQ0FDLGNBQUEsRUFDQXRyQixJQUFBLFdBQ0EsTUFBQWlyQixHQUFBanJCLElBQUE5YyxL
QUFBZSxPQUVBaWMsSUFBQSxTQUFBbkwsR0FDQW8yQixFQUFBLEdBQUFwMkIsRUFDQWsyQixFQUFB
L3FCLElBQUFoZCxLQUFBZSxLQUFBOFEsTUFJQTAxQixFQUFBcGlDLEdBQ0Ftc0IsU0FBQSxXQUNB
LE1BQUEyVyxJQUVBSSxTQUFBLFNBQUF4MkIsR0FDQW8yQixFQUFBLEdBQUFwMkIsR0FFQXkyQixh
QUFBLFdBQ0FiLEVBQUF0aUMsU0FDQVgsR0FBQXNqQyxTQUtBUyxxQkFBQSxTQUFBcGpDLEdBQ0Es
SUFBQUEsRUFDQSxRQUVBLElBQUFxaUMsR0FBQUgsRUFBQWxpQyxFQUVBLEtBQUFxaUMsRUFFQSxN
QURBRyxHQUFBRSxNQUFBMWlDLElBQ0EsQ0FHQSxJQUFBcWpDLEdBQUFoQixFQUFBbFcsV0FDQW1Y
LEVBQUFmLEVBQUFyZ0MsRUFBQVIsb0JBQUExQixHQUVBLE9BQUFzakMsS0FBQUQsSUFDQWhCLEVB
QUFhLFNBQUFJLElBQ0EsSUFLQUgsYUFBQSxTQUFBbmpDLEdBQ0EsR0FBQXFpQyxHQUFBSCxFQUFB
bGlDLEVBQ0FxaUMsSUFDQUEsRUFBQWMsZ0JBS0F6b0MsR0FBQUQsUUFBQStuQyxHekUrdVBNLFNB
QVM5bkMsRUFBUUQsRUFBU0gsRzBFOTFQaEMsWUFrQkEsU0FBQTR3QixHQUFBL1ksR0FDQSxHQUFB
QSxFQUFBLENBQ0EsR0FBQXpWLEdBQUF5VixFQUFBMU0sU0FDQSxJQUFBL0ksRUFDQSxzQ0FBQUEs
RUFBQSxLQUdBLFNBVUEsUUFBQTZtQyxHQUFBaCtCLEdBQ0Esd0JBQUFBLElBQUEsbUJBQUFBLEdB
QUFwSyxXQUFBLGtCQUFBb0ssR0FBQXBLLFVBQUE2VCxnQkFBQSxrQkFBQXpKLEdBQUFwSyxVQUFB
eVUsaUJBV0EsUUFBQWt2QixHQUFBei9CLEVBQUFta0MsR0FDQSxHQUFBaE4sRUFFQSxXQUFBbjNC
LFFBQUEsRUFDQW0zQixFQUFBc0QsRUFBQUMsT0FBQStFLE9BQ0csb0JBQUF6L0IsR0FBQSxDQUNI
LEdBQUFnVCxHQUFBaFQsRUFDQWtHLEVBQUE4TSxFQUFBOU0sSUFDQSxzQkFBQUEsSUFBQSxnQkFB
QUEsR0FBQSxDQUNBLEdBQUFrK0IsR0FBQSxFQU1BQSxJQUFBdlksRUFBQTdZLEVBQUFFLFFBQ0Fy
UixFQUFBLFlBQUFxRSxhQUFBaytCLEdBSUEsZ0JBQUFweEIsR0FBQTlNLEtBQ0FpeEIsRUFBQWtF
LEVBQUFULHdCQUFBNW5CLEdBQ0treEIsRUFBQWx4QixFQUFBOU0sT0FJTGl4QixFQUFBLEdBQUFu
a0IsR0FBQTlNLEtBQUE4TSxHQUdBbWtCLEVBQUFobkIsY0FDQWduQixFQUFBaG5CLFlBQUFnbkIs
RUFBQWtOLGdCQUdBbE4sRUFBQSxHQUFBbU4sR0FBQXR4QixPQUVHLGdCQUFBaFQsSUFBQSxnQkFB
QUEsR0FDSG0zQixFQUFBa0UsRUFBQVAsc0JBQUE5NkIsR0FFQTZCLEVBQUEsWUFBQTdCLEdBeUJB
LE9BZkFtM0IsR0FBQW9OLFlBQUEsRUFDQXBOLEVBQUFxTixZQUFBLEtBY0FyTixFQTVHQSxHQUFB
dDFCLEdBQUE1RyxFQUFBLEdBQ0FtTSxFQUFBbk0sRUFBQSxHQUVBd3BDLEVBQUF4cEMsRUFBQSxL
QUNBdy9CLEVBQUF4L0IsRUFBQSxJQUNBb2dDLEVBQUFwZ0MsRUFBQSxJQU9BcXBDLEdBTEFycEMs
RUFBQSxLQUNBQSxFQUFBLEdBQ0FBLEVBQUEsR0FHQSxTQUFBK1gsR0FDQXpXLEtBQUFtb0MsVUFB
QTF4QixJQWtHQTVMLEdBQUFrOUIsRUFBQXhvQyxVQUFBMm9DLEdBQ0FFLDJCQUFBbEYsSUFHQXBr
QyxFQUFBRCxRQUFBcWtDLEcxRTgyUE0sU0FBU3BrQyxFQUFRRCxHMkVsK1B2QixZQXdCQSxTQUFB
d3BDLEdBQUFoSixHQUNBLEdBQUF0dkIsR0FBQXN2QixLQUFBdHZCLFVBQUFzdkIsRUFBQXR2QixT
QUFBVyxhQUVBLGlCQUFBWCxJQUNBdTRCLEVBQUFqSixFQUFBMTFCLE1BR0EsYUFBQW9HLEVBekJB
LEdBQUF1NEIsSUFDQUMsT0FBQSxFQUNBQyxNQUFBLEVBQ0FDLFVBQUEsRUFDQUMsa0JBQUEsRUFD
QUMsT0FBQSxFQUNBQyxPQUFBLEVBQ0FDLFFBQUEsRUFDQUMsVUFBQSxFQUNBdkksT0FBQSxFQUNB
d0ksUUFBQSxFQUNBQyxLQUFBLEVBQ0E3NUIsTUFBQSxFQUNBcEYsTUFBQSxFQUNBay9CLEtBQUEs
RUFDQUMsTUFBQSxFQWlCQXBxQyxHQUFBRCxRQUFBd3BDLEczRW0vUE0sU0FBU3ZwQyxFQUFRRCxF
QUFTSCxHNEUxaFFoQyxZQUVBLElBQUFpSSxHQUFBakksRUFBQSxHQUNBdW5CLEVBQUF2bkIsRUFB
QSxJQUNBd1EsRUFBQXhRLEVBQUEsSUFZQTBRLEVBQUEsU0FBQTNMLEVBQUEwTCxHQUNBLEdBQUFB
LEVBQUEsQ0FDQSxHQUFBbkssR0FBQXZCLEVBQUF1QixVQUVBLElBQUFBLE9BQUF2QixFQUFBZy9C
LFdBQUEsSUFBQXo5QixFQUFBckIsU0FFQSxZQURBcUIsRUFBQWxCLFVBQUFxTCxHQUlBMUwsRUFB
QTBsQyxZQUFBaDZCLEVBR0F4SSxHQUFBSixZQUNBLGVBQUFFLFVBQUF3NEIsa0JBQ0E3dkIsRUFB
QSxTQUFBM0wsRUFBQTBMLEdBQ0EsV0FBQTFMLEVBQUFFLGNBQ0FGLEVBQUFLLFVBQUFxTCxPQUdB
RCxHQUFBekwsRUFBQXdpQixFQUFBOVcsT0FLQXJRLEVBQUFELFFBQUF1USxHNUUwaVFNLFNBQVN0
USxFQUFRRCxFQUFTSCxHNkVsbFFoQyxZQW1DQSxTQUFBMHFDLEdBQUFwbEMsRUFBQTZoQixHQUdB
LE1BQUE3aEIsSUFBQSxnQkFBQUEsSUFBQSxNQUFBQSxFQUFBVCxJQUVBc3JCLEVBQUFqSixPQUFB
NWhCLEVBQUFULEtBR0FzaUIsRUFBQXhmLFNBQUEsSUFXQSxRQUFBZ2pDLEdBQUF4a0MsRUFBQXlr
QyxFQUFBN2dDLEVBQUE4Z0MsR0FDQSxHQUFBNS9CLFNBQUE5RSxFQU9BLElBTEEsY0FBQThFLEdB
QUEsWUFBQUEsSUFFQTlFLEVBQUEsTUFHQSxPQUFBQSxHQUFBLFdBQUE4RSxHQUFBLFdBQUFBLEdB
R0EsV0FBQUEsR0FBQTlFLEVBQUE2UixXQUFBUixFQUtBLE1BSkF6TixHQUFBOGdDLEVBQUExa0Ms
RUFHQSxLQUFBeWtDLEVBQUFFLEVBQUFKLEVBQUF2a0MsRUFBQSxHQUFBeWtDLEdBQ0EsQ0FHQSxJ
QUFBdkgsR0FDQTBILEVBQ0FDLEVBQUEsRUFDQUMsRUFBQSxLQUFBTCxFQUFBRSxFQUFBRixFQUFB
TSxDQUVBLElBQUE5eUIsTUFBQXdSLFFBQUF6akIsR0FDQSxPQUFBeEYsR0FBQSxFQUFtQkEsRUFB
QXdGLEVBQUF2RCxPQUFxQmpDLElBQ3hDMGlDLEVBQUFsOUIsRUFBQXhGLEdBQ0FvcUMsRUFBQUUs
RUFBQVAsRUFBQXJILEVBQUExaUMsR0FDQXFxQyxHQUFBTCxFQUFBdEgsRUFBQTBILEVBQUFoaEMs
RUFBQThnQyxPQUVHLENBQ0gsR0FBQU0sR0FBQUMsRUFBQWpsQyxFQUNBLElBQUFnbEMsRUFBQSxD
QUNBLEdBQ0FFLEdBREFDLEVBQUFILEVBQUE1cUMsS0FBQTRGLEVBRUEsSUFBQWdsQyxJQUFBaGxD
LEVBQUFvbEMsUUFFQSxJQURBLEdBQUFDLEdBQUEsSUFDQUgsRUFBQUMsRUFBQWxFLFFBQUFxRSxN
QUNBcEksRUFBQWdJLEVBQUFqNUIsTUFDQTI0QixFQUFBRSxFQUFBUCxFQUFBckgsRUFBQW1JLEtB
Q0FSLEdBQUFMLEVBQUF0SCxFQUFBMEgsRUFBQWhoQyxFQUFBOGdDLE9BZUEsUUFBQVEsRUFBQUMs
RUFBQWxFLFFBQUFxRSxNQUFBLENBQ0EsR0FBQUMsR0FBQUwsRUFBQWo1QixLQUNBczVCLEtBQ0Fy
SSxFQUFBcUksRUFBQSxHQUNBWCxFQUFBRSxFQUFBOWEsRUFBQWpKLE9BQUF3a0IsRUFBQSxJQUFB
UixFQUFBUixFQUFBckgsRUFBQSxHQUNBMkgsR0FBQUwsRUFBQXRILEVBQUEwSCxFQUFBaGhDLEVB
QUE4Z0MsU0FJSyxlQUFBNS9CLEVBQUEsQ0FDTCxHQUFBMGdDLEdBQUEsR0FhQUMsRUFBQXRvQyxP
QUFBNkMsRUFDb09TLEdBQUEseUJBQUFnbEMsRUFBQSxxQkFBK0dockMsT0FBQXNELEtBQUFpQyxH
QUFBdEMsS0FBQSxVQUF5QytuQyxFQUFBRCxJQUk1WCxNQUFBWCxHQW1CQSxRQUFBYSxHQUFBMWxD
LEVBQUE0RCxFQUFBOGdDLEdBQ0EsYUFBQTFrQyxFQUNBLEVBR0F3a0MsRUFBQXhrQyxFQUFBLEdB
QUE0RCxFQUFBOGdDLEdBL0pBLEdBQUFqa0MsR0FBQTVHLEVBQUEsR0FHQXdYLEdBREF4WCxFQUFB
LElBQ0FBLEVBQUEsTUFFQW9yQyxFQUFBcHJDLEVBQUEsS0FFQW13QixHQURBbndCLEVBQUEsR0FD
QUEsRUFBQSxLQUdBOHFDLEdBRkE5cUMsRUFBQSxHQUVBLEtBQ0FrckMsRUFBQSxHQXVKQTlxQyxH
QUFBRCxRQUFBMHJDLEc3RWttUU0sU0FBU3pyQyxFQUFRRCxFQUFTSCxHOEVoeFFoQyxZQXdCQSxT
QUFBbW9CLEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxRQUFBRixHQUU3RSxR
QUFBNlQsR0FBQUMsRUFBQUMsR0FBaUQsS0FBQUQsWUFBQUMsSUFBMEMsU0FBQWo1QixXQUFBLHFD
QUUzRixRQUFBNG9DLEdBQUFsMEIsRUFBQXJYLEdBQWlELElBQUFxWCxFQUFhLFNBQUFtMEIsZ0JB
QUEsNERBQXlGLFFBQUF4ckMsR0FBQSxnQkFBQUEsSUFBQSxrQkFBQUEsR0FBQXFYLEVBQUFyWCxF
QUV2SixRQUFBeXJDLEdBQUFDLEVBQUFDLEdBQTBDLHFCQUFBQSxJQUFBLE9BQUFBLEVBQStELFNB
QUFocEMsV0FBQSxpRUFBQWdwQyxHQUF1R0QsR0FBQXByQyxVQUFBRCxPQUFBNitCLE9BQUF5TSxL
QUFBcnJDLFdBQXlFdU4sYUFBZWdFLE1BQUE2NUIsRUFBQXZELFlBQUEsRUFBQXlELFVBQUEsRUFB
QXhELGNBQUEsS0FBNkV1RCxJQUFBdHJDLE9BQUF3ckMsZUFBQXhyQyxPQUFBd3JDLGVBQUFILEVB
QUFDLEdBQUFELEVBQUFJLFVBQUFILEdBRXJYLFFBQUFJLEdBQUFsa0IsRUFBQWxrQixHQUE4QyxH
QUFBSyxLQUFpQixRQUFBNUQsS0FBQXluQixHQUFxQmxrQixFQUFBK29CLFFBQUF0c0IsSUFBQSxH
QUFvQ0MsT0FBQUMsVUFBQUMsZUFBQVAsS0FBQTZuQixFQUFBem5CLEtBQTZENEQsRUFBQTVELEdB
QUF5bkIsRUFBQXpuQixHQUFzQixPQUFBNEQsR0FJM00sUUFBQWdvQyxNQUNBLFFBQUFDLEdBQUFD
LEVBQUFDLEdBRUEsR0FBQUMsSUFDQUMsSUFBQSxTQUFBOTBCLEdBQ0EsSUFDQSxHQUFBKzBCLEdB
QUFKLEVBQUFDLEVBQUFJLFdBQUFoMUIsSUFDQSswQixJQUFBRixFQUFBNzBCLE9BQUE2MEIsRUFB
QTVxQyxTQUNBNHFDLEVBQUFJLHVCQUFBLEVBQ0FKLEVBQUE3MEIsTUFBQSswQixFQUNBRixFQUFB
NXFDLE1BQUEsTUFFTyxNQUFBQSxHQUNQNHFDLEVBQUFJLHVCQUFBLEVBQ0FKLEVBQUE1cUMsVUFL
QSxPQUFBNHFDLEdBR0EsUUFBQUssR0FlQUMsR0FDQSxHQUFBQyxHQUFBQyxFQUVBQyxFQUFBenFD
LFVBQUFDLE9BQUEsR0FBQVosU0FBQVcsVUFBQSxHQUFBQSxVQUFBLE1BQ0EwcUMsRUFBQUQsRUFB
QUUsZUFDQUEsRUFBQXRyQyxTQUFBcXJDLEVBQUEsU0FBQWpyQyxHQUNBLHlCQUFBQSxFQUFBLEtB
Q0dpckMsRUFDSEUsRUFBQUgsRUFBQUksV0FDQUEsRUFBQXhyQyxTQUFBdXJDLEVBQUEsa0JBQUFB
LEVBQ0FFLEVBQUFMLEVBQUFNLGdCQUNBQSxFQUFBMXJDLFNBQUF5ckMsRUFBQXpyQyxPQUFBeXJD
LEVBQ0FFLEVBQUFQLEVBQUFRLHlCQUNBQSxFQUFBNXJDLFNBQUEyckMsS0FDQUUsRUFBQVQsRUFB
QVUsU0FDQUEsRUFBQTlyQyxTQUFBNnJDLEVBQUEsUUFBQUEsRUFDQUUsRUFBQVgsRUFBQVksUUFD
QUEsRUFBQWhzQyxTQUFBK3JDLEtBQ0FFLEVBQUEzQixFQUFBYyxHQUFBLGtHQUVBYyxFQUFBSixF
QUFBLGVBQ0ExMkIsRUFBQSsyQixJQUVBQyxHQUFBbEIsS0FBd0NBLEVBQUFZLEdBQUFPLEVBQUFD
LFdBQUFwQixFQUFBZ0IsR0FBQUcsRUFBQUUsa0JBQUFyQixHQUN4Q3NCLEdBQUFyQixLQUFrREEs
RUFBQWUsR0FBQUcsRUFBQUUsa0JBQUFwQixFQUVsRCxpQkFBQXNCLElBQ0EsRUFBQUMsRUFBQXBt
QixTQUFBLGtCQUFBbW1CLEdBQUEsbUZBQUFFLEtBQUFDLFVBQUFILEdBRUEsSUFBQUksR0FBQUos
RUFBQWhjLGFBQUFnYyxFQUFBcnNDLE1BQUEsWUFFQXF3QixFQUFBNmEsRUFBQXVCLEdBRUFDLEVB
QUFDLEtBQTRDZCxHQUM1Q1gsaUJBQ0FFLGFBQ0FFLGtCQUNBRSwyQkFDQUUsV0FDQUUsVUFDQXZi
LGNBQ0FvYyx1QkFDQUoscUJBR0FPLEVBQUEsU0FBQUMsR0FHQSxRQUFBRCxHQUFBbDNCLEVBQUE5
TCxHQUNBaXdCLEVBQUEzNkIsS0FBQTB0QyxFQUVBLElBQUFFLEdBQUFwRCxFQUFBeHFDLEtBQUEy
dEMsRUFBQTF1QyxLQUFBZSxLQUFBd1csRUFBQTlMLEdBYUEsT0FYQWtqQyxHQUFBOTNCLFVBQ0E4
M0IsRUFBQUMsU0FDQUQsRUFBQUUsWUFBQSxFQUNBRixFQUFBeEMsTUFBQTUwQixFQUFBZzJCLElB
QUE5aEMsRUFBQThoQyxHQUNBb0IsRUFBQUcsVUFBQWpSLFFBQUF0bUIsRUFBQWcyQixJQUNBb0Is
RUFBQUksbUJBQUFKLEVBQUFJLG1CQUFBLzJCLEtBQUEyMkIsSUFFQSxFQUFBUixFQUFBcG1CLFNB
QUE0bUIsRUFBQXhDLE1BQUEsbUJBQUFvQixFQUFBLDRDQUFBcmIsRUFBQSwrRUFBQXFiLEVBQUEs
bUJBQUFyYixFQUFBLE9BRUF5YyxFQUFBSyxlQUNBTCxFQUFBTSxtQkFDQU4sRUE4SEEsTUFoSkFs
RCxHQUFBZ0QsRUFBQUMsR0FxQkFELEVBQUFudUMsVUFBQTR1QyxnQkFBQSxXQUNBLEdBQUFDLEdB
TUFDLEVBQUFydUMsS0FBQSt0QyxVQUFBLEtBQUEvdEMsS0FBQXF1QyxZQUNBLE9BQUFELE1BQXlC
QSxFQUFBeEIsR0FBQXlCLEdBQUFydUMsS0FBQTBLLFFBQUFraUMsR0FBQXdCLEdBR3pCVixFQUFB
bnVDLFVBQUErdUMsa0JBQUEsV0FDQWhDLElBUUF0c0MsS0FBQXF1QyxhQUFBRSxlQUNBdnVDLEtB
QUFxckMsU0FBQUMsSUFBQXRyQyxLQUFBd1csT0FDQXhXLEtBQUFxckMsU0FBQUksdUJBQUF6ckMs
S0FBQXd1QyxnQkFHQWQsRUFBQW51QyxVQUFBa3ZDLDBCQUFBLFNBQUFsRCxHQUNBdnJDLEtBQUFx
ckMsU0FBQUMsSUFBQUMsSUFHQW1DLEVBQUFudUMsVUFBQWtzQyxzQkFBQSxXQUNBLE1BQUF6ckMs
TUFBQXFyQyxTQUFBSSx1QkFHQWlDLEVBQUFudUMsVUFBQW12QyxxQkFBQSxXQUNBMXVDLEtBQUFx
dUMsY0FBQXJ1QyxLQUFBcXVDLGFBQUFNLGlCQUNBM3VDLEtBQUFxdUMsYUFBQSxLQUNBcnVDLEtB
QUE0dUMsaUJBQUEzRCxFQUNBanJDLEtBQUFvckMsTUFBQSxLQUNBcHJDLEtBQUFxckMsU0FBQUMs
SUFBQUwsRUFDQWpyQyxLQUFBcXJDLFNBQUFJLHVCQUFBLEdBR0FpQyxFQUFBbnVDLFVBQUFzdkMs
bUJBQUEsV0FFQSxPQURBLEVBQUF6QixFQUFBcG1CLFNBQUEwbEIsRUFBQSw0R0FBc0hSLEVBQUEs
YUFDdEhsc0MsS0FBQTh1QyxpQkFHQXBCLEVBQUFudUMsVUFBQXl1QyxtQkFBQSxTQUFBdDZCLEdB
Q0ExVCxLQUFBOHVDLGdCQUFBcDdCLEdBR0FnNkIsRUFBQW51QyxVQUFBMHVDLGFBQUEsV0FDQSxH
QUFBOUMsR0FBQVEsRUFBQTNyQyxLQUFBb3JDLE1BQUEyRCxTQUFBdkIsRUFDQXh0QyxNQUFBcXJD
LFNBQUFILEVBQUFDLEVBQUFuckMsS0FBQW9yQyxPQUNBcHJDLEtBQUFxckMsU0FBQUMsSUFBQXRy
QyxLQUFBd1csUUFHQWszQixFQUFBbnVDLFVBQUEydUMsaUJBQUEsV0FDQSxHQUFBNUIsRUFBQSxD
QUlBLEdBQUEwQyxJQUFBaHZDLEtBQUErdEMsVUFBQS90QyxLQUFBd1csTUFBQXhXLEtBQUEwSyxT
QUFBa2lDLEVBQ0E1c0MsTUFBQXF1QyxhQUFBLEdBQUFZLEdBQUFqb0IsUUFBQWhuQixLQUFBb3JD
LE1BQUE0RCxFQUFBaHZDLEtBQUFrdkMsY0FBQWo0QixLQUFBalgsT0FRQUEsS0FBQTR1QyxpQkFB
QTV1QyxLQUFBcXVDLGFBQUFPLGlCQUFBMzNCLEtBQUFqWCxLQUFBcXVDLGdCQUdBWCxFQUFBbnVD
LFVBQUEydkMsY0FBQSxXQUNBbHZDLEtBQUFxckMsU0FBQUMsSUFBQXRyQyxLQUFBd1csT0FFQXhX
LEtBQUFxckMsU0FBQUksdUJBR0F6ckMsS0FBQW12QyxtQkFBQW52QyxLQUFBb3ZDLHFDQUNBcHZD
LEtBQUFxdkMsU0FBQUMsSUFIQXR2QyxLQUFBNHVDLG9CQU9BbEIsRUFBQW51QyxVQUFBNnZDLHFD
QUFBLFdBTUFwdkMsS0FBQW12QyxtQkFBQXp1QyxPQUNBVixLQUFBNHVDLG9CQUdBbEIsRUFBQW51
QyxVQUFBZ3dDLGFBQUEsV0FDQSxNQUFBelMsU0FBQTk4QixLQUFBcXVDLGVBQUFydUMsS0FBQXF1
QyxhQUFBa0IsZ0JBR0E3QixFQUFBbnVDLFVBQUFpd0MsY0FBQSxTQUFBaDVCLEdBQ0EsS0FBQWsy
QixHQUFBTixHQUFBcHNDLEtBQUErdEMsV0FBQS90QyxLQUFBcXVDLGNBQUEsTUFBQTczQixFQUtB
LElBQUFpNUIsR0FBQWhDLEtBQW9DajNCLEVBSXBDLE9BSEFrMkIsS0FBQStDLEVBQUEvN0IsSUFB
QTFULEtBQUFndUMsb0JBQ0E1QixJQUFBcUQsRUFBQXJELEdBQUFwc0MsS0FBQTh0QyxlQUNBOXRD
LEtBQUErdEMsV0FBQS90QyxLQUFBcXVDLGVBQUFvQixFQUFBN0MsR0FBQTVzQyxLQUFBcXVDLGNB
Q0FvQixHQUdBL0IsRUFBQW51QyxVQUFBa2tDLE9BQUEsV0FDQSxHQUFBNEgsR0FBQXJyQyxLQUFB
cXJDLFFBR0EsSUFGQUEsRUFBQUksdUJBQUEsRUFFQUosRUFBQTVxQyxNQUNBLEtBQUE0cUMsR0FB
QTVxQyxLQUVBLFVBQUFpdkMsRUFBQWhwQyxlQUFBeW1DLEVBQUFudEMsS0FBQXd2QyxjQUFBbkUs
RUFBQTcwQixTQUlBazNCLEdBQ0tnQyxFQUFBbDZCLFVBdUNMLE9BckNBazRCLEdBQUFQLG1CQUNB
TyxFQUFBdmMsY0FDQXVjLEVBQUFSLG9CQUNBUSxFQUFBWixlQUNBWSxFQUFBM2QsVUFBQStjLEdB
aUNBLEVBQUE2QyxFQUFBM29CLFNBQUEwbUIsRUFBQVAsSUE3U0F0dUMsRUFBQWtvQixZQUFBLENB
RUEsSUFBQTBtQixHQUFBbnVDLE9BQUF3QyxRQUFBLFNBQUFtQixHQUFtRCxPQUFBNUQsR0FBQSxF
QUFnQkEsRUFBQWdDLFVBQUFDLE9BQXNCakMsSUFBQSxDQUFPLEdBQUE2RCxHQUFBN0IsVUFBQWhD
LEVBQTJCLFFBQUFrRSxLQUFBTCxHQUEwQjVELE9BQUFDLFVBQUFDLGVBQUFQLEtBQUFpRSxFQUFB
SyxLQUF5RE4sRUFBQU0sR0FBQUwsRUFBQUssSUFBaUMsTUFBQU4sR0FFL09wRSxHQUFBbW9CLFFB
QUEwa0IsQ0FFQSxJQUFBa0UsR0FBQWx4QyxFQUFBLEtBRUFpeEMsRUFBQTlvQixFQUFBK29CLEdB
RUFDLEVBQUFueEMsRUFBQSxLQUVBMHVDLEVBQUF2bUIsRUFBQWdwQixHQUVBSCxFQUFBaHhDLEVB
QUEsSUFFQW94QyxFQUFBcHhDLEVBQUEsS0FFQXV3QyxFQUFBcG9CLEVBQUFpcEIsR0FFQS9DLEVB
QUFydUMsRUFBQSxJQVlBbXVDLEVBQUEsRUFDQXlDLE05RW9pUk0sU0FBU3h3QyxFQUFRRCxFQUFT
SCxHK0V2a1JoQyxZQVdBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMsV0FBQUQsR0FB
dUNFLFFBQUFGLEdBRTdFLFFBQUFpcEIsR0FBQUMsR0FDQSxnQkFBQWpCLEVBQUE3UixHQUdBLFFB
QUErUyxLQUNBLE1BQUFDLEdBSEEsR0FBQUEsR0FBQUYsRUFBQWpCLEVBQUE3UixFQU1BLE9BREEr
UyxHQUFBRSxtQkFBQSxFQUNBRixHQVdBLFFBQUFHLEdBQUFDLEdBQ0EsY0FBQUEsRUFBQUYsbUJB
QUF6dkMsU0FBQTJ2QyxFQUFBRixrQkFBQXJULFFBQUF1VCxFQUFBRixtQkFBQSxJQUFBRSxFQUFB
L3VDLE9BZUEsUUFBQWd2QyxHQUFBRCxFQUFBbkUsR0FDQSxnQkFBQTZDLEVBQUFqRCxHQUNBLEdB
RUF5RSxJQUZBekUsRUFBQTNhLFlBRUEsU0FBQXFmLEVBQUFDLEdBQ0EsTUFBQUYsR0FBQUosa0JB
QUFJLEVBQUFGLFdBQUFHLEVBQUFDLEdBQUFGLEVBQUFGLFdBQUFHLElBc0JBLE9BbEJBRCxHQUFB
SixtQkFBQSxFQUVBSSxFQUFBRixXQUFBLFNBQUFHLEVBQUFDLEdBQ0FGLEVBQUFGLGFBQ0FFLEVB
QUFKLGtCQUFBQyxFQUFBQyxFQUNBLElBQUE3NUIsR0FBQSs1QixFQUFBQyxFQUFBQyxFQVVBLE9B
UkEsa0JBQUFqNkIsS0FDQSs1QixFQUFBRixXQUFBNzVCLEVBQ0ErNUIsRUFBQUosa0JBQUFDLEVB
QUE1NUIsR0FDQUEsRUFBQSs1QixFQUFBQyxFQUFBQyxJQUtBajZCLEdBR0ErNUIsR0F6RUExeEMs
RUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFBQWt4Qyx5QkFDQWx4QyxFQUFBdXhDLHVCQUNBdnhDLEVB
QUF5eEMsb0JBRUEsSUFBQUksR0FBQWh5QyxFQUFBLEdBRUFtb0IsR0FBQTZwQixJL0VpcFJNLFNB
QVM1eEMsRUFBUUQsRUFBU0gsR2dGMXBSaEMsWUFpQkEsU0FBQW1vQixHQUFBQyxHQUFzQyxNQUFB
QSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FmN0Vqb0IsRUFBQWtvQixZQUFBLEVBQ0Fsb0Is
RUFBQTh4QyxRQUFBOXhDLEVBQUE2c0MsZ0JBQUE3c0MsRUFBQSt4QyxlQUFBL3hDLEVBQUFneUMs
U0FBQW53QyxNQUVBLElBQUFvd0MsR0FBQXB5QyxFQUFBLEtBRUFxeUMsRUFBQWxxQixFQUFBaXFC
LEdBRUFFLEVBQUF0eUMsRUFBQSxJQUVBdXlDLEVBQUFwcUIsRUFBQW1xQixHQUVBRSxFQUFBeHlD
LEVBQUEsS0FFQXl5QyxFQUFBdHFCLEVBQUFxcUIsRUFJQXJ5QyxHQUFBZ3lDLFNBQUFFLEVBQUEv
cEIsUUFDQW5vQixFQUFBK3hDLGVBQUFFLEVBQUFGLGVBQ0EveEMsRUFBQTZzQyxnQkFBQXVGLEVB
QUFqcUIsUUFDQW5vQixFQUFBOHhDLFFBQUFRLEVBQUFucUIsU2hGZ3FSTSxTQUFTbG9CLEVBQVFE
LEVBQVNILEdpRnRyUmhDLFlBU0EsU0FBQW1vQixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFB
RCxHQUF1Q0UsUUFBQUYsR0FQN0Vqb0IsRUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFBQW11QyxXQUFB
bnVDLEVBQUFvdUMsa0JBQUF2c0MsTUFFQSxJQUFBMHdDLEdBQUExeUMsRUFBQSxJQUVBMnlDLEVB
QUF4cUIsRUFBQXVxQixFQUlBdnlDLEdBQUFvdUMsa0JBQUFvRSxFQUFBcnFCLFFBQUFzcUIsT0FD
QS9DLGFBQUE4QyxFQUFBcnFCLFFBQUFrSixLQUFBcWhCLFdBQ0E1QyxlQUFBMEMsRUFBQXJxQixR
QUFBa0osS0FBQXFoQixXQUNBM0MsaUJBQUF5QyxFQUFBcnFCLFFBQUFrSixLQUFBcWhCLFdBQ0Fo
QyxhQUFBOEIsRUFBQXJxQixRQUFBa0osS0FBQXFoQixhQUdBMXlDLEVBQUFtdUMsV0FBQXFFLEVB
QUFycUIsUUFBQXNxQixPQUNBRSxVQUFBSCxFQUFBcnFCLFFBQUFrSixLQUFBcWhCLFdBQ0F4QyxT
QUFBc0MsRUFBQXJxQixRQUFBa0osS0FBQXFoQixXQUNBL0YsU0FBQTZGLEVBQUFycUIsUUFBQWtK
LEtBQUFxaEIsY2pGNnJSTSxTQUFTenlDLEVBQVFELEVBQVNILEdrRmx0UmhDLFlBYUEsU0FBQW1v
QixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FFN0UsUUFBQTJx
QixHQUFBM2dDLEVBQUFxZ0IsRUFBQSthLElBQ0EsRUFBQXdGLEVBQUExcUIsU0FBQWxXLEtBQ0Es
RUFBQTZnQyxFQUFBM3FCLFNBQUFrbEIsRUFBQSxTQUFBL2EsRUFBQSxpREFBQXJnQixFQUFBLEtB
ZkFqUyxFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFBbW9CLFFBQUF5cUIsQ0FFQSxJQUFBRyxHQUFB
bHpDLEVBQUEsSUFFQWd6QyxFQUFBN3FCLEVBQUErcUIsR0FFQTVwQixFQUFBdHBCLEVBQUEsSUFF
QWl6QyxFQUFBOXFCLEVBQUFtQixJbEZndVJNLFNBQVNscEIsRUFBUUQsRUFBU0gsR0FFL0IsWUFn
QkEsU0FBU21vQixHQUF1QkMsR0FBTyxNQUFPQSxJQUFPQSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFT
RixHQUV2RixRQUFTNlQsR0FBZ0JDLEVBQVVDLEdBQWUsS0FBTUQsWUFBb0JDLElBQWdCLEtBQU0s
SUFBSWo1QixXQUFVLHFDQUVoSCxRQUFTNG9DLEdBQTJCbDBCLEVBQU1yWCxHQUFRLElBQUtxWCxF
QUFRLEtBQU0sSUFBSW0wQixnQkFBZSw0REFBZ0UsUUFBT3hyQyxHQUF5QixnQkFBVEEsSUFBcUMs
a0JBQVRBLEdBQThCcVgsRUFBUHJYLEVBRWxPLFFBQVN5ckMsR0FBVUMsRUFBVUMsR0FBYyxHQUEw
QixrQkFBZkEsSUFBNEMsT0FBZkEsRUFBdUIsS0FBTSxJQUFJaHBDLFdBQVUsaUVBQW9FZ3BDLEdB
QWVELEdBQVNwckMsVUFBWUQsT0FBTzYrQixPQUFPeU0sR0FBY0EsRUFBV3JyQyxXQUFhdU4sYUFB
ZWdFLE1BQU82NUIsRUFBVXZELFlBQVksRUFBT3lELFVBQVUsRUFBTXhELGNBQWMsS0FBZXVELElB
QVl0ckMsT0FBT3dyQyxlQUFpQnhyQyxPQUFPd3JDLGVBQWVILEVBQVVDLEdBQWNELEVBQVNJLFVB
QVlILEdBcEJqZXRyQyxPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9BQU8sR0FHVCxJQUFJ
K2dDLEdBQWUsV0FBYyxRQUFTQyxHQUFpQjd1QyxFQUFRdVQsR0FBUyxJQUFLLEdBQUluWCxHQUFJ
LEVBQUdBLEVBQUltWCxFQUFNbFYsT0FBUWpDLElBQUssQ0FBRSxHQUFJMm5DLEdBQWF4d0IsRUFB
TW5YLEVBQUkybkMsR0FBV0ksV0FBYUosRUFBV0ksYUFBYyxFQUFPSixFQUFXSyxjQUFlLEVBQVUs
U0FBV0wsS0FBWUEsRUFBVzZELFVBQVcsR0FBTXZyQyxPQUFPNm5DLGVBQWVsa0MsRUFBUStqQyxF
QUFXempDLElBQUt5akMsSUFBaUIsTUFBTyxVQUFVbk0sRUFBYWtYLEVBQVlDLEdBQWlKLE1BQTlI
RCxJQUFZRCxFQUFpQmpYLEVBQVl0N0IsVUFBV3d5QyxHQUFpQkMsR0FBYUYsRUFBaUJqWCxFQUFh
bVgsR0FBcUJuWCxNbUZudlJqaUI2VSxFQUFBaHhDLEVBQUEsSW5GdXZSS3V6QyxFQUFVcHJCLEVB
QXVCNm9CLEdtRnR2UnRDd0MsRUFBQXh6QyxFQUFBLEluRjB2Ukt5ekMsRUFBZXRyQixFQUF1QnFy
QixHbUZ4dlJ0QkUsRW5Ga3dSQSxTQUFVekUsR0FHNUIsUUFBU3lFLEtBQ1AsR0FBSXRHLEdBRUF1
RyxFQUFPekUsRUFBTzBFLENBRWxCM1gsR0FBZ0IzNkIsS0FBTW95QyxFQUV0QixLQUFLLEdBQUlH
LEdBQU9seEMsVUFBVUMsT0FBUTVCLEVBQU9vWCxNQUFNeTdCLEdBQU9DLEVBQU8sRUFBR0EsRUFB
T0QsRUFBTUMsSUFDM0U5eUMsRUFBSzh5QyxHQUFRbnhDLFVBQVVteEMsRUFHekIsT0FBZUgsR0FB
U3pFLEVBQVFwRCxFQUEyQnhxQyxNQUFPOHJDLEVBQU9zRyxFQUFjckgsV0FBYXpyQyxPQUFPbXpD
LGVBQWVMLElBQWdCbnpDLEtBQUtjLE1BQU0rckMsR0FBTzlyQyxNQUFNQyxPQUFPUCxLQUFpQmt1
QyxFbUZ2d1I3TEMsT0FDRTErQixLQUFNeStCLEVBQUtwM0IsTUFBTXJILE1BQVEsSW5Gd3dSckJ5
K0IsRW1GcndSTjhFLGFBQWUsU0FBQXB5QyxHQUNiLEdBQU02TyxHQUFPN08sRUFBRTJDLE9BQU82
TixNQUFNNmhDLE1BQ1osTUFBWnJ5QyxFQUFFc3lDLFFBQ0poRixFQUFLcDNCLE1BQU1xOEIsT0FB
TzFqQyxHQUNkeStCLEVBQUtwM0IsTUFBTXM4QixTQUNibEYsRUFBS3lCLFVBQVdsZ0MsS0FBTSxP
bkZ3d1J0QnkrQixFbUZud1JObUYsYUFBZSxTQUFBenlDLEdBQ2JzdEMsRUFBS3lCLFVBQVdsZ0Ms
S0FBTTdPLEVBQUUyQyxPQUFPNk4sU25Gb3dSM0I4OEIsRW1GandSTm9GLFdBQWEsU0FBQTF5QyxH
QUNOc3RDLEVBQUtwM0IsTUFBTXM4QixTQUNkbEYsRUFBS3AzQixNQUFNcThCLE9BQU92eUMsRUFB
RTJDLE9BQU82TixRbkZtdlJyQndoQyxFQWdCSkQsRUFBUTdILEVBQTJCb0QsRUFBTzBFLEdBb0Iv
QyxNQWpEQTVILEdBQVUwSCxFQUFlekUsR0FnQ3pCa0UsRUFBYU8sSUFDWDd1QyxJQUFLLFNBQ0x1
TixNQUFPLFdtRm53UlIsTUFDRW1oQyxHQUFBanJCLFFBQUF0Z0IsY0FBQSxTQUFPdXNDLFdBQ0ws
RUFBQWQsRUFBQW5yQixVQUNFa3NCLEtBQU1sekMsS0FBS3dXLE1BQU0yOEIsUUFDakJDLFdBQVlw
ekMsS0FBS3dXLE1BQU1zOEIsVUFFekJucEMsS0FBSyxPQUNMMHBDLFlBQWFyekMsS0FBS3dXLE1B
QU02OEIsWUFDeEJDLFVBQVUsT0FDVnhpQyxNQUFPOVEsS0FBSzZ0QyxNQUFNMStCLEtBQ2xCb2tD
LE9BQVF2ekMsS0FBS2d6QyxXQUNiN2pCLFNBQVVudkIsS0FBSyt5QyxhQUNmUyxVQUFXeHpDLEtB
QUsweUMsbUJuRnN3UmROLEdBQ1AxQyxFQUFPbDZCLFVtRnJ6Ulc0OEIsR0FDWnJpQixXQUNMOGlC
LE9BQVFuRCxFQUFBLzVCLFVBQVV1YSxLQUFLcWhCLFdBQ3ZCcGlDLEtBQU11Z0MsRUFBQS81QixV
QUFVNFAsT0FDaEI4dEIsWUFBYTNELEVBQUEvNUIsVUFBVTRQLE9BQ3ZCNHRCLFFBQVN6RCxFQUFB
LzVCLFVBQVU4OUIsS0FDbkJYLFFBQVNwRCxFQUFBLzVCLFVBQVU4OUIsTW5Gd3pSdEI1MEMsRUFB
UW1vQixRbUY5elJZb3JCLEduRmswUmYsU0FBU3R6QyxFQUFRRCxHQUV0QixZQUVBUyxRQUFPNm5D
LGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9BQU8sR29GMTBSRzRpQyxZQUFXLFdBQ1hDLGNBQWMsY0FD
ZEMsWUFBWSxZQUNaQyxnQkFBZ0IsZ0JBQ2hCQyxlQUFlLGVBQ2ZDLGtCQUFrQixtQnBGZzFSekIs
U0FBU2oxQyxFQUFRRCxHQUV0QixZQUVBUyxRQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9B
QU8sR3FGMTFSR2tqQyxZQUFXLFdBQ1hDLGlCQUFpQixpQkFDakJDLGNBQWMsZXJGZzJSckIsU0FB
U3AxQyxFQUFRRCxHc0Z2MVJ2QixRQUFBczFDLEtBQ0EsU0FBQXh6QyxPQUFBLG1DQUVBLFFBQUF5
ekMsS0FDQSxTQUFBenpDLE9BQUEscUNBc0JBLFFBQUEwekMsR0FBQUMsR0FDQSxHQUFBQyxJQUFB
QyxXQUVBLE1BQUFBLFlBQUFGLEVBQUEsRUFHQSxLQUFBQyxJQUFBSixJQUFBSSxJQUFBQyxXQUVB
LE1BREFELEdBQUFDLFdBQ0FBLFdBQUFGLEVBQUEsRUFFQSxLQUVBLE1BQUFDLEdBQUFELEVBQUEs
R0FDSyxNQUFBaDBDLEdBQ0wsSUFFQSxNQUFBaTBDLEdBQUF0MUMsS0FBQSxLQUFBcTFDLEVBQUEs
R0FDUyxNQUFBaDBDLEdBRVQsTUFBQWkwQyxHQUFBdDFDLEtBQUFlLEtBQUFzMEMsRUFBQSxLQU1B
LFFBQUFHLEdBQUFDLEdBQ0EsR0FBQUMsSUFBQUMsYUFFQSxNQUFBQSxjQUFBRixFQUdBLEtBQUFD
LElBQUFQLElBQUFPLElBQUFDLGFBRUEsTUFEQUQsR0FBQUMsYUFDQUEsYUFBQUYsRUFFQSxLQUVB
LE1BQUFDLEdBQUFELEdBQ0ssTUFBQXAwQyxHQUNMLElBRUEsTUFBQXEwQyxHQUFBMTFDLEtBQUEs
S0FBQXkxQztDQUNTLE1BQUFwMEMsR0FHVCxNQUFBcTBDLEdBQUExMUMsS0FBQWUsS0FBQTAwQyxL
QVlBLFFBQUFHLEtBQ0FDLEdBQUFDLElBR0FELEdBQUEsRUFDQUMsRUFBQXp6QyxPQUNBMEssRUFB
QStvQyxFQUFBOTBDLE9BQUErTCxHQUVBZ3BDLEtBRUFocEMsRUFBQTFLLFFBQ0EyekMsS0FJQSxR
QUFBQSxLQUNBLElBQUFILEVBQUEsQ0FHQSxHQUFBSSxHQUFBYixFQUFBUSxFQUNBQyxJQUFBLENB
R0EsS0FEQSxHQUFBOXJDLEdBQUFnRCxFQUFBMUssT0FDQTBILEdBQUEsQ0FHQSxJQUZBK3JDLEVB
QUEvb0MsRUFDQUEsT0FDQWdwQyxFQUFBaHNDLEdBQ0ErckMsR0FDQUEsRUFBQUMsR0FBQTFKLEtB
R0EwSixNQUNBaHNDLEVBQUFnRCxFQUFBMUssT0FFQXl6QyxFQUFBLEtBQ0FELEdBQUEsRUFDQUws
RUFBQVMsSUFpQkEsUUFBQUMsR0FBQWIsRUFBQWMsR0FDQXAxQyxLQUFBczBDLE1BQ0F0MEMsS0FB
QW8xQyxRQVlBLFFBQUFuSyxNQWhLQSxHQU9Bc0osR0FDQUksRUFSQVUsRUFBQXYyQyxFQUFBRCxZ
QWdCQSxXQUNBLElBRUEwMUMsRUFEQSxrQkFBQUMsWUFDQUEsV0FFQUwsRUFFSyxNQUFBN3pDLEdB
Q0xpMEMsRUFBQUosRUFFQSxJQUVBUSxFQURBLGtCQUFBQyxjQUNBQSxhQUVBUixFQUVLLE1BQUE5
ekMsR0FDTHEwQyxFQUFBUCxLQXVEQSxJQUVBVyxHQUZBL29DLEtBQ0E4b0MsR0FBQSxFQUVBRSxJ
QXlDQUssR0FBQUMsU0FBQSxTQUFBaEIsR0FDQSxHQUFBNTBDLEdBQUEsR0FBQW9YLE9BQUF6VixV
QUFBQyxPQUFBLEVBQ0EsSUFBQUQsVUFBQUMsT0FBQSxFQUNBLE9BQUFqQyxHQUFBLEVBQXVCQSxF
QUFBZ0MsVUFBQUMsT0FBc0JqQyxJQUM3Q0ssRUFBQUwsRUFBQSxHQUFBZ0MsVUFBQWhDLEVBR0Ey
TSxHQUFBdkcsS0FBQSxHQUFBMHZDLEdBQUFiLEVBQUE1MEMsSUFDQSxJQUFBc00sRUFBQTFLLFFB
QUF3ekMsR0FDQVQsRUFBQVksSUFTQUUsRUFBQTUxQyxVQUFBK3JDLElBQUEsV0FDQXRyQyxLQUFB
czBDLElBQUF2MEMsTUFBQSxLQUFBQyxLQUFBbzFDLFFBRUFDLEVBQUFFLE1BQUEsVUFDQUYsRUFB
QUcsU0FBQSxFQUNBSCxFQUFBSSxPQUNBSixFQUFBSyxRQUNBTCxFQUFBdi9CLFFBQUEsR0FDQXUv
QixFQUFBTSxZQUlBTixFQUFBTyxHQUFBM0ssRUFDQW9LLEVBQUFRLFlBQUE1SyxFQUNBb0ssRUFB
QVMsS0FBQTdLLEVBQ0FvSyxFQUFBVSxJQUFBOUssRUFDQW9LLEVBQUFXLGVBQUEvSyxFQUNBb0ss
RUFBQVksbUJBQUFoTCxFQUNBb0ssRUFBQWEsS0FBQWpMLEVBRUFvSyxFQUFBYyxRQUFBLFNBQUFy
MUMsR0FDQSxTQUFBSCxPQUFBLHFDQUdBMDBDLEVBQUFlLElBQUEsV0FBMkIsV0FDM0JmLEVBQUFn
QixNQUFBLFNBQUFDLEdBQ0EsU0FBQTMxQyxPQUFBLG1DQUVBMDBDLEVBQUFrQixNQUFBLFdBQTRC
LFd0RnkyUnRCLFNBQVN6M0MsRUFBUUQsRUFBU0gsR3VGNWhTaEMsWUFJQSxTQUFBdXNDLE1BcUJB
LFFBQUF1TCxHQUFBMXZCLEdBQ0EsSUFDQSxNQUFBQSxHQUFBMnZCLEtBQ0csTUFBQUMsR0FFSCxN
QURBQyxHQUFBRCxFQUNBRSxHQUlBLFFBQUFDLEdBQUFqM0MsRUFBQUMsR0FDQSxJQUNBLE1BQUFE
LEdBQUFDLEdBQ0csTUFBQTYyQyxHQUVILE1BREFDLEdBQUFELEVBQ0FFLEdBR0EsUUFBQUUsR0FB
QWwzQyxFQUFBQyxFQUFBQyxHQUNBLElBQ0FGLEVBQUFDLEVBQUFDLEdBQ0csTUFBQTQyQyxHQUVI
LE1BREFDLEdBQUFELEVBQ0FFLEdBTUEsUUFBQUcsR0FBQW4zQyxHQUNBLG1CQUFBSSxNQUNBLFNB
QUE0QixXQUFBLHVDQUVBLHNCQUFBaEMsR0FDQSxTQUFBZ0MsV0FBQSxpQkFFQTVCLE1BQUFnM0Ms
SUFBQSxFQUNBaDNDLEtBQUFpM0MsSUFBQSxFQUNBajNDLEtBQUFrM0MsSUFBQSxLQUNBbDNDLEtB
QUFtM0MsSUFBQSxLQUNBdjNDLElBQUFxckMsR0FDQW1NLEVBQUF4M0MsRUFBQUksTUFlQSxRQUFB
cTNDLEdBQUEvZ0MsRUFBQWdoQyxFQUFBQyxHQUNBLFVBQUFqaEMsR0FBQXhKLFlBQUEsU0FBQTBx
QyxFQUFBQyxHQUNBLEdBQUFscUIsR0FBQSxHQUFBd3BCLEdBQUE5TCxFQUNBMWQsR0FBQWtwQixL
QUFBZSxFQUFBQyxHQUNBOTBCLEVBQUFyTSxFQUFBLEdBQUFvaEMsR0FBQUosRUFBQUMsRUFBQWhx
QixNQUdBLFFBQUE1SyxHQUFBck0sRUFBQXFoQyxHQUNBLFNBQUFyaEMsRUFBQTJnQyxLQUNBM2dD
LElBQUE0Z0MsR0FLQSxPQUhBSCxHQUFBYSxLQUNBYixFQUFBYSxJQUFBdGhDLEdBRUEsSUFBQUEs
RUFBQTJnQyxJQUNBLElBQUEzZ0MsRUFBQTBnQyxLQUNBMWdDLEVBQUEwZ0MsSUFBQSxPQUNBMWdD
LEVBQUE2Z0MsSUFBQVEsSUFHQSxJQUFBcmhDLEVBQUEwZ0MsS0FDQTFnQyxFQUFBMGdDLElBQUEs
T0FDQTFnQyxFQUFBNmdDLEtBQUE3Z0MsRUFBQTZnQyxJQUFBUSxTQUdBcmhDLEdBQUE2Z0MsSUFB
QTF4QyxLQUFBa3lDLE9BR0FFLEdBQUF2aEMsRUFBQXFoQyxHQUdBLFFBQUFFLEdBQUF2aEMsRUFB
QXFoQyxHQUNBbHRDLEVBQUEsV0FDQSxHQUFBdTdCLEdBQUEsSUFBQTF2QixFQUFBMmdDLElBQUFV
LEVBQUFMLFlBQUFLLEVBQUFKLFVBQ0EsV0FBQXZSLEVBTUEsWUFMQSxJQUFBMXZCLEVBQUEyZ0Ms
SUFDQU8sRUFBQUcsRUFBQUcsUUFBQXhoQyxFQUFBNGdDLEtBRUFPLEVBQUFFLEVBQUFHLFFBQUF4
aEMsRUFBQTRnQyxLQUlBLElBQUFseUIsR0FBQTZ4QixFQUFBN1EsRUFBQTF2QixFQUFBNGdDLElB
Q0FseUIsS0FBQTR4QixFQUNBYSxFQUFBRSxFQUFBRyxRQUFBbkIsR0FFQWEsRUFBQUcsRUFBQUcs
UUFBQTl5QixLQUlBLFFBQUF3eUIsR0FBQWxoQyxFQUFBeWhDLEdBRUEsR0FBQUEsSUFBQXpoQyxF
QUNBLE1BQUFtaEMsR0FDQW5oQyxFQUNBLEdBQUExVSxXQUFBLDZDQUdBLElBQ0FtMkMsSUFDQSxn
QkFBQUEsSUFBQSxrQkFBQUEsSUFDQSxDQUNBLEdBQUF0QixHQUFBRCxFQUFBdUIsRUFDQSxJQUFB
dEIsSUFBQUcsRUFDQSxNQUFBYSxHQUFBbmhDLEVBQUFxZ0MsRUFFQSxJQUNBRixJQUFBbmdDLEVB
QUFtZ0MsTUFDQXNCLFlBQUFoQixHQUtBLE1BSEF6Z0MsR0FBQTJnQyxJQUFBLEVBQ0EzZ0MsRUFB
QTRnQyxJQUFBYSxNQUNBQyxHQUFBMWhDLEVBRUssc0JBQUFtZ0MsR0FFTCxXQURBVyxHQUFBWCxF
QUFBeC9CLEtBQUE4Z0MsR0FBQXpoQyxHQUlBQSxFQUFBMmdDLElBQUEsRUFDQTNnQyxFQUFBNGdD
LElBQUFhLEVBQ0FDLEVBQUExaEMsR0FHQSxRQUFBbWhDLEdBQUFuaEMsRUFBQXloQyxHQUNBemhD
LEVBQUEyZ0MsSUFBQSxFQUNBM2dDLEVBQUE0Z0MsSUFBQWEsRUFDQWhCLEVBQUFrQixLQUNBbEIs
RUFBQWtCLElBQUEzaEMsRUFBQXloQyxHQUVBQyxFQUFBMWhDLEdBRUEsUUFBQTBoQyxHQUFBMWhD
LEdBS0EsR0FKQSxJQUFBQSxFQUFBMGdDLE1BQ0FyMEIsRUFBQXJNLElBQUE2Z0MsS0FDQTdnQyxF
QUFBNmdDLElBQUEsTUFFQSxJQUFBN2dDLEVBQUEwZ0MsSUFBQSxDQUNBLE9BQUEzM0MsR0FBQSxF
QUFtQkEsRUFBQWlYLEVBQUE2Z0MsSUFBQTcxQyxPQUFxQmpDLElBQ3hDc2pCLEVBQUFyTSxJQUFB
NmdDLElBQUE5M0MsR0FFQWlYLEdBQUE2Z0MsSUFBQSxNQUlBLFFBQUFPLEdBQUFKLEVBQUFDLEVB
QUFPLEdBQ0E5M0MsS0FBQXMzQyxZQUFBLGtCQUFBQSxLQUFBLEtBQ0F0M0MsS0FBQXUzQyxXQUFB
LGtCQUFBQSxLQUFBLEtBQ0F2M0MsS0FBQTgzQyxVQVNBLFFBQUFWLEdBQUF4M0MsRUFBQWs0QyxH
QUNBLEdBQUEzTixJQUFBLEVBQ0E1YyxFQUFBdXBCLEVBQUFsM0MsRUFBQSxTQUFBa1IsR0FDQXE1
QixJQUNBQSxHQUFBLEVBQ0FxTixFQUFBTSxFQUFBaG5DLEtBQ0csU0FBQW9uQyxHQUNIL04sSUFD
QUEsR0FBQSxFQUNBc04sRUFBQUssRUFBQUksS0FFQS9OLElBQUE1YyxJQUFBcXBCLElBQ0F6TSxH
QUFBLEVBQ0FzTixFQUFBSyxFQUFBbkIsSUFoTkEsR0FBQWxzQyxHQUFBL0wsRUFBQSxLQXFCQWk0
QyxFQUFBLEtBQ0FDLElBMkJBOTNDLEdBQUFELFFBQUFrNEMsRUFnQkFBLEVBQUFhLElBQUEsS0FD
QWIsRUFBQWtCLElBQUEsS0FDQWxCLEVBQUFvQixJQUFBbE4sRUFFQThMLEVBQUF4M0MsVUFBQWsz
QyxLQUFBLFNBQUFhLEVBQUFDLEdBQ0EsR0FBQXYzQyxLQUFBOE0sY0FBQWlxQyxFQUNBLE1BQUFN
LEdBQUFyM0MsS0FBQXMzQyxFQUFBQyxFQUVBLElBQUFocUIsR0FBQSxHQUFBd3BCLEdBQUE5TCxF
QUVBLE9BREF0b0IsR0FBQTNpQixLQUFBLEdBQUEwM0MsR0FBQUosRUFBQUMsRUFBQWhxQixJQUNB
QSxJdkYwcVNNLFNBQVN6dUIsRUFBUUQsRUFBU0gsR3dGN3VTaEMsWUFlQSxTQUFBMDVDLEdBQUE1
aEMsRUFBQTlMLEVBQUEydEMsR0FDQXI0QyxLQUFBd1csUUFDQXhXLEtBQUEwSyxVQUNBMUssS0FB
QXM0QyxLQUFBMTdCLEVBR0E1YyxLQUFBcTRDLFdBQUFFLEVBeUZBLFFBQUFDLEdBQUFoaUMsRUFB
QTlMLEVBQUEydEMsR0FFQXI0QyxLQUFBd1csUUFDQXhXLEtBQUEwSyxVQUNBMUssS0FBQXM0QyxL
QUFBMTdCLEVBR0E1YyxLQUFBcTRDLFdBQUFFLEVBR0EsUUFBQUUsTUF0SEEsR0FBQW56QyxHQUFB
NUcsRUFBQSxJQUNBbU0sRUFBQW5NLEVBQUEsR0FFQTY1QyxFQUFBNzVDLEVBQUEsSUFHQWtlLEdB
REFsZSxFQUFBLElBQ0FBLEVBQUEsSUFDQUEsR0FBQSxHQUNBQSxFQUFBLElBY0EwNUMsR0FBQTc0
QyxVQUFBaWtDLG9CQTJCQTRVLEVBQUE3NEMsVUFBQTh2QyxTQUFBLFNBQUFsZCxFQUFBMXBCLEdB
Q0EsZ0JBQUEwcEIsSUFBQSxrQkFBQUEsSUFBQSxNQUFBQSxFQUFBN3NCLEVBQUEsYUFDQXRGLEtB
QUFxNEMsUUFBQW5tQixnQkFBQWx5QixLQUFBbXlCLEdBQ0ExcEIsR0FDQXpJLEtBQUFxNEMsUUFB
QTVtQixnQkFBQXp4QixLQUFBeUksRUFBQSxhQWtCQTJ2QyxFQUFBNzRDLFVBQUFpdkMsWUFBQSxT
QUFBL2xDLEdBQ0F6SSxLQUFBcTRDLFFBQUF6bUIsbUJBQUE1eEIsTUFDQXlJLEdBQ0F6SSxLQUFB
cTRDLFFBQUE1bUIsZ0JBQUF6eEIsS0FBQXlJLEVBQUEsZUE2Q0Fnd0MsR0FBQWw1QyxVQUFBNjRD
LEVBQUE3NEMsVUFDQWk1QyxFQUFBajVDLFVBQUEsR0FBQWs1QyxHQUNBRCxFQUFBajVDLFVBQUF1
TixZQUFBMHJDLEVBRUEzdEMsRUFBQTJ0QyxFQUFBajVDLFVBQUE2NEMsRUFBQTc0QyxXQUNBaTVD
LEVBQUFqNUMsVUFBQW01QyxzQkFBQSxFQUVBNTVDLEVBQUFELFNBQ0EyVyxVQUFBNGlDLEVBQ0Ez
aUMsY0FBQStpQyxJeEY4dlNNLFNBQVMxNUMsRUFBUUQsRUFBU0gsR3lGLzNTaEMsWUFTQSxTQUFB
aTZDLEdBQUEvNEMsR0FFQSxHQUFBMnBCLEdBQUFHLFNBQUFucUIsVUFBQThHLFNBQ0E3RyxFQUFB
RixPQUFBQyxVQUFBQyxlQUNBbzVDLEVBQUFqZCxPQUFBLElBQUFwUyxFQUVBdHFCLEtBQUFPLEdB
RUFxQixRQUFBLHNCQUE2QixRQUU3QkEsUUFBQSxzRUFDQSxLQUNBLEdBQUFxQyxHQUFBcW1CLEVB
QUF0cUIsS0FBQVcsRUFDQSxPQUFBZzVDLEdBQUFwb0MsS0FBQXROLEdBQ0csTUFBQUwsR0FDSCxV
QThGQSxRQUFBZzJDLEdBQUE5NUMsR0FDQSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMsRUFDQSxJQUFB
KzVDLEVBQUEsQ0FDQSxHQUFBRSxHQUFBRixFQUFBRSxRQUVBQyxHQUFBbDZDLEdBQ0FpNkMsRUFB
QXQyQyxRQUFBbTJDLElBSUEsUUFBQUssR0FBQXA0QyxFQUFBb0MsRUFBQWkyQyxHQUNBLG1CQUFB
cjRDLEdBQUEsWUFBQW9DLEVBQUEsUUFBQUEsRUFBQWsyQyxTQUFBdjRDLFFBQUEsb0JBQUFxQyxF
QUFBbTJDLFdBQUEsSUFBQUYsRUFBQSxnQkFBQUEsRUFBQSxRQUdBLFFBQUFuTixHQUFBdjFCLEdB
Q0EsYUFBQUEsRUFDQSxTQUNHLGdCQUFBQSxJQUFBLGdCQUFBQSxHQUNILFFBQ0csZ0JBQUFBLEdB
QUE5TSxLQUNIOE0sRUFBQTlNLEtBRUE4TSxFQUFBOU0sS0FBQXduQixhQUFBMWEsRUFBQTlNLEtB
QUE3SSxNQUFBLFVBSUEsUUFBQXc0QyxHQUFBdjZDLEdBQ0EsR0FHQW82QyxHQUhBcjRDLEVBQUF5
NEMsRUFBQXZOLGVBQUFqdEMsR0FDQTBYLEVBQUE4aUMsRUFBQUMsV0FBQXo2QyxHQUNBMDZDLEVB
QUFGLEVBQUFHLFdBQUEzNkMsRUFNQSxPQUpBMDZDLEtBQ0FOLEVBQUFJLEVBQUF2TixlQUFBeU4s
SUFHQVAsRUFBQXA0QyxFQUFBMlYsS0FBQWMsUUFBQTRoQyxHQXZKQSxHQXNDQVEsR0FDQVosRUFD
QUUsRUFDQVcsRUFDQUMsRUFDQUMsRUFDQUMsRUE1Q0F6MEMsRUFBQTVHLEVBQUEsSUFFQWlRLEVB
QUFqUSxFQUFBLElBd0JBczdDLEdBdEJBdDdDLEVBQUEsR0FDQUEsRUFBQSxHQXVCQSxrQkFBQW9Z
LE9BQUEzVCxNQUVBLGtCQUFBODJDLE1BQUF0QixFQUFBc0IsTUFFQSxNQUFBQSxJQUFBMTZDLFdB
QUEsa0JBQUEwNkMsS0FBQTE2QyxVQUFBcUQsTUFBQSsxQyxFQUFBc0IsSUFBQTE2QyxVQUFBcUQs
T0FFQSxrQkFBQXMzQyxNQUFBdkIsRUFBQXVCLE1BRUEsTUFBQUEsSUFBQTM2QyxXQUFBLGtCQUFB
MjZDLEtBQUEzNkMsVUFBQXFELE1BQUErMUMsRUFBQXVCLElBQUEzNkMsVUFBQXFELE1BVUEsSUFB
QW8zQyxFQUFBLENBQ0EsR0FBQUcsR0FBQSxHQUFBRixLQUNBRyxFQUFBLEdBQUFGLElBRUFQLEdB
QUEsU0FBQTU2QyxFQUFBKzVDLEdBQ0FxQixFQUFBbCtCLElBQUFsZCxFQUFBKzVDLElBRUFDLEVB
QUEsU0FBQWg2QyxHQUNBLE1BQUFvN0MsR0FBQXArQixJQUFBaGQsSUFFQWs2QyxFQUFBLFNBQUFs
NkMsR0FDQW83QyxFQUFBLE9BQUFwN0MsSUFFQTY2QyxFQUFBLFdBQ0EsTUFBQTlpQyxPQUFBM1Qs
S0FBQWczQyxFQUFBdjNDLFNBR0FpM0MsRUFBQSxTQUFBOTZDLEdBQ0FxN0MsRUFBQUMsSUFBQXQ3
QyxJQUVBKzZDLEVBQUEsU0FBQS82QyxHQUNBcTdDLEVBQUEsT0FBQXI3QyxJQUVBZzdDLEVBQUEs
V0FDQSxNQUFBampDLE9BQUEzVCxLQUFBaTNDLEVBQUF4M0MsYUFFQyxDQUNELEdBQUEwM0MsTUFD
QUMsS0FJQUMsRUFBQSxTQUFBejdDLEdBQ0EsVUFBQUEsR0FFQTA3QyxFQUFBLFNBQUFsM0MsR0FD
QSxNQUFBbTNDLFVBQUFuM0MsRUFBQW8zQyxPQUFBLE9BR0FoQixHQUFBLFNBQUE1NkMsRUFBQSs1
QyxHQUNBLEdBQUF2MUMsR0FBQWkzQyxFQUFBejdDLEVBQ0F1N0MsR0FBQS8yQyxHQUFBdTFDLEdB
RUFDLEVBQUEsU0FBQWg2QyxHQUNBLEdBQUF3RSxHQUFBaTNDLEVBQUF6N0MsRUFDQSxPQUFBdTdD
LEdBQUEvMkMsSUFFQTAxQyxFQUFBLFNBQUFsNkMsR0FDQSxHQUFBd0UsR0FBQWkzQyxFQUFBejdD
LFNBQ0F1N0MsR0FBQS8yQyxJQUVBcTJDLEVBQUEsV0FDQSxNQUFBdDZDLFFBQUFzRCxLQUFBMDND
LEdBQUFqNEMsSUFBQW80QyxJQUdBWixFQUFBLFNBQUE5NkMsR0FDQSxHQUFBd0UsR0FBQWkzQyxF
QUFBejdDLEVBQ0F3N0MsR0FBQWgzQyxJQUFBLEdBRUF1MkMsRUFBQSxTQUFBLzZDLEdBQ0EsR0FB
QXdFLEdBQUFpM0MsRUFBQXo3QyxTQUNBdzdDLEdBQUFoM0MsSUFFQXcyQyxFQUFBLFdBQ0EsTUFB
QXo2QyxRQUFBc0QsS0FBQTIzQyxHQUFBbDRDLElBQUFvNEMsSUFJQSxHQUFBRyxNQXdDQXJCLEdB
Q0FzQixjQUFBLFNBQUE5N0MsRUFBQSs3QyxHQUNBLEdBQUFoQyxHQUFBQyxFQUFBaDZDLEVBQ0Er
NUMsR0FBQSxPQUFBeHpDLEVBQUEsT0FDQXd6QyxFQUFBRSxTQUFBOEIsQ0FFQSxRQUFBejdDLEdB
QUEsRUFBbUJBLEVBQUF5N0MsRUFBQXg1QyxPQUF5QmpDLElBQUEsQ0FDNUMsR0FBQTA3QyxHQUFB
RCxFQUFBejdDLEdBQ0EyN0MsRUFBQWpDLEVBQUFnQyxFQUNBQyxHQUFBLE9BQUExMUMsRUFBQSxP
QUNBLE1BQUEwMUMsRUFBQWhDLFVBQUEsZ0JBQUFnQyxHQUFBdmtDLFNBQUEsTUFBQXVrQyxFQUFB
dmtDLFFBQUFuUixFQUFBLGNBQ0EwMUMsRUFBQXhwQixVQUFBLE9BQUFsc0IsRUFBQSxNQUNBLE1B
QUEwMUMsRUFBQUMsV0FDQUQsRUFBQUMsU0FBQWw4QyxHQUtBaThDLEVBQUFDLFdBQUFsOEMsRUFB
QXVHLEVBQUEsTUFBQXkxQyxFQUFBQyxFQUFBQyxTQUFBbDhDLEdBQUEsU0FHQW04Qyx1QkFBQSxT
QUFBbjhDLEVBQUEwWCxFQUFBd2tDLEdBQ0EsR0FBQW5DLElBQ0FyaUMsVUFDQXdrQyxXQUNBOXJD
LEtBQUEsS0FDQTZwQyxZQUNBeG5CLFdBQUEsRUFDQTJwQixZQUFBLEVBRUF4QixHQUFBNTZDLEVB
QUErNUMsSUFFQXNDLHdCQUFBLFNBQUFyOEMsRUFBQTBYLEdBQ0EsR0FBQXFpQyxHQUFBQyxFQUFB
aDZDLEVBQ0ErNUMsTUFBQXRuQixZQUtBc25CLEVBQUFyaUMsWUFFQTRrQyxpQkFBQSxTQUFBdDhD
LEdBQ0EsR0FBQSs1QyxHQUFBQyxFQUFBaDZDLEVBQ0ErNUMsR0FBQSxPQUFBeHpDLEVBQUEsT0FD
QXd6QyxFQUFBdG5CLFdBQUEsQ0FDQSxJQUFBOHBCLEdBQUEsSUFBQXhDLEVBQUFtQyxRQUNBSyxJ
QUNBekIsRUFBQTk2QyxJQUdBdzhDLGtCQUFBLFNBQUF4OEMsR0FDQSxHQUFBKzVDLEdBQUFDLEVB
QUFoNkMsRUFDQSs1QyxNQUFBdG5CLFdBS0FzbkIsRUFBQXFDLGVBRUFLLG1CQUFBLFNBQUF6OEMs
R0FDQSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMsRUFDQSxJQUFBKzVDLEVBQUEsQ0FNQUEsRUFBQXRu
QixXQUFBLENBQ0EsSUFBQThwQixHQUFBLElBQUF4QyxFQUFBbUMsUUFDQUssSUFDQXhCLEVBQUEv
NkMsR0FHQTY3QyxFQUFBbjFDLEtBQUExRyxJQUVBMDhDLHlCQUFBLFdBQ0EsSUFBQWxDLEVBQUFt
QyxnQkFBQSxDQUtBLE9BQUFyOEMsR0FBQSxFQUFtQkEsRUFBQXU3QyxFQUFBdDVDLE9BQXlCakMs
SUFBQSxDQUM1QyxHQUFBTixHQUFBNjdDLEVBQUF2N0MsRUFDQXc1QyxHQUFBOTVDLEdBRUE2N0Ms
RUFBQXQ1QyxPQUFBLElBRUFrd0IsVUFBQSxTQUFBenlCLEdBQ0EsR0FBQSs1QyxHQUFBQyxFQUFB
aDZDLEVBQ0EsU0FBQSs1QyxLQUFBdG5CLFdBRUFtcUIsd0JBQUEsU0FBQUMsR0FDQSxHQUFBL1Qs
R0FBQSxFQUNBLElBQUErVCxFQUFBLENBQ0EsR0FBQTk2QyxHQUFBa3JDLEVBQUE0UCxHQUNBcmxD
LEVBQUFxbEMsRUFBQWpsQyxNQUNBa3hCLElBQUFxUixFQUFBcDRDLEVBQUE4NkMsRUFBQXJrQyxR
QUFBaEIsS0FBQTFNLFdBR0EsR0FBQWd5QyxHQUFBbHRDLEVBQUFDLFFBQ0E3UCxFQUFBODhDLEtB
QUFDLFFBR0EsT0FEQWpVLElBQUEwUixFQUFBd0MscUJBQUFoOUMsSUFHQWc5QyxxQkFBQSxTQUFB
aDlDLEdBRUEsSUFEQSxHQUFBOG9DLEdBQUEsR0FDQTlvQyxHQUNBOG9DLEdBQUF5UixFQUFBdjZD
LEdBQ0FBLEVBQUF3NkMsRUFBQXlDLFlBQUFqOUMsRUFFQSxPQUFBOG9DLElBRUFvVSxZQUFBLFNB
QUFsOUMsR0FDQSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMsRUFDQSxPQUFBKzVDLEtBQUFFLGFBRUFo
TixlQUFBLFNBQUFqdEMsR0FDQSxHQUFBMFgsR0FBQThpQyxFQUFBQyxXQUFBejZDLEVBQ0EsT0FB
QTBYLEdBR0F1MUIsRUFBQXYxQixHQUZBLE1BSUEraUMsV0FBQSxTQUFBejZDLEdBQ0EsR0FBQSs1
QyxHQUFBQyxFQUFBaDZDLEVBQ0EsT0FBQSs1QyxLQUFBcmlDLFFBQUEsTUFFQWlqQyxXQUFBLFNB
QUEzNkMsR0FDQSxHQUFBMFgsR0FBQThpQyxFQUFBQyxXQUFBejZDLEVBQ0EsT0FBQTBYLE1BQUFF
LE9BR0FGLEVBQUFFLE9BQUFtbEMsU0FGQSxNQUlBRSxZQUFBLFNBQUFqOUMsR0FDQSxHQUFBKzVD
LEdBQUFDLEVBQUFoNkMsRUFDQSxPQUFBKzVDLEtBQUFtQyxTQUFBLE1BRUFpQixVQUFBLFNBQUFu
OUMsR0FDQSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMsR0FDQTBYLEVBQUFxaUMsSUFBQXJpQyxRQUFB
LEtBQ0F2VCxFQUFBLE1BQUF1VCxJQUFBYyxRQUFBLElBQ0EsT0FBQXJVLElBRUFpNUMsUUFBQSxT
QUFBcDlDLEdBQ0EsR0FBQTBYLEdBQUE4aUMsRUFBQUMsV0FBQXo2QyxFQUNBLHVCQUFBMFgsR0FD
QUEsRUFDSyxnQkFBQUEsR0FDTCxHQUFBQSxFQUVBLE1BR0EybEMsZUFBQSxTQUFBcjlDLEdBQ0Es
R0FBQSs1QyxHQUFBQyxFQUFBaDZDLEVBQ0EsT0FBQSs1QyxLQUFBcUMsWUFBQSxHQUlBcEIsYUFD
QXNDLGlCQUFBekMsRUFFQTBDLDRCQUFBLFNBQUFDLEVBQUFDLEdBQ0EscUJBQUExeUMsU0FBQTJ5
QyxXQUFBLENBSUEsR0FBQUMsTUFDQWIsRUFBQWx0QyxFQUFBQyxRQUNBN1AsRUFBQTg4QyxLQUFB
QyxRQUVBLEtBU0EsSUFSQVMsR0FDQUcsRUFBQWozQyxNQUNBM0UsS0FBQS9CLEVBQUF3NkMsRUFB
QXZOLGVBQUFqdEMsR0FBQSxLQUNBcTZDLFNBQUFvRCxJQUFBcEQsU0FBQSxLQUNBQyxXQUFBbUQs
SUFBQW5ELFdBQUEsT0FJQXQ2QyxHQUFBLENBQ0EsR0FBQTBYLEdBQUE4aUMsRUFBQUMsV0FBQXo2
QyxHQUNBazhDLEVBQUExQixFQUFBeUMsWUFBQWo5QyxHQUNBMDZDLEVBQUFGLEVBQUFHLFdBQUEz
NkMsR0FDQW82QyxFQUFBTSxFQUFBRixFQUFBdk4sZUFBQXlOLEdBQUEsS0FDQXYyQyxFQUFBdVQs
S0FBQWMsT0FDQW1sQyxHQUFBajNDLE1BQ0EzRSxLQUFBcTRDLEVBQ0FDLFNBQUFsMkMsSUFBQWsy
QyxTQUFBLEtBQ0FDLFdBQUFuMkMsSUFBQW0yQyxXQUFBLE9BRUF0NkMsRUFBQWs4QyxHQUVLLE1B
QUFwNEMsSUFLTGlILFFBQUEyeUMsV0FBQUMsS0FFQUMsMkJBQUEsV0FDQSxrQkFBQTd5QyxTQUFB
OHlDLGVBR0E5eUMsUUFBQTh5QyxpQkFJQTk5QyxHQUFBRCxRQUFBMDZDLEd6Rmc1U00sU0FBU3o2
QyxFQUFRRCxHMEY5dlR2QixZQUtBLElBQUFxWCxHQUFBLGtCQUFBaWYsZ0JBQUEsS0FBQUEsT0FB
QSwyQkFFQXIyQixHQUFBRCxRQUFBcVgsRzFGK3dUTSxTQUFTcFgsRUFBUUQsRUFBU0gsRzJGdnhU
aEMsWUFJQSxTQUFBbStDLEdBQUF4ckIsRUFBQUMsSUFGQSxHQVlBaW5CLElBWkE3NUMsRUFBQSxJ
QW9CQTh5QixVQUFBLFNBQUFILEdBQ0EsVUFXQUksZ0JBQUEsU0FBQUosRUFBQTVvQixLQWVBbXBC
LG1CQUFBLFNBQUFQLEdBQ0F3ckIsRUFBQXhyQixFQUFBLGdCQWNBUyxvQkFBQSxTQUFBVCxFQUFB
VSxHQUNBOHFCLEVBQUF4ckIsRUFBQSxpQkFhQWEsZ0JBQUEsU0FBQWIsRUFBQWMsR0FDQTBxQixF
QUFBeHJCLEVBQUEsY0FJQXZ5QixHQUFBRCxRQUFBMDVDLEczRnV5VE0sU0FBU3o1QyxFQUFRRCxF
QUFTSCxHNEZ6M1RoQyxZQUVBLElBQUFvK0MsSUFBQSxDQVdBaCtDLEdBQUFELFFBQUFpK0MsRzVG
MDRUTSxTQUFTaCtDLEVBQVFELEc2Rmw2VHZCLFlBZUEsU0FBQW9vQixLQUNBLE9BQUFzckIsR0FB
QWx4QyxVQUFBQyxPQUFBeTdDLEVBQUFqbUMsTUFBQXk3QixHQUFBQyxFQUFBLEVBQWtFQSxFQUFB
RCxFQUFhQyxJQUMvRXVLLEVBQUF2SyxHQUFBbnhDLFVBQUFteEMsRUFHQSxZQUFBdUssRUFBQXo3
QyxPQUNBLFNBQUErRixHQUNBLE1BQUFBLElBSUEsSUFBQTAxQyxFQUFBejdDLE9BQ0F5N0MsRUFB
QSxHQUdBQSxFQUFBQyxPQUFBLFNBQUFuOUMsRUFBQUMsR0FDQSxrQkFDQSxNQUFBRCxHQUFBQyxF
QUFBQyxNQUFBVyxPQUFBVyxlQTlCQXhDLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUEsUUFBQW9v
QixHN0Z3OFRNLFNBQVNub0IsRUFBUUQsRUFBU0gsRzhGMzhUaEMsWUFjQSxTQUFBbW9CLEdBQUFD
LEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxRQUFBRixHQW9DM0UsUUFBQU8sR0FBQTQx
QixFQUFBQyxFQUFBQyxHQTBCRixRQUFBQyxLQUNBQyxJQUFBQyxJQUNBRCxFQUFBQyxFQUFBMzlD
LFNBU0EsUUFBQTZyQyxLQUNBLE1BQUErUixHQTBCQSxRQUFBL0wsR0FBQXg0QixHQUNBLHFCQUFB
QSxHQUNBLFNBQUFyWSxPQUFBLHNDQUdBLElBQUE0dUMsSUFBQSxDQUtBLE9BSEE2TixLQUNBQyxF
QUFBNTNDLEtBQUF1VCxHQUVBLFdBQ0EsR0FBQXUyQixFQUFBLENBSUFBLEdBQUEsRUFFQTZOLEdB
Q0EsSUFBQXYzQixHQUFBdzNCLEVBQUExeEIsUUFBQTNTLEVBQ0Fxa0MsR0FBQWx5QyxPQUFBMGEs
RUFBQSxLQTZCQSxRQUFBa3BCLEdBQUF5TyxHQUNBLE9BQUE5TCxFQUFBLFNBQUE4TCxHQUNBLFNB
QUE3OEMsT0FBQSwwRUFHQSx1QkFBQTY4QyxHQUFBN3pDLEtBQ0EsU0FBQWhKLE9BQUEscUZBR0Es
SUFBQTg4QyxFQUNBLFNBQUE5OEMsT0FBQSxxQ0FHQSxLQUNBODhDLEdBQUEsRUFDQUYsRUFBQUcs
RUFBQUgsRUFBQUMsR0FDSyxRQUNMQyxHQUFBLEVBSUEsT0FEQTlmLEdBQUEyZixFQUFBRCxFQUNB
aCtDLEVBQUEsRUFBbUJBLEVBQUFzK0IsRUFBQXI4QixPQUFzQmpDLElBQUEsQ0FDekMsR0FBQTJa
LEdBQUEya0IsRUFBQXQrQixFQUNBMlosS0FHQSxNQUFBd2tDLEdBYUEsUUFBQUcsR0FBQUMsR0FD
QSxxQkFBQUEsR0FDQSxTQUFBajlDLE9BQUEsNkNBR0ErOEMsR0FBQUUsRUFDQTdPLEdBQWNwbEMs
S0FBQWswQyxFQUFBQyxPQVNkLFFBQUFDLEtBQ0EsR0FBQWpTLEdBRUFrUyxFQUFBeE0sQ0FDQSxP
QUFBMUYsSUFTQTBGLFVBQUEsU0FBQXlNLEdBS0EsUUFBQUMsS0FDQUQsRUFBQW5ZLE1BQ0FtWSxF
QUFBblksS0FBQTBGLEtBTkEsbUJBQUF5UyxHQUNBLFNBQUFyOEMsV0FBQSx5Q0FTQXM4QyxJQUNB
LElBQUFDLEdBQUFILEVBQUFFLEVBQ0EsUUFBZ0JDLGlCQUVYclMsRUFBQXNTLEVBQUEsb0JBQ0ws
TUFBQXArQyxPQUNLOHJDLEVBbk1MLEdBQUFzQyxFQU9BLElBTEEsa0JBQUE4TyxJQUFBLG1CQUFB
QyxLQUNBQSxFQUFBRCxFQUNBQSxFQUFBeDhDLFFBR0EsbUJBQUF5OEMsR0FBQSxDQUNBLHFCQUFB
QSxHQUNBLFNBQUF4OEMsT0FBQSwwQ0FHQSxPQUFBdzhDLEdBQUE5MUIsR0FBQTQxQixFQUFBQyxH
QUdBLHFCQUFBRCxHQUNBLFNBQUF0OEMsT0FBQSx5Q0FHQSxJQUFBKzhDLEdBQUFULEVBQ0FNLEVB
QUFMLEVBQ0FJLEtBQ0FELEVBQUFDLEVBQ0FHLEdBQUEsQ0FvTEEsT0FGQTFPLElBQVlwbEMsS0FB
QWswQyxFQUFBQyxPQUVaMVAsR0FDQVcsV0FDQXlDLFlBQ0FoRyxXQUNBbVMsa0JBQ0d2UCxFQUFB
Z1EsRUFBQSxTQUFBTCxFQUFBM1AsRUFqUUh2dkMsRUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFBQWcv
QyxZQUFBbjlDLE9BQ0E3QixFQUFBLFFBQUF3b0IsQ0FFQSxJQUFBdXFCLEdBQUFsekMsRUFBQSxJ
QUVBZ3pDLEVBQUE3cUIsRUFBQStxQixHQUVBeU0sRUFBQTMvQyxFQUFBLEtBRUEwL0MsRUFBQXYz
QixFQUFBdzNCLEdBVUFSLEVBQUFoL0MsRUFBQWcvQyxhQUNBQyxLQUFBLGlCOUY4clVNLFNBQVNo
L0MsRUFBUUQsRytGcnRVdkIsWUFVQSxTQUFBb0MsR0FBQU0sR0FFQSxtQkFBQXVJLFVBQUEsa0JB
QUFBLFNBQUFySixPQUNBcUosUUFBQXJKLE1BQUFjLEVBR0EsS0FJQSxTQUFBWixPQUFBWSxHQUVH
LE1BQUFqQixLQXBCSHpCLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUEsUUFBQW9DLEcvRmd2VU0s
U0FBU25DLEVBQVFELEVBQVNILEdnR3p1VWhDLFlBZUEsU0FBQTQvQyxHQUFBMStDLEdBQ0EsTUFB
QUEsR0FjQSxRQUFBb1gsR0FBQW9oQyxFQUFBMWlDLEVBQUE2aUMsR0E4VUEsUUFBQWdHLEdBQUFD
LEVBQUExOUMsR0FDQSxHQUFBMjlDLEdBQUFDLEVBQUFsL0MsZUFBQXNCLEdBQ0E0OUMsRUFBQTU5
QyxHQUNBLElBR0E2OUMsR0FBQW4vQyxlQUFBc0IsSUFDQSt1QyxFQUNBLGtCQUFBNE8sRUFDQSwy
SkFHQTM5QyxHQUtBMDlDLEdBQ0EzTyxFQUNBLGdCQUFBNE8sR0FBQSx1QkFBQUEsRUFDQSxnSUFH
QTM5QyxHQVNBLFFBQUE4OUMsR0FBQS9qQixFQUFBZ2tCLEdBQ0EsR0FBQUEsRUFBQSxDQXFCQWhQ
LEVBQ0Esa0JBQUFnUCxHQUNBLHNIQUlBaFAsR0FDQW42QixFQUFBbXBDLEdBQ0EsbUdBSUEsSUFB
QXoxQixHQUFBeVIsRUFBQXQ3QixVQUNBdS9DLEVBQUExMUIsRUFBQTIxQixvQkFLQUYsR0FBQXIv
QyxlQUFBdy9DLElBQ0FDLEVBQUFDLE9BQUFya0IsRUFBQWdrQixFQUFBSyxPQUdBLFFBQUFwK0Ms
S0FBQSs5QyxHQUNBLEdBQUFBLEVBQUFyL0MsZUFBQXNCLElBSUFBLElBQUFrK0MsRUFBQSxDQUtB
LEdBQUFHLEdBQUFOLEVBQUEvOUMsR0FDQTA5QyxFQUFBcDFCLEVBQUE1cEIsZUFBQXNCLEVBR0Es
SUFGQXk5QyxFQUFBQyxFQUFBMTlDLEdBRUFtK0MsRUFBQXovQyxlQUFBc0IsR0FDQW0rQyxFQUFB
bitDLEdBQUErNUIsRUFBQXNrQixPQUNPLENBS1AsR0FBQUMsR0FBQVYsRUFBQWwvQyxlQUFBc0Is
R0FDQXUrQyxFQUFBLGtCQUFBRixHQUNBRyxFQUNBRCxJQUNBRCxJQUNBWixHQUNBSyxFQUFBVSxZ
QUFBLENBRUEsSUFBQUQsRUFDQVIsRUFBQXI1QyxLQUFBM0UsRUFBQXErQyxHQUNBLzFCLEVBQUF0
b0IsR0FBQXErQyxNQUVBLElBQUFYLEVBQUEsQ0FDQSxHQUFBQyxHQUFBQyxFQUFBNTlDLEVBR0Er
dUMsR0FDQXVQLElBQ0EsdUJBQUFYLEdBQ0EsZ0JBQUFBLEdBQ0EsbUZBRUFBLEVBQ0EzOUMsR0FL
QSx1QkFBQTI5QyxFQUNBcjFCLEVBQUF0b0IsR0FBQTArQyxFQUFBcDJCLEVBQUF0b0IsR0FBQXEr
QyxHQUNhLGdCQUFBVixJQUNicjFCLEVBQUF0b0IsR0FBQTIrQyxFQUFBcjJCLEVBQUF0b0IsR0FB
QXErQyxRQUdBLzFCLEdBQUF0b0IsR0FBQXErQyxVQWNBLFFBQUFPLEdBQUE3a0IsRUFBQThrQixH
QUNBLEdBQUFBLEVBR0EsT0FBQTcrQyxLQUFBNitDLEdBQUEsQ0FDQSxHQUFBUixHQUFBUSxFQUFB
NytDLEVBQ0EsSUFBQTYrQyxFQUFBbmdELGVBQUFzQixHQUFBLENBSUEsR0FBQTgrQyxHQUFBOStD
LElBQUFtK0MsRUFDQXBQLElBQ0ErUCxFQUNBLDBNQUlBOStDLEVBR0EsSUFBQSsrQyxHQUFBLytD
LElBQUErNUIsRUFDQWdWLElBQ0FnUSxFQUNBLHVIQUdBLytDLEdBRUErNUIsRUFBQS81QixHQUFB
cStDLElBV0EsUUFBQVcsR0FBQUMsRUFBQUMsR0FDQW5RLEVBQ0FrUSxHQUFBQyxHQUFBLGdCQUFB
RCxJQUFBLGdCQUFBQyxHQUNBLDREQUdBLFFBQUF6OEMsS0FBQXk4QyxHQUNBQSxFQUFBeGdELGVB
QUErRCxLQUNBc3NDLEVBQ0FudkMsU0FBQXEvQyxFQUFBeDhDLEdBQ0EseVBBS0FBLEdBRUF3OEMs
RUFBQXg4QyxHQUFBeThDLEVBQUF6OEMsR0FHQSxPQUFBdzhDLEdBV0EsUUFBQVAsR0FBQU8sRUFB
QUMsR0FDQSxrQkFDQSxHQUFBbmdELEdBQUFrZ0QsRUFBQWhnRCxNQUFBQyxLQUFBcUIsV0FDQXZC
LEVBQUFrZ0QsRUFBQWpnRCxNQUFBQyxLQUFBcUIsVUFDQSxVQUFBeEIsRUFDQSxNQUFBQyxFQUNP
LFVBQUFBLEVBQ1AsTUFBQUQsRUFFQSxJQUFBVixLQUdBLE9BRkEyZ0QsR0FBQTNnRCxFQUFBVSxH
QUNBaWdELEVBQUEzZ0QsRUFBQVcsR0FDQVgsR0FZQSxRQUFBc2dELEdBQUFNLEVBQUFDLEdBQ0Es
a0JBQ0FELEVBQUFoZ0QsTUFBQUMsS0FBQXFCLFdBQ0EyK0MsRUFBQWpnRCxNQUFBQyxLQUFBcUIs
WUFXQSxRQUFBNCtDLEdBQUFqOEMsRUFBQTZILEdBQ0EsR0FBQXEwQyxHQUFBcjBDLEVBQUFvTCxL
QUFBalQsRUFpREEsT0FBQWs4QyxHQVFBLFFBQUFDLEdBQUFuOEMsR0FFQSxPQURBbzhDLEdBQUFw
OEMsRUFBQSs2QyxxQkFDQTEvQyxFQUFBLEVBQW1CQSxFQUFBK2dELEVBQUE5K0MsT0FBa0JqQyxH
QUFBLEdBQ3JDLEdBQUFnaEQsR0FBQUQsRUFBQS9nRCxHQUNBd00sRUFBQXUwQyxFQUFBL2dELEVB
QUEsRUFDQTJFLEdBQUFxOEMsR0FBQUosRUFBQWo4QyxFQUFBNkgsSUFtRUEsUUFBQStKLEdBQUFp
cEMsR0FJQSxHQUFBaGtCLEdBQUF5akIsRUFBQSxTQUFBOW5DLEVBQUE5TCxFQUFBMnRDLEdBYUFy
NEMsS0FBQSsrQyxxQkFBQXo5QyxRQUNBNitDLEVBQUFuZ0QsTUFHQUEsS0FBQXdXLFFBQ0F4VyxL
QUFBMEssVUFDQTFLLEtBQUFzNEMsS0FBQTE3QixFQUNBNWMsS0FBQXE0QyxXQUFBRSxFQUVBdjRD
LEtBQUE2dEMsTUFBQSxJQUtBLElBQUF5UyxHQUFBdGdELEtBQUF1Z0QsZ0JBQUF2Z0QsS0FBQXVn
RCxrQkFBQSxJQVlBMVEsR0FDQSxnQkFBQXlRLEtBQUF4cEMsTUFBQXdSLFFBQUFnNEIsR0FDQSxz
REFDQXpsQixFQUFBMUosYUFBQSwyQkFHQW54QixLQUFBNnRDLE1BQUF5UyxHQUVBemxCLEdBQUF0
N0IsVUFBQSxHQUFBaWhELEdBQ0EzbEIsRUFBQXQ3QixVQUFBdU4sWUFBQSt0QixFQUNBQSxFQUFB
dDdCLFVBQUF3L0Msd0JBRUEwQixFQUFBLzlDLFFBQUFrOEMsRUFBQTNuQyxLQUFBLEtBQUE0akIs
SUFFQStqQixFQUFBL2pCLEVBQUE2bEIsR0FDQTlCLEVBQUEvakIsRUFBQWdrQixHQUNBRCxFQUFB
L2pCLEVBQUE4bEIsR0FHQTlsQixFQUFBK2xCLGtCQUNBL2xCLEVBQUE5akIsYUFBQThqQixFQUFB
K2xCLG1CQWdCQS9RLEVBQ0FoVixFQUFBdDdCLFVBQUFra0MsT0FDQSwwRUFxQkEsUUFBQXlJLEtB
QUF3UyxHQUNBN2pCLEVBQUF0N0IsVUFBQTJzQyxLQUNBclIsRUFBQXQ3QixVQUFBMnNDLEdBQUEs
S0FJQSxPQUFBclIsR0FwekJBLEdBQUE0bEIsTUF3QkEvQixHQU9BUSxPQUFBLGNBU0FTLFFBQUEs
Y0FRQTV2QixVQUFBLGNBUUErYyxhQUFBLGNBUUFJLGtCQUFBLGNBY0EwVCxnQkFBQSxxQkFnQkFM
LGdCQUFBLHFCQU1BcFMsZ0JBQUEscUJBaUJBMUssT0FBQSxjQVdBb2QsbUJBQUEsY0FZQXZTLGtC
QUFBLGNBcUJBRywwQkFBQSxjQXNCQWhELHNCQUFBLGNBaUJBcVYsb0JBQUEsY0FjQTNSLG1CQUFB
LGNBYUFULHFCQUFBLGNBY0FxUyxnQkFBQSxpQkFZQTlCLEdBQ0E5dEIsWUFBQSxTQUFBMEosRUFB
QTFKLEdBQ0EwSixFQUFBMUosZUFFQSt0QixPQUFBLFNBQUFya0IsRUFBQXFrQixHQUNBLEdBQUFB
LEVBQ0EsT0FBQTcvQyxHQUFBLEVBQXVCQSxFQUFBNi9DLEVBQUE1OUMsT0FBbUJqQyxJQUMxQ3Uv
QyxFQUFBL2pCLEVBQUFxa0IsRUFBQTcvQyxLQUlBNnRDLGtCQUFBLFNBQUFyUyxFQUFBcVMsR0FJ
QXJTLEVBQUFxUyxrQkFBQXJpQyxLQUVBZ3dCLEVBQUFxUyxrQkFDQUEsSUFHQUosYUFBQSxTQUFB
alMsRUFBQWlTLEdBSUFqUyxFQUFBaVMsYUFBQWppQyxLQUVBZ3dCLEVBQUFpUyxhQUNBQSxJQU9B
OFQsZ0JBQUEsU0FBQS9sQixFQUFBK2xCLEdBQ0EvbEIsRUFBQStsQixnQkFDQS9sQixFQUFBK2xC
LGdCQUFBcEIsRUFDQTNrQixFQUFBK2xCLGdCQUNBQSxHQUdBL2xCLEVBQUErbEIsbUJBR0E3d0Is
VUFBQSxTQUFBOEssRUFBQTlLLEdBSUE4SyxFQUFBOUssVUFBQWxsQixLQUF3Q2d3QixFQUFBOUss
Y0FFeEM0dkIsUUFBQSxTQUFBOWtCLEVBQUE4a0IsR0FDQUQsRUFBQTdrQixFQUFBOGtCLElBRUFK
LFNBQUEsY0FzVkFtQixHQUNBcFMsa0JBQUEsV0FDQXR1QyxLQUFBZ2hELGFBQUEsSUFJQUwsR0FD
QWpTLHFCQUFBLFdBQ0ExdUMsS0FBQWdoRCxhQUFBLElBUUFyQyxHQUtBc0MsYUFBQSxTQUFBQyxF
QUFBejRDLEdBQ0F6SSxLQUFBcTRDLFFBQUF2bUIsb0JBQUE5eEIsS0FBQWtoRCxFQUFBejRDLElB
U0Erb0IsVUFBQSxXQWFBLFFBQUF4eEIsS0FBQWdoRCxjQUlBUixFQUFBLFlBOEhBLE9BN0hBMzFD
LEdBQ0EyMUMsRUFBQWpoRCxVQUNBNjRDLEVBQUE3NEMsVUFDQW8vQyxHQTBIQS9vQyxFQXgxQkEs
R0FpQkF1ckMsR0FqQkF0MkMsRUFBQW5NLEVBQUEsR0FFQWtlLEVBQUFsZSxFQUFBLElBQ0FteEMs
RUFBQW54QyxFQUFBLEdBTUFzZ0QsRUFBQSxRQWdCQW1DLE1BazBCQXJpRCxFQUFBRCxRQUFBbVks
R2hHMHZVTSxTQUFTbFksRUFBUUQsR2lHam1XdkIsWUF3QkEsU0FBQXVpRCxHQUFBNzdCLEdBQ0Es
TUFBQUEsR0FBQTFrQixRQUFBd2dELEVBQUEsU0FBQUMsRUFBQUMsR0FDQSxNQUFBQSxHQUFBL3JC
LGdCQWJBLEdBQUE2ckIsR0FBQSxPQWlCQXZpRCxHQUFBRCxRQUFBdWlELEdqR3VtV00sU0FBU3Rp
RCxFQUFRRCxFQUFTSCxHa0cxbldoQyxZQXVCQSxTQUFBOGlELEdBQUFqOEIsR0FDQSxNQUFBNjdC
LEdBQUE3N0IsRUFBQTFrQixRQUFBNGdELEVBQUEsUUF0QkEsR0FBQUwsR0FBQTFpRCxFQUFBLElB
RUEraUQsRUFBQSxPQXVCQTNpRCxHQUFBRCxRQUFBMmlELEdsRzJvV00sU0FBUzFpRCxFQUFRRCxF
QUFTSCxHbUdqcldoQyxZQW9CQSxTQUFBc2dDLEdBQUEwaUIsRUFBQUMsR0FDQSxTQUFBRCxJQUFB
QyxLQUVHRCxJQUFBQyxJQUVBQyxFQUFBRixLQUVBRSxFQUFBRCxHQUNIM2lCLEVBQUEwaUIsRUFB
QUMsRUFBQWo4QyxZQUNHLFlBQUFnOEMsR0FDSEEsRUFBQUcsU0FBQUYsS0FDR0QsRUFBQUksNEJB
Q0gsR0FBQUosRUFBQUksd0JBQUFILE1BbkJBLEdBQUFDLEdBQUFsakQsRUFBQSxJQXlCQUksR0FB
QUQsUUFBQW1nQyxHbkd1cldNLFNBQVNsZ0MsRUFBUUQsRUFBU0gsR29HN3RXaEMsWUF3QkEsU0FB
QTRXLEdBQUF3UixHQUNBLEdBQUF4bEIsR0FBQXdsQixFQUFBeGxCLE1BZUEsSUFYQXdWLE1BQUF3
UixRQUFBeEIsSUFBQSxnQkFBQUEsSUFBQSxrQkFBQUEsR0FBQTVtQixHQUFBLFVBRUEsZ0JBQUFv
QixHQUFBcEIsR0FBQSxVQUVBLElBQUFvQixLQUFBLElBQUF3bEIsR0FBQSxPQUFBNW1CLEdBQUEs
R0FFQSxrQkFBQTRtQixHQUFBaTdCLE9BQW1MN2hELEdBQUEsVUFLbkw0bUIsRUFBQXRuQixlQUNB
LElBQ0EsTUFBQXNYLE9BQUF2WCxVQUFBSSxNQUFBVixLQUFBNm5CLEdBQ0ssTUFBQXhtQixJQVFM
LE9BREEwa0IsR0FBQWxPLE1BQUF4VixHQUNBNG9DLEVBQUEsRUFBa0JBLEVBQUE1b0MsRUFBYTRv
QyxJQUMvQmxsQixFQUFBa2xCLEdBQUFwakIsRUFBQW9qQixFQUVBLE9BQUFsbEIsR0FrQkEsUUFB
QWc5QixHQUFBbDdCLEdBQ0EsUUFFQUEsSUFFQSxnQkFBQUEsSUFBQSxrQkFBQUEsS0FFQSxVQUFB
QSxNQUVBLGVBQUFBLEtBR0EsZ0JBQUFBLEdBQUFuakIsV0FFQW1ULE1BQUF3UixRQUFBeEIsSUFF
QSxVQUFBQSxJQUVBLFFBQUFBLElBeUJBLFFBQUFtN0IsR0FBQW43QixHQUNBLE1BQUFrN0IsR0FB
QWw3QixHQUVHaFEsTUFBQXdSLFFBQUF4QixHQUNIQSxFQUFBbm5CLFFBRUEyVixFQUFBd1IsSUFK
QUEsR0F4R0EsR0FBQTVtQixHQUFBeEIsRUFBQSxFQWdIQUksR0FBQUQsUUFBQW9qRCxHcEdtdVdN
LFNBQVNuakQsRUFBUUQsRUFBU0gsR3FHaDJXaEMsWUFxQ0EsU0FBQXdqRCxHQUFBenVDLEdBQ0Es
R0FBQTB1QyxHQUFBMXVDLEVBQUFnUyxNQUFBMjhCLEVBQ0EsT0FBQUQsTUFBQSxHQUFBenhDLGNB
YUEsUUFBQTJ4QyxHQUFBNXVDLEVBQUE2dUMsR0FDQSxHQUFBNytDLEdBQUE4K0MsQ0FDQUEsR0FB
QSxPQUFBcmlELEdBQUEsRUFDQSxJQUFBNlAsR0FBQW15QyxFQUFBenVDLEdBRUErdUMsRUFBQXp5
QyxHQUFBMHlDLEVBQUExeUMsRUFDQSxJQUFBeXlDLEVBQUEsQ0FDQS8rQyxFQUFBNmlCLFVBQUFr
OEIsRUFBQSxHQUFBL3VDLEVBQUErdUMsRUFBQSxFQUdBLEtBREEsR0FBQUUsR0FBQUYsRUFBQSxH
QUNBRSxLQUNBai9DLElBQUFnL0IsY0FHQWgvQixHQUFBNmlCLFVBQUE3UyxDQUdBLElBQUFrdkMs
R0FBQWwvQyxFQUFBbS9DLHFCQUFBLFNBQ0FELEdBQUFyaEQsU0FDQWdoRCxFQUFBLE9BQUFwaUQs
R0FBQSxHQUNBK2hELEVBQUFVLEdBQUFqZ0QsUUFBQTQvQyxHQUlBLEtBREEsR0FBQU8sR0FBQS9y
QyxNQUFBM1QsS0FBQU0sRUFBQXEvQyxZQUNBci9DLEVBQUFnL0IsV0FDQWgvQixFQUFBa2pCLFlB
QUFsakIsRUFBQWcvQixVQUVBLE9BQUFvZ0IsR0FoRUEsR0FBQWw4QyxHQUFBakksRUFBQSxHQUVB
dWpELEVBQUF2akQsRUFBQSxLQUNBK2pELEVBQUEvakQsRUFBQSxLQUNBd0IsRUFBQXhCLEVBQUEs
R0FLQTZqRCxFQUFBNTdDLEVBQUFKLFVBQUFFLFNBQUFDLGNBQUEsWUFLQTA3QyxFQUFBLFlBcURB
dGpELEdBQUFELFFBQUF3akQsR3JHczJXTSxTQUFTdmpELEVBQVFELEVBQVNILEdzR3g3V2hDLFlB
NkVBLFNBQUErakQsR0FBQTF5QyxHQWFBLE1BWkF3eUMsR0FBQSxPQUFBcmlELEdBQUEsR0FDQTZp
RCxFQUFBdmpELGVBQUF1USxLQUNBQSxFQUFBLEtBRUFpekMsRUFBQXhqRCxlQUFBdVEsS0FDQSxN
QUFBQSxFQUNBd3lDLEVBQUFqOEIsVUFBQSxXQUVBaThCLEVBQUFqOEIsVUFBQSxJQUFBdlcsRUFB
QSxNQUFBQSxFQUFBLElBRUFpekMsRUFBQWp6QyxJQUFBd3lDLEVBQUF2OUMsWUFFQWcrQyxFQUFB
anpDLEdBQUFnekMsRUFBQWh6QyxHQUFBLEtBNUVBLEdBQUFwSixHQUFBakksRUFBQSxHQUVBd0Is
RUFBQXhCLEVBQUEsR0FLQTZqRCxFQUFBNTdDLEVBQUFKLFVBQUFFLFNBQUFDLGNBQUEsWUFTQXM4
QyxLQUVBQyxHQUFBLDBDQUNBQyxHQUFBLHdCQUNBQyxHQUFBLGdEQUVBQyxHQUFBLHVEQUVBTCxH
QUNBTSxLQUFBLHFCQUVBQyxNQUFBLG9CQUNBQyxLQUFBLDREQUNBQyxRQUFBLDhCQUNBQyxPQUFB
LDBCQUNBQyxJQUFBLHVDQUVBQyxTQUFBVixFQUNBVyxPQUFBWCxFQUVBWSxRQUFBWCxFQUNBWSxT
QUFBWixFQUNBYSxNQUFBYixFQUNBYyxNQUFBZCxFQUNBZSxNQUFBZixFQUVBZ0IsR0FBQWYsRUFD
QWdCLEdBQUFoQixHQU1BaUIsR0FBQSxvS0FDQUEsR0FBQTFoRCxRQUFBLFNBQUFxTixHQUNBZ3pD
LEVBQUFoekMsR0FBQXF6QyxFQUNBSixFQUFBanpDLElBQUEsSUEyQkFqUixFQUFBRCxRQUFBNGpE
LEd0Rzg3V00sU0FBUzNqRCxFQUFRRCxHdUdoaFh2QixZQWFBLFNBQUF3bEQsR0FBQUMsR0FDQSxN
QUFBQSxHQUFBQyxRQUFBRCxlQUFBQyxRQUVBOTdCLEVBQUE2N0IsRUFBQUUsYUFBQUYsRUFBQTc5
QyxTQUFBdzRCLGdCQUFBd2xCLFdBQ0EvN0IsRUFBQTQ3QixFQUFBSSxhQUFBSixFQUFBNzlDLFNB
QUF3NEIsZ0JBQUEwbEIsWUFJQWw4QixFQUFBNjdCLEVBQUFHLFdBQ0EvN0IsRUFBQTQ3QixFQUFB
SyxXQUlBN2xELEVBQUFELFFBQUF3bEQsR3ZHaWlYTSxTQUFTdmxELEVBQVFELEd3R3RrWHZCLFlB
MkJBLFNBQUErbEQsR0FBQXIvQixHQUNBLE1BQUFBLEdBQUExa0IsUUFBQWdrRCxFQUFBLE9BQUFu
MEMsY0FmQSxHQUFBbTBDLEdBQUEsVUFrQkEvbEQsR0FBQUQsUUFBQStsRCxHeEc0a1hNLFNBQVM5
bEQsRUFBUUQsRUFBU0gsR3lHaG1YaEMsWUFzQkEsU0FBQW9tRCxHQUFBdi9CLEdBQ0EsTUFBQXEv
QixHQUFBci9CLEdBQUExa0IsUUFBQTRnRCxFQUFBLFFBckJBLEdBQUFtRCxHQUFBbG1ELEVBQUEs
S0FFQStpRCxFQUFBLE1Bc0JBM2lELEdBQUFELFFBQUFpbUQsR3pHaW5YTSxTQUFTaG1ELEVBQVFE
LEcwR3RwWHZCLFlBaUJBLFNBQUFrbUQsR0FBQXZ0QyxHQUNBLEdBQUErRSxHQUFBL0UsSUFBQWdG
LGVBQUFoRixFQUFBL1EsU0FDQWdXLEVBQUFGLEVBQUFFLGFBQUFqVyxNQUNBLFVBQUFnUixLQUFB
LGtCQUFBaUYsR0FBQXVvQyxLQUFBeHRDLFlBQUFpRixHQUFBdW9DLEtBQUEsZ0JBQUF4dEMsSUFB
QSxnQkFBQUEsR0FBQTdULFVBQUEsZ0JBQUE2VCxHQUFBekgsV0FHQWpSLEVBQUFELFFBQUFrbUQs
RzFHNHBYTSxTQUFTam1ELEVBQVFELEVBQVNILEcyR25yWGhDLFlBbUJBLFNBQUFrakQsR0FBQXBx
QyxHQUNBLE1BQUF1dEMsR0FBQXZ0QyxJQUFBLEdBQUFBLEVBQUE3VCxTQVBBLEdBQUFvaEQsR0FB
QXJtRCxFQUFBLElBVUFJLEdBQUFELFFBQUEraUQsRzNHeXJYTSxTQUFTOWlELEVBQVFELEc0R3Bz
WHZCLFlBTUEsU0FBQW9tRCxHQUFBeDhDLEdBQ0EsR0FBQXk4QyxLQUNBLGlCQUFBMy9CLEdBSUEs
TUFIQTIvQixHQUFBMWxELGVBQUErbEIsS0FDQTIvQixFQUFBMy9CLEdBQUE5YyxFQUFBeEosS0FB
QWUsS0FBQXVsQixJQUVBMi9CLEVBQUEzL0IsSUFJQXptQixFQUFBRCxRQUFBb21ELEc1R3N0WE0s
U0FBU25tRCxFQUFRRCxHNkc5dVh2QixZQUVBLElBQUFzbUQsSUFDQWpZLG1CQUFBLEVBQ0FKLGNB
QUEsRUFDQS8xQixjQUFBLEVBQ0FvYSxhQUFBLEVBQ0F5dkIsaUJBQUEsRUFDQTFCLFFBQUEsRUFD
QW52QixXQUFBLEVBQ0FwbUIsTUFBQSxHQUdBeTdDLEdBQ0F0a0QsTUFBQSxFQUNBUSxRQUFBLEVB
Q0EvQixXQUFBLEVBQ0E4bEQsUUFBQSxFQUNBdEQsUUFBQSxFQUNBMWdELFdBQUEsRUFDQWlrRCxP
QUFBLEdBR0FuZSxFQUFBN25DLE9BQUE2bkMsZUFDQWxsQyxFQUFBM0MsT0FBQTJDLG9CQUNBYSxF
QUFBeEQsT0FBQXdELHNCQUNBbWtDLEVBQUEzbkMsT0FBQTJuQyx5QkFDQXdMLEVBQUFuekMsT0FB
QW16QyxlQUNBOFMsRUFBQTlTLEtBQUFuekMsT0FFQVIsR0FBQUQsUUFBQSxRQUFBMm1ELEdBQUFD
LEVBQUFDLEVBQUFDLEdBQ0EsbUJBQUFELEdBQUEsQ0FFQSxHQUFBSCxFQUFBLENBQ0EsR0FBQUss
R0FBQW5ULEVBQUFpVCxFQUNBRSxRQUFBTCxHQUNBQyxFQUFBQyxFQUFBRyxFQUFBRCxHQUlBLEdB
QUEvaUQsR0FBQVgsRUFBQXlqRCxFQUVBNWlELEtBQ0FGLElBQUEzQyxPQUFBNkMsRUFBQTRpRCxJ
QUdBLFFBQUFybUQsR0FBQSxFQUF1QkEsRUFBQXVELEVBQUF0QixTQUFpQmpDLEVBQUEsQ0FDeEMs
R0FBQWtFLEdBQUFYLEVBQUF2RCxFQUNBLE1BQUE4bEQsRUFBQTVoRCxJQUFBNmhELEVBQUE3aEQs
SUFBQW9pRCxLQUFBcGlELElBQUEsQ0FDQSxHQUFBeWpDLEdBQUFDLEVBQUF5ZSxFQUFBbmlELEVB
Q0EsS0FDQTRqQyxFQUFBc2UsRUFBQWxpRCxFQUFBeWpDLEdBQ2lCLE1BQUExbUMsTUFJakIsTUFB
QW1sRCxHQUdBLE1BQUFBLEs3RzB2WE0sU0FBUzNtRCxFQUFRRCxFQUFTSCxHOEdoelhoQyxZQWFB
LElBQUF3QixHQUFBLFNBQUFDLEVBQUFDLEVBQUFQLEVBQUFDLEVBQUFYLEVBQUFrQixFQUFBQyxF
QUFBQyxHQU9BLElBQUFKLEVBQUEsQ0FDQSxHQUFBTSxFQUNBLElBQUFDLFNBQUFOLEVBQ0FLLEVB
QUEsR0FBQUUsT0FDQSxxSUFHSyxDQUNMLEdBQUFqQixJQUFBRyxFQUFBQyxFQUFBWCxFQUFBa0Is
RUFBQUMsRUFBQUMsR0FDQUssRUFBQSxDQUNBSCxHQUFBLEdBQUFFLE9BQ0FQLEVBQUFTLFFBQUEs
aUJBQTBDLE1BQUFuQixHQUFBa0IsUUFFMUNILEVBQUFLLEtBQUEsc0JBSUEsS0FEQUwsR0FBQU0s
WUFBQSxFQUNBTixHQUlBM0IsR0FBQUQsUUFBQXFCLEc5R2cwWE0sU0FBU3BCLEVBQVFELEVBQVNI
LEcrR2gyWGhDLFFBQUF3cUIsR0FBQXBZLEdBQ0EsYUFBQUEsRUFDQXBRLFNBQUFvUSxFQUFBKzBD
LEVBQUFDLEVBRUFDLE9BQUF6bUQsUUFBQXdSLEdBQ0FrMUMsRUFBQWwxQyxHQUNBbTFDLEVBQUFu
MUMsR0F4QkEsR0FBQXFrQixHQUFBejJCLEVBQUEsSUFDQXNuRCxFQUFBdG5ELEVBQUEsS0FDQXVu
RCxFQUFBdm5ELEVBQUEsS0FHQW9uRCxFQUFBLGdCQUNBRCxFQUFBLHFCQUdBRSxFQUFBNXdCLElB
QUErd0IsWUFBQXhsRCxNQWtCQTVCLEdBQUFELFFBQUFxcUIsRy9HeTNYTSxTQUFTcHFCLEVBQVFE
LElnSHA1WHZCLFNBQUFzbkQsR0FDQSxHQUFBQyxHQUFBLGdCQUFBRCxTQUFBN21ELGlCQUFBNm1E
LENBRUFybkQsR0FBQUQsUUFBQXVuRCxJaEh3NVg4Qm5uRCxLQUFLSixFQUFVLFdBQWEsTUFBT21C
LFdBSTNELFNBQVNsQixFQUFRRCxFQUFTSCxHaUgvNVhoQyxHQUFBMm5ELEdBQUEzbkQsRUFBQSxL
QUdBMnFCLEVBQUFnOUIsRUFBQS9tRCxPQUFBbXpDLGVBQUFuekMsT0FFQVIsR0FBQUQsUUFBQXdx
QixHakhzNlhNLFNBQVN2cUIsRUFBUUQsRUFBU0gsR2tIbDVYaEMsUUFBQXNuRCxHQUFBbDFDLEdB
Q0EsR0FBQXcxQyxHQUFBOW1ELEVBQUFQLEtBQUE2UixFQUFBaTFDLEdBQ0FydUMsRUFBQTVHLEVB
QUFpMUMsRUFFQSxLQUNBajFDLEVBQUFpMUMsR0FBQXJsRCxNQUNBLElBQUE2bEQsSUFBQSxFQUNH
LE1BQUFqbUQsSUFFSCxHQUFBa21ELEdBQUFDLEVBQUF4bkQsS0FBQTZSLEVBUUEsT0FQQXkxQyxL
QUNBRCxFQUNBeDFDLEVBQUFpMUMsR0FBQXJ1QyxRQUVBNUcsR0FBQWkxQyxJQUdBUyxFQTFDQSxH
QUFBcnhCLEdBQUF6MkIsRUFBQSxJQUdBaXJCLEVBQUFycUIsT0FBQUMsVUFHQUMsRUFBQW1xQixF
QUFBbnFCLGVBT0FpbkQsRUFBQTk4QixFQUFBdGpCLFNBR0EwL0MsRUFBQTV3QixJQUFBK3dCLFlB
QUF4bEQsTUE2QkE1QixHQUFBRCxRQUFBbW5ELEdsSGs3WE0sU0FBU2xuRCxFQUFRRCxHbUg5OFh2
QixRQUFBb25ELEdBQUFuMUMsR0FDQSxNQUFBMjFDLEdBQUF4bkQsS0FBQTZSLEdBakJBLEdBQUE2
WSxHQUFBcnFCLE9BQUFDLFVBT0FrbkQsRUFBQTk4QixFQUFBdGpCLFFBYUF2SCxHQUFBRCxRQUFB
b25ELEduSHMrWE0sU0FBU25uRCxFQUFRRCxHb0huL1h2QixRQUFBd25ELEdBQUFuMkIsRUFBQXcy
QixHQUNBLGdCQUFBci9DLEdBQ0EsTUFBQTZvQixHQUFBdzJCLEVBQUFyL0MsS0FJQXZJLEVBQUFE
LFFBQUF3bkQsR3BIa2dZTSxTQUFTdm5ELEVBQVFELEVBQVNILEdxSGhoWWhDLEdBQUEwbkQsR0FB
QTFuRCxFQUFBLEtBR0Fpb0QsRUFBQSxnQkFBQXJ3QyxrQkFBQWhYLGlCQUFBZ1gsS0FHQTRlLEVB
QUFreEIsR0FBQU8sR0FBQWo5QixTQUFBLGdCQUVBNXFCLEdBQUFELFFBQUFxMkIsR3JIdWhZTSxT
QUFTcDJCLEVBQVFELEdzSHZnWXZCLFFBQUFvcUIsR0FBQW5ZLEdBQ0EsYUFBQUEsR0FBQSxnQkFB
QUEsR0FHQWhTLEVBQUFELFFBQUFvcUIsR3RIc2lZTSxTQUFTbnFCLEVBQVFELEVBQVNILEd1SHpq
WWhDLFlBb0JBLFNBQUEyeEIsR0FBQXUyQixFQUFBQyxFQUFBQyxFQUFBOTJCLEVBQUErMkIsSUEr
QkFqb0QsRUFBQUQsUUFBQXd4QixHdkh5a1lNLFNBQVN2eEIsRUFBUUQsRUFBU0gsR3dINW5ZaEMs
WUFFQSxJQUFBc0MsR0FBQXRDLEVBQUEsR0FDQXdCLEVBQUF4QixFQUFBLEdBQ0E2d0IsRUFBQTd3
QixFQUFBLEdBRUFJLEdBQUFELFFBQUEsV0FDQSxRQUFBbW9ELEdBQUF4d0MsRUFBQXpKLEVBQUFp
akIsRUFBQTgyQixFQUFBRyxFQUFBQyxHQUNBQSxJQUFBMzNCLEdBSUFydkIsR0FDQSxFQUNBLG1M
QU1BLFFBQUFpbkQsS0FDQSxNQUFBSCxHQUZBQSxFQUFBelYsV0FBQXlWLENBTUEsSUFBQXR5QyxJ
QUNBMGdDLE1BQUE0UixFQUNBdlQsS0FBQXVULEVBQ0E5MkIsS0FBQTgyQixFQUNBbmUsT0FBQW1l
LEVBQ0F4dkMsT0FBQXd2QyxFQUNBemhDLE9BQUF5aEMsRUFDQUksT0FBQUosRUFFQUssSUFBQUws
RUFDQU0sUUFBQUgsRUFDQTF3QyxRQUFBdXdDLEVBQ0FPLFdBQUFKLEVBQ0ExakQsS0FBQXVqRCxF
QUNBUSxTQUFBTCxFQUNBTSxNQUFBTixFQUNBTyxVQUFBUCxFQUNBN1YsTUFBQTZWLEVBTUEsT0FI
QXp5QyxHQUFBMmIsZUFBQXJ2QixFQUNBMFQsRUFBQWlCLFVBQUFqQixFQUVBQSxJeEg2b1lNLFNB
QVM1VixFQUFRRCxFQUFTSCxHeUg3clloQyxZQUVBLElBQUFzQyxHQUFBdEMsRUFBQSxHQUNBd0Is
RUFBQXhCLEVBQUEsR0FDQXVDLEVBQUF2QyxFQUFBLEdBRUE2d0IsRUFBQTd3QixFQUFBLElBQ0Ey
eEIsRUFBQTN4QixFQUFBLElBRUFJLEdBQUFELFFBQUEsU0FBQTZXLEVBQUEwZixHQW1CQSxRQUFB
MFUsR0FBQTZkLEdBQ0EsR0FBQTlkLEdBQUE4ZCxJQUFBQyxHQUFBRCxFQUFBQyxJQUFBRCxFQUFB
RSxHQUNBLHNCQUFBaGUsR0FDQSxNQUFBQSxHQWdGQSxRQUFBcmhCLEdBQUFDLEVBQUFDLEdBRUEs
TUFBQUQsS0FBQUMsRUFHQSxJQUFBRCxHQUFBLEVBQUFBLElBQUEsRUFBQUMsRUFHQUQsT0FBQUMs
TUFZQSxRQUFBby9CLEdBQUF2bUQsR0FDQXZCLEtBQUF1QixVQUNBdkIsS0FBQTA4QyxNQUFBLEdB
S0EsUUFBQXFMLEdBQUFDLEdBS0EsUUFBQUMsR0FBQTFXLEVBQUEvNkIsRUFBQXpKLEVBQUFpakIs
RUFBQTgyQixFQUFBRyxFQUFBQyxHQUlBLEdBSEFsM0IsS0FBQWs0QixFQUNBakIsS0FBQWw2QyxF
QUVBbTZDLElBQUEzM0IsRUFDQSxHQUFBNkYsRUFFQWwxQixHQUNBLEVBQ0EsMExBMkJBLGFBQUFz
VyxFQUFBekosR0FDQXdrQyxFQUVBLEdBQUF1VyxHQURBLE9BQUF0eEMsRUFBQXpKLEdBQ0EsT0FB
QSs1QyxFQUFBLEtBQUFHLEVBQUEsbUNBQUFqM0IsRUFBQSwrQkFFQSxPQUFBODJCLEVBQUEsS0FB
QUcsRUFBQSxtQ0FBQWozQixFQUFBLHFDQUVBLEtBRUFnNEIsRUFBQXh4QyxFQUFBekosRUFBQWlq
QixFQUFBODJCLEVBQUFHLEdBaERBLEdBb0RBa0IsR0FBQUYsRUFBQWh4QyxLQUFBLFFBR0EsT0FG
QWt4QyxHQUFBNVcsV0FBQTBXLEVBQUFoeEMsS0FBQSxTQUVBa3hDLEVBR0EsUUFBQUMsR0FBQUMs
R0FDQSxRQUFBTCxHQUFBeHhDLEVBQUF6SixFQUFBaWpCLEVBQUE4MkIsRUFBQUcsRUFBQUMsR0FD
QSxHQUFBbHFCLEdBQUF4bUIsRUFBQXpKLEdBQ0F1N0MsRUFBQUMsRUFBQXZyQixFQUNBLElBQUFz
ckIsSUFBQUQsRUFBQSxDQUlBLEdBQUFHLEdBQUFDLEVBQUF6ckIsRUFFQSxXQUFBOHFCLEdBQUEs
V0FBQWhCLEVBQUEsS0FBQUcsRUFBQSxrQkFBQXVCLEVBQUEsa0JBQUF4NEIsRUFBQSxxQkFBQXE0
QixFQUFBLE9BRUEsWUFFQSxNQUFBTixHQUFBQyxHQUdBLFFBQUFVLEtBQ0EsTUFBQVgsR0FBQS9t
RCxFQUFBeUcsaUJBR0EsUUFBQWtoRCxHQUFBQyxHQUNBLFFBQUFaLEdBQUF4eEMsRUFBQXpKLEVB
QUFpakIsRUFBQTgyQixFQUFBRyxHQUNBLHFCQUFBMkIsR0FDQSxVQUFBZCxHQUFBLGFBQUFiLEVB
QUEsbUJBQUFqM0IsRUFBQSxrREFFQSxJQUFBZ04sR0FBQXhtQixFQUFBekosRUFDQSxLQUFBK0os
TUFBQXdSLFFBQUEwVSxHQUFBLENBQ0EsR0FBQXNyQixHQUFBQyxFQUFBdnJCLEVBQ0EsV0FBQThx
QixHQUFBLFdBQUFoQixFQUFBLEtBQUFHLEVBQUEsa0JBQUFxQixFQUFBLGtCQUFBdDRCLEVBQUEs
MEJBRUEsT0FBQTN3QixHQUFBLEVBQXFCQSxFQUFBMjlCLEVBQUExN0IsT0FBc0JqQyxJQUFBLENB
QzNDLEdBQUFvQixHQUFBbW9ELEVBQUE1ckIsRUFBQTM5QixFQUFBMndCLEVBQUE4MkIsRUFBQUcs
RUFBQSxJQUFBNW5ELEVBQUEsSUFBQWt3QixFQUNBLElBQUE5dUIsWUFBQUUsT0FDQSxNQUFBRixH
QUdBLFlBRUEsTUFBQXNuRCxHQUFBQyxHQUdBLFFBQUFhLEtBQ0EsUUFBQWIsR0FBQXh4QyxFQUFB
ekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdBQ0EsR0FBQWpxQixHQUFBeG1CLEVBQUF6SixFQUNB
LEtBQUEySSxFQUFBc25CLEdBQUEsQ0FDQSxHQUFBc3JCLEdBQUFDLEVBQUF2ckIsRUFDQSxXQUFB
OHFCLEdBQUEsV0FBQWhCLEVBQUEsS0FBQUcsRUFBQSxrQkFBQXFCLEVBQUEsa0JBQUF0NEIsRUFB
QSx1Q0FFQSxZQUVBLE1BQUErM0IsR0FBQUMsR0FHQSxRQUFBYyxHQUFBQyxHQUNBLFFBQUFmLEdB
QUF4eEMsRUFBQXpKLEVBQUFpakIsRUFBQTgyQixFQUFBRyxHQUNBLEtBQUF6d0MsRUFBQXpKLFlB
QUFnOEMsSUFBQSxDQUNBLEdBQUFDLEdBQUFELEVBQUFqb0QsTUFBQW9uRCxFQUNBZSxFQUFBQyxF
QUFBMXlDLEVBQUF6SixHQUNBLFdBQUErNkMsR0FBQSxXQUFBaEIsRUFBQSxLQUFBRyxFQUFBLGtC
QUFBZ0MsRUFBQSxrQkFBQWo1QixFQUFBLGlDQUFBZzVCLEVBQUEsT0FFQSxZQUVBLE1BQUFqQixH
QUFBQyxHQUdBLFFBQUFtQixHQUFBQyxHQU1BLFFBQUFwQixHQUFBeHhDLEVBQUF6SixFQUFBaWpC
LEVBQUE4MkIsRUFBQUcsR0FFQSxPQURBanFCLEdBQUF4bUIsRUFBQXpKLEdBQ0ExTixFQUFBLEVB
QXFCQSxFQUFBK3BELEVBQUE5bkQsT0FBMkJqQyxJQUNoRCxHQUFBbXBCLEVBQUF3VSxFQUFBb3NC
LEVBQUEvcEQsSUFDQSxXQUlBLElBQUFncUQsR0FBQWhjLEtBQUFDLFVBQUE4YixFQUNBLFdBQUF0
QixHQUFBLFdBQUFoQixFQUFBLEtBQUFHLEVBQUEsZUFBQWpxQixFQUFBLHNCQUFBaE4sRUFBQSxz
QkFBQXE1QixFQUFBLE1BZEEsTUFBQXZ5QyxPQUFBd1IsUUFBQThnQyxHQWdCQXJCLEVBQUFDLEdB
ZEFobkQsRUFBQXlHLGdCQWlCQSxRQUFBNmhELEdBQUFWLEdBQ0EsUUFBQVosR0FBQXh4QyxFQUFB
ekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdBQ0EscUJBQUEyQixHQUNBLFVBQUFkLEdBQUEsYUFB
QWIsRUFBQSxtQkFBQWozQixFQUFBLG1EQUVBLElBQUFnTixHQUFBeG1CLEVBQUF6SixHQUNBdTdD
LEVBQUFDLEVBQUF2ckIsRUFDQSxlQUFBc3JCLEVBQ0EsVUFBQVIsR0FBQSxXQUFBaEIsRUFBQSxL
QUFBRyxFQUFBLGtCQUFBcUIsRUFBQSxrQkFBQXQ0QixFQUFBLDBCQUVBLFFBQUF6c0IsS0FBQXk1
QixHQUNBLEdBQUFBLEVBQUF4OUIsZUFBQStELEdBQUEsQ0FDQSxHQUFBOUMsR0FBQW1vRCxFQUFB
NXJCLEVBQUF6NUIsRUFBQXlzQixFQUFBODJCLEVBQUFHLEVBQUEsSUFBQTFqRCxFQUFBZ3NCLEVB
Q0EsSUFBQTl1QixZQUFBRSxPQUNBLE1BQUFGLEdBSUEsWUFFQSxNQUFBc25ELEdBQUFDLEdBR0Es
UUFBQXVCLEdBQUFDLEdBb0JBLFFBQUF4QixHQUFBeHhDLEVBQUF6SixFQUFBaWpCLEVBQUE4MkIs
RUFBQUcsR0FDQSxPQUFBNW5ELEdBQUEsRUFBcUJBLEVBQUFtcUQsRUFBQWxvRCxPQUFnQ2pDLElB
QUEsQ0FDckQsR0FBQW9xRCxHQUFBRCxFQUFBbnFELEVBQ0EsVUFBQW9xRCxFQUFBanpDLEVBQUF6
SixFQUFBaWpCLEVBQUE4MkIsRUFBQUcsRUFBQTEzQixHQUNBLFlBSUEsVUFBQXU0QixHQUFBLFdB
QUFoQixFQUFBLEtBQUFHLEVBQUEsc0JBQUFqM0IsRUFBQSxPQTNCQSxJQUFBbFosTUFBQXdSLFFB
QUFraEMsR0FFQSxNQUFBeG9ELEdBQUF5RyxlQUdBLFFBQUFwSSxHQUFBLEVBQW1CQSxFQUFBbXFE
LEVBQUFsb0QsT0FBZ0NqQyxJQUFBLENBQ25ELEdBQUFvcUQsR0FBQUQsRUFBQW5xRCxFQUNBLHNC
QUFBb3FELEdBUUEsTUFQQXhvRCxJQUNBLEVBQ0EsNEdBRUF5b0QsRUFBQUQsR0FDQXBxRCxHQUVB
MkIsRUFBQXlHLGdCQWNBLE1BQUFzZ0QsR0FBQUMsR0FHQSxRQUFBMkIsS0FDQSxRQUFBM0IsR0FB
QXh4QyxFQUFBekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdBQ0EsTUFBQWxDLEdBQUF2dUMsRUFB
QXpKLElBR0EsS0FGQSxHQUFBKzZDLEdBQUEsV0FBQWhCLEVBQUEsS0FBQUcsRUFBQSxzQkFBQWoz
QixFQUFBLDZCQUlBLE1BQUErM0IsR0FBQUMsR0FHQSxRQUFBNEIsR0FBQUMsR0FDQSxRQUFBN0Is
R0FBQXh4QyxFQUFBekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdBQ0EsR0FBQWpxQixHQUFBeG1C
LEVBQUF6SixHQUNBdTdDLEVBQUFDLEVBQUF2ckIsRUFDQSxlQUFBc3JCLEVBQ0EsVUFBQVIsR0FB
QSxXQUFBaEIsRUFBQSxLQUFBRyxFQUFBLGNBQUFxQixFQUFBLHNCQUFBdDRCLEVBQUEseUJBRUEs
UUFBQXpzQixLQUFBc21ELEdBQUEsQ0FDQSxHQUFBSixHQUFBSSxFQUFBdG1ELEVBQ0EsSUFBQWtt
RCxFQUFBLENBR0EsR0FBQWhwRCxHQUFBZ3BELEVBQUF6c0IsRUFBQXo1QixFQUFBeXNCLEVBQUE4
MkIsRUFBQUcsRUFBQSxJQUFBMWpELEVBQUFnc0IsRUFDQSxJQUFBOXVCLEVBQ0EsTUFBQUEsSUFH
QSxZQUVBLE1BQUFzbkQsR0FBQUMsR0FHQSxRQUFBakQsR0FBQS9uQixHQUNBLGFBQUFBLElBQ0Es
YUFDQSxhQUNBLGdCQUNBLFFBQ0EsZUFDQSxPQUFBQSxDQUNBLGNBQ0EsR0FBQWxtQixNQUFBd1Is
UUFBQTBVLEdBQ0EsTUFBQUEsR0FBQThzQixNQUFBL0UsRUFFQSxXQUFBL25CLEdBQUF0bkIsRUFB
QXNuQixHQUNBLFFBR0EsSUFBQTZNLEdBQUFDLEVBQUE5TSxFQUNBLEtBQUE2TSxFQXFCQSxRQXBC
QSxJQUNBRSxHQURBQyxFQUFBSCxFQUFBNXFDLEtBQUErOUIsRUFFQSxJQUFBNk0sSUFBQTdNLEVB
QUFpTixTQUNBLE9BQUFGLEVBQUFDLEVBQUFsRSxRQUFBcUUsTUFDQSxJQUFBNGEsRUFBQWhiLEVB
QUFqNUIsT0FDQSxhQUtBLFFBQUFpNUIsRUFBQUMsRUFBQWxFLFFBQUFxRSxNQUFBLENBQ0EsR0FB
QUMsR0FBQUwsRUFBQWo1QixLQUNBLElBQUFzNUIsSUFDQTJhLEVBQUEzYSxFQUFBLElBQ0EsU0FT
QSxRQUNBLFNBQ0EsVUFJQSxRQUFBMmYsR0FBQXpCLEVBQUF0ckIsR0FFQSxpQkFBQXNyQixJQUtB
LFdBQUF0ckIsRUFBQSxrQkFLQSxrQkFBQTdILFNBQUE2SCxZQUFBN0gsU0FRQSxRQUFBb3pCLEdB
QUF2ckIsR0FDQSxHQUFBc3JCLFNBQUF0ckIsRUFDQSxPQUFBbG1CLE9BQUF3UixRQUFBMFUsR0FD
QSxRQUVBQSxZQUFBckIsUUFJQSxTQUVBb3VCLEVBQUF6QixFQUFBdHJCLEdBQ0EsU0FFQXNyQixF
QUtBLFFBQUFHLEdBQUF6ckIsR0FDQSxzQkFBQUEsSUFBQSxPQUFBQSxFQUNBLFNBQUFBLENBRUEs
SUFBQXNyQixHQUFBQyxFQUFBdnJCLEVBQ0EsZUFBQXNyQixFQUFBLENBQ0EsR0FBQXRyQixZQUFB
bHZCLE1BQ0EsWUFDTyxJQUFBa3ZCLFlBQUFyQixRQUNQLGVBR0EsTUFBQTJzQixHQUtBLFFBQUFv
QixHQUFBNTRDLEdBQ0EsR0FBQW5ILEdBQUE4K0MsRUFBQTMzQyxFQUNBLFFBQUFuSCxHQUNBLFlB
Q0EsYUFDQSxZQUFBQSxDQUNBLGVBQ0EsV0FDQSxhQUNBLFdBQUFBLENBQ0EsU0FDQSxNQUFBQSxJ
QUtBLFFBQUF1L0MsR0FBQWxzQixHQUNBLE1BQUFBLEdBQUFsd0IsYUFBQWt3QixFQUFBbHdCLFlB
QUFoTSxLQUdBazhCLEVBQUFsd0IsWUFBQWhNLEtBRkFvbkQsRUFsZUEsR0FBQU4sR0FBQSxrQkFB
QXp5QixnQkFBQTZVLFNBQ0E2ZCxFQUFBLGFBc0VBSyxFQUFBLGdCQUlBeHpDLEdBQ0EwZ0MsTUFB
QWdULEVBQUEsU0FDQTNVLEtBQUEyVSxFQUFBLFdBQ0FsNEIsS0FBQWs0QixFQUFBLFlBQ0F2ZixP
QUFBdWYsRUFBQSxVQUNBNXdDLE9BQUE0d0MsRUFBQSxVQUNBN2lDLE9BQUE2aUMsRUFBQSxVQUNB
aEIsT0FBQWdCLEVBQUEsVUFFQWYsSUFBQXFCLElBQ0FwQixRQUFBcUIsRUFDQWx5QyxRQUFBb3lD
LElBQ0F0QixXQUFBdUIsRUFDQXJsRCxLQUFBa21ELElBQ0FuQyxTQUFBOEIsRUFDQTdCLE1BQUEw
QixFQUNBekIsVUFBQTZCLEVBQ0FqWSxNQUFBc1ksRUE4WUEsT0E3V0E5QixHQUFBdm9ELFVBQUFv
QixNQUFBcEIsVUEwV0FtVixFQUFBMmIsaUJBQ0EzYixFQUFBaUIsVUFBQWpCLEVBRUFBLEl6SDhz
WU0sU0FBUzVWLEVBQVFELEVBQVNILEcwSDVzWmhDLFlBRUFJLEdBQUFELFFBQUFILEVBQUEsTTFI
bXRaTSxTQUFTSSxFQUFRRCxHMkgzc1p2QixZQUVBLElBQUFtckQsSUFDQXY0QyxZQUVBdzRDLGVB
QUEsRUFDQUMsZUFBQSxFQUNBQyxnQkFBQSxFQUNBQyxjQUFBLEVBQ0FDLGVBQUEsRUFDQUMsb0JB
QUEsRUFDQUMsYUFBQSxFQUNBQyx1QkFBQSxFQUVBQyxvQkFBQSxFQUNBQyxlQUFBLEVBQ0FDLGdC
QUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGFBQUEsRUFDQUMsYUFBQSxFQUNBQyxpQkFBQSxFQUNBQyx1
QkFBQSxFQUNBQyxtQkFBQSxFQUNBQyxtQkFBQSxFQUNBQyxlQUFBLEVBQ0FDLGdCQUFBLEVBQ0FD
LGdCQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLFlBQUEsRUFDQUMsZ0JBQUEsRUFDQUMsZ0JBQUEsRUFD
QUMsZ0JBQUEsRUFDQUMsaUJBQUEsRUFFQUMsY0FBQSxFQUNBQyxZQUFBLEVBQ0FDLFlBQUEsRUFD
QUMsZ0JBQUEsRUFFQUMsa0JBQUEsRUFDQUMsZUFBQSxFQUVBQyx3QkFBQSxFQUNBQyxnQkFBQSxF
QUNBQyxnQkFBQSxFQUNBQyxlQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLG1CQUFBLEVBQ0FDLG9CQUFB
LEVBQ0FDLGNBQUEsRUFDQUMsa0JBQUEsRUFDQUMsWUFBQSxFQUNBQyxnQkFBQSxFQUNBQyxnQkFB
QSxFQUNBQyxnQkFBQSxFQUNBQyxlQUFBLEVBQ0FDLGVBQUEsR0FFQXI3QyxxQkFDQUMsb0JBR0E5
UyxHQUFBRCxRQUFBbXJELEczSDJ0Wk0sU0FBU2xyRCxFQUFRRCxFQUFTSCxHNEh6eFpoQyxZQUVB
LElBQUE0SCxHQUFBNUgsRUFBQSxHQUVBbTJCLEVBQUFuMkIsRUFBQSxJQUVBdXVELEdBQ0FDLGtC
QUFBLFdBQ0FyNEIsRUFBQXZ1QixFQUFBUixvQkFBQTlGLFFBSUFsQixHQUFBRCxRQUFBb3VELEc1
SHl5Wk0sU0FBU251RCxFQUFRRCxFQUFTSCxHNkhyelpoQyxZQWdDQSxTQUFBeXVELEtBQ0EsR0FB
QUMsR0FBQTVtRCxPQUFBNG1ELEtBQ0EsdUJBQUFBLElBQUEsa0JBQUFBLEdBQUF0M0MsU0FBQTRr
QyxTQUFBMFMsRUFBQXQzQyxVQUFBLFFBOENBLFFBQUF1M0MsR0FBQTNnRCxHQUNBLE9BQUFBLEVB
QUFnWCxTQUFBaFgsRUFBQWtYLFFBQUFsWCxFQUFBbVgsWUFFQW5YLEVBQUFnWCxTQUFBaFgsRUFB
QWtYLFFBU0EsUUFBQTBwQyxHQUFBNXpDLEdBQ0EsT0FBQUEsR0FDQSwwQkFDQSxNQUFBbVMsR0FB
QTBoQyxnQkFDQSx5QkFDQSxNQUFBMWhDLEdBQUEyaEMsY0FDQSw0QkFDQSxNQUFBM2hDLEdBQUE0
aEMsbUJBWUEsUUFBQUMsR0FBQWgwQyxFQUFBaE4sR0FDQSxxQkFBQWdOLEdBQUFoTixFQUFBcW1C
LFVBQUE0NkIsRUFVQSxRQUFBQyxHQUFBbDBDLEVBQUFoTixHQUNBLE9BQUFnTixHQUNBLGVBRUEs
TUFBQW0wQyxHQUFBbGlDLFFBQUFqZixFQUFBcW1CLGFBQ0Esa0JBR0EsTUFBQXJtQixHQUFBcW1C
LFVBQUE0NkIsQ0FDQSxtQkFDQSxtQkFDQSxjQUVBLFFBQ0EsU0FDQSxVQWFBLFFBQUFHLEdBQUFw
aEQsR0FDQSxHQUFBaVEsR0FBQWpRLEVBQUFpUSxNQUNBLHVCQUFBQSxJQUFBLFFBQUFBLEdBQ0FB
LEVBQUErSixLQUVBLEtBU0EsUUFBQXFuQyxHQUFBcjBDLEVBQUFqTixFQUFBQyxFQUFBQyxHQUNB
LEdBQUE4bkIsR0FDQXU1QixDQVlBLElBVkFDLEVBQ0F4NUIsRUFBQTY0QixFQUFBNXpDLEdBQ0d3
MEMsRUFJQU4sRUFBQWwwQyxFQUFBaE4sS0FDSCtuQixFQUFBNUksRUFBQTJoQyxnQkFKQUUsRUFB
QWgwQyxFQUFBaE4sS0FDQStuQixFQUFBNUksRUFBQTBoQyxtQkFNQTk0QixFQUNBLFdBR0EwNUIs
S0FHQUQsR0FBQXo1QixJQUFBNUksRUFBQTBoQyxpQkFFSzk0QixJQUFBNUksRUFBQTJoQyxnQkFD
TFUsSUFDQUYsRUFBQUUsRUFBQUUsV0FIQUYsRUFBQUcsRUFBQS9sRCxVQUFBcUUsR0FRQSxJQUFB
a0IsR0FBQXlnRCxFQUFBaG1ELFVBQUFtc0IsRUFBQWhvQixFQUFBQyxFQUFBQyxFQUVBLElBQUFx
aEQsRUFHQW5nRCxFQUFBNlksS0FBQXNuQyxNQUNHLENBQ0gsR0FBQU8sR0FBQVQsRUFBQXBoRCxF
QUNBLFFBQUE2aEQsSUFDQTFnRCxFQUFBNlksS0FBQTZuQyxHQUtBLE1BREE1eUMsR0FBQVAsNkJB
QUF2TixHQUNBQSxFQVFBLFFBQUEyZ0QsR0FBQTkwQyxFQUFBaE4sR0FDQSxPQUFBZ04sR0FDQSx3
QkFDQSxNQUFBbzBDLEdBQUFwaEQsRUFDQSxtQkFlQSxHQUFBa21DLEdBQUFsbUMsRUFBQWttQyxL
QUNBLE9BQUFBLEtBQUE2YixFQUNBLE1BR0FDLEdBQUEsRUFDQUMsRUFFQSxvQkFFQSxHQUFBQyxH
QUFBbGlELEVBQUFnYSxJQUtBLE9BQUFrb0MsS0FBQUQsR0FBQUQsRUFDQSxLQUdBRSxDQUVBLFNB
RUEsYUFZQSxRQUFBQyxHQUFBbjFDLEVBQUFoTixHQUtBLEdBQUF3aEQsRUFBQSxDQUNBLHlCQUFB
eDBDLElBQUF1MEMsR0FBQUwsRUFBQWwwQyxFQUFBaE4sR0FBQSxDQUNBLEdBQUFraUQsR0FBQVYs
RUFBQUUsU0FHQSxPQUZBQyxHQUFBMWlELFFBQUF1aUQsR0FDQUEsRUFBQSxLQUNBVSxFQUVBLFlB
R0EsT0FBQWwxQyxHQUNBLGVBR0EsV0FDQSxtQkFpQkEsTUFBQWhOLEdBQUFrbUMsUUFBQXlhLEVB
QUEzZ0QsR0FDQTFLLE9BQUFHLGFBQUF1SyxFQUFBa21DLE9BRUEsSUFDQSx5QkFDQSxNQUFBdWIs
R0FBQSxLQUFBemhELEVBQUFnYSxJQUNBLFNBQ0EsYUFVQSxRQUFBb29DLEdBQUFwMUMsRUFBQWpO
LEVBQUFDLEVBQUFDLEdBQ0EsR0FBQWlpRCxFQVVBLElBUEFBLEVBREFHLEVBQ0FQLEVBQUE5MEMs
RUFBQWhOLEdBRUFtaUQsRUFBQW4xQyxFQUFBaE4sSUFLQWtpRCxFQUNBLFdBR0EsSUFBQS9nRCxH
QUFBbWhELEVBQUExbUQsVUFBQXVqQixFQUFBb2pDLFlBQUF4aUQsRUFBQUMsRUFBQUMsRUFJQSxP
QUZBa0IsR0FBQTZZLEtBQUFrb0MsRUFDQWp6QyxFQUFBUCw2QkFBQXZOLEdBQ0FBLEVBclZBLEdB
QUE4TixHQUFBamQsRUFBQSxJQUNBaUksRUFBQWpJLEVBQUEsR0FDQTJ2RCxFQUFBM3ZELEVBQUEs
S0FDQTR2RCxFQUFBNXZELEVBQUEsS0FDQXN3RCxFQUFBdHdELEVBQUEsS0FFQW12RCxHQUFBLFlB
Q0FGLEVBQUEsSUFFQU0sRUFBQXRuRCxFQUFBSixXQUFBLG9CQUFBQyxRQUVBNkosRUFBQSxJQUNB
MUosR0FBQUosV0FBQSxnQkFBQUUsWUFDQTRKLEVBQUE1SixTQUFBNEosYUFNQSxJQUFBMCtDLEdB
QUFwb0QsRUFBQUosV0FBQSxhQUFBQyxVQUFBNkosSUFBQTg4QyxJQUtBZ0IsRUFBQXhuRCxFQUFB
SixhQUFBMG5ELEdBQUE1OUMsS0FBQSxHQUFBQSxHQUFBLElBV0FvK0MsRUFBQSxHQUNBRSxFQUFB
M3NELE9BQUFHLGFBQUFzc0QsR0FHQTVpQyxHQUNBb2pDLGFBQ0ExMEMseUJBQ0EyMEMsUUFBQSxn
QkFDQUMsU0FBQSx3QkFFQS9zQyxjQUFBLDhEQUVBb3JDLGdCQUNBanpDLHlCQUNBMjBDLFFBQUEs
bUJBQ0FDLFNBQUEsMkJBRUEvc0MsY0FBQSxxRkFFQW1yQyxrQkFDQWh6Qyx5QkFDQTIwQyxRQUFB
LHFCQUNBQyxTQUFBLDZCQUVBL3NDLGNBQUEsdUZBRUFxckMsbUJBQ0FsekMseUJBQ0EyMEMsUUFB
QSxzQkFDQUMsU0FBQSw4QkFFQS9zQyxjQUFBLHlGQUtBc3NDLEdBQUEsRUFzRkFSLEVBQUEsS0E2
TUFrQixHQUNBdmpDLGFBRUFwUyxjQUFBLFNBQUFDLEVBQUFqTixFQUFBQyxFQUFBQyxHQUNBLE9B
QUFvaEQsRUFBQXIwQyxFQUFBak4sRUFBQUMsRUFBQUMsR0FBQW1pRCxFQUFBcDFDLEVBQUFqTixF
QUFBQyxFQUFBQyxLQUlBN04sR0FBQUQsUUFBQXV3RCxHN0hxMFpNLFNBQVN0d0QsRUFBUUQsRUFB
U0gsRzhIenJhaEMsWUFFQSxJQUFBZzhCLEdBQUFoOEIsRUFBQSxJQUNBaUksRUFBQWpJLEVBQUEs
R0FJQTJ3RCxHQUhBM3dELEVBQUEsR0FFQUEsRUFBQSxJQUNBQSxFQUFBLE1BQ0FvbUQsRUFBQXBt
RCxFQUFBLEtBQ0F1bUQsRUFBQXZtRCxFQUFBLEtBR0E0d0QsR0FGQTV3RCxFQUFBLEdBRUF1bUQs
RUFBQSxTQUFBc0ssR0FDQSxNQUFBekssR0FBQXlLLE1BR0FDLEdBQUEsRUFDQUMsRUFBQSxVQUNB
LElBQUE5b0QsRUFBQUosVUFBQSxDQUNBLEdBQUFtcEQsR0FBQWpwRCxTQUFBQyxjQUFBLE9BQUFp
cEQsS0FDQSxLQUVBRCxFQUFBejFCLEtBQUEsR0FDRyxNQUFBMzVCLEdBQ0hrdkQsR0FBQSxFQUdB
OXVELFNBQUErRixTQUFBdzRCLGdCQUFBMHdCLE1BQUFDLFdBQ0FILEVBQUEsY0FNQSxHQWtGQUks
SUFjQUMsc0JBQUEsU0FBQUMsRUFBQS9yRCxHQUNBLEdBQUFnc0QsR0FBQSxFQUNBLFFBQUFULEtB
QUFRLEdBQ0EsR0FBQUEsRUFBQXZ3RCxlQUFBK3ZELEdBQUEsQ0FHQSxHQUFBVSxHQUFBLElBQUFW
LEVBQUE1akMsUUFBQSxNQUNBdWtDLEVBQUFILEVBQUFSLEVBTUEsT0FBQVcsSUFDQUYsR0FBQVYs
RUFBQUMsR0FBQSxJQUNBUyxHQUFBWCxFQUFBRSxFQUFBVyxFQUFBbHNELEVBQUFpc0QsR0FBQSxL
QUdBLE1BQUFELElBQUEsTUFXQUcsa0JBQUEsU0FBQTFzRCxFQUFBc3NELEVBQUEvckQsR0FTQSxH
QUFBMnJELEdBQUFsc0QsRUFBQWtzRCxLQUNBLFFBQUFKLEtBQUFRLEdBQ0EsR0FBQUEsRUFBQXZ3
RCxlQUFBK3ZELEdBQUEsQ0FHQSxHQUFBVSxHQUFBLElBQUFWLEVBQUE1akMsUUFBQSxNQU1BdWtD
LEVBQUFiLEVBQUFFLEVBQUFRLEVBQUFSLEdBQUF2ckQsRUFBQWlzRCxFQUlBLElBSEEsVUFBQVYs
R0FBQSxhQUFBQSxJQUNBQSxFQUFBRSxHQUVBUSxFQUNBTixFQUFBUyxZQUFBYixFQUFBVyxPQUNP
LElBQUFBLEVBQ1BQLEVBQUFKLEdBQUFXLE1BQ08sQ0FDUCxHQUFBRyxHQUFBYixHQUFBOTBCLEVB
QUF0Qyw0QkFBQW0zQixFQUNBLElBQUFjLEVBR0EsT0FBQUMsS0FBQUQsR0FDQVYsRUFBQVcsR0FB
QSxPQUdBWCxHQUFBSixHQUFBLE1BT0F6d0QsR0FBQUQsUUFBQWd4RCxHOUh5c2FNLFNBQVMvd0Qs
RUFBUUQsRUFBU0gsRytIcDVhaEMsWUF3QkEsU0FBQTZ4RCxHQUFBbnNELEVBQUFzSSxFQUFBekos
R0FDQSxHQUFBNEssR0FBQXRCLEVBQUFqRSxVQUFBdWpCLEVBQUEya0MsT0FBQXBzRCxFQUFBc0ks
RUFBQXpKLEVBR0EsT0FGQTRLLEdBQUFsRSxLQUFBLFNBQ0FnUyxFQUFBUCw2QkFBQXZOLEdBQ0FB
LEVBV0EsUUFBQTRpRCxHQUFBcHhCLEdBQ0EsR0FBQXR2QixHQUFBc3ZCLEVBQUF0dkIsVUFBQXN2
QixFQUFBdHZCLFNBQUFXLGFBQ0Esa0JBQUFYLEdBQUEsVUFBQUEsR0FBQSxTQUFBc3ZCLEVBQUEx
MUIsS0FTQSxRQUFBK21ELEdBQUFoa0QsR0FDQSxHQUFBbUIsR0FBQTBpRCxFQUFBSSxFQUFBamtE
LEVBQUEwUCxFQUFBMVAsR0FhQTVFLEdBQUFVLGVBQUFvb0QsRUFBQS9pRCxHQUdBLFFBQUEraUQs
R0FBQS9pRCxHQUNBOEssRUFBQW9CLGNBQUFsTSxHQUNBOEssRUFBQXFCLG1CQUFBLEdBR0EsUUFB
QTYyQyxHQUFBNXRELEVBQUF3SixHQUNBdW9CLEVBQUEveEIsRUFDQTB0RCxFQUFBbGtELEVBQ0F1
b0IsRUFBQWh1QixZQUFBLFdBQUEwcEQsR0FHQSxRQUFBSSxLQUNBOTdCLElBR0FBLEVBQUFMLFlB
QUEsV0FBQSs3QixHQUNBMTdCLEVBQUEsS0FDQTI3QixFQUFBLE1BR0EsUUFBQUksR0FBQXRrRCxF
QUFBQyxHQUNBLEdBQUFza0QsR0FBQXBxQixFQUFBWSxxQkFBQS82QixHQUNBNEwsRUFBQTNMLEVB
QUEyTCxhQUFBLEdBQUE0NEMsRUFBQUMsMEJBRUEsSUFBQUYsR0FBQTM0QyxFQUNBLE1BQUE1TCxH
QUlBLFFBQUEwa0QsR0FBQXozQyxFQUFBak4sR0FDQSxpQkFBQWlOLEVBQ0EsTUFBQWpOLEdBSUEs
UUFBQTJrRCxHQUFBMTNDLEVBQUF6VyxFQUFBd0osR0FDQSxhQUFBaU4sR0FHQW8zQyxJQUNBRCxF
QUFBNXRELEVBQUF3SixJQUNHLFlBQUFpTixHQUNIbzNDLElBb0JBLFFBQUFPLEdBQUFwdUQsRUFB
QXdKLEdBQ0F1b0IsRUFBQS94QixFQUNBMHRELEVBQUFsa0QsRUFDQXVvQixFQUFBaHVCLFlBQUEs
bUJBQUFzcUQsR0FPQSxRQUFBQyxLQUNBdjhCLElBR0FBLEVBQUFMLFlBQUEsbUJBQUEyOEIsR0FF
QXQ4QixFQUFBLEtBQ0EyN0IsRUFBQSxNQU9BLFFBQUFXLEdBQUE1a0QsR0FDQSxVQUFBQSxFQUFB
NEYsY0FHQXkrQyxFQUFBSixFQUFBamtELElBQ0Fna0QsRUFBQWhrRCxHQUlBLFFBQUE4a0QsR0FB
QTkzQyxFQUFBelcsRUFBQXdKLEdBQ0EsYUFBQWlOLEdBY0E2M0MsSUFDQUYsRUFBQXB1RCxFQUFB
d0osSUFDRyxZQUFBaU4sR0FDSDYzQyxJQUtBLFFBQUFFLEdBQUEvM0MsRUFBQWpOLEVBQUFDLEdB
Q0EsMEJBQUFnTixHQUFBLGFBQUFBLEdBQUEsZUFBQUEsRUFXQSxNQUFBcTNDLEdBQUFKLEVBQUFq
a0QsR0FPQSxRQUFBZ2xELEdBQUFyeUIsR0FJQSxHQUFBdHZCLEdBQUFzdkIsRUFBQXR2QixRQUNB
LE9BQUFBLElBQUEsVUFBQUEsRUFBQVcsZ0JBQUEsYUFBQTJ1QixFQUFBMTFCLE1BQUEsVUFBQTAx
QixFQUFBMTFCO0NBR0EsUUFBQWdvRCxHQUFBajRDLEVBQUFqTixFQUFBQyxHQUNBLGdCQUFBZ04s
RUFDQSxNQUFBcTNDLEdBQUF0a0QsRUFBQUMsR0FJQSxRQUFBa2xELEdBQUFsNEMsRUFBQWpOLEVB
QUFDLEdBQ0EsZ0JBQUFnTixHQUFBLGNBQUFBLEVBQ0EsTUFBQXEzQyxHQUFBdGtELEVBQUFDLEdB
SUEsUUFBQW1sRCxHQUFBenRELEVBQUFYLEdBRUEsU0FBQVcsRUFBQSxDQUtBLEdBQUF5cEMsR0FB
QXpwQyxFQUFBdTRCLGVBQUFsNUIsRUFBQWs1QixhQUVBLElBQUFrUixLQUFBaWtCLFlBQUEsV0FB
QXJ1RCxFQUFBa0csS0FBQSxDQUtBLEdBQUFtSCxHQUFBLEdBQUFyTixFQUFBcU4sS0FDQXJOLEdB
QUFHLGFBQUEsV0FBQWtOLEdBQ0FyTixFQUFBb3dCLGFBQUEsUUFBQS9pQixLQTlPQSxHQUFBNkgs
R0FBQWphLEVBQUEsSUFDQWlkLEVBQUFqZCxFQUFBLElBQ0FpSSxFQUFBakksRUFBQSxHQUNBNEgs
RUFBQTVILEVBQUEsR0FDQW9KLEVBQUFwSixFQUFBLEdBQ0E2TixFQUFBN04sRUFBQSxJQUVBa29D
LEVBQUFsb0MsRUFBQSxJQUNBMGQsRUFBQTFkLEVBQUEsSUFDQTRlLEVBQUE1ZSxFQUFBLElBQ0Ey
cEMsRUFBQTNwQyxFQUFBLElBRUFtdEIsR0FDQTJrQyxRQUNBajJDLHlCQUNBMjBDLFFBQUEsV0FD
QUMsU0FBQSxtQkFFQS9zQyxjQUFBLHVHQWFBNFMsRUFBQSxLQUNBMjdCLEVBQUEsS0FVQW9CLEdB
QUEsQ0FDQXByRCxHQUFBSixZQUVBd3JELEVBQUF6MEMsRUFBQSxhQUFBN1csU0FBQTRKLGNBQUE1
SixTQUFBNEosYUFBQSxHQXFFQSxJQUFBMmhELElBQUEsQ0FDQXJyRCxHQUFBSixZQUlBeXJELEVB
QUExMEMsRUFBQSw2QkFBQTdXLHFCQUFBNEosYUFBQSxHQXFJQSxJQUFBNGdELElBQ0FwbEMsYUFF
QXFsQyw0QkFBQSxFQUNBZSx1QkFBQUQsRUFFQXY0QyxjQUFBLFNBQUFDLEVBQUFqTixFQUFBQyxF
QUFBQyxHQUNBLEdBRUF1bEQsR0FBQUMsRUFGQUMsRUFBQTNsRCxFQUFBbkcsRUFBQVIsb0JBQUEy
RyxHQUFBakcsTUFvQkEsSUFqQkFpcUQsRUFBQTJCLEdBQ0FMLEVBQ0FHLEVBQUFmLEVBRUFnQixF
QUFBZixFQUVLL29CLEVBQUErcEIsR0FDTEosRUFDQUUsRUFBQU4sR0FFQU0sRUFBQVQsRUFDQVUs
RUFBQVgsR0FFS0UsRUFBQVUsS0FDTEYsRUFBQVAsR0FHQU8sRUFBQSxDQUNBLEdBQUE5dEQsR0FB
QTh0RCxFQUFBeDRDLEVBQUFqTixFQUFBQyxFQUNBLElBQUF0SSxFQUFBLENBQ0EsR0FBQXlKLEdB
QUEwaUQsRUFBQW5zRCxFQUFBc0ksRUFBQUMsRUFDQSxPQUFBa0IsSUFJQXNrRCxHQUNBQSxFQUFB
ejRDLEVBQUEwNEMsRUFBQTNsRCxHQUlBLFlBQUFpTixHQUNBbTRDLEVBQUFwbEQsRUFBQTJsRCxJ
QUtBdHpELEdBQUFELFFBQUFveUQsRy9IbzZhTSxTQUFTbnlELEVBQVFELEVBQVNILEdnSWh0YmhD
LFlBRUEsSUFBQTRHLEdBQUE1RyxFQUFBLEdBRUFzUixFQUFBdFIsRUFBQSxJQUNBaUksRUFBQWpJ
LEVBQUEsR0FFQTJqRCxFQUFBM2pELEVBQUEsS0FDQXNDLEVBQUF0QyxFQUFBLEdBR0Fnc0IsR0FG
QWhzQixFQUFBLElBV0Fpc0IsaUNBQUEsU0FBQTBuQyxFQUFBNStDLEdBS0EsR0FKQTlNLEVBQUFK
LFVBQUEsT0FBQWpCLEVBQUEsTUFDQW1PLEVBQUEsT0FBQW5PLEVBQUEsTUFDQSxTQUFBK3NELEVB
QUF0aUQsU0FBQXpLLEVBQUEsYUFFQSxnQkFBQW1PLEdBQUEsQ0FDQSxHQUFBNitDLEdBQUFqUSxF
QUFBNXVDLEVBQUF6UyxHQUFBLEVBQ0FxeEQsR0FBQTNzRCxXQUFBOEosYUFBQThpRCxFQUFBRCxP
QUVBcmlELEdBQUFYLHFCQUFBZ2pELEVBQUE1K0MsS0FLQTNVLEdBQUFELFFBQUE2ckIsR2hJZ3Vi
TSxTQUFTNXJCLEVBQVFELEdpSWx3YnZCLFlBWUEsSUFBQTB6RCxJQUFBLHFKQUVBenpELEdBQUFE
LFFBQUEwekQsR2pJa3hiTSxTQUFTenpELEVBQVFELEVBQVNILEdrSWh5YmhDLFlBRUEsSUFBQWlk
LEdBQUFqZCxFQUFBLElBQ0E0SCxFQUFBNUgsRUFBQSxHQUNBeWtCLEVBQUF6a0IsRUFBQSxJQUVB
bXRCLEdBQ0EybUMsWUFDQXo1QyxpQkFBQSxlQUNBcUosY0FBQSwrQkFFQXF3QyxZQUNBMTVDLGlC
QUFBLGVBQ0FxSixjQUFBLGdDQUlBc3dDLEdBQ0E3bUMsYUFTQXBTLGNBQUEsU0FBQUMsRUFBQWpO
LEVBQUFDLEVBQUFDLEdBQ0Esb0JBQUErTSxJQUFBaE4sRUFBQXVYLGVBQUF2WCxFQUFBd1gsYUFD
QSxXQUVBLG9CQUFBeEssR0FBQSxpQkFBQUEsRUFFQSxXQUdBLElBQUFpNUMsRUFDQSxJQUFBaG1E
LEVBQUFuRyxTQUFBbUcsRUFFQWdtRCxFQUFBaG1ELE1BQ0ssQ0FFTCxHQUFBNFAsR0FBQTVQLEVB
QUE2UCxhQUVBbTJDLEdBREFwMkMsRUFDQUEsRUFBQUUsYUFBQUYsRUFBQUcsYUFFQWxXLE9BSUEs
R0FBQXJELEdBQ0FFLENBQ0Esb0JBQUFxVyxFQUFBLENBQ0F2VyxFQUFBc0osQ0FDQSxJQUFBbW1E
LEdBQUFsbUQsRUFBQXVYLGVBQUF2WCxFQUFBMFgsU0FDQS9nQixHQUFBdXZELEVBQUF0c0QsRUFB
QWYsMkJBQUFxdEQsR0FBQSxTQUdBenZELEdBQUEsS0FDQUUsRUFBQW9KLENBR0EsSUFBQXRKLElB
QUFFLEVBRUEsV0FHQSxJQUFBOG5CLEdBQUEsTUFBQWhvQixFQUFBd3ZELEVBQUFyc0QsRUFBQVIs
b0JBQUEzQyxHQUNBMHZELEVBQUEsTUFBQXh2RCxFQUFBc3ZELEVBQUFyc0QsRUFBQVIsb0JBQUF6
QyxHQUVBa1ksRUFBQTRILEVBQUE3YSxVQUFBdWpCLEVBQUE0bUMsV0FBQXR2RCxFQUFBdUosRUFB
QUMsRUFDQTRPLEdBQUE1UixLQUFBLGFBQ0E0UixFQUFBdFksT0FBQWtvQixFQUNBNVAsRUFBQTBJ
LGNBQUE0dUMsQ0FFQSxJQUFBcjNDLEdBQUEySCxFQUFBN2EsVUFBQXVqQixFQUFBMm1DLFdBQUFu
dkQsRUFBQXFKLEVBQUFDLEVBT0EsT0FOQTZPLEdBQUE3UixLQUFBLGFBQ0E2UixFQUFBdlksT0FB
QTR2RCxFQUNBcjNDLEVBQUF5SSxjQUFBa0gsRUFFQXhQLEVBQUFMLCtCQUFBQyxFQUFBQyxFQUFB
clksRUFBQUUsSUFFQWtZLEVBQUFDLElBSUExYyxHQUFBRCxRQUFBNnpELEdsSWd6Yk0sU0FBUzV6
RCxFQUFRRCxFQUFTSCxHbUl0NGJoQyxZQW1CQSxTQUFBMnZELEdBQUFuNUIsR0FDQWwxQixLQUFB
OHlELE1BQUE1OUIsRUFDQWwxQixLQUFBK3lELFdBQUEveUQsS0FBQW04QyxVQUNBbjhDLEtBQUFn
ekQsY0FBQSxLQXBCQSxHQUFBbm9ELEdBQUFuTSxFQUFBLEdBRUFvTSxFQUFBcE0sRUFBQSxJQUVB
eW5DLEVBQUF6bkMsRUFBQSxHQW1CQW1NLEdBQUF3akQsRUFBQTl1RCxXQUNBbU0sV0FBQSxXQUNB
MUwsS0FBQTh5RCxNQUFBLEtBQ0E5eUQsS0FBQSt5RCxXQUFBLEtBQ0EveUQsS0FBQWd6RCxjQUFB
LE1BUUE3VyxRQUFBLFdBQ0EsZUFBQW44QyxNQUFBOHlELE1BQ0E5eUQsS0FBQTh5RCxNQUFBaGlE
LE1BRUE5USxLQUFBOHlELE1BQUEzc0IsTUFTQWlvQixRQUFBLFdBQ0EsR0FBQXB1RCxLQUFBZ3pE
LGNBQ0EsTUFBQWh6RCxNQUFBZ3pELGFBR0EsSUFBQTd5QixHQUdBRSxFQUZBNHlCLEVBQUFqekQs
S0FBQSt5RCxXQUNBRyxFQUFBRCxFQUFBM3hELE9BRUE2eEQsRUFBQW56RCxLQUFBbThDLFVBQ0Fp
WCxFQUFBRCxFQUFBN3hELE1BRUEsS0FBQTYrQixFQUFBLEVBQW1CQSxFQUFBK3lCLEdBQ25CRCxF
QUFBOXlCLEtBQUFnekIsRUFBQWh6QixHQUR3Q0EsS0FNeEMsR0FBQWt6QixHQUFBSCxFQUFBL3lC
LENBQ0EsS0FBQUUsRUFBQSxFQUFpQkEsR0FBQWd6QixHQUNqQkosRUFBQUMsRUFBQTd5QixLQUFB
OHlCLEVBQUFDLEVBQUEveUIsR0FEZ0NBLEtBTWhDLEdBQUFpekIsR0FBQWp6QixFQUFBLElBQUFB
LEVBQUEzL0IsTUFFQSxPQURBVixNQUFBZ3pELGNBQUFHLEVBQUF4ekQsTUFBQXdnQyxFQUFBbXpC
LEdBQ0F0ekQsS0FBQWd6RCxpQkFJQWxvRCxFQUFBaUIsYUFBQXNpRCxHQUVBdnZELEVBQUFELFFB
QUF3dkQsR25JczViTSxTQUFTdnZELEVBQVFELEVBQVNILEdvSXorYmhDLFlBRUEsSUFBQXNILEdB
QUF0SCxFQUFBLElBRUF1UyxFQUFBakwsRUFBQXNHLFVBQUEyRSxrQkFDQUMsRUFBQWxMLEVBQUFz
RyxVQUFBNEUsa0JBQ0FDLEVBQUFuTCxFQUFBc0csVUFBQTZFLGtCQUNBQyxFQUFBcEwsRUFBQXNH
LFVBQUE4RSwyQkFDQUMsRUFBQXJMLEVBQUFzRyxVQUFBK0UsNkJBRUFraUQsR0FDQXpoRCxrQkFB
QTZwQixPQUFBcDhCLFVBQUFpUixLQUFBeUcsS0FBQSxHQUFBMGtCLFFBQUEsaUJBQUEzMUIsRUFB
QStNLG9CQUFBLFFBQ0F0QixZQUlBK2hELE9BQUEsRUFDQUMsY0FBQSxFQUNBQyxVQUFBLEVBQ0Fs
VyxPQUFBLEVBQ0FtVyxnQkFBQXppRCxFQUNBMGlELGtCQUFBLEVBQ0FDLElBQUEsRUFFQUMsR0FB
QSxFQUNBQyxNQUFBN2lELEVBQ0E4aUQsYUFBQSxFQUdBQyxTQUFBL2lELEVBQ0F5aUIsUUFBQXpp
QixFQUNBZ2pELFlBQUEsRUFDQUMsWUFBQSxFQUNBQyxRQUFBLEVBQ0FDLFVBQUEsRUFDQWhsQyxR
QUFBcGUsRUFBQUMsRUFDQW9qRCxLQUFBLEVBQ0FDLFFBQUEsRUFDQXRoQixVQUFBLEVBQ0F1aEIs
S0FBQXBqRCxFQUNBcWpELFFBQUEsRUFDQXhwQyxRQUFBLEVBQ0FxVSxnQkFBQSxFQUNBbzFCLFlB
QUEsRUFDQUMsU0FBQXpqRCxFQUNBMGpELE9BQUEsRUFDQUMsWUFBQSxFQUNBbnVDLEtBQUEsRUFD
QW91QyxTQUFBLEVBQ0E5dEMsUUFBQTlWLEVBQ0E2akQsTUFBQTdqRCxFQUNBb2xDLElBQUEsRUFD
QTErQixTQUFBMUcsRUFDQThqRCxTQUFBM2pELEVBQ0E0akQsVUFBQSxFQUNBQyxRQUFBLEVBQ0FD
LEtBQUEsRUFDQUMsV0FBQSxFQUNBQyxZQUFBLEVBQ0FDLFdBQUEsRUFDQUMsZUFBQXJrRCxFQUNB
c2tELFdBQUEsRUFDQUMsWUFBQSxFQUNBQyxRQUFBLEVBQ0FDLE9BQUEsRUFDQS9sQyxPQUFBMWUs
RUFDQTBrRCxLQUFBLEVBQ0FDLEtBQUEsRUFDQUMsU0FBQSxFQUNBQyxRQUFBLEVBQ0FDLFVBQUEs
RUFDQUMsS0FBQSxFQUNBbDNELEdBQUEsRUFDQW0zRCxVQUFBLEVBQ0FDLFVBQUEsRUFDQTN0QyxH
QUFBLEVBQ0E0dEMsVUFBQSxFQUNBQyxRQUFBLEVBQ0FDLEtBQUEsRUFDQUMsTUFBQSxFQUNBQyxL
QUFBLEVBQ0FDLEtBQUEsRUFDQUMsS0FBQXhsRCxFQUNBeWxELElBQUEsRUFDQUMsU0FBQSxFQUNB
QyxhQUFBLEVBQ0FDLFlBQUEsRUFDQUMsSUFBQSxFQUNBQyxVQUFBLEVBQ0FDLE1BQUEsRUFDQUMs
V0FBQSxFQUNBcnJELE9BQUEsRUFDQWkxQixJQUFBLEVBQ0FxMkIsVUFBQSxFQUdBcDZCLFNBQUE5
ckIsRUFBQUMsRUFDQWttRCxNQUFBbm1ELEVBQUFDLEVBQ0FwUSxLQUFBLEVBQ0F1MkQsTUFBQSxF
QUNBQyxXQUFBcG1ELEVBQ0FxbUQsS0FBQXJtRCxFQUNBc21ELFFBQUEsRUFDQUMsUUFBQSxFQUNB
cGtCLFlBQUEsRUFDQXFrQixZQUFBeG1ELEVBQ0F5bUQsT0FBQSxFQUNBQyxRQUFBLEVBQ0FDLFFB
QUEsRUFDQUMsV0FBQSxFQUNBN25DLFNBQUEvZSxFQUNBNm1ELGVBQUEsRUFDQUMsSUFBQSxFQUNB
QyxTQUFBL21ELEVBQ0FnbkQsU0FBQWhuRCxFQUNBaW5ELEtBQUEsRUFDQUMsS0FBQWhuRCxFQUNB
aW5ELFFBQUFsbkQsRUFDQW1uRCxRQUFBLEVBQ0F4c0QsTUFBQSxFQUNBeXNELE9BQUFybkQsRUFD
QXNuRCxVQUFBLEVBQ0FDLFNBQUF2bkQsRUFDQWlzQixTQUFBbHNCLEVBQUFDLEVBQ0FvZ0MsTUFB
QSxFQUNBb25CLEtBQUF0bkQsRUFDQXVuRCxNQUFBLEVBQ0FDLEtBQUF4bkQsRUFDQXluRCxXQUFB
LEVBQ0FDLElBQUEsRUFDQUMsT0FBQSxFQUNBQyxRQUFBLEVBQ0FDLE9BQUEsRUFDQTk0QixNQUFB
aHZCLEVBQ0E0NEIsS0FBQSxFQUNBNGxCLE1BQUEsRUFDQXVKLFFBQUEsRUFDQUMsU0FBQSxFQUNB
bDJELE9BQUEsRUFDQXN5QyxNQUFBLEVBRUE1ckMsS0FBQSxFQUNBeXZELE9BQUEsRUFDQXRvRCxN
QUFBLEVBQ0F1b0QsTUFBQSxFQUNBQyxNQUFBLEVBQ0E5VyxLQUFBLEVBS0ErVyxNQUFBLEVBQ0FD
LFNBQUEsRUFDQUMsT0FBQSxFQUNBbmtDLE9BQUEsRUFFQTZwQixTQUFBLEVBQ0F1YSxTQUFBLEVB
Q0FDLE9BQUEsRUFDQUMsTUFBQSxFQU9BQyxlQUFBLEVBQ0FDLFlBQUEsRUFFQUMsU0FBQSxFQUVB
eHhCLE1BQUEsRUFHQXl4QixTQUFBLEVBQ0FDLFVBQUEvb0QsRUFDQWdwRCxTQUFBLEVBSUFDLE9B
QUEsRUFDQUMsUUFBQSxFQUdBQyxRQUFBLEVBR0FDLFNBQUEsRUFFQUMsYUFBQSxHQUVBNW9ELG1C
QUNBOGhELGNBQUEsaUJBQ0F4Z0IsVUFBQSxRQUNBOGlCLFFBQUEsTUFDQUMsVUFBQSxjQUVBcGtE
LG9CQUNBQyxvQkFDQWYsTUFBQSxTQUFBck4sRUFBQXFOLEdBQ0EsYUFBQUEsRUFDQXJOLEVBQUEr
NEIsZ0JBQUEsY0FNQSxXQUFBLzRCLEVBQUFrRyxNQUFBbEcsRUFBQXFoQyxhQUFBLGNBQ0FyaEMs
RUFBQW93QixhQUFBLFdBQUEvaUIsR0FDT3JOLEVBQUErMkQsV0FBQS8yRCxFQUFBKzJELFNBQUFD
LFVBQUFoM0QsRUFBQStZLGNBQUF3WSxnQkFBQXZ4QixHQVNQQSxFQUFBb3dCLGFBQUEsV0FBQS9p
QixNQU1BaFMsR0FBQUQsUUFBQTAwRCxHcEl5L2JNLFNBQVN6MEQsRUFBUUQsRUFBU0gsSXFJbnVj
aEMsU0FBQTIyQyxHQVVBLFlBcUJBLFNBQUFxbEIsR0FBQUMsRUFBQTU0QixFQUFBamhDLEVBQUE4
NUQsR0FFQSxHQUFBQyxHQUFBbjZELFNBQUFpNkQsRUFBQTc1RCxFQVNBLE9BQUFpaEMsR0FBQTg0
QixJQUNBRixFQUFBNzVELEdBQUFvaUMsRUFBQW5CLEdBQUEsSUEvQkEsR0FBQS8zQixHQUFBdEws
RUFBQSxJQUVBd2tDLEVBQUF4a0MsRUFBQSxJQUVBdTFCLEdBREF2MUIsRUFBQSxJQUNBQSxFQUFB
LEtBQ0E2ckMsRUFBQTdyQyxFQUFBLEdBQ0FBLEdBQUEsRUFJQSxvQkFBQTIyQyxNQUFBSSxLQThC
QSxJQUFBcWxCLElBU0FDLG9CQUFBLFNBQUFDLEVBQUFqeUQsRUFBQTJCLEVBQUFrd0QsR0FFQSxT
QUFBSSxFQUNBLFdBRUEsSUFBQUwsS0FTQSxPQUZBcHdCLEdBQUF5d0IsRUFBQU4sRUFBQUMsR0FF
QUEsR0FhQU0sZUFBQSxTQUFBQyxFQUFBQyxFQUFBQyxFQUFBQyxFQUFBdHlELEVBQUF1SyxFQUFB
QyxFQUFBN0ksRUFBQWt3RCxHQU9BLEdBQUFPLEdBQUFELEVBQUEsQ0FHQSxHQUFBcDZELEdBQ0F3
NkQsQ0FDQSxLQUFBeDZELElBQUFxNkQsR0FDQSxHQUFBQSxFQUFBMzdELGVBQUFzQixHQUFBLENB
R0F3NkQsRUFBQUosS0FBQXA2RCxFQUNBLElBQUFvVCxHQUFBb25ELEtBQUE1eEQsZ0JBQ0F1SyxF
QUFBa25ELEVBQUFyNkQsRUFDQSxVQUFBdzZELEdBQUFybkMsRUFBQS9mLEVBQUFELEdBQ0FqSyxF
QUFBZ0ssaUJBQUFzbkQsRUFBQXJuRCxFQUFBbEwsRUFBQTJCLEdBQ0F5d0QsRUFBQXI2RCxHQUFB
dzZELE1BQ08sQ0FDUEEsSUFDQUQsRUFBQXY2RCxHQUFBa0osRUFBQTRKLFlBQUEwbkQsR0FDQXR4
RCxFQUFBNkosaUJBQUF5bkQsR0FBQSxHQUdBLElBQUFDLEdBQUFyNEIsRUFBQWp2QixHQUFBLEVB
Q0FrbkQsR0FBQXI2RCxHQUFBeTZELENBR0EsSUFBQUMsR0FBQXh4RCxFQUFBb0osZUFBQW1vRCxF
QUFBeHlELEVBQUF1SyxFQUFBQyxFQUFBN0ksRUFBQWt3RCxFQUNBUSxHQUFBMzFELEtBQUErMUQs
SUFJQSxJQUFBMTZELElBQUFvNkQsSUFDQUEsRUFBQTE3RCxlQUFBc0IsSUFBQXE2RCxLQUFBMzdE
LGVBQUFzQixLQUNBdzZELEVBQUFKLEVBQUFwNkQsR0FDQXU2RCxFQUFBdjZELEdBQUFrSixFQUFB
NEosWUFBQTBuRCxHQUNBdHhELEVBQUE2SixpQkFBQXluRCxHQUFBLE1BWUFHLGdCQUFBLFNBQUFD
LEVBQUE1bkQsR0FDQSxPQUFBaFQsS0FBQTQ2RCxHQUNBLEdBQUFBLEVBQUFsOEQsZUFBQXNCLEdB
QUEsQ0FDQSxHQUFBNjZELEdBQUFELEVBQUE1NkQsRUFDQWtKLEdBQUE2SixpQkFBQThuRCxFQUFB
N25ELEtBTUFoVixHQUFBRCxRQUFBaThELElySXN1YzhCNzdELEtBQUtKLEVBQVNILEVBQW9CLE1B
STFELFNBQVNJLEVBQVFELEVBQVNILEdzSXYzY2hDLFlBRUEsSUFBQWtzQixHQUFBbHNCLEVBQUEs
SUFDQWs5RCxFQUFBbDlELEVBQUEsS0FPQW05RCxHQUNBL3FDLHVCQUFBOHFDLEVBQUFFLGtDQUVB
anJDLHNCQUFBakcsRUFBQUQsaUNBR0E3ckIsR0FBQUQsUUFBQWc5RCxHdEl1NGNNLFNBQVMvOEQs
RUFBUUQsRUFBU0gsR3VJdjVjaEMsWUE4QkEsU0FBQXE5RCxHQUFBdm1ELElBUUEsUUFBQXdtRCxH
QUFBeG1ELEVBQUFpQixJQU9BLFFBQUF3bEQsR0FBQXptRCxHQUNBLFNBQUFBLEVBQUFqVyxZQUFB
aVcsRUFBQWpXLFVBQUFpa0Msa0JBR0EsUUFBQTA0QixHQUFBMW1ELEdBQ0EsU0FBQUEsRUFBQWpX
LFlBQUFpVyxFQUFBalcsVUFBQW01QyxzQkFoREEsR0FBQXB6QyxHQUFBNUcsRUFBQSxHQUNBbU0s
RUFBQW5NLEVBQUEsR0FFQXlXLEVBQUF6VyxFQUFBLElBQ0FreUIsRUFBQWx5QixFQUFBLElBQ0Fp
USxFQUFBalEsRUFBQSxJQUNBcVosRUFBQXJaLEVBQUEsSUFDQWtkLEVBQUFsZCxFQUFBLElBRUE4
bUMsR0FEQTltQyxFQUFBLEdBQ0FBLEVBQUEsS0FDQXNMLEVBQUF0TCxFQUFBLElBTUFrZSxFQUFB
bGUsRUFBQSxJQUVBaXFCLEdBREFqcUIsRUFBQSxHQUNBQSxFQUFBLEtBQ0F1MUIsRUFBQXYxQixF
QUFBLElBR0F5OUQsR0FGQXo5RCxFQUFBLElBR0EwOUQsWUFBQSxFQUNBQyxVQUFBLEVBQ0FDLG9C
QUFBLEdBSUFQLEdBQUF4OEQsVUFBQWtrQyxPQUFBLFdBQ0EsR0FBQWp1QixHQUFBb0csRUFBQUcs
SUFBQS9iLE1BQUEwSixnQkFBQUMsS0FDQThNLEVBQUFqQixFQUFBeFYsS0FBQXdXLE1BQUF4VyxL
QUFBMEssUUFBQTFLLEtBQUFxNEMsUUFFQSxPQURBMmpCLEdBQUF4bUQsRUFBQWlCLEdBQ0FBLEVB
b0VBLElBQUE4bEQsR0FBQSxFQUtBcjBCLEdBUUFDLFVBQUEsU0FBQTF4QixHQUNBelcsS0FBQTBK
LGdCQUFBK00sRUFDQXpXLEtBQUEwWSxZQUFBLEVBQ0ExWSxLQUFBdzhELGVBQUEsS0FDQXg4RCxL
QUFBaWtDLFVBQUEsS0FDQWprQyxLQUFBK0YsWUFBQSxLQUNBL0YsS0FBQWdqQyxtQkFBQSxLQUdB
aGpDLEtBQUF3SyxtQkFBQSxLQUNBeEssS0FBQXN5QixnQkFBQSxLQUNBdHlCLEtBQUFneUIsbUJB
QUEsS0FDQWh5QixLQUFBaXlCLHNCQUFBLEVBQ0FqeUIsS0FBQTZ4QixxQkFBQSxFQUVBN3hCLEtB
QUFrbUMsa0JBQUEsS0FDQWxtQyxLQUFBa0UsbUJBQUEsS0FDQWxFLEtBQUFtVSxTQUFBLEtBQ0Fu
VSxLQUFBNkksWUFBQSxFQUNBN0ksS0FBQWlpQyxpQkFBQSxLQUdBamlDLEtBQUFxSixrQkFBQSxL
QUdBckosS0FBQXk4RCw2QkFBQSxHQWtCQXJwRCxlQUFBLFNBQUFySyxFQUFBdUssRUFBQUMsRUFB
QTdJLEdBR0ExSyxLQUFBbVUsU0FBQXpKLEVBQ0ExSyxLQUFBNkksWUFBQTB6RCxJQUNBdjhELEtB
QUErRixZQUFBdU4sRUFDQXRULEtBQUFnakMsbUJBQUF6dkIsQ0FFQSxJQVVBbXBELEdBVkFDLEVB
QUEzOEQsS0FBQTBKLGdCQUFBOE0sTUFDQW9tRCxFQUFBNThELEtBQUE2OEQsZ0JBQUFueUQsR0FF
QThLLEVBQUF4VixLQUFBMEosZ0JBQUFDLEtBRUFtekQsRUFBQS96RCxFQUFBZzBELGlCQUdBQyxF
QUFBZixFQUFBem1ELEdBQ0FwUixFQUFBcEUsS0FBQWk5RCxvQkFBQUQsRUFBQUwsRUFBQUMsRUFB
QUUsRUFJQUUsSUFBQSxNQUFBNTRELEdBQUEsTUFBQUEsRUFBQXEvQixPQU9BeTRCLEVBQUExbUQs
R0FDQXhWLEtBQUF3OEQsZUFBQUwsRUFBQUUsVUFFQXI4RCxLQUFBdzhELGVBQUFMLEVBQUFDLGFB
VEFNLEVBQUF0NEQsRUFDQTQzRCxFQUFBeG1ELEVBQUFrbkQsR0FDQSxPQUFBdDRELFFBQUEsR0FB
QStRLEVBQUFPLGVBQUF0UixHQUFBLE9BQUFrQixFQUFBLE1BQUFrUSxFQUFBMmIsYUFBQTNiLEVB
QUExVSxNQUFBLGFBQ0FzRCxFQUFBLEdBQUEyM0QsR0FBQXZtRCxHQUNBeFYsS0FBQXc4RCxlQUFB
TCxFQUFBRyxvQkF3QkFsNEQsR0FBQW9TLE1BQUFtbUQsRUFDQXY0RCxFQUFBc0csUUFBQWt5RCxF
QUNBeDRELEVBQUFrMEMsS0FBQTE3QixFQUNBeFksRUFBQWkwQyxRQUFBeWtCLEVBRUE5OEQsS0FB
QWlrQyxVQUFBNy9CLEVBR0F3WCxFQUFBSyxJQUFBN1gsRUFBQXBFLEtBZUEsSUFBQXNnRCxHQUFB
bDhDLEVBQUF5cEMsS0FDQW50QyxVQUFBNC9DLElBQ0FsOEMsRUFBQXlwQyxNQUFBeVMsRUFBQSxN
QUVBLGdCQUFBQSxJQUFBeHBDLE1BQUF3UixRQUFBZzRCLEdBQUFoN0MsRUFBQSxNQUFBdEYsS0FB
QTZKLFdBQUEsa0NBRUE3SixLQUFBZ3lCLG1CQUFBLEtBQ0FoeUIsS0FBQWl5QixzQkFBQSxFQUNB
anlCLEtBQUE2eEIscUJBQUEsQ0FFQSxJQUFBcGUsRUFtQkEsT0FqQkFBLEdBREFyUCxFQUFBODRE
LHFCQUNBbDlELEtBQUFtOUQscUNBQUFULEVBQUFwcEQsRUFBQUMsRUFBQXhLLEVBQUEyQixHQUVB
MUssS0FBQW85RCxvQkFBQVYsRUFBQXBwRCxFQUFBQyxFQUFBeEssRUFBQTJCLEdBR0F0RyxFQUFB
a3FDLG1CQVFBdmxDLEVBQUE0SyxxQkFBQXZKLFFBQUFoRyxFQUFBa3FDLGtCQUFBbHFDLEdBSUFx
UCxHQUdBd3BELG9CQUFBLFNBQUFELEVBQUFMLEVBQUFDLEVBQUFFLEdBU0EsTUFBQTk4RCxNQUFB
cTlELGdDQUFBTCxFQUFBTCxFQUFBQyxFQUFBRSxJQUlBTyxnQ0FBQSxTQUFBTCxFQUFBTCxFQUFB
QyxFQUFBRSxHQUNBLEdBQUF0bkQsR0FBQXhWLEtBQUEwSixnQkFBQUMsSUFFQSxPQUFBcXpELEdB
TUEsR0FBQXhuRCxHQUFBbW5ELEVBQUFDLEVBQUFFLEdBV0F0bkQsRUFBQW1uRCxFQUFBQyxFQUFB
RSxJQUlBSyxxQ0FBQSxTQUFBVCxFQUFBcHBELEVBQUFDLEVBQUF4SyxFQUFBMkIsR0FDQSxHQUFB
K0ksR0FDQXluQixFQUFBbnlCLEVBQUFteUIsWUFDQSxLQUNBem5CLEVBQUF6VCxLQUFBbzlELG9C
QUFBVixFQUFBcHBELEVBQUFDLEVBQUF4SyxFQUFBMkIsR0FDSyxNQUFBcEssR0FFTHlJLEVBQUFv
eUIsU0FBQUQsR0FDQWw3QixLQUFBaWtDLFVBQUFpNUIscUJBQUE1OEQsR0FDQU4sS0FBQWd5Qixx
QkFDQWh5QixLQUFBaWtDLFVBQUE0SixNQUFBN3RDLEtBQUFzOUQscUJBQUF0OUQsS0FBQWlrQyxV
QUFBenRCLE1BQUF4VyxLQUFBaWtDLFVBQUF2NUIsVUFFQXd3QixFQUFBbnlCLEVBQUFteUIsYUFF
QWw3QixLQUFBa0UsbUJBQUEyUCxrQkFBQSxHQUNBOUssRUFBQW95QixTQUFBRCxHQUlBem5CLEVB
QUF6VCxLQUFBbzlELG9CQUFBVixFQUFBcHBELEVBQUFDLEVBQUF4SyxFQUFBMkIsR0FFQSxNQUFB
K0ksSUFHQTJwRCxvQkFBQSxTQUFBVixFQUFBcHBELEVBQUFDLEVBQUF4SyxFQUFBMkIsR0FDQSxH
QUFBdEcsR0FBQXBFLEtBQUFpa0MsVUFFQXM1QixFQUFBLENBS0FuNUQsR0FBQXk4QyxxQkFNQXo4
QyxFQUFBeThDLHFCQUlBN2dELEtBQUFneUIscUJBQ0E1dEIsRUFBQXlwQyxNQUFBN3RDLEtBQUFz
OUQscUJBQUFsNUQsRUFBQW9TLE1BQUFwUyxFQUFBc0csV0FLQWhLLFNBQUFnOEQsSUFDQUEsRUFB
QTE4RCxLQUFBdzlELDRCQUdBLElBQUE3NUQsR0FBQTZoQyxFQUFBSSxRQUFBODJCLEVBQ0ExOEQs
TUFBQWttQyxrQkFBQXZpQyxDQUNBLElBQUFvK0IsR0FBQS9oQyxLQUFBb29DLDJCQUFBczBCLEVB
QUEvNEQsSUFBQTZoQyxFQUFBRyxNQUVBM2xDLE1BQUFrRSxtQkFBQTY5QixDQUVBLElBQUF0dUIs
R0FBQXpKLEVBQUFvSixlQUFBMnVCLEVBQUFoNUIsRUFBQXVLLEVBQUFDLEVBQUF2VCxLQUFBc2tD
LHFCQUFBNTVCLEdBQUE2eUQsRUFTQSxPQUFBOXBELElBR0FHLFlBQUEsV0FDQSxNQUFBNUosR0FB
QTRKLFlBQUE1VCxLQUFBa0UscUJBU0EyUCxpQkFBQSxTQUFBQyxHQUNBLEdBQUE5VCxLQUFBa0Us
bUJBQUEsQ0FJQSxHQUFBRSxHQUFBcEUsS0FBQWlrQyxTQUVBLElBQUE3L0IsRUFBQXNxQyx1QkFB
QXRxQyxFQUFBcTRELDRCQUdBLEdBRkFyNEQsRUFBQXE0RCw2QkFBQSxFQUVBM29ELEVBQUEsQ0FD
QSxHQUFBaFQsR0FBQWQsS0FBQTZKLFVBQUEseUJBQ0FrTyxHQUFBZ1Ysc0JBQUFqc0IsRUFBQXNE
LEVBQUFzcUMscUJBQUF6M0IsS0FBQTdTLFFBT0FBLEdBQUFzcUMsc0JBS0ExdUMsTUFBQWtFLHFC
QUNBOEYsRUFBQTZKLGlCQUFBN1QsS0FBQWtFLG1CQUFBNFAsR0FDQTlULEtBQUFrbUMsa0JBQUEs
S0FDQWxtQyxLQUFBa0UsbUJBQUEsS0FDQWxFLEtBQUFpa0MsVUFBQSxNQU1BamtDLEtBQUFneUIs
bUJBQUEsS0FDQWh5QixLQUFBaXlCLHNCQUFBLEVBQ0FqeUIsS0FBQTZ4QixxQkFBQSxFQUNBN3hC
LEtBQUFxSixrQkFBQSxLQUNBckosS0FBQXN5QixnQkFBQSxLQUlBdHlCLEtBQUFtVSxTQUFBLEtB
Q0FuVSxLQUFBMFksWUFBQSxFQUNBMVksS0FBQWlpQyxpQkFBQSxLQUtBcm1CLEVBQUFDLE9BQUF6
WCxLQWlCQXE1RCxhQUFBLFNBQUEveUQsR0FDQSxHQUFBOEssR0FBQXhWLEtBQUEwSixnQkFBQUMs
S0FDQW1qQyxFQUFBdDNCLEVBQUFzM0IsWUFDQSxLQUFBQSxFQUNBLE1BQUFsd0IsRUFFQSxJQUFB
OGdELEtBQ0EsUUFBQUMsS0FBQTd3QixHQUNBNHdCLEVBQUFDLEdBQUFqekQsRUFBQWl6RCxFQUVB
LE9BQUFELElBV0FiLGdCQUFBLFNBQUFueUQsR0FDQSxHQUFBZ3pELEdBQUExOUQsS0FBQXk5RCxh
QUFBL3lELEVBT0EsT0FBQWd6RCxJQVFBcDVCLHFCQUFBLFNBQUFzNUIsR0FDQSxHQUVBQyxHQUZB
cm9ELEVBQUF4VixLQUFBMEosZ0JBQUFDLEtBQ0F2RixFQUFBcEUsS0FBQWlrQyxTQWdCQSxJQWJB
Ny9CLEVBQUErcEMsa0JBU0EwdkIsRUFBQXo1RCxFQUFBK3BDLG1CQUlBMHZCLEVBQUEsQ0FDQSxn
QkFBQXJvRCxHQUFBMDNCLGtCQUFBNW5DLEVBQUEsTUFBQXRGLEtBQUE2SixXQUFBLGlDQUlBLFFB
QUEvSSxLQUFBKzhELEdBQ0EvOEQsSUFBQTBVLEdBQUEwM0Isa0JBQUEsT0FBQTVuQyxFQUFBLE1B
QUF0RixLQUFBNkosV0FBQSwwQkFBQS9JLEVBRUEsT0FBQStKLE1BQXVCK3lELEVBQUFDLEdBRXZC
LE1BQUFELElBV0FFLG1CQUFBLFNBQUFsWCxFQUFBQyxFQUFBQyxLQU1BOXlDLGlCQUFBLFNBQUFD
LEVBQUFsTCxFQUFBc3BCLEdBQ0EsR0FBQW5lLEdBQUFsVSxLQUFBMEosZ0JBQ0FxMEQsRUFBQS85
RCxLQUFBbVUsUUFFQW5VLE1BQUFzeUIsZ0JBQUEsS0FFQXR5QixLQUFBK2dELGdCQUFBaDRDLEVB
QUFtTCxFQUFBRCxFQUFBOHBELEVBQUExckMsSUFVQXBvQix5QkFBQSxTQUFBbEIsR0FDQSxNQUFB
L0ksS0FBQXN5QixnQkFDQXRvQixFQUFBZ0ssaUJBQUFoVSxVQUFBc3lCLGdCQUFBdnBCLEVBQUEv
SSxLQUFBbVUsVUFDSyxPQUFBblUsS0FBQWd5QixvQkFBQWh5QixLQUFBNnhCLG9CQUNMN3hCLEtB
QUErZ0QsZ0JBQUFoNEMsRUFBQS9JLEtBQUEwSixnQkFBQTFKLEtBQUEwSixnQkFBQTFKLEtBQUFt
VSxTQUFBblUsS0FBQW1VLFVBRUFuVSxLQUFBd0ssbUJBQUEsTUFtQkF1MkMsZ0JBQUEsU0FBQWg0
QyxFQUFBaTFELEVBQUFDLEVBQUFDLEVBQUFDLEdBQ0EsR0FBQS81RCxHQUFBcEUsS0FBQWlrQyxT
QUNBLE9BQUE3L0IsRUFBQWtCLEVBQUEsTUFBQXRGLEtBQUE2SixXQUFBLGlDQUVBLElBQ0F3b0Is
R0FEQStyQyxHQUFBLENBSUFwK0QsTUFBQW1VLFdBQUFncUQsRUFDQTlyQyxFQUFBanVCLEVBQUFz
RyxTQUVBMm5CLEVBQUFyeUIsS0FBQTY4RCxnQkFBQXNCLEdBQ0FDLEdBQUEsRUFHQSxJQUFBQyxH
QUFBTCxFQUFBeG5ELE1BQ0ErMEIsRUFBQTB5QixFQUFBem5ELEtBR0F3bkQsS0FBQUMsSUFDQUcs
R0FBQSxHQU1BQSxHQUFBaDZELEVBQUFxcUMsMkJBTUFycUMsRUFBQXFxQywwQkFBQWxELEVBQUFs
WixFQUlBLElBQUFpc0MsR0FBQXQrRCxLQUFBczlELHFCQUFBL3hCLEVBQUFsWixHQUNBa3NDLEdB
QUEsQ0FFQXYrRCxNQUFBNnhCLHNCQUNBenRCLEVBQUFxbkMsc0JBTUE4eUIsRUFBQW42RCxFQUFB
cW5DLHNCQUFBRixFQUFBK3lCLEVBQUFqc0MsR0FHQXJ5QixLQUFBdzhELGlCQUFBTCxFQUFBRSxZ
QUNBa0MsR0FBQTUxQyxFQUFBMDFDLEVBQUE5eUIsS0FBQTVpQixFQUFBdmtCLEVBQUF5cEMsTUFB
QXl3QixLQVNBdCtELEtBQUF3SyxtQkFBQSxLQUNBK3pELEdBQ0F2K0QsS0FBQTZ4QixxQkFBQSxF
QUVBN3hCLEtBQUF3K0Qsd0JBQUFQLEVBQUExeUIsRUFBQSt5QixFQUFBanNDLEVBQUF0cEIsRUFB
QW8xRCxLQUlBbitELEtBQUEwSixnQkFBQXUwRCxFQUNBaitELEtBQUFtVSxTQUFBZ3FELEVBQ0Ev
NUQsRUFBQW9TLE1BQUErMEIsRUFDQW5uQyxFQUFBeXBDLE1BQUF5d0IsRUFDQWw2RCxFQUFBc0cs
UUFBQTJuQixJQUlBaXJDLHFCQUFBLFNBQUE5bUQsRUFBQTlMLEdBQ0EsR0FBQXRHLEdBQUFwRSxL
QUFBaWtDLFVBQ0FqNEIsRUFBQWhNLEtBQUFneUIsbUJBQ0FueEIsRUFBQWIsS0FBQWl5QixvQkFJ
QSxJQUhBanlCLEtBQUFpeUIsc0JBQUEsRUFDQWp5QixLQUFBZ3lCLG1CQUFBLE1BRUFobUIsRUFD
QSxNQUFBNUgsR0FBQXlwQyxLQUdBLElBQUFodEMsR0FBQSxJQUFBbUwsRUFBQTFLLE9BQ0EsTUFB
QTBLLEdBQUEsRUFJQSxRQURBc3lELEdBQUF6ekQsS0FBOEJoSyxFQUFBbUwsRUFBQSxHQUFBNUgs
RUFBQXlwQyxPQUM5Qnh1QyxFQUFBd0IsRUFBQSxJQUFpQ3hCLEVBQUEyTSxFQUFBMUssT0FBa0Jq
QyxJQUFBLENBQ25ELEdBQUFvL0QsR0FBQXp5RCxFQUFBM00sRUFDQXdMLEdBQUF5ekQsRUFBQSxr
QkFBQUcsS0FBQXgvRCxLQUFBbUYsRUFBQWs2RCxFQUFBOW5ELEVBQUE5TCxHQUFBK3pELEdBR0Es
TUFBQUgsSUFlQUUsd0JBQUEsU0FBQXZxRCxFQUFBczNCLEVBQUEreUIsRUFBQWpzQyxFQUFBdHBC
LEVBQUEyMUQsR0FDQSxHQUtBTCxHQUNBTSxFQUNBWixFQUxBMzVELEVBQUFwRSxLQUFBaWtDLFVB
RUEyNkIsRUFBQTloQyxRQUFBMTRCLEVBQUErcUMsbUJBSUF5dkIsS0FDQVAsRUFBQWo2RCxFQUFB
b1MsTUFDQW1vRCxFQUFBdjZELEVBQUF5cEMsTUFDQWt3QixFQUFBMzVELEVBQUFzRyxTQUdBdEcs
RUFBQTA4QyxxQkFNQTE4QyxFQUFBMDhDLG9CQUFBdlYsRUFBQSt5QixFQUFBanNDLEdBSUFyeUIs
S0FBQTBKLGdCQUFBdUssRUFDQWpVLEtBQUFtVSxTQUFBdXFELEVBQ0F0NkQsRUFBQW9TLE1BQUEr
MEIsRUFDQW5uQyxFQUFBeXBDLE1BQUF5d0IsRUFDQWw2RCxFQUFBc0csUUFBQTJuQixFQUVBcnlC
LEtBQUE2K0QseUJBQUE5MUQsRUFBQTIxRCxHQUVBRSxHQU1BNzFELEVBQUE0SyxxQkFBQXZKLFFB
QUFoRyxFQUFBK3FDLG1CQUFBbDRCLEtBQUE3UyxFQUFBaTZELEVBQUFNLEVBQUFaLEdBQUEzNUQs
SUFXQXk2RCx5QkFBQSxTQUFBOTFELEVBQUEyQixHQUNBLEdBQUFvMEQsR0FBQTkrRCxLQUFBa0Us
bUJBQ0E2NkQsRUFBQUQsRUFBQXAxRCxnQkFDQXMxRCxFQUFBaC9ELEtBQUF3OUQsNEJBRUFELEVB
QUEsQ0FLQSxJQUFBdHBDLEVBQUE4cUMsRUFBQUMsR0FDQWgxRCxFQUFBZ0ssaUJBQUE4cUQsRUFB
QUUsRUFBQWoyRCxFQUFBL0ksS0FBQXNrQyxxQkFBQTU1QixRQUNLLENBQ0wsR0FBQXUwRCxHQUFB
ajFELEVBQUE0SixZQUFBa3JELEVBQ0E5MEQsR0FBQTZKLGlCQUFBaXJELEdBQUEsRUFFQSxJQUFB
bjdELEdBQUE2aEMsRUFBQUksUUFBQW81QixFQUNBaC9ELE1BQUFrbUMsa0JBQUF2aUMsQ0FDQSxJ
QUFBbytCLEdBQUEvaEMsS0FBQW9vQywyQkFBQTQyQixFQUFBcjdELElBQUE2aEMsRUFBQUcsTUFF
QTNsQyxNQUFBa0UsbUJBQUE2OUIsQ0FFQSxJQUFBbTlCLEdBQUFsMUQsRUFBQW9KLGVBQUEydUIs
RUFBQWg1QixFQUFBL0ksS0FBQStGLFlBQUEvRixLQUFBZ2pDLG1CQUFBaGpDLEtBQUFza0MscUJB
QUE1NUIsR0FBQTZ5RCxFQVNBdjlELE1BQUFtL0QsdUJBQUFGLEVBQUFDLEVBQUFKLEtBU0FLLHVC
QUFBLFNBQUFGLEVBQUFDLEVBQUFFLEdBQ0F4dUMsRUFBQUMsc0JBQUFvdUMsRUFBQUMsRUFBQUUs
SUFNQUMsK0NBQUEsV0FDQSxHQUNBM0MsR0FEQXQ0RCxFQUFBcEUsS0FBQWlrQyxTQW9CQSxPQVpB
eTRCLEdBQUF0NEQsRUFBQXEvQixVQWtCQSs1QiwwQkFBQSxXQUNBLEdBQUFkLEVBQ0EsSUFBQTE4
RCxLQUFBdzhELGlCQUFBTCxFQUFBRyxvQkFBQSxDQUNBM3RELEVBQUFDLFFBQUE1TyxJQUNBLEtB
Q0EwOEQsRUFBQTE4RCxLQUFBcS9ELGlEQUNPLFFBQ1Axd0QsRUFBQUMsUUFBQSxVQUdBOHRELEdB
QUExOEQsS0FBQXEvRCxnREFNQSxPQUZBLFFBQUEzQyxRQUFBLEdBQUF2bkQsRUFBQU8sZUFBQWdu
RCxHQUFBLE9BQUFwM0QsRUFBQSxNQUFBdEYsS0FBQTZKLFdBQUEsMkJBRUE2eUQsR0FXQTRDLFVB
QUEsU0FBQTVyRCxFQUFBMVAsR0FDQSxHQUFBSSxHQUFBcEUsS0FBQXFLLG1CQUNBLE9BQUFqRyxF
QUFBa0IsRUFBQSxhQUNBLElBQUFpNkQsR0FBQXY3RCxFQUFBcUcsb0JBS0FpdUMsRUFBQWwwQyxF
QUFBazBDLE9BQUExN0IsRUFBQXhZLEVBQUFrMEMsUUFBeURsMEMsRUFBQWswQyxJQUN6REEsR0FB
QTVrQyxHQUFBNnJELEdBVUFDLFVBQUEsU0FBQTlyRCxHQUNBLEdBQUE0a0MsR0FBQXQ0QyxLQUFB
cUssb0JBQUFpdUMsV0FDQUEsR0FBQTVrQyxJQVNBN0osUUFBQSxXQUNBLEdBQUFGLEdBQUEzSixL
QUFBMEosZ0JBQUFDLEtBQ0FtRCxFQUFBOU0sS0FBQWlrQyxXQUFBamtDLEtBQUFpa0MsVUFBQW4z
QixXQUNBLE9BQUFuRCxHQUFBd25CLGFBQUFya0IsS0FBQXFrQixhQUFBeG5CLEVBQUE3SSxNQUFB
Z00sS0FBQWhNLE1BQUEsTUFXQXVKLGtCQUFBLFdBQ0EsR0FBQWpHLEdBQUFwRSxLQUFBaWtDLFNB
Q0EsT0FBQWprQyxNQUFBdzhELGlCQUFBTCxFQUFBRyxvQkFDQSxLQUVBbDRELEdBSUFna0MsMkJB
QUEsS0FHQXRwQyxHQUFBRCxRQUFBcXBDLEd2SXU2Y00sU0FBU3BwQyxFQUFRRCxFQUFTSCxHd0k3
eGVoQyxZQUVBLElBQUE0SCxHQUFBNUgsRUFBQSxHQUNBK2dFLEVBQUEvZ0UsRUFBQSxLQUNBd2pD
LEVBQUF4akMsRUFBQSxJQUNBc0wsRUFBQXRMLEVBQUEsSUFDQW9KLEVBQUFwSixFQUFBLEdBQ0Fp
VyxFQUFBalcsRUFBQSxLQUVBZ2hFLEVBQUFoaEUsRUFBQSxLQUNBdW5DLEVBQUF2bkMsRUFBQSxJ
QUNBd2xDLEVBQUF4bEMsRUFBQSxJQUNBQSxHQUFBLEVBRUErZ0UsR0FBQUUsUUFFQSxJQUFBQyxJ
QUNBRixjQUNBajhCLE9BQUF2QixFQUFBdUIsT0FDQWlCLHVCQUFBeEMsRUFBQXdDLHVCQUNBNXVC
LFFBQUFuQixFQUdBa3JELHdCQUFBLzNELEVBQUFVLGVBQ0FzM0Qsb0NBQUE1N0IsRUFNQSxvQkFB
QTY3QixpQ0FBQSxrQkFBQUEsZ0NBQUFKLFFBQ0FJLCtCQUFBSixRQUNBbHlDLGVBQ0Fsb0IsMkJB
QUFlLEVBQUFmLDJCQUNBTyxvQkFBQSxTQUFBMUIsR0FLQSxNQUhBQSxHQUFBRixxQkFDQUUsRUFB
QTZoQyxFQUFBN2hDLElBRUFBLEVBQ0FrQyxFQUFBUixvQkFBQTFCLEdBRUEsT0FJQTQ3RCxNQUFB
OTlCLEVBQ0ErOUIsV0FBQWoyRCxHQWtEQWxMLEdBQUFELFFBQUErZ0UsR3hJK3llTSxTQUFTOWdF
LEVBQVFELEVBQVNILEd5SWg1ZWhDLFlBcURBLFNBQUE0d0IsR0FBQWpjLEdBQ0EsR0FBQUEsRUFB
QSxDQUNBLEdBQUFrRCxHQUFBbEQsRUFBQTNKLGdCQUFBaU4sUUFBQSxJQUNBLElBQUFKLEVBQUEs
Q0FDQSxHQUFBelYsR0FBQXlWLEVBQUExTSxTQUNBLElBQUEvSSxFQUNBLHlDQUFBQSxFQUFBLE1B
SUEsU0EyREEsUUFBQW8vRCxHQUFBbDhELEVBQUF3UyxHQUNBQSxJQUlBMnBELEVBQUFuOEQsRUFB
QW84RCxRQUNBLE1BQUE1cEQsRUFBQTNSLFVBQUEsTUFBQTJSLEVBQUE2cEQsd0JBQUEvNkQsRUFB
QSxNQUFBdEIsRUFBQW84RCxLQUFBcDhELEVBQUEwRixnQkFBQWlOLE9BQUEsK0JBQUEzUyxFQUFB
MEYsZ0JBQUFpTixPQUFBOU0sVUFBQSxnQkFFQSxNQUFBMk0sRUFBQTZwRCwwQkFDQSxNQUFBN3BE
LEVBQUEzUixTQUFBUyxFQUFBLGFBQ0EsZ0JBQUFrUixHQUFBNnBELHlCQUFBQyxJQUFBOXBELEdB
QUE2cEQsd0JBQWdPLE9BQUEvNkQsRUFBQSxPQU9oTyxNQUFBa1IsRUFBQW01QyxPQUFBLGdCQUFB
bjVDLEdBQUFtNUMsTUFBOFBycUQsRUFBQSxLQUFBZ3FCLEVBQUF0ckIsSUFBQSxRQUc5UCxRQUFB
dThELEdBQUFuOEQsRUFBQTJVLEVBQUFDLEVBQUFqUSxHQUNBLEtBQUFBLFlBQUF5M0QsSUFBQSxD
QVFBLEdBQUFDLEdBQUFyOEQsRUFBQTQrQixtQkFDQTA5QixFQUFBRCxFQUFBRSxPQUFBRixFQUFB
RSxNQUFBaDlELFdBQUFpOUQsRUFDQXJrRCxFQUFBbWtELEVBQUFELEVBQUFFLE1BQUFGLEVBQUFJ
LGNBQ0E1K0MsR0FBQWxKLEVBQUF3RCxHQUNBeFQsRUFBQTRLLHFCQUFBdkosUUFBQTBPLEdBQ0Ex
VSxPQUNBMlUsbUJBQ0FDLGNBSUEsUUFBQUYsS0FDQSxHQUFBZ29ELEdBQUE5Z0UsSUFDQTJZLEdB
QUFHLFlBQUFnb0QsRUFBQTE4RCxLQUFBMDhELEVBQUEvbkQsaUJBQUErbkQsRUFBQTluRCxVQUdB
LFFBQUErbkQsS0FDQSxHQUFBMzhELEdBQUFwRSxJQUNBZ2hFLEdBQUFDLGlCQUFBNzhELEdBR0Es
UUFBQTg4RCxLQUNBLEdBQUE5OEQsR0FBQXBFLElBQ0FtaEUsR0FBQUYsaUJBQUE3OEQsR0FHQSxR
QUFBZzlELEtBQ0EsR0FBQWg5RCxHQUFBcEUsSUFDQXFoRSxHQUFBSixpQkFBQTc4RCxHQTREQSxR
QUFBazlELEtBQ0ExNkIsRUFBQUUsTUFBQTltQyxNQUdBLFFBQUF1aEUsS0FDQSxHQUFBbjlELEdB
QUFwRSxJQUdBb0UsR0FBQXNVLFlBQUEsT0FBQXBULEVBQUEsS0FDQSxJQUFBN0IsR0FBQSs5RCxF
QUFBcDlELEVBR0EsUUFGQVgsRUFBQSxPQUFBNkIsRUFBQSxNQUVBbEIsRUFBQWc4RCxNQUNBLGFB
Q0EsYUFDQWg4RCxFQUFBdTRCLGNBQUFnQixXQUFBbGMsRUFBQWMsaUJBQUEsaUJBQUE5ZSxHQUNB
LE1BQ0EsYUFDQSxZQUNBVyxFQUFBdTRCLGNBQUFnQixZQUVBLFFBQUE5dkIsS0FBQTR6RCxHQUNB
QSxFQUFBamlFLGVBQUFxTyxJQUNBekosRUFBQXU0QixjQUFBZ0IsVUFBQWw0QixLQUFBZ2MsRUFB
QWMsaUJBQUExVSxFQUFBNHpELEVBQUE1ekQsR0FBQXBLLEdBR0EsTUFDQSxjQUNBVyxFQUFBdTRC
LGNBQUFnQixXQUFBbGMsRUFBQWMsaUJBQUEsbUJBQUE5ZSxHQUNBLE1BQ0EsV0FDQVcsRUFBQXU0
QixjQUFBZ0IsV0FBQWxjLEVBQUFjLGlCQUFBLG1CQUFBOWUsR0FBQWdlLEVBQUFjLGlCQUFBLGlC
QUFBOWUsR0FDQSxNQUNBLFlBQ0FXLEVBQUF1NEIsY0FBQWdCLFdBQUFsYyxFQUFBYyxpQkFBQSxt
QkFBQTllLEdBQUFnZSxFQUFBYyxpQkFBQSxxQkFBQTllLEdBQ0EsTUFDQSxhQUNBLGFBQ0EsZUFD
QVcsRUFBQXU0QixjQUFBZ0IsV0FBQWxjLEVBQUFjLGlCQUFBLHVCQUFBOWUsS0FLQSxRQUFBaStE
LEtBQ0Fwa0MsRUFBQVEsa0JBQUE5OUIsTUE4Q0EsUUFBQTJoRSxHQUFBanFELEdBQ0FsWSxFQUFB
UCxLQUFBMmlFLEVBQUFscUQsS0FDQW1xRCxFQUFBcnhELEtBQUFrSCxHQUFBLE9BQUFwUyxFQUFB
LEtBQUFvUyxHQUNBa3FELEVBQUFscUQsSUFBQSxHQUlBLFFBQUFvcUQsR0FBQXh4QyxFQUFBOVos
R0FDQSxNQUFBOFosR0FBQTNFLFFBQUEsZUFBQW5WLEVBQUFnUyxHQW1CQSxRQUFBdTVDLEdBQUF0
ckQsR0FDQSxHQUFBaUIsR0FBQWpCLEVBQUE5TSxJQUNBZzRELEdBQUFqcUQsR0FDQTFYLEtBQUEw
SixnQkFBQStNLEVBQ0F6VyxLQUFBb2dFLEtBQUExb0QsRUFBQWhILGNBQ0ExUSxLQUFBZ2lFLGNB
QUEsS0FDQWhpRSxLQUFBOEUsa0JBQUEsS0FDQTlFLEtBQUFpaUUsZUFBQSxLQUNBamlFLEtBQUFr
aUUsbUJBQUEsS0FDQWxpRSxLQUFBc0UsVUFBQSxLQUNBdEUsS0FBQStGLFlBQUEsS0FDQS9GLEtB
QUEwWSxZQUFBLEVBQ0ExWSxLQUFBb0YsT0FBQSxFQUNBcEYsS0FBQWdqQyxtQkFBQSxLQUNBaGpD
LEtBQUEyOEIsY0FBQSxLQUNBMzhCLEtBQUFpaUMsaUJBQUEsS0FDQWppQyxLQUFBMEUsT0FBQSxF
QW5YQSxHQUFBWSxHQUFBNUcsRUFBQSxHQUNBbU0sRUFBQW5NLEVBQUEsR0FFQXV1RCxFQUFBdnVE
LEVBQUEsS0FDQW14RCxFQUFBbnhELEVBQUEsS0FDQXNSLEVBQUF0UixFQUFBLElBQ0F1UixFQUFB
dlIsRUFBQSxJQUNBc0gsRUFBQXRILEVBQUEsSUFDQWs5QixFQUFBbDlCLEVBQUEsSUFDQWlhLEVB
QUFqYSxFQUFBLElBQ0FtWixFQUFBblosRUFBQSxJQUNBK2lCLEVBQUEvaUIsRUFBQSxJQUNBdUgs
RUFBQXZILEVBQUEsSUFDQTRILEVBQUE1SCxFQUFBLEdBQ0FzaUUsRUFBQXRpRSxFQUFBLEtBQ0Ey
aUUsRUFBQTNpRSxFQUFBLEtBQ0E0K0IsRUFBQTUrQixFQUFBLElBQ0F5aUUsRUFBQXppRSxFQUFB
LEtBRUF5akUsR0FEQXpqRSxFQUFBLEdBQ0FBLEVBQUEsTUFDQThoRSxFQUFBOWhFLEVBQUEsS0FH
QXVuQixHQURBdm5CLEVBQUEsR0FDQUEsRUFBQSxLQUlBa29DLEdBSEFsb0MsRUFBQSxHQUNBQSxF
QUFBLElBQ0FBLEVBQUEsSUFDQUEsRUFBQSxLQUlBaUcsR0FIQWpHLEVBQUEsSUFDQUEsRUFBQSxH
QUVBdUgsR0FDQXFULEVBQUFYLEVBQUFXLGVBQ0Frb0QsRUFBQWw3RCxFQUFBUixvQkFDQW1jLEVB
QUFSLEVBQUFRLFNBQ0E5SSxFQUFBdEIsRUFBQXNCLHdCQUdBaXBELEdBQXFCNzhDLFFBQUEsRUFB
QXNqQixRQUFBLEdBRXJCdzVCLEVBQUEsUUFDQS9CLEVBQUEsU0FDQW5xRCxHQUNBdFIsU0FBQSxL
QUNBdzdELHdCQUFBLEtBQ0FpQywrQkFBQSxNQUlBMUIsRUFBQSxHQWtLQWEsR0FDQWhrRCxTQUFB
LFFBQ0FLLFdBQUEsVUFDQUMsa0JBQUEsaUJBQ0FrQixrQkFBQSxpQkFDQUMsV0FBQSxVQUNBQyxh
QUFBLFlBQ0FDLFNBQUEsUUFDQUMsU0FBQSxRQUNBTSxjQUFBLGFBQ0FDLGtCQUFBLGlCQUNBQyxh
QUFBLFlBQ0FPLFNBQUEsUUFDQUMsUUFBQSxPQUNBQyxXQUFBLFVBQ0FDLFlBQUEsV0FDQUMsY0FB
QSxhQUNBRSxVQUFBLFNBQ0FDLFdBQUEsVUFDQUUsV0FBQSxVQUNBQyxXQUFBLFVBQ0FFLGNBQUEs
YUFDQU0sZ0JBQUEsZUFDQUMsV0FBQSxXQXNEQWdoRCxHQUNBamYsTUFBQSxFQUNBa2YsTUFBQSxF
QUNBQyxJQUFBLEVBQ0FsZixLQUFBLEVBQ0FtZixPQUFBLEVBQ0FDLElBQUEsRUFDQUMsS0FBQSxF
QUNBM2lDLE9BQUEsRUFDQTRpQyxRQUFBLEVBQ0FDLE1BQUEsRUFDQUMsTUFBQSxFQUNBdGYsT0FB
QSxFQUNBdmdELFFBQUEsRUFDQTRqQyxPQUFBLEVBQ0FrOEIsS0FBQSxHQUlBQyxHQUNBQyxTQUFB
LEVBQ0FDLEtBQUEsRUFDQUMsVUFBQSxHQU1BakQsRUFBQXQxRCxHQUNBdzRELFVBQUEsR0FDQ2Qs
R0FNRFYsRUFBQSw4QkFDQUQsS0FDQXBpRSxLQUF1QkEsZUFhdkI4akUsR0FBQSxDQXVDQXZCLEdB
QUE1d0MsWUFBQSxvQkFFQTR3QyxFQUFBd0IsT0FZQW53RCxlQUFBLFNBQUFySyxFQUFBdUssRUFB
QUMsRUFBQTdJLEdBQ0ExSyxLQUFBMFksWUFBQTRxRCxLQUNBdGpFLEtBQUFvRixPQUFBbU8sRUFB
QWl3RCxhQUNBeGpFLEtBQUErRixZQUFBdU4sRUFDQXRULEtBQUFnakMsbUJBQUF6dkIsQ0FFQSxJ
QUFBaUQsR0FBQXhXLEtBQUEwSixnQkFBQThNLEtBRUEsUUFBQXhXLEtBQUFvZ0UsTUFDQSxZQUNB
LFdBQ0EsYUFDQSxVQUNBLFdBQ0EsYUFDQSxhQUNBLFlBQ0FwZ0UsS0FBQTI4QixlQUNBZ0IsVUFB
QSxNQUVBNTBCLEVBQUE0SyxxQkFBQXZKLFFBQUFtM0QsRUFBQXZoRSxLQUNBLE1BQ0EsYUFDQWdo
RSxFQUFBeGpDLGFBQUF4OUIsS0FBQXdXLEVBQUFsRCxHQUNBa0QsRUFBQXdxRCxFQUFBempDLGFB
QUF2OUIsS0FBQXdXLEdBQ0F6TixFQUFBNEsscUJBQUF2SixRQUFBazNELEVBQUF0aEUsTUFDQStJ
LEVBQUE0SyxxQkFBQXZKLFFBQUFtM0QsRUFBQXZoRSxLQUNBLE1BQ0EsY0FDQXFoRSxFQUFBN2pD
LGFBQUF4OUIsS0FBQXdXLEVBQUFsRCxHQUNBa0QsRUFBQTZxRCxFQUFBOWpDLGFBQUF2OUIsS0FB
QXdXLEVBQ0EsTUFDQSxjQUNBOG1CLEVBQUFFLGFBQUF4OUIsS0FBQXdXLEVBQUFsRCxHQUNBa0Qs
RUFBQThtQixFQUFBQyxhQUFBdjlCLEtBQUF3VyxHQUNBek4sRUFBQTRLLHFCQUFBdkosUUFBQW0z
RCxFQUFBdmhFLEtBQ0EsTUFDQSxnQkFDQW1oRSxFQUFBM2pDLGFBQUF4OUIsS0FBQXdXLEVBQUFs
RCxHQUNBa0QsRUFBQTJxRCxFQUFBNWpDLGFBQUF2OUIsS0FBQXdXLEdBQ0F6TixFQUFBNEsscUJB
QUF2SixRQUFBazNELEVBQUF0aEUsTUFDQStJLEVBQUE0SyxxQkFBQXZKLFFBQUFtM0QsRUFBQXZo
RSxNQUlBa2dFLEVBQUFsZ0UsS0FBQXdXLEVBSUEsSUFBQTdGLEdBQ0E4eUQsQ0FDQSxPQUFBbndE
LEdBQ0EzQyxFQUFBMkMsRUFBQTB1RCxjQUNBeUIsRUFBQW53RCxFQUFBOHNELE1BQ0s3c0QsRUFB
QTZzRCxPQUNMenZELEVBQUE0QyxFQUFBeXVELGNBQ0F5QixFQUFBbHdELEVBQUE2c0QsT0FFQSxN
QUFBenZELE9BQUFWLEVBQUFvVyxLQUFBLGtCQUFBbzlDLEtBQ0E5eUQsRUFBQVYsRUFBQWhCLE1B
RUEwQixJQUFBVixFQUFBaEIsT0FDQSxRQUFBalAsS0FBQW9nRSxLQUNBenZELEVBQUFWLEVBQUFv
VyxJQUNPLFNBQUFybUIsS0FBQW9nRSxPQUNQenZELEVBQUFWLEVBQUFtYixTQUdBcHJCLEtBQUFn
aUUsY0FBQXJ4RCxDQUdBLElBY0EreUQsRUFDQSxJQUFBMzZELEVBQUF3NUIsaUJBQUEsQ0FDQSxH
QUNBb2hDLEdBREFubkQsRUFBQWpKLEVBQUFzdEQsY0FFQSxJQUFBbHdELElBQUFWLEVBQUFoQixL
QUNBLGNBQUFqUCxLQUFBb2dFLEtBQUEsQ0FHQSxHQUFBd0QsR0FBQXBuRCxFQUFBOVYsY0FBQSxP
QUNBaUQsRUFBQTNKLEtBQUEwSixnQkFBQUMsSUFDQWk2RCxHQUFBdDlDLFVBQUEsSUFBQTNjLEVB
QUEsTUFBQUEsRUFBQSxJQUNBZzZELEVBQUFDLEVBQUFqOUMsWUFBQWk5QyxFQUFBNStELGdCQUVB
MitELEdBRFNudEQsRUFBQWdTLEdBQ1RoTSxFQUFBOVYsY0FBQTFHLEtBQUEwSixnQkFBQUMsS0FB
QTZNLEVBQUFnUyxJQUtBaE0sRUFBQTlWLGNBQUExRyxLQUFBMEosZ0JBQUFDLFVBR0FnNkQsR0FB
QW5uRCxFQUFBcW5ELGdCQUFBbHpELEVBQUEzUSxLQUFBMEosZ0JBQUFDLEtBRUFyRCxHQUFBbkMs
YUFBQW5FLEtBQUEyakUsR0FDQTNqRSxLQUFBMEUsUUFBQUMsRUFBQUMsb0JBQ0E1RSxLQUFBK0Ys
YUFDQTYxQixFQUFBSSxvQkFBQTJuQyxHQUVBM2pFLEtBQUE4akUscUJBQUEsS0FBQXR0RCxFQUFB
ek4sRUFDQSxJQUFBZzdELEdBQUEvekQsRUFBQTJ6RCxFQUNBM2pFLE1BQUFna0UsdUJBQUFqN0Qs
RUFBQXlOLEVBQUE5TCxFQUFBcTVELEdBQ0FMLEVBQUFLLE1BQ0ssQ0FDTCxHQUFBRSxHQUFBamtF
LEtBQUFra0Usb0NBQUFuN0QsRUFBQXlOLEdBQ0EydEQsRUFBQW5rRSxLQUFBb2tFLHFCQUFBcjdE
LEVBQUF5TixFQUFBOUwsRUFFQWc1RCxJQURBUyxHQUFBNUIsRUFBQXZpRSxLQUFBb2dFLE1BQ0E2
RCxFQUFBLEtBRUFBLEVBQUEsSUFBQUUsRUFBQSxLQUFBbmtFLEtBQUEwSixnQkFBQUMsS0FBQSxJ
QUlBLE9BQUEzSixLQUFBb2dFLE1BQ0EsWUFDQXIzRCxFQUFBNEsscUJBQUF2SixRQUFBMjJELEVB
QUEvZ0UsTUFDQXdXLEVBQUE4OEIsV0FDQXZxQyxFQUFBNEsscUJBQUF2SixRQUFBNmlELEVBQUFD
LGtCQUFBbHRELEtBRUEsTUFDQSxnQkFDQStJLEVBQUE0SyxxQkFBQXZKLFFBQUE4MkQsRUFBQWxo
RSxNQUNBd1csRUFBQTg4QixXQUNBdnFDLEVBQUE0SyxxQkFBQXZKLFFBQUE2aUQsRUFBQUMsa0JB
QUFsdEQsS0FFQSxNQUNBLGNBQ0F3VyxFQUFBODhCLFdBQ0F2cUMsRUFBQTRLLHFCQUFBdkosUUFB
QTZpRCxFQUFBQyxrQkFBQWx0RCxLQUVBLE1BQ0EsY0FDQXdXLEVBQUE4OEIsV0FDQXZxQyxFQUFB
NEsscUJBQUF2SixRQUFBNmlELEVBQUFDLGtCQUFBbHRELEtBRUEsTUFDQSxjQUNBK0ksRUFBQTRL
LHFCQUFBdkosUUFBQWczRCxFQUFBcGhFLE1BSUEsTUFBQTBqRSxJQWdCQVEsb0NBQUEsU0FBQW43
RCxFQUFBeU4sR0FDQSxHQUFBd08sR0FBQSxJQUFBaGxCLEtBQUEwSixnQkFBQUMsSUFFQSxRQUFB
MDZELEtBQUE3dEQsR0FDQSxHQUFBQSxFQUFBaFgsZUFBQTZrRSxHQUFBLENBR0EsR0FBQXJuQyxH
QUFBeG1CLEVBQUE2dEQsRUFDQSxVQUFBcm5DLEVBR0EsR0FBQTdqQixFQUFBM1osZUFBQTZrRSxH
QUNBcm5DLEdBQ0F1akMsRUFBQXZnRSxLQUFBcWtFLEVBQUFybkMsRUFBQWowQixPQUVPLENBQ1Bz
N0QsSUFBQWhDLElBQ0FybEMsSUFLQUEsRUFBQWg5QixLQUFBa2lFLG1CQUFBcjNELEtBQTREMkws
RUFBQW01QyxRQUU1RDN5QixFQUFBNnlCLEVBQUFDLHNCQUFBOXlCLEVBQUFoOUIsTUFFQSxJQUFB
eVQsR0FBQSxJQUNBLE9BQUF6VCxLQUFBb2dFLE1BQUEwQixFQUFBOWhFLEtBQUFvZ0UsS0FBQTVw
RCxHQUNBTCxFQUFBM1csZUFBQTZrRSxLQUNBNXdELEVBQUFtb0IsRUFBQU0sK0JBQUFtb0MsRUFB
QXJuQyxJQUdBdnBCLEVBQUFtb0IsRUFBQUssd0JBQUFvb0MsRUFBQXJuQyxHQUVBdnBCLElBQ0F1
UixHQUFBLElBQUF2UixJQU9BLE1BQUExSyxHQUFBdTdELHFCQUNBdC9DLEdBR0FobEIsS0FBQStG
LGNBQ0FpZixHQUFBLElBQUE0VyxFQUFBRyx1QkFFQS9XLEdBQUEsSUFBQTRXLEVBQUFDLGtCQUFB
NzdCLEtBQUFvRixVQWFBZy9ELHFCQUFBLFNBQUFyN0QsRUFBQXlOLEVBQUE5TCxHQUNBLEdBQUFz
YSxHQUFBLEdBR0FzQixFQUFBOVAsRUFBQTZwRCx1QkFDQSxVQUFBLzVDLEVBQ0EsTUFBQUEsRUFB
QWkrQyxTQUNBdi9DLEVBQUFzQixFQUFBaStDLFlBRUssQ0FDTCxHQUFBQyxHQUFBcEMsUUFBQTVy
RCxHQUFBM1IsVUFBQTJSLEVBQUEzUixTQUFBLEtBQ0E0L0QsRUFBQSxNQUFBRCxFQUFBLEtBQUFo
dUQsRUFBQTNSLFFBQ0EsVUFBQTIvRCxFQUVBeC9DLEVBQUFpQixFQUFBdStDLE9BSU8sVUFBQUMs
RUFBQSxDQUNQLEdBQUFySixHQUFBcDdELEtBQUEwa0UsY0FBQUQsRUFBQTE3RCxFQUFBMkIsRUFD
QXNhLEdBQUFvMkMsRUFBQTc0RCxLQUFBLEtBR0EsTUFBQTBnRSxHQUFBampFLEtBQUFvZ0UsT0FB
QSxPQUFBcDdDLEVBQUF1USxPQUFBLEdBV0EsS0FBQXZRLEVBRUFBLEdBSUFnL0MsdUJBQUEsU0FB
QWo3RCxFQUFBeU4sRUFBQTlMLEVBQUFxNUQsR0FFQSxHQUFBejlDLEdBQUE5UCxFQUFBNnBELHVC
QUNBLFVBQUEvNUMsRUFDQSxNQUFBQSxFQUFBaStDLFFBQ0F2MEQsRUFBQUgsVUFBQWswRCxFQUFB
ejlDLEVBQUFpK0MsWUFFSyxDQUNMLEdBQUFDLEdBQUFwQyxRQUFBNXJELEdBQUEzUixVQUFBMlIs
RUFBQTNSLFNBQUEsS0FDQTQvRCxFQUFBLE1BQUFELEVBQUEsS0FBQWh1RCxFQUFBM1IsUUFFQSxV
QUFBMi9ELEVBS0EsS0FBQUEsR0FJQXgwRCxFQUFBRixVQUFBaTBELEVBQUFTLE9BRU8sVUFBQUMs
RUFFUCxPQURBckosR0FBQXA3RCxLQUFBMGtFLGNBQUFELEVBQUExN0QsRUFBQTJCLEdBQ0FyTCxF
QUFBLEVBQXVCQSxFQUFBKzdELEVBQUE5NUQsT0FBd0JqQyxJQUMvQzJRLEVBQUFQLFdBQUFzMEQs
RUFBQTNJLEVBQUEvN0QsTUFjQTJVLGlCQUFBLFNBQUFDLEVBQUFsTCxFQUFBMkIsR0FDQSxHQUFB
d0osR0FBQWxVLEtBQUEwSixlQUNBMUosTUFBQTBKLGdCQUFBdUssRUFDQWpVLEtBQUErZ0QsZ0JB
QUFoNEMsRUFBQW1MLEVBQUFELEVBQUF2SixJQWFBcTJDLGdCQUFBLFNBQUFoNEMsRUFBQW1MLEVB
QUFELEVBQUF2SixHQUNBLEdBQUFpNkQsR0FBQXp3RCxFQUFBc0MsTUFDQSswQixFQUFBdnJDLEtB
QUEwSixnQkFBQThNLEtBRUEsUUFBQXhXLEtBQUFvZ0UsTUFDQSxZQUNBdUUsRUFBQTNELEVBQUF6
akMsYUFBQXY5QixLQUFBMmtFLEdBQ0FwNUIsRUFBQXkxQixFQUFBempDLGFBQUF2OUIsS0FBQXVy
QyxFQUNBLE1BQ0EsY0FDQW81QixFQUFBdEQsRUFBQTlqQyxhQUFBdjlCLEtBQUEya0UsR0FDQXA1
QixFQUFBODFCLEVBQUE5akMsYUFBQXY5QixLQUFBdXJDLEVBQ0EsTUFDQSxjQUNBbzVCLEVBQUFy
bkMsRUFBQUMsYUFBQXY5QixLQUFBMmtFLEdBQ0FwNUIsRUFBQWpPLEVBQUFDLGFBQUF2OUIsS0FB
QXVyQyxFQUNBLE1BQ0EsZ0JBQ0FvNUIsRUFBQXhELEVBQUE1akMsYUFBQXY5QixLQUFBMmtFLEdB
Q0FwNUIsRUFBQTQxQixFQUFBNWpDLGFBQUF2OUIsS0FBQXVyQyxHQVFBLE9BSkEyMEIsRUFBQWxn
RSxLQUFBdXJDLEdBQ0F2ckMsS0FBQThqRSxxQkFBQWEsRUFBQXA1QixFQUFBeGlDLEdBQ0EvSSxL
QUFBNGtFLG1CQUFBRCxFQUFBcDVCLEVBQUF4aUMsRUFBQTJCLEdBRUExSyxLQUFBb2dFLE1BQ0Es
WUFJQVksRUFBQTZELGNBQUE3a0UsS0FDQSxNQUNBLGdCQUNBbWhFLEVBQUEwRCxjQUFBN2tFLEtB
Q0EsTUFDQSxjQUdBK0ksRUFBQTRLLHFCQUFBdkosUUFBQXMzRCxFQUFBMWhFLFFBcUJBOGpFLHFC
QUFBLFNBQUFhLEVBQUFwNUIsRUFBQXhpQyxHQUNBLEdBQUFzN0QsR0FDQTlVLEVBQ0F1VixDQUNB
LEtBQUFULElBQUFNLEdBQ0EsSUFBQXA1QixFQUFBL3JDLGVBQUE2a0UsSUFBQU0sRUFBQW5sRSxl
QUFBNmtFLElBQUEsTUFBQU0sRUFBQU4sR0FHQSxHQUFBQSxJQUFBaEMsRUFBQSxDQUNBLEdBQUEw
QyxHQUFBL2tFLEtBQUFraUUsa0JBQ0EsS0FBQTNTLElBQUF3VixHQUNBQSxFQUFBdmxFLGVBQUEr
dkQsS0FDQXVWLFFBQ0FBLEVBQUF2VixHQUFBLEdBR0F2dkQsTUFBQWtpRSxtQkFBQSxTQUNPL29E
LEdBQUEzWixlQUFBNmtFLEdBQ1BNLEVBQUFOLElBSUEvcUQsRUFBQXRaLEtBQUFxa0UsR0FFT3ZD
LEVBQUE5aEUsS0FBQW9nRSxLQUFBdUUsR0FDUHh1RCxFQUFBM1csZUFBQTZrRSxJQUNBem9DLEVB
QUFhLHdCQUFBK2tDLEVBQUF4aEUsTUFBQXFrRSxJQUVPcitELEVBQUFnTSxXQUFBcXlELElBQUFy
K0QsRUFBQThMLGtCQUFBdXlELEtBQ1B6b0MsRUFBQVEsdUJBQUFvbEMsRUFBQXhoRSxNQUFBcWtF
LEVBR0EsS0FBQUEsSUFBQTk0QixHQUFBLENBQ0EsR0FBQXk1QixHQUFBejVCLEVBQUE4NEIsR0FD
QVksRUFBQVosSUFBQWhDLEVBQUFyaUUsS0FBQWtpRSxtQkFBQSxNQUFBeUMsSUFBQU4sR0FBQTNq
RSxNQUNBLElBQUE2cUMsRUFBQS9yQyxlQUFBNmtFLElBQUFXLElBQUFDLElBQUEsTUFBQUQsR0FB
QSxNQUFBQyxHQUdBLEdBQUFaLElBQUFoQyxFQVVBLEdBVEEyQyxFQUtBQSxFQUFBaGxFLEtBQUFr
aUUsbUJBQUFyM0QsS0FBeURtNkQsR0FFekRobEUsS0FBQWtpRSxtQkFBQSxLQUVBK0MsRUFBQSxD
QUVBLElBQUExVixJQUFBMFYsSUFDQUEsRUFBQXpsRSxlQUFBK3ZELElBQUF5VixLQUFBeGxFLGVB
QUErdkQsS0FDQXVWLFFBQ0FBLEVBQUF2VixHQUFBLEdBSUEsS0FBQUEsSUFBQXlWLEdBQ0FBLEVB
QUF4bEUsZUFBQSt2RCxJQUFBMFYsRUFBQTFWLEtBQUF5VixFQUFBelYsS0FDQXVWLFFBQ0FBLEVB
QUF2VixHQUFBeVYsRUFBQXpWLFFBS0F1VixHQUFBRSxNQUVPLElBQUE3ckQsRUFBQTNaLGVBQUE2
a0UsR0FDUFcsRUFDQXpFLEVBQUF2Z0UsS0FBQXFrRSxFQUFBVyxFQUFBajhELEdBQ1NrOEQsR0FD
VDNyRCxFQUFBdFosS0FBQXFrRSxPQUVPLElBQUF2QyxFQUFBOWhFLEtBQUFvZ0UsS0FBQTcwQixH
QUNQcDFCLEVBQUEzVyxlQUFBNmtFLElBQ0F6b0MsRUFBQVcscUJBQUFpbEMsRUFBQXhoRSxNQUFB
cWtFLEVBQUFXLE9BRU8sSUFBQWgvRCxFQUFBZ00sV0FBQXF5RCxJQUFBcitELEVBQUE4TCxrQkFB
QXV5RCxHQUFBLENBQ1AsR0FBQTVnRSxHQUFBKzlELEVBQUF4aEUsS0FJQSxPQUFBZ2xFLEVBQ0Fw
cEMsRUFBQU8sb0JBQUExNEIsRUFBQTRnRSxFQUFBVyxHQUVBcHBDLEVBQUFRLHVCQUFBMzRCLEVB
QUE0Z0UsSUFJQVMsR0FDQWpWLEVBQUFNLGtCQUFBcVIsRUFBQXhoRSxNQUFBOGtFLEVBQUE5a0Us
T0FhQTRrRSxtQkFBQSxTQUFBRCxFQUFBcDVCLEVBQUF4aUMsRUFBQTJCLEdBQ0EsR0FBQXc2RCxH
QUFBOUMsUUFBQXVDLEdBQUE5L0QsVUFBQTgvRCxFQUFBOS9ELFNBQUEsS0FDQXNnRSxFQUFBL0Ms
UUFBQTcyQixHQUFBMW1DLFVBQUEwbUMsRUFBQTFtQyxTQUFBLEtBRUF1Z0UsRUFBQVQsRUFBQXRF
LHlCQUFBc0UsRUFBQXRFLHdCQUFBa0UsT0FDQWMsRUFBQTk1QixFQUFBODBCLHlCQUFBOTBCLEVB
QUE4MEIsd0JBQUFrRSxPQUdBZSxFQUFBLE1BQUFKLEVBQUEsS0FBQVAsRUFBQTkvRCxTQUNBczJE
LEVBQUEsTUFBQWdLLEVBQUEsS0FBQTU1QixFQUFBMW1DLFNBSUEwZ0UsRUFBQSxNQUFBTCxHQUFB
LE1BQUFFLEVBQ0FJLEVBQUEsTUFBQUwsR0FBQSxNQUFBRSxDQUNBLE9BQUFDLEdBQUEsTUFBQW5L
LEVBQ0FuN0QsS0FBQWk3RCxlQUFBLEtBQUFseUQsRUFBQTJCLEdBQ0s2NkQsSUFBQUMsR0FDTHhs
RSxLQUFBeWxFLGtCQUFBLElBTUEsTUFBQU4sRUFDQUQsSUFBQUMsR0FDQW5sRSxLQUFBeWxFLGtC
QUFBLEdBQUFOLEdBS0ssTUFBQUUsRUFDTEQsSUFBQUMsR0FDQXJsRSxLQUFBMGxFLGFBQUEsR0FB
QUwsR0FLSyxNQUFBbEssR0FLTG43RCxLQUFBaTdELGVBQUFFLEVBQUFweUQsRUFBQTJCLElBSUFr
SixZQUFBLFdBQ0EsTUFBQTR0RCxHQUFBeGhFLE9BU0E2VCxpQkFBQSxTQUFBQyxHQUNBLE9BQUE5
VCxLQUFBb2dFLE1BQ0EsWUFDQSxXQUNBLGFBQ0EsVUFDQSxXQUNBLGFBQ0EsYUFDQSxZQUNBLEdB
QUF6aUMsR0FBQTM5QixLQUFBMjhCLGNBQUFnQixTQUNBLElBQUFBLEVBQ0EsT0FBQXQrQixHQUFB
LEVBQXlCQSxFQUFBcytCLEVBQUFyOEIsT0FBc0JqQyxJQUMvQ3MrQixFQUFBdCtCLEdBQUF3YyxR
QUdBLE1BQ0EsYUFDQSxlQUNBK3FCLEVBQUFXLGFBQUF2bkMsS0FDQSxNQUNBLFlBQ0EsV0FDQSxX
QU9Bc0YsRUFBQSxLQUFBdEYsS0FBQW9nRSxNQUlBcGdFLEtBQUF5N0QsZ0JBQUEzbkQsR0FDQXhO
LEVBQUE5QixZQUFBeEUsTUFDQTJZLEVBQUFhLG1CQUFBeFosTUFDQUEsS0FBQTBZLFlBQUEsRUFD
QTFZLEtBQUFvRixPQUFBLEVBQ0FwRixLQUFBMjhCLGNBQUEsTUFPQXR5QixrQkFBQSxXQUNBLE1B
QUFtM0QsR0FBQXhoRSxRQUlBNkssRUFBQWszRCxFQUFBeGlFLFVBQUF3aUUsRUFBQXdCLE1BQUFw
QixFQUFBb0IsT0FFQXprRSxFQUFBRCxRQUFBa2pFLEd6SWs2ZU0sU0FBU2pqRSxFQUFRRCxFQUFT
SCxHMEl4NGdCaEMsWUFNQSxTQUFBc2pDLEdBQUEyakMsRUFBQWxpRSxHQUNBLEdBQUFva0MsSUFD
QTVGLGlCQUFBMGpDLEVBQ0FuQyxXQUFBLEVBQ0EzQyxlQUFBcDlELElBQUFFLFdBQUE4OUIsRUFB
QWgrQixJQUFBK1ksY0FBQSxLQUNBbWtELE1BQUFsOUQsRUFDQTI4RCxLQUFBMzhELElBQUFzTSxT
QUFBVyxjQUFBLEtBQ0FzeEQsY0FBQXYrRCxJQUFBa04sYUFBQSxLQUtBLE9BQUFrM0IsR0FoQkEs
R0FFQXBHLElBRkEvaUMsRUFBQSxJQUVBLEVBaUJBSSxHQUFBRCxRQUFBbWpDLEcxSXc1Z0JNLFNB
QVNsakMsRUFBUUQsRUFBU0gsRzJJNzZnQmhDLFlBRUEsSUFBQW1NLEdBQUFuTSxFQUFBLEdBRUFz
UixFQUFBdFIsRUFBQSxJQUNBNEgsRUFBQTVILEVBQUEsR0FFQWtuRSxFQUFBLFNBQUF4bkMsR0FF
QXArQixLQUFBMEosZ0JBQUEsS0FFQTFKLEtBQUFzRSxVQUFBLEtBQ0F0RSxLQUFBK0YsWUFBQSxL
QUNBL0YsS0FBQWdqQyxtQkFBQSxLQUNBaGpDLEtBQUFvRixPQUFBLEVBRUF5RixHQUFBKzZELEVB
QUFybUUsV0FDQTZULGVBQUEsU0FBQXJLLEVBQUF1SyxFQUFBQyxFQUFBN0ksR0FDQSxHQUFBbTdE
LEdBQUF0eUQsRUFBQWl3RCxZQUNBeGpFLE1BQUFvRixPQUFBeWdFLEVBQ0E3bEUsS0FBQStGLFlB
QUF1TixFQUNBdFQsS0FBQWdqQyxtQkFBQXp2QixDQUVBLElBQUF6UCxHQUFBLGlCQUFBOUQsS0FB
QW9GLE9BQUEsR0FDQSxJQUFBMkQsRUFBQXc1QixpQkFBQSxDQUNBLEdBQUEvbEIsR0FBQWpKLEVB
QUFzdEQsZUFDQXA5RCxFQUFBK1ksRUFBQXNwRCxjQUFBaGlFLEVBRUEsT0FEQXdDLEdBQUFuQyxh
QUFBbkUsS0FBQXlELEdBQ0F1TSxFQUFBdk0sR0FFQSxNQUFBc0YsR0FBQXU3RCxxQkFJQSxHQUVB
LE9BQUF4Z0UsRUFBQSxPQUdBa1EsaUJBQUEsYUFDQUosWUFBQSxXQUNBLE1BQUF0TixHQUFBUixv
QkFBQTlGLE9BRUE2VCxpQkFBQSxXQUNBdk4sRUFBQTlCLFlBQUF4RSxTQUlBbEIsRUFBQUQsUUFB
QSttRSxHM0k2N2dCTSxTQUFTOW1FLEVBQVFELEc0STcrZ0J2QixZQUVBLElBQUF5akMsSUFDQUMs
a0JBQUEsRUFDQXdqQyxVQUFBLEVBR0FqbkUsR0FBQUQsUUFBQXlqQyxHNUk2L2dCTSxTQUFTeGpD
LEVBQVFELEVBQVNILEc2SXBnaEJoQyxZQUVBLElBQUFrc0IsR0FBQWxzQixFQUFBLElBQ0E0SCxF
QUFBNUgsRUFBQSxHQUtBazlELEdBT0FFLGtDQUFBLFNBQUEvZ0QsRUFBQStQLEdBQ0EsR0FBQXJu
QixHQUFBNkMsRUFBQVIsb0JBQUFpVixFQUNBNlAsR0FBQUMsZUFBQXBuQixFQUFBcW5CLElBSUFo
c0IsR0FBQUQsUUFBQSs4RCxHN0lvaGhCTSxTQUFTOThELEVBQVFELEVBQVNILEc4SXppaEJoQyxZ
QW9CQSxTQUFBc25FLEtBQ0FobUUsS0FBQTBZLGFBRUFzb0QsRUFBQTZELGNBQUE3a0UsTUFJQSxR
QUFBaW1FLEdBQUF6dkQsR0FDQSxHQUFBMHZELEdBQUEsYUFBQTF2RCxFQUFBN00sTUFBQSxVQUFB
Nk0sRUFBQTdNLElBQ0EsT0FBQXU4RCxHQUFBLE1BQUExdkQsRUFBQTZZLFFBQUEsTUFBQTdZLEVB
QUExRixNQXNNQSxRQUFBc3NCLEdBQUF2dkIsR0FDQSxHQUFBMkksR0FBQXhXLEtBQUEwSixnQkFB
QThNLE1BRUF0SixFQUFBa2pCLEVBQUFLLGdCQUFBamEsRUFBQTNJLEVBS0EvRixHQUFBMkMsS0FB
QXU3RCxFQUFBaG1FLEtBRUEsSUFBQWMsR0FBQTBWLEVBQUExVixJQUNBLGNBQUEwVixFQUFBN00s
TUFBQSxNQUFBN0ksRUFBQSxDQUlBLElBSEEsR0FBQXFsRSxHQUFBNy9ELEVBQUFSLG9CQUFBOUYs
TUFDQW9tRSxFQUFBRCxFQUVBQyxFQUFBMWdFLFlBQ0EwZ0UsSUFBQTFnRSxVQVdBLFFBRkEyZ0Us
R0FBQUQsRUFBQUUsaUJBQUEsY0FBQWo1QixLQUFBQyxVQUFBLEdBQUF4c0MsR0FBQSxtQkFFQXpC
LEVBQUEsRUFBbUJBLEVBQUFnbkUsRUFBQS9rRSxPQUFrQmpDLElBQUEsQ0FDckMsR0FBQWtuRSxH
QUFBRixFQUFBaG5FLEVBQ0EsSUFBQWtuRSxJQUFBSixHQUFBSSxFQUFBcFIsT0FBQWdSLEVBQUFo
UixLQUFBLENBT0EsR0FBQXFSLEdBQUFsZ0UsRUFBQVQsb0JBQUEwZ0UsRUFDQUMsR0FBQSxPQUFB
bGhFLEVBQUEsTUFJQXdDLEVBQUEyQyxLQUFBdTdELEVBQUFRLEtBSUEsTUFBQXQ1RCxHQTlRQSxH
QUFBNUgsR0FBQTVHLEVBQUEsR0FDQW1NLEVBQUFuTSxFQUFBLEdBRUFrOUIsRUFBQWw5QixFQUFB
LElBQ0EweEIsRUFBQTF4QixFQUFBLElBQ0E0SCxFQUFBNUgsRUFBQSxHQUNBb0osRUFBQXBKLEVB
QUEsR0F3Q0FzaUUsR0F0Q0F0aUUsRUFBQSxHQUNBQSxFQUFBLElBc0NBNitCLGFBQUEsU0FBQW41
QixFQUFBb1MsR0FDQSxHQUFBMUYsR0FBQXNmLEVBQUFHLFNBQUEvWixHQUNBNlksRUFBQWUsRUFB
QUksV0FBQWhhLEdBRUFpd0QsRUFBQTU3RCxHQUdBbEIsS0FBQWpKLE9BR0FxcEMsS0FBQXJwQyxP
QUdBb2dDLElBQUFwZ0MsT0FDQXEyRCxJQUFBcjJELFFBQ0s4VixHQUNMa3dELGVBQUFobUUsT0FD
QWc5QixhQUFBaDlCLE9BQ0FvUSxNQUFBLE1BQUFBLElBQUExTSxFQUFBdTRCLGNBQUFjLGFBQ0Fw
TyxRQUFBLE1BQUFBLElBQUFqckIsRUFBQXU0QixjQUFBZ3FDLGVBQ0F4M0MsU0FBQS9xQixFQUFB
dTRCLGNBQUF4TixVQUdBLE9BQUFzM0MsSUFHQWpwQyxhQUFBLFNBQUFwNUIsRUFBQW9TLEdBSUEs
R0FvQkFrbkIsR0FBQWxuQixFQUFBa25CLFlBQ0F0NUIsR0FBQXU0QixlQUNBZ3FDLGVBQUEsTUFB
QW53RCxFQUFBNlksUUFBQTdZLEVBQUE2WSxRQUFBN1ksRUFBQWt3RCxlQUNBanBDLGFBQUEsTUFB
QWpuQixFQUFBMUYsTUFBQTBGLEVBQUExRixNQUFBNHNCLEVBQ0FDLFVBQUEsS0FDQXhPLFNBQUFp
TyxFQUFBbm1CLEtBQUE3UyxHQUNBMHRELFdBQUFtVSxFQUFBenZELEtBSUFxdUQsY0FBQSxTQUFB
emdFLEdBQ0EsR0FBQW9TLEdBQUFwUyxFQUFBc0YsZ0JBQUE4TSxNQWlCQTZZLEVBQUE3WSxFQUFB
NlksT0FDQSxPQUFBQSxHQUNBdU0sRUFBQU8sb0JBQUE3MUIsRUFBQVIsb0JBQUExQixHQUFBLFVB
QUFpckIsSUFBQSxFQUdBLElBQUE1ckIsR0FBQTZDLEVBQUFSLG9CQUFBMUIsR0FDQTBNLEVBQUFz
ZixFQUFBRyxTQUFBL1osRUFDQSxVQUFBMUYsRUFDQSxPQUFBQSxHQUFBLEtBQUFyTixFQUFBcU4s
TUFDQXJOLEVBQUFxTixNQUFBLFFBRU8sZUFBQTBGLEVBQUE3TSxLQUFBLENBRVAsR0FBQWk5RCxH
QUFBQyxXQUFBcGpFLEVBQUFxTixNQUFBLFFBSUFBLEdBQUE4MUQsR0FFQTkxRCxHQUFBODFELEdB
QUFuakUsRUFBQXFOLFlBR0FyTixFQUFBcU4sTUFBQSxHQUFBQSxPQUVPck4sR0FBQXFOLFFBQUEs
R0FBQUEsSUFHUHJOLEVBQUFxTixNQUFBLEdBQUFBLE9BR0EsT0FBQTBGLEVBQUExRixPQUFBLE1B
QUEwRixFQUFBa25CLGNBU0FqNkIsRUFBQWk2QixlQUFBLEdBQUFsbkIsRUFBQWtuQixlQUNBajZC
LEVBQUFpNkIsYUFBQSxHQUFBbG5CLEVBQUFrbkIsY0FHQSxNQUFBbG5CLEVBQUE2WSxTQUFBLE1B
QUE3WSxFQUFBa3dELGlCQUNBampFLEVBQUFpakUsaUJBQUFsd0QsRUFBQWt3RCxpQkFLQXpGLGlC
QUFBLFNBQUE3OEQsR0FDQSxHQUFBb1MsR0FBQXBTLEVBQUFzRixnQkFBQThNLE1BSUEvUyxFQUFB
NkMsRUFBQVIsb0JBQUExQixFQVFBLFFBQUFvUyxFQUFBN00sTUFDQSxhQUNBLFlBQ0EsS0FDQSxh
QUNBLFdBQ0EsZUFDQSxxQkFDQSxZQUNBLFdBQ0EsV0FHQWxHLEVBQUFxTixNQUFBLEdBQ0FyTixF
QUFBcU4sTUFBQXJOLEVBQUFpNkIsWUFDQSxNQUNBLFNBQ0FqNkIsRUFBQXFOLE1BQUFyTixFQUFB
cU4sTUFTQSxHQUFBaFEsR0FBQTJDLEVBQUEzQyxJQUNBLE1BQUFBLElBQ0EyQyxFQUFBM0MsS0FB
QSxJQUVBMkMsRUFBQWlqRSxnQkFBQWpqRSxFQUFBaWpFLGVBQ0FqakUsRUFBQWlqRSxnQkFBQWpq
RSxFQUFBaWpFLGVBQ0EsS0FBQTVsRSxJQUNBMkMsRUFBQTNDLFVBcURBaEMsR0FBQUQsUUFBQW1p
RSxHOUl5amhCTSxTQUFTbGlFLEVBQVFELEVBQVNILEcrSTUwaEJoQyxZQVdBLFNBQUFvb0UsR0FB
QWppRSxHQUNBLEdBQUFvbUIsR0FBQSxFQWdCQSxPQVpBOVYsR0FBQUMsU0FBQTFTLFFBQUFtQyxF
QUFBLFNBQUFrOUIsR0FDQSxNQUFBQSxJQUdBLGdCQUFBQSxJQUFBLGdCQUFBQSxHQUNBOVcsR0FB
QThXLEVBQ0tnbEMsSUFDTEEsR0FBQSxNQUtBOTdDLEVBMUJBLEdBQUFwZ0IsR0FBQW5NLEVBQUEs
R0FFQXlXLEVBQUF6VyxFQUFBLElBQ0E0SCxFQUFBNUgsRUFBQSxHQUNBNCtCLEVBQUE1K0IsRUFB
QSxJQUdBcW9FLEdBREFyb0UsRUFBQSxJQUNBLEdBeUJBMmlFLEdBQ0E3akMsYUFBQSxTQUFBcDVC
LEVBQUFvUyxFQUFBbEQsR0FPQSxHQUFBMHpELEdBQUEsSUFDQSxVQUFBMXpELEVBQUEsQ0FDQSxH
QUFBMnpELEdBQUEzekQsQ0FFQSxjQUFBMnpELEVBQUE3RyxPQUNBNkcsSUFBQWxoRSxhQUdBLE1B
QUFraEUsR0FBQSxXQUFBQSxFQUFBN0csT0FDQTRHLEVBQUExcEMsRUFBQU8sc0JBQUFvcEMsSUFN
QSxHQUFBOXBDLEdBQUEsSUFDQSxVQUFBNnBDLEVBQUEsQ0FDQSxHQUFBbDJELEVBT0EsSUFMQUEs
RUFEQSxNQUFBMEYsRUFBQTFGLE1BQ0EwRixFQUFBMUYsTUFBQSxHQUVBZzJELEVBQUF0d0QsRUFB
QTNSLFVBRUFzNEIsR0FBQSxFQUNBcm1CLE1BQUF3UixRQUFBMCtDLElBRUEsT0FBQTNuRSxHQUFB
LEVBQXVCQSxFQUFBMm5FLEVBQUExbEUsT0FBd0JqQyxJQUMvQyxNQUFBMm5FLEVBQUEzbkUsS0FB
QXlSLEVBQUEsQ0FDQXFzQixHQUFBLENBQ0EsWUFJQUEsR0FBQSxHQUFBNnBDLElBQUFsMkQsRUFJ
QTFNLEVBQUF1NEIsZUFBMEJRLGFBRzFCOGpDLGlCQUFBLFNBQUE3OEQsR0FFQSxHQUFBb1MsR0FB
QXBTLEVBQUFzRixnQkFBQThNLEtBQ0EsVUFBQUEsRUFBQTFGLE1BQUEsQ0FDQSxHQUFBck4sR0FB
QTZDLEVBQUFSLG9CQUFBMUIsRUFDQVgsR0FBQW93QixhQUFBLFFBQUFyZCxFQUFBMUYsU0FJQXlz
QixhQUFBLFNBQUFuNUIsRUFBQW9TLEdBQ0EsR0FBQWl3RCxHQUFBNTdELEdBQTZCc3lCLFNBQUF6
OEIsT0FBQW1FLFNBQUFuRSxRQUEyQzhWLEVBSXhFLE9BQUFwUyxFQUFBdTRCLGNBQUFRLFdBQ0Fz
cEMsRUFBQXRwQyxTQUFBLzRCLEVBQUF1NEIsY0FBQVEsU0FHQSxJQUFBbFMsR0FBQTY3QyxFQUFB
dHdELEVBQUEzUixTQU1BLE9BSkFvbUIsS0FDQXc3QyxFQUFBNWhFLFNBQUFvbUIsR0FHQXc3QyxH
QUlBM25FLEdBQUFELFFBQUF3aUUsRy9JNDFoQk0sU0FBU3ZpRSxFQUFRRCxFQUFTSCxHZ0oxOGhC
aEMsWUFZQSxTQUFBd29FLEdBQUFDLEVBQUFDLEVBQUF2eUMsRUFBQXd5QyxHQUNBLE1BQUFGLEtB
QUF0eUMsR0FBQXV5QyxJQUFBQyxFQWlCQSxRQUFBQyxHQUFBN2pFLEdBQ0EsR0FBQXk4QixHQUFB
ejVCLFNBQUF5NUIsVUFDQXFuQyxFQUFBcm5DLEVBQUFNLGNBQ0FnbkMsRUFBQUQsRUFBQXA0RCxL
QUFBN04sT0FHQW1tRSxFQUFBRixFQUFBRyxXQUNBRCxHQUFBRSxrQkFBQWxrRSxHQUNBZ2tFLEVB
QUFHLFlBQUEsYUFBQUwsRUFFQSxJQUFBTSxHQUFBSixFQUFBdDRELEtBQUE3TixPQUNBd21FLEVB
QUFELEVBQUFMLENBRUEsUUFDQXJuQyxNQUFBMG5DLEVBQ0F4bkMsSUFBQXluQyxHQVFBLFFBQUFD
LEdBQUF0a0UsR0FDQSxHQUFBeThCLEdBQUExNUIsT0FBQWs1QixjQUFBbDVCLE9BQUFrNUIsY0FF
QSxLQUFBUSxHQUFBLElBQUFBLEVBQUE4bkMsV0FDQSxXQUdBLElBQUFiLEdBQUFqbkMsRUFBQWlu
QyxXQUNBQyxFQUFBbG5DLEVBQUFrbkMsYUFDQXZ5QyxFQUFBcUwsRUFBQXJMLFVBQ0F3eUMsRUFB
QW5uQyxFQUFBbW5DLFlBRUFZLEVBQUEvbkMsRUFBQWdvQyxXQUFBLEVBU0EsS0FFQUQsRUFBQUUs
ZUFBQXhrRSxTQUNBc2tFLEVBQUFHLGFBQUF6a0UsU0FFRyxNQUFBckQsR0FDSCxZQU1BLEdBQUEr
bkUsR0FBQW5CLEVBQUFobkMsRUFBQWluQyxXQUFBam5DLEVBQUFrbkMsYUFBQWxuQyxFQUFBckws
VUFBQXFMLEVBQUFtbkMsYUFFQWlCLEVBQUFELEVBQUEsRUFBQUosRUFBQTVoRSxXQUFBL0UsT0FF
QWluRSxFQUFBTixFQUFBTyxZQUNBRCxHQUFBRSxtQkFBQWhsRSxHQUNBOGtFLEVBQUFHLE9BQUFU
LEVBQUFFLGVBQUFGLEVBQUFKLFlBRUEsSUFBQWMsR0FBQXpCLEVBQUFxQixFQUFBSixlQUFBSSxF
QUFBVixZQUFBVSxFQUFBSCxhQUFBRyxFQUFBVCxXQUVBM25DLEVBQUF3b0MsRUFBQSxFQUFBSixF
QUFBbGlFLFdBQUEvRSxPQUNBKytCLEVBQUFGLEVBQUFtb0MsRUFHQU0sRUFBQW5pRSxTQUFBKzVC
LGFBQ0Fvb0MsR0FBQUMsU0FBQTFCLEVBQUFDLEdBQ0F3QixFQUFBRixPQUFBN3pDLEVBQUF3eUMs
RUFDQSxJQUFBeUIsR0FBQUYsRUFBQUcsU0FFQSxRQUNBNW9DLE1BQUEyb0MsRUFBQXpvQyxFQUFB
RixFQUNBRSxJQUFBeW9DLEVBQUEzb0MsRUFBQUUsR0FRQSxRQUFBMm9DLEdBQUF2bEUsRUFBQW85
QixHQUNBLEdBQ0FWLEdBQUFFLEVBREFFLEVBQUE5NUIsU0FBQXk1QixVQUFBTSxjQUFBa25DLFdB
R0FobkUsVUFBQW1nQyxFQUFBUixLQUNBRixFQUFBVSxFQUFBVixNQUNBRSxFQUFBRixHQUNHVSxF
QUFBVixNQUFBVSxFQUFBUixLQUNIRixFQUFBVSxFQUFBUixJQUNBQSxFQUFBUSxFQUFBVixRQUVB
QSxFQUFBVSxFQUFBVixNQUNBRSxFQUFBUSxFQUFBUixLQUdBRSxFQUFBb25DLGtCQUFBbGtFLEdB
Q0E4OEIsRUFBQUcsVUFBQSxZQUFBUCxHQUNBSSxFQUFBcW5DLFlBQUEsYUFBQXJuQyxHQUNBQSxF
QUFBSSxRQUFBLFlBQUFOLEVBQUFGLEdBQ0FJLEVBQUFVLFNBZUEsUUFBQWdvQyxHQUFBeGxFLEVB
QUFvOUIsR0FDQSxHQUFBcjZCLE9BQUFrNUIsYUFBQSxDQUlBLEdBQUFRLEdBQUExNUIsT0FBQWs1
QixlQUNBcCtCLEVBQUFtQyxFQUFBMGlDLEtBQUE3a0MsT0FDQTYrQixFQUFBaDZCLEtBQUEyNkIs
SUFBQUQsRUFBQVYsTUFBQTcrQixHQUNBKytCLEVBQUEzL0IsU0FBQW1nQyxFQUFBUixJQUFBRixF
QUFBaDZCLEtBQUEyNkIsSUFBQUQsRUFBQVIsSUFBQS8rQixFQUlBLEtBQUE0K0IsRUFBQWdwQyxR
QUFBL29DLEVBQUFFLEVBQUEsQ0FDQSxHQUFBOG9DLEdBQUE5b0MsQ0FDQUEsR0FBQUYsRUFDQUEs
RUFBQWdwQyxFQUdBLEdBQUFDLEdBQUFDLEVBQUE1bEUsRUFBQTA4QixHQUNBbXBDLEVBQUFELEVB
QUE1bEUsRUFBQTQ4QixFQUVBLElBQUErb0MsR0FBQUUsRUFBQSxDQUNBLEdBQUEvb0MsR0FBQTk1
QixTQUFBKzVCLGFBQ0FELEdBQUFzb0MsU0FBQU8sRUFBQTNsRSxLQUFBMmxFLEVBQUFHLFFBQ0Fy
cEMsRUFBQXNwQyxrQkFFQXJwQyxFQUFBRSxHQUNBSCxFQUFBdXBDLFNBQUFscEMsR0FDQUwsRUFB
QWdwQyxPQUFBSSxFQUFBN2xFLEtBQUE2bEUsRUFBQUMsVUFFQWhwQyxFQUFBbW9DLE9BQUFZLEVB
QUE3bEUsS0FBQTZsRSxFQUFBQyxRQUNBcnBDLEVBQUF1cEMsU0FBQWxwQyxNQWxMQSxHQUFBNTVC
LEdBQUFqSSxFQUFBLEdBRUEycUUsRUFBQTNxRSxFQUFBLEtBQ0F5bkMsRUFBQXpuQyxFQUFBLElB
b0xBZ3JFLEVBQUEvaUUsRUFBQUosV0FBQSxhQUFBRSxhQUFBLGdCQUFBRCxTQUVBMDRCLEdBSUEw
QixXQUFBOG9DLEVBQUFwQyxFQUFBUyxFQU1BN21DLFdBQUF3b0MsRUFBQVYsRUFBQUMsRUFHQW5x
RSxHQUFBRCxRQUFBcWdDLEdoSjA5aEJNLFNBQVNwZ0MsRUFBUUQsRUFBU0gsR2lKbHFpQmhDLFlB
RUEsSUFBQTRHLEdBQUE1RyxFQUFBLEdBQ0FtTSxFQUFBbk0sRUFBQSxHQUVBa3NCLEVBQUFsc0Is
RUFBQSxJQUNBc1IsRUFBQXRSLEVBQUEsSUFDQTRILEVBQUE1SCxFQUFBLEdBRUF1bkIsRUFBQXZu
QixFQUFBLElBbUJBaXJFLEdBbEJBanJFLEVBQUEsR0FDQUEsRUFBQSxJQWlCQSxTQUFBeVEsR0FF
QW5QLEtBQUEwSixnQkFBQXlGLEVBQ0FuUCxLQUFBNHBFLFlBQUEsR0FBQXo2RCxFQUVBblAsS0FB
QXNFLFVBQUEsS0FDQXRFLEtBQUErRixZQUFBLEtBR0EvRixLQUFBb0YsT0FBQSxFQUNBcEYsS0FB
QWdvQyxZQUFBLEVBQ0Fob0MsS0FBQTZwRSxnQkFBQSxLQUNBN3BFLEtBQUE4cEUsY0FBQSxNQUdB
ai9ELEdBQUE4K0QsRUFBQXBxRSxXQVNBNlQsZUFBQSxTQUFBckssRUFBQXVLLEVBQUFDLEVBQUE3
SSxHQUVBLEdBYUFtN0QsR0FBQXR5RCxFQUFBaXdELGFBQ0F1RyxFQUFBLGdCQUFBbEUsRUFBQSxJ
QUNBbUUsRUFBQSxlQUdBLElBRkFocUUsS0FBQW9GLE9BQUF5Z0UsRUFDQTdsRSxLQUFBK0YsWUFB
QXVOLEVBQ0F2SyxFQUFBdzVCLGlCQUFBLENBQ0EsR0FBQS9sQixHQUFBakosRUFBQXN0RCxlQUNB
MTJDLEVBQUEzTixFQUFBc3BELGNBQUFpRSxHQUNBOS9DLEVBQUF6TixFQUFBc3BELGNBQUFrRSxH
QUNBakcsRUFBQS96RCxFQUFBd00sRUFBQXl0RCx5QkFRQSxPQVBBajZELEdBQUFQLFdBQUFzMEQs
RUFBQS96RCxFQUFBbWEsSUFDQW5xQixLQUFBNHBFLGFBQ0E1NUQsRUFBQVAsV0FBQXMwRCxFQUFB
L3pELEVBQUF3TSxFQUFBaU8sZUFBQXpxQixLQUFBNHBFLGVBRUE1NUQsRUFBQVAsV0FBQXMwRCxF
QUFBL3pELEVBQUFpYSxJQUNBM2pCLEVBQUFuQyxhQUFBbkUsS0FBQW1xQixHQUNBbnFCLEtBQUE2
cEUsZ0JBQUE1L0MsRUFDQTg1QyxFQUVBLEdBQUFtRyxHQUFBamtELEVBQUFqbUIsS0FBQTRwRSxZ
QUVBLE9BQUE3Z0UsR0FBQXU3RCxxQkFJQTRGLEVBR0EsT0FBQUgsRUFBQSxNQUFBRyxFQUFBLE9B
QUFGLEVBQUEsT0FXQWgyRCxpQkFBQSxTQUFBbTJELEVBQUFwaEUsR0FDQSxHQUFBb2hFLElBQUFu
cUUsS0FBQTBKLGdCQUFBLENBQ0ExSixLQUFBMEosZ0JBQUF5Z0UsQ0FDQSxJQUFBQyxHQUFBLEdB
QUFELENBQ0EsSUFBQUMsSUFBQXBxRSxLQUFBNHBFLFlBQUEsQ0FJQTVwRSxLQUFBNHBFLFlBQUFR
LENBQ0EsSUFBQUMsR0FBQXJxRSxLQUFBNFQsYUFDQWdYLEdBQUFOLHFCQUFBKy9DLEVBQUEsR0FB
QUEsRUFBQSxHQUFBRCxNQUtBeDJELFlBQUEsV0FDQSxHQUFBMDJELEdBQUF0cUUsS0FBQThwRSxh
QUNBLElBQUFRLEVBQ0EsTUFBQUEsRUFFQSxLQUFBdHFFLEtBQUE2cEUsZ0JBR0EsSUFGQSxHQUFB
MS9DLEdBQUE3akIsRUFBQVIsb0JBQUE5RixNQUNBeUQsRUFBQTBtQixFQUFBOWtCLGNBQ0E7QUFF
QSxHQURBLE1BQUE1QixFQUFBNkIsRUFBQSxLQUFBdEYsS0FBQW9GLFFBQUEsT0FDQSxJQUFBM0Is
RUFBQUUsVUFBQSxrQkFBQUYsRUFBQUssVUFBQSxDQUNBOUQsS0FBQTZwRSxnQkFBQXBtRSxDQUNB
LE9BRUFBLElBQUE0QixZQUtBLE1BRkFpbEUsSUFBQXRxRSxLQUFBc0UsVUFBQXRFLEtBQUE2cEUs
aUJBQ0E3cEUsS0FBQThwRSxjQUFBUSxFQUNBQSxHQUdBejJELGlCQUFBLFdBQ0E3VCxLQUFBNnBF
LGdCQUFBLEtBQ0E3cEUsS0FBQThwRSxjQUFBLEtBQ0F4akUsRUFBQTlCLFlBQUF4RSxTQUlBbEIs
RUFBQUQsUUFBQThxRSxHakprcmlCTSxTQUFTN3FFLEVBQVFELEVBQVNILEdrSngwaUJoQyxZQWVB
LFNBQUFzbkUsS0FDQWhtRSxLQUFBMFksYUFFQXlvRCxFQUFBMEQsY0FBQTdrRSxNQTJIQSxRQUFB
bzlCLEdBQUF2dkIsR0FDQSxHQUFBMkksR0FBQXhXLEtBQUEwSixnQkFBQThNLE1BQ0F0SixFQUFB
a2pCLEVBQUFLLGdCQUFBamEsRUFBQTNJLEVBRUEsT0FEQS9GLEdBQUEyQyxLQUFBdTdELEVBQUFo
bUUsTUFDQWtOLEVBL0lBLEdBQUE1SCxHQUFBNUcsRUFBQSxHQUNBbU0sRUFBQW5NLEVBQUEsR0FF
QTB4QixFQUFBMXhCLEVBQUEsSUFDQTRILEVBQUE1SCxFQUFBLEdBQ0FvSixFQUFBcEosRUFBQSxH
QThCQXlpRSxHQTVCQXppRSxFQUFBLEdBQ0FBLEVBQUEsSUE0QkE2K0IsYUFBQSxTQUFBbjVCLEVB
QUFvUyxHQUNBLE1BQUFBLEVBQUE2cEQsd0JBQUEvNkQsRUFBQSxZQU9BLElBQUFtaEUsR0FBQTU3
RCxLQUE4QjJMLEdBQzlCMUYsTUFBQXBRLE9BQ0FnOUIsYUFBQWg5QixPQUNBbUUsU0FBQSxHQUFB
VCxFQUFBdTRCLGNBQUFjLGFBQ0F0TyxTQUFBL3FCLEVBQUF1NEIsY0FBQXhOLFVBR0EsT0FBQXMz
QyxJQUdBanBDLGFBQUEsU0FBQXA1QixFQUFBb1MsR0FhQSxHQUFBMUYsR0FBQXNmLEVBQUFHLFNB
QUEvWixHQUNBaW5CLEVBQUEzc0IsQ0FHQSxVQUFBQSxFQUFBLENBQ0EsR0FBQTRzQixHQUFBbG5C
LEVBQUFrbkIsYUFFQTc0QixFQUFBMlIsRUFBQTNSLFFBQ0EsT0FBQUEsSUFJQSxNQUFBNjRCLEVB
QUFwNEIsRUFBQSxhQUNBd1IsTUFBQXdSLFFBQUF6akIsS0FDQUEsRUFBQXZELFFBQUEsU0FBQWdF
LEVBQUEsTUFDQVQsSUFBQSxJQUdBNjRCLEVBQUEsR0FBQTc0QixHQUVBLE1BQUE2NEIsSUFDQUEs
RUFBQSxJQUVBRCxFQUFBQyxFQUdBdDVCLEVBQUF1NEIsZUFDQWMsYUFBQSxHQUFBQSxFQUNBRSxV
QUFBLEtBQ0F4TyxTQUFBaU8sRUFBQW5tQixLQUFBN1MsS0FJQXlnRSxjQUFBLFNBQUF6Z0UsR0FD
QSxHQUFBb1MsR0FBQXBTLEVBQUFzRixnQkFBQThNLE1BRUEvUyxFQUFBNkMsRUFBQVIsb0JBQUEx
QixHQUNBME0sRUFBQXNmLEVBQUFHLFNBQUEvWixFQUNBLFVBQUExRixFQUFBLENBR0EsR0FBQWlu
QyxHQUFBLEdBQUFqbkMsQ0FHQWluQyxLQUFBdDBDLEVBQUFxTixRQUNBck4sRUFBQXFOLE1BQUFp
bkMsR0FFQSxNQUFBdmhDLEVBQUFrbkIsZUFDQWo2QixFQUFBaTZCLGFBQUFxYSxHQUdBLE1BQUF2
aEMsRUFBQWtuQixlQUNBajZCLEVBQUFpNkIsYUFBQWxuQixFQUFBa25CLGVBSUF1akMsaUJBQUEs
U0FBQTc4RCxHQUdBLEdBQUFYLEdBQUE2QyxFQUFBUixvQkFBQTFCLEdBQ0Era0MsRUFBQTFsQyxF
QUFBMGxDLFdBTUFBLEtBQUEva0MsRUFBQXU0QixjQUFBYyxlQUNBaDZCLEVBQUFxTixNQUFBcTRC
LEtBWUFycUMsR0FBQUQsUUFBQXNpRSxHbEp3MWlCTSxTQUFTcmlFLEVBQVFELEVBQVNILEdtSjUr
aUJoQyxZQVVBLFNBQUFxdkIsR0FBQXc4QyxFQUFBQyxHQUNBLGFBQUFELEdBQUEsT0FBQWpsRSxF
QUFBLE1BQ0EsYUFBQWtsRSxHQUFBLE9BQUFsbEUsRUFBQSxLQUdBLFFBREFtbEUsR0FBQSxFQUNB
QyxFQUFBSCxFQUF5QkcsRUFBT0EsSUFBQTNrRSxZQUNoQzBrRSxHQUdBLFFBREFFLEdBQUEsRUFD
QUMsRUFBQUosRUFBeUJJLEVBQU9BLElBQUE3a0UsWUFDaEM0a0UsR0FJQSxNQUFBRixFQUFBRSxF
QUFBLEdBQ0FKLElBQUF4a0UsWUFDQTBrRSxHQUlBLE1BQUFFLEVBQUFGLEVBQUEsR0FDQUQsSUFB
QXprRSxZQUNBNGtFLEdBS0EsS0FEQSxHQUFBRSxHQUFBSixFQUNBSSxLQUFBLENBQ0EsR0FBQU4s
SUFBQUMsRUFDQSxNQUFBRCxFQUVBQSxLQUFBeGtFLFlBQ0F5a0UsSUFBQXprRSxZQUVBLFlBTUEs
UUFBQStuQixHQUFBeThDLEVBQUFDLEdBQ0EsYUFBQUQsR0FBQSxPQUFBamxFLEVBQUEsTUFDQSxh
QUFBa2xFLEdBQUEsT0FBQWxsRSxFQUFBLEtBRUEsTUFBQWtsRSxHQUFBLENBQ0EsR0FBQUEsSUFB
QUQsRUFDQSxRQUVBQyxLQUFBemtFLFlBRUEsU0FNQSxRQUFBaVYsR0FBQTVXLEdBR0EsTUFGQSxh
QUFBQSxHQUFBLE9BQUFrQixFQUFBLE1BRUFsQixFQUFBMkIsWUFNQSxRQUFBOFUsR0FBQXpXLEVB
QUF4RSxFQUFBeUgsR0FFQSxJQURBLEdBQUF5akUsTUFDQTFtRSxHQUNBMG1FLEVBQUFybEUsS0FB
QXJCLEdBQ0FBLElBQUEyQixXQUVBLElBQUExRyxFQUNBLEtBQUFBLEVBQUF5ckUsRUFBQXhwRSxP
QUF1QmpDLEtBQUEsR0FDdkJPLEVBQUFrckUsRUFBQXpyRSxHQUFBLFdBQUFnSSxFQUVBLEtBQUFo
SSxFQUFBLEVBQWFBLEVBQUF5ckUsRUFBQXhwRSxPQUFpQmpDLElBQzlCTyxFQUFBa3JFLEVBQUF6
ckUsR0FBQSxVQUFBZ0ksR0FXQSxRQUFBb1UsR0FBQXRZLEVBQUFFLEVBQUF6RCxFQUFBb3VCLEVB
QUFDLEdBR0EsSUFGQSxHQUFBODhDLEdBQUE1bkUsR0FBQUUsRUFBQTBxQixFQUFBNXFCLEVBQUFF
LEdBQUEsS0FDQTJuRSxLQUNBN25FLE9BQUE0bkUsR0FDQUMsRUFBQXZsRSxLQUFBdEMsR0FDQUEs
SUFBQTRDLFdBR0EsS0FEQSxHQUFBa2xFLE1BQ0E1bkUsT0FBQTBuRSxHQUNBRSxFQUFBeGxFLEtB
QUFwQyxHQUNBQSxJQUFBMEMsV0FFQSxJQUFBMUcsRUFDQSxLQUFBQSxFQUFBLEVBQWFBLEVBQUEy
ckUsRUFBQTFwRSxPQUFxQmpDLElBQ2xDTyxFQUFBb3JFLEVBQUEzckUsR0FBQSxVQUFBMnVCLEVB
RUEsS0FBQTN1QixFQUFBNHJFLEVBQUEzcEUsT0FBeUJqQyxLQUFBLEdBQ3pCTyxFQUFBcXJFLEVB
QUE1ckUsR0FBQSxXQUFBNHVCLEdBaEhBLEdBQUEzb0IsR0FBQTVHLEVBQUEsRUFFQUEsR0FBQSxF
QWtIQUksR0FBQUQsU0FDQWl2QixhQUNBQywwQkFDQS9TLG9CQUNBSCxtQkFDQVksdUJuSjYvaUJN
LFNBQVMzYyxFQUFRRCxFQUFTSCxHb0p4bmpCaEMsWUF1QkEsU0FBQXdzRSxLQUNBbHJFLEtBQUFr
SSwwQkF0QkEsR0FBQTJDLEdBQUFuTSxFQUFBLEdBRUFvSixFQUFBcEosRUFBQSxHQUNBcU0sRUFB
QXJNLEVBQUEsSUFFQXNDLEVBQUF0QyxFQUFBLEdBRUF5c0UsR0FDQWxnRSxXQUFBakssRUFDQWtL
LE1BQUEsV0FDQWtnRSxFQUFBN2dFLG1CQUFBLElBSUE4Z0UsR0FDQXBnRSxXQUFBakssRUFDQWtL
LE1BQUFwRCxFQUFBc0Qsb0JBQUE2TCxLQUFBblAsSUFHQTBELEdBQUE2L0QsRUFBQUYsRUFNQXRn
RSxHQUFBcWdFLEVBQUEzckUsVUFBQXdMLEdBQ0FVLHVCQUFBLFdBQ0EsTUFBQUQsS0FJQSxJQUFB
ekMsR0FBQSxHQUFBbWlFLEdBRUFFLEdBQ0E3Z0UsbUJBQUEsRUFNQS9CLGVBQUEsU0FBQUMsRUFB
QTVJLEVBQUFDLEVBQUFYLEVBQUFrQixFQUFBQyxHQUNBLEdBQUFnckUsR0FBQUYsRUFBQTdnRSxp
QkFLQSxPQUhBNmdFLEdBQUE3Z0UsbUJBQUEsRUFHQStnRSxFQUNBN2lFLEVBQUE1SSxFQUFBQyxF
QUFBWCxFQUFBa0IsRUFBQUMsR0FFQXlJLEVBQUE2QyxRQUFBbkQsRUFBQSxLQUFBNUksRUFBQUMs
RUFBQVgsRUFBQWtCLEVBQUFDLElBS0F4QixHQUFBRCxRQUFBdXNFLEdwSndvakJNLFNBQVN0c0Us
RUFBUUQsRUFBU0gsR3FKaHNqQmhDLFlBd0JBLFNBQUFpaEUsS0FDQTRMLElBTUFBLEdBQUEsRUFF
QUMsRUFBQUMsYUFBQTlwRCx5QkFBQUQsR0FLQThwRCxFQUFBN3lELGVBQUFDLHVCQUFBMjVDLEdB
Q0FpWixFQUFBMXpELGlCQUFBNlYsb0JBQUFybkIsR0FDQWtsRSxFQUFBMXpELGlCQUFBK1Ysb0JB
QUE2OUMsR0FNQUYsRUFBQTd5RCxlQUFBRSwwQkFDQTh5RCxvQkFDQWpaLHdCQUNBekIsb0JBQ0Ey
YSxvQkFDQXhjLDJCQUdBb2MsRUFBQUssY0FBQWx0Qyw0QkFBQW9qQyxHQUVBeUosRUFBQUssY0FB
QWh0Qyx5QkFBQThxQyxHQUVBNkIsRUFBQXhsRSxZQUFBc0wsd0JBQUEwNEMsR0FDQXdoQixFQUFB
eGxFLFlBQUFzTCx3QkFBQWlpRCxHQUNBaVksRUFBQXhsRSxZQUFBc0wsd0JBQUF3NkQsR0FFQU4s
RUFBQU8sZUFBQTl0Qyw0QkFBQSxTQUFBRyxHQUNBLFVBQUF3bkMsR0FBQXhuQyxLQUdBb3RDLEVB
QUFRLFFBQUE5L0QsMkJBQUFuRSxHQUNBeWpFLEVBQUFRLFFBQUE1L0QsdUJBQUFnL0QsR0FFQUks
RUFBQWgyRCxVQUFBdWIsa0JBQUE4cUMsSUFuRUEsR0FBQTdSLEdBQUF0ckQsRUFBQSxLQUNBMHdE
LEVBQUExd0QsRUFBQSxLQUNBdXlELEVBQUF2eUQsRUFBQSxLQUNBNnpELEVBQUE3ekQsRUFBQSxL
QUNBZzBELEVBQUFoMEQsRUFBQSxLQUNBNjBELEVBQUE3MEQsRUFBQSxLQUNBbTlELEVBQUFuOUQs
RUFBQSxLQUNBcWpFLEVBQUFyakUsRUFBQSxLQUNBNEgsRUFBQTVILEVBQUEsR0FDQWtuRSxFQUFB
bG5FLEVBQUEsS0FDQWd0RSxFQUFBaHRFLEVBQUEsS0FDQWlyRSxFQUFBanJFLEVBQUEsS0FDQTBz
RSxFQUFBMXNFLEVBQUEsS0FDQWdqQixFQUFBaGpCLEVBQUEsS0FDQThzRSxFQUFBOXNFLEVBQUEs
S0FDQXFKLEVBQUFySixFQUFBLEtBQ0FvdEUsRUFBQXB0RSxFQUFBLEtBQ0FrdEUsRUFBQWx0RSxF
QUFBLEtBQ0FpdEUsRUFBQWp0RSxFQUFBLEtBRUE2c0UsR0FBQSxDQWtEQXpzRSxHQUFBRCxTQUNB
OGdFLFdySml0akJBLEdBRU0sU0FBUzdnRSxFQUFRRCxFQUFTSCxHc0o1eGpCaEMsWUFJQSxTQUFB
dXRFLEdBQUF0eUQsR0FDQWhCLEVBQUFvQixjQUFBSixHQUNBaEIsRUFBQXFCLG1CQUFBLEdBSkEs
R0FBQXJCLEdBQUFqYSxFQUFBLElBT0F5ZSxHQUtBMEUsZUFBQSxTQUFBbkksRUFBQWpOLEVBQUFD
LEVBQUFDLEdBQ0EsR0FBQWdOLEdBQUFoQixFQUFBYyxjQUFBQyxFQUFBak4sRUFBQUMsRUFBQUMs
RUFDQXMvRCxHQUFBdHlELElBSUE3YSxHQUFBRCxRQUFBc2UsR3RKNHlqQk0sU0FBU3JlLEVBQVFE
LEVBQVNILEd1SmgwakJoQyxZQWtCQSxTQUFBd3RFLEdBQUE5bkUsR0FJQSxLQUFBQSxFQUFBMkIs
YUFDQTNCLElBQUEyQixXQUVBLElBQUFvZ0UsR0FBQTcvRCxFQUFBUixvQkFBQTFCLEdBQ0FvOUIs
RUFBQTJrQyxFQUFBemdFLFVBQ0EsT0FBQVksR0FBQWYsMkJBQUFpOEIsR0FJQSxRQUFBMnFDLEdB
QUF6eUQsRUFBQWhOLEdBQ0ExTSxLQUFBMFosZUFDQTFaLEtBQUEwTSxjQUNBMU0sS0FBQW9zRSxh
QVdBLFFBQUFDLEdBQUFDLEdBQ0EsR0FBQTMvRCxHQUFBeVAsRUFBQWt3RCxFQUFBNS9ELGFBQ0FE
LEVBQUFuRyxFQUFBZiwyQkFBQW9ILEdBTUE0L0QsRUFBQTkvRCxDQUNBLEdBQ0E2L0QsR0FBQUYs
VUFBQTNtRSxLQUFBOG1FLEdBQ0FBLEtBQUFMLEVBQUFLLFNBQ0dBLEVBRUgsUUFBQWx0RSxHQUFB
LEVBQWlCQSxFQUFBaXRFLEVBQUFGLFVBQUE5cUUsT0FBa0NqQyxJQUNuRG9OLEVBQUE2L0QsRUFB
QUYsVUFBQS9zRSxHQUNBcWlCLEVBQUE4cUQsZ0JBQUFGLEVBQUE1eUQsYUFBQWpOLEVBQUE2L0Qs
RUFBQTUvRCxZQUFBMFAsRUFBQWt3RCxFQUFBNS9ELGNBSUEsUUFBQSsvRCxHQUFBem1DLEdBQ0Es
R0FBQUgsR0FBQXdlLEVBQUE3OUMsT0FDQXcvQixHQUFBSCxHQWpFQSxHQUFBaDdCLEdBQUFuTSxF
QUFBLEdBRUE2MUIsRUFBQTcxQixFQUFBLElBQ0FpSSxFQUFBakksRUFBQSxHQUNBb00sRUFBQXBN
LEVBQUEsSUFDQTRILEVBQUE1SCxFQUFBLEdBQ0FvSixFQUFBcEosRUFBQSxHQUVBMGQsRUFBQTFk
LEVBQUEsSUFDQTJsRCxFQUFBM2xELEVBQUEsSUF5QkFtTSxHQUFBc2hFLEVBQUE1c0UsV0FDQW1N
LFdBQUEsV0FDQTFMLEtBQUEwWixhQUFBLEtBQ0ExWixLQUFBME0sWUFBQSxLQUNBMU0sS0FBQW9z
RSxVQUFBOXFFLE9BQUEsS0FHQXdKLEVBQUFpQixhQUFBb2dFLEVBQUFyaEUsRUFBQTRoRSxrQkEy
QkEsSUFBQWhyRCxJQUNBaXJELFVBQUEsRUFDQUgsZ0JBQUEsS0FFQS9wRCxjQUFBOWIsRUFBQUos
VUFBQUMsT0FBQSxLQUVBb2Isa0JBQUEsU0FBQUMsR0FDQUgsRUFBQThxRCxnQkFBQTNxRCxHQUdB
QyxXQUFBLFNBQUFDLEdBQ0FMLEVBQUFpckQsV0FBQTVxRCxHQUdBQyxVQUFBLFdBQ0EsTUFBQU4s
R0FBQWlyRCxVQWFBcHFELGlCQUFBLFNBQUE3SSxFQUFBZ0osRUFBQWpNLEdBQ0EsTUFBQUEsR0FH
QThkLEVBQUFDLE9BQUEvZCxFQUFBaU0sRUFBQWhCLEVBQUFrckQsY0FBQTMxRCxLQUFBLEtBQUF5
QyxJQUZBLE1BZUE4SSxrQkFBQSxTQUFBOUksRUFBQWdKLEVBQUFqTSxHQUNBLE1BQUFBLEdBR0E4
ZCxFQUFBWixRQUFBbGQsRUFBQWlNLEVBQUFoQixFQUFBa3JELGNBQUEzMUQsS0FBQSxLQUFBeUMs
SUFGQSxNQUtBd0osbUJBQUEsU0FBQUYsR0FDQSxHQUFBdmEsR0FBQWdrRSxFQUFBeDFELEtBQUEs
S0FBQStMLEVBQ0F1UixHQUFBQyxPQUFBaHVCLE9BQUEsU0FBQWlDLElBR0Fta0UsY0FBQSxTQUFB
bHpELEVBQUFoTixHQUNBLEdBQUFnVixFQUFBaXJELFNBQUEsQ0FJQSxHQUFBTCxHQUFBSCxFQUFB
N2pFLFVBQUFvUixFQUFBaE4sRUFDQSxLQUdBNUUsRUFBQVUsZUFBQTZqRSxFQUFBQyxHQUNLLFFB
Q0xILEVBQUF4Z0UsUUFBQTJnRSxNQUtBeHRFLEdBQUFELFFBQUE2aUIsR3ZKZzFqQk0sU0FBUzVp
QixFQUFRRCxFQUFTSCxHd0ovOWpCaEMsWUFFQSxJQUFBc0gsR0FBQXRILEVBQUEsSUFDQWlhLEVB
QUFqYSxFQUFBLElBQ0FvWixFQUFBcFosRUFBQSxJQUNBa3lCLEVBQUFseUIsRUFBQSxJQUNBdy9C
LEVBQUF4L0IsRUFBQSxJQUNBK2lCLEVBQUEvaUIsRUFBQSxJQUNBb2dDLEVBQUFwZ0MsRUFBQSxJ
QUNBb0osRUFBQXBKLEVBQUEsR0FFQThzRSxHQUNBaDJELFVBQUFvYixFQUFBdGtCLFVBQ0F0Ryxj
QUFBc0csVUFDQXkvRCxlQUFBN3RDLEVBQUE1eEIsVUFDQXFNLGlCQUFBck0sVUFDQXdMLG1CQUFB
eEwsVUFDQW0vRCxhQUFBaHFELEVBQUFuVixVQUNBdS9ELGNBQUEvc0MsRUFBQXh5QixVQUNBMC9E
LFFBQUFsa0UsRUFBQXdFLFVBR0F4TixHQUFBRCxRQUFBMnNFLEd4SisrakJNLFNBQVMxc0UsRUFB
UUQsRUFBU0gsR3lKcmdrQmhDLFlBRUEsSUFBQW11RSxHQUFBbnVFLEVBQUEsS0FFQW91RSxFQUFB
LE9BQ0FDLEVBQUEsV0FFQTlwQyxHQUNBaUMsbUJBQUEsc0JBTUE4bkMsb0JBQUEsU0FBQXY1RCxH
QUNBLEdBQUF3eEIsR0FBQTRuQyxFQUFBcDVELEVBR0EsT0FBQXM1RCxHQUFBdjhELEtBQUFpRCxH
QUNBQSxFQUVBQSxFQUFBNVMsUUFBQWlzRSxFQUFBLElBQUE3cEMsRUFBQWlDLG1CQUFBLEtBQUFE
LEVBQUEsUUFTQUQsZUFBQSxTQUFBdnhCLEVBQUFnRCxHQUNBLEdBQUF3MkQsR0FBQXgyRCxFQUFB
N1MsYUFBQXEvQixFQUFBaUMsbUJBQ0ErbkMsTUFBQXZ5QixTQUFBdXlCLEVBQUEsR0FDQSxJQUFB
QyxHQUFBTCxFQUFBcDVELEVBQ0EsT0FBQXk1RCxLQUFBRCxHQUlBbnVFLEdBQUFELFFBQUFva0Ms
R3pKcWhrQk0sU0FBU25rQyxFQUFRRCxFQUFTSCxHMEozamtCaEMsWUF1QkEsU0FBQXl1RSxHQUFB
MTVELEVBQUF5WCxFQUFBa2lELEdBRUEsT0FDQXpqRSxLQUFBLGdCQUNBc2hCLFFBQUF4WCxFQUNB
NDVELFVBQUEsS0FDQWxpRCxTQUFBLEtBQ0FpaUQsVUFDQWxpRCxhQVdBLFFBQUFvaUQsR0FBQXZy
QyxFQUFBN1csRUFBQWtpRCxHQUVBLE9BQ0F6akUsS0FBQSxnQkFDQXNoQixRQUFBLEtBQ0FvaUQs
VUFBQXRyQyxFQUFBaUcsWUFDQTdjLFNBQUFuaEIsRUFBQTRKLFlBQUFtdUIsR0FDQXFyQyxVQUNB
bGlELGFBVUEsUUFBQXFpRCxHQUFBeHJDLEVBQUF0K0IsR0FFQSxPQUNBa0csS0FBQSxjQUNBc2hC
LFFBQUEsS0FDQW9pRCxVQUFBdHJDLEVBQUFpRyxZQUNBN2MsU0FBQTFuQixFQUNBMnBFLFFBQUEs
S0FDQWxpRCxVQUFBLE1BVUEsUUFBQXNpRCxHQUFBLzVELEdBRUEsT0FDQTlKLEtBQUEsYUFDQXNo
QixRQUFBeFgsRUFDQTQ1RCxVQUFBLEtBQ0FsaUQsU0FBQSxLQUNBaWlELFFBQUEsS0FDQWxpRCxV
QUFBLE1BVUEsUUFBQXVpRCxHQUFBdGtDLEdBRUEsT0FDQXgvQixLQUFBLGVBQ0FzaEIsUUFBQWtl
LEVBQ0Fra0MsVUFBQSxLQUNBbGlELFNBQUEsS0FDQWlpRCxRQUFBLEtBQ0FsaUQsVUFBQSxNQVFB
LFFBQUE5Z0IsR0FBQTRCLEVBQUFnZixHQUtBLE1BSkFBLEtBQ0FoZixRQUNBQSxFQUFBdkcsS0FB
QXVsQixJQUVBaGYsRUFRQSxRQUFBMGhFLEdBQUF0cEUsRUFBQTA0RCxHQUNBbHNDLEVBQUFFLHVC
QUFBMXNCLEVBQUEwNEQsR0E1SEEsR0FBQXgzRCxHQUFBNUcsRUFBQSxHQUVBa3lCLEVBQUFseUIs
RUFBQSxJQUtBc0wsR0FKQXRMLEVBQUEsSUFDQUEsRUFBQSxHQUVBQSxFQUFBLElBQ0FBLEVBQUEs
S0FDQW84RCxFQUFBcDhELEVBQUEsS0FHQW9vRSxHQURBcG9FLEVBQUEsR0FDQUEsRUFBQSxNQWtK
QXlqRSxHQWpKQXpqRSxFQUFBLElBeUpBNmtFLE9BQ0FvSywrQkFBQSxTQUFBQyxFQUFBN2tFLEVB
QUEyQixHQVlBLE1BQUFvd0QsR0FBQUMsb0JBQUE2UyxFQUFBN2tFLEVBQUEyQixJQUdBbWpFLDBC
QUFBLFNBQUEzUyxFQUFBNFMsRUFBQTFTLEVBQUFDLEVBQUF0eUQsRUFBQTJCLEdBQ0EsR0FBQXl3
RCxHQUNBUCxFQUFBLENBZ0JBLE9BRkFPLEdBQUEyTCxFQUFBZ0gsRUFBQWxULEdBQ0FFLEVBQUFH
LGVBQUFDLEVBQUFDLEVBQUFDLEVBQUFDLEVBQUF0eUQsRUFBQS9JLFVBQUFnakMsbUJBQUF0NEIs
RUFBQWt3RCxHQUNBTyxHQVdBdUosY0FBQSxTQUFBa0osRUFBQTdrRSxFQUFBMkIsR0FDQSxHQUFB
N0YsR0FBQTdFLEtBQUEydEUsK0JBQUFDLEVBQUE3a0UsRUFBQTJCLEVBQ0ExSyxNQUFBOEUsa0JB
QUFELENBRUEsSUFBQXUyRCxNQUNBdjFDLEVBQUEsQ0FDQSxRQUFBL2tCLEtBQUErRCxHQUNBLEdB
QUFBLEVBQUFyRixlQUFBc0IsR0FBQSxDQUNBLEdBQUFpaEMsR0FBQWw5QixFQUFBL0QsR0FDQTg1
RCxFQUFBLEVBSUE4SSxFQUFBMTVELEVBQUFvSixlQUFBMnVCLEVBQUFoNUIsRUFBQS9JLFVBQUFn
akMsbUJBQUF0NEIsRUFBQWt3RCxFQUNBNzRCLEdBQUFpRyxZQUFBbmlCLElBQ0F1MUMsRUFBQTMx
RCxLQUFBaStELEdBUUEsTUFBQXRJLElBU0FxSyxrQkFBQSxTQUFBTixHQUNBLEdBQUFqSyxHQUFB
bDdELEtBQUE4RSxpQkFFQWcyRCxHQUFBVyxnQkFBQVAsR0FBQSxFQUNBLFFBQUFwNkQsS0FBQW82
RCxHQUNBQSxFQUFBMTdELGVBQUFzQixJQUNBd0UsRUFBQSxNQUlBLElBQUF3bEIsSUFBQTJpRCxF
QUFBdEksR0FDQXVJLEdBQUExdEUsS0FBQThxQixJQVNBNDZDLGFBQUEsU0FBQXhHLEdBQ0EsR0FB
QWhFLEdBQUFsN0QsS0FBQThFLGlCQUVBZzJELEdBQUFXLGdCQUFBUCxHQUFBLEVBQ0EsUUFBQXA2
RCxLQUFBbzZELEdBQ0FBLEVBQUExN0QsZUFBQXNCLElBQ0F3RSxFQUFBLE1BR0EsSUFBQXdsQixJ
QUFBMGlELEVBQUF0TyxHQUNBd08sR0FBQTF0RSxLQUFBOHFCLElBVUFtd0MsZUFBQSxTQUFBNlMs
RUFBQS9rRSxFQUFBMkIsR0FFQTFLLEtBQUErdEUsZ0JBQUFELEVBQUEva0UsRUFBQTJCLElBU0Fx
akUsZ0JBQUEsU0FBQUQsRUFBQS9rRSxFQUFBMkIsR0FDQSxHQUFBd3dELEdBQUFsN0QsS0FBQThF
LGtCQUNBdTJELEtBQ0FELEtBQ0FELEVBQUFuN0QsS0FBQTZ0RSwwQkFBQTNTLEVBQUE0UyxFQUFB
MVMsRUFBQUMsRUFBQXR5RCxFQUFBMkIsRUFDQSxJQUFBeXdELEdBQUFELEVBQUEsQ0FHQSxHQUNB
cDZELEdBREFncUIsRUFBQSxLQUlBa2pELEVBQUEsRUFDQWxvRCxFQUFBLEVBRUFtb0QsRUFBQSxF
QUNBQyxFQUFBLElBQ0EsS0FBQXB0RSxJQUFBcTZELEdBQ0EsR0FBQUEsRUFBQTM3RCxlQUFBc0Is
R0FBQSxDQUdBLEdBQUF3NkQsR0FBQUosS0FBQXA2RCxHQUNBazZDLEVBQUFtZ0IsRUFBQXI2RCxF
QUNBdzZELEtBQUF0Z0IsR0FDQWx3QixFQUFBMWdCLEVBQUEwZ0IsRUFBQTlxQixLQUFBOHBCLFVB
QUF3eEMsRUFBQTRTLEVBQUFGLEVBQUFsb0QsSUFDQUEsRUFBQTNmLEtBQUE0d0QsSUFBQXVFLEVB
QUF0ekIsWUFBQWxpQixHQUNBdzFDLEVBQUF0ekIsWUFBQWdtQyxJQUVBMVMsSUFFQXgxQyxFQUFB
M2YsS0FBQTR3RCxJQUFBdUUsRUFBQXR6QixZQUFBbGlCLElBSUFnRixFQUFBMWdCLEVBQUEwZ0Is
RUFBQTlxQixLQUFBbXVFLG1CQUFBbnpCLEVBQUFvZ0IsRUFBQTZTLEdBQUFDLEVBQUFGLEVBQUFq
bEUsRUFBQTJCLElBQ0F1akUsS0FFQUQsSUFDQUUsRUFBQWxrRSxFQUFBNEosWUFBQW9uQyxHQUdB
LElBQUFsNkMsSUFBQXU2RCxHQUNBQSxFQUFBNzdELGVBQUFzQixLQUNBZ3FCLEVBQUExZ0IsRUFB
QTBnQixFQUFBOXFCLEtBQUFvdUUsY0FBQWxULEVBQUFwNkQsR0FBQXU2RCxFQUFBdjZELEtBR0Fn
cUIsSUFDQTRpRCxFQUFBMXRFLEtBQUE4cUIsR0FFQTlxQixLQUFBOEUsa0JBQUFxMkQsSUFjQU0s
Z0JBQUEsU0FBQTNuRCxHQUNBLEdBQUE0bkQsR0FBQTE3RCxLQUFBOEUsaUJBQ0FnMkQsR0FBQVcs
Z0JBQUFDLEVBQUE1bkQsR0FDQTlULEtBQUE4RSxrQkFBQSxNQVdBZ2xCLFVBQUEsU0FBQWlZLEVB
QUE3VyxFQUFBa2lELEVBQUF0bkQsR0FJQSxHQUFBaWMsRUFBQWlHLFlBQUFsaUIsRUFDQSxNQUFB
d25ELEdBQUF2ckMsRUFBQTdXLEVBQUFraUQsSUFXQWlCLFlBQUEsU0FBQXRzQyxFQUFBN1csRUFB
QXc0QyxHQUNBLE1BQUF5SixHQUFBekosRUFBQXg0QyxFQUFBNlcsRUFBQWlHLGNBU0FyaEIsWUFB
QSxTQUFBb2IsRUFBQXQrQixHQUNBLE1BQUE4cEUsR0FBQXhyQyxFQUFBdCtCLElBY0EwcUUsbUJB
QUEsU0FBQXBzQyxFQUFBMmhDLEVBQUF4NEMsRUFBQXJGLEVBQUE5YyxFQUFBMkIsR0FFQSxNQURB
cTNCLEdBQUFpRyxZQUFBbmlCLEVBQ0E3bEIsS0FBQXF1RSxZQUFBdHNDLEVBQUE3VyxFQUFBdzRD
LElBV0EwSyxjQUFBLFNBQUFyc0MsRUFBQXQrQixHQUNBLEdBQUF1bkIsR0FBQWhyQixLQUFBMm1C
LFlBQUFvYixFQUFBdCtCLEVBRUEsT0FEQXMrQixHQUFBaUcsWUFBQSxLQUNBaGQsS0FLQWxzQixH
QUFBRCxRQUFBc2pFLEcxSjJra0JNLFNBQVNyakUsRUFBUUQsRUFBU0gsRzJKNS9rQmhDLFlBV0Es
U0FBQTR2RSxHQUFBOTJELEdBQ0EsU0FBQUEsR0FBQSxrQkFBQUEsR0FBQThuRCxXQUFBLGtCQUFB
OW5ELEdBQUFnb0QsV0FWQSxHQUFBbDZELEdBQUE1RyxFQUFBLEdBMkNBNnZFLEdBekNBN3ZFLEVB
QUEsSUFtREE4dkUsb0JBQUEsU0FBQXhxRSxFQUFBMFAsRUFBQTZDLEdBQ0ErM0QsRUFBQS8zRCxH
QUFBLE9BQUFqUixFQUFBLE9BQ0FpUixFQUFBK29ELFVBQUE1ckQsRUFBQTFQLElBWUF5cUUseUJB
QUEsU0FBQXpxRSxFQUFBMFAsRUFBQTZDLEdBQ0ErM0QsRUFBQS8zRCxHQUFBLE9BQUFqUixFQUFB
LE1BQ0EsSUFBQW9wRSxHQUFBbjRELEVBQUFsTSxtQkFHQXFrRSxNQUFBcDJCLEtBQUE1a0MsS0FB
QTFQLEVBQUFxRyxxQkFDQWtNLEVBQUFpcEQsVUFBQTlyRCxLQUtBNVUsR0FBQUQsUUFBQTB2RSxH
M0o2Z2xCTSxTQUFTenZFLEVBQVFELEc0SjdsbEJ2QixZQUVBLElBQUEwd0IsR0FBQSw4Q0FFQXp3
QixHQUFBRCxRQUFBMHdCLEc1SjhtbEJNLFNBQVN6d0IsRUFBUUQsRUFBU0gsRzZKbm5sQmhDLFlB
cUdBLFNBQUFxSixHQUFBdzZCLEdBQ0F2aUMsS0FBQWtJLDBCQU1BbEksS0FBQXNrRSxzQkFBQSxF
QUNBdGtFLEtBQUEydUUsZ0JBQUF0bUUsRUFBQUMsVUFBQSxNQUNBdEksS0FBQXVpQyxtQkE1R0Es
R0FBQTEzQixHQUFBbk0sRUFBQSxHQUVBMkosRUFBQTNKLEVBQUEsSUFDQW9NLEVBQUFwTSxFQUFB
LElBQ0EraUIsRUFBQS9pQixFQUFBLElBQ0F5Z0MsRUFBQXpnQyxFQUFBLElBRUFxTSxHQURBck0s
RUFBQSxHQUNBQSxFQUFBLEtBQ0E2eUIsRUFBQTd5QixFQUFBLElBTUFrd0UsR0FJQTNqRSxXQUFB
azBCLEVBQUFJLHdCQUlBcjBCLE1BQUFpMEIsRUFBQVEsa0JBUUFrdkMsR0FLQTVqRSxXQUFBLFdB
Q0EsR0FBQTZqRSxHQUFBcnRELEVBQUFPLFdBRUEsT0FEQVAsR0FBQUssWUFBQSxHQUNBZ3RELEdB
UUE1akUsTUFBQSxTQUFBNmpFLEdBQ0F0dEQsRUFBQUssV0FBQWl0RCxLQVFBQyxHQUlBL2pFLFdB
QUEsV0FDQWpMLEtBQUEydUUsZ0JBQUFyakUsU0FNQUosTUFBQSxXQUNBbEwsS0FBQTJ1RSxnQkFB
QXBqRSxjQVNBQyxHQUFBb2pFLEVBQUFDLEVBQUFHLEdBbUNBekwsR0FRQTkzRCx1QkFBQSxXQUNB
LE1BQUFELElBTUFtSSxtQkFBQSxXQUNBLE1BQUEzVCxNQUFBMnVFLGlCQU1BNVIsZUFBQSxXQUNB
LE1BQUF4ckMsSUFPQTJKLFdBQUEsV0FFQSxNQUFBbDdCLE1BQUEydUUsZ0JBQUF6ekMsY0FHQUMs
U0FBQSxTQUFBRCxHQUNBbDdCLEtBQUEydUUsZ0JBQUF4ekMsU0FBQUQsSUFPQXh2QixXQUFBLFdB
Q0FyRCxFQUFBc0QsUUFBQTNMLEtBQUEydUUsaUJBQ0EzdUUsS0FBQTJ1RSxnQkFBQSxNQUlBOWpF
LEdBQUE5QyxFQUFBeEksVUFBQXdMLEVBQUF3NEQsR0FFQXo0RCxFQUFBaUIsYUFBQWhFLEdBRUFq
SixFQUFBRCxRQUFBa0osRzdKbW9sQk0sU0FBU2pKLEVBQVFELEVBQVNILEc4Snh5bEJoQyxZQU1B
LFNBQUE0Z0UsR0FBQTVyRCxFQUFBMVAsRUFBQXVTLEdBQ0Esa0JBQUE3QyxHQUNBQSxFQUFBMVAs
RUFBQXFHLHFCQUdBa2tFLEVBQUFDLG9CQUFBeHFFLEVBQUEwUCxFQUFBNkMsR0FJQSxRQUFBaXBE
LEdBQUE5ckQsRUFBQTFQLEVBQUF1UyxHQUNBLGtCQUFBN0MsR0FDQUEsRUFBQSxNQUdBNjZELEVB
QUFFLHlCQUFBenFFLEVBQUEwUCxFQUFBNkMsR0FsQkEsR0FBQWc0RCxHQUFBN3ZFLEVBQUEsS0FF
QXlVLElBb0JBQSxHQUFBRCxXQUFBLFNBQUEwbkIsRUFBQW5rQixHQUNBLFVBQUFBLEdBQUEsZ0JB
QUFBLEdBQUEsQ0FHQSxHQUFBL0MsR0FBQStDLEVBQUEvQyxHQUNBLE9BQUFBLEdBQ0E0ckQsRUFB
QTVyRCxFQUFBa25CLEVBQUFua0IsRUFBQUUsVUFJQXhELEVBQUFrQixpQkFBQSxTQUFBSCxFQUFB
RCxHQWFBLEdBQUFnN0QsR0FBQSxLQUNBQyxFQUFBLElBQ0EsUUFBQWg3RCxHQUFBLGdCQUFBQSxL
QUNBKzZELEVBQUEvNkQsRUFBQVIsSUFDQXc3RCxFQUFBaDdELEVBQUF5QyxPQUdBLElBQUF3NEQs
R0FBQSxLQUNBQyxFQUFBLElBTUEsT0FMQSxRQUFBbjdELEdBQUEsZ0JBQUFBLEtBQ0FrN0QsRUFB
QWw3RCxFQUFBUCxJQUNBMDdELEVBQUFuN0QsRUFBQTBDLFFBR0FzNEQsSUFBQUUsR0FFQSxnQkFB
QUEsSUFBQUMsSUFBQUYsR0FHQS83RCxFQUFBWSxXQUFBLFNBQUE2bUIsRUFBQW5rQixHQUNBLFVB
QUFBLEdBQUEsZ0JBQUFBLEdBQUEsQ0FHQSxHQUFBL0MsR0FBQStDLEVBQUEvQyxHQUNBLE9BQUFB
LEdBQ0E4ckQsRUFBQTlyRCxFQUFBa25CLEVBQUFua0IsRUFBQUUsVUFJQTdYLEVBQUFELFFBQUFz
VSxHOUp5emxCTSxTQUFTclUsRUFBUUQsRUFBU0gsRytKdDRsQmhDLFlBK0JBLFNBQUE4aEUsR0FB
QThELEdBQ0F0a0UsS0FBQWtJLDBCQUNBbEksS0FBQXNrRSx1QkFDQXRrRSxLQUFBdWlDLGtCQUFB
LEVBQ0F2aUMsS0FBQTg4RCxZQUFBLEdBQUF1UyxHQUFBcnZFLE1BakNBLEdBQUE2SyxHQUFBbk0s
RUFBQSxHQUVBb00sRUFBQXBNLEVBQUEsSUFDQXFNLEVBQUFyTSxFQUFBLElBRUEyd0UsR0FEQTN3
RSxFQUFBLEdBQ0FBLEVBQUEsTUFPQThNLEtBU0E4akUsR0FDQWxsRSxRQUFBLGNBY0FtNUQsR0FP
QTkzRCx1QkFBQSxXQUNBLE1BQUFELElBTUFtSSxtQkFBQSxXQUNBLE1BQUEyN0QsSUFNQXZTLGVB
QUEsV0FDQSxNQUFBLzhELE1BQUE4OEQsYUFPQXB4RCxXQUFBLGFBRUF3dkIsV0FBQSxhQUVBQyxT
QUFBLGFBR0F0d0IsR0FBQTIxRCxFQUFBamhFLFVBQUF3TCxFQUFBdzRELEdBRUF6NEQsRUFBQWlC
LGFBQUF5MEQsR0FFQTFoRSxFQUFBRCxRQUFBMmhFLEcvSnM1bEJNLFNBQVMxaEUsRUFBUUQsRUFB
U0gsR2dLbitsQmhDLFlBRUEsU0FBQWk4QixHQUFBQyxFQUFBQyxHQUFpRCxLQUFBRCxZQUFBQyxJ
QUEwQyxTQUFBajVCLFdBQUEscUNBTTNGLFFBQUFpN0MsR0FBQXhyQixFQUFBQyxJQUpBLEdBQUFD
LEdBQUE3eUIsRUFBQSxJQW1CQTJ3RSxHQWpCQTN3RSxFQUFBLEdBaUJBLFdBQ0EsUUFBQTJ3RSxH
QUFBdG1FLEdBQ0E0eEIsRUFBQTM2QixLQUFBcXZFLEdBRUFydkUsS0FBQStJLGNBZ0dBLE1BcEZB
c21FLEdBQUE5dkUsVUFBQWl5QixVQUFBLFNBQUFILEdBQ0EsVUFhQWcrQyxFQUFBOXZFLFVBQUFr
eUIsZ0JBQUEsU0FBQUosRUFBQTVvQixFQUFBNm9CLEdBQ0F0eEIsS0FBQStJLFlBQUErYixtQkFD
QXlNLEVBQUFFLGdCQUFBSixFQUFBNW9CLEVBQUE2b0IsSUFtQkErOUMsRUFBQTl2RSxVQUFBcXlC
LG1CQUFBLFNBQUFQLEdBQ0FyeEIsS0FBQStJLFlBQUErYixrQkFDQXlNLEVBQUFLLG1CQUFBUCxH
QUVBd3JCLEVBQUF4ckIsRUFBQSxnQkFpQkFnK0MsRUFBQTl2RSxVQUFBdXlCLG9CQUFBLFNBQUFU
LEVBQUFVLEdBQ0EveEIsS0FBQStJLFlBQUErYixrQkFDQXlNLEVBQUFPLG9CQUFBVCxFQUFBVSxH
QUVBOHFCLEVBQUF4ckIsRUFBQSxpQkFnQkFnK0MsRUFBQTl2RSxVQUFBMnlCLGdCQUFBLFNBQUFi
LEVBQUFjLEdBQ0FueUIsS0FBQStJLFlBQUErYixrQkFDQXlNLEVBQUFXLGdCQUFBYixFQUFBYyxH
QUVBMHFCLEVBQUF4ckIsRUFBQSxhQUlBZytDLEtBR0F2d0UsR0FBQUQsUUFBQXd3RSxHaEtvL2xC
TSxTQUFTdndFLEVBQVFELEdpS25ubUJ2QixZQUVBQyxHQUFBRCxRQUFBLFVqS21vbUJNLFNBQVND
LEVBQVFELEdrS3JvbUJ2QixZQUVBLElBQUEwd0UsSUFDQUMsTUFBQSwrQkFDQUMsSUFBQSx3Q0Fv
QkFDLEdBQ0FDLGFBQUEsZ0JBQ0FDLFdBQUEsRUFDQUMsU0FBQSxFQUNBQyxrQkFBQSxxQkFDQUMs
YUFBQSxlQUNBQyxXQUFBLEVBQ0FDLFVBQUEsRUFDQUMsV0FBQSxjQUNBQyxPQUFBLEVBQ0EvOUQs
Y0FBQSxnQkFDQWcrRCxjQUFBLGdCQUNBQyxZQUFBLGNBQ0FDLFFBQUEsRUFDQUMsY0FBQSxnQkFD
QUMsWUFBQSxjQUNBQyxjQUFBLGlCQUNBQyxLQUFBLEVBQ0FDLE1BQUEsRUFDQUMsS0FBQSxFQUNB
QyxHQUFBLEVBQ0FDLFNBQUEsV0FDQUMsVUFBQSxhQUNBQyxLQUFBLEVBQ0FDLFNBQUEsWUFDQUMs
U0FBQSxZQUNBQyxjQUFBLGdCQUNBQyxtQkFBQSxzQkFDQUMsMEJBQUEsOEJBQ0FDLGFBQUEsZ0JB
Q0FDLGVBQUEsa0JBQ0FDLGtCQUFBLG9CQUNBQyxpQkFBQSxtQkFDQUMsT0FBQSxFQUNBQyxHQUFB
LEVBQ0FDLEdBQUEsRUFDQXZ4RSxFQUFBLEVBQ0F3eEUsV0FBQSxFQUNBQyxRQUFBLEVBQ0FDLGdC
QUFBLGtCQUNBQyxVQUFBLEVBQ0FDLFFBQUEsRUFDQUMsUUFBQSxFQUNBQyxpQkFBQSxvQkFDQUMs
SUFBQSxFQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsU0FBQSxXQUNBQyxVQUFBLEVBQ0FDLGlC
QUFBLG9CQUNBcHlDLElBQUEsRUFDQXF5QyxTQUFBLEVBQ0FDLDBCQUFBLDRCQUNBQyxLQUFBLEVB
Q0FsN0MsWUFBQSxlQUNBbTdDLFNBQUEsWUFDQUMsT0FBQSxFQUNBQyxVQUFBLFlBQ0FDLFlBQUEs
Y0FDQUMsV0FBQSxjQUNBdDdDLGFBQUEsZ0JBQ0F1N0MsVUFBQSxFQUNBNzRDLFdBQUEsY0FDQUQs
U0FBQSxZQUNBKzRDLGVBQUEsbUJBQ0FDLFlBQUEsZUFDQWw1QyxVQUFBLGFBQ0FDLFlBQUEsZUFD
QW5ELFdBQUEsY0FDQTUyQixPQUFBLEVBQ0ErQyxLQUFBLEVBQ0Frd0UsR0FBQSxFQUNBQyxHQUFB
LEVBQ0FDLEdBQUEsRUFDQUMsR0FBQSxFQUNBQyxVQUFBLGFBQ0FDLDJCQUFBLCtCQUNBQyx5QkFB
QSw2QkFDQUMsU0FBQSxXQUNBQyxrQkFBQSxvQkFDQUMsY0FBQSxnQkFDQUMsUUFBQSxFQUNBQyxV
QUFBLGNBQ0FDLGFBQUEsaUJBQ0FDLFlBQUEsRUFDQUMsZUFBQSxrQkFDQUMsR0FBQSxFQUNBQyxJ
QUFBLEVBQ0FDLFVBQUEsRUFDQXZwRCxFQUFBLEVBQ0F3cEQsR0FBQSxFQUNBQyxHQUFBLEVBQ0FD
LEdBQUEsRUFDQUMsR0FBQSxFQUNBQyxhQUFBLGVBQ0FDLGlCQUFBLG1CQUNBQyxRQUFBLEVBQ0FD
LFVBQUEsWUFDQUMsV0FBQSxhQUNBQyxTQUFBLFdBQ0FDLGFBQUEsZUFDQUMsY0FBQSxpQkFDQUMs
Y0FBQSxpQkFDQUMsa0JBQUEsb0JBQ0FDLE1BQUEsRUFDQUMsVUFBQSxhQUNBQyxVQUFBLGFBQ0FD
LFlBQUEsZUFDQUMsYUFBQSxlQUNBQyxZQUFBLGNBQ0FDLFlBQUEsY0FDQUMsS0FBQSxFQUNBQyxp
QkFBQSxtQkFDQUMsVUFBQSxZQUNBQyxhQUFBLEVBQ0FDLEtBQUEsRUFDQUMsV0FBQSxhQUNBMU0s
T0FBQSxFQUNBcHlDLFFBQUEsRUFDQSsrQyxTQUFBLEVBQ0E5K0MsTUFBQSxFQUNBKytDLE9BQUEs
RUFDQUMsWUFBQSxFQUNBQyxPQUFBLEVBQ0FDLFNBQUEsRUFDQUMsaUJBQUEsb0JBQ0FDLGtCQUFB
LHFCQUNBQyxXQUFBLGNBQ0FDLFFBQUEsV0FDQUMsV0FBQSxhQUNBQyxvQkFBQSxzQkFDQUMsaUJB
QUEsbUJBQ0FDLGFBQUEsZUFDQUMsY0FBQSxpQkFDQUMsT0FBQSxFQUNBQyxVQUFBLFlBQ0FDLFVB
QUEsWUFDQUMsVUFBQSxZQUNBQyxjQUFBLGdCQUNBQyxvQkFBQSxzQkFDQUMsZUFBQSxpQkFDQUMs
RUFBQSxFQUNBQyxPQUFBLEVBQ0FDLEtBQUEsT0FDQUMsS0FBQSxPQUNBQyxnQkFBQSxtQkFDQUMs
WUFBQSxjQUNBQyxVQUFBLFlBQ0FDLG1CQUFBLHFCQUNBQyxpQkFBQSxtQkFDQUMsUUFBQSxFQUNB
eHhCLE9BQUEsRUFDQXl4QixPQUFBLEVBQ0FDLEdBQUEsRUFDQUMsR0FBQSxFQUNBQyxNQUFBLEVB
Q0FDLEtBQUEsRUFDQUMsZUFBQSxrQkFDQUMsTUFBQSxFQUNBQyxRQUFBLEVBQ0FDLGlCQUFBLG1C
QUNBQyxpQkFBQSxtQkFDQUMsTUFBQSxFQUNBQyxhQUFBLGVBQ0EvUSxZQUFBLGNBQ0FnUixhQUFB
LGVBQ0FDLE1BQUEsRUFDQUMsTUFBQSxFQUNBQyxZQUFBLGNBQ0FDLFVBQUEsYUFDQXJoRCxZQUFB
LGVBQ0FzaEQsc0JBQUEseUJBQ0FDLHVCQUFBLDBCQUNBNXpELE9BQUEsRUFDQTZ6RCxPQUFBLEVB
Q0F2aEQsZ0JBQUEsbUJBQ0FDLGlCQUFBLG9CQUNBdWhELGNBQUEsaUJBQ0FDLGVBQUEsa0JBQ0F2
aEQsaUJBQUEsb0JBQ0FDLGNBQUEsaUJBQ0FDLFlBQUEsZUFDQXNoRCxhQUFBLGVBQ0FDLGVBQUEs
aUJBQ0FDLFlBQUEsY0FDQUMsUUFBQSxVQUNBQyxRQUFBLFVBQ0FDLFdBQUEsY0FDQUMsZUFBQSxr
QkFDQUMsY0FBQSxpQkFDQUMsV0FBQSxhQUNBMTJFLEdBQUEsRUFDQXFqRCxVQUFBLEVBQ0FzekIs
R0FBQSxFQUNBQyxHQUFBLEVBQ0FDLGtCQUFBLHFCQUNBQyxtQkFBQSxzQkFDQUMsUUFBQSxFQUNB
QyxZQUFBLGVBQ0FDLGFBQUEsZ0JBQ0FDLFdBQUEsZUFDQUMsWUFBQSxlQUNBQyxTQUFBLFlBQ0FD
LGFBQUEsZ0JBQ0FDLGNBQUEsaUJBQ0E5ekIsT0FBQSxFQUNBK3pCLGFBQUEsZ0JBQ0E5a0UsUUFB
QSxFQUNBK2tFLFNBQUEsYUFDQUMsWUFBQSxnQkFDQUMsWUFBQSxnQkFDQUMsUUFBQSxVQUNBQyxX
QUFBLGFBQ0FDLFdBQUEsRUFDQUMsT0FBQSxFQUNBQyxZQUFBLGVBQ0FDLFlBQUEsZUFDQTV5RCxF
QUFBLEVBQ0E2eUQsUUFBQSxXQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsaUJBQUEsbUJBQ0FD
LGFBQUEsZ0JBQ0FDLGFBQUEsZ0JBQ0FDLFVBQUEsYUFDQUMsVUFBQSxhQUNBQyxVQUFBLGFBQ0FD
LFdBQUEsY0FDQUMsVUFBQSxhQUNBQyxRQUFBLFdBQ0FDLE1BQUEsRUFDQUMsV0FBQSxjQUNBQyxR
QUFBLFdBQ0FDLFNBQUEsWUFDQTN6RCxFQUFBLEVBQ0E0ekQsR0FBQSxFQUNBQyxHQUFBLEVBQ0FD
LGlCQUFBLG1CQUNBQyxFQUFBLEVBQ0FDLFdBQUEsY0FHQTVRLEdBQ0FyNkQsY0FDQUMsd0JBQ0Fn
cUUsYUFBQW5NLEVBQUFDLE1BQ0FtTSxhQUFBcE0sRUFBQUMsTUFDQW9NLFVBQUFyTSxFQUFBQyxN
QUNBcU0sVUFBQXRNLEVBQUFDLE1BQ0FzTSxVQUFBdk0sRUFBQUMsTUFDQXVNLFdBQUF4TSxFQUFB
QyxNQUNBd00sVUFBQXpNLEVBQUFDLE1BQ0F5TSxRQUFBMU0sRUFBQUUsSUFDQTJNLFFBQUE3TSxF
QUFBRSxJQUNBNE0sU0FBQTlNLEVBQUFFLEtBRUE5OUQscUJBR0FyUyxRQUFBc0QsS0FBQThzRSxH
QUFBaHRFLFFBQUEsU0FBQWEsR0FDQXVvRSxFQUFBcjZELFdBQUFsTyxHQUFBLEVBQ0Ftc0UsRUFB
QW5zRSxLQUNBdW9FLEVBQUFuNkQsa0JBQUFwTyxHQUFBbXNFLEVBQUFuc0UsTUFJQXpFLEVBQUFE
LFFBQUFpdEUsR2xLcXBtQk0sU0FBU2h0RSxFQUFRRCxFQUFTSCxHbUt2N21CaEMsWUEwQ0EsU0FB
QWdoQyxHQUFBajhCLEdBQ0EscUJBQUFBLElBQUEwN0IsRUFBQUMseUJBQUEzN0IsR0FDQSxPQUNB
MDhCLE1BQUExOEIsRUFBQTI4QixlQUNBQyxJQUFBNThCLEVBQUE2OEIsYUFFRyxJQUFBOTVCLE9B
QUFrNUIsYUFBQSxDQUNILEdBQUFRLEdBQUExNUIsT0FBQWs1QixjQUNBLFFBQ0F5bkMsV0FBQWpu
QyxFQUFBaW5DLFdBQ0FDLGFBQUFsbkMsRUFBQWtuQyxhQUNBdnlDLFVBQUFxTCxFQUFBckwsVUFD
QXd5QyxZQUFBbm5DLEVBQUFtbkMsYUFFRyxHQUFBNWdFLFNBQUF5NUIsVUFBQSxDQUNILEdBQUFL
LEdBQUE5NUIsU0FBQXk1QixVQUFBTSxhQUNBLFFBQ0FDLGNBQUFGLEVBQUFFLGdCQUNBdHhCLEtB
QUFveEIsRUFBQXB4QixLQUNBd3RFLElBQUFwOEMsRUFBQXE4QyxZQUNBQyxLQUFBdDhDLEVBQUF1
OEMsZUFXQSxRQUFBQyxHQUFBcndFLEVBQUFDLEdBS0EsR0FBQXF3RSxHQUFBLE1BQUFob0QsT0FB
QUQsSUFDQSxXQUlBLElBQUFrb0QsR0FBQXY5QyxFQUFBMUssRUFDQSxLQUFBa29ELElBQUF2MEQs
RUFBQXUwRCxFQUFBRCxHQUFBLENBQ0FDLEVBQUFELENBRUEsSUFBQS9wRCxHQUFBM21CLEVBQUFq
RSxVQUFBdWpCLEVBQUFvVixPQUFBMHZCLEVBQUFqa0QsRUFBQUMsRUFPQSxPQUxBdW1CLEdBQUF2
cEIsS0FBQSxTQUNBdXBCLEVBQUFqd0IsT0FBQSt4QixFQUVBclosRUFBQVAsNkJBQUE4WCxHQUVB
QSxFQUdBLFlBL0ZBLEdBQUF2WCxHQUFBamQsRUFBQSxJQUNBaUksRUFBQWpJLEVBQUEsR0FDQTRI
LEVBQUE1SCxFQUFBLEdBQ0F5Z0MsRUFBQXpnQyxFQUFBLElBQ0E2TixFQUFBN04sRUFBQSxJQUVB
cTJCLEVBQUFyMkIsRUFBQSxJQUNBMnBDLEVBQUEzcEMsRUFBQSxJQUNBaXFCLEVBQUFqcUIsRUFB
QSxJQUVBeStFLEVBQUF4MkUsRUFBQUosV0FBQSxnQkFBQUUsb0JBQUE0SixjQUFBLEdBRUF3YixH
QUNBb1YsUUFDQTFtQix5QkFDQTIwQyxRQUFBLFdBQ0FDLFNBQUEsbUJBRUEvc0MsY0FBQSxrSEFJ
QTRTLEVBQUEsS0FDQTI3QixFQUFBLEtBQ0F1c0IsRUFBQSxLQUNBRixHQUFBLEVBSUFJLEdBQUEs
RUFtRkF4UixHQUNBLy9DLGFBRUFwUyxjQUFBLFNBQUFDLEVBQUFqTixFQUFBQyxFQUFBQyxHQUNB
LElBQUF5d0UsRUFDQSxXQUdBLElBQUFockIsR0FBQTNsRCxFQUFBbkcsRUFBQVIsb0JBQUEyRyxH
QUFBakcsTUFFQSxRQUFBa1QsR0FFQSxnQkFDQTJ1QixFQUFBK3BCLElBQUEsU0FBQUEsRUFBQTl5
QixtQkFDQXRLLEVBQUFvOUIsRUFDQXpCLEVBQUFsa0QsRUFDQXl3RSxFQUFBLEtBRUEsTUFDQSxl
QUNBbG9ELEVBQUEsS0FDQTI3QixFQUFBLEtBQ0F1c0IsRUFBQSxJQUNBLE1BR0Esb0JBQ0FGLEdB
QUEsQ0FDQSxNQUNBLHNCQUNBLGlCQUVBLE1BREFBLElBQUEsRUFDQUQsRUFBQXJ3RSxFQUFBQyxF
QVVBLDBCQUNBLEdBQUF3d0UsRUFDQSxLQUdBLGtCQUNBLGVBQ0EsTUFBQUosR0FBQXJ3RSxFQUFB
QyxHQUdBLGFBR0F5TSxlQUFBLFNBQUFoVixFQUFBMlUsRUFBQUMsR0FDQSxhQUFBRCxJQUNBcWtF
LEdBQUEsSUFLQXQrRSxHQUFBRCxRQUFBK3NFLEduS3U4bUJNLFNBQVM5c0UsRUFBUUQsRUFBU0gs
R29LdG5uQmhDLFlBNkRBLFNBQUErWixHQUFBclUsR0FHQSxVQUFBQSxFQUFBc1UsWUFHQSxRQUFB
akIsR0FBQUMsR0FDQSxpQkFBQUEsR0FBQSxVQUFBQSxHQUFBLFdBQUFBLEdBQUEsYUFBQUEsRUFs
RUEsR0FBQXBTLEdBQUE1RyxFQUFBLEdBRUE2MUIsRUFBQTcxQixFQUFBLElBQ0FpZCxFQUFBamQs
RUFBQSxJQUNBNEgsRUFBQTVILEVBQUEsR0FDQTIrRSxFQUFBMytFLEVBQUEsS0FDQTQrRSxFQUFB
NStFLEVBQUEsS0FDQTZOLEVBQUE3TixFQUFBLElBQ0E2K0UsRUFBQTcrRSxFQUFBLEtBQ0E4K0Us
RUFBQTkrRSxFQUFBLEtBQ0F5a0IsRUFBQXprQixFQUFBLElBQ0ErK0UsRUFBQS8rRSxFQUFBLEtB
Q0FnL0UsRUFBQWgvRSxFQUFBLEtBQ0FpL0UsRUFBQWovRSxFQUFBLEtBQ0F3ZCxFQUFBeGQsRUFB
QSxJQUNBay9FLEVBQUFsL0UsRUFBQSxLQUVBc0MsRUFBQXRDLEVBQUEsR0FDQW0wQixFQUFBbjBC
LEVBQUEsSUFxQkFtdEIsR0FwQkFudEIsRUFBQSxPQXFCQW0vRSxNQUNBLHFxQkFBQW43RSxRQUFB
LFNBQUFtTCxHQUNBLEdBQUFpd0UsR0FBQWp3RSxFQUFBLEdBQUEybkIsY0FBQTNuQixFQUFBbE8s
TUFBQSxHQUNBbytFLEVBQUEsS0FBQUQsRUFDQUUsRUFBQSxNQUFBRixFQUVBbjBFLEdBQ0E0USx5
QkFDQTIwQyxRQUFBNnVCLEVBQ0E1dUIsU0FBQTR1QixFQUFBLFdBRUEzN0QsY0FBQTQ3RCxHQUVB
bnlELEdBQUFoZSxHQUFBbEUsRUFDQWswRSxFQUFBRyxHQUFBcjBFLEdBR0EsSUFBQXMwRSxNQVlB
dFMsR0FDQTkvQyxhQUVBcFMsY0FBQSxTQUFBQyxFQUFBak4sRUFBQUMsRUFBQUMsR0FDQSxHQUFB
SCxHQUFBcXhFLEVBQUFua0UsRUFDQSxLQUFBbE4sRUFDQSxXQUVBLElBQUEweEUsRUFDQSxRQUFB
eGtFLEdBQ0EsZUFDQSxpQkFDQSx3QkFDQSx3QkFDQSxpQkFDQSxtQkFDQSxlQUNBLGVBQ0EsZUFD
QSxpQkFDQSxjQUNBLG9CQUNBLHdCQUNBLG1CQUNBLGVBQ0EsY0FDQSxpQkFDQSxrQkFDQSxvQkFD
QSxlQUNBLGdCQUNBLGlCQUNBLGlCQUNBLGdCQUNBLGlCQUNBLG9CQUNBLHNCQUNBLGlCQUdBd2tF
LEVBQUEzeEUsQ0FDQSxNQUNBLG1CQUlBLE9BQUFzbUIsRUFBQW5tQixHQUNBLFdBR0Esa0JBQ0Es
ZUFDQXd4RSxFQUFBVixDQUNBLE1BQ0EsZUFDQSxlQUNBVSxFQUFBWCxDQUNBLE1BQ0EsZ0JBR0Es
T0FBQTd3RSxFQUFBcVgsT0FDQSxXQUdBLHNCQUNBLG1CQUNBLG1CQUNBLGlCQUdBLGtCQUNBLG1C
QUNBLHFCQUNBbTZELEVBQUEvNkQsQ0FDQSxNQUNBLGVBQ0EsaUJBQ0EsbUJBQ0Esa0JBQ0EsbUJB
Q0Esa0JBQ0EsbUJBQ0EsY0FDQSs2RCxFQUFBVCxDQUNBLE1BQ0Esc0JBQ0Esa0JBQ0EsbUJBQ0Es
b0JBQ0FTLEVBQUFSLENBQ0EsTUFDQSx1QkFDQSw0QkFDQSx3QkFDQVEsRUFBQWIsQ0FDQSxNQUNB
LHdCQUNBYSxFQUFBUCxDQUNBLE1BQ0EsaUJBQ0FPLEVBQUFoaUUsQ0FDQSxNQUNBLGdCQUNBZ2lF
LEVBQUFOLENBQ0EsTUFDQSxlQUNBLGFBQ0EsZUFDQU0sRUFBQVosRUFHQVksRUFBQSxPQUFBNTRF
LEVBQUEsS0FBQW9VLEVBQ0EsSUFBQTdMLEdBQUFxd0UsRUFBQTUxRSxVQUFBa0UsRUFBQUMsRUFB
QUMsRUFBQUMsRUFFQSxPQURBZ1AsR0FBQVAsNkJBQUF2TixHQUNBQSxHQUdBdUwsZUFBQSxTQUFB
aFYsRUFBQTJVLEVBQUFDLEdBTUEsZUFBQUQsSUFBQXRCLEVBQUFyVCxFQUFBZzhELE1BQUEsQ0FD
QSxHQUFBNzhELEdBQUFrVixFQUFBclUsR0FDQVgsRUFBQTZDLEVBQUFSLG9CQUFBMUIsRUFDQTY1
RSxHQUFBMTZFLEtBQ0EwNkUsRUFBQTE2RSxHQUFBZ3hCLEVBQUFDLE9BQUEvd0IsRUFBQSxRQUFB
ekMsTUFLQXVZLG1CQUFBLFNBQUFuVixFQUFBMlUsR0FDQSxlQUFBQSxJQUFBdEIsRUFBQXJULEVB
QUFnOEQsTUFBQSxDQUNBLEdBQUE3OEQsR0FBQWtWLEVBQUFyVSxFQUNBNjVFLEdBQUExNkUsR0FB
QXNZLGVBQ0FvaUUsR0FBQTE2RSxLQUtBekUsR0FBQUQsUUFBQThzRSxHcEt1b25CTSxTQUFTN3NF
LEVBQVFELEVBQVNILEdxSzcxbkJoQyxZQXFCQSxTQUFBMitFLEdBQUE3d0UsRUFBQTJQLEVBQUF6
UCxFQUFBQyxHQUNBLE1BQUFKLEdBQUF0TixLQUFBZSxLQUFBd00sRUFBQTJQLEVBQUF6UCxFQUFB
QyxHQXBCQSxHQUFBSixHQUFBN04sRUFBQSxJQU9BeS9FLEdBQ0FDLGNBQUEsS0FDQUMsWUFBQSxL
QUNBQyxjQUFBLEtBYUEveEUsR0FBQStCLGFBQUErdUUsRUFBQWMsR0FFQXIvRSxFQUFBRCxRQUFB
dytFLEdySzYybkJNLFNBQVN2K0UsRUFBUUQsRUFBU0gsR3NLeDRuQmhDLFlBb0JBLFNBQUE0K0Us
R0FBQTl3RSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBQ0EsTUFBQUosR0FBQXROLEtBQUFlLEtBQUF3
TSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBbkJBLEdBQUFKLEdBQUE3TixFQUFBLElBTUE2L0UsR0FD
QUMsY0FBQSxTQUFBM3dFLEdBQ0EsdUJBQUFBLEtBQUEyd0UsY0FBQWg0RSxPQUFBZzRFLGVBY0Fq
eUUsR0FBQStCLGFBQUFndkUsRUFBQWlCLEdBRUF6L0UsRUFBQUQsUUFBQXkrRSxHdEt3NW5CTSxT
QUFTeCtFLEVBQVFELEVBQVNILEd1S2w3bkJoQyxZQWtCQSxTQUFBNHZELEdBQUE5aEQsRUFBQTJQ
LEVBQUF6UCxFQUFBQyxHQUNBLE1BQUFKLEdBQUF0TixLQUFBZSxLQUFBd00sRUFBQTJQLEVBQUF6
UCxFQUFBQyxHQWpCQSxHQUFBSixHQUFBN04sRUFBQSxJQU1BKy9FLEdBQ0EvM0QsS0FBQSxLQWFB
bmEsR0FBQStCLGFBQUFnZ0QsRUFBQW13QixHQUVBMy9FLEVBQUFELFFBQUF5dkQsR3ZLazhuQk0s
U0FBU3h2RCxFQUFRRCxFQUFTSCxHd0sxOW5CaEMsWUFrQkEsU0FBQSsrRSxHQUFBanhFLEVBQUEy
UCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBd1csR0FBQWxrQixLQUFBZSxLQUFBd00sRUFBQTJQLEVB
QUF6UCxFQUFBQyxHQWpCQSxHQUFBd1csR0FBQXprQixFQUFBLElBTUFnZ0YsR0FDQUMsYUFBQSxL
QWFBeDdELEdBQUE3VSxhQUFBbXZFLEVBQUFpQixHQUVBNS9FLEVBQUFELFFBQUE0K0UsR3hLMCtu
Qk0sU0FBUzMrRSxFQUFRRCxFQUFTSCxHeUtsZ29CaEMsWUFrQkEsU0FBQTYrRSxHQUFBL3dFLEVB
QUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBdVAsR0FBQWpkLEtBQUFlLEtBQUF3TSxFQUFBMlAs
RUFBQXpQLEVBQUFDLEdBakJBLEdBQUF1UCxHQUFBeGQsRUFBQSxJQU1Ba2dGLEdBQ0EzNkQsY0FB
QSxLQWFBL0gsR0FBQTVOLGFBQUFpdkUsRUFBQXFCLEdBRUE5L0UsRUFBQUQsUUFBQTArRSxHektr
aG9CTSxTQUFTeitFLEVBQVFELEVBQVNILEcwSzFpb0JoQyxZQW1CQSxTQUFBc3dELEdBQUF4aUQs
RUFBQTJQLEVBQUF6UCxFQUFBQyxHQUNBLE1BQUFKLEdBQUF0TixLQUFBZSxLQUFBd00sRUFBQTJQ
LEVBQUF6UCxFQUFBQyxHQWxCQSxHQUFBSixHQUFBN04sRUFBQSxJQU9BbWdGLEdBQ0FuNEQsS0FB
QSxLQWFBbmEsR0FBQStCLGFBQUEwZ0QsRUFBQTZ2QixHQUVBLy9FLEVBQUFELFFBQUFtd0QsRzFL
MGpvQk0sU0FBU2x3RCxFQUFRRCxFQUFTSCxHMktubG9CaEMsWUFrRUEsU0FBQTgrRSxHQUFBaHhF
LEVBQUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBdVAsR0FBQWpkLEtBQUFlLEtBQUF3TSxFQUFB
MlAsRUFBQXpQLEVBQUFDLEdBakVBLEdBQUF1UCxHQUFBeGQsRUFBQSxJQUVBbTBCLEVBQUFuMEIs
RUFBQSxJQUNBb2dGLEVBQUFwZ0YsRUFBQSxLQUNBMGtCLEVBQUExa0IsRUFBQSxJQU1BcWdGLEdB
Q0F4N0UsSUFBQXU3RSxFQUNBaDRCLFNBQUEsS0FDQXBqQyxRQUFBLEtBQ0FDLFNBQUEsS0FDQUMs
T0FBQSxLQUNBQyxRQUFBLEtBQ0FtN0QsT0FBQSxLQUNBQyxPQUFBLEtBQ0FuN0QsaUJBQUFWLEVB
RUEwUCxTQUFBLFNBQUFqbEIsR0FNQSxtQkFBQUEsRUFBQWxFLEtBQ0FrcEIsRUFBQWhsQixHQUVB
LEdBRUFrbEIsUUFBQSxTQUFBbGxCLEdBUUEsa0JBQUFBLEVBQUFsRSxNQUFBLFVBQUFrRSxFQUFB
bEUsS0FDQWtFLEVBQUFrbEIsUUFFQSxHQUVBNmYsTUFBQSxTQUFBL2tDLEdBR0EsbUJBQUFBLEVB
QUFsRSxLQUNBa3BCLEVBQUFobEIsR0FFQSxZQUFBQSxFQUFBbEUsTUFBQSxVQUFBa0UsRUFBQWxF
LEtBQ0FrRSxFQUFBa2xCLFFBRUEsR0FjQTdXLEdBQUE1TixhQUFBa3ZFLEVBQUF1QixHQUVBamdG
LEVBQUFELFFBQUEyK0UsRzNLbW1vQk0sU0FBUzErRSxFQUFRRCxFQUFTSCxHNEszcW9CaEMsWUEy
QkEsU0FBQWcvRSxHQUFBbHhFLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBdVAsR0FBQWpk
LEtBQUFlLEtBQUF3TSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBMUJBLEdBQUF1UCxHQUFBeGQsRUFB
QSxJQUVBMGtCLEVBQUExa0IsRUFBQSxJQU1Bd2dGLEdBQ0FDLFFBQUEsS0FDQUMsY0FBQSxLQUNB
QyxlQUFBLEtBQ0F6N0QsT0FBQSxLQUNBQyxRQUFBLEtBQ0FILFFBQUEsS0FDQUMsU0FBQSxLQUNB
RyxpQkFBQVYsRUFhQWxILEdBQUE1TixhQUFBb3ZFLEVBQUF3QixHQUVBcGdGLEVBQUFELFFBQUE2
K0UsRzVLMnJvQk0sU0FBUzUrRSxFQUFRRCxFQUFTSCxHNks1dG9CaEMsWUFxQkEsU0FBQWkvRSxH
QUFBbnhFLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBSixHQUFBdE4sS0FBQWUsS0FBQXdN
LEVBQUEyUCxFQUFBelAsRUFBQUMsR0FwQkEsR0FBQUosR0FBQTdOLEVBQUEsSUFPQTRnRixHQUNB
aHRFLGFBQUEsS0FDQStyRSxZQUFBLEtBQ0FDLGNBQUEsS0FhQS94RSxHQUFBK0IsYUFBQXF2RSxF
QUFBMkIsR0FFQXhnRixFQUFBRCxRQUFBOCtFLEc3SzR1b0JNLFNBQVM3K0UsRUFBUUQsRUFBU0gs
RzhLdndvQmhDLFlBaUNBLFNBQUFrL0UsR0FBQXB4RSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBQ0Es
TUFBQXdXLEdBQUFsa0IsS0FBQWUsS0FBQXdNLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FoQ0EsR0FB
QXdXLEdBQUF6a0IsRUFBQSxJQU1BNmdGLEdBQ0FDLE9BQUEsU0FBQTN4RSxHQUNBLGdCQUFBQSxL
QUFBMnhFLE9BQ0EsZUFBQTN4RSxNQUFBNHhFLFlBQUEsR0FFQUMsT0FBQSxTQUFBN3hFLEdBQ0Es
Z0JBQUFBLEtBQUE2eEUsT0FDQSxlQUFBN3hFLE1BQUE4eEUsWUFDQSxjQUFBOXhFLE1BQUEreEUs
V0FBQSxHQUVBQyxPQUFBLEtBTUFDLFVBQUEsS0FhQTM4RCxHQUFBN1UsYUFBQXN2RSxFQUFBMkIs
R0FFQXpnRixFQUFBRCxRQUFBKytFLEc5S3V4b0JNLFNBQVM5K0UsRUFBUUQsRytLN3pvQnZCLFlB
U0EsU0FBQWd1RSxHQUFBbm1ELEdBTUEsSUFMQSxHQUFBN21CLEdBQUEsRUFDQUMsRUFBQSxFQUNB
VCxFQUFBLEVBQ0EwZ0YsRUFBQXI1RCxFQUFBcGxCLE9BQ0FwQyxFQUFBNmdGLEtBQ0ExZ0YsRUFB
QUgsR0FBQSxDQUVBLElBREEsR0FBQW9ELEdBQUE2RCxLQUFBMjZCLElBQUF6aEMsRUFBQSxLQUFB
SCxHQUNVRyxFQUFBaUQsRUFBT2pELEdBQUEsRUFDakJTLElBQUFELEdBQUE2bUIsRUFBQVgsV0FB
QTFtQixLQUFBUSxHQUFBNm1CLEVBQUFYLFdBQUExbUIsRUFBQSxLQUFBUSxHQUFBNm1CLEVBQUFY
LFdBQUExbUIsRUFBQSxLQUFBUSxHQUFBNm1CLEVBQUFYLFdBQUExbUIsRUFBQSxHQUVBUSxJQUFB
bWdGLEVBQ0FsZ0YsR0FBQWtnRixFQUVBLEtBQVEzZ0YsRUFBQTBnRixFQUFPMWdGLElBQ2ZTLEdB
QUFELEdBQUE2bUIsRUFBQVgsV0FBQTFtQixFQUlBLE9BRkFRLElBQUFtZ0YsRUFDQWxnRixHQUFB
a2dGLEVBQ0FuZ0YsRUFBQUMsR0FBQSxHQTFCQSxHQUFBa2dGLEdBQUEsS0E2QkFsaEYsR0FBQUQs
UUFBQWd1RSxHL0s4MG9CTSxTQUFTL3RFLEVBQVFELEVBQVNILEdnTDkyb0JoQyxZQWtCQSxTQUFB
MndELEdBQUF2dUQsRUFBQWdRLEVBQUE5TSxFQUFBaXNELEdBV0EsR0FBQWd3QixHQUFBLE1BQUFu
dkUsR0FBQSxpQkFBQUEsSUFBQSxLQUFBQSxDQUNBLElBQUFtdkUsRUFDQSxRQUdBLElBQUFDLEdB
QUF6a0QsTUFBQTNxQixFQUNBLElBQUFtL0MsR0FBQWl3QixHQUFBLElBQUFwdkUsR0FBQTJrQixF
QUFBajJCLGVBQUFzQixJQUFBMjBCLEVBQUEzMEIsR0FDQSxTQUFBZ1EsQ0FHQSxvQkFBQUEsR0FB
QSxDQXVCQUEsSUFBQTZoQyxPQUVBLE1BQUE3aEMsR0FBQSxLQTlEQSxHQUFBNHBCLEdBQUFoOEIs
RUFBQSxJQUdBKzJCLEdBRkEvMkIsRUFBQSxHQUVBZzhCLEVBQUFqRixpQkE4REEzMkIsR0FBQUQs
UUFBQXd3RCxHaEw4M29CTSxTQUFTdndELEVBQVFELEVBQVNILEdpTGo4b0JoQyxZQW9CQSxTQUFB
Z2hFLEdBQUF5Z0IsR0FRQSxTQUFBQSxFQUNBLFdBRUEsUUFBQUEsRUFBQXg4RSxTQUNBLE1BQUF3
OEUsRUFHQSxJQUFBLzdFLEdBQUF3WCxFQUFBRyxJQUFBb2tFLEVBQ0EsT0FBQS83RSxJQUNBQSxF
QUFBNmhDLEVBQUE3aEMsR0FDQUEsRUFBQWtDLEVBQUFSLG9CQUFBMUIsR0FBQSxXQUdBLGtCQUFB
KzdFLEdBQUExOEMsT0FDQW4rQixFQUFBLE1BRUFBLEVBQUEsS0FBQWhHLE9BQUFzRCxLQUFBdTlF
LEtBMUNBLEdBQUE3NkUsR0FBQTVHLEVBQUEsR0FHQTRILEdBREE1SCxFQUFBLElBQ0FBLEVBQUEs
SUFDQWtkLEVBQUFsZCxFQUFBLElBRUF1bkMsRUFBQXZuQyxFQUFBLEdBQ0FBLEdBQUEsR0FDQUEs
RUFBQSxFQXNDQUksR0FBQUQsUUFBQTZnRSxHakxpOW9CTSxTQUFTNWdFLEVBQVFELEVBQVNILElr
TDNncEJoQyxTQUFBMjJDLEdBV0EsWUF1QkEsU0FBQStxQyxHQUFBNzJDLEVBQUF4SCxFQUFBamhD
LEVBQUE4NUQsR0FFQSxHQUFBcnhCLEdBQUEsZ0JBQUFBLEdBQUEsQ0FDQSxHQUFBaWQsR0FBQWpk
LEVBQ0FzeEIsRUFBQW42RCxTQUFBOGxELEVBQUExbEQsRUFTQSs1RCxJQUFBLE1BQUE5NEIsSUFD
QXlrQixFQUFBMWxELEdBQUFpaEMsSUFVQSxRQUFBK2tDLEdBQUFqaUUsRUFBQSsxRCxHQUNBLFNB
QUEvMUQsRUFDQSxNQUFBQSxFQUVBLElBQUEyaEQsS0FTQSxPQUZBamMsR0FBQTFsQyxFQUFBdTdF
LEVBQUE1NUIsR0FFQUEsRUExREEsR0FDQWpjLElBREE3ckMsRUFBQSxJQUNBQSxFQUFBLElBQ0FB
LEdBQUEsRUFJQSxvQkFBQTIyQyxNQUFBSSxNQXVEQTMyQyxFQUFBRCxRQUFBaW9FLElsTDhncEI4
QjduRSxLQUFLSixFQUFTSCxFQUFvQixNQUkxRCxTQUFTSSxFQUFRRCxFQUFTSCxHbUxsbHBCaEMs
WUF1RUEsU0FBQW9nRixHQUFBcHlFLEdBQ0EsR0FBQUEsRUFBQW5KLElBQUEsQ0FNQSxHQUFBQSxH
QUFBODhFLEVBQUEzekUsRUFBQW5KLE1BQUFtSixFQUFBbkosR0FDQSxxQkFBQUEsRUFDQSxNQUFB
QSxHQUtBLGdCQUFBbUosRUFBQS9DLEtBQUEsQ0FDQSxHQUFBbXBCLEdBQUFELEVBQUFubUIsRUFJ
QSxhQUFBb21CLEVBQUEsUUFBQTl3QixPQUFBRyxhQUFBMndCLEdBRUEsa0JBQUFwbUIsRUFBQS9D
LE1BQUEsVUFBQStDLEVBQUEvQyxLQUdBMjJFLEVBQUE1ekUsRUFBQXFtQixVQUFBLGVBRUEsR0Ev
RkEsR0FBQUYsR0FBQW4wQixFQUFBLElBTUEyaEYsR0FDQUUsSUFBQSxTQUNBQyxTQUFBLElBQ0FD
LEtBQUEsWUFDQUMsR0FBQSxVQUNBQyxNQUFBLGFBQ0FDLEtBQUEsWUFDQUMsSUFBQSxTQUNBQyxJ
QUFBLEtBQ0FDLEtBQUEsY0FDQUMsS0FBQSxjQUNBQyxPQUFBLGFBQ0FDLGdCQUFBLGdCQVFBWixH
QUNBYSxFQUFBLFlBQ0FDLEVBQUEsTUFDQUMsR0FBQSxRQUNBQyxHQUFBLFFBQ0FDLEdBQUEsUUFD
QUMsR0FBQSxVQUNBQyxHQUFBLE1BQ0FDLEdBQUEsUUFDQUMsR0FBQSxXQUNBQyxHQUFBLFNBQ0FD
LEdBQUEsSUFDQUMsR0FBQSxTQUNBQyxHQUFBLFdBQ0FDLEdBQUEsTUFDQUMsR0FBQSxPQUNBQyxH
QUFBLFlBQ0FDLEdBQUEsVUFDQUMsR0FBQSxhQUNBQyxHQUFBLFlBQ0FDLEdBQUEsU0FDQUMsR0FB
QSxTQUNBQyxJQUFBLEtBQ0FDLElBQUEsS0FDQUMsSUFBQSxLQUNBQyxJQUFBLEtBQ0FDLElBQUEs
S0FDQUMsSUFBQSxLQUNBQyxJQUFBLEtBQ0FDLElBQUEsS0FDQUMsSUFBQSxLQUNBQyxJQUFBLE1B
Q0FDLElBQUEsTUFDQUMsSUFBQSxNQUNBQyxJQUFBLFVBQ0FDLElBQUEsYUFDQUMsSUFBQSxPQW9D
QXhrRixHQUFBRCxRQUFBaWdGLEduTGttcEJNLFNBQVNoZ0YsRUFBUUQsR29McnNwQnZCLFlBcUJB
LFNBQUFpckMsR0FBQTZkLEdBQ0EsR0FBQTlkLEdBQUE4ZCxJQUFBQyxHQUFBRCxFQUFBQyxJQUFB
RCxFQUFBRSxHQUNBLHNCQUFBaGUsR0FDQSxNQUFBQSxHQXBCQSxHQUFBK2QsR0FBQSxrQkFBQXp5
QixnQkFBQTZVLFNBQ0E2ZCxFQUFBLFlBdUJBL29ELEdBQUFELFFBQUFpckMsR3BMc3RwQk0sU0FB
U2hyQyxFQUFRRCxHcUxudnBCdkIsWUFTQSxTQUFBMGtGLEdBQUE5L0UsR0FDQSxLQUFBQSxLQUFB
dUIsWUFDQXZCLElBQUF1QixVQUVBLE9BQUF2QixHQVVBLFFBQUErL0UsR0FBQS8vRSxHQUNBLEtB
QUFBLEdBQUEsQ0FDQSxHQUFBQSxFQUFBNEIsWUFDQSxNQUFBNUIsR0FBQTRCLFdBRUE1QixLQUFB
aUMsWUFXQSxRQUFBMmpFLEdBQUFuMEMsRUFBQXEwQyxHQUtBLElBSkEsR0FBQTlsRSxHQUFBOC9F
LEVBQUFydUQsR0FDQXV1RCxFQUFBLEVBQ0FDLEVBQUEsRUFFQWpnRixHQUFBLENBQ0EsT0FBQUEs
RUFBQUUsU0FBQSxDQUdBLEdBRkErL0UsRUFBQUQsRUFBQWhnRixFQUFBMGxDLFlBQUE3bkMsT0FF
QW1pRixHQUFBbGEsR0FBQW1hLEdBQUFuYSxFQUNBLE9BQ0E5bEUsT0FDQThsRSxTQUFBa2EsRUFJ
QUEsR0FBQUMsRUFHQWpnRixFQUFBOC9FLEVBQUFDLEVBQUEvL0UsS0FJQTNFLEVBQUFELFFBQUF3
cUUsR3JMbXdwQk0sU0FBU3ZxRSxFQUFRRCxFQUFTSCxHc0xqMHBCaEMsWUFXQSxTQUFBaWxGLEdB
QUFDLEVBQUE5M0QsR0FDQSxHQUFBb00sS0FRQSxPQU5BQSxHQUFBMHJELEVBQUFsekUsZUFBQW9i
LEVBQUFwYixjQUNBd25CLEVBQUEsU0FBQTByRCxHQUFBLFNBQUE5M0QsRUFDQW9NLEVBQUEsTUFB
QTByRCxHQUFBLE1BQUE5M0QsRUFDQW9NLEVBQUEsS0FBQTByRCxHQUFBLEtBQUE5M0QsRUFDQW9N
LEVBQUEsSUFBQTByRCxHQUFBLElBQUE5M0QsRUFBQXBiLGNBRUF3bkIsRUFtREEsUUFBQTdhLEdB
QUF5TyxHQUNBLEdBQUErM0QsRUFBQS8zRCxHQUNBLE1BQUErM0QsR0FBQS8zRCxFQUNHLEtBQUFn
NEQsRUFBQWg0RCxHQUNILE1BQUFBLEVBR0EsSUFBQWk0RCxHQUFBRCxFQUFBaDRELEVBRUEsUUFB
QTgzRCxLQUFBRyxHQUNBLEdBQUFBLEVBQUF2a0YsZUFBQW9rRixRQUFBajBCLEdBQ0EsTUFBQWsw
QixHQUFBLzNELEdBQUFpNEQsRUFBQUgsRUFJQSxVQXBGQSxHQUFBajlFLEdBQUFqSSxFQUFBLEdB
d0JBb2xGLEdBQ0FFLGFBQUFMLEVBQUEsNEJBQ0FNLG1CQUFBTixFQUFBLGtDQUNBTyxlQUFBUCxF
QUFBLDhCQUNBUSxjQUFBUixFQUFBLCtCQU1BRSxLQUtBbDBCLElBS0FocEQsR0FBQUosWUFDQW9w
RCxFQUFBbHBELFNBQUFDLGNBQUEsT0FBQWlwRCxNQU1BLGtCQUFBbnBELGdCQUNBczlFLEdBQUFF
LGFBQUFJLGdCQUNBTixHQUFBRyxtQkFBQUcsZ0JBQ0FOLEdBQUFJLGVBQUFFLFdBSUEsbUJBQUE1
OUUsZUFDQXM5RSxHQUFBSyxjQUFBRSxZQTRCQXZsRixFQUFBRCxRQUFBd2UsR3RMaTFwQk0sU0FB
U3ZlLEVBQVFELEVBQVNILEd1TDE2cEJoQyxZQVVBLFNBQUFnOUIsR0FBQTVxQixHQUNBLFVBQUFt
VixFQUFBblYsR0FBQSxJQVRBLEdBQUFtVixHQUFBdm5CLEVBQUEsR0FZQUksR0FBQUQsUUFBQTY4
QixHdkwwN3BCTSxTQUFTNThCLEVBQVFELEVBQVNILEd3THg4cEJoQyxZQUVBLElBQUF3akMsR0FB
QXhqQyxFQUFBLEdBRUFJLEdBQUFELFFBQUFxakMsRUFBQWdDLDRCeEx3OXBCTSxTQUFTcGxDLEVB
QVFELEVBQVNILEd5THQrcEJoQyxZQWlCQSxTQUFBbW9CLEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFD
LFdBQUFELEdBQXVDRSxRQUFBRixHQUU3RSxRQUFBNlQsR0FBQUMsRUFBQUMsR0FBaUQsS0FBQUQs
WUFBQUMsSUFBMEMsU0FBQWo1QixXQUFBLHFDQUUzRixRQUFBNG9DLEdBQUFsMEIsRUFBQXJYLEdB
QWlELElBQUFxWCxFQUFhLFNBQUFtMEIsZ0JBQUEsNERBQXlGLFFBQUF4ckMsR0FBQSxnQkFBQUEs
SUFBQSxrQkFBQUEsR0FBQXFYLEVBQUFyWCxFQUV2SixRQUFBeXJDLEdBQUFDLEVBQUFDLEdBQTBD
LHFCQUFBQSxJQUFBLE9BQUFBLEVBQStELFNBQUFocEMsV0FBQSxpRUFBQWdwQyxHQUF1R0QsR0FB
QXByQyxVQUFBRCxPQUFBNitCLE9BQUF5TSxLQUFBcnJDLFdBQXlFdU4sYUFBZWdFLE1BQUE2NUIs
RUFBQXZELFlBQUEsRUFBQXlELFVBQUEsRUFBQXhELGNBQUEsS0FBNkV1RCxJQUFBdHJDLE9BQUF3
ckMsZUFBQXhyQyxPQUFBd3JDLGVBQUFILEVBQUFDLEdBQUFELEVBQUFJLFVBQUFILEdBWXJYLFFB
QUFnRyxLQUNBLEdBQUEwekMsR0FFQTkzQyxFQUFBbnJDLFVBQUFDLE9BQUEsR0FBQVosU0FBQVcs
VUFBQSxHQUFBQSxVQUFBLFdBQ0FrakYsRUFBQWxqRixVQUFBLEdBRUF1ckMsRUFBQTIzQyxHQUFB
LzNDLEVBQUEsZUFFQXFFLEVBQUEsU0FBQWxELEdBU0EsUUFBQWtELEdBQUFyNkIsRUFBQTlMLEdB
Q0Fpd0IsRUFBQTM2QixLQUFBNndDLEVBRUEsSUFBQWpELEdBQUFwRCxFQUFBeHFDLEtBQUEydEMs
RUFBQTF1QyxLQUFBZSxLQUFBd1csRUFBQTlMLEdBR0EsT0FEQWtqQyxHQUFBcEIsR0FBQWgyQixF
QUFBNDBCLE1BQ0F3QyxFQU9BLE1BckJBbEQsR0FBQW1HLEVBQUFsRCxHQUVBa0QsRUFBQXR4QyxV
QUFBNHVDLGdCQUFBLFdBQ0EsR0FBQXJDLEVBRUEsT0FBQUEsTUFBc0JBLEVBQUFVLEdBQUF4c0Ms
S0FBQXdzQyxHQUFBVixFQUFBYyxHQUFBLEtBQUFkLEdBWXRCK0UsRUFBQXR4QyxVQUFBa2tDLE9B
QUEsV0FDQSxNQUFBaU0sR0FBQXQ2QixTQUFBRyxLQUFBdlYsS0FBQXdXLE1BQUEzUixXQUdBZ3ND
LEdBQ0duQixFQUFBbDZCLFVBZ0JILE9BTkFxN0IsR0FBQTlnQixXQUNBcWIsTUFBQTJCLEVBQUFD
LFdBQUF1RSxXQUNBMXNDLFNBQUF3c0MsRUFBQXJxQixRQUFBdlEsUUFBQTg2QixZQUVBVixFQUFB
M0QsbUJBQUFvM0MsS0FBMERBLEVBQUE5M0MsR0FBQU8sRUFBQUMsV0FBQXVFLFdBQUEreUMsRUFB
QTEzQyxHQUFBRyxFQUFBRSxrQkFBQXEzQyxHQUUxRHp6QyxFQWhGQWh5QyxFQUFBa29CLFlBQUEs
RUFDQWxvQixFQUFBK3hDLGdCQUVBLElBQUFsQixHQUFBaHhDLEVBQUEsSUFFQTB5QyxFQUFBMXlD
LEVBQUEsSUFFQTJ5QyxFQUFBeHFCLEVBQUF1cUIsR0FFQXJFLEVBQUFydUMsRUFBQSxJQUVBc3BC
LEVBQUF0cEIsRUFBQSxHQUVBbW9CLEdBQUFtQixFQXNFQW5wQixHQUFBbW9CLFFBQUE0cEIsS3pM
NCtwQk0sU0FBUzl4QyxFQUFRRCxFQUFTSCxHMExqa3FCaEMsWUFnQ0EsU0FBQW1vQixHQUFBQyxH
QUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FFN0UsUUFBQWtrQixHQUFBbGtC
LEVBQUFsa0IsR0FBOEMsR0FBQUssS0FBaUIsUUFBQTVELEtBQUF5bkIsR0FBcUJsa0IsRUFBQStv
QixRQUFBdHNCLElBQUEsR0FBb0NDLE9BQUFDLFVBQUFDLGVBQUFQLEtBQUE2bkIsRUFBQXpuQixL
QUE2RDRELEVBQUE1RCxHQUFBeW5CLEVBQUF6bkIsR0FBc0IsT0FBQTRELEdBbUIzTSxRQUFBd2lC
LEdBQUFwZSxFQUFBbTlFLEVBQUExakYsR0FDQSxPQUFBekIsR0FBQW1sRixFQUFBbGpGLE9BQUEs
RUFBb0NqQyxHQUFBLEVBQVFBLElBQUEsQ0FDNUMsR0FBQW1uRCxHQUFBZytCLEVBQUFubEYsR0FB
QWdJLEVBQ0EsSUFBQW0vQyxFQUFBLE1BQUFBLEdBR0EsZ0JBQUF6WCxFQUFBN1IsR0FDQSxTQUFB
djhCLE9BQUEsK0JBQUEwRyxHQUFBLFFBQUF2RyxFQUFBLHVDQUFBbzhCLEVBQUFxUSxxQkFBQSxN
QUlBLFFBQUFrM0MsR0FBQTVrRixFQUFBQyxHQUNBLE1BQUFELEtBQUFDLEVBS0EsUUFBQTRrRixL
QUNBLEdBQUE1NEMsR0FBQXpxQyxVQUFBQyxPQUFBLEdBQUFaLFNBQUFXLFVBQUEsR0FBQUEsVUFB
QSxNQUNBc2pGLEVBQUE3NEMsRUFBQTg0QyxXQUNBQSxFQUFBbGtGLFNBQUFpa0YsRUFBQTF6QyxF
QUFBanFCLFFBQUEyOUQsRUFDQUUsRUFBQS80QyxFQUFBZzVDLHlCQUNBQSxFQUFBcGtGLFNBQUFt
a0YsRUFBQUUsRUFBQS85RCxRQUFBNjlELEVBQ0FHLEVBQUFsNUMsRUFBQW01Qyw0QkFDQUEsRUFB
QXZrRixTQUFBc2tGLEVBQUFFLEVBQUFsK0QsUUFBQWcrRCxFQUNBRyxFQUFBcjVDLEVBQUFzNUMs
b0JBQ0FBLEVBQUExa0YsU0FBQXlrRixFQUFBRSxFQUFBcitELFFBQUFtK0QsRUFDQUcsRUFBQXg1
QyxFQUFBSCxnQkFDQUEsRUFBQWpyQyxTQUFBNGtGLEVBQUFDLEVBQUF2K0QsUUFBQXMrRCxDQUVB
LGlCQUFBRSxFQUFBQyxFQUFBQyxHQUNBLEdBQUF0M0MsR0FBQS9zQyxVQUFBQyxPQUFBLEdBQUFa
LFNBQUFXLFVBQUEsR0FBQUEsVUFBQSxNQUNBc2tGLEVBQUF2M0MsRUFBQXczQyxLQUNBQSxFQUFB
bGxGLFNBQUFpbEYsS0FDQUUsRUFBQXozQyxFQUFBMDNDLGVBQ0FBLEVBQUFwbEYsU0FBQW1sRixF
QUFBcEIsRUFBQW9CLEVBQ0FFLEVBQUEzM0MsRUFBQTQzQyxpQkFDQUEsRUFBQXRsRixTQUFBcWxG
LEVBQUFFLEVBQUFqL0QsUUFBQSsrRCxFQUNBRyxFQUFBOTNDLEVBQUErM0MsbUJBQ0FBLEVBQUF6
bEYsU0FBQXdsRixFQUFBRCxFQUFBai9ELFFBQUFrL0QsRUFDQUUsRUFBQWg0QyxFQUFBaTRDLG9C
QUNBQSxFQUFBM2xGLFNBQUEwbEYsRUFBQUgsRUFBQWovRCxRQUFBby9ELEVBQ0FFLEVBQUF0N0Ms
RUFBQW9ELEdBQUEsd0ZBRUFtNEMsRUFBQTlnRSxFQUFBKy9ELEVBQUFWLEVBQUEsbUJBQ0EwQixF
QUFBL2dFLEVBQUFnZ0UsRUFBQVIsRUFBQSxzQkFDQXdCLEVBQUFoaEUsRUFBQWlnRSxFQUFBTixF
QUFBLGFBRUEsT0FBQVIsR0FBQWo1QyxFQUFBOEIsR0FFQXZCLFdBQUEsVUFHQUYsZUFBQSxTQUFB
bHJDLEdBQ0EsaUJBQUFBLEVBQUEsS0FJQXdyQyx5QkFBQXhQLFFBQUEwb0QsR0FHQWUsc0JBQ0FD
LHlCQUNBQyxpQkFDQWIsT0FDQUUsaUJBQ0FFLG1CQUNBRyxxQkFDQUUsdUJBRUtDLEtBekhMem5G
LEVBQUFrb0IsWUFBQSxDQUVBLElBQUEwbUIsR0FBQW51QyxPQUFBd0MsUUFBQSxTQUFBbUIsR0FB
bUQsT0FBQTVELEdBQUEsRUFBZ0JBLEVBQUFnQyxVQUFBQyxPQUFzQmpDLElBQUEsQ0FBTyxHQUFB
NkQsR0FBQTdCLFVBQUFoQyxFQUEyQixRQUFBa0UsS0FBQUwsR0FBMEI1RCxPQUFBQyxVQUFBQyxl
QUFBUCxLQUFBaUUsRUFBQUssS0FBeUROLEVBQUFNLEdBQUFMLEVBQUFLLElBQWlDLE1BQUFOLEdB
RS9PcEUsR0FBQTZsRixlQUVBLElBQUExekMsR0FBQXR5QyxFQUFBLElBRUF1eUMsRUFBQXBxQixF
QUFBbXFCLEdBRUEwMUMsRUFBQWhvRixFQUFBLEtBRUF1bkYsRUFBQXAvRCxFQUFBNi9ELEdBRUFD
LEVBQUFqb0YsRUFBQSxLQUVBd21GLEVBQUFyK0QsRUFBQTgvRCxHQUVBQyxFQUFBbG9GLEVBQUEs
S0FFQXFtRixFQUFBbCtELEVBQUErL0QsR0FFQUMsRUFBQW5vRixFQUFBLEtBRUEybUYsRUFBQXgr
RCxFQUFBZ2dFLEdBRUFDLEVBQUFwb0YsRUFBQSxLQUVBNm1GLEVBQUExK0QsRUFBQWlnRSxFQWlH
QWpvRixHQUFBbW9CLFFBQUEwOUQsSzFMdWtxQk0sU0FBUzVsRixFQUFRRCxFQUFTSCxHMkx0c3FC
aEMsWUFXQSxTQUFBcW9GLEdBQUF0QixHQUNBLHdCQUFBQSxJQUFBLEVBQUF1QixFQUFBMTJDLG9C
QUFBbTFDLEVBQUEsc0JBQUEva0YsT0FHQSxRQUFBdW1GLEdBQUF4QixHQUNBLE1BQUFBLEdBRUcv
a0YsUUFGSCxFQUFBc21GLEVBQUFqM0Msd0JBQUEsU0FBQWhCLEdBQ0EsT0FBWUEsY0FJWixRQUFB
bTRDLEdBQUF6QixHQUNBLE1BQUFBLElBQUEsZ0JBQUFBLElBQUEsRUFBQXVCLEVBQUFqM0Msd0JB
QUEsU0FBQWhCLEdBQ0EsU0FBQW80QyxFQUFBaGdFLG9CQUFBcytELEVBQUExMkMsS0FDR3J1QyxP
QXRCSDdCLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUFrb0YsbUNBQ0Fsb0YsRUFBQW9vRixrQ0FD
QXBvRixFQUFBcW9GLGdDQUVBLElBQUFDLEdBQUF6b0YsRUFBQSxJQUVBc29GLEVBQUF0b0YsRUFB
QSxHQWtCQUcsR0FBQW1vQixTQUFBKy9ELEVBQUFFLEVBQUFDLEkzTDRzcUJNLFNBQVNwb0YsRUFB
UUQsRUFBU0gsRzRMdnVxQmhDLFlBUUEsU0FBQTBvRixHQUFBNUIsR0FDQSx3QkFBQUEsSUFBQSxF
QUFBd0IsRUFBQTEyQyxvQkFBQWsxQyxFQUFBLG1CQUFBOWtGLE9BR0EsUUFBQTJtRixHQUFBN0Is
R0FDQSxNQUFBQSxHQUVHOWtGLFFBRkgsRUFBQXNtRixFQUFBajNDLHdCQUFBLFdBQ0EsV0FaQWx4
QyxFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFBdW9GLGdDQUNBdm9GLEVBQUF3b0YsOEJBRUEsSUFB
QUwsR0FBQXRvRixFQUFBLEdBWUFHLEdBQUFtb0IsU0FBQW9nRSxFQUFBQyxJNUw2dXFCTSxTQUFT
dm9GLEVBQVFELEVBQVNILEc2TC92cUJoQyxZQWVBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFBQUEs
TUFBQUMsV0FBQUQsR0FBdUNFLFFBQUFGLEdBRTdFLFFBQUF3Z0UsR0FBQUMsRUFBQUMsRUFBQS8y
QyxHQUNBLE1BQUFoRCxNQUFvQmdELEVBQUE4MkMsRUFBQUMsR0FHcEIsUUFBQUMsR0FBQS9CLEdB
Q0EsZ0JBQUEzMkMsRUFBQWpELEdBQ0EsR0FDQTg1QyxJQURBOTVDLEVBQUEzYSxZQUNBMmEsRUFB
QTg1QyxNQUNBUyxFQUFBdjZDLEVBQUF1NkMsb0JBRUFxQixHQUFBLEVBQ0FDLEVBQUEsTUFFQSxp
QkFBQUosRUFBQUMsRUFBQS8yQyxHQUNBLEdBQUFtM0MsR0FBQWxDLEVBQUE2QixFQUFBQyxFQUFB
LzJDLEVBV0EsT0FUQWkzQyxHQUNBOUIsR0FBQVMsRUFBQXVCLEVBQUFELE9BQUFDLElBRUFGLEdB
QUEsRUFDQUMsRUFBQUMsR0FLQUQsSUFLQSxRQUFBRSxHQUFBbkMsR0FDQSx3QkFBQUEsR0FBQStC
LEVBQUEvQixHQUFBaGxGLE9BR0EsUUFBQW9uRixHQUFBcEMsR0FDQSxNQUFBQSxHQUVHaGxGLE9B
RkgsV0FDQSxNQUFBNG1GO0VBbkRBem9GLEVBQUFrb0IsWUFBQSxDQUVBLElBQUEwbUIsR0FBQW51
QyxPQUFBd0MsUUFBQSxTQUFBbUIsR0FBbUQsT0FBQTVELEdBQUEsRUFBZ0JBLEVBQUFnQyxVQUFB
QyxPQUFzQmpDLElBQUEsQ0FBTyxHQUFBNkQsR0FBQTdCLFVBQUFoQyxFQUEyQixRQUFBa0UsS0FB
QUwsR0FBMEI1RCxPQUFBQyxVQUFBQyxlQUFBUCxLQUFBaUUsRUFBQUssS0FBeUROLEVBQUFNLEdB
QUFMLEVBQUFLLElBQWlDLE1BQUFOLEdBRS9PcEUsR0FBQXlvRixvQkFDQXpvRixFQUFBNG9GLHFC
QUNBNW9GLEVBQUFncEYsMkJBQ0FocEYsRUFBQWlwRix5QkFFQSxJQUFBcDNDLEdBQUFoeUMsRUFB
QSxHQUVBbW9CLEdBQUE2cEIsRUE0Q0E3eEMsR0FBQW1vQixTQUFBNmdFLEVBQUFDLEk3THF3cUJN
LFNBQVNocEYsRUFBUUQsRUFBU0gsRzhMOXpxQmhDLFlBV0EsU0FBQW1vQixHQUFBQyxHQUFzQyxN
QUFBQSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FFN0UsUUFBQWtrQixHQUFBbGtCLEVBQUFs
a0IsR0FBOEMsR0FBQUssS0FBaUIsUUFBQTVELEtBQUF5bkIsR0FBcUJsa0IsRUFBQStvQixRQUFB
dHNCLElBQUEsR0FBb0NDLE9BQUFDLFVBQUFDLGVBQUFQLEtBQUE2bkIsRUFBQXpuQixLQUE2RDRE
LEVBQUE1RCxHQUFBeW5CLEVBQUF6bkIsR0FBc0IsT0FBQTRELEdBRTNNLFFBQUE4a0YsR0FBQXZD
LEVBQUFDLEVBQUFDLEVBQUEzMkMsR0FDQSxnQkFBQWxCLEVBQUE0QyxHQUNBLE1BQUFpMUMsR0FB
QUYsRUFBQTMzQyxFQUFBNEMsR0FBQWcxQyxFQUFBMTJDLEVBQUEwQixPQUlBLFFBQUF1M0MsR0FB
QXhDLEVBQUFDLEVBQUFDLEVBQUEzMkMsRUFBQWpELEdBWUEsUUFBQW04QyxHQUFBQyxFQUFBQyxH
QU9BLE1BTkF0NkMsR0FBQXE2QyxFQUNBejNDLEVBQUEwM0MsRUFDQVosRUFBQS9CLEVBQUEzM0Ms
RUFBQTRDLEdBQ0ErMkMsRUFBQS9CLEVBQUExMkMsRUFBQTBCLEdBQ0FrM0MsRUFBQWpDLEVBQUE2
QixFQUFBQyxFQUFBLzJDLEdBQ0EyM0MsR0FBQSxFQUNBVCxFQUdBLFFBQUFVLEtBTUEsTUFMQWQs
R0FBQS9CLEVBQUEzM0MsRUFBQTRDLEdBRUFnMUMsRUFBQXQxQyxvQkFBQXEzQyxFQUFBL0IsRUFB
QTEyQyxFQUFBMEIsSUFFQWszQyxFQUFBakMsRUFBQTZCLEVBQUFDLEVBQUEvMkMsR0FJQSxRQUFB
NjNDLEtBTUEsTUFMQTlDLEdBQUFyMUMsb0JBQUFvM0MsRUFBQS9CLEVBQUEzM0MsRUFBQTRDLElB
RUFnMUMsRUFBQXQxQyxvQkFBQXEzQyxFQUFBL0IsRUFBQTEyQyxFQUFBMEIsSUFFQWszQyxFQUFB
akMsRUFBQTZCLEVBQUFDLEVBQUEvMkMsR0FJQSxRQUFBODNDLEtBQ0EsR0FBQUMsR0FBQWhELEVB
QUEzM0MsRUFBQTRDLEdBQ0FnNEMsR0FBQXRDLEVBQUFxQyxFQUFBakIsRUFLQSxPQUpBQSxHQUFB
aUIsRUFFQUMsSUFBQWQsRUFBQWpDLEVBQUE2QixFQUFBQyxFQUFBLzJDLElBRUFrM0MsRUFHQSxR
QUFBZSxHQUFBcHFCLEVBQUFxcUIsR0FDQSxHQUFBQyxJQUFBNUMsRUFBQTJDLEVBQUFsNEMsR0FD
QW80QyxHQUFBL0MsRUFBQXhuQixFQUFBendCLEVBSUEsT0FIQUEsR0FBQXl3QixFQUNBN3RCLEVB
QUFrNEMsRUFFQUMsR0FBQUMsRUFBQVIsSUFDQU8sRUFBQU4sSUFDQU8sRUFBQU4sSUFDQVosRUEx
REEsR0FBQTdCLEdBQUFoNkMsRUFBQWc2QyxlQUNBRSxFQUFBbDZDLEVBQUFrNkMsaUJBQ0FHLEVB
QUFyNkMsRUFBQXE2QyxtQkFFQWlDLEdBQUEsRUFDQXY2QyxFQUFBLE9BQ0E0QyxFQUFBLE9BQ0E4
MkMsRUFBQSxPQUNBQyxFQUFBLE9BQ0FHLEVBQUEsTUFvREEsaUJBQUFycEIsRUFBQXFxQixHQUNB
LE1BQUFQLEdBQUFNLEVBQUFwcUIsRUFBQXFxQixHQUFBVixFQUFBM3BCLEVBQUFxcUIsSUFXQSxR
QUFBRyxHQUFBLzVDLEVBQUFYLEdBQ0EsR0FBQW00QyxHQUFBbjRDLEVBQUFtNEMsb0JBQ0FDLEVB
QUFwNEMsRUFBQW80Qyx1QkFDQUMsRUFBQXI0QyxFQUFBcTRDLGVBQ0F2cEQsRUFBQThOLEVBQUFv
RCxHQUFBLGtFQUVBbzNDLEVBQUFlLEVBQUF4M0MsRUFBQTdSLEdBQ0F1b0QsRUFBQWUsRUFBQXoz
QyxFQUFBN1IsR0FDQXdvRCxFQUFBZSxFQUFBMTNDLEVBQUE3UixHQU1BeU8sRUFBQXpPLEVBQUEw
b0QsS0FBQW9DLEVBQUFELENBRUEsT0FBQXA4QyxHQUFBNjVDLEVBQUFDLEVBQUFDLEVBQUEzMkMs
RUFBQTdSLEdBN0dBcitCLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUFrcEYsa0NBQ0FscEYsRUFB
QW1wRixnQ0FDQW5wRixFQUFBbW9CLFFBQUE4aEUsQ0FFQSxJQUFBQyxHQUFBcnFGLEVBQUEsSUFF
QW1vQixHQUFBa2lFLEk5TDI2cUJNLFNBQVNqcUYsRUFBUUQsRUFBU0gsRytMcDdxQmhDLFlBU0Es
U0FBQW1vQixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FFN0Us
UUFBQWtpRSxHQUFBMzlDLEVBQUFhLEVBQUEvYSxHQUNBLElBQUFrYSxFQUNBLFNBQUExcUMsT0FB
QSx3QkFBQXVyQyxFQUFBLE9BQUEvYSxFQUFBLElBQ0cscUJBQUErYSxHQUFBLHVCQUFBQSxHQUNI
YixFQUFBN3JDLGVBQUEsdUJBQ0EsRUFBQW15QyxFQUFBM3FCLFNBQUEsb0JBQUFrbEIsRUFBQSxP
QUFBL2EsRUFBQSxtREFLQSxRQUFBODNELEdBQUF6RCxFQUFBQyxFQUFBQyxFQUFBdjBELEdBQ0E2
M0QsRUFBQXhELEVBQUEsa0JBQUFyMEQsR0FDQTYzRCxFQUFBdkQsRUFBQSxxQkFBQXQwRCxHQUNB
NjNELEVBQUF0RCxFQUFBLGFBQUF2MEQsR0F0QkF0eUIsRUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFB
QW1vQixRQUFBaWlFLENBRUEsSUFBQWpoRSxHQUFBdHBCLEVBQUEsSUFFQWl6QyxFQUFBOXFCLEVB
QUFtQixJL0w0OHFCTSxTQUFTbHBCLEVBQVFELEdnTW45cUJ2QixZQUlBLFNBQUE4N0IsR0FBQUMs
RUFBQUMsR0FBaUQsS0FBQUQsWUFBQUMsSUFBMEMsU0FBQWo1QixXQUFBLHFDQVczRixRQUFBc25G
LEtBR0EsR0FBQXQ2RSxNQUNBazNCLElBRUEsUUFDQXFqRCxNQUFBLFdBQ0FyakQsRUFBQXNqRCxF
QUNBeDZFLEVBQUF3NkUsR0FFQUMsT0FBQSxXQUVBLE9BREExckQsR0FBQS91QixFQUFBazNCLEVB
Q0F6bUMsRUFBQSxFQUFxQkEsRUFBQXMrQixFQUFBcjhCLE9BQXNCakMsSUFDM0NzK0IsRUFBQXQr
QixNQUdBMGMsSUFBQSxXQUNBLE1BQUErcEIsSUFFQTBMLFVBQUEsU0FBQXg0QixHQUNBLEdBQUF1
MkIsSUFBQSxDQUlBLE9BSEF6SixLQUFBbDNCLElBQUFrM0IsRUFBQWwzQixFQUFBalAsU0FDQW1t
QyxFQUFBcmdDLEtBQUF1VCxHQUVBLFdBQ0F1MkIsR0FBQTNnQyxJQUFBdzZFLElBQ0E3NUMsR0FB
QSxFQUVBekosSUFBQWwzQixJQUFBazNCLEVBQUFsM0IsRUFBQWpQLFNBQ0FtbUMsRUFBQTM2QixP
QUFBMjZCLEVBQUFuYSxRQUFBM1MsR0FBQSxPQTNDQW5hLEVBQUFrb0IsWUFBQSxDQVFBLElBQUFx
aUUsR0FBQSxLQUNBRSxHQUNBRCxPQUFBLGNBdUNBRSxFQUFBLFdBQ0EsUUFBQUEsR0FBQW4rQyxF
QUFBNEQsRUFBQUUsR0FDQXZVLEVBQUEzNkIsS0FBQXVwRixHQUVBdnBGLEtBQUFvckMsUUFDQXBy
QyxLQUFBZ3ZDLFlBQ0FodkMsS0FBQWt2QyxnQkFDQWx2QyxLQUFBbStDLFlBQUEsS0FDQW4rQyxL
QUFBMjlCLFVBQUEyckQsRUFpQ0EsTUE5QkFDLEdBQUFocUYsVUFBQWlxRixhQUFBLFNBQUF4d0Us
R0FFQSxNQURBaFosTUFBQXV1QyxlQUNBdnVDLEtBQUEyOUIsVUFBQTZULFVBQUF4NEIsSUFHQXV3
RSxFQUFBaHFGLFVBQUFxdkMsaUJBQUEsV0FDQTV1QyxLQUFBMjlCLFVBQUEwckQsVUFHQUUsRUFB
QWhxRixVQUFBZ3dDLGFBQUEsV0FDQSxNQUFBelMsU0FBQTk4QixLQUFBbStDLGNBR0FvckMsRUFB
QWhxRixVQUFBZ3ZDLGFBQUEsV0FDQXZ1QyxLQUFBbStDLGNBQ0FuK0MsS0FBQW0rQyxZQUFBbitD
LEtBQUFndkMsVUFBQWh2QyxLQUFBZ3ZDLFVBQUF3NkMsYUFBQXhwRixLQUFBa3ZDLGVBQUFsdkMs
S0FBQW9yQyxNQUFBb0csVUFBQXh4QyxLQUFBa3ZDLGVBRUFsdkMsS0FBQTI5QixVQUFBdXJELE1B
SUFLLEVBQUFocUYsVUFBQW92QyxlQUFBLFdBQ0EzdUMsS0FBQW0rQyxjQUNBbitDLEtBQUFtK0Ms
Y0FDQW4rQyxLQUFBbStDLFlBQUEsS0FDQW4rQyxLQUFBMjlCLFVBQUF3ckQsUUFDQW5wRixLQUFB
MjlCLFVBQUEyckQsSUFJQUMsSUFHQTFxRixHQUFBbW9CLFFBQUF1aUUsR2hNeTlxQk0sU0FBU3px
RixFQUFRRCxHaU14anJCdkIsWUFNQSxTQUFBMnBCLEdBQUFDLEVBQUFDLEdBQ0EsTUFBQUQsS0FB
QUMsRUFDQSxJQUFBRCxHQUFBLElBQUFDLEdBQUEsRUFBQUQsSUFBQSxFQUFBQyxFQUVBRCxPQUFB
QyxNQUlBLFFBQUFDLEdBQUFDLEVBQUFDLEdBQ0EsR0FBQUwsRUFBQUksRUFBQUMsR0FBQSxRQUVB
LG9CQUFBRCxJQUFBLE9BQUFBLEdBQUEsZ0JBQUFDLElBQUEsT0FBQUEsRUFDQSxRQUdBLElBQUFD
LEdBQUF4cEIsT0FBQXNELEtBQUFnbUIsR0FDQUcsRUFBQXpwQixPQUFBc0QsS0FBQWltQixFQUVB
LElBQUFDLEVBQUF4bkIsU0FBQXluQixFQUFBem5CLE9BQUEsUUFFQSxRQUFBakMsR0FBQSxFQUFp
QkEsRUFBQXlwQixFQUFBeG5CLE9BQWtCakMsSUFDbkMsSUFBQWtwQixFQUFBdHBCLEtBQUE0cEIs
RUFBQUMsRUFBQXpwQixNQUFBbXBCLEVBQUFJLEVBQUFFLEVBQUF6cEIsSUFBQXdwQixFQUFBQyxF
QUFBenBCLEtBQ0EsUUFJQSxVQTlCQVIsRUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFBQW1vQixRQUFB
MkIsQ0FDQSxJQUFBSixHQUFBanBCLE9BQUFDLFVBQUFDLGdCak0ybHJCTSxTQUFTVixFQUFRRCxF
QUFTSCxHa01wbHJCaEMsbUJBQUFxNEMsV0FJQXI0QyxFQUFBLEtBQUErcUYsU0FDQWpqRixPQUFB
dXdDLFFBQUFyNEMsRUFBQSxNQUlBQSxFQUFBLEtBSUFZLE9BQUF3QyxPQUFBcEQsRUFBQSxNbE1z
bXJCTSxTQUFTSSxFQUFRRCxJbU05bnJCdkIsU0FBQXNuRCxHQUFBLFlBYUEsU0FBQXVqQyxHQUFB
QyxHQUNBMzlFLEVBQUExSyxTQUNBc29GLElBQ0FDLEdBQUEsR0FHQTc5RSxJQUFBMUssUUFBQXFv
RixFQTBCQSxRQUFBRyxLQUNBLEtBQUFqa0UsRUFBQTdaLEVBQUExSyxRQUFBLENBQ0EsR0FBQXlv
RixHQUFBbGtFLENBVUEsSUFQQUEsR0FBQSxFQUNBN1osRUFBQSs5RSxHQUFBOXFGLE9BTUE0bUIs
RUFBQW1rRSxFQUFBLENBR0EsT0FBQUMsR0FBQSxFQUFBQyxFQUFBbCtFLEVBQUExSyxPQUFBdWtC
LEVBQWdFb2tFLEVBQUFDLEVBQWtCRCxJQUNsRmorRSxFQUFBaStFLEdBQUFqK0UsRUFBQWkrRSxF
QUFBcGtFLEVBRUE3WixHQUFBMUssUUFBQXVrQixFQUNBQSxFQUFBLEdBR0E3WixFQUFBMUssT0FB
QSxFQUNBdWtCLEVBQUEsRUFDQWdrRSxHQUFBLEVBc0VBLFFBQUFNLEdBQUExaEYsR0FDQSxHQUFB
MmhGLEdBQUEsRUFDQW5zQyxFQUFBLEdBQUFvc0MsR0FBQTVoRixHQUNBaEYsRUFBQWdELFNBQUFn
a0IsZUFBQSxHQUVBLE9BREF3ekIsR0FBQXFzQyxRQUFBN21GLEdBQTRCOG1GLGVBQUEsSUFDNUIs
V0FDQUgsS0FDQTNtRixFQUFBaWpCLEtBQUEwakUsR0E0Q0EsUUFBQUksR0FBQS9oRixHQUNBLGtC
QVdBLFFBQUFnaUYsS0FHQTcxQyxhQUFBODFDLEdBQ0FDLGNBQUFDLEdBQ0FuaUYsSUFYQSxHQUFB
aWlGLEdBQUFsMkMsV0FBQWkyQyxFQUFBLEdBSUFHLEVBQUFDLFlBQUFKLEVBQUEsS0E1TEEzckYs
RUFBQUQsUUFBQTZxRixDQVVBLElBT0FFLEdBUEE1OUUsS0FHQTY5RSxHQUFBLEVBUUFoa0UsRUFB
QSxFQUlBbWtFLEVBQUEsS0E2Q0FsK0UsRUFBQSxtQkFBQXE2QyxLQUFBN3ZDLEtBQ0ErekUsRUFB
QXYrRSxFQUFBZy9FLGtCQUFBaC9FLEVBQUFpL0Usc0JBY0FuQixHQURBLGtCQUFBUyxHQUNBRixF
QUFBTCxHQThCQVUsRUFBQVYsR0FRQUosRUFBQUUsZUFnRkFGLEVBQUFjLDZCbk15b3JCOEJ2ckYs
S0FBS0osRUFBVSxXQUFhLE1BQU9tQixXQUkzRCxTQUFTbEIsRUFBUUQsRUFBU0gsR0FFL0IsWUFX
QSxTQUFTc3NGLEdBQXdCbGtFLEdBQU8sR0FBSUEsR0FBT0EsRUFBSUMsV0FBYyxNQUFPRCxFQUFj
LElBQUlta0UsS0FBYSxJQUFXLE1BQVBua0UsRUFBZSxJQUFLLEdBQUl2akIsS0FBT3VqQixHQUFX
eG5CLE9BQU9DLFVBQVVDLGVBQWVQLEtBQUs2bkIsRUFBS3ZqQixLQUFNMG5GLEVBQU8xbkYsR0FB
T3VqQixFQUFJdmpCLEdBQWdDLE9BQXRCMG5GLEdBQU9qa0UsUUFBVUYsRUFBWW1rRSxFQVRsUTNy
RixPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9BQU8sSUFFVGpTLEVBQVFxc0YsZUFBaUJy
c0YsRUFBUXNzRixZQUFjdHNGLEVBQVF1c0YsYUFBZXZzRixFQUFRd3NGLFNBQVd4c0YsRUFBUXlz
RixXQUFhenNGLEVBQVEwc0YsUUFBVTdxRixNb00zMnJCakksSUFBQThxRixHQUFBOXNGLEVBQUEs
SUFBWStzRixFcE0rMnJCQ1QsRUFBd0JRLEVvTTcyckJ4QkQsV0FBVSxTQUFBcDhFLEdBQUEsT0FB
V3hGLEtBQU04aEYsRUFBTS8zQyxTQUFVdmtDLFNBQzNDbThFLGFBQWEsU0FBQXZzRixHQUFBLE9B
QVM0SyxLQUFNOGhGLEVBQU05M0MsWUFBYTUwQyxPQUMvQ3NzRixXQUFXLFNBQUN0c0YsRUFBSW9R
LEdBQUwsT0FBaUJ4RixLQUFNOGhGLEVBQU03M0MsVUFBVzcwQyxLQUFJb1EsU0FDdkRpOEUsZUFB
ZSxTQUFBcnNGLEdBQUEsT0FBUzRLLEtBQU04aEYsRUFBTTUzQyxjQUFlOTBDLE9BQ25Eb3NGLGNB
QWMsa0JBQVN4aEYsS0FBTThoRixFQUFNMzNDLGVBQ25DbzNDLGlCQUFpQixrQkFBU3ZoRixLQUFN
OGhGLEVBQU0xM0MsbUJwTWk0ckI3QyxTQUFTajFDLEVBQVFELEVBQVNILEdBRS9CLFlBb0JBLFNB
QVNtb0IsR0FBdUJDLEdBQU8sTUFBT0EsSUFBT0EsRUFBSUMsV0FBYUQsR0FBUUUsUUFBU0YsR0FF
dkYsUUFBUzZULEdBQWdCQyxFQUFVQyxHQUFlLEtBQU1ELFlBQW9CQyxJQUFnQixLQUFNLElBQUlq
NUIsV0FBVSxxQ0FFaEgsUUFBUzRvQyxHQUEyQmwwQixFQUFNclgsR0FBUSxJQUFLcVgsRUFBUSxL
QUFNLElBQUltMEIsZ0JBQWUsNERBQWdFLFFBQU94ckMsR0FBeUIsZ0JBQVRBLElBQXFDLGtCQUFU
QSxHQUE4QnFYLEVBQVByWCxFQUVsTyxRQUFTeXJDLEdBQVVDLEVBQVVDLEdBQWMsR0FBMEIsa0JB
QWZBLElBQTRDLE9BQWZBLEVBQXVCLEtBQU0sSUFBSWhwQyxXQUFVLGlFQUFvRWdwQyxHQUFlRCxH
QUFTcHJDLFVBQVlELE9BQU82K0IsT0FBT3lNLEdBQWNBLEVBQVdyckMsV0FBYXVOLGFBQWVnRSxN
QUFPNjVCLEVBQVV2RCxZQUFZLEVBQU95RCxVQUFVLEVBQU14RCxjQUFjLEtBQWV1RCxJQUFZdHJD
LE9BQU93ckMsZUFBaUJ4ckMsT0FBT3dyQyxlQUFlSCxFQUFVQyxHQUFjRCxFQUFTSSxVQUFZSCxH
QUVqZSxRQUFTOGdELEdBQWdCNWtFLEVBQUt2akIsRUFBS3VOLEdBQWlLLE1BQXBKdk4sS0FBT3Vq
QixHQUFPeG5CLE9BQU82bkMsZUFBZXJnQixFQUFLdmpCLEdBQU91TixNQUFPQSxFQUFPczJCLFlB
QVksRUFBTUMsY0FBYyxFQUFNd0QsVUFBVSxJQUFrQi9qQixFQUFJdmpCLEdBQU91TixFQUFnQmdX
LEVBMUIzTXhuQixPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9BQU8sR0FHVCxJQUVJNjZF
LEdBRkE5NUMsRUFBZSxXQUFjLFFBQVNDLEdBQWlCN3VDLEVBQVF1VCxHQUFTLElBQUssR0FBSW5Y
LEdBQUksRUFBR0EsRUFBSW1YLEVBQU1sVixPQUFRakMsSUFBSyxDQUFFLEdBQUkybkMsR0FBYXh3
QixFQUFNblgsRUFBSTJuQyxHQUFXSSxXQUFhSixFQUFXSSxhQUFjLEVBQU9KLEVBQVdLLGNBQWUs
RUFBVSxTQUFXTCxLQUFZQSxFQUFXNkQsVUFBVyxHQUFNdnJDLE9BQU82bkMsZUFBZWxrQyxFQUFR
K2pDLEVBQVd6akMsSUFBS3lqQyxJQUFpQixNQUFPLFVBQVVuTSxFQUFha1gsRUFBWUMsR0FBaUos
TUFBOUhELElBQVlELEVBQWlCalgsRUFBWXQ3QixVQUFXd3lDLEdBQWlCQyxHQUFhRixFQUFpQmpY
LEVBQWFtWCxHQUFxQm5YLE1xTWg1ckJqaUI2VSxFQUFBaHhDLEVBQUEsSXJNczVyQkt1ekMsRUFB
VXByQixFQUF1QjZvQixHcU1yNXJCdEN3QyxFQUFBeHpDLEVBQUEsSXJNeTVyQkt5ekMsRUFBZXRy
QixFQUF1QnFyQixHcU14NXJCM0MwNUMsRUFBQWx0RixFQUFBLElBRU1tdEYsdUJBQ1EsT0FEUkgs
RUFBQUMsRUFBQUMsRUFBQTEzQyxZQUVXLFVBRlh3M0MsRUFBQUMsRUFBQUMsRUFBQTMzQyxlQUdj
LGFBSGQwM0MsR0FNZUcsRXJNZzZyQlAsU0FBVW4rQyxHQUdyQixRQUFTbStDLEtBR1AsTUFGQW54
RCxHQUFnQjM2QixLQUFNOHJGLEdBRWZ0aEQsRUFBMkJ4cUMsTUFBTzhyRixFQUFPL2dELFdBQWF6
ckMsT0FBT216QyxlQUFlcTVDLElBQVMvckYsTUFBTUMsS0FBTXFCLFlBbUYxRyxNQXhGQXFwQyxH
QUFVb2hELEVBQVFuK0MsR0FRbEJrRSxFQUFhaTZDLElBQ1h2b0YsSUFBSyxrQkFDTHVOLE1BQU8s
V3FNbDZyQlEsR0FDUmk3RSxHQUFnQi9yRixLQUFLd1csTUFBckJ1MUUsWUFDRkMsRUFBMkIsSUFB
aEJELEVBQW9CLE9BQVMsT0FFOUMsT0FDRTk1QyxHQUFBanJCLFFBQUF0Z0IsY0FBQSxRQUFNdXND
LFVBQVUsY0FDZGhCLEVBQUFqckIsUUFBQXRnQixjQUFBLGNBQVNxbEYsR0FBZSxNQUQxQixJQUMw
Q0MsRUFEMUMsWXJNZzdyQkR6b0YsSUFBSyxtQkFDTHVOLE1BQU8sU3FNMzZyQk9naUUsR0FDZixH
QUFNdjlCLEdBQVFzMkMsRUFBYy9ZLEdBRExtWixFQUVvQmpzRixLQUFLd1csTUFBaEMwMUUsRUFG
T0QsRUFFZm5aLE9BQXdCcVosRUFGVEYsRUFFU0UsTUFFaEMsT0FDRWw2QyxHQUFBanJCLFFBQUF0
Z0IsY0FBQSxLQUFHdXNDLFdBQVcsRUFBQWQsRUFBQW5yQixVQUFhbVcsU0FBVTIxQyxJQUFXb1os
SUFDN0N2OEIsT0FBUytoQixPQUFRLFdBQ2pCMGEsUUFBUyxpQkFBTUQsR0FBT3JaLEtBQ3RCdjlC
LE1yTXE3ckJKaHlDLElBQUssb0JBQ0x1TixNQUFPLFdxTWo3ckJVLEdBQUF1N0UsR0FDMkJyc0Ys
S0FBS3dXLE1BQTFDODFFLEVBRFVELEVBQ1ZDLGVBQWdCQyxFQURORixFQUNNRSxnQkFDeEIsSUFB
SUQsRUFBaUIsRUFDbkIsTUFDRXI2QyxHQUFBanJCLFFBQUF0Z0IsY0FBQSxVQUFRdXNDLFVBQVUs
a0JBQ1ZtNUMsUUFBU0csR0FEakIsc0JyTTQ3ckJIaHBGLElBQUssU0FDTHVOLE1BQU8sV3FNcjdy
QkQsR0FBQTA3RSxHQUFBeHNGLElBQ1AsT0FDRWl5QyxHQUFBanJCLFFBQUF0Z0IsY0FBQSxVQUFR
dXNDLFVBQVUsVUFDZmp6QyxLQUFLeXNGLGtCQUNOeDZDLEVBQUFqckIsUUFBQXRnQixjQUFBLE1B
QUl1c0MsVUFBVSxZQUNYMjRDLEVBQUE1M0MsU0FBQTQzQyxFQUFBMTNDLFlBQUEwM0MsRUFBQTMz
QyxnQkFBMEM1eEMsSUFBSSxTQUFBeXdFLEdBQUEsTUFDN0M3Z0MsR0FBQWpyQixRQUFBdGdCLGNB
QUEsTUFBSW5ELElBQUt1dkUsR0FDTjBaLEVBQUtFLGlCQUFpQjVaLE9BSTVCOXlFLEtBQUsyc0Ys
eUJyTWk4ckJKYixHQUNQcDhDLEVBQU9sNkIsVXFNMS9yQldzMkUsR0FDWi83RCxXQUNMdThELGVB
QWdCNThDLEVBQUEvNUIsVUFBVWt6QixPQUFPMEksV0FDakN3NkMsWUFBYXI4QyxFQUFBLzVCLFVB
QVVrekIsT0FBTzBJLFdBQzlCdWhDLE9BQVFwakMsRUFBQS81QixVQUFVNFAsT0FBT2dzQixXQUN6
Qmc3QyxpQkFBa0I3OEMsRUFBQS81QixVQUFVdWEsS0FBS3FoQixXQUNqQzQ2QyxPQUFRejhDLEVB
QUEvNUIsVUFBVXVhLEtBQUtxaEIsWXJNNi9yQjFCMXlDLEVBQVFtb0IsUXFNbmdzQlk4a0UsR3JN
dWdzQmYsU0FBU2h0RixFQUFRRCxFQUFTSCxHQUUvQixZQWdCQSxTQUFTbW9CLEdBQXVCQyxHQUFP
LE1BQU9BLElBQU9BLEVBQUlDLFdBQWFELEdBQVFFLFFBQVNGLEdBRXZGLFFBQVM2VCxHQUFnQkMs
RUFBVUMsR0FBZSxLQUFNRCxZQUFvQkMsSUFBZ0IsS0FBTSxJQUFJajVCLFdBQVUscUNBRWhILFFB
QVM0b0MsR0FBMkJsMEIsRUFBTXJYLEdBQVEsSUFBS3FYLEVBQVEsS0FBTSxJQUFJbTBCLGdCQUFl
LDREQUFnRSxRQUFPeHJDLEdBQXlCLGdCQUFUQSxJQUFxQyxrQkFBVEEsR0FBOEJxWCxFQUFQclgs
RUFFbE8sUUFBU3lyQyxHQUFVQyxFQUFVQyxHQUFjLEdBQTBCLGtCQUFmQSxJQUE0QyxPQUFmQSxF
QUF1QixLQUFNLElBQUlocEMsV0FBVSxpRUFBb0VncEMsR0FBZUQsR0FBU3ByQyxVQUFZRCxPQUFP
NitCLE9BQU95TSxHQUFjQSxFQUFXcnJDLFdBQWF1TixhQUFlZ0UsTUFBTzY1QixFQUFVdkQsWUFB
WSxFQUFPeUQsVUFBVSxFQUFNeEQsY0FBYyxLQUFldUQsSUFBWXRyQyxPQUFPd3JDLGVBQWlCeHJD
LE9BQU93ckMsZUFBZUgsRUFBVUMsR0FBY0QsRUFBU0ksVUFBWUgsR0FwQmpldHJDLE9BQU82bkMs
ZUFBZXRvQyxFQUFTLGNBQzdCaVMsT0FBTyxHQUdULElBQUkrZ0MsR0FBZSxXQUFjLFFBQVNDLEdB
QWlCN3VDLEVBQVF1VCxHQUFTLElBQUssR0FBSW5YLEdBQUksRUFBR0EsRUFBSW1YLEVBQU1sVixP
QUFRakMsSUFBSyxDQUFFLEdBQUkybkMsR0FBYXh3QixFQUFNblgsRUFBSTJuQyxHQUFXSSxXQUFh
SixFQUFXSSxhQUFjLEVBQU9KLEVBQVdLLGNBQWUsRUFBVSxTQUFXTCxLQUFZQSxFQUFXNkQsVUFB
VyxHQUFNdnJDLE9BQU82bkMsZUFBZWxrQyxFQUFRK2pDLEVBQVd6akMsSUFBS3lqQyxJQUFpQixN
QUFPLFVBQVVuTSxFQUFha1gsRUFBWUMsR0FBaUosTUFBOUhELElBQVlELEVBQWlCalgsRUFBWXQ3
QixVQUFXd3lDLEdBQWlCQyxHQUFhRixFQUFpQmpYLEVBQWFtWCxHQUFxQm5YLE1zTXpoc0JqaUI2
VSxFQUFBaHhDLEVBQUEsSXRNNmhzQkt1ekMsRUFBVXByQixFQUF1QjZvQixHc001aHNCdENrOUMs
RUFBQWx1RixFQUFBLEl0TWdpc0JLbXVGLEVBQWtCaG1FLEVBQXVCK2xFLEdzTTloc0J6QkUsRXRN
d2lzQlAsU0FBVW4vQyxHQUdyQixRQUFTbS9DLEtBQ1AsR0FBSWhoRCxHQUVBdUcsRUFBT3pFLEVB
QU8wRSxDQUVsQjNYLEdBQWdCMzZCLEtBQU04c0YsRUFFdEIsS0FBSyxHQUFJdjZDLEdBQU9seEMs
VUFBVUMsT0FBUTVCLEVBQU9vWCxNQUFNeTdCLEdBQU9DLEVBQU8sRUFBR0EsRUFBT0QsRUFBTUMs
SUFDM0U5eUMsRUFBSzh5QyxHQUFRbnhDLFVBQVVteEMsRUFHekIsT0FBZUgsR0FBU3pFLEVBQVFw
RCxFQUEyQnhxQyxNQUFPOHJDLEVBQU9naEQsRUFBTy9oRCxXQUFhenJDLE9BQU9tekMsZUFBZXE2
QyxJQUFTN3RGLEtBQUtjLE1BQU0rckMsR0FBTzlyQyxNQUFNQyxPQUFPUCxLQUFpQmt1QyxFc01q
anNCL0ttL0MsV0FBYSxTQUFBNTlFLEdBQ1MsSUFBaEJBLEVBQUs3TixRQUNQc3NDLEVBQUtwM0Is
TUFBTSswRSxRQUFRcDhFLEl0TStpc0JibWpDLEVBSUpELEVBQVE3SCxFQUEyQm9ELEVBQU8wRSxH
QXFCL0MsTUF0Q0E1SCxHQUFVb2lELEVBQVFuL0MsR0FvQmxCa0UsRUFBYWk3QyxJQUNYdnBGLElB
QUssU0FDTHVOLE1BQU8sV3NNbmpzQlIsTUFDRW1oQyxHQUFBanJCLFFBQUF0Z0IsY0FBQSxVQUFR
dXNDLFVBQVUsVUFDaEJoQixFQUFBanJCLFFBQUF0Z0IsY0FBQSxtQkFDQXVyQyxFQUFBanJCLFFB
QUF0Z0IsY0FBQW1tRixFQUFBN2xFLFNBQWU4ckIsU0FBQSxFQUNBRCxPQUFRN3lDLEtBQUsrc0Ys
V0FDYjE1QyxZQUFZLGdDdE04anNCekJ5NUMsR0FDUHA5QyxFQUFPbDZCLFVzTWhsc0JXczNFLEdB
Q1ovOEQsV0FDTHc3RCxRQUFTNzdDLEVBQUEvNUIsVUFBVXVhLEtBQUtxaEIsWXRNbWxzQjNCMXlD
LEVBQVFtb0IsUXNNcmxzQlk4bEUsR3RNeWxzQmYsU0FBU2h1RixFQUFRRCxFQUFTSCxHQUUvQixZ
QTBCQSxTQUFTbW9CLEdBQXVCQyxHQUFPLE1BQU9BLElBQU9BLEVBQUlDLFdBQWFELEdBQVFFLFFB
QVNGLEdBRXZGLFFBQVM2VCxHQUFnQkMsRUFBVUMsR0FBZSxLQUFNRCxZQUFvQkMsSUFBZ0IsS0FB
TSxJQUFJajVCLFdBQVUscUNBRWhILFFBQVM0b0MsR0FBMkJsMEIsRUFBTXJYLEdBQVEsSUFBS3FY
LEVBQVEsS0FBTSxJQUFJbTBCLGdCQUFlLDREQUFnRSxRQUFPeHJDLEdBQXlCLGdCQUFUQSxJQUFx
QyxrQkFBVEEsR0FBOEJxWCxFQUFQclgsRUFFbE8sUUFBU3lyQyxHQUFVQyxFQUFVQyxHQUFjLEdB
QTBCLGtCQUFmQSxJQUE0QyxPQUFmQSxFQUF1QixLQUFNLElBQUlocEMsV0FBVSxpRUFBb0VncEMs
R0FBZUQsR0FBU3ByQyxVQUFZRCxPQUFPNitCLE9BQU95TSxHQUFjQSxFQUFXcnJDLFdBQWF1Tixh
QUFlZ0UsTUFBTzY1QixFQUFVdkQsWUFBWSxFQUFPeUQsVUFBVSxFQUFNeEQsY0FBYyxLQUFldUQs
SUFBWXRyQyxPQUFPd3JDLGVBQWlCeHJDLE9BQU93ckMsZUFBZUgsRUFBVUMsR0FBY0QsRUFBU0ks
VUFBWUgsR0FFamUsUUFBUzhnRCxHQUFnQjVrRSxFQUFLdmpCLEVBQUt1TixHQUFpSyxNQUFwSnZO
LEtBQU91akIsR0FBT3huQixPQUFPNm5DLGVBQWVyZ0IsRUFBS3ZqQixHQUFPdU4sTUFBT0EsRUFB
T3MyQixZQUFZLEVBQU1DLGNBQWMsRUFBTXdELFVBQVUsSUFBa0IvakIsRUFBSXZqQixHQUFPdU4s
RUFBZ0JnVyxFQWhDM014bkIsT0FBTzZuQyxlQUFldG9DLEVBQVMsY0FDN0JpUyxPQUFPLEdBR1Qs
SUFJSWs4RSxHQUpBdi9DLEVBQVdudUMsT0FBT3dDLFFBQVUsU0FBVW1CLEdBQVUsSUFBSyxHQUFJ
NUQsR0FBSSxFQUFHQSxFQUFJZ0MsVUFBVUMsT0FBUWpDLElBQUssQ0FBRSxHQUFJNkQsR0FBUzdC
LFVBQVVoQyxFQUFJLEtBQUssR0FBSWtFLEtBQU9MLEdBQWM1RCxPQUFPQyxVQUFVQyxlQUFlUCxL
QUFLaUUsRUFBUUssS0FBUU4sRUFBT00sR0FBT0wsRUFBT0ssSUFBWSxNQUFPTixJQUVuUDR1QyxF
QUFlLFdBQWMsUUFBU0MsR0FBaUI3dUMsRUFBUXVULEdBQVMsSUFBSyxHQUFJblgsR0FBSSxFQUFH
QSxFQUFJbVgsRUFBTWxWLE9BQVFqQyxJQUFLLENBQUUsR0FBSTJuQyxHQUFheHdCLEVBQU1uWCxF
QUFJMm5DLEdBQVdJLFdBQWFKLEVBQVdJLGFBQWMsRUFBT0osRUFBV0ssY0FBZSxFQUFVLFNBQVdM
LEtBQVlBLEVBQVc2RCxVQUFXLEdBQU12ckMsT0FBTzZuQyxlQUFlbGtDLEVBQVErakMsRUFBV3pq
QyxJQUFLeWpDLElBQWlCLE1BQU8sVUFBVW5NLEVBQWFrWCxFQUFZQyxHQUFpSixNQUE5SEQsSUFB
WUQsRUFBaUJqWCxFQUFZdDdCLFVBQVd3eUMsR0FBaUJDLEdBQWFGLEVBQWlCalgsRUFBYW1YLEdB
QXFCblgsTXVNdG1zQmppQjZVLEVBQUFoeEMsRUFBQSxJdk00bXNCS3V6QyxFQUFVcHJCLEVBQXVC
Nm9CLEd1TTNtc0J0Q3U5QyxFQUFBdnVGLEVBQUEsS3ZNK21zQkt3dUYsRUFBYXJtRSxFQUF1Qm9t
RSxHdU05bXNCekNFLEVBQUF6dUYsRUFBQSxLdk1rbnNCSzB1RixFQUFXdm1FLEVBQXVCc21FLEd1
TWpuc0J2Q3ZCLEVBQUFsdEYsRUFBQSxJQUVNMnVGLHVCQUNRLGtCQUFNLElBRGQzQixFQUFBc0Is
RUFBQXBCLEVBQUExM0MsWUFFVyxTQUFBbzVDLEdBQUEsT0FBU0EsRUFBS0MsWUFGekI3QixFQUFB
c0IsRUFBQXBCLEVBQUEzM0MsZUFHYyxTQUFBcTVDLEdBQUEsTUFBUUEsR0FBS0MsWUFIM0JQLEdB
TWVRLEV2TStuc0JGLFNBQVU3L0MsR0FHMUIsUUFBUzYvQyxLQUNQLEdBQUkxaEQsR0FFQXVHLEVB
QU96RSxFQUFPMEUsQ0FFbEIzWCxHQUFnQjM2QixLQUFNd3RGLEVBRXRCLEtBQUssR0FBSWo3QyxH
QUFPbHhDLFVBQVVDLE9BQVE1QixFQUFPb1gsTUFBTXk3QixHQUFPQyxFQUFPLEVBQUdBLEVBQU9E
LEVBQU1DLElBQzNFOXlDLEVBQUs4eUMsR0FBUW54QyxVQUFVbXhDLEVBR3pCLE9BQWVILEdBQVN6
RSxFQUFRcEQsRUFBMkJ4cUMsTUFBTzhyQyxFQUFPMGhELEVBQVl6aUQsV0FBYXpyQyxPQUFPbXpD
LGVBQWUrNkMsSUFBY3Z1RixLQUFLYyxNQUFNK3JDLEdBQU85ckMsTUFBTUMsT0FBT1AsS0FBaUJr
dUMsRXVNdm9zQnpMQyxPQUFVaWxDLG1Cdk11b3NCZ09sbEMsRXVNcm9zQjFPNi9DLHFCQUF1QixX
QUNyQjcvQyxFQUFLcDNCLE1BQU1rM0UsUUFBUXhDLGtCdk1zb3NCZnQ5QyxFdU1ub3NCTisvQyxX
QUFhLFNBQUE3YSxHQUNYbGxDLEVBQUt5QixVQUFXeWpDLFl2TWdvc0JSeGdDLEVBSUpELEVBQVE3
SCxFQUEyQm9ELEVBQU8wRSxHQStEL0MsTUFoRkE1SCxHQUFVOGlELEVBQWE3L0MsR0FvQnZCa0Us
RUFBYTI3QyxJQUNYanFGLElBQUssa0JBQ0x1TixNQUFPLFN1TXRvc0JNdzdFLEdBQWdCLEdBQUFM
LEdBQ0hqc0YsS0FBS3dXLE1BQXhCbzNFLEVBRHNCM0IsRUFDdEIyQixNQUFPRixFQURlekIsRUFD
ZnlCLE9BQ2YsSUFBSUUsRUFBTXRzRixPQUFTLEVBQ2pCLE1BQ0Uyd0MsR0FBQWpyQixRQUFBdGdC
LGNBQUEsU0FBT3VzQyxVQUFVLGFBQ1Z0cEMsS0FBSyxXQUNMMGxCLFFBQVNpOUQsSUFBbUJzQixF
QUFNdHNGLE9BQ2xDNnRCLFNBQVV1K0QsRUFBUXZDLGlCdk00b3NCNUI1bkYsSUFBSyxlQUNMdU4s
TUFBTyxTdU14b3NCR3c3RSxHQUFnQixHQUNuQnNCLEdBQVU1dEYsS0FBS3dXLE1BQWZvM0UsTUFD
QTlhLEVBQVc5eUUsS0FBSzZ0QyxNQUFoQmlsQyxPQUNGaVosRUFBYzZCLEVBQU10c0YsT0FBU2dy
RixDQUVuQyxJQUFJc0IsRUFBTXRzRixPQUNSLE1BQ0Uyd0MsR0FBQWpyQixRQUFBdGdCLGNBQUEw
bUYsRUFBQXBtRSxTQUFRc2xFLGVBQWdCQSxFQUNoQlAsWUFBYUEsRUFDYmpaLE9BQVFBLEVBQ1J5
WixpQkFBa0J2c0YsS0FBS3l0RixxQkFBcUJ4MkUsS0FBS2pYLE1BQ2pEbXNGLE9BQVFuc0YsS0FB
SzJ0RixXQUFXMTJFLEtBQUtqWCxXdk00b3NCeEN1RCxJQUFLLFNBQ0x1TixNQUFPLFd1TXhvc0JE
LEdBQUF1N0UsR0FDb0Jyc0YsS0FBS3dXLE1BQXhCbzNFLEVBRER2QixFQUNDdUIsTUFBT0YsRUFE
UnJCLEVBQ1FxQixRQUNQNWEsRUFBVzl5RSxLQUFLNnRDLE1BQWhCaWxDLE9BRUYrYSxFQUFnQkQs
RUFBTTlhLE9BQU91YSxFQUFhdmEsSUFDMUN3WixFQUFpQnNCLEVBQU01d0MsT0FBTyxTQUFDM25D
LEVBQU9pNEUsR0FBUixNQUNsQ0EsR0FBS0MsVUFBWWw0RSxFQUFRLEVBQUlBLEdBQzdCLEVBR0Ys
T0FDRTQ4QixHQUFBanJCLFFBQUF0Z0IsY0FBQSxXQUFTdXNDLFVBQVUsUUFDaEJqekMsS0FBSzh0
RixnQkFBZ0J4QixHQUN0QnI2QyxFQUFBanJCLFFBQUF0Z0IsY0FBQSxNQUFJdXNDLFVBQVUsYUFD
WDQ2QyxFQUFjeHJGLElBQUksU0FBQWlyRixHQUFBLE1BQ2pCcjdDLEdBQUFqckIsUUFBQXRnQixj
QUFBd21GLEVBQUFsbUUsUUFBQXltQixHQUFVbHFDLElBQUsrcEYsRUFBS3Z1RixHQUFJdXVGLEtB
QU1BLEdBQVVJLE9BRzNDMXRGLEtBQUsrdEYsYUFBYXpCLFF2TWtwc0JqQmtCLEdBQ1A5OUMsRUFB
T2w2QixVdU1qdHNCV2c0RSxHQUNaejlELFdBQ0w2OUQsTUFBT2wrQyxFQUFBLzVCLFVBQVV5L0Is
TUFBTTdELFdBQ3ZCbThDLFFBQVNoK0MsRUFBQS81QixVQUFVNkIsT0FBTys1QixZdk1vdHNCN0Ix
eUMsRUFBUW1vQixRdU12dHNCWXdtRSxHdk0ydHNCZixTQUFTMXVGLEVBQVFELEVBQVNILEdBRS9C
LFlBb0JBLFNBQVNtb0IsR0FBdUJDLEdBQU8sTUFBT0EsSUFBT0EsRUFBSUMsV0FBYUQsR0FBUUUs
UUFBU0YsR0FFdkYsUUFBUzZULEdBQWdCQyxFQUFVQyxHQUFlLEtBQU1ELFlBQW9CQyxJQUFnQixL
QUFNLElBQUlqNUIsV0FBVSxxQ0FFaEgsUUFBUzRvQyxHQUEyQmwwQixFQUFNclgsR0FBUSxJQUFL
cVgsRUFBUSxLQUFNLElBQUltMEIsZ0JBQWUsNERBQWdFLFFBQU94ckMsR0FBeUIsZ0JBQVRBLElB
QXFDLGtCQUFUQSxHQUE4QnFYLEVBQVByWCxFQUVsTyxRQUFTeXJDLEdBQVVDLEVBQVVDLEdBQWMs
R0FBMEIsa0JBQWZBLElBQTRDLE9BQWZBLEVBQXVCLEtBQU0sSUFBSWhwQyxXQUFVLGlFQUFvRWdw
QyxHQUFlRCxHQUFTcHJDLFVBQVlELE9BQU82K0IsT0FBT3lNLEdBQWNBLEVBQVdyckMsV0FBYXVO
LGFBQWVnRSxNQUFPNjVCLEVBQVV2RCxZQUFZLEVBQU95RCxVQUFVLEVBQU14RCxjQUFjLEtBQWV1
RCxJQUFZdHJDLE9BQU93ckMsZUFBaUJ4ckMsT0FBT3dyQyxlQUFlSCxFQUFVQyxHQUFjRCxFQUFT
SSxVQUFZSCxHQXhCamV0ckMsT0FBTzZuQyxlQUFldG9DLEVBQVMsY0FDN0JpUyxPQUFPLEdBR1Qs
SUFBSStnQyxHQUFlLFdBQWMsUUFBU0MsR0FBaUI3dUMsRUFBUXVULEdBQVMsSUFBSyxHQUFJblgs
R0FBSSxFQUFHQSxFQUFJbVgsRUFBTWxWLE9BQVFqQyxJQUFLLENBQUUsR0FBSTJuQyxHQUFheHdC
LEVBQU1uWCxFQUFJMm5DLEdBQVdJLFdBQWFKLEVBQVdJLGFBQWMsRUFBT0osRUFBV0ssY0FBZSxF
QUFVLFNBQVdMLEtBQVlBLEVBQVc2RCxVQUFXLEdBQU12ckMsT0FBTzZuQyxlQUFlbGtDLEVBQVEr
akMsRUFBV3pqQyxJQUFLeWpDLElBQWlCLE1BQU8sVUFBVW5NLEVBQWFrWCxFQUFZQyxHQUFpSixN
QUE5SEQsSUFBWUQsRUFBaUJqWCxFQUFZdDdCLFVBQVd3eUMsR0FBaUJDLEdBQWFGLEVBQWlCalgs
RUFBYW1YLEdBQXFCblgsTXdNOXVzQmppQjZVLEVBQUFoeEMsRUFBQSxJeE1rdnNCS3V6QyxFQUFV
cHJCLEVBQXVCNm9CLEd3TWp2c0J0Q3dDLEVBQUF4ekMsRUFBQSxJeE1xdnNCS3l6QyxFQUFldHJC
LEVBQXVCcXJCLEd3TXB2c0IzQzA2QyxFQUFBbHVGLEVBQUEsSXhNd3ZzQkttdUYsRUFBa0JobUUs
RUFBdUIrbEUsR3dNdHZzQnpCb0IsRXhNZ3dzQkwsU0FBVXJnRCxHQUd2QixRQUFTcWdELEtBQ1As
R0FBSWxpRCxHQUVBdUcsRUFBT3pFLEVBQU8wRSxDQUVsQjNYLEdBQWdCMzZCLEtBQU1ndUYsRUFF
dEIsS0FBSyxHQUFJejdDLEdBQU9seEMsVUFBVUMsT0FBUTVCLEVBQU9vWCxNQUFNeTdCLEdBQU9D
LEVBQU8sRUFBR0EsRUFBT0QsRUFBTUMsSUFDM0U5eUMsRUFBSzh5QyxHQUFRbnhDLFVBQVVteEMs
RUFHekIsT0FBZUgsR0FBU3pFLEVBQVFwRCxFQUEyQnhxQyxNQUFPOHJDLEVBQU9raUQsRUFBU2pq
RCxXQUFhenJDLE9BQU9tekMsZUFBZXU3QyxJQUFXL3VGLEtBQUtjLE1BQU0rckMsR0FBTzlyQyxN
QUFNQyxPQUFPUCxLQUFpQmt1QyxFd010d3NCbkxDLE9BQ0VzRixTQUFTLEd4TXV3c0JMdkYsRXdN
cHdzQk5xZ0Qsa0JBQW9CLFdBQ2xCcmdELEVBQUt5QixVQUFXOEQsU0FBUyxLeE1xd3NCckJ2RixF
d01sd3NCTm0vQyxXQUFhLFNBQUNodUYsRUFBSW9RLEdBQ0ksSUFBaEJBLEVBQUs3TixPQUNQc3ND
LEVBQUtwM0IsTUFBTTgwRSxXQUFXdnNGLEdBRXRCNnVDLEVBQUtwM0IsTUFBTTYwRSxTQUFTdHNG
LEVBQUlvUSxHQUUxQnkrQixFQUFLeUIsVUFBVzhELFNBQVMsS3hNd3ZzQmpCYixFQVdKRCxFQUFR
N0gsRUFBMkJvRCxFQUFPMEUsR0FzRC9DLE1BOUVBNUgsR0FBVXNqRCxFQUFVcmdELEdBMkJwQmtF
LEVBQWFtOEMsSUFDWHpxRixJQUFLLFNBQ0x1TixNQUFPLFd3TXJ3c0JELEdBQUEwN0UsR0FBQXhz
RixLQUFBaXNGLEVBQ29DanNGLEtBQUt3VyxNQUF4QzgyRSxFQUREckIsRUFDQ3FCLEtBQU1sQyxF
QURQYSxFQUNPYixhQUFjRSxFQURyQlcsRUFDcUJYLFdBRXhCNzBFLFFBdUJKLE9BckJFQSxHQURF
elcsS0FBSzZ0QyxNQUFNc0YsUUFFWGxCLEVBQUFqckIsUUFBQXRnQixjQUFBbW1GLEVBQUE3bEUs
U0FBZTdYLEtBQU1tK0UsRUFBS24rRSxLQUNYZ2tDLFFBQVNuekMsS0FBSzZ0QyxNQUFNc0YsUUFD
cEJOLE9BQVEsU0FBQzFqQyxHQUFELE1BQVVxOUUsR0FBS08sV0FBV08sRUFBS3Z1RixHQUFJb1Es
TUFJMUQ4aUMsRUFBQWpyQixRQUFBdGdCLGNBQUEsT0FBS3VzQyxVQUFVLFFBQ2JoQixFQUFBanJC
LFFBQUF0Z0IsY0FBQSxTQUFPdXNDLFVBQVUsU0FDVnRwQyxLQUFLLFdBQ0wwbEIsUUFBU2krRCxF
QUFLQyxVQUNkcCtELFNBQVUsaUJBQU1pOEQsR0FBYWtDLEVBQUt2dUYsT0FDekNrekMsRUFBQWpy
QixRQUFBdGdCLGNBQUEsU0FBT3duRixjQUFlbHVGLEtBQUtpdUYsbUJBQ3hCWCxFQUFLbitFLE1B
RVI4aUMsRUFBQWpyQixRQUFBdGdCLGNBQUEsVUFBUXVzQyxVQUFVLFVBQ1ZtNUMsUUFBUyxpQkFB
TWQsR0FBV2dDLEVBQUt2dUYsUUFNM0NrekMsRUFBQWpyQixRQUFBdGdCLGNBQUEsTUFBSXVzQyxX
QUFXLEVBQUFkLEVBQUFuckIsVUFDYnVtRSxVQUFXRCxFQUFLQyxVQUNoQnA2QyxRQUFTbnpDLEtB
QUs2dEMsTUFBTXNGLFdBRW5CMThCLE94TXV4c0JDdTNFLEdBQ1B0K0MsRUFBT2w2QixVd01oMXNC
V3c0RSxHQUNaaitELFdBQ0x1OUQsS0FBTTU5QyxFQUFBLzVCLFVBQVU2QixPQUFPKzVCLFdBQ3ZC
ODVDLFNBQVUzN0MsRUFBQS81QixVQUFVdWEsS0FBS3FoQixXQUN6Qis1QyxXQUFZNTdDLEVBQUEv
NUIsVUFBVXVhLEtBQUtxaEIsV0FDM0I2NUMsYUFBYzE3QyxFQUFBLzVCLFVBQVV1YSxLQUFLcWhC
LFl4TW0xc0JoQzF5QyxFQUFRbW9CLFF3TXgxc0JZZ25FLEd4TTQxc0JmLFNBQVNsdkYsRUFBUUQs
RUFBU0gsR0FFL0IsWUEwQkEsU0FBU3NzRixHQUF3QmxrRSxHQUFPLEdBQUlBLEdBQU9BLEVBQUlD
LFdBQWMsTUFBT0QsRUFBYyxJQUFJbWtFLEtBQWEsSUFBVyxNQUFQbmtFLEVBQWUsSUFBSyxHQUFJ
dmpCLEtBQU91akIsR0FBV3huQixPQUFPQyxVQUFVQyxlQUFlUCxLQUFLNm5CLEVBQUt2akIsS0FB
TTBuRixFQUFPMW5GLEdBQU91akIsRUFBSXZqQixHQUFnQyxPQUF0QjBuRixHQUFPamtFLFFBQVVG
LEVBQVlta0UsRUFFbFEsUUFBU3BrRSxHQUF1QkMsR0FBTyxNQUFPQSxJQUFPQSxFQUFJQyxXQUFh
RCxHQUFRRSxRQUFTRixHQTFCdkZ4bkIsT0FBTzZuQyxlQUFldG9DLEVBQVMsY0FDN0JpUyxPQUFP
LEd5TXIyc0JWLElBQUE0K0IsR0FBQWh4QyxFQUFBLEl6TTAyc0JLdXpDLEVBQVVwckIsRUFBdUI2
b0IsR3lNejJzQnRDeTNDLEVBQUF6b0YsRUFBQSxJQUNBeXZGLEVBQUF6dkYsRUFBQSxJQUNBMHZG
LEVBQUExdkYsRUFBQSxLek0rMnNCSzJ2RixFQUFXeG5FLEVBQXVCdW5FLEd5TTkyc0J2Q0UsRUFB
QTV2RixFQUFBLEt6TWszc0JLNnZGLEVBQWdCMW5FLEVBQXVCeW5FLEd5TWozc0I1Q0UsRUFBQTl2
RixFQUFBLEtBQVkrdkYsRXpNcTNzQk96RCxFQUF3QndELEd5TW4zc0JyQ0UsRUFBTSxTQUFBNWlE
LEdBQUEsR0FBRThoRCxHQUFGOWhELEVBQUU4aEQsTUFBT0YsRUFBVDVoRCxFQUFTNGhELE9BQVQs
T0FDVno3QyxHQUFBanJCLFFBQUF0Z0IsY0FBQSxXQUNFdXJDLEVBQUFqckIsUUFBQXRnQixjQUFB
Mm5GLEVBQUFybkUsU0FBUXVrRSxRQUFTbUMsRUFBUW5DLFVBQ3pCdDVDLEVBQUFqckIsUUFBQXRn
QixjQUFBNm5GLEVBQUF2bkUsU0FBYTRtRSxNQUFPQSxFQUFPRixRQUFTQSxLQUl4Q2dCLEdBQUkz
K0QsV0FDRjY5RCxNQUFPbCtDLEVBQUEvNUIsVUFBVXkvQixNQUFNN0QsV0FDdkJtOEMsUUFBU2gr
QyxFQUFBLzVCLFVBQVU2QixPQUFPKzVCLFdBRzVCLElBQU1pMEMsR0FBa0IsU0FBQTMzQyxHQUFB
LE9BQ3RCKy9DLE1BQU8vL0MsRUFBTSsvQyxRQUdUbkksRUFBcUIsU0FBQTEyQyxHQUFBLE9BQ3ZC
MitDLFNBQVMsRUFBQXZHLEVBQUFoZ0Usb0JBQW1Cc25FLEVBQWExL0MsSXpNbzRzQjVDbHdDLEdB
QVFtb0IsU3lNajRzQk0sRUFBQW1uRSxFQUFBeDlDLFNBQ2I2MEMsRUFDQUMsR0FDQWlKLEl6TWs0
c0JJLFNBQVM1dkYsRUFBUUQsRUFBU0gsR0FFL0IsWUFzQkEsU0FBU21vQixHQUF1QkMsR0FBTyxN
QUFPQSxJQUFPQSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFTRixHME14N3NCeEYsR0FBQTRvQixHQUFB
aHhDLEVBQUEsSTFNczZzQkt1ekMsRUFBVXByQixFQUF1QjZvQixHME1yNnNCdENpL0MsRUFBQWp3
RixFQUFBLEtBQ0F5b0YsRUFBQXpvRixFQUFBLElBQ0F5dkYsRUFBQXp2RixFQUFBLElBQ0Frd0Ys
RUFBQWx3RixFQUFBLEsxTTQ2c0JLbXdGLEVBQVFob0UsRUFBdUIrbkUsRzBNMzZzQnBDRSxFQUFB
cHdGLEVBQUEsSzFNKzZzQktxd0YsRUFBYWxvRSxFQUF1QmlvRSxFME05NnNCekNwd0YsR0FBQSxJ
QUVBLElBQU0wc0MsSUFBUSxFQUFBKzdDLEVBQUE5L0QsYUFBQTBuRSxFQUFBL25FLFVBRWQsRUFB
QTJuRSxFQUFBbHJELFFBQ0V3TyxFQUFBanJCLFFBQUF0Z0IsY0FBQXluRixFQUFBdDlDLFVBQVV6
RixNQUFPQSxHQUNmNkcsRUFBQWpyQixRQUFBdGdCLGNBQUFtb0YsRUFBQTduRSxRQUFBLE9BRUZ2
Z0IsU0FBU3VvRixlQUFlLFUxTXM3c0JwQixTQUFTbHdGLEVBQVFELEVBQVNILEdBRS9CLFlBWUEs
U0FBU21vQixHQUF1QkMsR0FBTyxNQUFPQSxJQUFPQSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFTRixH
QVZ2RnhuQixPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9BQU8sRzJNejhzQlYsSUFBQXEy
RSxHQUFBem9GLEVBQUEsSUFDQXV3RixFQUFBdndGLEVBQUEsSzNNKzhzQkt3d0YsRUFBVXJvRSxF
QUF1Qm9vRSxHMk03OHNCaENFLEdBQWMsRUFBQWhJLEVBQUEvL0Qsa0JBQ2xCd21FLGlCM01vOXNC
RC91RixHQUFRbW9CLFEyTWo5c0JNbW9FLEczTXE5c0JULFNBQVNyd0YsRUFBUUQsRUFBU0gsR0FF
L0IsWUFjQSxTQUFTMHdGLEdBQW1CcnBELEdBQU8sR0FBSWp2QixNQUFNd1IsUUFBUXlkLEdBQU0s
Q0FBRSxJQUFLLEdBQUkxbUMsR0FBSSxFQUFHZ3dGLEVBQU92NEUsTUFBTWl2QixFQUFJemtDLFFB
QVNqQyxFQUFJMG1DLEVBQUl6a0MsT0FBUWpDLElBQU9nd0YsRUFBS2h3RixHQUFLMG1DLEVBQUkx
bUMsRUFBTSxPQUFPZ3dGLEdBQWUsTUFBT3Y0RSxPQUFNM1QsS0FBSzRpQyxHNE14K3NCNUssUUFB
UzZuRCxLQUFvQyxHQUE5Qi8vQyxHQUE4QnhzQyxVQUFBQyxRQUFBLEdBQUFaLFNBQUFXLFVBQUEs
R0FBdEJpL0MsRUFBc0JqL0MsVUFBQSxHQUFSbThDLEVBQVFuOEMsVUFBQSxHQUFBaXhDLEVBQUEs
V0FDMUQsT0FBUWtMLEVBQU83ekMsTUFDYixJQUFBNmhGLEdBQUE5M0MsU0FDRSxPQUFBNDdDLEtB
QUFydkYsT0FBQW12RixFQUNLdmhELEtBRUQ5dUMsR0FBSTh1QyxFQUFNbVAsT0FBTyxTQUFDdXlD
LEVBQU9qQyxHQUFSLE1BQWlCbm5GLE1BQUs0d0QsSUFBSXUyQixFQUFLdnVGLEdBQUl3d0YsUUFB
YyxFQUNsRWhDLFdBQVcsRUFDWHArRSxLQUFNcXVDLEVBQU9ydUMsUUFJbkIsS0FBQXE4RSxHQUFB
NzNDLFlBQ0UsT0FBQTI3QyxFQUFPemhELEVBQU1pbEMsT0FBTyxTQUFBd2EsR0FBQSxNQUNsQkEs
R0FBS3Z1RixLQUFPeStDLEVBQU96K0MsS0FHdkIsS0FBQXlzRixHQUFBNTNDLFVBQ0UsT0FBQTA3
QyxFQUFPemhELEVBQU14ckMsSUFBSSxTQUFBaXJGLEdBQUEsTUFDZkEsR0FBS3Z1RixLQUFPeStD
LEVBQU96K0MsR0FBbkIwdUMsS0FDTzYvQyxHQUFNbitFLEtBQU1xdUMsRUFBT3J1QyxPQUN4Qm0r
RSxJQUdOLEtBQUE5QixHQUFBMzNDLGNBQ0UsT0FBQXk3QyxFQUFPemhELEVBQU14ckMsSUFBSSxT
QUFBaXJGLEdBQUEsTUFDZkEsR0FBS3Z1RixLQUFPeStDLEVBQU96K0MsR0FBbkIwdUMsS0FDTzYv
QyxHQUFNQyxXQUFZRCxFQUFLQyxZQUM1QkQsSUFHTixLQUFBOUIsR0FBQTEzQyxhQUNFLEdBQU0w
N0MsR0FBZTNoRCxFQUFNaWMsTUFBTSxTQUFBd2pDLEdBQUEsTUFBUUEsR0FBS0MsV0FDOUMsUUFB
QStCLEVBQU96aEQsRUFBTXhyQyxJQUFJLFNBQUFpckYsR0FBQSxNQUFBNy9DLE1BQ1o2L0MsR0FD
SEMsV0FBWWlDLE1BR2hCLEtBQUFoRSxHQUFBejNDLGdCQUNFLE9BQUF1N0MsRUFBT3poRCxFQUFN
aWxDLE9BQU8sU0FBQXdhLEdBQUEsTUFBUUEsR0FBS0MsYUFBYyxJQUVqRCxTQUNFLE9BQUErQixF
QUFPemhELE1BMUMrQyxtQ0FBQXlFLEdBQUEsWUFBQW05QyxFQUFBbjlDLElBQUEsTUFBQUEsR0FB
QWc5QyxFNU00OXNCM0Rod0YsT0FBTzZuQyxlQUFldG9DLEVBQVMsY0FDN0JpUyxPQUFPLEdBR1Qs
SUFBSTIrRSxHQUE0QixrQkFBWHQ2RCxTQUFvRCxnQkFBcEJBLFFBQU82VSxTQUF3QixTQUFVbGpC
LEdBQU8sYUFBY0EsSUFBUyxTQUFVQSxHQUFPLE1BQU9BLElBQXlCLGtCQUFYcU8sU0FBeUJyTyxF
QUFJaGEsY0FBZ0Jxb0IsT0FBUyxlQUFrQnJPLElBRXRPMm1CLEVBQVdudUMsT0FBT3dDLFFBQVUs
U0FBVW1CLEdBQVUsSUFBSyxHQUFJNUQsR0FBSSxFQUFHQSxFQUFJZ0MsVUFBVUMsT0FBUWpDLElB
QUssQ0FBRSxHQUFJNkQsR0FBUzdCLFVBQVVoQyxFQUFJLEtBQUssR0FBSWtFLEtBQU9MLEdBQWM1
RCxPQUFPQyxVQUFVQyxlQUFlUCxLQUFLaUUsRUFBUUssS0FBUU4sRUFBT00sR0FBT0wsRUFBT0ss
SUFBWSxNQUFPTixHQUV2UHBFLEdBQVFtb0IsUTRNcCtzQmU0bUUsQ0FKeEIsSUFBQXBDLEdBQUE5
c0YsRUFBQSxJQUVNNGhELE01TW1qdEJBLFNBQVN4aEQsRUFBUUQsS0FNakIsU0FBU0MsRUFBUUQs
RzZNM2p0QnZCLFlBS0EsU0FBQTZDLEdBQUFDLEdBQ0EsVUFBQUEsR0FBQWpCLFNBQUFpQixFQUNB
LFNBQUFDLFdBQUEsd0RBR0EsT0FBQXRDLFFBQUFxQyxHQUdBLFFBQUFFLEtBQ0EsSUFDQSxJQUFB
dkMsT0FBQXdDLE9BQ0EsUUFNQSxJQUFBQyxHQUFBLEdBQUFDLFFBQUEsTUFFQSxJQURBRCxFQUFB
LFFBQ0EsTUFBQXpDLE9BQUEyQyxvQkFBQUYsR0FBQSxHQUNBLFFBS0EsUUFEQUcsTUFDQTdDLEVB
QUEsRUFBaUJBLEVBQUEsR0FBUUEsSUFDekI2QyxFQUFBLElBQUFGLE9BQUFHLGFBQUE5QyxLQUVB
LElBQUErQyxHQUFBOUMsT0FBQTJDLG9CQUFBQyxHQUFBRyxJQUFBLFNBQUFDLEdBQ0EsTUFBQUos
R0FBQUksSUFFQSxtQkFBQUYsRUFBQUcsS0FBQSxJQUNBLFFBSUEsSUFBQUMsS0FJQSxPQUhBLHVC
QUFBQyxNQUFBLElBQUFDLFFBQUEsU0FBQUMsR0FDQUgsRUFBQUcsT0FHQSx5QkFEQXJELE9BQUFz
RCxLQUFBdEQsT0FBQXdDLFVBQWtDVSxJQUFBRCxLQUFBLElBTWhDLE1BQUFqQyxHQUVGLFVBbkRB
LEdBQUFkLEdBQUFGLE9BQUFDLFVBQUFDLGVBQ0F1RCxFQUFBekQsT0FBQUMsVUFBQXlELG9CQXNE
QWxFLEdBQUFELFFBQUFnRCxJQUFBdkMsT0FBQXdDLE9BQUEsU0FBQW1CLEVBQUFDLEdBS0EsT0FK
QUMsR0FFQUMsRUFEQUMsRUFBQTNCLEVBQUF1QixHQUdBSyxFQUFBLEVBQWdCQSxFQUFBakMsVUFB
QUMsT0FBc0JnQyxJQUFBLENBQ3RDSCxFQUFBN0QsT0FBQStCLFVBQUFpQyxHQUVBLFFBQUFDLEtB
QUFKLEdBQ0EzRCxFQUFBUCxLQUFBa0UsRUFBQUksS0FDQUYsRUFBQUUsR0FBQUosRUFBQUksR0FJ
QSxJQUFBakUsT0FBQXdELHNCQUFBLENBQ0FNLEVBQUE5RCxPQUFBd0Qsc0JBQUFLLEVBQ0EsUUFB
QTlELEdBQUEsRUFBa0JBLEVBQUErRCxFQUFBOUIsT0FBb0JqQyxJQUN0QzBELEVBQUE5RCxLQUFB
a0UsRUFBQUMsRUFBQS9ELE1BQ0FnRSxFQUFBRCxFQUFBL0QsSUFBQThELEVBQUFDLEVBQUEvRCxN
QU1BLE1BQUFnRSxLN01ta3RCTSxTQUFTdkUsRUFBUUQsRUFBU0gsRzhNcHB0QmhDLFlBaUJBLFNB
QUFneEYsR0FBQTUrRSxHQUNBLEdBQUExUixHQUFBLEdBQUEyM0MsS0FBQW9CLElBR0EsT0FGQS80
QyxHQUFBNjNDLElBQUEsRUFDQTczQyxFQUFBODNDLElBQUFwbUMsRUFDQTFSLEVBakJBLEdBQUEy
M0MsR0FBQXI0QyxFQUFBLEdBRUFJLEdBQUFELFFBQUFrNEMsQ0FJQSxJQUFBNDRDLEdBQUFELEdB
QUEsR0FDQUUsRUFBQUYsR0FBQSxHQUNBRyxFQUFBSCxFQUFBLE1BQ0FJLEVBQUFKLEVBQUFodkYs
UUFDQXF2RixFQUFBTCxFQUFBLEdBQ0FNLEVBQUFOLEVBQUEsR0FRQTM0QyxHQUFBUyxRQUFBLFNB
QUExbUMsR0FDQSxHQUFBQSxZQUFBaW1DLEdBQUEsTUFBQWptQyxFQUVBLFdBQUFBLEVBQUEsTUFB
QSsrRSxFQUNBLElBQUFudkYsU0FBQW9RLEVBQUEsTUFBQWcvRSxFQUNBLElBQUFoL0UsS0FBQSxR
QUFBNitFLEVBQ0EsSUFBQTcrRSxLQUFBLFFBQUE4K0UsRUFDQSxRQUFBOStFLEVBQUEsTUFBQWkv
RSxFQUNBLFNBQUFqL0UsRUFBQSxNQUFBay9FLEVBRUEsb0JBQUFsL0UsSUFBQSxrQkFBQUEsR0FD
QSxJQUNBLEdBQUEybEMsR0FBQTNsQyxFQUFBMmxDLElBQ0Esc0JBQUFBLEdBQ0EsVUFBQU0sR0FB
QU4sRUFBQXgvQixLQUFBbkcsSUFFSyxNQUFBNGxDLEdBQ0wsVUFBQUssR0FBQSxTQUFBUyxFQUFB
QyxHQUNBQSxFQUFBZixLQUlBLE1BQUFnNUMsR0FBQTUrRSxJQUdBaW1DLEVBQUFrNUMsSUFBQSxT
QUFBbHFELEdBQ0EsR0FBQXJtQyxHQUFBb1gsTUFBQXZYLFVBQUFJLE1BQUFWLEtBQUE4bUMsRUFF
QSxXQUFBZ1IsR0FBQSxTQUFBUyxFQUFBQyxHQUdBLFFBQUFscUIsR0FBQWx1QixFQUFBc0MsR0FD
QSxHQUFBQSxJQUFBLGdCQUFBQSxJQUFBLGtCQUFBQSxJQUFBLENBQ0EsR0FBQUEsWUFBQW8xQyxJ
QUFBcDFDLEVBQUE4MEMsT0FBQU0sRUFBQXgzQyxVQUFBazNDLEtBQUEsQ0FDQSxTQUFBOTBDLEVB
QUFzMUMsS0FDQXQxQyxJQUFBdTFDLEdBRUEsWUFBQXYxQyxFQUFBczFDLElBQUExcEIsRUFBQWx1
QixFQUFBc0MsRUFBQXUxQyxNQUNBLElBQUF2MUMsRUFBQXMxQyxLQUFBUSxFQUFBOTFDLEVBQUF1
MUMsU0FDQXYxQyxHQUFBODBDLEtBQUEsU0FBQTkwQyxHQUNBNHJCLEVBQUFsdUIsRUFBQXNDLElB
Q1c4MUMsSUFHWCxHQUFBaEIsR0FBQTkwQyxFQUFBODBDLElBQ0Esc0JBQUFBLEdBQUEsQ0FDQSxH
QUFBcjNDLEdBQUEsR0FBQTIzQyxHQUFBTixFQUFBeC9CLEtBQUF0VixHQUlBLFlBSEF2QyxHQUFB
cTNDLEtBQUEsU0FBQTkwQyxHQUNBNHJCLEVBQUFsdUIsRUFBQXNDLElBQ2E4MUMsSUFLYi8zQyxF
QUFBTCxHQUFBc0MsRUFDQSxNQUFBdXVGLEdBQ0ExNEMsRUFBQTkzQyxHQTNCQSxPQUFBQSxFQUFB
NEIsT0FBQSxNQUFBazJDLE1BOEJBLFFBN0JBMDRDLEdBQUF4d0YsRUFBQTRCLE9BNkJBakMsRUFB
QSxFQUFtQkEsRUFBQUssRUFBQTRCLE9BQWlCakMsSUFDcENrdUIsRUFBQWx1QixFQUFBSyxFQUFB
TCxPQUtBMDNDLEVBQUFVLE9BQUEsU0FBQTNtQyxHQUNBLFVBQUFpbUMsR0FBQSxTQUFBUyxFQUFB
QyxHQUNBQSxFQUFBM21DLE1BSUFpbUMsRUFBQW81QyxLQUFBLFNBQUF0cEMsR0FDQSxVQUFBOVAs
R0FBQSxTQUFBUyxFQUFBQyxHQUNBb1AsRUFBQW5rRCxRQUFBLFNBQUFvTyxHQUNBaW1DLEVBQUFT
LFFBQUExbUMsR0FBQTJsQyxLQUFBZSxFQUFBQyxRQU9BVixFQUFBeDNDLFVBQUEsZUFBQWc0QyxH
QUNBLE1BQUF2M0MsTUFBQXkyQyxLQUFBLEtBQUFjLEs5TTRwdEJNLFNBQVN6NEMsRUFBUUQsRUFB
U0gsRytNcnd0QmhDLFlBWUEsU0FBQTB4RixLQUNBcnVFLEdBQUEsRUFDQWcxQixFQUFBYSxJQUFB
LEtBQ0FiLEVBQUFrQixJQUFBLEtBSUEsUUFBQXd4QyxHQUFBdnNELEdBd0NBLFFBQUFtekQsR0FB
QXR4RixJQUVBbStCLEVBQUFvekQsZUFDQUMsRUFDQUMsRUFBQXp4RixHQUFBMEIsTUFDQXk4QixF
QUFBdXpELFdBQUFDLE1BR0FGLEVBQUF6eEYsR0FBQTR4RixjQUNBenpELEVBQUFtekQsYUFDQUcs
RUFBQXp4RixHQUFBNnhGLFFBQUEsRUFDQTF6RCxFQUFBbXpELFlBQ0FHLEVBQUF6eEYsR0FBQTR4
RixVQUNBSCxFQUFBenhGLEdBQUEwQixTQUdBK3ZGLEVBQUF6eEYsR0FBQTZ4RixRQUFBLEVBQ0FD
LEVBQ0FMLEVBQUF6eEYsR0FBQTR4RixVQUNBSCxFQUFBenhGLEdBQUEwQixTQUtBLFFBQUFxd0Ys
R0FBQS94RixHQUNBeXhGLEVBQUF6eEYsR0FBQTZ4RixTQUNBMXpELEVBQUE0ekQsVUFDQTV6RCxF
QUFBNHpELFVBQUFOLEVBQUF6eEYsR0FBQTR4RixVQUFBSCxFQUFBenhGLEdBQUEwQixPQUNPK3ZG
LEVBQUF6eEYsR0FBQXN4RixjQUNQdm1GLFFBQUFpbkYsS0FDQSxrQ0FBQVAsRUFBQXp4RixHQUFB
NHhGLFVBQUEsTUFFQTdtRixRQUFBaW5GLEtBQ0EsZ0hBQ0FQLEVBQUF6eEYsR0FBQTR4RixVQUFB
LE9BekVBenpELFFBQ0FuYixHQUFBcXVFLElBQ0FydUUsR0FBQSxDQUNBLElBQUFoakIsR0FBQSxF
QUNBNHhGLEVBQUEsRUFDQUgsSUFDQXo1QyxHQUFBYSxJQUFBLFNBQUFFLEdBRUEsSUFBQUEsRUFB
QWIsS0FDQXU1QyxFQUFBMTRDLEVBQUFrNUMsT0FFQVIsRUFBQTE0QyxFQUFBazVDLEtBQUFKLE9B
Q0FFLEVBQUFoNUMsRUFBQWs1QyxLQUVBcDhDLGFBQUE0N0MsRUFBQTE0QyxFQUFBazVDLEtBQUE5
N0MsZUFFQXM3QyxHQUFBMTRDLEVBQUFrNUMsT0FHQWo2QyxFQUFBa0IsSUFBQSxTQUFBSCxFQUFB
ajFDLEdBQ0EsSUFBQWkxQyxFQUFBZCxNQUNBYyxFQUFBazVDLElBQUFqeUYsSUFDQXl4RixFQUFB
MTRDLEVBQUFrNUMsTUFDQUwsVUFBQSxLQUNBbHdGLE1BQUFvQyxFQUNBcXlDLFFBQUFWLFdBQ0E2
N0MsRUFBQXA1RSxLQUFBLEtBQUE2Z0MsRUFBQWs1QyxLQUtBVCxFQUFBMXRGLEVBQUE2dEYsR0FD
QSxJQUNBLEtBRUFFLFFBQUEsS0E2Q0EsUUFBQUMsR0FBQTl4RixFQUFBMEIsR0FDQXFKLFFBQUFp
bkYsS0FBQSw2Q0FBQWh5RixFQUFBLEtBQ0EsSUFBQWt5RixJQUFBeHdGLE1BQUFpOEMsT0FBQWo4
QyxJQUFBLEVBQ0F3d0YsR0FBQXh1RixNQUFBLE1BQUFDLFFBQUEsU0FBQXd1RixHQUNBcG5GLFFB
QUFpbkYsS0FBQSxLQUFBRyxLQUlBLFFBQUFYLEdBQUE5dkYsRUFBQWcyRCxHQUNBLE1BQUFBLEdB
QUEwNkIsS0FBQSxTQUFBQyxHQUNBLE1BQUEzd0YsYUFBQTJ3RixLQTVHQSxHQUFBcjZDLEdBQUFy
NEMsRUFBQSxJQUVBZ3lGLEdBQ0FqbUQsZUFDQTdvQyxVQUNBeXZGLFlBR0F0dkUsR0FBQSxDQUNB
bGpCLEdBQUF1eEYsVUFPQXZ4RixFQUFBNHFGLFUvTXkydEJNLFNBQVMzcUYsRUFBUUQsR2dOMzN0
QnZCQyxFQUFBRCxRQUFBLFNBQUFDLEdBUUEsTUFQQUEsR0FBQXd5RixrQkFDQXh5RixFQUFBeXlG
LFVBQUEsYUFDQXp5RixFQUFBMHlGLFNBRUExeUYsRUFBQStGLFlBQ0EvRixFQUFBd3lGLGdCQUFB
LEdBRUF4eUYsSWhObTR0Qk0sU0FBU0EsRUFBUUQsSWlOMzR0QnZCLFNBQUF5WCxHQUNBLFlBcUJB
LFNBQUFtN0UsR0FBQTN3RixHQUlBLEdBSEEsZ0JBQUFBLEtBQ0FBLEVBQUFrQixPQUFBbEIsSUFF
QSw2QkFBQTBQLEtBQUExUCxHQUNBLFNBQUFjLFdBQUEseUNBRUEsT0FBQWQsR0FBQTRQLGNBR0Es
UUFBQWdoRixHQUFBNWdGLEdBSUEsTUFIQSxnQkFBQUEsS0FDQUEsRUFBQTlPLE9BQUE4TyxJQUVB
QSxFQUlBLFFBQUE2Z0YsR0FBQUMsR0FDQSxHQUFBNW5ELElBQ0FsRSxLQUFBLFdBQ0EsR0FBQWgx
QixHQUFBOGdGLEVBQUFDLE9BQ0EsUUFBZ0IxbkQsS0FBQXpwQyxTQUFBb1EsWUFVaEIsT0FOQWdo
RixHQUFBQyxXQUNBL25ELEVBQUE3VSxPQUFBNlUsVUFBQSxXQUNBLE1BQUFBLEtBSUFBLEVBR0Es
UUFBQWdvRCxHQUFBdDhCLEdBQ0ExMUQsS0FBQXFDLE9BRUFxekQsWUFBQXM4QixHQUNBdDhCLEVB
QUFoekQsUUFBQSxTQUFBb08sRUFBQWhRLEdBQ0FkLEtBQUFpeUYsT0FBQW54RixFQUFBZ1EsSUFD
TzlRLE1BRUYwMUQsR0FDTHAyRCxPQUFBMkMsb0JBQUF5ekQsR0FBQWh6RCxRQUFBLFNBQUE1QixH
QUNBZCxLQUFBaXlGLE9BQUFueEYsRUFBQTQwRCxFQUFBNTBELEtBQ09kLE1Ba0VQLFFBQUFreUYs
R0FBQWo5RCxHQUNBLE1BQUFBLEdBQUFrOUQsU0FDQXA3QyxRQUFBVSxPQUFBLEdBQUE3MUMsV0FB
QSxzQkFFQXF6QixFQUFBazlELFVBQUEsR0FHQSxRQUFBQyxHQUFBQyxHQUNBLFVBQUF0N0MsU0FB
QSxTQUFBUyxFQUFBQyxHQUNBNDZDLEVBQUFDLE9BQUEsV0FDQTk2QyxFQUFBNjZDLEVBQUE3ckMs
U0FFQTZyQyxFQUFBRSxRQUFBLFdBQ0E5NkMsRUFBQTQ2QyxFQUFBNXhGLFVBS0EsUUFBQSt4RixH
QUFBQyxHQUNBLEdBQUFKLEdBQUEsR0FBQUssV0FFQSxPQURBTCxHQUFBTSxrQkFBQUYsR0FDQUws
RUFBQUMsR0FHQSxRQUFBTyxHQUFBSCxHQUNBLEdBQUFKLEdBQUEsR0FBQUssV0FFQSxPQURBTCxH
QUFBUSxXQUFBSixHQUNBTCxFQUFBQyxHQUdBLFFBQUFTLEtBb0ZBLE1BbkZBOXlGLE1BQUFteUYs
VUFBQSxFQUVBbnlGLEtBQUEreUYsVUFBQSxTQUFBOTlELEdBRUEsR0FEQWoxQixLQUFBZ3pGLFVB
QUEvOUQsRUFDQSxnQkFBQUEsR0FDQWoxQixLQUFBaXpGLFVBQUFoK0QsTUFDTyxJQUFBNjhELEVB
QUFXLE1BQUFTLEtBQUEzekYsVUFBQTR6RixjQUFBbCtELEdBQ1BqMUIsS0FBQW96RixVQUFBbitE
LE1BQ08sSUFBQTY4RCxFQUFBdUIsVUFBQUMsU0FBQS96RixVQUFBNHpGLGNBQUFsK0QsR0FDUGox
QixLQUFBdXpGLGNBQUF0K0QsTUFDTyxJQUFBNjhELEVBQUEwQixjQUFBQyxnQkFBQWwwRixVQUFB
NHpGLGNBQUFsK0QsR0FDUGoxQixLQUFBaXpGLFVBQUFoK0QsRUFBQTV1QixlQUNPLElBQUE0dUIs
R0FFQSxJQUFBNjhELEVBQUE0QixjQUFBQyxZQUFBcDBGLFVBQUE0ekYsY0FBQWwrRCxHQUlQLFNB
QUF0MEIsT0FBQSxpQ0FMQVgsTUFBQWl6RixVQUFBLEVBUUFqekYsTUFBQTAxRCxRQUFBMzVDLElB
QUEsa0JBQ0EsZ0JBQUFrWixHQUNBajFCLEtBQUEwMUQsUUFBQXo1QyxJQUFBLDJDQUNTamMsS0FB
QW96RixXQUFBcHpGLEtBQUFvekYsVUFBQXpwRixLQUNUM0osS0FBQTAxRCxRQUFBejVDLElBQUEs
ZUFBQWpjLEtBQUFvekYsVUFBQXpwRixNQUNTbW9GLEVBQUEwQixjQUFBQyxnQkFBQWwwRixVQUFB
NHpGLGNBQUFsK0QsSUFDVGoxQixLQUFBMDFELFFBQUF6NUMsSUFBQSxvRUFLQTYxRSxFQUFBVyxN
QUNBenlGLEtBQUF5eUYsS0FBQSxXQUNBLEdBQUFtQixHQUFBMUIsRUFBQWx5RixLQUNBLElBQUE0
ekYsRUFDQSxNQUFBQSxFQUdBLElBQUE1ekYsS0FBQW96RixVQUNBLE1BQUFyOEMsU0FBQVMsUUFB
QXgzQyxLQUFBb3pGLFVBQ1MsSUFBQXB6RixLQUFBdXpGLGNBQ1QsU0FBQTV5RixPQUFBLHVDQUVB
LE9BQUFvMkMsU0FBQVMsUUFBQSxHQUFBMDdDLE9BQUFsekYsS0FBQWl6RixjQUlBanpGLEtBQUEw
ekYsWUFBQSxXQUNBLE1BQUExekYsTUFBQXl5RixPQUFBaDhDLEtBQUErN0MsSUFHQXh5RixLQUFB
bVAsS0FBQSxXQUNBLEdBQUF5a0YsR0FBQTFCLEVBQUFseUYsS0FDQSxJQUFBNHpGLEVBQ0EsTUFB
QUEsRUFHQSxJQUFBNXpGLEtBQUFvekYsVUFDQSxNQUFBUixHQUFBNXlGLEtBQUFvekYsVUFDUyxJ
QUFBcHpGLEtBQUF1ekYsY0FDVCxTQUFBNXlGLE9BQUEsdUNBRUEsT0FBQW8yQyxTQUFBUyxRQUFB
eDNDLEtBQUFpekYsYUFJQWp6RixLQUFBbVAsS0FBQSxXQUNBLEdBQUF5a0YsR0FBQTFCLEVBQUFs
eUYsS0FDQSxPQUFBNHpGLEtBQUE3OEMsUUFBQVMsUUFBQXgzQyxLQUFBaXpGLFlBSUFuQixFQUFB
dUIsV0FDQXJ6RixLQUFBcXpGLFNBQUEsV0FDQSxNQUFBcnpGLE1BQUFtUCxPQUFBc25DLEtBQUFv
OUMsS0FJQTd6RixLQUFBOHpGLEtBQUEsV0FDQSxNQUFBOXpGLE1BQUFtUCxPQUFBc25DLEtBQUFw
SixLQUFBMG1ELFFBR0EvekYsS0FNQSxRQUFBZzBGLEdBQUFub0YsR0FDQSxHQUFBb29GLEdBQUFw
b0YsRUFBQTJwQixhQUNBLE9BQUEwK0QsR0FBQXZvRSxRQUFBc29FLFFBQUFwb0YsRUFHQSxRQUFB
c29GLEdBQUFsMEQsRUFBQS9DLEdBQ0FBLE9BQ0EsSUFBQWpJLEdBQUFpSSxFQUFBakksSUFDQSxJ
QUFBay9ELEVBQUE1MEYsVUFBQTR6RixjQUFBbHpELEdBQUEsQ0FDQSxHQUFBQSxFQUFBa3lELFNB
Q0EsU0FBQXZ3RixXQUFBLGVBRUE1QixNQUFBaXBDLElBQUFoSixFQUFBZ0osSUFDQWpwQyxLQUFB
bzBGLFlBQUFuMEQsRUFBQW0wRCxZQUNBbDNELEVBQUF3NEIsVUFDQTExRCxLQUFBMDFELFFBQUEs
R0FBQXM4QixHQUFBL3hELEVBQUF5MUIsVUFFQTExRCxLQUFBNkwsT0FBQW8wQixFQUFBcDBCLE9B
Q0E3TCxLQUFBZzJFLEtBQUEvMUMsRUFBQSsxQyxLQUNBL2dELElBQ0FBLEVBQUFnTCxFQUFBK3lE
LFVBQ0EveUQsRUFBQWt5RCxVQUFBLE9BR0FueUYsTUFBQWlwQyxJQUFBaEosQ0FXQSxJQVJBamdD
LEtBQUFvMEYsWUFBQWwzRCxFQUFBazNELGFBQUFwMEYsS0FBQW8wRixhQUFBLFFBQ0FsM0QsRUFB
QXc0QixTQUFBMTFELEtBQUEwMUQsVUFDQTExRCxLQUFBMDFELFFBQUEsR0FBQXM4QixHQUFBOTBE
LEVBQUF3NEIsVUFFQTExRCxLQUFBNkwsT0FBQW1vRixFQUFBOTJELEVBQUFyeEIsUUFBQTdMLEtB
QUE2TCxRQUFBLE9BQ0E3TCxLQUFBZzJFLEtBQUE5NEMsRUFBQTg0QyxNQUFBaDJFLEtBQUFnMkUs
TUFBQSxLQUNBaDJFLEtBQUFxMEYsU0FBQSxNQUVBLFFBQUFyMEYsS0FBQTZMLFFBQUEsU0FBQTdM
LEtBQUE2TCxTQUFBb3BCLEVBQ0EsU0FBQXJ6QixXQUFBLDRDQUVBNUIsTUFBQSt5RixVQUFBOTlE
LEdBT0EsUUFBQTQrRCxHQUFBNStELEdBQ0EsR0FBQWtnQyxHQUFBLEdBQUFtK0IsU0FTQSxPQVJB
citELEdBQUEwZCxPQUFBbHdDLE1BQUEsS0FBQUMsUUFBQSxTQUFBNHhGLEdBQ0EsR0FBQUEsRUFB
QSxDQUNBLEdBQUE3eEYsR0FBQTZ4RixFQUFBN3hGLE1BQUEsS0FDQTNCLEVBQUEyQixFQUFBb3ZG
LFFBQUFoeEYsUUFBQSxXQUNBaVEsRUFBQXJPLEVBQUFGLEtBQUEsS0FBQTFCLFFBQUEsVUFDQXMw
RCxHQUFBODhCLE9BQUFzQyxtQkFBQXp6RixHQUFBeXpGLG1CQUFBempGLE9BR0Fxa0QsRUFHQSxR
QUFBTyxHQUFBOCtCLEdBQ0EsR0FBQUMsR0FBQSxHQUFBekMsR0FDQTV4QyxHQUFBbzBDLEVBQUFF
LHlCQUFBLElBQUEvaEQsT0FBQWx3QyxNQUFBLEtBT0EsT0FOQTI5QyxHQUFBMTlDLFFBQUEsU0FB
QWl5RixHQUNBLEdBQUFseUYsR0FBQWt5RixFQUFBaGlELE9BQUFsd0MsTUFBQSxLQUNBYyxFQUFB
ZCxFQUFBb3ZGLFFBQUFsL0MsT0FDQTdoQyxFQUFBck8sRUFBQUYsS0FBQSxLQUFBb3dDLE1BQ0E4
aEQsR0FBQXhDLE9BQUExdUYsRUFBQXVOLEtBRUEyakYsRUFLQSxRQUFBRyxHQUFBQyxFQUFBMzNE
LEdBQ0FBLElBQ0FBLE1BR0FsOUIsS0FBQTJKLEtBQUEsVUFDQTNKLEtBQUE4MEYsT0FBQTUzRCxF
QUFBNDNELE9BQ0E5MEYsS0FBQSswRixHQUFBLzBGLEtBQUE4MEYsUUFBQSxLQUFBOTBGLEtBQUE4
MEYsT0FBQSxJQUNBOTBGLEtBQUFnMUYsV0FBQTkzRCxFQUFBODNELFdBQ0FoMUYsS0FBQTAxRCxR
QUFBeDRCLEVBQUF3NEIsa0JBQUFzOEIsR0FBQTkwRCxFQUFBdzRCLFFBQUEsR0FBQXM4QixHQUFB
OTBELEVBQUF3NEIsU0FDQTExRCxLQUFBaXBDLElBQUEvTCxFQUFBK0wsS0FBQSxHQUNBanBDLEtB
QUEreUYsVUFBQThCLEdBOVVBLElBQUF2K0UsRUFBQTIrRSxNQUFBLENBSUEsR0FBQW5ELElBQ0Ew
QixhQUFBLG1CQUFBbDlFLEdBQ0F5N0UsU0FBQSxVQUFBejdFLElBQUEsWUFBQTZlLFFBQ0FzOUQs
S0FBQSxjQUFBbjhFLElBQUEsUUFBQUEsSUFBQSxXQUNBLElBRUEsTUFEQSxJQUFBNDhFLE9BQ0Es
RUFDTyxNQUFBNXlGLEdBQ1AsYUFHQSt5RixTQUFBLFlBQUEvOEUsR0FDQW85RSxZQUFBLGVBQUFw
OUUsR0FxREEwN0UsR0FBQXp5RixVQUFBMHlGLE9BQUEsU0FBQW54RixFQUFBZ1EsR0FDQWhRLEVB
QUEyd0YsRUFBQTN3RixHQUNBZ1EsRUFBQTRnRixFQUFBNWdGLEVBQ0EsSUFBQTJsRCxHQUFBejJE
LEtBQUFxQyxJQUFBdkIsRUFDQTIxRCxLQUNBQSxLQUNBejJELEtBQUFxQyxJQUFBdkIsR0FBQTIx
RCxHQUVBQSxFQUFBaHhELEtBQUFxTCxJQUdBa2hGLEVBQUF6eUYsVUFBQSxnQkFBQXVCLFNBQ0Fk
LE1BQUFxQyxJQUFBb3ZGLEVBQUEzd0YsS0FHQWt4RixFQUFBenlGLFVBQUF3YyxJQUFBLFNBQUFq
YixHQUNBLEdBQUErbEQsR0FBQTdtRCxLQUFBcUMsSUFBQW92RixFQUFBM3dGLEdBQ0EsT0FBQSts
RCxLQUFBLFNBR0FtckMsRUFBQXp5RixVQUFBMjFGLE9BQUEsU0FBQXAwRixHQUNBLE1BQUFkLE1B
QUFxQyxJQUFBb3ZGLEVBQUEzd0YsU0FHQWt4RixFQUFBenlGLFVBQUF5YyxJQUFBLFNBQUFsYixH
QUNBLE1BQUFkLE1BQUFxQyxJQUFBN0MsZUFBQWl5RixFQUFBM3dGLEtBR0FreEYsRUFBQXp5RixV
QUFBMGMsSUFBQSxTQUFBbmIsRUFBQWdRLEdBQ0E5USxLQUFBcUMsSUFBQW92RixFQUFBM3dGLEtB
QUE0d0YsRUFBQTVnRixLQUdBa2hGLEVBQUF6eUYsVUFBQW1ELFFBQUEsU0FBQStGLEVBQUEwc0Ys
R0FDQTcxRixPQUFBMkMsb0JBQUFqQyxLQUFBcUMsS0FBQUssUUFBQSxTQUFBNUIsR0FDQWQsS0FB
QXFDLElBQUF2QixHQUFBNEIsUUFBQSxTQUFBb08sR0FDQXJJLEVBQUF4SixLQUFBazJGLEVBQUFy
a0YsRUFBQWhRLEVBQUFkLE9BQ09BLE9BQ0ZBLE9BR0xneUYsRUFBQXp5RixVQUFBcUQsS0FBQSxX
QUNBLEdBQUFndkYsS0FFQSxPQURBNXhGLE1BQUEwQyxRQUFBLFNBQUFvTyxFQUFBaFEsR0FBd0M4
d0YsRUFBQW5zRixLQUFBM0UsS0FDeEM2d0YsRUFBQUMsSUFHQUksRUFBQXp5RixVQUFBc25ELE9B
QUEsV0FDQSxHQUFBK3FDLEtBRUEsT0FEQTV4RixNQUFBMEMsUUFBQSxTQUFBb08sR0FBa0M4Z0Ys
RUFBQW5zRixLQUFBcUwsS0FDbEM2Z0YsRUFBQUMsSUFHQUksRUFBQXp5RixVQUFBMHFDLFFBQUEs
V0FDQSxHQUFBMm5ELEtBRUEsT0FEQTV4RixNQUFBMEMsUUFBQSxTQUFBb08sRUFBQWhRLEdBQXdD
OHdGLEVBQUFuc0YsTUFBQTNFLEVBQUFnUSxNQUN4QzZnRixFQUFBQyxJQUdBRSxFQUFBQyxXQUNB
QyxFQUFBenlGLFVBQUE0MUIsT0FBQTZVLFVBQUFnb0QsRUFBQXp5RixVQUFBMHFDLFFBeUhBLElB
QUFpcUQsSUFBQSw2Q0EyQ0FDLEdBQUE1MEYsVUFBQTYxRixNQUFBLFdBQ0EsVUFBQWpCLEdBQUFu
MEYsT0E0QkE4eUYsRUFBQTd6RixLQUFBazFGLEVBQUE1MEYsV0FnQkF1ekYsRUFBQTd6RixLQUFB
MjFGLEVBQUFyMUYsV0FFQXExRixFQUFBcjFGLFVBQUE2MUYsTUFBQSxXQUNBLFVBQUFSLEdBQUE1
MEYsS0FBQWd6RixXQUNBOEIsT0FBQTkwRixLQUFBODBGLE9BQ0FFLFdBQUFoMUYsS0FBQWcxRixX
QUNBdC9CLFFBQUEsR0FBQXM4QixHQUFBaHlGLEtBQUEwMUQsU0FDQXpzQixJQUFBanBDLEtBQUFp
cEMsT0FJQTJyRCxFQUFBbjBGLE1BQUEsV0FDQSxHQUFBNDBGLEdBQUEsR0FBQVQsR0FBQSxNQUF1
Q0UsT0FBQSxFQUFBRSxXQUFBLElBRXZDLE9BREFLLEdBQUExckYsS0FBQSxRQUNBMHJGLEVBR0Es
SUFBQUMsSUFBQSxvQkFFQVYsR0FBQVcsU0FBQSxTQUFBdHNELEVBQUE2ckQsR0FDQSxHQUFBUSxF
QUFBM3BFLFFBQUFtcEUsUUFDQSxTQUFBekQsWUFBQSxzQkFHQSxXQUFBdUQsR0FBQSxNQUErQkUs
U0FBQXAvQixTQUEwQjVPLFNBQUE3ZCxNQUd6RDN5QixFQUFBMDdFLFVBQ0ExN0UsRUFBQTY5RSxV
QUNBNzlFLEVBQUFzK0UsV0FFQXQrRSxFQUFBMitFLE1BQUEsU0FBQWgxRCxFQUFBdTFELEdBQ0Es
VUFBQXorQyxTQUFBLFNBQUFTLEVBQUFDLEdBVUEsUUFBQWcrQyxLQUNBLHFCQUFBakIsR0FDQUEs
RUFBQWlCLFlBSUEsbUJBQUFqbEYsS0FBQWdrRixFQUFBRSx5QkFDQUYsRUFBQWtCLGtCQUFBLGlC
QURBLE9BZkEsR0FBQUMsRUFFQUEsR0FEQXhCLEVBQUE1MEYsVUFBQTR6RixjQUFBbHpELEtBQUF1
MUQsRUFDQXYxRCxFQUVBLEdBQUFrMEQsR0FBQWwwRCxFQUFBdTFELEVBR0EsSUFBQWhCLEdBQUEs
R0FBQW9CLGVBZUFwQixHQUFBbEMsT0FBQSxXQUNBLEdBQUFwMUQsSUFDQTQzRCxPQUFBTixFQUFB
TSxPQUNBRSxXQUFBUixFQUFBUSxXQUNBdC9CLFVBQUE4K0IsR0FDQXZyRCxJQUFBd3NELEtBRUF4
Z0UsRUFBQSxZQUFBdS9ELEtBQUFhLFNBQUFiLEVBQUFxQixZQUNBcitDLEdBQUEsR0FBQW85QyxH
QUFBMy9ELEVBQUFpSSxLQUdBczNELEVBQUFqQyxRQUFBLFdBQ0E5NkMsRUFBQSxHQUFBNzFDLFdB
QUEsNEJBR0E0eUYsRUFBQXNCLFVBQUEsV0FDQXIrQyxFQUFBLEdBQUE3MUMsV0FBQSw0QkFHQTR5
RixFQUFBajlCLEtBQUFvK0IsRUFBQTlwRixPQUFBOHBGLEVBQUExc0QsS0FBQSxHQUVBLFlBQUEw
c0QsRUFBQXZCLGNBQ0FJLEVBQUF1QixpQkFBQSxHQUdBLGdCQUFBdkIsSUFBQTFDLEVBQUFXLE9B
Q0ErQixFQUFBd0IsYUFBQSxRQUdBTCxFQUFBamdDLFFBQUFoekQsUUFBQSxTQUFBb08sRUFBQWhR
LEdBQ0EwekYsRUFBQXlCLGlCQUFBbjFGLEVBQUFnUSxLQUdBMGpGLEVBQUEwQixLQUFBLG1CQUFB
UCxHQUFBM0MsVUFBQSxLQUFBMkMsRUFBQTNDLGNBR0ExOEUsRUFBQTIrRSxNQUFBa0IsVUFBQSxJ
QUNDLG1CQUFBNy9FLFdBQUF0VyxPak5rNXRCRCxJQUVDLElBQUssSUFFQSxTQUFTbEIsRUFBUUQs
RUFBU0gsR2tONXp1QmhDLFlBWUEsU0FBQTAzRixHQUFBam5GLEdBQ0EsVUFBQUEsR0FBQXRPLFFB
QUF3MUYsRUFBQSxPQVdBLFFBQUFDLEdBQUFDLEVBQUFDLEdBQ0F4MkYsS0FBQWt3QixLQUFBcW1F
LEVBQ0F2MkYsS0FBQTBLLFFBQUE4ckYsRUFDQXgyRixLQUFBcVYsTUFBQSxFQVNBLFFBQUFvaEYs
R0FBQW5xQixFQUFBdnFDLEVBQUFqaEMsR0FDQSxHQUFBb3ZCLEdBQUFvOEMsRUFBQXA4QyxLQUNB
eGxCLEVBQUE0aEUsRUFBQTVoRSxPQUVBd2xCLEdBQUFqeEIsS0FBQXlMLEVBQUFxM0IsRUFBQXVx
QyxFQUFBajNELFNBZUEsUUFBQXFoRixHQUFBN3hGLEVBQUE4eEYsRUFBQUgsR0FDQSxTQUFBM3hG
LEVBQ0EsTUFBQUEsRUFFQSxJQUFBMGtDLEdBQUErc0QsRUFBQWh1RixVQUFBcXVGLEVBQUFILEVB
Q0Fqc0QsR0FBQTFsQyxFQUFBNHhGLEVBQUFsdEQsR0FDQStzRCxFQUFBM3FGLFFBQUE0OUIsR0FZ
QSxRQUFBcXRELEdBQUFDLEVBQUFDLEVBQUFDLEVBQUFDLEdBQ0FoM0YsS0FBQXdtRCxPQUFBcXdD
LEVBQ0E3MkYsS0FBQTgyRixZQUNBOTJGLEtBQUFrd0IsS0FBQTZtRSxFQUNBLzJGLEtBQUEwSyxR
QUFBc3NGLEVBQ0FoM0YsS0FBQXFWLE1BQUEsRUFXQSxRQUFBNGhGLEdBQUEzcUIsRUFBQXZxQyxF
QUFBbTFELEdBQ0EsR0FBQTF3QyxHQUFBOGxCLEVBQUE5bEIsT0FDQXN3QyxFQUFBeHFCLEVBQUF3
cUIsVUFDQTVtRSxFQUFBbzhDLEVBQUFwOEMsS0FDQXhsQixFQUFBNGhFLEVBQUE1aEUsUUFHQXlz
RixFQUFBam5FLEVBQUFqeEIsS0FBQXlMLEVBQUFxM0IsRUFBQXVxQyxFQUFBajNELFFBQ0F5QixP
QUFBd1IsUUFBQTZ1RSxHQUNBQyxFQUFBRCxFQUFBM3dDLEVBQUEwd0MsRUFBQWwyRixFQUFBMkcs
cUJBQ0csTUFBQXd2RixJQUNIMWlGLEVBQUFpQixlQUFBeWhGLEtBQ0FBLEVBQUExaUYsRUFBQXlD
LG1CQUFBaWdGLEVBR0FMLElBQUFLLEVBQUE1ekYsS0FBQXcrQixLQUFBeCtCLE1BQUE0ekYsRUFB
QTV6RixJQUFBLEdBQUE2eUYsRUFBQWUsRUFBQTV6RixLQUFBLEtBQUEyekYsSUFFQTF3QyxFQUFB
L2dELEtBQUEweEYsSUFJQSxRQUFBQyxHQUFBdnlGLEVBQUF1d0MsRUFBQTlmLEVBQUFwRixFQUFB
eGxCLEdBQ0EsR0FBQTJzRixHQUFBLEVBQ0EsT0FBQS9oRSxJQUNBK2hFLEVBQUFqQixFQUFBOWdF
LEdBQUEsSUFFQSxJQUFBaVUsR0FBQXF0RCxFQUFBdHVGLFVBQUE4c0MsRUFBQWlpRCxFQUFBbm5F
LEVBQUF4bEIsRUFDQTYvQixHQUFBMWxDLEVBQUFveUYsRUFBQTF0RCxHQUNBcXRELEVBQUFqckYs
UUFBQTQ5QixHQWdCQSxRQUFBK3RELEdBQUF6eUYsRUFBQXFyQixFQUFBeGxCLEdBQ0EsU0FBQTdG
LEVBQ0EsTUFBQUEsRUFFQSxJQUFBMmhELEtBRUEsT0FEQTR3QyxHQUFBdnlGLEVBQUEyaEQsRUFB
QSxLQUFBdDJCLEVBQUF4bEIsR0FDQTg3QyxFQUdBLFFBQUErd0MsR0FBQWh1RCxFQUFBeEgsRUFB
QWpoQyxHQUNBLFlBWUEsUUFBQTAyRixHQUFBM3lGLEVBQUE2RixHQUNBLE1BQUE2L0IsR0FBQTFs
QyxFQUFBMHlGLEVBQUEsTUFTQSxRQUFBamlGLEdBQUF6USxHQUNBLEdBQUEyaEQsS0FFQSxPQURB
NHdDLEdBQUF2eUYsRUFBQTJoRCxFQUFBLEtBQUF4bEQsRUFBQTJHLHFCQUNBNitDLEVBdEtBLEdB
QUExN0MsR0FBQXBNLEVBQUEsS0FDQStWLEVBQUEvVixFQUFBLElBRUFzQyxFQUFBdEMsRUFBQSxH
QUNBNnJDLEVBQUE3ckMsRUFBQSxLQUVBZ3VFLEVBQUE1aEUsRUFBQTRoRSxrQkFDQWgrRCxFQUFB
NUQsRUFBQTRELG1CQUVBMm5GLEVBQUEsTUFrQkFDLEdBQUEvMkYsVUFBQW1NLFdBQUEsV0FDQTFM
LEtBQUFrd0IsS0FBQSxLQUNBbHdCLEtBQUEwSyxRQUFBLEtBQ0ExSyxLQUFBcVYsTUFBQSxHQUVB
dkssRUFBQWlCLGFBQUF1cUYsRUFBQTVwQixHQThDQWtxQixFQUFBcjNGLFVBQUFtTSxXQUFBLFdB
Q0ExTCxLQUFBd21ELE9BQUEsS0FDQXhtRCxLQUFBODJGLFVBQUEsS0FDQTkyRixLQUFBa3dCLEtB
QUEsS0FDQWx3QixLQUFBMEssUUFBQSxLQUNBMUssS0FBQXFWLE1BQUEsR0FFQXZLLEVBQUFpQixh
QUFBNnFGLEVBQUFsb0YsRUFvRkEsSUFBQTZGLElBQ0E3UixRQUFBZzBGLEVBQ0FyMEYsSUFBQWkx
RixFQUNBRiwrQkFDQS9oRixNQUFBbWlGLEVBQ0FsaUYsVUFHQXhXLEdBQUFELFFBQUEwVixHbE40
MHVCTSxTQUFTelYsRUFBUUQsRUFBU0gsR21OLy91QmhDLFlBRUEsSUFBQStWLEdBQUEvVixFQUFB
LElBT0ErNEYsRUFBQWhqRixFQUFBSyxjQVdBTixHQUNBM1UsRUFBQTQzRixFQUFBLEtBQ0FDLEtB
QUFELEVBQUEsUUFDQUUsUUFBQUYsRUFBQSxXQUNBbjBDLEtBQUFtMEMsRUFBQSxRQUNBRyxRQUFB
SCxFQUFBLFdBQ0FJLE1BQUFKLEVBQUEsU0FDQUssTUFBQUwsRUFBQSxTQUNBMzNGLEVBQUEyM0Ys
RUFBQSxLQUNBajFCLEtBQUFpMUIsRUFBQSxRQUNBTSxJQUFBTixFQUFBLE9BQ0FPLElBQUFQLEVB
QUEsT0FDQVEsSUFBQVIsRUFBQSxPQUNBUyxXQUFBVCxFQUFBLGNBQ0F4aUUsS0FBQXdpRSxFQUFB
LFFBQ0FoMUIsR0FBQWcxQixFQUFBLE1BQ0ExekUsT0FBQTB6RSxFQUFBLFVBQ0FVLE9BQUFWLEVB
QUEsVUFDQTV6QyxRQUFBNHpDLEVBQUEsV0FDQW5qQyxLQUFBbWpDLEVBQUEsUUFDQXQyRixLQUFB
czJGLEVBQUEsUUFDQWwwQyxJQUFBazBDLEVBQUEsT0FDQTN6QyxTQUFBMnpDLEVBQUEsWUFDQS93
RSxLQUFBK3dFLEVBQUEsUUFDQVcsU0FBQVgsRUFBQSxZQUNBWSxHQUFBWixFQUFBLE1BQ0FhLElB
QUFiLEVBQUEsT0FDQWMsUUFBQWQsRUFBQSxXQUNBZSxJQUFBZixFQUFBLE9BQ0FnQixPQUFBaEIs
RUFBQSxVQUNBN3pCLElBQUE2ekIsRUFBQSxPQUNBaUIsR0FBQWpCLEVBQUEsTUFDQWtCLEdBQUFs
QixFQUFBLE1BQ0FtQixHQUFBbkIsRUFBQSxNQUNBLzBCLE1BQUErMEIsRUFBQSxTQUNBb0IsU0FB
QXBCLEVBQUEsWUFDQXFCLFdBQUFyQixFQUFBLGNBQ0FzQixPQUFBdEIsRUFBQSxVQUNBdUIsT0FB
QXZCLEVBQUEsVUFDQXRpQyxLQUFBc2lDLEVBQUEsUUFDQXdCLEdBQUF4QixFQUFBLE1BQ0F5QixH
QUFBekIsRUFBQSxNQUNBMEIsR0FBQTFCLEVBQUEsTUFDQTJCLEdBQUEzQixFQUFBLE1BQ0E0QixH
QUFBNUIsRUFBQSxNQUNBNkIsR0FBQTdCLEVBQUEsTUFDQWhELEtBQUFnRCxFQUFBLFFBQ0E5QyxP
QUFBOEMsRUFBQSxVQUNBOEIsT0FBQTlCLEVBQUEsVUFDQTkwQixHQUFBODBCLEVBQUEsTUFDQXhv
RixLQUFBd29GLEVBQUEsUUFDQXA0RixFQUFBbzRGLEVBQUEsS0FDQStCLE9BQUEvQixFQUFBLFVB
Q0E3MEIsSUFBQTYwQixFQUFBLE9BQ0F4M0QsTUFBQXczRCxFQUFBLFNBQ0FnQyxJQUFBaEMsRUFB
QSxPQUNBaUMsSUFBQWpDLEVBQUEsT0FDQTUwQixPQUFBNDBCLEVBQUEsVUFDQWxoQyxNQUFBa2hD
LEVBQUEsU0FDQWowQyxPQUFBaTBDLEVBQUEsVUFDQWtDLEdBQUFsQyxFQUFBLE1BQ0EzMEIsS0FB
QTIwQixFQUFBLFFBQ0FtQyxLQUFBbkMsRUFBQSxRQUNBcDFGLElBQUFvMUYsRUFBQSxPQUNBb0Ms
S0FBQXBDLEVBQUEsUUFDQXFDLEtBQUFyQyxFQUFBLFFBQ0FwMEIsU0FBQW8wQixFQUFBLFlBQ0Ex
MEIsS0FBQTAwQixFQUFBLFFBQ0FzQyxNQUFBdEMsRUFBQSxTQUNBdUMsSUFBQXZDLEVBQUEsT0FD
QXdDLFNBQUF4QyxFQUFBLFlBQ0FqZ0YsT0FBQWlnRixFQUFBLFVBQ0F5QyxHQUFBekMsRUFBQSxN
QUNBOXpDLFNBQUE4ekMsRUFBQSxZQUNBN3pDLE9BQUE2ekMsRUFBQSxVQUNBMEMsT0FBQTFDLEVB
QUEsVUFDQXI0RixFQUFBcTRGLEVBQUEsS0FDQWgwQyxNQUFBZzBDLEVBQUEsU0FDQTJDLFFBQUEz
QyxFQUFBLFdBQ0F0MEIsSUFBQXMwQixFQUFBLE9BQ0E0QyxTQUFBNUMsRUFBQSxZQUNBNkMsRUFB
QTdDLEVBQUEsS0FDQThDLEdBQUE5QyxFQUFBLE1BQ0ErQyxHQUFBL0MsRUFBQSxNQUNBZ0QsS0FB
QWhELEVBQUEsUUFDQW4wRixFQUFBbTBGLEVBQUEsS0FDQWlELEtBQUFqRCxFQUFBLFFBQ0FrRCxP
QUFBbEQsRUFBQSxVQUNBbUQsUUFBQW5ELEVBQUEsV0FDQXgyRCxPQUFBdzJELEVBQUEsVUFDQW9E
LE1BQUFwRCxFQUFBLFNBQ0F2MEYsT0FBQXUwRixFQUFBLFVBQ0E3K0IsS0FBQTYrQixFQUFBLFFB
Q0FxRCxPQUFBckQsRUFBQSxVQUNBOW5DLE1BQUE4bkMsRUFBQSxTQUNBc0QsSUFBQXRELEVBQUEs
T0FDQXYrQixRQUFBdStCLEVBQUEsV0FDQXVELElBQUF2RCxFQUFBLE9BQ0F3RCxNQUFBeEQsRUFB
QSxTQUNBMXpDLE1BQUEwekMsRUFBQSxTQUNBdnpDLEdBQUF1ekMsRUFBQSxNQUNBcjBCLFNBQUFx
MEIsRUFBQSxZQUNBenpDLE1BQUF5ekMsRUFBQSxTQUNBdHpDLEdBQUFzekMsRUFBQSxNQUNBeHpD
LE1BQUF3ekMsRUFBQSxTQUNBMXRGLEtBQUEwdEYsRUFBQSxRQUNBbGlELE1BQUFraUQsRUFBQSxT
QUNBL3pDLEdBQUErekMsRUFBQSxNQUNBM3dELE1BQUEyd0QsRUFBQSxTQUNBeUQsRUFBQXpELEVB
QUEsS0FDQTBELEdBQUExRCxFQUFBLE1BQ0EyRCxJQUFBM0QsRUFBQSxPQUNBNEQsTUFBQTVELEVB
QUEsU0FDQXowQixJQUFBeTBCLEVBQUEsT0FHQTZELE9BQUE3RCxFQUFBLFVBQ0F4bUIsU0FBQXdt
QixFQUFBLFlBQ0E4RCxLQUFBOUQsRUFBQSxRQUNBK0QsUUFBQS9ELEVBQUEsV0FDQWdFLEVBQUFo
RSxFQUFBLEtBQ0E5bkUsTUFBQThuRSxFQUFBLFNBQ0F2RyxLQUFBdUcsRUFBQSxRQUNBaUUsZUFB
QWpFLEVBQUEsa0JBQ0E3aEIsS0FBQTZoQixFQUFBLFFBQ0Ezc0IsS0FBQTJzQixFQUFBLFFBQ0Fo
Z0MsUUFBQWdnQyxFQUFBLFdBQ0FrRSxRQUFBbEUsRUFBQSxXQUNBbUUsU0FBQW5FLEVBQUEsWUFD
QW9FLGVBQUFwRSxFQUFBLGtCQUNBcUUsS0FBQXJFLEVBQUEsUUFDQXNFLEtBQUF0RSxFQUFBLFFB
Q0FweEUsSUFBQW94RSxFQUFBLE9BQ0F0b0YsS0FBQXNvRixFQUFBLFFBQ0F1RSxNQUFBdkUsRUFB
QSxTQUdBMzRGLEdBQUFELFFBQUEyVixHbk4rZ3ZCTSxTQUFTMVYsRUFBUUQsRUFBU0gsR29ONXF2
QmhDLFlBRUEsSUFBQXU5RixHQUFBdjlGLEVBQUEsSUFDQWdYLEVBQUF1bUYsRUFBQXZtRixlQUVB
c0IsRUFBQXRZLEVBQUEsR0FFQUksR0FBQUQsUUFBQW1ZLEVBQUF0QixJcE40cnZCQSxJQUVNLFNB
QVM1VyxFQUFRRCxFQUFTSCxHcU5yc3ZCaEMsWUFFQSxJQUFBdTlGLEdBQUF2OUYsRUFBQSxJQUNB
OFcsRUFBQXltRixFQUFBem1GLFVBRUEwbUYsRUFBQXg5RixFQUFBLElBQ0FnWCxFQUFBd21GLEVB
QUF4bUYsZUFFQTZpQyxFQUFBNzVDLEVBQUEsSUFDQXNZLEVBQUF0WSxFQUFBLEdBRUFJLEdBQUFE
LFFBQUFtWSxFQUFBeEIsRUFBQUUsRUFBQTZpQyxJck5xdHZCQSxJQUVNLFNBQVN6NUMsRUFBUUQs
R3NOanV2QnZCLFlBSUEsU0FBQXM5RixLQUNBLE1BQUFDLEtBSEEsR0FBQUEsR0FBQSxDQU1BdDlG
LEdBQUFELFFBQUFzOUYsR3ROa3Z2Qk0sU0FBU3I5RixFQUFRRCxFQUFTSCxHdU4zdnZCaEMsWUFn
QkEsSUFBQTI5RixHQUFBLFlBcUNBdjlGLEdBQUFELFFBQUF3OUYsR3ZOMnd2Qk0sU0FBU3Y5RixF
QUFRRCxFQUFTSCxHd05qMHZCaEMsWUFzQkEsU0FBQW1XLEdBQUFoUSxHQUVBLE1BREE0UCxHQUFB
aUIsZUFBQTdRLEdBQUEsT0FBQVMsRUFBQSxPQUNBVCxFQXRCQSxHQUFBUyxHQUFBNUcsRUFBQSxJ
QUVBK1YsRUFBQS9WLEVBQUEsR0FFQUEsR0FBQSxFQXFCQUksR0FBQUQsUUFBQWdXLEd4TmcxdkJN
LFNBQVMvVixFQUFRRCxFQUFTSCxHeU4xMnZCaEMsWUFtQ0EsU0FBQTBxQyxHQUFBcGxDLEVBQUE2
aEIsR0FHQSxNQUFBN2hCLElBQUEsZ0JBQUFBLElBQUEsTUFBQUEsRUFBQVQsSUFFQXNyQixFQUFB
akosT0FBQTVoQixFQUFBVCxLQUdBc2lCLEVBQUF4ZixTQUFBLElBV0EsUUFBQWdqQyxHQUFBeGtD
LEVBQUF5a0MsRUFBQTdnQyxFQUFBOGdDLEdBQ0EsR0FBQTUvQixTQUFBOUUsRUFPQSxJQUxBLGNB
QUE4RSxHQUFBLFlBQUFBLElBRUE5RSxFQUFBLE1BR0EsT0FBQUEsR0FBQSxXQUFBOEUsR0FBQSxX
QUFBQSxHQUdBLFdBQUFBLEdBQUE5RSxFQUFBNlIsV0FBQVIsRUFLQSxNQUpBek4sR0FBQThnQyxF
QUFBMWtDLEVBR0EsS0FBQXlrQyxFQUFBRSxFQUFBSixFQUFBdmtDLEVBQUEsR0FBQXlrQyxHQUNB
LENBR0EsSUFBQXZILEdBQ0EwSCxFQUNBQyxFQUFBLEVBQ0FDLEVBQUEsS0FBQUwsRUFBQUUsRUFB
QUYsRUFBQU0sQ0FFQSxJQUFBOXlCLE1BQUF3UixRQUFBempCLEdBQ0EsT0FBQXhGLEdBQUEsRUFB
bUJBLEVBQUF3RixFQUFBdkQsT0FBcUJqQyxJQUN4QzBpQyxFQUFBbDlCLEVBQUF4RixHQUNBb3FD
LEVBQUFFLEVBQUFQLEVBQUFySCxFQUFBMWlDLEdBQ0FxcUMsR0FBQUwsRUFBQXRILEVBQUEwSCxF
QUFBaGhDLEVBQUE4Z0MsT0FFRyxDQUNILEdBQUFNLEdBQUFDLEVBQUFqbEMsRUFDQSxJQUFBZ2xD
LEVBQUEsQ0FDQSxHQUNBRSxHQURBQyxFQUFBSCxFQUFBNXFDLEtBQUE0RixFQUVBLElBQUFnbEMs
SUFBQWhsQyxFQUFBb2xDLFFBRUEsSUFEQSxHQUFBQyxHQUFBLElBQ0FILEVBQUFDLEVBQUFsRSxR
QUFBcUUsTUFDQXBJLEVBQUFnSSxFQUFBajVCLE1BQ0EyNEIsRUFBQUUsRUFBQVAsRUFBQXJILEVB
QUFtSSxLQUNBUixHQUFBTCxFQUFBdEgsRUFBQTBILEVBQUFoaEMsRUFBQThnQyxPQWVBLFFBQUFR
LEVBQUFDLEVBQUFsRSxRQUFBcUUsTUFBQSxDQUNBLEdBQUFDLEdBQUFMLEVBQUFqNUIsS0FDQXM1
QixLQUNBckksRUFBQXFJLEVBQUEsR0FDQVgsRUFBQUUsRUFBQTlhLEVBQUFqSixPQUFBd2tCLEVB
QUEsSUFBQVIsRUFBQVIsRUFBQXJILEVBQUEsR0FDQTJILEdBQUFMLEVBQUF0SCxFQUFBMEgsRUFB
QWhoQyxFQUFBOGdDLFNBSUssZUFBQTUvQixFQUFBLENBQ0wsR0FBQTBnQyxHQUFBLEdBYUFDLEVB
QUF0b0MsT0FBQTZDLEVBQ29PUyxHQUFBLHlCQUFBZ2xDLEVBQUEscUJBQStHaHJDLE9BQUFzRCxL
QUFBaUMsR0FBQXRDLEtBQUEsVUFBeUMrbkMsRUFBQUQsSUFJNVgsTUFBQVgsR0FtQkEsUUFBQWEs
R0FBQTFsQyxFQUFBNEQsRUFBQThnQztBQUNBLGFBQUExa0MsRUFDQSxFQUdBd2tDLEVBQUF4a0Ms
RUFBQSxHQUFBNEQsRUFBQThnQyxHQS9KQSxHQUFBamtDLEdBQUE1RyxFQUFBLElBR0F3WCxHQURB
eFgsRUFBQSxJQUNBQSxFQUFBLEtBRUFvckMsRUFBQXByQyxFQUFBLEtBRUFtd0IsR0FEQW53QixF
QUFBLEdBQ0FBLEVBQUEsTUFHQThxQyxHQUZBOXFDLEVBQUEsR0FFQSxLQUNBa3JDLEVBQUEsR0F1
SkE5cUMsR0FBQUQsUUFBQTByQyxHek4wM3ZCTSxTQUFTenJDLEVBQVFELEVBQVNILEcwTnhpd0Jo
QyxZQVlBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMsV0FBQUQsR0FBdUNFLFFBQUFG
LEdBa0I3RSxRQUFBSSxLQUNBLE9BQUFxckIsR0FBQWx4QyxVQUFBQyxPQUFBZzdGLEVBQUF4bEYs
TUFBQXk3QixHQUFBQyxFQUFBLEVBQXdFQSxFQUFBRCxFQUFhQyxJQUNyRjhwRCxFQUFBOXBELEdB
QUFueEMsVUFBQW14QyxFQUdBLGlCQUFBbnJCLEdBQ0EsZ0JBQUE0MUIsRUFBQUMsRUFBQUMsR0FD
QSxHQUFBL1IsR0FBQS9qQixFQUFBNDFCLEVBQUFDLEVBQUFDLEdBQ0FvL0MsRUFBQW54RCxFQUFB
MkQsU0FDQXl0RCxLQUVBQyxHQUNBanhELFNBQUFKLEVBQUFJLFNBQ0F1RCxTQUFBLFNBQUF5TyxH
QUNBLE1BQUErK0MsR0FBQS8rQyxJQVFBLE9BTEFnL0MsR0FBQUYsRUFBQWo2RixJQUFBLFNBQUFx
NkYsR0FDQSxNQUFBQSxHQUFBRCxLQUVBRixFQUFBeDBFLEVBQUEsUUFBQWhvQixNQUFBVyxPQUFB
ODdGLEdBQUFweEQsRUFBQTJELFVBRUF0QixLQUF3QnJDLEdBQ3hCMkQsU0FBQXd0RCxNQW5EQTE5
RixFQUFBa29CLFlBQUEsQ0FFQSxJQUFBMG1CLEdBQUFudUMsT0FBQXdDLFFBQUEsU0FBQW1CLEdB
QW1ELE9BQUE1RCxHQUFBLEVBQWdCQSxFQUFBZ0MsVUFBQUMsT0FBc0JqQyxJQUFBLENBQU8sR0FB
QTZELEdBQUE3QixVQUFBaEMsRUFBMkIsUUFBQWtFLEtBQUFMLEdBQTBCNUQsT0FBQUMsVUFBQUMs
ZUFBQVAsS0FBQWlFLEVBQUFLLEtBQXlETixFQUFBTSxHQUFBTCxFQUFBSyxJQUFpQyxNQUFBTixH
QUUvT3BFLEdBQUEsUUFBQXFvQixDQUVBLElBQUFZLEdBQUFwcEIsRUFBQSxJQUVBcXBCLEVBQUFs
QixFQUFBaUIsSTFONmx3Qk0sU0FBU2hwQixFQUFRRCxHMk52bXdCdkIsWUFJQSxTQUFBODlGLEdB
QUFDLEVBQUE3dEQsR0FDQSxrQkFDQSxNQUFBQSxHQUFBNnRELEVBQUE3OEYsTUFBQVcsT0FBQVcs
YUF5QkEsUUFBQThsQixHQUFBMDFFLEVBQUE5dEQsR0FDQSxxQkFBQTh0RCxHQUNBLE1BQUFGLEdB
QUFFLEVBQUE5dEQsRUFHQSxvQkFBQTh0RCxJQUFBLE9BQUFBLEVBQ0EsU0FBQWw4RixPQUFBLGlG
QUFBazhGLEVBQUEsYUFBQUEsSUFBQSw2RkFLQSxRQUZBajZGLEdBQUF0RCxPQUFBc0QsS0FBQWk2
RixHQUNBQyxLQUNBejlGLEVBQUEsRUFBaUJBLEVBQUF1RCxFQUFBdEIsT0FBaUJqQyxJQUFBLENB
Q2xDLEdBQUFrRSxHQUFBWCxFQUFBdkQsR0FDQXU5RixFQUFBQyxFQUFBdDVGLEVBQ0EsbUJBQUFx
NUYsS0FDQUUsRUFBQXY1RixHQUFBbzVGLEVBQUFDLEVBQUE3dEQsSUFHQSxNQUFBK3RELEdBL0NB
aitGLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUEsUUFBQXNvQixHM040cHdCTSxTQUFTcm9CLEVB
QVFELEVBQVNILEc0Ti9wd0JoQyxZQWVBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMs
V0FBQUQsR0FBdUNFLFFBQUFGLEdBRTdFLFFBQUFpMkUsR0FBQXg1RixFQUFBaTZDLEdBQ0EsR0FB
QXcvQyxHQUFBeC9DLEtBQUE3ekMsS0FDQXN6RixFQUFBRCxHQUFBLElBQUFBLEVBQUEzMkYsV0FB
QSxnQkFFQSx1QkFBQTQyRixFQUFBLGNBQUExNUYsRUFBQSxpTEE0QkEsUUFBQTI1RixHQUFBQyxH
QUNBNzlGLE9BQUFzRCxLQUFBdTZGLEdBQUF6NkYsUUFBQSxTQUFBYSxHQUNBLEdBQUEwNUMsR0FB
QWtnRCxFQUFBNTVGLEdBQ0ErOEMsRUFBQXJELEVBQUF2OEMsUUFBMkNpSixLQUFBMmQsRUFBQXUy
QixZQUFBQyxNQUUzQyx1QkFBQXdDLEdBQ0EsU0FBQTMvQyxPQUFBLFlBQUE0QyxFQUFBLGdSQUdB
LElBQUFvRyxHQUFBLGdDQUFBeEQsS0FBQUMsU0FBQUMsU0FBQSxJQUFBMmYsVUFBQSxHQUFBdmpC
LE1BQUEsSUFBQUYsS0FBQSxJQUNBLElBQWdELG1CQUFoRDA2QyxHQUFBdjhDLFFBQW1DaUosU0FD
bkMsU0FBQWhKLE9BQUEsWUFBQTRDLEVBQUEsZ0ZBQUErakIsRUFBQXUyQixZQUFBQyxLQUFBLHFU
QXFCQSxRQUFBMTJCLEdBQUErMUUsR0FHQSxPQUZBQyxHQUFBOTlGLE9BQUFzRCxLQUFBdTZGLEdB
Q0FFLEtBQ0FoK0YsRUFBQSxFQUFpQkEsRUFBQSs5RixFQUFBOTdGLE9BQXdCakMsSUFBQSxDQUN6
QyxHQUFBa0UsR0FBQTY1RixFQUFBLzlGLEVBUUEsbUJBQUE4OUYsR0FBQTU1RixLQUNBODVGLEVB
QUE5NUYsR0FBQTQ1RixFQUFBNTVGLElBR0EsR0FBQSs1RixHQUFBaCtGLE9BQUFzRCxLQUFBeTZG
LEdBT0FFLEVBQUEsTUFDQSxLQUNBTCxFQUFBRyxHQUNHLE1BQUEvOEYsR0FDSGk5RixFQUFBajlG
LEVBR0Esa0JBQ0EsR0FBQXV0QyxHQUFBeHNDLFVBQUFDLE9BQUEsR0FBQVosU0FBQVcsVUFBQSxH
QUFBQSxVQUFBLE1BQ0FtOEMsRUFBQW44QyxVQUFBLEVBRUEsSUFBQWs4RixFQUNBLEtBQUFBLEVB
WUEsUUFGQUMsSUFBQSxFQUNBbC9CLEtBQ0FtL0IsRUFBQSxFQUFvQkEsRUFBQUgsRUFBQWg4RixP
QUE4Qm04RixJQUFBLENBQ2xELEdBQUFqckQsR0FBQThxRCxFQUFBRyxHQUNBeGdELEVBQUFvZ0Qs
RUFBQTdxRCxHQUNBa3JELEVBQUE3dkQsRUFBQTJFLEdBQ0FtckQsRUFBQTFnRCxFQUFBeWdELEVB
QUFsZ0QsRUFDQSx1QkFBQW1nRCxHQUFBLENBQ0EsR0FBQUMsR0FBQWIsRUFBQXZxRCxFQUFBZ0ws
RUFDQSxVQUFBNzhDLE9BQUFpOUYsR0FFQXQvQixFQUFBOXJCLEdBQUFtckQsRUFDQUgsS0FBQUcs
SUFBQUQsRUFFQSxNQUFBRixHQUFBbC9CLEVBQUF6d0IsR0ExSUFodkMsRUFBQWtvQixZQUFBLEVB
Q0Fsb0IsRUFBQSxRQUFBdW9CLENBRUEsSUFBQUUsR0FBQTVvQixFQUFBLElBRUFrekMsRUFBQWx6
QyxFQUFBLElBSUFzcEIsR0FGQW5CLEVBQUErcUIsR0FFQWx6QyxFQUFBLElBRUFtb0IsR0FBQW1C
LEk1TnN5d0JNLFNBQVNscEIsRUFBUUQsRUFBU0gsRzZObnp3QmhDSSxFQUFBRCxRQUFBSCxFQUFB
LE03TjB6d0JNLFNBQVNJLEVBQVFELEVBQVNILEk4TjF6d0JoQyxTQUFBeW5ELEVBQUFybkQsR0FB
QSxZQVVBLFNBQUErbkIsR0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMsV0FBQUQsR0FBdUNFLFFBQUFG
LEdBUjdFeG5CLE9BQUE2bkMsZUFBQXRvQyxFQUFBLGNBQ0FpUyxPQUFBLEdBR0EsSUFNQW9rQixH
QU5BMm9FLEVBQUFuL0YsRUFBQSxLQUVBby9GLEVBQUFqM0UsRUFBQWczRSxFQVFBM29FLEdBREEs
bUJBQUE1ZSxNQUNBQSxLQUNDLG1CQUFBOVAsUUFDREEsT0FDQyxtQkFBQTIvQyxHQUNEQSxFQUVB
cm5ELENBS0EsSUFBQTBuRCxJQUFBLEVBQUFzM0MsRUFBQSxTQUFBNW9FLEVBQ0FyMkIsR0FBQSxR
QUFBMm5ELEk5TjZ6d0I4QnZuRCxLQUFLSixFQUFVLFdBQWEsTUFBT21CLFNBQVl0QixFQUFvQixL
QUFLSSxLQUloRyxTQUFTQSxFQUFRRCxHK043MXdCdkIsWUFNQSxTQUFBay9GLEdBQUE3b0UsR0FD
QSxHQUFBc3hCLEdBQ0F3M0MsRUFBQTlvRSxFQUFBQyxNQWFBLE9BWEEsa0JBQUE2b0UsR0FDQUEs
RUFBQWpnRCxXQUNBeUksRUFBQXczQyxFQUFBamdELFlBRUF5SSxFQUFBdzNDLEVBQUEsY0FDQUEs
RUFBQWpnRCxXQUFBeUksR0FHQUEsRUFBQSxlQUdBQSxFQW5CQWxuRCxPQUFBNm5DLGVBQUF0b0Ms
RUFBQSxjQUNBaVMsT0FBQSxJQUVBalMsRUFBQSxRQUFBay9GLEcvTm8zd0JNLFNBQVNqL0YsRUFB
UUQsRUFBU0gsRUFBcUJ1L0YsR2dPOTJ3QnJELFlBRUEsSUFBQTM0RixHQUFBNUcsRUFBQXUvRixH
QVdBQyxHQVRBeC9GLEVBQUEsR0FTQSxTQUFBeS9GLEdBQ0EsR0FBQUMsR0FBQXArRixJQUNBLElB
QUFvK0YsRUFBQUMsYUFBQS84RixPQUFBLENBQ0EsR0FBQXM1QixHQUFBd2pFLEVBQUFDLGFBQUF6
NEYsS0FFQSxPQURBdzRGLEdBQUFuL0YsS0FBQTI3QixFQUFBdWpFLEdBQ0F2akUsRUFFQSxVQUFB
d2pFLEdBQUFELEtBSUF6eEIsRUFBQSxTQUFBNHhCLEVBQUFDLEdBQ0EsR0FBQUgsR0FBQXArRixJ
QUNBLElBQUFvK0YsRUFBQUMsYUFBQS84RixPQUFBLENBQ0EsR0FBQXM1QixHQUFBd2pFLEVBQUFD
LGFBQUF6NEYsS0FFQSxPQURBdzRGLEdBQUFuL0YsS0FBQTI3QixFQUFBMGpFLEVBQUFDLEdBQ0Ez
akUsRUFFQSxVQUFBd2pFLEdBQUFFLEVBQUFDLElBSUFDLEVBQUEsU0FBQUYsRUFBQUMsRUFBQUUs
R0FDQSxHQUFBTCxHQUFBcCtGLElBQ0EsSUFBQW8rRixFQUFBQyxhQUFBLzhGLE9BQUEsQ0FDQSxH
QUFBczVCLEdBQUF3akUsRUFBQUMsYUFBQXo0RixLQUVBLE9BREF3NEYsR0FBQW4vRixLQUFBMjdC
LEVBQUEwakUsRUFBQUMsRUFBQUUsR0FDQTdqRSxFQUVBLFVBQUF3akUsR0FBQUUsRUFBQUMsRUFB
QUUsSUFJQS92RixFQUFBLFNBQUE0dkYsRUFBQUMsRUFBQUUsRUFBQUMsR0FDQSxHQUFBTixHQUFB
cCtGLElBQ0EsSUFBQW8rRixFQUFBQyxhQUFBLzhGLE9BQUEsQ0FDQSxHQUFBczVCLEdBQUF3akUs
RUFBQUMsYUFBQXo0RixLQUVBLE9BREF3NEYsR0FBQW4vRixLQUFBMjdCLEVBQUEwakUsRUFBQUMs
RUFBQUUsRUFBQUMsR0FDQTlqRSxFQUVBLFVBQUF3akUsR0FBQUUsRUFBQUMsRUFBQUUsRUFBQUMs
SUFJQUMsRUFBQSxTQUFBL2pFLEdBQ0EsR0FBQXdqRSxHQUFBcCtGLElBQ0E0NkIsYUFBQXdqRSxH
QUFBLE9BQUE5NEYsRUFBQSxNQUNBczFCLEVBQUFsdkIsYUFDQTB5RixFQUFBQyxhQUFBLzhGLE9B
QUE4OEYsRUFBQVEsVUFDQVIsRUFBQUMsYUFBQTU0RixLQUFBbTFCLElBSUFpa0UsRUFBQSxHQUNB
QyxFQUFBWixFQVdBbnlGLEVBQUEsU0FBQWd6RixFQUFBQyxHQUdBLEdBQUFDLEdBQUFGLENBT0Es
T0FOQUUsR0FBQVosZ0JBQ0FZLEVBQUEzMkYsVUFBQTAyRixHQUFBRixFQUNBRyxFQUFBTCxXQUNB
SyxFQUFBTCxTQUFBQyxHQUVBSSxFQUFBdHpGLFFBQUFnekYsRUFDQU0sR0FHQW4wRixHQUNBaUIs
ZUFDQW15RixvQkFDQXh4QixvQkFDQTh4QixzQkFDQTl2RixxQkFHQTVQLEdBQUFELFFBQUFpTSIs
ImZpbGUiOiJzdGF0aWMvanMvbWFpbi42OWNkOTY1NS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8q
KioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiov
IFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9
IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioq
KiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9c
bi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0
XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbi8qKioqKiovIFx0XHRcdHJldHVybiBp
bnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0
XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoq
KioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8q
KioqKiovIFx0XHRcdGV4cG9ydHM6IHt9LFxuLyoqKioqKi8gXHRcdFx0aWQ6IG1vZHVsZUlkLFxu
LyoqKioqKi8gXHRcdFx0bG9hZGVkOiBmYWxzZVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xu
LyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRc
dG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBG
bGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmxvYWRlZCA9IHRy
dWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUg
bW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9
XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9i
amVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVf
Xy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxl
IGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVs
ZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoq
KioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi4vXCI7XG4vKioqKioqL1xuLyoqKioq
Ki8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0
cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKi9cbi8qKioqKiovICgoZnVuY3Rpb24obW9kdWxlcykge1xuXHQvLyBDaGVjayBhbGwgbW9k
dWxlcyBmb3IgZGVkdXBsaWNhdGVkIG1vZHVsZXNcblx0Zm9yKHZhciBpIGluIG1vZHVsZXMpIHtc
blx0XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kdWxlcywgaSkp
IHtcblx0XHRcdHN3aXRjaCh0eXBlb2YgbW9kdWxlc1tpXSkge1xuXHRcdFx0Y2FzZSBcImZ1bmN0
aW9uXCI6IGJyZWFrO1xuXHRcdFx0Y2FzZSBcIm9iamVjdFwiOlxuXHRcdFx0XHQvLyBNb2R1bGUg
Y2FuIGJlIGNyZWF0ZWQgZnJvbSBhIHRlbXBsYXRlXG5cdFx0XHRcdG1vZHVsZXNbaV0gPSAoZnVu
Y3Rpb24oX20pIHtcblx0XHRcdFx0XHR2YXIgYXJncyA9IF9tLnNsaWNlKDEpLCBmbiA9IG1vZHVs
ZXNbX21bMF1dO1xuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoYSxiLGMpIHtcblx0XHRcdFx0
XHRcdGZuLmFwcGx5KHRoaXMsIFthLGIsY10uY29uY2F0KGFyZ3MpKTtcblx0XHRcdFx0XHR9O1xu
XHRcdFx0XHR9KG1vZHVsZXNbaV0pKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0Olxu
XHRcdFx0XHQvLyBNb2R1bGUgaXMgYSBjb3B5IG9mIGFub3RoZXIgbW9kdWxlXG5cdFx0XHRcdG1v
ZHVsZXNbaV0gPSBtb2R1bGVzW21vZHVsZXNbaV1dO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1c
blx0XHR9XG5cdH1cblx0cmV0dXJuIG1vZHVsZXM7XG59KFtcbi8qIDAgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFj
a19yZXF1aXJlX18oMTk2KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDIwNCk7XG5cblxuLyoqKi8gfSxcbi8qIDEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMp
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
blx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQv
Kipcblx0ICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3aGljaCB5b3VyIHByb2dy
YW0gYXNzdW1lcyB0byBiZSB0cnVlLlxuXHQgKlxuXHQgKiBQcm92aWRlIHNwcmludGYtc3R5bGUg
Zm9ybWF0IChvbmx5ICVzIGlzIHN1cHBvcnRlZCkgYW5kIGFyZ3VtZW50c1xuXHQgKiB0byBwcm92
aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdlcmVcblx0ICog
ZXhwZWN0aW5nLlxuXHQgKlxuXHQgKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBzdHJp
cHBlZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFudFxuXHQgKiB3aWxsIHJlbWFpbiB0
byBlbnN1cmUgbG9naWMgZG9lcyBub3QgZGlmZmVyIGluIHByb2R1Y3Rpb24uXG5cdCAqL1xuXHRc
blx0dmFyIHZhbGlkYXRlRm9ybWF0ID0gZnVuY3Rpb24gdmFsaWRhdGVGb3JtYXQoZm9ybWF0KSB7
fTtcblx0XG5cdGlmIChmYWxzZSkge1xuXHQgIHZhbGlkYXRlRm9ybWF0ID0gZnVuY3Rpb24gdmFs
aWRhdGVGb3JtYXQoZm9ybWF0KSB7XG5cdCAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtc
blx0ICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVz
c2FnZSBhcmd1bWVudCcpO1xuXHQgICAgfVxuXHQgIH07XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGlu
dmFyaWFudChjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwgZikge1xuXHQgIHZhbGlk
YXRlRm9ybWF0KGZvcm1hdCk7XG5cdFxuXHQgIGlmICghY29uZGl0aW9uKSB7XG5cdCAgICB2YXIg
ZXJyb3I7XG5cdCAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgZXJyb3Ig
PSBuZXcgRXJyb3IoJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWlu
aWZpZWQgZGV2IGVudmlyb25tZW50ICcgKyAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5k
IGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAg
IHZhciBhcmdzID0gW2EsIGIsIGMsIGQsIGUsIGZdO1xuXHQgICAgICB2YXIgYXJnSW5kZXggPSAw
O1xuXHQgICAgICBlcnJvciA9IG5ldyBFcnJvcihmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rp
b24gKCkge1xuXHQgICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuXHQgICAgICB9KSk7
XG5cdCAgICAgIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG5cdCAgICB9XG5c
dFxuXHQgICAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IGlu
dmFyaWFudCdzIG93biBmcmFtZVxuXHQgICAgdGhyb3cgZXJyb3I7XG5cdCAgfVxuXHR9XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IGludmFyaWFudDtcblxuLyoqKi8gfSxcbi8qIDIgKi9cbi8qKiov
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8q
KlxuXHQgKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtc
blx0XG5cdC8qKlxuXHQgKiBTaW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dzIGEgd2Fy
bmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuXG5cdCAqIFRoaXMgY2FuIGJlIHVzZWQg
dG8gbG9nIGlzc3VlcyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgaW4gY3JpdGljYWxcblx0
ICogcGF0aHMuIFJlbW92aW5nIHRoZSBsb2dnaW5nIGNvZGUgZm9yIHByb2R1Y3Rpb24gZW52aXJv
bm1lbnRzIHdpbGwga2VlcCB0aGVcblx0ICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1l
IGNvZGUgcGF0aHMuXG5cdCAqL1xuXHRcblx0dmFyIHdhcm5pbmcgPSBlbXB0eUZ1bmN0aW9uO1xu
XHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgdmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uIHByaW50
V2FybmluZyhmb3JtYXQpIHtcblx0ICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3Ro
LCBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8
IF9sZW47IF9rZXkrKykge1xuXHQgICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5
XTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgYXJnSW5kZXggPSAwO1xuXHQgICAgdmFyIG1lc3Nh
Z2UgPSAnV2FybmluZzogJyArIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG5c
dCAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuXHQgICAgfSk7XG5cdCAgICBpZiAodHlw
ZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdCAgICAgIGNvbnNvbGUuZXJyb3IobWVz
c2FnZSk7XG5cdCAgICB9XG5cdCAgICB0cnkge1xuXHQgICAgICAvLyAtLS0gV2VsY29tZSB0byBk
ZWJ1Z2dpbmcgUmVhY3QgLS0tXG5cdCAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBh
IGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuXHQgICAgICAvLyB0
byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cblx0
ICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuXHQgICAgfSBjYXRjaCAoeCkge31cblx0
ICB9O1xuXHRcblx0ICB3YXJuaW5nID0gZnVuY3Rpb24gd2FybmluZyhjb25kaXRpb24sIGZvcm1h
dCkge1xuXHQgICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgIHRocm93IG5l
dyBFcnJvcignYHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQsIC4uLmFyZ3MpYCByZXF1aXJlcyBh
IHdhcm5pbmcgJyArICdtZXNzYWdlIGFyZ3VtZW50Jyk7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYg
KGZvcm1hdC5pbmRleE9mKCdGYWlsZWQgQ29tcG9zaXRlIHByb3BUeXBlOiAnKSA9PT0gMCkge1xu
XHQgICAgICByZXR1cm47IC8vIElnbm9yZSBDb21wb3NpdGVDb21wb25lbnQgcHJvcHR5cGUgY2hl
Y2suXG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKCFjb25kaXRpb24pIHtcblx0ICAgICAgZm9yICh2
YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIgPiAyID8gX2xl
bjIgLSAyIDogMCksIF9rZXkyID0gMjsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuXHQgICAg
ICAgIGFyZ3NbX2tleTIgLSAyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG5cdCAgICAgIH1cblx0XG5c
dCAgICAgIHByaW50V2FybmluZy5hcHBseSh1bmRlZmluZWQsIFtmb3JtYXRdLmNvbmNhdChhcmdz
KSk7XG5cdCAgICB9XG5cdCAgfTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSB3YXJuaW5n
O1xuXG4vKioqLyB9LFxuLyogMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBc
blx0ICovXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBXQVJOSU5HOiBETyBOT1Qg
bWFudWFsbHkgcmVxdWlyZSB0aGlzIG1vZHVsZS5cblx0ICogVGhpcyBpcyBhIHJlcGxhY2VtZW50
IGZvciBgaW52YXJpYW50KC4uLilgIHVzZWQgYnkgdGhlIGVycm9yIGNvZGUgc3lzdGVtXG5cdCAq
IGFuZCB3aWxsIF9vbmx5XyBiZSByZXF1aXJlZCBieSB0aGUgY29ycmVzcG9uZGluZyBiYWJlbCBw
YXNzLlxuXHQgKiBJdCBhbHdheXMgdGhyb3dzLlxuXHQgKi9cblx0XG5cdGZ1bmN0aW9uIHJlYWN0
UHJvZEludmFyaWFudChjb2RlKSB7XG5cdCAgdmFyIGFyZ0NvdW50ID0gYXJndW1lbnRzLmxlbmd0
aCAtIDE7XG5cdFxuXHQgIHZhciBtZXNzYWdlID0gJ01pbmlmaWVkIFJlYWN0IGVycm9yICMnICsg
Y29kZSArICc7IHZpc2l0ICcgKyAnaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2Nz
L2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9JyArIGNvZGU7XG5cdFxuXHQgIGZvciAodmFy
IGFyZ0lkeCA9IDA7IGFyZ0lkeCA8IGFyZ0NvdW50OyBhcmdJZHgrKykge1xuXHQgICAgbWVzc2Fn
ZSArPSAnJmFyZ3NbXT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1thcmdJZHggKyAx
XSk7XG5cdCAgfVxuXHRcblx0ICBtZXNzYWdlICs9ICcgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3Ig
dXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50JyArICcgZm9yIGZ1bGwgZXJyb3Jz
IGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJztcblx0XG5cdCAgdmFyIGVycm9yID0g
bmV3IEVycm9yKG1lc3NhZ2UpO1xuXHQgIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlv
bic7XG5cdCAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IHJl
YWN0UHJvZEludmFyaWFudCdzIG93biBmcmFtZVxuXHRcblx0ICB0aHJvdyBlcnJvcjtcblx0fVxu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSByZWFjdFByb2RJbnZhcmlhbnQ7XG5cbi8qKiovIH0sXG4v
KiA0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKlxuXHRvYmpl
Y3QtYXNzaWduXG5cdChjKSBTaW5kcmUgU29yaHVzXG5cdEBsaWNlbnNlIE1JVFxuXHQqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHQvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xu
XHR2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cztcblx0dmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eTtcblx0dmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNF
bnVtZXJhYmxlO1xuXHRcblx0ZnVuY3Rpb24gdG9PYmplY3QodmFsKSB7XG5cdFx0aWYgKHZhbCA9
PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJv
cignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQn
KTtcblx0XHR9XG5cdFxuXHRcdHJldHVybiBPYmplY3QodmFsKTtcblx0fVxuXHRcblx0ZnVuY3Rp
b24gc2hvdWxkVXNlTmF0aXZlKCkge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoIU9iamVjdC5hc3Np
Z24pIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcblx0XHRcdC8vIERldGVj
dCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9ucy5c
blx0XG5cdFx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFp
bD9pZD00MTE4XG5cdFx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsgIC8vIGVzbGlu
dC1kaXNhYmxlLWxpbmUgbm8tbmV3LXdyYXBwZXJzXG5cdFx0XHR0ZXN0MVs1XSA9ICdkZSc7XG5c
dFx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtc
blx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcblx0XHRcdC8vIGh0dHBzOi8vYnVn
cy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHRcdHZhciB0ZXN0
MiA9IHt9O1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0XHRcdHRl
c3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHRcdH1cblx0XHRcdHZh
ciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9u
IChuKSB7XG5cdFx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHRcdH0pO1xuXHRcdFx0aWYgKG9y
ZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtc
blx0XHRcdH1cblx0XG5cdFx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNz
dWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0XHR2YXIgdGVzdDMgPSB7fTtcblx0XHRcdCdhYmNkZWZn
aGlqa2xtbm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRc
dFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAoT2JqZWN0
LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0XHQn
YWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1c
blx0XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdC8vIFdl
IGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0dGVyIHRvIGJl
IHNhZmUuXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJn
ZXQsIHNvdXJjZSkge1xuXHRcdHZhciBmcm9tO1xuXHRcdHZhciB0byA9IHRvT2JqZWN0KHRhcmdl
dCk7XG5cdFx0dmFyIHN5bWJvbHM7XG5cdFxuXHRcdGZvciAodmFyIHMgPSAxOyBzIDwgYXJndW1l
bnRzLmxlbmd0aDsgcysrKSB7XG5cdFx0XHRmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7XG5c
dFxuXHRcdFx0Zm9yICh2YXIga2V5IGluIGZyb20pIHtcblx0XHRcdFx0aWYgKGhhc093blByb3Bl
cnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRcdFx0XHRcdHRvW2tleV0gPSBmcm9tW2tleV07XG5c
dFx0XHRcdH1cblx0XHRcdH1cblx0XG5cdFx0XHRpZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7
XG5cdFx0XHRcdHN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRc
dGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGlm
IChwcm9wSXNFbnVtZXJhYmxlLmNhbGwoZnJvbSwgc3ltYm9sc1tpXSkpIHtcblx0XHRcdFx0XHRc
dHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRc
dH1cblx0XHRcdH1cblx0XHR9XG5cdFxuXHRcdHJldHVybiB0bztcblx0fTtcblxuXG4vKioqLyB9
LFxuLyogNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5c
dCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBET01Qcm9wZXJ0eSA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTUpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRGbGFncyA9IF9fd2VicGFja19y
ZXF1aXJlX18oNjEpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18o
MSk7XG5cdFxuXHR2YXIgQVRUUl9OQU1FID0gRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05BTUU7
XG5cdHZhciBGbGFncyA9IFJlYWN0RE9NQ29tcG9uZW50RmxhZ3M7XG5cdFxuXHR2YXIgaW50ZXJu
YWxJbnN0YW5jZUtleSA9ICdfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQnICsgTWF0aC5yYW5kb20o
KS50b1N0cmluZygzNikuc2xpY2UoMik7XG5cdFxuXHQvKipcblx0ICogQ2hlY2sgaWYgYSBnaXZl
biBub2RlIHNob3VsZCBiZSBjYWNoZWQuXG5cdCAqL1xuXHRmdW5jdGlvbiBzaG91bGRQcmVjYWNo
ZU5vZGUobm9kZSwgbm9kZUlEKSB7XG5cdCAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IDEgJiYg
bm9kZS5nZXRBdHRyaWJ1dGUoQVRUUl9OQU1FKSA9PT0gU3RyaW5nKG5vZGVJRCkgfHwgbm9kZS5u
b2RlVHlwZSA9PT0gOCAmJiBub2RlLm5vZGVWYWx1ZSA9PT0gJyByZWFjdC10ZXh0OiAnICsgbm9k
ZUlEICsgJyAnIHx8IG5vZGUubm9kZVR5cGUgPT09IDggJiYgbm9kZS5ub2RlVmFsdWUgPT09ICcg
cmVhY3QtZW1wdHk6ICcgKyBub2RlSUQgKyAnICc7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBEcmls
bCBkb3duICh0aHJvdWdoIGNvbXBvc2l0ZXMgYW5kIGVtcHR5IGNvbXBvbmVudHMpIHVudGlsIHdl
IGdldCBhIGhvc3Qgb3Jcblx0ICogaG9zdCB0ZXh0IGNvbXBvbmVudC5cblx0ICpcblx0ICogVGhp
cyBpcyBwcmV0dHkgcG9seW1vcnBoaWMgYnV0IHVuYXZvaWRhYmxlIHdpdGggdGhlIGN1cnJlbnQg
c3RydWN0dXJlIHdlIGhhdmVcblx0ICogZm9yIGBfcmVuZGVyZWRDaGlsZHJlbmAuXG5cdCAqL1xu
XHRmdW5jdGlvbiBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGNvbXBvbmVudCkg
e1xuXHQgIHZhciByZW5kZXJlZDtcblx0ICB3aGlsZSAocmVuZGVyZWQgPSBjb21wb25lbnQuX3Jl
bmRlcmVkQ29tcG9uZW50KSB7XG5cdCAgICBjb21wb25lbnQgPSByZW5kZXJlZDtcblx0ICB9XG5c
dCAgcmV0dXJuIGNvbXBvbmVudDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFBvcHVsYXRlIGBfaG9z
dE5vZGVgIG9uIHRoZSByZW5kZXJlZCBob3N0L3RleHQgY29tcG9uZW50IHdpdGggdGhlIGdpdmVu
XG5cdCAqIERPTSBub2RlLiBUaGUgcGFzc2VkIGBpbnN0YCBjYW4gYmUgYSBjb21wb3NpdGUuXG5c
dCAqL1xuXHRmdW5jdGlvbiBwcmVjYWNoZU5vZGUoaW5zdCwgbm9kZSkge1xuXHQgIHZhciBob3N0
SW5zdCA9IGdldFJlbmRlcmVkSG9zdE9yVGV4dEZyb21Db21wb25lbnQoaW5zdCk7XG5cdCAgaG9z
dEluc3QuX2hvc3ROb2RlID0gbm9kZTtcblx0ICBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldID0g
aG9zdEluc3Q7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHVuY2FjaGVOb2RlKGluc3QpIHtcblx0ICB2
YXIgbm9kZSA9IGluc3QuX2hvc3ROb2RlO1xuXHQgIGlmIChub2RlKSB7XG5cdCAgICBkZWxldGUg
bm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XTtcblx0ICAgIGluc3QuX2hvc3ROb2RlID0gbnVsbDtc
blx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBQb3B1bGF0ZSBgX2hvc3ROb2RlYCBvbiBlYWNo
IGNoaWxkIG9mIGBpbnN0YCwgYXNzdW1pbmcgdGhhdCB0aGUgY2hpbGRyZW5cblx0ICogbWF0Y2gg
dXAgd2l0aCB0aGUgRE9NIChlbGVtZW50KSBjaGlsZHJlbiBvZiBgbm9kZWAuXG5cdCAqXG5cdCAq
IFdlIGNhY2hlIGVudGlyZSBsZXZlbHMgYXQgb25jZSB0byBhdm9pZCBhbiBuXjIgcHJvYmxlbSB3
aGVyZSB3ZSBhY2Nlc3MgdGhlXG5cdCAqIGNoaWxkcmVuIG9mIGEgbm9kZSBzZXF1ZW50aWFsbHkg
YW5kIGhhdmUgdG8gd2FsayBmcm9tIHRoZSBzdGFydCB0byBvdXIgdGFyZ2V0XG5cdCAqIG5vZGUg
ZXZlcnkgdGltZS5cblx0ICpcblx0ICogU2luY2Ugd2UgdXBkYXRlIGBfcmVuZGVyZWRDaGlsZHJl
bmAgYW5kIHRoZSBhY3R1YWwgRE9NIGF0IChzbGlnaHRseSlcblx0ICogZGlmZmVyZW50IHRpbWVz
LCB3ZSBjb3VsZCByYWNlIGhlcmUgYW5kIHNlZSBhIG5ld2VyIGBfcmVuZGVyZWRDaGlsZHJlbmAg
dGhhblxuXHQgKiB0aGUgRE9NIG5vZGVzIHdlIHNlZS4gVG8gYXZvaWQgdGhpcywgUmVhY3RNdWx0
aUNoaWxkIGNhbGxzXG5cdCAqIGBwcmVwYXJlVG9NYW5hZ2VDaGlsZHJlbmAgYmVmb3JlIHdlIGNo
YW5nZSBgX3JlbmRlcmVkQ2hpbGRyZW5gLCBhdCB3aGljaFxuXHQgKiB0aW1lIHRoZSBjb250YWlu
ZXIncyBjaGlsZCBub2RlcyBhcmUgYWx3YXlzIGNhY2hlZCAodW50aWwgaXQgdW5tb3VudHMpLlxu
XHQgKi9cblx0ZnVuY3Rpb24gcHJlY2FjaGVDaGlsZE5vZGVzKGluc3QsIG5vZGUpIHtcblx0ICBp
ZiAoaW5zdC5fZmxhZ3MgJiBGbGFncy5oYXNDYWNoZWRDaGlsZE5vZGVzKSB7XG5cdCAgICByZXR1
cm47XG5cdCAgfVxuXHQgIHZhciBjaGlsZHJlbiA9IGluc3QuX3JlbmRlcmVkQ2hpbGRyZW47XG5c
dCAgdmFyIGNoaWxkTm9kZSA9IG5vZGUuZmlyc3RDaGlsZDtcblx0ICBvdXRlcjogZm9yICh2YXIg
bmFtZSBpbiBjaGlsZHJlbikge1xuXHQgICAgaWYgKCFjaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShu
YW1lKSkge1xuXHQgICAgICBjb250aW51ZTtcblx0ICAgIH1cblx0ICAgIHZhciBjaGlsZEluc3Qg
PSBjaGlsZHJlbltuYW1lXTtcblx0ICAgIHZhciBjaGlsZElEID0gZ2V0UmVuZGVyZWRIb3N0T3JU
ZXh0RnJvbUNvbXBvbmVudChjaGlsZEluc3QpLl9kb21JRDtcblx0ICAgIGlmIChjaGlsZElEID09
PSAwKSB7XG5cdCAgICAgIC8vIFdlJ3JlIGN1cnJlbnRseSB1bm1vdW50aW5nIHRoaXMgY2hpbGQg
aW4gUmVhY3RNdWx0aUNoaWxkOyBza2lwIGl0LlxuXHQgICAgICBjb250aW51ZTtcblx0ICAgIH1c
blx0ICAgIC8vIFdlIGFzc3VtZSB0aGUgY2hpbGQgbm9kZXMgYXJlIGluIHRoZSBzYW1lIG9yZGVy
IGFzIHRoZSBjaGlsZCBpbnN0YW5jZXMuXG5cdCAgICBmb3IgKDsgY2hpbGROb2RlICE9PSBudWxs
OyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmcpIHtcblx0ICAgICAgaWYgKHNob3Vs
ZFByZWNhY2hlTm9kZShjaGlsZE5vZGUsIGNoaWxkSUQpKSB7XG5cdCAgICAgICAgcHJlY2FjaGVO
b2RlKGNoaWxkSW5zdCwgY2hpbGROb2RlKTtcblx0ICAgICAgICBjb250aW51ZSBvdXRlcjtcblx0
ICAgICAgfVxuXHQgICAgfVxuXHQgICAgLy8gV2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBET00g
Y2hpbGRyZW4gd2l0aG91dCBmaW5kaW5nIGFuIElEIG1hdGNoLlxuXHQgICAgIHRydWUgPyAgZmFs
c2UgPyBpbnZhcmlhbnQoZmFsc2UsICdVbmFibGUgdG8gZmluZCBlbGVtZW50IHdpdGggSUQgJXMu
JywgY2hpbGRJRCkgOiBfcHJvZEludmFyaWFudCgnMzInLCBjaGlsZElEKSA6IHZvaWQgMDtcblx0
ICB9XG5cdCAgaW5zdC5fZmxhZ3MgfD0gRmxhZ3MuaGFzQ2FjaGVkQ2hpbGROb2Rlcztcblx0fVxu
XHRcblx0LyoqXG5cdCAqIEdpdmVuIGEgRE9NIG5vZGUsIHJldHVybiB0aGUgY2xvc2VzdCBSZWFj
dERPTUNvbXBvbmVudCBvclxuXHQgKiBSZWFjdERPTVRleHRDb21wb25lbnQgaW5zdGFuY2UgYW5j
ZXN0b3IuXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShub2Rl
KSB7XG5cdCAgaWYgKG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0pIHtcblx0ICAgIHJldHVybiBu
b2RlW2ludGVybmFsSW5zdGFuY2VLZXldO1xuXHQgIH1cblx0XG5cdCAgLy8gV2FsayB1cCB0aGUg
dHJlZSB1bnRpbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdob3NlIGluc3RhbmNlIHdlIGhhdmUgY2Fj
aGVkLlxuXHQgIHZhciBwYXJlbnRzID0gW107XG5cdCAgd2hpbGUgKCFub2RlW2ludGVybmFsSW5z
dGFuY2VLZXldKSB7XG5cdCAgICBwYXJlbnRzLnB1c2gobm9kZSk7XG5cdCAgICBpZiAobm9kZS5w
YXJlbnROb2RlKSB7XG5cdCAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG5cdCAgICB9IGVs
c2Uge1xuXHQgICAgICAvLyBUb3Agb2YgdGhlIHRyZWUuIFRoaXMgbm9kZSBtdXN0IG5vdCBiZSBw
YXJ0IG9mIGEgUmVhY3QgdHJlZSAob3IgaXNcblx0ICAgICAgLy8gdW5tb3VudGVkLCBwb3RlbnRp
YWxseSkuXG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgdmFy
IGNsb3Nlc3Q7XG5cdCAgdmFyIGluc3Q7XG5cdCAgZm9yICg7IG5vZGUgJiYgKGluc3QgPSBub2Rl
W2ludGVybmFsSW5zdGFuY2VLZXldKTsgbm9kZSA9IHBhcmVudHMucG9wKCkpIHtcblx0ICAgIGNs
b3Nlc3QgPSBpbnN0O1xuXHQgICAgaWYgKHBhcmVudHMubGVuZ3RoKSB7XG5cdCAgICAgIHByZWNh
Y2hlQ2hpbGROb2RlcyhpbnN0LCBub2RlKTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIHJldHVy
biBjbG9zZXN0O1xuXHR9XG5cdFxuXHQvKipcblx0ICogR2l2ZW4gYSBET00gbm9kZSwgcmV0dXJu
IHRoZSBSZWFjdERPTUNvbXBvbmVudCBvciBSZWFjdERPTVRleHRDb21wb25lbnRcblx0ICogaW5z
dGFuY2UsIG9yIG51bGwgaWYgdGhlIG5vZGUgd2FzIG5vdCByZW5kZXJlZCBieSB0aGlzIFJlYWN0
LlxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKSB7XG5cdCAgdmFy
IGluc3QgPSBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShub2RlKTtcblx0ICBpZiAoaW5zdCAh
PSBudWxsICYmIGluc3QuX2hvc3ROb2RlID09PSBub2RlKSB7XG5cdCAgICByZXR1cm4gaW5zdDtc
blx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipc
blx0ICogR2l2ZW4gYSBSZWFjdERPTUNvbXBvbmVudCBvciBSZWFjdERPTVRleHRDb21wb25lbnQs
IHJldHVybiB0aGUgY29ycmVzcG9uZGluZ1xuXHQgKiBET00gbm9kZS5cblx0ICovXG5cdGZ1bmN0
aW9uIGdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkge1xuXHQgIC8vIFdpdGhvdXQgdGhpcyBmaXJz
dCBpbnZhcmlhbnQsIHBhc3NpbmcgYSBub24tRE9NLWNvbXBvbmVudCB0cmlnZ2VycyB0aGUgbmV4
dFxuXHQgIC8vIGludmFyaWFudCBmb3IgYSBtaXNzaW5nIHBhcmVudCwgd2hpY2ggaXMgc3VwZXIg
Y29uZnVzaW5nLlxuXHQgICEoaW5zdC5faG9zdE5vZGUgIT09IHVuZGVmaW5lZCkgPyAgZmFsc2Ug
PyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50
LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7XG5cdFxuXHQgIGlmIChpbnN0Ll9o
b3N0Tm9kZSkge1xuXHQgICAgcmV0dXJuIGluc3QuX2hvc3ROb2RlO1xuXHQgIH1cblx0XG5cdCAg
Ly8gV2FsayB1cCB0aGUgdHJlZSB1bnRpbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdob3NlIERPTSBu
b2RlIHdlIGhhdmUgY2FjaGVkLlxuXHQgIHZhciBwYXJlbnRzID0gW107XG5cdCAgd2hpbGUgKCFp
bnN0Ll9ob3N0Tm9kZSkge1xuXHQgICAgcGFyZW50cy5wdXNoKGluc3QpO1xuXHQgICAgIWluc3Qu
X2hvc3RQYXJlbnQgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdCBET00gdHJlZSBy
b290IHNob3VsZCBhbHdheXMgaGF2ZSBhIG5vZGUgcmVmZXJlbmNlLicpIDogX3Byb2RJbnZhcmlh
bnQoJzM0JykgOiB2b2lkIDA7XG5cdCAgICBpbnN0ID0gaW5zdC5faG9zdFBhcmVudDtcblx0ICB9
XG5cdFxuXHQgIC8vIE5vdyBwYXJlbnRzIGNvbnRhaW5zIGVhY2ggYW5jZXN0b3IgdGhhdCBkb2Vz
ICpub3QqIGhhdmUgYSBjYWNoZWQgbmF0aXZlXG5cdCAgLy8gbm9kZSwgYW5kIGBpbnN0YCBpcyB0
aGUgZGVlcGVzdCBhbmNlc3RvciB0aGF0IGRvZXMuXG5cdCAgZm9yICg7IHBhcmVudHMubGVuZ3Ro
OyBpbnN0ID0gcGFyZW50cy5wb3AoKSkge1xuXHQgICAgcHJlY2FjaGVDaGlsZE5vZGVzKGluc3Qs
IGluc3QuX2hvc3ROb2RlKTtcblx0ICB9XG5cdFxuXHQgIHJldHVybiBpbnN0Ll9ob3N0Tm9kZTtc
blx0fVxuXHRcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHtcblx0ICBnZXRDbG9zZXN0
SW5zdGFuY2VGcm9tTm9kZTogZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUsXG5cdCAgZ2V0SW5z
dGFuY2VGcm9tTm9kZTogZ2V0SW5zdGFuY2VGcm9tTm9kZSxcblx0ICBnZXROb2RlRnJvbUluc3Rh
bmNlOiBnZXROb2RlRnJvbUluc3RhbmNlLFxuXHQgIHByZWNhY2hlQ2hpbGROb2RlczogcHJlY2Fj
aGVDaGlsZE5vZGVzLFxuXHQgIHByZWNhY2hlTm9kZTogcHJlY2FjaGVOb2RlLFxuXHQgIHVuY2Fj
aGVOb2RlOiB1bmNhY2hlTm9kZVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERP
TUNvbXBvbmVudFRyZWU7XG5cbi8qKiovIH0sXG4vKiA2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGNhblVzZURPTSA9
ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3
aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cdFxuXHQvKipcblx0ICogU2ltcGxlLCBs
aWdodHdlaWdodCBtb2R1bGUgYXNzaXN0aW5nIHdpdGggdGhlIGRldGVjdGlvbiBhbmQgY29udGV4
dCBvZlxuXHQgKiBXb3JrZXIuIEhlbHBzIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBhbmQg
YWxsb3dzIGNvZGUgdG8gcmVhc29uIGFib3V0XG5cdCAqIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJl
IGluIGEgV29ya2VyLCBldmVuIGlmIHRoZXkgbmV2ZXIgaW5jbHVkZSB0aGUgbWFpblxuXHQgKiBg
UmVhY3RXb3JrZXJgIGRlcGVuZGVuY3kuXG5cdCAqL1xuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1l
bnQgPSB7XG5cdFxuXHQgIGNhblVzZURPTTogY2FuVXNlRE9NLFxuXHRcblx0ICBjYW5Vc2VXb3Jr
ZXJzOiB0eXBlb2YgV29ya2VyICE9PSAndW5kZWZpbmVkJyxcblx0XG5cdCAgY2FuVXNlRXZlbnRM
aXN0ZW5lcnM6IGNhblVzZURPTSAmJiAhISh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciB8fCB3aW5k
b3cuYXR0YWNoRXZlbnQpLFxuXHRcblx0ICBjYW5Vc2VWaWV3cG9ydDogY2FuVXNlRE9NICYmICEh
d2luZG93LnNjcmVlbixcblx0XG5cdCAgaXNJbldvcmtlcjogIWNhblVzZURPTSAvLyBGb3Igbm93
LCB0aGlzIGlzIHRydWUgLSBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cblx0XG5cdH07XG5c
dFxuXHRtb2R1bGUuZXhwb3J0cyA9IEV4ZWN1dGlvbkVudmlyb25tZW50O1xuXG4vKioqLyB9LFxu
LyogNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0XCJ1c2Ugc3Ry
aWN0XCI7XG5cdFxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqIFxuXHQgKi9cblx0XG5cdGZ1bmN0aW9uIG1ha2VFbXB0eUZ1bmN0aW9uKGFyZykge1xu
XHQgIHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gYXJnO1xuXHQgIH07XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgYW5kIGRpc2NhcmRzIGlucHV0
czsgaXQgaGFzIG5vIHNpZGUgZWZmZWN0cy4gVGhpcyBpc1xuXHQgKiBwcmltYXJpbHkgdXNlZnVs
IGlkaW9tYXRpY2FsbHkgZm9yIG92ZXJyaWRhYmxlIGZ1bmN0aW9uIGVuZHBvaW50cyB3aGljaFxu
XHQgKiBhbHdheXMgbmVlZCB0byBiZSBjYWxsYWJsZSwgc2luY2UgSlMgbGFja3MgYSBudWxsLWNh
bGwgaWRpb20gYWxhIENvY29hLlxuXHQgKi9cblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBmdW5jdGlv
biBlbXB0eUZ1bmN0aW9uKCkge307XG5cdFxuXHRlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zID0g
bWFrZUVtcHR5RnVuY3Rpb247XG5cdGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZSA9IG1h
a2VFbXB0eUZ1bmN0aW9uKGZhbHNlKTtcblx0ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWUg
PSBtYWtlRW1wdHlGdW5jdGlvbih0cnVlKTtcblx0ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051
bGwgPSBtYWtlRW1wdHlGdW5jdGlvbihudWxsKTtcblx0ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJu
c1RoaXMgPSBmdW5jdGlvbiAoKSB7XG5cdCAgcmV0dXJuIHRoaXM7XG5cdH07XG5cdGVtcHR5RnVu
Y3Rpb24udGhhdFJldHVybnNBcmd1bWVudCA9IGZ1bmN0aW9uIChhcmcpIHtcblx0ICByZXR1cm4g
YXJnO1xuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBlbXB0eUZ1bmN0aW9uO1xuXG4vKioq
LyB9LFxuLyogOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8vIFRydXN0IHRoZSBk
ZXZlbG9wZXIgdG8gb25seSB1c2UgUmVhY3RJbnN0cnVtZW50YXRpb24gd2l0aCBhIF9fREVWX18g
Y2hlY2tcblx0XG5cdHZhciBkZWJ1Z1Rvb2wgPSBudWxsO1xuXHRcblx0aWYgKGZhbHNlKSB7XG5c
dCAgdmFyIFJlYWN0RGVidWdUb29sID0gcmVxdWlyZSgnLi9SZWFjdERlYnVnVG9vbCcpO1xuXHQg
IGRlYnVnVG9vbCA9IFJlYWN0RGVidWdUb29sO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IHsgZGVidWdUb29sOiBkZWJ1Z1Rvb2wgfTtcblxuLyoqKi8gfSxcbi8qIDkgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyks
XG5cdCAgICBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBDYWxs
YmFja1F1ZXVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OSk7XG5cdHZhciBQb29sZWRDbGFzcyA9
IF9fd2VicGFja19yZXF1aXJlX18oMTMpO1xuXHR2YXIgUmVhY3RGZWF0dXJlRmxhZ3MgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDY0KTtcblx0dmFyIFJlYWN0UmVjb25jaWxlciA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTYpO1xuXHR2YXIgVHJhbnNhY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3
KTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0
dmFyIGRpcnR5Q29tcG9uZW50cyA9IFtdO1xuXHR2YXIgdXBkYXRlQmF0Y2hOdW1iZXIgPSAwO1xu
XHR2YXIgYXNhcENhbGxiYWNrUXVldWUgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZCgpO1xuXHR2
YXIgYXNhcEVucXVldWVkID0gZmFsc2U7XG5cdFxuXHR2YXIgYmF0Y2hpbmdTdHJhdGVneSA9IG51
bGw7XG5cdFxuXHRmdW5jdGlvbiBlbnN1cmVJbmplY3RlZCgpIHtcblx0ICAhKFJlYWN0VXBkYXRl
cy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uICYmIGJhdGNoaW5nU3RyYXRlZ3kpID8gIGZhbHNl
ID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IGluamVjdCBhIHJlY29uY2ls
ZSB0cmFuc2FjdGlvbiBjbGFzcyBhbmQgYmF0Y2hpbmcgc3RyYXRlZ3knKSA6IF9wcm9kSW52YXJp
YW50KCcxMjMnKSA6IHZvaWQgMDtcblx0fVxuXHRcblx0dmFyIE5FU1RFRF9VUERBVEVTID0ge1xu
XHQgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMuZGlydHlDb21wb25lbnRz
TGVuZ3RoID0gZGlydHlDb21wb25lbnRzLmxlbmd0aDtcblx0ICB9LFxuXHQgIGNsb3NlOiBmdW5j
dGlvbiAoKSB7XG5cdCAgICBpZiAodGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggIT09IGRpcnR5
Q29tcG9uZW50cy5sZW5ndGgpIHtcblx0ICAgICAgLy8gQWRkaXRpb25hbCB1cGRhdGVzIHdlcmUg
ZW5xdWV1ZWQgYnkgY29tcG9uZW50RGlkVXBkYXRlIGhhbmRsZXJzIG9yXG5cdCAgICAgIC8vIHNp
bWlsYXI7IGJlZm9yZSBvdXIgb3duIFVQREFURV9RVUVVRUlORyB3cmFwcGVyIGNsb3Nlcywgd2Ug
d2FudCB0byBydW5cblx0ICAgICAgLy8gdGhlc2UgbmV3IHVwZGF0ZXMgc28gdGhhdCBpZiBBJ3Mg
Y29tcG9uZW50RGlkVXBkYXRlIGNhbGxzIHNldFN0YXRlIG9uXG5cdCAgICAgIC8vIEIsIEIgd2ls
bCB1cGRhdGUgYmVmb3JlIHRoZSBjYWxsYmFjayBBJ3MgdXBkYXRlciBwcm92aWRlZCB3aGVuIGNh
bGxpbmdcblx0ICAgICAgLy8gc2V0U3RhdGUuXG5cdCAgICAgIGRpcnR5Q29tcG9uZW50cy5zcGxp
Y2UoMCwgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgpO1xuXHQgICAgICBmbHVzaEJhdGNoZWRV
cGRhdGVzKCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBkaXJ0eUNvbXBvbmVudHMubGVuZ3Ro
ID0gMDtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHR2YXIgVVBEQVRFX1FVRVVFSU5HID0g
e1xuXHQgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMuY2FsbGJhY2tRdWV1
ZS5yZXNldCgpO1xuXHQgIH0sXG5cdCAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMu
Y2FsbGJhY2tRdWV1ZS5ub3RpZnlBbGwoKTtcblx0ICB9XG5cdH07XG5cdFxuXHR2YXIgVFJBTlNB
Q1RJT05fV1JBUFBFUlMgPSBbTkVTVEVEX1VQREFURVMsIFVQREFURV9RVUVVRUlOR107XG5cdFxu
XHRmdW5jdGlvbiBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uKCkge1xuXHQgIHRoaXMucmVp
bml0aWFsaXplVHJhbnNhY3Rpb24oKTtcblx0ICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9
IG51bGw7XG5cdCAgdGhpcy5jYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQo
KTtcblx0ICB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzLlJlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKFxuXHQgIC8qIHVzZUNyZWF0ZUVsZW1lbnQgKi90
cnVlKTtcblx0fVxuXHRcblx0X2Fzc2lnbihSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLnBy
b3RvdHlwZSwgVHJhbnNhY3Rpb24sIHtcblx0ICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBmdW5j
dGlvbiAoKSB7XG5cdCAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG5cdCAgfSxcblx0
XG5cdCAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy5kaXJ0eUNvbXBvbmVu
dHNMZW5ndGggPSBudWxsO1xuXHQgICAgQ2FsbGJhY2tRdWV1ZS5yZWxlYXNlKHRoaXMuY2FsbGJh
Y2tRdWV1ZSk7XG5cdCAgICB0aGlzLmNhbGxiYWNrUXVldWUgPSBudWxsO1xuXHQgICAgUmVhY3RV
cGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2lsZVRy
YW5zYWN0aW9uKTtcblx0ICAgIHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24gPSBudWxsO1xuXHQg
IH0sXG5cdFxuXHQgIHBlcmZvcm06IGZ1bmN0aW9uIChtZXRob2QsIHNjb3BlLCBhKSB7XG5cdCAg
ICAvLyBFc3NlbnRpYWxseSBjYWxscyBgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3Jt
KG1ldGhvZCwgc2NvcGUsIGEpYFxuXHQgICAgLy8gd2l0aCB0aGlzIHRyYW5zYWN0aW9uJ3Mgd3Jh
cHBlcnMgYXJvdW5kIGl0LlxuXHQgICAgcmV0dXJuIFRyYW5zYWN0aW9uLnBlcmZvcm0uY2FsbCh0
aGlzLCB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLnBlcmZvcm0sIHRoaXMucmVjb25jaWxlVHJh
bnNhY3Rpb24sIG1ldGhvZCwgc2NvcGUsIGEpO1xuXHQgIH1cblx0fSk7XG5cdFxuXHRQb29sZWRD
bGFzcy5hZGRQb29saW5nVG8oUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbik7XG5cdFxuXHRm
dW5jdGlvbiBiYXRjaGVkVXBkYXRlcyhjYWxsYmFjaywgYSwgYiwgYywgZCwgZSkge1xuXHQgIGVu
c3VyZUluamVjdGVkKCk7XG5cdCAgcmV0dXJuIGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0
ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQXJyYXkg
Y29tcGFyYXRvciBmb3IgUmVhY3RDb21wb25lbnRzIGJ5IG1vdW50IG9yZGVyaW5nLlxuXHQgKlxu
XHQgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjMSBmaXJzdCBjb21wb25lbnQgeW91J3JlIGNv
bXBhcmluZ1xuXHQgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjMiBzZWNvbmQgY29tcG9uZW50
IHlvdSdyZSBjb21wYXJpbmdcblx0ICogQHJldHVybiB7bnVtYmVyfSBSZXR1cm4gdmFsdWUgdXNh
YmxlIGJ5IEFycmF5LnByb3RvdHlwZS5zb3J0KCkuXG5cdCAqL1xuXHRmdW5jdGlvbiBtb3VudE9y
ZGVyQ29tcGFyYXRvcihjMSwgYzIpIHtcblx0ICByZXR1cm4gYzEuX21vdW50T3JkZXIgLSBjMi5f
bW91bnRPcmRlcjtcblx0fVxuXHRcblx0ZnVuY3Rpb24gcnVuQmF0Y2hlZFVwZGF0ZXModHJhbnNh
Y3Rpb24pIHtcblx0ICB2YXIgbGVuID0gdHJhbnNhY3Rpb24uZGlydHlDb21wb25lbnRzTGVuZ3Ro
O1xuXHQgICEobGVuID09PSBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSA/ICBmYWxzZSA/IGludmFy
aWFudChmYWxzZSwgJ0V4cGVjdGVkIGZsdXNoIHRyYW5zYWN0aW9uXFwncyBzdG9yZWQgZGlydHkt
Y29tcG9uZW50cyBsZW5ndGggKCVzKSB0byBtYXRjaCBkaXJ0eS1jb21wb25lbnRzIGFycmF5IGxl
bmd0aCAoJXMpLicsIGxlbiwgZGlydHlDb21wb25lbnRzLmxlbmd0aCkgOiBfcHJvZEludmFyaWFu
dCgnMTI0JywgbGVuLCBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSA6IHZvaWQgMDtcblx0XG5cdCAg
Ly8gU2luY2UgcmVjb25jaWxpbmcgYSBjb21wb25lbnQgaGlnaGVyIGluIHRoZSBvd25lciBoaWVy
YXJjaHkgdXN1YWxseSAobm90XG5cdCAgLy8gYWx3YXlzIC0tIHNlZSBzaG91bGRDb21wb25lbnRV
cGRhdGUoKSkgd2lsbCByZWNvbmNpbGUgY2hpbGRyZW4sIHJlY29uY2lsZVxuXHQgIC8vIHRoZW0g
YmVmb3JlIHRoZWlyIGNoaWxkcmVuIGJ5IHNvcnRpbmcgdGhlIGFycmF5LlxuXHQgIGRpcnR5Q29t
cG9uZW50cy5zb3J0KG1vdW50T3JkZXJDb21wYXJhdG9yKTtcblx0XG5cdCAgLy8gQW55IHVwZGF0
ZXMgZW5xdWV1ZWQgd2hpbGUgcmVjb25jaWxpbmcgbXVzdCBiZSBwZXJmb3JtZWQgYWZ0ZXIgdGhp
cyBlbnRpcmVcblx0ICAvLyBiYXRjaC4gT3RoZXJ3aXNlLCBpZiBkaXJ0eUNvbXBvbmVudHMgaXMg
W0EsIEJdIHdoZXJlIEEgaGFzIGNoaWxkcmVuIEIgYW5kXG5cdCAgLy8gQywgQiBjb3VsZCB1cGRh
dGUgdHdpY2UgaW4gYSBzaW5nbGUgYmF0Y2ggaWYgQydzIHJlbmRlciBlbnF1ZXVlcyBhbiB1cGRh
dGVcblx0ICAvLyB0byBCIChzaW5jZSBCIHdvdWxkIGhhdmUgYWxyZWFkeSB1cGRhdGVkLCB3ZSBz
aG91bGQgc2tpcCBpdCwgYW5kIHRoZSBvbmx5XG5cdCAgLy8gd2F5IHdlIGNhbiBrbm93IHRvIGRv
IHNvIGlzIGJ5IGNoZWNraW5nIHRoZSBiYXRjaCBjb3VudGVyKS5cblx0ICB1cGRhdGVCYXRjaE51
bWJlcisrO1xuXHRcblx0ICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdCAgICAv
LyBJZiBhIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQgYmVmb3JlIHBlbmRpbmcgY2hhbmdlcyBhcHBs
eSwgaXQgd2lsbCBzdGlsbFxuXHQgICAgLy8gYmUgaGVyZSwgYnV0IHdlIGFzc3VtZSB0aGF0IGl0
IGhhcyBjbGVhcmVkIGl0cyBfcGVuZGluZ0NhbGxiYWNrcyBhbmRcblx0ICAgIC8vIHRoYXQgcGVy
Zm9ybVVwZGF0ZUlmTmVjZXNzYXJ5IGlzIGEgbm9vcC5cblx0ICAgIHZhciBjb21wb25lbnQgPSBk
aXJ0eUNvbXBvbmVudHNbaV07XG5cdFxuXHQgICAgLy8gSWYgcGVyZm9ybVVwZGF0ZUlmTmVjZXNz
YXJ5IGhhcHBlbnMgdG8gZW5xdWV1ZSBhbnkgbmV3IHVwZGF0ZXMsIHdlXG5cdCAgICAvLyBzaG91
bGRuJ3QgZXhlY3V0ZSB0aGUgY2FsbGJhY2tzIHVudGlsIHRoZSBuZXh0IHJlbmRlciBoYXBwZW5z
LCBzb1xuXHQgICAgLy8gc3Rhc2ggdGhlIGNhbGxiYWNrcyBmaXJzdFxuXHQgICAgdmFyIGNhbGxi
YWNrcyA9IGNvbXBvbmVudC5fcGVuZGluZ0NhbGxiYWNrcztcblx0ICAgIGNvbXBvbmVudC5fcGVu
ZGluZ0NhbGxiYWNrcyA9IG51bGw7XG5cdFxuXHQgICAgdmFyIG1hcmtlck5hbWU7XG5cdCAgICBp
ZiAoUmVhY3RGZWF0dXJlRmxhZ3MubG9nVG9wTGV2ZWxSZW5kZXJzKSB7XG5cdCAgICAgIHZhciBu
YW1lZENvbXBvbmVudCA9IGNvbXBvbmVudDtcblx0ICAgICAgLy8gRHVjayB0eXBlIFRvcExldmVs
V3JhcHBlci4gVGhpcyBpcyBwcm9iYWJseSBhbHdheXMgdHJ1ZS5cblx0ICAgICAgaWYgKGNvbXBv
bmVudC5fY3VycmVudEVsZW1lbnQudHlwZS5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyKSB7XG5cdCAg
ICAgICAgbmFtZWRDb21wb25lbnQgPSBjb21wb25lbnQuX3JlbmRlcmVkQ29tcG9uZW50O1xuXHQg
ICAgICB9XG5cdCAgICAgIG1hcmtlck5hbWUgPSAnUmVhY3QgdXBkYXRlOiAnICsgbmFtZWRDb21w
b25lbnQuZ2V0TmFtZSgpO1xuXHQgICAgICBjb25zb2xlLnRpbWUobWFya2VyTmFtZSk7XG5cdCAg
ICB9XG5cdFxuXHQgICAgUmVhY3RSZWNvbmNpbGVyLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeShj
b21wb25lbnQsIHRyYW5zYWN0aW9uLnJlY29uY2lsZVRyYW5zYWN0aW9uLCB1cGRhdGVCYXRjaE51
bWJlcik7XG5cdFxuXHQgICAgaWYgKG1hcmtlck5hbWUpIHtcblx0ICAgICAgY29uc29sZS50aW1l
RW5kKG1hcmtlck5hbWUpO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChjYWxsYmFja3MpIHtcblx0
ICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjYWxsYmFja3MubGVuZ3RoOyBqKyspIHtcblx0ICAg
ICAgICB0cmFuc2FjdGlvbi5jYWxsYmFja1F1ZXVlLmVucXVldWUoY2FsbGJhY2tzW2pdLCBjb21w
b25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5c
dH1cblx0XG5cdHZhciBmbHVzaEJhdGNoZWRVcGRhdGVzID0gZnVuY3Rpb24gKCkge1xuXHQgIC8v
IFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24ncyB3cmFwcGVycyB3aWxsIGNsZWFyIHRoZSBk
aXJ0eUNvbXBvbmVudHNcblx0ICAvLyBhcnJheSBhbmQgcGVyZm9ybSBhbnkgdXBkYXRlcyBlbnF1
ZXVlZCBieSBtb3VudC1yZWFkeSBoYW5kbGVycyAoaS5lLixcblx0ICAvLyBjb21wb25lbnREaWRV
cGRhdGUpIGJ1dCB3ZSBuZWVkIHRvIGNoZWNrIGhlcmUgdG9vIGluIG9yZGVyIHRvIGNhdGNoXG5c
dCAgLy8gdXBkYXRlcyBlbnF1ZXVlZCBieSBzZXRTdGF0ZSBjYWxsYmFja3MgYW5kIGFzYXAgY2Fs
bHMuXG5cdCAgd2hpbGUgKGRpcnR5Q29tcG9uZW50cy5sZW5ndGggfHwgYXNhcEVucXVldWVkKSB7
XG5cdCAgICBpZiAoZGlydHlDb21wb25lbnRzLmxlbmd0aCkge1xuXHQgICAgICB2YXIgdHJhbnNh
Y3Rpb24gPSBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLmdldFBvb2xlZCgpO1xuXHQgICAg
ICB0cmFuc2FjdGlvbi5wZXJmb3JtKHJ1bkJhdGNoZWRVcGRhdGVzLCBudWxsLCB0cmFuc2FjdGlv
bik7XG5cdCAgICAgIFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24ucmVsZWFzZSh0cmFuc2Fj
dGlvbik7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGFzYXBFbnF1ZXVlZCkge1xuXHQgICAgICBh
c2FwRW5xdWV1ZWQgPSBmYWxzZTtcblx0ICAgICAgdmFyIHF1ZXVlID0gYXNhcENhbGxiYWNrUXVl
dWU7XG5cdCAgICAgIGFzYXBDYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQo
KTtcblx0ICAgICAgcXVldWUubm90aWZ5QWxsKCk7XG5cdCAgICAgIENhbGxiYWNrUXVldWUucmVs
ZWFzZShxdWV1ZSk7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIE1hcmsg
YSBjb21wb25lbnQgYXMgbmVlZGluZyBhIHJlcmVuZGVyLCBhZGRpbmcgYW4gb3B0aW9uYWwgY2Fs
bGJhY2sgdG8gYVxuXHQgKiBsaXN0IG9mIGZ1bmN0aW9ucyB3aGljaCB3aWxsIGJlIGV4ZWN1dGVk
IG9uY2UgdGhlIHJlcmVuZGVyIG9jY3Vycy5cblx0ICovXG5cdGZ1bmN0aW9uIGVucXVldWVVcGRh
dGUoY29tcG9uZW50KSB7XG5cdCAgZW5zdXJlSW5qZWN0ZWQoKTtcblx0XG5cdCAgLy8gVmFyaW91
cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG5c
dCAgLy8gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVu
ZGVyIGFyZW4ndCBuZXN0ZWQ7XG5cdCAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdzIHRoZSBjYXNlLiAo
VGhpcyBpcyBjYWxsZWQgYnkgZWFjaCB0b3AtbGV2ZWwgdXBkYXRlXG5cdCAgLy8gZnVuY3Rpb24s
IGxpa2Ugc2V0U3RhdGUsIGZvcmNlVXBkYXRlLCBldGMuOyBjcmVhdGlvbiBhbmRcblx0ICAvLyBk
ZXN0cnVjdGlvbiBvZiB0b3AtbGV2ZWwgY29tcG9uZW50cyBpcyBndWFyZGVkIGluIFJlYWN0TW91
bnQuKVxuXHRcblx0ICBpZiAoIWJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMpIHtc
blx0ICAgIGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMoZW5xdWV1ZVVwZGF0ZSwgY29t
cG9uZW50KTtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdFxuXHQgIGRpcnR5Q29tcG9uZW50cy5w
dXNoKGNvbXBvbmVudCk7XG5cdCAgaWYgKGNvbXBvbmVudC5fdXBkYXRlQmF0Y2hOdW1iZXIgPT0g
bnVsbCkge1xuXHQgICAgY29tcG9uZW50Ll91cGRhdGVCYXRjaE51bWJlciA9IHVwZGF0ZUJhdGNo
TnVtYmVyICsgMTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBFbnF1ZXVlIGEgY2FsbGJh
Y2sgdG8gYmUgcnVuIGF0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgYmF0Y2hpbmcgY3ljbGUuIFRo
cm93c1xuXHQgKiBpZiBubyB1cGRhdGVzIGFyZSBjdXJyZW50bHkgYmVpbmcgcGVyZm9ybWVkLlxu
XHQgKi9cblx0ZnVuY3Rpb24gYXNhcChjYWxsYmFjaywgY29udGV4dCkge1xuXHQgICFiYXRjaGlu
Z1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAn
UmVhY3RVcGRhdGVzLmFzYXA6IENhblxcJ3QgZW5xdWV1ZSBhbiBhc2FwIGNhbGxiYWNrIGluIGEg
Y29udGV4dCB3aGVyZXVwZGF0ZXMgYXJlIG5vdCBiZWluZyBiYXRjaGVkLicpIDogX3Byb2RJbnZh
cmlhbnQoJzEyNScpIDogdm9pZCAwO1xuXHQgIGFzYXBDYWxsYmFja1F1ZXVlLmVucXVldWUoY2Fs
bGJhY2ssIGNvbnRleHQpO1xuXHQgIGFzYXBFbnF1ZXVlZCA9IHRydWU7XG5cdH1cblx0XG5cdHZh
ciBSZWFjdFVwZGF0ZXNJbmplY3Rpb24gPSB7XG5cdCAgaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rp
b246IGZ1bmN0aW9uIChSZWNvbmNpbGVUcmFuc2FjdGlvbikge1xuXHQgICAgIVJlY29uY2lsZVRy
YW5zYWN0aW9uID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0
IHByb3ZpZGUgYSByZWNvbmNpbGUgdHJhbnNhY3Rpb24gY2xhc3MnKSA6IF9wcm9kSW52YXJpYW50
KCcxMjYnKSA6IHZvaWQgMDtcblx0ICAgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9uID0gUmVjb25jaWxlVHJhbnNhY3Rpb247XG5cdCAgfSxcblx0XG5cdCAgaW5qZWN0QmF0
Y2hpbmdTdHJhdGVneTogZnVuY3Rpb24gKF9iYXRjaGluZ1N0cmF0ZWd5KSB7XG5cdCAgICAhX2Jh
dGNoaW5nU3RyYXRlZ3kgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6
IG11c3QgcHJvdmlkZSBhIGJhdGNoaW5nIHN0cmF0ZWd5JykgOiBfcHJvZEludmFyaWFudCgnMTI3
JykgOiB2b2lkIDA7XG5cdCAgICAhKHR5cGVvZiBfYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBk
YXRlcyA9PT0gJ2Z1bmN0aW9uJykgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVw
ZGF0ZXM6IG11c3QgcHJvdmlkZSBhIGJhdGNoZWRVcGRhdGVzKCkgZnVuY3Rpb24nKSA6IF9wcm9k
SW52YXJpYW50KCcxMjgnKSA6IHZvaWQgMDtcblx0ICAgICEodHlwZW9mIF9iYXRjaGluZ1N0cmF0
ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzID09PSAnYm9vbGVhbicpID8gIGZhbHNlID8gaW52YXJpYW50
KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYW4gaXNCYXRjaGluZ1VwZGF0ZXMg
Ym9vbGVhbiBhdHRyaWJ1dGUnKSA6IF9wcm9kSW52YXJpYW50KCcxMjknKSA6IHZvaWQgMDtcblx0
ICAgIGJhdGNoaW5nU3RyYXRlZ3kgPSBfYmF0Y2hpbmdTdHJhdGVneTtcblx0ICB9XG5cdH07XG5c
dFxuXHR2YXIgUmVhY3RVcGRhdGVzID0ge1xuXHQgIC8qKlxuXHQgICAqIFJlYWN0IHJlZmVyZW5j
ZXMgYFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb25gIHVzaW5nIHRoaXMgcHJvcGVydHkgaW4gb3Jk
ZXJcblx0ICAgKiB0byBhbGxvdyBkZXBlbmRlbmN5IGluamVjdGlvbi5cblx0ICAgKlxuXHQgICAq
IEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb246IG51bGws
XG5cdFxuXHQgIGJhdGNoZWRVcGRhdGVzOiBiYXRjaGVkVXBkYXRlcyxcblx0ICBlbnF1ZXVlVXBk
YXRlOiBlbnF1ZXVlVXBkYXRlLFxuXHQgIGZsdXNoQmF0Y2hlZFVwZGF0ZXM6IGZsdXNoQmF0Y2hl
ZFVwZGF0ZXMsXG5cdCAgaW5qZWN0aW9uOiBSZWFjdFVwZGF0ZXNJbmplY3Rpb24sXG5cdCAgYXNh
cDogYXNhcFxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFVwZGF0ZXM7XG5cbi8q
KiovIH0sXG4vKiAxMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5c
dCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9hc3NpZ24gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIFBvb2xlZENsYXNzID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxMyk7XG5cdFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJl
X18oNyk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZh
ciBkaWRXYXJuRm9yQWRkZWROZXdQcm9wZXJ0eSA9IGZhbHNlO1xuXHR2YXIgaXNQcm94eVN1cHBv
cnRlZCA9IHR5cGVvZiBQcm94eSA9PT0gJ2Z1bmN0aW9uJztcblx0XG5cdHZhciBzaG91bGRCZVJl
bGVhc2VkUHJvcGVydGllcyA9IFsnZGlzcGF0Y2hDb25maWcnLCAnX3RhcmdldEluc3QnLCAnbmF0
aXZlRXZlbnQnLCAnaXNEZWZhdWx0UHJldmVudGVkJywgJ2lzUHJvcGFnYXRpb25TdG9wcGVkJywg
J19kaXNwYXRjaExpc3RlbmVycycsICdfZGlzcGF0Y2hJbnN0YW5jZXMnXTtcblx0XG5cdC8qKlxu
XHQgKiBAaW50ZXJmYWNlIEV2ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9N
LUxldmVsLTMtRXZlbnRzL1xuXHQgKi9cblx0dmFyIEV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIHR5
cGU6IG51bGwsXG5cdCAgdGFyZ2V0OiBudWxsLFxuXHQgIC8vIGN1cnJlbnRUYXJnZXQgaXMgc2V0
IHdoZW4gZGlzcGF0Y2hpbmc7IG5vIHVzZSBpbiBjb3B5aW5nIGl0IGhlcmVcblx0ICBjdXJyZW50
VGFyZ2V0OiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCxcblx0ICBldmVudFBoYXNlOiBu
dWxsLFxuXHQgIGJ1YmJsZXM6IG51bGwsXG5cdCAgY2FuY2VsYWJsZTogbnVsbCxcblx0ICB0aW1l
U3RhbXA6IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgcmV0dXJuIGV2ZW50LnRpbWVTdGFtcCB8
fCBEYXRlLm5vdygpO1xuXHQgIH0sXG5cdCAgZGVmYXVsdFByZXZlbnRlZDogbnVsbCxcblx0ICBp
c1RydXN0ZWQ6IG51bGxcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBTeW50aGV0aWMgZXZlbnRzIGFy
ZSBkaXNwYXRjaGVkIGJ5IGV2ZW50IHBsdWdpbnMsIHR5cGljYWxseSBpbiByZXNwb25zZSB0byBh
XG5cdCAqIHRvcC1sZXZlbCBldmVudCBkZWxlZ2F0aW9uIGhhbmRsZXIuXG5cdCAqXG5cdCAqIFRo
ZXNlIHN5c3RlbXMgc2hvdWxkIGdlbmVyYWxseSB1c2UgcG9vbGluZyB0byByZWR1Y2UgdGhlIGZy
ZXF1ZW5jeSBvZiBnYXJiYWdlXG5cdCAqIGNvbGxlY3Rpb24uIFRoZSBzeXN0ZW0gc2hvdWxkIGNo
ZWNrIGBpc1BlcnNpc3RlbnRgIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZVxuXHQgKiBldmVudCBz
aG91bGQgYmUgcmVsZWFzZWQgaW50byB0aGUgcG9vbCBhZnRlciBiZWluZyBkaXNwYXRjaGVkLiBV
c2VycyB0aGF0XG5cdCAqIG5lZWQgYSBwZXJzaXN0ZWQgZXZlbnQgc2hvdWxkIGludm9rZSBgcGVy
c2lzdGAuXG5cdCAqXG5cdCAqIFN5bnRoZXRpYyBldmVudHMgKGFuZCBzdWJjbGFzc2VzKSBpbXBs
ZW1lbnQgdGhlIERPTSBMZXZlbCAzIEV2ZW50cyBBUEkgYnlcblx0ICogbm9ybWFsaXppbmcgYnJv
d3NlciBxdWlya3MuIFN1YmNsYXNzZXMgZG8gbm90IG5lY2Vzc2FyaWx5IGhhdmUgdG8gaW1wbGVt
ZW50IGFcblx0ICogRE9NIGludGVyZmFjZTsgY3VzdG9tIGFwcGxpY2F0aW9uLXNwZWNpZmljIGV2
ZW50cyBjYW4gYWxzbyBzdWJjbGFzcyB0aGlzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0g
ZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQu
XG5cdCAqIEBwYXJhbSB7Kn0gdGFyZ2V0SW5zdCBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50
IHRhcmdldC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2Vy
IGV2ZW50LlxuXHQgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSBuYXRpdmVFdmVudFRhcmdldCBU
YXJnZXQgbm9kZS5cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY0V2ZW50KGRpc3BhdGNoQ29u
ZmlnLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICBp
ZiAoZmFsc2UpIHtcblx0ICAgIC8vIHRoZXNlIGhhdmUgYSBnZXR0ZXIvc2V0dGVyIGZvciB3YXJu
aW5nc1xuXHQgICAgZGVsZXRlIHRoaXMubmF0aXZlRXZlbnQ7XG5cdCAgICBkZWxldGUgdGhpcy5w
cmV2ZW50RGVmYXVsdDtcblx0ICAgIGRlbGV0ZSB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcblx0ICB9
XG5cdFxuXHQgIHRoaXMuZGlzcGF0Y2hDb25maWcgPSBkaXNwYXRjaENvbmZpZztcblx0ICB0aGlz
Ll90YXJnZXRJbnN0ID0gdGFyZ2V0SW5zdDtcblx0ICB0aGlzLm5hdGl2ZUV2ZW50ID0gbmF0aXZl
RXZlbnQ7XG5cdFxuXHQgIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0cnVjdG9yLkludGVyZmFj
ZTtcblx0ICBmb3IgKHZhciBwcm9wTmFtZSBpbiBJbnRlcmZhY2UpIHtcblx0ICAgIGlmICghSW50
ZXJmYWNlLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuXHQgICAgICBjb250aW51ZTtcblx0
ICAgIH1cblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBkZWxldGUgdGhpc1twcm9wTmFtZV07
IC8vIHRoaXMgaGFzIGEgZ2V0dGVyL3NldHRlciBmb3Igd2FybmluZ3Ncblx0ICAgIH1cblx0ICAg
IHZhciBub3JtYWxpemUgPSBJbnRlcmZhY2VbcHJvcE5hbWVdO1xuXHQgICAgaWYgKG5vcm1hbGl6
ZSkge1xuXHQgICAgICB0aGlzW3Byb3BOYW1lXSA9IG5vcm1hbGl6ZShuYXRpdmVFdmVudCk7XG5c
dCAgICB9IGVsc2Uge1xuXHQgICAgICBpZiAocHJvcE5hbWUgPT09ICd0YXJnZXQnKSB7XG5cdCAg
ICAgICAgdGhpcy50YXJnZXQgPSBuYXRpdmVFdmVudFRhcmdldDtcblx0ICAgICAgfSBlbHNlIHtc
blx0ICAgICAgICB0aGlzW3Byb3BOYW1lXSA9IG5hdGl2ZUV2ZW50W3Byb3BOYW1lXTtcblx0ICAg
ICAgfVxuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSBuYXRp
dmVFdmVudC5kZWZhdWx0UHJldmVudGVkICE9IG51bGwgPyBuYXRpdmVFdmVudC5kZWZhdWx0UHJl
dmVudGVkIDogbmF0aXZlRXZlbnQucmV0dXJuVmFsdWUgPT09IGZhbHNlO1xuXHQgIGlmIChkZWZh
dWx0UHJldmVudGVkKSB7XG5cdCAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVu
Y3Rpb24udGhhdFJldHVybnNUcnVlO1xuXHQgIH0gZWxzZSB7XG5cdCAgICB0aGlzLmlzRGVmYXVs
dFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZTtcblx0ICB9XG5cdCAg
dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxz
ZTtcblx0ICByZXR1cm4gdGhpcztcblx0fVxuXHRcblx0X2Fzc2lnbihTeW50aGV0aWNFdmVudC5w
cm90b3R5cGUsIHtcblx0ICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24gKCkge1xuXHQgICAgdGhp
cy5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTtcblx0ICAgIHZhciBldmVudCA9IHRoaXMubmF0aXZl
RXZlbnQ7XG5cdCAgICBpZiAoIWV2ZW50KSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0
XG5cdCAgICBpZiAoZXZlbnQucHJldmVudERlZmF1bHQpIHtcblx0ICAgICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTtcblx0ICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhbGlkLXR5
cGVvZlxuXHQgICAgfSBlbHNlIGlmICh0eXBlb2YgZXZlbnQucmV0dXJuVmFsdWUgIT09ICd1bmtu
b3duJykge1xuXHQgICAgICBldmVudC5yZXR1cm5WYWx1ZSA9IGZhbHNlO1xuXHQgICAgfVxuXHQg
ICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1
ZTtcblx0ICB9LFxuXHRcblx0ICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uICgpIHtcblx0ICAg
IHZhciBldmVudCA9IHRoaXMubmF0aXZlRXZlbnQ7XG5cdCAgICBpZiAoIWV2ZW50KSB7XG5cdCAg
ICAgIHJldHVybjtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9u
KSB7XG5cdCAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHQgICAgICAvLyBlc2xpbnQt
ZGlzYWJsZS1uZXh0LWxpbmUgdmFsaWQtdHlwZW9mXG5cdCAgICB9IGVsc2UgaWYgKHR5cGVvZiBl
dmVudC5jYW5jZWxCdWJibGUgIT09ICd1bmtub3duJykge1xuXHQgICAgICAvLyBUaGUgQ2hhbmdl
RXZlbnRQbHVnaW4gcmVnaXN0ZXJzIGEgXCJwcm9wZXJ0eWNoYW5nZVwiIGV2ZW50IGZvclxuXHQg
ICAgICAvLyBJRS4gVGhpcyBldmVudCBkb2VzIG5vdCBzdXBwb3J0IGJ1YmJsaW5nIG9yIGNhbmNl
bGxpbmcsIGFuZFxuXHQgICAgICAvLyBhbnkgcmVmZXJlbmNlcyB0byBjYW5jZWxCdWJibGUgdGhy
b3cgXCJNZW1iZXIgbm90IGZvdW5kXCIuICBBXG5cdCAgICAgIC8vIHR5cGVvZiBjaGVjayBvZiBc
InVua25vd25cIiBjaXJjdW12ZW50cyB0aGlzIGlzc3VlIChhbmQgaXMgYWxzb1xuXHQgICAgICAv
LyBJRSBzcGVjaWZpYykuXG5cdCAgICAgIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XG5cdCAg
ICB9XG5cdFxuXHQgICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGVtcHR5RnVuY3Rpb24u
dGhhdFJldHVybnNUcnVlO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFdlIHJlbGVhc2Ug
YWxsIGRpc3BhdGNoZWQgYFN5bnRoZXRpY0V2ZW50YHMgYWZ0ZXIgZWFjaCBldmVudCBsb29wLCBh
ZGRpbmdcblx0ICAgKiB0aGVtIGJhY2sgaW50byB0aGUgcG9vbC4gVGhpcyBhbGxvd3MgYSB3YXkg
dG8gaG9sZCBvbnRvIGEgcmVmZXJlbmNlIHRoYXRcblx0ICAgKiB3b24ndCBiZSBhZGRlZCBiYWNr
IGludG8gdGhlIHBvb2wuXG5cdCAgICovXG5cdCAgcGVyc2lzdDogZnVuY3Rpb24gKCkge1xuXHQg
ICAgdGhpcy5pc1BlcnNpc3RlbnQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcblx0
ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBDaGVja3MgaWYgdGhpcyBldmVudCBzaG91bGQgYmUg
cmVsZWFzZWQgYmFjayBpbnRvIHRoZSBwb29sLlxuXHQgICAqXG5cdCAgICogQHJldHVybiB7Ym9v
bGVhbn0gVHJ1ZSBpZiB0aGlzIHNob3VsZCBub3QgYmUgcmVsZWFzZWQsIGZhbHNlIG90aGVyd2lz
ZS5cblx0ICAgKi9cblx0ICBpc1BlcnNpc3RlbnQ6IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNG
YWxzZSxcblx0XG5cdCAgLyoqXG5cdCAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgYGRlc3Ry
dWN0b3JgIG9uIGVhY2ggaW5zdGFuY2UgaXQgcmVsZWFzZXMuXG5cdCAgICovXG5cdCAgZGVzdHJ1
Y3RvcjogZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIEludGVyZmFjZSA9IHRoaXMuY29uc3RydWN0
b3IuSW50ZXJmYWNlO1xuXHQgICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7XG5c
dCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlz
LCBwcm9wTmFtZSwgZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbihwcm9wTmFtZSwg
SW50ZXJmYWNlW3Byb3BOYW1lXSkpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRoaXNb
cHJvcE5hbWVdID0gbnVsbDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuXHQgICAg
ICB0aGlzW3Nob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzW2ldXSA9IG51bGw7XG5cdCAgICB9XG5c
dCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdu
YXRpdmVFdmVudCcsIGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24oJ25hdGl2ZUV2
ZW50JywgbnVsbCkpO1xuXHQgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3ByZXZl
bnREZWZhdWx0JywgZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbigncHJldmVudERl
ZmF1bHQnLCBlbXB0eUZ1bmN0aW9uKSk7XG5cdCAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
aGlzLCAnc3RvcFByb3BhZ2F0aW9uJywgZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlv
bignc3RvcFByb3BhZ2F0aW9uJywgZW1wdHlGdW5jdGlvbikpO1xuXHQgICAgfVxuXHQgIH1cblx0
fSk7XG5cdFxuXHRTeW50aGV0aWNFdmVudC5JbnRlcmZhY2UgPSBFdmVudEludGVyZmFjZTtcblx0
XG5cdGlmIChmYWxzZSkge1xuXHQgIGlmIChpc1Byb3h5U3VwcG9ydGVkKSB7XG5cdCAgICAvKmVz
bGludC1kaXNhYmxlIG5vLWZ1bmMtYXNzaWduICovXG5cdCAgICBTeW50aGV0aWNFdmVudCA9IG5l
dyBQcm94eShTeW50aGV0aWNFdmVudCwge1xuXHQgICAgICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uICh0
YXJnZXQsIGFyZ3MpIHtcblx0ICAgICAgICByZXR1cm4gdGhpcy5hcHBseSh0YXJnZXQsIE9iamVj
dC5jcmVhdGUodGFyZ2V0LnByb3RvdHlwZSksIGFyZ3MpO1xuXHQgICAgICB9LFxuXHQgICAgICBh
cHBseTogZnVuY3Rpb24gKGNvbnN0cnVjdG9yLCB0aGF0LCBhcmdzKSB7XG5cdCAgICAgICAgcmV0
dXJuIG5ldyBQcm94eShjb25zdHJ1Y3Rvci5hcHBseSh0aGF0LCBhcmdzKSwge1xuXHQgICAgICAg
ICAgc2V0OiBmdW5jdGlvbiAodGFyZ2V0LCBwcm9wLCB2YWx1ZSkge1xuXHQgICAgICAgICAgICBp
ZiAocHJvcCAhPT0gJ2lzUGVyc2lzdGVudCcgJiYgIXRhcmdldC5jb25zdHJ1Y3Rvci5JbnRlcmZh
Y2UuaGFzT3duUHJvcGVydHkocHJvcCkgJiYgc2hvdWxkQmVSZWxlYXNlZFByb3BlcnRpZXMuaW5k
ZXhPZihwcm9wKSA9PT0gLTEpIHtcblx0ICAgICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRXYXJuRm9yQWRkZWROZXdQcm9wZXJ0eSB8
fCB0YXJnZXQuaXNQZXJzaXN0ZW50KCksIFwiVGhpcyBzeW50aGV0aWMgZXZlbnQgaXMgcmV1c2Vk
IGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiBJZiB5b3UncmUgXCIgKyBcInNlZWluZyB0aGlzLCB5
b3UncmUgYWRkaW5nIGEgbmV3IHByb3BlcnR5IGluIHRoZSBzeW50aGV0aWMgZXZlbnQgb2JqZWN0
LiBcIiArICdUaGUgcHJvcGVydHkgaXMgbmV2ZXIgcmVsZWFzZWQuIFNlZSAnICsgJ2h0dHBzOi8v
ZmIubWUvcmVhY3QtZXZlbnQtcG9vbGluZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKSA6IHZvaWQg
MDtcblx0ICAgICAgICAgICAgICBkaWRXYXJuRm9yQWRkZWROZXdQcm9wZXJ0eSA9IHRydWU7XG5c
dCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgdGFyZ2V0W3Byb3BdID0gdmFsdWU7XG5cdCAg
ICAgICAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXHQg
ICAgICB9XG5cdCAgICB9KTtcblx0ICAgIC8qZXNsaW50LWVuYWJsZSBuby1mdW5jLWFzc2lnbiAq
L1xuXHQgIH1cblx0fVxuXHQvKipcblx0ICogSGVscGVyIHRvIHJlZHVjZSBib2lsZXJwbGF0ZSB3
aGVuIGNyZWF0aW5nIHN1YmNsYXNzZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7ZnVuY3Rpb259IENs
YXNzXG5cdCAqIEBwYXJhbSB7P29iamVjdH0gSW50ZXJmYWNlXG5cdCAqL1xuXHRTeW50aGV0aWNF
dmVudC5hdWdtZW50Q2xhc3MgPSBmdW5jdGlvbiAoQ2xhc3MsIEludGVyZmFjZSkge1xuXHQgIHZh
ciBTdXBlciA9IHRoaXM7XG5cdFxuXHQgIHZhciBFID0gZnVuY3Rpb24gKCkge307XG5cdCAgRS5w
cm90b3R5cGUgPSBTdXBlci5wcm90b3R5cGU7XG5cdCAgdmFyIHByb3RvdHlwZSA9IG5ldyBFKCk7
XG5cdFxuXHQgIF9hc3NpZ24ocHJvdG90eXBlLCBDbGFzcy5wcm90b3R5cGUpO1xuXHQgIENsYXNz
LnByb3RvdHlwZSA9IHByb3RvdHlwZTtcblx0ICBDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBDbGFzcztcblx0XG5cdCAgQ2xhc3MuSW50ZXJmYWNlID0gX2Fzc2lnbih7fSwgU3VwZXIuSW50
ZXJmYWNlLCBJbnRlcmZhY2UpO1xuXHQgIENsYXNzLmF1Z21lbnRDbGFzcyA9IFN1cGVyLmF1Z21l
bnRDbGFzcztcblx0XG5cdCAgUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKENsYXNzLCBQb29sZWRD
bGFzcy5mb3VyQXJndW1lbnRQb29sZXIpO1xuXHR9O1xuXHRcblx0UG9vbGVkQ2xhc3MuYWRkUG9v
bGluZ1RvKFN5bnRoZXRpY0V2ZW50LCBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXIpO1xu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNFdmVudDtcblx0XG5cdC8qKlxuXHQgICog
SGVscGVyIHRvIG51bGxpZnkgc3ludGhldGljRXZlbnQgaW5zdGFuY2UgcHJvcGVydGllcyB3aGVu
IGRlc3RydWN0aW5nXG5cdCAgKlxuXHQgICogQHBhcmFtIHtvYmplY3R9IFN5bnRoZXRpY0V2ZW50
XG5cdCAgKiBAcGFyYW0ge1N0cmluZ30gcHJvcE5hbWVcblx0ICAqIEByZXR1cm4ge29iamVjdH0g
ZGVmaW5lUHJvcGVydHkgb2JqZWN0XG5cdCAgKi9cblx0ZnVuY3Rpb24gZ2V0UG9vbGVkV2Fybmlu
Z1Byb3BlcnR5RGVmaW5pdGlvbihwcm9wTmFtZSwgZ2V0VmFsKSB7XG5cdCAgdmFyIGlzRnVuY3Rp
b24gPSB0eXBlb2YgZ2V0VmFsID09PSAnZnVuY3Rpb24nO1xuXHQgIHJldHVybiB7XG5cdCAgICBj
b25maWd1cmFibGU6IHRydWUsXG5cdCAgICBzZXQ6IHNldCxcblx0ICAgIGdldDogZ2V0XG5cdCAg
fTtcblx0XG5cdCAgZnVuY3Rpb24gc2V0KHZhbCkge1xuXHQgICAgdmFyIGFjdGlvbiA9IGlzRnVu
Y3Rpb24gPyAnc2V0dGluZyB0aGUgbWV0aG9kJyA6ICdzZXR0aW5nIHRoZSBwcm9wZXJ0eSc7XG5c
dCAgICB3YXJuKGFjdGlvbiwgJ1RoaXMgaXMgZWZmZWN0aXZlbHkgYSBuby1vcCcpO1xuXHQgICAg
cmV0dXJuIHZhbDtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGdldCgpIHtcblx0ICAgIHZhciBh
Y3Rpb24gPSBpc0Z1bmN0aW9uID8gJ2FjY2Vzc2luZyB0aGUgbWV0aG9kJyA6ICdhY2Nlc3Npbmcg
dGhlIHByb3BlcnR5Jztcblx0ICAgIHZhciByZXN1bHQgPSBpc0Z1bmN0aW9uID8gJ1RoaXMgaXMg
YSBuby1vcCBmdW5jdGlvbicgOiAnVGhpcyBpcyBzZXQgdG8gbnVsbCc7XG5cdCAgICB3YXJuKGFj
dGlvbiwgcmVzdWx0KTtcblx0ICAgIHJldHVybiBnZXRWYWw7XG5cdCAgfVxuXHRcblx0ICBmdW5j
dGlvbiB3YXJuKGFjdGlvbiwgcmVzdWx0KSB7XG5cdCAgICB2YXIgd2FybmluZ0NvbmRpdGlvbiA9
IGZhbHNlO1xuXHQgICAgIGZhbHNlID8gd2FybmluZyh3YXJuaW5nQ29uZGl0aW9uLCBcIlRoaXMg
c3ludGhldGljIGV2ZW50IGlzIHJldXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gSWYgeW91
J3JlIHNlZWluZyB0aGlzLCBcIiArIFwieW91J3JlICVzIGAlc2Agb24gYSByZWxlYXNlZC9udWxs
aWZpZWQgc3ludGhldGljIGV2ZW50LiAlcy4gXCIgKyAnSWYgeW91IG11c3Qga2VlcCB0aGUgb3Jp
Z2luYWwgc3ludGhldGljIGV2ZW50IGFyb3VuZCwgdXNlIGV2ZW50LnBlcnNpc3QoKS4gJyArICdT
ZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1ldmVudC1wb29saW5nIGZvciBtb3JlIGluZm9ybWF0aW9u
LicsIGFjdGlvbiwgcHJvcE5hbWUsIHJlc3VsdCkgOiB2b2lkIDA7XG5cdCAgfVxuXHR9XG5cbi8q
KiovIH0sXG4vKiAxMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBLZWVwcyB0cmFjayBvZiB0aGUgY3Vy
cmVudCBvd25lci5cblx0ICpcblx0ICogVGhlIGN1cnJlbnQgb3duZXIgaXMgdGhlIGNvbXBvbmVu
dCB3aG8gc2hvdWxkIG93biBhbnkgY29tcG9uZW50cyB0aGF0IGFyZVxuXHQgKiBjdXJyZW50bHkg
YmVpbmcgY29uc3RydWN0ZWQuXG5cdCAqL1xuXHR2YXIgUmVhY3RDdXJyZW50T3duZXIgPSB7XG5c
dCAgLyoqXG5cdCAgICogQGludGVybmFsXG5cdCAgICogQHR5cGUge1JlYWN0Q29tcG9uZW50fVxu
XHQgICAqL1xuXHQgIGN1cnJlbnQ6IG51bGxcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
UmVhY3RDdXJyZW50T3duZXI7XG5cbi8qKiovIH0sXG4vKiAxMiAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTtcblxuXG4v
KioqLyB9LFxuLyogMTMgKi9cblsyMzEsIDNdLFxuLyogMTQgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5
cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5c
dCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdHZhciBET01OYW1lc3BhY2VzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNSk7XG5cdHZhciBz
ZXRJbm5lckhUTUwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KTtcblx0XG5cdHZhciBjcmVhdGVN
aWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Myk7XG5c
dHZhciBzZXRUZXh0Q29udGVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNzcpO1xuXHRcblx0dmFy
IEVMRU1FTlRfTk9ERV9UWVBFID0gMTtcblx0dmFyIERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQ
RSA9IDExO1xuXHRcblx0LyoqXG5cdCAqIEluIElFICg4LTExKSBhbmQgRWRnZSwgYXBwZW5kaW5n
IG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gaXMgZHJhbWF0aWNhbGx5XG5cdCAqIGZhc3RlciB0aGFu
IGFwcGVuZGluZyBhIGZ1bGwgc3VidHJlZSwgc28gd2UgZXNzZW50aWFsbHkgcXVldWUgdXAgdGhl
XG5cdCAqIC5hcHBlbmRDaGlsZCBjYWxscyBoZXJlIGFuZCBhcHBseSB0aGVtIHNvIGVhY2ggbm9k
ZSBpcyBhZGRlZCB0byBpdHMgcGFyZW50XG5cdCAqIGJlZm9yZSBhbnkgY2hpbGRyZW4gYXJlIGFk
ZGVkLlxuXHQgKlxuXHQgKiBJbiBvdGhlciBicm93c2VycywgZG9pbmcgc28gaXMgc2xvd2VyIG9y
IG5ldXRyYWwgY29tcGFyZWQgdG8gdGhlIG90aGVyIG9yZGVyXG5cdCAqIChpbiBGaXJlZm94LCB0
d2ljZSBhcyBzbG93KSBzbyB3ZSBvbmx5IGRvIHRoaXMgaW52ZXJzaW9uIGluIElFLlxuXHQgKlxu
XHQgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3NwaWN5ai9pbm5lcmh0bWwtdnMtY3JlYXRlZWxl
bWVudC12cy1jbG9uZW5vZGUuXG5cdCAqL1xuXHR2YXIgZW5hYmxlTGF6eSA9IHR5cGVvZiBkb2N1
bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50LmRvY3VtZW50TW9kZSA9PT0g
J251bWJlcicgfHwgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5h
dmlnYXRvci51c2VyQWdlbnQgPT09ICdzdHJpbmcnICYmIC9cXGJFZGdlXFwvXFxkLy50ZXN0KG5h
dmlnYXRvci51c2VyQWdlbnQpO1xuXHRcblx0ZnVuY3Rpb24gaW5zZXJ0VHJlZUNoaWxkcmVuKHRy
ZWUpIHtcblx0ICBpZiAoIWVuYWJsZUxhenkpIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAg
dmFyIG5vZGUgPSB0cmVlLm5vZGU7XG5cdCAgdmFyIGNoaWxkcmVuID0gdHJlZS5jaGlsZHJlbjtc
blx0ICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNo
aWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIGluc2VydFRyZWVCZWZvcmUobm9kZSwgY2hp
bGRyZW5baV0sIG51bGwpO1xuXHQgICAgfVxuXHQgIH0gZWxzZSBpZiAodHJlZS5odG1sICE9IG51
bGwpIHtcblx0ICAgIHNldElubmVySFRNTChub2RlLCB0cmVlLmh0bWwpO1xuXHQgIH0gZWxzZSBp
ZiAodHJlZS50ZXh0ICE9IG51bGwpIHtcblx0ICAgIHNldFRleHRDb250ZW50KG5vZGUsIHRyZWUu
dGV4dCk7XG5cdCAgfVxuXHR9XG5cdFxuXHR2YXIgaW5zZXJ0VHJlZUJlZm9yZSA9IGNyZWF0ZU1p
Y3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24gKHBhcmVudE5vZGUsIHRyZWUsIHJl
ZmVyZW5jZU5vZGUpIHtcblx0ICAvLyBEb2N1bWVudEZyYWdtZW50cyBhcmVuJ3QgYWN0dWFsbHkg
cGFydCBvZiB0aGUgRE9NIGFmdGVyIGluc2VydGlvbiBzb1xuXHQgIC8vIGFwcGVuZGluZyBjaGls
ZHJlbiB3b24ndCB1cGRhdGUgdGhlIERPTS4gV2UgbmVlZCB0byBlbnN1cmUgdGhlIGZyYWdtZW50
XG5cdCAgLy8gaXMgcHJvcGVybHkgcG9wdWxhdGVkIGZpcnN0LCBicmVha2luZyBvdXQgb2Ygb3Vy
IGxhenkgYXBwcm9hY2ggZm9yIGp1c3Rcblx0ICAvLyB0aGlzIGxldmVsLiBBbHNvLCBzb21lIDxv
YmplY3Q+IHBsdWdpbnMgKGxpa2UgRmxhc2ggUGxheWVyKSB3aWxsIHJlYWRcblx0ICAvLyA8cGFy
YW0+IG5vZGVzIGltbWVkaWF0ZWx5IHVwb24gaW5zZXJ0aW9uIGludG8gdGhlIERPTSwgc28gPG9i
amVjdD5cblx0ICAvLyBtdXN0IGFsc28gYmUgcG9wdWxhdGVkIHByaW9yIHRvIGluc2VydGlvbiBp
bnRvIHRoZSBET00uXG5cdCAgaWYgKHRyZWUubm9kZS5ub2RlVHlwZSA9PT0gRE9DVU1FTlRfRlJB
R01FTlRfTk9ERV9UWVBFIHx8IHRyZWUubm9kZS5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZ
UEUgJiYgdHJlZS5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvYmplY3QnICYmICh0
cmVlLm5vZGUubmFtZXNwYWNlVVJJID09IG51bGwgfHwgdHJlZS5ub2RlLm5hbWVzcGFjZVVSSSA9
PT0gRE9NTmFtZXNwYWNlcy5odG1sKSkge1xuXHQgICAgaW5zZXJ0VHJlZUNoaWxkcmVuKHRyZWUp
O1xuXHQgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodHJlZS5ub2RlLCByZWZlcmVuY2VOb2Rl
KTtcblx0ICB9IGVsc2Uge1xuXHQgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodHJlZS5ub2Rl
LCByZWZlcmVuY2VOb2RlKTtcblx0ICAgIGluc2VydFRyZWVDaGlsZHJlbih0cmVlKTtcblx0ICB9
XG5cdH0pO1xuXHRcblx0ZnVuY3Rpb24gcmVwbGFjZUNoaWxkV2l0aFRyZWUob2xkTm9kZSwgbmV3
VHJlZSkge1xuXHQgIG9sZE5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3VHJlZS5ub2Rl
LCBvbGROb2RlKTtcblx0ICBpbnNlcnRUcmVlQ2hpbGRyZW4obmV3VHJlZSk7XG5cdH1cblx0XG5c
dGZ1bmN0aW9uIHF1ZXVlQ2hpbGQocGFyZW50VHJlZSwgY2hpbGRUcmVlKSB7XG5cdCAgaWYgKGVu
YWJsZUxhenkpIHtcblx0ICAgIHBhcmVudFRyZWUuY2hpbGRyZW4ucHVzaChjaGlsZFRyZWUpO1xu
XHQgIH0gZWxzZSB7XG5cdCAgICBwYXJlbnRUcmVlLm5vZGUuYXBwZW5kQ2hpbGQoY2hpbGRUcmVl
Lm5vZGUpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gcXVldWVIVE1MKHRyZWUsIGh0bWwp
IHtcblx0ICBpZiAoZW5hYmxlTGF6eSkge1xuXHQgICAgdHJlZS5odG1sID0gaHRtbDtcblx0ICB9
IGVsc2Uge1xuXHQgICAgc2V0SW5uZXJIVE1MKHRyZWUubm9kZSwgaHRtbCk7XG5cdCAgfVxuXHR9
XG5cdFxuXHRmdW5jdGlvbiBxdWV1ZVRleHQodHJlZSwgdGV4dCkge1xuXHQgIGlmIChlbmFibGVM
YXp5KSB7XG5cdCAgICB0cmVlLnRleHQgPSB0ZXh0O1xuXHQgIH0gZWxzZSB7XG5cdCAgICBzZXRU
ZXh0Q29udGVudCh0cmVlLm5vZGUsIHRleHQpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24g
dG9TdHJpbmcoKSB7XG5cdCAgcmV0dXJuIHRoaXMubm9kZS5ub2RlTmFtZTtcblx0fVxuXHRcblx0
ZnVuY3Rpb24gRE9NTGF6eVRyZWUobm9kZSkge1xuXHQgIHJldHVybiB7XG5cdCAgICBub2RlOiBu
b2RlLFxuXHQgICAgY2hpbGRyZW46IFtdLFxuXHQgICAgaHRtbDogbnVsbCxcblx0ICAgIHRleHQ6
IG51bGwsXG5cdCAgICB0b1N0cmluZzogdG9TdHJpbmdcblx0ICB9O1xuXHR9XG5cdFxuXHRET01M
YXp5VHJlZS5pbnNlcnRUcmVlQmVmb3JlID0gaW5zZXJ0VHJlZUJlZm9yZTtcblx0RE9NTGF6eVRy
ZWUucmVwbGFjZUNoaWxkV2l0aFRyZWUgPSByZXBsYWNlQ2hpbGRXaXRoVHJlZTtcblx0RE9NTGF6
eVRyZWUucXVldWVDaGlsZCA9IHF1ZXVlQ2hpbGQ7XG5cdERPTUxhenlUcmVlLnF1ZXVlSFRNTCA9
IHF1ZXVlSFRNTDtcblx0RE9NTGF6eVRyZWUucXVldWVUZXh0ID0gcXVldWVUZXh0O1xuXHRcblx0
bW9kdWxlLmV4cG9ydHMgPSBET01MYXp5VHJlZTtcblxuLyoqKi8gfSxcbi8qIDE1ICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQv
Kipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDMpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxu
XHRmdW5jdGlvbiBjaGVja01hc2sodmFsdWUsIGJpdG1hc2spIHtcblx0ICByZXR1cm4gKHZhbHVl
ICYgYml0bWFzaykgPT09IGJpdG1hc2s7XG5cdH1cblx0XG5cdHZhciBET01Qcm9wZXJ0eUluamVj
dGlvbiA9IHtcblx0ICAvKipcblx0ICAgKiBNYXBwaW5nIGZyb20gbm9ybWFsaXplZCwgY2FtZWxj
YXNlZCBwcm9wZXJ0eSBuYW1lcyB0byBhIGNvbmZpZ3VyYXRpb24gdGhhdFxuXHQgICAqIHNwZWNp
ZmllcyBob3cgdGhlIGFzc29jaWF0ZWQgRE9NIHByb3BlcnR5IHNob3VsZCBiZSBhY2Nlc3NlZCBv
ciByZW5kZXJlZC5cblx0ICAgKi9cblx0ICBNVVNUX1VTRV9QUk9QRVJUWTogMHgxLFxuXHQgIEhB
U19CT09MRUFOX1ZBTFVFOiAweDQsXG5cdCAgSEFTX05VTUVSSUNfVkFMVUU6IDB4OCxcblx0ICBI
QVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRTogMHgxMCB8IDB4OCxcblx0ICBIQVNfT1ZFUkxPQURF
RF9CT09MRUFOX1ZBTFVFOiAweDIwLFxuXHRcblx0ICAvKipcblx0ICAgKiBJbmplY3Qgc29tZSBz
cGVjaWFsaXplZCBrbm93bGVkZ2UgYWJvdXQgdGhlIERPTS4gVGhpcyB0YWtlcyBhIGNvbmZpZyBv
YmplY3Rcblx0ICAgKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcblx0ICAgKlxuXHQg
ICAqIGlzQ3VzdG9tQXR0cmlidXRlOiBmdW5jdGlvbiB0aGF0IGdpdmVuIGFuIGF0dHJpYnV0ZSBu
YW1lIHdpbGwgcmV0dXJuIHRydWVcblx0ICAgKiBpZiBpdCBjYW4gYmUgaW5zZXJ0ZWQgaW50byB0
aGUgRE9NIHZlcmJhdGltLiBVc2VmdWwgZm9yIGRhdGEtKiBvciBhcmlhLSpcblx0ICAgKiBhdHRy
aWJ1dGVzIHdoZXJlIGl0J3MgaW1wb3NzaWJsZSB0byBlbnVtZXJhdGUgYWxsIG9mIHRoZSBwb3Nz
aWJsZVxuXHQgICAqIGF0dHJpYnV0ZSBuYW1lcyxcblx0ICAgKlxuXHQgICAqIFByb3BlcnRpZXM6
IG9iamVjdCBtYXBwaW5nIERPTSBwcm9wZXJ0eSBuYW1lIHRvIG9uZSBvZiB0aGVcblx0ICAgKiBE
T01Qcm9wZXJ0eUluamVjdGlvbiBjb25zdGFudHMgb3IgbnVsbC4gSWYgeW91ciBhdHRyaWJ1dGUg
aXNuJ3QgaW4gaGVyZSxcblx0ICAgKiBpdCB3b24ndCBnZXQgd3JpdHRlbiB0byB0aGUgRE9NLlxu
XHQgICAqXG5cdCAgICogRE9NQXR0cmlidXRlTmFtZXM6IG9iamVjdCBtYXBwaW5nIFJlYWN0IGF0
dHJpYnV0ZSBuYW1lIHRvIHRoZSBET01cblx0ICAgKiBhdHRyaWJ1dGUgbmFtZS4gQXR0cmlidXRl
IG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIHRoZSAqKmxvd2VyY2FzZSoqXG5cdCAgICogbm9ybWFs
aXplZCBuYW1lLlxuXHQgICAqXG5cdCAgICogRE9NQXR0cmlidXRlTmFtZXNwYWNlczogb2JqZWN0
IG1hcHBpbmcgUmVhY3QgYXR0cmlidXRlIG5hbWUgdG8gdGhlIERPTVxuXHQgICAqIGF0dHJpYnV0
ZSBuYW1lc3BhY2UgVVJMLiAoQXR0cmlidXRlIG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIG5vIG5h
bWVzcGFjZS4pXG5cdCAgICpcblx0ICAgKiBET01Qcm9wZXJ0eU5hbWVzOiBzaW1pbGFyIHRvIERP
TUF0dHJpYnV0ZU5hbWVzIGJ1dCBmb3IgRE9NIHByb3BlcnRpZXMuXG5cdCAgICogUHJvcGVydHkg
bmFtZXMgbm90IHNwZWNpZmllZCB1c2UgdGhlIG5vcm1hbGl6ZWQgbmFtZS5cblx0ICAgKlxuXHQg
ICAqIERPTU11dGF0aW9uTWV0aG9kczogUHJvcGVydGllcyB0aGF0IHJlcXVpcmUgc3BlY2lhbCBt
dXRhdGlvbiBtZXRob2RzLiBJZlxuXHQgICAqIGB2YWx1ZWAgaXMgdW5kZWZpbmVkLCB0aGUgbXV0
YXRpb24gbWV0aG9kIHNob3VsZCB1bnNldCB0aGUgcHJvcGVydHkuXG5cdCAgICpcblx0ICAgKiBA
cGFyYW0ge29iamVjdH0gZG9tUHJvcGVydHlDb25maWcgdGhlIGNvbmZpZyBhcyBkZXNjcmliZWQg
YWJvdmUuXG5cdCAgICovXG5cdCAgaW5qZWN0RE9NUHJvcGVydHlDb25maWc6IGZ1bmN0aW9uIChk
b21Qcm9wZXJ0eUNvbmZpZykge1xuXHQgICAgdmFyIEluamVjdGlvbiA9IERPTVByb3BlcnR5SW5q
ZWN0aW9uO1xuXHQgICAgdmFyIFByb3BlcnRpZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5Qcm9wZXJ0
aWVzIHx8IHt9O1xuXHQgICAgdmFyIERPTUF0dHJpYnV0ZU5hbWVzcGFjZXMgPSBkb21Qcm9wZXJ0
eUNvbmZpZy5ET01BdHRyaWJ1dGVOYW1lc3BhY2VzIHx8IHt9O1xuXHQgICAgdmFyIERPTUF0dHJp
YnV0ZU5hbWVzID0gZG9tUHJvcGVydHlDb25maWcuRE9NQXR0cmlidXRlTmFtZXMgfHwge307XG5c
dCAgICB2YXIgRE9NUHJvcGVydHlOYW1lcyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTVByb3BlcnR5
TmFtZXMgfHwge307XG5cdCAgICB2YXIgRE9NTXV0YXRpb25NZXRob2RzID0gZG9tUHJvcGVydHlD
b25maWcuRE9NTXV0YXRpb25NZXRob2RzIHx8IHt9O1xuXHRcblx0ICAgIGlmIChkb21Qcm9wZXJ0
eUNvbmZpZy5pc0N1c3RvbUF0dHJpYnV0ZSkge1xuXHQgICAgICBET01Qcm9wZXJ0eS5faXNDdXN0
b21BdHRyaWJ1dGVGdW5jdGlvbnMucHVzaChkb21Qcm9wZXJ0eUNvbmZpZy5pc0N1c3RvbUF0dHJp
YnV0ZSk7XG5cdCAgICB9XG5cdFxuXHQgICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gUHJvcGVydGll
cykge1xuXHQgICAgICAhIURPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJv
cE5hbWUpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnaW5qZWN0RE9NUHJvcGVydHlDb25m
aWcoLi4uKTogWW91XFwncmUgdHJ5aW5nIHRvIGluamVjdCBET00gcHJvcGVydHkgXFwnJXNcXCcg
d2hpY2ggaGFzIGFscmVhZHkgYmVlbiBpbmplY3RlZC4gWW91IG1heSBiZSBhY2NpZGVudGFsbHkg
aW5qZWN0aW5nIHRoZSBzYW1lIERPTSBwcm9wZXJ0eSBjb25maWcgdHdpY2UsIG9yIHlvdSBtYXkg
YmUgaW5qZWN0aW5nIHR3byBjb25maWdzIHRoYXQgaGF2ZSBjb25mbGljdGluZyBwcm9wZXJ0eSBu
YW1lcy4nLCBwcm9wTmFtZSkgOiBfcHJvZEludmFyaWFudCgnNDgnLCBwcm9wTmFtZSkgOiB2b2lk
IDA7XG5cdFxuXHQgICAgICB2YXIgbG93ZXJDYXNlZCA9IHByb3BOYW1lLnRvTG93ZXJDYXNlKCk7
XG5cdCAgICAgIHZhciBwcm9wQ29uZmlnID0gUHJvcGVydGllc1twcm9wTmFtZV07XG5cdFxuXHQg
ICAgICB2YXIgcHJvcGVydHlJbmZvID0ge1xuXHQgICAgICAgIGF0dHJpYnV0ZU5hbWU6IGxvd2Vy
Q2FzZWQsXG5cdCAgICAgICAgYXR0cmlidXRlTmFtZXNwYWNlOiBudWxsLFxuXHQgICAgICAgIHBy
b3BlcnR5TmFtZTogcHJvcE5hbWUsXG5cdCAgICAgICAgbXV0YXRpb25NZXRob2Q6IG51bGwsXG5c
dFxuXHQgICAgICAgIG11c3RVc2VQcm9wZXJ0eTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVj
dGlvbi5NVVNUX1VTRV9QUk9QRVJUWSksXG5cdCAgICAgICAgaGFzQm9vbGVhblZhbHVlOiBjaGVj
a01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19CT09MRUFOX1ZBTFVFKSxcblx0ICAgICAg
ICBoYXNOdW1lcmljVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX05V
TUVSSUNfVkFMVUUpLFxuXHQgICAgICAgIGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOiBjaGVja01h
c2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFKSxcblx0
ICAgICAgICBoYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywg
SW5qZWN0aW9uLkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUpXG5cdCAgICAgIH07XG5cdCAg
ICAgICEocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSArIHByb3BlcnR5SW5mby5oYXNOdW1l
cmljVmFsdWUgKyBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSA8PSAxKSA/
ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0RPTVByb3BlcnR5OiBWYWx1ZSBjYW4gYmUgb25l
IG9mIGJvb2xlYW4sIG92ZXJsb2FkZWQgYm9vbGVhbiwgb3IgbnVtZXJpYyB2YWx1ZSwgYnV0IG5v
dCBhIGNvbWJpbmF0aW9uOiAlcycsIHByb3BOYW1lKSA6IF9wcm9kSW52YXJpYW50KCc1MCcsIHBy
b3BOYW1lKSA6IHZvaWQgMDtcblx0XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIERP
TVByb3BlcnR5LmdldFBvc3NpYmxlU3RhbmRhcmROYW1lW2xvd2VyQ2FzZWRdID0gcHJvcE5hbWU7
XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGlmIChET01BdHRyaWJ1dGVOYW1lcy5oYXNPd25Qcm9w
ZXJ0eShwcm9wTmFtZSkpIHtcblx0ICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IERPTUF0dHJp
YnV0ZU5hbWVzW3Byb3BOYW1lXTtcblx0ICAgICAgICBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFt
ZSA9IGF0dHJpYnV0ZU5hbWU7XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBE
T01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVthdHRyaWJ1dGVOYW1lXSA9IHByb3BO
YW1lO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHRcblx0ICAgICAgaWYgKERPTUF0dHJpYnV0
ZU5hbWVzcGFjZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG5cdCAgICAgICAgcHJvcGVy
dHlJbmZvLmF0dHJpYnV0ZU5hbWVzcGFjZSA9IERPTUF0dHJpYnV0ZU5hbWVzcGFjZXNbcHJvcE5h
bWVdO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBpZiAoRE9NUHJvcGVydHlOYW1lcy5oYXNPd25Q
cm9wZXJ0eShwcm9wTmFtZSkpIHtcblx0ICAgICAgICBwcm9wZXJ0eUluZm8ucHJvcGVydHlOYW1l
ID0gRE9NUHJvcGVydHlOYW1lc1twcm9wTmFtZV07XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGlm
IChET01NdXRhdGlvbk1ldGhvZHMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG5cdCAgICAg
ICAgcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9kID0gRE9NTXV0YXRpb25NZXRob2RzW3Byb3BO
YW1lXTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9w
TmFtZV0gPSBwcm9wZXJ0eUluZm87XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0LyogZXNs
aW50LWRpc2FibGUgbWF4LWxlbiAqL1xuXHR2YXIgQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUiA9
ICc6QS1aX2EtelxcXFx1MDBDMC1cXFxcdTAwRDZcXFxcdTAwRDgtXFxcXHUwMEY2XFxcXHUwMEY4
LVxcXFx1MDJGRlxcXFx1MDM3MC1cXFxcdTAzN0RcXFxcdTAzN0YtXFxcXHUxRkZGXFxcXHUyMDBD
LVxcXFx1MjAwRFxcXFx1MjA3MC1cXFxcdTIxOEZcXFxcdTJDMDAtXFxcXHUyRkVGXFxcXHUzMDAx
LVxcXFx1RDdGRlxcXFx1RjkwMC1cXFxcdUZEQ0ZcXFxcdUZERjAtXFxcXHVGRkZEJztcblx0Lyog
ZXNsaW50LWVuYWJsZSBtYXgtbGVuICovXG5cdFxuXHQvKipcblx0ICogRE9NUHJvcGVydHkgZXhw
b3J0cyBsb29rdXAgb2JqZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGxpa2UgZnVuY3Rpb25zOlxuXHQg
KlxuXHQgKiAgID4gRE9NUHJvcGVydHkuaXNWYWxpZFsnaWQnXVxuXHQgKiAgIHRydWVcblx0ICog
ICA+IERPTVByb3BlcnR5LmlzVmFsaWRbJ2Zvb2JhciddXG5cdCAqICAgdW5kZWZpbmVkXG5cdCAq
XG5cdCAqIEFsdGhvdWdoIHRoaXMgbWF5IGJlIGNvbmZ1c2luZywgaXQgcGVyZm9ybXMgYmV0dGVy
IGluIGdlbmVyYWwuXG5cdCAqXG5cdCAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20va2V5LWV4aXN0
c1xuXHQgKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2tleS1taXNzaW5nXG5cdCAqL1xuXHR2YXIg
RE9NUHJvcGVydHkgPSB7XG5cdCAgSURfQVRUUklCVVRFX05BTUU6ICdkYXRhLXJlYWN0aWQnLFxu
XHQgIFJPT1RfQVRUUklCVVRFX05BTUU6ICdkYXRhLXJlYWN0cm9vdCcsXG5cdFxuXHQgIEFUVFJJ
QlVURV9OQU1FX1NUQVJUX0NIQVI6IEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIsXG5cdCAgQVRU
UklCVVRFX05BTUVfQ0hBUjogQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUiArICdcXFxcLS4wLTlc
XFxcdTAwQjdcXFxcdTAzMDAtXFxcXHUwMzZGXFxcXHUyMDNGLVxcXFx1MjA0MCcsXG5cdFxuXHQg
IC8qKlxuXHQgICAqIE1hcCBmcm9tIHByb3BlcnR5IFwic3RhbmRhcmQgbmFtZVwiIHRvIGFuIG9i
amVjdCB3aXRoIGluZm8gYWJvdXQgaG93IHRvIHNldFxuXHQgICAqIHRoZSBwcm9wZXJ0eSBpbiB0
aGUgRE9NLiBFYWNoIG9iamVjdCBjb250YWluczpcblx0ICAgKlxuXHQgICAqIGF0dHJpYnV0ZU5h
bWU6XG5cdCAgICogICBVc2VkIHdoZW4gcmVuZGVyaW5nIG1hcmt1cCBvciB3aXRoIGAqQXR0cmli
dXRlKClgLlxuXHQgICAqIGF0dHJpYnV0ZU5hbWVzcGFjZVxuXHQgICAqIHByb3BlcnR5TmFtZTpc
blx0ICAgKiAgIFVzZWQgb24gRE9NIG5vZGUgaW5zdGFuY2VzLiAoVGhpcyBpbmNsdWRlcyBwcm9w
ZXJ0aWVzIHRoYXQgbXV0YXRlIGR1ZSB0b1xuXHQgICAqICAgZXh0ZXJuYWwgZmFjdG9ycy4pXG5c
dCAgICogbXV0YXRpb25NZXRob2Q6XG5cdCAgICogICBJZiBub24tbnVsbCwgdXNlZCBpbnN0ZWFk
IG9mIHRoZSBwcm9wZXJ0eSBvciBgc2V0QXR0cmlidXRlKClgIGFmdGVyXG5cdCAgICogICBpbml0
aWFsIHJlbmRlci5cblx0ICAgKiBtdXN0VXNlUHJvcGVydHk6XG5cdCAgICogICBXaGV0aGVyIHRo
ZSBwcm9wZXJ0eSBtdXN0IGJlIGFjY2Vzc2VkIGFuZCBtdXRhdGVkIGFzIGFuIG9iamVjdCBwcm9w
ZXJ0eS5cblx0ICAgKiBoYXNCb29sZWFuVmFsdWU6XG5cdCAgICogICBXaGV0aGVyIHRoZSBwcm9w
ZXJ0eSBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS5cblx0ICAg
KiBoYXNOdW1lcmljVmFsdWU6XG5cdCAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJl
IG51bWVyaWMgb3IgcGFyc2UgYXMgYSBudW1lcmljIGFuZCBzaG91bGQgYmVcblx0ICAgKiAgIHJl
bW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxzZXkgdmFsdWUuXG5cdCAgICogaGFzUG9zaXRpdmVOdW1l
cmljVmFsdWU6XG5cdCAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIHBvc2l0aXZl
IG51bWVyaWMgb3IgcGFyc2UgYXMgYSBwb3NpdGl2ZVxuXHQgICAqICAgbnVtZXJpYyBhbmQgc2hv
dWxkIGJlIHJlbW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxzZXkgdmFsdWUuXG5cdCAgICogaGFzT3Zl
cmxvYWRlZEJvb2xlYW5WYWx1ZTpcblx0ICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IGNhbiBi
ZSB1c2VkIGFzIGEgZmxhZyBhcyB3ZWxsIGFzIHdpdGggYSB2YWx1ZS5cblx0ICAgKiAgIFJlbW92
ZWQgd2hlbiBzdHJpY3RseSBlcXVhbCB0byBmYWxzZTsgcHJlc2VudCB3aXRob3V0IGEgdmFsdWUg
d2hlblxuXHQgICAqICAgc3RyaWN0bHkgZXF1YWwgdG8gdHJ1ZTsgcHJlc2VudCB3aXRoIGEgdmFs
dWUgb3RoZXJ3aXNlLlxuXHQgICAqL1xuXHQgIHByb3BlcnRpZXM6IHt9LFxuXHRcblx0ICAvKipc
blx0ICAgKiBNYXBwaW5nIGZyb20gbG93ZXJjYXNlIHByb3BlcnR5IG5hbWVzIHRvIHRoZSBwcm9w
ZXJseSBjYXNlZCB2ZXJzaW9uLCB1c2VkXG5cdCAgICogdG8gd2FybiBpbiB0aGUgY2FzZSBvZiBt
aXNzaW5nIHByb3BlcnRpZXMuIEF2YWlsYWJsZSBvbmx5IGluIF9fREVWX18uXG5cdCAgICpcblx0
ICAgKiBhdXRvZm9jdXMgaXMgcHJlZGVmaW5lZCwgYmVjYXVzZSBhZGRpbmcgaXQgdG8gdGhlIHBy
b3BlcnR5IHdoaXRlbGlzdFxuXHQgICAqIGNhdXNlcyB1bmludGVuZGVkIHNpZGUgZWZmZWN0cy5c
blx0ICAgKlxuXHQgICAqIEB0eXBlIHtPYmplY3R9XG5cdCAgICovXG5cdCAgZ2V0UG9zc2libGVT
dGFuZGFyZE5hbWU6ICBmYWxzZSA/IHsgYXV0b2ZvY3VzOiAnYXV0b0ZvY3VzJyB9IDogbnVsbCxc
blx0XG5cdCAgLyoqXG5cdCAgICogQWxsIG9mIHRoZSBpc0N1c3RvbUF0dHJpYnV0ZSgpIGZ1bmN0
aW9ucyB0aGF0IGhhdmUgYmVlbiBpbmplY3RlZC5cblx0ICAgKi9cblx0ICBfaXNDdXN0b21BdHRy
aWJ1dGVGdW5jdGlvbnM6IFtdLFxuXHRcblx0ICAvKipcblx0ICAgKiBDaGVja3Mgd2hldGhlciBh
IHByb3BlcnR5IG5hbWUgaXMgYSBjdXN0b20gYXR0cmlidXRlLlxuXHQgICAqIEBtZXRob2Rcblx0
ICAgKi9cblx0ICBpc0N1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24gKGF0dHJpYnV0ZU5hbWUpIHtc
blx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgRE9NUHJvcGVydHkuX2lzQ3VzdG9tQXR0cmlidXRl
RnVuY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHZhciBpc0N1c3RvbUF0dHJpYnV0ZUZu
ID0gRE9NUHJvcGVydHkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zW2ldO1xuXHQgICAgICBp
ZiAoaXNDdXN0b21BdHRyaWJ1dGVGbihhdHRyaWJ1dGVOYW1lKSkge1xuXHQgICAgICAgIHJldHVy
biB0cnVlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfSxc
blx0XG5cdCAgaW5qZWN0aW9uOiBET01Qcm9wZXJ0eUluamVjdGlvblxuXHR9O1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBET01Qcm9wZXJ0eTtcblxuLyoqKi8gfSxcbi8qIDE2ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipc
blx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHR2YXIgUmVhY3RSZWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2MCk7XG5c
dHZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cdFxu
XHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHQvKipcblx0ICog
SGVscGVyIHRvIGNhbGwgUmVhY3RSZWYuYXR0YWNoUmVmcyB3aXRoIHRoaXMgY29tcG9zaXRlIGNv
bXBvbmVudCwgc3BsaXQgb3V0XG5cdCAqIHRvIGF2b2lkIGFsbG9jYXRpb25zIGluIHRoZSB0cmFu
c2FjdGlvbiBtb3VudC1yZWFkeSBxdWV1ZS5cblx0ICovXG5cdGZ1bmN0aW9uIGF0dGFjaFJlZnMo
KSB7XG5cdCAgUmVhY3RSZWYuYXR0YWNoUmVmcyh0aGlzLCB0aGlzLl9jdXJyZW50RWxlbWVudCk7
XG5cdH1cblx0XG5cdHZhciBSZWFjdFJlY29uY2lsZXIgPSB7XG5cdCAgLyoqXG5cdCAgICogSW5p
dGlhbGl6ZXMgdGhlIGNvbXBvbmVudCwgcmVuZGVycyBtYXJrdXAsIGFuZCByZWdpc3RlcnMgZXZl
bnQgbGlzdGVuZXJzLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW50
ZXJuYWxJbnN0YW5jZVxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxS
ZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJh
bSB7P29iamVjdH0gdGhlIGNvbnRhaW5pbmcgaG9zdCBjb21wb25lbnQgaW5zdGFuY2Vcblx0ICAg
KiBAcGFyYW0gez9vYmplY3R9IGluZm8gYWJvdXQgdGhlIGhvc3QgY29udGFpbmVyXG5cdCAgICog
QHJldHVybiB7P3N0cmluZ30gUmVuZGVyZWQgbWFya3VwIHRvIGJlIGluc2VydGVkIGludG8gdGhl
IERPTS5cblx0ICAgKiBAZmluYWxcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBtb3Vu
dENvbXBvbmVudDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIHRyYW5zYWN0aW9uLCBob3N0
UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgcGFyZW50RGVidWdJRCkgLy8gMCBp
biBwcm9kdWN0aW9uIGFuZCBmb3Igcm9vdHNcblx0ICB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0
ICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcblx0ICAgICAgICBS
ZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVNb3VudENvbXBvbmVudChpbnRl
cm5hbEluc3RhbmNlLl9kZWJ1Z0lELCBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCwg
cGFyZW50RGVidWdJRCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHZhciBtYXJrdXAgPSBp
bnRlcm5hbEluc3RhbmNlLm1vdW50Q29tcG9uZW50KHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBo
b3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgcGFyZW50RGVidWdJRCk7XG5cdCAgICBpZiAoaW50
ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQgJiYgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVu
dEVsZW1lbnQucmVmICE9IG51bGwpIHtcblx0ICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3Vu
dFJlYWR5KCkuZW5xdWV1ZShhdHRhY2hSZWZzLCBpbnRlcm5hbEluc3RhbmNlKTtcblx0ICAgIH1c
blx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJ
RCAhPT0gMCkge1xuXHQgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbk1v
dW50Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuXHQgICAgICB9XG5cdCAg
ICB9XG5cdCAgICByZXR1cm4gbWFya3VwO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFJl
dHVybnMgYSB2YWx1ZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG9cblx0ICAgKiBSZWFjdENvbXBvbmVu
dEVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cC5cblx0ICAgKi9cblx0ICBnZXRIb3N0
Tm9kZTogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UpIHtcblx0ICAgIHJldHVybiBpbnRlcm5h
bEluc3RhbmNlLmdldEhvc3ROb2RlKCk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogUmVs
ZWFzZXMgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgYG1vdW50Q29tcG9uZW50YC5cblx0ICAg
KlxuXHQgICAqIEBmaW5hbFxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHVubW91bnRD
b21wb25lbnQ6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBzYWZlbHkpIHtcblx0ICAgIGlm
IChmYWxzZSkge1xuXHQgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkg
e1xuXHQgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZVVubW91
bnRDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0ICAgIFJlYWN0UmVmLmRldGFjaFJlZnMoaW50ZXJuYWxJbnN0YW5jZSwgaW50ZXJuYWxJ
bnN0YW5jZS5fY3VycmVudEVsZW1lbnQpO1xuXHQgICAgaW50ZXJuYWxJbnN0YW5jZS51bm1vdW50
Q29tcG9uZW50KHNhZmVseSk7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKGludGVy
bmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcblx0ICAgICAgICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25Vbm1vdW50Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVn
SUQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogVXBk
YXRlIGEgY29tcG9uZW50IHVzaW5nIGEgbmV3IGVsZW1lbnQuXG5cdCAgICpcblx0ICAgKiBAcGFy
YW0ge1JlYWN0Q29tcG9uZW50fSBpbnRlcm5hbEluc3RhbmNlXG5cdCAgICogQHBhcmFtIHtSZWFj
dEVsZW1lbnR9IG5leHRFbGVtZW50XG5cdCAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG5cdCAg
ICogQGludGVybmFsXG5cdCAgICovXG5cdCAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKGlu
dGVybmFsSW5zdGFuY2UsIG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuXHQg
ICAgdmFyIHByZXZFbGVtZW50ID0gaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQ7XG5c
dFxuXHQgICAgaWYgKG5leHRFbGVtZW50ID09PSBwcmV2RWxlbWVudCAmJiBjb250ZXh0ID09PSBp
bnRlcm5hbEluc3RhbmNlLl9jb250ZXh0KSB7XG5cdCAgICAgIC8vIFNpbmNlIGVsZW1lbnRzIGFy
ZSBpbW11dGFibGUgYWZ0ZXIgdGhlIG93bmVyIGlzIHJlbmRlcmVkLFxuXHQgICAgICAvLyB3ZSBj
YW4gZG8gYSBjaGVhcCBpZGVudGl0eSBjb21wYXJlIGhlcmUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMg
aXMgYVxuXHQgICAgICAvLyBzdXBlcmZsdW91cyByZWNvbmNpbGUuIEl0J3MgcG9zc2libGUgZm9y
IHN0YXRlIHRvIGJlIG11dGFibGUgYnV0IHN1Y2hcblx0ICAgICAgLy8gY2hhbmdlIHNob3VsZCB0
cmlnZ2VyIGFuIHVwZGF0ZSBvZiB0aGUgb3duZXIgd2hpY2ggd291bGQgcmVjcmVhdGVcblx0ICAg
ICAgLy8gdGhlIGVsZW1lbnQuIFdlIGV4cGxpY2l0bHkgY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ug
b2YgYW4gb3duZXIgc2luY2Vcblx0ICAgICAgLy8gaXQncyBwb3NzaWJsZSBmb3IgYW4gZWxlbWVu
dCBjcmVhdGVkIG91dHNpZGUgYSBjb21wb3NpdGUgdG8gYmVcblx0ICAgICAgLy8gZGVlcGx5IG11
dGF0ZWQgYW5kIHJldXNlZC5cblx0XG5cdCAgICAgIC8vIFRPRE86IEJhaWxpbmcgb3V0IGVhcmx5
IGlzIGp1c3QgYSBwZXJmIG9wdGltaXphdGlvbiByaWdodD9cblx0ICAgICAgLy8gVE9ETzogUmVt
b3ZpbmcgdGhlIHJldHVybiBzdGF0ZW1lbnQgc2hvdWxkIGFmZmVjdCBjb3JyZWN0bmVzcz9cblx0
ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBp
ZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuXHQgICAgICAgIFJlYWN0SW5z
dHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbElu
c3RhbmNlLl9kZWJ1Z0lELCBuZXh0RWxlbWVudCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5c
dCAgICB2YXIgcmVmc0NoYW5nZWQgPSBSZWFjdFJlZi5zaG91bGRVcGRhdGVSZWZzKHByZXZFbGVt
ZW50LCBuZXh0RWxlbWVudCk7XG5cdFxuXHQgICAgaWYgKHJlZnNDaGFuZ2VkKSB7XG5cdCAgICAg
IFJlYWN0UmVmLmRldGFjaFJlZnMoaW50ZXJuYWxJbnN0YW5jZSwgcHJldkVsZW1lbnQpO1xuXHQg
ICAgfVxuXHRcblx0ICAgIGludGVybmFsSW5zdGFuY2UucmVjZWl2ZUNvbXBvbmVudChuZXh0RWxl
bWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHRcblx0ICAgIGlmIChyZWZzQ2hhbmdlZCAm
JiBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCAmJiBpbnRlcm5hbEluc3RhbmNlLl9j
dXJyZW50RWxlbWVudC5yZWYgIT0gbnVsbCkge1xuXHQgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFj
dE1vdW50UmVhZHkoKS5lbnF1ZXVlKGF0dGFjaFJlZnMsIGludGVybmFsSW5zdGFuY2UpO1xuXHQg
ICAgfVxuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5j
ZS5fZGVidWdJRCAhPT0gMCkge1xuXHQgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVn
VG9vbC5vblVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEKTtcblx0ICAg
ICAgfVxuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEZsdXNoIGFueSBkaXJ0
eSBjaGFuZ2VzIGluIGEgY29tcG9uZW50LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENv
bXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZVxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBw
ZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCB0cmFu
c2FjdGlvbiwgdXBkYXRlQmF0Y2hOdW1iZXIpIHtcblx0ICAgIGlmIChpbnRlcm5hbEluc3RhbmNl
Ll91cGRhdGVCYXRjaE51bWJlciAhPT0gdXBkYXRlQmF0Y2hOdW1iZXIpIHtcblx0ICAgICAgLy8g
VGhlIGNvbXBvbmVudCdzIGVucXVldWVkIGJhdGNoIG51bWJlciBzaG91bGQgYWx3YXlzIGJlIHRo
ZSBjdXJyZW50XG5cdCAgICAgIC8vIGJhdGNoIG9yIHRoZSBmb2xsb3dpbmcgb25lLlxuXHQgICAg
ICAgZmFsc2UgPyB3YXJuaW5nKGludGVybmFsSW5zdGFuY2UuX3VwZGF0ZUJhdGNoTnVtYmVyID09
IG51bGwgfHwgaW50ZXJuYWxJbnN0YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIgPT09IHVwZGF0ZUJh
dGNoTnVtYmVyICsgMSwgJ3BlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogVW5leHBlY3RlZCBiYXRj
aCBudW1iZXIgKGN1cnJlbnQgJXMsICcgKyAncGVuZGluZyAlcyknLCB1cGRhdGVCYXRjaE51bWJl
ciwgaW50ZXJuYWxJbnN0YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIpIDogdm9pZCAwO1xuXHQgICAg
ICByZXR1cm47XG5cdCAgICB9XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKGludGVy
bmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcblx0ICAgICAgICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVcGRhdGVDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5f
ZGVidWdJRCwgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQpO1xuXHQgICAgICB9XG5c
dCAgICB9XG5cdCAgICBpbnRlcm5hbEluc3RhbmNlLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSh0
cmFuc2FjdGlvbik7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKGludGVybmFsSW5z
dGFuY2UuX2RlYnVnSUQgIT09IDApIHtcblx0ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25VcGRhdGVDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7XG5c
dCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJl
YWN0UmVjb25jaWxlcjtcblxuLyoqKi8gfSxcbi8qIDE3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgUmVhY3RC
YXNlQ2xhc3NlcyA9IF9fd2VicGFja19yZXF1aXJlX18oODkpO1xuXHR2YXIgUmVhY3RDaGlsZHJl
biA9IF9fd2VicGFja19yZXF1aXJlX18oMjE1KTtcblx0dmFyIFJlYWN0RE9NRmFjdG9yaWVzID0g
X193ZWJwYWNrX3JlcXVpcmVfXygyMTYpO1xuXHR2YXIgUmVhY3RFbGVtZW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxOCk7XG5cdHZhciBSZWFjdFByb3BUeXBlcyA9IF9fd2VicGFja19yZXF1aXJl
X18oMjE3KTtcblx0dmFyIFJlYWN0VmVyc2lvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMjE4KTtc
blx0XG5cdHZhciBjcmVhdGVSZWFjdENsYXNzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMTkpO1xu
XHR2YXIgb25seUNoaWxkID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMjMpO1xuXHRcblx0dmFyIGNy
ZWF0ZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVudDtcblx0dmFyIGNyZWF0ZUZh
Y3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeTtcblx0dmFyIGNsb25lRWxlbWVudCA9
IFJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQ7XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIg
bG93UHJpb3JpdHlXYXJuaW5nID0gcmVxdWlyZSgnLi9sb3dQcmlvcml0eVdhcm5pbmcnKTtcblx0
ICB2YXIgY2FuRGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL2NhbkRlZmluZVByb3BlcnR5Jyk7
XG5cdCAgdmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50
VmFsaWRhdG9yJyk7XG5cdCAgdmFyIGRpZFdhcm5Qcm9wVHlwZXNEZXByZWNhdGVkID0gZmFsc2U7
XG5cdCAgY3JlYXRlRWxlbWVudCA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVhdGVFbGVtZW50
O1xuXHQgIGNyZWF0ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9y
eTtcblx0ICBjbG9uZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY2xvbmVFbGVtZW50
O1xuXHR9XG5cdFxuXHR2YXIgX19zcHJlYWQgPSBfYXNzaWduO1xuXHR2YXIgY3JlYXRlTWl4aW4g
PSBmdW5jdGlvbiAobWl4aW4pIHtcblx0ICByZXR1cm4gbWl4aW47XG5cdH07XG5cdFxuXHRpZiAo
ZmFsc2UpIHtcblx0ICB2YXIgd2FybmVkRm9yU3ByZWFkID0gZmFsc2U7XG5cdCAgdmFyIHdhcm5l
ZEZvckNyZWF0ZU1peGluID0gZmFsc2U7XG5cdCAgX19zcHJlYWQgPSBmdW5jdGlvbiAoKSB7XG5c
dCAgICBsb3dQcmlvcml0eVdhcm5pbmcod2FybmVkRm9yU3ByZWFkLCAnUmVhY3QuX19zcHJlYWQg
aXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiBVc2UgJyArICdPYmplY3QuYXNz
aWduIGRpcmVjdGx5IG9yIGFub3RoZXIgaGVscGVyIGZ1bmN0aW9uIHdpdGggc2ltaWxhciAnICsg
J3NlbWFudGljcy4gWW91IG1heSBiZSBzZWVpbmcgdGhpcyB3YXJuaW5nIGR1ZSB0byB5b3VyIGNv
bXBpbGVyLiAnICsgJ1NlZSBodHRwczovL2ZiLm1lL3JlYWN0LXNwcmVhZC1kZXByZWNhdGlvbiBm
b3IgbW9yZSBkZXRhaWxzLicpO1xuXHQgICAgd2FybmVkRm9yU3ByZWFkID0gdHJ1ZTtcblx0ICAg
IHJldHVybiBfYXNzaWduLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG5cdCAgfTtcblx0XG5cdCAg
Y3JlYXRlTWl4aW4gPSBmdW5jdGlvbiAobWl4aW4pIHtcblx0ICAgIGxvd1ByaW9yaXR5V2Fybmlu
Zyh3YXJuZWRGb3JDcmVhdGVNaXhpbiwgJ1JlYWN0LmNyZWF0ZU1peGluIGlzIGRlcHJlY2F0ZWQg
YW5kIHNob3VsZCBub3QgYmUgdXNlZC4gJyArICdJbiBSZWFjdCB2MTYuMCwgaXQgd2lsbCBiZSBy
ZW1vdmVkLiAnICsgJ1lvdSBjYW4gdXNlIHRoaXMgbWl4aW4gZGlyZWN0bHkgaW5zdGVhZC4gJyAr
ICdTZWUgaHR0cHM6Ly9mYi5tZS9jcmVhdGVtaXhpbi13YXMtbmV2ZXItaW1wbGVtZW50ZWQgZm9y
IG1vcmUgaW5mby4nKTtcblx0ICAgIHdhcm5lZEZvckNyZWF0ZU1peGluID0gdHJ1ZTtcblx0ICAg
IHJldHVybiBtaXhpbjtcblx0ICB9O1xuXHR9XG5cdFxuXHR2YXIgUmVhY3QgPSB7XG5cdCAgLy8g
TW9kZXJuXG5cdFxuXHQgIENoaWxkcmVuOiB7XG5cdCAgICBtYXA6IFJlYWN0Q2hpbGRyZW4ubWFw
LFxuXHQgICAgZm9yRWFjaDogUmVhY3RDaGlsZHJlbi5mb3JFYWNoLFxuXHQgICAgY291bnQ6IFJl
YWN0Q2hpbGRyZW4uY291bnQsXG5cdCAgICB0b0FycmF5OiBSZWFjdENoaWxkcmVuLnRvQXJyYXks
XG5cdCAgICBvbmx5OiBvbmx5Q2hpbGRcblx0ICB9LFxuXHRcblx0ICBDb21wb25lbnQ6IFJlYWN0
QmFzZUNsYXNzZXMuQ29tcG9uZW50LFxuXHQgIFB1cmVDb21wb25lbnQ6IFJlYWN0QmFzZUNsYXNz
ZXMuUHVyZUNvbXBvbmVudCxcblx0XG5cdCAgY3JlYXRlRWxlbWVudDogY3JlYXRlRWxlbWVudCxc
blx0ICBjbG9uZUVsZW1lbnQ6IGNsb25lRWxlbWVudCxcblx0ICBpc1ZhbGlkRWxlbWVudDogUmVh
Y3RFbGVtZW50LmlzVmFsaWRFbGVtZW50LFxuXHRcblx0ICAvLyBDbGFzc2ljXG5cdFxuXHQgIFBy
b3BUeXBlczogUmVhY3RQcm9wVHlwZXMsXG5cdCAgY3JlYXRlQ2xhc3M6IGNyZWF0ZVJlYWN0Q2xh
c3MsXG5cdCAgY3JlYXRlRmFjdG9yeTogY3JlYXRlRmFjdG9yeSxcblx0ICBjcmVhdGVNaXhpbjog
Y3JlYXRlTWl4aW4sXG5cdFxuXHQgIC8vIFRoaXMgbG9va3MgRE9NIHNwZWNpZmljIGJ1dCB0aGVz
ZSBhcmUgYWN0dWFsbHkgaXNvbW9ycGhpYyBoZWxwZXJzXG5cdCAgLy8gc2luY2UgdGhleSBhcmUg
anVzdCBnZW5lcmF0aW5nIERPTSBzdHJpbmdzLlxuXHQgIERPTTogUmVhY3RET01GYWN0b3JpZXMs
XG5cdFxuXHQgIHZlcnNpb246IFJlYWN0VmVyc2lvbixcblx0XG5cdCAgLy8gRGVwcmVjYXRlZCBo
b29rIGZvciBKU1ggc3ByZWFkLCBkb24ndCB1c2UgdGhpcyBmb3IgYW55dGhpbmcuXG5cdCAgX19z
cHJlYWQ6IF9fc3ByZWFkXG5cdH07XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgd2FybmVk
Rm9yQ3JlYXRlQ2xhc3MgPSBmYWxzZTtcblx0ICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcblx0
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFjdCwgJ1Byb3BUeXBlcycsIHtcblx0ICAgICAg
Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5nKGRpZFdhcm5Q
cm9wVHlwZXNEZXByZWNhdGVkLCAnQWNjZXNzaW5nIFByb3BUeXBlcyB2aWEgdGhlIG1haW4gUmVh
Y3QgcGFja2FnZSBpcyBkZXByZWNhdGVkLCcgKyAnIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gIFJl
YWN0IHYxNi4wLicgKyAnIFVzZSB0aGUgbGF0ZXN0IGF2YWlsYWJsZSB2MTUuKiBwcm9wLXR5cGVz
IHBhY2thZ2UgZnJvbSBucG0gaW5zdGVhZC4nICsgJyBGb3IgaW5mbyBvbiB1c2FnZSwgY29tcGF0
aWJpbGl0eSwgbWlncmF0aW9uIGFuZCBtb3JlLCBzZWUgJyArICdodHRwczovL2ZiLm1lL3Byb3At
dHlwZXMtZG9jcycpO1xuXHQgICAgICAgIGRpZFdhcm5Qcm9wVHlwZXNEZXByZWNhdGVkID0gdHJ1
ZTtcblx0ICAgICAgICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG5cdCAgICAgIH1cblx0ICAgIH0p
O1xuXHRcblx0ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFjdCwgJ2NyZWF0ZUNsYXNzJywg
e1xuXHQgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBsb3dQcmlvcml0eVdhcm5p
bmcod2FybmVkRm9yQ3JlYXRlQ2xhc3MsICdBY2Nlc3NpbmcgY3JlYXRlQ2xhc3MgdmlhIHRoZSBt
YWluIFJlYWN0IHBhY2thZ2UgaXMgZGVwcmVjYXRlZCwnICsgJyBhbmQgd2lsbCBiZSByZW1vdmVk
IGluIFJlYWN0IHYxNi4wLicgKyBcIiBVc2UgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzIGluc3Rl
YWQuIElmIHlvdSdyZSBub3QgeWV0IFwiICsgJ3JlYWR5IHRvIG1pZ3JhdGUsIGNyZWF0ZS1yZWFj
dC1jbGFzcyB2MTUuKiBpcyBhdmFpbGFibGUgJyArICdvbiBucG0gYXMgYSB0ZW1wb3JhcnksIGRy
b3AtaW4gcmVwbGFjZW1lbnQuICcgKyAnRm9yIG1vcmUgaW5mbyBzZWUgaHR0cHM6Ly9mYi5tZS9y
ZWFjdC1jcmVhdGUtY2xhc3MnKTtcblx0ICAgICAgICB3YXJuZWRGb3JDcmVhdGVDbGFzcyA9IHRy
dWU7XG5cdCAgICAgICAgcmV0dXJuIGNyZWF0ZVJlYWN0Q2xhc3M7XG5cdCAgICAgIH1cblx0ICAg
IH0pO1xuXHQgIH1cblx0XG5cdCAgLy8gUmVhY3QuRE9NIGZhY3RvcmllcyBhcmUgZGVwcmVjYXRl
ZC4gV3JhcCB0aGVzZSBtZXRob2RzIHNvIHRoYXRcblx0ICAvLyBpbnZvY2F0aW9ucyBvZiB0aGUg
UmVhY3QuRE9NIG5hbWVzcGFjZSBhbmQgYWxlcnQgdXNlcnMgdG8gc3dpdGNoXG5cdCAgLy8gdG8g
dGhlIGByZWFjdC1kb20tZmFjdG9yaWVzYCBwYWNrYWdlLlxuXHQgIFJlYWN0LkRPTSA9IHt9O1xu
XHQgIHZhciB3YXJuZWRGb3JGYWN0b3JpZXMgPSBmYWxzZTtcblx0ICBPYmplY3Qua2V5cyhSZWFj
dERPTUZhY3RvcmllcykuZm9yRWFjaChmdW5jdGlvbiAoZmFjdG9yeSkge1xuXHQgICAgUmVhY3Qu
RE9NW2ZhY3RvcnldID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICBpZiAoIXdhcm5lZEZvckZhY3Rv
cmllcykge1xuXHQgICAgICAgIGxvd1ByaW9yaXR5V2FybmluZyhmYWxzZSwgJ0FjY2Vzc2luZyBm
YWN0b3JpZXMgbGlrZSBSZWFjdC5ET00uJXMgaGFzIGJlZW4gZGVwcmVjYXRlZCAnICsgJ2FuZCB3
aWxsIGJlIHJlbW92ZWQgaW4gdjE2LjArLiBVc2UgdGhlICcgKyAncmVhY3QtZG9tLWZhY3Rvcmll
cyBwYWNrYWdlIGluc3RlYWQuICcgKyAnIFZlcnNpb24gMS4wIHByb3ZpZGVzIGEgZHJvcC1pbiBy
ZXBsYWNlbWVudC4nICsgJyBGb3IgbW9yZSBpbmZvLCBzZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1k
b20tZmFjdG9yaWVzJywgZmFjdG9yeSk7XG5cdCAgICAgICAgd2FybmVkRm9yRmFjdG9yaWVzID0g
dHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gUmVhY3RET01GYWN0b3JpZXNbZmFjdG9y
eV0uYXBwbHkoUmVhY3RET01GYWN0b3JpZXMsIGFyZ3VtZW50cyk7XG5cdCAgICB9O1xuXHQgIH0p
O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0O1xuXG4vKioqLyB9LFxuLyogMTgg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg0KTtcblx0XG5cdHZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9fd2VicGFja19yZXF1aXJlX18o
MTEpO1xuXHRcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHR2YXIg
Y2FuRGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkzKTtcblx0dmFyIGhhc093
blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0XG5cdHZhciBS
RUFDVF9FTEVNRU5UX1RZUEUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkxKTtcblx0XG5cdHZhciBS
RVNFUlZFRF9QUk9QUyA9IHtcblx0ICBrZXk6IHRydWUsXG5cdCAgcmVmOiB0cnVlLFxuXHQgIF9f
c2VsZjogdHJ1ZSxcblx0ICBfX3NvdXJjZTogdHJ1ZVxuXHR9O1xuXHRcblx0dmFyIHNwZWNpYWxQ
cm9wS2V5V2FybmluZ1Nob3duLCBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bjtcblx0XG5cdGZ1
bmN0aW9uIGhhc1ZhbGlkUmVmKGNvbmZpZykge1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgaWYg
KGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHtcblx0ICAgICAgdmFyIGdldHRl
ciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY29uZmlnLCAncmVmJykuZ2V0O1xu
XHQgICAgICBpZiAoZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZykge1xuXHQgICAgICAg
IHJldHVybiBmYWxzZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gY29u
ZmlnLnJlZiAhPT0gdW5kZWZpbmVkO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBoYXNWYWxpZEtleShj
b25maWcpIHtcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxs
KGNvbmZpZywgJ2tleScpKSB7XG5cdCAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ2tleScpLmdldDtcblx0ICAgICAgaWYgKGdldHRlciAm
JiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcblx0ICAgICAgICByZXR1cm4gZmFsc2U7XG5cdCAg
ICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuIGNvbmZpZy5rZXkgIT09IHVuZGVmaW5l
ZDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMs
IGRpc3BsYXlOYW1lKSB7XG5cdCAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ0tleSA9IGZ1bmN0aW9u
ICgpIHtcblx0ICAgIGlmICghc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24pIHtcblx0ICAgICAg
c3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24gPSB0cnVlO1xuXHQgICAgICAgZmFsc2UgPyB3YXJu
aW5nKGZhbHNlLCAnJXM6IGBrZXlgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQg
d2lsbCByZXN1bHQgJyArICdpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5l
ZWQgdG8gYWNjZXNzIHRoZSBzYW1lICcgKyAndmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25l
bnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCAnICsgJ3Byb3AuIChodHRwczov
L2ZiLm1lL3JlYWN0LXNwZWNpYWwtcHJvcHMpJywgZGlzcGxheU5hbWUpIDogdm9pZCAwO1xuXHQg
ICAgfVxuXHQgIH07XG5cdCAgd2FybkFib3V0QWNjZXNzaW5nS2V5LmlzUmVhY3RXYXJuaW5nID0g
dHJ1ZTtcblx0ICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdrZXknLCB7XG5cdCAgICBn
ZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ0tleSxcblx0ICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuXHQg
IH0pO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9w
cywgZGlzcGxheU5hbWUpIHtcblx0ICB2YXIgd2FybkFib3V0QWNjZXNzaW5nUmVmID0gZnVuY3Rp
b24gKCkge1xuXHQgICAgaWYgKCFzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bikge1xuXHQgICAg
ICBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93biA9IHRydWU7XG5cdCAgICAgICBmYWxzZSA/IHdh
cm5pbmcoZmFsc2UsICclczogYHJlZmAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBp
dCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3Ug
bmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBv
bmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4gKGh0dHBz
Oi8vZmIubWUvcmVhY3Qtc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSkgOiB2b2lkIDA7XG5c
dCAgICB9XG5cdCAgfTtcblx0ICB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYuaXNSZWFjdFdhcm5pbmcg
PSB0cnVlO1xuXHQgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ3JlZicsIHtcblx0ICAg
IGdldDogd2FybkFib3V0QWNjZXNzaW5nUmVmLFxuXHQgICAgY29uZmlndXJhYmxlOiB0cnVlXG5c
dCAgfSk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgYSBu
ZXcgUmVhY3QgZWxlbWVudC4gVGhpcyBubyBsb25nZXIgYWRoZXJlcyB0b1xuXHQgKiB0aGUgY2xh
c3MgcGF0dGVybiwgc28gZG8gbm90IHVzZSBuZXcgdG8gY2FsbCBpdC4gQWxzbywgbm8gaW5zdGFu
Y2VvZiBjaGVja1xuXHQgKiB3aWxsIHdvcmsuIEluc3RlYWQgdGVzdCAkJHR5cGVvZiBmaWVsZCBh
Z2FpbnN0IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSB0byBjaGVja1xuXHQgKiBpZiBzb21l
dGhpbmcgaXMgYSBSZWFjdCBFbGVtZW50LlxuXHQgKlxuXHQgKiBAcGFyYW0geyp9IHR5cGVcblx0
ICogQHBhcmFtIHsqfSBrZXlcblx0ICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSByZWZcblx0ICog
QHBhcmFtIHsqfSBzZWxmIEEgKnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hl
cmUgYHRoaXNgIGlzXG5cdCAqIGRpZmZlcmVudCBmcm9tIHRoZSBgb3duZXJgIHdoZW4gUmVhY3Qu
Y3JlYXRlRWxlbWVudCBpcyBjYWxsZWQsIHNvIHRoYXQgd2Vcblx0ICogY2FuIHdhcm4uIFdlIHdh
bnQgdG8gZ2V0IHJpZCBvZiBvd25lciBhbmQgcmVwbGFjZSBzdHJpbmcgYHJlZmBzIHdpdGggYXJy
b3dcblx0ICogZnVuY3Rpb25zLCBhbmQgYXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0
aGUgc2FtZSwgdGhlcmUgd2lsbCBiZSBub1xuXHQgKiBjaGFuZ2UgaW4gYmVoYXZpb3IuXG5cdCAq
IEBwYXJhbSB7Kn0gc291cmNlIEFuIGFubm90YXRpb24gb2JqZWN0IChhZGRlZCBieSBhIHRyYW5z
cGlsZXIgb3Igb3RoZXJ3aXNlKVxuXHQgKiBpbmRpY2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJl
ciwgYW5kL29yIG90aGVyIGluZm9ybWF0aW9uLlxuXHQgKiBAcGFyYW0geyp9IG93bmVyXG5cdCAq
IEBwYXJhbSB7Kn0gcHJvcHNcblx0ICogQGludGVybmFsXG5cdCAqL1xuXHR2YXIgUmVhY3RFbGVt
ZW50ID0gZnVuY3Rpb24gKHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9w
cykge1xuXHQgIHZhciBlbGVtZW50ID0ge1xuXHQgICAgLy8gVGhpcyB0YWcgYWxsb3cgdXMgdG8g
dW5pcXVlbHkgaWRlbnRpZnkgdGhpcyBhcyBhIFJlYWN0IEVsZW1lbnRcblx0ICAgICQkdHlwZW9m
OiBSRUFDVF9FTEVNRU5UX1RZUEUsXG5cdFxuXHQgICAgLy8gQnVpbHQtaW4gcHJvcGVydGllcyB0
aGF0IGJlbG9uZyBvbiB0aGUgZWxlbWVudFxuXHQgICAgdHlwZTogdHlwZSxcblx0ICAgIGtleTog
a2V5LFxuXHQgICAgcmVmOiByZWYsXG5cdCAgICBwcm9wczogcHJvcHMsXG5cdFxuXHQgICAgLy8g
UmVjb3JkIHRoZSBjb21wb25lbnQgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoaXMgZWxlbWVu
dC5cblx0ICAgIF9vd25lcjogb3duZXJcblx0ICB9O1xuXHRcblx0ICBpZiAoZmFsc2UpIHtcblx0
ICAgIC8vIFRoZSB2YWxpZGF0aW9uIGZsYWcgaXMgY3VycmVudGx5IG11dGF0aXZlLiBXZSBwdXQg
aXQgb25cblx0ICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4g
ZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXG5cdCAgICAvLyBUaGlzIGNhbiBiZSByZXBsYWNlZCB3
aXRoIGEgV2Vha01hcCBvbmNlIHRoZXkgYXJlIGltcGxlbWVudGVkIGluXG5cdCAgICAvLyBjb21t
b25seSB1c2VkIGRldmVsb3BtZW50IGVudmlyb25tZW50cy5cblx0ICAgIGVsZW1lbnQuX3N0b3Jl
ID0ge307XG5cdFxuXHQgICAgLy8gVG8gbWFrZSBjb21wYXJpbmcgUmVhY3RFbGVtZW50cyBlYXNp
ZXIgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHdlIG1ha2Vcblx0ICAgIC8vIHRoZSB2YWxpZGF0aW9u
IGZsYWcgbm9uLWVudW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGRcblx0ICAg
IC8vIGluY2x1ZGUgZXZlcnkgZW52aXJvbm1lbnQgd2UgcnVuIHRlc3RzIGluKSwgc28gdGhlIHRl
c3QgZnJhbWV3b3JrXG5cdCAgICAvLyBpZ25vcmVzIGl0LlxuXHQgICAgaWYgKGNhbkRlZmluZVBy
b3BlcnR5KSB7XG5cdCAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50Ll9zdG9yZSwg
J3ZhbGlkYXRlZCcsIHtcblx0ICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuXHQgICAgICAg
IGVudW1lcmFibGU6IGZhbHNlLFxuXHQgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuXHQgICAgICAg
IHZhbHVlOiBmYWxzZVxuXHQgICAgICB9KTtcblx0ICAgICAgLy8gc2VsZiBhbmQgc291cmNlIGFy
ZSBERVYgb25seSBwcm9wZXJ0aWVzLlxuXHQgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxl
bWVudCwgJ19zZWxmJywge1xuXHQgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG5cdCAgICAg
ICAgZW51bWVyYWJsZTogZmFsc2UsXG5cdCAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuXHQgICAg
ICAgIHZhbHVlOiBzZWxmXG5cdCAgICAgIH0pO1xuXHQgICAgICAvLyBUd28gZWxlbWVudHMgY3Jl
YXRlZCBpbiB0d28gZGlmZmVyZW50IHBsYWNlcyBzaG91bGQgYmUgY29uc2lkZXJlZFxuXHQgICAg
ICAvLyBlcXVhbCBmb3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgdGhlcmVmb3JlIHdlIGhpZGUgaXQg
ZnJvbSBlbnVtZXJhdGlvbi5cblx0ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQs
ICdfc291cmNlJywge1xuXHQgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG5cdCAgICAgICAg
ZW51bWVyYWJsZTogZmFsc2UsXG5cdCAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuXHQgICAgICAg
IHZhbHVlOiBzb3VyY2Vcblx0ICAgICAgfSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBlbGVt
ZW50Ll9zdG9yZS52YWxpZGF0ZWQgPSBmYWxzZTtcblx0ICAgICAgZWxlbWVudC5fc2VsZiA9IHNl
bGY7XG5cdCAgICAgIGVsZW1lbnQuX3NvdXJjZSA9IHNvdXJjZTtcblx0ICAgIH1cblx0ICAgIGlm
IChPYmplY3QuZnJlZXplKSB7XG5cdCAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudC5wcm9wcyk7
XG5cdCAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudCk7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0
ICByZXR1cm4gZWxlbWVudDtcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBDcmVhdGUgYW5kIHJldHVy
biBhIG5ldyBSZWFjdEVsZW1lbnQgb2YgdGhlIGdpdmVuIHR5cGUuXG5cdCAqIFNlZSBodHRwczov
L2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5j
cmVhdGVlbGVtZW50XG5cdCAqL1xuXHRSZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVudCA9IGZ1bmN0
aW9uICh0eXBlLCBjb25maWcsIGNoaWxkcmVuKSB7XG5cdCAgdmFyIHByb3BOYW1lO1xuXHRcblx0
ICAvLyBSZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFjdGVkXG5cdCAgdmFyIHByb3BzID0ge307XG5c
dFxuXHQgIHZhciBrZXkgPSBudWxsO1xuXHQgIHZhciByZWYgPSBudWxsO1xuXHQgIHZhciBzZWxm
ID0gbnVsbDtcblx0ICB2YXIgc291cmNlID0gbnVsbDtcblx0XG5cdCAgaWYgKGNvbmZpZyAhPSBu
dWxsKSB7XG5cdCAgICBpZiAoaGFzVmFsaWRSZWYoY29uZmlnKSkge1xuXHQgICAgICByZWYgPSBj
b25maWcucmVmO1xuXHQgICAgfVxuXHQgICAgaWYgKGhhc1ZhbGlkS2V5KGNvbmZpZykpIHtcblx0
ICAgICAga2V5ID0gJycgKyBjb25maWcua2V5O1xuXHQgICAgfVxuXHRcblx0ICAgIHNlbGYgPSBj
b25maWcuX19zZWxmID09PSB1bmRlZmluZWQgPyBudWxsIDogY29uZmlnLl9fc2VsZjtcblx0ICAg
IHNvdXJjZSA9IGNvbmZpZy5fX3NvdXJjZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5f
X3NvdXJjZTtcblx0ICAgIC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIGFyZSBhZGRlZCB0byBhIG5l
dyBwcm9wcyBvYmplY3Rcblx0ICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7XG5cdCAgICAg
IGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9Q
Uk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcblx0ICAgICAgICBwcm9wc1twcm9wTmFt
ZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0
ICAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFy
ZSB0cmFuc2ZlcnJlZCBvbnRvXG5cdCAgLy8gdGhlIG5ld2x5IGFsbG9jYXRlZCBwcm9wcyBvYmpl
Y3QuXG5cdCAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG5cdCAg
aWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7XG5cdCAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxk
cmVuO1xuXHQgIH0gZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7XG5cdCAgICB2YXIgY2hp
bGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTtcblx0ICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuXHQgICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1l
bnRzW2kgKyAyXTtcblx0ICAgIH1cblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBpZiAoT2Jq
ZWN0LmZyZWV6ZSkge1xuXHQgICAgICAgIE9iamVjdC5mcmVlemUoY2hpbGRBcnJheSk7XG5cdCAg
ICAgIH1cblx0ICAgIH1cblx0ICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcblx0ICB9
XG5cdFxuXHQgIC8vIFJlc29sdmUgZGVmYXVsdCBwcm9wc1xuXHQgIGlmICh0eXBlICYmIHR5cGUu
ZGVmYXVsdFByb3BzKSB7XG5cdCAgICB2YXIgZGVmYXVsdFByb3BzID0gdHlwZS5kZWZhdWx0UHJv
cHM7XG5cdCAgICBmb3IgKHByb3BOYW1lIGluIGRlZmF1bHRQcm9wcykge1xuXHQgICAgICBpZiAo
cHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgICBwcm9wc1twcm9wTmFt
ZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxu
XHQgIGlmIChmYWxzZSkge1xuXHQgICAgaWYgKGtleSB8fCByZWYpIHtcblx0ICAgICAgaWYgKHR5
cGVvZiBwcm9wcy4kJHR5cGVvZiA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvcHMuJCR0eXBlb2YgIT09
IFJFQUNUX0VMRU1FTlRfVFlQRSkge1xuXHQgICAgICAgIHZhciBkaXNwbGF5TmFtZSA9IHR5cGVv
ZiB0eXBlID09PSAnZnVuY3Rpb24nID8gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwg
J1Vua25vd24nIDogdHlwZTtcblx0ICAgICAgICBpZiAoa2V5KSB7XG5cdCAgICAgICAgICBkZWZp
bmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuXHQgICAgICAgIH1c
blx0ICAgICAgICBpZiAocmVmKSB7XG5cdCAgICAgICAgICBkZWZpbmVSZWZQcm9wV2FybmluZ0dl
dHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAg
fVxuXHQgIH1cblx0ICByZXR1cm4gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBz
b3VyY2UsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQsIHByb3BzKTtcblx0fTtcblx0XG5cdC8q
KlxuXHQgKiBSZXR1cm4gYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIFJlYWN0RWxlbWVudHMgb2Yg
YSBnaXZlbiB0eXBlLlxuXHQgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3Qv
ZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlZmFjdG9yeVxuXHQgKi9cblx0UmVh
Y3RFbGVtZW50LmNyZWF0ZUZhY3RvcnkgPSBmdW5jdGlvbiAodHlwZSkge1xuXHQgIHZhciBmYWN0
b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQuYmluZChudWxsLCB0eXBlKTtcblx0ICAv
LyBFeHBvc2UgdGhlIHR5cGUgb24gdGhlIGZhY3RvcnkgYW5kIHRoZSBwcm90b3R5cGUgc28gdGhh
dCBpdCBjYW4gYmVcblx0ICAvLyBlYXNpbHkgYWNjZXNzZWQgb24gZWxlbWVudHMuIEUuZy4gYDxG
b28gLz4udHlwZSA9PT0gRm9vYC5cblx0ICAvLyBUaGlzIHNob3VsZCBub3QgYmUgbmFtZWQgYGNv
bnN0cnVjdG9yYCBzaW5jZSB0aGlzIG1heSBub3QgYmUgdGhlIGZ1bmN0aW9uXG5cdCAgLy8gdGhh
dCBjcmVhdGVkIHRoZSBlbGVtZW50LCBhbmQgaXQgbWF5IG5vdCBldmVuIGJlIGEgY29uc3RydWN0
b3IuXG5cdCAgLy8gTGVnYWN5IGhvb2sgVE9ETzogV2FybiBpZiB0aGlzIGlzIGFjY2Vzc2VkXG5c
dCAgZmFjdG9yeS50eXBlID0gdHlwZTtcblx0ICByZXR1cm4gZmFjdG9yeTtcblx0fTtcblx0XG5c
dFJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VLZXkgPSBmdW5jdGlvbiAob2xkRWxlbWVudCwg
bmV3S2V5KSB7XG5cdCAgdmFyIG5ld0VsZW1lbnQgPSBSZWFjdEVsZW1lbnQob2xkRWxlbWVudC50
eXBlLCBuZXdLZXksIG9sZEVsZW1lbnQucmVmLCBvbGRFbGVtZW50Ll9zZWxmLCBvbGRFbGVtZW50
Ll9zb3VyY2UsIG9sZEVsZW1lbnQuX293bmVyLCBvbGRFbGVtZW50LnByb3BzKTtcblx0XG5cdCAg
cmV0dXJuIG5ld0VsZW1lbnQ7XG5cdH07XG5cdFxuXHQvKipcblx0ICogQ2xvbmUgYW5kIHJldHVy
biBhIG5ldyBSZWFjdEVsZW1lbnQgdXNpbmcgZWxlbWVudCBhcyB0aGUgc3RhcnRpbmcgcG9pbnQu
XG5cdCAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZl
bC1hcGkuaHRtbCNyZWFjdC5jbG9uZWVsZW1lbnRcblx0ICovXG5cdFJlYWN0RWxlbWVudC5jbG9u
ZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgY29uZmlnLCBjaGlsZHJlbikge1xuXHQgIHZh
ciBwcm9wTmFtZTtcblx0XG5cdCAgLy8gT3JpZ2luYWwgcHJvcHMgYXJlIGNvcGllZFxuXHQgIHZh
ciBwcm9wcyA9IF9hc3NpZ24oe30sIGVsZW1lbnQucHJvcHMpO1xuXHRcblx0ICAvLyBSZXNlcnZl
ZCBuYW1lcyBhcmUgZXh0cmFjdGVkXG5cdCAgdmFyIGtleSA9IGVsZW1lbnQua2V5O1xuXHQgIHZh
ciByZWYgPSBlbGVtZW50LnJlZjtcblx0ICAvLyBTZWxmIGlzIHByZXNlcnZlZCBzaW5jZSB0aGUg
b3duZXIgaXMgcHJlc2VydmVkLlxuXHQgIHZhciBzZWxmID0gZWxlbWVudC5fc2VsZjtcblx0ICAv
LyBTb3VyY2UgaXMgcHJlc2VydmVkIHNpbmNlIGNsb25lRWxlbWVudCBpcyB1bmxpa2VseSB0byBi
ZSB0YXJnZXRlZCBieSBhXG5cdCAgLy8gdHJhbnNwaWxlciwgYW5kIHRoZSBvcmlnaW5hbCBzb3Vy
Y2UgaXMgcHJvYmFibHkgYSBiZXR0ZXIgaW5kaWNhdG9yIG9mIHRoZVxuXHQgIC8vIHRydWUgb3du
ZXIuXG5cdCAgdmFyIHNvdXJjZSA9IGVsZW1lbnQuX3NvdXJjZTtcblx0XG5cdCAgLy8gT3duZXIg
d2lsbCBiZSBwcmVzZXJ2ZWQsIHVubGVzcyByZWYgaXMgb3ZlcnJpZGRlblxuXHQgIHZhciBvd25l
ciA9IGVsZW1lbnQuX293bmVyO1xuXHRcblx0ICBpZiAoY29uZmlnICE9IG51bGwpIHtcblx0ICAg
IGlmIChoYXNWYWxpZFJlZihjb25maWcpKSB7XG5cdCAgICAgIC8vIFNpbGVudGx5IHN0ZWFsIHRo
ZSByZWYgZnJvbSB0aGUgcGFyZW50LlxuXHQgICAgICByZWYgPSBjb25maWcucmVmO1xuXHQgICAg
ICBvd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG5cdCAgICB9XG5cdCAgICBpZiAo
aGFzVmFsaWRLZXkoY29uZmlnKSkge1xuXHQgICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7XG5c
dCAgICB9XG5cdFxuXHQgICAgLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgb3ZlcnJpZGUgZXhpc3Rp
bmcgcHJvcHNcblx0ICAgIHZhciBkZWZhdWx0UHJvcHM7XG5cdCAgICBpZiAoZWxlbWVudC50eXBl
ICYmIGVsZW1lbnQudHlwZS5kZWZhdWx0UHJvcHMpIHtcblx0ICAgICAgZGVmYXVsdFByb3BzID0g
ZWxlbWVudC50eXBlLmRlZmF1bHRQcm9wcztcblx0ICAgIH1cblx0ICAgIGZvciAocHJvcE5hbWUg
aW4gY29uZmlnKSB7XG5cdCAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJv
cE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcblx0
ICAgICAgICBpZiAoY29uZmlnW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkICYmIGRlZmF1bHRQcm9w
cyAhPT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgICAgICAvLyBSZXNvbHZlIGRlZmF1bHQgcHJvcHNc
blx0ICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGRlZmF1bHRQcm9wc1twcm9wTmFtZV07XG5c
dCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1tw
cm9wTmFtZV07XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0
ICAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFy
ZSB0cmFuc2ZlcnJlZCBvbnRvXG5cdCAgLy8gdGhlIG5ld2x5IGFsbG9jYXRlZCBwcm9wcyBvYmpl
Y3QuXG5cdCAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG5cdCAg
aWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7XG5cdCAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxk
cmVuO1xuXHQgIH0gZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7XG5cdCAgICB2YXIgY2hp
bGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTtcblx0ICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuXHQgICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1l
bnRzW2kgKyAyXTtcblx0ICAgIH1cblx0ICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtc
blx0ICB9XG5cdFxuXHQgIHJldHVybiBSZWFjdEVsZW1lbnQoZWxlbWVudC50eXBlLCBrZXksIHJl
Ziwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpO1xuXHR9O1xuXHRcblx0LyoqXG5cdCAqIFZl
cmlmaWVzIHRoZSBvYmplY3QgaXMgYSBSZWFjdEVsZW1lbnQuXG5cdCAqIFNlZSBodHRwczovL2Zh
Y2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5pc3Zh
bGlkZWxlbWVudFxuXHQgKiBAcGFyYW0gez9vYmplY3R9IG9iamVjdFxuXHQgKiBAcmV0dXJuIHti
b29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgdmFsaWQgY29tcG9uZW50LlxuXHQgKiBAZmlu
YWxcblx0ICovXG5cdFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uIChvYmpl
Y3QpIHtcblx0ICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9
PSBudWxsICYmIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xuXHR9O1xu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVsZW1lbnQ7XG5cbi8qKiovIH0sXG4vKiAxOSAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygzKTtcblx0XG5cdHZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygzNik7XG5cdHZhciBFdmVudFBsdWdpblV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVf
XygzNyk7XG5cdHZhciBSZWFjdEVycm9yVXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKTtc
blx0XG5cdHZhciBhY2N1bXVsYXRlSW50byA9IF9fd2VicGFja19yZXF1aXJlX18oNzApO1xuXHR2
YXIgZm9yRWFjaEFjY3VtdWxhdGVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MSk7XG5cdHZhciBp
bnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0LyoqXG5cdCAqIEludGVy
bmFsIHN0b3JlIGZvciBldmVudCBsaXN0ZW5lcnNcblx0ICovXG5cdHZhciBsaXN0ZW5lckJhbmsg
PSB7fTtcblx0XG5cdC8qKlxuXHQgKiBJbnRlcm5hbCBxdWV1ZSBvZiBldmVudHMgdGhhdCBoYXZl
IGFjY3VtdWxhdGVkIHRoZWlyIGRpc3BhdGNoZXMgYW5kIGFyZVxuXHQgKiB3YWl0aW5nIHRvIGhh
dmUgdGhlaXIgZGlzcGF0Y2hlcyBleGVjdXRlZC5cblx0ICovXG5cdHZhciBldmVudFF1ZXVlID0g
bnVsbDtcblx0XG5cdC8qKlxuXHQgKiBEaXNwYXRjaGVzIGFuIGV2ZW50IGFuZCByZWxlYXNlcyBp
dCBiYWNrIGludG8gdGhlIHBvb2wsIHVubGVzcyBwZXJzaXN0ZW50LlxuXHQgKlxuXHQgKiBAcGFy
YW0gez9vYmplY3R9IGV2ZW50IFN5bnRoZXRpYyBldmVudCB0byBiZSBkaXNwYXRjaGVkLlxuXHQg
KiBAcGFyYW0ge2Jvb2xlYW59IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQgaXMgc2ltdWxhdGVkIChj
aGFuZ2VzIGV4biBiZWhhdmlvcilcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHZhciBleGVjdXRl
RGlzcGF0Y2hlc0FuZFJlbGVhc2UgPSBmdW5jdGlvbiAoZXZlbnQsIHNpbXVsYXRlZCkge1xuXHQg
IGlmIChldmVudCkge1xuXHQgICAgRXZlbnRQbHVnaW5VdGlscy5leGVjdXRlRGlzcGF0Y2hlc0lu
T3JkZXIoZXZlbnQsIHNpbXVsYXRlZCk7XG5cdFxuXHQgICAgaWYgKCFldmVudC5pc1BlcnNpc3Rl
bnQoKSkge1xuXHQgICAgICBldmVudC5jb25zdHJ1Y3Rvci5yZWxlYXNlKGV2ZW50KTtcblx0ICAg
IH1cblx0ICB9XG5cdH07XG5cdHZhciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VTaW11bGF0
ZWQgPSBmdW5jdGlvbiAoZSkge1xuXHQgIHJldHVybiBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVh
c2UoZSwgdHJ1ZSk7XG5cdH07XG5cdHZhciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VUb3BM
ZXZlbCA9IGZ1bmN0aW9uIChlKSB7XG5cdCAgcmV0dXJuIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVs
ZWFzZShlLCBmYWxzZSk7XG5cdH07XG5cdFxuXHR2YXIgZ2V0RGljdGlvbmFyeUtleSA9IGZ1bmN0
aW9uIChpbnN0KSB7XG5cdCAgLy8gUHJldmVudHMgVjggcGVyZm9ybWFuY2UgaXNzdWU6XG5cdCAg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzIzMlxuXHQgIHJldHVy
biAnLicgKyBpbnN0Ll9yb290Tm9kZUlEO1xuXHR9O1xuXHRcblx0ZnVuY3Rpb24gaXNJbnRlcmFj
dGl2ZSh0YWcpIHtcblx0ICByZXR1cm4gdGFnID09PSAnYnV0dG9uJyB8fCB0YWcgPT09ICdpbnB1
dCcgfHwgdGFnID09PSAnc2VsZWN0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYSc7XG5cdH1cblx0XG5c
dGZ1bmN0aW9uIHNob3VsZFByZXZlbnRNb3VzZUV2ZW50KG5hbWUsIHR5cGUsIHByb3BzKSB7XG5c
dCAgc3dpdGNoIChuYW1lKSB7XG5cdCAgICBjYXNlICdvbkNsaWNrJzpcblx0ICAgIGNhc2UgJ29u
Q2xpY2tDYXB0dXJlJzpcblx0ICAgIGNhc2UgJ29uRG91YmxlQ2xpY2snOlxuXHQgICAgY2FzZSAn
b25Eb3VibGVDbGlja0NhcHR1cmUnOlxuXHQgICAgY2FzZSAnb25Nb3VzZURvd24nOlxuXHQgICAg
Y2FzZSAnb25Nb3VzZURvd25DYXB0dXJlJzpcblx0ICAgIGNhc2UgJ29uTW91c2VNb3ZlJzpcblx0
ICAgIGNhc2UgJ29uTW91c2VNb3ZlQ2FwdHVyZSc6XG5cdCAgICBjYXNlICdvbk1vdXNlVXAnOlxu
XHQgICAgY2FzZSAnb25Nb3VzZVVwQ2FwdHVyZSc6XG5cdCAgICAgIHJldHVybiAhIShwcm9wcy5k
aXNhYmxlZCAmJiBpc0ludGVyYWN0aXZlKHR5cGUpKTtcblx0ICAgIGRlZmF1bHQ6XG5cdCAgICAg
IHJldHVybiBmYWxzZTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBUaGlzIGlzIGEgdW5p
ZmllZCBpbnRlcmZhY2UgZm9yIGV2ZW50IHBsdWdpbnMgdG8gYmUgaW5zdGFsbGVkIGFuZCBjb25m
aWd1cmVkLlxuXHQgKlxuXHQgKiBFdmVudCBwbHVnaW5zIGNhbiBpbXBsZW1lbnQgdGhlIGZvbGxv
d2luZyBwcm9wZXJ0aWVzOlxuXHQgKlxuXHQgKiAgIGBleHRyYWN0RXZlbnRzYCB7ZnVuY3Rpb24o
c3RyaW5nLCBET01FdmVudFRhcmdldCwgc3RyaW5nLCBvYmplY3QpOiAqfVxuXHQgKiAgICAgUmVx
dWlyZWQuIFdoZW4gYSB0b3AtbGV2ZWwgZXZlbnQgaXMgZmlyZWQsIHRoaXMgbWV0aG9kIGlzIGV4
cGVjdGVkIHRvXG5cdCAqICAgICBleHRyYWN0IHN5bnRoZXRpYyBldmVudHMgdGhhdCB3aWxsIGlu
IHR1cm4gYmUgcXVldWVkIGFuZCBkaXNwYXRjaGVkLlxuXHQgKlxuXHQgKiAgIGBldmVudFR5cGVz
YCB7b2JqZWN0fVxuXHQgKiAgICAgT3B0aW9uYWwsIHBsdWdpbnMgdGhhdCBmaXJlIGV2ZW50cyBt
dXN0IHB1Ymxpc2ggYSBtYXBwaW5nIG9mIHJlZ2lzdHJhdGlvblxuXHQgKiAgICAgbmFtZXMgdGhh
dCBhcmUgdXNlZCB0byByZWdpc3RlciBsaXN0ZW5lcnMuIFZhbHVlcyBvZiB0aGlzIG1hcHBpbmcg
bXVzdFxuXHQgKiAgICAgYmUgb2JqZWN0cyB0aGF0IGNvbnRhaW4gYHJlZ2lzdHJhdGlvbk5hbWVg
IG9yIGBwaGFzZWRSZWdpc3RyYXRpb25OYW1lc2AuXG5cdCAqXG5cdCAqICAgYGV4ZWN1dGVEaXNw
YXRjaGAge2Z1bmN0aW9uKG9iamVjdCwgZnVuY3Rpb24sIHN0cmluZyl9XG5cdCAqICAgICBPcHRp
b25hbCwgYWxsb3dzIHBsdWdpbnMgdG8gb3ZlcnJpZGUgaG93IGFuIGV2ZW50IGdldHMgZGlzcGF0
Y2hlZC4gQnlcblx0ICogICAgIGRlZmF1bHQsIHRoZSBsaXN0ZW5lciBpcyBzaW1wbHkgaW52b2tl
ZC5cblx0ICpcblx0ICogRWFjaCBwbHVnaW4gdGhhdCBpcyBpbmplY3RlZCBpbnRvIGBFdmVudHNQ
bHVnaW5IdWJgIGlzIGltbWVkaWF0ZWx5IG9wZXJhYmxlLlxuXHQgKlxuXHQgKiBAcHVibGljXG5c
dCAqL1xuXHR2YXIgRXZlbnRQbHVnaW5IdWIgPSB7XG5cdCAgLyoqXG5cdCAgICogTWV0aG9kcyBm
b3IgaW5qZWN0aW5nIGRlcGVuZGVuY2llcy5cblx0ICAgKi9cblx0ICBpbmplY3Rpb246IHtcblx0
ICAgIC8qKlxuXHQgICAgICogQHBhcmFtIHthcnJheX0gSW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVy
XG5cdCAgICAgKiBAcHVibGljXG5cdCAgICAgKi9cblx0ICAgIGluamVjdEV2ZW50UGx1Z2luT3Jk
ZXI6IEV2ZW50UGx1Z2luUmVnaXN0cnkuaW5qZWN0RXZlbnRQbHVnaW5PcmRlcixcblx0XG5cdCAg
ICAvKipcblx0ICAgICAqIEBwYXJhbSB7b2JqZWN0fSBpbmplY3RlZE5hbWVzVG9QbHVnaW5zIE1h
cCBmcm9tIG5hbWVzIHRvIHBsdWdpbiBtb2R1bGVzLlxuXHQgICAgICovXG5cdCAgICBpbmplY3RF
dmVudFBsdWdpbnNCeU5hbWU6IEV2ZW50UGx1Z2luUmVnaXN0cnkuaW5qZWN0RXZlbnRQbHVnaW5z
QnlOYW1lXG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogU3RvcmVzIGBsaXN0ZW5lcmAgYXQg
YGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtrZXldYC4gSXMgaWRlbXBvdGVudC5cblx0
ICAgKlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMg
dGhlIHNvdXJjZSBvZiBldmVudHMuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlv
bk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLlxuXHQgICAqIEBwYXJhbSB7
ZnVuY3Rpb259IGxpc3RlbmVyIFRoZSBjYWxsYmFjayB0byBzdG9yZS5cblx0ICAgKi9cblx0ICBw
dXRMaXN0ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7
XG5cdCAgICAhKHR5cGVvZiBsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykgPyAgZmFsc2UgPyBpbnZh
cmlhbnQoZmFsc2UsICdFeHBlY3RlZCAlcyBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLCBpbnN0
ZWFkIGdvdCB0eXBlICVzJywgcmVnaXN0cmF0aW9uTmFtZSwgdHlwZW9mIGxpc3RlbmVyKSA6IF9w
cm9kSW52YXJpYW50KCc5NCcsIHJlZ2lzdHJhdGlvbk5hbWUsIHR5cGVvZiBsaXN0ZW5lcikgOiB2
b2lkIDA7XG5cdFxuXHQgICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG5cdCAg
ICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9u
TmFtZV0gfHwgKGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXSA9IHt9KTtcblx0ICAgIGJh
bmtGb3JSZWdpc3RyYXRpb25OYW1lW2tleV0gPSBsaXN0ZW5lcjtcblx0XG5cdCAgICB2YXIgUGx1
Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1ty
ZWdpc3RyYXRpb25OYW1lXTtcblx0ICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxl
LmRpZFB1dExpc3RlbmVyKSB7XG5cdCAgICAgIFBsdWdpbk1vZHVsZS5kaWRQdXRMaXN0ZW5lcihp
bnN0LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcik7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5c
dCAgLyoqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGluc3QgVGhlIGluc3RhbmNlLCB3aGljaCBp
cyB0aGUgc291cmNlIG9mIGV2ZW50cy5cblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0
aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuXG5cdCAgICogQHJldHVy
biB7P2Z1bmN0aW9ufSBUaGUgc3RvcmVkIGNhbGxiYWNrLlxuXHQgICAqL1xuXHQgIGdldExpc3Rl
bmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSkge1xuXHQgICAgLy8gVE9ETzog
c2hvdWxkUHJldmVudE1vdXNlRXZlbnQgaXMgRE9NLXNwZWNpZmljIGFuZCBkZWZpbml0ZWx5IHNo
b3VsZCBub3Rcblx0ICAgIC8vIGxpdmUgaGVyZTsgbmVlZHMgdG8gYmUgbW92ZWQgdG8gYSBiZXR0
ZXIgcGxhY2Ugc29vblxuXHQgICAgdmFyIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lID0gbGlzdGVu
ZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdO1xuXHQgICAgaWYgKHNob3VsZFByZXZlbnRNb3VzZUV2
ZW50KHJlZ2lzdHJhdGlvbk5hbWUsIGluc3QuX2N1cnJlbnRFbGVtZW50LnR5cGUsIGluc3QuX2N1
cnJlbnRFbGVtZW50LnByb3BzKSkge1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0
ICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xuXHQgICAgcmV0dXJuIGJhbmtG
b3JSZWdpc3RyYXRpb25OYW1lICYmIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lW2tleV07XG5cdCAg
fSxcblx0XG5cdCAgLyoqXG5cdCAgICogRGVsZXRlcyBhIGxpc3RlbmVyIGZyb20gdGhlIHJlZ2lz
dHJhdGlvbiBiYW5rLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGluc3QgVGhlIGlu
c3RhbmNlLCB3aGljaCBpcyB0aGUgc291cmNlIG9mIGV2ZW50cy5cblx0ICAgKiBAcGFyYW0ge3N0
cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCku
XG5cdCAgICovXG5cdCAgZGVsZXRlTGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRp
b25OYW1lKSB7XG5cdCAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5y
ZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTtcblx0ICAgIGlmIChQbHVn
aW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcikge1xuXHQgICAgICBQ
bHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpO1xu
XHQgICAgfVxuXHRcblx0ICAgIHZhciBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSA9IGxpc3RlbmVy
QmFua1tyZWdpc3RyYXRpb25OYW1lXTtcblx0ICAgIC8vIFRPRE86IFRoaXMgc2hvdWxkIG5ldmVy
IGJlIG51bGwgLS0gd2hlbiBpcyBpdD9cblx0ICAgIGlmIChiYW5rRm9yUmVnaXN0cmF0aW9uTmFt
ZSkge1xuXHQgICAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTtcblx0ICAgICAg
ZGVsZXRlIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lW2tleV07XG5cdCAgICB9XG5cdCAgfSxcblx0
XG5cdCAgLyoqXG5cdCAgICogRGVsZXRlcyBhbGwgbGlzdGVuZXJzIGZvciB0aGUgRE9NIGVsZW1l
bnQgd2l0aCB0aGUgc3VwcGxpZWQgSUQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge29iamVjdH0g
aW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2YgZXZlbnRzLlxuXHQgICAq
L1xuXHQgIGRlbGV0ZUFsbExpc3RlbmVyczogZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgIHZhciBr
ZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xuXHQgICAgZm9yICh2YXIgcmVnaXN0cmF0aW9u
TmFtZSBpbiBsaXN0ZW5lckJhbmspIHtcblx0ICAgICAgaWYgKCFsaXN0ZW5lckJhbmsuaGFzT3du
UHJvcGVydHkocmVnaXN0cmF0aW9uTmFtZSkpIHtcblx0ICAgICAgICBjb250aW51ZTtcblx0ICAg
ICAgfVxuXHRcblx0ICAgICAgaWYgKCFsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1ba2V5
XSkge1xuXHQgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICB2YXIgUGx1
Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1ty
ZWdpc3RyYXRpb25OYW1lXTtcblx0ICAgICAgaWYgKFBsdWdpbk1vZHVsZSAmJiBQbHVnaW5Nb2R1
bGUud2lsbERlbGV0ZUxpc3RlbmVyKSB7XG5cdCAgICAgICAgUGx1Z2luTW9kdWxlLndpbGxEZWxl
dGVMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTtcblx0ICAgICAgfVxuXHRcblx0ICAg
ICAgZGVsZXRlIGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtrZXldO1xuXHQgICAgfVxu
XHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEFsbG93cyByZWdpc3RlcmVkIHBsdWdpbnMgYW4g
b3Bwb3J0dW5pdHkgdG8gZXh0cmFjdCBldmVudHMgZnJvbSB0b3AtbGV2ZWxcblx0ICAgKiBuYXRp
dmUgYnJvd3NlciBldmVudHMuXG5cdCAgICpcblx0ICAgKiBAcmV0dXJuIHsqfSBBbiBhY2N1bXVs
YXRpb24gb2Ygc3ludGhldGljIGV2ZW50cy5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0
ICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICAgIHZhciBldmVudHM7XG5cdCAgICB2
YXIgcGx1Z2lucyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2lucztcblx0ICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcGx1Z2lucy5sZW5ndGg7IGkrKykge1xuXHQgICAgICAvLyBOb3QgZXZlcnkg
cGx1Z2luIGluIHRoZSBvcmRlcmluZyBtYXkgYmUgbG9hZGVkIGF0IHJ1bnRpbWUuXG5cdCAgICAg
IHZhciBwb3NzaWJsZVBsdWdpbiA9IHBsdWdpbnNbaV07XG5cdCAgICAgIGlmIChwb3NzaWJsZVBs
dWdpbikge1xuXHQgICAgICAgIHZhciBleHRyYWN0ZWRFdmVudHMgPSBwb3NzaWJsZVBsdWdpbi5l
eHRyYWN0RXZlbnRzKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KTtcblx0ICAgICAgICBpZiAoZXh0cmFjdGVkRXZlbnRzKSB7XG5cdCAgICAg
ICAgICBldmVudHMgPSBhY2N1bXVsYXRlSW50byhldmVudHMsIGV4dHJhY3RlZEV2ZW50cyk7XG5c
dCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4gZXZlbnRzO1xuXHQg
IH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEVucXVldWVzIGEgc3ludGhldGljIGV2ZW50IHRoYXQg
c2hvdWxkIGJlIGRpc3BhdGNoZWQgd2hlblxuXHQgICAqIGBwcm9jZXNzRXZlbnRRdWV1ZWAgaXMg
aW52b2tlZC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7Kn0gZXZlbnRzIEFuIGFjY3VtdWxhdGlv
biBvZiBzeW50aGV0aWMgZXZlbnRzLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGVu
cXVldWVFdmVudHM6IGZ1bmN0aW9uIChldmVudHMpIHtcblx0ICAgIGlmIChldmVudHMpIHtcblx0
ICAgICAgZXZlbnRRdWV1ZSA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50UXVldWUsIGV2ZW50cyk7XG5c
dCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogRGlzcGF0Y2hlcyBhbGwgc3ludGhl
dGljIGV2ZW50cyBvbiB0aGUgZXZlbnQgcXVldWUuXG5cdCAgICpcblx0ICAgKiBAaW50ZXJuYWxc
blx0ICAgKi9cblx0ICBwcm9jZXNzRXZlbnRRdWV1ZTogZnVuY3Rpb24gKHNpbXVsYXRlZCkge1xu
XHQgICAgLy8gU2V0IGBldmVudFF1ZXVlYCB0byBudWxsIGJlZm9yZSBwcm9jZXNzaW5nIGl0IHNv
IHRoYXQgd2UgY2FuIHRlbGwgaWYgbW9yZVxuXHQgICAgLy8gZXZlbnRzIGdldCBlbnF1ZXVlZCB3
aGlsZSBwcm9jZXNzaW5nLlxuXHQgICAgdmFyIHByb2Nlc3NpbmdFdmVudFF1ZXVlID0gZXZlbnRR
dWV1ZTtcblx0ICAgIGV2ZW50UXVldWUgPSBudWxsO1xuXHQgICAgaWYgKHNpbXVsYXRlZCkge1xu
XHQgICAgICBmb3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2ZW50UXVldWUsIGV4ZWN1dGVE
aXNwYXRjaGVzQW5kUmVsZWFzZVNpbXVsYXRlZCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBm
b3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2ZW50UXVldWUsIGV4ZWN1dGVEaXNwYXRjaGVz
QW5kUmVsZWFzZVRvcExldmVsKTtcblx0ICAgIH1cblx0ICAgICEhZXZlbnRRdWV1ZSA/ICBmYWxz
ZSA/IGludmFyaWFudChmYWxzZSwgJ3Byb2Nlc3NFdmVudFF1ZXVlKCk6IEFkZGl0aW9uYWwgZXZl
bnRzIHdlcmUgZW5xdWV1ZWQgd2hpbGUgcHJvY2Vzc2luZyBhbiBldmVudCBxdWV1ZS4gU3VwcG9y
dCBmb3IgdGhpcyBoYXMgbm90IHlldCBiZWVuIGltcGxlbWVudGVkLicpIDogX3Byb2RJbnZhcmlh
bnQoJzk1JykgOiB2b2lkIDA7XG5cdCAgICAvLyBUaGlzIHdvdWxkIGJlIGEgZ29vZCB0aW1lIHRv
IHJldGhyb3cgaWYgYW55IG9mIHRoZSBldmVudCBoYW5kbGVycyB0aHJldy5cblx0ICAgIFJlYWN0
RXJyb3JVdGlscy5yZXRocm93Q2F1Z2h0RXJyb3IoKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0
ICAgKiBUaGVzZSBhcmUgbmVlZGVkIGZvciB0ZXN0cyBvbmx5LiBEbyBub3QgdXNlIVxuXHQgICAq
L1xuXHQgIF9fcHVyZ2U6IGZ1bmN0aW9uICgpIHtcblx0ICAgIGxpc3RlbmVyQmFuayA9IHt9O1xu
XHQgIH0sXG5cdFxuXHQgIF9fZ2V0TGlzdGVuZXJCYW5rOiBmdW5jdGlvbiAoKSB7XG5cdCAgICBy
ZXR1cm4gbGlzdGVuZXJCYW5rO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
RXZlbnRQbHVnaW5IdWI7XG5cbi8qKiovIH0sXG4vKiAyMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0dmFyIEV2ZW50UGx1Z2luSHViID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7XG5cdHZhciBF
dmVudFBsdWdpblV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNyk7XG5cdFxuXHR2YXIgYWNj
dW11bGF0ZUludG8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKTtcblx0dmFyIGZvckVhY2hBY2N1
bXVsYXRlZCA9IF9fd2VicGFja19yZXF1aXJlX18oNzEpO1xuXHR2YXIgd2FybmluZyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgZ2V0TGlzdGVuZXIgPSBFdmVudFBsdWdpbkh1
Yi5nZXRMaXN0ZW5lcjtcblx0XG5cdC8qKlxuXHQgKiBTb21lIGV2ZW50IHR5cGVzIGhhdmUgYSBu
b3Rpb24gb2YgZGlmZmVyZW50IHJlZ2lzdHJhdGlvbiBuYW1lcyBmb3IgZGlmZmVyZW50XG5cdCAq
IFwicGhhc2VzXCIgb2YgcHJvcGFnYXRpb24uIFRoaXMgZmluZHMgbGlzdGVuZXJzIGJ5IGEgZ2l2
ZW4gcGhhc2UuXG5cdCAqL1xuXHRmdW5jdGlvbiBsaXN0ZW5lckF0UGhhc2UoaW5zdCwgZXZlbnQs
IHByb3BhZ2F0aW9uUGhhc2UpIHtcblx0ICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRp
c3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3Byb3BhZ2F0aW9uUGhhc2VdO1xu
XHQgIHJldHVybiBnZXRMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTtcblx0fVxuXHRc
blx0LyoqXG5cdCAqIFRhZ3MgYSBgU3ludGhldGljRXZlbnRgIHdpdGggZGlzcGF0Y2hlZCBsaXN0
ZW5lcnMuIENyZWF0aW5nIHRoaXMgZnVuY3Rpb25cblx0ICogaGVyZSwgYWxsb3dzIHVzIHRvIG5v
dCBoYXZlIHRvIGJpbmQgb3IgY3JlYXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBldmVudC5cblx0ICog
TXV0YXRpbmcgdGhlIGV2ZW50J3MgbWVtYmVycyBhbGxvd3MgdXMgdG8gbm90IGhhdmUgdG8gY3Jl
YXRlIGEgd3JhcHBpbmdcblx0ICogXCJkaXNwYXRjaFwiIG9iamVjdCB0aGF0IHBhaXJzIHRoZSBl
dmVudCB3aXRoIHRoZSBsaXN0ZW5lci5cblx0ICovXG5cdGZ1bmN0aW9uIGFjY3VtdWxhdGVEaXJl
Y3Rpb25hbERpc3BhdGNoZXMoaW5zdCwgcGhhc2UsIGV2ZW50KSB7XG5cdCAgaWYgKGZhbHNlKSB7
XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhp
bnN0LCAnRGlzcGF0Y2hpbmcgaW5zdCBtdXN0IG5vdCBiZSBudWxsJykgOiB2b2lkIDA7XG5cdCAg
fVxuXHQgIHZhciBsaXN0ZW5lciA9IGxpc3RlbmVyQXRQaGFzZShpbnN0LCBldmVudCwgcGhhc2Up
O1xuXHQgIGlmIChsaXN0ZW5lcikge1xuXHQgICAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0g
YWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzLCBsaXN0ZW5lcik7XG5cdCAg
ICBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0
Y2hJbnN0YW5jZXMsIGluc3QpO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIENvbGxlY3Qg
ZGlzcGF0Y2hlcyAobXVzdCBiZSBlbnRpcmVseSBjb2xsZWN0ZWQgYmVmb3JlIGRpc3BhdGNoaW5n
IC0gc2VlIHVuaXRcblx0ICogdGVzdHMpLiBMYXppbHkgYWxsb2NhdGUgdGhlIGFycmF5IHRvIGNv
bnNlcnZlIG1lbW9yeS4gIFdlIG11c3QgbG9vcCB0aHJvdWdoXG5cdCAqIGVhY2ggZXZlbnQgYW5k
IHBlcmZvcm0gdGhlIHRyYXZlcnNhbCBmb3IgZWFjaCBvbmUuIFdlIGNhbm5vdCBwZXJmb3JtIGFc
blx0ICogc2luZ2xlIHRyYXZlcnNhbCBmb3IgdGhlIGVudGlyZSBjb2xsZWN0aW9uIG9mIGV2ZW50
cyBiZWNhdXNlIGVhY2ggZXZlbnQgbWF5XG5cdCAqIGhhdmUgYSBkaWZmZXJlbnQgdGFyZ2V0Llxu
XHQgKi9cblx0ZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZShldmVu
dCkge1xuXHQgIGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3Ry
YXRpb25OYW1lcykge1xuXHQgICAgRXZlbnRQbHVnaW5VdGlscy50cmF2ZXJzZVR3b1BoYXNlKGV2
ZW50Ll90YXJnZXRJbnN0LCBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzLCBldmVudCk7
XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogU2FtZSBhcyBgYWNjdW11bGF0ZVR3b1BoYXNl
RGlzcGF0Y2hlc1NpbmdsZWAsIGJ1dCBza2lwcyBvdmVyIHRoZSB0YXJnZXRJRC5cblx0ICovXG5c
dGZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGVTa2lwVGFyZ2V0KGV2
ZW50KSB7XG5cdCAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzKSB7XG5cdCAgICB2YXIgdGFyZ2V0SW5zdCA9IGV2ZW50Ll90YXJnZXRJbnN0
O1xuXHQgICAgdmFyIHBhcmVudEluc3QgPSB0YXJnZXRJbnN0ID8gRXZlbnRQbHVnaW5VdGlscy5n
ZXRQYXJlbnRJbnN0YW5jZSh0YXJnZXRJbnN0KSA6IG51bGw7XG5cdCAgICBFdmVudFBsdWdpblV0
aWxzLnRyYXZlcnNlVHdvUGhhc2UocGFyZW50SW5zdCwgYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlz
cGF0Y2hlcywgZXZlbnQpO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIEFjY3VtdWxhdGVz
IHdpdGhvdXQgcmVnYXJkIHRvIGRpcmVjdGlvbiwgZG9lcyBub3QgbG9vayBmb3IgcGhhc2VkXG5c
dCAqIHJlZ2lzdHJhdGlvbiBuYW1lcy4gU2FtZSBhcyBgYWNjdW11bGF0ZURpcmVjdERpc3BhdGNo
ZXNTaW5nbGVgIGJ1dCB3aXRob3V0XG5cdCAqIHJlcXVpcmluZyB0aGF0IHRoZSBgZGlzcGF0Y2hN
YXJrZXJgIGJlIHRoZSBzYW1lIGFzIHRoZSBkaXNwYXRjaGVkIElELlxuXHQgKi9cblx0ZnVuY3Rp
b24gYWNjdW11bGF0ZURpc3BhdGNoZXMoaW5zdCwgaWdub3JlZERpcmVjdGlvbiwgZXZlbnQpIHtc
blx0ICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkg
e1xuXHQgICAgdmFyIHJlZ2lzdHJhdGlvbk5hbWUgPSBldmVudC5kaXNwYXRjaENvbmZpZy5yZWdp
c3RyYXRpb25OYW1lO1xuXHQgICAgdmFyIGxpc3RlbmVyID0gZ2V0TGlzdGVuZXIoaW5zdCwgcmVn
aXN0cmF0aW9uTmFtZSk7XG5cdCAgICBpZiAobGlzdGVuZXIpIHtcblx0ICAgICAgZXZlbnQuX2Rp
c3BhdGNoTGlzdGVuZXJzID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJz
LCBsaXN0ZW5lcik7XG5cdCAgICAgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IGFjY3VtdWxh
dGVJbnRvKGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcywgaW5zdCk7XG5cdCAgICB9XG5cdCAgfVxu
XHR9XG5cdFxuXHQvKipcblx0ICogQWNjdW11bGF0ZXMgZGlzcGF0Y2hlcyBvbiBhbiBgU3ludGhl
dGljRXZlbnRgLCBidXQgb25seSBmb3IgdGhlXG5cdCAqIGBkaXNwYXRjaE1hcmtlcmAuXG5cdCAq
IEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50XG5cdCAqL1xuXHRmdW5jdGlvbiBhY2N1bXVs
YXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZShldmVudCkge1xuXHQgIGlmIChldmVudCAmJiBldmVu
dC5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG5cdCAgICBhY2N1bXVsYXRlRGlz
cGF0Y2hlcyhldmVudC5fdGFyZ2V0SW5zdCwgbnVsbCwgZXZlbnQpO1xuXHQgIH1cblx0fVxuXHRc
blx0ZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudHMpIHtcblx0ICBm
b3JFYWNoQWNjdW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2lu
Z2xlKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1Nr
aXBUYXJnZXQoZXZlbnRzKSB7XG5cdCAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywgYWNjdW11
bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQpO1xuXHR9XG5cdFxuXHRmdW5j
dGlvbiBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobGVhdmUsIGVudGVyLCBmcm9tLCB0
bykge1xuXHQgIEV2ZW50UGx1Z2luVXRpbHMudHJhdmVyc2VFbnRlckxlYXZlKGZyb20sIHRvLCBh
Y2N1bXVsYXRlRGlzcGF0Y2hlcywgbGVhdmUsIGVudGVyKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24g
YWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMoZXZlbnRzKSB7XG5cdCAgZm9yRWFjaEFjY3VtdWxh
dGVkKGV2ZW50cywgYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGUpO1xuXHR9XG5cdFxu
XHQvKipcblx0ICogQSBzbWFsbCBzZXQgb2YgcHJvcGFnYXRpb24gcGF0dGVybnMsIGVhY2ggb2Yg
d2hpY2ggd2lsbCBhY2NlcHQgYSBzbWFsbCBhbW91bnRcblx0ICogb2YgaW5mb3JtYXRpb24sIGFu
ZCBnZW5lcmF0ZSBhIHNldCBvZiBcImRpc3BhdGNoIHJlYWR5IGV2ZW50IG9iamVjdHNcIiAtIHdo
aWNoXG5cdCAqIGFyZSBzZXRzIG9mIGV2ZW50cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGFubm90
YXRlZCB3aXRoIGEgc2V0IG9mIGRpc3BhdGNoZWRcblx0ICogbGlzdGVuZXIgZnVuY3Rpb25zL2lk
cy4gVGhlIEFQSSBpcyBkZXNpZ25lZCB0aGlzIHdheSB0byBkaXNjb3VyYWdlIHRoZXNlXG5cdCAq
IHByb3BhZ2F0aW9uIHN0cmF0ZWdpZXMgZnJvbSBhY3R1YWxseSBleGVjdXRpbmcgdGhlIGRpc3Bh
dGNoZXMsIHNpbmNlIHdlXG5cdCAqIGFsd2F5cyB3YW50IHRvIGNvbGxlY3QgdGhlIGVudGlyZSBz
ZXQgb2YgZGlzcGF0Y2hlcyBiZWZvcmUgZXhlY3V0aW5nIGV2ZW50IGFcblx0ICogc2luZ2xlIG9u
ZS5cblx0ICpcblx0ICogQGNvbnN0cnVjdG9yIEV2ZW50UHJvcGFnYXRvcnNcblx0ICovXG5cdHZh
ciBFdmVudFByb3BhZ2F0b3JzID0ge1xuXHQgIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXM6
IGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMsXG5cdCAgYWNjdW11bGF0ZVR3b1BoYXNlRGlz
cGF0Y2hlc1NraXBUYXJnZXQ6IGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0
LFxuXHQgIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzOiBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0
Y2hlcyxcblx0ICBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXM6IGFjY3VtdWxhdGVFbnRl
ckxlYXZlRGlzcGF0Y2hlc1xuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBFdmVudFByb3Bh
Z2F0b3JzO1xuXG4vKioqLyB9LFxuLyogMjEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBgUmVhY3RJbnN0YW5jZU1h
cGAgbWFpbnRhaW5zIGEgbWFwcGluZyBmcm9tIGEgcHVibGljIGZhY2luZyBzdGF0ZWZ1bFxuXHQg
KiBpbnN0YW5jZSAoa2V5KSBhbmQgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uICh2YWx1ZSku
IFRoaXMgYWxsb3dzIHB1YmxpY1xuXHQgKiBtZXRob2RzIHRvIGFjY2VwdCB0aGUgdXNlciBmYWNp
bmcgaW5zdGFuY2UgYXMgYW4gYXJndW1lbnQgYW5kIG1hcCB0aGVtIGJhY2tcblx0ICogdG8gaW50
ZXJuYWwgbWV0aG9kcy5cblx0ICovXG5cdFxuXHQvLyBUT0RPOiBSZXBsYWNlIHRoaXMgd2l0aCBF
UzY6IHZhciBSZWFjdEluc3RhbmNlTWFwID0gbmV3IE1hcCgpO1xuXHRcblx0dmFyIFJlYWN0SW5z
dGFuY2VNYXAgPSB7XG5cdCAgLyoqXG5cdCAgICogVGhpcyBBUEkgc2hvdWxkIGJlIGNhbGxlZCBg
ZGVsZXRlYCBidXQgd2UnZCBoYXZlIHRvIG1ha2Ugc3VyZSB0byBhbHdheXNcblx0ICAgKiB0cmFu
c2Zvcm0gdGhlc2UgdG8gc3RyaW5ncyBmb3IgSUUgc3VwcG9ydC4gV2hlbiB0aGlzIHRyYW5zZm9y
bSBpcyBmdWxseVxuXHQgICAqIHN1cHBvcnRlZCB3ZSBjYW4gcmVuYW1lIGl0LlxuXHQgICAqL1xu
XHQgIHJlbW92ZTogZnVuY3Rpb24gKGtleSkge1xuXHQgICAga2V5Ll9yZWFjdEludGVybmFsSW5z
dGFuY2UgPSB1bmRlZmluZWQ7XG5cdCAgfSxcblx0XG5cdCAgZ2V0OiBmdW5jdGlvbiAoa2V5KSB7
XG5cdCAgICByZXR1cm4ga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2U7XG5cdCAgfSxcblx0XG5c
dCAgaGFzOiBmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICByZXR1cm4ga2V5Ll9yZWFjdEludGVybmFs
SW5zdGFuY2UgIT09IHVuZGVmaW5lZDtcblx0ICB9LFxuXHRcblx0ICBzZXQ6IGZ1bmN0aW9uIChr
ZXksIHZhbHVlKSB7XG5cdCAgICBrZXkuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSA9IHZhbHVlO1xu
XHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RJbnN0YW5jZU1hcDtcblxu
LyoqKi8gfSxcbi8qIDIyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgU3ludGhldGljRXZl
bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0XG5cdHZhciBnZXRFdmVudFRhcmdldCA9
IF9fd2VicGFja19yZXF1aXJlX18oNDYpO1xuXHRcblx0LyoqXG5cdCAqIEBpbnRlcmZhY2UgVUlF
dmVudFxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9c
blx0ICovXG5cdHZhciBVSUV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIHZpZXc6IGZ1bmN0aW9uIChl
dmVudCkge1xuXHQgICAgaWYgKGV2ZW50LnZpZXcpIHtcblx0ICAgICAgcmV0dXJuIGV2ZW50LnZp
ZXc7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIHRhcmdldCA9IGdldEV2ZW50VGFyZ2V0KGV2ZW50
KTtcblx0ICAgIGlmICh0YXJnZXQud2luZG93ID09PSB0YXJnZXQpIHtcblx0ICAgICAgLy8gdGFy
Z2V0IGlzIGEgd2luZG93IG9iamVjdFxuXHQgICAgICByZXR1cm4gdGFyZ2V0O1xuXHQgICAgfVxu
XHRcblx0ICAgIHZhciBkb2MgPSB0YXJnZXQub3duZXJEb2N1bWVudDtcblx0ICAgIC8vIFRPRE86
IEZpZ3VyZSBvdXQgd2h5IGBvd25lckRvY3VtZW50YCBpcyBzb21ldGltZXMgdW5kZWZpbmVkIGlu
IElFOC5cblx0ICAgIGlmIChkb2MpIHtcblx0ICAgICAgcmV0dXJuIGRvYy5kZWZhdWx0VmlldyB8
fCBkb2MucGFyZW50V2luZG93O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIHdpbmRv
dztcblx0ICAgIH1cblx0ICB9LFxuXHQgIGRldGFpbDogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAg
ICByZXR1cm4gZXZlbnQuZGV0YWlsIHx8IDA7XG5cdCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAq
IEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlz
cGF0Y2ggdGhpcyBldmVudC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1h
cmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuXHQgKiBAcGFyYW0ge29iamVjdH0g
bmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAqIEBleHRlbmRzIHtTeW50aGV0
aWNFdmVudH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY1VJRXZlbnQoZGlzcGF0Y2hDb25m
aWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0
ICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0
Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5cdFN5
bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNVSUV2ZW50LCBVSUV2ZW50SW50ZXJm
YWNlKTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gU3ludGhldGljVUlFdmVudDtcblxuLyoqKi8g
fSxcbi8qIDIzICovXG4zLFxuLyogMjQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIg
ZW1wdHlPYmplY3QgPSB7fTtcblx0XG5cdGlmIChmYWxzZSkge1xuXHQgIE9iamVjdC5mcmVlemUo
ZW1wdHlPYmplY3QpO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGVtcHR5T2JqZWN0O1xu
XG4vKioqLyB9LFxuLyogMjUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNzaWduID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygzNik7XG5cdHZhciBSZWFjdEV2ZW50RW1pdHRlck1peGluID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxNTIpO1xuXHR2YXIgVmlld3BvcnRNZXRyaWNzID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg2OSk7XG5cdFxuXHR2YXIgZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4NCk7XG5cdHZhciBpc0V2ZW50U3VwcG9ydGVkID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg0Nyk7XG5cdFxuXHQvKipcblx0ICogU3VtbWFyeSBvZiBgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyYCBldmVudCBoYW5kbGluZzpcblx0ICpcblx0ICogIC0gVG9wLWxl
dmVsIGRlbGVnYXRpb24gaXMgdXNlZCB0byB0cmFwIG1vc3QgbmF0aXZlIGJyb3dzZXIgZXZlbnRz
LiBUaGlzXG5cdCAqICAgIG1heSBvbmx5IG9jY3VyIGluIHRoZSBtYWluIHRocmVhZCBhbmQgaXMg
dGhlIHJlc3BvbnNpYmlsaXR5IG9mXG5cdCAqICAgIFJlYWN0RXZlbnRMaXN0ZW5lciwgd2hpY2gg
aXMgaW5qZWN0ZWQgYW5kIGNhbiB0aGVyZWZvcmUgc3VwcG9ydCBwbHVnZ2FibGVcblx0ICogICAg
ZXZlbnQgc291cmNlcy4gVGhpcyBpcyB0aGUgb25seSB3b3JrIHRoYXQgb2NjdXJzIGluIHRoZSBt
YWluIHRocmVhZC5cblx0ICpcblx0ICogIC0gV2Ugbm9ybWFsaXplIGFuZCBkZS1kdXBsaWNhdGUg
ZXZlbnRzIHRvIGFjY291bnQgZm9yIGJyb3dzZXIgcXVpcmtzLiBUaGlzXG5cdCAqICAgIG1heSBi
ZSBkb25lIGluIHRoZSB3b3JrZXIgdGhyZWFkLlxuXHQgKlxuXHQgKiAgLSBGb3J3YXJkIHRoZXNl
IG5hdGl2ZSBldmVudHMgKHdpdGggdGhlIGFzc29jaWF0ZWQgdG9wLWxldmVsIHR5cGUgdXNlZCB0
b1xuXHQgKiAgICB0cmFwIGl0KSB0byBgRXZlbnRQbHVnaW5IdWJgLCB3aGljaCBpbiB0dXJuIHdp
bGwgYXNrIHBsdWdpbnMgaWYgdGhleSB3YW50XG5cdCAqICAgIHRvIGV4dHJhY3QgYW55IHN5bnRo
ZXRpYyBldmVudHMuXG5cdCAqXG5cdCAqICAtIFRoZSBgRXZlbnRQbHVnaW5IdWJgIHdpbGwgdGhl
biBwcm9jZXNzIGVhY2ggZXZlbnQgYnkgYW5ub3RhdGluZyB0aGVtIHdpdGhcblx0ICogICAgXCJk
aXNwYXRjaGVzXCIsIGEgc2VxdWVuY2Ugb2YgbGlzdGVuZXJzIGFuZCBJRHMgdGhhdCBjYXJlIGFi
b3V0IHRoYXQgZXZlbnQuXG5cdCAqXG5cdCAqICAtIFRoZSBgRXZlbnRQbHVnaW5IdWJgIHRoZW4g
ZGlzcGF0Y2hlcyB0aGUgZXZlbnRzLlxuXHQgKlxuXHQgKiBPdmVydmlldyBvZiBSZWFjdCBhbmQg
dGhlIGV2ZW50IHN5c3RlbTpcblx0ICpcblx0ICogKy0tLS0tLS0tLS0tLSsgICAgLlxuXHQgKiB8
ICAgIERPTSAgICAgfCAgICAuXG5cdCAqICstLS0tLS0tLS0tLS0rICAgIC5cblx0ICogICAgICAg
fCAgICAgICAgICAgLlxuXHQgKiAgICAgICB2ICAgICAgICAgICAuXG5cdCAqICstLS0tLS0tLS0t
LS0rICAgIC5cblx0ICogfCBSZWFjdEV2ZW50IHwgICAgLlxuXHQgKiB8ICBMaXN0ZW5lciAgfCAg
ICAuXG5cdCAqICstLS0tLS0tLS0tLS0rICAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgKy0t
LS0tLS0tLS0tK1xuXHQgKiAgICAgICB8ICAgICAgICAgICAuICAgICAgICAgICAgICAgKy0tLS0t
LS0tK3xTaW1wbGVFdmVudHxcblx0ICogICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAg
IHwgICAgICAgICB8UGx1Z2luICAgICB8XG5cdCAqICstLS0tLXwtLS0tLS0rICAgIC4gICAgICAg
ICAgICAgICB2ICAgICAgICAgKy0tLS0tLS0tLS0tK1xuXHQgKiB8ICAgICB8ICAgICAgfCAgICAu
ICAgICstLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0rXG5c
dCAqIHwgICAgICstLS0tLS0tLS0tLS4tLS0+fEV2ZW50UGx1Z2luSHVifCAgICAgICAgICAgICAg
ICAgICAgfCAgICBFdmVudCAgIHxcblx0ICogfCAgICAgICAgICAgIHwgICAgLiAgICB8ICAgICAg
ICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0rICB8IFByb3BhZ2F0b3JzfFxuXHQgKiB8IFJlYWN0
RXZlbnQgfCAgICAuICAgIHwgICAgICAgICAgICAgIHwgICAgIHxUYXBFdmVudCAgIHwgIHwtLS0t
LS0tLS0tLS18XG5cdCAqIHwgIEVtaXR0ZXIgICB8ICAgIC4gICAgfCAgICAgICAgICAgICAgfDwt
LS0rfFBsdWdpbiAgICAgfCAgfG90aGVyIHBsdWdpbnxcblx0ICogfCAgICAgICAgICAgIHwgICAg
LiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0rICB8ICB1dGlsaXRpZXMgfFxu
XHQgKiB8ICAgICArLS0tLS0tLS0tLS0uLS0tPnwgICAgICAgICAgICAgIHwgICAgICAgICAgICAg
ICAgICAgICstLS0tLS0tLS0tLS0rXG5cdCAqIHwgICAgIHwgICAgICB8ICAgIC4gICAgKy0tLS0t
LS0tLS0tLS0tK1xuXHQgKiArLS0tLS18LS0tLS0tKyAgICAuICAgICAgICAgICAgICAgIF4gICAg
ICAgICstLS0tLS0tLS0tLStcblx0ICogICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAg
ICB8ICAgICAgICB8RW50ZXIvTGVhdmV8XG5cdCAqICAgICAgICsgICAgICAgICAgIC4gICAgICAg
ICAgICAgICAgKy0tLS0tLS0rfFBsdWdpbiAgICAgfFxuXHQgKiArLS0tLS0tLS0tLS0tLSsgICAu
ICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLStcblx0ICogfCBhcHBsaWNhdGlv
biB8ICAgLlxuXHQgKiB8LS0tLS0tLS0tLS0tLXwgICAuXG5cdCAqIHwgICAgICAgICAgICAgfCAg
IC5cblx0ICogfCAgICAgICAgICAgICB8ICAgLlxuXHQgKiArLS0tLS0tLS0tLS0tLSsgICAuXG5c
dCAqICAgICAgICAgICAgICAgICAgIC5cblx0ICogICAgUmVhY3QgQ29yZSAgICAgLiAgR2VuZXJh
bCBQdXJwb3NlIEV2ZW50IFBsdWdpbiBTeXN0ZW1cblx0ICovXG5cdFxuXHR2YXIgaGFzRXZlbnRQ
YWdlWFk7XG5cdHZhciBhbHJlYWR5TGlzdGVuaW5nVG8gPSB7fTtcblx0dmFyIGlzTW9uaXRvcmlu
Z1Njcm9sbFZhbHVlID0gZmFsc2U7XG5cdHZhciByZWFjdFRvcExpc3RlbmVyc0NvdW50ZXIgPSAw
O1xuXHRcblx0Ly8gRm9yIGV2ZW50cyBsaWtlICdzdWJtaXQnIHdoaWNoIGRvbid0IGNvbnNpc3Rl
bnRseSBidWJibGUgKHdoaWNoIHdlIHRyYXAgYXQgYVxuXHQvLyBsb3dlciBub2RlIHRoYW4gYGRv
Y3VtZW50YCksIGJpbmRpbmcgYXQgYGRvY3VtZW50YCB3b3VsZCBjYXVzZSBkdXBsaWNhdGVcblx0
Ly8gZXZlbnRzIHNvIHdlIGRvbid0IGluY2x1ZGUgdGhlbSBoZXJlXG5cdHZhciB0b3BFdmVudE1h
cHBpbmcgPSB7XG5cdCAgdG9wQWJvcnQ6ICdhYm9ydCcsXG5cdCAgdG9wQW5pbWF0aW9uRW5kOiBn
ZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uZW5kJykgfHwgJ2FuaW1hdGlvbmVu
ZCcsXG5cdCAgdG9wQW5pbWF0aW9uSXRlcmF0aW9uOiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFt
ZSgnYW5pbWF0aW9uaXRlcmF0aW9uJykgfHwgJ2FuaW1hdGlvbml0ZXJhdGlvbicsXG5cdCAgdG9w
QW5pbWF0aW9uU3RhcnQ6IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCdhbmltYXRpb25zdGFy
dCcpIHx8ICdhbmltYXRpb25zdGFydCcsXG5cdCAgdG9wQmx1cjogJ2JsdXInLFxuXHQgIHRvcENh
blBsYXk6ICdjYW5wbGF5Jyxcblx0ICB0b3BDYW5QbGF5VGhyb3VnaDogJ2NhbnBsYXl0aHJvdWdo
Jyxcblx0ICB0b3BDaGFuZ2U6ICdjaGFuZ2UnLFxuXHQgIHRvcENsaWNrOiAnY2xpY2snLFxuXHQg
IHRvcENvbXBvc2l0aW9uRW5kOiAnY29tcG9zaXRpb25lbmQnLFxuXHQgIHRvcENvbXBvc2l0aW9u
U3RhcnQ6ICdjb21wb3NpdGlvbnN0YXJ0Jyxcblx0ICB0b3BDb21wb3NpdGlvblVwZGF0ZTogJ2Nv
bXBvc2l0aW9udXBkYXRlJyxcblx0ICB0b3BDb250ZXh0TWVudTogJ2NvbnRleHRtZW51Jyxcblx0
ICB0b3BDb3B5OiAnY29weScsXG5cdCAgdG9wQ3V0OiAnY3V0Jyxcblx0ICB0b3BEb3VibGVDbGlj
azogJ2RibGNsaWNrJyxcblx0ICB0b3BEcmFnOiAnZHJhZycsXG5cdCAgdG9wRHJhZ0VuZDogJ2Ry
YWdlbmQnLFxuXHQgIHRvcERyYWdFbnRlcjogJ2RyYWdlbnRlcicsXG5cdCAgdG9wRHJhZ0V4aXQ6
ICdkcmFnZXhpdCcsXG5cdCAgdG9wRHJhZ0xlYXZlOiAnZHJhZ2xlYXZlJyxcblx0ICB0b3BEcmFn
T3ZlcjogJ2RyYWdvdmVyJyxcblx0ICB0b3BEcmFnU3RhcnQ6ICdkcmFnc3RhcnQnLFxuXHQgIHRv
cERyb3A6ICdkcm9wJyxcblx0ICB0b3BEdXJhdGlvbkNoYW5nZTogJ2R1cmF0aW9uY2hhbmdlJyxc
blx0ICB0b3BFbXB0aWVkOiAnZW1wdGllZCcsXG5cdCAgdG9wRW5jcnlwdGVkOiAnZW5jcnlwdGVk
Jyxcblx0ICB0b3BFbmRlZDogJ2VuZGVkJyxcblx0ICB0b3BFcnJvcjogJ2Vycm9yJyxcblx0ICB0
b3BGb2N1czogJ2ZvY3VzJyxcblx0ICB0b3BJbnB1dDogJ2lucHV0Jyxcblx0ICB0b3BLZXlEb3du
OiAna2V5ZG93bicsXG5cdCAgdG9wS2V5UHJlc3M6ICdrZXlwcmVzcycsXG5cdCAgdG9wS2V5VXA6
ICdrZXl1cCcsXG5cdCAgdG9wTG9hZGVkRGF0YTogJ2xvYWRlZGRhdGEnLFxuXHQgIHRvcExvYWRl
ZE1ldGFkYXRhOiAnbG9hZGVkbWV0YWRhdGEnLFxuXHQgIHRvcExvYWRTdGFydDogJ2xvYWRzdGFy
dCcsXG5cdCAgdG9wTW91c2VEb3duOiAnbW91c2Vkb3duJyxcblx0ICB0b3BNb3VzZU1vdmU6ICdt
b3VzZW1vdmUnLFxuXHQgIHRvcE1vdXNlT3V0OiAnbW91c2VvdXQnLFxuXHQgIHRvcE1vdXNlT3Zl
cjogJ21vdXNlb3ZlcicsXG5cdCAgdG9wTW91c2VVcDogJ21vdXNldXAnLFxuXHQgIHRvcFBhc3Rl
OiAncGFzdGUnLFxuXHQgIHRvcFBhdXNlOiAncGF1c2UnLFxuXHQgIHRvcFBsYXk6ICdwbGF5Jyxc
blx0ICB0b3BQbGF5aW5nOiAncGxheWluZycsXG5cdCAgdG9wUHJvZ3Jlc3M6ICdwcm9ncmVzcycs
XG5cdCAgdG9wUmF0ZUNoYW5nZTogJ3JhdGVjaGFuZ2UnLFxuXHQgIHRvcFNjcm9sbDogJ3Njcm9s
bCcsXG5cdCAgdG9wU2Vla2VkOiAnc2Vla2VkJyxcblx0ICB0b3BTZWVraW5nOiAnc2Vla2luZycs
XG5cdCAgdG9wU2VsZWN0aW9uQ2hhbmdlOiAnc2VsZWN0aW9uY2hhbmdlJyxcblx0ICB0b3BTdGFs
bGVkOiAnc3RhbGxlZCcsXG5cdCAgdG9wU3VzcGVuZDogJ3N1c3BlbmQnLFxuXHQgIHRvcFRleHRJ
bnB1dDogJ3RleHRJbnB1dCcsXG5cdCAgdG9wVGltZVVwZGF0ZTogJ3RpbWV1cGRhdGUnLFxuXHQg
IHRvcFRvdWNoQ2FuY2VsOiAndG91Y2hjYW5jZWwnLFxuXHQgIHRvcFRvdWNoRW5kOiAndG91Y2hl
bmQnLFxuXHQgIHRvcFRvdWNoTW92ZTogJ3RvdWNobW92ZScsXG5cdCAgdG9wVG91Y2hTdGFydDog
J3RvdWNoc3RhcnQnLFxuXHQgIHRvcFRyYW5zaXRpb25FbmQ6IGdldFZlbmRvclByZWZpeGVkRXZl
bnROYW1lKCd0cmFuc2l0aW9uZW5kJykgfHwgJ3RyYW5zaXRpb25lbmQnLFxuXHQgIHRvcFZvbHVt
ZUNoYW5nZTogJ3ZvbHVtZWNoYW5nZScsXG5cdCAgdG9wV2FpdGluZzogJ3dhaXRpbmcnLFxuXHQg
IHRvcFdoZWVsOiAnd2hlZWwnXG5cdH07XG5cdFxuXHQvKipcblx0ICogVG8gZW5zdXJlIG5vIGNv
bmZsaWN0cyB3aXRoIG90aGVyIHBvdGVudGlhbCBSZWFjdCBpbnN0YW5jZXMgb24gdGhlIHBhZ2Vc
blx0ICovXG5cdHZhciB0b3BMaXN0ZW5lcnNJREtleSA9ICdfcmVhY3RMaXN0ZW5lcnNJRCcgKyBT
dHJpbmcoTWF0aC5yYW5kb20oKSkuc2xpY2UoMik7XG5cdFxuXHRmdW5jdGlvbiBnZXRMaXN0ZW5p
bmdGb3JEb2N1bWVudChtb3VudEF0KSB7XG5cdCAgLy8gSW4gSUU4LCBgbW91bnRBdGAgaXMgYSBo
b3N0IG9iamVjdCBhbmQgZG9lc24ndCBoYXZlIGBoYXNPd25Qcm9wZXJ0eWBcblx0ICAvLyBkaXJl
Y3RseS5cblx0ICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb3Vu
dEF0LCB0b3BMaXN0ZW5lcnNJREtleSkpIHtcblx0ICAgIG1vdW50QXRbdG9wTGlzdGVuZXJzSURL
ZXldID0gcmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVyKys7XG5cdCAgICBhbHJlYWR5TGlzdGVuaW5n
VG9bbW91bnRBdFt0b3BMaXN0ZW5lcnNJREtleV1dID0ge307XG5cdCAgfVxuXHQgIHJldHVybiBh
bHJlYWR5TGlzdGVuaW5nVG9bbW91bnRBdFt0b3BMaXN0ZW5lcnNJREtleV1dO1xuXHR9XG5cdFxu
XHQvKipcblx0ICogYFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcmAgaXMgdXNlZCB0byBhdHRhY2gg
dG9wLWxldmVsIGV2ZW50IGxpc3RlbmVycy4gRm9yXG5cdCAqIGV4YW1wbGU6XG5cdCAqXG5cdCAq
ICAgRXZlbnRQbHVnaW5IdWIucHV0TGlzdGVuZXIoJ215SUQnLCAnb25DbGljaycsIG15RnVuY3Rp
b24pO1xuXHQgKlxuXHQgKiBUaGlzIHdvdWxkIGFsbG9jYXRlIGEgXCJyZWdpc3RyYXRpb25cIiBv
ZiBgKCdvbkNsaWNrJywgbXlGdW5jdGlvbilgIG9uICdteUlEJy5cblx0ICpcblx0ICogQGludGVy
bmFsXG5cdCAqL1xuXHR2YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gX2Fzc2lnbih7fSwg
UmVhY3RFdmVudEVtaXR0ZXJNaXhpbiwge1xuXHQgIC8qKlxuXHQgICAqIEluamVjdGFibGUgZXZl
bnQgYmFja2VuZFxuXHQgICAqL1xuXHQgIFJlYWN0RXZlbnRMaXN0ZW5lcjogbnVsbCxcblx0XG5c
dCAgaW5qZWN0aW9uOiB7XG5cdCAgICAvKipcblx0ICAgICAqIEBwYXJhbSB7b2JqZWN0fSBSZWFj
dEV2ZW50TGlzdGVuZXJcblx0ICAgICAqL1xuXHQgICAgaW5qZWN0UmVhY3RFdmVudExpc3RlbmVy
OiBmdW5jdGlvbiAoUmVhY3RFdmVudExpc3RlbmVyKSB7XG5cdCAgICAgIFJlYWN0RXZlbnRMaXN0
ZW5lci5zZXRIYW5kbGVUb3BMZXZlbChSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaGFuZGxlVG9w
TGV2ZWwpO1xuXHQgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3Rl
bmVyID0gUmVhY3RFdmVudExpc3RlbmVyO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxu
XHQgICAqIFNldHMgd2hldGhlciBvciBub3QgYW55IGNyZWF0ZWQgY2FsbGJhY2tzIHNob3VsZCBi
ZSBlbmFibGVkLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIFRydWUg
aWYgY2FsbGJhY2tzIHNob3VsZCBiZSBlbmFibGVkLlxuXHQgICAqL1xuXHQgIHNldEVuYWJsZWQ6
IGZ1bmN0aW9uIChlbmFibGVkKSB7XG5cdCAgICBpZiAoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVy
LlJlYWN0RXZlbnRMaXN0ZW5lcikge1xuXHQgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIu
UmVhY3RFdmVudExpc3RlbmVyLnNldEVuYWJsZWQoZW5hYmxlZCk7XG5cdCAgICB9XG5cdCAgfSxc
blx0XG5cdCAgLyoqXG5cdCAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBjYWxsYmFja3Mg
YXJlIGVuYWJsZWQuXG5cdCAgICovXG5cdCAgaXNFbmFibGVkOiBmdW5jdGlvbiAoKSB7XG5cdCAg
ICByZXR1cm4gISEoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lciAm
JiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLmlzRW5hYmxlZCgp
KTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBXZSBsaXN0ZW4gZm9yIGJ1YmJsZWQgdG91
Y2ggZXZlbnRzIG9uIHRoZSBkb2N1bWVudCBvYmplY3QuXG5cdCAgICpcblx0ICAgKiBGaXJlZm94
IHY4LjAxIChhbmQgcG9zc2libHkgb3RoZXJzKSBleGhpYml0ZWQgc3RyYW5nZSBiZWhhdmlvciB3
aGVuXG5cdCAgICogbW91bnRpbmcgYG9ubW91c2Vtb3ZlYCBldmVudHMgYXQgc29tZSBub2RlIHRo
YXQgd2FzIG5vdCB0aGUgZG9jdW1lbnRcblx0ICAgKiBlbGVtZW50LiBUaGUgc3ltcHRvbXMgd2Vy
ZSB0aGF0IGlmIHlvdXIgbW91c2UgaXMgbm90IG1vdmluZyBvdmVyIHNvbWV0aGluZ1xuXHQgICAq
IGNvbnRhaW5lZCB3aXRoaW4gdGhhdCBtb3VudCBwb2ludCAoZm9yIGV4YW1wbGUgb24gdGhlIGJh
Y2tncm91bmQpIHRoZVxuXHQgICAqIHRvcC1sZXZlbCBsaXN0ZW5lcnMgZm9yIGBvbm1vdXNlbW92
ZWAgd29uJ3QgYmUgY2FsbGVkLiBIb3dldmVyLCBpZiB5b3Vcblx0ICAgKiByZWdpc3RlciB0aGUg
YG1vdXNlbW92ZWAgb24gdGhlIGRvY3VtZW50IG9iamVjdCwgdGhlbiBpdCB3aWxsIG9mIGNvdXJz
ZVxuXHQgICAqIGNhdGNoIGFsbCBgbW91c2Vtb3ZlYHMuIFRoaXMgYWxvbmcgd2l0aCBpT1MgcXVp
cmtzLCBqdXN0aWZpZXMgcmVzdHJpY3Rpbmdcblx0ICAgKiB0b3AtbGV2ZWwgbGlzdGVuZXJzIHRv
IHRoZSBkb2N1bWVudCBvYmplY3Qgb25seSwgYXQgbGVhc3QgZm9yIHRoZXNlXG5cdCAgICogbW92
ZW1lbnQgdHlwZXMgb2YgZXZlbnRzIGFuZCBwb3NzaWJseSBhbGwgZXZlbnRzLlxuXHQgICAqXG5c
dCAgICogQHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAxMC8w
OS9jbGlja19ldmVudF9kZWwuaHRtbFxuXHQgICAqXG5cdCAgICogQWxzbywgYGtleXVwYC9ga2V5
cHJlc3NgL2BrZXlkb3duYCBkbyBub3QgYnViYmxlIHRvIHRoZSB3aW5kb3cgb24gSUUsIGJ1dFxu
XHQgICAqIHRoZXkgYnViYmxlIHRvIGRvY3VtZW50LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtz
dHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2Ap
LlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZW50RG9jdW1lbnRIYW5kbGUgRG9jdW1lbnQg
d2hpY2ggb3ducyB0aGUgY29udGFpbmVyXG5cdCAgICovXG5cdCAgbGlzdGVuVG86IGZ1bmN0aW9u
IChyZWdpc3RyYXRpb25OYW1lLCBjb250ZW50RG9jdW1lbnRIYW5kbGUpIHtcblx0ICAgIHZhciBt
b3VudEF0ID0gY29udGVudERvY3VtZW50SGFuZGxlO1xuXHQgICAgdmFyIGlzTGlzdGVuaW5nID0g
Z2V0TGlzdGVuaW5nRm9yRG9jdW1lbnQobW91bnRBdCk7XG5cdCAgICB2YXIgZGVwZW5kZW5jaWVz
ID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzW3JlZ2lz
dHJhdGlvbk5hbWVdO1xuXHRcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVz
Lmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHZhciBkZXBlbmRlbmN5ID0gZGVwZW5kZW5jaWVzW2ld
O1xuXHQgICAgICBpZiAoIShpc0xpc3RlbmluZy5oYXNPd25Qcm9wZXJ0eShkZXBlbmRlbmN5KSAm
JiBpc0xpc3RlbmluZ1tkZXBlbmRlbmN5XSkpIHtcblx0ICAgICAgICBpZiAoZGVwZW5kZW5jeSA9
PT0gJ3RvcFdoZWVsJykge1xuXHQgICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3doZWVs
JykpIHtcblx0ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRM
aXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BXaGVlbCcsICd3aGVlbCcsIG1vdW50QXQpO1xu
XHQgICAgICAgICAgfSBlbHNlIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdtb3VzZXdoZWVsJykpIHtc
blx0ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5l
ci50cmFwQnViYmxlZEV2ZW50KCd0b3BXaGVlbCcsICdtb3VzZXdoZWVsJywgbW91bnRBdCk7XG5c
dCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAvLyBGaXJlZm94IG5lZWRzIHRvIGNh
cHR1cmUgYSBkaWZmZXJlbnQgbW91c2Ugc2Nyb2xsIGV2ZW50LlxuXHQgICAgICAgICAgICAvLyBA
c2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy90ZXN0cy9zY3JvbGwuaHRt
bFxuXHQgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3Rl
bmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFdoZWVsJywgJ0RPTU1vdXNlU2Nyb2xsJywgbW91bnRB
dCk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSAn
dG9wU2Nyb2xsJykge1xuXHQgICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9sbCcs
IHRydWUpKSB7XG5cdCAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2
ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoJ3RvcFNjcm9sbCcsICdzY3JvbGwnLCBtb3Vu
dEF0KTtcblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2
ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wU2Nyb2xs
JywgJ3Njcm9sbCcsIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIu
V0lORE9XX0hBTkRMRSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIGlmIChkZXBl
bmRlbmN5ID09PSAndG9wRm9jdXMnIHx8IGRlcGVuZGVuY3kgPT09ICd0b3BCbHVyJykge1xuXHQg
ICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ2ZvY3VzJywgdHJ1ZSkpIHtcblx0ICAgICAg
ICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2Fw
dHVyZWRFdmVudCgndG9wRm9jdXMnLCAnZm9jdXMnLCBtb3VudEF0KTtcblx0ICAgICAgICAgICAg
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRF
dmVudCgndG9wQmx1cicsICdibHVyJywgbW91bnRBdCk7XG5cdCAgICAgICAgICB9IGVsc2UgaWYg
KGlzRXZlbnRTdXBwb3J0ZWQoJ2ZvY3VzaW4nKSkge1xuXHQgICAgICAgICAgICAvLyBJRSBoYXMg
YGZvY3VzaW5gIGFuZCBgZm9jdXNvdXRgIGV2ZW50cyB3aGljaCBidWJibGUuXG5cdCAgICAgICAg
ICAgIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDgv
MDQvZGVsZWdhdGluZ190aGUuaHRtbFxuXHQgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVt
aXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEZvY3VzJywgJ2Zv
Y3VzaW4nLCBtb3VudEF0KTtcblx0ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVy
LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BCbHVyJywgJ2ZvY3Vzb3V0
JywgbW91bnRBdCk7XG5cdCAgICAgICAgICB9XG5cdFxuXHQgICAgICAgICAgLy8gdG8gbWFrZSBz
dXJlIGJsdXIgYW5kIGZvY3VzIGV2ZW50IGxpc3RlbmVycyBhcmUgb25seSBhdHRhY2hlZCBvbmNl
XG5cdCAgICAgICAgICBpc0xpc3RlbmluZy50b3BCbHVyID0gdHJ1ZTtcblx0ICAgICAgICAgIGlz
TGlzdGVuaW5nLnRvcEZvY3VzID0gdHJ1ZTtcblx0ICAgICAgICB9IGVsc2UgaWYgKHRvcEV2ZW50
TWFwcGluZy5oYXNPd25Qcm9wZXJ0eShkZXBlbmRlbmN5KSkge1xuXHQgICAgICAgICAgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KGRl
cGVuZGVuY3ksIHRvcEV2ZW50TWFwcGluZ1tkZXBlbmRlbmN5XSwgbW91bnRBdCk7XG5cdCAgICAg
ICAgfVxuXHRcblx0ICAgICAgICBpc0xpc3RlbmluZ1tkZXBlbmRlbmN5XSA9IHRydWU7XG5cdCAg
ICAgIH1cblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICB0cmFwQnViYmxlZEV2ZW50OiBmdW5jdGlv
biAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSkge1xuXHQgICAgcmV0dXJu
IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRF
dmVudCh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKTtcblx0ICB9LFxuXHRc
blx0ICB0cmFwQ2FwdHVyZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgaGFuZGxlckJh
c2VOYW1lLCBoYW5kbGUpIHtcblx0ICAgIHJldHVybiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIu
UmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KHRvcExldmVsVHlwZSwgaGFuZGxl
ckJhc2VOYW1lLCBoYW5kbGUpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFByb3RlY3Qg
YWdhaW5zdCBkb2N1bWVudC5jcmVhdGVFdmVudCgpIHJldHVybmluZyBudWxsXG5cdCAgICogU29t
ZSBwb3B1cCBibG9ja2VyIGV4dGVuc2lvbnMgYXBwZWFyIHRvIGRvIHRoaXM6XG5cdCAgICogaHR0
cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy82ODg3XG5cdCAgICovXG5cdCAg
c3VwcG9ydHNFdmVudFBhZ2VYWTogZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKCFkb2N1bWVudC5j
cmVhdGVFdmVudCkge1xuXHQgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICB9XG5cdCAgICB2YXIg
ZXYgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpO1xuXHQgICAgcmV0dXJuIGV2
ICE9IG51bGwgJiYgJ3BhZ2VYJyBpbiBldjtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBM
aXN0ZW5zIHRvIHdpbmRvdyBzY3JvbGwgYW5kIHJlc2l6ZSBldmVudHMuIFdlIGNhY2hlIHNjcm9s
bCB2YWx1ZXMgc28gdGhhdFxuXHQgICAqIGFwcGxpY2F0aW9uIGNvZGUgY2FuIGFjY2VzcyB0aGVt
IHdpdGhvdXQgdHJpZ2dlcmluZyByZWZsb3dzLlxuXHQgICAqXG5cdCAgICogVmlld3BvcnRNZXRy
aWNzIGlzIG9ubHkgdXNlZCBieSBTeW50aGV0aWNNb3VzZS9Ub3VjaEV2ZW50IGFuZCBvbmx5IHdo
ZW5cblx0ICAgKiBwYWdlWC9wYWdlWSBpc24ndCBzdXBwb3J0ZWQgKGxlZ2FjeSBicm93c2Vycyku
XG5cdCAgICpcblx0ICAgKiBOT1RFOiBTY3JvbGwgZXZlbnRzIGRvIG5vdCBidWJibGUuXG5cdCAg
ICpcblx0ICAgKiBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy9zY3Jv
bGwuaHRtbFxuXHQgICAqL1xuXHQgIGVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZzogZnVuY3Rp
b24gKCkge1xuXHQgICAgaWYgKGhhc0V2ZW50UGFnZVhZID09PSB1bmRlZmluZWQpIHtcblx0ICAg
ICAgaGFzRXZlbnRQYWdlWFkgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc3VwcG9ydHNFdmVu
dFBhZ2VYWSgpO1xuXHQgICAgfVxuXHQgICAgaWYgKCFoYXNFdmVudFBhZ2VYWSAmJiAhaXNNb25p
dG9yaW5nU2Nyb2xsVmFsdWUpIHtcblx0ICAgICAgdmFyIHJlZnJlc2ggPSBWaWV3cG9ydE1ldHJp
Y3MucmVmcmVzaFNjcm9sbFZhbHVlcztcblx0ICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVy
LlJlYWN0RXZlbnRMaXN0ZW5lci5tb25pdG9yU2Nyb2xsVmFsdWUocmVmcmVzaCk7XG5cdCAgICAg
IGlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlID0gdHJ1ZTtcblx0ICAgIH1cblx0ICB9XG5cdH0pO1xu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXI7XG5cbi8qKiov
IH0sXG4vKiAyNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY1VJRXZlbnQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKTtcblx0dmFyIFZpZXdwb3J0TWV0cmljcyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNjkpO1xuXHRcblx0dmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IF9f
d2VicGFja19yZXF1aXJlX18oNDUpO1xuXHRcblx0LyoqXG5cdCAqIEBpbnRlcmZhY2UgTW91c2VF
dmVudFxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9c
blx0ICovXG5cdHZhciBNb3VzZUV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIHNjcmVlblg6IG51bGws
XG5cdCAgc2NyZWVuWTogbnVsbCxcblx0ICBjbGllbnRYOiBudWxsLFxuXHQgIGNsaWVudFk6IG51
bGwsXG5cdCAgY3RybEtleTogbnVsbCxcblx0ICBzaGlmdEtleTogbnVsbCxcblx0ICBhbHRLZXk6
IG51bGwsXG5cdCAgbWV0YUtleTogbnVsbCxcblx0ICBnZXRNb2RpZmllclN0YXRlOiBnZXRFdmVu
dE1vZGlmaWVyU3RhdGUsXG5cdCAgYnV0dG9uOiBmdW5jdGlvbiAoZXZlbnQpIHtcblx0ICAgIC8v
IFdlYmtpdCwgRmlyZWZveCwgSUU5K1xuXHQgICAgLy8gd2hpY2g6ICAxIDIgM1xuXHQgICAgLy8g
YnV0dG9uOiAwIDEgMiAoc3RhbmRhcmQpXG5cdCAgICB2YXIgYnV0dG9uID0gZXZlbnQuYnV0dG9u
O1xuXHQgICAgaWYgKCd3aGljaCcgaW4gZXZlbnQpIHtcblx0ICAgICAgcmV0dXJuIGJ1dHRvbjtc
blx0ICAgIH1cblx0ICAgIC8vIElFPDlcblx0ICAgIC8vIHdoaWNoOiAgdW5kZWZpbmVkXG5cdCAg
ICAvLyBidXR0b246IDAgMCAwXG5cdCAgICAvLyBidXR0b246IDEgNCAyIChvbm1vdXNldXApXG5c
dCAgICByZXR1cm4gYnV0dG9uID09PSAyID8gMiA6IGJ1dHRvbiA9PT0gNCA/IDEgOiAwO1xuXHQg
IH0sXG5cdCAgYnV0dG9uczogbnVsbCxcblx0ICByZWxhdGVkVGFyZ2V0OiBmdW5jdGlvbiAoZXZl
bnQpIHtcblx0ICAgIHJldHVybiBldmVudC5yZWxhdGVkVGFyZ2V0IHx8IChldmVudC5mcm9tRWxl
bWVudCA9PT0gZXZlbnQuc3JjRWxlbWVudCA/IGV2ZW50LnRvRWxlbWVudCA6IGV2ZW50LmZyb21F
bGVtZW50KTtcblx0ICB9LFxuXHQgIC8vIFwiUHJvcHJpZXRhcnlcIiBJbnRlcmZhY2UuXG5cdCAg
cGFnZVg6IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgcmV0dXJuICdwYWdlWCcgaW4gZXZlbnQg
PyBldmVudC5wYWdlWCA6IGV2ZW50LmNsaWVudFggKyBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNj
cm9sbExlZnQ7XG5cdCAgfSxcblx0ICBwYWdlWTogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICBy
ZXR1cm4gJ3BhZ2VZJyBpbiBldmVudCA/IGV2ZW50LnBhZ2VZIDogZXZlbnQuY2xpZW50WSArIFZp
ZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsVG9wO1xuXHQgIH1cblx0fTtcblx0XG5cdC8qKlxu
XHQgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRv
IGRpc3BhdGNoIHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtl
ciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0ICogQHBhcmFtIHtvYmpl
Y3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAZXh0ZW5kcyB7U3lu
dGhldGljVUlFdmVudH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY01vdXNlRXZlbnQoZGlz
cGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJn
ZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29u
ZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0
fVxuXHRcblx0U3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljTW91c2VFdmVu
dCwgTW91c2VFdmVudEludGVyZmFjZSk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRp
Y01vdXNlRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAyNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxu
XHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdHZhciBPQlNF
UlZFRF9FUlJPUiA9IHt9O1xuXHRcblx0LyoqXG5cdCAqIGBUcmFuc2FjdGlvbmAgY3JlYXRlcyBh
IGJsYWNrIGJveCB0aGF0IGlzIGFibGUgdG8gd3JhcCBhbnkgbWV0aG9kIHN1Y2ggdGhhdFxuXHQg
KiBjZXJ0YWluIGludmFyaWFudHMgYXJlIG1haW50YWluZWQgYmVmb3JlIGFuZCBhZnRlciB0aGUg
bWV0aG9kIGlzIGludm9rZWRcblx0ICogKEV2ZW4gaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biB3
aGlsZSBpbnZva2luZyB0aGUgd3JhcHBlZCBtZXRob2QpLiBXaG9ldmVyXG5cdCAqIGluc3RhbnRp
YXRlcyBhIHRyYW5zYWN0aW9uIGNhbiBwcm92aWRlIGVuZm9yY2VycyBvZiB0aGUgaW52YXJpYW50
cyBhdFxuXHQgKiBjcmVhdGlvbiB0aW1lLiBUaGUgYFRyYW5zYWN0aW9uYCBjbGFzcyBpdHNlbGYg
d2lsbCBzdXBwbHkgb25lIGFkZGl0aW9uYWxcblx0ICogYXV0b21hdGljIGludmFyaWFudCBmb3Ig
eW91IC0gdGhlIGludmFyaWFudCB0aGF0IGFueSB0cmFuc2FjdGlvbiBpbnN0YW5jZVxuXHQgKiBz
aG91bGQgbm90IGJlIHJ1biB3aGlsZSBpdCBpcyBhbHJlYWR5IGJlaW5nIHJ1bi4gWW91IHdvdWxk
IHR5cGljYWxseSBjcmVhdGUgYVxuXHQgKiBzaW5nbGUgaW5zdGFuY2Ugb2YgYSBgVHJhbnNhY3Rp
b25gIGZvciByZXVzZSBtdWx0aXBsZSB0aW1lcywgdGhhdCBwb3RlbnRpYWxseVxuXHQgKiBpcyB1
c2VkIHRvIHdyYXAgc2V2ZXJhbCBkaWZmZXJlbnQgbWV0aG9kcy4gV3JhcHBlcnMgYXJlIGV4dHJl
bWVseSBzaW1wbGUgLVxuXHQgKiB0aGV5IG9ubHkgcmVxdWlyZSBpbXBsZW1lbnRpbmcgdHdvIG1l
dGhvZHMuXG5cdCAqXG5cdCAqIDxwcmU+XG5cdCAqICAgICAgICAgICAgICAgICAgICAgICB3cmFw
cGVycyAoaW5qZWN0ZWQgYXQgY3JlYXRpb24gdGltZSlcblx0ICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICsgICAgICAgICtcblx0ICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgICAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgICstLS0t
LS0tLS0tLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLStcblx0ICogICAgICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgIHYgICAgICAgIHwgICAgICAgICAgICAgIHxcblx0ICog
ICAgICAgICAgICAgICAgICAgIHwgICAgICArLS0tLS0tLS0tLS0tLS0tKyAgIHwgICAgICAgICAg
ICAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgICArLS18ICAgIHdyYXBwZXIxICAgfC0t
LXwtLS0tKyAgICAgICAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgICB8ICArLS0tLS0t
LS0tLS0tLS0tKyAgIHYgICAgfCAgICAgICAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwg
ICB8ICAgICAgICAgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgICAgIHxcblx0ICogICAgICAgICAg
ICAgICAgICAgIHwgICB8ICAgICArLS0tLXwgICB3cmFwcGVyMiAgfC0tLS0tLS0tKyAgIHxcblx0
ICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICB8ICAgICstLS0tLS0tLS0tLS0tKyAgfCAg
ICAgfCAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgfCAgICAgfCAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgICB2ICAgICB2
ICAgICAgICAgICAgICAgICAgICAgdiAgICAgdiAgIHwgd3JhcHBlclxuXHQgKiAgICAgICAgICAg
ICAgICAgICAgfCArLS0tKyArLS0tKyAgICstLS0tLS0tLS0rICAgKy0tLSsgKy0tLSsgfCBpbnZh
cmlhbnRzXG5cdCAqIHBlcmZvcm0oYW55TWV0aG9kKSB8IHwgICB8IHwgICB8ICAgfCAgICAgICAg
IHwgICB8ICAgfCB8ICAgfCB8IG1haW50YWluZWRcblx0ICogKy0tLS0tLS0tLS0tLS0tLS0tPnwt
fC0tLXwtfC0tLXwtLT58YW55TWV0aG9kfC0tLXwtLS18LXwtLS18LXwtLS0tLS0tLT5cblx0ICog
ICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwg
ICB8IHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAg
fCAgIHwgICB8IHwgICB8IHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwg
ICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwg
Ky0tLSsgKy0tLSsgICArLS0tLS0tLS0tKyAgICstLS0rICstLS0rIHxcblx0ICogICAgICAgICAg
ICAgICAgICAgIHwgIGluaXRpYWxpemUgICAgICAgICAgICAgICAgICAgIGNsb3NlICAgIHxcblx0
ICogICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLStcblx0ICogPC9wcmU+XG5cdCAqXG5cdCAqIFVzZSBjYXNlczpcblx0ICogLSBQcmVz
ZXJ2aW5nIHRoZSBpbnB1dCBzZWxlY3Rpb24gcmFuZ2VzIGJlZm9yZS9hZnRlciByZWNvbmNpbGlh
dGlvbi5cblx0ICogICBSZXN0b3Jpbmcgc2VsZWN0aW9uIGV2ZW4gaW4gdGhlIGV2ZW50IG9mIGFu
IHVuZXhwZWN0ZWQgZXJyb3IuXG5cdCAqIC0gRGVhY3RpdmF0aW5nIGV2ZW50cyB3aGlsZSByZWFy
cmFuZ2luZyB0aGUgRE9NLCBwcmV2ZW50aW5nIGJsdXJzL2ZvY3VzZXMsXG5cdCAqICAgd2hpbGUg
Z3VhcmFudGVlaW5nIHRoYXQgYWZ0ZXJ3YXJkcywgdGhlIGV2ZW50IHN5c3RlbSBpcyByZWFjdGl2
YXRlZC5cblx0ICogLSBGbHVzaGluZyBhIHF1ZXVlIG9mIGNvbGxlY3RlZCBET00gbXV0YXRpb25z
IHRvIHRoZSBtYWluIFVJIHRocmVhZCBhZnRlciBhXG5cdCAqICAgcmVjb25jaWxpYXRpb24gdGFr
ZXMgcGxhY2UgaW4gYSB3b3JrZXIgdGhyZWFkLlxuXHQgKiAtIEludm9raW5nIGFueSBjb2xsZWN0
ZWQgYGNvbXBvbmVudERpZFVwZGF0ZWAgY2FsbGJhY2tzIGFmdGVyIHJlbmRlcmluZyBuZXdcblx0
ICogICBjb250ZW50LlxuXHQgKiAtIChGdXR1cmUgdXNlIGNhc2UpOiBXcmFwcGluZyBwYXJ0aWN1
bGFyIGZsdXNoZXMgb2YgdGhlIGBSZWFjdFdvcmtlcmAgcXVldWVcblx0ICogICB0byBwcmVzZXJ2
ZSB0aGUgYHNjcm9sbFRvcGAgKGFuIGF1dG9tYXRpYyBzY3JvbGwgYXdhcmUgRE9NKS5cblx0ICog
LSAoRnV0dXJlIHVzZSBjYXNlKTogTGF5b3V0IGNhbGN1bGF0aW9ucyBiZWZvcmUgYW5kIGFmdGVy
IERPTSB1cGRhdGVzLlxuXHQgKlxuXHQgKiBUcmFuc2FjdGlvbmFsIHBsdWdpbiBBUEk6XG5cdCAq
IC0gQSBtb2R1bGUgdGhhdCBoYXMgYW4gYGluaXRpYWxpemVgIG1ldGhvZCB0aGF0IHJldHVybnMg
YW55IHByZWNvbXB1dGF0aW9uLlxuXHQgKiAtIGFuZCBhIGBjbG9zZWAgbWV0aG9kIHRoYXQgYWNj
ZXB0cyB0aGUgcHJlY29tcHV0YXRpb24uIGBjbG9zZWAgaXMgaW52b2tlZFxuXHQgKiAgIHdoZW4g
dGhlIHdyYXBwZWQgcHJvY2VzcyBpcyBjb21wbGV0ZWQsIG9yIGhhcyBmYWlsZWQuXG5cdCAqXG5c
dCAqIEBwYXJhbSB7QXJyYXk8VHJhbnNhY3Rpb25hbFdyYXBwZXI+fSB0cmFuc2FjdGlvbldyYXBw
ZXIgV3JhcHBlciBtb2R1bGVzXG5cdCAqIHRoYXQgaW1wbGVtZW50IGBpbml0aWFsaXplYCBhbmQg
YGNsb3NlYC5cblx0ICogQHJldHVybiB7VHJhbnNhY3Rpb259IFNpbmdsZSB0cmFuc2FjdGlvbiBm
b3IgcmV1c2UgaW4gdGhyZWFkLlxuXHQgKlxuXHQgKiBAY2xhc3MgVHJhbnNhY3Rpb25cblx0ICov
XG5cdHZhciBUcmFuc2FjdGlvbkltcGwgPSB7XG5cdCAgLyoqXG5cdCAgICogU2V0cyB1cCB0aGlz
IGluc3RhbmNlIHNvIHRoYXQgaXQgaXMgcHJlcGFyZWQgZm9yIGNvbGxlY3RpbmcgbWV0cmljcy4g
RG9lc1xuXHQgICAqIHNvIHN1Y2ggdGhhdCB0aGlzIHNldHVwIG1ldGhvZCBtYXkgYmUgdXNlZCBv
biBhbiBpbnN0YW5jZSB0aGF0IGlzIGFscmVhZHlcblx0ICAgKiBpbml0aWFsaXplZCwgaW4gYSB3
YXkgdGhhdCBkb2VzIG5vdCBjb25zdW1lIGFkZGl0aW9uYWwgbWVtb3J5IHVwb24gcmV1c2UuXG5c
dCAgICogVGhhdCBjYW4gYmUgdXNlZnVsIGlmIHlvdSBkZWNpZGUgdG8gbWFrZSB5b3VyIHN1YmNs
YXNzIG9mIHRoaXMgbWl4aW4gYVxuXHQgICAqIFwiUG9vbGVkQ2xhc3NcIi5cblx0ICAgKi9cblx0
ICByZWluaXRpYWxpemVUcmFuc2FjdGlvbjogZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy50cmFu
c2FjdGlvbldyYXBwZXJzID0gdGhpcy5nZXRUcmFuc2FjdGlvbldyYXBwZXJzKCk7XG5cdCAgICBp
ZiAodGhpcy53cmFwcGVySW5pdERhdGEpIHtcblx0ICAgICAgdGhpcy53cmFwcGVySW5pdERhdGEu
bGVuZ3RoID0gMDtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRoaXMud3JhcHBlckluaXREYXRh
ID0gW107XG5cdCAgICB9XG5cdCAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSBmYWxzZTtcblx0
ICB9LFxuXHRcblx0ICBfaXNJblRyYW5zYWN0aW9uOiBmYWxzZSxcblx0XG5cdCAgLyoqXG5cdCAg
ICogQGFic3RyYWN0XG5cdCAgICogQHJldHVybiB7QXJyYXk8VHJhbnNhY3Rpb25XcmFwcGVyPn0g
QXJyYXkgb2YgdHJhbnNhY3Rpb24gd3JhcHBlcnMuXG5cdCAgICovXG5cdCAgZ2V0VHJhbnNhY3Rp
b25XcmFwcGVyczogbnVsbCxcblx0XG5cdCAgaXNJblRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoKSB7
XG5cdCAgICByZXR1cm4gISF0aGlzLl9pc0luVHJhbnNhY3Rpb247XG5cdCAgfSxcblx0XG5cdCAg
LyogZXNsaW50LWRpc2FibGUgc3BhY2UtYmVmb3JlLWZ1bmN0aW9uLXBhcmVuICovXG5cdFxuXHQg
IC8qKlxuXHQgICAqIEV4ZWN1dGVzIHRoZSBmdW5jdGlvbiB3aXRoaW4gYSBzYWZldHkgd2luZG93
LiBVc2UgdGhpcyBmb3IgdGhlIHRvcCBsZXZlbFxuXHQgICAqIG1ldGhvZHMgdGhhdCByZXN1bHQg
aW4gbGFyZ2UgYW1vdW50cyBvZiBjb21wdXRhdGlvbi9tdXRhdGlvbnMgdGhhdCB3b3VsZFxuXHQg
ICAqIG5lZWQgdG8gYmUgc2FmZXR5IGNoZWNrZWQuIFRoZSBvcHRpb25hbCBhcmd1bWVudHMgaGVs
cHMgcHJldmVudCB0aGUgbmVlZFxuXHQgICAqIHRvIGJpbmQgaW4gbWFueSBjYXNlcy5cblx0ICAg
KlxuXHQgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZCBNZW1iZXIgb2Ygc2NvcGUgdG8gY2Fs
bC5cblx0ICAgKiBAcGFyYW0ge09iamVjdH0gc2NvcGUgU2NvcGUgdG8gaW52b2tlIGZyb20uXG5c
dCAgICogQHBhcmFtIHtPYmplY3Q/PX0gYSBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2Qu
XG5cdCAgICogQHBhcmFtIHtPYmplY3Q/PX0gYiBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRo
b2QuXG5cdCAgICogQHBhcmFtIHtPYmplY3Q/PX0gYyBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBt
ZXRob2QuXG5cdCAgICogQHBhcmFtIHtPYmplY3Q/PX0gZCBBcmd1bWVudCB0byBwYXNzIHRvIHRo
ZSBtZXRob2QuXG5cdCAgICogQHBhcmFtIHtPYmplY3Q/PX0gZSBBcmd1bWVudCB0byBwYXNzIHRv
IHRoZSBtZXRob2QuXG5cdCAgICogQHBhcmFtIHtPYmplY3Q/PX0gZiBBcmd1bWVudCB0byBwYXNz
IHRvIHRoZSBtZXRob2QuXG5cdCAgICpcblx0ICAgKiBAcmV0dXJuIHsqfSBSZXR1cm4gdmFsdWUg
ZnJvbSBgbWV0aG9kYC5cblx0ICAgKi9cblx0ICBwZXJmb3JtOiBmdW5jdGlvbiAobWV0aG9kLCBz
Y29wZSwgYSwgYiwgYywgZCwgZSwgZikge1xuXHQgICAgLyogZXNsaW50LWVuYWJsZSBzcGFjZS1i
ZWZvcmUtZnVuY3Rpb24tcGFyZW4gKi9cblx0ICAgICEhdGhpcy5pc0luVHJhbnNhY3Rpb24oKSA/
ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1RyYW5zYWN0aW9uLnBlcmZvcm0oLi4uKTogQ2Fu
bm90IGluaXRpYWxpemUgYSB0cmFuc2FjdGlvbiB3aGVuIHRoZXJlIGlzIGFscmVhZHkgYW4gb3V0
c3RhbmRpbmcgdHJhbnNhY3Rpb24uJykgOiBfcHJvZEludmFyaWFudCgnMjcnKSA6IHZvaWQgMDtc
blx0ICAgIHZhciBlcnJvclRocm93bjtcblx0ICAgIHZhciByZXQ7XG5cdCAgICB0cnkge1xuXHQg
ICAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSB0cnVlO1xuXHQgICAgICAvLyBDYXRjaGluZyBl
cnJvcnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoXG5c
dCAgICAgIC8vIGVycm9yVGhyb3duIHNldCB0byB0cnVlIGJlZm9yZSBzZXR0aW5nIGl0IHRvIGZh
bHNlIGFmdGVyIGNhbGxpbmdcblx0ICAgICAgLy8gY2xvc2UgLS0gaWYgaXQncyBzdGlsbCBzZXQg
dG8gdHJ1ZSBpbiB0aGUgZmluYWxseSBibG9jaywgaXQgbWVhbnNcblx0ICAgICAgLy8gb25lIG9m
IHRoZXNlIGNhbGxzIHRocmV3LlxuXHQgICAgICBlcnJvclRocm93biA9IHRydWU7XG5cdCAgICAg
IHRoaXMuaW5pdGlhbGl6ZUFsbCgwKTtcblx0ICAgICAgcmV0ID0gbWV0aG9kLmNhbGwoc2NvcGUs
IGEsIGIsIGMsIGQsIGUsIGYpO1xuXHQgICAgICBlcnJvclRocm93biA9IGZhbHNlO1xuXHQgICAg
fSBmaW5hbGx5IHtcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICBpZiAoZXJyb3JUaHJvd24pIHtc
blx0ICAgICAgICAgIC8vIElmIGBtZXRob2RgIHRocm93cywgcHJlZmVyIHRvIHNob3cgdGhhdCBz
dGFjayB0cmFjZSBvdmVyIGFueSB0aHJvd25cblx0ICAgICAgICAgIC8vIGJ5IGludm9raW5nIGBj
bG9zZUFsbGAuXG5cdCAgICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICB0aGlzLmNsb3NlQWxs
KDApO1xuXHQgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuXHQgICAgICAgIH0gZWxzZSB7XG5c
dCAgICAgICAgICAvLyBTaW5jZSBgbWV0aG9kYCBkaWRuJ3QgdGhyb3csIHdlIGRvbid0IHdhbnQg
dG8gc2lsZW5jZSB0aGUgZXhjZXB0aW9uXG5cdCAgICAgICAgICAvLyBoZXJlLlxuXHQgICAgICAg
ICAgdGhpcy5jbG9zZUFsbCgwKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZmluYWxseSB7XG5c
dCAgICAgICAgdGhpcy5faXNJblRyYW5zYWN0aW9uID0gZmFsc2U7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0ICAgIHJldHVybiByZXQ7XG5cdCAgfSxcblx0XG5cdCAgaW5pdGlhbGl6ZUFsbDogZnVu
Y3Rpb24gKHN0YXJ0SW5kZXgpIHtcblx0ICAgIHZhciB0cmFuc2FjdGlvbldyYXBwZXJzID0gdGhp
cy50cmFuc2FjdGlvbldyYXBwZXJzO1xuXHQgICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkg
PCB0cmFuc2FjdGlvbldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHZhciB3cmFwcGVy
ID0gdHJhbnNhY3Rpb25XcmFwcGVyc1tpXTtcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICAvLyBD
YXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFy
dCB3aXRoIHRoZVxuXHQgICAgICAgIC8vIE9CU0VSVkVEX0VSUk9SIHN0YXRlIGJlZm9yZSBvdmVy
d3JpdGluZyBpdCB3aXRoIHRoZSByZWFsIHJldHVybiB2YWx1ZVxuXHQgICAgICAgIC8vIG9mIGlu
aXRpYWxpemUgLS0gaWYgaXQncyBzdGlsbCBzZXQgdG8gT0JTRVJWRURfRVJST1IgaW4gdGhlIGZp
bmFsbHlcblx0ICAgICAgICAvLyBibG9jaywgaXQgbWVhbnMgd3JhcHBlci5pbml0aWFsaXplIHRo
cmV3LlxuXHQgICAgICAgIHRoaXMud3JhcHBlckluaXREYXRhW2ldID0gT0JTRVJWRURfRVJST1I7
XG5cdCAgICAgICAgdGhpcy53cmFwcGVySW5pdERhdGFbaV0gPSB3cmFwcGVyLmluaXRpYWxpemUg
PyB3cmFwcGVyLmluaXRpYWxpemUuY2FsbCh0aGlzKSA6IG51bGw7XG5cdCAgICAgIH0gZmluYWxs
eSB7XG5cdCAgICAgICAgaWYgKHRoaXMud3JhcHBlckluaXREYXRhW2ldID09PSBPQlNFUlZFRF9F
UlJPUikge1xuXHQgICAgICAgICAgLy8gVGhlIGluaXRpYWxpemVyIGZvciB3cmFwcGVyIGkgdGhy
ZXcgYW4gZXJyb3I7IGluaXRpYWxpemUgdGhlXG5cdCAgICAgICAgICAvLyByZW1haW5pbmcgd3Jh
cHBlcnMgYnV0IHNpbGVuY2UgYW55IGV4Y2VwdGlvbnMgZnJvbSB0aGVtIHRvIGVuc3VyZVxuXHQg
ICAgICAgICAgLy8gdGhhdCB0aGUgZmlyc3QgZXJyb3IgaXMgdGhlIG9uZSB0byBidWJibGUgdXAu
XG5cdCAgICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVBbGwoaSAr
IDEpO1xuXHQgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuXHQgICAgICAgIH1cblx0ICAgICAg
fVxuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEludm9rZXMgZWFjaCBvZiBg
dGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLmNsb3NlW2ldYCBmdW5jdGlvbnMsIHBhc3NpbmcgaW50
b1xuXHQgICAqIHRoZW0gdGhlIHJlc3BlY3RpdmUgcmV0dXJuIHZhbHVlcyBvZiBgdGhpcy50cmFu
c2FjdGlvbldyYXBwZXJzLmluaXRbaV1gXG5cdCAgICogKGBjbG9zZWBycyB0aGF0IGNvcnJlc3Bv
bmQgdG8gaW5pdGlhbGl6ZXJzIHRoYXQgZmFpbGVkIHdpbGwgbm90IGJlXG5cdCAgICogaW52b2tl
ZCkuXG5cdCAgICovXG5cdCAgY2xvc2VBbGw6IGZ1bmN0aW9uIChzdGFydEluZGV4KSB7XG5cdCAg
ICAhdGhpcy5pc0luVHJhbnNhY3Rpb24oKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1Ry
YW5zYWN0aW9uLmNsb3NlQWxsKCk6IENhbm5vdCBjbG9zZSB0cmFuc2FjdGlvbiB3aGVuIG5vbmUg
YXJlIG9wZW4uJykgOiBfcHJvZEludmFyaWFudCgnMjgnKSA6IHZvaWQgMDtcblx0ICAgIHZhciB0
cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzO1xuXHQgICAgZm9y
ICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgPCB0cmFuc2FjdGlvbldyYXBwZXJzLmxlbmd0aDsgaSsr
KSB7XG5cdCAgICAgIHZhciB3cmFwcGVyID0gdHJhbnNhY3Rpb25XcmFwcGVyc1tpXTtcblx0ICAg
ICAgdmFyIGluaXREYXRhID0gdGhpcy53cmFwcGVySW5pdERhdGFbaV07XG5cdCAgICAgIHZhciBl
cnJvclRocm93bjtcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICAvLyBDYXRjaGluZyBlcnJvcnMg
bWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoXG5cdCAgICAg
ICAgLy8gZXJyb3JUaHJvd24gc2V0IHRvIHRydWUgYmVmb3JlIHNldHRpbmcgaXQgdG8gZmFsc2Ug
YWZ0ZXIgY2FsbGluZ1xuXHQgICAgICAgIC8vIGNsb3NlIC0tIGlmIGl0J3Mgc3RpbGwgc2V0IHRv
IHRydWUgaW4gdGhlIGZpbmFsbHkgYmxvY2ssIGl0IG1lYW5zXG5cdCAgICAgICAgLy8gd3JhcHBl
ci5jbG9zZSB0aHJldy5cblx0ICAgICAgICBlcnJvclRocm93biA9IHRydWU7XG5cdCAgICAgICAg
aWYgKGluaXREYXRhICE9PSBPQlNFUlZFRF9FUlJPUiAmJiB3cmFwcGVyLmNsb3NlKSB7XG5cdCAg
ICAgICAgICB3cmFwcGVyLmNsb3NlLmNhbGwodGhpcywgaW5pdERhdGEpO1xuXHQgICAgICAgIH1c
blx0ICAgICAgICBlcnJvclRocm93biA9IGZhbHNlO1xuXHQgICAgICB9IGZpbmFsbHkge1xuXHQg
ICAgICAgIGlmIChlcnJvclRocm93bikge1xuXHQgICAgICAgICAgLy8gVGhlIGNsb3NlciBmb3Ig
d3JhcHBlciBpIHRocmV3IGFuIGVycm9yOyBjbG9zZSB0aGUgcmVtYWluaW5nXG5cdCAgICAgICAg
ICAvLyB3cmFwcGVycyBidXQgc2lsZW5jZSBhbnkgZXhjZXB0aW9ucyBmcm9tIHRoZW0gdG8gZW5z
dXJlIHRoYXQgdGhlXG5cdCAgICAgICAgICAvLyBmaXJzdCBlcnJvciBpcyB0aGUgb25lIHRvIGJ1
YmJsZSB1cC5cblx0ICAgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgIHRoaXMuY2xvc2VBbGwo
aSArIDEpO1xuXHQgICAgICAgICAgfSBjYXRjaCAoZSkge31cblx0ICAgICAgICB9XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0ICAgIHRoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aCA9IDA7XG5cdCAg
fVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBUcmFuc2FjdGlvbkltcGw7XG5cbi8qKiov
IH0sXG4vKiAyOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Lyoq
XG5cdCAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIEJhc2VkIG9uIHRoZSBl
c2NhcGUtaHRtbCBsaWJyYXJ5LCB3aGljaCBpcyB1c2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSBi
ZWxvdzpcblx0ICpcblx0ICogQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVEogSG9sb3dheWNodWtc
blx0ICogQ29weXJpZ2h0IChjKSAyMDE1IEFuZHJlYXMgTHViYmVcblx0ICogQ29weXJpZ2h0IChj
KSAyMDE1IFRpYW5jaGVuZyBcIlRpbW90aHlcIiBHdVxuXHQgKlxuXHQgKiBQZXJtaXNzaW9uIGlz
IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmdc
blx0ICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv
biBmaWxlcyAodGhlXG5cdCAqICdTb2Z0d2FyZScpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3
aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcblx0ICogd2l0aG91dCBsaW1pdGF0aW9uIHRo
ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuXHQgKiBkaXN0
cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh
bmQgdG9cblx0ICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlz
aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvXG5cdCAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpc
blx0ICpcblx0ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv
biBub3RpY2Ugc2hhbGwgYmVcblx0ICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFu
dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cdCAqXG5cdCAqIFRIRSBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCAnQVMgSVMnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELFxuXHQgKiBF
WFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB
TlRJRVMgT0Zcblx0ICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULlxuXHQgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWVxuXHQgKiBDTEFJ
TSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP
TlRSQUNULFxuXHQgKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1Ig
SU4gQ09OTkVDVElPTiBXSVRIIFRIRVxuXHQgKiBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS
IERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmlj
dCc7XG5cdFxuXHQvLyBjb2RlIGNvcGllZCBhbmQgbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbFxu
XHQvKipcblx0ICogTW9kdWxlIHZhcmlhYmxlcy5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdFxu
XHR2YXIgbWF0Y2hIdG1sUmVnRXhwID0gL1tcIicmPD5dLztcblx0XG5cdC8qKlxuXHQgKiBFc2Nh
cGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIHRoZSBnaXZlbiBzdHJpbmcgb2YgaHRtbC5cblx0ICpc
blx0ICogQHBhcmFtICB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBlc2NhcGUgZm9yIGlu
c2VydGluZyBpbnRvIEhUTUxcblx0ICogQHJldHVybiB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5c
dCAqL1xuXHRcblx0ZnVuY3Rpb24gZXNjYXBlSHRtbChzdHJpbmcpIHtcblx0ICB2YXIgc3RyID0g
JycgKyBzdHJpbmc7XG5cdCAgdmFyIG1hdGNoID0gbWF0Y2hIdG1sUmVnRXhwLmV4ZWMoc3RyKTtc
blx0XG5cdCAgaWYgKCFtYXRjaCkge1xuXHQgICAgcmV0dXJuIHN0cjtcblx0ICB9XG5cdFxuXHQg
IHZhciBlc2NhcGU7XG5cdCAgdmFyIGh0bWwgPSAnJztcblx0ICB2YXIgaW5kZXggPSAwO1xuXHQg
IHZhciBsYXN0SW5kZXggPSAwO1xuXHRcblx0ICBmb3IgKGluZGV4ID0gbWF0Y2guaW5kZXg7IGlu
ZGV4IDwgc3RyLmxlbmd0aDsgaW5kZXgrKykge1xuXHQgICAgc3dpdGNoIChzdHIuY2hhckNvZGVB
dChpbmRleCkpIHtcblx0ICAgICAgY2FzZSAzNDpcblx0ICAgICAgICAvLyBcIlxuXHQgICAgICAg
IGVzY2FwZSA9ICcmcXVvdDsnO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlIDM4Olxu
XHQgICAgICAgIC8vICZcblx0ICAgICAgICBlc2NhcGUgPSAnJmFtcDsnO1xuXHQgICAgICAgIGJy
ZWFrO1xuXHQgICAgICBjYXNlIDM5OlxuXHQgICAgICAgIC8vICdcblx0ICAgICAgICBlc2NhcGUg
PSAnJiN4Mjc7JzsgLy8gbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbDsgdXNlZCB0byBiZSAnJiMz
OSdcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSA2MDpcblx0ICAgICAgICAvLyA8XG5c
dCAgICAgICAgZXNjYXBlID0gJyZsdDsnO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNl
IDYyOlxuXHQgICAgICAgIC8vID5cblx0ICAgICAgICBlc2NhcGUgPSAnJmd0Oyc7XG5cdCAgICAg
ICAgYnJlYWs7XG5cdCAgICAgIGRlZmF1bHQ6XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICB9
XG5cdFxuXHQgICAgaWYgKGxhc3RJbmRleCAhPT0gaW5kZXgpIHtcblx0ICAgICAgaHRtbCArPSBz
dHIuc3Vic3RyaW5nKGxhc3RJbmRleCwgaW5kZXgpO1xuXHQgICAgfVxuXHRcblx0ICAgIGxhc3RJ
bmRleCA9IGluZGV4ICsgMTtcblx0ICAgIGh0bWwgKz0gZXNjYXBlO1xuXHQgIH1cblx0XG5cdCAg
cmV0dXJuIGxhc3RJbmRleCAhPT0gaW5kZXggPyBodG1sICsgc3RyLnN1YnN0cmluZyhsYXN0SW5k
ZXgsIGluZGV4KSA6IGh0bWw7XG5cdH1cblx0Ly8gZW5kIGNvZGUgY29waWVkIGFuZCBtb2RpZmll
ZCBmcm9tIGVzY2FwZS1odG1sXG5cdFxuXHQvKipcblx0ICogRXNjYXBlcyB0ZXh0IHRvIHByZXZl
bnQgc2NyaXB0aW5nIGF0dGFja3MuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Kn0gdGV4dCBUZXh0IHZh
bHVlIHRvIGVzY2FwZS5cblx0ICogQHJldHVybiB7c3RyaW5nfSBBbiBlc2NhcGVkIHN0cmluZy5c
blx0ICovXG5cdGZ1bmN0aW9uIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0ZXh0KSB7XG5c
dCAgaWYgKHR5cGVvZiB0ZXh0ID09PSAnYm9vbGVhbicgfHwgdHlwZW9mIHRleHQgPT09ICdudW1i
ZXInKSB7XG5cdCAgICAvLyB0aGlzIHNob3J0Y2lyY3VpdCBoZWxwcyBwZXJmIGZvciB0eXBlcyB0
aGF0IHdlIGtub3cgd2lsbCBuZXZlciBoYXZlXG5cdCAgICAvLyBzcGVjaWFsIGNoYXJhY3RlcnMs
IGVzcGVjaWFsbHkgZ2l2ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgb2Z0ZW5cblx0ICAg
IC8vIGZvciBudW1lcmljIGRvbSBpZHMuXG5cdCAgICByZXR1cm4gJycgKyB0ZXh0O1xuXHQgIH1c
blx0ICByZXR1cm4gZXNjYXBlSHRtbCh0ZXh0KTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMg
PSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXI7XG5cbi8qKiovIH0sXG4vKiAyOSAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3Vz
ZSBzdHJpY3QnO1xuXHRcblx0dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg2KTtcblx0dmFyIERPTU5hbWVzcGFjZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1
KTtcblx0XG5cdHZhciBXSElURVNQQUNFX1RFU1QgPSAvXlsgXFxyXFxuXFx0XFxmXS87XG5cdHZh
ciBOT05WSVNJQkxFX1RFU1QgPSAvPCghLS18bGlua3xub3NjcmlwdHxtZXRhfHNjcmlwdHxzdHls
ZSlbIFxcclxcblxcdFxcZlxcLz5dLztcblx0XG5cdHZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVM
b2NhbEZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Myk7XG5cdFxuXHQvLyBTVkcgdGVt
cCBjb250YWluZXIgZm9yIElFIGxhY2tpbmcgaW5uZXJIVE1MXG5cdHZhciByZXVzYWJsZVNWR0Nv
bnRhaW5lcjtcblx0XG5cdC8qKlxuXHQgKiBTZXQgdGhlIGlubmVySFRNTCBwcm9wZXJ0eSBvZiBh
IG5vZGUsIGVuc3VyaW5nIHRoYXQgd2hpdGVzcGFjZSBpcyBwcmVzZXJ2ZWRcblx0ICogZXZlbiBp
biBJRTguXG5cdCAqXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuXHQgKiBAcGFyYW0g
e3N0cmluZ30gaHRtbFxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHZhciBzZXRJbm5lckhUTUwg
PSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uIChub2RlLCBodG1s
KSB7XG5cdCAgLy8gSUUgZG9lcyBub3QgaGF2ZSBpbm5lckhUTUwgZm9yIFNWRyBub2Rlcywgc28g
aW5zdGVhZCB3ZSBpbmplY3QgdGhlXG5cdCAgLy8gbmV3IG1hcmt1cCBpbiBhIHRlbXAgbm9kZSBh
bmQgdGhlbiBtb3ZlIHRoZSBjaGlsZCBub2RlcyBhY3Jvc3MgaW50b1xuXHQgIC8vIHRoZSB0YXJn
ZXQgbm9kZVxuXHQgIGlmIChub2RlLm5hbWVzcGFjZVVSSSA9PT0gRE9NTmFtZXNwYWNlcy5zdmcg
JiYgISgnaW5uZXJIVE1MJyBpbiBub2RlKSkge1xuXHQgICAgcmV1c2FibGVTVkdDb250YWluZXIg
PSByZXVzYWJsZVNWR0NvbnRhaW5lciB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtc
blx0ICAgIHJldXNhYmxlU1ZHQ29udGFpbmVyLmlubmVySFRNTCA9ICc8c3ZnPicgKyBodG1sICsg
Jzwvc3ZnPic7XG5cdCAgICB2YXIgc3ZnTm9kZSA9IHJldXNhYmxlU1ZHQ29udGFpbmVyLmZpcnN0
Q2hpbGQ7XG5cdCAgICB3aGlsZSAoc3ZnTm9kZS5maXJzdENoaWxkKSB7XG5cdCAgICAgIG5vZGUu
YXBwZW5kQ2hpbGQoc3ZnTm9kZS5maXJzdENoaWxkKTtcblx0ICAgIH1cblx0ICB9IGVsc2Uge1xu
XHQgICAgbm9kZS5pbm5lckhUTUwgPSBodG1sO1xuXHQgIH1cblx0fSk7XG5cdFxuXHRpZiAoRXhl
Y3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG5cdCAgLy8gSUU4OiBXaGVuIHVwZGF0aW5n
IGEganVzdCBjcmVhdGVkIG5vZGUgd2l0aCBpbm5lckhUTUwgb25seSBsZWFkaW5nXG5cdCAgLy8g
d2hpdGVzcGFjZSBpcyByZW1vdmVkLiBXaGVuIHVwZGF0aW5nIGFuIGV4aXN0aW5nIG5vZGUgd2l0
aCBpbm5lckhUTUxcblx0ICAvLyB3aGl0ZXNwYWNlIGluIHJvb3QgVGV4dE5vZGVzIGlzIGFsc28g
Y29sbGFwc2VkLlxuXHQgIC8vIEBzZWUgcXVpcmtzbW9kZS5vcmcvYnVncmVwb3J0cy9hcmNoaXZl
cy8yMDA0LzExL2lubmVyaHRtbF9hbmRfdC5odG1sXG5cdFxuXHQgIC8vIEZlYXR1cmUgZGV0ZWN0
aW9uOyBvbmx5IElFOCBpcyBrbm93biB0byBiZWhhdmUgaW1wcm9wZXJseSBsaWtlIHRoaXMuXG5c
dCAgdmFyIHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdCAg
dGVzdEVsZW1lbnQuaW5uZXJIVE1MID0gJyAnO1xuXHQgIGlmICh0ZXN0RWxlbWVudC5pbm5lckhU
TUwgPT09ICcnKSB7XG5cdCAgICBzZXRJbm5lckhUTUwgPSBmdW5jdGlvbiAobm9kZSwgaHRtbCkg
e1xuXHQgICAgICAvLyBNYWdpYyB0aGVvcnk6IElFOCBzdXBwb3NlZGx5IGRpZmZlcmVudGlhdGVz
IGJldHdlZW4gYWRkZWQgYW5kIHVwZGF0ZWRcblx0ICAgICAgLy8gbm9kZXMgd2hlbiBwcm9jZXNz
aW5nIGlubmVySFRNTCwgaW5uZXJIVE1MIG9uIHVwZGF0ZWQgbm9kZXMgc3VmZmVyc1xuXHQgICAg
ICAvLyBmcm9tIHdvcnNlIHdoaXRlc3BhY2UgYmVoYXZpb3IuIFJlLWFkZGluZyBhIG5vZGUgbGlr
ZSB0aGlzIHRyaWdnZXJzXG5cdCAgICAgIC8vIHRoZSBpbml0aWFsIGFuZCBtb3JlIGZhdm9yYWJs
ZSB3aGl0ZXNwYWNlIGJlaGF2aW9yLlxuXHQgICAgICAvLyBUT0RPOiBXaGF0IHRvIGRvIG9uIGEg
ZGV0YWNoZWQgbm9kZT9cblx0ICAgICAgaWYgKG5vZGUucGFyZW50Tm9kZSkge1xuXHQgICAgICAg
IG5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobm9kZSwgbm9kZSk7XG5cdCAgICAgIH1cblx0
XG5cdCAgICAgIC8vIFdlIGFsc28gaW1wbGVtZW50IGEgd29ya2Fyb3VuZCBmb3Igbm9uLXZpc2li
bGUgdGFncyBkaXNhcHBlYXJpbmcgaW50b1xuXHQgICAgICAvLyB0aGluIGFpciBvbiBJRTgsIHRo
aXMgb25seSBoYXBwZW5zIGlmIHRoZXJlIGlzIG5vIHZpc2libGUgdGV4dFxuXHQgICAgICAvLyBp
bi1mcm9udCBvZiB0aGUgbm9uLXZpc2libGUgdGFncy4gUGlnZ3liYWNrIG9uIHRoZSB3aGl0ZXNw
YWNlIGZpeFxuXHQgICAgICAvLyBhbmQgc2ltcGx5IGNoZWNrIGlmIGFueSBub24tdmlzaWJsZSB0
YWdzIGFwcGVhciBpbiB0aGUgc291cmNlLlxuXHQgICAgICBpZiAoV0hJVEVTUEFDRV9URVNULnRl
c3QoaHRtbCkgfHwgaHRtbFswXSA9PT0gJzwnICYmIE5PTlZJU0lCTEVfVEVTVC50ZXN0KGh0bWwp
KSB7XG5cdCAgICAgICAgLy8gUmVjb3ZlciBsZWFkaW5nIHdoaXRlc3BhY2UgYnkgdGVtcG9yYXJp
bHkgcHJlcGVuZGluZyBhbnkgY2hhcmFjdGVyLlxuXHQgICAgICAgIC8vIFxcdUZFRkYgaGFzIHRo
ZSBwb3RlbnRpYWwgYWR2YW50YWdlIG9mIGJlaW5nIHplcm8td2lkdGgvaW52aXNpYmxlLlxuXHQg
ICAgICAgIC8vIFVnbGlmeUpTIGRyb3BzIFUrRkVGRiBjaGFycyB3aGVuIHBhcnNpbmcsIHNvIHVz
ZSBTdHJpbmcuZnJvbUNoYXJDb2RlXG5cdCAgICAgICAgLy8gaW4gaG9wZXMgdGhhdCB0aGlzIGlz
IHByZXNlcnZlZCBldmVuIGlmIFwiXFx1RkVGRlwiIGlzIHRyYW5zZm9ybWVkIHRvXG5cdCAgICAg
ICAgLy8gdGhlIGFjdHVhbCBVbmljb2RlIGNoYXJhY3RlciAoYnkgQmFiZWwsIGZvciBleGFtcGxl
KS5cblx0ICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWlzaG9vL1VnbGlmeUpTMi9ibG9i
L3YyLjQuMjAvbGliL3BhcnNlLmpzI0wyMTZcblx0ICAgICAgICBub2RlLmlubmVySFRNTCA9IFN0
cmluZy5mcm9tQ2hhckNvZGUoMHhmZWZmKSArIGh0bWw7XG5cdFxuXHQgICAgICAgIC8vIGRlbGV0
ZURhdGEgbGVhdmVzIGFuIGVtcHR5IGBUZXh0Tm9kZWAgd2hpY2ggb2Zmc2V0cyB0aGUgaW5kZXgg
b2YgYWxsXG5cdCAgICAgICAgLy8gY2hpbGRyZW4uIERlZmluaXRlbHkgd2FudCB0byBhdm9pZCB0
aGlzLlxuXHQgICAgICAgIHZhciB0ZXh0Tm9kZSA9IG5vZGUuZmlyc3RDaGlsZDtcblx0ICAgICAg
ICBpZiAodGV4dE5vZGUuZGF0YS5sZW5ndGggPT09IDEpIHtcblx0ICAgICAgICAgIG5vZGUucmVt
b3ZlQ2hpbGQodGV4dE5vZGUpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICB0ZXh0
Tm9kZS5kZWxldGVEYXRhKDAsIDEpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBlbHNlIHtcblx0
ICAgICAgICBub2RlLmlubmVySFRNTCA9IGh0bWw7XG5cdCAgICAgIH1cblx0ICAgIH07XG5cdCAg
fVxuXHQgIHRlc3RFbGVtZW50ID0gbnVsbDtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBz
ZXRJbm5lckhUTUw7XG5cbi8qKiovIH0sXG4vKiAzMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0ZXhwb3J0cy5jb21wb3NlID0gZXhwb3J0
cy5hcHBseU1pZGRsZXdhcmUgPSBleHBvcnRzLmJpbmRBY3Rpb25DcmVhdG9ycyA9IGV4cG9ydHMu
Y29tYmluZVJlZHVjZXJzID0gZXhwb3J0cy5jcmVhdGVTdG9yZSA9IHVuZGVmaW5lZDtcblx0XG5c
dHZhciBfY3JlYXRlU3RvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk1KTtcblx0XG5cdHZhciBf
Y3JlYXRlU3RvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlU3RvcmUpO1xuXHRc
blx0dmFyIF9jb21iaW5lUmVkdWNlcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyNyk7XG5cdFxu
XHR2YXIgX2NvbWJpbmVSZWR1Y2VyczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21iaW5l
UmVkdWNlcnMpO1xuXHRcblx0dmFyIF9iaW5kQWN0aW9uQ3JlYXRvcnMgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDIyNik7XG5cdFxuXHR2YXIgX2JpbmRBY3Rpb25DcmVhdG9yczIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF9iaW5kQWN0aW9uQ3JlYXRvcnMpO1xuXHRcblx0dmFyIF9hcHBseU1pZGRs
ZXdhcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyNSk7XG5cdFxuXHR2YXIgX2FwcGx5TWlkZGxl
d2FyZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hcHBseU1pZGRsZXdhcmUpO1xuXHRcblx0
dmFyIF9jb21wb3NlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5NCk7XG5cdFxuXHR2YXIgX2NvbXBv
c2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29tcG9zZSk7XG5cdFxuXHR2YXIgX3dhcm5p
bmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk2KTtcblx0XG5cdHZhciBfd2FybmluZzIgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVx
dWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7
ICdkZWZhdWx0Jzogb2JqIH07IH1cblx0XG5cdC8qXG5cdCogVGhpcyBpcyBhIGR1bW15IGZ1bmN0
aW9uIHRvIGNoZWNrIGlmIHRoZSBmdW5jdGlvbiBuYW1lIGhhcyBiZWVuIGFsdGVyZWQgYnkgbWlu
aWZpY2F0aW9uLlxuXHQqIElmIHRoZSBmdW5jdGlvbiBoYXMgYmVlbiBtaW5pZmllZCBhbmQgTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJywgd2FybiB0aGUgdXNlci5cblx0Ki9cblx0ZnVuY3Rpb24g
aXNDcnVzaGVkKCkge31cblx0XG5cdGlmIChmYWxzZSkge1xuXHQgICgwLCBfd2FybmluZzJbJ2Rl
ZmF1bHQnXSkoJ1lvdSBhcmUgY3VycmVudGx5IHVzaW5nIG1pbmlmaWVkIGNvZGUgb3V0c2lkZSBv
ZiBOT0RFX0VOViA9PT0gXFwncHJvZHVjdGlvblxcJy4gJyArICdUaGlzIG1lYW5zIHRoYXQgeW91
IGFyZSBydW5uaW5nIGEgc2xvd2VyIGRldmVsb3BtZW50IGJ1aWxkIG9mIFJlZHV4LiAnICsgJ1lv
dSBjYW4gdXNlIGxvb3NlLWVudmlmeSAoaHR0cHM6Ly9naXRodWIuY29tL3plcnRvc2gvbG9vc2Ut
ZW52aWZ5KSBmb3IgYnJvd3NlcmlmeSAnICsgJ29yIERlZmluZVBsdWdpbiBmb3Igd2VicGFjayAo
aHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMDAzMDAzMSkgJyArICd0byBlbnN1
cmUgeW91IGhhdmUgdGhlIGNvcnJlY3QgY29kZSBmb3IgeW91ciBwcm9kdWN0aW9uIGJ1aWxkLicp
O1xuXHR9XG5cdFxuXHRleHBvcnRzLmNyZWF0ZVN0b3JlID0gX2NyZWF0ZVN0b3JlMlsnZGVmYXVs
dCddO1xuXHRleHBvcnRzLmNvbWJpbmVSZWR1Y2VycyA9IF9jb21iaW5lUmVkdWNlcnMyWydkZWZh
dWx0J107XG5cdGV4cG9ydHMuYmluZEFjdGlvbkNyZWF0b3JzID0gX2JpbmRBY3Rpb25DcmVhdG9y
czJbJ2RlZmF1bHQnXTtcblx0ZXhwb3J0cy5hcHBseU1pZGRsZXdhcmUgPSBfYXBwbHlNaWRkbGV3
YXJlMlsnZGVmYXVsdCddO1xuXHRleHBvcnRzLmNvbXBvc2UgPSBfY29tcG9zZTJbJ2RlZmF1bHQn
XTtcblxuLyoqKi8gfSxcbi8qIDMxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgX19XRUJQQUNLX0FNRF9ERUZJTkVfQVJS
QVlfXywgX19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX187LyohXG5cdCAgQ29weXJpZ2h0IChj
KSAyMDE2IEplZCBXYXRzb24uXG5cdCAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChN
SVQpLCBzZWVcblx0ICBodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzXG5cdCov
XG5cdC8qIGdsb2JhbCBkZWZpbmUgKi9cblx0XG5cdChmdW5jdGlvbiAoKSB7XG5cdFx0J3VzZSBz
dHJpY3QnO1xuXHRcblx0XHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cdFxuXHRc
dGZ1bmN0aW9uIGNsYXNzTmFtZXMgKCkge1xuXHRcdFx0dmFyIGNsYXNzZXMgPSBbXTtcblx0XG5c
dFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0
XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0XHRpZiAoIWFyZykgY29udGludWU7XG5c
dFxuXHRcdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cdFxuXHRcdFx0XHRpZiAoYXJn
VHlwZSA9PT0gJ3N0cmluZycgfHwgYXJnVHlwZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0XHRj
bGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykp
IHtcblx0XHRcdFx0XHRjbGFzc2VzLnB1c2goY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpKTtc
blx0XHRcdFx0fSBlbHNlIGlmIChhcmdUeXBlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdGZv
ciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRcdGlmIChoYXNPd24uY2FsbChhcmcsIGtl
eSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0
XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFxuXHRcdFx0cmV0
dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHRcdH1cblx0XG5cdFx0aWYgKHR5cGVvZiBtb2R1bGUg
IT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0XHRtb2R1bGUuZXhwb3J0
cyA9IGNsYXNzTmFtZXM7XG5cdFx0fSBlbHNlIGlmICh0cnVlKSB7XG5cdFx0XHQvLyByZWdpc3Rl
ciBhcyAnY2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lXG5cdFx0
XHQhKF9fV0VCUEFDS19BTURfREVGSU5FX0FSUkFZX18gPSBbXSwgX19XRUJQQUNLX0FNRF9ERUZJ
TkVfUkVTVUxUX18gPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHJldHVybiBjbGFzc05hbWVzO1xu
XHRcdFx0fS5hcHBseShleHBvcnRzLCBfX1dFQlBBQ0tfQU1EX0RFRklORV9BUlJBWV9fKSwgX19X
RUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX18gIT09IHVuZGVmaW5lZCAmJiAobW9kdWxlLmV4cG9y
dHMgPSBfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXykpO1xuXHRcdH0gZWxzZSB7XG5cdFx0
XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdFx0fVxuXHR9KCkpO1xuXG5cbi8q
KiovIH0sXG4vKiAzMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBAdHlwZWNo
ZWNrc1xuXHQgKiBcblx0ICovXG5cdFxuXHQvKmVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29tcGFy
ZSAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGhhc093blByb3BlcnR5ID0gT2Jq
ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0XG5cdC8qKlxuXHQgKiBpbmxpbmVkIE9i
amVjdC5pcyBwb2x5ZmlsbCB0byBhdm9pZCByZXF1aXJpbmcgY29uc3VtZXJzIHNoaXAgdGhlaXIg
b3duXG5cdCAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0ph
dmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9pc1xuXHQgKi9cblx0ZnVu
Y3Rpb24gaXMoeCwgeSkge1xuXHQgIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1cblx0ICBpZiAoeCA9
PT0geSkge1xuXHQgICAgLy8gU3RlcHMgMS01LCA3LTEwXG5cdCAgICAvLyBTdGVwcyA2LmItNi5l
OiArMCAhPSAtMFxuXHQgICAgLy8gQWRkZWQgdGhlIG5vbnplcm8geSBjaGVjayB0byBtYWtlIEZs
b3cgaGFwcHksIGJ1dCBpdCBpcyByZWR1bmRhbnRcblx0ICAgIHJldHVybiB4ICE9PSAwIHx8IHkg
IT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuXHQgIH0gZWxzZSB7XG5cdCAgICAvLyBTdGVwIDYu
YTogTmFOID09IE5hTlxuXHQgICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTtcblx0ICB9XG5c
dH1cblx0XG5cdC8qKlxuXHQgKiBQZXJmb3JtcyBlcXVhbGl0eSBieSBpdGVyYXRpbmcgdGhyb3Vn
aCBrZXlzIG9uIGFuIG9iamVjdCBhbmQgcmV0dXJuaW5nIGZhbHNlXG5cdCAqIHdoZW4gYW55IGtl
eSBoYXMgdmFsdWVzIHdoaWNoIGFyZSBub3Qgc3RyaWN0bHkgZXF1YWwgYmV0d2VlbiB0aGUgYXJn
dW1lbnRzLlxuXHQgKiBSZXR1cm5zIHRydWUgd2hlbiB0aGUgdmFsdWVzIG9mIGFsbCBrZXlzIGFy
ZSBzdHJpY3RseSBlcXVhbC5cblx0ICovXG5cdGZ1bmN0aW9uIHNoYWxsb3dFcXVhbChvYmpBLCBv
YmpCKSB7XG5cdCAgaWYgKGlzKG9iakEsIG9iakIpKSB7XG5cdCAgICByZXR1cm4gdHJ1ZTtcblx0
ICB9XG5cdFxuXHQgIGlmICh0eXBlb2Ygb2JqQSAhPT0gJ29iamVjdCcgfHwgb2JqQSA9PT0gbnVs
bCB8fCB0eXBlb2Ygb2JqQiAhPT0gJ29iamVjdCcgfHwgb2JqQiA9PT0gbnVsbCkge1xuXHQgICAg
cmV0dXJuIGZhbHNlO1xuXHQgIH1cblx0XG5cdCAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMob2Jq
QSk7XG5cdCAgdmFyIGtleXNCID0gT2JqZWN0LmtleXMob2JqQik7XG5cdFxuXHQgIGlmIChrZXlz
QS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkge1xuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH1c
blx0XG5cdCAgLy8gVGVzdCBmb3IgQSdzIGtleXMgZGlmZmVyZW50IGZyb20gQi5cblx0ICBmb3Ig
KHZhciBpID0gMDsgaSA8IGtleXNBLmxlbmd0aDsgaSsrKSB7XG5cdCAgICBpZiAoIWhhc093blBy
b3BlcnR5LmNhbGwob2JqQiwga2V5c0FbaV0pIHx8ICFpcyhvYmpBW2tleXNBW2ldXSwgb2JqQltr
ZXlzQVtpXV0pKSB7XG5cdCAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgIH1cblx0ICB9XG5cdFxu
XHQgIHJldHVybiB0cnVlO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IHNoYWxsb3dFcXVh
bDtcblxuLyoqKi8gfSxcbi8qIDMzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgYmFzZUdldFRhZyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTEyKSxcblx0ICAgIGdldFByb3RvdHlwZSA9IF9fd2VicGFja19yZXF1aXJlX18o
MTE0KSxcblx0ICAgIGlzT2JqZWN0TGlrZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTE5KTtcblx0
XG5cdC8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cblx0dmFyIG9i
amVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXHRcblx0LyoqIFVzZWQgZm9yIGJ1aWx0LWlu
IG1ldGhvZCByZWZlcmVuY2VzLiAqL1xuXHR2YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90
eXBlLFxuXHQgICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXHRcblx0LyoqIFVz
ZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xuXHR2
YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXHRcblx0LyoqIFVzZWQgdG8g
Y2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG5cdHZhciBoYXNPd25Qcm9wZXJ0
eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXHRcblx0LyoqIFVzZWQgdG8gaW5mZXIg
dGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xuXHR2YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1
bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cdFxuXHQvKipcblx0ICogQ2hlY2tzIGlmIGB2YWx1
ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxu
XHQgKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBv
ZiBgbnVsbGAuXG5cdCAqXG5cdCAqIEBzdGF0aWNcblx0ICogQG1lbWJlck9mIF9cblx0ICogQHNp
bmNlIDAuOC4wXG5cdCAqIEBjYXRlZ29yeSBMYW5nXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhl
IHZhbHVlIHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAg
aWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuXHQgKiBAZXhhbXBs
ZVxuXHQgKlxuXHQgKiBmdW5jdGlvbiBGb28oKSB7XG5cdCAqICAgdGhpcy5hID0gMTtcblx0ICog
fVxuXHQgKlxuXHQgKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG5cdCAqIC8vID0+IGZhbHNl
XG5cdCAqXG5cdCAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuXHQgKiAvLyA9PiBmYWxz
ZVxuXHQgKlxuXHQgKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcblx0ICog
Ly8gPT4gdHJ1ZVxuXHQgKlxuXHQgKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxs
KSk7XG5cdCAqIC8vID0+IHRydWVcblx0ICovXG5cdGZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFs
dWUpIHtcblx0ICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkg
IT0gb2JqZWN0VGFnKSB7XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfVxuXHQgIHZhciBwcm90
byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG5cdCAgaWYgKHByb3RvID09PSBudWxsKSB7XG5cdCAg
ICByZXR1cm4gdHJ1ZTtcblx0ICB9XG5cdCAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxs
KHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3Rvcjtcblx0ICByZXR1cm4g
dHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuXHQg
ICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcblx0fVxuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBpc1BsYWluT2JqZWN0O1xuXG5cbi8qKiovIH0sXG4vKiAzNCAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIERPTUxhenlUcmVlID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxNCk7XG5cdHZhciBEYW5nZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyOSk7XG5cdHZh
ciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHR2YXIg
UmVhY3RJbnN0cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXHRcblx0dmFy
IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDQzKTtcblx0dmFyIHNldElubmVySFRNTCA9IF9fd2VicGFja19yZXF1aXJlX18oMjkpO1xuXHR2
YXIgc2V0VGV4dENvbnRlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc3KTtcblx0XG5cdGZ1bmN0
aW9uIGdldE5vZGVBZnRlcihwYXJlbnROb2RlLCBub2RlKSB7XG5cdCAgLy8gU3BlY2lhbCBjYXNl
IGZvciB0ZXh0IGNvbXBvbmVudHMsIHdoaWNoIHJldHVybiBbb3BlbiwgY2xvc2VdIGNvbW1lbnRz
XG5cdCAgLy8gZnJvbSBnZXRIb3N0Tm9kZS5cblx0ICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkg
e1xuXHQgICAgbm9kZSA9IG5vZGVbMV07XG5cdCAgfVxuXHQgIHJldHVybiBub2RlID8gbm9kZS5u
ZXh0U2libGluZyA6IHBhcmVudE5vZGUuZmlyc3RDaGlsZDtcblx0fVxuXHRcblx0LyoqXG5cdCAq
IEluc2VydHMgYGNoaWxkTm9kZWAgYXMgYSBjaGlsZCBvZiBgcGFyZW50Tm9kZWAgYXQgdGhlIGBp
bmRleGAuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcGFyZW50Tm9kZSBQYXJlbnQg
bm9kZSBpbiB3aGljaCB0byBpbnNlcnQuXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY2hpbGRO
b2RlIENoaWxkIG5vZGUgdG8gaW5zZXJ0LlxuXHQgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5k
ZXggYXQgd2hpY2ggdG8gaW5zZXJ0IHRoZSBjaGlsZC5cblx0ICogQGludGVybmFsXG5cdCAqL1xu
XHR2YXIgaW5zZXJ0Q2hpbGRBdCA9IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24o
ZnVuY3Rpb24gKHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgcmVmZXJlbmNlTm9kZSkge1xuXHQgIC8v
IFdlIHJlbHkgZXhjbHVzaXZlbHkgb24gYGluc2VydEJlZm9yZShub2RlLCBudWxsKWAgaW5zdGVh
ZCBvZiBhbHNvIHVzaW5nXG5cdCAgLy8gYGFwcGVuZENoaWxkKG5vZGUpYC4gKFVzaW5nIGB1bmRl
ZmluZWRgIGlzIG5vdCBhbGxvd2VkIGJ5IGFsbCBicm93c2VycyBzb1xuXHQgIC8vIHdlIGFyZSBj
YXJlZnVsIHRvIHVzZSBgbnVsbGAuKVxuXHQgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNoaWxk
Tm9kZSwgcmVmZXJlbmNlTm9kZSk7XG5cdH0pO1xuXHRcblx0ZnVuY3Rpb24gaW5zZXJ0TGF6eVRy
ZWVDaGlsZEF0KHBhcmVudE5vZGUsIGNoaWxkVHJlZSwgcmVmZXJlbmNlTm9kZSkge1xuXHQgIERP
TUxhenlUcmVlLmluc2VydFRyZWVCZWZvcmUocGFyZW50Tm9kZSwgY2hpbGRUcmVlLCByZWZlcmVu
Y2VOb2RlKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gbW92ZUNoaWxkKHBhcmVudE5vZGUsIGNoaWxk
Tm9kZSwgcmVmZXJlbmNlTm9kZSkge1xuXHQgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkTm9kZSkp
IHtcblx0ICAgIG1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUsIGNoaWxkTm9kZVswXSwgY2hp
bGROb2RlWzFdLCByZWZlcmVuY2VOb2RlKTtcblx0ICB9IGVsc2Uge1xuXHQgICAgaW5zZXJ0Q2hp
bGRBdChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpO1xuXHQgIH1cblx0fVxu
XHRcblx0ZnVuY3Rpb24gcmVtb3ZlQ2hpbGQocGFyZW50Tm9kZSwgY2hpbGROb2RlKSB7XG5cdCAg
aWYgKEFycmF5LmlzQXJyYXkoY2hpbGROb2RlKSkge1xuXHQgICAgdmFyIGNsb3NpbmdDb21tZW50
ID0gY2hpbGROb2RlWzFdO1xuXHQgICAgY2hpbGROb2RlID0gY2hpbGROb2RlWzBdO1xuXHQgICAg
cmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIGNsb3NpbmdDb21tZW50
KTtcblx0ICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2xvc2luZ0NvbW1lbnQpO1xuXHQgIH1c
blx0ICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZSk7XG5cdH1cblx0XG5cdGZ1bmN0
aW9uIG1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUsIG9wZW5pbmdDb21tZW50LCBjbG9zaW5n
Q29tbWVudCwgcmVmZXJlbmNlTm9kZSkge1xuXHQgIHZhciBub2RlID0gb3BlbmluZ0NvbW1lbnQ7
XG5cdCAgd2hpbGUgKHRydWUpIHtcblx0ICAgIHZhciBuZXh0Tm9kZSA9IG5vZGUubmV4dFNpYmxp
bmc7XG5cdCAgICBpbnNlcnRDaGlsZEF0KHBhcmVudE5vZGUsIG5vZGUsIHJlZmVyZW5jZU5vZGUp
O1xuXHQgICAgaWYgKG5vZGUgPT09IGNsb3NpbmdDb21tZW50KSB7XG5cdCAgICAgIGJyZWFrO1xu
XHQgICAgfVxuXHQgICAgbm9kZSA9IG5leHROb2RlO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rp
b24gcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBzdGFydE5vZGUsIGNsb3NpbmdDb21t
ZW50KSB7XG5cdCAgd2hpbGUgKHRydWUpIHtcblx0ICAgIHZhciBub2RlID0gc3RhcnROb2RlLm5l
eHRTaWJsaW5nO1xuXHQgICAgaWYgKG5vZGUgPT09IGNsb3NpbmdDb21tZW50KSB7XG5cdCAgICAg
IC8vIFRoZSBjbG9zaW5nIGNvbW1lbnQgaXMgcmVtb3ZlZCBieSBSZWFjdE11bHRpQ2hpbGQuXG5c
dCAgICAgIGJyZWFrO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcGFyZW50Tm9kZS5yZW1vdmVD
aGlsZChub2RlKTtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHJlcGxhY2VE
ZWxpbWl0ZWRUZXh0KG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCwgc3RyaW5nVGV4dCkg
e1xuXHQgIHZhciBwYXJlbnROb2RlID0gb3BlbmluZ0NvbW1lbnQucGFyZW50Tm9kZTtcblx0ICB2
YXIgbm9kZUFmdGVyQ29tbWVudCA9IG9wZW5pbmdDb21tZW50Lm5leHRTaWJsaW5nO1xuXHQgIGlm
IChub2RlQWZ0ZXJDb21tZW50ID09PSBjbG9zaW5nQ29tbWVudCkge1xuXHQgICAgLy8gVGhlcmUg
YXJlIG5vIHRleHQgbm9kZXMgYmV0d2VlbiB0aGUgb3BlbmluZyBhbmQgY2xvc2luZyBjb21tZW50
czsgaW5zZXJ0XG5cdCAgICAvLyBhIG5ldyBvbmUgaWYgc3RyaW5nVGV4dCBpc24ndCBlbXB0eS5c
blx0ICAgIGlmIChzdHJpbmdUZXh0KSB7XG5cdCAgICAgIGluc2VydENoaWxkQXQocGFyZW50Tm9k
ZSwgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyaW5nVGV4dCksIG5vZGVBZnRlckNvbW1lbnQp
O1xuXHQgICAgfVxuXHQgIH0gZWxzZSB7XG5cdCAgICBpZiAoc3RyaW5nVGV4dCkge1xuXHQgICAg
ICAvLyBTZXQgdGhlIHRleHQgY29udGVudCBvZiB0aGUgZmlyc3Qgbm9kZSBhZnRlciB0aGUgb3Bl
bmluZyBjb21tZW50LCBhbmRcblx0ICAgICAgLy8gcmVtb3ZlIGFsbCBmb2xsb3dpbmcgbm9kZXMg
dXAgdW50aWwgdGhlIGNsb3NpbmcgY29tbWVudC5cblx0ICAgICAgc2V0VGV4dENvbnRlbnQobm9k
ZUFmdGVyQ29tbWVudCwgc3RyaW5nVGV4dCk7XG5cdCAgICAgIHJlbW92ZURlbGltaXRlZFRleHQo
cGFyZW50Tm9kZSwgbm9kZUFmdGVyQ29tbWVudCwgY2xvc2luZ0NvbW1lbnQpO1xuXHQgICAgfSBl
bHNlIHtcblx0ICAgICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBvcGVuaW5nQ29t
bWVudCwgY2xvc2luZ0NvbW1lbnQpO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgaWYgKGZhbHNl
KSB7XG5cdCAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9u
KHtcblx0ICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNl
RnJvbU5vZGUob3BlbmluZ0NvbW1lbnQpLl9kZWJ1Z0lELFxuXHQgICAgICB0eXBlOiAncmVwbGFj
ZSB0ZXh0Jyxcblx0ICAgICAgcGF5bG9hZDogc3RyaW5nVGV4dFxuXHQgICAgfSk7XG5cdCAgfVxu
XHR9XG5cdFxuXHR2YXIgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAgPSBEYW5nZXIu
ZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA7XG5cdGlmIChmYWxzZSkge1xuXHQgIGRh
bmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwID0gZnVuY3Rpb24gKG9sZENoaWxkLCBtYXJr
dXAsIHByZXZJbnN0YW5jZSkge1xuXHQgICAgRGFuZ2VyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVX
aXRoTWFya3VwKG9sZENoaWxkLCBtYXJrdXApO1xuXHQgICAgaWYgKHByZXZJbnN0YW5jZS5fZGVi
dWdJRCAhPT0gMCkge1xuXHQgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25I
b3N0T3BlcmF0aW9uKHtcblx0ICAgICAgICBpbnN0YW5jZUlEOiBwcmV2SW5zdGFuY2UuX2RlYnVn
SUQsXG5cdCAgICAgICAgdHlwZTogJ3JlcGxhY2Ugd2l0aCcsXG5cdCAgICAgICAgcGF5bG9hZDog
bWFya3VwLnRvU3RyaW5nKClcblx0ICAgICAgfSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB2
YXIgbmV4dEluc3RhbmNlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5v
ZGUobWFya3VwLm5vZGUpO1xuXHQgICAgICBpZiAobmV4dEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAw
KSB7XG5cdCAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJh
dGlvbih7XG5cdCAgICAgICAgICBpbnN0YW5jZUlEOiBuZXh0SW5zdGFuY2UuX2RlYnVnSUQsXG5c
dCAgICAgICAgICB0eXBlOiAnbW91bnQnLFxuXHQgICAgICAgICAgcGF5bG9hZDogbWFya3VwLnRv
U3RyaW5nKClcblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH07XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBPcGVyYXRpb25zIGZvciB1cGRhdGluZyB3aXRoIERPTSBjaGlsZHJl
bi5cblx0ICovXG5cdHZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSB7XG5cdCAgZGFuZ2Vyb3Vz
bHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3Vw
LFxuXHRcblx0ICByZXBsYWNlRGVsaW1pdGVkVGV4dDogcmVwbGFjZURlbGltaXRlZFRleHQsXG5c
dFxuXHQgIC8qKlxuXHQgICAqIFVwZGF0ZXMgYSBjb21wb25lbnQncyBjaGlsZHJlbiBieSBwcm9j
ZXNzaW5nIGEgc2VyaWVzIG9mIHVwZGF0ZXMuIFRoZVxuXHQgICAqIHVwZGF0ZSBjb25maWd1cmF0
aW9ucyBhcmUgZWFjaCBleHBlY3RlZCB0byBoYXZlIGEgYHBhcmVudE5vZGVgIHByb3BlcnR5Llxu
XHQgICAqXG5cdCAgICogQHBhcmFtIHthcnJheTxvYmplY3Q+fSB1cGRhdGVzIExpc3Qgb2YgdXBk
YXRlIGNvbmZpZ3VyYXRpb25zLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHByb2Nl
c3NVcGRhdGVzOiBmdW5jdGlvbiAocGFyZW50Tm9kZSwgdXBkYXRlcykge1xuXHQgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgIHZhciBwYXJlbnROb2RlRGVidWdJRCA9IFJlYWN0RE9NQ29tcG9uZW50
VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKHBhcmVudE5vZGUpLl9kZWJ1Z0lEO1xuXHQgICAgfVxu
XHRcblx0ICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdXBkYXRlcy5sZW5ndGg7IGsrKykge1xuXHQg
ICAgICB2YXIgdXBkYXRlID0gdXBkYXRlc1trXTtcblx0ICAgICAgc3dpdGNoICh1cGRhdGUudHlw
ZSkge1xuXHQgICAgICAgIGNhc2UgJ0lOU0VSVF9NQVJLVVAnOlxuXHQgICAgICAgICAgaW5zZXJ0
TGF6eVRyZWVDaGlsZEF0KHBhcmVudE5vZGUsIHVwZGF0ZS5jb250ZW50LCBnZXROb2RlQWZ0ZXIo
cGFyZW50Tm9kZSwgdXBkYXRlLmFmdGVyTm9kZSkpO1xuXHQgICAgICAgICAgaWYgKGZhbHNlKSB7
XG5cdCAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVy
YXRpb24oe1xuXHQgICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELFxu
XHQgICAgICAgICAgICAgIHR5cGU6ICdpbnNlcnQgY2hpbGQnLFxuXHQgICAgICAgICAgICAgIHBh
eWxvYWQ6IHtcblx0ICAgICAgICAgICAgICAgIHRvSW5kZXg6IHVwZGF0ZS50b0luZGV4LFxuXHQg
ICAgICAgICAgICAgICAgY29udGVudDogdXBkYXRlLmNvbnRlbnQudG9TdHJpbmcoKVxuXHQgICAg
ICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAg
ICBicmVhaztcblx0ICAgICAgICBjYXNlICdNT1ZFX0VYSVNUSU5HJzpcblx0ICAgICAgICAgIG1v
dmVDaGlsZChwYXJlbnROb2RlLCB1cGRhdGUuZnJvbU5vZGUsIGdldE5vZGVBZnRlcihwYXJlbnRO
b2RlLCB1cGRhdGUuYWZ0ZXJOb2RlKSk7XG5cdCAgICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAg
ICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7
XG5cdCAgICAgICAgICAgICAgaW5zdGFuY2VJRDogcGFyZW50Tm9kZURlYnVnSUQsXG5cdCAgICAg
ICAgICAgICAgdHlwZTogJ21vdmUgY2hpbGQnLFxuXHQgICAgICAgICAgICAgIHBheWxvYWQ6IHsg
ZnJvbUluZGV4OiB1cGRhdGUuZnJvbUluZGV4LCB0b0luZGV4OiB1cGRhdGUudG9JbmRleCB9XG5c
dCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgYnJlYWs7XG5cdCAg
ICAgICAgY2FzZSAnU0VUX01BUktVUCc6XG5cdCAgICAgICAgICBzZXRJbm5lckhUTUwocGFyZW50
Tm9kZSwgdXBkYXRlLmNvbnRlbnQpO1xuXHQgICAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAg
ICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xu
XHQgICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELFxuXHQgICAgICAg
ICAgICAgIHR5cGU6ICdyZXBsYWNlIGNoaWxkcmVuJyxcblx0ICAgICAgICAgICAgICBwYXlsb2Fk
OiB1cGRhdGUuY29udGVudC50b1N0cmluZygpXG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAg
ICAgfVxuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgY2FzZSAnVEVYVF9DT05URU5UJzpc
blx0ICAgICAgICAgIHNldFRleHRDb250ZW50KHBhcmVudE5vZGUsIHVwZGF0ZS5jb250ZW50KTtc
blx0ICAgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAgICAgICAgICBpbnN0YW5j
ZUlEOiBwYXJlbnROb2RlRGVidWdJRCxcblx0ICAgICAgICAgICAgICB0eXBlOiAncmVwbGFjZSB0
ZXh0Jyxcblx0ICAgICAgICAgICAgICBwYXlsb2FkOiB1cGRhdGUuY29udGVudC50b1N0cmluZygp
XG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgYnJlYWs7XG5c
dCAgICAgICAgY2FzZSAnUkVNT1ZFX05PREUnOlxuXHQgICAgICAgICAgcmVtb3ZlQ2hpbGQocGFy
ZW50Tm9kZSwgdXBkYXRlLmZyb21Ob2RlKTtcblx0ICAgICAgICAgIGlmIChmYWxzZSkge1xuXHQg
ICAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9u
KHtcblx0ICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCxcblx0ICAg
ICAgICAgICAgICB0eXBlOiAncmVtb3ZlIGNoaWxkJyxcblx0ICAgICAgICAgICAgICBwYXlsb2Fk
OiB7IGZyb21JbmRleDogdXBkYXRlLmZyb21JbmRleCB9XG5cdCAgICAgICAgICAgIH0pO1xuXHQg
ICAgICAgICAgfVxuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9
XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IERPTUNoaWxkcmVuT3BlcmF0aW9ucztcblxu
LyoqKi8gfSxcbi8qIDM1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxu
XHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRE9NTmFtZXNwYWNlcyA9IHtcblx0ICBodG1sOiAnaHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsXG5cdCAgbWF0aG1sOiAnaHR0cDovL3d3dy53My5v
cmcvMTk5OC9NYXRoL01hdGhNTCcsXG5cdCAgc3ZnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmcnXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IERPTU5hbWVzcGFjZXM7XG5cbi8qKiov
IH0sXG4vKiAzNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFy
aWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBJbmplY3RhYmxlIG9yZGVyaW5n
IG9mIGV2ZW50IHBsdWdpbnMuXG5cdCAqL1xuXHR2YXIgZXZlbnRQbHVnaW5PcmRlciA9IG51bGw7
XG5cdFxuXHQvKipcblx0ICogSW5qZWN0YWJsZSBtYXBwaW5nIGZyb20gbmFtZXMgdG8gZXZlbnQg
cGx1Z2luIG1vZHVsZXMuXG5cdCAqL1xuXHR2YXIgbmFtZXNUb1BsdWdpbnMgPSB7fTtcblx0XG5c
dC8qKlxuXHQgKiBSZWNvbXB1dGVzIHRoZSBwbHVnaW4gbGlzdCB1c2luZyB0aGUgaW5qZWN0ZWQg
cGx1Z2lucyBhbmQgcGx1Z2luIG9yZGVyaW5nLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9c
blx0ZnVuY3Rpb24gcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKSB7XG5cdCAgaWYgKCFldmVudFBs
dWdpbk9yZGVyKSB7XG5cdCAgICAvLyBXYWl0IHVudGlsIGFuIGBldmVudFBsdWdpbk9yZGVyYCBp
cyBpbmplY3RlZC5cblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgZm9yICh2YXIgcGx1Z2luTmFt
ZSBpbiBuYW1lc1RvUGx1Z2lucykge1xuXHQgICAgdmFyIHBsdWdpbk1vZHVsZSA9IG5hbWVzVG9Q
bHVnaW5zW3BsdWdpbk5hbWVdO1xuXHQgICAgdmFyIHBsdWdpbkluZGV4ID0gZXZlbnRQbHVnaW5P
cmRlci5pbmRleE9mKHBsdWdpbk5hbWUpO1xuXHQgICAgIShwbHVnaW5JbmRleCA+IC0xKSA/ICBm
YWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmpl
Y3QgZXZlbnQgcGx1Z2lucyB0aGF0IGRvIG5vdCBleGlzdCBpbiB0aGUgcGx1Z2luIG9yZGVyaW5n
LCBgJXNgLicsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk2JywgcGx1Z2luTmFtZSkg
OiB2b2lkIDA7XG5cdCAgICBpZiAoRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zW3BsdWdpbklu
ZGV4XSkge1xuXHQgICAgICBjb250aW51ZTtcblx0ICAgIH1cblx0ICAgICFwbHVnaW5Nb2R1bGUu
ZXh0cmFjdEV2ZW50cyA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVn
aXN0cnk6IEV2ZW50IHBsdWdpbnMgbXVzdCBpbXBsZW1lbnQgYW4gYGV4dHJhY3RFdmVudHNgIG1l
dGhvZCwgYnV0IGAlc2AgZG9lcyBub3QuJywgcGx1Z2luTmFtZSkgOiBfcHJvZEludmFyaWFudCgn
OTcnLCBwbHVnaW5OYW1lKSA6IHZvaWQgMDtcblx0ICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1
Z2luc1twbHVnaW5JbmRleF0gPSBwbHVnaW5Nb2R1bGU7XG5cdCAgICB2YXIgcHVibGlzaGVkRXZl
bnRzID0gcGx1Z2luTW9kdWxlLmV2ZW50VHlwZXM7XG5cdCAgICBmb3IgKHZhciBldmVudE5hbWUg
aW4gcHVibGlzaGVkRXZlbnRzKSB7XG5cdCAgICAgICFwdWJsaXNoRXZlbnRGb3JQbHVnaW4ocHVi
bGlzaGVkRXZlbnRzW2V2ZW50TmFtZV0sIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSA/ICBmYWxz
ZSA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IEZhaWxlZCB0byBwdWJs
aXNoIGV2ZW50IGAlc2AgZm9yIHBsdWdpbiBgJXNgLicsIGV2ZW50TmFtZSwgcGx1Z2luTmFtZSkg
OiBfcHJvZEludmFyaWFudCgnOTgnLCBldmVudE5hbWUsIHBsdWdpbk5hbWUpIDogdm9pZCAwO1xu
XHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFB1Ymxpc2hlcyBhbiBldmVudCBz
byB0aGF0IGl0IGNhbiBiZSBkaXNwYXRjaGVkIGJ5IHRoZSBzdXBwbGllZCBwbHVnaW4uXG5cdCAq
XG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBEaXNwYXRjaCBjb25maWd1cmF0
aW9uIGZvciB0aGUgZXZlbnQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBQbHVnaW5Nb2R1bGUgUGx1
Z2luIHB1Ymxpc2hpbmcgdGhlIGV2ZW50LlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlm
IHRoZSBldmVudCB3YXMgc3VjY2Vzc2Z1bGx5IHB1Ymxpc2hlZC5cblx0ICogQHByaXZhdGVcblx0
ICovXG5cdGZ1bmN0aW9uIHB1Ymxpc2hFdmVudEZvclBsdWdpbihkaXNwYXRjaENvbmZpZywgcGx1
Z2luTW9kdWxlLCBldmVudE5hbWUpIHtcblx0ICAhIUV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnRO
YW1lRGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KGV2ZW50TmFtZSkgPyAgZmFsc2UgPyBp
bnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpbkh1YjogTW9yZSB0aGFuIG9uZSBwbHVnaW4gYXR0
ZW1wdGVkIHRvIHB1Ymxpc2ggdGhlIHNhbWUgZXZlbnQgbmFtZSwgYCVzYC4nLCBldmVudE5hbWUp
IDogX3Byb2RJbnZhcmlhbnQoJzk5JywgZXZlbnROYW1lKSA6IHZvaWQgMDtcblx0ICBFdmVudFBs
dWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tldmVudE5hbWVdID0gZGlzcGF0
Y2hDb25maWc7XG5cdFxuXHQgIHZhciBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyA9IGRpc3BhdGNo
Q29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzO1xuXHQgIGlmIChwaGFzZWRSZWdpc3RyYXRp
b25OYW1lcykge1xuXHQgICAgZm9yICh2YXIgcGhhc2VOYW1lIGluIHBoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzKSB7XG5cdCAgICAgIGlmIChwaGFzZWRSZWdpc3RyYXRpb25OYW1lcy5oYXNPd25Qcm9w
ZXJ0eShwaGFzZU5hbWUpKSB7XG5cdCAgICAgICAgdmFyIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUg
PSBwaGFzZWRSZWdpc3RyYXRpb25OYW1lc1twaGFzZU5hbWVdO1xuXHQgICAgICAgIHB1Ymxpc2hS
ZWdpc3RyYXRpb25OYW1lKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1vZHVsZSwgZXZl
bnROYW1lKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJuIHRydWU7XG5cdCAgfSBl
bHNlIGlmIChkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG5cdCAgICBwdWJsaXNo
UmVnaXN0cmF0aW9uTmFtZShkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lLCBwbHVnaW5N
b2R1bGUsIGV2ZW50TmFtZSk7XG5cdCAgICByZXR1cm4gdHJ1ZTtcblx0ICB9XG5cdCAgcmV0dXJu
IGZhbHNlO1xuXHR9XG5cdFxuXHQvKipcblx0ICogUHVibGlzaGVzIGEgcmVnaXN0cmF0aW9uIG5h
bWUgdGhhdCBpcyB1c2VkIHRvIGlkZW50aWZ5IGRpc3BhdGNoZWQgZXZlbnRzIGFuZFxuXHQgKiBj
YW4gYmUgdXNlZCB3aXRoIGBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcmAgdG8gcmVnaXN0ZXIg
bGlzdGVuZXJzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBS
ZWdpc3RyYXRpb24gbmFtZSB0byBhZGQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBQbHVnaW5Nb2R1
bGUgUGx1Z2luIHB1Ymxpc2hpbmcgdGhlIGV2ZW50LlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0
ZnVuY3Rpb24gcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUocmVnaXN0cmF0aW9uTmFtZSwgcGx1Z2lu
TW9kdWxlLCBldmVudE5hbWUpIHtcblx0ICAhIUV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0
aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV0gPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFs
c2UsICdFdmVudFBsdWdpbkh1YjogTW9yZSB0aGFuIG9uZSBwbHVnaW4gYXR0ZW1wdGVkIHRvIHB1
Ymxpc2ggdGhlIHNhbWUgcmVnaXN0cmF0aW9uIG5hbWUsIGAlc2AuJywgcmVnaXN0cmF0aW9uTmFt
ZSkgOiBfcHJvZEludmFyaWFudCgnMTAwJywgcmVnaXN0cmF0aW9uTmFtZSkgOiB2b2lkIDA7XG5c
dCAgRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRp
b25OYW1lXSA9IHBsdWdpbk1vZHVsZTtcblx0ICBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJh
dGlvbk5hbWVEZXBlbmRlbmNpZXNbcmVnaXN0cmF0aW9uTmFtZV0gPSBwbHVnaW5Nb2R1bGUuZXZl
bnRUeXBlc1tldmVudE5hbWVdLmRlcGVuZGVuY2llcztcblx0XG5cdCAgaWYgKGZhbHNlKSB7XG5c
dCAgICB2YXIgbG93ZXJDYXNlZE5hbWUgPSByZWdpc3RyYXRpb25OYW1lLnRvTG93ZXJDYXNlKCk7
XG5cdCAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXNbbG93
ZXJDYXNlZE5hbWVdID0gcmVnaXN0cmF0aW9uTmFtZTtcblx0XG5cdCAgICBpZiAocmVnaXN0cmF0
aW9uTmFtZSA9PT0gJ29uRG91YmxlQ2xpY2snKSB7XG5cdCAgICAgIEV2ZW50UGx1Z2luUmVnaXN0
cnkucG9zc2libGVSZWdpc3RyYXRpb25OYW1lcy5vbmRibGNsaWNrID0gcmVnaXN0cmF0aW9uTmFt
ZTtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgcGx1Z2lu
cyBzbyB0aGF0IHRoZXkgY2FuIGV4dHJhY3QgYW5kIGRpc3BhdGNoIGV2ZW50cy5cblx0ICpcblx0
ICogQHNlZSB7RXZlbnRQbHVnaW5IdWJ9XG5cdCAqL1xuXHR2YXIgRXZlbnRQbHVnaW5SZWdpc3Ry
eSA9IHtcblx0ICAvKipcblx0ICAgKiBPcmRlcmVkIGxpc3Qgb2YgaW5qZWN0ZWQgcGx1Z2lucy5c
blx0ICAgKi9cblx0ICBwbHVnaW5zOiBbXSxcblx0XG5cdCAgLyoqXG5cdCAgICogTWFwcGluZyBm
cm9tIGV2ZW50IG5hbWUgdG8gZGlzcGF0Y2ggY29uZmlnXG5cdCAgICovXG5cdCAgZXZlbnROYW1l
RGlzcGF0Y2hDb25maWdzOiB7fSxcblx0XG5cdCAgLyoqXG5cdCAgICogTWFwcGluZyBmcm9tIHJl
Z2lzdHJhdGlvbiBuYW1lIHRvIHBsdWdpbiBtb2R1bGVcblx0ICAgKi9cblx0ICByZWdpc3RyYXRp
b25OYW1lTW9kdWxlczoge30sXG5cdFxuXHQgIC8qKlxuXHQgICAqIE1hcHBpbmcgZnJvbSByZWdp
c3RyYXRpb24gbmFtZSB0byBldmVudCBuYW1lXG5cdCAgICovXG5cdCAgcmVnaXN0cmF0aW9uTmFt
ZURlcGVuZGVuY2llczoge30sXG5cdFxuXHQgIC8qKlxuXHQgICAqIE1hcHBpbmcgZnJvbSBsb3dl
cmNhc2UgcmVnaXN0cmF0aW9uIG5hbWVzIHRvIHRoZSBwcm9wZXJseSBjYXNlZCB2ZXJzaW9uLFxu
XHQgICAqIHVzZWQgdG8gd2FybiBpbiB0aGUgY2FzZSBvZiBtaXNzaW5nIGV2ZW50IGhhbmRsZXJz
LiBBdmFpbGFibGVcblx0ICAgKiBvbmx5IGluIF9fREVWX18uXG5cdCAgICogQHR5cGUge09iamVj
dH1cblx0ICAgKi9cblx0ICBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzOiAgZmFsc2UgPyB7fSA6
IG51bGwsXG5cdCAgLy8gVHJ1c3QgdGhlIGRldmVsb3BlciB0byBvbmx5IHVzZSBwb3NzaWJsZVJl
Z2lzdHJhdGlvbk5hbWVzIGluIF9fREVWX19cblx0XG5cdCAgLyoqXG5cdCAgICogSW5qZWN0cyBh
biBvcmRlcmluZyBvZiBwbHVnaW5zIChieSBwbHVnaW4gbmFtZSkuIFRoaXMgYWxsb3dzIHRoZSBv
cmRlcmluZ1xuXHQgICAqIHRvIGJlIGRlY291cGxlZCBmcm9tIGluamVjdGlvbiBvZiB0aGUgYWN0
dWFsIHBsdWdpbnMgc28gdGhhdCBvcmRlcmluZyBpc1xuXHQgICAqIGFsd2F5cyBkZXRlcm1pbmlz
dGljIHJlZ2FyZGxlc3Mgb2YgcGFja2FnaW5nLCBvbi10aGUtZmx5IGluamVjdGlvbiwgZXRjLlxu
XHQgICAqXG5cdCAgICogQHBhcmFtIHthcnJheX0gSW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyXG5c
dCAgICogQGludGVybmFsXG5cdCAgICogQHNlZSB7RXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmlu
amVjdEV2ZW50UGx1Z2luT3JkZXJ9XG5cdCAgICovXG5cdCAgaW5qZWN0RXZlbnRQbHVnaW5PcmRl
cjogZnVuY3Rpb24gKGluamVjdGVkRXZlbnRQbHVnaW5PcmRlcikge1xuXHQgICAgISFldmVudFBs
dWdpbk9yZGVyID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3Ry
eTogQ2Fubm90IGluamVjdCBldmVudCBwbHVnaW4gb3JkZXJpbmcgbW9yZSB0aGFuIG9uY2UuIFlv
dSBhcmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIG1vcmUgdGhhbiBvbmUgY29weSBvZiBSZWFjdC4n
KSA6IF9wcm9kSW52YXJpYW50KCcxMDEnKSA6IHZvaWQgMDtcblx0ICAgIC8vIENsb25lIHRoZSBv
cmRlcmluZyBzbyBpdCBjYW5ub3QgYmUgZHluYW1pY2FsbHkgbXV0YXRlZC5cblx0ICAgIGV2ZW50
UGx1Z2luT3JkZXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChpbmplY3RlZEV2ZW50UGx1
Z2luT3JkZXIpO1xuXHQgICAgcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKTtcblx0ICB9LFxuXHRc
blx0ICAvKipcblx0ICAgKiBJbmplY3RzIHBsdWdpbnMgdG8gYmUgdXNlZCBieSBgRXZlbnRQbHVn
aW5IdWJgLiBUaGUgcGx1Z2luIG5hbWVzIG11c3QgYmVcblx0ICAgKiBpbiB0aGUgb3JkZXJpbmcg
aW5qZWN0ZWQgYnkgYGluamVjdEV2ZW50UGx1Z2luT3JkZXJgLlxuXHQgICAqXG5cdCAgICogUGx1
Z2lucyBjYW4gYmUgaW5qZWN0ZWQgYXMgcGFydCBvZiBwYWdlIGluaXRpYWxpemF0aW9uIG9yIG9u
LXRoZS1mbHkuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gaW5qZWN0ZWROYW1lc1Rv
UGx1Z2lucyBNYXAgZnJvbSBuYW1lcyB0byBwbHVnaW4gbW9kdWxlcy5cblx0ICAgKiBAaW50ZXJu
YWxcblx0ICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24uaW5qZWN0RXZlbnRQbHVn
aW5zQnlOYW1lfVxuXHQgICAqL1xuXHQgIGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTogZnVuY3Rp
b24gKGluamVjdGVkTmFtZXNUb1BsdWdpbnMpIHtcblx0ICAgIHZhciBpc09yZGVyaW5nRGlydHkg
PSBmYWxzZTtcblx0ICAgIGZvciAodmFyIHBsdWdpbk5hbWUgaW4gaW5qZWN0ZWROYW1lc1RvUGx1
Z2lucykge1xuXHQgICAgICBpZiAoIWluamVjdGVkTmFtZXNUb1BsdWdpbnMuaGFzT3duUHJvcGVy
dHkocGx1Z2luTmFtZSkpIHtcblx0ICAgICAgICBjb250aW51ZTtcblx0ICAgICAgfVxuXHQgICAg
ICB2YXIgcGx1Z2luTW9kdWxlID0gaW5qZWN0ZWROYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXTtc
blx0ICAgICAgaWYgKCFuYW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSB8
fCBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSAhPT0gcGx1Z2luTW9kdWxlKSB7XG5cdCAgICAg
ICAgISFuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxz
ZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3QgdHdvIGRpZmZlcmVudCBldmVu
dCBwbHVnaW5zIHVzaW5nIHRoZSBzYW1lIG5hbWUsIGAlc2AuJywgcGx1Z2luTmFtZSkgOiBfcHJv
ZEludmFyaWFudCgnMTAyJywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7XG5cdCAgICAgICAgbmFtZXNU
b1BsdWdpbnNbcGx1Z2luTmFtZV0gPSBwbHVnaW5Nb2R1bGU7XG5cdCAgICAgICAgaXNPcmRlcmlu
Z0RpcnR5ID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgaWYgKGlzT3JkZXJpbmdE
aXJ0eSkge1xuXHQgICAgICByZWNvbXB1dGVQbHVnaW5PcmRlcmluZygpO1xuXHQgICAgfVxuXHQg
IH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIExvb2tzIHVwIHRoZSBwbHVnaW4gZm9yIHRoZSBzdXBw
bGllZCBldmVudC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBBIHN5bnRo
ZXRpYyBldmVudC5cblx0ICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBUaGUgcGx1Z2luIHRoYXQgY3Jl
YXRlZCB0aGUgc3VwcGxpZWQgZXZlbnQuXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAg
Z2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQ6IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgdmFyIGRp
c3BhdGNoQ29uZmlnID0gZXZlbnQuZGlzcGF0Y2hDb25maWc7XG5cdCAgICBpZiAoZGlzcGF0Y2hD
b25maWcucmVnaXN0cmF0aW9uTmFtZSkge1xuXHQgICAgICByZXR1cm4gRXZlbnRQbHVnaW5SZWdp
c3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25O
YW1lXSB8fCBudWxsO1xuXHQgICAgfVxuXHQgICAgaWYgKGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzICE9PSB1bmRlZmluZWQpIHtcblx0ICAgICAgLy8gcHVsbGluZyBwaGFz
ZWRSZWdpc3RyYXRpb25OYW1lcyBvdXQgb2YgZGlzcGF0Y2hDb25maWcgaGVscHMgRmxvdyBzZWVc
blx0ICAgICAgLy8gdGhhdCBpdCBpcyBub3QgdW5kZWZpbmVkLlxuXHQgICAgICB2YXIgcGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXMgPSBkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1l
cztcblx0XG5cdCAgICAgIGZvciAodmFyIHBoYXNlIGluIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
KSB7XG5cdCAgICAgICAgaWYgKCFwaGFzZWRSZWdpc3RyYXRpb25OYW1lcy5oYXNPd25Qcm9wZXJ0
eShwaGFzZSkpIHtcblx0ICAgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICAgIH1cblx0ICAgICAg
ICB2YXIgcGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1l
TW9kdWxlc1twaGFzZWRSZWdpc3RyYXRpb25OYW1lc1twaGFzZV1dO1xuXHQgICAgICAgIGlmIChw
bHVnaW5Nb2R1bGUpIHtcblx0ICAgICAgICAgIHJldHVybiBwbHVnaW5Nb2R1bGU7XG5cdCAgICAg
ICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9LFxuXHRc
blx0ICAvKipcblx0ICAgKiBFeHBvc2VkIGZvciB1bml0IHRlc3RpbmcuXG5cdCAgICogQHByaXZh
dGVcblx0ICAgKi9cblx0ICBfcmVzZXRFdmVudFBsdWdpbnM6IGZ1bmN0aW9uICgpIHtcblx0ICAg
IGV2ZW50UGx1Z2luT3JkZXIgPSBudWxsO1xuXHQgICAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBu
YW1lc1RvUGx1Z2lucykge1xuXHQgICAgICBpZiAobmFtZXNUb1BsdWdpbnMuaGFzT3duUHJvcGVy
dHkocGx1Z2luTmFtZSkpIHtcblx0ICAgICAgICBkZWxldGUgbmFtZXNUb1BsdWdpbnNbcGx1Z2lu
TmFtZV07XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1
Z2lucy5sZW5ndGggPSAwO1xuXHRcblx0ICAgIHZhciBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3Mg
PSBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncztcblx0ICAgIGZv
ciAodmFyIGV2ZW50TmFtZSBpbiBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MpIHtcblx0ICAgICAg
aWYgKGV2ZW50TmFtZURpc3BhdGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0eShldmVudE5hbWUpKSB7
XG5cdCAgICAgICAgZGVsZXRlIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tldmVudE5hbWVdO1xu
XHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVz
ID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcztcblx0ICAgIGZv
ciAodmFyIHJlZ2lzdHJhdGlvbk5hbWUgaW4gcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMpIHtcblx0
ICAgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHJlZ2lzdHJh
dGlvbk5hbWUpKSB7XG5cdCAgICAgICAgZGVsZXRlIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3Jl
Z2lzdHJhdGlvbk5hbWVdO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZhbHNl
KSB7XG5cdCAgICAgIHZhciBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzID0gRXZlbnRQbHVnaW5S
ZWdpc3RyeS5wb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzO1xuXHQgICAgICBmb3IgKHZhciBsb3dl
ckNhc2VkTmFtZSBpbiBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzKSB7XG5cdCAgICAgICAgaWYg
KHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUp
KSB7XG5cdCAgICAgICAgICBkZWxldGUgcG9zc2libGVSZWdpc3RyYXRpb25OYW1lc1tsb3dlckNh
c2VkTmFtZV07XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5O1xuXG4vKioqLyB9LFxu
LyogMzcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgUmVhY3RFcnJvclV0aWxzID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg0MSk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0Lyoq
XG5cdCAqIEluamVjdGVkIGRlcGVuZGVuY2llczpcblx0ICovXG5cdFxuXHQvKipcblx0ICogLSBg
Q29tcG9uZW50VHJlZWA6IFtyZXF1aXJlZF0gTW9kdWxlIHRoYXQgY2FuIGNvbnZlcnQgYmV0d2Vl
biBSZWFjdCBpbnN0YW5jZXNcblx0ICogICBhbmQgYWN0dWFsIG5vZGUgcmVmZXJlbmNlcy5cblx0
ICovXG5cdHZhciBDb21wb25lbnRUcmVlO1xuXHR2YXIgVHJlZVRyYXZlcnNhbDtcblx0dmFyIGlu
amVjdGlvbiA9IHtcblx0ICBpbmplY3RDb21wb25lbnRUcmVlOiBmdW5jdGlvbiAoSW5qZWN0ZWQp
IHtcblx0ICAgIENvbXBvbmVudFRyZWUgPSBJbmplY3RlZDtcblx0ICAgIGlmIChmYWxzZSkge1xu
XHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhJ
bmplY3RlZCAmJiBJbmplY3RlZC5nZXROb2RlRnJvbUluc3RhbmNlICYmIEluamVjdGVkLmdldElu
c3RhbmNlRnJvbU5vZGUsICdFdmVudFBsdWdpblV0aWxzLmluamVjdGlvbi5pbmplY3RDb21wb25l
bnRUcmVlKC4uLik6IEluamVjdGVkICcgKyAnbW9kdWxlIGlzIG1pc3NpbmcgZ2V0Tm9kZUZyb21J
bnN0YW5jZSBvciBnZXRJbnN0YW5jZUZyb21Ob2RlLicpIDogdm9pZCAwO1xuXHQgICAgfVxuXHQg
IH0sXG5cdCAgaW5qZWN0VHJlZVRyYXZlcnNhbDogZnVuY3Rpb24gKEluamVjdGVkKSB7XG5cdCAg
ICBUcmVlVHJhdmVyc2FsID0gSW5qZWN0ZWQ7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoSW5qZWN0ZWQg
JiYgSW5qZWN0ZWQuaXNBbmNlc3RvciAmJiBJbmplY3RlZC5nZXRMb3dlc3RDb21tb25BbmNlc3Rv
ciwgJ0V2ZW50UGx1Z2luVXRpbHMuaW5qZWN0aW9uLmluamVjdFRyZWVUcmF2ZXJzYWwoLi4uKTog
SW5qZWN0ZWQgJyArICdtb2R1bGUgaXMgbWlzc2luZyBpc0FuY2VzdG9yIG9yIGdldExvd2VzdENv
bW1vbkFuY2VzdG9yLicpIDogdm9pZCAwO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdGZ1
bmN0aW9uIGlzRW5kaXNoKHRvcExldmVsVHlwZSkge1xuXHQgIHJldHVybiB0b3BMZXZlbFR5cGUg
PT09ICd0b3BNb3VzZVVwJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BUb3VjaEVuZCcgfHwgdG9w
TGV2ZWxUeXBlID09PSAndG9wVG91Y2hDYW5jZWwnO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBpc01v
dmVpc2godG9wTGV2ZWxUeXBlKSB7XG5cdCAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gJ3RvcE1v
dXNlTW92ZScgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hNb3ZlJztcblx0fVxuXHRmdW5j
dGlvbiBpc1N0YXJ0aXNoKHRvcExldmVsVHlwZSkge1xuXHQgIHJldHVybiB0b3BMZXZlbFR5cGUg
PT09ICd0b3BNb3VzZURvd24nIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcFRvdWNoU3RhcnQnO1xu
XHR9XG5cdFxuXHR2YXIgdmFsaWRhdGVFdmVudERpc3BhdGNoZXM7XG5cdGlmIChmYWxzZSkge1xu
XHQgIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzID0gZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICB2
YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG5cdCAgICB2
YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXM7XG5cdFxuXHQg
ICAgdmFyIGxpc3RlbmVyc0lzQXJyID0gQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVycyk7
XG5cdCAgICB2YXIgbGlzdGVuZXJzTGVuID0gbGlzdGVuZXJzSXNBcnIgPyBkaXNwYXRjaExpc3Rl
bmVycy5sZW5ndGggOiBkaXNwYXRjaExpc3RlbmVycyA/IDEgOiAwO1xuXHRcblx0ICAgIHZhciBp
bnN0YW5jZXNJc0FyciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hJbnN0YW5jZXMpO1xuXHQgICAg
dmFyIGluc3RhbmNlc0xlbiA9IGluc3RhbmNlc0lzQXJyID8gZGlzcGF0Y2hJbnN0YW5jZXMubGVu
Z3RoIDogZGlzcGF0Y2hJbnN0YW5jZXMgPyAxIDogMDtcblx0XG5cdCAgICBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnN0YW5jZXNJc0FyciA9PT0gbGlz
dGVuZXJzSXNBcnIgJiYgaW5zdGFuY2VzTGVuID09PSBsaXN0ZW5lcnNMZW4sICdFdmVudFBsdWdp
blV0aWxzOiBJbnZhbGlkIGBldmVudGAuJykgOiB2b2lkIDA7XG5cdCAgfTtcblx0fVxuXHRcblx0
LyoqXG5cdCAqIERpc3BhdGNoIHRoZSBldmVudCB0byB0aGUgbGlzdGVuZXIuXG5cdCAqIEBwYXJh
bSB7U3ludGhldGljRXZlbnR9IGV2ZW50IFN5bnRoZXRpY0V2ZW50IHRvIGhhbmRsZVxuXHQgKiBA
cGFyYW0ge2Jvb2xlYW59IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQgaXMgc2ltdWxhdGVkIChjaGFu
Z2VzIGV4biBiZWhhdmlvcilcblx0ICogQHBhcmFtIHtmdW5jdGlvbn0gbGlzdGVuZXIgQXBwbGlj
YXRpb24tbGV2ZWwgY2FsbGJhY2tcblx0ICogQHBhcmFtIHsqfSBpbnN0IEludGVybmFsIGNvbXBv
bmVudCBpbnN0YW5jZVxuXHQgKi9cblx0ZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBz
aW11bGF0ZWQsIGxpc3RlbmVyLCBpbnN0KSB7XG5cdCAgdmFyIHR5cGUgPSBldmVudC50eXBlIHx8
ICd1bmtub3duLWV2ZW50Jztcblx0ICBldmVudC5jdXJyZW50VGFyZ2V0ID0gRXZlbnRQbHVnaW5V
dGlscy5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuXHQgIGlmIChzaW11bGF0ZWQpIHtcblx0
ICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2godHlwZSwg
bGlzdGVuZXIsIGV2ZW50KTtcblx0ICB9IGVsc2Uge1xuXHQgICAgUmVhY3RFcnJvclV0aWxzLmlu
dm9rZUd1YXJkZWRDYWxsYmFjayh0eXBlLCBsaXN0ZW5lciwgZXZlbnQpO1xuXHQgIH1cblx0ICBl
dmVudC5jdXJyZW50VGFyZ2V0ID0gbnVsbDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFN0YW5kYXJk
L3NpbXBsZSBpdGVyYXRpb24gdGhyb3VnaCBhbiBldmVudCdzIGNvbGxlY3RlZCBkaXNwYXRjaGVz
LlxuXHQgKi9cblx0ZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyKGV2ZW50LCBzaW11
bGF0ZWQpIHtcblx0ICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0
ZW5lcnM7XG5cdCAgdmFyIGRpc3BhdGNoSW5zdGFuY2VzID0gZXZlbnQuX2Rpc3BhdGNoSW5zdGFu
Y2VzO1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZl
bnQpO1xuXHQgIH1cblx0ICBpZiAoQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVycykpIHtc
blx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3RoOyBpKysp
IHtcblx0ICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcblx0ICAgICAg
ICBicmVhaztcblx0ICAgICAgfVxuXHQgICAgICAvLyBMaXN0ZW5lcnMgYW5kIEluc3RhbmNlcyBh
cmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMgaW4gc3luYy5cblx0ICAgICAg
ZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGRpc3BhdGNoTGlzdGVuZXJzW2ldLCBk
aXNwYXRjaEluc3RhbmNlc1tpXSk7XG5cdCAgICB9XG5cdCAgfSBlbHNlIGlmIChkaXNwYXRjaExp
c3RlbmVycykge1xuXHQgICAgZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGRpc3Bh
dGNoTGlzdGVuZXJzLCBkaXNwYXRjaEluc3RhbmNlcyk7XG5cdCAgfVxuXHQgIGV2ZW50Ll9kaXNw
YXRjaExpc3RlbmVycyA9IG51bGw7XG5cdCAgZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzID0gbnVs
bDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFN0YW5kYXJkL3NpbXBsZSBpdGVyYXRpb24gdGhyb3Vn
aCBhbiBldmVudCdzIGNvbGxlY3RlZCBkaXNwYXRjaGVzLCBidXQgc3RvcHNcblx0ICogYXQgdGhl
IGZpcnN0IGRpc3BhdGNoIGV4ZWN1dGlvbiByZXR1cm5pbmcgdHJ1ZSwgYW5kIHJldHVybnMgdGhh
dCBpZC5cblx0ICpcblx0ICogQHJldHVybiB7P3N0cmluZ30gaWQgb2YgdGhlIGZpcnN0IGRpc3Bh
dGNoIGV4ZWN1dGlvbiB3aG8ncyBsaXN0ZW5lciByZXR1cm5zXG5cdCAqIHRydWUsIG9yIG51bGwg
aWYgbm8gbGlzdGVuZXIgcmV0dXJuZWQgdHJ1ZS5cblx0ICovXG5cdGZ1bmN0aW9uIGV4ZWN1dGVE
aXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsKGV2ZW50KSB7XG5cdCAgdmFyIGRpc3BhdGNo
TGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuXHQgIHZhciBkaXNwYXRjaElu
c3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcztcblx0ICBpZiAoZmFsc2UpIHtcblx0
ICAgIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzKGV2ZW50KTtcblx0ICB9XG5cdCAgaWYgKEFycmF5
LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGRpc3BhdGNoTGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIGlmIChldmVudC5pc1By
b3BhZ2F0aW9uU3RvcHBlZCgpKSB7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIH1cblx0ICAg
ICAgLy8gTGlzdGVuZXJzIGFuZCBJbnN0YW5jZXMgYXJlIHR3byBwYXJhbGxlbCBhcnJheXMgdGhh
dCBhcmUgYWx3YXlzIGluIHN5bmMuXG5cdCAgICAgIGlmIChkaXNwYXRjaExpc3RlbmVyc1tpXShl
dmVudCwgZGlzcGF0Y2hJbnN0YW5jZXNbaV0pKSB7XG5cdCAgICAgICAgcmV0dXJuIGRpc3BhdGNo
SW5zdGFuY2VzW2ldO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSBlbHNlIGlmIChkaXNwYXRj
aExpc3RlbmVycykge1xuXHQgICAgaWYgKGRpc3BhdGNoTGlzdGVuZXJzKGV2ZW50LCBkaXNwYXRj
aEluc3RhbmNlcykpIHtcblx0ICAgICAgcmV0dXJuIGRpc3BhdGNoSW5zdGFuY2VzO1xuXHQgICAg
fVxuXHQgIH1cblx0ICByZXR1cm4gbnVsbDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBzZWUgZXhl
Y3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGxcblx0ICovXG5cdGZ1bmN0aW9uIGV4
ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUoZXZlbnQpIHtcblx0ICB2YXIgcmV0ID0g
ZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGwoZXZlbnQpO1xuXHQgIGV2ZW50
Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7XG5cdCAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJz
ID0gbnVsbDtcblx0ICByZXR1cm4gcmV0O1xuXHR9XG5cdFxuXHQvKipcblx0ICogRXhlY3V0aW9u
IG9mIGEgXCJkaXJlY3RcIiBkaXNwYXRjaCAtIHRoZXJlIG11c3QgYmUgYXQgbW9zdCBvbmUgZGlz
cGF0Y2hcblx0ICogYWNjdW11bGF0ZWQgb24gdGhlIGV2ZW50IG9yIGl0IGlzIGNvbnNpZGVyZWQg
YW4gZXJyb3IuIEl0IGRvZXNuJ3QgcmVhbGx5IG1ha2Vcblx0ICogc2Vuc2UgZm9yIGFuIGV2ZW50
IHdpdGggbXVsdGlwbGUgZGlzcGF0Y2hlcyAoYnViYmxlZCkgdG8ga2VlcCB0cmFjayBvZiB0aGVc
blx0ICogcmV0dXJuIHZhbHVlcyBhdCBlYWNoIGRpc3BhdGNoIGV4ZWN1dGlvbiwgYnV0IGl0IGRv
ZXMgdGVuZCB0byBtYWtlIHNlbnNlIHdoZW5cblx0ICogZGVhbGluZyB3aXRoIFwiZGlyZWN0XCIg
ZGlzcGF0Y2hlcy5cblx0ICpcblx0ICogQHJldHVybiB7Kn0gVGhlIHJldHVybiB2YWx1ZSBvZiBl
eGVjdXRpbmcgdGhlIHNpbmdsZSBkaXNwYXRjaC5cblx0ICovXG5cdGZ1bmN0aW9uIGV4ZWN1dGVE
aXJlY3REaXNwYXRjaChldmVudCkge1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgdmFsaWRhdGVF
dmVudERpc3BhdGNoZXMoZXZlbnQpO1xuXHQgIH1cblx0ICB2YXIgZGlzcGF0Y2hMaXN0ZW5lciA9
IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycztcblx0ICB2YXIgZGlzcGF0Y2hJbnN0YW5jZSA9IGV2
ZW50Ll9kaXNwYXRjaEluc3RhbmNlcztcblx0ICAhIUFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0
ZW5lcikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdleGVjdXRlRGlyZWN0RGlzcGF0Y2go
Li4uKTogSW52YWxpZCBgZXZlbnRgLicpIDogX3Byb2RJbnZhcmlhbnQoJzEwMycpIDogdm9pZCAw
O1xuXHQgIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBkaXNwYXRjaExpc3RlbmVyID8gRXZlbnRQbHVn
aW5VdGlscy5nZXROb2RlRnJvbUluc3RhbmNlKGRpc3BhdGNoSW5zdGFuY2UpIDogbnVsbDtcblx0
ICB2YXIgcmVzID0gZGlzcGF0Y2hMaXN0ZW5lciA/IGRpc3BhdGNoTGlzdGVuZXIoZXZlbnQpIDog
bnVsbDtcblx0ICBldmVudC5jdXJyZW50VGFyZ2V0ID0gbnVsbDtcblx0ICBldmVudC5fZGlzcGF0
Y2hMaXN0ZW5lcnMgPSBudWxsO1xuXHQgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7
XG5cdCAgcmV0dXJuIHJlcztcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7U3ludGhldGlj
RXZlbnR9IGV2ZW50XG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWZmIG51bWJlciBvZiBk
aXNwYXRjaGVzIGFjY3VtdWxhdGVkIGlzIGdyZWF0ZXIgdGhhbiAwLlxuXHQgKi9cblx0ZnVuY3Rp
b24gaGFzRGlzcGF0Y2hlcyhldmVudCkge1xuXHQgIHJldHVybiAhIWV2ZW50Ll9kaXNwYXRjaExp
c3RlbmVycztcblx0fVxuXHRcblx0LyoqXG5cdCAqIEdlbmVyYWwgdXRpbGl0aWVzIHRoYXQgYXJl
IHVzZWZ1bCBpbiBjcmVhdGluZyBjdXN0b20gRXZlbnQgUGx1Z2lucy5cblx0ICovXG5cdHZhciBF
dmVudFBsdWdpblV0aWxzID0ge1xuXHQgIGlzRW5kaXNoOiBpc0VuZGlzaCxcblx0ICBpc01vdmVp
c2g6IGlzTW92ZWlzaCxcblx0ICBpc1N0YXJ0aXNoOiBpc1N0YXJ0aXNoLFxuXHRcblx0ICBleGVj
dXRlRGlyZWN0RGlzcGF0Y2g6IGV4ZWN1dGVEaXJlY3REaXNwYXRjaCxcblx0ICBleGVjdXRlRGlz
cGF0Y2hlc0luT3JkZXI6IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcixcblx0ICBleGVjdXRlRGlz
cGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlOiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRU
cnVlLFxuXHQgIGhhc0Rpc3BhdGNoZXM6IGhhc0Rpc3BhdGNoZXMsXG5cdFxuXHQgIGdldEluc3Rh
bmNlRnJvbU5vZGU6IGZ1bmN0aW9uIChub2RlKSB7XG5cdCAgICByZXR1cm4gQ29tcG9uZW50VHJl
ZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpO1xuXHQgIH0sXG5cdCAgZ2V0Tm9kZUZyb21JbnN0
YW5jZTogZnVuY3Rpb24gKG5vZGUpIHtcblx0ICAgIHJldHVybiBDb21wb25lbnRUcmVlLmdldE5v
ZGVGcm9tSW5zdGFuY2Uobm9kZSk7XG5cdCAgfSxcblx0ICBpc0FuY2VzdG9yOiBmdW5jdGlvbiAo
YSwgYikge1xuXHQgICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuaXNBbmNlc3RvcihhLCBiKTtcblx0
ICB9LFxuXHQgIGdldExvd2VzdENvbW1vbkFuY2VzdG9yOiBmdW5jdGlvbiAoYSwgYikge1xuXHQg
ICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IoYSwgYik7XG5c
dCAgfSxcblx0ICBnZXRQYXJlbnRJbnN0YW5jZTogZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgIHJl
dHVybiBUcmVlVHJhdmVyc2FsLmdldFBhcmVudEluc3RhbmNlKGluc3QpO1xuXHQgIH0sXG5cdCAg
dHJhdmVyc2VUd29QaGFzZTogZnVuY3Rpb24gKHRhcmdldCwgZm4sIGFyZykge1xuXHQgICAgcmV0
dXJuIFRyZWVUcmF2ZXJzYWwudHJhdmVyc2VUd29QaGFzZSh0YXJnZXQsIGZuLCBhcmcpO1xuXHQg
IH0sXG5cdCAgdHJhdmVyc2VFbnRlckxlYXZlOiBmdW5jdGlvbiAoZnJvbSwgdG8sIGZuLCBhcmdG
cm9tLCBhcmdUbykge1xuXHQgICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwudHJhdmVyc2VFbnRlckxl
YXZlKGZyb20sIHRvLCBmbiwgYXJnRnJvbSwgYXJnVG8pO1xuXHQgIH0sXG5cdFxuXHQgIGluamVj
dGlvbjogaW5qZWN0aW9uXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2lu
VXRpbHM7XG5cbi8qKiovIH0sXG4vKiAzOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
XHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAq
IFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBFc2NhcGUgYW5k
IHdyYXAga2V5IHNvIGl0IGlzIHNhZmUgdG8gdXNlIGFzIGEgcmVhY3RpZFxuXHQgKlxuXHQgKiBA
cGFyYW0ge3N0cmluZ30ga2V5IHRvIGJlIGVzY2FwZWQuXG5cdCAqIEByZXR1cm4ge3N0cmluZ30g
dGhlIGVzY2FwZWQga2V5LlxuXHQgKi9cblx0XG5cdGZ1bmN0aW9uIGVzY2FwZShrZXkpIHtcblx0
ICB2YXIgZXNjYXBlUmVnZXggPSAvWz06XS9nO1xuXHQgIHZhciBlc2NhcGVyTG9va3VwID0ge1xu
XHQgICAgJz0nOiAnPTAnLFxuXHQgICAgJzonOiAnPTInXG5cdCAgfTtcblx0ICB2YXIgZXNjYXBl
ZFN0cmluZyA9ICgnJyArIGtleSkucmVwbGFjZShlc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNo
KSB7XG5cdCAgICByZXR1cm4gZXNjYXBlckxvb2t1cFttYXRjaF07XG5cdCAgfSk7XG5cdFxuXHQg
IHJldHVybiAnJCcgKyBlc2NhcGVkU3RyaW5nO1xuXHR9XG5cdFxuXHQvKipcblx0ICogVW5lc2Nh
cGUgYW5kIHVud3JhcCBrZXkgZm9yIGh1bWFuLXJlYWRhYmxlIGRpc3BsYXlcblx0ICpcblx0ICog
QHBhcmFtIHtzdHJpbmd9IGtleSB0byB1bmVzY2FwZS5cblx0ICogQHJldHVybiB7c3RyaW5nfSB0
aGUgdW5lc2NhcGVkIGtleS5cblx0ICovXG5cdGZ1bmN0aW9uIHVuZXNjYXBlKGtleSkge1xuXHQg
IHZhciB1bmVzY2FwZVJlZ2V4ID0gLyg9MHw9MikvZztcblx0ICB2YXIgdW5lc2NhcGVyTG9va3Vw
ID0ge1xuXHQgICAgJz0wJzogJz0nLFxuXHQgICAgJz0yJzogJzonXG5cdCAgfTtcblx0ICB2YXIg
a2V5U3Vic3RyaW5nID0ga2V5WzBdID09PSAnLicgJiYga2V5WzFdID09PSAnJCcgPyBrZXkuc3Vi
c3RyaW5nKDIpIDoga2V5LnN1YnN0cmluZygxKTtcblx0XG5cdCAgcmV0dXJuICgnJyArIGtleVN1
YnN0cmluZykucmVwbGFjZSh1bmVzY2FwZVJlZ2V4LCBmdW5jdGlvbiAobWF0Y2gpIHtcblx0ICAg
IHJldHVybiB1bmVzY2FwZXJMb29rdXBbbWF0Y2hdO1xuXHQgIH0pO1xuXHR9XG5cdFxuXHR2YXIg
S2V5RXNjYXBlVXRpbHMgPSB7XG5cdCAgZXNjYXBlOiBlc2NhcGUsXG5cdCAgdW5lc2NhcGU6IHVu
ZXNjYXBlXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IEtleUVzY2FwZVV0aWxzO1xuXG4v
KioqLyB9LFxuLyogMzkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
XHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgUmVhY3RQcm9wVHlwZXNTZWNy
ZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1OCk7XG5cdHZhciBwcm9wVHlwZXNGYWN0b3J5ID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg1NSk7XG5cdFxuXHR2YXIgUmVhY3QgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDE3KTtcblx0dmFyIFByb3BUeXBlcyA9IHByb3BUeXBlc0ZhY3RvcnkoUmVhY3QuaXNW
YWxpZEVsZW1lbnQpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18o
MSk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBo
YXNSZWFkT25seVZhbHVlID0ge1xuXHQgIGJ1dHRvbjogdHJ1ZSxcblx0ICBjaGVja2JveDogdHJ1
ZSxcblx0ICBpbWFnZTogdHJ1ZSxcblx0ICBoaWRkZW46IHRydWUsXG5cdCAgcmFkaW86IHRydWUs
XG5cdCAgcmVzZXQ6IHRydWUsXG5cdCAgc3VibWl0OiB0cnVlXG5cdH07XG5cdFxuXHRmdW5jdGlv
biBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKSB7XG5cdCAgIShpbnB1dFByb3BzLmNoZWNr
ZWRMaW5rID09IG51bGwgfHwgaW5wdXRQcm9wcy52YWx1ZUxpbmsgPT0gbnVsbCkgPyAgZmFsc2Ug
PyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgcHJvdmlkZSBhIGNoZWNrZWRMaW5rIGFuZCBhIHZh
bHVlTGluay4gSWYgeW91IHdhbnQgdG8gdXNlIGNoZWNrZWRMaW5rLCB5b3UgcHJvYmFibHkgZG9u
XFwndCB3YW50IHRvIHVzZSB2YWx1ZUxpbmsgYW5kIHZpY2UgdmVyc2EuJykgOiBfcHJvZEludmFy
aWFudCgnODcnKSA6IHZvaWQgMDtcblx0fVxuXHRmdW5jdGlvbiBfYXNzZXJ0VmFsdWVMaW5rKGlu
cHV0UHJvcHMpIHtcblx0ICBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKTtcblx0ICAhKGlu
cHV0UHJvcHMudmFsdWUgPT0gbnVsbCAmJiBpbnB1dFByb3BzLm9uQ2hhbmdlID09IG51bGwpID8g
IGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IHByb3ZpZGUgYSB2YWx1ZUxpbmsgYW5k
IGEgdmFsdWUgb3Igb25DaGFuZ2UgZXZlbnQuIElmIHlvdSB3YW50IHRvIHVzZSB2YWx1ZSBvciBv
bkNoYW5nZSwgeW91IHByb2JhYmx5IGRvblxcJ3Qgd2FudCB0byB1c2UgdmFsdWVMaW5rLicpIDog
X3Byb2RJbnZhcmlhbnQoJzg4JykgOiB2b2lkIDA7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIF9hc3Nl
cnRDaGVja2VkTGluayhpbnB1dFByb3BzKSB7XG5cdCAgX2Fzc2VydFNpbmdsZUxpbmsoaW5wdXRQ
cm9wcyk7XG5cdCAgIShpbnB1dFByb3BzLmNoZWNrZWQgPT0gbnVsbCAmJiBpbnB1dFByb3BzLm9u
Q2hhbmdlID09IG51bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IHByb3Zp
ZGUgYSBjaGVja2VkTGluayBhbmQgYSBjaGVja2VkIHByb3BlcnR5IG9yIG9uQ2hhbmdlIGV2ZW50
LiBJZiB5b3Ugd2FudCB0byB1c2UgY2hlY2tlZCBvciBvbkNoYW5nZSwgeW91IHByb2JhYmx5IGRv
blxcJ3Qgd2FudCB0byB1c2UgY2hlY2tlZExpbmsnKSA6IF9wcm9kSW52YXJpYW50KCc4OScpIDog
dm9pZCAwO1xuXHR9XG5cdFxuXHR2YXIgcHJvcFR5cGVzID0ge1xuXHQgIHZhbHVlOiBmdW5jdGlv
biAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG5cdCAgICBpZiAoIXByb3BzW3By
b3BOYW1lXSB8fCBoYXNSZWFkT25seVZhbHVlW3Byb3BzLnR5cGVdIHx8IHByb3BzLm9uQ2hhbmdl
IHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7XG5cdCAgICAgIHJldHVybiBu
dWxsO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYHZh
bHVlYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuICcgKyAnYG9uQ2hhbmdlYCBoYW5k
bGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiAnICsgJ3RoZSBmaWVs
ZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAuIE90aGVyd2lzZSwgJyArICdz
ZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4nKTtcblx0ICB9LFxuXHQgIGNoZWNr
ZWQ6IGZ1bmN0aW9uIChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHtcblx0ICAgIGlm
ICghcHJvcHNbcHJvcE5hbWVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8
IHByb3BzLmRpc2FibGVkKSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAg
cmV0dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHByb3AgdG8gYSBmb3Jt
IGZpZWxkIHdpdGhvdXQgYW4gJyArICdgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5k
ZXIgYSByZWFkLW9ubHkgZmllbGQuIElmICcgKyAndGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxl
IHVzZSBgZGVmYXVsdENoZWNrZWRgLiBPdGhlcndpc2UsICcgKyAnc2V0IGVpdGhlciBgb25DaGFu
Z2VgIG9yIGByZWFkT25seWAuJyk7XG5cdCAgfSxcblx0ICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1
bmNcblx0fTtcblx0XG5cdHZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcblx0ZnVuY3Rpb24g
Z2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7XG5cdCAgaWYgKG93bmVyKSB7XG5c
dCAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcblx0ICAgIGlmIChuYW1lKSB7XG5cdCAg
ICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7
XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiAnJztcblx0fVxuXHRcblx0LyoqXG5cdCAqIFBy
b3ZpZGUgYSBsaW5rZWQgYHZhbHVlYCBhdHRyaWJ1dGUgZm9yIGNvbnRyb2xsZWQgZm9ybXMuIFlv
dSBzaG91bGQgbm90IHVzZVxuXHQgKiB0aGlzIG91dHNpZGUgb2YgdGhlIFJlYWN0RE9NIGNvbnRy
b2xsZWQgZm9ybSBjb21wb25lbnRzLlxuXHQgKi9cblx0dmFyIExpbmtlZFZhbHVlVXRpbHMgPSB7
XG5cdCAgY2hlY2tQcm9wVHlwZXM6IGZ1bmN0aW9uICh0YWdOYW1lLCBwcm9wcywgb3duZXIpIHtc
blx0ICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BUeXBlcykge1xuXHQgICAgICBpZiAocHJv
cFR5cGVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuXHQgICAgICAgIHZhciBlcnJvciA9
IHByb3BUeXBlc1twcm9wTmFtZV0ocHJvcHMsIHByb3BOYW1lLCB0YWdOYW1lLCAncHJvcCcsIG51
bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAoZXJyb3Ig
aW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVz
KSkge1xuXHQgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNl
IHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuXHQgICAgICAgIC8vIHNhbWUgZXJyb3Iu
XG5cdCAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtcblx0
XG5cdCAgICAgICAgdmFyIGFkZGVuZHVtID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93
bmVyKTtcblx0ICAgICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkIGZvcm0gcHJv
cFR5cGU6ICVzJXMnLCBlcnJvci5tZXNzYWdlLCBhZGRlbmR1bSkgOiB2b2lkIDA7XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcGFyYW0ge29iamVjdH0g
aW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21wb25lbnRcblx0ICAgKiBAcmV0dXJuIHsqfSBj
dXJyZW50IHZhbHVlIG9mIHRoZSBpbnB1dCBlaXRoZXIgZnJvbSB2YWx1ZSBwcm9wIG9yIGxpbmsu
XG5cdCAgICovXG5cdCAgZ2V0VmFsdWU6IGZ1bmN0aW9uIChpbnB1dFByb3BzKSB7XG5cdCAgICBp
ZiAoaW5wdXRQcm9wcy52YWx1ZUxpbmspIHtcblx0ICAgICAgX2Fzc2VydFZhbHVlTGluayhpbnB1
dFByb3BzKTtcblx0ICAgICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWVMaW5rLnZhbHVlO1xuXHQg
ICAgfVxuXHQgICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWU7XG5cdCAgfSxcblx0XG5cdCAgLyoq
XG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9yIGZvcm0gY29tcG9u
ZW50XG5cdCAgICogQHJldHVybiB7Kn0gY3VycmVudCBjaGVja2VkIHN0YXR1cyBvZiB0aGUgaW5w
dXQgZWl0aGVyIGZyb20gY2hlY2tlZCBwcm9wXG5cdCAgICogICAgICAgICAgICAgb3IgbGluay5c
blx0ICAgKi9cblx0ICBnZXRDaGVja2VkOiBmdW5jdGlvbiAoaW5wdXRQcm9wcykge1xuXHQgICAg
aWYgKGlucHV0UHJvcHMuY2hlY2tlZExpbmspIHtcblx0ICAgICAgX2Fzc2VydENoZWNrZWRMaW5r
KGlucHV0UHJvcHMpO1xuXHQgICAgICByZXR1cm4gaW5wdXRQcm9wcy5jaGVja2VkTGluay52YWx1
ZTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWQ7XG5cdCAgfSxcblx0
XG5cdCAgLyoqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9yIGZv
cm0gY29tcG9uZW50XG5cdCAgICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQgY2hhbmdl
IGV2ZW50IHRvIGhhbmRsZVxuXHQgICAqL1xuXHQgIGV4ZWN1dGVPbkNoYW5nZTogZnVuY3Rpb24g
KGlucHV0UHJvcHMsIGV2ZW50KSB7XG5cdCAgICBpZiAoaW5wdXRQcm9wcy52YWx1ZUxpbmspIHtc
blx0ICAgICAgX2Fzc2VydFZhbHVlTGluayhpbnB1dFByb3BzKTtcblx0ICAgICAgcmV0dXJuIGlu
cHV0UHJvcHMudmFsdWVMaW5rLnJlcXVlc3RDaGFuZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKTtcblx0
ICAgIH0gZWxzZSBpZiAoaW5wdXRQcm9wcy5jaGVja2VkTGluaykge1xuXHQgICAgICBfYXNzZXJ0
Q2hlY2tlZExpbmsoaW5wdXRQcm9wcyk7XG5cdCAgICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNr
ZWRMaW5rLnJlcXVlc3RDaGFuZ2UoZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xuXHQgICAgfSBlbHNl
IGlmIChpbnB1dFByb3BzLm9uQ2hhbmdlKSB7XG5cdCAgICAgIHJldHVybiBpbnB1dFByb3BzLm9u
Q2hhbmdlLmNhbGwodW5kZWZpbmVkLCBldmVudCk7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBMaW5rZWRWYWx1ZVV0aWxzO1xuXG4vKioqLyB9LFxuLyogNDAg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0
ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1
aXJlX18oMSk7XG5cdFxuXHR2YXIgaW5qZWN0ZWQgPSBmYWxzZTtcblx0XG5cdHZhciBSZWFjdENv
bXBvbmVudEVudmlyb25tZW50ID0ge1xuXHQgIC8qKlxuXHQgICAqIE9wdGlvbmFsbHkgaW5qZWN0
YWJsZSBob29rIGZvciBzd2FwcGluZyBvdXQgbW91bnQgaW1hZ2VzIGluIHRoZSBtaWRkbGUgb2Zc
blx0ICAgKiB0aGUgdHJlZS5cblx0ICAgKi9cblx0ICByZXBsYWNlTm9kZVdpdGhNYXJrdXA6IG51
bGwsXG5cdFxuXHQgIC8qKlxuXHQgICAqIE9wdGlvbmFsbHkgaW5qZWN0YWJsZSBob29rIGZvciBw
cm9jZXNzaW5nIGEgcXVldWUgb2YgY2hpbGQgdXBkYXRlcy4gV2lsbFxuXHQgICAqIGxhdGVyIG1v
dmUgaW50byBNdWx0aUNoaWxkQ29tcG9uZW50cy5cblx0ICAgKi9cblx0ICBwcm9jZXNzQ2hpbGRy
ZW5VcGRhdGVzOiBudWxsLFxuXHRcblx0ICBpbmplY3Rpb246IHtcblx0ICAgIGluamVjdEVudmly
b25tZW50OiBmdW5jdGlvbiAoZW52aXJvbm1lbnQpIHtcblx0ICAgICAgISFpbmplY3RlZCA/ICBm
YWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50OiBpbmplY3RF
bnZpcm9ubWVudCgpIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLicpIDogX3Byb2RJbnZhcmlhbnQo
JzEwNCcpIDogdm9pZCAwO1xuXHQgICAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxh
Y2VOb2RlV2l0aE1hcmt1cCA9IGVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cDtcblx0
ICAgICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzID0g
ZW52aXJvbm1lbnQucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcztcblx0ICAgICAgaW5qZWN0ZWQgPSB0
cnVlO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RD
b21wb25lbnRFbnZpcm9ubWVudDtcblxuLyoqKi8gfSxcbi8qIDQxICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBz
dHJpY3QnO1xuXHRcblx0dmFyIGNhdWdodEVycm9yID0gbnVsbDtcblx0XG5cdC8qKlxuXHQgKiBD
YWxsIGEgZnVuY3Rpb24gd2hpbGUgZ3VhcmRpbmcgYWdhaW5zdCBlcnJvcnMgdGhhdCBoYXBwZW5z
IHdpdGhpbiBpdC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgb2YgdGhlIGd1YXJk
IHRvIHVzZSBmb3IgbG9nZ2luZyBvciBkZWJ1Z2dpbmdcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0g
ZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlXG5cdCAqIEBwYXJhbSB7Kn0gYSBGaXJzdCBhcmd1
bWVudFxuXHQgKiBAcGFyYW0geyp9IGIgU2Vjb25kIGFyZ3VtZW50XG5cdCAqL1xuXHRmdW5jdGlv
biBpbnZva2VHdWFyZGVkQ2FsbGJhY2sobmFtZSwgZnVuYywgYSkge1xuXHQgIHRyeSB7XG5cdCAg
ICBmdW5jKGEpO1xuXHQgIH0gY2F0Y2ggKHgpIHtcblx0ICAgIGlmIChjYXVnaHRFcnJvciA9PT0g
bnVsbCkge1xuXHQgICAgICBjYXVnaHRFcnJvciA9IHg7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5c
dFxuXHR2YXIgUmVhY3RFcnJvclV0aWxzID0ge1xuXHQgIGludm9rZUd1YXJkZWRDYWxsYmFjazog
aW52b2tlR3VhcmRlZENhbGxiYWNrLFxuXHRcblx0ICAvKipcblx0ICAgKiBJbnZva2VkIGJ5IFJl
YWN0VGVzdFV0aWxzLlNpbXVsYXRlIHNvIHRoYXQgYW55IGVycm9ycyB0aHJvd24gYnkgdGhlIGV2
ZW50XG5cdCAgICogaGFuZGxlciBhcmUgc3VyZSB0byBiZSByZXRocm93biBieSByZXRocm93Q2F1
Z2h0RXJyb3IuXG5cdCAgICovXG5cdCAgaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOiBp
bnZva2VHdWFyZGVkQ2FsbGJhY2ssXG5cdFxuXHQgIC8qKlxuXHQgICAqIER1cmluZyBleGVjdXRp
b24gb2YgZ3VhcmRlZCBmdW5jdGlvbnMgd2Ugd2lsbCBjYXB0dXJlIHRoZSBmaXJzdCBlcnJvciB3
aGljaFxuXHQgICAqIHdlIHdpbGwgcmV0aHJvdyB0byBiZSBoYW5kbGVkIGJ5IHRoZSB0b3AgbGV2
ZWwgZXJyb3IgaGFuZGxlci5cblx0ICAgKi9cblx0ICByZXRocm93Q2F1Z2h0RXJyb3I6IGZ1bmN0
aW9uICgpIHtcblx0ICAgIGlmIChjYXVnaHRFcnJvcikge1xuXHQgICAgICB2YXIgZXJyb3IgPSBj
YXVnaHRFcnJvcjtcblx0ICAgICAgY2F1Z2h0RXJyb3IgPSBudWxsO1xuXHQgICAgICB0aHJvdyBl
cnJvcjtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICAvKipc
blx0ICAgKiBUbyBoZWxwIGRldmVsb3BtZW50IHdlIGNhbiBnZXQgYmV0dGVyIGRldnRvb2xzIGlu
dGVncmF0aW9uIGJ5IHNpbXVsYXRpbmcgYVxuXHQgICAqIHJlYWwgYnJvd3NlciBldmVudC5cblx0
ICAgKi9cblx0ICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdp
bmRvdy5kaXNwYXRjaEV2ZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkb2N1bWVudCAhPT0g
J3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUV2ZW50ID09PSAnZnVuY3Rpb24n
KSB7XG5cdCAgICB2YXIgZmFrZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdyZWFjdCcp
O1xuXHQgICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayA9IGZ1bmN0aW9u
IChuYW1lLCBmdW5jLCBhKSB7XG5cdCAgICAgIHZhciBib3VuZEZ1bmMgPSBmdW5jLmJpbmQobnVs
bCwgYSk7XG5cdCAgICAgIHZhciBldnRUeXBlID0gJ3JlYWN0LScgKyBuYW1lO1xuXHQgICAgICBm
YWtlTm9kZS5hZGRFdmVudExpc3RlbmVyKGV2dFR5cGUsIGJvdW5kRnVuYywgZmFsc2UpO1xuXHQg
ICAgICB2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdCAgICAgIGV2
dC5pbml0RXZlbnQoZXZ0VHlwZSwgZmFsc2UsIGZhbHNlKTtcblx0ICAgICAgZmFrZU5vZGUuZGlz
cGF0Y2hFdmVudChldnQpO1xuXHQgICAgICBmYWtlTm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGV2
dFR5cGUsIGJvdW5kRnVuYywgZmFsc2UpO1xuXHQgICAgfTtcblx0ICB9XG5cdH1cblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gUmVhY3RFcnJvclV0aWxzO1xuXG4vKioqLyB9LFxuLyogNDIgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJl
X18oMyk7XG5cdFxuXHR2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDExKTtcblx0dmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTtc
blx0dmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblx0
dmFyIFJlYWN0VXBkYXRlcyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cdFxuXHR2YXIgaW52
YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0ZnVuY3Rpb24gZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbElu
c3RhbmNlKSB7XG5cdCAgUmVhY3RVcGRhdGVzLmVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5j
ZSk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGZvcm1hdFVuZXhwZWN0ZWRBcmd1bWVudChhcmcpIHtc
blx0ICB2YXIgdHlwZSA9IHR5cGVvZiBhcmc7XG5cdCAgaWYgKHR5cGUgIT09ICdvYmplY3QnKSB7
XG5cdCAgICByZXR1cm4gdHlwZTtcblx0ICB9XG5cdCAgdmFyIGRpc3BsYXlOYW1lID0gYXJnLmNv
bnN0cnVjdG9yICYmIGFyZy5jb25zdHJ1Y3Rvci5uYW1lIHx8IHR5cGU7XG5cdCAgdmFyIGtleXMg
PSBPYmplY3Qua2V5cyhhcmcpO1xuXHQgIGlmIChrZXlzLmxlbmd0aCA+IDAgJiYga2V5cy5sZW5n
dGggPCAyMCkge1xuXHQgICAgcmV0dXJuIGRpc3BsYXlOYW1lICsgJyAoa2V5czogJyArIGtleXMu
am9pbignLCAnKSArICcpJztcblx0ICB9XG5cdCAgcmV0dXJuIGRpc3BsYXlOYW1lO1xuXHR9XG5c
dFxuXHRmdW5jdGlvbiBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5z
dGFuY2UsIGNhbGxlck5hbWUpIHtcblx0ICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IFJlYWN0SW5z
dGFuY2VNYXAuZ2V0KHB1YmxpY0luc3RhbmNlKTtcblx0ICBpZiAoIWludGVybmFsSW5zdGFuY2Up
IHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICB2YXIgY3RvciA9IHB1YmxpY0luc3RhbmNl
LmNvbnN0cnVjdG9yO1xuXHQgICAgICAvLyBPbmx5IHdhcm4gd2hlbiB3ZSBoYXZlIGEgY2FsbGVy
TmFtZS4gT3RoZXJ3aXNlIHdlIHNob3VsZCBiZSBzaWxlbnQuXG5cdCAgICAgIC8vIFdlJ3JlIHBy
b2JhYmx5IGNhbGxpbmcgZnJvbSBlbnF1ZXVlQ2FsbGJhY2suIFdlIGRvbid0IHdhbnQgdG8gd2Fy
blxuXHQgICAgICAvLyB0aGVyZSBiZWNhdXNlIHdlIGFscmVhZHkgd2FybmVkIGZvciB0aGUgY29y
cmVzcG9uZGluZyBsaWZlY3ljbGUgbWV0aG9kLlxuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghY2FsbGVyTmFtZSwgJyVzKC4uLik6IENhbiBv
bmx5IHVwZGF0ZSBhIG1vdW50ZWQgb3IgbW91bnRpbmcgY29tcG9uZW50LiAnICsgJ1RoaXMgdXN1
YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb24gYW4gdW5tb3VudGVkIGNvbXBvbmVudC4gJyAr
ICdUaGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhlICVzIGNvbXBv
bmVudC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBjdG9yICYmIChjdG9yLmRpc3BsYXlOYW1l
IHx8IGN0b3IubmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0ICAg
IHJldHVybiBudWxsO1xuXHQgIH1cblx0XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhSZWFjdEN1cnJlbnRPd25l
ci5jdXJyZW50ID09IG51bGwsICclcyguLi4pOiBDYW5ub3QgdXBkYXRlIGR1cmluZyBhbiBleGlz
dGluZyBzdGF0ZSB0cmFuc2l0aW9uIChzdWNoIGFzICcgKyBcIndpdGhpbiBgcmVuZGVyYCBvciBh
bm90aGVyIGNvbXBvbmVudCdzIGNvbnN0cnVjdG9yKS4gUmVuZGVyIG1ldGhvZHMgXCIgKyAnc2hv
dWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQgc3RhdGU7IGNvbnN0cnVjdG9yICcg
KyAnc2lkZS1lZmZlY3RzIGFyZSBhbiBhbnRpLXBhdHRlcm4sIGJ1dCBjYW4gYmUgbW92ZWQgdG8g
JyArICdgY29tcG9uZW50V2lsbE1vdW50YC4nLCBjYWxsZXJOYW1lKSA6IHZvaWQgMDtcblx0ICB9
XG5cdFxuXHQgIHJldHVybiBpbnRlcm5hbEluc3RhbmNlO1xuXHR9XG5cdFxuXHQvKipcblx0ICog
UmVhY3RVcGRhdGVRdWV1ZSBhbGxvd3MgZm9yIHN0YXRlIHVwZGF0ZXMgdG8gYmUgc2NoZWR1bGVk
IGludG8gYSBsYXRlclxuXHQgKiByZWNvbmNpbGlhdGlvbiBzdGVwLlxuXHQgKi9cblx0dmFyIFJl
YWN0VXBkYXRlUXVldWUgPSB7XG5cdCAgLyoqXG5cdCAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90
IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuXHQgICAqIEBwYXJhbSB7UmVh
Y3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHdlIHdhbnQgdG8gdGVzdC5cblx0
ICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5c
blx0ICAgKiBAcHJvdGVjdGVkXG5cdCAgICogQGZpbmFsXG5cdCAgICovXG5cdCAgaXNNb3VudGVk
OiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAg
ICB2YXIgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuXHQgICAgICBpZiAob3du
ZXIgIT09IG51bGwpIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIsICclcyBpcyBh
Y2Nlc3NpbmcgaXNNb3VudGVkIGluc2lkZSBpdHMgcmVuZGVyKCkgZnVuY3Rpb24uICcgKyAncmVu
ZGVyKCkgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQgc3RhdGUuIEl0IHNo
b3VsZCAnICsgJ25ldmVyIGFjY2VzcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBzdGFsZSBkYXRh
IGZyb20gdGhlIHByZXZpb3VzICcgKyAncmVuZGVyLCBzdWNoIGFzIHJlZnMuIE1vdmUgdGhpcyBs
b2dpYyB0byBjb21wb25lbnREaWRNb3VudCBhbmQgJyArICdjb21wb25lbnREaWRVcGRhdGUgaW5z
dGVhZC4nLCBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAg
ICAgICAgb3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyID0gdHJ1ZTtcblx0ICAgICAgfVxu
XHQgICAgfVxuXHQgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBSZWFjdEluc3RhbmNlTWFwLmdl
dChwdWJsaWNJbnN0YW5jZSk7XG5cdCAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZSkge1xuXHQgICAg
ICAvLyBEdXJpbmcgY29tcG9uZW50V2lsbE1vdW50IGFuZCByZW5kZXIgdGhpcyB3aWxsIHN0aWxs
IGJlIG51bGwgYnV0IGFmdGVyXG5cdCAgICAgIC8vIHRoYXQgd2lsbCBhbHdheXMgcmVuZGVyIHRv
IHNvbWV0aGluZy4gQXQgbGVhc3QgZm9yIG5vdy4gU28gd2UgY2FuIHVzZVxuXHQgICAgICAvLyB0
aGlzIGhhY2suXG5cdCAgICAgIHJldHVybiAhIWludGVybmFsSW5zdGFuY2UuX3JlbmRlcmVkQ29t
cG9uZW50O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgfVxu
XHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwg
YmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXNcblx0ICAgKiBoYXZlIHBy
b2Nlc3NlZC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFu
Y2UgVGhlIGluc3RhbmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC5cblx0ICAgKiBAcGFyYW0g
ez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG5cdCAg
ICogQHBhcmFtIHtzdHJpbmd9IGNhbGxlck5hbWUgTmFtZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlv
biBpbiB0aGUgcHVibGljIEFQSS5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBlbnF1
ZXVlQ2FsbGJhY2s6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2ssIGNhbGxlck5h
bWUpIHtcblx0ICAgIFJlYWN0VXBkYXRlUXVldWUudmFsaWRhdGVDYWxsYmFjayhjYWxsYmFjaywg
Y2FsbGVyTmFtZSk7XG5cdCAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5z
dGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSk7XG5cdFxuXHQgICAgLy8gUHJldmlv
dXNseSB3ZSB3b3VsZCB0aHJvdyBhbiBlcnJvciBpZiB3ZSBkaWRuJ3QgaGF2ZSBhbiBpbnRlcm5h
bFxuXHQgICAgLy8gaW5zdGFuY2UuIFNpbmNlIHdlIHdhbnQgdG8gbWFrZSBpdCBhIG5vLW9wIGlu
c3RlYWQsIHdlIG1pcnJvciB0aGUgc2FtZVxuXHQgICAgLy8gYmVoYXZpb3Igd2UgaGF2ZSBpbiBv
dGhlciBlbnF1ZXVlKiBtZXRob2RzLlxuXHQgICAgLy8gV2UgYWxzbyBuZWVkIHRvIGlnbm9yZSBj
YWxsYmFja3MgaW4gY29tcG9uZW50V2lsbE1vdW50LiBTZWVcblx0ICAgIC8vIGVucXVldWVVcGRh
dGVzLlxuXHQgICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG5cdCAgICAgIHJldHVybiBudWxs
O1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJh
Y2tzKSB7XG5cdCAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaChj
YWxsYmFjayk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5k
aW5nQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTtcblx0ICAgIH1cblx0ICAgIC8vIFRPRE86IFRoZSBj
YWxsYmFjayBoZXJlIGlzIGlnbm9yZWQgd2hlbiBzZXRTdGF0ZSBpcyBjYWxsZWQgZnJvbVxuXHQg
ICAgLy8gY29tcG9uZW50V2lsbE1vdW50LiBFaXRoZXIgZml4IGl0IG9yIGRpc2FsbG93IGRvaW5n
IHNvIGNvbXBsZXRlbHkgaW5cblx0ICAgIC8vIGZhdm9yIG9mIGdldEluaXRpYWxTdGF0ZS4gQWx0
ZXJuYXRpdmVseSwgd2UgY2FuIGRpc2FsbG93XG5cdCAgICAvLyBjb21wb25lbnRXaWxsTW91bnQg
ZHVyaW5nIHNlcnZlci1zaWRlIHJlbmRlcmluZy5cblx0ICAgIGVucXVldWVVcGRhdGUoaW50ZXJu
YWxJbnN0YW5jZSk7XG5cdCAgfSxcblx0XG5cdCAgZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWw6IGZ1
bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBjYWxsYmFjaykge1xuXHQgICAgaWYgKGludGVybmFs
SW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MpIHtcblx0ICAgICAgaW50ZXJuYWxJbnN0YW5jZS5f
cGVuZGluZ0NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAg
IGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MgPSBbY2FsbGJhY2tdO1xuXHQgICAg
fVxuXHQgICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcblx0ICB9LFxuXHRcblx0
ICAvKipcblx0ICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9r
ZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG5cdCAgICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoq
bm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG5cdCAgICpcblx0ICAgKiBZb3UgbWF5IHdhbnQg
dG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhl
XG5cdCAgICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2Fz
IG5vdCBjYWxsZWQuXG5cdCAgICpcblx0ICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxk
Q29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG5cdCAgICogYGNvbXBvbmVudFdp
bGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cblx0ICAgKlxuXHQgICAqIEBwYXJh
bSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJl
cmVuZGVyLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGVucXVldWVGb3JjZVVwZGF0
ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG5cdCAgICB2YXIgaW50ZXJuYWxJbnN0YW5j
ZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ2Zv
cmNlVXBkYXRlJyk7XG5cdFxuXHQgICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG5cdCAgICAg
IHJldHVybjtcblx0ICAgIH1cblx0XG5cdCAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nRm9y
Y2VVcGRhdGUgPSB0cnVlO1xuXHRcblx0ICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5j
ZSk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogUmVwbGFjZXMgYWxsIG9mIHRoZSBzdGF0
ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0YXRlIHN0YXRlLlxuXHQgICAq
IFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS5cblx0ICAgKlxuXHQg
ICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJlIGltbWVk
aWF0ZWx5IHVwZGF0ZWQsIHNvXG5cdCAgICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBj
YWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5cblx0ICAgKlxuXHQg
ICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQg
c2hvdWxkIHJlcmVuZGVyLlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wbGV0ZVN0YXRlIE5l
eHQgc3RhdGUuXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgZW5xdWV1ZVJlcGxhY2VT
dGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0YXRlLCBjYWxsYmFjaykg
e1xuXHQgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlG
b3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUnKTtcblx0XG5cdCAgICBpZiAo
IWludGVybmFsSW5zdGFuY2UpIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAg
IGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gW2NvbXBsZXRlU3RhdGVdO1xu
XHQgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IHRydWU7XG5cdFxu
XHQgICAgLy8gRnV0dXJlLXByb29mIDE1LjVcblx0ICAgIGlmIChjYWxsYmFjayAhPT0gdW5kZWZp
bmVkICYmIGNhbGxiYWNrICE9PSBudWxsKSB7XG5cdCAgICAgIFJlYWN0VXBkYXRlUXVldWUudmFs
aWRhdGVDYWxsYmFjayhjYWxsYmFjaywgJ3JlcGxhY2VTdGF0ZScpO1xuXHQgICAgICBpZiAoaW50
ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcykge1xuXHQgICAgICAgIGludGVybmFsSW5z
dGFuY2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG5cdCAgICAgIH0gZWxzZSB7
XG5cdCAgICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcyA9IFtjYWxsYmFj
a107XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFs
SW5zdGFuY2UpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFNldHMgYSBzdWJzZXQgb2Yg
dGhlIHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2UgX3BlbmRpbmdTdGF0ZSBpc1xuXHQg
ICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5v
dCBhdmFpbGFibGUgdG8gZGVlcFxuXHQgICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5n
LiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxuXHQgICAqIGR1cmlu
ZyB0aGUgbWVyZ2UuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0lu
c3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cblx0ICAgKiBAcGFyYW0g
e29iamVjdH0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0
aCBzdGF0ZS5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBlbnF1ZXVlU2V0U3RhdGU6
IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKSB7XG5cdCAgICBpZiAoZmFs
c2UpIHtcblx0ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0U3RhdGUo
KTtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcocGFydGlhbFN0YXRlICE9IG51bGwsICdzZXRTdGF0ZSguLi4pOiBZb3UgcGFzc2VkIGFuIHVu
ZGVmaW5lZCBvciBudWxsIHN0YXRlIG9iamVjdDsgJyArICdpbnN0ZWFkLCB1c2UgZm9yY2VVcGRh
dGUoKS4nKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgaW50ZXJuYWxJbnN0YW5j
ZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ3Nl
dFN0YXRlJyk7XG5cdFxuXHQgICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG5cdCAgICAgIHJl
dHVybjtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgcXVldWUgPSBpbnRlcm5hbEluc3RhbmNlLl9w
ZW5kaW5nU3RhdGVRdWV1ZSB8fCAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUg
PSBbXSk7XG5cdCAgICBxdWV1ZS5wdXNoKHBhcnRpYWxTdGF0ZSk7XG5cdFxuXHQgICAgZW5xdWV1
ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcblx0ICB9LFxuXHRcblx0ICBlbnF1ZXVlRWxlbWVu
dEludGVybmFsOiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgbmV4dEVsZW1lbnQsIG5leHRD
b250ZXh0KSB7XG5cdCAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nRWxlbWVudCA9IG5leHRF
bGVtZW50O1xuXHQgICAgLy8gVE9ETzogaW50cm9kdWNlIF9wZW5kaW5nQ29udGV4dCBpbnN0ZWFk
IG9mIHNldHRpbmcgaXQgZGlyZWN0bHkuXG5cdCAgICBpbnRlcm5hbEluc3RhbmNlLl9jb250ZXh0
ID0gbmV4dENvbnRleHQ7XG5cdCAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xu
XHQgIH0sXG5cdFxuXHQgIHZhbGlkYXRlQ2FsbGJhY2s6IGZ1bmN0aW9uIChjYWxsYmFjaywgY2Fs
bGVyTmFtZSkge1xuXHQgICAgISghY2FsbGJhY2sgfHwgdHlwZW9mIGNhbGxiYWNrID09PSAnZnVu
Y3Rpb24nKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJyVzKC4uLik6IEV4cGVjdGVkIHRo
ZSBsYXN0IG9wdGlvbmFsIGBjYWxsYmFja2AgYXJndW1lbnQgdG8gYmUgYSBmdW5jdGlvbi4gSW5z
dGVhZCByZWNlaXZlZDogJXMuJywgY2FsbGVyTmFtZSwgZm9ybWF0VW5leHBlY3RlZEFyZ3VtZW50
KGNhbGxiYWNrKSkgOiBfcHJvZEludmFyaWFudCgnMTIyJywgY2FsbGVyTmFtZSwgZm9ybWF0VW5l
eHBlY3RlZEFyZ3VtZW50KGNhbGxiYWNrKSkgOiB2b2lkIDA7XG5cdCAgfVxuXHR9O1xuXHRcblx0
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFVwZGF0ZVF1ZXVlO1xuXG4vKioqLyB9LFxuLyogNDMgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdC8qIGdsb2JhbHMgTVNBcHAgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBDcmVhdGUgYSBmdW5jdGlvbiB3
aGljaCBoYXMgJ3Vuc2FmZScgcHJpdmlsZWdlcyAocmVxdWlyZWQgYnkgd2luZG93czggYXBwcylc
blx0ICovXG5cdFxuXHR2YXIgY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IGZ1
bmN0aW9uIChmdW5jKSB7XG5cdCAgaWYgKHR5cGVvZiBNU0FwcCAhPT0gJ3VuZGVmaW5lZCcgJiYg
TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24pIHtcblx0ICAgIHJldHVybiBmdW5jdGlvbiAo
YXJnMCwgYXJnMSwgYXJnMiwgYXJnMykge1xuXHQgICAgICBNU0FwcC5leGVjVW5zYWZlTG9jYWxG
dW5jdGlvbihmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgcmV0dXJuIGZ1bmMoYXJnMCwgYXJnMSwg
YXJnMiwgYXJnMyk7XG5cdCAgICAgIH0pO1xuXHQgICAgfTtcblx0ICB9IGVsc2Uge1xuXHQgICAg
cmV0dXJuIGZ1bmM7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVN
aWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uO1xuXG4vKioqLyB9LFxuLyogNDQgKi9cbi8qKiov
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxu
XHQgKiBgY2hhckNvZGVgIHJlcHJlc2VudHMgdGhlIGFjdHVhbCBcImNoYXJhY3RlciBjb2RlXCIg
YW5kIGlzIHNhZmUgdG8gdXNlIHdpdGhcblx0ICogYFN0cmluZy5mcm9tQ2hhckNvZGVgLiBBcyBz
dWNoLCBvbmx5IGtleXMgdGhhdCBjb3JyZXNwb25kIHRvIHByaW50YWJsZVxuXHQgKiBjaGFyYWN0
ZXJzIHByb2R1Y2UgYSB2YWxpZCBgY2hhckNvZGVgLCB0aGUgb25seSBleGNlcHRpb24gdG8gdGhp
cyBpcyBFbnRlci5cblx0ICogVGhlIFRhYi1rZXkgaXMgY29uc2lkZXJlZCBub24tcHJpbnRhYmxl
IGFuZCBkb2VzIG5vdCBoYXZlIGEgYGNoYXJDb2RlYCxcblx0ICogcHJlc3VtYWJseSBiZWNhdXNl
IGl0IGRvZXMgbm90IHByb2R1Y2UgYSB0YWItY2hhcmFjdGVyIGluIGJyb3dzZXJzLlxuXHQgKlxu
XHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5c
dCAqIEByZXR1cm4ge251bWJlcn0gTm9ybWFsaXplZCBgY2hhckNvZGVgIHByb3BlcnR5LlxuXHQg
Ki9cblx0XG5cdGZ1bmN0aW9uIGdldEV2ZW50Q2hhckNvZGUobmF0aXZlRXZlbnQpIHtcblx0ICB2
YXIgY2hhckNvZGU7XG5cdCAgdmFyIGtleUNvZGUgPSBuYXRpdmVFdmVudC5rZXlDb2RlO1xuXHRc
blx0ICBpZiAoJ2NoYXJDb2RlJyBpbiBuYXRpdmVFdmVudCkge1xuXHQgICAgY2hhckNvZGUgPSBu
YXRpdmVFdmVudC5jaGFyQ29kZTtcblx0XG5cdCAgICAvLyBGRiBkb2VzIG5vdCBzZXQgYGNoYXJD
b2RlYCBmb3IgdGhlIEVudGVyLWtleSwgY2hlY2sgYWdhaW5zdCBga2V5Q29kZWAuXG5cdCAgICBp
ZiAoY2hhckNvZGUgPT09IDAgJiYga2V5Q29kZSA9PT0gMTMpIHtcblx0ICAgICAgY2hhckNvZGUg
PSAxMztcblx0ICAgIH1cblx0ICB9IGVsc2Uge1xuXHQgICAgLy8gSUU4IGRvZXMgbm90IGltcGxl
bWVudCBgY2hhckNvZGVgLCBidXQgYGtleUNvZGVgIGhhcyB0aGUgY29ycmVjdCB2YWx1ZS5cblx0
ICAgIGNoYXJDb2RlID0ga2V5Q29kZTtcblx0ICB9XG5cdFxuXHQgIC8vIFNvbWUgbm9uLXByaW50
YWJsZSBrZXlzIGFyZSByZXBvcnRlZCBpbiBgY2hhckNvZGVgL2BrZXlDb2RlYCwgZGlzY2FyZCB0
aGVtLlxuXHQgIC8vIE11c3Qgbm90IGRpc2NhcmQgdGhlIChub24tKXByaW50YWJsZSBFbnRlci1r
ZXkuXG5cdCAgaWYgKGNoYXJDb2RlID49IDMyIHx8IGNoYXJDb2RlID09PSAxMykge1xuXHQgICAg
cmV0dXJuIGNoYXJDb2RlO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIDA7XG5cdH1cblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRDaGFyQ29kZTtcblxuLyoqKi8gfSxcbi8qIDQ1ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
blx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQv
Kipcblx0ICogVHJhbnNsYXRpb24gZnJvbSBtb2RpZmllciBrZXkgdG8gdGhlIGFzc29jaWF0ZWQg
cHJvcGVydHkgaW4gdGhlIGV2ZW50LlxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RP
TS1MZXZlbC0zLUV2ZW50cy8ja2V5cy1Nb2RpZmllcnNcblx0ICovXG5cdFxuXHR2YXIgbW9kaWZp
ZXJLZXlUb1Byb3AgPSB7XG5cdCAgQWx0OiAnYWx0S2V5Jyxcblx0ICBDb250cm9sOiAnY3RybEtl
eScsXG5cdCAgTWV0YTogJ21ldGFLZXknLFxuXHQgIFNoaWZ0OiAnc2hpZnRLZXknXG5cdH07XG5c
dFxuXHQvLyBJRTggZG9lcyBub3QgaW1wbGVtZW50IGdldE1vZGlmaWVyU3RhdGUgc28gd2Ugc2lt
cGx5IG1hcCBpdCB0byB0aGUgb25seVxuXHQvLyBtb2RpZmllciBrZXlzIGV4cG9zZWQgYnkgdGhl
IGV2ZW50IGl0c2VsZiwgZG9lcyBub3Qgc3VwcG9ydCBMb2NrLWtleXMuXG5cdC8vIEN1cnJlbnRs
eSwgYWxsIG1ham9yIGJyb3dzZXJzIGV4Y2VwdCBDaHJvbWUgc2VlbXMgdG8gc3VwcG9ydCBMb2Nr
LWtleXMuXG5cdGZ1bmN0aW9uIG1vZGlmaWVyU3RhdGVHZXR0ZXIoa2V5QXJnKSB7XG5cdCAgdmFy
IHN5bnRoZXRpY0V2ZW50ID0gdGhpcztcblx0ICB2YXIgbmF0aXZlRXZlbnQgPSBzeW50aGV0aWNF
dmVudC5uYXRpdmVFdmVudDtcblx0ICBpZiAobmF0aXZlRXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZSkg
e1xuXHQgICAgcmV0dXJuIG5hdGl2ZUV2ZW50LmdldE1vZGlmaWVyU3RhdGUoa2V5QXJnKTtcblx0
ICB9XG5cdCAgdmFyIGtleVByb3AgPSBtb2RpZmllcktleVRvUHJvcFtrZXlBcmddO1xuXHQgIHJl
dHVybiBrZXlQcm9wID8gISFuYXRpdmVFdmVudFtrZXlQcm9wXSA6IGZhbHNlO1xuXHR9XG5cdFxu
XHRmdW5jdGlvbiBnZXRFdmVudE1vZGlmaWVyU3RhdGUobmF0aXZlRXZlbnQpIHtcblx0ICByZXR1
cm4gbW9kaWZpZXJTdGF0ZUdldHRlcjtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBnZXRF
dmVudE1vZGlmaWVyU3RhdGU7XG5cbi8qKiovIH0sXG4vKiA0NiAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIEdldHMg
dGhlIHRhcmdldCBub2RlIGZyb20gYSBuYXRpdmUgYnJvd3NlciBldmVudCBieSBhY2NvdW50aW5n
IGZvclxuXHQgKiBpbmNvbnNpc3RlbmNpZXMgaW4gYnJvd3NlciBET00gQVBJcy5cblx0ICpcblx0
ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQg
KiBAcmV0dXJuIHtET01FdmVudFRhcmdldH0gVGFyZ2V0IG5vZGUuXG5cdCAqL1xuXHRcblx0ZnVu
Y3Rpb24gZ2V0RXZlbnRUYXJnZXQobmF0aXZlRXZlbnQpIHtcblx0ICB2YXIgdGFyZ2V0ID0gbmF0
aXZlRXZlbnQudGFyZ2V0IHx8IG5hdGl2ZUV2ZW50LnNyY0VsZW1lbnQgfHwgd2luZG93O1xuXHRc
blx0ICAvLyBOb3JtYWxpemUgU1ZHIDx1c2U+IGVsZW1lbnQgZXZlbnRzICM0OTYzXG5cdCAgaWYg
KHRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCkge1xuXHQgICAgdGFyZ2V0ID0gdGFyZ2V0
LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50O1xuXHQgIH1cblx0XG5cdCAgLy8gU2FmYXJpIG1heSBm
aXJlIGV2ZW50cyBvbiB0ZXh0IG5vZGVzIChOb2RlLlRFWFRfTk9ERSBpcyAzKS5cblx0ICAvLyBA
c2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvanMvZXZlbnRzX3Byb3BlcnRpZXMuaHRtbFxu
XHQgIHJldHVybiB0YXJnZXQubm9kZVR5cGUgPT09IDMgPyB0YXJnZXQucGFyZW50Tm9kZSA6IHRh
cmdldDtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudFRhcmdldDtcblxuLyoq
Ki8gfSxcbi8qIDQ3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0
ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRXhlY3V0aW9uRW52aXJv
bm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHRcblx0dmFyIHVzZUhhc0ZlYXR1cmU7
XG5cdGlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcblx0ICB1c2VIYXNGZWF0
dXJlID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24gJiYgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24u
aGFzRmVhdHVyZSAmJlxuXHQgIC8vIGFsd2F5cyByZXR1cm5zIHRydWUgaW4gbmV3ZXIgYnJvd3Nl
cnMgYXMgcGVyIHRoZSBzdGFuZGFyZC5cblx0ICAvLyBAc2VlIGh0dHA6Ly9kb20uc3BlYy53aGF0
d2cub3JnLyNkb20tZG9taW1wbGVtZW50YXRpb24taGFzZmVhdHVyZVxuXHQgIGRvY3VtZW50Lmlt
cGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoJycsICcnKSAhPT0gdHJ1ZTtcblx0fVxuXHRcblx0Lyoq
XG5cdCAqIENoZWNrcyBpZiBhbiBldmVudCBpcyBzdXBwb3J0ZWQgaW4gdGhlIGN1cnJlbnQgZXhl
Y3V0aW9uIGVudmlyb25tZW50LlxuXHQgKlxuXHQgKiBOT1RFOiBUaGlzIHdpbGwgbm90IHdvcmsg
Y29ycmVjdGx5IGZvciBub24tZ2VuZXJpYyBldmVudHMgc3VjaCBhcyBgY2hhbmdlYCxcblx0ICog
YHJlc2V0YCwgYGxvYWRgLCBgZXJyb3JgLCBhbmQgYHNlbGVjdGAuXG5cdCAqXG5cdCAqIEJvcnJv
d3MgZnJvbSBNb2Rlcm5penIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWVT
dWZmaXggRXZlbnQgbmFtZSwgZS5nLiBcImNsaWNrXCIuXG5cdCAqIEBwYXJhbSB7P2Jvb2xlYW59
IGNhcHR1cmUgQ2hlY2sgaWYgdGhlIGNhcHR1cmUgcGhhc2UgaXMgc3VwcG9ydGVkLlxuXHQgKiBA
cmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBldmVudCBpcyBzdXBwb3J0ZWQuXG5cdCAqIEBp
bnRlcm5hbFxuXHQgKiBAbGljZW5zZSBNb2Rlcm5penIgMy4wLjBwcmUgKEN1c3RvbSBCdWlsZCkg
fCBNSVRcblx0ICovXG5cdGZ1bmN0aW9uIGlzRXZlbnRTdXBwb3J0ZWQoZXZlbnROYW1lU3VmZml4
LCBjYXB0dXJlKSB7XG5cdCAgaWYgKCFFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gfHwg
Y2FwdHVyZSAmJiAhKCdhZGRFdmVudExpc3RlbmVyJyBpbiBkb2N1bWVudCkpIHtcblx0ICAgIHJl
dHVybiBmYWxzZTtcblx0ICB9XG5cdFxuXHQgIHZhciBldmVudE5hbWUgPSAnb24nICsgZXZlbnRO
YW1lU3VmZml4O1xuXHQgIHZhciBpc1N1cHBvcnRlZCA9IGV2ZW50TmFtZSBpbiBkb2N1bWVudDtc
blx0XG5cdCAgaWYgKCFpc1N1cHBvcnRlZCkge1xuXHQgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0ICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGV2ZW50
TmFtZSwgJ3JldHVybjsnKTtcblx0ICAgIGlzU3VwcG9ydGVkID0gdHlwZW9mIGVsZW1lbnRbZXZl
bnROYW1lXSA9PT0gJ2Z1bmN0aW9uJztcblx0ICB9XG5cdFxuXHQgIGlmICghaXNTdXBwb3J0ZWQg
JiYgdXNlSGFzRmVhdHVyZSAmJiBldmVudE5hbWVTdWZmaXggPT09ICd3aGVlbCcpIHtcblx0ICAg
IC8vIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIHRlc3Qgc3VwcG9ydCBmb3IgdGhlIGB3aGVlbGAg
ZXZlbnQgaW4gSUU5Ky5cblx0ICAgIGlzU3VwcG9ydGVkID0gZG9jdW1lbnQuaW1wbGVtZW50YXRp
b24uaGFzRmVhdHVyZSgnRXZlbnRzLndoZWVsJywgJzMuMCcpO1xuXHQgIH1cblx0XG5cdCAgcmV0
dXJuIGlzU3VwcG9ydGVkO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGlzRXZlbnRTdXBw
b3J0ZWQ7XG5cbi8qKiovIH0sXG4vKiA0OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
XHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAq
L1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIEdpdmVuIGEgYHByZXZFbGVt
ZW50YCBhbmQgYG5leHRFbGVtZW50YCwgZGV0ZXJtaW5lcyBpZiB0aGUgZXhpc3Rpbmdcblx0ICog
aW5zdGFuY2Ugc2hvdWxkIGJlIHVwZGF0ZWQgYXMgb3Bwb3NlZCB0byBiZWluZyBkZXN0cm95ZWQg
b3IgcmVwbGFjZWQgYnkgYSBuZXdcblx0ICogaW5zdGFuY2UuIEJvdGggYXJndW1lbnRzIGFyZSBl
bGVtZW50cy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhpcyBsb2dpYyBjYW5cblx0ICogb3BlcmF0ZSBv
biBzdGF0ZWxlc3MgdHJlZXMgd2l0aG91dCBhbnkgYmFja2luZyBpbnN0YW5jZS5cblx0ICpcblx0
ICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2RWxlbWVudFxuXHQgKiBAcGFyYW0gez9vYmplY3R9IG5l
eHRFbGVtZW50XG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGV4aXN0aW5nIGlu
c3RhbmNlIHNob3VsZCBiZSB1cGRhdGVkLlxuXHQgKiBAcHJvdGVjdGVkXG5cdCAqL1xuXHRcblx0
ZnVuY3Rpb24gc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVt
ZW50KSB7XG5cdCAgdmFyIHByZXZFbXB0eSA9IHByZXZFbGVtZW50ID09PSBudWxsIHx8IHByZXZF
bGVtZW50ID09PSBmYWxzZTtcblx0ICB2YXIgbmV4dEVtcHR5ID0gbmV4dEVsZW1lbnQgPT09IG51
bGwgfHwgbmV4dEVsZW1lbnQgPT09IGZhbHNlO1xuXHQgIGlmIChwcmV2RW1wdHkgfHwgbmV4dEVt
cHR5KSB7XG5cdCAgICByZXR1cm4gcHJldkVtcHR5ID09PSBuZXh0RW1wdHk7XG5cdCAgfVxuXHRc
blx0ICB2YXIgcHJldlR5cGUgPSB0eXBlb2YgcHJldkVsZW1lbnQ7XG5cdCAgdmFyIG5leHRUeXBl
ID0gdHlwZW9mIG5leHRFbGVtZW50O1xuXHQgIGlmIChwcmV2VHlwZSA9PT0gJ3N0cmluZycgfHwg
cHJldlR5cGUgPT09ICdudW1iZXInKSB7XG5cdCAgICByZXR1cm4gbmV4dFR5cGUgPT09ICdzdHJp
bmcnIHx8IG5leHRUeXBlID09PSAnbnVtYmVyJztcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJu
IG5leHRUeXBlID09PSAnb2JqZWN0JyAmJiBwcmV2RWxlbWVudC50eXBlID09PSBuZXh0RWxlbWVu
dC50eXBlICYmIHByZXZFbGVtZW50LmtleSA9PT0gbmV4dEVsZW1lbnQua2V5O1xuXHQgIH1cblx0
fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudDtcblxu
LyoqKi8gfSxcbi8qIDQ5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX2Fzc2lnbiA9IF9f
d2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFj
a19yZXF1aXJlX18oNyk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtc
blx0XG5cdHZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSBlbXB0eUZ1bmN0aW9uO1xuXHRcblx0aWYg
KGZhbHNlKSB7XG5cdCAgLy8gVGhpcyB2YWxpZGF0aW9uIGNvZGUgd2FzIHdyaXR0ZW4gYmFzZWQg
b24gdGhlIEhUTUw1IHBhcnNpbmcgc3BlYzpcblx0ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNoYXMtYW4tZWxlbWVudC1pbi1zY29wZVxuXHQg
IC8vXG5cdCAgLy8gTm90ZTogdGhpcyBkb2VzIG5vdCBjYXRjaCBhbGwgaW52YWxpZCBuZXN0aW5n
LCBub3IgZG9lcyBpdCB0cnkgdG8gKGFzIGl0J3Ncblx0ICAvLyBub3QgY2xlYXIgd2hhdCBwcmFj
dGljYWwgYmVuZWZpdCBkb2luZyBzbyBwcm92aWRlcyk7IGluc3RlYWQsIHdlIHdhcm4gb25seVxu
XHQgIC8vIGZvciBjYXNlcyB3aGVyZSB0aGUgcGFyc2VyIHdpbGwgZ2l2ZSBhIHBhcnNlIHRyZWUg
ZGlmZmVyaW5nIGZyb20gd2hhdCBSZWFjdFxuXHQgIC8vIGludGVuZGVkLiBGb3IgZXhhbXBsZSwg
PGI+PGRpdj48L2Rpdj48L2I+IGlzIGludmFsaWQgYnV0IHdlIGRvbid0IHdhcm5cblx0ICAvLyBi
ZWNhdXNlIGl0IHN0aWxsIHBhcnNlcyBjb3JyZWN0bHk7IHdlIGRvIHdhcm4gZm9yIG90aGVyIGNh
c2VzIGxpa2UgbmVzdGVkXG5cdCAgLy8gPHA+IHRhZ3Mgd2hlcmUgdGhlIGJlZ2lubmluZyBvZiB0
aGUgc2Vjb25kIGVsZW1lbnQgaW1wbGljaXRseSBjbG9zZXMgdGhlXG5cdCAgLy8gZmlyc3QsIGNh
dXNpbmcgYSBjb25mdXNpbmcgbWVzcy5cblx0XG5cdCAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjc3BlY2lhbFxuXHQgIHZhciBzcGVjaWFsVGFn
cyA9IFsnYWRkcmVzcycsICdhcHBsZXQnLCAnYXJlYScsICdhcnRpY2xlJywgJ2FzaWRlJywgJ2Jh
c2UnLCAnYmFzZWZvbnQnLCAnYmdzb3VuZCcsICdibG9ja3F1b3RlJywgJ2JvZHknLCAnYnInLCAn
YnV0dG9uJywgJ2NhcHRpb24nLCAnY2VudGVyJywgJ2NvbCcsICdjb2xncm91cCcsICdkZCcsICdk
ZXRhaWxzJywgJ2RpcicsICdkaXYnLCAnZGwnLCAnZHQnLCAnZW1iZWQnLCAnZmllbGRzZXQnLCAn
ZmlnY2FwdGlvbicsICdmaWd1cmUnLCAnZm9vdGVyJywgJ2Zvcm0nLCAnZnJhbWUnLCAnZnJhbWVz
ZXQnLCAnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYnLCAnaGVhZCcsICdoZWFkZXIn
LCAnaGdyb3VwJywgJ2hyJywgJ2h0bWwnLCAnaWZyYW1lJywgJ2ltZycsICdpbnB1dCcsICdpc2lu
ZGV4JywgJ2xpJywgJ2xpbmsnLCAnbGlzdGluZycsICdtYWluJywgJ21hcnF1ZWUnLCAnbWVudScs
ICdtZW51aXRlbScsICdtZXRhJywgJ25hdicsICdub2VtYmVkJywgJ25vZnJhbWVzJywgJ25vc2Ny
aXB0JywgJ29iamVjdCcsICdvbCcsICdwJywgJ3BhcmFtJywgJ3BsYWludGV4dCcsICdwcmUnLCAn
c2NyaXB0JywgJ3NlY3Rpb24nLCAnc2VsZWN0JywgJ3NvdXJjZScsICdzdHlsZScsICdzdW1tYXJ5
JywgJ3RhYmxlJywgJ3Rib2R5JywgJ3RkJywgJ3RlbXBsYXRlJywgJ3RleHRhcmVhJywgJ3Rmb290
JywgJ3RoJywgJ3RoZWFkJywgJ3RpdGxlJywgJ3RyJywgJ3RyYWNrJywgJ3VsJywgJ3dicicsICd4
bXAnXTtcblx0XG5cdCAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
c3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4tc2NvcGVcblx0ICB2YXIgaW5TY29wZVRhZ3Mg
PSBbJ2FwcGxldCcsICdjYXB0aW9uJywgJ2h0bWwnLCAndGFibGUnLCAndGQnLCAndGgnLCAnbWFy
cXVlZScsICdvYmplY3QnLCAndGVtcGxhdGUnLFxuXHRcblx0ICAvLyBodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNodG1sLWludGVncmF0aW9uLXBvaW50
XG5cdCAgLy8gVE9ETzogRGlzdGluZ3Vpc2ggYnkgbmFtZXNwYWNlIGhlcmUgLS0gZm9yIDx0aXRs
ZT4sIGluY2x1ZGluZyBpdCBoZXJlXG5cdCAgLy8gZXJycyBvbiB0aGUgc2lkZSBvZiBmZXdlciB3
YXJuaW5nc1xuXHQgICdmb3JlaWduT2JqZWN0JywgJ2Rlc2MnLCAndGl0bGUnXTtcblx0XG5cdCAg
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaGFz
LWFuLWVsZW1lbnQtaW4tYnV0dG9uLXNjb3BlXG5cdCAgdmFyIGJ1dHRvblNjb3BlVGFncyA9IGlu
U2NvcGVUYWdzLmNvbmNhdChbJ2J1dHRvbiddKTtcblx0XG5cdCAgLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjZ2VuZXJhdGUtaW1wbGllZC1lbmQt
dGFnc1xuXHQgIHZhciBpbXBsaWVkRW5kVGFncyA9IFsnZGQnLCAnZHQnLCAnbGknLCAnb3B0aW9u
JywgJ29wdGdyb3VwJywgJ3AnLCAncnAnLCAncnQnXTtcblx0XG5cdCAgdmFyIGVtcHR5QW5jZXN0
b3JJbmZvID0ge1xuXHQgICAgY3VycmVudDogbnVsbCxcblx0XG5cdCAgICBmb3JtVGFnOiBudWxs
LFxuXHQgICAgYVRhZ0luU2NvcGU6IG51bGwsXG5cdCAgICBidXR0b25UYWdJblNjb3BlOiBudWxs
LFxuXHQgICAgbm9iclRhZ0luU2NvcGU6IG51bGwsXG5cdCAgICBwVGFnSW5CdXR0b25TY29wZTog
bnVsbCxcblx0XG5cdCAgICBsaXN0SXRlbVRhZ0F1dG9jbG9zaW5nOiBudWxsLFxuXHQgICAgZGxJ
dGVtVGFnQXV0b2Nsb3Npbmc6IG51bGxcblx0ICB9O1xuXHRcblx0ICB2YXIgdXBkYXRlZEFuY2Vz
dG9ySW5mbyA9IGZ1bmN0aW9uIChvbGRJbmZvLCB0YWcsIGluc3RhbmNlKSB7XG5cdCAgICB2YXIg
YW5jZXN0b3JJbmZvID0gX2Fzc2lnbih7fSwgb2xkSW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbyk7
XG5cdCAgICB2YXIgaW5mbyA9IHsgdGFnOiB0YWcsIGluc3RhbmNlOiBpbnN0YW5jZSB9O1xuXHRc
blx0ICAgIGlmIChpblNjb3BlVGFncy5pbmRleE9mKHRhZykgIT09IC0xKSB7XG5cdCAgICAgIGFu
Y2VzdG9ySW5mby5hVGFnSW5TY29wZSA9IG51bGw7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5idXR0
b25UYWdJblNjb3BlID0gbnVsbDtcblx0ICAgICAgYW5jZXN0b3JJbmZvLm5vYnJUYWdJblNjb3Bl
ID0gbnVsbDtcblx0ICAgIH1cblx0ICAgIGlmIChidXR0b25TY29wZVRhZ3MuaW5kZXhPZih0YWcp
ICE9PSAtMSkge1xuXHQgICAgICBhbmNlc3RvckluZm8ucFRhZ0luQnV0dG9uU2NvcGUgPSBudWxs
O1xuXHQgICAgfVxuXHRcblx0ICAgIC8vIFNlZSBydWxlcyBmb3IgJ2xpJywgJ2RkJywgJ2R0JyBz
dGFydCB0YWdzIGluXG5cdCAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5XG5cdCAgICBpZiAoc3BlY2lhbFRh
Z3MuaW5kZXhPZih0YWcpICE9PSAtMSAmJiB0YWcgIT09ICdhZGRyZXNzJyAmJiB0YWcgIT09ICdk
aXYnICYmIHRhZyAhPT0gJ3AnKSB7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5saXN0SXRlbVRhZ0F1
dG9jbG9zaW5nID0gbnVsbDtcblx0ICAgICAgYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9z
aW5nID0gbnVsbDtcblx0ICAgIH1cblx0XG5cdCAgICBhbmNlc3RvckluZm8uY3VycmVudCA9IGlu
Zm87XG5cdFxuXHQgICAgaWYgKHRhZyA9PT0gJ2Zvcm0nKSB7XG5cdCAgICAgIGFuY2VzdG9ySW5m
by5mb3JtVGFnID0gaW5mbztcblx0ICAgIH1cblx0ICAgIGlmICh0YWcgPT09ICdhJykge1xuXHQg
ICAgICBhbmNlc3RvckluZm8uYVRhZ0luU2NvcGUgPSBpbmZvO1xuXHQgICAgfVxuXHQgICAgaWYg
KHRhZyA9PT0gJ2J1dHRvbicpIHtcblx0ICAgICAgYW5jZXN0b3JJbmZvLmJ1dHRvblRhZ0luU2Nv
cGUgPSBpbmZvO1xuXHQgICAgfVxuXHQgICAgaWYgKHRhZyA9PT0gJ25vYnInKSB7XG5cdCAgICAg
IGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZSA9IGluZm87XG5cdCAgICB9XG5cdCAgICBpZiAo
dGFnID09PSAncCcpIHtcblx0ICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlID0g
aW5mbztcblx0ICAgIH1cblx0ICAgIGlmICh0YWcgPT09ICdsaScpIHtcblx0ICAgICAgYW5jZXN0
b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3NpbmcgPSBpbmZvO1xuXHQgICAgfVxuXHQgICAgaWYg
KHRhZyA9PT0gJ2RkJyB8fCB0YWcgPT09ICdkdCcpIHtcblx0ICAgICAgYW5jZXN0b3JJbmZvLmRs
SXRlbVRhZ0F1dG9jbG9zaW5nID0gaW5mbztcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gYW5j
ZXN0b3JJbmZvO1xuXHQgIH07XG5cdFxuXHQgIC8qKlxuXHQgICAqIFJldHVybnMgd2hldGhlclxu
XHQgICAqL1xuXHQgIHZhciBpc1RhZ1ZhbGlkV2l0aFBhcmVudCA9IGZ1bmN0aW9uICh0YWcsIHBh
cmVudFRhZykge1xuXHQgICAgLy8gRmlyc3QsIGxldCdzIGNoZWNrIGlmIHdlJ3JlIGluIGFuIHVu
dXN1YWwgcGFyc2luZyBtb2RlLi4uXG5cdCAgICBzd2l0Y2ggKHBhcmVudFRhZykge1xuXHQgICAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNw
YXJzaW5nLW1haW4taW5zZWxlY3Rcblx0ICAgICAgY2FzZSAnc2VsZWN0Jzpcblx0ICAgICAgICBy
ZXR1cm4gdGFnID09PSAnb3B0aW9uJyB8fCB0YWcgPT09ICdvcHRncm91cCcgfHwgdGFnID09PSAn
I3RleHQnO1xuXHQgICAgICBjYXNlICdvcHRncm91cCc6XG5cdCAgICAgICAgcmV0dXJuIHRhZyA9
PT0gJ29wdGlvbicgfHwgdGFnID09PSAnI3RleHQnO1xuXHQgICAgICAvLyBTdHJpY3RseSBzcGVh
a2luZywgc2VlaW5nIGFuIDxvcHRpb24+IGRvZXNuJ3QgbWVhbiB3ZSdyZSBpbiBhIDxzZWxlY3Q+
XG5cdCAgICAgIC8vIGJ1dFxuXHQgICAgICBjYXNlICdvcHRpb24nOlxuXHQgICAgICAgIHJldHVy
biB0YWcgPT09ICcjdGV4dCc7XG5cdCAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRkXG5cdCAgICAgIC8vIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmct
bWFpbi1pbmNhcHRpb25cblx0ICAgICAgLy8gTm8gc3BlY2lhbCBiZWhhdmlvciBzaW5jZSB0aGVz
ZSBydWxlcyBmYWxsIGJhY2sgdG8gXCJpbiBib2R5XCIgbW9kZSBmb3Jcblx0ICAgICAgLy8gYWxs
IGV4Y2VwdCBzcGVjaWFsIHRhYmxlIG5vZGVzIHdoaWNoIGNhdXNlIGJhZCBwYXJzaW5nIGJlaGF2
aW9yIGFueXdheS5cblx0XG5cdCAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRyXG5cdCAgICAgIGNhc2UgJ3Ry
Jzpcblx0ICAgICAgICByZXR1cm4gdGFnID09PSAndGgnIHx8IHRhZyA9PT0gJ3RkJyB8fCB0YWcg
PT09ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG5c
dCAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5o
dG1sI3BhcnNpbmctbWFpbi1pbnRib2R5XG5cdCAgICAgIGNhc2UgJ3Rib2R5Jzpcblx0ICAgICAg
Y2FzZSAndGhlYWQnOlxuXHQgICAgICBjYXNlICd0Zm9vdCc6XG5cdCAgICAgICAgcmV0dXJuIHRh
ZyA9PT0gJ3RyJyB8fCB0YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcg
PT09ICd0ZW1wbGF0ZSc7XG5cdCAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmNvbGdyb3VwXG5cdCAgICAgIGNh
c2UgJ2NvbGdyb3VwJzpcblx0ICAgICAgICByZXR1cm4gdGFnID09PSAnY29sJyB8fCB0YWcgPT09
ICd0ZW1wbGF0ZSc7XG5cdCAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRhYmxlXG5cdCAgICAgIGNhc2UgJ3Rh
YmxlJzpcblx0ICAgICAgICByZXR1cm4gdGFnID09PSAnY2FwdGlvbicgfHwgdGFnID09PSAnY29s
Z3JvdXAnIHx8IHRhZyA9PT0gJ3Rib2R5JyB8fCB0YWcgPT09ICd0Zm9vdCcgfHwgdGFnID09PSAn
dGhlYWQnIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0g
J3RlbXBsYXRlJztcblx0ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluaGVhZFxuXHQgICAgICBjYXNlICdoZWFk
Jzpcblx0ICAgICAgICByZXR1cm4gdGFnID09PSAnYmFzZScgfHwgdGFnID09PSAnYmFzZWZvbnQn
IHx8IHRhZyA9PT0gJ2Jnc291bmQnIHx8IHRhZyA9PT0gJ2xpbmsnIHx8IHRhZyA9PT0gJ21ldGEn
IHx8IHRhZyA9PT0gJ3RpdGxlJyB8fCB0YWcgPT09ICdub3NjcmlwdCcgfHwgdGFnID09PSAnbm9m
cmFtZXMnIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0g
J3RlbXBsYXRlJztcblx0ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvc2VtYW50aWNzLmh0bWwjdGhlLWh0bWwtZWxlbWVudFxuXHQgICAgICBjYXNlICdodG1s
Jzpcblx0ICAgICAgICByZXR1cm4gdGFnID09PSAnaGVhZCcgfHwgdGFnID09PSAnYm9keSc7XG5c
dCAgICAgIGNhc2UgJyNkb2N1bWVudCc6XG5cdCAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2h0bWwn
O1xuXHQgICAgfVxuXHRcblx0ICAgIC8vIFByb2JhYmx5IGluIHRoZSBcImluIGJvZHlcIiBwYXJz
aW5nIG1vZGUsIHNvIHdlIG91dGxhdyBvbmx5IHRhZyBjb21ib3Ncblx0ICAgIC8vIHdoZXJlIHRo
ZSBwYXJzaW5nIHJ1bGVzIGNhdXNlIGltcGxpY2l0IG9wZW5zIG9yIGNsb3NlcyB0byBiZSBhZGRl
ZC5cblx0ICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRh
eC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHlcblx0ICAgIHN3aXRjaCAodGFnKSB7XG5cdCAgICAg
IGNhc2UgJ2gxJzpcblx0ICAgICAgY2FzZSAnaDInOlxuXHQgICAgICBjYXNlICdoMyc6XG5cdCAg
ICAgIGNhc2UgJ2g0Jzpcblx0ICAgICAgY2FzZSAnaDUnOlxuXHQgICAgICBjYXNlICdoNic6XG5c
dCAgICAgICAgcmV0dXJuIHBhcmVudFRhZyAhPT0gJ2gxJyAmJiBwYXJlbnRUYWcgIT09ICdoMicg
JiYgcGFyZW50VGFnICE9PSAnaDMnICYmIHBhcmVudFRhZyAhPT0gJ2g0JyAmJiBwYXJlbnRUYWcg
IT09ICdoNScgJiYgcGFyZW50VGFnICE9PSAnaDYnO1xuXHRcblx0ICAgICAgY2FzZSAncnAnOlxu
XHQgICAgICBjYXNlICdydCc6XG5cdCAgICAgICAgcmV0dXJuIGltcGxpZWRFbmRUYWdzLmluZGV4
T2YocGFyZW50VGFnKSA9PT0gLTE7XG5cdFxuXHQgICAgICBjYXNlICdib2R5Jzpcblx0ICAgICAg
Y2FzZSAnY2FwdGlvbic6XG5cdCAgICAgIGNhc2UgJ2NvbCc6XG5cdCAgICAgIGNhc2UgJ2NvbGdy
b3VwJzpcblx0ICAgICAgY2FzZSAnZnJhbWUnOlxuXHQgICAgICBjYXNlICdoZWFkJzpcblx0ICAg
ICAgY2FzZSAnaHRtbCc6XG5cdCAgICAgIGNhc2UgJ3Rib2R5Jzpcblx0ICAgICAgY2FzZSAndGQn
OlxuXHQgICAgICBjYXNlICd0Zm9vdCc6XG5cdCAgICAgIGNhc2UgJ3RoJzpcblx0ICAgICAgY2Fz
ZSAndGhlYWQnOlxuXHQgICAgICBjYXNlICd0cic6XG5cdCAgICAgICAgLy8gVGhlc2UgdGFncyBh
cmUgb25seSB2YWxpZCB3aXRoIGEgZmV3IHBhcmVudHMgdGhhdCBoYXZlIHNwZWNpYWwgY2hpbGRc
blx0ICAgICAgICAvLyBwYXJzaW5nIHJ1bGVzIC0tIGlmIHdlJ3JlIGRvd24gaGVyZSwgdGhlbiBu
b25lIG9mIHRob3NlIG1hdGNoZWQgYW5kXG5cdCAgICAgICAgLy8gc28gd2UgYWxsb3cgaXQgb25s
eSBpZiB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHBhcmVudCBpcywgYXMgYWxsIG90aGVyXG5cdCAg
ICAgICAgLy8gY2FzZXMgYXJlIGludmFsaWQuXG5cdCAgICAgICAgcmV0dXJuIHBhcmVudFRhZyA9
PSBudWxsO1xuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiB0cnVlO1xuXHQgIH07XG5cdFxuXHQg
IC8qKlxuXHQgICAqIFJldHVybnMgd2hldGhlclxuXHQgICAqL1xuXHQgIHZhciBmaW5kSW52YWxp
ZEFuY2VzdG9yRm9yVGFnID0gZnVuY3Rpb24gKHRhZywgYW5jZXN0b3JJbmZvKSB7XG5cdCAgICBz
d2l0Y2ggKHRhZykge1xuXHQgICAgICBjYXNlICdhZGRyZXNzJzpcblx0ICAgICAgY2FzZSAnYXJ0
aWNsZSc6XG5cdCAgICAgIGNhc2UgJ2FzaWRlJzpcblx0ICAgICAgY2FzZSAnYmxvY2txdW90ZSc6
XG5cdCAgICAgIGNhc2UgJ2NlbnRlcic6XG5cdCAgICAgIGNhc2UgJ2RldGFpbHMnOlxuXHQgICAg
ICBjYXNlICdkaWFsb2cnOlxuXHQgICAgICBjYXNlICdkaXInOlxuXHQgICAgICBjYXNlICdkaXYn
OlxuXHQgICAgICBjYXNlICdkbCc6XG5cdCAgICAgIGNhc2UgJ2ZpZWxkc2V0Jzpcblx0ICAgICAg
Y2FzZSAnZmlnY2FwdGlvbic6XG5cdCAgICAgIGNhc2UgJ2ZpZ3VyZSc6XG5cdCAgICAgIGNhc2Ug
J2Zvb3Rlcic6XG5cdCAgICAgIGNhc2UgJ2hlYWRlcic6XG5cdCAgICAgIGNhc2UgJ2hncm91cCc6
XG5cdCAgICAgIGNhc2UgJ21haW4nOlxuXHQgICAgICBjYXNlICdtZW51Jzpcblx0ICAgICAgY2Fz
ZSAnbmF2Jzpcblx0ICAgICAgY2FzZSAnb2wnOlxuXHQgICAgICBjYXNlICdwJzpcblx0ICAgICAg
Y2FzZSAnc2VjdGlvbic6XG5cdCAgICAgIGNhc2UgJ3N1bW1hcnknOlxuXHQgICAgICBjYXNlICd1
bCc6XG5cdCAgICAgIGNhc2UgJ3ByZSc6XG5cdCAgICAgIGNhc2UgJ2xpc3RpbmcnOlxuXHQgICAg
ICBjYXNlICd0YWJsZSc6XG5cdCAgICAgIGNhc2UgJ2hyJzpcblx0ICAgICAgY2FzZSAneG1wJzpc
blx0ICAgICAgY2FzZSAnaDEnOlxuXHQgICAgICBjYXNlICdoMic6XG5cdCAgICAgIGNhc2UgJ2gz
Jzpcblx0ICAgICAgY2FzZSAnaDQnOlxuXHQgICAgICBjYXNlICdoNSc6XG5cdCAgICAgIGNhc2Ug
J2g2Jzpcblx0ICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlO1xu
XHRcblx0ICAgICAgY2FzZSAnZm9ybSc6XG5cdCAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5m
b3JtVGFnIHx8IGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZTtcblx0XG5cdCAgICAgIGNh
c2UgJ2xpJzpcblx0ICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Ns
b3Npbmc7XG5cdFxuXHQgICAgICBjYXNlICdkZCc6XG5cdCAgICAgIGNhc2UgJ2R0Jzpcblx0ICAg
ICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5nO1xuXHRcblx0ICAg
ICAgY2FzZSAnYnV0dG9uJzpcblx0ICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmJ1dHRvblRh
Z0luU2NvcGU7XG5cdFxuXHQgICAgICBjYXNlICdhJzpcblx0ICAgICAgICAvLyBTcGVjIHNheXMg
c29tZXRoaW5nIGFib3V0IHN0b3JpbmcgYSBsaXN0IG9mIG1hcmtlcnMsIGJ1dCBpdCBzb3VuZHNc
blx0ICAgICAgICAvLyBlcXVpdmFsZW50IHRvIHRoaXMgY2hlY2suXG5cdCAgICAgICAgcmV0dXJu
IGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZTtcblx0XG5cdCAgICAgIGNhc2UgJ25vYnInOlxuXHQg
ICAgICAgIHJldHVybiBhbmNlc3RvckluZm8ubm9iclRhZ0luU2NvcGU7XG5cdCAgICB9XG5cdFxu
XHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICogR2l2ZW4gYSBS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudCBpbnN0YW5jZSwgcmV0dXJuIGEgbGlzdCBvZiBpdHMgcmVj
dXJzaXZlXG5cdCAgICogb3duZXJzLCBzdGFydGluZyBhdCB0aGUgcm9vdCBhbmQgZW5kaW5nIHdp
dGggdGhlIGluc3RhbmNlIGl0c2VsZi5cblx0ICAgKi9cblx0ICB2YXIgZmluZE93bmVyU3RhY2sg
PSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcblx0ICAgIGlmICghaW5zdGFuY2UpIHtcblx0ICAgICAg
cmV0dXJuIFtdO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBzdGFjayA9IFtdO1xuXHQgICAgZG8g
e1xuXHQgICAgICBzdGFjay5wdXNoKGluc3RhbmNlKTtcblx0ICAgIH0gd2hpbGUgKGluc3RhbmNl
ID0gaW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7XG5cdCAgICBzdGFjay5yZXZlcnNl
KCk7XG5cdCAgICByZXR1cm4gc3RhY2s7XG5cdCAgfTtcblx0XG5cdCAgdmFyIGRpZFdhcm4gPSB7
fTtcblx0XG5cdCAgdmFsaWRhdGVET01OZXN0aW5nID0gZnVuY3Rpb24gKGNoaWxkVGFnLCBjaGls
ZFRleHQsIGNoaWxkSW5zdGFuY2UsIGFuY2VzdG9ySW5mbykge1xuXHQgICAgYW5jZXN0b3JJbmZv
ID0gYW5jZXN0b3JJbmZvIHx8IGVtcHR5QW5jZXN0b3JJbmZvO1xuXHQgICAgdmFyIHBhcmVudElu
Zm8gPSBhbmNlc3RvckluZm8uY3VycmVudDtcblx0ICAgIHZhciBwYXJlbnRUYWcgPSBwYXJlbnRJ
bmZvICYmIHBhcmVudEluZm8udGFnO1xuXHRcblx0ICAgIGlmIChjaGlsZFRleHQgIT0gbnVsbCkg
e1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhjaGlsZFRhZyA9PSBudWxsLCAndmFsaWRhdGVET01OZXN0aW5nOiB3aGVuIGNoaWxkVGV4dCBp
cyBwYXNzZWQsIGNoaWxkVGFnIHNob3VsZCBiZSBudWxsJykgOiB2b2lkIDA7XG5cdCAgICAgIGNo
aWxkVGFnID0gJyN0ZXh0Jztcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgaW52YWxpZFBhcmVudCA9
IGlzVGFnVmFsaWRXaXRoUGFyZW50KGNoaWxkVGFnLCBwYXJlbnRUYWcpID8gbnVsbCA6IHBhcmVu
dEluZm87XG5cdCAgICB2YXIgaW52YWxpZEFuY2VzdG9yID0gaW52YWxpZFBhcmVudCA/IG51bGwg
OiBmaW5kSW52YWxpZEFuY2VzdG9yRm9yVGFnKGNoaWxkVGFnLCBhbmNlc3RvckluZm8pO1xuXHQg
ICAgdmFyIHByb2JsZW1hdGljID0gaW52YWxpZFBhcmVudCB8fCBpbnZhbGlkQW5jZXN0b3I7XG5c
dFxuXHQgICAgaWYgKHByb2JsZW1hdGljKSB7XG5cdCAgICAgIHZhciBhbmNlc3RvclRhZyA9IHBy
b2JsZW1hdGljLnRhZztcblx0ICAgICAgdmFyIGFuY2VzdG9ySW5zdGFuY2UgPSBwcm9ibGVtYXRp
Yy5pbnN0YW5jZTtcblx0XG5cdCAgICAgIHZhciBjaGlsZE93bmVyID0gY2hpbGRJbnN0YW5jZSAm
JiBjaGlsZEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cdCAgICAgIHZhciBhbmNl
c3Rvck93bmVyID0gYW5jZXN0b3JJbnN0YW5jZSAmJiBhbmNlc3Rvckluc3RhbmNlLl9jdXJyZW50
RWxlbWVudC5fb3duZXI7XG5cdFxuXHQgICAgICB2YXIgY2hpbGRPd25lcnMgPSBmaW5kT3duZXJT
dGFjayhjaGlsZE93bmVyKTtcblx0ICAgICAgdmFyIGFuY2VzdG9yT3duZXJzID0gZmluZE93bmVy
U3RhY2soYW5jZXN0b3JPd25lcik7XG5cdFxuXHQgICAgICB2YXIgbWluU3RhY2tMZW4gPSBNYXRo
Lm1pbihjaGlsZE93bmVycy5sZW5ndGgsIGFuY2VzdG9yT3duZXJzLmxlbmd0aCk7XG5cdCAgICAg
IHZhciBpO1xuXHRcblx0ICAgICAgdmFyIGRlZXBlc3RDb21tb24gPSAtMTtcblx0ICAgICAgZm9y
IChpID0gMDsgaSA8IG1pblN0YWNrTGVuOyBpKyspIHtcblx0ICAgICAgICBpZiAoY2hpbGRPd25l
cnNbaV0gPT09IGFuY2VzdG9yT3duZXJzW2ldKSB7XG5cdCAgICAgICAgICBkZWVwZXN0Q29tbW9u
ID0gaTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAg
fVxuXHQgICAgICB9XG5cdFxuXHQgICAgICB2YXIgVU5LTk9XTiA9ICcodW5rbm93biknO1xuXHQg
ICAgICB2YXIgY2hpbGRPd25lck5hbWVzID0gY2hpbGRPd25lcnMuc2xpY2UoZGVlcGVzdENvbW1v
biArIDEpLm1hcChmdW5jdGlvbiAoaW5zdCkge1xuXHQgICAgICAgIHJldHVybiBpbnN0LmdldE5h
bWUoKSB8fCBVTktOT1dOO1xuXHQgICAgICB9KTtcblx0ICAgICAgdmFyIGFuY2VzdG9yT3duZXJO
YW1lcyA9IGFuY2VzdG9yT3duZXJzLnNsaWNlKGRlZXBlc3RDb21tb24gKyAxKS5tYXAoZnVuY3Rp
b24gKGluc3QpIHtcblx0ICAgICAgICByZXR1cm4gaW5zdC5nZXROYW1lKCkgfHwgVU5LTk9XTjtc
blx0ICAgICAgfSk7XG5cdCAgICAgIHZhciBvd25lckluZm8gPSBbXS5jb25jYXQoXG5cdCAgICAg
IC8vIElmIHRoZSBwYXJlbnQgYW5kIGNoaWxkIGluc3RhbmNlcyBoYXZlIGEgY29tbW9uIG93bmVy
IGFuY2VzdG9yLCBzdGFydFxuXHQgICAgICAvLyB3aXRoIHRoYXQgLS0gb3RoZXJ3aXNlIHdlIGp1
c3Qgc3RhcnQgd2l0aCB0aGUgcGFyZW50J3Mgb3duZXJzLlxuXHQgICAgICBkZWVwZXN0Q29tbW9u
ICE9PSAtMSA/IGNoaWxkT3duZXJzW2RlZXBlc3RDb21tb25dLmdldE5hbWUoKSB8fCBVTktOT1dO
IDogW10sIGFuY2VzdG9yT3duZXJOYW1lcywgYW5jZXN0b3JUYWcsXG5cdCAgICAgIC8vIElmIHdl
J3JlIHdhcm5pbmcgYWJvdXQgYW4gaW52YWxpZCAobm9uLXBhcmVudCkgYW5jZXN0cnksIGFkZCAn
Li4uJ1xuXHQgICAgICBpbnZhbGlkQW5jZXN0b3IgPyBbJy4uLiddIDogW10sIGNoaWxkT3duZXJO
YW1lcywgY2hpbGRUYWcpLmpvaW4oJyA+ICcpO1xuXHRcblx0ICAgICAgdmFyIHdhcm5LZXkgPSAh
IWludmFsaWRQYXJlbnQgKyAnfCcgKyBjaGlsZFRhZyArICd8JyArIGFuY2VzdG9yVGFnICsgJ3wn
ICsgb3duZXJJbmZvO1xuXHQgICAgICBpZiAoZGlkV2Fyblt3YXJuS2V5XSkge1xuXHQgICAgICAg
IHJldHVybjtcblx0ICAgICAgfVxuXHQgICAgICBkaWRXYXJuW3dhcm5LZXldID0gdHJ1ZTtcblx0
XG5cdCAgICAgIHZhciB0YWdEaXNwbGF5TmFtZSA9IGNoaWxkVGFnO1xuXHQgICAgICB2YXIgd2hp
dGVzcGFjZUluZm8gPSAnJztcblx0ICAgICAgaWYgKGNoaWxkVGFnID09PSAnI3RleHQnKSB7XG5c
dCAgICAgICAgaWYgKC9cXFMvLnRlc3QoY2hpbGRUZXh0KSkge1xuXHQgICAgICAgICAgdGFnRGlz
cGxheU5hbWUgPSAnVGV4dCBub2Rlcyc7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAg
IHRhZ0Rpc3BsYXlOYW1lID0gJ1doaXRlc3BhY2UgdGV4dCBub2Rlcyc7XG5cdCAgICAgICAgICB3
aGl0ZXNwYWNlSW5mbyA9IFwiIE1ha2Ugc3VyZSB5b3UgZG9uJ3QgaGF2ZSBhbnkgZXh0cmEgd2hp
dGVzcGFjZSBiZXR3ZWVuIHRhZ3Mgb24gXCIgKyAnZWFjaCBsaW5lIG9mIHlvdXIgc291cmNlIGNv
ZGUuJztcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdGFnRGlzcGxh
eU5hbWUgPSAnPCcgKyBjaGlsZFRhZyArICc+Jztcblx0ICAgICAgfVxuXHRcblx0ICAgICAgaWYg
KGludmFsaWRQYXJlbnQpIHtcblx0ICAgICAgICB2YXIgaW5mbyA9ICcnO1xuXHQgICAgICAgIGlm
IChhbmNlc3RvclRhZyA9PT0gJ3RhYmxlJyAmJiBjaGlsZFRhZyA9PT0gJ3RyJykge1xuXHQgICAg
ICAgICAgaW5mbyArPSAnIEFkZCBhIDx0Ym9keT4gdG8geW91ciBjb2RlIHRvIG1hdGNoIHRoZSBE
T00gdHJlZSBnZW5lcmF0ZWQgYnkgJyArICd0aGUgYnJvd3Nlci4nO1xuXHQgICAgICAgIH1cblx0
ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhm
YWxzZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4pOiAlcyBjYW5ub3QgYXBwZWFyIGFzIGEgY2hp
bGQgb2YgPCVzPi4lcyAnICsgJ1NlZSAlcy4lcycsIHRhZ0Rpc3BsYXlOYW1lLCBhbmNlc3RvclRh
Zywgd2hpdGVzcGFjZUluZm8sIG93bmVySW5mbywgaW5mbykgOiB2b2lkIDA7XG5cdCAgICAgIH0g
ZWxzZSB7XG5cdCAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsICd2YWxpZGF0ZURPTU5lc3RpbmcoLi4uKTogJXMgY2Fubm90IGFwcGVh
ciBhcyBhIGRlc2NlbmRhbnQgb2YgJyArICc8JXM+LiBTZWUgJXMuJywgdGFnRGlzcGxheU5hbWUs
IGFuY2VzdG9yVGFnLCBvd25lckluZm8pIDogdm9pZCAwO1xuXHQgICAgICB9XG5cdCAgICB9XG5c
dCAgfTtcblx0XG5cdCAgdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8gPSB1
cGRhdGVkQW5jZXN0b3JJbmZvO1xuXHRcblx0ICAvLyBGb3IgdGVzdGluZ1xuXHQgIHZhbGlkYXRl
RE9NTmVzdGluZy5pc1RhZ1ZhbGlkSW5Db250ZXh0ID0gZnVuY3Rpb24gKHRhZywgYW5jZXN0b3JJ
bmZvKSB7XG5cdCAgICBhbmNlc3RvckluZm8gPSBhbmNlc3RvckluZm8gfHwgZW1wdHlBbmNlc3Rv
ckluZm87XG5cdCAgICB2YXIgcGFyZW50SW5mbyA9IGFuY2VzdG9ySW5mby5jdXJyZW50O1xuXHQg
ICAgdmFyIHBhcmVudFRhZyA9IHBhcmVudEluZm8gJiYgcGFyZW50SW5mby50YWc7XG5cdCAgICBy
ZXR1cm4gaXNUYWdWYWxpZFdpdGhQYXJlbnQodGFnLCBwYXJlbnRUYWcpICYmICFmaW5kSW52YWxp
ZEFuY2VzdG9yRm9yVGFnKHRhZywgYW5jZXN0b3JJbmZvKTtcblx0ICB9O1xuXHR9XG5cdFxuXHRt
b2R1bGUuZXhwb3J0cyA9IHZhbGlkYXRlRE9NTmVzdGluZztcblxuLyoqKi8gfSxcbi8qIDUwICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLmRlZmF1bHQgPSB3YXJu
aW5nO1xuXHQvKipcblx0ICogUHJpbnRzIGEgd2FybmluZyBpbiB0aGUgY29uc29sZSBpZiBpdCBl
eGlzdHMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIFRoZSB3YXJuaW5nIG1l
c3NhZ2UuXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0ZnVuY3Rpb24gd2FybmluZyht
ZXNzYWdlKSB7XG5cdCAgLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuXHQgIGlmICh0
eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09
ICdmdW5jdGlvbicpIHtcblx0ICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG5cdCAgfVxuXHQg
IC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqL1xuXHQgIHRyeSB7XG5cdCAgICAvLyBUaGlz
IGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IGlmIHlvdSBlbmFibGVc
blx0ICAgIC8vIFwiYnJlYWsgb24gYWxsIGV4Y2VwdGlvbnNcIiBpbiB5b3VyIGNvbnNvbGUsXG5c
dCAgICAvLyBpdCB3b3VsZCBwYXVzZSB0aGUgZXhlY3V0aW9uIGF0IHRoaXMgbGluZS5cblx0ICAg
IHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcblx0ICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWVt
cHR5ICovXG5cdCAgfSBjYXRjaCAoZSkge31cblx0ICAvKiBlc2xpbnQtZW5hYmxlIG5vLWVtcHR5
ICovXG5cdH1cblxuLyoqKi8gfSxcbi8qIDUxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQv
Kipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIEB0eXBlY2hl
Y2tzXG5cdCAqL1xuXHRcblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDcpO1xuXHRcblx0LyoqXG5cdCAqIFVwc3RyZWFtIHZlcnNpb24gb2YgZXZlbnQgbGlzdGVuZXIu
IERvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHNwZWNpZmljXG5cdCAqIG5hdHVyZSBvZiBwbGF0
Zm9ybS5cblx0ICovXG5cdHZhciBFdmVudExpc3RlbmVyID0ge1xuXHQgIC8qKlxuXHQgICAqIExp
c3RlbiB0byBET00gZXZlbnRzIGR1cmluZyB0aGUgYnViYmxlIHBoYXNlLlxuXHQgICAqXG5cdCAg
ICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gdGFyZ2V0IERPTSBlbGVtZW50IHRvIHJlZ2lzdGVy
IGxpc3RlbmVyIG9uLlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFR5cGUgRXZlbnQgdHlw
ZSwgZS5nLiAnY2xpY2snIG9yICdtb3VzZW92ZXInLlxuXHQgICAqIEBwYXJhbSB7ZnVuY3Rpb259
IGNhbGxiYWNrIENhbGxiYWNrIGZ1bmN0aW9uLlxuXHQgICAqIEByZXR1cm4ge29iamVjdH0gT2Jq
ZWN0IHdpdGggYSBgcmVtb3ZlYCBtZXRob2QuXG5cdCAgICovXG5cdCAgbGlzdGVuOiBmdW5jdGlv
biBsaXN0ZW4odGFyZ2V0LCBldmVudFR5cGUsIGNhbGxiYWNrKSB7XG5cdCAgICBpZiAodGFyZ2V0
LmFkZEV2ZW50TGlzdGVuZXIpIHtcblx0ICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnRUeXBlLCBjYWxsYmFjaywgZmFsc2UpO1xuXHQgICAgICByZXR1cm4ge1xuXHQgICAgICAgIHJl
bW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuXHQgICAgICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50
TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgZmFsc2UpO1xuXHQgICAgICAgIH1cblx0ICAg
ICAgfTtcblx0ICAgIH0gZWxzZSBpZiAodGFyZ2V0LmF0dGFjaEV2ZW50KSB7XG5cdCAgICAgIHRh
cmdldC5hdHRhY2hFdmVudCgnb24nICsgZXZlbnRUeXBlLCBjYWxsYmFjayk7XG5cdCAgICAgIHJl
dHVybiB7XG5cdCAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG5cdCAgICAgICAg
ICB0YXJnZXQuZGV0YWNoRXZlbnQoJ29uJyArIGV2ZW50VHlwZSwgY2FsbGJhY2spO1xuXHQgICAg
ICAgIH1cblx0ICAgICAgfTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBM
aXN0ZW4gdG8gRE9NIGV2ZW50cyBkdXJpbmcgdGhlIGNhcHR1cmUgcGhhc2UuXG5cdCAgICpcblx0
ICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0YXJnZXQgRE9NIGVsZW1lbnQgdG8gcmVnaXN0
ZXIgbGlzdGVuZXIgb24uXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VHlwZSBFdmVudCB0
eXBlLCBlLmcuICdjbGljaycgb3IgJ21vdXNlb3ZlcicuXG5cdCAgICogQHBhcmFtIHtmdW5jdGlv
bn0gY2FsbGJhY2sgQ2FsbGJhY2sgZnVuY3Rpb24uXG5cdCAgICogQHJldHVybiB7b2JqZWN0fSBP
YmplY3Qgd2l0aCBhIGByZW1vdmVgIG1ldGhvZC5cblx0ICAgKi9cblx0ICBjYXB0dXJlOiBmdW5j
dGlvbiBjYXB0dXJlKHRhcmdldCwgZXZlbnRUeXBlLCBjYWxsYmFjaykge1xuXHQgICAgaWYgKHRh
cmdldC5hZGRFdmVudExpc3RlbmVyKSB7XG5cdCAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgY2FsbGJhY2ssIHRydWUpO1xuXHQgICAgICByZXR1cm4ge1xuXHQgICAgICAg
IHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuXHQgICAgICAgICAgdGFyZ2V0LnJlbW92ZUV2
ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgdHJ1ZSk7XG5cdCAgICAgICAgfVxuXHQg
ICAgICB9O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAg
Y29uc29sZS5lcnJvcignQXR0ZW1wdGVkIHRvIGxpc3RlbiB0byBldmVudHMgZHVyaW5nIHRoZSBj
YXB0dXJlIHBoYXNlIG9uIGEgJyArICdicm93c2VyIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUg
Y2FwdHVyZSBwaGFzZS4gWW91ciBhcHBsaWNhdGlvbiAnICsgJ3dpbGwgbm90IHJlY2VpdmUgc29t
ZSBldmVudHMuJyk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHtcblx0ICAgICAgICByZW1v
dmU6IGVtcHR5RnVuY3Rpb25cblx0ICAgICAgfTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBy
ZWdpc3RlckRlZmF1bHQ6IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdCgpIHt9XG5cdH07XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IEV2ZW50TGlzdGVuZXI7XG5cbi8qKiovIH0sXG4vKiA1MiAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdo
dCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5c
dCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdC8qKlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUgaW5wdXQvdGV4dGFyZWEgdG8g
Zm9jdXNcblx0ICovXG5cdFxuXHRmdW5jdGlvbiBmb2N1c05vZGUobm9kZSkge1xuXHQgIC8vIElF
OCBjYW4gdGhyb3cgXCJDYW4ndCBtb3ZlIGZvY3VzIHRvIHRoZSBjb250cm9sIGJlY2F1c2UgaXQg
aXMgaW52aXNpYmxlLFxuXHQgIC8vIG5vdCBlbmFibGVkLCBvciBvZiBhIHR5cGUgdGhhdCBkb2Vz
IG5vdCBhY2NlcHQgdGhlIGZvY3VzLlwiIGZvciBhbGwga2luZHMgb2Zcblx0ICAvLyByZWFzb25z
IHRoYXQgYXJlIHRvbyBleHBlbnNpdmUgYW5kIGZyYWdpbGUgdG8gdGVzdC5cblx0ICB0cnkge1xu
XHQgICAgbm9kZS5mb2N1cygpO1xuXHQgIH0gY2F0Y2ggKGUpIHt9XG5cdH1cblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gZm9jdXNOb2RlO1xuXG4vKioqLyB9LFxuLyogNTMgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogQHR5cGVjaGVja3Ncblx0
ICovXG5cdFxuXHQvKiBlc2xpbnQtZGlzYWJsZSBmYi13d3cvdHlwZW9mLXVuZGVmaW5lZCAqL1xu
XHRcblx0LyoqXG5cdCAqIFNhbWUgYXMgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBidXQgd3JhcHMg
aW4gYSB0cnktY2F0Y2ggYmxvY2suIEluIElFIGl0IGlzXG5cdCAqIG5vdCBzYWZlIHRvIGNhbGwg
ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpZiB0aGVyZSBpcyBub3RoaW5nIGZvY3VzZWQuXG5cdCAq
XG5cdCAqIFRoZSBhY3RpdmVFbGVtZW50IHdpbGwgYmUgbnVsbCBvbmx5IGlmIHRoZSBkb2N1bWVu
dCBvciBkb2N1bWVudCBib2R5IGlzIG5vdFxuXHQgKiB5ZXQgZGVmaW5lZC5cblx0ICpcblx0ICog
QHBhcmFtIHs/RE9NRG9jdW1lbnR9IGRvYyBEZWZhdWx0cyB0byBjdXJyZW50IGRvY3VtZW50Llxu
XHQgKiBAcmV0dXJuIHs/RE9NRWxlbWVudH1cblx0ICovXG5cdGZ1bmN0aW9uIGdldEFjdGl2ZUVs
ZW1lbnQoZG9jKSAvKj9ET01FbGVtZW50Ki97XG5cdCAgZG9jID0gZG9jIHx8ICh0eXBlb2YgZG9j
dW1lbnQgIT09ICd1bmRlZmluZWQnID8gZG9jdW1lbnQgOiB1bmRlZmluZWQpO1xuXHQgIGlmICh0
eXBlb2YgZG9jID09PSAndW5kZWZpbmVkJykge1xuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfVxu
XHQgIHRyeSB7XG5cdCAgICByZXR1cm4gZG9jLmFjdGl2ZUVsZW1lbnQgfHwgZG9jLmJvZHk7XG5c
dCAgfSBjYXRjaCAoZSkge1xuXHQgICAgcmV0dXJuIGRvYy5ib2R5O1xuXHQgIH1cblx0fVxuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBnZXRBY3RpdmVFbGVtZW50O1xuXG4vKioqLyB9LFxuLyogNTQg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdHZhciByb290ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTgpO1xuXHRcblx0LyoqIEJ1
aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG5cdHZhciBTeW1ib2wgPSByb290LlN5bWJvbDtc
blx0XG5cdG1vZHVsZS5leHBvcnRzID0gU3ltYm9sO1xuXG5cbi8qKiovIH0sXG4vKiA1NSAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqL1xuXHRcblx0J3VzZSBz
dHJpY3QnO1xuXHRcblx0Ly8gUmVhY3QgMTUuNSByZWZlcmVuY2VzIHRoaXMgbW9kdWxlLCBhbmQg
YXNzdW1lcyBQcm9wVHlwZXMgYXJlIHN0aWxsIGNhbGxhYmxlIGluIHByb2R1Y3Rpb24uXG5cdC8v
IFRoZXJlZm9yZSB3ZSByZS1leHBvcnQgZGV2ZWxvcG1lbnQtb25seSB2ZXJzaW9uIHdpdGggYWxs
IHRoZSBQcm9wVHlwZXMgY2hlY2tzIGhlcmUuXG5cdC8vIEhvd2V2ZXIgaWYgb25lIGlzIG1pZ3Jh
dGluZyB0byB0aGUgYHByb3AtdHlwZXNgIG5wbSBsaWJyYXJ5LCB0aGV5IHdpbGwgZ28gdGhyb3Vn
aCB0aGVcblx0Ly8gYGluZGV4LmpzYCBlbnRyeSBwb2ludCwgYW5kIGl0IHdpbGwgYnJhbmNoIGRl
cGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnQuXG5cdHZhciBmYWN0b3J5ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxMjIpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGlzVmFsaWRFbGVtZW50
KSB7XG5cdCAgLy8gSXQgaXMgc3RpbGwgYWxsb3dlZCBpbiAxNS41LlxuXHQgIHZhciB0aHJvd09u
RGlyZWN0QWNjZXNzID0gZmFsc2U7XG5cdCAgcmV0dXJuIGZhY3RvcnkoaXNWYWxpZEVsZW1lbnQs
IHRocm93T25EaXJlY3RBY2Nlc3MpO1xuXHR9O1xuXG5cbi8qKiovIH0sXG4vKiA1NiAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqL1xuXHRcblx0aWYgKGZhbHNl
KSB7XG5cdCAgdmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9ICh0eXBlb2YgU3ltYm9sID09PSAnZnVu
Y3Rpb24nICYmXG5cdCAgICBTeW1ib2wuZm9yICYmXG5cdCAgICBTeW1ib2wuZm9yKCdyZWFjdC5l
bGVtZW50JykpIHx8XG5cdCAgICAweGVhYzc7XG5cdFxuXHQgIHZhciBpc1ZhbGlkRWxlbWVudCA9
IGZ1bmN0aW9uKG9iamVjdCkge1xuXHQgICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmpl
Y3QnICYmXG5cdCAgICAgIG9iamVjdCAhPT0gbnVsbCAmJlxuXHQgICAgICBvYmplY3QuJCR0eXBl
b2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcblx0ICB9O1xuXHRcblx0ICAvLyBCeSBleHBsaWNp
dGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVu
dCBiZWhhdmlvci5cblx0ICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG5cdCAg
dmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuXHQgIG1vZHVsZS5leHBvcnRzID0gcmVx
dWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKGlzVmFsaWRFbGVtZW50LCB0aHJvd09u
RGlyZWN0QWNjZXNzKTtcblx0fSBlbHNlIHtcblx0ICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBw
cm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxu
XHQgIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2Rcblx0ICBtb2R1bGUuZXhwb3J0
cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIxKSgpO1xuXHR9XG5cblxuLyoqKi8gfSxcbi8qIDU3
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
XHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2
YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9V
X1dJTExfQkVfRklSRUQnO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1Nl
Y3JldDtcblxuXG4vKioqLyB9LFxuLyogNTggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBDU1MgcHJvcGVydGllcyB3
aGljaCBhY2NlcHQgbnVtYmVycyBidXQgYXJlIG5vdCBpbiB1bml0cyBvZiBcInB4XCIuXG5cdCAq
L1xuXHRcblx0dmFyIGlzVW5pdGxlc3NOdW1iZXIgPSB7XG5cdCAgYW5pbWF0aW9uSXRlcmF0aW9u
Q291bnQ6IHRydWUsXG5cdCAgYm9yZGVySW1hZ2VPdXRzZXQ6IHRydWUsXG5cdCAgYm9yZGVySW1h
Z2VTbGljZTogdHJ1ZSxcblx0ICBib3JkZXJJbWFnZVdpZHRoOiB0cnVlLFxuXHQgIGJveEZsZXg6
IHRydWUsXG5cdCAgYm94RmxleEdyb3VwOiB0cnVlLFxuXHQgIGJveE9yZGluYWxHcm91cDogdHJ1
ZSxcblx0ICBjb2x1bW5Db3VudDogdHJ1ZSxcblx0ICBmbGV4OiB0cnVlLFxuXHQgIGZsZXhHcm93
OiB0cnVlLFxuXHQgIGZsZXhQb3NpdGl2ZTogdHJ1ZSxcblx0ICBmbGV4U2hyaW5rOiB0cnVlLFxu
XHQgIGZsZXhOZWdhdGl2ZTogdHJ1ZSxcblx0ICBmbGV4T3JkZXI6IHRydWUsXG5cdCAgZ3JpZFJv
dzogdHJ1ZSxcblx0ICBncmlkUm93RW5kOiB0cnVlLFxuXHQgIGdyaWRSb3dTcGFuOiB0cnVlLFxu
XHQgIGdyaWRSb3dTdGFydDogdHJ1ZSxcblx0ICBncmlkQ29sdW1uOiB0cnVlLFxuXHQgIGdyaWRD
b2x1bW5FbmQ6IHRydWUsXG5cdCAgZ3JpZENvbHVtblNwYW46IHRydWUsXG5cdCAgZ3JpZENvbHVt
blN0YXJ0OiB0cnVlLFxuXHQgIGZvbnRXZWlnaHQ6IHRydWUsXG5cdCAgbGluZUNsYW1wOiB0cnVl
LFxuXHQgIGxpbmVIZWlnaHQ6IHRydWUsXG5cdCAgb3BhY2l0eTogdHJ1ZSxcblx0ICBvcmRlcjog
dHJ1ZSxcblx0ICBvcnBoYW5zOiB0cnVlLFxuXHQgIHRhYlNpemU6IHRydWUsXG5cdCAgd2lkb3dz
OiB0cnVlLFxuXHQgIHpJbmRleDogdHJ1ZSxcblx0ICB6b29tOiB0cnVlLFxuXHRcblx0ICAvLyBT
VkctcmVsYXRlZCBwcm9wZXJ0aWVzXG5cdCAgZmlsbE9wYWNpdHk6IHRydWUsXG5cdCAgZmxvb2RP
cGFjaXR5OiB0cnVlLFxuXHQgIHN0b3BPcGFjaXR5OiB0cnVlLFxuXHQgIHN0cm9rZURhc2hhcnJh
eTogdHJ1ZSxcblx0ICBzdHJva2VEYXNob2Zmc2V0OiB0cnVlLFxuXHQgIHN0cm9rZU1pdGVybGlt
aXQ6IHRydWUsXG5cdCAgc3Ryb2tlT3BhY2l0eTogdHJ1ZSxcblx0ICBzdHJva2VXaWR0aDogdHJ1
ZVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXggdmVuZG9yLXNw
ZWNpZmljIHByZWZpeCwgZWc6IFdlYmtpdFxuXHQgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHN0eWxl
IG5hbWUsIGVnOiB0cmFuc2l0aW9uRHVyYXRpb25cblx0ICogQHJldHVybiB7c3RyaW5nfSBzdHls
ZSBuYW1lIHByZWZpeGVkIHdpdGggYHByZWZpeGAsIHByb3Blcmx5IGNhbWVsQ2FzZWQsIGVnOlxu
XHQgKiBXZWJraXRUcmFuc2l0aW9uRHVyYXRpb25cblx0ICovXG5cdGZ1bmN0aW9uIHByZWZpeEtl
eShwcmVmaXgsIGtleSkge1xuXHQgIHJldHVybiBwcmVmaXggKyBrZXkuY2hhckF0KDApLnRvVXBw
ZXJDYXNlKCkgKyBrZXkuc3Vic3RyaW5nKDEpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogU3VwcG9y
dCBzdHlsZSBuYW1lcyB0aGF0IG1heSBjb21lIHBhc3NlZCBpbiBwcmVmaXhlZCBieSBhZGRpbmcg
cGVybXV0YXRpb25zXG5cdCAqIG9mIHZlbmRvciBwcmVmaXhlcy5cblx0ICovXG5cdHZhciBwcmVm
aXhlcyA9IFsnV2Via2l0JywgJ21zJywgJ01veicsICdPJ107XG5cdFxuXHQvLyBVc2luZyBPYmpl
Y3Qua2V5cyBoZXJlLCBvciBlbHNlIHRoZSB2YW5pbGxhIGZvci1pbiBsb29wIG1ha2VzIElFOCBn
byBpbnRvIGFuXG5cdC8vIGluZmluaXRlIGxvb3AsIGJlY2F1c2UgaXQgaXRlcmF0ZXMgb3ZlciB0
aGUgbmV3bHkgYWRkZWQgcHJvcHMgdG9vLlxuXHRPYmplY3Qua2V5cyhpc1VuaXRsZXNzTnVtYmVy
KS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG5cdCAgcHJlZml4ZXMuZm9yRWFjaChmdW5jdGlv
biAocHJlZml4KSB7XG5cdCAgICBpc1VuaXRsZXNzTnVtYmVyW3ByZWZpeEtleShwcmVmaXgsIHBy
b3ApXSA9IGlzVW5pdGxlc3NOdW1iZXJbcHJvcF07XG5cdCAgfSk7XG5cdH0pO1xuXHRcblx0Lyoq
XG5cdCAqIE1vc3Qgc3R5bGUgcHJvcGVydGllcyBjYW4gYmUgdW5zZXQgYnkgZG9pbmcgLnN0eWxl
W3Byb3BdID0gJycgYnV0IElFOFxuXHQgKiBkb2Vzbid0IGxpa2UgZG9pbmcgdGhhdCB3aXRoIHNo
b3J0aGFuZCBwcm9wZXJ0aWVzIHNvIGZvciB0aGUgcHJvcGVydGllcyB0aGF0XG5cdCAqIElFOCBi
cmVha3Mgb24sIHdoaWNoIGFyZSBsaXN0ZWQgaGVyZSwgd2UgaW5zdGVhZCB1bnNldCBlYWNoIG9m
IHRoZVxuXHQgKiBpbmRpdmlkdWFsIHByb3BlcnRpZXMuIFNlZSBodHRwOi8vYnVncy5qcXVlcnku
Y29tL3RpY2tldC8xMjM4NS5cblx0ICogVGhlIDQtdmFsdWUgJ2Nsb2NrJyBwcm9wZXJ0aWVzIGxp
a2UgbWFyZ2luLCBwYWRkaW5nLCBib3JkZXItd2lkdGggc2VlbSB0b1xuXHQgKiBiZWhhdmUgd2l0
aG91dCBhbnkgcHJvYmxlbXMuIEN1cmlvdXNseSwgbGlzdC1zdHlsZSB3b3JrcyB0b28gd2l0aG91
dCBhbnlcblx0ICogc3BlY2lhbCBwcm9kZGluZy5cblx0ICovXG5cdHZhciBzaG9ydGhhbmRQcm9w
ZXJ0eUV4cGFuc2lvbnMgPSB7XG5cdCAgYmFja2dyb3VuZDoge1xuXHQgICAgYmFja2dyb3VuZEF0
dGFjaG1lbnQ6IHRydWUsXG5cdCAgICBiYWNrZ3JvdW5kQ29sb3I6IHRydWUsXG5cdCAgICBiYWNr
Z3JvdW5kSW1hZ2U6IHRydWUsXG5cdCAgICBiYWNrZ3JvdW5kUG9zaXRpb25YOiB0cnVlLFxuXHQg
ICAgYmFja2dyb3VuZFBvc2l0aW9uWTogdHJ1ZSxcblx0ICAgIGJhY2tncm91bmRSZXBlYXQ6IHRy
dWVcblx0ICB9LFxuXHQgIGJhY2tncm91bmRQb3NpdGlvbjoge1xuXHQgICAgYmFja2dyb3VuZFBv
c2l0aW9uWDogdHJ1ZSxcblx0ICAgIGJhY2tncm91bmRQb3NpdGlvblk6IHRydWVcblx0ICB9LFxu
XHQgIGJvcmRlcjoge1xuXHQgICAgYm9yZGVyV2lkdGg6IHRydWUsXG5cdCAgICBib3JkZXJTdHls
ZTogdHJ1ZSxcblx0ICAgIGJvcmRlckNvbG9yOiB0cnVlXG5cdCAgfSxcblx0ICBib3JkZXJCb3R0
b206IHtcblx0ICAgIGJvcmRlckJvdHRvbVdpZHRoOiB0cnVlLFxuXHQgICAgYm9yZGVyQm90dG9t
U3R5bGU6IHRydWUsXG5cdCAgICBib3JkZXJCb3R0b21Db2xvcjogdHJ1ZVxuXHQgIH0sXG5cdCAg
Ym9yZGVyTGVmdDoge1xuXHQgICAgYm9yZGVyTGVmdFdpZHRoOiB0cnVlLFxuXHQgICAgYm9yZGVy
TGVmdFN0eWxlOiB0cnVlLFxuXHQgICAgYm9yZGVyTGVmdENvbG9yOiB0cnVlXG5cdCAgfSxcblx0
ICBib3JkZXJSaWdodDoge1xuXHQgICAgYm9yZGVyUmlnaHRXaWR0aDogdHJ1ZSxcblx0ICAgIGJv
cmRlclJpZ2h0U3R5bGU6IHRydWUsXG5cdCAgICBib3JkZXJSaWdodENvbG9yOiB0cnVlXG5cdCAg
fSxcblx0ICBib3JkZXJUb3A6IHtcblx0ICAgIGJvcmRlclRvcFdpZHRoOiB0cnVlLFxuXHQgICAg
Ym9yZGVyVG9wU3R5bGU6IHRydWUsXG5cdCAgICBib3JkZXJUb3BDb2xvcjogdHJ1ZVxuXHQgIH0s
XG5cdCAgZm9udDoge1xuXHQgICAgZm9udFN0eWxlOiB0cnVlLFxuXHQgICAgZm9udFZhcmlhbnQ6
IHRydWUsXG5cdCAgICBmb250V2VpZ2h0OiB0cnVlLFxuXHQgICAgZm9udFNpemU6IHRydWUsXG5c
dCAgICBsaW5lSGVpZ2h0OiB0cnVlLFxuXHQgICAgZm9udEZhbWlseTogdHJ1ZVxuXHQgIH0sXG5c
dCAgb3V0bGluZToge1xuXHQgICAgb3V0bGluZVdpZHRoOiB0cnVlLFxuXHQgICAgb3V0bGluZVN0
eWxlOiB0cnVlLFxuXHQgICAgb3V0bGluZUNvbG9yOiB0cnVlXG5cdCAgfVxuXHR9O1xuXHRcblx0
dmFyIENTU1Byb3BlcnR5ID0ge1xuXHQgIGlzVW5pdGxlc3NOdW1iZXI6IGlzVW5pdGxlc3NOdW1i
ZXIsXG5cdCAgc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zOiBzaG9ydGhhbmRQcm9wZXJ0eUV4
cGFuc2lvbnNcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gQ1NTUHJvcGVydHk7XG5cbi8q
KiovIH0sXG4vKiA1OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5c
dCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZElu
dmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHRmdW5jdGlvbiBfY2xhc3ND
YWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNl
b2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNs
YXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXHRcblx0dmFyIFBvb2xlZENsYXNzID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxMyk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBBIHNwZWNpYWxpemVkIHBzZXVkby1ldmVudCBtb2R1
bGUgdG8gaGVscCBrZWVwIHRyYWNrIG9mIGNvbXBvbmVudHMgd2FpdGluZyB0b1xuXHQgKiBiZSBu
b3RpZmllZCB3aGVuIHRoZWlyIERPTSByZXByZXNlbnRhdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3Ig
dXNlLlxuXHQgKlxuXHQgKiBUaGlzIGltcGxlbWVudHMgYFBvb2xlZENsYXNzYCwgc28geW91IHNo
b3VsZCBuZXZlciBuZWVkIHRvIGluc3RhbnRpYXRlIHRoaXMuXG5cdCAqIEluc3RlYWQsIHVzZSBg
Q2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKWAuXG5cdCAqXG5cdCAqIEBjbGFzcyBSZWFjdE1vdW50
UmVhZHlcblx0ICogQGltcGxlbWVudHMgUG9vbGVkQ2xhc3Ncblx0ICogQGludGVybmFsXG5cdCAq
L1xuXHRcblx0dmFyIENhbGxiYWNrUXVldWUgPSBmdW5jdGlvbiAoKSB7XG5cdCAgZnVuY3Rpb24g
Q2FsbGJhY2tRdWV1ZShhcmcpIHtcblx0ICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDYWxsYmFj
a1F1ZXVlKTtcblx0XG5cdCAgICB0aGlzLl9jYWxsYmFja3MgPSBudWxsO1xuXHQgICAgdGhpcy5f
Y29udGV4dHMgPSBudWxsO1xuXHQgICAgdGhpcy5fYXJnID0gYXJnO1xuXHQgIH1cblx0XG5cdCAg
LyoqXG5cdCAgICogRW5xdWV1ZXMgYSBjYWxsYmFjayB0byBiZSBpbnZva2VkIHdoZW4gYG5vdGlm
eUFsbGAgaXMgaW52b2tlZC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxi
YWNrIEludm9rZWQgd2hlbiBgbm90aWZ5QWxsYCBpcyBpbnZva2VkLlxuXHQgICAqIEBwYXJhbSB7
P29iamVjdH0gY29udGV4dCBDb250ZXh0IHRvIGNhbGwgYGNhbGxiYWNrYCB3aXRoLlxuXHQgICAq
IEBpbnRlcm5hbFxuXHQgICAqL1xuXHRcblx0XG5cdCAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUu
ZW5xdWV1ZSA9IGZ1bmN0aW9uIGVucXVldWUoY2FsbGJhY2ssIGNvbnRleHQpIHtcblx0ICAgIHRo
aXMuX2NhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcyB8fCBbXTtcblx0ICAgIHRoaXMuX2NhbGxi
YWNrcy5wdXNoKGNhbGxiYWNrKTtcblx0ICAgIHRoaXMuX2NvbnRleHRzID0gdGhpcy5fY29udGV4
dHMgfHwgW107XG5cdCAgICB0aGlzLl9jb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuXHQgIH07XG5c
dFxuXHQgIC8qKlxuXHQgICAqIEludm9rZXMgYWxsIGVucXVldWVkIGNhbGxiYWNrcyBhbmQgY2xl
YXJzIHRoZSBxdWV1ZS4gVGhpcyBpcyBpbnZva2VkIGFmdGVyXG5cdCAgICogdGhlIERPTSByZXBy
ZXNlbnRhdGlvbiBvZiBhIGNvbXBvbmVudCBoYXMgYmVlbiBjcmVhdGVkIG9yIHVwZGF0ZWQuXG5c
dCAgICpcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0XG5cdFxuXHQgIENhbGxiYWNrUXVl
dWUucHJvdG90eXBlLm5vdGlmeUFsbCA9IGZ1bmN0aW9uIG5vdGlmeUFsbCgpIHtcblx0ICAgIHZh
ciBjYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3M7XG5cdCAgICB2YXIgY29udGV4dHMgPSB0aGlz
Ll9jb250ZXh0cztcblx0ICAgIHZhciBhcmcgPSB0aGlzLl9hcmc7XG5cdCAgICBpZiAoY2FsbGJh
Y2tzICYmIGNvbnRleHRzKSB7XG5cdCAgICAgICEoY2FsbGJhY2tzLmxlbmd0aCA9PT0gY29udGV4
dHMubGVuZ3RoKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ01pc21hdGNoZWQgbGlzdCBv
ZiBjb250ZXh0cyBpbiBjYWxsYmFjayBxdWV1ZScpIDogX3Byb2RJbnZhcmlhbnQoJzI0JykgOiB2
b2lkIDA7XG5cdCAgICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7XG5cdCAgICAgIHRoaXMuX2Nv
bnRleHRzID0gbnVsbDtcblx0ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsYmFja3MubGVu
Z3RoOyBpKyspIHtcblx0ICAgICAgICBjYWxsYmFja3NbaV0uY2FsbChjb250ZXh0c1tpXSwgYXJn
KTtcblx0ICAgICAgfVxuXHQgICAgICBjYWxsYmFja3MubGVuZ3RoID0gMDtcblx0ICAgICAgY29u
dGV4dHMubGVuZ3RoID0gMDtcblx0ICAgIH1cblx0ICB9O1xuXHRcblx0ICBDYWxsYmFja1F1ZXVl
LnByb3RvdHlwZS5jaGVja3BvaW50ID0gZnVuY3Rpb24gY2hlY2twb2ludCgpIHtcblx0ICAgIHJl
dHVybiB0aGlzLl9jYWxsYmFja3MgPyB0aGlzLl9jYWxsYmFja3MubGVuZ3RoIDogMDtcblx0ICB9
O1xuXHRcblx0ICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5yb2xsYmFjayA9IGZ1bmN0aW9uIHJv
bGxiYWNrKGxlbikge1xuXHQgICAgaWYgKHRoaXMuX2NhbGxiYWNrcyAmJiB0aGlzLl9jb250ZXh0
cykge1xuXHQgICAgICB0aGlzLl9jYWxsYmFja3MubGVuZ3RoID0gbGVuO1xuXHQgICAgICB0aGlz
Ll9jb250ZXh0cy5sZW5ndGggPSBsZW47XG5cdCAgICB9XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5c
dCAgICogUmVzZXRzIHRoZSBpbnRlcm5hbCBxdWV1ZS5cblx0ICAgKlxuXHQgICAqIEBpbnRlcm5h
bFxuXHQgICAqL1xuXHRcblx0XG5cdCAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUucmVzZXQgPSBm
dW5jdGlvbiByZXNldCgpIHtcblx0ICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7XG5cdCAgICB0
aGlzLl9jb250ZXh0cyA9IG51bGw7XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICogYFBvb2xl
ZENsYXNzYCBsb29rcyBmb3IgdGhpcy5cblx0ICAgKi9cblx0XG5cdFxuXHQgIENhbGxiYWNrUXVl
dWUucHJvdG90eXBlLmRlc3RydWN0b3IgPSBmdW5jdGlvbiBkZXN0cnVjdG9yKCkge1xuXHQgICAg
dGhpcy5yZXNldCgpO1xuXHQgIH07XG5cdFxuXHQgIHJldHVybiBDYWxsYmFja1F1ZXVlO1xuXHR9
KCk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhDYWxs
YmFja1F1ZXVlKTtcblxuLyoqKi8gfSxcbi8qIDYwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
blx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2
YXIgRE9NUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcblx0dmFyIFJlYWN0RE9N
Q29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBSZWFjdEluc3Ry
dW1lbnRhdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cdFxuXHR2YXIgcXVvdGVBdHRy
aWJ1dGVWYWx1ZUZvckJyb3dzZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4NSk7XG5cdHZhciB3
YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBWQUxJRF9BVFRSSUJV
VEVfTkFNRV9SRUdFWCA9IG5ldyBSZWdFeHAoJ15bJyArIERPTVByb3BlcnR5LkFUVFJJQlVURV9O
QU1FX1NUQVJUX0NIQVIgKyAnXVsnICsgRE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVfQ0hBUiAr
ICddKiQnKTtcblx0dmFyIGlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGUgPSB7fTtcblx0dmFyIHZh
bGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9O1xuXHRcblx0ZnVuY3Rpb24gaXNBdHRyaWJ1
dGVOYW1lU2FmZShhdHRyaWJ1dGVOYW1lKSB7XG5cdCAgaWYgKHZhbGlkYXRlZEF0dHJpYnV0ZU5h
bWVDYWNoZS5oYXNPd25Qcm9wZXJ0eShhdHRyaWJ1dGVOYW1lKSkge1xuXHQgICAgcmV0dXJuIHRy
dWU7XG5cdCAgfVxuXHQgIGlmIChpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlLmhhc093blByb3Bl
cnR5KGF0dHJpYnV0ZU5hbWUpKSB7XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfVxuXHQgIGlm
IChWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWC50ZXN0KGF0dHJpYnV0ZU5hbWUpKSB7XG5cdCAg
ICB2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGVbYXR0cmlidXRlTmFtZV0gPSB0cnVlO1xuXHQg
ICAgcmV0dXJuIHRydWU7XG5cdCAgfVxuXHQgIGlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGVbYXR0
cmlidXRlTmFtZV0gPSB0cnVlO1xuXHQgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlk
IGF0dHJpYnV0ZSBuYW1lOiBgJXNgJywgYXR0cmlidXRlTmFtZSkgOiB2b2lkIDA7XG5cdCAgcmV0
dXJuIGZhbHNlO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBzaG91bGRJZ25vcmVWYWx1ZShwcm9wZXJ0
eUluZm8sIHZhbHVlKSB7XG5cdCAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgcHJvcGVydHlJbmZv
Lmhhc0Jvb2xlYW5WYWx1ZSAmJiAhdmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc051bWVyaWNWYWx1
ZSAmJiBpc05hTih2YWx1ZSkgfHwgcHJvcGVydHlJbmZvLmhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVl
ICYmIHZhbHVlIDwgMSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAm
JiB2YWx1ZSA9PT0gZmFsc2U7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBPcGVyYXRpb25zIGZvciBk
ZWFsaW5nIHdpdGggRE9NIHByb3BlcnRpZXMuXG5cdCAqL1xuXHR2YXIgRE9NUHJvcGVydHlPcGVy
YXRpb25zID0ge1xuXHQgIC8qKlxuXHQgICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgSUQgcHJv
cGVydHkuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgVW5lc2NhcGVkIElELlxu
XHQgICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZy5cblx0ICAgKi9cblx0ICBjcmVh
dGVNYXJrdXBGb3JJRDogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICByZXR1cm4gRE9NUHJvcGVydHku
SURfQVRUUklCVVRFX05BTUUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcihp
ZCk7XG5cdCAgfSxcblx0XG5cdCAgc2V0QXR0cmlidXRlRm9ySUQ6IGZ1bmN0aW9uIChub2RlLCBp
ZCkge1xuXHQgICAgbm9kZS5zZXRBdHRyaWJ1dGUoRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05B
TUUsIGlkKTtcblx0ICB9LFxuXHRcblx0ICBjcmVhdGVNYXJrdXBGb3JSb290OiBmdW5jdGlvbiAo
KSB7XG5cdCAgICByZXR1cm4gRE9NUHJvcGVydHkuUk9PVF9BVFRSSUJVVEVfTkFNRSArICc9XCJc
Iic7XG5cdCAgfSxcblx0XG5cdCAgc2V0QXR0cmlidXRlRm9yUm9vdDogZnVuY3Rpb24gKG5vZGUp
IHtcblx0ICAgIG5vZGUuc2V0QXR0cmlidXRlKERPTVByb3BlcnR5LlJPT1RfQVRUUklCVVRFX05B
TUUsICcnKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBDcmVhdGVzIG1hcmt1cCBmb3Ig
YSBwcm9wZXJ0eS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG5cdCAgICog
QHBhcmFtIHsqfSB2YWx1ZVxuXHQgICAqIEByZXR1cm4gez9zdHJpbmd9IE1hcmt1cCBzdHJpbmcs
IG9yIG51bGwgaWYgdGhlIHByb3BlcnR5IHdhcyBpbnZhbGlkLlxuXHQgICAqL1xuXHQgIGNyZWF0
ZU1hcmt1cEZvclByb3BlcnR5OiBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcblx0ICAgIHZhciBw
cm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUp
ID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7XG5cdCAgICBpZiAocHJvcGVy
dHlJbmZvKSB7XG5cdCAgICAgIGlmIChzaG91bGRJZ25vcmVWYWx1ZShwcm9wZXJ0eUluZm8sIHZh
bHVlKSkge1xuXHQgICAgICAgIHJldHVybiAnJztcblx0ICAgICAgfVxuXHQgICAgICB2YXIgYXR0
cmlidXRlTmFtZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lO1xuXHQgICAgICBpZiAocHJv
cGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJv
b2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xuXHQgICAgICAgIHJldHVybiBhdHRyaWJ1
dGVOYW1lICsgJz1cIlwiJztcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gYXR0cmlidXRlTmFt
ZSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKTtcblx0ICAgIH0g
ZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcblx0ICAgICAg
aWYgKHZhbHVlID09IG51bGwpIHtcblx0ICAgICAgICByZXR1cm4gJyc7XG5cdCAgICAgIH1cblx0
ICAgICAgcmV0dXJuIG5hbWUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2
YWx1ZSk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9LFxuXHRcblx0ICAvKipc
blx0ICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgYSBjdXN0b20gcHJvcGVydHkuXG5cdCAgICpcblx0
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuXHQgICAqIEBwYXJhbSB7Kn0gdmFsdWVcblx0ICAg
KiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcsIG9yIGVtcHR5IHN0cmluZyBpZiB0aGUg
cHJvcGVydHkgd2FzIGludmFsaWQuXG5cdCAgICovXG5cdCAgY3JlYXRlTWFya3VwRm9yQ3VzdG9t
QXR0cmlidXRlOiBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcblx0ICAgIGlmICghaXNBdHRyaWJ1
dGVOYW1lU2FmZShuYW1lKSB8fCB2YWx1ZSA9PSBudWxsKSB7XG5cdCAgICAgIHJldHVybiAnJztc
blx0ICAgIH1cblx0ICAgIHJldHVybiBuYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZv
ckJyb3dzZXIodmFsdWUpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFNldHMgdGhlIHZh
bHVlIGZvciBhIHByb3BlcnR5IG9uIGEgbm9kZS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7RE9N
RWxlbWVudH0gbm9kZVxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG5cdCAgICogQHBhcmFt
IHsqfSB2YWx1ZVxuXHQgICAqL1xuXHQgIHNldFZhbHVlRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChu
b2RlLCBuYW1lLCB2YWx1ZSkge1xuXHQgICAgdmFyIHByb3BlcnR5SW5mbyA9IERPTVByb3BlcnR5
LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVz
W25hbWVdIDogbnVsbDtcblx0ICAgIGlmIChwcm9wZXJ0eUluZm8pIHtcblx0ICAgICAgdmFyIG11
dGF0aW9uTWV0aG9kID0gcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9kO1xuXHQgICAgICBpZiAo
bXV0YXRpb25NZXRob2QpIHtcblx0ICAgICAgICBtdXRhdGlvbk1ldGhvZChub2RlLCB2YWx1ZSk7
XG5cdCAgICAgIH0gZWxzZSBpZiAoc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1
ZSkpIHtcblx0ICAgICAgICB0aGlzLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwgbmFtZSk7
XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5SW5mby5tdXN0
VXNlUHJvcGVydHkpIHtcblx0ICAgICAgICAvLyBDb250cmFyeSB0byBgc2V0QXR0cmlidXRlYCwg
b2JqZWN0IHByb3BlcnRpZXMgYXJlIHByb3Blcmx5XG5cdCAgICAgICAgLy8gYHRvU3RyaW5nYGVk
IGJ5IElFOC85LlxuXHQgICAgICAgIG5vZGVbcHJvcGVydHlJbmZvLnByb3BlcnR5TmFtZV0gPSB2
YWx1ZTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IHBy
b3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lO1xuXHQgICAgICAgIHZhciBuYW1lc3BhY2UgPSBwcm9w
ZXJ0eUluZm8uYXR0cmlidXRlTmFtZXNwYWNlO1xuXHQgICAgICAgIC8vIGBzZXRBdHRyaWJ1dGVg
IHdpdGggb2JqZWN0cyBiZWNvbWVzIG9ubHkgYFtvYmplY3RdYCBpbiBJRTgvOSxcblx0ICAgICAg
ICAvLyAoJycgKyB2YWx1ZSkgbWFrZXMgaXQgb3V0cHV0IHRoZSBjb3JyZWN0IHRvU3RyaW5nKCkt
dmFsdWUuXG5cdCAgICAgICAgaWYgKG5hbWVzcGFjZSkge1xuXHQgICAgICAgICAgbm9kZS5zZXRB
dHRyaWJ1dGVOUyhuYW1lc3BhY2UsIGF0dHJpYnV0ZU5hbWUsICcnICsgdmFsdWUpO1xuXHQgICAg
ICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSB8fCBwcm9wZXJ0eUlu
Zm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xuXHQgICAg
ICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgJycpO1xuXHQgICAgICAgIH0g
ZWxzZSB7XG5cdCAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCAnJyAr
IHZhbHVlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSBpZiAoRE9NUHJv
cGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcblx0ICAgICAgRE9NUHJvcGVydHlPcGVy
YXRpb25zLnNldFZhbHVlRm9yQXR0cmlidXRlKG5vZGUsIG5hbWUsIHZhbHVlKTtcblx0ICAgICAg
cmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICB2YXIgcGF5
bG9hZCA9IHt9O1xuXHQgICAgICBwYXlsb2FkW25hbWVdID0gdmFsdWU7XG5cdCAgICAgIFJlYWN0
SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuXHQgICAgICAgIGlu
c3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUp
Ll9kZWJ1Z0lELFxuXHQgICAgICAgIHR5cGU6ICd1cGRhdGUgYXR0cmlidXRlJyxcblx0ICAgICAg
ICBwYXlsb2FkOiBwYXlsb2FkXG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQg
IHNldFZhbHVlRm9yQXR0cmlidXRlOiBmdW5jdGlvbiAobm9kZSwgbmFtZSwgdmFsdWUpIHtcblx0
ICAgIGlmICghaXNBdHRyaWJ1dGVOYW1lU2FmZShuYW1lKSkge1xuXHQgICAgICByZXR1cm47XG5c
dCAgICB9XG5cdCAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuXHQgICAgICBub2RlLnJlbW92ZUF0
dHJpYnV0ZShuYW1lKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIG5vZGUuc2V0QXR0cmlidXRl
KG5hbWUsICcnICsgdmFsdWUpO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQg
ICAgICB2YXIgcGF5bG9hZCA9IHt9O1xuXHQgICAgICBwYXlsb2FkW25hbWVdID0gdmFsdWU7XG5c
dCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xu
XHQgICAgICAgIGluc3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZy
b21Ob2RlKG5vZGUpLl9kZWJ1Z0lELFxuXHQgICAgICAgIHR5cGU6ICd1cGRhdGUgYXR0cmlidXRl
Jyxcblx0ICAgICAgICBwYXlsb2FkOiBwYXlsb2FkXG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQg
IH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIERlbGV0ZXMgYW4gYXR0cmlidXRlcyBmcm9tIGEgbm9k
ZS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuXHQgICAqIEBwYXJh
bSB7c3RyaW5nfSBuYW1lXG5cdCAgICovXG5cdCAgZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGU6IGZ1
bmN0aW9uIChub2RlLCBuYW1lKSB7XG5cdCAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtc
blx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAgICBpbnN0YW5jZUlEOiBSZWFjdERPTUNvbXBv
bmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKS5fZGVidWdJRCxcblx0ICAgICAgICB0
eXBlOiAncmVtb3ZlIGF0dHJpYnV0ZScsXG5cdCAgICAgICAgcGF5bG9hZDogbmFtZVxuXHQgICAg
ICB9KTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBEZWxldGVzIHRoZSB2
YWx1ZSBmb3IgYSBwcm9wZXJ0eSBvbiBhIG5vZGUuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge0RP
TUVsZW1lbnR9IG5vZGVcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuXHQgICAqL1xuXHQg
IGRlbGV0ZVZhbHVlRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChub2RlLCBuYW1lKSB7XG5cdCAgICB2
YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShu
YW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsO1xuXHQgICAgaWYgKHBy
b3BlcnR5SW5mbykge1xuXHQgICAgICB2YXIgbXV0YXRpb25NZXRob2QgPSBwcm9wZXJ0eUluZm8u
bXV0YXRpb25NZXRob2Q7XG5cdCAgICAgIGlmIChtdXRhdGlvbk1ldGhvZCkge1xuXHQgICAgICAg
IG11dGF0aW9uTWV0aG9kKG5vZGUsIHVuZGVmaW5lZCk7XG5cdCAgICAgIH0gZWxzZSBpZiAocHJv
cGVydHlJbmZvLm11c3RVc2VQcm9wZXJ0eSkge1xuXHQgICAgICAgIHZhciBwcm9wTmFtZSA9IHBy
b3BlcnR5SW5mby5wcm9wZXJ0eU5hbWU7XG5cdCAgICAgICAgaWYgKHByb3BlcnR5SW5mby5oYXNC
b29sZWFuVmFsdWUpIHtcblx0ICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gZmFsc2U7XG5cdCAg
ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gJyc7XG5cdCAgICAg
ICAgfVxuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKHBy
b3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lKTtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIGlmIChE
T01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkge1xuXHQgICAgICBub2RlLnJlbW92
ZUF0dHJpYnV0ZShuYW1lKTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG5cdCAg
ICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5v
ZGUobm9kZSkuX2RlYnVnSUQsXG5cdCAgICAgICAgdHlwZTogJ3JlbW92ZSBhdHRyaWJ1dGUnLFxu
XHQgICAgICAgIHBheWxvYWQ6IG5hbWVcblx0ICAgICAgfSk7XG5cdCAgICB9XG5cdCAgfVxuXHR9
O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnM7XG5cbi8qKiov
IH0sXG4vKiA2MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Lyoq
XG5cdCAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBz
dHJpY3QnO1xuXHRcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3MgPSB7XG5cdCAgaGFzQ2Fj
aGVkQ2hpbGROb2RlczogMSA8PCAwXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0
RE9NQ29tcG9uZW50RmxhZ3M7XG5cbi8qKiovIH0sXG4vKiA2MiAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIExp
bmtlZFZhbHVlVXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KTtcblx0dmFyIFJlYWN0RE9N
Q29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBSZWFjdFVwZGF0
ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXHRcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0dmFyIGRpZFdhcm5WYWx1ZUxpbmsgPSBmYWxzZTtcblx0
dmFyIGRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSA9IGZhbHNlO1xuXHRcblx0ZnVuY3Rpb24gdXBk
YXRlT3B0aW9uc0lmUGVuZGluZ1VwZGF0ZUFuZE1vdW50ZWQoKSB7XG5cdCAgaWYgKHRoaXMuX3Jv
b3ROb2RlSUQgJiYgdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUpIHtcblx0ICAgIHRo
aXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7XG5cdFxuXHQgICAgdmFyIHBy
b3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cdCAgICB2YXIgdmFsdWUgPSBMaW5r
ZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcblx0XG5cdCAgICBpZiAodmFsdWUgIT0gbnVs
bCkge1xuXHQgICAgICB1cGRhdGVPcHRpb25zKHRoaXMsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUp
LCB2YWx1ZSk7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXREZWNsYXJh
dGlvbkVycm9yQWRkZW5kdW0ob3duZXIpIHtcblx0ICBpZiAob3duZXIpIHtcblx0ICAgIHZhciBu
YW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuXHQgICAgaWYgKG5hbWUpIHtcblx0ICAgICAgcmV0dXJu
ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcblx0ICAgIH1c
blx0ICB9XG5cdCAgcmV0dXJuICcnO1xuXHR9XG5cdFxuXHR2YXIgdmFsdWVQcm9wTmFtZXMgPSBb
J3ZhbHVlJywgJ2RlZmF1bHRWYWx1ZSddO1xuXHRcblx0LyoqXG5cdCAqIFZhbGlkYXRpb24gZnVu
Y3Rpb24gZm9yIGB2YWx1ZWAgYW5kIGBkZWZhdWx0VmFsdWVgLlxuXHQgKiBAcHJpdmF0ZVxuXHQg
Ki9cblx0ZnVuY3Rpb24gY2hlY2tTZWxlY3RQcm9wVHlwZXMoaW5zdCwgcHJvcHMpIHtcblx0ICB2
YXIgb3duZXIgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cdCAgTGlua2VkVmFsdWVV
dGlscy5jaGVja1Byb3BUeXBlcygnc2VsZWN0JywgcHJvcHMsIG93bmVyKTtcblx0XG5cdCAgaWYg
KHByb3BzLnZhbHVlTGluayAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVMaW5rKSB7XG5c
dCAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnYHZhbHVlTGlua2AgcHJvcCBvbiBgc2VsZWN0
YCBpcyBkZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFkLicpIDog
dm9pZCAwO1xuXHQgICAgZGlkV2FyblZhbHVlTGluayA9IHRydWU7XG5cdCAgfVxuXHRcblx0ICBm
b3IgKHZhciBpID0gMDsgaSA8IHZhbHVlUHJvcE5hbWVzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICB2
YXIgcHJvcE5hbWUgPSB2YWx1ZVByb3BOYW1lc1tpXTtcblx0ICAgIGlmIChwcm9wc1twcm9wTmFt
ZV0gPT0gbnVsbCkge1xuXHQgICAgICBjb250aW51ZTtcblx0ICAgIH1cblx0ICAgIHZhciBpc0Fy
cmF5ID0gQXJyYXkuaXNBcnJheShwcm9wc1twcm9wTmFtZV0pO1xuXHQgICAgaWYgKHByb3BzLm11
bHRpcGxlICYmICFpc0FycmF5KSB7XG5cdCAgICAgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2UsICdU
aGUgYCVzYCBwcm9wIHN1cHBsaWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUgYW4gYXJyYXkgaWYgJyAr
ICdgbXVsdGlwbGVgIGlzIHRydWUuJXMnLCBwcm9wTmFtZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFk
ZGVuZHVtKG93bmVyKSkgOiB2b2lkIDA7XG5cdCAgICB9IGVsc2UgaWYgKCFwcm9wcy5tdWx0aXBs
ZSAmJiBpc0FycmF5KSB7XG5cdCAgICAgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2UsICdUaGUgYCVz
YCBwcm9wIHN1cHBsaWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUgYSBzY2FsYXIgJyArICd2YWx1ZSBp
ZiBgbXVsdGlwbGVgIGlzIGZhbHNlLiVzJywgcHJvcE5hbWUsIGdldERlY2xhcmF0aW9uRXJyb3JB
ZGRlbmR1bShvd25lcikpIDogdm9pZCAwO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0Lyoq
XG5cdCAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGluc3Rcblx0ICogQHBhcmFtIHtib29s
ZWFufSBtdWx0aXBsZVxuXHQgKiBAcGFyYW0geyp9IHByb3BWYWx1ZSBBIHN0cmluZ2FibGUgKHdp
dGggYG11bHRpcGxlYCwgYSBsaXN0IG9mIHN0cmluZ2FibGVzKS5cblx0ICogQHByaXZhdGVcblx0
ICovXG5cdGZ1bmN0aW9uIHVwZGF0ZU9wdGlvbnMoaW5zdCwgbXVsdGlwbGUsIHByb3BWYWx1ZSkg
e1xuXHQgIHZhciBzZWxlY3RlZFZhbHVlLCBpO1xuXHQgIHZhciBvcHRpb25zID0gUmVhY3RET01D
b21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkub3B0aW9ucztcblx0XG5cdCAg
aWYgKG11bHRpcGxlKSB7XG5cdCAgICBzZWxlY3RlZFZhbHVlID0ge307XG5cdCAgICBmb3IgKGkg
PSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHNlbGVjdGVkVmFsdWVb
JycgKyBwcm9wVmFsdWVbaV1dID0gdHJ1ZTtcblx0ICAgIH1cblx0ICAgIGZvciAoaSA9IDA7IGkg
PCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHZhciBzZWxlY3RlZCA9IHNlbGVjdGVk
VmFsdWUuaGFzT3duUHJvcGVydHkob3B0aW9uc1tpXS52YWx1ZSk7XG5cdCAgICAgIGlmIChvcHRp
b25zW2ldLnNlbGVjdGVkICE9PSBzZWxlY3RlZCkge1xuXHQgICAgICAgIG9wdGlvbnNbaV0uc2Vs
ZWN0ZWQgPSBzZWxlY3RlZDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0gZWxzZSB7XG5cdCAg
ICAvLyBEbyBub3Qgc2V0IGBzZWxlY3QudmFsdWVgIGFzIGV4YWN0IGJlaGF2aW9yIGlzbid0IGNv
bnNpc3RlbnQgYWNyb3NzIGFsbFxuXHQgICAgLy8gYnJvd3NlcnMgZm9yIGFsbCBjYXNlcy5cblx0
ICAgIHNlbGVjdGVkVmFsdWUgPSAnJyArIHByb3BWYWx1ZTtcblx0ICAgIGZvciAoaSA9IDA7IGkg
PCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIGlmIChvcHRpb25zW2ldLnZhbHVlID09
PSBzZWxlY3RlZFZhbHVlKSB7XG5cdCAgICAgICAgb3B0aW9uc1tpXS5zZWxlY3RlZCA9IHRydWU7
XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBpZiAob3B0aW9u
cy5sZW5ndGgpIHtcblx0ICAgICAgb3B0aW9uc1swXS5zZWxlY3RlZCA9IHRydWU7XG5cdCAgICB9
XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogSW1wbGVtZW50cyBhIDxzZWxlY3Q+IGhvc3Qg
Y29tcG9uZW50IHRoYXQgYWxsb3dzIG9wdGlvbmFsbHkgc2V0dGluZyB0aGVcblx0ICogcHJvcHMg
YHZhbHVlYCBhbmQgYGRlZmF1bHRWYWx1ZWAuIElmIGBtdWx0aXBsZWAgaXMgZmFsc2UsIHRoZSBw
cm9wIG11c3QgYmUgYVxuXHQgKiBzdHJpbmdhYmxlLiBJZiBgbXVsdGlwbGVgIGlzIHRydWUsIHRo
ZSBwcm9wIG11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5nYWJsZXMuXG5cdCAqXG5cdCAqIElmIGB2
YWx1ZWAgaXMgbm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9ucyB0
aGF0IGNoYW5nZSB0aGVcblx0ICogc2VsZWN0ZWQgb3B0aW9uIHdpbGwgdHJpZ2dlciB1cGRhdGVz
IHRvIHRoZSByZW5kZXJlZCBvcHRpb25zLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBzdXBwbGllZCAo
YW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5kZXJlZCBvcHRpb25zIHdpbGwgbm90XG5c
dCAqIHVwZGF0ZSBpbiByZXNwb25zZSB0byB1c2VyIGFjdGlvbnMuIEluc3RlYWQsIHRoZSBgdmFs
dWVgIHByb3AgbXVzdCBjaGFuZ2UgaW5cblx0ICogb3JkZXIgZm9yIHRoZSByZW5kZXJlZCBvcHRp
b25zIHRvIHVwZGF0ZS5cblx0ICpcblx0ICogSWYgYGRlZmF1bHRWYWx1ZWAgaXMgcHJvdmlkZWQs
IGFueSBvcHRpb25zIHdpdGggdGhlIHN1cHBsaWVkIHZhbHVlcyB3aWxsIGJlXG5cdCAqIHNlbGVj
dGVkLlxuXHQgKi9cblx0dmFyIFJlYWN0RE9NU2VsZWN0ID0ge1xuXHQgIGdldEhvc3RQcm9wczog
ZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG5cdCAgICByZXR1cm4gX2Fzc2lnbih7fSwgcHJvcHMs
IHtcblx0ICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZSxcblx0ICAg
ICAgdmFsdWU6IHVuZGVmaW5lZFxuXHQgICAgfSk7XG5cdCAgfSxcblx0XG5cdCAgbW91bnRXcmFw
cGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAg
ICBjaGVja1NlbGVjdFByb3BUeXBlcyhpbnN0LCBwcm9wcyk7XG5cdCAgICB9XG5cdFxuXHQgICAg
dmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG5cdCAgICBpbnN0
Ll93cmFwcGVyU3RhdGUgPSB7XG5cdCAgICAgIHBlbmRpbmdVcGRhdGU6IGZhbHNlLFxuXHQgICAg
ICBpbml0aWFsVmFsdWU6IHZhbHVlICE9IG51bGwgPyB2YWx1ZSA6IHByb3BzLmRlZmF1bHRWYWx1
ZSxcblx0ICAgICAgbGlzdGVuZXJzOiBudWxsLFxuXHQgICAgICBvbkNoYW5nZTogX2hhbmRsZUNo
YW5nZS5iaW5kKGluc3QpLFxuXHQgICAgICB3YXNNdWx0aXBsZTogQm9vbGVhbihwcm9wcy5tdWx0
aXBsZSlcblx0ICAgIH07XG5cdFxuXHQgICAgaWYgKHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQg
JiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZURlZmF1
bHRWYWx1ZSkge1xuXHQgICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnU2VsZWN0IGVsZW1l
bnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNp
ZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBu
b3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29u
dHJvbGxlZCBzZWxlY3QgJyArICdlbGVtZW50IGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3Bz
LiBNb3JlIGluZm86ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVu
dHMnKSA6IHZvaWQgMDtcblx0ICAgICAgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0gdHJ1ZTtc
blx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBnZXRTZWxlY3RWYWx1ZUNvbnRleHQ6IGZ1bmN0aW9u
IChpbnN0KSB7XG5cdCAgICAvLyBSZWFjdERPTU9wdGlvbiBsb29rcyBhdCB0aGlzIGluaXRpYWwg
dmFsdWUgc28gdGhlIGluaXRpYWwgZ2VuZXJhdGVkXG5cdCAgICAvLyBtYXJrdXAgaGFzIGNvcnJl
Y3QgYHNlbGVjdGVkYCBhdHRyaWJ1dGVzXG5cdCAgICByZXR1cm4gaW5zdC5fd3JhcHBlclN0YXRl
LmluaXRpYWxWYWx1ZTtcblx0ICB9LFxuXHRcblx0ICBwb3N0VXBkYXRlV3JhcHBlcjogZnVuY3Rp
b24gKGluc3QpIHtcblx0ICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3Bz
O1xuXHRcblx0ICAgIC8vIEFmdGVyIHRoZSBpbml0aWFsIG1vdW50LCB3ZSBjb250cm9sIHNlbGVj
dGVkLW5lc3MgbWFudWFsbHkgc28gZG9uJ3QgcGFzc1xuXHQgICAgLy8gdGhpcyB2YWx1ZSBkb3du
XG5cdCAgICBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlID0gdW5kZWZpbmVkO1xuXHRc
blx0ICAgIHZhciB3YXNNdWx0aXBsZSA9IGluc3QuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZTtc
blx0ICAgIGluc3QuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZSA9IEJvb2xlYW4ocHJvcHMubXVs
dGlwbGUpO1xuXHRcblx0ICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUo
cHJvcHMpO1xuXHQgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcblx0ICAgICAgaW5zdC5fd3JhcHBl
clN0YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTtcblx0ICAgICAgdXBkYXRlT3B0aW9ucyhpbnN0
LCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwgdmFsdWUpO1xuXHQgICAgfSBlbHNlIGlmICh3YXNN
dWx0aXBsZSAhPT0gQm9vbGVhbihwcm9wcy5tdWx0aXBsZSkpIHtcblx0ICAgICAgLy8gRm9yIHNp
bXBsaWNpdHksIHJlYXBwbHkgYGRlZmF1bHRWYWx1ZWAgaWYgYG11bHRpcGxlYCBpcyB0b2dnbGVk
LlxuXHQgICAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHtcblx0ICAgICAgICB1
cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5kZWZhdWx0
VmFsdWUpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIC8vIFJldmVydCB0aGUgc2VsZWN0
IGJhY2sgdG8gaXRzIGRlZmF1bHQgdW5zZWxlY3RlZCBzdGF0ZS5cblx0ICAgICAgICB1cGRhdGVP
cHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5tdWx0aXBsZSA/IFtd
IDogJycpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0ZnVuY3Rpb24g
X2hhbmRsZUNoYW5nZShldmVudCkge1xuXHQgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVt
ZW50LnByb3BzO1xuXHQgIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0
ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7XG5cdFxuXHQgIGlmICh0aGlzLl9yb290Tm9kZUlEKSB7
XG5cdCAgICB0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSA9IHRydWU7XG5cdCAgfVxu
XHQgIFJlYWN0VXBkYXRlcy5hc2FwKHVwZGF0ZU9wdGlvbnNJZlBlbmRpbmdVcGRhdGVBbmRNb3Vu
dGVkLCB0aGlzKTtcblx0ICByZXR1cm4gcmV0dXJuVmFsdWU7XG5cdH1cblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gUmVhY3RET01TZWxlY3Q7XG5cbi8qKiovIH0sXG4vKiA2MyAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE0LXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5c
dCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGVtcHR5
Q29tcG9uZW50RmFjdG9yeTtcblx0XG5cdHZhciBSZWFjdEVtcHR5Q29tcG9uZW50SW5qZWN0aW9u
ID0ge1xuXHQgIGluamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeTogZnVuY3Rpb24gKGZhY3Rvcnkp
IHtcblx0ICAgIGVtcHR5Q29tcG9uZW50RmFjdG9yeSA9IGZhY3Rvcnk7XG5cdCAgfVxuXHR9O1xu
XHRcblx0dmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSB7XG5cdCAgY3JlYXRlOiBmdW5jdGlvbiAo
aW5zdGFudGlhdGUpIHtcblx0ICAgIHJldHVybiBlbXB0eUNvbXBvbmVudEZhY3RvcnkoaW5zdGFu
dGlhdGUpO1xuXHQgIH1cblx0fTtcblx0XG5cdFJlYWN0RW1wdHlDb21wb25lbnQuaW5qZWN0aW9u
ID0gUmVhY3RFbXB0eUNvbXBvbmVudEluamVjdGlvbjtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
UmVhY3RFbXB0eUNvbXBvbmVudDtcblxuLyoqKi8gfSxcbi8qIDY0ICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFJl
YWN0RmVhdHVyZUZsYWdzID0ge1xuXHQgIC8vIFdoZW4gdHJ1ZSwgY2FsbCBjb25zb2xlLnRpbWUo
KSBiZWZvcmUgYW5kIC50aW1lRW5kKCkgYWZ0ZXIgZWFjaCB0b3AtbGV2ZWxcblx0ICAvLyByZW5k
ZXIgKGJvdGggaW5pdGlhbCByZW5kZXJzIGFuZCB1cGRhdGVzKS4gVXNlZnVsIHdoZW4gbG9va2lu
ZyBhdCBwcm9kLW1vZGVcblx0ICAvLyB0aW1lbGluZSBwcm9maWxlcyBpbiBDaHJvbWUsIGZvciBl
eGFtcGxlLlxuXHQgIGxvZ1RvcExldmVsUmVuZGVyczogZmFsc2Vcblx0fTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gUmVhY3RGZWF0dXJlRmxhZ3M7XG5cbi8qKiovIH0sXG4vKiA2NSAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3Vz
ZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygzKTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRc
blx0dmFyIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9IG51bGw7XG5cdHZhciB0ZXh0Q29tcG9uZW50
Q2xhc3MgPSBudWxsO1xuXHRcblx0dmFyIFJlYWN0SG9zdENvbXBvbmVudEluamVjdGlvbiA9IHtc
blx0ICAvLyBUaGlzIGFjY2VwdHMgYSBjbGFzcyB0aGF0IHJlY2VpdmVzIHRoZSB0YWcgc3RyaW5n
LiBUaGlzIGlzIGEgY2F0Y2ggYWxsXG5cdCAgLy8gdGhhdCBjYW4gcmVuZGVyIGFueSBraW5kIG9m
IHRhZy5cblx0ICBpbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6IGZ1bmN0aW9uIChjb21wb25l
bnRDbGFzcykge1xuXHQgICAgZ2VuZXJpY0NvbXBvbmVudENsYXNzID0gY29tcG9uZW50Q2xhc3M7
XG5cdCAgfSxcblx0ICAvLyBUaGlzIGFjY2VwdHMgYSB0ZXh0IGNvbXBvbmVudCBjbGFzcyB0aGF0
IHRha2VzIHRoZSB0ZXh0IHN0cmluZyB0byBiZVxuXHQgIC8vIHJlbmRlcmVkIGFzIHByb3BzLlxu
XHQgIGluamVjdFRleHRDb21wb25lbnRDbGFzczogZnVuY3Rpb24gKGNvbXBvbmVudENsYXNzKSB7
XG5cdCAgICB0ZXh0Q29tcG9uZW50Q2xhc3MgPSBjb21wb25lbnRDbGFzcztcblx0ICB9XG5cdH07
XG5cdFxuXHQvKipcblx0ICogR2V0IGEgaG9zdCBpbnRlcm5hbCBjb21wb25lbnQgY2xhc3MgZm9y
IGEgc3BlY2lmaWMgdGFnLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVu
dCBUaGUgZWxlbWVudCB0byBjcmVhdGUuXG5cdCAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgaW50
ZXJuYWwgY2xhc3MgY29uc3RydWN0b3IgZnVuY3Rpb24uXG5cdCAqL1xuXHRmdW5jdGlvbiBjcmVh
dGVJbnRlcm5hbENvbXBvbmVudChlbGVtZW50KSB7XG5cdCAgIWdlbmVyaWNDb21wb25lbnRDbGFz
cyA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1RoZXJlIGlzIG5vIHJlZ2lzdGVyZWQgY29t
cG9uZW50IGZvciB0aGUgdGFnICVzJywgZWxlbWVudC50eXBlKSA6IF9wcm9kSW52YXJpYW50KCcx
MTEnLCBlbGVtZW50LnR5cGUpIDogdm9pZCAwO1xuXHQgIHJldHVybiBuZXcgZ2VuZXJpY0NvbXBv
bmVudENsYXNzKGVsZW1lbnQpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtSZWFjdFRl
eHR9IHRleHRcblx0ICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9XG5cdCAqL1xuXHRmdW5jdGlv
biBjcmVhdGVJbnN0YW5jZUZvclRleHQodGV4dCkge1xuXHQgIHJldHVybiBuZXcgdGV4dENvbXBv
bmVudENsYXNzKHRleHQpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtSZWFjdENvbXBv
bmVudH0gY29tcG9uZW50XG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59XG5cdCAqL1xuXHRmdW5jdGlv
biBpc1RleHRDb21wb25lbnQoY29tcG9uZW50KSB7XG5cdCAgcmV0dXJuIGNvbXBvbmVudCBpbnN0
YW5jZW9mIHRleHRDb21wb25lbnRDbGFzcztcblx0fVxuXHRcblx0dmFyIFJlYWN0SG9zdENvbXBv
bmVudCA9IHtcblx0ICBjcmVhdGVJbnRlcm5hbENvbXBvbmVudDogY3JlYXRlSW50ZXJuYWxDb21w
b25lbnQsXG5cdCAgY3JlYXRlSW5zdGFuY2VGb3JUZXh0OiBjcmVhdGVJbnN0YW5jZUZvclRleHQs
XG5cdCAgaXNUZXh0Q29tcG9uZW50OiBpc1RleHRDb21wb25lbnQsXG5cdCAgaW5qZWN0aW9uOiBS
ZWFjdEhvc3RDb21wb25lbnRJbmplY3Rpb25cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
UmVhY3RIb3N0Q29tcG9uZW50O1xuXG4vKioqLyB9LFxuLyogNjYgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdHZhciBSZWFjdERPTVNlbGVjdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ1KTtc
blx0XG5cdHZhciBjb250YWluc05vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMCk7XG5cdHZh
ciBmb2N1c05vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUyKTtcblx0dmFyIGdldEFjdGl2ZUVs
ZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUzKTtcblx0XG5cdGZ1bmN0aW9uIGlzSW5Eb2N1
bWVudChub2RlKSB7XG5cdCAgcmV0dXJuIGNvbnRhaW5zTm9kZShkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQsIG5vZGUpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQFJlYWN0SW5wdXRTZWxlY3Rpb246
IFJlYWN0IGlucHV0IHNlbGVjdGlvbiBtb2R1bGUuIEJhc2VkIG9uIFNlbGVjdGlvbi5qcyxcblx0
ICogYnV0IG1vZGlmaWVkIHRvIGJlIHN1aXRhYmxlIGZvciByZWFjdCBhbmQgaGFzIGEgY291cGxl
IG9mIGJ1ZyBmaXhlcyAoZG9lc24ndFxuXHQgKiBhc3N1bWUgYnV0dG9ucyBoYXZlIHJhbmdlIHNl
bGVjdGlvbnMgYWxsb3dlZCkuXG5cdCAqIElucHV0IHNlbGVjdGlvbiBtb2R1bGUgZm9yIFJlYWN0
LlxuXHQgKi9cblx0dmFyIFJlYWN0SW5wdXRTZWxlY3Rpb24gPSB7XG5cdCAgaGFzU2VsZWN0aW9u
Q2FwYWJpbGl0aWVzOiBmdW5jdGlvbiAoZWxlbSkge1xuXHQgICAgdmFyIG5vZGVOYW1lID0gZWxl
bSAmJiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0ICAg
IHJldHVybiBub2RlTmFtZSAmJiAobm9kZU5hbWUgPT09ICdpbnB1dCcgJiYgZWxlbS50eXBlID09
PSAndGV4dCcgfHwgbm9kZU5hbWUgPT09ICd0ZXh0YXJlYScgfHwgZWxlbS5jb250ZW50RWRpdGFi
bGUgPT09ICd0cnVlJyk7XG5cdCAgfSxcblx0XG5cdCAgZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb246
IGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciBmb2N1c2VkRWxlbSA9IGdldEFjdGl2ZUVsZW1lbnQo
KTtcblx0ICAgIHJldHVybiB7XG5cdCAgICAgIGZvY3VzZWRFbGVtOiBmb2N1c2VkRWxlbSxcblx0
ICAgICAgc2VsZWN0aW9uUmFuZ2U6IFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2Fw
YWJpbGl0aWVzKGZvY3VzZWRFbGVtKSA/IFJlYWN0SW5wdXRTZWxlY3Rpb24uZ2V0U2VsZWN0aW9u
KGZvY3VzZWRFbGVtKSA6IG51bGxcblx0ICAgIH07XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAg
ICogQHJlc3RvcmVTZWxlY3Rpb246IElmIGFueSBzZWxlY3Rpb24gaW5mb3JtYXRpb24gd2FzIHBv
dGVudGlhbGx5IGxvc3QsXG5cdCAgICogcmVzdG9yZSBpdC4gVGhpcyBpcyB1c2VmdWwgd2hlbiBw
ZXJmb3JtaW5nIG9wZXJhdGlvbnMgdGhhdCBjb3VsZCByZW1vdmUgZG9tXG5cdCAgICogbm9kZXMg
YW5kIHBsYWNlIHRoZW0gYmFjayBpbiwgcmVzdWx0aW5nIGluIGZvY3VzIGJlaW5nIGxvc3QuXG5c
dCAgICovXG5cdCAgcmVzdG9yZVNlbGVjdGlvbjogZnVuY3Rpb24gKHByaW9yU2VsZWN0aW9uSW5m
b3JtYXRpb24pIHtcblx0ICAgIHZhciBjdXJGb2N1c2VkRWxlbSA9IGdldEFjdGl2ZUVsZW1lbnQo
KTtcblx0ICAgIHZhciBwcmlvckZvY3VzZWRFbGVtID0gcHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlv
bi5mb2N1c2VkRWxlbTtcblx0ICAgIHZhciBwcmlvclNlbGVjdGlvblJhbmdlID0gcHJpb3JTZWxl
Y3Rpb25JbmZvcm1hdGlvbi5zZWxlY3Rpb25SYW5nZTtcblx0ICAgIGlmIChjdXJGb2N1c2VkRWxl
bSAhPT0gcHJpb3JGb2N1c2VkRWxlbSAmJiBpc0luRG9jdW1lbnQocHJpb3JGb2N1c2VkRWxlbSkp
IHtcblx0ICAgICAgaWYgKFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0
aWVzKHByaW9yRm9jdXNlZEVsZW0pKSB7XG5cdCAgICAgICAgUmVhY3RJbnB1dFNlbGVjdGlvbi5z
ZXRTZWxlY3Rpb24ocHJpb3JGb2N1c2VkRWxlbSwgcHJpb3JTZWxlY3Rpb25SYW5nZSk7XG5cdCAg
ICAgIH1cblx0ICAgICAgZm9jdXNOb2RlKHByaW9yRm9jdXNlZEVsZW0pO1xuXHQgICAgfVxuXHQg
IH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBnZXRTZWxlY3Rpb246IEdldHMgdGhlIHNlbGVjdGlv
biBib3VuZHMgb2YgYSBmb2N1c2VkIHRleHRhcmVhLCBpbnB1dCBvclxuXHQgICAqIGNvbnRlbnRF
ZGl0YWJsZSBub2RlLlxuXHQgICAqIC1AaW5wdXQ6IExvb2sgdXAgc2VsZWN0aW9uIGJvdW5kcyBv
ZiB0aGlzIGlucHV0XG5cdCAgICogLUByZXR1cm4ge3N0YXJ0OiBzZWxlY3Rpb25TdGFydCwgZW5k
OiBzZWxlY3Rpb25FbmR9XG5cdCAgICovXG5cdCAgZ2V0U2VsZWN0aW9uOiBmdW5jdGlvbiAoaW5w
dXQpIHtcblx0ICAgIHZhciBzZWxlY3Rpb247XG5cdFxuXHQgICAgaWYgKCdzZWxlY3Rpb25TdGFy
dCcgaW4gaW5wdXQpIHtcblx0ICAgICAgLy8gTW9kZXJuIGJyb3dzZXIgd2l0aCBpbnB1dCBvciB0
ZXh0YXJlYS5cblx0ICAgICAgc2VsZWN0aW9uID0ge1xuXHQgICAgICAgIHN0YXJ0OiBpbnB1dC5z
ZWxlY3Rpb25TdGFydCxcblx0ICAgICAgICBlbmQ6IGlucHV0LnNlbGVjdGlvbkVuZFxuXHQgICAg
ICB9O1xuXHQgICAgfSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24gJiYgaW5wdXQubm9kZU5h
bWUgJiYgaW5wdXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0Jykge1xuXHQgICAg
ICAvLyBJRTggaW5wdXQuXG5cdCAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlvbi5j
cmVhdGVSYW5nZSgpO1xuXHQgICAgICAvLyBUaGVyZSBjYW4gb25seSBiZSBvbmUgc2VsZWN0aW9u
IHBlciBkb2N1bWVudCBpbiBJRSwgc28gaXQgbXVzdFxuXHQgICAgICAvLyBiZSBpbiBvdXIgZWxl
bWVudC5cblx0ICAgICAgaWYgKHJhbmdlLnBhcmVudEVsZW1lbnQoKSA9PT0gaW5wdXQpIHtcblx0
ICAgICAgICBzZWxlY3Rpb24gPSB7XG5cdCAgICAgICAgICBzdGFydDogLXJhbmdlLm1vdmVTdGFy
dCgnY2hhcmFjdGVyJywgLWlucHV0LnZhbHVlLmxlbmd0aCksXG5cdCAgICAgICAgICBlbmQ6IC1y
YW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCAtaW5wdXQudmFsdWUubGVuZ3RoKVxuXHQgICAgICAg
IH07XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIC8vIENvbnRlbnQgZWRpdGFi
bGUgb3Igb2xkIElFIHRleHRhcmVhLlxuXHQgICAgICBzZWxlY3Rpb24gPSBSZWFjdERPTVNlbGVj
dGlvbi5nZXRPZmZzZXRzKGlucHV0KTtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gc2VsZWN0
aW9uIHx8IHsgc3RhcnQ6IDAsIGVuZDogMCB9O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAq
IEBzZXRTZWxlY3Rpb246IFNldHMgdGhlIHNlbGVjdGlvbiBib3VuZHMgb2YgYSB0ZXh0YXJlYSBv
ciBpbnB1dCBhbmQgZm9jdXNlc1xuXHQgICAqIHRoZSBpbnB1dC5cblx0ICAgKiAtQGlucHV0ICAg
ICBTZXQgc2VsZWN0aW9uIGJvdW5kcyBvZiB0aGlzIGlucHV0IG9yIHRleHRhcmVhXG5cdCAgICog
LUBvZmZzZXRzICAgT2JqZWN0IG9mIHNhbWUgZm9ybSB0aGF0IGlzIHJldHVybmVkIGZyb20gZ2V0
KlxuXHQgICAqL1xuXHQgIHNldFNlbGVjdGlvbjogZnVuY3Rpb24gKGlucHV0LCBvZmZzZXRzKSB7
XG5cdCAgICB2YXIgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0O1xuXHQgICAgdmFyIGVuZCA9IG9mZnNl
dHMuZW5kO1xuXHQgICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgIGVuZCA9IHN0
YXJ0O1xuXHQgICAgfVxuXHRcblx0ICAgIGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIGlucHV0KSB7
XG5cdCAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID0gc3RhcnQ7XG5cdCAgICAgIGlucHV0LnNl
bGVjdGlvbkVuZCA9IE1hdGgubWluKGVuZCwgaW5wdXQudmFsdWUubGVuZ3RoKTtcblx0ICAgIH0g
ZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uICYmIGlucHV0Lm5vZGVOYW1lICYmIGlucHV0Lm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcpIHtcblx0ICAgICAgdmFyIHJhbmdlID0g
aW5wdXQuY3JlYXRlVGV4dFJhbmdlKCk7XG5cdCAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpO1xu
XHQgICAgICByYW5nZS5tb3ZlU3RhcnQoJ2NoYXJhY3RlcicsIHN0YXJ0KTtcblx0ICAgICAgcmFu
Z2UubW92ZUVuZCgnY2hhcmFjdGVyJywgZW5kIC0gc3RhcnQpO1xuXHQgICAgICByYW5nZS5zZWxl
Y3QoKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIFJlYWN0RE9NU2VsZWN0aW9uLnNldE9mZnNl
dHMoaW5wdXQsIG9mZnNldHMpO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gUmVhY3RJbnB1dFNlbGVjdGlvbjtcblxuLyoqKi8gfSxcbi8qIDY3ICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQv
Kipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDMpO1xuXHRcblx0dmFyIERPTUxhenlUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5c
dHZhciBET01Qcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpO1xuXHR2YXIgUmVhY3Qg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTtcblx0dmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ciA9IF9fd2VicGFja19yZXF1aXJlX18oMjUpO1xuXHR2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9f
d2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBSZWFjdERPTUNvbnRhaW5lckluZm8gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDEzOSk7XG5cdHZhciBSZWFjdERPTUZlYXR1cmVGbGFncyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTQxKTtcblx0dmFyIFJlYWN0RmVhdHVyZUZsYWdzID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg2NCk7XG5cdHZhciBSZWFjdEluc3RhbmNlTWFwID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyMSk7XG5cdHZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9fd2VicGFja19yZXF1aXJl
X18oOCk7XG5cdHZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
NTUpO1xuXHR2YXIgUmVhY3RSZWNvbmNpbGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNik7XG5c
dHZhciBSZWFjdFVwZGF0ZVF1ZXVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdHZhciBS
ZWFjdFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXHRcblx0dmFyIGVtcHR5T2Jq
ZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNCk7XG5cdHZhciBpbnN0YW50aWF0ZVJlYWN0Q29t
cG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NSk7XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDEpO1xuXHR2YXIgc2V0SW5uZXJIVE1MID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyOSk7XG5cdHZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IF9fd2VicGFja19y
ZXF1aXJlX18oNDgpO1xuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5c
dFxuXHR2YXIgQVRUUl9OQU1FID0gRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05BTUU7XG5cdHZh
ciBST09UX0FUVFJfTkFNRSA9IERPTVByb3BlcnR5LlJPT1RfQVRUUklCVVRFX05BTUU7XG5cdFxu
XHR2YXIgRUxFTUVOVF9OT0RFX1RZUEUgPSAxO1xuXHR2YXIgRE9DX05PREVfVFlQRSA9IDk7XG5c
dHZhciBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUgPSAxMTtcblx0XG5cdHZhciBpbnN0YW5j
ZXNCeVJlYWN0Um9vdElEID0ge307XG5cdFxuXHQvKipcblx0ICogRmluZHMgdGhlIGluZGV4IG9m
IHRoZSBmaXJzdCBjaGFyYWN0ZXJcblx0ICogdGhhdCdzIG5vdCBjb21tb24gYmV0d2VlbiB0aGUg
dHdvIGdpdmVuIHN0cmluZ3MuXG5cdCAqXG5cdCAqIEByZXR1cm4ge251bWJlcn0gdGhlIGluZGV4
IG9mIHRoZSBjaGFyYWN0ZXIgd2hlcmUgdGhlIHN0cmluZ3MgZGl2ZXJnZVxuXHQgKi9cblx0ZnVu
Y3Rpb24gZmlyc3REaWZmZXJlbmNlSW5kZXgoc3RyaW5nMSwgc3RyaW5nMikge1xuXHQgIHZhciBt
aW5MZW4gPSBNYXRoLm1pbihzdHJpbmcxLmxlbmd0aCwgc3RyaW5nMi5sZW5ndGgpO1xuXHQgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbWluTGVuOyBpKyspIHtcblx0ICAgIGlmIChzdHJpbmcxLmNoYXJB
dChpKSAhPT0gc3RyaW5nMi5jaGFyQXQoaSkpIHtcblx0ICAgICAgcmV0dXJuIGk7XG5cdCAgICB9
XG5cdCAgfVxuXHQgIHJldHVybiBzdHJpbmcxLmxlbmd0aCA9PT0gc3RyaW5nMi5sZW5ndGggPyAt
MSA6IG1pbkxlbjtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01E
b2N1bWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRoYXQgbWF5IGNvbnRhaW5cblx0ICogYSBS
ZWFjdCBjb21wb25lbnRcblx0ICogQHJldHVybiB7Pyp9IERPTSBlbGVtZW50IHRoYXQgbWF5IGhh
dmUgdGhlIHJlYWN0Um9vdCBJRCwgb3IgbnVsbC5cblx0ICovXG5cdGZ1bmN0aW9uIGdldFJlYWN0
Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpIHtcblx0ICBpZiAoIWNvbnRhaW5lcikg
e1xuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHRcblx0ICBpZiAoY29udGFpbmVyLm5vZGVU
eXBlID09PSBET0NfTk9ERV9UWVBFKSB7XG5cdCAgICByZXR1cm4gY29udGFpbmVyLmRvY3VtZW50
RWxlbWVudDtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIGNvbnRhaW5lci5maXJzdENoaWxk
O1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gaW50ZXJuYWxHZXRJRChub2RlKSB7XG5cdCAg
Ly8gSWYgbm9kZSBpcyBzb21ldGhpbmcgbGlrZSBhIHdpbmRvdywgZG9jdW1lbnQsIG9yIHRleHQg
bm9kZSwgbm9uZSBvZlxuXHQgIC8vIHdoaWNoIHN1cHBvcnQgYXR0cmlidXRlcyBvciBhIC5nZXRB
dHRyaWJ1dGUgbWV0aG9kLCBncmFjZWZ1bGx5IHJldHVyblxuXHQgIC8vIHRoZSBlbXB0eSBzdHJp
bmcsIGFzIGlmIHRoZSBhdHRyaWJ1dGUgd2VyZSBtaXNzaW5nLlxuXHQgIHJldHVybiBub2RlLmdl
dEF0dHJpYnV0ZSAmJiBub2RlLmdldEF0dHJpYnV0ZShBVFRSX05BTUUpIHx8ICcnO1xuXHR9XG5c
dFxuXHQvKipcblx0ICogTW91bnRzIHRoaXMgY29tcG9uZW50IGFuZCBpbnNlcnRzIGl0IGludG8g
dGhlIERPTS5cblx0ICpcblx0ICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50SW5z
dGFuY2UgVGhlIGluc3RhbmNlIHRvIG1vdW50LlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNv
bnRhaW5lciBET00gZWxlbWVudCB0byBtb3VudCBpbnRvLlxuXHQgKiBAcGFyYW0ge1JlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hv
dWxkUmV1c2VNYXJrdXAgSWYgdHJ1ZSwgZG8gbm90IGluc2VydCBtYXJrdXBcblx0ICovXG5cdGZ1
bmN0aW9uIG1vdW50Q29tcG9uZW50SW50b05vZGUod3JhcHBlckluc3RhbmNlLCBjb250YWluZXIs
IHRyYW5zYWN0aW9uLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCkge1xuXHQgIHZhciBtYXJr
ZXJOYW1lO1xuXHQgIGlmIChSZWFjdEZlYXR1cmVGbGFncy5sb2dUb3BMZXZlbFJlbmRlcnMpIHtc
blx0ICAgIHZhciB3cmFwcGVkRWxlbWVudCA9IHdyYXBwZXJJbnN0YW5jZS5fY3VycmVudEVsZW1l
bnQucHJvcHMuY2hpbGQ7XG5cdCAgICB2YXIgdHlwZSA9IHdyYXBwZWRFbGVtZW50LnR5cGU7XG5c
dCAgICBtYXJrZXJOYW1lID0gJ1JlYWN0IG1vdW50OiAnICsgKHR5cGVvZiB0eXBlID09PSAnc3Ry
aW5nJyA/IHR5cGUgOiB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSk7XG5cdCAgICBjb25z
b2xlLnRpbWUobWFya2VyTmFtZSk7XG5cdCAgfVxuXHRcblx0ICB2YXIgbWFya3VwID0gUmVhY3RS
ZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KHdyYXBwZXJJbnN0YW5jZSwgdHJhbnNhY3Rpb24sIG51
bGwsIFJlYWN0RE9NQ29udGFpbmVySW5mbyh3cmFwcGVySW5zdGFuY2UsIGNvbnRhaW5lciksIGNv
bnRleHQsIDAgLyogcGFyZW50RGVidWdJRCAqL1xuXHQgICk7XG5cdFxuXHQgIGlmIChtYXJrZXJO
YW1lKSB7XG5cdCAgICBjb25zb2xlLnRpbWVFbmQobWFya2VyTmFtZSk7XG5cdCAgfVxuXHRcblx0
ICB3cmFwcGVySW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50Ll90b3BMZXZlbFdyYXBwZXIgPSB3
cmFwcGVySW5zdGFuY2U7XG5cdCAgUmVhY3RNb3VudC5fbW91bnRJbWFnZUludG9Ob2RlKG1hcmt1
cCwgY29udGFpbmVyLCB3cmFwcGVySW5zdGFuY2UsIHNob3VsZFJldXNlTWFya3VwLCB0cmFuc2Fj
dGlvbik7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBCYXRjaGVkIG1vdW50LlxuXHQgKlxuXHQgKiBA
cGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnRJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8g
bW91bnQuXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRv
IG1vdW50IGludG8uXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgSWYg
dHJ1ZSwgZG8gbm90IGluc2VydCBtYXJrdXBcblx0ICovXG5cdGZ1bmN0aW9uIGJhdGNoZWRNb3Vu
dENvbXBvbmVudEludG9Ob2RlKGNvbXBvbmVudEluc3RhbmNlLCBjb250YWluZXIsIHNob3VsZFJl
dXNlTWFya3VwLCBjb250ZXh0KSB7XG5cdCAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVz
LlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKFxuXHQgIC8qIHVzZUNyZWF0ZUVs
ZW1lbnQgKi9cblx0ICAhc2hvdWxkUmV1c2VNYXJrdXAgJiYgUmVhY3RET01GZWF0dXJlRmxhZ3Mu
dXNlQ3JlYXRlRWxlbWVudCk7XG5cdCAgdHJhbnNhY3Rpb24ucGVyZm9ybShtb3VudENvbXBvbmVu
dEludG9Ob2RlLCBudWxsLCBjb21wb25lbnRJbnN0YW5jZSwgY29udGFpbmVyLCB0cmFuc2FjdGlv
biwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpO1xuXHQgIFJlYWN0VXBkYXRlcy5SZWFjdFJl
Y29uY2lsZVRyYW5zYWN0aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pO1xuXHR9XG5cdFxuXHQvKipc
blx0ICogVW5tb3VudHMgYSBjb21wb25lbnQgYW5kIHJlbW92ZXMgaXQgZnJvbSB0aGUgRE9NLlxu
XHQgKlxuXHQgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBpbnN0YW5jZSBSZWFjdCBjb21wb25l
bnQgaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVt
ZW50IHRvIHVubW91bnQgZnJvbS5cblx0ICogQGZpbmFsXG5cdCAqIEBpbnRlcm5hbFxuXHQgKiBA
c2VlIHtSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGV9XG5cdCAqL1xuXHRmdW5jdGlv
biB1bm1vdW50Q29tcG9uZW50RnJvbU5vZGUoaW5zdGFuY2UsIGNvbnRhaW5lciwgc2FmZWx5KSB7
XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wu
b25CZWdpbkZsdXNoKCk7XG5cdCAgfVxuXHQgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9u
ZW50KGluc3RhbmNlLCBzYWZlbHkpO1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgUmVhY3RJbnN0
cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5kRmx1c2goKTtcblx0ICB9XG5cdFxuXHQgIGlmIChj
b250YWluZXIubm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUpIHtcblx0ICAgIGNvbnRhaW5lciA9
IGNvbnRhaW5lci5kb2N1bWVudEVsZW1lbnQ7XG5cdCAgfVxuXHRcblx0ICAvLyBodHRwOi8vanNw
ZXJmLmNvbS9lbXB0eWluZy1hLW5vZGVcblx0ICB3aGlsZSAoY29udGFpbmVyLmxhc3RDaGlsZCkg
e1xuXHQgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRhaW5lci5sYXN0Q2hpbGQpO1xuXHQg
IH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFRydWUgaWYgdGhlIHN1cHBsaWVkIERPTSBub2RlIGhh
cyBhIGRpcmVjdCBSZWFjdC1yZW5kZXJlZCBjaGlsZCB0aGF0IGlzXG5cdCAqIG5vdCBhIFJlYWN0
IHJvb3QgZWxlbWVudC4gVXNlZnVsIGZvciB3YXJuaW5nIGluIGByZW5kZXJgLFxuXHQgKiBgdW5t
b3VudENvbXBvbmVudEF0Tm9kZWAsIGV0Yy5cblx0ICpcblx0ICogQHBhcmFtIHs/RE9NRWxlbWVu
dH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBU
cnVlIGlmIHRoZSBET00gZWxlbWVudCBjb250YWlucyBhIGRpcmVjdCBjaGlsZCB0aGF0IHdhc1xu
XHQgKiByZW5kZXJlZCBieSBSZWFjdCBidXQgaXMgbm90IGEgcm9vdCBlbGVtZW50LlxuXHQgKiBA
aW50ZXJuYWxcblx0ICovXG5cdGZ1bmN0aW9uIGhhc05vblJvb3RSZWFjdENoaWxkKGNvbnRhaW5l
cikge1xuXHQgIHZhciByb290RWwgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29u
dGFpbmVyKTtcblx0ICBpZiAocm9vdEVsKSB7XG5cdCAgICB2YXIgaW5zdCA9IFJlYWN0RE9NQ29t
cG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKHJvb3RFbCk7XG5cdCAgICByZXR1cm4gISEo
aW5zdCAmJiBpbnN0Ll9ob3N0UGFyZW50KTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBU
cnVlIGlmIHRoZSBzdXBwbGllZCBET00gbm9kZSBpcyBhIFJlYWN0IERPTSBlbGVtZW50IGFuZFxu
XHQgKiBpdCBoYXMgYmVlbiByZW5kZXJlZCBieSBhbm90aGVyIGNvcHkgb2YgUmVhY3QuXG5cdCAq
XG5cdCAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0ZSBET00gbm9kZS5c
blx0ICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGhhcyBiZWVuIHJlbmRlcmVk
IGJ5IGFub3RoZXIgY29weSBvZiBSZWFjdFxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGZ1bmN0
aW9uIG5vZGVJc1JlbmRlcmVkQnlPdGhlckluc3RhbmNlKGNvbnRhaW5lcikge1xuXHQgIHZhciBy
b290RWwgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcblx0ICBy
ZXR1cm4gISEocm9vdEVsICYmIGlzUmVhY3ROb2RlKHJvb3RFbCkgJiYgIVJlYWN0RE9NQ29tcG9u
ZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKHJvb3RFbCkpO1xuXHR9XG5cdFxuXHQvKipcblx0
ICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaXMgYSB2YWxpZCBub2RlIGVsZW1lbnQu
XG5cdCAqXG5cdCAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0ZSBET00g
bm9kZS5cblx0ICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGlzIGEgdmFsaWQg
RE9NIG5vZGUuXG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0ZnVuY3Rpb24gaXNWYWxpZENvbnRh
aW5lcihub2RlKSB7XG5cdCAgcmV0dXJuICEhKG5vZGUgJiYgKG5vZGUubm9kZVR5cGUgPT09IEVM
RU1FTlRfTk9ERV9UWVBFIHx8IG5vZGUubm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUgfHwgbm9k
ZS5ub2RlVHlwZSA9PT0gRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFKSk7XG5cdH1cblx0XG5c
dC8qKlxuXHQgKiBUcnVlIGlmIHRoZSBzdXBwbGllZCBET00gbm9kZSBpcyBhIHZhbGlkIFJlYWN0
IG5vZGUgZWxlbWVudC5cblx0ICpcblx0ICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUg
Y2FuZGlkYXRlIERPTSBub2RlLlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBE
T00gaXMgYSB2YWxpZCBSZWFjdCBET00gbm9kZS5cblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRm
dW5jdGlvbiBpc1JlYWN0Tm9kZShub2RlKSB7XG5cdCAgcmV0dXJuIGlzVmFsaWRDb250YWluZXIo
bm9kZSkgJiYgKG5vZGUuaGFzQXR0cmlidXRlKFJPT1RfQVRUUl9OQU1FKSB8fCBub2RlLmhhc0F0
dHJpYnV0ZShBVFRSX05BTUUpKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2V0SG9zdFJvb3RJbnN0
YW5jZUluQ29udGFpbmVyKGNvbnRhaW5lcikge1xuXHQgIHZhciByb290RWwgPSBnZXRSZWFjdFJv
b3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcblx0ICB2YXIgcHJldkhvc3RJbnN0YW5j
ZSA9IHJvb3RFbCAmJiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShy
b290RWwpO1xuXHQgIHJldHVybiBwcmV2SG9zdEluc3RhbmNlICYmICFwcmV2SG9zdEluc3RhbmNl
Ll9ob3N0UGFyZW50ID8gcHJldkhvc3RJbnN0YW5jZSA6IG51bGw7XG5cdH1cblx0XG5cdGZ1bmN0
aW9uIGdldFRvcExldmVsV3JhcHBlckluQ29udGFpbmVyKGNvbnRhaW5lcikge1xuXHQgIHZhciBy
b290ID0gZ2V0SG9zdFJvb3RJbnN0YW5jZUluQ29udGFpbmVyKGNvbnRhaW5lcik7XG5cdCAgcmV0
dXJuIHJvb3QgPyByb290Ll9ob3N0Q29udGFpbmVySW5mby5fdG9wTGV2ZWxXcmFwcGVyIDogbnVs
bDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFRlbXBvcmFyeSAoPykgaGFjayBzbyB0aGF0IHdlIGNh
biBzdG9yZSBhbGwgdG9wLWxldmVsIHBlbmRpbmcgdXBkYXRlcyBvblxuXHQgKiBjb21wb3NpdGVz
IGluc3RlYWQgb2YgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IGRpZmZlcmVudCB0eXBlcyBvZiBjb21w
b25lbnRzXG5cdCAqIGhlcmUuXG5cdCAqL1xuXHR2YXIgdG9wTGV2ZWxSb290Q291bnRlciA9IDE7
XG5cdHZhciBUb3BMZXZlbFdyYXBwZXIgPSBmdW5jdGlvbiAoKSB7XG5cdCAgdGhpcy5yb290SUQg
PSB0b3BMZXZlbFJvb3RDb3VudGVyKys7XG5cdH07XG5cdFRvcExldmVsV3JhcHBlci5wcm90b3R5
cGUuaXNSZWFjdENvbXBvbmVudCA9IHt9O1xuXHRpZiAoZmFsc2UpIHtcblx0ICBUb3BMZXZlbFdy
YXBwZXIuZGlzcGxheU5hbWUgPSAnVG9wTGV2ZWxXcmFwcGVyJztcblx0fVxuXHRUb3BMZXZlbFdy
YXBwZXIucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcblx0ICByZXR1cm4gdGhpcy5w
cm9wcy5jaGlsZDtcblx0fTtcblx0VG9wTGV2ZWxXcmFwcGVyLmlzUmVhY3RUb3BMZXZlbFdyYXBw
ZXIgPSB0cnVlO1xuXHRcblx0LyoqXG5cdCAqIE1vdW50aW5nIGlzIHRoZSBwcm9jZXNzIG9mIGlu
aXRpYWxpemluZyBhIFJlYWN0IGNvbXBvbmVudCBieSBjcmVhdGluZyBpdHNcblx0ICogcmVwcmVz
ZW50YXRpdmUgRE9NIGVsZW1lbnRzIGFuZCBpbnNlcnRpbmcgdGhlbSBpbnRvIGEgc3VwcGxpZWQg
YGNvbnRhaW5lcmAuXG5cdCAqIEFueSBwcmlvciBjb250ZW50IGluc2lkZSBgY29udGFpbmVyYCBp
cyBkZXN0cm95ZWQgaW4gdGhlIHByb2Nlc3MuXG5cdCAqXG5cdCAqICAgUmVhY3RNb3VudC5yZW5k
ZXIoXG5cdCAqICAgICBjb21wb25lbnQsXG5cdCAqICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29udGFpbmVyJylcblx0ICogICApO1xuXHQgKlxuXHQgKiAgIDxkaXYgaWQ9XCJjb250YWlu
ZXJcIj4gICAgICAgICAgICAgICAgICAgPC0tIFN1cHBsaWVkIGBjb250YWluZXJgLlxuXHQgKiAg
ICAgPGRpdiBkYXRhLXJlYWN0aWQ9XCIuM1wiPiAgICAgICAgICAgICAgPC0tIFJlbmRlcmVkIHJl
YWN0Um9vdCBvZiBSZWFjdFxuXHQgKiAgICAgICAvLyAuLi4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21wb25lbnQuXG5cdCAqICAgICA8L2Rpdj5cblx0ICogICA8L2Rpdj5cblx0
ICpcblx0ICogSW5zaWRlIG9mIGBjb250YWluZXJgLCB0aGUgZmlyc3QgZWxlbWVudCByZW5kZXJl
ZCBpcyB0aGUgXCJyZWFjdFJvb3RcIi5cblx0ICovXG5cdHZhciBSZWFjdE1vdW50ID0ge1xuXHQg
IFRvcExldmVsV3JhcHBlcjogVG9wTGV2ZWxXcmFwcGVyLFxuXHRcblx0ICAvKipcblx0ICAgKiBV
c2VkIGJ5IGRldnRvb2xzLiBUaGUga2V5cyBhcmUgbm90IGltcG9ydGFudC5cblx0ICAgKi9cblx0
ICBfaW5zdGFuY2VzQnlSZWFjdFJvb3RJRDogaW5zdGFuY2VzQnlSZWFjdFJvb3RJRCxcblx0XG5c
dCAgLyoqXG5cdCAgICogVGhpcyBpcyBhIGhvb2sgcHJvdmlkZWQgdG8gc3VwcG9ydCByZW5kZXJp
bmcgUmVhY3QgY29tcG9uZW50cyB3aGlsZVxuXHQgICAqIGVuc3VyaW5nIHRoYXQgdGhlIGFwcGFy
ZW50IHNjcm9sbCBwb3NpdGlvbiBvZiBpdHMgYGNvbnRhaW5lcmAgZG9lcyBub3Rcblx0ICAgKiBj
aGFuZ2UuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBUaGUg
YGNvbnRhaW5lcmAgYmVpbmcgcmVuZGVyZWQgaW50by5cblx0ICAgKiBAcGFyYW0ge2Z1bmN0aW9u
fSByZW5kZXJDYWxsYmFjayBUaGlzIG11c3QgYmUgY2FsbGVkIG9uY2UgdG8gZG8gdGhlIHJlbmRl
ci5cblx0ICAgKi9cblx0ICBzY3JvbGxNb25pdG9yOiBmdW5jdGlvbiAoY29udGFpbmVyLCByZW5k
ZXJDYWxsYmFjaykge1xuXHQgICAgcmVuZGVyQ2FsbGJhY2soKTtcblx0ICB9LFxuXHRcblx0ICAv
Kipcblx0ICAgKiBUYWtlIGEgY29tcG9uZW50IHRoYXQncyBhbHJlYWR5IG1vdW50ZWQgaW50byB0
aGUgRE9NIGFuZCByZXBsYWNlIGl0cyBwcm9wc1xuXHQgICAqIEBwYXJhbSB7UmVhY3RDb21wb25l
bnR9IHByZXZDb21wb25lbnQgY29tcG9uZW50IGluc3RhbmNlIGFscmVhZHkgaW4gdGhlIERPTVxu
XHQgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBjb21wb25lbnQgaW5zdGFu
Y2UgdG8gcmVuZGVyXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgY29udGFp
bmVyIHRvIHJlbmRlciBpbnRvXG5cdCAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIGZ1
bmN0aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uXG5cdCAgICovXG5cdCAgX3VwZGF0ZVJvb3RD
b21wb25lbnQ6IGZ1bmN0aW9uIChwcmV2Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgbmV4dENvbnRl
eHQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHtcblx0ICAgIFJlYWN0TW91bnQuc2Nyb2xsTW9uaXRv
cihjb250YWluZXIsIGZ1bmN0aW9uICgpIHtcblx0ICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1
ZXVlRWxlbWVudEludGVybmFsKHByZXZDb21wb25lbnQsIG5leHRFbGVtZW50LCBuZXh0Q29udGV4
dCk7XG5cdCAgICAgIGlmIChjYWxsYmFjaykge1xuXHQgICAgICAgIFJlYWN0VXBkYXRlUXVldWUu
ZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwocHJldkNvbXBvbmVudCwgY2FsbGJhY2spO1xuXHQgICAg
ICB9XG5cdCAgICB9KTtcblx0XG5cdCAgICByZXR1cm4gcHJldkNvbXBvbmVudDtcblx0ICB9LFxu
XHRcblx0ICAvKipcblx0ICAgKiBSZW5kZXIgYSBuZXcgY29tcG9uZW50IGludG8gdGhlIERPTS4g
SG9va2VkIGJ5IGhvb2tzIVxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5l
eHRFbGVtZW50IGVsZW1lbnQgdG8gcmVuZGVyXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBj
b250YWluZXIgY29udGFpbmVyIHRvIHJlbmRlciBpbnRvXG5cdCAgICogQHBhcmFtIHtib29sZWFu
fSBzaG91bGRSZXVzZU1hcmt1cCBpZiB3ZSBzaG91bGQgc2tpcCB0aGUgbWFya3VwIGluc2VydGlv
blxuXHQgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBuZXh0Q29tcG9uZW50XG5cdCAgICov
XG5cdCAgX3JlbmRlck5ld1Jvb3RDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgY29u
dGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCkge1xuXHQgICAgLy8gVmFyaW91cyBw
YXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG5cdCAg
ICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0byByZW5k
ZXIgYXJlbid0IG5lc3RlZDtcblx0ICAgIC8vIHZlcmlmeSB0aGF0IHRoYXQncyB0aGUgY2FzZS5c
blx0ICAgICBmYWxzZSA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBudWxs
LCAnX3JlbmRlck5ld1Jvb3RDb21wb25lbnQoKTogUmVuZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEg
cHVyZSBmdW5jdGlvbiAnICsgJ29mIHByb3BzIGFuZCBzdGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQg
Y29tcG9uZW50IHVwZGF0ZXMgZnJvbSAnICsgJ3JlbmRlciBpcyBub3QgYWxsb3dlZC4gSWYgbmVj
ZXNzYXJ5LCB0cmlnZ2VyIG5lc3RlZCB1cGRhdGVzIGluICcgKyAnY29tcG9uZW50RGlkVXBkYXRl
LiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAlcy4nLCBSZWFjdEN1cnJlbnRPd25lci5jdXJy
ZW50ICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBv
c2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHRcblx0ICAgICFpc1ZhbGlkQ29udGFpbmVyKGNv
bnRhaW5lcikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdfcmVnaXN0ZXJDb21wb25lbnQo
Li4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgYSBET00gZWxlbWVudC4nKSA6IF9wcm9kSW52
YXJpYW50KCczNycpIDogdm9pZCAwO1xuXHRcblx0ICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ci5lbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3JpbmcoKTtcblx0ICAgIHZhciBjb21wb25lbnRJbnN0
YW5jZSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dEVsZW1lbnQsIGZhbHNlKTtcblx0
XG5cdCAgICAvLyBUaGUgaW5pdGlhbCByZW5kZXIgaXMgc3luY2hyb25vdXMgYnV0IGFueSB1cGRh
dGVzIHRoYXQgaGFwcGVuIGR1cmluZ1xuXHQgICAgLy8gcmVuZGVyaW5nLCBpbiBjb21wb25lbnRX
aWxsTW91bnQgb3IgY29tcG9uZW50RGlkTW91bnQsIHdpbGwgYmUgYmF0Y2hlZFxuXHQgICAgLy8g
YWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGJhdGNoaW5nIHN0cmF0ZWd5LlxuXHRcblx0ICAgIFJl
YWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyhiYXRjaGVkTW91bnRDb21wb25lbnRJbnRvTm9kZSwg
Y29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQp
O1xuXHRcblx0ICAgIHZhciB3cmFwcGVySUQgPSBjb21wb25lbnRJbnN0YW5jZS5faW5zdGFuY2Uu
cm9vdElEO1xuXHQgICAgaW5zdGFuY2VzQnlSZWFjdFJvb3RJRFt3cmFwcGVySURdID0gY29tcG9u
ZW50SW5zdGFuY2U7XG5cdFxuXHQgICAgcmV0dXJuIGNvbXBvbmVudEluc3RhbmNlO1xuXHQgIH0s
XG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlbmRlcnMgYSBSZWFjdCBjb21wb25lbnQgaW50byB0aGUg
RE9NIGluIHRoZSBzdXBwbGllZCBgY29udGFpbmVyYC5cblx0ICAgKlxuXHQgICAqIElmIHRoZSBS
ZWFjdCBjb21wb25lbnQgd2FzIHByZXZpb3VzbHkgcmVuZGVyZWQgaW50byBgY29udGFpbmVyYCwg
dGhpcyB3aWxsXG5cdCAgICogcGVyZm9ybSBhbiB1cGRhdGUgb24gaXQgYW5kIG9ubHkgbXV0YXRl
IHRoZSBET00gYXMgbmVjZXNzYXJ5IHRvIHJlZmxlY3QgdGhlXG5cdCAgICogbGF0ZXN0IFJlYWN0
IGNvbXBvbmVudC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IHBhcmVu
dENvbXBvbmVudCBUaGUgY29uY2VwdHVhbCBwYXJlbnQgb2YgdGhpcyByZW5kZXIgdHJlZS5cblx0
ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgQ29tcG9uZW50IGVsZW1lbnQg
dG8gcmVuZGVyLlxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVt
ZW50IHRvIHJlbmRlciBpbnRvLlxuXHQgICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBm
dW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvblxuXHQgICAqIEByZXR1cm4ge1JlYWN0Q29t
cG9uZW50fSBDb21wb25lbnQgaW5zdGFuY2UgcmVuZGVyZWQgaW4gYGNvbnRhaW5lcmAuXG5cdCAg
ICovXG5cdCAgcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IGZ1bmN0aW9uIChwYXJlbnRDb21w
b25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG5cdCAgICAhKHBhcmVu
dENvbXBvbmVudCAhPSBudWxsICYmIFJlYWN0SW5zdGFuY2VNYXAuaGFzKHBhcmVudENvbXBvbmVu
dCkpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAncGFyZW50Q29tcG9uZW50IG11c3QgYmUg
YSB2YWxpZCBSZWFjdCBDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCczOCcpIDogdm9pZCAw
O1xuXHQgICAgcmV0dXJuIFJlYWN0TW91bnQuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKHBh
cmVudENvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spO1xuXHQgIH0s
XG5cdFxuXHQgIF9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjogZnVuY3Rpb24gKHBhcmVudENv
bXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHtcblx0ICAgIFJlYWN0
VXBkYXRlUXVldWUudmFsaWRhdGVDYWxsYmFjayhjYWxsYmFjaywgJ1JlYWN0RE9NLnJlbmRlcicp
O1xuXHQgICAgIVJlYWN0LmlzVmFsaWRFbGVtZW50KG5leHRFbGVtZW50KSA/ICBmYWxzZSA/IGlu
dmFyaWFudChmYWxzZSwgJ1JlYWN0RE9NLnJlbmRlcigpOiBJbnZhbGlkIGNvbXBvbmVudCBlbGVt
ZW50LiVzJywgdHlwZW9mIG5leHRFbGVtZW50ID09PSAnc3RyaW5nJyA/IFwiIEluc3RlYWQgb2Yg
cGFzc2luZyBhIHN0cmluZyBsaWtlICdkaXYnLCBwYXNzIFwiICsgXCJSZWFjdC5jcmVhdGVFbGVt
ZW50KCdkaXYnKSBvciA8ZGl2IC8+LlwiIDogdHlwZW9mIG5leHRFbGVtZW50ID09PSAnZnVuY3Rp
b24nID8gJyBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBjbGFzcyBsaWtlIEZvbywgcGFzcyAnICsgJ1Jl
YWN0LmNyZWF0ZUVsZW1lbnQoRm9vKSBvciA8Rm9vIC8+LicgOiAvLyBDaGVjayBpZiBpdCBxdWFj
a3MgbGlrZSBhbiBlbGVtZW50XG5cdCAgICBuZXh0RWxlbWVudCAhPSBudWxsICYmIG5leHRFbGVt
ZW50LnByb3BzICE9PSB1bmRlZmluZWQgPyAnIFRoaXMgbWF5IGJlIGNhdXNlZCBieSB1bmludGVu
dGlvbmFsbHkgbG9hZGluZyB0d28gaW5kZXBlbmRlbnQgJyArICdjb3BpZXMgb2YgUmVhY3QuJyA6
ICcnKSA6IF9wcm9kSW52YXJpYW50KCczOScsIHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ3N0cmlu
ZycgPyBcIiBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBzdHJpbmcgbGlrZSAnZGl2JywgcGFzcyBcIiAr
IFwiUmVhY3QuY3JlYXRlRWxlbWVudCgnZGl2Jykgb3IgPGRpdiAvPi5cIiA6IHR5cGVvZiBuZXh0
RWxlbWVudCA9PT0gJ2Z1bmN0aW9uJyA/ICcgSW5zdGVhZCBvZiBwYXNzaW5nIGEgY2xhc3MgbGlr
ZSBGb28sIHBhc3MgJyArICdSZWFjdC5jcmVhdGVFbGVtZW50KEZvbykgb3IgPEZvbyAvPi4nIDog
bmV4dEVsZW1lbnQgIT0gbnVsbCAmJiBuZXh0RWxlbWVudC5wcm9wcyAhPT0gdW5kZWZpbmVkID8g
JyBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbGx5IGxvYWRpbmcgdHdvIGluZGVw
ZW5kZW50ICcgKyAnY29waWVzIG9mIFJlYWN0LicgOiAnJykgOiB2b2lkIDA7XG5cdFxuXHQgICAg
IGZhbHNlID8gd2FybmluZyghY29udGFpbmVyIHx8ICFjb250YWluZXIudGFnTmFtZSB8fCBjb250
YWluZXIudGFnTmFtZS50b1VwcGVyQ2FzZSgpICE9PSAnQk9EWScsICdyZW5kZXIoKTogUmVuZGVy
aW5nIGNvbXBvbmVudHMgZGlyZWN0bHkgaW50byBkb2N1bWVudC5ib2R5IGlzICcgKyAnZGlzY291
cmFnZWQsIHNpbmNlIGl0cyBjaGlsZHJlbiBhcmUgb2Z0ZW4gbWFuaXB1bGF0ZWQgYnkgdGhpcmQt
cGFydHkgJyArICdzY3JpcHRzIGFuZCBicm93c2VyIGV4dGVuc2lvbnMuIFRoaXMgbWF5IGxlYWQg
dG8gc3VidGxlICcgKyAncmVjb25jaWxpYXRpb24gaXNzdWVzLiBUcnkgcmVuZGVyaW5nIGludG8g
YSBjb250YWluZXIgZWxlbWVudCBjcmVhdGVkICcgKyAnZm9yIHlvdXIgYXBwLicpIDogdm9pZCAw
O1xuXHRcblx0ICAgIHZhciBuZXh0V3JhcHBlZEVsZW1lbnQgPSBSZWFjdC5jcmVhdGVFbGVtZW50
KFRvcExldmVsV3JhcHBlciwge1xuXHQgICAgICBjaGlsZDogbmV4dEVsZW1lbnRcblx0ICAgIH0p
O1xuXHRcblx0ICAgIHZhciBuZXh0Q29udGV4dDtcblx0ICAgIGlmIChwYXJlbnRDb21wb25lbnQp
IHtcblx0ICAgICAgdmFyIHBhcmVudEluc3QgPSBSZWFjdEluc3RhbmNlTWFwLmdldChwYXJlbnRD
b21wb25lbnQpO1xuXHQgICAgICBuZXh0Q29udGV4dCA9IHBhcmVudEluc3QuX3Byb2Nlc3NDaGls
ZENvbnRleHQocGFyZW50SW5zdC5fY29udGV4dCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBu
ZXh0Q29udGV4dCA9IGVtcHR5T2JqZWN0O1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBwcmV2Q29t
cG9uZW50ID0gZ2V0VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFpbmVyKTtcblx0XG5c
dCAgICBpZiAocHJldkNvbXBvbmVudCkge1xuXHQgICAgICB2YXIgcHJldldyYXBwZWRFbGVtZW50
ID0gcHJldkNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQ7XG5cdCAgICAgIHZhciBwcmV2RWxlbWVu
dCA9IHByZXZXcmFwcGVkRWxlbWVudC5wcm9wcy5jaGlsZDtcblx0ICAgICAgaWYgKHNob3VsZFVw
ZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkpIHtcblx0ICAgICAg
ICB2YXIgcHVibGljSW5zdCA9IHByZXZDb21wb25lbnQuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1
YmxpY0luc3RhbmNlKCk7XG5cdCAgICAgICAgdmFyIHVwZGF0ZWRDYWxsYmFjayA9IGNhbGxiYWNr
ICYmIGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgIGNhbGxiYWNrLmNhbGwocHVibGljSW5zdCk7
XG5cdCAgICAgICAgfTtcblx0ICAgICAgICBSZWFjdE1vdW50Ll91cGRhdGVSb290Q29tcG9uZW50
KHByZXZDb21wb25lbnQsIG5leHRXcmFwcGVkRWxlbWVudCwgbmV4dENvbnRleHQsIGNvbnRhaW5l
ciwgdXBkYXRlZENhbGxiYWNrKTtcblx0ICAgICAgICByZXR1cm4gcHVibGljSW5zdDtcblx0ICAg
ICAgfSBlbHNlIHtcblx0ICAgICAgICBSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGUo
Y29udGFpbmVyKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHZhciByZWFjdFJvb3RF
bGVtZW50ID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG5cdCAg
ICB2YXIgY29udGFpbmVySGFzUmVhY3RNYXJrdXAgPSByZWFjdFJvb3RFbGVtZW50ICYmICEhaW50
ZXJuYWxHZXRJRChyZWFjdFJvb3RFbGVtZW50KTtcblx0ICAgIHZhciBjb250YWluZXJIYXNOb25S
b290UmVhY3RDaGlsZCA9IGhhc05vblJvb3RSZWFjdENoaWxkKGNvbnRhaW5lcik7XG5cdFxuXHQg
ICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKCFjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCwgJ3JlbmRlcigu
Li4pOiBSZXBsYWNpbmcgUmVhY3QtcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIG5ldyByb290ICcg
KyAnY29tcG9uZW50LiBJZiB5b3UgaW50ZW5kZWQgdG8gdXBkYXRlIHRoZSBjaGlsZHJlbiBvZiB0
aGlzIG5vZGUsICcgKyAneW91IHNob3VsZCBpbnN0ZWFkIGhhdmUgdGhlIGV4aXN0aW5nIGNoaWxk
cmVuIHVwZGF0ZSB0aGVpciBzdGF0ZSAnICsgJ2FuZCByZW5kZXIgdGhlIG5ldyBjb21wb25lbnRz
IGluc3RlYWQgb2YgY2FsbGluZyBSZWFjdERPTS5yZW5kZXIuJykgOiB2b2lkIDA7XG5cdFxuXHQg
ICAgICBpZiAoIWNvbnRhaW5lckhhc1JlYWN0TWFya3VwIHx8IHJlYWN0Um9vdEVsZW1lbnQubmV4
dFNpYmxpbmcpIHtcblx0ICAgICAgICB2YXIgcm9vdEVsZW1lbnRTaWJsaW5nID0gcmVhY3RSb290
RWxlbWVudDtcblx0ICAgICAgICB3aGlsZSAocm9vdEVsZW1lbnRTaWJsaW5nKSB7XG5cdCAgICAg
ICAgICBpZiAoaW50ZXJuYWxHZXRJRChyb290RWxlbWVudFNpYmxpbmcpKSB7XG5cdCAgICAgICAg
ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNl
LCAncmVuZGVyKCk6IFRhcmdldCBub2RlIGhhcyBtYXJrdXAgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1
dCB0aGVyZSAnICsgJ2FyZSB1bnJlbGF0ZWQgbm9kZXMgYXMgd2VsbC4gVGhpcyBpcyBtb3N0IGNv
bW1vbmx5IGNhdXNlZCBieSAnICsgJ3doaXRlLXNwYWNlIGluc2VydGVkIGFyb3VuZCBzZXJ2ZXIt
cmVuZGVyZWQgbWFya3VwLicpIDogdm9pZCAwO1xuXHQgICAgICAgICAgICBicmVhaztcblx0ICAg
ICAgICAgIH1cblx0ICAgICAgICAgIHJvb3RFbGVtZW50U2libGluZyA9IHJvb3RFbGVtZW50U2li
bGluZy5uZXh0U2libGluZztcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5c
dCAgICB2YXIgc2hvdWxkUmV1c2VNYXJrdXAgPSBjb250YWluZXJIYXNSZWFjdE1hcmt1cCAmJiAh
cHJldkNvbXBvbmVudCAmJiAhY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQ7XG5cdCAgICB2
YXIgY29tcG9uZW50ID0gUmVhY3RNb3VudC5fcmVuZGVyTmV3Um9vdENvbXBvbmVudChuZXh0V3Jh
cHBlZEVsZW1lbnQsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIG5leHRDb250ZXh0KS5f
cmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtcblx0ICAgIGlmIChjYWxsYmFj
aykge1xuXHQgICAgICBjYWxsYmFjay5jYWxsKGNvbXBvbmVudCk7XG5cdCAgICB9XG5cdCAgICBy
ZXR1cm4gY29tcG9uZW50O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlbmRlcnMgYSBS
ZWFjdCBjb21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBzdXBwbGllZCBgY29udGFpbmVyYC5c
blx0ICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2
ZWwtYXBpLmh0bWwjcmVhY3Rkb20ucmVuZGVyXG5cdCAgICpcblx0ICAgKiBJZiB0aGUgUmVhY3Qg
Y29tcG9uZW50IHdhcyBwcmV2aW91c2x5IHJlbmRlcmVkIGludG8gYGNvbnRhaW5lcmAsIHRoaXMg
d2lsbFxuXHQgICAqIHBlcmZvcm0gYW4gdXBkYXRlIG9uIGl0IGFuZCBvbmx5IG11dGF0ZSB0aGUg
RE9NIGFzIG5lY2Vzc2FyeSB0byByZWZsZWN0IHRoZVxuXHQgICAqIGxhdGVzdCBSZWFjdCBjb21w
b25lbnQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQg
Q29tcG9uZW50IGVsZW1lbnQgdG8gcmVuZGVyLlxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0g
Y29udGFpbmVyIERPTSBlbGVtZW50IHRvIHJlbmRlciBpbnRvLlxuXHQgICAqIEBwYXJhbSB7P2Z1
bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvblxuXHQgICAq
IEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBDb21wb25lbnQgaW5zdGFuY2UgcmVuZGVyZWQgaW4g
YGNvbnRhaW5lcmAuXG5cdCAgICovXG5cdCAgcmVuZGVyOiBmdW5jdGlvbiAobmV4dEVsZW1lbnQs
IGNvbnRhaW5lciwgY2FsbGJhY2spIHtcblx0ICAgIHJldHVybiBSZWFjdE1vdW50Ll9yZW5kZXJT
dWJ0cmVlSW50b0NvbnRhaW5lcihudWxsLCBuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFj
ayk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogVW5tb3VudHMgYW5kIGRlc3Ryb3lzIHRo
ZSBSZWFjdCBjb21wb25lbnQgcmVuZGVyZWQgaW4gdGhlIGBjb250YWluZXJgLlxuXHQgICAqIFNl
ZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRt
bCNyZWFjdGRvbS51bm1vdW50Y29tcG9uZW50YXRub2RlXG5cdCAgICpcblx0ICAgKiBAcGFyYW0g
e0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCBjb250YWluaW5nIGEgUmVhY3QgY29t
cG9uZW50LlxuXHQgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYSBjb21wb25lbnQgd2Fz
IGZvdW5kIGluIGFuZCB1bm1vdW50ZWQgZnJvbVxuXHQgICAqICAgICAgICAgICAgICAgICAgIGBj
b250YWluZXJgXG5cdCAgICovXG5cdCAgdW5tb3VudENvbXBvbmVudEF0Tm9kZTogZnVuY3Rpb24g
KGNvbnRhaW5lcikge1xuXHQgICAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBh
cyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG5cdCAgICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29t
cG9uZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDtcblx0ICAg
IC8vIHZlcmlmeSB0aGF0IHRoYXQncyB0aGUgY2FzZS4gKFN0cmljdGx5IHNwZWFraW5nLCB1bm1v
dW50aW5nIHdvbid0IGNhdXNlIGFcblx0ICAgIC8vIHJlbmRlciBidXQgd2Ugc3RpbGwgZG9uJ3Qg
ZXhwZWN0IHRvIGJlIGluIGEgcmVuZGVyIGNhbGwgaGVyZS4pXG5cdCAgICAgZmFsc2UgPyB3YXJu
aW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwgJ3VubW91bnRDb21wb25lbnRB
dE5vZGUoKTogUmVuZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiAnICsgJ29m
IHByb3BzIGFuZCBzdGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQgY29tcG9uZW50IHVwZGF0ZXMgZnJv
bSByZW5kZXIgJyArICdpcyBub3QgYWxsb3dlZC4gSWYgbmVjZXNzYXJ5LCB0cmlnZ2VyIG5lc3Rl
ZCB1cGRhdGVzIGluICcgKyAnY29tcG9uZW50RGlkVXBkYXRlLiBDaGVjayB0aGUgcmVuZGVyIG1l
dGhvZCBvZiAlcy4nLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ICYmIFJlYWN0Q3VycmVudE93
bmVyLmN1cnJlbnQuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9p
ZCAwO1xuXHRcblx0ICAgICFpc1ZhbGlkQ29udGFpbmVyKGNvbnRhaW5lcikgPyAgZmFsc2UgPyBp
bnZhcmlhbnQoZmFsc2UsICd1bm1vdW50Q29tcG9uZW50QXROb2RlKC4uLik6IFRhcmdldCBjb250
YWluZXIgaXMgbm90IGEgRE9NIGVsZW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnNDAnKSA6IHZv
aWQgMDtcblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIW5vZGVJc1JlbmRlcmVkQnlPdGhlckluc3Rh
bmNlKGNvbnRhaW5lciksIFwidW5tb3VudENvbXBvbmVudEF0Tm9kZSgpOiBUaGUgbm9kZSB5b3Un
cmUgYXR0ZW1wdGluZyB0byB1bm1vdW50IFwiICsgJ3dhcyByZW5kZXJlZCBieSBhbm90aGVyIGNv
cHkgb2YgUmVhY3QuJykgOiB2b2lkIDA7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIHByZXZDb21w
b25lbnQgPSBnZXRUb3BMZXZlbFdyYXBwZXJJbkNvbnRhaW5lcihjb250YWluZXIpO1xuXHQgICAg
aWYgKCFwcmV2Q29tcG9uZW50KSB7XG5cdCAgICAgIC8vIENoZWNrIGlmIHRoZSBub2RlIGJlaW5n
IHVubW91bnRlZCB3YXMgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCBpc24ndCBhXG5cdCAgICAgIC8v
IHJvb3Qgbm9kZS5cblx0ICAgICAgdmFyIGNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkID0g
aGFzTm9uUm9vdFJlYWN0Q2hpbGQoY29udGFpbmVyKTtcblx0XG5cdCAgICAgIC8vIENoZWNrIGlm
IHRoZSBjb250YWluZXIgaXRzZWxmIGlzIGEgUmVhY3Qgcm9vdCBub2RlLlxuXHQgICAgICB2YXIg
aXNDb250YWluZXJSZWFjdFJvb3QgPSBjb250YWluZXIubm9kZVR5cGUgPT09IDEgJiYgY29udGFp
bmVyLmhhc0F0dHJpYnV0ZShST09UX0FUVFJfTkFNRSk7XG5cdFxuXHQgICAgICBpZiAoZmFsc2Up
IHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyghY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQsIFwidW5tb3VudENvbXBvbmVudEF0
Tm9kZSgpOiBUaGUgbm9kZSB5b3UncmUgYXR0ZW1wdGluZyB0byB1bm1vdW50IFwiICsgJ3dhcyBy
ZW5kZXJlZCBieSBSZWFjdCBhbmQgaXMgbm90IGEgdG9wLWxldmVsIGNvbnRhaW5lci4gJXMnLCBp
c0NvbnRhaW5lclJlYWN0Um9vdCA/ICdZb3UgbWF5IGhhdmUgYWNjaWRlbnRhbGx5IHBhc3NlZCBp
biBhIFJlYWN0IHJvb3Qgbm9kZSBpbnN0ZWFkICcgKyAnb2YgaXRzIGNvbnRhaW5lci4nIDogJ0lu
c3RlYWQsIGhhdmUgdGhlIHBhcmVudCBjb21wb25lbnQgdXBkYXRlIGl0cyBzdGF0ZSBhbmQgJyAr
ICdyZXJlbmRlciBpbiBvcmRlciB0byByZW1vdmUgdGhpcyBjb21wb25lbnQuJykgOiB2b2lkIDA7
XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgIH1cblx0ICAgIGRl
bGV0ZSBpbnN0YW5jZXNCeVJlYWN0Um9vdElEW3ByZXZDb21wb25lbnQuX2luc3RhbmNlLnJvb3RJ
RF07XG5cdCAgICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXModW5tb3VudENvbXBvbmVudEZy
b21Ob2RlLCBwcmV2Q29tcG9uZW50LCBjb250YWluZXIsIGZhbHNlKTtcblx0ICAgIHJldHVybiB0
cnVlO1xuXHQgIH0sXG5cdFxuXHQgIF9tb3VudEltYWdlSW50b05vZGU6IGZ1bmN0aW9uIChtYXJr
dXAsIGNvbnRhaW5lciwgaW5zdGFuY2UsIHNob3VsZFJldXNlTWFya3VwLCB0cmFuc2FjdGlvbikg
e1xuXHQgICAgIWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/ICBmYWxzZSA/IGludmFyaWFu
dChmYWxzZSwgJ21vdW50Q29tcG9uZW50SW50b05vZGUoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBp
cyBub3QgdmFsaWQuJykgOiBfcHJvZEludmFyaWFudCgnNDEnKSA6IHZvaWQgMDtcblx0XG5cdCAg
ICBpZiAoc2hvdWxkUmV1c2VNYXJrdXApIHtcblx0ICAgICAgdmFyIHJvb3RFbGVtZW50ID0gZ2V0
UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG5cdCAgICAgIGlmIChSZWFj
dE1hcmt1cENoZWNrc3VtLmNhblJldXNlTWFya3VwKG1hcmt1cCwgcm9vdEVsZW1lbnQpKSB7XG5c
dCAgICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZShpbnN0YW5jZSwgcm9v
dEVsZW1lbnQpO1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAg
ICB2YXIgY2hlY2tzdW0gPSByb290RWxlbWVudC5nZXRBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVj
a3N1bS5DSEVDS1NVTV9BVFRSX05BTUUpO1xuXHQgICAgICAgIHJvb3RFbGVtZW50LnJlbW92ZUF0
dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7XG5cdFxuXHQg
ICAgICAgIHZhciByb290TWFya3VwID0gcm9vdEVsZW1lbnQub3V0ZXJIVE1MO1xuXHQgICAgICAg
IHJvb3RFbGVtZW50LnNldEF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FU
VFJfTkFNRSwgY2hlY2tzdW0pO1xuXHRcblx0ICAgICAgICB2YXIgbm9ybWFsaXplZE1hcmt1cCA9
IG1hcmt1cDtcblx0ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgIC8vIGJlY2F1c2Ug
cm9vdE1hcmt1cCBpcyByZXRyaWV2ZWQgZnJvbSB0aGUgRE9NLCB2YXJpb3VzIG5vcm1hbGl6YXRp
b25zXG5cdCAgICAgICAgICAvLyB3aWxsIGhhdmUgb2NjdXJyZWQgd2hpY2ggd2lsbCBub3QgYmUg
cHJlc2VudCBpbiBgbWFya3VwYC4gSGVyZSxcblx0ICAgICAgICAgIC8vIGluc2VydCBtYXJrdXAg
aW50byBhIDxkaXY+IG9yIDxpZnJhbWU+IGRlcGVuZGluZyBvbiB0aGUgY29udGFpbmVyXG5cdCAg
ICAgICAgICAvLyB0eXBlIHRvIHBlcmZvcm0gdGhlIHNhbWUgbm9ybWFsaXphdGlvbnMgYmVmb3Jl
IGNvbXBhcmluZy5cblx0ICAgICAgICAgIHZhciBub3JtYWxpemVyO1xuXHQgICAgICAgICAgaWYg
KGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUpIHtcblx0ICAgICAgICAg
ICAgbm9ybWFsaXplciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHQgICAgICAg
ICAgICBub3JtYWxpemVyLmlubmVySFRNTCA9IG1hcmt1cDtcblx0ICAgICAgICAgICAgbm9ybWFs
aXplZE1hcmt1cCA9IG5vcm1hbGl6ZXIuaW5uZXJIVE1MO1xuXHQgICAgICAgICAgfSBlbHNlIHtc
blx0ICAgICAgICAgICAgbm9ybWFsaXplciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFt
ZScpO1xuXHQgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vcm1hbGl6ZXIp
O1xuXHQgICAgICAgICAgICBub3JtYWxpemVyLmNvbnRlbnREb2N1bWVudC53cml0ZShtYXJrdXAp
O1xuXHQgICAgICAgICAgICBub3JtYWxpemVkTWFya3VwID0gbm9ybWFsaXplci5jb250ZW50RG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50Lm91dGVySFRNTDtcblx0ICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5yZW1vdmVDaGlsZChub3JtYWxpemVyKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9
XG5cdFxuXHQgICAgICAgIHZhciBkaWZmSW5kZXggPSBmaXJzdERpZmZlcmVuY2VJbmRleChub3Jt
YWxpemVkTWFya3VwLCByb290TWFya3VwKTtcblx0ICAgICAgICB2YXIgZGlmZmVyZW5jZSA9ICcg
KGNsaWVudCkgJyArIG5vcm1hbGl6ZWRNYXJrdXAuc3Vic3RyaW5nKGRpZmZJbmRleCAtIDIwLCBk
aWZmSW5kZXggKyAyMCkgKyAnXFxuIChzZXJ2ZXIpICcgKyByb290TWFya3VwLnN1YnN0cmluZyhk
aWZmSW5kZXggLSAyMCwgZGlmZkluZGV4ICsgMjApO1xuXHRcblx0ICAgICAgICAhKGNvbnRhaW5l
ci5ub2RlVHlwZSAhPT0gRE9DX05PREVfVFlQRSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2Us
ICdZb3VcXCdyZSB0cnlpbmcgdG8gcmVuZGVyIGEgY29tcG9uZW50IHRvIHRoZSBkb2N1bWVudCB1
c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGJ1dCB0aGUgY2hlY2tzdW0gd2FzIGludmFsaWQuIFRoaXMg
dXN1YWxseSBtZWFucyB5b3UgcmVuZGVyZWQgYSBkaWZmZXJlbnQgY29tcG9uZW50IHR5cGUgb3Ig
cHJvcHMgb24gdGhlIGNsaWVudCBmcm9tIHRoZSBvbmUgb24gdGhlIHNlcnZlciwgb3IgeW91ciBy
ZW5kZXIoKSBtZXRob2RzIGFyZSBpbXB1cmUuIFJlYWN0IGNhbm5vdCBoYW5kbGUgdGhpcyBjYXNl
IGR1ZSB0byBjcm9zcy1icm93c2VyIHF1aXJrcyBieSByZW5kZXJpbmcgYXQgdGhlIGRvY3VtZW50
IHJvb3QuIFlvdSBzaG91bGQgbG9vayBmb3IgZW52aXJvbm1lbnQgZGVwZW5kZW50IGNvZGUgaW4g
eW91ciBjb21wb25lbnRzIGFuZCBlbnN1cmUgdGhlIHByb3BzIGFyZSB0aGUgc2FtZSBjbGllbnQg
YW5kIHNlcnZlciBzaWRlOlxcbiVzJywgZGlmZmVyZW5jZSkgOiBfcHJvZEludmFyaWFudCgnNDIn
LCBkaWZmZXJlbmNlKSA6IHZvaWQgMDtcblx0XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAg
ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhm
YWxzZSwgJ1JlYWN0IGF0dGVtcHRlZCB0byByZXVzZSBtYXJrdXAgaW4gYSBjb250YWluZXIgYnV0
IHRoZSAnICsgJ2NoZWNrc3VtIHdhcyBpbnZhbGlkLiBUaGlzIGdlbmVyYWxseSBtZWFucyB0aGF0
IHlvdSBhcmUgJyArICd1c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGFuZCB0aGUgbWFya3VwIGdlbmVy
YXRlZCBvbiB0aGUgJyArICdzZXJ2ZXIgd2FzIG5vdCB3aGF0IHRoZSBjbGllbnQgd2FzIGV4cGVj
dGluZy4gUmVhY3QgaW5qZWN0ZWQgJyArICduZXcgbWFya3VwIHRvIGNvbXBlbnNhdGUgd2hpY2gg
d29ya3MgYnV0IHlvdSBoYXZlIGxvc3QgbWFueSAnICsgJ29mIHRoZSBiZW5lZml0cyBvZiBzZXJ2
ZXIgcmVuZGVyaW5nLiBJbnN0ZWFkLCBmaWd1cmUgb3V0ICcgKyAnd2h5IHRoZSBtYXJrdXAgYmVp
bmcgZ2VuZXJhdGVkIGlzIGRpZmZlcmVudCBvbiB0aGUgY2xpZW50ICcgKyAnb3Igc2VydmVyOlxc
biVzJywgZGlmZmVyZW5jZSkgOiB2b2lkIDA7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAg
ICB9XG5cdFxuXHQgICAgIShjb250YWluZXIubm9kZVR5cGUgIT09IERPQ19OT0RFX1RZUEUpID8g
IGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnWW91XFwncmUgdHJ5aW5nIHRvIHJlbmRlciBhIGNv
bXBvbmVudCB0byB0aGUgZG9jdW1lbnQgYnV0IHlvdSBkaWRuXFwndCB1c2Ugc2VydmVyIHJlbmRl
cmluZy4gV2UgY2FuXFwndCBkbyB0aGlzIHdpdGhvdXQgdXNpbmcgc2VydmVyIHJlbmRlcmluZyBk
dWUgdG8gY3Jvc3MtYnJvd3NlciBxdWlya3MuIFNlZSBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0
cmluZygpIGZvciBzZXJ2ZXIgcmVuZGVyaW5nLicpIDogX3Byb2RJbnZhcmlhbnQoJzQzJykgOiB2
b2lkIDA7XG5cdFxuXHQgICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcblx0
ICAgICAgd2hpbGUgKGNvbnRhaW5lci5sYXN0Q2hpbGQpIHtcblx0ICAgICAgICBjb250YWluZXIu
cmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RDaGlsZCk7XG5cdCAgICAgIH1cblx0ICAgICAgRE9N
TGF6eVRyZWUuaW5zZXJ0VHJlZUJlZm9yZShjb250YWluZXIsIG1hcmt1cCwgbnVsbCk7XG5cdCAg
ICB9IGVsc2Uge1xuXHQgICAgICBzZXRJbm5lckhUTUwoY29udGFpbmVyLCBtYXJrdXApO1xuXHQg
ICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKGluc3RhbmNlLCBjb250YWlu
ZXIuZmlyc3RDaGlsZCk7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAg
IHZhciBob3N0Tm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2Rl
KGNvbnRhaW5lci5maXJzdENoaWxkKTtcblx0ICAgICAgaWYgKGhvc3ROb2RlLl9kZWJ1Z0lEICE9
PSAwKSB7XG5cdCAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9w
ZXJhdGlvbih7XG5cdCAgICAgICAgICBpbnN0YW5jZUlEOiBob3N0Tm9kZS5fZGVidWdJRCxcblx0
ICAgICAgICAgIHR5cGU6ICdtb3VudCcsXG5cdCAgICAgICAgICBwYXlsb2FkOiBtYXJrdXAudG9T
dHJpbmcoKVxuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdE1vdW50O1xuXG4vKioqLyB9LFxuLyogNjggKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIFJlYWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
Nyk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5c
dHZhciBSZWFjdE5vZGVUeXBlcyA9IHtcblx0ICBIT1NUOiAwLFxuXHQgIENPTVBPU0lURTogMSxc
blx0ICBFTVBUWTogMixcblx0XG5cdCAgZ2V0VHlwZTogZnVuY3Rpb24gKG5vZGUpIHtcblx0ICAg
IGlmIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IGZhbHNlKSB7XG5cdCAgICAgIHJldHVybiBS
ZWFjdE5vZGVUeXBlcy5FTVBUWTtcblx0ICAgIH0gZWxzZSBpZiAoUmVhY3QuaXNWYWxpZEVsZW1l
bnQobm9kZSkpIHtcblx0ICAgICAgaWYgKHR5cGVvZiBub2RlLnR5cGUgPT09ICdmdW5jdGlvbicp
IHtcblx0ICAgICAgICByZXR1cm4gUmVhY3ROb2RlVHlwZXMuQ09NUE9TSVRFO1xuXHQgICAgICB9
IGVsc2Uge1xuXHQgICAgICAgIHJldHVybiBSZWFjdE5vZGVUeXBlcy5IT1NUO1xuXHQgICAgICB9
XG5cdCAgICB9XG5cdCAgICAgdHJ1ZSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1VuZXhw
ZWN0ZWQgbm9kZTogJXMnLCBub2RlKSA6IF9wcm9kSW52YXJpYW50KCcyNicsIG5vZGUpIDogdm9p
ZCAwO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3ROb2RlVHlwZXM7
XG5cbi8qKiovIH0sXG4vKiA2OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFZpZXdwb3J0TWV0cmljcyA9IHtcblx0ICBjdXJy
ZW50U2Nyb2xsTGVmdDogMCxcblx0XG5cdCAgY3VycmVudFNjcm9sbFRvcDogMCxcblx0XG5cdCAg
cmVmcmVzaFNjcm9sbFZhbHVlczogZnVuY3Rpb24gKHNjcm9sbFBvc2l0aW9uKSB7XG5cdCAgICBW
aWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbExlZnQgPSBzY3JvbGxQb3NpdGlvbi54O1xuXHQg
ICAgVmlld3BvcnRNZXRyaWNzLmN1cnJlbnRTY3JvbGxUb3AgPSBzY3JvbGxQb3NpdGlvbi55O1xu
XHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gVmlld3BvcnRNZXRyaWNzO1xuXG4v
KioqLyB9LFxuLyogNzAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
XHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJ
bnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIGludmFyaWFudCA9
IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHQvKipcblx0ICogQWNjdW11bGF0ZXMgaXRl
bXMgdGhhdCBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCBpbnRvIHRoZSBmaXJzdCBvbmUu
IFRoaXNcblx0ICogaXMgdXNlZCB0byBjb25zZXJ2ZSBtZW1vcnkgYnkgYXZvaWRpbmcgYXJyYXkg
YWxsb2NhdGlvbnMsIGFuZCB0aHVzIHNhY3JpZmljZXNcblx0ICogQVBJIGNsZWFubmVzcy4gU2lu
Y2UgYGN1cnJlbnRgIGNhbiBiZSBudWxsIGJlZm9yZSBiZWluZyBwYXNzZWQgaW4gYW5kIG5vdFxu
XHQgKiBudWxsIGFmdGVyIHRoaXMgZnVuY3Rpb24sIG1ha2Ugc3VyZSB0byBhc3NpZ24gaXQgYmFj
ayB0byBgY3VycmVudGA6XG5cdCAqXG5cdCAqIGBhID0gYWNjdW11bGF0ZUludG8oYSwgYik7YFxu
XHQgKlxuXHQgKiBUaGlzIEFQSSBzaG91bGQgYmUgc3BhcmluZ2x5IHVzZWQuIFRyeSBgYWNjdW11
bGF0ZWAgZm9yIHNvbWV0aGluZyBjbGVhbmVyLlxuXHQgKlxuXHQgKiBAcmV0dXJuIHsqfGFycmF5
PCo+fSBBbiBhY2N1bXVsYXRpb24gb2YgaXRlbXMuXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gYWNj
dW11bGF0ZUludG8oY3VycmVudCwgbmV4dCkge1xuXHQgICEobmV4dCAhPSBudWxsKSA/ICBmYWxz
ZSA/IGludmFyaWFudChmYWxzZSwgJ2FjY3VtdWxhdGVJbnRvKC4uLik6IEFjY3VtdWxhdGVkIGl0
ZW1zIG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzMw
JykgOiB2b2lkIDA7XG5cdFxuXHQgIGlmIChjdXJyZW50ID09IG51bGwpIHtcblx0ICAgIHJldHVy
biBuZXh0O1xuXHQgIH1cblx0XG5cdCAgLy8gQm90aCBhcmUgbm90IGVtcHR5LiBXYXJuaW5nOiBO
ZXZlciBjYWxsIHguY29uY2F0KHkpIHdoZW4geW91IGFyZSBub3Rcblx0ICAvLyBjZXJ0YWluIHRo
YXQgeCBpcyBhbiBBcnJheSAoeCBjb3VsZCBiZSBhIHN0cmluZyB3aXRoIGNvbmNhdCBtZXRob2Qp
LlxuXHQgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnQpKSB7XG5cdCAgICBpZiAoQXJyYXkuaXNB
cnJheShuZXh0KSkge1xuXHQgICAgICBjdXJyZW50LnB1c2guYXBwbHkoY3VycmVudCwgbmV4dCk7
XG5cdCAgICAgIHJldHVybiBjdXJyZW50O1xuXHQgICAgfVxuXHQgICAgY3VycmVudC5wdXNoKG5l
eHQpO1xuXHQgICAgcmV0dXJuIGN1cnJlbnQ7XG5cdCAgfVxuXHRcblx0ICBpZiAoQXJyYXkuaXNB
cnJheShuZXh0KSkge1xuXHQgICAgLy8gQSBiaXQgdG9vIGRhbmdlcm91cyB0byBtdXRhdGUgYG5l
eHRgLlxuXHQgICAgcmV0dXJuIFtjdXJyZW50XS5jb25jYXQobmV4dCk7XG5cdCAgfVxuXHRcblx0
ICByZXR1cm4gW2N1cnJlbnQsIG5leHRdO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGFj
Y3VtdWxhdGVJbnRvO1xuXG4vKioqLyB9LFxuLyogNzEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQg
KlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogQHBh
cmFtIHthcnJheX0gYXJyIGFuIFwiYWNjdW11bGF0aW9uXCIgb2YgaXRlbXMgd2hpY2ggaXMgZWl0
aGVyIGFuIEFycmF5IG9yXG5cdCAqIGEgc2luZ2xlIGl0ZW0uIFVzZWZ1bCB3aGVuIHBhaXJlZCB3
aXRoIHRoZSBgYWNjdW11bGF0ZWAgbW9kdWxlLiBUaGlzIGlzIGFcblx0ICogc2ltcGxlIHV0aWxp
dHkgdGhhdCBhbGxvd3MgdXMgdG8gcmVhc29uIGFib3V0IGEgY29sbGVjdGlvbiBvZiBpdGVtcywg
YnV0XG5cdCAqIGhhbmRsaW5nIHRoZSBjYXNlIHdoZW4gdGhlcmUgaXMgZXhhY3RseSBvbmUgaXRl
bSAoYW5kIHdlIGRvIG5vdCBuZWVkIHRvXG5cdCAqIGFsbG9jYXRlIGFuIGFycmF5KS5cblx0ICov
XG5cdFxuXHRmdW5jdGlvbiBmb3JFYWNoQWNjdW11bGF0ZWQoYXJyLCBjYiwgc2NvcGUpIHtcblx0
ICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG5cdCAgICBhcnIuZm9yRWFjaChjYiwgc2NvcGUp
O1xuXHQgIH0gZWxzZSBpZiAoYXJyKSB7XG5cdCAgICBjYi5jYWxsKHNjb3BlLCBhcnIpO1xuXHQg
IH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBmb3JFYWNoQWNjdW11bGF0ZWQ7XG5cbi8q
KiovIH0sXG4vKiA3MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5c
dCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFJlYWN0Tm9kZVR5cGVz
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OCk7XG5cdFxuXHRmdW5jdGlvbiBnZXRIb3N0Q29tcG9u
ZW50RnJvbUNvbXBvc2l0ZShpbnN0KSB7XG5cdCAgdmFyIHR5cGU7XG5cdFxuXHQgIHdoaWxlICgo
dHlwZSA9IGluc3QuX3JlbmRlcmVkTm9kZVR5cGUpID09PSBSZWFjdE5vZGVUeXBlcy5DT01QT1NJ
VEUpIHtcblx0ICAgIGluc3QgPSBpbnN0Ll9yZW5kZXJlZENvbXBvbmVudDtcblx0ICB9XG5cdFxu
XHQgIGlmICh0eXBlID09PSBSZWFjdE5vZGVUeXBlcy5IT1NUKSB7XG5cdCAgICByZXR1cm4gaW5z
dC5fcmVuZGVyZWRDb21wb25lbnQ7XG5cdCAgfSBlbHNlIGlmICh0eXBlID09PSBSZWFjdE5vZGVU
eXBlcy5FTVBUWSkge1xuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1
bGUuZXhwb3J0cyA9IGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlO1xuXG4vKioqLyB9LFxu
LyogNzMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9
IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5cdFxuXHR2YXIgY29udGVudEtleSA9IG51bGw7XG5c
dFxuXHQvKipcblx0ICogR2V0cyB0aGUga2V5IHVzZWQgdG8gYWNjZXNzIHRleHQgY29udGVudCBv
biBhIERPTSBub2RlLlxuXHQgKlxuXHQgKiBAcmV0dXJuIHs/c3RyaW5nfSBLZXkgdXNlZCB0byBh
Y2Nlc3MgdGV4dCBjb250ZW50LlxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGZ1bmN0aW9uIGdl
dFRleHRDb250ZW50QWNjZXNzb3IoKSB7XG5cdCAgaWYgKCFjb250ZW50S2V5ICYmIEV4ZWN1dGlv
bkVudmlyb25tZW50LmNhblVzZURPTSkge1xuXHQgICAgLy8gUHJlZmVyIHRleHRDb250ZW50IHRv
IGlubmVyVGV4dCBiZWNhdXNlIG1hbnkgYnJvd3NlcnMgc3VwcG9ydCBib3RoIGJ1dFxuXHQgICAg
Ly8gU1ZHIDx0ZXh0PiBlbGVtZW50cyBkb24ndCBzdXBwb3J0IGlubmVyVGV4dCBldmVuIHdoZW4g
PGRpdj4gZG9lcy5cblx0ICAgIGNvbnRlbnRLZXkgPSAndGV4dENvbnRlbnQnIGluIGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudCA/ICd0ZXh0Q29udGVudCcgOiAnaW5uZXJUZXh0Jztcblx0ICB9XG5c
dCAgcmV0dXJuIGNvbnRlbnRLZXk7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZ2V0VGV4
dENvbnRlbnRBY2Nlc3NvcjtcblxuLyoqKi8gfSxcbi8qIDc0ICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
XHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtc
blx0XG5cdGZ1bmN0aW9uIGlzQ2hlY2thYmxlKGVsZW0pIHtcblx0ICB2YXIgdHlwZSA9IGVsZW0u
dHlwZTtcblx0ICB2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lO1xuXHQgIHJldHVybiBub2Rl
TmFtZSAmJiBub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmICh0eXBlID09PSAn
Y2hlY2tib3gnIHx8IHR5cGUgPT09ICdyYWRpbycpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXRU
cmFja2VyKGluc3QpIHtcblx0ICByZXR1cm4gaW5zdC5fd3JhcHBlclN0YXRlLnZhbHVlVHJhY2tl
cjtcblx0fVxuXHRcblx0ZnVuY3Rpb24gYXR0YWNoVHJhY2tlcihpbnN0LCB0cmFja2VyKSB7XG5c
dCAgaW5zdC5fd3JhcHBlclN0YXRlLnZhbHVlVHJhY2tlciA9IHRyYWNrZXI7XG5cdH1cblx0XG5c
dGZ1bmN0aW9uIGRldGFjaFRyYWNrZXIoaW5zdCkge1xuXHQgIGRlbGV0ZSBpbnN0Ll93cmFwcGVy
U3RhdGUudmFsdWVUcmFja2VyO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXRWYWx1ZUZyb21Ob2Rl
KG5vZGUpIHtcblx0ICB2YXIgdmFsdWU7XG5cdCAgaWYgKG5vZGUpIHtcblx0ICAgIHZhbHVlID0g
aXNDaGVja2FibGUobm9kZSkgPyAnJyArIG5vZGUuY2hlY2tlZCA6IG5vZGUudmFsdWU7XG5cdCAg
fVxuXHQgIHJldHVybiB2YWx1ZTtcblx0fVxuXHRcblx0dmFyIGlucHV0VmFsdWVUcmFja2luZyA9
IHtcblx0ICAvLyBleHBvc2VkIGZvciB0ZXN0aW5nXG5cdCAgX2dldFRyYWNrZXJGcm9tTm9kZTog
ZnVuY3Rpb24gKG5vZGUpIHtcblx0ICAgIHJldHVybiBnZXRUcmFja2VyKFJlYWN0RE9NQ29tcG9u
ZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpKTtcblx0ICB9LFxuXHRcblx0XG5cdCAg
dHJhY2s6IGZ1bmN0aW9uIChpbnN0KSB7XG5cdCAgICBpZiAoZ2V0VHJhY2tlcihpbnN0KSkge1xu
XHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNv
bXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcblx0ICAgIHZhciB2YWx1ZUZp
ZWxkID0gaXNDaGVja2FibGUobm9kZSkgPyAnY2hlY2tlZCcgOiAndmFsdWUnO1xuXHQgICAgdmFy
IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG5vZGUuY29uc3Ry
dWN0b3IucHJvdG90eXBlLCB2YWx1ZUZpZWxkKTtcblx0XG5cdCAgICB2YXIgY3VycmVudFZhbHVl
ID0gJycgKyBub2RlW3ZhbHVlRmllbGRdO1xuXHRcblx0ICAgIC8vIGlmIHNvbWVvbmUgaGFzIGFs
cmVhZHkgZGVmaW5lZCBhIHZhbHVlIG9yIFNhZmFyaSwgdGhlbiBiYWlsXG5cdCAgICAvLyBhbmQg
ZG9uJ3QgdHJhY2sgdmFsdWUgd2lsbCBjYXVzZSBvdmVyIHJlcG9ydGluZyBvZiBjaGFuZ2VzLFxu
XHQgICAgLy8gYnV0IGl0J3MgYmV0dGVyIHRoZW4gYSBoYXJkIGZhaWx1cmVcblx0ICAgIC8vIChu
ZWVkZWQgZm9yIGNlcnRhaW4gdGVzdHMgdGhhdCBzcHlPbiBpbnB1dCB2YWx1ZXMgYW5kIFNhZmFy
aSlcblx0ICAgIGlmIChub2RlLmhhc093blByb3BlcnR5KHZhbHVlRmllbGQpIHx8IHR5cGVvZiBk
ZXNjcmlwdG9yLmdldCAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgZGVzY3JpcHRvci5zZXQgIT09
ICdmdW5jdGlvbicpIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShub2RlLCB2YWx1ZUZpZWxkLCB7XG5cdCAgICAgIGVudW1lcmFibGU6
IGRlc2NyaXB0b3IuZW51bWVyYWJsZSxcblx0ICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuXHQg
ICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4gZGVzY3JpcHRvci5nZXQu
Y2FsbCh0aGlzKTtcblx0ICAgICAgfSxcblx0ICAgICAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHtc
blx0ICAgICAgICBjdXJyZW50VmFsdWUgPSAnJyArIHZhbHVlO1xuXHQgICAgICAgIGRlc2NyaXB0
b3Iuc2V0LmNhbGwodGhpcywgdmFsdWUpO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0XG5cdCAg
ICBhdHRhY2hUcmFja2VyKGluc3QsIHtcblx0ICAgICAgZ2V0VmFsdWU6IGZ1bmN0aW9uICgpIHtc
blx0ICAgICAgICByZXR1cm4gY3VycmVudFZhbHVlO1xuXHQgICAgICB9LFxuXHQgICAgICBzZXRW
YWx1ZTogZnVuY3Rpb24gKHZhbHVlKSB7XG5cdCAgICAgICAgY3VycmVudFZhbHVlID0gJycgKyB2
YWx1ZTtcblx0ICAgICAgfSxcblx0ICAgICAgc3RvcFRyYWNraW5nOiBmdW5jdGlvbiAoKSB7XG5c
dCAgICAgICAgZGV0YWNoVHJhY2tlcihpbnN0KTtcblx0ICAgICAgICBkZWxldGUgbm9kZVt2YWx1
ZUZpZWxkXTtcblx0ICAgICAgfVxuXHQgICAgfSk7XG5cdCAgfSxcblx0XG5cdCAgdXBkYXRlVmFs
dWVJZkNoYW5nZWQ6IGZ1bmN0aW9uIChpbnN0KSB7XG5cdCAgICBpZiAoIWluc3QpIHtcblx0ICAg
ICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgfVxuXHQgICAgdmFyIHRyYWNrZXIgPSBnZXRUcmFja2Vy
KGluc3QpO1xuXHRcblx0ICAgIGlmICghdHJhY2tlcikge1xuXHQgICAgICBpbnB1dFZhbHVlVHJh
Y2tpbmcudHJhY2soaW5zdCk7XG5cdCAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgfVxuXHRcblx0
ICAgIHZhciBsYXN0VmFsdWUgPSB0cmFja2VyLmdldFZhbHVlKCk7XG5cdCAgICB2YXIgbmV4dFZh
bHVlID0gZ2V0VmFsdWVGcm9tTm9kZShSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21J
bnN0YW5jZShpbnN0KSk7XG5cdFxuXHQgICAgaWYgKG5leHRWYWx1ZSAhPT0gbGFzdFZhbHVlKSB7
XG5cdCAgICAgIHRyYWNrZXIuc2V0VmFsdWUobmV4dFZhbHVlKTtcblx0ICAgICAgcmV0dXJuIHRy
dWU7XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH0sXG5cdCAgc3RvcFRy
YWNraW5nOiBmdW5jdGlvbiAoaW5zdCkge1xuXHQgICAgdmFyIHRyYWNrZXIgPSBnZXRUcmFja2Vy
KGluc3QpO1xuXHQgICAgaWYgKHRyYWNrZXIpIHtcblx0ICAgICAgdHJhY2tlci5zdG9wVHJhY2tp
bmcoKTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGlucHV0
VmFsdWVUcmFja2luZztcblxuLyoqKi8gfSxcbi8qIDc1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpLFxuXHQgICAgX2Fz
c2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgUmVhY3RDb21wb3NpdGVD
b21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNik7XG5cdHZhciBSZWFjdEVtcHR5Q29t
cG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Myk7XG5cdHZhciBSZWFjdEhvc3RDb21wb25l
bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY1KTtcblx0XG5cdHZhciBnZXROZXh0RGVidWdJRCA9
IF9fd2VicGFja19yZXF1aXJlX18oMjIxKTtcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMSk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0
XG5cdC8vIFRvIGF2b2lkIGEgY3ljbGljIGRlcGVuZGVuY3ksIHdlIGNyZWF0ZSB0aGUgZmluYWwg
Y2xhc3MgaW4gdGhpcyBtb2R1bGVcblx0dmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBl
ciA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG5cdCAgdGhpcy5jb25zdHJ1Y3QoZWxlbWVudCk7XG5c
dH07XG5cdFxuXHRmdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpIHtc
blx0ICBpZiAob3duZXIpIHtcblx0ICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuXHQg
ICAgaWYgKG5hbWUpIHtcblx0ICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qg
b2YgYCcgKyBuYW1lICsgJ2AuJztcblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuICcnO1xuXHR9
XG5cdFxuXHQvKipcblx0ICogQ2hlY2sgaWYgdGhlIHR5cGUgcmVmZXJlbmNlIGlzIGEga25vd24g
aW50ZXJuYWwgdHlwZS4gSS5lLiBub3QgYSB1c2VyXG5cdCAqIHByb3ZpZGVkIGNvbXBvc2l0ZSB0
eXBlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0eXBlXG5cdCAqIEByZXR1cm4ge2Jv
b2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGlzIGlzIGEgdmFsaWQgaW50ZXJuYWwgdHlwZS5cblx0
ICovXG5cdGZ1bmN0aW9uIGlzSW50ZXJuYWxDb21wb25lbnRUeXBlKHR5cGUpIHtcblx0ICByZXR1
cm4gdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlICE9
PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUubW91bnRDb21wb25lbnQgPT09
ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlLnJlY2VpdmVDb21wb25lbnQgPT09
ICdmdW5jdGlvbic7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBHaXZlbiBhIFJlYWN0Tm9kZSwgY3Jl
YXRlIGFuIGluc3RhbmNlIHRoYXQgd2lsbCBhY3R1YWxseSBiZSBtb3VudGVkLlxuXHQgKlxuXHQg
KiBAcGFyYW0ge1JlYWN0Tm9kZX0gbm9kZVxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZEhh
dmVEZWJ1Z0lEXG5cdCAqIEByZXR1cm4ge29iamVjdH0gQSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGVs
ZW1lbnQncyBjb25zdHJ1Y3Rvci5cblx0ICogQHByb3RlY3RlZFxuXHQgKi9cblx0ZnVuY3Rpb24g
aW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChub2RlLCBzaG91bGRIYXZlRGVidWdJRCkge1xuXHQg
IHZhciBpbnN0YW5jZTtcblx0XG5cdCAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gZmFs
c2UpIHtcblx0ICAgIGluc3RhbmNlID0gUmVhY3RFbXB0eUNvbXBvbmVudC5jcmVhdGUoaW5zdGFu
dGlhdGVSZWFjdENvbXBvbmVudCk7XG5cdCAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ29i
amVjdCcpIHtcblx0ICAgIHZhciBlbGVtZW50ID0gbm9kZTtcblx0ICAgIHZhciB0eXBlID0gZWxl
bWVudC50eXBlO1xuXHQgICAgaWYgKHR5cGVvZiB0eXBlICE9PSAnZnVuY3Rpb24nICYmIHR5cGVv
ZiB0eXBlICE9PSAnc3RyaW5nJykge1xuXHQgICAgICB2YXIgaW5mbyA9ICcnO1xuXHQgICAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB0
eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsICYmIE9iamVjdC5rZXlzKHR5cGUpLmxl
bmd0aCA9PT0gMCkge1xuXHQgICAgICAgICAgaW5mbyArPSAnIFlvdSBsaWtlbHkgZm9yZ290IHRv
IGV4cG9ydCB5b3VyIGNvbXBvbmVudCBmcm9tIHRoZSBmaWxlICcgKyBcIml0J3MgZGVmaW5lZCBp
bi5cIjtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgaW5mbyArPSBnZXREZWNsYXJh
dGlvbkVycm9yQWRkZW5kdW0oZWxlbWVudC5fb3duZXIpO1xuXHQgICAgICAgdHJ1ZSA/ICBmYWxz
ZSA/IGludmFyaWFudChmYWxzZSwgJ0VsZW1lbnQgdHlwZSBpcyBpbnZhbGlkOiBleHBlY3RlZCBh
IHN0cmluZyAoZm9yIGJ1aWx0LWluIGNvbXBvbmVudHMpIG9yIGEgY2xhc3MvZnVuY3Rpb24gKGZv
ciBjb21wb3NpdGUgY29tcG9uZW50cykgYnV0IGdvdDogJXMuJXMnLCB0eXBlID09IG51bGwgPyB0
eXBlIDogdHlwZW9mIHR5cGUsIGluZm8pIDogX3Byb2RJbnZhcmlhbnQoJzEzMCcsIHR5cGUgPT0g
bnVsbCA/IHR5cGUgOiB0eXBlb2YgdHlwZSwgaW5mbykgOiB2b2lkIDA7XG5cdCAgICB9XG5cdFxu
XHQgICAgLy8gU3BlY2lhbCBjYXNlIHN0cmluZyB2YWx1ZXNcblx0ICAgIGlmICh0eXBlb2YgZWxl
bWVudC50eXBlID09PSAnc3RyaW5nJykge1xuXHQgICAgICBpbnN0YW5jZSA9IFJlYWN0SG9zdENv
bXBvbmVudC5jcmVhdGVJbnRlcm5hbENvbXBvbmVudChlbGVtZW50KTtcblx0ICAgIH0gZWxzZSBp
ZiAoaXNJbnRlcm5hbENvbXBvbmVudFR5cGUoZWxlbWVudC50eXBlKSkge1xuXHQgICAgICAvLyBU
aGlzIGlzIHRlbXBvcmFyaWx5IGF2YWlsYWJsZSBmb3IgY3VzdG9tIGNvbXBvbmVudHMgdGhhdCBh
cmUgbm90IHN0cmluZ1xuXHQgICAgICAvLyByZXByZXNlbnRhdGlvbnMuIEkuZS4gQVJULiBPbmNl
IHRob3NlIGFyZSB1cGRhdGVkIHRvIHVzZSB0aGUgc3RyaW5nXG5cdCAgICAgIC8vIHJlcHJlc2Vu
dGF0aW9uLCB3ZSBjYW4gZHJvcCB0aGlzIGNvZGUgcGF0aC5cblx0ICAgICAgaW5zdGFuY2UgPSBu
ZXcgZWxlbWVudC50eXBlKGVsZW1lbnQpO1xuXHRcblx0ICAgICAgLy8gV2UgcmVuYW1lZCB0aGlz
LiBBbGxvdyB0aGUgb2xkIG5hbWUgZm9yIGNvbXBhdC4gOihcblx0ICAgICAgaWYgKCFpbnN0YW5j
ZS5nZXRIb3N0Tm9kZSkge1xuXHQgICAgICAgIGluc3RhbmNlLmdldEhvc3ROb2RlID0gaW5zdGFu
Y2UuZ2V0TmF0aXZlTm9kZTtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgaW5z
dGFuY2UgPSBuZXcgUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyKGVsZW1lbnQpO1xuXHQg
ICAgfVxuXHQgIH0gZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBu
b2RlID09PSAnbnVtYmVyJykge1xuXHQgICAgaW5zdGFuY2UgPSBSZWFjdEhvc3RDb21wb25lbnQu
Y3JlYXRlSW5zdGFuY2VGb3JUZXh0KG5vZGUpO1xuXHQgIH0gZWxzZSB7XG5cdCAgICAgdHJ1ZSA/
ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0VuY291bnRlcmVkIGludmFsaWQgUmVhY3Qgbm9k
ZSBvZiB0eXBlICVzJywgdHlwZW9mIG5vZGUpIDogX3Byb2RJbnZhcmlhbnQoJzEzMScsIHR5cGVv
ZiBub2RlKSA6IHZvaWQgMDtcblx0ICB9XG5cdFxuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3Rh
bmNlLm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS5yZWNl
aXZlQ29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS5nZXRIb3N0Tm9k
ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UudW5tb3VudENvbXBvbmVudCA9PT0g
J2Z1bmN0aW9uJywgJ09ubHkgUmVhY3QgQ29tcG9uZW50cyBjYW4gYmUgbW91bnRlZC4nKSA6IHZv
aWQgMDtcblx0ICB9XG5cdFxuXHQgIC8vIFRoZXNlIHR3byBmaWVsZHMgYXJlIHVzZWQgYnkgdGhl
IERPTSBhbmQgQVJUIGRpZmZpbmcgYWxnb3JpdGhtc1xuXHQgIC8vIHJlc3BlY3RpdmVseS4gSW5z
dGVhZCBvZiB1c2luZyBleHBhbmRvcyBvbiBjb21wb25lbnRzLCB3ZSBzaG91bGQgYmVcblx0ICAv
LyBzdG9yaW5nIHRoZSBzdGF0ZSBuZWVkZWQgYnkgdGhlIGRpZmZpbmcgYWxnb3JpdGhtcyBlbHNl
d2hlcmUuXG5cdCAgaW5zdGFuY2UuX21vdW50SW5kZXggPSAwO1xuXHQgIGluc3RhbmNlLl9tb3Vu
dEltYWdlID0gbnVsbDtcblx0XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBpbnN0YW5jZS5fZGVi
dWdJRCA9IHNob3VsZEhhdmVEZWJ1Z0lEID8gZ2V0TmV4dERlYnVnSUQoKSA6IDA7XG5cdCAgfVxu
XHRcblx0ICAvLyBJbnRlcm5hbCBpbnN0YW5jZXMgc2hvdWxkIGZ1bGx5IGNvbnN0cnVjdGVkIGF0
IHRoaXMgcG9pbnQsIHNvIHRoZXkgc2hvdWxkXG5cdCAgLy8gbm90IGdldCBhbnkgbmV3IGZpZWxk
cyBhZGRlZCB0byB0aGVtIGF0IHRoaXMgcG9pbnQuXG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBp
ZiAoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKSB7XG5cdCAgICAgIE9iamVjdC5wcmV2ZW50RXh0
ZW5zaW9ucyhpbnN0YW5jZSk7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gaW5zdGFu
Y2U7XG5cdH1cblx0XG5cdF9hc3NpZ24oUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyLnBy
b3RvdHlwZSwgUmVhY3RDb21wb3NpdGVDb21wb25lbnQsIHtcblx0ICBfaW5zdGFudGlhdGVSZWFj
dENvbXBvbmVudDogaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudFxuXHR9KTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDtcblxuLyoqKi8gfSxcbi8qIDc2
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
XHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0LyoqXG5cdCAqIEBzZWUgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dl
Yi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWlucHV0LWVsZW1lbnQuaHRtbCNpbnB1
dC10eXBlLWF0dHItc3VtbWFyeVxuXHQgKi9cblx0XG5cdHZhciBzdXBwb3J0ZWRJbnB1dFR5cGVz
ID0ge1xuXHQgIGNvbG9yOiB0cnVlLFxuXHQgIGRhdGU6IHRydWUsXG5cdCAgZGF0ZXRpbWU6IHRy
dWUsXG5cdCAgJ2RhdGV0aW1lLWxvY2FsJzogdHJ1ZSxcblx0ICBlbWFpbDogdHJ1ZSxcblx0ICBt
b250aDogdHJ1ZSxcblx0ICBudW1iZXI6IHRydWUsXG5cdCAgcGFzc3dvcmQ6IHRydWUsXG5cdCAg
cmFuZ2U6IHRydWUsXG5cdCAgc2VhcmNoOiB0cnVlLFxuXHQgIHRlbDogdHJ1ZSxcblx0ICB0ZXh0
OiB0cnVlLFxuXHQgIHRpbWU6IHRydWUsXG5cdCAgdXJsOiB0cnVlLFxuXHQgIHdlZWs6IHRydWVc
blx0fTtcblx0XG5cdGZ1bmN0aW9uIGlzVGV4dElucHV0RWxlbWVudChlbGVtKSB7XG5cdCAgdmFy
IG5vZGVOYW1lID0gZWxlbSAmJiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKTtcblx0XG5cdCAgaWYgKG5vZGVOYW1lID09PSAnaW5wdXQnKSB7XG5cdCAgICByZXR1
cm4gISFzdXBwb3J0ZWRJbnB1dFR5cGVzW2VsZW0udHlwZV07XG5cdCAgfVxuXHRcblx0ICBpZiAo
bm9kZU5hbWUgPT09ICd0ZXh0YXJlYScpIHtcblx0ICAgIHJldHVybiB0cnVlO1xuXHQgIH1cblx0
XG5cdCAgcmV0dXJuIGZhbHNlO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGlzVGV4dElu
cHV0RWxlbWVudDtcblxuLyoqKi8gfSxcbi8qIDc3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
blx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2
YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHR2YXIg
ZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOCk7XG5c
dHZhciBzZXRJbm5lckhUTUwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KTtcblx0XG5cdC8qKlxu
XHQgKiBTZXQgdGhlIHRleHRDb250ZW50IHByb3BlcnR5IG9mIGEgbm9kZSwgZW5zdXJpbmcgdGhh
dCB3aGl0ZXNwYWNlIGlzIHByZXNlcnZlZFxuXHQgKiBldmVuIGluIElFOC4gaW5uZXJUZXh0IGlz
IGEgcG9vciBzdWJzdGl0dXRlIGZvciB0ZXh0Q29udGVudCBhbmQsIGFtb25nIG1hbnlcblx0ICog
aXNzdWVzLCBpbnNlcnRzIDxicj4gaW5zdGVhZCBvZiB0aGUgbGl0ZXJhbCBuZXdsaW5lIGNoYXJz
LiBpbm5lckhUTUwgYmVoYXZlc1xuXHQgKiBhcyBpdCBzaG91bGQuXG5cdCAqXG5cdCAqIEBwYXJh
bSB7RE9NRWxlbWVudH0gbm9kZVxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuXHQgKiBAaW50
ZXJuYWxcblx0ICovXG5cdHZhciBzZXRUZXh0Q29udGVudCA9IGZ1bmN0aW9uIChub2RlLCB0ZXh0
KSB7XG5cdCAgaWYgKHRleHQpIHtcblx0ICAgIHZhciBmaXJzdENoaWxkID0gbm9kZS5maXJzdENo
aWxkO1xuXHRcblx0ICAgIGlmIChmaXJzdENoaWxkICYmIGZpcnN0Q2hpbGQgPT09IG5vZGUubGFz
dENoaWxkICYmIGZpcnN0Q2hpbGQubm9kZVR5cGUgPT09IDMpIHtcblx0ICAgICAgZmlyc3RDaGls
ZC5ub2RlVmFsdWUgPSB0ZXh0O1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgfVxuXHQg
IG5vZGUudGV4dENvbnRlbnQgPSB0ZXh0O1xuXHR9O1xuXHRcblx0aWYgKEV4ZWN1dGlvbkVudmly
b25tZW50LmNhblVzZURPTSkge1xuXHQgIGlmICghKCd0ZXh0Q29udGVudCcgaW4gZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50KSkge1xuXHQgICAgc2V0VGV4dENvbnRlbnQgPSBmdW5jdGlvbiAobm9k
ZSwgdGV4dCkge1xuXHQgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMykge1xuXHQgICAgICAg
IG5vZGUubm9kZVZhbHVlID0gdGV4dDtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH1cblx0
ICAgICAgc2V0SW5uZXJIVE1MKG5vZGUsIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0ZXh0
KSk7XG5cdCAgICB9O1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBzZXRUZXh0
Q29udGVudDtcblxuLyoqKi8gfSxcbi8qIDc4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIg
X3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIFJlYWN0
Q3VycmVudE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cdHZhciBSRUFDVF9FTEVN
RU5UX1RZUEUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1MSk7XG5cdFxuXHR2YXIgZ2V0SXRlcmF0
b3JGbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTgyKTtcblx0dmFyIGludmFyaWFudCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMSk7XG5cdHZhciBLZXlFc2NhcGVVdGlscyA9IF9fd2VicGFja19yZXF1
aXJlX18oMzgpO1xuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxu
XHR2YXIgU0VQQVJBVE9SID0gJy4nO1xuXHR2YXIgU1VCU0VQQVJBVE9SID0gJzonO1xuXHRcblx0
LyoqXG5cdCAqIFRoaXMgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxlbWVudCBzaW5jZSB0aGlzIGZp
bGUgaXMgc2hhcmVkIGJldHdlZW5cblx0ICogaXNvbW9ycGhpYyBhbmQgcmVuZGVyZXJzLiBXZSBj
b3VsZCBleHRyYWN0IHRoaXMgdG8gYVxuXHQgKlxuXHQgKi9cblx0XG5cdC8qKlxuXHQgKiBUT0RP
OiBUZXN0IHRoYXQgYSBzaW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5IHdpdGggb25lIGl0ZW0gaGF2
ZSB0aGUgc2FtZSBrZXlcblx0ICogcGF0dGVybi5cblx0ICovXG5cdFxuXHR2YXIgZGlkV2FybkFi
b3V0TWFwcyA9IGZhbHNlO1xuXHRcblx0LyoqXG5cdCAqIEdlbmVyYXRlIGEga2V5IHN0cmluZyB0
aGF0IGlkZW50aWZpZXMgYSBjb21wb25lbnQgd2l0aGluIGEgc2V0LlxuXHQgKlxuXHQgKiBAcGFy
YW0geyp9IGNvbXBvbmVudCBBIGNvbXBvbmVudCB0aGF0IGNvdWxkIGNvbnRhaW4gYSBtYW51YWwg
a2V5LlxuXHQgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggdGhhdCBpcyB1c2VkIGlmIGEg
bWFudWFsIGtleSBpcyBub3QgcHJvdmlkZWQuXG5cdCAqIEByZXR1cm4ge3N0cmluZ31cblx0ICov
XG5cdGZ1bmN0aW9uIGdldENvbXBvbmVudEtleShjb21wb25lbnQsIGluZGV4KSB7XG5cdCAgLy8g
RG8gc29tZSB0eXBlY2hlY2tpbmcgaGVyZSBzaW5jZSB3ZSBjYWxsIHRoaXMgYmxpbmRseS4gV2Ug
d2FudCB0byBlbnN1cmVcblx0ICAvLyB0aGF0IHdlIGRvbid0IGJsb2NrIHBvdGVudGlhbCBmdXR1
cmUgRVMgQVBJcy5cblx0ICBpZiAoY29tcG9uZW50ICYmIHR5cGVvZiBjb21wb25lbnQgPT09ICdv
YmplY3QnICYmIGNvbXBvbmVudC5rZXkgIT0gbnVsbCkge1xuXHQgICAgLy8gRXhwbGljaXQga2V5
XG5cdCAgICByZXR1cm4gS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGNvbXBvbmVudC5rZXkpO1xuXHQg
IH1cblx0ICAvLyBJbXBsaWNpdCBrZXkgZGV0ZXJtaW5lZCBieSB0aGUgaW5kZXggaW4gdGhlIHNl
dFxuXHQgIHJldHVybiBpbmRleC50b1N0cmluZygzNik7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBA
cGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cblx0ICogQHBhcmFt
IHshc3RyaW5nfSBuYW1lU29GYXIgTmFtZSBvZiB0aGUga2V5IHBhdGggc28gZmFyLlxuXHQgKiBA
cGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8gaW52b2tlIHdpdGggZWFjaCBj
aGlsZCBmb3VuZC5cblx0ICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IFVzZWQgdG8gcGFz
cyBpbmZvcm1hdGlvbiB0aHJvdWdob3V0IHRoZSB0cmF2ZXJzYWxcblx0ICogcHJvY2Vzcy5cblx0
ICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRy
ZWUuXG5cdCAqL1xuXHRmdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwg
bmFtZVNvRmFyLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG5cdCAgdmFyIHR5cGUgPSB0
eXBlb2YgY2hpbGRyZW47XG5cdFxuXHQgIGlmICh0eXBlID09PSAndW5kZWZpbmVkJyB8fCB0eXBl
ID09PSAnYm9vbGVhbicpIHtcblx0ICAgIC8vIEFsbCBvZiB0aGUgYWJvdmUgYXJlIHBlcmNlaXZl
ZCBhcyBudWxsLlxuXHQgICAgY2hpbGRyZW4gPSBudWxsO1xuXHQgIH1cblx0XG5cdCAgaWYgKGNo
aWxkcmVuID09PSBudWxsIHx8IHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGUgPT09ICdudW1iZXIn
IHx8XG5cdCAgLy8gVGhlIGZvbGxvd2luZyBpcyBpbmxpbmVkIGZyb20gUmVhY3RFbGVtZW50LiBU
aGlzIG1lYW5zIHdlIGNhbiBvcHRpbWl6ZVxuXHQgIC8vIHNvbWUgY2hlY2tzLiBSZWFjdCBGaWJl
ciBhbHNvIGlubGluZXMgdGhpcyBsb2dpYyBmb3Igc2ltaWxhciBwdXJwb3Nlcy5cblx0ICB0eXBl
ID09PSAnb2JqZWN0JyAmJiBjaGlsZHJlbi4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBF
KSB7XG5cdCAgICBjYWxsYmFjayh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkcmVuLFxuXHQgICAgLy8g
SWYgaXQncyB0aGUgb25seSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUgYXMgaWYgaXQgd2FzIHdyYXBw
ZWQgaW4gYW4gYXJyYXlcblx0ICAgIC8vIHNvIHRoYXQgaXQncyBjb25zaXN0ZW50IGlmIHRoZSBu
dW1iZXIgb2YgY2hpbGRyZW4gZ3Jvd3MuXG5cdCAgICBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJB
VE9SICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkcmVuLCAwKSA6IG5hbWVTb0Zhcik7XG5cdCAgICBy
ZXR1cm4gMTtcblx0ICB9XG5cdFxuXHQgIHZhciBjaGlsZDtcblx0ICB2YXIgbmV4dE5hbWU7XG5c
dCAgdmFyIHN1YnRyZWVDb3VudCA9IDA7IC8vIENvdW50IG9mIGNoaWxkcmVuIGZvdW5kIGluIHRo
ZSBjdXJyZW50IHN1YnRyZWUuXG5cdCAgdmFyIG5leHROYW1lUHJlZml4ID0gbmFtZVNvRmFyID09
PSAnJyA/IFNFUEFSQVRPUiA6IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRPUjtcblx0XG5cdCAgaWYg
KEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNo
aWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07XG5cdCAg
ICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGkp
O1xuXHQgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQs
IG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcblx0ICAgIH1cblx0ICB9IGVs
c2Uge1xuXHQgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKGNoaWxkcmVuKTtcblx0
ICAgIGlmIChpdGVyYXRvckZuKSB7XG5cdCAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4u
Y2FsbChjaGlsZHJlbik7XG5cdCAgICAgIHZhciBzdGVwO1xuXHQgICAgICBpZiAoaXRlcmF0b3JG
biAhPT0gY2hpbGRyZW4uZW50cmllcykge1xuXHQgICAgICAgIHZhciBpaSA9IDA7XG5cdCAgICAg
ICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAg
Y2hpbGQgPSBzdGVwLnZhbHVlO1xuXHQgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZp
eCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaWkrKyk7XG5cdCAgICAgICAgICBzdWJ0cmVlQ291
bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywg
dHJhdmVyc2VDb250ZXh0KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAg
ICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSA9
ICcnO1xuXHQgICAgICAgICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHtcblx0ICAg
ICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lID0gUmVhY3RDdXJyZW50T3duZXIu
Y3VycmVudC5nZXROYW1lKCk7XG5cdCAgICAgICAgICAgIGlmIChtYXBzQXNDaGlsZHJlbk93bmVy
TmFtZSkge1xuXHQgICAgICAgICAgICAgIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnIENoZWNr
IHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgKyAnYC4n
O1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRXYXJuQWJvdXRNYXBzLCAn
VXNpbmcgTWFwcyBhcyBjaGlsZHJlbiBpcyBub3QgeWV0IGZ1bGx5IHN1cHBvcnRlZC4gSXQgaXMg
YW4gJyArICdleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1pZ2h0IGJlIHJlbW92ZWQuIENvbnZl
cnQgaXQgdG8gYSAnICsgJ3NlcXVlbmNlIC8gaXRlcmFibGUgb2Yga2V5ZWQgUmVhY3RFbGVtZW50
cyBpbnN0ZWFkLiVzJywgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSkgOiB2b2lkIDA7XG5cdCAgICAg
ICAgICBkaWRXYXJuQWJvdXRNYXBzID0gdHJ1ZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgLy8g
SXRlcmF0b3Igd2lsbCBwcm92aWRlIGVudHJ5IFtrLHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1
ZXMuXG5cdCAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xu
XHQgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcblx0ICAgICAgICAgIGlmIChlbnRy
eSkge1xuXHQgICAgICAgICAgICBjaGlsZCA9IGVudHJ5WzFdO1xuXHQgICAgICAgICAgICBuZXh0
TmFtZSA9IG5leHROYW1lUHJlZml4ICsgS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGVudHJ5WzBdKSAr
IFNVQlNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZCwgMCk7XG5cdCAgICAgICAgICAg
IHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUs
IGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1c
blx0ICAgICAgfVxuXHQgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuXHQgICAg
ICB2YXIgYWRkZW5kdW0gPSAnJztcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgYWRk
ZW5kdW0gPSAnIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVu
LCB1c2UgYW4gYXJyYXkgJyArICdpbnN0ZWFkIG9yIHdyYXAgdGhlIG9iamVjdCB1c2luZyBjcmVh
dGVGcmFnbWVudChvYmplY3QpIGZyb20gdGhlICcgKyAnUmVhY3QgYWRkLW9ucy4nO1xuXHQgICAg
ICAgIGlmIChjaGlsZHJlbi5faXNSZWFjdEVsZW1lbnQpIHtcblx0ICAgICAgICAgIGFkZGVuZHVt
ID0gXCIgSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgYW4gZWxlbWVudCBjcmVhdGVkIGJ5IGEg
ZGlmZmVyZW50IFwiICsgJ3ZlcnNpb24gb2YgUmVhY3QuIE1ha2Ugc3VyZSB0byB1c2Ugb25seSBv
bmUgY29weSBvZiBSZWFjdC4nO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAoUmVhY3RDdXJy
ZW50T3duZXIuY3VycmVudCkge1xuXHQgICAgICAgICAgdmFyIG5hbWUgPSBSZWFjdEN1cnJlbnRP
d25lci5jdXJyZW50LmdldE5hbWUoKTtcblx0ICAgICAgICAgIGlmIChuYW1lKSB7XG5cdCAgICAg
ICAgICAgIGFkZGVuZHVtICs9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1l
ICsgJ2AuJztcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAg
dmFyIGNoaWxkcmVuU3RyaW5nID0gU3RyaW5nKGNoaWxkcmVuKTtcblx0ICAgICAgIHRydWUgPyAg
ZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFj
dCBjaGlsZCAoZm91bmQ6ICVzKS4lcycsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmpl
Y3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4o
JywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogX3Byb2RJbnZhcmlhbnQo
JzMxJywgY2hpbGRyZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8gJ29iamVjdCB3aXRo
IGtleXMgeycgKyBPYmplY3Qua2V5cyhjaGlsZHJlbikuam9pbignLCAnKSArICd9JyA6IGNoaWxk
cmVuU3RyaW5nLCBhZGRlbmR1bSkgOiB2b2lkIDA7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICBy
ZXR1cm4gc3VidHJlZUNvdW50O1xuXHR9XG5cdFxuXHQvKipcblx0ICogVHJhdmVyc2VzIGNoaWxk
cmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYCwgYnV0
XG5cdCAqIG1pZ2h0IGFsc28gYmUgc3BlY2lmaWVkIHRocm91Z2ggYXR0cmlidXRlczpcblx0ICpc
blx0ICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmNoaWxkcmVuLCAuLi4pYFxu
XHQgKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMubGVmdFBhbmVsQ2hpbGRyZW4s
IC4uLilgXG5cdCAqXG5cdCAqIFRoZSBgdHJhdmVyc2VDb250ZXh0YCBpcyBhbiBvcHRpb25hbCBh
cmd1bWVudCB0aGF0IGlzIHBhc3NlZCB0aHJvdWdoIHRoZVxuXHQgKiBlbnRpcmUgdHJhdmVyc2Fs
LiBJdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBhY2N1bXVsYXRpb25zIG9yIGFueXRoaW5nIGVsc2Ug
dGhhdFxuXHQgKiB0aGUgY2FsbGJhY2sgbWlnaHQgZmluZCByZWxldmFudC5cblx0ICpcblx0ICog
QHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBvYmplY3QuXG5cdCAqIEBwYXJhbSB7
IWZ1bmN0aW9ufSBjYWxsYmFjayBUbyBpbnZva2UgdXBvbiB0cmF2ZXJzaW5nIGVhY2ggY2hpbGQu
XG5cdCAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IGZvciB0cmF2ZXJzYWwu
XG5cdCAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBz
dWJ0cmVlLlxuXHQgKi9cblx0ZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwg
Y2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCkge1xuXHQgIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7
XG5cdCAgICByZXR1cm4gMDtcblx0ICB9XG5cdFxuXHQgIHJldHVybiB0cmF2ZXJzZUFsbENoaWxk
cmVuSW1wbChjaGlsZHJlbiwgJycsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuXHR9XG5c
dFxuXHRtb2R1bGUuZXhwb3J0cyA9IHRyYXZlcnNlQWxsQ2hpbGRyZW47XG5cbi8qKiovIH0sXG4v
KiA3OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1
ZTtcblx0XG5cdHZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdl
dCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291
cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3Qu
cHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXld
ID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cdFxuXHRleHBvcnRzLmRl
ZmF1bHQgPSBjb25uZWN0QWR2YW5jZWQ7XG5cdFxuXHR2YXIgX2hvaXN0Tm9uUmVhY3RTdGF0aWNz
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTApO1xuXHRcblx0dmFyIF9ob2lzdE5vblJlYWN0U3Rh
dGljczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9ob2lzdE5vblJlYWN0U3RhdGljcyk7XG5c
dFxuXHR2YXIgX2ludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTExKTtcblx0XG5cdHZh
ciBfaW52YXJpYW50MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ludmFyaWFudCk7XG5cdFxu
XHR2YXIgX3JlYWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG5cdFxuXHR2YXIgX1N1YnNj
cmlwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTk0KTtcblx0XG5cdHZhciBfU3Vic2NyaXB0
aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1N1YnNjcmlwdGlvbik7XG5cdFxuXHR2YXIg
X1Byb3BUeXBlcyA9IF9fd2VicGFja19yZXF1aXJlX18oODIpO1xuXHRcblx0ZnVuY3Rpb24gX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/
IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVj
ayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25z
dHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMg
YSBmdW5jdGlvblwiKTsgfSB9XG5cdFxuXHRmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJl
dHVybihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3Io
XCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxs
ZWRcIik7IH0gcmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09PSBcIm9iamVjdFwiIHx8IHR5
cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7IH1cblx0XG5cdGZ1bmN0
aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xh
c3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBU
eXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5j
dGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25z
dHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTog
dHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0
UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3Mp
IDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXHRcblx0ZnVuY3Rpb24gX29i
amVjdFdpdGhvdXRQcm9wZXJ0aWVzKG9iaiwga2V5cykgeyB2YXIgdGFyZ2V0ID0ge307IGZvciAo
dmFyIGkgaW4gb2JqKSB7IGlmIChrZXlzLmluZGV4T2YoaSkgPj0gMCkgY29udGludWU7IGlmICgh
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgaSkpIGNvbnRpbnVlOyB0
YXJnZXRbaV0gPSBvYmpbaV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXHRcblx0dmFyIGhvdFJlbG9h
ZGluZ1ZlcnNpb24gPSAwO1xuXHR2YXIgZHVtbXlTdGF0ZSA9IHt9O1xuXHRmdW5jdGlvbiBub29w
KCkge31cblx0ZnVuY3Rpb24gbWFrZVNlbGVjdG9yU3RhdGVmdWwoc291cmNlU2VsZWN0b3IsIHN0
b3JlKSB7XG5cdCAgLy8gd3JhcCB0aGUgc2VsZWN0b3IgaW4gYW4gb2JqZWN0IHRoYXQgdHJhY2tz
IGl0cyByZXN1bHRzIGJldHdlZW4gcnVucy5cblx0ICB2YXIgc2VsZWN0b3IgPSB7XG5cdCAgICBy
dW46IGZ1bmN0aW9uIHJ1bkNvbXBvbmVudFNlbGVjdG9yKHByb3BzKSB7XG5cdCAgICAgIHRyeSB7
XG5cdCAgICAgICAgdmFyIG5leHRQcm9wcyA9IHNvdXJjZVNlbGVjdG9yKHN0b3JlLmdldFN0YXRl
KCksIHByb3BzKTtcblx0ICAgICAgICBpZiAobmV4dFByb3BzICE9PSBzZWxlY3Rvci5wcm9wcyB8
fCBzZWxlY3Rvci5lcnJvcikge1xuXHQgICAgICAgICAgc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50
VXBkYXRlID0gdHJ1ZTtcblx0ICAgICAgICAgIHNlbGVjdG9yLnByb3BzID0gbmV4dFByb3BzO1xu
XHQgICAgICAgICAgc2VsZWN0b3IuZXJyb3IgPSBudWxsO1xuXHQgICAgICAgIH1cblx0ICAgICAg
fSBjYXRjaCAoZXJyb3IpIHtcblx0ICAgICAgICBzZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRh
dGUgPSB0cnVlO1xuXHQgICAgICAgIHNlbGVjdG9yLmVycm9yID0gZXJyb3I7XG5cdCAgICAgIH1c
blx0ICAgIH1cblx0ICB9O1xuXHRcblx0ICByZXR1cm4gc2VsZWN0b3I7XG5cdH1cblx0XG5cdGZ1
bmN0aW9uIGNvbm5lY3RBZHZhbmNlZChcblx0Lypcblx0ICBzZWxlY3RvckZhY3RvcnkgaXMgYSBm
dW5jIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIHJldHVybmluZyB0aGUgc2VsZWN0b3IgZnVuY3Rp
b24gdXNlZCB0b1xuXHQgIGNvbXB1dGUgbmV3IHByb3BzIGZyb20gc3RhdGUsIHByb3BzLCBhbmQg
ZGlzcGF0Y2guIEZvciBleGFtcGxlOlxuXHQgICAgIGV4cG9ydCBkZWZhdWx0IGNvbm5lY3RBZHZh
bmNlZCgoZGlzcGF0Y2gsIG9wdGlvbnMpID0+IChzdGF0ZSwgcHJvcHMpID0+ICh7XG5cdCAgICAg
IHRoaW5nOiBzdGF0ZS50aGluZ3NbcHJvcHMudGhpbmdJZF0sXG5cdCAgICAgIHNhdmVUaGluZzog
ZmllbGRzID0+IGRpc3BhdGNoKGFjdGlvbkNyZWF0b3JzLnNhdmVUaGluZyhwcm9wcy50aGluZ0lk
LCBmaWVsZHMpKSxcblx0ICAgIH0pKShZb3VyQ29tcG9uZW50KVxuXHQgICBBY2Nlc3MgdG8gZGlz
cGF0Y2ggaXMgcHJvdmlkZWQgdG8gdGhlIGZhY3Rvcnkgc28gc2VsZWN0b3JGYWN0b3JpZXMgY2Fu
IGJpbmQgYWN0aW9uQ3JlYXRvcnNcblx0ICBvdXRzaWRlIG9mIHRoZWlyIHNlbGVjdG9yIGFzIGFu
IG9wdGltaXphdGlvbi4gT3B0aW9ucyBwYXNzZWQgdG8gY29ubmVjdEFkdmFuY2VkIGFyZSBwYXNz
ZWQgdG9cblx0ICB0aGUgc2VsZWN0b3JGYWN0b3J5LCBhbG9uZyB3aXRoIGRpc3BsYXlOYW1lIGFu
ZCBXcmFwcGVkQ29tcG9uZW50LCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LlxuXHQgICBOb3RlIHRo
YXQgc2VsZWN0b3JGYWN0b3J5IGlzIHJlc3BvbnNpYmxlIGZvciBhbGwgY2FjaGluZy9tZW1vaXph
dGlvbiBvZiBpbmJvdW5kIGFuZCBvdXRib3VuZFxuXHQgIHByb3BzLiBEbyBub3QgdXNlIGNvbm5l
Y3RBZHZhbmNlZCBkaXJlY3RseSB3aXRob3V0IG1lbW9pemluZyByZXN1bHRzIGJldHdlZW4gY2Fs
bHMgdG8geW91clxuXHQgIHNlbGVjdG9yLCBvdGhlcndpc2UgdGhlIENvbm5lY3QgY29tcG9uZW50
IHdpbGwgcmUtcmVuZGVyIG9uIGV2ZXJ5IHN0YXRlIG9yIHByb3BzIGNoYW5nZS5cblx0Ki9cblx0
c2VsZWN0b3JGYWN0b3J5KSB7XG5cdCAgdmFyIF9jb250ZXh0VHlwZXMsIF9jaGlsZENvbnRleHRU
eXBlcztcblx0XG5cdCAgdmFyIF9yZWYgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVu
dHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9LFxuXHQgICAgICBfcmVmJGdl
dERpc3BsYXlOYW1lID0gX3JlZi5nZXREaXNwbGF5TmFtZSxcblx0ICAgICAgZ2V0RGlzcGxheU5h
bWUgPSBfcmVmJGdldERpc3BsYXlOYW1lID09PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAobmFtZSkg
e1xuXHQgICAgcmV0dXJuICdDb25uZWN0QWR2YW5jZWQoJyArIG5hbWUgKyAnKSc7XG5cdCAgfSA6
IF9yZWYkZ2V0RGlzcGxheU5hbWUsXG5cdCAgICAgIF9yZWYkbWV0aG9kTmFtZSA9IF9yZWYubWV0
aG9kTmFtZSxcblx0ICAgICAgbWV0aG9kTmFtZSA9IF9yZWYkbWV0aG9kTmFtZSA9PT0gdW5kZWZp
bmVkID8gJ2Nvbm5lY3RBZHZhbmNlZCcgOiBfcmVmJG1ldGhvZE5hbWUsXG5cdCAgICAgIF9yZWYk
cmVuZGVyQ291bnRQcm9wID0gX3JlZi5yZW5kZXJDb3VudFByb3AsXG5cdCAgICAgIHJlbmRlckNv
dW50UHJvcCA9IF9yZWYkcmVuZGVyQ291bnRQcm9wID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQg
OiBfcmVmJHJlbmRlckNvdW50UHJvcCxcblx0ICAgICAgX3JlZiRzaG91bGRIYW5kbGVTdGF0ID0g
X3JlZi5zaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMsXG5cdCAgICAgIHNob3VsZEhhbmRsZVN0YXRl
Q2hhbmdlcyA9IF9yZWYkc2hvdWxkSGFuZGxlU3RhdCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IF9y
ZWYkc2hvdWxkSGFuZGxlU3RhdCxcblx0ICAgICAgX3JlZiRzdG9yZUtleSA9IF9yZWYuc3RvcmVL
ZXksXG5cdCAgICAgIHN0b3JlS2V5ID0gX3JlZiRzdG9yZUtleSA9PT0gdW5kZWZpbmVkID8gJ3N0
b3JlJyA6IF9yZWYkc3RvcmVLZXksXG5cdCAgICAgIF9yZWYkd2l0aFJlZiA9IF9yZWYud2l0aFJl
Zixcblx0ICAgICAgd2l0aFJlZiA9IF9yZWYkd2l0aFJlZiA9PT0gdW5kZWZpbmVkID8gZmFsc2Ug
OiBfcmVmJHdpdGhSZWYsXG5cdCAgICAgIGNvbm5lY3RPcHRpb25zID0gX29iamVjdFdpdGhvdXRQ
cm9wZXJ0aWVzKF9yZWYsIFsnZ2V0RGlzcGxheU5hbWUnLCAnbWV0aG9kTmFtZScsICdyZW5kZXJD
b3VudFByb3AnLCAnc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzJywgJ3N0b3JlS2V5JywgJ3dpdGhS
ZWYnXSk7XG5cdFxuXHQgIHZhciBzdWJzY3JpcHRpb25LZXkgPSBzdG9yZUtleSArICdTdWJzY3Jp
cHRpb24nO1xuXHQgIHZhciB2ZXJzaW9uID0gaG90UmVsb2FkaW5nVmVyc2lvbisrO1xuXHRcblx0
ICB2YXIgY29udGV4dFR5cGVzID0gKF9jb250ZXh0VHlwZXMgPSB7fSwgX2NvbnRleHRUeXBlc1tz
dG9yZUtleV0gPSBfUHJvcFR5cGVzLnN0b3JlU2hhcGUsIF9jb250ZXh0VHlwZXNbc3Vic2NyaXB0
aW9uS2V5XSA9IF9Qcm9wVHlwZXMuc3Vic2NyaXB0aW9uU2hhcGUsIF9jb250ZXh0VHlwZXMpO1xu
XHQgIHZhciBjaGlsZENvbnRleHRUeXBlcyA9IChfY2hpbGRDb250ZXh0VHlwZXMgPSB7fSwgX2No
aWxkQ29udGV4dFR5cGVzW3N1YnNjcmlwdGlvbktleV0gPSBfUHJvcFR5cGVzLnN1YnNjcmlwdGlv
blNoYXBlLCBfY2hpbGRDb250ZXh0VHlwZXMpO1xuXHRcblx0ICByZXR1cm4gZnVuY3Rpb24gd3Jh
cFdpdGhDb25uZWN0KFdyYXBwZWRDb21wb25lbnQpIHtcblx0ICAgICgwLCBfaW52YXJpYW50Mi5k
ZWZhdWx0KSh0eXBlb2YgV3JhcHBlZENvbXBvbmVudCA9PSAnZnVuY3Rpb24nLCAnWW91IG11c3Qg
cGFzcyBhIGNvbXBvbmVudCB0byB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgJyArICgnY29ubmVj
dC4gSW5zdGVhZCByZWNlaXZlZCAnICsgSlNPTi5zdHJpbmdpZnkoV3JhcHBlZENvbXBvbmVudCkp
KTtcblx0XG5cdCAgICB2YXIgd3JhcHBlZENvbXBvbmVudE5hbWUgPSBXcmFwcGVkQ29tcG9uZW50
LmRpc3BsYXlOYW1lIHx8IFdyYXBwZWRDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50Jztcblx0
XG5cdCAgICB2YXIgZGlzcGxheU5hbWUgPSBnZXREaXNwbGF5TmFtZSh3cmFwcGVkQ29tcG9uZW50
TmFtZSk7XG5cdFxuXHQgICAgdmFyIHNlbGVjdG9yRmFjdG9yeU9wdGlvbnMgPSBfZXh0ZW5kcyh7
fSwgY29ubmVjdE9wdGlvbnMsIHtcblx0ICAgICAgZ2V0RGlzcGxheU5hbWU6IGdldERpc3BsYXlO
YW1lLFxuXHQgICAgICBtZXRob2ROYW1lOiBtZXRob2ROYW1lLFxuXHQgICAgICByZW5kZXJDb3Vu
dFByb3A6IHJlbmRlckNvdW50UHJvcCxcblx0ICAgICAgc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2Vz
OiBzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMsXG5cdCAgICAgIHN0b3JlS2V5OiBzdG9yZUtleSxc
blx0ICAgICAgd2l0aFJlZjogd2l0aFJlZixcblx0ICAgICAgZGlzcGxheU5hbWU6IGRpc3BsYXlO
YW1lLFxuXHQgICAgICB3cmFwcGVkQ29tcG9uZW50TmFtZTogd3JhcHBlZENvbXBvbmVudE5hbWUs
XG5cdCAgICAgIFdyYXBwZWRDb21wb25lbnQ6IFdyYXBwZWRDb21wb25lbnRcblx0ICAgIH0pO1xu
XHRcblx0ICAgIHZhciBDb25uZWN0ID0gZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcblx0ICAgICAg
X2luaGVyaXRzKENvbm5lY3QsIF9Db21wb25lbnQpO1xuXHRcblx0ICAgICAgZnVuY3Rpb24gQ29u
bmVjdChwcm9wcywgY29udGV4dCkge1xuXHQgICAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBD
b25uZWN0KTtcblx0XG5cdCAgICAgICAgdmFyIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JS
ZXR1cm4odGhpcywgX0NvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzLCBjb250ZXh0KSk7XG5cdFxu
XHQgICAgICAgIF90aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuXHQgICAgICAgIF90aGlzLnN0YXRl
ID0ge307XG5cdCAgICAgICAgX3RoaXMucmVuZGVyQ291bnQgPSAwO1xuXHQgICAgICAgIF90aGlz
LnN0b3JlID0gcHJvcHNbc3RvcmVLZXldIHx8IGNvbnRleHRbc3RvcmVLZXldO1xuXHQgICAgICAg
IF90aGlzLnByb3BzTW9kZSA9IEJvb2xlYW4ocHJvcHNbc3RvcmVLZXldKTtcblx0ICAgICAgICBf
dGhpcy5zZXRXcmFwcGVkSW5zdGFuY2UgPSBfdGhpcy5zZXRXcmFwcGVkSW5zdGFuY2UuYmluZChf
dGhpcyk7XG5cdFxuXHQgICAgICAgICgwLCBfaW52YXJpYW50Mi5kZWZhdWx0KShfdGhpcy5zdG9y
ZSwgJ0NvdWxkIG5vdCBmaW5kIFwiJyArIHN0b3JlS2V5ICsgJ1wiIGluIGVpdGhlciB0aGUgY29u
dGV4dCBvciBwcm9wcyBvZiAnICsgKCdcIicgKyBkaXNwbGF5TmFtZSArICdcIi4gRWl0aGVyIHdy
YXAgdGhlIHJvb3QgY29tcG9uZW50IGluIGEgPFByb3ZpZGVyPiwgJykgKyAoJ29yIGV4cGxpY2l0
bHkgcGFzcyBcIicgKyBzdG9yZUtleSArICdcIiBhcyBhIHByb3AgdG8gXCInICsgZGlzcGxheU5h
bWUgKyAnXCIuJykpO1xuXHRcblx0ICAgICAgICBfdGhpcy5pbml0U2VsZWN0b3IoKTtcblx0ICAg
ICAgICBfdGhpcy5pbml0U3Vic2NyaXB0aW9uKCk7XG5cdCAgICAgICAgcmV0dXJuIF90aGlzO1xu
XHQgICAgICB9XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5nZXRDaGlsZENvbnRleHQg
PSBmdW5jdGlvbiBnZXRDaGlsZENvbnRleHQoKSB7XG5cdCAgICAgICAgdmFyIF9yZWYyO1xuXHRc
blx0ICAgICAgICAvLyBJZiB0aGlzIGNvbXBvbmVudCByZWNlaXZlZCBzdG9yZSBmcm9tIHByb3Bz
LCBpdHMgc3Vic2NyaXB0aW9uIHNob3VsZCBiZSB0cmFuc3BhcmVudFxuXHQgICAgICAgIC8vIHRv
IGFueSBkZXNjZW5kYW50cyByZWNlaXZpbmcgc3RvcmUrc3Vic2NyaXB0aW9uIGZyb20gY29udGV4
dDsgaXQgcGFzc2VzIGFsb25nXG5cdCAgICAgICAgLy8gc3Vic2NyaXB0aW9uIHBhc3NlZCB0byBp
dC4gT3RoZXJ3aXNlLCBpdCBzaGFkb3dzIHRoZSBwYXJlbnQgc3Vic2NyaXB0aW9uLCB3aGljaCBh
bGxvd3Ncblx0ICAgICAgICAvLyBDb25uZWN0IHRvIGNvbnRyb2wgb3JkZXJpbmcgb2Ygbm90aWZp
Y2F0aW9ucyB0byBmbG93IHRvcC1kb3duLlxuXHQgICAgICAgIHZhciBzdWJzY3JpcHRpb24gPSB0
aGlzLnByb3BzTW9kZSA/IG51bGwgOiB0aGlzLnN1YnNjcmlwdGlvbjtcblx0ICAgICAgICByZXR1
cm4gX3JlZjIgPSB7fSwgX3JlZjJbc3Vic2NyaXB0aW9uS2V5XSA9IHN1YnNjcmlwdGlvbiB8fCB0
aGlzLmNvbnRleHRbc3Vic2NyaXB0aW9uS2V5XSwgX3JlZjI7XG5cdCAgICAgIH07XG5cdFxuXHQg
ICAgICBDb25uZWN0LnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uIGNvbXBv
bmVudERpZE1vdW50KCkge1xuXHQgICAgICAgIGlmICghc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2Vz
KSByZXR1cm47XG5cdFxuXHQgICAgICAgIC8vIGNvbXBvbmVudFdpbGxNb3VudCBmaXJlcyBkdXJp
bmcgc2VydmVyIHNpZGUgcmVuZGVyaW5nLCBidXQgY29tcG9uZW50RGlkTW91bnQgYW5kXG5cdCAg
ICAgICAgLy8gY29tcG9uZW50V2lsbFVubW91bnQgZG8gbm90LiBCZWNhdXNlIG9mIHRoaXMsIHRy
eVN1YnNjcmliZSBoYXBwZW5zIGR1cmluZyAuLi5kaWRNb3VudC5cblx0ICAgICAgICAvLyBPdGhl
cndpc2UsIHVuc3Vic2NyaXB0aW9uIHdvdWxkIG5ldmVyIHRha2UgcGxhY2UgZHVyaW5nIFNTUiwg
Y2F1c2luZyBhIG1lbW9yeSBsZWFrLlxuXHQgICAgICAgIC8vIFRvIGhhbmRsZSB0aGUgY2FzZSB3
aGVyZSBhIGNoaWxkIGNvbXBvbmVudCBtYXkgaGF2ZSB0cmlnZ2VyZWQgYSBzdGF0ZSBjaGFuZ2Ug
Ynlcblx0ICAgICAgICAvLyBkaXNwYXRjaGluZyBhbiBhY3Rpb24gaW4gaXRzIGNvbXBvbmVudFdp
bGxNb3VudCwgd2UgaGF2ZSB0byByZS1ydW4gdGhlIHNlbGVjdCBhbmQgbWF5YmVcblx0ICAgICAg
ICAvLyByZS1yZW5kZXIuXG5cdCAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udHJ5U3Vic2NyaWJl
KCk7XG5cdCAgICAgICAgdGhpcy5zZWxlY3Rvci5ydW4odGhpcy5wcm9wcyk7XG5cdCAgICAgICAg
aWYgKHRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlKSB0aGlzLmZvcmNlVXBkYXRl
KCk7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5jb21wb25lbnRX
aWxsUmVjZWl2ZVByb3BzID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0
UHJvcHMpIHtcblx0ICAgICAgICB0aGlzLnNlbGVjdG9yLnJ1bihuZXh0UHJvcHMpO1xuXHQgICAg
ICB9O1xuXHRcblx0ICAgICAgQ29ubmVjdC5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRl
ID0gZnVuY3Rpb24gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCkge1xuXHQgICAgICAgIHJldHVybiB0
aGlzLnNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZTtcblx0ICAgICAgfTtcblx0XG5cdCAg
ICAgIENvbm5lY3QucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gY29t
cG9uZW50V2lsbFVubW91bnQoKSB7XG5cdCAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB0
aGlzLnN1YnNjcmlwdGlvbi50cnlVbnN1YnNjcmliZSgpO1xuXHQgICAgICAgIHRoaXMuc3Vic2Ny
aXB0aW9uID0gbnVsbDtcblx0ICAgICAgICB0aGlzLm5vdGlmeU5lc3RlZFN1YnMgPSBub29wO1xu
XHQgICAgICAgIHRoaXMuc3RvcmUgPSBudWxsO1xuXHQgICAgICAgIHRoaXMuc2VsZWN0b3IucnVu
ID0gbm9vcDtcblx0ICAgICAgICB0aGlzLnNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9
IGZhbHNlO1xuXHQgICAgICB9O1xuXHRcblx0ICAgICAgQ29ubmVjdC5wcm90b3R5cGUuZ2V0V3Jh
cHBlZEluc3RhbmNlID0gZnVuY3Rpb24gZ2V0V3JhcHBlZEluc3RhbmNlKCkge1xuXHQgICAgICAg
ICgwLCBfaW52YXJpYW50Mi5kZWZhdWx0KSh3aXRoUmVmLCAnVG8gYWNjZXNzIHRoZSB3cmFwcGVk
IGluc3RhbmNlLCB5b3UgbmVlZCB0byBzcGVjaWZ5ICcgKyAoJ3sgd2l0aFJlZjogdHJ1ZSB9IGlu
IHRoZSBvcHRpb25zIGFyZ3VtZW50IG9mIHRoZSAnICsgbWV0aG9kTmFtZSArICcoKSBjYWxsLicp
KTtcblx0ICAgICAgICByZXR1cm4gdGhpcy53cmFwcGVkSW5zdGFuY2U7XG5cdCAgICAgIH07XG5c
dFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5zZXRXcmFwcGVkSW5zdGFuY2UgPSBmdW5jdGlv
biBzZXRXcmFwcGVkSW5zdGFuY2UocmVmKSB7XG5cdCAgICAgICAgdGhpcy53cmFwcGVkSW5zdGFu
Y2UgPSByZWY7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5pbml0
U2VsZWN0b3IgPSBmdW5jdGlvbiBpbml0U2VsZWN0b3IoKSB7XG5cdCAgICAgICAgdmFyIHNvdXJj
ZVNlbGVjdG9yID0gc2VsZWN0b3JGYWN0b3J5KHRoaXMuc3RvcmUuZGlzcGF0Y2gsIHNlbGVjdG9y
RmFjdG9yeU9wdGlvbnMpO1xuXHQgICAgICAgIHRoaXMuc2VsZWN0b3IgPSBtYWtlU2VsZWN0b3JT
dGF0ZWZ1bChzb3VyY2VTZWxlY3RvciwgdGhpcy5zdG9yZSk7XG5cdCAgICAgICAgdGhpcy5zZWxl
Y3Rvci5ydW4odGhpcy5wcm9wcyk7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0LnBy
b3RvdHlwZS5pbml0U3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gaW5pdFN1YnNjcmlwdGlvbigpIHtc
blx0ICAgICAgICBpZiAoIXNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcykgcmV0dXJuO1xuXHRcblx0
ICAgICAgICAvLyBwYXJlbnRTdWIncyBzb3VyY2Ugc2hvdWxkIG1hdGNoIHdoZXJlIHN0b3JlIGNh
bWUgZnJvbTogcHJvcHMgdnMuIGNvbnRleHQuIEEgY29tcG9uZW50XG5cdCAgICAgICAgLy8gY29u
bmVjdGVkIHRvIHRoZSBzdG9yZSB2aWEgcHJvcHMgc2hvdWxkbid0IHVzZSBzdWJzY3JpcHRpb24g
ZnJvbSBjb250ZXh0LCBvciB2aWNlIHZlcnNhLlxuXHQgICAgICAgIHZhciBwYXJlbnRTdWIgPSAo
dGhpcy5wcm9wc01vZGUgPyB0aGlzLnByb3BzIDogdGhpcy5jb250ZXh0KVtzdWJzY3JpcHRpb25L
ZXldO1xuXHQgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gbmV3IF9TdWJzY3JpcHRpb24yLmRl
ZmF1bHQodGhpcy5zdG9yZSwgcGFyZW50U3ViLCB0aGlzLm9uU3RhdGVDaGFuZ2UuYmluZCh0aGlz
KSk7XG5cdFxuXHQgICAgICAgIC8vIGBub3RpZnlOZXN0ZWRTdWJzYCBpcyBkdXBsaWNhdGVkIHRv
IGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgY29tcG9uZW50IGlzICB1bm1vdW50ZWQgaW5cblx0
ICAgICAgICAvLyB0aGUgbWlkZGxlIG9mIHRoZSBub3RpZmljYXRpb24gbG9vcCwgd2hlcmUgYHRo
aXMuc3Vic2NyaXB0aW9uYCB3aWxsIHRoZW4gYmUgbnVsbC4gQW5cblx0ICAgICAgICAvLyBleHRy
YSBudWxsIGNoZWNrIGV2ZXJ5IGNoYW5nZSBjYW4gYmUgYXZvaWRlZCBieSBjb3B5aW5nIHRoZSBt
ZXRob2Qgb250byBgdGhpc2AgYW5kIHRoZW5cblx0ICAgICAgICAvLyByZXBsYWNpbmcgaXQgd2l0
aCBhIG5vLW9wIG9uIHVubW91bnQuIFRoaXMgY2FuIHByb2JhYmx5IGJlIGF2b2lkZWQgaWYgU3Vi
c2NyaXB0aW9uJ3Ncblx0ICAgICAgICAvLyBsaXN0ZW5lcnMgbG9naWMgaXMgY2hhbmdlZCB0byBu
b3QgY2FsbCBsaXN0ZW5lcnMgdGhhdCBoYXZlIGJlZW4gdW5zdWJzY3JpYmVkIGluIHRoZVxuXHQg
ICAgICAgIC8vIG1pZGRsZSBvZiB0aGUgbm90aWZpY2F0aW9uIGxvb3AuXG5cdCAgICAgICAgdGhp
cy5ub3RpZnlOZXN0ZWRTdWJzID0gdGhpcy5zdWJzY3JpcHRpb24ubm90aWZ5TmVzdGVkU3Vicy5i
aW5kKHRoaXMuc3Vic2NyaXB0aW9uKTtcblx0ICAgICAgfTtcblx0XG5cdCAgICAgIENvbm5lY3Qu
cHJvdG90eXBlLm9uU3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiBvblN0YXRlQ2hhbmdlKCkge1xuXHQg
ICAgICAgIHRoaXMuc2VsZWN0b3IucnVuKHRoaXMucHJvcHMpO1xuXHRcblx0ICAgICAgICBpZiAo
IXRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlKSB7XG5cdCAgICAgICAgICB0aGlz
Lm5vdGlmeU5lc3RlZFN1YnMoKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgdGhp
cy5jb21wb25lbnREaWRVcGRhdGUgPSB0aGlzLm5vdGlmeU5lc3RlZFN1YnNPbkNvbXBvbmVudERp
ZFVwZGF0ZTtcblx0ICAgICAgICAgIHRoaXMuc2V0U3RhdGUoZHVtbXlTdGF0ZSk7XG5cdCAgICAg
ICAgfVxuXHQgICAgICB9O1xuXHRcblx0ICAgICAgQ29ubmVjdC5wcm90b3R5cGUubm90aWZ5TmVz
dGVkU3Vic09uQ29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gbm90aWZ5TmVzdGVkU3Vic09u
Q29tcG9uZW50RGlkVXBkYXRlKCkge1xuXHQgICAgICAgIC8vIGBjb21wb25lbnREaWRVcGRhdGVg
IGlzIGNvbmRpdGlvbmFsbHkgaW1wbGVtZW50ZWQgd2hlbiBgb25TdGF0ZUNoYW5nZWAgZGV0ZXJt
aW5lcyBpdFxuXHQgICAgICAgIC8vIG5lZWRzIHRvIG5vdGlmeSBuZXN0ZWQgc3Vicy4gT25jZSBj
YWxsZWQsIGl0IHVuaW1wbGVtZW50cyBpdHNlbGYgdW50aWwgZnVydGhlciBzdGF0ZVxuXHQgICAg
ICAgIC8vIGNoYW5nZXMgb2NjdXIuIERvaW5nIGl0IHRoaXMgd2F5IHZzIGhhdmluZyBhIHBlcm1h
bmVudCBgY29tcG9uZW50RGlkVXBkYXRlYCB0aGF0IGRvZXNcblx0ICAgICAgICAvLyBhIGJvb2xl
YW4gY2hlY2sgZXZlcnkgdGltZSBhdm9pZHMgYW4gZXh0cmEgbWV0aG9kIGNhbGwgbW9zdCBvZiB0
aGUgdGltZSwgcmVzdWx0aW5nXG5cdCAgICAgICAgLy8gaW4gc29tZSBwZXJmIGJvb3N0LlxuXHQg
ICAgICAgIHRoaXMuY29tcG9uZW50RGlkVXBkYXRlID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIHRo
aXMubm90aWZ5TmVzdGVkU3VicygpO1xuXHQgICAgICB9O1xuXHRcblx0ICAgICAgQ29ubmVjdC5w
cm90b3R5cGUuaXNTdWJzY3JpYmVkID0gZnVuY3Rpb24gaXNTdWJzY3JpYmVkKCkge1xuXHQgICAg
ICAgIHJldHVybiBCb29sZWFuKHRoaXMuc3Vic2NyaXB0aW9uKSAmJiB0aGlzLnN1YnNjcmlwdGlv
bi5pc1N1YnNjcmliZWQoKTtcblx0ICAgICAgfTtcblx0XG5cdCAgICAgIENvbm5lY3QucHJvdG90
eXBlLmFkZEV4dHJhUHJvcHMgPSBmdW5jdGlvbiBhZGRFeHRyYVByb3BzKHByb3BzKSB7XG5cdCAg
ICAgICAgaWYgKCF3aXRoUmVmICYmICFyZW5kZXJDb3VudFByb3AgJiYgISh0aGlzLnByb3BzTW9k
ZSAmJiB0aGlzLnN1YnNjcmlwdGlvbikpIHJldHVybiBwcm9wcztcblx0ICAgICAgICAvLyBtYWtl
IGEgc2hhbGxvdyBjb3B5IHNvIHRoYXQgZmllbGRzIGFkZGVkIGRvbid0IGxlYWsgdG8gdGhlIG9y
aWdpbmFsIHNlbGVjdG9yLlxuXHQgICAgICAgIC8vIHRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRh
bnQgZm9yICdyZWYnIHNpbmNlIHRoYXQncyBhIHJlZmVyZW5jZSBiYWNrIHRvIHRoZSBjb21wb25l
bnRcblx0ICAgICAgICAvLyBpbnN0YW5jZS4gYSBzaW5nbGV0b24gbWVtb2l6ZWQgc2VsZWN0b3Ig
d291bGQgdGhlbiBiZSBob2xkaW5nIGEgcmVmZXJlbmNlIHRvIHRoZVxuXHQgICAgICAgIC8vIGlu
c3RhbmNlLCBwcmV2ZW50aW5nIHRoZSBpbnN0YW5jZSBmcm9tIGJlaW5nIGdhcmJhZ2UgY29sbGVj
dGVkLCBhbmQgdGhhdCB3b3VsZCBiZSBiYWRcblx0ICAgICAgICB2YXIgd2l0aEV4dHJhcyA9IF9l
eHRlbmRzKHt9LCBwcm9wcyk7XG5cdCAgICAgICAgaWYgKHdpdGhSZWYpIHdpdGhFeHRyYXMucmVm
ID0gdGhpcy5zZXRXcmFwcGVkSW5zdGFuY2U7XG5cdCAgICAgICAgaWYgKHJlbmRlckNvdW50UHJv
cCkgd2l0aEV4dHJhc1tyZW5kZXJDb3VudFByb3BdID0gdGhpcy5yZW5kZXJDb3VudCsrO1xuXHQg
ICAgICAgIGlmICh0aGlzLnByb3BzTW9kZSAmJiB0aGlzLnN1YnNjcmlwdGlvbikgd2l0aEV4dHJh
c1tzdWJzY3JpcHRpb25LZXldID0gdGhpcy5zdWJzY3JpcHRpb247XG5cdCAgICAgICAgcmV0dXJu
IHdpdGhFeHRyYXM7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5y
ZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG5cdCAgICAgICAgdmFyIHNlbGVjdG9yID0gdGhp
cy5zZWxlY3Rvcjtcblx0ICAgICAgICBzZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBm
YWxzZTtcblx0XG5cdCAgICAgICAgaWYgKHNlbGVjdG9yLmVycm9yKSB7XG5cdCAgICAgICAgICB0
aHJvdyBzZWxlY3Rvci5lcnJvcjtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgcmV0
dXJuICgwLCBfcmVhY3QuY3JlYXRlRWxlbWVudCkoV3JhcHBlZENvbXBvbmVudCwgdGhpcy5hZGRF
eHRyYVByb3BzKHNlbGVjdG9yLnByb3BzKSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9O1xuXHRc
blx0ICAgICAgcmV0dXJuIENvbm5lY3Q7XG5cdCAgICB9KF9yZWFjdC5Db21wb25lbnQpO1xuXHRc
blx0ICAgIENvbm5lY3QuV3JhcHBlZENvbXBvbmVudCA9IFdyYXBwZWRDb21wb25lbnQ7XG5cdCAg
ICBDb25uZWN0LmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XG5cdCAgICBDb25uZWN0LmNoaWxk
Q29udGV4dFR5cGVzID0gY2hpbGRDb250ZXh0VHlwZXM7XG5cdCAgICBDb25uZWN0LmNvbnRleHRU
eXBlcyA9IGNvbnRleHRUeXBlcztcblx0ICAgIENvbm5lY3QucHJvcFR5cGVzID0gY29udGV4dFR5
cGVzO1xuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5j
b21wb25lbnRXaWxsVXBkYXRlID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVwZGF0ZSgpIHtcblx0
ICAgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblx0XG5cdCAgICAgICAgLy8gV2UgYXJlIGhvdCBy
ZWxvYWRpbmchXG5cdCAgICAgICAgaWYgKHRoaXMudmVyc2lvbiAhPT0gdmVyc2lvbikge1xuXHQg
ICAgICAgICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjtcblx0ICAgICAgICAgIHRoaXMuaW5pdFNl
bGVjdG9yKCk7XG5cdFxuXHQgICAgICAgICAgLy8gSWYgYW55IGNvbm5lY3RlZCBkZXNjZW5kYW50
cyBkb24ndCBob3QgcmVsb2FkIChhbmQgcmVzdWJzY3JpYmUgaW4gdGhlIHByb2Nlc3MpLCB0aGVp
clxuXHQgICAgICAgICAgLy8gbGlzdGVuZXJzIHdpbGwgYmUgbG9zdCB3aGVuIHdlIHVuc3Vic2Ny
aWJlLiBVbmZvcnR1bmF0ZWx5LCBieSBjb3B5aW5nIG92ZXIgYWxsXG5cdCAgICAgICAgICAvLyBs
aXN0ZW5lcnMsIHRoaXMgZG9lcyBtZWFuIHRoYXQgdGhlIG9sZCB2ZXJzaW9ucyBvZiBjb25uZWN0
ZWQgZGVzY2VuZGFudHMgd2lsbCBzdGlsbCBiZVxuXHQgICAgICAgICAgLy8gbm90aWZpZWQgb2Yg
c3RhdGUgY2hhbmdlczsgaG93ZXZlciwgdGhlaXIgb25TdGF0ZUNoYW5nZSBmdW5jdGlvbiBpcyBh
IG5vLW9wIHNvIHRoaXNcblx0ICAgICAgICAgIC8vIGlzbid0IGEgaHVnZSBkZWFsLlxuXHQgICAg
ICAgICAgdmFyIG9sZExpc3RlbmVycyA9IFtdO1xuXHRcblx0ICAgICAgICAgIGlmICh0aGlzLnN1
YnNjcmlwdGlvbikge1xuXHQgICAgICAgICAgICBvbGRMaXN0ZW5lcnMgPSB0aGlzLnN1YnNjcmlw
dGlvbi5saXN0ZW5lcnMuZ2V0KCk7XG5cdCAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnRy
eVVuc3Vic2NyaWJlKCk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICB0aGlzLmluaXRTdWJz
Y3JpcHRpb24oKTtcblx0ICAgICAgICAgIGlmIChzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMpIHtc
blx0ICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udHJ5U3Vic2NyaWJlKCk7XG5cdCAgICAg
ICAgICAgIG9sZExpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uIChsaXN0ZW5lcikge1xuXHQgICAg
ICAgICAgICAgIHJldHVybiBfdGhpczIuc3Vic2NyaXB0aW9uLmxpc3RlbmVycy5zdWJzY3JpYmUo
bGlzdGVuZXIpO1xuXHQgICAgICAgICAgICB9KTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9
XG5cdCAgICAgIH07XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuICgwLCBfaG9pc3ROb25SZWFj
dFN0YXRpY3MyLmRlZmF1bHQpKENvbm5lY3QsIFdyYXBwZWRDb21wb25lbnQpO1xuXHQgIH07XG5c
dH1cblxuLyoqKi8gfSxcbi8qIDgwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRz
Ll9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLndyYXBNYXBUb1Byb3BzQ29uc3RhbnQgPSB3
cmFwTWFwVG9Qcm9wc0NvbnN0YW50O1xuXHRleHBvcnRzLmdldERlcGVuZHNPbk93blByb3BzID0g
Z2V0RGVwZW5kc09uT3duUHJvcHM7XG5cdGV4cG9ydHMud3JhcE1hcFRvUHJvcHNGdW5jID0gd3Jh
cE1hcFRvUHJvcHNGdW5jO1xuXHRcblx0dmFyIF92ZXJpZnlQbGFpbk9iamVjdCA9IF9fd2VicGFj
a19yZXF1aXJlX18oODMpO1xuXHRcblx0dmFyIF92ZXJpZnlQbGFpbk9iamVjdDIgPSBfaW50ZXJv
cFJlcXVpcmVEZWZhdWx0KF92ZXJpZnlQbGFpbk9iamVjdCk7XG5cdFxuXHRmdW5jdGlvbiBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8g
b2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0ZnVuY3Rpb24gd3JhcE1hcFRvUHJvcHND
b25zdGFudChnZXRDb25zdGFudCkge1xuXHQgIHJldHVybiBmdW5jdGlvbiBpbml0Q29uc3RhbnRT
ZWxlY3RvcihkaXNwYXRjaCwgb3B0aW9ucykge1xuXHQgICAgdmFyIGNvbnN0YW50ID0gZ2V0Q29u
c3RhbnQoZGlzcGF0Y2gsIG9wdGlvbnMpO1xuXHRcblx0ICAgIGZ1bmN0aW9uIGNvbnN0YW50U2Vs
ZWN0b3IoKSB7XG5cdCAgICAgIHJldHVybiBjb25zdGFudDtcblx0ICAgIH1cblx0ICAgIGNvbnN0
YW50U2VsZWN0b3IuZGVwZW5kc09uT3duUHJvcHMgPSBmYWxzZTtcblx0ICAgIHJldHVybiBjb25z
dGFudFNlbGVjdG9yO1xuXHQgIH07XG5cdH1cblx0XG5cdC8vIGRlcGVuZHNPbk93blByb3BzIGlz
IHVzZWQgYnkgY3JlYXRlTWFwVG9Qcm9wc1Byb3h5IHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHBh
c3MgcHJvcHMgYXMgYXJnc1xuXHQvLyB0byB0aGUgbWFwVG9Qcm9wcyBmdW5jdGlvbiBiZWluZyB3
cmFwcGVkLiBJdCBpcyBhbHNvIHVzZWQgYnkgbWFrZVB1cmVQcm9wc1NlbGVjdG9yIHRvIGRldGVy
bWluZVxuXHQvLyB3aGV0aGVyIG1hcFRvUHJvcHMgbmVlZHMgdG8gYmUgaW52b2tlZCB3aGVuIHBy
b3BzIGhhdmUgY2hhbmdlZC5cblx0Ly8gXG5cdC8vIEEgbGVuZ3RoIG9mIG9uZSBzaWduYWxzIHRo
YXQgbWFwVG9Qcm9wcyBkb2VzIG5vdCBkZXBlbmQgb24gcHJvcHMgZnJvbSB0aGUgcGFyZW50IGNv
bXBvbmVudC5cblx0Ly8gQSBsZW5ndGggb2YgemVybyBpcyBhc3N1bWVkIHRvIG1lYW4gbWFwVG9Q
cm9wcyBpcyBnZXR0aW5nIGFyZ3MgdmlhIGFyZ3VtZW50cyBvciAuLi5hcmdzIGFuZFxuXHQvLyB0
aGVyZWZvcmUgbm90IHJlcG9ydGluZyBpdHMgbGVuZ3RoIGFjY3VyYXRlbHkuLlxuXHRmdW5jdGlv
biBnZXREZXBlbmRzT25Pd25Qcm9wcyhtYXBUb1Byb3BzKSB7XG5cdCAgcmV0dXJuIG1hcFRvUHJv
cHMuZGVwZW5kc09uT3duUHJvcHMgIT09IG51bGwgJiYgbWFwVG9Qcm9wcy5kZXBlbmRzT25Pd25Q
cm9wcyAhPT0gdW5kZWZpbmVkID8gQm9vbGVhbihtYXBUb1Byb3BzLmRlcGVuZHNPbk93blByb3Bz
KSA6IG1hcFRvUHJvcHMubGVuZ3RoICE9PSAxO1xuXHR9XG5cdFxuXHQvLyBVc2VkIGJ5IHdoZW5N
YXBTdGF0ZVRvUHJvcHNJc0Z1bmN0aW9uIGFuZCB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5j
dGlvbixcblx0Ly8gdGhpcyBmdW5jdGlvbiB3cmFwcyBtYXBUb1Byb3BzIGluIGEgcHJveHkgZnVu
Y3Rpb24gd2hpY2ggZG9lcyBzZXZlcmFsIHRoaW5nczpcblx0Ly8gXG5cdC8vICAqIERldGVjdHMg
d2hldGhlciB0aGUgbWFwVG9Qcm9wcyBmdW5jdGlvbiBiZWluZyBjYWxsZWQgZGVwZW5kcyBvbiBw
cm9wcywgd2hpY2hcblx0Ly8gICAgaXMgdXNlZCBieSBzZWxlY3RvckZhY3RvcnkgdG8gZGVjaWRl
IGlmIGl0IHNob3VsZCByZWludm9rZSBvbiBwcm9wcyBjaGFuZ2VzLlxuXHQvLyAgICBcblx0Ly8g
ICogT24gZmlyc3QgY2FsbCwgaGFuZGxlcyBtYXBUb1Byb3BzIGlmIHJldHVybnMgYW5vdGhlciBm
dW5jdGlvbiwgYW5kIHRyZWF0cyB0aGF0XG5cdC8vICAgIG5ldyBmdW5jdGlvbiBhcyB0aGUgdHJ1
ZSBtYXBUb1Byb3BzIGZvciBzdWJzZXF1ZW50IGNhbGxzLlxuXHQvLyAgICBcblx0Ly8gICogT24g
Zmlyc3QgY2FsbCwgdmVyaWZpZXMgdGhlIGZpcnN0IHJlc3VsdCBpcyBhIHBsYWluIG9iamVjdCwg
aW4gb3JkZXIgdG8gd2FyblxuXHQvLyAgICB0aGUgZGV2ZWxvcGVyIHRoYXQgdGhlaXIgbWFwVG9Q
cm9wcyBmdW5jdGlvbiBpcyBub3QgcmV0dXJuaW5nIGEgdmFsaWQgcmVzdWx0LlxuXHQvLyAgICBc
blx0ZnVuY3Rpb24gd3JhcE1hcFRvUHJvcHNGdW5jKG1hcFRvUHJvcHMsIG1ldGhvZE5hbWUpIHtc
blx0ICByZXR1cm4gZnVuY3Rpb24gaW5pdFByb3h5U2VsZWN0b3IoZGlzcGF0Y2gsIF9yZWYpIHtc
blx0ICAgIHZhciBkaXNwbGF5TmFtZSA9IF9yZWYuZGlzcGxheU5hbWU7XG5cdFxuXHQgICAgdmFy
IHByb3h5ID0gZnVuY3Rpb24gbWFwVG9Qcm9wc1Byb3h5KHN0YXRlT3JEaXNwYXRjaCwgb3duUHJv
cHMpIHtcblx0ICAgICAgcmV0dXJuIHByb3h5LmRlcGVuZHNPbk93blByb3BzID8gcHJveHkubWFw
VG9Qcm9wcyhzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKSA6IHByb3h5Lm1hcFRvUHJvcHMoc3Rh
dGVPckRpc3BhdGNoKTtcblx0ICAgIH07XG5cdFxuXHQgICAgLy8gYWxsb3cgZGV0ZWN0RmFjdG9y
eUFuZFZlcmlmeSB0byBnZXQgb3duUHJvcHNcblx0ICAgIHByb3h5LmRlcGVuZHNPbk93blByb3Bz
ID0gdHJ1ZTtcblx0XG5cdCAgICBwcm94eS5tYXBUb1Byb3BzID0gZnVuY3Rpb24gZGV0ZWN0RmFj
dG9yeUFuZFZlcmlmeShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKSB7XG5cdCAgICAgIHByb3h5
Lm1hcFRvUHJvcHMgPSBtYXBUb1Byb3BzO1xuXHQgICAgICBwcm94eS5kZXBlbmRzT25Pd25Qcm9w
cyA9IGdldERlcGVuZHNPbk93blByb3BzKG1hcFRvUHJvcHMpO1xuXHQgICAgICB2YXIgcHJvcHMg
PSBwcm94eShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKTtcblx0XG5cdCAgICAgIGlmICh0eXBl
b2YgcHJvcHMgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICBwcm94eS5tYXBUb1Byb3BzID0g
cHJvcHM7XG5cdCAgICAgICAgcHJveHkuZGVwZW5kc09uT3duUHJvcHMgPSBnZXREZXBlbmRzT25P
d25Qcm9wcyhwcm9wcyk7XG5cdCAgICAgICAgcHJvcHMgPSBwcm94eShzdGF0ZU9yRGlzcGF0Y2gs
IG93blByb3BzKTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgaWYgKGZhbHNlKSAoMCwgX3Zlcmlm
eVBsYWluT2JqZWN0Mi5kZWZhdWx0KShwcm9wcywgZGlzcGxheU5hbWUsIG1ldGhvZE5hbWUpO1xu
XHRcblx0ICAgICAgcmV0dXJuIHByb3BzO1xuXHQgICAgfTtcblx0XG5cdCAgICByZXR1cm4gcHJv
eHk7XG5cdCAgfTtcblx0fVxuXG4vKioqLyB9LFxuLyogODEgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMuY29ubmVjdCA9IGV4
cG9ydHMuY29ubmVjdEFkdmFuY2VkID0gZXhwb3J0cy5jcmVhdGVQcm92aWRlciA9IGV4cG9ydHMu
UHJvdmlkZXIgPSB1bmRlZmluZWQ7XG5cdFxuXHR2YXIgX1Byb3ZpZGVyID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxODcpO1xuXHRcblx0dmFyIF9Qcm92aWRlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KF9Qcm92aWRlcik7XG5cdFxuXHR2YXIgX2Nvbm5lY3RBZHZhbmNlZCA9IF9fd2VicGFja19y
ZXF1aXJlX18oNzkpO1xuXHRcblx0dmFyIF9jb25uZWN0QWR2YW5jZWQyID0gX2ludGVyb3BSZXF1
aXJlRGVmYXVsdChfY29ubmVjdEFkdmFuY2VkKTtcblx0XG5cdHZhciBfY29ubmVjdCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTg4KTtcblx0XG5cdHZhciBfY29ubmVjdDIgPSBfaW50ZXJvcFJlcXVp
cmVEZWZhdWx0KF9jb25uZWN0KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6
IG9iaiB9OyB9XG5cdFxuXHRleHBvcnRzLlByb3ZpZGVyID0gX1Byb3ZpZGVyMi5kZWZhdWx0O1xu
XHRleHBvcnRzLmNyZWF0ZVByb3ZpZGVyID0gX1Byb3ZpZGVyLmNyZWF0ZVByb3ZpZGVyO1xuXHRl
eHBvcnRzLmNvbm5lY3RBZHZhbmNlZCA9IF9jb25uZWN0QWR2YW5jZWQyLmRlZmF1bHQ7XG5cdGV4
cG9ydHMuY29ubmVjdCA9IF9jb25uZWN0Mi5kZWZhdWx0O1xuXG4vKioqLyB9LFxuLyogODIgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4
cG9ydHMuc3RvcmVTaGFwZSA9IGV4cG9ydHMuc3Vic2NyaXB0aW9uU2hhcGUgPSB1bmRlZmluZWQ7
XG5cdFxuXHR2YXIgX3Byb3BUeXBlcyA9IF9fd2VicGFja19yZXF1aXJlX18oNTYpO1xuXHRcblx0
dmFyIF9wcm9wVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcHJvcFR5cGVzKTtcblx0
XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYg
b2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHR2YXIgc3Vi
c2NyaXB0aW9uU2hhcGUgPSBleHBvcnRzLnN1YnNjcmlwdGlvblNoYXBlID0gX3Byb3BUeXBlczIu
ZGVmYXVsdC5zaGFwZSh7XG5cdCAgdHJ5U3Vic2NyaWJlOiBfcHJvcFR5cGVzMi5kZWZhdWx0LmZ1
bmMuaXNSZXF1aXJlZCxcblx0ICB0cnlVbnN1YnNjcmliZTogX3Byb3BUeXBlczIuZGVmYXVsdC5m
dW5jLmlzUmVxdWlyZWQsXG5cdCAgbm90aWZ5TmVzdGVkU3ViczogX3Byb3BUeXBlczIuZGVmYXVs
dC5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgaXNTdWJzY3JpYmVkOiBfcHJvcFR5cGVzMi5kZWZhdWx0
LmZ1bmMuaXNSZXF1aXJlZFxuXHR9KTtcblx0XG5cdHZhciBzdG9yZVNoYXBlID0gZXhwb3J0cy5z
dG9yZVNoYXBlID0gX3Byb3BUeXBlczIuZGVmYXVsdC5zaGFwZSh7XG5cdCAgc3Vic2NyaWJlOiBf
cHJvcFR5cGVzMi5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCxcblx0ICBkaXNwYXRjaDogX3Byb3BU
eXBlczIuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgZ2V0U3RhdGU6IF9wcm9wVHlwZXMy
LmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkXG5cdH0pO1xuXG4vKioqLyB9LFxuLyogODMgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9y
dHMuZGVmYXVsdCA9IHZlcmlmeVBsYWluT2JqZWN0O1xuXHRcblx0dmFyIF9pc1BsYWluT2JqZWN0
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMyk7XG5cdFxuXHR2YXIgX2lzUGxhaW5PYmplY3QyID0g
X2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNQbGFpbk9iamVjdCk7XG5cdFxuXHR2YXIgX3dhcm5p
bmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUwKTtcblx0XG5cdHZhciBfd2FybmluZzIgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVx
dWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7
IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiB2ZXJpZnlQbGFpbk9iamVjdCh2YWx1
ZSwgZGlzcGxheU5hbWUsIG1ldGhvZE5hbWUpIHtcblx0ICBpZiAoISgwLCBfaXNQbGFpbk9iamVj
dDIuZGVmYXVsdCkodmFsdWUpKSB7XG5cdCAgICAoMCwgX3dhcm5pbmcyLmRlZmF1bHQpKG1ldGhv
ZE5hbWUgKyAnKCkgaW4gJyArIGRpc3BsYXlOYW1lICsgJyBtdXN0IHJldHVybiBhIHBsYWluIG9i
amVjdC4gSW5zdGVhZCByZWNlaXZlZCAnICsgdmFsdWUgKyAnLicpO1xuXHQgIH1cblx0fVxuXG4v
KioqLyB9LFxuLyogODQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0p
O1xuXHRcblx0dmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5l
UHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVu
Z3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJh
YmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3Vy
YWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0
YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5
LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJv
cHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0
cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJv
cGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07
IH0oKTtcblx0XG5cdHZhciBfcmVhY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcblx0XG5c
dHZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXHRcblx0dmFy
IF9jbGFzc25hbWVzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSk7XG5cdFxuXHR2YXIgX2NsYXNz
bmFtZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NuYW1lcyk7XG5cdFxuXHRmdW5j
dGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2Vz
TW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0ZnVuY3Rpb24gX2NsYXNz
Q2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5j
ZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBj
bGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblx0XG5cdGZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0
cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVu
Y2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBi
ZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0
XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXHRc
blx0ZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Yg
c3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhy
b3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBv
ciBhIGZ1bmN0aW9uLCBub3QgXCIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBl
LCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdy
aXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9i
amVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3Vw
ZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cdFxuXHR2YXIg
VG9kb1RleHRJbnB1dCA9IGZ1bmN0aW9uIChfQ29tcG9uZW50KSB7XG5cdCAgX2luaGVyaXRzKFRv
ZG9UZXh0SW5wdXQsIF9Db21wb25lbnQpO1xuXHRcblx0ICBmdW5jdGlvbiBUb2RvVGV4dElucHV0
KCkge1xuXHQgICAgdmFyIF9yZWY7XG5cdFxuXHQgICAgdmFyIF90ZW1wLCBfdGhpcywgX3JldDtc
blx0XG5cdCAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVG9kb1RleHRJbnB1dCk7XG5cdFxuXHQg
ICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuKSwg
X2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcblx0ICAgICAgYXJnc1tfa2V5XSA9IGFy
Z3VtZW50c1tfa2V5XTtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gX3JldCA9IChfdGVtcCA9
IChfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChfcmVmID0gVG9kb1Rl
eHRJbnB1dC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKFRvZG9UZXh0SW5wdXQp
KS5jYWxsLmFwcGx5KF9yZWYsIFt0aGlzXS5jb25jYXQoYXJncykpKSwgX3RoaXMpLCBfdGhpcy5z
dGF0ZSA9IHtcblx0ICAgICAgdGV4dDogX3RoaXMucHJvcHMudGV4dCB8fCAnJ1xuXHQgICAgfSwg
X3RoaXMuaGFuZGxlU3VibWl0ID0gZnVuY3Rpb24gKGUpIHtcblx0ICAgICAgdmFyIHRleHQgPSBl
LnRhcmdldC52YWx1ZS50cmltKCk7XG5cdCAgICAgIGlmIChlLndoaWNoID09PSAxMykge1xuXHQg
ICAgICAgIF90aGlzLnByb3BzLm9uU2F2ZSh0ZXh0KTtcblx0ICAgICAgICBpZiAoX3RoaXMucHJv
cHMubmV3VG9kbykge1xuXHQgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyB0ZXh0OiAnJyB9KTtc
blx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH0sIF90aGlzLmhhbmRsZUNoYW5nZSA9IGZ1
bmN0aW9uIChlKSB7XG5cdCAgICAgIF90aGlzLnNldFN0YXRlKHsgdGV4dDogZS50YXJnZXQudmFs
dWUgfSk7XG5cdCAgICB9LCBfdGhpcy5oYW5kbGVCbHVyID0gZnVuY3Rpb24gKGUpIHtcblx0ICAg
ICAgaWYgKCFfdGhpcy5wcm9wcy5uZXdUb2RvKSB7XG5cdCAgICAgICAgX3RoaXMucHJvcHMub25T
YXZlKGUudGFyZ2V0LnZhbHVlKTtcblx0ICAgICAgfVxuXHQgICAgfSwgX3RlbXApLCBfcG9zc2li
bGVDb25zdHJ1Y3RvclJldHVybihfdGhpcywgX3JldCk7XG5cdCAgfVxuXHRcblx0ICBfY3JlYXRl
Q2xhc3MoVG9kb1RleHRJbnB1dCwgW3tcblx0ICAgIGtleTogJ3JlbmRlcicsXG5cdCAgICB2YWx1
ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuXHQgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNy
ZWF0ZUVsZW1lbnQoJ2lucHV0JywgeyBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lczIuZGVmYXVs
dCkoe1xuXHQgICAgICAgICAgZWRpdDogdGhpcy5wcm9wcy5lZGl0aW5nLFxuXHQgICAgICAgICAg
J25ldy10b2RvJzogdGhpcy5wcm9wcy5uZXdUb2RvXG5cdCAgICAgICAgfSksXG5cdCAgICAgICAg
dHlwZTogJ3RleHQnLFxuXHQgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnByb3BzLnBsYWNlaG9s
ZGVyLFxuXHQgICAgICAgIGF1dG9Gb2N1czogJ3RydWUnLFxuXHQgICAgICAgIHZhbHVlOiB0aGlz
LnN0YXRlLnRleHQsXG5cdCAgICAgICAgb25CbHVyOiB0aGlzLmhhbmRsZUJsdXIsXG5cdCAgICAg
ICAgb25DaGFuZ2U6IHRoaXMuaGFuZGxlQ2hhbmdlLFxuXHQgICAgICAgIG9uS2V5RG93bjogdGhp
cy5oYW5kbGVTdWJtaXQgfSk7XG5cdCAgICB9XG5cdCAgfV0pO1xuXHRcblx0ICByZXR1cm4gVG9k
b1RleHRJbnB1dDtcblx0fShfcmVhY3QuQ29tcG9uZW50KTtcblx0XG5cdFRvZG9UZXh0SW5wdXQu
cHJvcFR5cGVzID0ge1xuXHQgIG9uU2F2ZTogX3JlYWN0LlByb3BUeXBlcy5mdW5jLmlzUmVxdWly
ZWQsXG5cdCAgdGV4dDogX3JlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG5cdCAgcGxhY2Vob2xkZXI6
IF9yZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuXHQgIGVkaXRpbmc6IF9yZWFjdC5Qcm9wVHlwZXMu
Ym9vbCxcblx0ICBuZXdUb2RvOiBfcmVhY3QuUHJvcFR5cGVzLmJvb2xcblx0fTtcblx0ZXhwb3J0
cy5kZWZhdWx0ID0gVG9kb1RleHRJbnB1dDtcblxuLyoqKi8gfSxcbi8qIDg1ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTog
dHJ1ZVxuXHR9KTtcblx0dmFyIEFERF9UT0RPID0gZXhwb3J0cy5BRERfVE9ETyA9ICdBRERfVE9E
Tyc7XG5cdHZhciBERUxFVEVfVE9ETyA9IGV4cG9ydHMuREVMRVRFX1RPRE8gPSAnREVMRVRFX1RP
RE8nO1xuXHR2YXIgRURJVF9UT0RPID0gZXhwb3J0cy5FRElUX1RPRE8gPSAnRURJVF9UT0RPJztc
blx0dmFyIENPTVBMRVRFX1RPRE8gPSBleHBvcnRzLkNPTVBMRVRFX1RPRE8gPSAnQ09NUExFVEVf
VE9ETyc7XG5cdHZhciBDT01QTEVURV9BTEwgPSBleHBvcnRzLkNPTVBMRVRFX0FMTCA9ICdDT01Q
TEVURV9BTEwnO1xuXHR2YXIgQ0xFQVJfQ09NUExFVEVEID0gZXhwb3J0cy5DTEVBUl9DT01QTEVU
RUQgPSAnQ0xFQVJfQ09NUExFVEVEJztcblxuLyoqKi8gfSxcbi8qIDg2ICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1
ZVxuXHR9KTtcblx0dmFyIFNIT1dfQUxMID0gZXhwb3J0cy5TSE9XX0FMTCA9ICdzaG93X2FsbCc7
XG5cdHZhciBTSE9XX0NPTVBMRVRFRCA9IGV4cG9ydHMuU0hPV19DT01QTEVURUQgPSAnc2hvd19j
b21wbGV0ZWQnO1xuXHR2YXIgU0hPV19BQ1RJVkUgPSBleHBvcnRzLlNIT1dfQUNUSVZFID0gJ3No
b3dfYWN0aXZlJztcblxuLyoqKi8gfSxcbi8qIDg3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMpIHtcblxuXHQvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcblx0
dmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXHRcblx0Ly8gY2FjaGVkIGZyb20g
d2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHVi
IGl0XG5cdC8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4g
YSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuXHQvLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNv
ZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG5cdC8v
IGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2lu
ZXMuXG5cdFxuXHR2YXIgY2FjaGVkU2V0VGltZW91dDtcblx0dmFyIGNhY2hlZENsZWFyVGltZW91
dDtcblx0XG5cdGZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG5cdCAgICB0aHJvdyBuZXcg
RXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcblx0fVxuXHRmdW5jdGlv
biBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcblx0ICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJU
aW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG5cdH1cblx0KGZ1bmN0aW9uICgpIHtcblx0
ICAgIHRyeSB7XG5cdCAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24n
KSB7XG5cdCAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuXHQgICAg
ICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0
VGltb3V0O1xuXHQgICAgICAgIH1cblx0ICAgIH0gY2F0Y2ggKGUpIHtcblx0ICAgICAgICBjYWNo
ZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcblx0ICAgIH1cblx0ICAgIHRyeSB7XG5c
dCAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcblx0ICAg
ICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuXHQgICAgICAgIH0g
ZWxzZSB7XG5cdCAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRp
bWVvdXQ7XG5cdCAgICAgICAgfVxuXHQgICAgfSBjYXRjaCAoZSkge1xuXHQgICAgICAgIGNhY2hl
ZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG5cdCAgICB9XG5cdH0gKCkpXG5c
dGZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG5cdCAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9
PT0gc2V0VGltZW91dCkge1xuXHQgICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUg
c2l0dWF0aW9uc1xuXHQgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG5cdCAgICB9
XG5cdCAgICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIg
ZGVmaW5lZFxuXHQgICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0
IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG5cdCAgICAgICAgY2FjaGVk
U2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG5cdCAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVu
LCAwKTtcblx0ICAgIH1cblx0ICAgIHRyeSB7XG5cdCAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVi
b2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuXHQg
ICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG5cdCAgICB9IGNhdGNoKGUp
e1xuXHQgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4g
YnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUg
Z2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuXHQgICAgICAgICAgICByZXR1cm4g
Y2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG5cdCAgICAgICAgfSBjYXRjaChl
KXtcblx0ICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lv
biBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhv
cGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9i
YWwgZXJyb3Jcblx0ICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlz
LCBmdW4sIDApO1xuXHQgICAgICAgIH1cblx0ICAgIH1cblx0XG5cdFxuXHR9XG5cdGZ1bmN0aW9u
IHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcblx0ICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQg
PT09IGNsZWFyVGltZW91dCkge1xuXHQgICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNh
bmUgc2l0dWF0aW9uc1xuXHQgICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcblx0
ICAgIH1cblx0ICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMg
bGF0dGVyIGRlZmluZWRcblx0ICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0
Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xu
XHQgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcblx0ICAgICAgICBy
ZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG5cdCAgICB9XG5cdCAgICB0cnkge1xuXHQgICAg
ICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0
IG5vIEkuRS4gbWFkZG5lc3Ncblx0ICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1h
cmtlcik7XG5cdCAgICB9IGNhdGNoIChlKXtcblx0ICAgICAgICB0cnkge1xuXHQgICAgICAgICAg
ICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBz
byBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1h
bGx5XG5cdCAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBt
YXJrZXIpO1xuXHQgICAgICAgIH0gY2F0Y2ggKGUpe1xuXHQgICAgICAgICAgICAvLyBzYW1lIGFz
IGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhl
IGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBv
dGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cblx0ICAgICAgICAgICAgLy8g
U29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVv
dXQgdnMgc2V0VGltZW91dFxuXHQgICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0
LmNhbGwodGhpcywgbWFya2VyKTtcblx0ICAgICAgICB9XG5cdCAgICB9XG5cdFxuXHRcblx0XG5c
dH1cblx0dmFyIHF1ZXVlID0gW107XG5cdHZhciBkcmFpbmluZyA9IGZhbHNlO1xuXHR2YXIgY3Vy
cmVudFF1ZXVlO1xuXHR2YXIgcXVldWVJbmRleCA9IC0xO1xuXHRcblx0ZnVuY3Rpb24gY2xlYW5V
cE5leHRUaWNrKCkge1xuXHQgICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG5c
dCAgICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgZHJhaW5pbmcgPSBmYWxzZTtcblx0ICAg
IGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG5cdCAgICAgICAgcXVldWUgPSBjdXJyZW50UXVl
dWUuY29uY2F0KHF1ZXVlKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgICAgcXVldWVJbmRleCA9
IC0xO1xuXHQgICAgfVxuXHQgICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuXHQgICAgICAgIGRyYWlu
UXVldWUoKTtcblx0ICAgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcblx0
ICAgIGlmIChkcmFpbmluZykge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZh
ciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuXHQgICAgZHJhaW5pbmcg
PSB0cnVlO1xuXHRcblx0ICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG5cdCAgICB3aGlsZShs
ZW4pIHtcblx0ICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcblx0ICAgICAgICBxdWV1ZSA9
IFtdO1xuXHQgICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcblx0ICAgICAgICAg
ICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuXHQgICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1
ZXVlSW5kZXhdLnJ1bigpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAg
IHF1ZXVlSW5kZXggPSAtMTtcblx0ICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG5cdCAgICB9
XG5cdCAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuXHQgICAgZHJhaW5pbmcgPSBmYWxzZTtcblx0
ICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcblx0fVxuXHRcblx0cHJvY2Vzcy5uZXh0VGlj
ayA9IGZ1bmN0aW9uIChmdW4pIHtcblx0ICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50
cy5sZW5ndGggLSAxKTtcblx0ICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuXHQgICAg
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAg
ICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuXHQgICAgICAgIH1cblx0ICAgIH1c
blx0ICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG5cdCAgICBpZiAocXVldWUu
bGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuXHQgICAgICAgIHJ1blRpbWVvdXQoZHJhaW5R
dWV1ZSk7XG5cdCAgICB9XG5cdH07XG5cdFxuXHQvLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmpl
Y3RzXG5cdGZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuXHQgICAgdGhpcy5mdW4gPSBmdW47
XG5cdCAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG5cdH1cblx0SXRlbS5wcm90b3R5cGUucnVuID0g
ZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG5c
dH07XG5cdHByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5cdHByb2Nlc3MuYnJvd3NlciA9IHRy
dWU7XG5cdHByb2Nlc3MuZW52ID0ge307XG5cdHByb2Nlc3MuYXJndiA9IFtdO1xuXHRwcm9jZXNz
LnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcblx0
cHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXHRcblx0ZnVuY3Rpb24gbm9vcCgpIHt9XG5cdFxuXHRw
cm9jZXNzLm9uID0gbm9vcDtcblx0cHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5cdHByb2Nl
c3Mub25jZSA9IG5vb3A7XG5cdHByb2Nlc3Mub2ZmID0gbm9vcDtcblx0cHJvY2Vzcy5yZW1vdmVM
aXN0ZW5lciA9IG5vb3A7XG5cdHByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcblx0
cHJvY2Vzcy5lbWl0ID0gbm9vcDtcblx0XG5cdHByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChu
YW1lKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3Vw
cG9ydGVkJyk7XG5cdH07XG5cdFxuXHRwcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJu
ICcvJyB9O1xuXHRwcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuXHQgICAgdGhyb3cg
bmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcblx0fTtcblx0cHJv
Y2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcblxuXG4vKioqLyB9LFxuLyog
ODggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBhc2FwID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxOTcpO1xuXHRcblx0ZnVuY3Rpb24gbm9vcCgpIHt9XG5cdFxuXHQvLyBTdGF0ZXM6XG5c
dC8vXG5cdC8vIDAgLSBwZW5kaW5nXG5cdC8vIDEgLSBmdWxmaWxsZWQgd2l0aCBfdmFsdWVcblx0
Ly8gMiAtIHJlamVjdGVkIHdpdGggX3ZhbHVlXG5cdC8vIDMgLSBhZG9wdGVkIHRoZSBzdGF0ZSBv
ZiBhbm90aGVyIHByb21pc2UsIF92YWx1ZVxuXHQvL1xuXHQvLyBvbmNlIHRoZSBzdGF0ZSBpcyBu
byBsb25nZXIgcGVuZGluZyAoMCkgaXQgaXMgaW1tdXRhYmxlXG5cdFxuXHQvLyBBbGwgYF9gIHBy
ZWZpeGVkIHByb3BlcnRpZXMgd2lsbCBiZSByZWR1Y2VkIHRvIGBfe3JhbmRvbSBudW1iZXJ9YFxu
XHQvLyBhdCBidWlsZCB0aW1lIHRvIG9iZnVzY2F0ZSB0aGVtIGFuZCBkaXNjb3VyYWdlIHRoZWly
IHVzZS5cblx0Ly8gV2UgZG9uJ3QgdXNlIHN5bWJvbHMgb3IgT2JqZWN0LmRlZmluZVByb3BlcnR5
IHRvIGZ1bGx5IGhpZGUgdGhlbVxuXHQvLyBiZWNhdXNlIHRoZSBwZXJmb3JtYW5jZSBpc24ndCBn
b29kIGVub3VnaC5cblx0XG5cdFxuXHQvLyB0byBhdm9pZCB1c2luZyB0cnkvY2F0Y2ggaW5zaWRl
IGNyaXRpY2FsIGZ1bmN0aW9ucywgd2Vcblx0Ly8gZXh0cmFjdCB0aGVtIHRvIGhlcmUuXG5cdHZh
ciBMQVNUX0VSUk9SID0gbnVsbDtcblx0dmFyIElTX0VSUk9SID0ge307XG5cdGZ1bmN0aW9uIGdl
dFRoZW4ob2JqKSB7XG5cdCAgdHJ5IHtcblx0ICAgIHJldHVybiBvYmoudGhlbjtcblx0ICB9IGNh
dGNoIChleCkge1xuXHQgICAgTEFTVF9FUlJPUiA9IGV4O1xuXHQgICAgcmV0dXJuIElTX0VSUk9S
O1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gdHJ5Q2FsbE9uZShmbiwgYSkge1xuXHQgIHRy
eSB7XG5cdCAgICByZXR1cm4gZm4oYSk7XG5cdCAgfSBjYXRjaCAoZXgpIHtcblx0ICAgIExBU1Rf
RVJST1IgPSBleDtcblx0ICAgIHJldHVybiBJU19FUlJPUjtcblx0ICB9XG5cdH1cblx0ZnVuY3Rp
b24gdHJ5Q2FsbFR3byhmbiwgYSwgYikge1xuXHQgIHRyeSB7XG5cdCAgICBmbihhLCBiKTtcblx0
ICB9IGNhdGNoIChleCkge1xuXHQgICAgTEFTVF9FUlJPUiA9IGV4O1xuXHQgICAgcmV0dXJuIElT
X0VSUk9SO1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBQcm9taXNlO1xuXHRc
blx0ZnVuY3Rpb24gUHJvbWlzZShmbikge1xuXHQgIGlmICh0eXBlb2YgdGhpcyAhPT0gJ29iamVj
dCcpIHtcblx0ICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2VzIG11c3QgYmUgY29uc3Ry
dWN0ZWQgdmlhIG5ldycpO1xuXHQgIH1cblx0ICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24n
KSB7XG5cdCAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBmdW5jdGlvbicpO1xuXHQgIH1c
blx0ICB0aGlzLl80NSA9IDA7XG5cdCAgdGhpcy5fODEgPSAwO1xuXHQgIHRoaXMuXzY1ID0gbnVs
bDtcblx0ICB0aGlzLl81NCA9IG51bGw7XG5cdCAgaWYgKGZuID09PSBub29wKSByZXR1cm47XG5c
dCAgZG9SZXNvbHZlKGZuLCB0aGlzKTtcblx0fVxuXHRQcm9taXNlLl8xMCA9IG51bGw7XG5cdFBy
b21pc2UuXzk3ID0gbnVsbDtcblx0UHJvbWlzZS5fNjEgPSBub29wO1xuXHRcblx0UHJvbWlzZS5w
cm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG5cdCAg
aWYgKHRoaXMuY29uc3RydWN0b3IgIT09IFByb21pc2UpIHtcblx0ICAgIHJldHVybiBzYWZlVGhl
bih0aGlzLCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG5cdCAgfVxuXHQgIHZhciByZXMgPSBu
ZXcgUHJvbWlzZShub29wKTtcblx0ICBoYW5kbGUodGhpcywgbmV3IEhhbmRsZXIob25GdWxmaWxs
ZWQsIG9uUmVqZWN0ZWQsIHJlcykpO1xuXHQgIHJldHVybiByZXM7XG5cdH07XG5cdFxuXHRmdW5j
dGlvbiBzYWZlVGhlbihzZWxmLCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuXHQgIHJldHVy
biBuZXcgc2VsZi5jb25zdHJ1Y3RvcihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdCAg
ICB2YXIgcmVzID0gbmV3IFByb21pc2Uobm9vcCk7XG5cdCAgICByZXMudGhlbihyZXNvbHZlLCBy
ZWplY3QpO1xuXHQgICAgaGFuZGxlKHNlbGYsIG5ldyBIYW5kbGVyKG9uRnVsZmlsbGVkLCBvblJl
amVjdGVkLCByZXMpKTtcblx0ICB9KTtcblx0fTtcblx0ZnVuY3Rpb24gaGFuZGxlKHNlbGYsIGRl
ZmVycmVkKSB7XG5cdCAgd2hpbGUgKHNlbGYuXzgxID09PSAzKSB7XG5cdCAgICBzZWxmID0gc2Vs
Zi5fNjU7XG5cdCAgfVxuXHQgIGlmIChQcm9taXNlLl8xMCkge1xuXHQgICAgUHJvbWlzZS5fMTAo
c2VsZik7XG5cdCAgfVxuXHQgIGlmIChzZWxmLl84MSA9PT0gMCkge1xuXHQgICAgaWYgKHNlbGYu
XzQ1ID09PSAwKSB7XG5cdCAgICAgIHNlbGYuXzQ1ID0gMTtcblx0ICAgICAgc2VsZi5fNTQgPSBk
ZWZlcnJlZDtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgaWYgKHNlbGYuXzQ1ID09
PSAxKSB7XG5cdCAgICAgIHNlbGYuXzQ1ID0gMjtcblx0ICAgICAgc2VsZi5fNTQgPSBbc2VsZi5f
NTQsIGRlZmVycmVkXTtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgc2VsZi5fNTQu
cHVzaChkZWZlcnJlZCk7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIGhhbmRsZVJlc29sdmVk
KHNlbGYsIGRlZmVycmVkKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gaGFuZGxlUmVzb2x2ZWQoc2Vs
ZiwgZGVmZXJyZWQpIHtcblx0ICBhc2FwKGZ1bmN0aW9uKCkge1xuXHQgICAgdmFyIGNiID0gc2Vs
Zi5fODEgPT09IDEgPyBkZWZlcnJlZC5vbkZ1bGZpbGxlZCA6IGRlZmVycmVkLm9uUmVqZWN0ZWQ7
XG5cdCAgICBpZiAoY2IgPT09IG51bGwpIHtcblx0ICAgICAgaWYgKHNlbGYuXzgxID09PSAxKSB7
XG5cdCAgICAgICAgcmVzb2x2ZShkZWZlcnJlZC5wcm9taXNlLCBzZWxmLl82NSk7XG5cdCAgICAg
IH0gZWxzZSB7XG5cdCAgICAgICAgcmVqZWN0KGRlZmVycmVkLnByb21pc2UsIHNlbGYuXzY1KTtc
blx0ICAgICAgfVxuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICB2YXIgcmV0ID0gdHJ5
Q2FsbE9uZShjYiwgc2VsZi5fNjUpO1xuXHQgICAgaWYgKHJldCA9PT0gSVNfRVJST1IpIHtcblx0
ICAgICAgcmVqZWN0KGRlZmVycmVkLnByb21pc2UsIExBU1RfRVJST1IpO1xuXHQgICAgfSBlbHNl
IHtcblx0ICAgICAgcmVzb2x2ZShkZWZlcnJlZC5wcm9taXNlLCByZXQpO1xuXHQgICAgfVxuXHQg
IH0pO1xuXHR9XG5cdGZ1bmN0aW9uIHJlc29sdmUoc2VsZiwgbmV3VmFsdWUpIHtcblx0ICAvLyBQ
cm9taXNlIFJlc29sdXRpb24gUHJvY2VkdXJlOiBodHRwczovL2dpdGh1Yi5jb20vcHJvbWlzZXMt
YXBsdXMvcHJvbWlzZXMtc3BlYyN0aGUtcHJvbWlzZS1yZXNvbHV0aW9uLXByb2NlZHVyZVxuXHQg
IGlmIChuZXdWYWx1ZSA9PT0gc2VsZikge1xuXHQgICAgcmV0dXJuIHJlamVjdChcblx0ICAgICAg
c2VsZixcblx0ICAgICAgbmV3IFR5cGVFcnJvcignQSBwcm9taXNlIGNhbm5vdCBiZSByZXNvbHZl
ZCB3aXRoIGl0c2VsZi4nKVxuXHQgICAgKTtcblx0ICB9XG5cdCAgaWYgKFxuXHQgICAgbmV3VmFs
dWUgJiZcblx0ICAgICh0eXBlb2YgbmV3VmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBuZXdW
YWx1ZSA9PT0gJ2Z1bmN0aW9uJylcblx0ICApIHtcblx0ICAgIHZhciB0aGVuID0gZ2V0VGhlbihu
ZXdWYWx1ZSk7XG5cdCAgICBpZiAodGhlbiA9PT0gSVNfRVJST1IpIHtcblx0ICAgICAgcmV0dXJu
IHJlamVjdChzZWxmLCBMQVNUX0VSUk9SKTtcblx0ICAgIH1cblx0ICAgIGlmIChcblx0ICAgICAg
dGhlbiA9PT0gc2VsZi50aGVuICYmXG5cdCAgICAgIG5ld1ZhbHVlIGluc3RhbmNlb2YgUHJvbWlz
ZVxuXHQgICAgKSB7XG5cdCAgICAgIHNlbGYuXzgxID0gMztcblx0ICAgICAgc2VsZi5fNjUgPSBu
ZXdWYWx1ZTtcblx0ICAgICAgZmluYWxlKHNlbGYpO1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9
IGVsc2UgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgIGRvUmVzb2x2
ZSh0aGVuLmJpbmQobmV3VmFsdWUpLCBzZWxmKTtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxu
XHQgIH1cblx0ICBzZWxmLl84MSA9IDE7XG5cdCAgc2VsZi5fNjUgPSBuZXdWYWx1ZTtcblx0ICBm
aW5hbGUoc2VsZik7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHJlamVjdChzZWxmLCBuZXdWYWx1ZSkg
e1xuXHQgIHNlbGYuXzgxID0gMjtcblx0ICBzZWxmLl82NSA9IG5ld1ZhbHVlO1xuXHQgIGlmIChQ
cm9taXNlLl85Nykge1xuXHQgICAgUHJvbWlzZS5fOTcoc2VsZiwgbmV3VmFsdWUpO1xuXHQgIH1c
blx0ICBmaW5hbGUoc2VsZik7XG5cdH1cblx0ZnVuY3Rpb24gZmluYWxlKHNlbGYpIHtcblx0ICBp
ZiAoc2VsZi5fNDUgPT09IDEpIHtcblx0ICAgIGhhbmRsZShzZWxmLCBzZWxmLl81NCk7XG5cdCAg
ICBzZWxmLl81NCA9IG51bGw7XG5cdCAgfVxuXHQgIGlmIChzZWxmLl80NSA9PT0gMikge1xuXHQg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLl81NC5sZW5ndGg7IGkrKykge1xuXHQgICAgICBo
YW5kbGUoc2VsZiwgc2VsZi5fNTRbaV0pO1xuXHQgICAgfVxuXHQgICAgc2VsZi5fNTQgPSBudWxs
O1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gSGFuZGxlcihvbkZ1bGZpbGxlZCwgb25SZWpl
Y3RlZCwgcHJvbWlzZSl7XG5cdCAgdGhpcy5vbkZ1bGZpbGxlZCA9IHR5cGVvZiBvbkZ1bGZpbGxl
ZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogbnVsbDtcblx0ICB0aGlzLm9uUmVqZWN0
ZWQgPSB0eXBlb2Ygb25SZWplY3RlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uUmVqZWN0ZWQgOiBudWxs
O1xuXHQgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBUYWtl
IGEgcG90ZW50aWFsbHkgbWlzYmVoYXZpbmcgcmVzb2x2ZXIgZnVuY3Rpb24gYW5kIG1ha2Ugc3Vy
ZVxuXHQgKiBvbkZ1bGZpbGxlZCBhbmQgb25SZWplY3RlZCBhcmUgb25seSBjYWxsZWQgb25jZS5c
blx0ICpcblx0ICogTWFrZXMgbm8gZ3VhcmFudGVlcyBhYm91dCBhc3luY2hyb255LlxuXHQgKi9c
blx0ZnVuY3Rpb24gZG9SZXNvbHZlKGZuLCBwcm9taXNlKSB7XG5cdCAgdmFyIGRvbmUgPSBmYWxz
ZTtcblx0ICB2YXIgcmVzID0gdHJ5Q2FsbFR3byhmbiwgZnVuY3Rpb24gKHZhbHVlKSB7XG5cdCAg
ICBpZiAoZG9uZSkgcmV0dXJuO1xuXHQgICAgZG9uZSA9IHRydWU7XG5cdCAgICByZXNvbHZlKHBy
b21pc2UsIHZhbHVlKTtcblx0ICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG5cdCAgICBpZiAoZG9u
ZSkgcmV0dXJuO1xuXHQgICAgZG9uZSA9IHRydWU7XG5cdCAgICByZWplY3QocHJvbWlzZSwgcmVh
c29uKTtcblx0ICB9KVxuXHQgIGlmICghZG9uZSAmJiByZXMgPT09IElTX0VSUk9SKSB7XG5cdCAg
ICBkb25lID0gdHJ1ZTtcblx0ICAgIHJlamVjdChwcm9taXNlLCBMQVNUX0VSUk9SKTtcblx0ICB9
XG5cdH1cblxuXG4vKioqLyB9LFxuLyogODkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBf
cHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpLFxuXHQgICAgX2Fzc2lnbiA9
IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgUmVhY3ROb29wVXBkYXRlUXVldWUg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkyKTtcblx0XG5cdHZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9
IF9fd2VicGFja19yZXF1aXJlX18oOTMpO1xuXHR2YXIgZW1wdHlPYmplY3QgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDI0KTtcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7
XG5cdHZhciBsb3dQcmlvcml0eVdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyMik7XG5c
dFxuXHQvKipcblx0ICogQmFzZSBjbGFzcyBoZWxwZXJzIGZvciB0aGUgdXBkYXRpbmcgc3RhdGUg
b2YgYSBjb21wb25lbnQuXG5cdCAqL1xuXHRmdW5jdGlvbiBSZWFjdENvbXBvbmVudChwcm9wcywg
Y29udGV4dCwgdXBkYXRlcikge1xuXHQgIHRoaXMucHJvcHMgPSBwcm9wcztcblx0ICB0aGlzLmNv
bnRleHQgPSBjb250ZXh0O1xuXHQgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xuXHQgIC8vIFdl
IGluaXRpYWxpemUgdGhlIGRlZmF1bHQgdXBkYXRlciBidXQgdGhlIHJlYWwgb25lIGdldHMgaW5q
ZWN0ZWQgYnkgdGhlXG5cdCAgLy8gcmVuZGVyZXIuXG5cdCAgdGhpcy51cGRhdGVyID0gdXBkYXRl
ciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcblx0fVxuXHRcblx0UmVhY3RDb21wb25lbnQucHJv
dG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTtcblx0XG5cdC8qKlxuXHQgKiBTZXRzIGEgc3Vi
c2V0IG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIHRvIG11dGF0ZVxuXHQgKiBzdGF0ZS4g
WW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuXHQgKlxuXHQgKiBU
aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVs
eSB1cGRhdGVkLCBzb1xuXHQgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcg
dGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuXHQgKlxuXHQgKiBUaGVyZSBp
cyBubyBndWFyYW50ZWUgdGhhdCBjYWxscyB0byBgc2V0U3RhdGVgIHdpbGwgcnVuIHN5bmNocm9u
b3VzbHksXG5cdCAqIGFzIHRoZXkgbWF5IGV2ZW50dWFsbHkgYmUgYmF0Y2hlZCB0b2dldGhlci4g
IFlvdSBjYW4gcHJvdmlkZSBhbiBvcHRpb25hbFxuXHQgKiBjYWxsYmFjayB0aGF0IHdpbGwgYmUg
ZXhlY3V0ZWQgd2hlbiB0aGUgY2FsbCB0byBzZXRTdGF0ZSBpcyBhY3R1YWxseVxuXHQgKiBjb21w
bGV0ZWQuXG5cdCAqXG5cdCAqIFdoZW4gYSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byBzZXRTdGF0
ZSwgaXQgd2lsbCBiZSBjYWxsZWQgYXQgc29tZSBwb2ludCBpblxuXHQgKiB0aGUgZnV0dXJlIChu
b3Qgc3luY2hyb25vdXNseSkuIEl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHVwIHRvIGRhdGVc
blx0ICogY29tcG9uZW50IGFyZ3VtZW50cyAoc3RhdGUsIHByb3BzLCBjb250ZXh0KS4gVGhlc2Ug
dmFsdWVzIGNhbiBiZSBkaWZmZXJlbnRcblx0ICogZnJvbSB0aGlzLiogYmVjYXVzZSB5b3VyIGZ1
bmN0aW9uIG1heSBiZSBjYWxsZWQgYWZ0ZXIgcmVjZWl2ZVByb3BzIGJ1dCBiZWZvcmVcblx0ICog
c2hvdWxkQ29tcG9uZW50VXBkYXRlLCBhbmQgdGhpcyBuZXcgc3RhdGUsIHByb3BzLCBhbmQgY29u
dGV4dCB3aWxsIG5vdCB5ZXQgYmVcblx0ICogYXNzaWduZWQgdG8gdGhpcy5cblx0ICpcblx0ICog
QHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUg
b3IgZnVuY3Rpb24gdG9cblx0ICogICAgICAgIHByb2R1Y2UgbmV4dCBwYXJ0aWFsIHN0YXRlIHRv
IGJlIG1lcmdlZCB3aXRoIGN1cnJlbnQgc3RhdGUuXG5cdCAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBj
YWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cblx0ICogQGZpbmFsXG5cdCAq
IEBwcm90ZWN0ZWRcblx0ICovXG5cdFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZS5zZXRTdGF0ZSA9
IGZ1bmN0aW9uIChwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrKSB7XG5cdCAgISh0eXBlb2YgcGFydGlh
bFN0YXRlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgcGFydGlhbFN0YXRlID09PSAnZnVuY3Rpb24n
IHx8IHBhcnRpYWxTdGF0ZSA9PSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3Nl
dFN0YXRlKC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRl
IG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVz
LicpIDogX3Byb2RJbnZhcmlhbnQoJzg1JykgOiB2b2lkIDA7XG5cdCAgdGhpcy51cGRhdGVyLmVu
cXVldWVTZXRTdGF0ZSh0aGlzLCBwYXJ0aWFsU3RhdGUpO1xuXHQgIGlmIChjYWxsYmFjaykge1xu
XHQgICAgdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjaywgJ3NldFN0
YXRlJyk7XG5cdCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIEZvcmNlcyBhbiB1cGRhdGUuIFRo
aXMgc2hvdWxkIG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcblx0ICogY2Vy
dGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG5cdCAqXG5c
dCAqIFlvdSBtYXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVl
cGVyIGFzcGVjdCBvZiB0aGVcblx0ICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0
IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXG5cdCAqXG5cdCAqIFRoaXMgd2lsbCBub3QgaW52
b2tlIGBzaG91bGRDb21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2Vcblx0ICogYGNv
bXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cblx0ICpcblx0ICog
QHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciB1cGRhdGUgaXMgY29tcGxl
dGUuXG5cdCAqIEBmaW5hbFxuXHQgKiBAcHJvdGVjdGVkXG5cdCAqL1xuXHRSZWFjdENvbXBvbmVu
dC5wcm90b3R5cGUuZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcblx0ICB0aGlz
LnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMpO1xuXHQgIGlmIChjYWxsYmFjaykge1xu
XHQgICAgdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjaywgJ2ZvcmNl
VXBkYXRlJyk7XG5cdCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIERlcHJlY2F0ZWQgQVBJcy4g
VGhlc2UgQVBJcyB1c2VkIHRvIGV4aXN0IG9uIGNsYXNzaWMgUmVhY3QgY2xhc3NlcyBidXQgc2lu
Y2Vcblx0ICogd2Ugd291bGQgbGlrZSB0byBkZXByZWNhdGUgdGhlbSwgd2UncmUgbm90IGdvaW5n
IHRvIG1vdmUgdGhlbSBvdmVyIHRvIHRoaXNcblx0ICogbW9kZXJuIGJhc2UgY2xhc3MuIEluc3Rl
YWQsIHdlIGRlZmluZSBhIGdldHRlciB0aGF0IHdhcm5zIGlmIGl0J3MgYWNjZXNzZWQuXG5cdCAq
L1xuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgZGVwcmVjYXRlZEFQSXMgPSB7XG5cdCAgICBpc01v
dW50ZWQ6IFsnaXNNb3VudGVkJywgJ0luc3RlYWQsIG1ha2Ugc3VyZSB0byBjbGVhbiB1cCBzdWJz
Y3JpcHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluICcgKyAnY29tcG9uZW50V2lsbFVubW91
bnQgdG8gcHJldmVudCBtZW1vcnkgbGVha3MuJ10sXG5cdCAgICByZXBsYWNlU3RhdGU6IFsncmVw
bGFjZVN0YXRlJywgJ1JlZmFjdG9yIHlvdXIgY29kZSB0byB1c2Ugc2V0U3RhdGUgaW5zdGVhZCAo
c2VlICcgKyAnaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8zMjM2KS4n
XVxuXHQgIH07XG5cdCAgdmFyIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyA9IGZ1bmN0aW9uICht
ZXRob2ROYW1lLCBpbmZvKSB7XG5cdCAgICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcblx0ICAg
ICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSwgbWV0aG9k
TmFtZSwge1xuXHQgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgbG93UHJp
b3JpdHlXYXJuaW5nKGZhbHNlLCAnJXMoLi4uKSBpcyBkZXByZWNhdGVkIGluIHBsYWluIEphdmFT
Y3JpcHQgUmVhY3QgY2xhc3Nlcy4gJXMnLCBpbmZvWzBdLCBpbmZvWzFdKTtcblx0ICAgICAgICAg
IHJldHVybiB1bmRlZmluZWQ7XG5cdCAgICAgICAgfVxuXHQgICAgICB9KTtcblx0ICAgIH1cblx0
ICB9O1xuXHQgIGZvciAodmFyIGZuTmFtZSBpbiBkZXByZWNhdGVkQVBJcykge1xuXHQgICAgaWYg
KGRlcHJlY2F0ZWRBUElzLmhhc093blByb3BlcnR5KGZuTmFtZSkpIHtcblx0ICAgICAgZGVmaW5l
RGVwcmVjYXRpb25XYXJuaW5nKGZuTmFtZSwgZGVwcmVjYXRlZEFQSXNbZm5OYW1lXSk7XG5cdCAg
ICB9XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogQmFzZSBjbGFzcyBoZWxwZXJzIGZvciB0
aGUgdXBkYXRpbmcgc3RhdGUgb2YgYSBjb21wb25lbnQuXG5cdCAqL1xuXHRmdW5jdGlvbiBSZWFj
dFB1cmVDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcblx0ICAvLyBEdXBsaWNh
dGVkIGZyb20gUmVhY3RDb21wb25lbnQuXG5cdCAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXHQgIHRo
aXMuY29udGV4dCA9IGNvbnRleHQ7XG5cdCAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG5cdCAg
Ly8gV2UgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB1cGRhdGVyIGJ1dCB0aGUgcmVhbCBvbmUgZ2V0
cyBpbmplY3RlZCBieSB0aGVcblx0ICAvLyByZW5kZXJlci5cblx0ICB0aGlzLnVwZGF0ZXIgPSB1
cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBDb21w
b25lbnREdW1teSgpIHt9XG5cdENvbXBvbmVudER1bW15LnByb3RvdHlwZSA9IFJlYWN0Q29tcG9u
ZW50LnByb3RvdHlwZTtcblx0UmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZSA9IG5ldyBDb21w
b25lbnREdW1teSgpO1xuXHRSZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gUmVhY3RQdXJlQ29tcG9uZW50O1xuXHQvLyBBdm9pZCBhbiBleHRyYSBwcm90b3R5cGUganVt
cCBmb3IgdGhlc2UgbWV0aG9kcy5cblx0X2Fzc2lnbihSZWFjdFB1cmVDb21wb25lbnQucHJvdG90
eXBlLCBSZWFjdENvbXBvbmVudC5wcm90b3R5cGUpO1xuXHRSZWFjdFB1cmVDb21wb25lbnQucHJv
dG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50ID0gdHJ1ZTtcblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0ge1xuXHQgIENvbXBvbmVudDogUmVhY3RDb21wb25lbnQsXG5cdCAgUHVyZUNvbXBvbmVudDog
UmVhY3RQdXJlQ29tcG9uZW50XG5cdH07XG5cbi8qKiovIH0sXG4vKiA5MCAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJl
X18oMjMpO1xuXHRcblx0dmFyIFJlYWN0Q3VycmVudE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxMSk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0
dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0ZnVuY3Rpb24gaXNO
YXRpdmUoZm4pIHtcblx0ICAvLyBCYXNlZCBvbiBpc05hdGl2ZSgpIGZyb20gTG9kYXNoXG5cdCAg
dmFyIGZ1bmNUb1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztcblx0ICB2YXIg
aGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXHQgIHZh
ciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArIGZ1bmNUb1N0cmluZ1xuXHQgIC8vIFRha2UgYW4g
ZXhhbXBsZSBuYXRpdmUgZnVuY3Rpb24gc291cmNlIGZvciBjb21wYXJpc29uXG5cdCAgLmNhbGwo
aGFzT3duUHJvcGVydHlcblx0ICAvLyBTdHJpcCByZWdleCBjaGFyYWN0ZXJzIHNvIHdlIGNhbiB1
c2UgaXQgZm9yIHJlZ2V4XG5cdCAgKS5yZXBsYWNlKC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZywg
J1xcXFwkJidcblx0ICAvLyBSZW1vdmUgaGFzT3duUHJvcGVydHkgZnJvbSB0aGUgdGVtcGxhdGUg
dG8gbWFrZSBpdCBnZW5lcmljXG5cdCAgKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rp
b24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJyk7
XG5cdCAgdHJ5IHtcblx0ICAgIHZhciBzb3VyY2UgPSBmdW5jVG9TdHJpbmcuY2FsbChmbik7XG5c
dCAgICByZXR1cm4gcmVJc05hdGl2ZS50ZXN0KHNvdXJjZSk7XG5cdCAgfSBjYXRjaCAoZXJyKSB7
XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfVxuXHR9XG5cdFxuXHR2YXIgY2FuVXNlQ29sbGVj
dGlvbnMgPVxuXHQvLyBBcnJheS5mcm9tXG5cdHR5cGVvZiBBcnJheS5mcm9tID09PSAnZnVuY3Rp
b24nICYmXG5cdC8vIE1hcFxuXHR0eXBlb2YgTWFwID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZl
KE1hcCkgJiZcblx0Ly8gTWFwLnByb3RvdHlwZS5rZXlzXG5cdE1hcC5wcm90b3R5cGUgIT0gbnVs
bCAmJiB0eXBlb2YgTWFwLnByb3RvdHlwZS5rZXlzID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZl
KE1hcC5wcm90b3R5cGUua2V5cykgJiZcblx0Ly8gU2V0XG5cdHR5cGVvZiBTZXQgPT09ICdmdW5j
dGlvbicgJiYgaXNOYXRpdmUoU2V0KSAmJlxuXHQvLyBTZXQucHJvdG90eXBlLmtleXNcblx0U2V0
LnByb3RvdHlwZSAhPSBudWxsICYmIHR5cGVvZiBTZXQucHJvdG90eXBlLmtleXMgPT09ICdmdW5j
dGlvbicgJiYgaXNOYXRpdmUoU2V0LnByb3RvdHlwZS5rZXlzKTtcblx0XG5cdHZhciBzZXRJdGVt
O1xuXHR2YXIgZ2V0SXRlbTtcblx0dmFyIHJlbW92ZUl0ZW07XG5cdHZhciBnZXRJdGVtSURzO1xu
XHR2YXIgYWRkUm9vdDtcblx0dmFyIHJlbW92ZVJvb3Q7XG5cdHZhciBnZXRSb290SURzO1xuXHRc
blx0aWYgKGNhblVzZUNvbGxlY3Rpb25zKSB7XG5cdCAgdmFyIGl0ZW1NYXAgPSBuZXcgTWFwKCk7
XG5cdCAgdmFyIHJvb3RJRFNldCA9IG5ldyBTZXQoKTtcblx0XG5cdCAgc2V0SXRlbSA9IGZ1bmN0
aW9uIChpZCwgaXRlbSkge1xuXHQgICAgaXRlbU1hcC5zZXQoaWQsIGl0ZW0pO1xuXHQgIH07XG5c
dCAgZ2V0SXRlbSA9IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgcmV0dXJuIGl0ZW1NYXAuZ2V0KGlk
KTtcblx0ICB9O1xuXHQgIHJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIGl0ZW1N
YXBbJ2RlbGV0ZSddKGlkKTtcblx0ICB9O1xuXHQgIGdldEl0ZW1JRHMgPSBmdW5jdGlvbiAoKSB7
XG5cdCAgICByZXR1cm4gQXJyYXkuZnJvbShpdGVtTWFwLmtleXMoKSk7XG5cdCAgfTtcblx0XG5c
dCAgYWRkUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgcm9vdElEU2V0LmFkZChpZCk7XG5c
dCAgfTtcblx0ICByZW1vdmVSb290ID0gZnVuY3Rpb24gKGlkKSB7XG5cdCAgICByb290SURTZXRb
J2RlbGV0ZSddKGlkKTtcblx0ICB9O1xuXHQgIGdldFJvb3RJRHMgPSBmdW5jdGlvbiAoKSB7XG5c
dCAgICByZXR1cm4gQXJyYXkuZnJvbShyb290SURTZXQua2V5cygpKTtcblx0ICB9O1xuXHR9IGVs
c2Uge1xuXHQgIHZhciBpdGVtQnlLZXkgPSB7fTtcblx0ICB2YXIgcm9vdEJ5S2V5ID0ge307XG5c
dFxuXHQgIC8vIFVzZSBub24tbnVtZXJpYyBrZXlzIHRvIHByZXZlbnQgVjggcGVyZm9ybWFuY2Ug
aXNzdWVzOlxuXHQgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcy
MzJcblx0ICB2YXIgZ2V0S2V5RnJvbUlEID0gZnVuY3Rpb24gKGlkKSB7XG5cdCAgICByZXR1cm4g
Jy4nICsgaWQ7XG5cdCAgfTtcblx0ICB2YXIgZ2V0SURGcm9tS2V5ID0gZnVuY3Rpb24gKGtleSkg
e1xuXHQgICAgcmV0dXJuIHBhcnNlSW50KGtleS5zdWJzdHIoMSksIDEwKTtcblx0ICB9O1xuXHRc
blx0ICBzZXRJdGVtID0gZnVuY3Rpb24gKGlkLCBpdGVtKSB7XG5cdCAgICB2YXIga2V5ID0gZ2V0
S2V5RnJvbUlEKGlkKTtcblx0ICAgIGl0ZW1CeUtleVtrZXldID0gaXRlbTtcblx0ICB9O1xuXHQg
IGdldEl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQo
aWQpO1xuXHQgICAgcmV0dXJuIGl0ZW1CeUtleVtrZXldO1xuXHQgIH07XG5cdCAgcmVtb3ZlSXRl
bSA9IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7XG5c
dCAgICBkZWxldGUgaXRlbUJ5S2V5W2tleV07XG5cdCAgfTtcblx0ICBnZXRJdGVtSURzID0gZnVu
Y3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIE9iamVjdC5rZXlzKGl0ZW1CeUtleSkubWFwKGdldElE
RnJvbUtleSk7XG5cdCAgfTtcblx0XG5cdCAgYWRkUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuXHQg
ICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7XG5cdCAgICByb290QnlLZXlba2V5XSA9IHRy
dWU7XG5cdCAgfTtcblx0ICByZW1vdmVSb290ID0gZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIg
a2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcblx0ICAgIGRlbGV0ZSByb290QnlLZXlba2V5XTtcblx0
ICB9O1xuXHQgIGdldFJvb3RJRHMgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gT2JqZWN0
LmtleXMocm9vdEJ5S2V5KS5tYXAoZ2V0SURGcm9tS2V5KTtcblx0ICB9O1xuXHR9XG5cdFxuXHR2
YXIgdW5tb3VudGVkSURzID0gW107XG5cdFxuXHRmdW5jdGlvbiBwdXJnZURlZXAoaWQpIHtcblx0
ICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuXHQgIGlmIChpdGVtKSB7XG5cdCAgICB2YXIgY2hp
bGRJRHMgPSBpdGVtLmNoaWxkSURzO1xuXHRcblx0ICAgIHJlbW92ZUl0ZW0oaWQpO1xuXHQgICAg
Y2hpbGRJRHMuZm9yRWFjaChwdXJnZURlZXApO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24g
ZGVzY3JpYmVDb21wb25lbnRGcmFtZShuYW1lLCBzb3VyY2UsIG93bmVyTmFtZSkge1xuXHQgIHJl
dHVybiAnXFxuICAgIGluICcgKyAobmFtZSB8fCAnVW5rbm93bicpICsgKHNvdXJjZSA/ICcgKGF0
ICcgKyBzb3VyY2UuZmlsZU5hbWUucmVwbGFjZSgvXi4qW1xcXFxcXC9dLywgJycpICsgJzonICsg
c291cmNlLmxpbmVOdW1iZXIgKyAnKScgOiBvd25lck5hbWUgPyAnIChjcmVhdGVkIGJ5ICcgKyBv
d25lck5hbWUgKyAnKScgOiAnJyk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdldERpc3BsYXlOYW1l
KGVsZW1lbnQpIHtcblx0ICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG5cdCAgICByZXR1cm4gJyNl
bXB0eSc7XG5cdCAgfSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycgfHwgdHlw
ZW9mIGVsZW1lbnQgPT09ICdudW1iZXInKSB7XG5cdCAgICByZXR1cm4gJyN0ZXh0Jztcblx0ICB9
IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSB7XG5cdCAgICByZXR1
cm4gZWxlbWVudC50eXBlO1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4gZWxlbWVudC50eXBl
LmRpc3BsYXlOYW1lIHx8IGVsZW1lbnQudHlwZS5uYW1lIHx8ICdVbmtub3duJztcblx0ICB9XG5c
dH1cblx0XG5cdGZ1bmN0aW9uIGRlc2NyaWJlSUQoaWQpIHtcblx0ICB2YXIgbmFtZSA9IFJlYWN0
Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUoaWQpO1xuXHQgIHZhciBlbGVtZW50ID0g
UmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtcblx0ICB2YXIgb3duZXJJRCA9
IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0T3duZXJJRChpZCk7XG5cdCAgdmFyIG93bmVyTmFt
ZTtcblx0ICBpZiAob3duZXJJRCkge1xuXHQgICAgb3duZXJOYW1lID0gUmVhY3RDb21wb25lbnRU
cmVlSG9vay5nZXREaXNwbGF5TmFtZShvd25lcklEKTtcblx0ICB9XG5cdCAgIGZhbHNlID8gd2Fy
bmluZyhlbGVtZW50LCAnUmVhY3RDb21wb25lbnRUcmVlSG9vazogTWlzc2luZyBSZWFjdCBlbGVt
ZW50IGZvciBkZWJ1Z0lEICVzIHdoZW4gJyArICdidWlsZGluZyBzdGFjaycsIGlkKSA6IHZvaWQg
MDtcblx0ICByZXR1cm4gZGVzY3JpYmVDb21wb25lbnRGcmFtZShuYW1lLCBlbGVtZW50ICYmIGVs
ZW1lbnQuX3NvdXJjZSwgb3duZXJOYW1lKTtcblx0fVxuXHRcblx0dmFyIFJlYWN0Q29tcG9uZW50
VHJlZUhvb2sgPSB7XG5cdCAgb25TZXRDaGlsZHJlbjogZnVuY3Rpb24gKGlkLCBuZXh0Q2hpbGRJ
RHMpIHtcblx0ICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgICAhaXRlbSA/ICBmYWxz
ZSA/IGludmFyaWFudChmYWxzZSwgJ0l0ZW0gbXVzdCBoYXZlIGJlZW4gc2V0JykgOiBfcHJvZElu
dmFyaWFudCgnMTQ0JykgOiB2b2lkIDA7XG5cdCAgICBpdGVtLmNoaWxkSURzID0gbmV4dENoaWxk
SURzO1xuXHRcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV4dENoaWxkSURzLmxlbmd0aDsg
aSsrKSB7XG5cdCAgICAgIHZhciBuZXh0Q2hpbGRJRCA9IG5leHRDaGlsZElEc1tpXTtcblx0ICAg
ICAgdmFyIG5leHRDaGlsZCA9IGdldEl0ZW0obmV4dENoaWxkSUQpO1xuXHQgICAgICAhbmV4dENo
aWxkID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgaG9vayBldmVudHMgdG8g
ZmlyZSBmb3IgdGhlIGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9uU2V0
Q2hpbGRyZW4oKS4nKSA6IF9wcm9kSW52YXJpYW50KCcxNDAnKSA6IHZvaWQgMDtcblx0ICAgICAg
IShuZXh0Q2hpbGQuY2hpbGRJRHMgIT0gbnVsbCB8fCB0eXBlb2YgbmV4dENoaWxkLmVsZW1lbnQg
IT09ICdvYmplY3QnIHx8IG5leHRDaGlsZC5lbGVtZW50ID09IG51bGwpID8gIGZhbHNlID8gaW52
YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgb25TZXRDaGlsZHJlbigpIHRvIGZpcmUgZm9yIGEgY29u
dGFpbmVyIGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRy
ZW4oKS4nKSA6IF9wcm9kSW52YXJpYW50KCcxNDEnKSA6IHZvaWQgMDtcblx0ICAgICAgIW5leHRD
aGlsZC5pc01vdW50ZWQgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBvbk1v
dW50Q29tcG9uZW50KCkgdG8gZmlyZSBmb3IgdGhlIGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50IGlu
Y2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4nKSA6IF9wcm9kSW52YXJpYW50KCc3MScpIDog
dm9pZCAwO1xuXHQgICAgICBpZiAobmV4dENoaWxkLnBhcmVudElEID09IG51bGwpIHtcblx0ICAg
ICAgICBuZXh0Q2hpbGQucGFyZW50SUQgPSBpZDtcblx0ICAgICAgICAvLyBUT0RPOiBUaGlzIHNo
b3VsZG4ndCBiZSBuZWNlc3NhcnkgYnV0IG1vdW50aW5nIGEgbmV3IHJvb3QgZHVyaW5nIGluXG5c
dCAgICAgICAgLy8gY29tcG9uZW50V2lsbE1vdW50IGN1cnJlbnRseSBjYXVzZXMgbm90LXlldC1t
b3VudGVkIGNvbXBvbmVudHMgdG9cblx0ICAgICAgICAvLyBiZSBwdXJnZWQgZnJvbSBvdXIgdHJl
ZSBkYXRhIHNvIHRoZWlyIHBhcmVudCBpZCBpcyBtaXNzaW5nLlxuXHQgICAgICB9XG5cdCAgICAg
ICEobmV4dENoaWxkLnBhcmVudElEID09PSBpZCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2Us
ICdFeHBlY3RlZCBvbkJlZm9yZU1vdW50Q29tcG9uZW50KCkgcGFyZW50IGFuZCBvblNldENoaWxk
cmVuKCkgdG8gYmUgY29uc2lzdGVudCAoJXMgaGFzIHBhcmVudHMgJXMgYW5kICVzKS4nLCBuZXh0
Q2hpbGRJRCwgbmV4dENoaWxkLnBhcmVudElELCBpZCkgOiBfcHJvZEludmFyaWFudCgnMTQyJywg
bmV4dENoaWxkSUQsIG5leHRDaGlsZC5wYXJlbnRJRCwgaWQpIDogdm9pZCAwO1xuXHQgICAgfVxu
XHQgIH0sXG5cdCAgb25CZWZvcmVNb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGlkLCBlbGVtZW50
LCBwYXJlbnRJRCkge1xuXHQgICAgdmFyIGl0ZW0gPSB7XG5cdCAgICAgIGVsZW1lbnQ6IGVsZW1l
bnQsXG5cdCAgICAgIHBhcmVudElEOiBwYXJlbnRJRCxcblx0ICAgICAgdGV4dDogbnVsbCxcblx0
ICAgICAgY2hpbGRJRHM6IFtdLFxuXHQgICAgICBpc01vdW50ZWQ6IGZhbHNlLFxuXHQgICAgICB1
cGRhdGVDb3VudDogMFxuXHQgICAgfTtcblx0ICAgIHNldEl0ZW0oaWQsIGl0ZW0pO1xuXHQgIH0s
XG5cdCAgb25CZWZvcmVVcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCwgZWxlbWVudCkge1xu
XHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcblx0ICAgIGlmICghaXRlbSB8fCAhaXRlbS5p
c01vdW50ZWQpIHtcblx0ICAgICAgLy8gV2UgbWF5IGVuZCB1cCBoZXJlIGFzIGEgcmVzdWx0IG9m
IHNldFN0YXRlKCkgaW4gY29tcG9uZW50V2lsbFVubW91bnQoKS5cblx0ICAgICAgLy8gSW4gdGhp
cyBjYXNlLCBpZ25vcmUgdGhlIGVsZW1lbnQuXG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0
ICAgIGl0ZW0uZWxlbWVudCA9IGVsZW1lbnQ7XG5cdCAgfSxcblx0ICBvbk1vdW50Q29tcG9uZW50
OiBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgICAh
aXRlbSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0l0ZW0gbXVzdCBoYXZlIGJlZW4gc2V0
JykgOiBfcHJvZEludmFyaWFudCgnMTQ0JykgOiB2b2lkIDA7XG5cdCAgICBpdGVtLmlzTW91bnRl
ZCA9IHRydWU7XG5cdCAgICB2YXIgaXNSb290ID0gaXRlbS5wYXJlbnRJRCA9PT0gMDtcblx0ICAg
IGlmIChpc1Jvb3QpIHtcblx0ICAgICAgYWRkUm9vdChpZCk7XG5cdCAgICB9XG5cdCAgfSxcblx0
ICBvblVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIgaXRlbSA9IGdl
dEl0ZW0oaWQpO1xuXHQgICAgaWYgKCFpdGVtIHx8ICFpdGVtLmlzTW91bnRlZCkge1xuXHQgICAg
ICAvLyBXZSBtYXkgZW5kIHVwIGhlcmUgYXMgYSByZXN1bHQgb2Ygc2V0U3RhdGUoKSBpbiBjb21w
b25lbnRXaWxsVW5tb3VudCgpLlxuXHQgICAgICAvLyBJbiB0aGlzIGNhc2UsIGlnbm9yZSB0aGUg
ZWxlbWVudC5cblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgaXRlbS51cGRhdGVDb3Vu
dCsrO1xuXHQgIH0sXG5cdCAgb25Vbm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaWQpIHtcblx0
ICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgICBpZiAoaXRlbSkge1xuXHQgICAgICAv
LyBXZSBuZWVkIHRvIGNoZWNrIGlmIGl0IGV4aXN0cy5cblx0ICAgICAgLy8gYGl0ZW1gIG1pZ2h0
IG5vdCBleGlzdCBpZiBpdCBpcyBpbnNpZGUgYW4gZXJyb3IgYm91bmRhcnksIGFuZCBhIHNpYmxp
bmdcblx0ICAgICAgLy8gZXJyb3IgYm91bmRhcnkgY2hpbGQgdGhyZXcgd2hpbGUgbW91bnRpbmcu
IFRoZW4gdGhpcyBpbnN0YW5jZSBuZXZlclxuXHQgICAgICAvLyBnb3QgYSBjaGFuY2UgdG8gbW91
bnQsIGJ1dCBpdCBzdGlsbCBnZXRzIGFuIHVubW91bnRpbmcgZXZlbnQgZHVyaW5nXG5cdCAgICAg
IC8vIHRoZSBlcnJvciBib3VuZGFyeSBjbGVhbnVwLlxuXHQgICAgICBpdGVtLmlzTW91bnRlZCA9
IGZhbHNlO1xuXHQgICAgICB2YXIgaXNSb290ID0gaXRlbS5wYXJlbnRJRCA9PT0gMDtcblx0ICAg
ICAgaWYgKGlzUm9vdCkge1xuXHQgICAgICAgIHJlbW92ZVJvb3QoaWQpO1xuXHQgICAgICB9XG5c
dCAgICB9XG5cdCAgICB1bm1vdW50ZWRJRHMucHVzaChpZCk7XG5cdCAgfSxcblx0ICBwdXJnZVVu
bW91bnRlZENvbXBvbmVudHM6IGZ1bmN0aW9uICgpIHtcblx0ICAgIGlmIChSZWFjdENvbXBvbmVu
dFRyZWVIb29rLl9wcmV2ZW50UHVyZ2luZykge1xuXHQgICAgICAvLyBTaG91bGQgb25seSBiZSB1
c2VkIGZvciB0ZXN0aW5nLlxuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB1bm1vdW50ZWRJRHMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgdmFy
IGlkID0gdW5tb3VudGVkSURzW2ldO1xuXHQgICAgICBwdXJnZURlZXAoaWQpO1xuXHQgICAgfVxu
XHQgICAgdW5tb3VudGVkSURzLmxlbmd0aCA9IDA7XG5cdCAgfSxcblx0ICBpc01vdW50ZWQ6IGZ1
bmN0aW9uIChpZCkge1xuXHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcblx0ICAgIHJldHVy
biBpdGVtID8gaXRlbS5pc01vdW50ZWQgOiBmYWxzZTtcblx0ICB9LFxuXHQgIGdldEN1cnJlbnRT
dGFja0FkZGVuZHVtOiBmdW5jdGlvbiAodG9wRWxlbWVudCkge1xuXHQgICAgdmFyIGluZm8gPSAn
Jztcblx0ICAgIGlmICh0b3BFbGVtZW50KSB7XG5cdCAgICAgIHZhciBuYW1lID0gZ2V0RGlzcGxh
eU5hbWUodG9wRWxlbWVudCk7XG5cdCAgICAgIHZhciBvd25lciA9IHRvcEVsZW1lbnQuX293bmVy
O1xuXHQgICAgICBpbmZvICs9IGRlc2NyaWJlQ29tcG9uZW50RnJhbWUobmFtZSwgdG9wRWxlbWVu
dC5fc291cmNlLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkpO1xuXHQgICAgfVxuXHRcblx0ICAg
IHZhciBjdXJyZW50T3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuXHQgICAgdmFy
IGlkID0gY3VycmVudE93bmVyICYmIGN1cnJlbnRPd25lci5fZGVidWdJRDtcblx0XG5cdCAgICBp
bmZvICs9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoaWQpO1xu
XHQgICAgcmV0dXJuIGluZm87XG5cdCAgfSxcblx0ICBnZXRTdGFja0FkZGVuZHVtQnlJRDogZnVu
Y3Rpb24gKGlkKSB7XG5cdCAgICB2YXIgaW5mbyA9ICcnO1xuXHQgICAgd2hpbGUgKGlkKSB7XG5c
dCAgICAgIGluZm8gKz0gZGVzY3JpYmVJRChpZCk7XG5cdCAgICAgIGlkID0gUmVhY3RDb21wb25l
bnRUcmVlSG9vay5nZXRQYXJlbnRJRChpZCk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gaW5mbztc
blx0ICB9LFxuXHQgIGdldENoaWxkSURzOiBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBpdGVt
ID0gZ2V0SXRlbShpZCk7XG5cdCAgICByZXR1cm4gaXRlbSA/IGl0ZW0uY2hpbGRJRHMgOiBbXTtc
blx0ICB9LFxuXHQgIGdldERpc3BsYXlOYW1lOiBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBl
bGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtcblx0ICAgIGlm
ICghZWxlbWVudCkge1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICAgIHJldHVy
biBnZXREaXNwbGF5TmFtZShlbGVtZW50KTtcblx0ICB9LFxuXHQgIGdldEVsZW1lbnQ6IGZ1bmN0
aW9uIChpZCkge1xuXHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcblx0ICAgIHJldHVybiBp
dGVtID8gaXRlbS5lbGVtZW50IDogbnVsbDtcblx0ICB9LFxuXHQgIGdldE93bmVySUQ6IGZ1bmN0
aW9uIChpZCkge1xuXHQgICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdl
dEVsZW1lbnQoaWQpO1xuXHQgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50Ll9vd25lcikge1xu
XHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBlbGVtZW50Ll9vd25l
ci5fZGVidWdJRDtcblx0ICB9LFxuXHQgIGdldFBhcmVudElEOiBmdW5jdGlvbiAoaWQpIHtcblx0
ICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgICByZXR1cm4gaXRlbSA/IGl0ZW0ucGFy
ZW50SUQgOiBudWxsO1xuXHQgIH0sXG5cdCAgZ2V0U291cmNlOiBmdW5jdGlvbiAoaWQpIHtcblx0
ICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgICB2YXIgZWxlbWVudCA9IGl0ZW0gPyBp
dGVtLmVsZW1lbnQgOiBudWxsO1xuXHQgICAgdmFyIHNvdXJjZSA9IGVsZW1lbnQgIT0gbnVsbCA/
IGVsZW1lbnQuX3NvdXJjZSA6IG51bGw7XG5cdCAgICByZXR1cm4gc291cmNlO1xuXHQgIH0sXG5c
dCAgZ2V0VGV4dDogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIgZWxlbWVudCA9IFJlYWN0Q29t
cG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG5cdCAgICBpZiAodHlwZW9mIGVsZW1lbnQg
PT09ICdzdHJpbmcnKSB7XG5cdCAgICAgIHJldHVybiBlbGVtZW50O1xuXHQgICAgfSBlbHNlIGlm
ICh0eXBlb2YgZWxlbWVudCA9PT0gJ251bWJlcicpIHtcblx0ICAgICAgcmV0dXJuICcnICsgZWxl
bWVudDtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQg
IH0sXG5cdCAgZ2V0VXBkYXRlQ291bnQ6IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgdmFyIGl0ZW0g
PSBnZXRJdGVtKGlkKTtcblx0ICAgIHJldHVybiBpdGVtID8gaXRlbS51cGRhdGVDb3VudCA6IDA7
XG5cdCAgfSxcblx0XG5cdFxuXHQgIGdldFJvb3RJRHM6IGdldFJvb3RJRHMsXG5cdCAgZ2V0UmVn
aXN0ZXJlZElEczogZ2V0SXRlbUlEcyxcblx0XG5cdCAgcHVzaE5vblN0YW5kYXJkV2FybmluZ1N0
YWNrOiBmdW5jdGlvbiAoaXNDcmVhdGluZ0VsZW1lbnQsIGN1cnJlbnRTb3VyY2UpIHtcblx0ICAg
IGlmICh0eXBlb2YgY29uc29sZS5yZWFjdFN0YWNrICE9PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAg
IHJldHVybjtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgc3RhY2sgPSBbXTtcblx0ICAgIHZhciBj
dXJyZW50T3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuXHQgICAgdmFyIGlkID0g
Y3VycmVudE93bmVyICYmIGN1cnJlbnRPd25lci5fZGVidWdJRDtcblx0XG5cdCAgICB0cnkge1xu
XHQgICAgICBpZiAoaXNDcmVhdGluZ0VsZW1lbnQpIHtcblx0ICAgICAgICBzdGFjay5wdXNoKHtc
blx0ICAgICAgICAgIG5hbWU6IGlkID8gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXREaXNwbGF5
TmFtZShpZCkgOiBudWxsLFxuXHQgICAgICAgICAgZmlsZU5hbWU6IGN1cnJlbnRTb3VyY2UgPyBj
dXJyZW50U291cmNlLmZpbGVOYW1lIDogbnVsbCxcblx0ICAgICAgICAgIGxpbmVOdW1iZXI6IGN1
cnJlbnRTb3VyY2UgPyBjdXJyZW50U291cmNlLmxpbmVOdW1iZXIgOiBudWxsXG5cdCAgICAgICAg
fSk7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHdoaWxlIChpZCkge1xuXHQgICAgICAgIHZhciBl
bGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtcblx0ICAgICAg
ICB2YXIgcGFyZW50SUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFBhcmVudElEKGlkKTtc
blx0ICAgICAgICB2YXIgb3duZXJJRCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0T3duZXJJ
RChpZCk7XG5cdCAgICAgICAgdmFyIG93bmVyTmFtZSA9IG93bmVySUQgPyBSZWFjdENvbXBvbmVu
dFRyZWVIb29rLmdldERpc3BsYXlOYW1lKG93bmVySUQpIDogbnVsbDtcblx0ICAgICAgICB2YXIg
c291cmNlID0gZWxlbWVudCAmJiBlbGVtZW50Ll9zb3VyY2U7XG5cdCAgICAgICAgc3RhY2sucHVz
aCh7XG5cdCAgICAgICAgICBuYW1lOiBvd25lck5hbWUsXG5cdCAgICAgICAgICBmaWxlTmFtZTog
c291cmNlID8gc291cmNlLmZpbGVOYW1lIDogbnVsbCxcblx0ICAgICAgICAgIGxpbmVOdW1iZXI6
IHNvdXJjZSA/IHNvdXJjZS5saW5lTnVtYmVyIDogbnVsbFxuXHQgICAgICAgIH0pO1xuXHQgICAg
ICAgIGlkID0gcGFyZW50SUQ7XG5cdCAgICAgIH1cblx0ICAgIH0gY2F0Y2ggKGVycikge1xuXHQg
ICAgICAvLyBJbnRlcm5hbCBzdGF0ZSBpcyBtZXNzZWQgdXAuXG5cdCAgICAgIC8vIFN0b3AgYnVp
bGRpbmcgdGhlIHN0YWNrIChpdCdzIGp1c3QgYSBuaWNlIHRvIGhhdmUpLlxuXHQgICAgfVxuXHRc
blx0ICAgIGNvbnNvbGUucmVhY3RTdGFjayhzdGFjayk7XG5cdCAgfSxcblx0ICBwb3BOb25TdGFu
ZGFyZFdhcm5pbmdTdGFjazogZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKHR5cGVvZiBjb25zb2xl
LnJlYWN0U3RhY2tFbmQgIT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAg
fVxuXHQgICAgY29uc29sZS5yZWFjdFN0YWNrRW5kKCk7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rO1xuXG4vKioqLyB9LFxuLyogOTEg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5
cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5c
dCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmlj
dCc7XG5cdFxuXHQvLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQgdHlw
ZS4gSWYgdGhlcmUgaXMgbm8gbmF0aXZlIFN5bWJvbFxuXHQvLyBub3IgcG9seWZpbGwsIHRoZW4g
YSBwbGFpbiBudW1iZXIgaXMgdXNlZCBmb3IgcGVyZm9ybWFuY2UuXG5cdFxuXHR2YXIgUkVBQ1Rf
RUxFTUVOVF9UWVBFID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2xbJ2Zv
ciddICYmIFN5bWJvbFsnZm9yJ10oJ3JlYWN0LmVsZW1lbnQnKSB8fCAweGVhYzc7XG5cdFxuXHRt
b2R1bGUuZXhwb3J0cyA9IFJFQUNUX0VMRU1FTlRfVFlQRTtcblxuLyoqKi8gfSxcbi8qIDkyICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxu
XHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18o
Mik7XG5cdFxuXHRmdW5jdGlvbiB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkg
e1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgdmFyIGNvbnN0cnVjdG9yID0gcHVibGljSW5zdGFu
Y2UuY29uc3RydWN0b3I7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50ZWQg
b3IgbW91bnRpbmcgY29tcG9uZW50LiAnICsgJ1RoaXMgdXN1YWxseSBtZWFucyB5b3UgY2FsbGVk
ICVzKCkgb24gYW4gdW5tb3VudGVkIGNvbXBvbmVudC4gJyArICdUaGlzIGlzIGEgbm8tb3AuIFBs
ZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhlICVzIGNvbXBvbmVudC4nLCBjYWxsZXJOYW1lLCBj
YWxsZXJOYW1lLCBjb25zdHJ1Y3RvciAmJiAoY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgY29u
c3RydWN0b3IubmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQgMDtcblx0ICB9XG5cdH1cblx0
XG5cdC8qKlxuXHQgKiBUaGlzIGlzIHRoZSBhYnN0cmFjdCBBUEkgZm9yIGFuIHVwZGF0ZSBxdWV1
ZS5cblx0ICovXG5cdHZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHtcblx0ICAvKipcblx0ICAg
KiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50
ZWQuXG5cdCAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFu
Y2Ugd2Ugd2FudCB0byB0ZXN0LlxuXHQgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91
bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgICAqIEBwcm90ZWN0ZWRcblx0ICAgKiBAZmluYWxc
blx0ICAgKi9cblx0ICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuXHQg
ICAgcmV0dXJuIGZhbHNlO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEVucXVldWUgYSBj
YWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0
ZXNcblx0ICAgKiBoYXZlIHByb2Nlc3NlZC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RD
bGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4
dC5cblx0ICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRl
IGlzIHVwZGF0ZWQuXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgZW5xdWV1ZUNhbGxi
YWNrOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNhbGxiYWNrKSB7fSxcblx0XG5cdCAgLyoq
XG5cdCAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdo
ZW4gaXQgaXMga25vd24gd2l0aFxuXHQgICAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoq
IGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuXHQgICAqXG5cdCAgICogWW91IG1heSB3YW50IHRvIGNh
bGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuXHQg
ICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3Qg
Y2FsbGVkLlxuXHQgICAqXG5cdCAgICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBv
bmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuXHQgICAqIGBjb21wb25lbnRXaWxsVXBk
YXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1Jl
YWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRl
ci5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBlbnF1ZXVlRm9yY2VVcGRhdGU6IGZ1
bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuXHQgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2Us
ICdmb3JjZVVwZGF0ZScpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlcGxhY2VzIGFs
bCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBz
dGF0ZS5cblx0ICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUu
XG5cdCAgICpcblx0ICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAg
d2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzb1xuXHQgICAqIGFjY2Vzc2luZyBgdGhpcy5z
dGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUu
XG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBp
bnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cblx0ICAgKiBAcGFyYW0ge29iamVjdH0gY29t
cGxldGVTdGF0ZSBOZXh0IHN0YXRlLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGVu
cXVldWVSZXBsYWNlU3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0
ZSkge1xuXHQgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUnKTtcblx0
ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhp
cyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXNcblx0ICAgKiBpbnRlcm5hbC4g
VGhpcyBwcm92aWRlcyBhIG1lcmdpbmcgc3RyYXRlZ3kgdGhhdCBpcyBub3QgYXZhaWxhYmxlIHRv
IGRlZXBcblx0ICAgKiBwcm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3Nl
IHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2UgaXRcblx0ICAgKiBkdXJpbmcgdGhlIG1lcmdlLlxu
XHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5z
dGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRp
YWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuXG5cdCAg
ICogQGludGVybmFsXG5cdCAgICovXG5cdCAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAocHVi
bGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkge1xuXHQgICAgd2Fybk5vb3AocHVibGljSW5zdGFu
Y2UsICdzZXRTdGF0ZScpO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVh
Y3ROb29wVXBkYXRlUXVldWU7XG5cbi8qKiovIH0sXG4vKiA5MyAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IGZhbHNlO1xuXHRpZiAoZmFsc2Up
IHtcblx0ICB0cnkge1xuXHQgICAgLy8gJEZsb3dGaXhNZSBodHRwczovL2dpdGh1Yi5jb20vZmFj
ZWJvb2svZmxvdy9pc3N1ZXMvMjg1XG5cdCAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICd4
JywgeyBnZXQ6IGZ1bmN0aW9uICgpIHt9IH0pO1xuXHQgICAgY2FuRGVmaW5lUHJvcGVydHkgPSB0
cnVlO1xuXHQgIH0gY2F0Y2ggKHgpIHtcblx0ICAgIC8vIElFIHdpbGwgZmFpbCBvbiBkZWZpbmVQ
cm9wZXJ0eVxuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBjYW5EZWZpbmVQcm9w
ZXJ0eTtcblxuLyoqKi8gfSxcbi8qIDk0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMpIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRy
dWU7XG5cdGV4cG9ydHNbXCJkZWZhdWx0XCJdID0gY29tcG9zZTtcblx0LyoqXG5cdCAqIENvbXBv
c2VzIHNpbmdsZS1hcmd1bWVudCBmdW5jdGlvbnMgZnJvbSByaWdodCB0byBsZWZ0LiBUaGUgcmln
aHRtb3N0XG5cdCAqIGZ1bmN0aW9uIGNhbiB0YWtlIG11bHRpcGxlIGFyZ3VtZW50cyBhcyBpdCBw
cm92aWRlcyB0aGUgc2lnbmF0dXJlIGZvclxuXHQgKiB0aGUgcmVzdWx0aW5nIGNvbXBvc2l0ZSBm
dW5jdGlvbi5cblx0ICpcblx0ICogQHBhcmFtIHsuLi5GdW5jdGlvbn0gZnVuY3MgVGhlIGZ1bmN0
aW9ucyB0byBjb21wb3NlLlxuXHQgKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgZnVuY3Rpb24gb2J0
YWluZWQgYnkgY29tcG9zaW5nIHRoZSBhcmd1bWVudCBmdW5jdGlvbnNcblx0ICogZnJvbSByaWdo
dCB0byBsZWZ0LiBGb3IgZXhhbXBsZSwgY29tcG9zZShmLCBnLCBoKSBpcyBpZGVudGljYWwgdG8g
ZG9pbmdcblx0ICogKC4uLmFyZ3MpID0+IGYoZyhoKC4uLmFyZ3MpKSkuXG5cdCAqL1xuXHRcblx0
ZnVuY3Rpb24gY29tcG9zZSgpIHtcblx0ICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0
aCwgZnVuY3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtc
blx0ICAgIGZ1bmNzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuXHQgIH1cblx0XG5cdCAgaWYg
KGZ1bmNzLmxlbmd0aCA9PT0gMCkge1xuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcblx0
ICAgICAgcmV0dXJuIGFyZztcblx0ICAgIH07XG5cdCAgfVxuXHRcblx0ICBpZiAoZnVuY3MubGVu
Z3RoID09PSAxKSB7XG5cdCAgICByZXR1cm4gZnVuY3NbMF07XG5cdCAgfVxuXHRcblx0ICByZXR1
cm4gZnVuY3MucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24g
KCkge1xuXHQgICAgICByZXR1cm4gYShiLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKSk7XG5c
dCAgICB9O1xuXHQgIH0pO1xuXHR9XG5cbi8qKiovIH0sXG4vKiA5NSAqL1xuLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0ZXhwb3J0cy5BY3Rpb25U
eXBlcyA9IHVuZGVmaW5lZDtcblx0ZXhwb3J0c1snZGVmYXVsdCddID0gY3JlYXRlU3RvcmU7XG5c
dFxuXHR2YXIgX2lzUGxhaW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMzKTtcblx0XG5c
dHZhciBfaXNQbGFpbk9iamVjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc1BsYWluT2Jq
ZWN0KTtcblx0XG5cdHZhciBfc3ltYm9sT2JzZXJ2YWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18o
MjI4KTtcblx0XG5cdHZhciBfc3ltYm9sT2JzZXJ2YWJsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KF9zeW1ib2xPYnNlcnZhYmxlKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZh
dWx0Jzogb2JqIH07IH1cblx0XG5cdC8qKlxuXHQgKiBUaGVzZSBhcmUgcHJpdmF0ZSBhY3Rpb24g
dHlwZXMgcmVzZXJ2ZWQgYnkgUmVkdXguXG5cdCAqIEZvciBhbnkgdW5rbm93biBhY3Rpb25zLCB5
b3UgbXVzdCByZXR1cm4gdGhlIGN1cnJlbnQgc3RhdGUuXG5cdCAqIElmIHRoZSBjdXJyZW50IHN0
YXRlIGlzIHVuZGVmaW5lZCwgeW91IG11c3QgcmV0dXJuIHRoZSBpbml0aWFsIHN0YXRlLlxuXHQg
KiBEbyBub3QgcmVmZXJlbmNlIHRoZXNlIGFjdGlvbiB0eXBlcyBkaXJlY3RseSBpbiB5b3VyIGNv
ZGUuXG5cdCAqL1xuXHR2YXIgQWN0aW9uVHlwZXMgPSBleHBvcnRzLkFjdGlvblR5cGVzID0ge1xu
XHQgIElOSVQ6ICdAQHJlZHV4L0lOSVQnXG5cdFxuXHQgIC8qKlxuXHQgICAqIENyZWF0ZXMgYSBS
ZWR1eCBzdG9yZSB0aGF0IGhvbGRzIHRoZSBzdGF0ZSB0cmVlLlxuXHQgICAqIFRoZSBvbmx5IHdh
eSB0byBjaGFuZ2UgdGhlIGRhdGEgaW4gdGhlIHN0b3JlIGlzIHRvIGNhbGwgYGRpc3BhdGNoKClg
IG9uIGl0LlxuXHQgICAqXG5cdCAgICogVGhlcmUgc2hvdWxkIG9ubHkgYmUgYSBzaW5nbGUgc3Rv
cmUgaW4geW91ciBhcHAuIFRvIHNwZWNpZnkgaG93IGRpZmZlcmVudFxuXHQgICAqIHBhcnRzIG9m
IHRoZSBzdGF0ZSB0cmVlIHJlc3BvbmQgdG8gYWN0aW9ucywgeW91IG1heSBjb21iaW5lIHNldmVy
YWwgcmVkdWNlcnNcblx0ICAgKiBpbnRvIGEgc2luZ2xlIHJlZHVjZXIgZnVuY3Rpb24gYnkgdXNp
bmcgYGNvbWJpbmVSZWR1Y2Vyc2AuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBy
ZWR1Y2VyIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXh0IHN0YXRlIHRyZWUsIGdpdmVu
XG5cdCAgICogdGhlIGN1cnJlbnQgc3RhdGUgdHJlZSBhbmQgdGhlIGFjdGlvbiB0byBoYW5kbGUu
XG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge2FueX0gW3ByZWxvYWRlZFN0YXRlXSBUaGUgaW5pdGlh
bCBzdGF0ZS4gWW91IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRcblx0ICAgKiB0byBoeWRyYXRl
IHRoZSBzdGF0ZSBmcm9tIHRoZSBzZXJ2ZXIgaW4gdW5pdmVyc2FsIGFwcHMsIG9yIHRvIHJlc3Rv
cmUgYVxuXHQgICAqIHByZXZpb3VzbHkgc2VyaWFsaXplZCB1c2VyIHNlc3Npb24uXG5cdCAgICog
SWYgeW91IHVzZSBgY29tYmluZVJlZHVjZXJzYCB0byBwcm9kdWNlIHRoZSByb290IHJlZHVjZXIg
ZnVuY3Rpb24sIHRoaXMgbXVzdCBiZVxuXHQgICAqIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHNo
YXBlIGFzIGBjb21iaW5lUmVkdWNlcnNgIGtleXMuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge0Z1
bmN0aW9ufSBbZW5oYW5jZXJdIFRoZSBzdG9yZSBlbmhhbmNlci4gWW91IG1heSBvcHRpb25hbGx5
IHNwZWNpZnkgaXRcblx0ICAgKiB0byBlbmhhbmNlIHRoZSBzdG9yZSB3aXRoIHRoaXJkLXBhcnR5
IGNhcGFiaWxpdGllcyBzdWNoIGFzIG1pZGRsZXdhcmUsXG5cdCAgICogdGltZSB0cmF2ZWwsIHBl
cnNpc3RlbmNlLCBldGMuIFRoZSBvbmx5IHN0b3JlIGVuaGFuY2VyIHRoYXQgc2hpcHMgd2l0aCBS
ZWR1eFxuXHQgICAqIGlzIGBhcHBseU1pZGRsZXdhcmUoKWAuXG5cdCAgICpcblx0ICAgKiBAcmV0
dXJucyB7U3RvcmV9IEEgUmVkdXggc3RvcmUgdGhhdCBsZXRzIHlvdSByZWFkIHRoZSBzdGF0ZSwg
ZGlzcGF0Y2ggYWN0aW9uc1xuXHQgICAqIGFuZCBzdWJzY3JpYmUgdG8gY2hhbmdlcy5cblx0ICAg
Ki9cblx0fTtmdW5jdGlvbiBjcmVhdGVTdG9yZShyZWR1Y2VyLCBwcmVsb2FkZWRTdGF0ZSwgZW5o
YW5jZXIpIHtcblx0ICB2YXIgX3JlZjI7XG5cdFxuXHQgIGlmICh0eXBlb2YgcHJlbG9hZGVkU3Rh
dGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGVuaGFuY2VyID09PSAndW5kZWZpbmVkJykge1xu
XHQgICAgZW5oYW5jZXIgPSBwcmVsb2FkZWRTdGF0ZTtcblx0ICAgIHByZWxvYWRlZFN0YXRlID0g
dW5kZWZpbmVkO1xuXHQgIH1cblx0XG5cdCAgaWYgKHR5cGVvZiBlbmhhbmNlciAhPT0gJ3VuZGVm
aW5lZCcpIHtcblx0ICAgIGlmICh0eXBlb2YgZW5oYW5jZXIgIT09ICdmdW5jdGlvbicpIHtcblx0
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB0aGUgZW5oYW5jZXIgdG8gYmUgYSBmdW5j
dGlvbi4nKTtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gZW5oYW5jZXIoY3JlYXRlU3RvcmUp
KHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlKTtcblx0ICB9XG5cdFxuXHQgIGlmICh0eXBlb2YgcmVk
dWNlciAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB0
aGUgcmVkdWNlciB0byBiZSBhIGZ1bmN0aW9uLicpO1xuXHQgIH1cblx0XG5cdCAgdmFyIGN1cnJl
bnRSZWR1Y2VyID0gcmVkdWNlcjtcblx0ICB2YXIgY3VycmVudFN0YXRlID0gcHJlbG9hZGVkU3Rh
dGU7XG5cdCAgdmFyIGN1cnJlbnRMaXN0ZW5lcnMgPSBbXTtcblx0ICB2YXIgbmV4dExpc3RlbmVy
cyA9IGN1cnJlbnRMaXN0ZW5lcnM7XG5cdCAgdmFyIGlzRGlzcGF0Y2hpbmcgPSBmYWxzZTtcblx0
XG5cdCAgZnVuY3Rpb24gZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3RlbmVycygpIHtcblx0ICAgIGlm
IChuZXh0TGlzdGVuZXJzID09PSBjdXJyZW50TGlzdGVuZXJzKSB7XG5cdCAgICAgIG5leHRMaXN0
ZW5lcnMgPSBjdXJyZW50TGlzdGVuZXJzLnNsaWNlKCk7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0
ICAvKipcblx0ICAgKiBSZWFkcyB0aGUgc3RhdGUgdHJlZSBtYW5hZ2VkIGJ5IHRoZSBzdG9yZS5c
blx0ICAgKlxuXHQgICAqIEByZXR1cm5zIHthbnl9IFRoZSBjdXJyZW50IHN0YXRlIHRyZWUgb2Yg
eW91ciBhcHBsaWNhdGlvbi5cblx0ICAgKi9cblx0ICBmdW5jdGlvbiBnZXRTdGF0ZSgpIHtcblx0
ICAgIHJldHVybiBjdXJyZW50U3RhdGU7XG5cdCAgfVxuXHRcblx0ICAvKipcblx0ICAgKiBBZGRz
IGEgY2hhbmdlIGxpc3RlbmVyLiBJdCB3aWxsIGJlIGNhbGxlZCBhbnkgdGltZSBhbiBhY3Rpb24g
aXMgZGlzcGF0Y2hlZCxcblx0ICAgKiBhbmQgc29tZSBwYXJ0IG9mIHRoZSBzdGF0ZSB0cmVlIG1h
eSBwb3RlbnRpYWxseSBoYXZlIGNoYW5nZWQuIFlvdSBtYXkgdGhlblxuXHQgICAqIGNhbGwgYGdl
dFN0YXRlKClgIHRvIHJlYWQgdGhlIGN1cnJlbnQgc3RhdGUgdHJlZSBpbnNpZGUgdGhlIGNhbGxi
YWNrLlxuXHQgICAqXG5cdCAgICogWW91IG1heSBjYWxsIGBkaXNwYXRjaCgpYCBmcm9tIGEgY2hh
bmdlIGxpc3RlbmVyLCB3aXRoIHRoZSBmb2xsb3dpbmdcblx0ICAgKiBjYXZlYXRzOlxuXHQgICAq
XG5cdCAgICogMS4gVGhlIHN1YnNjcmlwdGlvbnMgYXJlIHNuYXBzaG90dGVkIGp1c3QgYmVmb3Jl
IGV2ZXJ5IGBkaXNwYXRjaCgpYCBjYWxsLlxuXHQgICAqIElmIHlvdSBzdWJzY3JpYmUgb3IgdW5z
dWJzY3JpYmUgd2hpbGUgdGhlIGxpc3RlbmVycyBhcmUgYmVpbmcgaW52b2tlZCwgdGhpc1xuXHQg
ICAqIHdpbGwgbm90IGhhdmUgYW55IGVmZmVjdCBvbiB0aGUgYGRpc3BhdGNoKClgIHRoYXQgaXMg
Y3VycmVudGx5IGluIHByb2dyZXNzLlxuXHQgICAqIEhvd2V2ZXIsIHRoZSBuZXh0IGBkaXNwYXRj
aCgpYCBjYWxsLCB3aGV0aGVyIG5lc3RlZCBvciBub3QsIHdpbGwgdXNlIGEgbW9yZVxuXHQgICAq
IHJlY2VudCBzbmFwc2hvdCBvZiB0aGUgc3Vic2NyaXB0aW9uIGxpc3QuXG5cdCAgICpcblx0ICAg
KiAyLiBUaGUgbGlzdGVuZXIgc2hvdWxkIG5vdCBleHBlY3QgdG8gc2VlIGFsbCBzdGF0ZSBjaGFu
Z2VzLCBhcyB0aGUgc3RhdGVcblx0ICAgKiBtaWdodCBoYXZlIGJlZW4gdXBkYXRlZCBtdWx0aXBs
ZSB0aW1lcyBkdXJpbmcgYSBuZXN0ZWQgYGRpc3BhdGNoKClgIGJlZm9yZVxuXHQgICAqIHRoZSBs
aXN0ZW5lciBpcyBjYWxsZWQuIEl0IGlzLCBob3dldmVyLCBndWFyYW50ZWVkIHRoYXQgYWxsIHN1
YnNjcmliZXJzXG5cdCAgICogcmVnaXN0ZXJlZCBiZWZvcmUgdGhlIGBkaXNwYXRjaCgpYCBzdGFy
dGVkIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGxhdGVzdFxuXHQgICAqIHN0YXRlIGJ5IHRoZSB0
aW1lIGl0IGV4aXRzLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtGdW5jdGlvbn0gbGlzdGVuZXIg
QSBjYWxsYmFjayB0byBiZSBpbnZva2VkIG9uIGV2ZXJ5IGRpc3BhdGNoLlxuXHQgICAqIEByZXR1
cm5zIHtGdW5jdGlvbn0gQSBmdW5jdGlvbiB0byByZW1vdmUgdGhpcyBjaGFuZ2UgbGlzdGVuZXIu
XG5cdCAgICovXG5cdCAgZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG5cdCAgICBpZiAo
dHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgIHRocm93IG5ldyBFcnJv
cignRXhwZWN0ZWQgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcblx0ICAgIH1cblx0XG5c
dCAgICB2YXIgaXNTdWJzY3JpYmVkID0gdHJ1ZTtcblx0XG5cdCAgICBlbnN1cmVDYW5NdXRhdGVO
ZXh0TGlzdGVuZXJzKCk7XG5cdCAgICBuZXh0TGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuXHRc
blx0ICAgIHJldHVybiBmdW5jdGlvbiB1bnN1YnNjcmliZSgpIHtcblx0ICAgICAgaWYgKCFpc1N1
YnNjcmliZWQpIHtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGlz
U3Vic2NyaWJlZCA9IGZhbHNlO1xuXHRcblx0ICAgICAgZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3Rl
bmVycygpO1xuXHQgICAgICB2YXIgaW5kZXggPSBuZXh0TGlzdGVuZXJzLmluZGV4T2YobGlzdGVu
ZXIpO1xuXHQgICAgICBuZXh0TGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG5cdCAgICB9O1xu
XHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICogRGlzcGF0Y2hlcyBhbiBhY3Rpb24uIEl0IGlzIHRo
ZSBvbmx5IHdheSB0byB0cmlnZ2VyIGEgc3RhdGUgY2hhbmdlLlxuXHQgICAqXG5cdCAgICogVGhl
IGByZWR1Y2VyYCBmdW5jdGlvbiwgdXNlZCB0byBjcmVhdGUgdGhlIHN0b3JlLCB3aWxsIGJlIGNh
bGxlZCB3aXRoIHRoZVxuXHQgICAqIGN1cnJlbnQgc3RhdGUgdHJlZSBhbmQgdGhlIGdpdmVuIGBh
Y3Rpb25gLiBJdHMgcmV0dXJuIHZhbHVlIHdpbGxcblx0ICAgKiBiZSBjb25zaWRlcmVkIHRoZSAq
Km5leHQqKiBzdGF0ZSBvZiB0aGUgdHJlZSwgYW5kIHRoZSBjaGFuZ2UgbGlzdGVuZXJzXG5cdCAg
ICogd2lsbCBiZSBub3RpZmllZC5cblx0ICAgKlxuXHQgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0
aW9uIG9ubHkgc3VwcG9ydHMgcGxhaW4gb2JqZWN0IGFjdGlvbnMuIElmIHlvdSB3YW50IHRvXG5c
dCAgICogZGlzcGF0Y2ggYSBQcm9taXNlLCBhbiBPYnNlcnZhYmxlLCBhIHRodW5rLCBvciBzb21l
dGhpbmcgZWxzZSwgeW91IG5lZWQgdG9cblx0ICAgKiB3cmFwIHlvdXIgc3RvcmUgY3JlYXRpbmcg
ZnVuY3Rpb24gaW50byB0aGUgY29ycmVzcG9uZGluZyBtaWRkbGV3YXJlLiBGb3Jcblx0ICAgKiBl
eGFtcGxlLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBgcmVkdXgtdGh1bmtgIHBhY2th
Z2UuIEV2ZW4gdGhlXG5cdCAgICogbWlkZGxld2FyZSB3aWxsIGV2ZW50dWFsbHkgZGlzcGF0Y2gg
cGxhaW4gb2JqZWN0IGFjdGlvbnMgdXNpbmcgdGhpcyBtZXRob2QuXG5cdCAgICpcblx0ICAgKiBA
cGFyYW0ge09iamVjdH0gYWN0aW9uIEEgcGxhaW4gb2JqZWN0IHJlcHJlc2VudGluZyDigJx3aGF0
IGNoYW5nZWTigJ0uIEl0IGlzXG5cdCAgICogYSBnb29kIGlkZWEgdG8ga2VlcCBhY3Rpb25zIHNl
cmlhbGl6YWJsZSBzbyB5b3UgY2FuIHJlY29yZCBhbmQgcmVwbGF5IHVzZXJcblx0ICAgKiBzZXNz
aW9ucywgb3IgdXNlIHRoZSB0aW1lIHRyYXZlbGxpbmcgYHJlZHV4LWRldnRvb2xzYC4gQW4gYWN0
aW9uIG11c3QgaGF2ZVxuXHQgICAqIGEgYHR5cGVgIHByb3BlcnR5IHdoaWNoIG1heSBub3QgYmUg
YHVuZGVmaW5lZGAuIEl0IGlzIGEgZ29vZCBpZGVhIHRvIHVzZVxuXHQgICAqIHN0cmluZyBjb25z
dGFudHMgZm9yIGFjdGlvbiB0eXBlcy5cblx0ICAgKlxuXHQgICAqIEByZXR1cm5zIHtPYmplY3R9
IEZvciBjb252ZW5pZW5jZSwgdGhlIHNhbWUgYWN0aW9uIG9iamVjdCB5b3UgZGlzcGF0Y2hlZC5c
blx0ICAgKlxuXHQgICAqIE5vdGUgdGhhdCwgaWYgeW91IHVzZSBhIGN1c3RvbSBtaWRkbGV3YXJl
LCBpdCBtYXkgd3JhcCBgZGlzcGF0Y2goKWAgdG9cblx0ICAgKiByZXR1cm4gc29tZXRoaW5nIGVs
c2UgKGZvciBleGFtcGxlLCBhIFByb21pc2UgeW91IGNhbiBhd2FpdCkuXG5cdCAgICovXG5cdCAg
ZnVuY3Rpb24gZGlzcGF0Y2goYWN0aW9uKSB7XG5cdCAgICBpZiAoISgwLCBfaXNQbGFpbk9iamVj
dDJbJ2RlZmF1bHQnXSkoYWN0aW9uKSkge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjdGlv
bnMgbXVzdCBiZSBwbGFpbiBvYmplY3RzLiAnICsgJ1VzZSBjdXN0b20gbWlkZGxld2FyZSBmb3Ig
YXN5bmMgYWN0aW9ucy4nKTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAodHlwZW9mIGFjdGlvbi50
eXBlID09PSAndW5kZWZpbmVkJykge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjdGlvbnMg
bWF5IG5vdCBoYXZlIGFuIHVuZGVmaW5lZCBcInR5cGVcIiBwcm9wZXJ0eS4gJyArICdIYXZlIHlv
dSBtaXNzcGVsbGVkIGEgY29uc3RhbnQ/Jyk7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGlzRGlz
cGF0Y2hpbmcpIHtcblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWR1Y2VycyBtYXkgbm90IGRp
c3BhdGNoIGFjdGlvbnMuJyk7XG5cdCAgICB9XG5cdFxuXHQgICAgdHJ5IHtcblx0ICAgICAgaXNE
aXNwYXRjaGluZyA9IHRydWU7XG5cdCAgICAgIGN1cnJlbnRTdGF0ZSA9IGN1cnJlbnRSZWR1Y2Vy
KGN1cnJlbnRTdGF0ZSwgYWN0aW9uKTtcblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIGlzRGlz
cGF0Y2hpbmcgPSBmYWxzZTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgbGlzdGVuZXJzID0gY3Vy
cmVudExpc3RlbmVycyA9IG5leHRMaXN0ZW5lcnM7XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuXHQgICAgICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5l
cnNbaV07XG5cdCAgICAgIGxpc3RlbmVyKCk7XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIGFj
dGlvbjtcblx0ICB9XG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlcGxhY2VzIHRoZSByZWR1Y2VyIGN1
cnJlbnRseSB1c2VkIGJ5IHRoZSBzdG9yZSB0byBjYWxjdWxhdGUgdGhlIHN0YXRlLlxuXHQgICAq
XG5cdCAgICogWW91IG1pZ2h0IG5lZWQgdGhpcyBpZiB5b3VyIGFwcCBpbXBsZW1lbnRzIGNvZGUg
c3BsaXR0aW5nIGFuZCB5b3Ugd2FudCB0b1xuXHQgICAqIGxvYWQgc29tZSBvZiB0aGUgcmVkdWNl
cnMgZHluYW1pY2FsbHkuIFlvdSBtaWdodCBhbHNvIG5lZWQgdGhpcyBpZiB5b3Vcblx0ICAgKiBp
bXBsZW1lbnQgYSBob3QgcmVsb2FkaW5nIG1lY2hhbmlzbSBmb3IgUmVkdXguXG5cdCAgICpcblx0
ICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBuZXh0UmVkdWNlciBUaGUgcmVkdWNlciBmb3IgdGhlIHN0
b3JlIHRvIHVzZSBpbnN0ZWFkLlxuXHQgICAqIEByZXR1cm5zIHt2b2lkfVxuXHQgICAqL1xuXHQg
IGZ1bmN0aW9uIHJlcGxhY2VSZWR1Y2VyKG5leHRSZWR1Y2VyKSB7XG5cdCAgICBpZiAodHlwZW9m
IG5leHRSZWR1Y2VyICE9PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgIHRocm93IG5ldyBFcnJvcign
RXhwZWN0ZWQgdGhlIG5leHRSZWR1Y2VyIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG5cdCAgICB9XG5c
dFxuXHQgICAgY3VycmVudFJlZHVjZXIgPSBuZXh0UmVkdWNlcjtcblx0ICAgIGRpc3BhdGNoKHsg
dHlwZTogQWN0aW9uVHlwZXMuSU5JVCB9KTtcblx0ICB9XG5cdFxuXHQgIC8qKlxuXHQgICAqIElu
dGVyb3BlcmFiaWxpdHkgcG9pbnQgZm9yIG9ic2VydmFibGUvcmVhY3RpdmUgbGlicmFyaWVzLlxu
XHQgICAqIEByZXR1cm5zIHtvYnNlcnZhYmxlfSBBIG1pbmltYWwgb2JzZXJ2YWJsZSBvZiBzdGF0
ZSBjaGFuZ2VzLlxuXHQgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIG9ic2VydmFi
bGUgcHJvcG9zYWw6XG5cdCAgICogaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2Jz
ZXJ2YWJsZVxuXHQgICAqL1xuXHQgIGZ1bmN0aW9uIG9ic2VydmFibGUoKSB7XG5cdCAgICB2YXIg
X3JlZjtcblx0XG5cdCAgICB2YXIgb3V0ZXJTdWJzY3JpYmUgPSBzdWJzY3JpYmU7XG5cdCAgICBy
ZXR1cm4gX3JlZiA9IHtcblx0ICAgICAgLyoqXG5cdCAgICAgICAqIFRoZSBtaW5pbWFsIG9ic2Vy
dmFibGUgc3Vic2NyaXB0aW9uIG1ldGhvZC5cblx0ICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9i
c2VydmVyIEFueSBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCBhcyBhbiBvYnNlcnZlci5cblx0ICAg
ICAgICogVGhlIG9ic2VydmVyIG9iamVjdCBzaG91bGQgaGF2ZSBhIGBuZXh0YCBtZXRob2QuXG5c
dCAgICAgICAqIEByZXR1cm5zIHtzdWJzY3JpcHRpb259IEFuIG9iamVjdCB3aXRoIGFuIGB1bnN1
YnNjcmliZWAgbWV0aG9kIHRoYXQgY2FuXG5cdCAgICAgICAqIGJlIHVzZWQgdG8gdW5zdWJzY3Jp
YmUgdGhlIG9ic2VydmFibGUgZnJvbSB0aGUgc3RvcmUsIGFuZCBwcmV2ZW50IGZ1cnRoZXJcblx0
ICAgICAgICogZW1pc3Npb24gb2YgdmFsdWVzIGZyb20gdGhlIG9ic2VydmFibGUuXG5cdCAgICAg
ICAqL1xuXHQgICAgICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNjcmliZShvYnNlcnZlcikge1xu
XHQgICAgICAgIGlmICh0eXBlb2Ygb2JzZXJ2ZXIgIT09ICdvYmplY3QnKSB7XG5cdCAgICAgICAg
ICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCB0aGUgb2JzZXJ2ZXIgdG8gYmUgYW4gb2Jq
ZWN0LicpO1xuXHQgICAgICAgIH1cblx0XG5cdCAgICAgICAgZnVuY3Rpb24gb2JzZXJ2ZVN0YXRl
KCkge1xuXHQgICAgICAgICAgaWYgKG9ic2VydmVyLm5leHQpIHtcblx0ICAgICAgICAgICAgb2Jz
ZXJ2ZXIubmV4dChnZXRTdGF0ZSgpKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdFxu
XHQgICAgICAgIG9ic2VydmVTdGF0ZSgpO1xuXHQgICAgICAgIHZhciB1bnN1YnNjcmliZSA9IG91
dGVyU3Vic2NyaWJlKG9ic2VydmVTdGF0ZSk7XG5cdCAgICAgICAgcmV0dXJuIHsgdW5zdWJzY3Jp
YmU6IHVuc3Vic2NyaWJlIH07XG5cdCAgICAgIH1cblx0ICAgIH0sIF9yZWZbX3N5bWJvbE9ic2Vy
dmFibGUyWydkZWZhdWx0J11dID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICByZXR1cm4gdGhpcztc
blx0ICAgIH0sIF9yZWY7XG5cdCAgfVxuXHRcblx0ICAvLyBXaGVuIGEgc3RvcmUgaXMgY3JlYXRl
ZCwgYW4gXCJJTklUXCIgYWN0aW9uIGlzIGRpc3BhdGNoZWQgc28gdGhhdCBldmVyeVxuXHQgIC8v
IHJlZHVjZXIgcmV0dXJucyB0aGVpciBpbml0aWFsIHN0YXRlLiBUaGlzIGVmZmVjdGl2ZWx5IHBv
cHVsYXRlc1xuXHQgIC8vIHRoZSBpbml0aWFsIHN0YXRlIHRyZWUuXG5cdCAgZGlzcGF0Y2goeyB0
eXBlOiBBY3Rpb25UeXBlcy5JTklUIH0pO1xuXHRcblx0ICByZXR1cm4gX3JlZjIgPSB7XG5cdCAg
ICBkaXNwYXRjaDogZGlzcGF0Y2gsXG5cdCAgICBzdWJzY3JpYmU6IHN1YnNjcmliZSxcblx0ICAg
IGdldFN0YXRlOiBnZXRTdGF0ZSxcblx0ICAgIHJlcGxhY2VSZWR1Y2VyOiByZXBsYWNlUmVkdWNl
clxuXHQgIH0sIF9yZWYyW19zeW1ib2xPYnNlcnZhYmxlMlsnZGVmYXVsdCddXSA9IG9ic2VydmFi
bGUsIF9yZWYyO1xuXHR9XG5cbi8qKiovIH0sXG4vKiA5NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9k
dWxlID0gdHJ1ZTtcblx0ZXhwb3J0c1snZGVmYXVsdCddID0gd2FybmluZztcblx0LyoqXG5cdCAq
IFByaW50cyBhIHdhcm5pbmcgaW4gdGhlIGNvbnNvbGUgaWYgaXQgZXhpc3RzLlxuXHQgKlxuXHQg
KiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBUaGUgd2FybmluZyBtZXNzYWdlLlxuXHQgKiBAcmV0
dXJucyB7dm9pZH1cblx0ICovXG5cdGZ1bmN0aW9uIHdhcm5pbmcobWVzc2FnZSkge1xuXHQgIC8q
IGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cblx0ICBpZiAodHlwZW9mIGNvbnNvbGUgIT09
ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSAnZnVuY3Rpb24nKSB7XG5c
dCAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuXHQgIH1cblx0ICAvKiBlc2xpbnQtZW5hYmxl
IG5vLWNvbnNvbGUgKi9cblx0ICB0cnkge1xuXHQgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3du
IGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCBpZiB5b3UgZW5hYmxlXG5cdCAgICAvLyBcImJyZWFr
IG9uIGFsbCBleGNlcHRpb25zXCIgaW4geW91ciBjb25zb2xlLFxuXHQgICAgLy8gaXQgd291bGQg
cGF1c2UgdGhlIGV4ZWN1dGlvbiBhdCB0aGlzIGxpbmUuXG5cdCAgICB0aHJvdyBuZXcgRXJyb3Io
bWVzc2FnZSk7XG5cdCAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1lbXB0eSAqL1xuXHQgIH0gY2F0
Y2ggKGUpIHt9XG5cdCAgLyogZXNsaW50LWVuYWJsZSBuby1lbXB0eSAqL1xuXHR9XG5cbi8qKiov
IH0sXG4vKiA5NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9hc3NpZ24gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIGVtcHR5T2JqZWN0ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyNCk7XG5cdHZhciBfaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0
XG5cdGlmIChmYWxzZSkge1xuXHQgIHZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fy
bmluZycpO1xuXHR9XG5cdFxuXHR2YXIgTUlYSU5TX0tFWSA9ICdtaXhpbnMnO1xuXHRcblx0Ly8g
SGVscGVyIGZ1bmN0aW9uIHRvIGFsbG93IHRoZSBjcmVhdGlvbiBvZiBhbm9ueW1vdXMgZnVuY3Rp
b25zIHdoaWNoIGRvIG5vdFxuXHQvLyBoYXZlIC5uYW1lIHNldCB0byB0aGUgbmFtZSBvZiB0aGUg
dmFyaWFibGUgYmVpbmcgYXNzaWduZWQgdG8uXG5cdGZ1bmN0aW9uIGlkZW50aXR5KGZuKSB7XG5c
dCAgcmV0dXJuIGZuO1xuXHR9XG5cdFxuXHR2YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXM7
XG5cdGlmIChmYWxzZSkge1xuXHQgIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge1xuXHQg
ICAgcHJvcDogJ3Byb3AnLFxuXHQgICAgY29udGV4dDogJ2NvbnRleHQnLFxuXHQgICAgY2hpbGRD
b250ZXh0OiAnY2hpbGQgY29udGV4dCdcblx0ICB9O1xuXHR9IGVsc2Uge1xuXHQgIFJlYWN0UHJv
cFR5cGVMb2NhdGlvbk5hbWVzID0ge307XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGZhY3RvcnkoUmVh
Y3RDb21wb25lbnQsIGlzVmFsaWRFbGVtZW50LCBSZWFjdE5vb3BVcGRhdGVRdWV1ZSkge1xuXHQg
IC8qKlxuXHQgICAqIFBvbGljaWVzIHRoYXQgZGVzY3JpYmUgbWV0aG9kcyBpbiBgUmVhY3RDbGFz
c0ludGVyZmFjZWAuXG5cdCAgICovXG5cdFxuXHQgIHZhciBpbmplY3RlZE1peGlucyA9IFtdO1xu
XHRcblx0ICAvKipcblx0ICAgKiBDb21wb3NpdGUgY29tcG9uZW50cyBhcmUgaGlnaGVyLWxldmVs
IGNvbXBvbmVudHMgdGhhdCBjb21wb3NlIG90aGVyIGNvbXBvc2l0ZVxuXHQgICAqIG9yIGhvc3Qg
Y29tcG9uZW50cy5cblx0ICAgKlxuXHQgICAqIFRvIGNyZWF0ZSBhIG5ldyB0eXBlIG9mIGBSZWFj
dENsYXNzYCwgcGFzcyBhIHNwZWNpZmljYXRpb24gb2Zcblx0ICAgKiB5b3VyIG5ldyBjbGFzcyB0
byBgUmVhY3QuY3JlYXRlQ2xhc3NgLiBUaGUgb25seSByZXF1aXJlbWVudCBvZiB5b3VyIGNsYXNz
XG5cdCAgICogc3BlY2lmaWNhdGlvbiBpcyB0aGF0IHlvdSBpbXBsZW1lbnQgYSBgcmVuZGVyYCBt
ZXRob2QuXG5cdCAgICpcblx0ICAgKiAgIHZhciBNeUNvbXBvbmVudCA9IFJlYWN0LmNyZWF0ZUNs
YXNzKHtcblx0ICAgKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcblx0ICAgKiAgICAgICByZXR1
cm4gPGRpdj5IZWxsbyBXb3JsZDwvZGl2Pjtcblx0ICAgKiAgICAgfVxuXHQgICAqICAgfSk7XG5c
dCAgICpcblx0ICAgKiBUaGUgY2xhc3Mgc3BlY2lmaWNhdGlvbiBzdXBwb3J0cyBhIHNwZWNpZmlj
IHByb3RvY29sIG9mIG1ldGhvZHMgdGhhdCBoYXZlXG5cdCAgICogc3BlY2lhbCBtZWFuaW5nIChl
LmcuIGByZW5kZXJgKS4gU2VlIGBSZWFjdENsYXNzSW50ZXJmYWNlYCBmb3Jcblx0ICAgKiBtb3Jl
IHRoZSBjb21wcmVoZW5zaXZlIHByb3RvY29sLiBBbnkgb3RoZXIgcHJvcGVydGllcyBhbmQgbWV0
aG9kcyBpbiB0aGVcblx0ICAgKiBjbGFzcyBzcGVjaWZpY2F0aW9uIHdpbGwgYmUgYXZhaWxhYmxl
IG9uIHRoZSBwcm90b3R5cGUuXG5cdCAgICpcblx0ICAgKiBAaW50ZXJmYWNlIFJlYWN0Q2xhc3NJ
bnRlcmZhY2Vcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICB2YXIgUmVhY3RDbGFzc0lu
dGVyZmFjZSA9IHtcblx0ICAgIC8qKlxuXHQgICAgICogQW4gYXJyYXkgb2YgTWl4aW4gb2JqZWN0
cyB0byBpbmNsdWRlIHdoZW4gZGVmaW5pbmcgeW91ciBjb21wb25lbnQuXG5cdCAgICAgKlxuXHQg
ICAgICogQHR5cGUge2FycmF5fVxuXHQgICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9cblx0ICAg
IG1peGluczogJ0RFRklORV9NQU5ZJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIEFuIG9iamVj
dCBjb250YWluaW5nIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgdGhhdCBzaG91bGQgYmUgZGVmaW5l
ZCBvblxuXHQgICAgICogdGhlIGNvbXBvbmVudCdzIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgaXRz
IHByb3RvdHlwZSAoc3RhdGljIG1ldGhvZHMpLlxuXHQgICAgICpcblx0ICAgICAqIEB0eXBlIHtv
YmplY3R9XG5cdCAgICAgKiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQgICAgc3RhdGljczogJ0RF
RklORV9NQU5ZJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIERlZmluaXRpb24gb2YgcHJvcCB0
eXBlcyBmb3IgdGhpcyBjb21wb25lbnQuXG5cdCAgICAgKlxuXHQgICAgICogQHR5cGUge29iamVj
dH1cblx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAgICBwcm9wVHlwZXM6ICdERUZJ
TkVfTUFOWScsXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBEZWZpbml0aW9uIG9mIGNvbnRleHQg
dHlwZXMgZm9yIHRoaXMgY29tcG9uZW50LlxuXHQgICAgICpcblx0ICAgICAqIEB0eXBlIHtvYmpl
Y3R9XG5cdCAgICAgKiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQgICAgY29udGV4dFR5cGVzOiAn
REVGSU5FX01BTlknLFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogRGVmaW5pdGlvbiBvZiBjb250
ZXh0IHR5cGVzIHRoaXMgY29tcG9uZW50IHNldHMgZm9yIGl0cyBjaGlsZHJlbi5cblx0ICAgICAq
XG5cdCAgICAgKiBAdHlwZSB7b2JqZWN0fVxuXHQgICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9c
blx0ICAgIGNoaWxkQ29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLFxuXHRcblx0ICAgIC8vID09
PT0gRGVmaW5pdGlvbiBtZXRob2RzID09PT1cblx0XG5cdCAgICAvKipcblx0ICAgICAqIEludm9r
ZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFZhbHVlcyBpbiB0aGUgbWFwcGluZyB3
aWxsIGJlIHNldCBvblxuXHQgICAgICogYHRoaXMucHJvcHNgIGlmIHRoYXQgcHJvcCBpcyBub3Qg
c3BlY2lmaWVkIChpLmUuIHVzaW5nIGFuIGBpbmAgY2hlY2spLlxuXHQgICAgICpcblx0ICAgICAq
IFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYmVmb3JlIGBnZXRJbml0aWFsU3RhdGVgIGFuZCB0aGVy
ZWZvcmUgY2Fubm90IHJlbHlcblx0ICAgICAqIG9uIGB0aGlzLnN0YXRlYCBvciB1c2UgYHRoaXMu
c2V0U3RhdGVgLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge29iamVjdH1cblx0ICAgICAq
IEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAgICBnZXREZWZhdWx0UHJvcHM6ICdERUZJTkVfTUFO
WV9NRVJHRUQnLFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogSW52b2tlZCBvbmNlIGJlZm9yZSB0
aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSB1c2VkXG5c
dCAgICAgKiBhcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBgdGhpcy5zdGF0ZWAuXG5cdCAgICAgKlxu
XHQgICAgICogICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uKCkge1xuXHQgICAgICogICAgIHJl
dHVybiB7XG5cdCAgICAgKiAgICAgICBpc09uOiBmYWxzZSxcblx0ICAgICAqICAgICAgIGZvb0Jh
ejogbmV3IEJhekZvbygpXG5cdCAgICAgKiAgICAgfVxuXHQgICAgICogICB9XG5cdCAgICAgKlxu
XHQgICAgICogQHJldHVybiB7b2JqZWN0fVxuXHQgICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9c
blx0ICAgIGdldEluaXRpYWxTdGF0ZTogJ0RFRklORV9NQU5ZX01FUkdFRCcsXG5cdFxuXHQgICAg
LyoqXG5cdCAgICAgKiBAcmV0dXJuIHtvYmplY3R9XG5cdCAgICAgKiBAb3B0aW9uYWxcblx0ICAg
ICAqL1xuXHQgICAgZ2V0Q2hpbGRDb250ZXh0OiAnREVGSU5FX01BTllfTUVSR0VEJyxcblx0XG5c
dCAgICAvKipcblx0ICAgICAqIFVzZXMgcHJvcHMgZnJvbSBgdGhpcy5wcm9wc2AgYW5kIHN0YXRl
IGZyb20gYHRoaXMuc3RhdGVgIHRvIHJlbmRlciB0aGVcblx0ICAgICAqIHN0cnVjdHVyZSBvZiB0
aGUgY29tcG9uZW50LlxuXHQgICAgICpcblx0ICAgICAqIE5vIGd1YXJhbnRlZXMgYXJlIG1hZGUg
YWJvdXQgd2hlbiBvciBob3cgb2Z0ZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgc29cblx0ICAg
ICAqIGl0IG11c3Qgbm90IGhhdmUgc2lkZSBlZmZlY3RzLlxuXHQgICAgICpcblx0ICAgICAqICAg
cmVuZGVyOiBmdW5jdGlvbigpIHtcblx0ICAgICAqICAgICB2YXIgbmFtZSA9IHRoaXMucHJvcHMu
bmFtZTtcblx0ICAgICAqICAgICByZXR1cm4gPGRpdj5IZWxsbywge25hbWV9ITwvZGl2Pjtcblx0
ICAgICAqICAgfVxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fVxu
XHQgICAgICogQHJlcXVpcmVkXG5cdCAgICAgKi9cblx0ICAgIHJlbmRlcjogJ0RFRklORV9PTkNF
Jyxcblx0XG5cdCAgICAvLyA9PT09IERlbGVnYXRlIG1ldGhvZHMgPT09PVxuXHRcblx0ICAgIC8q
KlxuXHQgICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGx5IGNyZWF0
ZWQgYW5kIGFib3V0IHRvIGJlIG1vdW50ZWQuXG5cdCAgICAgKiBUaGlzIG1heSBoYXZlIHNpZGUg
ZWZmZWN0cywgYnV0IGFueSBleHRlcm5hbCBzdWJzY3JpcHRpb25zIG9yIGRhdGEgY3JlYXRlZFxu
XHQgICAgICogYnkgdGhpcyBtZXRob2QgbXVzdCBiZSBjbGVhbmVkIHVwIGluIGBjb21wb25lbnRX
aWxsVW5tb3VudGAuXG5cdCAgICAgKlxuXHQgICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9cblx0
ICAgIGNvbXBvbmVudFdpbGxNb3VudDogJ0RFRklORV9NQU5ZJyxcblx0XG5cdCAgICAvKipcblx0
ICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIG1vdW50ZWQgYW5kIGhh
cyBhIERPTSByZXByZXNlbnRhdGlvbi5cblx0ICAgICAqIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGd1
YXJhbnRlZSB0aGF0IHRoZSBET00gbm9kZSBpcyBpbiB0aGUgZG9jdW1lbnQuXG5cdCAgICAgKlxu
XHQgICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gb3BlcmF0ZSBvbiB0aGUgRE9N
IHdoZW4gdGhlIGNvbXBvbmVudCBoYXNcblx0ICAgICAqIGJlZW4gbW91bnRlZCAoaW5pdGlhbGl6
ZWQgYW5kIHJlbmRlcmVkKSBmb3IgdGhlIGZpcnN0IHRpbWUuXG5cdCAgICAgKlxuXHQgICAgICog
QHBhcmFtIHtET01FbGVtZW50fSByb290Tm9kZSBET00gZWxlbWVudCByZXByZXNlbnRpbmcgdGhl
IGNvbXBvbmVudC5cblx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAgICBjb21wb25l
bnREaWRNb3VudDogJ0RFRklORV9NQU5ZJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIEludm9r
ZWQgYmVmb3JlIHRoZSBjb21wb25lbnQgcmVjZWl2ZXMgbmV3IHByb3BzLlxuXHQgICAgICpcblx0
ICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHJlYWN0IHRvIGEgcHJvcCB0cmFu
c2l0aW9uIGJ5IHVwZGF0aW5nIHRoZVxuXHQgICAgICogc3RhdGUgdXNpbmcgYHRoaXMuc2V0U3Rh
dGVgLiBDdXJyZW50IHByb3BzIGFyZSBhY2Nlc3NlZCB2aWEgYHRoaXMucHJvcHNgLlxuXHQgICAg
ICpcblx0ICAgICAqICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogZnVuY3Rpb24obmV4dFBy
b3BzLCBuZXh0Q29udGV4dCkge1xuXHQgICAgICogICAgIHRoaXMuc2V0U3RhdGUoe1xuXHQgICAg
ICogICAgICAgbGlrZXNJbmNyZWFzaW5nOiBuZXh0UHJvcHMubGlrZUNvdW50ID4gdGhpcy5wcm9w
cy5saWtlQ291bnRcblx0ICAgICAqICAgICB9KTtcblx0ICAgICAqICAgfVxuXHQgICAgICpcblx0
ICAgICAqIE5PVEU6IFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgYGNvbXBvbmVudFdpbGxSZWNlaXZl
U3RhdGVgLiBBbiBpbmNvbWluZyBwcm9wXG5cdCAgICAgKiB0cmFuc2l0aW9uIG1heSBjYXVzZSBh
IHN0YXRlIGNoYW5nZSwgYnV0IHRoZSBvcHBvc2l0ZSBpcyBub3QgdHJ1ZS4gSWYgeW91XG5cdCAg
ICAgKiBuZWVkIGl0LCB5b3UgYXJlIHByb2JhYmx5IGxvb2tpbmcgZm9yIGBjb21wb25lbnRXaWxs
VXBkYXRlYC5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG5c
dCAgICAgKiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQgICAgY29tcG9uZW50V2lsbFJlY2VpdmVQ
cm9wczogJ0RFRklORV9NQU5ZJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIEludm9rZWQgd2hp
bGUgZGVjaWRpbmcgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgdXBkYXRlZCBhcyBhIHJlc3Vs
dCBvZlxuXHQgICAgICogcmVjZWl2aW5nIG5ldyBwcm9wcywgc3RhdGUgYW5kL29yIGNvbnRleHQu
XG5cdCAgICAgKlxuXHQgICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gYHJldHVy
biBmYWxzZWAgd2hlbiB5b3UncmUgY2VydGFpbiB0aGF0IHRoZVxuXHQgICAgICogdHJhbnNpdGlv
biB0byB0aGUgbmV3IHByb3BzL3N0YXRlL2NvbnRleHQgd2lsbCBub3QgcmVxdWlyZSBhIGNvbXBv
bmVudFxuXHQgICAgICogdXBkYXRlLlxuXHQgICAgICpcblx0ICAgICAqICAgc2hvdWxkQ29tcG9u
ZW50VXBkYXRlOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpIHtc
blx0ICAgICAqICAgICByZXR1cm4gIWVxdWFsKG5leHRQcm9wcywgdGhpcy5wcm9wcykgfHxcblx0
ICAgICAqICAgICAgICFlcXVhbChuZXh0U3RhdGUsIHRoaXMuc3RhdGUpIHx8XG5cdCAgICAgKiAg
ICAgICAhZXF1YWwobmV4dENvbnRleHQsIHRoaXMuY29udGV4dCk7XG5cdCAgICAgKiAgIH1cblx0
ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG5cdCAgICAgKiBAcGFy
YW0gez9vYmplY3R9IG5leHRTdGF0ZVxuXHQgICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29u
dGV4dFxuXHQgICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IHNo
b3VsZCB1cGRhdGUuXG5cdCAgICAgKiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQgICAgc2hvdWxk
Q29tcG9uZW50VXBkYXRlOiAnREVGSU5FX09OQ0UnLFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICog
SW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgYWJvdXQgdG8gdXBkYXRlIGR1ZSB0byBhIHRy
YW5zaXRpb24gZnJvbVxuXHQgICAgICogYHRoaXMucHJvcHNgLCBgdGhpcy5zdGF0ZWAgYW5kIGB0
aGlzLmNvbnRleHRgIHRvIGBuZXh0UHJvcHNgLCBgbmV4dFN0YXRlYFxuXHQgICAgICogYW5kIGBu
ZXh0Q29udGV4dGAuXG5cdCAgICAgKlxuXHQgICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5p
dHkgdG8gcGVyZm9ybSBwcmVwYXJhdGlvbiBiZWZvcmUgYW4gdXBkYXRlIG9jY3Vycy5cblx0ICAg
ICAqXG5cdCAgICAgKiBOT1RFOiBZb3UgKipjYW5ub3QqKiB1c2UgYHRoaXMuc2V0U3RhdGUoKWAg
aW4gdGhpcyBtZXRob2QuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQ
cm9wc1xuXHQgICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGVcblx0ICAgICAqIEBwYXJh
bSB7P29iamVjdH0gbmV4dENvbnRleHRcblx0ICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAgICovXG5c
dCAgICBjb21wb25lbnRXaWxsVXBkYXRlOiAnREVGSU5FX01BTlknLFxuXHRcblx0ICAgIC8qKlxu
XHQgICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQncyBET00gcmVwcmVzZW50YXRpb24g
aGFzIGJlZW4gdXBkYXRlZC5cblx0ICAgICAqXG5cdCAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBv
cnR1bml0eSB0byBvcGVyYXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhc1xuXHQg
ICAgICogYmVlbiB1cGRhdGVkLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7b2JqZWN0fSBw
cmV2UHJvcHNcblx0ICAgICAqIEBwYXJhbSB7P29iamVjdH0gcHJldlN0YXRlXG5cdCAgICAgKiBA
cGFyYW0gez9vYmplY3R9IHByZXZDb250ZXh0XG5cdCAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9
IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50LlxuXHQgICAg
ICogQG9wdGlvbmFsXG5cdCAgICAgKi9cblx0ICAgIGNvbXBvbmVudERpZFVwZGF0ZTogJ0RFRklO
RV9NQU5ZJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9u
ZW50IGlzIGFib3V0IHRvIGJlIHJlbW92ZWQgZnJvbSBpdHMgcGFyZW50IGFuZCBoYXZlXG5cdCAg
ICAgKiBpdHMgRE9NIHJlcHJlc2VudGF0aW9uIGRlc3Ryb3llZC5cblx0ICAgICAqXG5cdCAgICAg
KiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBkZWFsbG9jYXRlIGFueSBleHRlcm5hbCBy
ZXNvdXJjZXMuXG5cdCAgICAgKlxuXHQgICAgICogTk9URTogVGhlcmUgaXMgbm8gYGNvbXBvbmVu
dERpZFVubW91bnRgIHNpbmNlIHlvdXIgY29tcG9uZW50IHdpbGwgaGF2ZSBiZWVuXG5cdCAgICAg
KiBkZXN0cm95ZWQgYnkgdGhhdCBwb2ludC5cblx0ICAgICAqXG5cdCAgICAgKiBAb3B0aW9uYWxc
blx0ICAgICAqL1xuXHQgICAgY29tcG9uZW50V2lsbFVubW91bnQ6ICdERUZJTkVfTUFOWScsXG5c
dFxuXHQgICAgLy8gPT09PSBBZHZhbmNlZCBtZXRob2RzID09PT1cblx0XG5cdCAgICAvKipcblx0
ICAgICAqIFVwZGF0ZXMgdGhlIGNvbXBvbmVudCdzIGN1cnJlbnRseSBtb3VudGVkIERPTSByZXBy
ZXNlbnRhdGlvbi5cblx0ICAgICAqXG5cdCAgICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVu
dHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS5cblx0ICAg
ICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBvdmVycmlkZSB0aGlzLlxuXHQg
ICAgICpcblx0ICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNh
Y3Rpb25cblx0ICAgICAqIEBpbnRlcm5hbFxuXHQgICAgICogQG92ZXJyaWRhYmxlXG5cdCAgICAg
Ki9cblx0ICAgIHVwZGF0ZUNvbXBvbmVudDogJ09WRVJSSURFX0JBU0UnXG5cdCAgfTtcblx0XG5c
dCAgLyoqXG5cdCAgICogTWFwcGluZyBmcm9tIGNsYXNzIHNwZWNpZmljYXRpb24ga2V5cyB0byBz
cGVjaWFsIHByb2Nlc3NpbmcgZnVuY3Rpb25zLlxuXHQgICAqXG5cdCAgICogQWx0aG91Z2ggdGhl
c2UgYXJlIGRlY2xhcmVkIGxpa2UgaW5zdGFuY2UgcHJvcGVydGllcyBpbiB0aGUgc3BlY2lmaWNh
dGlvblxuXHQgICAqIHdoZW4gZGVmaW5pbmcgY2xhc3NlcyB1c2luZyBgUmVhY3QuY3JlYXRlQ2xh
c3NgLCB0aGV5IGFyZSBhY3R1YWxseSBzdGF0aWNcblx0ICAgKiBhbmQgYXJlIGFjY2Vzc2libGUg
b24gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdGhlIHByb3RvdHlwZS4gRGVzcGl0ZVxuXHQg
ICAqIGJlaW5nIHN0YXRpYywgdGhleSBtdXN0IGJlIGRlZmluZWQgb3V0c2lkZSBvZiB0aGUgXCJz
dGF0aWNzXCIga2V5IHVuZGVyXG5cdCAgICogd2hpY2ggYWxsIG90aGVyIHN0YXRpYyBtZXRob2Rz
IGFyZSBkZWZpbmVkLlxuXHQgICAqL1xuXHQgIHZhciBSRVNFUlZFRF9TUEVDX0tFWVMgPSB7XG5c
dCAgICBkaXNwbGF5TmFtZTogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGRpc3BsYXlOYW1lKSB7XG5c
dCAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XG5cdCAgICB9LFxu
XHQgICAgbWl4aW5zOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgbWl4aW5zKSB7XG5cdCAgICAgIGlm
IChtaXhpbnMpIHtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1peGlucy5sZW5ndGg7
IGkrKykge1xuXHQgICAgICAgICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIG1p
eGluc1tpXSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9LFxuXHQgICAgY2hpbGRD
b250ZXh0VHlwZXM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcykge1xu
XHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0
b3IsIGNoaWxkQ29udGV4dFR5cGVzLCAnY2hpbGRDb250ZXh0Jyk7XG5cdCAgICAgIH1cblx0ICAg
ICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMgPSBfYXNzaWduKFxuXHQgICAgICAgIHt9
LFxuXHQgICAgICAgIENvbnN0cnVjdG9yLmNoaWxkQ29udGV4dFR5cGVzLFxuXHQgICAgICAgIGNo
aWxkQ29udGV4dFR5cGVzXG5cdCAgICAgICk7XG5cdCAgICB9LFxuXHQgICAgY29udGV4dFR5cGVz
OiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzKSB7XG5cdCAgICAgIGlmIChmYWxz
ZSkge1xuXHQgICAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVz
LCAnY29udGV4dCcpO1xuXHQgICAgICB9XG5cdCAgICAgIENvbnN0cnVjdG9yLmNvbnRleHRUeXBl
cyA9IF9hc3NpZ24oXG5cdCAgICAgICAge30sXG5cdCAgICAgICAgQ29uc3RydWN0b3IuY29udGV4
dFR5cGVzLFxuXHQgICAgICAgIGNvbnRleHRUeXBlc1xuXHQgICAgICApO1xuXHQgICAgfSxcblx0
ICAgIC8qKlxuXHQgICAgICogU3BlY2lhbCBjYXNlIGdldERlZmF1bHRQcm9wcyB3aGljaCBzaG91
bGQgbW92ZSBpbnRvIHN0YXRpY3MgYnV0IHJlcXVpcmVzXG5cdCAgICAgKiBhdXRvbWF0aWMgbWVy
Z2luZy5cblx0ICAgICAqL1xuXHQgICAgZ2V0RGVmYXVsdFByb3BzOiBmdW5jdGlvbihDb25zdHJ1
Y3RvciwgZ2V0RGVmYXVsdFByb3BzKSB7XG5cdCAgICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZh
dWx0UHJvcHMpIHtcblx0ICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBjcmVh
dGVNZXJnZWRSZXN1bHRGdW5jdGlvbihcblx0ICAgICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1
bHRQcm9wcyxcblx0ICAgICAgICAgIGdldERlZmF1bHRQcm9wc1xuXHQgICAgICAgICk7XG5cdCAg
ICAgIH0gZWxzZSB7XG5cdCAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gZ2V0
RGVmYXVsdFByb3BzO1xuXHQgICAgICB9XG5cdCAgICB9LFxuXHQgICAgcHJvcFR5cGVzOiBmdW5j
dGlvbihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzKSB7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQg
ICAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzLCAncHJvcCcpO1xu
XHQgICAgICB9XG5cdCAgICAgIENvbnN0cnVjdG9yLnByb3BUeXBlcyA9IF9hc3NpZ24oe30sIENv
bnN0cnVjdG9yLnByb3BUeXBlcywgcHJvcFR5cGVzKTtcblx0ICAgIH0sXG5cdCAgICBzdGF0aWNz
OiBmdW5jdGlvbihDb25zdHJ1Y3Rvciwgc3RhdGljcykge1xuXHQgICAgICBtaXhTdGF0aWNTcGVj
SW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3RhdGljcyk7XG5cdCAgICB9LFxuXHQgICAgYXV0
b2JpbmQ6IGZ1bmN0aW9uKCkge31cblx0ICB9O1xuXHRcblx0ICBmdW5jdGlvbiB2YWxpZGF0ZVR5
cGVEZWYoQ29uc3RydWN0b3IsIHR5cGVEZWYsIGxvY2F0aW9uKSB7XG5cdCAgICBmb3IgKHZhciBw
cm9wTmFtZSBpbiB0eXBlRGVmKSB7XG5cdCAgICAgIGlmICh0eXBlRGVmLmhhc093blByb3BlcnR5
KHByb3BOYW1lKSkge1xuXHQgICAgICAgIC8vIHVzZSBhIHdhcm5pbmcgaW5zdGVhZCBvZiBhbiBf
aW52YXJpYW50IHNvIGNvbXBvbmVudHNcblx0ICAgICAgICAvLyBkb24ndCBzaG93IHVwIGluIHBy
b2QgYnV0IG9ubHkgaW4gX19ERVZfX1xuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAg
ICAgd2FybmluZyhcblx0ICAgICAgICAgICAgdHlwZW9mIHR5cGVEZWZbcHJvcE5hbWVdID09PSAn
ZnVuY3Rpb24nLFxuXHQgICAgICAgICAgICAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBp
dCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICtcblx0ICAgICAgICAgICAgICAn
UmVhY3QuUHJvcFR5cGVzLicsXG5cdCAgICAgICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1l
IHx8ICdSZWFjdENsYXNzJyxcblx0ICAgICAgICAgICAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFt
ZXNbbG9jYXRpb25dLFxuXHQgICAgICAgICAgICBwcm9wTmFtZVxuXHQgICAgICAgICAgKTtcblx0
ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIHZh
bGlkYXRlTWV0aG9kT3ZlcnJpZGUoaXNBbHJlYWR5RGVmaW5lZCwgbmFtZSkge1xuXHQgICAgdmFy
IHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpXG5c
dCAgICAgID8gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXVxuXHQgICAgICA6IG51bGw7XG5cdFxu
XHQgICAgLy8gRGlzYWxsb3cgb3ZlcnJpZGluZyBvZiBiYXNlIGNsYXNzIG1ldGhvZHMgdW5sZXNz
IGV4cGxpY2l0bHkgYWxsb3dlZC5cblx0ICAgIGlmIChSZWFjdENsYXNzTWl4aW4uaGFzT3duUHJv
cGVydHkobmFtZSkpIHtcblx0ICAgICAgX2ludmFyaWFudChcblx0ICAgICAgICBzcGVjUG9saWN5
ID09PSAnT1ZFUlJJREVfQkFTRScsXG5cdCAgICAgICAgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlv
dSBhcmUgYXR0ZW1wdGluZyB0byBvdmVycmlkZSAnICtcblx0ICAgICAgICAgICdgJXNgIGZyb20g
eW91ciBjbGFzcyBzcGVjaWZpY2F0aW9uLiBFbnN1cmUgdGhhdCB5b3VyIG1ldGhvZCBuYW1lcyAn
ICtcblx0ICAgICAgICAgICdkbyBub3Qgb3ZlcmxhcCB3aXRoIFJlYWN0IG1ldGhvZHMuJyxcblx0
ICAgICAgICBuYW1lXG5cdCAgICAgICk7XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gRGlzYWxsb3cg
ZGVmaW5pbmcgbWV0aG9kcyBtb3JlIHRoYW4gb25jZSB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2Vk
LlxuXHQgICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcblx0ICAgICAgX2ludmFyaWFudChcblx0
ICAgICAgICBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknIHx8IHNwZWNQb2xpY3kgPT09ICdE
RUZJTkVfTUFOWV9NRVJHRUQnLFxuXHQgICAgICAgICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3Ug
YXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgK1xuXHQgICAgICAgICAgJ2Alc2Agb24geW91ciBj
b21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5IGJlIGR1ZSAnICtcblx0
ICAgICAgICAgICd0byBhIG1peGluLicsXG5cdCAgICAgICAgbmFtZVxuXHQgICAgICApO1xuXHQg
ICAgfVxuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICogTWl4aW4gaGVscGVyIHdoaWNoIGhhbmRs
ZXMgcG9saWN5IHZhbGlkYXRpb24gYW5kIHJlc2VydmVkXG5cdCAgICogc3BlY2lmaWNhdGlvbiBr
ZXlzIHdoZW4gYnVpbGRpbmcgUmVhY3QgY2xhc3Nlcy5cblx0ICAgKi9cblx0ICBmdW5jdGlvbiBt
aXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYykge1xuXHQgICAgaWYgKCFzcGVj
KSB7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIHZhciB0eXBlb2ZTcGVjID0gdHlw
ZW9mIHNwZWM7XG5cdCAgICAgICAgdmFyIGlzTWl4aW5WYWxpZCA9IHR5cGVvZlNwZWMgPT09ICdv
YmplY3QnICYmIHNwZWMgIT09IG51bGw7XG5cdFxuXHQgICAgICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG5cdCAgICAgICAgICB3YXJuaW5nKFxuXHQgICAg
ICAgICAgICBpc01peGluVmFsaWQsXG5cdCAgICAgICAgICAgIFwiJXM6IFlvdSdyZSBhdHRlbXB0
aW5nIHRvIGluY2x1ZGUgYSBtaXhpbiB0aGF0IGlzIGVpdGhlciBudWxsIFwiICtcblx0ICAgICAg
ICAgICAgICAnb3Igbm90IGFuIG9iamVjdC4gQ2hlY2sgdGhlIG1peGlucyBpbmNsdWRlZCBieSB0
aGUgY29tcG9uZW50LCAnICtcblx0ICAgICAgICAgICAgICAnYXMgd2VsbCBhcyBhbnkgbWl4aW5z
IHRoZXkgaW5jbHVkZSB0aGVtc2VsdmVzLiAnICtcblx0ICAgICAgICAgICAgICAnRXhwZWN0ZWQg
b2JqZWN0IGJ1dCBnb3QgJXMuJyxcblx0ICAgICAgICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5h
bWUgfHwgJ1JlYWN0Q2xhc3MnLFxuXHQgICAgICAgICAgICBzcGVjID09PSBudWxsID8gbnVsbCA6
IHR5cGVvZlNwZWNcblx0ICAgICAgICAgICk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdFxu
XHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAgX2ludmFyaWFudChcblx0ICAgICAg
dHlwZW9mIHNwZWMgIT09ICdmdW5jdGlvbicsXG5cdCAgICAgIFwiUmVhY3RDbGFzczogWW91J3Jl
IGF0dGVtcHRpbmcgdG8gXCIgK1xuXHQgICAgICAgICd1c2UgYSBjb21wb25lbnQgY2xhc3Mgb3Ig
ZnVuY3Rpb24gYXMgYSBtaXhpbi4gSW5zdGVhZCwganVzdCB1c2UgYSAnICtcblx0ICAgICAgICAn
cmVndWxhciBvYmplY3QuJ1xuXHQgICAgKTtcblx0ICAgIF9pbnZhcmlhbnQoXG5cdCAgICAgICFp
c1ZhbGlkRWxlbWVudChzcGVjKSxcblx0ICAgICAgXCJSZWFjdENsYXNzOiBZb3UncmUgYXR0ZW1w
dGluZyB0byBcIiArXG5cdCAgICAgICAgJ3VzZSBhIGNvbXBvbmVudCBhcyBhIG1peGluLiBJbnN0
ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0Lidcblx0ICAgICk7XG5cdFxuXHQgICAgdmFy
IHByb3RvID0gQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXHQgICAgdmFyIGF1dG9CaW5kUGFpcnMg
PSBwcm90by5fX3JlYWN0QXV0b0JpbmRQYWlycztcblx0XG5cdCAgICAvLyBCeSBoYW5kbGluZyBt
aXhpbnMgYmVmb3JlIGFueSBvdGhlciBwcm9wZXJ0aWVzLCB3ZSBlbnN1cmUgdGhlIHNhbWVcblx0
ICAgIC8vIGNoYWluaW5nIG9yZGVyIGlzIGFwcGxpZWQgdG8gbWV0aG9kcyB3aXRoIERFRklORV9N
QU5ZIHBvbGljeSwgd2hldGhlclxuXHQgICAgLy8gbWl4aW5zIGFyZSBsaXN0ZWQgYmVmb3JlIG9y
IGFmdGVyIHRoZXNlIG1ldGhvZHMgaW4gdGhlIHNwZWMuXG5cdCAgICBpZiAoc3BlYy5oYXNPd25Q
cm9wZXJ0eShNSVhJTlNfS0VZKSkge1xuXHQgICAgICBSRVNFUlZFRF9TUEVDX0tFWVMubWl4aW5z
KENvbnN0cnVjdG9yLCBzcGVjLm1peGlucyk7XG5cdCAgICB9XG5cdFxuXHQgICAgZm9yICh2YXIg
bmFtZSBpbiBzcGVjKSB7XG5cdCAgICAgIGlmICghc3BlYy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkg
e1xuXHQgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBpZiAobmFtZSA9
PT0gTUlYSU5TX0tFWSkge1xuXHQgICAgICAgIC8vIFdlIGhhdmUgYWxyZWFkeSBoYW5kbGVkIG1p
eGlucyBpbiBhIHNwZWNpYWwgY2FzZSBhYm92ZS5cblx0ICAgICAgICBjb250aW51ZTtcblx0ICAg
ICAgfVxuXHRcblx0ICAgICAgdmFyIHByb3BlcnR5ID0gc3BlY1tuYW1lXTtcblx0ICAgICAgdmFy
IGlzQWxyZWFkeURlZmluZWQgPSBwcm90by5oYXNPd25Qcm9wZXJ0eShuYW1lKTtcblx0ICAgICAg
dmFsaWRhdGVNZXRob2RPdmVycmlkZShpc0FscmVhZHlEZWZpbmVkLCBuYW1lKTtcblx0XG5cdCAg
ICAgIGlmIChSRVNFUlZFRF9TUEVDX0tFWVMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAg
ICAgICBSRVNFUlZFRF9TUEVDX0tFWVNbbmFtZV0oQ29uc3RydWN0b3IsIHByb3BlcnR5KTtcblx0
ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAvLyBTZXR1cCBtZXRob2RzIG9uIHByb3RvdHlwZTpc
blx0ICAgICAgICAvLyBUaGUgZm9sbG93aW5nIG1lbWJlciBtZXRob2RzIHNob3VsZCBub3QgYmUg
YXV0b21hdGljYWxseSBib3VuZDpcblx0ICAgICAgICAvLyAxLiBFeHBlY3RlZCBSZWFjdENsYXNz
IG1ldGhvZHMgKGluIHRoZSBcImludGVyZmFjZVwiKS5cblx0ICAgICAgICAvLyAyLiBPdmVycmlk
ZGVuIG1ldGhvZHMgKHRoYXQgd2VyZSBtaXhlZCBpbikuXG5cdCAgICAgICAgdmFyIGlzUmVhY3RD
bGFzc01ldGhvZCA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSk7XG5c
dCAgICAgICAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgcHJvcGVydHkgPT09ICdmdW5jdGlvbic7
XG5cdCAgICAgICAgdmFyIHNob3VsZEF1dG9CaW5kID1cblx0ICAgICAgICAgIGlzRnVuY3Rpb24g
JiZcblx0ICAgICAgICAgICFpc1JlYWN0Q2xhc3NNZXRob2QgJiZcblx0ICAgICAgICAgICFpc0Fs
cmVhZHlEZWZpbmVkICYmXG5cdCAgICAgICAgICBzcGVjLmF1dG9iaW5kICE9PSBmYWxzZTtcblx0
XG5cdCAgICAgICAgaWYgKHNob3VsZEF1dG9CaW5kKSB7XG5cdCAgICAgICAgICBhdXRvQmluZFBh
aXJzLnB1c2gobmFtZSwgcHJvcGVydHkpO1xuXHQgICAgICAgICAgcHJvdG9bbmFtZV0gPSBwcm9w
ZXJ0eTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgaWYgKGlzQWxyZWFkeURlZmlu
ZWQpIHtcblx0ICAgICAgICAgICAgdmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNl
W25hbWVdO1xuXHRcblx0ICAgICAgICAgICAgLy8gVGhlc2UgY2FzZXMgc2hvdWxkIGFscmVhZHkg
YmUgY2F1Z2h0IGJ5IHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUuXG5cdCAgICAgICAgICAgIF9pbnZh
cmlhbnQoXG5cdCAgICAgICAgICAgICAgaXNSZWFjdENsYXNzTWV0aG9kICYmXG5cdCAgICAgICAg
ICAgICAgICAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcgfHxcblx0ICAgICAg
ICAgICAgICAgICAgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJyksXG5cdCAgICAgICAgICAg
ICAgJ1JlYWN0Q2xhc3M6IFVuZXhwZWN0ZWQgc3BlYyBwb2xpY3kgJXMgZm9yIGtleSAlcyAnICtc
blx0ICAgICAgICAgICAgICAgICd3aGVuIG1peGluZyBpbiBjb21wb25lbnQgc3BlY3MuJyxcblx0
ICAgICAgICAgICAgICBzcGVjUG9saWN5LFxuXHQgICAgICAgICAgICAgIG5hbWVcblx0ICAgICAg
ICAgICAgKTtcblx0XG5cdCAgICAgICAgICAgIC8vIEZvciBtZXRob2RzIHdoaWNoIGFyZSBkZWZp
bmVkIG1vcmUgdGhhbiBvbmNlLCBjYWxsIHRoZSBleGlzdGluZ1xuXHQgICAgICAgICAgICAvLyBt
ZXRob2RzIGJlZm9yZSBjYWxsaW5nIHRoZSBuZXcgcHJvcGVydHksIG1lcmdpbmcgaWYgYXBwcm9w
cmlhdGUuXG5cdCAgICAgICAgICAgIGlmIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVS
R0VEJykge1xuXHQgICAgICAgICAgICAgIHByb3RvW25hbWVdID0gY3JlYXRlTWVyZ2VkUmVzdWx0
RnVuY3Rpb24ocHJvdG9bbmFtZV0sIHByb3BlcnR5KTtcblx0ICAgICAgICAgICAgfSBlbHNlIGlm
IChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknKSB7XG5cdCAgICAgICAgICAgICAgcHJvdG9b
bmFtZV0gPSBjcmVhdGVDaGFpbmVkRnVuY3Rpb24ocHJvdG9bbmFtZV0sIHByb3BlcnR5KTtcblx0
ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgcHJvdG9b
bmFtZV0gPSBwcm9wZXJ0eTtcblx0ICAgICAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAg
ICAgICAgLy8gQWRkIHZlcmJvc2UgZGlzcGxheU5hbWUgdG8gdGhlIGZ1bmN0aW9uLCB3aGljaCBo
ZWxwcyB3aGVuIGxvb2tpbmdcblx0ICAgICAgICAgICAgICAvLyBhdCBwcm9maWxpbmcgdG9vbHMu
XG5cdCAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJyAmJiBz
cGVjLmRpc3BsYXlOYW1lKSB7XG5cdCAgICAgICAgICAgICAgICBwcm90b1tuYW1lXS5kaXNwbGF5
TmFtZSA9IHNwZWMuZGlzcGxheU5hbWUgKyAnXycgKyBuYW1lO1xuXHQgICAgICAgICAgICAgIH1c
blx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxu
XHQgICAgfVxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gbWl4U3RhdGljU3BlY0ludG9Db21wb25l
bnQoQ29uc3RydWN0b3IsIHN0YXRpY3MpIHtcblx0ICAgIGlmICghc3RhdGljcykge1xuXHQgICAg
ICByZXR1cm47XG5cdCAgICB9XG5cdCAgICBmb3IgKHZhciBuYW1lIGluIHN0YXRpY3MpIHtcblx0
ICAgICAgdmFyIHByb3BlcnR5ID0gc3RhdGljc1tuYW1lXTtcblx0ICAgICAgaWYgKCFzdGF0aWNz
Lmhhc093blByb3BlcnR5KG5hbWUpKSB7XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1c
blx0XG5cdCAgICAgIHZhciBpc1Jlc2VydmVkID0gbmFtZSBpbiBSRVNFUlZFRF9TUEVDX0tFWVM7
XG5cdCAgICAgIF9pbnZhcmlhbnQoXG5cdCAgICAgICAgIWlzUmVzZXJ2ZWQsXG5cdCAgICAgICAg
J1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgYSByZXNlcnZlZCAnICtc
blx0ICAgICAgICAgICdwcm9wZXJ0eSwgYCVzYCwgdGhhdCBzaG91bGRuXFwndCBiZSBvbiB0aGUg
XCJzdGF0aWNzXCIga2V5LiBEZWZpbmUgaXQgJyArXG5cdCAgICAgICAgICAnYXMgYW4gaW5zdGFu
Y2UgcHJvcGVydHkgaW5zdGVhZDsgaXQgd2lsbCBzdGlsbCBiZSBhY2Nlc3NpYmxlIG9uIHRoZSAn
ICtcblx0ICAgICAgICAgICdjb25zdHJ1Y3Rvci4nLFxuXHQgICAgICAgIG5hbWVcblx0ICAgICAg
KTtcblx0XG5cdCAgICAgIHZhciBpc0luaGVyaXRlZCA9IG5hbWUgaW4gQ29uc3RydWN0b3I7XG5c
dCAgICAgIF9pbnZhcmlhbnQoXG5cdCAgICAgICAgIWlzSW5oZXJpdGVkLFxuXHQgICAgICAgICdS
ZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgK1xuXHQgICAgICAgICAg
J2Alc2Agb24geW91ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5
IGJlICcgK1xuXHQgICAgICAgICAgJ2R1ZSB0byBhIG1peGluLicsXG5cdCAgICAgICAgbmFtZVxu
XHQgICAgICApO1xuXHQgICAgICBDb25zdHJ1Y3RvcltuYW1lXSA9IHByb3BlcnR5O1xuXHQgICAg
fVxuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICogTWVyZ2UgdHdvIG9iamVjdHMsIGJ1dCB0aHJv
dyBpZiBib3RoIGNvbnRhaW4gdGhlIHNhbWUga2V5LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtv
YmplY3R9IG9uZSBUaGUgZmlyc3Qgb2JqZWN0LCB3aGljaCBpcyBtdXRhdGVkLlxuXHQgICAqIEBw
YXJhbSB7b2JqZWN0fSB0d28gVGhlIHNlY29uZCBvYmplY3Rcblx0ICAgKiBAcmV0dXJuIHtvYmpl
Y3R9IG9uZSBhZnRlciBpdCBoYXMgYmVlbiBtdXRhdGVkIHRvIGNvbnRhaW4gZXZlcnl0aGluZyBp
biB0d28uXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5
cyhvbmUsIHR3bykge1xuXHQgICAgX2ludmFyaWFudChcblx0ICAgICAgb25lICYmIHR3byAmJiB0
eXBlb2Ygb25lID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdHdvID09PSAnb2JqZWN0Jyxcblx0ICAg
ICAgJ21lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoKTogQ2Fubm90IG1lcmdlIG5vbi1vYmpl
Y3RzLidcblx0ICAgICk7XG5cdFxuXHQgICAgZm9yICh2YXIga2V5IGluIHR3bykge1xuXHQgICAg
ICBpZiAodHdvLmhhc093blByb3BlcnR5KGtleSkpIHtcblx0ICAgICAgICBfaW52YXJpYW50KFxu
XHQgICAgICAgICAgb25lW2tleV0gPT09IHVuZGVmaW5lZCxcblx0ICAgICAgICAgICdtZXJnZUlu
dG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6ICcgK1xuXHQgICAgICAgICAgICAnVHJpZWQgdG8gbWVy
Z2UgdHdvIG9iamVjdHMgd2l0aCB0aGUgc2FtZSBrZXk6IGAlc2AuIFRoaXMgY29uZmxpY3QgJyAr
XG5cdCAgICAgICAgICAgICdtYXkgYmUgZHVlIHRvIGEgbWl4aW47IGluIHBhcnRpY3VsYXIsIHRo
aXMgbWF5IGJlIGNhdXNlZCBieSB0d28gJyArXG5cdCAgICAgICAgICAgICdnZXRJbml0aWFsU3Rh
dGUoKSBvciBnZXREZWZhdWx0UHJvcHMoKSBtZXRob2RzIHJldHVybmluZyBvYmplY3RzICcgK1xu
XHQgICAgICAgICAgICAnd2l0aCBjbGFzaGluZyBrZXlzLicsXG5cdCAgICAgICAgICBrZXlcblx0
ICAgICAgICApO1xuXHQgICAgICAgIG9uZVtrZXldID0gdHdvW2tleV07XG5cdCAgICAgIH1cblx0
ICAgIH1cblx0ICAgIHJldHVybiBvbmU7XG5cdCAgfVxuXHRcblx0ICAvKipcblx0ICAgKiBDcmVh
dGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIG1lcmdlcyB0aGVp
ciByZXR1cm4gdmFsdWVzLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtmdW5jdGlvbn0gb25lIEZ1
bmN0aW9uIHRvIGludm9rZSBmaXJzdC5cblx0ICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVu
Y3Rpb24gdG8gaW52b2tlIHNlY29uZC5cblx0ICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rp
b24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLlxuXHQgICAqIEBwcml2
YXRlXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ob25l
LCB0d28pIHtcblx0ICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWRSZXN1bHQoKSB7XG5cdCAgICAg
IHZhciBhID0gb25lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdCAgICAgIHZhciBiID0gdHdv
LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdCAgICAgIGlmIChhID09IG51bGwpIHtcblx0ICAg
ICAgICByZXR1cm4gYjtcblx0ICAgICAgfSBlbHNlIGlmIChiID09IG51bGwpIHtcblx0ICAgICAg
ICByZXR1cm4gYTtcblx0ICAgICAgfVxuXHQgICAgICB2YXIgYyA9IHt9O1xuXHQgICAgICBtZXJn
ZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKGMsIGEpO1xuXHQgICAgICBtZXJnZUludG9XaXRoTm9E
dXBsaWNhdGVLZXlzKGMsIGIpO1xuXHQgICAgICByZXR1cm4gYztcblx0ICAgIH07XG5cdCAgfVxu
XHRcblx0ICAvKipcblx0ICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3byBm
dW5jdGlvbnMgYW5kIGlnbm9yZXMgdGhlaXIgcmV0dXJuIHZhbGVzLlxuXHQgICAqXG5cdCAgICog
QHBhcmFtIHtmdW5jdGlvbn0gb25lIEZ1bmN0aW9uIHRvIGludm9rZSBmaXJzdC5cblx0ICAgKiBA
cGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC5cblx0ICAgKiBA
cmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQg
ZnVuY3Rpb25zLlxuXHQgICAqIEBwcml2YXRlXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gY3JlYXRl
Q2hhaW5lZEZ1bmN0aW9uKG9uZSwgdHdvKSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gY2hhaW5l
ZEZ1bmN0aW9uKCkge1xuXHQgICAgICBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0ICAg
ICAgdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdCAgICB9O1xuXHQgIH1cblx0XG5cdCAg
LyoqXG5cdCAgICogQmluZHMgYSBtZXRob2QgdG8gdGhlIGNvbXBvbmVudC5cblx0ICAgKlxuXHQg
ICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnQgQ29tcG9uZW50IHdob3NlIG1ldGhvZCBpcyBn
b2luZyB0byBiZSBib3VuZC5cblx0ICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtZXRob2QgTWV0aG9k
IHRvIGJlIGJvdW5kLlxuXHQgICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgYm91bmQgbWV0aG9k
LlxuXHQgICAqL1xuXHQgIGZ1bmN0aW9uIGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25lbnQsIG1l
dGhvZCkge1xuXHQgICAgdmFyIGJvdW5kTWV0aG9kID0gbWV0aG9kLmJpbmQoY29tcG9uZW50KTtc
blx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRDb250
ZXh0ID0gY29tcG9uZW50O1xuXHQgICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2Qg
PSBtZXRob2Q7XG5cdCAgICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZEFyZ3VtZW50cyA9IG51
bGw7XG5cdCAgICAgIHZhciBjb21wb25lbnROYW1lID0gY29tcG9uZW50LmNvbnN0cnVjdG9yLmRp
c3BsYXlOYW1lO1xuXHQgICAgICB2YXIgX2JpbmQgPSBib3VuZE1ldGhvZC5iaW5kO1xuXHQgICAg
ICBib3VuZE1ldGhvZC5iaW5kID0gZnVuY3Rpb24obmV3VGhpcykge1xuXHQgICAgICAgIGZvciAo
XG5cdCAgICAgICAgICB2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cdCAgICAgICAgICAg
IGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksXG5cdCAgICAgICAgICAgIF9r
ZXkgPSAxO1xuXHQgICAgICAgICAgX2tleSA8IF9sZW47XG5cdCAgICAgICAgICBfa2V5Kytcblx0
ICAgICAgICApIHtcblx0ICAgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXld
O1xuXHQgICAgICAgIH1cblx0XG5cdCAgICAgICAgLy8gVXNlciBpcyB0cnlpbmcgdG8gYmluZCgp
IGFuIGF1dG9ib3VuZCBtZXRob2Q7IHdlIGVmZmVjdGl2ZWx5IHdpbGxcblx0ICAgICAgICAvLyBp
Z25vcmUgdGhlIHZhbHVlIG9mIFwidGhpc1wiIHRoYXQgdGhlIHVzZXIgaXMgdHJ5aW5nIHRvIHVz
ZSwgc29cblx0ICAgICAgICAvLyBsZXQncyB3YXJuLlxuXHQgICAgICAgIGlmIChuZXdUaGlzICE9
PSBjb21wb25lbnQgJiYgbmV3VGhpcyAhPT0gbnVsbCkge1xuXHQgICAgICAgICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcblx0ICAgICAgICAgICAgd2Fybmlu
Zyhcblx0ICAgICAgICAgICAgICBmYWxzZSxcblx0ICAgICAgICAgICAgICAnYmluZCgpOiBSZWFj
dCBjb21wb25lbnQgbWV0aG9kcyBtYXkgb25seSBiZSBib3VuZCB0byB0aGUgJyArXG5cdCAgICAg
ICAgICAgICAgICAnY29tcG9uZW50IGluc3RhbmNlLiBTZWUgJXMnLFxuXHQgICAgICAgICAgICAg
IGNvbXBvbmVudE5hbWVcblx0ICAgICAgICAgICAgKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAg
ICB9IGVsc2UgaWYgKCFhcmdzLmxlbmd0aCkge1xuXHQgICAgICAgICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcblx0ICAgICAgICAgICAgd2FybmluZyhcblx0
ICAgICAgICAgICAgICBmYWxzZSxcblx0ICAgICAgICAgICAgICAnYmluZCgpOiBZb3UgYXJlIGJp
bmRpbmcgYSBjb21wb25lbnQgbWV0aG9kIHRvIHRoZSBjb21wb25lbnQuICcgK1xuXHQgICAgICAg
ICAgICAgICAgJ1JlYWN0IGRvZXMgdGhpcyBmb3IgeW91IGF1dG9tYXRpY2FsbHkgaW4gYSBoaWdo
LXBlcmZvcm1hbmNlICcgK1xuXHQgICAgICAgICAgICAgICAgJ3dheSwgc28geW91IGNhbiBzYWZl
bHkgcmVtb3ZlIHRoaXMgY2FsbC4gU2VlICVzJyxcblx0ICAgICAgICAgICAgICBjb21wb25lbnRO
YW1lXG5cdCAgICAgICAgICAgICk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICByZXR1cm4g
Ym91bmRNZXRob2Q7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciByZWJvdW5kTWV0aG9kID0g
X2JpbmQuYXBwbHkoYm91bmRNZXRob2QsIGFyZ3VtZW50cyk7XG5cdCAgICAgICAgcmVib3VuZE1l
dGhvZC5fX3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9uZW50O1xuXHQgICAgICAgIHJlYm91bmRN
ZXRob2QuX19yZWFjdEJvdW5kTWV0aG9kID0gbWV0aG9kO1xuXHQgICAgICAgIHJlYm91bmRNZXRo
b2QuX19yZWFjdEJvdW5kQXJndW1lbnRzID0gYXJncztcblx0ICAgICAgICByZXR1cm4gcmVib3Vu
ZE1ldGhvZDtcblx0ICAgICAgfTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBib3VuZE1ldGhvZDtc
blx0ICB9XG5cdFxuXHQgIC8qKlxuXHQgICAqIEJpbmRzIGFsbCBhdXRvLWJvdW5kIG1ldGhvZHMg
aW4gYSBjb21wb25lbnQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50
IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuXG5cdCAgICovXG5c
dCAgZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kcyhjb21wb25lbnQpIHtcblx0ICAgIHZhciBw
YWlycyA9IGNvbXBvbmVudC5fX3JlYWN0QXV0b0JpbmRQYWlycztcblx0ICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcGFpcnMubGVuZ3RoOyBpICs9IDIpIHtcblx0ICAgICAgdmFyIGF1dG9CaW5kS2V5
ID0gcGFpcnNbaV07XG5cdCAgICAgIHZhciBtZXRob2QgPSBwYWlyc1tpICsgMV07XG5cdCAgICAg
IGNvbXBvbmVudFthdXRvQmluZEtleV0gPSBiaW5kQXV0b0JpbmRNZXRob2QoY29tcG9uZW50LCBt
ZXRob2QpO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgdmFyIElzTW91bnRlZFByZU1peGluID0g
e1xuXHQgICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uKCkge1xuXHQgICAgICB0aGlzLl9f
aXNNb3VudGVkID0gdHJ1ZTtcblx0ICAgIH1cblx0ICB9O1xuXHRcblx0ICB2YXIgSXNNb3VudGVk
UG9zdE1peGluID0ge1xuXHQgICAgY29tcG9uZW50V2lsbFVubW91bnQ6IGZ1bmN0aW9uKCkge1xu
XHQgICAgICB0aGlzLl9faXNNb3VudGVkID0gZmFsc2U7XG5cdCAgICB9XG5cdCAgfTtcblx0XG5c
dCAgLyoqXG5cdCAgICogQWRkIG1vcmUgdG8gdGhlIFJlYWN0Q2xhc3MgYmFzZSBjbGFzcy4gVGhl
c2UgYXJlIGFsbCBsZWdhY3kgZmVhdHVyZXMgYW5kXG5cdCAgICogdGhlcmVmb3JlIG5vdCBhbHJl
YWR5IHBhcnQgb2YgdGhlIG1vZGVybiBSZWFjdENvbXBvbmVudC5cblx0ICAgKi9cblx0ICB2YXIg
UmVhY3RDbGFzc01peGluID0ge1xuXHQgICAgLyoqXG5cdCAgICAgKiBUT0RPOiBUaGlzIHdpbGwg
YmUgZGVwcmVjYXRlZCBiZWNhdXNlIHN0YXRlIHNob3VsZCBhbHdheXMga2VlcCBhIGNvbnNpc3Rl
bnRcblx0ICAgICAqIHR5cGUgc2lnbmF0dXJlIGFuZCB0aGUgb25seSB1c2UgY2FzZSBmb3IgdGhp
cywgaXMgdG8gYXZvaWQgdGhhdC5cblx0ICAgICAqL1xuXHQgICAgcmVwbGFjZVN0YXRlOiBmdW5j
dGlvbihuZXdTdGF0ZSwgY2FsbGJhY2spIHtcblx0ICAgICAgdGhpcy51cGRhdGVyLmVucXVldWVS
ZXBsYWNlU3RhdGUodGhpcywgbmV3U3RhdGUsIGNhbGxiYWNrKTtcblx0ICAgIH0sXG5cdFxuXHQg
ICAgLyoqXG5cdCAgICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29t
cG9uZW50IGlzIG1vdW50ZWQuXG5cdCAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1v
dW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cblx0ICAgICAqIEBwcm90ZWN0ZWRcblx0ICAgICAqIEBm
aW5hbFxuXHQgICAgICovXG5cdCAgICBpc01vdW50ZWQ6IGZ1bmN0aW9uKCkge1xuXHQgICAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgICB3YXJuaW5nKFxuXHQgICAgICAgICAgdGhpcy5fX2RpZFdh
cm5Jc01vdW50ZWQsXG5cdCAgICAgICAgICAnJXM6IGlzTW91bnRlZCBpcyBkZXByZWNhdGVkLiBJ
bnN0ZWFkLCBtYWtlIHN1cmUgdG8gY2xlYW4gdXAgJyArXG5cdCAgICAgICAgICAgICdzdWJzY3Jp
cHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluIGNvbXBvbmVudFdpbGxVbm1vdW50IHRvICcg
K1xuXHQgICAgICAgICAgICAncHJldmVudCBtZW1vcnkgbGVha3MuJyxcblx0ICAgICAgICAgICh0
aGlzLmNvbnN0cnVjdG9yICYmIHRoaXMuY29uc3RydWN0b3IuZGlzcGxheU5hbWUpIHx8XG5cdCAg
ICAgICAgICAgIHRoaXMubmFtZSB8fFxuXHQgICAgICAgICAgICAnQ29tcG9uZW50J1xuXHQgICAg
ICAgICk7XG5cdCAgICAgICAgdGhpcy5fX2RpZFdhcm5Jc01vdW50ZWQgPSB0cnVlO1xuXHQgICAg
ICB9XG5cdCAgICAgIHJldHVybiAhIXRoaXMuX19pc01vdW50ZWQ7XG5cdCAgICB9XG5cdCAgfTtc
blx0XG5cdCAgdmFyIFJlYWN0Q2xhc3NDb21wb25lbnQgPSBmdW5jdGlvbigpIHt9O1xuXHQgIF9h
c3NpZ24oXG5cdCAgICBSZWFjdENsYXNzQ29tcG9uZW50LnByb3RvdHlwZSxcblx0ICAgIFJlYWN0
Q29tcG9uZW50LnByb3RvdHlwZSxcblx0ICAgIFJlYWN0Q2xhc3NNaXhpblxuXHQgICk7XG5cdFxu
XHQgIC8qKlxuXHQgICAqIENyZWF0ZXMgYSBjb21wb3NpdGUgY29tcG9uZW50IGNsYXNzIGdpdmVu
IGEgY2xhc3Mgc3BlY2lmaWNhdGlvbi5cblx0ICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRo
dWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlY2xhc3Ncblx0
ICAgKlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBzcGVjIENsYXNzIHNwZWNpZmljYXRpb24gKHdo
aWNoIG11c3QgZGVmaW5lIGByZW5kZXJgKS5cblx0ICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gQ29t
cG9uZW50IGNvbnN0cnVjdG9yIGZ1bmN0aW9uLlxuXHQgICAqIEBwdWJsaWNcblx0ICAgKi9cblx0
ICBmdW5jdGlvbiBjcmVhdGVDbGFzcyhzcGVjKSB7XG5cdCAgICAvLyBUbyBrZWVwIG91ciB3YXJu
aW5ncyBtb3JlIHVuZGVyc3RhbmRhYmxlLCB3ZSdsbCB1c2UgYSBsaXR0bGUgaGFjayBoZXJlIHRv
XG5cdCAgICAvLyBlbnN1cmUgdGhhdCBDb25zdHJ1Y3Rvci5uYW1lICE9PSAnQ29uc3RydWN0b3In
LiBUaGlzIG1ha2VzIHN1cmUgd2UgZG9uJ3Rcblx0ICAgIC8vIHVubmVjZXNzYXJpbHkgaWRlbnRp
ZnkgYSBjbGFzcyB3aXRob3V0IGRpc3BsYXlOYW1lIGFzICdDb25zdHJ1Y3RvcicuXG5cdCAgICB2
YXIgQ29uc3RydWN0b3IgPSBpZGVudGl0eShmdW5jdGlvbihwcm9wcywgY29udGV4dCwgdXBkYXRl
cikge1xuXHQgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGdldHMgb3ZlcnJpZGRlbiBieSBtb2Nr
cy4gVGhlIGFyZ3VtZW50IGlzIHVzZWRcblx0ICAgICAgLy8gYnkgbW9ja3MgdG8gYXNzZXJ0IG9u
IHdoYXQgZ2V0cyBtb3VudGVkLlxuXHRcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAg
d2FybmluZyhcblx0ICAgICAgICAgIHRoaXMgaW5zdGFuY2VvZiBDb25zdHJ1Y3Rvcixcblx0ICAg
ICAgICAgICdTb21ldGhpbmcgaXMgY2FsbGluZyBhIFJlYWN0IGNvbXBvbmVudCBkaXJlY3RseS4g
VXNlIGEgZmFjdG9yeSBvciAnICtcblx0ICAgICAgICAgICAgJ0pTWCBpbnN0ZWFkLiBTZWU6IGh0
dHBzOi8vZmIubWUvcmVhY3QtbGVnYWN5ZmFjdG9yeSdcblx0ICAgICAgICApO1xuXHQgICAgICB9
XG5cdFxuXHQgICAgICAvLyBXaXJlIHVwIGF1dG8tYmluZGluZ1xuXHQgICAgICBpZiAodGhpcy5f
X3JlYWN0QXV0b0JpbmRQYWlycy5sZW5ndGgpIHtcblx0ICAgICAgICBiaW5kQXV0b0JpbmRNZXRo
b2RzKHRoaXMpO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5c
dCAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG5cdCAgICAgIHRoaXMucmVmcyA9IGVtcHR5
T2JqZWN0O1xuXHQgICAgICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0
ZVF1ZXVlO1xuXHRcblx0ICAgICAgdGhpcy5zdGF0ZSA9IG51bGw7XG5cdFxuXHQgICAgICAvLyBS
ZWFjdENsYXNzZXMgZG9lc24ndCBoYXZlIGNvbnN0cnVjdG9ycy4gSW5zdGVhZCwgdGhleSB1c2Ug
dGhlXG5cdCAgICAgIC8vIGdldEluaXRpYWxTdGF0ZSBhbmQgY29tcG9uZW50V2lsbE1vdW50IG1l
dGhvZHMgZm9yIGluaXRpYWxpemF0aW9uLlxuXHRcblx0ICAgICAgdmFyIGluaXRpYWxTdGF0ZSA9
IHRoaXMuZ2V0SW5pdGlhbFN0YXRlID8gdGhpcy5nZXRJbml0aWFsU3RhdGUoKSA6IG51bGw7XG5c
dCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9ja3MgdG8g
cHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJldHVybmluZyBudWxsLlxuXHQgICAgICAgIGlmIChcblx0
ICAgICAgICAgIGluaXRpYWxTdGF0ZSA9PT0gdW5kZWZpbmVkICYmXG5cdCAgICAgICAgICB0aGlz
LmdldEluaXRpYWxTdGF0ZS5faXNNb2NrRnVuY3Rpb25cblx0ICAgICAgICApIHtcblx0ICAgICAg
ICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgYmFkIHByYWN0aWNlLiBDb25zaWRlciB3YXJuaW5nIGhl
cmUgYW5kXG5cdCAgICAgICAgICAvLyBkZXByZWNhdGluZyB0aGlzIGNvbnZlbmllbmNlLlxuXHQg
ICAgICAgICAgaW5pdGlhbFN0YXRlID0gbnVsbDtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0
ICAgICAgX2ludmFyaWFudChcblx0ICAgICAgICB0eXBlb2YgaW5pdGlhbFN0YXRlID09PSAnb2Jq
ZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpbml0aWFsU3RhdGUpLFxuXHQgICAgICAgICclcy5nZXRJ
bml0aWFsU3RhdGUoKTogbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwnLFxuXHQgICAgICAg
IENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdcblx0
ICAgICAgKTtcblx0XG5cdCAgICAgIHRoaXMuc3RhdGUgPSBpbml0aWFsU3RhdGU7XG5cdCAgICB9
KTtcblx0ICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IG5ldyBSZWFjdENsYXNzQ29tcG9uZW50
KCk7XG5cdCAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rv
cjtcblx0ICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5fX3JlYWN0QXV0b0JpbmRQYWlycyA9IFtd
O1xuXHRcblx0ICAgIGluamVjdGVkTWl4aW5zLmZvckVhY2gobWl4U3BlY0ludG9Db21wb25lbnQu
YmluZChudWxsLCBDb25zdHJ1Y3RvcikpO1xuXHRcblx0ICAgIG1peFNwZWNJbnRvQ29tcG9uZW50
KENvbnN0cnVjdG9yLCBJc01vdW50ZWRQcmVNaXhpbik7XG5cdCAgICBtaXhTcGVjSW50b0NvbXBv
bmVudChDb25zdHJ1Y3Rvciwgc3BlYyk7XG5cdCAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25z
dHJ1Y3RvciwgSXNNb3VudGVkUG9zdE1peGluKTtcblx0XG5cdCAgICAvLyBJbml0aWFsaXplIHRo
ZSBkZWZhdWx0UHJvcHMgcHJvcGVydHkgYWZ0ZXIgYWxsIG1peGlucyBoYXZlIGJlZW4gbWVyZ2Vk
LlxuXHQgICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcykge1xuXHQgICAgICBDb25z
dHJ1Y3Rvci5kZWZhdWx0UHJvcHMgPSBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMoKTtcblx0
ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgLy8gVGhpcyBpcyBhIHRhZyB0
byBpbmRpY2F0ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlc2UgbWV0aG9kIG5hbWVzIGlzIG9rLFxuXHQg
ICAgICAvLyBzaW5jZSBpdCdzIHVzZWQgd2l0aCBjcmVhdGVDbGFzcy4gSWYgaXQncyBub3QsIHRo
ZW4gaXQncyBsaWtlbHkgYVxuXHQgICAgICAvLyBtaXN0YWtlIHNvIHdlJ2xsIHdhcm4geW91IHRv
IHVzZSB0aGUgc3RhdGljIHByb3BlcnR5LCBwcm9wZXJ0eVxuXHQgICAgICAvLyBpbml0aWFsaXpl
ciBvciBjb25zdHJ1Y3RvciByZXNwZWN0aXZlbHkuXG5cdCAgICAgIGlmIChDb25zdHJ1Y3Rvci5n
ZXREZWZhdWx0UHJvcHMpIHtcblx0ICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMu
aXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAoQ29uc3Ry
dWN0b3IucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZSkge1xuXHQgICAgICAgIENvbnN0cnVjdG9y
LnByb3RvdHlwZS5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTtcblx0
ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIF9pbnZhcmlhbnQoXG5cdCAgICAgIENvbnN0cnVj
dG9yLnByb3RvdHlwZS5yZW5kZXIsXG5cdCAgICAgICdjcmVhdGVDbGFzcyguLi4pOiBDbGFzcyBz
cGVjaWZpY2F0aW9uIG11c3QgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLidcblx0ICAgICk7
XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHdhcm5pbmcoXG5cdCAgICAgICAgIUNv
bnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25lbnRTaG91bGRVcGRhdGUsXG5cdCAgICAgICAgJyVz
IGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArXG5cdCAgICAgICAgICAnY29tcG9uZW50U2hvdWxkVXBk
YXRlKCkuIERpZCB5b3UgbWVhbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKT8gJyArXG5cdCAgICAg
ICAgICAnVGhlIG5hbWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhlIGZ1bmN0
aW9uIGlzICcgK1xuXHQgICAgICAgICAgJ2V4cGVjdGVkIHRvIHJldHVybiBhIHZhbHVlLicsXG5c
dCAgICAgICAgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnXG5cdCAgICAgICk7XG5c
dCAgICAgIHdhcm5pbmcoXG5cdCAgICAgICAgIUNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25l
bnRXaWxsUmVjaWV2ZVByb3BzLFxuXHQgICAgICAgICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcg
K1xuXHQgICAgICAgICAgJ2NvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMoKS4gRGlkIHlvdSBtZWFu
IGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKT8nLFxuXHQgICAgICAgIHNwZWMuZGlzcGxheU5h
bWUgfHwgJ0EgY29tcG9uZW50J1xuXHQgICAgICApO1xuXHQgICAgfVxuXHRcblx0ICAgIC8vIFJl
ZHVjZSB0aW1lIHNwZW50IGRvaW5nIGxvb2t1cHMgYnkgc2V0dGluZyB0aGVzZSBvbiB0aGUgcHJv
dG90eXBlLlxuXHQgICAgZm9yICh2YXIgbWV0aG9kTmFtZSBpbiBSZWFjdENsYXNzSW50ZXJmYWNl
KSB7XG5cdCAgICAgIGlmICghQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdKSB7XG5c
dCAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdID0gbnVsbDtcblx0ICAg
ICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBDb25zdHJ1Y3Rvcjtcblx0ICB9XG5cdFxu
XHQgIHJldHVybiBjcmVhdGVDbGFzcztcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0
b3J5O1xuXG5cbi8qKiovIH0sXG4vKiA5OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cdFxuXHQvKipcblx0ICogQ29weXJpZ2h0IChj
KSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIEB0eXBlY2hlY2tzXG5cdCAqL1xuXHRcblx0dmFy
IF9oeXBoZW5QYXR0ZXJuID0gLy0oLikvZztcblx0XG5cdC8qKlxuXHQgKiBDYW1lbGNhc2VzIGEg
aHlwaGVuYXRlZCBzdHJpbmcsIGZvciBleGFtcGxlOlxuXHQgKlxuXHQgKiAgID4gY2FtZWxpemUo
J2JhY2tncm91bmQtY29sb3InKVxuXHQgKiAgIDwgXCJiYWNrZ3JvdW5kQ29sb3JcIlxuXHQgKlxu
XHQgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG5cdCAqIEByZXR1cm4ge3N0cmluZ31cblx0ICov
XG5cdGZ1bmN0aW9uIGNhbWVsaXplKHN0cmluZykge1xuXHQgIHJldHVybiBzdHJpbmcucmVwbGFj
ZShfaHlwaGVuUGF0dGVybiwgZnVuY3Rpb24gKF8sIGNoYXJhY3Rlcikge1xuXHQgICAgcmV0dXJu
IGNoYXJhY3Rlci50b1VwcGVyQ2FzZSgpO1xuXHQgIH0pO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IGNhbWVsaXplO1xuXG4vKioqLyB9LFxuLyogOTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5
cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogQHR5cGVjaGVja3Ncblx0ICovXG5c
dFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgY2FtZWxpemUgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDk4KTtcblx0XG5cdHZhciBtc1BhdHRlcm4gPSAvXi1tcy0vO1xuXHRcblx0LyoqXG5cdCAq
IENhbWVsY2FzZXMgYSBoeXBoZW5hdGVkIENTUyBwcm9wZXJ0eSBuYW1lLCBmb3IgZXhhbXBsZTpc
blx0ICpcblx0ICogICA+IGNhbWVsaXplU3R5bGVOYW1lKCdiYWNrZ3JvdW5kLWNvbG9yJylcblx0
ICogICA8IFwiYmFja2dyb3VuZENvbG9yXCJcblx0ICogICA+IGNhbWVsaXplU3R5bGVOYW1lKCct
bW96LXRyYW5zaXRpb24nKVxuXHQgKiAgIDwgXCJNb3pUcmFuc2l0aW9uXCJcblx0ICogICA+IGNh
bWVsaXplU3R5bGVOYW1lKCctbXMtdHJhbnNpdGlvbicpXG5cdCAqICAgPCBcIm1zVHJhbnNpdGlv
blwiXG5cdCAqXG5cdCAqIEFzIEFuZGkgU21pdGggc3VnZ2VzdHNcblx0ICogKGh0dHA6Ly93d3cu
YW5kaXNtaXRoLmNvbS9ibG9nLzIwMTIvMDIvbW9kZXJuaXpyLXByZWZpeGVkLyksIGFuIGAtbXNg
IHByZWZpeFxuXHQgKiBpcyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGBtc2AuXG5cdCAqXG5cdCAq
IEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcblx0ICogQHJldHVybiB7c3RyaW5nfVxuXHQgKi9cblx0
ZnVuY3Rpb24gY2FtZWxpemVTdHlsZU5hbWUoc3RyaW5nKSB7XG5cdCAgcmV0dXJuIGNhbWVsaXpl
KHN0cmluZy5yZXBsYWNlKG1zUGF0dGVybiwgJ21zLScpKTtcblx0fVxuXHRcblx0bW9kdWxlLmV4
cG9ydHMgPSBjYW1lbGl6ZVN0eWxlTmFtZTtcblxuLyoqKi8gfSxcbi8qIDEwMCAqL1xuLyoqKi8g
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3Vz
ZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
XHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHR2YXIgaXNUZXh0Tm9kZSA9IF9fd2VicGFja19yZXF1
aXJlX18oMTA4KTtcblx0XG5cdC8qZXNsaW50LWRpc2FibGUgbm8tYml0d2lzZSAqL1xuXHRcblx0
LyoqXG5cdCAqIENoZWNrcyBpZiBhIGdpdmVuIERPTSBub2RlIGNvbnRhaW5zIG9yIGlzIGFub3Ro
ZXIgRE9NIG5vZGUuXG5cdCAqL1xuXHRmdW5jdGlvbiBjb250YWluc05vZGUob3V0ZXJOb2RlLCBp
bm5lck5vZGUpIHtcblx0ICBpZiAoIW91dGVyTm9kZSB8fCAhaW5uZXJOb2RlKSB7XG5cdCAgICBy
ZXR1cm4gZmFsc2U7XG5cdCAgfSBlbHNlIGlmIChvdXRlck5vZGUgPT09IGlubmVyTm9kZSkge1xu
XHQgICAgcmV0dXJuIHRydWU7XG5cdCAgfSBlbHNlIGlmIChpc1RleHROb2RlKG91dGVyTm9kZSkp
IHtcblx0ICAgIHJldHVybiBmYWxzZTtcblx0ICB9IGVsc2UgaWYgKGlzVGV4dE5vZGUoaW5uZXJO
b2RlKSkge1xuXHQgICAgcmV0dXJuIGNvbnRhaW5zTm9kZShvdXRlck5vZGUsIGlubmVyTm9kZS5w
YXJlbnROb2RlKTtcblx0ICB9IGVsc2UgaWYgKCdjb250YWlucycgaW4gb3V0ZXJOb2RlKSB7XG5c
dCAgICByZXR1cm4gb3V0ZXJOb2RlLmNvbnRhaW5zKGlubmVyTm9kZSk7XG5cdCAgfSBlbHNlIGlm
IChvdXRlck5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24pIHtcblx0ICAgIHJldHVybiAhIShv
dXRlck5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oaW5uZXJOb2RlKSAmIDE2KTtcblx0ICB9
IGVsc2Uge1xuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4
cG9ydHMgPSBjb250YWluc05vZGU7XG5cbi8qKiovIH0sXG4vKiAxMDEgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpc
blx0ICogQHR5cGVjaGVja3Ncblx0ICovXG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBDb252ZXJ0IGFycmF5LWxpa2Ugb2JqZWN0
cyB0byBhcnJheXMuXG5cdCAqXG5cdCAqIFRoaXMgQVBJIGFzc3VtZXMgdGhlIGNhbGxlciBrbm93
cyB0aGUgY29udGVudHMgb2YgdGhlIGRhdGEgdHlwZS4gRm9yIGxlc3Ncblx0ICogd2VsbCBkZWZp
bmVkIGlucHV0cyB1c2UgY3JlYXRlQXJyYXlGcm9tTWl4ZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7
b2JqZWN0fGZ1bmN0aW9ufGZpbGVsaXN0fSBvYmpcblx0ICogQHJldHVybiB7YXJyYXl9XG5cdCAq
L1xuXHRmdW5jdGlvbiB0b0FycmF5KG9iaikge1xuXHQgIHZhciBsZW5ndGggPSBvYmoubGVuZ3Ro
O1xuXHRcblx0ICAvLyBTb21lIGJyb3dzZXJzIGJ1aWx0aW4gb2JqZWN0cyBjYW4gcmVwb3J0IHR5
cGVvZiAnZnVuY3Rpb24nIChlLmcuIE5vZGVMaXN0XG5cdCAgLy8gaW4gb2xkIHZlcnNpb25zIG9m
IFNhZmFyaSkuXG5cdCAgISghQXJyYXkuaXNBcnJheShvYmopICYmICh0eXBlb2Ygb2JqID09PSAn
b2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSkgPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICd0b0FycmF5OiBBcnJheS1saWtlIG9iamVjdCBleHBlY3RlZCcpIDogaW52YXJp
YW50KGZhbHNlKSA6IHZvaWQgMDtcblx0XG5cdCAgISh0eXBlb2YgbGVuZ3RoID09PSAnbnVtYmVy
JykgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBPYmplY3QgbmVlZHMgYSBs
ZW5ndGggcHJvcGVydHknKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG5cdFxuXHQgICEo
bGVuZ3RoID09PSAwIHx8IGxlbmd0aCAtIDEgaW4gb2JqKSA/ICBmYWxzZSA/IGludmFyaWFudChm
YWxzZSwgJ3RvQXJyYXk6IE9iamVjdCBzaG91bGQgaGF2ZSBrZXlzIGZvciBpbmRpY2VzJykgOiBp
bnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuXHRcblx0ICAhKHR5cGVvZiBvYmouY2FsbGVlICE9
PSAnZnVuY3Rpb24nKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IE9iamVj
dCBjYW5cXCd0IGJlIGBhcmd1bWVudHNgLiBVc2UgcmVzdCBwYXJhbXMgJyArICcoZnVuY3Rpb24o
Li4uYXJncykge30pIG9yIEFycmF5LmZyb20oKSBpbnN0ZWFkLicpIDogaW52YXJpYW50KGZhbHNl
KSA6IHZvaWQgMDtcblx0XG5cdCAgLy8gT2xkIElFIGRvZXNuJ3QgZ2l2ZSBjb2xsZWN0aW9ucyBh
Y2Nlc3MgdG8gaGFzT3duUHJvcGVydHkuIEFzc3VtZSBpbnB1dHNcblx0ICAvLyB3aXRob3V0IG1l
dGhvZCB3aWxsIHRocm93IGR1cmluZyB0aGUgc2xpY2UgY2FsbCBhbmQgc2tpcCBzdHJhaWdodCB0
byB0aGVcblx0ICAvLyBmYWxsYmFjay5cblx0ICBpZiAob2JqLmhhc093blByb3BlcnR5KSB7XG5c
dCAgICB0cnkge1xuXHQgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwob2Jq
KTtcblx0ICAgIH0gY2F0Y2ggKGUpIHtcblx0ICAgICAgLy8gSUUgPCA5IGRvZXMgbm90IHN1cHBv
cnQgQXJyYXkjc2xpY2Ugb24gY29sbGVjdGlvbnMgb2JqZWN0c1xuXHQgICAgfVxuXHQgIH1cblx0
XG5cdCAgLy8gRmFsbCBiYWNrIHRvIGNvcHlpbmcga2V5IGJ5IGtleS4gVGhpcyBhc3N1bWVzIGFs
bCBrZXlzIGhhdmUgYSB2YWx1ZSxcblx0ICAvLyBzbyB3aWxsIG5vdCBwcmVzZXJ2ZSBzcGFyc2Vs
eSBwb3B1bGF0ZWQgaW5wdXRzLlxuXHQgIHZhciByZXQgPSBBcnJheShsZW5ndGgpO1xuXHQgIGZv
ciAodmFyIGlpID0gMDsgaWkgPCBsZW5ndGg7IGlpKyspIHtcblx0ICAgIHJldFtpaV0gPSBvYmpb
aWldO1xuXHQgIH1cblx0ICByZXR1cm4gcmV0O1xuXHR9XG5cdFxuXHQvKipcblx0ICogUGVyZm9y
bSBhIGhldXJpc3RpYyB0ZXN0IHRvIGRldGVybWluZSBpZiBhbiBvYmplY3QgaXMgXCJhcnJheS1s
aWtlXCIuXG5cdCAqXG5cdCAqICAgQSBtb25rIGFza2VkIEpvc2h1LCBhIFplbiBtYXN0ZXIsIFwi
SGFzIGEgZG9nIEJ1ZGRoYSBuYXR1cmU/XCJcblx0ICogICBKb3NodSByZXBsaWVkOiBcIk11Llwi
XG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiBpdHMgYXJndW1lbnQgaGFz
IFwiYXJyYXkgbmF0dXJlXCI6IGl0IHJldHVybnNcblx0ICogdHJ1ZSBpZiB0aGUgYXJndW1lbnQg
aXMgYW4gYWN0dWFsIGFycmF5LCBhbiBgYXJndW1lbnRzJyBvYmplY3QsIG9yIGFuXG5cdCAqIEhU
TUxDb2xsZWN0aW9uIChlLmcuIG5vZGUuY2hpbGROb2RlcyBvciBub2RlLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCkpLlxuXHQgKlxuXHQgKiBJdCB3aWxsIHJldHVybiBmYWxzZSBmb3Igb3RoZXIgYXJy
YXktbGlrZSBvYmplY3RzIGxpa2UgRmlsZWxpc3QuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Kn0gb2Jq
XG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59XG5cdCAqL1xuXHRmdW5jdGlvbiBoYXNBcnJheU5hdHVy
ZShvYmopIHtcblx0ICByZXR1cm4gKFxuXHQgICAgLy8gbm90IG51bGwvZmFsc2Vcblx0ICAgICEh
b2JqICYmIChcblx0ICAgIC8vIGFycmF5cyBhcmUgb2JqZWN0cywgTm9kZUxpc3RzIGFyZSBmdW5j
dGlvbnMgaW4gU2FmYXJpXG5cdCAgICB0eXBlb2Ygb2JqID09ICdvYmplY3QnIHx8IHR5cGVvZiBv
YmogPT0gJ2Z1bmN0aW9uJykgJiZcblx0ICAgIC8vIHF1YWNrcyBsaWtlIGFuIGFycmF5XG5cdCAg
ICAnbGVuZ3RoJyBpbiBvYmogJiZcblx0ICAgIC8vIG5vdCB3aW5kb3dcblx0ICAgICEoJ3NldElu
dGVydmFsJyBpbiBvYmopICYmXG5cdCAgICAvLyBubyBET00gbm9kZSBzaG91bGQgYmUgY29uc2lk
ZXJlZCBhbiBhcnJheS1saWtlXG5cdCAgICAvLyBhICdzZWxlY3QnIGVsZW1lbnQgaGFzICdsZW5n
dGgnIGFuZCAnaXRlbScgcHJvcGVydGllcyBvbiBJRThcblx0ICAgIHR5cGVvZiBvYmoubm9kZVR5
cGUgIT0gJ251bWJlcicgJiYgKFxuXHQgICAgLy8gYSByZWFsIGFycmF5XG5cdCAgICBBcnJheS5p
c0FycmF5KG9iaikgfHxcblx0ICAgIC8vIGFyZ3VtZW50c1xuXHQgICAgJ2NhbGxlZScgaW4gb2Jq
IHx8XG5cdCAgICAvLyBIVE1MQ29sbGVjdGlvbi9Ob2RlTGlzdFxuXHQgICAgJ2l0ZW0nIGluIG9i
ailcblx0ICApO1xuXHR9XG5cdFxuXHQvKipcblx0ICogRW5zdXJlIHRoYXQgdGhlIGFyZ3VtZW50
IGlzIGFuIGFycmF5IGJ5IHdyYXBwaW5nIGl0IGluIGFuIGFycmF5IGlmIGl0IGlzIG5vdC5cblx0
ICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhlIGFyZ3VtZW50IGlmIGl0IGlzIGFscmVhZHkgYW4gYXJy
YXkuXG5cdCAqXG5cdCAqIFRoaXMgaXMgbW9zdGx5IHVzZWZ1bCBpZGlvbWF0aWNhbGx5OlxuXHQg
KlxuXHQgKiAgIHZhciBjcmVhdGVBcnJheUZyb21NaXhlZCA9IHJlcXVpcmUoJ2NyZWF0ZUFycmF5
RnJvbU1peGVkJyk7XG5cdCAqXG5cdCAqICAgZnVuY3Rpb24gdGFrZXNPbmVPck1vcmVUaGluZ3Mo
dGhpbmdzKSB7XG5cdCAqICAgICB0aGluZ3MgPSBjcmVhdGVBcnJheUZyb21NaXhlZCh0aGluZ3Mp
O1xuXHQgKiAgICAgLi4uXG5cdCAqICAgfVxuXHQgKlxuXHQgKiBUaGlzIGFsbG93cyB5b3UgdG8g
dHJlYXQgYHRoaW5ncycgYXMgYW4gYXJyYXksIGJ1dCBhY2NlcHQgc2NhbGFycyBpbiB0aGUgQVBJ
LlxuXHQgKlxuXHQgKiBJZiB5b3UgbmVlZCB0byBjb252ZXJ0IGFuIGFycmF5LWxpa2Ugb2JqZWN0
LCBsaWtlIGBhcmd1bWVudHNgLCBpbnRvIGFuIGFycmF5XG5cdCAqIHVzZSB0b0FycmF5IGluc3Rl
YWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Kn0gb2JqXG5cdCAqIEByZXR1cm4ge2FycmF5fVxuXHQg
Ki9cblx0ZnVuY3Rpb24gY3JlYXRlQXJyYXlGcm9tTWl4ZWQob2JqKSB7XG5cdCAgaWYgKCFoYXNB
cnJheU5hdHVyZShvYmopKSB7XG5cdCAgICByZXR1cm4gW29ial07XG5cdCAgfSBlbHNlIGlmIChB
cnJheS5pc0FycmF5KG9iaikpIHtcblx0ICAgIHJldHVybiBvYmouc2xpY2UoKTtcblx0ICB9IGVs
c2Uge1xuXHQgICAgcmV0dXJuIHRvQXJyYXkob2JqKTtcblx0ICB9XG5cdH1cblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gY3JlYXRlQXJyYXlGcm9tTWl4ZWQ7XG5cbi8qKiovIH0sXG4vKiAxMDIgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICogQHR5cGVjaGVja3Ncblx0ICovXG5cdFxuXHQvKmVzbGludC1kaXNh
YmxlIGZiLXd3dy91bnNhZmUtaHRtbCovXG5cdFxuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHRcblx0dmFyIGNyZWF0ZUFycmF5RnJvbU1peGVk
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDEpO1xuXHR2YXIgZ2V0TWFya3VwV3JhcCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTAzKTtcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJl
X18oMSk7XG5cdFxuXHQvKipcblx0ICogRHVtbXkgY29udGFpbmVyIHVzZWQgdG8gcmVuZGVyIGFs
bCBtYXJrdXAuXG5cdCAqL1xuXHR2YXIgZHVtbXlOb2RlID0gRXhlY3V0aW9uRW52aXJvbm1lbnQu
Y2FuVXNlRE9NID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykgOiBudWxsO1xuXHRcblx0
LyoqXG5cdCAqIFBhdHRlcm4gdXNlZCBieSBgZ2V0Tm9kZU5hbWVgLlxuXHQgKi9cblx0dmFyIG5v
ZGVOYW1lUGF0dGVybiA9IC9eXFxzKjwoXFx3KykvO1xuXHRcblx0LyoqXG5cdCAqIEV4dHJhY3Rz
IHRoZSBgbm9kZU5hbWVgIG9mIHRoZSBmaXJzdCBlbGVtZW50IGluIGEgc3RyaW5nIG9mIG1hcmt1
cC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBTdHJpbmcgb2YgbWFya3VwLlxu
XHQgKiBAcmV0dXJuIHs/c3RyaW5nfSBOb2RlIG5hbWUgb2YgdGhlIHN1cHBsaWVkIG1hcmt1cC5c
blx0ICovXG5cdGZ1bmN0aW9uIGdldE5vZGVOYW1lKG1hcmt1cCkge1xuXHQgIHZhciBub2RlTmFt
ZU1hdGNoID0gbWFya3VwLm1hdGNoKG5vZGVOYW1lUGF0dGVybik7XG5cdCAgcmV0dXJuIG5vZGVO
YW1lTWF0Y2ggJiYgbm9kZU5hbWVNYXRjaFsxXS50b0xvd2VyQ2FzZSgpO1xuXHR9XG5cdFxuXHQv
Kipcblx0ICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBub2RlcyByZW5kZXJlZCBm
cm9tIHRoZSBzdXBwbGllZCBtYXJrdXAuIFRoZVxuXHQgKiBvcHRpb25hbGx5IHN1cHBsaWVkIGBo
YW5kbGVTY3JpcHRgIGZ1bmN0aW9uIHdpbGwgYmUgaW52b2tlZCBvbmNlIGZvciBlYWNoXG5cdCAq
IDxzY3JpcHQ+IGVsZW1lbnQgdGhhdCBpcyByZW5kZXJlZC4gSWYgbm8gYGhhbmRsZVNjcmlwdGAg
ZnVuY3Rpb24gaXMgc3VwcGxpZWQsXG5cdCAqIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgYW55
IDxzY3JpcHQ+IGVsZW1lbnRzIGFyZSByZW5kZXJlZC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJp
bmd9IG1hcmt1cCBBIHN0cmluZyBvZiB2YWxpZCBIVE1MIG1hcmt1cC5cblx0ICogQHBhcmFtIHs/
ZnVuY3Rpb259IGhhbmRsZVNjcmlwdCBJbnZva2VkIG9uY2UgZm9yIGVhY2ggcmVuZGVyZWQgPHNj
cmlwdD4uXG5cdCAqIEByZXR1cm4ge2FycmF5PERPTUVsZW1lbnR8RE9NVGV4dE5vZGU+fSBBbiBh
cnJheSBvZiByZW5kZXJlZCBub2Rlcy5cblx0ICovXG5cdGZ1bmN0aW9uIGNyZWF0ZU5vZGVzRnJv
bU1hcmt1cChtYXJrdXAsIGhhbmRsZVNjcmlwdCkge1xuXHQgIHZhciBub2RlID0gZHVtbXlOb2Rl
O1xuXHQgICEhIWR1bW15Tm9kZSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2NyZWF0ZU5v
ZGVzRnJvbU1hcmt1cCBkdW1teSBub3QgaW5pdGlhbGl6ZWQnKSA6IGludmFyaWFudChmYWxzZSkg
OiB2b2lkIDA7XG5cdCAgdmFyIG5vZGVOYW1lID0gZ2V0Tm9kZU5hbWUobWFya3VwKTtcblx0XG5c
dCAgdmFyIHdyYXAgPSBub2RlTmFtZSAmJiBnZXRNYXJrdXBXcmFwKG5vZGVOYW1lKTtcblx0ICBp
ZiAod3JhcCkge1xuXHQgICAgbm9kZS5pbm5lckhUTUwgPSB3cmFwWzFdICsgbWFya3VwICsgd3Jh
cFsyXTtcblx0XG5cdCAgICB2YXIgd3JhcERlcHRoID0gd3JhcFswXTtcblx0ICAgIHdoaWxlICh3
cmFwRGVwdGgtLSkge1xuXHQgICAgICBub2RlID0gbm9kZS5sYXN0Q2hpbGQ7XG5cdCAgICB9XG5c
dCAgfSBlbHNlIHtcblx0ICAgIG5vZGUuaW5uZXJIVE1MID0gbWFya3VwO1xuXHQgIH1cblx0XG5c
dCAgdmFyIHNjcmlwdHMgPSBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTtcblx0
ICBpZiAoc2NyaXB0cy5sZW5ndGgpIHtcblx0ICAgICFoYW5kbGVTY3JpcHQgPyAgZmFsc2UgPyBp
bnZhcmlhbnQoZmFsc2UsICdjcmVhdGVOb2Rlc0Zyb21NYXJrdXAoLi4uKTogVW5leHBlY3RlZCA8
c2NyaXB0PiBlbGVtZW50IHJlbmRlcmVkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtc
blx0ICAgIGNyZWF0ZUFycmF5RnJvbU1peGVkKHNjcmlwdHMpLmZvckVhY2goaGFuZGxlU2NyaXB0
KTtcblx0ICB9XG5cdFxuXHQgIHZhciBub2RlcyA9IEFycmF5LmZyb20obm9kZS5jaGlsZE5vZGVz
KTtcblx0ICB3aGlsZSAobm9kZS5sYXN0Q2hpbGQpIHtcblx0ICAgIG5vZGUucmVtb3ZlQ2hpbGQo
bm9kZS5sYXN0Q2hpbGQpO1xuXHQgIH1cblx0ICByZXR1cm4gbm9kZXM7XG5cdH1cblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gY3JlYXRlTm9kZXNGcm9tTWFya3VwO1xuXG4vKioqLyB9LFxuLyogMTAz
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0Lyplc2xpbnQtZGlzYWJsZSBmYi13d3cvdW5z
YWZlLWh0bWwgKi9cblx0XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFja19y
ZXF1aXJlX18oNik7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
KTtcblx0XG5cdC8qKlxuXHQgKiBEdW1teSBjb250YWluZXIgdXNlZCB0byBkZXRlY3Qgd2hpY2gg
d3JhcHMgYXJlIG5lY2Vzc2FyeS5cblx0ICovXG5cdHZhciBkdW1teU5vZGUgPSBFeGVjdXRpb25F
bnZpcm9ubWVudC5jYW5Vc2VET00gPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSA6IG51
bGw7XG5cdFxuXHQvKipcblx0ICogU29tZSBicm93c2VycyBjYW5ub3QgdXNlIGBpbm5lckhUTUxg
IHRvIHJlbmRlciBjZXJ0YWluIGVsZW1lbnRzIHN0YW5kYWxvbmUsXG5cdCAqIHNvIHdlIHdyYXAg
dGhlbSwgcmVuZGVyIHRoZSB3cmFwcGVkIG5vZGVzLCB0aGVuIGV4dHJhY3QgdGhlIGRlc2lyZWQg
bm9kZS5cblx0ICpcblx0ICogSW4gSUU4LCBjZXJ0YWluIGVsZW1lbnRzIGNhbm5vdCByZW5kZXIg
YWxvbmUsIHNvIHdyYXAgYWxsIGVsZW1lbnRzICgnKicpLlxuXHQgKi9cblx0XG5cdHZhciBzaG91
bGRXcmFwID0ge307XG5cdFxuXHR2YXIgc2VsZWN0V3JhcCA9IFsxLCAnPHNlbGVjdCBtdWx0aXBs
ZT1cInRydWVcIj4nLCAnPC9zZWxlY3Q+J107XG5cdHZhciB0YWJsZVdyYXAgPSBbMSwgJzx0YWJs
ZT4nLCAnPC90YWJsZT4nXTtcblx0dmFyIHRyV3JhcCA9IFszLCAnPHRhYmxlPjx0Ym9keT48dHI+
JywgJzwvdHI+PC90Ym9keT48L3RhYmxlPiddO1xuXHRcblx0dmFyIHN2Z1dyYXAgPSBbMSwgJzxz
dmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPicsICc8L3N2Zz4nXTtcblx0
XG5cdHZhciBtYXJrdXBXcmFwID0ge1xuXHQgICcqJzogWzEsICc/PGRpdj4nLCAnPC9kaXY+J10s
XG5cdFxuXHQgICdhcmVhJzogWzEsICc8bWFwPicsICc8L21hcD4nXSxcblx0ICAnY29sJzogWzIs
ICc8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPicsICc8L2NvbGdyb3VwPjwvdGFibGU+
J10sXG5cdCAgJ2xlZ2VuZCc6IFsxLCAnPGZpZWxkc2V0PicsICc8L2ZpZWxkc2V0PiddLFxuXHQg
ICdwYXJhbSc6IFsxLCAnPG9iamVjdD4nLCAnPC9vYmplY3Q+J10sXG5cdCAgJ3RyJzogWzIsICc8
dGFibGU+PHRib2R5PicsICc8L3Rib2R5PjwvdGFibGU+J10sXG5cdFxuXHQgICdvcHRncm91cCc6
IHNlbGVjdFdyYXAsXG5cdCAgJ29wdGlvbic6IHNlbGVjdFdyYXAsXG5cdFxuXHQgICdjYXB0aW9u
JzogdGFibGVXcmFwLFxuXHQgICdjb2xncm91cCc6IHRhYmxlV3JhcCxcblx0ICAndGJvZHknOiB0
YWJsZVdyYXAsXG5cdCAgJ3Rmb290JzogdGFibGVXcmFwLFxuXHQgICd0aGVhZCc6IHRhYmxlV3Jh
cCxcblx0XG5cdCAgJ3RkJzogdHJXcmFwLFxuXHQgICd0aCc6IHRyV3JhcFxuXHR9O1xuXHRcblx0
Ly8gSW5pdGlhbGl6ZSB0aGUgU1ZHIGVsZW1lbnRzIHNpbmNlIHdlIGtub3cgdGhleSdsbCBhbHdh
eXMgbmVlZCB0byBiZSB3cmFwcGVkXG5cdC8vIGNvbnNpc3RlbnRseS4gSWYgdGhleSBhcmUgY3Jl
YXRlZCBpbnNpZGUgYSA8ZGl2PiB0aGV5IHdpbGwgYmUgaW5pdGlhbGl6ZWQgaW5cblx0Ly8gdGhl
IHdyb25nIG5hbWVzcGFjZSAoYW5kIHdpbGwgbm90IGRpc3BsYXkpLlxuXHR2YXIgc3ZnRWxlbWVu
dHMgPSBbJ2NpcmNsZScsICdjbGlwUGF0aCcsICdkZWZzJywgJ2VsbGlwc2UnLCAnZycsICdpbWFn
ZScsICdsaW5lJywgJ2xpbmVhckdyYWRpZW50JywgJ21hc2snLCAncGF0aCcsICdwYXR0ZXJuJywg
J3BvbHlnb24nLCAncG9seWxpbmUnLCAncmFkaWFsR3JhZGllbnQnLCAncmVjdCcsICdzdG9wJywg
J3RleHQnLCAndHNwYW4nXTtcblx0c3ZnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobm9kZU5h
bWUpIHtcblx0ICBtYXJrdXBXcmFwW25vZGVOYW1lXSA9IHN2Z1dyYXA7XG5cdCAgc2hvdWxkV3Jh
cFtub2RlTmFtZV0gPSB0cnVlO1xuXHR9KTtcblx0XG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBtYXJr
dXAgd3JhcCBjb25maWd1cmF0aW9uIGZvciB0aGUgc3VwcGxpZWQgYG5vZGVOYW1lYC5cblx0ICpc
blx0ICogTk9URTogVGhpcyBsYXppbHkgZGV0ZWN0cyB3aGljaCB3cmFwcyBhcmUgbmVjZXNzYXJ5
IGZvciB0aGUgY3VycmVudCBicm93c2VyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbm9k
ZU5hbWUgTG93ZXJjYXNlIGBub2RlTmFtZWAuXG5cdCAqIEByZXR1cm4gez9hcnJheX0gTWFya3Vw
IHdyYXAgY29uZmlndXJhdGlvbiwgaWYgYXBwbGljYWJsZS5cblx0ICovXG5cdGZ1bmN0aW9uIGdl
dE1hcmt1cFdyYXAobm9kZU5hbWUpIHtcblx0ICAhISFkdW1teU5vZGUgPyAgZmFsc2UgPyBpbnZh
cmlhbnQoZmFsc2UsICdNYXJrdXAgd3JhcHBpbmcgbm9kZSBub3QgaW5pdGlhbGl6ZWQnKSA6IGlu
dmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG5cdCAgaWYgKCFtYXJrdXBXcmFwLmhhc093blByb3Bl
cnR5KG5vZGVOYW1lKSkge1xuXHQgICAgbm9kZU5hbWUgPSAnKic7XG5cdCAgfVxuXHQgIGlmICgh
c2hvdWxkV3JhcC5oYXNPd25Qcm9wZXJ0eShub2RlTmFtZSkpIHtcblx0ICAgIGlmIChub2RlTmFt
ZSA9PT0gJyonKSB7XG5cdCAgICAgIGR1bW15Tm9kZS5pbm5lckhUTUwgPSAnPGxpbmsgLz4nO1xu
XHQgICAgfSBlbHNlIHtcblx0ICAgICAgZHVtbXlOb2RlLmlubmVySFRNTCA9ICc8JyArIG5vZGVO
YW1lICsgJz48LycgKyBub2RlTmFtZSArICc+Jztcblx0ICAgIH1cblx0ICAgIHNob3VsZFdyYXBb
bm9kZU5hbWVdID0gIWR1bW15Tm9kZS5maXJzdENoaWxkO1xuXHQgIH1cblx0ICByZXR1cm4gc2hv
dWxkV3JhcFtub2RlTmFtZV0gPyBtYXJrdXBXcmFwW25vZGVOYW1lXSA6IG51bGw7XG5cdH1cblx0
XG5cdG1vZHVsZS5leHBvcnRzID0gZ2V0TWFya3VwV3JhcDtcblxuLyoqKi8gfSxcbi8qIDEwNCAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHly
aWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBAdHlwZWNoZWNrc1xuXHQgKi9cblx0
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBzY3JvbGwgcG9zaXRp
b24gb2YgdGhlIHN1cHBsaWVkIGVsZW1lbnQgb3Igd2luZG93LlxuXHQgKlxuXHQgKiBUaGUgcmV0
dXJuIHZhbHVlcyBhcmUgdW5ib3VuZGVkLCB1bmxpa2UgYGdldFNjcm9sbFBvc2l0aW9uYC4gVGhp
cyBtZWFucyB0aGV5XG5cdCAqIG1heSBiZSBuZWdhdGl2ZSBvciBleGNlZWQgdGhlIGVsZW1lbnQg
Ym91bmRhcmllcyAod2hpY2ggaXMgcG9zc2libGUgdXNpbmdcblx0ICogaW5lcnRpYWwgc2Nyb2xs
aW5nKS5cblx0ICpcblx0ICogQHBhcmFtIHtET01XaW5kb3d8RE9NRWxlbWVudH0gc2Nyb2xsYWJs
ZVxuXHQgKiBAcmV0dXJuIHtvYmplY3R9IE1hcCB3aXRoIGB4YCBhbmQgYHlgIGtleXMuXG5cdCAq
L1xuXHRcblx0ZnVuY3Rpb24gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24oc2Nyb2xsYWJsZSkg
e1xuXHQgIGlmIChzY3JvbGxhYmxlLldpbmRvdyAmJiBzY3JvbGxhYmxlIGluc3RhbmNlb2Ygc2Ny
b2xsYWJsZS5XaW5kb3cpIHtcblx0ICAgIHJldHVybiB7XG5cdCAgICAgIHg6IHNjcm9sbGFibGUu
cGFnZVhPZmZzZXQgfHwgc2Nyb2xsYWJsZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xs
TGVmdCxcblx0ICAgICAgeTogc2Nyb2xsYWJsZS5wYWdlWU9mZnNldCB8fCBzY3JvbGxhYmxlLmRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3Bcblx0ICAgIH07XG5cdCAgfVxuXHQgIHJl
dHVybiB7XG5cdCAgICB4OiBzY3JvbGxhYmxlLnNjcm9sbExlZnQsXG5cdCAgICB5OiBzY3JvbGxh
YmxlLnNjcm9sbFRvcFxuXHQgIH07XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZ2V0VW5i
b3VuZGVkU2Nyb2xsUG9zaXRpb247XG5cbi8qKiovIH0sXG4vKiAxMDUgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogQHR5cGVjaGVja3Ncblx0
ICovXG5cdFxuXHR2YXIgX3VwcGVyY2FzZVBhdHRlcm4gPSAvKFtBLVpdKS9nO1xuXHRcblx0Lyoq
XG5cdCAqIEh5cGhlbmF0ZXMgYSBjYW1lbGNhc2VkIHN0cmluZywgZm9yIGV4YW1wbGU6XG5cdCAq
XG5cdCAqICAgPiBoeXBoZW5hdGUoJ2JhY2tncm91bmRDb2xvcicpXG5cdCAqICAgPCBcImJhY2tn
cm91bmQtY29sb3JcIlxuXHQgKlxuXHQgKiBGb3IgQ1NTIHN0eWxlIG5hbWVzLCB1c2UgYGh5cGhl
bmF0ZVN0eWxlTmFtZWAgaW5zdGVhZCB3aGljaCB3b3JrcyBwcm9wZXJseVxuXHQgKiB3aXRoIGFs
bCB2ZW5kb3IgcHJlZml4ZXMsIGluY2x1ZGluZyBgbXNgLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0
cmluZ30gc3RyaW5nXG5cdCAqIEByZXR1cm4ge3N0cmluZ31cblx0ICovXG5cdGZ1bmN0aW9uIGh5
cGhlbmF0ZShzdHJpbmcpIHtcblx0ICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoX3VwcGVyY2FzZVBh
dHRlcm4sICctJDEnKS50b0xvd2VyQ2FzZSgpO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IGh5cGhlbmF0ZTtcblxuLyoqKi8gfSxcbi8qIDEwNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdo
dCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5c
dCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBAdHlwZWNoZWNrc1xuXHQgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBoeXBoZW5hdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDEwNSk7XG5cdFxuXHR2YXIgbXNQYXR0ZXJuID0gL15tcy0vO1xuXHRcblx0LyoqXG5cdCAqIEh5
cGhlbmF0ZXMgYSBjYW1lbGNhc2VkIENTUyBwcm9wZXJ0eSBuYW1lLCBmb3IgZXhhbXBsZTpcblx0
ICpcblx0ICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnYmFja2dyb3VuZENvbG9yJylcblx0ICog
ICA8IFwiYmFja2dyb3VuZC1jb2xvclwiXG5cdCAqICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ01v
elRyYW5zaXRpb24nKVxuXHQgKiAgIDwgXCItbW96LXRyYW5zaXRpb25cIlxuXHQgKiAgID4gaHlw
aGVuYXRlU3R5bGVOYW1lKCdtc1RyYW5zaXRpb24nKVxuXHQgKiAgIDwgXCItbXMtdHJhbnNpdGlv
blwiXG5cdCAqXG5cdCAqIEFzIE1vZGVybml6ciBzdWdnZXN0cyAoaHR0cDovL21vZGVybml6ci5j
b20vZG9jcy8jcHJlZml4ZWQpLCBhbiBgbXNgIHByZWZpeFxuXHQgKiBpcyBjb252ZXJ0ZWQgdG8g
YC1tcy1gLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG5cdCAqIEByZXR1cm4g
e3N0cmluZ31cblx0ICovXG5cdGZ1bmN0aW9uIGh5cGhlbmF0ZVN0eWxlTmFtZShzdHJpbmcpIHtc
blx0ICByZXR1cm4gaHlwaGVuYXRlKHN0cmluZykucmVwbGFjZShtc1BhdHRlcm4sICctbXMtJyk7
XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gaHlwaGVuYXRlU3R5bGVOYW1lO1xuXG4vKioq
LyB9LFxuLyogMTA3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqIEB0eXBlY2hlY2tzXG5cdCAqL1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7
Kn0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2hlY2suXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IFdo
ZXRoZXIgb3Igbm90IHRoZSBvYmplY3QgaXMgYSBET00gbm9kZS5cblx0ICovXG5cdGZ1bmN0aW9u
IGlzTm9kZShvYmplY3QpIHtcblx0ICB2YXIgZG9jID0gb2JqZWN0ID8gb2JqZWN0Lm93bmVyRG9j
dW1lbnQgfHwgb2JqZWN0IDogZG9jdW1lbnQ7XG5cdCAgdmFyIGRlZmF1bHRWaWV3ID0gZG9jLmRl
ZmF1bHRWaWV3IHx8IHdpbmRvdztcblx0ICByZXR1cm4gISEob2JqZWN0ICYmICh0eXBlb2YgZGVm
YXVsdFZpZXcuTm9kZSA9PT0gJ2Z1bmN0aW9uJyA/IG9iamVjdCBpbnN0YW5jZW9mIGRlZmF1bHRW
aWV3Lk5vZGUgOiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqZWN0Lm5v
ZGVUeXBlID09PSAnbnVtYmVyJyAmJiB0eXBlb2Ygb2JqZWN0Lm5vZGVOYW1lID09PSAnc3RyaW5n
JykpO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGlzTm9kZTtcblxuLyoqKi8gfSxcbi8q
IDEwOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
XHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBAdHlwZWNoZWNrc1xuXHQgKi9cblx0XG5cdHZhciBp
c05vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNyk7XG5cdFxuXHQvKipcblx0ICogQHBhcmFt
IHsqfSBvYmplY3QgVGhlIG9iamVjdCB0byBjaGVjay5cblx0ICogQHJldHVybiB7Ym9vbGVhbn0g
V2hldGhlciBvciBub3QgdGhlIG9iamVjdCBpcyBhIERPTSB0ZXh0IG5vZGUuXG5cdCAqL1xuXHRm
dW5jdGlvbiBpc1RleHROb2RlKG9iamVjdCkge1xuXHQgIHJldHVybiBpc05vZGUob2JqZWN0KSAm
JiBvYmplY3Qubm9kZVR5cGUgPT0gMztcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBpc1Rl
eHROb2RlO1xuXG4vKioqLyB9LFxuLyogMTA5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqIFxuXHQgKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuXHQgKi9cblx0XG5cdCd1c2Ug
c3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBNZW1vaXplcyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEg
ZnVuY3Rpb24gdGhhdCBhY2NlcHRzIG9uZSBzdHJpbmcgYXJndW1lbnQuXG5cdCAqL1xuXHRcblx0
ZnVuY3Rpb24gbWVtb2l6ZVN0cmluZ09ubHkoY2FsbGJhY2spIHtcblx0ICB2YXIgY2FjaGUgPSB7
fTtcblx0ICByZXR1cm4gZnVuY3Rpb24gKHN0cmluZykge1xuXHQgICAgaWYgKCFjYWNoZS5oYXNP
d25Qcm9wZXJ0eShzdHJpbmcpKSB7XG5cdCAgICAgIGNhY2hlW3N0cmluZ10gPSBjYWxsYmFjay5j
YWxsKHRoaXMsIHN0cmluZyk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gY2FjaGVbc3RyaW5nXTtc
blx0ICB9O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IG1lbW9pemVTdHJpbmdPbmx5O1xu
XG4vKioqLyB9LFxuLyogMTEwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtc
blxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTUsIFlhaG9vISBJbmMuXG5cdCAqIENvcHlyaWdo
dHMgbGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlp
bmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cblx0ICovXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5c
dHZhciBSRUFDVF9TVEFUSUNTID0ge1xuXHQgICAgY2hpbGRDb250ZXh0VHlwZXM6IHRydWUsXG5c
dCAgICBjb250ZXh0VHlwZXM6IHRydWUsXG5cdCAgICBkZWZhdWx0UHJvcHM6IHRydWUsXG5cdCAg
ICBkaXNwbGF5TmFtZTogdHJ1ZSxcblx0ICAgIGdldERlZmF1bHRQcm9wczogdHJ1ZSxcblx0ICAg
IG1peGluczogdHJ1ZSxcblx0ICAgIHByb3BUeXBlczogdHJ1ZSxcblx0ICAgIHR5cGU6IHRydWVc
blx0fTtcblx0XG5cdHZhciBLTk9XTl9TVEFUSUNTID0ge1xuXHQgIG5hbWU6IHRydWUsXG5cdCAg
bGVuZ3RoOiB0cnVlLFxuXHQgIHByb3RvdHlwZTogdHJ1ZSxcblx0ICBjYWxsZXI6IHRydWUsXG5c
dCAgY2FsbGVlOiB0cnVlLFxuXHQgIGFyZ3VtZW50czogdHJ1ZSxcblx0ICBhcml0eTogdHJ1ZVxu
XHR9O1xuXHRcblx0dmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xu
XHR2YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xu
XHR2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s
cztcblx0dmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3I7XG5cdHZhciBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVP
Zjtcblx0dmFyIG9iamVjdFByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mICYmIGdldFByb3RvdHlw
ZU9mKE9iamVjdCk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGhvaXN0Tm9uUmVh
Y3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgc291cmNlQ29tcG9uZW50LCBibGFja2xpc3QpIHtc
blx0ICAgIGlmICh0eXBlb2Ygc291cmNlQ29tcG9uZW50ICE9PSAnc3RyaW5nJykgeyAvLyBkb24n
dCBob2lzdCBvdmVyIHN0cmluZyAoaHRtbCkgY29tcG9uZW50c1xuXHRcblx0ICAgICAgICBpZiAo
b2JqZWN0UHJvdG90eXBlKSB7XG5cdCAgICAgICAgICAgIHZhciBpbmhlcml0ZWRDb21wb25lbnQg
PSBnZXRQcm90b3R5cGVPZihzb3VyY2VDb21wb25lbnQpO1xuXHQgICAgICAgICAgICBpZiAoaW5o
ZXJpdGVkQ29tcG9uZW50ICYmIGluaGVyaXRlZENvbXBvbmVudCAhPT0gb2JqZWN0UHJvdG90eXBl
KSB7XG5cdCAgICAgICAgICAgICAgICBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25l
bnQsIGluaGVyaXRlZENvbXBvbmVudCwgYmxhY2tsaXN0KTtcblx0ICAgICAgICAgICAgfVxuXHQg
ICAgICAgIH1cblx0XG5cdCAgICAgICAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKHNv
dXJjZUNvbXBvbmVudCk7XG5cdFxuXHQgICAgICAgIGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMp
IHtcblx0ICAgICAgICAgICAga2V5cyA9IGtleXMuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9s
cyhzb3VyY2VDb21wb25lbnQpKTtcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuXHQgICAgICAgICAgICB2YXIga2V5ID0g
a2V5c1tpXTtcblx0ICAgICAgICAgICAgaWYgKCFSRUFDVF9TVEFUSUNTW2tleV0gJiYgIUtOT1dO
X1NUQVRJQ1Nba2V5XSAmJiAoIWJsYWNrbGlzdCB8fCAhYmxhY2tsaXN0W2tleV0pKSB7XG5cdCAg
ICAgICAgICAgICAgICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihz
b3VyY2VDb21wb25lbnQsIGtleSk7XG5cdCAgICAgICAgICAgICAgICB0cnkgeyAvLyBBdm9pZCBm
YWlsdXJlcyBmcm9tIHJlYWQtb25seSBwcm9wZXJ0aWVzXG5cdCAgICAgICAgICAgICAgICAgICAg
ZGVmaW5lUHJvcGVydHkodGFyZ2V0Q29tcG9uZW50LCBrZXksIGRlc2NyaXB0b3IpO1xuXHQgICAg
ICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1c
blx0XG5cdCAgICAgICAgcmV0dXJuIHRhcmdldENvbXBvbmVudDtcblx0ICAgIH1cblx0XG5cdCAg
ICByZXR1cm4gdGFyZ2V0Q29tcG9uZW50O1xuXHR9O1xuXG5cbi8qKiovIH0sXG4vKiAxMTEgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdC8qKlxuXHQgKiBVc2UgaW52YXJpYW50KCkgdG8gYXNzZXJ0IHN0YXRlIHdo
aWNoIHlvdXIgcHJvZ3JhbSBhc3N1bWVzIHRvIGJlIHRydWUuXG5cdCAqXG5cdCAqIFByb3ZpZGUg
c3ByaW50Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRz
XG5cdCAqIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBicm9rZSBhbmQgd2hhdCB5
b3Ugd2VyZVxuXHQgKiBleHBlY3RpbmcuXG5cdCAqXG5cdCAqIFRoZSBpbnZhcmlhbnQgbWVzc2Fn
ZSB3aWxsIGJlIHN0cmlwcGVkIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgaW52YXJpYW50XG5cdCAq
IHdpbGwgcmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5vdCBkaWZmZXIgaW4gcHJvZHVjdGlv
bi5cblx0ICovXG5cdFxuXHR2YXIgaW52YXJpYW50ID0gZnVuY3Rpb24oY29uZGl0aW9uLCBmb3Jt
YXQsIGEsIGIsIGMsIGQsIGUsIGYpIHtcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIGlmIChmb3Jt
YXQgPT09IHVuZGVmaW5lZCkge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCBy
ZXF1aXJlcyBhbiBlcnJvciBtZXNzYWdlIGFyZ3VtZW50Jyk7XG5cdCAgICB9XG5cdCAgfVxuXHRc
blx0ICBpZiAoIWNvbmRpdGlvbikge1xuXHQgICAgdmFyIGVycm9yO1xuXHQgICAgaWYgKGZvcm1h
dCA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgIGVycm9yID0gbmV3IEVycm9yKFxuXHQgICAgICAg
ICdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBl
bnZpcm9ubWVudCAnICtcblx0ICAgICAgICAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5k
IGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nXG5cdCAgICAgICk7XG5cdCAgICB9IGVsc2Ug
e1xuXHQgICAgICB2YXIgYXJncyA9IFthLCBiLCBjLCBkLCBlLCBmXTtcblx0ICAgICAgdmFyIGFy
Z0luZGV4ID0gMDtcblx0ICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG5cdCAgICAgICAgZm9ybWF0
LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJnc1thcmdJbmRleCsrXTsgfSlc
blx0ICAgICAgKTtcblx0ICAgICAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztc
blx0ICAgIH1cblx0XG5cdCAgICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNh
cmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG5cdCAgICB0aHJvdyBlcnJvcjtcblx0ICB9
XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGludmFyaWFudDtcblxuXG4vKioqLyB9LFxu
LyogMTEyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXHR2YXIgU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NCksXG5cdCAg
ICBnZXRSYXdUYWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNSksXG5cdCAgICBvYmplY3RUb1N0
cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTE2KTtcblx0XG5cdC8qKiBgT2JqZWN0I3RvU3Ry
aW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cblx0dmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxs
XScsXG5cdCAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJztcblx0XG5cdC8q
KiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xuXHR2YXIgc3ltVG9TdHJpbmdUYWcgPSBT
eW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cdFxuXHQvKipcblx0ICog
VGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9y
IGJ1Z2d5IGVudmlyb25tZW50cy5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHsq
fSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVy
bnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG5cdCAqL1xuXHRmdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVl
KSB7XG5cdCAgaWYgKHZhbHVlID09IG51bGwpIHtcblx0ICAgIHJldHVybiB2YWx1ZSA9PT0gdW5k
ZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcblx0ICB9XG5cdCAgcmV0dXJuIChzeW1U
b1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuXHQgICAgPyBn
ZXRSYXdUYWcodmFsdWUpXG5cdCAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcblx0fVxuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0VGFnO1xuXG5cbi8qKiovIH0sXG4vKiAxMTMgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qIFdFQlBBQ0sgVkFSIElO
SkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwpIHsvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGds
b2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xuXHR2YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwg
PT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9i
YWw7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7XG5cdFxuXHQvKiBXRUJQQUNL
IFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhp
czsgfSgpKSkpXG5cbi8qKiovIH0sXG4vKiAxMTQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBvdmVyQXJnID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxMTcpO1xuXHRcblx0LyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMu
ICovXG5cdHZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwg
T2JqZWN0KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZ2V0UHJvdG90eXBlO1xuXG5cbi8qKiov
IH0sXG4vKiAxMTUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cdHZhciBTeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU0KTtc
blx0XG5cdC8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cblx0dmFy
IG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblx0XG5cdC8qKiBVc2VkIHRvIGNoZWNr
IG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xuXHR2YXIgaGFzT3duUHJvcGVydHkgPSBv
YmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblx0XG5cdC8qKlxuXHQgKiBVc2VkIHRvIHJlc29s
dmUgdGhlXG5cdCAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9y
Zy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuXHQgKiBvZiB2
YWx1ZXMuXG5cdCAqL1xuXHR2YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50
b1N0cmluZztcblx0XG5cdC8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xuXHR2YXIg
c3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7
XG5cdFxuXHQvKipcblx0ICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3
aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cblx0ICpcblx0ICogQHBy
aXZhdGVcblx0ICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG5cdCAqIEBy
ZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdUYWdgLlxuXHQgKi9cblx0
ZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG5cdCAgdmFyIGlzT3duID0gaGFzT3duUHJvcGVy
dHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLFxuXHQgICAgICB0YWcgPSB2YWx1ZVtzeW1U
b1N0cmluZ1RhZ107XG5cdFxuXHQgIHRyeSB7XG5cdCAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10g
PSB1bmRlZmluZWQ7XG5cdCAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuXHQgIH0gY2F0Y2ggKGUp
IHt9XG5cdFxuXHQgIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVl
KTtcblx0ICBpZiAodW5tYXNrZWQpIHtcblx0ICAgIGlmIChpc093bikge1xuXHQgICAgICB2YWx1
ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBkZWxldGUg
dmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gcmVzdWx0
O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldFJhd1RhZztcblxuXG4vKioqLyB9LFxu
LyogMTE2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKiogVXNl
ZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG5cdHZhciBvYmplY3RQcm90byA9
IE9iamVjdC5wcm90b3R5cGU7XG5cdFxuXHQvKipcblx0ICogVXNlZCB0byByZXNvbHZlIHRoZVxu
XHQgKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0y
NjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcblx0ICogb2YgdmFsdWVzLlxu
XHQgKi9cblx0dmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7
XG5cdFxuXHQvKipcblx0ICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2Jq
ZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJh
bSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9
IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG5cdCAqL1xuXHRmdW5jdGlvbiBvYmplY3RU
b1N0cmluZyh2YWx1ZSkge1xuXHQgIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZh
bHVlKTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBvYmplY3RUb1N0cmluZztcblxuXG4v
KioqLyB9LFxuLyogMTE3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxu
XHQvKipcblx0ICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Ag
d2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAq
IEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG5cdCAqIEBwYXJh
bSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuXHQgKiBAcmV0
dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cblx0ICovXG5cdGZ1bmN0
aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uKGFyZykg
e1xuXHQgICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuXHQgIH07XG5cdH1cblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcblxuXG4vKioqLyB9LFxuLyogMTE4ICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2
YXIgZnJlZUdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEzKTtcblx0XG5cdC8qKiBEZXRl
Y3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG5cdHZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxm
ID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xu
XHRcblx0LyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG5c
dHZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRo
aXMnKSgpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSByb290O1xuXG5cbi8qKiovIH0sXG4vKiAx
MTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBD
aGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBp
ZiBpdCdzIG5vdCBgbnVsbGBcblx0ICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9i
amVjdFwiLlxuXHQgKlxuXHQgKiBAc3RhdGljXG5cdCAqIEBtZW1iZXJPZiBfXG5cdCAqIEBzaW5j
ZSA0LjAuMFxuXHQgKiBAY2F0ZWdvcnkgTGFuZ1xuXHQgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2
YWx1ZSB0byBjaGVjay5cblx0ICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlm
IGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cblx0ICogQGV4YW1wbGVcblx0
ICpcblx0ICogXy5pc09iamVjdExpa2Uoe30pO1xuXHQgKiAvLyA9PiB0cnVlXG5cdCAqXG5cdCAq
IF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG5cdCAqIC8vID0+IHRydWVcblx0ICpcblx0ICog
Xy5pc09iamVjdExpa2UoXy5ub29wKTtcblx0ICogLy8gPT4gZmFsc2Vcblx0ICpcblx0ICogXy5p
c09iamVjdExpa2UobnVsbCk7XG5cdCAqIC8vID0+IGZhbHNlXG5cdCAqL1xuXHRmdW5jdGlvbiBp
c09iamVjdExpa2UodmFsdWUpIHtcblx0ICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2Yg
dmFsdWUgPT0gJ29iamVjdCc7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gaXNPYmplY3RM
aWtlO1xuXG5cbi8qKiovIH0sXG4vKiAxMjAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGlmIChmYWxzZSkg
e1xuXHQgIHZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblx0
ICB2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblx0ICB2YXIgUmVh
Y3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcp
O1xuXHQgIHZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcblx0fVxuXHRcblx0LyoqXG5cdCAq
IEFzc2VydCB0aGF0IHRoZSB2YWx1ZXMgbWF0Y2ggd2l0aCB0aGUgdHlwZSBzcGVjcy5cblx0ICog
RXJyb3IgbWVzc2FnZXMgYXJlIG1lbW9yaXplZCBhbmQgd2lsbCBvbmx5IGJlIHNob3duIG9uY2Uu
XG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIG5hbWUgdG8gYSBS
ZWFjdFByb3BUeXBlXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSB2YWx1ZXMgUnVudGltZSB2YWx1ZXMg
dGhhdCBuZWVkIHRvIGJlIHR5cGUtY2hlY2tlZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRp
b24gZS5nLiBcInByb3BcIiwgXCJjb250ZXh0XCIsIFwiY2hpbGQgY29udGV4dFwiXG5cdCAqIEBw
YXJhbSB7c3RyaW5nfSBjb21wb25lbnROYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCBmb3IgZXJy
b3IgbWVzc2FnZXMuXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBnZXRTdGFjayBSZXR1cm5zIHRo
ZSBjb21wb25lbnQgc3RhY2suXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiBjaGVj
a1Byb3BUeXBlcyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIGNvbXBvbmVudE5hbWUsIGdl
dFN0YWNrKSB7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBmb3IgKHZhciB0eXBlU3BlY05hbWUg
aW4gdHlwZVNwZWNzKSB7XG5cdCAgICAgIGlmICh0eXBlU3BlY3MuaGFzT3duUHJvcGVydHkodHlw
ZVNwZWNOYW1lKSkge1xuXHQgICAgICAgIHZhciBlcnJvcjtcblx0ICAgICAgICAvLyBQcm9wIHR5
cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIEluIGNhc2UgdGhleSBkbywgd2UgZG9uJ3Qgd2FudCB0
b1xuXHQgICAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFp
bCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cblx0ICAgICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJl
ZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG5cdCAgICAgICAgdHJ5IHtcblx0
ICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRz
IGNhdWdodC4gSXQncyB0aGUgc2FtZVxuXHQgICAgICAgICAgLy8gYmVoYXZpb3IgYXMgd2l0aG91
dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNzYWdlLlxuXHQgICAgICAg
ICAgaW52YXJpYW50KHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSA9PT0gJ2Z1bmN0aW9u
JywgJyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1
c3VhbGx5IGZyb20gJyArICdSZWFjdC5Qcm9wVHlwZXMuJywgY29tcG9uZW50TmFtZSB8fCAnUmVh
Y3QgY2xhc3MnLCBsb2NhdGlvbiwgdHlwZVNwZWNOYW1lKTtcblx0ICAgICAgICAgIGVycm9yID0g
dHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5h
bWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG5cdCAgICAgICAgfSBj
YXRjaCAoZXgpIHtcblx0ICAgICAgICAgIGVycm9yID0gZXg7XG5cdCAgICAgICAgfVxuXHQgICAg
ICAgIHdhcm5pbmcoIWVycm9yIHx8IGVycm9yIGluc3RhbmNlb2YgRXJyb3IsICclczogdHlwZSBz
cGVjaWZpY2F0aW9uIG9mICVzIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciAnICsg
J2Z1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1cm5lZCBh
ICVzLiAnICsgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVudCB0byB0
aGUgdHlwZSBjaGVja2VyICcgKyAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0
T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFsbCByZXF1aXJlIGFuIGFyZ3Vt
ZW50KS4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIGxvY2F0aW9uLCB0eXBlU3Bl
Y05hbWUsIHR5cGVvZiBlcnJvcik7XG5cdCAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJy
b3IgJiYgIShlcnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHtcblx0ICAgICAg
ICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRz
IHRvIGJlIGEgbG90IG9mIHRoZVxuXHQgICAgICAgICAgLy8gc2FtZSBlcnJvci5cblx0ICAgICAg
ICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9IHRydWU7XG5cdFxuXHQgICAg
ICAgICAgdmFyIHN0YWNrID0gZ2V0U3RhY2sgPyBnZXRTdGFjaygpIDogJyc7XG5cdFxuXHQgICAg
ICAgICAgd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCAlcyB0eXBlOiAlcyVzJywgbG9jYXRpb24sIGVy
cm9yLm1lc3NhZ2UsIHN0YWNrICE9IG51bGwgPyBzdGFjayA6ICcnKTtcblx0ICAgICAgICB9XG5c
dCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gY2hl
Y2tQcm9wVHlwZXM7XG5cblxuLyoqKi8gfSxcbi8qIDEyMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFy
IGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXHR2YXIgaW52YXJpYW50
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg1Nyk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9u
KCkge1xuXHQgIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBs
b2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcblx0ICAgIGlmIChzZWNyZXQgPT09IFJl
YWN0UHJvcFR5cGVzU2VjcmV0KSB7XG5cdCAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBj
YWxsZWQgZnJvbSBSZWFjdC5cblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgaW52YXJp
YW50KFxuXHQgICAgICBmYWxzZSxcblx0ICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRv
cnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2Uu
ICcgK1xuXHQgICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhl
bS4gJyArXG5cdCAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9w
LXR5cGVzJ1xuXHQgICAgKTtcblx0ICB9O1xuXHQgIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG5c
dCAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcblx0ICAgIHJldHVybiBzaGltO1xuXHQgIH07XG5cdCAg
Ly8gSW1wb3J0YW50IVxuXHQgIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0
aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuXHQgIHZhciBS
ZWFjdFByb3BUeXBlcyA9IHtcblx0ICAgIGFycmF5OiBzaGltLFxuXHQgICAgYm9vbDogc2hpbSxc
blx0ICAgIGZ1bmM6IHNoaW0sXG5cdCAgICBudW1iZXI6IHNoaW0sXG5cdCAgICBvYmplY3Q6IHNo
aW0sXG5cdCAgICBzdHJpbmc6IHNoaW0sXG5cdCAgICBzeW1ib2w6IHNoaW0sXG5cdFxuXHQgICAg
YW55OiBzaGltLFxuXHQgICAgYXJyYXlPZjogZ2V0U2hpbSxcblx0ICAgIGVsZW1lbnQ6IHNoaW0s
XG5cdCAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuXHQgICAgbm9kZTogc2hpbSxcblx0ICAgIG9i
amVjdE9mOiBnZXRTaGltLFxuXHQgICAgb25lT2Y6IGdldFNoaW0sXG5cdCAgICBvbmVPZlR5cGU6
IGdldFNoaW0sXG5cdCAgICBzaGFwZTogZ2V0U2hpbVxuXHQgIH07XG5cdFxuXHQgIFJlYWN0UHJv
cFR5cGVzLmNoZWNrUHJvcFR5cGVzID0gZW1wdHlGdW5jdGlvbjtcblx0ICBSZWFjdFByb3BUeXBl
cy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblx0XG5cdCAgcmV0dXJuIFJlYWN0UHJvcFR5
cGVzO1xuXHR9O1xuXG5cbi8qKiovIH0sXG4vKiAxMjIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBl
bXB0eUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblx0dmFyIGludmFyaWFudCA9
IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyKTtcblx0XG5cdHZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IF9fd2VicGFja19yZXF1
aXJlX18oNTcpO1xuXHR2YXIgY2hlY2tQcm9wVHlwZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEy
MCk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGlzVmFsaWRFbGVtZW50LCB0aHJv
d09uRGlyZWN0QWNjZXNzKSB7XG5cdCAgLyogZ2xvYmFsIFN5bWJvbCAqL1xuXHQgIHZhciBJVEVS
QVRPUl9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVy
YXRvcjtcblx0ICB2YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7IC8vIEJl
Zm9yZSBTeW1ib2wgc3BlYy5cblx0XG5cdCAgLyoqXG5cdCAgICogUmV0dXJucyB0aGUgaXRlcmF0
b3IgbWV0aG9kIGZ1bmN0aW9uIGNvbnRhaW5lZCBvbiB0aGUgaXRlcmFibGUgb2JqZWN0LlxuXHQg
ICAqXG5cdCAgICogQmUgc3VyZSB0byBpbnZva2UgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGl0ZXJh
YmxlIGFzIGNvbnRleHQ6XG5cdCAgICpcblx0ICAgKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJ
dGVyYXRvckZuKG15SXRlcmFibGUpO1xuXHQgICAqICAgICBpZiAoaXRlcmF0b3JGbikge1xuXHQg
ICAqICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChteUl0ZXJhYmxlKTtcblx0
ICAgKiAgICAgICAuLi5cblx0ICAgKiAgICAgfVxuXHQgICAqXG5cdCAgICogQHBhcmFtIHs/b2Jq
ZWN0fSBtYXliZUl0ZXJhYmxlXG5cdCAgICogQHJldHVybiB7P2Z1bmN0aW9ufVxuXHQgICAqL1xu
XHQgIGZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuXHQgICAgdmFyIGl0
ZXJhdG9yRm4gPSBtYXliZUl0ZXJhYmxlICYmIChJVEVSQVRPUl9TWU1CT0wgJiYgbWF5YmVJdGVy
YWJsZVtJVEVSQVRPUl9TWU1CT0xdIHx8IG1heWJlSXRlcmFibGVbRkFVWF9JVEVSQVRPUl9TWU1C
T0xdKTtcblx0ICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuXHQg
ICAgICByZXR1cm4gaXRlcmF0b3JGbjtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIC8qKlxuXHQg
ICAqIENvbGxlY3Rpb24gb2YgbWV0aG9kcyB0aGF0IGFsbG93IGRlY2xhcmF0aW9uIGFuZCB2YWxp
ZGF0aW9uIG9mIHByb3BzIHRoYXQgYXJlXG5cdCAgICogc3VwcGxpZWQgdG8gUmVhY3QgY29tcG9u
ZW50cy4gRXhhbXBsZSB1c2FnZTpcblx0ICAgKlxuXHQgICAqICAgdmFyIFByb3BzID0gcmVxdWly
ZSgnUmVhY3RQcm9wVHlwZXMnKTtcblx0ICAgKiAgIHZhciBNeUFydGljbGUgPSBSZWFjdC5jcmVh
dGVDbGFzcyh7XG5cdCAgICogICAgIHByb3BUeXBlczoge1xuXHQgICAqICAgICAgIC8vIEFuIG9w
dGlvbmFsIHN0cmluZyBwcm9wIG5hbWVkIFwiZGVzY3JpcHRpb25cIi5cblx0ICAgKiAgICAgICBk
ZXNjcmlwdGlvbjogUHJvcHMuc3RyaW5nLFxuXHQgICAqXG5cdCAgICogICAgICAgLy8gQSByZXF1
aXJlZCBlbnVtIHByb3AgbmFtZWQgXCJjYXRlZ29yeVwiLlxuXHQgICAqICAgICAgIGNhdGVnb3J5
OiBQcm9wcy5vbmVPZihbJ05ld3MnLCdQaG90b3MnXSkuaXNSZXF1aXJlZCxcblx0ICAgKlxuXHQg
ICAqICAgICAgIC8vIEEgcHJvcCBuYW1lZCBcImRpYWxvZ1wiIHRoYXQgcmVxdWlyZXMgYW4gaW5z
dGFuY2Ugb2YgRGlhbG9nLlxuXHQgICAqICAgICAgIGRpYWxvZzogUHJvcHMuaW5zdGFuY2VPZihE
aWFsb2cpLmlzUmVxdWlyZWRcblx0ICAgKiAgICAgfSxcblx0ICAgKiAgICAgcmVuZGVyOiBmdW5j
dGlvbigpIHsgLi4uIH1cblx0ICAgKiAgIH0pO1xuXHQgICAqXG5cdCAgICogQSBtb3JlIGZvcm1h
bCBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGVzZSBtZXRob2RzIGFyZSB1c2VkOlxuXHQgICAqXG5c
dCAgICogICB0eXBlIDo9IGFycmF5fGJvb2x8ZnVuY3xvYmplY3R8bnVtYmVyfHN0cmluZ3xvbmVP
ZihbLi4uXSl8aW5zdGFuY2VPZiguLi4pXG5cdCAgICogICBkZWNsIDo9IFJlYWN0UHJvcFR5cGVz
Lnt0eXBlfSguaXNSZXF1aXJlZCk/XG5cdCAgICpcblx0ICAgKiBFYWNoIGFuZCBldmVyeSBkZWNs
YXJhdGlvbiBwcm9kdWNlcyBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlLiBUaGlz
XG5cdCAgICogYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBjdXN0b20gdmFsaWRhdGlvbiBmdW5jdGlv
bnMuIEZvciBleGFtcGxlOlxuXHQgICAqXG5cdCAgICogIHZhciBNeUxpbmsgPSBSZWFjdC5jcmVh
dGVDbGFzcyh7XG5cdCAgICogICAgcHJvcFR5cGVzOiB7XG5cdCAgICogICAgICAvLyBBbiBvcHRp
b25hbCBzdHJpbmcgb3IgVVJJIHByb3AgbmFtZWQgXCJocmVmXCIuXG5cdCAgICogICAgICBocmVm
OiBmdW5jdGlvbihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHtcblx0ICAgKiAgICAg
ICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcblx0ICAgKiAgICAgICAgaWYgKHBy
b3BWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09ICdzdHJpbmcnICYmXG5cdCAg
ICogICAgICAgICAgICAhKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFVSSSkpIHtcblx0ICAgKiAgICAg
ICAgICByZXR1cm4gbmV3IEVycm9yKFxuXHQgICAqICAgICAgICAgICAgJ0V4cGVjdGVkIGEgc3Ry
aW5nIG9yIGFuIFVSSSBmb3IgJyArIHByb3BOYW1lICsgJyBpbiAnICtcblx0ICAgKiAgICAgICAg
ICAgIGNvbXBvbmVudE5hbWVcblx0ICAgKiAgICAgICAgICApO1xuXHQgICAqICAgICAgICB9XG5c
dCAgICogICAgICB9XG5cdCAgICogICAgfSxcblx0ICAgKiAgICByZW5kZXI6IGZ1bmN0aW9uKCkg
ey4uLn1cblx0ICAgKiAgfSk7XG5cdCAgICpcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0
XG5cdCAgdmFyIEFOT05ZTU9VUyA9ICc8PGFub255bW91cz4+Jztcblx0XG5cdCAgLy8gSW1wb3J0
YW50IVxuXHQgIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNp
b24gaW4gYC4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzYC5cblx0ICB2YXIgUmVhY3RQcm9w
VHlwZXMgPSB7XG5cdCAgICBhcnJheTogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2FycmF5
JyksXG5cdCAgICBib29sOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYm9vbGVhbicpLFxu
XHQgICAgZnVuYzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Z1bmN0aW9uJyksXG5cdCAg
ICBudW1iZXI6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdudW1iZXInKSxcblx0ICAgIG9i
amVjdDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ29iamVjdCcpLFxuXHQgICAgc3RyaW5n
OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignc3RyaW5nJyksXG5cdCAgICBzeW1ib2w6IGNy
ZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzeW1ib2wnKSxcblx0XG5cdCAgICBhbnk6IGNyZWF0
ZUFueVR5cGVDaGVja2VyKCksXG5cdCAgICBhcnJheU9mOiBjcmVhdGVBcnJheU9mVHlwZUNoZWNr
ZXIsXG5cdCAgICBlbGVtZW50OiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIoKSxcblx0ICAgIGlu
c3RhbmNlT2Y6IGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIsXG5cdCAgICBub2RlOiBjcmVhdGVO
b2RlQ2hlY2tlcigpLFxuXHQgICAgb2JqZWN0T2Y6IGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIs
XG5cdCAgICBvbmVPZjogY3JlYXRlRW51bVR5cGVDaGVja2VyLFxuXHQgICAgb25lT2ZUeXBlOiBj
cmVhdGVVbmlvblR5cGVDaGVja2VyLFxuXHQgICAgc2hhcGU6IGNyZWF0ZVNoYXBlVHlwZUNoZWNr
ZXJcblx0ICB9O1xuXHRcblx0ICAvKipcblx0ICAgKiBpbmxpbmVkIE9iamVjdC5pcyBwb2x5Zmls
bCB0byBhdm9pZCByZXF1aXJpbmcgY29uc3VtZXJzIHNoaXAgdGhlaXIgb3duXG5cdCAgICogaHR0
cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZl
cmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzXG5cdCAgICovXG5cdCAgLyplc2xpbnQtZGlz
YWJsZSBuby1zZWxmLWNvbXBhcmUqL1xuXHQgIGZ1bmN0aW9uIGlzKHgsIHkpIHtcblx0ICAgIC8v
IFNhbWVWYWx1ZSBhbGdvcml0aG1cblx0ICAgIGlmICh4ID09PSB5KSB7XG5cdCAgICAgIC8vIFN0
ZXBzIDEtNSwgNy0xMFxuXHQgICAgICAvLyBTdGVwcyA2LmItNi5lOiArMCAhPSAtMFxuXHQgICAg
ICByZXR1cm4geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHk7XG5cdCAgICB9IGVsc2Uge1xuXHQg
ICAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTlxuXHQgICAgICByZXR1cm4geCAhPT0geCAmJiB5
ICE9PSB5O1xuXHQgICAgfVxuXHQgIH1cblx0ICAvKmVzbGludC1lbmFibGUgbm8tc2VsZi1jb21w
YXJlKi9cblx0XG5cdCAgLyoqXG5cdCAgICogV2UgdXNlIGFuIEVycm9yLWxpa2Ugb2JqZWN0IGZv
ciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFzIHBlb3BsZSBtYXkgY2FsbFxuXHQgICAqIFByb3BU
eXBlcyBkaXJlY3RseSBhbmQgaW5zcGVjdCB0aGVpciBvdXRwdXQuIEhvd2V2ZXIsIHdlIGRvbid0
IHVzZSByZWFsXG5cdCAgICogRXJyb3JzIGFueW1vcmUuIFdlIGRvbid0IGluc3BlY3QgdGhlaXIg
c3RhY2sgYW55d2F5LCBhbmQgY3JlYXRpbmcgdGhlbVxuXHQgICAqIGlzIHByb2hpYml0aXZlbHkg
ZXhwZW5zaXZlIGlmIHRoZXkgYXJlIGNyZWF0ZWQgdG9vIG9mdGVuLCBzdWNoIGFzIHdoYXRcblx0
ICAgKiBoYXBwZW5zIGluIG9uZU9mVHlwZSgpIGZvciBhbnkgdHlwZSBiZWZvcmUgdGhlIG9uZSB0
aGF0IG1hdGNoZWQuXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gUHJvcFR5cGVFcnJvcihtZXNzYWdl
KSB7XG5cdCAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuXHQgICAgdGhpcy5zdGFjayA9ICcn
O1xuXHQgIH1cblx0ICAvLyBNYWtlIGBpbnN0YW5jZW9mIEVycm9yYCBzdGlsbCB3b3JrIGZvciBy
ZXR1cm5lZCBlcnJvcnMuXG5cdCAgUHJvcFR5cGVFcnJvci5wcm90b3R5cGUgPSBFcnJvci5wcm90
b3R5cGU7XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlk
YXRlKSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdmFyIG1hbnVhbFByb3BUeXBlQ2Fs
bENhY2hlID0ge307XG5cdCAgICAgIHZhciBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCA9IDA7
XG5cdCAgICB9XG5cdCAgICBmdW5jdGlvbiBjaGVja1R5cGUoaXNSZXF1aXJlZCwgcHJvcHMsIHBy
b3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtc
blx0ICAgICAgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUgfHwgQU5PTllNT1VTO1xuXHQg
ICAgICBwcm9wRnVsbE5hbWUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG5cdFxuXHQgICAg
ICBpZiAoc2VjcmV0ICE9PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuXHQgICAgICAgIGlmICh0
aHJvd09uRGlyZWN0QWNjZXNzKSB7XG5cdCAgICAgICAgICAvLyBOZXcgYmVoYXZpb3Igb25seSBm
b3IgdXNlcnMgb2YgYHByb3AtdHlwZXNgIHBhY2thZ2Vcblx0ICAgICAgICAgIGludmFyaWFudChc
blx0ICAgICAgICAgICAgZmFsc2UsXG5cdCAgICAgICAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2
YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBw
YWNrYWdlLiAnICtcblx0ICAgICAgICAgICAgJ1VzZSBgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVz
KClgIHRvIGNhbGwgdGhlbS4gJyArXG5cdCAgICAgICAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDov
L2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuXHQgICAgICAgICAgKTtcblx0ICAgICAgICB9
IGVsc2UgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICAvLyBPbGQgYmVoYXZpb3IgZm9yIHBlb3Bs
ZSB1c2luZyBSZWFjdC5Qcm9wVHlwZXNcblx0ICAgICAgICAgIHZhciBjYWNoZUtleSA9IGNvbXBv
bmVudE5hbWUgKyAnOicgKyBwcm9wTmFtZTtcblx0ICAgICAgICAgIGlmIChcblx0ICAgICAgICAg
ICAgIW1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSAmJlxuXHQgICAgICAgICAgICAv
LyBBdm9pZCBzcGFtbWluZyB0aGUgY29uc29sZSBiZWNhdXNlIHRoZXkgYXJlIG9mdGVuIG5vdCBh
Y3Rpb25hYmxlIGV4Y2VwdCBmb3IgbGliIGF1dGhvcnNcblx0ICAgICAgICAgICAgbWFudWFsUHJv
cFR5cGVXYXJuaW5nQ291bnQgPCAzXG5cdCAgICAgICAgICApIHtcblx0ICAgICAgICAgICAgd2Fy
bmluZyhcblx0ICAgICAgICAgICAgICBmYWxzZSxcblx0ICAgICAgICAgICAgICAnWW91IGFyZSBt
YW51YWxseSBjYWxsaW5nIGEgUmVhY3QuUHJvcFR5cGVzIHZhbGlkYXRpb24gJyArXG5cdCAgICAg
ICAgICAgICAgJ2Z1bmN0aW9uIGZvciB0aGUgYCVzYCBwcm9wIG9uIGAlc2AuIFRoaXMgaXMgZGVw
cmVjYXRlZCAnICtcblx0ICAgICAgICAgICAgICAnYW5kIHdpbGwgdGhyb3cgaW4gdGhlIHN0YW5k
YWxvbmUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuXHQgICAgICAgICAgICAgICdZb3UgbWF5
IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVlIHRvIGEgdGhpcmQtcGFydHkgUHJvcFR5cGVzICcg
K1xuXHQgICAgICAgICAgICAgICdsaWJyYXJ5LiBTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC13YXJu
aW5nLWRvbnQtY2FsbC1wcm9wdHlwZXMgJyArICdmb3IgZGV0YWlscy4nLFxuXHQgICAgICAgICAg
ICAgIHByb3BGdWxsTmFtZSxcblx0ICAgICAgICAgICAgICBjb21wb25lbnROYW1lXG5cdCAgICAg
ICAgICAgICk7XG5cdCAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5
XSA9IHRydWU7XG5cdCAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50Kys7XG5c
dCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIGlmIChwcm9wc1tw
cm9wTmFtZV0gPT0gbnVsbCkge1xuXHQgICAgICAgIGlmIChpc1JlcXVpcmVkKSB7XG5cdCAgICAg
ICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSBudWxsKSB7XG5cdCAgICAgICAgICAgIHJldHVy
biBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5h
bWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgJyArICgnaW4gYCcgKyBjb21wb25lbnROYW1l
ICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYG51bGxgLicpKTtcblx0ICAgICAgICAgIH1cblx0ICAg
ICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBsb2NhdGlvbiArICcgYCcg
KyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gJyArICgnYCcgKyBj
b21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuJykpO1xuXHQg
ICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gbnVsbDtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAg
ICAgICByZXR1cm4gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2Nh
dGlvbiwgcHJvcEZ1bGxOYW1lKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHZhciBj
aGFpbmVkQ2hlY2tUeXBlID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgZmFsc2UpO1xuXHQgICAgY2hh
aW5lZENoZWNrVHlwZS5pc1JlcXVpcmVkID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgdHJ1ZSk7XG5c
dFxuXHQgICAgcmV0dXJuIGNoYWluZWRDaGVja1R5cGU7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlv
biBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcihleHBlY3RlZFR5cGUpIHtcblx0ICAgIGZ1bmN0
aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHBy
b3BGdWxsTmFtZSwgc2VjcmV0KSB7XG5cdCAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9w
TmFtZV07XG5cdCAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG5c
dCAgICAgIGlmIChwcm9wVHlwZSAhPT0gZXhwZWN0ZWRUeXBlKSB7XG5cdCAgICAgICAgLy8gYHBy
b3BWYWx1ZWAgYmVpbmcgaW5zdGFuY2Ugb2YsIHNheSwgZGF0ZS9yZWdleHAsIHBhc3MgdGhlICdv
YmplY3QnXG5cdCAgICAgICAgLy8gY2hlY2ssIGJ1dCB3ZSBjYW4gb2ZmZXIgYSBtb3JlIHByZWNp
c2UgZXJyb3IgbWVzc2FnZSBoZXJlIHJhdGhlciB0aGFuXG5cdCAgICAgICAgLy8gJ29mIHR5cGUg
YG9iamVjdGAnLlxuXHQgICAgICAgIHZhciBwcmVjaXNlVHlwZSA9IGdldFByZWNpc2VUeXBlKHBy
b3BWYWx1ZSk7XG5cdFxuXHQgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxp
ZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdg
JyArIHByZWNpc2VUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2As
IGV4cGVjdGVkICcpICsgKCdgJyArIGV4cGVjdGVkVHlwZSArICdgLicpKTtcblx0ICAgICAgfVxu
XHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBjcmVhdGVDaGFpbmFi
bGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBjcmVhdGVB
bnlUeXBlQ2hlY2tlcigpIHtcblx0ICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tl
cihlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCk7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlv
biBjcmVhdGVBcnJheU9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcblx0ICAgIGZ1bmN0aW9u
IHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BG
dWxsTmFtZSkge1xuXHQgICAgICBpZiAodHlwZW9mIHR5cGVDaGVja2VyICE9PSAnZnVuY3Rpb24n
KSB7XG5cdCAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdQcm9wZXJ0eSBgJyArIHBy
b3BGdWxsTmFtZSArICdgIG9mIGNvbXBvbmVudCBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCBoYXMg
aW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgYXJyYXlPZi4nKTtcblx0ICAgICAgfVxu
XHQgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuXHQgICAgICBpZiAoIUFy
cmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuXHQgICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFBy
b3BUeXBlKHByb3BWYWx1ZSk7XG5cdCAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJ
bnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcg
KyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAn
YCwgZXhwZWN0ZWQgYW4gYXJyYXkuJykpO1xuXHQgICAgICB9XG5cdCAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgdmFyIGVycm9yID0g
dHlwZUNoZWNrZXIocHJvcFZhbHVlLCBpLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1
bGxOYW1lICsgJ1snICsgaSArICddJywgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuXHQgICAgICAg
IGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG5cdCAgICAgICAgICByZXR1cm4gZXJyb3I7
XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxu
XHQgICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcblx0ICB9
XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tlcigpIHtcblx0ICAgIGZ1
bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24s
IHByb3BGdWxsTmFtZSkge1xuXHQgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVd
O1xuXHQgICAgICBpZiAoIWlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHtcblx0ICAgICAgICB2
YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuXHQgICAgICAgIHJldHVybiBu
ZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxO
YW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcg
KyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgc2luZ2xlIFJlYWN0RWxlbWVudC4nKSk7
XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4g
Y3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuXHQgIH1cblx0XG5cdCAgZnVu
Y3Rpb24gY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlcihleHBlY3RlZENsYXNzKSB7XG5cdCAgICBm
dW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9u
LCBwcm9wRnVsbE5hbWUpIHtcblx0ICAgICAgaWYgKCEocHJvcHNbcHJvcE5hbWVdIGluc3RhbmNl
b2YgZXhwZWN0ZWRDbGFzcykpIHtcblx0ICAgICAgICB2YXIgZXhwZWN0ZWRDbGFzc05hbWUgPSBl
eHBlY3RlZENsYXNzLm5hbWUgfHwgQU5PTllNT1VTO1xuXHQgICAgICAgIHZhciBhY3R1YWxDbGFz
c05hbWUgPSBnZXRDbGFzc05hbWUocHJvcHNbcHJvcE5hbWVdKTtcblx0ICAgICAgICByZXR1cm4g
bmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxs
TmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBhY3R1YWxDbGFzc05hbWUgKyAnYCBzdXBwbGll
ZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgJykgKyAoJ2luc3RhbmNlIG9m
IGAnICsgZXhwZWN0ZWRDbGFzc05hbWUgKyAnYC4nKSk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0
dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNr
ZXIodmFsaWRhdGUpO1xuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gY3JlYXRlRW51bVR5cGVDaGVj
a2VyKGV4cGVjdGVkVmFsdWVzKSB7XG5cdCAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXhwZWN0ZWRW
YWx1ZXMpKSB7XG5cdCAgICAgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGFyZ3Vt
ZW50IHN1cHBsaWVkIHRvIG9uZU9mLCBleHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhcnJheS4nKSA6
IHZvaWQgMDtcblx0ICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsO1xu
XHQgICAgfVxuXHRcblx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29t
cG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuXHQgICAgICB2YXIgcHJvcFZh
bHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuXHQgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVj
dGVkVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgaWYgKGlzKHByb3BWYWx1ZSwgZXhw
ZWN0ZWRWYWx1ZXNbaV0pKSB7XG5cdCAgICAgICAgICByZXR1cm4gbnVsbDtcblx0ICAgICAgICB9
XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHZhciB2YWx1ZXNTdHJpbmcgPSBKU09OLnN0cmluZ2lm
eShleHBlY3RlZFZhbHVlcyk7XG5cdCAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52
YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdmFsdWUgYCcg
KyBwcm9wVmFsdWUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAn
YCwgZXhwZWN0ZWQgb25lIG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAnLicpKTtcblx0ICAgIH1cblx0
ICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG5cdCAgfVxu
XHRcblx0ICBmdW5jdGlvbiBjcmVhdGVPYmplY3RPZlR5cGVDaGVja2VyKHR5cGVDaGVja2VyKSB7
XG5cdCAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUs
IGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcblx0ICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tl
ciAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcign
UHJvcGVydHkgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiBjb21wb25lbnQgYCcgKyBjb21wb25l
bnROYW1lICsgJ2AgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIG9iamVjdE9m
LicpO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07
XG5cdCAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG5cdCAgICAg
IGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcblx0ICAgICAgICByZXR1cm4gbmV3IFByb3BU
eXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdg
IG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9u
ZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBvYmplY3QuJykpO1xuXHQgICAgICB9XG5cdCAgICAg
IGZvciAodmFyIGtleSBpbiBwcm9wVmFsdWUpIHtcblx0ICAgICAgICBpZiAocHJvcFZhbHVlLmhh
c093blByb3BlcnR5KGtleSkpIHtcblx0ICAgICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2Vy
KHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsg
Jy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG5cdCAgICAgICAgICBpZiAoZXJyb3Ig
aW5zdGFuY2VvZiBFcnJvcikge1xuXHQgICAgICAgICAgICByZXR1cm4gZXJyb3I7XG5cdCAgICAg
ICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQg
ICAgfVxuXHQgICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtc
blx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIoYXJyYXlPZlR5
cGVDaGVja2Vycykge1xuXHQgICAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5T2ZUeXBlQ2hlY2tl
cnMpKSB7XG5cdCAgICAgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGFyZ3VtZW50
IHN1cHBsaWVkIHRvIG9uZU9mVHlwZSwgZXhwZWN0ZWQgYW4gaW5zdGFuY2Ugb2YgYXJyYXkuJykg
OiB2b2lkIDA7XG5cdCAgICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbDtc
blx0ICAgIH1cblx0XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5T2ZUeXBlQ2hlY2tl
cnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgdmFyIGNoZWNrZXIgPSBhcnJheU9mVHlwZUNoZWNr
ZXJzW2ldO1xuXHQgICAgICBpZiAodHlwZW9mIGNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcblx0
ICAgICAgICB3YXJuaW5nKFxuXHQgICAgICAgICAgZmFsc2UsXG5cdCAgICAgICAgICAnSW52YWxp
ZCBhcmd1bWVudCBzdXBwbGlkIHRvIG9uZU9mVHlwZS4gRXhwZWN0ZWQgYW4gYXJyYXkgb2YgY2hl
Y2sgZnVuY3Rpb25zLCBidXQgJyArXG5cdCAgICAgICAgICAncmVjZWl2ZWQgJXMgYXQgaW5kZXgg
JXMuJyxcblx0ICAgICAgICAgIGdldFBvc3RmaXhGb3JUeXBlV2FybmluZyhjaGVja2VyKSxcblx0
ICAgICAgICAgIGlcblx0ICAgICAgICApO1xuXHQgICAgICAgIHJldHVybiBlbXB0eUZ1bmN0aW9u
LnRoYXRSZXR1cm5zTnVsbDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIGZ1bmN0aW9u
IHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BG
dWxsTmFtZSkge1xuXHQgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5T2ZUeXBlQ2hlY2tl
cnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hl
Y2tlcnNbaV07XG5cdCAgICAgICAgaWYgKGNoZWNrZXIocHJvcHMsIHByb3BOYW1lLCBjb21wb25l
bnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBSZWFjdFByb3BUeXBlc1NlY3JldCkgPT0g
bnVsbCkge1xuXHQgICAgICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICAgICAgfVxuXHQgICAgICB9
XG5cdFxuXHQgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0
aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2AnICsgY29t
cG9uZW50TmFtZSArICdgLicpKTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBjcmVhdGVDaGFpbmFi
bGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBjcmVhdGVO
b2RlQ2hlY2tlcigpIHtcblx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwg
Y29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuXHQgICAgICBpZiAoIWlz
Tm9kZShwcm9wc1twcm9wTmFtZV0pKSB7XG5cdCAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVy
cm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBw
bGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYSBSZWFjdE5v
ZGUuJykpO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAg
cmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcblx0ICB9XG5cdFxu
XHQgIGZ1bmN0aW9uIGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIoc2hhcGVUeXBlcykge1xuXHQgICAg
ZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlv
biwgcHJvcEZ1bGxOYW1lKSB7XG5cdCAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFt
ZV07XG5cdCAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG5cdCAg
ICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcblx0ICAgICAgICByZXR1cm4gbmV3IFBy
b3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSAr
ICdgIG9mIHR5cGUgYCcgKyBwcm9wVHlwZSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsgY29t
cG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBgb2JqZWN0YC4nKSk7XG5cdCAgICAgIH1cblx0ICAg
ICAgZm9yICh2YXIga2V5IGluIHNoYXBlVHlwZXMpIHtcblx0ICAgICAgICB2YXIgY2hlY2tlciA9
IHNoYXBlVHlwZXNba2V5XTtcblx0ICAgICAgICBpZiAoIWNoZWNrZXIpIHtcblx0ICAgICAgICAg
IGNvbnRpbnVlO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgZXJyb3IgPSBjaGVja2VyKHBy
b3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJy4n
ICsga2V5LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG5cdCAgICAgICAgaWYgKGVycm9yKSB7XG5c
dCAgICAgICAgICByZXR1cm4gZXJyb3I7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAg
IHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVD
aGVja2VyKHZhbGlkYXRlKTtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGlzTm9kZShwcm9wVmFs
dWUpIHtcblx0ICAgIHN3aXRjaCAodHlwZW9mIHByb3BWYWx1ZSkge1xuXHQgICAgICBjYXNlICdu
dW1iZXInOlxuXHQgICAgICBjYXNlICdzdHJpbmcnOlxuXHQgICAgICBjYXNlICd1bmRlZmluZWQn
OlxuXHQgICAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgICBjYXNlICdib29sZWFuJzpcblx0ICAg
ICAgICByZXR1cm4gIXByb3BWYWx1ZTtcblx0ICAgICAgY2FzZSAnb2JqZWN0Jzpcblx0ICAgICAg
ICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG5cdCAgICAgICAgICByZXR1cm4gcHJv
cFZhbHVlLmV2ZXJ5KGlzTm9kZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmIChwcm9wVmFs
dWUgPT09IG51bGwgfHwgaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkge1xuXHQgICAgICAgICAg
cmV0dXJuIHRydWU7XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICB2YXIgaXRlcmF0b3JGbiA9
IGdldEl0ZXJhdG9yRm4ocHJvcFZhbHVlKTtcblx0ICAgICAgICBpZiAoaXRlcmF0b3JGbikge1xu
XHQgICAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKHByb3BWYWx1ZSk7XG5c
dCAgICAgICAgICB2YXIgc3RlcDtcblx0ICAgICAgICAgIGlmIChpdGVyYXRvckZuICE9PSBwcm9w
VmFsdWUuZW50cmllcykge1xuXHQgICAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3Iu
bmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICAgICAgaWYgKCFpc05vZGUoc3RlcC52YWx1ZSkp
IHtcblx0ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgICAgICAgICAgICB9XG5c
dCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIC8vIEl0
ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFsdWVz
LlxuXHQgICAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7
XG5cdCAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcblx0ICAgICAgICAgICAg
ICBpZiAoZW50cnkpIHtcblx0ICAgICAgICAgICAgICAgIGlmICghaXNOb2RlKGVudHJ5WzFdKSkg
e1xuXHQgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICB9
XG5cdCAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9XG5cdCAg
ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgICAgICB9XG5c
dFxuXHQgICAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgICBkZWZhdWx0OlxuXHQgICAgICAgIHJl
dHVybiBmYWxzZTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGlzU3ltYm9sKHBy
b3BUeXBlLCBwcm9wVmFsdWUpIHtcblx0ICAgIC8vIE5hdGl2ZSBTeW1ib2wuXG5cdCAgICBpZiAo
cHJvcFR5cGUgPT09ICdzeW1ib2wnKSB7XG5cdCAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgfVxu
XHRcblx0ICAgIC8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ10gPT09
ICdTeW1ib2wnXG5cdCAgICBpZiAocHJvcFZhbHVlWydAQHRvU3RyaW5nVGFnJ10gPT09ICdTeW1i
b2wnKSB7XG5cdCAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgfVxuXHRcblx0ICAgIC8vIEZhbGxi
YWNrIGZvciBub24tc3BlYyBjb21wbGlhbnQgU3ltYm9scyB3aGljaCBhcmUgcG9seWZpbGxlZC5c
blx0ICAgIGlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHByb3BWYWx1ZSBpbnN0
YW5jZW9mIFN5bWJvbCkge1xuXHQgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgIH1cblx0XG5cdCAg
ICByZXR1cm4gZmFsc2U7XG5cdCAgfVxuXHRcblx0ICAvLyBFcXVpdmFsZW50IG9mIGB0eXBlb2Zg
IGJ1dCB3aXRoIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGFycmF5IGFuZCByZWdleHAuXG5cdCAgZnVu
Y3Rpb24gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKSB7XG5cdCAgICB2YXIgcHJvcFR5cGUgPSB0eXBl
b2YgcHJvcFZhbHVlO1xuXHQgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuXHQg
ICAgICByZXR1cm4gJ2FycmF5Jztcblx0ICAgIH1cblx0ICAgIGlmIChwcm9wVmFsdWUgaW5zdGFu
Y2VvZiBSZWdFeHApIHtcblx0ICAgICAgLy8gT2xkIHdlYmtpdHMgKGF0IGxlYXN0IHVudGlsIEFu
ZHJvaWQgNC4wKSByZXR1cm4gJ2Z1bmN0aW9uJyByYXRoZXIgdGhhblxuXHQgICAgICAvLyAnb2Jq
ZWN0JyBmb3IgdHlwZW9mIGEgUmVnRXhwLiBXZSdsbCBub3JtYWxpemUgdGhpcyBoZXJlIHNvIHRo
YXQgL2JsYS9cblx0ICAgICAgLy8gcGFzc2VzIFByb3BUeXBlcy5vYmplY3QuXG5cdCAgICAgIHJl
dHVybiAnb2JqZWN0Jztcblx0ICAgIH1cblx0ICAgIGlmIChpc1N5bWJvbChwcm9wVHlwZSwgcHJv
cFZhbHVlKSkge1xuXHQgICAgICByZXR1cm4gJ3N5bWJvbCc7XG5cdCAgICB9XG5cdCAgICByZXR1
cm4gcHJvcFR5cGU7XG5cdCAgfVxuXHRcblx0ICAvLyBUaGlzIGhhbmRsZXMgbW9yZSB0eXBlcyB0
aGFuIGBnZXRQcm9wVHlwZWAuIE9ubHkgdXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMuXG5cdCAgLy8g
U2VlIGBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcmAuXG5cdCAgZnVuY3Rpb24gZ2V0UHJlY2lz
ZVR5cGUocHJvcFZhbHVlKSB7XG5cdCAgICBpZiAodHlwZW9mIHByb3BWYWx1ZSA9PT0gJ3VuZGVm
aW5lZCcgfHwgcHJvcFZhbHVlID09PSBudWxsKSB7XG5cdCAgICAgIHJldHVybiAnJyArIHByb3BW
YWx1ZTtcblx0ICAgIH1cblx0ICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1
ZSk7XG5cdCAgICBpZiAocHJvcFR5cGUgPT09ICdvYmplY3QnKSB7XG5cdCAgICAgIGlmIChwcm9w
VmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdCAgICAgICAgcmV0dXJuICdkYXRlJztcblx0ICAg
ICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcblx0ICAgICAgICBy
ZXR1cm4gJ3JlZ2V4cCc7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHJldHVybiBwcm9wVHlw
ZTtcblx0ICB9XG5cdFxuXHQgIC8vIFJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwb3N0Zml4ZWQg
dG8gYSB3YXJuaW5nIGFib3V0IGFuIGludmFsaWQgdHlwZS5cblx0ICAvLyBGb3IgZXhhbXBsZSwg
XCJ1bmRlZmluZWRcIiBvciBcIm9mIHR5cGUgYXJyYXlcIlxuXHQgIGZ1bmN0aW9uIGdldFBvc3Rm
aXhGb3JUeXBlV2FybmluZyh2YWx1ZSkge1xuXHQgICAgdmFyIHR5cGUgPSBnZXRQcmVjaXNlVHlw
ZSh2YWx1ZSk7XG5cdCAgICBzd2l0Y2ggKHR5cGUpIHtcblx0ICAgICAgY2FzZSAnYXJyYXknOlxu
XHQgICAgICBjYXNlICdvYmplY3QnOlxuXHQgICAgICAgIHJldHVybiAnYW4gJyArIHR5cGU7XG5c
dCAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuXHQgICAgICBjYXNlICdkYXRlJzpcblx0ICAgICAgY2Fz
ZSAncmVnZXhwJzpcblx0ICAgICAgICByZXR1cm4gJ2EgJyArIHR5cGU7XG5cdCAgICAgIGRlZmF1
bHQ6XG5cdCAgICAgICAgcmV0dXJuIHR5cGU7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICAvLyBS
ZXR1cm5zIGNsYXNzIG5hbWUgb2YgdGhlIG9iamVjdCwgaWYgYW55LlxuXHQgIGZ1bmN0aW9uIGdl
dENsYXNzTmFtZShwcm9wVmFsdWUpIHtcblx0ICAgIGlmICghcHJvcFZhbHVlLmNvbnN0cnVjdG9y
IHx8ICFwcm9wVmFsdWUuY29uc3RydWN0b3IubmFtZSkge1xuXHQgICAgICByZXR1cm4gQU5PTllN
T1VTO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIHByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lO1xu
XHQgIH1cblx0XG5cdCAgUmVhY3RQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMgPSBjaGVja1Byb3BU
eXBlcztcblx0ICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblx0
XG5cdCAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xuXHR9O1xuXG5cbi8qKiovIH0sXG4vKiAxMjMg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxMzcpO1xuXG5cbi8qKiovIH0sXG4vKiAxMjQgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
XHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBBUklBRE9NUHJvcGVy
dHlDb25maWcgPSB7XG5cdCAgUHJvcGVydGllczoge1xuXHQgICAgLy8gR2xvYmFsIFN0YXRlcyBh
bmQgUHJvcGVydGllc1xuXHQgICAgJ2FyaWEtY3VycmVudCc6IDAsIC8vIHN0YXRlXG5cdCAgICAn
YXJpYS1kZXRhaWxzJzogMCxcblx0ICAgICdhcmlhLWRpc2FibGVkJzogMCwgLy8gc3RhdGVcblx0
ICAgICdhcmlhLWhpZGRlbic6IDAsIC8vIHN0YXRlXG5cdCAgICAnYXJpYS1pbnZhbGlkJzogMCwg
Ly8gc3RhdGVcblx0ICAgICdhcmlhLWtleXNob3J0Y3V0cyc6IDAsXG5cdCAgICAnYXJpYS1sYWJl
bCc6IDAsXG5cdCAgICAnYXJpYS1yb2xlZGVzY3JpcHRpb24nOiAwLFxuXHQgICAgLy8gV2lkZ2V0
IEF0dHJpYnV0ZXNcblx0ICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6IDAsXG5cdCAgICAnYXJpYS1j
aGVja2VkJzogMCxcblx0ICAgICdhcmlhLWV4cGFuZGVkJzogMCxcblx0ICAgICdhcmlhLWhhc3Bv
cHVwJzogMCxcblx0ICAgICdhcmlhLWxldmVsJzogMCxcblx0ICAgICdhcmlhLW1vZGFsJzogMCxc
blx0ICAgICdhcmlhLW11bHRpbGluZSc6IDAsXG5cdCAgICAnYXJpYS1tdWx0aXNlbGVjdGFibGUn
OiAwLFxuXHQgICAgJ2FyaWEtb3JpZW50YXRpb24nOiAwLFxuXHQgICAgJ2FyaWEtcGxhY2Vob2xk
ZXInOiAwLFxuXHQgICAgJ2FyaWEtcHJlc3NlZCc6IDAsXG5cdCAgICAnYXJpYS1yZWFkb25seSc6
IDAsXG5cdCAgICAnYXJpYS1yZXF1aXJlZCc6IDAsXG5cdCAgICAnYXJpYS1zZWxlY3RlZCc6IDAs
XG5cdCAgICAnYXJpYS1zb3J0JzogMCxcblx0ICAgICdhcmlhLXZhbHVlbWF4JzogMCxcblx0ICAg
ICdhcmlhLXZhbHVlbWluJzogMCxcblx0ICAgICdhcmlhLXZhbHVlbm93JzogMCxcblx0ICAgICdh
cmlhLXZhbHVldGV4dCc6IDAsXG5cdCAgICAvLyBMaXZlIFJlZ2lvbiBBdHRyaWJ1dGVzXG5cdCAg
ICAnYXJpYS1hdG9taWMnOiAwLFxuXHQgICAgJ2FyaWEtYnVzeSc6IDAsXG5cdCAgICAnYXJpYS1s
aXZlJzogMCxcblx0ICAgICdhcmlhLXJlbGV2YW50JzogMCxcblx0ICAgIC8vIERyYWctYW5kLURy
b3AgQXR0cmlidXRlc1xuXHQgICAgJ2FyaWEtZHJvcGVmZmVjdCc6IDAsXG5cdCAgICAnYXJpYS1n
cmFiYmVkJzogMCxcblx0ICAgIC8vIFJlbGF0aW9uc2hpcCBBdHRyaWJ1dGVzXG5cdCAgICAnYXJp
YS1hY3RpdmVkZXNjZW5kYW50JzogMCxcblx0ICAgICdhcmlhLWNvbGNvdW50JzogMCxcblx0ICAg
ICdhcmlhLWNvbGluZGV4JzogMCxcblx0ICAgICdhcmlhLWNvbHNwYW4nOiAwLFxuXHQgICAgJ2Fy
aWEtY29udHJvbHMnOiAwLFxuXHQgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiAwLFxuXHQgICAgJ2Fy
aWEtZXJyb3JtZXNzYWdlJzogMCxcblx0ICAgICdhcmlhLWZsb3d0byc6IDAsXG5cdCAgICAnYXJp
YS1sYWJlbGxlZGJ5JzogMCxcblx0ICAgICdhcmlhLW93bnMnOiAwLFxuXHQgICAgJ2FyaWEtcG9z
aW5zZXQnOiAwLFxuXHQgICAgJ2FyaWEtcm93Y291bnQnOiAwLFxuXHQgICAgJ2FyaWEtcm93aW5k
ZXgnOiAwLFxuXHQgICAgJ2FyaWEtcm93c3Bhbic6IDAsXG5cdCAgICAnYXJpYS1zZXRzaXplJzog
MFxuXHQgIH0sXG5cdCAgRE9NQXR0cmlidXRlTmFtZXM6IHt9LFxuXHQgIERPTVByb3BlcnR5TmFt
ZXM6IHt9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IEFSSUFET01Qcm9wZXJ0eUNvbmZp
ZztcblxuLyoqKi8gfSxcbi8qIDEyNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5c
dCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFJlYWN0
RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdFxuXHR2YXIgZm9j
dXNOb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Mik7XG5cdFxuXHR2YXIgQXV0b0ZvY3VzVXRp
bHMgPSB7XG5cdCAgZm9jdXNET01Db21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgIGZvY3Vz
Tm9kZShSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSk7XG5c
dCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBBdXRvRm9jdXNVdGlscztcblxuLyoq
Ki8gfSxcbi8qIDEyNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQgRmFj
ZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0
ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRXZlbnRQcm9wYWdhdG9y
cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApO1xuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHR2YXIgRmFsbGJhY2tDb21wb3NpdGlvblN0YXRl
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzIpO1xuXHR2YXIgU3ludGhldGljQ29tcG9zaXRpb25F
dmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTY5KTtcblx0dmFyIFN5bnRoZXRpY0lucHV0RXZl
bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3Mik7XG5cdFxuXHR2YXIgRU5EX0tFWUNPREVTID0g
WzksIDEzLCAyNywgMzJdOyAvLyBUYWIsIFJldHVybiwgRXNjLCBTcGFjZVxuXHR2YXIgU1RBUlRf
S0VZQ09ERSA9IDIyOTtcblx0XG5cdHZhciBjYW5Vc2VDb21wb3NpdGlvbkV2ZW50ID0gRXhlY3V0
aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdDb21wb3NpdGlvbkV2ZW50JyBpbiB3aW5kb3c7
XG5cdFxuXHR2YXIgZG9jdW1lbnRNb2RlID0gbnVsbDtcblx0aWYgKEV4ZWN1dGlvbkVudmlyb25t
ZW50LmNhblVzZURPTSAmJiAnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCkge1xuXHQgIGRvY3Vt
ZW50TW9kZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZTtcblx0fVxuXHRcblx0Ly8gV2Via2l0IG9m
ZmVycyBhIHZlcnkgdXNlZnVsIGB0ZXh0SW5wdXRgIGV2ZW50IHRoYXQgY2FuIGJlIHVzZWQgdG9c
blx0Ly8gZGlyZWN0bHkgcmVwcmVzZW50IGBiZWZvcmVJbnB1dGAuIFRoZSBJRSBgdGV4dGlucHV0
YCBldmVudCBpcyBub3QgYXNcblx0Ly8gdXNlZnVsLCBzbyB3ZSBkb24ndCB1c2UgaXQuXG5cdHZh
ciBjYW5Vc2VUZXh0SW5wdXRFdmVudCA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAm
JiAnVGV4dEV2ZW50JyBpbiB3aW5kb3cgJiYgIWRvY3VtZW50TW9kZSAmJiAhaXNQcmVzdG8oKTtc
blx0XG5cdC8vIEluIElFOSssIHdlIGhhdmUgYWNjZXNzIHRvIGNvbXBvc2l0aW9uIGV2ZW50cywg
YnV0IHRoZSBkYXRhIHN1cHBsaWVkXG5cdC8vIGJ5IHRoZSBuYXRpdmUgY29tcG9zaXRpb25lbmQg
ZXZlbnQgbWF5IGJlIGluY29ycmVjdC4gSmFwYW5lc2UgaWRlb2dyYXBoaWNcblx0Ly8gc3BhY2Vz
LCBmb3IgaW5zdGFuY2UgKFxcdTMwMDApIGFyZSBub3QgcmVjb3JkZWQgY29ycmVjdGx5LlxuXHR2
YXIgdXNlRmFsbGJhY2tDb21wb3NpdGlvbkRhdGEgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5V
c2VET00gJiYgKCFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50IHx8IGRvY3VtZW50TW9kZSAmJiBkb2N1
bWVudE1vZGUgPiA4ICYmIGRvY3VtZW50TW9kZSA8PSAxMSk7XG5cdFxuXHQvKipcblx0ICogT3Bl
cmEgPD0gMTIgaW5jbHVkZXMgVGV4dEV2ZW50IGluIHdpbmRvdywgYnV0IGRvZXMgbm90IGZpcmVc
blx0ICogdGV4dCBpbnB1dCBldmVudHMuIFJlbHkgb24ga2V5cHJlc3MgaW5zdGVhZC5cblx0ICov
XG5cdGZ1bmN0aW9uIGlzUHJlc3RvKCkge1xuXHQgIHZhciBvcGVyYSA9IHdpbmRvdy5vcGVyYTtc
blx0ICByZXR1cm4gdHlwZW9mIG9wZXJhID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb3BlcmEudmVy
c2lvbiA9PT0gJ2Z1bmN0aW9uJyAmJiBwYXJzZUludChvcGVyYS52ZXJzaW9uKCksIDEwKSA8PSAx
Mjtcblx0fVxuXHRcblx0dmFyIFNQQUNFQkFSX0NPREUgPSAzMjtcblx0dmFyIFNQQUNFQkFSX0NI
QVIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKFNQQUNFQkFSX0NPREUpO1xuXHRcblx0Ly8gRXZlbnRz
IGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIHByb3BlcnR5IG5hbWVzLlxuXHR2YXIgZXZlbnRUeXBl
cyA9IHtcblx0ICBiZWZvcmVJbnB1dDoge1xuXHQgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6
IHtcblx0ICAgICAgYnViYmxlZDogJ29uQmVmb3JlSW5wdXQnLFxuXHQgICAgICBjYXB0dXJlZDog
J29uQmVmb3JlSW5wdXRDYXB0dXJlJ1xuXHQgICAgfSxcblx0ICAgIGRlcGVuZGVuY2llczogWyd0
b3BDb21wb3NpdGlvbkVuZCcsICd0b3BLZXlQcmVzcycsICd0b3BUZXh0SW5wdXQnLCAndG9wUGFz
dGUnXVxuXHQgIH0sXG5cdCAgY29tcG9zaXRpb25FbmQ6IHtcblx0ICAgIHBoYXNlZFJlZ2lzdHJh
dGlvbk5hbWVzOiB7XG5cdCAgICAgIGJ1YmJsZWQ6ICdvbkNvbXBvc2l0aW9uRW5kJyxcblx0ICAg
ICAgY2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZSdcblx0ICAgIH0sXG5cdCAgICBk
ZXBlbmRlbmNpZXM6IFsndG9wQmx1cicsICd0b3BDb21wb3NpdGlvbkVuZCcsICd0b3BLZXlEb3du
JywgJ3RvcEtleVByZXNzJywgJ3RvcEtleVVwJywgJ3RvcE1vdXNlRG93biddXG5cdCAgfSxcblx0
ICBjb21wb3NpdGlvblN0YXJ0OiB7XG5cdCAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xu
XHQgICAgICBidWJibGVkOiAnb25Db21wb3NpdGlvblN0YXJ0Jyxcblx0ICAgICAgY2FwdHVyZWQ6
ICdvbkNvbXBvc2l0aW9uU3RhcnRDYXB0dXJlJ1xuXHQgICAgfSxcblx0ICAgIGRlcGVuZGVuY2ll
czogWyd0b3BCbHVyJywgJ3RvcENvbXBvc2l0aW9uU3RhcnQnLCAndG9wS2V5RG93bicsICd0b3BL
ZXlQcmVzcycsICd0b3BLZXlVcCcsICd0b3BNb3VzZURvd24nXVxuXHQgIH0sXG5cdCAgY29tcG9z
aXRpb25VcGRhdGU6IHtcblx0ICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG5cdCAgICAg
IGJ1YmJsZWQ6ICdvbkNvbXBvc2l0aW9uVXBkYXRlJyxcblx0ICAgICAgY2FwdHVyZWQ6ICdvbkNv
bXBvc2l0aW9uVXBkYXRlQ2FwdHVyZSdcblx0ICAgIH0sXG5cdCAgICBkZXBlbmRlbmNpZXM6IFsn
dG9wQmx1cicsICd0b3BDb21wb3NpdGlvblVwZGF0ZScsICd0b3BLZXlEb3duJywgJ3RvcEtleVBy
ZXNzJywgJ3RvcEtleVVwJywgJ3RvcE1vdXNlRG93biddXG5cdCAgfVxuXHR9O1xuXHRcblx0Ly8g
VHJhY2sgd2hldGhlciB3ZSd2ZSBldmVyIGhhbmRsZWQgYSBrZXlwcmVzcyBvbiB0aGUgc3BhY2Ug
a2V5LlxuXHR2YXIgaGFzU3BhY2VLZXlwcmVzcyA9IGZhbHNlO1xuXHRcblx0LyoqXG5cdCAqIFJl
dHVybiB3aGV0aGVyIGEgbmF0aXZlIGtleXByZXNzIGV2ZW50IGlzIGFzc3VtZWQgdG8gYmUgYSBj
b21tYW5kLlxuXHQgKiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UgRmlyZWZveCBmaXJlcyBga2V5
cHJlc3NgIGV2ZW50cyBmb3Iga2V5IGNvbW1hbmRzXG5cdCAqIChjdXQsIGNvcHksIHNlbGVjdC1h
bGwsIGV0Yy4pIGV2ZW4gdGhvdWdoIG5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZC5cblx0ICovXG5c
dGZ1bmN0aW9uIGlzS2V5cHJlc3NDb21tYW5kKG5hdGl2ZUV2ZW50KSB7XG5cdCAgcmV0dXJuIChu
YXRpdmVFdmVudC5jdHJsS2V5IHx8IG5hdGl2ZUV2ZW50LmFsdEtleSB8fCBuYXRpdmVFdmVudC5t
ZXRhS2V5KSAmJlxuXHQgIC8vIGN0cmxLZXkgJiYgYWx0S2V5IGlzIGVxdWl2YWxlbnQgdG8gQWx0
R3IsIGFuZCBpcyBub3QgYSBjb21tYW5kLlxuXHQgICEobmF0aXZlRXZlbnQuY3RybEtleSAmJiBu
YXRpdmVFdmVudC5hbHRLZXkpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogVHJhbnNsYXRlIG5hdGl2
ZSB0b3AgbGV2ZWwgZXZlbnRzIGludG8gZXZlbnQgdHlwZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7
c3RyaW5nfSB0b3BMZXZlbFR5cGVcblx0ICogQHJldHVybiB7b2JqZWN0fVxuXHQgKi9cblx0ZnVu
Y3Rpb24gZ2V0Q29tcG9zaXRpb25FdmVudFR5cGUodG9wTGV2ZWxUeXBlKSB7XG5cdCAgc3dpdGNo
ICh0b3BMZXZlbFR5cGUpIHtcblx0ICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uU3RhcnQnOlxuXHQg
ICAgICByZXR1cm4gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0YXJ0O1xuXHQgICAgY2FzZSAndG9w
Q29tcG9zaXRpb25FbmQnOlxuXHQgICAgICByZXR1cm4gZXZlbnRUeXBlcy5jb21wb3NpdGlvbkVu
ZDtcblx0ICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uVXBkYXRlJzpcblx0ICAgICAgcmV0dXJuIGV2
ZW50VHlwZXMuY29tcG9zaXRpb25VcGRhdGU7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICog
RG9lcyBvdXIgZmFsbGJhY2sgYmVzdC1ndWVzcyBtb2RlbCB0aGluayB0aGlzIGV2ZW50IHNpZ25p
ZmllcyB0aGF0XG5cdCAqIGNvbXBvc2l0aW9uIGhhcyBiZWd1bj9cblx0ICpcblx0ICogQHBhcmFt
IHtzdHJpbmd9IHRvcExldmVsVHlwZVxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRc
blx0ICogQHJldHVybiB7Ym9vbGVhbn1cblx0ICovXG5cdGZ1bmN0aW9uIGlzRmFsbGJhY2tDb21w
b3NpdGlvblN0YXJ0KHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHtcblx0ICByZXR1cm4gdG9w
TGV2ZWxUeXBlID09PSAndG9wS2V5RG93bicgJiYgbmF0aXZlRXZlbnQua2V5Q29kZSA9PT0gU1RB
UlRfS0VZQ09ERTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIERvZXMgb3VyIGZhbGxiYWNrIG1vZGUg
dGhpbmsgdGhhdCB0aGlzIGV2ZW50IGlzIHRoZSBlbmQgb2YgY29tcG9zaXRpb24/XG5cdCAqXG5c
dCAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGVcblx0ICogQHBhcmFtIHtvYmplY3R9IG5h
dGl2ZUV2ZW50XG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59XG5cdCAqL1xuXHRmdW5jdGlvbiBpc0Zh
bGxiYWNrQ29tcG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuXHQgIHN3
aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG5cdCAgICBjYXNlICd0b3BLZXlVcCc6XG5cdCAgICAgIC8v
IENvbW1hbmQga2V5cyBpbnNlcnQgb3IgY2xlYXIgSU1FIGlucHV0LlxuXHQgICAgICByZXR1cm4g
RU5EX0tFWUNPREVTLmluZGV4T2YobmF0aXZlRXZlbnQua2V5Q29kZSkgIT09IC0xO1xuXHQgICAg
Y2FzZSAndG9wS2V5RG93bic6XG5cdCAgICAgIC8vIEV4cGVjdCBJTUUga2V5Q29kZSBvbiBlYWNo
IGtleWRvd24uIElmIHdlIGdldCBhbnkgb3RoZXJcblx0ICAgICAgLy8gY29kZSB3ZSBtdXN0IGhh
dmUgZXhpdGVkIGVhcmxpZXIuXG5cdCAgICAgIHJldHVybiBuYXRpdmVFdmVudC5rZXlDb2RlICE9
PSBTVEFSVF9LRVlDT0RFO1xuXHQgICAgY2FzZSAndG9wS2V5UHJlc3MnOlxuXHQgICAgY2FzZSAn
dG9wTW91c2VEb3duJzpcblx0ICAgIGNhc2UgJ3RvcEJsdXInOlxuXHQgICAgICAvLyBFdmVudHMg
YXJlIG5vdCBwb3NzaWJsZSB3aXRob3V0IGNhbmNlbGxpbmcgSU1FLlxuXHQgICAgICByZXR1cm4g
dHJ1ZTtcblx0ICAgIGRlZmF1bHQ6XG5cdCAgICAgIHJldHVybiBmYWxzZTtcblx0ICB9XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBHb29nbGUgSW5wdXQgVG9vbHMgcHJvdmlkZXMgY29tcG9zaXRpb24g
ZGF0YSB2aWEgYSBDdXN0b21FdmVudCxcblx0ICogd2l0aCB0aGUgYGRhdGFgIHByb3BlcnR5IHBv
cHVsYXRlZCBpbiB0aGUgYGRldGFpbGAgb2JqZWN0LiBJZiB0aGlzXG5cdCAqIGlzIGF2YWlsYWJs
ZSBvbiB0aGUgZXZlbnQgb2JqZWN0LCB1c2UgaXQuIElmIG5vdCwgdGhpcyBpcyBhIHBsYWluXG5c
dCAqIGNvbXBvc2l0aW9uIGV2ZW50IGFuZCB3ZSBoYXZlIG5vdGhpbmcgc3BlY2lhbCB0byBleHRy
YWN0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRcblx0ICogQHJldHVy
biB7P3N0cmluZ31cblx0ICovXG5cdGZ1bmN0aW9uIGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0
aXZlRXZlbnQpIHtcblx0ICB2YXIgZGV0YWlsID0gbmF0aXZlRXZlbnQuZGV0YWlsO1xuXHQgIGlm
ICh0eXBlb2YgZGV0YWlsID09PSAnb2JqZWN0JyAmJiAnZGF0YScgaW4gZGV0YWlsKSB7XG5cdCAg
ICByZXR1cm4gZGV0YWlsLmRhdGE7XG5cdCAgfVxuXHQgIHJldHVybiBudWxsO1xuXHR9XG5cdFxu
XHQvLyBUcmFjayB0aGUgY3VycmVudCBJTUUgY29tcG9zaXRpb24gZmFsbGJhY2sgb2JqZWN0LCBp
ZiBhbnkuXG5cdHZhciBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxsO1xuXHRcblx0LyoqXG5cdCAq
IEByZXR1cm4gez9vYmplY3R9IEEgU3ludGhldGljQ29tcG9zaXRpb25FdmVudC5cblx0ICovXG5c
dGZ1bmN0aW9uIGV4dHJhY3RDb21wb3NpdGlvbkV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5z
dCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgdmFyIGV2ZW50VHlwZTtc
blx0ICB2YXIgZmFsbGJhY2tEYXRhO1xuXHRcblx0ICBpZiAoY2FuVXNlQ29tcG9zaXRpb25FdmVu
dCkge1xuXHQgICAgZXZlbnRUeXBlID0gZ2V0Q29tcG9zaXRpb25FdmVudFR5cGUodG9wTGV2ZWxU
eXBlKTtcblx0ICB9IGVsc2UgaWYgKCFjdXJyZW50Q29tcG9zaXRpb24pIHtcblx0ICAgIGlmIChp
c0ZhbGxiYWNrQ29tcG9zaXRpb25TdGFydCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xu
XHQgICAgICBldmVudFR5cGUgPSBldmVudFR5cGVzLmNvbXBvc2l0aW9uU3RhcnQ7XG5cdCAgICB9
XG5cdCAgfSBlbHNlIGlmIChpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBu
YXRpdmVFdmVudCkpIHtcblx0ICAgIGV2ZW50VHlwZSA9IGV2ZW50VHlwZXMuY29tcG9zaXRpb25F
bmQ7XG5cdCAgfVxuXHRcblx0ICBpZiAoIWV2ZW50VHlwZSkge1xuXHQgICAgcmV0dXJuIG51bGw7
XG5cdCAgfVxuXHRcblx0ICBpZiAodXNlRmFsbGJhY2tDb21wb3NpdGlvbkRhdGEpIHtcblx0ICAg
IC8vIFRoZSBjdXJyZW50IGNvbXBvc2l0aW9uIGlzIHN0b3JlZCBzdGF0aWNhbGx5IGFuZCBtdXN0
IG5vdCBiZVxuXHQgICAgLy8gb3ZlcndyaXR0ZW4gd2hpbGUgY29tcG9zaXRpb24gY29udGludWVz
LlxuXHQgICAgaWYgKCFjdXJyZW50Q29tcG9zaXRpb24gJiYgZXZlbnRUeXBlID09PSBldmVudFR5
cGVzLmNvbXBvc2l0aW9uU3RhcnQpIHtcblx0ICAgICAgY3VycmVudENvbXBvc2l0aW9uID0gRmFs
bGJhY2tDb21wb3NpdGlvblN0YXRlLmdldFBvb2xlZChuYXRpdmVFdmVudFRhcmdldCk7XG5cdCAg
ICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gZXZlbnRUeXBlcy5jb21wb3NpdGlvbkVuZCkge1xu
XHQgICAgICBpZiAoY3VycmVudENvbXBvc2l0aW9uKSB7XG5cdCAgICAgICAgZmFsbGJhY2tEYXRh
ID0gY3VycmVudENvbXBvc2l0aW9uLmdldERhdGEoKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQg
IH1cblx0XG5cdCAgdmFyIGV2ZW50ID0gU3ludGhldGljQ29tcG9zaXRpb25FdmVudC5nZXRQb29s
ZWQoZXZlbnRUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQp
O1xuXHRcblx0ICBpZiAoZmFsbGJhY2tEYXRhKSB7XG5cdCAgICAvLyBJbmplY3QgZGF0YSBnZW5l
cmF0ZWQgZnJvbSBmYWxsYmFjayBwYXRoIGludG8gdGhlIHN5bnRoZXRpYyBldmVudC5cblx0ICAg
IC8vIFRoaXMgbWF0Y2hlcyB0aGUgcHJvcGVydHkgb2YgbmF0aXZlIENvbXBvc2l0aW9uRXZlbnRJ
bnRlcmZhY2UuXG5cdCAgICBldmVudC5kYXRhID0gZmFsbGJhY2tEYXRhO1xuXHQgIH0gZWxzZSB7
XG5cdCAgICB2YXIgY3VzdG9tRGF0YSA9IGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZl
bnQpO1xuXHQgICAgaWYgKGN1c3RvbURhdGEgIT09IG51bGwpIHtcblx0ICAgICAgZXZlbnQuZGF0
YSA9IGN1c3RvbURhdGE7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICBFdmVudFByb3BhZ2F0b3Jz
LmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xuXHQgIHJldHVybiBldmVudDtc
blx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3Jk
IGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50
IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAcmV0dXJuIHs/c3RyaW5nfSBUaGUgc3RyaW5n
IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBgYmVmb3JlSW5wdXRgIGV2ZW50LlxuXHQgKi9cblx0ZnVu
Y3Rpb24gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50
KSB7XG5cdCAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcblx0ICAgIGNhc2UgJ3RvcENvbXBvc2l0
aW9uRW5kJzpcblx0ICAgICAgcmV0dXJuIGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZl
bnQpO1xuXHQgICAgY2FzZSAndG9wS2V5UHJlc3MnOlxuXHQgICAgICAvKipcblx0ICAgICAgICog
SWYgbmF0aXZlIGB0ZXh0SW5wdXRgIGV2ZW50cyBhcmUgYXZhaWxhYmxlLCBvdXIgZ29hbCBpcyB0
byBtYWtlXG5cdCAgICAgICAqIHVzZSBvZiB0aGVtLiBIb3dldmVyLCB0aGVyZSBpcyBhIHNwZWNp
YWwgY2FzZTogdGhlIHNwYWNlYmFyIGtleS5cblx0ICAgICAgICogSW4gV2Via2l0LCBwcmV2ZW50
aW5nIGRlZmF1bHQgb24gYSBzcGFjZWJhciBgdGV4dElucHV0YCBldmVudFxuXHQgICAgICAgKiBj
YW5jZWxzIGNoYXJhY3RlciBpbnNlcnRpb24sIGJ1dCBpdCAqYWxzbyogY2F1c2VzIHRoZSBicm93
c2VyXG5cdCAgICAgICAqIHRvIGZhbGwgYmFjayB0byBpdHMgZGVmYXVsdCBzcGFjZWJhciBiZWhh
dmlvciBvZiBzY3JvbGxpbmcgdGhlXG5cdCAgICAgICAqIHBhZ2UuXG5cdCAgICAgICAqXG5cdCAg
ICAgICAqIFRyYWNraW5nIGF0OlxuXHQgICAgICAgKiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9w
L2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MzU1MTAzXG5cdCAgICAgICAqXG5cdCAgICAgICAq
IFRvIGF2b2lkIHRoaXMgaXNzdWUsIHVzZSB0aGUga2V5cHJlc3MgZXZlbnQgYXMgaWYgbm8gYHRl
eHRJbnB1dGBcblx0ICAgICAgICogZXZlbnQgaXMgYXZhaWxhYmxlLlxuXHQgICAgICAgKi9cblx0
ICAgICAgdmFyIHdoaWNoID0gbmF0aXZlRXZlbnQud2hpY2g7XG5cdCAgICAgIGlmICh3aGljaCAh
PT0gU1BBQ0VCQVJfQ09ERSkge1xuXHQgICAgICAgIHJldHVybiBudWxsO1xuXHQgICAgICB9XG5c
dFxuXHQgICAgICBoYXNTcGFjZUtleXByZXNzID0gdHJ1ZTtcblx0ICAgICAgcmV0dXJuIFNQQUNF
QkFSX0NIQVI7XG5cdFxuXHQgICAgY2FzZSAndG9wVGV4dElucHV0Jzpcblx0ICAgICAgLy8gUmVj
b3JkIHRoZSBjaGFyYWN0ZXJzIHRvIGJlIGFkZGVkIHRvIHRoZSBET00uXG5cdCAgICAgIHZhciBj
aGFycyA9IG5hdGl2ZUV2ZW50LmRhdGE7XG5cdFxuXHQgICAgICAvLyBJZiBpdCdzIGEgc3BhY2Vi
YXIgY2hhcmFjdGVyLCBhc3N1bWUgdGhhdCB3ZSBoYXZlIGFscmVhZHkgaGFuZGxlZFxuXHQgICAg
ICAvLyBpdCBhdCB0aGUga2V5cHJlc3MgbGV2ZWwgYW5kIGJhaWwgaW1tZWRpYXRlbHkuIEFuZHJv
aWQgQ2hyb21lXG5cdCAgICAgIC8vIGRvZXNuJ3QgZ2l2ZSB1cyBrZXljb2Rlcywgc28gd2UgbmVl
ZCB0byBibGFja2xpc3QgaXQuXG5cdCAgICAgIGlmIChjaGFycyA9PT0gU1BBQ0VCQVJfQ0hBUiAm
JiBoYXNTcGFjZUtleXByZXNzKSB7XG5cdCAgICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICAgIH1c
blx0XG5cdCAgICAgIHJldHVybiBjaGFycztcblx0XG5cdCAgICBkZWZhdWx0OlxuXHQgICAgICAv
LyBGb3Igb3RoZXIgbmF0aXZlIGV2ZW50IHR5cGVzLCBkbyBub3RoaW5nLlxuXHQgICAgICByZXR1
cm4gbnVsbDtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBGb3IgYnJvd3NlcnMgdGhhdCBk
byBub3QgcHJvdmlkZSB0aGUgYHRleHRJbnB1dGAgZXZlbnQsIGV4dHJhY3QgdGhlXG5cdCAqIGFw
cHJvcHJpYXRlIHN0cmluZyB0byB1c2UgZm9yIFN5bnRoZXRpY0lucHV0RXZlbnQuXG5cdCAqXG5c
dCAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3Rh
bnRzYC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2
ZW50LlxuXHQgKiBAcmV0dXJuIHs/c3RyaW5nfSBUaGUgZmFsbGJhY2sgc3RyaW5nIGZvciB0aGlz
IGBiZWZvcmVJbnB1dGAgZXZlbnQuXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRGYWxsYmFja0JlZm9y
ZUlucHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuXHQgIC8vIElmIHdlIGFy
ZSBjdXJyZW50bHkgY29tcG9zaW5nIChJTUUpIGFuZCB1c2luZyBhIGZhbGxiYWNrIHRvIGRvIHNv
LFxuXHQgIC8vIHRyeSB0byBleHRyYWN0IHRoZSBjb21wb3NlZCBjaGFyYWN0ZXJzIGZyb20gdGhl
IGZhbGxiYWNrIG9iamVjdC5cblx0ICAvLyBJZiBjb21wb3NpdGlvbiBldmVudCBpcyBhdmFpbGFi
bGUsIHdlIGV4dHJhY3QgYSBzdHJpbmcgb25seSBhdFxuXHQgIC8vIGNvbXBvc2l0aW9uZXZlbnQs
IG90aGVyd2lzZSBleHRyYWN0IGl0IGF0IGZhbGxiYWNrIGV2ZW50cy5cblx0ICBpZiAoY3VycmVu
dENvbXBvc2l0aW9uKSB7XG5cdCAgICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ29tcG9zaXRp
b25FbmQnIHx8ICFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50ICYmIGlzRmFsbGJhY2tDb21wb3NpdGlv
bkVuZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xuXHQgICAgICB2YXIgY2hhcnMgPSBj
dXJyZW50Q29tcG9zaXRpb24uZ2V0RGF0YSgpO1xuXHQgICAgICBGYWxsYmFja0NvbXBvc2l0aW9u
U3RhdGUucmVsZWFzZShjdXJyZW50Q29tcG9zaXRpb24pO1xuXHQgICAgICBjdXJyZW50Q29tcG9z
aXRpb24gPSBudWxsO1xuXHQgICAgICByZXR1cm4gY2hhcnM7XG5cdCAgICB9XG5cdCAgICByZXR1
cm4gbnVsbDtcblx0ICB9XG5cdFxuXHQgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG5cdCAgICBj
YXNlICd0b3BQYXN0ZSc6XG5cdCAgICAgIC8vIElmIGEgcGFzdGUgZXZlbnQgb2NjdXJzIGFmdGVy
IGEga2V5cHJlc3MsIHRocm93IG91dCB0aGUgaW5wdXRcblx0ICAgICAgLy8gY2hhcnMuIFBhc3Rl
IGV2ZW50cyBzaG91bGQgbm90IGxlYWQgdG8gQmVmb3JlSW5wdXQgZXZlbnRzLlxuXHQgICAgICBy
ZXR1cm4gbnVsbDtcblx0ICAgIGNhc2UgJ3RvcEtleVByZXNzJzpcblx0ICAgICAgLyoqXG5cdCAg
ICAgICAqIEFzIG9mIHYyNywgRmlyZWZveCBtYXkgZmlyZSBrZXlwcmVzcyBldmVudHMgZXZlbiB3
aGVuIG5vIGNoYXJhY3RlclxuXHQgICAgICAgKiB3aWxsIGJlIGluc2VydGVkLiBBIGZldyBwb3Nz
aWJpbGl0aWVzOlxuXHQgICAgICAgKlxuXHQgICAgICAgKiAtIGB3aGljaGAgaXMgYDBgLiBBcnJv
dyBrZXlzLCBFc2Mga2V5LCBldGMuXG5cdCAgICAgICAqXG5cdCAgICAgICAqIC0gYHdoaWNoYCBp
cyB0aGUgcHJlc3NlZCBrZXkgY29kZSwgYnV0IG5vIGNoYXIgaXMgYXZhaWxhYmxlLlxuXHQgICAg
ICAgKiAgIEV4OiAnQWx0R3IgKyBkYCBpbiBQb2xpc2guIFRoZXJlIGlzIG5vIG1vZGlmaWVkIGNo
YXJhY3RlciBmb3Jcblx0ICAgICAgICogICB0aGlzIGtleSBjb21iaW5hdGlvbiBhbmQgbm8gY2hh
cmFjdGVyIGlzIGluc2VydGVkIGludG8gdGhlXG5cdCAgICAgICAqICAgZG9jdW1lbnQsIGJ1dCBG
RiBmaXJlcyB0aGUga2V5cHJlc3MgZm9yIGNoYXIgY29kZSBgMTAwYCBhbnl3YXkuXG5cdCAgICAg
ICAqICAgTm8gYGlucHV0YCBldmVudCB3aWxsIG9jY3VyLlxuXHQgICAgICAgKlxuXHQgICAgICAg
KiAtIGB3aGljaGAgaXMgdGhlIHByZXNzZWQga2V5IGNvZGUsIGJ1dCBhIGNvbW1hbmQgY29tYmlu
YXRpb24gaXNcblx0ICAgICAgICogICBiZWluZyB1c2VkLiBFeDogYENtZCtDYC4gTm8gY2hhcmFj
dGVyIGlzIGluc2VydGVkLCBhbmQgbm9cblx0ICAgICAgICogICBgaW5wdXRgIGV2ZW50IHdpbGwg
b2NjdXIuXG5cdCAgICAgICAqL1xuXHQgICAgICBpZiAobmF0aXZlRXZlbnQud2hpY2ggJiYgIWlz
S2V5cHJlc3NDb21tYW5kKG5hdGl2ZUV2ZW50KSkge1xuXHQgICAgICAgIHJldHVybiBTdHJpbmcu
ZnJvbUNoYXJDb2RlKG5hdGl2ZUV2ZW50LndoaWNoKTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1
cm4gbnVsbDtcblx0ICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uRW5kJzpcblx0ICAgICAgcmV0dXJu
IHVzZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhID8gbnVsbCA6IG5hdGl2ZUV2ZW50LmRhdGE7XG5c
dCAgICBkZWZhdWx0OlxuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cdH1cblx0XG5cdC8q
KlxuXHQgKiBFeHRyYWN0IGEgU3ludGhldGljSW5wdXRFdmVudCBmb3IgYGJlZm9yZUlucHV0YCwg
YmFzZWQgb24gZWl0aGVyIG5hdGl2ZVxuXHQgKiBgdGV4dElucHV0YCBvciBmYWxsYmFjayBiZWhh
dmlvci5cblx0ICpcblx0ICogQHJldHVybiB7P29iamVjdH0gQSBTeW50aGV0aWNJbnB1dEV2ZW50
LlxuXHQgKi9cblx0ZnVuY3Rpb24gZXh0cmFjdEJlZm9yZUlucHV0RXZlbnQodG9wTGV2ZWxUeXBl
LCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICB2YXIg
Y2hhcnM7XG5cdFxuXHQgIGlmIChjYW5Vc2VUZXh0SW5wdXRFdmVudCkge1xuXHQgICAgY2hhcnMg
PSBnZXROYXRpdmVCZWZvcmVJbnB1dENoYXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpO1xu
XHQgIH0gZWxzZSB7XG5cdCAgICBjaGFycyA9IGdldEZhbGxiYWNrQmVmb3JlSW5wdXRDaGFycyh0
b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KTtcblx0ICB9XG5cdFxuXHQgIC8vIElmIG5vIGNoYXJh
Y3RlcnMgYXJlIGJlaW5nIGluc2VydGVkLCBubyBCZWZvcmVJbnB1dCBldmVudCBzaG91bGRcblx0
ICAvLyBiZSBmaXJlZC5cblx0ICBpZiAoIWNoYXJzKSB7XG5cdCAgICByZXR1cm4gbnVsbDtcblx0
ICB9XG5cdFxuXHQgIHZhciBldmVudCA9IFN5bnRoZXRpY0lucHV0RXZlbnQuZ2V0UG9vbGVkKGV2
ZW50VHlwZXMuYmVmb3JlSW5wdXQsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCk7XG5cdFxuXHQgIGV2ZW50LmRhdGEgPSBjaGFycztcblx0ICBFdmVudFByb3BhZ2F0
b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xuXHQgIHJldHVybiBldmVu
dDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIENyZWF0ZSBhbiBgb25CZWZvcmVJbnB1dGAgZXZlbnQg
dG8gbWF0Y2hcblx0ICogaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMy9XRC1ET00tTGV2ZWwtMy1F
dmVudHMtMjAxMzExMDUvI2V2ZW50cy1pbnB1dGV2ZW50cy5cblx0ICpcblx0ICogVGhpcyBldmVu
dCBwbHVnaW4gaXMgYmFzZWQgb24gdGhlIG5hdGl2ZSBgdGV4dElucHV0YCBldmVudFxuXHQgKiBh
dmFpbGFibGUgaW4gQ2hyb21lLCBTYWZhcmksIE9wZXJhLCBhbmQgSUUuIFRoaXMgZXZlbnQgZmly
ZXMgYWZ0ZXJcblx0ICogYG9uS2V5UHJlc3NgIGFuZCBgb25Db21wb3NpdGlvbkVuZGAsIGJ1dCBi
ZWZvcmUgYG9uSW5wdXRgLlxuXHQgKlxuXHQgKiBgYmVmb3JlSW5wdXRgIGlzIHNwZWMnZCBidXQg
bm90IGltcGxlbWVudGVkIGluIGFueSBicm93c2VycywgYW5kXG5cdCAqIHRoZSBgaW5wdXRgIGV2
ZW50IGRvZXMgbm90IHByb3ZpZGUgYW55IHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGhh
c1xuXHQgKiBhY3R1YWxseSBiZWVuIGFkZGVkLCBjb250cmFyeSB0byB0aGUgc3BlYy4gVGh1cywg
YHRleHRJbnB1dGAgaXMgdGhlIGJlc3Rcblx0ICogYXZhaWxhYmxlIGV2ZW50IHRvIGlkZW50aWZ5
IHRoZSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBhY3R1YWxseSBiZWVuIGluc2VydGVkXG5cdCAqIGlu
dG8gdGhlIHRhcmdldCBub2RlLlxuXHQgKlxuXHQgKiBUaGlzIHBsdWdpbiBpcyBhbHNvIHJlc3Bv
bnNpYmxlIGZvciBlbWl0dGluZyBgY29tcG9zaXRpb25gIGV2ZW50cywgdGh1c1xuXHQgKiBhbGxv
d2luZyB1cyB0byBzaGFyZSBjb21wb3NpdGlvbiBmYWxsYmFjayBjb2RlIGZvciBib3RoIGBiZWZv
cmVJbnB1dGAgYW5kXG5cdCAqIGBjb21wb3NpdGlvbmAgZXZlbnQgdHlwZXMuXG5cdCAqL1xuXHR2
YXIgQmVmb3JlSW5wdXRFdmVudFBsdWdpbiA9IHtcblx0ICBldmVudFR5cGVzOiBldmVudFR5cGVz
LFxuXHRcblx0ICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJ
bnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICAgIHJldHVybiBbZXh0
cmFjdENvbXBvc2l0aW9uRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpLCBleHRyYWN0QmVmb3JlSW5wdXRFdmVudCh0b3BMZXZlbFR5
cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCldO1xuXHQgIH1c
blx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gQmVmb3JlSW5wdXRFdmVudFBsdWdpbjtcblxu
LyoqKi8gfSxcbi8qIDEyNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIENTU1Byb3BlcnR5
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OCk7XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9
IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5cdHZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9f
d2VicGFja19yZXF1aXJlX18oOCk7XG5cdFxuXHR2YXIgY2FtZWxpemVTdHlsZU5hbWUgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDk5KTtcblx0dmFyIGRhbmdlcm91c1N0eWxlVmFsdWUgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDE3OCk7XG5cdHZhciBoeXBoZW5hdGVTdHlsZU5hbWUgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDEwNik7XG5cdHZhciBtZW1vaXplU3RyaW5nT25seSA9IF9fd2VicGFja19yZXF1
aXJlX18oMTA5KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRc
blx0dmFyIHByb2Nlc3NTdHlsZU5hbWUgPSBtZW1vaXplU3RyaW5nT25seShmdW5jdGlvbiAoc3R5
bGVOYW1lKSB7XG5cdCAgcmV0dXJuIGh5cGhlbmF0ZVN0eWxlTmFtZShzdHlsZU5hbWUpO1xuXHR9
KTtcblx0XG5cdHZhciBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyA9IGZhbHNlO1xuXHR2YXIgc3R5
bGVGbG9hdEFjY2Vzc29yID0gJ2Nzc0Zsb2F0Jztcblx0aWYgKEV4ZWN1dGlvbkVudmlyb25tZW50
LmNhblVzZURPTSkge1xuXHQgIHZhciB0ZW1wU3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKS5zdHlsZTtcblx0ICB0cnkge1xuXHQgICAgLy8gSUU4IHRocm93cyBcIkludmFsaWQg
YXJndW1lbnQuXCIgaWYgcmVzZXR0aW5nIHNob3J0aGFuZCBzdHlsZSBwcm9wZXJ0aWVzLlxuXHQg
ICAgdGVtcFN0eWxlLmZvbnQgPSAnJztcblx0ICB9IGNhdGNoIChlKSB7XG5cdCAgICBoYXNTaG9y
dGhhbmRQcm9wZXJ0eUJ1ZyA9IHRydWU7XG5cdCAgfVxuXHQgIC8vIElFOCBvbmx5IHN1cHBvcnRz
IGFjY2Vzc2luZyBjc3NGbG9hdCAoc3RhbmRhcmQpIGFzIHN0eWxlRmxvYXRcblx0ICBpZiAoZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0ID09PSB1bmRlZmluZWQpIHtcblx0
ICAgIHN0eWxlRmxvYXRBY2Nlc3NvciA9ICdzdHlsZUZsb2F0Jztcblx0ICB9XG5cdH1cblx0XG5c
dGlmIChmYWxzZSkge1xuXHQgIC8vICdtc1RyYW5zZm9ybScgaXMgY29ycmVjdCwgYnV0IHRoZSBv
dGhlciBwcmVmaXhlcyBzaG91bGQgYmUgY2FwaXRhbGl6ZWRcblx0ICB2YXIgYmFkVmVuZG9yZWRT
dHlsZU5hbWVQYXR0ZXJuID0gL14oPzp3ZWJraXR8bW96fG8pW0EtWl0vO1xuXHRcblx0ICAvLyBz
dHlsZSB2YWx1ZXMgc2hvdWxkbid0IGNvbnRhaW4gYSBzZW1pY29sb25cblx0ICB2YXIgYmFkU3R5
bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuID0gLztcXHMqJC87XG5cdFxuXHQgIHZhciB3YXJu
ZWRTdHlsZU5hbWVzID0ge307XG5cdCAgdmFyIHdhcm5lZFN0eWxlVmFsdWVzID0ge307XG5cdCAg
dmFyIHdhcm5lZEZvck5hTlZhbHVlID0gZmFsc2U7XG5cdFxuXHQgIHZhciB3YXJuSHlwaGVuYXRl
ZFN0eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lLCBvd25lcikge1xuXHQgICAgaWYgKHdhcm5lZFN0
eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSkg
e1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAgd2FybmVkU3R5bGVOYW1lc1tu
YW1lXSA9IHRydWU7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhmYWxzZSwgJ1Vuc3VwcG9ydGVkIHN0eWxlIHByb3BlcnR5ICVzLiBEaWQgeW91
IG1lYW4gJXM/JXMnLCBuYW1lLCBjYW1lbGl6ZVN0eWxlTmFtZShuYW1lKSwgY2hlY2tSZW5kZXJN
ZXNzYWdlKG93bmVyKSkgOiB2b2lkIDA7XG5cdCAgfTtcblx0XG5cdCAgdmFyIHdhcm5CYWRWZW5k
b3JlZFN0eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lLCBvd25lcikge1xuXHQgICAgaWYgKHdhcm5l
ZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVkU3R5bGVOYW1lc1tuYW1l
XSkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAgd2FybmVkU3R5bGVOYW1l
c1tuYW1lXSA9IHRydWU7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhmYWxzZSwgJ1Vuc3VwcG9ydGVkIHZlbmRvci1wcmVmaXhlZCBzdHlsZSBw
cm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVzPyVzJywgbmFtZSwgbmFtZS5jaGFyQXQoMCkudG9V
cHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSksIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lcikpIDog
dm9pZCAwO1xuXHQgIH07XG5cdFxuXHQgIHZhciB3YXJuU3R5bGVWYWx1ZVdpdGhTZW1pY29sb24g
PSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG93bmVyKSB7XG5cdCAgICBpZiAod2FybmVkU3R5bGVW
YWx1ZXMuaGFzT3duUHJvcGVydHkodmFsdWUpICYmIHdhcm5lZFN0eWxlVmFsdWVzW3ZhbHVlXSkg
e1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAgd2FybmVkU3R5bGVWYWx1ZXNb
dmFsdWVdID0gdHJ1ZTtcblx0ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGZhbHNlLCBcIlN0eWxlIHByb3BlcnR5IHZhbHVlcyBzaG91bGRuJ3QgY29u
dGFpbiBhIHNlbWljb2xvbi4lcyBcIiArICdUcnkgXCIlczogJXNcIiBpbnN0ZWFkLicsIGNoZWNr
UmVuZGVyTWVzc2FnZShvd25lciksIG5hbWUsIHZhbHVlLnJlcGxhY2UoYmFkU3R5bGVWYWx1ZVdp
dGhTZW1pY29sb25QYXR0ZXJuLCAnJykpIDogdm9pZCAwO1xuXHQgIH07XG5cdFxuXHQgIHZhciB3
YXJuU3R5bGVWYWx1ZUlzTmFOID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvd25lcikge1xuXHQg
ICAgaWYgKHdhcm5lZEZvck5hTlZhbHVlKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0
XG5cdCAgICB3YXJuZWRGb3JOYU5WYWx1ZSA9IHRydWU7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2BOYU5gIGlzIGFuIGludmFs
aWQgdmFsdWUgZm9yIHRoZSBgJXNgIGNzcyBzdHlsZSBwcm9wZXJ0eS4lcycsIG5hbWUsIGNoZWNr
UmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwO1xuXHQgIH07XG5cdFxuXHQgIHZhciBjaGVj
a1JlbmRlck1lc3NhZ2UgPSBmdW5jdGlvbiAob3duZXIpIHtcblx0ICAgIGlmIChvd25lcikge1xu
XHQgICAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcblx0ICAgICAgaWYgKG5hbWUpIHtc
blx0ICAgICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUg
KyAnYC4nO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4gJyc7XG5cdCAgfTtcblx0
XG5cdCAgLyoqXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcblx0ICAgKiBAcGFyYW0geyp9
IHZhbHVlXG5cdCAgICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9uZW50XG5cdCAg
ICovXG5cdCAgdmFyIHdhcm5WYWxpZFN0eWxlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBjb21w
b25lbnQpIHtcblx0ICAgIHZhciBvd25lcjtcblx0ICAgIGlmIChjb21wb25lbnQpIHtcblx0ICAg
ICAgb3duZXIgPSBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcblx0ICAgIH1cblx0
ICAgIGlmIChuYW1lLmluZGV4T2YoJy0nKSA+IC0xKSB7XG5cdCAgICAgIHdhcm5IeXBoZW5hdGVk
U3R5bGVOYW1lKG5hbWUsIG93bmVyKTtcblx0ICAgIH0gZWxzZSBpZiAoYmFkVmVuZG9yZWRTdHls
ZU5hbWVQYXR0ZXJuLnRlc3QobmFtZSkpIHtcblx0ICAgICAgd2FybkJhZFZlbmRvcmVkU3R5bGVO
YW1lKG5hbWUsIG93bmVyKTtcblx0ICAgIH0gZWxzZSBpZiAoYmFkU3R5bGVWYWx1ZVdpdGhTZW1p
Y29sb25QYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG5cdCAgICAgIHdhcm5TdHlsZVZhbHVlV2l0aFNl
bWljb2xvbihuYW1lLCB2YWx1ZSwgb3duZXIpO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmICh0eXBl
b2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlzTmFOKHZhbHVlKSkge1xuXHQgICAgICB3YXJuU3R5
bGVWYWx1ZUlzTmFOKG5hbWUsIHZhbHVlLCBvd25lcik7XG5cdCAgICB9XG5cdCAgfTtcblx0fVxu
XHRcblx0LyoqXG5cdCAqIE9wZXJhdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCBDU1MgcHJvcGVydGll
cy5cblx0ICovXG5cdHZhciBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMgPSB7XG5cdCAgLyoqXG5cdCAg
ICogU2VyaWFsaXplcyBhIG1hcHBpbmcgb2Ygc3R5bGUgcHJvcGVydGllcyBmb3IgdXNlIGFzIGlu
bGluZSBzdHlsZXM6XG5cdCAgICpcblx0ICAgKiAgID4gY3JlYXRlTWFya3VwRm9yU3R5bGVzKHt3
aWR0aDogJzIwMHB4JywgaGVpZ2h0OiAwfSlcblx0ICAgKiAgIFwid2lkdGg6MjAwcHg7aGVpZ2h0
OjA7XCJcblx0ICAgKlxuXHQgICAqIFVuZGVmaW5lZCB2YWx1ZXMgYXJlIGlnbm9yZWQgc28gdGhh
dCBkZWNsYXJhdGl2ZSBwcm9ncmFtbWluZyBpcyBlYXNpZXIuXG5cdCAgICogVGhlIHJlc3VsdCBz
aG91bGQgYmUgSFRNTC1lc2NhcGVkIGJlZm9yZSBpbnNlcnRpb24gaW50byB0aGUgRE9NLlxuXHQg
ICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IHN0eWxlc1xuXHQgICAqIEBwYXJhbSB7UmVhY3RE
T01Db21wb25lbnR9IGNvbXBvbmVudFxuXHQgICAqIEByZXR1cm4gez9zdHJpbmd9XG5cdCAgICov
XG5cdCAgY3JlYXRlTWFya3VwRm9yU3R5bGVzOiBmdW5jdGlvbiAoc3R5bGVzLCBjb21wb25lbnQp
IHtcblx0ICAgIHZhciBzZXJpYWxpemVkID0gJyc7XG5cdCAgICBmb3IgKHZhciBzdHlsZU5hbWUg
aW4gc3R5bGVzKSB7XG5cdCAgICAgIGlmICghc3R5bGVzLmhhc093blByb3BlcnR5KHN0eWxlTmFt
ZSkpIHtcblx0ICAgICAgICBjb250aW51ZTtcblx0ICAgICAgfVxuXHQgICAgICB2YXIgaXNDdXN0
b21Qcm9wZXJ0eSA9IHN0eWxlTmFtZS5pbmRleE9mKCctLScpID09PSAwO1xuXHQgICAgICB2YXIg
c3R5bGVWYWx1ZSA9IHN0eWxlc1tzdHlsZU5hbWVdO1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0
ICAgICAgICBpZiAoIWlzQ3VzdG9tUHJvcGVydHkpIHtcblx0ICAgICAgICAgIHdhcm5WYWxpZFN0
eWxlKHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSwgY29tcG9uZW50KTtcblx0ICAgICAgICB9XG5cdCAg
ICAgIH1cblx0ICAgICAgaWYgKHN0eWxlVmFsdWUgIT0gbnVsbCkge1xuXHQgICAgICAgIHNlcmlh
bGl6ZWQgKz0gcHJvY2Vzc1N0eWxlTmFtZShzdHlsZU5hbWUpICsgJzonO1xuXHQgICAgICAgIHNl
cmlhbGl6ZWQgKz0gZGFuZ2Vyb3VzU3R5bGVWYWx1ZShzdHlsZU5hbWUsIHN0eWxlVmFsdWUsIGNv
bXBvbmVudCwgaXNDdXN0b21Qcm9wZXJ0eSkgKyAnOyc7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
ICAgIHJldHVybiBzZXJpYWxpemVkIHx8IG51bGw7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAg
ICogU2V0cyB0aGUgdmFsdWUgZm9yIG11bHRpcGxlIHN0eWxlcyBvbiBhIG5vZGUuICBJZiBhIHZh
bHVlIGlzIHNwZWNpZmllZCBhc1xuXHQgICAqICcnIChlbXB0eSBzdHJpbmcpLCB0aGUgY29ycmVz
cG9uZGluZyBzdHlsZSBwcm9wZXJ0eSB3aWxsIGJlIHVuc2V0LlxuXHQgICAqXG5cdCAgICogQHBh
cmFtIHtET01FbGVtZW50fSBub2RlXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IHN0eWxlc1xuXHQg
ICAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGNvbXBvbmVudFxuXHQgICAqL1xuXHQgIHNl
dFZhbHVlRm9yU3R5bGVzOiBmdW5jdGlvbiAobm9kZSwgc3R5bGVzLCBjb21wb25lbnQpIHtcblx0
ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wu
b25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAgICBpbnN0YW5jZUlEOiBjb21wb25lbnQuX2RlYnVn
SUQsXG5cdCAgICAgICAgdHlwZTogJ3VwZGF0ZSBzdHlsZXMnLFxuXHQgICAgICAgIHBheWxvYWQ6
IHN0eWxlc1xuXHQgICAgICB9KTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgc3R5bGUgPSBub2Rl
LnN0eWxlO1xuXHQgICAgZm9yICh2YXIgc3R5bGVOYW1lIGluIHN0eWxlcykge1xuXHQgICAgICBp
ZiAoIXN0eWxlcy5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSB7XG5cdCAgICAgICAgY29udGlu
dWU7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIGlzQ3VzdG9tUHJvcGVydHkgPSBzdHlsZU5hbWUu
aW5kZXhPZignLS0nKSA9PT0gMDtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgaWYg
KCFpc0N1c3RvbVByb3BlcnR5KSB7XG5cdCAgICAgICAgICB3YXJuVmFsaWRTdHlsZShzdHlsZU5h
bWUsIHN0eWxlc1tzdHlsZU5hbWVdLCBjb21wb25lbnQpO1xuXHQgICAgICAgIH1cblx0ICAgICAg
fVxuXHQgICAgICB2YXIgc3R5bGVWYWx1ZSA9IGRhbmdlcm91c1N0eWxlVmFsdWUoc3R5bGVOYW1l
LCBzdHlsZXNbc3R5bGVOYW1lXSwgY29tcG9uZW50LCBpc0N1c3RvbVByb3BlcnR5KTtcblx0ICAg
ICAgaWYgKHN0eWxlTmFtZSA9PT0gJ2Zsb2F0JyB8fCBzdHlsZU5hbWUgPT09ICdjc3NGbG9hdCcp
IHtcblx0ICAgICAgICBzdHlsZU5hbWUgPSBzdHlsZUZsb2F0QWNjZXNzb3I7XG5cdCAgICAgIH1c
blx0ICAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHkpIHtcblx0ICAgICAgICBzdHlsZS5zZXRQcm9w
ZXJ0eShzdHlsZU5hbWUsIHN0eWxlVmFsdWUpO1xuXHQgICAgICB9IGVsc2UgaWYgKHN0eWxlVmFs
dWUpIHtcblx0ICAgICAgICBzdHlsZVtzdHlsZU5hbWVdID0gc3R5bGVWYWx1ZTtcblx0ICAgICAg
fSBlbHNlIHtcblx0ICAgICAgICB2YXIgZXhwYW5zaW9uID0gaGFzU2hvcnRoYW5kUHJvcGVydHlC
dWcgJiYgQ1NTUHJvcGVydHkuc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zW3N0eWxlTmFtZV07
XG5cdCAgICAgICAgaWYgKGV4cGFuc2lvbikge1xuXHQgICAgICAgICAgLy8gU2hvcnRoYW5kIHBy
b3BlcnR5IHRoYXQgSUU4IHdvbid0IGxpa2UgdW5zZXR0aW5nLCBzbyB1bnNldCBlYWNoXG5cdCAg
ICAgICAgICAvLyBjb21wb25lbnQgdG8gcGxhY2F0ZSBpdFxuXHQgICAgICAgICAgZm9yICh2YXIg
aW5kaXZpZHVhbFN0eWxlTmFtZSBpbiBleHBhbnNpb24pIHtcblx0ICAgICAgICAgICAgc3R5bGVb
aW5kaXZpZHVhbFN0eWxlTmFtZV0gPSAnJztcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGVs
c2Uge1xuXHQgICAgICAgICAgc3R5bGVbc3R5bGVOYW1lXSA9ICcnO1xuXHQgICAgICAgIH1cblx0
ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gQ1NT
UHJvcGVydHlPcGVyYXRpb25zO1xuXG4vKioqLyB9LFxuLyogMTI4ICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHR2YXIgRXZlbnRQbHVnaW5IdWIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KTtcblx0
dmFyIEV2ZW50UHJvcGFnYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTtcblx0dmFyIEV4
ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblx0dmFyIFJlYWN0
RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBSZWFjdFVw
ZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXHR2YXIgU3ludGhldGljRXZlbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0XG5cdHZhciBpbnB1dFZhbHVlVHJhY2tpbmcgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDc0KTtcblx0dmFyIGdldEV2ZW50VGFyZ2V0ID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg0Nik7XG5cdHZhciBpc0V2ZW50U3VwcG9ydGVkID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg0Nyk7XG5cdHZhciBpc1RleHRJbnB1dEVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDc2KTtcblx0XG5cdHZhciBldmVudFR5cGVzID0ge1xuXHQgIGNoYW5nZToge1xuXHQgICAgcGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcblx0ICAgICAgYnViYmxlZDogJ29uQ2hhbmdlJyxcblx0
ICAgICAgY2FwdHVyZWQ6ICdvbkNoYW5nZUNhcHR1cmUnXG5cdCAgICB9LFxuXHQgICAgZGVwZW5k
ZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ2hhbmdlJywgJ3RvcENsaWNrJywgJ3RvcEZvY3VzJywg
J3RvcElucHV0JywgJ3RvcEtleURvd24nLCAndG9wS2V5VXAnLCAndG9wU2VsZWN0aW9uQ2hhbmdl
J11cblx0ICB9XG5cdH07XG5cdFxuXHRmdW5jdGlvbiBjcmVhdGVBbmRBY2N1bXVsYXRlQ2hhbmdl
RXZlbnQoaW5zdCwgbmF0aXZlRXZlbnQsIHRhcmdldCkge1xuXHQgIHZhciBldmVudCA9IFN5bnRo
ZXRpY0V2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmNoYW5nZSwgaW5zdCwgbmF0aXZlRXZlbnQs
IHRhcmdldCk7XG5cdCAgZXZlbnQudHlwZSA9ICdjaGFuZ2UnO1xuXHQgIEV2ZW50UHJvcGFnYXRv
cnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7XG5cdCAgcmV0dXJuIGV2ZW50
O1xuXHR9XG5cdC8qKlxuXHQgKiBGb3IgSUUgc2hpbXNcblx0ICovXG5cdHZhciBhY3RpdmVFbGVt
ZW50ID0gbnVsbDtcblx0dmFyIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDtcblx0XG5cdC8qKlxu
XHQgKiBTRUNUSU9OOiBoYW5kbGUgYGNoYW5nZWAgZXZlbnRcblx0ICovXG5cdGZ1bmN0aW9uIHNo
b3VsZFVzZUNoYW5nZUV2ZW50KGVsZW0pIHtcblx0ICB2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVO
YW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0ICByZXR1cm4gbm9kZU5hbWUg
PT09ICdzZWxlY3QnIHx8IG5vZGVOYW1lID09PSAnaW5wdXQnICYmIGVsZW0udHlwZSA9PT0gJ2Zp
bGUnO1xuXHR9XG5cdFxuXHR2YXIgZG9lc0NoYW5nZUV2ZW50QnViYmxlID0gZmFsc2U7XG5cdGlm
IChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcblx0ICAvLyBTZWUgYGhhbmRsZUNo
YW5nZWAgY29tbWVudCBiZWxvd1xuXHQgIGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSA9IGlzRXZlbnRT
dXBwb3J0ZWQoJ2NoYW5nZScpICYmICghZG9jdW1lbnQuZG9jdW1lbnRNb2RlIHx8IGRvY3VtZW50
LmRvY3VtZW50TW9kZSA+IDgpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBtYW51YWxEaXNwYXRjaENo
YW5nZUV2ZW50KG5hdGl2ZUV2ZW50KSB7XG5cdCAgdmFyIGV2ZW50ID0gY3JlYXRlQW5kQWNjdW11
bGF0ZUNoYW5nZUV2ZW50KGFjdGl2ZUVsZW1lbnRJbnN0LCBuYXRpdmVFdmVudCwgZ2V0RXZlbnRU
YXJnZXQobmF0aXZlRXZlbnQpKTtcblx0XG5cdCAgLy8gSWYgY2hhbmdlIGFuZCBwcm9wZXJ0eWNo
YW5nZSBidWJibGVkLCB3ZSdkIGp1c3QgYmluZCB0byBpdCBsaWtlIGFsbCB0aGVcblx0ICAvLyBv
dGhlciBldmVudHMgYW5kIGhhdmUgaXQgZ28gdGhyb3VnaCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIuIFNpbmNlIGl0XG5cdCAgLy8gZG9lc24ndCwgd2UgbWFudWFsbHkgbGlzdGVuIGZvciB0aGUg
ZXZlbnRzIGFuZCBzbyB3ZSBoYXZlIHRvIGVucXVldWUgYW5kXG5cdCAgLy8gcHJvY2VzcyB0aGUg
YWJzdHJhY3QgZXZlbnQgbWFudWFsbHkuXG5cdCAgLy9cblx0ICAvLyBCYXRjaGluZyBpcyBuZWNl
c3NhcnkgaGVyZSBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBhbGwgZXZlbnQgaGFuZGxlcnMgcnVu
XG5cdCAgLy8gYmVmb3JlIHRoZSBuZXh0IHJlcmVuZGVyIChpbmNsdWRpbmcgZXZlbnQgaGFuZGxl
cnMgYXR0YWNoZWQgdG8gYW5jZXN0b3Jcblx0ICAvLyBlbGVtZW50cyBpbnN0ZWFkIG9mIGRpcmVj
dGx5IG9uIHRoZSBpbnB1dCkuIFdpdGhvdXQgdGhpcywgY29udHJvbGxlZFxuXHQgIC8vIGNvbXBv
bmVudHMgZG9uJ3Qgd29yayBwcm9wZXJseSBpbiBjb25qdW5jdGlvbiB3aXRoIGV2ZW50IGJ1YmJs
aW5nIGJlY2F1c2Vcblx0ICAvLyB0aGUgY29tcG9uZW50IGlzIHJlcmVuZGVyZWQgYW5kIHRoZSB2
YWx1ZSByZXZlcnRlZCBiZWZvcmUgYWxsIHRoZSBldmVudFxuXHQgIC8vIGhhbmRsZXJzIGNhbiBy
dW4uIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcwOC5cblx0
ICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMocnVuRXZlbnRJbkJhdGNoLCBldmVudCk7XG5c
dH1cblx0XG5cdGZ1bmN0aW9uIHJ1bkV2ZW50SW5CYXRjaChldmVudCkge1xuXHQgIEV2ZW50UGx1
Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnQpO1xuXHQgIEV2ZW50UGx1Z2luSHViLnByb2Nlc3NF
dmVudFF1ZXVlKGZhbHNlKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gc3RhcnRXYXRjaGluZ0ZvckNo
YW5nZUV2ZW50SUU4KHRhcmdldCwgdGFyZ2V0SW5zdCkge1xuXHQgIGFjdGl2ZUVsZW1lbnQgPSB0
YXJnZXQ7XG5cdCAgYWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJbnN0O1xuXHQgIGFjdGl2ZUVs
ZW1lbnQuYXR0YWNoRXZlbnQoJ29uY2hhbmdlJywgbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudCk7
XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KCkge1xu
XHQgIGlmICghYWN0aXZlRWxlbWVudCkge1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICBhY3Rp
dmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbmNoYW5nZScsIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZl
bnQpO1xuXHQgIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuXHQgIGFjdGl2ZUVsZW1lbnRJbnN0ID0g
bnVsbDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKHRhcmdldElu
c3QsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgdmFyIHVwZGF0ZWQgPSBpbnB1dFZhbHVlVHJhY2tpbmcu
dXBkYXRlVmFsdWVJZkNoYW5nZWQodGFyZ2V0SW5zdCk7XG5cdCAgdmFyIHNpbXVsYXRlZCA9IG5h
dGl2ZUV2ZW50LnNpbXVsYXRlZCA9PT0gdHJ1ZSAmJiBDaGFuZ2VFdmVudFBsdWdpbi5fYWxsb3dT
aW11bGF0ZWRQYXNzVGhyb3VnaDtcblx0XG5cdCAgaWYgKHVwZGF0ZWQgfHwgc2ltdWxhdGVkKSB7
XG5cdCAgICByZXR1cm4gdGFyZ2V0SW5zdDtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdl
dFRhcmdldEluc3RGb3JDaGFuZ2VFdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QpIHtcblx0
ICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ2hhbmdlJykge1xuXHQgICAgcmV0dXJuIHRhcmdl
dEluc3Q7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBoYW5kbGVFdmVudHNGb3JDaGFuZ2VF
dmVudElFOCh0b3BMZXZlbFR5cGUsIHRhcmdldCwgdGFyZ2V0SW5zdCkge1xuXHQgIGlmICh0b3BM
ZXZlbFR5cGUgPT09ICd0b3BGb2N1cycpIHtcblx0ICAgIC8vIHN0b3BXYXRjaGluZygpIHNob3Vs
ZCBiZSBhIG5vb3AgaGVyZSBidXQgd2UgY2FsbCBpdCBqdXN0IGluIGNhc2Ugd2Vcblx0ICAgIC8v
IG1pc3NlZCBhIGJsdXIgZXZlbnQgc29tZWhvdy5cblx0ICAgIHN0b3BXYXRjaGluZ0ZvckNoYW5n
ZUV2ZW50SUU4KCk7XG5cdCAgICBzdGFydFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgodGFyZ2V0
LCB0YXJnZXRJbnN0KTtcblx0ICB9IGVsc2UgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcEJsdXIn
KSB7XG5cdCAgICBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgpO1xuXHQgIH1cblx0fVxu
XHRcblx0LyoqXG5cdCAqIFNFQ1RJT046IGhhbmRsZSBgaW5wdXRgIGV2ZW50XG5cdCAqL1xuXHR2
YXIgaXNJbnB1dEV2ZW50U3VwcG9ydGVkID0gZmFsc2U7XG5cdGlmIChFeGVjdXRpb25FbnZpcm9u
bWVudC5jYW5Vc2VET00pIHtcblx0ICAvLyBJRTkgY2xhaW1zIHRvIHN1cHBvcnQgdGhlIGlucHV0
IGV2ZW50IGJ1dCBmYWlscyB0byB0cmlnZ2VyIGl0IHdoZW5cblx0ICAvLyBkZWxldGluZyB0ZXh0
LCBzbyB3ZSBpZ25vcmUgaXRzIGlucHV0IGV2ZW50cy5cblx0XG5cdCAgaXNJbnB1dEV2ZW50U3Vw
cG9ydGVkID0gaXNFdmVudFN1cHBvcnRlZCgnaW5wdXQnKSAmJiAoISgnZG9jdW1lbnRNb2RlJyBp
biBkb2N1bWVudCkgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID4gOSk7XG5cdH1cblx0XG5cdC8q
KlxuXHQgKiAoRm9yIElFIDw9OSkgU3RhcnRzIHRyYWNraW5nIHByb3BlcnR5Y2hhbmdlIGV2ZW50
cyBvbiB0aGUgcGFzc2VkLWluIGVsZW1lbnRcblx0ICogYW5kIG92ZXJyaWRlIHRoZSB2YWx1ZSBw
cm9wZXJ0eSBzbyB0aGF0IHdlIGNhbiBkaXN0aW5ndWlzaCB1c2VyIGV2ZW50cyBmcm9tXG5cdCAq
IHZhbHVlIGNoYW5nZXMgaW4gSlMuXG5cdCAqL1xuXHRmdW5jdGlvbiBzdGFydFdhdGNoaW5nRm9y
VmFsdWVDaGFuZ2UodGFyZ2V0LCB0YXJnZXRJbnN0KSB7XG5cdCAgYWN0aXZlRWxlbWVudCA9IHRh
cmdldDtcblx0ICBhY3RpdmVFbGVtZW50SW5zdCA9IHRhcmdldEluc3Q7XG5cdCAgYWN0aXZlRWxl
bWVudC5hdHRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGhhbmRsZVByb3BlcnR5Q2hhbmdl
KTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIChGb3IgSUUgPD05KSBSZW1vdmVzIHRoZSBldmVudCBs
aXN0ZW5lcnMgZnJvbSB0aGUgY3VycmVudGx5LXRyYWNrZWQgZWxlbWVudCxcblx0ICogaWYgYW55
IGV4aXN0cy5cblx0ICovXG5cdGZ1bmN0aW9uIHN0b3BXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKCkg
e1xuXHQgIGlmICghYWN0aXZlRWxlbWVudCkge1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICBh
Y3RpdmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVy
dHlDaGFuZ2UpO1xuXHRcblx0ICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcblx0ICBhY3RpdmVFbGVt
ZW50SW5zdCA9IG51bGw7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiAoRm9yIElFIDw9OSkgSGFuZGxl
cyBhIHByb3BlcnR5Y2hhbmdlIGV2ZW50LCBzZW5kaW5nIGEgYGNoYW5nZWAgZXZlbnQgaWZcblx0
ICogdGhlIHZhbHVlIG9mIHRoZSBhY3RpdmUgZWxlbWVudCBoYXMgY2hhbmdlZC5cblx0ICovXG5c
dGZ1bmN0aW9uIGhhbmRsZVByb3BlcnR5Q2hhbmdlKG5hdGl2ZUV2ZW50KSB7XG5cdCAgaWYgKG5h
dGl2ZUV2ZW50LnByb3BlcnR5TmFtZSAhPT0gJ3ZhbHVlJykge1xuXHQgICAgcmV0dXJuO1xuXHQg
IH1cblx0ICBpZiAoZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKGFjdGl2ZUVsZW1lbnRJbnN0LCBuYXRp
dmVFdmVudCkpIHtcblx0ICAgIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQobmF0aXZlRXZlbnQp
O1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudFBv
bHlmaWxsKHRvcExldmVsVHlwZSwgdGFyZ2V0LCB0YXJnZXRJbnN0KSB7XG5cdCAgaWYgKHRvcExl
dmVsVHlwZSA9PT0gJ3RvcEZvY3VzJykge1xuXHQgICAgLy8gSW4gSUU4LCB3ZSBjYW4gY2FwdHVy
ZSBhbG1vc3QgYWxsIC52YWx1ZSBjaGFuZ2VzIGJ5IGFkZGluZyBhXG5cdCAgICAvLyBwcm9wZXJ0
eWNoYW5nZSBoYW5kbGVyIGFuZCBsb29raW5nIGZvciBldmVudHMgd2l0aCBwcm9wZXJ0eU5hbWVc
blx0ICAgIC8vIGVxdWFsIHRvICd2YWx1ZSdcblx0ICAgIC8vIEluIElFOSwgcHJvcGVydHljaGFu
Z2UgZmlyZXMgZm9yIG1vc3QgaW5wdXQgZXZlbnRzIGJ1dCBpcyBidWdneSBhbmRcblx0ICAgIC8v
IGRvZXNuJ3QgZmlyZSB3aGVuIHRleHQgaXMgZGVsZXRlZCwgYnV0IGNvbnZlbmllbnRseSwgc2Vs
ZWN0aW9uY2hhbmdlXG5cdCAgICAvLyBhcHBlYXJzIHRvIGZpcmUgaW4gYWxsIG9mIHRoZSByZW1h
aW5pbmcgY2FzZXMgc28gd2UgY2F0Y2ggdGhvc2UgYW5kXG5cdCAgICAvLyBmb3J3YXJkIHRoZSBl
dmVudCBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcblx0ICAgIC8vIEluIGVpdGhlciBjYXNlLCB3
ZSBkb24ndCB3YW50IHRvIGNhbGwgdGhlIGV2ZW50IGhhbmRsZXIgaWYgdGhlIHZhbHVlXG5cdCAg
ICAvLyBpcyBjaGFuZ2VkIGZyb20gSlMgc28gd2UgcmVkZWZpbmUgYSBzZXR0ZXIgZm9yIGAudmFs
dWVgIHRoYXQgdXBkYXRlc1xuXHQgICAgLy8gb3VyIGFjdGl2ZUVsZW1lbnRWYWx1ZSB2YXJpYWJs
ZSwgYWxsb3dpbmcgdXMgdG8gaWdub3JlIHRob3NlIGNoYW5nZXNcblx0ICAgIC8vXG5cdCAgICAv
LyBzdG9wV2F0Y2hpbmcoKSBzaG91bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwgaXQganVz
dCBpbiBjYXNlIHdlXG5cdCAgICAvLyBtaXNzZWQgYSBibHVyIGV2ZW50IHNvbWVob3cuXG5cdCAg
ICBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpO1xuXHQgICAgc3RhcnRXYXRjaGluZ0ZvclZh
bHVlQ2hhbmdlKHRhcmdldCwgdGFyZ2V0SW5zdCk7XG5cdCAgfSBlbHNlIGlmICh0b3BMZXZlbFR5
cGUgPT09ICd0b3BCbHVyJykge1xuXHQgICAgc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKTtc
blx0ICB9XG5cdH1cblx0XG5cdC8vIEZvciBJRTggYW5kIElFOS5cblx0ZnVuY3Rpb24gZ2V0VGFy
Z2V0SW5zdEZvcklucHV0RXZlbnRQb2x5ZmlsbCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5h
dGl2ZUV2ZW50KSB7XG5cdCAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcFNlbGVjdGlvbkNoYW5n
ZScgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wS2V5VXAnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3Rv
cEtleURvd24nKSB7XG5cdCAgICAvLyBPbiB0aGUgc2VsZWN0aW9uY2hhbmdlIGV2ZW50LCB0aGUg
dGFyZ2V0IGlzIGp1c3QgZG9jdW1lbnQgd2hpY2ggaXNuJ3Rcblx0ICAgIC8vIGhlbHBmdWwgZm9y
IHVzIHNvIGp1c3QgY2hlY2sgYWN0aXZlRWxlbWVudCBpbnN0ZWFkLlxuXHQgICAgLy9cblx0ICAg
IC8vIDk5JSBvZiB0aGUgdGltZSwga2V5ZG93biBhbmQga2V5dXAgYXJlbid0IG5lY2Vzc2FyeS4g
SUU4IGZhaWxzIHRvIGZpcmVcblx0ICAgIC8vIHByb3BlcnR5Y2hhbmdlIG9uIHRoZSBmaXJzdCBp
bnB1dCBldmVudCBhZnRlciBzZXR0aW5nIGB2YWx1ZWAgZnJvbSBhXG5cdCAgICAvLyBzY3JpcHQg
YW5kIGZpcmVzIG9ubHkga2V5ZG93biwga2V5cHJlc3MsIGtleXVwLiBDYXRjaGluZyBrZXl1cCB1
c3VhbGx5XG5cdCAgICAvLyBnZXRzIGl0IGFuZCBjYXRjaGluZyBrZXlkb3duIGxldHMgdXMgZmly
ZSBhbiBldmVudCBmb3IgdGhlIGZpcnN0XG5cdCAgICAvLyBrZXlzdHJva2UgaWYgdXNlciBkb2Vz
IGEga2V5IHJlcGVhdCAoaXQnbGwgYmUgYSBsaXR0bGUgZGVsYXllZDogcmlnaHRcblx0ICAgIC8v
IGJlZm9yZSB0aGUgc2Vjb25kIGtleXN0cm9rZSkuIE90aGVyIGlucHV0IG1ldGhvZHMgKGUuZy4s
IHBhc3RlKSBzZWVtIHRvXG5cdCAgICAvLyBmaXJlIHNlbGVjdGlvbmNoYW5nZSBub3JtYWxseS5c
blx0ICAgIHJldHVybiBnZXRJbnN0SWZWYWx1ZUNoYW5nZWQoYWN0aXZlRWxlbWVudEluc3QsIG5h
dGl2ZUV2ZW50KTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBTRUNUSU9OOiBoYW5kbGUg
YGNsaWNrYCBldmVudFxuXHQgKi9cblx0ZnVuY3Rpb24gc2hvdWxkVXNlQ2xpY2tFdmVudChlbGVt
KSB7XG5cdCAgLy8gVXNlIHRoZSBgY2xpY2tgIGV2ZW50IHRvIGRldGVjdCBjaGFuZ2VzIHRvIGNo
ZWNrYm94IGFuZCByYWRpbyBpbnB1dHMuXG5cdCAgLy8gVGhpcyBhcHByb2FjaCB3b3JrcyBhY3Jv
c3MgYWxsIGJyb3dzZXJzLCB3aGVyZWFzIGBjaGFuZ2VgIGRvZXMgbm90IGZpcmVcblx0ICAvLyB1
bnRpbCBgYmx1cmAgaW4gSUU4LlxuXHQgIHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWU7XG5c
dCAgcmV0dXJuIG5vZGVOYW1lICYmIG5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcg
JiYgKGVsZW0udHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBlbGVtLnR5cGUgPT09ICdyYWRpbycpO1xu
XHR9XG5cdFxuXHRmdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9yQ2xpY2tFdmVudCh0b3BMZXZlbFR5
cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgaWYgKHRvcExldmVsVHlwZSA9PT0g
J3RvcENsaWNrJykge1xuXHQgICAgcmV0dXJuIGdldEluc3RJZlZhbHVlQ2hhbmdlZCh0YXJnZXRJ
bnN0LCBuYXRpdmVFdmVudCk7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXRUYXJnZXRJ
bnN0Rm9ySW5wdXRPckNoYW5nZUV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZl
RXZlbnQpIHtcblx0ICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wSW5wdXQnIHx8IHRvcExldmVs
VHlwZSA9PT0gJ3RvcENoYW5nZScpIHtcblx0ICAgIHJldHVybiBnZXRJbnN0SWZWYWx1ZUNoYW5n
ZWQodGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24g
aGFuZGxlQ29udHJvbGxlZElucHV0Qmx1cihpbnN0LCBub2RlKSB7XG5cdCAgLy8gVE9ETzogSW4g
SUUsIGluc3QgaXMgb2NjYXNpb25hbGx5IG51bGwuIFdoeT9cblx0ICBpZiAoaW5zdCA9PSBudWxs
KSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHRcblx0ICAvLyBGaWJlciBhbmQgUmVhY3RET00g
a2VlcCB3cmFwcGVyIHN0YXRlIGluIHNlcGFyYXRlIHBsYWNlc1xuXHQgIHZhciBzdGF0ZSA9IGlu
c3QuX3dyYXBwZXJTdGF0ZSB8fCBub2RlLl93cmFwcGVyU3RhdGU7XG5cdFxuXHQgIGlmICghc3Rh
dGUgfHwgIXN0YXRlLmNvbnRyb2xsZWQgfHwgbm9kZS50eXBlICE9PSAnbnVtYmVyJykge1xuXHQg
ICAgcmV0dXJuO1xuXHQgIH1cblx0XG5cdCAgLy8gSWYgY29udHJvbGxlZCwgYXNzaWduIHRoZSB2
YWx1ZSBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgdmFsdWUgb24gYmx1clxuXHQgIHZhciB2YWx1
ZSA9ICcnICsgbm9kZS52YWx1ZTtcblx0ICBpZiAobm9kZS5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykg
IT09IHZhbHVlKSB7XG5cdCAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCB2YWx1ZSk7XG5c
dCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogVGhpcyBwbHVnaW4gY3JlYXRlcyBhbiBgb25DaGFu
Z2VgIGV2ZW50IHRoYXQgbm9ybWFsaXplcyBjaGFuZ2UgZXZlbnRzXG5cdCAqIGFjcm9zcyBmb3Jt
IGVsZW1lbnRzLiBUaGlzIGV2ZW50IGZpcmVzIGF0IGEgdGltZSB3aGVuIGl0J3MgcG9zc2libGUg
dG9cblx0ICogY2hhbmdlIHRoZSBlbGVtZW50J3MgdmFsdWUgd2l0aG91dCBzZWVpbmcgYSBmbGlj
a2VyLlxuXHQgKlxuXHQgKiBTdXBwb3J0ZWQgZWxlbWVudHMgYXJlOlxuXHQgKiAtIGlucHV0IChz
ZWUgYGlzVGV4dElucHV0RWxlbWVudGApXG5cdCAqIC0gdGV4dGFyZWFcblx0ICogLSBzZWxlY3Rc
blx0ICovXG5cdHZhciBDaGFuZ2VFdmVudFBsdWdpbiA9IHtcblx0ICBldmVudFR5cGVzOiBldmVu
dFR5cGVzLFxuXHRcblx0ICBfYWxsb3dTaW11bGF0ZWRQYXNzVGhyb3VnaDogdHJ1ZSxcblx0ICBf
aXNJbnB1dEV2ZW50U3VwcG9ydGVkOiBpc0lucHV0RXZlbnRTdXBwb3J0ZWQsXG5cdFxuXHQgIGV4
dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2
ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgICAgdmFyIHRhcmdldE5vZGUgPSB0YXJnZXRJ
bnN0ID8gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodGFyZ2V0SW5z
dCkgOiB3aW5kb3c7XG5cdFxuXHQgICAgdmFyIGdldFRhcmdldEluc3RGdW5jLCBoYW5kbGVFdmVu
dEZ1bmM7XG5cdCAgICBpZiAoc2hvdWxkVXNlQ2hhbmdlRXZlbnQodGFyZ2V0Tm9kZSkpIHtcblx0
ICAgICAgaWYgKGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSkge1xuXHQgICAgICAgIGdldFRhcmdldElu
c3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvckNoYW5nZUV2ZW50O1xuXHQgICAgICB9IGVsc2Uge1xu
XHQgICAgICAgIGhhbmRsZUV2ZW50RnVuYyA9IGhhbmRsZUV2ZW50c0ZvckNoYW5nZUV2ZW50SUU4
O1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2UgaWYgKGlzVGV4dElucHV0RWxlbWVudCh0YXJnZXRO
b2RlKSkge1xuXHQgICAgICBpZiAoaXNJbnB1dEV2ZW50U3VwcG9ydGVkKSB7XG5cdCAgICAgICAg
Z2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9ySW5wdXRPckNoYW5nZUV2ZW50O1xu
XHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0
SW5zdEZvcklucHV0RXZlbnRQb2x5ZmlsbDtcblx0ICAgICAgICBoYW5kbGVFdmVudEZ1bmMgPSBo
YW5kbGVFdmVudHNGb3JJbnB1dEV2ZW50UG9seWZpbGw7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxz
ZSBpZiAoc2hvdWxkVXNlQ2xpY2tFdmVudCh0YXJnZXROb2RlKSkge1xuXHQgICAgICBnZXRUYXJn
ZXRJbnN0RnVuYyA9IGdldFRhcmdldEluc3RGb3JDbGlja0V2ZW50O1xuXHQgICAgfVxuXHRcblx0
ICAgIGlmIChnZXRUYXJnZXRJbnN0RnVuYykge1xuXHQgICAgICB2YXIgaW5zdCA9IGdldFRhcmdl
dEluc3RGdW5jKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQpO1xuXHQgICAg
ICBpZiAoaW5zdCkge1xuXHQgICAgICAgIHZhciBldmVudCA9IGNyZWF0ZUFuZEFjY3VtdWxhdGVD
aGFuZ2VFdmVudChpbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHQgICAg
ICAgIHJldHVybiBldmVudDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIGlmIChoYW5k
bGVFdmVudEZ1bmMpIHtcblx0ICAgICAgaGFuZGxlRXZlbnRGdW5jKHRvcExldmVsVHlwZSwgdGFy
Z2V0Tm9kZSwgdGFyZ2V0SW5zdCk7XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gV2hlbiBibHVycmlu
Zywgc2V0IHRoZSB2YWx1ZSBhdHRyaWJ1dGUgZm9yIG51bWJlciBpbnB1dHNcblx0ICAgIGlmICh0
b3BMZXZlbFR5cGUgPT09ICd0b3BCbHVyJykge1xuXHQgICAgICBoYW5kbGVDb250cm9sbGVkSW5w
dXRCbHVyKHRhcmdldEluc3QsIHRhcmdldE5vZGUpO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0
XG5cdG1vZHVsZS5leHBvcnRzID0gQ2hhbmdlRXZlbnRQbHVnaW47XG5cbi8qKiovIH0sXG4vKiAx
MjkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgRE9NTGF6eVRyZWUgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDE0KTtcblx0dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg2KTtcblx0XG5cdHZhciBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEwMik7XG5cdHZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtc
blx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHR2YXIgRGFu
Z2VyID0ge1xuXHQgIC8qKlxuXHQgICAqIFJlcGxhY2VzIGEgbm9kZSB3aXRoIGEgc3RyaW5nIG9m
IG1hcmt1cCBhdCBpdHMgY3VycmVudCBwb3NpdGlvbiB3aXRoaW4gaXRzXG5cdCAgICogcGFyZW50
LiBUaGUgbWFya3VwIG11c3QgcmVuZGVyIGludG8gYSBzaW5nbGUgcm9vdCBub2RlLlxuXHQgICAq
XG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBvbGRDaGlsZCBDaGlsZCBub2RlIHRvIHJlcGxh
Y2UuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgdG8gcmVuZGVyIGluIHBs
YWNlIG9mIHRoZSBjaGlsZCBub2RlLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGRh
bmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOiBmdW5jdGlvbiAob2xkQ2hpbGQsIG1hcmt1
cCkge1xuXHQgICAgIUV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/ICBmYWxzZSA/IGlu
dmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IENh
bm5vdCByZW5kZXIgbWFya3VwIGluIGEgd29ya2VyIHRocmVhZC4gTWFrZSBzdXJlIGB3aW5kb3dg
IGFuZCBgZG9jdW1lbnRgIGFyZSBhdmFpbGFibGUgZ2xvYmFsbHkgYmVmb3JlIHJlcXVpcmluZyBS
ZWFjdCB3aGVuIHVuaXQgdGVzdGluZyBvciB1c2UgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJp
bmcoKSBmb3Igc2VydmVyIHJlbmRlcmluZy4nKSA6IF9wcm9kSW52YXJpYW50KCc1NicpIDogdm9p
ZCAwO1xuXHQgICAgIW1hcmt1cCA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91
c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IE1pc3NpbmcgbWFya3VwLicpIDogX3Byb2RJ
bnZhcmlhbnQoJzU3JykgOiB2b2lkIDA7XG5cdCAgICAhKG9sZENoaWxkLm5vZGVOYW1lICE9PSAn
SFRNTCcpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9k
ZVdpdGhNYXJrdXAoLi4uKTogQ2Fubm90IHJlcGxhY2UgbWFya3VwIG9mIHRoZSA8aHRtbD4gbm9k
ZS4gVGhpcyBpcyBiZWNhdXNlIGJyb3dzZXIgcXVpcmtzIG1ha2UgdGhpcyB1bnJlbGlhYmxlIGFu
ZC9vciBzbG93LiBJZiB5b3Ugd2FudCB0byByZW5kZXIgdG8gdGhlIHJvb3QgeW91IG11c3QgdXNl
IHNlcnZlciByZW5kZXJpbmcuIFNlZSBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZygpLicp
IDogX3Byb2RJbnZhcmlhbnQoJzU4JykgOiB2b2lkIDA7XG5cdFxuXHQgICAgaWYgKHR5cGVvZiBt
YXJrdXAgPT09ICdzdHJpbmcnKSB7XG5cdCAgICAgIHZhciBuZXdDaGlsZCA9IGNyZWF0ZU5vZGVz
RnJvbU1hcmt1cChtYXJrdXAsIGVtcHR5RnVuY3Rpb24pWzBdO1xuXHQgICAgICBvbGRDaGlsZC5w
YXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQpO1xuXHQgICAgfSBlbHNl
IHtcblx0ICAgICAgRE9NTGF6eVRyZWUucmVwbGFjZUNoaWxkV2l0aFRyZWUob2xkQ2hpbGQsIG1h
cmt1cCk7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBEYW5n
ZXI7XG5cbi8qKiovIH0sXG4vKiAxMzAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBNb2R1bGUgdGhhdCBpcyBpbmpl
Y3RhYmxlIGludG8gYEV2ZW50UGx1Z2luSHViYCwgdGhhdCBzcGVjaWZpZXMgYVxuXHQgKiBkZXRl
cm1pbmlzdGljIG9yZGVyaW5nIG9mIGBFdmVudFBsdWdpbmBzLiBBIGNvbnZlbmllbnQgd2F5IHRv
IHJlYXNvbiBhYm91dFxuXHQgKiBwbHVnaW5zLCB3aXRob3V0IGhhdmluZyB0byBwYWNrYWdlIGV2
ZXJ5IG9uZSBvZiB0aGVtLiBUaGlzIGlzIGJldHRlciB0aGFuXG5cdCAqIGhhdmluZyBwbHVnaW5z
IGJlIG9yZGVyZWQgaW4gdGhlIHNhbWUgb3JkZXIgdGhhdCB0aGV5IGFyZSBpbmplY3RlZCBiZWNh
dXNlXG5cdCAqIHRoYXQgb3JkZXJpbmcgd291bGQgYmUgaW5mbHVlbmNlZCBieSB0aGUgcGFja2Fn
aW5nIG9yZGVyLlxuXHQgKiBgUmVzcG9uZGVyRXZlbnRQbHVnaW5gIG11c3Qgb2NjdXIgYmVmb3Jl
IGBTaW1wbGVFdmVudFBsdWdpbmAgc28gdGhhdFxuXHQgKiBwcmV2ZW50aW5nIGRlZmF1bHQgb24g
ZXZlbnRzIGlzIGNvbnZlbmllbnQgaW4gYFNpbXBsZUV2ZW50UGx1Z2luYCBoYW5kbGVycy5cblx0
ICovXG5cdFxuXHR2YXIgRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIgPSBbJ1Jlc3BvbmRlckV2ZW50
UGx1Z2luJywgJ1NpbXBsZUV2ZW50UGx1Z2luJywgJ1RhcEV2ZW50UGx1Z2luJywgJ0VudGVyTGVh
dmVFdmVudFBsdWdpbicsICdDaGFuZ2VFdmVudFBsdWdpbicsICdTZWxlY3RFdmVudFBsdWdpbics
ICdCZWZvcmVJbnB1dEV2ZW50UGx1Z2luJ107XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IERlZmF1
bHRFdmVudFBsdWdpbk9yZGVyO1xuXG4vKioqLyB9LFxuLyogMTMxICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHR2YXIgRXZlbnRQcm9wYWdhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApO1xu
XHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0
dmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KTtcblx0XG5c
dHZhciBldmVudFR5cGVzID0ge1xuXHQgIG1vdXNlRW50ZXI6IHtcblx0ICAgIHJlZ2lzdHJhdGlv
bk5hbWU6ICdvbk1vdXNlRW50ZXInLFxuXHQgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcE1vdXNlT3V0
JywgJ3RvcE1vdXNlT3ZlciddXG5cdCAgfSxcblx0ICBtb3VzZUxlYXZlOiB7XG5cdCAgICByZWdp
c3RyYXRpb25OYW1lOiAnb25Nb3VzZUxlYXZlJyxcblx0ICAgIGRlcGVuZGVuY2llczogWyd0b3BN
b3VzZU91dCcsICd0b3BNb3VzZU92ZXInXVxuXHQgIH1cblx0fTtcblx0XG5cdHZhciBFbnRlckxl
YXZlRXZlbnRQbHVnaW4gPSB7XG5cdCAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblx0XG5cdCAg
LyoqXG5cdCAgICogRm9yIGFsbW9zdCBldmVyeSBpbnRlcmFjdGlvbiB3ZSBjYXJlIGFib3V0LCB0
aGVyZSB3aWxsIGJlIGJvdGggYSB0b3AtbGV2ZWxcblx0ICAgKiBgbW91c2VvdmVyYCBhbmQgYG1v
dXNlb3V0YCBldmVudCB0aGF0IG9jY3Vycy4gT25seSB1c2UgYG1vdXNlb3V0YCBzbyB0aGF0XG5c
dCAgICogd2UgZG8gbm90IGV4dHJhY3QgZHVwbGljYXRlIGV2ZW50cy4gSG93ZXZlciwgbW92aW5n
IHRoZSBtb3VzZSBpbnRvIHRoZVxuXHQgICAqIGJyb3dzZXIgZnJvbSBvdXRzaWRlIHdpbGwgbm90
IGZpcmUgYSBgbW91c2VvdXRgIGV2ZW50LiBJbiB0aGlzIGNhc2UsIHdlIHVzZVxuXHQgICAqIHRo
ZSBgbW91c2VvdmVyYCB0b3AtbGV2ZWwgZXZlbnQuXG5cdCAgICovXG5cdCAgZXh0cmFjdEV2ZW50
czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VPdmVy
JyAmJiAobmF0aXZlRXZlbnQucmVsYXRlZFRhcmdldCB8fCBuYXRpdmVFdmVudC5mcm9tRWxlbWVu
dCkpIHtcblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICBpZiAodG9wTGV2ZWxU
eXBlICE9PSAndG9wTW91c2VPdXQnICYmIHRvcExldmVsVHlwZSAhPT0gJ3RvcE1vdXNlT3Zlcicp
IHtcblx0ICAgICAgLy8gTXVzdCBub3QgYmUgYSBtb3VzZSBpbiBvciBtb3VzZSBvdXQgLSBpZ25v
cmluZy5cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIHdpbjtc
blx0ICAgIGlmIChuYXRpdmVFdmVudFRhcmdldC53aW5kb3cgPT09IG5hdGl2ZUV2ZW50VGFyZ2V0
KSB7XG5cdCAgICAgIC8vIGBuYXRpdmVFdmVudFRhcmdldGAgaXMgcHJvYmFibHkgYSB3aW5kb3cg
b2JqZWN0LlxuXHQgICAgICB3aW4gPSBuYXRpdmVFdmVudFRhcmdldDtcblx0ICAgIH0gZWxzZSB7
XG5cdCAgICAgIC8vIFRPRE86IEZpZ3VyZSBvdXQgd2h5IGBvd25lckRvY3VtZW50YCBpcyBzb21l
dGltZXMgdW5kZWZpbmVkIGluIElFOC5cblx0ICAgICAgdmFyIGRvYyA9IG5hdGl2ZUV2ZW50VGFy
Z2V0Lm93bmVyRG9jdW1lbnQ7XG5cdCAgICAgIGlmIChkb2MpIHtcblx0ICAgICAgICB3aW4gPSBk
b2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdpbmRvdztcblx0ICAgICAgfSBlbHNlIHtcblx0
ICAgICAgICB3aW4gPSB3aW5kb3c7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICB2YXIg
ZnJvbTtcblx0ICAgIHZhciB0bztcblx0ICAgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BNb3Vz
ZU91dCcpIHtcblx0ICAgICAgZnJvbSA9IHRhcmdldEluc3Q7XG5cdCAgICAgIHZhciByZWxhdGVk
ID0gbmF0aXZlRXZlbnQucmVsYXRlZFRhcmdldCB8fCBuYXRpdmVFdmVudC50b0VsZW1lbnQ7XG5c
dCAgICAgIHRvID0gcmVsYXRlZCA/IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRDbG9zZXN0SW5z
dGFuY2VGcm9tTm9kZShyZWxhdGVkKSA6IG51bGw7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICAv
LyBNb3ZpbmcgdG8gYSBub2RlIGZyb20gb3V0c2lkZSB0aGUgd2luZG93LlxuXHQgICAgICBmcm9t
ID0gbnVsbDtcblx0ICAgICAgdG8gPSB0YXJnZXRJbnN0O1xuXHQgICAgfVxuXHRcblx0ICAgIGlm
IChmcm9tID09PSB0bykge1xuXHQgICAgICAvLyBOb3RoaW5nIHBlcnRhaW5zIHRvIG91ciBtYW5h
Z2VkIGNvbXBvbmVudHMuXG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHRcblx0ICAg
IHZhciBmcm9tTm9kZSA9IGZyb20gPT0gbnVsbCA/IHdpbiA6IFJlYWN0RE9NQ29tcG9uZW50VHJl
ZS5nZXROb2RlRnJvbUluc3RhbmNlKGZyb20pO1xuXHQgICAgdmFyIHRvTm9kZSA9IHRvID09IG51
bGwgPyB3aW4gOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0byk7
XG5cdFxuXHQgICAgdmFyIGxlYXZlID0gU3ludGhldGljTW91c2VFdmVudC5nZXRQb29sZWQoZXZl
bnRUeXBlcy5tb3VzZUxlYXZlLCBmcm9tLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQp
O1xuXHQgICAgbGVhdmUudHlwZSA9ICdtb3VzZWxlYXZlJztcblx0ICAgIGxlYXZlLnRhcmdldCA9
IGZyb21Ob2RlO1xuXHQgICAgbGVhdmUucmVsYXRlZFRhcmdldCA9IHRvTm9kZTtcblx0XG5cdCAg
ICB2YXIgZW50ZXIgPSBTeW50aGV0aWNNb3VzZUV2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLm1v
dXNlRW50ZXIsIHRvLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHQgICAgZW50
ZXIudHlwZSA9ICdtb3VzZWVudGVyJztcblx0ICAgIGVudGVyLnRhcmdldCA9IHRvTm9kZTtcblx0
ICAgIGVudGVyLnJlbGF0ZWRUYXJnZXQgPSBmcm9tTm9kZTtcblx0XG5cdCAgICBFdmVudFByb3Bh
Z2F0b3JzLmFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlcyhsZWF2ZSwgZW50ZXIsIGZyb20s
IHRvKTtcblx0XG5cdCAgICByZXR1cm4gW2xlYXZlLCBlbnRlcl07XG5cdCAgfVxuXHR9O1xuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBFbnRlckxlYXZlRXZlbnRQbHVnaW47XG5cbi8qKiovIH0sXG4v
KiAxMzIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNzaWduID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg0KTtcblx0XG5cdHZhciBQb29sZWRDbGFzcyA9IF9fd2VicGFja19yZXF1aXJlX18o
MTMpO1xuXHRcblx0dmFyIGdldFRleHRDb250ZW50QWNjZXNzb3IgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDczKTtcblx0XG5cdC8qKlxuXHQgKiBUaGlzIGhlbHBlciBjbGFzcyBzdG9yZXMgaW5mb3Jt
YXRpb24gYWJvdXQgdGV4dCBjb250ZW50IG9mIGEgdGFyZ2V0IG5vZGUsXG5cdCAqIGFsbG93aW5n
IGNvbXBhcmlzb24gb2YgY29udGVudCBiZWZvcmUgYW5kIGFmdGVyIGEgZ2l2ZW4gZXZlbnQuXG5c
dCAqXG5cdCAqIElkZW50aWZ5IHRoZSBub2RlIHdoZXJlIHNlbGVjdGlvbiBjdXJyZW50bHkgYmVn
aW5zLCB0aGVuIG9ic2VydmVcblx0ICogYm90aCBpdHMgdGV4dCBjb250ZW50IGFuZCBpdHMgY3Vy
cmVudCBwb3NpdGlvbiBpbiB0aGUgRE9NLiBTaW5jZSB0aGVcblx0ICogYnJvd3NlciBtYXkgbmF0
aXZlbHkgcmVwbGFjZSB0aGUgdGFyZ2V0IG5vZGUgZHVyaW5nIGNvbXBvc2l0aW9uLCB3ZSBjYW5c
blx0ICogdXNlIGl0cyBwb3NpdGlvbiB0byBmaW5kIGl0cyByZXBsYWNlbWVudC5cblx0ICpcblx0
ICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gcm9vdFxuXHQgKi9cblx0ZnVuY3Rpb24gRmFsbGJh
Y2tDb21wb3NpdGlvblN0YXRlKHJvb3QpIHtcblx0ICB0aGlzLl9yb290ID0gcm9vdDtcblx0ICB0
aGlzLl9zdGFydFRleHQgPSB0aGlzLmdldFRleHQoKTtcblx0ICB0aGlzLl9mYWxsYmFja1RleHQg
PSBudWxsO1xuXHR9XG5cdFxuXHRfYXNzaWduKEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZS5wcm90
b3R5cGUsIHtcblx0ICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG5cdCAgICB0aGlzLl9yb290
ID0gbnVsbDtcblx0ICAgIHRoaXMuX3N0YXJ0VGV4dCA9IG51bGw7XG5cdCAgICB0aGlzLl9mYWxs
YmFja1RleHQgPSBudWxsO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEdldCBjdXJyZW50
IHRleHQgb2YgaW5wdXQuXG5cdCAgICpcblx0ICAgKiBAcmV0dXJuIHtzdHJpbmd9XG5cdCAgICov
XG5cdCAgZ2V0VGV4dDogZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKCd2YWx1ZScgaW4gdGhpcy5f
cm9vdCkge1xuXHQgICAgICByZXR1cm4gdGhpcy5fcm9vdC52YWx1ZTtcblx0ICAgIH1cblx0ICAg
IHJldHVybiB0aGlzLl9yb290W2dldFRleHRDb250ZW50QWNjZXNzb3IoKV07XG5cdCAgfSxcblx0
XG5cdCAgLyoqXG5cdCAgICogRGV0ZXJtaW5lIHRoZSBkaWZmZXJpbmcgc3Vic3RyaW5nIGJldHdl
ZW4gdGhlIGluaXRpYWxseSBzdG9yZWRcblx0ICAgKiB0ZXh0IGNvbnRlbnQgYW5kIHRoZSBjdXJy
ZW50IGNvbnRlbnQuXG5cdCAgICpcblx0ICAgKiBAcmV0dXJuIHtzdHJpbmd9XG5cdCAgICovXG5c
dCAgZ2V0RGF0YTogZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKHRoaXMuX2ZhbGxiYWNrVGV4dCkg
e1xuXHQgICAgICByZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0O1xuXHQgICAgfVxuXHRcblx0ICAg
IHZhciBzdGFydDtcblx0ICAgIHZhciBzdGFydFZhbHVlID0gdGhpcy5fc3RhcnRUZXh0O1xuXHQg
ICAgdmFyIHN0YXJ0TGVuZ3RoID0gc3RhcnRWYWx1ZS5sZW5ndGg7XG5cdCAgICB2YXIgZW5kO1xu
XHQgICAgdmFyIGVuZFZhbHVlID0gdGhpcy5nZXRUZXh0KCk7XG5cdCAgICB2YXIgZW5kTGVuZ3Ro
ID0gZW5kVmFsdWUubGVuZ3RoO1xuXHRcblx0ICAgIGZvciAoc3RhcnQgPSAwOyBzdGFydCA8IHN0
YXJ0TGVuZ3RoOyBzdGFydCsrKSB7XG5cdCAgICAgIGlmIChzdGFydFZhbHVlW3N0YXJ0XSAhPT0g
ZW5kVmFsdWVbc3RhcnRdKSB7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIH1cblx0ICAgIH1c
blx0XG5cdCAgICB2YXIgbWluRW5kID0gc3RhcnRMZW5ndGggLSBzdGFydDtcblx0ICAgIGZvciAo
ZW5kID0gMTsgZW5kIDw9IG1pbkVuZDsgZW5kKyspIHtcblx0ICAgICAgaWYgKHN0YXJ0VmFsdWVb
c3RhcnRMZW5ndGggLSBlbmRdICE9PSBlbmRWYWx1ZVtlbmRMZW5ndGggLSBlbmRdKSB7XG5cdCAg
ICAgICAgYnJlYWs7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICB2YXIgc2xpY2VUYWls
ID0gZW5kID4gMSA/IDEgLSBlbmQgOiB1bmRlZmluZWQ7XG5cdCAgICB0aGlzLl9mYWxsYmFja1Rl
eHQgPSBlbmRWYWx1ZS5zbGljZShzdGFydCwgc2xpY2VUYWlsKTtcblx0ICAgIHJldHVybiB0aGlz
Ll9mYWxsYmFja1RleHQ7XG5cdCAgfVxuXHR9KTtcblx0XG5cdFBvb2xlZENsYXNzLmFkZFBvb2xp
bmdUbyhGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBG
YWxsYmFja0NvbXBvc2l0aW9uU3RhdGU7XG5cbi8qKiovIH0sXG4vKiAxMzMgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBET01Qcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpO1xu
XHRcblx0dmFyIE1VU1RfVVNFX1BST1BFUlRZID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLk1VU1Rf
VVNFX1BST1BFUlRZO1xuXHR2YXIgSEFTX0JPT0xFQU5fVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmpl
Y3Rpb24uSEFTX0JPT0xFQU5fVkFMVUU7XG5cdHZhciBIQVNfTlVNRVJJQ19WQUxVRSA9IERPTVBy
b3BlcnR5LmluamVjdGlvbi5IQVNfTlVNRVJJQ19WQUxVRTtcblx0dmFyIEhBU19QT1NJVElWRV9O
VU1FUklDX1ZBTFVFID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLkhBU19QT1NJVElWRV9OVU1FUklD
X1ZBTFVFO1xuXHR2YXIgSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSA9IERPTVByb3BlcnR5
LmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFO1xuXHRcblx0dmFyIEhUTUxE
T01Qcm9wZXJ0eUNvbmZpZyA9IHtcblx0ICBpc0N1c3RvbUF0dHJpYnV0ZTogUmVnRXhwLnByb3Rv
dHlwZS50ZXN0LmJpbmQobmV3IFJlZ0V4cCgnXihkYXRhfGFyaWEpLVsnICsgRE9NUHJvcGVydHku
QVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQnKSksXG5cdCAgUHJvcGVydGllczoge1xuXHQgICAg
LyoqXG5cdCAgICAgKiBTdGFuZGFyZCBQcm9wZXJ0aWVzXG5cdCAgICAgKi9cblx0ICAgIGFjY2Vw
dDogMCxcblx0ICAgIGFjY2VwdENoYXJzZXQ6IDAsXG5cdCAgICBhY2Nlc3NLZXk6IDAsXG5cdCAg
ICBhY3Rpb246IDAsXG5cdCAgICBhbGxvd0Z1bGxTY3JlZW46IEhBU19CT09MRUFOX1ZBTFVFLFxu
XHQgICAgYWxsb3dUcmFuc3BhcmVuY3k6IDAsXG5cdCAgICBhbHQ6IDAsXG5cdCAgICAvLyBzcGVj
aWZpZXMgdGFyZ2V0IGNvbnRleHQgZm9yIGxpbmtzIHdpdGggYHByZWxvYWRgIHR5cGVcblx0ICAg
IGFzOiAwLFxuXHQgICAgYXN5bmM6IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgYXV0b0NvbXBs
ZXRlOiAwLFxuXHQgICAgLy8gYXV0b0ZvY3VzIGlzIHBvbHlmaWxsZWQvbm9ybWFsaXplZCBieSBB
dXRvRm9jdXNVdGlsc1xuXHQgICAgLy8gYXV0b0ZvY3VzOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0
ICAgIGF1dG9QbGF5OiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIGNhcHR1cmU6IEhBU19CT09M
RUFOX1ZBTFVFLFxuXHQgICAgY2VsbFBhZGRpbmc6IDAsXG5cdCAgICBjZWxsU3BhY2luZzogMCxc
blx0ICAgIGNoYXJTZXQ6IDAsXG5cdCAgICBjaGFsbGVuZ2U6IDAsXG5cdCAgICBjaGVja2VkOiBN
VVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgY2l0ZTogMCxcblx0
ICAgIGNsYXNzSUQ6IDAsXG5cdCAgICBjbGFzc05hbWU6IDAsXG5cdCAgICBjb2xzOiBIQVNfUE9T
SVRJVkVfTlVNRVJJQ19WQUxVRSxcblx0ICAgIGNvbFNwYW46IDAsXG5cdCAgICBjb250ZW50OiAw
LFxuXHQgICAgY29udGVudEVkaXRhYmxlOiAwLFxuXHQgICAgY29udGV4dE1lbnU6IDAsXG5cdCAg
ICBjb250cm9sczogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBjb29yZHM6IDAsXG5cdCAgICBj
cm9zc09yaWdpbjogMCxcblx0ICAgIGRhdGE6IDAsIC8vIEZvciBgPG9iamVjdCAvPmAgYWN0cyBh
cyBgc3JjYC5cblx0ICAgIGRhdGVUaW1lOiAwLFxuXHQgICAgJ2RlZmF1bHQnOiBIQVNfQk9PTEVB
Tl9WQUxVRSxcblx0ICAgIGRlZmVyOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIGRpcjogMCxc
blx0ICAgIGRpc2FibGVkOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIGRvd25sb2FkOiBIQVNf
T1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLFxuXHQgICAgZHJhZ2dhYmxlOiAwLFxuXHQgICAgZW5j
VHlwZTogMCxcblx0ICAgIGZvcm06IDAsXG5cdCAgICBmb3JtQWN0aW9uOiAwLFxuXHQgICAgZm9y
bUVuY1R5cGU6IDAsXG5cdCAgICBmb3JtTWV0aG9kOiAwLFxuXHQgICAgZm9ybU5vVmFsaWRhdGU6
IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgZm9ybVRhcmdldDogMCxcblx0ICAgIGZyYW1lQm9y
ZGVyOiAwLFxuXHQgICAgaGVhZGVyczogMCxcblx0ICAgIGhlaWdodDogMCxcblx0ICAgIGhpZGRl
bjogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBoaWdoOiAwLFxuXHQgICAgaHJlZjogMCxcblx0
ICAgIGhyZWZMYW5nOiAwLFxuXHQgICAgaHRtbEZvcjogMCxcblx0ICAgIGh0dHBFcXVpdjogMCxc
blx0ICAgIGljb246IDAsXG5cdCAgICBpZDogMCxcblx0ICAgIGlucHV0TW9kZTogMCxcblx0ICAg
IGludGVncml0eTogMCxcblx0ICAgIGlzOiAwLFxuXHQgICAga2V5UGFyYW1zOiAwLFxuXHQgICAg
a2V5VHlwZTogMCxcblx0ICAgIGtpbmQ6IDAsXG5cdCAgICBsYWJlbDogMCxcblx0ICAgIGxhbmc6
IDAsXG5cdCAgICBsaXN0OiAwLFxuXHQgICAgbG9vcDogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAg
ICBsb3c6IDAsXG5cdCAgICBtYW5pZmVzdDogMCxcblx0ICAgIG1hcmdpbkhlaWdodDogMCxcblx0
ICAgIG1hcmdpbldpZHRoOiAwLFxuXHQgICAgbWF4OiAwLFxuXHQgICAgbWF4TGVuZ3RoOiAwLFxu
XHQgICAgbWVkaWE6IDAsXG5cdCAgICBtZWRpYUdyb3VwOiAwLFxuXHQgICAgbWV0aG9kOiAwLFxu
XHQgICAgbWluOiAwLFxuXHQgICAgbWluTGVuZ3RoOiAwLFxuXHQgICAgLy8gQ2F1dGlvbjsgYG9w
dGlvbi5zZWxlY3RlZGAgaXMgbm90IHVwZGF0ZWQgaWYgYHNlbGVjdC5tdWx0aXBsZWAgaXNcblx0
ICAgIC8vIGRpc2FibGVkIHdpdGggYHJlbW92ZUF0dHJpYnV0ZWAuXG5cdCAgICBtdWx0aXBsZTog
TVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIG11dGVkOiBNVVNU
X1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgbmFtZTogMCxcblx0ICAg
IG5vbmNlOiAwLFxuXHQgICAgbm9WYWxpZGF0ZTogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBv
cGVuOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIG9wdGltdW06IDAsXG5cdCAgICBwYXR0ZXJu
OiAwLFxuXHQgICAgcGxhY2Vob2xkZXI6IDAsXG5cdCAgICBwbGF5c0lubGluZTogSEFTX0JPT0xF
QU5fVkFMVUUsXG5cdCAgICBwb3N0ZXI6IDAsXG5cdCAgICBwcmVsb2FkOiAwLFxuXHQgICAgcHJv
ZmlsZTogMCxcblx0ICAgIHJhZGlvR3JvdXA6IDAsXG5cdCAgICByZWFkT25seTogSEFTX0JPT0xF
QU5fVkFMVUUsXG5cdCAgICByZWZlcnJlclBvbGljeTogMCxcblx0ICAgIHJlbDogMCxcblx0ICAg
IHJlcXVpcmVkOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIHJldmVyc2VkOiBIQVNfQk9PTEVB
Tl9WQUxVRSxcblx0ICAgIHJvbGU6IDAsXG5cdCAgICByb3dzOiBIQVNfUE9TSVRJVkVfTlVNRVJJ
Q19WQUxVRSxcblx0ICAgIHJvd1NwYW46IEhBU19OVU1FUklDX1ZBTFVFLFxuXHQgICAgc2FuZGJv
eDogMCxcblx0ICAgIHNjb3BlOiAwLFxuXHQgICAgc2NvcGVkOiBIQVNfQk9PTEVBTl9WQUxVRSxc
blx0ICAgIHNjcm9sbGluZzogMCxcblx0ICAgIHNlYW1sZXNzOiBIQVNfQk9PTEVBTl9WQUxVRSxc
blx0ICAgIHNlbGVjdGVkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxu
XHQgICAgc2hhcGU6IDAsXG5cdCAgICBzaXplOiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxc
blx0ICAgIHNpemVzOiAwLFxuXHQgICAgc3BhbjogSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUs
XG5cdCAgICBzcGVsbENoZWNrOiAwLFxuXHQgICAgc3JjOiAwLFxuXHQgICAgc3JjRG9jOiAwLFxu
XHQgICAgc3JjTGFuZzogMCxcblx0ICAgIHNyY1NldDogMCxcblx0ICAgIHN0YXJ0OiBIQVNfTlVN
RVJJQ19WQUxVRSxcblx0ICAgIHN0ZXA6IDAsXG5cdCAgICBzdHlsZTogMCxcblx0ICAgIHN1bW1h
cnk6IDAsXG5cdCAgICB0YWJJbmRleDogMCxcblx0ICAgIHRhcmdldDogMCxcblx0ICAgIHRpdGxl
OiAwLFxuXHQgICAgLy8gU2V0dGluZyAudHlwZSB0aHJvd3Mgb24gbm9uLTxpbnB1dD4gdGFnc1xu
XHQgICAgdHlwZTogMCxcblx0ICAgIHVzZU1hcDogMCxcblx0ICAgIHZhbHVlOiAwLFxuXHQgICAg
d2lkdGg6IDAsXG5cdCAgICB3bW9kZTogMCxcblx0ICAgIHdyYXA6IDAsXG5cdFxuXHQgICAgLyoq
XG5cdCAgICAgKiBSREZhIFByb3BlcnRpZXNcblx0ICAgICAqL1xuXHQgICAgYWJvdXQ6IDAsXG5c
dCAgICBkYXRhdHlwZTogMCxcblx0ICAgIGlubGlzdDogMCxcblx0ICAgIHByZWZpeDogMCxcblx0
ICAgIC8vIHByb3BlcnR5IGlzIGFsc28gc3VwcG9ydGVkIGZvciBPcGVuR3JhcGggaW4gbWV0YSB0
YWdzLlxuXHQgICAgcHJvcGVydHk6IDAsXG5cdCAgICByZXNvdXJjZTogMCxcblx0ICAgICd0eXBl
b2YnOiAwLFxuXHQgICAgdm9jYWI6IDAsXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBOb24tc3Rh
bmRhcmQgUHJvcGVydGllc1xuXHQgICAgICovXG5cdCAgICAvLyBhdXRvQ2FwaXRhbGl6ZSBhbmQg
YXV0b0NvcnJlY3QgYXJlIHN1cHBvcnRlZCBpbiBNb2JpbGUgU2FmYXJpIGZvclxuXHQgICAgLy8g
a2V5Ym9hcmQgaGludHMuXG5cdCAgICBhdXRvQ2FwaXRhbGl6ZTogMCxcblx0ICAgIGF1dG9Db3Jy
ZWN0OiAwLFxuXHQgICAgLy8gYXV0b1NhdmUgYWxsb3dzIFdlYktpdC9CbGluayB0byBwZXJzaXN0
IHZhbHVlcyBvZiBpbnB1dCBmaWVsZHMgb24gcGFnZSByZWxvYWRzXG5cdCAgICBhdXRvU2F2ZTog
MCxcblx0ICAgIC8vIGNvbG9yIGlzIGZvciBTYWZhcmkgbWFzay1pY29uIGxpbmtcblx0ICAgIGNv
bG9yOiAwLFxuXHQgICAgLy8gaXRlbVByb3AsIGl0ZW1TY29wZSwgaXRlbVR5cGUgYXJlIGZvclxu
XHQgICAgLy8gTWljcm9kYXRhIHN1cHBvcnQuIFNlZSBodHRwOi8vc2NoZW1hLm9yZy9kb2NzL2dz
Lmh0bWxcblx0ICAgIGl0ZW1Qcm9wOiAwLFxuXHQgICAgaXRlbVNjb3BlOiBIQVNfQk9PTEVBTl9W
QUxVRSxcblx0ICAgIGl0ZW1UeXBlOiAwLFxuXHQgICAgLy8gaXRlbUlEIGFuZCBpdGVtUmVmIGFy
ZSBmb3IgTWljcm9kYXRhIHN1cHBvcnQgYXMgd2VsbCBidXRcblx0ICAgIC8vIG9ubHkgc3BlY2lm
aWVkIGluIHRoZSBXSEFUV0cgc3BlYyBkb2N1bWVudC4gU2VlXG5cdCAgICAvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9taWNyb2RhdGEuaHRtbCNtaWNyb2RhdGEtZG9t
LWFwaVxuXHQgICAgaXRlbUlEOiAwLFxuXHQgICAgaXRlbVJlZjogMCxcblx0ICAgIC8vIHJlc3Vs
dHMgc2hvdyBsb29raW5nIGdsYXNzIGljb24gYW5kIHJlY2VudCBzZWFyY2hlcyBvbiBpbnB1dFxu
XHQgICAgLy8gc2VhcmNoIGZpZWxkcyBpbiBXZWJLaXQvQmxpbmtcblx0ICAgIHJlc3VsdHM6IDAs
XG5cdCAgICAvLyBJRS1vbmx5IGF0dHJpYnV0ZSB0aGF0IHNwZWNpZmllcyBzZWN1cml0eSByZXN0
cmljdGlvbnMgb24gYW4gaWZyYW1lXG5cdCAgICAvLyBhcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUg
c2FuZGJveCBhdHRyaWJ1dGUgb24gSUU8MTBcblx0ICAgIHNlY3VyaXR5OiAwLFxuXHQgICAgLy8g
SUUtb25seSBhdHRyaWJ1dGUgdGhhdCBjb250cm9scyBmb2N1cyBiZWhhdmlvclxuXHQgICAgdW5z
ZWxlY3RhYmxlOiAwXG5cdCAgfSxcblx0ICBET01BdHRyaWJ1dGVOYW1lczoge1xuXHQgICAgYWNj
ZXB0Q2hhcnNldDogJ2FjY2VwdC1jaGFyc2V0Jyxcblx0ICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxc
blx0ICAgIGh0bWxGb3I6ICdmb3InLFxuXHQgICAgaHR0cEVxdWl2OiAnaHR0cC1lcXVpdidcblx0
ICB9LFxuXHQgIERPTVByb3BlcnR5TmFtZXM6IHt9LFxuXHQgIERPTU11dGF0aW9uTWV0aG9kczog
e1xuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIChub2RlLCB2YWx1ZSkge1xuXHQgICAgICBpZiAodmFs
dWUgPT0gbnVsbCkge1xuXHQgICAgICAgIHJldHVybiBub2RlLnJlbW92ZUF0dHJpYnV0ZSgndmFs
dWUnKTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgLy8gTnVtYmVyIGlucHV0cyBnZXQgc3BlY2lh
bCB0cmVhdG1lbnQgZHVlIHRvIHNvbWUgZWRnZSBjYXNlcyBpblxuXHQgICAgICAvLyBDaHJvbWUu
IExldCBldmVyeXRoaW5nIGVsc2UgYXNzaWduIHRoZSB2YWx1ZSBhdHRyaWJ1dGUgYXMgbm9ybWFs
LlxuXHQgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcy
NTMjaXNzdWVjb21tZW50LTIzNjA3NDMyNlxuXHQgICAgICBpZiAobm9kZS50eXBlICE9PSAnbnVt
YmVyJyB8fCBub2RlLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSA9PT0gZmFsc2UpIHtcblx0ICAgICAg
ICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCAnJyArIHZhbHVlKTtcblx0ICAgICAgfSBlbHNl
IGlmIChub2RlLnZhbGlkaXR5ICYmICFub2RlLnZhbGlkaXR5LmJhZElucHV0ICYmIG5vZGUub3du
ZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBub2RlKSB7XG5cdCAgICAgICAgLy8gRG9uJ3Qg
YXNzaWduIGFuIGF0dHJpYnV0ZSBpZiB2YWxpZGF0aW9uIHJlcG9ydHMgYmFkXG5cdCAgICAgICAg
Ly8gaW5wdXQuIENocm9tZSB3aWxsIGNsZWFyIHRoZSB2YWx1ZS4gQWRkaXRpb25hbGx5LCBkb24n
dFxuXHQgICAgICAgIC8vIG9wZXJhdGUgb24gaW5wdXRzIHRoYXQgaGF2ZSBmb2N1cywgb3RoZXJ3
aXNlIENocm9tZSBtaWdodFxuXHQgICAgICAgIC8vIHN0cmlwIG9mZiB0cmFpbGluZyBkZWNpbWFs
IHBsYWNlcyBhbmQgY2F1c2UgdGhlIHVzZXInc1xuXHQgICAgICAgIC8vIGN1cnNvciBwb3NpdGlv
biB0byBqdW1wIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0LlxuXHQgICAgICAgIC8vXG5c
dCAgICAgICAgLy8gSW4gUmVhY3RET01JbnB1dCwgd2UgaGF2ZSBhbiBvbkJsdXIgZXZlbnQgdGhh
dCB3aWxsIHRyaWdnZXJcblx0ICAgICAgICAvLyB0aGlzIGZ1bmN0aW9uIGFnYWluIHdoZW4gZm9j
dXMgaXMgbG9zdC5cblx0ICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCAnJyArIHZh
bHVlKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBv
cnRzID0gSFRNTERPTVByb3BlcnR5Q29uZmlnO1xuXG4vKioqLyB9LFxuLyogMTM0ICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQv
KiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJvY2Vzcykgey8qKlxuXHQgKiBD
b3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdHZhciBSZWFjdFJlY29uY2lsZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcblx0
XG5cdHZhciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3
NSk7XG5cdHZhciBLZXlFc2NhcGVVdGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oMzgpO1xuXHR2
YXIgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ4KTtc
blx0dmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc4KTtcblx0
dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0dmFyIFJlYWN0Q29t
cG9uZW50VHJlZUhvb2s7XG5cdFxuXHRpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQn
ICYmIHByb2Nlc3MuZW52ICYmIChcInByb2R1Y3Rpb25cIikgPT09ICd0ZXN0Jykge1xuXHQgIC8v
IFRlbXBvcmFyeSBoYWNrLlxuXHQgIC8vIElubGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdlbGwg
d2l0aCBKZXN0OlxuXHQgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1
ZXMvNzI0MFxuXHQgIC8vIFJlbW92ZSB0aGUgaW5saW5lIHJlcXVpcmVzIHdoZW4gd2UgZG9uJ3Qg
bmVlZCB0aGVtIGFueW1vcmU6XG5cdCAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3Jl
YWN0L3B1bGwvNzE3OFxuXHQgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDkwKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gaW5zdGFudGlhdGVDaGlsZChjaGlsZElu
c3RhbmNlcywgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKSB7XG5cdCAgLy8gV2UgZm91bmQgYSBj
b21wb25lbnQgaW5zdGFuY2UuXG5cdCAgdmFyIGtleVVuaXF1ZSA9IGNoaWxkSW5zdGFuY2VzW25h
bWVdID09PSB1bmRlZmluZWQ7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBpZiAoIVJlYWN0Q29t
cG9uZW50VHJlZUhvb2spIHtcblx0ICAgICAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHJlcXVp
cmUoJ3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rJyk7XG5cdCAgICB9XG5cdCAgICBp
ZiAoIWtleVVuaXF1ZSkge1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2ZsYXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50ZXJl
ZCB0d28gY2hpbGRyZW4gd2l0aCB0aGUgc2FtZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBt
dXN0IGJlIHVuaXF1ZTsgd2hlbiB0d28gY2hpbGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyArICd0
aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSB1c2VkLiVzJywgS2V5RXNjYXBlVXRpbHMudW5lc2NhcGUo
bmFtZSksIFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoc2VsZkRl
YnVnSUQpKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0ICB9XG5cdCAgaWYgKGNoaWxkICE9IG51bGwg
JiYga2V5VW5pcXVlKSB7XG5cdCAgICBjaGlsZEluc3RhbmNlc1tuYW1lXSA9IGluc3RhbnRpYXRl
UmVhY3RDb21wb25lbnQoY2hpbGQsIHRydWUpO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAq
IFJlYWN0Q2hpbGRSZWNvbmNpbGVyIHByb3ZpZGVzIGhlbHBlcnMgZm9yIGluaXRpYWxpemluZyBv
ciB1cGRhdGluZyBhIHNldCBvZlxuXHQgKiBjaGlsZHJlbi4gSXRzIG91dHB1dCBpcyBzdWl0YWJs
ZSBmb3IgcGFzc2luZyBpdCBvbnRvIFJlYWN0TXVsdGlDaGlsZCB3aGljaFxuXHQgKiBkb2VzIGRp
ZmZlZCByZW9yZGVyaW5nIGFuZCBpbnNlcnRpb24uXG5cdCAqL1xuXHR2YXIgUmVhY3RDaGlsZFJl
Y29uY2lsZXIgPSB7XG5cdCAgLyoqXG5cdCAgICogR2VuZXJhdGVzIGEgXCJtb3VudCBpbWFnZVwi
IGZvciBlYWNoIG9mIHRoZSBzdXBwbGllZCBjaGlsZHJlbi4gSW4gdGhlIGNhc2Vcblx0ICAgKiBv
ZiBgUmVhY3RET01Db21wb25lbnRgLCBhIG1vdW50IGltYWdlIGlzIGEgc3RyaW5nIG9mIG1hcmt1
cC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gbmVzdGVkQ2hpbGROb2RlcyBOZXN0
ZWQgY2hpbGQgbWFwcy5cblx0ICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBBIHNldCBvZiBjaGlsZCBp
bnN0YW5jZXMuXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgaW5zdGFudGlhdGVDaGls
ZHJlbjogZnVuY3Rpb24gKG5lc3RlZENoaWxkTm9kZXMsIHRyYW5zYWN0aW9uLCBjb250ZXh0LCBz
ZWxmRGVidWdJRCkgLy8gMCBpbiBwcm9kdWN0aW9uIGFuZCBmb3Igcm9vdHNcblx0ICB7XG5cdCAg
ICBpZiAobmVzdGVkQ2hpbGROb2RlcyA9PSBudWxsKSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xu
XHQgICAgfVxuXHQgICAgdmFyIGNoaWxkSW5zdGFuY2VzID0ge307XG5cdFxuXHQgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4obmVzdGVkQ2hpbGROb2RlcywgZnVu
Y3Rpb24gKGNoaWxkSW5zdHMsIGNoaWxkLCBuYW1lKSB7XG5cdCAgICAgICAgcmV0dXJuIGluc3Rh
bnRpYXRlQ2hpbGQoY2hpbGRJbnN0cywgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKTtcblx0ICAg
ICAgfSwgY2hpbGRJbnN0YW5jZXMpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdHJhdmVyc2VB
bGxDaGlsZHJlbihuZXN0ZWRDaGlsZE5vZGVzLCBpbnN0YW50aWF0ZUNoaWxkLCBjaGlsZEluc3Rh
bmNlcyk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gY2hpbGRJbnN0YW5jZXM7XG5cdCAgfSxcblx0
XG5cdCAgLyoqXG5cdCAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hpbGRyZW4gYW5kIHJldHVy
bnMgYSBuZXcgc2V0IG9mIGNoaWxkcmVuLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHs/b2JqZWN0
fSBwcmV2Q2hpbGRyZW4gUHJldmlvdXNseSBpbml0aWFsaXplZCBzZXQgb2YgY2hpbGRyZW4uXG5c
dCAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q2hpbGRyZW4gRmxhdCBjaGlsZCBlbGVtZW50IG1h
cHMuXG5cdCAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlv
blxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG5cdCAgICogQHJldHVybiB7P29iamVj
dH0gQSBuZXcgc2V0IG9mIGNoaWxkIGluc3RhbmNlcy5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAg
Ki9cblx0ICB1cGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKHByZXZDaGlsZHJlbiwgbmV4dENoaWxk
cmVuLCBtb3VudEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwg
aG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKSAvLyAwIGluIHByb2R1Y3Rp
b24gYW5kIGZvciByb290c1xuXHQgIHtcblx0ICAgIC8vIFdlIGN1cnJlbnRseSBkb24ndCBoYXZl
IGEgd2F5IHRvIHRyYWNrIG1vdmVzIGhlcmUgYnV0IGlmIHdlIHVzZSBpdGVyYXRvcnNcblx0ICAg
IC8vIGluc3RlYWQgb2YgZm9yLi5pbiB3ZSBjYW4gemlwIHRoZSBpdGVyYXRvcnMgYW5kIGNoZWNr
IGlmIGFuIGl0ZW0gaGFzXG5cdCAgICAvLyBtb3ZlZC5cblx0ICAgIC8vIFRPRE86IElmIG5vdGhp
bmcgaGFzIGNoYW5nZWQsIHJldHVybiB0aGUgcHJldkNoaWxkcmVuIG9iamVjdCBzbyB0aGF0IHdl
XG5cdCAgICAvLyBjYW4gcXVpY2tseSBiYWlsb3V0IGlmIG5vdGhpbmcgaGFzIGNoYW5nZWQuXG5c
dCAgICBpZiAoIW5leHRDaGlsZHJlbiAmJiAhcHJldkNoaWxkcmVuKSB7XG5cdCAgICAgIHJldHVy
bjtcblx0ICAgIH1cblx0ICAgIHZhciBuYW1lO1xuXHQgICAgdmFyIHByZXZDaGlsZDtcblx0ICAg
IGZvciAobmFtZSBpbiBuZXh0Q2hpbGRyZW4pIHtcblx0ICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4u
aGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAgICAgICBjb250aW51ZTtcblx0ICAgICAgfVxu
XHQgICAgICBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRyZW4gJiYgcHJldkNoaWxkcmVuW25hbWVdO1xu
XHQgICAgICB2YXIgcHJldkVsZW1lbnQgPSBwcmV2Q2hpbGQgJiYgcHJldkNoaWxkLl9jdXJyZW50
RWxlbWVudDtcblx0ICAgICAgdmFyIG5leHRFbGVtZW50ID0gbmV4dENoaWxkcmVuW25hbWVdO1xu
XHQgICAgICBpZiAocHJldkNoaWxkICE9IG51bGwgJiYgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25l
bnQocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSkge1xuXHQgICAgICAgIFJlYWN0UmVjb25jaWxl
ci5yZWNlaXZlQ29tcG9uZW50KHByZXZDaGlsZCwgbmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBj
b250ZXh0KTtcblx0ICAgICAgICBuZXh0Q2hpbGRyZW5bbmFtZV0gPSBwcmV2Q2hpbGQ7XG5cdCAg
ICAgIH0gZWxzZSB7XG5cdCAgICAgICAgaWYgKHByZXZDaGlsZCkge1xuXHQgICAgICAgICAgcmVt
b3ZlZE5vZGVzW25hbWVdID0gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHByZXZDaGlsZCk7
XG5cdCAgICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChwcmV2Q2hpbGQs
IGZhbHNlKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgLy8gVGhlIGNoaWxkIG11c3QgYmUgaW5z
dGFudGlhdGVkIGJlZm9yZSBpdCdzIG1vdW50ZWQuXG5cdCAgICAgICAgdmFyIG5leHRDaGlsZElu
c3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0RWxlbWVudCwgdHJ1ZSk7XG5c
dCAgICAgICAgbmV4dENoaWxkcmVuW25hbWVdID0gbmV4dENoaWxkSW5zdGFuY2U7XG5cdCAgICAg
ICAgLy8gQ3JlYXRpbmcgbW91bnQgaW1hZ2Ugbm93IGVuc3VyZXMgcmVmcyBhcmUgcmVzb2x2ZWQg
aW4gcmlnaHQgb3JkZXJcblx0ICAgICAgICAvLyAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNl
Ym9vay9yZWFjdC9wdWxsLzcxMDEgZm9yIGV4cGxhbmF0aW9uKS5cblx0ICAgICAgICB2YXIgbmV4
dENoaWxkTW91bnRJbWFnZSA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChuZXh0Q2hp
bGRJbnN0YW5jZSwgdHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBj
b250ZXh0LCBzZWxmRGVidWdJRCk7XG5cdCAgICAgICAgbW91bnRJbWFnZXMucHVzaChuZXh0Q2hp
bGRNb3VudEltYWdlKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgLy8gVW5tb3VudCBjaGls
ZHJlbiB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2VudC5cblx0ICAgIGZvciAobmFtZSBpbiBwcmV2
Q2hpbGRyZW4pIHtcblx0ICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1l
KSAmJiAhKG5leHRDaGlsZHJlbiAmJiBuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkp
KSB7XG5cdCAgICAgICAgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuW25hbWVdO1xuXHQgICAgICAg
IHJlbW92ZWROb2Rlc1tuYW1lXSA9IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShwcmV2Q2hp
bGQpO1xuXHQgICAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHByZXZDaGls
ZCwgZmFsc2UpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAg
ICogVW5tb3VudHMgYWxsIHJlbmRlcmVkIGNoaWxkcmVuLiBUaGlzIHNob3VsZCBiZSB1c2VkIHRv
IGNsZWFuIHVwIGNoaWxkcmVuXG5cdCAgICogd2hlbiB0aGlzIGNvbXBvbmVudCBpcyB1bm1vdW50
ZWQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0gez9vYmplY3R9IHJlbmRlcmVkQ2hpbGRyZW4gUHJl
dmlvdXNseSBpbml0aWFsaXplZCBzZXQgb2YgY2hpbGRyZW4uXG5cdCAgICogQGludGVybmFsXG5c
dCAgICovXG5cdCAgdW5tb3VudENoaWxkcmVuOiBmdW5jdGlvbiAocmVuZGVyZWRDaGlsZHJlbiwg
c2FmZWx5KSB7XG5cdCAgICBmb3IgKHZhciBuYW1lIGluIHJlbmRlcmVkQ2hpbGRyZW4pIHtcblx0
ICAgICAgaWYgKHJlbmRlcmVkQ2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAg
ICAgICB2YXIgcmVuZGVyZWRDaGlsZCA9IHJlbmRlcmVkQ2hpbGRyZW5bbmFtZV07XG5cdCAgICAg
ICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocmVuZGVyZWRDaGlsZCwgc2FmZWx5
KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gUmVhY3RDaGlsZFJlY29uY2lsZXI7XG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30u
Y2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDg3KSkpXG5cbi8qKiovIH0sXG4vKiAx
MzUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDM0KTtcblx0dmFyIFJlYWN0RE9NSURPcGVyYXRpb25zID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxNDIpO1xuXHRcblx0LyoqXG5cdCAqIEFic3RyYWN0cyBhd2F5IGFs
bCBmdW5jdGlvbmFsaXR5IG9mIHRoZSByZWNvbmNpbGVyIHRoYXQgcmVxdWlyZXMga25vd2xlZGdl
IG9mXG5cdCAqIHRoZSBicm93c2VyIGNvbnRleHQuIFRPRE86IFRoZXNlIGNhbGxlcnMgc2hvdWxk
IGJlIHJlZmFjdG9yZWQgdG8gYXZvaWQgdGhlXG5cdCAqIG5lZWQgZm9yIHRoaXMgaW5qZWN0aW9u
LlxuXHQgKi9cblx0dmFyIFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50ID0ge1xuXHQg
IHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IFJlYWN0RE9NSURPcGVyYXRpb25zLmRhbmdlcm91c2x5
UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxcblx0XG5cdCAgcmVwbGFjZU5vZGVXaXRoTWFya3VwOiBE
T01DaGlsZHJlbk9wZXJhdGlvbnMuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXBcblx0
fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1l
bnQ7XG5cbi8qKiovIH0sXG4vKiAxMzYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxu
XHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJv
ZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyksXG5cdCAgICBfYXNzaWduID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBSZWFjdCA9IF9fd2VicGFja19yZXF1aXJl
X18oMTcpO1xuXHR2YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1
aXJlX18oNDApO1xuXHR2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDExKTtcblx0dmFyIFJlYWN0RXJyb3JVdGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oNDEpO1xu
XHR2YXIgUmVhY3RJbnN0YW5jZU1hcCA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpO1xuXHR2YXIg
UmVhY3RJbnN0cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXHR2YXIgUmVh
Y3ROb2RlVHlwZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY4KTtcblx0dmFyIFJlYWN0UmVjb25j
aWxlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAg
dmFyIGNoZWNrUmVhY3RUeXBlU3BlYyA9IHJlcXVpcmUoJy4vY2hlY2tSZWFjdFR5cGVTcGVjJyk7
XG5cdH1cblx0XG5cdHZhciBlbXB0eU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjQpO1xu
XHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIHNoYWxsb3dF
cXVhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpO1xuXHR2YXIgc2hvdWxkVXBkYXRlUmVhY3RD
b21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ4KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0dmFyIENvbXBvc2l0ZVR5cGVzID0ge1xuXHQgIElt
cHVyZUNsYXNzOiAwLFxuXHQgIFB1cmVDbGFzczogMSxcblx0ICBTdGF0ZWxlc3NGdW5jdGlvbmFs
OiAyXG5cdH07XG5cdFxuXHRmdW5jdGlvbiBTdGF0ZWxlc3NDb21wb25lbnQoQ29tcG9uZW50KSB7
fVxuXHRTdGF0ZWxlc3NDb21wb25lbnQucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtc
blx0ICB2YXIgQ29tcG9uZW50ID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQodGhpcykuX2N1cnJlbnRF
bGVtZW50LnR5cGU7XG5cdCAgdmFyIGVsZW1lbnQgPSBDb21wb25lbnQodGhpcy5wcm9wcywgdGhp
cy5jb250ZXh0LCB0aGlzLnVwZGF0ZXIpO1xuXHQgIHdhcm5JZkludmFsaWRFbGVtZW50KENvbXBv
bmVudCwgZWxlbWVudCk7XG5cdCAgcmV0dXJuIGVsZW1lbnQ7XG5cdH07XG5cdFxuXHRmdW5jdGlv
biB3YXJuSWZJbnZhbGlkRWxlbWVudChDb21wb25lbnQsIGVsZW1lbnQpIHtcblx0ICBpZiAoZmFs
c2UpIHtcblx0ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGVsZW1lbnQgPT09IG51bGwgfHwgZWxlbWVudCA9PT0gZmFsc2UgfHwgUmVhY3QuaXNWYWxp
ZEVsZW1lbnQoZWxlbWVudCksICclcyguLi4pOiBBIHZhbGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51
bGwpIG11c3QgYmUgcmV0dXJuZWQuIFlvdSBtYXkgaGF2ZSAnICsgJ3JldHVybmVkIHVuZGVmaW5l
ZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhlciBpbnZhbGlkIG9iamVjdC4nLCBDb21wb25lbnQuZGlz
cGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwO1xuXHQg
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIUNvbXBv
bmVudC5jaGlsZENvbnRleHRUeXBlcywgJyVzKC4uLik6IGNoaWxkQ29udGV4dFR5cGVzIGNhbm5v
dCBiZSBkZWZpbmVkIG9uIGEgZnVuY3Rpb25hbCBjb21wb25lbnQuJywgQ29tcG9uZW50LmRpc3Bs
YXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnKSA6IHZvaWQgMDtcblx0ICB9
XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHNob3VsZENvbnN0cnVjdChDb21wb25lbnQpIHtcblx0ICBy
ZXR1cm4gISEoQ29tcG9uZW50LnByb3RvdHlwZSAmJiBDb21wb25lbnQucHJvdG90eXBlLmlzUmVh
Y3RDb21wb25lbnQpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBpc1B1cmVDb21wb25lbnQoQ29tcG9u
ZW50KSB7XG5cdCAgcmV0dXJuICEhKENvbXBvbmVudC5wcm90b3R5cGUgJiYgQ29tcG9uZW50LnBy
b3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCk7XG5cdH1cblx0XG5cdC8vIFNlcGFyYXRlZCBp
bnRvIGEgZnVuY3Rpb24gdG8gY29udGFpbiBkZW9wdGltaXphdGlvbnMgY2F1c2VkIGJ5IHRyeS9m
aW5hbGx5LlxuXHRmdW5jdGlvbiBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmbiwgZGVidWdJRCwgdGlt
ZXJUeXBlKSB7XG5cdCAgaWYgKGRlYnVnSUQgPT09IDApIHtcblx0ICAgIC8vIFRvcC1sZXZlbCB3
cmFwcGVycyAoc2VlIFJlYWN0TW91bnQpIGFuZCBlbXB0eSBjb21wb25lbnRzIChzZWVcblx0ICAg
IC8vIFJlYWN0RE9NRW1wdHlDb21wb25lbnQpIGFyZSBpbnZpc2libGUgdG8gaG9va3MgYW5kIGRl
dnRvb2xzLlxuXHQgICAgLy8gQm90aCBhcmUgaW1wbGVtZW50YXRpb24gZGV0YWlscyB0aGF0IHNo
b3VsZCBnbyBhd2F5IGluIHRoZSBmdXR1cmUuXG5cdCAgICByZXR1cm4gZm4oKTtcblx0ICB9XG5c
dFxuXHQgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luTGlmZUN5Y2xlVGlt
ZXIoZGVidWdJRCwgdGltZXJUeXBlKTtcblx0ICB0cnkge1xuXHQgICAgcmV0dXJuIGZuKCk7XG5c
dCAgfSBmaW5hbGx5IHtcblx0ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVu
ZExpZmVDeWNsZVRpbWVyKGRlYnVnSUQsIHRpbWVyVHlwZSk7XG5cdCAgfVxuXHR9XG5cdFxuXHQv
Kipcblx0ICogLS0tLS0tLS0tLS0tLS0tLS0tIFRoZSBMaWZlLUN5Y2xlIG9mIGEgQ29tcG9zaXRl
IENvbXBvbmVudCAtLS0tLS0tLS0tLS0tLS0tLS1cblx0ICpcblx0ICogLSBjb25zdHJ1Y3Rvcjog
SW5pdGlhbGl6YXRpb24gb2Ygc3RhdGUuIFRoZSBpbnN0YW5jZSBpcyBub3cgcmV0YWluZWQuXG5c
dCAqICAgLSBjb21wb25lbnRXaWxsTW91bnRcblx0ICogICAtIHJlbmRlclxuXHQgKiAgIC0gW2No
aWxkcmVuJ3MgY29uc3RydWN0b3JzXVxuXHQgKiAgICAgLSBbY2hpbGRyZW4ncyBjb21wb25lbnRX
aWxsTW91bnQgYW5kIHJlbmRlcl1cblx0ICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50RGlk
TW91bnRdXG5cdCAqICAgICAtIGNvbXBvbmVudERpZE1vdW50XG5cdCAqXG5cdCAqICAgICAgIFVw
ZGF0ZSBQaGFzZXM6XG5cdCAqICAgICAgIC0gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyAob25s
eSBjYWxsZWQgaWYgcGFyZW50IHVwZGF0ZWQpXG5cdCAqICAgICAgIC0gc2hvdWxkQ29tcG9uZW50
VXBkYXRlXG5cdCAqICAgICAgICAgLSBjb21wb25lbnRXaWxsVXBkYXRlXG5cdCAqICAgICAgICAg
ICAtIHJlbmRlclxuXHQgKiAgICAgICAgICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnMgb3Ig
cmVjZWl2ZSBwcm9wcyBwaGFzZXNdXG5cdCAqICAgICAgICAgLSBjb21wb25lbnREaWRVcGRhdGVc
blx0ICpcblx0ICogICAgIC0gY29tcG9uZW50V2lsbFVubW91bnRcblx0ICogICAgIC0gW2NoaWxk
cmVuJ3MgY29tcG9uZW50V2lsbFVubW91bnRdXG5cdCAqICAgLSBbY2hpbGRyZW4gZGVzdHJveWVk
XVxuXHQgKiAtIChkZXN0cm95ZWQpOiBUaGUgaW5zdGFuY2UgaXMgbm93IGJsYW5rLCByZWxlYXNl
ZCBieSBSZWFjdCBhbmQgcmVhZHkgZm9yIEdDLlxuXHQgKlxuXHQgKiAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLVxuXHQgKi9cblx0XG5cdC8qKlxuXHQgKiBBbiBpbmNyZW1lbnRpbmcgSUQgYXNzaWduZWQg
dG8gZWFjaCBjb21wb25lbnQgd2hlbiBpdCBpcyBtb3VudGVkLiBUaGlzIGlzXG5cdCAqIHVzZWQg
dG8gZW5mb3JjZSB0aGUgb3JkZXIgaW4gd2hpY2ggYFJlYWN0VXBkYXRlc2AgdXBkYXRlcyBkaXJ0
eSBjb21wb25lbnRzLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0dmFyIG5leHRNb3Vu
dElEID0gMTtcblx0XG5cdC8qKlxuXHQgKiBAbGVuZHMge1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50
LnByb3RvdHlwZX1cblx0ICovXG5cdHZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IHtcblx0
ICAvKipcblx0ICAgKiBCYXNlIGNvbnN0cnVjdG9yIGZvciBhbGwgY29tcG9zaXRlIGNvbXBvbmVu
dC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50XG5cdCAgICog
QGZpbmFsXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgY29uc3RydWN0OiBmdW5jdGlv
biAoZWxlbWVudCkge1xuXHQgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xuXHQg
ICAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7XG5cdCAgICB0aGlzLl9jb21wb3NpdGVUeXBlID0gbnVs
bDtcblx0ICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcblx0ICAgIHRoaXMuX2hvc3RQYXJlbnQg
PSBudWxsO1xuXHQgICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBudWxsO1xuXHRcblx0ICAg
IC8vIFNlZSBSZWFjdFVwZGF0ZVF1ZXVlXG5cdCAgICB0aGlzLl91cGRhdGVCYXRjaE51bWJlciA9
IG51bGw7XG5cdCAgICB0aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51bGw7XG5cdCAgICB0aGlzLl9w
ZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG5cdCAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRl
ID0gZmFsc2U7XG5cdCAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTtcblx0XG5c
dCAgICB0aGlzLl9yZW5kZXJlZE5vZGVUeXBlID0gbnVsbDtcblx0ICAgIHRoaXMuX3JlbmRlcmVk
Q29tcG9uZW50ID0gbnVsbDtcblx0ICAgIHRoaXMuX2NvbnRleHQgPSBudWxsO1xuXHQgICAgdGhp
cy5fbW91bnRPcmRlciA9IDA7XG5cdCAgICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBudWxsO1xu
XHRcblx0ICAgIC8vIFNlZSBSZWFjdFVwZGF0ZXMgYW5kIFJlYWN0VXBkYXRlUXVldWUuXG5cdCAg
ICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDtcblx0XG5cdCAgICAvLyBDb21wb25lbnRX
aWxsVW5tb3VudCBzaGFsbCBvbmx5IGJlIGNhbGxlZCBvbmNlXG5cdCAgICB0aGlzLl9jYWxsZWRD
b21wb25lbnRXaWxsVW5tb3VudCA9IGZhbHNlO1xuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQg
ICAgICB0aGlzLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IGZhbHNlO1xuXHQgICAgfVxuXHQg
IH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnQsIHJlbmRl
cnMgbWFya3VwLCBhbmQgcmVnaXN0ZXJzIGV2ZW50IGxpc3RlbmVycy5cblx0ICAgKlxuXHQgICAq
IEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1Ry
YW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gaG9zdFBhcmVu
dFxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gaG9zdENvbnRhaW5lckluZm9cblx0ICAgKiBAcGFy
YW0gez9vYmplY3R9IGNvbnRleHRcblx0ICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBSZW5kZXJlZCBt
YXJrdXAgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLlxuXHQgICAqIEBmaW5hbFxuXHQgICAq
IEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNh
Y3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7XG5cdCAgICB2
YXIgX3RoaXMgPSB0aGlzO1xuXHRcblx0ICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuXHQg
ICAgdGhpcy5fbW91bnRPcmRlciA9IG5leHRNb3VudElEKys7XG5cdCAgICB0aGlzLl9ob3N0UGFy
ZW50ID0gaG9zdFBhcmVudDtcblx0ICAgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gaG9zdENv
bnRhaW5lckluZm87XG5cdFxuXHQgICAgdmFyIHB1YmxpY1Byb3BzID0gdGhpcy5fY3VycmVudEVs
ZW1lbnQucHJvcHM7XG5cdCAgICB2YXIgcHVibGljQ29udGV4dCA9IHRoaXMuX3Byb2Nlc3NDb250
ZXh0KGNvbnRleHQpO1xuXHRcblx0ICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxl
bWVudC50eXBlO1xuXHRcblx0ICAgIHZhciB1cGRhdGVRdWV1ZSA9IHRyYW5zYWN0aW9uLmdldFVw
ZGF0ZVF1ZXVlKCk7XG5cdFxuXHQgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcHVibGljIGNsYXNzXG5c
dCAgICB2YXIgZG9Db25zdHJ1Y3QgPSBzaG91bGRDb25zdHJ1Y3QoQ29tcG9uZW50KTtcblx0ICAg
IHZhciBpbnN0ID0gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50KGRvQ29uc3RydWN0LCBwdWJsaWNQ
cm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuXHQgICAgdmFyIHJlbmRlcmVkRWxl
bWVudDtcblx0XG5cdCAgICAvLyBTdXBwb3J0IGZ1bmN0aW9uYWwgY29tcG9uZW50c1xuXHQgICAg
aWYgKCFkb0NvbnN0cnVjdCAmJiAoaW5zdCA9PSBudWxsIHx8IGluc3QucmVuZGVyID09IG51bGwp
KSB7XG5cdCAgICAgIHJlbmRlcmVkRWxlbWVudCA9IGluc3Q7XG5cdCAgICAgIHdhcm5JZkludmFs
aWRFbGVtZW50KENvbXBvbmVudCwgcmVuZGVyZWRFbGVtZW50KTtcblx0ICAgICAgIShpbnN0ID09
PSBudWxsIHx8IGluc3QgPT09IGZhbHNlIHx8IFJlYWN0LmlzVmFsaWRFbGVtZW50KGluc3QpKSA/
ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJyVzKC4uLik6IEEgdmFsaWQgUmVhY3QgZWxlbWVu
dCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91IG1heSBoYXZlIHJldHVybmVkIHVuZGVm
aW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhlciBpbnZhbGlkIG9iamVjdC4nLCBDb21wb25lbnQu
ZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogX3Byb2RJbnZh
cmlhbnQoJzEwNScsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAn
Q29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICAgIGluc3QgPSBuZXcgU3RhdGVsZXNzQ29tcG9u
ZW50KENvbXBvbmVudCk7XG5cdCAgICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBDb21wb3NpdGVU
eXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgaWYgKGlz
UHVyZUNvbXBvbmVudChDb21wb25lbnQpKSB7XG5cdCAgICAgICAgdGhpcy5fY29tcG9zaXRlVHlw
ZSA9IENvbXBvc2l0ZVR5cGVzLlB1cmVDbGFzcztcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAg
ICB0aGlzLl9jb21wb3NpdGVUeXBlID0gQ29tcG9zaXRlVHlwZXMuSW1wdXJlQ2xhc3M7XG5cdCAg
ICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgLy8gVGhpcyB3
aWxsIHRocm93IGxhdGVyIGluIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQsIGJ1dCBhZGQgYW4g
ZWFybHlcblx0ICAgICAgLy8gd2FybmluZyBub3cgdG8gaGVscCBkZWJ1Z2dpbmdcblx0ICAgICAg
aWYgKGluc3QucmVuZGVyID09IG51bGwpIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IE5vIGByZW5kZXJg
IG1ldGhvZCBmb3VuZCBvbiB0aGUgcmV0dXJuZWQgY29tcG9uZW50ICcgKyAnaW5zdGFuY2U6IHlv
dSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gZGVmaW5lIGByZW5kZXJgLicsIENvbXBvbmVudC5kaXNw
bGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAg
ICAgIH1cblx0XG5cdCAgICAgIHZhciBwcm9wc011dGF0ZWQgPSBpbnN0LnByb3BzICE9PSBwdWJs
aWNQcm9wcztcblx0ICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBDb21wb25lbnQuZGlzcGxheU5h
bWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCc7XG5cdFxuXHQgICAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnN0LnByb3BzID09PSB1
bmRlZmluZWQgfHwgIXByb3BzTXV0YXRlZCwgJyVzKC4uLik6IFdoZW4gY2FsbGluZyBzdXBlcigp
IGluIGAlc2AsIG1ha2Ugc3VyZSB0byBwYXNzICcgKyBcInVwIHRoZSBzYW1lIHByb3BzIHRoYXQg
eW91ciBjb21wb25lbnQncyBjb25zdHJ1Y3RvciB3YXMgcGFzc2VkLlwiLCBjb21wb25lbnROYW1l
LCBjb21wb25lbnROYW1lKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0XG5cdCAgICAvLyBUaGVzZSBz
aG91bGQgYmUgc2V0IHVwIGluIHRoZSBjb25zdHJ1Y3RvciwgYnV0IGFzIGEgY29udmVuaWVuY2Ug
Zm9yXG5cdCAgICAvLyBzaW1wbGVyIGNsYXNzIGFic3RyYWN0aW9ucywgd2Ugc2V0IHRoZW0gdXAg
YWZ0ZXIgdGhlIGZhY3QuXG5cdCAgICBpbnN0LnByb3BzID0gcHVibGljUHJvcHM7XG5cdCAgICBp
bnN0LmNvbnRleHQgPSBwdWJsaWNDb250ZXh0O1xuXHQgICAgaW5zdC5yZWZzID0gZW1wdHlPYmpl
Y3Q7XG5cdCAgICBpbnN0LnVwZGF0ZXIgPSB1cGRhdGVRdWV1ZTtcblx0XG5cdCAgICB0aGlzLl9p
bnN0YW5jZSA9IGluc3Q7XG5cdFxuXHQgICAgLy8gU3RvcmUgYSByZWZlcmVuY2UgZnJvbSB0aGUg
aW5zdGFuY2UgYmFjayB0byB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb25cblx0ICAgIFJlYWN0
SW5zdGFuY2VNYXAuc2V0KGluc3QsIHRoaXMpO1xuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQg
ICAgICAvLyBTaW5jZSBwbGFpbiBKUyBjbGFzc2VzIGFyZSBkZWZpbmVkIHdpdGhvdXQgYW55IHNw
ZWNpYWwgaW5pdGlhbGl6YXRpb25cblx0ICAgICAgLy8gbG9naWMsIHdlIGNhbiBub3QgY2F0Y2gg
Y29tbW9uIGVycm9ycyBlYXJseS4gVGhlcmVmb3JlLCB3ZSBoYXZlIHRvXG5cdCAgICAgIC8vIGNh
dGNoIHRoZW0gaGVyZSwgYXQgaW5pdGlhbGl6YXRpb24gdGltZSwgaW5zdGVhZC5cblx0ICAgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWluc3QuZ2V0
SW5pdGlhbFN0YXRlIHx8IGluc3QuZ2V0SW5pdGlhbFN0YXRlLmlzUmVhY3RDbGFzc0FwcHJvdmVk
IHx8IGluc3Quc3RhdGUsICdnZXRJbml0aWFsU3RhdGUgd2FzIGRlZmluZWQgb24gJXMsIGEgcGxh
aW4gSmF2YVNjcmlwdCBjbGFzcy4gJyArICdUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjbGFz
c2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3MuICcgKyAnRGlkIHlvdSBtZWFuIHRv
IGRlZmluZSBhIHN0YXRlIHByb3BlcnR5IGluc3RlYWQ/JywgdGhpcy5nZXROYW1lKCkgfHwgJ2Eg
Y29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LmdldERlZmF1bHRQcm9wcyB8fCBpbnN0LmdldERl
ZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCwgJ2dldERlZmF1bHRQcm9wcyB3YXMgZGVm
aW5lZCBvbiAlcywgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzLiAnICsgJ1RoaXMgaXMgb25seSBz
dXBwb3J0ZWQgZm9yIGNsYXNzZXMgY3JlYXRlZCB1c2luZyBSZWFjdC5jcmVhdGVDbGFzcy4gJyAr
ICdVc2UgYSBzdGF0aWMgcHJvcGVydHkgdG8gZGVmaW5lIGRlZmF1bHRQcm9wcyBpbnN0ZWFkLics
IHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHQgICAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5wcm9wVHlw
ZXMsICdwcm9wVHlwZXMgd2FzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgb24gJXMu
IFVzZSBhIHN0YXRpYyAnICsgJ3Byb3BlcnR5IHRvIGRlZmluZSBwcm9wVHlwZXMgaW5zdGVhZC4n
LCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHZvaWQgMDtcblx0ICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWluc3QuY29udGV4
dFR5cGVzLCAnY29udGV4dFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIHByb3BlcnR5
IG9uICVzLiBVc2UgYSAnICsgJ3N0YXRpYyBwcm9wZXJ0eSB0byBkZWZpbmUgY29udGV4dFR5cGVz
IGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB2b2lkIDA7XG5c
dCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5
cGVvZiBpbnN0LmNvbXBvbmVudFNob3VsZFVwZGF0ZSAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhhcyBh
IG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRTaG91bGRVcGRhdGUoKS4gRGlkIHlvdSBtZWFu
IHNob3VsZENvbXBvbmVudFVwZGF0ZSgpPyAnICsgJ1RoZSBuYW1lIGlzIHBocmFzZWQgYXMgYSBx
dWVzdGlvbiBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyAnICsgJ2V4cGVjdGVkIHRvIHJldHVybiBh
IHZhbHVlLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHQg
ICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBl
b2YgaW5zdC5jb21wb25lbnREaWRVbm1vdW50ICE9PSAnZnVuY3Rpb24nLCAnJXMgaGFzIGEgbWV0
aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudERpZFVubW91bnQoKS4gQnV0IHRoZXJlIGlzIG5vIHN1
Y2ggbGlmZWN5Y2xlIG1ldGhvZC4gJyArICdEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFVubW91
bnQoKT8nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDtcblx0ICAg
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9m
IGluc3QuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhhcyBh
IG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3Ug
bWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JywgdGhpcy5nZXROYW1lKCkgfHwgJ0Eg
Y29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGluaXRpYWxTdGF0
ZSA9IGluc3Quc3RhdGU7XG5cdCAgICBpZiAoaW5pdGlhbFN0YXRlID09PSB1bmRlZmluZWQpIHtc
blx0ICAgICAgaW5zdC5zdGF0ZSA9IGluaXRpYWxTdGF0ZSA9IG51bGw7XG5cdCAgICB9XG5cdCAg
ICAhKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGlu
aXRpYWxTdGF0ZSkpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnJXMuc3RhdGU6IG11c3Qg
YmUgc2V0IHRvIGFuIG9iamVjdCBvciBudWxsJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29t
cG9zaXRlQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMTA2JywgdGhpcy5nZXROYW1lKCkg
fHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG5cdFxuXHQgICAgdGhpcy5f
cGVuZGluZ1N0YXRlUXVldWUgPSBudWxsO1xuXHQgICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0
ZSA9IGZhbHNlO1xuXHQgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG5cdFxu
XHQgICAgdmFyIG1hcmt1cDtcblx0ICAgIGlmIChpbnN0LnVuc3RhYmxlX2hhbmRsZUVycm9yKSB7
XG5cdCAgICAgIG1hcmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRs
aW5nKHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5z
YWN0aW9uLCBjb250ZXh0KTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIG1hcmt1cCA9IHRoaXMu
cGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250
YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYg
KGluc3QuY29tcG9uZW50RGlkTW91bnQpIHtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAg
ICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShmdW5jdGlvbiAoKSB7
XG5cdCAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG5cdCAgICAg
ICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudERpZE1vdW50KCk7XG5cdCAgICAgICAgICB9LCBf
dGhpcy5fZGVidWdJRCwgJ2NvbXBvbmVudERpZE1vdW50Jyk7XG5cdCAgICAgICAgfSk7XG5cdCAg
ICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCku
ZW5xdWV1ZShpbnN0LmNvbXBvbmVudERpZE1vdW50LCBpbnN0KTtcblx0ICAgICAgfVxuXHQgICAg
fVxuXHRcblx0ICAgIHJldHVybiBtYXJrdXA7XG5cdCAgfSxcblx0XG5cdCAgX2NvbnN0cnVjdENv
bXBvbmVudDogZnVuY3Rpb24gKGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4
dCwgdXBkYXRlUXVldWUpIHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBSZWFjdEN1cnJl
bnRPd25lci5jdXJyZW50ID0gdGhpcztcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICByZXR1cm4g
dGhpcy5fY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGRvQ29uc3RydWN0LCBwdWJsaWNQ
cm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuXHQgICAgICB9IGZpbmFsbHkge1xu
XHQgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsO1xuXHQgICAgICB9XG5c
dCAgICB9IGVsc2Uge1xuXHQgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50V2l0
aG91dE93bmVyKGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRl
UXVldWUpO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIF9jb25zdHJ1Y3RDb21wb25lbnRXaXRo
b3V0T3duZXI6IGZ1bmN0aW9uIChkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRl
eHQsIHVwZGF0ZVF1ZXVlKSB7XG5cdCAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVs
ZW1lbnQudHlwZTtcblx0XG5cdCAgICBpZiAoZG9Db25zdHJ1Y3QpIHtcblx0ICAgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgICAgcmV0dXJuIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgp
IHtcblx0ICAgICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWND
b250ZXh0LCB1cGRhdGVRdWV1ZSk7XG5cdCAgICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ2N0b3In
KTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudChwdWJs
aWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuXHQgICAgICB9XG5cdCAgICB9
XG5cdFxuXHQgICAgLy8gVGhpcyBjYW4gc3RpbGwgYmUgYW4gaW5zdGFuY2UgaW4gY2FzZSBvZiBm
YWN0b3J5IGNvbXBvbmVudHNcblx0ICAgIC8vIGJ1dCB3ZSdsbCBjb3VudCB0aGlzIGFzIHRpbWUg
c3BlbnQgcmVuZGVyaW5nIGFzIHRoZSBtb3JlIGNvbW1vbiBjYXNlLlxuXHQgICAgaWYgKGZhbHNl
KSB7XG5cdCAgICAgIHJldHVybiBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG5c
dCAgICAgICAgcmV0dXJuIENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBk
YXRlUXVldWUpO1xuXHQgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAncmVuZGVyJyk7XG5cdCAgICB9
IGVsc2Uge1xuXHQgICAgICByZXR1cm4gQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250
ZXh0LCB1cGRhdGVRdWV1ZSk7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgcGVyZm9ybUluaXRp
YWxNb3VudFdpdGhFcnJvckhhbmRsaW5nOiBmdW5jdGlvbiAocmVuZGVyZWRFbGVtZW50LCBob3N0
UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcblx0ICAg
IHZhciBtYXJrdXA7XG5cdCAgICB2YXIgY2hlY2twb2ludCA9IHRyYW5zYWN0aW9uLmNoZWNrcG9p
bnQoKTtcblx0ICAgIHRyeSB7XG5cdCAgICAgIG1hcmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxN
b3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFu
c2FjdGlvbiwgY29udGV4dCk7XG5cdCAgICB9IGNhdGNoIChlKSB7XG5cdCAgICAgIC8vIFJvbGwg
YmFjayB0byBjaGVja3BvaW50LCBoYW5kbGUgZXJyb3IgKHdoaWNoIG1heSBhZGQgaXRlbXMgdG8g
dGhlIHRyYW5zYWN0aW9uKSwgYW5kIHRha2UgYSBuZXcgY2hlY2twb2ludFxuXHQgICAgICB0cmFu
c2FjdGlvbi5yb2xsYmFjayhjaGVja3BvaW50KTtcblx0ICAgICAgdGhpcy5faW5zdGFuY2UudW5z
dGFibGVfaGFuZGxlRXJyb3IoZSk7XG5cdCAgICAgIGlmICh0aGlzLl9wZW5kaW5nU3RhdGVRdWV1
ZSkge1xuXHQgICAgICAgIHRoaXMuX2luc3RhbmNlLnN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRp
bmdTdGF0ZSh0aGlzLl9pbnN0YW5jZS5wcm9wcywgdGhpcy5faW5zdGFuY2UuY29udGV4dCk7XG5c
dCAgICAgIH1cblx0ICAgICAgY2hlY2twb2ludCA9IHRyYW5zYWN0aW9uLmNoZWNrcG9pbnQoKTtc
blx0XG5cdCAgICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LnVubW91bnRDb21wb25lbnQodHJ1
ZSk7XG5cdCAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKGNoZWNrcG9pbnQpO1xuXHRcblx0ICAg
ICAgLy8gVHJ5IGFnYWluIC0gd2UndmUgaW5mb3JtZWQgdGhlIGNvbXBvbmVudCBhYm91dCB0aGUg
ZXJyb3IsIHNvIHRoZXkgY2FuIHJlbmRlciBhbiBlcnJvciBtZXNzYWdlIHRoaXMgdGltZS5cblx0
ICAgICAgLy8gSWYgdGhpcyB0aHJvd3MgYWdhaW4sIHRoZSBlcnJvciB3aWxsIGJ1YmJsZSB1cCAo
YW5kIGNhbiBiZSBjYXVnaHQgYnkgYSBoaWdoZXIgZXJyb3IgYm91bmRhcnkpLlxuXHQgICAgICBt
YXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQocmVuZGVyZWRFbGVtZW50LCBob3N0UGFy
ZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHQgICAgfVxu
XHQgICAgcmV0dXJuIG1hcmt1cDtcblx0ICB9LFxuXHRcblx0ICBwZXJmb3JtSW5pdGlhbE1vdW50
OiBmdW5jdGlvbiAocmVuZGVyZWRFbGVtZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5m
bywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcblx0ICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFu
Y2U7XG5cdFxuXHQgICAgdmFyIGRlYnVnSUQgPSAwO1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAg
ICAgIGRlYnVnSUQgPSB0aGlzLl9kZWJ1Z0lEO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChpbnN0
LmNvbXBvbmVudFdpbGxNb3VudCkge1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBt
ZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICByZXR1cm4gaW5z
dC5jb21wb25lbnRXaWxsTW91bnQoKTtcblx0ICAgICAgICB9LCBkZWJ1Z0lELCAnY29tcG9uZW50
V2lsbE1vdW50Jyk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgaW5zdC5jb21wb25lbnRX
aWxsTW91bnQoKTtcblx0ICAgICAgfVxuXHQgICAgICAvLyBXaGVuIG1vdW50aW5nLCBjYWxscyB0
byBgc2V0U3RhdGVgIGJ5IGBjb21wb25lbnRXaWxsTW91bnRgIHdpbGwgc2V0XG5cdCAgICAgIC8v
IGB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZWAgd2l0aG91dCB0cmlnZ2VyaW5nIGEgcmUtcmVuZGVy
LlxuXHQgICAgICBpZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUpIHtcblx0ICAgICAgICBpbnN0
LnN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShpbnN0LnByb3BzLCBpbnN0LmNvbnRl
eHQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gSWYgbm90IGEgc3RhdGVsZXNz
IGNvbXBvbmVudCwgd2Ugbm93IHJlbmRlclxuXHQgICAgaWYgKHJlbmRlcmVkRWxlbWVudCA9PT0g
dW5kZWZpbmVkKSB7XG5cdCAgICAgIHJlbmRlcmVkRWxlbWVudCA9IHRoaXMuX3JlbmRlclZhbGlk
YXRlZENvbXBvbmVudCgpO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBub2RlVHlwZSA9IFJlYWN0
Tm9kZVR5cGVzLmdldFR5cGUocmVuZGVyZWRFbGVtZW50KTtcblx0ICAgIHRoaXMuX3JlbmRlcmVk
Tm9kZVR5cGUgPSBub2RlVHlwZTtcblx0ICAgIHZhciBjaGlsZCA9IHRoaXMuX2luc3RhbnRpYXRl
UmVhY3RDb21wb25lbnQocmVuZGVyZWRFbGVtZW50LCBub2RlVHlwZSAhPT0gUmVhY3ROb2RlVHlw
ZXMuRU1QVFkgLyogc2hvdWxkSGF2ZURlYnVnSUQgKi9cblx0ICAgICk7XG5cdCAgICB0aGlzLl9y
ZW5kZXJlZENvbXBvbmVudCA9IGNoaWxkO1xuXHRcblx0ICAgIHZhciBtYXJrdXAgPSBSZWFjdFJl
Y29uY2lsZXIubW91bnRDb21wb25lbnQoY2hpbGQsIHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBo
b3N0Q29udGFpbmVySW5mbywgdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChjb250ZXh0KSwgZGVi
dWdJRCk7XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIGlmIChkZWJ1Z0lEICE9PSAw
KSB7XG5cdCAgICAgICAgdmFyIGNoaWxkRGVidWdJRHMgPSBjaGlsZC5fZGVidWdJRCAhPT0gMCA/
IFtjaGlsZC5fZGVidWdJRF0gOiBbXTtcblx0ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25TZXRDaGlsZHJlbihkZWJ1Z0lELCBjaGlsZERlYnVnSURzKTtcblx0ICAgICAg
fVxuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBtYXJrdXA7XG5cdCAgfSxcblx0XG5cdCAgZ2V0
SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBSZWFjdFJlY29uY2lsZXIuZ2V0
SG9zdE5vZGUodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxu
XHQgICAqIFJlbGVhc2VzIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IGBtb3VudENvbXBvbmVu
dGAuXG5cdCAgICpcblx0ICAgKiBAZmluYWxcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0
ICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoc2FmZWx5KSB7XG5cdCAgICBpZiAoIXRoaXMu
X3JlbmRlcmVkQ29tcG9uZW50KSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0XG5cdCAg
ICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXHRcblx0ICAgIGlmIChpbnN0LmNvbXBvbmVu
dFdpbGxVbm1vdW50ICYmICFpbnN0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCkge1xuXHQg
ICAgICBpbnN0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCA9IHRydWU7XG5cdFxuXHQgICAg
ICBpZiAoc2FmZWx5KSB7XG5cdCAgICAgICAgdmFyIG5hbWUgPSB0aGlzLmdldE5hbWUoKSArICcu
Y29tcG9uZW50V2lsbFVubW91bnQoKSc7XG5cdCAgICAgICAgUmVhY3RFcnJvclV0aWxzLmludm9r
ZUd1YXJkZWRDYWxsYmFjayhuYW1lLCBpbnN0LmNvbXBvbmVudFdpbGxVbm1vdW50LmJpbmQoaW5z
dCkpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAg
ICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICByZXR1
cm4gaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCgpO1xuXHQgICAgICAgICAgfSwgdGhpcy5fZGVi
dWdJRCwgJ2NvbXBvbmVudFdpbGxVbm1vdW50Jyk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAg
ICAgICAgIGluc3QuY29tcG9uZW50V2lsbFVubW91bnQoKTtcblx0ICAgICAgICB9XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0XG5cdCAgICBpZiAodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpIHtcblx0
ICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQodGhpcy5fcmVuZGVyZWRDb21w
b25lbnQsIHNhZmVseSk7XG5cdCAgICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBudWxsO1xu
XHQgICAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IG51bGw7XG5cdCAgICAgIHRoaXMuX2lu
c3RhbmNlID0gbnVsbDtcblx0ICAgIH1cblx0XG5cdCAgICAvLyBSZXNldCBwZW5kaW5nIGZpZWxk
c1xuXHQgICAgLy8gRXZlbiBpZiB0aGlzIGNvbXBvbmVudCBpcyBzY2hlZHVsZWQgZm9yIGFub3Ro
ZXIgdXBkYXRlIGluIFJlYWN0VXBkYXRlcyxcblx0ICAgIC8vIGl0IHdvdWxkIHN0aWxsIGJlIGln
bm9yZWQgYmVjYXVzZSB0aGVzZSBmaWVsZHMgYXJlIHJlc2V0LlxuXHQgICAgdGhpcy5fcGVuZGlu
Z1N0YXRlUXVldWUgPSBudWxsO1xuXHQgICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZh
bHNlO1xuXHQgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG5cdCAgICB0aGlz
Ll9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDtcblx0ICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50ID0g
bnVsbDtcblx0XG5cdCAgICAvLyBUaGVzZSBmaWVsZHMgZG8gbm90IHJlYWxseSBuZWVkIHRvIGJl
IHJlc2V0IHNpbmNlIHRoaXMgb2JqZWN0IGlzIG5vXG5cdCAgICAvLyBsb25nZXIgYWNjZXNzaWJs
ZS5cblx0ICAgIHRoaXMuX2NvbnRleHQgPSBudWxsO1xuXHQgICAgdGhpcy5fcm9vdE5vZGVJRCA9
IDA7XG5cdCAgICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBudWxsO1xuXHRcblx0ICAgIC8vIERl
bGV0ZSB0aGUgcmVmZXJlbmNlIGZyb20gdGhlIGluc3RhbmNlIHRvIHRoaXMgaW50ZXJuYWwgcmVw
cmVzZW50YXRpb25cblx0ICAgIC8vIHdoaWNoIGFsbG93IHRoZSBpbnRlcm5hbHMgdG8gYmUgcHJv
cGVybHkgY2xlYW5lZCB1cCBldmVuIGlmIHRoZSB1c2VyXG5cdCAgICAvLyBsZWFrcyBhIHJlZmVy
ZW5jZSB0byB0aGUgcHVibGljIGluc3RhbmNlLlxuXHQgICAgUmVhY3RJbnN0YW5jZU1hcC5yZW1v
dmUoaW5zdCk7XG5cdFxuXHQgICAgLy8gU29tZSBleGlzdGluZyBjb21wb25lbnRzIHJlbHkgb24g
aW5zdC5wcm9wcyBldmVuIGFmdGVyIHRoZXkndmUgYmVlblxuXHQgICAgLy8gZGVzdHJveWVkIChp
biBldmVudCBoYW5kbGVycykuXG5cdCAgICAvLyBUT0RPOiBpbnN0LnByb3BzID0gbnVsbDtcblx0
ICAgIC8vIFRPRE86IGluc3Quc3RhdGUgPSBudWxsO1xuXHQgICAgLy8gVE9ETzogaW5zdC5jb250
ZXh0ID0gbnVsbDtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBGaWx0ZXJzIHRoZSBjb250
ZXh0IG9iamVjdCB0byBvbmx5IGNvbnRhaW4ga2V5cyBzcGVjaWZpZWQgaW5cblx0ICAgKiBgY29u
dGV4dFR5cGVzYFxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcblx0ICAg
KiBAcmV0dXJuIHs/b2JqZWN0fVxuXHQgICAqIEBwcml2YXRlXG5cdCAgICovXG5cdCAgX21hc2tD
b250ZXh0OiBmdW5jdGlvbiAoY29udGV4dCkge1xuXHQgICAgdmFyIENvbXBvbmVudCA9IHRoaXMu
X2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cdCAgICB2YXIgY29udGV4dFR5cGVzID0gQ29tcG9uZW50
LmNvbnRleHRUeXBlcztcblx0ICAgIGlmICghY29udGV4dFR5cGVzKSB7XG5cdCAgICAgIHJldHVy
biBlbXB0eU9iamVjdDtcblx0ICAgIH1cblx0ICAgIHZhciBtYXNrZWRDb250ZXh0ID0ge307XG5c
dCAgICBmb3IgKHZhciBjb250ZXh0TmFtZSBpbiBjb250ZXh0VHlwZXMpIHtcblx0ICAgICAgbWFz
a2VkQ29udGV4dFtjb250ZXh0TmFtZV0gPSBjb250ZXh0W2NvbnRleHROYW1lXTtcblx0ICAgIH1c
blx0ICAgIHJldHVybiBtYXNrZWRDb250ZXh0O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAq
IEZpbHRlcnMgdGhlIGNvbnRleHQgb2JqZWN0IHRvIG9ubHkgY29udGFpbiBrZXlzIHNwZWNpZmll
ZCBpblxuXHQgICAqIGBjb250ZXh0VHlwZXNgLCBhbmQgYXNzZXJ0cyB0aGF0IHRoZXkgYXJlIHZh
bGlkLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcblx0ICAgKiBAcmV0
dXJuIHs/b2JqZWN0fVxuXHQgICAqIEBwcml2YXRlXG5cdCAgICovXG5cdCAgX3Byb2Nlc3NDb250
ZXh0OiBmdW5jdGlvbiAoY29udGV4dCkge1xuXHQgICAgdmFyIG1hc2tlZENvbnRleHQgPSB0aGlz
Ll9tYXNrQ29udGV4dChjb250ZXh0KTtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICB2YXIg
Q29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblx0ICAgICAgaWYgKENvbXBv
bmVudC5jb250ZXh0VHlwZXMpIHtcblx0ICAgICAgICB0aGlzLl9jaGVja0NvbnRleHRUeXBlcyhD
b21wb25lbnQuY29udGV4dFR5cGVzLCBtYXNrZWRDb250ZXh0LCAnY29udGV4dCcpO1xuXHQgICAg
ICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbWFza2VkQ29udGV4dDtcblx0ICB9LFxuXHRcblx0
ICAvKipcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gY3VycmVudENvbnRleHRcblx0ICAgKiBAcmV0
dXJuIHtvYmplY3R9XG5cdCAgICogQHByaXZhdGVcblx0ICAgKi9cblx0ICBfcHJvY2Vzc0NoaWxk
Q29udGV4dDogZnVuY3Rpb24gKGN1cnJlbnRDb250ZXh0KSB7XG5cdCAgICB2YXIgQ29tcG9uZW50
ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblx0ICAgIHZhciBpbnN0ID0gdGhpcy5faW5z
dGFuY2U7XG5cdCAgICB2YXIgY2hpbGRDb250ZXh0O1xuXHRcblx0ICAgIGlmIChpbnN0LmdldENo
aWxkQ29udGV4dCkge1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBSZWFjdEluc3Ry
dW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWdpblByb2Nlc3NpbmdDaGlsZENvbnRleHQoKTtcblx0
ICAgICAgICB0cnkge1xuXHQgICAgICAgICAgY2hpbGRDb250ZXh0ID0gaW5zdC5nZXRDaGlsZENv
bnRleHQoKTtcblx0ICAgICAgICB9IGZpbmFsbHkge1xuXHQgICAgICAgICAgUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLm9uRW5kUHJvY2Vzc2luZ0NoaWxkQ29udGV4dCgpO1xuXHQgICAg
ICAgIH1cblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBjaGlsZENvbnRleHQgPSBpbnN0Lmdl
dENoaWxkQ29udGV4dCgpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGNoaWxk
Q29udGV4dCkge1xuXHQgICAgICAhKHR5cGVvZiBDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMg
PT09ICdvYmplY3QnKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJyVzLmdldENoaWxkQ29u
dGV4dCgpOiBjaGlsZENvbnRleHRUeXBlcyBtdXN0IGJlIGRlZmluZWQgaW4gb3JkZXIgdG8gdXNl
IGdldENoaWxkQ29udGV4dCgpLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNv
bXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwNycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFj
dENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0
ICAgICAgICB0aGlzLl9jaGVja0NvbnRleHRUeXBlcyhDb21wb25lbnQuY2hpbGRDb250ZXh0VHlw
ZXMsIGNoaWxkQ29udGV4dCwgJ2NoaWxkIGNvbnRleHQnKTtcblx0ICAgICAgfVxuXHQgICAgICBm
b3IgKHZhciBuYW1lIGluIGNoaWxkQ29udGV4dCkge1xuXHQgICAgICAgICEobmFtZSBpbiBDb21w
b25lbnQuY2hpbGRDb250ZXh0VHlwZXMpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnJXMu
Z2V0Q2hpbGRDb250ZXh0KCk6IGtleSBcIiVzXCIgaXMgbm90IGRlZmluZWQgaW4gY2hpbGRDb250
ZXh0VHlwZXMuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50Jywg
bmFtZSkgOiBfcHJvZEludmFyaWFudCgnMTA4JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29t
cG9zaXRlQ29tcG9uZW50JywgbmFtZSkgOiB2b2lkIDA7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0
dXJuIF9hc3NpZ24oe30sIGN1cnJlbnRDb250ZXh0LCBjaGlsZENvbnRleHQpO1xuXHQgICAgfVxu
XHQgICAgcmV0dXJuIGN1cnJlbnRDb250ZXh0O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAq
IEFzc2VydCB0aGF0IHRoZSBjb250ZXh0IHR5cGVzIGFyZSB2YWxpZFxuXHQgICAqXG5cdCAgICog
QHBhcmFtIHtvYmplY3R9IHR5cGVTcGVjcyBNYXAgb2YgY29udGV4dCBmaWVsZCB0byBhIFJlYWN0
UHJvcFR5cGVcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRo
YXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWRcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRp
b24gZS5nLiBcInByb3BcIiwgXCJjb250ZXh0XCIsIFwiY2hpbGQgY29udGV4dFwiXG5cdCAgICog
QHByaXZhdGVcblx0ICAgKi9cblx0ICBfY2hlY2tDb250ZXh0VHlwZXM6IGZ1bmN0aW9uICh0eXBl
U3BlY3MsIHZhbHVlcywgbG9jYXRpb24pIHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBj
aGVja1JlYWN0VHlwZVNwZWModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCB0aGlzLmdldE5h
bWUoKSwgbnVsbCwgdGhpcy5fZGVidWdJRCk7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgcmVj
ZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgbmV4dENv
bnRleHQpIHtcblx0ICAgIHZhciBwcmV2RWxlbWVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50O1xu
XHQgICAgdmFyIHByZXZDb250ZXh0ID0gdGhpcy5fY29udGV4dDtcblx0XG5cdCAgICB0aGlzLl9w
ZW5kaW5nRWxlbWVudCA9IG51bGw7XG5cdFxuXHQgICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJh
bnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCwgcHJldkNvbnRleHQsIG5leHRDb250
ZXh0KTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBJZiBhbnkgb2YgYF9wZW5kaW5nRWxl
bWVudGAsIGBfcGVuZGluZ1N0YXRlUXVldWVgLCBvciBgX3BlbmRpbmdGb3JjZVVwZGF0ZWBcblx0
ICAgKiBpcyBzZXQsIHVwZGF0ZSB0aGUgY29tcG9uZW50LlxuXHQgICAqXG5cdCAgICogQHBhcmFt
IHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBpbnRlcm5h
bFxuXHQgICAqL1xuXHQgIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogZnVuY3Rpb24gKHRyYW5z
YWN0aW9uKSB7XG5cdCAgICBpZiAodGhpcy5fcGVuZGluZ0VsZW1lbnQgIT0gbnVsbCkge1xuXHQg
ICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudCh0aGlzLCB0aGlzLl9wZW5kaW5n
RWxlbWVudCwgdHJhbnNhY3Rpb24sIHRoaXMuX2NvbnRleHQpO1xuXHQgICAgfSBlbHNlIGlmICh0
aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSAhPT0gbnVsbCB8fCB0aGlzLl9wZW5kaW5nRm9yY2VVcGRh
dGUpIHtcblx0ICAgICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHRoaXMuX2N1
cnJlbnRFbGVtZW50LCB0aGlzLl9jdXJyZW50RWxlbWVudCwgdGhpcy5fY29udGV4dCwgdGhpcy5f
Y29udGV4dCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0aGlzLl91cGRhdGVCYXRjaE51bWJl
ciA9IG51bGw7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogUGVyZm9ybSBh
biB1cGRhdGUgdG8gYSBtb3VudGVkIGNvbXBvbmVudC4gVGhlIGNvbXBvbmVudFdpbGxSZWNlaXZl
UHJvcHMgYW5kXG5cdCAgICogc2hvdWxkQ29tcG9uZW50VXBkYXRlIG1ldGhvZHMgYXJlIGNhbGxl
ZCwgdGhlbiAoYXNzdW1pbmcgdGhlIHVwZGF0ZSBpc24ndFxuXHQgICAqIHNraXBwZWQpIHRoZSBy
ZW1haW5pbmcgdXBkYXRlIGxpZmVjeWNsZSBtZXRob2RzIGFyZSBjYWxsZWQgYW5kIHRoZSBET01c
blx0ICAgKiByZXByZXNlbnRhdGlvbiBpcyB1cGRhdGVkLlxuXHQgICAqXG5cdCAgICogQnkgZGVm
YXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5nIGFuZCByZWNvbmNpbGlhdGlv
biBhbGdvcml0aG0uXG5cdCAgICogU29waGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92
ZXJyaWRlIHRoaXMuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IHByZXZQYXJl
bnRFbGVtZW50XG5cdCAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRQYXJlbnRFbGVtZW50
XG5cdCAgICogQGludGVybmFsXG5cdCAgICogQG92ZXJyaWRhYmxlXG5cdCAgICovXG5cdCAgdXBk
YXRlQ29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByZXZQYXJlbnRFbGVtZW50LCBu
ZXh0UGFyZW50RWxlbWVudCwgcHJldlVubWFza2VkQ29udGV4dCwgbmV4dFVubWFza2VkQ29udGV4
dCkge1xuXHQgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcblx0ICAgICEoaW5zdCAhPSBu
dWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0F0dGVtcHRlZCB0byB1cGRhdGUgY29t
cG9uZW50IGAlc2AgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVubW91bnRlZCAob3IgZmFpbGVkIHRv
IG1vdW50KS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6
IF9wcm9kSW52YXJpYW50KCcxMzYnLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVD
b21wb25lbnQnKSA6IHZvaWQgMDtcblx0XG5cdCAgICB2YXIgd2lsbFJlY2VpdmUgPSBmYWxzZTtc
blx0ICAgIHZhciBuZXh0Q29udGV4dDtcblx0XG5cdCAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIGNv
bnRleHQgaGFzIGNoYW5nZWQgb3Igbm90XG5cdCAgICBpZiAodGhpcy5fY29udGV4dCA9PT0gbmV4
dFVubWFza2VkQ29udGV4dCkge1xuXHQgICAgICBuZXh0Q29udGV4dCA9IGluc3QuY29udGV4dDtc
blx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIG5leHRDb250ZXh0ID0gdGhpcy5fcHJvY2Vzc0NvbnRl
eHQobmV4dFVubWFza2VkQ29udGV4dCk7XG5cdCAgICAgIHdpbGxSZWNlaXZlID0gdHJ1ZTtcblx0
ICAgIH1cblx0XG5cdCAgICB2YXIgcHJldlByb3BzID0gcHJldlBhcmVudEVsZW1lbnQucHJvcHM7
XG5cdCAgICB2YXIgbmV4dFByb3BzID0gbmV4dFBhcmVudEVsZW1lbnQucHJvcHM7XG5cdFxuXHQg
ICAgLy8gTm90IGEgc2ltcGxlIHN0YXRlIHVwZGF0ZSBidXQgYSBwcm9wcyB1cGRhdGVcblx0ICAg
IGlmIChwcmV2UGFyZW50RWxlbWVudCAhPT0gbmV4dFBhcmVudEVsZW1lbnQpIHtcblx0ICAgICAg
d2lsbFJlY2VpdmUgPSB0cnVlO1xuXHQgICAgfVxuXHRcblx0ICAgIC8vIEFuIHVwZGF0ZSBoZXJl
IHdpbGwgc2NoZWR1bGUgYW4gdXBkYXRlIGJ1dCBpbW1lZGlhdGVseSBzZXRcblx0ICAgIC8vIF9w
ZW5kaW5nU3RhdGVRdWV1ZSB3aGljaCB3aWxsIGVuc3VyZSB0aGF0IGFueSBzdGF0ZSB1cGRhdGVz
IGdldHNcblx0ICAgIC8vIGltbWVkaWF0ZWx5IHJlY29uY2lsZWQgaW5zdGVhZCBvZiB3YWl0aW5n
IGZvciB0aGUgbmV4dCBiYXRjaC5cblx0ICAgIGlmICh3aWxsUmVjZWl2ZSAmJiBpbnN0LmNvbXBv
bmVudFdpbGxSZWNlaXZlUHJvcHMpIHtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAg
bWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgcmV0dXJuIGlu
c3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMsIG5leHRDb250ZXh0KTtcblx0
ICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcycpO1xu
XHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGluc3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9w
cyhuZXh0UHJvcHMsIG5leHRDb250ZXh0KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAg
IHZhciBuZXh0U3RhdGUgPSB0aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKG5leHRQcm9wcywgbmV4
dENvbnRleHQpO1xuXHQgICAgdmFyIHNob3VsZFVwZGF0ZSA9IHRydWU7XG5cdFxuXHQgICAgaWYg
KCF0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUpIHtcblx0ICAgICAgaWYgKGluc3Quc2hvdWxkQ29t
cG9uZW50VXBkYXRlKSB7XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBzaG91
bGRVcGRhdGUgPSBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAg
ICAgIHJldHVybiBpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0
ZSwgbmV4dENvbnRleHQpO1xuXHQgICAgICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ3Nob3VsZENv
bXBvbmVudFVwZGF0ZScpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICBzaG91bGRV
cGRhdGUgPSBpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwg
bmV4dENvbnRleHQpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBp
ZiAodGhpcy5fY29tcG9zaXRlVHlwZSA9PT0gQ29tcG9zaXRlVHlwZXMuUHVyZUNsYXNzKSB7XG5c
dCAgICAgICAgICBzaG91bGRVcGRhdGUgPSAhc2hhbGxvd0VxdWFsKHByZXZQcm9wcywgbmV4dFBy
b3BzKSB8fCAhc2hhbGxvd0VxdWFsKGluc3Quc3RhdGUsIG5leHRTdGF0ZSk7XG5cdCAgICAgICAg
fVxuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHNob3VsZFVwZGF0
ZSAhPT0gdW5kZWZpbmVkLCAnJXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk6IFJldHVybmVkIHVu
ZGVmaW5lZCBpbnN0ZWFkIG9mIGEgJyArICdib29sZWFuIHZhbHVlLiBNYWtlIHN1cmUgdG8gcmV0
dXJuIHRydWUgb3IgZmFsc2UuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29t
cG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICB9XG5cdFxuXHQgICAgdGhpcy5fdXBkYXRlQmF0Y2hO
dW1iZXIgPSBudWxsO1xuXHQgICAgaWYgKHNob3VsZFVwZGF0ZSkge1xuXHQgICAgICB0aGlzLl9w
ZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTtcblx0ICAgICAgLy8gV2lsbCBzZXQgYHRoaXMucHJv
cHNgLCBgdGhpcy5zdGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRgLlxuXHQgICAgICB0aGlzLl9wZXJm
b3JtQ29tcG9uZW50VXBkYXRlKG5leHRQYXJlbnRFbGVtZW50LCBuZXh0UHJvcHMsIG5leHRTdGF0
ZSwgbmV4dENvbnRleHQsIHRyYW5zYWN0aW9uLCBuZXh0VW5tYXNrZWRDb250ZXh0KTtcblx0ICAg
IH0gZWxzZSB7XG5cdCAgICAgIC8vIElmIGl0J3MgZGV0ZXJtaW5lZCB0aGF0IGEgY29tcG9uZW50
IHNob3VsZCBub3QgdXBkYXRlLCB3ZSBzdGlsbCB3YW50XG5cdCAgICAgIC8vIHRvIHNldCBwcm9w
cyBhbmQgc3RhdGUgYnV0IHdlIHNob3J0Y3V0IHRoZSByZXN0IG9mIHRoZSB1cGRhdGUuXG5cdCAg
ICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dFBhcmVudEVsZW1lbnQ7XG5cdCAgICAgIHRo
aXMuX2NvbnRleHQgPSBuZXh0VW5tYXNrZWRDb250ZXh0O1xuXHQgICAgICBpbnN0LnByb3BzID0g
bmV4dFByb3BzO1xuXHQgICAgICBpbnN0LnN0YXRlID0gbmV4dFN0YXRlO1xuXHQgICAgICBpbnN0
LmNvbnRleHQgPSBuZXh0Q29udGV4dDtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBfcHJvY2Vz
c1BlbmRpbmdTdGF0ZTogZnVuY3Rpb24gKHByb3BzLCBjb250ZXh0KSB7XG5cdCAgICB2YXIgaW5z
dCA9IHRoaXMuX2luc3RhbmNlO1xuXHQgICAgdmFyIHF1ZXVlID0gdGhpcy5fcGVuZGluZ1N0YXRl
UXVldWU7XG5cdCAgICB2YXIgcmVwbGFjZSA9IHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU7XG5c
dCAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG5cdCAgICB0aGlzLl9wZW5k
aW5nU3RhdGVRdWV1ZSA9IG51bGw7XG5cdFxuXHQgICAgaWYgKCFxdWV1ZSkge1xuXHQgICAgICBy
ZXR1cm4gaW5zdC5zdGF0ZTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAocmVwbGFjZSAmJiBxdWV1
ZS5sZW5ndGggPT09IDEpIHtcblx0ICAgICAgcmV0dXJuIHF1ZXVlWzBdO1xuXHQgICAgfVxuXHRc
blx0ICAgIHZhciBuZXh0U3RhdGUgPSBfYXNzaWduKHt9LCByZXBsYWNlID8gcXVldWVbMF0gOiBp
bnN0LnN0YXRlKTtcblx0ICAgIGZvciAodmFyIGkgPSByZXBsYWNlID8gMSA6IDA7IGkgPCBxdWV1
ZS5sZW5ndGg7IGkrKykge1xuXHQgICAgICB2YXIgcGFydGlhbCA9IHF1ZXVlW2ldO1xuXHQgICAg
ICBfYXNzaWduKG5leHRTdGF0ZSwgdHlwZW9mIHBhcnRpYWwgPT09ICdmdW5jdGlvbicgPyBwYXJ0
aWFsLmNhbGwoaW5zdCwgbmV4dFN0YXRlLCBwcm9wcywgY29udGV4dCkgOiBwYXJ0aWFsKTtcblx0
ICAgIH1cblx0XG5cdCAgICByZXR1cm4gbmV4dFN0YXRlO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxu
XHQgICAqIE1lcmdlcyBuZXcgcHJvcHMgYW5kIHN0YXRlLCBub3RpZmllcyBkZWxlZ2F0ZSBtZXRo
b2RzIG9mIHVwZGF0ZSBhbmRcblx0ICAgKiBwZXJmb3JtcyB1cGRhdGUuXG5cdCAgICpcblx0ICAg
KiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgTmV4dCBlbGVtZW50XG5cdCAgICog
QHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcyBOZXh0IHB1YmxpYyBvYmplY3QgdG8gc2V0IGFzIHBy
b3BlcnRpZXMuXG5cdCAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGUgTmV4dCBvYmplY3Qg
dG8gc2V0IGFzIHN0YXRlLlxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHQgTmV4
dCBwdWJsaWMgb2JqZWN0IHRvIHNldCBhcyBjb250ZXh0LlxuXHQgICAqIEBwYXJhbSB7UmVhY3RS
ZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAcGFyYW0gez9vYmplY3R9
IHVubWFza2VkQ29udGV4dFxuXHQgICAqIEBwcml2YXRlXG5cdCAgICovXG5cdCAgX3BlcmZvcm1D
b21wb25lbnRVcGRhdGU6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgbmV4dFByb3BzLCBuZXh0U3Rh
dGUsIG5leHRDb250ZXh0LCB0cmFuc2FjdGlvbiwgdW5tYXNrZWRDb250ZXh0KSB7XG5cdCAgICB2
YXIgX3RoaXMyID0gdGhpcztcblx0XG5cdCAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xu
XHRcblx0ICAgIHZhciBoYXNDb21wb25lbnREaWRVcGRhdGUgPSBCb29sZWFuKGluc3QuY29tcG9u
ZW50RGlkVXBkYXRlKTtcblx0ICAgIHZhciBwcmV2UHJvcHM7XG5cdCAgICB2YXIgcHJldlN0YXRl
O1xuXHQgICAgdmFyIHByZXZDb250ZXh0O1xuXHQgICAgaWYgKGhhc0NvbXBvbmVudERpZFVwZGF0
ZSkge1xuXHQgICAgICBwcmV2UHJvcHMgPSBpbnN0LnByb3BzO1xuXHQgICAgICBwcmV2U3RhdGUg
PSBpbnN0LnN0YXRlO1xuXHQgICAgICBwcmV2Q29udGV4dCA9IGluc3QuY29udGV4dDtcblx0ICAg
IH1cblx0XG5cdCAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsVXBkYXRlKSB7XG5cdCAgICAgIGlm
IChmYWxzZSkge1xuXHQgICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtc
blx0ICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxVcGRhdGUobmV4dFByb3BzLCBu
ZXh0U3RhdGUsIG5leHRDb250ZXh0KTtcblx0ICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY29t
cG9uZW50V2lsbFVwZGF0ZScpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGluc3QuY29t
cG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpO1xuXHQg
ICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0RWxl
bWVudDtcblx0ICAgIHRoaXMuX2NvbnRleHQgPSB1bm1hc2tlZENvbnRleHQ7XG5cdCAgICBpbnN0
LnByb3BzID0gbmV4dFByb3BzO1xuXHQgICAgaW5zdC5zdGF0ZSA9IG5leHRTdGF0ZTtcblx0ICAg
IGluc3QuY29udGV4dCA9IG5leHRDb250ZXh0O1xuXHRcblx0ICAgIHRoaXMuX3VwZGF0ZVJlbmRl
cmVkQ29tcG9uZW50KHRyYW5zYWN0aW9uLCB1bm1hc2tlZENvbnRleHQpO1xuXHRcblx0ICAgIGlm
IChoYXNDb21wb25lbnREaWRVcGRhdGUpIHtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAg
ICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShmdW5jdGlvbiAoKSB7
XG5cdCAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihpbnN0LmNvbXBvbmVudERpZFVwZGF0
ZS5iaW5kKGluc3QsIHByZXZQcm9wcywgcHJldlN0YXRlLCBwcmV2Q29udGV4dCksIF90aGlzMi5f
ZGVidWdJRCwgJ2NvbXBvbmVudERpZFVwZGF0ZScpO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICB9
IGVsc2Uge1xuXHQgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVl
dWUoaW5zdC5jb21wb25lbnREaWRVcGRhdGUuYmluZChpbnN0LCBwcmV2UHJvcHMsIHByZXZTdGF0
ZSwgcHJldkNvbnRleHQpLCBpbnN0KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sXG5cdFxu
XHQgIC8qKlxuXHQgICAqIENhbGwgdGhlIGNvbXBvbmVudCdzIGByZW5kZXJgIG1ldGhvZCBhbmQg
dXBkYXRlIHRoZSBET00gYWNjb3JkaW5nbHkuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0
UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICogQGludGVybmFsXG5cdCAg
ICovXG5cdCAgX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24s
IGNvbnRleHQpIHtcblx0ICAgIHZhciBwcmV2Q29tcG9uZW50SW5zdGFuY2UgPSB0aGlzLl9yZW5k
ZXJlZENvbXBvbmVudDtcblx0ICAgIHZhciBwcmV2UmVuZGVyZWRFbGVtZW50ID0gcHJldkNvbXBv
bmVudEluc3RhbmNlLl9jdXJyZW50RWxlbWVudDtcblx0ICAgIHZhciBuZXh0UmVuZGVyZWRFbGVt
ZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCk7XG5cdFxuXHQgICAgdmFyIGRl
YnVnSUQgPSAwO1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIGRlYnVnSUQgPSB0aGlzLl9k
ZWJ1Z0lEO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVu
dChwcmV2UmVuZGVyZWRFbGVtZW50LCBuZXh0UmVuZGVyZWRFbGVtZW50KSkge1xuXHQgICAgICBS
ZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudChwcmV2Q29tcG9uZW50SW5zdGFuY2UsIG5l
eHRSZW5kZXJlZEVsZW1lbnQsIHRyYW5zYWN0aW9uLCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0
KGNvbnRleHQpKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHZhciBvbGRIb3N0Tm9kZSA9IFJl
YWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShwcmV2Q29tcG9uZW50SW5zdGFuY2UpO1xuXHQgICAg
ICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChwcmV2Q29tcG9uZW50SW5zdGFuY2Us
IGZhbHNlKTtcblx0XG5cdCAgICAgIHZhciBub2RlVHlwZSA9IFJlYWN0Tm9kZVR5cGVzLmdldFR5
cGUobmV4dFJlbmRlcmVkRWxlbWVudCk7XG5cdCAgICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUg
PSBub2RlVHlwZTtcblx0ICAgICAgdmFyIGNoaWxkID0gdGhpcy5faW5zdGFudGlhdGVSZWFjdENv
bXBvbmVudChuZXh0UmVuZGVyZWRFbGVtZW50LCBub2RlVHlwZSAhPT0gUmVhY3ROb2RlVHlwZXMu
RU1QVFkgLyogc2hvdWxkSGF2ZURlYnVnSUQgKi9cblx0ICAgICAgKTtcblx0ICAgICAgdGhpcy5f
cmVuZGVyZWRDb21wb25lbnQgPSBjaGlsZDtcblx0XG5cdCAgICAgIHZhciBuZXh0TWFya3VwID0g
UmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNoaWxkLCB0cmFuc2FjdGlvbiwgdGhpcy5f
aG9zdFBhcmVudCwgdGhpcy5faG9zdENvbnRhaW5lckluZm8sIHRoaXMuX3Byb2Nlc3NDaGlsZENv
bnRleHQoY29udGV4dCksIGRlYnVnSUQpO1xuXHRcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAg
ICAgICAgaWYgKGRlYnVnSUQgIT09IDApIHtcblx0ICAgICAgICAgIHZhciBjaGlsZERlYnVnSURz
ID0gY2hpbGQuX2RlYnVnSUQgIT09IDAgPyBbY2hpbGQuX2RlYnVnSURdIDogW107XG5cdCAgICAg
ICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25TZXRDaGlsZHJlbihkZWJ1Z0lE
LCBjaGlsZERlYnVnSURzKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHRo
aXMuX3JlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRIb3N0Tm9kZSwgbmV4dE1hcmt1cCwgcHJldkNv
bXBvbmVudEluc3RhbmNlKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBP
dmVycmlkZGVuIGluIHNoYWxsb3cgcmVuZGVyaW5nLlxuXHQgICAqXG5cdCAgICogQHByb3RlY3Rl
ZFxuXHQgICAqL1xuXHQgIF9yZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGZ1bmN0aW9uIChvbGRIb3N0
Tm9kZSwgbmV4dE1hcmt1cCwgcHJldkluc3RhbmNlKSB7XG5cdCAgICBSZWFjdENvbXBvbmVudEVu
dmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRIb3N0Tm9kZSwgbmV4dE1hcmt1cCwg
cHJldkluc3RhbmNlKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcHJvdGVjdGVkXG5c
dCAgICovXG5cdCAgX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4
dDogZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcblx0ICAg
IHZhciByZW5kZXJlZEVsZW1lbnQ7XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHJl
bmRlcmVkRWxlbWVudCA9IG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcblx0ICAg
ICAgICByZXR1cm4gaW5zdC5yZW5kZXIoKTtcblx0ICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ3Jl
bmRlcicpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmVuZGVyZWRFbGVtZW50ID0gaW5zdC5y
ZW5kZXIoKTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgLy8gV2Ug
YWxsb3cgYXV0by1tb2NrcyB0byBwcm9jZWVkIGFzIGlmIHRoZXkncmUgcmV0dXJuaW5nIG51bGwu
XG5cdCAgICAgIGlmIChyZW5kZXJlZEVsZW1lbnQgPT09IHVuZGVmaW5lZCAmJiBpbnN0LnJlbmRl
ci5faXNNb2NrRnVuY3Rpb24pIHtcblx0ICAgICAgICAvLyBUaGlzIGlzIHByb2JhYmx5IGJhZCBw
cmFjdGljZS4gQ29uc2lkZXIgd2FybmluZyBoZXJlIGFuZFxuXHQgICAgICAgIC8vIGRlcHJlY2F0
aW5nIHRoaXMgY29udmVuaWVuY2UuXG5cdCAgICAgICAgcmVuZGVyZWRFbGVtZW50ID0gbnVsbDtc
blx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiByZW5kZXJlZEVsZW1lbnQ7XG5c
dCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHByaXZhdGVcblx0ICAgKi9cblx0ICBfcmVuZGVy
VmFsaWRhdGVkQ29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG5cdCAgICB2YXIgcmVuZGVyZWRFbGVt
ZW50O1xuXHQgICAgaWYgKChcInByb2R1Y3Rpb25cIikgIT09ICdwcm9kdWN0aW9uJyB8fCB0aGlz
Ll9jb21wb3NpdGVUeXBlICE9PSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsKSB7
XG5cdCAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlzO1xuXHQgICAgICB0cnkg
e1xuXHQgICAgICAgIHJlbmRlcmVkRWxlbWVudCA9IHRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBv
bmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpO1xuXHQgICAgICB9IGZpbmFsbHkge1xuXHQgICAg
ICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsO1xuXHQgICAgICB9XG5cdCAgICB9
IGVsc2Uge1xuXHQgICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRD
b21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKTtcblx0ICAgIH1cblx0ICAgICEoXG5cdCAg
ICAvLyBUT0RPOiBBbiBgaXNWYWxpZE5vZGVgIGZ1bmN0aW9uIHdvdWxkIHByb2JhYmx5IGJlIG1v
cmUgYXBwcm9wcmlhdGVcblx0ICAgIHJlbmRlcmVkRWxlbWVudCA9PT0gbnVsbCB8fCByZW5kZXJl
ZEVsZW1lbnQgPT09IGZhbHNlIHx8IFJlYWN0LmlzVmFsaWRFbGVtZW50KHJlbmRlcmVkRWxlbWVu
dCkpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnJXMucmVuZGVyKCk6IEEgdmFsaWQgUmVh
Y3QgZWxlbWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91IG1heSBoYXZlIHJldHVy
bmVkIHVuZGVmaW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhlciBpbnZhbGlkIG9iamVjdC4nLCB0
aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IF9wcm9kSW52YXJp
YW50KCcxMDknLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6
IHZvaWQgMDtcblx0XG5cdCAgICByZXR1cm4gcmVuZGVyZWRFbGVtZW50O1xuXHQgIH0sXG5cdFxu
XHQgIC8qKlxuXHQgICAqIExhemlseSBhbGxvY2F0ZXMgdGhlIHJlZnMgb2JqZWN0IGFuZCBzdG9y
ZXMgYGNvbXBvbmVudGAgYXMgYHJlZmAuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30g
cmVmIFJlZmVyZW5jZSBuYW1lLlxuXHQgICAqIEBwYXJhbSB7Y29tcG9uZW50fSBjb21wb25lbnQg
Q29tcG9uZW50IHRvIHN0b3JlIGFzIGByZWZgLlxuXHQgICAqIEBmaW5hbFxuXHQgICAqIEBwcml2
YXRlXG5cdCAgICovXG5cdCAgYXR0YWNoUmVmOiBmdW5jdGlvbiAocmVmLCBjb21wb25lbnQpIHtc
blx0ICAgIHZhciBpbnN0ID0gdGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpO1xuXHQgICAgIShpbnN0
ICE9IG51bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnU3RhdGVsZXNzIGZ1bmN0aW9u
IGNvbXBvbmVudHMgY2Fubm90IGhhdmUgcmVmcy4nKSA6IF9wcm9kSW52YXJpYW50KCcxMTAnKSA6
IHZvaWQgMDtcblx0ICAgIHZhciBwdWJsaWNDb21wb25lbnRJbnN0YW5jZSA9IGNvbXBvbmVudC5n
ZXRQdWJsaWNJbnN0YW5jZSgpO1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHZhciBjb21w
b25lbnROYW1lID0gY29tcG9uZW50ICYmIGNvbXBvbmVudC5nZXROYW1lID8gY29tcG9uZW50Lmdl
dE5hbWUoKSA6ICdhIGNvbXBvbmVudCc7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHB1YmxpY0NvbXBvbmVudEluc3RhbmNlICE9IG51bGwg
fHwgY29tcG9uZW50Ll9jb21wb3NpdGVUeXBlICE9PSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NG
dW5jdGlvbmFsLCAnU3RhdGVsZXNzIGZ1bmN0aW9uIGNvbXBvbmVudHMgY2Fubm90IGJlIGdpdmVu
IHJlZnMgJyArICcoU2VlIHJlZiBcIiVzXCIgaW4gJXMgY3JlYXRlZCBieSAlcykuICcgKyAnQXR0
ZW1wdHMgdG8gYWNjZXNzIHRoaXMgcmVmIHdpbGwgZmFpbC4nLCByZWYsIGNvbXBvbmVudE5hbWUs
IHRoaXMuZ2V0TmFtZSgpKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0ICAgIHZhciByZWZzID0gaW5z
dC5yZWZzID09PSBlbXB0eU9iamVjdCA/IGluc3QucmVmcyA9IHt9IDogaW5zdC5yZWZzO1xuXHQg
ICAgcmVmc1tyZWZdID0gcHVibGljQ29tcG9uZW50SW5zdGFuY2U7XG5cdCAgfSxcblx0XG5cdCAg
LyoqXG5cdCAgICogRGV0YWNoZXMgYSByZWZlcmVuY2UgbmFtZS5cblx0ICAgKlxuXHQgICAqIEBw
YXJhbSB7c3RyaW5nfSByZWYgTmFtZSB0byBkZXJlZmVyZW5jZS5cblx0ICAgKiBAZmluYWxcblx0
ICAgKiBAcHJpdmF0ZVxuXHQgICAqL1xuXHQgIGRldGFjaFJlZjogZnVuY3Rpb24gKHJlZikge1xu
XHQgICAgdmFyIHJlZnMgPSB0aGlzLmdldFB1YmxpY0luc3RhbmNlKCkucmVmcztcblx0ICAgIGRl
bGV0ZSByZWZzW3JlZl07XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogR2V0IGEgdGV4dCBk
ZXNjcmlwdGlvbiBvZiB0aGUgY29tcG9uZW50IHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkg
aXRcblx0ICAgKiBpbiBlcnJvciBtZXNzYWdlcy5cblx0ICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRo
ZSBuYW1lIG9yIG51bGwuXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgZ2V0TmFtZTog
ZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIHR5cGUgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBl
O1xuXHQgICAgdmFyIGNvbnN0cnVjdG9yID0gdGhpcy5faW5zdGFuY2UgJiYgdGhpcy5faW5zdGFu
Y2UuY29uc3RydWN0b3I7XG5cdCAgICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCBjb25zdHJ1
Y3RvciAmJiBjb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgY29uc3RydWN0
b3IgJiYgY29uc3RydWN0b3IubmFtZSB8fCBudWxsO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQg
ICAqIEdldCB0aGUgcHVibGljbHkgYWNjZXNzaWJsZSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGNv
bXBvbmVudCAtIGkuZS4gd2hhdFxuXHQgICAqIGlzIGV4cG9zZWQgYnkgcmVmcyBhbmQgcmV0dXJu
ZWQgYnkgcmVuZGVyLiBDYW4gYmUgbnVsbCBmb3Igc3RhdGVsZXNzXG5cdCAgICogY29tcG9uZW50
cy5cblx0ICAgKlxuXHQgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSB0aGUgcHVibGljIGNv
bXBvbmVudCBpbnN0YW5jZS5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBnZXRQdWJs
aWNJbnN0YW5jZTogZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5j
ZTtcblx0ICAgIGlmICh0aGlzLl9jb21wb3NpdGVUeXBlID09PSBDb21wb3NpdGVUeXBlcy5TdGF0
ZWxlc3NGdW5jdGlvbmFsKSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAg
cmV0dXJuIGluc3Q7XG5cdCAgfSxcblx0XG5cdCAgLy8gU3R1YlxuXHQgIF9pbnN0YW50aWF0ZVJl
YWN0Q29tcG9uZW50OiBudWxsXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29t
cG9zaXRlQ29tcG9uZW50O1xuXG4vKioqLyB9LFxuLyogMTM3ICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
XHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQvKiBnbG9iYWxzIF9fUkVB
Q1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2
YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFy
IFJlYWN0RGVmYXVsdEluamVjdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTUwKTtcblx0dmFy
IFJlYWN0TW91bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY3KTtcblx0dmFyIFJlYWN0UmVjb25j
aWxlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuXHR2YXIgUmVhY3RVcGRhdGVzID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg5KTtcblx0dmFyIFJlYWN0VmVyc2lvbiA9IF9fd2VicGFja19yZXF1
aXJlX18oMTYzKTtcblx0XG5cdHZhciBmaW5kRE9NTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18o
MTc5KTtcblx0dmFyIGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg3Mik7XG5cdHZhciByZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lciA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTg2KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIp
O1xuXHRcblx0UmVhY3REZWZhdWx0SW5qZWN0aW9uLmluamVjdCgpO1xuXHRcblx0dmFyIFJlYWN0
RE9NID0ge1xuXHQgIGZpbmRET01Ob2RlOiBmaW5kRE9NTm9kZSxcblx0ICByZW5kZXI6IFJlYWN0
TW91bnQucmVuZGVyLFxuXHQgIHVubW91bnRDb21wb25lbnRBdE5vZGU6IFJlYWN0TW91bnQudW5t
b3VudENvbXBvbmVudEF0Tm9kZSxcblx0ICB2ZXJzaW9uOiBSZWFjdFZlcnNpb24sXG5cdFxuXHQg
IC8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuXHQgIHVuc3RhYmxlX2JhdGNoZWRVcGRh
dGVzOiBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMsXG5cdCAgdW5zdGFibGVfcmVuZGVyU3Vi
dHJlZUludG9Db250YWluZXI6IHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyXG5cdCAgLyogZXNs
aW50LWVuYWJsZSBjYW1lbGNhc2UgKi9cblx0fTtcblx0XG5cdC8vIEluamVjdCB0aGUgcnVudGlt
ZSBpbnRvIGEgZGV2dG9vbHMgZ2xvYmFsIGhvb2sgcmVnYXJkbGVzcyBvZiBicm93c2VyLlxuXHQv
LyBBbGxvd3MgZm9yIGRlYnVnZ2luZyB3aGVuIHRoZSBob29rIGlzIGluamVjdGVkIG9uIHRoZSBw
YWdlLlxuXHRpZiAodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAhPT0gJ3Vu
ZGVmaW5lZCcgJiYgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3Qg
PT09ICdmdW5jdGlvbicpIHtcblx0ICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5q
ZWN0KHtcblx0ICAgIENvbXBvbmVudFRyZWU6IHtcblx0ICAgICAgZ2V0Q2xvc2VzdEluc3RhbmNl
RnJvbU5vZGU6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9k
ZSxcblx0ICAgICAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZnVuY3Rpb24gKGluc3QpIHtcblx0ICAg
ICAgICAvLyBpbnN0IGlzIGFuIGludGVybmFsIGluc3RhbmNlIChidXQgY291bGQgYmUgYSBjb21w
b3NpdGUpXG5cdCAgICAgICAgaWYgKGluc3QuX3JlbmRlcmVkQ29tcG9uZW50KSB7XG5cdCAgICAg
ICAgICBpbnN0ID0gZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUoaW5zdCk7XG5cdCAgICAg
ICAgfVxuXHQgICAgICAgIGlmIChpbnN0KSB7XG5cdCAgICAgICAgICByZXR1cm4gUmVhY3RET01D
b21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG5cdCAgICAgICAgfSBlbHNl
IHtcblx0ICAgICAgICAgIHJldHVybiBudWxsO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQg
ICAgfSxcblx0ICAgIE1vdW50OiBSZWFjdE1vdW50LFxuXHQgICAgUmVjb25jaWxlcjogUmVhY3RS
ZWNvbmNpbGVyXG5cdCAgfSk7XG5cdH1cblx0XG5cdGlmIChmYWxzZSkge1xuXHQgIHZhciBFeGVj
dXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50
Jyk7XG5cdCAgaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiB3aW5kb3cudG9w
ID09PSB3aW5kb3cuc2VsZikge1xuXHQgICAgLy8gRmlyc3QgY2hlY2sgaWYgZGV2dG9vbHMgaXMg
bm90IGluc3RhbGxlZFxuXHQgICAgaWYgKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9I
T09LX18gPT09ICd1bmRlZmluZWQnKSB7XG5cdCAgICAgIC8vIElmIHdlJ3JlIGluIENocm9tZSBv
ciBGaXJlZm94LCBwcm92aWRlIGEgZG93bmxvYWQgbGluayBpZiBub3QgaW5zdGFsbGVkLlxuXHQg
ICAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdDaHJvbWUnKSA+IC0xICYmIG5h
dmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRWRnZScpID09PSAtMSB8fCBuYXZpZ2F0b3IudXNl
ckFnZW50LmluZGV4T2YoJ0ZpcmVmb3gnKSA+IC0xKSB7XG5cdCAgICAgICAgLy8gRmlyZWZveCBk
b2VzIG5vdCBoYXZlIHRoZSBpc3N1ZSB3aXRoIGRldnRvb2xzIGxvYWRlZCBvdmVyIGZpbGU6Ly9c
blx0ICAgICAgICB2YXIgc2hvd0ZpbGVVcmxNZXNzYWdlID0gd2luZG93LmxvY2F0aW9uLnByb3Rv
Y29sLmluZGV4T2YoJ2h0dHAnKSA9PT0gLTEgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9m
KCdGaXJlZm94JykgPT09IC0xO1xuXHQgICAgICAgIGNvbnNvbGUuZGVidWcoJ0Rvd25sb2FkIHRo
ZSBSZWFjdCBEZXZUb29scyAnICsgKHNob3dGaWxlVXJsTWVzc2FnZSA/ICdhbmQgdXNlIGFuIEhU
VFAgc2VydmVyIChpbnN0ZWFkIG9mIGEgZmlsZTogVVJMKSAnIDogJycpICsgJ2ZvciBhIGJldHRl
ciBkZXZlbG9wbWVudCBleHBlcmllbmNlOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtZGV2dG9v
bHMnKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHZhciB0ZXN0RnVuYyA9IGZ1bmN0
aW9uIHRlc3RGbigpIHt9O1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoKHRlc3RGdW5jLm5hbWUgfHwgdGVzdEZ1bmMudG9TdHJpbmcoKSkuaW5k
ZXhPZigndGVzdEZuJykgIT09IC0xLCBcIkl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIGEgbWlu
aWZpZWQgY29weSBvZiB0aGUgZGV2ZWxvcG1lbnQgYnVpbGQgXCIgKyAnb2YgUmVhY3QuIFdoZW4g
ZGVwbG95aW5nIFJlYWN0IGFwcHMgdG8gcHJvZHVjdGlvbiwgbWFrZSBzdXJlIHRvIHVzZSAnICsg
J3RoZSBwcm9kdWN0aW9uIGJ1aWxkIHdoaWNoIHNraXBzIGRldmVsb3BtZW50IHdhcm5pbmdzIGFu
ZCBpcyBmYXN0ZXIuICcgKyAnU2VlIGh0dHBzOi8vZmIubWUvcmVhY3QtbWluaWZpY2F0aW9uIGZv
ciBtb3JlIGRldGFpbHMuJykgOiB2b2lkIDA7XG5cdFxuXHQgICAgLy8gSWYgd2UncmUgaW4gSUU4
LCBjaGVjayB0byBzZWUgaWYgd2UgYXJlIGluIGNvbXBhdGliaWxpdHkgbW9kZSBhbmQgcHJvdmlk
ZVxuXHQgICAgLy8gaW5mb3JtYXRpb24gb24gcHJldmVudGluZyBjb21wYXRpYmlsaXR5IG1vZGVc
blx0ICAgIHZhciBpZUNvbXBhdGliaWxpdHlNb2RlID0gZG9jdW1lbnQuZG9jdW1lbnRNb2RlICYm
IGRvY3VtZW50LmRvY3VtZW50TW9kZSA8IDg7XG5cdFxuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWllQ29tcGF0aWJpbGl0eU1vZGUsICdJbnRl
cm5ldCBFeHBsb3JlciBpcyBydW5uaW5nIGluIGNvbXBhdGliaWxpdHkgbW9kZTsgcGxlYXNlIGFk
ZCB0aGUgJyArICdmb2xsb3dpbmcgdGFnIHRvIHlvdXIgSFRNTCB0byBwcmV2ZW50IHRoaXMgZnJv
bSBoYXBwZW5pbmc6ICcgKyAnPG1ldGEgaHR0cC1lcXVpdj1cIlgtVUEtQ29tcGF0aWJsZVwiIGNv
bnRlbnQ9XCJJRT1lZGdlXCIgLz4nKSA6IHZvaWQgMDtcblx0XG5cdCAgICB2YXIgZXhwZWN0ZWRG
ZWF0dXJlcyA9IFtcblx0ICAgIC8vIHNoaW1zXG5cdCAgICBBcnJheS5pc0FycmF5LCBBcnJheS5w
cm90b3R5cGUuZXZlcnksIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLCBBcnJheS5wcm90b3R5cGUu
aW5kZXhPZiwgQXJyYXkucHJvdG90eXBlLm1hcCwgRGF0ZS5ub3csIEZ1bmN0aW9uLnByb3RvdHlw
ZS5iaW5kLCBPYmplY3Qua2V5cywgU3RyaW5nLnByb3RvdHlwZS50cmltXTtcblx0XG5cdCAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkRmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcblx0ICAg
ICAgaWYgKCFleHBlY3RlZEZlYXR1cmVzW2ldKSB7XG5cdCAgICAgICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdPbmUgb3IgbW9yZSBFUzUg
c2hpbXMgZXhwZWN0ZWQgYnkgUmVhY3QgYXJlIG5vdCBhdmFpbGFibGU6ICcgKyAnaHR0cHM6Ly9m
Yi5tZS9yZWFjdC13YXJuaW5nLXBvbHlmaWxscycpIDogdm9pZCAwO1xuXHQgICAgICAgIGJyZWFr
O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0
ICB2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0
aW9uJyk7XG5cdCAgdmFyIFJlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vayA9IHJlcXVpcmUoJy4v
UmVhY3RET01Vbmtub3duUHJvcGVydHlIb29rJyk7XG5cdCAgdmFyIFJlYWN0RE9NTnVsbElucHV0
VmFsdWVQcm9wSG9vayA9IHJlcXVpcmUoJy4vUmVhY3RET01OdWxsSW5wdXRWYWx1ZVByb3BIb29r
Jyk7XG5cdCAgdmFyIFJlYWN0RE9NSW52YWxpZEFSSUFIb29rID0gcmVxdWlyZSgnLi9SZWFjdERP
TUludmFsaWRBUklBSG9vaycpO1xuXHRcblx0ICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wuYWRkSG9vayhSZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2spO1xuXHQgIFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5hZGRIb29rKFJlYWN0RE9NTnVsbElucHV0VmFsdWVQcm9wSG9v
ayk7XG5cdCAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLmFkZEhvb2soUmVhY3RET01J
bnZhbGlkQVJJQUhvb2spO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NO1xu
XG4vKioqLyB9LFxuLyogMTM4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICovXG5cdFxuXHQvKiBnbG9iYWwgaGFzT3duUHJvcGVydHk6dHJ1ZSAqL1xu
XHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygzKSxcblx0ICAgIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xu
XHRcblx0dmFyIEF1dG9Gb2N1c1V0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjUpO1xuXHR2
YXIgQ1NTUHJvcGVydHlPcGVyYXRpb25zID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjcpO1xuXHR2
YXIgRE9NTGF6eVRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcblx0dmFyIERPTU5hbWVz
cGFjZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTtcblx0dmFyIERPTVByb3BlcnR5ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG5cdHZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDYwKTtcblx0dmFyIEV2ZW50UGx1Z2luSHViID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxOSk7XG5cdHZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygzNik7XG5cdHZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDI1KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3MgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDYxKTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1
aXJlX18oNSk7XG5cdHZhciBSZWFjdERPTUlucHV0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDMp
O1xuXHR2YXIgUmVhY3RET01PcHRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0NCk7XG5cdHZh
ciBSZWFjdERPTVNlbGVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oNjIpO1xuXHR2YXIgUmVhY3RE
T01UZXh0YXJlYSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ3KTtcblx0dmFyIFJlYWN0SW5zdHJ1
bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblx0dmFyIFJlYWN0TXVsdGlDaGls
ZCA9IF9fd2VicGFja19yZXF1aXJlX18oMTU2KTtcblx0dmFyIFJlYWN0U2VydmVyUmVuZGVyaW5n
VHJhbnNhY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2MSk7XG5cdFxuXHR2YXIgZW1wdHlG
dW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cdHZhciBlc2NhcGVUZXh0Q29udGVu
dEZvckJyb3dzZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTtcblx0dmFyIGludmFyaWFudCA9
IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciBpc0V2ZW50U3VwcG9ydGVkID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg0Nyk7XG5cdHZhciBzaGFsbG93RXF1YWwgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDMyKTtcblx0dmFyIGlucHV0VmFsdWVUcmFja2luZyA9IF9fd2VicGFja19yZXF1aXJlX18o
NzQpO1xuXHR2YXIgdmFsaWRhdGVET01OZXN0aW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0OSk7
XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBGbGFn
cyA9IFJlYWN0RE9NQ29tcG9uZW50RmxhZ3M7XG5cdHZhciBkZWxldGVMaXN0ZW5lciA9IEV2ZW50
UGx1Z2luSHViLmRlbGV0ZUxpc3RlbmVyO1xuXHR2YXIgZ2V0Tm9kZSA9IFJlYWN0RE9NQ29tcG9u
ZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlO1xuXHR2YXIgbGlzdGVuVG8gPSBSZWFjdEJyb3dz
ZXJFdmVudEVtaXR0ZXIubGlzdGVuVG87XG5cdHZhciByZWdpc3RyYXRpb25OYW1lTW9kdWxlcyA9
IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM7XG5cdFxuXHQvLyBG
b3IgcXVpY2tseSBtYXRjaGluZyBjaGlsZHJlbiB0eXBlLCB0byB0ZXN0IGlmIGNhbiBiZSB0cmVh
dGVkIGFzIGNvbnRlbnQuXG5cdHZhciBDT05URU5UX1RZUEVTID0geyBzdHJpbmc6IHRydWUsIG51
bWJlcjogdHJ1ZSB9O1xuXHRcblx0dmFyIFNUWUxFID0gJ3N0eWxlJztcblx0dmFyIEhUTUwgPSAn
X19odG1sJztcblx0dmFyIFJFU0VSVkVEX1BST1BTID0ge1xuXHQgIGNoaWxkcmVuOiBudWxsLFxu
XHQgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiBudWxsLFxuXHQgIHN1cHByZXNzQ29udGVudEVk
aXRhYmxlV2FybmluZzogbnVsbFxuXHR9O1xuXHRcblx0Ly8gTm9kZSB0eXBlIGZvciBkb2N1bWVu
dCBmcmFnbWVudHMgKE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSkuXG5cdHZhciBET0NfRlJB
R01FTlRfVFlQRSA9IDExO1xuXHRcblx0ZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVu
ZHVtKGludGVybmFsSW5zdGFuY2UpIHtcblx0ICBpZiAoaW50ZXJuYWxJbnN0YW5jZSkge1xuXHQg
ICAgdmFyIG93bmVyID0gaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyIHx8
IG51bGw7XG5cdCAgICBpZiAob3duZXIpIHtcblx0ICAgICAgdmFyIG5hbWUgPSBvd25lci5nZXRO
YW1lKCk7XG5cdCAgICAgIGlmIChuYW1lKSB7XG5cdCAgICAgICAgcmV0dXJuICcgVGhpcyBET00g
bm9kZSB3YXMgcmVuZGVyZWQgYnkgYCcgKyBuYW1lICsgJ2AuJztcblx0ICAgICAgfVxuXHQgICAg
fVxuXHQgIH1cblx0ICByZXR1cm4gJyc7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGZyaWVuZGx5U3Ry
aW5naWZ5KG9iaikge1xuXHQgIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuXHQgICAg
aWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuXHQgICAgICByZXR1cm4gJ1snICsgb2JqLm1hcChm
cmllbmRseVN0cmluZ2lmeSkuam9pbignLCAnKSArICddJztcblx0ICAgIH0gZWxzZSB7XG5cdCAg
ICAgIHZhciBwYWlycyA9IFtdO1xuXHQgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG5cdCAg
ICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkp
IHtcblx0ICAgICAgICAgIHZhciBrZXlFc2NhcGVkID0gL15bYS16JF9dW1xcdyRfXSokL2kudGVz
dChrZXkpID8ga2V5IDogSlNPTi5zdHJpbmdpZnkoa2V5KTtcblx0ICAgICAgICAgIHBhaXJzLnB1
c2goa2V5RXNjYXBlZCArICc6ICcgKyBmcmllbmRseVN0cmluZ2lmeShvYmpba2V5XSkpO1xuXHQg
ICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gJ3snICsgcGFpcnMuam9pbignLCAn
KSArICd9Jztcblx0ICAgIH1cblx0ICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcn
KSB7XG5cdCAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKTtcblx0ICB9IGVsc2UgaWYgKHR5
cGVvZiBvYmogPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIHJldHVybiAnW2Z1bmN0aW9uIG9iamVj
dF0nO1xuXHQgIH1cblx0ICAvLyBEaWZmZXJzIGZyb20gSlNPTi5zdHJpbmdpZnkgaW4gdGhhdCB1
bmRlZmluZWQgYmVjYXVzZSB1bmRlZmluZWQgYW5kIHRoYXRcblx0ICAvLyBpbmYgYW5kIG5hbiBk
b24ndCBiZWNvbWUgbnVsbFxuXHQgIHJldHVybiBTdHJpbmcob2JqKTtcblx0fVxuXHRcblx0dmFy
IHN0eWxlTXV0YXRpb25XYXJuaW5nID0ge307XG5cdFxuXHRmdW5jdGlvbiBjaGVja0FuZFdhcm5G
b3JNdXRhdGVkU3R5bGUoc3R5bGUxLCBzdHlsZTIsIGNvbXBvbmVudCkge1xuXHQgIGlmIChzdHls
ZTEgPT0gbnVsbCB8fCBzdHlsZTIgPT0gbnVsbCkge1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0
ICBpZiAoc2hhbGxvd0VxdWFsKHN0eWxlMSwgc3R5bGUyKSkge1xuXHQgICAgcmV0dXJuO1xuXHQg
IH1cblx0XG5cdCAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQuX3RhZztcblx0ICB2YXIg
b3duZXIgPSBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcblx0ICB2YXIgb3duZXJO
YW1lO1xuXHQgIGlmIChvd25lcikge1xuXHQgICAgb3duZXJOYW1lID0gb3duZXIuZ2V0TmFtZSgp
O1xuXHQgIH1cblx0XG5cdCAgdmFyIGhhc2ggPSBvd25lck5hbWUgKyAnfCcgKyBjb21wb25lbnRO
YW1lO1xuXHRcblx0ICBpZiAoc3R5bGVNdXRhdGlvbldhcm5pbmcuaGFzT3duUHJvcGVydHkoaGFz
aCkpIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdFxuXHQgIHN0eWxlTXV0YXRpb25XYXJuaW5n
W2hhc2hdID0gdHJ1ZTtcblx0XG5cdCAgIGZhbHNlID8gd2FybmluZyhmYWxzZSwgJ2Alc2Agd2Fz
IHBhc3NlZCBhIHN0eWxlIG9iamVjdCB0aGF0IGhhcyBwcmV2aW91c2x5IGJlZW4gbXV0YXRlZC4g
JyArICdNdXRhdGluZyBgc3R5bGVgIGlzIGRlcHJlY2F0ZWQuIENvbnNpZGVyIGNsb25pbmcgaXQg
YmVmb3JlaGFuZC4gQ2hlY2sgJyArICd0aGUgYHJlbmRlcmAgJXMuIFByZXZpb3VzIHN0eWxlOiAl
cy4gTXV0YXRlZCBzdHlsZTogJXMuJywgY29tcG9uZW50TmFtZSwgb3duZXIgPyAnb2YgYCcgKyBv
d25lck5hbWUgKyAnYCcgOiAndXNpbmcgPCcgKyBjb21wb25lbnROYW1lICsgJz4nLCBmcmllbmRs
eVN0cmluZ2lmeShzdHlsZTEpLCBmcmllbmRseVN0cmluZ2lmeShzdHlsZTIpKSA6IHZvaWQgMDtc
blx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnRcblx0ICogQHBh
cmFtIHs/b2JqZWN0fSBwcm9wc1xuXHQgKi9cblx0ZnVuY3Rpb24gYXNzZXJ0VmFsaWRQcm9wcyhj
b21wb25lbnQsIHByb3BzKSB7XG5cdCAgaWYgKCFwcm9wcykge1xuXHQgICAgcmV0dXJuO1xuXHQg
IH1cblx0ICAvLyBOb3RlIHRoZSB1c2Ugb2YgYD09YCB3aGljaCBjaGVja3MgZm9yIG51bGwgb3Ig
dW5kZWZpbmVkLlxuXHQgIGlmICh2b2lkRWxlbWVudFRhZ3NbY29tcG9uZW50Ll90YWddKSB7XG5c
dCAgICAhKHByb3BzLmNoaWxkcmVuID09IG51bGwgJiYgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5l
ckhUTUwgPT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICclcyBpcyBhIHZvaWQg
ZWxlbWVudCB0YWcgYW5kIG11c3QgbmVpdGhlciBoYXZlIGBjaGlsZHJlbmAgbm9yIHVzZSBgZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUxgLiVzJywgY29tcG9uZW50Ll90YWcsIGNvbXBvbmVudC5fY3Vy
cmVudEVsZW1lbnQuX293bmVyID8gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAnICsgY29t
cG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpICsgJy4nIDogJycpIDogX3By
b2RJbnZhcmlhbnQoJzEzNycsIGNvbXBvbmVudC5fdGFnLCBjb21wb25lbnQuX2N1cnJlbnRFbGVt
ZW50Ll9vd25lciA/ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgJyArIGNvbXBvbmVudC5f
Y3VycmVudEVsZW1lbnQuX293bmVyLmdldE5hbWUoKSArICcuJyA6ICcnKSA6IHZvaWQgMDtcblx0
ICB9XG5cdCAgaWYgKHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICE9IG51bGwpIHtcblx0
ICAgICEocHJvcHMuY2hpbGRyZW4gPT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2Us
ICdDYW4gb25seSBzZXQgb25lIG9mIGBjaGlsZHJlbmAgb3IgYHByb3BzLmRhbmdlcm91c2x5U2V0
SW5uZXJIVE1MYC4nKSA6IF9wcm9kSW52YXJpYW50KCc2MCcpIDogdm9pZCAwO1xuXHQgICAgISh0
eXBlb2YgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPT09ICdvYmplY3QnICYmIEhUTUwg
aW4gcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpID8gIGZhbHNlID8gaW52YXJpYW50KGZh
bHNlLCAnYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBtdXN0IGJlIGluIHRoZSBmb3Jt
IGB7X19odG1sOiAuLi59YC4gUGxlYXNlIHZpc2l0IGh0dHBzOi8vZmIubWUvcmVhY3QtaW52YXJp
YW50LWRhbmdlcm91c2x5LXNldC1pbm5lci1odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLicpIDog
X3Byb2RJbnZhcmlhbnQoJzYxJykgOiB2b2lkIDA7XG5cdCAgfVxuXHQgIGlmIChmYWxzZSkge1xu
XHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJv
cHMuaW5uZXJIVE1MID09IG51bGwsICdEaXJlY3RseSBzZXR0aW5nIHByb3BlcnR5IGBpbm5lckhU
TUxgIGlzIG5vdCBwZXJtaXR0ZWQuICcgKyAnRm9yIG1vcmUgaW5mb3JtYXRpb24sIGxvb2t1cCBk
b2N1bWVudGF0aW9uIG9uIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuJykgOiB2b2lkIDA7XG5c
dCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9w
cy5zdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgfHwgIXByb3BzLmNvbnRlbnRFZGl0YWJs
ZSB8fCBwcm9wcy5jaGlsZHJlbiA9PSBudWxsLCAnQSBjb21wb25lbnQgaXMgYGNvbnRlbnRFZGl0
YWJsZWAgYW5kIGNvbnRhaW5zIGBjaGlsZHJlbmAgbWFuYWdlZCBieSAnICsgJ1JlYWN0LiBJdCBp
cyBub3cgeW91ciByZXNwb25zaWJpbGl0eSB0byBndWFyYW50ZWUgdGhhdCBub25lIG9mICcgKyAn
dGhvc2Ugbm9kZXMgYXJlIHVuZXhwZWN0ZWRseSBtb2RpZmllZCBvciBkdXBsaWNhdGVkLiBUaGlz
IGlzICcgKyAncHJvYmFibHkgbm90IGludGVudGlvbmFsLicpIDogdm9pZCAwO1xuXHQgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMub25Gb2N1
c0luID09IG51bGwgJiYgcHJvcHMub25Gb2N1c091dCA9PSBudWxsLCAnUmVhY3QgdXNlcyBvbkZv
Y3VzIGFuZCBvbkJsdXIgaW5zdGVhZCBvZiBvbkZvY3VzSW4gYW5kIG9uRm9jdXNPdXQuICcgKyAn
QWxsIFJlYWN0IGV2ZW50cyBhcmUgbm9ybWFsaXplZCB0byBidWJibGUsIHNvIG9uRm9jdXNJbiBh
bmQgb25Gb2N1c091dCAnICsgJ2FyZSBub3QgbmVlZGVkL3N1cHBvcnRlZCBieSBSZWFjdC4nKSA6
IHZvaWQgMDtcblx0ICB9XG5cdCAgIShwcm9wcy5zdHlsZSA9PSBudWxsIHx8IHR5cGVvZiBwcm9w
cy5zdHlsZSA9PT0gJ29iamVjdCcpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnVGhlIGBz
dHlsZWAgcHJvcCBleHBlY3RzIGEgbWFwcGluZyBmcm9tIHN0eWxlIHByb3BlcnRpZXMgdG8gdmFs
dWVzLCBub3QgYSBzdHJpbmcuIEZvciBleGFtcGxlLCBzdHlsZT17e21hcmdpblJpZ2h0OiBzcGFj
aW5nICsgXFwnZW1cXCd9fSB3aGVuIHVzaW5nIEpTWC4lcycsIGdldERlY2xhcmF0aW9uRXJyb3JB
ZGRlbmR1bShjb21wb25lbnQpKSA6IF9wcm9kSW52YXJpYW50KCc2MicsIGdldERlY2xhcmF0aW9u
RXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IHZvaWQgMDtcblx0fVxuXHRcblx0ZnVuY3Rpb24g
ZW5xdWV1ZVB1dExpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyLCB0cmFu
c2FjdGlvbikge1xuXHQgIGlmICh0cmFuc2FjdGlvbiBpbnN0YW5jZW9mIFJlYWN0U2VydmVyUmVu
ZGVyaW5nVHJhbnNhY3Rpb24pIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgaWYgKGZhbHNl
KSB7XG5cdCAgICAvLyBJRTggaGFzIG5vIEFQSSBmb3IgZXZlbnQgY2FwdHVyaW5nIGFuZCB0aGUg
YG9uU2Nyb2xsYCBldmVudCBkb2Vzbid0XG5cdCAgICAvLyBidWJibGUuXG5cdCAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhyZWdpc3RyYXRpb25OYW1l
ICE9PSAnb25TY3JvbGwnIHx8IGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9sbCcsIHRydWUpLCBcIlRo
aXMgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgdGhlIGBvblNjcm9sbGAgZXZlbnRcIikgOiB2b2lk
IDA7XG5cdCAgfVxuXHQgIHZhciBjb250YWluZXJJbmZvID0gaW5zdC5faG9zdENvbnRhaW5lcklu
Zm87XG5cdCAgdmFyIGlzRG9jdW1lbnRGcmFnbWVudCA9IGNvbnRhaW5lckluZm8uX25vZGUgJiYg
Y29udGFpbmVySW5mby5fbm9kZS5ub2RlVHlwZSA9PT0gRE9DX0ZSQUdNRU5UX1RZUEU7XG5cdCAg
dmFyIGRvYyA9IGlzRG9jdW1lbnRGcmFnbWVudCA/IGNvbnRhaW5lckluZm8uX25vZGUgOiBjb250
YWluZXJJbmZvLl9vd25lckRvY3VtZW50O1xuXHQgIGxpc3RlblRvKHJlZ2lzdHJhdGlvbk5hbWUs
IGRvYyk7XG5cdCAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwdXRM
aXN0ZW5lciwge1xuXHQgICAgaW5zdDogaW5zdCxcblx0ICAgIHJlZ2lzdHJhdGlvbk5hbWU6IHJl
Z2lzdHJhdGlvbk5hbWUsXG5cdCAgICBsaXN0ZW5lcjogbGlzdGVuZXJcblx0ICB9KTtcblx0fVxu
XHRcblx0ZnVuY3Rpb24gcHV0TGlzdGVuZXIoKSB7XG5cdCAgdmFyIGxpc3RlbmVyVG9QdXQgPSB0
aGlzO1xuXHQgIEV2ZW50UGx1Z2luSHViLnB1dExpc3RlbmVyKGxpc3RlbmVyVG9QdXQuaW5zdCwg
bGlzdGVuZXJUb1B1dC5yZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lclRvUHV0Lmxpc3RlbmVyKTtc
blx0fVxuXHRcblx0ZnVuY3Rpb24gaW5wdXRQb3N0TW91bnQoKSB7XG5cdCAgdmFyIGluc3QgPSB0
aGlzO1xuXHQgIFJlYWN0RE9NSW5wdXQucG9zdE1vdW50V3JhcHBlcihpbnN0KTtcblx0fVxuXHRc
blx0ZnVuY3Rpb24gdGV4dGFyZWFQb3N0TW91bnQoKSB7XG5cdCAgdmFyIGluc3QgPSB0aGlzO1xu
XHQgIFJlYWN0RE9NVGV4dGFyZWEucG9zdE1vdW50V3JhcHBlcihpbnN0KTtcblx0fVxuXHRcblx0
ZnVuY3Rpb24gb3B0aW9uUG9zdE1vdW50KCkge1xuXHQgIHZhciBpbnN0ID0gdGhpcztcblx0ICBS
ZWFjdERPTU9wdGlvbi5wb3N0TW91bnRXcmFwcGVyKGluc3QpO1xuXHR9XG5cdFxuXHR2YXIgc2V0
QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYgPSBlbXB0eUZ1bmN0aW9uO1xuXHRpZiAoZmFsc2Up
IHtcblx0ICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldiA9IGZ1bmN0aW9uIChjb250ZW50
KSB7XG5cdCAgICB2YXIgaGFzRXhpc3RpbmdDb250ZW50ID0gdGhpcy5fY29udGVudERlYnVnSUQg
IT0gbnVsbDtcblx0ICAgIHZhciBkZWJ1Z0lEID0gdGhpcy5fZGVidWdJRDtcblx0ICAgIC8vIFRo
aXMgSUQgcmVwcmVzZW50cyB0aGUgaW5saW5lZCBjaGlsZCB0aGF0IGhhcyBubyBiYWNraW5nIGlu
c3RhbmNlOlxuXHQgICAgdmFyIGNvbnRlbnREZWJ1Z0lEID0gLWRlYnVnSUQ7XG5cdFxuXHQgICAg
aWYgKGNvbnRlbnQgPT0gbnVsbCkge1xuXHQgICAgICBpZiAoaGFzRXhpc3RpbmdDb250ZW50KSB7
XG5cdCAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVW5tb3VudENvbXBv
bmVudCh0aGlzLl9jb250ZW50RGVidWdJRCk7XG5cdCAgICAgIH1cblx0ICAgICAgdGhpcy5fY29u
dGVudERlYnVnSUQgPSBudWxsO1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAg
dmFsaWRhdGVET01OZXN0aW5nKG51bGwsIFN0cmluZyhjb250ZW50KSwgdGhpcywgdGhpcy5fYW5j
ZXN0b3JJbmZvKTtcblx0ICAgIHRoaXMuX2NvbnRlbnREZWJ1Z0lEID0gY29udGVudERlYnVnSUQ7
XG5cdCAgICBpZiAoaGFzRXhpc3RpbmdDb250ZW50KSB7XG5cdCAgICAgIFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudChjb250ZW50RGVidWdJRCwg
Y29udGVudCk7XG5cdCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVwZGF0
ZUNvbXBvbmVudChjb250ZW50RGVidWdJRCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVNb3VudENvbXBvbmVudChjb250ZW50
RGVidWdJRCwgY29udGVudCwgZGVidWdJRCk7XG5cdCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vbk1vdW50Q29tcG9uZW50KGNvbnRlbnREZWJ1Z0lEKTtcblx0ICAgICAgUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4oZGVidWdJRCwgW2NvbnRl
bnREZWJ1Z0lEXSk7XG5cdCAgICB9XG5cdCAgfTtcblx0fVxuXHRcblx0Ly8gVGhlcmUgYXJlIHNv
IG1hbnkgbWVkaWEgZXZlbnRzLCBpdCBtYWtlcyBzZW5zZSB0byBqdXN0XG5cdC8vIG1haW50YWlu
IGEgbGlzdCByYXRoZXIgdGhhbiBjcmVhdGUgYSBgdHJhcEJ1YmJsZWRFdmVudGAgZm9yIGVhY2hc
blx0dmFyIG1lZGlhRXZlbnRzID0ge1xuXHQgIHRvcEFib3J0OiAnYWJvcnQnLFxuXHQgIHRvcENh
blBsYXk6ICdjYW5wbGF5Jyxcblx0ICB0b3BDYW5QbGF5VGhyb3VnaDogJ2NhbnBsYXl0aHJvdWdo
Jyxcblx0ICB0b3BEdXJhdGlvbkNoYW5nZTogJ2R1cmF0aW9uY2hhbmdlJyxcblx0ICB0b3BFbXB0
aWVkOiAnZW1wdGllZCcsXG5cdCAgdG9wRW5jcnlwdGVkOiAnZW5jcnlwdGVkJyxcblx0ICB0b3BF
bmRlZDogJ2VuZGVkJyxcblx0ICB0b3BFcnJvcjogJ2Vycm9yJyxcblx0ICB0b3BMb2FkZWREYXRh
OiAnbG9hZGVkZGF0YScsXG5cdCAgdG9wTG9hZGVkTWV0YWRhdGE6ICdsb2FkZWRtZXRhZGF0YScs
XG5cdCAgdG9wTG9hZFN0YXJ0OiAnbG9hZHN0YXJ0Jyxcblx0ICB0b3BQYXVzZTogJ3BhdXNlJyxc
blx0ICB0b3BQbGF5OiAncGxheScsXG5cdCAgdG9wUGxheWluZzogJ3BsYXlpbmcnLFxuXHQgIHRv
cFByb2dyZXNzOiAncHJvZ3Jlc3MnLFxuXHQgIHRvcFJhdGVDaGFuZ2U6ICdyYXRlY2hhbmdlJyxc
blx0ICB0b3BTZWVrZWQ6ICdzZWVrZWQnLFxuXHQgIHRvcFNlZWtpbmc6ICdzZWVraW5nJyxcblx0
ICB0b3BTdGFsbGVkOiAnc3RhbGxlZCcsXG5cdCAgdG9wU3VzcGVuZDogJ3N1c3BlbmQnLFxuXHQg
IHRvcFRpbWVVcGRhdGU6ICd0aW1ldXBkYXRlJyxcblx0ICB0b3BWb2x1bWVDaGFuZ2U6ICd2b2x1
bWVjaGFuZ2UnLFxuXHQgIHRvcFdhaXRpbmc6ICd3YWl0aW5nJ1xuXHR9O1xuXHRcblx0ZnVuY3Rp
b24gdHJhY2tJbnB1dFZhbHVlKCkge1xuXHQgIGlucHV0VmFsdWVUcmFja2luZy50cmFjayh0aGlz
KTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gdHJhcEJ1YmJsZWRFdmVudHNMb2NhbCgpIHtcblx0ICB2
YXIgaW5zdCA9IHRoaXM7XG5cdCAgLy8gSWYgYSBjb21wb25lbnQgcmVuZGVycyB0byBudWxsIG9y
IGlmIGFub3RoZXIgY29tcG9uZW50IGZhdGFscyBhbmQgY2F1c2VzXG5cdCAgLy8gdGhlIHN0YXRl
IG9mIHRoZSB0cmVlIHRvIGJlIGNvcnJ1cHRlZCwgYG5vZGVgIGhlcmUgY2FuIGJlIG51bGwuXG5c
dCAgIWluc3QuX3Jvb3ROb2RlSUQgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdNdXN0IGJl
IG1vdW50ZWQgdG8gdHJhcCBldmVudHMnKSA6IF9wcm9kSW52YXJpYW50KCc2MycpIDogdm9pZCAw
O1xuXHQgIHZhciBub2RlID0gZ2V0Tm9kZShpbnN0KTtcblx0ICAhbm9kZSA/ICBmYWxzZSA/IGlu
dmFyaWFudChmYWxzZSwgJ3RyYXBCdWJibGVkRXZlbnQoLi4uKTogUmVxdWlyZXMgbm9kZSB0byBi
ZSByZW5kZXJlZC4nKSA6IF9wcm9kSW52YXJpYW50KCc2NCcpIDogdm9pZCAwO1xuXHRcblx0ICBz
d2l0Y2ggKGluc3QuX3RhZykge1xuXHQgICAgY2FzZSAnaWZyYW1lJzpcblx0ICAgIGNhc2UgJ29i
amVjdCc6XG5cdCAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93
c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcExvYWQnLCAnbG9hZCcsIG5vZGUp
XTtcblx0ICAgICAgYnJlYWs7XG5cdCAgICBjYXNlICd2aWRlbyc6XG5cdCAgICBjYXNlICdhdWRp
byc6XG5cdCAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbXTtcblx0ICAgICAg
Ly8gQ3JlYXRlIGxpc3RlbmVyIGZvciBlYWNoIG1lZGlhIGV2ZW50XG5cdCAgICAgIGZvciAodmFy
IGV2ZW50IGluIG1lZGlhRXZlbnRzKSB7XG5cdCAgICAgICAgaWYgKG1lZGlhRXZlbnRzLmhhc093
blByb3BlcnR5KGV2ZW50KSkge1xuXHQgICAgICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3Rl
bmVycy5wdXNoKFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KGV2ZW50
LCBtZWRpYUV2ZW50c1tldmVudF0sIG5vZGUpKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0
ICAgICAgYnJlYWs7XG5cdCAgICBjYXNlICdzb3VyY2UnOlxuXHQgICAgICBpbnN0Ll93cmFwcGVy
U3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2
ZW50KCd0b3BFcnJvcicsICdlcnJvcicsIG5vZGUpXTtcblx0ICAgICAgYnJlYWs7XG5cdCAgICBj
YXNlICdpbWcnOlxuXHQgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0
QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BFcnJvcicsICdlcnJvcics
IG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wTG9h
ZCcsICdsb2FkJywgbm9kZSldO1xuXHQgICAgICBicmVhaztcblx0ICAgIGNhc2UgJ2Zvcm0nOlxu
XHQgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50
RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BSZXNldCcsICdyZXNldCcsIG5vZGUpLCBSZWFj
dEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wU3VibWl0JywgJ3N1Ym1p
dCcsIG5vZGUpXTtcblx0ICAgICAgYnJlYWs7XG5cdCAgICBjYXNlICdpbnB1dCc6XG5cdCAgICBj
YXNlICdzZWxlY3QnOlxuXHQgICAgY2FzZSAndGV4dGFyZWEnOlxuXHQgICAgICBpbnN0Ll93cmFw
cGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxl
ZEV2ZW50KCd0b3BJbnZhbGlkJywgJ2ludmFsaWQnLCBub2RlKV07XG5cdCAgICAgIGJyZWFrO1xu
XHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gcG9zdFVwZGF0ZVNlbGVjdFdyYXBwZXIoKSB7XG5c
dCAgUmVhY3RET01TZWxlY3QucG9zdFVwZGF0ZVdyYXBwZXIodGhpcyk7XG5cdH1cblx0XG5cdC8v
IEZvciBIVE1MLCBjZXJ0YWluIHRhZ3Mgc2hvdWxkIG9taXQgdGhlaXIgY2xvc2UgdGFnLiBXZSBr
ZWVwIGEgd2hpdGVsaXN0IGZvclxuXHQvLyB0aG9zZSBzcGVjaWFsLWNhc2UgdGFncy5cblx0XG5c
dHZhciBvbWl0dGVkQ2xvc2VUYWdzID0ge1xuXHQgIGFyZWE6IHRydWUsXG5cdCAgYmFzZTogdHJ1
ZSxcblx0ICBicjogdHJ1ZSxcblx0ICBjb2w6IHRydWUsXG5cdCAgZW1iZWQ6IHRydWUsXG5cdCAg
aHI6IHRydWUsXG5cdCAgaW1nOiB0cnVlLFxuXHQgIGlucHV0OiB0cnVlLFxuXHQgIGtleWdlbjog
dHJ1ZSxcblx0ICBsaW5rOiB0cnVlLFxuXHQgIG1ldGE6IHRydWUsXG5cdCAgcGFyYW06IHRydWUs
XG5cdCAgc291cmNlOiB0cnVlLFxuXHQgIHRyYWNrOiB0cnVlLFxuXHQgIHdicjogdHJ1ZVxuXHQg
IC8vIE5PVEU6IG1lbnVpdGVtJ3MgY2xvc2UgdGFnIHNob3VsZCBiZSBvbWl0dGVkLCBidXQgdGhh
dCBjYXVzZXMgcHJvYmxlbXMuXG5cdH07XG5cdFxuXHR2YXIgbmV3bGluZUVhdGluZ1RhZ3MgPSB7
XG5cdCAgbGlzdGluZzogdHJ1ZSxcblx0ICBwcmU6IHRydWUsXG5cdCAgdGV4dGFyZWE6IHRydWVc
blx0fTtcblx0XG5cdC8vIEZvciBIVE1MLCBjZXJ0YWluIHRhZ3MgY2Fubm90IGhhdmUgY2hpbGRy
ZW4uIFRoaXMgaGFzIHRoZSBzYW1lIHB1cnBvc2UgYXNcblx0Ly8gYG9taXR0ZWRDbG9zZVRhZ3Ng
IGV4Y2VwdCB0aGF0IGBtZW51aXRlbWAgc2hvdWxkIHN0aWxsIGhhdmUgaXRzIGNsb3NpbmcgdGFn
LlxuXHRcblx0dmFyIHZvaWRFbGVtZW50VGFncyA9IF9hc3NpZ24oe1xuXHQgIG1lbnVpdGVtOiB0
cnVlXG5cdH0sIG9taXR0ZWRDbG9zZVRhZ3MpO1xuXHRcblx0Ly8gV2UgYWNjZXB0IGFueSB0YWcg
dG8gYmUgcmVuZGVyZWQgYnV0IHNpbmNlIHRoaXMgZ2V0cyBpbmplY3RlZCBpbnRvIGFyYml0cmFy
eVxuXHQvLyBIVE1MLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGl0J3MgYSBzYWZlIHRhZy5c
blx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbC8jTlQtTmFtZVxuXHRcblx0dmFyIFZB
TElEX1RBR19SRUdFWCA9IC9eW2EtekEtWl1bYS16QS1aOl9cXC5cXC1cXGRdKiQvOyAvLyBTaW1w
bGlmaWVkIHN1YnNldFxuXHR2YXIgdmFsaWRhdGVkVGFnQ2FjaGUgPSB7fTtcblx0dmFyIGhhc093
blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5cdFxuXHRmdW5jdGlvbiB2YWxpZGF0ZURh
bmdlcm91c1RhZyh0YWcpIHtcblx0ICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwodmFsaWRhdGVk
VGFnQ2FjaGUsIHRhZykpIHtcblx0ICAgICFWQUxJRF9UQUdfUkVHRVgudGVzdCh0YWcpID8gIGZh
bHNlID8gaW52YXJpYW50KGZhbHNlLCAnSW52YWxpZCB0YWc6ICVzJywgdGFnKSA6IF9wcm9kSW52
YXJpYW50KCc2NScsIHRhZykgOiB2b2lkIDA7XG5cdCAgICB2YWxpZGF0ZWRUYWdDYWNoZVt0YWdd
ID0gdHJ1ZTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGlzQ3VzdG9tQ29tcG9uZW50KHRh
Z05hbWUsIHByb3BzKSB7XG5cdCAgcmV0dXJuIHRhZ05hbWUuaW5kZXhPZignLScpID49IDAgfHwg
cHJvcHMuaXMgIT0gbnVsbDtcblx0fVxuXHRcblx0dmFyIGdsb2JhbElkQ291bnRlciA9IDE7XG5c
dFxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG5ldyBSZWFjdCBjbGFzcyB0aGF0IGlzIGlkZW1wb3Rl
bnQgYW5kIGNhcGFibGUgb2YgY29udGFpbmluZyBvdGhlclxuXHQgKiBSZWFjdCBjb21wb25lbnRz
LiBJdCBhY2NlcHRzIGV2ZW50IGxpc3RlbmVycyBhbmQgRE9NIHByb3BlcnRpZXMgdGhhdCBhcmVc
blx0ICogdmFsaWQgYWNjb3JkaW5nIHRvIGBET01Qcm9wZXJ0eWAuXG5cdCAqXG5cdCAqICAtIEV2
ZW50IGxpc3RlbmVyczogYG9uQ2xpY2tgLCBgb25Nb3VzZURvd25gLCBldGMuXG5cdCAqICAtIERP
TSBwcm9wZXJ0aWVzOiBgY2xhc3NOYW1lYCwgYG5hbWVgLCBgdGl0bGVgLCBldGMuXG5cdCAqXG5c
dCAqIFRoZSBgc3R5bGVgIHByb3BlcnR5IGZ1bmN0aW9ucyBkaWZmZXJlbnRseSBmcm9tIHRoZSBE
T00gQVBJLiBJdCBhY2NlcHRzIGFuXG5cdCAqIG9iamVjdCBtYXBwaW5nIG9mIHN0eWxlIHByb3Bl
cnRpZXMgdG8gdmFsdWVzLlxuXHQgKlxuXHQgKiBAY29uc3RydWN0b3IgUmVhY3RET01Db21wb25l
bnRcblx0ICogQGV4dGVuZHMgUmVhY3RNdWx0aUNoaWxkXG5cdCAqL1xuXHRmdW5jdGlvbiBSZWFj
dERPTUNvbXBvbmVudChlbGVtZW50KSB7XG5cdCAgdmFyIHRhZyA9IGVsZW1lbnQudHlwZTtcblx0
ICB2YWxpZGF0ZURhbmdlcm91c1RhZyh0YWcpO1xuXHQgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0g
ZWxlbWVudDtcblx0ICB0aGlzLl90YWcgPSB0YWcudG9Mb3dlckNhc2UoKTtcblx0ICB0aGlzLl9u
YW1lc3BhY2VVUkkgPSBudWxsO1xuXHQgIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBudWxsO1xu
XHQgIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBudWxsO1xuXHQgIHRoaXMuX3ByZXZpb3VzU3R5bGVD
b3B5ID0gbnVsbDtcblx0ICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7XG5cdCAgdGhpcy5faG9zdFBh
cmVudCA9IG51bGw7XG5cdCAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7XG5cdCAgdGhpcy5fZG9tSUQg
PSAwO1xuXHQgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gbnVsbDtcblx0ICB0aGlzLl93cmFw
cGVyU3RhdGUgPSBudWxsO1xuXHQgIHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51bGw7XG5cdCAg
dGhpcy5fZmxhZ3MgPSAwO1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgdGhpcy5fYW5jZXN0b3JJ
bmZvID0gbnVsbDtcblx0ICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhp
cywgbnVsbCk7XG5cdCAgfVxuXHR9XG5cdFxuXHRSZWFjdERPTUNvbXBvbmVudC5kaXNwbGF5TmFt
ZSA9ICdSZWFjdERPTUNvbXBvbmVudCc7XG5cdFxuXHRSZWFjdERPTUNvbXBvbmVudC5NaXhpbiA9
IHtcblx0ICAvKipcblx0ICAgKiBHZW5lcmF0ZXMgcm9vdCB0YWcgbWFya3VwIHRoZW4gcmVjdXJz
ZXMuIFRoaXMgbWV0aG9kIGhhcyBzaWRlIGVmZmVjdHMgYW5kXG5cdCAgICogaXMgbm90IGlkZW1w
b3RlbnQuXG5cdCAgICpcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNh
Y3Rpb25cblx0ICAgKiBAcGFyYW0gez9SZWFjdERPTUNvbXBvbmVudH0gdGhlIHBhcmVudCBjb21w
b25lbnQgaW5zdGFuY2Vcblx0ICAgKiBAcGFyYW0gez9vYmplY3R9IGluZm8gYWJvdXQgdGhlIGhv
c3QgY29udGFpbmVyXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcblx0ICAgKiBAcmV0
dXJuIHtzdHJpbmd9IFRoZSBjb21wdXRlZCBtYXJrdXAuXG5cdCAgICovXG5cdCAgbW91bnRDb21w
b25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lcklu
Zm8sIGNvbnRleHQpIHtcblx0ICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSBnbG9iYWxJZENvdW50ZXIr
Kztcblx0ICAgIHRoaXMuX2RvbUlEID0gaG9zdENvbnRhaW5lckluZm8uX2lkQ291bnRlcisrO1xu
XHQgICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG5cdCAgICB0aGlzLl9ob3N0Q29u
dGFpbmVySW5mbyA9IGhvc3RDb250YWluZXJJbmZvO1xuXHRcblx0ICAgIHZhciBwcm9wcyA9IHRo
aXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXHRcblx0ICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7
XG5cdCAgICAgIGNhc2UgJ2F1ZGlvJzpcblx0ICAgICAgY2FzZSAnZm9ybSc6XG5cdCAgICAgIGNh
c2UgJ2lmcmFtZSc6XG5cdCAgICAgIGNhc2UgJ2ltZyc6XG5cdCAgICAgIGNhc2UgJ2xpbmsnOlxu
XHQgICAgICBjYXNlICdvYmplY3QnOlxuXHQgICAgICBjYXNlICdzb3VyY2UnOlxuXHQgICAgICBj
YXNlICd2aWRlbyc6XG5cdCAgICAgICAgdGhpcy5fd3JhcHBlclN0YXRlID0ge1xuXHQgICAgICAg
ICAgbGlzdGVuZXJzOiBudWxsXG5cdCAgICAgICAgfTtcblx0ICAgICAgICB0cmFuc2FjdGlvbi5n
ZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZlbnRzTG9jYWwsIHRoaXMp
O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICdpbnB1dCc6XG5cdCAgICAgICAgUmVh
Y3RET01JbnB1dC5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGhvc3RQYXJlbnQpO1xuXHQgICAg
ICAgIHByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpO1xuXHQg
ICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhY2tJbnB1
dFZhbHVlLCB0aGlzKTtcblx0ICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHko
KS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZlbnRzTG9jYWwsIHRoaXMpO1xuXHQgICAgICAgIGJyZWFr
O1xuXHQgICAgICBjYXNlICdvcHRpb24nOlxuXHQgICAgICAgIFJlYWN0RE9NT3B0aW9uLm1vdW50
V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7XG5cdCAgICAgICAgcHJvcHMgPSBSZWFj
dERPTU9wdGlvbi5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpO1xuXHQgICAgICAgIGJyZWFrO1xu
XHQgICAgICBjYXNlICdzZWxlY3QnOlxuXHQgICAgICAgIFJlYWN0RE9NU2VsZWN0Lm1vdW50V3Jh
cHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7XG5cdCAgICAgICAgcHJvcHMgPSBSZWFjdERP
TVNlbGVjdC5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpO1xuXHQgICAgICAgIHRyYW5zYWN0aW9u
LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhp
cyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3RleHRhcmVhJzpcblx0ICAgICAg
ICBSZWFjdERPTVRleHRhcmVhLm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7
XG5cdCAgICAgICAgcHJvcHMgPSBSZWFjdERPTVRleHRhcmVhLmdldEhvc3RQcm9wcyh0aGlzLCBw
cm9wcyk7XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZSh0cmFja0lucHV0VmFsdWUsIHRoaXMpO1xuXHQgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0
TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhpcyk7XG5cdCAg
ICAgICAgYnJlYWs7XG5cdCAgICB9XG5cdFxuXHQgICAgYXNzZXJ0VmFsaWRQcm9wcyh0aGlzLCBw
cm9wcyk7XG5cdFxuXHQgICAgLy8gV2UgY3JlYXRlIHRhZ3MgaW4gdGhlIG5hbWVzcGFjZSBvZiB0
aGVpciBwYXJlbnQgY29udGFpbmVyLCBleGNlcHQgSFRNTFxuXHQgICAgLy8gdGFncyBnZXQgbm8g
bmFtZXNwYWNlLlxuXHQgICAgdmFyIG5hbWVzcGFjZVVSSTtcblx0ICAgIHZhciBwYXJlbnRUYWc7
XG5cdCAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7XG5cdCAgICAgIG5hbWVzcGFjZVVSSSA9
IGhvc3RQYXJlbnQuX25hbWVzcGFjZVVSSTtcblx0ICAgICAgcGFyZW50VGFnID0gaG9zdFBhcmVu
dC5fdGFnO1xuXHQgICAgfSBlbHNlIGlmIChob3N0Q29udGFpbmVySW5mby5fdGFnKSB7XG5cdCAg
ICAgIG5hbWVzcGFjZVVSSSA9IGhvc3RDb250YWluZXJJbmZvLl9uYW1lc3BhY2VVUkk7XG5cdCAg
ICAgIHBhcmVudFRhZyA9IGhvc3RDb250YWluZXJJbmZvLl90YWc7XG5cdCAgICB9XG5cdCAgICBp
ZiAobmFtZXNwYWNlVVJJID09IG51bGwgfHwgbmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2Vz
LnN2ZyAmJiBwYXJlbnRUYWcgPT09ICdmb3JlaWdub2JqZWN0Jykge1xuXHQgICAgICBuYW1lc3Bh
Y2VVUkkgPSBET01OYW1lc3BhY2VzLmh0bWw7XG5cdCAgICB9XG5cdCAgICBpZiAobmFtZXNwYWNl
VVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpIHtcblx0ICAgICAgaWYgKHRoaXMuX3RhZyA9PT0g
J3N2ZycpIHtcblx0ICAgICAgICBuYW1lc3BhY2VVUkkgPSBET01OYW1lc3BhY2VzLnN2Zztcblx0
ICAgICAgfSBlbHNlIGlmICh0aGlzLl90YWcgPT09ICdtYXRoJykge1xuXHQgICAgICAgIG5hbWVz
cGFjZVVSSSA9IERPTU5hbWVzcGFjZXMubWF0aG1sO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAg
ICB0aGlzLl9uYW1lc3BhY2VVUkkgPSBuYW1lc3BhY2VVUkk7XG5cdFxuXHQgICAgaWYgKGZhbHNl
KSB7XG5cdCAgICAgIHZhciBwYXJlbnRJbmZvO1xuXHQgICAgICBpZiAoaG9zdFBhcmVudCAhPSBu
dWxsKSB7XG5cdCAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RQYXJlbnQuX2FuY2VzdG9ySW5mbztc
blx0ICAgICAgfSBlbHNlIGlmIChob3N0Q29udGFpbmVySW5mby5fdGFnKSB7XG5cdCAgICAgICAg
cGFyZW50SW5mbyA9IGhvc3RDb250YWluZXJJbmZvLl9hbmNlc3RvckluZm87XG5cdCAgICAgIH1c
blx0ICAgICAgaWYgKHBhcmVudEluZm8pIHtcblx0ICAgICAgICAvLyBwYXJlbnRJbmZvIHNob3Vs
ZCBhbHdheXMgYmUgcHJlc2VudCBleGNlcHQgZm9yIHRoZSB0b3AtbGV2ZWxcblx0ICAgICAgICAv
LyBjb21wb25lbnQgd2hlbiBzZXJ2ZXIgcmVuZGVyaW5nXG5cdCAgICAgICAgdmFsaWRhdGVET01O
ZXN0aW5nKHRoaXMuX3RhZywgbnVsbCwgdGhpcywgcGFyZW50SW5mbyk7XG5cdCAgICAgIH1cblx0
ICAgICAgdGhpcy5fYW5jZXN0b3JJbmZvID0gdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNl
c3RvckluZm8ocGFyZW50SW5mbywgdGhpcy5fdGFnLCB0aGlzKTtcblx0ICAgIH1cblx0XG5cdCAg
ICB2YXIgbW91bnRJbWFnZTtcblx0ICAgIGlmICh0cmFuc2FjdGlvbi51c2VDcmVhdGVFbGVtZW50
KSB7XG5cdCAgICAgIHZhciBvd25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5lckluZm8uX293bmVy
RG9jdW1lbnQ7XG5cdCAgICAgIHZhciBlbDtcblx0ICAgICAgaWYgKG5hbWVzcGFjZVVSSSA9PT0g
RE9NTmFtZXNwYWNlcy5odG1sKSB7XG5cdCAgICAgICAgaWYgKHRoaXMuX3RhZyA9PT0gJ3Njcmlw
dCcpIHtcblx0ICAgICAgICAgIC8vIENyZWF0ZSB0aGUgc2NyaXB0IHZpYSAuaW5uZXJIVE1MIHNv
IGl0cyBcInBhcnNlci1pbnNlcnRlZFwiIGZsYWcgaXNcblx0ICAgICAgICAgIC8vIHNldCB0byB0
cnVlIGFuZCBpdCBkb2VzIG5vdCBleGVjdXRlXG5cdCAgICAgICAgICB2YXIgZGl2ID0gb3duZXJE
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0ICAgICAgICAgIHZhciB0eXBlID0gdGhp
cy5fY3VycmVudEVsZW1lbnQudHlwZTtcblx0ICAgICAgICAgIGRpdi5pbm5lckhUTUwgPSAnPCcg
KyB0eXBlICsgJz48LycgKyB0eXBlICsgJz4nO1xuXHQgICAgICAgICAgZWwgPSBkaXYucmVtb3Zl
Q2hpbGQoZGl2LmZpcnN0Q2hpbGQpO1xuXHQgICAgICAgIH0gZWxzZSBpZiAocHJvcHMuaXMpIHtc
blx0ICAgICAgICAgIGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuX2N1cnJl
bnRFbGVtZW50LnR5cGUsIHByb3BzLmlzKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAg
ICAgLy8gU2VwYXJhdGUgZWxzZSBicmFuY2ggaW5zdGVhZCBvZiB1c2luZyBgcHJvcHMuaXMgfHwg
dW5kZWZpbmVkYCBhYm92ZSBiZWN1YXNlIG9mIGEgRmlyZWZveCBidWcuXG5cdCAgICAgICAgICAv
LyBTZWUgZGlzY3Vzc2lvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVs
bC82ODk2XG5cdCAgICAgICAgICAvLyBhbmQgZGlzY3Vzc2lvbiBpbiBodHRwczovL2J1Z3ppbGxh
Lm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc2MjQwXG5cdCAgICAgICAgICBlbCA9IG93
bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtcblx0
ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgZWwgPSBvd25lckRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUp
O1xuXHQgICAgICB9XG5cdCAgICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNoZU5vZGUo
dGhpcywgZWwpO1xuXHQgICAgICB0aGlzLl9mbGFncyB8PSBGbGFncy5oYXNDYWNoZWRDaGlsZE5v
ZGVzO1xuXHQgICAgICBpZiAoIXRoaXMuX2hvc3RQYXJlbnQpIHtcblx0ICAgICAgICBET01Qcm9w
ZXJ0eU9wZXJhdGlvbnMuc2V0QXR0cmlidXRlRm9yUm9vdChlbCk7XG5cdCAgICAgIH1cblx0ICAg
ICAgdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhudWxsLCBwcm9wcywgdHJhbnNhY3Rpb24pO1xu
XHQgICAgICB2YXIgbGF6eVRyZWUgPSBET01MYXp5VHJlZShlbCk7XG5cdCAgICAgIHRoaXMuX2Ny
ZWF0ZUluaXRpYWxDaGlsZHJlbih0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQsIGxhenlUcmVl
KTtcblx0ICAgICAgbW91bnRJbWFnZSA9IGxhenlUcmVlO1xuXHQgICAgfSBlbHNlIHtcblx0ICAg
ICAgdmFyIHRhZ09wZW4gPSB0aGlzLl9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJz
KHRyYW5zYWN0aW9uLCBwcm9wcyk7XG5cdCAgICAgIHZhciB0YWdDb250ZW50ID0gdGhpcy5fY3Jl
YXRlQ29udGVudE1hcmt1cCh0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQpO1xuXHQgICAgICBp
ZiAoIXRhZ0NvbnRlbnQgJiYgb21pdHRlZENsb3NlVGFnc1t0aGlzLl90YWddKSB7XG5cdCAgICAg
ICAgbW91bnRJbWFnZSA9IHRhZ09wZW4gKyAnLz4nO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAg
ICAgIG1vdW50SW1hZ2UgPSB0YWdPcGVuICsgJz4nICsgdGFnQ29udGVudCArICc8LycgKyB0aGlz
Ll9jdXJyZW50RWxlbWVudC50eXBlICsgJz4nO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQg
ICAgc3dpdGNoICh0aGlzLl90YWcpIHtcblx0ICAgICAgY2FzZSAnaW5wdXQnOlxuXHQgICAgICAg
IHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoaW5wdXRQb3N0TW91bnQs
IHRoaXMpO1xuXHQgICAgICAgIGlmIChwcm9wcy5hdXRvRm9jdXMpIHtcblx0ICAgICAgICAgIHRy
YW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9j
dXNET01Db21wb25lbnQsIHRoaXMpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBicmVhaztcblx0
ICAgICAgY2FzZSAndGV4dGFyZWEnOlxuXHQgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUodGV4dGFyZWFQb3N0TW91bnQsIHRoaXMpO1xuXHQgICAgICAgIGlm
IChwcm9wcy5hdXRvRm9jdXMpIHtcblx0ICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMp
O1xuXHQgICAgICAgIH1cblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAnc2VsZWN0Jzpc
blx0ICAgICAgICBpZiAocHJvcHMuYXV0b0ZvY3VzKSB7XG5cdCAgICAgICAgICB0cmFuc2FjdGlv
bi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29t
cG9uZW50LCB0aGlzKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNh
c2UgJ2J1dHRvbic6XG5cdCAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykge1xuXHQgICAgICAg
ICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShBdXRvRm9jdXNVdGls
cy5mb2N1c0RPTUNvbXBvbmVudCwgdGhpcyk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGJyZWFr
O1xuXHQgICAgICBjYXNlICdvcHRpb24nOlxuXHQgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0
TW91bnRSZWFkeSgpLmVucXVldWUob3B0aW9uUG9zdE1vdW50LCB0aGlzKTtcblx0ICAgICAgICBi
cmVhaztcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gbW91bnRJbWFnZTtcblx0ICB9LFxuXHRc
blx0ICAvKipcblx0ICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIG9wZW4gdGFnIGFuZCBhbGwg
YXR0cmlidXRlcy5cblx0ICAgKlxuXHQgICAqIFRoaXMgbWV0aG9kIGhhcyBzaWRlIGVmZmVjdHMg
YmVjYXVzZSBldmVudHMgZ2V0IHJlZ2lzdGVyZWQuXG5cdCAgICpcblx0ICAgKiBJdGVyYXRpbmcg
b3ZlciBvYmplY3QgcHJvcGVydGllcyBpcyBmYXN0ZXIgdGhhbiBpdGVyYXRpbmcgb3ZlciBhcnJh
eXMuXG5cdCAgICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9vYmotdnMtYXJyLWl0ZXJhdGlvblxu
XHQgICAqXG5cdCAgICogQHByaXZhdGVcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0
ICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcblx0ICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1
cCBvZiBvcGVuaW5nIHRhZy5cblx0ICAgKi9cblx0ICBfY3JlYXRlT3BlblRhZ01hcmt1cEFuZFB1
dExpc3RlbmVyczogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcm9wcykge1xuXHQgICAgdmFyIHJl
dCA9ICc8JyArIHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cdFxuXHQgICAgZm9yICh2YXIg
cHJvcEtleSBpbiBwcm9wcykge1xuXHQgICAgICBpZiAoIXByb3BzLmhhc093blByb3BlcnR5KHBy
b3BLZXkpKSB7XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHBy
b3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuXHQgICAgICBpZiAocHJvcFZhbHVlID09IG51bGwp
IHtcblx0ICAgICAgICBjb250aW51ZTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAocmVnaXN0cmF0
aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcblx0ICAgICAgICBpZiAo
cHJvcFZhbHVlKSB7XG5cdCAgICAgICAgICBlbnF1ZXVlUHV0TGlzdGVuZXIodGhpcywgcHJvcEtl
eSwgcHJvcFZhbHVlLCB0cmFuc2FjdGlvbik7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2Ug
e1xuXHQgICAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuXHQgICAgICAgICAgaWYgKHBy
b3BWYWx1ZSkge1xuXHQgICAgICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgICAgICAv
LyBTZWUgYF91cGRhdGVET01Qcm9wZXJ0aWVzYC4gc3R5bGUgYmxvY2tcblx0ICAgICAgICAgICAg
ICB0aGlzLl9wcmV2aW91c1N0eWxlID0gcHJvcFZhbHVlO1xuXHQgICAgICAgICAgICB9XG5cdCAg
ICAgICAgICAgIHByb3BWYWx1ZSA9IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gX2Fzc2lnbih7
fSwgcHJvcHMuc3R5bGUpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgcHJvcFZhbHVlID0g
Q1NTUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclN0eWxlcyhwcm9wVmFsdWUsIHRo
aXMpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgbWFya3VwID0gbnVsbDtcblx0ICAgICAg
ICBpZiAodGhpcy5fdGFnICE9IG51bGwgJiYgaXNDdXN0b21Db21wb25lbnQodGhpcy5fdGFnLCBw
cm9wcykpIHtcblx0ICAgICAgICAgIGlmICghUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHko
cHJvcEtleSkpIHtcblx0ICAgICAgICAgICAgbWFya3VwID0gRE9NUHJvcGVydHlPcGVyYXRpb25z
LmNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZShwcm9wS2V5LCBwcm9wVmFsdWUpO1xuXHQg
ICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICBtYXJrdXAgPSBET01Q
cm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yUHJvcGVydHkocHJvcEtleSwgcHJvcFZh
bHVlKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKG1hcmt1cCkge1xuXHQgICAgICAgICAg
cmV0ICs9ICcgJyArIG1hcmt1cDtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
XG5cdCAgICAvLyBGb3Igc3RhdGljIHBhZ2VzLCBubyBuZWVkIHRvIHB1dCBSZWFjdCBJRCBhbmQg
Y2hlY2tzdW0uIFNhdmVzIGxvdHMgb2Zcblx0ICAgIC8vIGJ5dGVzLlxuXHQgICAgaWYgKHRyYW5z
YWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7XG5cdCAgICAgIHJldHVybiByZXQ7XG5cdCAg
ICB9XG5cdFxuXHQgICAgaWYgKCF0aGlzLl9ob3N0UGFyZW50KSB7XG5cdCAgICAgIHJldCArPSAn
ICcgKyBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yUm9vdCgpO1xuXHQgICAg
fVxuXHQgICAgcmV0ICs9ICcgJyArIERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBG
b3JJRCh0aGlzLl9kb21JRCk7XG5cdCAgICByZXR1cm4gcmV0O1xuXHQgIH0sXG5cdFxuXHQgIC8q
KlxuXHQgICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgY29udGVudCBiZXR3ZWVuIHRoZSB0YWdz
LlxuXHQgICAqXG5cdCAgICogQHByaXZhdGVcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25c
blx0ICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gY29u
dGV4dFxuXHQgICAqIEByZXR1cm4ge3N0cmluZ30gQ29udGVudCBtYXJrdXAuXG5cdCAgICovXG5c
dCAgX2NyZWF0ZUNvbnRlbnRNYXJrdXA6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMsIGNv
bnRleHQpIHtcblx0ICAgIHZhciByZXQgPSAnJztcblx0XG5cdCAgICAvLyBJbnRlbnRpb25hbCB1
c2Ugb2YgIT0gdG8gYXZvaWQgY2F0Y2hpbmcgemVyby9mYWxzZS5cblx0ICAgIHZhciBpbm5lckhU
TUwgPSBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTDtcblx0ICAgIGlmIChpbm5lckhUTUwg
IT0gbnVsbCkge1xuXHQgICAgICBpZiAoaW5uZXJIVE1MLl9faHRtbCAhPSBudWxsKSB7XG5cdCAg
ICAgICAgcmV0ID0gaW5uZXJIVE1MLl9faHRtbDtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIHtc
blx0ICAgICAgdmFyIGNvbnRlbnRUb1VzZSA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIHByb3BzLmNo
aWxkcmVuXSA/IHByb3BzLmNoaWxkcmVuIDogbnVsbDtcblx0ICAgICAgdmFyIGNoaWxkcmVuVG9V
c2UgPSBjb250ZW50VG9Vc2UgIT0gbnVsbCA/IG51bGwgOiBwcm9wcy5jaGlsZHJlbjtcblx0ICAg
ICAgaWYgKGNvbnRlbnRUb1VzZSAhPSBudWxsKSB7XG5cdCAgICAgICAgLy8gVE9ETzogVmFsaWRh
dGUgdGhhdCB0ZXh0IGlzIGFsbG93ZWQgYXMgYSBjaGlsZCBvZiB0aGlzIG5vZGVcblx0ICAgICAg
ICByZXQgPSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIoY29udGVudFRvVXNlKTtcblx0ICAg
ICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxk
RGV2LmNhbGwodGhpcywgY29udGVudFRvVXNlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxz
ZSBpZiAoY2hpbGRyZW5Ub1VzZSAhPSBudWxsKSB7XG5cdCAgICAgICAgdmFyIG1vdW50SW1hZ2Vz
ID0gdGhpcy5tb3VudENoaWxkcmVuKGNoaWxkcmVuVG9Vc2UsIHRyYW5zYWN0aW9uLCBjb250ZXh0
KTtcblx0ICAgICAgICByZXQgPSBtb3VudEltYWdlcy5qb2luKCcnKTtcblx0ICAgICAgfVxuXHQg
ICAgfVxuXHQgICAgaWYgKG5ld2xpbmVFYXRpbmdUYWdzW3RoaXMuX3RhZ10gJiYgcmV0LmNoYXJB
dCgwKSA9PT0gJ1xcbicpIHtcblx0ICAgICAgLy8gdGV4dC9odG1sIGlnbm9yZXMgdGhlIGZpcnN0
IGNoYXJhY3RlciBpbiB0aGVzZSB0YWdzIGlmIGl0J3MgYSBuZXdsaW5lXG5cdCAgICAgIC8vIFBy
ZWZlciB0byBicmVhayBhcHBsaWNhdGlvbi94bWwgb3ZlciB0ZXh0L2h0bWwgKGZvciBub3cpIGJ5
IGFkZGluZ1xuXHQgICAgICAvLyBhIG5ld2xpbmUgc3BlY2lmaWNhbGx5IHRvIGdldCBlYXRlbiBi
eSB0aGUgcGFyc2VyLiAoQWx0ZXJuYXRlbHkgZm9yXG5cdCAgICAgIC8vIHRleHRhcmVhcywgcmVw
bGFjaW5nIFwiXlxcblwiIHdpdGggXCJcXHJcXG5cIiBkb2Vzbid0IGdldCBlYXRlbiwgYW5kIHRo
ZSBmaXJzdFxuXHQgICAgICAvLyBcXHIgaXMgbm9ybWFsaXplZCBvdXQgYnkgSFRNTFRleHRBcmVh
RWxlbWVudCN2YWx1ZS4pXG5cdCAgICAgIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0
bWwtcG9seWdsb3QvI25ld2xpbmVzLWluLXRleHRhcmVhLWFuZC1wcmU+XG5cdCAgICAgIC8vIFNl
ZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI2VsZW1lbnQtcmVzdHJp
Y3Rpb25zPlxuXHQgICAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50
YXguaHRtbCNuZXdsaW5lcz5cblx0ICAgICAgLy8gU2VlOiBQYXJzaW5nIG9mIFwidGV4dGFyZWFc
IiBcImxpc3RpbmdcIiBhbmQgXCJwcmVcIiBlbGVtZW50c1xuXHQgICAgICAvLyAgZnJvbSA8aHR0
cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keT5c
blx0ICAgICAgcmV0dXJuICdcXG4nICsgcmV0O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0
dXJuIHJldDtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBfY3JlYXRlSW5pdGlhbENoaWxkcmVu
OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByb3BzLCBjb250ZXh0LCBsYXp5VHJlZSkge1xuXHQg
ICAgLy8gSW50ZW50aW9uYWwgdXNlIG9mICE9IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFsc2Uu
XG5cdCAgICB2YXIgaW5uZXJIVE1MID0gcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7XG5c
dCAgICBpZiAoaW5uZXJIVE1MICE9IG51bGwpIHtcblx0ICAgICAgaWYgKGlubmVySFRNTC5fX2h0
bWwgIT0gbnVsbCkge1xuXHQgICAgICAgIERPTUxhenlUcmVlLnF1ZXVlSFRNTChsYXp5VHJlZSwg
aW5uZXJIVE1MLl9faHRtbCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHZh
ciBjb250ZW50VG9Vc2UgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBwcm9wcy5jaGlsZHJlbl0gPyBw
cm9wcy5jaGlsZHJlbiA6IG51bGw7XG5cdCAgICAgIHZhciBjaGlsZHJlblRvVXNlID0gY29udGVu
dFRvVXNlICE9IG51bGwgPyBudWxsIDogcHJvcHMuY2hpbGRyZW47XG5cdCAgICAgIC8vIFRPRE86
IFZhbGlkYXRlIHRoYXQgdGV4dCBpcyBhbGxvd2VkIGFzIGEgY2hpbGQgb2YgdGhpcyBub2RlXG5c
dCAgICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkge1xuXHQgICAgICAgIC8vIEF2b2lkIHNl
dHRpbmcgdGV4dENvbnRlbnQgd2hlbiB0aGUgdGV4dCBpcyBlbXB0eS4gSW4gSUUxMSBzZXR0aW5n
XG5cdCAgICAgICAgLy8gdGV4dENvbnRlbnQgb24gYSB0ZXh0IGFyZWEgd2lsbCBjYXVzZSB0aGUg
cGxhY2Vob2xkZXIgdG8gbm90XG5cdCAgICAgICAgLy8gc2hvdyB3aXRoaW4gdGhlIHRleHRhcmVh
IHVudGlsIGl0IGhhcyBiZWVuIGZvY3VzZWQgYW5kIGJsdXJyZWQgYWdhaW4uXG5cdCAgICAgICAg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy82NzMxI2lzc3VlY29t
bWVudC0yNTQ4NzQ1NTNcblx0ICAgICAgICBpZiAoY29udGVudFRvVXNlICE9PSAnJykge1xuXHQg
ICAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVu
dENoaWxkRGV2LmNhbGwodGhpcywgY29udGVudFRvVXNlKTtcblx0ICAgICAgICAgIH1cblx0ICAg
ICAgICAgIERPTUxhenlUcmVlLnF1ZXVlVGV4dChsYXp5VHJlZSwgY29udGVudFRvVXNlKTtcblx0
ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5Ub1VzZSAhPSBudWxsKSB7XG5c
dCAgICAgICAgdmFyIG1vdW50SW1hZ2VzID0gdGhpcy5tb3VudENoaWxkcmVuKGNoaWxkcmVuVG9V
c2UsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG1vdW50SW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICBET01MYXp5VHJlZS5xdWV1
ZUNoaWxkKGxhenlUcmVlLCBtb3VudEltYWdlc1tpXSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9
XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogUmVjZWl2ZXMgYSBuZXh0IGVs
ZW1lbnQgYW5kIHVwZGF0ZXMgdGhlIGNvbXBvbmVudC5cblx0ICAgKlxuXHQgICAqIEBpbnRlcm5h
bFxuXHQgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudFxuXHQgICAqIEBwYXJh
bSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0
aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG5cdCAgICov
XG5cdCAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRFbGVtZW50LCB0cmFuc2FjdGlv
biwgY29udGV4dCkge1xuXHQgICAgdmFyIHByZXZFbGVtZW50ID0gdGhpcy5fY3VycmVudEVsZW1l
bnQ7XG5cdCAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRFbGVtZW50O1xuXHQgICAgdGhp
cy51cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCwg
Y29udGV4dCk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogVXBkYXRlcyBhIERPTSBjb21w
b25lbnQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQgYW5kXG5cdCAgICogYXR0
YWNoZWQgdG8gdGhlIERPTS4gUmVjb25jaWxlcyB0aGUgcm9vdCBET00gbm9kZSwgdGhlbiByZWN1
cnNlcy5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0g
dHJhbnNhY3Rpb25cblx0ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gcHJldkVsZW1lbnRcblx0
ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnRcblx0ICAgKiBAaW50ZXJuYWxc
blx0ICAgKiBAb3ZlcnJpZGFibGVcblx0ICAgKi9cblx0ICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0
aW9uICh0cmFuc2FjdGlvbiwgcHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0KSB7XG5c
dCAgICB2YXIgbGFzdFByb3BzID0gcHJldkVsZW1lbnQucHJvcHM7XG5cdCAgICB2YXIgbmV4dFBy
b3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cdFxuXHQgICAgc3dpdGNoICh0aGlz
Ll90YWcpIHtcblx0ICAgICAgY2FzZSAnaW5wdXQnOlxuXHQgICAgICAgIGxhc3RQcm9wcyA9IFJl
YWN0RE9NSW5wdXQuZ2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG5cdCAgICAgICAgbmV4
dFByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJvcHModGhpcywgbmV4dFByb3BzKTtcblx0
ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAnb3B0aW9uJzpcblx0ICAgICAgICBsYXN0UHJv
cHMgPSBSZWFjdERPTU9wdGlvbi5nZXRIb3N0UHJvcHModGhpcywgbGFzdFByb3BzKTtcblx0ICAg
ICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTU9wdGlvbi5nZXRIb3N0UHJvcHModGhpcywgbmV4dFBy
b3BzKTtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAnc2VsZWN0Jzpcblx0ICAgICAg
ICBsYXN0UHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXRIb3N0UHJvcHModGhpcywgbGFzdFByb3Bz
KTtcblx0ICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXRIb3N0UHJvcHModGhp
cywgbmV4dFByb3BzKTtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndGV4dGFyZWEn
OlxuXHQgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0SG9zdFByb3BzKHRo
aXMsIGxhc3RQcm9wcyk7XG5cdCAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01UZXh0YXJlYS5n
ZXRIb3N0UHJvcHModGhpcywgbmV4dFByb3BzKTtcblx0ICAgICAgICBicmVhaztcblx0ICAgIH1c
blx0XG5cdCAgICBhc3NlcnRWYWxpZFByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG5cdCAgICB0aGlz
Ll91cGRhdGVET01Qcm9wZXJ0aWVzKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbik7
XG5cdCAgICB0aGlzLl91cGRhdGVET01DaGlsZHJlbihsYXN0UHJvcHMsIG5leHRQcm9wcywgdHJh
bnNhY3Rpb24sIGNvbnRleHQpO1xuXHRcblx0ICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG5cdCAg
ICAgIGNhc2UgJ2lucHV0Jzpcblx0ICAgICAgICAvLyBVcGRhdGUgdGhlIHdyYXBwZXIgYXJvdW5k
IGlucHV0cyAqYWZ0ZXIqIHVwZGF0aW5nIHByb3BzLiBUaGlzIGhhcyB0b1xuXHQgICAgICAgIC8v
IGhhcHBlbiBhZnRlciBgX3VwZGF0ZURPTVByb3BlcnRpZXNgLiBPdGhlcndpc2UgSFRNTDUgaW5w
dXQgdmFsaWRhdGlvbnNcblx0ICAgICAgICAvLyByYWlzZSB3YXJuaW5ncyBhbmQgcHJldmVudCB0
aGUgbmV3IHZhbHVlIGZyb20gYmVpbmcgYXNzaWduZWQuXG5cdCAgICAgICAgUmVhY3RET01JbnB1
dC51cGRhdGVXcmFwcGVyKHRoaXMpO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0
ZXh0YXJlYSc6XG5cdCAgICAgICAgUmVhY3RET01UZXh0YXJlYS51cGRhdGVXcmFwcGVyKHRoaXMp
O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICdzZWxlY3QnOlxuXHQgICAgICAgIC8v
IDxzZWxlY3Q+IHZhbHVlIHVwZGF0ZSBuZWVkcyB0byBvY2N1ciBhZnRlciA8b3B0aW9uPiBjaGls
ZHJlblxuXHQgICAgICAgIC8vIHJlY29uY2lsaWF0aW9uXG5cdCAgICAgICAgdHJhbnNhY3Rpb24u
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwb3N0VXBkYXRlU2VsZWN0V3JhcHBlciwgdGhp
cyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAg
ICogUmVjb25jaWxlcyB0aGUgcHJvcGVydGllcyBieSBkZXRlY3RpbmcgZGlmZmVyZW5jZXMgaW4g
cHJvcGVydHkgdmFsdWVzIGFuZFxuXHQgICAqIHVwZGF0aW5nIHRoZSBET00gYXMgbmVjZXNzYXJ5
LiBUaGlzIGZ1bmN0aW9uIGlzIHByb2JhYmx5IHRoZSBzaW5nbGUgbW9zdFxuXHQgICAqIGNyaXRp
Y2FsIHBhdGggZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi5cblx0ICAgKlxuXHQgICAqIFRP
RE86IEJlbmNobWFyayB3aGV0aGVyIGNoZWNraW5nIGZvciBjaGFuZ2VkIHZhbHVlcyBpbiBtZW1v
cnkgYWN0dWFsbHlcblx0ICAgKiAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZSAoZXNwZWNpYWxs
eSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudHMpLlxuXHQgICAqIFRPRE86IEJlbmNobWFy
ayB0aGUgZWZmZWN0cyBvZiBwdXR0aW5nIHRoaXMgYXQgdGhlIHRvcCBzaW5jZSA5OSUgb2YgcHJv
cHNcblx0ICAgKiAgICAgICBkbyBub3QgY2hhbmdlIGZvciBhIGdpdmVuIHJlY29uY2lsaWF0aW9u
LlxuXHQgICAqIFRPRE86IEJlbmNobWFyayBhcmVhcyB0aGF0IGNhbiBiZSBpbXByb3ZlZCB3aXRo
IGNhY2hpbmcuXG5cdCAgICpcblx0ICAgKiBAcHJpdmF0ZVxuXHQgICAqIEBwYXJhbSB7b2JqZWN0
fSBsYXN0UHJvcHNcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG5cdCAgICogQHBh
cmFtIHs/RE9NRWxlbWVudH0gbm9kZVxuXHQgICAqL1xuXHQgIF91cGRhdGVET01Qcm9wZXJ0aWVz
OiBmdW5jdGlvbiAobGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9uKSB7XG5cdCAgICB2
YXIgcHJvcEtleTtcblx0ICAgIHZhciBzdHlsZU5hbWU7XG5cdCAgICB2YXIgc3R5bGVVcGRhdGVz
O1xuXHQgICAgZm9yIChwcm9wS2V5IGluIGxhc3RQcm9wcykge1xuXHQgICAgICBpZiAobmV4dFBy
b3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpIHx8ICFsYXN0UHJvcHMuaGFzT3duUHJvcGVydHko
cHJvcEtleSkgfHwgbGFzdFByb3BzW3Byb3BLZXldID09IG51bGwpIHtcblx0ICAgICAgICBjb250
aW51ZTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAocHJvcEtleSA9PT0gU1RZTEUpIHtcblx0ICAg
ICAgICB2YXIgbGFzdFN0eWxlID0gdGhpcy5fcHJldmlvdXNTdHlsZUNvcHk7XG5cdCAgICAgICAg
Zm9yIChzdHlsZU5hbWUgaW4gbGFzdFN0eWxlKSB7XG5cdCAgICAgICAgICBpZiAobGFzdFN0eWxl
Lmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHtcblx0ICAgICAgICAgICAgc3R5bGVVcGRhdGVz
ID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuXHQgICAgICAgICAgICBzdHlsZVVwZGF0ZXNbc3R5bGVO
YW1lXSA9ICcnO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlzLl9w
cmV2aW91c1N0eWxlQ29weSA9IG51bGw7XG5cdCAgICAgIH0gZWxzZSBpZiAocmVnaXN0cmF0aW9u
TmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcblx0ICAgICAgICBpZiAobGFz
dFByb3BzW3Byb3BLZXldKSB7XG5cdCAgICAgICAgICAvLyBPbmx5IGNhbGwgZGVsZXRlTGlzdGVu
ZXIgaWYgdGhlcmUgd2FzIGEgbGlzdGVuZXIgcHJldmlvdXNseSBvclxuXHQgICAgICAgICAgLy8g
ZWxzZSB3aWxsRGVsZXRlTGlzdGVuZXIgZ2V0cyBjYWxsZWQgd2hlbiB0aGVyZSB3YXNuJ3QgYWN0
dWFsbHkgYVxuXHQgICAgICAgICAgLy8gbGlzdGVuZXIgKGUuZy4sIG9uQ2xpY2s9e251bGx9KVxu
XHQgICAgICAgICAgZGVsZXRlTGlzdGVuZXIodGhpcywgcHJvcEtleSk7XG5cdCAgICAgICAgfVxu
XHQgICAgICB9IGVsc2UgaWYgKGlzQ3VzdG9tQ29tcG9uZW50KHRoaXMuX3RhZywgbGFzdFByb3Bz
KSkge1xuXHQgICAgICAgIGlmICghUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcEtl
eSkpIHtcblx0ICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvckF0
dHJpYnV0ZShnZXROb2RlKHRoaXMpLCBwcm9wS2V5KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0g
ZWxzZSBpZiAoRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wS2V5XSB8fCBET01Qcm9wZXJ0eS5p
c0N1c3RvbUF0dHJpYnV0ZShwcm9wS2V5KSkge1xuXHQgICAgICAgIERPTVByb3BlcnR5T3BlcmF0
aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGdldE5vZGUodGhpcyksIHByb3BLZXkpO1xuXHQg
ICAgICB9XG5cdCAgICB9XG5cdCAgICBmb3IgKHByb3BLZXkgaW4gbmV4dFByb3BzKSB7XG5cdCAg
ICAgIHZhciBuZXh0UHJvcCA9IG5leHRQcm9wc1twcm9wS2V5XTtcblx0ICAgICAgdmFyIGxhc3RQ
cm9wID0gcHJvcEtleSA9PT0gU1RZTEUgPyB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA6IGxhc3RQ
cm9wcyAhPSBudWxsID8gbGFzdFByb3BzW3Byb3BLZXldIDogdW5kZWZpbmVkO1xuXHQgICAgICBp
ZiAoIW5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSB8fCBuZXh0UHJvcCA9PT0gbGFz
dFByb3AgfHwgbmV4dFByb3AgPT0gbnVsbCAmJiBsYXN0UHJvcCA9PSBudWxsKSB7XG5cdCAgICAg
ICAgY29udGludWU7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHByb3BLZXkgPT09IFNUWUxFKSB7
XG5cdCAgICAgICAgaWYgKG5leHRQcm9wKSB7XG5cdCAgICAgICAgICBpZiAoZmFsc2UpIHtcblx0
ICAgICAgICAgICAgY2hlY2tBbmRXYXJuRm9yTXV0YXRlZFN0eWxlKHRoaXMuX3ByZXZpb3VzU3R5
bGVDb3B5LCB0aGlzLl9wcmV2aW91c1N0eWxlLCB0aGlzKTtcblx0ICAgICAgICAgICAgdGhpcy5f
cHJldmlvdXNTdHlsZSA9IG5leHRQcm9wO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgbmV4
dFByb3AgPSB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IF9hc3NpZ24oe30sIG5leHRQcm9wKTtc
blx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkg
PSBudWxsO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAobGFzdFByb3ApIHtcblx0ICAgICAg
ICAgIC8vIFVuc2V0IHN0eWxlcyBvbiBgbGFzdFByb3BgIGJ1dCBub3Qgb24gYG5leHRQcm9wYC5c
blx0ICAgICAgICAgIGZvciAoc3R5bGVOYW1lIGluIGxhc3RQcm9wKSB7XG5cdCAgICAgICAgICAg
IGlmIChsYXN0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpICYmICghbmV4dFByb3AgfHwg
IW5leHRQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpKSB7XG5cdCAgICAgICAgICAgICAg
c3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuXHQgICAgICAgICAgICAgIHN0eWxl
VXBkYXRlc1tzdHlsZU5hbWVdID0gJyc7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH1c
blx0ICAgICAgICAgIC8vIFVwZGF0ZSBzdHlsZXMgdGhhdCBjaGFuZ2VkIHNpbmNlIGBsYXN0UHJv
cGAuXG5cdCAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBuZXh0UHJvcCkge1xuXHQgICAgICAg
ICAgICBpZiAobmV4dFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSAmJiBsYXN0UHJvcFtz
dHlsZU5hbWVdICE9PSBuZXh0UHJvcFtzdHlsZU5hbWVdKSB7XG5cdCAgICAgICAgICAgICAgc3R5
bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuXHQgICAgICAgICAgICAgIHN0eWxlVXBk
YXRlc1tzdHlsZU5hbWVdID0gbmV4dFByb3Bbc3R5bGVOYW1lXTtcblx0ICAgICAgICAgICAgfVxu
XHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAvLyBSZWxpZXMg
b24gYHVwZGF0ZVN0eWxlc0J5SURgIG5vdCBtdXRhdGluZyBgc3R5bGVVcGRhdGVzYC5cblx0ICAg
ICAgICAgIHN0eWxlVXBkYXRlcyA9IG5leHRQcm9wO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBl
bHNlIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkg
e1xuXHQgICAgICAgIGlmIChuZXh0UHJvcCkge1xuXHQgICAgICAgICAgZW5xdWV1ZVB1dExpc3Rl
bmVyKHRoaXMsIHByb3BLZXksIG5leHRQcm9wLCB0cmFuc2FjdGlvbik7XG5cdCAgICAgICAgfSBl
bHNlIGlmIChsYXN0UHJvcCkge1xuXHQgICAgICAgICAgZGVsZXRlTGlzdGVuZXIodGhpcywgcHJv
cEtleSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2UgaWYgKGlzQ3VzdG9tQ29tcG9uZW50
KHRoaXMuX3RhZywgbmV4dFByb3BzKSkge1xuXHQgICAgICAgIGlmICghUkVTRVJWRURfUFJPUFMu
aGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcblx0ICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0
aW9ucy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShnZXROb2RlKHRoaXMpLCBwcm9wS2V5LCBuZXh0UHJv
cCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LnByb3BlcnRp
ZXNbcHJvcEtleV0gfHwgRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUocHJvcEtleSkpIHtc
blx0ICAgICAgICB2YXIgbm9kZSA9IGdldE5vZGUodGhpcyk7XG5cdCAgICAgICAgLy8gSWYgd2Un
cmUgdXBkYXRpbmcgdG8gbnVsbCBvciB1bmRlZmluZWQsIHdlIHNob3VsZCByZW1vdmUgdGhlIHBy
b3BlcnR5XG5cdCAgICAgICAgLy8gZnJvbSB0aGUgRE9NIG5vZGUgaW5zdGVhZCBvZiBpbmFkdmVy
dGVudGx5IHNldHRpbmcgdG8gYSBzdHJpbmcuIFRoaXNcblx0ICAgICAgICAvLyBicmluZ3MgdXMg
aW4gbGluZSB3aXRoIHRoZSBzYW1lIGJlaGF2aW9yIHdlIGhhdmUgb24gaW5pdGlhbCByZW5kZXIu
XG5cdCAgICAgICAgaWYgKG5leHRQcm9wICE9IG51bGwpIHtcblx0ICAgICAgICAgIERPTVByb3Bl
cnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5KG5vZGUsIHByb3BLZXksIG5leHRQcm9w
KTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25z
LmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwgcHJvcEtleSk7XG5cdCAgICAgICAgfVxuXHQg
ICAgICB9XG5cdCAgICB9XG5cdCAgICBpZiAoc3R5bGVVcGRhdGVzKSB7XG5cdCAgICAgIENTU1By
b3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclN0eWxlcyhnZXROb2RlKHRoaXMpLCBzdHlsZVVw
ZGF0ZXMsIHRoaXMpO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlY29u
Y2lsZXMgdGhlIGNoaWxkcmVuIHdpdGggdGhlIHZhcmlvdXMgcHJvcGVydGllcyB0aGF0IGFmZmVj
dCB0aGVcblx0ICAgKiBjaGlsZHJlbiBjb250ZW50LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtv
YmplY3R9IGxhc3RQcm9wc1xuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcblx0ICAg
KiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICog
QHBhcmFtIHtvYmplY3R9IGNvbnRleHRcblx0ICAgKi9cblx0ICBfdXBkYXRlRE9NQ2hpbGRyZW46
IGZ1bmN0aW9uIChsYXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtc
blx0ICAgIHZhciBsYXN0Q29udGVudCA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIGxhc3RQcm9wcy5j
aGlsZHJlbl0gPyBsYXN0UHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuXHQgICAgdmFyIG5leHRDb250
ZW50ID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgbmV4dFByb3BzLmNoaWxkcmVuXSA/IG5leHRQcm9w
cy5jaGlsZHJlbiA6IG51bGw7XG5cdFxuXHQgICAgdmFyIGxhc3RIdG1sID0gbGFzdFByb3BzLmRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MICYmIGxhc3RQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRN
TC5fX2h0bWw7XG5cdCAgICB2YXIgbmV4dEh0bWwgPSBuZXh0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUwgJiYgbmV4dFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbDtcblx0
XG5cdCAgICAvLyBOb3RlIHRoZSB1c2Ugb2YgYCE9YCB3aGljaCBjaGVja3MgZm9yIG51bGwgb3Ig
dW5kZWZpbmVkLlxuXHQgICAgdmFyIGxhc3RDaGlsZHJlbiA9IGxhc3RDb250ZW50ICE9IG51bGwg
PyBudWxsIDogbGFzdFByb3BzLmNoaWxkcmVuO1xuXHQgICAgdmFyIG5leHRDaGlsZHJlbiA9IG5l
eHRDb250ZW50ICE9IG51bGwgPyBudWxsIDogbmV4dFByb3BzLmNoaWxkcmVuO1xuXHRcblx0ICAg
IC8vIElmIHdlJ3JlIHN3aXRjaGluZyBmcm9tIGNoaWxkcmVuIHRvIGNvbnRlbnQvaHRtbCBvciB2
aWNlIHZlcnNhLCByZW1vdmVcblx0ICAgIC8vIHRoZSBvbGQgY29udGVudFxuXHQgICAgdmFyIGxh
c3RIYXNDb250ZW50T3JIdG1sID0gbGFzdENvbnRlbnQgIT0gbnVsbCB8fCBsYXN0SHRtbCAhPSBu
dWxsO1xuXHQgICAgdmFyIG5leHRIYXNDb250ZW50T3JIdG1sID0gbmV4dENvbnRlbnQgIT0gbnVs
bCB8fCBuZXh0SHRtbCAhPSBudWxsO1xuXHQgICAgaWYgKGxhc3RDaGlsZHJlbiAhPSBudWxsICYm
IG5leHRDaGlsZHJlbiA9PSBudWxsKSB7XG5cdCAgICAgIHRoaXMudXBkYXRlQ2hpbGRyZW4obnVs
bCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHQgICAgfSBlbHNlIGlmIChsYXN0SGFzQ29udGVu
dE9ySHRtbCAmJiAhbmV4dEhhc0NvbnRlbnRPckh0bWwpIHtcblx0ICAgICAgdGhpcy51cGRhdGVU
ZXh0Q29udGVudCgnJyk7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIFJlYWN0SW5z
dHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKHRoaXMuX2RlYnVnSUQsIFtdKTtc
blx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIGlmIChuZXh0Q29udGVudCAhPSBudWxsKSB7
XG5cdCAgICAgIGlmIChsYXN0Q29udGVudCAhPT0gbmV4dENvbnRlbnQpIHtcblx0ICAgICAgICB0
aGlzLnVwZGF0ZVRleHRDb250ZW50KCcnICsgbmV4dENvbnRlbnQpO1xuXHQgICAgICAgIGlmIChm
YWxzZSkge1xuXHQgICAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0
aGlzLCBuZXh0Q29udGVudCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9IGVsc2Ug
aWYgKG5leHRIdG1sICE9IG51bGwpIHtcblx0ICAgICAgaWYgKGxhc3RIdG1sICE9PSBuZXh0SHRt
bCkge1xuXHQgICAgICAgIHRoaXMudXBkYXRlTWFya3VwKCcnICsgbmV4dEh0bWwpO1xuXHQgICAg
ICB9XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vblNldENoaWxkcmVuKHRoaXMuX2RlYnVnSUQsIFtdKTtcblx0ICAgICAgfVxu
XHQgICAgfSBlbHNlIGlmIChuZXh0Q2hpbGRyZW4gIT0gbnVsbCkge1xuXHQgICAgICBpZiAoZmFs
c2UpIHtcblx0ICAgICAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMs
IG51bGwpO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKG5leHRD
aGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQg
IGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gZ2V0Tm9kZSh0aGlzKTtc
blx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBEZXN0cm95cyBhbGwgZXZlbnQgcmVnaXN0cmF0
aW9ucyBmb3IgdGhpcyBpbnN0YW5jZS4gRG9lcyBub3QgcmVtb3ZlIGZyb21cblx0ICAgKiB0aGUg
RE9NLiBUaGF0IG11c3QgYmUgZG9uZSBieSB0aGUgcGFyZW50LlxuXHQgICAqXG5cdCAgICogQGlu
dGVybmFsXG5cdCAgICovXG5cdCAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHNhZmVseSkg
e1xuXHQgICAgc3dpdGNoICh0aGlzLl90YWcpIHtcblx0ICAgICAgY2FzZSAnYXVkaW8nOlxuXHQg
ICAgICBjYXNlICdmb3JtJzpcblx0ICAgICAgY2FzZSAnaWZyYW1lJzpcblx0ICAgICAgY2FzZSAn
aW1nJzpcblx0ICAgICAgY2FzZSAnbGluayc6XG5cdCAgICAgIGNhc2UgJ29iamVjdCc6XG5cdCAg
ICAgIGNhc2UgJ3NvdXJjZSc6XG5cdCAgICAgIGNhc2UgJ3ZpZGVvJzpcblx0ICAgICAgICB2YXIg
bGlzdGVuZXJzID0gdGhpcy5fd3JhcHBlclN0YXRlLmxpc3RlbmVycztcblx0ICAgICAgICBpZiAo
bGlzdGVuZXJzKSB7XG5cdCAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5s
ZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgICBsaXN0ZW5lcnNbaV0ucmVtb3ZlKCk7XG5cdCAg
ICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICdp
bnB1dCc6XG5cdCAgICAgIGNhc2UgJ3RleHRhcmVhJzpcblx0ICAgICAgICBpbnB1dFZhbHVlVHJh
Y2tpbmcuc3RvcFRyYWNraW5nKHRoaXMpO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNl
ICdodG1sJzpcblx0ICAgICAgY2FzZSAnaGVhZCc6XG5cdCAgICAgIGNhc2UgJ2JvZHknOlxuXHQg
ICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbXBvbmVudHMgbGlrZSA8aHRtbD4gPGhlYWQ+IGFu
ZCA8Ym9keT4gY2FuJ3QgYmUgcmVtb3ZlZCBvciBhZGRlZFxuXHQgICAgICAgICAqIGVhc2lseSBp
biBhIGNyb3NzLWJyb3dzZXIgd2F5LCBob3dldmVyIGl0J3MgdmFsdWFibGUgdG8gYmUgYWJsZSB0
b1xuXHQgICAgICAgICAqIHRha2UgYWR2YW50YWdlIG9mIFJlYWN0J3MgcmVjb25jaWxpYXRpb24g
Zm9yIHN0eWxpbmcgYW5kIDx0aXRsZT5cblx0ICAgICAgICAgKiBtYW5hZ2VtZW50LiBTbyB3ZSBq
dXN0IGRvY3VtZW50IGl0IGFuZCB0aHJvdyBpbiBkYW5nZXJvdXMgY2FzZXMuXG5cdCAgICAgICAg
ICovXG5cdCAgICAgICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICc8JXM+IHRy
aWVkIHRvIHVubW91bnQuIEJlY2F1c2Ugb2YgY3Jvc3MtYnJvd3NlciBxdWlya3MgaXQgaXMgaW1w
b3NzaWJsZSB0byB1bm1vdW50IHNvbWUgdG9wLWxldmVsIGNvbXBvbmVudHMgKGVnIDxodG1sPiwg
PGhlYWQ+LCBhbmQgPGJvZHk+KSByZWxpYWJseSBhbmQgZWZmaWNpZW50bHkuIFRvIGZpeCB0aGlz
LCBoYXZlIGEgc2luZ2xlIHRvcC1sZXZlbCBjb21wb25lbnQgdGhhdCBuZXZlciB1bm1vdW50cyBy
ZW5kZXIgdGhlc2UgZWxlbWVudHMuJywgdGhpcy5fdGFnKSA6IF9wcm9kSW52YXJpYW50KCc2Nics
IHRoaXMuX3RhZykgOiB2b2lkIDA7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICB9XG5cdFxuXHQg
ICAgdGhpcy51bm1vdW50Q2hpbGRyZW4oc2FmZWx5KTtcblx0ICAgIFJlYWN0RE9NQ29tcG9uZW50
VHJlZS51bmNhY2hlTm9kZSh0aGlzKTtcblx0ICAgIEV2ZW50UGx1Z2luSHViLmRlbGV0ZUFsbExp
c3RlbmVycyh0aGlzKTtcblx0ICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSAwO1xuXHQgICAgdGhpcy5f
ZG9tSUQgPSAwO1xuXHQgICAgdGhpcy5fd3JhcHBlclN0YXRlID0gbnVsbDtcblx0XG5cdCAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0
aGlzLCBudWxsKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBnZXRQdWJsaWNJbnN0YW5jZTog
ZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIGdldE5vZGUodGhpcyk7XG5cdCAgfVxuXHR9O1xu
XHRcblx0X2Fzc2lnbihSZWFjdERPTUNvbXBvbmVudC5wcm90b3R5cGUsIFJlYWN0RE9NQ29tcG9u
ZW50Lk1peGluLCBSZWFjdE11bHRpQ2hpbGQuTWl4aW4pO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMg
PSBSZWFjdERPTUNvbXBvbmVudDtcblxuLyoqKi8gfSxcbi8qIDEzOSAqL1xuLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0dmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IF9fd2VicGFja19yZXF1aXJlX18oNDkp
O1xuXHRcblx0dmFyIERPQ19OT0RFX1RZUEUgPSA5O1xuXHRcblx0ZnVuY3Rpb24gUmVhY3RET01D
b250YWluZXJJbmZvKHRvcExldmVsV3JhcHBlciwgbm9kZSkge1xuXHQgIHZhciBpbmZvID0ge1xu
XHQgICAgX3RvcExldmVsV3JhcHBlcjogdG9wTGV2ZWxXcmFwcGVyLFxuXHQgICAgX2lkQ291bnRl
cjogMSxcblx0ICAgIF9vd25lckRvY3VtZW50OiBub2RlID8gbm9kZS5ub2RlVHlwZSA9PT0gRE9D
X05PREVfVFlQRSA/IG5vZGUgOiBub2RlLm93bmVyRG9jdW1lbnQgOiBudWxsLFxuXHQgICAgX25v
ZGU6IG5vZGUsXG5cdCAgICBfdGFnOiBub2RlID8gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
IDogbnVsbCxcblx0ICAgIF9uYW1lc3BhY2VVUkk6IG5vZGUgPyBub2RlLm5hbWVzcGFjZVVSSSA6
IG51bGxcblx0ICB9O1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgaW5mby5fYW5jZXN0b3JJbmZv
ID0gbm9kZSA/IHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZvKG51bGwsIGlu
Zm8uX3RhZywgbnVsbCkgOiBudWxsO1xuXHQgIH1cblx0ICByZXR1cm4gaW5mbztcblx0fVxuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbnRhaW5lckluZm87XG5cbi8qKiovIH0sXG4v
KiAxNDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNzaWduID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg0KTtcblx0XG5cdHZhciBET01MYXp5VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18o
MTQpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1
KTtcblx0XG5cdHZhciBSZWFjdERPTUVtcHR5Q29tcG9uZW50ID0gZnVuY3Rpb24gKGluc3RhbnRp
YXRlKSB7XG5cdCAgLy8gUmVhY3RDb21wb3NpdGVDb21wb25lbnQgdXNlcyB0aGlzOlxuXHQgIHRo
aXMuX2N1cnJlbnRFbGVtZW50ID0gbnVsbDtcblx0ICAvLyBSZWFjdERPTUNvbXBvbmVudFRyZWUg
dXNlcyB0aGVzZTpcblx0ICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7XG5cdCAgdGhpcy5faG9zdFBh
cmVudCA9IG51bGw7XG5cdCAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBudWxsO1xuXHQgIHRo
aXMuX2RvbUlEID0gMDtcblx0fTtcblx0X2Fzc2lnbihSZWFjdERPTUVtcHR5Q29tcG9uZW50LnBy
b3RvdHlwZSwge1xuXHQgIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhv
c3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7XG5cdCAgICB2YXIgZG9tSUQg
PSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVyKys7XG5cdCAgICB0aGlzLl9kb21JRCA9IGRv
bUlEO1xuXHQgICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG5cdCAgICB0aGlzLl9o
b3N0Q29udGFpbmVySW5mbyA9IGhvc3RDb250YWluZXJJbmZvO1xuXHRcblx0ICAgIHZhciBub2Rl
VmFsdWUgPSAnIHJlYWN0LWVtcHR5OiAnICsgdGhpcy5fZG9tSUQgKyAnICc7XG5cdCAgICBpZiAo
dHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkge1xuXHQgICAgICB2YXIgb3duZXJEb2N1bWVu
dCA9IGhvc3RDb250YWluZXJJbmZvLl9vd25lckRvY3VtZW50O1xuXHQgICAgICB2YXIgbm9kZSA9
IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChub2RlVmFsdWUpO1xuXHQgICAgICBSZWFjdERP
TUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKHRoaXMsIG5vZGUpO1xuXHQgICAgICByZXR1cm4g
RE9NTGF6eVRyZWUobm9kZSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBpZiAodHJhbnNhY3Rp
b24ucmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcblx0ICAgICAgICAvLyBOb3JtYWxseSB3ZSdkIGlu
c2VydCBhIGNvbW1lbnQgbm9kZSwgYnV0IHNpbmNlIHRoaXMgaXMgYSBzaXR1YXRpb25cblx0ICAg
ICAgICAvLyB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXIgKHN0YXRpYyBwYWdlcyksIHdlIGNh
biBzaW1wbHkgcmV0dXJuXG5cdCAgICAgICAgLy8gbm90aGluZy5cblx0ICAgICAgICByZXR1cm4g
Jyc7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuICc8IS0tJyArIG5vZGVWYWx1ZSArICctLT4n
O1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKCkge30s
XG5cdCAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBSZWFjdERPTUNv
bXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKTtcblx0ICB9LFxuXHQgIHVubW91
bnRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51
bmNhY2hlTm9kZSh0aGlzKTtcblx0ICB9XG5cdH0pO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdERPTUVtcHR5Q29tcG9uZW50O1xuXG4vKioqLyB9LFxuLyogMTQxICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUmVhY3RE
T01GZWF0dXJlRmxhZ3MgPSB7XG5cdCAgdXNlQ3JlYXRlRWxlbWVudDogdHJ1ZSxcblx0ICB1c2VG
aWJlcjogZmFsc2Vcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RET01GZWF0dXJl
RmxhZ3M7XG5cbi8qKiovIH0sXG4vKiAxNDIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBE
T01DaGlsZHJlbk9wZXJhdGlvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KTtcblx0dmFyIFJl
YWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdFxuXHQvKipc
blx0ICogT3BlcmF0aW9ucyB1c2VkIHRvIHByb2Nlc3MgdXBkYXRlcyB0byBET00gbm9kZXMuXG5c
dCAqL1xuXHR2YXIgUmVhY3RET01JRE9wZXJhdGlvbnMgPSB7XG5cdCAgLyoqXG5cdCAgICogVXBk
YXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJpZXMgb2YgdXBk
YXRlcy5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7YXJyYXk8b2JqZWN0Pn0gdXBkYXRlcyBMaXN0
IG9mIHVwZGF0ZSBjb25maWd1cmF0aW9ucy5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0
ICBkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IGZ1bmN0aW9uIChwYXJlbnRJbnN0
LCB1cGRhdGVzKSB7XG5cdCAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRO
b2RlRnJvbUluc3RhbmNlKHBhcmVudEluc3QpO1xuXHQgICAgRE9NQ2hpbGRyZW5PcGVyYXRpb25z
LnByb2Nlc3NVcGRhdGVzKG5vZGUsIHVwZGF0ZXMpO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gUmVhY3RET01JRE9wZXJhdGlvbnM7XG5cbi8qKiovIH0sXG4vKiAxNDMgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1
aXJlX18oMyksXG5cdCAgICBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5c
dHZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYwKTtcblx0
dmFyIExpbmtlZFZhbHVlVXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KTtcblx0dmFyIFJl
YWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBSZWFj
dFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXHRcblx0dmFyIGludmFyaWFudCA9
IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyKTtcblx0XG5cdHZhciBkaWRXYXJuVmFsdWVMaW5rID0gZmFsc2U7XG5cdHZhciBkaWRX
YXJuQ2hlY2tlZExpbmsgPSBmYWxzZTtcblx0dmFyIGRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSA9
IGZhbHNlO1xuXHR2YXIgZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCA9IGZhbHNlO1xuXHR2
YXIgZGlkV2FybkNvbnRyb2xsZWRUb1VuY29udHJvbGxlZCA9IGZhbHNlO1xuXHR2YXIgZGlkV2Fy
blVuY29udHJvbGxlZFRvQ29udHJvbGxlZCA9IGZhbHNlO1xuXHRcblx0ZnVuY3Rpb24gZm9yY2VV
cGRhdGVJZk1vdW50ZWQoKSB7XG5cdCAgaWYgKHRoaXMuX3Jvb3ROb2RlSUQpIHtcblx0ICAgIC8v
IERPTSBjb21wb25lbnQgaXMgc3RpbGwgbW91bnRlZDsgdXBkYXRlXG5cdCAgICBSZWFjdERPTUlu
cHV0LnVwZGF0ZVdyYXBwZXIodGhpcyk7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBpc0Nv
bnRyb2xsZWQocHJvcHMpIHtcblx0ICB2YXIgdXNlc0NoZWNrZWQgPSBwcm9wcy50eXBlID09PSAn
Y2hlY2tib3gnIHx8IHByb3BzLnR5cGUgPT09ICdyYWRpbyc7XG5cdCAgcmV0dXJuIHVzZXNDaGVj
a2VkID8gcHJvcHMuY2hlY2tlZCAhPSBudWxsIDogcHJvcHMudmFsdWUgIT0gbnVsbDtcblx0fVxu
XHRcblx0LyoqXG5cdCAqIEltcGxlbWVudHMgYW4gPGlucHV0PiBob3N0IGNvbXBvbmVudCB0aGF0
IGFsbG93cyBzZXR0aW5nIHRoZXNlIG9wdGlvbmFsXG5cdCAqIHByb3BzOiBgY2hlY2tlZGAsIGB2
YWx1ZWAsIGBkZWZhdWx0Q2hlY2tlZGAsIGFuZCBgZGVmYXVsdFZhbHVlYC5cblx0ICpcblx0ICog
SWYgYGNoZWNrZWRgIG9yIGB2YWx1ZWAgYXJlIG5vdCBzdXBwbGllZCAob3IgbnVsbC91bmRlZmlu
ZWQpLCB1c2VyIGFjdGlvbnNcblx0ICogdGhhdCBhZmZlY3QgdGhlIGNoZWNrZWQgc3RhdGUgb3Ig
dmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuXG5cdCAqXG5cdCAqIElm
IHRoZXkgYXJlIHN1cHBsaWVkIChhbmQgbm90IG51bGwvdW5kZWZpbmVkKSwgdGhlIHJlbmRlcmVk
IGVsZW1lbnQgd2lsbCBub3Rcblx0ICogdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50LiBJ
bnN0ZWFkLCB0aGUgcHJvcHMgbXVzdCBjaGFuZ2UgaW4gb3JkZXIgZm9yXG5cdCAqIHRoZSByZW5k
ZXJlZCBlbGVtZW50IHRvIGJlIHVwZGF0ZWQuXG5cdCAqXG5cdCAqIFRoZSByZW5kZXJlZCBlbGVt
ZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYXMgdW5jaGVja2VkIChvciBgZGVmYXVsdENoZWNrZWRg
KVxuXHQgKiB3aXRoIGFuIGVtcHR5IHZhbHVlIChvciBgZGVmYXVsdFZhbHVlYCkuXG5cdCAqXG5c
dCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9XRC1odG1sNS0yMDEyMTAyNS90aGUt
aW5wdXQtZWxlbWVudC5odG1sXG5cdCAqL1xuXHR2YXIgUmVhY3RET01JbnB1dCA9IHtcblx0ICBn
ZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuXHQgICAgdmFyIHZhbHVlID0g
TGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG5cdCAgICB2YXIgY2hlY2tlZCA9IExp
bmtlZFZhbHVlVXRpbHMuZ2V0Q2hlY2tlZChwcm9wcyk7XG5cdFxuXHQgICAgdmFyIGhvc3RQcm9w
cyA9IF9hc3NpZ24oe1xuXHQgICAgICAvLyBNYWtlIHN1cmUgd2Ugc2V0IC50eXBlIGJlZm9yZSBh
bnkgb3RoZXIgcHJvcGVydGllcyAoc2V0dGluZyAudmFsdWVcblx0ICAgICAgLy8gYmVmb3JlIC50
eXBlIG1lYW5zIC52YWx1ZSBpcyBsb3N0IGluIElFMTEgYW5kIGJlbG93KVxuXHQgICAgICB0eXBl
OiB1bmRlZmluZWQsXG5cdCAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBzZXQgLnN0ZXAgYmVmb3JlIC52
YWx1ZSAoc2V0dGluZyAudmFsdWUgYmVmb3JlIC5zdGVwXG5cdCAgICAgIC8vIG1lYW5zIC52YWx1
ZSBpcyByb3VuZGVkIG9uIG1vdW50LCBiYXNlZCB1cG9uIHN0ZXAgcHJlY2lzaW9uKVxuXHQgICAg
ICBzdGVwOiB1bmRlZmluZWQsXG5cdCAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBzZXQgLm1pbiAmIC5t
YXggYmVmb3JlIC52YWx1ZSAodG8gZW5zdXJlIHByb3BlciBvcmRlclxuXHQgICAgICAvLyBpbiBj
b3JuZXIgY2FzZXMgc3VjaCBhcyBtaW4gb3IgbWF4IGRlcml2aW5nIGZyb20gdmFsdWUsIGUuZy4g
SXNzdWUgIzcxNzApXG5cdCAgICAgIG1pbjogdW5kZWZpbmVkLFxuXHQgICAgICBtYXg6IHVuZGVm
aW5lZFxuXHQgICAgfSwgcHJvcHMsIHtcblx0ICAgICAgZGVmYXVsdENoZWNrZWQ6IHVuZGVmaW5l
ZCxcblx0ICAgICAgZGVmYXVsdFZhbHVlOiB1bmRlZmluZWQsXG5cdCAgICAgIHZhbHVlOiB2YWx1
ZSAhPSBudWxsID8gdmFsdWUgOiBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLFxuXHQg
ICAgICBjaGVja2VkOiBjaGVja2VkICE9IG51bGwgPyBjaGVja2VkIDogaW5zdC5fd3JhcHBlclN0
YXRlLmluaXRpYWxDaGVja2VkLFxuXHQgICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0YXRl
Lm9uQ2hhbmdlXG5cdCAgICB9KTtcblx0XG5cdCAgICByZXR1cm4gaG9zdFByb3BzO1xuXHQgIH0s
XG5cdFxuXHQgIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG5cdCAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgTGlua2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygnaW5w
dXQnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyKTtcblx0XG5cdCAgICAgIHZh
ciBvd25lciA9IGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcblx0XG5cdCAgICAgIGlmIChw
cm9wcy52YWx1ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlTGluaykge1xuXHQg
ICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZh
bHNlLCAnYHZhbHVlTGlua2AgcHJvcCBvbiBgaW5wdXRgIGlzIGRlcHJlY2F0ZWQ7IHNldCBgdmFs
dWVgIGFuZCBgb25DaGFuZ2VgIGluc3RlYWQuJykgOiB2b2lkIDA7XG5cdCAgICAgICAgZGlkV2Fy
blZhbHVlTGluayA9IHRydWU7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHByb3BzLmNoZWNrZWRM
aW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5DaGVja2VkTGluaykge1xuXHQgICAgICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYGNo
ZWNrZWRMaW5rYCBwcm9wIG9uIGBpbnB1dGAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5k
IGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDtcblx0ICAgICAgICBkaWRXYXJuQ2hlY2tl
ZExpbmsgPSB0cnVlO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChwcm9wcy5jaGVja2VkICE9PSB1
bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdENoZWNrZWQgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2Fy
bkNoZWNrZWREZWZhdWx0Q2hlY2tlZCkge1xuXHQgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMgY29udGFpbnMgYW4gaW5wdXQg
b2YgdHlwZSAlcyB3aXRoIGJvdGggY2hlY2tlZCBhbmQgZGVmYXVsdENoZWNrZWQgcHJvcHMuICcg
KyAnSW5wdXQgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xs
ZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIGNoZWNrZWQgcHJvcCwgb3IgdGhlIGRlZmF1bHRD
aGVja2VkIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBj
b250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBv
bmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNv
bnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21w
b25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDtcblx0ICAgICAgICBkaWRXYXJuQ2hlY2tlZERl
ZmF1bHRDaGVja2VkID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAocHJvcHMudmFsdWUg
IT09IHVuZGVmaW5lZCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZGlk
V2FyblZhbHVlRGVmYXVsdFZhbHVlKSB7XG5cdCAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBjb250YWlucyBhbiBpbnB1dCBv
ZiB0eXBlICVzIHdpdGggYm90aCB2YWx1ZSBhbmQgZGVmYXVsdFZhbHVlIHByb3BzLiAnICsgJ0lu
cHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcg
KyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHBy
b3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVk
IG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhl
c2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQt
Y29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnLCBw
cm9wcy50eXBlKSA6IHZvaWQgMDtcblx0ICAgICAgICBkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUg
PSB0cnVlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGRlZmF1bHRWYWx1ZSA9
IHByb3BzLmRlZmF1bHRWYWx1ZTtcblx0ICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHtcblx0ICAg
ICAgaW5pdGlhbENoZWNrZWQ6IHByb3BzLmNoZWNrZWQgIT0gbnVsbCA/IHByb3BzLmNoZWNrZWQg
OiBwcm9wcy5kZWZhdWx0Q2hlY2tlZCxcblx0ICAgICAgaW5pdGlhbFZhbHVlOiBwcm9wcy52YWx1
ZSAhPSBudWxsID8gcHJvcHMudmFsdWUgOiBkZWZhdWx0VmFsdWUsXG5cdCAgICAgIGxpc3RlbmVy
czogbnVsbCxcblx0ICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KSxcblx0
ICAgICAgY29udHJvbGxlZDogaXNDb250cm9sbGVkKHByb3BzKVxuXHQgICAgfTtcblx0ICB9LFxu
XHRcblx0ICB1cGRhdGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuXHQgICAgdmFyIHByb3Bz
ID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5c
dCAgICAgIHZhciBjb250cm9sbGVkID0gaXNDb250cm9sbGVkKHByb3BzKTtcblx0ICAgICAgdmFy
IG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXHRcblx0ICAgICAgaWYgKCFp
bnN0Ll93cmFwcGVyU3RhdGUuY29udHJvbGxlZCAmJiBjb250cm9sbGVkICYmICFkaWRXYXJuVW5j
b250cm9sbGVkVG9Db250cm9sbGVkKSB7XG5cdCAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBpcyBjaGFuZ2luZyBhbiB1bmNv
bnRyb2xsZWQgaW5wdXQgb2YgdHlwZSAlcyB0byBiZSBjb250cm9sbGVkLiAnICsgJ0lucHV0IGVs
ZW1lbnRzIHNob3VsZCBub3Qgc3dpdGNoIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWQg
KG9yIHZpY2UgdmVyc2EpLiAnICsgJ0RlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBv
ciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhl
IGNvbXBvbmVudC4gTW9yZSBpbmZvOiBodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29t
cG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnLCBwcm9w
cy50eXBlKSA6IHZvaWQgMDtcblx0ICAgICAgICBkaWRXYXJuVW5jb250cm9sbGVkVG9Db250cm9s
bGVkID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAoaW5zdC5fd3JhcHBlclN0YXRlLmNv
bnRyb2xsZWQgJiYgIWNvbnRyb2xsZWQgJiYgIWRpZFdhcm5Db250cm9sbGVkVG9VbmNvbnRyb2xs
ZWQpIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyhmYWxzZSwgJyVzIGlzIGNoYW5naW5nIGEgY29udHJvbGxlZCBpbnB1dCBvZiB0eXBl
ICVzIHRvIGJlIHVuY29udHJvbGxlZC4gJyArICdJbnB1dCBlbGVtZW50cyBzaG91bGQgbm90IHN3
aXRjaCBmcm9tIGNvbnRyb2xsZWQgdG8gdW5jb250cm9sbGVkIChvciB2aWNlIHZlcnNhKS4gJyAr
ICdEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIGlucHV0
ICcgKyAnZWxlbWVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuIE1vcmUgaW5m
bzogaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBvd25lciAmJiBv
d25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2b2lkIDA7XG5c
dCAgICAgICAgZGlkV2FybkNvbnRyb2xsZWRUb1VuY29udHJvbGxlZCA9IHRydWU7XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0XG5cdCAgICAvLyBUT0RPOiBTaG91bGRuJ3QgdGhpcyBiZSBnZXRDaGVj
a2VkKHByb3BzKT9cblx0ICAgIHZhciBjaGVja2VkID0gcHJvcHMuY2hlY2tlZDtcblx0ICAgIGlm
IChjaGVja2VkICE9IG51bGwpIHtcblx0ICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZh
bHVlRm9yUHJvcGVydHkoUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2Uo
aW5zdCksICdjaGVja2VkJywgY2hlY2tlZCB8fCBmYWxzZSk7XG5cdCAgICB9XG5cdFxuXHQgICAg
dmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0
KTtcblx0ICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xu
XHQgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcblx0ICAgICAgaWYgKHZhbHVlID09PSAwICYmIG5v
ZGUudmFsdWUgPT09ICcnKSB7XG5cdCAgICAgICAgbm9kZS52YWx1ZSA9ICcwJztcblx0ICAgICAg
ICAvLyBOb3RlOiBJRTkgcmVwb3J0cyBhIG51bWJlciBpbnB1dHMgYXMgJ3RleHQnLCBzbyBjaGVj
ayBwcm9wcyBpbnN0ZWFkLlxuXHQgICAgICB9IGVsc2UgaWYgKHByb3BzLnR5cGUgPT09ICdudW1i
ZXInKSB7XG5cdCAgICAgICAgLy8gU2ltdWxhdGUgYGlucHV0LnZhbHVlQXNOdW1iZXJgLiBJRTkg
ZG9lcyBub3Qgc3VwcG9ydCBpdFxuXHQgICAgICAgIHZhciB2YWx1ZUFzTnVtYmVyID0gcGFyc2VG
bG9hdChub2RlLnZhbHVlLCAxMCkgfHwgMDtcblx0XG5cdCAgICAgICAgaWYgKFxuXHQgICAgICAg
IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuXHQgICAgICAgIHZhbHVlICE9IHZhbHVlQXNO
dW1iZXIgfHxcblx0ICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcblx0ICAgICAg
ICB2YWx1ZSA9PSB2YWx1ZUFzTnVtYmVyICYmIG5vZGUudmFsdWUgIT0gdmFsdWUpIHtcblx0ICAg
ICAgICAgIC8vIENhc3QgYHZhbHVlYCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlz
IHNldCBjb3JyZWN0bHkuIFdoaWxlXG5cdCAgICAgICAgICAvLyBicm93c2VycyB0eXBpY2FsbHkg
ZG8gdGhpcyBhcyBuZWNlc3NhcnksIGpzZG9tIGRvZXNuJ3QuXG5cdCAgICAgICAgICBub2RlLnZh
bHVlID0gJycgKyB2YWx1ZTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSBpZiAobm9kZS52
YWx1ZSAhPT0gJycgKyB2YWx1ZSkge1xuXHQgICAgICAgIC8vIENhc3QgYHZhbHVlYCB0byBhIHN0
cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlzIHNldCBjb3JyZWN0bHkuIFdoaWxlXG5cdCAgICAg
ICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRvIHRoaXMgYXMgbmVjZXNzYXJ5LCBqc2RvbSBkb2Vz
bid0LlxuXHQgICAgICAgIG5vZGUudmFsdWUgPSAnJyArIHZhbHVlO1xuXHQgICAgICB9XG5cdCAg
ICB9IGVsc2Uge1xuXHQgICAgICBpZiAocHJvcHMudmFsdWUgPT0gbnVsbCAmJiBwcm9wcy5kZWZh
dWx0VmFsdWUgIT0gbnVsbCkge1xuXHQgICAgICAgIC8vIEluIENocm9tZSwgYXNzaWduaW5nIGRl
ZmF1bHRWYWx1ZSB0byBjZXJ0YWluIGlucHV0IHR5cGVzIHRyaWdnZXJzIGlucHV0IHZhbGlkYXRp
b24uXG5cdCAgICAgICAgLy8gRm9yIG51bWJlciBpbnB1dHMsIHRoZSBkaXNwbGF5IHZhbHVlIGxv
c2VzIHRyYWlsaW5nIGRlY2ltYWwgcG9pbnRzLiBGb3IgZW1haWwgaW5wdXRzLFxuXHQgICAgICAg
IC8vIENocm9tZSByYWlzZXMgXCJUaGUgc3BlY2lmaWVkIHZhbHVlIDx4PiBpcyBub3QgYSB2YWxp
ZCBlbWFpbCBhZGRyZXNzXCIuXG5cdCAgICAgICAgLy9cblx0ICAgICAgICAvLyBIZXJlIHdlIGNo
ZWNrIHRvIHNlZSBpZiB0aGUgZGVmYXVsdFZhbHVlIGhhcyBhY3R1YWxseSBjaGFuZ2VkLCBhdm9p
ZGluZyB0aGVzZSBwcm9ibGVtc1xuXHQgICAgICAgIC8vIHdoZW4gdGhlIHVzZXIgaXMgaW5wdXR0
aW5nIHRleHRcblx0ICAgICAgICAvL1xuXHQgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9m
YWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI1M1xuXHQgICAgICAgIGlmIChub2RlLmRlZmF1bHRWYWx1
ZSAhPT0gJycgKyBwcm9wcy5kZWZhdWx0VmFsdWUpIHtcblx0ICAgICAgICAgIG5vZGUuZGVmYXVs
dFZhbHVlID0gJycgKyBwcm9wcy5kZWZhdWx0VmFsdWU7XG5cdCAgICAgICAgfVxuXHQgICAgICB9
XG5cdCAgICAgIGlmIChwcm9wcy5jaGVja2VkID09IG51bGwgJiYgcHJvcHMuZGVmYXVsdENoZWNr
ZWQgIT0gbnVsbCkge1xuXHQgICAgICAgIG5vZGUuZGVmYXVsdENoZWNrZWQgPSAhIXByb3BzLmRl
ZmF1bHRDaGVja2VkO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgcG9zdE1v
dW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgIHZhciBwcm9wcyA9IGluc3QuX2N1
cnJlbnRFbGVtZW50LnByb3BzO1xuXHRcblx0ICAgIC8vIFRoaXMgaXMgaW4gcG9zdE1vdW50IGJl
Y2F1c2Ugd2UgbmVlZCBhY2Nlc3MgdG8gdGhlIERPTSBub2RlLCB3aGljaCBpcyBub3Rcblx0ICAg
IC8vIGF2YWlsYWJsZSB1bnRpbCBhZnRlciB0aGUgY29tcG9uZW50IGhhcyBtb3VudGVkLlxuXHQg
ICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShp
bnN0KTtcblx0XG5cdCAgICAvLyBEZXRhY2ggdmFsdWUgZnJvbSBkZWZhdWx0VmFsdWUuIFdlIHdv
bid0IGRvIGFueXRoaW5nIGlmIHdlJ3JlIHdvcmtpbmcgb25cblx0ICAgIC8vIHN1Ym1pdCBvciBy
ZXNldCBpbnB1dHMgYXMgdGhvc2UgdmFsdWVzICYgZGVmYXVsdFZhbHVlcyBhcmUgbGlua2VkLiBU
aGV5XG5cdCAgICAvLyBhcmUgbm90IHJlc2V0YWJsZSBub2RlcyBzbyB0aGlzIG9wZXJhdGlvbiBk
b2Vzbid0IG1hdHRlciBhbmQgYWN0dWFsbHlcblx0ICAgIC8vIHJlbW92ZXMgYnJvd3Nlci1kZWZh
dWx0IHZhbHVlcyAoZWcgXCJTdWJtaXQgUXVlcnlcIikgd2hlbiBubyB2YWx1ZSBpc1xuXHQgICAg
Ly8gcHJvdmlkZWQuXG5cdFxuXHQgICAgc3dpdGNoIChwcm9wcy50eXBlKSB7XG5cdCAgICAgIGNh
c2UgJ3N1Ym1pdCc6XG5cdCAgICAgIGNhc2UgJ3Jlc2V0Jzpcblx0ICAgICAgICBicmVhaztcblx0
ICAgICAgY2FzZSAnY29sb3InOlxuXHQgICAgICBjYXNlICdkYXRlJzpcblx0ICAgICAgY2FzZSAn
ZGF0ZXRpbWUnOlxuXHQgICAgICBjYXNlICdkYXRldGltZS1sb2NhbCc6XG5cdCAgICAgIGNhc2Ug
J21vbnRoJzpcblx0ICAgICAgY2FzZSAndGltZSc6XG5cdCAgICAgIGNhc2UgJ3dlZWsnOlxuXHQg
ICAgICAgIC8vIFRoaXMgZml4ZXMgdGhlIG5vLXNob3cgaXNzdWUgb24gaU9TIFNhZmFyaSBhbmQg
QW5kcm9pZCBDaHJvbWU6XG5cdCAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29r
L3JlYWN0L2lzc3Vlcy83MjMzXG5cdCAgICAgICAgbm9kZS52YWx1ZSA9ICcnO1xuXHQgICAgICAg
IG5vZGUudmFsdWUgPSBub2RlLmRlZmF1bHRWYWx1ZTtcblx0ICAgICAgICBicmVhaztcblx0ICAg
ICAgZGVmYXVsdDpcblx0ICAgICAgICBub2RlLnZhbHVlID0gbm9kZS52YWx1ZTtcblx0ICAgICAg
ICBicmVhaztcblx0ICAgIH1cblx0XG5cdCAgICAvLyBOb3JtYWxseSwgd2UnZCBqdXN0IGRvIGBu
b2RlLmNoZWNrZWQgPSBub2RlLmNoZWNrZWRgIHVwb24gaW5pdGlhbCBtb3VudCwgbGVzcyB0aGlz
IGJ1Z1xuXHQgICAgLy8gdGhpcyBpcyBuZWVkZWQgdG8gd29yayBhcm91bmQgYSBjaHJvbWUgYnVn
IHdoZXJlIHNldHRpbmcgZGVmYXVsdENoZWNrZWRcblx0ICAgIC8vIHdpbGwgc29tZXRpbWVzIGlu
Zmx1ZW5jZSB0aGUgdmFsdWUgb2YgY2hlY2tlZCAoZXZlbiBhZnRlciBkZXRhY2htZW50KS5cblx0
ICAgIC8vIFJlZmVyZW5jZTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lz
c3Vlcy9kZXRhaWw/aWQ9NjA4NDE2XG5cdCAgICAvLyBXZSBuZWVkIHRvIHRlbXBvcmFyaWx5IHVu
c2V0IG5hbWUgdG8gYXZvaWQgZGlzcnVwdGluZyByYWRpbyBidXR0b24gZ3JvdXBzLlxuXHQgICAg
dmFyIG5hbWUgPSBub2RlLm5hbWU7XG5cdCAgICBpZiAobmFtZSAhPT0gJycpIHtcblx0ICAgICAg
bm9kZS5uYW1lID0gJyc7XG5cdCAgICB9XG5cdCAgICBub2RlLmRlZmF1bHRDaGVja2VkID0gIW5v
ZGUuZGVmYXVsdENoZWNrZWQ7XG5cdCAgICBub2RlLmRlZmF1bHRDaGVja2VkID0gIW5vZGUuZGVm
YXVsdENoZWNrZWQ7XG5cdCAgICBpZiAobmFtZSAhPT0gJycpIHtcblx0ICAgICAgbm9kZS5uYW1l
ID0gbmFtZTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRmdW5jdGlvbiBfaGFuZGxlQ2hh
bmdlKGV2ZW50KSB7XG5cdCAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7
XG5cdFxuXHQgIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hh
bmdlKHByb3BzLCBldmVudCk7XG5cdFxuXHQgIC8vIEhlcmUgd2UgdXNlIGFzYXAgdG8gd2FpdCB1
bnRpbCBhbGwgdXBkYXRlcyBoYXZlIHByb3BhZ2F0ZWQsIHdoaWNoXG5cdCAgLy8gaXMgaW1wb3J0
YW50IHdoZW4gdXNpbmcgY29udHJvbGxlZCBjb21wb25lbnRzIHdpdGhpbiBsYXllcnM6XG5cdCAg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xNjk4XG5cdCAgUmVh
Y3RVcGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIHRoaXMpO1xuXHRcblx0ICB2YXIg
bmFtZSA9IHByb3BzLm5hbWU7XG5cdCAgaWYgKHByb3BzLnR5cGUgPT09ICdyYWRpbycgJiYgbmFt
ZSAhPSBudWxsKSB7XG5cdCAgICB2YXIgcm9vdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUu
Z2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKTtcblx0ICAgIHZhciBxdWVyeVJvb3QgPSByb290Tm9k
ZTtcblx0XG5cdCAgICB3aGlsZSAocXVlcnlSb290LnBhcmVudE5vZGUpIHtcblx0ICAgICAgcXVl
cnlSb290ID0gcXVlcnlSb290LnBhcmVudE5vZGU7XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gSWYg
YHJvb3ROb2RlLmZvcm1gIHdhcyBub24tbnVsbCwgdGhlbiB3ZSBjb3VsZCB0cnkgYGZvcm0uZWxl
bWVudHNgLFxuXHQgICAgLy8gYnV0IHRoYXQgc29tZXRpbWVzIGJlaGF2ZXMgc3RyYW5nZWx5IGlu
IElFOC4gV2UgY291bGQgYWxzbyB0cnkgdXNpbmdcblx0ICAgIC8vIGBmb3JtLmdldEVsZW1lbnRz
QnlOYW1lYCwgYnV0IHRoYXQgd2lsbCBvbmx5IHJldHVybiBkaXJlY3QgY2hpbGRyZW5cblx0ICAg
IC8vIGFuZCB3b24ndCBpbmNsdWRlIGlucHV0cyB0aGF0IHVzZSB0aGUgSFRNTDUgYGZvcm09YCBh
dHRyaWJ1dGUuIFNpbmNlXG5cdCAgICAvLyB0aGUgaW5wdXQgbWlnaHQgbm90IGV2ZW4gYmUgaW4g
YSBmb3JtLCBsZXQncyBqdXN0IHVzZSB0aGUgZ2xvYmFsXG5cdCAgICAvLyBgcXVlcnlTZWxlY3Rv
ckFsbGAgdG8gZW5zdXJlIHdlIGRvbid0IG1pc3MgYW55dGhpbmcuXG5cdCAgICB2YXIgZ3JvdXAg
PSBxdWVyeVJvb3QucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbbmFtZT0nICsgSlNPTi5zdHJpbmdp
ZnkoJycgKyBuYW1lKSArICddW3R5cGU9XCJyYWRpb1wiXScpO1xuXHRcblx0ICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZ3JvdXAubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgdmFyIG90aGVyTm9kZSA9
IGdyb3VwW2ldO1xuXHQgICAgICBpZiAob3RoZXJOb2RlID09PSByb290Tm9kZSB8fCBvdGhlck5v
ZGUuZm9ybSAhPT0gcm9vdE5vZGUuZm9ybSkge1xuXHQgICAgICAgIGNvbnRpbnVlO1xuXHQgICAg
ICB9XG5cdCAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBpZiByYWRpbyBidXR0b25zIHJlbmRlcmVk
IGJ5IGRpZmZlcmVudCBjb3BpZXMgb2YgUmVhY3Rcblx0ICAgICAgLy8gYW5kIHRoZSBzYW1lIG5h
bWUgYXJlIHJlbmRlcmVkIGludG8gdGhlIHNhbWUgZm9ybSAoc2FtZSBhcyAjMTkzOSkuXG5cdCAg
ICAgIC8vIFRoYXQncyBwcm9iYWJseSBva2F5OyB3ZSBkb24ndCBzdXBwb3J0IGl0IGp1c3QgYXMg
d2UgZG9uJ3Qgc3VwcG9ydFxuXHQgICAgICAvLyBtaXhpbmcgUmVhY3QgcmFkaW8gYnV0dG9ucyB3
aXRoIG5vbi1SZWFjdCBvbmVzLlxuXHQgICAgICB2YXIgb3RoZXJJbnN0YW5jZSA9IFJlYWN0RE9N
Q29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG90aGVyTm9kZSk7XG5cdCAgICAgICFv
dGhlckluc3RhbmNlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RET01JbnB1dDog
TWl4aW5nIFJlYWN0IGFuZCBub24tUmVhY3QgcmFkaW8gaW5wdXRzIHdpdGggdGhlIHNhbWUgYG5h
bWVgIGlzIG5vdCBzdXBwb3J0ZWQuJykgOiBfcHJvZEludmFyaWFudCgnOTAnKSA6IHZvaWQgMDtc
blx0ICAgICAgLy8gSWYgdGhpcyBpcyBhIGNvbnRyb2xsZWQgcmFkaW8gYnV0dG9uIGdyb3VwLCBm
b3JjaW5nIHRoZSBpbnB1dCB0aGF0XG5cdCAgICAgIC8vIHdhcyBwcmV2aW91c2x5IGNoZWNrZWQg
dG8gdXBkYXRlIHdpbGwgY2F1c2UgaXQgdG8gYmUgY29tZSByZS1jaGVja2VkXG5cdCAgICAgIC8v
IGFzIGFwcHJvcHJpYXRlLlxuXHQgICAgICBSZWFjdFVwZGF0ZXMuYXNhcChmb3JjZVVwZGF0ZUlm
TW91bnRlZCwgb3RoZXJJbnN0YW5jZSk7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICByZXR1cm4g
cmV0dXJuVmFsdWU7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RET01JbnB1dDtc
blxuLyoqKi8gfSxcbi8qIDE0NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9hc3NpZ24g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIFJlYWN0ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxNyk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDUpO1xuXHR2YXIgUmVhY3RET01TZWxlY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYy
KTtcblx0XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0dmFyIGRp
ZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4gPSBmYWxzZTtcblx0XG5cdGZ1bmN0aW9uIGZsYXR0
ZW5DaGlsZHJlbihjaGlsZHJlbikge1xuXHQgIHZhciBjb250ZW50ID0gJyc7XG5cdFxuXHQgIC8v
IEZsYXR0ZW4gY2hpbGRyZW4gYW5kIHdhcm4gaWYgdGhleSBhcmVuJ3Qgc3RyaW5ncyBvciBudW1i
ZXJzO1xuXHQgIC8vIGludmFsaWQgdHlwZXMgYXJlIGlnbm9yZWQuXG5cdCAgUmVhY3QuQ2hpbGRy
ZW4uZm9yRWFjaChjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG5cdCAgICBpZiAoY2hpbGQg
PT0gbnVsbCkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICBpZiAodHlwZW9mIGNo
aWxkID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY2hpbGQgPT09ICdudW1iZXInKSB7XG5cdCAgICAg
IGNvbnRlbnQgKz0gY2hpbGQ7XG5cdCAgICB9IGVsc2UgaWYgKCFkaWRXYXJuSW52YWxpZE9wdGlv
bkNoaWxkcmVuKSB7XG5cdCAgICAgIGRpZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4gPSB0cnVl
O1xuXHQgICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnT25seSBzdHJpbmdzIGFuZCBudW1i
ZXJzIGFyZSBzdXBwb3J0ZWQgYXMgPG9wdGlvbj4gY2hpbGRyZW4uJykgOiB2b2lkIDA7XG5cdCAg
ICB9XG5cdCAgfSk7XG5cdFxuXHQgIHJldHVybiBjb250ZW50O1xuXHR9XG5cdFxuXHQvKipcblx0
ICogSW1wbGVtZW50cyBhbiA8b3B0aW9uPiBob3N0IGNvbXBvbmVudCB0aGF0IHdhcm5zIHdoZW4g
YHNlbGVjdGVkYCBpcyBzZXQuXG5cdCAqL1xuXHR2YXIgUmVhY3RET01PcHRpb24gPSB7XG5cdCAg
bW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMsIGhvc3RQYXJlbnQpIHtcblx0ICAg
IC8vIFRPRE8gKHl1bmdzdGVycyk6IFJlbW92ZSBzdXBwb3J0IGZvciBgc2VsZWN0ZWRgIGluIDxv
cHRpb24+LlxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLnNlbGVjdGVkID09IG51bGwsICdVc2Ug
dGhlIGBkZWZhdWx0VmFsdWVgIG9yIGB2YWx1ZWAgcHJvcHMgb24gPHNlbGVjdD4gaW5zdGVhZCBv
ZiAnICsgJ3NldHRpbmcgYHNlbGVjdGVkYCBvbiA8b3B0aW9uPi4nKSA6IHZvaWQgMDtcblx0ICAg
IH1cblx0XG5cdCAgICAvLyBMb29rIHVwIHdoZXRoZXIgdGhpcyBvcHRpb24gaXMgJ3NlbGVjdGVk
J1xuXHQgICAgdmFyIHNlbGVjdFZhbHVlID0gbnVsbDtcblx0ICAgIGlmIChob3N0UGFyZW50ICE9
IG51bGwpIHtcblx0ICAgICAgdmFyIHNlbGVjdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG5cdFxuXHQg
ICAgICBpZiAoc2VsZWN0UGFyZW50Ll90YWcgPT09ICdvcHRncm91cCcpIHtcblx0ICAgICAgICBz
ZWxlY3RQYXJlbnQgPSBzZWxlY3RQYXJlbnQuX2hvc3RQYXJlbnQ7XG5cdCAgICAgIH1cblx0XG5c
dCAgICAgIGlmIChzZWxlY3RQYXJlbnQgIT0gbnVsbCAmJiBzZWxlY3RQYXJlbnQuX3RhZyA9PT0g
J3NlbGVjdCcpIHtcblx0ICAgICAgICBzZWxlY3RWYWx1ZSA9IFJlYWN0RE9NU2VsZWN0LmdldFNl
bGVjdFZhbHVlQ29udGV4dChzZWxlY3RQYXJlbnQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxu
XHQgICAgLy8gSWYgdGhlIHZhbHVlIGlzIG51bGwgKGUuZy4sIG5vIHNwZWNpZmllZCB2YWx1ZSBv
ciBhZnRlciBpbml0aWFsIG1vdW50KVxuXHQgICAgLy8gb3IgbWlzc2luZyAoZS5nLiwgZm9yIDxk
YXRhbGlzdD4pLCB3ZSBkb24ndCBjaGFuZ2UgcHJvcHMuc2VsZWN0ZWRcblx0ICAgIHZhciBzZWxl
Y3RlZCA9IG51bGw7XG5cdCAgICBpZiAoc2VsZWN0VmFsdWUgIT0gbnVsbCkge1xuXHQgICAgICB2
YXIgdmFsdWU7XG5cdCAgICAgIGlmIChwcm9wcy52YWx1ZSAhPSBudWxsKSB7XG5cdCAgICAgICAg
dmFsdWUgPSBwcm9wcy52YWx1ZSArICcnO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHZh
bHVlID0gZmxhdHRlbkNoaWxkcmVuKHByb3BzLmNoaWxkcmVuKTtcblx0ICAgICAgfVxuXHQgICAg
ICBzZWxlY3RlZCA9IGZhbHNlO1xuXHQgICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RWYWx1
ZSkpIHtcblx0ICAgICAgICAvLyBtdWx0aXBsZVxuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc2VsZWN0VmFsdWUubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgIGlmICgnJyArIHNlbGVj
dFZhbHVlW2ldID09PSB2YWx1ZSkge1xuXHQgICAgICAgICAgICBzZWxlY3RlZCA9IHRydWU7XG5c
dCAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAg
fSBlbHNlIHtcblx0ICAgICAgICBzZWxlY3RlZCA9ICcnICsgc2VsZWN0VmFsdWUgPT09IHZhbHVl
O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaW5zdC5fd3JhcHBlclN0YXRlID0geyBz
ZWxlY3RlZDogc2VsZWN0ZWQgfTtcblx0ICB9LFxuXHRcblx0ICBwb3N0TW91bnRXcmFwcGVyOiBm
dW5jdGlvbiAoaW5zdCkge1xuXHQgICAgLy8gdmFsdWU9XCJcIiBzaG91bGQgbWFrZSBhIHZhbHVl
IGF0dHJpYnV0ZSAoIzYyMTkpXG5cdCAgICB2YXIgcHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVu
dC5wcm9wcztcblx0ICAgIGlmIChwcm9wcy52YWx1ZSAhPSBudWxsKSB7XG5cdCAgICAgIHZhciBu
b2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG5c
dCAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsIHByb3BzLnZhbHVlKTtcblx0ICAgIH1c
blx0ICB9LFxuXHRcblx0ICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xu
XHQgICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24oeyBzZWxlY3RlZDogdW5kZWZpbmVkLCBjaGls
ZHJlbjogdW5kZWZpbmVkIH0sIHByb3BzKTtcblx0XG5cdCAgICAvLyBSZWFkIHN0YXRlIG9ubHkg
ZnJvbSBpbml0aWFsIG1vdW50IGJlY2F1c2UgPHNlbGVjdD4gdXBkYXRlcyB2YWx1ZVxuXHQgICAg
Ly8gbWFudWFsbHk7IHdlIG5lZWQgdGhlIGluaXRpYWwgc3RhdGUgb25seSBmb3Igc2VydmVyIHJl
bmRlcmluZ1xuXHQgICAgaWYgKGluc3QuX3dyYXBwZXJTdGF0ZS5zZWxlY3RlZCAhPSBudWxsKSB7
XG5cdCAgICAgIGhvc3RQcm9wcy5zZWxlY3RlZCA9IGluc3QuX3dyYXBwZXJTdGF0ZS5zZWxlY3Rl
ZDtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgY29udGVudCA9IGZsYXR0ZW5DaGlsZHJlbihwcm9w
cy5jaGlsZHJlbik7XG5cdFxuXHQgICAgaWYgKGNvbnRlbnQpIHtcblx0ICAgICAgaG9zdFByb3Bz
LmNoaWxkcmVuID0gY29udGVudDtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gaG9zdFByb3Bz
O1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RET01PcHRpb247XG5c
bi8qKiovIH0sXG4vKiAxNDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBFeGVjdXRpb25F
bnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5cdFxuXHR2YXIgZ2V0Tm9kZUZv
ckNoYXJhY3Rlck9mZnNldCA9IF9fd2VicGFja19yZXF1aXJlX18oMTgzKTtcblx0dmFyIGdldFRl
eHRDb250ZW50QWNjZXNzb3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDczKTtcblx0XG5cdC8qKlxu
XHQgKiBXaGlsZSBgaXNDb2xsYXBzZWRgIGlzIGF2YWlsYWJsZSBvbiB0aGUgU2VsZWN0aW9uIG9i
amVjdCBhbmQgYGNvbGxhcHNlZGBcblx0ICogaXMgYXZhaWxhYmxlIG9uIHRoZSBSYW5nZSBvYmpl
Y3QsIElFMTEgc29tZXRpbWVzIGdldHMgdGhlbSB3cm9uZy5cblx0ICogSWYgdGhlIGFuY2hvci9m
b2N1cyBub2RlcyBhbmQgb2Zmc2V0cyBhcmUgdGhlIHNhbWUsIHRoZSByYW5nZSBpcyBjb2xsYXBz
ZWQuXG5cdCAqL1xuXHRmdW5jdGlvbiBpc0NvbGxhcHNlZChhbmNob3JOb2RlLCBhbmNob3JPZmZz
ZXQsIGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQpIHtcblx0ICByZXR1cm4gYW5jaG9yTm9kZSA9PT0g
Zm9jdXNOb2RlICYmIGFuY2hvck9mZnNldCA9PT0gZm9jdXNPZmZzZXQ7XG5cdH1cblx0XG5cdC8q
KlxuXHQgKiBHZXQgdGhlIGFwcHJvcHJpYXRlIGFuY2hvciBhbmQgZm9jdXMgbm9kZS9vZmZzZXQg
cGFpcnMgZm9yIElFLlxuXHQgKlxuXHQgKiBUaGUgY2F0Y2ggaGVyZSBpcyB0aGF0IElFJ3Mgc2Vs
ZWN0aW9uIEFQSSBkb2Vzbid0IHByb3ZpZGUgaW5mb3JtYXRpb25cblx0ICogYWJvdXQgd2hldGhl
ciB0aGUgc2VsZWN0aW9uIGlzIGZvcndhcmQgb3IgYmFja3dhcmQsIHNvIHdlIGhhdmUgdG9cblx0
ICogYmVoYXZlIGFzIHRob3VnaCBpdCdzIGFsd2F5cyBmb3J3YXJkLlxuXHQgKlxuXHQgKiBJRSB0
ZXh0IGRpZmZlcnMgZnJvbSBtb2Rlcm4gc2VsZWN0aW9uIGluIHRoYXQgaXQgYmVoYXZlcyBhcyB0
aG91Z2hcblx0ICogYmxvY2sgZWxlbWVudHMgZW5kIHdpdGggYSBuZXcgbGluZS4gVGhpcyBtZWFu
cyBjaGFyYWN0ZXIgb2Zmc2V0cyB3aWxsXG5cdCAqIGRpZmZlciBiZXR3ZWVuIHRoZSB0d28gQVBJ
cy5cblx0ICpcblx0ICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG5cdCAqIEByZXR1cm4ge29i
amVjdH1cblx0ICovXG5cdGZ1bmN0aW9uIGdldElFT2Zmc2V0cyhub2RlKSB7XG5cdCAgdmFyIHNl
bGVjdGlvbiA9IGRvY3VtZW50LnNlbGVjdGlvbjtcblx0ICB2YXIgc2VsZWN0ZWRSYW5nZSA9IHNl
bGVjdGlvbi5jcmVhdGVSYW5nZSgpO1xuXHQgIHZhciBzZWxlY3RlZExlbmd0aCA9IHNlbGVjdGVk
UmFuZ2UudGV4dC5sZW5ndGg7XG5cdFxuXHQgIC8vIER1cGxpY2F0ZSBzZWxlY3Rpb24gc28gd2Ug
Y2FuIG1vdmUgcmFuZ2Ugd2l0aG91dCBicmVha2luZyB1c2VyIHNlbGVjdGlvbi5cblx0ICB2YXIg
ZnJvbVN0YXJ0ID0gc2VsZWN0ZWRSYW5nZS5kdXBsaWNhdGUoKTtcblx0ICBmcm9tU3RhcnQubW92
ZVRvRWxlbWVudFRleHQobm9kZSk7XG5cdCAgZnJvbVN0YXJ0LnNldEVuZFBvaW50KCdFbmRUb1N0
YXJ0Jywgc2VsZWN0ZWRSYW5nZSk7XG5cdFxuXHQgIHZhciBzdGFydE9mZnNldCA9IGZyb21TdGFy
dC50ZXh0Lmxlbmd0aDtcblx0ICB2YXIgZW5kT2Zmc2V0ID0gc3RhcnRPZmZzZXQgKyBzZWxlY3Rl
ZExlbmd0aDtcblx0XG5cdCAgcmV0dXJuIHtcblx0ICAgIHN0YXJ0OiBzdGFydE9mZnNldCxcblx0
ICAgIGVuZDogZW5kT2Zmc2V0XG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7
RE9NRWxlbWVudH0gbm9kZVxuXHQgKiBAcmV0dXJuIHs/b2JqZWN0fVxuXHQgKi9cblx0ZnVuY3Rp
b24gZ2V0TW9kZXJuT2Zmc2V0cyhub2RlKSB7XG5cdCAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5n
ZXRTZWxlY3Rpb24gJiYgd2luZG93LmdldFNlbGVjdGlvbigpO1xuXHRcblx0ICBpZiAoIXNlbGVj
dGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMCkge1xuXHQgICAgcmV0dXJuIG51bGw7
XG5cdCAgfVxuXHRcblx0ICB2YXIgYW5jaG9yTm9kZSA9IHNlbGVjdGlvbi5hbmNob3JOb2RlO1xu
XHQgIHZhciBhbmNob3JPZmZzZXQgPSBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0O1xuXHQgIHZhciBm
b2N1c05vZGUgPSBzZWxlY3Rpb24uZm9jdXNOb2RlO1xuXHQgIHZhciBmb2N1c09mZnNldCA9IHNl
bGVjdGlvbi5mb2N1c09mZnNldDtcblx0XG5cdCAgdmFyIGN1cnJlbnRSYW5nZSA9IHNlbGVjdGlv
bi5nZXRSYW5nZUF0KDApO1xuXHRcblx0ICAvLyBJbiBGaXJlZm94LCByYW5nZS5zdGFydENvbnRh
aW5lciBhbmQgcmFuZ2UuZW5kQ29udGFpbmVyIGNhbiBiZSBcImFub255bW91c1xuXHQgIC8vIGRp
dnNcIiwgZS5nLiB0aGUgdXAvZG93biBidXR0b25zIG9uIGFuIDxpbnB1dCB0eXBlPVwibnVtYmVy
XCI+LiBBbm9ueW1vdXNcblx0ICAvLyBkaXZzIGRvIG5vdCBzZWVtIHRvIGV4cG9zZSBwcm9wZXJ0
aWVzLCB0cmlnZ2VyaW5nIGEgXCJQZXJtaXNzaW9uIGRlbmllZFxuXHQgIC8vIGVycm9yXCIgaWYg
YW55IG9mIGl0cyBwcm9wZXJ0aWVzIGFyZSBhY2Nlc3NlZC4gVGhlIG9ubHkgc2VlbWluZ2x5IHBv
c3NpYmxlXG5cdCAgLy8gd2F5IHRvIGF2b2lkIGVycm9yaW5nIGlzIHRvIGFjY2VzcyBhIHByb3Bl
cnR5IHRoYXQgdHlwaWNhbGx5IHdvcmtzIGZvclxuXHQgIC8vIG5vbi1hbm9ueW1vdXMgZGl2cyBh
bmQgY2F0Y2ggYW55IGVycm9yIHRoYXQgbWF5IG90aGVyd2lzZSBhcmlzZS4gU2VlXG5cdCAgLy8g
aHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NDI3XG5cdCAg
dHJ5IHtcblx0ICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC1leHByZXNzaW9ucyAqL1xu
XHQgICAgY3VycmVudFJhbmdlLnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlO1xuXHQgICAgY3VycmVu
dFJhbmdlLmVuZENvbnRhaW5lci5ub2RlVHlwZTtcblx0ICAgIC8qIGVzbGludC1lbmFibGUgbm8t
dW51c2VkLWV4cHJlc3Npb25zICovXG5cdCAgfSBjYXRjaCAoZSkge1xuXHQgICAgcmV0dXJuIG51
bGw7XG5cdCAgfVxuXHRcblx0ICAvLyBJZiB0aGUgbm9kZSBhbmQgb2Zmc2V0IHZhbHVlcyBhcmUg
dGhlIHNhbWUsIHRoZSBzZWxlY3Rpb24gaXMgY29sbGFwc2VkLlxuXHQgIC8vIGBTZWxlY3Rpb24u
aXNDb2xsYXBzZWRgIGlzIGF2YWlsYWJsZSBuYXRpdmVseSwgYnV0IElFIHNvbWV0aW1lcyBnZXRz
XG5cdCAgLy8gdGhpcyB2YWx1ZSB3cm9uZy5cblx0ICB2YXIgaXNTZWxlY3Rpb25Db2xsYXBzZWQg
PSBpc0NvbGxhcHNlZChzZWxlY3Rpb24uYW5jaG9yTm9kZSwgc2VsZWN0aW9uLmFuY2hvck9mZnNl
dCwgc2VsZWN0aW9uLmZvY3VzTm9kZSwgc2VsZWN0aW9uLmZvY3VzT2Zmc2V0KTtcblx0XG5cdCAg
dmFyIHJhbmdlTGVuZ3RoID0gaXNTZWxlY3Rpb25Db2xsYXBzZWQgPyAwIDogY3VycmVudFJhbmdl
LnRvU3RyaW5nKCkubGVuZ3RoO1xuXHRcblx0ICB2YXIgdGVtcFJhbmdlID0gY3VycmVudFJhbmdl
LmNsb25lUmFuZ2UoKTtcblx0ICB0ZW1wUmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpO1xu
XHQgIHRlbXBSYW5nZS5zZXRFbmQoY3VycmVudFJhbmdlLnN0YXJ0Q29udGFpbmVyLCBjdXJyZW50
UmFuZ2Uuc3RhcnRPZmZzZXQpO1xuXHRcblx0ICB2YXIgaXNUZW1wUmFuZ2VDb2xsYXBzZWQgPSBp
c0NvbGxhcHNlZCh0ZW1wUmFuZ2Uuc3RhcnRDb250YWluZXIsIHRlbXBSYW5nZS5zdGFydE9mZnNl
dCwgdGVtcFJhbmdlLmVuZENvbnRhaW5lciwgdGVtcFJhbmdlLmVuZE9mZnNldCk7XG5cdFxuXHQg
IHZhciBzdGFydCA9IGlzVGVtcFJhbmdlQ29sbGFwc2VkID8gMCA6IHRlbXBSYW5nZS50b1N0cmlu
ZygpLmxlbmd0aDtcblx0ICB2YXIgZW5kID0gc3RhcnQgKyByYW5nZUxlbmd0aDtcblx0XG5cdCAg
Ly8gRGV0ZWN0IHdoZXRoZXIgdGhlIHNlbGVjdGlvbiBpcyBiYWNrd2FyZC5cblx0ICB2YXIgZGV0
ZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuXHQgIGRldGVjdGlvblJhbmdl
LnNldFN0YXJ0KGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7XG5cdCAgZGV0ZWN0aW9uUmFuZ2Uu
c2V0RW5kKGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQpO1xuXHQgIHZhciBpc0JhY2t3YXJkID0gZGV0
ZWN0aW9uUmFuZ2UuY29sbGFwc2VkO1xuXHRcblx0ICByZXR1cm4ge1xuXHQgICAgc3RhcnQ6IGlz
QmFja3dhcmQgPyBlbmQgOiBzdGFydCxcblx0ICAgIGVuZDogaXNCYWNrd2FyZCA/IHN0YXJ0IDog
ZW5kXG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01U
ZXh0Tm9kZX0gbm9kZVxuXHQgKiBAcGFyYW0ge29iamVjdH0gb2Zmc2V0c1xuXHQgKi9cblx0ZnVu
Y3Rpb24gc2V0SUVPZmZzZXRzKG5vZGUsIG9mZnNldHMpIHtcblx0ICB2YXIgcmFuZ2UgPSBkb2N1
bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5kdXBsaWNhdGUoKTtcblx0ICB2YXIgc3RhcnQs
IGVuZDtcblx0XG5cdCAgaWYgKG9mZnNldHMuZW5kID09PSB1bmRlZmluZWQpIHtcblx0ICAgIHN0
YXJ0ID0gb2Zmc2V0cy5zdGFydDtcblx0ICAgIGVuZCA9IHN0YXJ0O1xuXHQgIH0gZWxzZSBpZiAo
b2Zmc2V0cy5zdGFydCA+IG9mZnNldHMuZW5kKSB7XG5cdCAgICBzdGFydCA9IG9mZnNldHMuZW5k
O1xuXHQgICAgZW5kID0gb2Zmc2V0cy5zdGFydDtcblx0ICB9IGVsc2Uge1xuXHQgICAgc3RhcnQg
PSBvZmZzZXRzLnN0YXJ0O1xuXHQgICAgZW5kID0gb2Zmc2V0cy5lbmQ7XG5cdCAgfVxuXHRcblx0
ICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChub2RlKTtcblx0ICByYW5nZS5tb3ZlU3RhcnQoJ2No
YXJhY3RlcicsIHN0YXJ0KTtcblx0ICByYW5nZS5zZXRFbmRQb2ludCgnRW5kVG9TdGFydCcsIHJh
bmdlKTtcblx0ICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQgLSBzdGFydCk7XG5cdCAg
cmFuZ2Uuc2VsZWN0KCk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBJbiBtb2Rlcm4gbm9uLUlFIGJy
b3dzZXJzLCB3ZSBjYW4gc3VwcG9ydCBib3RoIGZvcndhcmQgYW5kIGJhY2t3YXJkXG5cdCAqIHNl
bGVjdGlvbnMuXG5cdCAqXG5cdCAqIE5vdGU6IElFMTArIHN1cHBvcnRzIHRoZSBTZWxlY3Rpb24g
b2JqZWN0LCBidXQgaXQgZG9lcyBub3Qgc3VwcG9ydFxuXHQgKiB0aGUgYGV4dGVuZGAgbWV0aG9k
LCB3aGljaCBtZWFucyB0aGF0IGV2ZW4gaW4gbW9kZXJuIElFLCBpdCdzIG5vdCBwb3NzaWJsZVxu
XHQgKiB0byBwcm9ncmFtbWF0aWNhbGx5IGNyZWF0ZSBhIGJhY2t3YXJkIHNlbGVjdGlvbi4gVGh1
cywgZm9yIGFsbCBJRVxuXHQgKiB2ZXJzaW9ucywgd2UgdXNlIHRoZSBvbGQgSUUgQVBJIHRvIGNy
ZWF0ZSBvdXIgc2VsZWN0aW9ucy5cblx0ICpcblx0ICogQHBhcmFtIHtET01FbGVtZW50fERPTVRl
eHROb2RlfSBub2RlXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvZmZzZXRzXG5cdCAqL1xuXHRmdW5j
dGlvbiBzZXRNb2Rlcm5PZmZzZXRzKG5vZGUsIG9mZnNldHMpIHtcblx0ICBpZiAoIXdpbmRvdy5n
ZXRTZWxlY3Rpb24pIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdFxuXHQgIHZhciBzZWxlY3Rp
b24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cdCAgdmFyIGxlbmd0aCA9IG5vZGVbZ2V0VGV4
dENvbnRlbnRBY2Nlc3NvcigpXS5sZW5ndGg7XG5cdCAgdmFyIHN0YXJ0ID0gTWF0aC5taW4ob2Zm
c2V0cy5zdGFydCwgbGVuZ3RoKTtcblx0ICB2YXIgZW5kID0gb2Zmc2V0cy5lbmQgPT09IHVuZGVm
aW5lZCA/IHN0YXJ0IDogTWF0aC5taW4ob2Zmc2V0cy5lbmQsIGxlbmd0aCk7XG5cdFxuXHQgIC8v
IElFIDExIHVzZXMgbW9kZXJuIHNlbGVjdGlvbiwgYnV0IGRvZXNuJ3Qgc3VwcG9ydCB0aGUgZXh0
ZW5kIG1ldGhvZC5cblx0ICAvLyBGbGlwIGJhY2t3YXJkIHNlbGVjdGlvbnMsIHNvIHdlIGNhbiBz
ZXQgd2l0aCBhIHNpbmdsZSByYW5nZS5cblx0ICBpZiAoIXNlbGVjdGlvbi5leHRlbmQgJiYgc3Rh
cnQgPiBlbmQpIHtcblx0ICAgIHZhciB0ZW1wID0gZW5kO1xuXHQgICAgZW5kID0gc3RhcnQ7XG5c
dCAgICBzdGFydCA9IHRlbXA7XG5cdCAgfVxuXHRcblx0ICB2YXIgc3RhcnRNYXJrZXIgPSBnZXRO
b2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KG5vZGUsIHN0YXJ0KTtcblx0ICB2YXIgZW5kTWFya2VyID0g
Z2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChub2RlLCBlbmQpO1xuXHRcblx0ICBpZiAoc3RhcnRN
YXJrZXIgJiYgZW5kTWFya2VyKSB7XG5cdCAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVS
YW5nZSgpO1xuXHQgICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnRNYXJrZXIubm9kZSwgc3RhcnRNYXJr
ZXIub2Zmc2V0KTtcblx0ICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcblx0XG5cdCAg
ICBpZiAoc3RhcnQgPiBlbmQpIHtcblx0ICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTtc
blx0ICAgICAgc2VsZWN0aW9uLmV4dGVuZChlbmRNYXJrZXIubm9kZSwgZW5kTWFya2VyLm9mZnNl
dCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByYW5nZS5zZXRFbmQoZW5kTWFya2VyLm5vZGUs
IGVuZE1hcmtlci5vZmZzZXQpO1xuXHQgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xu
XHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0dmFyIHVzZUlFT2Zmc2V0cyA9IEV4ZWN1dGlvbkVu
dmlyb25tZW50LmNhblVzZURPTSAmJiAnc2VsZWN0aW9uJyBpbiBkb2N1bWVudCAmJiAhKCdnZXRT
ZWxlY3Rpb24nIGluIHdpbmRvdyk7XG5cdFxuXHR2YXIgUmVhY3RET01TZWxlY3Rpb24gPSB7XG5c
dCAgLyoqXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG5cdCAgICovXG5cdCAgZ2V0
T2Zmc2V0czogdXNlSUVPZmZzZXRzID8gZ2V0SUVPZmZzZXRzIDogZ2V0TW9kZXJuT2Zmc2V0cyxc
blx0XG5cdCAgLyoqXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2Rl
XG5cdCAgICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHNcblx0ICAgKi9cblx0ICBzZXRPZmZzZXRz
OiB1c2VJRU9mZnNldHMgPyBzZXRJRU9mZnNldHMgOiBzZXRNb2Rlcm5PZmZzZXRzXG5cdH07XG5c
dFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NU2VsZWN0aW9uO1xuXG4vKioqLyB9LFxuLyog
MTQ2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5c
dCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDMpLFxuXHQgICAgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7
XG5cdFxuXHR2YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0gX193ZWJwYWNrX3JlcXVpcmVfXygz
NCk7XG5cdHZhciBET01MYXp5VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpO1xuXHR2YXIg
UmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0XG5cdHZh
ciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTtc
blx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciB2YWxpZGF0
ZURPTU5lc3RpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ5KTtcblx0XG5cdC8qKlxuXHQgKiBU
ZXh0IG5vZGVzIHZpb2xhdGUgYSBjb3VwbGUgYXNzdW1wdGlvbnMgdGhhdCBSZWFjdCBtYWtlcyBh
Ym91dCBjb21wb25lbnRzOlxuXHQgKlxuXHQgKiAgLSBXaGVuIG1vdW50aW5nIHRleHQgaW50byB0
aGUgRE9NLCBhZGphY2VudCB0ZXh0IG5vZGVzIGFyZSBtZXJnZWQuXG5cdCAqICAtIFRleHQgbm9k
ZXMgY2Fubm90IGJlIGFzc2lnbmVkIGEgUmVhY3Qgcm9vdCBJRC5cblx0ICpcblx0ICogVGhpcyBj
b21wb25lbnQgaXMgdXNlZCB0byB3cmFwIHN0cmluZ3MgYmV0d2VlbiBjb21tZW50IG5vZGVzIHNv
IHRoYXQgdGhleVxuXHQgKiBjYW4gdW5kZXJnbyB0aGUgc2FtZSByZWNvbmNpbGlhdGlvbiB0aGF0
IGlzIGFwcGxpZWQgdG8gZWxlbWVudHMuXG5cdCAqXG5cdCAqIFRPRE86IEludmVzdGlnYXRlIHJl
cHJlc2VudGluZyBSZWFjdCBjb21wb25lbnRzIGluIHRoZSBET00gd2l0aCB0ZXh0IG5vZGVzLlxu
XHQgKlxuXHQgKiBAY2xhc3MgUmVhY3RET01UZXh0Q29tcG9uZW50XG5cdCAqIEBleHRlbmRzIFJl
YWN0Q29tcG9uZW50XG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0dmFyIFJlYWN0RE9NVGV4dENv
bXBvbmVudCA9IGZ1bmN0aW9uICh0ZXh0KSB7XG5cdCAgLy8gVE9ETzogVGhpcyBpcyByZWFsbHkg
YSBSZWFjdFRleHQgKFJlYWN0Tm9kZSksIG5vdCBhIFJlYWN0RWxlbWVudFxuXHQgIHRoaXMuX2N1
cnJlbnRFbGVtZW50ID0gdGV4dDtcblx0ICB0aGlzLl9zdHJpbmdUZXh0ID0gJycgKyB0ZXh0O1xu
XHQgIC8vIFJlYWN0RE9NQ29tcG9uZW50VHJlZSB1c2VzIHRoZXNlOlxuXHQgIHRoaXMuX2hvc3RO
b2RlID0gbnVsbDtcblx0ICB0aGlzLl9ob3N0UGFyZW50ID0gbnVsbDtcblx0XG5cdCAgLy8gUHJv
cGVydGllc1xuXHQgIHRoaXMuX2RvbUlEID0gMDtcblx0ICB0aGlzLl9tb3VudEluZGV4ID0gMDtc
blx0ICB0aGlzLl9jbG9zaW5nQ29tbWVudCA9IG51bGw7XG5cdCAgdGhpcy5fY29tbWVudE5vZGVz
ID0gbnVsbDtcblx0fTtcblx0XG5cdF9hc3NpZ24oUmVhY3RET01UZXh0Q29tcG9uZW50LnByb3Rv
dHlwZSwge1xuXHQgIC8qKlxuXHQgICAqIENyZWF0ZXMgdGhlIG1hcmt1cCBmb3IgdGhpcyB0ZXh0
IG5vZGUuIFRoaXMgbm9kZSBpcyBub3QgaW50ZW5kZWQgdG8gaGF2ZVxuXHQgICAqIGFueSBmZWF0
dXJlcyBiZXNpZGVzIGNvbnRhaW5pbmcgdGV4dCBjb250ZW50LlxuXHQgICAqXG5cdCAgICogQHBh
cmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNh
Y3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgZm9yIHRo
aXMgdGV4dCBub2RlLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIG1vdW50Q29tcG9u
ZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZv
LCBjb250ZXh0KSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdmFyIHBhcmVudEluZm87
XG5cdCAgICAgIGlmIChob3N0UGFyZW50ICE9IG51bGwpIHtcblx0ICAgICAgICBwYXJlbnRJbmZv
ID0gaG9zdFBhcmVudC5fYW5jZXN0b3JJbmZvO1xuXHQgICAgICB9IGVsc2UgaWYgKGhvc3RDb250
YWluZXJJbmZvICE9IG51bGwpIHtcblx0ICAgICAgICBwYXJlbnRJbmZvID0gaG9zdENvbnRhaW5l
ckluZm8uX2FuY2VzdG9ySW5mbztcblx0ICAgICAgfVxuXHQgICAgICBpZiAocGFyZW50SW5mbykg
e1xuXHQgICAgICAgIC8vIHBhcmVudEluZm8gc2hvdWxkIGFsd2F5cyBiZSBwcmVzZW50IGV4Y2Vw
dCBmb3IgdGhlIHRvcC1sZXZlbFxuXHQgICAgICAgIC8vIGNvbXBvbmVudCB3aGVuIHNlcnZlciBy
ZW5kZXJpbmdcblx0ICAgICAgICB2YWxpZGF0ZURPTU5lc3RpbmcobnVsbCwgdGhpcy5fc3RyaW5n
VGV4dCwgdGhpcywgcGFyZW50SW5mbyk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICB2
YXIgZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVyKys7XG5cdCAgICB2YXIgb3Bl
bmluZ1ZhbHVlID0gJyByZWFjdC10ZXh0OiAnICsgZG9tSUQgKyAnICc7XG5cdCAgICB2YXIgY2xv
c2luZ1ZhbHVlID0gJyAvcmVhY3QtdGV4dCAnO1xuXHQgICAgdGhpcy5fZG9tSUQgPSBkb21JRDtc
blx0ICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50O1xuXHQgICAgaWYgKHRyYW5zYWN0
aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcblx0ICAgICAgdmFyIG93bmVyRG9jdW1lbnQgPSBob3N0
Q29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDtcblx0ICAgICAgdmFyIG9wZW5pbmdDb21tZW50
ID0gb3duZXJEb2N1bWVudC5jcmVhdGVDb21tZW50KG9wZW5pbmdWYWx1ZSk7XG5cdCAgICAgIHZh
ciBjbG9zaW5nQ29tbWVudCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChjbG9zaW5nVmFs
dWUpO1xuXHQgICAgICB2YXIgbGF6eVRyZWUgPSBET01MYXp5VHJlZShvd25lckRvY3VtZW50LmNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQoKSk7XG5cdCAgICAgIERPTUxhenlUcmVlLnF1ZXVlQ2hpbGQo
bGF6eVRyZWUsIERPTUxhenlUcmVlKG9wZW5pbmdDb21tZW50KSk7XG5cdCAgICAgIGlmICh0aGlz
Ll9zdHJpbmdUZXh0KSB7XG5cdCAgICAgICAgRE9NTGF6eVRyZWUucXVldWVDaGlsZChsYXp5VHJl
ZSwgRE9NTGF6eVRyZWUob3duZXJEb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9zdHJpbmdU
ZXh0KSkpO1xuXHQgICAgICB9XG5cdCAgICAgIERPTUxhenlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRy
ZWUsIERPTUxhenlUcmVlKGNsb3NpbmdDb21tZW50KSk7XG5cdCAgICAgIFJlYWN0RE9NQ29tcG9u
ZW50VHJlZS5wcmVjYWNoZU5vZGUodGhpcywgb3BlbmluZ0NvbW1lbnQpO1xuXHQgICAgICB0aGlz
Ll9jbG9zaW5nQ29tbWVudCA9IGNsb3NpbmdDb21tZW50O1xuXHQgICAgICByZXR1cm4gbGF6eVRy
ZWU7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB2YXIgZXNjYXBlZFRleHQgPSBlc2NhcGVUZXh0
Q29udGVudEZvckJyb3dzZXIodGhpcy5fc3RyaW5nVGV4dCk7XG5cdFxuXHQgICAgICBpZiAodHJh
bnNhY3Rpb24ucmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcblx0ICAgICAgICAvLyBOb3JtYWxseSB3
ZSdkIHdyYXAgdGhpcyBiZXR3ZWVuIGNvbW1lbnQgbm9kZXMgZm9yIHRoZSByZWFzb25zIHN0YXRl
ZFxuXHQgICAgICAgIC8vIGFib3ZlLCBidXQgc2luY2UgdGhpcyBpcyBhIHNpdHVhdGlvbiB3aGVy
ZSBSZWFjdCB3b24ndCB0YWtlIG92ZXJcblx0ICAgICAgICAvLyAoc3RhdGljIHBhZ2VzKSwgd2Ug
Y2FuIHNpbXBseSByZXR1cm4gdGhlIHRleHQgYXMgaXQgaXMuXG5cdCAgICAgICAgcmV0dXJuIGVz
Y2FwZWRUZXh0O1xuXHQgICAgICB9XG5cdFxuXHQgICAgICByZXR1cm4gJzwhLS0nICsgb3Blbmlu
Z1ZhbHVlICsgJy0tPicgKyBlc2NhcGVkVGV4dCArICc8IS0tJyArIGNsb3NpbmdWYWx1ZSArICct
LT4nO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFVwZGF0ZXMgdGhpcyBj
b21wb25lbnQgYnkgdXBkYXRpbmcgdGhlIHRleHQgY29udGVudC5cblx0ICAgKlxuXHQgICAqIEBw
YXJhbSB7UmVhY3RUZXh0fSBuZXh0VGV4dCBUaGUgbmV4dCB0ZXh0IGNvbnRlbnRcblx0ICAgKiBA
cGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICogQGlu
dGVybmFsXG5cdCAgICovXG5cdCAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRUZXh0
LCB0cmFuc2FjdGlvbikge1xuXHQgICAgaWYgKG5leHRUZXh0ICE9PSB0aGlzLl9jdXJyZW50RWxl
bWVudCkge1xuXHQgICAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRUZXh0O1xuXHQgICAg
ICB2YXIgbmV4dFN0cmluZ1RleHQgPSAnJyArIG5leHRUZXh0O1xuXHQgICAgICBpZiAobmV4dFN0
cmluZ1RleHQgIT09IHRoaXMuX3N0cmluZ1RleHQpIHtcblx0ICAgICAgICAvLyBUT0RPOiBTYXZl
IHRoaXMgYXMgcGVuZGluZyBwcm9wcyBhbmQgdXNlIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeVxu
XHQgICAgICAgIC8vIGFuZC9vciB1cGRhdGVDb21wb25lbnQgdG8gZG8gdGhlIGFjdHVhbCB1cGRh
dGUgZm9yIGNvbnNpc3RlbmN5IHdpdGhcblx0ICAgICAgICAvLyBvdGhlciBjb21wb25lbnQgdHlw
ZXM/XG5cdCAgICAgICAgdGhpcy5fc3RyaW5nVGV4dCA9IG5leHRTdHJpbmdUZXh0O1xuXHQgICAg
ICAgIHZhciBjb21tZW50Tm9kZXMgPSB0aGlzLmdldEhvc3ROb2RlKCk7XG5cdCAgICAgICAgRE9N
Q2hpbGRyZW5PcGVyYXRpb25zLnJlcGxhY2VEZWxpbWl0ZWRUZXh0KGNvbW1lbnROb2Rlc1swXSwg
Y29tbWVudE5vZGVzWzFdLCBuZXh0U3RyaW5nVGV4dCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
ICB9LFxuXHRcblx0ICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIGhvc3RO
b2RlID0gdGhpcy5fY29tbWVudE5vZGVzO1xuXHQgICAgaWYgKGhvc3ROb2RlKSB7XG5cdCAgICAg
IHJldHVybiBob3N0Tm9kZTtcblx0ICAgIH1cblx0ICAgIGlmICghdGhpcy5fY2xvc2luZ0NvbW1l
bnQpIHtcblx0ICAgICAgdmFyIG9wZW5pbmdDb21tZW50ID0gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyk7XG5cdCAgICAgIHZhciBub2RlID0gb3BlbmluZ0Nv
bW1lbnQubmV4dFNpYmxpbmc7XG5cdCAgICAgIHdoaWxlICh0cnVlKSB7XG5cdCAgICAgICAgIShu
b2RlICE9IG51bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnTWlzc2luZyBjbG9zaW5n
IGNvbW1lbnQgZm9yIHRleHQgY29tcG9uZW50ICVzJywgdGhpcy5fZG9tSUQpIDogX3Byb2RJbnZh
cmlhbnQoJzY3JywgdGhpcy5fZG9tSUQpIDogdm9pZCAwO1xuXHQgICAgICAgIGlmIChub2RlLm5v
ZGVUeXBlID09PSA4ICYmIG5vZGUubm9kZVZhbHVlID09PSAnIC9yZWFjdC10ZXh0ICcpIHtcblx0
ICAgICAgICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbm9kZTtcblx0ICAgICAgICAgIGJyZWFr
O1xuXHQgICAgICAgIH1cblx0ICAgICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZztcblx0ICAg
ICAgfVxuXHQgICAgfVxuXHQgICAgaG9zdE5vZGUgPSBbdGhpcy5faG9zdE5vZGUsIHRoaXMuX2Ns
b3NpbmdDb21tZW50XTtcblx0ICAgIHRoaXMuX2NvbW1lbnROb2RlcyA9IGhvc3ROb2RlO1xuXHQg
ICAgcmV0dXJuIGhvc3ROb2RlO1xuXHQgIH0sXG5cdFxuXHQgIHVubW91bnRDb21wb25lbnQ6IGZ1
bmN0aW9uICgpIHtcblx0ICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbnVsbDtcblx0ICAgIHRo
aXMuX2NvbW1lbnROb2RlcyA9IG51bGw7XG5cdCAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUudW5j
YWNoZU5vZGUodGhpcyk7XG5cdCAgfVxuXHR9KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVh
Y3RET01UZXh0Q29tcG9uZW50O1xuXG4vKioqLyB9LFxuLyogMTQ3ICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpLFxuXHQg
ICAgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgTGlua2VkVmFs
dWVVdGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oMzkpO1xuXHR2YXIgUmVhY3RET01Db21wb25l
bnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFyIFJlYWN0VXBkYXRlcyA9IF9f
d2VicGFja19yZXF1aXJlX18oOSk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRc
blx0dmFyIGRpZFdhcm5WYWx1ZUxpbmsgPSBmYWxzZTtcblx0dmFyIGRpZFdhcm5WYWxEZWZhdWx0
VmFsID0gZmFsc2U7XG5cdFxuXHRmdW5jdGlvbiBmb3JjZVVwZGF0ZUlmTW91bnRlZCgpIHtcblx0
ICBpZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuXHQgICAgLy8gRE9NIGNvbXBvbmVudCBpcyBzdGls
bCBtb3VudGVkOyB1cGRhdGVcblx0ICAgIFJlYWN0RE9NVGV4dGFyZWEudXBkYXRlV3JhcHBlcih0
aGlzKTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBJbXBsZW1lbnRzIGEgPHRleHRhcmVh
PiBob3N0IGNvbXBvbmVudCB0aGF0IGFsbG93cyBzZXR0aW5nIGB2YWx1ZWAsIGFuZFxuXHQgKiBg
ZGVmYXVsdFZhbHVlYC4gVGhpcyBkaWZmZXJzIGZyb20gdGhlIHRyYWRpdGlvbmFsIERPTSBBUEkg
YmVjYXVzZSB2YWx1ZSBpc1xuXHQgKiB1c3VhbGx5IHNldCBhcyBQQ0RBVEEgY2hpbGRyZW4uXG5c
dCAqXG5cdCAqIElmIGB2YWx1ZWAgaXMgbm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCks
IHVzZXIgYWN0aW9ucyB0aGF0IGFmZmVjdCB0aGVcblx0ICogdmFsdWUgd2lsbCB0cmlnZ2VyIHVw
ZGF0ZXMgdG8gdGhlIGVsZW1lbnQuXG5cdCAqXG5cdCAqIElmIGB2YWx1ZWAgaXMgc3VwcGxpZWQg
KGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsXG5cdCAq
IG5vdCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuIEluc3RlYWQsIHRoZSBgdmFsdWVg
IHByb3AgbXVzdCBjaGFuZ2UgaW5cblx0ICogb3JkZXIgZm9yIHRoZSByZW5kZXJlZCBlbGVtZW50
IHRvIGJlIHVwZGF0ZWQuXG5cdCAqXG5cdCAqIFRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGwgYmUg
aW5pdGlhbGl6ZWQgd2l0aCBhbiBlbXB0eSB2YWx1ZSwgdGhlIHByb3Bcblx0ICogYGRlZmF1bHRW
YWx1ZWAgaWYgc3BlY2lmaWVkLCBvciB0aGUgY2hpbGRyZW4gY29udGVudCAoZGVwcmVjYXRlZCku
XG5cdCAqL1xuXHR2YXIgUmVhY3RET01UZXh0YXJlYSA9IHtcblx0ICBnZXRIb3N0UHJvcHM6IGZ1
bmN0aW9uIChpbnN0LCBwcm9wcykge1xuXHQgICAgIShwcm9wcy5kYW5nZXJvdXNseVNldElubmVy
SFRNTCA9PSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2BkYW5nZXJvdXNseVNl
dElubmVySFRNTGAgZG9lcyBub3QgbWFrZSBzZW5zZSBvbiA8dGV4dGFyZWE+LicpIDogX3Byb2RJ
bnZhcmlhbnQoJzkxJykgOiB2b2lkIDA7XG5cdFxuXHQgICAgLy8gQWx3YXlzIHNldCBjaGlsZHJl
biB0byB0aGUgc2FtZSB0aGluZy4gSW4gSUU5LCB0aGUgc2VsZWN0aW9uIHJhbmdlIHdpbGxcblx0
ICAgIC8vIGdldCByZXNldCBpZiBgdGV4dENvbnRlbnRgIGlzIG11dGF0ZWQuICBXZSBjb3VsZCBh
ZGQgYSBjaGVjayBpbiBzZXRUZXh0Q29udGVudFxuXHQgICAgLy8gdG8gb25seSBzZXQgdGhlIHZh
bHVlIGlmL3doZW4gdGhlIHZhbHVlIGRpZmZlcnMgZnJvbSB0aGUgbm9kZSB2YWx1ZSAod2hpY2gg
d291bGRcblx0ICAgIC8vIGNvbXBsZXRlbHkgc29sdmUgdGhpcyBJRTkgYnVnKSwgYnV0IFNlYmFz
dGlhbitCZW4gc2VlbWVkIHRvIGxpa2UgdGhpcyBzb2x1dGlvbi5cblx0ICAgIC8vIFRoZSB2YWx1
ZSBjYW4gYmUgYSBib29sZWFuIG9yIG9iamVjdCBzbyB0aGF0J3Mgd2h5IGl0J3MgZm9yY2VkIHRv
IGJlIGEgc3RyaW5nLlxuXHQgICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24oe30sIHByb3BzLCB7
XG5cdCAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG5cdCAgICAgIGRlZmF1bHRWYWx1ZTogdW5kZWZp
bmVkLFxuXHQgICAgICBjaGlsZHJlbjogJycgKyBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZh
bHVlLFxuXHQgICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlXG5cdCAg
ICB9KTtcblx0XG5cdCAgICByZXR1cm4gaG9zdFByb3BzO1xuXHQgIH0sXG5cdFxuXHQgIG1vdW50
V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0
ICAgICAgTGlua2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygndGV4dGFyZWEnLCBwcm9wcywg
aW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyKTtcblx0ICAgICAgaWYgKHByb3BzLnZhbHVlTGlu
ayAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVMaW5rKSB7XG5cdCAgICAgICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgdmFsdWVM
aW5rYCBwcm9wIG9uIGB0ZXh0YXJlYWAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBv
bkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDtcblx0ICAgICAgICBkaWRXYXJuVmFsdWVMaW5r
ID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAocHJvcHMudmFsdWUgIT09IHVuZGVmaW5l
ZCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbERlZmF1
bHRWYWwpIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhmYWxzZSwgJ1RleHRhcmVhIGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRy
b2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9w
LCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJl
dHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCB0ZXh0YXJlYSAnICsgJ2Fu
ZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcgKyAnaHR0cHM6Ly9mYi5t
ZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnKSA6IHZvaWQgMDtcblx0ICAgICAgICBkaWRX
YXJuVmFsRGVmYXVsdFZhbCA9IHRydWU7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICB2
YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcblx0ICAgIHZhciBp
bml0aWFsVmFsdWUgPSB2YWx1ZTtcblx0XG5cdCAgICAvLyBPbmx5IGJvdGhlciBmZXRjaGluZyBk
ZWZhdWx0IHZhbHVlIGlmIHdlJ3JlIGdvaW5nIHRvIHVzZSBpdFxuXHQgICAgaWYgKHZhbHVlID09
IG51bGwpIHtcblx0ICAgICAgdmFyIGRlZmF1bHRWYWx1ZSA9IHByb3BzLmRlZmF1bHRWYWx1ZTtc
blx0ICAgICAgLy8gVE9ETyAoeXVuZ3N0ZXJzKTogUmVtb3ZlIHN1cHBvcnQgZm9yIGNoaWxkcmVu
IGNvbnRlbnQgaW4gPHRleHRhcmVhPi5cblx0ICAgICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hp
bGRyZW47XG5cdCAgICAgIGlmIChjaGlsZHJlbiAhPSBudWxsKSB7XG5cdCAgICAgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhmYWxzZSwgJ1VzZSB0aGUgYGRlZmF1bHRWYWx1ZWAgb3IgYHZhbHVlYCBwcm9w
cyBpbnN0ZWFkIG9mIHNldHRpbmcgJyArICdjaGlsZHJlbiBvbiA8dGV4dGFyZWE+LicpIDogdm9p
ZCAwO1xuXHQgICAgICAgIH1cblx0ICAgICAgICAhKGRlZmF1bHRWYWx1ZSA9PSBudWxsKSA/ICBm
YWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0lmIHlvdSBzdXBwbHkgYGRlZmF1bHRWYWx1ZWAgb24g
YSA8dGV4dGFyZWE+LCBkbyBub3QgcGFzcyBjaGlsZHJlbi4nKSA6IF9wcm9kSW52YXJpYW50KCc5
MicpIDogdm9pZCAwO1xuXHQgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xu
XHQgICAgICAgICAgIShjaGlsZHJlbi5sZW5ndGggPD0gMSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQo
ZmFsc2UsICc8dGV4dGFyZWE+IGNhbiBvbmx5IGhhdmUgYXQgbW9zdCBvbmUgY2hpbGQuJykgOiBf
cHJvZEludmFyaWFudCgnOTMnKSA6IHZvaWQgMDtcblx0ICAgICAgICAgIGNoaWxkcmVuID0gY2hp
bGRyZW5bMF07XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICBkZWZhdWx0VmFsdWUgPSAnJyAr
IGNoaWxkcmVuO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChkZWZhdWx0VmFsdWUgPT0gbnVsbCkg
e1xuXHQgICAgICAgIGRlZmF1bHRWYWx1ZSA9ICcnO1xuXHQgICAgICB9XG5cdCAgICAgIGluaXRp
YWxWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcblx0ICAgIH1cblx0XG5cdCAgICBpbnN0Ll93cmFwcGVy
U3RhdGUgPSB7XG5cdCAgICAgIGluaXRpYWxWYWx1ZTogJycgKyBpbml0aWFsVmFsdWUsXG5cdCAg
ICAgIGxpc3RlbmVyczogbnVsbCxcblx0ICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmlu
ZChpbnN0KVxuXHQgICAgfTtcblx0ICB9LFxuXHRcblx0ICB1cGRhdGVXcmFwcGVyOiBmdW5jdGlv
biAoaW5zdCkge1xuXHQgICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7
XG5cdFxuXHQgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21J
bnN0YW5jZShpbnN0KTtcblx0ICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFs
dWUocHJvcHMpO1xuXHQgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcblx0ICAgICAgLy8gQ2FzdCBg
dmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3RseS4g
V2hpbGVcblx0ICAgICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRvIHRoaXMgYXMgbmVjZXNzYXJ5
LCBqc2RvbSBkb2Vzbid0LlxuXHQgICAgICB2YXIgbmV3VmFsdWUgPSAnJyArIHZhbHVlO1xuXHRc
blx0ICAgICAgLy8gVG8gYXZvaWQgc2lkZSBlZmZlY3RzIChzdWNoIGFzIGxvc2luZyB0ZXh0IHNl
bGVjdGlvbiksIG9ubHkgc2V0IHZhbHVlIGlmIGNoYW5nZWRcblx0ICAgICAgaWYgKG5ld1ZhbHVl
ICE9PSBub2RlLnZhbHVlKSB7XG5cdCAgICAgICAgbm9kZS52YWx1ZSA9IG5ld1ZhbHVlO1xuXHQg
ICAgICB9XG5cdCAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgPT0gbnVsbCkge1xuXHQgICAg
ICAgIG5vZGUuZGVmYXVsdFZhbHVlID0gbmV3VmFsdWU7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
ICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuXHQgICAgICBub2RlLmRlZmF1
bHRWYWx1ZSA9IHByb3BzLmRlZmF1bHRWYWx1ZTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBw
b3N0TW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuXHQgICAgLy8gVGhpcyBpcyBpbiBw
b3N0TW91bnQgYmVjYXVzZSB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgRE9NIG5vZGUsIHdoaWNoIGlz
IG5vdFxuXHQgICAgLy8gYXZhaWxhYmxlIHVudGlsIGFmdGVyIHRoZSBjb21wb25lbnQgaGFzIG1v
dW50ZWQuXG5cdCAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJv
bUluc3RhbmNlKGluc3QpO1xuXHQgICAgdmFyIHRleHRDb250ZW50ID0gbm9kZS50ZXh0Q29udGVu
dDtcblx0XG5cdCAgICAvLyBPbmx5IHNldCBub2RlLnZhbHVlIGlmIHRleHRDb250ZW50IGlzIGVx
dWFsIHRvIHRoZSBleHBlY3RlZFxuXHQgICAgLy8gaW5pdGlhbCB2YWx1ZS4gSW4gSUUxMC9JRTEx
IHRoZXJlIGlzIGEgYnVnIHdoZXJlIHRoZSBwbGFjZWhvbGRlciBhdHRyaWJ1dGVcblx0ICAgIC8v
IHdpbGwgcG9wdWxhdGUgdGV4dENvbnRlbnQgYXMgd2VsbC5cblx0ICAgIC8vIGh0dHBzOi8vZGV2
ZWxvcGVyLm1pY3Jvc29mdC5jb20vbWljcm9zb2Z0LWVkZ2UvcGxhdGZvcm0vaXNzdWVzLzEwMTUy
NS9cblx0ICAgIGlmICh0ZXh0Q29udGVudCA9PT0gaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxW
YWx1ZSkge1xuXHQgICAgICBub2RlLnZhbHVlID0gdGV4dENvbnRlbnQ7XG5cdCAgICB9XG5cdCAg
fVxuXHR9O1xuXHRcblx0ZnVuY3Rpb24gX2hhbmRsZUNoYW5nZShldmVudCkge1xuXHQgIHZhciBw
cm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXHQgIHZhciByZXR1cm5WYWx1ZSA9
IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7XG5cdCAgUmVh
Y3RVcGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIHRoaXMpO1xuXHQgIHJldHVybiBy
ZXR1cm5WYWx1ZTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRhcmVh
O1xuXG4vKioqLyB9LFxuLyogMTQ4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTUtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJ
bnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIGludmFyaWFudCA9
IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHQvKipcblx0ICogUmV0dXJuIHRoZSBsb3dl
c3QgY29tbW9uIGFuY2VzdG9yIG9mIEEgYW5kIEIsIG9yIG51bGwgaWYgdGhleSBhcmUgaW5cblx0
ICogZGlmZmVyZW50IHRyZWVzLlxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0TG93ZXN0Q29tbW9uQW5j
ZXN0b3IoaW5zdEEsIGluc3RCKSB7XG5cdCAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QSkgPyAgZmFs
c2UgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJbnZhbGlkIGFyZ3Vt
ZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7XG5cdCAgISgnX2hvc3ROb2Rl
JyBpbiBpbnN0QikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3Rh
bmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7
XG5cdFxuXHQgIHZhciBkZXB0aEEgPSAwO1xuXHQgIGZvciAodmFyIHRlbXBBID0gaW5zdEE7IHRl
bXBBOyB0ZW1wQSA9IHRlbXBBLl9ob3N0UGFyZW50KSB7XG5cdCAgICBkZXB0aEErKztcblx0ICB9
XG5cdCAgdmFyIGRlcHRoQiA9IDA7XG5cdCAgZm9yICh2YXIgdGVtcEIgPSBpbnN0QjsgdGVtcEI7
IHRlbXBCID0gdGVtcEIuX2hvc3RQYXJlbnQpIHtcblx0ICAgIGRlcHRoQisrO1xuXHQgIH1cblx0
XG5cdCAgLy8gSWYgQSBpcyBkZWVwZXIsIGNyYXdsIHVwLlxuXHQgIHdoaWxlIChkZXB0aEEgLSBk
ZXB0aEIgPiAwKSB7XG5cdCAgICBpbnN0QSA9IGluc3RBLl9ob3N0UGFyZW50O1xuXHQgICAgZGVw
dGhBLS07XG5cdCAgfVxuXHRcblx0ICAvLyBJZiBCIGlzIGRlZXBlciwgY3Jhd2wgdXAuXG5cdCAg
d2hpbGUgKGRlcHRoQiAtIGRlcHRoQSA+IDApIHtcblx0ICAgIGluc3RCID0gaW5zdEIuX2hvc3RQ
YXJlbnQ7XG5cdCAgICBkZXB0aEItLTtcblx0ICB9XG5cdFxuXHQgIC8vIFdhbGsgaW4gbG9ja3N0
ZXAgdW50aWwgd2UgZmluZCBhIG1hdGNoLlxuXHQgIHZhciBkZXB0aCA9IGRlcHRoQTtcblx0ICB3
aGlsZSAoZGVwdGgtLSkge1xuXHQgICAgaWYgKGluc3RBID09PSBpbnN0Qikge1xuXHQgICAgICBy
ZXR1cm4gaW5zdEE7XG5cdCAgICB9XG5cdCAgICBpbnN0QSA9IGluc3RBLl9ob3N0UGFyZW50O1xu
XHQgICAgaW5zdEIgPSBpbnN0Qi5faG9zdFBhcmVudDtcblx0ICB9XG5cdCAgcmV0dXJuIG51bGw7
XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBSZXR1cm4gaWYgQSBpcyBhbiBhbmNlc3RvciBvZiBCLlxu
XHQgKi9cblx0ZnVuY3Rpb24gaXNBbmNlc3RvcihpbnN0QSwgaW5zdEIpIHtcblx0ICAhKCdfaG9z
dE5vZGUnIGluIGluc3RBKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2lzQW5jZXN0b3I6
IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzUnKSA6IHZvaWQgMDtcblx0
ICAhKCdfaG9zdE5vZGUnIGluIGluc3RCKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2lz
QW5jZXN0b3I6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzUnKSA6IHZv
aWQgMDtcblx0XG5cdCAgd2hpbGUgKGluc3RCKSB7XG5cdCAgICBpZiAoaW5zdEIgPT09IGluc3RB
KSB7XG5cdCAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgfVxuXHQgICAgaW5zdEIgPSBpbnN0Qi5f
aG9zdFBhcmVudDtcblx0ICB9XG5cdCAgcmV0dXJuIGZhbHNlO1xuXHR9XG5cdFxuXHQvKipcblx0
ICogUmV0dXJuIHRoZSBwYXJlbnQgaW5zdGFuY2Ugb2YgdGhlIHBhc3NlZC1pbiBpbnN0YW5jZS5c
blx0ICovXG5cdGZ1bmN0aW9uIGdldFBhcmVudEluc3RhbmNlKGluc3QpIHtcblx0ICAhKCdfaG9z
dE5vZGUnIGluIGluc3QpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0UGFyZW50SW5z
dGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzYnKSA6IHZvaWQg
MDtcblx0XG5cdCAgcmV0dXJuIGluc3QuX2hvc3RQYXJlbnQ7XG5cdH1cblx0XG5cdC8qKlxuXHQg
KiBTaW11bGF0ZXMgdGhlIHRyYXZlcnNhbCBvZiBhIHR3by1waGFzZSwgY2FwdHVyZS9idWJibGUg
ZXZlbnQgZGlzcGF0Y2guXG5cdCAqL1xuXHRmdW5jdGlvbiB0cmF2ZXJzZVR3b1BoYXNlKGluc3Qs
IGZuLCBhcmcpIHtcblx0ICB2YXIgcGF0aCA9IFtdO1xuXHQgIHdoaWxlIChpbnN0KSB7XG5cdCAg
ICBwYXRoLnB1c2goaW5zdCk7XG5cdCAgICBpbnN0ID0gaW5zdC5faG9zdFBhcmVudDtcblx0ICB9
XG5cdCAgdmFyIGk7XG5cdCAgZm9yIChpID0gcGF0aC5sZW5ndGg7IGktLSA+IDA7KSB7XG5cdCAg
ICBmbihwYXRoW2ldLCAnY2FwdHVyZWQnLCBhcmcpO1xuXHQgIH1cblx0ICBmb3IgKGkgPSAwOyBp
IDwgcGF0aC5sZW5ndGg7IGkrKykge1xuXHQgICAgZm4ocGF0aFtpXSwgJ2J1YmJsZWQnLCBhcmcp
O1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFRyYXZlcnNlcyB0aGUgSUQgaGllcmFyY2h5
IGFuZCBpbnZva2VzIHRoZSBzdXBwbGllZCBgY2JgIG9uIGFueSBJRHMgdGhhdFxuXHQgKiBzaG91
bGQgd291bGQgcmVjZWl2ZSBhIGBtb3VzZUVudGVyYCBvciBgbW91c2VMZWF2ZWAgZXZlbnQuXG5c
dCAqXG5cdCAqIERvZXMgbm90IGludm9rZSB0aGUgY2FsbGJhY2sgb24gdGhlIG5lYXJlc3QgY29t
bW9uIGFuY2VzdG9yIGJlY2F1c2Ugbm90aGluZ1xuXHQgKiBcImVudGVyZWRcIiBvciBcImxlZnRc
IiB0aGF0IGVsZW1lbnQuXG5cdCAqL1xuXHRmdW5jdGlvbiB0cmF2ZXJzZUVudGVyTGVhdmUoZnJv
bSwgdG8sIGZuLCBhcmdGcm9tLCBhcmdUbykge1xuXHQgIHZhciBjb21tb24gPSBmcm9tICYmIHRv
ID8gZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IoZnJvbSwgdG8pIDogbnVsbDtcblx0ICB2YXIgcGF0
aEZyb20gPSBbXTtcblx0ICB3aGlsZSAoZnJvbSAmJiBmcm9tICE9PSBjb21tb24pIHtcblx0ICAg
IHBhdGhGcm9tLnB1c2goZnJvbSk7XG5cdCAgICBmcm9tID0gZnJvbS5faG9zdFBhcmVudDtcblx0
ICB9XG5cdCAgdmFyIHBhdGhUbyA9IFtdO1xuXHQgIHdoaWxlICh0byAmJiB0byAhPT0gY29tbW9u
KSB7XG5cdCAgICBwYXRoVG8ucHVzaCh0byk7XG5cdCAgICB0byA9IHRvLl9ob3N0UGFyZW50O1xu
XHQgIH1cblx0ICB2YXIgaTtcblx0ICBmb3IgKGkgPSAwOyBpIDwgcGF0aEZyb20ubGVuZ3RoOyBp
KyspIHtcblx0ICAgIGZuKHBhdGhGcm9tW2ldLCAnYnViYmxlZCcsIGFyZ0Zyb20pO1xuXHQgIH1c
blx0ICBmb3IgKGkgPSBwYXRoVG8ubGVuZ3RoOyBpLS0gPiAwOykge1xuXHQgICAgZm4ocGF0aFRv
W2ldLCAnY2FwdHVyZWQnLCBhcmdUbyk7XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IHtcblx0ICBpc0FuY2VzdG9yOiBpc0FuY2VzdG9yLFxuXHQgIGdldExvd2VzdENvbW1vbkFu
Y2VzdG9yOiBnZXRMb3dlc3RDb21tb25BbmNlc3Rvcixcblx0ICBnZXRQYXJlbnRJbnN0YW5jZTog
Z2V0UGFyZW50SW5zdGFuY2UsXG5cdCAgdHJhdmVyc2VUd29QaGFzZTogdHJhdmVyc2VUd29QaGFz
ZSxcblx0ICB0cmF2ZXJzZUVudGVyTGVhdmU6IHRyYXZlcnNlRW50ZXJMZWF2ZVxuXHR9O1xuXG4v
KioqLyB9LFxuLyogMTQ5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX2Fzc2lnbiA9IF9f
d2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgUmVhY3RVcGRhdGVzID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg5KTtcblx0dmFyIFRyYW5zYWN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
Nyk7XG5cdFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5c
dFxuXHR2YXIgUkVTRVRfQkFUQ0hFRF9VUERBVEVTID0ge1xuXHQgIGluaXRpYWxpemU6IGVtcHR5
RnVuY3Rpb24sXG5cdCAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcblx0ICAgIFJlYWN0RGVmYXVsdEJh
dGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPSBmYWxzZTtcblx0ICB9XG5cdH07XG5c
dFxuXHR2YXIgRkxVU0hfQkFUQ0hFRF9VUERBVEVTID0ge1xuXHQgIGluaXRpYWxpemU6IGVtcHR5
RnVuY3Rpb24sXG5cdCAgY2xvc2U6IFJlYWN0VXBkYXRlcy5mbHVzaEJhdGNoZWRVcGRhdGVzLmJp
bmQoUmVhY3RVcGRhdGVzKVxuXHR9O1xuXHRcblx0dmFyIFRSQU5TQUNUSU9OX1dSQVBQRVJTID0g
W0ZMVVNIX0JBVENIRURfVVBEQVRFUywgUkVTRVRfQkFUQ0hFRF9VUERBVEVTXTtcblx0XG5cdGZ1
bmN0aW9uIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lUcmFuc2FjdGlvbigpIHtcblx0ICB0
aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG5cdH1cblx0XG5cdF9hc3NpZ24oUmVhY3RE
ZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24s
IHtcblx0ICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1
cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG5cdCAgfVxuXHR9KTtcblx0XG5cdHZhciB0cmFuc2Fj
dGlvbiA9IG5ldyBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5VHJhbnNhY3Rpb24oKTtcblx0
XG5cdHZhciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0ge1xuXHQgIGlzQmF0Y2hpbmdV
cGRhdGVzOiBmYWxzZSxcblx0XG5cdCAgLyoqXG5cdCAgICogQ2FsbCB0aGUgcHJvdmlkZWQgZnVu
Y3Rpb24gaW4gYSBjb250ZXh0IHdpdGhpbiB3aGljaCBjYWxscyB0byBgc2V0U3RhdGVgXG5cdCAg
ICogYW5kIGZyaWVuZHMgYXJlIGJhdGNoZWQgc3VjaCB0aGF0IGNvbXBvbmVudHMgYXJlbid0IHVw
ZGF0ZWQgdW5uZWNlc3NhcmlseS5cblx0ICAgKi9cblx0ICBiYXRjaGVkVXBkYXRlczogZnVuY3Rp
b24gKGNhbGxiYWNrLCBhLCBiLCBjLCBkLCBlKSB7XG5cdCAgICB2YXIgYWxyZWFkeUJhdGNoaW5n
VXBkYXRlcyA9IFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXM7
XG5cdFxuXHQgICAgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRl
cyA9IHRydWU7XG5cdFxuXHQgICAgLy8gVGhlIGNvZGUgaXMgd3JpdHRlbiB0aGlzIHdheSB0byBh
dm9pZCBleHRyYSBhbGxvY2F0aW9uc1xuXHQgICAgaWYgKGFscmVhZHlCYXRjaGluZ1VwZGF0ZXMp
IHtcblx0ICAgICAgcmV0dXJuIGNhbGxiYWNrKGEsIGIsIGMsIGQsIGUpO1xuXHQgICAgfSBlbHNl
IHtcblx0ICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnBlcmZvcm0oY2FsbGJhY2ssIG51bGwsIGEs
IGIsIGMsIGQsIGUpO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneTtcblxuLyoqKi8gfSxcbi8qIDE1MCAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0
J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEFSSUFET01Qcm9wZXJ0eUNvbmZpZyA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTI0KTtcblx0dmFyIEJlZm9yZUlucHV0RXZlbnRQbHVnaW4gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEyNik7XG5cdHZhciBDaGFuZ2VFdmVudFBsdWdpbiA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTI4KTtcblx0dmFyIERlZmF1bHRFdmVudFBsdWdpbk9yZGVyID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxMzApO1xuXHR2YXIgRW50ZXJMZWF2ZUV2ZW50UGx1Z2luID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxMzEpO1xuXHR2YXIgSFRNTERPTVByb3BlcnR5Q29uZmlnID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxMzMpO1xuXHR2YXIgUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNSk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudCA9IF9f
d2VicGFja19yZXF1aXJlX18oMTM4KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9f
d2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBSZWFjdERPTUVtcHR5Q29tcG9uZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxNDApO1xuXHR2YXIgUmVhY3RET01UcmVlVHJhdmVyc2FsID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxNDgpO1xuXHR2YXIgUmVhY3RET01UZXh0Q29tcG9uZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxNDYpO1xuXHR2YXIgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVn
eSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ5KTtcblx0dmFyIFJlYWN0RXZlbnRMaXN0ZW5lciA9
IF9fd2VicGFja19yZXF1aXJlX18oMTUzKTtcblx0dmFyIFJlYWN0SW5qZWN0aW9uID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxNTQpO1xuXHR2YXIgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiA9IF9f
d2VicGFja19yZXF1aXJlX18oMTU5KTtcblx0dmFyIFNWR0RPTVByb3BlcnR5Q29uZmlnID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxNjQpO1xuXHR2YXIgU2VsZWN0RXZlbnRQbHVnaW4gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDE2NSk7XG5cdHZhciBTaW1wbGVFdmVudFBsdWdpbiA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTY2KTtcblx0XG5cdHZhciBhbHJlYWR5SW5qZWN0ZWQgPSBmYWxzZTtcblx0XG5c
dGZ1bmN0aW9uIGluamVjdCgpIHtcblx0ICBpZiAoYWxyZWFkeUluamVjdGVkKSB7XG5cdCAgICAv
LyBUT0RPOiBUaGlzIGlzIGN1cnJlbnRseSB0cnVlIGJlY2F1c2UgdGhlc2UgaW5qZWN0aW9ucyBh
cmUgc2hhcmVkIGJldHdlZW5cblx0ICAgIC8vIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIgcGFj
a2FnZS4gVGhleSBzaG91bGQgYmUgYnVpbHQgaW5kZXBlbmRlbnRseVxuXHQgICAgLy8gYW5kIG5v
dCBzaGFyZSBhbnkgaW5qZWN0aW9uIHN0YXRlLiBUaGVuIHRoaXMgcHJvYmxlbSB3aWxsIGJlIHNv
bHZlZC5cblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgYWxyZWFkeUluamVjdGVkID0gdHJ1ZTtc
blx0XG5cdCAgUmVhY3RJbmplY3Rpb24uRXZlbnRFbWl0dGVyLmluamVjdFJlYWN0RXZlbnRMaXN0
ZW5lcihSZWFjdEV2ZW50TGlzdGVuZXIpO1xuXHRcblx0ICAvKipcblx0ICAgKiBJbmplY3QgbW9k
dWxlcyBmb3IgcmVzb2x2aW5nIERPTSBoaWVyYXJjaHkgYW5kIHBsdWdpbiBvcmRlcmluZy5cblx0
ICAgKi9cblx0ICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdp
bk9yZGVyKERlZmF1bHRFdmVudFBsdWdpbk9yZGVyKTtcblx0ICBSZWFjdEluamVjdGlvbi5FdmVu
dFBsdWdpblV0aWxzLmluamVjdENvbXBvbmVudFRyZWUoUmVhY3RET01Db21wb25lbnRUcmVlKTtc
blx0ICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpblV0aWxzLmluamVjdFRyZWVUcmF2ZXJzYWwo
UmVhY3RET01UcmVlVHJhdmVyc2FsKTtcblx0XG5cdCAgLyoqXG5cdCAgICogU29tZSBpbXBvcnRh
bnQgZXZlbnQgcGx1Z2lucyBpbmNsdWRlZCBieSBkZWZhdWx0ICh3aXRob3V0IGhhdmluZyB0byBy
ZXF1aXJlXG5cdCAgICogdGhlbSkuXG5cdCAgICovXG5cdCAgUmVhY3RJbmplY3Rpb24uRXZlbnRQ
bHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lKHtcblx0ICAgIFNpbXBsZUV2ZW50UGx1
Z2luOiBTaW1wbGVFdmVudFBsdWdpbixcblx0ICAgIEVudGVyTGVhdmVFdmVudFBsdWdpbjogRW50
ZXJMZWF2ZUV2ZW50UGx1Z2luLFxuXHQgICAgQ2hhbmdlRXZlbnRQbHVnaW46IENoYW5nZUV2ZW50
UGx1Z2luLFxuXHQgICAgU2VsZWN0RXZlbnRQbHVnaW46IFNlbGVjdEV2ZW50UGx1Z2luLFxuXHQg
ICAgQmVmb3JlSW5wdXRFdmVudFBsdWdpbjogQmVmb3JlSW5wdXRFdmVudFBsdWdpblxuXHQgIH0p
O1xuXHRcblx0ICBSZWFjdEluamVjdGlvbi5Ib3N0Q29tcG9uZW50LmluamVjdEdlbmVyaWNDb21w
b25lbnRDbGFzcyhSZWFjdERPTUNvbXBvbmVudCk7XG5cdFxuXHQgIFJlYWN0SW5qZWN0aW9uLkhv
c3RDb21wb25lbnQuaW5qZWN0VGV4dENvbXBvbmVudENsYXNzKFJlYWN0RE9NVGV4dENvbXBvbmVu
dCk7XG5cdFxuXHQgIFJlYWN0SW5qZWN0aW9uLkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5
Q29uZmlnKEFSSUFET01Qcm9wZXJ0eUNvbmZpZyk7XG5cdCAgUmVhY3RJbmplY3Rpb24uRE9NUHJv
cGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoSFRNTERPTVByb3BlcnR5Q29uZmlnKTtcblx0
ICBSZWFjdEluamVjdGlvbi5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhTVkdE
T01Qcm9wZXJ0eUNvbmZpZyk7XG5cdFxuXHQgIFJlYWN0SW5qZWN0aW9uLkVtcHR5Q29tcG9uZW50
LmluamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeShmdW5jdGlvbiAoaW5zdGFudGlhdGUpIHtcblx0
ICAgIHJldHVybiBuZXcgUmVhY3RET01FbXB0eUNvbXBvbmVudChpbnN0YW50aWF0ZSk7XG5cdCAg
fSk7XG5cdFxuXHQgIFJlYWN0SW5qZWN0aW9uLlVwZGF0ZXMuaW5qZWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb24oUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7XG5cdCAgUmVhY3RJbmplY3Rpb24uVXBk
YXRlcy5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kp
O1xuXHRcblx0ICBSZWFjdEluamVjdGlvbi5Db21wb25lbnQuaW5qZWN0RW52aXJvbm1lbnQoUmVh
Y3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQpO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IHtcblx0ICBpbmplY3Q6IGluamVjdFxuXHR9O1xuXG4vKioqLyB9LFxuLyogMTUxICovXG45
MSxcbi8qIDE1MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEV2ZW50UGx1Z2luSHViID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxOSk7XG5cdFxuXHRmdW5jdGlvbiBydW5FdmVudFF1ZXVlSW5C
YXRjaChldmVudHMpIHtcblx0ICBFdmVudFBsdWdpbkh1Yi5lbnF1ZXVlRXZlbnRzKGV2ZW50cyk7
XG5cdCAgRXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUoZmFsc2UpO1xuXHR9XG5cdFxu
XHR2YXIgUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiA9IHtcblx0ICAvKipcblx0ICAgKiBTdHJlYW1z
IGEgZmlyZWQgdG9wLWxldmVsIGV2ZW50IHRvIGBFdmVudFBsdWdpbkh1YmAgd2hlcmUgcGx1Z2lu
cyBoYXZlIHRoZVxuXHQgICAqIG9wcG9ydHVuaXR5IHRvIGNyZWF0ZSBgUmVhY3RFdmVudGBzIHRv
IGJlIGRpc3BhdGNoZWQuXG5cdCAgICovXG5cdCAgaGFuZGxlVG9wTGV2ZWw6IGZ1bmN0aW9uICh0
b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkg
e1xuXHQgICAgdmFyIGV2ZW50cyA9IEV2ZW50UGx1Z2luSHViLmV4dHJhY3RFdmVudHModG9wTGV2
ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHQg
ICAgcnVuRXZlbnRRdWV1ZUluQmF0Y2goZXZlbnRzKTtcblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1
bGUuZXhwb3J0cyA9IFJlYWN0RXZlbnRFbWl0dGVyTWl4aW47XG5cbi8qKiovIH0sXG4vKiAxNTMg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg0KTtcblx0XG5cdHZhciBFdmVudExpc3RlbmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MSk7
XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5c
dHZhciBQb29sZWRDbGFzcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpO1xuXHR2YXIgUmVhY3RE
T01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFyIFJlYWN0VXBk
YXRlcyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cdFxuXHR2YXIgZ2V0RXZlbnRUYXJnZXQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2KTtcblx0dmFyIGdldFVuYm91bmRlZFNjcm9sbFBvc2l0
aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDQpO1xuXHRcblx0LyoqXG5cdCAqIEZpbmQgdGhl
IGRlZXBlc3QgUmVhY3QgY29tcG9uZW50IGNvbXBsZXRlbHkgY29udGFpbmluZyB0aGUgcm9vdCBv
ZiB0aGVcblx0ICogcGFzc2VkLWluIGluc3RhbmNlIChmb3IgdXNlIHdoZW4gZW50aXJlIFJlYWN0
IHRyZWVzIGFyZSBuZXN0ZWQgd2l0aGluIGVhY2hcblx0ICogb3RoZXIpLiBJZiBSZWFjdCB0cmVl
cyBhcmUgbm90IG5lc3RlZCwgcmV0dXJucyBudWxsLlxuXHQgKi9cblx0ZnVuY3Rpb24gZmluZFBh
cmVudChpbnN0KSB7XG5cdCAgLy8gVE9ETzogSXQgbWF5IGJlIGEgZ29vZCBpZGVhIHRvIGNhY2hl
IHRoaXMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBET01cblx0ICAvLyB0cmF2ZXJzYWwsIGJ1dCBj
YWNoaW5nIGlzIGRpZmZpY3VsdCB0byBkbyBjb3JyZWN0bHkgd2l0aG91dCB1c2luZyBhXG5cdCAg
Ly8gbXV0YXRpb24gb2JzZXJ2ZXIgdG8gbGlzdGVuIGZvciBhbGwgRE9NIGNoYW5nZXMuXG5cdCAg
d2hpbGUgKGluc3QuX2hvc3RQYXJlbnQpIHtcblx0ICAgIGluc3QgPSBpbnN0Ll9ob3N0UGFyZW50
O1xuXHQgIH1cblx0ICB2YXIgcm9vdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9k
ZUZyb21JbnN0YW5jZShpbnN0KTtcblx0ICB2YXIgY29udGFpbmVyID0gcm9vdE5vZGUucGFyZW50
Tm9kZTtcblx0ICByZXR1cm4gUmVhY3RET01Db21wb25lbnRUcmVlLmdldENsb3Nlc3RJbnN0YW5j
ZUZyb21Ob2RlKGNvbnRhaW5lcik7XG5cdH1cblx0XG5cdC8vIFVzZWQgdG8gc3RvcmUgYW5jZXN0
b3IgaGllcmFyY2h5IGluIHRvcCBsZXZlbCBjYWxsYmFja1xuXHRmdW5jdGlvbiBUb3BMZXZlbENh
bGxiYWNrQm9va0tlZXBpbmcodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuXHQgIHRoaXMu
dG9wTGV2ZWxUeXBlID0gdG9wTGV2ZWxUeXBlO1xuXHQgIHRoaXMubmF0aXZlRXZlbnQgPSBuYXRp
dmVFdmVudDtcblx0ICB0aGlzLmFuY2VzdG9ycyA9IFtdO1xuXHR9XG5cdF9hc3NpZ24oVG9wTGV2
ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLnByb3RvdHlwZSwge1xuXHQgIGRlc3RydWN0b3I6IGZ1bmN0
aW9uICgpIHtcblx0ICAgIHRoaXMudG9wTGV2ZWxUeXBlID0gbnVsbDtcblx0ICAgIHRoaXMubmF0
aXZlRXZlbnQgPSBudWxsO1xuXHQgICAgdGhpcy5hbmNlc3RvcnMubGVuZ3RoID0gMDtcblx0ICB9
XG5cdH0pO1xuXHRQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oVG9wTGV2ZWxDYWxsYmFja0Jvb2tL
ZWVwaW5nLCBQb29sZWRDbGFzcy50d29Bcmd1bWVudFBvb2xlcik7XG5cdFxuXHRmdW5jdGlvbiBo
YW5kbGVUb3BMZXZlbEltcGwoYm9va0tlZXBpbmcpIHtcblx0ICB2YXIgbmF0aXZlRXZlbnRUYXJn
ZXQgPSBnZXRFdmVudFRhcmdldChib29rS2VlcGluZy5uYXRpdmVFdmVudCk7XG5cdCAgdmFyIHRh
cmdldEluc3QgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5v
ZGUobmF0aXZlRXZlbnRUYXJnZXQpO1xuXHRcblx0ICAvLyBMb29wIHRocm91Z2ggdGhlIGhpZXJh
cmNoeSwgaW4gY2FzZSB0aGVyZSdzIGFueSBuZXN0ZWQgY29tcG9uZW50cy5cblx0ICAvLyBJdCdz
IGltcG9ydGFudCB0aGF0IHdlIGJ1aWxkIHRoZSBhcnJheSBvZiBhbmNlc3RvcnMgYmVmb3JlIGNh
bGxpbmcgYW55XG5cdCAgLy8gZXZlbnQgaGFuZGxlcnMsIGJlY2F1c2UgZXZlbnQgaGFuZGxlcnMg
Y2FuIG1vZGlmeSB0aGUgRE9NLCBsZWFkaW5nIHRvXG5cdCAgLy8gaW5jb25zaXN0ZW5jaWVzIHdp
dGggUmVhY3RNb3VudCdzIG5vZGUgY2FjaGUuIFNlZSAjMTEwNS5cblx0ICB2YXIgYW5jZXN0b3Ig
PSB0YXJnZXRJbnN0O1xuXHQgIGRvIHtcblx0ICAgIGJvb2tLZWVwaW5nLmFuY2VzdG9ycy5wdXNo
KGFuY2VzdG9yKTtcblx0ICAgIGFuY2VzdG9yID0gYW5jZXN0b3IgJiYgZmluZFBhcmVudChhbmNl
c3Rvcik7XG5cdCAgfSB3aGlsZSAoYW5jZXN0b3IpO1xuXHRcblx0ICBmb3IgKHZhciBpID0gMDsg
aSA8IGJvb2tLZWVwaW5nLmFuY2VzdG9ycy5sZW5ndGg7IGkrKykge1xuXHQgICAgdGFyZ2V0SW5z
dCA9IGJvb2tLZWVwaW5nLmFuY2VzdG9yc1tpXTtcblx0ICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5f
aGFuZGxlVG9wTGV2ZWwoYm9va0tlZXBpbmcudG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBib29r
S2VlcGluZy5uYXRpdmVFdmVudCwgZ2V0RXZlbnRUYXJnZXQoYm9va0tlZXBpbmcubmF0aXZlRXZl
bnQpKTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHNjcm9sbFZhbHVlTW9uaXRvcihjYikg
e1xuXHQgIHZhciBzY3JvbGxQb3NpdGlvbiA9IGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uKHdp
bmRvdyk7XG5cdCAgY2Ioc2Nyb2xsUG9zaXRpb24pO1xuXHR9XG5cdFxuXHR2YXIgUmVhY3RFdmVu
dExpc3RlbmVyID0ge1xuXHQgIF9lbmFibGVkOiB0cnVlLFxuXHQgIF9oYW5kbGVUb3BMZXZlbDog
bnVsbCxcblx0XG5cdCAgV0lORE9XX0hBTkRMRTogRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNl
RE9NID8gd2luZG93IDogbnVsbCxcblx0XG5cdCAgc2V0SGFuZGxlVG9wTGV2ZWw6IGZ1bmN0aW9u
IChoYW5kbGVUb3BMZXZlbCkge1xuXHQgICAgUmVhY3RFdmVudExpc3RlbmVyLl9oYW5kbGVUb3BM
ZXZlbCA9IGhhbmRsZVRvcExldmVsO1xuXHQgIH0sXG5cdFxuXHQgIHNldEVuYWJsZWQ6IGZ1bmN0
aW9uIChlbmFibGVkKSB7XG5cdCAgICBSZWFjdEV2ZW50TGlzdGVuZXIuX2VuYWJsZWQgPSAhIWVu
YWJsZWQ7XG5cdCAgfSxcblx0XG5cdCAgaXNFbmFibGVkOiBmdW5jdGlvbiAoKSB7XG5cdCAgICBy
ZXR1cm4gUmVhY3RFdmVudExpc3RlbmVyLl9lbmFibGVkO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxu
XHQgICAqIFRyYXBzIHRvcC1sZXZlbCBldmVudHMgYnkgdXNpbmcgZXZlbnQgYnViYmxpbmcuXG5c
dCAgICpcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBF
dmVudENvbnN0YW50c2AuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IGhhbmRsZXJCYXNlTmFtZSBF
dmVudCBuYW1lIChlLmcuIFwiY2xpY2tcIikuXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGVsZW1l
bnQgRWxlbWVudCBvbiB3aGljaCB0byBhdHRhY2ggbGlzdGVuZXIuXG5cdCAgICogQHJldHVybiB7
P29iamVjdH0gQW4gb2JqZWN0IHdpdGggYSByZW1vdmUgZnVuY3Rpb24gd2hpY2ggd2lsbCBmb3Jj
ZWZ1bGx5XG5cdCAgICogICAgICAgICAgICAgICAgICByZW1vdmUgdGhlIGxpc3RlbmVyLlxuXHQg
ICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHRyYXBCdWJibGVkRXZlbnQ6IGZ1bmN0aW9uICh0
b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgZWxlbWVudCkge1xuXHQgICAgaWYgKCFlbGVt
ZW50KSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIEV2ZW50
TGlzdGVuZXIubGlzdGVuKGVsZW1lbnQsIGhhbmRsZXJCYXNlTmFtZSwgUmVhY3RFdmVudExpc3Rl
bmVyLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLCB0b3BMZXZlbFR5cGUpKTtcblx0ICB9LFxuXHRc
blx0ICAvKipcblx0ICAgKiBUcmFwcyBhIHRvcC1sZXZlbCBldmVudCBieSB1c2luZyBldmVudCBj
YXB0dXJpbmcuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJl
Y29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IGhhbmRs
ZXJCYXNlTmFtZSBFdmVudCBuYW1lIChlLmcuIFwiY2xpY2tcIikuXG5cdCAgICogQHBhcmFtIHtv
YmplY3R9IGVsZW1lbnQgRWxlbWVudCBvbiB3aGljaCB0byBhdHRhY2ggbGlzdGVuZXIuXG5cdCAg
ICogQHJldHVybiB7P29iamVjdH0gQW4gb2JqZWN0IHdpdGggYSByZW1vdmUgZnVuY3Rpb24gd2hp
Y2ggd2lsbCBmb3JjZWZ1bGx5XG5cdCAgICogICAgICAgICAgICAgICAgICByZW1vdmUgdGhlIGxp
c3RlbmVyLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHRyYXBDYXB0dXJlZEV2ZW50
OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGVsZW1lbnQpIHtcblx0
ICAgIGlmICghZWxlbWVudCkge1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICAg
IHJldHVybiBFdmVudExpc3RlbmVyLmNhcHR1cmUoZWxlbWVudCwgaGFuZGxlckJhc2VOYW1lLCBS
ZWFjdEV2ZW50TGlzdGVuZXIuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsIHRvcExldmVsVHlwZSkp
O1xuXHQgIH0sXG5cdFxuXHQgIG1vbml0b3JTY3JvbGxWYWx1ZTogZnVuY3Rpb24gKHJlZnJlc2gp
IHtcblx0ICAgIHZhciBjYWxsYmFjayA9IHNjcm9sbFZhbHVlTW9uaXRvci5iaW5kKG51bGwsIHJl
ZnJlc2gpO1xuXHQgICAgRXZlbnRMaXN0ZW5lci5saXN0ZW4od2luZG93LCAnc2Nyb2xsJywgY2Fs
bGJhY2spO1xuXHQgIH0sXG5cdFxuXHQgIGRpc3BhdGNoRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZl
bFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgICBpZiAoIVJlYWN0RXZlbnRMaXN0ZW5lci5fZW5h
YmxlZCkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGJvb2tLZWVw
aW5nID0gVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLmdldFBvb2xlZCh0b3BMZXZlbFR5cGUs
IG5hdGl2ZUV2ZW50KTtcblx0ICAgIHRyeSB7XG5cdCAgICAgIC8vIEV2ZW50IHF1ZXVlIGJlaW5n
IHByb2Nlc3NlZCBpbiB0aGUgc2FtZSBjeWNsZSBhbGxvd3Ncblx0ICAgICAgLy8gYHByZXZlbnRE
ZWZhdWx0YC5cblx0ICAgICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKGhhbmRsZVRvcExl
dmVsSW1wbCwgYm9va0tlZXBpbmcpO1xuXHQgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgVG9wTGV2
ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLnJlbGVhc2UoYm9va0tlZXBpbmcpO1xuXHQgICAgfVxuXHQg
IH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RFdmVudExpc3RlbmVyO1xuXG4v
KioqLyB9LFxuLyogMTU0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRE9NUHJvcGVydHkg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcblx0dmFyIEV2ZW50UGx1Z2luSHViID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxOSk7XG5cdHZhciBFdmVudFBsdWdpblV0aWxzID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygzNyk7XG5cdHZhciBSZWFjdENvbXBvbmVudEVudmlyb25tZW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg0MCk7XG5cdHZhciBSZWFjdEVtcHR5Q29tcG9uZW50ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg2Myk7XG5cdHZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDI1KTtcblx0dmFyIFJlYWN0SG9zdENvbXBvbmVudCA9IF9fd2VicGFja19yZXF1
aXJlX18oNjUpO1xuXHR2YXIgUmVhY3RVcGRhdGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtc
blx0XG5cdHZhciBSZWFjdEluamVjdGlvbiA9IHtcblx0ICBDb21wb25lbnQ6IFJlYWN0Q29tcG9u
ZW50RW52aXJvbm1lbnQuaW5qZWN0aW9uLFxuXHQgIERPTVByb3BlcnR5OiBET01Qcm9wZXJ0eS5p
bmplY3Rpb24sXG5cdCAgRW1wdHlDb21wb25lbnQ6IFJlYWN0RW1wdHlDb21wb25lbnQuaW5qZWN0
aW9uLFxuXHQgIEV2ZW50UGx1Z2luSHViOiBFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24sXG5cdCAg
RXZlbnRQbHVnaW5VdGlsczogRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rpb24sXG5cdCAgRXZlbnRF
bWl0dGVyOiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaW5qZWN0aW9uLFxuXHQgIEhvc3RDb21w
b25lbnQ6IFJlYWN0SG9zdENvbXBvbmVudC5pbmplY3Rpb24sXG5cdCAgVXBkYXRlczogUmVhY3RV
cGRhdGVzLmluamVjdGlvblxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluamVj
dGlvbjtcblxuLyoqKi8gfSxcbi8qIDE1NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGFk
bGVyMzIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3Nyk7XG5cdFxuXHR2YXIgVEFHX0VORCA9IC9c
XC8/Pi87XG5cdHZhciBDT01NRU5UX1NUQVJUID0gL148XFwhXFwtXFwtLztcblx0XG5cdHZhciBS
ZWFjdE1hcmt1cENoZWNrc3VtID0ge1xuXHQgIENIRUNLU1VNX0FUVFJfTkFNRTogJ2RhdGEtcmVh
Y3QtY2hlY2tzdW0nLFxuXHRcblx0ICAvKipcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gbWFya3Vw
IE1hcmt1cCBzdHJpbmdcblx0ICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcgd2l0
aCBjaGVja3N1bSBhdHRyaWJ1dGUgYXR0YWNoZWRcblx0ICAgKi9cblx0ICBhZGRDaGVja3N1bVRv
TWFya3VwOiBmdW5jdGlvbiAobWFya3VwKSB7XG5cdCAgICB2YXIgY2hlY2tzdW0gPSBhZGxlcjMy
KG1hcmt1cCk7XG5cdFxuXHQgICAgLy8gQWRkIGNoZWNrc3VtIChoYW5kbGUgYm90aCBwYXJlbnQg
dGFncywgY29tbWVudHMgYW5kIHNlbGYtY2xvc2luZyB0YWdzKVxuXHQgICAgaWYgKENPTU1FTlRf
U1RBUlQudGVzdChtYXJrdXApKSB7XG5cdCAgICAgIHJldHVybiBtYXJrdXA7XG5cdCAgICB9IGVs
c2Uge1xuXHQgICAgICByZXR1cm4gbWFya3VwLnJlcGxhY2UoVEFHX0VORCwgJyAnICsgUmVhY3RN
YXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUgKyAnPVwiJyArIGNoZWNrc3VtICsgJ1wi
JCYnKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcGFyYW0ge3N0cmlu
Z30gbWFya3VwIHRvIHVzZVxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gZWxlbWVudCByb290
IFJlYWN0IGVsZW1lbnRcblx0ICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gd2hldGhlciBvciBub3Qg
dGhlIG1hcmt1cCBpcyB0aGUgc2FtZVxuXHQgICAqL1xuXHQgIGNhblJldXNlTWFya3VwOiBmdW5j
dGlvbiAobWFya3VwLCBlbGVtZW50KSB7XG5cdCAgICB2YXIgZXhpc3RpbmdDaGVja3N1bSA9IGVs
ZW1lbnQuZ2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1F
KTtcblx0ICAgIGV4aXN0aW5nQ2hlY2tzdW0gPSBleGlzdGluZ0NoZWNrc3VtICYmIHBhcnNlSW50
KGV4aXN0aW5nQ2hlY2tzdW0sIDEwKTtcblx0ICAgIHZhciBtYXJrdXBDaGVja3N1bSA9IGFkbGVy
MzIobWFya3VwKTtcblx0ICAgIHJldHVybiBtYXJrdXBDaGVja3N1bSA9PT0gZXhpc3RpbmdDaGVj
a3N1bTtcblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0TWFya3VwQ2hl
Y2tzdW07XG5cbi8qKiovIH0sXG4vKiAxNTYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBf
cHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgUmVhY3RD
b21wb25lbnRFbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNDApO1xuXHR2YXIgUmVh
Y3RJbnN0YW5jZU1hcCA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpO1xuXHR2YXIgUmVhY3RJbnN0
cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXHRcblx0dmFyIFJlYWN0Q3Vy
cmVudE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cdHZhciBSZWFjdFJlY29uY2ls
ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcblx0dmFyIFJlYWN0Q2hpbGRSZWNvbmNpbGVy
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzQpO1xuXHRcblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXHR2YXIgZmxhdHRlbkNoaWxkcmVuID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxODApO1xuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
KTtcblx0XG5cdC8qKlxuXHQgKiBNYWtlIGFuIHVwZGF0ZSBmb3IgbWFya3VwIHRvIGJlIHJlbmRl
cmVkIGFuZCBpbnNlcnRlZCBhdCBhIHN1cHBsaWVkIGluZGV4LlxuXHQgKlxuXHQgKiBAcGFyYW0g
e3N0cmluZ30gbWFya3VwIE1hcmt1cCB0aGF0IHJlbmRlcnMgaW50byBhbiBlbGVtZW50LlxuXHQg
KiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleC5cblx0ICogQHByaXZh
dGVcblx0ICovXG5cdGZ1bmN0aW9uIG1ha2VJbnNlcnRNYXJrdXAobWFya3VwLCBhZnRlck5vZGUs
IHRvSW5kZXgpIHtcblx0ICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNz
ZXMuXG5cdCAgcmV0dXJuIHtcblx0ICAgIHR5cGU6ICdJTlNFUlRfTUFSS1VQJyxcblx0ICAgIGNv
bnRlbnQ6IG1hcmt1cCxcblx0ICAgIGZyb21JbmRleDogbnVsbCxcblx0ICAgIGZyb21Ob2RlOiBu
dWxsLFxuXHQgICAgdG9JbmRleDogdG9JbmRleCxcblx0ICAgIGFmdGVyTm9kZTogYWZ0ZXJOb2Rl
XG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIE1ha2UgYW4gdXBkYXRlIGZvciBtb3Zpbmcg
YW4gZXhpc3RpbmcgZWxlbWVudCB0byBhbm90aGVyIGluZGV4LlxuXHQgKlxuXHQgKiBAcGFyYW0g
e251bWJlcn0gZnJvbUluZGV4IFNvdXJjZSBpbmRleCBvZiB0aGUgZXhpc3RpbmcgZWxlbWVudC5c
blx0ICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXggRGVzdGluYXRpb24gaW5kZXggb2YgdGhlIGVs
ZW1lbnQuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiBtYWtlTW92ZShjaGlsZCwg
YWZ0ZXJOb2RlLCB0b0luZGV4KSB7XG5cdCAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhp
ZGRlbiBjbGFzc2VzLlxuXHQgIHJldHVybiB7XG5cdCAgICB0eXBlOiAnTU9WRV9FWElTVElORycs
XG5cdCAgICBjb250ZW50OiBudWxsLFxuXHQgICAgZnJvbUluZGV4OiBjaGlsZC5fbW91bnRJbmRl
eCxcblx0ICAgIGZyb21Ob2RlOiBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUoY2hpbGQpLFxu
XHQgICAgdG9JbmRleDogdG9JbmRleCxcblx0ICAgIGFmdGVyTm9kZTogYWZ0ZXJOb2RlXG5cdCAg
fTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIE1ha2UgYW4gdXBkYXRlIGZvciByZW1vdmluZyBhbiBl
bGVtZW50IGF0IGFuIGluZGV4LlxuXHQgKlxuXHQgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4
IEluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJlbW92ZS5cblx0ICogQHByaXZhdGVcblx0ICovXG5c
dGZ1bmN0aW9uIG1ha2VSZW1vdmUoY2hpbGQsIG5vZGUpIHtcblx0ICAvLyBOT1RFOiBOdWxsIHZh
bHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG5cdCAgcmV0dXJuIHtcblx0ICAgIHR5cGU6ICdS
RU1PVkVfTk9ERScsXG5cdCAgICBjb250ZW50OiBudWxsLFxuXHQgICAgZnJvbUluZGV4OiBjaGls
ZC5fbW91bnRJbmRleCxcblx0ICAgIGZyb21Ob2RlOiBub2RlLFxuXHQgICAgdG9JbmRleDogbnVs
bCxcblx0ICAgIGFmdGVyTm9kZTogbnVsbFxuXHQgIH07XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBN
YWtlIGFuIHVwZGF0ZSBmb3Igc2V0dGluZyB0aGUgbWFya3VwIG9mIGEgbm9kZS5cblx0ICpcblx0
ICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgdGhhdCByZW5kZXJzIGludG8gYW4gZWxl
bWVudC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0aW9uIG1ha2VTZXRNYXJrdXAobWFy
a3VwKSB7XG5cdCAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxu
XHQgIHJldHVybiB7XG5cdCAgICB0eXBlOiAnU0VUX01BUktVUCcsXG5cdCAgICBjb250ZW50OiBt
YXJrdXAsXG5cdCAgICBmcm9tSW5kZXg6IG51bGwsXG5cdCAgICBmcm9tTm9kZTogbnVsbCxcblx0
ICAgIHRvSW5kZXg6IG51bGwsXG5cdCAgICBhZnRlck5vZGU6IG51bGxcblx0ICB9O1xuXHR9XG5c
dFxuXHQvKipcblx0ICogTWFrZSBhbiB1cGRhdGUgZm9yIHNldHRpbmcgdGhlIHRleHQgY29udGVu
dC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHRDb250ZW50IFRleHQgY29udGVudCB0
byBzZXQuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiBtYWtlVGV4dENvbnRlbnQo
dGV4dENvbnRlbnQpIHtcblx0ICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNs
YXNzZXMuXG5cdCAgcmV0dXJuIHtcblx0ICAgIHR5cGU6ICdURVhUX0NPTlRFTlQnLFxuXHQgICAg
Y29udGVudDogdGV4dENvbnRlbnQsXG5cdCAgICBmcm9tSW5kZXg6IG51bGwsXG5cdCAgICBmcm9t
Tm9kZTogbnVsbCxcblx0ICAgIHRvSW5kZXg6IG51bGwsXG5cdCAgICBhZnRlck5vZGU6IG51bGxc
blx0ICB9O1xuXHR9XG5cdFxuXHQvKipcblx0ICogUHVzaCBhbiB1cGRhdGUsIGlmIGFueSwgb250
byB0aGUgcXVldWUuIENyZWF0ZXMgYSBuZXcgcXVldWUgaWYgbm9uZSBpc1xuXHQgKiBwYXNzZWQg
YW5kIGFsd2F5cyByZXR1cm5zIHRoZSBxdWV1ZS4gTXV0YXRpdmUuXG5cdCAqL1xuXHRmdW5jdGlv
biBlbnF1ZXVlKHF1ZXVlLCB1cGRhdGUpIHtcblx0ICBpZiAodXBkYXRlKSB7XG5cdCAgICBxdWV1
ZSA9IHF1ZXVlIHx8IFtdO1xuXHQgICAgcXVldWUucHVzaCh1cGRhdGUpO1xuXHQgIH1cblx0ICBy
ZXR1cm4gcXVldWU7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBQcm9jZXNzZXMgYW55IGVucXVldWVk
IHVwZGF0ZXMuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiBwcm9jZXNz
UXVldWUoaW5zdCwgdXBkYXRlUXVldWUpIHtcblx0ICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50
LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMoaW5zdCwgdXBkYXRlUXVldWUpO1xuXHR9XG5cdFxuXHR2
YXIgc2V0Q2hpbGRyZW5Gb3JJbnN0cnVtZW50YXRpb24gPSBlbXB0eUZ1bmN0aW9uO1xuXHRpZiAo
ZmFsc2UpIHtcblx0ICB2YXIgZ2V0RGVidWdJRCA9IGZ1bmN0aW9uIChpbnN0KSB7XG5cdCAgICBp
ZiAoIWluc3QuX2RlYnVnSUQpIHtcblx0ICAgICAgLy8gQ2hlY2sgZm9yIEFSVC1saWtlIGluc3Rh
bmNlcy4gVE9ETzogVGhpcyBpcyBzaWxseS9ncm9zcy5cblx0ICAgICAgdmFyIGludGVybmFsO1xu
XHQgICAgICBpZiAoaW50ZXJuYWwgPSBSZWFjdEluc3RhbmNlTWFwLmdldChpbnN0KSkge1xuXHQg
ICAgICAgIGluc3QgPSBpbnRlcm5hbDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJu
IGluc3QuX2RlYnVnSUQ7XG5cdCAgfTtcblx0ICBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRhdGlv
biA9IGZ1bmN0aW9uIChjaGlsZHJlbikge1xuXHQgICAgdmFyIGRlYnVnSUQgPSBnZXREZWJ1Z0lE
KHRoaXMpO1xuXHQgICAgLy8gVE9ETzogUmVhY3QgTmF0aXZlIGVtcHR5IGNvbXBvbmVudHMgYXJl
IGFsc28gbXVsdGljaGlsZC5cblx0ICAgIC8vIFRoaXMgbWVhbnMgdGhleSBzdGlsbCBnZXQgaW50
byB0aGlzIG1ldGhvZCBidXQgZG9uJ3QgaGF2ZSBfZGVidWdJRC5cblx0ICAgIGlmIChkZWJ1Z0lE
ICE9PSAwKSB7XG5cdCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENo
aWxkcmVuKGRlYnVnSUQsIGNoaWxkcmVuID8gT2JqZWN0LmtleXMoY2hpbGRyZW4pLm1hcChmdW5j
dGlvbiAoa2V5KSB7XG5cdCAgICAgICAgcmV0dXJuIGNoaWxkcmVuW2tleV0uX2RlYnVnSUQ7XG5c
dCAgICAgIH0pIDogW10pO1xuXHQgICAgfVxuXHQgIH07XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBS
ZWFjdE11bHRpQ2hpbGQgYXJlIGNhcGFibGUgb2YgcmVjb25jaWxpbmcgbXVsdGlwbGUgY2hpbGRy
ZW4uXG5cdCAqXG5cdCAqIEBjbGFzcyBSZWFjdE11bHRpQ2hpbGRcblx0ICogQGludGVybmFsXG5c
dCAqL1xuXHR2YXIgUmVhY3RNdWx0aUNoaWxkID0ge1xuXHQgIC8qKlxuXHQgICAqIFByb3ZpZGVz
IGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBjb21wb25lbnRzIHRoYXQgbXVzdCByZWNvbmNpbGUg
bXVsdGlwbGVcblx0ICAgKiBjaGlsZHJlbi4gVGhpcyBpcyB1c2VkIGJ5IGBSZWFjdERPTUNvbXBv
bmVudGAgdG8gbW91bnQsIHVwZGF0ZSwgYW5kXG5cdCAgICogdW5tb3VudCBjaGlsZCBjb21wb25l
bnRzLlxuXHQgICAqXG5cdCAgICogQGxlbmRzIHtSZWFjdE11bHRpQ2hpbGQucHJvdG90eXBlfVxu
XHQgICAqL1xuXHQgIE1peGluOiB7XG5cdCAgICBfcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRy
ZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcblx0
ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgdmFyIHNlbGZEZWJ1Z0lEID0gZ2V0RGVidWdJ
RCh0aGlzKTtcblx0ICAgICAgICBpZiAodGhpcy5fY3VycmVudEVsZW1lbnQpIHtcblx0ICAgICAg
ICAgIHRyeSB7XG5cdCAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlz
Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cdCAgICAgICAgICAgIHJldHVybiBSZWFjdENoaWxk
UmVjb25jaWxlci5pbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlv
biwgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xuXHQgICAgICAgICAgfSBmaW5hbGx5IHtcblx0ICAg
ICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IG51bGw7XG5cdCAgICAgICAgICB9
XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBSZWFjdENoaWxkUmVjb25j
aWxlci5pbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29u
dGV4dCk7XG5cdCAgICB9LFxuXHRcblx0ICAgIF9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW46IGZ1
bmN0aW9uIChwcmV2Q2hpbGRyZW4sIG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBtb3VudElt
YWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuXHQgICAgICB2YXIg
bmV4dENoaWxkcmVuO1xuXHQgICAgICB2YXIgc2VsZkRlYnVnSUQgPSAwO1xuXHQgICAgICBpZiAo
ZmFsc2UpIHtcblx0ICAgICAgICBzZWxmRGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7XG5cdCAg
ICAgICAgaWYgKHRoaXMuX2N1cnJlbnRFbGVtZW50KSB7XG5cdCAgICAgICAgICB0cnkge1xuXHQg
ICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcy5fY3VycmVudEVsZW1l
bnQuX293bmVyO1xuXHQgICAgICAgICAgICBuZXh0Q2hpbGRyZW4gPSBmbGF0dGVuQ2hpbGRyZW4o
bmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHNlbGZEZWJ1Z0lEKTtcblx0ICAgICAgICAgIH0g
ZmluYWxseSB7XG5cdCAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxs
O1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudXBkYXRl
Q2hpbGRyZW4ocHJldkNoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIG1vdW50SW1hZ2VzLCByZW1vdmVk
Tm9kZXMsIHRyYW5zYWN0aW9uLCB0aGlzLCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywgY29udGV4
dCwgc2VsZkRlYnVnSUQpO1xuXHQgICAgICAgICAgcmV0dXJuIG5leHRDaGlsZHJlbjtcblx0ICAg
ICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgbmV4dENoaWxkcmVuID0gZmxhdHRlbkNoaWxkcmVu
KG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBzZWxmRGVidWdJRCk7XG5cdCAgICAgIFJlYWN0
Q2hpbGRSZWNvbmNpbGVyLnVwZGF0ZUNoaWxkcmVuKHByZXZDaGlsZHJlbiwgbmV4dENoaWxkcmVu
LCBtb3VudEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgdGhpcywgdGhpcy5faG9z
dENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKTtcblx0ICAgICAgcmV0dXJuIG5l
eHRDaGlsZHJlbjtcblx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBHZW5lcmF0ZXMg
YSBcIm1vdW50IGltYWdlXCIgZm9yIGVhY2ggb2YgdGhlIHN1cHBsaWVkIGNoaWxkcmVuLiBJbiB0
aGUgY2FzZVxuXHQgICAgICogb2YgYFJlYWN0RE9NQ29tcG9uZW50YCwgYSBtb3VudCBpbWFnZSBp
cyBhIHN0cmluZyBvZiBtYXJrdXAuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHs/b2JqZWN0
fSBuZXN0ZWRDaGlsZHJlbiBOZXN0ZWQgY2hpbGQgbWFwcy5cblx0ICAgICAqIEByZXR1cm4ge2Fy
cmF5fSBBbiBhcnJheSBvZiBtb3VudGVkIHJlcHJlc2VudGF0aW9ucy5cblx0ICAgICAqIEBpbnRl
cm5hbFxuXHQgICAgICovXG5cdCAgICBtb3VudENoaWxkcmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hp
bGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG5cdCAgICAgIHZhciBjaGlsZHJlbiA9IHRo
aXMuX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2Fj
dGlvbiwgY29udGV4dCk7XG5cdCAgICAgIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBjaGlsZHJl
bjtcblx0XG5cdCAgICAgIHZhciBtb3VudEltYWdlcyA9IFtdO1xuXHQgICAgICB2YXIgaW5kZXgg
PSAwO1xuXHQgICAgICBmb3IgKHZhciBuYW1lIGluIGNoaWxkcmVuKSB7XG5cdCAgICAgICAgaWYg
KGNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG5cdCAgICAgICAgICB2YXIgY2hpbGQg
PSBjaGlsZHJlbltuYW1lXTtcblx0ICAgICAgICAgIHZhciBzZWxmRGVidWdJRCA9IDA7XG5cdCAg
ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgICAgc2VsZkRlYnVnSUQgPSBnZXREZWJ1
Z0lEKHRoaXMpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgdmFyIG1vdW50SW1hZ2UgPSBS
ZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY2hpbGQsIHRyYW5zYWN0aW9uLCB0aGlzLCB0
aGlzLl9ob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xuXHQgICAgICAg
ICAgY2hpbGQuX21vdW50SW5kZXggPSBpbmRleCsrO1xuXHQgICAgICAgICAgbW91bnRJbWFnZXMu
cHVzaChtb3VudEltYWdlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGlm
IChmYWxzZSkge1xuXHQgICAgICAgIHNldENoaWxkcmVuRm9ySW5zdHJ1bWVudGF0aW9uLmNhbGwo
dGhpcywgY2hpbGRyZW4pO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICByZXR1cm4gbW91bnRJbWFn
ZXM7XG5cdCAgICB9LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogUmVwbGFjZXMgYW55IHJlbmRl
cmVkIGNoaWxkcmVuIHdpdGggYSB0ZXh0IGNvbnRlbnQgc3RyaW5nLlxuXHQgICAgICpcblx0ICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBuZXh0Q29udGVudCBTdHJpbmcgb2YgY29udGVudC5cblx0ICAg
ICAqIEBpbnRlcm5hbFxuXHQgICAgICovXG5cdCAgICB1cGRhdGVUZXh0Q29udGVudDogZnVuY3Rp
b24gKG5leHRDb250ZW50KSB7XG5cdCAgICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLl9yZW5k
ZXJlZENoaWxkcmVuO1xuXHQgICAgICAvLyBSZW1vdmUgYW55IHJlbmRlcmVkIGNoaWxkcmVuLlxu
XHQgICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51bm1vdW50Q2hpbGRyZW4ocHJldkNoaWxkcmVu
LCBmYWxzZSk7XG5cdCAgICAgIGZvciAodmFyIG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7XG5cdCAg
ICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuXHQgICAgICAg
ICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGVUZXh0Q29udGVudCBj
YWxsZWQgb24gbm9uLWVtcHR5IGNvbXBvbmVudC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMTgnKSA6
IHZvaWQgMDtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgLy8gU2V0IG5ldyB0ZXh0
IGNvbnRlbnQuXG5cdCAgICAgIHZhciB1cGRhdGVzID0gW21ha2VUZXh0Q29udGVudChuZXh0Q29u
dGVudCldO1xuXHQgICAgICBwcm9jZXNzUXVldWUodGhpcywgdXBkYXRlcyk7XG5cdCAgICB9LFxu
XHRcblx0ICAgIC8qKlxuXHQgICAgICogUmVwbGFjZXMgYW55IHJlbmRlcmVkIGNoaWxkcmVuIHdp
dGggYSBtYXJrdXAgc3RyaW5nLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBu
ZXh0TWFya3VwIFN0cmluZyBvZiBtYXJrdXAuXG5cdCAgICAgKiBAaW50ZXJuYWxcblx0ICAgICAq
L1xuXHQgICAgdXBkYXRlTWFya3VwOiBmdW5jdGlvbiAobmV4dE1hcmt1cCkge1xuXHQgICAgICB2
YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtcblx0ICAgICAgLy8gUmVt
b3ZlIGFueSByZW5kZXJlZCBjaGlsZHJlbi5cblx0ICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIu
dW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbiwgZmFsc2UpO1xuXHQgICAgICBmb3IgKHZhciBu
YW1lIGluIHByZXZDaGlsZHJlbikge1xuXHQgICAgICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFzT3du
UHJvcGVydHkobmFtZSkpIHtcblx0ICAgICAgICAgICB0cnVlID8gIGZhbHNlID8gaW52YXJpYW50
KGZhbHNlLCAndXBkYXRlVGV4dENvbnRlbnQgY2FsbGVkIG9uIG5vbi1lbXB0eSBjb21wb25lbnQu
JykgOiBfcHJvZEludmFyaWFudCgnMTE4JykgOiB2b2lkIDA7XG5cdCAgICAgICAgfVxuXHQgICAg
ICB9XG5cdCAgICAgIHZhciB1cGRhdGVzID0gW21ha2VTZXRNYXJrdXAobmV4dE1hcmt1cCldO1xu
XHQgICAgICBwcm9jZXNzUXVldWUodGhpcywgdXBkYXRlcyk7XG5cdCAgICB9LFxuXHRcblx0ICAg
IC8qKlxuXHQgICAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBuZXcgY2hp
bGRyZW4uXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0TmVzdGVkQ2hp
bGRyZW5FbGVtZW50cyBOZXN0ZWQgY2hpbGQgZWxlbWVudCBtYXBzLlxuXHQgICAgICogQHBhcmFt
IHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAgICogQGludGVy
bmFsXG5cdCAgICAgKi9cblx0ICAgIHVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmV4dE5lc3Rl
ZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG5cdCAgICAgIC8vIEhv
b2sgdXNlZCBieSBSZWFjdCBBUlRcblx0ICAgICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4obmV4dE5l
c3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblx0ICAgIH0sXG5c
dFxuXHQgICAgLyoqXG5cdCAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHROZXN0ZWRDaGlsZHJl
bkVsZW1lbnRzIE5lc3RlZCBjaGlsZCBlbGVtZW50IG1hcHMuXG5cdCAgICAgKiBAcGFyYW0ge1Jl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICAgKiBAZmluYWxcblx0
ICAgICAqIEBwcm90ZWN0ZWRcblx0ICAgICAqL1xuXHQgICAgX3VwZGF0ZUNoaWxkcmVuOiBmdW5j
dGlvbiAobmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7
XG5cdCAgICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuXHQg
ICAgICB2YXIgcmVtb3ZlZE5vZGVzID0ge307XG5cdCAgICAgIHZhciBtb3VudEltYWdlcyA9IFtd
O1xuXHQgICAgICB2YXIgbmV4dENoaWxkcmVuID0gdGhpcy5fcmVjb25jaWxlclVwZGF0ZUNoaWxk
cmVuKHByZXZDaGlsZHJlbiwgbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIG1vdW50SW1hZ2Vz
LCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblx0ICAgICAgaWYgKCFuZXh0
Q2hpbGRyZW4gJiYgIXByZXZDaGlsZHJlbikge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgICAg
fVxuXHQgICAgICB2YXIgdXBkYXRlcyA9IG51bGw7XG5cdCAgICAgIHZhciBuYW1lO1xuXHQgICAg
ICAvLyBgbmV4dEluZGV4YCB3aWxsIGluY3JlbWVudCBmb3IgZWFjaCBjaGlsZCBpbiBgbmV4dENo
aWxkcmVuYCwgYnV0XG5cdCAgICAgIC8vIGBsYXN0SW5kZXhgIHdpbGwgYmUgdGhlIGxhc3QgaW5k
ZXggdmlzaXRlZCBpbiBgcHJldkNoaWxkcmVuYC5cblx0ICAgICAgdmFyIG5leHRJbmRleCA9IDA7
XG5cdCAgICAgIHZhciBsYXN0SW5kZXggPSAwO1xuXHQgICAgICAvLyBgbmV4dE1vdW50SW5kZXhg
IHdpbGwgaW5jcmVtZW50IGZvciBlYWNoIG5ld2x5IG1vdW50ZWQgY2hpbGQuXG5cdCAgICAgIHZh
ciBuZXh0TW91bnRJbmRleCA9IDA7XG5cdCAgICAgIHZhciBsYXN0UGxhY2VkTm9kZSA9IG51bGw7
XG5cdCAgICAgIGZvciAobmFtZSBpbiBuZXh0Q2hpbGRyZW4pIHtcblx0ICAgICAgICBpZiAoIW5l
eHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuXHQgICAgICAgICAgY29udGludWU7
XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRyZW4gJiYg
cHJldkNoaWxkcmVuW25hbWVdO1xuXHQgICAgICAgIHZhciBuZXh0Q2hpbGQgPSBuZXh0Q2hpbGRy
ZW5bbmFtZV07XG5cdCAgICAgICAgaWYgKHByZXZDaGlsZCA9PT0gbmV4dENoaWxkKSB7XG5cdCAg
ICAgICAgICB1cGRhdGVzID0gZW5xdWV1ZSh1cGRhdGVzLCB0aGlzLm1vdmVDaGlsZChwcmV2Q2hp
bGQsIGxhc3RQbGFjZWROb2RlLCBuZXh0SW5kZXgsIGxhc3RJbmRleCkpO1xuXHQgICAgICAgICAg
bGFzdEluZGV4ID0gTWF0aC5tYXgocHJldkNoaWxkLl9tb3VudEluZGV4LCBsYXN0SW5kZXgpO1xu
XHQgICAgICAgICAgcHJldkNoaWxkLl9tb3VudEluZGV4ID0gbmV4dEluZGV4O1xuXHQgICAgICAg
IH0gZWxzZSB7XG5cdCAgICAgICAgICBpZiAocHJldkNoaWxkKSB7XG5cdCAgICAgICAgICAgIC8v
IFVwZGF0ZSBgbGFzdEluZGV4YCBiZWZvcmUgYF9tb3VudEluZGV4YCBnZXRzIHVuc2V0IGJ5IHVu
bW91bnRpbmcuXG5cdCAgICAgICAgICAgIGxhc3RJbmRleCA9IE1hdGgubWF4KHByZXZDaGlsZC5f
bW91bnRJbmRleCwgbGFzdEluZGV4KTtcblx0ICAgICAgICAgICAgLy8gVGhlIGByZW1vdmVkTm9k
ZXNgIGxvb3AgYmVsb3cgd2lsbCBhY3R1YWxseSByZW1vdmUgdGhlIGNoaWxkLlxuXHQgICAgICAg
ICAgfVxuXHQgICAgICAgICAgLy8gVGhlIGNoaWxkIG11c3QgYmUgaW5zdGFudGlhdGVkIGJlZm9y
ZSBpdCdzIG1vdW50ZWQuXG5cdCAgICAgICAgICB1cGRhdGVzID0gZW5xdWV1ZSh1cGRhdGVzLCB0
aGlzLl9tb3VudENoaWxkQXRJbmRleChuZXh0Q2hpbGQsIG1vdW50SW1hZ2VzW25leHRNb3VudElu
ZGV4XSwgbGFzdFBsYWNlZE5vZGUsIG5leHRJbmRleCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpKTtc
blx0ICAgICAgICAgIG5leHRNb3VudEluZGV4Kys7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIG5l
eHRJbmRleCsrO1xuXHQgICAgICAgIGxhc3RQbGFjZWROb2RlID0gUmVhY3RSZWNvbmNpbGVyLmdl
dEhvc3ROb2RlKG5leHRDaGlsZCk7XG5cdCAgICAgIH1cblx0ICAgICAgLy8gUmVtb3ZlIGNoaWxk
cmVuIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVzZW50LlxuXHQgICAgICBmb3IgKG5hbWUgaW4gcmVt
b3ZlZE5vZGVzKSB7XG5cdCAgICAgICAgaWYgKHJlbW92ZWROb2Rlcy5oYXNPd25Qcm9wZXJ0eShu
YW1lKSkge1xuXHQgICAgICAgICAgdXBkYXRlcyA9IGVucXVldWUodXBkYXRlcywgdGhpcy5fdW5t
b3VudENoaWxkKHByZXZDaGlsZHJlbltuYW1lXSwgcmVtb3ZlZE5vZGVzW25hbWVdKSk7XG5cdCAg
ICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIGlmICh1cGRhdGVzKSB7XG5cdCAgICAgICAgcHJv
Y2Vzc1F1ZXVlKHRoaXMsIHVwZGF0ZXMpO1xuXHQgICAgICB9XG5cdCAgICAgIHRoaXMuX3JlbmRl
cmVkQ2hpbGRyZW4gPSBuZXh0Q2hpbGRyZW47XG5cdFxuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0
ICAgICAgICBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRhdGlvbi5jYWxsKHRoaXMsIG5leHRDaGls
ZHJlbik7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBVbm1v
dW50cyBhbGwgcmVuZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hvdWxkIGJlIHVzZWQgdG8gY2xlYW4g
dXAgY2hpbGRyZW5cblx0ICAgICAqIHdoZW4gdGhpcyBjb21wb25lbnQgaXMgdW5tb3VudGVkLiBJ
dCBkb2VzIG5vdCBhY3R1YWxseSBwZXJmb3JtIGFueVxuXHQgICAgICogYmFja2VuZCBvcGVyYXRp
b25zLlxuXHQgICAgICpcblx0ICAgICAqIEBpbnRlcm5hbFxuXHQgICAgICovXG5cdCAgICB1bm1v
dW50Q2hpbGRyZW46IGZ1bmN0aW9uIChzYWZlbHkpIHtcblx0ICAgICAgdmFyIHJlbmRlcmVkQ2hp
bGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuXHQgICAgICBSZWFjdENoaWxkUmVjb25j
aWxlci51bm1vdW50Q2hpbGRyZW4ocmVuZGVyZWRDaGlsZHJlbiwgc2FmZWx5KTtcblx0ICAgICAg
dGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG51bGw7XG5cdCAgICB9LFxuXHRcblx0ICAgIC8qKlxu
XHQgICAgICogTW92ZXMgYSBjaGlsZCBjb21wb25lbnQgdG8gdGhlIHN1cHBsaWVkIGluZGV4Llxu
XHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVu
dCB0byBtb3ZlLlxuXHQgICAgICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXggRGVzdGluYXRpb24g
aW5kZXggb2YgdGhlIGVsZW1lbnQuXG5cdCAgICAgKiBAcGFyYW0ge251bWJlcn0gbGFzdEluZGV4
IExhc3QgaW5kZXggdmlzaXRlZCBvZiB0aGUgc2libGluZ3Mgb2YgYGNoaWxkYC5cblx0ICAgICAq
IEBwcm90ZWN0ZWRcblx0ICAgICAqL1xuXHQgICAgbW92ZUNoaWxkOiBmdW5jdGlvbiAoY2hpbGQs
IGFmdGVyTm9kZSwgdG9JbmRleCwgbGFzdEluZGV4KSB7XG5cdCAgICAgIC8vIElmIHRoZSBpbmRl
eCBvZiBgY2hpbGRgIGlzIGxlc3MgdGhhbiBgbGFzdEluZGV4YCwgdGhlbiBpdCBuZWVkcyB0b1xu
XHQgICAgICAvLyBiZSBtb3ZlZC4gT3RoZXJ3aXNlLCB3ZSBkbyBub3QgbmVlZCB0byBtb3ZlIGl0
IGJlY2F1c2UgYSBjaGlsZCB3aWxsIGJlXG5cdCAgICAgIC8vIGluc2VydGVkIG9yIG1vdmVkIGJl
Zm9yZSBgY2hpbGRgLlxuXHQgICAgICBpZiAoY2hpbGQuX21vdW50SW5kZXggPCBsYXN0SW5kZXgp
IHtcblx0ICAgICAgICByZXR1cm4gbWFrZU1vdmUoY2hpbGQsIGFmdGVyTm9kZSwgdG9JbmRleCk7
XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBDcmVhdGVzIGEg
Y2hpbGQgY29tcG9uZW50LlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25l
bnR9IGNoaWxkIENvbXBvbmVudCB0byBjcmVhdGUuXG5cdCAgICAgKiBAcGFyYW0ge3N0cmluZ30g
bW91bnRJbWFnZSBNYXJrdXAgdG8gaW5zZXJ0LlxuXHQgICAgICogQHByb3RlY3RlZFxuXHQgICAg
ICovXG5cdCAgICBjcmVhdGVDaGlsZDogZnVuY3Rpb24gKGNoaWxkLCBhZnRlck5vZGUsIG1vdW50
SW1hZ2UpIHtcblx0ICAgICAgcmV0dXJuIG1ha2VJbnNlcnRNYXJrdXAobW91bnRJbWFnZSwgYWZ0
ZXJOb2RlLCBjaGlsZC5fbW91bnRJbmRleCk7XG5cdCAgICB9LFxuXHRcblx0ICAgIC8qKlxuXHQg
ICAgICogUmVtb3ZlcyBhIGNoaWxkIGNvbXBvbmVudC5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFy
YW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDaGlsZCB0byByZW1vdmUuXG5cdCAgICAgKiBAcHJv
dGVjdGVkXG5cdCAgICAgKi9cblx0ICAgIHJlbW92ZUNoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIG5v
ZGUpIHtcblx0ICAgICAgcmV0dXJuIG1ha2VSZW1vdmUoY2hpbGQsIG5vZGUpO1xuXHQgICAgfSxc
blx0XG5cdCAgICAvKipcblx0ICAgICAqIE1vdW50cyBhIGNoaWxkIHdpdGggdGhlIHN1cHBsaWVk
IG5hbWUuXG5cdCAgICAgKlxuXHQgICAgICogTk9URTogVGhpcyBpcyBwYXJ0IG9mIGB1cGRhdGVD
aGlsZHJlbmAgYW5kIGlzIGhlcmUgZm9yIHJlYWRhYmlsaXR5LlxuXHQgICAgICpcblx0ICAgICAq
IEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBtb3VudC5cblx0ICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGNoaWxkLlxuXHQgICAgICogQHBh
cmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IGF0IHdoaWNoIHRvIGluc2VydCB0aGUgY2hpbGQuXG5c
dCAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5c
dCAgICAgKiBAcHJpdmF0ZVxuXHQgICAgICovXG5cdCAgICBfbW91bnRDaGlsZEF0SW5kZXg6IGZ1
bmN0aW9uIChjaGlsZCwgbW91bnRJbWFnZSwgYWZ0ZXJOb2RlLCBpbmRleCwgdHJhbnNhY3Rpb24s
IGNvbnRleHQpIHtcblx0ICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBpbmRleDtcblx0ICAgICAg
cmV0dXJuIHRoaXMuY3JlYXRlQ2hpbGQoY2hpbGQsIGFmdGVyTm9kZSwgbW91bnRJbWFnZSk7XG5c
dCAgICB9LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogVW5tb3VudHMgYSByZW5kZXJlZCBjaGls
ZC5cblx0ICAgICAqXG5cdCAgICAgKiBOT1RFOiBUaGlzIGlzIHBhcnQgb2YgYHVwZGF0ZUNoaWxk
cmVuYCBhbmQgaXMgaGVyZSBmb3IgcmVhZGFiaWxpdHkuXG5cdCAgICAgKlxuXHQgICAgICogQHBh
cmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIHVubW91bnQuXG5cdCAgICAg
KiBAcHJpdmF0ZVxuXHQgICAgICovXG5cdCAgICBfdW5tb3VudENoaWxkOiBmdW5jdGlvbiAoY2hp
bGQsIG5vZGUpIHtcblx0ICAgICAgdmFyIHVwZGF0ZSA9IHRoaXMucmVtb3ZlQ2hpbGQoY2hpbGQs
IG5vZGUpO1xuXHQgICAgICBjaGlsZC5fbW91bnRJbmRleCA9IG51bGw7XG5cdCAgICAgIHJldHVy
biB1cGRhdGU7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdE11bHRpQ2hpbGQ7XG5cbi8qKiovIH0sXG4vKiAxNTcgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5c
dCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmlj
dCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xu
XHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHQvKipc
blx0ICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3Rcblx0ICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1
ZSBpZiBgb2JqZWN0YCBpcyBhIHZhbGlkIG93bmVyLlxuXHQgKiBAZmluYWxcblx0ICovXG5cdGZ1
bmN0aW9uIGlzVmFsaWRPd25lcihvYmplY3QpIHtcblx0ICByZXR1cm4gISEob2JqZWN0ICYmIHR5
cGVvZiBvYmplY3QuYXR0YWNoUmVmID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBvYmplY3QuZGV0
YWNoUmVmID09PSAnZnVuY3Rpb24nKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFJlYWN0T3duZXJz
IGFyZSBjYXBhYmxlIG9mIHN0b3JpbmcgcmVmZXJlbmNlcyB0byBvd25lZCBjb21wb25lbnRzLlxu
XHQgKlxuXHQgKiBBbGwgY29tcG9uZW50cyBhcmUgY2FwYWJsZSBvZiAvL2JlaW5nLy8gcmVmZXJl
bmNlZCBieSBvd25lciBjb21wb25lbnRzLCBidXRcblx0ICogb25seSBSZWFjdE93bmVyIGNvbXBv
bmVudHMgYXJlIGNhcGFibGUgb2YgLy9yZWZlcmVuY2luZy8vIG93bmVkIGNvbXBvbmVudHMuXG5c
dCAqIFRoZSBuYW1lZCByZWZlcmVuY2UgaXMga25vd24gYXMgYSBcInJlZlwiLlxuXHQgKlxuXHQg
KiBSZWZzIGFyZSBhdmFpbGFibGUgd2hlbiBtb3VudGVkIGFuZCB1cGRhdGVkIGR1cmluZyByZWNv
bmNpbGlhdGlvbi5cblx0ICpcblx0ICogICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVD
bGFzcyh7XG5cdCAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuXHQgKiAgICAgICByZXR1cm4g
KFxuXHQgKiAgICAgICAgIDxkaXYgb25DbGljaz17dGhpcy5oYW5kbGVDbGlja30+XG5cdCAqICAg
ICAgICAgICA8Q3VzdG9tQ29tcG9uZW50IHJlZj1cImN1c3RvbVwiIC8+XG5cdCAqICAgICAgICAg
PC9kaXY+XG5cdCAqICAgICAgICk7XG5cdCAqICAgICB9LFxuXHQgKiAgICAgaGFuZGxlQ2xpY2s6
IGZ1bmN0aW9uKCkge1xuXHQgKiAgICAgICB0aGlzLnJlZnMuY3VzdG9tLmhhbmRsZUNsaWNrKCk7
XG5cdCAqICAgICB9LFxuXHQgKiAgICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uKCkge1xu
XHQgKiAgICAgICB0aGlzLnJlZnMuY3VzdG9tLmluaXRpYWxpemUoKTtcblx0ICogICAgIH1cblx0
ICogICB9KTtcblx0ICpcblx0ICogUmVmcyBzaG91bGQgcmFyZWx5IGJlIHVzZWQuIFdoZW4gcmVm
cyBhcmUgdXNlZCwgdGhleSBzaG91bGQgb25seSBiZSBkb25lIHRvXG5cdCAqIGNvbnRyb2wgZGF0
YSB0aGF0IGlzIG5vdCBoYW5kbGVkIGJ5IFJlYWN0J3MgZGF0YSBmbG93LlxuXHQgKlxuXHQgKiBA
Y2xhc3MgUmVhY3RPd25lclxuXHQgKi9cblx0dmFyIFJlYWN0T3duZXIgPSB7XG5cdCAgLyoqXG5c
dCAgICogQWRkcyBhIGNvbXBvbmVudCBieSByZWYgdG8gYW4gb3duZXIgY29tcG9uZW50LlxuXHQg
ICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50IENvbXBvbmVudCB0
byByZWZlcmVuY2UuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1lIGJ5IHdoaWNoIHRv
IHJlZmVyIHRvIHRoZSBjb21wb25lbnQuXG5cdCAgICogQHBhcmFtIHtSZWFjdE93bmVyfSBvd25l
ciBDb21wb25lbnQgb24gd2hpY2ggdG8gcmVjb3JkIHRoZSByZWYuXG5cdCAgICogQGZpbmFsXG5c
dCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgYWRkQ29tcG9uZW50QXNSZWZUbzogZnVuY3Rp
b24gKGNvbXBvbmVudCwgcmVmLCBvd25lcikge1xuXHQgICAgIWlzVmFsaWRPd25lcihvd25lcikg
PyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdhZGRDb21wb25lbnRBc1JlZlRvKC4uLik6IE9u
bHkgYSBSZWFjdE93bmVyIGNhbiBoYXZlIHJlZnMuIFlvdSBtaWdodCBiZSBhZGRpbmcgYSByZWYg
dG8gYSBjb21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRlIGEgY29tcG9uZW50XFwn
cyBgcmVuZGVyYCBtZXRob2QsIG9yIHlvdSBoYXZlIG11bHRpcGxlIGNvcGllcyBvZiBSZWFjdCBs
b2FkZWQgKGRldGFpbHM6IGh0dHBzOi8vZmIubWUvcmVhY3QtcmVmcy1tdXN0LWhhdmUtb3duZXIp
LicpIDogX3Byb2RJbnZhcmlhbnQoJzExOScpIDogdm9pZCAwO1xuXHQgICAgb3duZXIuYXR0YWNo
UmVmKHJlZiwgY29tcG9uZW50KTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBSZW1vdmVz
IGEgY29tcG9uZW50IGJ5IHJlZiBmcm9tIGFuIG93bmVyIGNvbXBvbmVudC5cblx0ICAgKlxuXHQg
ICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gZGVyZWZl
cmVuY2UuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1lIG9mIHRoZSByZWYgdG8gcmVt
b3ZlLlxuXHQgICAqIEBwYXJhbSB7UmVhY3RPd25lcn0gb3duZXIgQ29tcG9uZW50IG9uIHdoaWNo
IHRoZSByZWYgaXMgcmVjb3JkZWQuXG5cdCAgICogQGZpbmFsXG5cdCAgICogQGludGVybmFsXG5c
dCAgICovXG5cdCAgcmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tOiBmdW5jdGlvbiAoY29tcG9uZW50
LCByZWYsIG93bmVyKSB7XG5cdCAgICAhaXNWYWxpZE93bmVyKG93bmVyKSA/ICBmYWxzZSA/IGlu
dmFyaWFudChmYWxzZSwgJ3JlbW92ZUNvbXBvbmVudEFzUmVmRnJvbSguLi4pOiBPbmx5IGEgUmVh
Y3RPd25lciBjYW4gaGF2ZSByZWZzLiBZb3UgbWlnaHQgYmUgcmVtb3ZpbmcgYSByZWYgdG8gYSBj
b21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRlIGEgY29tcG9uZW50XFwncyBgcmVu
ZGVyYCBtZXRob2QsIG9yIHlvdSBoYXZlIG11bHRpcGxlIGNvcGllcyBvZiBSZWFjdCBsb2FkZWQg
KGRldGFpbHM6IGh0dHBzOi8vZmIubWUvcmVhY3QtcmVmcy1tdXN0LWhhdmUtb3duZXIpLicpIDog
X3Byb2RJbnZhcmlhbnQoJzEyMCcpIDogdm9pZCAwO1xuXHQgICAgdmFyIG93bmVyUHVibGljSW5z
dGFuY2UgPSBvd25lci5nZXRQdWJsaWNJbnN0YW5jZSgpO1xuXHQgICAgLy8gQ2hlY2sgdGhhdCBg
Y29tcG9uZW50YCdzIG93bmVyIGlzIHN0aWxsIGFsaXZlIGFuZCB0aGF0IGBjb21wb25lbnRgIGlz
IHN0aWxsIHRoZSBjdXJyZW50IHJlZlxuXHQgICAgLy8gYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0
byBkZXRhY2ggdGhlIHJlZiBpZiBhbm90aGVyIGNvbXBvbmVudCBzdG9sZSBpdC5cblx0ICAgIGlm
IChvd25lclB1YmxpY0luc3RhbmNlICYmIG93bmVyUHVibGljSW5zdGFuY2UucmVmc1tyZWZdID09
PSBjb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSkge1xuXHQgICAgICBvd25lci5kZXRhY2hS
ZWYocmVmKTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJl
YWN0T3duZXI7XG5cbi8qKiovIH0sXG4vKiAxNTggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxu
XHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUmVhY3RQcm9wVHlw
ZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQn
O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcblxuLyoqKi8g
fSxcbi8qIDE1OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9hc3NpZ24gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIENhbGxiYWNrUXVldWUgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDU5KTtcblx0dmFyIFBvb2xlZENsYXNzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7
XG5cdHZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1
KTtcblx0dmFyIFJlYWN0SW5wdXRTZWxlY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY2KTtc
blx0dmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblx0
dmFyIFRyYW5zYWN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7XG5cdHZhciBSZWFjdFVw
ZGF0ZVF1ZXVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdFxuXHQvKipcblx0ICogRW5z
dXJlcyB0aGF0LCB3aGVuIHBvc3NpYmxlLCB0aGUgc2VsZWN0aW9uIHJhbmdlIChjdXJyZW50bHkg
c2VsZWN0ZWQgdGV4dFxuXHQgKiBpbnB1dCkgaXMgbm90IGRpc3R1cmJlZCBieSBwZXJmb3JtaW5n
IHRoZSB0cmFuc2FjdGlvbi5cblx0ICovXG5cdHZhciBTRUxFQ1RJT05fUkVTVE9SQVRJT04gPSB7
XG5cdCAgLyoqXG5cdCAgICogQHJldHVybiB7U2VsZWN0aW9ufSBTZWxlY3Rpb24gaW5mb3JtYXRp
b24uXG5cdCAgICovXG5cdCAgaW5pdGlhbGl6ZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5nZXRTZWxl
Y3Rpb25JbmZvcm1hdGlvbixcblx0ICAvKipcblx0ICAgKiBAcGFyYW0ge1NlbGVjdGlvbn0gc2Vs
IFNlbGVjdGlvbiBpbmZvcm1hdGlvbiByZXR1cm5lZCBmcm9tIGBpbml0aWFsaXplYC5cblx0ICAg
Ki9cblx0ICBjbG9zZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5yZXN0b3JlU2VsZWN0aW9uXG5cdH07
XG5cdFxuXHQvKipcblx0ICogU3VwcHJlc3NlcyBldmVudHMgKGJsdXIvZm9jdXMpIHRoYXQgY291
bGQgYmUgaW5hZHZlcnRlbnRseSBkaXNwYXRjaGVkIGR1ZSB0b1xuXHQgKiBoaWdoIGxldmVsIERP
TSBtYW5pcHVsYXRpb25zIChsaWtlIHRlbXBvcmFyaWx5IHJlbW92aW5nIGEgdGV4dCBpbnB1dCBm
cm9tIHRoZVxuXHQgKiBET00pLlxuXHQgKi9cblx0dmFyIEVWRU5UX1NVUFBSRVNTSU9OID0ge1xu
XHQgIC8qKlxuXHQgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRoZSBlbmFibGVkIHN0YXR1cyBvZiBg
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBiZWZvcmVcblx0ICAgKiB0aGUgcmVjb25jaWxpYXRp
b24uXG5cdCAgICovXG5cdCAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIGN1
cnJlbnRseUVuYWJsZWQgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaXNFbmFibGVkKCk7XG5c
dCAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc2V0RW5hYmxlZChmYWxzZSk7XG5cdCAgICBy
ZXR1cm4gY3VycmVudGx5RW5hYmxlZDtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcGFy
YW0ge2Jvb2xlYW59IHByZXZpb3VzbHlFbmFibGVkIEVuYWJsZWQgc3RhdHVzIG9mXG5cdCAgICog
ICBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBiZWZvcmUgdGhlIHJlY29uY2lsaWF0aW9uIG9j
Y3VycmVkLiBgY2xvc2VgXG5cdCAgICogICByZXN0b3JlcyB0aGUgcHJldmlvdXMgdmFsdWUuXG5c
dCAgICovXG5cdCAgY2xvc2U6IGZ1bmN0aW9uIChwcmV2aW91c2x5RW5hYmxlZCkge1xuXHQgICAg
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnNldEVuYWJsZWQocHJldmlvdXNseUVuYWJsZWQpO1xu
XHQgIH1cblx0fTtcblx0XG5cdC8qKlxuXHQgKiBQcm92aWRlcyBhIHF1ZXVlIGZvciBjb2xsZWN0
aW5nIGBjb21wb25lbnREaWRNb3VudGAgYW5kXG5cdCAqIGBjb21wb25lbnREaWRVcGRhdGVgIGNh
bGxiYWNrcyBkdXJpbmcgdGhlIHRyYW5zYWN0aW9uLlxuXHQgKi9cblx0dmFyIE9OX0RPTV9SRUFE
WV9RVUVVRUlORyA9IHtcblx0ICAvKipcblx0ICAgKiBJbml0aWFsaXplcyB0aGUgaW50ZXJuYWwg
YG9uRE9NUmVhZHlgIHF1ZXVlLlxuXHQgICAqL1xuXHQgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgp
IHtcblx0ICAgIHRoaXMucmVhY3RNb3VudFJlYWR5LnJlc2V0KCk7XG5cdCAgfSxcblx0XG5cdCAg
LyoqXG5cdCAgICogQWZ0ZXIgRE9NIGlzIGZsdXNoZWQsIGludm9rZSBhbGwgcmVnaXN0ZXJlZCBg
b25ET01SZWFkeWAgY2FsbGJhY2tzLlxuXHQgICAqL1xuXHQgIGNsb3NlOiBmdW5jdGlvbiAoKSB7
XG5cdCAgICB0aGlzLnJlYWN0TW91bnRSZWFkeS5ub3RpZnlBbGwoKTtcblx0ICB9XG5cdH07XG5c
dFxuXHQvKipcblx0ICogRXhlY3V0ZWQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgYFRyYW5zYWN0
aW9uYCBpbnN0YW5jZS4gQ29uc2lkZXIgdGhlc2UgYXNcblx0ICogYmVpbmcgbWVtYmVyIG1ldGhv
ZHMsIGJ1dCB3aXRoIGFuIGltcGxpZWQgb3JkZXJpbmcgd2hpbGUgYmVpbmcgaXNvbGF0ZWQgZnJv
bVxuXHQgKiBlYWNoIG90aGVyLlxuXHQgKi9cblx0dmFyIFRSQU5TQUNUSU9OX1dSQVBQRVJTID0g
W1NFTEVDVElPTl9SRVNUT1JBVElPTiwgRVZFTlRfU1VQUFJFU1NJT04sIE9OX0RPTV9SRUFEWV9R
VUVVRUlOR107XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICBUUkFOU0FDVElPTl9XUkFQUEVSUy5w
dXNoKHtcblx0ICAgIGluaXRpYWxpemU6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5v
bkJlZ2luRmx1c2gsXG5cdCAgICBjbG9zZTogUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29s
Lm9uRW5kRmx1c2hcblx0ICB9KTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEN1cnJlbnRseTpcblx0
ICogLSBUaGUgb3JkZXIgdGhhdCB0aGVzZSBhcmUgbGlzdGVkIGluIHRoZSB0cmFuc2FjdGlvbiBp
cyBjcml0aWNhbDpcblx0ICogLSBTdXBwcmVzc2VzIGV2ZW50cy5cblx0ICogLSBSZXN0b3JlcyBz
ZWxlY3Rpb24gcmFuZ2UuXG5cdCAqXG5cdCAqIEZ1dHVyZTpcblx0ICogLSBSZXN0b3JlIGRvY3Vt
ZW50L292ZXJmbG93IHNjcm9sbCBwb3NpdGlvbnMgdGhhdCB3ZXJlIHVuaW50ZW50aW9uYWxseVxu
XHQgKiAgIG1vZGlmaWVkIHZpYSBET00gaW5zZXJ0aW9ucyBhYm92ZSB0aGUgdG9wIHZpZXdwb3J0
IGJvdW5kYXJ5LlxuXHQgKiAtIEltcGxlbWVudC9pbnRlZ3JhdGUgd2l0aCBjdXN0b21pemVkIGNv
bnN0cmFpbnQgYmFzZWQgbGF5b3V0IHN5c3RlbSBhbmQga2VlcFxuXHQgKiAgIHRyYWNrIG9mIHdo
aWNoIGRpbWVuc2lvbnMgbXVzdCBiZSByZW1lYXN1cmVkLlxuXHQgKlxuXHQgKiBAY2xhc3MgUmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvblxuXHQgKi9cblx0ZnVuY3Rpb24gUmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbih1c2VDcmVhdGVFbGVtZW50KSB7XG5cdCAgdGhpcy5yZWluaXRpYWxpemVUcmFu
c2FjdGlvbigpO1xuXHQgIC8vIE9ubHkgc2VydmVyLXNpZGUgcmVuZGVyaW5nIHJlYWxseSBuZWVk
cyB0aGlzIG9wdGlvbiAoc2VlXG5cdCAgLy8gYFJlYWN0U2VydmVyUmVuZGVyaW5nYCksIGJ1dCBz
ZXJ2ZXItc2lkZSB1c2VzXG5cdCAgLy8gYFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb25g
IGluc3RlYWQuIFRoaXMgb3B0aW9uIGlzIGhlcmUgc28gdGhhdCBpdCdzXG5cdCAgLy8gYWNjZXNz
aWJsZSBhbmQgZGVmYXVsdHMgdG8gZmFsc2Ugd2hlbiBgUmVhY3RET01Db21wb25lbnRgIGFuZFxu
XHQgIC8vIGBSZWFjdERPTVRleHRDb21wb25lbnRgIGNoZWNrcyBpdCBpbiBgbW91bnRDb21wb25l
bnRgLmBcblx0ICB0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwID0gZmFsc2U7XG5cdCAgdGhpcy5y
ZWFjdE1vdW50UmVhZHkgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZChudWxsKTtcblx0ICB0aGlz
LnVzZUNyZWF0ZUVsZW1lbnQgPSB1c2VDcmVhdGVFbGVtZW50O1xuXHR9XG5cdFxuXHR2YXIgTWl4
aW4gPSB7XG5cdCAgLyoqXG5cdCAgICogQHNlZSBUcmFuc2FjdGlvblxuXHQgICAqIEBhYnN0cmFj
dFxuXHQgICAqIEBmaW5hbFxuXHQgICAqIEByZXR1cm4ge2FycmF5PG9iamVjdD59IExpc3Qgb2Yg
b3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJlcy5cblx0ICAgKiAgIFRPRE86IGNvbnZlcnQgdG8gYXJy
YXk8VHJhbnNhY3Rpb25XcmFwcGVyPlxuXHQgICAqL1xuXHQgIGdldFRyYW5zYWN0aW9uV3JhcHBl
cnM6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVSUztcblx0
ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBj
b2xsZWN0IGBvbkRPTVJlYWR5YCBjYWxsYmFja3Mgd2l0aC5cblx0ICAgKi9cblx0ICBnZXRSZWFj
dE1vdW50UmVhZHk6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiB0aGlzLnJlYWN0TW91bnRS
ZWFkeTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBx
dWV1ZSB0byBjb2xsZWN0IFJlYWN0IGFzeW5jIGV2ZW50cy5cblx0ICAgKi9cblx0ICBnZXRVcGRh
dGVRdWV1ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIFJlYWN0VXBkYXRlUXVldWU7XG5c
dCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogU2F2ZSBjdXJyZW50IHRyYW5zYWN0aW9uIHN0YXRl
IC0tIGlmIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGlzIG1ldGhvZCBpc1xuXHQgICAqIHBhc3Nl
ZCB0byBgcm9sbGJhY2tgLCB0aGUgdHJhbnNhY3Rpb24gd2lsbCBiZSByZXNldCB0byB0aGF0IHN0
YXRlLlxuXHQgICAqL1xuXHQgIGNoZWNrcG9pbnQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIHJl
YWN0TW91bnRSZWFkeSBpcyB0aGUgb3VyIG9ubHkgc3RhdGVmdWwgd3JhcHBlclxuXHQgICAgcmV0
dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5LmNoZWNrcG9pbnQoKTtcblx0ICB9LFxuXHRcblx0ICBy
b2xsYmFjazogZnVuY3Rpb24gKGNoZWNrcG9pbnQpIHtcblx0ICAgIHRoaXMucmVhY3RNb3VudFJl
YWR5LnJvbGxiYWNrKGNoZWNrcG9pbnQpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIGBQ
b29sZWRDbGFzc2AgbG9va3MgZm9yIHRoaXMsIGFuZCB3aWxsIGludm9rZSB0aGlzIGJlZm9yZSBh
bGxvd2luZyB0aGlzXG5cdCAgICogaW5zdGFuY2UgdG8gYmUgcmV1c2VkLlxuXHQgICAqL1xuXHQg
IGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcblx0ICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0
aGlzLnJlYWN0TW91bnRSZWFkeSk7XG5cdCAgICB0aGlzLnJlYWN0TW91bnRSZWFkeSA9IG51bGw7
XG5cdCAgfVxuXHR9O1xuXHRcblx0X2Fzc2lnbihSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLnBy
b3RvdHlwZSwgVHJhbnNhY3Rpb24sIE1peGluKTtcblx0XG5cdFBvb2xlZENsYXNzLmFkZFBvb2xp
bmdUbyhSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uKTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjtcblxuLyoqKi8gfSxcbi8qIDE2MCAqL1xuLyoqKi8g
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Lyoq
XG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxNTcpO1xuXHRcblx0dmFyIFJlYWN0UmVmID0ge307XG5cdFxuXHRmdW5jdGlvbiBhdHRhY2hS
ZWYocmVmLCBjb21wb25lbnQsIG93bmVyKSB7XG5cdCAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5j
dGlvbicpIHtcblx0ICAgIHJlZihjb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSk7XG5cdCAg
fSBlbHNlIHtcblx0ICAgIC8vIExlZ2FjeSByZWZcblx0ICAgIFJlYWN0T3duZXIuYWRkQ29tcG9u
ZW50QXNSZWZUbyhjb21wb25lbnQsIHJlZiwgb3duZXIpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVu
Y3Rpb24gZGV0YWNoUmVmKHJlZiwgY29tcG9uZW50LCBvd25lcikge1xuXHQgIGlmICh0eXBlb2Yg
cmVmID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICByZWYobnVsbCk7XG5cdCAgfSBlbHNlIHtcblx0
ICAgIC8vIExlZ2FjeSByZWZcblx0ICAgIFJlYWN0T3duZXIucmVtb3ZlQ29tcG9uZW50QXNSZWZG
cm9tKGNvbXBvbmVudCwgcmVmLCBvd25lcik7XG5cdCAgfVxuXHR9XG5cdFxuXHRSZWFjdFJlZi5h
dHRhY2hSZWZzID0gZnVuY3Rpb24gKGluc3RhbmNlLCBlbGVtZW50KSB7XG5cdCAgaWYgKGVsZW1l
bnQgPT09IG51bGwgfHwgdHlwZW9mIGVsZW1lbnQgIT09ICdvYmplY3QnKSB7XG5cdCAgICByZXR1
cm47XG5cdCAgfVxuXHQgIHZhciByZWYgPSBlbGVtZW50LnJlZjtcblx0ICBpZiAocmVmICE9IG51
bGwpIHtcblx0ICAgIGF0dGFjaFJlZihyZWYsIGluc3RhbmNlLCBlbGVtZW50Ll9vd25lcik7XG5c
dCAgfVxuXHR9O1xuXHRcblx0UmVhY3RSZWYuc2hvdWxkVXBkYXRlUmVmcyA9IGZ1bmN0aW9uIChw
cmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpIHtcblx0ICAvLyBJZiBlaXRoZXIgdGhlIG93bmVyIG9y
IGEgYHJlZmAgaGFzIGNoYW5nZWQsIG1ha2Ugc3VyZSB0aGUgbmV3ZXN0IG93bmVyXG5cdCAgLy8g
aGFzIHN0b3JlZCBhIHJlZmVyZW5jZSB0byBgdGhpc2AsIGFuZCB0aGUgcHJldmlvdXMgb3duZXIg
KGlmIGRpZmZlcmVudClcblx0ICAvLyBoYXMgZm9yZ290dGVuIHRoZSByZWZlcmVuY2UgdG8gYHRo
aXNgLiBXZSB1c2UgdGhlIGVsZW1lbnQgaW5zdGVhZFxuXHQgIC8vIG9mIHRoZSBwdWJsaWMgdGhp
cy5wcm9wcyBiZWNhdXNlIHRoZSBwb3N0IHByb2Nlc3NpbmcgY2Fubm90IGRldGVybWluZVxuXHQg
IC8vIGEgcmVmLiBUaGUgcmVmIGNvbmNlcHR1YWxseSBsaXZlcyBvbiB0aGUgZWxlbWVudC5cblx0
XG5cdCAgLy8gVE9ETzogU2hvdWxkIHRoaXMgZXZlbiBiZSBwb3NzaWJsZT8gVGhlIG93bmVyIGNh
bm5vdCBjaGFuZ2UgYmVjYXVzZVxuXHQgIC8vIGl0J3MgZm9yYmlkZGVuIGJ5IHNob3VsZFVwZGF0
ZVJlYWN0Q29tcG9uZW50LiBUaGUgcmVmIGNhbiBjaGFuZ2Vcblx0ICAvLyBpZiB5b3Ugc3dhcCB0
aGUga2V5cyBvZiBidXQgbm90IHRoZSByZWZzLiBSZWNvbnNpZGVyIHdoZXJlIHRoaXMgY2hlY2tc
blx0ICAvLyBpcyBtYWRlLiBJdCBwcm9iYWJseSBiZWxvbmdzIHdoZXJlIHRoZSBrZXkgY2hlY2tp
bmcgYW5kXG5cdCAgLy8gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCBpcyBkb25lLlxuXHRcblx0
ICB2YXIgcHJldlJlZiA9IG51bGw7XG5cdCAgdmFyIHByZXZPd25lciA9IG51bGw7XG5cdCAgaWYg
KHByZXZFbGVtZW50ICE9PSBudWxsICYmIHR5cGVvZiBwcmV2RWxlbWVudCA9PT0gJ29iamVjdCcp
IHtcblx0ICAgIHByZXZSZWYgPSBwcmV2RWxlbWVudC5yZWY7XG5cdCAgICBwcmV2T3duZXIgPSBw
cmV2RWxlbWVudC5fb3duZXI7XG5cdCAgfVxuXHRcblx0ICB2YXIgbmV4dFJlZiA9IG51bGw7XG5c
dCAgdmFyIG5leHRPd25lciA9IG51bGw7XG5cdCAgaWYgKG5leHRFbGVtZW50ICE9PSBudWxsICYm
IHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ29iamVjdCcpIHtcblx0ICAgIG5leHRSZWYgPSBuZXh0
RWxlbWVudC5yZWY7XG5cdCAgICBuZXh0T3duZXIgPSBuZXh0RWxlbWVudC5fb3duZXI7XG5cdCAg
fVxuXHRcblx0ICByZXR1cm4gcHJldlJlZiAhPT0gbmV4dFJlZiB8fFxuXHQgIC8vIElmIG93bmVy
IGNoYW5nZXMgYnV0IHdlIGhhdmUgYW4gdW5jaGFuZ2VkIGZ1bmN0aW9uIHJlZiwgZG9uJ3QgdXBk
YXRlIHJlZnNcblx0ICB0eXBlb2YgbmV4dFJlZiA9PT0gJ3N0cmluZycgJiYgbmV4dE93bmVyICE9
PSBwcmV2T3duZXI7XG5cdH07XG5cdFxuXHRSZWFjdFJlZi5kZXRhY2hSZWZzID0gZnVuY3Rpb24g
KGluc3RhbmNlLCBlbGVtZW50KSB7XG5cdCAgaWYgKGVsZW1lbnQgPT09IG51bGwgfHwgdHlwZW9m
IGVsZW1lbnQgIT09ICdvYmplY3QnKSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIHZhciBy
ZWYgPSBlbGVtZW50LnJlZjtcblx0ICBpZiAocmVmICE9IG51bGwpIHtcblx0ICAgIGRldGFjaFJl
ZihyZWYsIGluc3RhbmNlLCBlbGVtZW50Ll9vd25lcik7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBSZWFjdFJlZjtcblxuLyoqKi8gfSxcbi8qIDE2MSAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0
dmFyIFBvb2xlZENsYXNzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG5cdHZhciBUcmFuc2Fj
dGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpO1xuXHR2YXIgUmVhY3RJbnN0cnVtZW50YXRp
b24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXHR2YXIgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1
ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTYyKTtcblx0XG5cdC8qKlxuXHQgKiBFeGVjdXRlZCB3
aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBgVHJhbnNhY3Rpb25gIGluc3RhbmNlLiBDb25zaWRlciB0
aGVzZSBhc1xuXHQgKiBiZWluZyBtZW1iZXIgbWV0aG9kcywgYnV0IHdpdGggYW4gaW1wbGllZCBv
cmRlcmluZyB3aGlsZSBiZWluZyBpc29sYXRlZCBmcm9tXG5cdCAqIGVhY2ggb3RoZXIuXG5cdCAq
L1xuXHR2YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbXTtcblx0XG5cdGlmIChmYWxzZSkge1xu
XHQgIFRSQU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goe1xuXHQgICAgaW5pdGlhbGl6ZTogUmVhY3RJ
bnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5GbHVzaCxcblx0ICAgIGNsb3NlOiBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRGbHVzaFxuXHQgIH0pO1xuXHR9XG5cdFxu
XHR2YXIgbm9vcENhbGxiYWNrUXVldWUgPSB7XG5cdCAgZW5xdWV1ZTogZnVuY3Rpb24gKCkge31c
blx0fTtcblx0XG5cdC8qKlxuXHQgKiBAY2xhc3MgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2Fj
dGlvblxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IHJlbmRlclRvU3RhdGljTWFya3VwXG5cdCAqL1xu
XHRmdW5jdGlvbiBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uKHJlbmRlclRvU3RhdGlj
TWFya3VwKSB7XG5cdCAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xuXHQgIHRoaXMu
cmVuZGVyVG9TdGF0aWNNYXJrdXAgPSByZW5kZXJUb1N0YXRpY01hcmt1cDtcblx0ICB0aGlzLnVz
ZUNyZWF0ZUVsZW1lbnQgPSBmYWxzZTtcblx0ICB0aGlzLnVwZGF0ZVF1ZXVlID0gbmV3IFJlYWN0
U2VydmVyVXBkYXRlUXVldWUodGhpcyk7XG5cdH1cblx0XG5cdHZhciBNaXhpbiA9IHtcblx0ICAv
Kipcblx0ICAgKiBAc2VlIFRyYW5zYWN0aW9uXG5cdCAgICogQGFic3RyYWN0XG5cdCAgICogQGZp
bmFsXG5cdCAgICogQHJldHVybiB7YXJyYXl9IEVtcHR5IGxpc3Qgb2Ygb3BlcmF0aW9uIHdyYXAg
cHJvY2VkdXJlcy5cblx0ICAgKi9cblx0ICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBmdW5jdGlv
biAoKSB7XG5cdCAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG5cdCAgfSxcblx0XG5c
dCAgLyoqXG5cdCAgICogQHJldHVybiB7b2JqZWN0fSBUaGUgcXVldWUgdG8gY29sbGVjdCBgb25E
T01SZWFkeWAgY2FsbGJhY2tzIHdpdGguXG5cdCAgICovXG5cdCAgZ2V0UmVhY3RNb3VudFJlYWR5
OiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gbm9vcENhbGxiYWNrUXVldWU7XG5cdCAgfSxc
blx0XG5cdCAgLyoqXG5cdCAgICogQHJldHVybiB7b2JqZWN0fSBUaGUgcXVldWUgdG8gY29sbGVj
dCBSZWFjdCBhc3luYyBldmVudHMuXG5cdCAgICovXG5cdCAgZ2V0VXBkYXRlUXVldWU6IGZ1bmN0
aW9uICgpIHtcblx0ICAgIHJldHVybiB0aGlzLnVwZGF0ZVF1ZXVlO1xuXHQgIH0sXG5cdFxuXHQg
IC8qKlxuXHQgICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIHRoaXMsIGFuZCB3aWxsIGludm9r
ZSB0aGlzIGJlZm9yZSBhbGxvd2luZyB0aGlzXG5cdCAgICogaW5zdGFuY2UgdG8gYmUgcmV1c2Vk
LlxuXHQgICAqL1xuXHQgIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHt9LFxuXHRcblx0ICBjaGVj
a3BvaW50OiBmdW5jdGlvbiAoKSB7fSxcblx0XG5cdCAgcm9sbGJhY2s6IGZ1bmN0aW9uICgpIHt9
XG5cdH07XG5cdFxuXHRfYXNzaWduKFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24ucHJv
dG90eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4pO1xuXHRcblx0UG9vbGVkQ2xhc3MuYWRkUG9vbGlu
Z1RvKFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24pO1xuXHRcblx0bW9kdWxlLmV4cG9y
dHMgPSBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uO1xuXG4vKioqLyB9LFxuLyogMTYy
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
blx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5c
dCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNr
KGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0
cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBh
IGZ1bmN0aW9uXCIpOyB9IH1cblx0XG5cdHZhciBSZWFjdFVwZGF0ZVF1ZXVlID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg0Mik7XG5cdFxuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18o
Mik7XG5cdFxuXHRmdW5jdGlvbiB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkg
e1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgdmFyIGNvbnN0cnVjdG9yID0gcHVibGljSW5zdGFu
Y2UuY29uc3RydWN0b3I7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50aW5n
IGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG91dHNp
ZGUgY29tcG9uZW50V2lsbE1vdW50KCkgb24gdGhlIHNlcnZlci4gJyArICdUaGlzIGlzIGEgbm8t
b3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhlICVzIGNvbXBvbmVudC4nLCBjYWxsZXJO
YW1lLCBjYWxsZXJOYW1lLCBjb25zdHJ1Y3RvciAmJiAoY29uc3RydWN0b3IuZGlzcGxheU5hbWUg
fHwgY29uc3RydWN0b3IubmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQgMDtcblx0ICB9XG5c
dH1cblx0XG5cdC8qKlxuXHQgKiBUaGlzIGlzIHRoZSB1cGRhdGUgcXVldWUgdXNlZCBmb3Igc2Vy
dmVyIHJlbmRlcmluZy5cblx0ICogSXQgZGVsZWdhdGVzIHRvIFJlYWN0VXBkYXRlUXVldWUgd2hp
bGUgc2VydmVyIHJlbmRlcmluZyBpcyBpbiBwcm9ncmVzcyBhbmRcblx0ICogc3dpdGNoZXMgdG8g
UmVhY3ROb29wVXBkYXRlUXVldWUgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGhhcyBjb21wbGV0ZWQu
XG5cdCAqIEBjbGFzcyBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlXG5cdCAqIEBwYXJhbSB7VHJhbnNh
Y3Rpb259IHRyYW5zYWN0aW9uXG5cdCAqL1xuXHRcblx0dmFyIFJlYWN0U2VydmVyVXBkYXRlUXVl
dWUgPSBmdW5jdGlvbiAoKSB7XG5cdCAgZnVuY3Rpb24gUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSh0
cmFuc2FjdGlvbikge1xuXHQgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlYWN0U2VydmVyVXBk
YXRlUXVldWUpO1xuXHRcblx0ICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcblx0
ICB9XG5cdFxuXHQgIC8qKlxuXHQgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBv
c2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cblx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1
YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRlc3QuXG5cdCAgICogQHJldHVy
biB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAgICogQHBy
b3RlY3RlZFxuXHQgICAqIEBmaW5hbFxuXHQgICAqL1xuXHRcblx0XG5cdCAgUmVhY3RTZXJ2ZXJV
cGRhdGVRdWV1ZS5wcm90b3R5cGUuaXNNb3VudGVkID0gZnVuY3Rpb24gaXNNb3VudGVkKHB1Ymxp
Y0luc3RhbmNlKSB7XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5c
dCAgICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBhbGwg
dGhlIHBlbmRpbmcgdXBkYXRlc1xuXHQgICAqIGhhdmUgcHJvY2Vzc2VkLlxuXHQgICAqXG5cdCAg
ICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gdXNl
IGFzIGB0aGlzYCBjb250ZXh0LlxuXHQgICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBD
YWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9c
blx0XG5cdFxuXHQgIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmVucXVldWVDYWxs
YmFjayA9IGZ1bmN0aW9uIGVucXVldWVDYWxsYmFjayhwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2ss
IGNhbGxlck5hbWUpIHtcblx0ICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlv
bigpKSB7XG5cdCAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUNhbGxiYWNrKHB1YmxpY0lu
c3RhbmNlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSk7XG5cdCAgICB9XG5cdCAgfTtcblx0XG5cdCAg
LyoqXG5cdCAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2Vk
IHdoZW4gaXQgaXMga25vd24gd2l0aFxuXHQgICAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5v
dCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuXHQgICAqXG5cdCAgICogWW91IG1heSB3YW50IHRv
IGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxu
XHQgICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBu
b3QgY2FsbGVkLlxuXHQgICAqXG5cdCAgICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENv
bXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuXHQgICAqIGBjb21wb25lbnRXaWxs
VXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0g
e1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJl
bmRlci5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0XG5cdFxuXHQgIFJlYWN0U2VydmVy
VXBkYXRlUXVldWUucHJvdG90eXBlLmVucXVldWVGb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uIGVucXVl
dWVGb3JjZVVwZGF0ZShwdWJsaWNJbnN0YW5jZSkge1xuXHQgICAgaWYgKHRoaXMudHJhbnNhY3Rp
b24uaXNJblRyYW5zYWN0aW9uKCkpIHtcblx0ICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVl
Rm9yY2VVcGRhdGUocHVibGljSW5zdGFuY2UpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgd2Fy
bk5vb3AocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpO1xuXHQgICAgfVxuXHQgIH07XG5c
dFxuXHQgIC8qKlxuXHQgICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2Ug
dGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cblx0ICAgKiBZb3Ugc2hvdWxkIHRy
ZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG5cdCAgICpcblx0ICAgKiBUaGVyZSBpcyBu
byBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVk
LCBzb1xuXHQgICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1l
dGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1Jl
YWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRl
ci5cblx0ICAgKiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbn0gY29tcGxldGVTdGF0ZSBOZXh0IHN0
YXRlLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHRcblx0XG5cdCAgUmVhY3RTZXJ2ZXJV
cGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZVJlcGxhY2VTdGF0ZSA9IGZ1bmN0aW9uIGVucXVl
dWVSZXBsYWNlU3RhdGUocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3RhdGUpIHtcblx0ICAgIGlm
ICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7XG5cdCAgICAgIFJlYWN0VXBk
YXRlUXVldWUuZW5xdWV1ZVJlcGxhY2VTdGF0ZShwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0
ZSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3Jl
cGxhY2VTdGF0ZScpO1xuXHQgICAgfVxuXHQgIH07XG5cdFxuXHQgIC8qKlxuXHQgICAqIFNldHMg
YSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2UgX3BlbmRpbmdT
dGF0ZSBpc1xuXHQgICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJhdGVn
eSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcFxuXHQgICAqIHByb3BlcnRpZXMgd2hpY2gg
aXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxu
XHQgICAqIGR1cmluZyB0aGUgbWVyZ2UuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xh
c3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cblx0
ICAgKiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbn0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBz
dGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBzdGF0ZS5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9c
blx0XG5cdFxuXHQgIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmVucXVldWVTZXRT
dGF0ZSA9IGZ1bmN0aW9uIGVucXVldWVTZXRTdGF0ZShwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0
YXRlKSB7XG5cdCAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSkge1xu
XHQgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVTZXRTdGF0ZShwdWJsaWNJbnN0YW5jZSwg
cGFydGlhbFN0YXRlKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHdhcm5Ob29wKHB1YmxpY0lu
c3RhbmNlLCAnc2V0U3RhdGUnKTtcblx0ICAgIH1cblx0ICB9O1xuXHRcblx0ICByZXR1cm4gUmVh
Y3RTZXJ2ZXJVcGRhdGVRdWV1ZTtcblx0fSgpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFj
dFNlcnZlclVwZGF0ZVF1ZXVlO1xuXG4vKioqLyB9LFxuLyogMTYzICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9ICcxNS42LjEnO1xuXG4vKioqLyB9LFxuLyogMTY0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0
ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgTlMgPSB7XG5cdCAgeGxp
bms6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyxcblx0ICB4bWw6ICdodHRwOi8vd3d3
LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnXG5cdH07XG5cdFxuXHQvLyBXZSB1c2UgYXR0cmli
dXRlcyBmb3IgZXZlcnl0aGluZyBTVkcgc28gbGV0J3MgYXZvaWQgc29tZSBkdXBsaWNhdGlvbiBh
bmQgcnVuXG5cdC8vIGNvZGUgaW5zdGVhZC5cblx0Ly8gVGhlIGZvbGxvd2luZyBhcmUgYWxsIHNw
ZWNpZmllZCBpbiB0aGUgSFRNTCBjb25maWcgYWxyZWFkeSBzbyB3ZSBleGNsdWRlIGhlcmUuXG5c
dC8vIC0gY2xhc3MgKGFzIGNsYXNzTmFtZSlcblx0Ly8gLSBjb2xvclxuXHQvLyAtIGhlaWdodFxu
XHQvLyAtIGlkXG5cdC8vIC0gbGFuZ1xuXHQvLyAtIG1heFxuXHQvLyAtIG1lZGlhXG5cdC8vIC0g
bWV0aG9kXG5cdC8vIC0gbWluXG5cdC8vIC0gbmFtZVxuXHQvLyAtIHN0eWxlXG5cdC8vIC0gdGFy
Z2V0XG5cdC8vIC0gdHlwZVxuXHQvLyAtIHdpZHRoXG5cdHZhciBBVFRSUyA9IHtcblx0ICBhY2Nl
bnRIZWlnaHQ6ICdhY2NlbnQtaGVpZ2h0Jyxcblx0ICBhY2N1bXVsYXRlOiAwLFxuXHQgIGFkZGl0
aXZlOiAwLFxuXHQgIGFsaWdubWVudEJhc2VsaW5lOiAnYWxpZ25tZW50LWJhc2VsaW5lJyxcblx0
ICBhbGxvd1Jlb3JkZXI6ICdhbGxvd1Jlb3JkZXInLFxuXHQgIGFscGhhYmV0aWM6IDAsXG5cdCAg
YW1wbGl0dWRlOiAwLFxuXHQgIGFyYWJpY0Zvcm06ICdhcmFiaWMtZm9ybScsXG5cdCAgYXNjZW50
OiAwLFxuXHQgIGF0dHJpYnV0ZU5hbWU6ICdhdHRyaWJ1dGVOYW1lJyxcblx0ICBhdHRyaWJ1dGVU
eXBlOiAnYXR0cmlidXRlVHlwZScsXG5cdCAgYXV0b1JldmVyc2U6ICdhdXRvUmV2ZXJzZScsXG5c
dCAgYXppbXV0aDogMCxcblx0ICBiYXNlRnJlcXVlbmN5OiAnYmFzZUZyZXF1ZW5jeScsXG5cdCAg
YmFzZVByb2ZpbGU6ICdiYXNlUHJvZmlsZScsXG5cdCAgYmFzZWxpbmVTaGlmdDogJ2Jhc2VsaW5l
LXNoaWZ0Jyxcblx0ICBiYm94OiAwLFxuXHQgIGJlZ2luOiAwLFxuXHQgIGJpYXM6IDAsXG5cdCAg
Ynk6IDAsXG5cdCAgY2FsY01vZGU6ICdjYWxjTW9kZScsXG5cdCAgY2FwSGVpZ2h0OiAnY2FwLWhl
aWdodCcsXG5cdCAgY2xpcDogMCxcblx0ICBjbGlwUGF0aDogJ2NsaXAtcGF0aCcsXG5cdCAgY2xp
cFJ1bGU6ICdjbGlwLXJ1bGUnLFxuXHQgIGNsaXBQYXRoVW5pdHM6ICdjbGlwUGF0aFVuaXRzJyxc
blx0ICBjb2xvckludGVycG9sYXRpb246ICdjb2xvci1pbnRlcnBvbGF0aW9uJyxcblx0ICBjb2xv
ckludGVycG9sYXRpb25GaWx0ZXJzOiAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJyxcblx0
ICBjb2xvclByb2ZpbGU6ICdjb2xvci1wcm9maWxlJyxcblx0ICBjb2xvclJlbmRlcmluZzogJ2Nv
bG9yLXJlbmRlcmluZycsXG5cdCAgY29udGVudFNjcmlwdFR5cGU6ICdjb250ZW50U2NyaXB0VHlw
ZScsXG5cdCAgY29udGVudFN0eWxlVHlwZTogJ2NvbnRlbnRTdHlsZVR5cGUnLFxuXHQgIGN1cnNv
cjogMCxcblx0ICBjeDogMCxcblx0ICBjeTogMCxcblx0ICBkOiAwLFxuXHQgIGRlY2VsZXJhdGU6
IDAsXG5cdCAgZGVzY2VudDogMCxcblx0ICBkaWZmdXNlQ29uc3RhbnQ6ICdkaWZmdXNlQ29uc3Rh
bnQnLFxuXHQgIGRpcmVjdGlvbjogMCxcblx0ICBkaXNwbGF5OiAwLFxuXHQgIGRpdmlzb3I6IDAs
XG5cdCAgZG9taW5hbnRCYXNlbGluZTogJ2RvbWluYW50LWJhc2VsaW5lJyxcblx0ICBkdXI6IDAs
XG5cdCAgZHg6IDAsXG5cdCAgZHk6IDAsXG5cdCAgZWRnZU1vZGU6ICdlZGdlTW9kZScsXG5cdCAg
ZWxldmF0aW9uOiAwLFxuXHQgIGVuYWJsZUJhY2tncm91bmQ6ICdlbmFibGUtYmFja2dyb3VuZCcs
XG5cdCAgZW5kOiAwLFxuXHQgIGV4cG9uZW50OiAwLFxuXHQgIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ6ICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJyxcblx0ICBmaWxsOiAwLFxuXHQgIGZp
bGxPcGFjaXR5OiAnZmlsbC1vcGFjaXR5Jyxcblx0ICBmaWxsUnVsZTogJ2ZpbGwtcnVsZScsXG5c
dCAgZmlsdGVyOiAwLFxuXHQgIGZpbHRlclJlczogJ2ZpbHRlclJlcycsXG5cdCAgZmlsdGVyVW5p
dHM6ICdmaWx0ZXJVbml0cycsXG5cdCAgZmxvb2RDb2xvcjogJ2Zsb29kLWNvbG9yJyxcblx0ICBm
bG9vZE9wYWNpdHk6ICdmbG9vZC1vcGFjaXR5Jyxcblx0ICBmb2N1c2FibGU6IDAsXG5cdCAgZm9u
dEZhbWlseTogJ2ZvbnQtZmFtaWx5Jyxcblx0ICBmb250U2l6ZTogJ2ZvbnQtc2l6ZScsXG5cdCAg
Zm9udFNpemVBZGp1c3Q6ICdmb250LXNpemUtYWRqdXN0Jyxcblx0ICBmb250U3RyZXRjaDogJ2Zv
bnQtc3RyZXRjaCcsXG5cdCAgZm9udFN0eWxlOiAnZm9udC1zdHlsZScsXG5cdCAgZm9udFZhcmlh
bnQ6ICdmb250LXZhcmlhbnQnLFxuXHQgIGZvbnRXZWlnaHQ6ICdmb250LXdlaWdodCcsXG5cdCAg
Zm9ybWF0OiAwLFxuXHQgIGZyb206IDAsXG5cdCAgZng6IDAsXG5cdCAgZnk6IDAsXG5cdCAgZzE6
IDAsXG5cdCAgZzI6IDAsXG5cdCAgZ2x5cGhOYW1lOiAnZ2x5cGgtbmFtZScsXG5cdCAgZ2x5cGhP
cmllbnRhdGlvbkhvcml6b250YWw6ICdnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsJyxcblx0
ICBnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ICdnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCcs
XG5cdCAgZ2x5cGhSZWY6ICdnbHlwaFJlZicsXG5cdCAgZ3JhZGllbnRUcmFuc2Zvcm06ICdncmFk
aWVudFRyYW5zZm9ybScsXG5cdCAgZ3JhZGllbnRVbml0czogJ2dyYWRpZW50VW5pdHMnLFxuXHQg
IGhhbmdpbmc6IDAsXG5cdCAgaG9yaXpBZHZYOiAnaG9yaXotYWR2LXgnLFxuXHQgIGhvcml6T3Jp
Z2luWDogJ2hvcml6LW9yaWdpbi14Jyxcblx0ICBpZGVvZ3JhcGhpYzogMCxcblx0ICBpbWFnZVJl
bmRlcmluZzogJ2ltYWdlLXJlbmRlcmluZycsXG5cdCAgJ2luJzogMCxcblx0ICBpbjI6IDAsXG5c
dCAgaW50ZXJjZXB0OiAwLFxuXHQgIGs6IDAsXG5cdCAgazE6IDAsXG5cdCAgazI6IDAsXG5cdCAg
azM6IDAsXG5cdCAgazQ6IDAsXG5cdCAga2VybmVsTWF0cml4OiAna2VybmVsTWF0cml4Jyxcblx0
ICBrZXJuZWxVbml0TGVuZ3RoOiAna2VybmVsVW5pdExlbmd0aCcsXG5cdCAga2VybmluZzogMCxc
blx0ICBrZXlQb2ludHM6ICdrZXlQb2ludHMnLFxuXHQgIGtleVNwbGluZXM6ICdrZXlTcGxpbmVz
Jyxcblx0ICBrZXlUaW1lczogJ2tleVRpbWVzJyxcblx0ICBsZW5ndGhBZGp1c3Q6ICdsZW5ndGhB
ZGp1c3QnLFxuXHQgIGxldHRlclNwYWNpbmc6ICdsZXR0ZXItc3BhY2luZycsXG5cdCAgbGlnaHRp
bmdDb2xvcjogJ2xpZ2h0aW5nLWNvbG9yJyxcblx0ICBsaW1pdGluZ0NvbmVBbmdsZTogJ2xpbWl0
aW5nQ29uZUFuZ2xlJyxcblx0ICBsb2NhbDogMCxcblx0ICBtYXJrZXJFbmQ6ICdtYXJrZXItZW5k
Jyxcblx0ICBtYXJrZXJNaWQ6ICdtYXJrZXItbWlkJyxcblx0ICBtYXJrZXJTdGFydDogJ21hcmtl
ci1zdGFydCcsXG5cdCAgbWFya2VySGVpZ2h0OiAnbWFya2VySGVpZ2h0Jyxcblx0ICBtYXJrZXJV
bml0czogJ21hcmtlclVuaXRzJyxcblx0ICBtYXJrZXJXaWR0aDogJ21hcmtlcldpZHRoJyxcblx0
ICBtYXNrOiAwLFxuXHQgIG1hc2tDb250ZW50VW5pdHM6ICdtYXNrQ29udGVudFVuaXRzJyxcblx0
ICBtYXNrVW5pdHM6ICdtYXNrVW5pdHMnLFxuXHQgIG1hdGhlbWF0aWNhbDogMCxcblx0ICBtb2Rl
OiAwLFxuXHQgIG51bU9jdGF2ZXM6ICdudW1PY3RhdmVzJyxcblx0ICBvZmZzZXQ6IDAsXG5cdCAg
b3BhY2l0eTogMCxcblx0ICBvcGVyYXRvcjogMCxcblx0ICBvcmRlcjogMCxcblx0ICBvcmllbnQ6
IDAsXG5cdCAgb3JpZW50YXRpb246IDAsXG5cdCAgb3JpZ2luOiAwLFxuXHQgIG92ZXJmbG93OiAw
LFxuXHQgIG92ZXJsaW5lUG9zaXRpb246ICdvdmVybGluZS1wb3NpdGlvbicsXG5cdCAgb3Zlcmxp
bmVUaGlja25lc3M6ICdvdmVybGluZS10aGlja25lc3MnLFxuXHQgIHBhaW50T3JkZXI6ICdwYWlu
dC1vcmRlcicsXG5cdCAgcGFub3NlMTogJ3Bhbm9zZS0xJyxcblx0ICBwYXRoTGVuZ3RoOiAncGF0
aExlbmd0aCcsXG5cdCAgcGF0dGVybkNvbnRlbnRVbml0czogJ3BhdHRlcm5Db250ZW50VW5pdHMn
LFxuXHQgIHBhdHRlcm5UcmFuc2Zvcm06ICdwYXR0ZXJuVHJhbnNmb3JtJyxcblx0ICBwYXR0ZXJu
VW5pdHM6ICdwYXR0ZXJuVW5pdHMnLFxuXHQgIHBvaW50ZXJFdmVudHM6ICdwb2ludGVyLWV2ZW50
cycsXG5cdCAgcG9pbnRzOiAwLFxuXHQgIHBvaW50c0F0WDogJ3BvaW50c0F0WCcsXG5cdCAgcG9p
bnRzQXRZOiAncG9pbnRzQXRZJyxcblx0ICBwb2ludHNBdFo6ICdwb2ludHNBdFonLFxuXHQgIHBy
ZXNlcnZlQWxwaGE6ICdwcmVzZXJ2ZUFscGhhJyxcblx0ICBwcmVzZXJ2ZUFzcGVjdFJhdGlvOiAn
cHJlc2VydmVBc3BlY3RSYXRpbycsXG5cdCAgcHJpbWl0aXZlVW5pdHM6ICdwcmltaXRpdmVVbml0
cycsXG5cdCAgcjogMCxcblx0ICByYWRpdXM6IDAsXG5cdCAgcmVmWDogJ3JlZlgnLFxuXHQgIHJl
Zlk6ICdyZWZZJyxcblx0ICByZW5kZXJpbmdJbnRlbnQ6ICdyZW5kZXJpbmctaW50ZW50Jyxcblx0
ICByZXBlYXRDb3VudDogJ3JlcGVhdENvdW50Jyxcblx0ICByZXBlYXREdXI6ICdyZXBlYXREdXIn
LFxuXHQgIHJlcXVpcmVkRXh0ZW5zaW9uczogJ3JlcXVpcmVkRXh0ZW5zaW9ucycsXG5cdCAgcmVx
dWlyZWRGZWF0dXJlczogJ3JlcXVpcmVkRmVhdHVyZXMnLFxuXHQgIHJlc3RhcnQ6IDAsXG5cdCAg
cmVzdWx0OiAwLFxuXHQgIHJvdGF0ZTogMCxcblx0ICByeDogMCxcblx0ICByeTogMCxcblx0ICBz
Y2FsZTogMCxcblx0ICBzZWVkOiAwLFxuXHQgIHNoYXBlUmVuZGVyaW5nOiAnc2hhcGUtcmVuZGVy
aW5nJyxcblx0ICBzbG9wZTogMCxcblx0ICBzcGFjaW5nOiAwLFxuXHQgIHNwZWN1bGFyQ29uc3Rh
bnQ6ICdzcGVjdWxhckNvbnN0YW50Jyxcblx0ICBzcGVjdWxhckV4cG9uZW50OiAnc3BlY3VsYXJF
eHBvbmVudCcsXG5cdCAgc3BlZWQ6IDAsXG5cdCAgc3ByZWFkTWV0aG9kOiAnc3ByZWFkTWV0aG9k
Jyxcblx0ICBzdGFydE9mZnNldDogJ3N0YXJ0T2Zmc2V0Jyxcblx0ICBzdGREZXZpYXRpb246ICdz
dGREZXZpYXRpb24nLFxuXHQgIHN0ZW1oOiAwLFxuXHQgIHN0ZW12OiAwLFxuXHQgIHN0aXRjaFRp
bGVzOiAnc3RpdGNoVGlsZXMnLFxuXHQgIHN0b3BDb2xvcjogJ3N0b3AtY29sb3InLFxuXHQgIHN0
b3BPcGFjaXR5OiAnc3RvcC1vcGFjaXR5Jyxcblx0ICBzdHJpa2V0aHJvdWdoUG9zaXRpb246ICdz
dHJpa2V0aHJvdWdoLXBvc2l0aW9uJyxcblx0ICBzdHJpa2V0aHJvdWdoVGhpY2tuZXNzOiAnc3Ry
aWtldGhyb3VnaC10aGlja25lc3MnLFxuXHQgIHN0cmluZzogMCxcblx0ICBzdHJva2U6IDAsXG5c
dCAgc3Ryb2tlRGFzaGFycmF5OiAnc3Ryb2tlLWRhc2hhcnJheScsXG5cdCAgc3Ryb2tlRGFzaG9m
ZnNldDogJ3N0cm9rZS1kYXNob2Zmc2V0Jyxcblx0ICBzdHJva2VMaW5lY2FwOiAnc3Ryb2tlLWxp
bmVjYXAnLFxuXHQgIHN0cm9rZUxpbmVqb2luOiAnc3Ryb2tlLWxpbmVqb2luJyxcblx0ICBzdHJv
a2VNaXRlcmxpbWl0OiAnc3Ryb2tlLW1pdGVybGltaXQnLFxuXHQgIHN0cm9rZU9wYWNpdHk6ICdz
dHJva2Utb3BhY2l0eScsXG5cdCAgc3Ryb2tlV2lkdGg6ICdzdHJva2Utd2lkdGgnLFxuXHQgIHN1
cmZhY2VTY2FsZTogJ3N1cmZhY2VTY2FsZScsXG5cdCAgc3lzdGVtTGFuZ3VhZ2U6ICdzeXN0ZW1M
YW5ndWFnZScsXG5cdCAgdGFibGVWYWx1ZXM6ICd0YWJsZVZhbHVlcycsXG5cdCAgdGFyZ2V0WDog
J3RhcmdldFgnLFxuXHQgIHRhcmdldFk6ICd0YXJnZXRZJyxcblx0ICB0ZXh0QW5jaG9yOiAndGV4
dC1hbmNob3InLFxuXHQgIHRleHREZWNvcmF0aW9uOiAndGV4dC1kZWNvcmF0aW9uJyxcblx0ICB0
ZXh0UmVuZGVyaW5nOiAndGV4dC1yZW5kZXJpbmcnLFxuXHQgIHRleHRMZW5ndGg6ICd0ZXh0TGVu
Z3RoJyxcblx0ICB0bzogMCxcblx0ICB0cmFuc2Zvcm06IDAsXG5cdCAgdTE6IDAsXG5cdCAgdTI6
IDAsXG5cdCAgdW5kZXJsaW5lUG9zaXRpb246ICd1bmRlcmxpbmUtcG9zaXRpb24nLFxuXHQgIHVu
ZGVybGluZVRoaWNrbmVzczogJ3VuZGVybGluZS10aGlja25lc3MnLFxuXHQgIHVuaWNvZGU6IDAs
XG5cdCAgdW5pY29kZUJpZGk6ICd1bmljb2RlLWJpZGknLFxuXHQgIHVuaWNvZGVSYW5nZTogJ3Vu
aWNvZGUtcmFuZ2UnLFxuXHQgIHVuaXRzUGVyRW06ICd1bml0cy1wZXItZW0nLFxuXHQgIHZBbHBo
YWJldGljOiAndi1hbHBoYWJldGljJyxcblx0ICB2SGFuZ2luZzogJ3YtaGFuZ2luZycsXG5cdCAg
dklkZW9ncmFwaGljOiAndi1pZGVvZ3JhcGhpYycsXG5cdCAgdk1hdGhlbWF0aWNhbDogJ3YtbWF0
aGVtYXRpY2FsJyxcblx0ICB2YWx1ZXM6IDAsXG5cdCAgdmVjdG9yRWZmZWN0OiAndmVjdG9yLWVm
ZmVjdCcsXG5cdCAgdmVyc2lvbjogMCxcblx0ICB2ZXJ0QWR2WTogJ3ZlcnQtYWR2LXknLFxuXHQg
IHZlcnRPcmlnaW5YOiAndmVydC1vcmlnaW4teCcsXG5cdCAgdmVydE9yaWdpblk6ICd2ZXJ0LW9y
aWdpbi15Jyxcblx0ICB2aWV3Qm94OiAndmlld0JveCcsXG5cdCAgdmlld1RhcmdldDogJ3ZpZXdU
YXJnZXQnLFxuXHQgIHZpc2liaWxpdHk6IDAsXG5cdCAgd2lkdGhzOiAwLFxuXHQgIHdvcmRTcGFj
aW5nOiAnd29yZC1zcGFjaW5nJyxcblx0ICB3cml0aW5nTW9kZTogJ3dyaXRpbmctbW9kZScsXG5c
dCAgeDogMCxcblx0ICB4SGVpZ2h0OiAneC1oZWlnaHQnLFxuXHQgIHgxOiAwLFxuXHQgIHgyOiAw
LFxuXHQgIHhDaGFubmVsU2VsZWN0b3I6ICd4Q2hhbm5lbFNlbGVjdG9yJyxcblx0ICB4bGlua0Fj
dHVhdGU6ICd4bGluazphY3R1YXRlJyxcblx0ICB4bGlua0FyY3JvbGU6ICd4bGluazphcmNyb2xl
Jyxcblx0ICB4bGlua0hyZWY6ICd4bGluazpocmVmJyxcblx0ICB4bGlua1JvbGU6ICd4bGluazpy
b2xlJyxcblx0ICB4bGlua1Nob3c6ICd4bGluazpzaG93Jyxcblx0ICB4bGlua1RpdGxlOiAneGxp
bms6dGl0bGUnLFxuXHQgIHhsaW5rVHlwZTogJ3hsaW5rOnR5cGUnLFxuXHQgIHhtbEJhc2U6ICd4
bWw6YmFzZScsXG5cdCAgeG1sbnM6IDAsXG5cdCAgeG1sbnNYbGluazogJ3htbG5zOnhsaW5rJyxc
blx0ICB4bWxMYW5nOiAneG1sOmxhbmcnLFxuXHQgIHhtbFNwYWNlOiAneG1sOnNwYWNlJyxcblx0
ICB5OiAwLFxuXHQgIHkxOiAwLFxuXHQgIHkyOiAwLFxuXHQgIHlDaGFubmVsU2VsZWN0b3I6ICd5
Q2hhbm5lbFNlbGVjdG9yJyxcblx0ICB6OiAwLFxuXHQgIHpvb21BbmRQYW46ICd6b29tQW5kUGFu
J1xuXHR9O1xuXHRcblx0dmFyIFNWR0RPTVByb3BlcnR5Q29uZmlnID0ge1xuXHQgIFByb3BlcnRp
ZXM6IHt9LFxuXHQgIERPTUF0dHJpYnV0ZU5hbWVzcGFjZXM6IHtcblx0ICAgIHhsaW5rQWN0dWF0
ZTogTlMueGxpbmssXG5cdCAgICB4bGlua0FyY3JvbGU6IE5TLnhsaW5rLFxuXHQgICAgeGxpbmtI
cmVmOiBOUy54bGluayxcblx0ICAgIHhsaW5rUm9sZTogTlMueGxpbmssXG5cdCAgICB4bGlua1No
b3c6IE5TLnhsaW5rLFxuXHQgICAgeGxpbmtUaXRsZTogTlMueGxpbmssXG5cdCAgICB4bGlua1R5
cGU6IE5TLnhsaW5rLFxuXHQgICAgeG1sQmFzZTogTlMueG1sLFxuXHQgICAgeG1sTGFuZzogTlMu
eG1sLFxuXHQgICAgeG1sU3BhY2U6IE5TLnhtbFxuXHQgIH0sXG5cdCAgRE9NQXR0cmlidXRlTmFt
ZXM6IHt9XG5cdH07XG5cdFxuXHRPYmplY3Qua2V5cyhBVFRSUykuZm9yRWFjaChmdW5jdGlvbiAo
a2V5KSB7XG5cdCAgU1ZHRE9NUHJvcGVydHlDb25maWcuUHJvcGVydGllc1trZXldID0gMDtcblx0
ICBpZiAoQVRUUlNba2V5XSkge1xuXHQgICAgU1ZHRE9NUHJvcGVydHlDb25maWcuRE9NQXR0cmli
dXRlTmFtZXNba2V5XSA9IEFUVFJTW2tleV07XG5cdCAgfVxuXHR9KTtcblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gU1ZHRE9NUHJvcGVydHlDb25maWc7XG5cbi8qKiovIH0sXG4vKiAxNjUgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBFdmVudFByb3BhZ2F0b3JzID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyMCk7XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJl
X18oNik7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDUpO1xuXHR2YXIgUmVhY3RJbnB1dFNlbGVjdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNjYp
O1xuXHR2YXIgU3ludGhldGljRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0XG5c
dHZhciBnZXRBY3RpdmVFbGVtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Myk7XG5cdHZhciBp
c1RleHRJbnB1dEVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc2KTtcblx0dmFyIHNoYWxs
b3dFcXVhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpO1xuXHRcblx0dmFyIHNraXBTZWxlY3Rp
b25DaGFuZ2VFdmVudCA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnZG9jdW1l
bnRNb2RlJyBpbiBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudE1vZGUgPD0gMTE7XG5cdFxu
XHR2YXIgZXZlbnRUeXBlcyA9IHtcblx0ICBzZWxlY3Q6IHtcblx0ICAgIHBoYXNlZFJlZ2lzdHJh
dGlvbk5hbWVzOiB7XG5cdCAgICAgIGJ1YmJsZWQ6ICdvblNlbGVjdCcsXG5cdCAgICAgIGNhcHR1
cmVkOiAnb25TZWxlY3RDYXB0dXJlJ1xuXHQgICAgfSxcblx0ICAgIGRlcGVuZGVuY2llczogWyd0
b3BCbHVyJywgJ3RvcENvbnRleHRNZW51JywgJ3RvcEZvY3VzJywgJ3RvcEtleURvd24nLCAndG9w
S2V5VXAnLCAndG9wTW91c2VEb3duJywgJ3RvcE1vdXNlVXAnLCAndG9wU2VsZWN0aW9uQ2hhbmdl
J11cblx0ICB9XG5cdH07XG5cdFxuXHR2YXIgYWN0aXZlRWxlbWVudCA9IG51bGw7XG5cdHZhciBh
Y3RpdmVFbGVtZW50SW5zdCA9IG51bGw7XG5cdHZhciBsYXN0U2VsZWN0aW9uID0gbnVsbDtcblx0
dmFyIG1vdXNlRG93biA9IGZhbHNlO1xuXHRcblx0Ly8gVHJhY2sgd2hldGhlciBhIGxpc3RlbmVy
IGV4aXN0cyBmb3IgdGhpcyBwbHVnaW4uIElmIG5vbmUgZXhpc3QsIHdlIGRvXG5cdC8vIG5vdCBl
eHRyYWN0IGV2ZW50cy4gU2VlICMzNjM5LlxuXHR2YXIgaGFzTGlzdGVuZXIgPSBmYWxzZTtcblx0
XG5cdC8qKlxuXHQgKiBHZXQgYW4gb2JqZWN0IHdoaWNoIGlzIGEgdW5pcXVlIHJlcHJlc2VudGF0
aW9uIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbi5cblx0ICpcblx0ICogVGhlIHJldHVybiB2YWx1
ZSB3aWxsIG5vdCBiZSBjb25zaXN0ZW50IGFjcm9zcyBub2RlcyBvciBicm93c2VycywgYnV0XG5c
dCAqIHR3byBpZGVudGljYWwgc2VsZWN0aW9ucyBvbiB0aGUgc2FtZSBub2RlIHdpbGwgcmV0dXJu
IGlkZW50aWNhbCBvYmplY3RzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVc
blx0ICogQHJldHVybiB7b2JqZWN0fVxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0U2VsZWN0aW9uKG5v
ZGUpIHtcblx0ICBpZiAoJ3NlbGVjdGlvblN0YXJ0JyBpbiBub2RlICYmIFJlYWN0SW5wdXRTZWxl
Y3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKG5vZGUpKSB7XG5cdCAgICByZXR1cm4ge1xu
XHQgICAgICBzdGFydDogbm9kZS5zZWxlY3Rpb25TdGFydCxcblx0ICAgICAgZW5kOiBub2RlLnNl
bGVjdGlvbkVuZFxuXHQgICAgfTtcblx0ICB9IGVsc2UgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24p
IHtcblx0ICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cdCAgICBy
ZXR1cm4ge1xuXHQgICAgICBhbmNob3JOb2RlOiBzZWxlY3Rpb24uYW5jaG9yTm9kZSxcblx0ICAg
ICAgYW5jaG9yT2Zmc2V0OiBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0LFxuXHQgICAgICBmb2N1c05v
ZGU6IHNlbGVjdGlvbi5mb2N1c05vZGUsXG5cdCAgICAgIGZvY3VzT2Zmc2V0OiBzZWxlY3Rpb24u
Zm9jdXNPZmZzZXRcblx0ICAgIH07XG5cdCAgfSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24p
IHtcblx0ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO1xu
XHQgICAgcmV0dXJuIHtcblx0ICAgICAgcGFyZW50RWxlbWVudDogcmFuZ2UucGFyZW50RWxlbWVu
dCgpLFxuXHQgICAgICB0ZXh0OiByYW5nZS50ZXh0LFxuXHQgICAgICB0b3A6IHJhbmdlLmJvdW5k
aW5nVG9wLFxuXHQgICAgICBsZWZ0OiByYW5nZS5ib3VuZGluZ0xlZnRcblx0ICAgIH07XG5cdCAg
fVxuXHR9XG5cdFxuXHQvKipcblx0ICogUG9sbCBzZWxlY3Rpb24gdG8gc2VlIHdoZXRoZXIgaXQn
cyBjaGFuZ2VkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRcblx0ICog
QHJldHVybiB7P1N5bnRoZXRpY0V2ZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24gY29uc3RydWN0U2Vs
ZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgLy8gRW5zdXJl
IHdlIGhhdmUgdGhlIHJpZ2h0IGVsZW1lbnQsIGFuZCB0aGF0IHRoZSB1c2VyIGlzIG5vdCBkcmFn
Z2luZyBhXG5cdCAgLy8gc2VsZWN0aW9uICh0aGlzIG1hdGNoZXMgbmF0aXZlIGBzZWxlY3RgIGV2
ZW50IGJlaGF2aW9yKS4gSW4gSFRNTDUsIHNlbGVjdFxuXHQgIC8vIGZpcmVzIG9ubHkgb24gaW5w
dXQgYW5kIHRleHRhcmVhIHRodXMgaWYgdGhlcmUncyBubyBmb2N1c2VkIGVsZW1lbnQgd2Vcblx0
ICAvLyB3b24ndCBkaXNwYXRjaC5cblx0ICBpZiAobW91c2VEb3duIHx8IGFjdGl2ZUVsZW1lbnQg
PT0gbnVsbCB8fCBhY3RpdmVFbGVtZW50ICE9PSBnZXRBY3RpdmVFbGVtZW50KCkpIHtcblx0ICAg
IHJldHVybiBudWxsO1xuXHQgIH1cblx0XG5cdCAgLy8gT25seSBmaXJlIHdoZW4gc2VsZWN0aW9u
IGhhcyBhY3R1YWxseSBjaGFuZ2VkLlxuXHQgIHZhciBjdXJyZW50U2VsZWN0aW9uID0gZ2V0U2Vs
ZWN0aW9uKGFjdGl2ZUVsZW1lbnQpO1xuXHQgIGlmICghbGFzdFNlbGVjdGlvbiB8fCAhc2hhbGxv
d0VxdWFsKGxhc3RTZWxlY3Rpb24sIGN1cnJlbnRTZWxlY3Rpb24pKSB7XG5cdCAgICBsYXN0U2Vs
ZWN0aW9uID0gY3VycmVudFNlbGVjdGlvbjtcblx0XG5cdCAgICB2YXIgc3ludGhldGljRXZlbnQg
PSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5zZWxlY3QsIGFjdGl2ZUVsZW1l
bnRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHRcblx0ICAgIHN5bnRo
ZXRpY0V2ZW50LnR5cGUgPSAnc2VsZWN0Jztcblx0ICAgIHN5bnRoZXRpY0V2ZW50LnRhcmdldCA9
IGFjdGl2ZUVsZW1lbnQ7XG5cdFxuXHQgICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdv
UGhhc2VEaXNwYXRjaGVzKHN5bnRoZXRpY0V2ZW50KTtcblx0XG5cdCAgICByZXR1cm4gc3ludGhl
dGljRXZlbnQ7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gbnVsbDtcblx0fVxuXHRcblx0LyoqXG5c
dCAqIFRoaXMgcGx1Z2luIGNyZWF0ZXMgYW4gYG9uU2VsZWN0YCBldmVudCB0aGF0IG5vcm1hbGl6
ZXMgc2VsZWN0IGV2ZW50c1xuXHQgKiBhY3Jvc3MgZm9ybSBlbGVtZW50cy5cblx0ICpcblx0ICog
U3VwcG9ydGVkIGVsZW1lbnRzIGFyZTpcblx0ICogLSBpbnB1dCAoc2VlIGBpc1RleHRJbnB1dEVs
ZW1lbnRgKVxuXHQgKiAtIHRleHRhcmVhXG5cdCAqIC0gY29udGVudEVkaXRhYmxlXG5cdCAqXG5c
dCAqIFRoaXMgZGlmZmVycyBmcm9tIG5hdGl2ZSBicm93c2VyIGltcGxlbWVudGF0aW9ucyBpbiB0
aGUgZm9sbG93aW5nIHdheXM6XG5cdCAqIC0gRmlyZXMgb24gY29udGVudEVkaXRhYmxlIGZpZWxk
cyBhcyB3ZWxsIGFzIGlucHV0cy5cblx0ICogLSBGaXJlcyBmb3IgY29sbGFwc2VkIHNlbGVjdGlv
bi5cblx0ICogLSBGaXJlcyBhZnRlciB1c2VyIGlucHV0LlxuXHQgKi9cblx0dmFyIFNlbGVjdEV2
ZW50UGx1Z2luID0ge1xuXHQgIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cdFxuXHQgIGV4dHJh
Y3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgICAgaWYgKCFoYXNMaXN0ZW5lcikge1xuXHQgICAg
ICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgdGFyZ2V0Tm9kZSA9IHRhcmdl
dEluc3QgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0YXJnZXRJ
bnN0KSA6IHdpbmRvdztcblx0XG5cdCAgICBzd2l0Y2ggKHRvcExldmVsVHlwZSkge1xuXHQgICAg
ICAvLyBUcmFjayB0aGUgaW5wdXQgbm9kZSB0aGF0IGhhcyBmb2N1cy5cblx0ICAgICAgY2FzZSAn
dG9wRm9jdXMnOlxuXHQgICAgICAgIGlmIChpc1RleHRJbnB1dEVsZW1lbnQodGFyZ2V0Tm9kZSkg
fHwgdGFyZ2V0Tm9kZS5jb250ZW50RWRpdGFibGUgPT09ICd0cnVlJykge1xuXHQgICAgICAgICAg
YWN0aXZlRWxlbWVudCA9IHRhcmdldE5vZGU7XG5cdCAgICAgICAgICBhY3RpdmVFbGVtZW50SW5z
dCA9IHRhcmdldEluc3Q7XG5cdCAgICAgICAgICBsYXN0U2VsZWN0aW9uID0gbnVsbDtcblx0ICAg
ICAgICB9XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3RvcEJsdXInOlxuXHQgICAg
ICAgIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuXHQgICAgICAgIGFjdGl2ZUVsZW1lbnRJbnN0ID0g
bnVsbDtcblx0ICAgICAgICBsYXN0U2VsZWN0aW9uID0gbnVsbDtcblx0ICAgICAgICBicmVhaztc
blx0ICAgICAgLy8gRG9uJ3QgZmlyZSB0aGUgZXZlbnQgd2hpbGUgdGhlIHVzZXIgaXMgZHJhZ2dp
bmcuIFRoaXMgbWF0Y2hlcyB0aGVcblx0ICAgICAgLy8gc2VtYW50aWNzIG9mIHRoZSBuYXRpdmUg
c2VsZWN0IGV2ZW50LlxuXHQgICAgICBjYXNlICd0b3BNb3VzZURvd24nOlxuXHQgICAgICAgIG1v
dXNlRG93biA9IHRydWU7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3RvcENvbnRl
eHRNZW51Jzpcblx0ICAgICAgY2FzZSAndG9wTW91c2VVcCc6XG5cdCAgICAgICAgbW91c2VEb3du
ID0gZmFsc2U7XG5cdCAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFNlbGVjdEV2ZW50KG5hdGl2ZUV2
ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdCAgICAgIC8vIENocm9tZSBhbmQgSUUgZmlyZSBu
b24tc3RhbmRhcmQgZXZlbnQgd2hlbiBzZWxlY3Rpb24gaXMgY2hhbmdlZCAoYW5kXG5cdCAgICAg
IC8vIHNvbWV0aW1lcyB3aGVuIGl0IGhhc24ndCkuIElFJ3MgZXZlbnQgZmlyZXMgb3V0IG9mIG9y
ZGVyIHdpdGggcmVzcGVjdFxuXHQgICAgICAvLyB0byBrZXkgYW5kIGlucHV0IGV2ZW50cyBvbiBk
ZWxldGlvbiwgc28gd2UgZGlzY2FyZCBpdC5cblx0ICAgICAgLy9cblx0ICAgICAgLy8gRmlyZWZv
eCBkb2Vzbid0IHN1cHBvcnQgc2VsZWN0aW9uY2hhbmdlLCBzbyBjaGVjayBzZWxlY3Rpb24gc3Rh
dHVzXG5cdCAgICAgIC8vIGFmdGVyIGVhY2gga2V5IGVudHJ5LiBUaGUgc2VsZWN0aW9uIGNoYW5n
ZXMgYWZ0ZXIga2V5ZG93biBhbmQgYmVmb3JlXG5cdCAgICAgIC8vIGtleXVwLCBidXQgd2UgY2hl
Y2sgb24ga2V5ZG93biBhcyB3ZWxsIGluIHRoZSBjYXNlIG9mIGhvbGRpbmcgZG93biBhXG5cdCAg
ICAgIC8vIGtleSwgd2hlbiBtdWx0aXBsZSBrZXlkb3duIGV2ZW50cyBhcmUgZmlyZWQgYnV0IG9u
bHkgb25lIGtleXVwIGlzLlxuXHQgICAgICAvLyBUaGlzIGlzIGFsc28gb3VyIGFwcHJvYWNoIGZv
ciBJRSBoYW5kbGluZywgZm9yIHRoZSByZWFzb24gYWJvdmUuXG5cdCAgICAgIGNhc2UgJ3RvcFNl
bGVjdGlvbkNoYW5nZSc6XG5cdCAgICAgICAgaWYgKHNraXBTZWxlY3Rpb25DaGFuZ2VFdmVudCkg
e1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXHQgICAgICAvLyBmYWxscyB0aHJv
dWdoXG5cdCAgICAgIGNhc2UgJ3RvcEtleURvd24nOlxuXHQgICAgICBjYXNlICd0b3BLZXlVcCc6
XG5cdCAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFNlbGVjdEV2ZW50KG5hdGl2ZUV2ZW50LCBuYXRp
dmVFdmVudFRhcmdldCk7XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfSxc
blx0XG5cdCAgZGlkUHV0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1l
LCBsaXN0ZW5lcikge1xuXHQgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdvblNlbGVjdCcp
IHtcblx0ICAgICAgaGFzTGlzdGVuZXIgPSB0cnVlO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0
XG5cdG1vZHVsZS5leHBvcnRzID0gU2VsZWN0RXZlbnRQbHVnaW47XG5cbi8qKiovIH0sXG4vKiAx
NjYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBc
blx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIEV2ZW50TGlzdGVuZXIgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDUxKTtcblx0dmFyIEV2ZW50UHJvcGFnYXRvcnMgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDIwKTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1
aXJlX18oNSk7XG5cdHZhciBTeW50aGV0aWNBbmltYXRpb25FdmVudCA9IF9fd2VicGFja19yZXF1
aXJlX18oMTY3KTtcblx0dmFyIFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxNjgpO1xuXHR2YXIgU3ludGhldGljRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDEwKTtcblx0dmFyIFN5bnRoZXRpY0ZvY3VzRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3
MSk7XG5cdHZhciBTeW50aGV0aWNLZXlib2FyZEV2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
NzMpO1xuXHR2YXIgU3ludGhldGljTW91c2VFdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMjYp
O1xuXHR2YXIgU3ludGhldGljRHJhZ0V2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNzApO1xu
XHR2YXIgU3ludGhldGljVG91Y2hFdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTc0KTtcblx0
dmFyIFN5bnRoZXRpY1RyYW5zaXRpb25FdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTc1KTtc
blx0dmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKTtcblx0dmFy
IFN5bnRoZXRpY1doZWVsRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3Nik7XG5cdFxuXHR2
YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cdHZhciBnZXRFdmVu
dENoYXJDb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NCk7XG5cdHZhciBpbnZhcmlhbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0LyoqXG5cdCAqIFR1cm5zXG5cdCAqIFsnYWJv
cnQnLCAuLi5dXG5cdCAqIGludG9cblx0ICogZXZlbnRUeXBlcyA9IHtcblx0ICogICAnYWJvcnQn
OiB7XG5cdCAqICAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuXHQgKiAgICAgICBidWJi
bGVkOiAnb25BYm9ydCcsXG5cdCAqICAgICAgIGNhcHR1cmVkOiAnb25BYm9ydENhcHR1cmUnLFxu
XHQgKiAgICAgfSxcblx0ICogICAgIGRlcGVuZGVuY2llczogWyd0b3BBYm9ydCddLFxuXHQgKiAg
IH0sXG5cdCAqICAgLi4uXG5cdCAqIH07XG5cdCAqIHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENv
bmZpZyA9IHtcblx0ICogICAndG9wQWJvcnQnOiB7IHNhbWVDb25maWcgfVxuXHQgKiB9O1xuXHQg
Ki9cblx0dmFyIGV2ZW50VHlwZXMgPSB7fTtcblx0dmFyIHRvcExldmVsRXZlbnRzVG9EaXNwYXRj
aENvbmZpZyA9IHt9O1xuXHRbJ2Fib3J0JywgJ2FuaW1hdGlvbkVuZCcsICdhbmltYXRpb25JdGVy
YXRpb24nLCAnYW5pbWF0aW9uU3RhcnQnLCAnYmx1cicsICdjYW5QbGF5JywgJ2NhblBsYXlUaHJv
dWdoJywgJ2NsaWNrJywgJ2NvbnRleHRNZW51JywgJ2NvcHknLCAnY3V0JywgJ2RvdWJsZUNsaWNr
JywgJ2RyYWcnLCAnZHJhZ0VuZCcsICdkcmFnRW50ZXInLCAnZHJhZ0V4aXQnLCAnZHJhZ0xlYXZl
JywgJ2RyYWdPdmVyJywgJ2RyYWdTdGFydCcsICdkcm9wJywgJ2R1cmF0aW9uQ2hhbmdlJywgJ2Vt
cHRpZWQnLCAnZW5jcnlwdGVkJywgJ2VuZGVkJywgJ2Vycm9yJywgJ2ZvY3VzJywgJ2lucHV0Jywg
J2ludmFsaWQnLCAna2V5RG93bicsICdrZXlQcmVzcycsICdrZXlVcCcsICdsb2FkJywgJ2xvYWRl
ZERhdGEnLCAnbG9hZGVkTWV0YWRhdGEnLCAnbG9hZFN0YXJ0JywgJ21vdXNlRG93bicsICdtb3Vz
ZU1vdmUnLCAnbW91c2VPdXQnLCAnbW91c2VPdmVyJywgJ21vdXNlVXAnLCAncGFzdGUnLCAncGF1
c2UnLCAncGxheScsICdwbGF5aW5nJywgJ3Byb2dyZXNzJywgJ3JhdGVDaGFuZ2UnLCAncmVzZXQn
LCAnc2Nyb2xsJywgJ3NlZWtlZCcsICdzZWVraW5nJywgJ3N0YWxsZWQnLCAnc3VibWl0JywgJ3N1
c3BlbmQnLCAndGltZVVwZGF0ZScsICd0b3VjaENhbmNlbCcsICd0b3VjaEVuZCcsICd0b3VjaE1v
dmUnLCAndG91Y2hTdGFydCcsICd0cmFuc2l0aW9uRW5kJywgJ3ZvbHVtZUNoYW5nZScsICd3YWl0
aW5nJywgJ3doZWVsJ10uZm9yRWFjaChmdW5jdGlvbiAoZXZlbnQpIHtcblx0ICB2YXIgY2FwaXRh
bGl6ZWRFdmVudCA9IGV2ZW50WzBdLnRvVXBwZXJDYXNlKCkgKyBldmVudC5zbGljZSgxKTtcblx0
ICB2YXIgb25FdmVudCA9ICdvbicgKyBjYXBpdGFsaXplZEV2ZW50O1xuXHQgIHZhciB0b3BFdmVu
dCA9ICd0b3AnICsgY2FwaXRhbGl6ZWRFdmVudDtcblx0XG5cdCAgdmFyIHR5cGUgPSB7XG5cdCAg
ICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuXHQgICAgICBidWJibGVkOiBvbkV2ZW50LFxu
XHQgICAgICBjYXB0dXJlZDogb25FdmVudCArICdDYXB0dXJlJ1xuXHQgICAgfSxcblx0ICAgIGRl
cGVuZGVuY2llczogW3RvcEV2ZW50XVxuXHQgIH07XG5cdCAgZXZlbnRUeXBlc1tldmVudF0gPSB0
eXBlO1xuXHQgIHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZ1t0b3BFdmVudF0gPSB0eXBl
O1xuXHR9KTtcblx0XG5cdHZhciBvbkNsaWNrTGlzdGVuZXJzID0ge307XG5cdFxuXHRmdW5jdGlv
biBnZXREaWN0aW9uYXJ5S2V5KGluc3QpIHtcblx0ICAvLyBQcmV2ZW50cyBWOCBwZXJmb3JtYW5j
ZSBpc3N1ZTpcblx0ICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83
MjMyXG5cdCAgcmV0dXJuICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7XG5cdH1cblx0XG5cdGZ1bmN0
aW9uIGlzSW50ZXJhY3RpdmUodGFnKSB7XG5cdCAgcmV0dXJuIHRhZyA9PT0gJ2J1dHRvbicgfHwg
dGFnID09PSAnaW5wdXQnIHx8IHRhZyA9PT0gJ3NlbGVjdCcgfHwgdGFnID09PSAndGV4dGFyZWEn
O1xuXHR9XG5cdFxuXHR2YXIgU2ltcGxlRXZlbnRQbHVnaW4gPSB7XG5cdCAgZXZlbnRUeXBlczog
ZXZlbnRUeXBlcyxcblx0XG5cdCAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlw
ZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgICB2
YXIgZGlzcGF0Y2hDb25maWcgPSB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWdbdG9wTGV2
ZWxUeXBlXTtcblx0ICAgIGlmICghZGlzcGF0Y2hDb25maWcpIHtcblx0ICAgICAgcmV0dXJuIG51
bGw7XG5cdCAgICB9XG5cdCAgICB2YXIgRXZlbnRDb25zdHJ1Y3Rvcjtcblx0ICAgIHN3aXRjaCAo
dG9wTGV2ZWxUeXBlKSB7XG5cdCAgICAgIGNhc2UgJ3RvcEFib3J0Jzpcblx0ICAgICAgY2FzZSAn
dG9wQ2FuUGxheSc6XG5cdCAgICAgIGNhc2UgJ3RvcENhblBsYXlUaHJvdWdoJzpcblx0ICAgICAg
Y2FzZSAndG9wRHVyYXRpb25DaGFuZ2UnOlxuXHQgICAgICBjYXNlICd0b3BFbXB0aWVkJzpcblx0
ICAgICAgY2FzZSAndG9wRW5jcnlwdGVkJzpcblx0ICAgICAgY2FzZSAndG9wRW5kZWQnOlxuXHQg
ICAgICBjYXNlICd0b3BFcnJvcic6XG5cdCAgICAgIGNhc2UgJ3RvcElucHV0Jzpcblx0ICAgICAg
Y2FzZSAndG9wSW52YWxpZCc6XG5cdCAgICAgIGNhc2UgJ3RvcExvYWQnOlxuXHQgICAgICBjYXNl
ICd0b3BMb2FkZWREYXRhJzpcblx0ICAgICAgY2FzZSAndG9wTG9hZGVkTWV0YWRhdGEnOlxuXHQg
ICAgICBjYXNlICd0b3BMb2FkU3RhcnQnOlxuXHQgICAgICBjYXNlICd0b3BQYXVzZSc6XG5cdCAg
ICAgIGNhc2UgJ3RvcFBsYXknOlxuXHQgICAgICBjYXNlICd0b3BQbGF5aW5nJzpcblx0ICAgICAg
Y2FzZSAndG9wUHJvZ3Jlc3MnOlxuXHQgICAgICBjYXNlICd0b3BSYXRlQ2hhbmdlJzpcblx0ICAg
ICAgY2FzZSAndG9wUmVzZXQnOlxuXHQgICAgICBjYXNlICd0b3BTZWVrZWQnOlxuXHQgICAgICBj
YXNlICd0b3BTZWVraW5nJzpcblx0ICAgICAgY2FzZSAndG9wU3RhbGxlZCc6XG5cdCAgICAgIGNh
c2UgJ3RvcFN1Ym1pdCc6XG5cdCAgICAgIGNhc2UgJ3RvcFN1c3BlbmQnOlxuXHQgICAgICBjYXNl
ICd0b3BUaW1lVXBkYXRlJzpcblx0ICAgICAgY2FzZSAndG9wVm9sdW1lQ2hhbmdlJzpcblx0ICAg
ICAgY2FzZSAndG9wV2FpdGluZyc6XG5cdCAgICAgICAgLy8gSFRNTCBFdmVudHNcblx0ICAgICAg
ICAvLyBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L2luZGV4Lmh0bWwjZXZlbnRzLTBc
blx0ICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljRXZlbnQ7XG5cdCAgICAgICAg
YnJlYWs7XG5cdCAgICAgIGNhc2UgJ3RvcEtleVByZXNzJzpcblx0ICAgICAgICAvLyBGaXJlZm94
IGNyZWF0ZXMgYSBrZXlwcmVzcyBldmVudCBmb3IgZnVuY3Rpb24ga2V5cyB0b28uIFRoaXMgcmVt
b3Zlc1xuXHQgICAgICAgIC8vIHRoZSB1bndhbnRlZCBrZXlwcmVzcyBldmVudHMuIEVudGVyIGlz
IGhvd2V2ZXIgYm90aCBwcmludGFibGUgYW5kXG5cdCAgICAgICAgLy8gbm9uLXByaW50YWJsZS4g
T25lIHdvdWxkIGV4cGVjdCBUYWIgdG8gYmUgYXMgd2VsbCAoYnV0IGl0IGlzbid0KS5cblx0ICAg
ICAgICBpZiAoZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCkgPT09IDApIHtcblx0ICAgICAg
ICAgIHJldHVybiBudWxsO1xuXHQgICAgICAgIH1cblx0ICAgICAgLyogZmFsbHMgdGhyb3VnaCAq
L1xuXHQgICAgICBjYXNlICd0b3BLZXlEb3duJzpcblx0ICAgICAgY2FzZSAndG9wS2V5VXAnOlxu
XHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNLZXlib2FyZEV2ZW50O1xuXHQg
ICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0b3BCbHVyJzpcblx0ICAgICAgY2FzZSAndG9w
Rm9jdXMnOlxuXHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNGb2N1c0V2ZW50
O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0b3BDbGljayc6XG5cdCAgICAgICAg
Ly8gRmlyZWZveCBjcmVhdGVzIGEgY2xpY2sgZXZlbnQgb24gcmlnaHQgbW91c2UgY2xpY2tzLiBU
aGlzIHJlbW92ZXMgdGhlXG5cdCAgICAgICAgLy8gdW53YW50ZWQgY2xpY2sgZXZlbnRzLlxuXHQg
ICAgICAgIGlmIChuYXRpdmVFdmVudC5idXR0b24gPT09IDIpIHtcblx0ICAgICAgICAgIHJldHVy
biBudWxsO1xuXHQgICAgICAgIH1cblx0ICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuXHQgICAg
ICBjYXNlICd0b3BEb3VibGVDbGljayc6XG5cdCAgICAgIGNhc2UgJ3RvcE1vdXNlRG93bic6XG5c
dCAgICAgIGNhc2UgJ3RvcE1vdXNlTW92ZSc6XG5cdCAgICAgIGNhc2UgJ3RvcE1vdXNlVXAnOlxu
XHQgICAgICAvLyBUT0RPOiBEaXNhYmxlZCBlbGVtZW50cyBzaG91bGQgbm90IHJlc3BvbmQgdG8g
bW91c2UgZXZlbnRzXG5cdCAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cblx0ICAgICAgY2FzZSAn
dG9wTW91c2VPdXQnOlxuXHQgICAgICBjYXNlICd0b3BNb3VzZU92ZXInOlxuXHQgICAgICBjYXNl
ICd0b3BDb250ZXh0TWVudSc6XG5cdCAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRp
Y01vdXNlRXZlbnQ7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3RvcERyYWcnOlxu
XHQgICAgICBjYXNlICd0b3BEcmFnRW5kJzpcblx0ICAgICAgY2FzZSAndG9wRHJhZ0VudGVyJzpc
blx0ICAgICAgY2FzZSAndG9wRHJhZ0V4aXQnOlxuXHQgICAgICBjYXNlICd0b3BEcmFnTGVhdmUn
OlxuXHQgICAgICBjYXNlICd0b3BEcmFnT3Zlcic6XG5cdCAgICAgIGNhc2UgJ3RvcERyYWdTdGFy
dCc6XG5cdCAgICAgIGNhc2UgJ3RvcERyb3AnOlxuXHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3Ig
PSBTeW50aGV0aWNEcmFnRXZlbnQ7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3Rv
cFRvdWNoQ2FuY2VsJzpcblx0ICAgICAgY2FzZSAndG9wVG91Y2hFbmQnOlxuXHQgICAgICBjYXNl
ICd0b3BUb3VjaE1vdmUnOlxuXHQgICAgICBjYXNlICd0b3BUb3VjaFN0YXJ0Jzpcblx0ICAgICAg
ICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljVG91Y2hFdmVudDtcblx0ICAgICAgICBicmVh
aztcblx0ICAgICAgY2FzZSAndG9wQW5pbWF0aW9uRW5kJzpcblx0ICAgICAgY2FzZSAndG9wQW5p
bWF0aW9uSXRlcmF0aW9uJzpcblx0ICAgICAgY2FzZSAndG9wQW5pbWF0aW9uU3RhcnQnOlxuXHQg
ICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNBbmltYXRpb25FdmVudDtcblx0ICAg
ICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndG9wVHJhbnNpdGlvbkVuZCc6XG5cdCAgICAgICAg
RXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY1RyYW5zaXRpb25FdmVudDtcblx0ICAgICAgICBi
cmVhaztcblx0ICAgICAgY2FzZSAndG9wU2Nyb2xsJzpcblx0ICAgICAgICBFdmVudENvbnN0cnVj
dG9yID0gU3ludGhldGljVUlFdmVudDtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAn
dG9wV2hlZWwnOlxuXHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNXaGVlbEV2
ZW50O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0b3BDb3B5Jzpcblx0ICAgICAg
Y2FzZSAndG9wQ3V0Jzpcblx0ICAgICAgY2FzZSAndG9wUGFzdGUnOlxuXHQgICAgICAgIEV2ZW50
Q29uc3RydWN0b3IgPSBTeW50aGV0aWNDbGlwYm9hcmRFdmVudDtcblx0ICAgICAgICBicmVhaztc
blx0ICAgIH1cblx0ICAgICFFdmVudENvbnN0cnVjdG9yID8gIGZhbHNlID8gaW52YXJpYW50KGZh
bHNlLCAnU2ltcGxlRXZlbnRQbHVnaW46IFVuaGFuZGxlZCBldmVudCB0eXBlLCBgJXNgLicsIHRv
cExldmVsVHlwZSkgOiBfcHJvZEludmFyaWFudCgnODYnLCB0b3BMZXZlbFR5cGUpIDogdm9pZCAw
O1xuXHQgICAgdmFyIGV2ZW50ID0gRXZlbnRDb25zdHJ1Y3Rvci5nZXRQb29sZWQoZGlzcGF0Y2hD
b25maWcsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdCAg
ICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xu
XHQgICAgcmV0dXJuIGV2ZW50O1xuXHQgIH0sXG5cdFxuXHQgIGRpZFB1dExpc3RlbmVyOiBmdW5j
dGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpIHtcblx0ICAgIC8vIE1vYmls
ZSBTYWZhcmkgZG9lcyBub3QgZmlyZSBwcm9wZXJseSBidWJibGUgY2xpY2sgZXZlbnRzIG9uXG5c
dCAgICAvLyBub24taW50ZXJhY3RpdmUgZWxlbWVudHMsIHdoaWNoIG1lYW5zIGRlbGVnYXRlZCBj
bGljayBsaXN0ZW5lcnMgZG8gbm90XG5cdCAgICAvLyBmaXJlLiBUaGUgd29ya2Fyb3VuZCBmb3Ig
dGhpcyBidWcgaW52b2x2ZXMgYXR0YWNoaW5nIGFuIGVtcHR5IGNsaWNrXG5cdCAgICAvLyBsaXN0
ZW5lciBvbiB0aGUgdGFyZ2V0IG5vZGUuXG5cdCAgICAvLyBodHRwOi8vd3d3LnF1aXJrc21vZGUu
b3JnL2Jsb2cvYXJjaGl2ZXMvMjAxMC8wOS9jbGlja19ldmVudF9kZWwuaHRtbFxuXHQgICAgaWYg
KHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdvbkNsaWNrJyAmJiAhaXNJbnRlcmFjdGl2ZShpbnN0Ll90
YWcpKSB7XG5cdCAgICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xuXHQgICAg
ICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGlu
c3QpO1xuXHQgICAgICBpZiAoIW9uQ2xpY2tMaXN0ZW5lcnNba2V5XSkge1xuXHQgICAgICAgIG9u
Q2xpY2tMaXN0ZW5lcnNba2V5XSA9IEV2ZW50TGlzdGVuZXIubGlzdGVuKG5vZGUsICdjbGljaycs
IGVtcHR5RnVuY3Rpb24pO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgd2ls
bERlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSkge1xuXHQg
ICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdvbkNsaWNrJyAmJiAhaXNJbnRlcmFjdGl2ZShp
bnN0Ll90YWcpKSB7XG5cdCAgICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xu
XHQgICAgICBvbkNsaWNrTGlzdGVuZXJzW2tleV0ucmVtb3ZlKCk7XG5cdCAgICAgIGRlbGV0ZSBv
bkNsaWNrTGlzdGVuZXJzW2tleV07XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBTaW1wbGVFdmVudFBsdWdpbjtcblxuLyoqKi8gfSxcbi8qIDE2NyAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3Vz
ZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY0V2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxMCk7XG5cdFxuXHQvKipcblx0ICogQGludGVyZmFjZSBFdmVudFxuXHQgKiBAc2VlIGh0dHA6
Ly93d3cudzMub3JnL1RSL2NzczMtYW5pbWF0aW9ucy8jQW5pbWF0aW9uRXZlbnQtaW50ZXJmYWNl
XG5cdCAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIv
QVBJL0FuaW1hdGlvbkV2ZW50XG5cdCAqL1xuXHR2YXIgQW5pbWF0aW9uRXZlbnRJbnRlcmZhY2Ug
PSB7XG5cdCAgYW5pbWF0aW9uTmFtZTogbnVsbCxcblx0ICBlbGFwc2VkVGltZTogbnVsbCxcblx0
ICBwc2V1ZG9FbGVtZW50OiBudWxsXG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtvYmpl
Y3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2
ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5
aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBO
YXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVuZHMge1N5bnRoZXRpY0V2ZW50fVxuXHQg
Ki9cblx0ZnVuY3Rpb24gU3ludGhldGljQW5pbWF0aW9uRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRp
c3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1
cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJr
ZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5cdFN5bnRoZXRp
Y0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNBbmltYXRpb25FdmVudCwgQW5pbWF0aW9uRXZl
bnRJbnRlcmZhY2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNBbmltYXRpb25F
dmVudDtcblxuLyoqKi8gfSxcbi8qIDE2OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5
bnRoZXRpY0V2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5cdFxuXHQvKipcblx0ICog
QGludGVyZmFjZSBFdmVudFxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2NsaXBib2Fy
ZC1hcGlzL1xuXHQgKi9cblx0dmFyIENsaXBib2FyZEV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIGNs
aXBib2FyZERhdGE6IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgcmV0dXJuICdjbGlwYm9hcmRE
YXRhJyBpbiBldmVudCA/IGV2ZW50LmNsaXBib2FyZERhdGEgOiB3aW5kb3cuY2xpcGJvYXJkRGF0
YTtcblx0ICB9XG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNo
Q29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBA
cGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVu
dCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3Nl
ciBldmVudC5cblx0ICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG5cdCAqL1xuXHRmdW5j
dGlvbiBTeW50aGV0aWNDbGlwYm9hcmRFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJr
ZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgIHJldHVybiBTeW50aGV0
aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZl
RXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0fVxuXHRcblx0U3ludGhldGljRXZlbnQuYXVn
bWVudENsYXNzKFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50LCBDbGlwYm9hcmRFdmVudEludGVyZmFj
ZSk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50O1xuXG4v
KioqLyB9LFxuLyogMTY5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgU3ludGhldGljRXZl
bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0XG5cdC8qKlxuXHQgKiBAaW50ZXJmYWNl
IEV2ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRz
LyNldmVudHMtY29tcG9zaXRpb25ldmVudHNcblx0ICovXG5cdHZhciBDb21wb3NpdGlvbkV2ZW50
SW50ZXJmYWNlID0ge1xuXHQgIGRhdGE6IG51bGxcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFy
YW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNo
IHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIg
aWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2
ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlF
dmVudH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQoZGlzcGF0
Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQp
IHtcblx0ICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywg
ZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0
XG5cdFN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50
LCBDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gU3lu
dGhldGljQ29tcG9zaXRpb25FdmVudDtcblxuLyoqKi8gfSxcbi8qIDE3MCAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDI2KTtcblx0XG5cdC8qKlxuXHQgKiBAaW50ZXJmYWNlIERyYWdFdmVudFxuXHQgKiBAc2VlIGh0
dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cblx0ICovXG5cdHZhciBEcmFn
RXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgZGF0YVRyYW5zZmVyOiBudWxsXG5cdH07XG5cdFxuXHQv
Kipcblx0ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNl
ZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hN
YXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7
b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVuZHMg
e1N5bnRoZXRpY1VJRXZlbnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBTeW50aGV0aWNEcmFnRXZlbnQo
ZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljTW91c2VFdmVudC5jYWxsKHRoaXMsIGRpc3Bh
dGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KTtcblx0fVxuXHRcblx0U3ludGhldGljTW91c2VFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGlj
RHJhZ0V2ZW50LCBEcmFnRXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBT
eW50aGV0aWNEcmFnRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAxNzEgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdHZhciBTeW50aGV0aWNVSUV2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMik7XG5c
dFxuXHQvKipcblx0ICogQGludGVyZmFjZSBGb2N1c0V2ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3
dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuXHQgKi9cblx0dmFyIEZvY3VzRXZlbnRJ
bnRlcmZhY2UgPSB7XG5cdCAgcmVsYXRlZFRhcmdldDogbnVsbFxuXHR9O1xuXHRcblx0LyoqXG5c
dCAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8g
ZGlzcGF0Y2ggdGhpcyBldmVudC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2Vy
IE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuXHQgKiBAcGFyYW0ge29iamVj
dH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAqIEBleHRlbmRzIHtTeW50
aGV0aWNVSUV2ZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24gU3ludGhldGljRm9jdXNFdmVudChkaXNw
YXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdl
dCkge1xuXHQgIHJldHVybiBTeW50aGV0aWNVSUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25m
aWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHR9
XG5cdFxuXHRTeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNGb2N1c0V2ZW50
LCBGb2N1c0V2ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gU3ludGhldGlj
Rm9jdXNFdmVudDtcblxuLyoqKi8gfSxcbi8qIDE3MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
dmFyIFN5bnRoZXRpY0V2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5cdFxuXHQvKipc
blx0ICogQGludGVyZmFjZSBFdmVudFxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIw
MTMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMTMxMTA1XG5cdCAqICAgICAgLyNldmVudHMtaW5w
dXRldmVudHNcblx0ICovXG5cdHZhciBJbnB1dEV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIGRhdGE6
IG51bGxcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25m
aWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJh
bSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRh
cmdldC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2
ZW50LlxuXHQgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cblx0ICovXG5cdGZ1bmN0aW9u
IFN5bnRoZXRpY0lucHV0RXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljRXZlbnQu
Y2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBu
YXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5cdFN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFz
cyhTeW50aGV0aWNJbnB1dEV2ZW50LCBJbnB1dEV2ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gU3ludGhldGljSW5wdXRFdmVudDtcblxuLyoqKi8gfSxcbi8qIDE3MyAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0
J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDIyKTtcblx0XG5cdHZhciBnZXRFdmVudENoYXJDb2RlID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg0NCk7XG5cdHZhciBnZXRFdmVudEtleSA9IF9fd2VicGFja19yZXF1aXJlX18oMTgxKTtc
blx0dmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDUpO1xu
XHRcblx0LyoqXG5cdCAqIEBpbnRlcmZhY2UgS2V5Ym9hcmRFdmVudFxuXHQgKiBAc2VlIGh0dHA6
Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cblx0ICovXG5cdHZhciBLZXlib2Fy
ZEV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIGtleTogZ2V0RXZlbnRLZXksXG5cdCAgbG9jYXRpb246
IG51bGwsXG5cdCAgY3RybEtleTogbnVsbCxcblx0ICBzaGlmdEtleTogbnVsbCxcblx0ICBhbHRL
ZXk6IG51bGwsXG5cdCAgbWV0YUtleTogbnVsbCxcblx0ICByZXBlYXQ6IG51bGwsXG5cdCAgbG9j
YWxlOiBudWxsLFxuXHQgIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZSxc
blx0ICAvLyBMZWdhY3kgSW50ZXJmYWNlXG5cdCAgY2hhckNvZGU6IGZ1bmN0aW9uIChldmVudCkg
e1xuXHQgICAgLy8gYGNoYXJDb2RlYCBpcyB0aGUgcmVzdWx0IG9mIGEgS2V5UHJlc3MgZXZlbnQg
YW5kIHJlcHJlc2VudHMgdGhlIHZhbHVlIG9mXG5cdCAgICAvLyB0aGUgYWN0dWFsIHByaW50YWJs
ZSBjaGFyYWN0ZXIuXG5cdFxuXHQgICAgLy8gS2V5UHJlc3MgaXMgZGVwcmVjYXRlZCwgYnV0IGl0
cyByZXBsYWNlbWVudCBpcyBub3QgeWV0IGZpbmFsIGFuZCBub3Rcblx0ICAgIC8vIGltcGxlbWVu
dGVkIGluIGFueSBtYWpvciBicm93c2VyLiBPbmx5IEtleVByZXNzIGhhcyBjaGFyQ29kZS5cblx0
ICAgIGlmIChldmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7XG5cdCAgICAgIHJldHVybiBnZXRF
dmVudENoYXJDb2RlKGV2ZW50KTtcblx0ICAgIH1cblx0ICAgIHJldHVybiAwO1xuXHQgIH0sXG5c
dCAga2V5Q29kZTogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICAvLyBga2V5Q29kZWAgaXMgdGhl
IHJlc3VsdCBvZiBhIEtleURvd24vVXAgZXZlbnQgYW5kIHJlcHJlc2VudHMgdGhlIHZhbHVlIG9m
XG5cdCAgICAvLyBwaHlzaWNhbCBrZXlib2FyZCBrZXkuXG5cdFxuXHQgICAgLy8gVGhlIGFjdHVh
bCBtZWFuaW5nIG9mIHRoZSB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1c2Vycycga2V5Ym9hcmQgbGF5
b3V0XG5cdCAgICAvLyB3aGljaCBjYW5ub3QgYmUgZGV0ZWN0ZWQuIEFzc3VtaW5nIHRoYXQgaXQg
aXMgYSBVUyBrZXlib2FyZCBsYXlvdXRcblx0ICAgIC8vIHByb3ZpZGVzIGEgc3VycHJpc2luZ2x5
IGFjY3VyYXRlIG1hcHBpbmcgZm9yIFVTIGFuZCBFdXJvcGVhbiB1c2Vycy5cblx0ICAgIC8vIER1
ZSB0byB0aGlzLCBpdCBpcyBsZWZ0IHRvIHRoZSB1c2VyIHRvIGltcGxlbWVudCBhdCB0aGlzIHRp
bWUuXG5cdCAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nIHx8IGV2ZW50LnR5cGUgPT09
ICdrZXl1cCcpIHtcblx0ICAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGU7XG5cdCAgICB9XG5cdCAg
ICByZXR1cm4gMDtcblx0ICB9LFxuXHQgIHdoaWNoOiBmdW5jdGlvbiAoZXZlbnQpIHtcblx0ICAg
IC8vIGB3aGljaGAgaXMgYW4gYWxpYXMgZm9yIGVpdGhlciBga2V5Q29kZWAgb3IgYGNoYXJDb2Rl
YCBkZXBlbmRpbmcgb24gdGhlXG5cdCAgICAvLyB0eXBlIG9mIHRoZSBldmVudC5cblx0ICAgIGlm
IChldmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7XG5cdCAgICAgIHJldHVybiBnZXRFdmVudENo
YXJDb2RlKGV2ZW50KTtcblx0ICAgIH1cblx0ICAgIGlmIChldmVudC50eXBlID09PSAna2V5ZG93
bicgfHwgZXZlbnQudHlwZSA9PT0gJ2tleXVwJykge1xuXHQgICAgICByZXR1cm4gZXZlbnQua2V5
Q29kZTtcblx0ICAgIH1cblx0ICAgIHJldHVybiAwO1xuXHQgIH1cblx0fTtcblx0XG5cdC8qKlxu
XHQgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRv
IGRpc3BhdGNoIHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtl
ciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0ICogQHBhcmFtIHtvYmpl
Y3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAZXh0ZW5kcyB7U3lu
dGhldGljVUlFdmVudH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY0tleWJvYXJkRXZlbnQo
ZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNo
Q29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtc
blx0fVxuXHRcblx0U3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljS2V5Ym9h
cmRFdmVudCwgS2V5Ym9hcmRFdmVudEludGVyZmFjZSk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IFN5bnRoZXRpY0tleWJvYXJkRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAxNzQgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBTeW50aGV0aWNVSUV2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
Mik7XG5cdFxuXHR2YXIgZ2V0RXZlbnRNb2RpZmllclN0YXRlID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg0NSk7XG5cdFxuXHQvKipcblx0ICogQGludGVyZmFjZSBUb3VjaEV2ZW50XG5cdCAqIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvdG91Y2gtZXZlbnRzL1xuXHQgKi9cblx0dmFyIFRvdWNoRXZl
bnRJbnRlcmZhY2UgPSB7XG5cdCAgdG91Y2hlczogbnVsbCxcblx0ICB0YXJnZXRUb3VjaGVzOiBu
dWxsLFxuXHQgIGNoYW5nZWRUb3VjaGVzOiBudWxsLFxuXHQgIGFsdEtleTogbnVsbCxcblx0ICBt
ZXRhS2V5OiBudWxsLFxuXHQgIGN0cmxLZXk6IG51bGwsXG5cdCAgc2hpZnRLZXk6IG51bGwsXG5c
dCAgZ2V0TW9kaWZpZXJTdGF0ZTogZ2V0RXZlbnRNb2RpZmllclN0YXRlXG5cdH07XG5cdFxuXHQv
Kipcblx0ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNl
ZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hN
YXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7
b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVuZHMg
e1N5bnRoZXRpY1VJRXZlbnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBTeW50aGV0aWNUb3VjaEV2ZW50
KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50
VGFyZ2V0KSB7XG5cdCAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRj
aENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7
XG5cdH1cblx0XG5cdFN5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1RvdWNo
RXZlbnQsIFRvdWNoRXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW50
aGV0aWNUb3VjaEV2ZW50O1xuXG4vKioqLyB9LFxuLyogMTc1ICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
XHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHR2YXIgU3ludGhldGljRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0XG5c
dC8qKlxuXHQgKiBAaW50ZXJmYWNlIEV2ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcv
VFIvMjAwOS9XRC1jc3MzLXRyYW5zaXRpb25zLTIwMDkwMzIwLyN0cmFuc2l0aW9uLWV2ZW50cy1c
blx0ICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9B
UEkvVHJhbnNpdGlvbkV2ZW50XG5cdCAqL1xuXHR2YXIgVHJhbnNpdGlvbkV2ZW50SW50ZXJmYWNl
ID0ge1xuXHQgIHByb3BlcnR5TmFtZTogbnVsbCxcblx0ICBlbGFwc2VkVGltZTogbnVsbCxcblx0
ICBwc2V1ZG9FbGVtZW50OiBudWxsXG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtvYmpl
Y3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2
ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5
aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBO
YXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVuZHMge1N5bnRoZXRpY0V2ZW50fVxuXHQg
Ki9cblx0ZnVuY3Rpb24gU3ludGhldGljVHJhbnNpdGlvbkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBk
aXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgcmV0
dXJuIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFy
a2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHR9XG5cdFxuXHRTeW50aGV0
aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljVHJhbnNpdGlvbkV2ZW50LCBUcmFuc2l0aW9u
RXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNUcmFuc2l0
aW9uRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAxNzYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
XHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZh
ciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNik7XG5cdFxuXHQv
Kipcblx0ICogQGludGVyZmFjZSBXaGVlbEV2ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5v
cmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuXHQgKi9cblx0dmFyIFdoZWVsRXZlbnRJbnRlcmZh
Y2UgPSB7XG5cdCAgZGVsdGFYOiBmdW5jdGlvbiAoZXZlbnQpIHtcblx0ICAgIHJldHVybiAnZGVs
dGFYJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWCA6IC8vIEZhbGxiYWNrIHRvIGB3aGVlbERlbHRh
WGAgZm9yIFdlYmtpdCBhbmQgbm9ybWFsaXplIChyaWdodCBpcyBwb3NpdGl2ZSkuXG5cdCAgICAn
d2hlZWxEZWx0YVgnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFYIDogMDtcblx0ICB9LFxu
XHQgIGRlbHRhWTogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICByZXR1cm4gJ2RlbHRhWScgaW4g
ZXZlbnQgPyBldmVudC5kZWx0YVkgOiAvLyBGYWxsYmFjayB0byBgd2hlZWxEZWx0YVlgIGZvciBX
ZWJraXQgYW5kIG5vcm1hbGl6ZSAoZG93biBpcyBwb3NpdGl2ZSkuXG5cdCAgICAnd2hlZWxEZWx0
YVknIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFZIDogLy8gRmFsbGJhY2sgdG8gYHdoZWVs
RGVsdGFgIGZvciBJRTw5IGFuZCBub3JtYWxpemUgKGRvd24gaXMgcG9zaXRpdmUpLlxuXHQgICAg
J3doZWVsRGVsdGEnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGEgOiAwO1xuXHQgIH0sXG5c
dCAgZGVsdGFaOiBudWxsLFxuXHRcblx0ICAvLyBCcm93c2VycyB3aXRob3V0IFwiZGVsdGFNb2Rl
XCIgaXMgcmVwb3J0aW5nIGluIHJhdyB3aGVlbCBkZWx0YSB3aGVyZSBvbmVcblx0ICAvLyBub3Rj
aCBvbiB0aGUgc2Nyb2xsIGlzIGFsd2F5cyArLy0gMTIwLCByb3VnaGx5IGVxdWl2YWxlbnQgdG8g
cGl4ZWxzLlxuXHQgIC8vIEEgZ29vZCBhcHByb3hpbWF0aW9uIG9mIERPTV9ERUxUQV9MSU5FICgx
KSBpcyA1JSBvZiB2aWV3cG9ydCBzaXplIG9yXG5cdCAgLy8gfjQwIHBpeGVscywgZm9yIERPTV9E
RUxUQV9TQ1JFRU4gKDIpIGl0IGlzIDg3LjUlIG9mIHZpZXdwb3J0IHNpemUuXG5cdCAgZGVsdGFN
b2RlOiBudWxsXG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNo
Q29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBA
cGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVu
dCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3Nl
ciBldmVudC5cblx0ICogQGV4dGVuZHMge1N5bnRoZXRpY01vdXNlRXZlbnR9XG5cdCAqL1xuXHRm
dW5jdGlvbiBTeW50aGV0aWNXaGVlbEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtl
ciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgcmV0dXJuIFN5bnRoZXRp
Y01vdXNlRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5h
dGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5cdFN5bnRoZXRpY01vdXNl
RXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1doZWVsRXZlbnQsIFdoZWVsRXZlbnRJbnRlcmZh
Y2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNXaGVlbEV2ZW50O1xuXG4vKioq
LyB9LFxuLyogMTc3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQv
Kipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIE1PRCA9IDY1NTIxO1xuXHRcblx0Ly8gYWRsZXIz
MiBpcyBub3QgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nLCBhbmQgaXMgb25seSB1c2VkIHRvIHNh
bml0eSBjaGVjayB0aGF0XG5cdC8vIG1hcmt1cCBnZW5lcmF0ZWQgb24gdGhlIHNlcnZlciBtYXRj
aGVzIHRoZSBtYXJrdXAgZ2VuZXJhdGVkIG9uIHRoZSBjbGllbnQuXG5cdC8vIFRoaXMgaW1wbGVt
ZW50YXRpb24gKGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgU2hlZXRKUyB2ZXJzaW9uKSBoYXMg
YmVlbiBvcHRpbWl6ZWRcblx0Ly8gZm9yIG91ciB1c2UgY2FzZSwgYXQgdGhlIGV4cGVuc2Ugb2Yg
Y29uZm9ybWluZyB0byB0aGUgYWRsZXIzMiBzcGVjaWZpY2F0aW9uXG5cdC8vIGZvciBub24tYXNj
aWkgaW5wdXRzLlxuXHRmdW5jdGlvbiBhZGxlcjMyKGRhdGEpIHtcblx0ICB2YXIgYSA9IDE7XG5c
dCAgdmFyIGIgPSAwO1xuXHQgIHZhciBpID0gMDtcblx0ICB2YXIgbCA9IGRhdGEubGVuZ3RoO1xu
XHQgIHZhciBtID0gbCAmIH4weDM7XG5cdCAgd2hpbGUgKGkgPCBtKSB7XG5cdCAgICB2YXIgbiA9
IE1hdGgubWluKGkgKyA0MDk2LCBtKTtcblx0ICAgIGZvciAoOyBpIDwgbjsgaSArPSA0KSB7XG5c
dCAgICAgIGIgKz0gKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkpKSArIChhICs9IGRhdGEuY2hhckNv
ZGVBdChpICsgMSkpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAyKSkgKyAoYSArPSBkYXRh
LmNoYXJDb2RlQXQoaSArIDMpKTtcblx0ICAgIH1cblx0ICAgIGEgJT0gTU9EO1xuXHQgICAgYiAl
PSBNT0Q7XG5cdCAgfVxuXHQgIGZvciAoOyBpIDwgbDsgaSsrKSB7XG5cdCAgICBiICs9IGEgKz0g
ZGF0YS5jaGFyQ29kZUF0KGkpO1xuXHQgIH1cblx0ICBhICU9IE1PRDtcblx0ICBiICU9IE1PRDtc
blx0ICByZXR1cm4gYSB8IGIgPDwgMTY7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gYWRs
ZXIzMjtcblxuLyoqKi8gfSxcbi8qIDE3OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIENT
U1Byb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OCk7XG5cdHZhciB3YXJuaW5nID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBpc1VuaXRsZXNzTnVtYmVyID0gQ1NTUHJv
cGVydHkuaXNVbml0bGVzc051bWJlcjtcblx0dmFyIHN0eWxlV2FybmluZ3MgPSB7fTtcblx0XG5c
dC8qKlxuXHQgKiBDb252ZXJ0IGEgdmFsdWUgaW50byB0aGUgcHJvcGVyIGNzcyB3cml0YWJsZSB2
YWx1ZS4gVGhlIHN0eWxlIG5hbWUgYG5hbWVgXG5cdCAqIHNob3VsZCBiZSBsb2dpY2FsIChubyBo
eXBoZW5zKSwgYXMgc3BlY2lmaWVkXG5cdCAqIGluIGBDU1NQcm9wZXJ0eS5pc1VuaXRsZXNzTnVt
YmVyYC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgQ1NTIHByb3BlcnR5IG5hbWUg
c3VjaCBhcyBgdG9wTWFyZ2luYC5cblx0ICogQHBhcmFtIHsqfSB2YWx1ZSBDU1MgcHJvcGVydHkg
dmFsdWUgc3VjaCBhcyBgMTBweGAuXG5cdCAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGNv
bXBvbmVudFxuXHQgKiBAcmV0dXJuIHtzdHJpbmd9IE5vcm1hbGl6ZWQgc3R5bGUgdmFsdWUgd2l0
aCBkaW1lbnNpb25zIGFwcGxpZWQuXG5cdCAqL1xuXHRmdW5jdGlvbiBkYW5nZXJvdXNTdHlsZVZh
bHVlKG5hbWUsIHZhbHVlLCBjb21wb25lbnQsIGlzQ3VzdG9tUHJvcGVydHkpIHtcblx0ICAvLyBO
b3RlIHRoYXQgd2UndmUgcmVtb3ZlZCBlc2NhcGVUZXh0Rm9yQnJvd3NlcigpIGNhbGxzIGhlcmUg
c2luY2UgdGhlXG5cdCAgLy8gd2hvbGUgc3RyaW5nIHdpbGwgYmUgZXNjYXBlZCB3aGVuIHRoZSBh
dHRyaWJ1dGUgaXMgaW5qZWN0ZWQgaW50b1xuXHQgIC8vIHRoZSBtYXJrdXAuIElmIHlvdSBwcm92
aWRlIHVuc2FmZSB1c2VyIGRhdGEgaGVyZSB0aGV5IGNhbiBpbmplY3Rcblx0ICAvLyBhcmJpdHJh
cnkgQ1NTIHdoaWNoIG1heSBiZSBwcm9ibGVtYXRpYyAoSSBjb3VsZG4ndCByZXBybyB0aGlzKTpc
blx0ICAvLyBodHRwczovL3d3dy5vd2FzcC5vcmcvaW5kZXgucGhwL1hTU19GaWx0ZXJfRXZhc2lv
bl9DaGVhdF9TaGVldFxuXHQgIC8vIGh0dHA6Ly93d3cudGhlc3Bhbm5lci5jby51ay8yMDA3LzEx
LzI2L3VsdGltYXRlLXhzcy1jc3MtaW5qZWN0aW9uL1xuXHQgIC8vIFRoaXMgaXMgbm90IGFuIFhT
UyBob2xlIGJ1dCBpbnN0ZWFkIGEgcG90ZW50aWFsIENTUyBpbmplY3Rpb24gaXNzdWVcblx0ICAv
LyB3aGljaCBoYXMgbGVhZCB0byBhIGdyZWF0ZXIgZGlzY3Vzc2lvbiBhYm91dCBob3cgd2UncmUg
Z29pbmcgdG9cblx0ICAvLyB0cnVzdCBVUkxzIG1vdmluZyBmb3J3YXJkLiBTZWUgIzIxMTU5MDFc
blx0XG5cdCAgdmFyIGlzRW1wdHkgPSB2YWx1ZSA9PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0g
J2Jvb2xlYW4nIHx8IHZhbHVlID09PSAnJztcblx0ICBpZiAoaXNFbXB0eSkge1xuXHQgICAgcmV0
dXJuICcnO1xuXHQgIH1cblx0XG5cdCAgdmFyIGlzTm9uTnVtZXJpYyA9IGlzTmFOKHZhbHVlKTtc
blx0ICBpZiAoaXNDdXN0b21Qcm9wZXJ0eSB8fCBpc05vbk51bWVyaWMgfHwgdmFsdWUgPT09IDAg
fHwgaXNVbml0bGVzc051bWJlci5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiBpc1VuaXRsZXNzTnVt
YmVyW25hbWVdKSB7XG5cdCAgICByZXR1cm4gJycgKyB2YWx1ZTsgLy8gY2FzdCB0byBzdHJpbmdc
blx0ICB9XG5cdFxuXHQgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG5cdCAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgLy8gQWxsb3cgJzAnIHRvIHBhc3MgdGhyb3VnaCB3aXRob3V0
IHdhcm5pbmcuIDAgaXMgYWxyZWFkeSBzcGVjaWFsIGFuZFxuXHQgICAgICAvLyBkb2Vzbid0IHJl
cXVpcmUgdW5pdHMsIHNvIHdlIGRvbid0IG5lZWQgdG8gd2FybiBhYm91dCBpdC5cblx0ICAgICAg
aWYgKGNvbXBvbmVudCAmJiB2YWx1ZSAhPT0gJzAnKSB7XG5cdCAgICAgICAgdmFyIG93bmVyID0g
Y29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cdCAgICAgICAgdmFyIG93bmVyTmFt
ZSA9IG93bmVyID8gb3duZXIuZ2V0TmFtZSgpIDogbnVsbDtcblx0ICAgICAgICBpZiAob3duZXJO
YW1lICYmICFzdHlsZVdhcm5pbmdzW293bmVyTmFtZV0pIHtcblx0ICAgICAgICAgIHN0eWxlV2Fy
bmluZ3Nbb3duZXJOYW1lXSA9IHt9O1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgd2FybmVk
ID0gZmFsc2U7XG5cdCAgICAgICAgaWYgKG93bmVyTmFtZSkge1xuXHQgICAgICAgICAgdmFyIHdh
cm5pbmdzID0gc3R5bGVXYXJuaW5nc1tvd25lck5hbWVdO1xuXHQgICAgICAgICAgd2FybmVkID0g
d2FybmluZ3NbbmFtZV07XG5cdCAgICAgICAgICBpZiAoIXdhcm5lZCkge1xuXHQgICAgICAgICAg
ICB3YXJuaW5nc1tuYW1lXSA9IHRydWU7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQg
ICAgICAgIGlmICghd2FybmVkKSB7XG5cdCAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2EgYCVzYCB0YWcgKG93bmVyOiBgJXNg
KSB3YXMgcGFzc2VkIGEgbnVtZXJpYyBzdHJpbmcgdmFsdWUgJyArICdmb3IgQ1NTIHByb3BlcnR5
IGAlc2AgKHZhbHVlOiBgJXNgKSB3aGljaCB3aWxsIGJlIHRyZWF0ZWQgJyArICdhcyBhIHVuaXRs
ZXNzIG51bWJlciBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFJlYWN0LicsIGNvbXBvbmVudC5fY3Vy
cmVudEVsZW1lbnQudHlwZSwgb3duZXJOYW1lIHx8ICd1bmtub3duJywgbmFtZSwgdmFsdWUpIDog
dm9pZCAwO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgdmFsdWUgPSB2
YWx1ZS50cmltKCk7XG5cdCAgfVxuXHQgIHJldHVybiB2YWx1ZSArICdweCc7XG5cdH1cblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gZGFuZ2Vyb3VzU3R5bGVWYWx1ZTtcblxuLyoqKi8gfSxcbi8qIDE3
OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xu
XHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTEpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg1KTtcblx0dmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDIxKTtcblx0XG5cdHZhciBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZSA9IF9fd2VicGFj
a19yZXF1aXJlX18oNzIpO1xuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0LyoqXG5c
dCAqIFJldHVybnMgdGhlIERPTSBub2RlIHJlbmRlcmVkIGJ5IHRoaXMgZWxlbWVudC5cblx0ICpc
blx0ICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVs
LWFwaS5odG1sI3JlYWN0ZG9tLmZpbmRkb21ub2RlXG5cdCAqXG5cdCAqIEBwYXJhbSB7UmVhY3RD
b21wb25lbnR8RE9NRWxlbWVudH0gY29tcG9uZW50T3JFbGVtZW50XG5cdCAqIEByZXR1cm4gez9E
T01FbGVtZW50fSBUaGUgcm9vdCBub2RlIG9mIHRoaXMgZWxlbWVudC5cblx0ICovXG5cdGZ1bmN0
aW9uIGZpbmRET01Ob2RlKGNvbXBvbmVudE9yRWxlbWVudCkge1xuXHQgIGlmIChmYWxzZSkge1xu
XHQgICAgdmFyIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcblx0ICAgIGlmIChv
d25lciAhPT0gbnVsbCkge1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIsICclcyBpcyBh
Y2Nlc3NpbmcgZmluZERPTU5vZGUgaW5zaWRlIGl0cyByZW5kZXIoKS4gJyArICdyZW5kZXIoKSBz
aG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3BzIGFuZCBzdGF0ZS4gSXQgc2hvdWxkICcg
KyAnbmV2ZXIgYWNjZXNzIHNvbWV0aGluZyB0aGF0IHJlcXVpcmVzIHN0YWxlIGRhdGEgZnJvbSB0
aGUgcHJldmlvdXMgJyArICdyZW5kZXIsIHN1Y2ggYXMgcmVmcy4gTW92ZSB0aGlzIGxvZ2ljIHRv
IGNvbXBvbmVudERpZE1vdW50IGFuZCAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZSBpbnN0ZWFkLics
IG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDtcblx0ICAgICAgb3du
ZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyID0gdHJ1ZTtcblx0ICAgIH1cblx0ICB9XG5cdCAg
aWYgKGNvbXBvbmVudE9yRWxlbWVudCA9PSBudWxsKSB7XG5cdCAgICByZXR1cm4gbnVsbDtcblx0
ICB9XG5cdCAgaWYgKGNvbXBvbmVudE9yRWxlbWVudC5ub2RlVHlwZSA9PT0gMSkge1xuXHQgICAg
cmV0dXJuIGNvbXBvbmVudE9yRWxlbWVudDtcblx0ICB9XG5cdFxuXHQgIHZhciBpbnN0ID0gUmVh
Y3RJbnN0YW5jZU1hcC5nZXQoY29tcG9uZW50T3JFbGVtZW50KTtcblx0ICBpZiAoaW5zdCkge1xu
XHQgICAgaW5zdCA9IGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlKGluc3QpO1xuXHQgICAg
cmV0dXJuIGluc3QgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShp
bnN0KSA6IG51bGw7XG5cdCAgfVxuXHRcblx0ICBpZiAodHlwZW9mIGNvbXBvbmVudE9yRWxlbWVu
dC5yZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICB0cnVlID8gIGZhbHNlID8gaW52YXJp
YW50KGZhbHNlLCAnZmluZERPTU5vZGUgd2FzIGNhbGxlZCBvbiBhbiB1bm1vdW50ZWQgY29tcG9u
ZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzQ0JykgOiB2b2lkIDA7XG5cdCAgfSBlbHNlIHtcblx0
ICAgICB0cnVlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRWxlbWVudCBhcHBlYXJzIHRv
IGJlIG5laXRoZXIgUmVhY3RDb21wb25lbnQgbm9yIERPTU5vZGUgKGtleXM6ICVzKScsIE9iamVj
dC5rZXlzKGNvbXBvbmVudE9yRWxlbWVudCkpIDogX3Byb2RJbnZhcmlhbnQoJzQ1JywgT2JqZWN0
LmtleXMoY29tcG9uZW50T3JFbGVtZW50KSkgOiB2b2lkIDA7XG5cdCAgfVxuXHR9XG5cdFxuXHRt
b2R1bGUuZXhwb3J0cyA9IGZpbmRET01Ob2RlO1xuXG4vKioqLyB9LFxuLyogMTgwICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQv
KiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJvY2Vzcykgey8qKlxuXHQgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHR2YXIgS2V5RXNjYXBlVXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM4
KTtcblx0dmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc4KTtc
blx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0dmFyIFJlYWN0
Q29tcG9uZW50VHJlZUhvb2s7XG5cdFxuXHRpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmlu
ZWQnICYmIHByb2Nlc3MuZW52ICYmIChcInByb2R1Y3Rpb25cIikgPT09ICd0ZXN0Jykge1xuXHQg
IC8vIFRlbXBvcmFyeSBoYWNrLlxuXHQgIC8vIElubGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdl
bGwgd2l0aCBKZXN0OlxuXHQgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9p
c3N1ZXMvNzI0MFxuXHQgIC8vIFJlbW92ZSB0aGUgaW5saW5lIHJlcXVpcmVzIHdoZW4gd2UgZG9u
J3QgbmVlZCB0aGVtIGFueW1vcmU6XG5cdCAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29r
L3JlYWN0L3B1bGwvNzE3OFxuXHQgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDkwKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7ZnVuY3Rpb259IHRy
YXZlcnNlQ29udGV4dCBDb250ZXh0IHBhc3NlZCB0aHJvdWdoIHRyYXZlcnNhbC5cblx0ICogQHBh
cmFtIHs/UmVhY3RDb21wb25lbnR9IGNoaWxkIFJlYWN0IGNoaWxkIGNvbXBvbmVudC5cblx0ICog
QHBhcmFtIHshc3RyaW5nfSBuYW1lIFN0cmluZyBuYW1lIG9mIGtleSBwYXRoIHRvIGNoaWxkLlxu
XHQgKiBAcGFyYW0ge251bWJlcj19IHNlbGZEZWJ1Z0lEIE9wdGlvbmFsIGRlYnVnSUQgb2YgdGhl
IGN1cnJlbnQgaW50ZXJuYWwgaW5zdGFuY2UuXG5cdCAqL1xuXHRmdW5jdGlvbiBmbGF0dGVuU2lu
Z2xlQ2hpbGRJbnRvQ29udGV4dCh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lLCBzZWxmRGVi
dWdJRCkge1xuXHQgIC8vIFdlIGZvdW5kIGEgY29tcG9uZW50IGluc3RhbmNlLlxuXHQgIGlmICh0
cmF2ZXJzZUNvbnRleHQgJiYgdHlwZW9mIHRyYXZlcnNlQ29udGV4dCA9PT0gJ29iamVjdCcpIHtc
blx0ICAgIHZhciByZXN1bHQgPSB0cmF2ZXJzZUNvbnRleHQ7XG5cdCAgICB2YXIga2V5VW5pcXVl
ID0gcmVzdWx0W25hbWVdID09PSB1bmRlZmluZWQ7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAg
ICAgaWYgKCFSZWFjdENvbXBvbmVudFRyZWVIb29rKSB7XG5cdCAgICAgICAgUmVhY3RDb21wb25l
bnRUcmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rJyk7
XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKCFrZXlVbmlxdWUpIHtcblx0ICAgICAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2ZsYXR0ZW5D
aGlsZHJlbiguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4gd2l0aCB0aGUgc2FtZSBrZXks
ICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsgd2hlbiB0d28gY2hpbGRyZW4g
c2hhcmUgYSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSB1c2VkLiVzJywg
S2V5RXNjYXBlVXRpbHMudW5lc2NhcGUobmFtZSksIFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0
U3RhY2tBZGRlbmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6IHZvaWQgMDtcblx0ICAgICAgfVxuXHQg
ICAgfVxuXHQgICAgaWYgKGtleVVuaXF1ZSAmJiBjaGlsZCAhPSBudWxsKSB7XG5cdCAgICAgIHJl
c3VsdFtuYW1lXSA9IGNoaWxkO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAq
IEZsYXR0ZW5zIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3Bz
LmNoaWxkcmVuYC4gQW55IG51bGxcblx0ICogY2hpbGRyZW4gd2lsbCBub3QgYmUgaW5jbHVkZWQg
aW4gdGhlIHJlc3VsdGluZyBvYmplY3QuXG5cdCAqIEByZXR1cm4geyFvYmplY3R9IGZsYXR0ZW5l
ZCBjaGlsZHJlbiBrZXllZCBieSBuYW1lLlxuXHQgKi9cblx0ZnVuY3Rpb24gZmxhdHRlbkNoaWxk
cmVuKGNoaWxkcmVuLCBzZWxmRGVidWdJRCkge1xuXHQgIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7
XG5cdCAgICByZXR1cm4gY2hpbGRyZW47XG5cdCAgfVxuXHQgIHZhciByZXN1bHQgPSB7fTtcblx0
XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBm
dW5jdGlvbiAodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkge1xuXHQgICAgICByZXR1cm4g
ZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFt
ZSwgc2VsZkRlYnVnSUQpO1xuXHQgICAgfSwgcmVzdWx0KTtcblx0ICB9IGVsc2Uge1xuXHQgICAg
dHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRl
eHQsIHJlc3VsdCk7XG5cdCAgfVxuXHQgIHJldHVybiByZXN1bHQ7XG5cdH1cblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gZmxhdHRlbkNoaWxkcmVuO1xuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04g
Ki99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyg4NykpKVxuXG4vKioqLyB9LFxu
LyogMTgxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0
ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgZ2V0RXZlbnRDaGFyQ29kZSA9IF9f
d2VicGFja19yZXF1aXJlX18oNDQpO1xuXHRcblx0LyoqXG5cdCAqIE5vcm1hbGl6YXRpb24gb2Yg
ZGVwcmVjYXRlZCBIVE1MNSBga2V5YCB2YWx1ZXNcblx0ICogQHNlZSBodHRwczovL2RldmVsb3Bl
ci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNLZXlfbmFtZXNc
blx0ICovXG5cdHZhciBub3JtYWxpemVLZXkgPSB7XG5cdCAgRXNjOiAnRXNjYXBlJyxcblx0ICBT
cGFjZWJhcjogJyAnLFxuXHQgIExlZnQ6ICdBcnJvd0xlZnQnLFxuXHQgIFVwOiAnQXJyb3dVcCcs
XG5cdCAgUmlnaHQ6ICdBcnJvd1JpZ2h0Jyxcblx0ICBEb3duOiAnQXJyb3dEb3duJyxcblx0ICBE
ZWw6ICdEZWxldGUnLFxuXHQgIFdpbjogJ09TJyxcblx0ICBNZW51OiAnQ29udGV4dE1lbnUnLFxu
XHQgIEFwcHM6ICdDb250ZXh0TWVudScsXG5cdCAgU2Nyb2xsOiAnU2Nyb2xsTG9jaycsXG5cdCAg
TW96UHJpbnRhYmxlS2V5OiAnVW5pZGVudGlmaWVkJ1xuXHR9O1xuXHRcblx0LyoqXG5cdCAqIFRy
YW5zbGF0aW9uIGZyb20gbGVnYWN5IGBrZXlDb2RlYCB0byBIVE1MNSBga2V5YFxuXHQgKiBPbmx5
IHNwZWNpYWwga2V5cyBzdXBwb3J0ZWQsIGFsbCBvdGhlcnMgZGVwZW5kIG9uIGtleWJvYXJkIGxh
eW91dCBvciBicm93c2VyXG5cdCAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcv
ZW4tVVMvZG9jcy9XZWIvQVBJL0tleWJvYXJkRXZlbnQjS2V5X25hbWVzXG5cdCAqL1xuXHR2YXIg
dHJhbnNsYXRlVG9LZXkgPSB7XG5cdCAgODogJ0JhY2tzcGFjZScsXG5cdCAgOTogJ1RhYicsXG5c
dCAgMTI6ICdDbGVhcicsXG5cdCAgMTM6ICdFbnRlcicsXG5cdCAgMTY6ICdTaGlmdCcsXG5cdCAg
MTc6ICdDb250cm9sJyxcblx0ICAxODogJ0FsdCcsXG5cdCAgMTk6ICdQYXVzZScsXG5cdCAgMjA6
ICdDYXBzTG9jaycsXG5cdCAgMjc6ICdFc2NhcGUnLFxuXHQgIDMyOiAnICcsXG5cdCAgMzM6ICdQ
YWdlVXAnLFxuXHQgIDM0OiAnUGFnZURvd24nLFxuXHQgIDM1OiAnRW5kJyxcblx0ICAzNjogJ0hv
bWUnLFxuXHQgIDM3OiAnQXJyb3dMZWZ0Jyxcblx0ICAzODogJ0Fycm93VXAnLFxuXHQgIDM5OiAn
QXJyb3dSaWdodCcsXG5cdCAgNDA6ICdBcnJvd0Rvd24nLFxuXHQgIDQ1OiAnSW5zZXJ0Jyxcblx0
ICA0NjogJ0RlbGV0ZScsXG5cdCAgMTEyOiAnRjEnLFxuXHQgIDExMzogJ0YyJyxcblx0ICAxMTQ6
ICdGMycsXG5cdCAgMTE1OiAnRjQnLFxuXHQgIDExNjogJ0Y1Jyxcblx0ICAxMTc6ICdGNicsXG5c
dCAgMTE4OiAnRjcnLFxuXHQgIDExOTogJ0Y4Jyxcblx0ICAxMjA6ICdGOScsXG5cdCAgMTIxOiAn
RjEwJyxcblx0ICAxMjI6ICdGMTEnLFxuXHQgIDEyMzogJ0YxMicsXG5cdCAgMTQ0OiAnTnVtTG9j
aycsXG5cdCAgMTQ1OiAnU2Nyb2xsTG9jaycsXG5cdCAgMjI0OiAnTWV0YSdcblx0fTtcblx0XG5c
dC8qKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZl
bnQuXG5cdCAqIEByZXR1cm4ge3N0cmluZ30gTm9ybWFsaXplZCBga2V5YCBwcm9wZXJ0eS5cblx0
ICovXG5cdGZ1bmN0aW9uIGdldEV2ZW50S2V5KG5hdGl2ZUV2ZW50KSB7XG5cdCAgaWYgKG5hdGl2
ZUV2ZW50LmtleSkge1xuXHQgICAgLy8gTm9ybWFsaXplIGluY29uc2lzdGVudCB2YWx1ZXMgcmVw
b3J0ZWQgYnkgYnJvd3NlcnMgZHVlIHRvXG5cdCAgICAvLyBpbXBsZW1lbnRhdGlvbnMgb2YgYSB3
b3JraW5nIGRyYWZ0IHNwZWNpZmljYXRpb24uXG5cdFxuXHQgICAgLy8gRmlyZUZveCBpbXBsZW1l
bnRzIGBrZXlgIGJ1dCByZXR1cm5zIGBNb3pQcmludGFibGVLZXlgIGZvciBhbGxcblx0ICAgIC8v
IHByaW50YWJsZSBjaGFyYWN0ZXJzIChub3JtYWxpemVkIHRvIGBVbmlkZW50aWZpZWRgKSwgaWdu
b3JlIGl0LlxuXHQgICAgdmFyIGtleSA9IG5vcm1hbGl6ZUtleVtuYXRpdmVFdmVudC5rZXldIHx8
IG5hdGl2ZUV2ZW50LmtleTtcblx0ICAgIGlmIChrZXkgIT09ICdVbmlkZW50aWZpZWQnKSB7XG5c
dCAgICAgIHJldHVybiBrZXk7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICAvLyBCcm93c2VyIGRv
ZXMgbm90IGltcGxlbWVudCBga2V5YCwgcG9seWZpbGwgYXMgbXVjaCBvZiBpdCBhcyB3ZSBjYW4u
XG5cdCAgaWYgKG5hdGl2ZUV2ZW50LnR5cGUgPT09ICdrZXlwcmVzcycpIHtcblx0ICAgIHZhciBj
aGFyQ29kZSA9IGdldEV2ZW50Q2hhckNvZGUobmF0aXZlRXZlbnQpO1xuXHRcblx0ICAgIC8vIFRo
ZSBlbnRlci1rZXkgaXMgdGVjaG5pY2FsbHkgYm90aCBwcmludGFibGUgYW5kIG5vbi1wcmludGFi
bGUgYW5kIGNhblxuXHQgICAgLy8gdGh1cyBiZSBjYXB0dXJlZCBieSBga2V5cHJlc3NgLCBubyBv
dGhlciBub24tcHJpbnRhYmxlIGtleSBzaG91bGQuXG5cdCAgICByZXR1cm4gY2hhckNvZGUgPT09
IDEzID8gJ0VudGVyJyA6IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpO1xuXHQgIH1cblx0
ICBpZiAobmF0aXZlRXZlbnQudHlwZSA9PT0gJ2tleWRvd24nIHx8IG5hdGl2ZUV2ZW50LnR5cGUg
PT09ICdrZXl1cCcpIHtcblx0ICAgIC8vIFdoaWxlIHVzZXIga2V5Ym9hcmQgbGF5b3V0IGRldGVy
bWluZXMgdGhlIGFjdHVhbCBtZWFuaW5nIG9mIGVhY2hcblx0ICAgIC8vIGBrZXlDb2RlYCB2YWx1
ZSwgYWxtb3N0IGFsbCBmdW5jdGlvbiBrZXlzIGhhdmUgYSB1bml2ZXJzYWwgdmFsdWUuXG5cdCAg
ICByZXR1cm4gdHJhbnNsYXRlVG9LZXlbbmF0aXZlRXZlbnQua2V5Q29kZV0gfHwgJ1VuaWRlbnRp
ZmllZCc7XG5cdCAgfVxuXHQgIHJldHVybiAnJztcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMg
PSBnZXRFdmVudEtleTtcblxuLyoqKi8gfSxcbi8qIDE4MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5c
dCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qIGdsb2JhbCBT
eW1ib2wgKi9cblx0XG5cdHZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAn
ZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVyYXRvcjtcblx0dmFyIEZBVVhfSVRFUkFUT1JfU1lNQk9M
ID0gJ0BAaXRlcmF0b3InOyAvLyBCZWZvcmUgU3ltYm9sIHNwZWMuXG5cdFxuXHQvKipcblx0ICog
UmV0dXJucyB0aGUgaXRlcmF0b3IgbWV0aG9kIGZ1bmN0aW9uIGNvbnRhaW5lZCBvbiB0aGUgaXRl
cmFibGUgb2JqZWN0LlxuXHQgKlxuXHQgKiBCZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rpb24g
d2l0aCB0aGUgaXRlcmFibGUgYXMgY29udGV4dDpcblx0ICpcblx0ICogICAgIHZhciBpdGVyYXRv
ckZuID0gZ2V0SXRlcmF0b3JGbihteUl0ZXJhYmxlKTtcblx0ICogICAgIGlmIChpdGVyYXRvckZu
KSB7XG5cdCAqICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChteUl0ZXJhYmxl
KTtcblx0ICogICAgICAgLi4uXG5cdCAqICAgICB9XG5cdCAqXG5cdCAqIEBwYXJhbSB7P29iamVj
dH0gbWF5YmVJdGVyYWJsZVxuXHQgKiBAcmV0dXJuIHs/ZnVuY3Rpb259XG5cdCAqL1xuXHRmdW5j
dGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcblx0ICB2YXIgaXRlcmF0b3JGbiA9
IG1heWJlSXRlcmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW0lURVJB
VE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF0pO1xuXHQg
IGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgcmV0dXJuIGl0
ZXJhdG9yRm47XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldEl0ZXJhdG9y
Rm47XG5cbi8qKiovIH0sXG4vKiAxODMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBHaXZlbiBhbnkgbm9kZSByZXR1
cm4gdGhlIGZpcnN0IGxlYWYgbm9kZSB3aXRob3V0IGNoaWxkcmVuLlxuXHQgKlxuXHQgKiBAcGFy
YW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGVcblx0ICogQHJldHVybiB7RE9NRWxlbWVu
dHxET01UZXh0Tm9kZX1cblx0ICovXG5cdFxuXHRmdW5jdGlvbiBnZXRMZWFmTm9kZShub2RlKSB7
XG5cdCAgd2hpbGUgKG5vZGUgJiYgbm9kZS5maXJzdENoaWxkKSB7XG5cdCAgICBub2RlID0gbm9k
ZS5maXJzdENoaWxkO1xuXHQgIH1cblx0ICByZXR1cm4gbm9kZTtcblx0fVxuXHRcblx0LyoqXG5c
dCAqIEdldCB0aGUgbmV4dCBzaWJsaW5nIHdpdGhpbiBhIGNvbnRhaW5lci4gVGhpcyB3aWxsIHdh
bGsgdXAgdGhlXG5cdCAqIERPTSBpZiBhIG5vZGUncyBzaWJsaW5ncyBoYXZlIGJlZW4gZXhoYXVz
dGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGVcblx0
ICogQHJldHVybiB7P0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9XG5cdCAqL1xuXHRmdW5jdGlvbiBn
ZXRTaWJsaW5nTm9kZShub2RlKSB7XG5cdCAgd2hpbGUgKG5vZGUpIHtcblx0ICAgIGlmIChub2Rl
Lm5leHRTaWJsaW5nKSB7XG5cdCAgICAgIHJldHVybiBub2RlLm5leHRTaWJsaW5nO1xuXHQgICAg
fVxuXHQgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxu
XHQgKiBHZXQgb2JqZWN0IGRlc2NyaWJpbmcgdGhlIG5vZGVzIHdoaWNoIGNvbnRhaW4gY2hhcmFj
dGVycyBhdCBvZmZzZXQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9k
ZX0gcm9vdFxuXHQgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG5cdCAqIEByZXR1cm4gez9vYmpl
Y3R9XG5cdCAqL1xuXHRmdW5jdGlvbiBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KHJvb3QsIG9m
ZnNldCkge1xuXHQgIHZhciBub2RlID0gZ2V0TGVhZk5vZGUocm9vdCk7XG5cdCAgdmFyIG5vZGVT
dGFydCA9IDA7XG5cdCAgdmFyIG5vZGVFbmQgPSAwO1xuXHRcblx0ICB3aGlsZSAobm9kZSkge1xu
XHQgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMpIHtcblx0ICAgICAgbm9kZUVuZCA9IG5vZGVT
dGFydCArIG5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuXHRcblx0ICAgICAgaWYgKG5vZGVTdGFy
dCA8PSBvZmZzZXQgJiYgbm9kZUVuZCA+PSBvZmZzZXQpIHtcblx0ICAgICAgICByZXR1cm4ge1xu
XHQgICAgICAgICAgbm9kZTogbm9kZSxcblx0ICAgICAgICAgIG9mZnNldDogb2Zmc2V0IC0gbm9k
ZVN0YXJ0XG5cdCAgICAgICAgfTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgbm9kZVN0YXJ0ID0g
bm9kZUVuZDtcblx0ICAgIH1cblx0XG5cdCAgICBub2RlID0gZ2V0TGVhZk5vZGUoZ2V0U2libGlu
Z05vZGUobm9kZSkpO1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBnZXROb2Rl
Rm9yQ2hhcmFjdGVyT2Zmc2V0O1xuXG4vKioqLyB9LFxuLyogMTg0ICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYp
O1xuXHRcblx0LyoqXG5cdCAqIEdlbmVyYXRlIGEgbWFwcGluZyBvZiBzdGFuZGFyZCB2ZW5kb3Ig
cHJlZml4ZXMgdXNpbmcgdGhlIGRlZmluZWQgc3R5bGUgcHJvcGVydHkgYW5kIGV2ZW50IG5hbWUu
XG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZVByb3Bcblx0ICogQHBhcmFtIHtzdHJp
bmd9IGV2ZW50TmFtZVxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fVxuXHQgKi9cblx0ZnVuY3Rpb24g
bWFrZVByZWZpeE1hcChzdHlsZVByb3AsIGV2ZW50TmFtZSkge1xuXHQgIHZhciBwcmVmaXhlcyA9
IHt9O1xuXHRcblx0ICBwcmVmaXhlc1tzdHlsZVByb3AudG9Mb3dlckNhc2UoKV0gPSBldmVudE5h
bWUudG9Mb3dlckNhc2UoKTtcblx0ICBwcmVmaXhlc1snV2Via2l0JyArIHN0eWxlUHJvcF0gPSAn
d2Via2l0JyArIGV2ZW50TmFtZTtcblx0ICBwcmVmaXhlc1snTW96JyArIHN0eWxlUHJvcF0gPSAn
bW96JyArIGV2ZW50TmFtZTtcblx0ICBwcmVmaXhlc1snbXMnICsgc3R5bGVQcm9wXSA9ICdNUycg
KyBldmVudE5hbWU7XG5cdCAgcHJlZml4ZXNbJ08nICsgc3R5bGVQcm9wXSA9ICdvJyArIGV2ZW50
TmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcblx0ICByZXR1cm4gcHJlZml4ZXM7XG5cdH1cblx0XG5c
dC8qKlxuXHQgKiBBIGxpc3Qgb2YgZXZlbnQgbmFtZXMgdG8gYSBjb25maWd1cmFibGUgbGlzdCBv
ZiB2ZW5kb3IgcHJlZml4ZXMuXG5cdCAqL1xuXHR2YXIgdmVuZG9yUHJlZml4ZXMgPSB7XG5cdCAg
YW5pbWF0aW9uZW5kOiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5pbWF0aW9uRW5kJyks
XG5cdCAgYW5pbWF0aW9uaXRlcmF0aW9uOiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5p
bWF0aW9uSXRlcmF0aW9uJyksXG5cdCAgYW5pbWF0aW9uc3RhcnQ6IG1ha2VQcmVmaXhNYXAoJ0Fu
aW1hdGlvbicsICdBbmltYXRpb25TdGFydCcpLFxuXHQgIHRyYW5zaXRpb25lbmQ6IG1ha2VQcmVm
aXhNYXAoJ1RyYW5zaXRpb24nLCAnVHJhbnNpdGlvbkVuZCcpXG5cdH07XG5cdFxuXHQvKipcblx0
ICogRXZlbnQgbmFtZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBkZXRlY3RlZCBhbmQgcHJlZml4
ZWQgKGlmIGFwcGxpY2FibGUpLlxuXHQgKi9cblx0dmFyIHByZWZpeGVkRXZlbnROYW1lcyA9IHt9
O1xuXHRcblx0LyoqXG5cdCAqIEVsZW1lbnQgdG8gY2hlY2sgZm9yIHByZWZpeGVzIG9uLlxuXHQg
Ki9cblx0dmFyIHN0eWxlID0ge307XG5cdFxuXHQvKipcblx0ICogQm9vdHN0cmFwIGlmIGEgRE9N
IGV4aXN0cy5cblx0ICovXG5cdGlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtc
blx0ICBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLnN0eWxlO1xuXHRcblx0
ICAvLyBPbiBzb21lIHBsYXRmb3JtcywgaW4gcGFydGljdWxhciBzb21lIHJlbGVhc2VzIG9mIEFu
ZHJvaWQgNC54LFxuXHQgIC8vIHRoZSB1bi1wcmVmaXhlZCBcImFuaW1hdGlvblwiIGFuZCBcInRy
YW5zaXRpb25cIiBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkIG9uIHRoZVxuXHQgIC8vIHN0eWxlIG9i
amVjdCBidXQgdGhlIGV2ZW50cyB0aGF0IGZpcmUgd2lsbCBzdGlsbCBiZSBwcmVmaXhlZCwgc28g
d2UgbmVlZFxuXHQgIC8vIHRvIGNoZWNrIGlmIHRoZSB1bi1wcmVmaXhlZCBldmVudHMgYXJlIHVz
YWJsZSwgYW5kIGlmIG5vdCByZW1vdmUgdGhlbSBmcm9tIHRoZSBtYXAuXG5cdCAgaWYgKCEoJ0Fu
aW1hdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7XG5cdCAgICBkZWxldGUgdmVuZG9yUHJlZml4ZXMu
YW5pbWF0aW9uZW5kLmFuaW1hdGlvbjtcblx0ICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5hbmlt
YXRpb25pdGVyYXRpb24uYW5pbWF0aW9uO1xuXHQgICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFu
aW1hdGlvbnN0YXJ0LmFuaW1hdGlvbjtcblx0ICB9XG5cdFxuXHQgIC8vIFNhbWUgYXMgYWJvdmVc
blx0ICBpZiAoISgnVHJhbnNpdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7XG5cdCAgICBkZWxldGUg
dmVuZG9yUHJlZml4ZXMudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uO1xuXHQgIH1cblx0fVxuXHRc
blx0LyoqXG5cdCAqIEF0dGVtcHRzIHRvIGRldGVybWluZSB0aGUgY29ycmVjdCB2ZW5kb3IgcHJl
Zml4ZWQgZXZlbnQgbmFtZS5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVxu
XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0VmVuZG9yUHJlZml4
ZWRFdmVudE5hbWUoZXZlbnROYW1lKSB7XG5cdCAgaWYgKHByZWZpeGVkRXZlbnROYW1lc1tldmVu
dE5hbWVdKSB7XG5cdCAgICByZXR1cm4gcHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV07XG5c
dCAgfSBlbHNlIGlmICghdmVuZG9yUHJlZml4ZXNbZXZlbnROYW1lXSkge1xuXHQgICAgcmV0dXJu
IGV2ZW50TmFtZTtcblx0ICB9XG5cdFxuXHQgIHZhciBwcmVmaXhNYXAgPSB2ZW5kb3JQcmVmaXhl
c1tldmVudE5hbWVdO1xuXHRcblx0ICBmb3IgKHZhciBzdHlsZVByb3AgaW4gcHJlZml4TWFwKSB7
XG5cdCAgICBpZiAocHJlZml4TWFwLmhhc093blByb3BlcnR5KHN0eWxlUHJvcCkgJiYgc3R5bGVQ
cm9wIGluIHN0eWxlKSB7XG5cdCAgICAgIHJldHVybiBwcmVmaXhlZEV2ZW50TmFtZXNbZXZlbnRO
YW1lXSA9IHByZWZpeE1hcFtzdHlsZVByb3BdO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgcmV0
dXJuICcnO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldFZlbmRvclByZWZpeGVkRXZl
bnROYW1lO1xuXG4vKioqLyB9LFxuLyogMTg1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIg
ZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOCk7XG5c
dFxuXHQvKipcblx0ICogRXNjYXBlcyBhdHRyaWJ1dGUgdmFsdWUgdG8gcHJldmVudCBzY3JpcHRp
bmcgYXR0YWNrcy5cblx0ICpcblx0ICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSB0byBlc2NhcGUu
XG5cdCAqIEByZXR1cm4ge3N0cmluZ30gQW4gZXNjYXBlZCBzdHJpbmcuXG5cdCAqL1xuXHRmdW5j
dGlvbiBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSkge1xuXHQgIHJldHVybiAn
XCInICsgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHZhbHVlKSArICdcIic7XG5cdH1cblx0
XG5cdG1vZHVsZS5leHBvcnRzID0gcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXI7XG5cbi8q
KiovIH0sXG4vKiAxODYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
XHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdE1vdW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg2Nyk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0TW91
bnQucmVuZGVyU3VidHJlZUludG9Db250YWluZXI7XG5cbi8qKiovIH0sXG4vKiAxODcgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9y
dHMuY3JlYXRlUHJvdmlkZXIgPSBjcmVhdGVQcm92aWRlcjtcblx0XG5cdHZhciBfcmVhY3QgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcblx0XG5cdHZhciBfcHJvcFR5cGVzID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg1Nik7XG5cdFxuXHR2YXIgX3Byb3BUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF9wcm9wVHlwZXMpO1xuXHRcblx0dmFyIF9Qcm9wVHlwZXMgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDgyKTtcblx0XG5cdHZhciBfd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oNTAp
O1xuXHRcblx0dmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcp
O1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9i
aiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGZ1
bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5z
dGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNh
bm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cdFxuXHRmdW5jdGlvbiBf
cG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJv
dyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3Vw
ZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxs
ID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6
IHNlbGY7IH1cblx0XG5cdGZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykg
eyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9
PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0
aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9
IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNs
YXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFi
bGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChz
dXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yo
c3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsg
fVxuXHRcblx0dmFyIGRpZFdhcm5BYm91dFJlY2VpdmluZ1N0b3JlID0gZmFsc2U7XG5cdGZ1bmN0
aW9uIHdhcm5BYm91dFJlY2VpdmluZ1N0b3JlKCkge1xuXHQgIGlmIChkaWRXYXJuQWJvdXRSZWNl
aXZpbmdTdG9yZSkge1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICBkaWRXYXJuQWJvdXRSZWNl
aXZpbmdTdG9yZSA9IHRydWU7XG5cdFxuXHQgICgwLCBfd2FybmluZzIuZGVmYXVsdCkoJzxQcm92
aWRlcj4gZG9lcyBub3Qgc3VwcG9ydCBjaGFuZ2luZyBgc3RvcmVgIG9uIHRoZSBmbHkuICcgKyAn
SXQgaXMgbW9zdCBsaWtlbHkgdGhhdCB5b3Ugc2VlIHRoaXMgZXJyb3IgYmVjYXVzZSB5b3UgdXBk
YXRlZCB0byAnICsgJ1JlZHV4IDIueCBhbmQgUmVhY3QgUmVkdXggMi54IHdoaWNoIG5vIGxvbmdl
ciBob3QgcmVsb2FkIHJlZHVjZXJzICcgKyAnYXV0b21hdGljYWxseS4gU2VlIGh0dHBzOi8vZ2l0
aHViLmNvbS9yZWFjdGpzL3JlYWN0LXJlZHV4L3JlbGVhc2VzLycgKyAndGFnL3YyLjAuMCBmb3Ig
dGhlIG1pZ3JhdGlvbiBpbnN0cnVjdGlvbnMuJyk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGNyZWF0
ZVByb3ZpZGVyKCkge1xuXHQgIHZhciBfUHJvdmlkZXIkY2hpbGRDb250ZXg7XG5cdFxuXHQgIHZh
ciBzdG9yZUtleSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5k
ZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJ3N0b3JlJztcblx0ICB2YXIgc3ViS2V5ID0gYXJndW1l
bnRzWzFdO1xuXHRcblx0ICB2YXIgc3Vic2NyaXB0aW9uS2V5ID0gc3ViS2V5IHx8IHN0b3JlS2V5
ICsgJ1N1YnNjcmlwdGlvbic7XG5cdFxuXHQgIHZhciBQcm92aWRlciA9IGZ1bmN0aW9uIChfQ29t
cG9uZW50KSB7XG5cdCAgICBfaW5oZXJpdHMoUHJvdmlkZXIsIF9Db21wb25lbnQpO1xuXHRcblx0
ICAgIFByb3ZpZGVyLnByb3RvdHlwZS5nZXRDaGlsZENvbnRleHQgPSBmdW5jdGlvbiBnZXRDaGls
ZENvbnRleHQoKSB7XG5cdCAgICAgIHZhciBfcmVmO1xuXHRcblx0ICAgICAgcmV0dXJuIF9yZWYg
PSB7fSwgX3JlZltzdG9yZUtleV0gPSB0aGlzW3N0b3JlS2V5XSwgX3JlZltzdWJzY3JpcHRpb25L
ZXldID0gbnVsbCwgX3JlZjtcblx0ICAgIH07XG5cdFxuXHQgICAgZnVuY3Rpb24gUHJvdmlkZXIo
cHJvcHMsIGNvbnRleHQpIHtcblx0ICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFByb3ZpZGVy
KTtcblx0XG5cdCAgICAgIHZhciBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRo
aXMsIF9Db21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcywgY29udGV4dCkpO1xuXHRcblx0ICAgICAg
X3RoaXNbc3RvcmVLZXldID0gcHJvcHMuc3RvcmU7XG5cdCAgICAgIHJldHVybiBfdGhpcztcblx0
ICAgIH1cblx0XG5cdCAgICBQcm92aWRlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gcmVu
ZGVyKCkge1xuXHQgICAgICByZXR1cm4gX3JlYWN0LkNoaWxkcmVuLm9ubHkodGhpcy5wcm9wcy5j
aGlsZHJlbik7XG5cdCAgICB9O1xuXHRcblx0ICAgIHJldHVybiBQcm92aWRlcjtcblx0ICB9KF9y
ZWFjdC5Db21wb25lbnQpO1xuXHRcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIFByb3ZpZGVyLnBy
b3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzID0gZnVuY3Rpb24gKG5leHRQcm9wcykg
e1xuXHQgICAgICBpZiAodGhpc1tzdG9yZUtleV0gIT09IG5leHRQcm9wcy5zdG9yZSkge1xuXHQg
ICAgICAgIHdhcm5BYm91dFJlY2VpdmluZ1N0b3JlKCk7XG5cdCAgICAgIH1cblx0ICAgIH07XG5c
dCAgfVxuXHRcblx0ICBQcm92aWRlci5wcm9wVHlwZXMgPSB7XG5cdCAgICBzdG9yZTogX1Byb3BU
eXBlcy5zdG9yZVNoYXBlLmlzUmVxdWlyZWQsXG5cdCAgICBjaGlsZHJlbjogX3Byb3BUeXBlczIu
ZGVmYXVsdC5lbGVtZW50LmlzUmVxdWlyZWRcblx0ICB9O1xuXHQgIFByb3ZpZGVyLmNoaWxkQ29u
dGV4dFR5cGVzID0gKF9Qcm92aWRlciRjaGlsZENvbnRleCA9IHt9LCBfUHJvdmlkZXIkY2hpbGRD
b250ZXhbc3RvcmVLZXldID0gX1Byb3BUeXBlcy5zdG9yZVNoYXBlLmlzUmVxdWlyZWQsIF9Qcm92
aWRlciRjaGlsZENvbnRleFtzdWJzY3JpcHRpb25LZXldID0gX1Byb3BUeXBlcy5zdWJzY3JpcHRp
b25TaGFwZSwgX1Byb3ZpZGVyJGNoaWxkQ29udGV4KTtcblx0XG5cdCAgcmV0dXJuIFByb3ZpZGVy
O1xuXHR9XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSBjcmVhdGVQcm92aWRlcigpO1xuXG4vKioq
LyB9LFxuLyogMTg4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1
bGUgPSB0cnVlO1xuXHRcblx0dmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlv
biAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7
IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYg
KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFy
Z2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblx0XG5cdGV4
cG9ydHMuY3JlYXRlQ29ubmVjdCA9IGNyZWF0ZUNvbm5lY3Q7XG5cdFxuXHR2YXIgX2Nvbm5lY3RB
ZHZhbmNlZCA9IF9fd2VicGFja19yZXF1aXJlX18oNzkpO1xuXHRcblx0dmFyIF9jb25uZWN0QWR2
YW5jZWQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29ubmVjdEFkdmFuY2VkKTtcblx0XG5c
dHZhciBfc2hhbGxvd0VxdWFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTUpO1xuXHRcblx0dmFy
IF9zaGFsbG93RXF1YWwyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2hhbGxvd0VxdWFsKTtc
blx0XG5cdHZhciBfbWFwRGlzcGF0Y2hUb1Byb3BzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODkp
O1xuXHRcblx0dmFyIF9tYXBEaXNwYXRjaFRvUHJvcHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChfbWFwRGlzcGF0Y2hUb1Byb3BzKTtcblx0XG5cdHZhciBfbWFwU3RhdGVUb1Byb3BzID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxOTApO1xuXHRcblx0dmFyIF9tYXBTdGF0ZVRvUHJvcHMyID0gX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdChfbWFwU3RhdGVUb1Byb3BzKTtcblx0XG5cdHZhciBfbWVyZ2VQ
cm9wcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTkxKTtcblx0XG5cdHZhciBfbWVyZ2VQcm9wczIg
PSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9tZXJnZVByb3BzKTtcblx0XG5cdHZhciBfc2VsZWN0
b3JGYWN0b3J5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTIpO1xuXHRcblx0dmFyIF9zZWxlY3Rv
ckZhY3RvcnkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2VsZWN0b3JGYWN0b3J5KTtcblx0
XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYg
b2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlv
biBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMob2JqLCBrZXlzKSB7IHZhciB0YXJnZXQgPSB7fTsg
Zm9yICh2YXIgaSBpbiBvYmopIHsgaWYgKGtleXMuaW5kZXhPZihpKSA+PSAwKSBjb250aW51ZTsg
aWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBpKSkgY29udGlu
dWU7IHRhcmdldFtpXSA9IG9ialtpXTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cdFxuXHQvKlxuXHQg
IGNvbm5lY3QgaXMgYSBmYWNhZGUgb3ZlciBjb25uZWN0QWR2YW5jZWQuIEl0IHR1cm5zIGl0cyBh
cmdzIGludG8gYSBjb21wYXRpYmxlXG5cdCAgc2VsZWN0b3JGYWN0b3J5LCB3aGljaCBoYXMgdGhl
IHNpZ25hdHVyZTpcblx0XG5cdCAgICAoZGlzcGF0Y2gsIG9wdGlvbnMpID0+IChuZXh0U3RhdGUs
IG5leHRPd25Qcm9wcykgPT4gbmV4dEZpbmFsUHJvcHNcblx0ICBcblx0ICBjb25uZWN0IHBhc3Nl
cyBpdHMgYXJncyB0byBjb25uZWN0QWR2YW5jZWQgYXMgb3B0aW9ucywgd2hpY2ggd2lsbCBpbiB0
dXJuIHBhc3MgdGhlbSB0b1xuXHQgIHNlbGVjdG9yRmFjdG9yeSBlYWNoIHRpbWUgYSBDb25uZWN0
IGNvbXBvbmVudCBpbnN0YW5jZSBpcyBpbnN0YW50aWF0ZWQgb3IgaG90IHJlbG9hZGVkLlxuXHRc
blx0ICBzZWxlY3RvckZhY3RvcnkgcmV0dXJucyBhIGZpbmFsIHByb3BzIHNlbGVjdG9yIGZyb20g
aXRzIG1hcFN0YXRlVG9Qcm9wcyxcblx0ICBtYXBTdGF0ZVRvUHJvcHNGYWN0b3JpZXMsIG1hcERp
c3BhdGNoVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVzLCBtZXJnZVByb3BzLFxu
XHQgIG1lcmdlUHJvcHNGYWN0b3JpZXMsIGFuZCBwdXJlIGFyZ3MuXG5cdFxuXHQgIFRoZSByZXN1
bHRpbmcgZmluYWwgcHJvcHMgc2VsZWN0b3IgaXMgY2FsbGVkIGJ5IHRoZSBDb25uZWN0IGNvbXBv
bmVudCBpbnN0YW5jZSB3aGVuZXZlclxuXHQgIGl0IHJlY2VpdmVzIG5ldyBwcm9wcyBvciBzdG9y
ZSBzdGF0ZS5cblx0ICovXG5cdFxuXHRmdW5jdGlvbiBtYXRjaChhcmcsIGZhY3RvcmllcywgbmFt
ZSkge1xuXHQgIGZvciAodmFyIGkgPSBmYWN0b3JpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0p
IHtcblx0ICAgIHZhciByZXN1bHQgPSBmYWN0b3JpZXNbaV0oYXJnKTtcblx0ICAgIGlmIChyZXN1
bHQpIHJldHVybiByZXN1bHQ7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gZnVuY3Rpb24gKGRpc3Bh
dGNoLCBvcHRpb25zKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWUgb2Yg
dHlwZSAnICsgdHlwZW9mIGFyZyArICcgZm9yICcgKyBuYW1lICsgJyBhcmd1bWVudCB3aGVuIGNv
bm5lY3RpbmcgY29tcG9uZW50ICcgKyBvcHRpb25zLndyYXBwZWRDb21wb25lbnROYW1lICsgJy4n
KTtcblx0ICB9O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBzdHJpY3RFcXVhbChhLCBiKSB7XG5cdCAg
cmV0dXJuIGEgPT09IGI7XG5cdH1cblx0XG5cdC8vIGNyZWF0ZUNvbm5lY3Qgd2l0aCBkZWZhdWx0
IGFyZ3MgYnVpbGRzIHRoZSAnb2ZmaWNpYWwnIGNvbm5lY3QgYmVoYXZpb3IuIENhbGxpbmcgaXQg
d2l0aFxuXHQvLyBkaWZmZXJlbnQgb3B0aW9ucyBvcGVucyB1cCBzb21lIHRlc3RpbmcgYW5kIGV4
dGVuc2liaWxpdHkgc2NlbmFyaW9zXG5cdGZ1bmN0aW9uIGNyZWF0ZUNvbm5lY3QoKSB7XG5cdCAg
dmFyIF9yZWYgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVm
aW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9LFxuXHQgICAgICBfcmVmJGNvbm5lY3RIT0MgPSBfcmVm
LmNvbm5lY3RIT0MsXG5cdCAgICAgIGNvbm5lY3RIT0MgPSBfcmVmJGNvbm5lY3RIT0MgPT09IHVu
ZGVmaW5lZCA/IF9jb25uZWN0QWR2YW5jZWQyLmRlZmF1bHQgOiBfcmVmJGNvbm5lY3RIT0MsXG5c
dCAgICAgIF9yZWYkbWFwU3RhdGVUb1Byb3BzRiA9IF9yZWYubWFwU3RhdGVUb1Byb3BzRmFjdG9y
aWVzLFxuXHQgICAgICBtYXBTdGF0ZVRvUHJvcHNGYWN0b3JpZXMgPSBfcmVmJG1hcFN0YXRlVG9Q
cm9wc0YgPT09IHVuZGVmaW5lZCA/IF9tYXBTdGF0ZVRvUHJvcHMyLmRlZmF1bHQgOiBfcmVmJG1h
cFN0YXRlVG9Qcm9wc0YsXG5cdCAgICAgIF9yZWYkbWFwRGlzcGF0Y2hUb1BybyA9IF9yZWYubWFw
RGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVzLFxuXHQgICAgICBtYXBEaXNwYXRjaFRvUHJvcHNGYWN0
b3JpZXMgPSBfcmVmJG1hcERpc3BhdGNoVG9Qcm8gPT09IHVuZGVmaW5lZCA/IF9tYXBEaXNwYXRj
aFRvUHJvcHMyLmRlZmF1bHQgOiBfcmVmJG1hcERpc3BhdGNoVG9Qcm8sXG5cdCAgICAgIF9yZWYk
bWVyZ2VQcm9wc0ZhY3RvciA9IF9yZWYubWVyZ2VQcm9wc0ZhY3Rvcmllcyxcblx0ICAgICAgbWVy
Z2VQcm9wc0ZhY3RvcmllcyA9IF9yZWYkbWVyZ2VQcm9wc0ZhY3RvciA9PT0gdW5kZWZpbmVkID8g
X21lcmdlUHJvcHMyLmRlZmF1bHQgOiBfcmVmJG1lcmdlUHJvcHNGYWN0b3IsXG5cdCAgICAgIF9y
ZWYkc2VsZWN0b3JGYWN0b3J5ID0gX3JlZi5zZWxlY3RvckZhY3RvcnksXG5cdCAgICAgIHNlbGVj
dG9yRmFjdG9yeSA9IF9yZWYkc2VsZWN0b3JGYWN0b3J5ID09PSB1bmRlZmluZWQgPyBfc2VsZWN0
b3JGYWN0b3J5Mi5kZWZhdWx0IDogX3JlZiRzZWxlY3RvckZhY3Rvcnk7XG5cdFxuXHQgIHJldHVy
biBmdW5jdGlvbiBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBt
ZXJnZVByb3BzKSB7XG5cdCAgICB2YXIgX3JlZjIgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBh
cmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IHt9LFxuXHQgICAgICAg
IF9yZWYyJHB1cmUgPSBfcmVmMi5wdXJlLFxuXHQgICAgICAgIHB1cmUgPSBfcmVmMiRwdXJlID09
PSB1bmRlZmluZWQgPyB0cnVlIDogX3JlZjIkcHVyZSxcblx0ICAgICAgICBfcmVmMiRhcmVTdGF0
ZXNFcXVhbCA9IF9yZWYyLmFyZVN0YXRlc0VxdWFsLFxuXHQgICAgICAgIGFyZVN0YXRlc0VxdWFs
ID0gX3JlZjIkYXJlU3RhdGVzRXF1YWwgPT09IHVuZGVmaW5lZCA/IHN0cmljdEVxdWFsIDogX3Jl
ZjIkYXJlU3RhdGVzRXF1YWwsXG5cdCAgICAgICAgX3JlZjIkYXJlT3duUHJvcHNFcXVhID0gX3Jl
ZjIuYXJlT3duUHJvcHNFcXVhbCxcblx0ICAgICAgICBhcmVPd25Qcm9wc0VxdWFsID0gX3JlZjIk
YXJlT3duUHJvcHNFcXVhID09PSB1bmRlZmluZWQgPyBfc2hhbGxvd0VxdWFsMi5kZWZhdWx0IDog
X3JlZjIkYXJlT3duUHJvcHNFcXVhLFxuXHQgICAgICAgIF9yZWYyJGFyZVN0YXRlUHJvcHNFcSA9
IF9yZWYyLmFyZVN0YXRlUHJvcHNFcXVhbCxcblx0ICAgICAgICBhcmVTdGF0ZVByb3BzRXF1YWwg
PSBfcmVmMiRhcmVTdGF0ZVByb3BzRXEgPT09IHVuZGVmaW5lZCA/IF9zaGFsbG93RXF1YWwyLmRl
ZmF1bHQgOiBfcmVmMiRhcmVTdGF0ZVByb3BzRXEsXG5cdCAgICAgICAgX3JlZjIkYXJlTWVyZ2Vk
UHJvcHNFID0gX3JlZjIuYXJlTWVyZ2VkUHJvcHNFcXVhbCxcblx0ICAgICAgICBhcmVNZXJnZWRQ
cm9wc0VxdWFsID0gX3JlZjIkYXJlTWVyZ2VkUHJvcHNFID09PSB1bmRlZmluZWQgPyBfc2hhbGxv
d0VxdWFsMi5kZWZhdWx0IDogX3JlZjIkYXJlTWVyZ2VkUHJvcHNFLFxuXHQgICAgICAgIGV4dHJh
T3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmMiwgWydwdXJlJywgJ2FyZVN0
YXRlc0VxdWFsJywgJ2FyZU93blByb3BzRXF1YWwnLCAnYXJlU3RhdGVQcm9wc0VxdWFsJywgJ2Fy
ZU1lcmdlZFByb3BzRXF1YWwnXSk7XG5cdFxuXHQgICAgdmFyIGluaXRNYXBTdGF0ZVRvUHJvcHMg
PSBtYXRjaChtYXBTdGF0ZVRvUHJvcHMsIG1hcFN0YXRlVG9Qcm9wc0ZhY3RvcmllcywgJ21hcFN0
YXRlVG9Qcm9wcycpO1xuXHQgICAgdmFyIGluaXRNYXBEaXNwYXRjaFRvUHJvcHMgPSBtYXRjaCht
YXBEaXNwYXRjaFRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wc0ZhY3RvcmllcywgJ21hcERpc3Bh
dGNoVG9Qcm9wcycpO1xuXHQgICAgdmFyIGluaXRNZXJnZVByb3BzID0gbWF0Y2gobWVyZ2VQcm9w
cywgbWVyZ2VQcm9wc0ZhY3RvcmllcywgJ21lcmdlUHJvcHMnKTtcblx0XG5cdCAgICByZXR1cm4g
Y29ubmVjdEhPQyhzZWxlY3RvckZhY3RvcnksIF9leHRlbmRzKHtcblx0ICAgICAgLy8gdXNlZCBp
biBlcnJvciBtZXNzYWdlc1xuXHQgICAgICBtZXRob2ROYW1lOiAnY29ubmVjdCcsXG5cdFxuXHQg
ICAgICAvLyB1c2VkIHRvIGNvbXB1dGUgQ29ubmVjdCdzIGRpc3BsYXlOYW1lIGZyb20gdGhlIHdy
YXBwZWQgY29tcG9uZW50J3MgZGlzcGxheU5hbWUuXG5cdCAgICAgIGdldERpc3BsYXlOYW1lOiBm
dW5jdGlvbiBnZXREaXNwbGF5TmFtZShuYW1lKSB7XG5cdCAgICAgICAgcmV0dXJuICdDb25uZWN0
KCcgKyBuYW1lICsgJyknO1xuXHQgICAgICB9LFxuXHRcblx0ICAgICAgLy8gaWYgbWFwU3RhdGVU
b1Byb3BzIGlzIGZhbHN5LCB0aGUgQ29ubmVjdCBjb21wb25lbnQgZG9lc24ndCBzdWJzY3JpYmUg
dG8gc3RvcmUgc3RhdGUgY2hhbmdlc1xuXHQgICAgICBzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXM6
IEJvb2xlYW4obWFwU3RhdGVUb1Byb3BzKSxcblx0XG5cdCAgICAgIC8vIHBhc3NlZCB0aHJvdWdo
IHRvIHNlbGVjdG9yRmFjdG9yeVxuXHQgICAgICBpbml0TWFwU3RhdGVUb1Byb3BzOiBpbml0TWFw
U3RhdGVUb1Byb3BzLFxuXHQgICAgICBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzOiBpbml0TWFwRGlz
cGF0Y2hUb1Byb3BzLFxuXHQgICAgICBpbml0TWVyZ2VQcm9wczogaW5pdE1lcmdlUHJvcHMsXG5c
dCAgICAgIHB1cmU6IHB1cmUsXG5cdCAgICAgIGFyZVN0YXRlc0VxdWFsOiBhcmVTdGF0ZXNFcXVh
bCxcblx0ICAgICAgYXJlT3duUHJvcHNFcXVhbDogYXJlT3duUHJvcHNFcXVhbCxcblx0ICAgICAg
YXJlU3RhdGVQcm9wc0VxdWFsOiBhcmVTdGF0ZVByb3BzRXF1YWwsXG5cdCAgICAgIGFyZU1lcmdl
ZFByb3BzRXF1YWw6IGFyZU1lcmdlZFByb3BzRXF1YWxcblx0XG5cdCAgICB9LCBleHRyYU9wdGlv
bnMpKTtcblx0ICB9O1xuXHR9XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSBjcmVhdGVDb25uZWN0
KCk7XG5cbi8qKiovIH0sXG4vKiAxODkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9y
dHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMud2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lz
RnVuY3Rpb24gPSB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5jdGlvbjtcblx0ZXhwb3J0cy53
aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nID0gd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lz
TWlzc2luZztcblx0ZXhwb3J0cy53aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNPYmplY3QgPSB3aGVu
TWFwRGlzcGF0Y2hUb1Byb3BzSXNPYmplY3Q7XG5cdFxuXHR2YXIgX3JlZHV4ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygzMCk7XG5cdFxuXHR2YXIgX3dyYXBNYXBUb1Byb3BzID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg4MCk7XG5cdFxuXHRmdW5jdGlvbiB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5j
dGlvbihtYXBEaXNwYXRjaFRvUHJvcHMpIHtcblx0ICByZXR1cm4gdHlwZW9mIG1hcERpc3BhdGNo
VG9Qcm9wcyA9PT0gJ2Z1bmN0aW9uJyA/ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRvUHJv
cHNGdW5jKShtYXBEaXNwYXRjaFRvUHJvcHMsICdtYXBEaXNwYXRjaFRvUHJvcHMnKSA6IHVuZGVm
aW5lZDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzTWlzc2lu
ZyhtYXBEaXNwYXRjaFRvUHJvcHMpIHtcblx0ICByZXR1cm4gIW1hcERpc3BhdGNoVG9Qcm9wcyA/
ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRvUHJvcHNDb25zdGFudCkoZnVuY3Rpb24gKGRp
c3BhdGNoKSB7XG5cdCAgICByZXR1cm4geyBkaXNwYXRjaDogZGlzcGF0Y2ggfTtcblx0ICB9KSA6
IHVuZGVmaW5lZDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lz
T2JqZWN0KG1hcERpc3BhdGNoVG9Qcm9wcykge1xuXHQgIHJldHVybiBtYXBEaXNwYXRjaFRvUHJv
cHMgJiYgdHlwZW9mIG1hcERpc3BhdGNoVG9Qcm9wcyA9PT0gJ29iamVjdCcgPyAoMCwgX3dyYXBN
YXBUb1Byb3BzLndyYXBNYXBUb1Byb3BzQ29uc3RhbnQpKGZ1bmN0aW9uIChkaXNwYXRjaCkge1xu
XHQgICAgcmV0dXJuICgwLCBfcmVkdXguYmluZEFjdGlvbkNyZWF0b3JzKShtYXBEaXNwYXRjaFRv
UHJvcHMsIGRpc3BhdGNoKTtcblx0ICB9KSA6IHVuZGVmaW5lZDtcblx0fVxuXHRcblx0ZXhwb3J0
cy5kZWZhdWx0ID0gW3doZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uLCB3aGVuTWFwRGlz
cGF0Y2hUb1Byb3BzSXNNaXNzaW5nLCB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNPYmplY3RdO1xu
XG4vKioqLyB9LFxuLyogMTkwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9f
ZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLndoZW5NYXBTdGF0ZVRvUHJvcHNJc0Z1bmN0aW9u
ID0gd2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb247XG5cdGV4cG9ydHMud2hlbk1hcFN0YXRl
VG9Qcm9wc0lzTWlzc2luZyA9IHdoZW5NYXBTdGF0ZVRvUHJvcHNJc01pc3Npbmc7XG5cdFxuXHR2
YXIgX3dyYXBNYXBUb1Byb3BzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4MCk7XG5cdFxuXHRmdW5j
dGlvbiB3aGVuTWFwU3RhdGVUb1Byb3BzSXNGdW5jdGlvbihtYXBTdGF0ZVRvUHJvcHMpIHtcblx0
ICByZXR1cm4gdHlwZW9mIG1hcFN0YXRlVG9Qcm9wcyA9PT0gJ2Z1bmN0aW9uJyA/ICgwLCBfd3Jh
cE1hcFRvUHJvcHMud3JhcE1hcFRvUHJvcHNGdW5jKShtYXBTdGF0ZVRvUHJvcHMsICdtYXBTdGF0
ZVRvUHJvcHMnKSA6IHVuZGVmaW5lZDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gd2hlbk1hcFN0YXRl
VG9Qcm9wc0lzTWlzc2luZyhtYXBTdGF0ZVRvUHJvcHMpIHtcblx0ICByZXR1cm4gIW1hcFN0YXRl
VG9Qcm9wcyA/ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRvUHJvcHNDb25zdGFudCkoZnVu
Y3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIHt9O1xuXHQgIH0pIDogdW5kZWZpbmVkO1xuXHR9XG5c
dFxuXHRleHBvcnRzLmRlZmF1bHQgPSBbd2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb24sIHdo
ZW5NYXBTdGF0ZVRvUHJvcHNJc01pc3NpbmddO1xuXG4vKioqLyB9LFxuLyogMTkxICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRcblx0dmFy
IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFy
IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVu
dHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5
XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblx0XG5cdGV4cG9ydHMuZGVmYXVsdE1lcmdlUHJv
cHMgPSBkZWZhdWx0TWVyZ2VQcm9wcztcblx0ZXhwb3J0cy53cmFwTWVyZ2VQcm9wc0Z1bmMgPSB3
cmFwTWVyZ2VQcm9wc0Z1bmM7XG5cdGV4cG9ydHMud2hlbk1lcmdlUHJvcHNJc0Z1bmN0aW9uID0g
d2hlbk1lcmdlUHJvcHNJc0Z1bmN0aW9uO1xuXHRleHBvcnRzLndoZW5NZXJnZVByb3BzSXNPbWl0
dGVkID0gd2hlbk1lcmdlUHJvcHNJc09taXR0ZWQ7XG5cdFxuXHR2YXIgX3ZlcmlmeVBsYWluT2Jq
ZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Myk7XG5cdFxuXHR2YXIgX3ZlcmlmeVBsYWluT2Jq
ZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3ZlcmlmeVBsYWluT2JqZWN0KTtcblx0XG5c
dGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2Jq
Ll9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiBk
ZWZhdWx0TWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzLCBvd25Qcm9wcykge1xu
XHQgIHJldHVybiBfZXh0ZW5kcyh7fSwgb3duUHJvcHMsIHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJv
cHMpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiB3cmFwTWVyZ2VQcm9wc0Z1bmMobWVyZ2VQcm9wcykg
e1xuXHQgIHJldHVybiBmdW5jdGlvbiBpbml0TWVyZ2VQcm9wc1Byb3h5KGRpc3BhdGNoLCBfcmVm
KSB7XG5cdCAgICB2YXIgZGlzcGxheU5hbWUgPSBfcmVmLmRpc3BsYXlOYW1lLFxuXHQgICAgICAg
IHB1cmUgPSBfcmVmLnB1cmUsXG5cdCAgICAgICAgYXJlTWVyZ2VkUHJvcHNFcXVhbCA9IF9yZWYu
YXJlTWVyZ2VkUHJvcHNFcXVhbDtcblx0XG5cdCAgICB2YXIgaGFzUnVuT25jZSA9IGZhbHNlO1xu
XHQgICAgdmFyIG1lcmdlZFByb3BzID0gdm9pZCAwO1xuXHRcblx0ICAgIHJldHVybiBmdW5jdGlv
biBtZXJnZVByb3BzUHJveHkoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpIHtc
blx0ICAgICAgdmFyIG5leHRNZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlz
cGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuXHRcblx0ICAgICAgaWYgKGhhc1J1bk9uY2UpIHtcblx0
ICAgICAgICBpZiAoIXB1cmUgfHwgIWFyZU1lcmdlZFByb3BzRXF1YWwobmV4dE1lcmdlZFByb3Bz
LCBtZXJnZWRQcm9wcykpIG1lcmdlZFByb3BzID0gbmV4dE1lcmdlZFByb3BzO1xuXHQgICAgICB9
IGVsc2Uge1xuXHQgICAgICAgIGhhc1J1bk9uY2UgPSB0cnVlO1xuXHQgICAgICAgIG1lcmdlZFBy
b3BzID0gbmV4dE1lcmdlZFByb3BzO1xuXHRcblx0ICAgICAgICBpZiAoZmFsc2UpICgwLCBfdmVy
aWZ5UGxhaW5PYmplY3QyLmRlZmF1bHQpKG1lcmdlZFByb3BzLCBkaXNwbGF5TmFtZSwgJ21lcmdl
UHJvcHMnKTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuXHQg
ICAgfTtcblx0ICB9O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiB3aGVuTWVyZ2VQcm9wc0lzRnVuY3Rp
b24obWVyZ2VQcm9wcykge1xuXHQgIHJldHVybiB0eXBlb2YgbWVyZ2VQcm9wcyA9PT0gJ2Z1bmN0
aW9uJyA/IHdyYXBNZXJnZVByb3BzRnVuYyhtZXJnZVByb3BzKSA6IHVuZGVmaW5lZDtcblx0fVxu
XHRcblx0ZnVuY3Rpb24gd2hlbk1lcmdlUHJvcHNJc09taXR0ZWQobWVyZ2VQcm9wcykge1xuXHQg
IHJldHVybiAhbWVyZ2VQcm9wcyA/IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBkZWZhdWx0
TWVyZ2VQcm9wcztcblx0ICB9IDogdW5kZWZpbmVkO1xuXHR9XG5cdFxuXHRleHBvcnRzLmRlZmF1
bHQgPSBbd2hlbk1lcmdlUHJvcHNJc0Z1bmN0aW9uLCB3aGVuTWVyZ2VQcm9wc0lzT21pdHRlZF07
XG5cbi8qKiovIH0sXG4vKiAxOTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMu
X19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMuaW1wdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFj
dG9yeSA9IGltcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3Rvcnk7XG5cdGV4cG9ydHMucHVyZUZp
bmFsUHJvcHNTZWxlY3RvckZhY3RvcnkgPSBwdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeTtc
blx0ZXhwb3J0cy5kZWZhdWx0ID0gZmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeTtcblx0XG5cdHZh
ciBfdmVyaWZ5U3Vic2VsZWN0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTMpO1xuXHRcblx0
dmFyIF92ZXJpZnlTdWJzZWxlY3RvcnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdmVyaWZ5
U3Vic2VsZWN0b3JzKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2Jq
KSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9
OyB9XG5cdFxuXHRmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMob2JqLCBrZXlzKSB7
IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIgaSBpbiBvYmopIHsgaWYgKGtleXMuaW5kZXhPZihp
KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNh
bGwob2JqLCBpKSkgY29udGludWU7IHRhcmdldFtpXSA9IG9ialtpXTsgfSByZXR1cm4gdGFyZ2V0
OyB9XG5cdFxuXHRmdW5jdGlvbiBpbXB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5KG1hcFN0
YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzLCBkaXNwYXRjaCkge1xu
XHQgIHJldHVybiBmdW5jdGlvbiBpbXB1cmVGaW5hbFByb3BzU2VsZWN0b3Ioc3RhdGUsIG93blBy
b3BzKSB7XG5cdCAgICByZXR1cm4gbWVyZ2VQcm9wcyhtYXBTdGF0ZVRvUHJvcHMoc3RhdGUsIG93
blByb3BzKSwgbWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvd25Qcm9wcyksIG93blByb3Bz
KTtcblx0ICB9O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBwdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFj
dG9yeShtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcywgZGlz
cGF0Y2gsIF9yZWYpIHtcblx0ICB2YXIgYXJlU3RhdGVzRXF1YWwgPSBfcmVmLmFyZVN0YXRlc0Vx
dWFsLFxuXHQgICAgICBhcmVPd25Qcm9wc0VxdWFsID0gX3JlZi5hcmVPd25Qcm9wc0VxdWFsLFxu
XHQgICAgICBhcmVTdGF0ZVByb3BzRXF1YWwgPSBfcmVmLmFyZVN0YXRlUHJvcHNFcXVhbDtcblx0
XG5cdCAgdmFyIGhhc1J1bkF0TGVhc3RPbmNlID0gZmFsc2U7XG5cdCAgdmFyIHN0YXRlID0gdm9p
ZCAwO1xuXHQgIHZhciBvd25Qcm9wcyA9IHZvaWQgMDtcblx0ICB2YXIgc3RhdGVQcm9wcyA9IHZv
aWQgMDtcblx0ICB2YXIgZGlzcGF0Y2hQcm9wcyA9IHZvaWQgMDtcblx0ICB2YXIgbWVyZ2VkUHJv
cHMgPSB2b2lkIDA7XG5cdFxuXHQgIGZ1bmN0aW9uIGhhbmRsZUZpcnN0Q2FsbChmaXJzdFN0YXRl
LCBmaXJzdE93blByb3BzKSB7XG5cdCAgICBzdGF0ZSA9IGZpcnN0U3RhdGU7XG5cdCAgICBvd25Q
cm9wcyA9IGZpcnN0T3duUHJvcHM7XG5cdCAgICBzdGF0ZVByb3BzID0gbWFwU3RhdGVUb1Byb3Bz
KHN0YXRlLCBvd25Qcm9wcyk7XG5cdCAgICBkaXNwYXRjaFByb3BzID0gbWFwRGlzcGF0Y2hUb1By
b3BzKGRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cdCAgICBtZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMo
c3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuXHQgICAgaGFzUnVuQXRMZWFz
dE9uY2UgPSB0cnVlO1xuXHQgICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuXHQgIH1cblx0XG5cdCAg
ZnVuY3Rpb24gaGFuZGxlTmV3UHJvcHNBbmROZXdTdGF0ZSgpIHtcblx0ICAgIHN0YXRlUHJvcHMg
PSBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtcblx0XG5cdCAgICBpZiAobWFwRGlz
cGF0Y2hUb1Byb3BzLmRlcGVuZHNPbk93blByb3BzKSBkaXNwYXRjaFByb3BzID0gbWFwRGlzcGF0
Y2hUb1Byb3BzKGRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cdFxuXHQgICAgbWVyZ2VkUHJvcHMgPSBt
ZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcblx0ICAgIHJl
dHVybiBtZXJnZWRQcm9wcztcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGhhbmRsZU5ld1Byb3Bz
KCkge1xuXHQgICAgaWYgKG1hcFN0YXRlVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcykgc3RhdGVQ
cm9wcyA9IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xuXHRcblx0ICAgIGlmICht
YXBEaXNwYXRjaFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMpIGRpc3BhdGNoUHJvcHMgPSBtYXBE
aXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG93blByb3BzKTtcblx0XG5cdCAgICBtZXJnZWRQcm9w
cyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuXHQg
ICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gaGFuZGxlTmV3
U3RhdGUoKSB7XG5cdCAgICB2YXIgbmV4dFN0YXRlUHJvcHMgPSBtYXBTdGF0ZVRvUHJvcHMoc3Rh
dGUsIG93blByb3BzKTtcblx0ICAgIHZhciBzdGF0ZVByb3BzQ2hhbmdlZCA9ICFhcmVTdGF0ZVBy
b3BzRXF1YWwobmV4dFN0YXRlUHJvcHMsIHN0YXRlUHJvcHMpO1xuXHQgICAgc3RhdGVQcm9wcyA9
IG5leHRTdGF0ZVByb3BzO1xuXHRcblx0ICAgIGlmIChzdGF0ZVByb3BzQ2hhbmdlZCkgbWVyZ2Vk
UHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtc
blx0XG5cdCAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBo
YW5kbGVTdWJzZXF1ZW50Q2FsbHMobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpIHtcblx0ICAgIHZh
ciBwcm9wc0NoYW5nZWQgPSAhYXJlT3duUHJvcHNFcXVhbChuZXh0T3duUHJvcHMsIG93blByb3Bz
KTtcblx0ICAgIHZhciBzdGF0ZUNoYW5nZWQgPSAhYXJlU3RhdGVzRXF1YWwobmV4dFN0YXRlLCBz
dGF0ZSk7XG5cdCAgICBzdGF0ZSA9IG5leHRTdGF0ZTtcblx0ICAgIG93blByb3BzID0gbmV4dE93
blByb3BzO1xuXHRcblx0ICAgIGlmIChwcm9wc0NoYW5nZWQgJiYgc3RhdGVDaGFuZ2VkKSByZXR1
cm4gaGFuZGxlTmV3UHJvcHNBbmROZXdTdGF0ZSgpO1xuXHQgICAgaWYgKHByb3BzQ2hhbmdlZCkg
cmV0dXJuIGhhbmRsZU5ld1Byb3BzKCk7XG5cdCAgICBpZiAoc3RhdGVDaGFuZ2VkKSByZXR1cm4g
aGFuZGxlTmV3U3RhdGUoKTtcblx0ICAgIHJldHVybiBtZXJnZWRQcm9wcztcblx0ICB9XG5cdFxu
XHQgIHJldHVybiBmdW5jdGlvbiBwdXJlRmluYWxQcm9wc1NlbGVjdG9yKG5leHRTdGF0ZSwgbmV4
dE93blByb3BzKSB7XG5cdCAgICByZXR1cm4gaGFzUnVuQXRMZWFzdE9uY2UgPyBoYW5kbGVTdWJz
ZXF1ZW50Q2FsbHMobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpIDogaGFuZGxlRmlyc3RDYWxsKG5l
eHRTdGF0ZSwgbmV4dE93blByb3BzKTtcblx0ICB9O1xuXHR9XG5cdFxuXHQvLyBUT0RPOiBBZGQg
bW9yZSBjb21tZW50c1xuXHRcblx0Ly8gSWYgcHVyZSBpcyB0cnVlLCB0aGUgc2VsZWN0b3IgcmV0
dXJuZWQgYnkgc2VsZWN0b3JGYWN0b3J5IHdpbGwgbWVtb2l6ZSBpdHMgcmVzdWx0cyxcblx0Ly8g
YWxsb3dpbmcgY29ubmVjdEFkdmFuY2VkJ3Mgc2hvdWxkQ29tcG9uZW50VXBkYXRlIHRvIHJldHVy
biBmYWxzZSBpZiBmaW5hbFxuXHQvLyBwcm9wcyBoYXZlIG5vdCBjaGFuZ2VkLiBJZiBmYWxzZSwg
dGhlIHNlbGVjdG9yIHdpbGwgYWx3YXlzIHJldHVybiBhIG5ld1xuXHQvLyBvYmplY3QgYW5kIHNo
b3VsZENvbXBvbmVudFVwZGF0ZSB3aWxsIGFsd2F5cyByZXR1cm4gdHJ1ZS5cblx0XG5cdGZ1bmN0
aW9uIGZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkoZGlzcGF0Y2gsIF9yZWYyKSB7XG5cdCAgdmFy
IGluaXRNYXBTdGF0ZVRvUHJvcHMgPSBfcmVmMi5pbml0TWFwU3RhdGVUb1Byb3BzLFxuXHQgICAg
ICBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzID0gX3JlZjIuaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyxc
blx0ICAgICAgaW5pdE1lcmdlUHJvcHMgPSBfcmVmMi5pbml0TWVyZ2VQcm9wcyxcblx0ICAgICAg
b3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmMiwgWydpbml0TWFwU3RhdGVU
b1Byb3BzJywgJ2luaXRNYXBEaXNwYXRjaFRvUHJvcHMnLCAnaW5pdE1lcmdlUHJvcHMnXSk7XG5c
dFxuXHQgIHZhciBtYXBTdGF0ZVRvUHJvcHMgPSBpbml0TWFwU3RhdGVUb1Byb3BzKGRpc3BhdGNo
LCBvcHRpb25zKTtcblx0ICB2YXIgbWFwRGlzcGF0Y2hUb1Byb3BzID0gaW5pdE1hcERpc3BhdGNo
VG9Qcm9wcyhkaXNwYXRjaCwgb3B0aW9ucyk7XG5cdCAgdmFyIG1lcmdlUHJvcHMgPSBpbml0TWVy
Z2VQcm9wcyhkaXNwYXRjaCwgb3B0aW9ucyk7XG5cdFxuXHQgIGlmIChmYWxzZSkge1xuXHQgICAg
KDAsIF92ZXJpZnlTdWJzZWxlY3RvcnMyLmRlZmF1bHQpKG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlz
cGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzLCBvcHRpb25zLmRpc3BsYXlOYW1lKTtcblx0ICB9XG5c
dFxuXHQgIHZhciBzZWxlY3RvckZhY3RvcnkgPSBvcHRpb25zLnB1cmUgPyBwdXJlRmluYWxQcm9w
c1NlbGVjdG9yRmFjdG9yeSA6IGltcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3Rvcnk7XG5cdFxu
XHQgIHJldHVybiBzZWxlY3RvckZhY3RvcnkobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRv
UHJvcHMsIG1lcmdlUHJvcHMsIGRpc3BhdGNoLCBvcHRpb25zKTtcblx0fVxuXG4vKioqLyB9LFxu
LyogMTkzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0
cnVlO1xuXHRleHBvcnRzLmRlZmF1bHQgPSB2ZXJpZnlTdWJzZWxlY3RvcnM7XG5cdFxuXHR2YXIg
X3dhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUwKTtcblx0XG5cdHZhciBfd2FybmluZzIg
PSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBv
YmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiB2ZXJpZnkoc2VsZWN0b3Is
IG1ldGhvZE5hbWUsIGRpc3BsYXlOYW1lKSB7XG5cdCAgaWYgKCFzZWxlY3Rvcikge1xuXHQgICAg
dGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHZhbHVlIGZvciAnICsgbWV0aG9kTmFtZSArICcg
aW4gJyArIGRpc3BsYXlOYW1lICsgJy4nKTtcblx0ICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09
ICdtYXBTdGF0ZVRvUHJvcHMnIHx8IG1ldGhvZE5hbWUgPT09ICdtYXBEaXNwYXRjaFRvUHJvcHMn
KSB7XG5cdCAgICBpZiAoIXNlbGVjdG9yLmhhc093blByb3BlcnR5KCdkZXBlbmRzT25Pd25Qcm9w
cycpKSB7XG5cdCAgICAgICgwLCBfd2FybmluZzIuZGVmYXVsdCkoJ1RoZSBzZWxlY3RvciBmb3Ig
JyArIG1ldGhvZE5hbWUgKyAnIG9mICcgKyBkaXNwbGF5TmFtZSArICcgZGlkIG5vdCBzcGVjaWZ5
IGEgdmFsdWUgZm9yIGRlcGVuZHNPbk93blByb3BzLicpO1xuXHQgICAgfVxuXHQgIH1cblx0fVxu
XHRcblx0ZnVuY3Rpb24gdmVyaWZ5U3Vic2VsZWN0b3JzKG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlz
cGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzLCBkaXNwbGF5TmFtZSkge1xuXHQgIHZlcmlmeShtYXBT
dGF0ZVRvUHJvcHMsICdtYXBTdGF0ZVRvUHJvcHMnLCBkaXNwbGF5TmFtZSk7XG5cdCAgdmVyaWZ5
KG1hcERpc3BhdGNoVG9Qcm9wcywgJ21hcERpc3BhdGNoVG9Qcm9wcycsIGRpc3BsYXlOYW1lKTtc
blx0ICB2ZXJpZnkobWVyZ2VQcm9wcywgJ21lcmdlUHJvcHMnLCBkaXNwbGF5TmFtZSk7XG5cdH1c
blxuLyoqKi8gfSxcbi8qIDE5NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7
XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xu
XHRcblx0ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBp
ZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVy
cm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblx0XG5cdC8v
IGVuY2Fwc3VsYXRlcyB0aGUgc3Vic2NyaXB0aW9uIGxvZ2ljIGZvciBjb25uZWN0aW5nIGEgY29t
cG9uZW50IHRvIHRoZSByZWR1eCBzdG9yZSwgYXNcblx0Ly8gd2VsbCBhcyBuZXN0aW5nIHN1YnNj
cmlwdGlvbnMgb2YgZGVzY2VuZGFudCBjb21wb25lbnRzLCBzbyB0aGF0IHdlIGNhbiBlbnN1cmUg
dGhlXG5cdC8vIGFuY2VzdG9yIGNvbXBvbmVudHMgcmUtcmVuZGVyIGJlZm9yZSBkZXNjZW5kYW50
c1xuXHRcblx0dmFyIENMRUFSRUQgPSBudWxsO1xuXHR2YXIgbnVsbExpc3RlbmVycyA9IHtcblx0
ICBub3RpZnk6IGZ1bmN0aW9uIG5vdGlmeSgpIHt9XG5cdH07XG5cdFxuXHRmdW5jdGlvbiBjcmVh
dGVMaXN0ZW5lckNvbGxlY3Rpb24oKSB7XG5cdCAgLy8gdGhlIGN1cnJlbnQvbmV4dCBwYXR0ZXJu
IGlzIGNvcGllZCBmcm9tIHJlZHV4J3MgY3JlYXRlU3RvcmUgY29kZS5cblx0ICAvLyBUT0RPOiBy
ZWZhY3RvcitleHBvc2UgdGhhdCBjb2RlIHRvIGJlIHJldXNhYmxlIGhlcmU/XG5cdCAgdmFyIGN1
cnJlbnQgPSBbXTtcblx0ICB2YXIgbmV4dCA9IFtdO1xuXHRcblx0ICByZXR1cm4ge1xuXHQgICAg
Y2xlYXI6IGZ1bmN0aW9uIGNsZWFyKCkge1xuXHQgICAgICBuZXh0ID0gQ0xFQVJFRDtcblx0ICAg
ICAgY3VycmVudCA9IENMRUFSRUQ7XG5cdCAgICB9LFxuXHQgICAgbm90aWZ5OiBmdW5jdGlvbiBu
b3RpZnkoKSB7XG5cdCAgICAgIHZhciBsaXN0ZW5lcnMgPSBjdXJyZW50ID0gbmV4dDtcblx0ICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAg
ICBsaXN0ZW5lcnNbaV0oKTtcblx0ICAgICAgfVxuXHQgICAgfSxcblx0ICAgIGdldDogZnVuY3Rp
b24gZ2V0KCkge1xuXHQgICAgICByZXR1cm4gbmV4dDtcblx0ICAgIH0sXG5cdCAgICBzdWJzY3Jp
YmU6IGZ1bmN0aW9uIHN1YnNjcmliZShsaXN0ZW5lcikge1xuXHQgICAgICB2YXIgaXNTdWJzY3Jp
YmVkID0gdHJ1ZTtcblx0ICAgICAgaWYgKG5leHQgPT09IGN1cnJlbnQpIG5leHQgPSBjdXJyZW50
LnNsaWNlKCk7XG5cdCAgICAgIG5leHQucHVzaChsaXN0ZW5lcik7XG5cdFxuXHQgICAgICByZXR1
cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG5cdCAgICAgICAgaWYgKCFpc1N1YnNjcmliZWQg
fHwgY3VycmVudCA9PT0gQ0xFQVJFRCkgcmV0dXJuO1xuXHQgICAgICAgIGlzU3Vic2NyaWJlZCA9
IGZhbHNlO1xuXHRcblx0ICAgICAgICBpZiAobmV4dCA9PT0gY3VycmVudCkgbmV4dCA9IGN1cnJl
bnQuc2xpY2UoKTtcblx0ICAgICAgICBuZXh0LnNwbGljZShuZXh0LmluZGV4T2YobGlzdGVuZXIp
LCAxKTtcblx0ICAgICAgfTtcblx0ICAgIH1cblx0ICB9O1xuXHR9XG5cdFxuXHR2YXIgU3Vic2Ny
aXB0aW9uID0gZnVuY3Rpb24gKCkge1xuXHQgIGZ1bmN0aW9uIFN1YnNjcmlwdGlvbihzdG9yZSwg
cGFyZW50U3ViLCBvblN0YXRlQ2hhbmdlKSB7XG5cdCAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywg
U3Vic2NyaXB0aW9uKTtcblx0XG5cdCAgICB0aGlzLnN0b3JlID0gc3RvcmU7XG5cdCAgICB0aGlz
LnBhcmVudFN1YiA9IHBhcmVudFN1Yjtcblx0ICAgIHRoaXMub25TdGF0ZUNoYW5nZSA9IG9uU3Rh
dGVDaGFuZ2U7XG5cdCAgICB0aGlzLnVuc3Vic2NyaWJlID0gbnVsbDtcblx0ICAgIHRoaXMubGlz
dGVuZXJzID0gbnVsbExpc3RlbmVycztcblx0ICB9XG5cdFxuXHQgIFN1YnNjcmlwdGlvbi5wcm90
b3R5cGUuYWRkTmVzdGVkU3ViID0gZnVuY3Rpb24gYWRkTmVzdGVkU3ViKGxpc3RlbmVyKSB7XG5c
dCAgICB0aGlzLnRyeVN1YnNjcmliZSgpO1xuXHQgICAgcmV0dXJuIHRoaXMubGlzdGVuZXJzLnN1
YnNjcmliZShsaXN0ZW5lcik7XG5cdCAgfTtcblx0XG5cdCAgU3Vic2NyaXB0aW9uLnByb3RvdHlw
ZS5ub3RpZnlOZXN0ZWRTdWJzID0gZnVuY3Rpb24gbm90aWZ5TmVzdGVkU3VicygpIHtcblx0ICAg
IHRoaXMubGlzdGVuZXJzLm5vdGlmeSgpO1xuXHQgIH07XG5cdFxuXHQgIFN1YnNjcmlwdGlvbi5w
cm90b3R5cGUuaXNTdWJzY3JpYmVkID0gZnVuY3Rpb24gaXNTdWJzY3JpYmVkKCkge1xuXHQgICAg
cmV0dXJuIEJvb2xlYW4odGhpcy51bnN1YnNjcmliZSk7XG5cdCAgfTtcblx0XG5cdCAgU3Vic2Ny
aXB0aW9uLnByb3RvdHlwZS50cnlTdWJzY3JpYmUgPSBmdW5jdGlvbiB0cnlTdWJzY3JpYmUoKSB7
XG5cdCAgICBpZiAoIXRoaXMudW5zdWJzY3JpYmUpIHtcblx0ICAgICAgdGhpcy51bnN1YnNjcmli
ZSA9IHRoaXMucGFyZW50U3ViID8gdGhpcy5wYXJlbnRTdWIuYWRkTmVzdGVkU3ViKHRoaXMub25T
dGF0ZUNoYW5nZSkgOiB0aGlzLnN0b3JlLnN1YnNjcmliZSh0aGlzLm9uU3RhdGVDaGFuZ2UpO1xu
XHRcblx0ICAgICAgdGhpcy5saXN0ZW5lcnMgPSBjcmVhdGVMaXN0ZW5lckNvbGxlY3Rpb24oKTtc
blx0ICAgIH1cblx0ICB9O1xuXHRcblx0ICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLnRyeVVuc3Vi
c2NyaWJlID0gZnVuY3Rpb24gdHJ5VW5zdWJzY3JpYmUoKSB7XG5cdCAgICBpZiAodGhpcy51bnN1
YnNjcmliZSkge1xuXHQgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG5cdCAgICAgIHRoaXMudW5z
dWJzY3JpYmUgPSBudWxsO1xuXHQgICAgICB0aGlzLmxpc3RlbmVycy5jbGVhcigpO1xuXHQgICAg
ICB0aGlzLmxpc3RlbmVycyA9IG51bGxMaXN0ZW5lcnM7XG5cdCAgICB9XG5cdCAgfTtcblx0XG5c
dCAgcmV0dXJuIFN1YnNjcmlwdGlvbjtcblx0fSgpO1xuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0g
U3Vic2NyaXB0aW9uO1xuXG4vKioqLyB9LFxuLyogMTk1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1
bGUgPSB0cnVlO1xuXHRleHBvcnRzLmRlZmF1bHQgPSBzaGFsbG93RXF1YWw7XG5cdHZhciBoYXNP
d24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXHRcblx0ZnVuY3Rpb24gaXMo
eCwgeSkge1xuXHQgIGlmICh4ID09PSB5KSB7XG5cdCAgICByZXR1cm4geCAhPT0gMCB8fCB5ICE9
PSAwIHx8IDEgLyB4ID09PSAxIC8geTtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIHggIT09
IHggJiYgeSAhPT0geTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHNoYWxsb3dFcXVhbChv
YmpBLCBvYmpCKSB7XG5cdCAgaWYgKGlzKG9iakEsIG9iakIpKSByZXR1cm4gdHJ1ZTtcblx0XG5c
dCAgaWYgKHR5cGVvZiBvYmpBICE9PSAnb2JqZWN0JyB8fCBvYmpBID09PSBudWxsIHx8IHR5cGVv
ZiBvYmpCICE9PSAnb2JqZWN0JyB8fCBvYmpCID09PSBudWxsKSB7XG5cdCAgICByZXR1cm4gZmFs
c2U7XG5cdCAgfVxuXHRcblx0ICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhvYmpBKTtcblx0ICB2
YXIga2V5c0IgPSBPYmplY3Qua2V5cyhvYmpCKTtcblx0XG5cdCAgaWYgKGtleXNBLmxlbmd0aCAh
PT0ga2V5c0IubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cdFxuXHQgIGZvciAodmFyIGkgPSAwOyBp
IDwga2V5c0EubGVuZ3RoOyBpKyspIHtcblx0ICAgIGlmICghaGFzT3duLmNhbGwob2JqQiwga2V5
c0FbaV0pIHx8ICFpcyhvYmpBW2tleXNBW2ldXSwgb2JqQltrZXlzQVtpXV0pKSB7XG5cdCAgICAg
IHJldHVybiBmYWxzZTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIHJldHVybiB0cnVlO1xuXHR9
XG5cbi8qKiovIH0sXG4vKiAxOTYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIEByZW1vdmUtb24tZWplY3QtYmVnaW5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKi9cblx0Ly8gQHJlbW92
ZS1vbi1lamVjdC1lbmRcblx0XG5cdGlmICh0eXBlb2YgUHJvbWlzZSA9PT0gJ3VuZGVmaW5lZCcp
IHtcblx0ICAvLyBSZWplY3Rpb24gdHJhY2tpbmcgcHJldmVudHMgYSBjb21tb24gaXNzdWUgd2hl
cmUgUmVhY3QgZ2V0cyBpbnRvIGFuXG5cdCAgLy8gaW5jb25zaXN0ZW50IHN0YXRlIGR1ZSB0byBh
biBlcnJvciwgYnV0IGl0IGdldHMgc3dhbGxvd2VkIGJ5IGEgUHJvbWlzZSxcblx0ICAvLyBhbmQg
dGhlIHVzZXIgaGFzIG5vIGlkZWEgd2hhdCBjYXVzZXMgUmVhY3QncyBlcnJhdGljIGZ1dHVyZSBi
ZWhhdmlvci5cblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxMCkuZW5hYmxlKCk7XG5cdCAgd2lu
ZG93LlByb21pc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwOSk7XG5cdH1cblx0XG5cdC8vIGZl
dGNoKCkgcG9seWZpbGwgZm9yIG1ha2luZyBBUEkgY2FsbHMuXG5cdF9fd2VicGFja19yZXF1aXJl
X18oMjEyKTtcblx0XG5cdC8vIE9iamVjdC5hc3NpZ24oKSBpcyBjb21tb25seSB1c2VkIHdpdGgg
UmVhY3QuXG5cdC8vIEl0IHdpbGwgdXNlIHRoZSBuYXRpdmUgaW1wbGVtZW50YXRpb24gaWYgaXQn
cyBwcmVzZW50IGFuZCBpc24ndCBidWdneS5cblx0T2JqZWN0LmFzc2lnbiA9IF9fd2VicGFja19y
ZXF1aXJlX18oMjA4KTtcblxuXG4vKioqLyB9LFxuLyogMTk3ICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rp
b24oZ2xvYmFsKSB7XCJ1c2Ugc3RyaWN0XCI7XG5cdFxuXHQvLyBVc2UgdGhlIGZhc3Rlc3QgbWVh
bnMgcG9zc2libGUgdG8gZXhlY3V0ZSBhIHRhc2sgaW4gaXRzIG93biB0dXJuLCB3aXRoXG5cdC8v
IHByaW9yaXR5IG92ZXIgb3RoZXIgZXZlbnRzIGluY2x1ZGluZyBJTywgYW5pbWF0aW9uLCByZWZs
b3csIGFuZCByZWRyYXdcblx0Ly8gZXZlbnRzIGluIGJyb3dzZXJzLlxuXHQvL1xuXHQvLyBBbiBl
eGNlcHRpb24gdGhyb3duIGJ5IGEgdGFzayB3aWxsIHBlcm1hbmVudGx5IGludGVycnVwdCB0aGUg
cHJvY2Vzc2luZyBvZlxuXHQvLyBzdWJzZXF1ZW50IHRhc2tzLiBUaGUgaGlnaGVyIGxldmVsIGBh
c2FwYCBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgaWYgYW5cblx0Ly8gZXhjZXB0aW9uIGlzIHRocm93
biBieSBhIHRhc2ssIHRoYXQgdGhlIHRhc2sgcXVldWUgd2lsbCBjb250aW51ZSBmbHVzaGluZyBh
c1xuXHQvLyBzb29uIGFzIHBvc3NpYmxlLCBidXQgaWYgeW91IHVzZSBgcmF3QXNhcGAgZGlyZWN0
bHksIHlvdSBhcmUgcmVzcG9uc2libGUgdG9cblx0Ly8gZWl0aGVyIGVuc3VyZSB0aGF0IG5vIGV4
Y2VwdGlvbnMgYXJlIHRocm93biBmcm9tIHlvdXIgdGFzaywgb3IgdG8gbWFudWFsbHlcblx0Ly8g
Y2FsbCBgcmF3QXNhcC5yZXF1ZXN0Rmx1c2hgIGlmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uXG5c
dG1vZHVsZS5leHBvcnRzID0gcmF3QXNhcDtcblx0ZnVuY3Rpb24gcmF3QXNhcCh0YXNrKSB7XG5c
dCAgICBpZiAoIXF1ZXVlLmxlbmd0aCkge1xuXHQgICAgICAgIHJlcXVlc3RGbHVzaCgpO1xuXHQg
ICAgICAgIGZsdXNoaW5nID0gdHJ1ZTtcblx0ICAgIH1cblx0ICAgIC8vIEVxdWl2YWxlbnQgdG8g
cHVzaCwgYnV0IGF2b2lkcyBhIGZ1bmN0aW9uIGNhbGwuXG5cdCAgICBxdWV1ZVtxdWV1ZS5sZW5n
dGhdID0gdGFzaztcblx0fVxuXHRcblx0dmFyIHF1ZXVlID0gW107XG5cdC8vIE9uY2UgYSBmbHVz
aCBoYXMgYmVlbiByZXF1ZXN0ZWQsIG5vIGZ1cnRoZXIgY2FsbHMgdG8gYHJlcXVlc3RGbHVzaGAg
YXJlXG5cdC8vIG5lY2Vzc2FyeSB1bnRpbCB0aGUgbmV4dCBgZmx1c2hgIGNvbXBsZXRlcy5cblx0
dmFyIGZsdXNoaW5nID0gZmFsc2U7XG5cdC8vIGByZXF1ZXN0Rmx1c2hgIGlzIGFuIGltcGxlbWVu
dGF0aW9uLXNwZWNpZmljIG1ldGhvZCB0aGF0IGF0dGVtcHRzIHRvIGtpY2tcblx0Ly8gb2ZmIGEg
YGZsdXNoYCBldmVudCBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLiBgZmx1c2hgIHdpbGwgYXR0ZW1w
dCB0byBleGhhdXN0XG5cdC8vIHRoZSBldmVudCBxdWV1ZSBiZWZvcmUgeWllbGRpbmcgdG8gdGhl
IGJyb3dzZXIncyBvd24gZXZlbnQgbG9vcC5cblx0dmFyIHJlcXVlc3RGbHVzaDtcblx0Ly8gVGhl
IHBvc2l0aW9uIG9mIHRoZSBuZXh0IHRhc2sgdG8gZXhlY3V0ZSBpbiB0aGUgdGFzayBxdWV1ZS4g
VGhpcyBpc1xuXHQvLyBwcmVzZXJ2ZWQgYmV0d2VlbiBjYWxscyB0byBgZmx1c2hgIHNvIHRoYXQg
aXQgY2FuIGJlIHJlc3VtZWQgaWZcblx0Ly8gYSB0YXNrIHRocm93cyBhbiBleGNlcHRpb24uXG5c
dHZhciBpbmRleCA9IDA7XG5cdC8vIElmIGEgdGFzayBzY2hlZHVsZXMgYWRkaXRpb25hbCB0YXNr
cyByZWN1cnNpdmVseSwgdGhlIHRhc2sgcXVldWUgY2FuIGdyb3dcblx0Ly8gdW5ib3VuZGVkLiBU
byBwcmV2ZW50IG1lbW9yeSBleGhhdXN0aW9uLCB0aGUgdGFzayBxdWV1ZSB3aWxsIHBlcmlvZGlj
YWxseVxuXHQvLyB0cnVuY2F0ZSBhbHJlYWR5LWNvbXBsZXRlZCB0YXNrcy5cblx0dmFyIGNhcGFj
aXR5ID0gMTAyNDtcblx0XG5cdC8vIFRoZSBmbHVzaCBmdW5jdGlvbiBwcm9jZXNzZXMgYWxsIHRh
c2tzIHRoYXQgaGF2ZSBiZWVuIHNjaGVkdWxlZCB3aXRoXG5cdC8vIGByYXdBc2FwYCB1bmxlc3Mg
YW5kIHVudGlsIG9uZSBvZiB0aG9zZSB0YXNrcyB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuXHQvLyBJ
ZiBhIHRhc2sgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgYGZsdXNoYCBlbnN1cmVzIHRoYXQgaXRzIHN0
YXRlIHdpbGwgcmVtYWluXG5cdC8vIGNvbnNpc3RlbnQgYW5kIHdpbGwgcmVzdW1lIHdoZXJlIGl0
IGxlZnQgb2ZmIHdoZW4gY2FsbGVkIGFnYWluLlxuXHQvLyBIb3dldmVyLCBgZmx1c2hgIGRvZXMg
bm90IG1ha2UgYW55IGFycmFuZ2VtZW50cyB0byBiZSBjYWxsZWQgYWdhaW4gaWYgYW5cblx0Ly8g
ZXhjZXB0aW9uIGlzIHRocm93bi5cblx0ZnVuY3Rpb24gZmx1c2goKSB7XG5cdCAgICB3aGlsZSAo
aW5kZXggPCBxdWV1ZS5sZW5ndGgpIHtcblx0ICAgICAgICB2YXIgY3VycmVudEluZGV4ID0gaW5k
ZXg7XG5cdCAgICAgICAgLy8gQWR2YW5jZSB0aGUgaW5kZXggYmVmb3JlIGNhbGxpbmcgdGhlIHRh
c2suIFRoaXMgZW5zdXJlcyB0aGF0IHdlIHdpbGxcblx0ICAgICAgICAvLyBiZWdpbiBmbHVzaGlu
ZyBvbiB0aGUgbmV4dCB0YXNrIHRoZSB0YXNrIHRocm93cyBhbiBlcnJvci5cblx0ICAgICAgICBp
bmRleCA9IGluZGV4ICsgMTtcblx0ICAgICAgICBxdWV1ZVtjdXJyZW50SW5kZXhdLmNhbGwoKTtc
blx0ICAgICAgICAvLyBQcmV2ZW50IGxlYWtpbmcgbWVtb3J5IGZvciBsb25nIGNoYWlucyBvZiBy
ZWN1cnNpdmUgY2FsbHMgdG8gYGFzYXBgLlxuXHQgICAgICAgIC8vIElmIHdlIGNhbGwgYGFzYXBg
IHdpdGhpbiB0YXNrcyBzY2hlZHVsZWQgYnkgYGFzYXBgLCB0aGUgcXVldWUgd2lsbFxuXHQgICAg
ICAgIC8vIGdyb3csIGJ1dCB0byBhdm9pZCBhbiBPKG4pIHdhbGsgZm9yIGV2ZXJ5IHRhc2sgd2Ug
ZXhlY3V0ZSwgd2UgZG9uJ3Rcblx0ICAgICAgICAvLyBzaGlmdCB0YXNrcyBvZmYgdGhlIHF1ZXVl
IGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGV4ZWN1dGVkLlxuXHQgICAgICAgIC8vIEluc3RlYWQsIHdl
IHBlcmlvZGljYWxseSBzaGlmdCAxMDI0IHRhc2tzIG9mZiB0aGUgcXVldWUuXG5cdCAgICAgICAg
aWYgKGluZGV4ID4gY2FwYWNpdHkpIHtcblx0ICAgICAgICAgICAgLy8gTWFudWFsbHkgc2hpZnQg
YWxsIHZhbHVlcyBzdGFydGluZyBhdCB0aGUgaW5kZXggYmFjayB0byB0aGVcblx0ICAgICAgICAg
ICAgLy8gYmVnaW5uaW5nIG9mIHRoZSBxdWV1ZS5cblx0ICAgICAgICAgICAgZm9yICh2YXIgc2Nh
biA9IDAsIG5ld0xlbmd0aCA9IHF1ZXVlLmxlbmd0aCAtIGluZGV4OyBzY2FuIDwgbmV3TGVuZ3Ro
OyBzY2FuKyspIHtcblx0ICAgICAgICAgICAgICAgIHF1ZXVlW3NjYW5dID0gcXVldWVbc2NhbiAr
IGluZGV4XTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBxdWV1ZS5sZW5ndGggLT0g
aW5kZXg7XG5cdCAgICAgICAgICAgIGluZGV4ID0gMDtcblx0ICAgICAgICB9XG5cdCAgICB9XG5c
dCAgICBxdWV1ZS5sZW5ndGggPSAwO1xuXHQgICAgaW5kZXggPSAwO1xuXHQgICAgZmx1c2hpbmcg
PSBmYWxzZTtcblx0fVxuXHRcblx0Ly8gYHJlcXVlc3RGbHVzaGAgaXMgaW1wbGVtZW50ZWQgdXNp
bmcgYSBzdHJhdGVneSBiYXNlZCBvbiBkYXRhIGNvbGxlY3RlZCBmcm9tXG5cdC8vIGV2ZXJ5IGF2
YWlsYWJsZSBTYXVjZUxhYnMgU2VsZW5pdW0gd2ViIGRyaXZlciB3b3JrZXIgYXQgdGltZSBvZiB3
cml0aW5nLlxuXHQvLyBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC8xbUct
NVVZR3VwNXF4R2RFTVdraFA2QldDejA1M05VYjJFMVFvVVRVMTZ1QS9lZGl0I2dpZD03ODM3MjQ1
OTNcblx0XG5cdC8vIFNhZmFyaSA2IGFuZCA2LjEgZm9yIGRlc2t0b3AsIGlQYWQsIGFuZCBpUGhv
bmUgYXJlIHRoZSBvbmx5IGJyb3dzZXJzIHRoYXRcblx0Ly8gaGF2ZSBXZWJLaXRNdXRhdGlvbk9i
c2VydmVyIGJ1dCBub3QgdW4tcHJlZml4ZWQgTXV0YXRpb25PYnNlcnZlci5cblx0Ly8gTXVzdCB1
c2UgYGdsb2JhbGAgb3IgYHNlbGZgIGluc3RlYWQgb2YgYHdpbmRvd2AgdG8gd29yayBpbiBib3Ro
IGZyYW1lcyBhbmQgd2ViXG5cdC8vIHdvcmtlcnMuIGBnbG9iYWxgIGlzIGEgcHJvdmlzaW9uIG9m
IEJyb3dzZXJpZnksIE1yLCBNcnMsIG9yIE1vcC5cblx0XG5cdC8qIGdsb2JhbHMgc2VsZiAqL1xu
XHR2YXIgc2NvcGUgPSB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDog
c2VsZjtcblx0dmFyIEJyb3dzZXJNdXRhdGlvbk9ic2VydmVyID0gc2NvcGUuTXV0YXRpb25PYnNl
cnZlciB8fCBzY29wZS5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xuXHRcblx0Ly8gTXV0YXRpb25P
YnNlcnZlcnMgYXJlIGRlc2lyYWJsZSBiZWNhdXNlIHRoZXkgaGF2ZSBoaWdoIHByaW9yaXR5IGFu
ZCB3b3JrXG5cdC8vIHJlbGlhYmx5IGV2ZXJ5d2hlcmUgdGhleSBhcmUgaW1wbGVtZW50ZWQuXG5c
dC8vIFRoZXkgYXJlIGltcGxlbWVudGVkIGluIGFsbCBtb2Rlcm4gYnJvd3NlcnMuXG5cdC8vXG5c
dC8vIC0gQW5kcm9pZCA0LTQuM1xuXHQvLyAtIENocm9tZSAyNi0zNFxuXHQvLyAtIEZpcmVmb3gg
MTQtMjlcblx0Ly8gLSBJbnRlcm5ldCBFeHBsb3JlciAxMVxuXHQvLyAtIGlQYWQgU2FmYXJpIDYt
Ny4xXG5cdC8vIC0gaVBob25lIFNhZmFyaSA3LTcuMVxuXHQvLyAtIFNhZmFyaSA2LTdcblx0aWYg
KHR5cGVvZiBCcm93c2VyTXV0YXRpb25PYnNlcnZlciA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdCAg
ICByZXF1ZXN0Rmx1c2ggPSBtYWtlUmVxdWVzdENhbGxGcm9tTXV0YXRpb25PYnNlcnZlcihmbHVz
aCk7XG5cdFxuXHQvLyBNZXNzYWdlQ2hhbm5lbHMgYXJlIGRlc2lyYWJsZSBiZWNhdXNlIHRoZXkg
Z2l2ZSBkaXJlY3QgYWNjZXNzIHRvIHRoZSBIVE1MXG5cdC8vIHRhc2sgcXVldWUsIGFyZSBpbXBs
ZW1lbnRlZCBpbiBJbnRlcm5ldCBFeHBsb3JlciAxMCwgU2FmYXJpIDUuMC0xLCBhbmQgT3BlcmFc
blx0Ly8gMTEtMTIsIGFuZCBpbiB3ZWIgd29ya2VycyBpbiBtYW55IGVuZ2luZXMuXG5cdC8vIEFs
dGhvdWdoIG1lc3NhZ2UgY2hhbm5lbHMgeWllbGQgdG8gYW55IHF1ZXVlZCByZW5kZXJpbmcgYW5k
IElPIHRhc2tzLCB0aGV5XG5cdC8vIHdvdWxkIGJlIGJldHRlciB0aGFuIGltcG9zaW5nIHRoZSA0
bXMgZGVsYXkgb2YgdGltZXJzLlxuXHQvLyBIb3dldmVyLCB0aGV5IGRvIG5vdCB3b3JrIHJlbGlh
Ymx5IGluIEludGVybmV0IEV4cGxvcmVyIG9yIFNhZmFyaS5cblx0XG5cdC8vIEludGVybmV0IEV4
cGxvcmVyIDEwIGlzIHRoZSBvbmx5IGJyb3dzZXIgdGhhdCBoYXMgc2V0SW1tZWRpYXRlIGJ1dCBk
b2VzXG5cdC8vIG5vdCBoYXZlIE11dGF0aW9uT2JzZXJ2ZXJzLlxuXHQvLyBBbHRob3VnaCBzZXRJ
bW1lZGlhdGUgeWllbGRzIHRvIHRoZSBicm93c2VyJ3MgcmVuZGVyZXIsIGl0IHdvdWxkIGJlXG5c
dC8vIHByZWZlcnJhYmxlIHRvIGZhbGxpbmcgYmFjayB0byBzZXRUaW1lb3V0IHNpbmNlIGl0IGRv
ZXMgbm90IGhhdmVcblx0Ly8gdGhlIG1pbmltdW0gNG1zIHBlbmFsdHkuXG5cdC8vIFVuZm9ydHVu
YXRlbHkgdGhlcmUgYXBwZWFycyB0byBiZSBhIGJ1ZyBpbiBJbnRlcm5ldCBFeHBsb3JlciAxMCBN
b2JpbGUgKGFuZFxuXHQvLyBEZXNrdG9wIHRvIGEgbGVzc2VyIGV4dGVudCkgdGhhdCByZW5kZXJz
IGJvdGggc2V0SW1tZWRpYXRlIGFuZFxuXHQvLyBNZXNzYWdlQ2hhbm5lbCB1c2VsZXNzIGZvciB0
aGUgcHVycG9zZXMgb2YgQVNBUC5cblx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL2tyaXNrb3dhbC9x
L2lzc3Vlcy8zOTZcblx0XG5cdC8vIFRpbWVycyBhcmUgaW1wbGVtZW50ZWQgdW5pdmVyc2FsbHku
XG5cdC8vIFdlIGZhbGwgYmFjayB0byB0aW1lcnMgaW4gd29ya2VycyBpbiBtb3N0IGVuZ2luZXMs
IGFuZCBpbiBmb3JlZ3JvdW5kXG5cdC8vIGNvbnRleHRzIGluIHRoZSBmb2xsb3dpbmcgYnJvd3Nl
cnMuXG5cdC8vIEhvd2V2ZXIsIG5vdGUgdGhhdCBldmVuIHRoaXMgc2ltcGxlIGNhc2UgcmVxdWly
ZXMgbnVhbmNlcyB0byBvcGVyYXRlIGluIGFcblx0Ly8gYnJvYWQgc3BlY3RydW0gb2YgYnJvd3Nl
cnMuXG5cdC8vXG5cdC8vIC0gRmlyZWZveCAzLTEzXG5cdC8vIC0gSW50ZXJuZXQgRXhwbG9yZXIg
Ni05XG5cdC8vIC0gaVBhZCBTYWZhcmkgNC4zXG5cdC8vIC0gTHlueCAyLjguN1xuXHR9IGVsc2Ug
e1xuXHQgICAgcmVxdWVzdEZsdXNoID0gbWFrZVJlcXVlc3RDYWxsRnJvbVRpbWVyKGZsdXNoKTtc
blx0fVxuXHRcblx0Ly8gYHJlcXVlc3RGbHVzaGAgcmVxdWVzdHMgdGhhdCB0aGUgaGlnaCBwcmlv
cml0eSBldmVudCBxdWV1ZSBiZSBmbHVzaGVkIGFzXG5cdC8vIHNvb24gYXMgcG9zc2libGUuXG5c
dC8vIFRoaXMgaXMgdXNlZnVsIHRvIHByZXZlbnQgYW4gZXJyb3IgdGhyb3duIGluIGEgdGFzayBm
cm9tIHN0YWxsaW5nIHRoZSBldmVudFxuXHQvLyBxdWV1ZSBpZiB0aGUgZXhjZXB0aW9uIGhhbmRs
ZWQgYnkgTm9kZS5qc+KAmXNcblx0Ly8gYHByb2Nlc3Mub24oXCJ1bmNhdWdodEV4Y2VwdGlvblwi
KWAgb3IgYnkgYSBkb21haW4uXG5cdHJhd0FzYXAucmVxdWVzdEZsdXNoID0gcmVxdWVzdEZsdXNo
O1xuXHRcblx0Ly8gVG8gcmVxdWVzdCBhIGhpZ2ggcHJpb3JpdHkgZXZlbnQsIHdlIGluZHVjZSBh
IG11dGF0aW9uIG9ic2VydmVyIGJ5IHRvZ2dsaW5nXG5cdC8vIHRoZSB0ZXh0IG9mIGEgdGV4dCBu
b2RlIGJldHdlZW4gXCIxXCIgYW5kIFwiLTFcIi5cblx0ZnVuY3Rpb24gbWFrZVJlcXVlc3RDYWxs
RnJvbU11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spIHtcblx0ICAgIHZhciB0b2dnbGUgPSAxO1xu
XHQgICAgdmFyIG9ic2VydmVyID0gbmV3IEJyb3dzZXJNdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNr
KTtcblx0ICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJcIik7XG5cdCAg
ICBvYnNlcnZlci5vYnNlcnZlKG5vZGUsIHtjaGFyYWN0ZXJEYXRhOiB0cnVlfSk7XG5cdCAgICBy
ZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwoKSB7XG5cdCAgICAgICAgdG9nZ2xlID0gLXRvZ2ds
ZTtcblx0ICAgICAgICBub2RlLmRhdGEgPSB0b2dnbGU7XG5cdCAgICB9O1xuXHR9XG5cdFxuXHQv
LyBUaGUgbWVzc2FnZSBjaGFubmVsIHRlY2huaXF1ZSB3YXMgZGlzY292ZXJlZCBieSBNYWx0ZSBV
YmwgYW5kIHdhcyB0aGVcblx0Ly8gb3JpZ2luYWwgZm91bmRhdGlvbiBmb3IgdGhpcyBsaWJyYXJ5
LlxuXHQvLyBodHRwOi8vd3d3Lm5vbmJsb2NraW5nLmlvLzIwMTEvMDYvd2luZG93bmV4dHRpY2su
aHRtbFxuXHRcblx0Ly8gU2FmYXJpIDYuMC41IChhdCBsZWFzdCkgaW50ZXJtaXR0ZW50bHkgZmFp
bHMgdG8gY3JlYXRlIG1lc3NhZ2UgcG9ydHMgb24gYVxuXHQvLyBwYWdlJ3MgZmlyc3QgbG9hZC4g
VGhhbmtmdWxseSwgdGhpcyB2ZXJzaW9uIG9mIFNhZmFyaSBzdXBwb3J0c1xuXHQvLyBNdXRhdGlv
bk9ic2VydmVycywgc28gd2UgZG9uJ3QgbmVlZCB0byBmYWxsIGJhY2sgaW4gdGhhdCBjYXNlLlxu
XHRcblx0Ly8gZnVuY3Rpb24gbWFrZVJlcXVlc3RDYWxsRnJvbU1lc3NhZ2VDaGFubmVsKGNhbGxi
YWNrKSB7XG5cdC8vICAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuXHQv
LyAgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBjYWxsYmFjaztcblx0Ly8gICAgIHJldHVy
biBmdW5jdGlvbiByZXF1ZXN0Q2FsbCgpIHtcblx0Ly8gICAgICAgICBjaGFubmVsLnBvcnQyLnBv
c3RNZXNzYWdlKDApO1xuXHQvLyAgICAgfTtcblx0Ly8gfVxuXHRcblx0Ly8gRm9yIHJlYXNvbnMg
ZXhwbGFpbmVkIGFib3ZlLCB3ZSBhcmUgYWxzbyB1bmFibGUgdG8gdXNlIGBzZXRJbW1lZGlhdGVg
XG5cdC8vIHVuZGVyIGFueSBjaXJjdW1zdGFuY2VzLlxuXHQvLyBFdmVuIGlmIHdlIHdlcmUsIHRo
ZXJlIGlzIGFub3RoZXIgYnVnIGluIEludGVybmV0IEV4cGxvcmVyIDEwLlxuXHQvLyBJdCBpcyBu
b3Qgc3VmZmljaWVudCB0byBhc3NpZ24gYHNldEltbWVkaWF0ZWAgdG8gYHJlcXVlc3RGbHVzaGAg
YmVjYXVzZVxuXHQvLyBgc2V0SW1tZWRpYXRlYCBtdXN0IGJlIGNhbGxlZCAqYnkgbmFtZSogYW5k
IHRoZXJlZm9yZSBtdXN0IGJlIHdyYXBwZWQgaW4gYVxuXHQvLyBjbG9zdXJlLlxuXHQvLyBOZXZl
ciBmb3JnZXQuXG5cdFxuXHQvLyBmdW5jdGlvbiBtYWtlUmVxdWVzdENhbGxGcm9tU2V0SW1tZWRp
YXRlKGNhbGxiYWNrKSB7XG5cdC8vICAgICByZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwoKSB7
XG5cdC8vICAgICAgICAgc2V0SW1tZWRpYXRlKGNhbGxiYWNrKTtcblx0Ly8gICAgIH07XG5cdC8v
IH1cblx0XG5cdC8vIFNhZmFyaSA2LjAgaGFzIGEgcHJvYmxlbSB3aGVyZSB0aW1lcnMgd2lsbCBn
ZXQgbG9zdCB3aGlsZSB0aGUgdXNlciBpc1xuXHQvLyBzY3JvbGxpbmcuIFRoaXMgcHJvYmxlbSBk
b2VzIG5vdCBpbXBhY3QgQVNBUCBiZWNhdXNlIFNhZmFyaSA2LjAgc3VwcG9ydHNcblx0Ly8gbXV0
YXRpb24gb2JzZXJ2ZXJzLCBzbyB0aGF0IGltcGxlbWVudGF0aW9uIGlzIHVzZWQgaW5zdGVhZC5c
blx0Ly8gSG93ZXZlciwgaWYgd2UgZXZlciBlbGVjdCB0byB1c2UgdGltZXJzIGluIFNhZmFyaSwg
dGhlIHByZXZhbGVudCB3b3JrLWFyb3VuZFxuXHQvLyBpcyB0byBhZGQgYSBzY3JvbGwgZXZlbnQg
bGlzdGVuZXIgdGhhdCBjYWxscyBmb3IgYSBmbHVzaC5cblx0XG5cdC8vIGBzZXRUaW1lb3V0YCBk
b2VzIG5vdCBjYWxsIHRoZSBwYXNzZWQgY2FsbGJhY2sgaWYgdGhlIGRlbGF5IGlzIGxlc3MgdGhh
blxuXHQvLyBhcHByb3hpbWF0ZWx5IDcgaW4gd2ViIHdvcmtlcnMgaW4gRmlyZWZveCA4IHRocm91
Z2ggMTgsIGFuZCBzb21ldGltZXMgbm90XG5cdC8vIGV2ZW4gdGhlbi5cblx0XG5cdGZ1bmN0aW9u
IG1ha2VSZXF1ZXN0Q2FsbEZyb21UaW1lcihjYWxsYmFjaykge1xuXHQgICAgcmV0dXJuIGZ1bmN0
aW9uIHJlcXVlc3RDYWxsKCkge1xuXHQgICAgICAgIC8vIFdlIGRpc3BhdGNoIGEgdGltZW91dCB3
aXRoIGEgc3BlY2lmaWVkIGRlbGF5IG9mIDAgZm9yIGVuZ2luZXMgdGhhdFxuXHQgICAgICAgIC8v
IGNhbiByZWxpYWJseSBhY2NvbW1vZGF0ZSB0aGF0IHJlcXVlc3QuIFRoaXMgd2lsbCB1c3VhbGx5
IGJlIHNuYXBwZWRcblx0ICAgICAgICAvLyB0byBhIDQgbWlsaXNlY29uZCBkZWxheSwgYnV0IG9u
Y2Ugd2UncmUgZmx1c2hpbmcsIHRoZXJlJ3Mgbm8gZGVsYXlcblx0ICAgICAgICAvLyBiZXR3ZWVu
IGV2ZW50cy5cblx0ICAgICAgICB2YXIgdGltZW91dEhhbmRsZSA9IHNldFRpbWVvdXQoaGFuZGxl
VGltZXIsIDApO1xuXHQgICAgICAgIC8vIEhvd2V2ZXIsIHNpbmNlIHRoaXMgdGltZXIgZ2V0cyBm
cmVxdWVudGx5IGRyb3BwZWQgaW4gRmlyZWZveFxuXHQgICAgICAgIC8vIHdvcmtlcnMsIHdlIGVu
bGlzdCBhbiBpbnRlcnZhbCBoYW5kbGUgdGhhdCB3aWxsIHRyeSB0byBmaXJlXG5cdCAgICAgICAg
Ly8gYW4gZXZlbnQgMjAgdGltZXMgcGVyIHNlY29uZCB1bnRpbCBpdCBzdWNjZWVkcy5cblx0ICAg
ICAgICB2YXIgaW50ZXJ2YWxIYW5kbGUgPSBzZXRJbnRlcnZhbChoYW5kbGVUaW1lciwgNTApO1xu
XHRcblx0ICAgICAgICBmdW5jdGlvbiBoYW5kbGVUaW1lcigpIHtcblx0ICAgICAgICAgICAgLy8g
V2hpY2hldmVyIHRpbWVyIHN1Y2NlZWRzIHdpbGwgY2FuY2VsIGJvdGggdGltZXJzIGFuZFxuXHQg
ICAgICAgICAgICAvLyBleGVjdXRlIHRoZSBjYWxsYmFjay5cblx0ICAgICAgICAgICAgY2xlYXJU
aW1lb3V0KHRpbWVvdXRIYW5kbGUpO1xuXHQgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVy
dmFsSGFuZGxlKTtcblx0ICAgICAgICAgICAgY2FsbGJhY2soKTtcblx0ICAgICAgICB9XG5cdCAg
ICB9O1xuXHR9XG5cdFxuXHQvLyBUaGlzIGlzIGZvciBgYXNhcC5qc2Agb25seS5cblx0Ly8gSXRz
IG5hbWUgd2lsbCBiZSBwZXJpb2RpY2FsbHkgcmFuZG9taXplZCB0byBicmVhayBhbnkgY29kZSB0
aGF0IGRlcGVuZHMgb25cblx0Ly8gaXRzIGV4aXN0ZW5jZS5cblx0cmF3QXNhcC5tYWtlUmVxdWVz
dENhbGxGcm9tVGltZXIgPSBtYWtlUmVxdWVzdENhbGxGcm9tVGltZXI7XG5cdFxuXHQvLyBBU0FQ
IHdhcyBvcmlnaW5hbGx5IGEgbmV4dFRpY2sgc2hpbSBpbmNsdWRlZCBpbiBRLiBUaGlzIHdhcyBm
YWN0b3JlZCBvdXRcblx0Ly8gaW50byB0aGlzIEFTQVAgcGFja2FnZS4gSXQgd2FzIGxhdGVyIGFk
YXB0ZWQgdG8gUlNWUCB3aGljaCBtYWRlIGZ1cnRoZXJcblx0Ly8gYW1lbmRtZW50cy4gVGhlc2Ug
ZGVjaXNpb25zLCBwYXJ0aWN1bGFybHkgdG8gbWFyZ2luYWxpemUgTWVzc2FnZUNoYW5uZWwgYW5k
XG5cdC8vIHRvIGNhcHR1cmUgdGhlIE11dGF0aW9uT2JzZXJ2ZXIgaW1wbGVtZW50YXRpb24gaW4g
YSBjbG9zdXJlLCB3ZXJlIGludGVncmF0ZWRcblx0Ly8gYmFjayBpbnRvIEFTQVAgcHJvcGVyLlxu
XHQvLyBodHRwczovL2dpdGh1Yi5jb20vdGlsZGVpby9yc3ZwLmpzL2Jsb2IvY2RkZjcyMzI1NDZh
OWNmODU4NTI0Yjc1Y2RlNmY5ZWRmNzI2MjBhNy9saWIvcnN2cC9hc2FwLmpzXG5cdFxuXHQvKiBX
RUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgKGZ1bmN0aW9uKCkgeyByZXR1
cm4gdGhpczsgfSgpKSkpXG5cbi8qKiovIH0sXG4vKiAxOTggKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xu
XHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRleHBvcnRzLmNsZWFyQ29tcGxldGVkID0gZXhwb3J0
cy5jb21wbGV0ZUFsbCA9IGV4cG9ydHMuY29tcGxldGVUb2RvID0gZXhwb3J0cy5lZGl0VG9kbyA9
IGV4cG9ydHMuZGVsZXRlVG9kbyA9IGV4cG9ydHMuYWRkVG9kbyA9IHVuZGVmaW5lZDtcblx0XG5c
dHZhciBfQWN0aW9uVHlwZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg1KTtcblx0XG5cdHZhciB0
eXBlcyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9BY3Rpb25UeXBlcyk7XG5cdFxuXHRmdW5j
dGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01v
ZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3T2JqID0ge307IGlmIChvYmogIT0g
bnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093
blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gbmV3
T2JqLmRlZmF1bHQgPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxuXHRcblx0dmFyIGFkZFRvZG8g
PSBleHBvcnRzLmFkZFRvZG8gPSBmdW5jdGlvbiBhZGRUb2RvKHRleHQpIHtcblx0ICByZXR1cm4g
eyB0eXBlOiB0eXBlcy5BRERfVE9ETywgdGV4dDogdGV4dCB9O1xuXHR9O1xuXHR2YXIgZGVsZXRl
VG9kbyA9IGV4cG9ydHMuZGVsZXRlVG9kbyA9IGZ1bmN0aW9uIGRlbGV0ZVRvZG8oaWQpIHtcblx0
ICByZXR1cm4geyB0eXBlOiB0eXBlcy5ERUxFVEVfVE9ETywgaWQ6IGlkIH07XG5cdH07XG5cdHZh
ciBlZGl0VG9kbyA9IGV4cG9ydHMuZWRpdFRvZG8gPSBmdW5jdGlvbiBlZGl0VG9kbyhpZCwgdGV4
dCkge1xuXHQgIHJldHVybiB7IHR5cGU6IHR5cGVzLkVESVRfVE9ETywgaWQ6IGlkLCB0ZXh0OiB0
ZXh0IH07XG5cdH07XG5cdHZhciBjb21wbGV0ZVRvZG8gPSBleHBvcnRzLmNvbXBsZXRlVG9kbyA9
IGZ1bmN0aW9uIGNvbXBsZXRlVG9kbyhpZCkge1xuXHQgIHJldHVybiB7IHR5cGU6IHR5cGVzLkNP
TVBMRVRFX1RPRE8sIGlkOiBpZCB9O1xuXHR9O1xuXHR2YXIgY29tcGxldGVBbGwgPSBleHBvcnRz
LmNvbXBsZXRlQWxsID0gZnVuY3Rpb24gY29tcGxldGVBbGwoKSB7XG5cdCAgcmV0dXJuIHsgdHlw
ZTogdHlwZXMuQ09NUExFVEVfQUxMIH07XG5cdH07XG5cdHZhciBjbGVhckNvbXBsZXRlZCA9IGV4
cG9ydHMuY2xlYXJDb21wbGV0ZWQgPSBmdW5jdGlvbiBjbGVhckNvbXBsZXRlZCgpIHtcblx0ICBy
ZXR1cm4geyB0eXBlOiB0eXBlcy5DTEVBUl9DT01QTEVURUQgfTtcblx0fTtcblxuLyoqKi8gfSxc
bi8qIDE5OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5
KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxu
XHR2YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0
aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkr
KykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBk
ZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0g
dHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0g
dHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2Ny
aXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3Rh
dGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3Iu
cHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVz
KENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xu
XHRcblx0dmFyIF9GSUxURVJfVElUTEVTO1xuXHRcblx0dmFyIF9yZWFjdCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTIpO1xuXHRcblx0dmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KF9yZWFjdCk7XG5cdFxuXHR2YXIgX2NsYXNzbmFtZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMx
KTtcblx0XG5cdHZhciBfY2xhc3NuYW1lczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFz
c25hbWVzKTtcblx0XG5cdHZhciBfVG9kb0ZpbHRlcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg2
KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBv
YmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRm
dW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGlu
c3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJD
YW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXHRcblx0ZnVuY3Rpb24g
X3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhy
b3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1
cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2Fs
bCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwg
OiBzZWxmOyB9XG5cdFxuXHRmdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3Mp
IHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAh
PT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVp
dGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsg
fSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJD
bGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJh
YmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAo
c3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9m
KHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7
IH1cblx0XG5cdGZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYg
KGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2
YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1
ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cdFxuXHR2
YXIgRklMVEVSX1RJVExFUyA9IChfRklMVEVSX1RJVExFUyA9IHt9LCBfZGVmaW5lUHJvcGVydHko
X0ZJTFRFUl9USVRMRVMsIF9Ub2RvRmlsdGVycy5TSE9XX0FMTCwgJ0FsbCcpLCBfZGVmaW5lUHJv
cGVydHkoX0ZJTFRFUl9USVRMRVMsIF9Ub2RvRmlsdGVycy5TSE9XX0FDVElWRSwgJ0FjdGl2ZScp
LCBfZGVmaW5lUHJvcGVydHkoX0ZJTFRFUl9USVRMRVMsIF9Ub2RvRmlsdGVycy5TSE9XX0NPTVBM
RVRFRCwgJ0NvbXBsZXRlZCcpLCBfRklMVEVSX1RJVExFUyk7XG5cdFxuXHR2YXIgRm9vdGVyID0g
ZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcblx0ICBfaW5oZXJpdHMoRm9vdGVyLCBfQ29tcG9uZW50
KTtcblx0XG5cdCAgZnVuY3Rpb24gRm9vdGVyKCkge1xuXHQgICAgX2NsYXNzQ2FsbENoZWNrKHRo
aXMsIEZvb3Rlcik7XG5cdFxuXHQgICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJu
KHRoaXMsIChGb290ZXIuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihGb290ZXIp
KS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcblx0ICB9XG5cdFxuXHQgIF9jcmVhdGVDbGFzcyhG
b290ZXIsIFt7XG5cdCAgICBrZXk6ICdyZW5kZXJUb2RvQ291bnQnLFxuXHQgICAgdmFsdWU6IGZ1
bmN0aW9uIHJlbmRlclRvZG9Db3VudCgpIHtcblx0ICAgICAgdmFyIGFjdGl2ZUNvdW50ID0gdGhp
cy5wcm9wcy5hY3RpdmVDb3VudDtcblx0XG5cdCAgICAgIHZhciBpdGVtV29yZCA9IGFjdGl2ZUNv
dW50ID09PSAxID8gJ2l0ZW0nIDogJ2l0ZW1zJztcblx0XG5cdCAgICAgIHJldHVybiBfcmVhY3Qy
LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICAgICAnc3BhbicsXG5cdCAgICAgICAgeyBj
bGFzc05hbWU6ICd0b2RvLWNvdW50JyB9LFxuXHQgICAgICAgIF9yZWFjdDIuZGVmYXVsdC5jcmVh
dGVFbGVtZW50KFxuXHQgICAgICAgICAgJ3N0cm9uZycsXG5cdCAgICAgICAgICBudWxsLFxuXHQg
ICAgICAgICAgYWN0aXZlQ291bnQgfHwgJ05vJ1xuXHQgICAgICAgICksXG5cdCAgICAgICAgJyAn
LFxuXHQgICAgICAgIGl0ZW1Xb3JkLFxuXHQgICAgICAgICcgbGVmdCdcblx0ICAgICAgKTtcblx0
ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdyZW5kZXJGaWx0ZXJMaW5rJyxcblx0ICAgIHZh
bHVlOiBmdW5jdGlvbiByZW5kZXJGaWx0ZXJMaW5rKGZpbHRlcikge1xuXHQgICAgICB2YXIgdGl0
bGUgPSBGSUxURVJfVElUTEVTW2ZpbHRlcl07XG5cdCAgICAgIHZhciBfcHJvcHMgPSB0aGlzLnBy
b3BzO1xuXHQgICAgICB2YXIgc2VsZWN0ZWRGaWx0ZXIgPSBfcHJvcHMuZmlsdGVyO1xuXHQgICAg
ICB2YXIgb25TaG93ID0gX3Byb3BzLm9uU2hvdztcblx0XG5cdFxuXHQgICAgICByZXR1cm4gX3Jl
YWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAgICAgJ2EnLFxuXHQgICAgICAgIHsg
Y2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXMyLmRlZmF1bHQpKHsgc2VsZWN0ZWQ6IGZpbHRlciA9
PT0gc2VsZWN0ZWRGaWx0ZXIgfSksXG5cdCAgICAgICAgICBzdHlsZTogeyBjdXJzb3I6ICdwb2lu
dGVyJyB9LFxuXHQgICAgICAgICAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHtcblx0ICAg
ICAgICAgICAgcmV0dXJuIG9uU2hvdyhmaWx0ZXIpO1xuXHQgICAgICAgICAgfSB9LFxuXHQgICAg
ICAgIHRpdGxlXG5cdCAgICAgICk7XG5cdCAgICB9XG5cdCAgfSwge1xuXHQgICAga2V5OiAncmVu
ZGVyQ2xlYXJCdXR0b24nLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckNsZWFyQnV0dG9u
KCkge1xuXHQgICAgICB2YXIgX3Byb3BzMiA9IHRoaXMucHJvcHM7XG5cdCAgICAgIHZhciBjb21w
bGV0ZWRDb3VudCA9IF9wcm9wczIuY29tcGxldGVkQ291bnQ7XG5cdCAgICAgIHZhciBvbkNsZWFy
Q29tcGxldGVkID0gX3Byb3BzMi5vbkNsZWFyQ29tcGxldGVkO1xuXHRcblx0ICAgICAgaWYgKGNv
bXBsZXRlZENvdW50ID4gMCkge1xuXHQgICAgICAgIHJldHVybiBfcmVhY3QyLmRlZmF1bHQuY3Jl
YXRlRWxlbWVudChcblx0ICAgICAgICAgICdidXR0b24nLFxuXHQgICAgICAgICAgeyBjbGFzc05h
bWU6ICdjbGVhci1jb21wbGV0ZWQnLFxuXHQgICAgICAgICAgICBvbkNsaWNrOiBvbkNsZWFyQ29t
cGxldGVkIH0sXG5cdCAgICAgICAgICAnQ2xlYXIgY29tcGxldGVkJ1xuXHQgICAgICAgICk7XG5c
dCAgICAgIH1cblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdyZW5kZXInLFxuXHQgICAg
dmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcblx0ICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5c
dFxuXHQgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAg
ICAgJ2Zvb3RlcicsXG5cdCAgICAgICAgeyBjbGFzc05hbWU6ICdmb290ZXInIH0sXG5cdCAgICAg
ICAgdGhpcy5yZW5kZXJUb2RvQ291bnQoKSxcblx0ICAgICAgICBfcmVhY3QyLmRlZmF1bHQuY3Jl
YXRlRWxlbWVudChcblx0ICAgICAgICAgICd1bCcsXG5cdCAgICAgICAgICB7IGNsYXNzTmFtZTog
J2ZpbHRlcnMnIH0sXG5cdCAgICAgICAgICBbX1RvZG9GaWx0ZXJzLlNIT1dfQUxMLCBfVG9kb0Zp
bHRlcnMuU0hPV19BQ1RJVkUsIF9Ub2RvRmlsdGVycy5TSE9XX0NPTVBMRVRFRF0ubWFwKGZ1bmN0
aW9uIChmaWx0ZXIpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIF9yZWFjdDIuZGVmYXVsdC5jcmVh
dGVFbGVtZW50KFxuXHQgICAgICAgICAgICAgICdsaScsXG5cdCAgICAgICAgICAgICAgeyBrZXk6
IGZpbHRlciB9LFxuXHQgICAgICAgICAgICAgIF90aGlzMi5yZW5kZXJGaWx0ZXJMaW5rKGZpbHRl
cilcblx0ICAgICAgICAgICAgKTtcblx0ICAgICAgICAgIH0pXG5cdCAgICAgICAgKSxcblx0ICAg
ICAgICB0aGlzLnJlbmRlckNsZWFyQnV0dG9uKClcblx0ICAgICAgKTtcblx0ICAgIH1cblx0ICB9
XSk7XG5cdFxuXHQgIHJldHVybiBGb290ZXI7XG5cdH0oX3JlYWN0LkNvbXBvbmVudCk7XG5cdFxu
XHRGb290ZXIucHJvcFR5cGVzID0ge1xuXHQgIGNvbXBsZXRlZENvdW50OiBfcmVhY3QuUHJvcFR5
cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuXHQgIGFjdGl2ZUNvdW50OiBfcmVhY3QuUHJvcFR5cGVz
Lm51bWJlci5pc1JlcXVpcmVkLFxuXHQgIGZpbHRlcjogX3JlYWN0LlByb3BUeXBlcy5zdHJpbmcu
aXNSZXF1aXJlZCxcblx0ICBvbkNsZWFyQ29tcGxldGVkOiBfcmVhY3QuUHJvcFR5cGVzLmZ1bmMu
aXNSZXF1aXJlZCxcblx0ICBvblNob3c6IF9yZWFjdC5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVk
XG5cdH07XG5cdGV4cG9ydHMuZGVmYXVsdCA9IEZvb3RlcjtcblxuLyoqKi8gfSxcbi8qIDIwMCAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMs
IFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX2Ny
ZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdl
dCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIg
ZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9y
LmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYg
KFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9
IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMp
IHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBl
LCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVj
dG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXHRcblx0dmFy
IF9yZWFjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xuXHRcblx0dmFyIF9yZWFjdDIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cdFxuXHR2YXIgX1RvZG9UZXh0SW5wdXQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg0KTtcblx0XG5cdHZhciBfVG9kb1RleHRJbnB1dDIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Ub2RvVGV4dElucHV0KTtcblx0XG5cdGZ1bmN0aW9uIF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUg
PyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiBfY2xhc3NDYWxsQ2hl
Y2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29u
c3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFz
IGEgZnVuY3Rpb25cIik7IH0gfVxuXHRcblx0ZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JS
ZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9y
KFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2Fs
bGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0
eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cdFxuXHRmdW5j
dGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNs
YXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcg
VHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVu
Y3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29u
c3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6
IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNl
dFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNz
KSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblx0XG5cdHZhciBIZWFkZXIg
PSBmdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuXHQgIF9pbmhlcml0cyhIZWFkZXIsIF9Db21wb25l
bnQpO1xuXHRcblx0ICBmdW5jdGlvbiBIZWFkZXIoKSB7XG5cdCAgICB2YXIgX3JlZjtcblx0XG5c
dCAgICB2YXIgX3RlbXAsIF90aGlzLCBfcmV0O1xuXHRcblx0ICAgIF9jbGFzc0NhbGxDaGVjayh0
aGlzLCBIZWFkZXIpO1xuXHRcblx0ICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3Ro
LCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG5c
dCAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG5cdCAgICB9XG5cdFxuXHQgICAg
cmV0dXJuIF9yZXQgPSAoX3RlbXAgPSAoX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVy
bih0aGlzLCAoX3JlZiA9IEhlYWRlci5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9m
KEhlYWRlcikpLmNhbGwuYXBwbHkoX3JlZiwgW3RoaXNdLmNvbmNhdChhcmdzKSkpLCBfdGhpcyks
IF90aGlzLmhhbmRsZVNhdmUgPSBmdW5jdGlvbiAodGV4dCkge1xuXHQgICAgICBpZiAodGV4dC5s
ZW5ndGggIT09IDApIHtcblx0ICAgICAgICBfdGhpcy5wcm9wcy5hZGRUb2RvKHRleHQpO1xuXHQg
ICAgICB9XG5cdCAgICB9LCBfdGVtcCksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKF90aGlz
LCBfcmV0KTtcblx0ICB9XG5cdFxuXHQgIF9jcmVhdGVDbGFzcyhIZWFkZXIsIFt7XG5cdCAgICBr
ZXk6ICdyZW5kZXInLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcblx0ICAgICAg
cmV0dXJuIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAgICAgICdoZWFkZXIn
LFxuXHQgICAgICAgIHsgY2xhc3NOYW1lOiAnaGVhZGVyJyB9LFxuXHQgICAgICAgIF9yZWFjdDIu
ZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAgICAgICAgJ2gxJyxcblx0ICAgICAgICAgIG51
bGwsXG5cdCAgICAgICAgICAndG9kb3MnXG5cdCAgICAgICAgKSxcblx0ICAgICAgICBfcmVhY3Qy
LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfVG9kb1RleHRJbnB1dDIuZGVmYXVsdCwgeyBuZXdUb2Rv
OiB0cnVlLFxuXHQgICAgICAgICAgb25TYXZlOiB0aGlzLmhhbmRsZVNhdmUsXG5cdCAgICAgICAg
ICBwbGFjZWhvbGRlcjogJ1doYXQgbmVlZHMgdG8gYmUgZG9uZT8nIH0pXG5cdCAgICAgICk7XG5c
dCAgICB9XG5cdCAgfV0pO1xuXHRcblx0ICByZXR1cm4gSGVhZGVyO1xuXHR9KF9yZWFjdC5Db21w
b25lbnQpO1xuXHRcblx0SGVhZGVyLnByb3BUeXBlcyA9IHtcblx0ICBhZGRUb2RvOiBfcmVhY3Qu
UHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuXHR9O1xuXHRleHBvcnRzLmRlZmF1bHQgPSBIZWFk
ZXI7XG5cbi8qKiovIH0sXG4vKiAyMDEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0
cnVlXG5cdH0pO1xuXHRcblx0dmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlv
biAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7
IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYg
KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFy
Z2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblx0XG5cdHZh
ciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMo
dGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7
IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2Ny
aXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVl
OyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVl
OyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRv
cik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQ
cm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90
b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29u
c3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cdFxu
XHR2YXIgX1RPRE9fRklMVEVSUztcblx0XG5cdHZhciBfcmVhY3QgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEyKTtcblx0XG5cdHZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVh
Y3QpO1xuXHRcblx0dmFyIF9Ub2RvSXRlbSA9IF9fd2VicGFja19yZXF1aXJlX18oMjAyKTtcblx0
XG5cdHZhciBfVG9kb0l0ZW0yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfVG9kb0l0ZW0pO1xu
XHRcblx0dmFyIF9Gb290ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5OSk7XG5cdFxuXHR2YXIg
X0Zvb3RlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Gb290ZXIpO1xuXHRcblx0dmFyIF9U
b2RvRmlsdGVycyA9IF9fd2VicGFja19yZXF1aXJlX18oODYpO1xuXHRcblx0ZnVuY3Rpb24gX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/
IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVj
ayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25z
dHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMg
YSBmdW5jdGlvblwiKTsgfSB9XG5cdFxuXHRmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJl
dHVybihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3Io
XCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxs
ZWRcIik7IH0gcmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09PSBcIm9iamVjdFwiIHx8IHR5
cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7IH1cblx0XG5cdGZ1bmN0
aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xh
c3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBU
eXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5j
dGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25z
dHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTog
dHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0
UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3Mp
IDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXHRcblx0ZnVuY3Rpb24gX2Rl
ZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVl
LCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5
XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblx0XG5cdHZhciBUT0RPX0ZJTFRFUlMgPSAoX1RP
RE9fRklMVEVSUyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX1RPRE9fRklMVEVSUywgX1RvZG9GaWx0
ZXJzLlNIT1dfQUxMLCBmdW5jdGlvbiAoKSB7XG5cdCAgcmV0dXJuIHRydWU7XG5cdH0pLCBfZGVm
aW5lUHJvcGVydHkoX1RPRE9fRklMVEVSUywgX1RvZG9GaWx0ZXJzLlNIT1dfQUNUSVZFLCBmdW5j
dGlvbiAodG9kbykge1xuXHQgIHJldHVybiAhdG9kby5jb21wbGV0ZWQ7XG5cdH0pLCBfZGVmaW5l
UHJvcGVydHkoX1RPRE9fRklMVEVSUywgX1RvZG9GaWx0ZXJzLlNIT1dfQ09NUExFVEVELCBmdW5j
dGlvbiAodG9kbykge1xuXHQgIHJldHVybiB0b2RvLmNvbXBsZXRlZDtcblx0fSksIF9UT0RPX0ZJ
TFRFUlMpO1xuXHRcblx0dmFyIE1haW5TZWN0aW9uID0gZnVuY3Rpb24gKF9Db21wb25lbnQpIHtc
blx0ICBfaW5oZXJpdHMoTWFpblNlY3Rpb24sIF9Db21wb25lbnQpO1xuXHRcblx0ICBmdW5jdGlv
biBNYWluU2VjdGlvbigpIHtcblx0ICAgIHZhciBfcmVmO1xuXHRcblx0ICAgIHZhciBfdGVtcCwg
X3RoaXMsIF9yZXQ7XG5cdFxuXHQgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE1haW5TZWN0aW9u
KTtcblx0XG5cdCAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFy
cmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuXHQgICAgICBhcmdz
W19rZXldID0gYXJndW1lbnRzW19rZXldO1xuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBfcmV0
ID0gKF90ZW1wID0gKF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgKF9y
ZWYgPSBNYWluU2VjdGlvbi5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKE1haW5T
ZWN0aW9uKSkuY2FsbC5hcHBseShfcmVmLCBbdGhpc10uY29uY2F0KGFyZ3MpKSksIF90aGlzKSwg
X3RoaXMuc3RhdGUgPSB7IGZpbHRlcjogX1RvZG9GaWx0ZXJzLlNIT1dfQUxMIH0sIF90aGlzLmhh
bmRsZUNsZWFyQ29tcGxldGVkID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICBfdGhpcy5wcm9wcy5h
Y3Rpb25zLmNsZWFyQ29tcGxldGVkKCk7XG5cdCAgICB9LCBfdGhpcy5oYW5kbGVTaG93ID0gZnVu
Y3Rpb24gKGZpbHRlcikge1xuXHQgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGZpbHRlcjogZmlsdGVy
IH0pO1xuXHQgICAgfSwgX3RlbXApLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihfdGhpcywg
X3JldCk7XG5cdCAgfVxuXHRcblx0ICBfY3JlYXRlQ2xhc3MoTWFpblNlY3Rpb24sIFt7XG5cdCAg
ICBrZXk6ICdyZW5kZXJUb2dnbGVBbGwnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclRv
Z2dsZUFsbChjb21wbGV0ZWRDb3VudCkge1xuXHQgICAgICB2YXIgX3Byb3BzID0gdGhpcy5wcm9w
cztcblx0ICAgICAgdmFyIHRvZG9zID0gX3Byb3BzLnRvZG9zO1xuXHQgICAgICB2YXIgYWN0aW9u
cyA9IF9wcm9wcy5hY3Rpb25zO1xuXHRcblx0ICAgICAgaWYgKHRvZG9zLmxlbmd0aCA+IDApIHtc
blx0ICAgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jywg
eyBjbGFzc05hbWU6ICd0b2dnbGUtYWxsJyxcblx0ICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcs
XG5cdCAgICAgICAgICBjaGVja2VkOiBjb21wbGV0ZWRDb3VudCA9PT0gdG9kb3MubGVuZ3RoLFxu
XHQgICAgICAgICAgb25DaGFuZ2U6IGFjdGlvbnMuY29tcGxldGVBbGwgfSk7XG5cdCAgICAgIH1c
blx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdyZW5kZXJGb290ZXInLFxuXHQgICAgdmFs
dWU6IGZ1bmN0aW9uIHJlbmRlckZvb3Rlcihjb21wbGV0ZWRDb3VudCkge1xuXHQgICAgICB2YXIg
dG9kb3MgPSB0aGlzLnByb3BzLnRvZG9zO1xuXHQgICAgICB2YXIgZmlsdGVyID0gdGhpcy5zdGF0
ZS5maWx0ZXI7XG5cdFxuXHQgICAgICB2YXIgYWN0aXZlQ291bnQgPSB0b2Rvcy5sZW5ndGggLSBj
b21wbGV0ZWRDb3VudDtcblx0XG5cdCAgICAgIGlmICh0b2Rvcy5sZW5ndGgpIHtcblx0ICAgICAg
ICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX0Zvb3RlcjIuZGVmYXVsdCwg
eyBjb21wbGV0ZWRDb3VudDogY29tcGxldGVkQ291bnQsXG5cdCAgICAgICAgICBhY3RpdmVDb3Vu
dDogYWN0aXZlQ291bnQsXG5cdCAgICAgICAgICBmaWx0ZXI6IGZpbHRlcixcblx0ICAgICAgICAg
IG9uQ2xlYXJDb21wbGV0ZWQ6IHRoaXMuaGFuZGxlQ2xlYXJDb21wbGV0ZWQuYmluZCh0aGlzKSxc
blx0ICAgICAgICAgIG9uU2hvdzogdGhpcy5oYW5kbGVTaG93LmJpbmQodGhpcykgfSk7XG5cdCAg
ICAgIH1cblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdyZW5kZXInLFxuXHQgICAgdmFs
dWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcblx0ICAgICAgdmFyIF9wcm9wczIgPSB0aGlzLnByb3Bz
O1xuXHQgICAgICB2YXIgdG9kb3MgPSBfcHJvcHMyLnRvZG9zO1xuXHQgICAgICB2YXIgYWN0aW9u
cyA9IF9wcm9wczIuYWN0aW9ucztcblx0ICAgICAgdmFyIGZpbHRlciA9IHRoaXMuc3RhdGUuZmls
dGVyO1xuXHRcblx0XG5cdCAgICAgIHZhciBmaWx0ZXJlZFRvZG9zID0gdG9kb3MuZmlsdGVyKFRP
RE9fRklMVEVSU1tmaWx0ZXJdKTtcblx0ICAgICAgdmFyIGNvbXBsZXRlZENvdW50ID0gdG9kb3Mu
cmVkdWNlKGZ1bmN0aW9uIChjb3VudCwgdG9kbykge1xuXHQgICAgICAgIHJldHVybiB0b2RvLmNv
bXBsZXRlZCA/IGNvdW50ICsgMSA6IGNvdW50O1xuXHQgICAgICB9LCAwKTtcblx0XG5cdCAgICAg
IHJldHVybiBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICAgICAnc2VjdGlv
bicsXG5cdCAgICAgICAgeyBjbGFzc05hbWU6ICdtYWluJyB9LFxuXHQgICAgICAgIHRoaXMucmVu
ZGVyVG9nZ2xlQWxsKGNvbXBsZXRlZENvdW50KSxcblx0ICAgICAgICBfcmVhY3QyLmRlZmF1bHQu
Y3JlYXRlRWxlbWVudChcblx0ICAgICAgICAgICd1bCcsXG5cdCAgICAgICAgICB7IGNsYXNzTmFt
ZTogJ3RvZG8tbGlzdCcgfSxcblx0ICAgICAgICAgIGZpbHRlcmVkVG9kb3MubWFwKGZ1bmN0aW9u
ICh0b2RvKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxl
bWVudChfVG9kb0l0ZW0yLmRlZmF1bHQsIF9leHRlbmRzKHsga2V5OiB0b2RvLmlkLCB0b2RvOiB0
b2RvIH0sIGFjdGlvbnMpKTtcblx0ICAgICAgICAgIH0pXG5cdCAgICAgICAgKSxcblx0ICAgICAg
ICB0aGlzLnJlbmRlckZvb3Rlcihjb21wbGV0ZWRDb3VudClcblx0ICAgICAgKTtcblx0ICAgIH1c
blx0ICB9XSk7XG5cdFxuXHQgIHJldHVybiBNYWluU2VjdGlvbjtcblx0fShfcmVhY3QuQ29tcG9u
ZW50KTtcblx0XG5cdE1haW5TZWN0aW9uLnByb3BUeXBlcyA9IHtcblx0ICB0b2RvczogX3JlYWN0
LlByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuXHQgIGFjdGlvbnM6IF9yZWFjdC5Qcm9wVHlw
ZXMub2JqZWN0LmlzUmVxdWlyZWRcblx0fTtcblx0ZXhwb3J0cy5kZWZhdWx0ID0gTWFpblNlY3Rp
b247XG5cbi8qKiovIH0sXG4vKiAyMDIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0
cnVlXG5cdH0pO1xuXHRcblx0dmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rp
b24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwg
cHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRv
ci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9y
LmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3Jp
cHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2Ny
aXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3Is
IHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0
aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykg
ZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3Ry
dWN0b3I7IH07IH0oKTtcblx0XG5cdHZhciBfcmVhY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEy
KTtcblx0XG5cdHZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xu
XHRcblx0dmFyIF9jbGFzc25hbWVzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSk7XG5cdFxuXHR2
YXIgX2NsYXNzbmFtZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NuYW1lcyk7XG5c
dFxuXHR2YXIgX1RvZG9UZXh0SW5wdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg0KTtcblx0XG5c
dHZhciBfVG9kb1RleHRJbnB1dDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Ub2RvVGV4dElu
cHV0KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVy
biBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxu
XHRmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICgh
KGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3Io
XCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXHRcblx0ZnVuY3Rp
b24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsg
dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAt
IHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2Yg
Y2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNh
bGwgOiBzZWxmOyB9XG5cdFxuXHRmdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xh
c3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFz
cyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0
IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNz
KTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3Vw
ZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVt
ZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBp
ZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlw
ZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xh
c3M7IH1cblx0XG5cdHZhciBUb2RvSXRlbSA9IGZ1bmN0aW9uIChfQ29tcG9uZW50KSB7XG5cdCAg
X2luaGVyaXRzKFRvZG9JdGVtLCBfQ29tcG9uZW50KTtcblx0XG5cdCAgZnVuY3Rpb24gVG9kb0l0
ZW0oKSB7XG5cdCAgICB2YXIgX3JlZjtcblx0XG5cdCAgICB2YXIgX3RlbXAsIF90aGlzLCBfcmV0
O1xuXHRcblx0ICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUb2RvSXRlbSk7XG5cdFxuXHQgICAg
Zm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuKSwgX2tl
eSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcblx0ICAgICAgYXJnc1tfa2V5XSA9IGFyZ3Vt
ZW50c1tfa2V5XTtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gX3JldCA9IChfdGVtcCA9IChf
dGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChfcmVmID0gVG9kb0l0ZW0u
X19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihUb2RvSXRlbSkpLmNhbGwuYXBwbHko
X3JlZiwgW3RoaXNdLmNvbmNhdChhcmdzKSkpLCBfdGhpcyksIF90aGlzLnN0YXRlID0ge1xuXHQg
ICAgICBlZGl0aW5nOiBmYWxzZVxuXHQgICAgfSwgX3RoaXMuaGFuZGxlRG91YmxlQ2xpY2sgPSBm
dW5jdGlvbiAoKSB7XG5cdCAgICAgIF90aGlzLnNldFN0YXRlKHsgZWRpdGluZzogdHJ1ZSB9KTtc
blx0ICAgIH0sIF90aGlzLmhhbmRsZVNhdmUgPSBmdW5jdGlvbiAoaWQsIHRleHQpIHtcblx0ICAg
ICAgaWYgKHRleHQubGVuZ3RoID09PSAwKSB7XG5cdCAgICAgICAgX3RoaXMucHJvcHMuZGVsZXRl
VG9kbyhpZCk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgX3RoaXMucHJvcHMuZWRpdFRv
ZG8oaWQsIHRleHQpO1xuXHQgICAgICB9XG5cdCAgICAgIF90aGlzLnNldFN0YXRlKHsgZWRpdGlu
ZzogZmFsc2UgfSk7XG5cdCAgICB9LCBfdGVtcCksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJu
KF90aGlzLCBfcmV0KTtcblx0ICB9XG5cdFxuXHQgIF9jcmVhdGVDbGFzcyhUb2RvSXRlbSwgW3tc
blx0ICAgIGtleTogJ3JlbmRlcicsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xu
XHQgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblx0XG5cdCAgICAgIHZhciBfcHJvcHMgPSB0aGlz
LnByb3BzO1xuXHQgICAgICB2YXIgdG9kbyA9IF9wcm9wcy50b2RvO1xuXHQgICAgICB2YXIgY29t
cGxldGVUb2RvID0gX3Byb3BzLmNvbXBsZXRlVG9kbztcblx0ICAgICAgdmFyIGRlbGV0ZVRvZG8g
PSBfcHJvcHMuZGVsZXRlVG9kbztcblx0XG5cdFxuXHQgICAgICB2YXIgZWxlbWVudCA9IHZvaWQg
MDtcblx0ICAgICAgaWYgKHRoaXMuc3RhdGUuZWRpdGluZykge1xuXHQgICAgICAgIGVsZW1lbnQg
PSBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChfVG9kb1RleHRJbnB1dDIuZGVmYXVsdCwg
eyB0ZXh0OiB0b2RvLnRleHQsXG5cdCAgICAgICAgICBlZGl0aW5nOiB0aGlzLnN0YXRlLmVkaXRp
bmcsXG5cdCAgICAgICAgICBvblNhdmU6IGZ1bmN0aW9uIG9uU2F2ZSh0ZXh0KSB7XG5cdCAgICAg
ICAgICAgIHJldHVybiBfdGhpczIuaGFuZGxlU2F2ZSh0b2RvLmlkLCB0ZXh0KTtcblx0ICAgICAg
ICAgIH0gfSk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgZWxlbWVudCA9IF9yZWFjdDIu
ZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAgICAgICAgJ2RpdicsXG5cdCAgICAgICAgICB7
IGNsYXNzTmFtZTogJ3ZpZXcnIH0sXG5cdCAgICAgICAgICBfcmVhY3QyLmRlZmF1bHQuY3JlYXRl
RWxlbWVudCgnaW5wdXQnLCB7IGNsYXNzTmFtZTogJ3RvZ2dsZScsXG5cdCAgICAgICAgICAgIHR5
cGU6ICdjaGVja2JveCcsXG5cdCAgICAgICAgICAgIGNoZWNrZWQ6IHRvZG8uY29tcGxldGVkLFxu
XHQgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoKSB7XG5cdCAgICAgICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRlVG9kbyh0b2RvLmlkKTtcblx0ICAgICAgICAgICAgfSB9KSxc
blx0ICAgICAgICAgIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAgICAgICAg
ICAnbGFiZWwnLFxuXHQgICAgICAgICAgICB7IG9uRG91YmxlQ2xpY2s6IHRoaXMuaGFuZGxlRG91
YmxlQ2xpY2sgfSxcblx0ICAgICAgICAgICAgdG9kby50ZXh0XG5cdCAgICAgICAgICApLFxuXHQg
ICAgICAgICAgX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicsIHsgY2xhc3NO
YW1lOiAnZGVzdHJveScsXG5cdCAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2so
KSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZVRvZG8odG9kby5pZCk7XG5cdCAgICAg
ICAgICAgIH0gfSlcblx0ICAgICAgICApO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICByZXR1cm4g
X3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAgICAgJ2xpJyxcblx0ICAgICAg
ICB7IGNsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzMi5kZWZhdWx0KSh7XG5cdCAgICAgICAgICAg
IGNvbXBsZXRlZDogdG9kby5jb21wbGV0ZWQsXG5cdCAgICAgICAgICAgIGVkaXRpbmc6IHRoaXMu
c3RhdGUuZWRpdGluZ1xuXHQgICAgICAgICAgfSkgfSxcblx0ICAgICAgICBlbGVtZW50XG5cdCAg
ICAgICk7XG5cdCAgICB9XG5cdCAgfV0pO1xuXHRcblx0ICByZXR1cm4gVG9kb0l0ZW07XG5cdH0o
X3JlYWN0LkNvbXBvbmVudCk7XG5cdFxuXHRUb2RvSXRlbS5wcm9wVHlwZXMgPSB7XG5cdCAgdG9k
bzogX3JlYWN0LlByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcblx0ICBlZGl0VG9kbzogX3Jl
YWN0LlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgZGVsZXRlVG9kbzogX3JlYWN0LlBy
b3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgY29tcGxldGVUb2RvOiBfcmVhY3QuUHJvcFR5
cGVzLmZ1bmMuaXNSZXF1aXJlZFxuXHR9O1xuXHRleHBvcnRzLmRlZmF1bHQgPSBUb2RvSXRlbTtc
blxuLyoqKi8gfSxcbi8qIDIwMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRl
ZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVc
blx0fSk7XG5cdFxuXHR2YXIgX3JlYWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG5cdFxu
XHR2YXIgX3JlYWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0KTtcblx0XG5cdHZh
ciBfcmVkdXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTtcblx0XG5cdHZhciBfcmVhY3RSZWR1
eCA9IF9fd2VicGFja19yZXF1aXJlX18oODEpO1xuXHRcblx0dmFyIF9IZWFkZXIgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDIwMCk7XG5cdFxuXHR2YXIgX0hlYWRlcjIgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF9IZWFkZXIpO1xuXHRcblx0dmFyIF9NYWluU2VjdGlvbiA9IF9fd2VicGFja19yZXF1
aXJlX18oMjAxKTtcblx0XG5cdHZhciBfTWFpblNlY3Rpb24yID0gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChfTWFpblNlY3Rpb24pO1xuXHRcblx0dmFyIF9hY3Rpb25zID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxOTgpO1xuXHRcblx0dmFyIFRvZG9BY3Rpb25zID0gX2ludGVyb3BSZXF1aXJlV2lsZGNh
cmQoX2FjdGlvbnMpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2Jq
KSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBlbHNlIHsgdmFy
IG5ld09iaiA9IHt9OyBpZiAob2JqICE9IG51bGwpIHsgZm9yICh2YXIga2V5IGluIG9iaikgeyBp
ZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgbmV3T2Jq
W2tleV0gPSBvYmpba2V5XTsgfSB9IG5ld09iai5kZWZhdWx0ID0gb2JqOyByZXR1cm4gbmV3T2Jq
OyB9IH1cblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVy
biBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxu
XHR2YXIgQXBwID0gZnVuY3Rpb24gQXBwKF9yZWYpIHtcblx0ICB2YXIgdG9kb3MgPSBfcmVmLnRv
ZG9zO1xuXHQgIHZhciBhY3Rpb25zID0gX3JlZi5hY3Rpb25zO1xuXHQgIHJldHVybiBfcmVhY3Qy
LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICdkaXYnLFxuXHQgICAgbnVsbCxcblx0ICAg
IF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9IZWFkZXIyLmRlZmF1bHQsIHsgYWRkVG9k
bzogYWN0aW9ucy5hZGRUb2RvIH0pLFxuXHQgICAgX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1l
bnQoX01haW5TZWN0aW9uMi5kZWZhdWx0LCB7IHRvZG9zOiB0b2RvcywgYWN0aW9uczogYWN0aW9u
cyB9KVxuXHQgICk7XG5cdH07XG5cdFxuXHRBcHAucHJvcFR5cGVzID0ge1xuXHQgIHRvZG9zOiBf
cmVhY3QuUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG5cdCAgYWN0aW9uczogX3JlYWN0LlBy
b3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxuXHR9O1xuXHRcblx0dmFyIG1hcFN0YXRlVG9Qcm9w
cyA9IGZ1bmN0aW9uIG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSkge1xuXHQgIHJldHVybiB7XG5cdCAg
ICB0b2Rvczogc3RhdGUudG9kb3Ncblx0ICB9O1xuXHR9O1xuXHRcblx0dmFyIG1hcERpc3BhdGNo
VG9Qcm9wcyA9IGZ1bmN0aW9uIG1hcERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCkge1xuXHQgIHJl
dHVybiB7XG5cdCAgICBhY3Rpb25zOiAoMCwgX3JlZHV4LmJpbmRBY3Rpb25DcmVhdG9ycykoVG9k
b0FjdGlvbnMsIGRpc3BhdGNoKVxuXHQgIH07XG5cdH07XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQg
PSAoMCwgX3JlYWN0UmVkdXguY29ubmVjdCkobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRv
UHJvcHMpKEFwcCk7XG5cbi8qKiovIH0sXG4vKiAyMDQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdHZhciBfcmVhY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcblx0XG5cdHZhciBfcmVh
Y3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXHRcblx0dmFyIF9yZWFjdERv
bSA9IF9fd2VicGFja19yZXF1aXJlX18oMTIzKTtcblx0XG5cdHZhciBfcmVkdXggPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDMwKTtcblx0XG5cdHZhciBfcmVhY3RSZWR1eCA9IF9fd2VicGFja19yZXF1
aXJlX18oODEpO1xuXHRcblx0dmFyIF9BcHAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwMyk7XG5c
dFxuXHR2YXIgX0FwcDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9BcHApO1xuXHRcblx0dmFy
IF9yZWR1Y2VycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjA1KTtcblx0XG5cdHZhciBfcmVkdWNl
cnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVkdWNlcnMpO1xuXHRcblx0X193ZWJwYWNr
X3JlcXVpcmVfXygyMDcpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChv
YmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2Jq
IH07IH1cblx0XG5cdHZhciBzdG9yZSA9ICgwLCBfcmVkdXguY3JlYXRlU3RvcmUpKF9yZWR1Y2Vy
czIuZGVmYXVsdCk7XG5cdFxuXHQoMCwgX3JlYWN0RG9tLnJlbmRlcikoX3JlYWN0Mi5kZWZhdWx0
LmNyZWF0ZUVsZW1lbnQoXG5cdCAgX3JlYWN0UmVkdXguUHJvdmlkZXIsXG5cdCAgeyBzdG9yZTog
c3RvcmUgfSxcblx0ICBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChfQXBwMi5kZWZhdWx0
LCBudWxsKVxuXHQpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpKTtcblxuLyoqKi8g
fSxcbi8qIDIwNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3Bl
cnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5c
dFxuXHR2YXIgX3JlZHV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMCk7XG5cdFxuXHR2YXIgX3Rv
ZG9zID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMDYpO1xuXHRcblx0dmFyIF90b2RvczIgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF90b2Rvcyk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVp
cmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBk
ZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0dmFyIHJvb3RSZWR1Y2VyID0gKDAsIF9yZWR1eC5jb21i
aW5lUmVkdWNlcnMpKHtcblx0ICB0b2RvczogX3RvZG9zMi5kZWZhdWx0XG5cdH0pO1xuXHRcblx0
ZXhwb3J0cy5kZWZhdWx0ID0gcm9vdFJlZHVjZXI7XG5cbi8qKiovIH0sXG4vKiAyMDYgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9f
ZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF90eXBlb2Yg
PSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRv
ciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0g
OiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5j
dGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sID8gXCJzeW1ib2xcIiA6IHR5cGVv
ZiBvYmo7IH07XG5cdFxuXHR2YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9u
ICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsg
dmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAo
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJn
ZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXHRcblx0ZXhw
b3J0cy5kZWZhdWx0ID0gdG9kb3M7XG5cdFxuXHR2YXIgX0FjdGlvblR5cGVzID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg4NSk7XG5cdFxuXHRmdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7
IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShh
cnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJl
dHVybiBhcnIyOyB9IGVsc2UgeyByZXR1cm4gQXJyYXkuZnJvbShhcnIpOyB9IH1cblx0XG5cdHZh
ciBpbml0aWFsU3RhdGUgPSBbXTtcblx0XG5cdGZ1bmN0aW9uIHRvZG9zKCkge1xuXHQgIHZhciBz
dGF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5l
ZCA/IGluaXRpYWxTdGF0ZSA6IGFyZ3VtZW50c1swXTtcblx0ICB2YXIgYWN0aW9uID0gYXJndW1l
bnRzWzFdO1xuXHRcblx0ICB2YXIgX3JldCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgIHN3aXRjaCAo
YWN0aW9uLnR5cGUpIHtcblx0ICAgICAgY2FzZSBfQWN0aW9uVHlwZXMuQUREX1RPRE86XG5cdCAg
ICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIHY6IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJy
YXkoc3RhdGUpLCBbe1xuXHQgICAgICAgICAgICBpZDogc3RhdGUucmVkdWNlKGZ1bmN0aW9uICht
YXhJZCwgdG9kbykge1xuXHQgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heCh0b2RvLmlkLCBt
YXhJZCk7XG5cdCAgICAgICAgICAgIH0sIC0xKSArIDEsXG5cdCAgICAgICAgICAgIGNvbXBsZXRl
ZDogZmFsc2UsXG5cdCAgICAgICAgICAgIHRleHQ6IGFjdGlvbi50ZXh0XG5cdCAgICAgICAgICB9
XSlcblx0ICAgICAgICB9O1xuXHRcblx0ICAgICAgY2FzZSBfQWN0aW9uVHlwZXMuREVMRVRFX1RP
RE86XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIHY6IHN0YXRlLmZpbHRlcihmdW5j
dGlvbiAodG9kbykge1xuXHQgICAgICAgICAgICByZXR1cm4gdG9kby5pZCAhPT0gYWN0aW9uLmlk
O1xuXHQgICAgICAgICAgfSlcblx0ICAgICAgICB9O1xuXHRcblx0ICAgICAgY2FzZSBfQWN0aW9u
VHlwZXMuRURJVF9UT0RPOlxuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICB2OiBzdGF0
ZS5tYXAoZnVuY3Rpb24gKHRvZG8pIHtcblx0ICAgICAgICAgICAgcmV0dXJuIHRvZG8uaWQgPT09
IGFjdGlvbi5pZCA/IF9leHRlbmRzKHt9LCB0b2RvLCB7IHRleHQ6IGFjdGlvbi50ZXh0IH0pIDog
dG9kbztcblx0ICAgICAgICAgIH0pXG5cdCAgICAgICAgfTtcblx0XG5cdCAgICAgIGNhc2UgX0Fj
dGlvblR5cGVzLkNPTVBMRVRFX1RPRE86XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAg
IHY6IHN0YXRlLm1hcChmdW5jdGlvbiAodG9kbykge1xuXHQgICAgICAgICAgICByZXR1cm4gdG9k
by5pZCA9PT0gYWN0aW9uLmlkID8gX2V4dGVuZHMoe30sIHRvZG8sIHsgY29tcGxldGVkOiAhdG9k
by5jb21wbGV0ZWQgfSkgOiB0b2RvO1xuXHQgICAgICAgICAgfSlcblx0ICAgICAgICB9O1xuXHRc
blx0ICAgICAgY2FzZSBfQWN0aW9uVHlwZXMuQ09NUExFVEVfQUxMOlxuXHQgICAgICAgIHZhciBh
cmVBbGxNYXJrZWQgPSBzdGF0ZS5ldmVyeShmdW5jdGlvbiAodG9kbykge1xuXHQgICAgICAgICAg
cmV0dXJuIHRvZG8uY29tcGxldGVkO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICAgIHJldHVybiB7
XG5cdCAgICAgICAgICB2OiBzdGF0ZS5tYXAoZnVuY3Rpb24gKHRvZG8pIHtcblx0ICAgICAgICAg
ICAgcmV0dXJuIF9leHRlbmRzKHt9LCB0b2RvLCB7XG5cdCAgICAgICAgICAgICAgY29tcGxldGVk
OiAhYXJlQWxsTWFya2VkXG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgfSlcblx0ICAg
ICAgICB9O1xuXHRcblx0ICAgICAgY2FzZSBfQWN0aW9uVHlwZXMuQ0xFQVJfQ09NUExFVEVEOlxu
XHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICB2OiBzdGF0ZS5maWx0ZXIoZnVuY3Rpb24g
KHRvZG8pIHtcblx0ICAgICAgICAgICAgcmV0dXJuIHRvZG8uY29tcGxldGVkID09PSBmYWxzZTtc
blx0ICAgICAgICAgIH0pXG5cdCAgICAgICAgfTtcblx0XG5cdCAgICAgIGRlZmF1bHQ6XG5cdCAg
ICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIHY6IHN0YXRlXG5cdCAgICAgICAgfTtcblx0ICAg
IH1cblx0ICB9KCk7XG5cdFxuXHQgIGlmICgodHlwZW9mIF9yZXQgPT09ICd1bmRlZmluZWQnID8g
J3VuZGVmaW5lZCcgOiBfdHlwZW9mKF9yZXQpKSA9PT0gXCJvYmplY3RcIikgcmV0dXJuIF9yZXQu
djtcblx0fVxuXG4vKioqLyB9LFxuLyogMjA3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMpIHtcblxuXHQvLyByZW1vdmVkIGJ5IGV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpblxu
XG4vKioqLyB9LFxuLyogMjA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtc
blxuXHQndXNlIHN0cmljdCc7XG5cdC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICov
XG5cdHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7
XG5cdHZhciBwcm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51
bWVyYWJsZTtcblx0XG5cdGZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xuXHRcdGlmICh2YWwgPT09
IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3Io
J09iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkJyk7
XG5cdFx0fVxuXHRcblx0XHRyZXR1cm4gT2JqZWN0KHZhbCk7XG5cdH1cblx0XG5cdGZ1bmN0aW9u
IHNob3VsZFVzZU5hdGl2ZSgpIHtcblx0XHR0cnkge1xuXHRcdFx0aWYgKCFPYmplY3QuYXNzaWdu
KSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XG5cdFx0XHQvLyBEZXRlY3Qg
YnVnZ3kgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjggdmVyc2lvbnMuXG5c
dFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/
aWQ9NDExOFxuXHRcdFx0dmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBlc2xpbnQt
ZGlzYWJsZS1saW5lXG5cdFx0XHR0ZXN0MVs1XSA9ICdkZSc7XG5cdFx0XHRpZiAoT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtcblx0XHRcdFx0cmV0dXJuIGZh
bHNlO1xuXHRcdFx0fVxuXHRcblx0XHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92
OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHRcdHZhciB0ZXN0MiA9IHt9O1xuXHRcdFx0Zm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0XHRcdHRlc3QyWydfJyArIFN0cmluZy5m
cm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHRcdH1cblx0XHRcdHZhciBvcmRlcjIgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9uIChuKSB7XG5cdFx0XHRcdHJl
dHVybiB0ZXN0MltuXTtcblx0XHRcdH0pO1xuXHRcdFx0aWYgKG9yZGVyMi5qb2luKCcnKSAhPT0g
JzAxMjM0NTY3ODknKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XG5cdFx0
XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2
XG5cdFx0XHR2YXIgdGVzdDMgPSB7fTtcblx0XHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcuc3Bs
aXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRcdFx0XHR0ZXN0M1tsZXR0ZXJd
ID0gbGV0dGVyO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2ln
bih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFy
c3QnKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XG5cdFx0XHRyZXR1cm4g
dHJ1ZTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHQvLyBXZSBkb24ndCBleHBlY3QgYW55IG9m
IHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxuXHRcdFx0cmV0dXJu
IGZhbHNlO1xuXHRcdH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBzaG91bGRVc2VOYXRp
dmUoKSA/IE9iamVjdC5hc3NpZ24gOiBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UpIHtcblx0XHR2
YXIgZnJvbTtcblx0XHR2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQpO1xuXHRcdHZhciBzeW1ib2xz
O1xuXHRcblx0XHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykge1xu
XHRcdFx0ZnJvbSA9IE9iamVjdChhcmd1bWVudHNbc10pO1xuXHRcblx0XHRcdGZvciAodmFyIGtl
eSBpbiBmcm9tKSB7XG5cdFx0XHRcdGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZyb20sIGtleSkp
IHtcblx0XHRcdFx0XHR0b1trZXldID0gZnJvbVtrZXldO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5c
dFxuXHRcdFx0aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcblx0XHRcdFx0c3lt
Ym9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRcdGZvciAo
dmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGlmIChwcm9w
SXNFbnVtZXJhYmxlLmNhbGwoZnJvbSwgc3ltYm9sc1tpXSkpIHtcblx0XHRcdFx0XHRcdHRvW3N5
bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0
XHRcdH1cblx0XHR9XG5cdFxuXHRcdHJldHVybiB0bztcblx0fTtcblxuXG4vKioqLyB9LFxuLyog
MjA5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvL1RoaXMgZmlsZSBjb250YWlucyB0aGUg
RVM2IGV4dGVuc2lvbnMgdG8gdGhlIGNvcmUgUHJvbWlzZXMvQSsgQVBJXG5cdFxuXHR2YXIgUHJv
bWlzZSA9IF9fd2VicGFja19yZXF1aXJlX18oODgpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBQ
cm9taXNlO1xuXHRcblx0LyogU3RhdGljIEZ1bmN0aW9ucyAqL1xuXHRcblx0dmFyIFRSVUUgPSB2
YWx1ZVByb21pc2UodHJ1ZSk7XG5cdHZhciBGQUxTRSA9IHZhbHVlUHJvbWlzZShmYWxzZSk7XG5c
dHZhciBOVUxMID0gdmFsdWVQcm9taXNlKG51bGwpO1xuXHR2YXIgVU5ERUZJTkVEID0gdmFsdWVQ
cm9taXNlKHVuZGVmaW5lZCk7XG5cdHZhciBaRVJPID0gdmFsdWVQcm9taXNlKDApO1xuXHR2YXIg
RU1QVFlTVFJJTkcgPSB2YWx1ZVByb21pc2UoJycpO1xuXHRcblx0ZnVuY3Rpb24gdmFsdWVQcm9t
aXNlKHZhbHVlKSB7XG5cdCAgdmFyIHAgPSBuZXcgUHJvbWlzZShQcm9taXNlLl82MSk7XG5cdCAg
cC5fODEgPSAxO1xuXHQgIHAuXzY1ID0gdmFsdWU7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblx0UHJv
bWlzZS5yZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG5cdCAgaWYgKHZhbHVlIGluc3RhbmNl
b2YgUHJvbWlzZSkgcmV0dXJuIHZhbHVlO1xuXHRcblx0ICBpZiAodmFsdWUgPT09IG51bGwpIHJl
dHVybiBOVUxMO1xuXHQgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gVU5ERUZJTkVE
O1xuXHQgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkgcmV0dXJuIFRSVUU7XG5cdCAgaWYgKHZhbHVlID09
PSBmYWxzZSkgcmV0dXJuIEZBTFNFO1xuXHQgIGlmICh2YWx1ZSA9PT0gMCkgcmV0dXJuIFpFUk87
XG5cdCAgaWYgKHZhbHVlID09PSAnJykgcmV0dXJuIEVNUFRZU1RSSU5HO1xuXHRcblx0ICBpZiAo
dHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicp
IHtcblx0ICAgIHRyeSB7XG5cdCAgICAgIHZhciB0aGVuID0gdmFsdWUudGhlbjtcblx0ICAgICAg
aWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKHRoZW4uYmluZCh2YWx1ZSkpO1xuXHQgICAgICB9XG5cdCAgICB9IGNhdGNoIChleCkg
e1xuXHQgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkg
e1xuXHQgICAgICAgIHJlamVjdChleCk7XG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQgIH1cblx0
ICByZXR1cm4gdmFsdWVQcm9taXNlKHZhbHVlKTtcblx0fTtcblx0XG5cdFByb21pc2UuYWxsID0g
ZnVuY3Rpb24gKGFycikge1xuXHQgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNh
bGwoYXJyKTtcblx0XG5cdCAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCBy
ZWplY3QpIHtcblx0ICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHJlc29sdmUoW10p
O1xuXHQgICAgdmFyIHJlbWFpbmluZyA9IGFyZ3MubGVuZ3RoO1xuXHQgICAgZnVuY3Rpb24gcmVz
KGksIHZhbCkge1xuXHQgICAgICBpZiAodmFsICYmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JyB8
fCB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nKSkge1xuXHQgICAgICAgIGlmICh2YWwgaW5zdGFu
Y2VvZiBQcm9taXNlICYmIHZhbC50aGVuID09PSBQcm9taXNlLnByb3RvdHlwZS50aGVuKSB7XG5c
dCAgICAgICAgICB3aGlsZSAodmFsLl84MSA9PT0gMykge1xuXHQgICAgICAgICAgICB2YWwgPSB2
YWwuXzY1O1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgaWYgKHZhbC5fODEgPT09IDEpIHJl
dHVybiByZXMoaSwgdmFsLl82NSk7XG5cdCAgICAgICAgICBpZiAodmFsLl84MSA9PT0gMikgcmVq
ZWN0KHZhbC5fNjUpO1xuXHQgICAgICAgICAgdmFsLnRoZW4oZnVuY3Rpb24gKHZhbCkge1xuXHQg
ICAgICAgICAgICByZXMoaSwgdmFsKTtcblx0ICAgICAgICAgIH0sIHJlamVjdCk7XG5cdCAgICAg
ICAgICByZXR1cm47XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHZhciB0aGVuID0g
dmFsLnRoZW47XG5cdCAgICAgICAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtc
blx0ICAgICAgICAgICAgdmFyIHAgPSBuZXcgUHJvbWlzZSh0aGVuLmJpbmQodmFsKSk7XG5cdCAg
ICAgICAgICAgIHAudGhlbihmdW5jdGlvbiAodmFsKSB7XG5cdCAgICAgICAgICAgICAgcmVzKGks
IHZhbCk7XG5cdCAgICAgICAgICAgIH0sIHJlamVjdCk7XG5cdCAgICAgICAgICAgIHJldHVybjtc
blx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgYXJnc1tpXSA9
IHZhbDtcblx0ICAgICAgaWYgKC0tcmVtYWluaW5nID09PSAwKSB7XG5cdCAgICAgICAgcmVzb2x2
ZShhcmdzKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBh
cmdzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHJlcyhpLCBhcmdzW2ldKTtcblx0ICAgIH1cblx0
ICB9KTtcblx0fTtcblx0XG5cdFByb21pc2UucmVqZWN0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG5c
dCAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblx0ICAg
IHJlamVjdCh2YWx1ZSk7XG5cdCAgfSk7XG5cdH07XG5cdFxuXHRQcm9taXNlLnJhY2UgPSBmdW5j
dGlvbiAodmFsdWVzKSB7XG5cdCAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZl
LCByZWplY3QpIHtcblx0ICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKXtcblx0ICAg
ICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG5cdCAgICB9
KTtcblx0ICB9KTtcblx0fTtcblx0XG5cdC8qIFByb3RvdHlwZSBNZXRob2RzICovXG5cdFxuXHRQ
cm9taXNlLnByb3RvdHlwZVsnY2F0Y2gnXSA9IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG5cdCAg
cmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcblx0fTtcblxuXG4vKioqLyB9LFxu
LyogMjEwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUHJvbWlzZSA9IF9fd2VicGFj
a19yZXF1aXJlX18oODgpO1xuXHRcblx0dmFyIERFRkFVTFRfV0hJVEVMSVNUID0gW1xuXHQgIFJl
ZmVyZW5jZUVycm9yLFxuXHQgIFR5cGVFcnJvcixcblx0ICBSYW5nZUVycm9yXG5cdF07XG5cdFxu
XHR2YXIgZW5hYmxlZCA9IGZhbHNlO1xuXHRleHBvcnRzLmRpc2FibGUgPSBkaXNhYmxlO1xuXHRm
dW5jdGlvbiBkaXNhYmxlKCkge1xuXHQgIGVuYWJsZWQgPSBmYWxzZTtcblx0ICBQcm9taXNlLl8x
MCA9IG51bGw7XG5cdCAgUHJvbWlzZS5fOTcgPSBudWxsO1xuXHR9XG5cdFxuXHRleHBvcnRzLmVu
YWJsZSA9IGVuYWJsZTtcblx0ZnVuY3Rpb24gZW5hYmxlKG9wdGlvbnMpIHtcblx0ICBvcHRpb25z
ID0gb3B0aW9ucyB8fCB7fTtcblx0ICBpZiAoZW5hYmxlZCkgZGlzYWJsZSgpO1xuXHQgIGVuYWJs
ZWQgPSB0cnVlO1xuXHQgIHZhciBpZCA9IDA7XG5cdCAgdmFyIGRpc3BsYXlJZCA9IDA7XG5cdCAg
dmFyIHJlamVjdGlvbnMgPSB7fTtcblx0ICBQcm9taXNlLl8xMCA9IGZ1bmN0aW9uIChwcm9taXNl
KSB7XG5cdCAgICBpZiAoXG5cdCAgICAgIHByb21pc2UuXzgxID09PSAyICYmIC8vIElTIFJFSkVD
VEVEXG5cdCAgICAgIHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdXG5cdCAgICApIHtcblx0ICAgICAg
aWYgKHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdLmxvZ2dlZCkge1xuXHQgICAgICAgIG9uSGFuZGxl
ZChwcm9taXNlLl83Mik7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgY2xlYXJUaW1lb3V0
KHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdLnRpbWVvdXQpO1xuXHQgICAgICB9XG5cdCAgICAgIGRl
bGV0ZSByZWplY3Rpb25zW3Byb21pc2UuXzcyXTtcblx0ICAgIH1cblx0ICB9O1xuXHQgIFByb21p
c2UuXzk3ID0gZnVuY3Rpb24gKHByb21pc2UsIGVycikge1xuXHQgICAgaWYgKHByb21pc2UuXzQ1
ID09PSAwKSB7IC8vIG5vdCB5ZXQgaGFuZGxlZFxuXHQgICAgICBwcm9taXNlLl83MiA9IGlkKys7
XG5cdCAgICAgIHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdID0ge1xuXHQgICAgICAgIGRpc3BsYXlJ
ZDogbnVsbCxcblx0ICAgICAgICBlcnJvcjogZXJyLFxuXHQgICAgICAgIHRpbWVvdXQ6IHNldFRp
bWVvdXQoXG5cdCAgICAgICAgICBvblVuaGFuZGxlZC5iaW5kKG51bGwsIHByb21pc2UuXzcyKSxc
blx0ICAgICAgICAgIC8vIEZvciByZWZlcmVuY2UgZXJyb3JzIGFuZCB0eXBlIGVycm9ycywgdGhp
cyBhbG1vc3QgYWx3YXlzXG5cdCAgICAgICAgICAvLyBtZWFucyB0aGUgcHJvZ3JhbW1lciBtYWRl
IGEgbWlzdGFrZSwgc28gbG9nIHRoZW0gYWZ0ZXIganVzdFxuXHQgICAgICAgICAgLy8gMTAwbXNc
blx0ICAgICAgICAgIC8vIG90aGVyd2lzZSwgd2FpdCAyIHNlY29uZHMgdG8gc2VlIGlmIHRoZXkg
Z2V0IGhhbmRsZWRcblx0ICAgICAgICAgIG1hdGNoV2hpdGVsaXN0KGVyciwgREVGQVVMVF9XSElU
RUxJU1QpXG5cdCAgICAgICAgICAgID8gMTAwXG5cdCAgICAgICAgICAgIDogMjAwMFxuXHQgICAg
ICAgICksXG5cdCAgICAgICAgbG9nZ2VkOiBmYWxzZVxuXHQgICAgICB9O1xuXHQgICAgfVxuXHQg
IH07XG5cdCAgZnVuY3Rpb24gb25VbmhhbmRsZWQoaWQpIHtcblx0ICAgIGlmIChcblx0ICAgICAg
b3B0aW9ucy5hbGxSZWplY3Rpb25zIHx8XG5cdCAgICAgIG1hdGNoV2hpdGVsaXN0KFxuXHQgICAg
ICAgIHJlamVjdGlvbnNbaWRdLmVycm9yLFxuXHQgICAgICAgIG9wdGlvbnMud2hpdGVsaXN0IHx8
IERFRkFVTFRfV0hJVEVMSVNUXG5cdCAgICAgIClcblx0ICAgICkge1xuXHQgICAgICByZWplY3Rp
b25zW2lkXS5kaXNwbGF5SWQgPSBkaXNwbGF5SWQrKztcblx0ICAgICAgaWYgKG9wdGlvbnMub25V
bmhhbmRsZWQpIHtcblx0ICAgICAgICByZWplY3Rpb25zW2lkXS5sb2dnZWQgPSB0cnVlO1xuXHQg
ICAgICAgIG9wdGlvbnMub25VbmhhbmRsZWQoXG5cdCAgICAgICAgICByZWplY3Rpb25zW2lkXS5k
aXNwbGF5SWQsXG5cdCAgICAgICAgICByZWplY3Rpb25zW2lkXS5lcnJvclxuXHQgICAgICAgICk7
XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgcmVqZWN0aW9uc1tpZF0ubG9nZ2VkID0gdHJ1
ZTtcblx0ICAgICAgICBsb2dFcnJvcihcblx0ICAgICAgICAgIHJlamVjdGlvbnNbaWRdLmRpc3Bs
YXlJZCxcblx0ICAgICAgICAgIHJlamVjdGlvbnNbaWRdLmVycm9yXG5cdCAgICAgICAgKTtcblx0
ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0ICBmdW5jdGlvbiBvbkhhbmRsZWQoaWQpIHtcblx0
ICAgIGlmIChyZWplY3Rpb25zW2lkXS5sb2dnZWQpIHtcblx0ICAgICAgaWYgKG9wdGlvbnMub25I
YW5kbGVkKSB7XG5cdCAgICAgICAgb3B0aW9ucy5vbkhhbmRsZWQocmVqZWN0aW9uc1tpZF0uZGlz
cGxheUlkLCByZWplY3Rpb25zW2lkXS5lcnJvcik7XG5cdCAgICAgIH0gZWxzZSBpZiAoIXJlamVj
dGlvbnNbaWRdLm9uVW5oYW5kbGVkKSB7XG5cdCAgICAgICAgY29uc29sZS53YXJuKFxuXHQgICAg
ICAgICAgJ1Byb21pc2UgUmVqZWN0aW9uIEhhbmRsZWQgKGlkOiAnICsgcmVqZWN0aW9uc1tpZF0u
ZGlzcGxheUlkICsgJyk6J1xuXHQgICAgICAgICk7XG5cdCAgICAgICAgY29uc29sZS53YXJuKFxu
XHQgICAgICAgICAgJyAgVGhpcyBtZWFucyB5b3UgY2FuIGlnbm9yZSBhbnkgcHJldmlvdXMgbWVz
c2FnZXMgb2YgdGhlIGZvcm0gXCJQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb25c
IiB3aXRoIGlkICcgK1xuXHQgICAgICAgICAgcmVqZWN0aW9uc1tpZF0uZGlzcGxheUlkICsgJy4n
XG5cdCAgICAgICAgKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0ZnVu
Y3Rpb24gbG9nRXJyb3IoaWQsIGVycm9yKSB7XG5cdCAgY29uc29sZS53YXJuKCdQb3NzaWJsZSBV
bmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb24gKGlkOiAnICsgaWQgKyAnKTonKTtcblx0ICB2YXIg
ZXJyU3RyID0gKGVycm9yICYmIChlcnJvci5zdGFjayB8fCBlcnJvcikpICsgJyc7XG5cdCAgZXJy
U3RyLnNwbGl0KCdcXG4nKS5mb3JFYWNoKGZ1bmN0aW9uIChsaW5lKSB7XG5cdCAgICBjb25zb2xl
Lndhcm4oJyAgJyArIGxpbmUpO1xuXHQgIH0pO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBtYXRjaFdo
aXRlbGlzdChlcnJvciwgbGlzdCkge1xuXHQgIHJldHVybiBsaXN0LnNvbWUoZnVuY3Rpb24gKGNs
cykge1xuXHQgICAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgY2xzO1xuXHQgIH0pO1xuXHR9XG5c
bi8qKiovIH0sXG4vKiAyMTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xu
XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obW9kdWxlKSB7XHJcblx0XHRpZighbW9kdWxl
LndlYnBhY2tQb2x5ZmlsbCkge1xyXG5cdFx0XHRtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24o
KSB7fTtcclxuXHRcdFx0bW9kdWxlLnBhdGhzID0gW107XHJcblx0XHRcdC8vIG1vZHVsZS5wYXJl
bnQgPSB1bmRlZmluZWQgYnkgZGVmYXVsdFxyXG5cdFx0XHRtb2R1bGUuY2hpbGRyZW4gPSBbXTtc
clxuXHRcdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XHJcblx0XHR9XHJcblx0XHRyZXR1
cm4gbW9kdWxlO1xyXG5cdH1cclxuXG5cbi8qKiovIH0sXG4vKiAyMTIgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdChmdW5jdGlvbihzZWxmKSB7XG5cdCAgJ3VzZSBz
dHJpY3QnO1xuXHRcblx0ICBpZiAoc2VsZi5mZXRjaCkge1xuXHQgICAgcmV0dXJuXG5cdCAgfVxu
XHRcblx0ICB2YXIgc3VwcG9ydCA9IHtcblx0ICAgIHNlYXJjaFBhcmFtczogJ1VSTFNlYXJjaFBh
cmFtcycgaW4gc2VsZixcblx0ICAgIGl0ZXJhYmxlOiAnU3ltYm9sJyBpbiBzZWxmICYmICdpdGVy
YXRvcicgaW4gU3ltYm9sLFxuXHQgICAgYmxvYjogJ0ZpbGVSZWFkZXInIGluIHNlbGYgJiYgJ0Js
b2InIGluIHNlbGYgJiYgKGZ1bmN0aW9uKCkge1xuXHQgICAgICB0cnkge1xuXHQgICAgICAgIG5l
dyBCbG9iKClcblx0ICAgICAgICByZXR1cm4gdHJ1ZVxuXHQgICAgICB9IGNhdGNoKGUpIHtcblx0
ICAgICAgICByZXR1cm4gZmFsc2Vcblx0ICAgICAgfVxuXHQgICAgfSkoKSxcblx0ICAgIGZvcm1E
YXRhOiAnRm9ybURhdGEnIGluIHNlbGYsXG5cdCAgICBhcnJheUJ1ZmZlcjogJ0FycmF5QnVmZmVy
JyBpbiBzZWxmXG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBub3JtYWxpemVOYW1lKG5hbWUpIHtc
blx0ICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcblx0ICAgICAgbmFtZSA9IFN0
cmluZyhuYW1lKVxuXHQgICAgfVxuXHQgICAgaWYgKC9bXmEtejAtOVxcLSMkJSYnKisuXFxeX2B8
fl0vaS50ZXN0KG5hbWUpKSB7XG5cdCAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQg
Y2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1lJylcblx0ICAgIH1cblx0ICAgIHJldHVybiBu
YW1lLnRvTG93ZXJDYXNlKClcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVl
KHZhbHVlKSB7XG5cdCAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuXHQgICAg
ICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSlcblx0ICAgIH1cblx0ICAgIHJldHVybiB2YWx1ZVxuXHQg
IH1cblx0XG5cdCAgLy8gQnVpbGQgYSBkZXN0cnVjdGl2ZSBpdGVyYXRvciBmb3IgdGhlIHZhbHVl
IGxpc3Rcblx0ICBmdW5jdGlvbiBpdGVyYXRvckZvcihpdGVtcykge1xuXHQgICAgdmFyIGl0ZXJh
dG9yID0ge1xuXHQgICAgICBuZXh0OiBmdW5jdGlvbigpIHtcblx0ICAgICAgICB2YXIgdmFsdWUg
PSBpdGVtcy5zaGlmdCgpXG5cdCAgICAgICAgcmV0dXJuIHtkb25lOiB2YWx1ZSA9PT0gdW5kZWZp
bmVkLCB2YWx1ZTogdmFsdWV9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICBpZiAoc3Vw
cG9ydC5pdGVyYWJsZSkge1xuXHQgICAgICBpdGVyYXRvcltTeW1ib2wuaXRlcmF0b3JdID0gZnVu
Y3Rpb24oKSB7XG5cdCAgICAgICAgcmV0dXJuIGl0ZXJhdG9yXG5cdCAgICAgIH1cblx0ICAgIH1c
blx0XG5cdCAgICByZXR1cm4gaXRlcmF0b3Jcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIEhlYWRl
cnMoaGVhZGVycykge1xuXHQgICAgdGhpcy5tYXAgPSB7fVxuXHRcblx0ICAgIGlmIChoZWFkZXJz
IGluc3RhbmNlb2YgSGVhZGVycykge1xuXHQgICAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24o
dmFsdWUsIG5hbWUpIHtcblx0ICAgICAgICB0aGlzLmFwcGVuZChuYW1lLCB2YWx1ZSlcblx0ICAg
ICAgfSwgdGhpcylcblx0XG5cdCAgICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtcblx0ICAgICAgT2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7
XG5cdCAgICAgICAgdGhpcy5hcHBlbmQobmFtZSwgaGVhZGVyc1tuYW1lXSlcblx0ICAgICAgfSwg
dGhpcylcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIEhlYWRlcnMucHJvdG90eXBlLmFwcGVuZCA9
IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG5cdCAgICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1l
KVxuXHQgICAgdmFsdWUgPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcblx0ICAgIHZhciBsaXN0ID0g
dGhpcy5tYXBbbmFtZV1cblx0ICAgIGlmICghbGlzdCkge1xuXHQgICAgICBsaXN0ID0gW11cblx0
ICAgICAgdGhpcy5tYXBbbmFtZV0gPSBsaXN0XG5cdCAgICB9XG5cdCAgICBsaXN0LnB1c2godmFs
dWUpXG5cdCAgfVxuXHRcblx0ICBIZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlv
bihuYW1lKSB7XG5cdCAgICBkZWxldGUgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV1cblx0
ICB9XG5cdFxuXHQgIEhlYWRlcnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKG5hbWUpIHtcblx0
ICAgIHZhciB2YWx1ZXMgPSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxuXHQgICAgcmV0
dXJuIHZhbHVlcyA/IHZhbHVlc1swXSA6IG51bGxcblx0ICB9XG5cdFxuXHQgIEhlYWRlcnMucHJv
dG90eXBlLmdldEFsbCA9IGZ1bmN0aW9uKG5hbWUpIHtcblx0ICAgIHJldHVybiB0aGlzLm1hcFtu
b3JtYWxpemVOYW1lKG5hbWUpXSB8fCBbXVxuXHQgIH1cblx0XG5cdCAgSGVhZGVycy5wcm90b3R5
cGUuaGFzID0gZnVuY3Rpb24obmFtZSkge1xuXHQgICAgcmV0dXJuIHRoaXMubWFwLmhhc093blBy
b3BlcnR5KG5vcm1hbGl6ZU5hbWUobmFtZSkpXG5cdCAgfVxuXHRcblx0ICBIZWFkZXJzLnByb3Rv
dHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuXHQgICAgdGhpcy5tYXBbbm9ybWFs
aXplTmFtZShuYW1lKV0gPSBbbm9ybWFsaXplVmFsdWUodmFsdWUpXVxuXHQgIH1cblx0XG5cdCAg
SGVhZGVycy5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGlzQXJnKSB7
XG5cdCAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLm1hcCkuZm9yRWFjaChmdW5j
dGlvbihuYW1lKSB7XG5cdCAgICAgIHRoaXMubWFwW25hbWVdLmZvckVhY2goZnVuY3Rpb24odmFs
dWUpIHtcblx0ICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHZhbHVlLCBuYW1lLCB0aGlz
KVxuXHQgICAgICB9LCB0aGlzKVxuXHQgICAgfSwgdGhpcylcblx0ICB9XG5cdFxuXHQgIEhlYWRl
cnMucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcblx0ICAgIHZhciBpdGVtcyA9IFtdXG5c
dCAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHsgaXRlbXMucHVzaChuYW1l
KSB9KVxuXHQgICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxuXHQgIH1cblx0XG5cdCAgSGVh
ZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG5cdCAgICB2YXIgaXRlbXMgPSBb
XVxuXHQgICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7IGl0ZW1zLnB1c2godmFsdWUp
IH0pXG5cdCAgICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG5cdCAgfVxuXHRcblx0ICBIZWFk
ZXJzLnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24oKSB7XG5cdCAgICB2YXIgaXRlbXMgPSBb
XVxuXHQgICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7IGl0ZW1zLnB1c2go
W25hbWUsIHZhbHVlXSkgfSlcblx0ICAgIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcblx0ICB9
XG5cdFxuXHQgIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG5cdCAgICBIZWFkZXJzLnByb3RvdHlw
ZVtTeW1ib2wuaXRlcmF0b3JdID0gSGVhZGVycy5wcm90b3R5cGUuZW50cmllc1xuXHQgIH1cblx0
XG5cdCAgZnVuY3Rpb24gY29uc3VtZWQoYm9keSkge1xuXHQgICAgaWYgKGJvZHkuYm9keVVzZWQp
IHtcblx0ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkg
cmVhZCcpKVxuXHQgICAgfVxuXHQgICAgYm9keS5ib2R5VXNlZCA9IHRydWVcblx0ICB9XG5cdFxu
XHQgIGZ1bmN0aW9uIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpIHtcblx0ICAgIHJldHVybiBuZXcg
UHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcblx0ICAgICAgcmVhZGVyLm9ubG9h
ZCA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdClcblx0ICAg
ICAgfVxuXHQgICAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIHJl
amVjdChyZWFkZXIuZXJyb3IpXG5cdCAgICAgIH1cblx0ICAgIH0pXG5cdCAgfVxuXHRcblx0ICBm
dW5jdGlvbiByZWFkQmxvYkFzQXJyYXlCdWZmZXIoYmxvYikge1xuXHQgICAgdmFyIHJlYWRlciA9
IG5ldyBGaWxlUmVhZGVyKClcblx0ICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKVxu
XHQgICAgcmV0dXJuIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG5cdCAgfVxuXHRcblx0ICBmdW5j
dGlvbiByZWFkQmxvYkFzVGV4dChibG9iKSB7XG5cdCAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVS
ZWFkZXIoKVxuXHQgICAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYilcblx0ICAgIHJldHVybiBmaWxl
UmVhZGVyUmVhZHkocmVhZGVyKVxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gQm9keSgpIHtcblx0
ICAgIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXHRcblx0ICAgIHRoaXMuX2luaXRCb2R5ID0gZnVu
Y3Rpb24oYm9keSkge1xuXHQgICAgICB0aGlzLl9ib2R5SW5pdCA9IGJvZHlcblx0ICAgICAgaWYg
KHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuXHQgICAgICAgIHRoaXMuX2JvZHlUZXh0ID0g
Ym9keVxuXHQgICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYiAmJiBCbG9iLnByb3RvdHlwZS5p
c1Byb3RvdHlwZU9mKGJvZHkpKSB7XG5cdCAgICAgICAgdGhpcy5fYm9keUJsb2IgPSBib2R5XG5c
dCAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5mb3JtRGF0YSAmJiBGb3JtRGF0YS5wcm90b3R5cGUu
aXNQcm90b3R5cGVPZihib2R5KSkge1xuXHQgICAgICAgIHRoaXMuX2JvZHlGb3JtRGF0YSA9IGJv
ZHlcblx0ICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQ
YXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcblx0ICAgICAgICB0aGlzLl9i
b2R5VGV4dCA9IGJvZHkudG9TdHJpbmcoKVxuXHQgICAgICB9IGVsc2UgaWYgKCFib2R5KSB7XG5c
dCAgICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuXHQgICAgICB9IGVsc2UgaWYgKHN1cHBvcnQu
YXJyYXlCdWZmZXIgJiYgQXJyYXlCdWZmZXIucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkp
IHtcblx0ICAgICAgICAvLyBPbmx5IHN1cHBvcnQgQXJyYXlCdWZmZXJzIGZvciBQT1NUIG1ldGhv
ZC5cblx0ICAgICAgICAvLyBSZWNlaXZpbmcgQXJyYXlCdWZmZXJzIGhhcHBlbnMgdmlhIEJsb2Jz
LCBpbnN0ZWFkLlxuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRocm93IG5ldyBFcnJvcign
dW5zdXBwb3J0ZWQgQm9keUluaXQgdHlwZScpXG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGlmICgh
dGhpcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcblx0ICAgICAgICBpZiAodHlwZW9m
IGJvZHkgPT09ICdzdHJpbmcnKSB7XG5cdCAgICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250
ZW50LXR5cGUnLCAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04Jylcblx0ICAgICAgICB9IGVsc2Ug
aWYgKHRoaXMuX2JvZHlCbG9iICYmIHRoaXMuX2JvZHlCbG9iLnR5cGUpIHtcblx0ICAgICAgICAg
IHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsIHRoaXMuX2JvZHlCbG9iLnR5cGUpXG5c
dCAgICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJh
bXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcblx0ICAgICAgICAgIHRoaXMuaGVh
ZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29k
ZWQ7Y2hhcnNldD1VVEYtOCcpXG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdFxu
XHQgICAgaWYgKHN1cHBvcnQuYmxvYikge1xuXHQgICAgICB0aGlzLmJsb2IgPSBmdW5jdGlvbigp
IHtcblx0ICAgICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuXHQgICAgICAgIGlm
IChyZWplY3RlZCkge1xuXHQgICAgICAgICAgcmV0dXJuIHJlamVjdGVkXG5cdCAgICAgICAgfVxu
XHRcblx0ICAgICAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcblx0ICAgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG5cdCAgICAgICAgfSBlbHNlIGlmICh0aGlz
Ll9ib2R5Rm9ybURhdGEpIHtcblx0ICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90
IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iJylcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keVRleHRdKSlc
blx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHRoaXMuYXJyYXlCdWZmZXIgPSBm
dW5jdGlvbigpIHtcblx0ICAgICAgICByZXR1cm4gdGhpcy5ibG9iKCkudGhlbihyZWFkQmxvYkFz
QXJyYXlCdWZmZXIpXG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHRoaXMudGV4dCA9IGZ1bmN0aW9u
KCkge1xuXHQgICAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG5cdCAgICAgICAg
aWYgKHJlamVjdGVkKSB7XG5cdCAgICAgICAgICByZXR1cm4gcmVqZWN0ZWRcblx0ICAgICAgICB9
XG5cdFxuXHQgICAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuXHQgICAgICAgICAgcmV0dXJu
IHJlYWRCbG9iQXNUZXh0KHRoaXMuX2JvZHlCbG9iKVxuXHQgICAgICAgIH0gZWxzZSBpZiAodGhp
cy5fYm9keUZvcm1EYXRhKSB7XG5cdCAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5v
dCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCcpXG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpXG5cdCAgICAgICAg
fVxuXHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0aGlzLnRleHQgPSBmdW5jdGlv
bigpIHtcblx0ICAgICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuXHQgICAgICAg
IHJldHVybiByZWplY3RlZCA/IHJlamVjdGVkIDogUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlU
ZXh0KVxuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKHN1cHBvcnQuZm9ybURhdGEp
IHtcblx0ICAgICAgdGhpcy5mb3JtRGF0YSA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIHJldHVy
biB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAg
IHRoaXMuanNvbiA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhl
bihKU09OLnBhcnNlKVxuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiB0aGlzXG5cdCAgfVxuXHRc
blx0ICAvLyBIVFRQIG1ldGhvZHMgd2hvc2UgY2FwaXRhbGl6YXRpb24gc2hvdWxkIGJlIG5vcm1h
bGl6ZWRcblx0ICB2YXIgbWV0aG9kcyA9IFsnREVMRVRFJywgJ0dFVCcsICdIRUFEJywgJ09QVElP
TlMnLCAnUE9TVCcsICdQVVQnXVxuXHRcblx0ICBmdW5jdGlvbiBub3JtYWxpemVNZXRob2QobWV0
aG9kKSB7XG5cdCAgICB2YXIgdXBjYXNlZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpXG5cdCAgICBy
ZXR1cm4gKG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xKSA/IHVwY2FzZWQgOiBtZXRob2Rc
blx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcblx0ICAg
IG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG5cdCAgICB2YXIgYm9keSA9IG9wdGlvbnMuYm9keVxu
XHQgICAgaWYgKFJlcXVlc3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoaW5wdXQpKSB7XG5cdCAg
ICAgIGlmIChpbnB1dC5ib2R5VXNlZCkge1xuXHQgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3Io
J0FscmVhZHkgcmVhZCcpXG5cdCAgICAgIH1cblx0ICAgICAgdGhpcy51cmwgPSBpbnB1dC51cmxc
blx0ICAgICAgdGhpcy5jcmVkZW50aWFscyA9IGlucHV0LmNyZWRlbnRpYWxzXG5cdCAgICAgIGlm
ICghb3B0aW9ucy5oZWFkZXJzKSB7XG5cdCAgICAgICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRl
cnMoaW5wdXQuaGVhZGVycylcblx0ICAgICAgfVxuXHQgICAgICB0aGlzLm1ldGhvZCA9IGlucHV0
Lm1ldGhvZFxuXHQgICAgICB0aGlzLm1vZGUgPSBpbnB1dC5tb2RlXG5cdCAgICAgIGlmICghYm9k
eSkge1xuXHQgICAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXRcblx0ICAgICAgICBpbnB1dC5i
b2R5VXNlZCA9IHRydWVcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdGhpcy51
cmwgPSBpbnB1dFxuXHQgICAgfVxuXHRcblx0ICAgIHRoaXMuY3JlZGVudGlhbHMgPSBvcHRpb25z
LmNyZWRlbnRpYWxzIHx8IHRoaXMuY3JlZGVudGlhbHMgfHwgJ29taXQnXG5cdCAgICBpZiAob3B0
aW9ucy5oZWFkZXJzIHx8ICF0aGlzLmhlYWRlcnMpIHtcblx0ICAgICAgdGhpcy5oZWFkZXJzID0g
bmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuXHQgICAgfVxuXHQgICAgdGhpcy5tZXRob2Qg
PSBub3JtYWxpemVNZXRob2Qob3B0aW9ucy5tZXRob2QgfHwgdGhpcy5tZXRob2QgfHwgJ0dFVCcp
XG5cdCAgICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGxcblx0
ICAgIHRoaXMucmVmZXJyZXIgPSBudWxsXG5cdFxuXHQgICAgaWYgKCh0aGlzLm1ldGhvZCA9PT0g
J0dFVCcgfHwgdGhpcy5tZXRob2QgPT09ICdIRUFEJykgJiYgYm9keSkge1xuXHQgICAgICB0aHJv
dyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0
cycpXG5cdCAgICB9XG5cdCAgICB0aGlzLl9pbml0Qm9keShib2R5KVxuXHQgIH1cblx0XG5cdCAg
UmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcblx0ICAgIHJldHVybiBuZXcg
UmVxdWVzdCh0aGlzKVxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gZGVjb2RlKGJvZHkpIHtcblx0
ICAgIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcblx0ICAgIGJvZHkudHJpbSgpLnNwbGl0KCcm
JykuZm9yRWFjaChmdW5jdGlvbihieXRlcykge1xuXHQgICAgICBpZiAoYnl0ZXMpIHtcblx0ICAg
ICAgICB2YXIgc3BsaXQgPSBieXRlcy5zcGxpdCgnPScpXG5cdCAgICAgICAgdmFyIG5hbWUgPSBz
cGxpdC5zaGlmdCgpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG5cdCAgICAgICAgdmFyIHZhbHVlID0g
c3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG5cdCAgICAgICAgZm9ybS5hcHBl
bmQoZGVjb2RlVVJJQ29tcG9uZW50KG5hbWUpLCBkZWNvZGVVUklDb21wb25lbnQodmFsdWUpKVxu
XHQgICAgICB9XG5cdCAgICB9KVxuXHQgICAgcmV0dXJuIGZvcm1cblx0ICB9XG5cdFxuXHQgIGZ1
bmN0aW9uIGhlYWRlcnMoeGhyKSB7XG5cdCAgICB2YXIgaGVhZCA9IG5ldyBIZWFkZXJzKClcblx0
ICAgIHZhciBwYWlycyA9ICh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgfHwgJycpLnRyaW0o
KS5zcGxpdCgnXFxuJylcblx0ICAgIHBhaXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG5c
dCAgICAgIHZhciBzcGxpdCA9IGhlYWRlci50cmltKCkuc3BsaXQoJzonKVxuXHQgICAgICB2YXIg
a2V5ID0gc3BsaXQuc2hpZnQoKS50cmltKClcblx0ICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9p
bignOicpLnRyaW0oKVxuXHQgICAgICBoZWFkLmFwcGVuZChrZXksIHZhbHVlKVxuXHQgICAgfSlc
blx0ICAgIHJldHVybiBoZWFkXG5cdCAgfVxuXHRcblx0ICBCb2R5LmNhbGwoUmVxdWVzdC5wcm90
b3R5cGUpXG5cdFxuXHQgIGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG5c
dCAgICBpZiAoIW9wdGlvbnMpIHtcblx0ICAgICAgb3B0aW9ucyA9IHt9XG5cdCAgICB9XG5cdFxu
XHQgICAgdGhpcy50eXBlID0gJ2RlZmF1bHQnXG5cdCAgICB0aGlzLnN0YXR1cyA9IG9wdGlvbnMu
c3RhdHVzXG5cdCAgICB0aGlzLm9rID0gdGhpcy5zdGF0dXMgPj0gMjAwICYmIHRoaXMuc3RhdHVz
IDwgMzAwXG5cdCAgICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1c1RleHRcblx0ICAg
IHRoaXMuaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMgPyBvcHRp
b25zLmhlYWRlcnMgOiBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG5cdCAgICB0aGlzLnVy
bCA9IG9wdGlvbnMudXJsIHx8ICcnXG5cdCAgICB0aGlzLl9pbml0Qm9keShib2R5SW5pdClcblx0
ICB9XG5cdFxuXHQgIEJvZHkuY2FsbChSZXNwb25zZS5wcm90b3R5cGUpXG5cdFxuXHQgIFJlc3Bv
bnNlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuXHQgICAgcmV0dXJuIG5ldyBSZXNw
b25zZSh0aGlzLl9ib2R5SW5pdCwge1xuXHQgICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuXHQg
ICAgICBzdGF0dXNUZXh0OiB0aGlzLnN0YXR1c1RleHQsXG5cdCAgICAgIGhlYWRlcnM6IG5ldyBI
ZWFkZXJzKHRoaXMuaGVhZGVycyksXG5cdCAgICAgIHVybDogdGhpcy51cmxcblx0ICAgIH0pXG5c
dCAgfVxuXHRcblx0ICBSZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuXHQgICAgdmFyIHJl
c3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IDAsIHN0YXR1c1RleHQ6ICcnfSlc
blx0ICAgIHJlc3BvbnNlLnR5cGUgPSAnZXJyb3InXG5cdCAgICByZXR1cm4gcmVzcG9uc2Vcblx0
ICB9XG5cdFxuXHQgIHZhciByZWRpcmVjdFN0YXR1c2VzID0gWzMwMSwgMzAyLCAzMDMsIDMwNywg
MzA4XVxuXHRcblx0ICBSZXNwb25zZS5yZWRpcmVjdCA9IGZ1bmN0aW9uKHVybCwgc3RhdHVzKSB7
XG5cdCAgICBpZiAocmVkaXJlY3RTdGF0dXNlcy5pbmRleE9mKHN0YXR1cykgPT09IC0xKSB7XG5c
dCAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcblx0ICAg
IH1cblx0XG5cdCAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IHN0YXR1cywg
aGVhZGVyczoge2xvY2F0aW9uOiB1cmx9fSlcblx0ICB9XG5cdFxuXHQgIHNlbGYuSGVhZGVycyA9
IEhlYWRlcnNcblx0ICBzZWxmLlJlcXVlc3QgPSBSZXF1ZXN0XG5cdCAgc2VsZi5SZXNwb25zZSA9
IFJlc3BvbnNlXG5cdFxuXHQgIHNlbGYuZmV0Y2ggPSBmdW5jdGlvbihpbnB1dCwgaW5pdCkge1xu
XHQgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXHQg
ICAgICB2YXIgcmVxdWVzdFxuXHQgICAgICBpZiAoUmVxdWVzdC5wcm90b3R5cGUuaXNQcm90b3R5
cGVPZihpbnB1dCkgJiYgIWluaXQpIHtcblx0ICAgICAgICByZXF1ZXN0ID0gaW5wdXRcblx0ICAg
ICAgfSBlbHNlIHtcblx0ICAgICAgICByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoaW5wdXQsIGluaXQp
XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKVxu
XHRcblx0ICAgICAgZnVuY3Rpb24gcmVzcG9uc2VVUkwoKSB7XG5cdCAgICAgICAgaWYgKCdyZXNw
b25zZVVSTCcgaW4geGhyKSB7XG5cdCAgICAgICAgICByZXR1cm4geGhyLnJlc3BvbnNlVVJMXG5c
dCAgICAgICAgfVxuXHRcblx0ICAgICAgICAvLyBBdm9pZCBzZWN1cml0eSB3YXJuaW5ncyBvbiBn
ZXRSZXNwb25zZUhlYWRlciB3aGVuIG5vdCBhbGxvd2VkIGJ5IENPUlNcblx0ICAgICAgICBpZiAo
L15YLVJlcXVlc3QtVVJMOi9tLnRlc3QoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSkge1xu
XHQgICAgICAgICAgcmV0dXJuIHhoci5nZXRSZXNwb25zZUhlYWRlcignWC1SZXF1ZXN0LVVSTCcp
XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICByZXR1cm5cblx0ICAgICAgfVxuXHRcblx0ICAg
ICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIHZhciBvcHRpb25zID0ge1xu
XHQgICAgICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzLFxuXHQgICAgICAgICAgc3RhdHVzVGV4dDog
eGhyLnN0YXR1c1RleHQsXG5cdCAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzKHhociksXG5cdCAg
ICAgICAgICB1cmw6IHJlc3BvbnNlVVJMKClcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIGJv
ZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5yZXNwb25zZVRleHRc
blx0ICAgICAgICByZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCBvcHRpb25zKSlcblx0ICAgICAg
fVxuXHRcblx0ICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcblx0ICAgICAgICByZWpl
Y3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuXHQgICAgICB9XG5c
dFxuXHQgICAgICB4aHIub250aW1lb3V0ID0gZnVuY3Rpb24oKSB7XG5cdCAgICAgICAgcmVqZWN0
KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcblx0ICAgICAgfVxuXHRc
blx0ICAgICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIHJlcXVlc3QudXJsLCB0cnVlKVxuXHRc
blx0ICAgICAgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdpbmNsdWRlJykge1xuXHQgICAg
ICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlXG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGlm
ICgncmVzcG9uc2VUeXBlJyBpbiB4aHIgJiYgc3VwcG9ydC5ibG9iKSB7XG5cdCAgICAgICAgeGhy
LnJlc3BvbnNlVHlwZSA9ICdibG9iJ1xuXHQgICAgICB9XG5cdFxuXHQgICAgICByZXF1ZXN0Lmhl
YWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuXHQgICAgICAgIHhoci5zZXRS
ZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKVxuXHQgICAgICB9KVxuXHRcblx0ICAgICAgeGhyLnNl
bmQodHlwZW9mIHJlcXVlc3QuX2JvZHlJbml0ID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiByZXF1
ZXN0Ll9ib2R5SW5pdClcblx0ICAgIH0pXG5cdCAgfVxuXHQgIHNlbGYuZmV0Y2gucG9seWZpbGwg
PSB0cnVlXG5cdH0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzKTtc
blxuXG4vKioqLyB9LFxuLyogMjEzICovXG4zOCxcbi8qIDIxNCAqL1xuWzIzMSwgMjNdLFxuLyog
MjE1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5c
dCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUG9vbGVkQ2xhc3MgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDIxNCk7XG5cdHZhciBSZWFjdEVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDE4KTtcblx0XG5cdHZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtc
blx0dmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyNCk7XG5c
dFxuXHR2YXIgdHdvQXJndW1lbnRQb29sZXIgPSBQb29sZWRDbGFzcy50d29Bcmd1bWVudFBvb2xl
cjtcblx0dmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IFBvb2xlZENsYXNzLmZvdXJBcmd1bWVudFBv
b2xlcjtcblx0XG5cdHZhciB1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCA9IC9cXC8rL2c7XG5c
dGZ1bmN0aW9uIGVzY2FwZVVzZXJQcm92aWRlZEtleSh0ZXh0KSB7XG5cdCAgcmV0dXJuICgnJyAr
IHRleHQpLnJlcGxhY2UodXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXgsICckJi8nKTtcblx0fVxu
XHRcblx0LyoqXG5cdCAqIFBvb2xlZENsYXNzIHJlcHJlc2VudGluZyB0aGUgYm9va2tlZXBpbmcg
YXNzb2NpYXRlZCB3aXRoIHBlcmZvcm1pbmcgYSBjaGlsZFxuXHQgKiB0cmF2ZXJzYWwuIEFsbG93
cyBhdm9pZGluZyBiaW5kaW5nIGNhbGxiYWNrcy5cblx0ICpcblx0ICogQGNvbnN0cnVjdG9yIEZv
ckVhY2hCb29rS2VlcGluZ1xuXHQgKiBAcGFyYW0geyFmdW5jdGlvbn0gZm9yRWFjaEZ1bmN0aW9u
IEZ1bmN0aW9uIHRvIHBlcmZvcm0gdHJhdmVyc2FsIHdpdGguXG5cdCAqIEBwYXJhbSB7Pyp9IGZv
ckVhY2hDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBjb250ZXh0IHdpdGguXG5cdCAqL1xuXHRm
dW5jdGlvbiBGb3JFYWNoQm9va0tlZXBpbmcoZm9yRWFjaEZ1bmN0aW9uLCBmb3JFYWNoQ29udGV4
dCkge1xuXHQgIHRoaXMuZnVuYyA9IGZvckVhY2hGdW5jdGlvbjtcblx0ICB0aGlzLmNvbnRleHQg
PSBmb3JFYWNoQ29udGV4dDtcblx0ICB0aGlzLmNvdW50ID0gMDtcblx0fVxuXHRGb3JFYWNoQm9v
a0tlZXBpbmcucHJvdG90eXBlLmRlc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7XG5cdCAgdGhpcy5m
dW5jID0gbnVsbDtcblx0ICB0aGlzLmNvbnRleHQgPSBudWxsO1xuXHQgIHRoaXMuY291bnQgPSAw
O1xuXHR9O1xuXHRQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oRm9yRWFjaEJvb2tLZWVwaW5nLCB0
d29Bcmd1bWVudFBvb2xlcik7XG5cdFxuXHRmdW5jdGlvbiBmb3JFYWNoU2luZ2xlQ2hpbGQoYm9v
a0tlZXBpbmcsIGNoaWxkLCBuYW1lKSB7XG5cdCAgdmFyIGZ1bmMgPSBib29rS2VlcGluZy5mdW5j
LFxuXHQgICAgICBjb250ZXh0ID0gYm9va0tlZXBpbmcuY29udGV4dDtcblx0XG5cdCAgZnVuYy5j
YWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGluZy5jb3VudCsrKTtcblx0fVxuXHRcblx0Lyoq
XG5cdCAqIEl0ZXJhdGVzIHRocm91Z2ggY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNp
ZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLlxuXHQgKlxuXHQgKiBTZWUgaHR0cHM6Ly9mYWNlYm9v
ay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4u
Zm9yZWFjaFxuXHQgKlxuXHQgKiBUaGUgcHJvdmlkZWQgZm9yRWFjaEZ1bmMoY2hpbGQsIGluZGV4
KSB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaFxuXHQgKiBsZWFmIGNoaWxkLlxuXHQgKlxuXHQgKiBA
cGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cblx0ICogQHBhcmFt
IHtmdW5jdGlvbigqLCBpbnQpfSBmb3JFYWNoRnVuY1xuXHQgKiBAcGFyYW0geyp9IGZvckVhY2hD
b250ZXh0IENvbnRleHQgZm9yIGZvckVhY2hDb250ZXh0LlxuXHQgKi9cblx0ZnVuY3Rpb24gZm9y
RWFjaENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoRnVuYywgZm9yRWFjaENvbnRleHQpIHtcblx0
ICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuXHQgICAgcmV0dXJuIGNoaWxkcmVuO1xuXHQgIH1c
blx0ICB2YXIgdHJhdmVyc2VDb250ZXh0ID0gRm9yRWFjaEJvb2tLZWVwaW5nLmdldFBvb2xlZChm
b3JFYWNoRnVuYywgZm9yRWFjaENvbnRleHQpO1xuXHQgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hp
bGRyZW4sIGZvckVhY2hTaW5nbGVDaGlsZCwgdHJhdmVyc2VDb250ZXh0KTtcblx0ICBGb3JFYWNo
Qm9va0tlZXBpbmcucmVsZWFzZSh0cmF2ZXJzZUNvbnRleHQpO1xuXHR9XG5cdFxuXHQvKipcblx0
ICogUG9vbGVkQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBib29ra2VlcGluZyBhc3NvY2lhdGVkIHdp
dGggcGVyZm9ybWluZyBhIGNoaWxkXG5cdCAqIG1hcHBpbmcuIEFsbG93cyBhdm9pZGluZyBiaW5k
aW5nIGNhbGxiYWNrcy5cblx0ICpcblx0ICogQGNvbnN0cnVjdG9yIE1hcEJvb2tLZWVwaW5nXG5c
dCAqIEBwYXJhbSB7ISp9IG1hcFJlc3VsdCBPYmplY3QgY29udGFpbmluZyB0aGUgb3JkZXJlZCBt
YXAgb2YgcmVzdWx0cy5cblx0ICogQHBhcmFtIHshZnVuY3Rpb259IG1hcEZ1bmN0aW9uIEZ1bmN0
aW9uIHRvIHBlcmZvcm0gbWFwcGluZyB3aXRoLlxuXHQgKiBAcGFyYW0gez8qfSBtYXBDb250ZXh0
IENvbnRleHQgdG8gcGVyZm9ybSBtYXBwaW5nIHdpdGguXG5cdCAqL1xuXHRmdW5jdGlvbiBNYXBC
b29rS2VlcGluZyhtYXBSZXN1bHQsIGtleVByZWZpeCwgbWFwRnVuY3Rpb24sIG1hcENvbnRleHQp
IHtcblx0ICB0aGlzLnJlc3VsdCA9IG1hcFJlc3VsdDtcblx0ICB0aGlzLmtleVByZWZpeCA9IGtl
eVByZWZpeDtcblx0ICB0aGlzLmZ1bmMgPSBtYXBGdW5jdGlvbjtcblx0ICB0aGlzLmNvbnRleHQg
PSBtYXBDb250ZXh0O1xuXHQgIHRoaXMuY291bnQgPSAwO1xuXHR9XG5cdE1hcEJvb2tLZWVwaW5n
LnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkge1xuXHQgIHRoaXMucmVzdWx0ID0g
bnVsbDtcblx0ICB0aGlzLmtleVByZWZpeCA9IG51bGw7XG5cdCAgdGhpcy5mdW5jID0gbnVsbDtc
blx0ICB0aGlzLmNvbnRleHQgPSBudWxsO1xuXHQgIHRoaXMuY291bnQgPSAwO1xuXHR9O1xuXHRQ
b29sZWRDbGFzcy5hZGRQb29saW5nVG8oTWFwQm9va0tlZXBpbmcsIGZvdXJBcmd1bWVudFBvb2xl
cik7XG5cdFxuXHRmdW5jdGlvbiBtYXBTaW5nbGVDaGlsZEludG9Db250ZXh0KGJvb2tLZWVwaW5n
LCBjaGlsZCwgY2hpbGRLZXkpIHtcblx0ICB2YXIgcmVzdWx0ID0gYm9va0tlZXBpbmcucmVzdWx0
LFxuXHQgICAgICBrZXlQcmVmaXggPSBib29rS2VlcGluZy5rZXlQcmVmaXgsXG5cdCAgICAgIGZ1
bmMgPSBib29rS2VlcGluZy5mdW5jLFxuXHQgICAgICBjb250ZXh0ID0gYm9va0tlZXBpbmcuY29u
dGV4dDtcblx0XG5cdFxuXHQgIHZhciBtYXBwZWRDaGlsZCA9IGZ1bmMuY2FsbChjb250ZXh0LCBj
aGlsZCwgYm9va0tlZXBpbmcuY291bnQrKyk7XG5cdCAgaWYgKEFycmF5LmlzQXJyYXkobWFwcGVk
Q2hpbGQpKSB7XG5cdCAgICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKG1hcHBlZENoaWxk
LCByZXN1bHQsIGNoaWxkS2V5LCBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQpO1xu
XHQgIH0gZWxzZSBpZiAobWFwcGVkQ2hpbGQgIT0gbnVsbCkge1xuXHQgICAgaWYgKFJlYWN0RWxl
bWVudC5pc1ZhbGlkRWxlbWVudChtYXBwZWRDaGlsZCkpIHtcblx0ICAgICAgbWFwcGVkQ2hpbGQg
PSBSZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlS2V5KG1hcHBlZENoaWxkLFxuXHQgICAgICAv
LyBLZWVwIGJvdGggdGhlIChtYXBwZWQpIGFuZCBvbGQga2V5cyBpZiB0aGV5IGRpZmZlciwganVz
dCBhc1xuXHQgICAgICAvLyB0cmF2ZXJzZUFsbENoaWxkcmVuIHVzZWQgdG8gZG8gZm9yIG9iamVj
dHMgYXMgY2hpbGRyZW5cblx0ICAgICAga2V5UHJlZml4ICsgKG1hcHBlZENoaWxkLmtleSAmJiAo
IWNoaWxkIHx8IGNoaWxkLmtleSAhPT0gbWFwcGVkQ2hpbGQua2V5KSA/IGVzY2FwZVVzZXJQcm92
aWRlZEtleShtYXBwZWRDaGlsZC5rZXkpICsgJy8nIDogJycpICsgY2hpbGRLZXkpO1xuXHQgICAg
fVxuXHQgICAgcmVzdWx0LnB1c2gobWFwcGVkQ2hpbGQpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVu
Y3Rpb24gbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgYXJyYXksIHByZWZp
eCwgZnVuYywgY29udGV4dCkge1xuXHQgIHZhciBlc2NhcGVkUHJlZml4ID0gJyc7XG5cdCAgaWYg
KHByZWZpeCAhPSBudWxsKSB7XG5cdCAgICBlc2NhcGVkUHJlZml4ID0gZXNjYXBlVXNlclByb3Zp
ZGVkS2V5KHByZWZpeCkgKyAnLyc7XG5cdCAgfVxuXHQgIHZhciB0cmF2ZXJzZUNvbnRleHQgPSBN
YXBCb29rS2VlcGluZy5nZXRQb29sZWQoYXJyYXksIGVzY2FwZWRQcmVmaXgsIGZ1bmMsIGNvbnRl
eHQpO1xuXHQgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIG1hcFNpbmdsZUNoaWxkSW50
b0NvbnRleHQsIHRyYXZlcnNlQ29udGV4dCk7XG5cdCAgTWFwQm9va0tlZXBpbmcucmVsZWFzZSh0
cmF2ZXJzZUNvbnRleHQpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogTWFwcyBjaGlsZHJlbiB0aGF0
IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuXG5cdCAqXG5cdCAq
IFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGku
aHRtbCNyZWFjdC5jaGlsZHJlbi5tYXBcblx0ICpcblx0ICogVGhlIHByb3ZpZGVkIG1hcEZ1bmN0
aW9uKGNoaWxkLCBrZXksIGluZGV4KSB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaFxuXHQgKiBsZWFm
IGNoaWxkLlxuXHQgKlxuXHQgKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNv
bnRhaW5lci5cblx0ICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmdW5jIFRoZSBtYXAgZnVu
Y3Rpb24uXG5cdCAqIEBwYXJhbSB7Kn0gY29udGV4dCBDb250ZXh0IGZvciBtYXBGdW5jdGlvbi5c
blx0ICogQHJldHVybiB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyB0aGUgb3JkZXJlZCBtYXAg
b2YgcmVzdWx0cy5cblx0ICovXG5cdGZ1bmN0aW9uIG1hcENoaWxkcmVuKGNoaWxkcmVuLCBmdW5j
LCBjb250ZXh0KSB7XG5cdCAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcblx0ICAgIHJldHVybiBj
aGlsZHJlbjtcblx0ICB9XG5cdCAgdmFyIHJlc3VsdCA9IFtdO1xuXHQgIG1hcEludG9XaXRoS2V5
UHJlZml4SW50ZXJuYWwoY2hpbGRyZW4sIHJlc3VsdCwgbnVsbCwgZnVuYywgY29udGV4dCk7XG5c
dCAgcmV0dXJuIHJlc3VsdDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZm9yRWFjaFNpbmdsZUNoaWxk
RHVtbXkodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkge1xuXHQgIHJldHVybiBudWxsO1xu
XHR9XG5cdFxuXHQvKipcblx0ICogQ291bnQgdGhlIG51bWJlciBvZiBjaGlsZHJlbiB0aGF0IGFy
ZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzXG5cdCAqIGBwcm9wcy5jaGlsZHJlbmAuXG5cdCAqXG5c
dCAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1h
cGkuaHRtbCNyZWFjdC5jaGlsZHJlbi5jb3VudFxuXHQgKlxuXHQgKiBAcGFyYW0gez8qfSBjaGls
ZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cblx0ICogQHJldHVybiB7bnVtYmVyfSBUaGUg
bnVtYmVyIG9mIGNoaWxkcmVuLlxuXHQgKi9cblx0ZnVuY3Rpb24gY291bnRDaGlsZHJlbihjaGls
ZHJlbiwgY29udGV4dCkge1xuXHQgIHJldHVybiB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVu
LCBmb3JFYWNoU2luZ2xlQ2hpbGREdW1teSwgbnVsbCk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBG
bGF0dGVuIGEgY2hpbGRyZW4gb2JqZWN0ICh0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5j
aGlsZHJlbmApIGFuZFxuXHQgKiByZXR1cm4gYW4gYXJyYXkgd2l0aCBhcHByb3ByaWF0ZWx5IHJl
LWtleWVkIGNoaWxkcmVuLlxuXHQgKlxuXHQgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIu
aW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4udG9hcnJheVxu
XHQgKi9cblx0ZnVuY3Rpb24gdG9BcnJheShjaGlsZHJlbikge1xuXHQgIHZhciByZXN1bHQgPSBb
XTtcblx0ICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKGNoaWxkcmVuLCByZXN1bHQsIG51
bGwsIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCk7XG5cdCAgcmV0dXJuIHJlc3Vs
dDtcblx0fVxuXHRcblx0dmFyIFJlYWN0Q2hpbGRyZW4gPSB7XG5cdCAgZm9yRWFjaDogZm9yRWFj
aENoaWxkcmVuLFxuXHQgIG1hcDogbWFwQ2hpbGRyZW4sXG5cdCAgbWFwSW50b1dpdGhLZXlQcmVm
aXhJbnRlcm5hbDogbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbCxcblx0ICBjb3VudDogY291
bnRDaGlsZHJlbixcblx0ICB0b0FycmF5OiB0b0FycmF5XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IFJlYWN0Q2hpbGRyZW47XG5cbi8qKiovIH0sXG4vKiAyMTYgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdHZhciBSZWFjdEVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KTtcblx0
XG5cdC8qKlxuXHQgKiBDcmVhdGUgYSBmYWN0b3J5IHRoYXQgY3JlYXRlcyBIVE1MIHRhZyBlbGVt
ZW50cy5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHZhciBjcmVhdGVET01GYWN0b3J5
ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUZhY3Rvcnk7XG5cdGlmIChmYWxzZSkge1xuXHQgIHZhciBS
ZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudFZhbGlkYXRvcicp
O1xuXHQgIGNyZWF0ZURPTUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFj
dG9yeTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBtYXBwaW5nIGZyb20gc3VwcG9y
dGVkIEhUTUwgdGFncyB0byBgUmVhY3RET01Db21wb25lbnRgIGNsYXNzZXMuXG5cdCAqXG5cdCAq
IEBwdWJsaWNcblx0ICovXG5cdHZhciBSZWFjdERPTUZhY3RvcmllcyA9IHtcblx0ICBhOiBjcmVh
dGVET01GYWN0b3J5KCdhJyksXG5cdCAgYWJicjogY3JlYXRlRE9NRmFjdG9yeSgnYWJicicpLFxu
XHQgIGFkZHJlc3M6IGNyZWF0ZURPTUZhY3RvcnkoJ2FkZHJlc3MnKSxcblx0ICBhcmVhOiBjcmVh
dGVET01GYWN0b3J5KCdhcmVhJyksXG5cdCAgYXJ0aWNsZTogY3JlYXRlRE9NRmFjdG9yeSgnYXJ0
aWNsZScpLFxuXHQgIGFzaWRlOiBjcmVhdGVET01GYWN0b3J5KCdhc2lkZScpLFxuXHQgIGF1ZGlv
OiBjcmVhdGVET01GYWN0b3J5KCdhdWRpbycpLFxuXHQgIGI6IGNyZWF0ZURPTUZhY3RvcnkoJ2In
KSxcblx0ICBiYXNlOiBjcmVhdGVET01GYWN0b3J5KCdiYXNlJyksXG5cdCAgYmRpOiBjcmVhdGVE
T01GYWN0b3J5KCdiZGknKSxcblx0ICBiZG86IGNyZWF0ZURPTUZhY3RvcnkoJ2JkbycpLFxuXHQg
IGJpZzogY3JlYXRlRE9NRmFjdG9yeSgnYmlnJyksXG5cdCAgYmxvY2txdW90ZTogY3JlYXRlRE9N
RmFjdG9yeSgnYmxvY2txdW90ZScpLFxuXHQgIGJvZHk6IGNyZWF0ZURPTUZhY3RvcnkoJ2JvZHkn
KSxcblx0ICBicjogY3JlYXRlRE9NRmFjdG9yeSgnYnInKSxcblx0ICBidXR0b246IGNyZWF0ZURP
TUZhY3RvcnkoJ2J1dHRvbicpLFxuXHQgIGNhbnZhczogY3JlYXRlRE9NRmFjdG9yeSgnY2FudmFz
JyksXG5cdCAgY2FwdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnY2FwdGlvbicpLFxuXHQgIGNpdGU6
IGNyZWF0ZURPTUZhY3RvcnkoJ2NpdGUnKSxcblx0ICBjb2RlOiBjcmVhdGVET01GYWN0b3J5KCdj
b2RlJyksXG5cdCAgY29sOiBjcmVhdGVET01GYWN0b3J5KCdjb2wnKSxcblx0ICBjb2xncm91cDog
Y3JlYXRlRE9NRmFjdG9yeSgnY29sZ3JvdXAnKSxcblx0ICBkYXRhOiBjcmVhdGVET01GYWN0b3J5
KCdkYXRhJyksXG5cdCAgZGF0YWxpc3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ2RhdGFsaXN0JyksXG5c
dCAgZGQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2RkJyksXG5cdCAgZGVsOiBjcmVhdGVET01GYWN0b3J5
KCdkZWwnKSxcblx0ICBkZXRhaWxzOiBjcmVhdGVET01GYWN0b3J5KCdkZXRhaWxzJyksXG5cdCAg
ZGZuOiBjcmVhdGVET01GYWN0b3J5KCdkZm4nKSxcblx0ICBkaWFsb2c6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2RpYWxvZycpLFxuXHQgIGRpdjogY3JlYXRlRE9NRmFjdG9yeSgnZGl2JyksXG5cdCAgZGw6
IGNyZWF0ZURPTUZhY3RvcnkoJ2RsJyksXG5cdCAgZHQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2R0Jyks
XG5cdCAgZW06IGNyZWF0ZURPTUZhY3RvcnkoJ2VtJyksXG5cdCAgZW1iZWQ6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2VtYmVkJyksXG5cdCAgZmllbGRzZXQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2ZpZWxkc2V0
JyksXG5cdCAgZmlnY2FwdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnZmlnY2FwdGlvbicpLFxuXHQg
IGZpZ3VyZTogY3JlYXRlRE9NRmFjdG9yeSgnZmlndXJlJyksXG5cdCAgZm9vdGVyOiBjcmVhdGVE
T01GYWN0b3J5KCdmb290ZXInKSxcblx0ICBmb3JtOiBjcmVhdGVET01GYWN0b3J5KCdmb3JtJyks
XG5cdCAgaDE6IGNyZWF0ZURPTUZhY3RvcnkoJ2gxJyksXG5cdCAgaDI6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2gyJyksXG5cdCAgaDM6IGNyZWF0ZURPTUZhY3RvcnkoJ2gzJyksXG5cdCAgaDQ6IGNyZWF0
ZURPTUZhY3RvcnkoJ2g0JyksXG5cdCAgaDU6IGNyZWF0ZURPTUZhY3RvcnkoJ2g1JyksXG5cdCAg
aDY6IGNyZWF0ZURPTUZhY3RvcnkoJ2g2JyksXG5cdCAgaGVhZDogY3JlYXRlRE9NRmFjdG9yeSgn
aGVhZCcpLFxuXHQgIGhlYWRlcjogY3JlYXRlRE9NRmFjdG9yeSgnaGVhZGVyJyksXG5cdCAgaGdy
b3VwOiBjcmVhdGVET01GYWN0b3J5KCdoZ3JvdXAnKSxcblx0ICBocjogY3JlYXRlRE9NRmFjdG9y
eSgnaHInKSxcblx0ICBodG1sOiBjcmVhdGVET01GYWN0b3J5KCdodG1sJyksXG5cdCAgaTogY3Jl
YXRlRE9NRmFjdG9yeSgnaScpLFxuXHQgIGlmcmFtZTogY3JlYXRlRE9NRmFjdG9yeSgnaWZyYW1l
JyksXG5cdCAgaW1nOiBjcmVhdGVET01GYWN0b3J5KCdpbWcnKSxcblx0ICBpbnB1dDogY3JlYXRl
RE9NRmFjdG9yeSgnaW5wdXQnKSxcblx0ICBpbnM6IGNyZWF0ZURPTUZhY3RvcnkoJ2lucycpLFxu
XHQgIGtiZDogY3JlYXRlRE9NRmFjdG9yeSgna2JkJyksXG5cdCAga2V5Z2VuOiBjcmVhdGVET01G
YWN0b3J5KCdrZXlnZW4nKSxcblx0ICBsYWJlbDogY3JlYXRlRE9NRmFjdG9yeSgnbGFiZWwnKSxc
blx0ICBsZWdlbmQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2xlZ2VuZCcpLFxuXHQgIGxpOiBjcmVhdGVE
T01GYWN0b3J5KCdsaScpLFxuXHQgIGxpbms6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmsnKSxcblx0
ICBtYWluOiBjcmVhdGVET01GYWN0b3J5KCdtYWluJyksXG5cdCAgbWFwOiBjcmVhdGVET01GYWN0
b3J5KCdtYXAnKSxcblx0ICBtYXJrOiBjcmVhdGVET01GYWN0b3J5KCdtYXJrJyksXG5cdCAgbWVu
dTogY3JlYXRlRE9NRmFjdG9yeSgnbWVudScpLFxuXHQgIG1lbnVpdGVtOiBjcmVhdGVET01GYWN0
b3J5KCdtZW51aXRlbScpLFxuXHQgIG1ldGE6IGNyZWF0ZURPTUZhY3RvcnkoJ21ldGEnKSxcblx0
ICBtZXRlcjogY3JlYXRlRE9NRmFjdG9yeSgnbWV0ZXInKSxcblx0ICBuYXY6IGNyZWF0ZURPTUZh
Y3RvcnkoJ25hdicpLFxuXHQgIG5vc2NyaXB0OiBjcmVhdGVET01GYWN0b3J5KCdub3NjcmlwdCcp
LFxuXHQgIG9iamVjdDogY3JlYXRlRE9NRmFjdG9yeSgnb2JqZWN0JyksXG5cdCAgb2w6IGNyZWF0
ZURPTUZhY3RvcnkoJ29sJyksXG5cdCAgb3B0Z3JvdXA6IGNyZWF0ZURPTUZhY3RvcnkoJ29wdGdy
b3VwJyksXG5cdCAgb3B0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdvcHRpb24nKSxcblx0ICBvdXRw
dXQ6IGNyZWF0ZURPTUZhY3RvcnkoJ291dHB1dCcpLFxuXHQgIHA6IGNyZWF0ZURPTUZhY3Rvcnko
J3AnKSxcblx0ICBwYXJhbTogY3JlYXRlRE9NRmFjdG9yeSgncGFyYW0nKSxcblx0ICBwaWN0dXJl
OiBjcmVhdGVET01GYWN0b3J5KCdwaWN0dXJlJyksXG5cdCAgcHJlOiBjcmVhdGVET01GYWN0b3J5
KCdwcmUnKSxcblx0ICBwcm9ncmVzczogY3JlYXRlRE9NRmFjdG9yeSgncHJvZ3Jlc3MnKSxcblx0
ICBxOiBjcmVhdGVET01GYWN0b3J5KCdxJyksXG5cdCAgcnA6IGNyZWF0ZURPTUZhY3RvcnkoJ3Jw
JyksXG5cdCAgcnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3J0JyksXG5cdCAgcnVieTogY3JlYXRlRE9N
RmFjdG9yeSgncnVieScpLFxuXHQgIHM6IGNyZWF0ZURPTUZhY3RvcnkoJ3MnKSxcblx0ICBzYW1w
OiBjcmVhdGVET01GYWN0b3J5KCdzYW1wJyksXG5cdCAgc2NyaXB0OiBjcmVhdGVET01GYWN0b3J5
KCdzY3JpcHQnKSxcblx0ICBzZWN0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdzZWN0aW9uJyksXG5c
dCAgc2VsZWN0OiBjcmVhdGVET01GYWN0b3J5KCdzZWxlY3QnKSxcblx0ICBzbWFsbDogY3JlYXRl
RE9NRmFjdG9yeSgnc21hbGwnKSxcblx0ICBzb3VyY2U6IGNyZWF0ZURPTUZhY3RvcnkoJ3NvdXJj
ZScpLFxuXHQgIHNwYW46IGNyZWF0ZURPTUZhY3RvcnkoJ3NwYW4nKSxcblx0ICBzdHJvbmc6IGNy
ZWF0ZURPTUZhY3RvcnkoJ3N0cm9uZycpLFxuXHQgIHN0eWxlOiBjcmVhdGVET01GYWN0b3J5KCdz
dHlsZScpLFxuXHQgIHN1YjogY3JlYXRlRE9NRmFjdG9yeSgnc3ViJyksXG5cdCAgc3VtbWFyeTog
Y3JlYXRlRE9NRmFjdG9yeSgnc3VtbWFyeScpLFxuXHQgIHN1cDogY3JlYXRlRE9NRmFjdG9yeSgn
c3VwJyksXG5cdCAgdGFibGU6IGNyZWF0ZURPTUZhY3RvcnkoJ3RhYmxlJyksXG5cdCAgdGJvZHk6
IGNyZWF0ZURPTUZhY3RvcnkoJ3Rib2R5JyksXG5cdCAgdGQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rk
JyksXG5cdCAgdGV4dGFyZWE6IGNyZWF0ZURPTUZhY3RvcnkoJ3RleHRhcmVhJyksXG5cdCAgdGZv
b3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rmb290JyksXG5cdCAgdGg6IGNyZWF0ZURPTUZhY3Rvcnko
J3RoJyksXG5cdCAgdGhlYWQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RoZWFkJyksXG5cdCAgdGltZTog
Y3JlYXRlRE9NRmFjdG9yeSgndGltZScpLFxuXHQgIHRpdGxlOiBjcmVhdGVET01GYWN0b3J5KCd0
aXRsZScpLFxuXHQgIHRyOiBjcmVhdGVET01GYWN0b3J5KCd0cicpLFxuXHQgIHRyYWNrOiBjcmVh
dGVET01GYWN0b3J5KCd0cmFjaycpLFxuXHQgIHU6IGNyZWF0ZURPTUZhY3RvcnkoJ3UnKSxcblx0
ICB1bDogY3JlYXRlRE9NRmFjdG9yeSgndWwnKSxcblx0ICAndmFyJzogY3JlYXRlRE9NRmFjdG9y
eSgndmFyJyksXG5cdCAgdmlkZW86IGNyZWF0ZURPTUZhY3RvcnkoJ3ZpZGVvJyksXG5cdCAgd2Jy
OiBjcmVhdGVET01GYWN0b3J5KCd3YnInKSxcblx0XG5cdCAgLy8gU1ZHXG5cdCAgY2lyY2xlOiBj
cmVhdGVET01GYWN0b3J5KCdjaXJjbGUnKSxcblx0ICBjbGlwUGF0aDogY3JlYXRlRE9NRmFjdG9y
eSgnY2xpcFBhdGgnKSxcblx0ICBkZWZzOiBjcmVhdGVET01GYWN0b3J5KCdkZWZzJyksXG5cdCAg
ZWxsaXBzZTogY3JlYXRlRE9NRmFjdG9yeSgnZWxsaXBzZScpLFxuXHQgIGc6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2cnKSxcblx0ICBpbWFnZTogY3JlYXRlRE9NRmFjdG9yeSgnaW1hZ2UnKSxcblx0ICBs
aW5lOiBjcmVhdGVET01GYWN0b3J5KCdsaW5lJyksXG5cdCAgbGluZWFyR3JhZGllbnQ6IGNyZWF0
ZURPTUZhY3RvcnkoJ2xpbmVhckdyYWRpZW50JyksXG5cdCAgbWFzazogY3JlYXRlRE9NRmFjdG9y
eSgnbWFzaycpLFxuXHQgIHBhdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ3BhdGgnKSxcblx0ICBwYXR0
ZXJuOiBjcmVhdGVET01GYWN0b3J5KCdwYXR0ZXJuJyksXG5cdCAgcG9seWdvbjogY3JlYXRlRE9N
RmFjdG9yeSgncG9seWdvbicpLFxuXHQgIHBvbHlsaW5lOiBjcmVhdGVET01GYWN0b3J5KCdwb2x5
bGluZScpLFxuXHQgIHJhZGlhbEdyYWRpZW50OiBjcmVhdGVET01GYWN0b3J5KCdyYWRpYWxHcmFk
aWVudCcpLFxuXHQgIHJlY3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3JlY3QnKSxcblx0ICBzdG9wOiBj
cmVhdGVET01GYWN0b3J5KCdzdG9wJyksXG5cdCAgc3ZnOiBjcmVhdGVET01GYWN0b3J5KCdzdmcn
KSxcblx0ICB0ZXh0OiBjcmVhdGVET01GYWN0b3J5KCd0ZXh0JyksXG5cdCAgdHNwYW46IGNyZWF0
ZURPTUZhY3RvcnkoJ3RzcGFuJylcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RE
T01GYWN0b3JpZXM7XG5cbi8qKiovIH0sXG4vKiAyMTcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5c
dHZhciBfcmVxdWlyZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpLFxuXHQgICAgaXNWYWxpZEVs
ZW1lbnQgPSBfcmVxdWlyZS5pc1ZhbGlkRWxlbWVudDtcblx0XG5cdHZhciBmYWN0b3J5ID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg1NSk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoaXNW
YWxpZEVsZW1lbnQpO1xuXG4vKioqLyB9LFxuLyogMjE4ICovXG4xNjMsXG4vKiAyMTkgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcmVxdWlyZSA9IF9fd2VicGFja19yZXF1aXJlX18oODkp
LFxuXHQgICAgQ29tcG9uZW50ID0gX3JlcXVpcmUuQ29tcG9uZW50O1xuXHRcblx0dmFyIF9yZXF1
aXJlMiA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpLFxuXHQgICAgaXNWYWxpZEVsZW1lbnQgPSBf
cmVxdWlyZTIuaXNWYWxpZEVsZW1lbnQ7XG5cdFxuXHR2YXIgUmVhY3ROb29wVXBkYXRlUXVldWUg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkyKTtcblx0dmFyIGZhY3RvcnkgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDk3KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShDb21wb25lbnQsIGlz
VmFsaWRFbGVtZW50LCBSZWFjdE5vb3BVcGRhdGVRdWV1ZSk7XG5cbi8qKiovIH0sXG4vKiAyMjAg
Ki9cbjE4Mixcbi8qIDIyMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5c
blx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBuZXh0RGVidWdJRCA9IDE7XG5cdFxuXHRm
dW5jdGlvbiBnZXROZXh0RGVidWdJRCgpIHtcblx0ICByZXR1cm4gbmV4dERlYnVnSUQrKztcblx0
fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBnZXROZXh0RGVidWdJRDtcblxuLyoqKi8gfSxcbi8q
IDIyMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMu
XG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xu
XHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIEZvcmtlZCBmcm9tIGZianMvd2Fy
bmluZzpcblx0ICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2ZianMvYmxvYi9lNjZiYTIw
YWQ1YmU0MzNlYjU0NDIzZjJiMDk3ZDgyOTMyNGQ5ZGU2L3BhY2thZ2VzL2ZianMvc3JjL19fZm9y
a3NfXy93YXJuaW5nLmpzXG5cdCAqXG5cdCAqIE9ubHkgY2hhbmdlIGlzIHdlIHVzZSBjb25zb2xl
Lndhcm4gaW5zdGVhZCBvZiBjb25zb2xlLmVycm9yLFxuXHQgKiBhbmQgZG8gbm90aGluZyB3aGVu
ICdjb25zb2xlJyBpcyBub3Qgc3VwcG9ydGVkLlxuXHQgKiBUaGlzIHJlYWxseSBzaW1wbGlmaWVz
IHRoZSBjb2RlLlxuXHQgKiAtLS1cblx0ICogU2ltaWxhciB0byBpbnZhcmlhbnQgYnV0IG9ubHkg
bG9ncyBhIHdhcm5pbmcgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0LlxuXHQgKiBUaGlzIGNh
biBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNy
aXRpY2FsXG5cdCAqIHBhdGhzLiBSZW1vdmluZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9kdWN0
aW9uIGVudmlyb25tZW50cyB3aWxsIGtlZXAgdGhlXG5cdCAqIHNhbWUgbG9naWMgYW5kIGZvbGxv
dyB0aGUgc2FtZSBjb2RlIHBhdGhzLlxuXHQgKi9cblx0XG5cdHZhciBsb3dQcmlvcml0eVdhcm5p
bmcgPSBmdW5jdGlvbiAoKSB7fTtcblx0XG5cdGlmIChmYWxzZSkge1xuXHQgIHZhciBwcmludFdh
cm5pbmcgPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG5cdCAgICBmb3IgKHZhciBfbGVuID0gYXJndW1l
bnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9
IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcblx0ICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1
bWVudHNbX2tleV07XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGFyZ0luZGV4ID0gMDtcblx0ICAg
IHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rp
b24gKCkge1xuXHQgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcblx0ICAgIH0pO1xuXHQg
ICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuXHQgICAgICBjb25zb2xl
Lndhcm4obWVzc2FnZSk7XG5cdCAgICB9XG5cdCAgICB0cnkge1xuXHQgICAgICAvLyAtLS0gV2Vs
Y29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXG5cdCAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRo
cm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuXHQg
ICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8g
ZmlyZS5cblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuXHQgICAgfSBjYXRjaCAo
eCkge31cblx0ICB9O1xuXHRcblx0ICBsb3dQcmlvcml0eVdhcm5pbmcgPSBmdW5jdGlvbiAoY29u
ZGl0aW9uLCBmb3JtYXQpIHtcblx0ICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuXHQg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2B3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdz
KWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgKyAnbWVzc2FnZSBhcmd1bWVudCcpO1xuXHQgICAgfVxu
XHQgICAgaWYgKCFjb25kaXRpb24pIHtcblx0ICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVu
dHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIgPiAyID8gX2xlbjIgLSAyIDogMCksIF9rZXky
ID0gMjsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuXHQgICAgICAgIGFyZ3NbX2tleTIgLSAy
XSA9IGFyZ3VtZW50c1tfa2V5Ml07XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHByaW50V2Fybmlu
Zy5hcHBseSh1bmRlZmluZWQsIFtmb3JtYXRdLmNvbmNhdChhcmdzKSk7XG5cdCAgICB9XG5cdCAg
fTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBsb3dQcmlvcml0eVdhcm5pbmc7XG5cbi8q
KiovIH0sXG4vKiAyMjMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
XHQgKlxuXHQgKi9cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygyMyk7XG5cdFxuXHR2YXIgUmVhY3RFbGVtZW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxOCk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBpbiBhIGNv
bGxlY3Rpb24gb2YgY2hpbGRyZW4gYW5kIHZlcmlmaWVzIHRoYXQgdGhlcmVcblx0ICogaXMgb25s
eSBvbmUgY2hpbGQgaW4gdGhlIGNvbGxlY3Rpb24uXG5cdCAqXG5cdCAqIFNlZSBodHRwczovL2Zh
Y2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGls
ZHJlbi5vbmx5XG5cdCAqXG5cdCAqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMg
ZnVuY3Rpb24gYXNzdW1lcyB0aGF0IGEgc2luZ2xlIGNoaWxkIGdldHNcblx0ICogcGFzc2VkIHdp
dGhvdXQgYSB3cmFwcGVyLCBidXQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBoZWxwZXIgZnVuY3Rpb24g
aXMgdG9cblx0ICogYWJzdHJhY3QgYXdheSB0aGUgcGFydGljdWxhciBzdHJ1Y3R1cmUgb2YgY2hp
bGRyZW4uXG5cdCAqXG5cdCAqIEBwYXJhbSB7P29iamVjdH0gY2hpbGRyZW4gQ2hpbGQgY29sbGVj
dGlvbiBzdHJ1Y3R1cmUuXG5cdCAqIEByZXR1cm4ge1JlYWN0RWxlbWVudH0gVGhlIGZpcnN0IGFu
ZCBvbmx5IGBSZWFjdEVsZW1lbnRgIGNvbnRhaW5lZCBpbiB0aGVcblx0ICogc3RydWN0dXJlLlxu
XHQgKi9cblx0ZnVuY3Rpb24gb25seUNoaWxkKGNoaWxkcmVuKSB7XG5cdCAgIVJlYWN0RWxlbWVu
dC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdS
ZWFjdC5DaGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5nbGUgUmVhY3QgZWxl
bWVudCBjaGlsZC4nKSA6IF9wcm9kSW52YXJpYW50KCcxNDMnKSA6IHZvaWQgMDtcblx0ICByZXR1
cm4gY2hpbGRyZW47XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gb25seUNoaWxkO1xuXG4v
KioqLyB9LFxuLyogMjI0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlh
bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcblx0XG5cdHZhciBSZWFjdEN1cnJlbnRPd25l
ciA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXHR2YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg5MSk7XG5cdFxuXHR2YXIgZ2V0SXRlcmF0b3JGbiA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMjIwKTtcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJl
X18oMSk7XG5cdHZhciBLZXlFc2NhcGVVdGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oMjEzKTtc
blx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0dmFyIFNFUEFS
QVRPUiA9ICcuJztcblx0dmFyIFNVQlNFUEFSQVRPUiA9ICc6Jztcblx0XG5cdC8qKlxuXHQgKiBU
aGlzIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQgc2luY2UgdGhpcyBmaWxlIGlzIHNoYXJl
ZCBiZXR3ZWVuXG5cdCAqIGlzb21vcnBoaWMgYW5kIHJlbmRlcmVycy4gV2UgY291bGQgZXh0cmFj
dCB0aGlzIHRvIGFcblx0ICpcblx0ICovXG5cdFxuXHQvKipcblx0ICogVE9ETzogVGVzdCB0aGF0
IGEgc2luZ2xlIGNoaWxkIGFuZCBhbiBhcnJheSB3aXRoIG9uZSBpdGVtIGhhdmUgdGhlIHNhbWUg
a2V5XG5cdCAqIHBhdHRlcm4uXG5cdCAqL1xuXHRcblx0dmFyIGRpZFdhcm5BYm91dE1hcHMgPSBm
YWxzZTtcblx0XG5cdC8qKlxuXHQgKiBHZW5lcmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBpZGVudGlm
aWVzIGEgY29tcG9uZW50IHdpdGhpbiBhIHNldC5cblx0ICpcblx0ICogQHBhcmFtIHsqfSBjb21w
b25lbnQgQSBjb21wb25lbnQgdGhhdCBjb3VsZCBjb250YWluIGEgbWFudWFsIGtleS5cblx0ICog
QHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQgaXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkg
aXMgbm90IHByb3ZpZGVkLlxuXHQgKiBAcmV0dXJuIHtzdHJpbmd9XG5cdCAqL1xuXHRmdW5jdGlv
biBnZXRDb21wb25lbnRLZXkoY29tcG9uZW50LCBpbmRleCkge1xuXHQgIC8vIERvIHNvbWUgdHlw
ZWNoZWNraW5nIGhlcmUgc2luY2Ugd2UgY2FsbCB0aGlzIGJsaW5kbHkuIFdlIHdhbnQgdG8gZW5z
dXJlXG5cdCAgLy8gdGhhdCB3ZSBkb24ndCBibG9jayBwb3RlbnRpYWwgZnV0dXJlIEVTIEFQSXMu
XG5cdCAgaWYgKGNvbXBvbmVudCAmJiB0eXBlb2YgY29tcG9uZW50ID09PSAnb2JqZWN0JyAmJiBj
b21wb25lbnQua2V5ICE9IG51bGwpIHtcblx0ICAgIC8vIEV4cGxpY2l0IGtleVxuXHQgICAgcmV0
dXJuIEtleUVzY2FwZVV0aWxzLmVzY2FwZShjb21wb25lbnQua2V5KTtcblx0ICB9XG5cdCAgLy8g
SW1wbGljaXQga2V5IGRldGVybWluZWQgYnkgdGhlIGluZGV4IGluIHRoZSBzZXRcblx0ICByZXR1
cm4gaW5kZXgudG9TdHJpbmcoMzYpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHs/Kn0g
Y2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG5cdCAqIEBwYXJhbSB7IXN0cmluZ30g
bmFtZVNvRmFyIE5hbWUgb2YgdGhlIGtleSBwYXRoIHNvIGZhci5cblx0ICogQHBhcmFtIHshZnVu
Y3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIGVhY2ggY2hpbGQgZm91bmQu
XG5cdCAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBVc2VkIHRvIHBhc3MgaW5mb3JtYXRp
b24gdGhyb3VnaG91dCB0aGUgdHJhdmVyc2FsXG5cdCAqIHByb2Nlc3MuXG5cdCAqIEByZXR1cm4g
eyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuXHQgKi9c
blx0ZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sIG5hbWVTb0Zhciwg
Y2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCkge1xuXHQgIHZhciB0eXBlID0gdHlwZW9mIGNoaWxk
cmVuO1xuXHRcblx0ICBpZiAodHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZSA9PT0gJ2Jvb2xl
YW4nKSB7XG5cdCAgICAvLyBBbGwgb2YgdGhlIGFib3ZlIGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC5c
blx0ICAgIGNoaWxkcmVuID0gbnVsbDtcblx0ICB9XG5cdFxuXHQgIGlmIChjaGlsZHJlbiA9PT0g
bnVsbCB8fCB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09PSAnbnVtYmVyJyB8fFxuXHQgIC8v
IFRoZSBmb2xsb3dpbmcgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxlbWVudC4gVGhpcyBtZWFucyB3
ZSBjYW4gb3B0aW1pemVcblx0ICAvLyBzb21lIGNoZWNrcy4gUmVhY3QgRmliZXIgYWxzbyBpbmxp
bmVzIHRoaXMgbG9naWMgZm9yIHNpbWlsYXIgcHVycG9zZXMuXG5cdCAgdHlwZSA9PT0gJ29iamVj
dCcgJiYgY2hpbGRyZW4uJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRSkge1xuXHQgICAg
Y2FsbGJhY2sodHJhdmVyc2VDb250ZXh0LCBjaGlsZHJlbixcblx0ICAgIC8vIElmIGl0J3MgdGhl
IG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1lIGFzIGlmIGl0IHdhcyB3cmFwcGVkIGluIGFuIGFy
cmF5XG5cdCAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0aGUgbnVtYmVyIG9mIGNo
aWxkcmVuIGdyb3dzLlxuXHQgICAgbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiArIGdldENv
bXBvbmVudEtleShjaGlsZHJlbiwgMCkgOiBuYW1lU29GYXIpO1xuXHQgICAgcmV0dXJuIDE7XG5c
dCAgfVxuXHRcblx0ICB2YXIgY2hpbGQ7XG5cdCAgdmFyIG5leHROYW1lO1xuXHQgIHZhciBzdWJ0
cmVlQ291bnQgPSAwOyAvLyBDb3VudCBvZiBjaGlsZHJlbiBmb3VuZCBpbiB0aGUgY3VycmVudCBz
dWJ0cmVlLlxuXHQgIHZhciBuZXh0TmFtZVByZWZpeCA9IG5hbWVTb0ZhciA9PT0gJycgPyBTRVBB
UkFUT1IgOiBuYW1lU29GYXIgKyBTVUJTRVBBUkFUT1I7XG5cdFxuXHQgIGlmIChBcnJheS5pc0Fy
cmF5KGNoaWxkcmVuKSkge1xuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5n
dGg7IGkrKykge1xuXHQgICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuXHQgICAgICBuZXh0TmFt
ZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpKTtcblx0ICAgICAg
c3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwg
Y2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG5cdCAgICB9XG5cdCAgfSBlbHNlIHtcblx0ICAg
IHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJlbik7XG5cdCAgICBpZiAoaXRl
cmF0b3JGbikge1xuXHQgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwoY2hpbGRy
ZW4pO1xuXHQgICAgICB2YXIgc3RlcDtcblx0ICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IGNoaWxk
cmVuLmVudHJpZXMpIHtcblx0ICAgICAgICB2YXIgaWkgPSAwO1xuXHQgICAgICAgIHdoaWxlICgh
KHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNoaWxkID0gc3Rl
cC52YWx1ZTtcblx0ICAgICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21w
b25lbnRLZXkoY2hpbGQsIGlpKyspO1xuXHQgICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZl
cnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29u
dGV4dCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGlmIChmYWxz
ZSkge1xuXHQgICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnJztcblx0ICAg
ICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG5cdCAgICAgICAgICAgIHZh
ciBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0
TmFtZSgpO1xuXHQgICAgICAgICAgICBpZiAobWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUpIHtcblx0
ICAgICAgICAgICAgICBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyBDaGVjayB0aGUgcmVuZGVy
IG1ldGhvZCBvZiBgJyArIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lICsgJ2AuJztcblx0ICAgICAg
ICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZGlkV2FybkFib3V0TWFwcywgJ1VzaW5nIE1hcHMg
YXMgY2hpbGRyZW4gaXMgbm90IHlldCBmdWxseSBzdXBwb3J0ZWQuIEl0IGlzIGFuICcgKyAnZXhw
ZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtaWdodCBiZSByZW1vdmVkLiBDb252ZXJ0IGl0IHRvIGEg
JyArICdzZXF1ZW5jZSAvIGl0ZXJhYmxlIG9mIGtleWVkIFJlYWN0RWxlbWVudHMgaW5zdGVhZC4l
cycsIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0pIDogdm9pZCAwO1xuXHQgICAgICAgICAgZGlkV2Fy
bkFib3V0TWFwcyA9IHRydWU7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIC8vIEl0ZXJhdG9yIHdp
bGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFsdWVzLlxuXHQgICAg
ICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAg
IHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7XG5cdCAgICAgICAgICBpZiAoZW50cnkpIHtcblx0ICAg
ICAgICAgICAgY2hpbGQgPSBlbnRyeVsxXTtcblx0ICAgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0
TmFtZVByZWZpeCArIEtleUVzY2FwZVV0aWxzLmVzY2FwZShlbnRyeVswXSkgKyBTVUJTRVBBUkFU
T1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDApO1xuXHQgICAgICAgICAgICBzdWJ0cmVlQ291
bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywg
dHJhdmVyc2VDb250ZXh0KTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1c
blx0ICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcblx0ICAgICAgdmFyIGFkZGVu
ZHVtID0gJyc7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIGFkZGVuZHVtID0gJyBJ
ZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFy
cmF5ICcgKyAnaW5zdGVhZCBvciB3cmFwIHRoZSBvYmplY3QgdXNpbmcgY3JlYXRlRnJhZ21lbnQo
b2JqZWN0KSBmcm9tIHRoZSAnICsgJ1JlYWN0IGFkZC1vbnMuJztcblx0ICAgICAgICBpZiAoY2hp
bGRyZW4uX2lzUmVhY3RFbGVtZW50KSB7XG5cdCAgICAgICAgICBhZGRlbmR1bSA9IFwiIEl0IGxv
b2tzIGxpa2UgeW91J3JlIHVzaW5nIGFuIGVsZW1lbnQgY3JlYXRlZCBieSBhIGRpZmZlcmVudCBc
IiArICd2ZXJzaW9uIG9mIFJlYWN0LiBNYWtlIHN1cmUgdG8gdXNlIG9ubHkgb25lIGNvcHkgb2Yg
UmVhY3QuJztcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1
cnJlbnQpIHtcblx0ICAgICAgICAgIHZhciBuYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVu
dC5nZXROYW1lKCk7XG5cdCAgICAgICAgICBpZiAobmFtZSkge1xuXHQgICAgICAgICAgICBhZGRl
bmR1bSArPSAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG5c
dCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHZhciBjaGlsZHJl
blN0cmluZyA9IFN0cmluZyhjaGlsZHJlbik7XG5cdCAgICAgICB0cnVlID8gIGZhbHNlID8gaW52
YXJpYW50KGZhbHNlLCAnT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZv
dW5kOiAlcykuJXMnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2Jq
ZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30n
IDogY2hpbGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IF9wcm9kSW52YXJpYW50KCczMScsIGNoaWxk
cmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsg
T2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywg
YWRkZW5kdW0pIDogdm9pZCAwO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgcmV0dXJuIHN1YnRy
ZWVDb3VudDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFRyYXZlcnNlcyBjaGlsZHJlbiB0aGF0IGFy
ZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAsIGJ1dFxuXHQgKiBtaWdo
dCBhbHNvIGJlIHNwZWNpZmllZCB0aHJvdWdoIGF0dHJpYnV0ZXM6XG5cdCAqXG5cdCAqIC0gYHRy
YXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5wcm9wcy5jaGlsZHJlbiwgLi4uKWBcblx0ICogLSBgdHJh
dmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmxlZnRQYW5lbENoaWxkcmVuLCAuLi4pYFxuXHQg
KlxuXHQgKiBUaGUgYHRyYXZlcnNlQ29udGV4dGAgaXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgdGhh
dCBpcyBwYXNzZWQgdGhyb3VnaCB0aGVcblx0ICogZW50aXJlIHRyYXZlcnNhbC4gSXQgY2FuIGJl
IHVzZWQgdG8gc3RvcmUgYWNjdW11bGF0aW9ucyBvciBhbnl0aGluZyBlbHNlIHRoYXRcblx0ICog
dGhlIGNhbGxiYWNrIG1pZ2h0IGZpbmQgcmVsZXZhbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Pyp9
IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgb2JqZWN0LlxuXHQgKiBAcGFyYW0geyFmdW5jdGlvbn0g
Y2FsbGJhY2sgVG8gaW52b2tlIHVwb24gdHJhdmVyc2luZyBlYWNoIGNoaWxkLlxuXHQgKiBAcGFy
YW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBmb3IgdHJhdmVyc2FsLlxuXHQgKiBAcmV0
dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoaXMgc3VidHJlZS5cblx0
ICovXG5cdGZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGNhbGxiYWNrLCB0
cmF2ZXJzZUNvbnRleHQpIHtcblx0ICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuXHQgICAgcmV0
dXJuIDA7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hp
bGRyZW4sICcnLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcblx0fVxuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSB0cmF2ZXJzZUFsbENoaWxkcmVuO1xuXG4vKioqLyB9LFxuLyogMjI1ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxu
XHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRcblx0
dmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAo
dmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1
bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUu
aGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vb
a2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9
IGFwcGx5TWlkZGxld2FyZTtcblx0XG5cdHZhciBfY29tcG9zZSA9IF9fd2VicGFja19yZXF1aXJl
X18oOTQpO1xuXHRcblx0dmFyIF9jb21wb3NlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Nv
bXBvc2UpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0
dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxu
XHRcblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBzdG9yZSBlbmhhbmNlciB0aGF0IGFwcGxpZXMgbWlk
ZGxld2FyZSB0byB0aGUgZGlzcGF0Y2ggbWV0aG9kXG5cdCAqIG9mIHRoZSBSZWR1eCBzdG9yZS4g
VGhpcyBpcyBoYW5keSBmb3IgYSB2YXJpZXR5IG9mIHRhc2tzLCBzdWNoIGFzIGV4cHJlc3Npbmdc
blx0ICogYXN5bmNocm9ub3VzIGFjdGlvbnMgaW4gYSBjb25jaXNlIG1hbm5lciwgb3IgbG9nZ2lu
ZyBldmVyeSBhY3Rpb24gcGF5bG9hZC5cblx0ICpcblx0ICogU2VlIGByZWR1eC10aHVua2AgcGFj
a2FnZSBhcyBhbiBleGFtcGxlIG9mIHRoZSBSZWR1eCBtaWRkbGV3YXJlLlxuXHQgKlxuXHQgKiBC
ZWNhdXNlIG1pZGRsZXdhcmUgaXMgcG90ZW50aWFsbHkgYXN5bmNocm9ub3VzLCB0aGlzIHNob3Vs
ZCBiZSB0aGUgZmlyc3Rcblx0ICogc3RvcmUgZW5oYW5jZXIgaW4gdGhlIGNvbXBvc2l0aW9uIGNo
YWluLlxuXHQgKlxuXHQgKiBOb3RlIHRoYXQgZWFjaCBtaWRkbGV3YXJlIHdpbGwgYmUgZ2l2ZW4g
dGhlIGBkaXNwYXRjaGAgYW5kIGBnZXRTdGF0ZWAgZnVuY3Rpb25zXG5cdCAqIGFzIG5hbWVkIGFy
Z3VtZW50cy5cblx0ICpcblx0ICogQHBhcmFtIHsuLi5GdW5jdGlvbn0gbWlkZGxld2FyZXMgVGhl
IG1pZGRsZXdhcmUgY2hhaW4gdG8gYmUgYXBwbGllZC5cblx0ICogQHJldHVybnMge0Z1bmN0aW9u
fSBBIHN0b3JlIGVuaGFuY2VyIGFwcGx5aW5nIHRoZSBtaWRkbGV3YXJlLlxuXHQgKi9cblx0ZnVu
Y3Rpb24gYXBwbHlNaWRkbGV3YXJlKCkge1xuXHQgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMu
bGVuZ3RoLCBtaWRkbGV3YXJlcyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47
IF9rZXkrKykge1xuXHQgICAgbWlkZGxld2FyZXNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG5c
dCAgfVxuXHRcblx0ICByZXR1cm4gZnVuY3Rpb24gKGNyZWF0ZVN0b3JlKSB7XG5cdCAgICByZXR1
cm4gZnVuY3Rpb24gKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlLCBlbmhhbmNlcikge1xuXHQgICAg
ICB2YXIgc3RvcmUgPSBjcmVhdGVTdG9yZShyZWR1Y2VyLCBwcmVsb2FkZWRTdGF0ZSwgZW5oYW5j
ZXIpO1xuXHQgICAgICB2YXIgX2Rpc3BhdGNoID0gc3RvcmUuZGlzcGF0Y2g7XG5cdCAgICAgIHZh
ciBjaGFpbiA9IFtdO1xuXHRcblx0ICAgICAgdmFyIG1pZGRsZXdhcmVBUEkgPSB7XG5cdCAgICAg
ICAgZ2V0U3RhdGU6IHN0b3JlLmdldFN0YXRlLFxuXHQgICAgICAgIGRpc3BhdGNoOiBmdW5jdGlv
biBkaXNwYXRjaChhY3Rpb24pIHtcblx0ICAgICAgICAgIHJldHVybiBfZGlzcGF0Y2goYWN0aW9u
KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH07XG5cdCAgICAgIGNoYWluID0gbWlkZGxld2FyZXMu
bWFwKGZ1bmN0aW9uIChtaWRkbGV3YXJlKSB7XG5cdCAgICAgICAgcmV0dXJuIG1pZGRsZXdhcmUo
bWlkZGxld2FyZUFQSSk7XG5cdCAgICAgIH0pO1xuXHQgICAgICBfZGlzcGF0Y2ggPSBfY29tcG9z
ZTJbJ2RlZmF1bHQnXS5hcHBseSh1bmRlZmluZWQsIGNoYWluKShzdG9yZS5kaXNwYXRjaCk7XG5c
dFxuXHQgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHN0b3JlLCB7XG5cdCAgICAgICAgZGlzcGF0
Y2g6IF9kaXNwYXRjaFxuXHQgICAgICB9KTtcblx0ICAgIH07XG5cdCAgfTtcblx0fVxuXG4vKioq
LyB9LFxuLyogMjI2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRz
WydkZWZhdWx0J10gPSBiaW5kQWN0aW9uQ3JlYXRvcnM7XG5cdGZ1bmN0aW9uIGJpbmRBY3Rpb25D
cmVhdG9yKGFjdGlvbkNyZWF0b3IsIGRpc3BhdGNoKSB7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uICgp
IHtcblx0ICAgIHJldHVybiBkaXNwYXRjaChhY3Rpb25DcmVhdG9yLmFwcGx5KHVuZGVmaW5lZCwg
YXJndW1lbnRzKSk7XG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFR1cm5zIGFuIG9iamVj
dCB3aG9zZSB2YWx1ZXMgYXJlIGFjdGlvbiBjcmVhdG9ycywgaW50byBhbiBvYmplY3Qgd2l0aCB0
aGVcblx0ICogc2FtZSBrZXlzLCBidXQgd2l0aCBldmVyeSBmdW5jdGlvbiB3cmFwcGVkIGludG8g
YSBgZGlzcGF0Y2hgIGNhbGwgc28gdGhleVxuXHQgKiBtYXkgYmUgaW52b2tlZCBkaXJlY3RseS4g
VGhpcyBpcyBqdXN0IGEgY29udmVuaWVuY2UgbWV0aG9kLCBhcyB5b3UgY2FuIGNhbGxcblx0ICog
YHN0b3JlLmRpc3BhdGNoKE15QWN0aW9uQ3JlYXRvcnMuZG9Tb21ldGhpbmcoKSlgIHlvdXJzZWxm
IGp1c3QgZmluZS5cblx0ICpcblx0ICogRm9yIGNvbnZlbmllbmNlLCB5b3UgY2FuIGFsc28gcGFz
cyBhIHNpbmdsZSBmdW5jdGlvbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQsXG5cdCAqIGFuZCBnZXQg
YSBmdW5jdGlvbiBpbiByZXR1cm4uXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb258T2JqZWN0
fSBhY3Rpb25DcmVhdG9ycyBBbiBvYmplY3Qgd2hvc2UgdmFsdWVzIGFyZSBhY3Rpb25cblx0ICog
Y3JlYXRvciBmdW5jdGlvbnMuIE9uZSBoYW5keSB3YXkgdG8gb2J0YWluIGl0IGlzIHRvIHVzZSBF
UzYgYGltcG9ydCAqIGFzYFxuXHQgKiBzeW50YXguIFlvdSBtYXkgYWxzbyBwYXNzIGEgc2luZ2xl
IGZ1bmN0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBkaXNwYXRjaCBUaGUgYGRp
c3BhdGNoYCBmdW5jdGlvbiBhdmFpbGFibGUgb24geW91ciBSZWR1eFxuXHQgKiBzdG9yZS5cblx0
ICpcblx0ICogQHJldHVybnMge0Z1bmN0aW9ufE9iamVjdH0gVGhlIG9iamVjdCBtaW1pY2tpbmcg
dGhlIG9yaWdpbmFsIG9iamVjdCwgYnV0IHdpdGhcblx0ICogZXZlcnkgYWN0aW9uIGNyZWF0b3Ig
d3JhcHBlZCBpbnRvIHRoZSBgZGlzcGF0Y2hgIGNhbGwuIElmIHlvdSBwYXNzZWQgYVxuXHQgKiBm
dW5jdGlvbiBhcyBgYWN0aW9uQ3JlYXRvcnNgLCB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYWxzbyBi
ZSBhIHNpbmdsZVxuXHQgKiBmdW5jdGlvbi5cblx0ICovXG5cdGZ1bmN0aW9uIGJpbmRBY3Rpb25D
cmVhdG9ycyhhY3Rpb25DcmVhdG9ycywgZGlzcGF0Y2gpIHtcblx0ICBpZiAodHlwZW9mIGFjdGlv
bkNyZWF0b3JzID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICByZXR1cm4gYmluZEFjdGlvbkNyZWF0
b3IoYWN0aW9uQ3JlYXRvcnMsIGRpc3BhdGNoKTtcblx0ICB9XG5cdFxuXHQgIGlmICh0eXBlb2Yg
YWN0aW9uQ3JlYXRvcnMgIT09ICdvYmplY3QnIHx8IGFjdGlvbkNyZWF0b3JzID09PSBudWxsKSB7
XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ2JpbmRBY3Rpb25DcmVhdG9ycyBleHBlY3RlZCBhbiBv
YmplY3Qgb3IgYSBmdW5jdGlvbiwgaW5zdGVhZCByZWNlaXZlZCAnICsgKGFjdGlvbkNyZWF0b3Jz
ID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIGFjdGlvbkNyZWF0b3JzKSArICcuICcgKyAnRGlk
IHlvdSB3cml0ZSBcImltcG9ydCBBY3Rpb25DcmVhdG9ycyBmcm9tXCIgaW5zdGVhZCBvZiBcImlt
cG9ydCAqIGFzIEFjdGlvbkNyZWF0b3JzIGZyb21cIj8nKTtcblx0ICB9XG5cdFxuXHQgIHZhciBr
ZXlzID0gT2JqZWN0LmtleXMoYWN0aW9uQ3JlYXRvcnMpO1xuXHQgIHZhciBib3VuZEFjdGlvbkNy
ZWF0b3JzID0ge307XG5cdCAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7
XG5cdCAgICB2YXIga2V5ID0ga2V5c1tpXTtcblx0ICAgIHZhciBhY3Rpb25DcmVhdG9yID0gYWN0
aW9uQ3JlYXRvcnNba2V5XTtcblx0ICAgIGlmICh0eXBlb2YgYWN0aW9uQ3JlYXRvciA9PT0gJ2Z1
bmN0aW9uJykge1xuXHQgICAgICBib3VuZEFjdGlvbkNyZWF0b3JzW2tleV0gPSBiaW5kQWN0aW9u
Q3JlYXRvcihhY3Rpb25DcmVhdG9yLCBkaXNwYXRjaCk7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJl
dHVybiBib3VuZEFjdGlvbkNyZWF0b3JzO1xuXHR9XG5cbi8qKiovIH0sXG4vKiAyMjcgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9y
dHNbJ2RlZmF1bHQnXSA9IGNvbWJpbmVSZWR1Y2Vycztcblx0XG5cdHZhciBfY3JlYXRlU3RvcmUg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk1KTtcblx0XG5cdHZhciBfaXNQbGFpbk9iamVjdCA9IF9f
d2VicGFja19yZXF1aXJlX18oMzMpO1xuXHRcblx0dmFyIF9pc1BsYWluT2JqZWN0MiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX2lzUGxhaW5PYmplY3QpO1xuXHRcblx0dmFyIF93YXJuaW5nID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg5Nik7XG5cdFxuXHR2YXIgX3dhcm5pbmcyID0gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChfd2FybmluZyk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVm
YXVsdCc6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiBnZXRVbmRlZmluZWRTdGF0ZUVycm9yTWVz
c2FnZShrZXksIGFjdGlvbikge1xuXHQgIHZhciBhY3Rpb25UeXBlID0gYWN0aW9uICYmIGFjdGlv
bi50eXBlO1xuXHQgIHZhciBhY3Rpb25OYW1lID0gYWN0aW9uVHlwZSAmJiAnXCInICsgYWN0aW9u
VHlwZS50b1N0cmluZygpICsgJ1wiJyB8fCAnYW4gYWN0aW9uJztcblx0XG5cdCAgcmV0dXJuICdH
aXZlbiBhY3Rpb24gJyArIGFjdGlvbk5hbWUgKyAnLCByZWR1Y2VyIFwiJyArIGtleSArICdcIiBy
ZXR1cm5lZCB1bmRlZmluZWQuICcgKyAnVG8gaWdub3JlIGFuIGFjdGlvbiwgeW91IG11c3QgZXhw
bGljaXRseSByZXR1cm4gdGhlIHByZXZpb3VzIHN0YXRlLiAnICsgJ0lmIHlvdSB3YW50IHRoaXMg
cmVkdWNlciB0byBob2xkIG5vIHZhbHVlLCB5b3UgY2FuIHJldHVybiBudWxsIGluc3RlYWQgb2Yg
dW5kZWZpbmVkLic7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdldFVuZXhwZWN0ZWRTdGF0ZVNoYXBl
V2FybmluZ01lc3NhZ2UoaW5wdXRTdGF0ZSwgcmVkdWNlcnMsIGFjdGlvbiwgdW5leHBlY3RlZEtl
eUNhY2hlKSB7XG5cdCAgdmFyIHJlZHVjZXJLZXlzID0gT2JqZWN0LmtleXMocmVkdWNlcnMpO1xu
XHQgIHZhciBhcmd1bWVudE5hbWUgPSBhY3Rpb24gJiYgYWN0aW9uLnR5cGUgPT09IF9jcmVhdGVT
dG9yZS5BY3Rpb25UeXBlcy5JTklUID8gJ3ByZWxvYWRlZFN0YXRlIGFyZ3VtZW50IHBhc3NlZCB0
byBjcmVhdGVTdG9yZScgOiAncHJldmlvdXMgc3RhdGUgcmVjZWl2ZWQgYnkgdGhlIHJlZHVjZXIn
O1xuXHRcblx0ICBpZiAocmVkdWNlcktleXMubGVuZ3RoID09PSAwKSB7XG5cdCAgICByZXR1cm4g
J1N0b3JlIGRvZXMgbm90IGhhdmUgYSB2YWxpZCByZWR1Y2VyLiBNYWtlIHN1cmUgdGhlIGFyZ3Vt
ZW50IHBhc3NlZCAnICsgJ3RvIGNvbWJpbmVSZWR1Y2VycyBpcyBhbiBvYmplY3Qgd2hvc2UgdmFs
dWVzIGFyZSByZWR1Y2Vycy4nO1xuXHQgIH1cblx0XG5cdCAgaWYgKCEoMCwgX2lzUGxhaW5PYmpl
Y3QyWydkZWZhdWx0J10pKGlucHV0U3RhdGUpKSB7XG5cdCAgICByZXR1cm4gJ1RoZSAnICsgYXJn
dW1lbnROYW1lICsgJyBoYXMgdW5leHBlY3RlZCB0eXBlIG9mIFwiJyArIHt9LnRvU3RyaW5nLmNh
bGwoaW5wdXRTdGF0ZSkubWF0Y2goL1xccyhbYS16fEEtWl0rKS8pWzFdICsgJ1wiLiBFeHBlY3Rl
ZCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nICcgKyAoJ2tleXM6
IFwiJyArIHJlZHVjZXJLZXlzLmpvaW4oJ1wiLCBcIicpICsgJ1wiJyk7XG5cdCAgfVxuXHRcblx0
ICB2YXIgdW5leHBlY3RlZEtleXMgPSBPYmplY3Qua2V5cyhpbnB1dFN0YXRlKS5maWx0ZXIoZnVu
Y3Rpb24gKGtleSkge1xuXHQgICAgcmV0dXJuICFyZWR1Y2Vycy5oYXNPd25Qcm9wZXJ0eShrZXkp
ICYmICF1bmV4cGVjdGVkS2V5Q2FjaGVba2V5XTtcblx0ICB9KTtcblx0XG5cdCAgdW5leHBlY3Rl
ZEtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICB1bmV4cGVjdGVkS2V5Q2FjaGVb
a2V5XSA9IHRydWU7XG5cdCAgfSk7XG5cdFxuXHQgIGlmICh1bmV4cGVjdGVkS2V5cy5sZW5ndGgg
PiAwKSB7XG5cdCAgICByZXR1cm4gJ1VuZXhwZWN0ZWQgJyArICh1bmV4cGVjdGVkS2V5cy5sZW5n
dGggPiAxID8gJ2tleXMnIDogJ2tleScpICsgJyAnICsgKCdcIicgKyB1bmV4cGVjdGVkS2V5cy5q
b2luKCdcIiwgXCInKSArICdcIiBmb3VuZCBpbiAnICsgYXJndW1lbnROYW1lICsgJy4gJykgKyAn
RXhwZWN0ZWQgdG8gZmluZCBvbmUgb2YgdGhlIGtub3duIHJlZHVjZXIga2V5cyBpbnN0ZWFkOiAn
ICsgKCdcIicgKyByZWR1Y2VyS2V5cy5qb2luKCdcIiwgXCInKSArICdcIi4gVW5leHBlY3RlZCBr
ZXlzIHdpbGwgYmUgaWdub3JlZC4nKTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGFzc2Vy
dFJlZHVjZXJTaGFwZShyZWR1Y2Vycykge1xuXHQgIE9iamVjdC5rZXlzKHJlZHVjZXJzKS5mb3JF
YWNoKGZ1bmN0aW9uIChrZXkpIHtcblx0ICAgIHZhciByZWR1Y2VyID0gcmVkdWNlcnNba2V5XTtc
blx0ICAgIHZhciBpbml0aWFsU3RhdGUgPSByZWR1Y2VyKHVuZGVmaW5lZCwgeyB0eXBlOiBfY3Jl
YXRlU3RvcmUuQWN0aW9uVHlwZXMuSU5JVCB9KTtcblx0XG5cdCAgICBpZiAodHlwZW9mIGluaXRp
YWxTdGF0ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWR1
Y2VyIFwiJyArIGtleSArICdcIiByZXR1cm5lZCB1bmRlZmluZWQgZHVyaW5nIGluaXRpYWxpemF0
aW9uLiAnICsgJ0lmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlIHJlZHVjZXIgaXMgdW5kZWZpbmVk
LCB5b3UgbXVzdCAnICsgJ2V4cGxpY2l0bHkgcmV0dXJuIHRoZSBpbml0aWFsIHN0YXRlLiBUaGUg
aW5pdGlhbCBzdGF0ZSBtYXkgJyArICdub3QgYmUgdW5kZWZpbmVkLiBJZiB5b3UgZG9uXFwndCB3
YW50IHRvIHNldCBhIHZhbHVlIGZvciB0aGlzIHJlZHVjZXIsICcgKyAneW91IGNhbiB1c2UgbnVs
bCBpbnN0ZWFkIG9mIHVuZGVmaW5lZC4nKTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgdHlwZSA9
ICdAQHJlZHV4L1BST0JFX1VOS05PV05fQUNUSU9OXycgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5n
KDM2KS5zdWJzdHJpbmcoNykuc3BsaXQoJycpLmpvaW4oJy4nKTtcblx0ICAgIGlmICh0eXBlb2Yg
cmVkdWNlcih1bmRlZmluZWQsIHsgdHlwZTogdHlwZSB9KSA9PT0gJ3VuZGVmaW5lZCcpIHtcblx0
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWR1Y2VyIFwiJyArIGtleSArICdcIiByZXR1cm5lZCB1
bmRlZmluZWQgd2hlbiBwcm9iZWQgd2l0aCBhIHJhbmRvbSB0eXBlLiAnICsgKCdEb25cXCd0IHRy
eSB0byBoYW5kbGUgJyArIF9jcmVhdGVTdG9yZS5BY3Rpb25UeXBlcy5JTklUICsgJyBvciBvdGhl
ciBhY3Rpb25zIGluIFwicmVkdXgvKlwiICcpICsgJ25hbWVzcGFjZS4gVGhleSBhcmUgY29uc2lk
ZXJlZCBwcml2YXRlLiBJbnN0ZWFkLCB5b3UgbXVzdCByZXR1cm4gdGhlICcgKyAnY3VycmVudCBz
dGF0ZSBmb3IgYW55IHVua25vd24gYWN0aW9ucywgdW5sZXNzIGl0IGlzIHVuZGVmaW5lZCwgJyAr
ICdpbiB3aGljaCBjYXNlIHlvdSBtdXN0IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZSwgcmVnYXJk
bGVzcyBvZiB0aGUgJyArICdhY3Rpb24gdHlwZS4gVGhlIGluaXRpYWwgc3RhdGUgbWF5IG5vdCBi
ZSB1bmRlZmluZWQsIGJ1dCBjYW4gYmUgbnVsbC4nKTtcblx0ICAgIH1cblx0ICB9KTtcblx0fVxu
XHRcblx0LyoqXG5cdCAqIFR1cm5zIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIGRpZmZlcmVu
dCByZWR1Y2VyIGZ1bmN0aW9ucywgaW50byBhIHNpbmdsZVxuXHQgKiByZWR1Y2VyIGZ1bmN0aW9u
LiBJdCB3aWxsIGNhbGwgZXZlcnkgY2hpbGQgcmVkdWNlciwgYW5kIGdhdGhlciB0aGVpciByZXN1
bHRzXG5cdCAqIGludG8gYSBzaW5nbGUgc3RhdGUgb2JqZWN0LCB3aG9zZSBrZXlzIGNvcnJlc3Bv
bmQgdG8gdGhlIGtleXMgb2YgdGhlIHBhc3NlZFxuXHQgKiByZWR1Y2VyIGZ1bmN0aW9ucy5cblx0
ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IHJlZHVjZXJzIEFuIG9iamVjdCB3aG9zZSB2YWx1ZXMg
Y29ycmVzcG9uZCB0byBkaWZmZXJlbnRcblx0ICogcmVkdWNlciBmdW5jdGlvbnMgdGhhdCBuZWVk
IHRvIGJlIGNvbWJpbmVkIGludG8gb25lLiBPbmUgaGFuZHkgd2F5IHRvIG9idGFpblxuXHQgKiBp
dCBpcyB0byB1c2UgRVM2IGBpbXBvcnQgKiBhcyByZWR1Y2Vyc2Agc3ludGF4LiBUaGUgcmVkdWNl
cnMgbWF5IG5ldmVyIHJldHVyblxuXHQgKiB1bmRlZmluZWQgZm9yIGFueSBhY3Rpb24uIEluc3Rl
YWQsIHRoZXkgc2hvdWxkIHJldHVybiB0aGVpciBpbml0aWFsIHN0YXRlXG5cdCAqIGlmIHRoZSBz
dGF0ZSBwYXNzZWQgdG8gdGhlbSB3YXMgdW5kZWZpbmVkLCBhbmQgdGhlIGN1cnJlbnQgc3RhdGUg
Zm9yIGFueVxuXHQgKiB1bnJlY29nbml6ZWQgYWN0aW9uLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7
RnVuY3Rpb259IEEgcmVkdWNlciBmdW5jdGlvbiB0aGF0IGludm9rZXMgZXZlcnkgcmVkdWNlciBp
bnNpZGUgdGhlXG5cdCAqIHBhc3NlZCBvYmplY3QsIGFuZCBidWlsZHMgYSBzdGF0ZSBvYmplY3Qg
d2l0aCB0aGUgc2FtZSBzaGFwZS5cblx0ICovXG5cdGZ1bmN0aW9uIGNvbWJpbmVSZWR1Y2Vycyhy
ZWR1Y2Vycykge1xuXHQgIHZhciByZWR1Y2VyS2V5cyA9IE9iamVjdC5rZXlzKHJlZHVjZXJzKTtc
blx0ICB2YXIgZmluYWxSZWR1Y2VycyA9IHt9O1xuXHQgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVk
dWNlcktleXMubGVuZ3RoOyBpKyspIHtcblx0ICAgIHZhciBrZXkgPSByZWR1Y2VyS2V5c1tpXTtc
blx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKHR5cGVvZiByZWR1Y2Vyc1trZXld
ID09PSAndW5kZWZpbmVkJykge1xuXHQgICAgICAgICgwLCBfd2FybmluZzJbJ2RlZmF1bHQnXSko
J05vIHJlZHVjZXIgcHJvdmlkZWQgZm9yIGtleSBcIicgKyBrZXkgKyAnXCInKTtcblx0ICAgICAg
fVxuXHQgICAgfVxuXHRcblx0ICAgIGlmICh0eXBlb2YgcmVkdWNlcnNba2V5XSA9PT0gJ2Z1bmN0
aW9uJykge1xuXHQgICAgICBmaW5hbFJlZHVjZXJzW2tleV0gPSByZWR1Y2Vyc1trZXldO1xuXHQg
ICAgfVxuXHQgIH1cblx0ICB2YXIgZmluYWxSZWR1Y2VyS2V5cyA9IE9iamVjdC5rZXlzKGZpbmFs
UmVkdWNlcnMpO1xuXHRcblx0ICB2YXIgdW5leHBlY3RlZEtleUNhY2hlID0gdm9pZCAwO1xuXHQg
IGlmIChmYWxzZSkge1xuXHQgICAgdW5leHBlY3RlZEtleUNhY2hlID0ge307XG5cdCAgfVxuXHRc
blx0ICB2YXIgc2hhcGVBc3NlcnRpb25FcnJvciA9IHZvaWQgMDtcblx0ICB0cnkge1xuXHQgICAg
YXNzZXJ0UmVkdWNlclNoYXBlKGZpbmFsUmVkdWNlcnMpO1xuXHQgIH0gY2F0Y2ggKGUpIHtcblx0
ICAgIHNoYXBlQXNzZXJ0aW9uRXJyb3IgPSBlO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIGZ1bmN0
aW9uIGNvbWJpbmF0aW9uKCkge1xuXHQgICAgdmFyIHN0YXRlID0gYXJndW1lbnRzLmxlbmd0aCA+
IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcblx0
ICAgIHZhciBhY3Rpb24gPSBhcmd1bWVudHNbMV07XG5cdFxuXHQgICAgaWYgKHNoYXBlQXNzZXJ0
aW9uRXJyb3IpIHtcblx0ICAgICAgdGhyb3cgc2hhcGVBc3NlcnRpb25FcnJvcjtcblx0ICAgIH1c
blx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdmFyIHdhcm5pbmdNZXNzYWdlID0gZ2V0
VW5leHBlY3RlZFN0YXRlU2hhcGVXYXJuaW5nTWVzc2FnZShzdGF0ZSwgZmluYWxSZWR1Y2Vycywg
YWN0aW9uLCB1bmV4cGVjdGVkS2V5Q2FjaGUpO1xuXHQgICAgICBpZiAod2FybmluZ01lc3NhZ2Up
IHtcblx0ICAgICAgICAoMCwgX3dhcm5pbmcyWydkZWZhdWx0J10pKHdhcm5pbmdNZXNzYWdlKTtc
blx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHZhciBoYXNDaGFuZ2VkID0gZmFsc2U7XG5c
dCAgICB2YXIgbmV4dFN0YXRlID0ge307XG5cdCAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgZmlu
YWxSZWR1Y2VyS2V5cy5sZW5ndGg7IF9pKyspIHtcblx0ICAgICAgdmFyIF9rZXkgPSBmaW5hbFJl
ZHVjZXJLZXlzW19pXTtcblx0ICAgICAgdmFyIHJlZHVjZXIgPSBmaW5hbFJlZHVjZXJzW19rZXld
O1xuXHQgICAgICB2YXIgcHJldmlvdXNTdGF0ZUZvcktleSA9IHN0YXRlW19rZXldO1xuXHQgICAg
ICB2YXIgbmV4dFN0YXRlRm9yS2V5ID0gcmVkdWNlcihwcmV2aW91c1N0YXRlRm9yS2V5LCBhY3Rp
b24pO1xuXHQgICAgICBpZiAodHlwZW9mIG5leHRTdGF0ZUZvcktleSA9PT0gJ3VuZGVmaW5lZCcp
IHtcblx0ICAgICAgICB2YXIgZXJyb3JNZXNzYWdlID0gZ2V0VW5kZWZpbmVkU3RhdGVFcnJvck1l
c3NhZ2UoX2tleSwgYWN0aW9uKTtcblx0ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNz
YWdlKTtcblx0ICAgICAgfVxuXHQgICAgICBuZXh0U3RhdGVbX2tleV0gPSBuZXh0U3RhdGVGb3JL
ZXk7XG5cdCAgICAgIGhhc0NoYW5nZWQgPSBoYXNDaGFuZ2VkIHx8IG5leHRTdGF0ZUZvcktleSAh
PT0gcHJldmlvdXNTdGF0ZUZvcktleTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBoYXNDaGFuZ2Vk
ID8gbmV4dFN0YXRlIDogc3RhdGU7XG5cdCAgfTtcblx0fVxuXG4vKioqLyB9LFxuLyogMjI4ICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjI5KTtcblxuXG4vKioq
LyB9LFxuLyogMjI5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24o
Z2xvYmFsLCBtb2R1bGUpIHsndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0
XG5cdHZhciBfcG9ueWZpbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzMCk7XG5cdFxuXHR2YXIg
X3BvbnlmaWxsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3BvbnlmaWxsKTtcblx0XG5cdGZ1
bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9f
ZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblx0XG5cdHZhciByb290OyAv
KiBnbG9iYWwgd2luZG93ICovXG5cdFxuXHRcblx0aWYgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZp
bmVkJykge1xuXHQgIHJvb3QgPSBzZWxmO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09
ICd1bmRlZmluZWQnKSB7XG5cdCAgcm9vdCA9IHdpbmRvdztcblx0fSBlbHNlIGlmICh0eXBlb2Yg
Z2xvYmFsICE9PSAndW5kZWZpbmVkJykge1xuXHQgIHJvb3QgPSBnbG9iYWw7XG5cdH0gZWxzZSBp
ZiAodHJ1ZSkge1xuXHQgIHJvb3QgPSBtb2R1bGU7XG5cdH0gZWxzZSB7XG5cdCAgcm9vdCA9IEZ1
bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH1cblx0XG5cdHZhciByZXN1bHQgPSAoMCwgX3Bv
bnlmaWxsMlsnZGVmYXVsdCddKShyb290KTtcblx0ZXhwb3J0c1snZGVmYXVsdCddID0gcmVzdWx0
O1xuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgKGZ1bmN0aW9u
KCkgeyByZXR1cm4gdGhpczsgfSgpKSwgX193ZWJwYWNrX3JlcXVpcmVfXygyMTEpKG1vZHVsZSkp
KVxuXG4vKioqLyB9LFxuLyogMjMwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMp
IHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0
cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0XHR2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0ZXhwb3J0c1sn
ZGVmYXVsdCddID0gc3ltYm9sT2JzZXJ2YWJsZVBvbnlmaWxsO1xuXHRmdW5jdGlvbiBzeW1ib2xP
YnNlcnZhYmxlUG9ueWZpbGwocm9vdCkge1xuXHRcdHZhciByZXN1bHQ7XG5cdFx0dmFyIF9TeW1i
b2wgPSByb290LlN5bWJvbDtcblx0XG5cdFx0aWYgKHR5cGVvZiBfU3ltYm9sID09PSAnZnVuY3Rp
b24nKSB7XG5cdFx0XHRpZiAoX1N5bWJvbC5vYnNlcnZhYmxlKSB7XG5cdFx0XHRcdHJlc3VsdCA9
IF9TeW1ib2wub2JzZXJ2YWJsZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlc3VsdCA9IF9T
eW1ib2woJ29ic2VydmFibGUnKTtcblx0XHRcdFx0X1N5bWJvbC5vYnNlcnZhYmxlID0gcmVzdWx0
O1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXN1bHQgPSAnQEBvYnNlcnZhYmxlJztc
blx0XHR9XG5cdFxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyMzEg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXywg
X193ZWJwYWNrX21vZHVsZV90ZW1wbGF0ZV9hcmd1bWVudF8wX18pIHtcblxuXHQvKipcblx0ICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBz
dHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhf
X3dlYnBhY2tfbW9kdWxlX3RlbXBsYXRlX2FyZ3VtZW50XzBfXyk7XG5cdFxuXHR2YXIgaW52YXJp
YW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBTdGF0aWMgcG9v
bGVycy4gU2V2ZXJhbCBjdXN0b20gdmVyc2lvbnMgZm9yIGVhY2ggcG90ZW50aWFsIG51bWJlciBv
ZlxuXHQgKiBhcmd1bWVudHMuIEEgY29tcGxldGVseSBnZW5lcmljIHBvb2xlciBpcyBlYXN5IHRv
IGltcGxlbWVudCwgYnV0IHdvdWxkXG5cdCAqIHJlcXVpcmUgYWNjZXNzaW5nIHRoZSBgYXJndW1l
bnRzYCBvYmplY3QuIEluIGVhY2ggb2YgdGhlc2UsIGB0aGlzYCByZWZlcnMgdG9cblx0ICogdGhl
IENsYXNzIGl0c2VsZiwgbm90IGFuIGluc3RhbmNlLiBJZiBhbnkgb3RoZXJzIGFyZSBuZWVkZWQs
IHNpbXBseSBhZGQgdGhlbVxuXHQgKiBoZXJlLCBvciBpbiB0aGVpciBvd24gZmlsZXMuXG5cdCAq
L1xuXHR2YXIgb25lQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoY29weUZpZWxkc0Zyb20pIHtc
blx0ICB2YXIgS2xhc3MgPSB0aGlzO1xuXHQgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3Ro
KSB7XG5cdCAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG5cdCAg
ICBLbGFzcy5jYWxsKGluc3RhbmNlLCBjb3B5RmllbGRzRnJvbSk7XG5cdCAgICByZXR1cm4gaW5z
dGFuY2U7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiBuZXcgS2xhc3MoY29weUZpZWxkc0Zy
b20pO1xuXHQgIH1cblx0fTtcblx0XG5cdHZhciB0d29Bcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9u
IChhMSwgYTIpIHtcblx0ICB2YXIgS2xhc3MgPSB0aGlzO1xuXHQgIGlmIChLbGFzcy5pbnN0YW5j
ZVBvb2wubGVuZ3RoKSB7XG5cdCAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wu
cG9wKCk7XG5cdCAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIpO1xuXHQgICAgcmV0dXJu
IGluc3RhbmNlO1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMik7
XG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIHRocmVlQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAo
YTEsIGEyLCBhMykge1xuXHQgIHZhciBLbGFzcyA9IHRoaXM7XG5cdCAgaWYgKEtsYXNzLmluc3Rh
bmNlUG9vbC5sZW5ndGgpIHtcblx0ICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9v
bC5wb3AoKTtcblx0ICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMpO1xuXHQgICAg
cmV0dXJuIGluc3RhbmNlO1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4gbmV3IEtsYXNzKGEx
LCBhMiwgYTMpO1xuXHQgIH1cblx0fTtcblx0XG5cdHZhciBmb3VyQXJndW1lbnRQb29sZXIgPSBm
dW5jdGlvbiAoYTEsIGEyLCBhMywgYTQpIHtcblx0ICB2YXIgS2xhc3MgPSB0aGlzO1xuXHQgIGlm
IChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG5cdCAgICB2YXIgaW5zdGFuY2UgPSBLbGFz
cy5pbnN0YW5jZVBvb2wucG9wKCk7XG5cdCAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIs
IGEzLCBhNCk7XG5cdCAgICByZXR1cm4gaW5zdGFuY2U7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJl
dHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMywgYTQpO1xuXHQgIH1cblx0fTtcblx0XG5cdHZhciBz
dGFuZGFyZFJlbGVhc2VyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG5cdCAgdmFyIEtsYXNzID0g
dGhpcztcblx0ICAhKGluc3RhbmNlIGluc3RhbmNlb2YgS2xhc3MpID8gIGZhbHNlID8gaW52YXJp
YW50KGZhbHNlLCAnVHJ5aW5nIHRvIHJlbGVhc2UgYW4gaW5zdGFuY2UgaW50byBhIHBvb2wgb2Yg
YSBkaWZmZXJlbnQgdHlwZS4nKSA6IF9wcm9kSW52YXJpYW50KCcyNScpIDogdm9pZCAwO1xuXHQg
IGluc3RhbmNlLmRlc3RydWN0b3IoKTtcblx0ICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0
aCA8IEtsYXNzLnBvb2xTaXplKSB7XG5cdCAgICBLbGFzcy5pbnN0YW5jZVBvb2wucHVzaChpbnN0
YW5jZSk7XG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIERFRkFVTFRfUE9PTF9TSVpFID0gMTA7XG5c
dHZhciBERUZBVUxUX1BPT0xFUiA9IG9uZUFyZ3VtZW50UG9vbGVyO1xuXHRcblx0LyoqXG5cdCAq
IEF1Z21lbnRzIGBDb3B5Q29uc3RydWN0b3JgIHRvIGJlIGEgcG9vbGFibGUgY2xhc3MsIGF1Z21l
bnRpbmcgb25seSB0aGUgY2xhc3Ncblx0ICogaXRzZWxmIChzdGF0aWNhbGx5KSBub3QgYWRkaW5n
IGFueSBwcm90b3R5cGljYWwgZmllbGRzLiBBbnkgQ29weUNvbnN0cnVjdG9yXG5cdCAqIHlvdSBn
aXZlIHRoaXMgbWF5IGhhdmUgYSBgcG9vbFNpemVgIHByb3BlcnR5LCBhbmQgd2lsbCBsb29rIGZv
ciBhXG5cdCAqIHByb3RvdHlwaWNhbCBgZGVzdHJ1Y3RvcmAgb24gaW5zdGFuY2VzLlxuXHQgKlxu
XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBDb3B5Q29uc3RydWN0b3IgQ29uc3RydWN0b3IgdGhhdCBj
YW4gYmUgdXNlZCB0byByZXNldC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gcG9vbGVyIEN1c3Rv
bWl6YWJsZSBwb29sZXIuXG5cdCAqL1xuXHR2YXIgYWRkUG9vbGluZ1RvID0gZnVuY3Rpb24gKENv
cHlDb25zdHJ1Y3RvciwgcG9vbGVyKSB7XG5cdCAgLy8gQ2FzdGluZyBhcyBhbnkgc28gdGhhdCBm
bG93IGlnbm9yZXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBhbmQgdHJ1c3RzXG5cdCAgLy8g
aXQgdG8gbWF0Y2ggdGhlIHR5cGUgd2UgZGVjbGFyZWRcblx0ICB2YXIgTmV3S2xhc3MgPSBDb3B5
Q29uc3RydWN0b3I7XG5cdCAgTmV3S2xhc3MuaW5zdGFuY2VQb29sID0gW107XG5cdCAgTmV3S2xh
c3MuZ2V0UG9vbGVkID0gcG9vbGVyIHx8IERFRkFVTFRfUE9PTEVSO1xuXHQgIGlmICghTmV3S2xh
c3MucG9vbFNpemUpIHtcblx0ICAgIE5ld0tsYXNzLnBvb2xTaXplID0gREVGQVVMVF9QT09MX1NJ
WkU7XG5cdCAgfVxuXHQgIE5ld0tsYXNzLnJlbGVhc2UgPSBzdGFuZGFyZFJlbGVhc2VyO1xuXHQg
IHJldHVybiBOZXdLbGFzcztcblx0fTtcblx0XG5cdHZhciBQb29sZWRDbGFzcyA9IHtcblx0ICBh
ZGRQb29saW5nVG86IGFkZFBvb2xpbmdUbyxcblx0ICBvbmVBcmd1bWVudFBvb2xlcjogb25lQXJn
dW1lbnRQb29sZXIsXG5cdCAgdHdvQXJndW1lbnRQb29sZXI6IHR3b0FyZ3VtZW50UG9vbGVyLFxu
XHQgIHRocmVlQXJndW1lbnRQb29sZXI6IHRocmVlQXJndW1lbnRQb29sZXIsXG5cdCAgZm91ckFy
Z3VtZW50UG9vbGVyOiBmb3VyQXJndW1lbnRQb29sZXJcblx0fTtcblx0XG5cdG1vZHVsZS5leHBv
cnRzID0gUG9vbGVkQ2xhc3M7XG5cbi8qKiovIH1cbi8qKioqKiovIF0pKSk7XG5cblxuLyoqIFdF
QlBBQ0sgRk9PVEVSICoqXG4gKiogc3RhdGljL2pzL21haW4uNjljZDk2NTUuanNcbiAqKi8iLCIg
XHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4g
XHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVf
Xyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0
XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVk
TW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxl
IChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVk
TW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZXhwb3J0czoge30sXG4gXHRcdFx0aWQ6IG1v
ZHVsZUlkLFxuIFx0XHRcdGxvYWRlZDogZmFsc2VcbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRl
IHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUu
ZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5c
biBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubG9hZGVkID0g
dHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRy
ZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVz
IG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9
IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tf
cmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGlj
X3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIuL1wiO1xuXG4gXHQvLyBMb2Fk
IGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVx
dWlyZV9fKDApO1xuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjay9ib290
c3RyYXAgMWMxNGVmMzQ3ZmI3NTIyOTI0NmNcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAoYykg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBVc2UgaW52YXJpYW50KCkg
dG8gYXNzZXJ0IHN0YXRlIHdoaWNoIHlvdXIgcHJvZ3JhbSBhc3N1bWVzIHRvIGJlIHRydWUuXG4g
KlxuICogUHJvdmlkZSBzcHJpbnRmLXN0eWxlIGZvcm1hdCAob25seSAlcyBpcyBzdXBwb3J0ZWQp
IGFuZCBhcmd1bWVudHNcbiAqIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBicm9r
ZSBhbmQgd2hhdCB5b3Ugd2VyZVxuICogZXhwZWN0aW5nLlxuICpcbiAqIFRoZSBpbnZhcmlhbnQg
bWVzc2FnZSB3aWxsIGJlIHN0cmlwcGVkIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgaW52YXJpYW50
XG4gKiB3aWxsIHJlbWFpbiB0byBlbnN1cmUgbG9naWMgZG9lcyBub3QgZGlmZmVyIGluIHByb2R1
Y3Rpb24uXG4gKi9cblxudmFyIHZhbGlkYXRlRm9ybWF0ID0gZnVuY3Rpb24gdmFsaWRhdGVGb3Jt
YXQoZm9ybWF0KSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgdmFsaWRhdGVGb3JtYXQgPSBmdW5jdGlvbiB2YWxpZGF0ZUZvcm1hdChmb3JtYXQp
IHtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJv
cignaW52YXJpYW50IHJlcXVpcmVzIGFuIGVycm9yIG1lc3NhZ2UgYXJndW1lbnQnKTtcbiAgICB9
XG4gIH07XG59XG5cbmZ1bmN0aW9uIGludmFyaWFudChjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwg
YywgZCwgZSwgZikge1xuICB2YWxpZGF0ZUZvcm1hdChmb3JtYXQpO1xuXG4gIGlmICghY29uZGl0
aW9uKSB7XG4gICAgdmFyIGVycm9yO1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xu
ICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNl
IHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgKyAnZm9yIHRoZSBmdWxsIGVycm9y
IG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nKTtcbiAgICB9IGVsc2Ug
e1xuICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07XG4gICAgICB2YXIgYXJnSW5k
ZXggPSAwO1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1
bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgICB9KSk7
XG4gICAgICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIH1cblxuICAg
IGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCBpbnZhcmlhbnQn
cyBvd24gZnJhbWVcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9
IGludmFyaWFudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9mYmpzL2xpYi9pbnZhcmlhbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxXG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJy4vZW1wdHlGdW5jdGlv
bicpO1xuXG4vKipcbiAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1dCBvbmx5IGxvZ3MgYSB3YXJu
aW5nIGlmIHRoZSBjb25kaXRpb24gaXMgbm90IG1ldC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8g
bG9nIGlzc3VlcyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgaW4gY3JpdGljYWxcbiAqIHBh
dGhzLiBSZW1vdmluZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50
cyB3aWxsIGtlZXAgdGhlXG4gKiBzYW1lIGxvZ2ljIGFuZCBmb2xsb3cgdGhlIHNhbWUgY29kZSBw
YXRocy5cbiAqL1xuXG52YXIgd2FybmluZyA9IGVtcHR5RnVuY3Rpb247XG5cbmlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBwcmludFdhcm5pbmcgPSBm
dW5jdGlvbiBwcmludFdhcm5pbmcoZm9ybWF0KSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3Vt
ZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkg
PSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3Vt
ZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgIHZhciBtZXNz
YWdlID0gJ1dhcm5pbmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xu
ICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZiBj
b25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtc
biAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFj
dCAtLS1cbiAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNv
IHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNp
dGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICB0aHJvdyBuZXcgRXJy
b3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoeCkge31cbiAgfTtcblxuICB3YXJuaW5nID0gZnVu
Y3Rpb24gd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCkge1xuICAgIGlmIChmb3JtYXQgPT09IHVu
ZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgd2FybmluZyhjb25kaXRpb24sIGZv
cm1hdCwgLi4uYXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAnICsgJ21lc3NhZ2UgYXJndW1lbnQn
KTtcbiAgICB9XG5cbiAgICBpZiAoZm9ybWF0LmluZGV4T2YoJ0ZhaWxlZCBDb21wb3NpdGUgcHJv
cFR5cGU6ICcpID09PSAwKSB7XG4gICAgICByZXR1cm47IC8vIElnbm9yZSBDb21wb3NpdGVDb21w
b25lbnQgcHJvcHR5cGUgY2hlY2suXG4gICAgfVxuXG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAg
ICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4y
ID4gMiA/IF9sZW4yIC0gMiA6IDApLCBfa2V5MiA9IDI7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKysp
IHtcbiAgICAgICAgYXJnc1tfa2V5MiAtIDJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1c
blxuICAgICAgcHJpbnRXYXJuaW5nLmFwcGx5KHVuZGVmaW5lZCwgW2Zvcm1hdF0uY29uY2F0KGFy
Z3MpKTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gd2FybmluZztcblxuXG4v
KioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9mYmpzL2xpYi93
YXJuaW5nLmpzXG4gKiogbW9kdWxlIGlkID0gMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG4ndXNlIHN0cmljdCc7
XG5cbi8qKlxuICogV0FSTklORzogRE8gTk9UIG1hbnVhbGx5IHJlcXVpcmUgdGhpcyBtb2R1bGUu
XG4gKiBUaGlzIGlzIGEgcmVwbGFjZW1lbnQgZm9yIGBpbnZhcmlhbnQoLi4uKWAgdXNlZCBieSB0
aGUgZXJyb3IgY29kZSBzeXN0ZW1cbiAqIGFuZCB3aWxsIF9vbmx5XyBiZSByZXF1aXJlZCBieSB0
aGUgY29ycmVzcG9uZGluZyBiYWJlbCBwYXNzLlxuICogSXQgYWx3YXlzIHRocm93cy5cbiAqL1xu
XG5mdW5jdGlvbiByZWFjdFByb2RJbnZhcmlhbnQoY29kZSkge1xuICB2YXIgYXJnQ291bnQgPSBh
cmd1bWVudHMubGVuZ3RoIC0gMTtcblxuICB2YXIgbWVzc2FnZSA9ICdNaW5pZmllZCBSZWFjdCBl
cnJvciAjJyArIGNvZGUgKyAnOyB2aXNpdCAnICsgJ2h0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8v
cmVhY3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PScgKyBjb2RlO1xuXG4gIGZv
ciAodmFyIGFyZ0lkeCA9IDA7IGFyZ0lkeCA8IGFyZ0NvdW50OyBhcmdJZHgrKykge1xuICAgIG1l
c3NhZ2UgKz0gJyZhcmdzW109JyArIGVuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbYXJnSWR4
ICsgMV0pO1xuICB9XG5cbiAgbWVzc2FnZSArPSAnIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVz
ZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCcgKyAnIGZvciBmdWxsIGVycm9ycyBh
bmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLic7XG5cbiAgdmFyIGVycm9yID0gbmV3IEVy
cm9yKG1lc3NhZ2UpO1xuICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICBl
cnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgcmVhY3RQcm9kSW52
YXJpYW50J3Mgb3duIGZyYW1lXG5cbiAgdGhyb3cgZXJyb3I7XG59XG5cbm1vZHVsZS5leHBvcnRz
ID0gcmVhY3RQcm9kSW52YXJpYW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvcmVhY3RQcm9kSW52YXJpYW50LmpzXG4g
KiogbW9kdWxlIGlkID0gM1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLypcbm9iamVj
dC1hc3NpZ25cbihjKSBTaW5kcmUgU29yaHVzXG5AbGljZW5zZSBNSVRcbiovXG5cbid1c2Ugc3Ry
aWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG52YXIgZ2V0T3duUHJv
cGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBoYXNPd25Q
cm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgcHJvcElzRW51
bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbmZ1bmN0
aW9uIHRvT2JqZWN0KHZhbCkge1xuXHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZp
bmVkKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUg
Y2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTtcblx0fVxuXG5cdHJldHVybiBPYmplY3Qo
dmFsKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkge1xuXHR0cnkge1xuXHRcdGlm
ICghT2JqZWN0LmFzc2lnbikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8v
IERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJz
aW9ucy5cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0
YWlsP2lkPTQxMThcblx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsgIC8vIGVzbGlu
dC1kaXNhYmxlLWxpbmUgbm8tbmV3LXdyYXBwZXJzXG5cdFx0dGVzdDFbNV0gPSAnZGUnO1xuXHRc
dGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1Jykge1xuXHRc
dFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5v
cmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDIgPSB7fTtcblx0XHRm
b3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdHRlc3QyWydfJyArIFN0cmluZy5m
cm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHR9XG5cdFx0dmFyIG9yZGVyMiA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtcblx0XHRcdHJldHVybiB0
ZXN0MltuXTtcblx0XHR9KTtcblx0XHRpZiAob3JkZXIyLmpvaW4oJycpICE9PSAnMDEyMzQ1Njc4
OScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3Mu
Y2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QzID0g
e307XG5cdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlv
biAobGV0dGVyKSB7XG5cdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdH0pO1xuXHRc
dGlmIChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpvaW4oJycpICE9PVxu
XHRcdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5c
dFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdC8vIFdlIGRv
bid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0dGVyIHRvIGJlIHNh
ZmUuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvdWxk
VXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7
XG5cdHZhciBmcm9tO1xuXHR2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQpO1xuXHR2YXIgc3ltYm9s
cztcblxuXHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykge1xuXHRc
dGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTtcblxuXHRcdGZvciAodmFyIGtleSBpbiBmcm9t
KSB7XG5cdFx0XHRpZiAoaGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkpKSB7XG5cdFx0XHRc
dHRvW2tleV0gPSBmcm9tW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGdldE93blBy
b3BlcnR5U3ltYm9scykge1xuXHRcdFx0c3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9scyhm
cm9tKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xu
XHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7XG5c
dFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xuXHRcdFx0XHR9XG5c
dFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRvO1xufTtcblxuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L29iamVjdC1hc3NpZ24vaW5kZXgu
anNcbiAqKiBtb2R1bGUgaWQgPSA0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipc
biAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJ
bnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgRE9NUHJv
cGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7XG52YXIgUmVhY3RET01Db21wb25lbnRG
bGFncyA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRGbGFncycpO1xuXG52YXIgaW52YXJp
YW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBBVFRSX05BTUUgPSBE
T01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRTtcbnZhciBGbGFncyA9IFJlYWN0RE9NQ29tcG9u
ZW50RmxhZ3M7XG5cbnZhciBpbnRlcm5hbEluc3RhbmNlS2V5ID0gJ19fcmVhY3RJbnRlcm5hbElu
c3RhbmNlJCcgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtcblxuLyoqXG4g
KiBDaGVjayBpZiBhIGdpdmVuIG5vZGUgc2hvdWxkIGJlIGNhY2hlZC5cbiAqL1xuZnVuY3Rpb24g
c2hvdWxkUHJlY2FjaGVOb2RlKG5vZGUsIG5vZGVJRCkge1xuICByZXR1cm4gbm9kZS5ub2RlVHlw
ZSA9PT0gMSAmJiBub2RlLmdldEF0dHJpYnV0ZShBVFRSX05BTUUpID09PSBTdHJpbmcobm9kZUlE
KSB8fCBub2RlLm5vZGVUeXBlID09PSA4ICYmIG5vZGUubm9kZVZhbHVlID09PSAnIHJlYWN0LXRl
eHQ6ICcgKyBub2RlSUQgKyAnICcgfHwgbm9kZS5ub2RlVHlwZSA9PT0gOCAmJiBub2RlLm5vZGVW
YWx1ZSA9PT0gJyByZWFjdC1lbXB0eTogJyArIG5vZGVJRCArICcgJztcbn1cblxuLyoqXG4gKiBE
cmlsbCBkb3duICh0aHJvdWdoIGNvbXBvc2l0ZXMgYW5kIGVtcHR5IGNvbXBvbmVudHMpIHVudGls
IHdlIGdldCBhIGhvc3Qgb3JcbiAqIGhvc3QgdGV4dCBjb21wb25lbnQuXG4gKlxuICogVGhpcyBp
cyBwcmV0dHkgcG9seW1vcnBoaWMgYnV0IHVuYXZvaWRhYmxlIHdpdGggdGhlIGN1cnJlbnQgc3Ry
dWN0dXJlIHdlIGhhdmVcbiAqIGZvciBgX3JlbmRlcmVkQ2hpbGRyZW5gLlxuICovXG5mdW5jdGlv
biBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICB2YXIg
cmVuZGVyZWQ7XG4gIHdoaWxlIChyZW5kZXJlZCA9IGNvbXBvbmVudC5fcmVuZGVyZWRDb21wb25l
bnQpIHtcbiAgICBjb21wb25lbnQgPSByZW5kZXJlZDtcbiAgfVxuICByZXR1cm4gY29tcG9uZW50
O1xufVxuXG4vKipcbiAqIFBvcHVsYXRlIGBfaG9zdE5vZGVgIG9uIHRoZSByZW5kZXJlZCBob3N0
L3RleHQgY29tcG9uZW50IHdpdGggdGhlIGdpdmVuXG4gKiBET00gbm9kZS4gVGhlIHBhc3NlZCBg
aW5zdGAgY2FuIGJlIGEgY29tcG9zaXRlLlxuICovXG5mdW5jdGlvbiBwcmVjYWNoZU5vZGUoaW5z
dCwgbm9kZSkge1xuICB2YXIgaG9zdEluc3QgPSBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29t
cG9uZW50KGluc3QpO1xuICBob3N0SW5zdC5faG9zdE5vZGUgPSBub2RlO1xuICBub2RlW2ludGVy
bmFsSW5zdGFuY2VLZXldID0gaG9zdEluc3Q7XG59XG5cbmZ1bmN0aW9uIHVuY2FjaGVOb2RlKGlu
c3QpIHtcbiAgdmFyIG5vZGUgPSBpbnN0Ll9ob3N0Tm9kZTtcbiAgaWYgKG5vZGUpIHtcbiAgICBk
ZWxldGUgbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XTtcbiAgICBpbnN0Ll9ob3N0Tm9kZSA9IG51
bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBQb3B1bGF0ZSBgX2hvc3ROb2RlYCBvbiBlYWNoIGNoaWxk
IG9mIGBpbnN0YCwgYXNzdW1pbmcgdGhhdCB0aGUgY2hpbGRyZW5cbiAqIG1hdGNoIHVwIHdpdGgg
dGhlIERPTSAoZWxlbWVudCkgY2hpbGRyZW4gb2YgYG5vZGVgLlxuICpcbiAqIFdlIGNhY2hlIGVu
dGlyZSBsZXZlbHMgYXQgb25jZSB0byBhdm9pZCBhbiBuXjIgcHJvYmxlbSB3aGVyZSB3ZSBhY2Nl
c3MgdGhlXG4gKiBjaGlsZHJlbiBvZiBhIG5vZGUgc2VxdWVudGlhbGx5IGFuZCBoYXZlIHRvIHdh
bGsgZnJvbSB0aGUgc3RhcnQgdG8gb3VyIHRhcmdldFxuICogbm9kZSBldmVyeSB0aW1lLlxuICpc
biAqIFNpbmNlIHdlIHVwZGF0ZSBgX3JlbmRlcmVkQ2hpbGRyZW5gIGFuZCB0aGUgYWN0dWFsIERP
TSBhdCAoc2xpZ2h0bHkpXG4gKiBkaWZmZXJlbnQgdGltZXMsIHdlIGNvdWxkIHJhY2UgaGVyZSBh
bmQgc2VlIGEgbmV3ZXIgYF9yZW5kZXJlZENoaWxkcmVuYCB0aGFuXG4gKiB0aGUgRE9NIG5vZGVz
IHdlIHNlZS4gVG8gYXZvaWQgdGhpcywgUmVhY3RNdWx0aUNoaWxkIGNhbGxzXG4gKiBgcHJlcGFy
ZVRvTWFuYWdlQ2hpbGRyZW5gIGJlZm9yZSB3ZSBjaGFuZ2UgYF9yZW5kZXJlZENoaWxkcmVuYCwg
YXQgd2hpY2hcbiAqIHRpbWUgdGhlIGNvbnRhaW5lcidzIGNoaWxkIG5vZGVzIGFyZSBhbHdheXMg
Y2FjaGVkICh1bnRpbCBpdCB1bm1vdW50cykuXG4gKi9cbmZ1bmN0aW9uIHByZWNhY2hlQ2hpbGRO
b2RlcyhpbnN0LCBub2RlKSB7XG4gIGlmIChpbnN0Ll9mbGFncyAmIEZsYWdzLmhhc0NhY2hlZENo
aWxkTm9kZXMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIGNoaWxkcmVuID0gaW5zdC5fcmVu
ZGVyZWRDaGlsZHJlbjtcbiAgdmFyIGNoaWxkTm9kZSA9IG5vZGUuZmlyc3RDaGlsZDtcbiAgb3V0
ZXI6IGZvciAodmFyIG5hbWUgaW4gY2hpbGRyZW4pIHtcbiAgICBpZiAoIWNoaWxkcmVuLmhhc093
blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdmFyIGNoaWxk
SW5zdCA9IGNoaWxkcmVuW25hbWVdO1xuICAgIHZhciBjaGlsZElEID0gZ2V0UmVuZGVyZWRIb3N0
T3JUZXh0RnJvbUNvbXBvbmVudChjaGlsZEluc3QpLl9kb21JRDtcbiAgICBpZiAoY2hpbGRJRCA9
PT0gMCkge1xuICAgICAgLy8gV2UncmUgY3VycmVudGx5IHVubW91bnRpbmcgdGhpcyBjaGlsZCBp
biBSZWFjdE11bHRpQ2hpbGQ7IHNraXAgaXQuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAg
Ly8gV2UgYXNzdW1lIHRoZSBjaGlsZCBub2RlcyBhcmUgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhl
IGNoaWxkIGluc3RhbmNlcy5cbiAgICBmb3IgKDsgY2hpbGROb2RlICE9PSBudWxsOyBjaGlsZE5v
ZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmcpIHtcbiAgICAgIGlmIChzaG91bGRQcmVjYWNoZU5v
ZGUoY2hpbGROb2RlLCBjaGlsZElEKSkge1xuICAgICAgICBwcmVjYWNoZU5vZGUoY2hpbGRJbnN0
LCBjaGlsZE5vZGUpO1xuICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgIH1cbiAgICB9XG4g
ICAgLy8gV2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBET00gY2hpbGRyZW4gd2l0aG91dCBmaW5k
aW5nIGFuIElEIG1hdGNoLlxuICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdVbmFibGUgdG8gZmluZCBlbGVtZW50IHdp
dGggSUQgJXMuJywgY2hpbGRJRCkgOiBfcHJvZEludmFyaWFudCgnMzInLCBjaGlsZElEKSA6IHZv
aWQgMDtcbiAgfVxuICBpbnN0Ll9mbGFncyB8PSBGbGFncy5oYXNDYWNoZWRDaGlsZE5vZGVzO1xu
fVxuXG4vKipcbiAqIEdpdmVuIGEgRE9NIG5vZGUsIHJldHVybiB0aGUgY2xvc2VzdCBSZWFjdERP
TUNvbXBvbmVudCBvclxuICogUmVhY3RET01UZXh0Q29tcG9uZW50IGluc3RhbmNlIGFuY2VzdG9y
LlxuICovXG5mdW5jdGlvbiBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShub2RlKSB7XG4gIGlm
IChub2RlW2ludGVybmFsSW5zdGFuY2VLZXldKSB7XG4gICAgcmV0dXJuIG5vZGVbaW50ZXJuYWxJ
bnN0YW5jZUtleV07XG4gIH1cblxuICAvLyBXYWxrIHVwIHRoZSB0cmVlIHVudGlsIHdlIGZpbmQg
YW4gYW5jZXN0b3Igd2hvc2UgaW5zdGFuY2Ugd2UgaGF2ZSBjYWNoZWQuXG4gIHZhciBwYXJlbnRz
ID0gW107XG4gIHdoaWxlICghbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XSkge1xuICAgIHBhcmVu
dHMucHVzaChub2RlKTtcbiAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2RlID0g
bm9kZS5wYXJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUb3Agb2YgdGhlIHRyZWUu
IFRoaXMgbm9kZSBtdXN0IG5vdCBiZSBwYXJ0IG9mIGEgUmVhY3QgdHJlZSAob3IgaXNcbiAgICAg
IC8vIHVubW91bnRlZCwgcG90ZW50aWFsbHkpLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxu
ICB9XG5cbiAgdmFyIGNsb3Nlc3Q7XG4gIHZhciBpbnN0O1xuICBmb3IgKDsgbm9kZSAmJiAoaW5z
dCA9IG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0pOyBub2RlID0gcGFyZW50cy5wb3AoKSkge1xu
ICAgIGNsb3Nlc3QgPSBpbnN0O1xuICAgIGlmIChwYXJlbnRzLmxlbmd0aCkge1xuICAgICAgcHJl
Y2FjaGVDaGlsZE5vZGVzKGluc3QsIG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbG9z
ZXN0O1xufVxuXG4vKipcbiAqIEdpdmVuIGEgRE9NIG5vZGUsIHJldHVybiB0aGUgUmVhY3RET01D
b21wb25lbnQgb3IgUmVhY3RET01UZXh0Q29tcG9uZW50XG4gKiBpbnN0YW5jZSwgb3IgbnVsbCBp
ZiB0aGUgbm9kZSB3YXMgbm90IHJlbmRlcmVkIGJ5IHRoaXMgUmVhY3QuXG4gKi9cbmZ1bmN0aW9u
IGdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkge1xuICB2YXIgaW5zdCA9IGdldENsb3Nlc3RJbnN0
YW5jZUZyb21Ob2RlKG5vZGUpO1xuICBpZiAoaW5zdCAhPSBudWxsICYmIGluc3QuX2hvc3ROb2Rl
ID09PSBub2RlKSB7XG4gICAgcmV0dXJuIGluc3Q7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51
bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBHaXZlbiBhIFJlYWN0RE9NQ29tcG9uZW50IG9yIFJlYWN0
RE9NVGV4dENvbXBvbmVudCwgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nXG4gKiBET00gbm9kZS5c
biAqL1xuZnVuY3Rpb24gZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KSB7XG4gIC8vIFdpdGhvdXQg
dGhpcyBmaXJzdCBpbnZhcmlhbnQsIHBhc3NpbmcgYSBub24tRE9NLWNvbXBvbmVudCB0cmlnZ2Vy
cyB0aGUgbmV4dFxuICAvLyBpbnZhcmlhbnQgZm9yIGEgbWlzc2luZyBwYXJlbnQsIHdoaWNoIGlz
IHN1cGVyIGNvbmZ1c2luZy5cbiAgIShpbnN0Ll9ob3N0Tm9kZSAhPT0gdW5kZWZpbmVkKSA/IHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdn
ZXROb2RlRnJvbUluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQo
JzMzJykgOiB2b2lkIDA7XG5cbiAgaWYgKGluc3QuX2hvc3ROb2RlKSB7XG4gICAgcmV0dXJuIGlu
c3QuX2hvc3ROb2RlO1xuICB9XG5cbiAgLy8gV2FsayB1cCB0aGUgdHJlZSB1bnRpbCB3ZSBmaW5k
IGFuIGFuY2VzdG9yIHdob3NlIERPTSBub2RlIHdlIGhhdmUgY2FjaGVkLlxuICB2YXIgcGFyZW50
cyA9IFtdO1xuICB3aGlsZSAoIWluc3QuX2hvc3ROb2RlKSB7XG4gICAgcGFyZW50cy5wdXNoKGlu
c3QpO1xuICAgICFpbnN0Ll9ob3N0UGFyZW50ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0IERPTSB0cmVlIHJvb3Qgc2hvdWxk
IGFsd2F5cyBoYXZlIGEgbm9kZSByZWZlcmVuY2UuJykgOiBfcHJvZEludmFyaWFudCgnMzQnKSA6
IHZvaWQgMDtcbiAgICBpbnN0ID0gaW5zdC5faG9zdFBhcmVudDtcbiAgfVxuXG4gIC8vIE5vdyBw
YXJlbnRzIGNvbnRhaW5zIGVhY2ggYW5jZXN0b3IgdGhhdCBkb2VzICpub3QqIGhhdmUgYSBjYWNo
ZWQgbmF0aXZlXG4gIC8vIG5vZGUsIGFuZCBgaW5zdGAgaXMgdGhlIGRlZXBlc3QgYW5jZXN0b3Ig
dGhhdCBkb2VzLlxuICBmb3IgKDsgcGFyZW50cy5sZW5ndGg7IGluc3QgPSBwYXJlbnRzLnBvcCgp
KSB7XG4gICAgcHJlY2FjaGVDaGlsZE5vZGVzKGluc3QsIGluc3QuX2hvc3ROb2RlKTtcbiAgfVxu
XG4gIHJldHVybiBpbnN0Ll9ob3N0Tm9kZTtcbn1cblxudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJl
ZSA9IHtcbiAgZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGU6IGdldENsb3Nlc3RJbnN0YW5jZUZy
b21Ob2RlLFxuICBnZXRJbnN0YW5jZUZyb21Ob2RlOiBnZXRJbnN0YW5jZUZyb21Ob2RlLFxuICBn
ZXROb2RlRnJvbUluc3RhbmNlOiBnZXROb2RlRnJvbUluc3RhbmNlLFxuICBwcmVjYWNoZUNoaWxk
Tm9kZXM6IHByZWNhY2hlQ2hpbGROb2RlcyxcbiAgcHJlY2FjaGVOb2RlOiBwcmVjYWNoZU5vZGUs
XG4gIHVuY2FjaGVOb2RlOiB1bmNhY2hlTm9kZVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFj
dERPTUNvbXBvbmVudFRyZWU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUNvbXBvbmVudFRyZWUuanNcbiAq
KiBtb2R1bGUgaWQgPSA1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENv
cHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGNhblVzZURP
TSA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAm
JiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbi8qKlxuICogU2ltcGxlLCBsaWdo
dHdlaWdodCBtb2R1bGUgYXNzaXN0aW5nIHdpdGggdGhlIGRldGVjdGlvbiBhbmQgY29udGV4dCBv
ZlxuICogV29ya2VyLiBIZWxwcyBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYW5kIGFsbG93
cyBjb2RlIHRvIHJlYXNvbiBhYm91dFxuICogd2hldGhlciBvciBub3QgdGhleSBhcmUgaW4gYSBX
b3JrZXIsIGV2ZW4gaWYgdGhleSBuZXZlciBpbmNsdWRlIHRoZSBtYWluXG4gKiBgUmVhY3RXb3Jr
ZXJgIGRlcGVuZGVuY3kuXG4gKi9cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHtcblxuICBj
YW5Vc2VET006IGNhblVzZURPTSxcblxuICBjYW5Vc2VXb3JrZXJzOiB0eXBlb2YgV29ya2VyICE9
PSAndW5kZWZpbmVkJyxcblxuICBjYW5Vc2VFdmVudExpc3RlbmVyczogY2FuVXNlRE9NICYmICEh
KHdpbmRvdy5hZGRFdmVudExpc3RlbmVyIHx8IHdpbmRvdy5hdHRhY2hFdmVudCksXG5cbiAgY2Fu
VXNlVmlld3BvcnQ6IGNhblVzZURPTSAmJiAhIXdpbmRvdy5zY3JlZW4sXG5cbiAgaXNJbldvcmtl
cjogIWNhblVzZURPTSAvLyBGb3Igbm93LCB0aGlzIGlzIHRydWUgLSBtaWdodCBjaGFuZ2UgaW4g
dGhlIGZ1dHVyZS5cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFeGVjdXRpb25FbnZpcm9ubWVu
dDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9m
YmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDZcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKipcbiAqIENvcHly
aWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuZnVuY3Rpb24gbWFrZUVtcHR5RnVuY3Rpb24o
YXJnKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGFyZztcbiAgfTtcbn1c
blxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgYW5kIGRpc2NhcmRzIGlucHV0czsgaXQg
aGFzIG5vIHNpZGUgZWZmZWN0cy4gVGhpcyBpc1xuICogcHJpbWFyaWx5IHVzZWZ1bCBpZGlvbWF0
aWNhbGx5IGZvciBvdmVycmlkYWJsZSBmdW5jdGlvbiBlbmRwb2ludHMgd2hpY2hcbiAqIGFsd2F5
cyBuZWVkIHRvIGJlIGNhbGxhYmxlLCBzaW5jZSBKUyBsYWNrcyBhIG51bGwtY2FsbCBpZGlvbSBh
bGEgQ29jb2EuXG4gKi9cbnZhciBlbXB0eUZ1bmN0aW9uID0gZnVuY3Rpb24gZW1wdHlGdW5jdGlv
bigpIHt9O1xuXG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zID0gbWFrZUVtcHR5RnVuY3Rpb247
XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2UgPSBtYWtlRW1wdHlGdW5jdGlvbihmYWxz
ZSk7XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZSA9IG1ha2VFbXB0eUZ1bmN0aW9uKHRy
dWUpO1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGwgPSBtYWtlRW1wdHlGdW5jdGlvbihu
dWxsKTtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUaGlzID0gZnVuY3Rpb24gKCkge1xuICBy
ZXR1cm4gdGhpcztcbn07XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQgPSBmdW5j
dGlvbiAoYXJnKSB7XG4gIHJldHVybiBhcmc7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVtcHR5
RnVuY3Rpb247XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAq
KiAuL34vZmJqcy9saWIvZW1wdHlGdW5jdGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDdcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTYtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gVHJ1c3QgdGhlIGRldmVsb3BlciB0byBvbmx5IHVz
ZSBSZWFjdEluc3RydW1lbnRhdGlvbiB3aXRoIGEgX19ERVZfXyBjaGVja1xuXG52YXIgZGVidWdU
b29sID0gbnVsbDtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgdmFyIFJlYWN0RGVidWdUb29sID0gcmVxdWlyZSgnLi9SZWFjdERlYnVnVG9vbCcpO1xu
ICBkZWJ1Z1Rvb2wgPSBSZWFjdERlYnVnVG9vbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGRl
YnVnVG9vbDogZGVidWdUb29sIH07XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdEluc3RydW1lbnRhdGlvbi5qc1xu
ICoqIG1vZHVsZSBpZCA9IDhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFy
aWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50JyksXG4gICAgX2Fzc2lnbiA9IHJl
cXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIENhbGxiYWNrUXVldWUgPSByZXF1aXJlKCcu
L0NhbGxiYWNrUXVldWUnKTtcbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xh
c3MnKTtcbnZhciBSZWFjdEZlYXR1cmVGbGFncyA9IHJlcXVpcmUoJy4vUmVhY3RGZWF0dXJlRmxh
Z3MnKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicp
O1xudmFyIFRyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi9UcmFuc2FjdGlvbicpO1xuXG52YXIgaW52
YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBkaXJ0eUNvbXBv
bmVudHMgPSBbXTtcbnZhciB1cGRhdGVCYXRjaE51bWJlciA9IDA7XG52YXIgYXNhcENhbGxiYWNr
UXVldWUgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZCgpO1xudmFyIGFzYXBFbnF1ZXVlZCA9IGZh
bHNlO1xuXG52YXIgYmF0Y2hpbmdTdHJhdGVneSA9IG51bGw7XG5cbmZ1bmN0aW9uIGVuc3VyZUlu
amVjdGVkKCkge1xuICAhKFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uICYm
IGJhdGNoaW5nU3RyYXRlZ3kpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBpbmplY3QgYSByZWNvbmNp
bGUgdHJhbnNhY3Rpb24gY2xhc3MgYW5kIGJhdGNoaW5nIHN0cmF0ZWd5JykgOiBfcHJvZEludmFy
aWFudCgnMTIzJykgOiB2b2lkIDA7XG59XG5cbnZhciBORVNURURfVVBEQVRFUyA9IHtcbiAgaW5p
dGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoID0g
ZGlydHlDb21wb25lbnRzLmxlbmd0aDtcbiAgfSxcbiAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAg
ICBpZiAodGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggIT09IGRpcnR5Q29tcG9uZW50cy5sZW5n
dGgpIHtcbiAgICAgIC8vIEFkZGl0aW9uYWwgdXBkYXRlcyB3ZXJlIGVucXVldWVkIGJ5IGNvbXBv
bmVudERpZFVwZGF0ZSBoYW5kbGVycyBvclxuICAgICAgLy8gc2ltaWxhcjsgYmVmb3JlIG91ciBv
d24gVVBEQVRFX1FVRVVFSU5HIHdyYXBwZXIgY2xvc2VzLCB3ZSB3YW50IHRvIHJ1blxuICAgICAg
Ly8gdGhlc2UgbmV3IHVwZGF0ZXMgc28gdGhhdCBpZiBBJ3MgY29tcG9uZW50RGlkVXBkYXRlIGNh
bGxzIHNldFN0YXRlIG9uXG4gICAgICAvLyBCLCBCIHdpbGwgdXBkYXRlIGJlZm9yZSB0aGUgY2Fs
bGJhY2sgQSdzIHVwZGF0ZXIgcHJvdmlkZWQgd2hlbiBjYWxsaW5nXG4gICAgICAvLyBzZXRTdGF0
ZS5cbiAgICAgIGRpcnR5Q29tcG9uZW50cy5zcGxpY2UoMCwgdGhpcy5kaXJ0eUNvbXBvbmVudHNM
ZW5ndGgpO1xuICAgICAgZmx1c2hCYXRjaGVkVXBkYXRlcygpO1xuICAgIH0gZWxzZSB7XG4gICAg
ICBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoID0gMDtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBVUERB
VEVfUVVFVUVJTkcgPSB7XG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNh
bGxiYWNrUXVldWUucmVzZXQoKTtcbiAgfSxcbiAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAgICB0
aGlzLmNhbGxiYWNrUXVldWUubm90aWZ5QWxsKCk7XG4gIH1cbn07XG5cbnZhciBUUkFOU0FDVElP
Tl9XUkFQUEVSUyA9IFtORVNURURfVVBEQVRFUywgVVBEQVRFX1FVRVVFSU5HXTtcblxuZnVuY3Rp
b24gUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbigpIHtcbiAgdGhpcy5yZWluaXRpYWxpemVU
cmFuc2FjdGlvbigpO1xuICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9IG51bGw7XG4gIHRo
aXMuY2FsbGJhY2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7XG4gIHRoaXMucmVj
b25jaWxlVHJhbnNhY3Rpb24gPSBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bi5nZXRQb29sZWQoXG4gIC8qIHVzZUNyZWF0ZUVsZW1lbnQgKi90cnVlKTtcbn1cblxuX2Fzc2ln
bihSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIHtc
biAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBUUkFO
U0FDVElPTl9XUkFQUEVSUztcbiAgfSxcblxuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG4g
ICAgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggPSBudWxsO1xuICAgIENhbGxiYWNrUXVldWUu
cmVsZWFzZSh0aGlzLmNhbGxiYWNrUXVldWUpO1xuICAgIHRoaXMuY2FsbGJhY2tRdWV1ZSA9IG51
bGw7XG4gICAgUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0
aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKTtcbiAgICB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9u
ID0gbnVsbDtcbiAgfSxcblxuICBwZXJmb3JtOiBmdW5jdGlvbiAobWV0aG9kLCBzY29wZSwgYSkg
e1xuICAgIC8vIEVzc2VudGlhbGx5IGNhbGxzIGB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLnBl
cmZvcm0obWV0aG9kLCBzY29wZSwgYSlgXG4gICAgLy8gd2l0aCB0aGlzIHRyYW5zYWN0aW9uJ3Mg
d3JhcHBlcnMgYXJvdW5kIGl0LlxuICAgIHJldHVybiBUcmFuc2FjdGlvbi5wZXJmb3JtLmNhbGwo
dGhpcywgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtLCB0aGlzLnJlY29uY2lsZVRy
YW5zYWN0aW9uLCBtZXRob2QsIHNjb3BlLCBhKTtcbiAgfVxufSk7XG5cblBvb2xlZENsYXNzLmFk
ZFBvb2xpbmdUbyhSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uKTtcblxuZnVuY3Rpb24gYmF0
Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpIHtcbiAgZW5zdXJlSW5qZWN0ZWQo
KTtcbiAgcmV0dXJuIGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEs
IGIsIGMsIGQsIGUpO1xufVxuXG4vKipcbiAqIEFycmF5IGNvbXBhcmF0b3IgZm9yIFJlYWN0Q29t
cG9uZW50cyBieSBtb3VudCBvcmRlcmluZy5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50
fSBjMSBmaXJzdCBjb21wb25lbnQgeW91J3JlIGNvbXBhcmluZ1xuICogQHBhcmFtIHtSZWFjdENv
bXBvbmVudH0gYzIgc2Vjb25kIGNvbXBvbmVudCB5b3UncmUgY29tcGFyaW5nXG4gKiBAcmV0dXJu
IHtudW1iZXJ9IFJldHVybiB2YWx1ZSB1c2FibGUgYnkgQXJyYXkucHJvdG90eXBlLnNvcnQoKS5c
biAqL1xuZnVuY3Rpb24gbW91bnRPcmRlckNvbXBhcmF0b3IoYzEsIGMyKSB7XG4gIHJldHVybiBj
MS5fbW91bnRPcmRlciAtIGMyLl9tb3VudE9yZGVyO1xufVxuXG5mdW5jdGlvbiBydW5CYXRjaGVk
VXBkYXRlcyh0cmFuc2FjdGlvbikge1xuICB2YXIgbGVuID0gdHJhbnNhY3Rpb24uZGlydHlDb21w
b25lbnRzTGVuZ3RoO1xuICAhKGxlbiA9PT0gZGlydHlDb21wb25lbnRzLmxlbmd0aCkgPyBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhw
ZWN0ZWQgZmx1c2ggdHJhbnNhY3Rpb25cXCdzIHN0b3JlZCBkaXJ0eS1jb21wb25lbnRzIGxlbmd0
aCAoJXMpIHRvIG1hdGNoIGRpcnR5LWNvbXBvbmVudHMgYXJyYXkgbGVuZ3RoICglcykuJywgbGVu
LCBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSA6IF9wcm9kSW52YXJpYW50KCcxMjQnLCBsZW4sIGRp
cnR5Q29tcG9uZW50cy5sZW5ndGgpIDogdm9pZCAwO1xuXG4gIC8vIFNpbmNlIHJlY29uY2lsaW5n
IGEgY29tcG9uZW50IGhpZ2hlciBpbiB0aGUgb3duZXIgaGllcmFyY2h5IHVzdWFsbHkgKG5vdFxu
ICAvLyBhbHdheXMgLS0gc2VlIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpKSB3aWxsIHJlY29uY2ls
ZSBjaGlsZHJlbiwgcmVjb25jaWxlXG4gIC8vIHRoZW0gYmVmb3JlIHRoZWlyIGNoaWxkcmVuIGJ5
IHNvcnRpbmcgdGhlIGFycmF5LlxuICBkaXJ0eUNvbXBvbmVudHMuc29ydChtb3VudE9yZGVyQ29t
cGFyYXRvcik7XG5cbiAgLy8gQW55IHVwZGF0ZXMgZW5xdWV1ZWQgd2hpbGUgcmVjb25jaWxpbmcg
bXVzdCBiZSBwZXJmb3JtZWQgYWZ0ZXIgdGhpcyBlbnRpcmVcbiAgLy8gYmF0Y2guIE90aGVyd2lz
ZSwgaWYgZGlydHlDb21wb25lbnRzIGlzIFtBLCBCXSB3aGVyZSBBIGhhcyBjaGlsZHJlbiBCIGFu
ZFxuICAvLyBDLCBCIGNvdWxkIHVwZGF0ZSB0d2ljZSBpbiBhIHNpbmdsZSBiYXRjaCBpZiBDJ3Mg
cmVuZGVyIGVucXVldWVzIGFuIHVwZGF0ZVxuICAvLyB0byBCIChzaW5jZSBCIHdvdWxkIGhhdmUg
YWxyZWFkeSB1cGRhdGVkLCB3ZSBzaG91bGQgc2tpcCBpdCwgYW5kIHRoZSBvbmx5XG4gIC8vIHdh
eSB3ZSBjYW4ga25vdyB0byBkbyBzbyBpcyBieSBjaGVja2luZyB0aGUgYmF0Y2ggY291bnRlciku
XG4gIHVwZGF0ZUJhdGNoTnVtYmVyKys7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkr
Kykge1xuICAgIC8vIElmIGEgY29tcG9uZW50IGlzIHVubW91bnRlZCBiZWZvcmUgcGVuZGluZyBj
aGFuZ2VzIGFwcGx5LCBpdCB3aWxsIHN0aWxsXG4gICAgLy8gYmUgaGVyZSwgYnV0IHdlIGFzc3Vt
ZSB0aGF0IGl0IGhhcyBjbGVhcmVkIGl0cyBfcGVuZGluZ0NhbGxiYWNrcyBhbmRcbiAgICAvLyB0
aGF0IHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSBpcyBhIG5vb3AuXG4gICAgdmFyIGNvbXBvbmVu
dCA9IGRpcnR5Q29tcG9uZW50c1tpXTtcblxuICAgIC8vIElmIHBlcmZvcm1VcGRhdGVJZk5lY2Vz
c2FyeSBoYXBwZW5zIHRvIGVucXVldWUgYW55IG5ldyB1cGRhdGVzLCB3ZVxuICAgIC8vIHNob3Vs
ZG4ndCBleGVjdXRlIHRoZSBjYWxsYmFja3MgdW50aWwgdGhlIG5leHQgcmVuZGVyIGhhcHBlbnMs
IHNvXG4gICAgLy8gc3Rhc2ggdGhlIGNhbGxiYWNrcyBmaXJzdFxuICAgIHZhciBjYWxsYmFja3Mg
PSBjb21wb25lbnQuX3BlbmRpbmdDYWxsYmFja3M7XG4gICAgY29tcG9uZW50Ll9wZW5kaW5nQ2Fs
bGJhY2tzID0gbnVsbDtcblxuICAgIHZhciBtYXJrZXJOYW1lO1xuICAgIGlmIChSZWFjdEZlYXR1
cmVGbGFncy5sb2dUb3BMZXZlbFJlbmRlcnMpIHtcbiAgICAgIHZhciBuYW1lZENvbXBvbmVudCA9
IGNvbXBvbmVudDtcbiAgICAgIC8vIER1Y2sgdHlwZSBUb3BMZXZlbFdyYXBwZXIuIFRoaXMgaXMg
cHJvYmFibHkgYWx3YXlzIHRydWUuXG4gICAgICBpZiAoY29tcG9uZW50Ll9jdXJyZW50RWxlbWVu
dC50eXBlLmlzUmVhY3RUb3BMZXZlbFdyYXBwZXIpIHtcbiAgICAgICAgbmFtZWRDb21wb25lbnQg
PSBjb21wb25lbnQuX3JlbmRlcmVkQ29tcG9uZW50O1xuICAgICAgfVxuICAgICAgbWFya2VyTmFt
ZSA9ICdSZWFjdCB1cGRhdGU6ICcgKyBuYW1lZENvbXBvbmVudC5nZXROYW1lKCk7XG4gICAgICBj
b25zb2xlLnRpbWUobWFya2VyTmFtZSk7XG4gICAgfVxuXG4gICAgUmVhY3RSZWNvbmNpbGVyLnBl
cmZvcm1VcGRhdGVJZk5lY2Vzc2FyeShjb21wb25lbnQsIHRyYW5zYWN0aW9uLnJlY29uY2lsZVRy
YW5zYWN0aW9uLCB1cGRhdGVCYXRjaE51bWJlcik7XG5cbiAgICBpZiAobWFya2VyTmFtZSkge1xu
ICAgICAgY29uc29sZS50aW1lRW5kKG1hcmtlck5hbWUpO1xuICAgIH1cblxuICAgIGlmIChjYWxs
YmFja3MpIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2FsbGJhY2tzLmxlbmd0aDsgaisr
KSB7XG4gICAgICAgIHRyYW5zYWN0aW9uLmNhbGxiYWNrUXVldWUuZW5xdWV1ZShjYWxsYmFja3Nb
al0sIGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1c
bn1cblxudmFyIGZsdXNoQmF0Y2hlZFVwZGF0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFJlYWN0
VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24ncyB3cmFwcGVycyB3aWxsIGNsZWFyIHRoZSBkaXJ0eUNv
bXBvbmVudHNcbiAgLy8gYXJyYXkgYW5kIHBlcmZvcm0gYW55IHVwZGF0ZXMgZW5xdWV1ZWQgYnkg
bW91bnQtcmVhZHkgaGFuZGxlcnMgKGkuZS4sXG4gIC8vIGNvbXBvbmVudERpZFVwZGF0ZSkgYnV0
IHdlIG5lZWQgdG8gY2hlY2sgaGVyZSB0b28gaW4gb3JkZXIgdG8gY2F0Y2hcbiAgLy8gdXBkYXRl
cyBlbnF1ZXVlZCBieSBzZXRTdGF0ZSBjYWxsYmFja3MgYW5kIGFzYXAgY2FsbHMuXG4gIHdoaWxl
IChkaXJ0eUNvbXBvbmVudHMubGVuZ3RoIHx8IGFzYXBFbnF1ZXVlZCkge1xuICAgIGlmIChkaXJ0
eUNvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICB2YXIgdHJhbnNhY3Rpb24gPSBSZWFjdFVwZGF0
ZXNGbHVzaFRyYW5zYWN0aW9uLmdldFBvb2xlZCgpO1xuICAgICAgdHJhbnNhY3Rpb24ucGVyZm9y
bShydW5CYXRjaGVkVXBkYXRlcywgbnVsbCwgdHJhbnNhY3Rpb24pO1xuICAgICAgUmVhY3RVcGRh
dGVzRmx1c2hUcmFuc2FjdGlvbi5yZWxlYXNlKHRyYW5zYWN0aW9uKTtcbiAgICB9XG5cbiAgICBp
ZiAoYXNhcEVucXVldWVkKSB7XG4gICAgICBhc2FwRW5xdWV1ZWQgPSBmYWxzZTtcbiAgICAgIHZh
ciBxdWV1ZSA9IGFzYXBDYWxsYmFja1F1ZXVlO1xuICAgICAgYXNhcENhbGxiYWNrUXVldWUgPSBD
YWxsYmFja1F1ZXVlLmdldFBvb2xlZCgpO1xuICAgICAgcXVldWUubm90aWZ5QWxsKCk7XG4gICAg
ICBDYWxsYmFja1F1ZXVlLnJlbGVhc2UocXVldWUpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4g
KiBNYXJrIGEgY29tcG9uZW50IGFzIG5lZWRpbmcgYSByZXJlbmRlciwgYWRkaW5nIGFuIG9wdGlv
bmFsIGNhbGxiYWNrIHRvIGFcbiAqIGxpc3Qgb2YgZnVuY3Rpb25zIHdoaWNoIHdpbGwgYmUgZXhl
Y3V0ZWQgb25jZSB0aGUgcmVyZW5kZXIgb2NjdXJzLlxuICovXG5mdW5jdGlvbiBlbnF1ZXVlVXBk
YXRlKGNvbXBvbmVudCkge1xuICBlbnN1cmVJbmplY3RlZCgpO1xuXG4gIC8vIFZhcmlvdXMgcGFy
dHMgb2Ygb3VyIGNvZGUgKHN1Y2ggYXMgUmVhY3RDb21wb3NpdGVDb21wb25lbnQnc1xuICAvLyBf
cmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0byByZW5kZXIgYXJl
bid0IG5lc3RlZDtcbiAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdzIHRoZSBjYXNlLiAoVGhpcyBpcyBj
YWxsZWQgYnkgZWFjaCB0b3AtbGV2ZWwgdXBkYXRlXG4gIC8vIGZ1bmN0aW9uLCBsaWtlIHNldFN0
YXRlLCBmb3JjZVVwZGF0ZSwgZXRjLjsgY3JlYXRpb24gYW5kXG4gIC8vIGRlc3RydWN0aW9uIG9m
IHRvcC1sZXZlbCBjb21wb25lbnRzIGlzIGd1YXJkZWQgaW4gUmVhY3RNb3VudC4pXG5cbiAgaWYg
KCFiYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzKSB7XG4gICAgYmF0Y2hpbmdTdHJh
dGVneS5iYXRjaGVkVXBkYXRlcyhlbnF1ZXVlVXBkYXRlLCBjb21wb25lbnQpO1xuICAgIHJldHVy
bjtcbiAgfVxuXG4gIGRpcnR5Q29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gIGlmIChjb21w
b25lbnQuX3VwZGF0ZUJhdGNoTnVtYmVyID09IG51bGwpIHtcbiAgICBjb21wb25lbnQuX3VwZGF0
ZUJhdGNoTnVtYmVyID0gdXBkYXRlQmF0Y2hOdW1iZXIgKyAxO1xuICB9XG59XG5cbi8qKlxuICog
RW5xdWV1ZSBhIGNhbGxiYWNrIHRvIGJlIHJ1biBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGJh
dGNoaW5nIGN5Y2xlLiBUaHJvd3NcbiAqIGlmIG5vIHVwZGF0ZXMgYXJlIGN1cnJlbnRseSBiZWlu
ZyBwZXJmb3JtZWQuXG4gKi9cbmZ1bmN0aW9uIGFzYXAoY2FsbGJhY2ssIGNvbnRleHQpIHtcbiAg
IWJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzLmFzYXA6
IENhblxcJ3QgZW5xdWV1ZSBhbiBhc2FwIGNhbGxiYWNrIGluIGEgY29udGV4dCB3aGVyZXVwZGF0
ZXMgYXJlIG5vdCBiZWluZyBiYXRjaGVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzEyNScpIDogdm9p
ZCAwO1xuICBhc2FwQ2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKGNhbGxiYWNrLCBjb250ZXh0KTtcbiAg
YXNhcEVucXVldWVkID0gdHJ1ZTtcbn1cblxudmFyIFJlYWN0VXBkYXRlc0luamVjdGlvbiA9IHtc
biAgaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb246IGZ1bmN0aW9uIChSZWNvbmNpbGVUcmFuc2Fj
dGlvbikge1xuICAgICFSZWNvbmNpbGVUcmFuc2FjdGlvbiA/IHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3Qg
cHJvdmlkZSBhIHJlY29uY2lsZSB0cmFuc2FjdGlvbiBjbGFzcycpIDogX3Byb2RJbnZhcmlhbnQo
JzEyNicpIDogdm9pZCAwO1xuICAgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0
aW9uID0gUmVjb25jaWxlVHJhbnNhY3Rpb247XG4gIH0sXG5cbiAgaW5qZWN0QmF0Y2hpbmdTdHJh
dGVneTogZnVuY3Rpb24gKF9iYXRjaGluZ1N0cmF0ZWd5KSB7XG4gICAgIV9iYXRjaGluZ1N0cmF0
ZWd5ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEgYmF0Y2hpbmcgc3RyYXRlZ3knKSA6
IF9wcm9kSW52YXJpYW50KCcxMjcnKSA6IHZvaWQgMDtcbiAgICAhKHR5cGVvZiBfYmF0Y2hpbmdT
dHJhdGVneS5iYXRjaGVkVXBkYXRlcyA9PT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBt
dXN0IHByb3ZpZGUgYSBiYXRjaGVkVXBkYXRlcygpIGZ1bmN0aW9uJykgOiBfcHJvZEludmFyaWFu
dCgnMTI4JykgOiB2b2lkIDA7XG4gICAgISh0eXBlb2YgX2JhdGNoaW5nU3RyYXRlZ3kuaXNCYXRj
aGluZ1VwZGF0ZXMgPT09ICdib29sZWFuJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUg
YW4gaXNCYXRjaGluZ1VwZGF0ZXMgYm9vbGVhbiBhdHRyaWJ1dGUnKSA6IF9wcm9kSW52YXJpYW50
KCcxMjknKSA6IHZvaWQgMDtcbiAgICBiYXRjaGluZ1N0cmF0ZWd5ID0gX2JhdGNoaW5nU3RyYXRl
Z3k7XG4gIH1cbn07XG5cbnZhciBSZWFjdFVwZGF0ZXMgPSB7XG4gIC8qKlxuICAgKiBSZWFjdCBy
ZWZlcmVuY2VzIGBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uYCB1c2luZyB0aGlzIHByb3BlcnR5
IGluIG9yZGVyXG4gICAqIHRvIGFsbG93IGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxuICAgKlxuICAg
KiBAaW50ZXJuYWxcbiAgICovXG4gIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb246IG51bGwsXG5c
biAgYmF0Y2hlZFVwZGF0ZXM6IGJhdGNoZWRVcGRhdGVzLFxuICBlbnF1ZXVlVXBkYXRlOiBlbnF1
ZXVlVXBkYXRlLFxuICBmbHVzaEJhdGNoZWRVcGRhdGVzOiBmbHVzaEJhdGNoZWRVcGRhdGVzLFxu
ICBpbmplY3Rpb246IFJlYWN0VXBkYXRlc0luamVjdGlvbixcbiAgYXNhcDogYXNhcFxufTtcblxu
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFVwZGF0ZXM7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdFVwZGF0ZXMuanNc
biAqKiBtb2R1bGUgaWQgPSA5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9
IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgn
Li9Qb29sZWRDbGFzcycpO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGli
L2VtcHR5RnVuY3Rpb24nKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fybmlu
ZycpO1xuXG52YXIgZGlkV2FybkZvckFkZGVkTmV3UHJvcGVydHkgPSBmYWxzZTtcbnZhciBpc1By
b3h5U3VwcG9ydGVkID0gdHlwZW9mIFByb3h5ID09PSAnZnVuY3Rpb24nO1xuXG52YXIgc2hvdWxk
QmVSZWxlYXNlZFByb3BlcnRpZXMgPSBbJ2Rpc3BhdGNoQ29uZmlnJywgJ190YXJnZXRJbnN0Jywg
J25hdGl2ZUV2ZW50JywgJ2lzRGVmYXVsdFByZXZlbnRlZCcsICdpc1Byb3BhZ2F0aW9uU3RvcHBl
ZCcsICdfZGlzcGF0Y2hMaXN0ZW5lcnMnLCAnX2Rpc3BhdGNoSW5zdGFuY2VzJ107XG5cbi8qKlxu
ICogQGludGVyZmFjZSBFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2
ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBFdmVudEludGVyZmFjZSA9IHtcbiAgdHlwZTogbnVsbCxc
biAgdGFyZ2V0OiBudWxsLFxuICAvLyBjdXJyZW50VGFyZ2V0IGlzIHNldCB3aGVuIGRpc3BhdGNo
aW5nOyBubyB1c2UgaW4gY29weWluZyBpdCBoZXJlXG4gIGN1cnJlbnRUYXJnZXQ6IGVtcHR5RnVu
Y3Rpb24udGhhdFJldHVybnNOdWxsLFxuICBldmVudFBoYXNlOiBudWxsLFxuICBidWJibGVzOiBu
dWxsLFxuICBjYW5jZWxhYmxlOiBudWxsLFxuICB0aW1lU3RhbXA6IGZ1bmN0aW9uIChldmVudCkg
e1xuICAgIHJldHVybiBldmVudC50aW1lU3RhbXAgfHwgRGF0ZS5ub3coKTtcbiAgfSxcbiAgZGVm
YXVsdFByZXZlbnRlZDogbnVsbCxcbiAgaXNUcnVzdGVkOiBudWxsXG59O1xuXG4vKipcbiAqIFN5
bnRoZXRpYyBldmVudHMgYXJlIGRpc3BhdGNoZWQgYnkgZXZlbnQgcGx1Z2lucywgdHlwaWNhbGx5
IGluIHJlc3BvbnNlIHRvIGFcbiAqIHRvcC1sZXZlbCBldmVudCBkZWxlZ2F0aW9uIGhhbmRsZXIu
XG4gKlxuICogVGhlc2Ugc3lzdGVtcyBzaG91bGQgZ2VuZXJhbGx5IHVzZSBwb29saW5nIHRvIHJl
ZHVjZSB0aGUgZnJlcXVlbmN5IG9mIGdhcmJhZ2VcbiAqIGNvbGxlY3Rpb24uIFRoZSBzeXN0ZW0g
c2hvdWxkIGNoZWNrIGBpc1BlcnNpc3RlbnRgIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZVxuICog
ZXZlbnQgc2hvdWxkIGJlIHJlbGVhc2VkIGludG8gdGhlIHBvb2wgYWZ0ZXIgYmVpbmcgZGlzcGF0
Y2hlZC4gVXNlcnMgdGhhdFxuICogbmVlZCBhIHBlcnNpc3RlZCBldmVudCBzaG91bGQgaW52b2tl
IGBwZXJzaXN0YC5cbiAqXG4gKiBTeW50aGV0aWMgZXZlbnRzIChhbmQgc3ViY2xhc3NlcykgaW1w
bGVtZW50IHRoZSBET00gTGV2ZWwgMyBFdmVudHMgQVBJIGJ5XG4gKiBub3JtYWxpemluZyBicm93
c2VyIHF1aXJrcy4gU3ViY2xhc3NlcyBkbyBub3QgbmVjZXNzYXJpbHkgaGF2ZSB0byBpbXBsZW1l
bnQgYVxuICogRE9NIGludGVyZmFjZTsgY3VzdG9tIGFwcGxpY2F0aW9uLXNwZWNpZmljIGV2ZW50
cyBjYW4gYWxzbyBzdWJjbGFzcyB0aGlzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRj
aENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBw
YXJhbSB7Kn0gdGFyZ2V0SW5zdCBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5c
biAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAq
IEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IG5hdGl2ZUV2ZW50VGFyZ2V0IFRhcmdldCBub2RlLlxu
ICovXG5mdW5jdGlvbiBTeW50aGV0aWNFdmVudChkaXNwYXRjaENvbmZpZywgdGFyZ2V0SW5zdCwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gdGhlc2UgaGF2ZSBhIGdldHRlci9zZXR0
ZXIgZm9yIHdhcm5pbmdzXG4gICAgZGVsZXRlIHRoaXMubmF0aXZlRXZlbnQ7XG4gICAgZGVsZXRl
IHRoaXMucHJldmVudERlZmF1bHQ7XG4gICAgZGVsZXRlIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xu
ICB9XG5cbiAgdGhpcy5kaXNwYXRjaENvbmZpZyA9IGRpc3BhdGNoQ29uZmlnO1xuICB0aGlzLl90
YXJnZXRJbnN0ID0gdGFyZ2V0SW5zdDtcbiAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2ZUV2ZW50
O1xuXG4gIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTtcbiAgZm9y
ICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7XG4gICAgaWYgKCFJbnRlcmZhY2UuaGFzT3du
UHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGRlbGV0ZSB0aGlz
W3Byb3BOYW1lXTsgLy8gdGhpcyBoYXMgYSBnZXR0ZXIvc2V0dGVyIGZvciB3YXJuaW5nc1xuICAg
IH1cbiAgICB2YXIgbm9ybWFsaXplID0gSW50ZXJmYWNlW3Byb3BOYW1lXTtcbiAgICBpZiAobm9y
bWFsaXplKSB7XG4gICAgICB0aGlzW3Byb3BOYW1lXSA9IG5vcm1hbGl6ZShuYXRpdmVFdmVudCk7
XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9wTmFtZSA9PT0gJ3RhcmdldCcpIHtcbiAgICAg
ICAgdGhpcy50YXJnZXQgPSBuYXRpdmVFdmVudFRhcmdldDtcbiAgICAgIH0gZWxzZSB7XG4gICAg
ICAgIHRoaXNbcHJvcE5hbWVdID0gbmF0aXZlRXZlbnRbcHJvcE5hbWVdO1xuICAgICAgfVxuICAg
IH1cbiAgfVxuXG4gIHZhciBkZWZhdWx0UHJldmVudGVkID0gbmF0aXZlRXZlbnQuZGVmYXVsdFBy
ZXZlbnRlZCAhPSBudWxsID8gbmF0aXZlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCA6IG5hdGl2ZUV2
ZW50LnJldHVyblZhbHVlID09PSBmYWxzZTtcbiAgaWYgKGRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAg
ICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVl
O1xuICB9IGVsc2Uge1xuICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gZW1wdHlGdW5jdGlv
bi50aGF0UmV0dXJuc0ZhbHNlO1xuICB9XG4gIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBl
bXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2U7XG4gIHJldHVybiB0aGlzO1xufVxuXG5fYXNz
aWduKFN5bnRoZXRpY0V2ZW50LnByb3RvdHlwZSwge1xuICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rp
b24gKCkge1xuICAgIHRoaXMuZGVmYXVsdFByZXZlbnRlZCA9IHRydWU7XG4gICAgdmFyIGV2ZW50
ID0gdGhpcy5uYXRpdmVFdmVudDtcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICByZXR1cm47XG4g
ICAgfVxuXG4gICAgaWYgKGV2ZW50LnByZXZlbnREZWZhdWx0KSB7XG4gICAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhbGlkLXR5
cGVvZlxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGV2ZW50LnJldHVyblZhbHVlICE9PSAndW5rbm93
bicpIHtcbiAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMu
aXNEZWZhdWx0UHJldmVudGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7XG4gIH0s
XG5cbiAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV2ZW50ID0gdGhp
cy5uYXRpdmVFdmVudDtcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxu
XG4gICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgZXZlbnQuc3RvcFByb3Bh
Z2F0aW9uKCk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdmFsaWQtdHlwZW9m
XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZXZlbnQuY2FuY2VsQnViYmxlICE9PSAndW5rbm93bicp
IHtcbiAgICAgIC8vIFRoZSBDaGFuZ2VFdmVudFBsdWdpbiByZWdpc3RlcnMgYSBcInByb3BlcnR5
Y2hhbmdlXCIgZXZlbnQgZm9yXG4gICAgICAvLyBJRS4gVGhpcyBldmVudCBkb2VzIG5vdCBzdXBw
b3J0IGJ1YmJsaW5nIG9yIGNhbmNlbGxpbmcsIGFuZFxuICAgICAgLy8gYW55IHJlZmVyZW5jZXMg
dG8gY2FuY2VsQnViYmxlIHRocm93IFwiTWVtYmVyIG5vdCBmb3VuZFwiLiAgQVxuICAgICAgLy8g
dHlwZW9mIGNoZWNrIG9mIFwidW5rbm93blwiIGNpcmN1bXZlbnRzIHRoaXMgaXNzdWUgKGFuZCBp
cyBhbHNvXG4gICAgICAvLyBJRSBzcGVjaWZpYykuXG4gICAgICBldmVudC5jYW5jZWxCdWJibGUg
PSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBlbXB0eUZ1
bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcbiAgfSxcblxuICAvKipcbiAgICogV2UgcmVsZWFzZSBh
bGwgZGlzcGF0Y2hlZCBgU3ludGhldGljRXZlbnRgcyBhZnRlciBlYWNoIGV2ZW50IGxvb3AsIGFk
ZGluZ1xuICAgKiB0aGVtIGJhY2sgaW50byB0aGUgcG9vbC4gVGhpcyBhbGxvd3MgYSB3YXkgdG8g
aG9sZCBvbnRvIGEgcmVmZXJlbmNlIHRoYXRcbiAgICogd29uJ3QgYmUgYWRkZWQgYmFjayBpbnRv
IHRoZSBwb29sLlxuICAgKi9cbiAgcGVyc2lzdDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaXNQ
ZXJzaXN0ZW50ID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7XG4gIH0sXG5cbiAgLyoq
XG4gICAqIENoZWNrcyBpZiB0aGlzIGV2ZW50IHNob3VsZCBiZSByZWxlYXNlZCBiYWNrIGludG8g
dGhlIHBvb2wuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhpcyBzaG91
bGQgbm90IGJlIHJlbGVhc2VkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBpc1BlcnNpc3Rl
bnQ6IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZSxcblxuICAvKipcbiAgICogYFBvb2xl
ZENsYXNzYCBsb29rcyBmb3IgYGRlc3RydWN0b3JgIG9uIGVhY2ggaW5zdGFuY2UgaXQgcmVsZWFz
ZXMuXG4gICAqL1xuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIEludGVyZmFj
ZSA9IHRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO1xuICAgIGZvciAodmFyIHByb3BOYW1lIGlu
IEludGVyZmFjZSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIHByb3BOYW1lLCBn
ZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9uKHByb3BOYW1lLCBJbnRlcmZhY2VbcHJv
cE5hbWVdKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzW3Byb3BOYW1lXSA9IG51bGw7
XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2hvdWxkQmVSZWxlYXNl
ZFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXNbc2hvdWxkQmVSZWxlYXNlZFBy
b3BlcnRpZXNbaV1dID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAn
bmF0aXZlRXZlbnQnLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9uKCduYXRpdmVF
dmVudCcsIG51bGwpKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAncHJldmVu
dERlZmF1bHQnLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9uKCdwcmV2ZW50RGVm
YXVsdCcsIGVtcHR5RnVuY3Rpb24pKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlz
LCAnc3RvcFByb3BhZ2F0aW9uJywgZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbign
c3RvcFByb3BhZ2F0aW9uJywgZW1wdHlGdW5jdGlvbikpO1xuICAgIH1cbiAgfVxufSk7XG5cblN5
bnRoZXRpY0V2ZW50LkludGVyZmFjZSA9IEV2ZW50SW50ZXJmYWNlO1xuXG5pZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBpZiAoaXNQcm94eVN1cHBvcnRlZCkg
e1xuICAgIC8qZXNsaW50LWRpc2FibGUgbm8tZnVuYy1hc3NpZ24gKi9cbiAgICBTeW50aGV0aWNF
dmVudCA9IG5ldyBQcm94eShTeW50aGV0aWNFdmVudCwge1xuICAgICAgY29uc3RydWN0OiBmdW5j
dGlvbiAodGFyZ2V0LCBhcmdzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5KHRhcmdldCwg
T2JqZWN0LmNyZWF0ZSh0YXJnZXQucHJvdG90eXBlKSwgYXJncyk7XG4gICAgICB9LFxuICAgICAg
YXBwbHk6IGZ1bmN0aW9uIChjb25zdHJ1Y3RvciwgdGhhdCwgYXJncykge1xuICAgICAgICByZXR1
cm4gbmV3IFByb3h5KGNvbnN0cnVjdG9yLmFwcGx5KHRoYXQsIGFyZ3MpLCB7XG4gICAgICAgICAg
c2V0OiBmdW5jdGlvbiAodGFyZ2V0LCBwcm9wLCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHBy
b3AgIT09ICdpc1BlcnNpc3RlbnQnICYmICF0YXJnZXQuY29uc3RydWN0b3IuSW50ZXJmYWNlLmhh
c093blByb3BlcnR5KHByb3ApICYmIHNob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzLmluZGV4T2Yo
cHJvcCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKGRpZFdhcm5Gb3JBZGRlZE5ld1Byb3BlcnR5IHx8IHRhcmdl
dC5pc1BlcnNpc3RlbnQoKSwgXCJUaGlzIHN5bnRoZXRpYyBldmVudCBpcyByZXVzZWQgZm9yIHBl
cmZvcm1hbmNlIHJlYXNvbnMuIElmIHlvdSdyZSBcIiArIFwic2VlaW5nIHRoaXMsIHlvdSdyZSBh
ZGRpbmcgYSBuZXcgcHJvcGVydHkgaW4gdGhlIHN5bnRoZXRpYyBldmVudCBvYmplY3QuIFwiICsg
J1RoZSBwcm9wZXJ0eSBpcyBuZXZlciByZWxlYXNlZC4gU2VlICcgKyAnaHR0cHM6Ly9mYi5tZS9y
ZWFjdC1ldmVudC1wb29saW5nIGZvciBtb3JlIGluZm9ybWF0aW9uLicpIDogdm9pZCAwO1xuICAg
ICAgICAgICAgICBkaWRXYXJuRm9yQWRkZWROZXdQcm9wZXJ0eSA9IHRydWU7XG4gICAgICAgICAg
ICB9XG4gICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVy
biB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAg
Lyplc2xpbnQtZW5hYmxlIG5vLWZ1bmMtYXNzaWduICovXG4gIH1cbn1cbi8qKlxuICogSGVscGVy
IHRvIHJlZHVjZSBib2lsZXJwbGF0ZSB3aGVuIGNyZWF0aW5nIHN1YmNsYXNzZXMuXG4gKlxuICog
QHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3NcbiAqIEBwYXJhbSB7P29iamVjdH0gSW50ZXJmYWNlXG4g
Ki9cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyA9IGZ1bmN0aW9uIChDbGFzcywgSW50ZXJm
YWNlKSB7XG4gIHZhciBTdXBlciA9IHRoaXM7XG5cbiAgdmFyIEUgPSBmdW5jdGlvbiAoKSB7fTtc
biAgRS5wcm90b3R5cGUgPSBTdXBlci5wcm90b3R5cGU7XG4gIHZhciBwcm90b3R5cGUgPSBuZXcg
RSgpO1xuXG4gIF9hc3NpZ24ocHJvdG90eXBlLCBDbGFzcy5wcm90b3R5cGUpO1xuICBDbGFzcy5w
cm90b3R5cGUgPSBwcm90b3R5cGU7XG4gIENsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENs
YXNzO1xuXG4gIENsYXNzLkludGVyZmFjZSA9IF9hc3NpZ24oe30sIFN1cGVyLkludGVyZmFjZSwg
SW50ZXJmYWNlKTtcbiAgQ2xhc3MuYXVnbWVudENsYXNzID0gU3VwZXIuYXVnbWVudENsYXNzO1xu
XG4gIFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhDbGFzcywgUG9vbGVkQ2xhc3MuZm91ckFyZ3Vt
ZW50UG9vbGVyKTtcbn07XG5cblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhTeW50aGV0aWNFdmVu
dCwgUG9vbGVkQ2xhc3MuZm91ckFyZ3VtZW50UG9vbGVyKTtcblxubW9kdWxlLmV4cG9ydHMgPSBT
eW50aGV0aWNFdmVudDtcblxuLyoqXG4gICogSGVscGVyIHRvIG51bGxpZnkgc3ludGhldGljRXZl
bnQgaW5zdGFuY2UgcHJvcGVydGllcyB3aGVuIGRlc3RydWN0aW5nXG4gICpcbiAgKiBAcGFyYW0g
e29iamVjdH0gU3ludGhldGljRXZlbnRcbiAgKiBAcGFyYW0ge1N0cmluZ30gcHJvcE5hbWVcbiAg
KiBAcmV0dXJuIHtvYmplY3R9IGRlZmluZVByb3BlcnR5IG9iamVjdFxuICAqL1xuZnVuY3Rpb24g
Z2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbihwcm9wTmFtZSwgZ2V0VmFsKSB7XG4g
IHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIGdldFZhbCA9PT0gJ2Z1bmN0aW9uJztcbiAgcmV0dXJu
IHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgc2V0OiBzZXQsXG4gICAgZ2V0OiBnZXRc
biAgfTtcblxuICBmdW5jdGlvbiBzZXQodmFsKSB7XG4gICAgdmFyIGFjdGlvbiA9IGlzRnVuY3Rp
b24gPyAnc2V0dGluZyB0aGUgbWV0aG9kJyA6ICdzZXR0aW5nIHRoZSBwcm9wZXJ0eSc7XG4gICAg
d2FybihhY3Rpb24sICdUaGlzIGlzIGVmZmVjdGl2ZWx5IGEgbm8tb3AnKTtcbiAgICByZXR1cm4g
dmFsO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0KCkge1xuICAgIHZhciBhY3Rpb24gPSBpc0Z1bmN0
aW9uID8gJ2FjY2Vzc2luZyB0aGUgbWV0aG9kJyA6ICdhY2Nlc3NpbmcgdGhlIHByb3BlcnR5Jztc
biAgICB2YXIgcmVzdWx0ID0gaXNGdW5jdGlvbiA/ICdUaGlzIGlzIGEgbm8tb3AgZnVuY3Rpb24n
IDogJ1RoaXMgaXMgc2V0IHRvIG51bGwnO1xuICAgIHdhcm4oYWN0aW9uLCByZXN1bHQpO1xuICAg
IHJldHVybiBnZXRWYWw7XG4gIH1cblxuICBmdW5jdGlvbiB3YXJuKGFjdGlvbiwgcmVzdWx0KSB7
XG4gICAgdmFyIHdhcm5pbmdDb25kaXRpb24gPSBmYWxzZTtcbiAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh3YXJuaW5nQ29uZGl0aW9uLCBcIlRoaXMg
c3ludGhldGljIGV2ZW50IGlzIHJldXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gSWYgeW91
J3JlIHNlZWluZyB0aGlzLCBcIiArIFwieW91J3JlICVzIGAlc2Agb24gYSByZWxlYXNlZC9udWxs
aWZpZWQgc3ludGhldGljIGV2ZW50LiAlcy4gXCIgKyAnSWYgeW91IG11c3Qga2VlcCB0aGUgb3Jp
Z2luYWwgc3ludGhldGljIGV2ZW50IGFyb3VuZCwgdXNlIGV2ZW50LnBlcnNpc3QoKS4gJyArICdT
ZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1ldmVudC1wb29saW5nIGZvciBtb3JlIGluZm9ybWF0aW9u
LicsIGFjdGlvbiwgcHJvcE5hbWUsIHJlc3VsdCkgOiB2b2lkIDA7XG4gIH1cbn1cblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGli
L1N5bnRoZXRpY0V2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTBcbiAqKiBtb2R1bGUgY2h1bmtz
ID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxuLyoqXG4gKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBvd25lci5cbiAq
XG4gKiBUaGUgY3VycmVudCBvd25lciBpcyB0aGUgY29tcG9uZW50IHdobyBzaG91bGQgb3duIGFu
eSBjb21wb25lbnRzIHRoYXQgYXJlXG4gKiBjdXJyZW50bHkgYmVpbmcgY29uc3RydWN0ZWQuXG4g
Ki9cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAg
KiBAdHlwZSB7UmVhY3RDb21wb25lbnR9XG4gICAqL1xuICBjdXJyZW50OiBudWxsXG59O1xuXG5t
b2R1bGUuZXhwb3J0cyA9IFJlYWN0Q3VycmVudE93bmVyO1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9SZWFjdEN1cnJlbnRPd25l
ci5qc1xuICoqIG1vZHVsZSBpZCA9IDExXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIn
dXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvUmVhY3QnKTtc
blxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0L3JlYWN0LmpzXG4gKiogbW9kdWxlIGlkID0gMTJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBET01OYW1lc3BhY2VzID0gcmVxdWlyZSgnLi9ET01OYW1lc3BhY2VzJyk7XG52YXIgc2V0
SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9zZXRJbm5lckhUTUwnKTtcblxudmFyIGNyZWF0ZU1pY3Jv
c29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSByZXF1aXJlKCcuL2NyZWF0ZU1pY3Jvc29mdFVuc2Fm
ZUxvY2FsRnVuY3Rpb24nKTtcbnZhciBzZXRUZXh0Q29udGVudCA9IHJlcXVpcmUoJy4vc2V0VGV4
dENvbnRlbnQnKTtcblxudmFyIEVMRU1FTlRfTk9ERV9UWVBFID0gMTtcbnZhciBET0NVTUVOVF9G
UkFHTUVOVF9OT0RFX1RZUEUgPSAxMTtcblxuLyoqXG4gKiBJbiBJRSAoOC0xMSkgYW5kIEVkZ2Us
IGFwcGVuZGluZyBub2RlcyB3aXRoIG5vIGNoaWxkcmVuIGlzIGRyYW1hdGljYWxseVxuICogZmFz
dGVyIHRoYW4gYXBwZW5kaW5nIGEgZnVsbCBzdWJ0cmVlLCBzbyB3ZSBlc3NlbnRpYWxseSBxdWV1
ZSB1cCB0aGVcbiAqIC5hcHBlbmRDaGlsZCBjYWxscyBoZXJlIGFuZCBhcHBseSB0aGVtIHNvIGVh
Y2ggbm9kZSBpcyBhZGRlZCB0byBpdHMgcGFyZW50XG4gKiBiZWZvcmUgYW55IGNoaWxkcmVuIGFy
ZSBhZGRlZC5cbiAqXG4gKiBJbiBvdGhlciBicm93c2VycywgZG9pbmcgc28gaXMgc2xvd2VyIG9y
IG5ldXRyYWwgY29tcGFyZWQgdG8gdGhlIG90aGVyIG9yZGVyXG4gKiAoaW4gRmlyZWZveCwgdHdp
Y2UgYXMgc2xvdykgc28gd2Ugb25seSBkbyB0aGlzIGludmVyc2lvbiBpbiBJRS5cbiAqXG4gKiBT
ZWUgaHR0cHM6Ly9naXRodWIuY29tL3NwaWN5ai9pbm5lcmh0bWwtdnMtY3JlYXRlZWxlbWVudC12
cy1jbG9uZW5vZGUuXG4gKi9cbnZhciBlbmFibGVMYXp5ID0gdHlwZW9mIGRvY3VtZW50ICE9PSAn
dW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID09PSAnbnVtYmVyJyB8
fCB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgbmF2aWdhdG9yLnVz
ZXJBZ2VudCA9PT0gJ3N0cmluZycgJiYgL1xcYkVkZ2VcXC9cXGQvLnRlc3QobmF2aWdhdG9yLnVz
ZXJBZ2VudCk7XG5cbmZ1bmN0aW9uIGluc2VydFRyZWVDaGlsZHJlbih0cmVlKSB7XG4gIGlmICgh
ZW5hYmxlTGF6eSkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbm9kZSA9IHRyZWUubm9kZTtc
biAgdmFyIGNoaWxkcmVuID0gdHJlZS5jaGlsZHJlbjtcbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCkg
e1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAg
IGluc2VydFRyZWVCZWZvcmUobm9kZSwgY2hpbGRyZW5baV0sIG51bGwpO1xuICAgIH1cbiAgfSBl
bHNlIGlmICh0cmVlLmh0bWwgIT0gbnVsbCkge1xuICAgIHNldElubmVySFRNTChub2RlLCB0cmVl
Lmh0bWwpO1xuICB9IGVsc2UgaWYgKHRyZWUudGV4dCAhPSBudWxsKSB7XG4gICAgc2V0VGV4dENv
bnRlbnQobm9kZSwgdHJlZS50ZXh0KTtcbiAgfVxufVxuXG52YXIgaW5zZXJ0VHJlZUJlZm9yZSA9
IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24gKHBhcmVudE5vZGUs
IHRyZWUsIHJlZmVyZW5jZU5vZGUpIHtcbiAgLy8gRG9jdW1lbnRGcmFnbWVudHMgYXJlbid0IGFj
dHVhbGx5IHBhcnQgb2YgdGhlIERPTSBhZnRlciBpbnNlcnRpb24gc29cbiAgLy8gYXBwZW5kaW5n
IGNoaWxkcmVuIHdvbid0IHVwZGF0ZSB0aGUgRE9NLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGUgZnJh
Z21lbnRcbiAgLy8gaXMgcHJvcGVybHkgcG9wdWxhdGVkIGZpcnN0LCBicmVha2luZyBvdXQgb2Yg
b3VyIGxhenkgYXBwcm9hY2ggZm9yIGp1c3RcbiAgLy8gdGhpcyBsZXZlbC4gQWxzbywgc29tZSA8
b2JqZWN0PiBwbHVnaW5zIChsaWtlIEZsYXNoIFBsYXllcikgd2lsbCByZWFkXG4gIC8vIDxwYXJh
bT4gbm9kZXMgaW1tZWRpYXRlbHkgdXBvbiBpbnNlcnRpb24gaW50byB0aGUgRE9NLCBzbyA8b2Jq
ZWN0PlxuICAvLyBtdXN0IGFsc28gYmUgcG9wdWxhdGVkIHByaW9yIHRvIGluc2VydGlvbiBpbnRv
IHRoZSBET00uXG4gIGlmICh0cmVlLm5vZGUubm9kZVR5cGUgPT09IERPQ1VNRU5UX0ZSQUdNRU5U
X05PREVfVFlQRSB8fCB0cmVlLm5vZGUubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFICYm
IHRyZWUubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnb2JqZWN0JyAmJiAodHJlZS5u
b2RlLm5hbWVzcGFjZVVSSSA9PSBudWxsIHx8IHRyZWUubm9kZS5uYW1lc3BhY2VVUkkgPT09IERP
TU5hbWVzcGFjZXMuaHRtbCkpIHtcbiAgICBpbnNlcnRUcmVlQ2hpbGRyZW4odHJlZSk7XG4gICAg
cGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodHJlZS5ub2RlLCByZWZlcmVuY2VOb2RlKTtcbiAgfSBl
bHNlIHtcbiAgICBwYXJlbnROb2RlLmluc2VydEJlZm9yZSh0cmVlLm5vZGUsIHJlZmVyZW5jZU5v
ZGUpO1xuICAgIGluc2VydFRyZWVDaGlsZHJlbih0cmVlKTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9u
IHJlcGxhY2VDaGlsZFdpdGhUcmVlKG9sZE5vZGUsIG5ld1RyZWUpIHtcbiAgb2xkTm9kZS5wYXJl
bnROb2RlLnJlcGxhY2VDaGlsZChuZXdUcmVlLm5vZGUsIG9sZE5vZGUpO1xuICBpbnNlcnRUcmVl
Q2hpbGRyZW4obmV3VHJlZSk7XG59XG5cbmZ1bmN0aW9uIHF1ZXVlQ2hpbGQocGFyZW50VHJlZSwg
Y2hpbGRUcmVlKSB7XG4gIGlmIChlbmFibGVMYXp5KSB7XG4gICAgcGFyZW50VHJlZS5jaGlsZHJl
bi5wdXNoKGNoaWxkVHJlZSk7XG4gIH0gZWxzZSB7XG4gICAgcGFyZW50VHJlZS5ub2RlLmFwcGVu
ZENoaWxkKGNoaWxkVHJlZS5ub2RlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBxdWV1ZUhUTUwodHJl
ZSwgaHRtbCkge1xuICBpZiAoZW5hYmxlTGF6eSkge1xuICAgIHRyZWUuaHRtbCA9IGh0bWw7XG4g
IH0gZWxzZSB7XG4gICAgc2V0SW5uZXJIVE1MKHRyZWUubm9kZSwgaHRtbCk7XG4gIH1cbn1cblxu
ZnVuY3Rpb24gcXVldWVUZXh0KHRyZWUsIHRleHQpIHtcbiAgaWYgKGVuYWJsZUxhenkpIHtcbiAg
ICB0cmVlLnRleHQgPSB0ZXh0O1xuICB9IGVsc2Uge1xuICAgIHNldFRleHRDb250ZW50KHRyZWUu
bm9kZSwgdGV4dCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiB0
aGlzLm5vZGUubm9kZU5hbWU7XG59XG5cbmZ1bmN0aW9uIERPTUxhenlUcmVlKG5vZGUpIHtcbiAg
cmV0dXJuIHtcbiAgICBub2RlOiBub2RlLFxuICAgIGNoaWxkcmVuOiBbXSxcbiAgICBodG1sOiBu
dWxsLFxuICAgIHRleHQ6IG51bGwsXG4gICAgdG9TdHJpbmc6IHRvU3RyaW5nXG4gIH07XG59XG5c
bkRPTUxhenlUcmVlLmluc2VydFRyZWVCZWZvcmUgPSBpbnNlcnRUcmVlQmVmb3JlO1xuRE9NTGF6
eVRyZWUucmVwbGFjZUNoaWxkV2l0aFRyZWUgPSByZXBsYWNlQ2hpbGRXaXRoVHJlZTtcbkRPTUxh
enlUcmVlLnF1ZXVlQ2hpbGQgPSBxdWV1ZUNoaWxkO1xuRE9NTGF6eVRyZWUucXVldWVIVE1MID0g
cXVldWVIVE1MO1xuRE9NTGF6eVRyZWUucXVldWVUZXh0ID0gcXVldWVUZXh0O1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IERPTUxhenlUcmVlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvRE9NTGF6eVRyZWUuanNcbiAqKiBtb2R1
bGUgaWQgPSAxNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0g
cmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVp
cmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG5mdW5jdGlvbiBjaGVja01hc2sodmFsdWUsIGJp
dG1hc2spIHtcbiAgcmV0dXJuICh2YWx1ZSAmIGJpdG1hc2spID09PSBiaXRtYXNrO1xufVxuXG52
YXIgRE9NUHJvcGVydHlJbmplY3Rpb24gPSB7XG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gbm9y
bWFsaXplZCwgY2FtZWxjYXNlZCBwcm9wZXJ0eSBuYW1lcyB0byBhIGNvbmZpZ3VyYXRpb24gdGhh
dFxuICAgKiBzcGVjaWZpZXMgaG93IHRoZSBhc3NvY2lhdGVkIERPTSBwcm9wZXJ0eSBzaG91bGQg
YmUgYWNjZXNzZWQgb3IgcmVuZGVyZWQuXG4gICAqL1xuICBNVVNUX1VTRV9QUk9QRVJUWTogMHgx
LFxuICBIQVNfQk9PTEVBTl9WQUxVRTogMHg0LFxuICBIQVNfTlVNRVJJQ19WQUxVRTogMHg4LFxu
ICBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRTogMHgxMCB8IDB4OCxcbiAgSEFTX09WRVJMT0FE
RURfQk9PTEVBTl9WQUxVRTogMHgyMCxcblxuICAvKipcbiAgICogSW5qZWN0IHNvbWUgc3BlY2lh
bGl6ZWQga25vd2xlZGdlIGFib3V0IHRoZSBET00uIFRoaXMgdGFrZXMgYSBjb25maWcgb2JqZWN0
XG4gICAqIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKlxuICAgKiBpc0N1c3Rv
bUF0dHJpYnV0ZTogZnVuY3Rpb24gdGhhdCBnaXZlbiBhbiBhdHRyaWJ1dGUgbmFtZSB3aWxsIHJl
dHVybiB0cnVlXG4gICAqIGlmIGl0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBET00gdmVyYmF0
aW0uIFVzZWZ1bCBmb3IgZGF0YS0qIG9yIGFyaWEtKlxuICAgKiBhdHRyaWJ1dGVzIHdoZXJlIGl0
J3MgaW1wb3NzaWJsZSB0byBlbnVtZXJhdGUgYWxsIG9mIHRoZSBwb3NzaWJsZVxuICAgKiBhdHRy
aWJ1dGUgbmFtZXMsXG4gICAqXG4gICAqIFByb3BlcnRpZXM6IG9iamVjdCBtYXBwaW5nIERPTSBw
cm9wZXJ0eSBuYW1lIHRvIG9uZSBvZiB0aGVcbiAgICogRE9NUHJvcGVydHlJbmplY3Rpb24gY29u
c3RhbnRzIG9yIG51bGwuIElmIHlvdXIgYXR0cmlidXRlIGlzbid0IGluIGhlcmUsXG4gICAqIGl0
IHdvbid0IGdldCB3cml0dGVuIHRvIHRoZSBET00uXG4gICAqXG4gICAqIERPTUF0dHJpYnV0ZU5h
bWVzOiBvYmplY3QgbWFwcGluZyBSZWFjdCBhdHRyaWJ1dGUgbmFtZSB0byB0aGUgRE9NXG4gICAq
IGF0dHJpYnV0ZSBuYW1lLiBBdHRyaWJ1dGUgbmFtZXMgbm90IHNwZWNpZmllZCB1c2UgdGhlICoq
bG93ZXJjYXNlKipcbiAgICogbm9ybWFsaXplZCBuYW1lLlxuICAgKlxuICAgKiBET01BdHRyaWJ1
dGVOYW1lc3BhY2VzOiBvYmplY3QgbWFwcGluZyBSZWFjdCBhdHRyaWJ1dGUgbmFtZSB0byB0aGUg
RE9NXG4gICAqIGF0dHJpYnV0ZSBuYW1lc3BhY2UgVVJMLiAoQXR0cmlidXRlIG5hbWVzIG5vdCBz
cGVjaWZpZWQgdXNlIG5vIG5hbWVzcGFjZS4pXG4gICAqXG4gICAqIERPTVByb3BlcnR5TmFtZXM6
IHNpbWlsYXIgdG8gRE9NQXR0cmlidXRlTmFtZXMgYnV0IGZvciBET00gcHJvcGVydGllcy5cbiAg
ICogUHJvcGVydHkgbmFtZXMgbm90IHNwZWNpZmllZCB1c2UgdGhlIG5vcm1hbGl6ZWQgbmFtZS5c
biAgICpcbiAgICogRE9NTXV0YXRpb25NZXRob2RzOiBQcm9wZXJ0aWVzIHRoYXQgcmVxdWlyZSBz
cGVjaWFsIG11dGF0aW9uIG1ldGhvZHMuIElmXG4gICAqIGB2YWx1ZWAgaXMgdW5kZWZpbmVkLCB0
aGUgbXV0YXRpb24gbWV0aG9kIHNob3VsZCB1bnNldCB0aGUgcHJvcGVydHkuXG4gICAqXG4gICAq
IEBwYXJhbSB7b2JqZWN0fSBkb21Qcm9wZXJ0eUNvbmZpZyB0aGUgY29uZmlnIGFzIGRlc2NyaWJl
ZCBhYm92ZS5cbiAgICovXG4gIGluamVjdERPTVByb3BlcnR5Q29uZmlnOiBmdW5jdGlvbiAoZG9t
UHJvcGVydHlDb25maWcpIHtcbiAgICB2YXIgSW5qZWN0aW9uID0gRE9NUHJvcGVydHlJbmplY3Rp
b247XG4gICAgdmFyIFByb3BlcnRpZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5Qcm9wZXJ0aWVzIHx8
IHt9O1xuICAgIHZhciBET01BdHRyaWJ1dGVOYW1lc3BhY2VzID0gZG9tUHJvcGVydHlDb25maWcu
RE9NQXR0cmlidXRlTmFtZXNwYWNlcyB8fCB7fTtcbiAgICB2YXIgRE9NQXR0cmlidXRlTmFtZXMg
PSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01BdHRyaWJ1dGVOYW1lcyB8fCB7fTtcbiAgICB2YXIgRE9N
UHJvcGVydHlOYW1lcyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTVByb3BlcnR5TmFtZXMgfHwge307
XG4gICAgdmFyIERPTU11dGF0aW9uTWV0aG9kcyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTU11dGF0
aW9uTWV0aG9kcyB8fCB7fTtcblxuICAgIGlmIChkb21Qcm9wZXJ0eUNvbmZpZy5pc0N1c3RvbUF0
dHJpYnV0ZSkge1xuICAgICAgRE9NUHJvcGVydHkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25z
LnB1c2goZG9tUHJvcGVydHlDb25maWcuaXNDdXN0b21BdHRyaWJ1dGUpO1xuICAgIH1cblxuICAg
IGZvciAodmFyIHByb3BOYW1lIGluIFByb3BlcnRpZXMpIHtcbiAgICAgICEhRE9NUHJvcGVydHku
cHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkgPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnaW5qZWN0RE9NUHJvcGVydHlD
b25maWcoLi4uKTogWW91XFwncmUgdHJ5aW5nIHRvIGluamVjdCBET00gcHJvcGVydHkgXFwnJXNc
XCcgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBpbmplY3RlZC4gWW91IG1heSBiZSBhY2NpZGVudGFs
bHkgaW5qZWN0aW5nIHRoZSBzYW1lIERPTSBwcm9wZXJ0eSBjb25maWcgdHdpY2UsIG9yIHlvdSBt
YXkgYmUgaW5qZWN0aW5nIHR3byBjb25maWdzIHRoYXQgaGF2ZSBjb25mbGljdGluZyBwcm9wZXJ0
eSBuYW1lcy4nLCBwcm9wTmFtZSkgOiBfcHJvZEludmFyaWFudCgnNDgnLCBwcm9wTmFtZSkgOiB2
b2lkIDA7XG5cbiAgICAgIHZhciBsb3dlckNhc2VkID0gcHJvcE5hbWUudG9Mb3dlckNhc2UoKTtc
biAgICAgIHZhciBwcm9wQ29uZmlnID0gUHJvcGVydGllc1twcm9wTmFtZV07XG5cbiAgICAgIHZh
ciBwcm9wZXJ0eUluZm8gPSB7XG4gICAgICAgIGF0dHJpYnV0ZU5hbWU6IGxvd2VyQ2FzZWQsXG4g
ICAgICAgIGF0dHJpYnV0ZU5hbWVzcGFjZTogbnVsbCxcbiAgICAgICAgcHJvcGVydHlOYW1lOiBw
cm9wTmFtZSxcbiAgICAgICAgbXV0YXRpb25NZXRob2Q6IG51bGwsXG5cbiAgICAgICAgbXVzdFVz
ZVByb3BlcnR5OiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLk1VU1RfVVNFX1BST1BF
UlRZKSxcbiAgICAgICAgaGFzQm9vbGVhblZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5q
ZWN0aW9uLkhBU19CT09MRUFOX1ZBTFVFKSxcbiAgICAgICAgaGFzTnVtZXJpY1ZhbHVlOiBjaGVj
a01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19OVU1FUklDX1ZBTFVFKSxcbiAgICAgICAg
aGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24u
SEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUpLFxuICAgICAgICBoYXNPdmVybG9hZGVkQm9vbGVh
blZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19PVkVSTE9BREVEX0JP
T0xFQU5fVkFMVUUpXG4gICAgICB9O1xuICAgICAgIShwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZh
bHVlICsgcHJvcGVydHlJbmZvLmhhc051bWVyaWNWYWx1ZSArIHByb3BlcnR5SW5mby5oYXNPdmVy
bG9hZGVkQm9vbGVhblZhbHVlIDw9IDEpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0RPTVByb3BlcnR5OiBWYWx1ZSBjYW4gYmUgb25l
IG9mIGJvb2xlYW4sIG92ZXJsb2FkZWQgYm9vbGVhbiwgb3IgbnVtZXJpYyB2YWx1ZSwgYnV0IG5v
dCBhIGNvbWJpbmF0aW9uOiAlcycsIHByb3BOYW1lKSA6IF9wcm9kSW52YXJpYW50KCc1MCcsIHBy
b3BOYW1lKSA6IHZvaWQgMDtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgICAgRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5h
bWVbbG93ZXJDYXNlZF0gPSBwcm9wTmFtZTtcbiAgICAgIH1cblxuICAgICAgaWYgKERPTUF0dHJp
YnV0ZU5hbWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICB2YXIgYXR0cmli
dXRlTmFtZSA9IERPTUF0dHJpYnV0ZU5hbWVzW3Byb3BOYW1lXTtcbiAgICAgICAgcHJvcGVydHlJ
bmZvLmF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGVOYW1lO1xuICAgICAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIERPTVByb3BlcnR5Lmdl
dFBvc3NpYmxlU3RhbmRhcmROYW1lW2F0dHJpYnV0ZU5hbWVdID0gcHJvcE5hbWU7XG4gICAgICAg
IH1cbiAgICAgIH1cblxuICAgICAgaWYgKERPTUF0dHJpYnV0ZU5hbWVzcGFjZXMuaGFzT3duUHJv
cGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lc3Bh
Y2UgPSBET01BdHRyaWJ1dGVOYW1lc3BhY2VzW3Byb3BOYW1lXTtcbiAgICAgIH1cblxuICAgICAg
aWYgKERPTVByb3BlcnR5TmFtZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAg
IHByb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWUgPSBET01Qcm9wZXJ0eU5hbWVzW3Byb3BOYW1lXTtc
biAgICAgIH1cblxuICAgICAgaWYgKERPTU11dGF0aW9uTWV0aG9kcy5oYXNPd25Qcm9wZXJ0eShw
cm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9kID0gRE9NTXV0
YXRpb25NZXRob2RzW3Byb3BOYW1lXTtcbiAgICAgIH1cblxuICAgICAgRE9NUHJvcGVydHkucHJv
cGVydGllc1twcm9wTmFtZV0gPSBwcm9wZXJ0eUluZm87XG4gICAgfVxuICB9XG59O1xuXG4vKiBl
c2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG52YXIgQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUiA9
ICc6QS1aX2EtelxcXFx1MDBDMC1cXFxcdTAwRDZcXFxcdTAwRDgtXFxcXHUwMEY2XFxcXHUwMEY4
LVxcXFx1MDJGRlxcXFx1MDM3MC1cXFxcdTAzN0RcXFxcdTAzN0YtXFxcXHUxRkZGXFxcXHUyMDBD
LVxcXFx1MjAwRFxcXFx1MjA3MC1cXFxcdTIxOEZcXFxcdTJDMDAtXFxcXHUyRkVGXFxcXHUzMDAx
LVxcXFx1RDdGRlxcXFx1RjkwMC1cXFxcdUZEQ0ZcXFxcdUZERjAtXFxcXHVGRkZEJztcbi8qIGVz
bGludC1lbmFibGUgbWF4LWxlbiAqL1xuXG4vKipcbiAqIERPTVByb3BlcnR5IGV4cG9ydHMgbG9v
a3VwIG9iamVjdHMgdGhhdCBjYW4gYmUgdXNlZCBsaWtlIGZ1bmN0aW9uczpcbiAqXG4gKiAgID4g
RE9NUHJvcGVydHkuaXNWYWxpZFsnaWQnXVxuICogICB0cnVlXG4gKiAgID4gRE9NUHJvcGVydHku
aXNWYWxpZFsnZm9vYmFyJ11cbiAqICAgdW5kZWZpbmVkXG4gKlxuICogQWx0aG91Z2ggdGhpcyBt
YXkgYmUgY29uZnVzaW5nLCBpdCBwZXJmb3JtcyBiZXR0ZXIgaW4gZ2VuZXJhbC5cbiAqXG4gKiBA
c2VlIGh0dHA6Ly9qc3BlcmYuY29tL2tleS1leGlzdHNcbiAqIEBzZWUgaHR0cDovL2pzcGVyZi5j
b20va2V5LW1pc3NpbmdcbiAqL1xudmFyIERPTVByb3BlcnR5ID0ge1xuICBJRF9BVFRSSUJVVEVf
TkFNRTogJ2RhdGEtcmVhY3RpZCcsXG4gIFJPT1RfQVRUUklCVVRFX05BTUU6ICdkYXRhLXJlYWN0
cm9vdCcsXG5cbiAgQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUjogQVRUUklCVVRFX05BTUVfU1RB
UlRfQ0hBUixcbiAgQVRUUklCVVRFX05BTUVfQ0hBUjogQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hB
UiArICdcXFxcLS4wLTlcXFxcdTAwQjdcXFxcdTAzMDAtXFxcXHUwMzZGXFxcXHUyMDNGLVxcXFx1
MjA0MCcsXG5cbiAgLyoqXG4gICAqIE1hcCBmcm9tIHByb3BlcnR5IFwic3RhbmRhcmQgbmFtZVwi
IHRvIGFuIG9iamVjdCB3aXRoIGluZm8gYWJvdXQgaG93IHRvIHNldFxuICAgKiB0aGUgcHJvcGVy
dHkgaW4gdGhlIERPTS4gRWFjaCBvYmplY3QgY29udGFpbnM6XG4gICAqXG4gICAqIGF0dHJpYnV0
ZU5hbWU6XG4gICAqICAgVXNlZCB3aGVuIHJlbmRlcmluZyBtYXJrdXAgb3Igd2l0aCBgKkF0dHJp
YnV0ZSgpYC5cbiAgICogYXR0cmlidXRlTmFtZXNwYWNlXG4gICAqIHByb3BlcnR5TmFtZTpcbiAg
ICogICBVc2VkIG9uIERPTSBub2RlIGluc3RhbmNlcy4gKFRoaXMgaW5jbHVkZXMgcHJvcGVydGll
cyB0aGF0IG11dGF0ZSBkdWUgdG9cbiAgICogICBleHRlcm5hbCBmYWN0b3JzLilcbiAgICogbXV0
YXRpb25NZXRob2Q6XG4gICAqICAgSWYgbm9uLW51bGwsIHVzZWQgaW5zdGVhZCBvZiB0aGUgcHJv
cGVydHkgb3IgYHNldEF0dHJpYnV0ZSgpYCBhZnRlclxuICAgKiAgIGluaXRpYWwgcmVuZGVyLlxu
ICAgKiBtdXN0VXNlUHJvcGVydHk6XG4gICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBi
ZSBhY2Nlc3NlZCBhbmQgbXV0YXRlZCBhcyBhbiBvYmplY3QgcHJvcGVydHkuXG4gICAqIGhhc0Jv
b2xlYW5WYWx1ZTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBzaG91bGQgYmUgcmVtb3Zl
ZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS5cbiAgICogaGFzTnVtZXJpY1ZhbHVlOlxuICAg
KiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgbnVtZXJpYyBvciBwYXJzZSBhcyBhIG51
bWVyaWMgYW5kIHNob3VsZCBiZVxuICAgKiAgIHJlbW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxzZXkg
dmFsdWUuXG4gICAqIGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOlxuICAgKiAgIFdoZXRoZXIgdGhl
IHByb3BlcnR5IG11c3QgYmUgcG9zaXRpdmUgbnVtZXJpYyBvciBwYXJzZSBhcyBhIHBvc2l0aXZl
XG4gICAqICAgbnVtZXJpYyBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxz
ZXkgdmFsdWUuXG4gICAqIGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6XG4gICAqICAgV2hldGhl
ciB0aGUgcHJvcGVydHkgY2FuIGJlIHVzZWQgYXMgYSBmbGFnIGFzIHdlbGwgYXMgd2l0aCBhIHZh
bHVlLlxuICAgKiAgIFJlbW92ZWQgd2hlbiBzdHJpY3RseSBlcXVhbCB0byBmYWxzZTsgcHJlc2Vu
dCB3aXRob3V0IGEgdmFsdWUgd2hlblxuICAgKiAgIHN0cmljdGx5IGVxdWFsIHRvIHRydWU7IHBy
ZXNlbnQgd2l0aCBhIHZhbHVlIG90aGVyd2lzZS5cbiAgICovXG4gIHByb3BlcnRpZXM6IHt9LFxu
XG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gbG93ZXJjYXNlIHByb3BlcnR5IG5hbWVzIHRvIHRo
ZSBwcm9wZXJseSBjYXNlZCB2ZXJzaW9uLCB1c2VkXG4gICAqIHRvIHdhcm4gaW4gdGhlIGNhc2Ug
b2YgbWlzc2luZyBwcm9wZXJ0aWVzLiBBdmFpbGFibGUgb25seSBpbiBfX0RFVl9fLlxuICAgKlxu
ICAgKiBhdXRvZm9jdXMgaXMgcHJlZGVmaW5lZCwgYmVjYXVzZSBhZGRpbmcgaXQgdG8gdGhlIHBy
b3BlcnR5IHdoaXRlbGlzdFxuICAgKiBjYXVzZXMgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMuXG4g
ICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBnZXRQb3NzaWJsZVN0YW5kYXJkTmFt
ZTogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHsgYXV0b2ZvY3VzOiAn
YXV0b0ZvY3VzJyB9IDogbnVsbCxcblxuICAvKipcbiAgICogQWxsIG9mIHRoZSBpc0N1c3RvbUF0
dHJpYnV0ZSgpIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBpbmplY3RlZC5cbiAgICovXG4gIF9p
c0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uczogW10sXG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0
aGVyIGEgcHJvcGVydHkgbmFtZSBpcyBhIGN1c3RvbSBhdHRyaWJ1dGUuXG4gICAqIEBtZXRob2Rc
biAgICovXG4gIGlzQ3VzdG9tQXR0cmlidXRlOiBmdW5jdGlvbiAoYXR0cmlidXRlTmFtZSkge1xu
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgRE9NUHJvcGVydHkuX2lzQ3VzdG9tQXR0cmlidXRlRnVu
Y3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaXNDdXN0b21BdHRyaWJ1dGVGbiA9IERP
TVByb3BlcnR5Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uc1tpXTtcbiAgICAgIGlmIChpc0N1
c3RvbUF0dHJpYnV0ZUZuKGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xu
ICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG5cbiAgaW5qZWN0aW9uOiBE
T01Qcm9wZXJ0eUluamVjdGlvblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBET01Qcm9wZXJ0eTtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1kb20vbGliL0RPTVByb3BlcnR5LmpzXG4gKiogbW9kdWxlIGlkID0gMTVcbiAqKiBtb2R1bGUg
Y2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBSZWFjdFJlZiA9IHJlcXVpcmUoJy4vUmVhY3RSZWYnKTtcbnZhciBS
ZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVtZW50YXRpb24nKTtc
blxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8qKlxuICog
SGVscGVyIHRvIGNhbGwgUmVhY3RSZWYuYXR0YWNoUmVmcyB3aXRoIHRoaXMgY29tcG9zaXRlIGNv
bXBvbmVudCwgc3BsaXQgb3V0XG4gKiB0byBhdm9pZCBhbGxvY2F0aW9ucyBpbiB0aGUgdHJhbnNh
Y3Rpb24gbW91bnQtcmVhZHkgcXVldWUuXG4gKi9cbmZ1bmN0aW9uIGF0dGFjaFJlZnMoKSB7XG4g
IFJlYWN0UmVmLmF0dGFjaFJlZnModGhpcywgdGhpcy5fY3VycmVudEVsZW1lbnQpO1xufVxuXG52
YXIgUmVhY3RSZWNvbmNpbGVyID0ge1xuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGNvbXBv
bmVudCwgcmVuZGVycyBtYXJrdXAsIGFuZCByZWdpc3RlcnMgZXZlbnQgbGlzdGVuZXJzLlxuICAg
KlxuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBpbnRlcm5hbEluc3RhbmNlXG4gICAqIEBw
YXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5z
YWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gez9vYmplY3R9IHRoZSBjb250YWluaW5n
IGhvc3QgY29tcG9uZW50IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7P29iamVjdH0gaW5mbyBhYm91
dCB0aGUgaG9zdCBjb250YWluZXJcbiAgICogQHJldHVybiB7P3N0cmluZ30gUmVuZGVyZWQgbWFy
a3VwIHRvIGJlIGluc2VydGVkIGludG8gdGhlIERPTS5cbiAgICogQGZpbmFsXG4gICAqIEBpbnRl
cm5hbFxuICAgKi9cbiAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNl
LCB0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHBh
cmVudERlYnVnSUQpIC8vIDAgaW4gcHJvZHVjdGlvbiBhbmQgZm9yIHJvb3RzXG4gIHtcbiAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGlu
dGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50
YXRpb24uZGVidWdUb29sLm9uQmVmb3JlTW91bnRDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5f
ZGVidWdJRCwgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQsIHBhcmVudERlYnVnSUQp
O1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgbWFya3VwID0gaW50ZXJuYWxJbnN0YW5jZS5tb3Vu
dENvbXBvbmVudCh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNv
bnRleHQsIHBhcmVudERlYnVnSUQpO1xuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50
RWxlbWVudCAmJiBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5yZWYgIT0gbnVsbCkg
e1xuICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShhdHRhY2hS
ZWZzLCBpbnRlcm5hbEluc3RhbmNlKTtcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1
Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbk1v
dW50Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuICAgICAgfVxuICAgIH1c
biAgICByZXR1cm4gbWFya3VwO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgdmFsdWUg
dGhhdCBjYW4gYmUgcGFzc2VkIHRvXG4gICAqIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQucmVw
bGFjZU5vZGVXaXRoTWFya3VwLlxuICAgKi9cbiAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uIChpbnRl
cm5hbEluc3RhbmNlKSB7XG4gICAgcmV0dXJuIGludGVybmFsSW5zdGFuY2UuZ2V0SG9zdE5vZGUo
KTtcbiAgfSxcblxuICAvKipcbiAgICogUmVsZWFzZXMgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQg
YnkgYG1vdW50Q29tcG9uZW50YC5cbiAgICpcbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxu
ICAgKi9cbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIHNh
ZmVseSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuICAgICAgICBS
ZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVbm1vdW50Q29tcG9uZW50KGlu
dGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuICAgICAgfVxuICAgIH1cbiAgICBSZWFjdFJlZi5k
ZXRhY2hSZWZzKGludGVybmFsSW5zdGFuY2UsIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVt
ZW50KTtcbiAgICBpbnRlcm5hbEluc3RhbmNlLnVubW91bnRDb21wb25lbnQoc2FmZWx5KTtcbiAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYg
KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLm9uVW5tb3VudENvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9k
ZWJ1Z0lEKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhIGNv
bXBvbmVudCB1c2luZyBhIG5ldyBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q29t
cG9uZW50fSBpbnRlcm5hbEluc3RhbmNlXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0
RWxlbWVudFxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0
aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAqIEBpbnRlcm5hbFxuICAgKi9c
biAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIG5leHRFbGVt
ZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBwcmV2RWxlbWVudCA9IGludGVy
bmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50O1xuXG4gICAgaWYgKG5leHRFbGVtZW50ID09PSBw
cmV2RWxlbWVudCAmJiBjb250ZXh0ID09PSBpbnRlcm5hbEluc3RhbmNlLl9jb250ZXh0KSB7XG4g
ICAgICAvLyBTaW5jZSBlbGVtZW50cyBhcmUgaW1tdXRhYmxlIGFmdGVyIHRoZSBvd25lciBpcyBy
ZW5kZXJlZCxcbiAgICAgIC8vIHdlIGNhbiBkbyBhIGNoZWFwIGlkZW50aXR5IGNvbXBhcmUgaGVy
ZSB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhXG4gICAgICAvLyBzdXBlcmZsdW91cyByZWNvbmNp
bGUuIEl0J3MgcG9zc2libGUgZm9yIHN0YXRlIHRvIGJlIG11dGFibGUgYnV0IHN1Y2hcbiAgICAg
IC8vIGNoYW5nZSBzaG91bGQgdHJpZ2dlciBhbiB1cGRhdGUgb2YgdGhlIG93bmVyIHdoaWNoIHdv
dWxkIHJlY3JlYXRlXG4gICAgICAvLyB0aGUgZWxlbWVudC4gV2UgZXhwbGljaXRseSBjaGVjayBm
b3IgdGhlIGV4aXN0ZW5jZSBvZiBhbiBvd25lciBzaW5jZVxuICAgICAgLy8gaXQncyBwb3NzaWJs
ZSBmb3IgYW4gZWxlbWVudCBjcmVhdGVkIG91dHNpZGUgYSBjb21wb3NpdGUgdG8gYmVcbiAgICAg
IC8vIGRlZXBseSBtdXRhdGVkIGFuZCByZXVzZWQuXG5cbiAgICAgIC8vIFRPRE86IEJhaWxpbmcg
b3V0IGVhcmx5IGlzIGp1c3QgYSBwZXJmIG9wdGltaXphdGlvbiByaWdodD9cbiAgICAgIC8vIFRP
RE86IFJlbW92aW5nIHRoZSByZXR1cm4gc3RhdGVtZW50IHNob3VsZCBhZmZlY3QgY29ycmVjdG5l
c3M/XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lE
ICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9y
ZVVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lELCBuZXh0RWxlbWVudCk7
XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlZnNDaGFuZ2VkID0gUmVhY3RSZWYuc2hvdWxk
VXBkYXRlUmVmcyhwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpO1xuXG4gICAgaWYgKHJlZnNDaGFu
Z2VkKSB7XG4gICAgICBSZWFjdFJlZi5kZXRhY2hSZWZzKGludGVybmFsSW5zdGFuY2UsIHByZXZF
bGVtZW50KTtcbiAgICB9XG5cbiAgICBpbnRlcm5hbEluc3RhbmNlLnJlY2VpdmVDb21wb25lbnQo
bmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblxuICAgIGlmIChyZWZzQ2hhbmdl
ZCAmJiBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCAmJiBpbnRlcm5hbEluc3RhbmNl
Ll9jdXJyZW50RWxlbWVudC5yZWYgIT0gbnVsbCkge1xuICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVh
Y3RNb3VudFJlYWR5KCkuZW5xdWV1ZShhdHRhY2hSZWZzLCBpbnRlcm5hbEluc3RhbmNlKTtcbiAg
ICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5z
dGFuY2UuX2RlYnVnSUQpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRmx1
c2ggYW55IGRpcnR5IGNoYW5nZXMgaW4gYSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7
UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFuY2VcbiAgICogQHBhcmFtIHtSZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHBl
cmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIHRyYW5z
YWN0aW9uLCB1cGRhdGVCYXRjaE51bWJlcikge1xuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl91
cGRhdGVCYXRjaE51bWJlciAhPT0gdXBkYXRlQmF0Y2hOdW1iZXIpIHtcbiAgICAgIC8vIFRoZSBj
b21wb25lbnQncyBlbnF1ZXVlZCBiYXRjaCBudW1iZXIgc2hvdWxkIGFsd2F5cyBiZSB0aGUgY3Vy
cmVudFxuICAgICAgLy8gYmF0Y2ggb3IgdGhlIGZvbGxvd2luZyBvbmUuXG4gICAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnRlcm5hbEluc3RhbmNl
Ll91cGRhdGVCYXRjaE51bWJlciA9PSBudWxsIHx8IGludGVybmFsSW5zdGFuY2UuX3VwZGF0ZUJh
dGNoTnVtYmVyID09PSB1cGRhdGVCYXRjaE51bWJlciArIDEsICdwZXJmb3JtVXBkYXRlSWZOZWNl
c3Nhcnk6IFVuZXhwZWN0ZWQgYmF0Y2ggbnVtYmVyIChjdXJyZW50ICVzLCAnICsgJ3BlbmRpbmcg
JXMpJywgdXBkYXRlQmF0Y2hOdW1iZXIsIGludGVybmFsSW5zdGFuY2UuX3VwZGF0ZUJhdGNoTnVt
YmVyKSA6IHZvaWQgMDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNl
Ll9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lELCBpbnRl
cm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIGludGVy
bmFsSW5zdGFuY2UucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KHRyYW5zYWN0aW9uKTtcbiAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGlu
dGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50
YXRpb24uZGVidWdUb29sLm9uVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVn
SUQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFJl
Y29uY2lsZXI7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAq
KiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdFJlY29uY2lsZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAx
NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3Qt
YXNzaWduJyk7XG5cbnZhciBSZWFjdEJhc2VDbGFzc2VzID0gcmVxdWlyZSgnLi9SZWFjdEJhc2VD
bGFzc2VzJyk7XG52YXIgUmVhY3RDaGlsZHJlbiA9IHJlcXVpcmUoJy4vUmVhY3RDaGlsZHJlbicp
O1xudmFyIFJlYWN0RE9NRmFjdG9yaWVzID0gcmVxdWlyZSgnLi9SZWFjdERPTUZhY3Rvcmllcycp
O1xudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG52YXIgUmVh
Y3RQcm9wVHlwZXMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVzJyk7XG52YXIgUmVhY3RWZXJz
aW9uID0gcmVxdWlyZSgnLi9SZWFjdFZlcnNpb24nKTtcblxudmFyIGNyZWF0ZVJlYWN0Q2xhc3Mg
PSByZXF1aXJlKCcuL2NyZWF0ZUNsYXNzJyk7XG52YXIgb25seUNoaWxkID0gcmVxdWlyZSgnLi9v
bmx5Q2hpbGQnKTtcblxudmFyIGNyZWF0ZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRWxl
bWVudDtcbnZhciBjcmVhdGVGYWN0b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUZhY3Rvcnk7XG52
YXIgY2xvbmVFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudDtcblxuaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGxvd1ByaW9yaXR5V2Fy
bmluZyA9IHJlcXVpcmUoJy4vbG93UHJpb3JpdHlXYXJuaW5nJyk7XG4gIHZhciBjYW5EZWZpbmVQ
cm9wZXJ0eSA9IHJlcXVpcmUoJy4vY2FuRGVmaW5lUHJvcGVydHknKTtcbiAgdmFyIFJlYWN0RWxl
bWVudFZhbGlkYXRvciA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50VmFsaWRhdG9yJyk7XG4gIHZh
ciBkaWRXYXJuUHJvcFR5cGVzRGVwcmVjYXRlZCA9IGZhbHNlO1xuICBjcmVhdGVFbGVtZW50ID0g
UmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUVsZW1lbnQ7XG4gIGNyZWF0ZUZhY3RvcnkgPSBS
ZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9yeTtcbiAgY2xvbmVFbGVtZW50ID0gUmVh
Y3RFbGVtZW50VmFsaWRhdG9yLmNsb25lRWxlbWVudDtcbn1cblxudmFyIF9fc3ByZWFkID0gX2Fz
c2lnbjtcbnZhciBjcmVhdGVNaXhpbiA9IGZ1bmN0aW9uIChtaXhpbikge1xuICByZXR1cm4gbWl4
aW47XG59O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICB2YXIgd2FybmVkRm9yU3ByZWFkID0gZmFsc2U7XG4gIHZhciB3YXJuZWRGb3JDcmVhdGVNaXhp
biA9IGZhbHNlO1xuICBfX3NwcmVhZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBsb3dQcmlvcml0eVdh
cm5pbmcod2FybmVkRm9yU3ByZWFkLCAnUmVhY3QuX19zcHJlYWQgaXMgZGVwcmVjYXRlZCBhbmQg
c2hvdWxkIG5vdCBiZSB1c2VkLiBVc2UgJyArICdPYmplY3QuYXNzaWduIGRpcmVjdGx5IG9yIGFu
b3RoZXIgaGVscGVyIGZ1bmN0aW9uIHdpdGggc2ltaWxhciAnICsgJ3NlbWFudGljcy4gWW91IG1h
eSBiZSBzZWVpbmcgdGhpcyB3YXJuaW5nIGR1ZSB0byB5b3VyIGNvbXBpbGVyLiAnICsgJ1NlZSBo
dHRwczovL2ZiLm1lL3JlYWN0LXNwcmVhZC1kZXByZWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLicp
O1xuICAgIHdhcm5lZEZvclNwcmVhZCA9IHRydWU7XG4gICAgcmV0dXJuIF9hc3NpZ24uYXBwbHko
bnVsbCwgYXJndW1lbnRzKTtcbiAgfTtcblxuICBjcmVhdGVNaXhpbiA9IGZ1bmN0aW9uIChtaXhp
bikge1xuICAgIGxvd1ByaW9yaXR5V2FybmluZyh3YXJuZWRGb3JDcmVhdGVNaXhpbiwgJ1JlYWN0
LmNyZWF0ZU1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4gJyArICdJ
biBSZWFjdCB2MTYuMCwgaXQgd2lsbCBiZSByZW1vdmVkLiAnICsgJ1lvdSBjYW4gdXNlIHRoaXMg
bWl4aW4gZGlyZWN0bHkgaW5zdGVhZC4gJyArICdTZWUgaHR0cHM6Ly9mYi5tZS9jcmVhdGVtaXhp
bi13YXMtbmV2ZXItaW1wbGVtZW50ZWQgZm9yIG1vcmUgaW5mby4nKTtcbiAgICB3YXJuZWRGb3JD
cmVhdGVNaXhpbiA9IHRydWU7XG4gICAgcmV0dXJuIG1peGluO1xuICB9O1xufVxuXG52YXIgUmVh
Y3QgPSB7XG4gIC8vIE1vZGVyblxuXG4gIENoaWxkcmVuOiB7XG4gICAgbWFwOiBSZWFjdENoaWxk
cmVuLm1hcCxcbiAgICBmb3JFYWNoOiBSZWFjdENoaWxkcmVuLmZvckVhY2gsXG4gICAgY291bnQ6
IFJlYWN0Q2hpbGRyZW4uY291bnQsXG4gICAgdG9BcnJheTogUmVhY3RDaGlsZHJlbi50b0FycmF5
LFxuICAgIG9ubHk6IG9ubHlDaGlsZFxuICB9LFxuXG4gIENvbXBvbmVudDogUmVhY3RCYXNlQ2xh
c3Nlcy5Db21wb25lbnQsXG4gIFB1cmVDb21wb25lbnQ6IFJlYWN0QmFzZUNsYXNzZXMuUHVyZUNv
bXBvbmVudCxcblxuICBjcmVhdGVFbGVtZW50OiBjcmVhdGVFbGVtZW50LFxuICBjbG9uZUVsZW1l
bnQ6IGNsb25lRWxlbWVudCxcbiAgaXNWYWxpZEVsZW1lbnQ6IFJlYWN0RWxlbWVudC5pc1ZhbGlk
RWxlbWVudCxcblxuICAvLyBDbGFzc2ljXG5cbiAgUHJvcFR5cGVzOiBSZWFjdFByb3BUeXBlcyxc
biAgY3JlYXRlQ2xhc3M6IGNyZWF0ZVJlYWN0Q2xhc3MsXG4gIGNyZWF0ZUZhY3Rvcnk6IGNyZWF0
ZUZhY3RvcnksXG4gIGNyZWF0ZU1peGluOiBjcmVhdGVNaXhpbixcblxuICAvLyBUaGlzIGxvb2tz
IERPTSBzcGVjaWZpYyBidXQgdGhlc2UgYXJlIGFjdHVhbGx5IGlzb21vcnBoaWMgaGVscGVyc1xu
ICAvLyBzaW5jZSB0aGV5IGFyZSBqdXN0IGdlbmVyYXRpbmcgRE9NIHN0cmluZ3MuXG4gIERPTTog
UmVhY3RET01GYWN0b3JpZXMsXG5cbiAgdmVyc2lvbjogUmVhY3RWZXJzaW9uLFxuXG4gIC8vIERl
cHJlY2F0ZWQgaG9vayBmb3IgSlNYIHNwcmVhZCwgZG9uJ3QgdXNlIHRoaXMgZm9yIGFueXRoaW5n
LlxuICBfX3NwcmVhZDogX19zcHJlYWRcbn07XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciB3YXJuZWRGb3JDcmVhdGVDbGFzcyA9IGZhbHNlO1xu
ICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVh
Y3QsICdQcm9wVHlwZXMnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbG93
UHJpb3JpdHlXYXJuaW5nKGRpZFdhcm5Qcm9wVHlwZXNEZXByZWNhdGVkLCAnQWNjZXNzaW5nIFBy
b3BUeXBlcyB2aWEgdGhlIG1haW4gUmVhY3QgcGFja2FnZSBpcyBkZXByZWNhdGVkLCcgKyAnIGFu
ZCB3aWxsIGJlIHJlbW92ZWQgaW4gIFJlYWN0IHYxNi4wLicgKyAnIFVzZSB0aGUgbGF0ZXN0IGF2
YWlsYWJsZSB2MTUuKiBwcm9wLXR5cGVzIHBhY2thZ2UgZnJvbSBucG0gaW5zdGVhZC4nICsgJyBG
b3IgaW5mbyBvbiB1c2FnZSwgY29tcGF0aWJpbGl0eSwgbWlncmF0aW9uIGFuZCBtb3JlLCBzZWUg
JyArICdodHRwczovL2ZiLm1lL3Byb3AtdHlwZXMtZG9jcycpO1xuICAgICAgICBkaWRXYXJuUHJv
cFR5cGVzRGVwcmVjYXRlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBSZWFjdFByb3BUeXBlcztc
biAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFjdCwgJ2Ny
ZWF0ZUNsYXNzJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxvd1ByaW9y
aXR5V2FybmluZyh3YXJuZWRGb3JDcmVhdGVDbGFzcywgJ0FjY2Vzc2luZyBjcmVhdGVDbGFzcyB2
aWEgdGhlIG1haW4gUmVhY3QgcGFja2FnZSBpcyBkZXByZWNhdGVkLCcgKyAnIGFuZCB3aWxsIGJl
IHJlbW92ZWQgaW4gUmVhY3QgdjE2LjAuJyArIFwiIFVzZSBhIHBsYWluIEphdmFTY3JpcHQgY2xh
c3MgaW5zdGVhZC4gSWYgeW91J3JlIG5vdCB5ZXQgXCIgKyAncmVhZHkgdG8gbWlncmF0ZSwgY3Jl
YXRlLXJlYWN0LWNsYXNzIHYxNS4qIGlzIGF2YWlsYWJsZSAnICsgJ29uIG5wbSBhcyBhIHRlbXBv
cmFyeSwgZHJvcC1pbiByZXBsYWNlbWVudC4gJyArICdGb3IgbW9yZSBpbmZvIHNlZSBodHRwczov
L2ZiLm1lL3JlYWN0LWNyZWF0ZS1jbGFzcycpO1xuICAgICAgICB3YXJuZWRGb3JDcmVhdGVDbGFz
cyA9IHRydWU7XG4gICAgICAgIHJldHVybiBjcmVhdGVSZWFjdENsYXNzO1xuICAgICAgfVxuICAg
IH0pO1xuICB9XG5cbiAgLy8gUmVhY3QuRE9NIGZhY3RvcmllcyBhcmUgZGVwcmVjYXRlZC4gV3Jh
cCB0aGVzZSBtZXRob2RzIHNvIHRoYXRcbiAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIFJlYWN0LkRP
TSBuYW1lc3BhY2UgYW5kIGFsZXJ0IHVzZXJzIHRvIHN3aXRjaFxuICAvLyB0byB0aGUgYHJlYWN0
LWRvbS1mYWN0b3JpZXNgIHBhY2thZ2UuXG4gIFJlYWN0LkRPTSA9IHt9O1xuICB2YXIgd2FybmVk
Rm9yRmFjdG9yaWVzID0gZmFsc2U7XG4gIE9iamVjdC5rZXlzKFJlYWN0RE9NRmFjdG9yaWVzKS5m
b3JFYWNoKGZ1bmN0aW9uIChmYWN0b3J5KSB7XG4gICAgUmVhY3QuRE9NW2ZhY3RvcnldID0gZnVu
Y3Rpb24gKCkge1xuICAgICAgaWYgKCF3YXJuZWRGb3JGYWN0b3JpZXMpIHtcbiAgICAgICAgbG93
UHJpb3JpdHlXYXJuaW5nKGZhbHNlLCAnQWNjZXNzaW5nIGZhY3RvcmllcyBsaWtlIFJlYWN0LkRP
TS4lcyBoYXMgYmVlbiBkZXByZWNhdGVkICcgKyAnYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2MTYu
MCsuIFVzZSB0aGUgJyArICdyZWFjdC1kb20tZmFjdG9yaWVzIHBhY2thZ2UgaW5zdGVhZC4gJyAr
ICcgVmVyc2lvbiAxLjAgcHJvdmlkZXMgYSBkcm9wLWluIHJlcGxhY2VtZW50LicgKyAnIEZvciBt
b3JlIGluZm8sIHNlZSBodHRwczovL2ZiLm1lL3JlYWN0LWRvbS1mYWN0b3JpZXMnLCBmYWN0b3J5
KTtcbiAgICAgICAgd2FybmVkRm9yRmFjdG9yaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJl
dHVybiBSZWFjdERPTUZhY3Rvcmllc1tmYWN0b3J5XS5hcHBseShSZWFjdERPTUZhY3Rvcmllcywg
YXJndW1lbnRzKTtcbiAgICB9O1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdDtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC9saWIvUmVhY3QuanNcbiAqKiBtb2R1bGUgaWQgPSAxN1xuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztc
blxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdEN1
cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcblxudmFyIHdhcm5p
bmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG52YXIgY2FuRGVmaW5lUHJvcGVydHkg
PSByZXF1aXJlKCcuL2NhbkRlZmluZVByb3BlcnR5Jyk7XG52YXIgaGFzT3duUHJvcGVydHkgPSBP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBF
ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRTeW1ib2wnKTtcblxudmFyIFJFU0VSVkVEX1BST1BT
ID0ge1xuICBrZXk6IHRydWUsXG4gIHJlZjogdHJ1ZSxcbiAgX19zZWxmOiB0cnVlLFxuICBfX3Nv
dXJjZTogdHJ1ZVxufTtcblxudmFyIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duLCBzcGVjaWFs
UHJvcFJlZldhcm5pbmdTaG93bjtcblxuZnVuY3Rpb24gaGFzVmFsaWRSZWYoY29uZmlnKSB7XG4g
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGhh
c093blByb3BlcnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ3JlZicpLmdldDtcbiAgICAg
IGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBm
YWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbmZpZy5yZWYgIT09IHVuZGVm
aW5lZDtcbn1cblxuZnVuY3Rpb24gaGFzVmFsaWRLZXkoY29uZmlnKSB7XG4gIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5
LmNhbGwoY29uZmlnLCAna2V5JykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ2tleScpLmdldDtcbiAgICAgIGlmIChnZXR0ZXIg
JiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAg
IH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbmZpZy5rZXkgIT09IHVuZGVmaW5lZDtcbn1cblxu
ZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7
XG4gIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFz
cGVjaWFsUHJvcEtleVdhcm5pbmdTaG93bikge1xuICAgICAgc3BlY2lhbFByb3BLZXlXYXJuaW5n
U2hvd24gPSB0cnVlO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICclczogYGtleWAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFj
Y2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJ
ZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxk
IGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4g
KGh0dHBzOi8vZmIubWUvcmVhY3Qtc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSkgOiB2b2lk
IDA7XG4gICAgfVxuICB9O1xuICB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkuaXNSZWFjdFdhcm5pbmcg
PSB0cnVlO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdrZXknLCB7XG4gICAgZ2V0
OiB3YXJuQWJvdXRBY2Nlc3NpbmdLZXksXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xu
fVxuXG5mdW5jdGlvbiBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5h
bWUpIHtcbiAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ1JlZiA9IGZ1bmN0aW9uICgpIHtcbiAgICBp
ZiAoIXNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duKSB7XG4gICAgICBzcGVjaWFsUHJvcFJlZldh
cm5pbmdTaG93biA9IHRydWU7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzOiBgcmVmYCBpcyBub3QgYSBwcm9wLiBUcnlpbmcg
dG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJu
ZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUg
Y2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdw
cm9wLiAoaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcGVjaWFsLXByb3BzKScsIGRpc3BsYXlOYW1lKSA6
IHZvaWQgMDtcbiAgICB9XG4gIH07XG4gIHdhcm5BYm91dEFjY2Vzc2luZ1JlZi5pc1JlYWN0V2Fy
bmluZyA9IHRydWU7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ3JlZicsIHtcbiAg
ICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ1JlZixcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAg
fSk7XG59XG5cbi8qKlxuICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEgbmV3IFJlYWN0IGVs
ZW1lbnQuIFRoaXMgbm8gbG9uZ2VyIGFkaGVyZXMgdG9cbiAqIHRoZSBjbGFzcyBwYXR0ZXJuLCBz
byBkbyBub3QgdXNlIG5ldyB0byBjYWxsIGl0LiBBbHNvLCBubyBpbnN0YW5jZW9mIGNoZWNrXG4g
KiB3aWxsIHdvcmsuIEluc3RlYWQgdGVzdCAkJHR5cGVvZiBmaWVsZCBhZ2FpbnN0IFN5bWJvbC5m
b3IoJ3JlYWN0LmVsZW1lbnQnKSB0byBjaGVja1xuICogaWYgc29tZXRoaW5nIGlzIGEgUmVhY3Qg
RWxlbWVudC5cbiAqXG4gKiBAcGFyYW0geyp9IHR5cGVcbiAqIEBwYXJhbSB7Kn0ga2V5XG4gKiBA
cGFyYW0ge3N0cmluZ3xvYmplY3R9IHJlZlxuICogQHBhcmFtIHsqfSBzZWxmIEEgKnRlbXBvcmFy
eSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNgIGlzXG4gKiBkaWZmZXJlbnQg
ZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJlYWN0LmNyZWF0ZUVsZW1lbnQgaXMgY2FsbGVkLCBzbyB0
aGF0IHdlXG4gKiBjYW4gd2Fybi4gV2Ugd2FudCB0byBnZXQgcmlkIG9mIG93bmVyIGFuZCByZXBs
YWNlIHN0cmluZyBgcmVmYHMgd2l0aCBhcnJvd1xuICogZnVuY3Rpb25zLCBhbmQgYXMgbG9uZyBh
cyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhlcmUgd2lsbCBiZSBub1xuICogY2hh
bmdlIGluIGJlaGF2aW9yLlxuICogQHBhcmFtIHsqfSBzb3VyY2UgQW4gYW5ub3RhdGlvbiBvYmpl
Y3QgKGFkZGVkIGJ5IGEgdHJhbnNwaWxlciBvciBvdGhlcndpc2UpXG4gKiBpbmRpY2F0aW5nIGZp
bGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90aGVyIGluZm9ybWF0aW9uLlxuICogQHBhcmFt
IHsqfSBvd25lclxuICogQHBhcmFtIHsqfSBwcm9wc1xuICogQGludGVybmFsXG4gKi9cbnZhciBS
ZWFjdEVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgb3du
ZXIsIHByb3BzKSB7XG4gIHZhciBlbGVtZW50ID0ge1xuICAgIC8vIFRoaXMgdGFnIGFsbG93IHVz
IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgYXMgYSBSZWFjdCBFbGVtZW50XG4gICAgJCR0eXBl
b2Y6IFJFQUNUX0VMRU1FTlRfVFlQRSxcblxuICAgIC8vIEJ1aWx0LWluIHByb3BlcnRpZXMgdGhh
dCBiZWxvbmcgb24gdGhlIGVsZW1lbnRcbiAgICB0eXBlOiB0eXBlLFxuICAgIGtleToga2V5LFxu
ICAgIHJlZjogcmVmLFxuICAgIHByb3BzOiBwcm9wcyxcblxuICAgIC8vIFJlY29yZCB0aGUgY29t
cG9uZW50IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGlzIGVsZW1lbnQuXG4gICAgX293bmVy
OiBvd25lclxuICB9O1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBjdXJyZW50bHkgbXV0YXRpdmUu
IFdlIHB1dCBpdCBvblxuICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3
ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXG4gICAgLy8gVGhpcyBjYW4gYmUgcmVwbGFj
ZWQgd2l0aCBhIFdlYWtNYXAgb25jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCBpblxuICAgIC8vIGNv
bW1vbmx5IHVzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLlxuICAgIGVsZW1lbnQuX3N0b3Jl
ID0ge307XG5cbiAgICAvLyBUbyBtYWtlIGNvbXBhcmluZyBSZWFjdEVsZW1lbnRzIGVhc2llciBm
b3IgdGVzdGluZyBwdXJwb3Nlcywgd2UgbWFrZVxuICAgIC8vIHRoZSB2YWxpZGF0aW9uIGZsYWcg
bm9uLWVudW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGRcbiAgICAvLyBpbmNs
dWRlIGV2ZXJ5IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiksIHNvIHRoZSB0ZXN0IGZyYW1l
d29ya1xuICAgIC8vIGlnbm9yZXMgaXQuXG4gICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG4g
ICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3RvcmUsICd2YWxpZGF0ZWQnLCB7
XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNl
LFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGZhbHNlXG4gICAgICB9
KTtcbiAgICAgIC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9ubHkgcHJvcGVydGllcy5cbiAg
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7XG4gICAgICAgIGNv
bmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3
cml0YWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBzZWxmXG4gICAgICB9KTtcbiAgICAgIC8v
IFR3byBlbGVtZW50cyBjcmVhdGVkIGluIHR3byBkaWZmZXJlbnQgcGxhY2VzIHNob3VsZCBiZSBj
b25zaWRlcmVkXG4gICAgICAvLyBlcXVhbCBmb3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgdGhlcmVm
b3JlIHdlIGhpZGUgaXQgZnJvbSBlbnVtZXJhdGlvbi5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlbGVtZW50LCAnX3NvdXJjZScsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxc
biAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAg
ICAgICAgdmFsdWU6IHNvdXJjZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1l
bnQuX3N0b3JlLnZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgZWxlbWVudC5fc2VsZiA9IHNlbGY7
XG4gICAgICBlbGVtZW50Ll9zb3VyY2UgPSBzb3VyY2U7XG4gICAgfVxuICAgIGlmIChPYmplY3Qu
ZnJlZXplKSB7XG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQucHJvcHMpO1xuICAgICAgT2Jq
ZWN0LmZyZWV6ZShlbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZWxlbWVudDtcbn07
XG5cbi8qKlxuICogQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgUmVhY3RFbGVtZW50IG9mIHRoZSBn
aXZlbiB0eXBlLlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3Mv
dG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWVsZW1lbnRcbiAqL1xuUmVhY3RFbGVtZW50
LmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwgY29uZmlnLCBjaGlsZHJlbikge1xuICB2
YXIgcHJvcE5hbWU7XG5cbiAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZFxuICB2YXIg
cHJvcHMgPSB7fTtcblxuICB2YXIga2V5ID0gbnVsbDtcbiAgdmFyIHJlZiA9IG51bGw7XG4gIHZh
ciBzZWxmID0gbnVsbDtcbiAgdmFyIHNvdXJjZSA9IG51bGw7XG5cbiAgaWYgKGNvbmZpZyAhPSBu
dWxsKSB7XG4gICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcbiAgICAgIHJlZiA9IGNvbmZp
Zy5yZWY7XG4gICAgfVxuICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7XG4gICAgICBrZXkg
PSAnJyArIGNvbmZpZy5rZXk7XG4gICAgfVxuXG4gICAgc2VsZiA9IGNvbmZpZy5fX3NlbGYgPT09
IHVuZGVmaW5lZCA/IG51bGwgOiBjb25maWcuX19zZWxmO1xuICAgIHNvdXJjZSA9IGNvbmZpZy5f
X3NvdXJjZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NvdXJjZTtcbiAgICAvLyBS
ZW1haW5pbmcgcHJvcGVydGllcyBhcmUgYWRkZWQgdG8gYSBuZXcgcHJvcHMgb2JqZWN0XG4gICAg
Zm9yIChwcm9wTmFtZSBpbiBjb25maWcpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxs
KGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9w
TmFtZSkpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXTtcbiAg
ICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBh
cmd1bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRvXG4gIC8vIHRoZSBuZXdseSBh
bGxvY2F0ZWQgcHJvcHMgb2JqZWN0LlxuICB2YXIgY2hpbGRyZW5MZW5ndGggPSBhcmd1bWVudHMu
bGVuZ3RoIC0gMjtcbiAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7XG4gICAgcHJvcHMuY2hp
bGRyZW4gPSBjaGlsZHJlbjtcbiAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0aCA+IDEpIHtcbiAg
ICB2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTtcbiAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkQXJyYXlbaV0gPSBh
cmd1bWVudHNbaSArIDJdO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKE9iamVjdC5mcmVlemUpIHtcbiAgICAgICAgT2Jq
ZWN0LmZyZWV6ZShjaGlsZEFycmF5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcHJvcHMuY2hpbGRy
ZW4gPSBjaGlsZEFycmF5O1xuICB9XG5cbiAgLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXG4gIGlm
ICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5
cGUuZGVmYXVsdFByb3BzO1xuICAgIGZvciAocHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7XG4g
ICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJvcHNb
cHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1c
biAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAo
a2V5IHx8IHJlZikge1xuICAgICAgaWYgKHR5cGVvZiBwcm9wcy4kJHR5cGVvZiA9PT0gJ3VuZGVm
aW5lZCcgfHwgcHJvcHMuJCR0eXBlb2YgIT09IFJFQUNUX0VMRU1FTlRfVFlQRSkge1xuICAgICAg
ICB2YXIgZGlzcGxheU5hbWUgPSB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyA/IHR5cGUuZGlz
cGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8ICdVbmtub3duJyA6IHR5cGU7XG4gICAgICAgIGlmIChr
ZXkpIHtcbiAgICAgICAgICBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxh
eU5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICBkZWZpbmVS
ZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuICAgICAgICB9XG4gICAg
ICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBSZWFjdEVsZW1lbnQodHlwZSwga2V5LCByZWYsIHNl
bGYsIHNvdXJjZSwgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCwgcHJvcHMpO1xufTtcblxuLyoq
XG4gKiBSZXR1cm4gYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIFJlYWN0RWxlbWVudHMgb2YgYSBn
aXZlbiB0eXBlLlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3Mv
dG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWZhY3RvcnlcbiAqL1xuUmVhY3RFbGVtZW50
LmNyZWF0ZUZhY3RvcnkgPSBmdW5jdGlvbiAodHlwZSkge1xuICB2YXIgZmFjdG9yeSA9IFJlYWN0
RWxlbWVudC5jcmVhdGVFbGVtZW50LmJpbmQobnVsbCwgdHlwZSk7XG4gIC8vIEV4cG9zZSB0aGUg
dHlwZSBvbiB0aGUgZmFjdG9yeSBhbmQgdGhlIHByb3RvdHlwZSBzbyB0aGF0IGl0IGNhbiBiZVxu
ICAvLyBlYXNpbHkgYWNjZXNzZWQgb24gZWxlbWVudHMuIEUuZy4gYDxGb28gLz4udHlwZSA9PT0g
Rm9vYC5cbiAgLy8gVGhpcyBzaG91bGQgbm90IGJlIG5hbWVkIGBjb25zdHJ1Y3RvcmAgc2luY2Ug
dGhpcyBtYXkgbm90IGJlIHRoZSBmdW5jdGlvblxuICAvLyB0aGF0IGNyZWF0ZWQgdGhlIGVsZW1l
bnQsIGFuZCBpdCBtYXkgbm90IGV2ZW4gYmUgYSBjb25zdHJ1Y3Rvci5cbiAgLy8gTGVnYWN5IGhv
b2sgVE9ETzogV2FybiBpZiB0aGlzIGlzIGFjY2Vzc2VkXG4gIGZhY3RvcnkudHlwZSA9IHR5cGU7
XG4gIHJldHVybiBmYWN0b3J5O1xufTtcblxuUmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZUtl
eSA9IGZ1bmN0aW9uIChvbGRFbGVtZW50LCBuZXdLZXkpIHtcbiAgdmFyIG5ld0VsZW1lbnQgPSBS
ZWFjdEVsZW1lbnQob2xkRWxlbWVudC50eXBlLCBuZXdLZXksIG9sZEVsZW1lbnQucmVmLCBvbGRF
bGVtZW50Ll9zZWxmLCBvbGRFbGVtZW50Ll9zb3VyY2UsIG9sZEVsZW1lbnQuX293bmVyLCBvbGRF
bGVtZW50LnByb3BzKTtcblxuICByZXR1cm4gbmV3RWxlbWVudDtcbn07XG5cbi8qKlxuICogQ2xv
bmUgYW5kIHJldHVybiBhIG5ldyBSZWFjdEVsZW1lbnQgdXNpbmcgZWxlbWVudCBhcyB0aGUgc3Rh
cnRpbmcgcG9pbnQuXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9j
cy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2xvbmVlbGVtZW50XG4gKi9cblJlYWN0RWxlbWVu
dC5jbG9uZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgY29uZmlnLCBjaGlsZHJlbikge1xu
ICB2YXIgcHJvcE5hbWU7XG5cbiAgLy8gT3JpZ2luYWwgcHJvcHMgYXJlIGNvcGllZFxuICB2YXIg
cHJvcHMgPSBfYXNzaWduKHt9LCBlbGVtZW50LnByb3BzKTtcblxuICAvLyBSZXNlcnZlZCBuYW1l
cyBhcmUgZXh0cmFjdGVkXG4gIHZhciBrZXkgPSBlbGVtZW50LmtleTtcbiAgdmFyIHJlZiA9IGVs
ZW1lbnQucmVmO1xuICAvLyBTZWxmIGlzIHByZXNlcnZlZCBzaW5jZSB0aGUgb3duZXIgaXMgcHJl
c2VydmVkLlxuICB2YXIgc2VsZiA9IGVsZW1lbnQuX3NlbGY7XG4gIC8vIFNvdXJjZSBpcyBwcmVz
ZXJ2ZWQgc2luY2UgY2xvbmVFbGVtZW50IGlzIHVubGlrZWx5IHRvIGJlIHRhcmdldGVkIGJ5IGFc
biAgLy8gdHJhbnNwaWxlciwgYW5kIHRoZSBvcmlnaW5hbCBzb3VyY2UgaXMgcHJvYmFibHkgYSBi
ZXR0ZXIgaW5kaWNhdG9yIG9mIHRoZVxuICAvLyB0cnVlIG93bmVyLlxuICB2YXIgc291cmNlID0g
ZWxlbWVudC5fc291cmNlO1xuXG4gIC8vIE93bmVyIHdpbGwgYmUgcHJlc2VydmVkLCB1bmxlc3Mg
cmVmIGlzIG92ZXJyaWRkZW5cbiAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7XG5cbiAgaWYg
KGNvbmZpZyAhPSBudWxsKSB7XG4gICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcbiAgICAg
IC8vIFNpbGVudGx5IHN0ZWFsIHRoZSByZWYgZnJvbSB0aGUgcGFyZW50LlxuICAgICAgcmVmID0g
Y29uZmlnLnJlZjtcbiAgICAgIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAg
ICB9XG4gICAgaWYgKGhhc1ZhbGlkS2V5KGNvbmZpZykpIHtcbiAgICAgIGtleSA9ICcnICsgY29u
ZmlnLmtleTtcbiAgICB9XG5cbiAgICAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBvdmVycmlkZSBl
eGlzdGluZyBwcm9wc1xuICAgIHZhciBkZWZhdWx0UHJvcHM7XG4gICAgaWYgKGVsZW1lbnQudHlw
ZSAmJiBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgICBkZWZhdWx0UHJvcHMgPSBl
bGVtZW50LnR5cGUuZGVmYXVsdFByb3BzO1xuICAgIH1cbiAgICBmb3IgKHByb3BOYW1lIGluIGNv
bmZpZykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBwcm9wTmFtZSkg
JiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBp
ZiAoY29uZmlnW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkICYmIGRlZmF1bHRQcm9wcyAhPT0gdW5k
ZWZpbmVkKSB7XG4gICAgICAgICAgLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXG4gICAgICAgICAg
cHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgfSBlbHNl
IHtcbiAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuICAgICAg
ICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hpbGRyZW4gY2FuIGJlIG1vcmUgdGhh
biBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJyZWQgb250b1xuICAvLyB0aGUg
bmV3bHkgYWxsb2NhdGVkIHByb3BzIG9iamVjdC5cbiAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJn
dW1lbnRzLmxlbmd0aCAtIDI7XG4gIGlmIChjaGlsZHJlbkxlbmd0aCA9PT0gMSkge1xuICAgIHBy
b3BzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH0gZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAx
KSB7XG4gICAgdmFyIGNoaWxkQXJyYXkgPSBBcnJheShjaGlsZHJlbkxlbmd0aCk7XG4gICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZEFycmF5
W2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICB9XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGls
ZEFycmF5O1xuICB9XG5cbiAgcmV0dXJuIFJlYWN0RWxlbWVudChlbGVtZW50LnR5cGUsIGtleSwg
cmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcyk7XG59O1xuXG4vKipcbiAqIFZlcmlmaWVz
IHRoZSBvYmplY3QgaXMgYSBSZWFjdEVsZW1lbnQuXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5n
aXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuaXN2YWxpZGVsZW1l
bnRcbiAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVl
IGlmIGBvYmplY3RgIGlzIGEgdmFsaWQgY29tcG9uZW50LlxuICogQGZpbmFsXG4gKi9cblJlYWN0
RWxlbWVudC5pc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgcmV0dXJuIHR5
cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiBvYmplY3QuJCR0
eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVh
Y3RFbGVtZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0L2xpYi9SZWFjdEVsZW1lbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxOFxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFj
dFByb2RJbnZhcmlhbnQnKTtcblxudmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSByZXF1aXJlKCcu
L0V2ZW50UGx1Z2luUmVnaXN0cnknKTtcbnZhciBFdmVudFBsdWdpblV0aWxzID0gcmVxdWlyZSgn
Li9FdmVudFBsdWdpblV0aWxzJyk7XG52YXIgUmVhY3RFcnJvclV0aWxzID0gcmVxdWlyZSgnLi9S
ZWFjdEVycm9yVXRpbHMnKTtcblxudmFyIGFjY3VtdWxhdGVJbnRvID0gcmVxdWlyZSgnLi9hY2N1
bXVsYXRlSW50bycpO1xudmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IHJlcXVpcmUoJy4vZm9yRWFj
aEFjY3VtdWxhdGVkJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJp
YW50Jyk7XG5cbi8qKlxuICogSW50ZXJuYWwgc3RvcmUgZm9yIGV2ZW50IGxpc3RlbmVyc1xuICov
XG52YXIgbGlzdGVuZXJCYW5rID0ge307XG5cbi8qKlxuICogSW50ZXJuYWwgcXVldWUgb2YgZXZl
bnRzIHRoYXQgaGF2ZSBhY2N1bXVsYXRlZCB0aGVpciBkaXNwYXRjaGVzIGFuZCBhcmVcbiAqIHdh
aXRpbmcgdG8gaGF2ZSB0aGVpciBkaXNwYXRjaGVzIGV4ZWN1dGVkLlxuICovXG52YXIgZXZlbnRR
dWV1ZSA9IG51bGw7XG5cbi8qKlxuICogRGlzcGF0Y2hlcyBhbiBldmVudCBhbmQgcmVsZWFzZXMg
aXQgYmFjayBpbnRvIHRoZSBwb29sLCB1bmxlc3MgcGVyc2lzdGVudC5cbiAqXG4gKiBAcGFyYW0g
ez9vYmplY3R9IGV2ZW50IFN5bnRoZXRpYyBldmVudCB0byBiZSBkaXNwYXRjaGVkLlxuICogQHBh
cmFtIHtib29sZWFufSBzaW11bGF0ZWQgSWYgdGhlIGV2ZW50IGlzIHNpbXVsYXRlZCAoY2hhbmdl
cyBleG4gYmVoYXZpb3IpXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgZXhlY3V0ZURpc3BhdGNoZXNB
bmRSZWxlYXNlID0gZnVuY3Rpb24gKGV2ZW50LCBzaW11bGF0ZWQpIHtcbiAgaWYgKGV2ZW50KSB7
XG4gICAgRXZlbnRQbHVnaW5VdGlscy5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZXZlbnQsIHNp
bXVsYXRlZCk7XG5cbiAgICBpZiAoIWV2ZW50LmlzUGVyc2lzdGVudCgpKSB7XG4gICAgICBldmVu
dC5jb25zdHJ1Y3Rvci5yZWxlYXNlKGV2ZW50KTtcbiAgICB9XG4gIH1cbn07XG52YXIgZXhlY3V0
ZURpc3BhdGNoZXNBbmRSZWxlYXNlU2ltdWxhdGVkID0gZnVuY3Rpb24gKGUpIHtcbiAgcmV0dXJu
IGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZShlLCB0cnVlKTtcbn07XG52YXIgZXhlY3V0ZURp
c3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwgPSBmdW5jdGlvbiAoZSkge1xuICByZXR1cm4gZXhl
Y3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlKGUsIGZhbHNlKTtcbn07XG5cbnZhciBnZXREaWN0aW9u
YXJ5S2V5ID0gZnVuY3Rpb24gKGluc3QpIHtcbiAgLy8gUHJldmVudHMgVjggcGVyZm9ybWFuY2Ug
aXNzdWU6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcyMzJc
biAgcmV0dXJuICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7XG59O1xuXG5mdW5jdGlvbiBpc0ludGVy
YWN0aXZlKHRhZykge1xuICByZXR1cm4gdGFnID09PSAnYnV0dG9uJyB8fCB0YWcgPT09ICdpbnB1
dCcgfHwgdGFnID09PSAnc2VsZWN0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYSc7XG59XG5cbmZ1bmN0
aW9uIHNob3VsZFByZXZlbnRNb3VzZUV2ZW50KG5hbWUsIHR5cGUsIHByb3BzKSB7XG4gIHN3aXRj
aCAobmFtZSkge1xuICAgIGNhc2UgJ29uQ2xpY2snOlxuICAgIGNhc2UgJ29uQ2xpY2tDYXB0dXJl
JzpcbiAgICBjYXNlICdvbkRvdWJsZUNsaWNrJzpcbiAgICBjYXNlICdvbkRvdWJsZUNsaWNrQ2Fw
dHVyZSc6XG4gICAgY2FzZSAnb25Nb3VzZURvd24nOlxuICAgIGNhc2UgJ29uTW91c2VEb3duQ2Fw
dHVyZSc6XG4gICAgY2FzZSAnb25Nb3VzZU1vdmUnOlxuICAgIGNhc2UgJ29uTW91c2VNb3ZlQ2Fw
dHVyZSc6XG4gICAgY2FzZSAnb25Nb3VzZVVwJzpcbiAgICBjYXNlICdvbk1vdXNlVXBDYXB0dXJl
JzpcbiAgICAgIHJldHVybiAhIShwcm9wcy5kaXNhYmxlZCAmJiBpc0ludGVyYWN0aXZlKHR5cGUp
KTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICog
VGhpcyBpcyBhIHVuaWZpZWQgaW50ZXJmYWNlIGZvciBldmVudCBwbHVnaW5zIHRvIGJlIGluc3Rh
bGxlZCBhbmQgY29uZmlndXJlZC5cbiAqXG4gKiBFdmVudCBwbHVnaW5zIGNhbiBpbXBsZW1lbnQg
dGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgYGV4dHJhY3RFdmVudHNgIHtmdW5j
dGlvbihzdHJpbmcsIERPTUV2ZW50VGFyZ2V0LCBzdHJpbmcsIG9iamVjdCk6ICp9XG4gKiAgICAg
UmVxdWlyZWQuIFdoZW4gYSB0b3AtbGV2ZWwgZXZlbnQgaXMgZmlyZWQsIHRoaXMgbWV0aG9kIGlz
IGV4cGVjdGVkIHRvXG4gKiAgICAgZXh0cmFjdCBzeW50aGV0aWMgZXZlbnRzIHRoYXQgd2lsbCBp
biB0dXJuIGJlIHF1ZXVlZCBhbmQgZGlzcGF0Y2hlZC5cbiAqXG4gKiAgIGBldmVudFR5cGVzYCB7
b2JqZWN0fVxuICogICAgIE9wdGlvbmFsLCBwbHVnaW5zIHRoYXQgZmlyZSBldmVudHMgbXVzdCBw
dWJsaXNoIGEgbWFwcGluZyBvZiByZWdpc3RyYXRpb25cbiAqICAgICBuYW1lcyB0aGF0IGFyZSB1
c2VkIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy4gVmFsdWVzIG9mIHRoaXMgbWFwcGluZyBtdXN0XG4g
KiAgICAgYmUgb2JqZWN0cyB0aGF0IGNvbnRhaW4gYHJlZ2lzdHJhdGlvbk5hbWVgIG9yIGBwaGFz
ZWRSZWdpc3RyYXRpb25OYW1lc2AuXG4gKlxuICogICBgZXhlY3V0ZURpc3BhdGNoYCB7ZnVuY3Rp
b24ob2JqZWN0LCBmdW5jdGlvbiwgc3RyaW5nKX1cbiAqICAgICBPcHRpb25hbCwgYWxsb3dzIHBs
dWdpbnMgdG8gb3ZlcnJpZGUgaG93IGFuIGV2ZW50IGdldHMgZGlzcGF0Y2hlZC4gQnlcbiAqICAg
ICBkZWZhdWx0LCB0aGUgbGlzdGVuZXIgaXMgc2ltcGx5IGludm9rZWQuXG4gKlxuICogRWFjaCBw
bHVnaW4gdGhhdCBpcyBpbmplY3RlZCBpbnRvIGBFdmVudHNQbHVnaW5IdWJgIGlzIGltbWVkaWF0
ZWx5IG9wZXJhYmxlLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xudmFyIEV2ZW50UGx1Z2luSHViID0g
e1xuICAvKipcbiAgICogTWV0aG9kcyBmb3IgaW5qZWN0aW5nIGRlcGVuZGVuY2llcy5cbiAgICov
XG4gIGluamVjdGlvbjoge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7YXJyYXl9IEluamVjdGVk
RXZlbnRQbHVnaW5PcmRlclxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICBpbmplY3RFdmVu
dFBsdWdpbk9yZGVyOiBFdmVudFBsdWdpblJlZ2lzdHJ5LmluamVjdEV2ZW50UGx1Z2luT3JkZXIs
XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gaW5qZWN0ZWROYW1lc1RvUGx1Z2lu
cyBNYXAgZnJvbSBuYW1lcyB0byBwbHVnaW4gbW9kdWxlcy5cbiAgICAgKi9cbiAgICBpbmplY3RF
dmVudFBsdWdpbnNCeU5hbWU6IEV2ZW50UGx1Z2luUmVnaXN0cnkuaW5qZWN0RXZlbnRQbHVnaW5z
QnlOYW1lXG4gIH0sXG5cbiAgLyoqXG4gICAqIFN0b3JlcyBgbGlzdGVuZXJgIGF0IGBsaXN0ZW5l
ckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1ba2V5XWAuIElzIGlkZW1wb3RlbnQuXG4gICAqXG4gICAq
IEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBv
ZiBldmVudHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2Yg
bGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gbGlzdGVu
ZXIgVGhlIGNhbGxiYWNrIHRvIHN0b3JlLlxuICAgKi9cbiAgcHV0TGlzdGVuZXI6IGZ1bmN0aW9u
IChpbnN0LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcikge1xuICAgICEodHlwZW9mIGxpc3Rl
bmVyID09PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCAlcyBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0
aW9uLCBpbnN0ZWFkIGdvdCB0eXBlICVzJywgcmVnaXN0cmF0aW9uTmFtZSwgdHlwZW9mIGxpc3Rl
bmVyKSA6IF9wcm9kSW52YXJpYW50KCc5NCcsIHJlZ2lzdHJhdGlvbk5hbWUsIHR5cGVvZiBsaXN0
ZW5lcikgOiB2b2lkIDA7XG5cbiAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTtc
biAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0
aW9uTmFtZV0gfHwgKGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXSA9IHt9KTtcbiAgICBi
YW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtrZXldID0gbGlzdGVuZXI7XG5cbiAgICB2YXIgUGx1Z2lu
TW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdp
c3RyYXRpb25OYW1lXTtcbiAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS5kaWRQ
dXRMaXN0ZW5lcikge1xuICAgICAgUGx1Z2luTW9kdWxlLmRpZFB1dExpc3RlbmVyKGluc3QsIHJl
Z2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBw
YXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBl
dmVudHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlz
dGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICogQHJldHVybiB7P2Z1bmN0aW9ufSBUaGUgc3Rv
cmVkIGNhbGxiYWNrLlxuICAgKi9cbiAgZ2V0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdp
c3RyYXRpb25OYW1lKSB7XG4gICAgLy8gVE9ETzogc2hvdWxkUHJldmVudE1vdXNlRXZlbnQgaXMg
RE9NLXNwZWNpZmljIGFuZCBkZWZpbml0ZWx5IHNob3VsZCBub3RcbiAgICAvLyBsaXZlIGhlcmU7
IG5lZWRzIHRvIGJlIG1vdmVkIHRvIGEgYmV0dGVyIHBsYWNlIHNvb25cbiAgICB2YXIgYmFua0Zv
clJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAg
aWYgKHNob3VsZFByZXZlbnRNb3VzZUV2ZW50KHJlZ2lzdHJhdGlvbk5hbWUsIGluc3QuX2N1cnJl
bnRFbGVtZW50LnR5cGUsIGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzKSkge1xuICAgICAgcmV0
dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xu
ICAgIHJldHVybiBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSAmJiBiYW5rRm9yUmVnaXN0cmF0aW9u
TmFtZVtrZXldO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgbGlzdGVuZXIgZnJvbSB0
aGUgcmVnaXN0cmF0aW9uIGJhbmsuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRo
ZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMuXG4gICAqIEBwYXJhbSB7
c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tg
KS5cbiAgICovXG4gIGRlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9u
TmFtZSkge1xuICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lz
dHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgIGlmIChQbHVnaW5Nb2R1
bGUgJiYgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcikge1xuICAgICAgUGx1Z2luTW9k
dWxlLndpbGxEZWxldGVMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTtcbiAgICB9XG5c
biAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0
aW9uTmFtZV07XG4gICAgLy8gVE9ETzogVGhpcyBzaG91bGQgbmV2ZXIgYmUgbnVsbCAtLSB3aGVu
IGlzIGl0P1xuICAgIGlmIChiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSkge1xuICAgICAgdmFyIGtl
eSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG4gICAgICBkZWxldGUgYmFua0ZvclJlZ2lzdHJh
dGlvbk5hbWVba2V5XTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYWxsIGxp
c3RlbmVycyBmb3IgdGhlIERPTSBlbGVtZW50IHdpdGggdGhlIHN1cHBsaWVkIElELlxuICAgKlxu
ICAgKiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNoIGlzIHRoZSBzb3Vy
Y2Ugb2YgZXZlbnRzLlxuICAgKi9cbiAgZGVsZXRlQWxsTGlzdGVuZXJzOiBmdW5jdGlvbiAoaW5z
dCkge1xuICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xuICAgIGZvciAodmFy
IHJlZ2lzdHJhdGlvbk5hbWUgaW4gbGlzdGVuZXJCYW5rKSB7XG4gICAgICBpZiAoIWxpc3RlbmVy
QmFuay5oYXNPd25Qcm9wZXJ0eShyZWdpc3RyYXRpb25OYW1lKSkge1xuICAgICAgICBjb250aW51
ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1b
a2V5XSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIFBsdWdpbk1v
ZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0
cmF0aW9uTmFtZV07XG4gICAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS53aWxs
RGVsZXRlTGlzdGVuZXIpIHtcbiAgICAgICAgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5l
cihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGxpc3Rl
bmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtrZXldO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAg
ICogQWxsb3dzIHJlZ2lzdGVyZWQgcGx1Z2lucyBhbiBvcHBvcnR1bml0eSB0byBleHRyYWN0IGV2
ZW50cyBmcm9tIHRvcC1sZXZlbFxuICAgKiBuYXRpdmUgYnJvd3NlciBldmVudHMuXG4gICAqXG4g
ICAqIEByZXR1cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLlxuICAg
KiBAaW50ZXJuYWxcbiAgICovXG4gIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5
cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICAgIHZh
ciBldmVudHM7XG4gICAgdmFyIHBsdWdpbnMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnM7
XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbHVnaW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAv
LyBOb3QgZXZlcnkgcGx1Z2luIGluIHRoZSBvcmRlcmluZyBtYXkgYmUgbG9hZGVkIGF0IHJ1bnRp
bWUuXG4gICAgICB2YXIgcG9zc2libGVQbHVnaW4gPSBwbHVnaW5zW2ldO1xuICAgICAgaWYgKHBv
c3NpYmxlUGx1Z2luKSB7XG4gICAgICAgIHZhciBleHRyYWN0ZWRFdmVudHMgPSBwb3NzaWJsZVBs
dWdpbi5leHRyYWN0RXZlbnRzKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICAgICAgaWYgKGV4dHJhY3RlZEV2ZW50cykge1xuICAg
ICAgICAgIGV2ZW50cyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50cywgZXh0cmFjdGVkRXZlbnRzKTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9LFxuXG4g
IC8qKlxuICAgKiBFbnF1ZXVlcyBhIHN5bnRoZXRpYyBldmVudCB0aGF0IHNob3VsZCBiZSBkaXNw
YXRjaGVkIHdoZW5cbiAgICogYHByb2Nlc3NFdmVudFF1ZXVlYCBpcyBpbnZva2VkLlxuICAgKlxu
ICAgKiBAcGFyYW0geyp9IGV2ZW50cyBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhldGljIGV2ZW50
cy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlRXZlbnRzOiBmdW5jdGlvbiAoZXZl
bnRzKSB7XG4gICAgaWYgKGV2ZW50cykge1xuICAgICAgZXZlbnRRdWV1ZSA9IGFjY3VtdWxhdGVJ
bnRvKGV2ZW50UXVldWUsIGV2ZW50cyk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBEaXNw
YXRjaGVzIGFsbCBzeW50aGV0aWMgZXZlbnRzIG9uIHRoZSBldmVudCBxdWV1ZS5cbiAgICpcbiAg
ICogQGludGVybmFsXG4gICAqL1xuICBwcm9jZXNzRXZlbnRRdWV1ZTogZnVuY3Rpb24gKHNpbXVs
YXRlZCkge1xuICAgIC8vIFNldCBgZXZlbnRRdWV1ZWAgdG8gbnVsbCBiZWZvcmUgcHJvY2Vzc2lu
ZyBpdCBzbyB0aGF0IHdlIGNhbiB0ZWxsIGlmIG1vcmVcbiAgICAvLyBldmVudHMgZ2V0IGVucXVl
dWVkIHdoaWxlIHByb2Nlc3NpbmcuXG4gICAgdmFyIHByb2Nlc3NpbmdFdmVudFF1ZXVlID0gZXZl
bnRRdWV1ZTtcbiAgICBldmVudFF1ZXVlID0gbnVsbDtcbiAgICBpZiAoc2ltdWxhdGVkKSB7XG4g
ICAgICBmb3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2ZW50UXVldWUsIGV4ZWN1dGVEaXNw
YXRjaGVzQW5kUmVsZWFzZVNpbXVsYXRlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvckVhY2hB
Y2N1bXVsYXRlZChwcm9jZXNzaW5nRXZlbnRRdWV1ZSwgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxl
YXNlVG9wTGV2ZWwpO1xuICAgIH1cbiAgICAhIWV2ZW50UXVldWUgPyBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAncHJvY2Vzc0V2ZW50UXVl
dWUoKTogQWRkaXRpb25hbCBldmVudHMgd2VyZSBlbnF1ZXVlZCB3aGlsZSBwcm9jZXNzaW5nIGFu
IGV2ZW50IHF1ZXVlLiBTdXBwb3J0IGZvciB0aGlzIGhhcyBub3QgeWV0IGJlZW4gaW1wbGVtZW50
ZWQuJykgOiBfcHJvZEludmFyaWFudCgnOTUnKSA6IHZvaWQgMDtcbiAgICAvLyBUaGlzIHdvdWxk
IGJlIGEgZ29vZCB0aW1lIHRvIHJldGhyb3cgaWYgYW55IG9mIHRoZSBldmVudCBoYW5kbGVycyB0
aHJldy5cbiAgICBSZWFjdEVycm9yVXRpbHMucmV0aHJvd0NhdWdodEVycm9yKCk7XG4gIH0sXG5c
biAgLyoqXG4gICAqIFRoZXNlIGFyZSBuZWVkZWQgZm9yIHRlc3RzIG9ubHkuIERvIG5vdCB1c2Uh
XG4gICAqL1xuICBfX3B1cmdlOiBmdW5jdGlvbiAoKSB7XG4gICAgbGlzdGVuZXJCYW5rID0ge307
XG4gIH0sXG5cbiAgX19nZXRMaXN0ZW5lckJhbms6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4g
bGlzdGVuZXJCYW5rO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luSHVi
O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LWRvbS9saWIvRXZlbnRQbHVnaW5IdWIuanNcbiAqKiBtb2R1bGUgaWQgPSAxOVxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5c
bid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgnLi9FdmVudFBs
dWdpbkh1YicpO1xudmFyIEV2ZW50UGx1Z2luVXRpbHMgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2lu
VXRpbHMnKTtcblxudmFyIGFjY3VtdWxhdGVJbnRvID0gcmVxdWlyZSgnLi9hY2N1bXVsYXRlSW50
bycpO1xudmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IHJlcXVpcmUoJy4vZm9yRWFjaEFjY3VtdWxh
dGVkJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFy
IGdldExpc3RlbmVyID0gRXZlbnRQbHVnaW5IdWIuZ2V0TGlzdGVuZXI7XG5cbi8qKlxuICogU29t
ZSBldmVudCB0eXBlcyBoYXZlIGEgbm90aW9uIG9mIGRpZmZlcmVudCByZWdpc3RyYXRpb24gbmFt
ZXMgZm9yIGRpZmZlcmVudFxuICogXCJwaGFzZXNcIiBvZiBwcm9wYWdhdGlvbi4gVGhpcyBmaW5k
cyBsaXN0ZW5lcnMgYnkgYSBnaXZlbiBwaGFzZS5cbiAqL1xuZnVuY3Rpb24gbGlzdGVuZXJBdFBo
YXNlKGluc3QsIGV2ZW50LCBwcm9wYWdhdGlvblBoYXNlKSB7XG4gIHZhciByZWdpc3RyYXRpb25O
YW1lID0gZXZlbnQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcHJvcGFn
YXRpb25QaGFzZV07XG4gIHJldHVybiBnZXRMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1l
KTtcbn1cblxuLyoqXG4gKiBUYWdzIGEgYFN5bnRoZXRpY0V2ZW50YCB3aXRoIGRpc3BhdGNoZWQg
bGlzdGVuZXJzLiBDcmVhdGluZyB0aGlzIGZ1bmN0aW9uXG4gKiBoZXJlLCBhbGxvd3MgdXMgdG8g
bm90IGhhdmUgdG8gYmluZCBvciBjcmVhdGUgZnVuY3Rpb25zIGZvciBlYWNoIGV2ZW50LlxuICog
TXV0YXRpbmcgdGhlIGV2ZW50J3MgbWVtYmVycyBhbGxvd3MgdXMgdG8gbm90IGhhdmUgdG8gY3Jl
YXRlIGEgd3JhcHBpbmdcbiAqIFwiZGlzcGF0Y2hcIiBvYmplY3QgdGhhdCBwYWlycyB0aGUgZXZl
bnQgd2l0aCB0aGUgbGlzdGVuZXIuXG4gKi9cbmZ1bmN0aW9uIGFjY3VtdWxhdGVEaXJlY3Rpb25h
bERpc3BhdGNoZXMoaW5zdCwgcGhhc2UsIGV2ZW50KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoaW5zdCwgJ0Rpc3BhdGNoaW5nIGluc3QgbXVzdCBub3QgYmUg
bnVsbCcpIDogdm9pZCAwO1xuICB9XG4gIHZhciBsaXN0ZW5lciA9IGxpc3RlbmVyQXRQaGFzZShp
bnN0LCBldmVudCwgcGhhc2UpO1xuICBpZiAobGlzdGVuZXIpIHtcbiAgICBldmVudC5fZGlzcGF0
Y2hMaXN0ZW5lcnMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMsIGxp
c3RlbmVyKTtcbiAgICBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMgPSBhY2N1bXVsYXRlSW50byhl
dmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMsIGluc3QpO1xuICB9XG59XG5cbi8qKlxuICogQ29sbGVj
dCBkaXNwYXRjaGVzIChtdXN0IGJlIGVudGlyZWx5IGNvbGxlY3RlZCBiZWZvcmUgZGlzcGF0Y2hp
bmcgLSBzZWUgdW5pdFxuICogdGVzdHMpLiBMYXppbHkgYWxsb2NhdGUgdGhlIGFycmF5IHRvIGNv
bnNlcnZlIG1lbW9yeS4gIFdlIG11c3QgbG9vcCB0aHJvdWdoXG4gKiBlYWNoIGV2ZW50IGFuZCBw
ZXJmb3JtIHRoZSB0cmF2ZXJzYWwgZm9yIGVhY2ggb25lLiBXZSBjYW5ub3QgcGVyZm9ybSBhXG4g
KiBzaW5nbGUgdHJhdmVyc2FsIGZvciB0aGUgZW50aXJlIGNvbGxlY3Rpb24gb2YgZXZlbnRzIGJl
Y2F1c2UgZWFjaCBldmVudCBtYXlcbiAqIGhhdmUgYSBkaWZmZXJlbnQgdGFyZ2V0LlxuICovXG5m
dW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlKGV2ZW50KSB7XG4gIGlm
IChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykg
e1xuICAgIEV2ZW50UGx1Z2luVXRpbHMudHJhdmVyc2VUd29QaGFzZShldmVudC5fdGFyZ2V0SW5z
dCwgYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcywgZXZlbnQpO1xuICB9XG59XG5cbi8q
KlxuICogU2FtZSBhcyBgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZWAsIGJ1dCBz
a2lwcyBvdmVyIHRoZSB0YXJnZXRJRC5cbiAqL1xuZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNl
RGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQoZXZlbnQpIHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50
LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgdmFyIHRhcmdl
dEluc3QgPSBldmVudC5fdGFyZ2V0SW5zdDtcbiAgICB2YXIgcGFyZW50SW5zdCA9IHRhcmdldElu
c3QgPyBFdmVudFBsdWdpblV0aWxzLmdldFBhcmVudEluc3RhbmNlKHRhcmdldEluc3QpIDogbnVs
bDtcbiAgICBFdmVudFBsdWdpblV0aWxzLnRyYXZlcnNlVHdvUGhhc2UocGFyZW50SW5zdCwgYWNj
dW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcywgZXZlbnQpO1xuICB9XG59XG5cbi8qKlxuICog
QWNjdW11bGF0ZXMgd2l0aG91dCByZWdhcmQgdG8gZGlyZWN0aW9uLCBkb2VzIG5vdCBsb29rIGZv
ciBwaGFzZWRcbiAqIHJlZ2lzdHJhdGlvbiBuYW1lcy4gU2FtZSBhcyBgYWNjdW11bGF0ZURpcmVj
dERpc3BhdGNoZXNTaW5nbGVgIGJ1dCB3aXRob3V0XG4gKiByZXF1aXJpbmcgdGhhdCB0aGUgYGRp
c3BhdGNoTWFya2VyYCBiZSB0aGUgc2FtZSBhcyB0aGUgZGlzcGF0Y2hlZCBJRC5cbiAqL1xuZnVu
Y3Rpb24gYWNjdW11bGF0ZURpc3BhdGNoZXMoaW5zdCwgaWdub3JlZERpcmVjdGlvbiwgZXZlbnQp
IHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUp
IHtcbiAgICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lz
dHJhdGlvbk5hbWU7XG4gICAgdmFyIGxpc3RlbmVyID0gZ2V0TGlzdGVuZXIoaW5zdCwgcmVnaXN0
cmF0aW9uTmFtZSk7XG4gICAgaWYgKGxpc3RlbmVyKSB7XG4gICAgICBldmVudC5fZGlzcGF0Y2hM
aXN0ZW5lcnMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMsIGxpc3Rl
bmVyKTtcbiAgICAgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IGFjY3VtdWxhdGVJbnRvKGV2
ZW50Ll9kaXNwYXRjaEluc3RhbmNlcywgaW5zdCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICog
QWNjdW11bGF0ZXMgZGlzcGF0Y2hlcyBvbiBhbiBgU3ludGhldGljRXZlbnRgLCBidXQgb25seSBm
b3IgdGhlXG4gKiBgZGlzcGF0Y2hNYXJrZXJgLlxuICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0g
ZXZlbnRcbiAqL1xuZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGUoZXZl
bnQpIHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5h
bWUpIHtcbiAgICBhY2N1bXVsYXRlRGlzcGF0Y2hlcyhldmVudC5fdGFyZ2V0SW5zdCwgbnVsbCwg
ZXZlbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMo
ZXZlbnRzKSB7XG4gIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3VtdWxhdGVUd29QaGFz
ZURpc3BhdGNoZXNTaW5nbGUpO1xufVxuXG5mdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNw
YXRjaGVzU2tpcFRhcmdldChldmVudHMpIHtcbiAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywg
YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQpO1xufVxuXG5mdW5j
dGlvbiBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobGVhdmUsIGVudGVyLCBmcm9tLCB0
bykge1xuICBFdmVudFBsdWdpblV0aWxzLnRyYXZlcnNlRW50ZXJMZWF2ZShmcm9tLCB0bywgYWNj
dW11bGF0ZURpc3BhdGNoZXMsIGxlYXZlLCBlbnRlcik7XG59XG5cbmZ1bmN0aW9uIGFjY3VtdWxh
dGVEaXJlY3REaXNwYXRjaGVzKGV2ZW50cykge1xuICBmb3JFYWNoQWNjdW11bGF0ZWQoZXZlbnRz
LCBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZSk7XG59XG5cbi8qKlxuICogQSBzbWFs
bCBzZXQgb2YgcHJvcGFnYXRpb24gcGF0dGVybnMsIGVhY2ggb2Ygd2hpY2ggd2lsbCBhY2NlcHQg
YSBzbWFsbCBhbW91bnRcbiAqIG9mIGluZm9ybWF0aW9uLCBhbmQgZ2VuZXJhdGUgYSBzZXQgb2Yg
XCJkaXNwYXRjaCByZWFkeSBldmVudCBvYmplY3RzXCIgLSB3aGljaFxuICogYXJlIHNldHMgb2Yg
ZXZlbnRzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gYW5ub3RhdGVkIHdpdGggYSBzZXQgb2YgZGlz
cGF0Y2hlZFxuICogbGlzdGVuZXIgZnVuY3Rpb25zL2lkcy4gVGhlIEFQSSBpcyBkZXNpZ25lZCB0
aGlzIHdheSB0byBkaXNjb3VyYWdlIHRoZXNlXG4gKiBwcm9wYWdhdGlvbiBzdHJhdGVnaWVzIGZy
b20gYWN0dWFsbHkgZXhlY3V0aW5nIHRoZSBkaXNwYXRjaGVzLCBzaW5jZSB3ZVxuICogYWx3YXlz
IHdhbnQgdG8gY29sbGVjdCB0aGUgZW50aXJlIHNldCBvZiBkaXNwYXRjaGVzIGJlZm9yZSBleGVj
dXRpbmcgZXZlbnQgYVxuICogc2luZ2xlIG9uZS5cbiAqXG4gKiBAY29uc3RydWN0b3IgRXZlbnRQ
cm9wYWdhdG9yc1xuICovXG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHtcbiAgYWNjdW11bGF0ZVR3
b1BoYXNlRGlzcGF0Y2hlczogYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyxcbiAgYWNjdW11
bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQ6IGFjY3VtdWxhdGVUd29QaGFzZURpc3Bh
dGNoZXNTa2lwVGFyZ2V0LFxuICBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlczogYWNjdW11bGF0
ZURpcmVjdERpc3BhdGNoZXMsXG4gIGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlczogYWNj
dW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50
UHJvcGFnYXRvcnM7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJc
biAqKiAuL34vcmVhY3QtZG9tL2xpYi9FdmVudFByb3BhZ2F0b3JzLmpzXG4gKiogbW9kdWxlIGlk
ID0gMjBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogYFJlYWN0SW5zdGFuY2VNYXBg
IG1haW50YWlucyBhIG1hcHBpbmcgZnJvbSBhIHB1YmxpYyBmYWNpbmcgc3RhdGVmdWxcbiAqIGlu
c3RhbmNlIChrZXkpIGFuZCB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gKHZhbHVlKS4gVGhp
cyBhbGxvd3MgcHVibGljXG4gKiBtZXRob2RzIHRvIGFjY2VwdCB0aGUgdXNlciBmYWNpbmcgaW5z
dGFuY2UgYXMgYW4gYXJndW1lbnQgYW5kIG1hcCB0aGVtIGJhY2tcbiAqIHRvIGludGVybmFsIG1l
dGhvZHMuXG4gKi9cblxuLy8gVE9ETzogUmVwbGFjZSB0aGlzIHdpdGggRVM2OiB2YXIgUmVhY3RJ
bnN0YW5jZU1hcCA9IG5ldyBNYXAoKTtcblxudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSB7XG4gIC8q
KlxuICAgKiBUaGlzIEFQSSBzaG91bGQgYmUgY2FsbGVkIGBkZWxldGVgIGJ1dCB3ZSdkIGhhdmUg
dG8gbWFrZSBzdXJlIHRvIGFsd2F5c1xuICAgKiB0cmFuc2Zvcm0gdGhlc2UgdG8gc3RyaW5ncyBm
b3IgSUUgc3VwcG9ydC4gV2hlbiB0aGlzIHRyYW5zZm9ybSBpcyBmdWxseVxuICAgKiBzdXBwb3J0
ZWQgd2UgY2FuIHJlbmFtZSBpdC5cbiAgICovXG4gIHJlbW92ZTogZnVuY3Rpb24gKGtleSkge1xu
ICAgIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlID0gdW5kZWZpbmVkO1xuICB9LFxuXG4gIGdl
dDogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBrZXkuX3JlYWN0SW50ZXJuYWxJbnN0YW5j
ZTtcbiAgfSxcblxuICBoYXM6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4ga2V5Ll9yZWFj
dEludGVybmFsSW5zdGFuY2UgIT09IHVuZGVmaW5lZDtcbiAgfSxcblxuICBzZXQ6IGZ1bmN0aW9u
IChrZXksIHZhbHVlKSB7XG4gICAga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2UgPSB2YWx1ZTtc
biAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluc3RhbmNlTWFwO1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIv
UmVhY3RJbnN0YW5jZU1hcC5qc1xuICoqIG1vZHVsZSBpZCA9IDIxXG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7
XG5cbnZhciBnZXRFdmVudFRhcmdldCA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRUYXJnZXQnKTtcblxu
LyoqXG4gKiBAaW50ZXJmYWNlIFVJRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIv
RE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52YXIgVUlFdmVudEludGVyZmFjZSA9IHtcbiAgdmll
dzogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LnZpZXcpIHtcbiAgICAgIHJldHVy
biBldmVudC52aWV3O1xuICAgIH1cblxuICAgIHZhciB0YXJnZXQgPSBnZXRFdmVudFRhcmdldChl
dmVudCk7XG4gICAgaWYgKHRhcmdldC53aW5kb3cgPT09IHRhcmdldCkge1xuICAgICAgLy8gdGFy
Z2V0IGlzIGEgd2luZG93IG9iamVjdFxuICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAg
ICB2YXIgZG9jID0gdGFyZ2V0Lm93bmVyRG9jdW1lbnQ7XG4gICAgLy8gVE9ETzogRmlndXJlIG91
dCB3aHkgYG93bmVyRG9jdW1lbnRgIGlzIHNvbWV0aW1lcyB1bmRlZmluZWQgaW4gSUU4LlxuICAg
IGlmIChkb2MpIHtcbiAgICAgIHJldHVybiBkb2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdp
bmRvdztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHdpbmRvdztcbiAgICB9XG4gIH0sXG4g
IGRldGFpbDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuIGV2ZW50LmRldGFpbCB8fCAw
O1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25m
aWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5n
fSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAq
IEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBl
eHRlbmRzIHtTeW50aGV0aWNFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljVUlFdmVudChk
aXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCkge1xuICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZp
ZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5c
blN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNVSUV2ZW50LCBVSUV2ZW50SW50
ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNVSUV2ZW50O1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIv
U3ludGhldGljVUlFdmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDIyXG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxudmFyIGVtcHR5T2JqZWN0ID0ge307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIE9iamVjdC5mcmVlemUoZW1wdHlPYmplY3QpO1xu
fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVtcHR5T2JqZWN0O1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2VtcHR5T2JqZWN0LmpzXG4g
KiogbW9kdWxlIGlkID0gMjRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0g
cmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IHJl
cXVpcmUoJy4vRXZlbnRQbHVnaW5SZWdpc3RyeScpO1xudmFyIFJlYWN0RXZlbnRFbWl0dGVyTWl4
aW4gPSByZXF1aXJlKCcuL1JlYWN0RXZlbnRFbWl0dGVyTWl4aW4nKTtcbnZhciBWaWV3cG9ydE1l
dHJpY3MgPSByZXF1aXJlKCcuL1ZpZXdwb3J0TWV0cmljcycpO1xuXG52YXIgZ2V0VmVuZG9yUHJl
Zml4ZWRFdmVudE5hbWUgPSByZXF1aXJlKCcuL2dldFZlbmRvclByZWZpeGVkRXZlbnROYW1lJyk7
XG52YXIgaXNFdmVudFN1cHBvcnRlZCA9IHJlcXVpcmUoJy4vaXNFdmVudFN1cHBvcnRlZCcpO1xu
XG4vKipcbiAqIFN1bW1hcnkgb2YgYFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcmAgZXZlbnQgaGFu
ZGxpbmc6XG4gKlxuICogIC0gVG9wLWxldmVsIGRlbGVnYXRpb24gaXMgdXNlZCB0byB0cmFwIG1v
c3QgbmF0aXZlIGJyb3dzZXIgZXZlbnRzLiBUaGlzXG4gKiAgICBtYXkgb25seSBvY2N1ciBpbiB0
aGUgbWFpbiB0aHJlYWQgYW5kIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZlxuICogICAgUmVhY3RF
dmVudExpc3RlbmVyLCB3aGljaCBpcyBpbmplY3RlZCBhbmQgY2FuIHRoZXJlZm9yZSBzdXBwb3J0
IHBsdWdnYWJsZVxuICogICAgZXZlbnQgc291cmNlcy4gVGhpcyBpcyB0aGUgb25seSB3b3JrIHRo
YXQgb2NjdXJzIGluIHRoZSBtYWluIHRocmVhZC5cbiAqXG4gKiAgLSBXZSBub3JtYWxpemUgYW5k
IGRlLWR1cGxpY2F0ZSBldmVudHMgdG8gYWNjb3VudCBmb3IgYnJvd3NlciBxdWlya3MuIFRoaXNc
biAqICAgIG1heSBiZSBkb25lIGluIHRoZSB3b3JrZXIgdGhyZWFkLlxuICpcbiAqICAtIEZvcndh
cmQgdGhlc2UgbmF0aXZlIGV2ZW50cyAod2l0aCB0aGUgYXNzb2NpYXRlZCB0b3AtbGV2ZWwgdHlw
ZSB1c2VkIHRvXG4gKiAgICB0cmFwIGl0KSB0byBgRXZlbnRQbHVnaW5IdWJgLCB3aGljaCBpbiB0
dXJuIHdpbGwgYXNrIHBsdWdpbnMgaWYgdGhleSB3YW50XG4gKiAgICB0byBleHRyYWN0IGFueSBz
eW50aGV0aWMgZXZlbnRzLlxuICpcbiAqICAtIFRoZSBgRXZlbnRQbHVnaW5IdWJgIHdpbGwgdGhl
biBwcm9jZXNzIGVhY2ggZXZlbnQgYnkgYW5ub3RhdGluZyB0aGVtIHdpdGhcbiAqICAgIFwiZGlz
cGF0Y2hlc1wiLCBhIHNlcXVlbmNlIG9mIGxpc3RlbmVycyBhbmQgSURzIHRoYXQgY2FyZSBhYm91
dCB0aGF0IGV2ZW50LlxuICpcbiAqICAtIFRoZSBgRXZlbnRQbHVnaW5IdWJgIHRoZW4gZGlzcGF0
Y2hlcyB0aGUgZXZlbnRzLlxuICpcbiAqIE92ZXJ2aWV3IG9mIFJlYWN0IGFuZCB0aGUgZXZlbnQg
c3lzdGVtOlxuICpcbiAqICstLS0tLS0tLS0tLS0rICAgIC5cbiAqIHwgICAgRE9NICAgICB8ICAg
IC5cbiAqICstLS0tLS0tLS0tLS0rICAgIC5cbiAqICAgICAgIHwgICAgICAgICAgIC5cbiAqICAg
ICAgIHYgICAgICAgICAgIC5cbiAqICstLS0tLS0tLS0tLS0rICAgIC5cbiAqIHwgUmVhY3RFdmVu
dCB8ICAgIC5cbiAqIHwgIExpc3RlbmVyICB8ICAgIC5cbiAqICstLS0tLS0tLS0tLS0rICAgIC4g
ICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tK1xuICogICAgICAgfCAgICAgICAg
ICAgLiAgICAgICAgICAgICAgICstLS0tLS0tLSt8U2ltcGxlRXZlbnR8XG4gKiAgICAgICB8ICAg
ICAgICAgICAuICAgICAgICAgICAgICAgfCAgICAgICAgIHxQbHVnaW4gICAgIHxcbiAqICstLS0t
LXwtLS0tLS0rICAgIC4gICAgICAgICAgICAgICB2ICAgICAgICAgKy0tLS0tLS0tLS0tK1xuICog
fCAgICAgfCAgICAgIHwgICAgLiAgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAg
ICArLS0tLS0tLS0tLS0tK1xuICogfCAgICAgKy0tLS0tLS0tLS0tLi0tLT58RXZlbnRQbHVnaW5I
dWJ8ICAgICAgICAgICAgICAgICAgICB8ICAgIEV2ZW50ICAgfFxuICogfCAgICAgICAgICAgIHwg
ICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0rICB8IFByb3BhZ2F0b3Jz
fFxuICogfCBSZWFjdEV2ZW50IHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICB8VGFwRXZl
bnQgICB8ICB8LS0tLS0tLS0tLS0tfFxuICogfCAgRW1pdHRlciAgIHwgICAgLiAgICB8ICAgICAg
ICAgICAgICB8PC0tLSt8UGx1Z2luICAgICB8ICB8b3RoZXIgcGx1Z2lufFxuICogfCAgICAgICAg
ICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0rICB8ICB1dGls
aXRpZXMgfFxuICogfCAgICAgKy0tLS0tLS0tLS0tLi0tLT58ICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tK1xuICogfCAgICAgfCAgICAgIHwgICAgLiAgICAr
LS0tLS0tLS0tLS0tLS0rXG4gKiArLS0tLS18LS0tLS0tKyAgICAuICAgICAgICAgICAgICAgIF4g
ICAgICAgICstLS0tLS0tLS0tLStcbiAqICAgICAgIHwgICAgICAgICAgIC4gICAgICAgICAgICAg
ICAgfCAgICAgICAgfEVudGVyL0xlYXZlfFxuICogICAgICAgKyAgICAgICAgICAgLiAgICAgICAg
ICAgICAgICArLS0tLS0tLSt8UGx1Z2luICAgICB8XG4gKiArLS0tLS0tLS0tLS0tLSsgICAuICAg
ICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLStcbiAqIHwgYXBwbGljYXRpb24gfCAg
IC5cbiAqIHwtLS0tLS0tLS0tLS0tfCAgIC5cbiAqIHwgICAgICAgICAgICAgfCAgIC5cbiAqIHwg
ICAgICAgICAgICAgfCAgIC5cbiAqICstLS0tLS0tLS0tLS0tKyAgIC5cbiAqICAgICAgICAgICAg
ICAgICAgIC5cbiAqICAgIFJlYWN0IENvcmUgICAgIC4gIEdlbmVyYWwgUHVycG9zZSBFdmVudCBQ
bHVnaW4gU3lzdGVtXG4gKi9cblxudmFyIGhhc0V2ZW50UGFnZVhZO1xudmFyIGFscmVhZHlMaXN0
ZW5pbmdUbyA9IHt9O1xudmFyIGlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlID0gZmFsc2U7XG52YXIg
cmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVyID0gMDtcblxuLy8gRm9yIGV2ZW50cyBsaWtlICdzdWJt
aXQnIHdoaWNoIGRvbid0IGNvbnNpc3RlbnRseSBidWJibGUgKHdoaWNoIHdlIHRyYXAgYXQgYVxu
Ly8gbG93ZXIgbm9kZSB0aGFuIGBkb2N1bWVudGApLCBiaW5kaW5nIGF0IGBkb2N1bWVudGAgd291
bGQgY2F1c2UgZHVwbGljYXRlXG4vLyBldmVudHMgc28gd2UgZG9uJ3QgaW5jbHVkZSB0aGVtIGhl
cmVcbnZhciB0b3BFdmVudE1hcHBpbmcgPSB7XG4gIHRvcEFib3J0OiAnYWJvcnQnLFxuICB0b3BB
bmltYXRpb25FbmQ6IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCdhbmltYXRpb25lbmQnKSB8
fCAnYW5pbWF0aW9uZW5kJyxcbiAgdG9wQW5pbWF0aW9uSXRlcmF0aW9uOiBnZXRWZW5kb3JQcmVm
aXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uaXRlcmF0aW9uJykgfHwgJ2FuaW1hdGlvbml0ZXJhdGlv
bicsXG4gIHRvcEFuaW1hdGlvblN0YXJ0OiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgnYW5p
bWF0aW9uc3RhcnQnKSB8fCAnYW5pbWF0aW9uc3RhcnQnLFxuICB0b3BCbHVyOiAnYmx1cicsXG4g
IHRvcENhblBsYXk6ICdjYW5wbGF5JyxcbiAgdG9wQ2FuUGxheVRocm91Z2g6ICdjYW5wbGF5dGhy
b3VnaCcsXG4gIHRvcENoYW5nZTogJ2NoYW5nZScsXG4gIHRvcENsaWNrOiAnY2xpY2snLFxuICB0
b3BDb21wb3NpdGlvbkVuZDogJ2NvbXBvc2l0aW9uZW5kJyxcbiAgdG9wQ29tcG9zaXRpb25TdGFy
dDogJ2NvbXBvc2l0aW9uc3RhcnQnLFxuICB0b3BDb21wb3NpdGlvblVwZGF0ZTogJ2NvbXBvc2l0
aW9udXBkYXRlJyxcbiAgdG9wQ29udGV4dE1lbnU6ICdjb250ZXh0bWVudScsXG4gIHRvcENvcHk6
ICdjb3B5JyxcbiAgdG9wQ3V0OiAnY3V0JyxcbiAgdG9wRG91YmxlQ2xpY2s6ICdkYmxjbGljaycs
XG4gIHRvcERyYWc6ICdkcmFnJyxcbiAgdG9wRHJhZ0VuZDogJ2RyYWdlbmQnLFxuICB0b3BEcmFn
RW50ZXI6ICdkcmFnZW50ZXInLFxuICB0b3BEcmFnRXhpdDogJ2RyYWdleGl0JyxcbiAgdG9wRHJh
Z0xlYXZlOiAnZHJhZ2xlYXZlJyxcbiAgdG9wRHJhZ092ZXI6ICdkcmFnb3ZlcicsXG4gIHRvcERy
YWdTdGFydDogJ2RyYWdzdGFydCcsXG4gIHRvcERyb3A6ICdkcm9wJyxcbiAgdG9wRHVyYXRpb25D
aGFuZ2U6ICdkdXJhdGlvbmNoYW5nZScsXG4gIHRvcEVtcHRpZWQ6ICdlbXB0aWVkJyxcbiAgdG9w
RW5jcnlwdGVkOiAnZW5jcnlwdGVkJyxcbiAgdG9wRW5kZWQ6ICdlbmRlZCcsXG4gIHRvcEVycm9y
OiAnZXJyb3InLFxuICB0b3BGb2N1czogJ2ZvY3VzJyxcbiAgdG9wSW5wdXQ6ICdpbnB1dCcsXG4g
IHRvcEtleURvd246ICdrZXlkb3duJyxcbiAgdG9wS2V5UHJlc3M6ICdrZXlwcmVzcycsXG4gIHRv
cEtleVVwOiAna2V5dXAnLFxuICB0b3BMb2FkZWREYXRhOiAnbG9hZGVkZGF0YScsXG4gIHRvcExv
YWRlZE1ldGFkYXRhOiAnbG9hZGVkbWV0YWRhdGEnLFxuICB0b3BMb2FkU3RhcnQ6ICdsb2Fkc3Rh
cnQnLFxuICB0b3BNb3VzZURvd246ICdtb3VzZWRvd24nLFxuICB0b3BNb3VzZU1vdmU6ICdtb3Vz
ZW1vdmUnLFxuICB0b3BNb3VzZU91dDogJ21vdXNlb3V0JyxcbiAgdG9wTW91c2VPdmVyOiAnbW91
c2VvdmVyJyxcbiAgdG9wTW91c2VVcDogJ21vdXNldXAnLFxuICB0b3BQYXN0ZTogJ3Bhc3RlJyxc
biAgdG9wUGF1c2U6ICdwYXVzZScsXG4gIHRvcFBsYXk6ICdwbGF5JyxcbiAgdG9wUGxheWluZzog
J3BsYXlpbmcnLFxuICB0b3BQcm9ncmVzczogJ3Byb2dyZXNzJyxcbiAgdG9wUmF0ZUNoYW5nZTog
J3JhdGVjaGFuZ2UnLFxuICB0b3BTY3JvbGw6ICdzY3JvbGwnLFxuICB0b3BTZWVrZWQ6ICdzZWVr
ZWQnLFxuICB0b3BTZWVraW5nOiAnc2Vla2luZycsXG4gIHRvcFNlbGVjdGlvbkNoYW5nZTogJ3Nl
bGVjdGlvbmNoYW5nZScsXG4gIHRvcFN0YWxsZWQ6ICdzdGFsbGVkJyxcbiAgdG9wU3VzcGVuZDog
J3N1c3BlbmQnLFxuICB0b3BUZXh0SW5wdXQ6ICd0ZXh0SW5wdXQnLFxuICB0b3BUaW1lVXBkYXRl
OiAndGltZXVwZGF0ZScsXG4gIHRvcFRvdWNoQ2FuY2VsOiAndG91Y2hjYW5jZWwnLFxuICB0b3BU
b3VjaEVuZDogJ3RvdWNoZW5kJyxcbiAgdG9wVG91Y2hNb3ZlOiAndG91Y2htb3ZlJyxcbiAgdG9w
VG91Y2hTdGFydDogJ3RvdWNoc3RhcnQnLFxuICB0b3BUcmFuc2l0aW9uRW5kOiBnZXRWZW5kb3JQ
cmVmaXhlZEV2ZW50TmFtZSgndHJhbnNpdGlvbmVuZCcpIHx8ICd0cmFuc2l0aW9uZW5kJyxcbiAg
dG9wVm9sdW1lQ2hhbmdlOiAndm9sdW1lY2hhbmdlJyxcbiAgdG9wV2FpdGluZzogJ3dhaXRpbmcn
LFxuICB0b3BXaGVlbDogJ3doZWVsJ1xufTtcblxuLyoqXG4gKiBUbyBlbnN1cmUgbm8gY29uZmxp
Y3RzIHdpdGggb3RoZXIgcG90ZW50aWFsIFJlYWN0IGluc3RhbmNlcyBvbiB0aGUgcGFnZVxuICov
XG52YXIgdG9wTGlzdGVuZXJzSURLZXkgPSAnX3JlYWN0TGlzdGVuZXJzSUQnICsgU3RyaW5nKE1h
dGgucmFuZG9tKCkpLnNsaWNlKDIpO1xuXG5mdW5jdGlvbiBnZXRMaXN0ZW5pbmdGb3JEb2N1bWVu
dChtb3VudEF0KSB7XG4gIC8vIEluIElFOCwgYG1vdW50QXRgIGlzIGEgaG9zdCBvYmplY3QgYW5k
IGRvZXNuJ3QgaGF2ZSBgaGFzT3duUHJvcGVydHlgXG4gIC8vIGRpcmVjdGx5LlxuICBpZiAoIU9i
amVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb3VudEF0LCB0b3BMaXN0ZW5lcnNJ
REtleSkpIHtcbiAgICBtb3VudEF0W3RvcExpc3RlbmVyc0lES2V5XSA9IHJlYWN0VG9wTGlzdGVu
ZXJzQ291bnRlcisrO1xuICAgIGFscmVhZHlMaXN0ZW5pbmdUb1ttb3VudEF0W3RvcExpc3RlbmVy
c0lES2V5XV0gPSB7fTtcbiAgfVxuICByZXR1cm4gYWxyZWFkeUxpc3RlbmluZ1RvW21vdW50QXRb
dG9wTGlzdGVuZXJzSURLZXldXTtcbn1cblxuLyoqXG4gKiBgUmVhY3RCcm93c2VyRXZlbnRFbWl0
dGVyYCBpcyB1c2VkIHRvIGF0dGFjaCB0b3AtbGV2ZWwgZXZlbnQgbGlzdGVuZXJzLiBGb3JcbiAq
IGV4YW1wbGU6XG4gKlxuICogICBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcignbXlJRCcsICdv
bkNsaWNrJywgbXlGdW5jdGlvbik7XG4gKlxuICogVGhpcyB3b3VsZCBhbGxvY2F0ZSBhIFwicmVn
aXN0cmF0aW9uXCIgb2YgYCgnb25DbGljaycsIG15RnVuY3Rpb24pYCBvbiAnbXlJRCcuXG4gKlxu
ICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBfYXNzaWdu
KHt9LCBSZWFjdEV2ZW50RW1pdHRlck1peGluLCB7XG4gIC8qKlxuICAgKiBJbmplY3RhYmxlIGV2
ZW50IGJhY2tlbmRcbiAgICovXG4gIFJlYWN0RXZlbnRMaXN0ZW5lcjogbnVsbCxcblxuICBpbmpl
Y3Rpb246IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gUmVhY3RFdmVudExpc3Rl
bmVyXG4gICAgICovXG4gICAgaW5qZWN0UmVhY3RFdmVudExpc3RlbmVyOiBmdW5jdGlvbiAoUmVh
Y3RFdmVudExpc3RlbmVyKSB7XG4gICAgICBSZWFjdEV2ZW50TGlzdGVuZXIuc2V0SGFuZGxlVG9w
TGV2ZWwoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmhhbmRsZVRvcExldmVsKTtcbiAgICAgIFJl
YWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIgPSBSZWFjdEV2ZW50TGlz
dGVuZXI7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIHdoZXRoZXIgb3Igbm90IGFu
eSBjcmVhdGVkIGNhbGxiYWNrcyBzaG91bGQgYmUgZW5hYmxlZC5cbiAgICpcbiAgICogQHBhcmFt
IHtib29sZWFufSBlbmFibGVkIFRydWUgaWYgY2FsbGJhY2tzIHNob3VsZCBiZSBlbmFibGVkLlxu
ICAgKi9cbiAgc2V0RW5hYmxlZDogZnVuY3Rpb24gKGVuYWJsZWQpIHtcbiAgICBpZiAoUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lcikge1xuICAgICAgUmVhY3RCcm93
c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5zZXRFbmFibGVkKGVuYWJsZWQpO1xu
ICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBjYWxs
YmFja3MgYXJlIGVuYWJsZWQuXG4gICAqL1xuICBpc0VuYWJsZWQ6IGZ1bmN0aW9uICgpIHtcbiAg
ICByZXR1cm4gISEoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lciAm
JiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLmlzRW5hYmxlZCgp
KTtcbiAgfSxcblxuICAvKipcbiAgICogV2UgbGlzdGVuIGZvciBidWJibGVkIHRvdWNoIGV2ZW50
cyBvbiB0aGUgZG9jdW1lbnQgb2JqZWN0LlxuICAgKlxuICAgKiBGaXJlZm94IHY4LjAxIChhbmQg
cG9zc2libHkgb3RoZXJzKSBleGhpYml0ZWQgc3RyYW5nZSBiZWhhdmlvciB3aGVuXG4gICAqIG1v
dW50aW5nIGBvbm1vdXNlbW92ZWAgZXZlbnRzIGF0IHNvbWUgbm9kZSB0aGF0IHdhcyBub3QgdGhl
IGRvY3VtZW50XG4gICAqIGVsZW1lbnQuIFRoZSBzeW1wdG9tcyB3ZXJlIHRoYXQgaWYgeW91ciBt
b3VzZSBpcyBub3QgbW92aW5nIG92ZXIgc29tZXRoaW5nXG4gICAqIGNvbnRhaW5lZCB3aXRoaW4g
dGhhdCBtb3VudCBwb2ludCAoZm9yIGV4YW1wbGUgb24gdGhlIGJhY2tncm91bmQpIHRoZVxuICAg
KiB0b3AtbGV2ZWwgbGlzdGVuZXJzIGZvciBgb25tb3VzZW1vdmVgIHdvbid0IGJlIGNhbGxlZC4g
SG93ZXZlciwgaWYgeW91XG4gICAqIHJlZ2lzdGVyIHRoZSBgbW91c2Vtb3ZlYCBvbiB0aGUgZG9j
dW1lbnQgb2JqZWN0LCB0aGVuIGl0IHdpbGwgb2YgY291cnNlXG4gICAqIGNhdGNoIGFsbCBgbW91
c2Vtb3ZlYHMuIFRoaXMgYWxvbmcgd2l0aCBpT1MgcXVpcmtzLCBqdXN0aWZpZXMgcmVzdHJpY3Rp
bmdcbiAgICogdG9wLWxldmVsIGxpc3RlbmVycyB0byB0aGUgZG9jdW1lbnQgb2JqZWN0IG9ubHks
IGF0IGxlYXN0IGZvciB0aGVzZVxuICAgKiBtb3ZlbWVudCB0eXBlcyBvZiBldmVudHMgYW5kIHBv
c3NpYmx5IGFsbCBldmVudHMuXG4gICAqXG4gICAqIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2Rl
Lm9yZy9ibG9nL2FyY2hpdmVzLzIwMTAvMDkvY2xpY2tfZXZlbnRfZGVsLmh0bWxcbiAgICpcbiAg
ICogQWxzbywgYGtleXVwYC9ga2V5cHJlc3NgL2BrZXlkb3duYCBkbyBub3QgYnViYmxlIHRvIHRo
ZSB3aW5kb3cgb24gSUUsIGJ1dFxuICAgKiB0aGV5IGJ1YmJsZSB0byBkb2N1bWVudC5cbiAgICpc
biAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAo
ZS5nLiBgb25DbGlja2ApLlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGVudERvY3VtZW50SGFu
ZGxlIERvY3VtZW50IHdoaWNoIG93bnMgdGhlIGNvbnRhaW5lclxuICAgKi9cbiAgbGlzdGVuVG86
IGZ1bmN0aW9uIChyZWdpc3RyYXRpb25OYW1lLCBjb250ZW50RG9jdW1lbnRIYW5kbGUpIHtcbiAg
ICB2YXIgbW91bnRBdCA9IGNvbnRlbnREb2N1bWVudEhhbmRsZTtcbiAgICB2YXIgaXNMaXN0ZW5p
bmcgPSBnZXRMaXN0ZW5pbmdGb3JEb2N1bWVudChtb3VudEF0KTtcbiAgICB2YXIgZGVwZW5kZW5j
aWVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzW3Jl
Z2lzdHJhdGlvbk5hbWVdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXBlbmRlbmNpZXMu
bGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkZXBlbmRlbmN5ID0gZGVwZW5kZW5jaWVzW2ldO1xu
ICAgICAgaWYgKCEoaXNMaXN0ZW5pbmcuaGFzT3duUHJvcGVydHkoZGVwZW5kZW5jeSkgJiYgaXNM
aXN0ZW5pbmdbZGVwZW5kZW5jeV0pKSB7XG4gICAgICAgIGlmIChkZXBlbmRlbmN5ID09PSAndG9w
V2hlZWwnKSB7XG4gICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3doZWVsJykpIHtcbiAg
ICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJh
cEJ1YmJsZWRFdmVudCgndG9wV2hlZWwnLCAnd2hlZWwnLCBtb3VudEF0KTtcbiAgICAgICAgICB9
IGVsc2UgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ21vdXNld2hlZWwnKSkge1xuICAgICAgICAgICAg
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2
ZW50KCd0b3BXaGVlbCcsICdtb3VzZXdoZWVsJywgbW91bnRBdCk7XG4gICAgICAgICAgfSBlbHNl
IHtcbiAgICAgICAgICAgIC8vIEZpcmVmb3ggbmVlZHMgdG8gY2FwdHVyZSBhIGRpZmZlcmVudCBt
b3VzZSBzY3JvbGwgZXZlbnQuXG4gICAgICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtz
bW9kZS5vcmcvZG9tL2V2ZW50cy90ZXN0cy9zY3JvbGwuaHRtbFxuICAgICAgICAgICAgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0
b3BXaGVlbCcsICdET01Nb3VzZVNjcm9sbCcsIG1vdW50QXQpO1xuICAgICAgICAgIH1cbiAgICAg
ICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSAndG9wU2Nyb2xsJykge1xuICAgICAgICAgIGlm
IChpc0V2ZW50U3VwcG9ydGVkKCdzY3JvbGwnLCB0cnVlKSkge1xuICAgICAgICAgICAgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgn
dG9wU2Nyb2xsJywgJ3Njcm9sbCcsIG1vdW50QXQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAg
ICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBC
dWJibGVkRXZlbnQoJ3RvcFNjcm9sbCcsICdzY3JvbGwnLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIuUmVhY3RFdmVudExpc3RlbmVyLldJTkRPV19IQU5ETEUpO1xuICAgICAgICAgIH1cbiAgICAg
ICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSAndG9wRm9jdXMnIHx8IGRlcGVuZGVuY3kgPT09
ICd0b3BCbHVyJykge1xuICAgICAgICAgIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdmb2N1cycsIHRy
dWUpKSB7XG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExp
c3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KCd0b3BGb2N1cycsICdmb2N1cycsIG1vdW50QXQpO1xu
ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50
cmFwQ2FwdHVyZWRFdmVudCgndG9wQmx1cicsICdibHVyJywgbW91bnRBdCk7XG4gICAgICAgICAg
fSBlbHNlIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdmb2N1c2luJykpIHtcbiAgICAgICAgICAgIC8v
IElFIGhhcyBgZm9jdXNpbmAgYW5kIGBmb2N1c291dGAgZXZlbnRzIHdoaWNoIGJ1YmJsZS5cbiAg
ICAgICAgICAgIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVz
LzIwMDgvMDQvZGVsZWdhdGluZ190aGUuaHRtbFxuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZl
bnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BGb2N1cycs
ICdmb2N1c2luJywgbW91bnRBdCk7XG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEJsdXInLCAnZm9jdXNv
dXQnLCBtb3VudEF0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyB0byBtYWtlIHN1cmUg
Ymx1ciBhbmQgZm9jdXMgZXZlbnQgbGlzdGVuZXJzIGFyZSBvbmx5IGF0dGFjaGVkIG9uY2VcbiAg
ICAgICAgICBpc0xpc3RlbmluZy50b3BCbHVyID0gdHJ1ZTtcbiAgICAgICAgICBpc0xpc3Rlbmlu
Zy50b3BGb2N1cyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodG9wRXZlbnRNYXBwaW5nLmhh
c093blByb3BlcnR5KGRlcGVuZGVuY3kpKSB7XG4gICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KGRlcGVuZGVuY3ksIHRv
cEV2ZW50TWFwcGluZ1tkZXBlbmRlbmN5XSwgbW91bnRBdCk7XG4gICAgICAgIH1cblxuICAgICAg
ICBpc0xpc3RlbmluZ1tkZXBlbmRlbmN5XSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9LFxu
XG4gIHRyYXBCdWJibGVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNl
TmFtZSwgaGFuZGxlKSB7XG4gICAgcmV0dXJuIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFj
dEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNl
TmFtZSwgaGFuZGxlKTtcbiAgfSxcblxuICB0cmFwQ2FwdHVyZWRFdmVudDogZnVuY3Rpb24gKHRv
cExldmVsVHlwZSwgaGFuZGxlckJhc2VOYW1lLCBoYW5kbGUpIHtcbiAgICByZXR1cm4gUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCh0
b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKTtcbiAgfSxcblxuICAvKipcbiAg
ICogUHJvdGVjdCBhZ2FpbnN0IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCkgcmV0dXJuaW5nIG51bGxc
biAgICogU29tZSBwb3B1cCBibG9ja2VyIGV4dGVuc2lvbnMgYXBwZWFyIHRvIGRvIHRoaXM6XG4g
ICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNjg4N1xuICAgKi9c
biAgc3VwcG9ydHNFdmVudFBhZ2VYWTogZnVuY3Rpb24gKCkge1xuICAgIGlmICghZG9jdW1lbnQu
Y3JlYXRlRXZlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIGV2ID0g
ZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnQnKTtcbiAgICByZXR1cm4gZXYgIT0gbnVs
bCAmJiAncGFnZVgnIGluIGV2O1xuICB9LFxuXG4gIC8qKlxuICAgKiBMaXN0ZW5zIHRvIHdpbmRv
dyBzY3JvbGwgYW5kIHJlc2l6ZSBldmVudHMuIFdlIGNhY2hlIHNjcm9sbCB2YWx1ZXMgc28gdGhh
dFxuICAgKiBhcHBsaWNhdGlvbiBjb2RlIGNhbiBhY2Nlc3MgdGhlbSB3aXRob3V0IHRyaWdnZXJp
bmcgcmVmbG93cy5cbiAgICpcbiAgICogVmlld3BvcnRNZXRyaWNzIGlzIG9ubHkgdXNlZCBieSBT
eW50aGV0aWNNb3VzZS9Ub3VjaEV2ZW50IGFuZCBvbmx5IHdoZW5cbiAgICogcGFnZVgvcGFnZVkg
aXNuJ3Qgc3VwcG9ydGVkIChsZWdhY3kgYnJvd3NlcnMpLlxuICAgKlxuICAgKiBOT1RFOiBTY3Jv
bGwgZXZlbnRzIGRvIG5vdCBidWJibGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cDovL3d3dy5xdWly
a3Ntb2RlLm9yZy9kb20vZXZlbnRzL3Njcm9sbC5odG1sXG4gICAqL1xuICBlbnN1cmVTY3JvbGxW
YWx1ZU1vbml0b3Jpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoaGFzRXZlbnRQYWdlWFkgPT09
IHVuZGVmaW5lZCkge1xuICAgICAgaGFzRXZlbnRQYWdlWFkgPSBSZWFjdEJyb3dzZXJFdmVudEVt
aXR0ZXIuc3VwcG9ydHNFdmVudFBhZ2VYWSgpO1xuICAgIH1cbiAgICBpZiAoIWhhc0V2ZW50UGFn
ZVhZICYmICFpc01vbml0b3JpbmdTY3JvbGxWYWx1ZSkge1xuICAgICAgdmFyIHJlZnJlc2ggPSBW
aWV3cG9ydE1ldHJpY3MucmVmcmVzaFNjcm9sbFZhbHVlcztcbiAgICAgIFJlYWN0QnJvd3NlckV2
ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIubW9uaXRvclNjcm9sbFZhbHVlKHJlZnJlc2gp
O1xuICAgICAgaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgfVxufSk7
XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyO1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIv
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmpzXG4gKiogbW9kdWxlIGlkID0gMjVcbiAqKiBtb2R1
bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4n
dXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0
aWNVSUV2ZW50Jyk7XG52YXIgVmlld3BvcnRNZXRyaWNzID0gcmVxdWlyZSgnLi9WaWV3cG9ydE1l
dHJpY3MnKTtcblxudmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IHJlcXVpcmUoJy4vZ2V0RXZl
bnRNb2RpZmllclN0YXRlJyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBNb3VzZUV2ZW50XG4gKiBA
c2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAqL1xudmFyIE1v
dXNlRXZlbnRJbnRlcmZhY2UgPSB7XG4gIHNjcmVlblg6IG51bGwsXG4gIHNjcmVlblk6IG51bGws
XG4gIGNsaWVudFg6IG51bGwsXG4gIGNsaWVudFk6IG51bGwsXG4gIGN0cmxLZXk6IG51bGwsXG4g
IHNoaWZ0S2V5OiBudWxsLFxuICBhbHRLZXk6IG51bGwsXG4gIG1ldGFLZXk6IG51bGwsXG4gIGdl
dE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZSxcbiAgYnV0dG9uOiBmdW5jdGlv
biAoZXZlbnQpIHtcbiAgICAvLyBXZWJraXQsIEZpcmVmb3gsIElFOStcbiAgICAvLyB3aGljaDog
IDEgMiAzXG4gICAgLy8gYnV0dG9uOiAwIDEgMiAoc3RhbmRhcmQpXG4gICAgdmFyIGJ1dHRvbiA9
IGV2ZW50LmJ1dHRvbjtcbiAgICBpZiAoJ3doaWNoJyBpbiBldmVudCkge1xuICAgICAgcmV0dXJu
IGJ1dHRvbjtcbiAgICB9XG4gICAgLy8gSUU8OVxuICAgIC8vIHdoaWNoOiAgdW5kZWZpbmVkXG4g
ICAgLy8gYnV0dG9uOiAwIDAgMFxuICAgIC8vIGJ1dHRvbjogMSA0IDIgKG9ubW91c2V1cClcbiAg
ICByZXR1cm4gYnV0dG9uID09PSAyID8gMiA6IGJ1dHRvbiA9PT0gNCA/IDEgOiAwO1xuICB9LFxu
ICBidXR0b25zOiBudWxsLFxuICByZWxhdGVkVGFyZ2V0OiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAg
ICByZXR1cm4gZXZlbnQucmVsYXRlZFRhcmdldCB8fCAoZXZlbnQuZnJvbUVsZW1lbnQgPT09IGV2
ZW50LnNyY0VsZW1lbnQgPyBldmVudC50b0VsZW1lbnQgOiBldmVudC5mcm9tRWxlbWVudCk7XG4g
IH0sXG4gIC8vIFwiUHJvcHJpZXRhcnlcIiBJbnRlcmZhY2UuXG4gIHBhZ2VYOiBmdW5jdGlvbiAo
ZXZlbnQpIHtcbiAgICByZXR1cm4gJ3BhZ2VYJyBpbiBldmVudCA/IGV2ZW50LnBhZ2VYIDogZXZl
bnQuY2xpZW50WCArIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsTGVmdDtcbiAgfSxcbiAg
cGFnZVk6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJldHVybiAncGFnZVknIGluIGV2ZW50ID8g
ZXZlbnQucGFnZVkgOiBldmVudC5jbGllbnRZICsgVmlld3BvcnRNZXRyaWNzLmN1cnJlbnRTY3Jv
bGxUb3A7XG4gIH1cbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmln
IENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtz
dHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0
LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50Llxu
ICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY01v
dXNlRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBk
aXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCk7XG59XG5cblN5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY01vdXNl
RXZlbnQsIE1vdXNlRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRp
Y01vdXNlRXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJc
biAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNNb3VzZUV2ZW50LmpzXG4gKiogbW9kdWxl
IGlkID0gMjZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50
ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIGludmFyaWFudCA9IHJl
cXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52YXIgT0JTRVJWRURfRVJST1IgPSB7fTtc
blxuLyoqXG4gKiBgVHJhbnNhY3Rpb25gIGNyZWF0ZXMgYSBibGFjayBib3ggdGhhdCBpcyBhYmxl
IHRvIHdyYXAgYW55IG1ldGhvZCBzdWNoIHRoYXRcbiAqIGNlcnRhaW4gaW52YXJpYW50cyBhcmUg
bWFpbnRhaW5lZCBiZWZvcmUgYW5kIGFmdGVyIHRoZSBtZXRob2QgaXMgaW52b2tlZFxuICogKEV2
ZW4gaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biB3aGlsZSBpbnZva2luZyB0aGUgd3JhcHBlZCBt
ZXRob2QpLiBXaG9ldmVyXG4gKiBpbnN0YW50aWF0ZXMgYSB0cmFuc2FjdGlvbiBjYW4gcHJvdmlk
ZSBlbmZvcmNlcnMgb2YgdGhlIGludmFyaWFudHMgYXRcbiAqIGNyZWF0aW9uIHRpbWUuIFRoZSBg
VHJhbnNhY3Rpb25gIGNsYXNzIGl0c2VsZiB3aWxsIHN1cHBseSBvbmUgYWRkaXRpb25hbFxuICog
YXV0b21hdGljIGludmFyaWFudCBmb3IgeW91IC0gdGhlIGludmFyaWFudCB0aGF0IGFueSB0cmFu
c2FjdGlvbiBpbnN0YW5jZVxuICogc2hvdWxkIG5vdCBiZSBydW4gd2hpbGUgaXQgaXMgYWxyZWFk
eSBiZWluZyBydW4uIFlvdSB3b3VsZCB0eXBpY2FsbHkgY3JlYXRlIGFcbiAqIHNpbmdsZSBpbnN0
YW5jZSBvZiBhIGBUcmFuc2FjdGlvbmAgZm9yIHJldXNlIG11bHRpcGxlIHRpbWVzLCB0aGF0IHBv
dGVudGlhbGx5XG4gKiBpcyB1c2VkIHRvIHdyYXAgc2V2ZXJhbCBkaWZmZXJlbnQgbWV0aG9kcy4g
V3JhcHBlcnMgYXJlIGV4dHJlbWVseSBzaW1wbGUgLVxuICogdGhleSBvbmx5IHJlcXVpcmUgaW1w
bGVtZW50aW5nIHR3byBtZXRob2RzLlxuICpcbiAqIDxwcmU+XG4gKiAgICAgICAgICAgICAgICAg
ICAgICAgd3JhcHBlcnMgKGluamVjdGVkIGF0IGNyZWF0aW9uIHRpbWUpXG4gKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgK1xuICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICAr
LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0rXG4gKiAgICAgICAgICAg
ICAgICAgICAgfCAgICAgICAgICAgICAgICAgdiAgICAgICAgfCAgICAgICAgICAgICAgfFxuICog
ICAgICAgICAgICAgICAgICAgIHwgICAgICArLS0tLS0tLS0tLS0tLS0tKyAgIHwgICAgICAgICAg
ICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgKy0tfCAgICB3cmFwcGVyMSAgIHwtLS18
LS0tLSsgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICstLS0tLS0tLS0t
LS0tLS0rICAgdiAgICB8ICAgICAgICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAg
ICAgICAgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAg
ICB8ICAgfCAgICAgKy0tLS18ICAgd3JhcHBlcjIgIHwtLS0tLS0tLSsgICB8XG4gKiAgICAgICAg
ICAgICAgICAgICAgfCAgIHwgICAgIHwgICAgKy0tLS0tLS0tLS0tLS0rICB8ICAgICB8ICAgfFxu
ICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAg
ICAgfCAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgdiAgICAgdiAgICAgICAgICAgICAg
ICAgICAgIHYgICAgIHYgICB8IHdyYXBwZXJcbiAqICAgICAgICAgICAgICAgICAgICB8ICstLS0r
ICstLS0rICAgKy0tLS0tLS0tLSsgICArLS0tKyArLS0tKyB8IGludmFyaWFudHNcbiAqIHBlcmZv
cm0oYW55TWV0aG9kKSB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8
IG1haW50YWluZWRcbiAqICstLS0tLS0tLS0tLS0tLS0tLT58LXwtLS18LXwtLS18LS0+fGFueU1l
dGhvZHwtLS18LS0tfC18LS0tfC18LS0tLS0tLS0+XG4gKiAgICAgICAgICAgICAgICAgICAgfCB8
ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfFxuICogICAgICAgICAgICAg
ICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHxcbiAqICAg
ICAgICAgICAgICAgICAgICB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAg
fCB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCArLS0tKyArLS0tKyAgICstLS0tLS0tLS0rICAg
Ky0tLSsgKy0tLSsgfFxuICogICAgICAgICAgICAgICAgICAgIHwgIGluaXRpYWxpemUgICAgICAg
ICAgICAgICAgICAgIGNsb3NlICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gKiA8L3ByZT5cbiAqXG4gKiBVc2Ug
Y2FzZXM6XG4gKiAtIFByZXNlcnZpbmcgdGhlIGlucHV0IHNlbGVjdGlvbiByYW5nZXMgYmVmb3Jl
L2FmdGVyIHJlY29uY2lsaWF0aW9uLlxuICogICBSZXN0b3Jpbmcgc2VsZWN0aW9uIGV2ZW4gaW4g
dGhlIGV2ZW50IG9mIGFuIHVuZXhwZWN0ZWQgZXJyb3IuXG4gKiAtIERlYWN0aXZhdGluZyBldmVu
dHMgd2hpbGUgcmVhcnJhbmdpbmcgdGhlIERPTSwgcHJldmVudGluZyBibHVycy9mb2N1c2VzLFxu
ICogICB3aGlsZSBndWFyYW50ZWVpbmcgdGhhdCBhZnRlcndhcmRzLCB0aGUgZXZlbnQgc3lzdGVt
IGlzIHJlYWN0aXZhdGVkLlxuICogLSBGbHVzaGluZyBhIHF1ZXVlIG9mIGNvbGxlY3RlZCBET00g
bXV0YXRpb25zIHRvIHRoZSBtYWluIFVJIHRocmVhZCBhZnRlciBhXG4gKiAgIHJlY29uY2lsaWF0
aW9uIHRha2VzIHBsYWNlIGluIGEgd29ya2VyIHRocmVhZC5cbiAqIC0gSW52b2tpbmcgYW55IGNv
bGxlY3RlZCBgY29tcG9uZW50RGlkVXBkYXRlYCBjYWxsYmFja3MgYWZ0ZXIgcmVuZGVyaW5nIG5l
d1xuICogICBjb250ZW50LlxuICogLSAoRnV0dXJlIHVzZSBjYXNlKTogV3JhcHBpbmcgcGFydGlj
dWxhciBmbHVzaGVzIG9mIHRoZSBgUmVhY3RXb3JrZXJgIHF1ZXVlXG4gKiAgIHRvIHByZXNlcnZl
IHRoZSBgc2Nyb2xsVG9wYCAoYW4gYXV0b21hdGljIHNjcm9sbCBhd2FyZSBET00pLlxuICogLSAo
RnV0dXJlIHVzZSBjYXNlKTogTGF5b3V0IGNhbGN1bGF0aW9ucyBiZWZvcmUgYW5kIGFmdGVyIERP
TSB1cGRhdGVzLlxuICpcbiAqIFRyYW5zYWN0aW9uYWwgcGx1Z2luIEFQSTpcbiAqIC0gQSBtb2R1
bGUgdGhhdCBoYXMgYW4gYGluaXRpYWxpemVgIG1ldGhvZCB0aGF0IHJldHVybnMgYW55IHByZWNv
bXB1dGF0aW9uLlxuICogLSBhbmQgYSBgY2xvc2VgIG1ldGhvZCB0aGF0IGFjY2VwdHMgdGhlIHBy
ZWNvbXB1dGF0aW9uLiBgY2xvc2VgIGlzIGludm9rZWRcbiAqICAgd2hlbiB0aGUgd3JhcHBlZCBw
cm9jZXNzIGlzIGNvbXBsZXRlZCwgb3IgaGFzIGZhaWxlZC5cbiAqXG4gKiBAcGFyYW0ge0FycmF5
PFRyYW5zYWN0aW9uYWxXcmFwcGVyPn0gdHJhbnNhY3Rpb25XcmFwcGVyIFdyYXBwZXIgbW9kdWxl
c1xuICogdGhhdCBpbXBsZW1lbnQgYGluaXRpYWxpemVgIGFuZCBgY2xvc2VgLlxuICogQHJldHVy
biB7VHJhbnNhY3Rpb259IFNpbmdsZSB0cmFuc2FjdGlvbiBmb3IgcmV1c2UgaW4gdGhyZWFkLlxu
ICpcbiAqIEBjbGFzcyBUcmFuc2FjdGlvblxuICovXG52YXIgVHJhbnNhY3Rpb25JbXBsID0ge1xu
ICAvKipcbiAgICogU2V0cyB1cCB0aGlzIGluc3RhbmNlIHNvIHRoYXQgaXQgaXMgcHJlcGFyZWQg
Zm9yIGNvbGxlY3RpbmcgbWV0cmljcy4gRG9lc1xuICAgKiBzbyBzdWNoIHRoYXQgdGhpcyBzZXR1
cCBtZXRob2QgbWF5IGJlIHVzZWQgb24gYW4gaW5zdGFuY2UgdGhhdCBpcyBhbHJlYWR5XG4gICAq
IGluaXRpYWxpemVkLCBpbiBhIHdheSB0aGF0IGRvZXMgbm90IGNvbnN1bWUgYWRkaXRpb25hbCBt
ZW1vcnkgdXBvbiByZXVzZS5cbiAgICogVGhhdCBjYW4gYmUgdXNlZnVsIGlmIHlvdSBkZWNpZGUg
dG8gbWFrZSB5b3VyIHN1YmNsYXNzIG9mIHRoaXMgbWl4aW4gYVxuICAgKiBcIlBvb2xlZENsYXNz
XCIuXG4gICAqL1xuICByZWluaXRpYWxpemVUcmFuc2FjdGlvbjogZnVuY3Rpb24gKCkge1xuICAg
IHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycyA9IHRoaXMuZ2V0VHJhbnNhY3Rpb25XcmFwcGVycygp
O1xuICAgIGlmICh0aGlzLndyYXBwZXJJbml0RGF0YSkge1xuICAgICAgdGhpcy53cmFwcGVySW5p
dERhdGEubGVuZ3RoID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53cmFwcGVySW5pdERh
dGEgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5faXNJblRyYW5zYWN0aW9uID0gZmFsc2U7XG4gIH0s
XG5cbiAgX2lzSW5UcmFuc2FjdGlvbjogZmFsc2UsXG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxu
ICAgKiBAcmV0dXJuIHtBcnJheTxUcmFuc2FjdGlvbldyYXBwZXI+fSBBcnJheSBvZiB0cmFuc2Fj
dGlvbiB3cmFwcGVycy5cbiAgICovXG4gIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IG51bGwsXG5c
biAgaXNJblRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5faXNJ
blRyYW5zYWN0aW9uO1xuICB9LFxuXG4gIC8qIGVzbGludC1kaXNhYmxlIHNwYWNlLWJlZm9yZS1m
dW5jdGlvbi1wYXJlbiAqL1xuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgZnVuY3Rpb24gd2l0
aGluIGEgc2FmZXR5IHdpbmRvdy4gVXNlIHRoaXMgZm9yIHRoZSB0b3AgbGV2ZWxcbiAgICogbWV0
aG9kcyB0aGF0IHJlc3VsdCBpbiBsYXJnZSBhbW91bnRzIG9mIGNvbXB1dGF0aW9uL211dGF0aW9u
cyB0aGF0IHdvdWxkXG4gICAqIG5lZWQgdG8gYmUgc2FmZXR5IGNoZWNrZWQuIFRoZSBvcHRpb25h
bCBhcmd1bWVudHMgaGVscHMgcHJldmVudCB0aGUgbmVlZFxuICAgKiB0byBiaW5kIGluIG1hbnkg
Y2FzZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZCBNZW1iZXIgb2Ygc2Nv
cGUgdG8gY2FsbC5cbiAgICogQHBhcmFtIHtPYmplY3R9IHNjb3BlIFNjb3BlIHRvIGludm9rZSBm
cm9tLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBhIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1l
dGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gYiBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBt
ZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGMgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUg
bWV0aG9kLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBkIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhl
IG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gZSBBcmd1bWVudCB0byBwYXNzIHRvIHRo
ZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGYgQXJndW1lbnQgdG8gcGFzcyB0byB0
aGUgbWV0aG9kLlxuICAgKlxuICAgKiBAcmV0dXJuIHsqfSBSZXR1cm4gdmFsdWUgZnJvbSBgbWV0
aG9kYC5cbiAgICovXG4gIHBlcmZvcm06IGZ1bmN0aW9uIChtZXRob2QsIHNjb3BlLCBhLCBiLCBj
LCBkLCBlLCBmKSB7XG4gICAgLyogZXNsaW50LWVuYWJsZSBzcGFjZS1iZWZvcmUtZnVuY3Rpb24t
cGFyZW4gKi9cbiAgICAhIXRoaXMuaXNJblRyYW5zYWN0aW9uKCkgPyBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVHJhbnNhY3Rpb24ucGVy
Zm9ybSguLi4pOiBDYW5ub3QgaW5pdGlhbGl6ZSBhIHRyYW5zYWN0aW9uIHdoZW4gdGhlcmUgaXMg
YWxyZWFkeSBhbiBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbi4nKSA6IF9wcm9kSW52YXJpYW50KCcy
NycpIDogdm9pZCAwO1xuICAgIHZhciBlcnJvclRocm93bjtcbiAgICB2YXIgcmV0O1xuICAgIHRy
eSB7XG4gICAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSB0cnVlO1xuICAgICAgLy8gQ2F0Y2hp
bmcgZXJyb3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3VsdCwgc28gd2Ugc3RhcnQgd2l0
aFxuICAgICAgLy8gZXJyb3JUaHJvd24gc2V0IHRvIHRydWUgYmVmb3JlIHNldHRpbmcgaXQgdG8g
ZmFsc2UgYWZ0ZXIgY2FsbGluZ1xuICAgICAgLy8gY2xvc2UgLS0gaWYgaXQncyBzdGlsbCBzZXQg
dG8gdHJ1ZSBpbiB0aGUgZmluYWxseSBibG9jaywgaXQgbWVhbnNcbiAgICAgIC8vIG9uZSBvZiB0
aGVzZSBjYWxscyB0aHJldy5cbiAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTtcbiAgICAgIHRoaXMu
aW5pdGlhbGl6ZUFsbCgwKTtcbiAgICAgIHJldCA9IG1ldGhvZC5jYWxsKHNjb3BlLCBhLCBiLCBj
LCBkLCBlLCBmKTtcbiAgICAgIGVycm9yVGhyb3duID0gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtc
biAgICAgIHRyeSB7XG4gICAgICAgIGlmIChlcnJvclRocm93bikge1xuICAgICAgICAgIC8vIElm
IGBtZXRob2RgIHRocm93cywgcHJlZmVyIHRvIHNob3cgdGhhdCBzdGFjayB0cmFjZSBvdmVyIGFu
eSB0aHJvd25cbiAgICAgICAgICAvLyBieSBpbnZva2luZyBgY2xvc2VBbGxgLlxuICAgICAgICAg
IHRyeSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlQWxsKDApO1xuICAgICAgICAgIH0gY2F0Y2gg
KGVycikge31cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTaW5jZSBgbWV0aG9kYCBk
aWRuJ3QgdGhyb3csIHdlIGRvbid0IHdhbnQgdG8gc2lsZW5jZSB0aGUgZXhjZXB0aW9uXG4gICAg
ICAgICAgLy8gaGVyZS5cbiAgICAgICAgICB0aGlzLmNsb3NlQWxsKDApO1xuICAgICAgICB9XG4g
ICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSBmYWxzZTtc
biAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBpbml0aWFsaXplQWxs
OiBmdW5jdGlvbiAoc3RhcnRJbmRleCkge1xuICAgIHZhciB0cmFuc2FjdGlvbldyYXBwZXJzID0g
dGhpcy50cmFuc2FjdGlvbldyYXBwZXJzO1xuICAgIGZvciAodmFyIGkgPSBzdGFydEluZGV4OyBp
IDwgdHJhbnNhY3Rpb25XcmFwcGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHdyYXBwZXIg
PSB0cmFuc2FjdGlvbldyYXBwZXJzW2ldO1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQ2F0Y2hp
bmcgZXJyb3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3VsdCwgc28gd2Ugc3RhcnQgd2l0
aCB0aGVcbiAgICAgICAgLy8gT0JTRVJWRURfRVJST1Igc3RhdGUgYmVmb3JlIG92ZXJ3cml0aW5n
IGl0IHdpdGggdGhlIHJlYWwgcmV0dXJuIHZhbHVlXG4gICAgICAgIC8vIG9mIGluaXRpYWxpemUg
LS0gaWYgaXQncyBzdGlsbCBzZXQgdG8gT0JTRVJWRURfRVJST1IgaW4gdGhlIGZpbmFsbHlcbiAg
ICAgICAgLy8gYmxvY2ssIGl0IG1lYW5zIHdyYXBwZXIuaW5pdGlhbGl6ZSB0aHJldy5cbiAgICAg
ICAgdGhpcy53cmFwcGVySW5pdERhdGFbaV0gPSBPQlNFUlZFRF9FUlJPUjtcbiAgICAgICAgdGhp
cy53cmFwcGVySW5pdERhdGFbaV0gPSB3cmFwcGVyLmluaXRpYWxpemUgPyB3cmFwcGVyLmluaXRp
YWxpemUuY2FsbCh0aGlzKSA6IG51bGw7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAo
dGhpcy53cmFwcGVySW5pdERhdGFbaV0gPT09IE9CU0VSVkVEX0VSUk9SKSB7XG4gICAgICAgICAg
Ly8gVGhlIGluaXRpYWxpemVyIGZvciB3cmFwcGVyIGkgdGhyZXcgYW4gZXJyb3I7IGluaXRpYWxp
emUgdGhlXG4gICAgICAgICAgLy8gcmVtYWluaW5nIHdyYXBwZXJzIGJ1dCBzaWxlbmNlIGFueSBl
eGNlcHRpb25zIGZyb20gdGhlbSB0byBlbnN1cmVcbiAgICAgICAgICAvLyB0aGF0IHRoZSBmaXJz
dCBlcnJvciBpcyB0aGUgb25lIHRvIGJ1YmJsZSB1cC5cbiAgICAgICAgICB0cnkge1xuICAgICAg
ICAgICAgdGhpcy5pbml0aWFsaXplQWxsKGkgKyAxKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIp
IHt9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEludm9r
ZXMgZWFjaCBvZiBgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLmNsb3NlW2ldYCBmdW5jdGlvbnMs
IHBhc3NpbmcgaW50b1xuICAgKiB0aGVtIHRoZSByZXNwZWN0aXZlIHJldHVybiB2YWx1ZXMgb2Yg
YHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycy5pbml0W2ldYFxuICAgKiAoYGNsb3NlYHJzIHRoYXQg
Y29ycmVzcG9uZCB0byBpbml0aWFsaXplcnMgdGhhdCBmYWlsZWQgd2lsbCBub3QgYmVcbiAgICog
aW52b2tlZCkuXG4gICAqL1xuICBjbG9zZUFsbDogZnVuY3Rpb24gKHN0YXJ0SW5kZXgpIHtcbiAg
ICAhdGhpcy5pc0luVHJhbnNhY3Rpb24oKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUcmFuc2FjdGlvbi5jbG9zZUFsbCgpOiBDYW5u
b3QgY2xvc2UgdHJhbnNhY3Rpb24gd2hlbiBub25lIGFyZSBvcGVuLicpIDogX3Byb2RJbnZhcmlh
bnQoJzI4JykgOiB2b2lkIDA7XG4gICAgdmFyIHRyYW5zYWN0aW9uV3JhcHBlcnMgPSB0aGlzLnRy
YW5zYWN0aW9uV3JhcHBlcnM7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgPCB0cmFu
c2FjdGlvbldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgd3JhcHBlciA9IHRyYW5z
YWN0aW9uV3JhcHBlcnNbaV07XG4gICAgICB2YXIgaW5pdERhdGEgPSB0aGlzLndyYXBwZXJJbml0
RGF0YVtpXTtcbiAgICAgIHZhciBlcnJvclRocm93bjtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8v
IENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBkaWZmaWN1bHQsIHNvIHdlIHN0
YXJ0IHdpdGhcbiAgICAgICAgLy8gZXJyb3JUaHJvd24gc2V0IHRvIHRydWUgYmVmb3JlIHNldHRp
bmcgaXQgdG8gZmFsc2UgYWZ0ZXIgY2FsbGluZ1xuICAgICAgICAvLyBjbG9zZSAtLSBpZiBpdCdz
IHN0aWxsIHNldCB0byB0cnVlIGluIHRoZSBmaW5hbGx5IGJsb2NrLCBpdCBtZWFuc1xuICAgICAg
ICAvLyB3cmFwcGVyLmNsb3NlIHRocmV3LlxuICAgICAgICBlcnJvclRocm93biA9IHRydWU7XG4g
ICAgICAgIGlmIChpbml0RGF0YSAhPT0gT0JTRVJWRURfRVJST1IgJiYgd3JhcHBlci5jbG9zZSkg
e1xuICAgICAgICAgIHdyYXBwZXIuY2xvc2UuY2FsbCh0aGlzLCBpbml0RGF0YSk7XG4gICAgICAg
IH1cbiAgICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAg
ICAgIGlmIChlcnJvclRocm93bikge1xuICAgICAgICAgIC8vIFRoZSBjbG9zZXIgZm9yIHdyYXBw
ZXIgaSB0aHJldyBhbiBlcnJvcjsgY2xvc2UgdGhlIHJlbWFpbmluZ1xuICAgICAgICAgIC8vIHdy
YXBwZXJzIGJ1dCBzaWxlbmNlIGFueSBleGNlcHRpb25zIGZyb20gdGhlbSB0byBlbnN1cmUgdGhh
dCB0aGVcbiAgICAgICAgICAvLyBmaXJzdCBlcnJvciBpcyB0aGUgb25lIHRvIGJ1YmJsZSB1cC5c
biAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUFsbChpICsgMSk7XG4gICAg
ICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlz
LndyYXBwZXJJbml0RGF0YS5sZW5ndGggPSAwO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9
IFRyYW5zYWN0aW9uSW1wbDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1RyYW5zYWN0aW9uLmpzXG4gKiogbW9kdWxlIGlk
ID0gMjdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTYtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqIEJhc2VkIG9uIHRoZSBlc2NhcGUtaHRtbCBsaWJyYXJ5LCB3aGljaCBpcyB1c2Vk
IHVuZGVyIHRoZSBNSVQgTGljZW5zZSBiZWxvdzpcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIt
MjAxMyBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJpZ2h0IChjKSAyMDE1IEFuZHJlYXMgTHViYmVc
biAqIENvcHlyaWdodCAoYykgMjAxNSBUaWFuY2hlbmcgXCJUaW1vdGh5XCIgR3VcbiAqXG4gKiBQ
ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv
biBvYnRhaW5pbmdcbiAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv
Y3VtZW50YXRpb24gZmlsZXMgKHRoZVxuICogJ1NvZnR3YXJlJyksIHRvIGRlYWwgaW4gdGhlIFNv
ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuICogd2l0aG91dCBsaW1pdGF0
aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuICog
ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy
ZSwgYW5kIHRvXG4gKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJu
aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG9cbiAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpc
biAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v
dGljZSBzaGFsbCBiZVxuICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw
b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE
ICdBUyBJUycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsXG4gKiBFWFBSRVNTIE9SIElN
UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0ZcbiAq
IE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P
TklORlJJTkdFTUVOVC5cbiAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlS
SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhF
UiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULFxuICogVE9SVCBP
UiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU
SEVcbiAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRX
QVJFLlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8vIGNvZGUgY29waWVkIGFuZCBtb2Rp
ZmllZCBmcm9tIGVzY2FwZS1odG1sXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJp
dmF0ZVxuICovXG5cbnZhciBtYXRjaEh0bWxSZWdFeHAgPSAvW1wiJyY8Pl0vO1xuXG4vKipcbiAq
IEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gdGhlIGdpdmVuIHN0cmluZyBvZiBodG1sLlxu
ICpcbiAqIEBwYXJhbSAge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gZXNjYXBlIGZvciBp
bnNlcnRpbmcgaW50byBIVE1MXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9c
blxuZnVuY3Rpb24gZXNjYXBlSHRtbChzdHJpbmcpIHtcbiAgdmFyIHN0ciA9ICcnICsgc3RyaW5n
O1xuICB2YXIgbWF0Y2ggPSBtYXRjaEh0bWxSZWdFeHAuZXhlYyhzdHIpO1xuXG4gIGlmICghbWF0
Y2gpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgdmFyIGVzY2FwZTtcbiAgdmFyIGh0bWwg
PSAnJztcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxhc3RJbmRleCA9IDA7XG5cbiAgZm9yIChp
bmRleCA9IG1hdGNoLmluZGV4OyBpbmRleCA8IHN0ci5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBz
d2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGluZGV4KSkge1xuICAgICAgY2FzZSAzNDpcbiAgICAgICAg
Ly8gXCJcbiAgICAgICAgZXNjYXBlID0gJyZxdW90Oyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAg
Y2FzZSAzODpcbiAgICAgICAgLy8gJlxuICAgICAgICBlc2NhcGUgPSAnJmFtcDsnO1xuICAgICAg
ICBicmVhaztcbiAgICAgIGNhc2UgMzk6XG4gICAgICAgIC8vICdcbiAgICAgICAgZXNjYXBlID0g
JyYjeDI3Oyc7IC8vIG1vZGlmaWVkIGZyb20gZXNjYXBlLWh0bWw7IHVzZWQgdG8gYmUgJyYjMzkn
XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA2MDpcbiAgICAgICAgLy8gPFxuICAgICAgICBl
c2NhcGUgPSAnJmx0Oyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA2MjpcbiAgICAgICAg
Ly8gPlxuICAgICAgICBlc2NhcGUgPSAnJmd0Oyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVm
YXVsdDpcbiAgICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGxhc3RJbmRleCAhPT0g
aW5kZXgpIHtcbiAgICAgIGh0bWwgKz0gc3RyLnN1YnN0cmluZyhsYXN0SW5kZXgsIGluZGV4KTtc
biAgICB9XG5cbiAgICBsYXN0SW5kZXggPSBpbmRleCArIDE7XG4gICAgaHRtbCArPSBlc2NhcGU7
XG4gIH1cblxuICByZXR1cm4gbGFzdEluZGV4ICE9PSBpbmRleCA/IGh0bWwgKyBzdHIuc3Vic3Ry
aW5nKGxhc3RJbmRleCwgaW5kZXgpIDogaHRtbDtcbn1cbi8vIGVuZCBjb2RlIGNvcGllZCBhbmQg
bW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbFxuXG4vKipcbiAqIEVzY2FwZXMgdGV4dCB0byBwcmV2
ZW50IHNjcmlwdGluZyBhdHRhY2tzLlxuICpcbiAqIEBwYXJhbSB7Kn0gdGV4dCBUZXh0IHZhbHVl
IHRvIGVzY2FwZS5cbiAqIEByZXR1cm4ge3N0cmluZ30gQW4gZXNjYXBlZCBzdHJpbmcuXG4gKi9c
bmZ1bmN0aW9uIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0ZXh0KSB7XG4gIGlmICh0eXBl
b2YgdGV4dCA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiB0ZXh0ID09PSAnbnVtYmVyJykge1xuICAg
IC8vIHRoaXMgc2hvcnRjaXJjdWl0IGhlbHBzIHBlcmYgZm9yIHR5cGVzIHRoYXQgd2Uga25vdyB3
aWxsIG5ldmVyIGhhdmVcbiAgICAvLyBzcGVjaWFsIGNoYXJhY3RlcnMsIGVzcGVjaWFsbHkgZ2l2
ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgb2Z0ZW5cbiAgICAvLyBmb3IgbnVtZXJpYyBk
b20gaWRzLlxuICAgIHJldHVybiAnJyArIHRleHQ7XG4gIH1cbiAgcmV0dXJuIGVzY2FwZUh0bWwo
dGV4dCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2Vy
O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LWRvbS9saWIvZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyLmpzXG4gKiogbW9kdWxlIGlk
ID0gMjhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9
IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52YXIgRE9NTmFtZXNw
YWNlcyA9IHJlcXVpcmUoJy4vRE9NTmFtZXNwYWNlcycpO1xuXG52YXIgV0hJVEVTUEFDRV9URVNU
ID0gL15bIFxcclxcblxcdFxcZl0vO1xudmFyIE5PTlZJU0lCTEVfVEVTVCA9IC88KCEtLXxsaW5r
fG5vc2NyaXB0fG1ldGF8c2NyaXB0fHN0eWxlKVsgXFxyXFxuXFx0XFxmXFwvPl0vO1xuXG52YXIg
Y3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IHJlcXVpcmUoJy4vY3JlYXRlTWlj
cm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbicpO1xuXG4vLyBTVkcgdGVtcCBjb250YWluZXIgZm9y
IElFIGxhY2tpbmcgaW5uZXJIVE1MXG52YXIgcmV1c2FibGVTVkdDb250YWluZXI7XG5cbi8qKlxu
ICogU2V0IHRoZSBpbm5lckhUTUwgcHJvcGVydHkgb2YgYSBub2RlLCBlbnN1cmluZyB0aGF0IHdo
aXRlc3BhY2UgaXMgcHJlc2VydmVkXG4gKiBldmVuIGluIElFOC5cbiAqXG4gKiBAcGFyYW0ge0RP
TUVsZW1lbnR9IG5vZGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBodG1sXG4gKiBAaW50ZXJuYWxcbiAq
L1xudmFyIHNldElubmVySFRNTCA9IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24o
ZnVuY3Rpb24gKG5vZGUsIGh0bWwpIHtcbiAgLy8gSUUgZG9lcyBub3QgaGF2ZSBpbm5lckhUTUwg
Zm9yIFNWRyBub2Rlcywgc28gaW5zdGVhZCB3ZSBpbmplY3QgdGhlXG4gIC8vIG5ldyBtYXJrdXAg
aW4gYSB0ZW1wIG5vZGUgYW5kIHRoZW4gbW92ZSB0aGUgY2hpbGQgbm9kZXMgYWNyb3NzIGludG9c
biAgLy8gdGhlIHRhcmdldCBub2RlXG4gIGlmIChub2RlLm5hbWVzcGFjZVVSSSA9PT0gRE9NTmFt
ZXNwYWNlcy5zdmcgJiYgISgnaW5uZXJIVE1MJyBpbiBub2RlKSkge1xuICAgIHJldXNhYmxlU1ZH
Q29udGFpbmVyID0gcmV1c2FibGVTVkdDb250YWluZXIgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7XG4gICAgcmV1c2FibGVTVkdDb250YWluZXIuaW5uZXJIVE1MID0gJzxzdmc+JyAr
IGh0bWwgKyAnPC9zdmc+JztcbiAgICB2YXIgc3ZnTm9kZSA9IHJldXNhYmxlU1ZHQ29udGFpbmVy
LmZpcnN0Q2hpbGQ7XG4gICAgd2hpbGUgKHN2Z05vZGUuZmlyc3RDaGlsZCkge1xuICAgICAgbm9k
ZS5hcHBlbmRDaGlsZChzdmdOb2RlLmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAg
ICBub2RlLmlubmVySFRNTCA9IGh0bWw7XG4gIH1cbn0pO1xuXG5pZiAoRXhlY3V0aW9uRW52aXJv
bm1lbnQuY2FuVXNlRE9NKSB7XG4gIC8vIElFODogV2hlbiB1cGRhdGluZyBhIGp1c3QgY3JlYXRl
ZCBub2RlIHdpdGggaW5uZXJIVE1MIG9ubHkgbGVhZGluZ1xuICAvLyB3aGl0ZXNwYWNlIGlzIHJl
bW92ZWQuIFdoZW4gdXBkYXRpbmcgYW4gZXhpc3Rpbmcgbm9kZSB3aXRoIGlubmVySFRNTFxuICAv
LyB3aGl0ZXNwYWNlIGluIHJvb3QgVGV4dE5vZGVzIGlzIGFsc28gY29sbGFwc2VkLlxuICAvLyBA
c2VlIHF1aXJrc21vZGUub3JnL2J1Z3JlcG9ydHMvYXJjaGl2ZXMvMjAwNC8xMS9pbm5lcmh0bWxf
YW5kX3QuaHRtbFxuXG4gIC8vIEZlYXR1cmUgZGV0ZWN0aW9uOyBvbmx5IElFOCBpcyBrbm93biB0
byBiZWhhdmUgaW1wcm9wZXJseSBsaWtlIHRoaXMuXG4gIHZhciB0ZXN0RWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICB0ZXN0RWxlbWVudC5pbm5lckhUTUwgPSAnICc7
XG4gIGlmICh0ZXN0RWxlbWVudC5pbm5lckhUTUwgPT09ICcnKSB7XG4gICAgc2V0SW5uZXJIVE1M
ID0gZnVuY3Rpb24gKG5vZGUsIGh0bWwpIHtcbiAgICAgIC8vIE1hZ2ljIHRoZW9yeTogSUU4IHN1
cHBvc2VkbHkgZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiBhZGRlZCBhbmQgdXBkYXRlZFxuICAgICAg
Ly8gbm9kZXMgd2hlbiBwcm9jZXNzaW5nIGlubmVySFRNTCwgaW5uZXJIVE1MIG9uIHVwZGF0ZWQg
bm9kZXMgc3VmZmVyc1xuICAgICAgLy8gZnJvbSB3b3JzZSB3aGl0ZXNwYWNlIGJlaGF2aW9yLiBS
ZS1hZGRpbmcgYSBub2RlIGxpa2UgdGhpcyB0cmlnZ2Vyc1xuICAgICAgLy8gdGhlIGluaXRpYWwg
YW5kIG1vcmUgZmF2b3JhYmxlIHdoaXRlc3BhY2UgYmVoYXZpb3IuXG4gICAgICAvLyBUT0RPOiBX
aGF0IHRvIGRvIG9uIGEgZGV0YWNoZWQgbm9kZT9cbiAgICAgIGlmIChub2RlLnBhcmVudE5vZGUp
IHtcbiAgICAgICAgbm9kZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChub2RlLCBub2RlKTtcbiAg
ICAgIH1cblxuICAgICAgLy8gV2UgYWxzbyBpbXBsZW1lbnQgYSB3b3JrYXJvdW5kIGZvciBub24t
dmlzaWJsZSB0YWdzIGRpc2FwcGVhcmluZyBpbnRvXG4gICAgICAvLyB0aGluIGFpciBvbiBJRTgs
IHRoaXMgb25seSBoYXBwZW5zIGlmIHRoZXJlIGlzIG5vIHZpc2libGUgdGV4dFxuICAgICAgLy8g
aW4tZnJvbnQgb2YgdGhlIG5vbi12aXNpYmxlIHRhZ3MuIFBpZ2d5YmFjayBvbiB0aGUgd2hpdGVz
cGFjZSBmaXhcbiAgICAgIC8vIGFuZCBzaW1wbHkgY2hlY2sgaWYgYW55IG5vbi12aXNpYmxlIHRh
Z3MgYXBwZWFyIGluIHRoZSBzb3VyY2UuXG4gICAgICBpZiAoV0hJVEVTUEFDRV9URVNULnRlc3Qo
aHRtbCkgfHwgaHRtbFswXSA9PT0gJzwnICYmIE5PTlZJU0lCTEVfVEVTVC50ZXN0KGh0bWwpKSB7
XG4gICAgICAgIC8vIFJlY292ZXIgbGVhZGluZyB3aGl0ZXNwYWNlIGJ5IHRlbXBvcmFyaWx5IHBy
ZXBlbmRpbmcgYW55IGNoYXJhY3Rlci5cbiAgICAgICAgLy8gXFx1RkVGRiBoYXMgdGhlIHBvdGVu
dGlhbCBhZHZhbnRhZ2Ugb2YgYmVpbmcgemVyby13aWR0aC9pbnZpc2libGUuXG4gICAgICAgIC8v
IFVnbGlmeUpTIGRyb3BzIFUrRkVGRiBjaGFycyB3aGVuIHBhcnNpbmcsIHNvIHVzZSBTdHJpbmcu
ZnJvbUNoYXJDb2RlXG4gICAgICAgIC8vIGluIGhvcGVzIHRoYXQgdGhpcyBpcyBwcmVzZXJ2ZWQg
ZXZlbiBpZiBcIlxcdUZFRkZcIiBpcyB0cmFuc2Zvcm1lZCB0b1xuICAgICAgICAvLyB0aGUgYWN0
dWFsIFVuaWNvZGUgY2hhcmFjdGVyIChieSBCYWJlbCwgZm9yIGV4YW1wbGUpLlxuICAgICAgICAv
LyBodHRwczovL2dpdGh1Yi5jb20vbWlzaG9vL1VnbGlmeUpTMi9ibG9iL3YyLjQuMjAvbGliL3Bh
cnNlLmpzI0wyMTZcbiAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBTdHJpbmcuZnJvbUNoYXJDb2Rl
KDB4ZmVmZikgKyBodG1sO1xuXG4gICAgICAgIC8vIGRlbGV0ZURhdGEgbGVhdmVzIGFuIGVtcHR5
IGBUZXh0Tm9kZWAgd2hpY2ggb2Zmc2V0cyB0aGUgaW5kZXggb2YgYWxsXG4gICAgICAgIC8vIGNo
aWxkcmVuLiBEZWZpbml0ZWx5IHdhbnQgdG8gYXZvaWQgdGhpcy5cbiAgICAgICAgdmFyIHRleHRO
b2RlID0gbm9kZS5maXJzdENoaWxkO1xuICAgICAgICBpZiAodGV4dE5vZGUuZGF0YS5sZW5ndGgg
PT09IDEpIHtcbiAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKHRleHROb2RlKTtcbiAgICAgICAg
fSBlbHNlIHtcbiAgICAgICAgICB0ZXh0Tm9kZS5kZWxldGVEYXRhKDAsIDEpO1xuICAgICAgICB9
XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLmlubmVySFRNTCA9IGh0bWw7XG4gICAgICB9
XG4gICAgfTtcbiAgfVxuICB0ZXN0RWxlbWVudCA9IG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRz
ID0gc2V0SW5uZXJIVE1MO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvc2V0SW5uZXJIVE1MLmpzXG4gKiogbW9kdWxlIGlk
ID0gMjlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhw
b3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuY29tcG9zZSA9IGV4cG9ydHMuYXBwbHlN
aWRkbGV3YXJlID0gZXhwb3J0cy5iaW5kQWN0aW9uQ3JlYXRvcnMgPSBleHBvcnRzLmNvbWJpbmVS
ZWR1Y2VycyA9IGV4cG9ydHMuY3JlYXRlU3RvcmUgPSB1bmRlZmluZWQ7XG5cbnZhciBfY3JlYXRl
U3RvcmUgPSByZXF1aXJlKCcuL2NyZWF0ZVN0b3JlJyk7XG5cbnZhciBfY3JlYXRlU3RvcmUyID0g
X2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlU3RvcmUpO1xuXG52YXIgX2NvbWJpbmVSZWR1
Y2VycyA9IHJlcXVpcmUoJy4vY29tYmluZVJlZHVjZXJzJyk7XG5cbnZhciBfY29tYmluZVJlZHVj
ZXJzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbWJpbmVSZWR1Y2Vycyk7XG5cbnZhciBf
YmluZEFjdGlvbkNyZWF0b3JzID0gcmVxdWlyZSgnLi9iaW5kQWN0aW9uQ3JlYXRvcnMnKTtcblxu
dmFyIF9iaW5kQWN0aW9uQ3JlYXRvcnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYmluZEFj
dGlvbkNyZWF0b3JzKTtcblxudmFyIF9hcHBseU1pZGRsZXdhcmUgPSByZXF1aXJlKCcuL2FwcGx5
TWlkZGxld2FyZScpO1xuXG52YXIgX2FwcGx5TWlkZGxld2FyZTIgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF9hcHBseU1pZGRsZXdhcmUpO1xuXG52YXIgX2NvbXBvc2UgPSByZXF1aXJlKCcuL2Nv
bXBvc2UnKTtcblxudmFyIF9jb21wb3NlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbXBv
c2UpO1xuXG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCcuL3V0aWxzL3dhcm5pbmcnKTtcblxudmFy
IF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcpO1xuXG5mdW5jdGlv
biBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9k
dWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbi8qXG4qIFRoaXMgaXMgYSBkdW1t
eSBmdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbiBhbHRlcmVk
IGJ5IG1pbmlmaWNhdGlvbi5cbiogSWYgdGhlIGZ1bmN0aW9uIGhhcyBiZWVuIG1pbmlmaWVkIGFu
ZCBOT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLCB3YXJuIHRoZSB1c2VyLlxuKi9cbmZ1bmN0aW9u
IGlzQ3J1c2hlZCgpIHt9XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nICYmIHR5cGVvZiBpc0NydXNoZWQubmFtZSA9PT0gJ3N0cmluZycgJiYgaXNDcnVzaGVkLm5h
bWUgIT09ICdpc0NydXNoZWQnKSB7XG4gICgwLCBfd2FybmluZzJbJ2RlZmF1bHQnXSkoJ1lvdSBh
cmUgY3VycmVudGx5IHVzaW5nIG1pbmlmaWVkIGNvZGUgb3V0c2lkZSBvZiBOT0RFX0VOViA9PT0g
XFwncHJvZHVjdGlvblxcJy4gJyArICdUaGlzIG1lYW5zIHRoYXQgeW91IGFyZSBydW5uaW5nIGEg
c2xvd2VyIGRldmVsb3BtZW50IGJ1aWxkIG9mIFJlZHV4LiAnICsgJ1lvdSBjYW4gdXNlIGxvb3Nl
LWVudmlmeSAoaHR0cHM6Ly9naXRodWIuY29tL3plcnRvc2gvbG9vc2UtZW52aWZ5KSBmb3IgYnJv
d3NlcmlmeSAnICsgJ29yIERlZmluZVBsdWdpbiBmb3Igd2VicGFjayAoaHR0cDovL3N0YWNrb3Zl
cmZsb3cuY29tL3F1ZXN0aW9ucy8zMDAzMDAzMSkgJyArICd0byBlbnN1cmUgeW91IGhhdmUgdGhl
IGNvcnJlY3QgY29kZSBmb3IgeW91ciBwcm9kdWN0aW9uIGJ1aWxkLicpO1xufVxuXG5leHBvcnRz
LmNyZWF0ZVN0b3JlID0gX2NyZWF0ZVN0b3JlMlsnZGVmYXVsdCddO1xuZXhwb3J0cy5jb21iaW5l
UmVkdWNlcnMgPSBfY29tYmluZVJlZHVjZXJzMlsnZGVmYXVsdCddO1xuZXhwb3J0cy5iaW5kQWN0
aW9uQ3JlYXRvcnMgPSBfYmluZEFjdGlvbkNyZWF0b3JzMlsnZGVmYXVsdCddO1xuZXhwb3J0cy5h
cHBseU1pZGRsZXdhcmUgPSBfYXBwbHlNaWRkbGV3YXJlMlsnZGVmYXVsdCddO1xuZXhwb3J0cy5j
b21wb3NlID0gX2NvbXBvc2UyWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVkdXgvbGliL2luZGV4LmpzXG4gKiogbW9kdWxl
IGlkID0gMzBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qIVxuICBDb3B5cmlnaHQg
KGMpIDIwMTYgSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChN
SVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8q
IGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5c
dHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuXHRmdW5jdGlvbiBjbGFzc05hbWVz
ICgpIHtcblx0XHR2YXIgY2xhc3NlcyA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBh
cmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5c
dFx0XHRpZiAoIWFyZykgY29udGludWU7XG5cblx0XHRcdHZhciBhcmdUeXBlID0gdHlwZW9mIGFy
ZztcblxuXHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnIHx8IGFyZ1R5cGUgPT09ICdudW1i
ZXInKSB7XG5cdFx0XHRcdGNsYXNzZXMucHVzaChhcmcpO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJh
eS5pc0FycmF5KGFyZykpIHtcblx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGNsYXNzTmFtZXMuYXBwbHko
bnVsbCwgYXJnKSk7XG5cdFx0XHR9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7XG5c
dFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRpZiAoaGFzT3duLmNhbGwo
YXJnLCBrZXkpICYmIGFyZ1trZXldKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2VzLnB1c2goa2V5KTtc
blx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xh
c3Nlcy5qb2luKCcgJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5l
ZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7
XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVm
aW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFz
ICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZp
bmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFt
ZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05h
bWVzO1xuXHR9XG59KCkpO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vY2xhc3NuYW1lcy9pbmRleC5qc1xuICoqIG1vZHVsZSBpZCA9IDMxXG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICogQHR5cGVjaGVja3NcbiAqIFxuICovXG5cbi8qZXNsaW50LWRpc2FibGUgbm8tc2VsZi1j
b21wYXJlICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBpbmxpbmVkIE9iamVjdC5pcyBw
b2x5ZmlsbCB0byBhdm9pZCByZXF1aXJpbmcgY29uc3VtZXJzIHNoaXAgdGhlaXIgb3duXG4gKiBo
dHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1Jl
ZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvaXNcbiAqL1xuZnVuY3Rpb24gaXMoeCwgeSkg
e1xuICAvLyBTYW1lVmFsdWUgYWxnb3JpdGhtXG4gIGlmICh4ID09PSB5KSB7XG4gICAgLy8gU3Rl
cHMgMS01LCA3LTEwXG4gICAgLy8gU3RlcHMgNi5iLTYuZTogKzAgIT0gLTBcbiAgICAvLyBBZGRl
ZCB0aGUgbm9uemVybyB5IGNoZWNrIHRvIG1ha2UgRmxvdyBoYXBweSwgYnV0IGl0IGlzIHJlZHVu
ZGFudFxuICAgIHJldHVybiB4ICE9PSAwIHx8IHkgIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xu
ICB9IGVsc2Uge1xuICAgIC8vIFN0ZXAgNi5hOiBOYU4gPT0gTmFOXG4gICAgcmV0dXJuIHggIT09
IHggJiYgeSAhPT0geTtcbiAgfVxufVxuXG4vKipcbiAqIFBlcmZvcm1zIGVxdWFsaXR5IGJ5IGl0
ZXJhdGluZyB0aHJvdWdoIGtleXMgb24gYW4gb2JqZWN0IGFuZCByZXR1cm5pbmcgZmFsc2VcbiAq
IHdoZW4gYW55IGtleSBoYXMgdmFsdWVzIHdoaWNoIGFyZSBub3Qgc3RyaWN0bHkgZXF1YWwgYmV0
d2VlbiB0aGUgYXJndW1lbnRzLlxuICogUmV0dXJucyB0cnVlIHdoZW4gdGhlIHZhbHVlcyBvZiBh
bGwga2V5cyBhcmUgc3RyaWN0bHkgZXF1YWwuXG4gKi9cbmZ1bmN0aW9uIHNoYWxsb3dFcXVhbChv
YmpBLCBvYmpCKSB7XG4gIGlmIChpcyhvYmpBLCBvYmpCKSkge1xuICAgIHJldHVybiB0cnVlO1xu
ICB9XG5cbiAgaWYgKHR5cGVvZiBvYmpBICE9PSAnb2JqZWN0JyB8fCBvYmpBID09PSBudWxsIHx8
IHR5cGVvZiBvYmpCICE9PSAnb2JqZWN0JyB8fCBvYmpCID09PSBudWxsKSB7XG4gICAgcmV0dXJu
IGZhbHNlO1xuICB9XG5cbiAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMob2JqQSk7XG4gIHZhciBr
ZXlzQiA9IE9iamVjdC5rZXlzKG9iakIpO1xuXG4gIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNC
Lmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIFRlc3QgZm9yIEEncyBr
ZXlzIGRpZmZlcmVudCBmcm9tIEIuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5c0EubGVuZ3Ro
OyBpKyspIHtcbiAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwob2JqQiwga2V5c0FbaV0pIHx8
ICFpcyhvYmpBW2tleXNBW2ldXSwgb2JqQltrZXlzQVtpXV0pKSB7XG4gICAgICByZXR1cm4gZmFs
c2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0g
c2hhbGxvd0VxdWFsO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVS
XG4gKiogLi9+L2ZianMvbGliL3NoYWxsb3dFcXVhbC5qc1xuICoqIG1vZHVsZSBpZCA9IDMyXG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4v
X2Jhc2VHZXRUYWcnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5
cGUnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4v
KiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0VGFn
ID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVm
ZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2Jq
ZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBk
ZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVu
Y1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJv
cGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3Bl
cnR5O1xuXG4vKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovXG52
YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cbi8qKlxu
ICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVj
dCBjcmVhdGVkIGJ5IHRoZVxuICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGggYSBg
W1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBf
XG4gKiBAc2luY2UgMC44LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVl
IFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVl
YCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBs
ZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqIH1cbiAqXG4g
KiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQ
bGFpbk9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5P
YmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzUGxh
aW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0
aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpIHx8
IGJhc2VHZXRUYWcodmFsdWUpICE9IG9iamVjdFRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAg
fVxuICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICBpZiAocHJvdG8gPT09IG51
bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgQ3RvciA9IGhhc093blByb3BlcnR5
LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICByZXR1
cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxu
ICAgIGZ1bmNUb1N0cmluZy5jYWxsKEN0b3IpID09IG9iamVjdEN0b3JTdHJpbmc7XG59XG5cbm1v
ZHVsZS5leHBvcnRzID0gaXNQbGFpbk9iamVjdDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxu
ICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9pc1BsYWluT2JqZWN0LmpzXG4gKiog
bW9kdWxlIGlkID0gMzNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01MYXp5VHJlZSA9
IHJlcXVpcmUoJy4vRE9NTGF6eVRyZWUnKTtcbnZhciBEYW5nZXIgPSByZXF1aXJlKCcuL0Rhbmdl
cicpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21w
b25lbnRUcmVlJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0
SW5zdHJ1bWVudGF0aW9uJyk7XG5cbnZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0
aW9uID0gcmVxdWlyZSgnLi9jcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uJyk7XG52
YXIgc2V0SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9zZXRJbm5lckhUTUwnKTtcbnZhciBzZXRUZXh0
Q29udGVudCA9IHJlcXVpcmUoJy4vc2V0VGV4dENvbnRlbnQnKTtcblxuZnVuY3Rpb24gZ2V0Tm9k
ZUFmdGVyKHBhcmVudE5vZGUsIG5vZGUpIHtcbiAgLy8gU3BlY2lhbCBjYXNlIGZvciB0ZXh0IGNv
bXBvbmVudHMsIHdoaWNoIHJldHVybiBbb3BlbiwgY2xvc2VdIGNvbW1lbnRzXG4gIC8vIGZyb20g
Z2V0SG9zdE5vZGUuXG4gIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgbm9kZSA9IG5v
ZGVbMV07XG4gIH1cbiAgcmV0dXJuIG5vZGUgPyBub2RlLm5leHRTaWJsaW5nIDogcGFyZW50Tm9k
ZS5maXJzdENoaWxkO1xufVxuXG4vKipcbiAqIEluc2VydHMgYGNoaWxkTm9kZWAgYXMgYSBjaGls
ZCBvZiBgcGFyZW50Tm9kZWAgYXQgdGhlIGBpbmRleGAuXG4gKlxuICogQHBhcmFtIHtET01FbGVt
ZW50fSBwYXJlbnROb2RlIFBhcmVudCBub2RlIGluIHdoaWNoIHRvIGluc2VydC5cbiAqIEBwYXJh
bSB7RE9NRWxlbWVudH0gY2hpbGROb2RlIENoaWxkIG5vZGUgdG8gaW5zZXJ0LlxuICogQHBhcmFt
IHtudW1iZXJ9IGluZGV4IEluZGV4IGF0IHdoaWNoIHRvIGluc2VydCB0aGUgY2hpbGQuXG4gKiBA
aW50ZXJuYWxcbiAqL1xudmFyIGluc2VydENoaWxkQXQgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVM
b2NhbEZ1bmN0aW9uKGZ1bmN0aW9uIChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIHJlZmVyZW5jZU5v
ZGUpIHtcbiAgLy8gV2UgcmVseSBleGNsdXNpdmVseSBvbiBgaW5zZXJ0QmVmb3JlKG5vZGUsIG51
bGwpYCBpbnN0ZWFkIG9mIGFsc28gdXNpbmdcbiAgLy8gYGFwcGVuZENoaWxkKG5vZGUpYC4gKFVz
aW5nIGB1bmRlZmluZWRgIGlzIG5vdCBhbGxvd2VkIGJ5IGFsbCBicm93c2VycyBzb1xuICAvLyB3
ZSBhcmUgY2FyZWZ1bCB0byB1c2UgYG51bGxgLilcbiAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUo
Y2hpbGROb2RlLCByZWZlcmVuY2VOb2RlKTtcbn0pO1xuXG5mdW5jdGlvbiBpbnNlcnRMYXp5VHJl
ZUNoaWxkQXQocGFyZW50Tm9kZSwgY2hpbGRUcmVlLCByZWZlcmVuY2VOb2RlKSB7XG4gIERPTUxh
enlUcmVlLmluc2VydFRyZWVCZWZvcmUocGFyZW50Tm9kZSwgY2hpbGRUcmVlLCByZWZlcmVuY2VO
b2RlKTtcbn1cblxuZnVuY3Rpb24gbW92ZUNoaWxkKHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgcmVm
ZXJlbmNlTm9kZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZE5vZGUpKSB7XG4gICAgbW92
ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgY2hpbGROb2RlWzBdLCBjaGlsZE5vZGVbMV0sIHJl
ZmVyZW5jZU5vZGUpO1xuICB9IGVsc2Uge1xuICAgIGluc2VydENoaWxkQXQocGFyZW50Tm9kZSwg
Y2hpbGROb2RlLCByZWZlcmVuY2VOb2RlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVDaGls
ZChwYXJlbnROb2RlLCBjaGlsZE5vZGUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGROb2Rl
KSkge1xuICAgIHZhciBjbG9zaW5nQ29tbWVudCA9IGNoaWxkTm9kZVsxXTtcbiAgICBjaGlsZE5v
ZGUgPSBjaGlsZE5vZGVbMF07XG4gICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBj
aGlsZE5vZGUsIGNsb3NpbmdDb21tZW50KTtcbiAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNs
b3NpbmdDb21tZW50KTtcbiAgfVxuICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZSk7
XG59XG5cbmZ1bmN0aW9uIG1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUsIG9wZW5pbmdDb21t
ZW50LCBjbG9zaW5nQ29tbWVudCwgcmVmZXJlbmNlTm9kZSkge1xuICB2YXIgbm9kZSA9IG9wZW5p
bmdDb21tZW50O1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHZhciBuZXh0Tm9kZSA9IG5vZGUubmV4
dFNpYmxpbmc7XG4gICAgaW5zZXJ0Q2hpbGRBdChwYXJlbnROb2RlLCBub2RlLCByZWZlcmVuY2VO
b2RlKTtcbiAgICBpZiAobm9kZSA9PT0gY2xvc2luZ0NvbW1lbnQpIHtcbiAgICAgIGJyZWFrO1xu
ICAgIH1cbiAgICBub2RlID0gbmV4dE5vZGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGVs
aW1pdGVkVGV4dChwYXJlbnROb2RlLCBzdGFydE5vZGUsIGNsb3NpbmdDb21tZW50KSB7XG4gIHdo
aWxlICh0cnVlKSB7XG4gICAgdmFyIG5vZGUgPSBzdGFydE5vZGUubmV4dFNpYmxpbmc7XG4gICAg
aWYgKG5vZGUgPT09IGNsb3NpbmdDb21tZW50KSB7XG4gICAgICAvLyBUaGUgY2xvc2luZyBjb21t
ZW50IGlzIHJlbW92ZWQgYnkgUmVhY3RNdWx0aUNoaWxkLlxuICAgICAgYnJlYWs7XG4gICAgfSBl
bHNlIHtcbiAgICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgfVxuICB9XG59
XG5cbmZ1bmN0aW9uIHJlcGxhY2VEZWxpbWl0ZWRUZXh0KG9wZW5pbmdDb21tZW50LCBjbG9zaW5n
Q29tbWVudCwgc3RyaW5nVGV4dCkge1xuICB2YXIgcGFyZW50Tm9kZSA9IG9wZW5pbmdDb21tZW50
LnBhcmVudE5vZGU7XG4gIHZhciBub2RlQWZ0ZXJDb21tZW50ID0gb3BlbmluZ0NvbW1lbnQubmV4
dFNpYmxpbmc7XG4gIGlmIChub2RlQWZ0ZXJDb21tZW50ID09PSBjbG9zaW5nQ29tbWVudCkge1xu
ICAgIC8vIFRoZXJlIGFyZSBubyB0ZXh0IG5vZGVzIGJldHdlZW4gdGhlIG9wZW5pbmcgYW5kIGNs
b3NpbmcgY29tbWVudHM7IGluc2VydFxuICAgIC8vIGEgbmV3IG9uZSBpZiBzdHJpbmdUZXh0IGlz
bid0IGVtcHR5LlxuICAgIGlmIChzdHJpbmdUZXh0KSB7XG4gICAgICBpbnNlcnRDaGlsZEF0KHBh
cmVudE5vZGUsIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cmluZ1RleHQpLCBub2RlQWZ0ZXJD
b21tZW50KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHN0cmluZ1RleHQpIHtcbiAgICAg
IC8vIFNldCB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBmaXJzdCBub2RlIGFmdGVyIHRoZSBvcGVu
aW5nIGNvbW1lbnQsIGFuZFxuICAgICAgLy8gcmVtb3ZlIGFsbCBmb2xsb3dpbmcgbm9kZXMgdXAg
dW50aWwgdGhlIGNsb3NpbmcgY29tbWVudC5cbiAgICAgIHNldFRleHRDb250ZW50KG5vZGVBZnRl
ckNvbW1lbnQsIHN0cmluZ1RleHQpO1xuICAgICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnRO
b2RlLCBub2RlQWZ0ZXJDb21tZW50LCBjbG9zaW5nQ29tbWVudCk7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIHJlbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgb3BlbmluZ0NvbW1lbnQsIGNsb3Np
bmdDb21tZW50KTtcbiAgICB9XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhv
c3RPcGVyYXRpb24oe1xuICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdl
dEluc3RhbmNlRnJvbU5vZGUob3BlbmluZ0NvbW1lbnQpLl9kZWJ1Z0lELFxuICAgICAgdHlwZTog
J3JlcGxhY2UgdGV4dCcsXG4gICAgICBwYXlsb2FkOiBzdHJpbmdUZXh0XG4gICAgfSk7XG4gIH1c
bn1cblxudmFyIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwID0gRGFuZ2VyLmRhbmdl
cm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAgPSBm
dW5jdGlvbiAob2xkQ2hpbGQsIG1hcmt1cCwgcHJldkluc3RhbmNlKSB7XG4gICAgRGFuZ2VyLmRh
bmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKG9sZENoaWxkLCBtYXJrdXApO1xuICAgIGlm
IChwcmV2SW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICBpbnN0YW5jZUlEOiBwcmV2
SW5zdGFuY2UuX2RlYnVnSUQsXG4gICAgICAgIHR5cGU6ICdyZXBsYWNlIHdpdGgnLFxuICAgICAg
ICBwYXlsb2FkOiBtYXJrdXAudG9TdHJpbmcoKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIHZhciBuZXh0SW5zdGFuY2UgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VG
cm9tTm9kZShtYXJrdXAubm9kZSk7XG4gICAgICBpZiAobmV4dEluc3RhbmNlLl9kZWJ1Z0lEICE9
PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVy
YXRpb24oe1xuICAgICAgICAgIGluc3RhbmNlSUQ6IG5leHRJbnN0YW5jZS5fZGVidWdJRCxcbiAg
ICAgICAgICB0eXBlOiAnbW91bnQnLFxuICAgICAgICAgIHBheWxvYWQ6IG1hcmt1cC50b1N0cmlu
ZygpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBPcGVy
YXRpb25zIGZvciB1cGRhdGluZyB3aXRoIERPTSBjaGlsZHJlbi5cbiAqL1xudmFyIERPTUNoaWxk
cmVuT3BlcmF0aW9ucyA9IHtcbiAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGRh
bmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwLFxuXG4gIHJlcGxhY2VEZWxpbWl0ZWRUZXh0
OiByZXBsYWNlRGVsaW1pdGVkVGV4dCxcblxuICAvKipcbiAgICogVXBkYXRlcyBhIGNvbXBvbmVu
dCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJpZXMgb2YgdXBkYXRlcy4gVGhlXG4gICAq
IHVwZGF0ZSBjb25maWd1cmF0aW9ucyBhcmUgZWFjaCBleHBlY3RlZCB0byBoYXZlIGEgYHBhcmVu
dE5vZGVgIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PG9iamVjdD59IHVwZGF0
ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9c
biAgcHJvY2Vzc1VwZGF0ZXM6IGZ1bmN0aW9uIChwYXJlbnROb2RlLCB1cGRhdGVzKSB7XG4gICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBw
YXJlbnROb2RlRGVidWdJRCA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21O
b2RlKHBhcmVudE5vZGUpLl9kZWJ1Z0lEO1xuICAgIH1cblxuICAgIGZvciAodmFyIGsgPSAwOyBr
IDwgdXBkYXRlcy5sZW5ndGg7IGsrKykge1xuICAgICAgdmFyIHVwZGF0ZSA9IHVwZGF0ZXNba107
XG4gICAgICBzd2l0Y2ggKHVwZGF0ZS50eXBlKSB7XG4gICAgICAgIGNhc2UgJ0lOU0VSVF9NQVJL
VVAnOlxuICAgICAgICAgIGluc2VydExhenlUcmVlQ2hpbGRBdChwYXJlbnROb2RlLCB1cGRhdGUu
Y29udGVudCwgZ2V0Tm9kZUFmdGVyKHBhcmVudE5vZGUsIHVwZGF0ZS5hZnRlck5vZGUpKTtcbiAg
ICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
ICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7
XG4gICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELFxuICAgICAgICAg
ICAgICB0eXBlOiAnaW5zZXJ0IGNoaWxkJyxcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAg
ICAgICAgICAgICAgIHRvSW5kZXg6IHVwZGF0ZS50b0luZGV4LFxuICAgICAgICAgICAgICAgIGNv
bnRlbnQ6IHVwZGF0ZS5jb250ZW50LnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgfVxuICAgICAg
ICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdN
T1ZFX0VYSVNUSU5HJzpcbiAgICAgICAgICBtb3ZlQ2hpbGQocGFyZW50Tm9kZSwgdXBkYXRlLmZy
b21Ob2RlLCBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwgdXBkYXRlLmFmdGVyTm9kZSkpO1xuICAg
ICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtc
biAgICAgICAgICAgICAgaW5zdGFuY2VJRDogcGFyZW50Tm9kZURlYnVnSUQsXG4gICAgICAgICAg
ICAgIHR5cGU6ICdtb3ZlIGNoaWxkJyxcbiAgICAgICAgICAgICAgcGF5bG9hZDogeyBmcm9tSW5k
ZXg6IHVwZGF0ZS5mcm9tSW5kZXgsIHRvSW5kZXg6IHVwZGF0ZS50b0luZGV4IH1cbiAgICAgICAg
ICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnU0VU
X01BUktVUCc6XG4gICAgICAgICAgc2V0SW5uZXJIVE1MKHBhcmVudE5vZGUsIHVwZGF0ZS5jb250
ZW50KTtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9w
ZXJhdGlvbih7XG4gICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELFxu
ICAgICAgICAgICAgICB0eXBlOiAncmVwbGFjZSBjaGlsZHJlbicsXG4gICAgICAgICAgICAgIHBh
eWxvYWQ6IHVwZGF0ZS5jb250ZW50LnRvU3RyaW5nKClcbiAgICAgICAgICAgIH0pO1xuICAgICAg
ICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnVEVYVF9DT05URU5UJzpcbiAg
ICAgICAgICBzZXRUZXh0Q29udGVudChwYXJlbnROb2RlLCB1cGRhdGUuY29udGVudCk7XG4gICAg
ICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
ICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xu
ICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCxcbiAgICAgICAgICAg
ICAgdHlwZTogJ3JlcGxhY2UgdGV4dCcsXG4gICAgICAgICAgICAgIHBheWxvYWQ6IHVwZGF0ZS5j
b250ZW50LnRvU3RyaW5nKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAg
ICBicmVhaztcbiAgICAgICAgY2FzZSAnUkVNT1ZFX05PREUnOlxuICAgICAgICAgIHJlbW92ZUNo
aWxkKHBhcmVudE5vZGUsIHVwZGF0ZS5mcm9tTm9kZSk7XG4gICAgICAgICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICAgICAgICBpbnN0
YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCxcbiAgICAgICAgICAgICAgdHlwZTogJ3JlbW92ZSBj
aGlsZCcsXG4gICAgICAgICAgICAgIHBheWxvYWQ6IHsgZnJvbUluZGV4OiB1cGRhdGUuZnJvbUlu
ZGV4IH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAg
ICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRE9NQ2hpbGRyZW5PcGVy
YXRpb25zO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LWRvbS9saWIvRE9NQ2hpbGRyZW5PcGVyYXRpb25zLmpzXG4gKiogbW9kdWxlIGlk
ID0gMzRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01OYW1lc3BhY2VzID0ge1xuICBo
dG1sOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsXG4gIG1hdGhtbDogJ2h0dHA6Ly93
d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnLFxuICBzdmc6ICdodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2Zydcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRE9NTmFtZXNwYWNlcztcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGli
L0RPTU5hbWVzcGFjZXMuanNcbiAqKiBtb2R1bGUgaWQgPSAzNVxuICoqIG1vZHVsZSBjaHVua3Mg
PSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBz
dHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFy
aWFudCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7
XG5cbi8qKlxuICogSW5qZWN0YWJsZSBvcmRlcmluZyBvZiBldmVudCBwbHVnaW5zLlxuICovXG52
YXIgZXZlbnRQbHVnaW5PcmRlciA9IG51bGw7XG5cbi8qKlxuICogSW5qZWN0YWJsZSBtYXBwaW5n
IGZyb20gbmFtZXMgdG8gZXZlbnQgcGx1Z2luIG1vZHVsZXMuXG4gKi9cbnZhciBuYW1lc1RvUGx1
Z2lucyA9IHt9O1xuXG4vKipcbiAqIFJlY29tcHV0ZXMgdGhlIHBsdWdpbiBsaXN0IHVzaW5nIHRo
ZSBpbmplY3RlZCBwbHVnaW5zIGFuZCBwbHVnaW4gb3JkZXJpbmcuXG4gKlxuICogQHByaXZhdGVc
biAqL1xuZnVuY3Rpb24gcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKSB7XG4gIGlmICghZXZlbnRQ
bHVnaW5PcmRlcikge1xuICAgIC8vIFdhaXQgdW50aWwgYW4gYGV2ZW50UGx1Z2luT3JkZXJgIGlz
IGluamVjdGVkLlxuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKHZhciBwbHVnaW5OYW1lIGluIG5h
bWVzVG9QbHVnaW5zKSB7XG4gICAgdmFyIHBsdWdpbk1vZHVsZSA9IG5hbWVzVG9QbHVnaW5zW3Bs
dWdpbk5hbWVdO1xuICAgIHZhciBwbHVnaW5JbmRleCA9IGV2ZW50UGx1Z2luT3JkZXIuaW5kZXhP
ZihwbHVnaW5OYW1lKTtcbiAgICAhKHBsdWdpbkluZGV4ID4gLTEpID8gcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVn
aXN0cnk6IENhbm5vdCBpbmplY3QgZXZlbnQgcGx1Z2lucyB0aGF0IGRvIG5vdCBleGlzdCBpbiB0
aGUgcGx1Z2luIG9yZGVyaW5nLCBgJXNgLicsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQo
Jzk2JywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7XG4gICAgaWYgKEV2ZW50UGx1Z2luUmVnaXN0cnku
cGx1Z2luc1twbHVnaW5JbmRleF0pIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICAhcGx1
Z2luTW9kdWxlLmV4dHJhY3RFdmVudHMgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogRXZlbnQgcGx1
Z2lucyBtdXN0IGltcGxlbWVudCBhbiBgZXh0cmFjdEV2ZW50c2AgbWV0aG9kLCBidXQgYCVzYCBk
b2VzIG5vdC4nLCBwbHVnaW5OYW1lKSA6IF9wcm9kSW52YXJpYW50KCc5NycsIHBsdWdpbk5hbWUp
IDogdm9pZCAwO1xuICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2luc1twbHVnaW5JbmRleF0g
PSBwbHVnaW5Nb2R1bGU7XG4gICAgdmFyIHB1Ymxpc2hlZEV2ZW50cyA9IHBsdWdpbk1vZHVsZS5l
dmVudFR5cGVzO1xuICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBwdWJsaXNoZWRFdmVudHMpIHtc
biAgICAgICFwdWJsaXNoRXZlbnRGb3JQbHVnaW4ocHVibGlzaGVkRXZlbnRzW2V2ZW50TmFtZV0s
IHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBGYWlsZWQg
dG8gcHVibGlzaCBldmVudCBgJXNgIGZvciBwbHVnaW4gYCVzYC4nLCBldmVudE5hbWUsIHBsdWdp
bk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk4JywgZXZlbnROYW1lLCBwbHVnaW5OYW1lKSA6IHZv
aWQgMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBQdWJsaXNoZXMgYW4gZXZlbnQgc28gdGhh
dCBpdCBjYW4gYmUgZGlzcGF0Y2hlZCBieSB0aGUgc3VwcGxpZWQgcGx1Z2luLlxuICpcbiAqIEBw
YXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBEaXNwYXRjaCBjb25maWd1cmF0aW9uIGZvciB0
aGUgZXZlbnQuXG4gKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9kdWxlIFBsdWdpbiBwdWJsaXNo
aW5nIHRoZSBldmVudC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGV2ZW50IHdh
cyBzdWNjZXNzZnVsbHkgcHVibGlzaGVkLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gcHVi
bGlzaEV2ZW50Rm9yUGx1Z2luKGRpc3BhdGNoQ29uZmlnLCBwbHVnaW5Nb2R1bGUsIGV2ZW50TmFt
ZSkge1xuICAhIUV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLmhh
c093blByb3BlcnR5KGV2ZW50TmFtZSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5IdWI6IE1vcmUgdGhhbiBvbmUg
cGx1Z2luIGF0dGVtcHRlZCB0byBwdWJsaXNoIHRoZSBzYW1lIGV2ZW50IG5hbWUsIGAlc2AuJywg
ZXZlbnROYW1lKSA6IF9wcm9kSW52YXJpYW50KCc5OScsIGV2ZW50TmFtZSkgOiB2b2lkIDA7XG4g
IEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzW2V2ZW50TmFtZV0g
PSBkaXNwYXRjaENvbmZpZztcblxuICB2YXIgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMgPSBkaXNw
YXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztcbiAgaWYgKHBoYXNlZFJlZ2lzdHJh
dGlvbk5hbWVzKSB7XG4gICAgZm9yICh2YXIgcGhhc2VOYW1lIGluIHBoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzKSB7XG4gICAgICBpZiAocGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVy
dHkocGhhc2VOYW1lKSkge1xuICAgICAgICB2YXIgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZSA9IHBo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3BoYXNlTmFtZV07XG4gICAgICAgIHB1Ymxpc2hSZWdpc3Ry
YXRpb25OYW1lKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1l
KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoZGlzcGF0
Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1l
KGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1l
KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICog
UHVibGlzaGVzIGEgcmVnaXN0cmF0aW9uIG5hbWUgdGhhdCBpcyB1c2VkIHRvIGlkZW50aWZ5IGRp
c3BhdGNoZWQgZXZlbnRzIGFuZFxuICogY2FuIGJlIHVzZWQgd2l0aCBgRXZlbnRQbHVnaW5IdWIu
cHV0TGlzdGVuZXJgIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy5cbiAqXG4gKiBAcGFyYW0ge3N0cmlu
Z30gcmVnaXN0cmF0aW9uTmFtZSBSZWdpc3RyYXRpb24gbmFtZSB0byBhZGQuXG4gKiBAcGFyYW0g
e29iamVjdH0gUGx1Z2luTW9kdWxlIFBsdWdpbiBwdWJsaXNoaW5nIHRoZSBldmVudC5cbiAqIEBw
cml2YXRlXG4gKi9cbmZ1bmN0aW9uIHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lKHJlZ2lzdHJhdGlv
bk5hbWUsIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSB7XG4gICEhRXZlbnRQbHVnaW5SZWdpc3Ry
eS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXSA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdp
bkh1YjogTW9yZSB0aGFuIG9uZSBwbHVnaW4gYXR0ZW1wdGVkIHRvIHB1Ymxpc2ggdGhlIHNhbWUg
cmVnaXN0cmF0aW9uIG5hbWUsIGAlc2AuJywgcmVnaXN0cmF0aW9uTmFtZSkgOiBfcHJvZEludmFy
aWFudCgnMTAwJywgcmVnaXN0cmF0aW9uTmFtZSkgOiB2b2lkIDA7XG4gIEV2ZW50UGx1Z2luUmVn
aXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV0gPSBwbHVnaW5N
b2R1bGU7XG4gIEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2ll
c1tyZWdpc3RyYXRpb25OYW1lXSA9IHBsdWdpbk1vZHVsZS5ldmVudFR5cGVzW2V2ZW50TmFtZV0u
ZGVwZW5kZW5jaWVzO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgdmFyIGxvd2VyQ2FzZWROYW1lID0gcmVnaXN0cmF0aW9uTmFtZS50b0xvd2Vy
Q2FzZSgpO1xuICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucG9zc2libGVSZWdpc3RyYXRpb25OYW1l
c1tsb3dlckNhc2VkTmFtZV0gPSByZWdpc3RyYXRpb25OYW1lO1xuXG4gICAgaWYgKHJlZ2lzdHJh
dGlvbk5hbWUgPT09ICdvbkRvdWJsZUNsaWNrJykge1xuICAgICAgRXZlbnRQbHVnaW5SZWdpc3Ry
eS5wb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzLm9uZGJsY2xpY2sgPSByZWdpc3RyYXRpb25OYW1l
O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBwbHVnaW5zIHNvIHRoYXQgdGhl
eSBjYW4gZXh0cmFjdCBhbmQgZGlzcGF0Y2ggZXZlbnRzLlxuICpcbiAqIEBzZWUge0V2ZW50UGx1
Z2luSHVifVxuICovXG52YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IHtcbiAgLyoqXG4gICAqIE9y
ZGVyZWQgbGlzdCBvZiBpbmplY3RlZCBwbHVnaW5zLlxuICAgKi9cbiAgcGx1Z2luczogW10sXG5c
biAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBldmVudCBuYW1lIHRvIGRpc3BhdGNoIGNvbmZpZ1xu
ICAgKi9cbiAgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOiB7fSxcblxuICAvKipcbiAgICogTWFw
cGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIHBsdWdpbiBtb2R1bGVcbiAgICovXG4gIHJl
Z2lzdHJhdGlvbk5hbWVNb2R1bGVzOiB7fSxcblxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIHJl
Z2lzdHJhdGlvbiBuYW1lIHRvIGV2ZW50IG5hbWVcbiAgICovXG4gIHJlZ2lzdHJhdGlvbk5hbWVE
ZXBlbmRlbmNpZXM6IHt9LFxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gbG93ZXJjYXNlIHJl
Z2lzdHJhdGlvbiBuYW1lcyB0byB0aGUgcHJvcGVybHkgY2FzZWQgdmVyc2lvbixcbiAgICogdXNl
ZCB0byB3YXJuIGluIHRoZSBjYXNlIG9mIG1pc3NpbmcgZXZlbnQgaGFuZGxlcnMuIEF2YWlsYWJs
ZVxuICAgKiBvbmx5IGluIF9fREVWX18uXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBw
b3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8ge30gOiBudWxsLFxuICAvLyBUcnVzdCB0aGUgZGV2ZWxvcGVyIHRvIG9ubHkgdXNl
IHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMgaW4gX19ERVZfX1xuXG4gIC8qKlxuICAgKiBJbmpl
Y3RzIGFuIG9yZGVyaW5nIG9mIHBsdWdpbnMgKGJ5IHBsdWdpbiBuYW1lKS4gVGhpcyBhbGxvd3Mg
dGhlIG9yZGVyaW5nXG4gICAqIHRvIGJlIGRlY291cGxlZCBmcm9tIGluamVjdGlvbiBvZiB0aGUg
YWN0dWFsIHBsdWdpbnMgc28gdGhhdCBvcmRlcmluZyBpc1xuICAgKiBhbHdheXMgZGV0ZXJtaW5p
c3RpYyByZWdhcmRsZXNzIG9mIHBhY2thZ2luZywgb24tdGhlLWZseSBpbmplY3Rpb24sIGV0Yy5c
biAgICpcbiAgICogQHBhcmFtIHthcnJheX0gSW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyXG4gICAq
IEBpbnRlcm5hbFxuICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24uaW5qZWN0RXZl
bnRQbHVnaW5PcmRlcn1cbiAgICovXG4gIGluamVjdEV2ZW50UGx1Z2luT3JkZXI6IGZ1bmN0aW9u
IChpbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIpIHtcbiAgICAhIWV2ZW50UGx1Z2luT3JkZXIgPyBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
RXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90IGluamVjdCBldmVudCBwbHVnaW4gb3JkZXJpbmcg
bW9yZSB0aGFuIG9uY2UuIFlvdSBhcmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIG1vcmUgdGhhbiBv
bmUgY29weSBvZiBSZWFjdC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMDEnKSA6IHZvaWQgMDtcbiAg
ICAvLyBDbG9uZSB0aGUgb3JkZXJpbmcgc28gaXQgY2Fubm90IGJlIGR5bmFtaWNhbGx5IG11dGF0
ZWQuXG4gICAgZXZlbnRQbHVnaW5PcmRlciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGlu
amVjdGVkRXZlbnRQbHVnaW5PcmRlcik7XG4gICAgcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKTtc
biAgfSxcblxuICAvKipcbiAgICogSW5qZWN0cyBwbHVnaW5zIHRvIGJlIHVzZWQgYnkgYEV2ZW50
UGx1Z2luSHViYC4gVGhlIHBsdWdpbiBuYW1lcyBtdXN0IGJlXG4gICAqIGluIHRoZSBvcmRlcmlu
ZyBpbmplY3RlZCBieSBgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcmAuXG4gICAqXG4gICAqIFBsdWdp
bnMgY2FuIGJlIGluamVjdGVkIGFzIHBhcnQgb2YgcGFnZSBpbml0aWFsaXphdGlvbiBvciBvbi10
aGUtZmx5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5qZWN0ZWROYW1lc1RvUGx1Z2lu
cyBNYXAgZnJvbSBuYW1lcyB0byBwbHVnaW4gbW9kdWxlcy5cbiAgICogQGludGVybmFsXG4gICAq
IEBzZWUge0V2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWV9
XG4gICAqL1xuICBpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6IGZ1bmN0aW9uIChpbmplY3RlZE5h
bWVzVG9QbHVnaW5zKSB7XG4gICAgdmFyIGlzT3JkZXJpbmdEaXJ0eSA9IGZhbHNlO1xuICAgIGZv
ciAodmFyIHBsdWdpbk5hbWUgaW4gaW5qZWN0ZWROYW1lc1RvUGx1Z2lucykge1xuICAgICAgaWYg
KCFpbmplY3RlZE5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBsdWdpbk5hbWUpKSB7XG4g
ICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIHBsdWdpbk1vZHVsZSA9IGluamVj
dGVkTmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07XG4gICAgICBpZiAoIW5hbWVzVG9QbHVnaW5z
Lmhhc093blByb3BlcnR5KHBsdWdpbk5hbWUpIHx8IG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVd
ICE9PSBwbHVnaW5Nb2R1bGUpIHtcbiAgICAgICAgISFuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1l
XSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5qZWN0IHR3byBkaWZmZXJlbnQgZXZl
bnQgcGx1Z2lucyB1c2luZyB0aGUgc2FtZSBuYW1lLCBgJXNgLicsIHBsdWdpbk5hbWUpIDogX3By
b2RJbnZhcmlhbnQoJzEwMicsIHBsdWdpbk5hbWUpIDogdm9pZCAwO1xuICAgICAgICBuYW1lc1Rv
UGx1Z2luc1twbHVnaW5OYW1lXSA9IHBsdWdpbk1vZHVsZTtcbiAgICAgICAgaXNPcmRlcmluZ0Rp
cnR5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzT3JkZXJpbmdEaXJ0eSkge1xu
ICAgICAgcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIExvb2tzIHVwIHRoZSBwbHVnaW4gZm9yIHRoZSBzdXBwbGllZCBldmVudC5cbiAgICpcbiAg
ICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IEEgc3ludGhldGljIGV2ZW50LlxuICAgKiBAcmV0dXJu
IHs/b2JqZWN0fSBUaGUgcGx1Z2luIHRoYXQgY3JlYXRlZCB0aGUgc3VwcGxpZWQgZXZlbnQuXG4g
ICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQ6IGZ1bmN0aW9u
IChldmVudCkge1xuICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IGV2ZW50LmRpc3BhdGNoQ29uZmln
O1xuICAgIGlmIChkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgICByZXR1
cm4gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tkaXNwYXRjaENv
bmZpZy5yZWdpc3RyYXRpb25OYW1lXSB8fCBudWxsO1xuICAgIH1cbiAgICBpZiAoZGlzcGF0Y2hD
b25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8g
cHVsbGluZyBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyBvdXQgb2YgZGlzcGF0Y2hDb25maWcgaGVs
cHMgRmxvdyBzZWVcbiAgICAgIC8vIHRoYXQgaXQgaXMgbm90IHVuZGVmaW5lZC5cbiAgICAgIHZh
ciBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyA9IGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJh
dGlvbk5hbWVzO1xuXG4gICAgICBmb3IgKHZhciBwaGFzZSBpbiBwaGFzZWRSZWdpc3RyYXRpb25O
YW1lcykge1xuICAgICAgICBpZiAoIXBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3Bl
cnR5KHBoYXNlKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZh
ciBwbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1
bGVzW3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3BoYXNlXV07XG4gICAgICAgIGlmIChwbHVnaW5N
b2R1bGUpIHtcbiAgICAgICAgICByZXR1cm4gcGx1Z2luTW9kdWxlO1xuICAgICAgICB9XG4gICAg
ICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBFeHBvc2Vk
IGZvciB1bml0IHRlc3RpbmcuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcmVzZXRFdmVudFBs
dWdpbnM6IGZ1bmN0aW9uICgpIHtcbiAgICBldmVudFBsdWdpbk9yZGVyID0gbnVsbDtcbiAgICBm
b3IgKHZhciBwbHVnaW5OYW1lIGluIG5hbWVzVG9QbHVnaW5zKSB7XG4gICAgICBpZiAobmFtZXNU
b1BsdWdpbnMuaGFzT3duUHJvcGVydHkocGx1Z2luTmFtZSkpIHtcbiAgICAgICAgZGVsZXRlIG5h
bWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgICBFdmVudFBsdWdp
blJlZ2lzdHJ5LnBsdWdpbnMubGVuZ3RoID0gMDtcblxuICAgIHZhciBldmVudE5hbWVEaXNwYXRj
aENvbmZpZ3MgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncztc
biAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzKSB7XG4g
ICAgICBpZiAoZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KGV2ZW50TmFt
ZSkpIHtcbiAgICAgICAgZGVsZXRlIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tldmVudE5hbWVd
O1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZWdpc3RyYXRpb25OYW1lTW9kdWxlcyA9IEV2
ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM7XG4gICAgZm9yICh2YXIg
cmVnaXN0cmF0aW9uTmFtZSBpbiByZWdpc3RyYXRpb25OYW1lTW9kdWxlcykge1xuICAgICAgaWYg
KHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHJlZ2lzdHJhdGlvbk5hbWUp
KSB7XG4gICAgICAgIGRlbGV0ZSByZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25O
YW1lXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMgPSBF
dmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXM7XG4gICAgICBmb3Ig
KHZhciBsb3dlckNhc2VkTmFtZSBpbiBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4gICAg
ICAgIGlmIChwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KGxvd2VyQ2Fz
ZWROYW1lKSkge1xuICAgICAgICAgIGRlbGV0ZSBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzW2xv
d2VyQ2FzZWROYW1lXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxubW9k
dWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5O1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvRXZlbnRQbHVnaW5S
ZWdpc3RyeS5qc1xuICoqIG1vZHVsZSBpZCA9IDM2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAq
Ki8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52
YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52
YXIgUmVhY3RFcnJvclV0aWxzID0gcmVxdWlyZSgnLi9SZWFjdEVycm9yVXRpbHMnKTtcblxudmFy
IGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcg
PSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8qKlxuICogSW5qZWN0ZWQgZGVwZW5k
ZW5jaWVzOlxuICovXG5cbi8qKlxuICogLSBgQ29tcG9uZW50VHJlZWA6IFtyZXF1aXJlZF0gTW9k
dWxlIHRoYXQgY2FuIGNvbnZlcnQgYmV0d2VlbiBSZWFjdCBpbnN0YW5jZXNcbiAqICAgYW5kIGFj
dHVhbCBub2RlIHJlZmVyZW5jZXMuXG4gKi9cbnZhciBDb21wb25lbnRUcmVlO1xudmFyIFRyZWVU
cmF2ZXJzYWw7XG52YXIgaW5qZWN0aW9uID0ge1xuICBpbmplY3RDb21wb25lbnRUcmVlOiBmdW5j
dGlvbiAoSW5qZWN0ZWQpIHtcbiAgICBDb21wb25lbnRUcmVlID0gSW5qZWN0ZWQ7XG4gICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKEluamVjdGVkICYmIEluamVj
dGVkLmdldE5vZGVGcm9tSW5zdGFuY2UgJiYgSW5qZWN0ZWQuZ2V0SW5zdGFuY2VGcm9tTm9kZSwg
J0V2ZW50UGx1Z2luVXRpbHMuaW5qZWN0aW9uLmluamVjdENvbXBvbmVudFRyZWUoLi4uKTogSW5q
ZWN0ZWQgJyArICdtb2R1bGUgaXMgbWlzc2luZyBnZXROb2RlRnJvbUluc3RhbmNlIG9yIGdldElu
c3RhbmNlRnJvbU5vZGUuJykgOiB2b2lkIDA7XG4gICAgfVxuICB9LFxuICBpbmplY3RUcmVlVHJh
dmVyc2FsOiBmdW5jdGlvbiAoSW5qZWN0ZWQpIHtcbiAgICBUcmVlVHJhdmVyc2FsID0gSW5qZWN0
ZWQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKEluamVj
dGVkICYmIEluamVjdGVkLmlzQW5jZXN0b3IgJiYgSW5qZWN0ZWQuZ2V0TG93ZXN0Q29tbW9uQW5j
ZXN0b3IsICdFdmVudFBsdWdpblV0aWxzLmluamVjdGlvbi5pbmplY3RUcmVlVHJhdmVyc2FsKC4u
Lik6IEluamVjdGVkICcgKyAnbW9kdWxlIGlzIG1pc3NpbmcgaXNBbmNlc3RvciBvciBnZXRMb3dl
c3RDb21tb25BbmNlc3Rvci4nKSA6IHZvaWQgMDtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9u
IGlzRW5kaXNoKHRvcExldmVsVHlwZSkge1xuICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9w
TW91c2VVcCcgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hFbmQnIHx8IHRvcExldmVsVHlw
ZSA9PT0gJ3RvcFRvdWNoQ2FuY2VsJztcbn1cblxuZnVuY3Rpb24gaXNNb3ZlaXNoKHRvcExldmVs
VHlwZSkge1xuICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VNb3ZlJyB8fCB0b3BM
ZXZlbFR5cGUgPT09ICd0b3BUb3VjaE1vdmUnO1xufVxuZnVuY3Rpb24gaXNTdGFydGlzaCh0b3BM
ZXZlbFR5cGUpIHtcbiAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlRG93bicgfHwg
dG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hTdGFydCc7XG59XG5cbnZhciB2YWxpZGF0ZUV2ZW50
RGlzcGF0Y2hlcztcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFy
IGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuICAgIHZhciBk
aXNwYXRjaEluc3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcztcblxuICAgIHZhciBs
aXN0ZW5lcnNJc0FyciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpO1xuICAgIHZh
ciBsaXN0ZW5lcnNMZW4gPSBsaXN0ZW5lcnNJc0FyciA/IGRpc3BhdGNoTGlzdGVuZXJzLmxlbmd0
aCA6IGRpc3BhdGNoTGlzdGVuZXJzID8gMSA6IDA7XG5cbiAgICB2YXIgaW5zdGFuY2VzSXNBcnIg
PSBBcnJheS5pc0FycmF5KGRpc3BhdGNoSW5zdGFuY2VzKTtcbiAgICB2YXIgaW5zdGFuY2VzTGVu
ID0gaW5zdGFuY2VzSXNBcnIgPyBkaXNwYXRjaEluc3RhbmNlcy5sZW5ndGggOiBkaXNwYXRjaElu
c3RhbmNlcyA/IDEgOiAwO1xuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoaW5zdGFuY2VzSXNBcnIgPT09IGxpc3RlbmVyc0lzQXJyICYmIGluc3Rh
bmNlc0xlbiA9PT0gbGlzdGVuZXJzTGVuLCAnRXZlbnRQbHVnaW5VdGlsczogSW52YWxpZCBgZXZl
bnRgLicpIDogdm9pZCAwO1xuICB9O1xufVxuXG4vKipcbiAqIERpc3BhdGNoIHRoZSBldmVudCB0
byB0aGUgbGlzdGVuZXIuXG4gKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBldmVudCBTeW50aGV0
aWNFdmVudCB0byBoYW5kbGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2ltdWxhdGVkIElmIHRoZSBl
dmVudCBpcyBzaW11bGF0ZWQgKGNoYW5nZXMgZXhuIGJlaGF2aW9yKVxuICogQHBhcmFtIHtmdW5j
dGlvbn0gbGlzdGVuZXIgQXBwbGljYXRpb24tbGV2ZWwgY2FsbGJhY2tcbiAqIEBwYXJhbSB7Kn0g
aW5zdCBJbnRlcm5hbCBjb21wb25lbnQgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURp
c3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGxpc3RlbmVyLCBpbnN0KSB7XG4gIHZhciB0eXBlID0g
ZXZlbnQudHlwZSB8fCAndW5rbm93bi1ldmVudCc7XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBF
dmVudFBsdWdpblV0aWxzLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG4gIGlmIChzaW11bGF0
ZWQpIHtcbiAgICBSZWFjdEVycm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNo
KHR5cGUsIGxpc3RlbmVyLCBldmVudCk7XG4gIH0gZWxzZSB7XG4gICAgUmVhY3RFcnJvclV0aWxz
Lmludm9rZUd1YXJkZWRDYWxsYmFjayh0eXBlLCBsaXN0ZW5lciwgZXZlbnQpO1xuICB9XG4gIGV2
ZW50LmN1cnJlbnRUYXJnZXQgPSBudWxsO1xufVxuXG4vKipcbiAqIFN0YW5kYXJkL3NpbXBsZSBp
dGVyYXRpb24gdGhyb3VnaCBhbiBldmVudCdzIGNvbGxlY3RlZCBkaXNwYXRjaGVzLlxuICovXG5m
dW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZXZlbnQsIHNpbXVsYXRlZCkge1xuICB2
YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG4gIHZhciBk
aXNwYXRjaEluc3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcztcbiAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YWxpZGF0ZUV2ZW50RGlz
cGF0Y2hlcyhldmVudCk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5l
cnMpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwYXRjaExpc3RlbmVycy5sZW5ndGg7
IGkrKykge1xuICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAg
ICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBMaXN0ZW5lcnMgYW5kIEluc3RhbmNlcyBhcmUg
dHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMgaW4gc3luYy5cbiAgICAgIGV4ZWN1
dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBkaXNwYXRjaExpc3RlbmVyc1tpXSwgZGlzcGF0
Y2hJbnN0YW5jZXNbaV0pO1xuICAgIH1cbiAgfSBlbHNlIGlmIChkaXNwYXRjaExpc3RlbmVycykg
e1xuICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBkaXNwYXRjaExpc3RlbmVy
cywgZGlzcGF0Y2hJbnN0YW5jZXMpO1xuICB9XG4gIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9
IG51bGw7XG4gIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7XG59XG5cbi8qKlxuICog
U3RhbmRhcmQvc2ltcGxlIGl0ZXJhdGlvbiB0aHJvdWdoIGFuIGV2ZW50J3MgY29sbGVjdGVkIGRp
c3BhdGNoZXMsIGJ1dCBzdG9wc1xuICogYXQgdGhlIGZpcnN0IGRpc3BhdGNoIGV4ZWN1dGlvbiBy
ZXR1cm5pbmcgdHJ1ZSwgYW5kIHJldHVybnMgdGhhdCBpZC5cbiAqXG4gKiBAcmV0dXJuIHs/c3Ry
aW5nfSBpZCBvZiB0aGUgZmlyc3QgZGlzcGF0Y2ggZXhlY3V0aW9uIHdobydzIGxpc3RlbmVyIHJl
dHVybnNcbiAqIHRydWUsIG9yIG51bGwgaWYgbm8gbGlzdGVuZXIgcmV0dXJuZWQgdHJ1ZS5cbiAq
L1xuZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGwoZXZlbnQp
IHtcbiAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xu
ICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXM7XG4gIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFsaWRhdGVF
dmVudERpc3BhdGNoZXMoZXZlbnQpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KGRpc3BhdGNo
TGlzdGVuZXJzKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlzcGF0Y2hMaXN0ZW5lcnMu
bGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7
XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gTGlzdGVuZXJzIGFuZCBJbnN0YW5j
ZXMgYXJlIHR3byBwYXJhbGxlbCBhcnJheXMgdGhhdCBhcmUgYWx3YXlzIGluIHN5bmMuXG4gICAg
ICBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnNbaV0oZXZlbnQsIGRpc3BhdGNoSW5zdGFuY2VzW2ldKSkg
e1xuICAgICAgICByZXR1cm4gZGlzcGF0Y2hJbnN0YW5jZXNbaV07XG4gICAgICB9XG4gICAgfVxu
ICB9IGVsc2UgaWYgKGRpc3BhdGNoTGlzdGVuZXJzKSB7XG4gICAgaWYgKGRpc3BhdGNoTGlzdGVu
ZXJzKGV2ZW50LCBkaXNwYXRjaEluc3RhbmNlcykpIHtcbiAgICAgIHJldHVybiBkaXNwYXRjaElu
c3RhbmNlcztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQHNlZSBl
eGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbFxuICovXG5mdW5jdGlvbiBleGVj
dXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlKGV2ZW50KSB7XG4gIHZhciByZXQgPSBleGVj
dXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbChldmVudCk7XG4gIGV2ZW50Ll9kaXNw
YXRjaEluc3RhbmNlcyA9IG51bGw7XG4gIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IG51bGw7
XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogRXhlY3V0aW9uIG9mIGEgXCJkaXJlY3RcIiBk
aXNwYXRjaCAtIHRoZXJlIG11c3QgYmUgYXQgbW9zdCBvbmUgZGlzcGF0Y2hcbiAqIGFjY3VtdWxh
dGVkIG9uIHRoZSBldmVudCBvciBpdCBpcyBjb25zaWRlcmVkIGFuIGVycm9yLiBJdCBkb2Vzbid0
IHJlYWxseSBtYWtlXG4gKiBzZW5zZSBmb3IgYW4gZXZlbnQgd2l0aCBtdWx0aXBsZSBkaXNwYXRj
aGVzIChidWJibGVkKSB0byBrZWVwIHRyYWNrIG9mIHRoZVxuICogcmV0dXJuIHZhbHVlcyBhdCBl
YWNoIGRpc3BhdGNoIGV4ZWN1dGlvbiwgYnV0IGl0IGRvZXMgdGVuZCB0byBtYWtlIHNlbnNlIHdo
ZW5cbiAqIGRlYWxpbmcgd2l0aCBcImRpcmVjdFwiIGRpc3BhdGNoZXMuXG4gKlxuICogQHJldHVy
biB7Kn0gVGhlIHJldHVybiB2YWx1ZSBvZiBleGVjdXRpbmcgdGhlIHNpbmdsZSBkaXNwYXRjaC5c
biAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpcmVjdERpc3BhdGNoKGV2ZW50KSB7XG4gIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFsaWRhdGVFdmVudERp
c3BhdGNoZXMoZXZlbnQpO1xuICB9XG4gIHZhciBkaXNwYXRjaExpc3RlbmVyID0gZXZlbnQuX2Rp
c3BhdGNoTGlzdGVuZXJzO1xuICB2YXIgZGlzcGF0Y2hJbnN0YW5jZSA9IGV2ZW50Ll9kaXNwYXRj
aEluc3RhbmNlcztcbiAgISFBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlzdGVuZXIpID8gcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2V4ZWN1
dGVEaXJlY3REaXNwYXRjaCguLi4pOiBJbnZhbGlkIGBldmVudGAuJykgOiBfcHJvZEludmFyaWFu
dCgnMTAzJykgOiB2b2lkIDA7XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBkaXNwYXRjaExpc3Rl
bmVyID8gRXZlbnRQbHVnaW5VdGlscy5nZXROb2RlRnJvbUluc3RhbmNlKGRpc3BhdGNoSW5zdGFu
Y2UpIDogbnVsbDtcbiAgdmFyIHJlcyA9IGRpc3BhdGNoTGlzdGVuZXIgPyBkaXNwYXRjaExpc3Rl
bmVyKGV2ZW50KSA6IG51bGw7XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBudWxsO1xuICBldmVu
dC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBudWxsO1xuICBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMg
PSBudWxsO1xuICByZXR1cm4gcmVzO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7U3ludGhldGljRXZl
bnR9IGV2ZW50XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmZiBudW1iZXIgb2YgZGlzcGF0
Y2hlcyBhY2N1bXVsYXRlZCBpcyBncmVhdGVyIHRoYW4gMC5cbiAqL1xuZnVuY3Rpb24gaGFzRGlz
cGF0Y2hlcyhldmVudCkge1xuICByZXR1cm4gISFldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG59
XG5cbi8qKlxuICogR2VuZXJhbCB1dGlsaXRpZXMgdGhhdCBhcmUgdXNlZnVsIGluIGNyZWF0aW5n
IGN1c3RvbSBFdmVudCBQbHVnaW5zLlxuICovXG52YXIgRXZlbnRQbHVnaW5VdGlscyA9IHtcbiAg
aXNFbmRpc2g6IGlzRW5kaXNoLFxuICBpc01vdmVpc2g6IGlzTW92ZWlzaCxcbiAgaXNTdGFydGlz
aDogaXNTdGFydGlzaCxcblxuICBleGVjdXRlRGlyZWN0RGlzcGF0Y2g6IGV4ZWN1dGVEaXJlY3RE
aXNwYXRjaCxcbiAgZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyOiBleGVjdXRlRGlzcGF0Y2hlc0lu
T3JkZXIsXG4gIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWU6IGV4ZWN1dGVEaXNw
YXRjaGVzSW5PcmRlclN0b3BBdFRydWUsXG4gIGhhc0Rpc3BhdGNoZXM6IGhhc0Rpc3BhdGNoZXMs
XG5cbiAgZ2V0SW5zdGFuY2VGcm9tTm9kZTogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4g
Q29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpO1xuICB9LFxuICBnZXROb2Rl
RnJvbUluc3RhbmNlOiBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiBDb21wb25lbnRUcmVl
LmdldE5vZGVGcm9tSW5zdGFuY2Uobm9kZSk7XG4gIH0sXG4gIGlzQW5jZXN0b3I6IGZ1bmN0aW9u
IChhLCBiKSB7XG4gICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuaXNBbmNlc3RvcihhLCBiKTtcbiAg
fSxcbiAgZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0
dXJuIFRyZWVUcmF2ZXJzYWwuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IoYSwgYik7XG4gIH0sXG4g
IGdldFBhcmVudEluc3RhbmNlOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIHJldHVybiBUcmVlVHJh
dmVyc2FsLmdldFBhcmVudEluc3RhbmNlKGluc3QpO1xuICB9LFxuICB0cmF2ZXJzZVR3b1BoYXNl
OiBmdW5jdGlvbiAodGFyZ2V0LCBmbiwgYXJnKSB7XG4gICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwu
dHJhdmVyc2VUd29QaGFzZSh0YXJnZXQsIGZuLCBhcmcpO1xuICB9LFxuICB0cmF2ZXJzZUVudGVy
TGVhdmU6IGZ1bmN0aW9uIChmcm9tLCB0bywgZm4sIGFyZ0Zyb20sIGFyZ1RvKSB7XG4gICAgcmV0
dXJuIFRyZWVUcmF2ZXJzYWwudHJhdmVyc2VFbnRlckxlYXZlKGZyb20sIHRvLCBmbiwgYXJnRnJv
bSwgYXJnVG8pO1xuICB9LFxuXG4gIGluamVjdGlvbjogaW5qZWN0aW9uXG59O1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IEV2ZW50UGx1Z2luVXRpbHM7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9FdmVudFBsdWdpblV0aWxzLmpz
XG4gKiogbW9kdWxlIGlkID0gMzdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxu
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4g
KiBFc2NhcGUgYW5kIHdyYXAga2V5IHNvIGl0IGlzIHNhZmUgdG8gdXNlIGFzIGEgcmVhY3RpZFxu
ICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgdG8gYmUgZXNjYXBlZC5cbiAqIEByZXR1cm4ge3N0
cmluZ30gdGhlIGVzY2FwZWQga2V5LlxuICovXG5cbmZ1bmN0aW9uIGVzY2FwZShrZXkpIHtcbiAg
dmFyIGVzY2FwZVJlZ2V4ID0gL1s9Ol0vZztcbiAgdmFyIGVzY2FwZXJMb29rdXAgPSB7XG4gICAg
Jz0nOiAnPTAnLFxuICAgICc6JzogJz0yJ1xuICB9O1xuICB2YXIgZXNjYXBlZFN0cmluZyA9ICgn
JyArIGtleSkucmVwbGFjZShlc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgcmV0
dXJuIGVzY2FwZXJMb29rdXBbbWF0Y2hdO1xuICB9KTtcblxuICByZXR1cm4gJyQnICsgZXNjYXBl
ZFN0cmluZztcbn1cblxuLyoqXG4gKiBVbmVzY2FwZSBhbmQgdW53cmFwIGtleSBmb3IgaHVtYW4t
cmVhZGFibGUgZGlzcGxheVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgdG8gdW5lc2NhcGUu
XG4gKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSB1bmVzY2FwZWQga2V5LlxuICovXG5mdW5jdGlvbiB1
bmVzY2FwZShrZXkpIHtcbiAgdmFyIHVuZXNjYXBlUmVnZXggPSAvKD0wfD0yKS9nO1xuICB2YXIg
dW5lc2NhcGVyTG9va3VwID0ge1xuICAgICc9MCc6ICc9JyxcbiAgICAnPTInOiAnOidcbiAgfTtc
biAgdmFyIGtleVN1YnN0cmluZyA9IGtleVswXSA9PT0gJy4nICYmIGtleVsxXSA9PT0gJyQnID8g
a2V5LnN1YnN0cmluZygyKSA6IGtleS5zdWJzdHJpbmcoMSk7XG5cbiAgcmV0dXJuICgnJyArIGtl
eVN1YnN0cmluZykucmVwbGFjZSh1bmVzY2FwZVJlZ2V4LCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAg
ICByZXR1cm4gdW5lc2NhcGVyTG9va3VwW21hdGNoXTtcbiAgfSk7XG59XG5cbnZhciBLZXlFc2Nh
cGVVdGlscyA9IHtcbiAgZXNjYXBlOiBlc2NhcGUsXG4gIHVuZXNjYXBlOiB1bmVzY2FwZVxufTtc
blxubW9kdWxlLmV4cG9ydHMgPSBLZXlFc2NhcGVVdGlscztcblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0tleUVzY2FwZVV0
aWxzLmpzXG4gKiogbW9kdWxlIGlkID0gMzhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBf
cHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBS
ZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtc
bnZhciBwcm9wVHlwZXNGYWN0b3J5ID0gcmVxdWlyZSgncHJvcC10eXBlcy9mYWN0b3J5Jyk7XG5c
bnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdCcpO1xudmFyIFByb3BUeXBlcyA9
IHByb3BUeXBlc0ZhY3RvcnkoUmVhY3QuaXNWYWxpZEVsZW1lbnQpO1xuXG52YXIgaW52YXJpYW50
ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUo
J2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIGhhc1JlYWRPbmx5VmFsdWUgPSB7XG4gIGJ1dHRv
bjogdHJ1ZSxcbiAgY2hlY2tib3g6IHRydWUsXG4gIGltYWdlOiB0cnVlLFxuICBoaWRkZW46IHRy
dWUsXG4gIHJhZGlvOiB0cnVlLFxuICByZXNldDogdHJ1ZSxcbiAgc3VibWl0OiB0cnVlXG59O1xu
XG5mdW5jdGlvbiBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKSB7XG4gICEoaW5wdXRQcm9w
cy5jaGVja2VkTGluayA9PSBudWxsIHx8IGlucHV0UHJvcHMudmFsdWVMaW5rID09IG51bGwpID8g
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J0Nhbm5vdCBwcm92aWRlIGEgY2hlY2tlZExpbmsgYW5kIGEgdmFsdWVMaW5rLiBJZiB5b3Ugd2Fu
dCB0byB1c2UgY2hlY2tlZExpbmssIHlvdSBwcm9iYWJseSBkb25cXCd0IHdhbnQgdG8gdXNlIHZh
bHVlTGluayBhbmQgdmljZSB2ZXJzYS4nKSA6IF9wcm9kSW52YXJpYW50KCc4NycpIDogdm9pZCAw
O1xufVxuZnVuY3Rpb24gX2Fzc2VydFZhbHVlTGluayhpbnB1dFByb3BzKSB7XG4gIF9hc3NlcnRT
aW5nbGVMaW5rKGlucHV0UHJvcHMpO1xuICAhKGlucHV0UHJvcHMudmFsdWUgPT0gbnVsbCAmJiBp
bnB1dFByb3BzLm9uQ2hhbmdlID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgdmFsdWVMaW5r
IGFuZCBhIHZhbHVlIG9yIG9uQ2hhbmdlIGV2ZW50LiBJZiB5b3Ugd2FudCB0byB1c2UgdmFsdWUg
b3Igb25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25cXCd0IHdhbnQgdG8gdXNlIHZhbHVlTGluay4n
KSA6IF9wcm9kSW52YXJpYW50KCc4OCcpIDogdm9pZCAwO1xufVxuXG5mdW5jdGlvbiBfYXNzZXJ0
Q2hlY2tlZExpbmsoaW5wdXRQcm9wcykge1xuICBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3Bz
KTtcbiAgIShpbnB1dFByb3BzLmNoZWNrZWQgPT0gbnVsbCAmJiBpbnB1dFByb3BzLm9uQ2hhbmdl
ID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgY2hlY2tlZExpbmsgYW5kIGEgY2hlY2tlZCBw
cm9wZXJ0eSBvciBvbkNoYW5nZSBldmVudC4gSWYgeW91IHdhbnQgdG8gdXNlIGNoZWNrZWQgb3Ig
b25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25cXCd0IHdhbnQgdG8gdXNlIGNoZWNrZWRMaW5rJykg
OiBfcHJvZEludmFyaWFudCgnODknKSA6IHZvaWQgMDtcbn1cblxudmFyIHByb3BUeXBlcyA9IHtc
biAgdmFsdWU6IGZ1bmN0aW9uIChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHtcbiAg
ICBpZiAoIXByb3BzW3Byb3BOYW1lXSB8fCBoYXNSZWFkT25seVZhbHVlW3Byb3BzLnR5cGVdIHx8
IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7XG4g
ICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHByb3Zp
ZGVkIGEgYHZhbHVlYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuICcgKyAnYG9uQ2hh
bmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiAnICsg
J3RoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAuIE90aGVyd2lz
ZSwgJyArICdzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4nKTtcbiAgfSxcbiAg
Y2hlY2tlZDogZnVuY3Rpb24gKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAg
IGlmICghcHJvcHNbcHJvcE5hbWVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5
IHx8IHByb3BzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0
dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHByb3AgdG8gYSBmb3JtIGZp
ZWxkIHdpdGhvdXQgYW4gJyArICdgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIg
YSByZWFkLW9ubHkgZmllbGQuIElmICcgKyAndGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVz
ZSBgZGVmYXVsdENoZWNrZWRgLiBPdGhlcndpc2UsICcgKyAnc2V0IGVpdGhlciBgb25DaGFuZ2Vg
IG9yIGByZWFkT25seWAuJyk7XG4gIH0sXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuY1xufTtc
blxudmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25F
cnJvckFkZGVuZHVtKG93bmVyKSB7XG4gIGlmIChvd25lcikge1xuICAgIHZhciBuYW1lID0gb3du
ZXIuZ2V0TmFtZSgpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICByZXR1cm4gJyBDaGVjayB0aGUg
cmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgIH1cbiAgfVxuICByZXR1cm4g
Jyc7XG59XG5cbi8qKlxuICogUHJvdmlkZSBhIGxpbmtlZCBgdmFsdWVgIGF0dHJpYnV0ZSBmb3Ig
Y29udHJvbGxlZCBmb3Jtcy4gWW91IHNob3VsZCBub3QgdXNlXG4gKiB0aGlzIG91dHNpZGUgb2Yg
dGhlIFJlYWN0RE9NIGNvbnRyb2xsZWQgZm9ybSBjb21wb25lbnRzLlxuICovXG52YXIgTGlua2Vk
VmFsdWVVdGlscyA9IHtcbiAgY2hlY2tQcm9wVHlwZXM6IGZ1bmN0aW9uICh0YWdOYW1lLCBwcm9w
cywgb3duZXIpIHtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wVHlwZXMpIHtcbiAgICAg
IGlmIChwcm9wVHlwZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHZhciBl
cnJvciA9IHByb3BUeXBlc1twcm9wTmFtZV0ocHJvcHMsIHByb3BOYW1lLCB0YWdOYW1lLCAncHJv
cCcsIG51bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgIH1cbiAgICAgIGlmIChlcnJv
ciBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVy
ZXMpKSB7XG4gICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNl
IHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAvLyBzYW1lIGVycm9yLlxu
ICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0cnVlO1xuXG4gICAg
ICAgIHZhciBhZGRlbmR1bSA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcik7XG4g
ICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZh
bHNlLCAnRmFpbGVkIGZvcm0gcHJvcFR5cGU6ICVzJXMnLCBlcnJvci5tZXNzYWdlLCBhZGRlbmR1
bSkgOiB2b2lkIDA7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0g
e29iamVjdH0gaW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21wb25lbnRcbiAgICogQHJldHVy
biB7Kn0gY3VycmVudCB2YWx1ZSBvZiB0aGUgaW5wdXQgZWl0aGVyIGZyb20gdmFsdWUgcHJvcCBv
ciBsaW5rLlxuICAgKi9cbiAgZ2V0VmFsdWU6IGZ1bmN0aW9uIChpbnB1dFByb3BzKSB7XG4gICAg
aWYgKGlucHV0UHJvcHMudmFsdWVMaW5rKSB7XG4gICAgICBfYXNzZXJ0VmFsdWVMaW5rKGlucHV0
UHJvcHMpO1xuICAgICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWVMaW5rLnZhbHVlO1xuICAgIH1c
biAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZTtcbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFt
IHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9yIGZvcm0gY29tcG9uZW50XG4gICAqIEByZXR1
cm4geyp9IGN1cnJlbnQgY2hlY2tlZCBzdGF0dXMgb2YgdGhlIGlucHV0IGVpdGhlciBmcm9tIGNo
ZWNrZWQgcHJvcFxuICAgKiAgICAgICAgICAgICBvciBsaW5rLlxuICAgKi9cbiAgZ2V0Q2hlY2tl
ZDogZnVuY3Rpb24gKGlucHV0UHJvcHMpIHtcbiAgICBpZiAoaW5wdXRQcm9wcy5jaGVja2VkTGlu
aykge1xuICAgICAgX2Fzc2VydENoZWNrZWRMaW5rKGlucHV0UHJvcHMpO1xuICAgICAgcmV0dXJu
IGlucHV0UHJvcHMuY2hlY2tlZExpbmsudmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dFBy
b3BzLmNoZWNrZWQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dFBy
b3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVudFxuICAgKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50
fSBldmVudCBjaGFuZ2UgZXZlbnQgdG8gaGFuZGxlXG4gICAqL1xuICBleGVjdXRlT25DaGFuZ2U6
IGZ1bmN0aW9uIChpbnB1dFByb3BzLCBldmVudCkge1xuICAgIGlmIChpbnB1dFByb3BzLnZhbHVl
TGluaykge1xuICAgICAgX2Fzc2VydFZhbHVlTGluayhpbnB1dFByb3BzKTtcbiAgICAgIHJldHVy
biBpbnB1dFByb3BzLnZhbHVlTGluay5yZXF1ZXN0Q2hhbmdlKGV2ZW50LnRhcmdldC52YWx1ZSk7
XG4gICAgfSBlbHNlIGlmIChpbnB1dFByb3BzLmNoZWNrZWRMaW5rKSB7XG4gICAgICBfYXNzZXJ0
Q2hlY2tlZExpbmsoaW5wdXRQcm9wcyk7XG4gICAgICByZXR1cm4gaW5wdXRQcm9wcy5jaGVja2Vk
TGluay5yZXF1ZXN0Q2hhbmdlKGV2ZW50LnRhcmdldC5jaGVja2VkKTtcbiAgICB9IGVsc2UgaWYg
KGlucHV0UHJvcHMub25DaGFuZ2UpIHtcbiAgICAgIHJldHVybiBpbnB1dFByb3BzLm9uQ2hhbmdl
LmNhbGwodW5kZWZpbmVkLCBldmVudCk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0
cyA9IExpbmtlZFZhbHVlVXRpbHM7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9MaW5rZWRWYWx1ZVV0aWxzLmpzXG4gKiog
bW9kdWxlIGlkID0gMzlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29w
eXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52
YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIGludmFyaWFu
dCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52YXIgaW5qZWN0ZWQgPSBmYWxz
ZTtcblxudmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSB7XG4gIC8qKlxuICAgKiBPcHRp
b25hbGx5IGluamVjdGFibGUgaG9vayBmb3Igc3dhcHBpbmcgb3V0IG1vdW50IGltYWdlcyBpbiB0
aGUgbWlkZGxlIG9mXG4gICAqIHRoZSB0cmVlLlxuICAgKi9cbiAgcmVwbGFjZU5vZGVXaXRoTWFy
a3VwOiBudWxsLFxuXG4gIC8qKlxuICAgKiBPcHRpb25hbGx5IGluamVjdGFibGUgaG9vayBmb3Ig
cHJvY2Vzc2luZyBhIHF1ZXVlIG9mIGNoaWxkIHVwZGF0ZXMuIFdpbGxcbiAgICogbGF0ZXIgbW92
ZSBpbnRvIE11bHRpQ2hpbGRDb21wb25lbnRzLlxuICAgKi9cbiAgcHJvY2Vzc0NoaWxkcmVuVXBk
YXRlczogbnVsbCxcblxuICBpbmplY3Rpb246IHtcbiAgICBpbmplY3RFbnZpcm9ubWVudDogZnVu
Y3Rpb24gKGVudmlyb25tZW50KSB7XG4gICAgICAhIWluamVjdGVkID8gcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q29tcG9zaXRl
Q29tcG9uZW50OiBpbmplY3RFbnZpcm9ubWVudCgpIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLicp
IDogX3Byb2RJbnZhcmlhbnQoJzEwNCcpIDogdm9pZCAwO1xuICAgICAgUmVhY3RDb21wb25lbnRF
bnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAgPSBlbnZpcm9ubWVudC5yZXBsYWNlTm9k
ZVdpdGhNYXJrdXA7XG4gICAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnByb2Nlc3NDaGls
ZHJlblVwZGF0ZXMgPSBlbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzO1xuICAgICAg
aW5qZWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFj
dENvbXBvbmVudEVudmlyb25tZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RDb21wb25lbnRFbnZpcm9ubWVu
dC5qc1xuICoqIG1vZHVsZSBpZCA9IDQwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIv
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZh
ciBjYXVnaHRFcnJvciA9IG51bGw7XG5cbi8qKlxuICogQ2FsbCBhIGZ1bmN0aW9uIHdoaWxlIGd1
YXJkaW5nIGFnYWluc3QgZXJyb3JzIHRoYXQgaGFwcGVucyB3aXRoaW4gaXQuXG4gKlxuICogQHBh
cmFtIHtTdHJpbmd9IG5hbWUgb2YgdGhlIGd1YXJkIHRvIHVzZSBmb3IgbG9nZ2luZyBvciBkZWJ1
Z2dpbmdcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZVxu
ICogQHBhcmFtIHsqfSBhIEZpcnN0IGFyZ3VtZW50XG4gKiBAcGFyYW0geyp9IGIgU2Vjb25kIGFy
Z3VtZW50XG4gKi9cbmZ1bmN0aW9uIGludm9rZUd1YXJkZWRDYWxsYmFjayhuYW1lLCBmdW5jLCBh
KSB7XG4gIHRyeSB7XG4gICAgZnVuYyhhKTtcbiAgfSBjYXRjaCAoeCkge1xuICAgIGlmIChjYXVn
aHRFcnJvciA9PT0gbnVsbCkge1xuICAgICAgY2F1Z2h0RXJyb3IgPSB4O1xuICAgIH1cbiAgfVxu
fVxuXG52YXIgUmVhY3RFcnJvclV0aWxzID0ge1xuICBpbnZva2VHdWFyZGVkQ2FsbGJhY2s6IGlu
dm9rZUd1YXJkZWRDYWxsYmFjayxcblxuICAvKipcbiAgICogSW52b2tlZCBieSBSZWFjdFRlc3RV
dGlscy5TaW11bGF0ZSBzbyB0aGF0IGFueSBlcnJvcnMgdGhyb3duIGJ5IHRoZSBldmVudFxuICAg
KiBoYW5kbGVyIGFyZSBzdXJlIHRvIGJlIHJldGhyb3duIGJ5IHJldGhyb3dDYXVnaHRFcnJvci5c
biAgICovXG4gIGludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaDogaW52b2tlR3VhcmRlZENh
bGxiYWNrLFxuXG4gIC8qKlxuICAgKiBEdXJpbmcgZXhlY3V0aW9uIG9mIGd1YXJkZWQgZnVuY3Rp
b25zIHdlIHdpbGwgY2FwdHVyZSB0aGUgZmlyc3QgZXJyb3Igd2hpY2hcbiAgICogd2Ugd2lsbCBy
ZXRocm93IHRvIGJlIGhhbmRsZWQgYnkgdGhlIHRvcCBsZXZlbCBlcnJvciBoYW5kbGVyLlxuICAg
Ki9cbiAgcmV0aHJvd0NhdWdodEVycm9yOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGNhdWdodEVy
cm9yKSB7XG4gICAgICB2YXIgZXJyb3IgPSBjYXVnaHRFcnJvcjtcbiAgICAgIGNhdWdodEVycm9y
ID0gbnVsbDtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufTtcblxuaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgLyoqXG4gICAqIFRvIGhlbHAg
ZGV2ZWxvcG1lbnQgd2UgY2FuIGdldCBiZXR0ZXIgZGV2dG9vbHMgaW50ZWdyYXRpb24gYnkgc2lt
dWxhdGluZyBhXG4gICAqIHJlYWwgYnJvd3NlciBldmVudC5cbiAgICovXG4gIGlmICh0eXBlb2Yg
d2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LmRpc3BhdGNoRXZlbnQgPT09
ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Yg
ZG9jdW1lbnQuY3JlYXRlRXZlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICB2YXIgZmFrZU5vZGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdyZWFjdCcpO1xuICAgIFJlYWN0RXJyb3JVdGlscy5p
bnZva2VHdWFyZGVkQ2FsbGJhY2sgPSBmdW5jdGlvbiAobmFtZSwgZnVuYywgYSkge1xuICAgICAg
dmFyIGJvdW5kRnVuYyA9IGZ1bmMuYmluZChudWxsLCBhKTtcbiAgICAgIHZhciBldnRUeXBlID0g
J3JlYWN0LScgKyBuYW1lO1xuICAgICAgZmFrZU5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldnRUeXBl
LCBib3VuZEZ1bmMsIGZhbHNlKTtcbiAgICAgIHZhciBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVu
dCgnRXZlbnQnKTtcbiAgICAgIGV2dC5pbml0RXZlbnQoZXZ0VHlwZSwgZmFsc2UsIGZhbHNlKTtc
biAgICAgIGZha2VOb2RlLmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICAgIGZha2VOb2RlLnJlbW92
ZUV2ZW50TGlzdGVuZXIoZXZ0VHlwZSwgYm91bmRGdW5jLCBmYWxzZSk7XG4gICAgfTtcbiAgfVxu
fVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RXJyb3JVdGlscztcblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RXJy
b3JVdGlscy5qc1xuICoqIG1vZHVsZSBpZCA9IDQxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAq
Ki8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52
YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52
YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDdXJyZW50T3du
ZXInKTtcbnZhciBSZWFjdEluc3RhbmNlTWFwID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFw
Jyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVu
dGF0aW9uJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtc
blxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdh
cm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbmZ1bmN0aW9uIGVucXVldWVV
cGRhdGUoaW50ZXJuYWxJbnN0YW5jZSkge1xuICBSZWFjdFVwZGF0ZXMuZW5xdWV1ZVVwZGF0ZShp
bnRlcm5hbEluc3RhbmNlKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VW5leHBlY3RlZEFyZ3VtZW50
KGFyZykge1xuICB2YXIgdHlwZSA9IHR5cGVvZiBhcmc7XG4gIGlmICh0eXBlICE9PSAnb2JqZWN0
Jykge1xuICAgIHJldHVybiB0eXBlO1xuICB9XG4gIHZhciBkaXNwbGF5TmFtZSA9IGFyZy5jb25z
dHJ1Y3RvciAmJiBhcmcuY29uc3RydWN0b3IubmFtZSB8fCB0eXBlO1xuICB2YXIga2V5cyA9IE9i
amVjdC5rZXlzKGFyZyk7XG4gIGlmIChrZXlzLmxlbmd0aCA+IDAgJiYga2V5cy5sZW5ndGggPCAy
MCkge1xuICAgIHJldHVybiBkaXNwbGF5TmFtZSArICcgKGtleXM6ICcgKyBrZXlzLmpvaW4oJywg
JykgKyAnKSc7XG4gIH1cbiAgcmV0dXJuIGRpc3BsYXlOYW1lO1xufVxuXG5mdW5jdGlvbiBnZXRJ
bnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsIGNhbGxlck5hbWUp
IHtcbiAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBSZWFjdEluc3RhbmNlTWFwLmdldChwdWJsaWNJ
bnN0YW5jZSk7XG4gIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgY3RvciA9IHB1YmxpY0lu
c3RhbmNlLmNvbnN0cnVjdG9yO1xuICAgICAgLy8gT25seSB3YXJuIHdoZW4gd2UgaGF2ZSBhIGNh
bGxlck5hbWUuIE90aGVyd2lzZSB3ZSBzaG91bGQgYmUgc2lsZW50LlxuICAgICAgLy8gV2UncmUg
cHJvYmFibHkgY2FsbGluZyBmcm9tIGVucXVldWVDYWxsYmFjay4gV2UgZG9uJ3Qgd2FudCB0byB3
YXJuXG4gICAgICAvLyB0aGVyZSBiZWNhdXNlIHdlIGFscmVhZHkgd2FybmVkIGZvciB0aGUgY29y
cmVzcG9uZGluZyBsaWZlY3ljbGUgbWV0aG9kLlxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNhbGxlck5hbWUsICclcyguLi4pOiBDYW4gb25s
eSB1cGRhdGUgYSBtb3VudGVkIG9yIG1vdW50aW5nIGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFs
bHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG9uIGFuIHVubW91bnRlZCBjb21wb25lbnQuICcgKyAn
VGhpcyBpcyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNvZGUgZm9yIHRoZSAlcyBjb21wb25l
bnQuJywgY2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwgY3RvciAmJiAoY3Rvci5kaXNwbGF5TmFtZSB8
fCBjdG9yLm5hbWUpIHx8ICdSZWFjdENsYXNzJykgOiB2b2lkIDA7XG4gICAgfVxuICAgIHJldHVy
biBudWxsO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID09IG51bGwsICclcyguLi4pOiBDYW5ub3QgdXBk
YXRlIGR1cmluZyBhbiBleGlzdGluZyBzdGF0ZSB0cmFuc2l0aW9uIChzdWNoIGFzICcgKyBcIndp
dGhpbiBgcmVuZGVyYCBvciBhbm90aGVyIGNvbXBvbmVudCdzIGNvbnN0cnVjdG9yKS4gUmVuZGVy
IG1ldGhvZHMgXCIgKyAnc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQgc3Rh
dGU7IGNvbnN0cnVjdG9yICcgKyAnc2lkZS1lZmZlY3RzIGFyZSBhbiBhbnRpLXBhdHRlcm4sIGJ1
dCBjYW4gYmUgbW92ZWQgdG8gJyArICdgY29tcG9uZW50V2lsbE1vdW50YC4nLCBjYWxsZXJOYW1l
KSA6IHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiBpbnRlcm5hbEluc3RhbmNlO1xufVxuXG4vKipc
biAqIFJlYWN0VXBkYXRlUXVldWUgYWxsb3dzIGZvciBzdGF0ZSB1cGRhdGVzIHRvIGJlIHNjaGVk
dWxlZCBpbnRvIGEgbGF0ZXJcbiAqIHJlY29uY2lsaWF0aW9uIHN0ZXAuXG4gKi9cbnZhciBSZWFj
dFVwZGF0ZVF1ZXVlID0ge1xuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMg
Y29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9
IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRlc3QuXG4gICAqIEByZXR1
cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKiBAcHJv
dGVjdGVkXG4gICAqIEBmaW5hbFxuICAgKi9cbiAgaXNNb3VudGVkOiBmdW5jdGlvbiAocHVibGlj
SW5zdGFuY2UpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgdmFyIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICAg
IGlmIChvd25lciAhPT0gbnVsbCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIsICcl
cyBpcyBhY2Nlc3NpbmcgaXNNb3VudGVkIGluc2lkZSBpdHMgcmVuZGVyKCkgZnVuY3Rpb24uICcg
KyAncmVuZGVyKCkgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQgc3RhdGUu
IEl0IHNob3VsZCAnICsgJ25ldmVyIGFjY2VzcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBzdGFs
ZSBkYXRhIGZyb20gdGhlIHByZXZpb3VzICcgKyAncmVuZGVyLCBzdWNoIGFzIHJlZnMuIE1vdmUg
dGhpcyBsb2dpYyB0byBjb21wb25lbnREaWRNb3VudCBhbmQgJyArICdjb21wb25lbnREaWRVcGRh
dGUgaW5zdGVhZC4nLCBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7
XG4gICAgICAgIG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IHRydWU7XG4gICAgICB9
XG4gICAgfVxuICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQo
cHVibGljSW5zdGFuY2UpO1xuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgICAvLyBE
dXJpbmcgY29tcG9uZW50V2lsbE1vdW50IGFuZCByZW5kZXIgdGhpcyB3aWxsIHN0aWxsIGJlIG51
bGwgYnV0IGFmdGVyXG4gICAgICAvLyB0aGF0IHdpbGwgYWx3YXlzIHJlbmRlciB0byBzb21ldGhp
bmcuIEF0IGxlYXN0IGZvciBub3cuIFNvIHdlIGNhbiB1c2VcbiAgICAgIC8vIHRoaXMgaGFjay5c
biAgICAgIHJldHVybiAhIWludGVybmFsSW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50O1xuICAg
IH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAg
KiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUg
cGVuZGluZyB1cGRhdGVzXG4gICAqIGhhdmUgcHJvY2Vzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0g
e1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0byB1c2UgYXMgYHRoaXNg
IGNvbnRleHQuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIg
c3RhdGUgaXMgdXBkYXRlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNhbGxlck5hbWUgTmFtZSBv
ZiB0aGUgY2FsbGluZyBmdW5jdGlvbiBpbiB0aGUgcHVibGljIEFQSS5cbiAgICogQGludGVybmFs
XG4gICAqL1xuICBlbnF1ZXVlQ2FsbGJhY2s6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY2Fs
bGJhY2ssIGNhbGxlck5hbWUpIHtcbiAgICBSZWFjdFVwZGF0ZVF1ZXVlLnZhbGlkYXRlQ2FsbGJh
Y2soY2FsbGJhY2ssIGNhbGxlck5hbWUpO1xuICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gZ2V0
SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlKTtcblxuICAgIC8v
IFByZXZpb3VzbHkgd2Ugd291bGQgdGhyb3cgYW4gZXJyb3IgaWYgd2UgZGlkbid0IGhhdmUgYW4g
aW50ZXJuYWxcbiAgICAvLyBpbnN0YW5jZS4gU2luY2Ugd2Ugd2FudCB0byBtYWtlIGl0IGEgbm8t
b3AgaW5zdGVhZCwgd2UgbWlycm9yIHRoZSBzYW1lXG4gICAgLy8gYmVoYXZpb3Igd2UgaGF2ZSBp
biBvdGhlciBlbnF1ZXVlKiBtZXRob2RzLlxuICAgIC8vIFdlIGFsc28gbmVlZCB0byBpZ25vcmUg
Y2FsbGJhY2tzIGluIGNvbXBvbmVudFdpbGxNb3VudC4gU2VlXG4gICAgLy8gZW5xdWV1ZVVwZGF0
ZXMuXG4gICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAg
ICB9XG5cbiAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcykge1xuICAg
ICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbiAg
ICB9IGVsc2Uge1xuICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcyA9IFtj
YWxsYmFja107XG4gICAgfVxuICAgIC8vIFRPRE86IFRoZSBjYWxsYmFjayBoZXJlIGlzIGlnbm9y
ZWQgd2hlbiBzZXRTdGF0ZSBpcyBjYWxsZWQgZnJvbVxuICAgIC8vIGNvbXBvbmVudFdpbGxNb3Vu
dC4gRWl0aGVyIGZpeCBpdCBvciBkaXNhbGxvdyBkb2luZyBzbyBjb21wbGV0ZWx5IGluXG4gICAg
Ly8gZmF2b3Igb2YgZ2V0SW5pdGlhbFN0YXRlLiBBbHRlcm5hdGl2ZWx5LCB3ZSBjYW4gZGlzYWxs
b3dcbiAgICAvLyBjb21wb25lbnRXaWxsTW91bnQgZHVyaW5nIHNlcnZlci1zaWRlIHJlbmRlcmlu
Zy5cbiAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIGVucXVl
dWVDYWxsYmFja0ludGVybmFsOiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgY2FsbGJhY2sp
IHtcbiAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcykge1xuICAgICAg
aW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbiAgICB9
IGVsc2Uge1xuICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcyA9IFtjYWxs
YmFja107XG4gICAgfVxuICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG4gIH0s
XG5cbiAgLyoqXG4gICAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW52
b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcbiAgICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoq
bm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFlvdSBtYXkgd2FudCB0byBj
YWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBvZiB0aGVcbiAg
ICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBj
YWxsZWQuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21wb25lbnRV
cGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2VcbiAgICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFu
ZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBw
dWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBp
bnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAocHVibGljSW5z
dGFuY2UpIHtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VS
ZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7XG5cbiAgICBpZiAo
IWludGVybmFsSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpbnRlcm5h
bEluc3RhbmNlLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSB0cnVlO1xuXG4gICAgZW5xdWV1ZVVwZGF0
ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVwbGFjZXMgYWxsIG9m
IHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0YXRlIHN0YXRl
LlxuICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG4gICAq
XG4gICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJlIGlt
bWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIg
Y2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG4gICAqXG4gICAq
IEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hv
dWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcGxldGVTdGF0ZSBOZXh0IHN0
YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVSZXBsYWNlU3RhdGU6IGZ1bmN0
aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSwgY2FsbGJhY2spIHtcbiAgICB2YXIg
aW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJs
aWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpO1xuXG4gICAgaWYgKCFpbnRlcm5hbEluc3RhbmNl
KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGlu
Z1N0YXRlUXVldWUgPSBbY29tcGxldGVTdGF0ZV07XG4gICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVu
ZGluZ1JlcGxhY2VTdGF0ZSA9IHRydWU7XG5cbiAgICAvLyBGdXR1cmUtcHJvb2YgMTUuNVxuICAg
IGlmIChjYWxsYmFjayAhPT0gdW5kZWZpbmVkICYmIGNhbGxiYWNrICE9PSBudWxsKSB7XG4gICAg
ICBSZWFjdFVwZGF0ZVF1ZXVlLnZhbGlkYXRlQ2FsbGJhY2soY2FsbGJhY2ssICdyZXBsYWNlU3Rh
dGUnKTtcbiAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzKSB7XG4g
ICAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaChjYWxsYmFjayk7
XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJh
Y2tzID0gW2NhbGxiYWNrXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbnF1ZXVlVXBkYXRlKGlu
dGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRo
ZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXNcbiAgICog
aW50ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2
YWlsYWJsZSB0byBkZWVwXG4gICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RP
OiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxuICAgKiBkdXJpbmcgdGhlIG1l
cmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBp
bnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRp
YWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuXG4gICAq
IEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5z
dGFuY2UsIHBhcnRpYWxTdGF0ZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25T
ZXRTdGF0ZSgpO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcocGFydGlhbFN0YXRlICE9IG51bGwsICdzZXRTdGF0ZSguLi4pOiBZb3UgcGFzc2Vk
IGFuIHVuZGVmaW5lZCBvciBudWxsIHN0YXRlIG9iamVjdDsgJyArICdpbnN0ZWFkLCB1c2UgZm9y
Y2VVcGRhdGUoKS4nKSA6IHZvaWQgMDtcbiAgICB9XG5cbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5j
ZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ3Nl
dFN0YXRlJyk7XG5cbiAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtc
biAgICB9XG5cbiAgICB2YXIgcXVldWUgPSBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nU3RhdGVR
dWV1ZSB8fCAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUgPSBbXSk7XG4gICAg
cXVldWUucHVzaChwYXJ0aWFsU3RhdGUpO1xuXG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbElu
c3RhbmNlKTtcbiAgfSxcblxuICBlbnF1ZXVlRWxlbWVudEludGVybmFsOiBmdW5jdGlvbiAoaW50
ZXJuYWxJbnN0YW5jZSwgbmV4dEVsZW1lbnQsIG5leHRDb250ZXh0KSB7XG4gICAgaW50ZXJuYWxJ
bnN0YW5jZS5fcGVuZGluZ0VsZW1lbnQgPSBuZXh0RWxlbWVudDtcbiAgICAvLyBUT0RPOiBpbnRy
b2R1Y2UgX3BlbmRpbmdDb250ZXh0IGluc3RlYWQgb2Ygc2V0dGluZyBpdCBkaXJlY3RseS5cbiAg
ICBpbnRlcm5hbEluc3RhbmNlLl9jb250ZXh0ID0gbmV4dENvbnRleHQ7XG4gICAgZW5xdWV1ZVVw
ZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICB2YWxpZGF0ZUNhbGxiYWNrOiBmdW5j
dGlvbiAoY2FsbGJhY2ssIGNhbGxlck5hbWUpIHtcbiAgICAhKCFjYWxsYmFjayB8fCB0eXBlb2Yg
Y2FsbGJhY2sgPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzKC4uLik6IEV4cGVjdGVkIHRoZSBsYXN0IG9w
dGlvbmFsIGBjYWxsYmFja2AgYXJndW1lbnQgdG8gYmUgYSBmdW5jdGlvbi4gSW5zdGVhZCByZWNl
aXZlZDogJXMuJywgY2FsbGVyTmFtZSwgZm9ybWF0VW5leHBlY3RlZEFyZ3VtZW50KGNhbGxiYWNr
KSkgOiBfcHJvZEludmFyaWFudCgnMTIyJywgY2FsbGVyTmFtZSwgZm9ybWF0VW5leHBlY3RlZEFy
Z3VtZW50KGNhbGxiYWNrKSkgOiB2b2lkIDA7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0g
UmVhY3RVcGRhdGVRdWV1ZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0VXBkYXRlUXVldWUuanNcbiAqKiBtb2R1
bGUgaWQgPSA0MlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbi8qIGdsb2JhbHMgTVNBcHAgKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG4vKipcbiAqIENyZWF0ZSBhIGZ1bmN0aW9uIHdoaWNoIGhhcyAndW5zYWZlJyBwcml2aWxlZ2Vz
IChyZXF1aXJlZCBieSB3aW5kb3dzOCBhcHBzKVxuICovXG5cbnZhciBjcmVhdGVNaWNyb3NvZnRV
bnNhZmVMb2NhbEZ1bmN0aW9uID0gZnVuY3Rpb24gKGZ1bmMpIHtcbiAgaWYgKHR5cGVvZiBNU0Fw
cCAhPT0gJ3VuZGVmaW5lZCcgJiYgTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24pIHtcbiAg
ICByZXR1cm4gZnVuY3Rpb24gKGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMpIHtcbiAgICAgIE1TQXBw
LmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZ1
bmMoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMyk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9IGVsc2Ug
e1xuICAgIHJldHVybiBmdW5jO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZU1p
Y3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb247XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9jcmVhdGVNaWNyb3NvZnRVbnNh
ZmVMb2NhbEZ1bmN0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gNDNcbiAqKiBtb2R1bGUgY2h1bmtz
ID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmlj
dCc7XG5cbi8qKlxuICogYGNoYXJDb2RlYCByZXByZXNlbnRzIHRoZSBhY3R1YWwgXCJjaGFyYWN0
ZXIgY29kZVwiIGFuZCBpcyBzYWZlIHRvIHVzZSB3aXRoXG4gKiBgU3RyaW5nLmZyb21DaGFyQ29k
ZWAuIEFzIHN1Y2gsIG9ubHkga2V5cyB0aGF0IGNvcnJlc3BvbmQgdG8gcHJpbnRhYmxlXG4gKiBj
aGFyYWN0ZXJzIHByb2R1Y2UgYSB2YWxpZCBgY2hhckNvZGVgLCB0aGUgb25seSBleGNlcHRpb24g
dG8gdGhpcyBpcyBFbnRlci5cbiAqIFRoZSBUYWIta2V5IGlzIGNvbnNpZGVyZWQgbm9uLXByaW50
YWJsZSBhbmQgZG9lcyBub3QgaGF2ZSBhIGBjaGFyQ29kZWAsXG4gKiBwcmVzdW1hYmx5IGJlY2F1
c2UgaXQgZG9lcyBub3QgcHJvZHVjZSBhIHRhYi1jaGFyYWN0ZXIgaW4gYnJvd3NlcnMuXG4gKlxu
ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICog
QHJldHVybiB7bnVtYmVyfSBOb3JtYWxpemVkIGBjaGFyQ29kZWAgcHJvcGVydHkuXG4gKi9cblxu
ZnVuY3Rpb24gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCkge1xuICB2YXIgY2hhckNvZGU7
XG4gIHZhciBrZXlDb2RlID0gbmF0aXZlRXZlbnQua2V5Q29kZTtcblxuICBpZiAoJ2NoYXJDb2Rl
JyBpbiBuYXRpdmVFdmVudCkge1xuICAgIGNoYXJDb2RlID0gbmF0aXZlRXZlbnQuY2hhckNvZGU7
XG5cbiAgICAvLyBGRiBkb2VzIG5vdCBzZXQgYGNoYXJDb2RlYCBmb3IgdGhlIEVudGVyLWtleSwg
Y2hlY2sgYWdhaW5zdCBga2V5Q29kZWAuXG4gICAgaWYgKGNoYXJDb2RlID09PSAwICYmIGtleUNv
ZGUgPT09IDEzKSB7XG4gICAgICBjaGFyQ29kZSA9IDEzO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAg
ICAvLyBJRTggZG9lcyBub3QgaW1wbGVtZW50IGBjaGFyQ29kZWAsIGJ1dCBga2V5Q29kZWAgaGFz
IHRoZSBjb3JyZWN0IHZhbHVlLlxuICAgIGNoYXJDb2RlID0ga2V5Q29kZTtcbiAgfVxuXG4gIC8v
IFNvbWUgbm9uLXByaW50YWJsZSBrZXlzIGFyZSByZXBvcnRlZCBpbiBgY2hhckNvZGVgL2BrZXlD
b2RlYCwgZGlzY2FyZCB0aGVtLlxuICAvLyBNdXN0IG5vdCBkaXNjYXJkIHRoZSAobm9uLSlwcmlu
dGFibGUgRW50ZXIta2V5LlxuICBpZiAoY2hhckNvZGUgPj0gMzIgfHwgY2hhckNvZGUgPT09IDEz
KSB7XG4gICAgcmV0dXJuIGNoYXJDb2RlO1xuICB9XG5cbiAgcmV0dXJuIDA7XG59XG5cbm1vZHVs
ZS5leHBvcnRzID0gZ2V0RXZlbnRDaGFyQ29kZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2dldEV2ZW50Q2hhckNvZGUu
anNcbiAqKiBtb2R1bGUgaWQgPSA0NFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoq
XG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBU
cmFuc2xhdGlvbiBmcm9tIG1vZGlmaWVyIGtleSB0byB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSBp
biB0aGUgZXZlbnQuXG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2
ZW50cy8ja2V5cy1Nb2RpZmllcnNcbiAqL1xuXG52YXIgbW9kaWZpZXJLZXlUb1Byb3AgPSB7XG4g
IEFsdDogJ2FsdEtleScsXG4gIENvbnRyb2w6ICdjdHJsS2V5JyxcbiAgTWV0YTogJ21ldGFLZXkn
LFxuICBTaGlmdDogJ3NoaWZ0S2V5J1xufTtcblxuLy8gSUU4IGRvZXMgbm90IGltcGxlbWVudCBn
ZXRNb2RpZmllclN0YXRlIHNvIHdlIHNpbXBseSBtYXAgaXQgdG8gdGhlIG9ubHlcbi8vIG1vZGlm
aWVyIGtleXMgZXhwb3NlZCBieSB0aGUgZXZlbnQgaXRzZWxmLCBkb2VzIG5vdCBzdXBwb3J0IExv
Y2sta2V5cy5cbi8vIEN1cnJlbnRseSwgYWxsIG1ham9yIGJyb3dzZXJzIGV4Y2VwdCBDaHJvbWUg
c2VlbXMgdG8gc3VwcG9ydCBMb2NrLWtleXMuXG5mdW5jdGlvbiBtb2RpZmllclN0YXRlR2V0dGVy
KGtleUFyZykge1xuICB2YXIgc3ludGhldGljRXZlbnQgPSB0aGlzO1xuICB2YXIgbmF0aXZlRXZl
bnQgPSBzeW50aGV0aWNFdmVudC5uYXRpdmVFdmVudDtcbiAgaWYgKG5hdGl2ZUV2ZW50LmdldE1v
ZGlmaWVyU3RhdGUpIHtcbiAgICByZXR1cm4gbmF0aXZlRXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZShr
ZXlBcmcpO1xuICB9XG4gIHZhciBrZXlQcm9wID0gbW9kaWZpZXJLZXlUb1Byb3Bba2V5QXJnXTtc
biAgcmV0dXJuIGtleVByb3AgPyAhIW5hdGl2ZUV2ZW50W2tleVByb3BdIDogZmFsc2U7XG59XG5c
bmZ1bmN0aW9uIGdldEV2ZW50TW9kaWZpZXJTdGF0ZShuYXRpdmVFdmVudCkge1xuICByZXR1cm4g
bW9kaWZpZXJTdGF0ZUdldHRlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudE1vZGlm
aWVyU3RhdGU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAq
KiAuL34vcmVhY3QtZG9tL2xpYi9nZXRFdmVudE1vZGlmaWVyU3RhdGUuanNcbiAqKiBtb2R1bGUg
aWQgPSA0NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBHZXRzIHRoZSB0YXJnZXQg
bm9kZSBmcm9tIGEgbmF0aXZlIGJyb3dzZXIgZXZlbnQgYnkgYWNjb3VudGluZyBmb3JcbiAqIGlu
Y29uc2lzdGVuY2llcyBpbiBicm93c2VyIERPTSBBUElzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0
fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEByZXR1cm4ge0RPTUV2ZW50
VGFyZ2V0fSBUYXJnZXQgbm9kZS5cbiAqL1xuXG5mdW5jdGlvbiBnZXRFdmVudFRhcmdldChuYXRp
dmVFdmVudCkge1xuICB2YXIgdGFyZ2V0ID0gbmF0aXZlRXZlbnQudGFyZ2V0IHx8IG5hdGl2ZUV2
ZW50LnNyY0VsZW1lbnQgfHwgd2luZG93O1xuXG4gIC8vIE5vcm1hbGl6ZSBTVkcgPHVzZT4gZWxl
bWVudCBldmVudHMgIzQ5NjNcbiAgaWYgKHRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCkg
e1xuICAgIHRhcmdldCA9IHRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudDtcbiAgfVxuXG4g
IC8vIFNhZmFyaSBtYXkgZmlyZSBldmVudHMgb24gdGV4dCBub2RlcyAoTm9kZS5URVhUX05PREUg
aXMgMykuXG4gIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9qcy9ldmVudHNfcHJv
cGVydGllcy5odG1sXG4gIHJldHVybiB0YXJnZXQubm9kZVR5cGUgPT09IDMgPyB0YXJnZXQucGFy
ZW50Tm9kZSA6IHRhcmdldDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudFRhcmdldDtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1kb20vbGliL2dldEV2ZW50VGFyZ2V0LmpzXG4gKiogbW9kdWxlIGlkID0gNDZcbiAqKiBtb2R1
bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4n
dXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMv
bGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbnZhciB1c2VIYXNGZWF0dXJlO1xuaWYgKEV4
ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICB1c2VIYXNGZWF0dXJlID0gZG9jdW1l
bnQuaW1wbGVtZW50YXRpb24gJiYgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSAm
JlxuICAvLyBhbHdheXMgcmV0dXJucyB0cnVlIGluIG5ld2VyIGJyb3dzZXJzIGFzIHBlciB0aGUg
c3RhbmRhcmQuXG4gIC8vIEBzZWUgaHR0cDovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1kb21p
bXBsZW1lbnRhdGlvbi1oYXNmZWF0dXJlXG4gIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0Zl
YXR1cmUoJycsICcnKSAhPT0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYW4gZXZlbnQg
aXMgc3VwcG9ydGVkIGluIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC5cbiAqXG4g
KiBOT1RFOiBUaGlzIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5IGZvciBub24tZ2VuZXJpYyBldmVu
dHMgc3VjaCBhcyBgY2hhbmdlYCxcbiAqIGByZXNldGAsIGBsb2FkYCwgYGVycm9yYCwgYW5kIGBz
ZWxlY3RgLlxuICpcbiAqIEJvcnJvd3MgZnJvbSBNb2Rlcm5penIuXG4gKlxuICogQHBhcmFtIHtz
dHJpbmd9IGV2ZW50TmFtZVN1ZmZpeCBFdmVudCBuYW1lLCBlLmcuIFwiY2xpY2tcIi5cbiAqIEBw
YXJhbSB7P2Jvb2xlYW59IGNhcHR1cmUgQ2hlY2sgaWYgdGhlIGNhcHR1cmUgcGhhc2UgaXMgc3Vw
cG9ydGVkLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgZXZlbnQgaXMgc3VwcG9y
dGVkLlxuICogQGludGVybmFsXG4gKiBAbGljZW5zZSBNb2Rlcm5penIgMy4wLjBwcmUgKEN1c3Rv
bSBCdWlsZCkgfCBNSVRcbiAqL1xuZnVuY3Rpb24gaXNFdmVudFN1cHBvcnRlZChldmVudE5hbWVT
dWZmaXgsIGNhcHR1cmUpIHtcbiAgaWYgKCFFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00g
fHwgY2FwdHVyZSAmJiAhKCdhZGRFdmVudExpc3RlbmVyJyBpbiBkb2N1bWVudCkpIHtcbiAgICBy
ZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgZXZlbnROYW1lID0gJ29uJyArIGV2ZW50TmFtZVN1
ZmZpeDtcbiAgdmFyIGlzU3VwcG9ydGVkID0gZXZlbnROYW1lIGluIGRvY3VtZW50O1xuXG4gIGlm
ICghaXNTdXBwb3J0ZWQpIHtcbiAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpO1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGV2ZW50TmFtZSwgJ3JldHVybjsn
KTtcbiAgICBpc1N1cHBvcnRlZCA9IHR5cGVvZiBlbGVtZW50W2V2ZW50TmFtZV0gPT09ICdmdW5j
dGlvbic7XG4gIH1cblxuICBpZiAoIWlzU3VwcG9ydGVkICYmIHVzZUhhc0ZlYXR1cmUgJiYgZXZl
bnROYW1lU3VmZml4ID09PSAnd2hlZWwnKSB7XG4gICAgLy8gVGhpcyBpcyB0aGUgb25seSB3YXkg
dG8gdGVzdCBzdXBwb3J0IGZvciB0aGUgYHdoZWVsYCBldmVudCBpbiBJRTkrLlxuICAgIGlzU3Vw
cG9ydGVkID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgnRXZlbnRzLndoZWVs
JywgJzMuMCcpO1xuICB9XG5cbiAgcmV0dXJuIGlzU3VwcG9ydGVkO1xufVxuXG5tb2R1bGUuZXhw
b3J0cyA9IGlzRXZlbnRTdXBwb3J0ZWQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9pc0V2ZW50U3VwcG9ydGVkLmpzXG4g
KiogbW9kdWxlIGlkID0gNDdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogR2l2ZW4g
YSBgcHJldkVsZW1lbnRgIGFuZCBgbmV4dEVsZW1lbnRgLCBkZXRlcm1pbmVzIGlmIHRoZSBleGlz
dGluZ1xuICogaW5zdGFuY2Ugc2hvdWxkIGJlIHVwZGF0ZWQgYXMgb3Bwb3NlZCB0byBiZWluZyBk
ZXN0cm95ZWQgb3IgcmVwbGFjZWQgYnkgYSBuZXdcbiAqIGluc3RhbmNlLiBCb3RoIGFyZ3VtZW50
cyBhcmUgZWxlbWVudHMuIFRoaXMgZW5zdXJlcyB0aGF0IHRoaXMgbG9naWMgY2FuXG4gKiBvcGVy
YXRlIG9uIHN0YXRlbGVzcyB0cmVlcyB3aXRob3V0IGFueSBiYWNraW5nIGluc3RhbmNlLlxuICpc
biAqIEBwYXJhbSB7P29iamVjdH0gcHJldkVsZW1lbnRcbiAqIEBwYXJhbSB7P29iamVjdH0gbmV4
dEVsZW1lbnRcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGV4aXN0aW5nIGluc3Rh
bmNlIHNob3VsZCBiZSB1cGRhdGVkLlxuICogQHByb3RlY3RlZFxuICovXG5cbmZ1bmN0aW9uIHNo
b3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkge1xuICB2
YXIgcHJldkVtcHR5ID0gcHJldkVsZW1lbnQgPT09IG51bGwgfHwgcHJldkVsZW1lbnQgPT09IGZh
bHNlO1xuICB2YXIgbmV4dEVtcHR5ID0gbmV4dEVsZW1lbnQgPT09IG51bGwgfHwgbmV4dEVsZW1l
bnQgPT09IGZhbHNlO1xuICBpZiAocHJldkVtcHR5IHx8IG5leHRFbXB0eSkge1xuICAgIHJldHVy
biBwcmV2RW1wdHkgPT09IG5leHRFbXB0eTtcbiAgfVxuXG4gIHZhciBwcmV2VHlwZSA9IHR5cGVv
ZiBwcmV2RWxlbWVudDtcbiAgdmFyIG5leHRUeXBlID0gdHlwZW9mIG5leHRFbGVtZW50O1xuICBp
ZiAocHJldlR5cGUgPT09ICdzdHJpbmcnIHx8IHByZXZUeXBlID09PSAnbnVtYmVyJykge1xuICAg
IHJldHVybiBuZXh0VHlwZSA9PT0gJ3N0cmluZycgfHwgbmV4dFR5cGUgPT09ICdudW1iZXInO1xu
ICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXh0VHlwZSA9PT0gJ29iamVjdCcgJiYgcHJldkVsZW1l
bnQudHlwZSA9PT0gbmV4dEVsZW1lbnQudHlwZSAmJiBwcmV2RWxlbWVudC5rZXkgPT09IG5leHRF
bGVtZW50LmtleTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVwZGF0ZVJlYWN0
Q29tcG9uZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0LWRvbS9saWIvc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQuanNcbiAqKiBt
b2R1bGUgaWQgPSA0OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5
cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1
aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJq
cy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93
YXJuaW5nJyk7XG5cbnZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSBlbXB0eUZ1bmN0aW9uO1xuXG5p
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAvLyBUaGlzIHZh
bGlkYXRpb24gY29kZSB3YXMgd3JpdHRlbiBiYXNlZCBvbiB0aGUgSFRNTDUgcGFyc2luZyBzcGVj
OlxuICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRt
bCNoYXMtYW4tZWxlbWVudC1pbi1zY29wZVxuICAvL1xuICAvLyBOb3RlOiB0aGlzIGRvZXMgbm90
IGNhdGNoIGFsbCBpbnZhbGlkIG5lc3RpbmcsIG5vciBkb2VzIGl0IHRyeSB0byAoYXMgaXQnc1xu
ICAvLyBub3QgY2xlYXIgd2hhdCBwcmFjdGljYWwgYmVuZWZpdCBkb2luZyBzbyBwcm92aWRlcyk7
IGluc3RlYWQsIHdlIHdhcm4gb25seVxuICAvLyBmb3IgY2FzZXMgd2hlcmUgdGhlIHBhcnNlciB3
aWxsIGdpdmUgYSBwYXJzZSB0cmVlIGRpZmZlcmluZyBmcm9tIHdoYXQgUmVhY3RcbiAgLy8gaW50
ZW5kZWQuIEZvciBleGFtcGxlLCA8Yj48ZGl2PjwvZGl2PjwvYj4gaXMgaW52YWxpZCBidXQgd2Ug
ZG9uJ3Qgd2FyblxuICAvLyBiZWNhdXNlIGl0IHN0aWxsIHBhcnNlcyBjb3JyZWN0bHk7IHdlIGRv
IHdhcm4gZm9yIG90aGVyIGNhc2VzIGxpa2UgbmVzdGVkXG4gIC8vIDxwPiB0YWdzIHdoZXJlIHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIHNlY29uZCBlbGVtZW50IGltcGxpY2l0bHkgY2xvc2VzIHRoZVxu
ICAvLyBmaXJzdCwgY2F1c2luZyBhIGNvbmZ1c2luZyBtZXNzLlxuXG4gIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3NwZWNpYWxcbiAgdmFyIHNw
ZWNpYWxUYWdzID0gWydhZGRyZXNzJywgJ2FwcGxldCcsICdhcmVhJywgJ2FydGljbGUnLCAnYXNp
ZGUnLCAnYmFzZScsICdiYXNlZm9udCcsICdiZ3NvdW5kJywgJ2Jsb2NrcXVvdGUnLCAnYm9keScs
ICdicicsICdidXR0b24nLCAnY2FwdGlvbicsICdjZW50ZXInLCAnY29sJywgJ2NvbGdyb3VwJywg
J2RkJywgJ2RldGFpbHMnLCAnZGlyJywgJ2RpdicsICdkbCcsICdkdCcsICdlbWJlZCcsICdmaWVs
ZHNldCcsICdmaWdjYXB0aW9uJywgJ2ZpZ3VyZScsICdmb290ZXInLCAnZm9ybScsICdmcmFtZScs
ICdmcmFtZXNldCcsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScsICdoNicsICdoZWFkJywg
J2hlYWRlcicsICdoZ3JvdXAnLCAnaHInLCAnaHRtbCcsICdpZnJhbWUnLCAnaW1nJywgJ2lucHV0
JywgJ2lzaW5kZXgnLCAnbGknLCAnbGluaycsICdsaXN0aW5nJywgJ21haW4nLCAnbWFycXVlZScs
ICdtZW51JywgJ21lbnVpdGVtJywgJ21ldGEnLCAnbmF2JywgJ25vZW1iZWQnLCAnbm9mcmFtZXMn
LCAnbm9zY3JpcHQnLCAnb2JqZWN0JywgJ29sJywgJ3AnLCAncGFyYW0nLCAncGxhaW50ZXh0Jywg
J3ByZScsICdzY3JpcHQnLCAnc2VjdGlvbicsICdzZWxlY3QnLCAnc291cmNlJywgJ3N0eWxlJywg
J3N1bW1hcnknLCAndGFibGUnLCAndGJvZHknLCAndGQnLCAndGVtcGxhdGUnLCAndGV4dGFyZWEn
LCAndGZvb3QnLCAndGgnLCAndGhlYWQnLCAndGl0bGUnLCAndHInLCAndHJhY2snLCAndWwnLCAn
d2JyJywgJ3htcCddO1xuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL3N5bnRheC5odG1sI2hhcy1hbi1lbGVtZW50LWluLXNjb3BlXG4gIHZhciBpblNjb3BlVGFn
cyA9IFsnYXBwbGV0JywgJ2NhcHRpb24nLCAnaHRtbCcsICd0YWJsZScsICd0ZCcsICd0aCcsICdt
YXJxdWVlJywgJ29iamVjdCcsICd0ZW1wbGF0ZScsXG5cbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaHRtbC1pbnRlZ3JhdGlvbi1wb2ludFxu
ICAvLyBUT0RPOiBEaXN0aW5ndWlzaCBieSBuYW1lc3BhY2UgaGVyZSAtLSBmb3IgPHRpdGxlPiwg
aW5jbHVkaW5nIGl0IGhlcmVcbiAgLy8gZXJycyBvbiB0aGUgc2lkZSBvZiBmZXdlciB3YXJuaW5n
c1xuICAnZm9yZWlnbk9iamVjdCcsICdkZXNjJywgJ3RpdGxlJ107XG5cbiAgLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQt
aW4tYnV0dG9uLXNjb3BlXG4gIHZhciBidXR0b25TY29wZVRhZ3MgPSBpblNjb3BlVGFncy5jb25j
YXQoWydidXR0b24nXSk7XG5cbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvc3ludGF4Lmh0bWwjZ2VuZXJhdGUtaW1wbGllZC1lbmQtdGFnc1xuICB2YXIgaW1wbGll
ZEVuZFRhZ3MgPSBbJ2RkJywgJ2R0JywgJ2xpJywgJ29wdGlvbicsICdvcHRncm91cCcsICdwJywg
J3JwJywgJ3J0J107XG5cbiAgdmFyIGVtcHR5QW5jZXN0b3JJbmZvID0ge1xuICAgIGN1cnJlbnQ6
IG51bGwsXG5cbiAgICBmb3JtVGFnOiBudWxsLFxuICAgIGFUYWdJblNjb3BlOiBudWxsLFxuICAg
IGJ1dHRvblRhZ0luU2NvcGU6IG51bGwsXG4gICAgbm9iclRhZ0luU2NvcGU6IG51bGwsXG4gICAg
cFRhZ0luQnV0dG9uU2NvcGU6IG51bGwsXG5cbiAgICBsaXN0SXRlbVRhZ0F1dG9jbG9zaW5nOiBu
dWxsLFxuICAgIGRsSXRlbVRhZ0F1dG9jbG9zaW5nOiBudWxsXG4gIH07XG5cbiAgdmFyIHVwZGF0
ZWRBbmNlc3RvckluZm8gPSBmdW5jdGlvbiAob2xkSW5mbywgdGFnLCBpbnN0YW5jZSkge1xuICAg
IHZhciBhbmNlc3RvckluZm8gPSBfYXNzaWduKHt9LCBvbGRJbmZvIHx8IGVtcHR5QW5jZXN0b3JJ
bmZvKTtcbiAgICB2YXIgaW5mbyA9IHsgdGFnOiB0YWcsIGluc3RhbmNlOiBpbnN0YW5jZSB9O1xu
XG4gICAgaWYgKGluU2NvcGVUYWdzLmluZGV4T2YodGFnKSAhPT0gLTEpIHtcbiAgICAgIGFuY2Vz
dG9ySW5mby5hVGFnSW5TY29wZSA9IG51bGw7XG4gICAgICBhbmNlc3RvckluZm8uYnV0dG9uVGFn
SW5TY29wZSA9IG51bGw7XG4gICAgICBhbmNlc3RvckluZm8ubm9iclRhZ0luU2NvcGUgPSBudWxs
O1xuICAgIH1cbiAgICBpZiAoYnV0dG9uU2NvcGVUYWdzLmluZGV4T2YodGFnKSAhPT0gLTEpIHtc
biAgICAgIGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZSA9IG51bGw7XG4gICAgfVxuXG4g
ICAgLy8gU2VlIHJ1bGVzIGZvciAnbGknLCAnZGQnLCAnZHQnIHN0YXJ0IHRhZ3MgaW5cbiAgICAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJz
aW5nLW1haW4taW5ib2R5XG4gICAgaWYgKHNwZWNpYWxUYWdzLmluZGV4T2YodGFnKSAhPT0gLTEg
JiYgdGFnICE9PSAnYWRkcmVzcycgJiYgdGFnICE9PSAnZGl2JyAmJiB0YWcgIT09ICdwJykge1xu
ICAgICAgYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3NpbmcgPSBudWxsO1xuICAgICAg
YW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5nID0gbnVsbDtcbiAgICB9XG5cbiAgICBh
bmNlc3RvckluZm8uY3VycmVudCA9IGluZm87XG5cbiAgICBpZiAodGFnID09PSAnZm9ybScpIHtc
biAgICAgIGFuY2VzdG9ySW5mby5mb3JtVGFnID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9
PT0gJ2EnKSB7XG4gICAgICBhbmNlc3RvckluZm8uYVRhZ0luU2NvcGUgPSBpbmZvO1xuICAgIH1c
biAgICBpZiAodGFnID09PSAnYnV0dG9uJykge1xuICAgICAgYW5jZXN0b3JJbmZvLmJ1dHRvblRh
Z0luU2NvcGUgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAnbm9icicpIHtcbiAgICAg
IGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZSA9IGluZm87XG4gICAgfVxuICAgIGlmICh0YWcg
PT09ICdwJykge1xuICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlID0gaW5mbztc
biAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ2xpJykge1xuICAgICAgYW5jZXN0b3JJbmZvLmxpc3RJ
dGVtVGFnQXV0b2Nsb3NpbmcgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAnZGQnIHx8
IHRhZyA9PT0gJ2R0Jykge1xuICAgICAgYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5n
ID0gaW5mbztcbiAgICB9XG5cbiAgICByZXR1cm4gYW5jZXN0b3JJbmZvO1xuICB9O1xuXG4gIC8q
KlxuICAgKiBSZXR1cm5zIHdoZXRoZXJcbiAgICovXG4gIHZhciBpc1RhZ1ZhbGlkV2l0aFBhcmVu
dCA9IGZ1bmN0aW9uICh0YWcsIHBhcmVudFRhZykge1xuICAgIC8vIEZpcnN0LCBsZXQncyBjaGVj
ayBpZiB3ZSdyZSBpbiBhbiB1bnVzdWFsIHBhcnNpbmcgbW9kZS4uLlxuICAgIHN3aXRjaCAocGFy
ZW50VGFnKSB7XG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5zZWxlY3RcbiAgICAgIGNhc2UgJ3NlbGVjdCc6
XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24nIHx8IHRhZyA9PT0gJ29wdGdyb3VwJyB8
fCB0YWcgPT09ICcjdGV4dCc7XG4gICAgICBjYXNlICdvcHRncm91cCc6XG4gICAgICAgIHJldHVy
biB0YWcgPT09ICdvcHRpb24nIHx8IHRhZyA9PT0gJyN0ZXh0JztcbiAgICAgIC8vIFN0cmljdGx5
IHNwZWFraW5nLCBzZWVpbmcgYW4gPG9wdGlvbj4gZG9lc24ndCBtZWFuIHdlJ3JlIGluIGEgPHNl
bGVjdD5cbiAgICAgIC8vIGJ1dFxuICAgICAgY2FzZSAnb3B0aW9uJzpcbiAgICAgICAgcmV0dXJu
IHRhZyA9PT0gJyN0ZXh0JztcbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRkXG4gICAgICAvLyBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4t
aW5jYXB0aW9uXG4gICAgICAvLyBObyBzcGVjaWFsIGJlaGF2aW9yIHNpbmNlIHRoZXNlIHJ1bGVz
IGZhbGwgYmFjayB0byBcImluIGJvZHlcIiBtb2RlIGZvclxuICAgICAgLy8gYWxsIGV4Y2VwdCBz
cGVjaWFsIHRhYmxlIG5vZGVzIHdoaWNoIGNhdXNlIGJhZCBwYXJzaW5nIGJlaGF2aW9yIGFueXdh
eS5cblxuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3lu
dGF4Lmh0bWwjcGFyc2luZy1tYWluLWludHJcbiAgICAgIGNhc2UgJ3RyJzpcbiAgICAgICAgcmV0
dXJuIHRhZyA9PT0gJ3RoJyB8fCB0YWcgPT09ICd0ZCcgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRh
ZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuICAgICAgLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWlu
dGJvZHlcbiAgICAgIGNhc2UgJ3Rib2R5JzpcbiAgICAgIGNhc2UgJ3RoZWFkJzpcbiAgICAgIGNh
c2UgJ3Rmb290JzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ3RyJyB8fCB0YWcgPT09ICdzdHls
ZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG4gICAgICAvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5n
LW1haW4taW5jb2xncm91cFxuICAgICAgY2FzZSAnY29sZ3JvdXAnOlxuICAgICAgICByZXR1cm4g
dGFnID09PSAnY29sJyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG4gICAgICAvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50
YWJsZVxuICAgICAgY2FzZSAndGFibGUnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnY2FwdGlv
bicgfHwgdGFnID09PSAnY29sZ3JvdXAnIHx8IHRhZyA9PT0gJ3Rib2R5JyB8fCB0YWcgPT09ICd0
Zm9vdCcgfHwgdGFnID09PSAndGhlYWQnIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdz
Y3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmhlYWRcbiAg
ICAgIGNhc2UgJ2hlYWQnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnYmFzZScgfHwgdGFnID09
PSAnYmFzZWZvbnQnIHx8IHRhZyA9PT0gJ2Jnc291bmQnIHx8IHRhZyA9PT0gJ2xpbmsnIHx8IHRh
ZyA9PT0gJ21ldGEnIHx8IHRhZyA9PT0gJ3RpdGxlJyB8fCB0YWcgPT09ICdub3NjcmlwdCcgfHwg
dGFnID09PSAnbm9mcmFtZXMnIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQn
IHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlL3NlbWFudGljcy5odG1sI3RoZS1odG1sLWVsZW1lbnRcbiAgICAgIGNh
c2UgJ2h0bWwnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnaGVhZCcgfHwgdGFnID09PSAnYm9k
eSc7XG4gICAgICBjYXNlICcjZG9jdW1lbnQnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnaHRt
bCc7XG4gICAgfVxuXG4gICAgLy8gUHJvYmFibHkgaW4gdGhlIFwiaW4gYm9keVwiIHBhcnNpbmcg
bW9kZSwgc28gd2Ugb3V0bGF3IG9ubHkgdGFnIGNvbWJvc1xuICAgIC8vIHdoZXJlIHRoZSBwYXJz
aW5nIHJ1bGVzIGNhdXNlIGltcGxpY2l0IG9wZW5zIG9yIGNsb3NlcyB0byBiZSBhZGRlZC5cbiAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNw
YXJzaW5nLW1haW4taW5ib2R5XG4gICAgc3dpdGNoICh0YWcpIHtcbiAgICAgIGNhc2UgJ2gxJzpc
biAgICAgIGNhc2UgJ2gyJzpcbiAgICAgIGNhc2UgJ2gzJzpcbiAgICAgIGNhc2UgJ2g0JzpcbiAg
ICAgIGNhc2UgJ2g1JzpcbiAgICAgIGNhc2UgJ2g2JzpcbiAgICAgICAgcmV0dXJuIHBhcmVudFRh
ZyAhPT0gJ2gxJyAmJiBwYXJlbnRUYWcgIT09ICdoMicgJiYgcGFyZW50VGFnICE9PSAnaDMnICYm
IHBhcmVudFRhZyAhPT0gJ2g0JyAmJiBwYXJlbnRUYWcgIT09ICdoNScgJiYgcGFyZW50VGFnICE9
PSAnaDYnO1xuXG4gICAgICBjYXNlICdycCc6XG4gICAgICBjYXNlICdydCc6XG4gICAgICAgIHJl
dHVybiBpbXBsaWVkRW5kVGFncy5pbmRleE9mKHBhcmVudFRhZykgPT09IC0xO1xuXG4gICAgICBj
YXNlICdib2R5JzpcbiAgICAgIGNhc2UgJ2NhcHRpb24nOlxuICAgICAgY2FzZSAnY29sJzpcbiAg
ICAgIGNhc2UgJ2NvbGdyb3VwJzpcbiAgICAgIGNhc2UgJ2ZyYW1lJzpcbiAgICAgIGNhc2UgJ2hl
YWQnOlxuICAgICAgY2FzZSAnaHRtbCc6XG4gICAgICBjYXNlICd0Ym9keSc6XG4gICAgICBjYXNl
ICd0ZCc6XG4gICAgICBjYXNlICd0Zm9vdCc6XG4gICAgICBjYXNlICd0aCc6XG4gICAgICBjYXNl
ICd0aGVhZCc6XG4gICAgICBjYXNlICd0cic6XG4gICAgICAgIC8vIFRoZXNlIHRhZ3MgYXJlIG9u
bHkgdmFsaWQgd2l0aCBhIGZldyBwYXJlbnRzIHRoYXQgaGF2ZSBzcGVjaWFsIGNoaWxkXG4gICAg
ICAgIC8vIHBhcnNpbmcgcnVsZXMgLS0gaWYgd2UncmUgZG93biBoZXJlLCB0aGVuIG5vbmUgb2Yg
dGhvc2UgbWF0Y2hlZCBhbmRcbiAgICAgICAgLy8gc28gd2UgYWxsb3cgaXQgb25seSBpZiB3ZSBk
b24ndCBrbm93IHdoYXQgdGhlIHBhcmVudCBpcywgYXMgYWxsIG90aGVyXG4gICAgICAgIC8vIGNh
c2VzIGFyZSBpbnZhbGlkLlxuICAgICAgICByZXR1cm4gcGFyZW50VGFnID09IG51bGw7XG4gICAg
fVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhl
clxuICAgKi9cbiAgdmFyIGZpbmRJbnZhbGlkQW5jZXN0b3JGb3JUYWcgPSBmdW5jdGlvbiAodGFn
LCBhbmNlc3RvckluZm8pIHtcbiAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgY2FzZSAnYWRkcmVz
cyc6XG4gICAgICBjYXNlICdhcnRpY2xlJzpcbiAgICAgIGNhc2UgJ2FzaWRlJzpcbiAgICAgIGNh
c2UgJ2Jsb2NrcXVvdGUnOlxuICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgIGNhc2UgJ2RldGFp
bHMnOlxuICAgICAgY2FzZSAnZGlhbG9nJzpcbiAgICAgIGNhc2UgJ2Rpcic6XG4gICAgICBjYXNl
ICdkaXYnOlxuICAgICAgY2FzZSAnZGwnOlxuICAgICAgY2FzZSAnZmllbGRzZXQnOlxuICAgICAg
Y2FzZSAnZmlnY2FwdGlvbic6XG4gICAgICBjYXNlICdmaWd1cmUnOlxuICAgICAgY2FzZSAnZm9v
dGVyJzpcbiAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICBjYXNlICdoZ3JvdXAnOlxuICAgICAg
Y2FzZSAnbWFpbic6XG4gICAgICBjYXNlICdtZW51JzpcbiAgICAgIGNhc2UgJ25hdic6XG4gICAg
ICBjYXNlICdvbCc6XG4gICAgICBjYXNlICdwJzpcbiAgICAgIGNhc2UgJ3NlY3Rpb24nOlxuICAg
ICAgY2FzZSAnc3VtbWFyeSc6XG4gICAgICBjYXNlICd1bCc6XG4gICAgICBjYXNlICdwcmUnOlxu
ICAgICAgY2FzZSAnbGlzdGluZyc6XG4gICAgICBjYXNlICd0YWJsZSc6XG4gICAgICBjYXNlICdo
cic6XG4gICAgICBjYXNlICd4bXAnOlxuICAgICAgY2FzZSAnaDEnOlxuICAgICAgY2FzZSAnaDIn
OlxuICAgICAgY2FzZSAnaDMnOlxuICAgICAgY2FzZSAnaDQnOlxuICAgICAgY2FzZSAnaDUnOlxu
ICAgICAgY2FzZSAnaDYnOlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRv
blNjb3BlO1xuXG4gICAgICBjYXNlICdmb3JtJzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5m
by5mb3JtVGFnIHx8IGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZTtcblxuICAgICAgY2Fz
ZSAnbGknOlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3Np
bmc7XG5cbiAgICAgIGNhc2UgJ2RkJzpcbiAgICAgIGNhc2UgJ2R0JzpcbiAgICAgICAgcmV0dXJu
IGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdBdXRvY2xvc2luZztcblxuICAgICAgY2FzZSAnYnV0dG9u
JzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5idXR0b25UYWdJblNjb3BlO1xuXG4gICAg
ICBjYXNlICdhJzpcbiAgICAgICAgLy8gU3BlYyBzYXlzIHNvbWV0aGluZyBhYm91dCBzdG9yaW5n
IGEgbGlzdCBvZiBtYXJrZXJzLCBidXQgaXQgc291bmRzXG4gICAgICAgIC8vIGVxdWl2YWxlbnQg
dG8gdGhpcyBjaGVjay5cbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZTtc
blxuICAgICAgY2FzZSAnbm9icic6XG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8ubm9iclRh
Z0luU2NvcGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgLyoqXG4gICAq
IEdpdmVuIGEgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgaW5zdGFuY2UsIHJldHVybiBhIGxpc3Qg
b2YgaXRzIHJlY3Vyc2l2ZVxuICAgKiBvd25lcnMsIHN0YXJ0aW5nIGF0IHRoZSByb290IGFuZCBl
bmRpbmcgd2l0aCB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuICAgKi9cbiAgdmFyIGZpbmRPd25lclN0
YWNrID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gICAgaWYgKCFpbnN0YW5jZSkge1xuICAgICAg
cmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIGRvIHtcbiAgICAg
IHN0YWNrLnB1c2goaW5zdGFuY2UpO1xuICAgIH0gd2hpbGUgKGluc3RhbmNlID0gaW5zdGFuY2Uu
X2N1cnJlbnRFbGVtZW50Ll9vd25lcik7XG4gICAgc3RhY2sucmV2ZXJzZSgpO1xuICAgIHJldHVy
biBzdGFjaztcbiAgfTtcblxuICB2YXIgZGlkV2FybiA9IHt9O1xuXG4gIHZhbGlkYXRlRE9NTmVz
dGluZyA9IGZ1bmN0aW9uIChjaGlsZFRhZywgY2hpbGRUZXh0LCBjaGlsZEluc3RhbmNlLCBhbmNl
c3RvckluZm8pIHtcbiAgICBhbmNlc3RvckluZm8gPSBhbmNlc3RvckluZm8gfHwgZW1wdHlBbmNl
c3RvckluZm87XG4gICAgdmFyIHBhcmVudEluZm8gPSBhbmNlc3RvckluZm8uY3VycmVudDtcbiAg
ICB2YXIgcGFyZW50VGFnID0gcGFyZW50SW5mbyAmJiBwYXJlbnRJbmZvLnRhZztcblxuICAgIGlm
IChjaGlsZFRleHQgIT0gbnVsbCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoY2hpbGRUYWcgPT0gbnVsbCwgJ3ZhbGlkYXRlRE9NTmVzdGlu
Zzogd2hlbiBjaGlsZFRleHQgaXMgcGFzc2VkLCBjaGlsZFRhZyBzaG91bGQgYmUgbnVsbCcpIDog
dm9pZCAwO1xuICAgICAgY2hpbGRUYWcgPSAnI3RleHQnO1xuICAgIH1cblxuICAgIHZhciBpbnZh
bGlkUGFyZW50ID0gaXNUYWdWYWxpZFdpdGhQYXJlbnQoY2hpbGRUYWcsIHBhcmVudFRhZykgPyBu
dWxsIDogcGFyZW50SW5mbztcbiAgICB2YXIgaW52YWxpZEFuY2VzdG9yID0gaW52YWxpZFBhcmVu
dCA/IG51bGwgOiBmaW5kSW52YWxpZEFuY2VzdG9yRm9yVGFnKGNoaWxkVGFnLCBhbmNlc3Rvcklu
Zm8pO1xuICAgIHZhciBwcm9ibGVtYXRpYyA9IGludmFsaWRQYXJlbnQgfHwgaW52YWxpZEFuY2Vz
dG9yO1xuXG4gICAgaWYgKHByb2JsZW1hdGljKSB7XG4gICAgICB2YXIgYW5jZXN0b3JUYWcgPSBw
cm9ibGVtYXRpYy50YWc7XG4gICAgICB2YXIgYW5jZXN0b3JJbnN0YW5jZSA9IHByb2JsZW1hdGlj
Lmluc3RhbmNlO1xuXG4gICAgICB2YXIgY2hpbGRPd25lciA9IGNoaWxkSW5zdGFuY2UgJiYgY2hp
bGRJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuICAgICAgdmFyIGFuY2VzdG9yT3du
ZXIgPSBhbmNlc3Rvckluc3RhbmNlICYmIGFuY2VzdG9ySW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50
Ll9vd25lcjtcblxuICAgICAgdmFyIGNoaWxkT3duZXJzID0gZmluZE93bmVyU3RhY2soY2hpbGRP
d25lcik7XG4gICAgICB2YXIgYW5jZXN0b3JPd25lcnMgPSBmaW5kT3duZXJTdGFjayhhbmNlc3Rv
ck93bmVyKTtcblxuICAgICAgdmFyIG1pblN0YWNrTGVuID0gTWF0aC5taW4oY2hpbGRPd25lcnMu
bGVuZ3RoLCBhbmNlc3Rvck93bmVycy5sZW5ndGgpO1xuICAgICAgdmFyIGk7XG5cbiAgICAgIHZh
ciBkZWVwZXN0Q29tbW9uID0gLTE7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbWluU3RhY2tMZW47
IGkrKykge1xuICAgICAgICBpZiAoY2hpbGRPd25lcnNbaV0gPT09IGFuY2VzdG9yT3duZXJzW2ld
KSB7XG4gICAgICAgICAgZGVlcGVzdENvbW1vbiA9IGk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAg
ICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIFVOS05PV04gPSAn
KHVua25vd24pJztcbiAgICAgIHZhciBjaGlsZE93bmVyTmFtZXMgPSBjaGlsZE93bmVycy5zbGlj
ZShkZWVwZXN0Q29tbW9uICsgMSkubWFwKGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgICAgIHJldHVy
biBpbnN0LmdldE5hbWUoKSB8fCBVTktOT1dOO1xuICAgICAgfSk7XG4gICAgICB2YXIgYW5jZXN0
b3JPd25lck5hbWVzID0gYW5jZXN0b3JPd25lcnMuc2xpY2UoZGVlcGVzdENvbW1vbiArIDEpLm1h
cChmdW5jdGlvbiAoaW5zdCkge1xuICAgICAgICByZXR1cm4gaW5zdC5nZXROYW1lKCkgfHwgVU5L
Tk9XTjtcbiAgICAgIH0pO1xuICAgICAgdmFyIG93bmVySW5mbyA9IFtdLmNvbmNhdChcbiAgICAg
IC8vIElmIHRoZSBwYXJlbnQgYW5kIGNoaWxkIGluc3RhbmNlcyBoYXZlIGEgY29tbW9uIG93bmVy
IGFuY2VzdG9yLCBzdGFydFxuICAgICAgLy8gd2l0aCB0aGF0IC0tIG90aGVyd2lzZSB3ZSBqdXN0
IHN0YXJ0IHdpdGggdGhlIHBhcmVudCdzIG93bmVycy5cbiAgICAgIGRlZXBlc3RDb21tb24gIT09
IC0xID8gY2hpbGRPd25lcnNbZGVlcGVzdENvbW1vbl0uZ2V0TmFtZSgpIHx8IFVOS05PV04gOiBb
XSwgYW5jZXN0b3JPd25lck5hbWVzLCBhbmNlc3RvclRhZyxcbiAgICAgIC8vIElmIHdlJ3JlIHdh
cm5pbmcgYWJvdXQgYW4gaW52YWxpZCAobm9uLXBhcmVudCkgYW5jZXN0cnksIGFkZCAnLi4uJ1xu
ICAgICAgaW52YWxpZEFuY2VzdG9yID8gWycuLi4nXSA6IFtdLCBjaGlsZE93bmVyTmFtZXMsIGNo
aWxkVGFnKS5qb2luKCcgPiAnKTtcblxuICAgICAgdmFyIHdhcm5LZXkgPSAhIWludmFsaWRQYXJl
bnQgKyAnfCcgKyBjaGlsZFRhZyArICd8JyArIGFuY2VzdG9yVGFnICsgJ3wnICsgb3duZXJJbmZv
O1xuICAgICAgaWYgKGRpZFdhcm5bd2FybktleV0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAg
fVxuICAgICAgZGlkV2Fyblt3YXJuS2V5XSA9IHRydWU7XG5cbiAgICAgIHZhciB0YWdEaXNwbGF5
TmFtZSA9IGNoaWxkVGFnO1xuICAgICAgdmFyIHdoaXRlc3BhY2VJbmZvID0gJyc7XG4gICAgICBp
ZiAoY2hpbGRUYWcgPT09ICcjdGV4dCcpIHtcbiAgICAgICAgaWYgKC9cXFMvLnRlc3QoY2hpbGRU
ZXh0KSkge1xuICAgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJ1RleHQgbm9kZXMnO1xuICAgICAg
ICB9IGVsc2Uge1xuICAgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJ1doaXRlc3BhY2UgdGV4dCBu
b2Rlcyc7XG4gICAgICAgICAgd2hpdGVzcGFjZUluZm8gPSBcIiBNYWtlIHN1cmUgeW91IGRvbid0
IGhhdmUgYW55IGV4dHJhIHdoaXRlc3BhY2UgYmV0d2VlbiB0YWdzIG9uIFwiICsgJ2VhY2ggbGlu
ZSBvZiB5b3VyIHNvdXJjZSBjb2RlLic7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAg
ICAgIHRhZ0Rpc3BsYXlOYW1lID0gJzwnICsgY2hpbGRUYWcgKyAnPic7XG4gICAgICB9XG5cbiAg
ICAgIGlmIChpbnZhbGlkUGFyZW50KSB7XG4gICAgICAgIHZhciBpbmZvID0gJyc7XG4gICAgICAg
IGlmIChhbmNlc3RvclRhZyA9PT0gJ3RhYmxlJyAmJiBjaGlsZFRhZyA9PT0gJ3RyJykge1xuICAg
ICAgICAgIGluZm8gKz0gJyBBZGQgYSA8dGJvZHk+IHRvIHlvdXIgY29kZSB0byBtYXRjaCB0aGUg
RE9NIHRyZWUgZ2VuZXJhdGVkIGJ5ICcgKyAndGhlIGJyb3dzZXIuJztcbiAgICAgICAgfVxuICAg
ICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxz
ZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4pOiAlcyBjYW5ub3QgYXBwZWFyIGFzIGEgY2hpbGQg
b2YgPCVzPi4lcyAnICsgJ1NlZSAlcy4lcycsIHRhZ0Rpc3BsYXlOYW1lLCBhbmNlc3RvclRhZywg
d2hpdGVzcGFjZUluZm8sIG93bmVySW5mbywgaW5mbykgOiB2b2lkIDA7XG4gICAgICB9IGVsc2Ug
e1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhmYWxzZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4pOiAlcyBjYW5ub3QgYXBwZWFyIGFzIGEg
ZGVzY2VuZGFudCBvZiAnICsgJzwlcz4uIFNlZSAlcy4nLCB0YWdEaXNwbGF5TmFtZSwgYW5jZXN0
b3JUYWcsIG93bmVySW5mbykgOiB2b2lkIDA7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHZh
bGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZvID0gdXBkYXRlZEFuY2VzdG9ySW5m
bztcblxuICAvLyBGb3IgdGVzdGluZ1xuICB2YWxpZGF0ZURPTU5lc3RpbmcuaXNUYWdWYWxpZElu
Q29udGV4dCA9IGZ1bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykge1xuICAgIGFuY2VzdG9ySW5m
byA9IGFuY2VzdG9ySW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbztcbiAgICB2YXIgcGFyZW50SW5m
byA9IGFuY2VzdG9ySW5mby5jdXJyZW50O1xuICAgIHZhciBwYXJlbnRUYWcgPSBwYXJlbnRJbmZv
ICYmIHBhcmVudEluZm8udGFnO1xuICAgIHJldHVybiBpc1RhZ1ZhbGlkV2l0aFBhcmVudCh0YWcs
IHBhcmVudFRhZykgJiYgIWZpbmRJbnZhbGlkQW5jZXN0b3JGb3JUYWcodGFnLCBhbmNlc3Rvcklu
Zm8pO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbGlkYXRlRE9NTmVzdGluZztcblxu
XG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1k
b20vbGliL3ZhbGlkYXRlRE9NTmVzdGluZy5qc1xuICoqIG1vZHVsZSBpZCA9IDQ5XG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVs
ZSA9IHRydWU7XG5leHBvcnRzLmRlZmF1bHQgPSB3YXJuaW5nO1xuLyoqXG4gKiBQcmludHMgYSB3
YXJuaW5nIGluIHRoZSBjb25zb2xlIGlmIGl0IGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0ge1N0cmlu
Z30gbWVzc2FnZSBUaGUgd2FybmluZyBtZXNzYWdlLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9c
bmZ1bmN0aW9uIHdhcm5pbmcobWVzc2FnZSkge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25z
b2xlICovXG4gIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNv
bnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2Up
O1xuICB9XG4gIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqL1xuICB0cnkge1xuICAgIC8v
IFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgaWYgeW91IGVu
YWJsZVxuICAgIC8vIFwiYnJlYWsgb24gYWxsIGV4Y2VwdGlvbnNcIiBpbiB5b3VyIGNvbnNvbGUs
XG4gICAgLy8gaXQgd291bGQgcGF1c2UgdGhlIGV4ZWN1dGlvbiBhdCB0aGlzIGxpbmUuXG4gICAg
dGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWVtcHR5
ICovXG4gIH0gY2F0Y2ggKGUpIHt9XG4gIC8qIGVzbGludC1lbmFibGUgbm8tZW1wdHkgKi9cbn1c
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1yZWR1eC9saWIvdXRpbHMvd2FybmluZy5qc1xuICoqIG1vZHVsZSBpZCA9IDUwXG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ29weXJpZ2h0
IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbnZhciBlbXB0eUZ1bmN0aW9uID0g
cmVxdWlyZSgnLi9lbXB0eUZ1bmN0aW9uJyk7XG5cbi8qKlxuICogVXBzdHJlYW0gdmVyc2lvbiBv
ZiBldmVudCBsaXN0ZW5lci4gRG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgc3BlY2lmaWNcbiAq
IG5hdHVyZSBvZiBwbGF0Zm9ybS5cbiAqL1xudmFyIEV2ZW50TGlzdGVuZXIgPSB7XG4gIC8qKlxu
ICAgKiBMaXN0ZW4gdG8gRE9NIGV2ZW50cyBkdXJpbmcgdGhlIGJ1YmJsZSBwaGFzZS5cbiAgICpc
biAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gdGFyZ2V0IERPTSBlbGVtZW50IHRvIHJlZ2lz
dGVyIGxpc3RlbmVyIG9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRUeXBlIEV2ZW50IHR5
cGUsIGUuZy4gJ2NsaWNrJyBvciAnbW91c2VvdmVyJy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0g
Y2FsbGJhY2sgQ2FsbGJhY2sgZnVuY3Rpb24uXG4gICAqIEByZXR1cm4ge29iamVjdH0gT2JqZWN0
IHdpdGggYSBgcmVtb3ZlYCBtZXRob2QuXG4gICAqL1xuICBsaXN0ZW46IGZ1bmN0aW9uIGxpc3Rl
bih0YXJnZXQsIGV2ZW50VHlwZSwgY2FsbGJhY2spIHtcbiAgICBpZiAodGFyZ2V0LmFkZEV2ZW50
TGlzdGVuZXIpIHtcbiAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2Fs
bGJhY2ssIGZhbHNlKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24g
cmVtb3ZlKCkge1xuICAgICAgICAgIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlw
ZSwgY2FsbGJhY2ssIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYg
KHRhcmdldC5hdHRhY2hFdmVudCkge1xuICAgICAgdGFyZ2V0LmF0dGFjaEV2ZW50KCdvbicgKyBl
dmVudFR5cGUsIGNhbGxiYWNrKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlbW92ZTogZnVu
Y3Rpb24gcmVtb3ZlKCkge1xuICAgICAgICAgIHRhcmdldC5kZXRhY2hFdmVudCgnb24nICsgZXZl
bnRUeXBlLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9LFxuXG4g
IC8qKlxuICAgKiBMaXN0ZW4gdG8gRE9NIGV2ZW50cyBkdXJpbmcgdGhlIGNhcHR1cmUgcGhhc2Uu
XG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRhcmdldCBET00gZWxlbWVudCB0
byByZWdpc3RlciBsaXN0ZW5lciBvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VHlwZSBF
dmVudCB0eXBlLCBlLmcuICdjbGljaycgb3IgJ21vdXNlb3ZlcicuXG4gICAqIEBwYXJhbSB7ZnVu
Y3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIGZ1bmN0aW9uLlxuICAgKiBAcmV0dXJuIHtvYmplY3R9
IE9iamVjdCB3aXRoIGEgYHJlbW92ZWAgbWV0aG9kLlxuICAgKi9cbiAgY2FwdHVyZTogZnVuY3Rp
b24gY2FwdHVyZSh0YXJnZXQsIGV2ZW50VHlwZSwgY2FsbGJhY2spIHtcbiAgICBpZiAodGFyZ2V0
LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgY2FsbGJhY2ssIHRydWUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVtb3ZlOiBm
dW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBjYWxsYmFjaywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBl
bHNlIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0F0dGVtcHRlZCB0byBsaXN0ZW4gdG8gZXZlbnRzIGR1
cmluZyB0aGUgY2FwdHVyZSBwaGFzZSBvbiBhICcgKyAnYnJvd3NlciB0aGF0IGRvZXMgbm90IHN1
cHBvcnQgdGhlIGNhcHR1cmUgcGhhc2UuIFlvdXIgYXBwbGljYXRpb24gJyArICd3aWxsIG5vdCBy
ZWNlaXZlIHNvbWUgZXZlbnRzLicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAg
cmVtb3ZlOiBlbXB0eUZ1bmN0aW9uXG4gICAgICB9O1xuICAgIH1cbiAgfSxcblxuICByZWdpc3Rl
ckRlZmF1bHQ6IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdCgpIHt9XG59O1xuXG5tb2R1bGUuZXhw
b3J0cyA9IEV2ZW50TGlzdGVuZXI7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvRXZlbnRMaXN0ZW5lci5qc1xuICoqIG1vZHVsZSBp
ZCA9IDUxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAo
YykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBAcGFyYW0ge0RPTUVs
ZW1lbnR9IG5vZGUgaW5wdXQvdGV4dGFyZWEgdG8gZm9jdXNcbiAqL1xuXG5mdW5jdGlvbiBmb2N1
c05vZGUobm9kZSkge1xuICAvLyBJRTggY2FuIHRocm93IFwiQ2FuJ3QgbW92ZSBmb2N1cyB0byB0
aGUgY29udHJvbCBiZWNhdXNlIGl0IGlzIGludmlzaWJsZSxcbiAgLy8gbm90IGVuYWJsZWQsIG9y
IG9mIGEgdHlwZSB0aGF0IGRvZXMgbm90IGFjY2VwdCB0aGUgZm9jdXMuXCIgZm9yIGFsbCBraW5k
cyBvZlxuICAvLyByZWFzb25zIHRoYXQgYXJlIHRvbyBleHBlbnNpdmUgYW5kIGZyYWdpbGUgdG8g
dGVzdC5cbiAgdHJ5IHtcbiAgICBub2RlLmZvY3VzKCk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59XG5c
bm1vZHVsZS5leHBvcnRzID0gZm9jdXNOb2RlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2ZvY3VzTm9kZS5qc1xuICoqIG1vZHVs
ZSBpZCA9IDUyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5c
bi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbi8q
IGVzbGludC1kaXNhYmxlIGZiLXd3dy90eXBlb2YtdW5kZWZpbmVkICovXG5cbi8qKlxuICogU2Ft
ZSBhcyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGJ1dCB3cmFwcyBpbiBhIHRyeS1jYXRjaCBibG9j
ay4gSW4gSUUgaXQgaXNcbiAqIG5vdCBzYWZlIHRvIGNhbGwgZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dCBpZiB0aGVyZSBpcyBub3RoaW5nIGZvY3VzZWQuXG4gKlxuICogVGhlIGFjdGl2ZUVsZW1lbnQg
d2lsbCBiZSBudWxsIG9ubHkgaWYgdGhlIGRvY3VtZW50IG9yIGRvY3VtZW50IGJvZHkgaXMgbm90
XG4gKiB5ZXQgZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0gez9ET01Eb2N1bWVudH0gZG9jIERlZmF1
bHRzIHRvIGN1cnJlbnQgZG9jdW1lbnQuXG4gKiBAcmV0dXJuIHs/RE9NRWxlbWVudH1cbiAqL1xu
ZnVuY3Rpb24gZ2V0QWN0aXZlRWxlbWVudChkb2MpIC8qP0RPTUVsZW1lbnQqL3tcbiAgZG9jID0g
ZG9jIHx8ICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gZG9jdW1lbnQgOiB1bmRl
ZmluZWQpO1xuICBpZiAodHlwZW9mIGRvYyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4g
bnVsbDtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBkb2MuYWN0aXZlRWxlbWVudCB8fCBkb2Mu
Ym9keTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBkb2MuYm9keTtcbiAgfVxufVxuXG5t
b2R1bGUuZXhwb3J0cyA9IGdldEFjdGl2ZUVsZW1lbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvZ2V0QWN0aXZlRWxlbWVudC5q
c1xuICoqIG1vZHVsZSBpZCA9IDUzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIg
cm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5j
ZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbm1vZHVsZS5leHBvcnRzID0gU3lt
Ym9sO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vbG9kYXNoL19TeW1ib2wuanNcbiAqKiBtb2R1bGUgaWQgPSA1NFxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuJ3VzZSBzdHJpY3Qn
O1xuXG4vLyBSZWFjdCAxNS41IHJlZmVyZW5jZXMgdGhpcyBtb2R1bGUsIGFuZCBhc3N1bWVzIFBy
b3BUeXBlcyBhcmUgc3RpbGwgY2FsbGFibGUgaW4gcHJvZHVjdGlvbi5cbi8vIFRoZXJlZm9yZSB3
ZSByZS1leHBvcnQgZGV2ZWxvcG1lbnQtb25seSB2ZXJzaW9uIHdpdGggYWxsIHRoZSBQcm9wVHlw
ZXMgY2hlY2tzIGhlcmUuXG4vLyBIb3dldmVyIGlmIG9uZSBpcyBtaWdyYXRpbmcgdG8gdGhlIGBw
cm9wLXR5cGVzYCBucG0gbGlicmFyeSwgdGhleSB3aWxsIGdvIHRocm91Z2ggdGhlXG4vLyBgaW5k
ZXguanNgIGVudHJ5IHBvaW50LCBhbmQgaXQgd2lsbCBicmFuY2ggZGVwZW5kaW5nIG9uIHRoZSBl
bnZpcm9ubWVudC5cbnZhciBmYWN0b3J5ID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVj
a2VycycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpc1ZhbGlkRWxlbWVudCkge1xuICAv
LyBJdCBpcyBzdGlsbCBhbGxvd2VkIGluIDE1LjUuXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNz
ID0gZmFsc2U7XG4gIHJldHVybiBmYWN0b3J5KGlzVmFsaWRFbGVtZW50LCB0aHJvd09uRGlyZWN0
QWNjZXNzKTtcbn07XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RF
UlxuICoqIC4vfi9wcm9wLXR5cGVzL2ZhY3RvcnkuanNcbiAqKiBtb2R1bGUgaWQgPSA1NVxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxu
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJFQUNU
X0VMRU1FTlRfVFlQRSA9ICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmXG4gICAgU3lt
Ym9sLmZvciAmJlxuICAgIFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSkgfHxcbiAgICAweGVh
Yzc7XG5cbiAgdmFyIGlzVmFsaWRFbGVtZW50ID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0
dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmXG4gICAgICBvYmplY3QgIT09IG51bGwg
JiZcbiAgICAgIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xuICB9O1xu
XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGlu
dG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBl
cy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4
cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoaXNWYWxpZEVsZW1l
bnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1
c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhh
dmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhw
b3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cblxuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Byb3AtdHlw
ZXMvaW5kZXguanNcbiAqKiBtb2R1bGUgaWQgPSA1NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4g
KiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIg
UmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJ
TExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xu
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcHJv
cC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanNcbiAqKiBtb2R1bGUgaWQgPSA1N1xu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDU1MgcHJvcGVydGllcyB3aGljaCBhY2Nl
cHQgbnVtYmVycyBidXQgYXJlIG5vdCBpbiB1bml0cyBvZiBcInB4XCIuXG4gKi9cblxudmFyIGlz
VW5pdGxlc3NOdW1iZXIgPSB7XG4gIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiB0cnVlLFxuICBi
b3JkZXJJbWFnZU91dHNldDogdHJ1ZSxcbiAgYm9yZGVySW1hZ2VTbGljZTogdHJ1ZSxcbiAgYm9y
ZGVySW1hZ2VXaWR0aDogdHJ1ZSxcbiAgYm94RmxleDogdHJ1ZSxcbiAgYm94RmxleEdyb3VwOiB0
cnVlLFxuICBib3hPcmRpbmFsR3JvdXA6IHRydWUsXG4gIGNvbHVtbkNvdW50OiB0cnVlLFxuICBm
bGV4OiB0cnVlLFxuICBmbGV4R3JvdzogdHJ1ZSxcbiAgZmxleFBvc2l0aXZlOiB0cnVlLFxuICBm
bGV4U2hyaW5rOiB0cnVlLFxuICBmbGV4TmVnYXRpdmU6IHRydWUsXG4gIGZsZXhPcmRlcjogdHJ1
ZSxcbiAgZ3JpZFJvdzogdHJ1ZSxcbiAgZ3JpZFJvd0VuZDogdHJ1ZSxcbiAgZ3JpZFJvd1NwYW46
IHRydWUsXG4gIGdyaWRSb3dTdGFydDogdHJ1ZSxcbiAgZ3JpZENvbHVtbjogdHJ1ZSxcbiAgZ3Jp
ZENvbHVtbkVuZDogdHJ1ZSxcbiAgZ3JpZENvbHVtblNwYW46IHRydWUsXG4gIGdyaWRDb2x1bW5T
dGFydDogdHJ1ZSxcbiAgZm9udFdlaWdodDogdHJ1ZSxcbiAgbGluZUNsYW1wOiB0cnVlLFxuICBs
aW5lSGVpZ2h0OiB0cnVlLFxuICBvcGFjaXR5OiB0cnVlLFxuICBvcmRlcjogdHJ1ZSxcbiAgb3Jw
aGFuczogdHJ1ZSxcbiAgdGFiU2l6ZTogdHJ1ZSxcbiAgd2lkb3dzOiB0cnVlLFxuICB6SW5kZXg6
IHRydWUsXG4gIHpvb206IHRydWUsXG5cbiAgLy8gU1ZHLXJlbGF0ZWQgcHJvcGVydGllc1xuICBm
aWxsT3BhY2l0eTogdHJ1ZSxcbiAgZmxvb2RPcGFjaXR5OiB0cnVlLFxuICBzdG9wT3BhY2l0eTog
dHJ1ZSxcbiAgc3Ryb2tlRGFzaGFycmF5OiB0cnVlLFxuICBzdHJva2VEYXNob2Zmc2V0OiB0cnVl
LFxuICBzdHJva2VNaXRlcmxpbWl0OiB0cnVlLFxuICBzdHJva2VPcGFjaXR5OiB0cnVlLFxuICBz
dHJva2VXaWR0aDogdHJ1ZVxufTtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4IHZl
bmRvci1zcGVjaWZpYyBwcmVmaXgsIGVnOiBXZWJraXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkg
c3R5bGUgbmFtZSwgZWc6IHRyYW5zaXRpb25EdXJhdGlvblxuICogQHJldHVybiB7c3RyaW5nfSBz
dHlsZSBuYW1lIHByZWZpeGVkIHdpdGggYHByZWZpeGAsIHByb3Blcmx5IGNhbWVsQ2FzZWQsIGVn
OlxuICogV2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uXG4gKi9cbmZ1bmN0aW9uIHByZWZpeEtleShw
cmVmaXgsIGtleSkge1xuICByZXR1cm4gcHJlZml4ICsga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2Fz
ZSgpICsga2V5LnN1YnN0cmluZygxKTtcbn1cblxuLyoqXG4gKiBTdXBwb3J0IHN0eWxlIG5hbWVz
IHRoYXQgbWF5IGNvbWUgcGFzc2VkIGluIHByZWZpeGVkIGJ5IGFkZGluZyBwZXJtdXRhdGlvbnNc
biAqIG9mIHZlbmRvciBwcmVmaXhlcy5cbiAqL1xudmFyIHByZWZpeGVzID0gWydXZWJraXQnLCAn
bXMnLCAnTW96JywgJ08nXTtcblxuLy8gVXNpbmcgT2JqZWN0LmtleXMgaGVyZSwgb3IgZWxzZSB0
aGUgdmFuaWxsYSBmb3ItaW4gbG9vcCBtYWtlcyBJRTggZ28gaW50byBhblxuLy8gaW5maW5pdGUg
bG9vcCwgYmVjYXVzZSBpdCBpdGVyYXRlcyBvdmVyIHRoZSBuZXdseSBhZGRlZCBwcm9wcyB0b28u
XG5PYmplY3Qua2V5cyhpc1VuaXRsZXNzTnVtYmVyKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7
XG4gIHByZWZpeGVzLmZvckVhY2goZnVuY3Rpb24gKHByZWZpeCkge1xuICAgIGlzVW5pdGxlc3NO
dW1iZXJbcHJlZml4S2V5KHByZWZpeCwgcHJvcCldID0gaXNVbml0bGVzc051bWJlcltwcm9wXTtc
biAgfSk7XG59KTtcblxuLyoqXG4gKiBNb3N0IHN0eWxlIHByb3BlcnRpZXMgY2FuIGJlIHVuc2V0
IGJ5IGRvaW5nIC5zdHlsZVtwcm9wXSA9ICcnIGJ1dCBJRThcbiAqIGRvZXNuJ3QgbGlrZSBkb2lu
ZyB0aGF0IHdpdGggc2hvcnRoYW5kIHByb3BlcnRpZXMgc28gZm9yIHRoZSBwcm9wZXJ0aWVzIHRo
YXRcbiAqIElFOCBicmVha3Mgb24sIHdoaWNoIGFyZSBsaXN0ZWQgaGVyZSwgd2UgaW5zdGVhZCB1
bnNldCBlYWNoIG9mIHRoZVxuICogaW5kaXZpZHVhbCBwcm9wZXJ0aWVzLiBTZWUgaHR0cDovL2J1
Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzODUuXG4gKiBUaGUgNC12YWx1ZSAnY2xvY2snIHByb3Bl
cnRpZXMgbGlrZSBtYXJnaW4sIHBhZGRpbmcsIGJvcmRlci13aWR0aCBzZWVtIHRvXG4gKiBiZWhh
dmUgd2l0aG91dCBhbnkgcHJvYmxlbXMuIEN1cmlvdXNseSwgbGlzdC1zdHlsZSB3b3JrcyB0b28g
d2l0aG91dCBhbnlcbiAqIHNwZWNpYWwgcHJvZGRpbmcuXG4gKi9cbnZhciBzaG9ydGhhbmRQcm9w
ZXJ0eUV4cGFuc2lvbnMgPSB7XG4gIGJhY2tncm91bmQ6IHtcbiAgICBiYWNrZ3JvdW5kQXR0YWNo
bWVudDogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRydWUsXG4gICAgYmFja2dyb3VuZElt
YWdlOiB0cnVlLFxuICAgIGJhY2tncm91bmRQb3NpdGlvblg6IHRydWUsXG4gICAgYmFja2dyb3Vu
ZFBvc2l0aW9uWTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kUmVwZWF0OiB0cnVlXG4gIH0sXG4gIGJh
Y2tncm91bmRQb3NpdGlvbjoge1xuICAgIGJhY2tncm91bmRQb3NpdGlvblg6IHRydWUsXG4gICAg
YmFja2dyb3VuZFBvc2l0aW9uWTogdHJ1ZVxuICB9LFxuICBib3JkZXI6IHtcbiAgICBib3JkZXJX
aWR0aDogdHJ1ZSxcbiAgICBib3JkZXJTdHlsZTogdHJ1ZSxcbiAgICBib3JkZXJDb2xvcjogdHJ1
ZVxuICB9LFxuICBib3JkZXJCb3R0b206IHtcbiAgICBib3JkZXJCb3R0b21XaWR0aDogdHJ1ZSxc
biAgICBib3JkZXJCb3R0b21TdHlsZTogdHJ1ZSxcbiAgICBib3JkZXJCb3R0b21Db2xvcjogdHJ1
ZVxuICB9LFxuICBib3JkZXJMZWZ0OiB7XG4gICAgYm9yZGVyTGVmdFdpZHRoOiB0cnVlLFxuICAg
IGJvcmRlckxlZnRTdHlsZTogdHJ1ZSxcbiAgICBib3JkZXJMZWZ0Q29sb3I6IHRydWVcbiAgfSxc
biAgYm9yZGVyUmlnaHQ6IHtcbiAgICBib3JkZXJSaWdodFdpZHRoOiB0cnVlLFxuICAgIGJvcmRl
clJpZ2h0U3R5bGU6IHRydWUsXG4gICAgYm9yZGVyUmlnaHRDb2xvcjogdHJ1ZVxuICB9LFxuICBi
b3JkZXJUb3A6IHtcbiAgICBib3JkZXJUb3BXaWR0aDogdHJ1ZSxcbiAgICBib3JkZXJUb3BTdHls
ZTogdHJ1ZSxcbiAgICBib3JkZXJUb3BDb2xvcjogdHJ1ZVxuICB9LFxuICBmb250OiB7XG4gICAg
Zm9udFN0eWxlOiB0cnVlLFxuICAgIGZvbnRWYXJpYW50OiB0cnVlLFxuICAgIGZvbnRXZWlnaHQ6
IHRydWUsXG4gICAgZm9udFNpemU6IHRydWUsXG4gICAgbGluZUhlaWdodDogdHJ1ZSxcbiAgICBm
b250RmFtaWx5OiB0cnVlXG4gIH0sXG4gIG91dGxpbmU6IHtcbiAgICBvdXRsaW5lV2lkdGg6IHRy
dWUsXG4gICAgb3V0bGluZVN0eWxlOiB0cnVlLFxuICAgIG91dGxpbmVDb2xvcjogdHJ1ZVxuICB9
XG59O1xuXG52YXIgQ1NTUHJvcGVydHkgPSB7XG4gIGlzVW5pdGxlc3NOdW1iZXI6IGlzVW5pdGxl
c3NOdW1iZXIsXG4gIHNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uczogc2hvcnRoYW5kUHJvcGVy
dHlFeHBhbnNpb25zXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IENTU1Byb3BlcnR5O1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9s
aWIvQ1NTUHJvcGVydHkuanNcbiAqKiBtb2R1bGUgaWQgPSA1OFxuICoqIG1vZHVsZSBjaHVua3Mg
PSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBz
dHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFy
aWFudCcpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9y
KSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBU
eXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52
YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG5cbnZhciBpbnZhcmlh
bnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxp
emVkIHBzZXVkby1ldmVudCBtb2R1bGUgdG8gaGVscCBrZWVwIHRyYWNrIG9mIGNvbXBvbmVudHMg
d2FpdGluZyB0b1xuICogYmUgbm90aWZpZWQgd2hlbiB0aGVpciBET00gcmVwcmVzZW50YXRpb25z
IGFyZSBhdmFpbGFibGUgZm9yIHVzZS5cbiAqXG4gKiBUaGlzIGltcGxlbWVudHMgYFBvb2xlZENs
YXNzYCwgc28geW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGluc3RhbnRpYXRlIHRoaXMuXG4gKiBJ
bnN0ZWFkLCB1c2UgYENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKClgLlxuICpcbiAqIEBjbGFzcyBS
ZWFjdE1vdW50UmVhZHlcbiAqIEBpbXBsZW1lbnRzIFBvb2xlZENsYXNzXG4gKiBAaW50ZXJuYWxc
biAqL1xuXG52YXIgQ2FsbGJhY2tRdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQ2Fs
bGJhY2tRdWV1ZShhcmcpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2FsbGJhY2tRdWV1
ZSk7XG5cbiAgICB0aGlzLl9jYWxsYmFja3MgPSBudWxsO1xuICAgIHRoaXMuX2NvbnRleHRzID0g
bnVsbDtcbiAgICB0aGlzLl9hcmcgPSBhcmc7XG4gIH1cblxuICAvKipcbiAgICogRW5xdWV1ZXMg
YSBjYWxsYmFjayB0byBiZSBpbnZva2VkIHdoZW4gYG5vdGlmeUFsbGAgaXMgaW52b2tlZC5cbiAg
ICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgSW52b2tlZCB3aGVuIGBub3RpZnlB
bGxgIGlzIGludm9rZWQuXG4gICAqIEBwYXJhbSB7P29iamVjdH0gY29udGV4dCBDb250ZXh0IHRv
IGNhbGwgYGNhbGxiYWNrYCB3aXRoLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG5cblxuICBDYWxs
YmFja1F1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlID0gZnVuY3Rpb24gZW5xdWV1ZShjYWxsYmFjaywg
Y29udGV4dCkge1xuICAgIHRoaXMuX2NhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcyB8fCBbXTtc
biAgICB0aGlzLl9jYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgdGhpcy5fY29udGV4dHMg
PSB0aGlzLl9jb250ZXh0cyB8fCBbXTtcbiAgICB0aGlzLl9jb250ZXh0cy5wdXNoKGNvbnRleHQp
O1xuICB9O1xuXG4gIC8qKlxuICAgKiBJbnZva2VzIGFsbCBlbnF1ZXVlZCBjYWxsYmFja3MgYW5k
IGNsZWFycyB0aGUgcXVldWUuIFRoaXMgaXMgaW52b2tlZCBhZnRlclxuICAgKiB0aGUgRE9NIHJl
cHJlc2VudGF0aW9uIG9mIGEgY29tcG9uZW50IGhhcyBiZWVuIGNyZWF0ZWQgb3IgdXBkYXRlZC5c
biAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuXG5cbiAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5
cGUubm90aWZ5QWxsID0gZnVuY3Rpb24gbm90aWZ5QWxsKCkge1xuICAgIHZhciBjYWxsYmFja3Mg
PSB0aGlzLl9jYWxsYmFja3M7XG4gICAgdmFyIGNvbnRleHRzID0gdGhpcy5fY29udGV4dHM7XG4g
ICAgdmFyIGFyZyA9IHRoaXMuX2FyZztcbiAgICBpZiAoY2FsbGJhY2tzICYmIGNvbnRleHRzKSB7
XG4gICAgICAhKGNhbGxiYWNrcy5sZW5ndGggPT09IGNvbnRleHRzLmxlbmd0aCkgPyBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnTWlzbWF0
Y2hlZCBsaXN0IG9mIGNvbnRleHRzIGluIGNhbGxiYWNrIHF1ZXVlJykgOiBfcHJvZEludmFyaWFu
dCgnMjQnKSA6IHZvaWQgMDtcbiAgICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7XG4gICAgICB0
aGlzLl9jb250ZXh0cyA9IG51bGw7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGxiYWNr
cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsYmFja3NbaV0uY2FsbChjb250ZXh0c1tpXSwg
YXJnKTtcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrcy5sZW5ndGggPSAwO1xuICAgICAgY29udGV4
dHMubGVuZ3RoID0gMDtcbiAgICB9XG4gIH07XG5cbiAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUu
Y2hlY2twb2ludCA9IGZ1bmN0aW9uIGNoZWNrcG9pbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Nh
bGxiYWNrcyA/IHRoaXMuX2NhbGxiYWNrcy5sZW5ndGggOiAwO1xuICB9O1xuXG4gIENhbGxiYWNr
UXVldWUucHJvdG90eXBlLnJvbGxiYWNrID0gZnVuY3Rpb24gcm9sbGJhY2sobGVuKSB7XG4gICAg
aWYgKHRoaXMuX2NhbGxiYWNrcyAmJiB0aGlzLl9jb250ZXh0cykge1xuICAgICAgdGhpcy5fY2Fs
bGJhY2tzLmxlbmd0aCA9IGxlbjtcbiAgICAgIHRoaXMuX2NvbnRleHRzLmxlbmd0aCA9IGxlbjtc
biAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgaW50ZXJuYWwgcXVldWUuXG4g
ICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cblxuXG4gIENhbGxiYWNrUXVldWUucHJvdG90eXBl
LnJlc2V0ID0gZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgdGhpcy5fY2FsbGJhY2tzID0gbnVsbDtc
biAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIGBQb29sZWRD
bGFzc2AgbG9va3MgZm9yIHRoaXMuXG4gICAqL1xuXG5cbiAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5
cGUuZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uIGRlc3RydWN0b3IoKSB7XG4gICAgdGhpcy5yZXNldCgp
O1xuICB9O1xuXG4gIHJldHVybiBDYWxsYmFja1F1ZXVlO1xufSgpO1xuXG5tb2R1bGUuZXhwb3J0
cyA9IFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhDYWxsYmFja1F1ZXVlKTtcblxuXG4vKioqKioq
KioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0Nh
bGxiYWNrUXVldWUuanNcbiAqKiBtb2R1bGUgaWQgPSA1OVxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztc
blxudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xudmFyIFJlYWN0
RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52
YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9u
Jyk7XG5cbnZhciBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlciA9IHJlcXVpcmUoJy4vcXVv
dGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXInKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJq
cy9saWIvd2FybmluZycpO1xuXG52YXIgVkFMSURfQVRUUklCVVRFX05BTUVfUkVHRVggPSBuZXcg
UmVnRXhwKCdeWycgKyBET01Qcm9wZXJ0eS5BVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSICsgJ11b
JyArIERPTVByb3BlcnR5LkFUVFJJQlVURV9OQU1FX0NIQVIgKyAnXSokJyk7XG52YXIgaWxsZWdh
bEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9O1xudmFyIHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNo
ZSA9IHt9O1xuXG5mdW5jdGlvbiBpc0F0dHJpYnV0ZU5hbWVTYWZlKGF0dHJpYnV0ZU5hbWUpIHtc
biAgaWYgKHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZS5oYXNPd25Qcm9wZXJ0eShhdHRyaWJ1
dGVOYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpbGxlZ2FsQXR0cmlidXRl
TmFtZUNhY2hlLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgcmV0dXJuIGZh
bHNlO1xuICB9XG4gIGlmIChWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWC50ZXN0KGF0dHJpYnV0
ZU5hbWUpKSB7XG4gICAgdmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVd
ID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpbGxlZ2FsQXR0cmlidXRlTmFtZUNh
Y2hlW2F0dHJpYnV0ZU5hbWVdID0gdHJ1ZTtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGF0dHJpYnV0ZSBuYW1lOiBgJXNg
JywgYXR0cmlidXRlTmFtZSkgOiB2b2lkIDA7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rp
b24gc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkge1xuICByZXR1cm4gdmFs
dWUgPT0gbnVsbCB8fCBwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlICYmICF2YWx1ZSB8fCBw
cm9wZXJ0eUluZm8uaGFzTnVtZXJpY1ZhbHVlICYmIGlzTmFOKHZhbHVlKSB8fCBwcm9wZXJ0eUlu
Zm8uaGFzUG9zaXRpdmVOdW1lcmljVmFsdWUgJiYgdmFsdWUgPCAxIHx8IHByb3BlcnR5SW5mby5o
YXNPdmVybG9hZGVkQm9vbGVhblZhbHVlICYmIHZhbHVlID09PSBmYWxzZTtcbn1cblxuLyoqXG4g
KiBPcGVyYXRpb25zIGZvciBkZWFsaW5nIHdpdGggRE9NIHByb3BlcnRpZXMuXG4gKi9cbnZhciBE
T01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3Ig
dGhlIElEIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgVW5lc2NhcGVk
IElELlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcuXG4gICAqL1xuICBjcmVh
dGVNYXJrdXBGb3JJRDogZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuIERPTVByb3BlcnR5LklE
X0FUVFJJQlVURV9OQU1FICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIoaWQp
O1xuICB9LFxuXG4gIHNldEF0dHJpYnV0ZUZvcklEOiBmdW5jdGlvbiAobm9kZSwgaWQpIHtcbiAg
ICBub2RlLnNldEF0dHJpYnV0ZShET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRSwgaWQpO1xu
ICB9LFxuXG4gIGNyZWF0ZU1hcmt1cEZvclJvb3Q6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4g
RE9NUHJvcGVydHkuUk9PVF9BVFRSSUJVVEVfTkFNRSArICc9XCJcIic7XG4gIH0sXG5cbiAgc2V0
QXR0cmlidXRlRm9yUm9vdDogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBub2RlLnNldEF0dHJpYnV0
ZShET01Qcm9wZXJ0eS5ST09UX0FUVFJJQlVURV9OQU1FLCAnJyk7XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIENyZWF0ZXMgbWFya3VwIGZvciBhIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0
cmluZ30gbmFtZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqIEByZXR1cm4gez9zdHJpbmd9
IE1hcmt1cCBzdHJpbmcsIG9yIG51bGwgaWYgdGhlIHByb3BlcnR5IHdhcyBpbnZhbGlkLlxuICAg
Ki9cbiAgY3JlYXRlTWFya3VwRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xu
ICAgIHZhciBwcm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3Bl
cnR5KG5hbWUpID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7XG4gICAgaWYg
KHByb3BlcnR5SW5mbykge1xuICAgICAgaWYgKHNob3VsZElnbm9yZVZhbHVlKHByb3BlcnR5SW5m
bywgdmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICAgIHZhciBhdHRy
aWJ1dGVOYW1lID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWU7XG4gICAgICBpZiAocHJvcGVy
dHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xl
YW5WYWx1ZSAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gYXR0cmlidXRlTmFt
ZSArICc9XCJcIic7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXR0cmlidXRlTmFtZSArICc9JyAr
IHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKERP
TVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICBpZiAodmFsdWUgPT0g
bnVsbCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmFtZSAr
ICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKTtcbiAgICB9XG4gICAg
cmV0dXJuIG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZvciBhIGN1
c3RvbSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBh
cmFtIHsqfSB2YWx1ZVxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcsIG9yIGVt
cHR5IHN0cmluZyBpZiB0aGUgcHJvcGVydHkgd2FzIGludmFsaWQuXG4gICAqL1xuICBjcmVhdGVN
YXJrdXBGb3JDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgIGlm
ICghaXNBdHRyaWJ1dGVOYW1lU2FmZShuYW1lKSB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBy
ZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBuYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVW
YWx1ZUZvckJyb3dzZXIodmFsdWUpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1
ZSBmb3IgYSBwcm9wZXJ0eSBvbiBhIG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVu
dH0gbm9kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0geyp9IHZhbHVl
XG4gICAqL1xuICBzZXRWYWx1ZUZvclByb3BlcnR5OiBmdW5jdGlvbiAobm9kZSwgbmFtZSwgdmFs
dWUpIHtcbiAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNP
d25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsO1xu
ICAgIGlmIChwcm9wZXJ0eUluZm8pIHtcbiAgICAgIHZhciBtdXRhdGlvbk1ldGhvZCA9IHByb3Bl
cnR5SW5mby5tdXRhdGlvbk1ldGhvZDtcbiAgICAgIGlmIChtdXRhdGlvbk1ldGhvZCkge1xuICAg
ICAgICBtdXRhdGlvbk1ldGhvZChub2RlLCB2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNob3Vs
ZElnbm9yZVZhbHVlKHByb3BlcnR5SW5mbywgdmFsdWUpKSB7XG4gICAgICAgIHRoaXMuZGVsZXRl
VmFsdWVGb3JQcm9wZXJ0eShub2RlLCBuYW1lKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBl
bHNlIGlmIChwcm9wZXJ0eUluZm8ubXVzdFVzZVByb3BlcnR5KSB7XG4gICAgICAgIC8vIENvbnRy
YXJ5IHRvIGBzZXRBdHRyaWJ1dGVgLCBvYmplY3QgcHJvcGVydGllcyBhcmUgcHJvcGVybHlcbiAg
ICAgICAgLy8gYHRvU3RyaW5nYGVkIGJ5IElFOC85LlxuICAgICAgICBub2RlW3Byb3BlcnR5SW5m
by5wcm9wZXJ0eU5hbWVdID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgYXR0
cmlidXRlTmFtZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lO1xuICAgICAgICB2YXIgbmFt
ZXNwYWNlID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWVzcGFjZTtcbiAgICAgICAgLy8gYHNl
dEF0dHJpYnV0ZWAgd2l0aCBvYmplY3RzIGJlY29tZXMgb25seSBgW29iamVjdF1gIGluIElFOC85
LFxuICAgICAgICAvLyAoJycgKyB2YWx1ZSkgbWFrZXMgaXQgb3V0cHV0IHRoZSBjb3JyZWN0IHRv
U3RyaW5nKCktdmFsdWUuXG4gICAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgICBub2Rl
LnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgYXR0cmlidXRlTmFtZSwgJycgKyB2YWx1ZSk7XG4g
ICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSB8fCBwcm9wZXJ0
eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xuICAg
ICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICcnKTtcbiAgICAgICAgfSBl
bHNlIHtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCAnJyArIHZh
bHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXND
dXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRW
YWx1ZUZvckF0dHJpYnV0ZShub2RlLCBuYW1lLCB2YWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAg
fVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgIHZhciBwYXlsb2FkID0ge307XG4gICAgICBwYXlsb2FkW25hbWVdID0gdmFsdWU7XG4gICAg
ICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAg
ICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUo
bm9kZSkuX2RlYnVnSUQsXG4gICAgICAgIHR5cGU6ICd1cGRhdGUgYXR0cmlidXRlJyxcbiAgICAg
ICAgcGF5bG9hZDogcGF5bG9hZFxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIHNldFZhbHVl
Rm9yQXR0cmlidXRlOiBmdW5jdGlvbiAobm9kZSwgbmFtZSwgdmFsdWUpIHtcbiAgICBpZiAoIWlz
QXR0cmlidXRlTmFtZVNhZmUobmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYg
KHZhbHVlID09IG51bGwpIHtcbiAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAg
IH0gZWxzZSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShuYW1lLCAnJyArIHZhbHVlKTtcbiAg
ICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgdmFyIHBheWxvYWQgPSB7fTtcbiAgICAgIHBheWxvYWRbbmFtZV0gPSB2YWx1ZTtcbiAg
ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAg
ICAgICBpbnN0YW5jZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9k
ZShub2RlKS5fZGVidWdJRCxcbiAgICAgICAgdHlwZTogJ3VwZGF0ZSBhdHRyaWJ1dGUnLFxuICAg
ICAgICBwYXlsb2FkOiBwYXlsb2FkXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIERlbGV0ZXMgYW4gYXR0cmlidXRlcyBmcm9tIGEgbm9kZS5cbiAgICpcbiAgICogQHBhcmFt
IHtET01FbGVtZW50fSBub2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqL1xuICBk
ZWxldGVWYWx1ZUZvckF0dHJpYnV0ZTogZnVuY3Rpb24gKG5vZGUsIG5hbWUpIHtcbiAgICBub2Rl
LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9u
SG9zdE9wZXJhdGlvbih7XG4gICAgICAgIGluc3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJl
ZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpLl9kZWJ1Z0lELFxuICAgICAgICB0eXBlOiAncmVt
b3ZlIGF0dHJpYnV0ZScsXG4gICAgICAgIHBheWxvYWQ6IG5hbWVcbiAgICAgIH0pO1xuICAgIH1c
biAgfSxcblxuICAvKipcbiAgICogRGVsZXRlcyB0aGUgdmFsdWUgZm9yIGEgcHJvcGVydHkgb24g
YSBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAgICogQHBhcmFt
IHtzdHJpbmd9IG5hbWVcbiAgICovXG4gIGRlbGV0ZVZhbHVlRm9yUHJvcGVydHk6IGZ1bmN0aW9u
IChub2RlLCBuYW1lKSB7XG4gICAgdmFyIHByb3BlcnR5SW5mbyA9IERPTVByb3BlcnR5LnByb3Bl
cnRpZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW25hbWVd
IDogbnVsbDtcbiAgICBpZiAocHJvcGVydHlJbmZvKSB7XG4gICAgICB2YXIgbXV0YXRpb25NZXRo
b2QgPSBwcm9wZXJ0eUluZm8ubXV0YXRpb25NZXRob2Q7XG4gICAgICBpZiAobXV0YXRpb25NZXRo
b2QpIHtcbiAgICAgICAgbXV0YXRpb25NZXRob2Qobm9kZSwgdW5kZWZpbmVkKTtcbiAgICAgIH0g
ZWxzZSBpZiAocHJvcGVydHlJbmZvLm11c3RVc2VQcm9wZXJ0eSkge1xuICAgICAgICB2YXIgcHJv
cE5hbWUgPSBwcm9wZXJ0eUluZm8ucHJvcGVydHlOYW1lO1xuICAgICAgICBpZiAocHJvcGVydHlJ
bmZvLmhhc0Jvb2xlYW5WYWx1ZSkge1xuICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gZmFsc2U7
XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSAnJztcbiAgICAg
ICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUocHJvcGVy
dHlJbmZvLmF0dHJpYnV0ZU5hbWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVy
dHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRl
KG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3Bl
cmF0aW9uKHtcbiAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldElu
c3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsXG4gICAgICAgIHR5cGU6ICdyZW1vdmUgYXR0
cmlidXRlJyxcbiAgICAgICAgcGF5bG9hZDogbmFtZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59
O1xuXG5tb2R1bGUuZXhwb3J0cyA9IERPTVByb3BlcnR5T3BlcmF0aW9ucztcblxuXG4vKioqKioq
KioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0RP
TVByb3BlcnR5T3BlcmF0aW9ucy5qc1xuICoqIG1vZHVsZSBpZCA9IDYwXG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBz
dHJpY3QnO1xuXG52YXIgUmVhY3RET01Db21wb25lbnRGbGFncyA9IHtcbiAgaGFzQ2FjaGVkQ2hp
bGROb2RlczogMSA8PCAwXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NQ29tcG9uZW50
RmxhZ3M7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUNvbXBvbmVudEZsYWdzLmpzXG4gKiogbW9kdWxlIGlk
ID0gNjFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2Jq
ZWN0LWFzc2lnbicpO1xuXG52YXIgTGlua2VkVmFsdWVVdGlscyA9IHJlcXVpcmUoJy4vTGlua2Vk
VmFsdWVVdGlscycpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVh
Y3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFj
dFVwZGF0ZXMnKTtcblxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7
XG5cbnZhciBkaWRXYXJuVmFsdWVMaW5rID0gZmFsc2U7XG52YXIgZGlkV2FyblZhbHVlRGVmYXVs
dFZhbHVlID0gZmFsc2U7XG5cbmZ1bmN0aW9uIHVwZGF0ZU9wdGlvbnNJZlBlbmRpbmdVcGRhdGVB
bmRNb3VudGVkKCkge1xuICBpZiAodGhpcy5fcm9vdE5vZGVJRCAmJiB0aGlzLl93cmFwcGVyU3Rh
dGUucGVuZGluZ1VwZGF0ZSkge1xuICAgIHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRl
ID0gZmFsc2U7XG5cbiAgICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztc
biAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcblxuICAg
IGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICB1cGRhdGVPcHRpb25zKHRoaXMsIEJvb2xlYW4o
cHJvcHMubXVsdGlwbGUpLCB2YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldERl
Y2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikge1xuICBpZiAob3duZXIpIHtcbiAgICB2YXIg
bmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgcmV0dXJuICcg
Q2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICB9XG4gIH1c
biAgcmV0dXJuICcnO1xufVxuXG52YXIgdmFsdWVQcm9wTmFtZXMgPSBbJ3ZhbHVlJywgJ2RlZmF1
bHRWYWx1ZSddO1xuXG4vKipcbiAqIFZhbGlkYXRpb24gZnVuY3Rpb24gZm9yIGB2YWx1ZWAgYW5k
IGBkZWZhdWx0VmFsdWVgLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2hlY2tTZWxlY3RQ
cm9wVHlwZXMoaW5zdCwgcHJvcHMpIHtcbiAgdmFyIG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1l
bnQuX293bmVyO1xuICBMaW5rZWRWYWx1ZVV0aWxzLmNoZWNrUHJvcFR5cGVzKCdzZWxlY3QnLCBw
cm9wcywgb3duZXIpO1xuXG4gIGlmIChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAh
ZGlkV2FyblZhbHVlTGluaykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYHZhbHVlTGlua2AgcHJvcCBvbiBgc2VsZWN0YCBpcyBk
ZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFkLicpIDogdm9pZCAw
O1xuICAgIGRpZFdhcm5WYWx1ZUxpbmsgPSB0cnVlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7
IGkgPCB2YWx1ZVByb3BOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wTmFtZSA9IHZh
bHVlUHJvcE5hbWVzW2ldO1xuICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT0gbnVsbCkge1xuICAg
ICAgY29udGludWU7XG4gICAgfVxuICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShwcm9w
c1twcm9wTmFtZV0pO1xuICAgIGlmIChwcm9wcy5tdWx0aXBsZSAmJiAhaXNBcnJheSkge1xuICAg
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2Us
ICdUaGUgYCVzYCBwcm9wIHN1cHBsaWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUgYW4gYXJyYXkgaWYg
JyArICdgbXVsdGlwbGVgIGlzIHRydWUuJXMnLCBwcm9wTmFtZSwgZ2V0RGVjbGFyYXRpb25FcnJv
ckFkZGVuZHVtKG93bmVyKSkgOiB2b2lkIDA7XG4gICAgfSBlbHNlIGlmICghcHJvcHMubXVsdGlw
bGUgJiYgaXNBcnJheSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdUaGUgYCVzYCBwcm9wIHN1cHBsaWVkIHRvIDxzZWxlY3Q+
IG11c3QgYmUgYSBzY2FsYXIgJyArICd2YWx1ZSBpZiBgbXVsdGlwbGVgIGlzIGZhbHNlLiVzJywg
cHJvcE5hbWUsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikpIDogdm9pZCAwO1xu
ICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGluc3Rc
biAqIEBwYXJhbSB7Ym9vbGVhbn0gbXVsdGlwbGVcbiAqIEBwYXJhbSB7Kn0gcHJvcFZhbHVlIEEg
c3RyaW5nYWJsZSAod2l0aCBgbXVsdGlwbGVgLCBhIGxpc3Qgb2Ygc3RyaW5nYWJsZXMpLlxuICog
QHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gdXBkYXRlT3B0aW9ucyhpbnN0LCBtdWx0aXBsZSwgcHJv
cFZhbHVlKSB7XG4gIHZhciBzZWxlY3RlZFZhbHVlLCBpO1xuICB2YXIgb3B0aW9ucyA9IFJlYWN0
RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpLm9wdGlvbnM7XG5cbiAg
aWYgKG11bHRpcGxlKSB7XG4gICAgc2VsZWN0ZWRWYWx1ZSA9IHt9O1xuICAgIGZvciAoaSA9IDA7
IGkgPCBwcm9wVmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNlbGVjdGVkVmFsdWVbJycgKyBw
cm9wVmFsdWVbaV1dID0gdHJ1ZTtcbiAgICB9XG4gICAgZm9yIChpID0gMDsgaSA8IG9wdGlvbnMu
bGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWxlY3RlZCA9IHNlbGVjdGVkVmFsdWUuaGFzT3du
UHJvcGVydHkob3B0aW9uc1tpXS52YWx1ZSk7XG4gICAgICBpZiAob3B0aW9uc1tpXS5zZWxlY3Rl
ZCAhPT0gc2VsZWN0ZWQpIHtcbiAgICAgICAgb3B0aW9uc1tpXS5zZWxlY3RlZCA9IHNlbGVjdGVk
O1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBEbyBub3Qgc2V0IGBzZWxlY3Qu
dmFsdWVgIGFzIGV4YWN0IGJlaGF2aW9yIGlzbid0IGNvbnNpc3RlbnQgYWNyb3NzIGFsbFxuICAg
IC8vIGJyb3dzZXJzIGZvciBhbGwgY2FzZXMuXG4gICAgc2VsZWN0ZWRWYWx1ZSA9ICcnICsgcHJv
cFZhbHVlO1xuICAgIGZvciAoaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAg
ICBpZiAob3B0aW9uc1tpXS52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICBvcHRp
b25zW2ldLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1c
biAgICBpZiAob3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIG9wdGlvbnNbMF0uc2VsZWN0ZWQgPSB0
cnVlO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEltcGxlbWVudHMgYSA8c2VsZWN0PiBob3N0
IGNvbXBvbmVudCB0aGF0IGFsbG93cyBvcHRpb25hbGx5IHNldHRpbmcgdGhlXG4gKiBwcm9wcyBg
dmFsdWVgIGFuZCBgZGVmYXVsdFZhbHVlYC4gSWYgYG11bHRpcGxlYCBpcyBmYWxzZSwgdGhlIHBy
b3AgbXVzdCBiZSBhXG4gKiBzdHJpbmdhYmxlLiBJZiBgbXVsdGlwbGVgIGlzIHRydWUsIHRoZSBw
cm9wIG11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5nYWJsZXMuXG4gKlxuICogSWYgYHZhbHVlYCBp
cyBub3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zIHRoYXQgY2hh
bmdlIHRoZVxuICogc2VsZWN0ZWQgb3B0aW9uIHdpbGwgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBy
ZW5kZXJlZCBvcHRpb25zLlxuICpcbiAqIElmIGl0IGlzIHN1cHBsaWVkIChhbmQgbm90IG51bGwv
dW5kZWZpbmVkKSwgdGhlIHJlbmRlcmVkIG9wdGlvbnMgd2lsbCBub3RcbiAqIHVwZGF0ZSBpbiBy
ZXNwb25zZSB0byB1c2VyIGFjdGlvbnMuIEluc3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBj
aGFuZ2UgaW5cbiAqIG9yZGVyIGZvciB0aGUgcmVuZGVyZWQgb3B0aW9ucyB0byB1cGRhdGUuXG4g
KlxuICogSWYgYGRlZmF1bHRWYWx1ZWAgaXMgcHJvdmlkZWQsIGFueSBvcHRpb25zIHdpdGggdGhl
IHN1cHBsaWVkIHZhbHVlcyB3aWxsIGJlXG4gKiBzZWxlY3RlZC5cbiAqL1xudmFyIFJlYWN0RE9N
U2VsZWN0ID0ge1xuICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuICAg
IHJldHVybiBfYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBw
ZXJTdGF0ZS5vbkNoYW5nZSxcbiAgICAgIHZhbHVlOiB1bmRlZmluZWRcbiAgICB9KTtcbiAgfSxc
blxuICBtb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuICAgIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjaGVja1NlbGVjdFBy
b3BUeXBlcyhpbnN0LCBwcm9wcyk7XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFs
dWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG4gICAgaW5zdC5fd3JhcHBlclN0YXRlID0ge1xuICAg
ICAgcGVuZGluZ1VwZGF0ZTogZmFsc2UsXG4gICAgICBpbml0aWFsVmFsdWU6IHZhbHVlICE9IG51
bGwgPyB2YWx1ZSA6IHByb3BzLmRlZmF1bHRWYWx1ZSxcbiAgICAgIGxpc3RlbmVyczogbnVsbCxc
biAgICAgIG9uQ2hhbmdlOiBfaGFuZGxlQ2hhbmdlLmJpbmQoaW5zdCksXG4gICAgICB3YXNNdWx0
aXBsZTogQm9vbGVhbihwcm9wcy5tdWx0aXBsZSlcbiAgICB9O1xuXG4gICAgaWYgKHByb3BzLnZh
bHVlICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYg
IWRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdTZWxlY3QgZWxlbWVudHMgbXVzdCBi
ZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIg
dGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwgYnV0IG5vdCAnICsgJ2Jv
dGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIHNl
bGVjdCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5m
bzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycpIDogdm9p
ZCAwO1xuICAgICAgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH0s
XG5cbiAgZ2V0U2VsZWN0VmFsdWVDb250ZXh0OiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIC8vIFJl
YWN0RE9NT3B0aW9uIGxvb2tzIGF0IHRoaXMgaW5pdGlhbCB2YWx1ZSBzbyB0aGUgaW5pdGlhbCBn
ZW5lcmF0ZWRcbiAgICAvLyBtYXJrdXAgaGFzIGNvcnJlY3QgYHNlbGVjdGVkYCBhdHRyaWJ1dGVz
XG4gICAgcmV0dXJuIGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU7XG4gIH0sXG5cbiAg
cG9zdFVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgdmFyIHByb3BzID0gaW5z
dC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICAvLyBBZnRlciB0aGUgaW5pdGlhbCBtb3Vu
dCwgd2UgY29udHJvbCBzZWxlY3RlZC1uZXNzIG1hbnVhbGx5IHNvIGRvbid0IHBhc3NcbiAgICAv
LyB0aGlzIHZhbHVlIGRvd25cbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlID0g
dW5kZWZpbmVkO1xuXG4gICAgdmFyIHdhc011bHRpcGxlID0gaW5zdC5fd3JhcHBlclN0YXRlLndh
c011bHRpcGxlO1xuICAgIGluc3QuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZSA9IEJvb2xlYW4o
cHJvcHMubXVsdGlwbGUpO1xuXG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRW
YWx1ZShwcm9wcyk7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIGluc3QuX3dyYXBw
ZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7XG4gICAgICB1cGRhdGVPcHRpb25zKGluc3Qs
IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCB2YWx1ZSk7XG4gICAgfSBlbHNlIGlmICh3YXNNdWx0
aXBsZSAhPT0gQm9vbGVhbihwcm9wcy5tdWx0aXBsZSkpIHtcbiAgICAgIC8vIEZvciBzaW1wbGlj
aXR5LCByZWFwcGx5IGBkZWZhdWx0VmFsdWVgIGlmIGBtdWx0aXBsZWAgaXMgdG9nZ2xlZC5cbiAg
ICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuICAgICAgICB1cGRhdGVPcHRp
b25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5kZWZhdWx0VmFsdWUpO1xu
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUmV2ZXJ0IHRoZSBzZWxlY3QgYmFjayB0byBpdHMg
ZGVmYXVsdCB1bnNlbGVjdGVkIHN0YXRlLlxuICAgICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJv
b2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5tdWx0aXBsZSA/IFtdIDogJycpO1xuICAgICAg
fVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gX2hhbmRsZUNoYW5nZShldmVudCkge1xuICB2
YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgdmFyIHJldHVyblZhbHVl
ID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2ZW50KTtcblxuICBp
ZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuICAgIHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBk
YXRlID0gdHJ1ZTtcbiAgfVxuICBSZWFjdFVwZGF0ZXMuYXNhcCh1cGRhdGVPcHRpb25zSWZQZW5k
aW5nVXBkYXRlQW5kTW91bnRlZCwgdGhpcyk7XG4gIHJldHVybiByZXR1cm5WYWx1ZTtcbn1cblxu
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdDtcblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NU2VsZWN0
LmpzXG4gKiogbW9kdWxlIGlkID0gNjJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlbXB0
eUNvbXBvbmVudEZhY3Rvcnk7XG5cbnZhciBSZWFjdEVtcHR5Q29tcG9uZW50SW5qZWN0aW9uID0g
e1xuICBpbmplY3RFbXB0eUNvbXBvbmVudEZhY3Rvcnk6IGZ1bmN0aW9uIChmYWN0b3J5KSB7XG4g
ICAgZW1wdHlDb21wb25lbnRGYWN0b3J5ID0gZmFjdG9yeTtcbiAgfVxufTtcblxudmFyIFJlYWN0
RW1wdHlDb21wb25lbnQgPSB7XG4gIGNyZWF0ZTogZnVuY3Rpb24gKGluc3RhbnRpYXRlKSB7XG4g
ICAgcmV0dXJuIGVtcHR5Q29tcG9uZW50RmFjdG9yeShpbnN0YW50aWF0ZSk7XG4gIH1cbn07XG5c
blJlYWN0RW1wdHlDb21wb25lbnQuaW5qZWN0aW9uID0gUmVhY3RFbXB0eUNvbXBvbmVudEluamVj
dGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVtcHR5Q29tcG9uZW50O1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIv
UmVhY3RFbXB0eUNvbXBvbmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDYzXG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4n
dXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEZlYXR1cmVGbGFncyA9IHtcbiAgLy8gV2hlbiB0cnVl
LCBjYWxsIGNvbnNvbGUudGltZSgpIGJlZm9yZSBhbmQgLnRpbWVFbmQoKSBhZnRlciBlYWNoIHRv
cC1sZXZlbFxuICAvLyByZW5kZXIgKGJvdGggaW5pdGlhbCByZW5kZXJzIGFuZCB1cGRhdGVzKS4g
VXNlZnVsIHdoZW4gbG9va2luZyBhdCBwcm9kLW1vZGVcbiAgLy8gdGltZWxpbmUgcHJvZmlsZXMg
aW4gQ2hyb21lLCBmb3IgZXhhbXBsZS5cbiAgbG9nVG9wTGV2ZWxSZW5kZXJzOiBmYWxzZVxufTtc
blxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEZlYXR1cmVGbGFncztcblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RmVh
dHVyZUZsYWdzLmpzXG4gKiogbW9kdWxlIGlkID0gNjRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5c
bnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIGdl
bmVyaWNDb21wb25lbnRDbGFzcyA9IG51bGw7XG52YXIgdGV4dENvbXBvbmVudENsYXNzID0gbnVs
bDtcblxudmFyIFJlYWN0SG9zdENvbXBvbmVudEluamVjdGlvbiA9IHtcbiAgLy8gVGhpcyBhY2Nl
cHRzIGEgY2xhc3MgdGhhdCByZWNlaXZlcyB0aGUgdGFnIHN0cmluZy4gVGhpcyBpcyBhIGNhdGNo
IGFsbFxuICAvLyB0aGF0IGNhbiByZW5kZXIgYW55IGtpbmQgb2YgdGFnLlxuICBpbmplY3RHZW5l
cmljQ29tcG9uZW50Q2xhc3M6IGZ1bmN0aW9uIChjb21wb25lbnRDbGFzcykge1xuICAgIGdlbmVy
aWNDb21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzO1xuICB9LFxuICAvLyBUaGlzIGFjY2Vw
dHMgYSB0ZXh0IGNvbXBvbmVudCBjbGFzcyB0aGF0IHRha2VzIHRoZSB0ZXh0IHN0cmluZyB0byBi
ZVxuICAvLyByZW5kZXJlZCBhcyBwcm9wcy5cbiAgaW5qZWN0VGV4dENvbXBvbmVudENsYXNzOiBm
dW5jdGlvbiAoY29tcG9uZW50Q2xhc3MpIHtcbiAgICB0ZXh0Q29tcG9uZW50Q2xhc3MgPSBjb21w
b25lbnRDbGFzcztcbiAgfVxufTtcblxuLyoqXG4gKiBHZXQgYSBob3N0IGludGVybmFsIGNvbXBv
bmVudCBjbGFzcyBmb3IgYSBzcGVjaWZpYyB0YWcuXG4gKlxuICogQHBhcmFtIHtSZWFjdEVsZW1l
bnR9IGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gY3JlYXRlLlxuICogQHJldHVybiB7ZnVuY3Rpb259
IFRoZSBpbnRlcm5hbCBjbGFzcyBjb25zdHJ1Y3RvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24g
Y3JlYXRlSW50ZXJuYWxDb21wb25lbnQoZWxlbWVudCkge1xuICAhZ2VuZXJpY0NvbXBvbmVudENs
YXNzID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ1RoZXJlIGlzIG5vIHJlZ2lzdGVyZWQgY29tcG9uZW50IGZvciB0aGUgdGFnICVzJywg
ZWxlbWVudC50eXBlKSA6IF9wcm9kSW52YXJpYW50KCcxMTEnLCBlbGVtZW50LnR5cGUpIDogdm9p
ZCAwO1xuICByZXR1cm4gbmV3IGdlbmVyaWNDb21wb25lbnRDbGFzcyhlbGVtZW50KTtcbn1cblxu
LyoqXG4gKiBAcGFyYW0ge1JlYWN0VGV4dH0gdGV4dFxuICogQHJldHVybiB7UmVhY3RDb21wb25l
bnR9XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlRm9yVGV4dCh0ZXh0KSB7XG4gIHJldHVy
biBuZXcgdGV4dENvbXBvbmVudENsYXNzKHRleHQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVh
Y3RDb21wb25lbnR9IGNvbXBvbmVudFxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rp
b24gaXNUZXh0Q29tcG9uZW50KGNvbXBvbmVudCkge1xuICByZXR1cm4gY29tcG9uZW50IGluc3Rh
bmNlb2YgdGV4dENvbXBvbmVudENsYXNzO1xufVxuXG52YXIgUmVhY3RIb3N0Q29tcG9uZW50ID0g
e1xuICBjcmVhdGVJbnRlcm5hbENvbXBvbmVudDogY3JlYXRlSW50ZXJuYWxDb21wb25lbnQsXG4g
IGNyZWF0ZUluc3RhbmNlRm9yVGV4dDogY3JlYXRlSW5zdGFuY2VGb3JUZXh0LFxuICBpc1RleHRD
b21wb25lbnQ6IGlzVGV4dENvbXBvbmVudCxcbiAgaW5qZWN0aW9uOiBSZWFjdEhvc3RDb21wb25l
bnRJbmplY3Rpb25cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RIb3N0Q29tcG9uZW50O1xu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0
LWRvbS9saWIvUmVhY3RIb3N0Q29tcG9uZW50LmpzXG4gKiogbW9kdWxlIGlkID0gNjVcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERPTVNlbGVjdGlvbiA9IHJlcXVpcmUoJy4vUmVh
Y3RET01TZWxlY3Rpb24nKTtcblxudmFyIGNvbnRhaW5zTm9kZSA9IHJlcXVpcmUoJ2ZianMvbGli
L2NvbnRhaW5zTm9kZScpO1xudmFyIGZvY3VzTm9kZSA9IHJlcXVpcmUoJ2ZianMvbGliL2ZvY3Vz
Tm9kZScpO1xudmFyIGdldEFjdGl2ZUVsZW1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9nZXRBY3Rp
dmVFbGVtZW50Jyk7XG5cbmZ1bmN0aW9uIGlzSW5Eb2N1bWVudChub2RlKSB7XG4gIHJldHVybiBj
b250YWluc05vZGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBub2RlKTtcbn1cblxuLyoqXG4g
KiBAUmVhY3RJbnB1dFNlbGVjdGlvbjogUmVhY3QgaW5wdXQgc2VsZWN0aW9uIG1vZHVsZS4gQmFz
ZWQgb24gU2VsZWN0aW9uLmpzLFxuICogYnV0IG1vZGlmaWVkIHRvIGJlIHN1aXRhYmxlIGZvciBy
ZWFjdCBhbmQgaGFzIGEgY291cGxlIG9mIGJ1ZyBmaXhlcyAoZG9lc24ndFxuICogYXNzdW1lIGJ1
dHRvbnMgaGF2ZSByYW5nZSBzZWxlY3Rpb25zIGFsbG93ZWQpLlxuICogSW5wdXQgc2VsZWN0aW9u
IG1vZHVsZSBmb3IgUmVhY3QuXG4gKi9cbnZhciBSZWFjdElucHV0U2VsZWN0aW9uID0ge1xuICBo
YXNTZWxlY3Rpb25DYXBhYmlsaXRpZXM6IGZ1bmN0aW9uIChlbGVtKSB7XG4gICAgdmFyIG5vZGVO
YW1lID0gZWxlbSAmJiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KTtcbiAgICByZXR1cm4gbm9kZU5hbWUgJiYgKG5vZGVOYW1lID09PSAnaW5wdXQnICYmIGVsZW0u
dHlwZSA9PT0gJ3RleHQnIHx8IG5vZGVOYW1lID09PSAndGV4dGFyZWEnIHx8IGVsZW0uY29udGVu
dEVkaXRhYmxlID09PSAndHJ1ZScpO1xuICB9LFxuXG4gIGdldFNlbGVjdGlvbkluZm9ybWF0aW9u
OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGZvY3VzZWRFbGVtID0gZ2V0QWN0aXZlRWxlbWVudCgp
O1xuICAgIHJldHVybiB7XG4gICAgICBmb2N1c2VkRWxlbTogZm9jdXNlZEVsZW0sXG4gICAgICBz
ZWxlY3Rpb25SYW5nZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNTZWxlY3Rpb25DYXBhYmlsaXRp
ZXMoZm9jdXNlZEVsZW0pID8gUmVhY3RJbnB1dFNlbGVjdGlvbi5nZXRTZWxlY3Rpb24oZm9jdXNl
ZEVsZW0pIDogbnVsbFxuICAgIH07XG4gIH0sXG5cbiAgLyoqXG4gICAqIEByZXN0b3JlU2VsZWN0
aW9uOiBJZiBhbnkgc2VsZWN0aW9uIGluZm9ybWF0aW9uIHdhcyBwb3RlbnRpYWxseSBsb3N0LFxu
ICAgKiByZXN0b3JlIGl0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHBlcmZvcm1pbmcgb3BlcmF0aW9u
cyB0aGF0IGNvdWxkIHJlbW92ZSBkb21cbiAgICogbm9kZXMgYW5kIHBsYWNlIHRoZW0gYmFjayBp
biwgcmVzdWx0aW5nIGluIGZvY3VzIGJlaW5nIGxvc3QuXG4gICAqL1xuICByZXN0b3JlU2VsZWN0
aW9uOiBmdW5jdGlvbiAocHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbikge1xuICAgIHZhciBjdXJG
b2N1c2VkRWxlbSA9IGdldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICB2YXIgcHJpb3JGb2N1c2VkRWxl
bSA9IHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24uZm9jdXNlZEVsZW07XG4gICAgdmFyIHByaW9y
U2VsZWN0aW9uUmFuZ2UgPSBwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uLnNlbGVjdGlvblJhbmdl
O1xuICAgIGlmIChjdXJGb2N1c2VkRWxlbSAhPT0gcHJpb3JGb2N1c2VkRWxlbSAmJiBpc0luRG9j
dW1lbnQocHJpb3JGb2N1c2VkRWxlbSkpIHtcbiAgICAgIGlmIChSZWFjdElucHV0U2VsZWN0aW9u
Lmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhwcmlvckZvY3VzZWRFbGVtKSkge1xuICAgICAgICBS
ZWFjdElucHV0U2VsZWN0aW9uLnNldFNlbGVjdGlvbihwcmlvckZvY3VzZWRFbGVtLCBwcmlvclNl
bGVjdGlvblJhbmdlKTtcbiAgICAgIH1cbiAgICAgIGZvY3VzTm9kZShwcmlvckZvY3VzZWRFbGVt
KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBnZXRTZWxlY3Rpb246IEdldHMgdGhlIHNl
bGVjdGlvbiBib3VuZHMgb2YgYSBmb2N1c2VkIHRleHRhcmVhLCBpbnB1dCBvclxuICAgKiBjb250
ZW50RWRpdGFibGUgbm9kZS5cbiAgICogLUBpbnB1dDogTG9vayB1cCBzZWxlY3Rpb24gYm91bmRz
IG9mIHRoaXMgaW5wdXRcbiAgICogLUByZXR1cm4ge3N0YXJ0OiBzZWxlY3Rpb25TdGFydCwgZW5k
OiBzZWxlY3Rpb25FbmR9XG4gICAqL1xuICBnZXRTZWxlY3Rpb246IGZ1bmN0aW9uIChpbnB1dCkg
e1xuICAgIHZhciBzZWxlY3Rpb247XG5cbiAgICBpZiAoJ3NlbGVjdGlvblN0YXJ0JyBpbiBpbnB1
dCkge1xuICAgICAgLy8gTW9kZXJuIGJyb3dzZXIgd2l0aCBpbnB1dCBvciB0ZXh0YXJlYS5cbiAg
ICAgIHNlbGVjdGlvbiA9IHtcbiAgICAgICAgc3RhcnQ6IGlucHV0LnNlbGVjdGlvblN0YXJ0LFxu
ICAgICAgICBlbmQ6IGlucHV0LnNlbGVjdGlvbkVuZFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYg
KGRvY3VtZW50LnNlbGVjdGlvbiAmJiBpbnB1dC5ub2RlTmFtZSAmJiBpbnB1dC5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnKSB7XG4gICAgICAvLyBJRTggaW5wdXQuXG4gICAgICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtcbiAgICAgIC8vIFRo
ZXJlIGNhbiBvbmx5IGJlIG9uZSBzZWxlY3Rpb24gcGVyIGRvY3VtZW50IGluIElFLCBzbyBpdCBt
dXN0XG4gICAgICAvLyBiZSBpbiBvdXIgZWxlbWVudC5cbiAgICAgIGlmIChyYW5nZS5wYXJlbnRF
bGVtZW50KCkgPT09IGlucHV0KSB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHtcbiAgICAgICAgICBz
dGFydDogLXJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgLWlucHV0LnZhbHVlLmxlbmd0aCks
XG4gICAgICAgICAgZW5kOiAtcmFuZ2UubW92ZUVuZCgnY2hhcmFjdGVyJywgLWlucHV0LnZhbHVl
Lmxlbmd0aClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ29u
dGVudCBlZGl0YWJsZSBvciBvbGQgSUUgdGV4dGFyZWEuXG4gICAgICBzZWxlY3Rpb24gPSBSZWFj
dERPTVNlbGVjdGlvbi5nZXRPZmZzZXRzKGlucHV0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2Vs
ZWN0aW9uIHx8IHsgc3RhcnQ6IDAsIGVuZDogMCB9O1xuICB9LFxuXG4gIC8qKlxuICAgKiBAc2V0
U2VsZWN0aW9uOiBTZXRzIHRoZSBzZWxlY3Rpb24gYm91bmRzIG9mIGEgdGV4dGFyZWEgb3IgaW5w
dXQgYW5kIGZvY3VzZXNcbiAgICogdGhlIGlucHV0LlxuICAgKiAtQGlucHV0ICAgICBTZXQgc2Vs
ZWN0aW9uIGJvdW5kcyBvZiB0aGlzIGlucHV0IG9yIHRleHRhcmVhXG4gICAqIC1Ab2Zmc2V0cyAg
IE9iamVjdCBvZiBzYW1lIGZvcm0gdGhhdCBpcyByZXR1cm5lZCBmcm9tIGdldCpcbiAgICovXG4g
IHNldFNlbGVjdGlvbjogZnVuY3Rpb24gKGlucHV0LCBvZmZzZXRzKSB7XG4gICAgdmFyIHN0YXJ0
ID0gb2Zmc2V0cy5zdGFydDtcbiAgICB2YXIgZW5kID0gb2Zmc2V0cy5lbmQ7XG4gICAgaWYgKGVu
ZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlbmQgPSBzdGFydDtcbiAgICB9XG5cbiAgICBpZiAo
J3NlbGVjdGlvblN0YXJ0JyBpbiBpbnB1dCkge1xuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQg
PSBzdGFydDtcbiAgICAgIGlucHV0LnNlbGVjdGlvbkVuZCA9IE1hdGgubWluKGVuZCwgaW5wdXQu
dmFsdWUubGVuZ3RoKTtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbiAmJiBpbnB1
dC5ub2RlTmFtZSAmJiBpbnB1dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnKSB7
XG4gICAgICB2YXIgcmFuZ2UgPSBpbnB1dC5jcmVhdGVUZXh0UmFuZ2UoKTtcbiAgICAgIHJhbmdl
LmNvbGxhcHNlKHRydWUpO1xuICAgICAgcmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBzdGFy
dCk7XG4gICAgICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQgLSBzdGFydCk7XG4gICAg
ICByYW5nZS5zZWxlY3QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgUmVhY3RET01TZWxlY3Rpb24u
c2V0T2Zmc2V0cyhpbnB1dCwgb2Zmc2V0cyk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhw
b3J0cyA9IFJlYWN0SW5wdXRTZWxlY3Rpb247XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdElucHV0U2VsZWN0aW9u
LmpzXG4gKiogbW9kdWxlIGlkID0gNjZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJv
ZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBET01M
YXp5VHJlZSA9IHJlcXVpcmUoJy4vRE9NTGF6eVRyZWUnKTtcbnZhciBET01Qcm9wZXJ0eSA9IHJl
cXVpcmUoJy4vRE9NUHJvcGVydHknKTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9S
ZWFjdCcpO1xudmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJy4vUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyJyk7XG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCdy
ZWFjdC9saWIvUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUg
PSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0RE9NQ29udGFp
bmVySW5mbyA9IHJlcXVpcmUoJy4vUmVhY3RET01Db250YWluZXJJbmZvJyk7XG52YXIgUmVhY3RE
T01GZWF0dXJlRmxhZ3MgPSByZXF1aXJlKCcuL1JlYWN0RE9NRmVhdHVyZUZsYWdzJyk7XG52YXIg
UmVhY3RGZWF0dXJlRmxhZ3MgPSByZXF1aXJlKCcuL1JlYWN0RmVhdHVyZUZsYWdzJyk7XG52YXIg
UmVhY3RJbnN0YW5jZU1hcCA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1hcCcpO1xudmFyIFJl
YWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1lbnRhdGlvbicpO1xu
dmFyIFJlYWN0TWFya3VwQ2hlY2tzdW0gPSByZXF1aXJlKCcuL1JlYWN0TWFya3VwQ2hlY2tzdW0n
KTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xu
dmFyIFJlYWN0VXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlUXVldWUnKTtcbnZh
ciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xuXG52YXIgZW1wdHlP
YmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVjdCcpO1xudmFyIGluc3RhbnRpYXRl
UmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQnKTtc
bnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBzZXRJ
bm5lckhUTUwgPSByZXF1aXJlKCcuL3NldElubmVySFRNTCcpO1xudmFyIHNob3VsZFVwZGF0ZVJl
YWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9zaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCcpO1xu
dmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBBVFRSX05B
TUUgPSBET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRTtcbnZhciBST09UX0FUVFJfTkFNRSA9
IERPTVByb3BlcnR5LlJPT1RfQVRUUklCVVRFX05BTUU7XG5cbnZhciBFTEVNRU5UX05PREVfVFlQ
RSA9IDE7XG52YXIgRE9DX05PREVfVFlQRSA9IDk7XG52YXIgRE9DVU1FTlRfRlJBR01FTlRfTk9E
RV9UWVBFID0gMTE7XG5cbnZhciBpbnN0YW5jZXNCeVJlYWN0Um9vdElEID0ge307XG5cbi8qKlxu
ICogRmluZHMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXJcbiAqIHRoYXQncyBub3Qg
Y29tbW9uIGJldHdlZW4gdGhlIHR3byBnaXZlbiBzdHJpbmdzLlxuICpcbiAqIEByZXR1cm4ge251
bWJlcn0gdGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgd2hlcmUgdGhlIHN0cmluZ3MgZGl2ZXJn
ZVxuICovXG5mdW5jdGlvbiBmaXJzdERpZmZlcmVuY2VJbmRleChzdHJpbmcxLCBzdHJpbmcyKSB7
XG4gIHZhciBtaW5MZW4gPSBNYXRoLm1pbihzdHJpbmcxLmxlbmd0aCwgc3RyaW5nMi5sZW5ndGgp
O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1pbkxlbjsgaSsrKSB7XG4gICAgaWYgKHN0cmluZzEu
Y2hhckF0KGkpICE9PSBzdHJpbmcyLmNoYXJBdChpKSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAg
fVxuICB9XG4gIHJldHVybiBzdHJpbmcxLmxlbmd0aCA9PT0gc3RyaW5nMi5sZW5ndGggPyAtMSA6
IG1pbkxlbjtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NRG9jdW1lbnR9IGNv
bnRhaW5lciBET00gZWxlbWVudCB0aGF0IG1heSBjb250YWluXG4gKiBhIFJlYWN0IGNvbXBvbmVu
dFxuICogQHJldHVybiB7Pyp9IERPTSBlbGVtZW50IHRoYXQgbWF5IGhhdmUgdGhlIHJlYWN0Um9v
dCBJRCwgb3IgbnVsbC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFp
bmVyKGNvbnRhaW5lcikge1xuICBpZiAoIWNvbnRhaW5lcikge1xuICAgIHJldHVybiBudWxsO1xu
ICB9XG5cbiAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSkge1xuICAg
IHJldHVybiBjb250YWluZXIuZG9jdW1lbnRFbGVtZW50O1xuICB9IGVsc2Uge1xuICAgIHJldHVy
biBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbnRlcm5hbEdldElE
KG5vZGUpIHtcbiAgLy8gSWYgbm9kZSBpcyBzb21ldGhpbmcgbGlrZSBhIHdpbmRvdywgZG9jdW1l
bnQsIG9yIHRleHQgbm9kZSwgbm9uZSBvZlxuICAvLyB3aGljaCBzdXBwb3J0IGF0dHJpYnV0ZXMg
b3IgYSAuZ2V0QXR0cmlidXRlIG1ldGhvZCwgZ3JhY2VmdWxseSByZXR1cm5cbiAgLy8gdGhlIGVt
cHR5IHN0cmluZywgYXMgaWYgdGhlIGF0dHJpYnV0ZSB3ZXJlIG1pc3NpbmcuXG4gIHJldHVybiBu
b2RlLmdldEF0dHJpYnV0ZSAmJiBub2RlLmdldEF0dHJpYnV0ZShBVFRSX05BTUUpIHx8ICcnO1xu
fVxuXG4vKipcbiAqIE1vdW50cyB0aGlzIGNvbXBvbmVudCBhbmQgaW5zZXJ0cyBpdCBpbnRvIHRo
ZSBET00uXG4gKlxuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50SW5zdGFuY2Ug
VGhlIGluc3RhbmNlIHRvIG1vdW50LlxuICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIg
RE9NIGVsZW1lbnQgdG8gbW91bnQgaW50by5cbiAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFu
c2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJr
dXAgSWYgdHJ1ZSwgZG8gbm90IGluc2VydCBtYXJrdXBcbiAqL1xuZnVuY3Rpb24gbW91bnRDb21w
b25lbnRJbnRvTm9kZSh3cmFwcGVySW5zdGFuY2UsIGNvbnRhaW5lciwgdHJhbnNhY3Rpb24sIHNo
b3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7XG4gIHZhciBtYXJrZXJOYW1lO1xuICBpZiAoUmVh
Y3RGZWF0dXJlRmxhZ3MubG9nVG9wTGV2ZWxSZW5kZXJzKSB7XG4gICAgdmFyIHdyYXBwZWRFbGVt
ZW50ID0gd3JhcHBlckluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5wcm9wcy5jaGlsZDtcbiAgICB2
YXIgdHlwZSA9IHdyYXBwZWRFbGVtZW50LnR5cGU7XG4gICAgbWFya2VyTmFtZSA9ICdSZWFjdCBt
b3VudDogJyArICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgPyB0eXBlIDogdHlwZS5kaXNwbGF5
TmFtZSB8fCB0eXBlLm5hbWUpO1xuICAgIGNvbnNvbGUudGltZShtYXJrZXJOYW1lKTtcbiAgfVxu
XG4gIHZhciBtYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQod3JhcHBlcklu
c3RhbmNlLCB0cmFuc2FjdGlvbiwgbnVsbCwgUmVhY3RET01Db250YWluZXJJbmZvKHdyYXBwZXJJ
bnN0YW5jZSwgY29udGFpbmVyKSwgY29udGV4dCwgMCAvKiBwYXJlbnREZWJ1Z0lEICovXG4gICk7
XG5cbiAgaWYgKG1hcmtlck5hbWUpIHtcbiAgICBjb25zb2xlLnRpbWVFbmQobWFya2VyTmFtZSk7
XG4gIH1cblxuICB3cmFwcGVySW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50Ll90b3BMZXZlbFdy
YXBwZXIgPSB3cmFwcGVySW5zdGFuY2U7XG4gIFJlYWN0TW91bnQuX21vdW50SW1hZ2VJbnRvTm9k
ZShtYXJrdXAsIGNvbnRhaW5lciwgd3JhcHBlckluc3RhbmNlLCBzaG91bGRSZXVzZU1hcmt1cCwg
dHJhbnNhY3Rpb24pO1xufVxuXG4vKipcbiAqIEJhdGNoZWQgbW91bnQuXG4gKlxuICogQHBhcmFt
IHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50SW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIG1vdW50
LlxuICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gbW91bnQg
aW50by5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgSWYgdHJ1ZSwgZG8g
bm90IGluc2VydCBtYXJrdXBcbiAqL1xuZnVuY3Rpb24gYmF0Y2hlZE1vdW50Q29tcG9uZW50SW50
b05vZGUoY29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNv
bnRleHQpIHtcbiAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb24uZ2V0UG9vbGVkKFxuICAvKiB1c2VDcmVhdGVFbGVtZW50ICovXG4gICFzaG91
bGRSZXVzZU1hcmt1cCAmJiBSZWFjdERPTUZlYXR1cmVGbGFncy51c2VDcmVhdGVFbGVtZW50KTtc
biAgdHJhbnNhY3Rpb24ucGVyZm9ybShtb3VudENvbXBvbmVudEludG9Ob2RlLCBudWxsLCBjb21w
b25lbnRJbnN0YW5jZSwgY29udGFpbmVyLCB0cmFuc2FjdGlvbiwgc2hvdWxkUmV1c2VNYXJrdXAs
IGNvbnRleHQpO1xuICBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5yZWxl
YXNlKHRyYW5zYWN0aW9uKTtcbn1cblxuLyoqXG4gKiBVbm1vdW50cyBhIGNvbXBvbmVudCBhbmQg
cmVtb3ZlcyBpdCBmcm9tIHRoZSBET00uXG4gKlxuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0g
aW5zdGFuY2UgUmVhY3QgY29tcG9uZW50IGluc3RhbmNlLlxuICogQHBhcmFtIHtET01FbGVtZW50
fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gdW5tb3VudCBmcm9tLlxuICogQGZpbmFsXG4gKiBA
aW50ZXJuYWxcbiAqIEBzZWUge1JlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9kZX1cbiAq
L1xuZnVuY3Rpb24gdW5tb3VudENvbXBvbmVudEZyb21Ob2RlKGluc3RhbmNlLCBjb250YWluZXIs
IHNhZmVseSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1c2goKTtcbiAg
fVxuICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChpbnN0YW5jZSwgc2FmZWx5KTtc
biAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRGbHVzaCgpO1xuICB9XG5cbiAgaWYgKGNv
bnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSkge1xuICAgIGNvbnRhaW5lciA9IGNv
bnRhaW5lci5kb2N1bWVudEVsZW1lbnQ7XG4gIH1cblxuICAvLyBodHRwOi8vanNwZXJmLmNvbS9l
bXB0eWluZy1hLW5vZGVcbiAgd2hpbGUgKGNvbnRhaW5lci5sYXN0Q2hpbGQpIHtcbiAgICBjb250
YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RDaGlsZCk7XG4gIH1cbn1cblxuLyoqXG4g
KiBUcnVlIGlmIHRoZSBzdXBwbGllZCBET00gbm9kZSBoYXMgYSBkaXJlY3QgUmVhY3QtcmVuZGVy
ZWQgY2hpbGQgdGhhdCBpc1xuICogbm90IGEgUmVhY3Qgcm9vdCBlbGVtZW50LiBVc2VmdWwgZm9y
IHdhcm5pbmcgaW4gYHJlbmRlcmAsXG4gKiBgdW5tb3VudENvbXBvbmVudEF0Tm9kZWAsIGV0Yy5c
biAqXG4gKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9NIG5vZGUu
XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00gZWxlbWVudCBjb250YWlucyBh
IGRpcmVjdCBjaGlsZCB0aGF0IHdhc1xuICogcmVuZGVyZWQgYnkgUmVhY3QgYnV0IGlzIG5vdCBh
IHJvb3QgZWxlbWVudC5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBoYXNOb25Sb290UmVh
Y3RDaGlsZChjb250YWluZXIpIHtcbiAgdmFyIHJvb3RFbCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJ
bkNvbnRhaW5lcihjb250YWluZXIpO1xuICBpZiAocm9vdEVsKSB7XG4gICAgdmFyIGluc3QgPSBS
ZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShyb290RWwpO1xuICAgIHJl
dHVybiAhIShpbnN0ICYmIGluc3QuX2hvc3RQYXJlbnQpO1xuICB9XG59XG5cbi8qKlxuICogVHJ1
ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaXMgYSBSZWFjdCBET00gZWxlbWVudCBhbmRcbiAq
IGl0IGhhcyBiZWVuIHJlbmRlcmVkIGJ5IGFub3RoZXIgY29weSBvZiBSZWFjdC5cbiAqXG4gKiBA
cGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9NIG5vZGUuXG4gKiBAcmV0
dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00gaGFzIGJlZW4gcmVuZGVyZWQgYnkgYW5vdGhl
ciBjb3B5IG9mIFJlYWN0XG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gbm9kZUlzUmVuZGVy
ZWRCeU90aGVySW5zdGFuY2UoY29udGFpbmVyKSB7XG4gIHZhciByb290RWwgPSBnZXRSZWFjdFJv
b3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgcmV0dXJuICEhKHJvb3RFbCAmJiBp
c1JlYWN0Tm9kZShyb290RWwpICYmICFSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VG
cm9tTm9kZShyb290RWwpKTtcbn1cblxuLyoqXG4gKiBUcnVlIGlmIHRoZSBzdXBwbGllZCBET00g
bm9kZSBpcyBhIHZhbGlkIG5vZGUgZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0gez9ET01FbGVtZW50
fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9NIG5vZGUuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVl
IGlmIHRoZSBET00gaXMgYSB2YWxpZCBET00gbm9kZS5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5j
dGlvbiBpc1ZhbGlkQ29udGFpbmVyKG5vZGUpIHtcbiAgcmV0dXJuICEhKG5vZGUgJiYgKG5vZGUu
bm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFIHx8IG5vZGUubm9kZVR5cGUgPT09IERPQ19O
T0RFX1RZUEUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBF
KSk7XG59XG5cbi8qKlxuICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaXMgYSB2YWxp
ZCBSZWFjdCBub2RlIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBU
aGUgY2FuZGlkYXRlIERPTSBub2RlLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUg
RE9NIGlzIGEgdmFsaWQgUmVhY3QgRE9NIG5vZGUuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rp
b24gaXNSZWFjdE5vZGUobm9kZSkge1xuICByZXR1cm4gaXNWYWxpZENvbnRhaW5lcihub2RlKSAm
JiAobm9kZS5oYXNBdHRyaWJ1dGUoUk9PVF9BVFRSX05BTUUpIHx8IG5vZGUuaGFzQXR0cmlidXRl
KEFUVFJfTkFNRSkpO1xufVxuXG5mdW5jdGlvbiBnZXRIb3N0Um9vdEluc3RhbmNlSW5Db250YWlu
ZXIoY29udGFpbmVyKSB7XG4gIHZhciByb290RWwgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250
YWluZXIoY29udGFpbmVyKTtcbiAgdmFyIHByZXZIb3N0SW5zdGFuY2UgPSByb290RWwgJiYgUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUocm9vdEVsKTtcbiAgcmV0dXJu
IHByZXZIb3N0SW5zdGFuY2UgJiYgIXByZXZIb3N0SW5zdGFuY2UuX2hvc3RQYXJlbnQgPyBwcmV2
SG9zdEluc3RhbmNlIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0VG9wTGV2ZWxXcmFwcGVySW5D
b250YWluZXIoY29udGFpbmVyKSB7XG4gIHZhciByb290ID0gZ2V0SG9zdFJvb3RJbnN0YW5jZUlu
Q29udGFpbmVyKGNvbnRhaW5lcik7XG4gIHJldHVybiByb290ID8gcm9vdC5faG9zdENvbnRhaW5l
ckluZm8uX3RvcExldmVsV3JhcHBlciA6IG51bGw7XG59XG5cbi8qKlxuICogVGVtcG9yYXJ5ICg/
KSBoYWNrIHNvIHRoYXQgd2UgY2FuIHN0b3JlIGFsbCB0b3AtbGV2ZWwgcGVuZGluZyB1cGRhdGVz
IG9uXG4gKiBjb21wb3NpdGVzIGluc3RlYWQgb2YgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IGRpZmZl
cmVudCB0eXBlcyBvZiBjb21wb25lbnRzXG4gKiBoZXJlLlxuICovXG52YXIgdG9wTGV2ZWxSb290
Q291bnRlciA9IDE7XG52YXIgVG9wTGV2ZWxXcmFwcGVyID0gZnVuY3Rpb24gKCkge1xuICB0aGlz
LnJvb3RJRCA9IHRvcExldmVsUm9vdENvdW50ZXIrKztcbn07XG5Ub3BMZXZlbFdyYXBwZXIucHJv
dG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFRvcExldmVsV3JhcHBlci5kaXNwbGF5TmFtZSA9ICdUb3BM
ZXZlbFdyYXBwZXInO1xufVxuVG9wTGV2ZWxXcmFwcGVyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5j
dGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnByb3BzLmNoaWxkO1xufTtcblRvcExldmVsV3JhcHBl
ci5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyID0gdHJ1ZTtcblxuLyoqXG4gKiBNb3VudGluZyBpcyB0
aGUgcHJvY2VzcyBvZiBpbml0aWFsaXppbmcgYSBSZWFjdCBjb21wb25lbnQgYnkgY3JlYXRpbmcg
aXRzXG4gKiByZXByZXNlbnRhdGl2ZSBET00gZWxlbWVudHMgYW5kIGluc2VydGluZyB0aGVtIGlu
dG8gYSBzdXBwbGllZCBgY29udGFpbmVyYC5cbiAqIEFueSBwcmlvciBjb250ZW50IGluc2lkZSBg
Y29udGFpbmVyYCBpcyBkZXN0cm95ZWQgaW4gdGhlIHByb2Nlc3MuXG4gKlxuICogICBSZWFjdE1v
dW50LnJlbmRlcihcbiAqICAgICBjb21wb25lbnQsXG4gKiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnRhaW5lcicpXG4gKiAgICk7XG4gKlxuICogICA8ZGl2IGlkPVwiY29udGFpbmVy
XCI+ICAgICAgICAgICAgICAgICAgIDwtLSBTdXBwbGllZCBgY29udGFpbmVyYC5cbiAqICAgICA8
ZGl2IGRhdGEtcmVhY3RpZD1cIi4zXCI+ICAgICAgICAgICAgICA8LS0gUmVuZGVyZWQgcmVhY3RS
b290IG9mIFJlYWN0XG4gKiAgICAgICAvLyAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb21wb25lbnQuXG4gKiAgICAgPC9kaXY+XG4gKiAgIDwvZGl2PlxuICpcbiAqIEluc2lk
ZSBvZiBgY29udGFpbmVyYCwgdGhlIGZpcnN0IGVsZW1lbnQgcmVuZGVyZWQgaXMgdGhlIFwicmVh
Y3RSb290XCIuXG4gKi9cbnZhciBSZWFjdE1vdW50ID0ge1xuICBUb3BMZXZlbFdyYXBwZXI6IFRv
cExldmVsV3JhcHBlcixcblxuICAvKipcbiAgICogVXNlZCBieSBkZXZ0b29scy4gVGhlIGtleXMg
YXJlIG5vdCBpbXBvcnRhbnQuXG4gICAqL1xuICBfaW5zdGFuY2VzQnlSZWFjdFJvb3RJRDogaW5z
dGFuY2VzQnlSZWFjdFJvb3RJRCxcblxuICAvKipcbiAgICogVGhpcyBpcyBhIGhvb2sgcHJvdmlk
ZWQgdG8gc3VwcG9ydCByZW5kZXJpbmcgUmVhY3QgY29tcG9uZW50cyB3aGlsZVxuICAgKiBlbnN1
cmluZyB0aGF0IHRoZSBhcHBhcmVudCBzY3JvbGwgcG9zaXRpb24gb2YgaXRzIGBjb250YWluZXJg
IGRvZXMgbm90XG4gICAqIGNoYW5nZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBj
b250YWluZXIgVGhlIGBjb250YWluZXJgIGJlaW5nIHJlbmRlcmVkIGludG8uXG4gICAqIEBwYXJh
bSB7ZnVuY3Rpb259IHJlbmRlckNhbGxiYWNrIFRoaXMgbXVzdCBiZSBjYWxsZWQgb25jZSB0byBk
byB0aGUgcmVuZGVyLlxuICAgKi9cbiAgc2Nyb2xsTW9uaXRvcjogZnVuY3Rpb24gKGNvbnRhaW5l
ciwgcmVuZGVyQ2FsbGJhY2spIHtcbiAgICByZW5kZXJDYWxsYmFjaygpO1xuICB9LFxuXG4gIC8q
KlxuICAgKiBUYWtlIGEgY29tcG9uZW50IHRoYXQncyBhbHJlYWR5IG1vdW50ZWQgaW50byB0aGUg
RE9NIGFuZCByZXBsYWNlIGl0cyBwcm9wc1xuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBw
cmV2Q29tcG9uZW50IGNvbXBvbmVudCBpbnN0YW5jZSBhbHJlYWR5IGluIHRoZSBET01cbiAgICog
QHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IGNvbXBvbmVudCBpbnN0YW5jZSB0byBy
ZW5kZXJcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgY29udGFpbmVyIHRvIHJl
bmRlciBpbnRvXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0cmln
Z2VyZWQgb24gY29tcGxldGlvblxuICAgKi9cbiAgX3VwZGF0ZVJvb3RDb21wb25lbnQ6IGZ1bmN0
aW9uIChwcmV2Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgbmV4dENvbnRleHQsIGNvbnRhaW5lciwg
Y2FsbGJhY2spIHtcbiAgICBSZWFjdE1vdW50LnNjcm9sbE1vbml0b3IoY29udGFpbmVyLCBmdW5j
dGlvbiAoKSB7XG4gICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVFbGVtZW50SW50ZXJuYWwo
cHJldkNvbXBvbmVudCwgbmV4dEVsZW1lbnQsIG5leHRDb250ZXh0KTtcbiAgICAgIGlmIChjYWxs
YmFjaykge1xuICAgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVDYWxsYmFja0ludGVybmFs
KHByZXZDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVy
biBwcmV2Q29tcG9uZW50O1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZW5kZXIgYSBuZXcgY29tcG9u
ZW50IGludG8gdGhlIERPTS4gSG9va2VkIGJ5IGhvb2tzIVxuICAgKlxuICAgKiBAcGFyYW0ge1Jl
YWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgZWxlbWVudCB0byByZW5kZXJcbiAgICogQHBhcmFtIHtE
T01FbGVtZW50fSBjb250YWluZXIgY29udGFpbmVyIHRvIHJlbmRlciBpbnRvXG4gICAqIEBwYXJh
bSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgaWYgd2Ugc2hvdWxkIHNraXAgdGhlIG1hcmt1
cCBpbnNlcnRpb25cbiAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IG5leHRDb21wb25lbnRc
biAgICovXG4gIF9yZW5kZXJOZXdSb290Q29tcG9uZW50OiBmdW5jdGlvbiAobmV4dEVsZW1lbnQs
IGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpIHtcbiAgICAvLyBWYXJpb3Vz
IHBhcnRzIG9mIG91ciBjb2RlIChzdWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3NcbiAg
ICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0byByZW5k
ZXIgYXJlbid0IG5lc3RlZDtcbiAgICAvLyB2ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIGNhc2UuXG4g
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoUmVhY3RD
dXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAnX3JlbmRlck5ld1Jvb3RDb21wb25lbnQoKTog
UmVuZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiAnICsgJ29mIHByb3BzIGFu
ZCBzdGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQgY29tcG9uZW50IHVwZGF0ZXMgZnJvbSAnICsgJ3Jl
bmRlciBpcyBub3QgYWxsb3dlZC4gSWYgbmVjZXNzYXJ5LCB0cmlnZ2VyIG5lc3RlZCB1cGRhdGVz
IGluICcgKyAnY29tcG9uZW50RGlkVXBkYXRlLiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAl
cy4nLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJl
bnQuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXG4g
ICAgIWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdfcmVnaXN0ZXJDb21wb25lbnQoLi4u
KTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgYSBET00gZWxlbWVudC4nKSA6IF9wcm9kSW52YXJp
YW50KCczNycpIDogdm9pZCAwO1xuXG4gICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmVuc3Vy
ZVNjcm9sbFZhbHVlTW9uaXRvcmluZygpO1xuICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9IGlu
c3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dEVsZW1lbnQsIGZhbHNlKTtcblxuICAgIC8vIFRo
ZSBpbml0aWFsIHJlbmRlciBpcyBzeW5jaHJvbm91cyBidXQgYW55IHVwZGF0ZXMgdGhhdCBoYXBw
ZW4gZHVyaW5nXG4gICAgLy8gcmVuZGVyaW5nLCBpbiBjb21wb25lbnRXaWxsTW91bnQgb3IgY29t
cG9uZW50RGlkTW91bnQsIHdpbGwgYmUgYmF0Y2hlZFxuICAgIC8vIGFjY29yZGluZyB0byB0aGUg
Y3VycmVudCBiYXRjaGluZyBzdHJhdGVneS5cblxuICAgIFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBk
YXRlcyhiYXRjaGVkTW91bnRDb21wb25lbnRJbnRvTm9kZSwgY29tcG9uZW50SW5zdGFuY2UsIGNv
bnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpO1xuXG4gICAgdmFyIHdyYXBwZXJJ
RCA9IGNvbXBvbmVudEluc3RhbmNlLl9pbnN0YW5jZS5yb290SUQ7XG4gICAgaW5zdGFuY2VzQnlS
ZWFjdFJvb3RJRFt3cmFwcGVySURdID0gY29tcG9uZW50SW5zdGFuY2U7XG5cbiAgICByZXR1cm4g
Y29tcG9uZW50SW5zdGFuY2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBSZWFjdCBj
b21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBzdXBwbGllZCBgY29udGFpbmVyYC5cbiAgICpc
biAgICogSWYgdGhlIFJlYWN0IGNvbXBvbmVudCB3YXMgcHJldmlvdXNseSByZW5kZXJlZCBpbnRv
IGBjb250YWluZXJgLCB0aGlzIHdpbGxcbiAgICogcGVyZm9ybSBhbiB1cGRhdGUgb24gaXQgYW5k
IG9ubHkgbXV0YXRlIHRoZSBET00gYXMgbmVjZXNzYXJ5IHRvIHJlZmxlY3QgdGhlXG4gICAqIGxh
dGVzdCBSZWFjdCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9
IHBhcmVudENvbXBvbmVudCBUaGUgY29uY2VwdHVhbCBwYXJlbnQgb2YgdGhpcyByZW5kZXIgdHJl
ZS5cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IENvbXBvbmVudCBlbGVt
ZW50IHRvIHJlbmRlci5cbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVs
ZW1lbnQgdG8gcmVuZGVyIGludG8uXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBm
dW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvblxuICAgKiBAcmV0dXJuIHtSZWFjdENvbXBv
bmVudH0gQ29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIGBjb250YWluZXJgLlxuICAgKi9c
biAgcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IGZ1bmN0aW9uIChwYXJlbnRDb21wb25lbnQs
IG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4gICAgIShwYXJlbnRDb21wb25l
bnQgIT0gbnVsbCAmJiBSZWFjdEluc3RhbmNlTWFwLmhhcyhwYXJlbnRDb21wb25lbnQpKSA/IHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdw
YXJlbnRDb21wb25lbnQgbXVzdCBiZSBhIHZhbGlkIFJlYWN0IENvbXBvbmVudCcpIDogX3Byb2RJ
bnZhcmlhbnQoJzM4JykgOiB2b2lkIDA7XG4gICAgcmV0dXJuIFJlYWN0TW91bnQuX3JlbmRlclN1
YnRyZWVJbnRvQ29udGFpbmVyKHBhcmVudENvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5l
ciwgY2FsbGJhY2spO1xuICB9LFxuXG4gIF9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjogZnVu
Y3Rpb24gKHBhcmVudENvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2sp
IHtcbiAgICBSZWFjdFVwZGF0ZVF1ZXVlLnZhbGlkYXRlQ2FsbGJhY2soY2FsbGJhY2ssICdSZWFj
dERPTS5yZW5kZXInKTtcbiAgICAhUmVhY3QuaXNWYWxpZEVsZW1lbnQobmV4dEVsZW1lbnQpID8g
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J1JlYWN0RE9NLnJlbmRlcigpOiBJbnZhbGlkIGNvbXBvbmVudCBlbGVtZW50LiVzJywgdHlwZW9m
IG5leHRFbGVtZW50ID09PSAnc3RyaW5nJyA/IFwiIEluc3RlYWQgb2YgcGFzc2luZyBhIHN0cmlu
ZyBsaWtlICdkaXYnLCBwYXNzIFwiICsgXCJSZWFjdC5jcmVhdGVFbGVtZW50KCdkaXYnKSBvciA8
ZGl2IC8+LlwiIDogdHlwZW9mIG5leHRFbGVtZW50ID09PSAnZnVuY3Rpb24nID8gJyBJbnN0ZWFk
IG9mIHBhc3NpbmcgYSBjbGFzcyBsaWtlIEZvbywgcGFzcyAnICsgJ1JlYWN0LmNyZWF0ZUVsZW1l
bnQoRm9vKSBvciA8Rm9vIC8+LicgOiAvLyBDaGVjayBpZiBpdCBxdWFja3MgbGlrZSBhbiBlbGVt
ZW50XG4gICAgbmV4dEVsZW1lbnQgIT0gbnVsbCAmJiBuZXh0RWxlbWVudC5wcm9wcyAhPT0gdW5k
ZWZpbmVkID8gJyBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbGx5IGxvYWRpbmcg
dHdvIGluZGVwZW5kZW50ICcgKyAnY29waWVzIG9mIFJlYWN0LicgOiAnJykgOiBfcHJvZEludmFy
aWFudCgnMzknLCB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdzdHJpbmcnID8gXCIgSW5zdGVhZCBv
ZiBwYXNzaW5nIGEgc3RyaW5nIGxpa2UgJ2RpdicsIHBhc3MgXCIgKyBcIlJlYWN0LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpIG9yIDxkaXYgLz4uXCIgOiB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdmdW5j
dGlvbicgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIGNsYXNzIGxpa2UgRm9vLCBwYXNzICcgKyAn
UmVhY3QuY3JlYXRlRWxlbWVudChGb28pIG9yIDxGb28gLz4uJyA6IG5leHRFbGVtZW50ICE9IG51
bGwgJiYgbmV4dEVsZW1lbnQucHJvcHMgIT09IHVuZGVmaW5lZCA/ICcgVGhpcyBtYXkgYmUgY2F1
c2VkIGJ5IHVuaW50ZW50aW9uYWxseSBsb2FkaW5nIHR3byBpbmRlcGVuZGVudCAnICsgJ2NvcGll
cyBvZiBSZWFjdC4nIDogJycpIDogdm9pZCAwO1xuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNvbnRhaW5lciB8fCAhY29udGFpbmVyLnRhZ05h
bWUgfHwgY29udGFpbmVyLnRhZ05hbWUudG9VcHBlckNhc2UoKSAhPT0gJ0JPRFknLCAncmVuZGVy
KCk6IFJlbmRlcmluZyBjb21wb25lbnRzIGRpcmVjdGx5IGludG8gZG9jdW1lbnQuYm9keSBpcyAn
ICsgJ2Rpc2NvdXJhZ2VkLCBzaW5jZSBpdHMgY2hpbGRyZW4gYXJlIG9mdGVuIG1hbmlwdWxhdGVk
IGJ5IHRoaXJkLXBhcnR5ICcgKyAnc2NyaXB0cyBhbmQgYnJvd3NlciBleHRlbnNpb25zLiBUaGlz
IG1heSBsZWFkIHRvIHN1YnRsZSAnICsgJ3JlY29uY2lsaWF0aW9uIGlzc3Vlcy4gVHJ5IHJlbmRl
cmluZyBpbnRvIGEgY29udGFpbmVyIGVsZW1lbnQgY3JlYXRlZCAnICsgJ2ZvciB5b3VyIGFwcC4n
KSA6IHZvaWQgMDtcblxuICAgIHZhciBuZXh0V3JhcHBlZEVsZW1lbnQgPSBSZWFjdC5jcmVhdGVF
bGVtZW50KFRvcExldmVsV3JhcHBlciwge1xuICAgICAgY2hpbGQ6IG5leHRFbGVtZW50XG4gICAg
fSk7XG5cbiAgICB2YXIgbmV4dENvbnRleHQ7XG4gICAgaWYgKHBhcmVudENvbXBvbmVudCkge1xu
ICAgICAgdmFyIHBhcmVudEluc3QgPSBSZWFjdEluc3RhbmNlTWFwLmdldChwYXJlbnRDb21wb25l
bnQpO1xuICAgICAgbmV4dENvbnRleHQgPSBwYXJlbnRJbnN0Ll9wcm9jZXNzQ2hpbGRDb250ZXh0
KHBhcmVudEluc3QuX2NvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0Q29udGV4dCA9
IGVtcHR5T2JqZWN0O1xuICAgIH1cblxuICAgIHZhciBwcmV2Q29tcG9uZW50ID0gZ2V0VG9wTGV2
ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFpbmVyKTtcblxuICAgIGlmIChwcmV2Q29tcG9uZW50
KSB7XG4gICAgICB2YXIgcHJldldyYXBwZWRFbGVtZW50ID0gcHJldkNvbXBvbmVudC5fY3VycmVu
dEVsZW1lbnQ7XG4gICAgICB2YXIgcHJldkVsZW1lbnQgPSBwcmV2V3JhcHBlZEVsZW1lbnQucHJv
cHMuY2hpbGQ7XG4gICAgICBpZiAoc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1l
bnQsIG5leHRFbGVtZW50KSkge1xuICAgICAgICB2YXIgcHVibGljSW5zdCA9IHByZXZDb21wb25l
bnQuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7XG4gICAgICAgIHZhciB1
cGRhdGVkQ2FsbGJhY2sgPSBjYWxsYmFjayAmJiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY2Fs
bGJhY2suY2FsbChwdWJsaWNJbnN0KTtcbiAgICAgICAgfTtcbiAgICAgICAgUmVhY3RNb3VudC5f
dXBkYXRlUm9vdENvbXBvbmVudChwcmV2Q29tcG9uZW50LCBuZXh0V3JhcHBlZEVsZW1lbnQsIG5l
eHRDb250ZXh0LCBjb250YWluZXIsIHVwZGF0ZWRDYWxsYmFjayk7XG4gICAgICAgIHJldHVybiBw
dWJsaWNJbnN0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgUmVhY3RNb3VudC51bm1vdW50Q29t
cG9uZW50QXROb2RlKGNvbnRhaW5lcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlYWN0
Um9vdEVsZW1lbnQgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtc
biAgICB2YXIgY29udGFpbmVySGFzUmVhY3RNYXJrdXAgPSByZWFjdFJvb3RFbGVtZW50ICYmICEh
aW50ZXJuYWxHZXRJRChyZWFjdFJvb3RFbGVtZW50KTtcbiAgICB2YXIgY29udGFpbmVySGFzTm9u
Um9vdFJlYWN0Q2hpbGQgPSBoYXNOb25Sb290UmVhY3RDaGlsZChjb250YWluZXIpO1xuXG4gICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjb250YWluZXJIYXNO
b25Sb290UmVhY3RDaGlsZCwgJ3JlbmRlciguLi4pOiBSZXBsYWNpbmcgUmVhY3QtcmVuZGVyZWQg
Y2hpbGRyZW4gd2l0aCBhIG5ldyByb290ICcgKyAnY29tcG9uZW50LiBJZiB5b3UgaW50ZW5kZWQg
dG8gdXBkYXRlIHRoZSBjaGlsZHJlbiBvZiB0aGlzIG5vZGUsICcgKyAneW91IHNob3VsZCBpbnN0
ZWFkIGhhdmUgdGhlIGV4aXN0aW5nIGNoaWxkcmVuIHVwZGF0ZSB0aGVpciBzdGF0ZSAnICsgJ2Fu
ZCByZW5kZXIgdGhlIG5ldyBjb21wb25lbnRzIGluc3RlYWQgb2YgY2FsbGluZyBSZWFjdERPTS5y
ZW5kZXIuJykgOiB2b2lkIDA7XG5cbiAgICAgIGlmICghY29udGFpbmVySGFzUmVhY3RNYXJrdXAg
fHwgcmVhY3RSb290RWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICB2YXIgcm9vdEVsZW1l
bnRTaWJsaW5nID0gcmVhY3RSb290RWxlbWVudDtcbiAgICAgICAgd2hpbGUgKHJvb3RFbGVtZW50
U2libGluZykge1xuICAgICAgICAgIGlmIChpbnRlcm5hbEdldElEKHJvb3RFbGVtZW50U2libGlu
ZykpIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGZhbHNlLCAncmVuZGVyKCk6IFRhcmdldCBub2RlIGhhcyBtYXJrdXAgcmVuZGVy
ZWQgYnkgUmVhY3QsIGJ1dCB0aGVyZSAnICsgJ2FyZSB1bnJlbGF0ZWQgbm9kZXMgYXMgd2VsbC4g
VGhpcyBpcyBtb3N0IGNvbW1vbmx5IGNhdXNlZCBieSAnICsgJ3doaXRlLXNwYWNlIGluc2VydGVk
IGFyb3VuZCBzZXJ2ZXItcmVuZGVyZWQgbWFya3VwLicpIDogdm9pZCAwO1xuICAgICAgICAgICAg
YnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJvb3RFbGVtZW50U2libGluZyA9IHJvb3RF
bGVtZW50U2libGluZy5uZXh0U2libGluZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxu
ICAgIHZhciBzaG91bGRSZXVzZU1hcmt1cCA9IGNvbnRhaW5lckhhc1JlYWN0TWFya3VwICYmICFw
cmV2Q29tcG9uZW50ICYmICFjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZDtcbiAgICB2YXIg
Y29tcG9uZW50ID0gUmVhY3RNb3VudC5fcmVuZGVyTmV3Um9vdENvbXBvbmVudChuZXh0V3JhcHBl
ZEVsZW1lbnQsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIG5leHRDb250ZXh0KS5fcmVu
ZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtcbiAgICBpZiAoY2FsbGJhY2spIHtc
biAgICAgIGNhbGxiYWNrLmNhbGwoY29tcG9uZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBv
bmVudDtcbiAgfSxcblxuICAvKipcbiAgICogUmVuZGVycyBhIFJlYWN0IGNvbXBvbmVudCBpbnRv
IHRoZSBET00gaW4gdGhlIHN1cHBsaWVkIGBjb250YWluZXJgLlxuICAgKiBTZWUgaHR0cHM6Ly9m
YWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3Rkb20u
cmVuZGVyXG4gICAqXG4gICAqIElmIHRoZSBSZWFjdCBjb21wb25lbnQgd2FzIHByZXZpb3VzbHkg
cmVuZGVyZWQgaW50byBgY29udGFpbmVyYCwgdGhpcyB3aWxsXG4gICAqIHBlcmZvcm0gYW4gdXBk
YXRlIG9uIGl0IGFuZCBvbmx5IG11dGF0ZSB0aGUgRE9NIGFzIG5lY2Vzc2FyeSB0byByZWZsZWN0
IHRoZVxuICAgKiBsYXRlc3QgUmVhY3QgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1Jl
YWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgQ29tcG9uZW50IGVsZW1lbnQgdG8gcmVuZGVyLlxuICAg
KiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byByZW5kZXIgaW50
by5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIGZ1bmN0aW9uIHRyaWdnZXJlZCBv
biBjb21wbGV0aW9uXG4gICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBDb21wb25lbnQgaW5z
dGFuY2UgcmVuZGVyZWQgaW4gYGNvbnRhaW5lcmAuXG4gICAqL1xuICByZW5kZXI6IGZ1bmN0aW9u
IChuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBSZWFjdE1v
dW50Ll9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihudWxsLCBuZXh0RWxlbWVudCwgY29udGFp
bmVyLCBjYWxsYmFjayk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVubW91bnRzIGFuZCBkZXN0cm95
cyB0aGUgUmVhY3QgY29tcG9uZW50IHJlbmRlcmVkIGluIHRoZSBgY29udGFpbmVyYC5cbiAgICog
U2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5o
dG1sI3JlYWN0ZG9tLnVubW91bnRjb21wb25lbnRhdG5vZGVcbiAgICpcbiAgICogQHBhcmFtIHtE
T01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgY29udGFpbmluZyBhIFJlYWN0IGNvbXBv
bmVudC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBhIGNvbXBvbmVudCB3YXMgZm91
bmQgaW4gYW5kIHVubW91bnRlZCBmcm9tXG4gICAqICAgICAgICAgICAgICAgICAgIGBjb250YWlu
ZXJgXG4gICAqL1xuICB1bm1vdW50Q29tcG9uZW50QXROb2RlOiBmdW5jdGlvbiAoY29udGFpbmVy
KSB7XG4gICAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBv
c2l0ZUNvbXBvbmVudCdzXG4gICAgLy8gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCkgYXNzdW1l
IHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7XG4gICAgLy8gdmVyaWZ5IHRoYXQg
dGhhdCdzIHRoZSBjYXNlLiAoU3RyaWN0bHkgc3BlYWtpbmcsIHVubW91bnRpbmcgd29uJ3QgY2F1
c2UgYVxuICAgIC8vIHJlbmRlciBidXQgd2Ugc3RpbGwgZG9uJ3QgZXhwZWN0IHRvIGJlIGluIGEg
cmVuZGVyIGNhbGwgaGVyZS4pXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAndW5tb3Vu
dENvbXBvbmVudEF0Tm9kZSgpOiBSZW5kZXIgbWV0aG9kcyBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0
aW9uICcgKyAnb2YgcHJvcHMgYW5kIHN0YXRlOyB0cmlnZ2VyaW5nIG5lc3RlZCBjb21wb25lbnQg
dXBkYXRlcyBmcm9tIHJlbmRlciAnICsgJ2lzIG5vdCBhbGxvd2VkLiBJZiBuZWNlc3NhcnksIHRy
aWdnZXIgbmVzdGVkIHVwZGF0ZXMgaW4gJyArICdjb21wb25lbnREaWRVcGRhdGUuIENoZWNrIHRo
ZSByZW5kZXIgbWV0aG9kIG9mICVzLicsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgJiYgUmVh
Y3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9u
ZW50JykgOiB2b2lkIDA7XG5cbiAgICAhaXNWYWxpZENvbnRhaW5lcihjb250YWluZXIpID8gcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3Vu
bW91bnRDb21wb25lbnRBdE5vZGUoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgYSBET00g
ZWxlbWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCc0MCcpIDogdm9pZCAwO1xuXG4gICAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFub2RlSXNSZW5kZXJlZEJ5T3Ro
ZXJJbnN0YW5jZShjb250YWluZXIpLCBcInVubW91bnRDb21wb25lbnRBdE5vZGUoKTogVGhlIG5v
ZGUgeW91J3JlIGF0dGVtcHRpbmcgdG8gdW5tb3VudCBcIiArICd3YXMgcmVuZGVyZWQgYnkgYW5v
dGhlciBjb3B5IG9mIFJlYWN0LicpIDogdm9pZCAwO1xuICAgIH1cblxuICAgIHZhciBwcmV2Q29t
cG9uZW50ID0gZ2V0VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgICBp
ZiAoIXByZXZDb21wb25lbnQpIHtcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBub2RlIGJlaW5nIHVu
bW91bnRlZCB3YXMgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCBpc24ndCBhXG4gICAgICAvLyByb290
IG5vZGUuXG4gICAgICB2YXIgY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQgPSBoYXNOb25S
b290UmVhY3RDaGlsZChjb250YWluZXIpO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGUgY29udGFp
bmVyIGl0c2VsZiBpcyBhIFJlYWN0IHJvb3Qgbm9kZS5cbiAgICAgIHZhciBpc0NvbnRhaW5lclJl
YWN0Um9vdCA9IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gMSAmJiBjb250YWluZXIuaGFzQXR0cmli
dXRlKFJPT1RfQVRUUl9OQU1FKTtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoIWNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkLCBcInVubW91
bnRDb21wb25lbnRBdE5vZGUoKTogVGhlIG5vZGUgeW91J3JlIGF0dGVtcHRpbmcgdG8gdW5tb3Vu
dCBcIiArICd3YXMgcmVuZGVyZWQgYnkgUmVhY3QgYW5kIGlzIG5vdCBhIHRvcC1sZXZlbCBjb250
YWluZXIuICVzJywgaXNDb250YWluZXJSZWFjdFJvb3QgPyAnWW91IG1heSBoYXZlIGFjY2lkZW50
YWxseSBwYXNzZWQgaW4gYSBSZWFjdCByb290IG5vZGUgaW5zdGVhZCAnICsgJ29mIGl0cyBjb250
YWluZXIuJyA6ICdJbnN0ZWFkLCBoYXZlIHRoZSBwYXJlbnQgY29tcG9uZW50IHVwZGF0ZSBpdHMg
c3RhdGUgYW5kICcgKyAncmVyZW5kZXIgaW4gb3JkZXIgdG8gcmVtb3ZlIHRoaXMgY29tcG9uZW50
LicpIDogdm9pZCAwO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAg
IGRlbGV0ZSBpbnN0YW5jZXNCeVJlYWN0Um9vdElEW3ByZXZDb21wb25lbnQuX2luc3RhbmNlLnJv
b3RJRF07XG4gICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKHVubW91bnRDb21wb25lbnRG
cm9tTm9kZSwgcHJldkNvbXBvbmVudCwgY29udGFpbmVyLCBmYWxzZSk7XG4gICAgcmV0dXJuIHRy
dWU7XG4gIH0sXG5cbiAgX21vdW50SW1hZ2VJbnRvTm9kZTogZnVuY3Rpb24gKG1hcmt1cCwgY29u
dGFpbmVyLCBpbnN0YW5jZSwgc2hvdWxkUmV1c2VNYXJrdXAsIHRyYW5zYWN0aW9uKSB7XG4gICAg
IWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdtb3VudENvbXBvbmVudEludG9Ob2RlKC4u
Lik6IFRhcmdldCBjb250YWluZXIgaXMgbm90IHZhbGlkLicpIDogX3Byb2RJbnZhcmlhbnQoJzQx
JykgOiB2b2lkIDA7XG5cbiAgICBpZiAoc2hvdWxkUmV1c2VNYXJrdXApIHtcbiAgICAgIHZhciBy
b290RWxlbWVudCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xu
ICAgICAgaWYgKFJlYWN0TWFya3VwQ2hlY2tzdW0uY2FuUmV1c2VNYXJrdXAobWFya3VwLCByb290
RWxlbWVudCkpIHtcbiAgICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZShp
bnN0YW5jZSwgcm9vdEVsZW1lbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xu
ICAgICAgICB2YXIgY2hlY2tzdW0gPSByb290RWxlbWVudC5nZXRBdHRyaWJ1dGUoUmVhY3RNYXJr
dXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUpO1xuICAgICAgICByb290RWxlbWVudC5yZW1v
dmVBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUpO1xuXG4g
ICAgICAgIHZhciByb290TWFya3VwID0gcm9vdEVsZW1lbnQub3V0ZXJIVE1MO1xuICAgICAgICBy
b290RWxlbWVudC5zZXRBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRS
X05BTUUsIGNoZWNrc3VtKTtcblxuICAgICAgICB2YXIgbm9ybWFsaXplZE1hcmt1cCA9IG1hcmt1
cDtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgICAgICAvLyBiZWNhdXNlIHJvb3RNYXJrdXAgaXMgcmV0cmlldmVkIGZyb20gdGhlIERP
TSwgdmFyaW91cyBub3JtYWxpemF0aW9uc1xuICAgICAgICAgIC8vIHdpbGwgaGF2ZSBvY2N1cnJl
ZCB3aGljaCB3aWxsIG5vdCBiZSBwcmVzZW50IGluIGBtYXJrdXBgLiBIZXJlLFxuICAgICAgICAg
IC8vIGluc2VydCBtYXJrdXAgaW50byBhIDxkaXY+IG9yIDxpZnJhbWU+IGRlcGVuZGluZyBvbiB0
aGUgY29udGFpbmVyXG4gICAgICAgICAgLy8gdHlwZSB0byBwZXJmb3JtIHRoZSBzYW1lIG5vcm1h
bGl6YXRpb25zIGJlZm9yZSBjb21wYXJpbmcuXG4gICAgICAgICAgdmFyIG5vcm1hbGl6ZXI7XG4g
ICAgICAgICAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUpIHtc
biAgICAgICAgICAgIG5vcm1hbGl6ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtc
biAgICAgICAgICAgIG5vcm1hbGl6ZXIuaW5uZXJIVE1MID0gbWFya3VwO1xuICAgICAgICAgICAg
bm9ybWFsaXplZE1hcmt1cCA9IG5vcm1hbGl6ZXIuaW5uZXJIVE1MO1xuICAgICAgICAgIH0gZWxz
ZSB7XG4gICAgICAgICAgICBub3JtYWxpemVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZy
YW1lJyk7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vcm1hbGl6ZXIp
O1xuICAgICAgICAgICAgbm9ybWFsaXplci5jb250ZW50RG9jdW1lbnQud3JpdGUobWFya3VwKTtc
biAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAgPSBub3JtYWxpemVyLmNvbnRlbnREb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQub3V0ZXJIVE1MO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5y
ZW1vdmVDaGlsZChub3JtYWxpemVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAg
ICB2YXIgZGlmZkluZGV4ID0gZmlyc3REaWZmZXJlbmNlSW5kZXgobm9ybWFsaXplZE1hcmt1cCwg
cm9vdE1hcmt1cCk7XG4gICAgICAgIHZhciBkaWZmZXJlbmNlID0gJyAoY2xpZW50KSAnICsgbm9y
bWFsaXplZE1hcmt1cC5zdWJzdHJpbmcoZGlmZkluZGV4IC0gMjAsIGRpZmZJbmRleCArIDIwKSAr
ICdcXG4gKHNlcnZlcikgJyArIHJvb3RNYXJrdXAuc3Vic3RyaW5nKGRpZmZJbmRleCAtIDIwLCBk
aWZmSW5kZXggKyAyMCk7XG5cbiAgICAgICAgIShjb250YWluZXIubm9kZVR5cGUgIT09IERPQ19O
T0RFX1RZUEUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ1lvdVxcJ3JlIHRyeWluZyB0byByZW5kZXIgYSBjb21wb25lbnQgdG8gdGhl
IGRvY3VtZW50IHVzaW5nIHNlcnZlciByZW5kZXJpbmcgYnV0IHRoZSBjaGVja3N1bSB3YXMgaW52
YWxpZC4gVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSByZW5kZXJlZCBhIGRpZmZlcmVudCBjb21wb25l
bnQgdHlwZSBvciBwcm9wcyBvbiB0aGUgY2xpZW50IGZyb20gdGhlIG9uZSBvbiB0aGUgc2VydmVy
LCBvciB5b3VyIHJlbmRlcigpIG1ldGhvZHMgYXJlIGltcHVyZS4gUmVhY3QgY2Fubm90IGhhbmRs
ZSB0aGlzIGNhc2UgZHVlIHRvIGNyb3NzLWJyb3dzZXIgcXVpcmtzIGJ5IHJlbmRlcmluZyBhdCB0
aGUgZG9jdW1lbnQgcm9vdC4gWW91IHNob3VsZCBsb29rIGZvciBlbnZpcm9ubWVudCBkZXBlbmRl
bnQgY29kZSBpbiB5b3VyIGNvbXBvbmVudHMgYW5kIGVuc3VyZSB0aGUgcHJvcHMgYXJlIHRoZSBz
YW1lIGNsaWVudCBhbmQgc2VydmVyIHNpZGU6XFxuJXMnLCBkaWZmZXJlbmNlKSA6IF9wcm9kSW52
YXJpYW50KCc0MicsIGRpZmZlcmVuY2UpIDogdm9pZCAwO1xuXG4gICAgICAgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdCBhdHRlbXB0
ZWQgdG8gcmV1c2UgbWFya3VwIGluIGEgY29udGFpbmVyIGJ1dCB0aGUgJyArICdjaGVja3N1bSB3
YXMgaW52YWxpZC4gVGhpcyBnZW5lcmFsbHkgbWVhbnMgdGhhdCB5b3UgYXJlICcgKyAndXNpbmcg
c2VydmVyIHJlbmRlcmluZyBhbmQgdGhlIG1hcmt1cCBnZW5lcmF0ZWQgb24gdGhlICcgKyAnc2Vy
dmVyIHdhcyBub3Qgd2hhdCB0aGUgY2xpZW50IHdhcyBleHBlY3RpbmcuIFJlYWN0IGluamVjdGVk
ICcgKyAnbmV3IG1hcmt1cCB0byBjb21wZW5zYXRlIHdoaWNoIHdvcmtzIGJ1dCB5b3UgaGF2ZSBs
b3N0IG1hbnkgJyArICdvZiB0aGUgYmVuZWZpdHMgb2Ygc2VydmVyIHJlbmRlcmluZy4gSW5zdGVh
ZCwgZmlndXJlIG91dCAnICsgJ3doeSB0aGUgbWFya3VwIGJlaW5nIGdlbmVyYXRlZCBpcyBkaWZm
ZXJlbnQgb24gdGhlIGNsaWVudCAnICsgJ29yIHNlcnZlcjpcXG4lcycsIGRpZmZlcmVuY2UpIDog
dm9pZCAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgIShjb250YWluZXIubm9k
ZVR5cGUgIT09IERPQ19OT0RFX1RZUEUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1lvdVxcJ3JlIHRyeWluZyB0byByZW5kZXIgYSBj
b21wb25lbnQgdG8gdGhlIGRvY3VtZW50IGJ1dCB5b3UgZGlkblxcJ3QgdXNlIHNlcnZlciByZW5k
ZXJpbmcuIFdlIGNhblxcJ3QgZG8gdGhpcyB3aXRob3V0IHVzaW5nIHNlcnZlciByZW5kZXJpbmcg
ZHVlIHRvIGNyb3NzLWJyb3dzZXIgcXVpcmtzLiBTZWUgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9T
dHJpbmcoKSBmb3Igc2VydmVyIHJlbmRlcmluZy4nKSA6IF9wcm9kSW52YXJpYW50KCc0MycpIDog
dm9pZCAwO1xuXG4gICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcbiAgICAg
IHdoaWxlIChjb250YWluZXIubGFzdENoaWxkKSB7XG4gICAgICAgIGNvbnRhaW5lci5yZW1vdmVD
aGlsZChjb250YWluZXIubGFzdENoaWxkKTtcbiAgICAgIH1cbiAgICAgIERPTUxhenlUcmVlLmlu
c2VydFRyZWVCZWZvcmUoY29udGFpbmVyLCBtYXJrdXAsIG51bGwpO1xuICAgIH0gZWxzZSB7XG4g
ICAgICBzZXRJbm5lckhUTUwoY29udGFpbmVyLCBtYXJrdXApO1xuICAgICAgUmVhY3RET01Db21w
b25lbnRUcmVlLnByZWNhY2hlTm9kZShpbnN0YW5jZSwgY29udGFpbmVyLmZpcnN0Q2hpbGQpO1xu
ICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICB2YXIgaG9zdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VG
cm9tTm9kZShjb250YWluZXIuZmlyc3RDaGlsZCk7XG4gICAgICBpZiAoaG9zdE5vZGUuX2RlYnVn
SUQgIT09IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9z
dE9wZXJhdGlvbih7XG4gICAgICAgICAgaW5zdGFuY2VJRDogaG9zdE5vZGUuX2RlYnVnSUQsXG4g
ICAgICAgICAgdHlwZTogJ21vdW50JyxcbiAgICAgICAgICBwYXlsb2FkOiBtYXJrdXAudG9TdHJp
bmcoKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBv
cnRzID0gUmVhY3RNb3VudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0TW91bnQuanNcbiAqKiBtb2R1bGUgaWQg
PSA2N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSBy
ZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3QgPSByZXF1aXJlKCdy
ZWFjdC9saWIvUmVhY3QnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2lu
dmFyaWFudCcpO1xuXG52YXIgUmVhY3ROb2RlVHlwZXMgPSB7XG4gIEhPU1Q6IDAsXG4gIENPTVBP
U0lURTogMSxcbiAgRU1QVFk6IDIsXG5cbiAgZ2V0VHlwZTogZnVuY3Rpb24gKG5vZGUpIHtcbiAg
ICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIFJl
YWN0Tm9kZVR5cGVzLkVNUFRZO1xuICAgIH0gZWxzZSBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQo
bm9kZSkpIHtcbiAgICAgIGlmICh0eXBlb2Ygbm9kZS50eXBlID09PSAnZnVuY3Rpb24nKSB7XG4g
ICAgICAgIHJldHVybiBSZWFjdE5vZGVUeXBlcy5DT01QT1NJVEU7XG4gICAgICB9IGVsc2Uge1xu
ICAgICAgICByZXR1cm4gUmVhY3ROb2RlVHlwZXMuSE9TVDtcbiAgICAgIH1cbiAgICB9XG4gICAg
IWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ1VuZXhwZWN0ZWQgbm9kZTogJXMnLCBub2RlKSA6IF9wcm9kSW52YXJpYW50KCcy
NicsIG5vZGUpIDogdm9pZCAwO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Tm9k
ZVR5cGVzO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LWRvbS9saWIvUmVhY3ROb2RlVHlwZXMuanNcbiAqKiBtb2R1bGUgaWQgPSA2OFxu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFZpZXdwb3J0TWV0cmljcyA9IHtcbiAgY3VycmVu
dFNjcm9sbExlZnQ6IDAsXG5cbiAgY3VycmVudFNjcm9sbFRvcDogMCxcblxuICByZWZyZXNoU2Ny
b2xsVmFsdWVzOiBmdW5jdGlvbiAoc2Nyb2xsUG9zaXRpb24pIHtcbiAgICBWaWV3cG9ydE1ldHJp
Y3MuY3VycmVudFNjcm9sbExlZnQgPSBzY3JvbGxQb3NpdGlvbi54O1xuICAgIFZpZXdwb3J0TWV0
cmljcy5jdXJyZW50U2Nyb2xsVG9wID0gc2Nyb2xsUG9zaXRpb24ueTtcbiAgfVxufTtcblxubW9k
dWxlLmV4cG9ydHMgPSBWaWV3cG9ydE1ldHJpY3M7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9WaWV3cG9ydE1ldHJpY3Mu
anNcbiAqKiBtb2R1bGUgaWQgPSA2OVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoq
XG4gKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIg
X3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIg
aW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogQWNj
dW11bGF0ZXMgaXRlbXMgdGhhdCBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCBpbnRvIHRo
ZSBmaXJzdCBvbmUuIFRoaXNcbiAqIGlzIHVzZWQgdG8gY29uc2VydmUgbWVtb3J5IGJ5IGF2b2lk
aW5nIGFycmF5IGFsbG9jYXRpb25zLCBhbmQgdGh1cyBzYWNyaWZpY2VzXG4gKiBBUEkgY2xlYW5u
ZXNzLiBTaW5jZSBgY3VycmVudGAgY2FuIGJlIG51bGwgYmVmb3JlIGJlaW5nIHBhc3NlZCBpbiBh
bmQgbm90XG4gKiBudWxsIGFmdGVyIHRoaXMgZnVuY3Rpb24sIG1ha2Ugc3VyZSB0byBhc3NpZ24g
aXQgYmFjayB0byBgY3VycmVudGA6XG4gKlxuICogYGEgPSBhY2N1bXVsYXRlSW50byhhLCBiKTtg
XG4gKlxuICogVGhpcyBBUEkgc2hvdWxkIGJlIHNwYXJpbmdseSB1c2VkLiBUcnkgYGFjY3VtdWxh
dGVgIGZvciBzb21ldGhpbmcgY2xlYW5lci5cbiAqXG4gKiBAcmV0dXJuIHsqfGFycmF5PCo+fSBB
biBhY2N1bXVsYXRpb24gb2YgaXRlbXMuXG4gKi9cblxuZnVuY3Rpb24gYWNjdW11bGF0ZUludG8o
Y3VycmVudCwgbmV4dCkge1xuICAhKG5leHQgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnYWNjdW11bGF0ZUludG8oLi4u
KTogQWNjdW11bGF0ZWQgaXRlbXMgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuJykgOiBf
cHJvZEludmFyaWFudCgnMzAnKSA6IHZvaWQgMDtcblxuICBpZiAoY3VycmVudCA9PSBudWxsKSB7
XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICAvLyBCb3RoIGFyZSBub3QgZW1wdHkuIFdhcm5p
bmc6IE5ldmVyIGNhbGwgeC5jb25jYXQoeSkgd2hlbiB5b3UgYXJlIG5vdFxuICAvLyBjZXJ0YWlu
IHRoYXQgeCBpcyBhbiBBcnJheSAoeCBjb3VsZCBiZSBhIHN0cmluZyB3aXRoIGNvbmNhdCBtZXRo
b2QpLlxuICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50KSkge1xuICAgIGlmIChBcnJheS5pc0Fy
cmF5KG5leHQpKSB7XG4gICAgICBjdXJyZW50LnB1c2guYXBwbHkoY3VycmVudCwgbmV4dCk7XG4g
ICAgICByZXR1cm4gY3VycmVudDtcbiAgICB9XG4gICAgY3VycmVudC5wdXNoKG5leHQpO1xuICAg
IHJldHVybiBjdXJyZW50O1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkobmV4dCkpIHtcbiAg
ICAvLyBBIGJpdCB0b28gZGFuZ2Vyb3VzIHRvIG11dGF0ZSBgbmV4dGAuXG4gICAgcmV0dXJuIFtj
dXJyZW50XS5jb25jYXQobmV4dCk7XG4gIH1cblxuICByZXR1cm4gW2N1cnJlbnQsIG5leHRdO1xu
fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFjY3VtdWxhdGVJbnRvO1xuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvYWNjdW11bGF0
ZUludG8uanNcbiAqKiBtb2R1bGUgaWQgPSA3MFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG4vKipcbiAqIEBwYXJhbSB7YXJyYXl9IGFyciBhbiBcImFjY3VtdWxhdGlvblwiIG9mIGl0ZW1z
IHdoaWNoIGlzIGVpdGhlciBhbiBBcnJheSBvclxuICogYSBzaW5nbGUgaXRlbS4gVXNlZnVsIHdo
ZW4gcGFpcmVkIHdpdGggdGhlIGBhY2N1bXVsYXRlYCBtb2R1bGUuIFRoaXMgaXMgYVxuICogc2lt
cGxlIHV0aWxpdHkgdGhhdCBhbGxvd3MgdXMgdG8gcmVhc29uIGFib3V0IGEgY29sbGVjdGlvbiBv
ZiBpdGVtcywgYnV0XG4gKiBoYW5kbGluZyB0aGUgY2FzZSB3aGVuIHRoZXJlIGlzIGV4YWN0bHkg
b25lIGl0ZW0gKGFuZCB3ZSBkbyBub3QgbmVlZCB0b1xuICogYWxsb2NhdGUgYW4gYXJyYXkpLlxu
ICovXG5cbmZ1bmN0aW9uIGZvckVhY2hBY2N1bXVsYXRlZChhcnIsIGNiLCBzY29wZSkge1xuICBp
ZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgYXJyLmZvckVhY2goY2IsIHNjb3BlKTtcbiAg
fSBlbHNlIGlmIChhcnIpIHtcbiAgICBjYi5jYWxsKHNjb3BlLCBhcnIpO1xuICB9XG59XG5cbm1v
ZHVsZS5leHBvcnRzID0gZm9yRWFjaEFjY3VtdWxhdGVkO1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvZm9yRWFjaEFjY3Vt
dWxhdGVkLmpzXG4gKiogbW9kdWxlIGlkID0gNzFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZh
ciBSZWFjdE5vZGVUeXBlcyA9IHJlcXVpcmUoJy4vUmVhY3ROb2RlVHlwZXMnKTtcblxuZnVuY3Rp
b24gZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUoaW5zdCkge1xuICB2YXIgdHlwZTtcblxu
ICB3aGlsZSAoKHR5cGUgPSBpbnN0Ll9yZW5kZXJlZE5vZGVUeXBlKSA9PT0gUmVhY3ROb2RlVHlw
ZXMuQ09NUE9TSVRFKSB7XG4gICAgaW5zdCA9IGluc3QuX3JlbmRlcmVkQ29tcG9uZW50O1xuICB9
XG5cbiAgaWYgKHR5cGUgPT09IFJlYWN0Tm9kZVR5cGVzLkhPU1QpIHtcbiAgICByZXR1cm4gaW5z
dC5fcmVuZGVyZWRDb21wb25lbnQ7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gUmVhY3ROb2RlVHlw
ZXMuRU1QVFkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9
IGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxu
ICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvZ2V0SG9zdENvbXBvbmVu
dEZyb21Db21wb3NpdGUuanNcbiAqKiBtb2R1bGUgaWQgPSA3MlxuICoqIG1vZHVsZSBjaHVua3Mg
PSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0
JztcblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0
aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIGNvbnRlbnRLZXkgPSBudWxsO1xuXG4vKipcbiAqIEdl
dHMgdGhlIGtleSB1c2VkIHRvIGFjY2VzcyB0ZXh0IGNvbnRlbnQgb24gYSBET00gbm9kZS5cbiAq
XG4gKiBAcmV0dXJuIHs/c3RyaW5nfSBLZXkgdXNlZCB0byBhY2Nlc3MgdGV4dCBjb250ZW50Llxu
ICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGdldFRleHRDb250ZW50QWNjZXNzb3IoKSB7XG4g
IGlmICghY29udGVudEtleSAmJiBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAg
ICAvLyBQcmVmZXIgdGV4dENvbnRlbnQgdG8gaW5uZXJUZXh0IGJlY2F1c2UgbWFueSBicm93c2Vy
cyBzdXBwb3J0IGJvdGggYnV0XG4gICAgLy8gU1ZHIDx0ZXh0PiBlbGVtZW50cyBkb24ndCBzdXBw
b3J0IGlubmVyVGV4dCBldmVuIHdoZW4gPGRpdj4gZG9lcy5cbiAgICBjb250ZW50S2V5ID0gJ3Rl
eHRDb250ZW50JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgPyAndGV4dENvbnRlbnQnIDog
J2lubmVyVGV4dCc7XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnRLZXk7XG59XG5cbm1vZHVsZS5leHBv
cnRzID0gZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2dldFRleHRDb250ZW50QWNj
ZXNzb3IuanNcbiAqKiBtb2R1bGUgaWQgPSA3M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVl
Jyk7XG5cbmZ1bmN0aW9uIGlzQ2hlY2thYmxlKGVsZW0pIHtcbiAgdmFyIHR5cGUgPSBlbGVtLnR5
cGU7XG4gIHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWU7XG4gIHJldHVybiBub2RlTmFtZSAm
JiBub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmICh0eXBlID09PSAnY2hlY2ti
b3gnIHx8IHR5cGUgPT09ICdyYWRpbycpO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFja2VyKGluc3Qp
IHtcbiAgcmV0dXJuIGluc3QuX3dyYXBwZXJTdGF0ZS52YWx1ZVRyYWNrZXI7XG59XG5cbmZ1bmN0
aW9uIGF0dGFjaFRyYWNrZXIoaW5zdCwgdHJhY2tlcikge1xuICBpbnN0Ll93cmFwcGVyU3RhdGUu
dmFsdWVUcmFja2VyID0gdHJhY2tlcjtcbn1cblxuZnVuY3Rpb24gZGV0YWNoVHJhY2tlcihpbnN0
KSB7XG4gIGRlbGV0ZSBpbnN0Ll93cmFwcGVyU3RhdGUudmFsdWVUcmFja2VyO1xufVxuXG5mdW5j
dGlvbiBnZXRWYWx1ZUZyb21Ob2RlKG5vZGUpIHtcbiAgdmFyIHZhbHVlO1xuICBpZiAobm9kZSkg
e1xuICAgIHZhbHVlID0gaXNDaGVja2FibGUobm9kZSkgPyAnJyArIG5vZGUuY2hlY2tlZCA6IG5v
ZGUudmFsdWU7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG52YXIgaW5wdXRWYWx1ZVRyYWNr
aW5nID0ge1xuICAvLyBleHBvc2VkIGZvciB0ZXN0aW5nXG4gIF9nZXRUcmFja2VyRnJvbU5vZGU6
IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIGdldFRyYWNrZXIoUmVhY3RET01Db21wb25l
bnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkpO1xuICB9LFxuXG5cbiAgdHJhY2s6IGZ1
bmN0aW9uIChpbnN0KSB7XG4gICAgaWYgKGdldFRyYWNrZXIoaW5zdCkpIHtcbiAgICAgIHJldHVy
bjtcbiAgICB9XG5cbiAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2Rl
RnJvbUluc3RhbmNlKGluc3QpO1xuICAgIHZhciB2YWx1ZUZpZWxkID0gaXNDaGVja2FibGUobm9k
ZSkgPyAnY2hlY2tlZCcgOiAndmFsdWUnO1xuICAgIHZhciBkZXNjcmlwdG9yID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihub2RlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwgdmFsdWVG
aWVsZCk7XG5cbiAgICB2YXIgY3VycmVudFZhbHVlID0gJycgKyBub2RlW3ZhbHVlRmllbGRdO1xu
XG4gICAgLy8gaWYgc29tZW9uZSBoYXMgYWxyZWFkeSBkZWZpbmVkIGEgdmFsdWUgb3IgU2FmYXJp
LCB0aGVuIGJhaWxcbiAgICAvLyBhbmQgZG9uJ3QgdHJhY2sgdmFsdWUgd2lsbCBjYXVzZSBvdmVy
IHJlcG9ydGluZyBvZiBjaGFuZ2VzLFxuICAgIC8vIGJ1dCBpdCdzIGJldHRlciB0aGVuIGEgaGFy
ZCBmYWlsdXJlXG4gICAgLy8gKG5lZWRlZCBmb3IgY2VydGFpbiB0ZXN0cyB0aGF0IHNweU9uIGlu
cHV0IHZhbHVlcyBhbmQgU2FmYXJpKVxuICAgIGlmIChub2RlLmhhc093blByb3BlcnR5KHZhbHVl
RmllbGQpIHx8IHR5cGVvZiBkZXNjcmlwdG9yLmdldCAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Yg
ZGVzY3JpcHRvci5zZXQgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5c
biAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobm9kZSwgdmFsdWVGaWVsZCwge1xuICAgICAgZW51
bWVyYWJsZTogZGVzY3JpcHRvci5lbnVtZXJhYmxlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVl
LFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yLmdl
dC5jYWxsKHRoaXMpO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4g
ICAgICAgIGN1cnJlbnRWYWx1ZSA9ICcnICsgdmFsdWU7XG4gICAgICAgIGRlc2NyaXB0b3Iuc2V0
LmNhbGwodGhpcywgdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgYXR0YWNoVHJhY2tl
cihpbnN0LCB7XG4gICAgICBnZXRWYWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4g
Y3VycmVudFZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldFZhbHVlOiBmdW5jdGlvbiAodmFsdWUp
IHtcbiAgICAgICAgY3VycmVudFZhbHVlID0gJycgKyB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICBz
dG9wVHJhY2tpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZGV0YWNoVHJhY2tlcihpbnN0KTtc
biAgICAgICAgZGVsZXRlIG5vZGVbdmFsdWVGaWVsZF07XG4gICAgICB9XG4gICAgfSk7XG4gIH0s
XG5cbiAgdXBkYXRlVmFsdWVJZkNoYW5nZWQ6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgaWYgKCFp
bnN0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciB0cmFja2VyID0gZ2V0
VHJhY2tlcihpbnN0KTtcblxuICAgIGlmICghdHJhY2tlcikge1xuICAgICAgaW5wdXRWYWx1ZVRy
YWNraW5nLnRyYWNrKGluc3QpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdmFy
IGxhc3RWYWx1ZSA9IHRyYWNrZXIuZ2V0VmFsdWUoKTtcbiAgICB2YXIgbmV4dFZhbHVlID0gZ2V0
VmFsdWVGcm9tTm9kZShSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShp
bnN0KSk7XG5cbiAgICBpZiAobmV4dFZhbHVlICE9PSBsYXN0VmFsdWUpIHtcbiAgICAgIHRyYWNr
ZXIuc2V0VmFsdWUobmV4dFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAg
IHJldHVybiBmYWxzZTtcbiAgfSxcbiAgc3RvcFRyYWNraW5nOiBmdW5jdGlvbiAoaW5zdCkge1xu
ICAgIHZhciB0cmFja2VyID0gZ2V0VHJhY2tlcihpbnN0KTtcbiAgICBpZiAodHJhY2tlcikge1xu
ICAgICAgdHJhY2tlci5zdG9wVHJhY2tpbmcoKTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5l
eHBvcnRzID0gaW5wdXRWYWx1ZVRyYWNraW5nO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvaW5wdXRWYWx1ZVRyYWNraW5n
LmpzXG4gKiogbW9kdWxlIGlkID0gNzRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJv
ZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50JyksXG4gICAgX2Fzc2ln
biA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9u
ZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpO1xudmFyIFJlYWN0RW1w
dHlDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RW1wdHlDb21wb25lbnQnKTtcbnZhciBSZWFj
dEhvc3RDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0SG9zdENvbXBvbmVudCcpO1xuXG52YXIg
Z2V0TmV4dERlYnVnSUQgPSByZXF1aXJlKCdyZWFjdC9saWIvZ2V0TmV4dERlYnVnSUQnKTtcbnZh
ciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5n
ID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vLyBUbyBhdm9pZCBhIGN5Y2xpYyBk
ZXBlbmRlbmN5LCB3ZSBjcmVhdGUgdGhlIGZpbmFsIGNsYXNzIGluIHRoaXMgbW9kdWxlXG52YXIg
UmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAg
dGhpcy5jb25zdHJ1Y3QoZWxlbWVudCk7XG59O1xuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVy
cm9yQWRkZW5kdW0ob3duZXIpIHtcbiAgaWYgKG93bmVyKSB7XG4gICAgdmFyIG5hbWUgPSBvd25l
ci5nZXROYW1lKCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiAnIENoZWNrIHRoZSBy
ZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgfVxuICB9XG4gIHJldHVybiAn
Jztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgdHlwZSByZWZlcmVuY2UgaXMgYSBrbm93biBp
bnRlcm5hbCB0eXBlLiBJLmUuIG5vdCBhIHVzZXJcbiAqIHByb3ZpZGVkIGNvbXBvc2l0ZSB0eXBl
LlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHR5cGVcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFJl
dHVybnMgdHJ1ZSBpZiB0aGlzIGlzIGEgdmFsaWQgaW50ZXJuYWwgdHlwZS5cbiAqL1xuZnVuY3Rp
b24gaXNJbnRlcm5hbENvbXBvbmVudFR5cGUodHlwZSkge1xuICByZXR1cm4gdHlwZW9mIHR5cGUg
PT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlICE9PSAndW5kZWZpbmVkJyAm
JiB0eXBlb2YgdHlwZS5wcm90b3R5cGUubW91bnRDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYg
dHlwZW9mIHR5cGUucHJvdG90eXBlLnJlY2VpdmVDb21wb25lbnQgPT09ICdmdW5jdGlvbic7XG59
XG5cbi8qKlxuICogR2l2ZW4gYSBSZWFjdE5vZGUsIGNyZWF0ZSBhbiBpbnN0YW5jZSB0aGF0IHdp
bGwgYWN0dWFsbHkgYmUgbW91bnRlZC5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0Tm9kZX0gbm9kZVxu
ICogQHBhcmFtIHtib29sZWFufSBzaG91bGRIYXZlRGVidWdJRFxuICogQHJldHVybiB7b2JqZWN0
fSBBIG5ldyBpbnN0YW5jZSBvZiB0aGUgZWxlbWVudCdzIGNvbnN0cnVjdG9yLlxuICogQHByb3Rl
Y3RlZFxuICovXG5mdW5jdGlvbiBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG5vZGUsIHNob3Vs
ZEhhdmVEZWJ1Z0lEKSB7XG4gIHZhciBpbnN0YW5jZTtcblxuICBpZiAobm9kZSA9PT0gbnVsbCB8
fCBub2RlID09PSBmYWxzZSkge1xuICAgIGluc3RhbmNlID0gUmVhY3RFbXB0eUNvbXBvbmVudC5j
cmVhdGUoaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG5v
ZGUgPT09ICdvYmplY3QnKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBub2RlO1xuICAgIHZhciB0eXBl
ID0gZWxlbWVudC50eXBlO1xuICAgIGlmICh0eXBlb2YgdHlwZSAhPT0gJ2Z1bmN0aW9uJyAmJiB0
eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBpbmZvID0gJyc7XG4gICAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAo
dHlwZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9
PSBudWxsICYmIE9iamVjdC5rZXlzKHR5cGUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGlu
Zm8gKz0gJyBZb3UgbGlrZWx5IGZvcmdvdCB0byBleHBvcnQgeW91ciBjb21wb25lbnQgZnJvbSB0
aGUgZmlsZSAnICsgXCJpdCdzIGRlZmluZWQgaW4uXCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAg
ICAgIGluZm8gKz0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGVsZW1lbnQuX293bmVyKTtc
biAgICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdFbGVtZW50IHR5cGUgaXMgaW52YWxpZDogZXhwZWN0ZWQgYSBzdHJp
bmcgKGZvciBidWlsdC1pbiBjb21wb25lbnRzKSBvciBhIGNsYXNzL2Z1bmN0aW9uIChmb3IgY29t
cG9zaXRlIGNvbXBvbmVudHMpIGJ1dCBnb3Q6ICVzLiVzJywgdHlwZSA9PSBudWxsID8gdHlwZSA6
IHR5cGVvZiB0eXBlLCBpbmZvKSA6IF9wcm9kSW52YXJpYW50KCcxMzAnLCB0eXBlID09IG51bGwg
PyB0eXBlIDogdHlwZW9mIHR5cGUsIGluZm8pIDogdm9pZCAwO1xuICAgIH1cblxuICAgIC8vIFNw
ZWNpYWwgY2FzZSBzdHJpbmcgdmFsdWVzXG4gICAgaWYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09
ICdzdHJpbmcnKSB7XG4gICAgICBpbnN0YW5jZSA9IFJlYWN0SG9zdENvbXBvbmVudC5jcmVhdGVJ
bnRlcm5hbENvbXBvbmVudChlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKGlzSW50ZXJuYWxDb21w
b25lbnRUeXBlKGVsZW1lbnQudHlwZSkpIHtcbiAgICAgIC8vIFRoaXMgaXMgdGVtcG9yYXJpbHkg
YXZhaWxhYmxlIGZvciBjdXN0b20gY29tcG9uZW50cyB0aGF0IGFyZSBub3Qgc3RyaW5nXG4gICAg
ICAvLyByZXByZXNlbnRhdGlvbnMuIEkuZS4gQVJULiBPbmNlIHRob3NlIGFyZSB1cGRhdGVkIHRv
IHVzZSB0aGUgc3RyaW5nXG4gICAgICAvLyByZXByZXNlbnRhdGlvbiwgd2UgY2FuIGRyb3AgdGhp
cyBjb2RlIHBhdGguXG4gICAgICBpbnN0YW5jZSA9IG5ldyBlbGVtZW50LnR5cGUoZWxlbWVudCk7
XG5cbiAgICAgIC8vIFdlIHJlbmFtZWQgdGhpcy4gQWxsb3cgdGhlIG9sZCBuYW1lIGZvciBjb21w
YXQuIDooXG4gICAgICBpZiAoIWluc3RhbmNlLmdldEhvc3ROb2RlKSB7XG4gICAgICAgIGluc3Rh
bmNlLmdldEhvc3ROb2RlID0gaW5zdGFuY2UuZ2V0TmF0aXZlTm9kZTtcbiAgICAgIH1cbiAgICB9
IGVsc2Uge1xuICAgICAgaW5zdGFuY2UgPSBuZXcgUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFw
cGVyKGVsZW1lbnQpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ3N0cmlu
ZycgfHwgdHlwZW9mIG5vZGUgPT09ICdudW1iZXInKSB7XG4gICAgaW5zdGFuY2UgPSBSZWFjdEhv
c3RDb21wb25lbnQuY3JlYXRlSW5zdGFuY2VGb3JUZXh0KG5vZGUpO1xuICB9IGVsc2Uge1xuICAg
ICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICdFbmNvdW50ZXJlZCBpbnZhbGlkIFJlYWN0IG5vZGUgb2YgdHlwZSAlcycsIHR5
cGVvZiBub2RlKSA6IF9wcm9kSW52YXJpYW50KCcxMzEnLCB0eXBlb2Ygbm9kZSkgOiB2b2lkIDA7
XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVv
ZiBpbnN0YW5jZS5tb3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFu
Y2UucmVjZWl2ZUNvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UuZ2V0
SG9zdE5vZGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLnVubW91bnRDb21wb25l
bnQgPT09ICdmdW5jdGlvbicsICdPbmx5IFJlYWN0IENvbXBvbmVudHMgY2FuIGJlIG1vdW50ZWQu
JykgOiB2b2lkIDA7XG4gIH1cblxuICAvLyBUaGVzZSB0d28gZmllbGRzIGFyZSB1c2VkIGJ5IHRo
ZSBET00gYW5kIEFSVCBkaWZmaW5nIGFsZ29yaXRobXNcbiAgLy8gcmVzcGVjdGl2ZWx5LiBJbnN0
ZWFkIG9mIHVzaW5nIGV4cGFuZG9zIG9uIGNvbXBvbmVudHMsIHdlIHNob3VsZCBiZVxuICAvLyBz
dG9yaW5nIHRoZSBzdGF0ZSBuZWVkZWQgYnkgdGhlIGRpZmZpbmcgYWxnb3JpdGhtcyBlbHNld2hl
cmUuXG4gIGluc3RhbmNlLl9tb3VudEluZGV4ID0gMDtcbiAgaW5zdGFuY2UuX21vdW50SW1hZ2Ug
PSBudWxsO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgaW5zdGFuY2UuX2RlYnVnSUQgPSBzaG91bGRIYXZlRGVidWdJRCA/IGdldE5leHREZWJ1
Z0lEKCkgOiAwO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgaW5zdGFuY2VzIHNob3VsZCBmdWxseSBj
b25zdHJ1Y3RlZCBhdCB0aGlzIHBvaW50LCBzbyB0aGV5IHNob3VsZFxuICAvLyBub3QgZ2V0IGFu
eSBuZXcgZmllbGRzIGFkZGVkIHRvIHRoZW0gYXQgdGhpcyBwb2ludC5cbiAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoT2JqZWN0LnByZXZlbnRF
eHRlbnNpb25zKSB7XG4gICAgICBPYmplY3QucHJldmVudEV4dGVuc2lvbnMoaW5zdGFuY2UpO1xu
ICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxuX2Fzc2lnbihSZWFjdENvbXBv
c2l0ZUNvbXBvbmVudFdyYXBwZXIucHJvdG90eXBlLCBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCwg
e1xuICBfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDogaW5zdGFudGlhdGVSZWFjdENvbXBvbmVu
dFxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDtcblxu
XG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1k
b20vbGliL2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQuanNcbiAqKiBtb2R1bGUgaWQgPSA3NVxu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEBzZWUgaHR0cDovL3d3dy53aGF0
d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWlucHV0LWVs
ZW1lbnQuaHRtbCNpbnB1dC10eXBlLWF0dHItc3VtbWFyeVxuICovXG5cbnZhciBzdXBwb3J0ZWRJ
bnB1dFR5cGVzID0ge1xuICBjb2xvcjogdHJ1ZSxcbiAgZGF0ZTogdHJ1ZSxcbiAgZGF0ZXRpbWU6
IHRydWUsXG4gICdkYXRldGltZS1sb2NhbCc6IHRydWUsXG4gIGVtYWlsOiB0cnVlLFxuICBtb250
aDogdHJ1ZSxcbiAgbnVtYmVyOiB0cnVlLFxuICBwYXNzd29yZDogdHJ1ZSxcbiAgcmFuZ2U6IHRy
dWUsXG4gIHNlYXJjaDogdHJ1ZSxcbiAgdGVsOiB0cnVlLFxuICB0ZXh0OiB0cnVlLFxuICB0aW1l
OiB0cnVlLFxuICB1cmw6IHRydWUsXG4gIHdlZWs6IHRydWVcbn07XG5cbmZ1bmN0aW9uIGlzVGV4
dElucHV0RWxlbWVudChlbGVtKSB7XG4gIHZhciBub2RlTmFtZSA9IGVsZW0gJiYgZWxlbS5ub2Rl
TmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYgKG5vZGVOYW1lID09
PSAnaW5wdXQnKSB7XG4gICAgcmV0dXJuICEhc3VwcG9ydGVkSW5wdXRUeXBlc1tlbGVtLnR5cGVd
O1xuICB9XG5cbiAgaWYgKG5vZGVOYW1lID09PSAndGV4dGFyZWEnKSB7XG4gICAgcmV0dXJuIHRy
dWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNUZXh0
SW5wdXRFbGVtZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVS
XG4gKiogLi9+L3JlYWN0LWRvbS9saWIvaXNUZXh0SW5wdXRFbGVtZW50LmpzXG4gKiogbW9kdWxl
IGlkID0gNzZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVu
dCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52YXIgZXNjYXBl
VGV4dENvbnRlbnRGb3JCcm93c2VyID0gcmVxdWlyZSgnLi9lc2NhcGVUZXh0Q29udGVudEZvckJy
b3dzZXInKTtcbnZhciBzZXRJbm5lckhUTUwgPSByZXF1aXJlKCcuL3NldElubmVySFRNTCcpO1xu
XG4vKipcbiAqIFNldCB0aGUgdGV4dENvbnRlbnQgcHJvcGVydHkgb2YgYSBub2RlLCBlbnN1cmlu
ZyB0aGF0IHdoaXRlc3BhY2UgaXMgcHJlc2VydmVkXG4gKiBldmVuIGluIElFOC4gaW5uZXJUZXh0
IGlzIGEgcG9vciBzdWJzdGl0dXRlIGZvciB0ZXh0Q29udGVudCBhbmQsIGFtb25nIG1hbnlcbiAq
IGlzc3VlcywgaW5zZXJ0cyA8YnI+IGluc3RlYWQgb2YgdGhlIGxpdGVyYWwgbmV3bGluZSBjaGFy
cy4gaW5uZXJIVE1MIGJlaGF2ZXNcbiAqIGFzIGl0IHNob3VsZC5cbiAqXG4gKiBAcGFyYW0ge0RP
TUVsZW1lbnR9IG5vZGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0XG4gKiBAaW50ZXJuYWxcbiAq
L1xudmFyIHNldFRleHRDb250ZW50ID0gZnVuY3Rpb24gKG5vZGUsIHRleHQpIHtcbiAgaWYgKHRl
eHQpIHtcbiAgICB2YXIgZmlyc3RDaGlsZCA9IG5vZGUuZmlyc3RDaGlsZDtcblxuICAgIGlmIChm
aXJzdENoaWxkICYmIGZpcnN0Q2hpbGQgPT09IG5vZGUubGFzdENoaWxkICYmIGZpcnN0Q2hpbGQu
bm9kZVR5cGUgPT09IDMpIHtcbiAgICAgIGZpcnN0Q2hpbGQubm9kZVZhbHVlID0gdGV4dDtcbiAg
ICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgbm9kZS50ZXh0Q29udGVudCA9IHRleHQ7XG59O1xu
XG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIGlmICghKCd0ZXh0Q29u
dGVudCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSkge1xuICAgIHNldFRleHRDb250ZW50
ID0gZnVuY3Rpb24gKG5vZGUsIHRleHQpIHtcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAz
KSB7XG4gICAgICAgIG5vZGUubm9kZVZhbHVlID0gdGV4dDtcbiAgICAgICAgcmV0dXJuO1xuICAg
ICAgfVxuICAgICAgc2V0SW5uZXJIVE1MKG5vZGUsIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nl
cih0ZXh0KSk7XG4gICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRleHRDb250
ZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0LWRvbS9saWIvc2V0VGV4dENvbnRlbnQuanNcbiAqKiBtb2R1bGUgaWQgPSA3N1xuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFj
dFByb2RJbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgncmVh
Y3QvbGliL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gcmVx
dWlyZSgnLi9SZWFjdEVsZW1lbnRTeW1ib2wnKTtcblxudmFyIGdldEl0ZXJhdG9yRm4gPSByZXF1
aXJlKCcuL2dldEl0ZXJhdG9yRm4nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xp
Yi9pbnZhcmlhbnQnKTtcbnZhciBLZXlFc2NhcGVVdGlscyA9IHJlcXVpcmUoJy4vS2V5RXNjYXBl
VXRpbHMnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52
YXIgU0VQQVJBVE9SID0gJy4nO1xudmFyIFNVQlNFUEFSQVRPUiA9ICc6JztcblxuLyoqXG4gKiBU
aGlzIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQgc2luY2UgdGhpcyBmaWxlIGlzIHNoYXJl
ZCBiZXR3ZWVuXG4gKiBpc29tb3JwaGljIGFuZCByZW5kZXJlcnMuIFdlIGNvdWxkIGV4dHJhY3Qg
dGhpcyB0byBhXG4gKlxuICovXG5cbi8qKlxuICogVE9ETzogVGVzdCB0aGF0IGEgc2luZ2xlIGNo
aWxkIGFuZCBhbiBhcnJheSB3aXRoIG9uZSBpdGVtIGhhdmUgdGhlIHNhbWUga2V5XG4gKiBwYXR0
ZXJuLlxuICovXG5cbnZhciBkaWRXYXJuQWJvdXRNYXBzID0gZmFsc2U7XG5cbi8qKlxuICogR2Vu
ZXJhdGUgYSBrZXkgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyBhIGNvbXBvbmVudCB3aXRoaW4gYSBz
ZXQuXG4gKlxuICogQHBhcmFtIHsqfSBjb21wb25lbnQgQSBjb21wb25lbnQgdGhhdCBjb3VsZCBj
b250YWluIGEgbWFudWFsIGtleS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCB0aGF0
IGlzIHVzZWQgaWYgYSBtYW51YWwga2V5IGlzIG5vdCBwcm92aWRlZC5cbiAqIEByZXR1cm4ge3N0
cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2V0Q29tcG9uZW50S2V5KGNvbXBvbmVudCwgaW5kZXgpIHtc
biAgLy8gRG8gc29tZSB0eXBlY2hlY2tpbmcgaGVyZSBzaW5jZSB3ZSBjYWxsIHRoaXMgYmxpbmRs
eS4gV2Ugd2FudCB0byBlbnN1cmVcbiAgLy8gdGhhdCB3ZSBkb24ndCBibG9jayBwb3RlbnRpYWwg
ZnV0dXJlIEVTIEFQSXMuXG4gIGlmIChjb21wb25lbnQgJiYgdHlwZW9mIGNvbXBvbmVudCA9PT0g
J29iamVjdCcgJiYgY29tcG9uZW50LmtleSAhPSBudWxsKSB7XG4gICAgLy8gRXhwbGljaXQga2V5
XG4gICAgcmV0dXJuIEtleUVzY2FwZVV0aWxzLmVzY2FwZShjb21wb25lbnQua2V5KTtcbiAgfVxu
ICAvLyBJbXBsaWNpdCBrZXkgZGV0ZXJtaW5lZCBieSB0aGUgaW5kZXggaW4gdGhlIHNldFxuICBy
ZXR1cm4gaW5kZXgudG9TdHJpbmcoMzYpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Pyp9IGNoaWxk
cmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHBhcmFtIHshc3RyaW5nfSBuYW1lU29G
YXIgTmFtZSBvZiB0aGUga2V5IHBhdGggc28gZmFyLlxuICogQHBhcmFtIHshZnVuY3Rpb259IGNh
bGxiYWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIGVhY2ggY2hpbGQgZm91bmQuXG4gKiBAcGFy
YW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgVXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIHRocm91Z2hv
dXQgdGhlIHRyYXZlcnNhbFxuICogcHJvY2Vzcy5cbiAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBu
dW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuICovXG5mdW5jdGlvbiB0cmF2ZXJz
ZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwgbmFtZVNvRmFyLCBjYWxsYmFjaywgdHJhdmVyc2VD
b250ZXh0KSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuO1xuXG4gIGlmICh0eXBlID09
PSAndW5kZWZpbmVkJyB8fCB0eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAvLyBBbGwgb2YgdGhl
IGFib3ZlIGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC5cbiAgICBjaGlsZHJlbiA9IG51bGw7XG4gIH1c
blxuICBpZiAoY2hpbGRyZW4gPT09IG51bGwgfHwgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZSA9
PT0gJ251bWJlcicgfHxcbiAgLy8gVGhlIGZvbGxvd2luZyBpcyBpbmxpbmVkIGZyb20gUmVhY3RF
bGVtZW50LiBUaGlzIG1lYW5zIHdlIGNhbiBvcHRpbWl6ZVxuICAvLyBzb21lIGNoZWNrcy4gUmVh
Y3QgRmliZXIgYWxzbyBpbmxpbmVzIHRoaXMgbG9naWMgZm9yIHNpbWlsYXIgcHVycG9zZXMuXG4g
IHR5cGUgPT09ICdvYmplY3QnICYmIGNoaWxkcmVuLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5U
X1RZUEUpIHtcbiAgICBjYWxsYmFjayh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkcmVuLFxuICAgIC8v
IElmIGl0J3MgdGhlIG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1lIGFzIGlmIGl0IHdhcyB3cmFw
cGVkIGluIGFuIGFycmF5XG4gICAgLy8gc28gdGhhdCBpdCdzIGNvbnNpc3RlbnQgaWYgdGhlIG51
bWJlciBvZiBjaGlsZHJlbiBncm93cy5cbiAgICBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJBVE9S
ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkcmVuLCAwKSA6IG5hbWVTb0Zhcik7XG4gICAgcmV0dXJu
IDE7XG4gIH1cblxuICB2YXIgY2hpbGQ7XG4gIHZhciBuZXh0TmFtZTtcbiAgdmFyIHN1YnRyZWVD
b3VudCA9IDA7IC8vIENvdW50IG9mIGNoaWxkcmVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHN1YnRy
ZWUuXG4gIHZhciBuZXh0TmFtZVByZWZpeCA9IG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1Ig
OiBuYW1lU29GYXIgKyBTVUJTRVBBUkFUT1I7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRy
ZW4pKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xu
ICAgICAgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVm
aXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGkpO1xuICAgICAgc3VidHJlZUNvdW50ICs9IHRy
YXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNl
Q29udGV4dCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRl
cmF0b3JGbihjaGlsZHJlbik7XG4gICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICAgIHZhciBpdGVy
YXRvciA9IGl0ZXJhdG9yRm4uY2FsbChjaGlsZHJlbik7XG4gICAgICB2YXIgc3RlcDtcbiAgICAg
IGlmIChpdGVyYXRvckZuICE9PSBjaGlsZHJlbi5lbnRyaWVzKSB7XG4gICAgICAgIHZhciBpaSA9
IDA7XG4gICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAg
ICAgICAgICBjaGlsZCA9IHN0ZXAudmFsdWU7XG4gICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFt
ZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaWkrKyk7XG4gICAgICAgICAgc3VidHJl
ZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJh
Y2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAg
dmFyIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnJztcbiAgICAgICAgICBpZiAoUmVhY3RDdXJy
ZW50T3duZXIuY3VycmVudCkge1xuICAgICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuT3duZXJO
YW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XG4gICAgICAgICAgICBp
ZiAobWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUpIHtcbiAgICAgICAgICAgICAgbWFwc0FzQ2hpbGRy
ZW5BZGRlbmR1bSA9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBtYXBzQXNDaGls
ZHJlbk93bmVyTmFtZSArICdgLic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAg
ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGRpZFdh
cm5BYm91dE1hcHMsICdVc2luZyBNYXBzIGFzIGNoaWxkcmVuIGlzIG5vdCB5ZXQgZnVsbHkgc3Vw
cG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWlnaHQgYmUg
cmVtb3ZlZC4gQ29udmVydCBpdCB0byBhICcgKyAnc2VxdWVuY2UgLyBpdGVyYWJsZSBvZiBrZXll
ZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJXMnLCBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtKSA6IHZv
aWQgMDtcbiAgICAgICAgICBkaWRXYXJuQWJvdXRNYXBzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAg
ICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhlciB0
aGFuIHZhbHVlcy5cbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9u
ZSkge1xuICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7XG4gICAgICAgICAgaWYgKGVu
dHJ5KSB7XG4gICAgICAgICAgICBjaGlsZCA9IGVudHJ5WzFdO1xuICAgICAgICAgICAgbmV4dE5h
bWUgPSBuZXh0TmFtZVByZWZpeCArIEtleUVzY2FwZVV0aWxzLmVzY2FwZShlbnRyeVswXSkgKyBT
VUJTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDApO1xuICAgICAgICAgICAgc3Vi
dHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2Fs
bGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9
XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgdmFyIGFkZGVuZHVt
ID0gJyc7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICAgICAgICBhZGRlbmR1bSA9ICcgSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rp
b24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSAnICsgJ2luc3RlYWQgb3Igd3JhcCB0aGUgb2Jq
ZWN0IHVzaW5nIGNyZWF0ZUZyYWdtZW50KG9iamVjdCkgZnJvbSB0aGUgJyArICdSZWFjdCBhZGQt
b25zLic7XG4gICAgICAgIGlmIChjaGlsZHJlbi5faXNSZWFjdEVsZW1lbnQpIHtcbiAgICAgICAg
ICBhZGRlbmR1bSA9IFwiIEl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIGFuIGVsZW1lbnQgY3Jl
YXRlZCBieSBhIGRpZmZlcmVudCBcIiArICd2ZXJzaW9uIG9mIFJlYWN0LiBNYWtlIHN1cmUgdG8g
dXNlIG9ubHkgb25lIGNvcHkgb2YgUmVhY3QuJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoUmVh
Y3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgICAgICAgIHZhciBuYW1lID0gUmVhY3RDdXJy
ZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XG4gICAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAg
ICAgICAgIGFkZGVuZHVtICs9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1l
ICsgJ2AuJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBjaGls
ZHJlblN0cmluZyA9IFN0cmluZyhjaGlsZHJlbik7XG4gICAgICAhZmFsc2UgPyBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnT2JqZWN0cyBh
cmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAlcykuJXMnLCBjaGlsZHJlblN0
cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVj
dC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcsIGFkZGVu
ZHVtKSA6IF9wcm9kSW52YXJpYW50KCczMScsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBP
YmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpv
aW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogdm9pZCAwO1xuICAg
IH1cbiAgfVxuXG4gIHJldHVybiBzdWJ0cmVlQ291bnQ7XG59XG5cbi8qKlxuICogVHJhdmVyc2Vz
IGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVu
YCwgYnV0XG4gKiBtaWdodCBhbHNvIGJlIHNwZWNpZmllZCB0aHJvdWdoIGF0dHJpYnV0ZXM6XG4g
KlxuICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmNoaWxkcmVuLCAuLi4pYFxu
ICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmxlZnRQYW5lbENoaWxkcmVuLCAu
Li4pYFxuICpcbiAqIFRoZSBgdHJhdmVyc2VDb250ZXh0YCBpcyBhbiBvcHRpb25hbCBhcmd1bWVu
dCB0aGF0IGlzIHBhc3NlZCB0aHJvdWdoIHRoZVxuICogZW50aXJlIHRyYXZlcnNhbC4gSXQgY2Fu
IGJlIHVzZWQgdG8gc3RvcmUgYWNjdW11bGF0aW9ucyBvciBhbnl0aGluZyBlbHNlIHRoYXRcbiAq
IHRoZSBjYWxsYmFjayBtaWdodCBmaW5kIHJlbGV2YW50LlxuICpcbiAqIEBwYXJhbSB7Pyp9IGNo
aWxkcmVuIENoaWxkcmVuIHRyZWUgb2JqZWN0LlxuICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxi
YWNrIFRvIGludm9rZSB1cG9uIHRyYXZlcnNpbmcgZWFjaCBjaGlsZC5cbiAqIEBwYXJhbSB7Pyp9
IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IGZvciB0cmF2ZXJzYWwuXG4gKiBAcmV0dXJuIHshbnVt
YmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoaXMgc3VidHJlZS5cbiAqL1xuZnVuY3Rp
b24gdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4
dCkge1xuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAg
cmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCAnJywgY2FsbGJhY2ssIHRy
YXZlcnNlQ29udGV4dCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdHJhdmVyc2VBbGxDaGlsZHJl
bjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1kb20vbGliL3RyYXZlcnNlQWxsQ2hpbGRyZW4uanNcbiAqKiBtb2R1bGUgaWQgPSA3OFxu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9f
ZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0
aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysp
IHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBp
ZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0
YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG5leHBv
cnRzLmRlZmF1bHQgPSBjb25uZWN0QWR2YW5jZWQ7XG5cbnZhciBfaG9pc3ROb25SZWFjdFN0YXRp
Y3MgPSByZXF1aXJlKCdob2lzdC1ub24tcmVhY3Qtc3RhdGljcycpO1xuXG52YXIgX2hvaXN0Tm9u
UmVhY3RTdGF0aWNzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hvaXN0Tm9uUmVhY3RTdGF0
aWNzKTtcblxudmFyIF9pbnZhcmlhbnQgPSByZXF1aXJlKCdpbnZhcmlhbnQnKTtcblxudmFyIF9p
bnZhcmlhbnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW52YXJpYW50KTtcblxudmFyIF9y
ZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfU3Vic2NyaXB0aW9uID0gcmVxdWlyZSgn
Li4vdXRpbHMvU3Vic2NyaXB0aW9uJyk7XG5cbnZhciBfU3Vic2NyaXB0aW9uMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX1N1YnNjcmlwdGlvbik7XG5cbnZhciBfUHJvcFR5cGVzID0gcmVxdWly
ZSgnLi4vdXRpbHMvUHJvcFR5cGVzJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6
IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0
b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3
IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5c
bmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFz
ZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlh
bGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gY2FsbCAmJiAo
dHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25c
IikgPyBjYWxsIDogc2VsZjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVy
Q2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJD
bGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBt
dXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNs
YXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYg
c3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBl
bnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0p
OyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3Rv
dHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVy
Q2xhc3M7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKG9iaiwga2V5cykg
eyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGkgaW4gb2JqKSB7IGlmIChrZXlzLmluZGV4T2Yo
aSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j
YWxsKG9iaiwgaSkpIGNvbnRpbnVlOyB0YXJnZXRbaV0gPSBvYmpbaV07IH0gcmV0dXJuIHRhcmdl
dDsgfVxuXG52YXIgaG90UmVsb2FkaW5nVmVyc2lvbiA9IDA7XG52YXIgZHVtbXlTdGF0ZSA9IHt9
O1xuZnVuY3Rpb24gbm9vcCgpIHt9XG5mdW5jdGlvbiBtYWtlU2VsZWN0b3JTdGF0ZWZ1bChzb3Vy
Y2VTZWxlY3Rvciwgc3RvcmUpIHtcbiAgLy8gd3JhcCB0aGUgc2VsZWN0b3IgaW4gYW4gb2JqZWN0
IHRoYXQgdHJhY2tzIGl0cyByZXN1bHRzIGJldHdlZW4gcnVucy5cbiAgdmFyIHNlbGVjdG9yID0g
e1xuICAgIHJ1bjogZnVuY3Rpb24gcnVuQ29tcG9uZW50U2VsZWN0b3IocHJvcHMpIHtcbiAgICAg
IHRyeSB7XG4gICAgICAgIHZhciBuZXh0UHJvcHMgPSBzb3VyY2VTZWxlY3RvcihzdG9yZS5nZXRT
dGF0ZSgpLCBwcm9wcyk7XG4gICAgICAgIGlmIChuZXh0UHJvcHMgIT09IHNlbGVjdG9yLnByb3Bz
IHx8IHNlbGVjdG9yLmVycm9yKSB7XG4gICAgICAgICAgc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50
VXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgICBzZWxlY3Rvci5wcm9wcyA9IG5leHRQcm9wcztcbiAg
ICAgICAgICBzZWxlY3Rvci5lcnJvciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2gg
KGVycm9yKSB7XG4gICAgICAgIHNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IHRydWU7
XG4gICAgICAgIHNlbGVjdG9yLmVycm9yID0gZXJyb3I7XG4gICAgICB9XG4gICAgfVxuICB9O1xu
XG4gIHJldHVybiBzZWxlY3Rvcjtcbn1cblxuZnVuY3Rpb24gY29ubmVjdEFkdmFuY2VkKFxuLypc
biAgc2VsZWN0b3JGYWN0b3J5IGlzIGEgZnVuYyB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciByZXR1
cm5pbmcgdGhlIHNlbGVjdG9yIGZ1bmN0aW9uIHVzZWQgdG9cbiAgY29tcHV0ZSBuZXcgcHJvcHMg
ZnJvbSBzdGF0ZSwgcHJvcHMsIGFuZCBkaXNwYXRjaC4gRm9yIGV4YW1wbGU6XG4gICAgIGV4cG9y
dCBkZWZhdWx0IGNvbm5lY3RBZHZhbmNlZCgoZGlzcGF0Y2gsIG9wdGlvbnMpID0+IChzdGF0ZSwg
cHJvcHMpID0+ICh7XG4gICAgICB0aGluZzogc3RhdGUudGhpbmdzW3Byb3BzLnRoaW5nSWRdLFxu
ICAgICAgc2F2ZVRoaW5nOiBmaWVsZHMgPT4gZGlzcGF0Y2goYWN0aW9uQ3JlYXRvcnMuc2F2ZVRo
aW5nKHByb3BzLnRoaW5nSWQsIGZpZWxkcykpLFxuICAgIH0pKShZb3VyQ29tcG9uZW50KVxuICAg
QWNjZXNzIHRvIGRpc3BhdGNoIGlzIHByb3ZpZGVkIHRvIHRoZSBmYWN0b3J5IHNvIHNlbGVjdG9y
RmFjdG9yaWVzIGNhbiBiaW5kIGFjdGlvbkNyZWF0b3JzXG4gIG91dHNpZGUgb2YgdGhlaXIgc2Vs
ZWN0b3IgYXMgYW4gb3B0aW1pemF0aW9uLiBPcHRpb25zIHBhc3NlZCB0byBjb25uZWN0QWR2YW5j
ZWQgYXJlIHBhc3NlZCB0b1xuICB0aGUgc2VsZWN0b3JGYWN0b3J5LCBhbG9uZyB3aXRoIGRpc3Bs
YXlOYW1lIGFuZCBXcmFwcGVkQ29tcG9uZW50LCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LlxuICAg
Tm90ZSB0aGF0IHNlbGVjdG9yRmFjdG9yeSBpcyByZXNwb25zaWJsZSBmb3IgYWxsIGNhY2hpbmcv
bWVtb2l6YXRpb24gb2YgaW5ib3VuZCBhbmQgb3V0Ym91bmRcbiAgcHJvcHMuIERvIG5vdCB1c2Ug
Y29ubmVjdEFkdmFuY2VkIGRpcmVjdGx5IHdpdGhvdXQgbWVtb2l6aW5nIHJlc3VsdHMgYmV0d2Vl
biBjYWxscyB0byB5b3VyXG4gIHNlbGVjdG9yLCBvdGhlcndpc2UgdGhlIENvbm5lY3QgY29tcG9u
ZW50IHdpbGwgcmUtcmVuZGVyIG9uIGV2ZXJ5IHN0YXRlIG9yIHByb3BzIGNoYW5nZS5cbiovXG5z
ZWxlY3RvckZhY3RvcnkpIHtcbiAgdmFyIF9jb250ZXh0VHlwZXMsIF9jaGlsZENvbnRleHRUeXBl
cztcblxuICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAh
PT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge30sXG4gICAgICBfcmVmJGdldERpc3BsYXlO
YW1lID0gX3JlZi5nZXREaXNwbGF5TmFtZSxcbiAgICAgIGdldERpc3BsYXlOYW1lID0gX3JlZiRn
ZXREaXNwbGF5TmFtZSA9PT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1
cm4gJ0Nvbm5lY3RBZHZhbmNlZCgnICsgbmFtZSArICcpJztcbiAgfSA6IF9yZWYkZ2V0RGlzcGxh
eU5hbWUsXG4gICAgICBfcmVmJG1ldGhvZE5hbWUgPSBfcmVmLm1ldGhvZE5hbWUsXG4gICAgICBt
ZXRob2ROYW1lID0gX3JlZiRtZXRob2ROYW1lID09PSB1bmRlZmluZWQgPyAnY29ubmVjdEFkdmFu
Y2VkJyA6IF9yZWYkbWV0aG9kTmFtZSxcbiAgICAgIF9yZWYkcmVuZGVyQ291bnRQcm9wID0gX3Jl
Zi5yZW5kZXJDb3VudFByb3AsXG4gICAgICByZW5kZXJDb3VudFByb3AgPSBfcmVmJHJlbmRlckNv
dW50UHJvcCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogX3JlZiRyZW5kZXJDb3VudFByb3As
XG4gICAgICBfcmVmJHNob3VsZEhhbmRsZVN0YXQgPSBfcmVmLnNob3VsZEhhbmRsZVN0YXRlQ2hh
bmdlcyxcbiAgICAgIHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcyA9IF9yZWYkc2hvdWxkSGFuZGxl
U3RhdCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IF9yZWYkc2hvdWxkSGFuZGxlU3RhdCxcbiAgICAg
IF9yZWYkc3RvcmVLZXkgPSBfcmVmLnN0b3JlS2V5LFxuICAgICAgc3RvcmVLZXkgPSBfcmVmJHN0
b3JlS2V5ID09PSB1bmRlZmluZWQgPyAnc3RvcmUnIDogX3JlZiRzdG9yZUtleSxcbiAgICAgIF9y
ZWYkd2l0aFJlZiA9IF9yZWYud2l0aFJlZixcbiAgICAgIHdpdGhSZWYgPSBfcmVmJHdpdGhSZWYg
PT09IHVuZGVmaW5lZCA/IGZhbHNlIDogX3JlZiR3aXRoUmVmLFxuICAgICAgY29ubmVjdE9wdGlv
bnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgWydnZXREaXNwbGF5TmFtZScsICdt
ZXRob2ROYW1lJywgJ3JlbmRlckNvdW50UHJvcCcsICdzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMn
LCAnc3RvcmVLZXknLCAnd2l0aFJlZiddKTtcblxuICB2YXIgc3Vic2NyaXB0aW9uS2V5ID0gc3Rv
cmVLZXkgKyAnU3Vic2NyaXB0aW9uJztcbiAgdmFyIHZlcnNpb24gPSBob3RSZWxvYWRpbmdWZXJz
aW9uKys7XG5cbiAgdmFyIGNvbnRleHRUeXBlcyA9IChfY29udGV4dFR5cGVzID0ge30sIF9jb250
ZXh0VHlwZXNbc3RvcmVLZXldID0gX1Byb3BUeXBlcy5zdG9yZVNoYXBlLCBfY29udGV4dFR5cGVz
W3N1YnNjcmlwdGlvbktleV0gPSBfUHJvcFR5cGVzLnN1YnNjcmlwdGlvblNoYXBlLCBfY29udGV4
dFR5cGVzKTtcbiAgdmFyIGNoaWxkQ29udGV4dFR5cGVzID0gKF9jaGlsZENvbnRleHRUeXBlcyA9
IHt9LCBfY2hpbGRDb250ZXh0VHlwZXNbc3Vic2NyaXB0aW9uS2V5XSA9IF9Qcm9wVHlwZXMuc3Vi
c2NyaXB0aW9uU2hhcGUsIF9jaGlsZENvbnRleHRUeXBlcyk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9u
IHdyYXBXaXRoQ29ubmVjdChXcmFwcGVkQ29tcG9uZW50KSB7XG4gICAgKDAsIF9pbnZhcmlhbnQy
LmRlZmF1bHQpKHR5cGVvZiBXcmFwcGVkQ29tcG9uZW50ID09ICdmdW5jdGlvbicsICdZb3UgbXVz
dCBwYXNzIGEgY29tcG9uZW50IHRvIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSAnICsgKCdjb25u
ZWN0LiBJbnN0ZWFkIHJlY2VpdmVkICcgKyBKU09OLnN0cmluZ2lmeShXcmFwcGVkQ29tcG9uZW50
KSkpO1xuXG4gICAgdmFyIHdyYXBwZWRDb21wb25lbnROYW1lID0gV3JhcHBlZENvbXBvbmVudC5k
aXNwbGF5TmFtZSB8fCBXcmFwcGVkQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCc7XG5cbiAg
ICB2YXIgZGlzcGxheU5hbWUgPSBnZXREaXNwbGF5TmFtZSh3cmFwcGVkQ29tcG9uZW50TmFtZSk7
XG5cbiAgICB2YXIgc2VsZWN0b3JGYWN0b3J5T3B0aW9ucyA9IF9leHRlbmRzKHt9LCBjb25uZWN0
T3B0aW9ucywge1xuICAgICAgZ2V0RGlzcGxheU5hbWU6IGdldERpc3BsYXlOYW1lLFxuICAgICAg
bWV0aG9kTmFtZTogbWV0aG9kTmFtZSxcbiAgICAgIHJlbmRlckNvdW50UHJvcDogcmVuZGVyQ291
bnRQcm9wLFxuICAgICAgc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzOiBzaG91bGRIYW5kbGVTdGF0
ZUNoYW5nZXMsXG4gICAgICBzdG9yZUtleTogc3RvcmVLZXksXG4gICAgICB3aXRoUmVmOiB3aXRo
UmVmLFxuICAgICAgZGlzcGxheU5hbWU6IGRpc3BsYXlOYW1lLFxuICAgICAgd3JhcHBlZENvbXBv
bmVudE5hbWU6IHdyYXBwZWRDb21wb25lbnROYW1lLFxuICAgICAgV3JhcHBlZENvbXBvbmVudDog
V3JhcHBlZENvbXBvbmVudFxuICAgIH0pO1xuXG4gICAgdmFyIENvbm5lY3QgPSBmdW5jdGlvbiAo
X0NvbXBvbmVudCkge1xuICAgICAgX2luaGVyaXRzKENvbm5lY3QsIF9Db21wb25lbnQpO1xuXG4g
ICAgICBmdW5jdGlvbiBDb25uZWN0KHByb3BzLCBjb250ZXh0KSB7XG4gICAgICAgIF9jbGFzc0Nh
bGxDaGVjayh0aGlzLCBDb25uZWN0KTtcblxuICAgICAgICB2YXIgX3RoaXMgPSBfcG9zc2libGVD
b25zdHJ1Y3RvclJldHVybih0aGlzLCBfQ29tcG9uZW50LmNhbGwodGhpcywgcHJvcHMsIGNvbnRl
eHQpKTtcblxuICAgICAgICBfdGhpcy52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgX3RoaXMu
c3RhdGUgPSB7fTtcbiAgICAgICAgX3RoaXMucmVuZGVyQ291bnQgPSAwO1xuICAgICAgICBfdGhp
cy5zdG9yZSA9IHByb3BzW3N0b3JlS2V5XSB8fCBjb250ZXh0W3N0b3JlS2V5XTtcbiAgICAgICAg
X3RoaXMucHJvcHNNb2RlID0gQm9vbGVhbihwcm9wc1tzdG9yZUtleV0pO1xuICAgICAgICBfdGhp
cy5zZXRXcmFwcGVkSW5zdGFuY2UgPSBfdGhpcy5zZXRXcmFwcGVkSW5zdGFuY2UuYmluZChfdGhp
cyk7XG5cbiAgICAgICAgKDAsIF9pbnZhcmlhbnQyLmRlZmF1bHQpKF90aGlzLnN0b3JlLCAnQ291
bGQgbm90IGZpbmQgXCInICsgc3RvcmVLZXkgKyAnXCIgaW4gZWl0aGVyIHRoZSBjb250ZXh0IG9y
IHByb3BzIG9mICcgKyAoJ1wiJyArIGRpc3BsYXlOYW1lICsgJ1wiLiBFaXRoZXIgd3JhcCB0aGUg
cm9vdCBjb21wb25lbnQgaW4gYSA8UHJvdmlkZXI+LCAnKSArICgnb3IgZXhwbGljaXRseSBwYXNz
IFwiJyArIHN0b3JlS2V5ICsgJ1wiIGFzIGEgcHJvcCB0byBcIicgKyBkaXNwbGF5TmFtZSArICdc
Ii4nKSk7XG5cbiAgICAgICAgX3RoaXMuaW5pdFNlbGVjdG9yKCk7XG4gICAgICAgIF90aGlzLmlu
aXRTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgICAgfVxuXG4gICAg
ICBDb25uZWN0LnByb3RvdHlwZS5nZXRDaGlsZENvbnRleHQgPSBmdW5jdGlvbiBnZXRDaGlsZENv
bnRleHQoKSB7XG4gICAgICAgIHZhciBfcmVmMjtcblxuICAgICAgICAvLyBJZiB0aGlzIGNvbXBv
bmVudCByZWNlaXZlZCBzdG9yZSBmcm9tIHByb3BzLCBpdHMgc3Vic2NyaXB0aW9uIHNob3VsZCBi
ZSB0cmFuc3BhcmVudFxuICAgICAgICAvLyB0byBhbnkgZGVzY2VuZGFudHMgcmVjZWl2aW5nIHN0
b3JlK3N1YnNjcmlwdGlvbiBmcm9tIGNvbnRleHQ7IGl0IHBhc3NlcyBhbG9uZ1xuICAgICAgICAv
LyBzdWJzY3JpcHRpb24gcGFzc2VkIHRvIGl0LiBPdGhlcndpc2UsIGl0IHNoYWRvd3MgdGhlIHBh
cmVudCBzdWJzY3JpcHRpb24sIHdoaWNoIGFsbG93c1xuICAgICAgICAvLyBDb25uZWN0IHRvIGNv
bnRyb2wgb3JkZXJpbmcgb2Ygbm90aWZpY2F0aW9ucyB0byBmbG93IHRvcC1kb3duLlxuICAgICAg
ICB2YXIgc3Vic2NyaXB0aW9uID0gdGhpcy5wcm9wc01vZGUgPyBudWxsIDogdGhpcy5zdWJzY3Jp
cHRpb247XG4gICAgICAgIHJldHVybiBfcmVmMiA9IHt9LCBfcmVmMltzdWJzY3JpcHRpb25LZXld
ID0gc3Vic2NyaXB0aW9uIHx8IHRoaXMuY29udGV4dFtzdWJzY3JpcHRpb25LZXldLCBfcmVmMjtc
biAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50ID0g
ZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGlmICghc2hvdWxkSGFuZGxl
U3RhdGVDaGFuZ2VzKSByZXR1cm47XG5cbiAgICAgICAgLy8gY29tcG9uZW50V2lsbE1vdW50IGZp
cmVzIGR1cmluZyBzZXJ2ZXIgc2lkZSByZW5kZXJpbmcsIGJ1dCBjb21wb25lbnREaWRNb3VudCBh
bmRcbiAgICAgICAgLy8gY29tcG9uZW50V2lsbFVubW91bnQgZG8gbm90LiBCZWNhdXNlIG9mIHRo
aXMsIHRyeVN1YnNjcmliZSBoYXBwZW5zIGR1cmluZyAuLi5kaWRNb3VudC5cbiAgICAgICAgLy8g
T3RoZXJ3aXNlLCB1bnN1YnNjcmlwdGlvbiB3b3VsZCBuZXZlciB0YWtlIHBsYWNlIGR1cmluZyBT
U1IsIGNhdXNpbmcgYSBtZW1vcnkgbGVhay5cbiAgICAgICAgLy8gVG8gaGFuZGxlIHRoZSBjYXNl
IHdoZXJlIGEgY2hpbGQgY29tcG9uZW50IG1heSBoYXZlIHRyaWdnZXJlZCBhIHN0YXRlIGNoYW5n
ZSBieVxuICAgICAgICAvLyBkaXNwYXRjaGluZyBhbiBhY3Rpb24gaW4gaXRzIGNvbXBvbmVudFdp
bGxNb3VudCwgd2UgaGF2ZSB0byByZS1ydW4gdGhlIHNlbGVjdCBhbmQgbWF5YmVcbiAgICAgICAg
Ly8gcmUtcmVuZGVyLlxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi50cnlTdWJzY3JpYmUoKTtc
biAgICAgICAgdGhpcy5zZWxlY3Rvci5ydW4odGhpcy5wcm9wcyk7XG4gICAgICAgIGlmICh0aGlz
LnNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZSkgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAg
ICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9w
cyA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gICAg
ICAgIHRoaXMuc2VsZWN0b3IucnVuKG5leHRQcm9wcyk7XG4gICAgICB9O1xuXG4gICAgICBDb25u
ZWN0LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmdW5jdGlvbiBzaG91bGRDb21w
b25lbnRVcGRhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdG9yLnNob3VsZENvbXBv
bmVudFVwZGF0ZTtcbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmNvbXBvbmVu
dFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAg
IGlmICh0aGlzLnN1YnNjcmlwdGlvbikgdGhpcy5zdWJzY3JpcHRpb24udHJ5VW5zdWJzY3JpYmUo
KTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLm5vdGlm
eU5lc3RlZFN1YnMgPSBub29wO1xuICAgICAgICB0aGlzLnN0b3JlID0gbnVsbDtcbiAgICAgICAg
dGhpcy5zZWxlY3Rvci5ydW4gPSBub29wO1xuICAgICAgICB0aGlzLnNlbGVjdG9yLnNob3VsZENv
bXBvbmVudFVwZGF0ZSA9IGZhbHNlO1xuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5
cGUuZ2V0V3JhcHBlZEluc3RhbmNlID0gZnVuY3Rpb24gZ2V0V3JhcHBlZEluc3RhbmNlKCkge1xu
ICAgICAgICAoMCwgX2ludmFyaWFudDIuZGVmYXVsdCkod2l0aFJlZiwgJ1RvIGFjY2VzcyB0aGUg
d3JhcHBlZCBpbnN0YW5jZSwgeW91IG5lZWQgdG8gc3BlY2lmeSAnICsgKCd7IHdpdGhSZWY6IHRy
dWUgfSBpbiB0aGUgb3B0aW9ucyBhcmd1bWVudCBvZiB0aGUgJyArIG1ldGhvZE5hbWUgKyAnKCkg
Y2FsbC4nKSk7XG4gICAgICAgIHJldHVybiB0aGlzLndyYXBwZWRJbnN0YW5jZTtcbiAgICAgIH07
XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLnNldFdyYXBwZWRJbnN0YW5jZSA9IGZ1bmN0aW9u
IHNldFdyYXBwZWRJbnN0YW5jZShyZWYpIHtcbiAgICAgICAgdGhpcy53cmFwcGVkSW5zdGFuY2Ug
PSByZWY7XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5pbml0U2VsZWN0b3Ig
PSBmdW5jdGlvbiBpbml0U2VsZWN0b3IoKSB7XG4gICAgICAgIHZhciBzb3VyY2VTZWxlY3RvciA9
IHNlbGVjdG9yRmFjdG9yeSh0aGlzLnN0b3JlLmRpc3BhdGNoLCBzZWxlY3RvckZhY3RvcnlPcHRp
b25zKTtcbiAgICAgICAgdGhpcy5zZWxlY3RvciA9IG1ha2VTZWxlY3RvclN0YXRlZnVsKHNvdXJj
ZVNlbGVjdG9yLCB0aGlzLnN0b3JlKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rvci5ydW4odGhpcy5w
cm9wcyk7XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5pbml0U3Vic2NyaXB0
aW9uID0gZnVuY3Rpb24gaW5pdFN1YnNjcmlwdGlvbigpIHtcbiAgICAgICAgaWYgKCFzaG91bGRI
YW5kbGVTdGF0ZUNoYW5nZXMpIHJldHVybjtcblxuICAgICAgICAvLyBwYXJlbnRTdWIncyBzb3Vy
Y2Ugc2hvdWxkIG1hdGNoIHdoZXJlIHN0b3JlIGNhbWUgZnJvbTogcHJvcHMgdnMuIGNvbnRleHQu
IEEgY29tcG9uZW50XG4gICAgICAgIC8vIGNvbm5lY3RlZCB0byB0aGUgc3RvcmUgdmlhIHByb3Bz
IHNob3VsZG4ndCB1c2Ugc3Vic2NyaXB0aW9uIGZyb20gY29udGV4dCwgb3IgdmljZSB2ZXJzYS5c
biAgICAgICAgdmFyIHBhcmVudFN1YiA9ICh0aGlzLnByb3BzTW9kZSA/IHRoaXMucHJvcHMgOiB0
aGlzLmNvbnRleHQpW3N1YnNjcmlwdGlvbktleV07XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9u
ID0gbmV3IF9TdWJzY3JpcHRpb24yLmRlZmF1bHQodGhpcy5zdG9yZSwgcGFyZW50U3ViLCB0aGlz
Lm9uU3RhdGVDaGFuZ2UuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgLy8gYG5vdGlmeU5lc3RlZFN1
YnNgIGlzIGR1cGxpY2F0ZWQgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBjb21wb25lbnQg
aXMgIHVubW91bnRlZCBpblxuICAgICAgICAvLyB0aGUgbWlkZGxlIG9mIHRoZSBub3RpZmljYXRp
b24gbG9vcCwgd2hlcmUgYHRoaXMuc3Vic2NyaXB0aW9uYCB3aWxsIHRoZW4gYmUgbnVsbC4gQW5c
biAgICAgICAgLy8gZXh0cmEgbnVsbCBjaGVjayBldmVyeSBjaGFuZ2UgY2FuIGJlIGF2b2lkZWQg
YnkgY29weWluZyB0aGUgbWV0aG9kIG9udG8gYHRoaXNgIGFuZCB0aGVuXG4gICAgICAgIC8vIHJl
cGxhY2luZyBpdCB3aXRoIGEgbm8tb3Agb24gdW5tb3VudC4gVGhpcyBjYW4gcHJvYmFibHkgYmUg
YXZvaWRlZCBpZiBTdWJzY3JpcHRpb24nc1xuICAgICAgICAvLyBsaXN0ZW5lcnMgbG9naWMgaXMg
Y2hhbmdlZCB0byBub3QgY2FsbCBsaXN0ZW5lcnMgdGhhdCBoYXZlIGJlZW4gdW5zdWJzY3JpYmVk
IGluIHRoZVxuICAgICAgICAvLyBtaWRkbGUgb2YgdGhlIG5vdGlmaWNhdGlvbiBsb29wLlxuICAg
ICAgICB0aGlzLm5vdGlmeU5lc3RlZFN1YnMgPSB0aGlzLnN1YnNjcmlwdGlvbi5ub3RpZnlOZXN0
ZWRTdWJzLmJpbmQodGhpcy5zdWJzY3JpcHRpb24pO1xuICAgICAgfTtcblxuICAgICAgQ29ubmVj
dC5wcm90b3R5cGUub25TdGF0ZUNoYW5nZSA9IGZ1bmN0aW9uIG9uU3RhdGVDaGFuZ2UoKSB7XG4g
ICAgICAgIHRoaXMuc2VsZWN0b3IucnVuKHRoaXMucHJvcHMpO1xuXG4gICAgICAgIGlmICghdGhp
cy5zZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUpIHtcbiAgICAgICAgICB0aGlzLm5vdGlm
eU5lc3RlZFN1YnMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNvbXBvbmVu
dERpZFVwZGF0ZSA9IHRoaXMubm90aWZ5TmVzdGVkU3Vic09uQ29tcG9uZW50RGlkVXBkYXRlO1xu
ICAgICAgICAgIHRoaXMuc2V0U3RhdGUoZHVtbXlTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH07
XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLm5vdGlmeU5lc3RlZFN1YnNPbkNvbXBvbmVudERp
ZFVwZGF0ZSA9IGZ1bmN0aW9uIG5vdGlmeU5lc3RlZFN1YnNPbkNvbXBvbmVudERpZFVwZGF0ZSgp
IHtcbiAgICAgICAgLy8gYGNvbXBvbmVudERpZFVwZGF0ZWAgaXMgY29uZGl0aW9uYWxseSBpbXBs
ZW1lbnRlZCB3aGVuIGBvblN0YXRlQ2hhbmdlYCBkZXRlcm1pbmVzIGl0XG4gICAgICAgIC8vIG5l
ZWRzIHRvIG5vdGlmeSBuZXN0ZWQgc3Vicy4gT25jZSBjYWxsZWQsIGl0IHVuaW1wbGVtZW50cyBp
dHNlbGYgdW50aWwgZnVydGhlciBzdGF0ZVxuICAgICAgICAvLyBjaGFuZ2VzIG9jY3VyLiBEb2lu
ZyBpdCB0aGlzIHdheSB2cyBoYXZpbmcgYSBwZXJtYW5lbnQgYGNvbXBvbmVudERpZFVwZGF0ZWAg
dGhhdCBkb2VzXG4gICAgICAgIC8vIGEgYm9vbGVhbiBjaGVjayBldmVyeSB0aW1lIGF2b2lkcyBh
biBleHRyYSBtZXRob2QgY2FsbCBtb3N0IG9mIHRoZSB0aW1lLCByZXN1bHRpbmdcbiAgICAgICAg
Ly8gaW4gc29tZSBwZXJmIGJvb3N0LlxuICAgICAgICB0aGlzLmNvbXBvbmVudERpZFVwZGF0ZSA9
IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5ub3RpZnlOZXN0ZWRTdWJzKCk7XG4gICAgICB9O1xu
XG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5pc1N1YnNjcmliZWQgPSBmdW5jdGlvbiBpc1N1YnNj
cmliZWQoKSB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHRoaXMuc3Vic2NyaXB0aW9uKSAmJiB0
aGlzLnN1YnNjcmlwdGlvbi5pc1N1YnNjcmliZWQoKTtcbiAgICAgIH07XG5cbiAgICAgIENvbm5l
Y3QucHJvdG90eXBlLmFkZEV4dHJhUHJvcHMgPSBmdW5jdGlvbiBhZGRFeHRyYVByb3BzKHByb3Bz
KSB7XG4gICAgICAgIGlmICghd2l0aFJlZiAmJiAhcmVuZGVyQ291bnRQcm9wICYmICEodGhpcy5w
cm9wc01vZGUgJiYgdGhpcy5zdWJzY3JpcHRpb24pKSByZXR1cm4gcHJvcHM7XG4gICAgICAgIC8v
IG1ha2UgYSBzaGFsbG93IGNvcHkgc28gdGhhdCBmaWVsZHMgYWRkZWQgZG9uJ3QgbGVhayB0byB0
aGUgb3JpZ2luYWwgc2VsZWN0b3IuXG4gICAgICAgIC8vIHRoaXMgaXMgZXNwZWNpYWxseSBpbXBv
cnRhbnQgZm9yICdyZWYnIHNpbmNlIHRoYXQncyBhIHJlZmVyZW5jZSBiYWNrIHRvIHRoZSBjb21w
b25lbnRcbiAgICAgICAgLy8gaW5zdGFuY2UuIGEgc2luZ2xldG9uIG1lbW9pemVkIHNlbGVjdG9y
IHdvdWxkIHRoZW4gYmUgaG9sZGluZyBhIHJlZmVyZW5jZSB0byB0aGVcbiAgICAgICAgLy8gaW5z
dGFuY2UsIHByZXZlbnRpbmcgdGhlIGluc3RhbmNlIGZyb20gYmVpbmcgZ2FyYmFnZSBjb2xsZWN0
ZWQsIGFuZCB0aGF0IHdvdWxkIGJlIGJhZFxuICAgICAgICB2YXIgd2l0aEV4dHJhcyA9IF9leHRl
bmRzKHt9LCBwcm9wcyk7XG4gICAgICAgIGlmICh3aXRoUmVmKSB3aXRoRXh0cmFzLnJlZiA9IHRo
aXMuc2V0V3JhcHBlZEluc3RhbmNlO1xuICAgICAgICBpZiAocmVuZGVyQ291bnRQcm9wKSB3aXRo
RXh0cmFzW3JlbmRlckNvdW50UHJvcF0gPSB0aGlzLnJlbmRlckNvdW50Kys7XG4gICAgICAgIGlm
ICh0aGlzLnByb3BzTW9kZSAmJiB0aGlzLnN1YnNjcmlwdGlvbikgd2l0aEV4dHJhc1tzdWJzY3Jp
cHRpb25LZXldID0gdGhpcy5zdWJzY3JpcHRpb247XG4gICAgICAgIHJldHVybiB3aXRoRXh0cmFz
O1xuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24g
cmVuZGVyKCkge1xuICAgICAgICB2YXIgc2VsZWN0b3IgPSB0aGlzLnNlbGVjdG9yO1xuICAgICAg
ICBzZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmYWxzZTtcblxuICAgICAgICBpZiAo
c2VsZWN0b3IuZXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBzZWxlY3Rvci5lcnJvcjtcbiAgICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gKDAsIF9yZWFjdC5jcmVhdGVFbGVtZW50KShX
cmFwcGVkQ29tcG9uZW50LCB0aGlzLmFkZEV4dHJhUHJvcHMoc2VsZWN0b3IucHJvcHMpKTtcbiAg
ICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIENvbm5lY3Q7XG4gICAgfShfcmVhY3Qu
Q29tcG9uZW50KTtcblxuICAgIENvbm5lY3QuV3JhcHBlZENvbXBvbmVudCA9IFdyYXBwZWRDb21w
b25lbnQ7XG4gICAgQ29ubmVjdC5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xuICAgIENvbm5l
Y3QuY2hpbGRDb250ZXh0VHlwZXMgPSBjaGlsZENvbnRleHRUeXBlcztcbiAgICBDb25uZWN0LmNv
bnRleHRUeXBlcyA9IGNvbnRleHRUeXBlcztcbiAgICBDb25uZWN0LnByb3BUeXBlcyA9IGNvbnRl
eHRUeXBlcztcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVXBkYXRlID0gZnVuY3Rp
b24gY29tcG9uZW50V2lsbFVwZGF0ZSgpIHtcbiAgICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5c
biAgICAgICAgLy8gV2UgYXJlIGhvdCByZWxvYWRpbmchXG4gICAgICAgIGlmICh0aGlzLnZlcnNp
b24gIT09IHZlcnNpb24pIHtcbiAgICAgICAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAg
ICAgICAgIHRoaXMuaW5pdFNlbGVjdG9yKCk7XG5cbiAgICAgICAgICAvLyBJZiBhbnkgY29ubmVj
dGVkIGRlc2NlbmRhbnRzIGRvbid0IGhvdCByZWxvYWQgKGFuZCByZXN1YnNjcmliZSBpbiB0aGUg
cHJvY2VzcyksIHRoZWlyXG4gICAgICAgICAgLy8gbGlzdGVuZXJzIHdpbGwgYmUgbG9zdCB3aGVu
IHdlIHVuc3Vic2NyaWJlLiBVbmZvcnR1bmF0ZWx5LCBieSBjb3B5aW5nIG92ZXIgYWxsXG4gICAg
ICAgICAgLy8gbGlzdGVuZXJzLCB0aGlzIGRvZXMgbWVhbiB0aGF0IHRoZSBvbGQgdmVyc2lvbnMg
b2YgY29ubmVjdGVkIGRlc2NlbmRhbnRzIHdpbGwgc3RpbGwgYmVcbiAgICAgICAgICAvLyBub3Rp
ZmllZCBvZiBzdGF0ZSBjaGFuZ2VzOyBob3dldmVyLCB0aGVpciBvblN0YXRlQ2hhbmdlIGZ1bmN0
aW9uIGlzIGEgbm8tb3Agc28gdGhpc1xuICAgICAgICAgIC8vIGlzbid0IGEgaHVnZSBkZWFsLlxu
ICAgICAgICAgIHZhciBvbGRMaXN0ZW5lcnMgPSBbXTtcblxuICAgICAgICAgIGlmICh0aGlzLnN1
YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgb2xkTGlzdGVuZXJzID0gdGhpcy5zdWJzY3JpcHRp
b24ubGlzdGVuZXJzLmdldCgpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udHJ5VW5z
dWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pbml0U3Vic2NyaXB0aW9u
KCk7XG4gICAgICAgICAgaWYgKHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcykge1xuICAgICAgICAg
ICAgdGhpcy5zdWJzY3JpcHRpb24udHJ5U3Vic2NyaWJlKCk7XG4gICAgICAgICAgICBvbGRMaXN0
ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgcmV0dXJu
IF90aGlzMi5zdWJzY3JpcHRpb24ubGlzdGVuZXJzLnN1YnNjcmliZShsaXN0ZW5lcik7XG4gICAg
ICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4g
ICAgcmV0dXJuICgwLCBfaG9pc3ROb25SZWFjdFN0YXRpY3MyLmRlZmF1bHQpKENvbm5lY3QsIFdy
YXBwZWRDb21wb25lbnQpO1xuICB9O1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXJlZHV4L2xpYi9jb21wb25lbnRzL2Nvbm5lY3RB
ZHZhbmNlZC5qc1xuICoqIG1vZHVsZSBpZCA9IDc5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAq
Ki8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRz
LndyYXBNYXBUb1Byb3BzQ29uc3RhbnQgPSB3cmFwTWFwVG9Qcm9wc0NvbnN0YW50O1xuZXhwb3J0
cy5nZXREZXBlbmRzT25Pd25Qcm9wcyA9IGdldERlcGVuZHNPbk93blByb3BzO1xuZXhwb3J0cy53
cmFwTWFwVG9Qcm9wc0Z1bmMgPSB3cmFwTWFwVG9Qcm9wc0Z1bmM7XG5cbnZhciBfdmVyaWZ5UGxh
aW5PYmplY3QgPSByZXF1aXJlKCcuLi91dGlscy92ZXJpZnlQbGFpbk9iamVjdCcpO1xuXG52YXIg
X3ZlcmlmeVBsYWluT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3ZlcmlmeVBsYWlu
T2JqZWN0KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJu
IG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVu
Y3Rpb24gd3JhcE1hcFRvUHJvcHNDb25zdGFudChnZXRDb25zdGFudCkge1xuICByZXR1cm4gZnVu
Y3Rpb24gaW5pdENvbnN0YW50U2VsZWN0b3IoZGlzcGF0Y2gsIG9wdGlvbnMpIHtcbiAgICB2YXIg
Y29uc3RhbnQgPSBnZXRDb25zdGFudChkaXNwYXRjaCwgb3B0aW9ucyk7XG5cbiAgICBmdW5jdGlv
biBjb25zdGFudFNlbGVjdG9yKCkge1xuICAgICAgcmV0dXJuIGNvbnN0YW50O1xuICAgIH1cbiAg
ICBjb25zdGFudFNlbGVjdG9yLmRlcGVuZHNPbk93blByb3BzID0gZmFsc2U7XG4gICAgcmV0dXJu
IGNvbnN0YW50U2VsZWN0b3I7XG4gIH07XG59XG5cbi8vIGRlcGVuZHNPbk93blByb3BzIGlzIHVz
ZWQgYnkgY3JlYXRlTWFwVG9Qcm9wc1Byb3h5IHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHBhc3Mg
cHJvcHMgYXMgYXJnc1xuLy8gdG8gdGhlIG1hcFRvUHJvcHMgZnVuY3Rpb24gYmVpbmcgd3JhcHBl
ZC4gSXQgaXMgYWxzbyB1c2VkIGJ5IG1ha2VQdXJlUHJvcHNTZWxlY3RvciB0byBkZXRlcm1pbmVc
bi8vIHdoZXRoZXIgbWFwVG9Qcm9wcyBuZWVkcyB0byBiZSBpbnZva2VkIHdoZW4gcHJvcHMgaGF2
ZSBjaGFuZ2VkLlxuLy8gXG4vLyBBIGxlbmd0aCBvZiBvbmUgc2lnbmFscyB0aGF0IG1hcFRvUHJv
cHMgZG9lcyBub3QgZGVwZW5kIG9uIHByb3BzIGZyb20gdGhlIHBhcmVudCBjb21wb25lbnQuXG4v
LyBBIGxlbmd0aCBvZiB6ZXJvIGlzIGFzc3VtZWQgdG8gbWVhbiBtYXBUb1Byb3BzIGlzIGdldHRp
bmcgYXJncyB2aWEgYXJndW1lbnRzIG9yIC4uLmFyZ3MgYW5kXG4vLyB0aGVyZWZvcmUgbm90IHJl
cG9ydGluZyBpdHMgbGVuZ3RoIGFjY3VyYXRlbHkuLlxuZnVuY3Rpb24gZ2V0RGVwZW5kc09uT3du
UHJvcHMobWFwVG9Qcm9wcykge1xuICByZXR1cm4gbWFwVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9w
cyAhPT0gbnVsbCAmJiBtYXBUb1Byb3BzLmRlcGVuZHNPbk93blByb3BzICE9PSB1bmRlZmluZWQg
PyBCb29sZWFuKG1hcFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMpIDogbWFwVG9Qcm9wcy5sZW5n
dGggIT09IDE7XG59XG5cbi8vIFVzZWQgYnkgd2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb24g
YW5kIHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uLFxuLy8gdGhpcyBmdW5jdGlvbiB3
cmFwcyBtYXBUb1Byb3BzIGluIGEgcHJveHkgZnVuY3Rpb24gd2hpY2ggZG9lcyBzZXZlcmFsIHRo
aW5nczpcbi8vIFxuLy8gICogRGV0ZWN0cyB3aGV0aGVyIHRoZSBtYXBUb1Byb3BzIGZ1bmN0aW9u
IGJlaW5nIGNhbGxlZCBkZXBlbmRzIG9uIHByb3BzLCB3aGljaFxuLy8gICAgaXMgdXNlZCBieSBz
ZWxlY3RvckZhY3RvcnkgdG8gZGVjaWRlIGlmIGl0IHNob3VsZCByZWludm9rZSBvbiBwcm9wcyBj
aGFuZ2VzLlxuLy8gICAgXG4vLyAgKiBPbiBmaXJzdCBjYWxsLCBoYW5kbGVzIG1hcFRvUHJvcHMg
aWYgcmV0dXJucyBhbm90aGVyIGZ1bmN0aW9uLCBhbmQgdHJlYXRzIHRoYXRcbi8vICAgIG5ldyBm
dW5jdGlvbiBhcyB0aGUgdHJ1ZSBtYXBUb1Byb3BzIGZvciBzdWJzZXF1ZW50IGNhbGxzLlxuLy8g
ICAgXG4vLyAgKiBPbiBmaXJzdCBjYWxsLCB2ZXJpZmllcyB0aGUgZmlyc3QgcmVzdWx0IGlzIGEg
cGxhaW4gb2JqZWN0LCBpbiBvcmRlciB0byB3YXJuXG4vLyAgICB0aGUgZGV2ZWxvcGVyIHRoYXQg
dGhlaXIgbWFwVG9Qcm9wcyBmdW5jdGlvbiBpcyBub3QgcmV0dXJuaW5nIGEgdmFsaWQgcmVzdWx0
LlxuLy8gICAgXG5mdW5jdGlvbiB3cmFwTWFwVG9Qcm9wc0Z1bmMobWFwVG9Qcm9wcywgbWV0aG9k
TmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gaW5pdFByb3h5U2VsZWN0b3IoZGlzcGF0Y2gsIF9y
ZWYpIHtcbiAgICB2YXIgZGlzcGxheU5hbWUgPSBfcmVmLmRpc3BsYXlOYW1lO1xuXG4gICAgdmFy
IHByb3h5ID0gZnVuY3Rpb24gbWFwVG9Qcm9wc1Byb3h5KHN0YXRlT3JEaXNwYXRjaCwgb3duUHJv
cHMpIHtcbiAgICAgIHJldHVybiBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA/IHByb3h5Lm1hcFRv
UHJvcHMoc3RhdGVPckRpc3BhdGNoLCBvd25Qcm9wcykgOiBwcm94eS5tYXBUb1Byb3BzKHN0YXRl
T3JEaXNwYXRjaCk7XG4gICAgfTtcblxuICAgIC8vIGFsbG93IGRldGVjdEZhY3RvcnlBbmRWZXJp
ZnkgdG8gZ2V0IG93blByb3BzXG4gICAgcHJveHkuZGVwZW5kc09uT3duUHJvcHMgPSB0cnVlO1xu
XG4gICAgcHJveHkubWFwVG9Qcm9wcyA9IGZ1bmN0aW9uIGRldGVjdEZhY3RvcnlBbmRWZXJpZnko
c3RhdGVPckRpc3BhdGNoLCBvd25Qcm9wcykge1xuICAgICAgcHJveHkubWFwVG9Qcm9wcyA9IG1h
cFRvUHJvcHM7XG4gICAgICBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA9IGdldERlcGVuZHNPbk93
blByb3BzKG1hcFRvUHJvcHMpO1xuICAgICAgdmFyIHByb3BzID0gcHJveHkoc3RhdGVPckRpc3Bh
dGNoLCBvd25Qcm9wcyk7XG5cbiAgICAgIGlmICh0eXBlb2YgcHJvcHMgPT09ICdmdW5jdGlvbicp
IHtcbiAgICAgICAgcHJveHkubWFwVG9Qcm9wcyA9IHByb3BzO1xuICAgICAgICBwcm94eS5kZXBl
bmRzT25Pd25Qcm9wcyA9IGdldERlcGVuZHNPbk93blByb3BzKHByb3BzKTtcbiAgICAgICAgcHJv
cHMgPSBwcm94eShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKTtcbiAgICAgIH1cblxuICAgICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICgwLCBfdmVyaWZ5UGxh
aW5PYmplY3QyLmRlZmF1bHQpKHByb3BzLCBkaXNwbGF5TmFtZSwgbWV0aG9kTmFtZSk7XG5cbiAg
ICAgIHJldHVybiBwcm9wcztcbiAgICB9O1xuXG4gICAgcmV0dXJuIHByb3h5O1xuICB9O1xufVxu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0
LXJlZHV4L2xpYi9jb25uZWN0L3dyYXBNYXBUb1Byb3BzLmpzXG4gKiogbW9kdWxlIGlkID0gODBc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5f
X2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuY29ubmVjdCA9IGV4cG9ydHMuY29ubmVjdEFkdmFu
Y2VkID0gZXhwb3J0cy5jcmVhdGVQcm92aWRlciA9IGV4cG9ydHMuUHJvdmlkZXIgPSB1bmRlZmlu
ZWQ7XG5cbnZhciBfUHJvdmlkZXIgPSByZXF1aXJlKCcuL2NvbXBvbmVudHMvUHJvdmlkZXInKTtc
blxudmFyIF9Qcm92aWRlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Qcm92aWRlcik7XG5c
bnZhciBfY29ubmVjdEFkdmFuY2VkID0gcmVxdWlyZSgnLi9jb21wb25lbnRzL2Nvbm5lY3RBZHZh
bmNlZCcpO1xuXG52YXIgX2Nvbm5lY3RBZHZhbmNlZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KF9jb25uZWN0QWR2YW5jZWQpO1xuXG52YXIgX2Nvbm5lY3QgPSByZXF1aXJlKCcuL2Nvbm5lY3Qv
Y29ubmVjdCcpO1xuXG52YXIgX2Nvbm5lY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29u
bmVjdCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBv
YmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9y
dHMuUHJvdmlkZXIgPSBfUHJvdmlkZXIyLmRlZmF1bHQ7XG5leHBvcnRzLmNyZWF0ZVByb3ZpZGVy
ID0gX1Byb3ZpZGVyLmNyZWF0ZVByb3ZpZGVyO1xuZXhwb3J0cy5jb25uZWN0QWR2YW5jZWQgPSBf
Y29ubmVjdEFkdmFuY2VkMi5kZWZhdWx0O1xuZXhwb3J0cy5jb25uZWN0ID0gX2Nvbm5lY3QyLmRl
ZmF1bHQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vcmVhY3QtcmVkdXgvbGliL2luZGV4LmpzXG4gKiogbW9kdWxlIGlkID0gODFcbiAqKiBtb2R1
bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxl
ID0gdHJ1ZTtcbmV4cG9ydHMuc3RvcmVTaGFwZSA9IGV4cG9ydHMuc3Vic2NyaXB0aW9uU2hhcGUg
PSB1bmRlZmluZWQ7XG5cbnZhciBfcHJvcFR5cGVzID0gcmVxdWlyZSgncHJvcC10eXBlcycpO1xu
XG52YXIgX3Byb3BUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wcm9wVHlwZXMpO1xu
XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9i
ai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgc3Vic2NyaXB0
aW9uU2hhcGUgPSBleHBvcnRzLnN1YnNjcmlwdGlvblNoYXBlID0gX3Byb3BUeXBlczIuZGVmYXVs
dC5zaGFwZSh7XG4gIHRyeVN1YnNjcmliZTogX3Byb3BUeXBlczIuZGVmYXVsdC5mdW5jLmlzUmVx
dWlyZWQsXG4gIHRyeVVuc3Vic2NyaWJlOiBfcHJvcFR5cGVzMi5kZWZhdWx0LmZ1bmMuaXNSZXF1
aXJlZCxcbiAgbm90aWZ5TmVzdGVkU3ViczogX3Byb3BUeXBlczIuZGVmYXVsdC5mdW5jLmlzUmVx
dWlyZWQsXG4gIGlzU3Vic2NyaWJlZDogX3Byb3BUeXBlczIuZGVmYXVsdC5mdW5jLmlzUmVxdWly
ZWRcbn0pO1xuXG52YXIgc3RvcmVTaGFwZSA9IGV4cG9ydHMuc3RvcmVTaGFwZSA9IF9wcm9wVHlw
ZXMyLmRlZmF1bHQuc2hhcGUoe1xuICBzdWJzY3JpYmU6IF9wcm9wVHlwZXMyLmRlZmF1bHQuZnVu
Yy5pc1JlcXVpcmVkLFxuICBkaXNwYXRjaDogX3Byb3BUeXBlczIuZGVmYXVsdC5mdW5jLmlzUmVx
dWlyZWQsXG4gIGdldFN0YXRlOiBfcHJvcFR5cGVzMi5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZFxu
fSk7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34v
cmVhY3QtcmVkdXgvbGliL3V0aWxzL1Byb3BUeXBlcy5qc1xuICoqIG1vZHVsZSBpZCA9IDgyXG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19l
c01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmRlZmF1bHQgPSB2ZXJpZnlQbGFpbk9iamVjdDtcblxu
dmFyIF9pc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoL2lzUGxhaW5PYmplY3QnKTtcblxu
dmFyIF9pc1BsYWluT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzUGxhaW5PYmpl
Y3QpO1xuXG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCcuL3dhcm5pbmcnKTtcblxudmFyIF93YXJu
aW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcpO1xuXG5mdW5jdGlvbiBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8g
b2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiB2ZXJpZnlQbGFpbk9iamVjdCh2
YWx1ZSwgZGlzcGxheU5hbWUsIG1ldGhvZE5hbWUpIHtcbiAgaWYgKCEoMCwgX2lzUGxhaW5PYmpl
Y3QyLmRlZmF1bHQpKHZhbHVlKSkge1xuICAgICgwLCBfd2FybmluZzIuZGVmYXVsdCkobWV0aG9k
TmFtZSArICcoKSBpbiAnICsgZGlzcGxheU5hbWUgKyAnIG11c3QgcmV0dXJuIGEgcGxhaW4gb2Jq
ZWN0LiBJbnN0ZWFkIHJlY2VpdmVkICcgKyB2YWx1ZSArICcuJyk7XG4gIH1cbn1cblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1yZWR1eC9s
aWIvdXRpbHMvdmVyaWZ5UGxhaW5PYmplY3QuanNcbiAqKiBtb2R1bGUgaWQgPSA4M1xuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCwgUHJvcFR5
cGVzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xu
XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2RvVGV4dElucHV0IGV4dGVuZHMgQ29tcG9uZW50IHtc
biAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBvblNhdmU6IFByb3BUeXBlcy5mdW5jLmlzUmVx
dWlyZWQsXG4gICAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBwbGFjZWhvbGRlcjogUHJv
cFR5cGVzLnN0cmluZyxcbiAgICBlZGl0aW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBuZXdUb2Rv
OiBQcm9wVHlwZXMuYm9vbFxuICB9XG5cbiAgc3RhdGUgPSB7XG4gICAgdGV4dDogdGhpcy5wcm9w
cy50ZXh0IHx8ICcnXG4gIH1cblxuICBoYW5kbGVTdWJtaXQgPSBlID0+IHtcbiAgICBjb25zdCB0
ZXh0ID0gZS50YXJnZXQudmFsdWUudHJpbSgpXG4gICAgaWYgKGUud2hpY2ggPT09IDEzKSB7XG4g
ICAgICB0aGlzLnByb3BzLm9uU2F2ZSh0ZXh0KVxuICAgICAgaWYgKHRoaXMucHJvcHMubmV3VG9k
bykge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGV4dDogJycgfSlcbiAgICAgIH1cbiAgICB9
XG4gIH1cblxuICBoYW5kbGVDaGFuZ2UgPSBlID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgdGV4
dDogZS50YXJnZXQudmFsdWUgfSlcbiAgfVxuXG4gIGhhbmRsZUJsdXIgPSBlID0+IHtcbiAgICBp
ZiAoIXRoaXMucHJvcHMubmV3VG9kbykge1xuICAgICAgdGhpcy5wcm9wcy5vblNhdmUoZS50YXJn
ZXQudmFsdWUpXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAg
ICA8aW5wdXQgY2xhc3NOYW1lPXtcbiAgICAgICAgY2xhc3NuYW1lcyh7XG4gICAgICAgICAgZWRp
dDogdGhpcy5wcm9wcy5lZGl0aW5nLFxuICAgICAgICAgICduZXctdG9kbyc6IHRoaXMucHJvcHMu
bmV3VG9kb1xuICAgICAgICB9KX1cbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBwbGFj
ZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn1cbiAgICAgICAgYXV0b0ZvY3VzPVwidHJ1
ZVwiXG4gICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnRleHR9XG4gICAgICAgIG9uQmx1cj17dGhp
cy5oYW5kbGVCbHVyfVxuICAgICAgICBvbkNoYW5nZT17dGhpcy5oYW5kbGVDaGFuZ2V9XG4gICAg
ICAgIG9uS2V5RG93bj17dGhpcy5oYW5kbGVTdWJtaXR9IC8+XG4gICAgKVxuICB9XG59XG5cblxu
XG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9jb21wb25lbnRzL1RvZG9UZXh0SW5w
dXQuanNcbiAqKi8iLCJleHBvcnQgY29uc3QgQUREX1RPRE8gPSAnQUREX1RPRE8nXG5leHBvcnQg
Y29uc3QgREVMRVRFX1RPRE8gPSAnREVMRVRFX1RPRE8nXG5leHBvcnQgY29uc3QgRURJVF9UT0RP
ID0gJ0VESVRfVE9ETydcbmV4cG9ydCBjb25zdCBDT01QTEVURV9UT0RPID0gJ0NPTVBMRVRFX1RP
RE8nXG5leHBvcnQgY29uc3QgQ09NUExFVEVfQUxMID0gJ0NPTVBMRVRFX0FMTCdcbmV4cG9ydCBj
b25zdCBDTEVBUl9DT01QTEVURUQgPSAnQ0xFQVJfQ09NUExFVEVEJ1xuXG5cblxuLyoqIFdFQlBB
Q0sgRk9PVEVSICoqXG4gKiogLi9zcmMvY29uc3RhbnRzL0FjdGlvblR5cGVzLmpzXG4gKiovIiwi
ZXhwb3J0IGNvbnN0IFNIT1dfQUxMID0gJ3Nob3dfYWxsJ1xuZXhwb3J0IGNvbnN0IFNIT1dfQ09N
UExFVEVEID0gJ3Nob3dfY29tcGxldGVkJ1xuZXhwb3J0IGNvbnN0IFNIT1dfQUNUSVZFID0gJ3No
b3dfYWN0aXZlJ1xuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvY29uc3Rh
bnRzL1RvZG9GaWx0ZXJzLmpzXG4gKiovIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBi
cm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBm
cm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQg
c3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBp
biBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNv
ZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBm
dW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVz
LlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1
bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1l
b3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1l
b3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4g
ZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlw
ZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRp
bWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVk
U2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChl
KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1c
biAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9u
Jykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAg
ICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENs
ZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVk
Q2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rp
b24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGlt
ZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNc
biAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0
VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAo
KGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVv
dXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVv
dXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7
XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVv
dXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQo
ZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8g
V2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5F
LiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4g
ICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4g
ICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVu
IGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3Qg
Zm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2ls
bCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVv
dXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9u
IHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09
PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBz
aXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4g
ICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVm
aW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0
IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNo
ZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVv
dXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVi
b2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAg
ICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7
XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0
aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9i
YWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVk
Q2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4g
ICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEku
RS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkg
b3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJv
ci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBy
dWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBj
YWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxu
XG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJy
ZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRp
Y2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJl
dHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVl
Lmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xu
ICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1
ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlv
biBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4g
ICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAg
IGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hp
bGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9
IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBp
ZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5k
ZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXgg
PSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVl
dWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRp
bWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZh
ciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1l
bnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMu
bGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xu
ICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4g
ICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGlt
ZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBv
YmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtc
biAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlv
biAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vz
cy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVu
diA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1w
dHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtc
blxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRM
aXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29w
O1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3Rl
bmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xuXG5wcm9jZXNzLmJpbmRpbmcgPSBm
dW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlz
IG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1
cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5l
dyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51
bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcblxuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXNjcmlwdHMvfi9wcm9jZXNzL2Jy
b3dzZXIuanNcbiAqKiBtb2R1bGUgaWQgPSA4N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNhcCA9IHJlcXVpcmUoJ2FzYXAvcmF3Jyk7XG5cbmZ1
bmN0aW9uIG5vb3AoKSB7fVxuXG4vLyBTdGF0ZXM6XG4vL1xuLy8gMCAtIHBlbmRpbmdcbi8vIDEg
LSBmdWxmaWxsZWQgd2l0aCBfdmFsdWVcbi8vIDIgLSByZWplY3RlZCB3aXRoIF92YWx1ZVxuLy8g
MyAtIGFkb3B0ZWQgdGhlIHN0YXRlIG9mIGFub3RoZXIgcHJvbWlzZSwgX3ZhbHVlXG4vL1xuLy8g
b25jZSB0aGUgc3RhdGUgaXMgbm8gbG9uZ2VyIHBlbmRpbmcgKDApIGl0IGlzIGltbXV0YWJsZVxu
XG4vLyBBbGwgYF9gIHByZWZpeGVkIHByb3BlcnRpZXMgd2lsbCBiZSByZWR1Y2VkIHRvIGBfe3Jh
bmRvbSBudW1iZXJ9YFxuLy8gYXQgYnVpbGQgdGltZSB0byBvYmZ1c2NhdGUgdGhlbSBhbmQgZGlz
Y291cmFnZSB0aGVpciB1c2UuXG4vLyBXZSBkb24ndCB1c2Ugc3ltYm9scyBvciBPYmplY3QuZGVm
aW5lUHJvcGVydHkgdG8gZnVsbHkgaGlkZSB0aGVtXG4vLyBiZWNhdXNlIHRoZSBwZXJmb3JtYW5j
ZSBpc24ndCBnb29kIGVub3VnaC5cblxuXG4vLyB0byBhdm9pZCB1c2luZyB0cnkvY2F0Y2ggaW5z
aWRlIGNyaXRpY2FsIGZ1bmN0aW9ucywgd2Vcbi8vIGV4dHJhY3QgdGhlbSB0byBoZXJlLlxudmFy
IExBU1RfRVJST1IgPSBudWxsO1xudmFyIElTX0VSUk9SID0ge307XG5mdW5jdGlvbiBnZXRUaGVu
KG9iaikge1xuICB0cnkge1xuICAgIHJldHVybiBvYmoudGhlbjtcbiAgfSBjYXRjaCAoZXgpIHtc
biAgICBMQVNUX0VSUk9SID0gZXg7XG4gICAgcmV0dXJuIElTX0VSUk9SO1xuICB9XG59XG5cbmZ1
bmN0aW9uIHRyeUNhbGxPbmUoZm4sIGEpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZm4oYSk7XG4g
IH0gY2F0Y2ggKGV4KSB7XG4gICAgTEFTVF9FUlJPUiA9IGV4O1xuICAgIHJldHVybiBJU19FUlJP
UjtcbiAgfVxufVxuZnVuY3Rpb24gdHJ5Q2FsbFR3byhmbiwgYSwgYikge1xuICB0cnkge1xuICAg
IGZuKGEsIGIpO1xuICB9IGNhdGNoIChleCkge1xuICAgIExBU1RfRVJST1IgPSBleDtcbiAgICBy
ZXR1cm4gSVNfRVJST1I7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQcm9taXNlO1xuXG5m
dW5jdGlvbiBQcm9taXNlKGZuKSB7XG4gIGlmICh0eXBlb2YgdGhpcyAhPT0gJ29iamVjdCcpIHtc
biAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQcm9taXNlcyBtdXN0IGJlIGNvbnN0cnVjdGVkIHZp
YSBuZXcnKTtcbiAgfVxuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhy
b3cgbmV3IFR5cGVFcnJvcignbm90IGEgZnVuY3Rpb24nKTtcbiAgfVxuICB0aGlzLl80NSA9IDA7
XG4gIHRoaXMuXzgxID0gMDtcbiAgdGhpcy5fNjUgPSBudWxsO1xuICB0aGlzLl81NCA9IG51bGw7
XG4gIGlmIChmbiA9PT0gbm9vcCkgcmV0dXJuO1xuICBkb1Jlc29sdmUoZm4sIHRoaXMpO1xufVxu
UHJvbWlzZS5fMTAgPSBudWxsO1xuUHJvbWlzZS5fOTcgPSBudWxsO1xuUHJvbWlzZS5fNjEgPSBu
b29wO1xuXG5Qcm9taXNlLnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24ob25GdWxmaWxsZWQsIG9u
UmVqZWN0ZWQpIHtcbiAgaWYgKHRoaXMuY29uc3RydWN0b3IgIT09IFByb21pc2UpIHtcbiAgICBy
ZXR1cm4gc2FmZVRoZW4odGhpcywgb25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpO1xuICB9XG4gIHZh
ciByZXMgPSBuZXcgUHJvbWlzZShub29wKTtcbiAgaGFuZGxlKHRoaXMsIG5ldyBIYW5kbGVyKG9u
RnVsZmlsbGVkLCBvblJlamVjdGVkLCByZXMpKTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbmZ1bmN0
aW9uIHNhZmVUaGVuKHNlbGYsIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gIHJldHVybiBu
ZXcgc2VsZi5jb25zdHJ1Y3RvcihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFy
IHJlcyA9IG5ldyBQcm9taXNlKG5vb3ApO1xuICAgIHJlcy50aGVuKHJlc29sdmUsIHJlamVjdCk7
XG4gICAgaGFuZGxlKHNlbGYsIG5ldyBIYW5kbGVyKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBy
ZXMpKTtcbiAgfSk7XG59O1xuZnVuY3Rpb24gaGFuZGxlKHNlbGYsIGRlZmVycmVkKSB7XG4gIHdo
aWxlIChzZWxmLl84MSA9PT0gMykge1xuICAgIHNlbGYgPSBzZWxmLl82NTtcbiAgfVxuICBpZiAo
UHJvbWlzZS5fMTApIHtcbiAgICBQcm9taXNlLl8xMChzZWxmKTtcbiAgfVxuICBpZiAoc2VsZi5f
ODEgPT09IDApIHtcbiAgICBpZiAoc2VsZi5fNDUgPT09IDApIHtcbiAgICAgIHNlbGYuXzQ1ID0g
MTtcbiAgICAgIHNlbGYuXzU0ID0gZGVmZXJyZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAg
IGlmIChzZWxmLl80NSA9PT0gMSkge1xuICAgICAgc2VsZi5fNDUgPSAyO1xuICAgICAgc2VsZi5f
NTQgPSBbc2VsZi5fNTQsIGRlZmVycmVkXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2Vs
Zi5fNTQucHVzaChkZWZlcnJlZCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGhhbmRsZVJlc29sdmVk
KHNlbGYsIGRlZmVycmVkKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlUmVzb2x2ZWQoc2VsZiwgZGVm
ZXJyZWQpIHtcbiAgYXNhcChmdW5jdGlvbigpIHtcbiAgICB2YXIgY2IgPSBzZWxmLl84MSA9PT0g
MSA/IGRlZmVycmVkLm9uRnVsZmlsbGVkIDogZGVmZXJyZWQub25SZWplY3RlZDtcbiAgICBpZiAo
Y2IgPT09IG51bGwpIHtcbiAgICAgIGlmIChzZWxmLl84MSA9PT0gMSkge1xuICAgICAgICByZXNv
bHZlKGRlZmVycmVkLnByb21pc2UsIHNlbGYuXzY1KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAg
IHJlamVjdChkZWZlcnJlZC5wcm9taXNlLCBzZWxmLl82NSk7XG4gICAgICB9XG4gICAgICByZXR1
cm47XG4gICAgfVxuICAgIHZhciByZXQgPSB0cnlDYWxsT25lKGNiLCBzZWxmLl82NSk7XG4gICAg
aWYgKHJldCA9PT0gSVNfRVJST1IpIHtcbiAgICAgIHJlamVjdChkZWZlcnJlZC5wcm9taXNlLCBM
QVNUX0VSUk9SKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZShkZWZlcnJlZC5wcm9taXNl
LCByZXQpO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiByZXNvbHZlKHNlbGYsIG5ld1ZhbHVl
KSB7XG4gIC8vIFByb21pc2UgUmVzb2x1dGlvbiBQcm9jZWR1cmU6IGh0dHBzOi8vZ2l0aHViLmNv
bS9wcm9taXNlcy1hcGx1cy9wcm9taXNlcy1zcGVjI3RoZS1wcm9taXNlLXJlc29sdXRpb24tcHJv
Y2VkdXJlXG4gIGlmIChuZXdWYWx1ZSA9PT0gc2VsZikge1xuICAgIHJldHVybiByZWplY3QoXG4g
ICAgICBzZWxmLFxuICAgICAgbmV3IFR5cGVFcnJvcignQSBwcm9taXNlIGNhbm5vdCBiZSByZXNv
bHZlZCB3aXRoIGl0c2VsZi4nKVxuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIG5ld1ZhbHVlICYm
XG4gICAgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIG5ld1ZhbHVlID09
PSAnZnVuY3Rpb24nKVxuICApIHtcbiAgICB2YXIgdGhlbiA9IGdldFRoZW4obmV3VmFsdWUpO1xu
ICAgIGlmICh0aGVuID09PSBJU19FUlJPUikge1xuICAgICAgcmV0dXJuIHJlamVjdChzZWxmLCBM
QVNUX0VSUk9SKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhlbiA9PT0gc2VsZi50aGVuICYm
XG4gICAgICBuZXdWYWx1ZSBpbnN0YW5jZW9mIFByb21pc2VcbiAgICApIHtcbiAgICAgIHNlbGYu
XzgxID0gMztcbiAgICAgIHNlbGYuXzY1ID0gbmV3VmFsdWU7XG4gICAgICBmaW5hbGUoc2VsZik7
XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9u
Jykge1xuICAgICAgZG9SZXNvbHZlKHRoZW4uYmluZChuZXdWYWx1ZSksIHNlbGYpO1xuICAgICAg
cmV0dXJuO1xuICAgIH1cbiAgfVxuICBzZWxmLl84MSA9IDE7XG4gIHNlbGYuXzY1ID0gbmV3VmFs
dWU7XG4gIGZpbmFsZShzZWxmKTtcbn1cblxuZnVuY3Rpb24gcmVqZWN0KHNlbGYsIG5ld1ZhbHVl
KSB7XG4gIHNlbGYuXzgxID0gMjtcbiAgc2VsZi5fNjUgPSBuZXdWYWx1ZTtcbiAgaWYgKFByb21p
c2UuXzk3KSB7XG4gICAgUHJvbWlzZS5fOTcoc2VsZiwgbmV3VmFsdWUpO1xuICB9XG4gIGZpbmFs
ZShzZWxmKTtcbn1cbmZ1bmN0aW9uIGZpbmFsZShzZWxmKSB7XG4gIGlmIChzZWxmLl80NSA9PT0g
MSkge1xuICAgIGhhbmRsZShzZWxmLCBzZWxmLl81NCk7XG4gICAgc2VsZi5fNTQgPSBudWxsO1xu
ICB9XG4gIGlmIChzZWxmLl80NSA9PT0gMikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2Vs
Zi5fNTQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhhbmRsZShzZWxmLCBzZWxmLl81NFtpXSk7XG4g
ICAgfVxuICAgIHNlbGYuXzU0ID0gbnVsbDtcbiAgfVxufVxuXG5mdW5jdGlvbiBIYW5kbGVyKG9u
RnVsZmlsbGVkLCBvblJlamVjdGVkLCBwcm9taXNlKXtcbiAgdGhpcy5vbkZ1bGZpbGxlZCA9IHR5
cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogbnVsbDtcbiAg
dGhpcy5vblJlamVjdGVkID0gdHlwZW9mIG9uUmVqZWN0ZWQgPT09ICdmdW5jdGlvbicgPyBvblJl
amVjdGVkIDogbnVsbDtcbiAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbn1cblxuLyoqXG4gKiBU
YWtlIGEgcG90ZW50aWFsbHkgbWlzYmVoYXZpbmcgcmVzb2x2ZXIgZnVuY3Rpb24gYW5kIG1ha2Ug
c3VyZVxuICogb25GdWxmaWxsZWQgYW5kIG9uUmVqZWN0ZWQgYXJlIG9ubHkgY2FsbGVkIG9uY2Uu
XG4gKlxuICogTWFrZXMgbm8gZ3VhcmFudGVlcyBhYm91dCBhc3luY2hyb255LlxuICovXG5mdW5j
dGlvbiBkb1Jlc29sdmUoZm4sIHByb21pc2UpIHtcbiAgdmFyIGRvbmUgPSBmYWxzZTtcbiAgdmFy
IHJlcyA9IHRyeUNhbGxUd28oZm4sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmIChkb25lKSBy
ZXR1cm47XG4gICAgZG9uZSA9IHRydWU7XG4gICAgcmVzb2x2ZShwcm9taXNlLCB2YWx1ZSk7XG4g
IH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICBpZiAoZG9uZSkgcmV0dXJuO1xuICAgIGRvbmUg
PSB0cnVlO1xuICAgIHJlamVjdChwcm9taXNlLCByZWFzb24pO1xuICB9KVxuICBpZiAoIWRvbmUg
JiYgcmVzID09PSBJU19FUlJPUikge1xuICAgIGRvbmUgPSB0cnVlO1xuICAgIHJlamVjdChwcm9t
aXNlLCBMQVNUX0VSUk9SKTtcbiAgfVxufVxuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qtc2NyaXB0cy9+L3Byb21pc2UvbGliL2NvcmUu
anNcbiAqKiBtb2R1bGUgaWQgPSA4OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoq
XG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9k
SW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKSxcbiAgICBfYXNzaWdu
ID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgUmVhY3ROb29wVXBkYXRlUXVldWUg
PSByZXF1aXJlKCcuL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlJyk7XG5cbnZhciBjYW5EZWZpbmVQcm9w
ZXJ0eSA9IHJlcXVpcmUoJy4vY2FuRGVmaW5lUHJvcGVydHknKTtcbnZhciBlbXB0eU9iamVjdCA9
IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5T2JqZWN0Jyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWly
ZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgbG93UHJpb3JpdHlXYXJuaW5nID0gcmVxdWly
ZSgnLi9sb3dQcmlvcml0eVdhcm5pbmcnKTtcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGhlbHBlcnMg
Zm9yIHRoZSB1cGRhdGluZyBzdGF0ZSBvZiBhIGNvbXBvbmVudC5cbiAqL1xuZnVuY3Rpb24gUmVh
Y3RDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcbiAgdGhpcy5wcm9wcyA9IHBy
b3BzO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLnJlZnMgPSBlbXB0eU9iamVj
dDtcbiAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB1cGRhdGVyIGJ1dCB0aGUgcmVhbCBv
bmUgZ2V0cyBpbmplY3RlZCBieSB0aGVcbiAgLy8gcmVuZGVyZXIuXG4gIHRoaXMudXBkYXRlciA9
IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG59XG5cblJlYWN0Q29tcG9uZW50LnBy
b3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0ge307XG5cbi8qKlxuICogU2V0cyBhIHN1YnNldCBv
ZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyB0byBtdXRhdGVcbiAqIHN0YXRlLiBZb3Ugc2hv
dWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG4gKlxuICogVGhlcmUgaXMgbm8g
Z3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwg
c29cbiAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBt
YXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG4gKlxuICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRo
YXQgY2FsbHMgdG8gYHNldFN0YXRlYCB3aWxsIHJ1biBzeW5jaHJvbm91c2x5LFxuICogYXMgdGhl
eSBtYXkgZXZlbnR1YWxseSBiZSBiYXRjaGVkIHRvZ2V0aGVyLiAgWW91IGNhbiBwcm92aWRlIGFu
IG9wdGlvbmFsXG4gKiBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGUgY2Fs
bCB0byBzZXRTdGF0ZSBpcyBhY3R1YWxseVxuICogY29tcGxldGVkLlxuICpcbiAqIFdoZW4gYSBm
dW5jdGlvbiBpcyBwcm92aWRlZCB0byBzZXRTdGF0ZSwgaXQgd2lsbCBiZSBjYWxsZWQgYXQgc29t
ZSBwb2ludCBpblxuICogdGhlIGZ1dHVyZSAobm90IHN5bmNocm9ub3VzbHkpLiBJdCB3aWxsIGJl
IGNhbGxlZCB3aXRoIHRoZSB1cCB0byBkYXRlXG4gKiBjb21wb25lbnQgYXJndW1lbnRzIChzdGF0
ZSwgcHJvcHMsIGNvbnRleHQpLiBUaGVzZSB2YWx1ZXMgY2FuIGJlIGRpZmZlcmVudFxuICogZnJv
bSB0aGlzLiogYmVjYXVzZSB5b3VyIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgYWZ0ZXIgcmVjZWl2
ZVByb3BzIGJ1dCBiZWZvcmVcbiAqIHNob3VsZENvbXBvbmVudFVwZGF0ZSwgYW5kIHRoaXMgbmV3
IHN0YXRlLCBwcm9wcywgYW5kIGNvbnRleHQgd2lsbCBub3QgeWV0IGJlXG4gKiBhc3NpZ25lZCB0
byB0aGlzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufSBwYXJ0aWFsU3RhdGUgTmV4
dCBwYXJ0aWFsIHN0YXRlIG9yIGZ1bmN0aW9uIHRvXG4gKiAgICAgICAgcHJvZHVjZSBuZXh0IHBh
cnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggY3VycmVudCBzdGF0ZS5cbiAqIEBwYXJhbSB7
P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cbiAqIEBm
aW5hbFxuICogQHByb3RlY3RlZFxuICovXG5SZWFjdENvbXBvbmVudC5wcm90b3R5cGUuc2V0U3Rh
dGUgPSBmdW5jdGlvbiAocGFydGlhbFN0YXRlLCBjYWxsYmFjaykge1xuICAhKHR5cGVvZiBwYXJ0
aWFsU3RhdGUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBwYXJ0aWFsU3RhdGUgPT09ICdmdW5jdGlv
bicgfHwgcGFydGlhbFN0YXRlID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3NldFN0YXRlKC4uLik6IHRha2VzIGFuIG9i
amVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0
dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLicpIDogX3Byb2RJbnZhcmlhbnQoJzg1
JykgOiB2b2lkIDA7XG4gIHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcywgcGFydGlh
bFN0YXRlKTtcbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgdGhpcy51cGRhdGVyLmVucXVldWVDYWxs
YmFjayh0aGlzLCBjYWxsYmFjaywgJ3NldFN0YXRlJyk7XG4gIH1cbn07XG5cbi8qKlxuICogRm9y
Y2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25v
d24gd2l0aFxuICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNh
Y3Rpb24uXG4gKlxuICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRo
YXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNo
YW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXG4gKlxuICogVGhpcyB3aWxsIG5v
dCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuICog
YGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAqXG4gKiBA
cGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHVwZGF0ZSBpcyBjb21wbGV0
ZS5cbiAqIEBmaW5hbFxuICogQHByb3RlY3RlZFxuICovXG5SZWFjdENvbXBvbmVudC5wcm90b3R5
cGUuZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdGhpcy51cGRhdGVyLmVu
cXVldWVGb3JjZVVwZGF0ZSh0aGlzKTtcbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgdGhpcy51cGRh
dGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjaywgJ2ZvcmNlVXBkYXRlJyk7XG4gIH1c
bn07XG5cbi8qKlxuICogRGVwcmVjYXRlZCBBUElzLiBUaGVzZSBBUElzIHVzZWQgdG8gZXhpc3Qg
b24gY2xhc3NpYyBSZWFjdCBjbGFzc2VzIGJ1dCBzaW5jZVxuICogd2Ugd291bGQgbGlrZSB0byBk
ZXByZWNhdGUgdGhlbSwgd2UncmUgbm90IGdvaW5nIHRvIG1vdmUgdGhlbSBvdmVyIHRvIHRoaXNc
biAqIG1vZGVybiBiYXNlIGNsYXNzLiBJbnN0ZWFkLCB3ZSBkZWZpbmUgYSBnZXR0ZXIgdGhhdCB3
YXJucyBpZiBpdCdzIGFjY2Vzc2VkLlxuICovXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICB2YXIgZGVwcmVjYXRlZEFQSXMgPSB7XG4gICAgaXNNb3VudGVk
OiBbJ2lzTW91bnRlZCcsICdJbnN0ZWFkLCBtYWtlIHN1cmUgdG8gY2xlYW4gdXAgc3Vic2NyaXB0
aW9ucyBhbmQgcGVuZGluZyByZXF1ZXN0cyBpbiAnICsgJ2NvbXBvbmVudFdpbGxVbm1vdW50IHRv
IHByZXZlbnQgbWVtb3J5IGxlYWtzLiddLFxuICAgIHJlcGxhY2VTdGF0ZTogWydyZXBsYWNlU3Rh
dGUnLCAnUmVmYWN0b3IgeW91ciBjb2RlIHRvIHVzZSBzZXRTdGF0ZSBpbnN0ZWFkIChzZWUgJyAr
ICdodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzMyMzYpLiddXG4gIH07
XG4gIHZhciBkZWZpbmVEZXByZWNhdGlvbldhcm5pbmcgPSBmdW5jdGlvbiAobWV0aG9kTmFtZSwg
aW5mbykge1xuICAgIGlmIChjYW5EZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSwgbWV0aG9kTmFtZSwge1xuICAgICAg
ICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsb3dQcmlvcml0eVdhcm5pbmcoZmFsc2Us
ICclcyguLi4pIGlzIGRlcHJlY2F0ZWQgaW4gcGxhaW4gSmF2YVNjcmlwdCBSZWFjdCBjbGFzc2Vz
LiAlcycsIGluZm9bMF0sIGluZm9bMV0pO1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4g
ICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgZm9yICh2YXIgZm5OYW1lIGluIGRl
cHJlY2F0ZWRBUElzKSB7XG4gICAgaWYgKGRlcHJlY2F0ZWRBUElzLmhhc093blByb3BlcnR5KGZu
TmFtZSkpIHtcbiAgICAgIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyhmbk5hbWUsIGRlcHJlY2F0
ZWRBUElzW2ZuTmFtZV0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgaGVs
cGVycyBmb3IgdGhlIHVwZGF0aW5nIHN0YXRlIG9mIGEgY29tcG9uZW50LlxuICovXG5mdW5jdGlv
biBSZWFjdFB1cmVDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcbiAgLy8gRHVw
bGljYXRlZCBmcm9tIFJlYWN0Q29tcG9uZW50LlxuICB0aGlzLnByb3BzID0gcHJvcHM7XG4gIHRo
aXMuY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xuICAvLyBX
ZSBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHVwZGF0ZXIgYnV0IHRoZSByZWFsIG9uZSBnZXRzIGlu
amVjdGVkIGJ5IHRoZVxuICAvLyByZW5kZXJlci5cbiAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8
fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcbn1cblxuZnVuY3Rpb24gQ29tcG9uZW50RHVtbXkoKSB7
fVxuQ29tcG9uZW50RHVtbXkucHJvdG90eXBlID0gUmVhY3RDb21wb25lbnQucHJvdG90eXBlO1xu
UmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZSA9IG5ldyBDb21wb25lbnREdW1teSgpO1xuUmVh
Y3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJlYWN0UHVyZUNvbXBvbmVu
dDtcbi8vIEF2b2lkIGFuIGV4dHJhIHByb3RvdHlwZSBqdW1wIGZvciB0aGVzZSBtZXRob2RzLlxu
X2Fzc2lnbihSZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlLCBSZWFjdENvbXBvbmVudC5wcm90
b3R5cGUpO1xuUmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVu
dCA9IHRydWU7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBDb21wb25lbnQ6IFJlYWN0Q29tcG9u
ZW50LFxuICBQdXJlQ29tcG9uZW50OiBSZWFjdFB1cmVDb21wb25lbnRcbn07XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QvbGliL1JlYWN0
QmFzZUNsYXNzZXMuanNcbiAqKiBtb2R1bGUgaWQgPSA4OVxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFu
dCcpO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93
bmVyJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtc
bnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiBp
c05hdGl2ZShmbikge1xuICAvLyBCYXNlZCBvbiBpc05hdGl2ZSgpIGZyb20gTG9kYXNoXG4gIHZh
ciBmdW5jVG9TdHJpbmcgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7XG4gIHZhciBoYXNP
d25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG4gIHZhciByZUlz
TmF0aXZlID0gUmVnRXhwKCdeJyArIGZ1bmNUb1N0cmluZ1xuICAvLyBUYWtlIGFuIGV4YW1wbGUg
bmF0aXZlIGZ1bmN0aW9uIHNvdXJjZSBmb3IgY29tcGFyaXNvblxuICAuY2FsbChoYXNPd25Qcm9w
ZXJ0eVxuICAvLyBTdHJpcCByZWdleCBjaGFyYWN0ZXJzIHNvIHdlIGNhbiB1c2UgaXQgZm9yIHJl
Z2V4XG4gICkucmVwbGFjZSgvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2csICdcXFxcJCYnXG4gIC8v
IFJlbW92ZSBoYXNPd25Qcm9wZXJ0eSBmcm9tIHRoZSB0ZW1wbGF0ZSB0byBtYWtlIGl0IGdlbmVy
aWNcbiAgKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8
IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJyk7XG4gIHRyeSB7XG4gICAgdmFy
IHNvdXJjZSA9IGZ1bmNUb1N0cmluZy5jYWxsKGZuKTtcbiAgICByZXR1cm4gcmVJc05hdGl2ZS50
ZXN0KHNvdXJjZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxu
fVxuXG52YXIgY2FuVXNlQ29sbGVjdGlvbnMgPVxuLy8gQXJyYXkuZnJvbVxudHlwZW9mIEFycmF5
LmZyb20gPT09ICdmdW5jdGlvbicgJiZcbi8vIE1hcFxudHlwZW9mIE1hcCA9PT0gJ2Z1bmN0aW9u
JyAmJiBpc05hdGl2ZShNYXApICYmXG4vLyBNYXAucHJvdG90eXBlLmtleXNcbk1hcC5wcm90b3R5
cGUgIT0gbnVsbCAmJiB0eXBlb2YgTWFwLnByb3RvdHlwZS5rZXlzID09PSAnZnVuY3Rpb24nICYm
IGlzTmF0aXZlKE1hcC5wcm90b3R5cGUua2V5cykgJiZcbi8vIFNldFxudHlwZW9mIFNldCA9PT0g
J2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShTZXQpICYmXG4vLyBTZXQucHJvdG90eXBlLmtleXNcblNl
dC5wcm90b3R5cGUgIT0gbnVsbCAmJiB0eXBlb2YgU2V0LnByb3RvdHlwZS5rZXlzID09PSAnZnVu
Y3Rpb24nICYmIGlzTmF0aXZlKFNldC5wcm90b3R5cGUua2V5cyk7XG5cbnZhciBzZXRJdGVtO1xu
dmFyIGdldEl0ZW07XG52YXIgcmVtb3ZlSXRlbTtcbnZhciBnZXRJdGVtSURzO1xudmFyIGFkZFJv
b3Q7XG52YXIgcmVtb3ZlUm9vdDtcbnZhciBnZXRSb290SURzO1xuXG5pZiAoY2FuVXNlQ29sbGVj
dGlvbnMpIHtcbiAgdmFyIGl0ZW1NYXAgPSBuZXcgTWFwKCk7XG4gIHZhciByb290SURTZXQgPSBu
ZXcgU2V0KCk7XG5cbiAgc2V0SXRlbSA9IGZ1bmN0aW9uIChpZCwgaXRlbSkge1xuICAgIGl0ZW1N
YXAuc2V0KGlkLCBpdGVtKTtcbiAgfTtcbiAgZ2V0SXRlbSA9IGZ1bmN0aW9uIChpZCkge1xuICAg
IHJldHVybiBpdGVtTWFwLmdldChpZCk7XG4gIH07XG4gIHJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAo
aWQpIHtcbiAgICBpdGVtTWFwWydkZWxldGUnXShpZCk7XG4gIH07XG4gIGdldEl0ZW1JRHMgPSBm
dW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oaXRlbU1hcC5rZXlzKCkpO1xuICB9
O1xuXG4gIGFkZFJvb3QgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICByb290SURTZXQuYWRkKGlkKTtc
biAgfTtcbiAgcmVtb3ZlUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHJvb3RJRFNldFsnZGVs
ZXRlJ10oaWQpO1xuICB9O1xuICBnZXRSb290SURzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVy
biBBcnJheS5mcm9tKHJvb3RJRFNldC5rZXlzKCkpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIGl0
ZW1CeUtleSA9IHt9O1xuICB2YXIgcm9vdEJ5S2V5ID0ge307XG5cbiAgLy8gVXNlIG5vbi1udW1l
cmljIGtleXMgdG8gcHJldmVudCBWOCBwZXJmb3JtYW5jZSBpc3N1ZXM6XG4gIC8vIGh0dHBzOi8v
Z2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcyMzJcbiAgdmFyIGdldEtleUZyb21JRCA9
IGZ1bmN0aW9uIChpZCkge1xuICAgIHJldHVybiAnLicgKyBpZDtcbiAgfTtcbiAgdmFyIGdldElE
RnJvbUtleSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gcGFyc2VJbnQoa2V5LnN1YnN0
cigxKSwgMTApO1xuICB9O1xuXG4gIHNldEl0ZW0gPSBmdW5jdGlvbiAoaWQsIGl0ZW0pIHtcbiAg
ICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcbiAgICBpdGVtQnlLZXlba2V5XSA9IGl0ZW07
XG4gIH07XG4gIGdldEl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIga2V5ID0gZ2V0S2V5
RnJvbUlEKGlkKTtcbiAgICByZXR1cm4gaXRlbUJ5S2V5W2tleV07XG4gIH07XG4gIHJlbW92ZUl0
ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcbiAg
ICBkZWxldGUgaXRlbUJ5S2V5W2tleV07XG4gIH07XG4gIGdldEl0ZW1JRHMgPSBmdW5jdGlvbiAo
KSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGl0ZW1CeUtleSkubWFwKGdldElERnJvbUtleSk7
XG4gIH07XG5cbiAgYWRkUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBrZXkgPSBnZXRL
ZXlGcm9tSUQoaWQpO1xuICAgIHJvb3RCeUtleVtrZXldID0gdHJ1ZTtcbiAgfTtcbiAgcmVtb3Zl
Um9vdCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xu
ICAgIGRlbGV0ZSByb290QnlLZXlba2V5XTtcbiAgfTtcbiAgZ2V0Um9vdElEcyA9IGZ1bmN0aW9u
ICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMocm9vdEJ5S2V5KS5tYXAoZ2V0SURGcm9tS2V5
KTtcbiAgfTtcbn1cblxudmFyIHVubW91bnRlZElEcyA9IFtdO1xuXG5mdW5jdGlvbiBwdXJnZURl
ZXAoaWQpIHtcbiAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgaWYgKGl0ZW0pIHtcbiAgICB2
YXIgY2hpbGRJRHMgPSBpdGVtLmNoaWxkSURzO1xuXG4gICAgcmVtb3ZlSXRlbShpZCk7XG4gICAg
Y2hpbGRJRHMuZm9yRWFjaChwdXJnZURlZXApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJl
Q29tcG9uZW50RnJhbWUobmFtZSwgc291cmNlLCBvd25lck5hbWUpIHtcbiAgcmV0dXJuICdcXG4g
ICAgaW4gJyArIChuYW1lIHx8ICdVbmtub3duJykgKyAoc291cmNlID8gJyAoYXQgJyArIHNvdXJj
ZS5maWxlTmFtZS5yZXBsYWNlKC9eLipbXFxcXFxcL10vLCAnJykgKyAnOicgKyBzb3VyY2UubGlu
ZU51bWJlciArICcpJyA6IG93bmVyTmFtZSA/ICcgKGNyZWF0ZWQgYnkgJyArIG93bmVyTmFtZSAr
ICcpJyA6ICcnKTtcbn1cblxuZnVuY3Rpb24gZ2V0RGlzcGxheU5hbWUoZWxlbWVudCkge1xuICBp
ZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuICcjZW1wdHknO1xuICB9IGVsc2UgaWYg
KHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgZWxlbWVudCA9PT0gJ251bWJl
cicpIHtcbiAgICByZXR1cm4gJyN0ZXh0JztcbiAgfSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudC50
eXBlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBlbGVtZW50LnR5cGU7XG4gIH0gZWxzZSB7
XG4gICAgcmV0dXJuIGVsZW1lbnQudHlwZS5kaXNwbGF5TmFtZSB8fCBlbGVtZW50LnR5cGUubmFt
ZSB8fCAnVW5rbm93bic7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVJRChpZCkge1xuICB2
YXIgbmFtZSA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUoaWQpO1xuICB2
YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG4gIHZh
ciBvd25lcklEID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRPd25lcklEKGlkKTtcbiAgdmFy
IG93bmVyTmFtZTtcbiAgaWYgKG93bmVySUQpIHtcbiAgICBvd25lck5hbWUgPSBSZWFjdENvbXBv
bmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKG93bmVySUQpO1xuICB9XG4gIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGVsZW1lbnQsICdSZWFjdENvbXBv
bmVudFRyZWVIb29rOiBNaXNzaW5nIFJlYWN0IGVsZW1lbnQgZm9yIGRlYnVnSUQgJXMgd2hlbiAn
ICsgJ2J1aWxkaW5nIHN0YWNrJywgaWQpIDogdm9pZCAwO1xuICByZXR1cm4gZGVzY3JpYmVDb21w
b25lbnRGcmFtZShuYW1lLCBlbGVtZW50ICYmIGVsZW1lbnQuX3NvdXJjZSwgb3duZXJOYW1lKTtc
bn1cblxudmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSB7XG4gIG9uU2V0Q2hpbGRyZW46IGZ1
bmN0aW9uIChpZCwgbmV4dENoaWxkSURzKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtc
biAgICAhaXRlbSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICdJdGVtIG11c3QgaGF2ZSBiZWVuIHNldCcpIDogX3Byb2RJbnZhcmlhbnQo
JzE0NCcpIDogdm9pZCAwO1xuICAgIGl0ZW0uY2hpbGRJRHMgPSBuZXh0Q2hpbGRJRHM7XG5cbiAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG5leHRDaGlsZElEcy5sZW5ndGg7IGkrKykge1xuICAgICAg
dmFyIG5leHRDaGlsZElEID0gbmV4dENoaWxkSURzW2ldO1xuICAgICAgdmFyIG5leHRDaGlsZCA9
IGdldEl0ZW0obmV4dENoaWxkSUQpO1xuICAgICAgIW5leHRDaGlsZCA/IHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBob29r
IGV2ZW50cyB0byBmaXJlIGZvciB0aGUgY2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMg
aXQgaW4gb25TZXRDaGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MCcpIDogdm9pZCAw
O1xuICAgICAgIShuZXh0Q2hpbGQuY2hpbGRJRHMgIT0gbnVsbCB8fCB0eXBlb2YgbmV4dENoaWxk
LmVsZW1lbnQgIT09ICdvYmplY3QnIHx8IG5leHRDaGlsZC5lbGVtZW50ID09IG51bGwpID8gcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4
cGVjdGVkIG9uU2V0Q2hpbGRyZW4oKSB0byBmaXJlIGZvciBhIGNvbnRhaW5lciBjaGlsZCBiZWZv
cmUgaXRzIHBhcmVudCBpbmNsdWRlcyBpdCBpbiBvblNldENoaWxkcmVuKCkuJykgOiBfcHJvZElu
dmFyaWFudCgnMTQxJykgOiB2b2lkIDA7XG4gICAgICAhbmV4dENoaWxkLmlzTW91bnRlZCA/IHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdF
eHBlY3RlZCBvbk1vdW50Q29tcG9uZW50KCkgdG8gZmlyZSBmb3IgdGhlIGNoaWxkIGJlZm9yZSBp
dHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4nKSA6IF9wcm9kSW52YXJp
YW50KCc3MScpIDogdm9pZCAwO1xuICAgICAgaWYgKG5leHRDaGlsZC5wYXJlbnRJRCA9PSBudWxs
KSB7XG4gICAgICAgIG5leHRDaGlsZC5wYXJlbnRJRCA9IGlkO1xuICAgICAgICAvLyBUT0RPOiBU
aGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnkgYnV0IG1vdW50aW5nIGEgbmV3IHJvb3QgZHVyaW5n
IGluXG4gICAgICAgIC8vIGNvbXBvbmVudFdpbGxNb3VudCBjdXJyZW50bHkgY2F1c2VzIG5vdC15
ZXQtbW91bnRlZCBjb21wb25lbnRzIHRvXG4gICAgICAgIC8vIGJlIHB1cmdlZCBmcm9tIG91ciB0
cmVlIGRhdGEgc28gdGhlaXIgcGFyZW50IGlkIGlzIG1pc3NpbmcuXG4gICAgICB9XG4gICAgICAh
KG5leHRDaGlsZC5wYXJlbnRJRCA9PT0gaWQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIG9uQmVmb3JlTW91bnRDb21w
b25lbnQoKSBwYXJlbnQgYW5kIG9uU2V0Q2hpbGRyZW4oKSB0byBiZSBjb25zaXN0ZW50ICglcyBo
YXMgcGFyZW50cyAlcyBhbmQgJXMpLicsIG5leHRDaGlsZElELCBuZXh0Q2hpbGQucGFyZW50SUQs
IGlkKSA6IF9wcm9kSW52YXJpYW50KCcxNDInLCBuZXh0Q2hpbGRJRCwgbmV4dENoaWxkLnBhcmVu
dElELCBpZCkgOiB2b2lkIDA7XG4gICAgfVxuICB9LFxuICBvbkJlZm9yZU1vdW50Q29tcG9uZW50
OiBmdW5jdGlvbiAoaWQsIGVsZW1lbnQsIHBhcmVudElEKSB7XG4gICAgdmFyIGl0ZW0gPSB7XG4g
ICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgcGFyZW50SUQ6IHBhcmVudElELFxuICAgICAg
dGV4dDogbnVsbCxcbiAgICAgIGNoaWxkSURzOiBbXSxcbiAgICAgIGlzTW91bnRlZDogZmFsc2Us
XG4gICAgICB1cGRhdGVDb3VudDogMFxuICAgIH07XG4gICAgc2V0SXRlbShpZCwgaXRlbSk7XG4g
IH0sXG4gIG9uQmVmb3JlVXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoaWQsIGVsZW1lbnQpIHtc
biAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIGlmICghaXRlbSB8fCAhaXRlbS5pc01v
dW50ZWQpIHtcbiAgICAgIC8vIFdlIG1heSBlbmQgdXAgaGVyZSBhcyBhIHJlc3VsdCBvZiBzZXRT
dGF0ZSgpIGluIGNvbXBvbmVudFdpbGxVbm1vdW50KCkuXG4gICAgICAvLyBJbiB0aGlzIGNhc2Us
IGlnbm9yZSB0aGUgZWxlbWVudC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXRlbS5lbGVt
ZW50ID0gZWxlbWVudDtcbiAgfSxcbiAgb25Nb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGlkKSB7
XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICAhaXRlbSA/IHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdJdGVtIG11c3QgaGF2
ZSBiZWVuIHNldCcpIDogX3Byb2RJbnZhcmlhbnQoJzE0NCcpIDogdm9pZCAwO1xuICAgIGl0ZW0u
aXNNb3VudGVkID0gdHJ1ZTtcbiAgICB2YXIgaXNSb290ID0gaXRlbS5wYXJlbnRJRCA9PT0gMDtc
biAgICBpZiAoaXNSb290KSB7XG4gICAgICBhZGRSb290KGlkKTtcbiAgICB9XG4gIH0sXG4gIG9u
VXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0o
aWQpO1xuICAgIGlmICghaXRlbSB8fCAhaXRlbS5pc01vdW50ZWQpIHtcbiAgICAgIC8vIFdlIG1h
eSBlbmQgdXAgaGVyZSBhcyBhIHJlc3VsdCBvZiBzZXRTdGF0ZSgpIGluIGNvbXBvbmVudFdpbGxV
bm1vdW50KCkuXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIGlnbm9yZSB0aGUgZWxlbWVudC5cbiAg
ICAgIHJldHVybjtcbiAgICB9XG4gICAgaXRlbS51cGRhdGVDb3VudCsrO1xuICB9LFxuICBvblVu
bW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShp
ZCk7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaWYgaXQgZXhp
c3RzLlxuICAgICAgLy8gYGl0ZW1gIG1pZ2h0IG5vdCBleGlzdCBpZiBpdCBpcyBpbnNpZGUgYW4g
ZXJyb3IgYm91bmRhcnksIGFuZCBhIHNpYmxpbmdcbiAgICAgIC8vIGVycm9yIGJvdW5kYXJ5IGNo
aWxkIHRocmV3IHdoaWxlIG1vdW50aW5nLiBUaGVuIHRoaXMgaW5zdGFuY2UgbmV2ZXJcbiAgICAg
IC8vIGdvdCBhIGNoYW5jZSB0byBtb3VudCwgYnV0IGl0IHN0aWxsIGdldHMgYW4gdW5tb3VudGlu
ZyBldmVudCBkdXJpbmdcbiAgICAgIC8vIHRoZSBlcnJvciBib3VuZGFyeSBjbGVhbnVwLlxuICAg
ICAgaXRlbS5pc01vdW50ZWQgPSBmYWxzZTtcbiAgICAgIHZhciBpc1Jvb3QgPSBpdGVtLnBhcmVu
dElEID09PSAwO1xuICAgICAgaWYgKGlzUm9vdCkge1xuICAgICAgICByZW1vdmVSb290KGlkKTtc
biAgICAgIH1cbiAgICB9XG4gICAgdW5tb3VudGVkSURzLnB1c2goaWQpO1xuICB9LFxuICBwdXJn
ZVVubW91bnRlZENvbXBvbmVudHM6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoUmVhY3RDb21wb25l
bnRUcmVlSG9vay5fcHJldmVudFB1cmdpbmcpIHtcbiAgICAgIC8vIFNob3VsZCBvbmx5IGJlIHVz
ZWQgZm9yIHRlc3RpbmcuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB1bm1vdW50ZWRJRHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZCA9IHVubW91
bnRlZElEc1tpXTtcbiAgICAgIHB1cmdlRGVlcChpZCk7XG4gICAgfVxuICAgIHVubW91bnRlZElE
cy5sZW5ndGggPSAwO1xuICB9LFxuICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZh
ciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLmlzTW91bnRlZCA6
IGZhbHNlO1xuICB9LFxuICBnZXRDdXJyZW50U3RhY2tBZGRlbmR1bTogZnVuY3Rpb24gKHRvcEVs
ZW1lbnQpIHtcbiAgICB2YXIgaW5mbyA9ICcnO1xuICAgIGlmICh0b3BFbGVtZW50KSB7XG4gICAg
ICB2YXIgbmFtZSA9IGdldERpc3BsYXlOYW1lKHRvcEVsZW1lbnQpO1xuICAgICAgdmFyIG93bmVy
ID0gdG9wRWxlbWVudC5fb3duZXI7XG4gICAgICBpbmZvICs9IGRlc2NyaWJlQ29tcG9uZW50RnJh
bWUobmFtZSwgdG9wRWxlbWVudC5fc291cmNlLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkpO1xu
ICAgIH1cblxuICAgIHZhciBjdXJyZW50T3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
O1xuICAgIHZhciBpZCA9IGN1cnJlbnRPd25lciAmJiBjdXJyZW50T3duZXIuX2RlYnVnSUQ7XG5c
biAgICBpbmZvICs9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQo
aWQpO1xuICAgIHJldHVybiBpbmZvO1xuICB9LFxuICBnZXRTdGFja0FkZGVuZHVtQnlJRDogZnVu
Y3Rpb24gKGlkKSB7XG4gICAgdmFyIGluZm8gPSAnJztcbiAgICB3aGlsZSAoaWQpIHtcbiAgICAg
IGluZm8gKz0gZGVzY3JpYmVJRChpZCk7XG4gICAgICBpZCA9IFJlYWN0Q29tcG9uZW50VHJlZUhv
b2suZ2V0UGFyZW50SUQoaWQpO1xuICAgIH1cbiAgICByZXR1cm4gaW5mbztcbiAgfSxcbiAgZ2V0
Q2hpbGRJRHM6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4g
ICAgcmV0dXJuIGl0ZW0gPyBpdGVtLmNoaWxkSURzIDogW107XG4gIH0sXG4gIGdldERpc3BsYXlO
YW1lOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50VHJl
ZUhvb2suZ2V0RWxlbWVudChpZCk7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm4g
bnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGdldERpc3BsYXlOYW1lKGVsZW1lbnQpO1xuICB9LFxu
ICBnZXRFbGVtZW50OiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQp
O1xuICAgIHJldHVybiBpdGVtID8gaXRlbS5lbGVtZW50IDogbnVsbDtcbiAgfSxcbiAgZ2V0T3du
ZXJJRDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRy
ZWVIb29rLmdldEVsZW1lbnQoaWQpO1xuICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC5fb3du
ZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudC5fb3du
ZXIuX2RlYnVnSUQ7XG4gIH0sXG4gIGdldFBhcmVudElEOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2
YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIHJldHVybiBpdGVtID8gaXRlbS5wYXJlbnRJRCA6
IG51bGw7XG4gIH0sXG4gIGdldFNvdXJjZTogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGl0ZW0g
PSBnZXRJdGVtKGlkKTtcbiAgICB2YXIgZWxlbWVudCA9IGl0ZW0gPyBpdGVtLmVsZW1lbnQgOiBu
dWxsO1xuICAgIHZhciBzb3VyY2UgPSBlbGVtZW50ICE9IG51bGwgPyBlbGVtZW50Ll9zb3VyY2Ug
OiBudWxsO1xuICAgIHJldHVybiBzb3VyY2U7XG4gIH0sXG4gIGdldFRleHQ6IGZ1bmN0aW9uIChp
ZCkge1xuICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50
KGlkKTtcbiAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1
cm4gZWxlbWVudDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnbnVtYmVyJykg
e1xuICAgICAgcmV0dXJuICcnICsgZWxlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJu
IG51bGw7XG4gICAgfVxuICB9LFxuICBnZXRVcGRhdGVDb3VudDogZnVuY3Rpb24gKGlkKSB7XG4g
ICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0udXBkYXRl
Q291bnQgOiAwO1xuICB9LFxuXG5cbiAgZ2V0Um9vdElEczogZ2V0Um9vdElEcyxcbiAgZ2V0UmVn
aXN0ZXJlZElEczogZ2V0SXRlbUlEcyxcblxuICBwdXNoTm9uU3RhbmRhcmRXYXJuaW5nU3RhY2s6
IGZ1bmN0aW9uIChpc0NyZWF0aW5nRWxlbWVudCwgY3VycmVudFNvdXJjZSkge1xuICAgIGlmICh0
eXBlb2YgY29uc29sZS5yZWFjdFN0YWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm47
XG4gICAgfVxuXG4gICAgdmFyIHN0YWNrID0gW107XG4gICAgdmFyIGN1cnJlbnRPd25lciA9IFJl
YWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG4gICAgdmFyIGlkID0gY3VycmVudE93bmVyICYmIGN1
cnJlbnRPd25lci5fZGVidWdJRDtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoaXNDcmVhdGluZ0Vs
ZW1lbnQpIHtcbiAgICAgICAgc3RhY2sucHVzaCh7XG4gICAgICAgICAgbmFtZTogaWQgPyBSZWFj
dENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKGlkKSA6IG51bGwsXG4gICAgICAgICAg
ZmlsZU5hbWU6IGN1cnJlbnRTb3VyY2UgPyBjdXJyZW50U291cmNlLmZpbGVOYW1lIDogbnVsbCxc
biAgICAgICAgICBsaW5lTnVtYmVyOiBjdXJyZW50U291cmNlID8gY3VycmVudFNvdXJjZS5saW5l
TnVtYmVyIDogbnVsbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKGlkKSB7
XG4gICAgICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50
KGlkKTtcbiAgICAgICAgdmFyIHBhcmVudElEID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRQ
YXJlbnRJRChpZCk7XG4gICAgICAgIHZhciBvd25lcklEID0gUmVhY3RDb21wb25lbnRUcmVlSG9v
ay5nZXRPd25lcklEKGlkKTtcbiAgICAgICAgdmFyIG93bmVyTmFtZSA9IG93bmVySUQgPyBSZWFj
dENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKG93bmVySUQpIDogbnVsbDtcbiAgICAg
ICAgdmFyIHNvdXJjZSA9IGVsZW1lbnQgJiYgZWxlbWVudC5fc291cmNlO1xuICAgICAgICBzdGFj
ay5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBvd25lck5hbWUsXG4gICAgICAgICAgZmlsZU5hbWU6
IHNvdXJjZSA/IHNvdXJjZS5maWxlTmFtZSA6IG51bGwsXG4gICAgICAgICAgbGluZU51bWJlcjog
c291cmNlID8gc291cmNlLmxpbmVOdW1iZXIgOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgICBp
ZCA9IHBhcmVudElEO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gSW50
ZXJuYWwgc3RhdGUgaXMgbWVzc2VkIHVwLlxuICAgICAgLy8gU3RvcCBidWlsZGluZyB0aGUgc3Rh
Y2sgKGl0J3MganVzdCBhIG5pY2UgdG8gaGF2ZSkuXG4gICAgfVxuXG4gICAgY29uc29sZS5yZWFj
dFN0YWNrKHN0YWNrKTtcbiAgfSxcbiAgcG9wTm9uU3RhbmRhcmRXYXJuaW5nU3RhY2s6IGZ1bmN0
aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUucmVhY3RTdGFja0VuZCAhPT0gJ2Z1bmN0
aW9uJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLnJlYWN0U3RhY2tFbmQo
KTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rO1xu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0
L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rLmpzXG4gKiogbW9kdWxlIGlkID0gOTBcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVh
Y3RFbGVtZW50IHR5cGUuIElmIHRoZXJlIGlzIG5vIG5hdGl2ZSBTeW1ib2xcbi8vIG5vciBwb2x5
ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZvciBwZXJmb3JtYW5jZS5cblxudmFy
IFJFQUNUX0VMRU1FTlRfVFlQRSA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3lt
Ym9sWydmb3InXSAmJiBTeW1ib2xbJ2ZvciddKCdyZWFjdC5lbGVtZW50JykgfHwgMHhlYWM3O1xu
XG5tb2R1bGUuZXhwb3J0cyA9IFJFQUNUX0VMRU1FTlRfVFlQRTtcblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC9saWIvUmVhY3RFbGVtZW50
U3ltYm9sLmpzXG4gKiogbW9kdWxlIGlkID0gOTFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZh
ciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiB3YXJu
Tm9vcChwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IHB1YmxpY0lu
c3RhbmNlLmNvbnN0cnVjdG9yO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRl
ZCBvciBtb3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxs
ZWQgJXMoKSBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50LiAnICsgJ1RoaXMgaXMgYSBuby1vcC4g
UGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUs
IGNhbGxlck5hbWUsIGNvbnN0cnVjdG9yICYmIChjb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCBj
b25zdHJ1Y3Rvci5uYW1lKSB8fCAnUmVhY3RDbGFzcycpIDogdm9pZCAwO1xuICB9XG59XG5cbi8q
KlxuICogVGhpcyBpcyB0aGUgYWJzdHJhY3QgQVBJIGZvciBhbiB1cGRhdGUgcXVldWUuXG4gKi9c
bnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHtcbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVy
IG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cbiAgICogQHBhcmFt
IHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ugd2FudCB0byB0ZXN0
LlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lz
ZS5cbiAgICogQHByb3RlY3RlZFxuICAgKiBAZmluYWxcbiAgICovXG4gIGlzTW91bnRlZDogZnVu
Y3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuXG4gIC8q
KlxuICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFs
bCB0aGUgcGVuZGluZyB1cGRhdGVzXG4gICAqIGhhdmUgcHJvY2Vzc2VkLlxuICAgKlxuICAgKiBA
cGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0byB1c2UgYXMg
YHRoaXNgIGNvbnRleHQuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQg
YWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVl
Q2FsbGJhY2s6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2spIHt9LFxuXG4gIC8q
KlxuICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hl
biBpdCBpcyBrbm93biB3aXRoXG4gICAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGlu
IGEgRE9NIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlz
IHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gICAqIGNvbXBv
bmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxu
ICAgKlxuICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwg
YnV0IGl0IHdpbGwgaW52b2tlXG4gICAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBv
bmVudERpZFVwZGF0ZWAuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5z
dGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAaW50ZXJuYWxc
biAgICovXG4gIGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7
XG4gICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpO1xuICB9LFxuXG4g
IC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3Ig
YHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuXG4gICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMu
c3RhdGVgIGFzIGltbXV0YWJsZS5cbiAgICpcbiAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRo
YXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cbiAgICogYWNj
ZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4g
dGhlIG9sZCB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0
YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2Jq
ZWN0fSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAg
ZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0
YXRlKSB7XG4gICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUnKTtcbiAg
fSxcblxuICAvKipcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBl
eGlzdHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzXG4gICAqIGludGVybmFsLiBUaGlzIHByb3Zp
ZGVzIGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcFxuICAg
KiBwcm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0
ZSBvciBkb24ndCB1c2UgaXRcbiAgICogZHVyaW5nIHRoZSBtZXJnZS5cbiAgICpcbiAgICogQHBh
cmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQg
cmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFs
IHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4g
IGVucXVldWVTZXRTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUp
IHtcbiAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3NldFN0YXRlJyk7XG4gIH1cbn07XG5c
bm1vZHVsZS5leHBvcnRzID0gUmVhY3ROb29wVXBkYXRlUXVldWU7XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QvbGliL1JlYWN0Tm9vcFVw
ZGF0ZVF1ZXVlLmpzXG4gKiogbW9kdWxlIGlkID0gOTJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0
JztcblxudmFyIGNhbkRlZmluZVByb3BlcnR5ID0gZmFsc2U7XG5pZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB0cnkge1xuICAgIC8vICRGbG93Rml4TWUgaHR0
cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzI4NVxuICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh7fSwgJ3gnLCB7IGdldDogZnVuY3Rpb24gKCkge30gfSk7XG4gICAgY2FuRGVm
aW5lUHJvcGVydHkgPSB0cnVlO1xuICB9IGNhdGNoICh4KSB7XG4gICAgLy8gSUUgd2lsbCBmYWls
IG9uIGRlZmluZVByb3BlcnR5XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYW5EZWZpbmVQ
cm9wZXJ0eTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC9saWIvY2FuRGVmaW5lUHJvcGVydHkuanNcbiAqKiBtb2R1bGUgaWQgPSA5M1xu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMu
X19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IGNvbXBvc2U7XG4vKipc
biAqIENvbXBvc2VzIHNpbmdsZS1hcmd1bWVudCBmdW5jdGlvbnMgZnJvbSByaWdodCB0byBsZWZ0
LiBUaGUgcmlnaHRtb3N0XG4gKiBmdW5jdGlvbiBjYW4gdGFrZSBtdWx0aXBsZSBhcmd1bWVudHMg
YXMgaXQgcHJvdmlkZXMgdGhlIHNpZ25hdHVyZSBmb3JcbiAqIHRoZSByZXN1bHRpbmcgY29tcG9z
aXRlIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7Li4uRnVuY3Rpb259IGZ1bmNzIFRoZSBmdW5j
dGlvbnMgdG8gY29tcG9zZS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBmdW5jdGlvbiBvYnRh
aW5lZCBieSBjb21wb3NpbmcgdGhlIGFyZ3VtZW50IGZ1bmN0aW9uc1xuICogZnJvbSByaWdodCB0
byBsZWZ0LiBGb3IgZXhhbXBsZSwgY29tcG9zZShmLCBnLCBoKSBpcyBpZGVudGljYWwgdG8gZG9p
bmdcbiAqICguLi5hcmdzKSA9PiBmKGcoaCguLi5hcmdzKSkpLlxuICovXG5cbmZ1bmN0aW9uIGNv
bXBvc2UoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBmdW5jcyA9IEFy
cmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGZ1bmNzW19r
ZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgaWYgKGZ1bmNzLmxlbmd0aCA9PT0gMCkg
e1xuICAgIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgICByZXR1cm4gYXJnO1xuICAgIH07
XG4gIH1cblxuICBpZiAoZnVuY3MubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIGZ1bmNzWzBd
O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmNzLnJlZHVjZShmdW5jdGlvbiAoYSwgYikge1xuICAgIHJl
dHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYShiLmFwcGx5KHVuZGVmaW5lZCwgYXJn
dW1lbnRzKSk7XG4gICAgfTtcbiAgfSk7XG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVkdXgvbGliL2NvbXBvc2UuanNcbiAqKiBtb2R1bGUg
aWQgPSA5NFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5l
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5BY3Rpb25UeXBlcyA9IHVuZGVmaW5l
ZDtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGNyZWF0ZVN0b3JlO1xuXG52YXIgX2lzUGxhaW5PYmpl
Y3QgPSByZXF1aXJlKCdsb2Rhc2gvaXNQbGFpbk9iamVjdCcpO1xuXG52YXIgX2lzUGxhaW5PYmpl
Y3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNQbGFpbk9iamVjdCk7XG5cbnZhciBfc3lt
Ym9sT2JzZXJ2YWJsZSA9IHJlcXVpcmUoJ3N5bWJvbC1vYnNlcnZhYmxlJyk7XG5cbnZhciBfc3lt
Ym9sT2JzZXJ2YWJsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zeW1ib2xPYnNlcnZhYmxl
KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAm
JiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG4vKipcbiAq
IFRoZXNlIGFyZSBwcml2YXRlIGFjdGlvbiB0eXBlcyByZXNlcnZlZCBieSBSZWR1eC5cbiAqIEZv
ciBhbnkgdW5rbm93biBhY3Rpb25zLCB5b3UgbXVzdCByZXR1cm4gdGhlIGN1cnJlbnQgc3RhdGUu
XG4gKiBJZiB0aGUgY3VycmVudCBzdGF0ZSBpcyB1bmRlZmluZWQsIHlvdSBtdXN0IHJldHVybiB0
aGUgaW5pdGlhbCBzdGF0ZS5cbiAqIERvIG5vdCByZWZlcmVuY2UgdGhlc2UgYWN0aW9uIHR5cGVz
IGRpcmVjdGx5IGluIHlvdXIgY29kZS5cbiAqL1xudmFyIEFjdGlvblR5cGVzID0gZXhwb3J0cy5B
Y3Rpb25UeXBlcyA9IHtcbiAgSU5JVDogJ0BAcmVkdXgvSU5JVCdcblxuICAvKipcbiAgICogQ3Jl
YXRlcyBhIFJlZHV4IHN0b3JlIHRoYXQgaG9sZHMgdGhlIHN0YXRlIHRyZWUuXG4gICAqIFRoZSBv
bmx5IHdheSB0byBjaGFuZ2UgdGhlIGRhdGEgaW4gdGhlIHN0b3JlIGlzIHRvIGNhbGwgYGRpc3Bh
dGNoKClgIG9uIGl0LlxuICAgKlxuICAgKiBUaGVyZSBzaG91bGQgb25seSBiZSBhIHNpbmdsZSBz
dG9yZSBpbiB5b3VyIGFwcC4gVG8gc3BlY2lmeSBob3cgZGlmZmVyZW50XG4gICAqIHBhcnRzIG9m
IHRoZSBzdGF0ZSB0cmVlIHJlc3BvbmQgdG8gYWN0aW9ucywgeW91IG1heSBjb21iaW5lIHNldmVy
YWwgcmVkdWNlcnNcbiAgICogaW50byBhIHNpbmdsZSByZWR1Y2VyIGZ1bmN0aW9uIGJ5IHVzaW5n
IGBjb21iaW5lUmVkdWNlcnNgLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWR1Y2Vy
IEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXh0IHN0YXRlIHRyZWUsIGdpdmVuXG4gICAq
IHRoZSBjdXJyZW50IHN0YXRlIHRyZWUgYW5kIHRoZSBhY3Rpb24gdG8gaGFuZGxlLlxuICAgKlxu
ICAgKiBAcGFyYW0ge2FueX0gW3ByZWxvYWRlZFN0YXRlXSBUaGUgaW5pdGlhbCBzdGF0ZS4gWW91
IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRcbiAgICogdG8gaHlkcmF0ZSB0aGUgc3RhdGUgZnJv
bSB0aGUgc2VydmVyIGluIHVuaXZlcnNhbCBhcHBzLCBvciB0byByZXN0b3JlIGFcbiAgICogcHJl
dmlvdXNseSBzZXJpYWxpemVkIHVzZXIgc2Vzc2lvbi5cbiAgICogSWYgeW91IHVzZSBgY29tYmlu
ZVJlZHVjZXJzYCB0byBwcm9kdWNlIHRoZSByb290IHJlZHVjZXIgZnVuY3Rpb24sIHRoaXMgbXVz
dCBiZVxuICAgKiBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzaGFwZSBhcyBgY29tYmluZVJlZHVj
ZXJzYCBrZXlzLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZW5oYW5jZXJdIFRoZSBz
dG9yZSBlbmhhbmNlci4gWW91IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRcbiAgICogdG8gZW5o
YW5jZSB0aGUgc3RvcmUgd2l0aCB0aGlyZC1wYXJ0eSBjYXBhYmlsaXRpZXMgc3VjaCBhcyBtaWRk
bGV3YXJlLFxuICAgKiB0aW1lIHRyYXZlbCwgcGVyc2lzdGVuY2UsIGV0Yy4gVGhlIG9ubHkgc3Rv
cmUgZW5oYW5jZXIgdGhhdCBzaGlwcyB3aXRoIFJlZHV4XG4gICAqIGlzIGBhcHBseU1pZGRsZXdh
cmUoKWAuXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdG9yZX0gQSBSZWR1eCBzdG9yZSB0aGF0IGxl
dHMgeW91IHJlYWQgdGhlIHN0YXRlLCBkaXNwYXRjaCBhY3Rpb25zXG4gICAqIGFuZCBzdWJzY3Jp
YmUgdG8gY2hhbmdlcy5cbiAgICovXG59O2Z1bmN0aW9uIGNyZWF0ZVN0b3JlKHJlZHVjZXIsIHBy
ZWxvYWRlZFN0YXRlLCBlbmhhbmNlcikge1xuICB2YXIgX3JlZjI7XG5cbiAgaWYgKHR5cGVvZiBw
cmVsb2FkZWRTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZW5oYW5jZXIgPT09ICd1bmRl
ZmluZWQnKSB7XG4gICAgZW5oYW5jZXIgPSBwcmVsb2FkZWRTdGF0ZTtcbiAgICBwcmVsb2FkZWRT
dGF0ZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZW5oYW5jZXIgIT09ICd1bmRl
ZmluZWQnKSB7XG4gICAgaWYgKHR5cGVvZiBlbmhhbmNlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB0aGUgZW5oYW5jZXIgdG8gYmUgYSBmdW5jdGlv
bi4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW5oYW5jZXIoY3JlYXRlU3RvcmUpKHJlZHVjZXIs
IHByZWxvYWRlZFN0YXRlKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVkdWNlciAhPT0gJ2Z1bmN0
aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgdGhlIHJlZHVjZXIgdG8gYmUg
YSBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIHZhciBjdXJyZW50UmVkdWNlciA9IHJlZHVjZXI7XG4g
IHZhciBjdXJyZW50U3RhdGUgPSBwcmVsb2FkZWRTdGF0ZTtcbiAgdmFyIGN1cnJlbnRMaXN0ZW5l
cnMgPSBbXTtcbiAgdmFyIG5leHRMaXN0ZW5lcnMgPSBjdXJyZW50TGlzdGVuZXJzO1xuICB2YXIg
aXNEaXNwYXRjaGluZyA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIGVuc3VyZUNhbk11dGF0ZU5leHRM
aXN0ZW5lcnMoKSB7XG4gICAgaWYgKG5leHRMaXN0ZW5lcnMgPT09IGN1cnJlbnRMaXN0ZW5lcnMp
IHtcbiAgICAgIG5leHRMaXN0ZW5lcnMgPSBjdXJyZW50TGlzdGVuZXJzLnNsaWNlKCk7XG4gICAg
fVxuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBzdGF0ZSB0cmVlIG1hbmFnZWQgYnkgdGhl
IHN0b3JlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7YW55fSBUaGUgY3VycmVudCBzdGF0ZSB0cmVl
IG9mIHlvdXIgYXBwbGljYXRpb24uXG4gICAqL1xuICBmdW5jdGlvbiBnZXRTdGF0ZSgpIHtcbiAg
ICByZXR1cm4gY3VycmVudFN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjaGFuZ2Ug
bGlzdGVuZXIuIEl0IHdpbGwgYmUgY2FsbGVkIGFueSB0aW1lIGFuIGFjdGlvbiBpcyBkaXNwYXRj
aGVkLFxuICAgKiBhbmQgc29tZSBwYXJ0IG9mIHRoZSBzdGF0ZSB0cmVlIG1heSBwb3RlbnRpYWxs
eSBoYXZlIGNoYW5nZWQuIFlvdSBtYXkgdGhlblxuICAgKiBjYWxsIGBnZXRTdGF0ZSgpYCB0byBy
ZWFkIHRoZSBjdXJyZW50IHN0YXRlIHRyZWUgaW5zaWRlIHRoZSBjYWxsYmFjay5cbiAgICpcbiAg
ICogWW91IG1heSBjYWxsIGBkaXNwYXRjaCgpYCBmcm9tIGEgY2hhbmdlIGxpc3RlbmVyLCB3aXRo
IHRoZSBmb2xsb3dpbmdcbiAgICogY2F2ZWF0czpcbiAgICpcbiAgICogMS4gVGhlIHN1YnNjcmlw
dGlvbnMgYXJlIHNuYXBzaG90dGVkIGp1c3QgYmVmb3JlIGV2ZXJ5IGBkaXNwYXRjaCgpYCBjYWxs
LlxuICAgKiBJZiB5b3Ugc3Vic2NyaWJlIG9yIHVuc3Vic2NyaWJlIHdoaWxlIHRoZSBsaXN0ZW5l
cnMgYXJlIGJlaW5nIGludm9rZWQsIHRoaXNcbiAgICogd2lsbCBub3QgaGF2ZSBhbnkgZWZmZWN0
IG9uIHRoZSBgZGlzcGF0Y2goKWAgdGhhdCBpcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MuXG4gICAq
IEhvd2V2ZXIsIHRoZSBuZXh0IGBkaXNwYXRjaCgpYCBjYWxsLCB3aGV0aGVyIG5lc3RlZCBvciBu
b3QsIHdpbGwgdXNlIGEgbW9yZVxuICAgKiByZWNlbnQgc25hcHNob3Qgb2YgdGhlIHN1YnNjcmlw
dGlvbiBsaXN0LlxuICAgKlxuICAgKiAyLiBUaGUgbGlzdGVuZXIgc2hvdWxkIG5vdCBleHBlY3Qg
dG8gc2VlIGFsbCBzdGF0ZSBjaGFuZ2VzLCBhcyB0aGUgc3RhdGVcbiAgICogbWlnaHQgaGF2ZSBi
ZWVuIHVwZGF0ZWQgbXVsdGlwbGUgdGltZXMgZHVyaW5nIGEgbmVzdGVkIGBkaXNwYXRjaCgpYCBi
ZWZvcmVcbiAgICogdGhlIGxpc3RlbmVyIGlzIGNhbGxlZC4gSXQgaXMsIGhvd2V2ZXIsIGd1YXJh
bnRlZWQgdGhhdCBhbGwgc3Vic2NyaWJlcnNcbiAgICogcmVnaXN0ZXJlZCBiZWZvcmUgdGhlIGBk
aXNwYXRjaCgpYCBzdGFydGVkIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGxhdGVzdFxuICAgKiBz
dGF0ZSBieSB0aGUgdGltZSBpdCBleGl0cy5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0g
bGlzdGVuZXIgQSBjYWxsYmFjayB0byBiZSBpbnZva2VkIG9uIGV2ZXJ5IGRpc3BhdGNoLlxuICAg
KiBAcmV0dXJucyB7RnVuY3Rpb259IEEgZnVuY3Rpb24gdG8gcmVtb3ZlIHRoaXMgY2hhbmdlIGxp
c3RlbmVyLlxuICAgKi9cbiAgZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYg
KHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9y
KCdFeHBlY3RlZCBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIHZh
ciBpc1N1YnNjcmliZWQgPSB0cnVlO1xuXG4gICAgZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3RlbmVy
cygpO1xuICAgIG5leHRMaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG5cbiAgICByZXR1cm4gZnVu
Y3Rpb24gdW5zdWJzY3JpYmUoKSB7XG4gICAgICBpZiAoIWlzU3Vic2NyaWJlZCkge1xuICAgICAg
ICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlzU3Vic2NyaWJlZCA9IGZhbHNlO1xuXG4gICAg
ICBlbnN1cmVDYW5NdXRhdGVOZXh0TGlzdGVuZXJzKCk7XG4gICAgICB2YXIgaW5kZXggPSBuZXh0
TGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuICAgICAgbmV4dExpc3RlbmVycy5zcGxpY2Uo
aW5kZXgsIDEpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2hlcyBhbiBhY3Rp
b24uIEl0IGlzIHRoZSBvbmx5IHdheSB0byB0cmlnZ2VyIGEgc3RhdGUgY2hhbmdlLlxuICAgKlxu
ICAgKiBUaGUgYHJlZHVjZXJgIGZ1bmN0aW9uLCB1c2VkIHRvIGNyZWF0ZSB0aGUgc3RvcmUsIHdp
bGwgYmUgY2FsbGVkIHdpdGggdGhlXG4gICAqIGN1cnJlbnQgc3RhdGUgdHJlZSBhbmQgdGhlIGdp
dmVuIGBhY3Rpb25gLiBJdHMgcmV0dXJuIHZhbHVlIHdpbGxcbiAgICogYmUgY29uc2lkZXJlZCB0
aGUgKipuZXh0Kiogc3RhdGUgb2YgdGhlIHRyZWUsIGFuZCB0aGUgY2hhbmdlIGxpc3RlbmVyc1xu
ICAgKiB3aWxsIGJlIG5vdGlmaWVkLlxuICAgKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlv
biBvbmx5IHN1cHBvcnRzIHBsYWluIG9iamVjdCBhY3Rpb25zLiBJZiB5b3Ugd2FudCB0b1xuICAg
KiBkaXNwYXRjaCBhIFByb21pc2UsIGFuIE9ic2VydmFibGUsIGEgdGh1bmssIG9yIHNvbWV0aGlu
ZyBlbHNlLCB5b3UgbmVlZCB0b1xuICAgKiB3cmFwIHlvdXIgc3RvcmUgY3JlYXRpbmcgZnVuY3Rp
b24gaW50byB0aGUgY29ycmVzcG9uZGluZyBtaWRkbGV3YXJlLiBGb3JcbiAgICogZXhhbXBsZSwg
c2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYHJlZHV4LXRodW5rYCBwYWNrYWdlLiBFdmVu
IHRoZVxuICAgKiBtaWRkbGV3YXJlIHdpbGwgZXZlbnR1YWxseSBkaXNwYXRjaCBwbGFpbiBvYmpl
Y3QgYWN0aW9ucyB1c2luZyB0aGlzIG1ldGhvZC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9
IGFjdGlvbiBBIHBsYWluIG9iamVjdCByZXByZXNlbnRpbmcg4oCcd2hhdCBjaGFuZ2Vk4oCdLiBJ
dCBpc1xuICAgKiBhIGdvb2QgaWRlYSB0byBrZWVwIGFjdGlvbnMgc2VyaWFsaXphYmxlIHNvIHlv
dSBjYW4gcmVjb3JkIGFuZCByZXBsYXkgdXNlclxuICAgKiBzZXNzaW9ucywgb3IgdXNlIHRoZSB0
aW1lIHRyYXZlbGxpbmcgYHJlZHV4LWRldnRvb2xzYC4gQW4gYWN0aW9uIG11c3QgaGF2ZVxuICAg
KiBhIGB0eXBlYCBwcm9wZXJ0eSB3aGljaCBtYXkgbm90IGJlIGB1bmRlZmluZWRgLiBJdCBpcyBh
IGdvb2QgaWRlYSB0byB1c2VcbiAgICogc3RyaW5nIGNvbnN0YW50cyBmb3IgYWN0aW9uIHR5cGVz
LlxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBGb3IgY29udmVuaWVuY2UsIHRoZSBzYW1l
IGFjdGlvbiBvYmplY3QgeW91IGRpc3BhdGNoZWQuXG4gICAqXG4gICAqIE5vdGUgdGhhdCwgaWYg
eW91IHVzZSBhIGN1c3RvbSBtaWRkbGV3YXJlLCBpdCBtYXkgd3JhcCBgZGlzcGF0Y2goKWAgdG9c
biAgICogcmV0dXJuIHNvbWV0aGluZyBlbHNlIChmb3IgZXhhbXBsZSwgYSBQcm9taXNlIHlvdSBj
YW4gYXdhaXQpLlxuICAgKi9cbiAgZnVuY3Rpb24gZGlzcGF0Y2goYWN0aW9uKSB7XG4gICAgaWYg
KCEoMCwgX2lzUGxhaW5PYmplY3QyWydkZWZhdWx0J10pKGFjdGlvbikpIHtcbiAgICAgIHRocm93
IG5ldyBFcnJvcignQWN0aW9ucyBtdXN0IGJlIHBsYWluIG9iamVjdHMuICcgKyAnVXNlIGN1c3Rv
bSBtaWRkbGV3YXJlIGZvciBhc3luYyBhY3Rpb25zLicpO1xuICAgIH1cblxuICAgIGlmICh0eXBl
b2YgYWN0aW9uLnR5cGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3Io
J0FjdGlvbnMgbWF5IG5vdCBoYXZlIGFuIHVuZGVmaW5lZCBcInR5cGVcIiBwcm9wZXJ0eS4gJyAr
ICdIYXZlIHlvdSBtaXNzcGVsbGVkIGEgY29uc3RhbnQ/Jyk7XG4gICAgfVxuXG4gICAgaWYgKGlz
RGlzcGF0Y2hpbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNlcnMgbWF5IG5vdCBk
aXNwYXRjaCBhY3Rpb25zLicpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBpc0Rpc3BhdGNo
aW5nID0gdHJ1ZTtcbiAgICAgIGN1cnJlbnRTdGF0ZSA9IGN1cnJlbnRSZWR1Y2VyKGN1cnJlbnRT
dGF0ZSwgYWN0aW9uKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaXNEaXNwYXRjaGluZyA9IGZh
bHNlO1xuICAgIH1cblxuICAgIHZhciBsaXN0ZW5lcnMgPSBjdXJyZW50TGlzdGVuZXJzID0gbmV4
dExpc3RlbmVycztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkr
Kykge1xuICAgICAgdmFyIGxpc3RlbmVyID0gbGlzdGVuZXJzW2ldO1xuICAgICAgbGlzdGVuZXIo
KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxh
Y2VzIHRoZSByZWR1Y2VyIGN1cnJlbnRseSB1c2VkIGJ5IHRoZSBzdG9yZSB0byBjYWxjdWxhdGUg
dGhlIHN0YXRlLlxuICAgKlxuICAgKiBZb3UgbWlnaHQgbmVlZCB0aGlzIGlmIHlvdXIgYXBwIGlt
cGxlbWVudHMgY29kZSBzcGxpdHRpbmcgYW5kIHlvdSB3YW50IHRvXG4gICAqIGxvYWQgc29tZSBv
ZiB0aGUgcmVkdWNlcnMgZHluYW1pY2FsbHkuIFlvdSBtaWdodCBhbHNvIG5lZWQgdGhpcyBpZiB5
b3VcbiAgICogaW1wbGVtZW50IGEgaG90IHJlbG9hZGluZyBtZWNoYW5pc20gZm9yIFJlZHV4Llxu
ICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBuZXh0UmVkdWNlciBUaGUgcmVkdWNlciBmb3Ig
dGhlIHN0b3JlIHRvIHVzZSBpbnN0ZWFkLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4g
IGZ1bmN0aW9uIHJlcGxhY2VSZWR1Y2VyKG5leHRSZWR1Y2VyKSB7XG4gICAgaWYgKHR5cGVvZiBu
ZXh0UmVkdWNlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBl
Y3RlZCB0aGUgbmV4dFJlZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9XG5cbiAgICBj
dXJyZW50UmVkdWNlciA9IG5leHRSZWR1Y2VyO1xuICAgIGRpc3BhdGNoKHsgdHlwZTogQWN0aW9u
VHlwZXMuSU5JVCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcm9wZXJhYmlsaXR5IHBvaW50
IGZvciBvYnNlcnZhYmxlL3JlYWN0aXZlIGxpYnJhcmllcy5cbiAgICogQHJldHVybnMge29ic2Vy
dmFibGV9IEEgbWluaW1hbCBvYnNlcnZhYmxlIG9mIHN0YXRlIGNoYW5nZXMuXG4gICAqIEZvciBt
b3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIG9ic2VydmFibGUgcHJvcG9zYWw6XG4gICAqIGh0dHBz
Oi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9ic2VydmFibGVcbiAgICovXG4gIGZ1bmN0aW9u
IG9ic2VydmFibGUoKSB7XG4gICAgdmFyIF9yZWY7XG5cbiAgICB2YXIgb3V0ZXJTdWJzY3JpYmUg
PSBzdWJzY3JpYmU7XG4gICAgcmV0dXJuIF9yZWYgPSB7XG4gICAgICAvKipcbiAgICAgICAqIFRo
ZSBtaW5pbWFsIG9ic2VydmFibGUgc3Vic2NyaXB0aW9uIG1ldGhvZC5cbiAgICAgICAqIEBwYXJh
bSB7T2JqZWN0fSBvYnNlcnZlciBBbnkgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgYXMgYW4gb2Jz
ZXJ2ZXIuXG4gICAgICAgKiBUaGUgb2JzZXJ2ZXIgb2JqZWN0IHNob3VsZCBoYXZlIGEgYG5leHRg
IG1ldGhvZC5cbiAgICAgICAqIEByZXR1cm5zIHtzdWJzY3JpcHRpb259IEFuIG9iamVjdCB3aXRo
IGFuIGB1bnN1YnNjcmliZWAgbWV0aG9kIHRoYXQgY2FuXG4gICAgICAgKiBiZSB1c2VkIHRvIHVu
c3Vic2NyaWJlIHRoZSBvYnNlcnZhYmxlIGZyb20gdGhlIHN0b3JlLCBhbmQgcHJldmVudCBmdXJ0
aGVyXG4gICAgICAgKiBlbWlzc2lvbiBvZiB2YWx1ZXMgZnJvbSB0aGUgb2JzZXJ2YWJsZS5cbiAg
ICAgICAqL1xuICAgICAgc3Vic2NyaWJlOiBmdW5jdGlvbiBzdWJzY3JpYmUob2JzZXJ2ZXIpIHtc
biAgICAgICAgaWYgKHR5cGVvZiBvYnNlcnZlciAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICB0
aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCB0aGUgb2JzZXJ2ZXIgdG8gYmUgYW4gb2JqZWN0
LicpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gb2JzZXJ2ZVN0YXRlKCkge1xuICAg
ICAgICAgIGlmIChvYnNlcnZlci5uZXh0KSB7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KGdl
dFN0YXRlKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG9ic2VydmVTdGF0
ZSgpO1xuICAgICAgICB2YXIgdW5zdWJzY3JpYmUgPSBvdXRlclN1YnNjcmliZShvYnNlcnZlU3Rh
dGUpO1xuICAgICAgICByZXR1cm4geyB1bnN1YnNjcmliZTogdW5zdWJzY3JpYmUgfTtcbiAgICAg
IH1cbiAgICB9LCBfcmVmW19zeW1ib2xPYnNlcnZhYmxlMlsnZGVmYXVsdCddXSA9IGZ1bmN0aW9u
ICgpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIF9yZWY7XG4gIH1cblxuICAvLyBXaGVu
IGEgc3RvcmUgaXMgY3JlYXRlZCwgYW4gXCJJTklUXCIgYWN0aW9uIGlzIGRpc3BhdGNoZWQgc28g
dGhhdCBldmVyeVxuICAvLyByZWR1Y2VyIHJldHVybnMgdGhlaXIgaW5pdGlhbCBzdGF0ZS4gVGhp
cyBlZmZlY3RpdmVseSBwb3B1bGF0ZXNcbiAgLy8gdGhlIGluaXRpYWwgc3RhdGUgdHJlZS5cbiAg
ZGlzcGF0Y2goeyB0eXBlOiBBY3Rpb25UeXBlcy5JTklUIH0pO1xuXG4gIHJldHVybiBfcmVmMiA9
IHtcbiAgICBkaXNwYXRjaDogZGlzcGF0Y2gsXG4gICAgc3Vic2NyaWJlOiBzdWJzY3JpYmUsXG4g
ICAgZ2V0U3RhdGU6IGdldFN0YXRlLFxuICAgIHJlcGxhY2VSZWR1Y2VyOiByZXBsYWNlUmVkdWNl
clxuICB9LCBfcmVmMltfc3ltYm9sT2JzZXJ2YWJsZTJbJ2RlZmF1bHQnXV0gPSBvYnNlcnZhYmxl
LCBfcmVmMjtcbn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWR1eC9saWIvY3JlYXRlU3RvcmUuanNcbiAqKiBtb2R1bGUgaWQgPSA5NVxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNN
b2R1bGUgPSB0cnVlO1xuZXhwb3J0c1snZGVmYXVsdCddID0gd2FybmluZztcbi8qKlxuICogUHJp
bnRzIGEgd2FybmluZyBpbiB0aGUgY29uc29sZSBpZiBpdCBleGlzdHMuXG4gKlxuICogQHBhcmFt
IHtTdHJpbmd9IG1lc3NhZ2UgVGhlIHdhcm5pbmcgbWVzc2FnZS5cbiAqIEByZXR1cm5zIHt2b2lk
fVxuICovXG5mdW5jdGlvbiB3YXJuaW5nKG1lc3NhZ2UpIHtcbiAgLyogZXNsaW50LWRpc2FibGUg
bm8tY29uc29sZSAqL1xuICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5
cGVvZiBjb25zb2xlLmVycm9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc29sZS5lcnJvciht
ZXNzYWdlKTtcbiAgfVxuICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbnNvbGUgKi9cbiAgdHJ5IHtc
biAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IGlm
IHlvdSBlbmFibGVcbiAgICAvLyBcImJyZWFrIG9uIGFsbCBleGNlcHRpb25zXCIgaW4geW91ciBj
b25zb2xlLFxuICAgIC8vIGl0IHdvdWxkIHBhdXNlIHRoZSBleGVjdXRpb24gYXQgdGhpcyBsaW5l
LlxuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBu
by1lbXB0eSAqL1xuICB9IGNhdGNoIChlKSB7fVxuICAvKiBlc2xpbnQtZW5hYmxlIG5vLWVtcHR5
ICovXG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vcmVkdXgvbGliL3V0aWxzL3dhcm5pbmcuanNcbiAqKiBtb2R1bGUgaWQgPSA5NlxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5c
bid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7
XG5cbnZhciBlbXB0eU9iamVjdCA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5T2JqZWN0Jyk7XG52
YXIgX2ludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG5pZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgd2FybmluZyA9IHJl
cXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcbn1cblxudmFyIE1JWElOU19LRVkgPSAnbWl4aW5z
JztcblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGFsbG93IHRoZSBjcmVhdGlvbiBvZiBhbm9ueW1v
dXMgZnVuY3Rpb25zIHdoaWNoIGRvIG5vdFxuLy8gaGF2ZSAubmFtZSBzZXQgdG8gdGhlIG5hbWUg
b2YgdGhlIHZhcmlhYmxlIGJlaW5nIGFzc2lnbmVkIHRvLlxuZnVuY3Rpb24gaWRlbnRpdHkoZm4p
IHtcbiAgcmV0dXJuIGZuO1xufVxuXG52YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXM7XG5p
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBSZWFjdFByb3BU
eXBlTG9jYXRpb25OYW1lcyA9IHtcbiAgICBwcm9wOiAncHJvcCcsXG4gICAgY29udGV4dDogJ2Nv
bnRleHQnLFxuICAgIGNoaWxkQ29udGV4dDogJ2NoaWxkIGNvbnRleHQnXG4gIH07XG59IGVsc2Ug
e1xuICBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHt9O1xufVxuXG5mdW5jdGlvbiBmYWN0
b3J5KFJlYWN0Q29tcG9uZW50LCBpc1ZhbGlkRWxlbWVudCwgUmVhY3ROb29wVXBkYXRlUXVldWUp
IHtcbiAgLyoqXG4gICAqIFBvbGljaWVzIHRoYXQgZGVzY3JpYmUgbWV0aG9kcyBpbiBgUmVhY3RD
bGFzc0ludGVyZmFjZWAuXG4gICAqL1xuXG4gIHZhciBpbmplY3RlZE1peGlucyA9IFtdO1xuXG4g
IC8qKlxuICAgKiBDb21wb3NpdGUgY29tcG9uZW50cyBhcmUgaGlnaGVyLWxldmVsIGNvbXBvbmVu
dHMgdGhhdCBjb21wb3NlIG90aGVyIGNvbXBvc2l0ZVxuICAgKiBvciBob3N0IGNvbXBvbmVudHMu
XG4gICAqXG4gICAqIFRvIGNyZWF0ZSBhIG5ldyB0eXBlIG9mIGBSZWFjdENsYXNzYCwgcGFzcyBh
IHNwZWNpZmljYXRpb24gb2ZcbiAgICogeW91ciBuZXcgY2xhc3MgdG8gYFJlYWN0LmNyZWF0ZUNs
YXNzYC4gVGhlIG9ubHkgcmVxdWlyZW1lbnQgb2YgeW91ciBjbGFzc1xuICAgKiBzcGVjaWZpY2F0
aW9uIGlzIHRoYXQgeW91IGltcGxlbWVudCBhIGByZW5kZXJgIG1ldGhvZC5cbiAgICpcbiAgICog
ICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAqICAgICByZW5kZXI6
IGZ1bmN0aW9uKCkge1xuICAgKiAgICAgICByZXR1cm4gPGRpdj5IZWxsbyBXb3JsZDwvZGl2Pjtc
biAgICogICAgIH1cbiAgICogICB9KTtcbiAgICpcbiAgICogVGhlIGNsYXNzIHNwZWNpZmljYXRp
b24gc3VwcG9ydHMgYSBzcGVjaWZpYyBwcm90b2NvbCBvZiBtZXRob2RzIHRoYXQgaGF2ZVxuICAg
KiBzcGVjaWFsIG1lYW5pbmcgKGUuZy4gYHJlbmRlcmApLiBTZWUgYFJlYWN0Q2xhc3NJbnRlcmZh
Y2VgIGZvclxuICAgKiBtb3JlIHRoZSBjb21wcmVoZW5zaXZlIHByb3RvY29sLiBBbnkgb3RoZXIg
cHJvcGVydGllcyBhbmQgbWV0aG9kcyBpbiB0aGVcbiAgICogY2xhc3Mgc3BlY2lmaWNhdGlvbiB3
aWxsIGJlIGF2YWlsYWJsZSBvbiB0aGUgcHJvdG90eXBlLlxuICAgKlxuICAgKiBAaW50ZXJmYWNl
IFJlYWN0Q2xhc3NJbnRlcmZhY2VcbiAgICogQGludGVybmFsXG4gICAqL1xuICB2YXIgUmVhY3RD
bGFzc0ludGVyZmFjZSA9IHtcbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiBNaXhpbiBvYmpl
Y3RzIHRvIGluY2x1ZGUgd2hlbiBkZWZpbmluZyB5b3VyIGNvbXBvbmVudC5cbiAgICAgKlxuICAg
ICAqIEB0eXBlIHthcnJheX1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBtaXhpbnM6
ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBBbiBvYmplY3QgY29udGFpbmluZyBw
cm9wZXJ0aWVzIGFuZCBtZXRob2RzIHRoYXQgc2hvdWxkIGJlIGRlZmluZWQgb25cbiAgICAgKiB0
aGUgY29tcG9uZW50J3MgY29uc3RydWN0b3IgaW5zdGVhZCBvZiBpdHMgcHJvdG90eXBlIChzdGF0
aWMgbWV0aG9kcykuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBvcHRp
b25hbFxuICAgICAqL1xuICAgIHN0YXRpY3M6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAg
ICAgKiBEZWZpbml0aW9uIG9mIHByb3AgdHlwZXMgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgICAq
XG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBw
cm9wVHlwZXM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBEZWZpbml0aW9uIG9m
IGNvbnRleHQgdHlwZXMgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHR5cGUg
e29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb250ZXh0VHlwZXM6ICdE
RUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBEZWZpbml0aW9uIG9mIGNvbnRleHQgdHlw
ZXMgdGhpcyBjb21wb25lbnQgc2V0cyBmb3IgaXRzIGNoaWxkcmVuLlxuICAgICAqXG4gICAgICog
QHR5cGUge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjaGlsZENvbnRl
eHRUeXBlczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8vID09PT0gRGVmaW5pdGlvbiBtZXRob2Rz
ID09PT1cblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIG1v
dW50ZWQuIFZhbHVlcyBpbiB0aGUgbWFwcGluZyB3aWxsIGJlIHNldCBvblxuICAgICAqIGB0aGlz
LnByb3BzYCBpZiB0aGF0IHByb3AgaXMgbm90IHNwZWNpZmllZCAoaS5lLiB1c2luZyBhbiBgaW5g
IGNoZWNrKS5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYmVmb3JlIGBn
ZXRJbml0aWFsU3RhdGVgIGFuZCB0aGVyZWZvcmUgY2Fubm90IHJlbHlcbiAgICAgKiBvbiBgdGhp
cy5zdGF0ZWAgb3IgdXNlIGB0aGlzLnNldFN0YXRlYC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4g
e29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBnZXREZWZhdWx0UHJvcHM6
ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCBvbmNlIGJl
Zm9yZSB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSB1
c2VkXG4gICAgICogYXMgdGhlIGluaXRpYWwgdmFsdWUgb2YgYHRoaXMuc3RhdGVgLlxuICAgICAq
XG4gICAgICogICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAqICAgICByZXR1
cm4ge1xuICAgICAqICAgICAgIGlzT246IGZhbHNlLFxuICAgICAqICAgICAgIGZvb0JhejogbmV3
IEJhekZvbygpXG4gICAgICogICAgIH1cbiAgICAgKiAgIH1cbiAgICAgKlxuICAgICAqIEByZXR1
cm4ge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBnZXRJbml0aWFsU3Rh
dGU6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7b2Jq
ZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdldENoaWxkQ29udGV4dDogJ0RF
RklORV9NQU5ZX01FUkdFRCcsXG5cbiAgICAvKipcbiAgICAgKiBVc2VzIHByb3BzIGZyb20gYHRo
aXMucHJvcHNgIGFuZCBzdGF0ZSBmcm9tIGB0aGlzLnN0YXRlYCB0byByZW5kZXIgdGhlXG4gICAg
ICogc3RydWN0dXJlIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBObyBndWFyYW50
ZWVzIGFyZSBtYWRlIGFib3V0IHdoZW4gb3IgaG93IG9mdGVuIHRoaXMgbWV0aG9kIGlzIGludm9r
ZWQsIHNvXG4gICAgICogaXQgbXVzdCBub3QgaGF2ZSBzaWRlIGVmZmVjdHMuXG4gICAgICpcbiAg
ICAgKiAgIHJlbmRlcjogZnVuY3Rpb24oKSB7XG4gICAgICogICAgIHZhciBuYW1lID0gdGhpcy5w
cm9wcy5uYW1lO1xuICAgICAqICAgICByZXR1cm4gPGRpdj5IZWxsbywge25hbWV9ITwvZGl2Pjtc
biAgICAgKiAgIH1cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fVxuICAg
ICAqIEByZXF1aXJlZFxuICAgICAqL1xuICAgIHJlbmRlcjogJ0RFRklORV9PTkNFJyxcblxuICAg
IC8vID09PT0gRGVsZWdhdGUgbWV0aG9kcyA9PT09XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2Vk
IHdoZW4gdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsbHkgY3JlYXRlZCBhbmQgYWJvdXQgdG8gYmUg
bW91bnRlZC5cbiAgICAgKiBUaGlzIG1heSBoYXZlIHNpZGUgZWZmZWN0cywgYnV0IGFueSBleHRl
cm5hbCBzdWJzY3JpcHRpb25zIG9yIGRhdGEgY3JlYXRlZFxuICAgICAqIGJ5IHRoaXMgbWV0aG9k
IG11c3QgYmUgY2xlYW5lZCB1cCBpbiBgY29tcG9uZW50V2lsbFVubW91bnRgLlxuICAgICAqXG4g
ICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50V2lsbE1vdW50OiAnREVGSU5F
X01BTlknLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaGFz
IGJlZW4gbW91bnRlZCBhbmQgaGFzIGEgRE9NIHJlcHJlc2VudGF0aW9uLlxuICAgICAqIEhvd2V2
ZXIsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBET00gbm9kZSBpcyBpbiB0aGUgZG9j
dW1lbnQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBvcGVy
YXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhc1xuICAgICAqIGJlZW4gbW91bnRl
ZCAoaW5pdGlhbGl6ZWQgYW5kIHJlbmRlcmVkKSBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAgICpc
biAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJlc2Vu
dGluZyB0aGUgY29tcG9uZW50LlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBv
bmVudERpZE1vdW50OiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCBi
ZWZvcmUgdGhlIGNvbXBvbmVudCByZWNlaXZlcyBuZXcgcHJvcHMuXG4gICAgICpcbiAgICAgKiBV
c2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byByZWFjdCB0byBhIHByb3AgdHJhbnNpdGlvbiBi
eSB1cGRhdGluZyB0aGVcbiAgICAgKiBzdGF0ZSB1c2luZyBgdGhpcy5zZXRTdGF0ZWAuIEN1cnJl
bnQgcHJvcHMgYXJlIGFjY2Vzc2VkIHZpYSBgdGhpcy5wcm9wc2AuXG4gICAgICpcbiAgICAgKiAg
IGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6IGZ1bmN0aW9uKG5leHRQcm9wcywgbmV4dENvbnRl
eHQpIHtcbiAgICAgKiAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICogICAgICAgbGlrZXNJbmNy
ZWFzaW5nOiBuZXh0UHJvcHMubGlrZUNvdW50ID4gdGhpcy5wcm9wcy5saWtlQ291bnRcbiAgICAg
KiAgICAgfSk7XG4gICAgICogICB9XG4gICAgICpcbiAgICAgKiBOT1RFOiBUaGVyZSBpcyBubyBl
cXVpdmFsZW50IGBjb21wb25lbnRXaWxsUmVjZWl2ZVN0YXRlYC4gQW4gaW5jb21pbmcgcHJvcFxu
ICAgICAqIHRyYW5zaXRpb24gbWF5IGNhdXNlIGEgc3RhdGUgY2hhbmdlLCBidXQgdGhlIG9wcG9z
aXRlIGlzIG5vdCB0cnVlLiBJZiB5b3VcbiAgICAgKiBuZWVkIGl0LCB5b3UgYXJlIHByb2JhYmx5
IGxvb2tpbmcgZm9yIGBjb21wb25lbnRXaWxsVXBkYXRlYC5cbiAgICAgKlxuICAgICAqIEBwYXJh
bSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21w
b25lbnRXaWxsUmVjZWl2ZVByb3BzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICog
SW52b2tlZCB3aGlsZSBkZWNpZGluZyBpZiB0aGUgY29tcG9uZW50IHNob3VsZCBiZSB1cGRhdGVk
IGFzIGEgcmVzdWx0IG9mXG4gICAgICogcmVjZWl2aW5nIG5ldyBwcm9wcywgc3RhdGUgYW5kL29y
IGNvbnRleHQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBg
cmV0dXJuIGZhbHNlYCB3aGVuIHlvdSdyZSBjZXJ0YWluIHRoYXQgdGhlXG4gICAgICogdHJhbnNp
dGlvbiB0byB0aGUgbmV3IHByb3BzL3N0YXRlL2NvbnRleHQgd2lsbCBub3QgcmVxdWlyZSBhIGNv
bXBvbmVudFxuICAgICAqIHVwZGF0ZS5cbiAgICAgKlxuICAgICAqICAgc2hvdWxkQ29tcG9uZW50
VXBkYXRlOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpIHtcbiAg
ICAgKiAgICAgcmV0dXJuICFlcXVhbChuZXh0UHJvcHMsIHRoaXMucHJvcHMpIHx8XG4gICAgICog
ICAgICAgIWVxdWFsKG5leHRTdGF0ZSwgdGhpcy5zdGF0ZSkgfHxcbiAgICAgKiAgICAgICAhZXF1
YWwobmV4dENvbnRleHQsIHRoaXMuY29udGV4dCk7XG4gICAgICogICB9XG4gICAgICpcbiAgICAg
KiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0
U3RhdGVcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0XG4gICAgICogQHJldHVy
biB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUuXG4gICAgICog
QG9wdGlvbmFsXG4gICAgICovXG4gICAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiAnREVGSU5FX09O
Q0UnLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgYWJv
dXQgdG8gdXBkYXRlIGR1ZSB0byBhIHRyYW5zaXRpb24gZnJvbVxuICAgICAqIGB0aGlzLnByb3Bz
YCwgYHRoaXMuc3RhdGVgIGFuZCBgdGhpcy5jb250ZXh0YCB0byBgbmV4dFByb3BzYCwgYG5leHRT
dGF0ZWBcbiAgICAgKiBhbmQgYG5leHRDb250ZXh0YC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlz
IGFzIGFuIG9wcG9ydHVuaXR5IHRvIHBlcmZvcm0gcHJlcGFyYXRpb24gYmVmb3JlIGFuIHVwZGF0
ZSBvY2N1cnMuXG4gICAgICpcbiAgICAgKiBOT1RFOiBZb3UgKipjYW5ub3QqKiB1c2UgYHRoaXMu
c2V0U3RhdGUoKWAgaW4gdGhpcyBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVj
dH0gbmV4dFByb3BzXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGVcbiAgICAgKiBA
cGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0XG4gICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2ls
ZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAg
IGNvbXBvbmVudFdpbGxVcGRhdGU6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJ
bnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCdzIERPTSByZXByZXNlbnRhdGlvbiBoYXMgYmVlbiB1
cGRhdGVkLlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gb3Bl
cmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhlIGNvbXBvbmVudCBoYXNcbiAgICAgKiBiZWVuIHVwZGF0
ZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcHJldlByb3BzXG4gICAgICogQHBh
cmFtIHs/b2JqZWN0fSBwcmV2U3RhdGVcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZDb250
ZXh0XG4gICAgICogQHBhcmFtIHtET01FbGVtZW50fSByb290Tm9kZSBET00gZWxlbWVudCByZXBy
ZXNlbnRpbmcgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBj
b21wb25lbnREaWRVcGRhdGU6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZv
a2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byBiZSByZW1vdmVkIGZyb20gaXRzIHBh
cmVudCBhbmQgaGF2ZVxuICAgICAqIGl0cyBET00gcmVwcmVzZW50YXRpb24gZGVzdHJveWVkLlxu
ICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gZGVhbGxvY2F0ZSBh
bnkgZXh0ZXJuYWwgcmVzb3VyY2VzLlxuICAgICAqXG4gICAgICogTk9URTogVGhlcmUgaXMgbm8g
YGNvbXBvbmVudERpZFVubW91bnRgIHNpbmNlIHlvdXIgY29tcG9uZW50IHdpbGwgaGF2ZSBiZWVu
XG4gICAgICogZGVzdHJveWVkIGJ5IHRoYXQgcG9pbnQuXG4gICAgICpcbiAgICAgKiBAb3B0aW9u
YWxcbiAgICAgKi9cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudDogJ0RFRklORV9NQU5ZJyxcblxu
ICAgIC8vID09PT0gQWR2YW5jZWQgbWV0aG9kcyA9PT09XG5cbiAgICAvKipcbiAgICAgKiBVcGRh
dGVzIHRoZSBjb21wb25lbnQncyBjdXJyZW50bHkgbW91bnRlZCBET00gcmVwcmVzZW50YXRpb24u
XG4gICAgICpcbiAgICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVudHMgUmVhY3QncyByZW5k
ZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS5cbiAgICAgKiBTb3BoaXN0aWNhdGVk
IGNsaWVudHMgbWF5IHdpc2ggdG8gb3ZlcnJpZGUgdGhpcy5cbiAgICAgKlxuICAgICAqIEBwYXJh
bSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICAgKiBAaW50ZXJu
YWxcbiAgICAgKiBAb3ZlcnJpZGFibGVcbiAgICAgKi9cbiAgICB1cGRhdGVDb21wb25lbnQ6ICdP
VkVSUklERV9CQVNFJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gY2xhc3Mgc3Bl
Y2lmaWNhdGlvbiBrZXlzIHRvIHNwZWNpYWwgcHJvY2Vzc2luZyBmdW5jdGlvbnMuXG4gICAqXG4g
ICAqIEFsdGhvdWdoIHRoZXNlIGFyZSBkZWNsYXJlZCBsaWtlIGluc3RhbmNlIHByb3BlcnRpZXMg
aW4gdGhlIHNwZWNpZmljYXRpb25cbiAgICogd2hlbiBkZWZpbmluZyBjbGFzc2VzIHVzaW5nIGBS
ZWFjdC5jcmVhdGVDbGFzc2AsIHRoZXkgYXJlIGFjdHVhbGx5IHN0YXRpY1xuICAgKiBhbmQgYXJl
IGFjY2Vzc2libGUgb24gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdGhlIHByb3RvdHlwZS4g
RGVzcGl0ZVxuICAgKiBiZWluZyBzdGF0aWMsIHRoZXkgbXVzdCBiZSBkZWZpbmVkIG91dHNpZGUg
b2YgdGhlIFwic3RhdGljc1wiIGtleSB1bmRlclxuICAgKiB3aGljaCBhbGwgb3RoZXIgc3RhdGlj
IG1ldGhvZHMgYXJlIGRlZmluZWQuXG4gICAqL1xuICB2YXIgUkVTRVJWRURfU1BFQ19LRVlTID0g
e1xuICAgIGRpc3BsYXlOYW1lOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgZGlzcGxheU5hbWUpIHtc
biAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XG4gICAgfSxcbiAg
ICBtaXhpbnM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBtaXhpbnMpIHtcbiAgICAgIGlmIChtaXhp
bnMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaXhpbnMubGVuZ3RoOyBpKyspIHtc
biAgICAgICAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3RvciwgbWl4aW5zW2ldKTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY2hpbGRDb250ZXh0VHlwZXM6IGZ1bmN0
aW9uKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcykge1xuICAgICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFsaWRhdGVUeXBlRGVm
KENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcywgJ2NoaWxkQ29udGV4dCcpO1xuICAgICAg
fVxuICAgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMgPSBfYXNzaWduKFxuICAgICAg
ICB7fSxcbiAgICAgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMsXG4gICAgICAgIGNo
aWxkQ29udGV4dFR5cGVzXG4gICAgICApO1xuICAgIH0sXG4gICAgY29udGV4dFR5cGVzOiBmdW5j
dGlvbihDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29u
c3RydWN0b3IsIGNvbnRleHRUeXBlcywgJ2NvbnRleHQnKTtcbiAgICAgIH1cbiAgICAgIENvbnN0
cnVjdG9yLmNvbnRleHRUeXBlcyA9IF9hc3NpZ24oXG4gICAgICAgIHt9LFxuICAgICAgICBDb25z
dHJ1Y3Rvci5jb250ZXh0VHlwZXMsXG4gICAgICAgIGNvbnRleHRUeXBlc1xuICAgICAgKTtcbiAg
ICB9LFxuICAgIC8qKlxuICAgICAqIFNwZWNpYWwgY2FzZSBnZXREZWZhdWx0UHJvcHMgd2hpY2gg
c2hvdWxkIG1vdmUgaW50byBzdGF0aWNzIGJ1dCByZXF1aXJlc1xuICAgICAqIGF1dG9tYXRpYyBt
ZXJnaW5nLlxuICAgICAqL1xuICAgIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24oQ29uc3RydWN0
b3IsIGdldERlZmF1bHRQcm9wcykge1xuICAgICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQ
cm9wcykge1xuICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBjcmVhdGVNZXJn
ZWRSZXN1bHRGdW5jdGlvbihcbiAgICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMs
XG4gICAgICAgICAgZ2V0RGVmYXVsdFByb3BzXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xu
ICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBnZXREZWZhdWx0UHJvcHM7XG4g
ICAgICB9XG4gICAgfSxcbiAgICBwcm9wVHlwZXM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBwcm9w
VHlwZXMpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzLCAncHJv
cCcpO1xuICAgICAgfVxuICAgICAgQ29uc3RydWN0b3IucHJvcFR5cGVzID0gX2Fzc2lnbih7fSwg
Q29uc3RydWN0b3IucHJvcFR5cGVzLCBwcm9wVHlwZXMpO1xuICAgIH0sXG4gICAgc3RhdGljczog
ZnVuY3Rpb24oQ29uc3RydWN0b3IsIHN0YXRpY3MpIHtcbiAgICAgIG1peFN0YXRpY1NwZWNJbnRv
Q29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNzKTtcbiAgICB9LFxuICAgIGF1dG9iaW5kOiBm
dW5jdGlvbigpIHt9XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVj
dG9yLCB0eXBlRGVmLCBsb2NhdGlvbikge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHR5cGVE
ZWYpIHtcbiAgICAgIGlmICh0eXBlRGVmLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAg
ICAgICAvLyB1c2UgYSB3YXJuaW5nIGluc3RlYWQgb2YgYW4gX2ludmFyaWFudCBzbyBjb21wb25l
bnRzXG4gICAgICAgIC8vIGRvbid0IHNob3cgdXAgaW4gcHJvZCBidXQgb25seSBpbiBfX0RFVl9f
XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgIHR5cGVvZiB0eXBlRGVmW3Byb3BOYW1lXSA9
PT0gJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7
IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tICcgK1xuICAgICAgICAgICAgICAn
UmVhY3QuUHJvcFR5cGVzLicsXG4gICAgICAgICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8
fCAnUmVhY3RDbGFzcycsXG4gICAgICAgICAgICBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1ts
b2NhdGlvbl0sXG4gICAgICAgICAgICBwcm9wTmFtZVxuICAgICAgICAgICk7XG4gICAgICAgIH1c
biAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRl
KGlzQWxyZWFkeURlZmluZWQsIG5hbWUpIHtcbiAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xh
c3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSlcbiAgICAgID8gUmVhY3RDbGFzc0ludGVy
ZmFjZVtuYW1lXVxuICAgICAgOiBudWxsO1xuXG4gICAgLy8gRGlzYWxsb3cgb3ZlcnJpZGluZyBv
ZiBiYXNlIGNsYXNzIG1ldGhvZHMgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC5cbiAgICBpZiAo
UmVhY3RDbGFzc01peGluLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBfaW52YXJpYW50
KFxuICAgICAgICBzcGVjUG9saWN5ID09PSAnT1ZFUlJJREVfQkFTRScsXG4gICAgICAgICdSZWFj
dENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gb3ZlcnJpZGUgJyArXG4gICAg
ICAgICAgJ2Alc2AgZnJvbSB5b3VyIGNsYXNzIHNwZWNpZmljYXRpb24uIEVuc3VyZSB0aGF0IHlv
dXIgbWV0aG9kIG5hbWVzICcgK1xuICAgICAgICAgICdkbyBub3Qgb3ZlcmxhcCB3aXRoIFJlYWN0
IG1ldGhvZHMuJyxcbiAgICAgICAgbmFtZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBEaXNh
bGxvdyBkZWZpbmluZyBtZXRob2RzIG1vcmUgdGhhbiBvbmNlIHVubGVzcyBleHBsaWNpdGx5IGFs
bG93ZWQuXG4gICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcbiAgICAgIF9pbnZhcmlhbnQoXG4g
ICAgICAgIHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScgfHwgc3BlY1BvbGljeSA9PT0gJ0RF
RklORV9NQU5ZX01FUkdFRCcsXG4gICAgICAgICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJl
IGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgK1xuICAgICAgICAgICdgJXNgIG9uIHlvdXIgY29tcG9u
ZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSBkdWUgJyArXG4gICAgICAg
ICAgJ3RvIGEgbWl4aW4uJyxcbiAgICAgICAgbmFtZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxu
ICAvKipcbiAgICogTWl4aW4gaGVscGVyIHdoaWNoIGhhbmRsZXMgcG9saWN5IHZhbGlkYXRpb24g
YW5kIHJlc2VydmVkXG4gICAqIHNwZWNpZmljYXRpb24ga2V5cyB3aGVuIGJ1aWxkaW5nIFJlYWN0
IGNsYXNzZXMuXG4gICAqL1xuICBmdW5jdGlvbiBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1
Y3Rvciwgc3BlYykge1xuICAgIGlmICghc3BlYykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIHR5cGVvZlNwZWMgPSB0eXBl
b2Ygc3BlYztcbiAgICAgICAgdmFyIGlzTWl4aW5WYWxpZCA9IHR5cGVvZlNwZWMgPT09ICdvYmpl
Y3QnICYmIHNwZWMgIT09IG51bGw7XG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgaXNN
aXhpblZhbGlkLFxuICAgICAgICAgICAgXCIlczogWW91J3JlIGF0dGVtcHRpbmcgdG8gaW5jbHVk
ZSBhIG1peGluIHRoYXQgaXMgZWl0aGVyIG51bGwgXCIgK1xuICAgICAgICAgICAgICAnb3Igbm90
IGFuIG9iamVjdC4gQ2hlY2sgdGhlIG1peGlucyBpbmNsdWRlZCBieSB0aGUgY29tcG9uZW50LCAn
ICtcbiAgICAgICAgICAgICAgJ2FzIHdlbGwgYXMgYW55IG1peGlucyB0aGV5IGluY2x1ZGUgdGhl
bXNlbHZlcy4gJyArXG4gICAgICAgICAgICAgICdFeHBlY3RlZCBvYmplY3QgYnV0IGdvdCAlcy4n
LFxuICAgICAgICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q2xhc3MnLFxu
ICAgICAgICAgICAgc3BlYyA9PT0gbnVsbCA/IG51bGwgOiB0eXBlb2ZTcGVjXG4gICAgICAgICAg
KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgX2lu
dmFyaWFudChcbiAgICAgIHR5cGVvZiBzcGVjICE9PSAnZnVuY3Rpb24nLFxuICAgICAgXCJSZWFj
dENsYXNzOiBZb3UncmUgYXR0ZW1wdGluZyB0byBcIiArXG4gICAgICAgICd1c2UgYSBjb21wb25l
bnQgY2xhc3Mgb3IgZnVuY3Rpb24gYXMgYSBtaXhpbi4gSW5zdGVhZCwganVzdCB1c2UgYSAnICtc
biAgICAgICAgJ3JlZ3VsYXIgb2JqZWN0LidcbiAgICApO1xuICAgIF9pbnZhcmlhbnQoXG4gICAg
ICAhaXNWYWxpZEVsZW1lbnQoc3BlYyksXG4gICAgICBcIlJlYWN0Q2xhc3M6IFlvdSdyZSBhdHRl
bXB0aW5nIHRvIFwiICtcbiAgICAgICAgJ3VzZSBhIGNvbXBvbmVudCBhcyBhIG1peGluLiBJbnN0
ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LidcbiAgICApO1xuXG4gICAgdmFyIHByb3Rv
ID0gQ29uc3RydWN0b3IucHJvdG90eXBlO1xuICAgIHZhciBhdXRvQmluZFBhaXJzID0gcHJvdG8u
X19yZWFjdEF1dG9CaW5kUGFpcnM7XG5cbiAgICAvLyBCeSBoYW5kbGluZyBtaXhpbnMgYmVmb3Jl
IGFueSBvdGhlciBwcm9wZXJ0aWVzLCB3ZSBlbnN1cmUgdGhlIHNhbWVcbiAgICAvLyBjaGFpbmlu
ZyBvcmRlciBpcyBhcHBsaWVkIHRvIG1ldGhvZHMgd2l0aCBERUZJTkVfTUFOWSBwb2xpY3ksIHdo
ZXRoZXJcbiAgICAvLyBtaXhpbnMgYXJlIGxpc3RlZCBiZWZvcmUgb3IgYWZ0ZXIgdGhlc2UgbWV0
aG9kcyBpbiB0aGUgc3BlYy5cbiAgICBpZiAoc3BlYy5oYXNPd25Qcm9wZXJ0eShNSVhJTlNfS0VZ
KSkge1xuICAgICAgUkVTRVJWRURfU1BFQ19LRVlTLm1peGlucyhDb25zdHJ1Y3Rvciwgc3BlYy5t
aXhpbnMpO1xuICAgIH1cblxuICAgIGZvciAodmFyIG5hbWUgaW4gc3BlYykge1xuICAgICAgaWYg
KCFzcGVjLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAg
fVxuXG4gICAgICBpZiAobmFtZSA9PT0gTUlYSU5TX0tFWSkge1xuICAgICAgICAvLyBXZSBoYXZl
IGFscmVhZHkgaGFuZGxlZCBtaXhpbnMgaW4gYSBzcGVjaWFsIGNhc2UgYWJvdmUuXG4gICAgICAg
IGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcGVydHkgPSBzcGVjW25hbWVdO1xu
ICAgICAgdmFyIGlzQWxyZWFkeURlZmluZWQgPSBwcm90by5oYXNPd25Qcm9wZXJ0eShuYW1lKTtc
biAgICAgIHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUoaXNBbHJlYWR5RGVmaW5lZCwgbmFtZSk7XG5c
biAgICAgIGlmIChSRVNFUlZFRF9TUEVDX0tFWVMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAg
ICAgICAgUkVTRVJWRURfU1BFQ19LRVlTW25hbWVdKENvbnN0cnVjdG9yLCBwcm9wZXJ0eSk7XG4g
ICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTZXR1cCBtZXRob2RzIG9uIHByb3RvdHlwZTpcbiAg
ICAgICAgLy8gVGhlIGZvbGxvd2luZyBtZW1iZXIgbWV0aG9kcyBzaG91bGQgbm90IGJlIGF1dG9t
YXRpY2FsbHkgYm91bmQ6XG4gICAgICAgIC8vIDEuIEV4cGVjdGVkIFJlYWN0Q2xhc3MgbWV0aG9k
cyAoaW4gdGhlIFwiaW50ZXJmYWNlXCIpLlxuICAgICAgICAvLyAyLiBPdmVycmlkZGVuIG1ldGhv
ZHMgKHRoYXQgd2VyZSBtaXhlZCBpbikuXG4gICAgICAgIHZhciBpc1JlYWN0Q2xhc3NNZXRob2Qg
PSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpO1xuICAgICAgICB2YXIg
aXNGdW5jdGlvbiA9IHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgICAgdmFy
IHNob3VsZEF1dG9CaW5kID1cbiAgICAgICAgICBpc0Z1bmN0aW9uICYmXG4gICAgICAgICAgIWlz
UmVhY3RDbGFzc01ldGhvZCAmJlxuICAgICAgICAgICFpc0FscmVhZHlEZWZpbmVkICYmXG4gICAg
ICAgICAgc3BlYy5hdXRvYmluZCAhPT0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHNob3VsZEF1dG9C
aW5kKSB7XG4gICAgICAgICAgYXV0b0JpbmRQYWlycy5wdXNoKG5hbWUsIHByb3BlcnR5KTtcbiAg
ICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAg
ICAgIGlmIChpc0FscmVhZHlEZWZpbmVkKSB7XG4gICAgICAgICAgICB2YXIgc3BlY1BvbGljeSA9
IFJlYWN0Q2xhc3NJbnRlcmZhY2VbbmFtZV07XG5cbiAgICAgICAgICAgIC8vIFRoZXNlIGNhc2Vz
IHNob3VsZCBhbHJlYWR5IGJlIGNhdWdodCBieSB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlLlxuICAg
ICAgICAgICAgX2ludmFyaWFudChcbiAgICAgICAgICAgICAgaXNSZWFjdENsYXNzTWV0aG9kICYm
XG4gICAgICAgICAgICAgICAgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9NRVJHRUQnIHx8
XG4gICAgICAgICAgICAgICAgICBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknKSxcbiAgICAg
ICAgICAgICAgJ1JlYWN0Q2xhc3M6IFVuZXhwZWN0ZWQgc3BlYyBwb2xpY3kgJXMgZm9yIGtleSAl
cyAnICtcbiAgICAgICAgICAgICAgICAnd2hlbiBtaXhpbmcgaW4gY29tcG9uZW50IHNwZWNzLics
XG4gICAgICAgICAgICAgIHNwZWNQb2xpY3ksXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAg
ICAgICk7XG5cbiAgICAgICAgICAgIC8vIEZvciBtZXRob2RzIHdoaWNoIGFyZSBkZWZpbmVkIG1v
cmUgdGhhbiBvbmNlLCBjYWxsIHRoZSBleGlzdGluZ1xuICAgICAgICAgICAgLy8gbWV0aG9kcyBi
ZWZvcmUgY2FsbGluZyB0aGUgbmV3IHByb3BlcnR5LCBtZXJnaW5nIGlmIGFwcHJvcHJpYXRlLlxu
ICAgICAgICAgICAgaWYgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9NRVJHRUQnKSB7XG4g
ICAgICAgICAgICAgIHByb3RvW25hbWVdID0gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ocHJv
dG9bbmFtZV0sIHByb3BlcnR5KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3BlY1BvbGljeSA9
PT0gJ0RFRklORV9NQU5ZJykge1xuICAgICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZUNo
YWluZWRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpO1xuICAgICAgICAgICAgfVxuICAg
ICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5O1xuICAg
ICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgICAgICAgICAgLy8gQWRkIHZlcmJvc2UgZGlzcGxheU5hbWUgdG8gdGhlIGZ1bmN0aW9uLCB3
aGljaCBoZWxwcyB3aGVuIGxvb2tpbmdcbiAgICAgICAgICAgICAgLy8gYXQgcHJvZmlsaW5nIHRv
b2xzLlxuICAgICAgICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5ID09PSAnZnVuY3Rpb24nICYm
IHNwZWMuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICAgICAgICBwcm90b1tuYW1lXS5kaXNwbGF5
TmFtZSA9IHNwZWMuZGlzcGxheU5hbWUgKyAnXycgKyBuYW1lO1xuICAgICAgICAgICAgICB9XG4g
ICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9
XG5cbiAgZnVuY3Rpb24gbWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHN0
YXRpY3MpIHtcbiAgICBpZiAoIXN0YXRpY3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAg
Zm9yICh2YXIgbmFtZSBpbiBzdGF0aWNzKSB7XG4gICAgICB2YXIgcHJvcGVydHkgPSBzdGF0aWNz
W25hbWVdO1xuICAgICAgaWYgKCFzdGF0aWNzLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAg
ICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgaXNSZXNlcnZlZCA9IG5hbWUgaW4g
UkVTRVJWRURfU1BFQ19LRVlTO1xuICAgICAgX2ludmFyaWFudChcbiAgICAgICAgIWlzUmVzZXJ2
ZWQsXG4gICAgICAgICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lIGEg
cmVzZXJ2ZWQgJyArXG4gICAgICAgICAgJ3Byb3BlcnR5LCBgJXNgLCB0aGF0IHNob3VsZG5cXCd0
IGJlIG9uIHRoZSBcInN0YXRpY3NcIiBrZXkuIERlZmluZSBpdCAnICtcbiAgICAgICAgICAnYXMg
YW4gaW5zdGFuY2UgcHJvcGVydHkgaW5zdGVhZDsgaXQgd2lsbCBzdGlsbCBiZSBhY2Nlc3NpYmxl
IG9uIHRoZSAnICtcbiAgICAgICAgICAnY29uc3RydWN0b3IuJyxcbiAgICAgICAgbmFtZVxuICAg
ICAgKTtcblxuICAgICAgdmFyIGlzSW5oZXJpdGVkID0gbmFtZSBpbiBDb25zdHJ1Y3RvcjtcbiAg
ICAgIF9pbnZhcmlhbnQoXG4gICAgICAgICFpc0luaGVyaXRlZCxcbiAgICAgICAgJ1JlYWN0Q2xh
c3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgJyArXG4gICAgICAgICAgJ2Alc2Agb24g
eW91ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5IGJlICcgK1xu
ICAgICAgICAgICdkdWUgdG8gYSBtaXhpbi4nLFxuICAgICAgICBuYW1lXG4gICAgICApO1xuICAg
ICAgQ29uc3RydWN0b3JbbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAg
ICogTWVyZ2UgdHdvIG9iamVjdHMsIGJ1dCB0aHJvdyBpZiBib3RoIGNvbnRhaW4gdGhlIHNhbWUg
a2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gb25lIFRoZSBmaXJzdCBvYmplY3QsIHdo
aWNoIGlzIG11dGF0ZWQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB0d28gVGhlIHNlY29uZCBvYmpl
Y3RcbiAgICogQHJldHVybiB7b2JqZWN0fSBvbmUgYWZ0ZXIgaXQgaGFzIGJlZW4gbXV0YXRlZCB0
byBjb250YWluIGV2ZXJ5dGhpbmcgaW4gdHdvLlxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VJbnRv
V2l0aE5vRHVwbGljYXRlS2V5cyhvbmUsIHR3bykge1xuICAgIF9pbnZhcmlhbnQoXG4gICAgICBv
bmUgJiYgdHdvICYmIHR5cGVvZiBvbmUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB0d28gPT09ICdv
YmplY3QnLFxuICAgICAgJ21lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoKTogQ2Fubm90IG1l
cmdlIG5vbi1vYmplY3RzLidcbiAgICApO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHR3bykge1xu
ICAgICAgaWYgKHR3by5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIF9pbnZhcmlhbnQo
XG4gICAgICAgICAgb25lW2tleV0gPT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAnbWVyZ2VJbnRv
V2l0aE5vRHVwbGljYXRlS2V5cygpOiAnICtcbiAgICAgICAgICAgICdUcmllZCB0byBtZXJnZSB0
d28gb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGtleTogYCVzYC4gVGhpcyBjb25mbGljdCAnICtcbiAg
ICAgICAgICAgICdtYXkgYmUgZHVlIHRvIGEgbWl4aW47IGluIHBhcnRpY3VsYXIsIHRoaXMgbWF5
IGJlIGNhdXNlZCBieSB0d28gJyArXG4gICAgICAgICAgICAnZ2V0SW5pdGlhbFN0YXRlKCkgb3Ig
Z2V0RGVmYXVsdFByb3BzKCkgbWV0aG9kcyByZXR1cm5pbmcgb2JqZWN0cyAnICtcbiAgICAgICAg
ICAgICd3aXRoIGNsYXNoaW5nIGtleXMuJyxcbiAgICAgICAgICBrZXlcbiAgICAgICAgKTtcbiAg
ICAgICAgb25lW2tleV0gPSB0d29ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9u
ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3
byBmdW5jdGlvbnMgYW5kIG1lcmdlcyB0aGVpciByZXR1cm4gdmFsdWVzLlxuICAgKlxuICAgKiBA
cGFyYW0ge2Z1bmN0aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0LlxuICAgKiBAcGFy
YW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC5cbiAgICogQHJldHVy
biB7ZnVuY3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0
aW9ucy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZU1lcmdlZFJlc3Vs
dEZ1bmN0aW9uKG9uZSwgdHdvKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZFJlc3VsdCgp
IHtcbiAgICAgIHZhciBhID0gb25lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB2YXIg
YiA9IHR3by5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgaWYgKGEgPT0gbnVsbCkge1xu
ICAgICAgICByZXR1cm4gYjtcbiAgICAgIH0gZWxzZSBpZiAoYiA9PSBudWxsKSB7XG4gICAgICAg
IHJldHVybiBhO1xuICAgICAgfVxuICAgICAgdmFyIGMgPSB7fTtcbiAgICAgIG1lcmdlSW50b1dp
dGhOb0R1cGxpY2F0ZUtleXMoYywgYSk7XG4gICAgICBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVL
ZXlzKGMsIGIpO1xuICAgICAgcmV0dXJuIGM7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBD
cmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIGlnbm9yZXMg
dGhlaXIgcmV0dXJuIHZhbGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmUgRnVu
Y3Rpb24gdG8gaW52b2tlIGZpcnN0LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rp
b24gdG8gaW52b2tlIHNlY29uZC5cbiAgICogQHJldHVybiB7ZnVuY3Rpb259IEZ1bmN0aW9uIHRo
YXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0aW9ucy5cbiAgICogQHByaXZhdGVcbiAg
ICovXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoYWluZWRGdW5jdGlvbihvbmUsIHR3bykge1xuICAgIHJl
dHVybiBmdW5jdGlvbiBjaGFpbmVkRnVuY3Rpb24oKSB7XG4gICAgICBvbmUuYXBwbHkodGhpcywg
YXJndW1lbnRzKTtcbiAgICAgIHR3by5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4g
IH1cblxuICAvKipcbiAgICogQmluZHMgYSBtZXRob2QgdG8gdGhlIGNvbXBvbmVudC5cbiAgICpc
biAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudCBDb21wb25lbnQgd2hvc2UgbWV0aG9kIGlz
IGdvaW5nIHRvIGJlIGJvdW5kLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtZXRob2QgTWV0aG9k
IHRvIGJlIGJvdW5kLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGJvdW5kIG1ldGhvZC5c
biAgICovXG4gIGZ1bmN0aW9uIGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25lbnQsIG1ldGhvZCkg
e1xuICAgIHZhciBib3VuZE1ldGhvZCA9IG1ldGhvZC5iaW5kKGNvbXBvbmVudCk7XG4gICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGJvdW5kTWV0
aG9kLl9fcmVhY3RCb3VuZENvbnRleHQgPSBjb21wb25lbnQ7XG4gICAgICBib3VuZE1ldGhvZC5f
X3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG4gICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91
bmRBcmd1bWVudHMgPSBudWxsO1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQu
Y29uc3RydWN0b3IuZGlzcGxheU5hbWU7XG4gICAgICB2YXIgX2JpbmQgPSBib3VuZE1ldGhvZC5i
aW5kO1xuICAgICAgYm91bmRNZXRob2QuYmluZCA9IGZ1bmN0aW9uKG5ld1RoaXMpIHtcbiAgICAg
ICAgZm9yIChcbiAgICAgICAgICB2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAg
ICAgICBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLFxuICAgICAgICAgICAg
X2tleSA9IDE7XG4gICAgICAgICAgX2tleSA8IF9sZW47XG4gICAgICAgICAgX2tleSsrXG4gICAg
ICAgICkge1xuICAgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAg
ICAgICB9XG5cbiAgICAgICAgLy8gVXNlciBpcyB0cnlpbmcgdG8gYmluZCgpIGFuIGF1dG9ib3Vu
ZCBtZXRob2Q7IHdlIGVmZmVjdGl2ZWx5IHdpbGxcbiAgICAgICAgLy8gaWdub3JlIHRoZSB2YWx1
ZSBvZiBcInRoaXNcIiB0aGF0IHRoZSB1c2VyIGlzIHRyeWluZyB0byB1c2UsIHNvXG4gICAgICAg
IC8vIGxldCdzIHdhcm4uXG4gICAgICAgIGlmIChuZXdUaGlzICE9PSBjb21wb25lbnQgJiYgbmV3
VGhpcyAhPT0gbnVsbCkge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgICBmYWxz
ZSxcbiAgICAgICAgICAgICAgJ2JpbmQoKTogUmVhY3QgY29tcG9uZW50IG1ldGhvZHMgbWF5IG9u
bHkgYmUgYm91bmQgdG8gdGhlICcgK1xuICAgICAgICAgICAgICAgICdjb21wb25lbnQgaW5zdGFu
Y2UuIFNlZSAlcycsXG4gICAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcbiAgICAgICAgICAgICk7
XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFhcmdzLmxlbmd0aCkge1xuICAgICAg
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAg
ICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgJ2JpbmQo
KTogWW91IGFyZSBiaW5kaW5nIGEgY29tcG9uZW50IG1ldGhvZCB0byB0aGUgY29tcG9uZW50LiAn
ICtcbiAgICAgICAgICAgICAgICAnUmVhY3QgZG9lcyB0aGlzIGZvciB5b3UgYXV0b21hdGljYWxs
eSBpbiBhIGhpZ2gtcGVyZm9ybWFuY2UgJyArXG4gICAgICAgICAgICAgICAgJ3dheSwgc28geW91
IGNhbiBzYWZlbHkgcmVtb3ZlIHRoaXMgY2FsbC4gU2VlICVzJyxcbiAgICAgICAgICAgICAgY29t
cG9uZW50TmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJu
IGJvdW5kTWV0aG9kO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZWJvdW5kTWV0aG9kID0gX2Jp
bmQuYXBwbHkoYm91bmRNZXRob2QsIGFyZ3VtZW50cyk7XG4gICAgICAgIHJlYm91bmRNZXRob2Qu
X19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDtcbiAgICAgICAgcmVib3VuZE1ldGhvZC5f
X3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG4gICAgICAgIHJlYm91bmRNZXRob2QuX19yZWFj
dEJvdW5kQXJndW1lbnRzID0gYXJncztcbiAgICAgICAgcmV0dXJuIHJlYm91bmRNZXRob2Q7XG4g
ICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gYm91bmRNZXRob2Q7XG4gIH1cblxuICAvKipcbiAg
ICogQmluZHMgYWxsIGF1dG8tYm91bmQgbWV0aG9kcyBpbiBhIGNvbXBvbmVudC5cbiAgICpcbiAg
ICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudCBDb21wb25lbnQgd2hvc2UgbWV0aG9kIGlzIGdv
aW5nIHRvIGJlIGJvdW5kLlxuICAgKi9cbiAgZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kcyhj
b21wb25lbnQpIHtcbiAgICB2YXIgcGFpcnMgPSBjb21wb25lbnQuX19yZWFjdEF1dG9CaW5kUGFp
cnM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7IGkgKz0gMikge1xuICAg
ICAgdmFyIGF1dG9CaW5kS2V5ID0gcGFpcnNbaV07XG4gICAgICB2YXIgbWV0aG9kID0gcGFpcnNb
aSArIDFdO1xuICAgICAgY29tcG9uZW50W2F1dG9CaW5kS2V5XSA9IGJpbmRBdXRvQmluZE1ldGhv
ZChjb21wb25lbnQsIG1ldGhvZCk7XG4gICAgfVxuICB9XG5cbiAgdmFyIElzTW91bnRlZFByZU1p
eGluID0ge1xuICAgIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMu
X19pc01vdW50ZWQgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICB2YXIgSXNNb3VudGVkUG9zdE1p
eGluID0ge1xuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50OiBmdW5jdGlvbigpIHtcbiAgICAgIHRo
aXMuX19pc01vdW50ZWQgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEFkZCBt
b3JlIHRvIHRoZSBSZWFjdENsYXNzIGJhc2UgY2xhc3MuIFRoZXNlIGFyZSBhbGwgbGVnYWN5IGZl
YXR1cmVzIGFuZFxuICAgKiB0aGVyZWZvcmUgbm90IGFscmVhZHkgcGFydCBvZiB0aGUgbW9kZXJu
IFJlYWN0Q29tcG9uZW50LlxuICAgKi9cbiAgdmFyIFJlYWN0Q2xhc3NNaXhpbiA9IHtcbiAgICAv
KipcbiAgICAgKiBUT0RPOiBUaGlzIHdpbGwgYmUgZGVwcmVjYXRlZCBiZWNhdXNlIHN0YXRlIHNo
b3VsZCBhbHdheXMga2VlcCBhIGNvbnNpc3RlbnRcbiAgICAgKiB0eXBlIHNpZ25hdHVyZSBhbmQg
dGhlIG9ubHkgdXNlIGNhc2UgZm9yIHRoaXMsIGlzIHRvIGF2b2lkIHRoYXQuXG4gICAgICovXG4g
ICAgcmVwbGFjZVN0YXRlOiBmdW5jdGlvbihuZXdTdGF0ZSwgY2FsbGJhY2spIHtcbiAgICAgIHRo
aXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRlKHRoaXMsIG5ld1N0YXRlLCBjYWxsYmFjayk7
XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNv
bXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBU
cnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAg
ICogQGZpbmFsXG4gICAgICovXG4gICAgaXNNb3VudGVkOiBmdW5jdGlvbigpIHtcbiAgICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm5p
bmcoXG4gICAgICAgICAgdGhpcy5fX2RpZFdhcm5Jc01vdW50ZWQsXG4gICAgICAgICAgJyVzOiBp
c01vdW50ZWQgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgbWFrZSBzdXJlIHRvIGNsZWFuIHVwICcg
K1xuICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbnMgYW5kIHBlbmRpbmcgcmVxdWVzdHMgaW4gY29t
cG9uZW50V2lsbFVubW91bnQgdG8gJyArXG4gICAgICAgICAgICAncHJldmVudCBtZW1vcnkgbGVh
a3MuJyxcbiAgICAgICAgICAodGhpcy5jb25zdHJ1Y3RvciAmJiB0aGlzLmNvbnN0cnVjdG9yLmRp
c3BsYXlOYW1lKSB8fFxuICAgICAgICAgICAgdGhpcy5uYW1lIHx8XG4gICAgICAgICAgICAnQ29t
cG9uZW50J1xuICAgICAgICApO1xuICAgICAgICB0aGlzLl9fZGlkV2FybklzTW91bnRlZCA9IHRy
dWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gISF0aGlzLl9faXNNb3VudGVkO1xuICAgIH1cbiAg
fTtcblxuICB2YXIgUmVhY3RDbGFzc0NvbXBvbmVudCA9IGZ1bmN0aW9uKCkge307XG4gIF9hc3Np
Z24oXG4gICAgUmVhY3RDbGFzc0NvbXBvbmVudC5wcm90b3R5cGUsXG4gICAgUmVhY3RDb21wb25l
bnQucHJvdG90eXBlLFxuICAgIFJlYWN0Q2xhc3NNaXhpblxuICApO1xuXG4gIC8qKlxuICAgKiBD
cmVhdGVzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBjbGFzcyBnaXZlbiBhIGNsYXNzIHNwZWNpZmlj
YXRpb24uXG4gICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3Rv
cC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jcmVhdGVjbGFzc1xuICAgKlxuICAgKiBAcGFyYW0ge29i
amVjdH0gc3BlYyBDbGFzcyBzcGVjaWZpY2F0aW9uICh3aGljaCBtdXN0IGRlZmluZSBgcmVuZGVy
YCkuXG4gICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBDb21wb25lbnQgY29uc3RydWN0b3IgZnVuY3Rp
b24uXG4gICAqIEBwdWJsaWNcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZUNsYXNzKHNwZWMpIHtc
biAgICAvLyBUbyBrZWVwIG91ciB3YXJuaW5ncyBtb3JlIHVuZGVyc3RhbmRhYmxlLCB3ZSdsbCB1
c2UgYSBsaXR0bGUgaGFjayBoZXJlIHRvXG4gICAgLy8gZW5zdXJlIHRoYXQgQ29uc3RydWN0b3Iu
bmFtZSAhPT0gJ0NvbnN0cnVjdG9yJy4gVGhpcyBtYWtlcyBzdXJlIHdlIGRvbid0XG4gICAgLy8g
dW5uZWNlc3NhcmlseSBpZGVudGlmeSBhIGNsYXNzIHdpdGhvdXQgZGlzcGxheU5hbWUgYXMgJ0Nv
bnN0cnVjdG9yJy5cbiAgICB2YXIgQ29uc3RydWN0b3IgPSBpZGVudGl0eShmdW5jdGlvbihwcm9w
cywgY29udGV4dCwgdXBkYXRlcikge1xuICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBnZXRzIG92
ZXJyaWRkZW4gYnkgbW9ja3MuIFRoZSBhcmd1bWVudCBpcyB1c2VkXG4gICAgICAvLyBieSBtb2Nr
cyB0byBhc3NlcnQgb24gd2hhdCBnZXRzIG1vdW50ZWQuXG5cbiAgICAgIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm5pbmcoXG4gICAgICAg
ICAgdGhpcyBpbnN0YW5jZW9mIENvbnN0cnVjdG9yLFxuICAgICAgICAgICdTb21ldGhpbmcgaXMg
Y2FsbGluZyBhIFJlYWN0IGNvbXBvbmVudCBkaXJlY3RseS4gVXNlIGEgZmFjdG9yeSBvciAnICtc
biAgICAgICAgICAgICdKU1ggaW5zdGVhZC4gU2VlOiBodHRwczovL2ZiLm1lL3JlYWN0LWxlZ2Fj
eWZhY3RvcnknXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdpcmUgdXAgYXV0by1i
aW5kaW5nXG4gICAgICBpZiAodGhpcy5fX3JlYWN0QXV0b0JpbmRQYWlycy5sZW5ndGgpIHtcbiAg
ICAgICAgYmluZEF1dG9CaW5kTWV0aG9kcyh0aGlzKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5w
cm9wcyA9IHByb3BzO1xuICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgIHRoaXMu
cmVmcyA9IGVtcHR5T2JqZWN0O1xuICAgICAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFj
dE5vb3BVcGRhdGVRdWV1ZTtcblxuICAgICAgdGhpcy5zdGF0ZSA9IG51bGw7XG5cbiAgICAgIC8v
IFJlYWN0Q2xhc3NlcyBkb2Vzbid0IGhhdmUgY29uc3RydWN0b3JzLiBJbnN0ZWFkLCB0aGV5IHVz
ZSB0aGVcbiAgICAgIC8vIGdldEluaXRpYWxTdGF0ZSBhbmQgY29tcG9uZW50V2lsbE1vdW50IG1l
dGhvZHMgZm9yIGluaXRpYWxpemF0aW9uLlxuXG4gICAgICB2YXIgaW5pdGlhbFN0YXRlID0gdGhp
cy5nZXRJbml0aWFsU3RhdGUgPyB0aGlzLmdldEluaXRpYWxTdGF0ZSgpIDogbnVsbDtcbiAgICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIC8v
IFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJldHVybmluZyBu
dWxsLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgaW5pdGlhbFN0YXRlID09PSB1bmRlZmluZWQg
JiZcbiAgICAgICAgICB0aGlzLmdldEluaXRpYWxTdGF0ZS5faXNNb2NrRnVuY3Rpb25cbiAgICAg
ICAgKSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBiYWQgcHJhY3RpY2UuIENvbnNp
ZGVyIHdhcm5pbmcgaGVyZSBhbmRcbiAgICAgICAgICAvLyBkZXByZWNhdGluZyB0aGlzIGNvbnZl
bmllbmNlLlxuICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgIHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdv
YmplY3QnICYmICFBcnJheS5pc0FycmF5KGluaXRpYWxTdGF0ZSksXG4gICAgICAgICclcy5nZXRJ
bml0aWFsU3RhdGUoKTogbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwnLFxuICAgICAgICBD
b25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnXG4gICAg
ICApO1xuXG4gICAgICB0aGlzLnN0YXRlID0gaW5pdGlhbFN0YXRlO1xuICAgIH0pO1xuICAgIENv
bnN0cnVjdG9yLnByb3RvdHlwZSA9IG5ldyBSZWFjdENsYXNzQ29tcG9uZW50KCk7XG4gICAgQ29u
c3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I7XG4gICAgQ29uc3Ry
dWN0b3IucHJvdG90eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJzID0gW107XG5cbiAgICBpbmplY3Rl
ZE1peGlucy5mb3JFYWNoKG1peFNwZWNJbnRvQ29tcG9uZW50LmJpbmQobnVsbCwgQ29uc3RydWN0
b3IpKTtcblxuICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBJc01vdW50ZWRQ
cmVNaXhpbik7XG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHNwZWMpO1xu
ICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBJc01vdW50ZWRQb3N0TWl4aW4p
O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdFByb3BzIHByb3BlcnR5IGFmdGVyIGFs
bCBtaXhpbnMgaGF2ZSBiZWVuIG1lcmdlZC5cbiAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVs
dFByb3BzKSB7XG4gICAgICBDb25zdHJ1Y3Rvci5kZWZhdWx0UHJvcHMgPSBDb25zdHJ1Y3Rvci5n
ZXREZWZhdWx0UHJvcHMoKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gVGhpcyBpcyBhIHRhZyB0byBpbmRpY2F0ZSB0
aGF0IHRoZSB1c2Ugb2YgdGhlc2UgbWV0aG9kIG5hbWVzIGlzIG9rLFxuICAgICAgLy8gc2luY2Ug
aXQncyB1c2VkIHdpdGggY3JlYXRlQ2xhc3MuIElmIGl0J3Mgbm90LCB0aGVuIGl0J3MgbGlrZWx5
IGFcbiAgICAgIC8vIG1pc3Rha2Ugc28gd2UnbGwgd2FybiB5b3UgdG8gdXNlIHRoZSBzdGF0aWMg
cHJvcGVydHksIHByb3BlcnR5XG4gICAgICAvLyBpbml0aWFsaXplciBvciBjb25zdHJ1Y3RvciBy
ZXNwZWN0aXZlbHkuXG4gICAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XG4g
ICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCA9
IHt9O1xuICAgICAgfVxuICAgICAgaWYgKENvbnN0cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFs
U3RhdGUpIHtcbiAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZS5p
c1JlYWN0Q2xhc3NBcHByb3ZlZCA9IHt9O1xuICAgICAgfVxuICAgIH1cblxuICAgIF9pbnZhcmlh
bnQoXG4gICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUucmVuZGVyLFxuICAgICAgJ2NyZWF0ZUNs
YXNzKC4uLik6IENsYXNzIHNwZWNpZmljYXRpb24gbXVzdCBpbXBsZW1lbnQgYSBgcmVuZGVyYCBt
ZXRob2QuJ1xuICAgICk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgICAgd2FybmluZyhcbiAgICAgICAgIUNvbnN0cnVjdG9yLnByb3RvdHlw
ZS5jb21wb25lbnRTaG91bGRVcGRhdGUsXG4gICAgICAgICclcyBoYXMgYSBtZXRob2QgY2FsbGVk
ICcgK1xuICAgICAgICAgICdjb21wb25lbnRTaG91bGRVcGRhdGUoKS4gRGlkIHlvdSBtZWFuIHNo
b3VsZENvbXBvbmVudFVwZGF0ZSgpPyAnICtcbiAgICAgICAgICAnVGhlIG5hbWUgaXMgcGhyYXNl
ZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzICcgK1xuICAgICAgICAgICdl
eHBlY3RlZCB0byByZXR1cm4gYSB2YWx1ZS4nLFxuICAgICAgICBzcGVjLmRpc3BsYXlOYW1lIHx8
ICdBIGNvbXBvbmVudCdcbiAgICAgICk7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICAhQ29uc3Ry
dWN0b3IucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMsXG4gICAgICAgICclcyBo
YXMgYSBtZXRob2QgY2FsbGVkICcgK1xuICAgICAgICAgICdjb21wb25lbnRXaWxsUmVjaWV2ZVBy
b3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JyxcbiAgICAg
ICAgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnXG4gICAgICApO1xuICAgIH1cblxu
ICAgIC8vIFJlZHVjZSB0aW1lIHNwZW50IGRvaW5nIGxvb2t1cHMgYnkgc2V0dGluZyB0aGVzZSBv
biB0aGUgcHJvdG90eXBlLlxuICAgIGZvciAodmFyIG1ldGhvZE5hbWUgaW4gUmVhY3RDbGFzc0lu
dGVyZmFjZSkge1xuICAgICAgaWYgKCFDb25zdHJ1Y3Rvci5wcm90b3R5cGVbbWV0aG9kTmFtZV0p
IHtcbiAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdID0gbnVsbDtcbiAg
ICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH1cblxuICByZXR1cm4g
Y3JlYXRlQ2xhc3M7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeTtcblxuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2NyZWF0ZS1yZWFjdC1j
bGFzcy9mYWN0b3J5LmpzXG4gKiogbW9kdWxlIGlkID0gOTdcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG52YXIgX2h5cGhlblBhdHRlcm4gPSAvLSguKS9nO1xu
XG4vKipcbiAqIENhbWVsY2FzZXMgYSBoeXBoZW5hdGVkIHN0cmluZywgZm9yIGV4YW1wbGU6XG4g
KlxuICogICA+IGNhbWVsaXplKCdiYWNrZ3JvdW5kLWNvbG9yJylcbiAqICAgPCBcImJhY2tncm91
bmRDb2xvclwiXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybiB7c3Ry
aW5nfVxuICovXG5mdW5jdGlvbiBjYW1lbGl6ZShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5y
ZXBsYWNlKF9oeXBoZW5QYXR0ZXJuLCBmdW5jdGlvbiAoXywgY2hhcmFjdGVyKSB7XG4gICAgcmV0
dXJuIGNoYXJhY3Rlci50b1VwcGVyQ2FzZSgpO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMg
PSBjYW1lbGl6ZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9mYmpzL2xpYi9jYW1lbGl6ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDk4XG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICog
QHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjYW1lbGl6ZSA9IHJlcXVp
cmUoJy4vY2FtZWxpemUnKTtcblxudmFyIG1zUGF0dGVybiA9IC9eLW1zLS87XG5cbi8qKlxuICog
Q2FtZWxjYXNlcyBhIGh5cGhlbmF0ZWQgQ1NTIHByb3BlcnR5IG5hbWUsIGZvciBleGFtcGxlOlxu
ICpcbiAqICAgPiBjYW1lbGl6ZVN0eWxlTmFtZSgnYmFja2dyb3VuZC1jb2xvcicpXG4gKiAgIDwg
XCJiYWNrZ3JvdW5kQ29sb3JcIlxuICogICA+IGNhbWVsaXplU3R5bGVOYW1lKCctbW96LXRyYW5z
aXRpb24nKVxuICogICA8IFwiTW96VHJhbnNpdGlvblwiXG4gKiAgID4gY2FtZWxpemVTdHlsZU5h
bWUoJy1tcy10cmFuc2l0aW9uJylcbiAqICAgPCBcIm1zVHJhbnNpdGlvblwiXG4gKlxuICogQXMg
QW5kaSBTbWl0aCBzdWdnZXN0c1xuICogKGh0dHA6Ly93d3cuYW5kaXNtaXRoLmNvbS9ibG9nLzIw
MTIvMDIvbW9kZXJuaXpyLXByZWZpeGVkLyksIGFuIGAtbXNgIHByZWZpeFxuICogaXMgY29udmVy
dGVkIHRvIGxvd2VyY2FzZSBgbXNgLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAq
IEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gY2FtZWxpemVTdHlsZU5hbWUoc3RyaW5n
KSB7XG4gIHJldHVybiBjYW1lbGl6ZShzdHJpbmcucmVwbGFjZShtc1BhdHRlcm4sICdtcy0nKSk7
XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FtZWxpemVTdHlsZU5hbWU7XG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvY2FtZWxpemVT
dHlsZU5hbWUuanNcbiAqKiBtb2R1bGUgaWQgPSA5OVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4g
KiovIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICog
XG4gKi9cblxudmFyIGlzVGV4dE5vZGUgPSByZXF1aXJlKCcuL2lzVGV4dE5vZGUnKTtcblxuLypl
c2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlICovXG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZ2l2ZW4g
RE9NIG5vZGUgY29udGFpbnMgb3IgaXMgYW5vdGhlciBET00gbm9kZS5cbiAqL1xuZnVuY3Rpb24g
Y29udGFpbnNOb2RlKG91dGVyTm9kZSwgaW5uZXJOb2RlKSB7XG4gIGlmICghb3V0ZXJOb2RlIHx8
ICFpbm5lck5vZGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSBpZiAob3V0ZXJOb2Rl
ID09PSBpbm5lck5vZGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChpc1RleHRO
b2RlKG91dGVyTm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSBpZiAoaXNUZXh0
Tm9kZShpbm5lck5vZGUpKSB7XG4gICAgcmV0dXJuIGNvbnRhaW5zTm9kZShvdXRlck5vZGUsIGlu
bmVyTm9kZS5wYXJlbnROb2RlKTtcbiAgfSBlbHNlIGlmICgnY29udGFpbnMnIGluIG91dGVyTm9k
ZSkge1xuICAgIHJldHVybiBvdXRlck5vZGUuY29udGFpbnMoaW5uZXJOb2RlKTtcbiAgfSBlbHNl
IGlmIChvdXRlck5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24pIHtcbiAgICByZXR1cm4gISEo
b3V0ZXJOb2RlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGlubmVyTm9kZSkgJiAxNik7XG4gIH0g
ZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29u
dGFpbnNOb2RlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L2ZianMvbGliL2NvbnRhaW5zTm9kZS5qc1xuICoqIG1vZHVsZSBpZCA9IDEwMFxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENvcHly
aWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG52YXIgaW52YXJpYW50ID0g
cmVxdWlyZSgnLi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBDb252ZXJ0IGFycmF5LWxpa2Ugb2Jq
ZWN0cyB0byBhcnJheXMuXG4gKlxuICogVGhpcyBBUEkgYXNzdW1lcyB0aGUgY2FsbGVyIGtub3dz
IHRoZSBjb250ZW50cyBvZiB0aGUgZGF0YSB0eXBlLiBGb3IgbGVzc1xuICogd2VsbCBkZWZpbmVk
IGlucHV0cyB1c2UgY3JlYXRlQXJyYXlGcm9tTWl4ZWQuXG4gKlxuICogQHBhcmFtIHtvYmplY3R8
ZnVuY3Rpb258ZmlsZWxpc3R9IG9ialxuICogQHJldHVybiB7YXJyYXl9XG4gKi9cbmZ1bmN0aW9u
IHRvQXJyYXkob2JqKSB7XG4gIHZhciBsZW5ndGggPSBvYmoubGVuZ3RoO1xuXG4gIC8vIFNvbWUg
YnJvd3NlcnMgYnVpbHRpbiBvYmplY3RzIGNhbiByZXBvcnQgdHlwZW9mICdmdW5jdGlvbicgKGUu
Zy4gTm9kZUxpc3RcbiAgLy8gaW4gb2xkIHZlcnNpb25zIG9mIFNhZmFyaSkuXG4gICEoIUFycmF5
LmlzQXJyYXkob2JqKSAmJiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIG9iaiA9
PT0gJ2Z1bmN0aW9uJykpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IEFycmF5LWxpa2Ugb2JqZWN0IGV4cGVjdGVkJykg
OiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuXG4gICEodHlwZW9mIGxlbmd0aCA9PT0gJ251
bWJlcicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ3RvQXJyYXk6IE9iamVjdCBuZWVkcyBhIGxlbmd0aCBwcm9wZXJ0eScpIDogaW52
YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcblxuICAhKGxlbmd0aCA9PT0gMCB8fCBsZW5ndGggLSAx
IGluIG9iaikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAndG9BcnJheTogT2JqZWN0IHNob3VsZCBoYXZlIGtleXMgZm9yIGluZGljZXMn
KSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG5cbiAgISh0eXBlb2Ygb2JqLmNhbGxlZSAh
PT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAndG9BcnJheTogT2JqZWN0IGNhblxcJ3QgYmUgYGFyZ3VtZW50c2Au
IFVzZSByZXN0IHBhcmFtcyAnICsgJyhmdW5jdGlvbiguLi5hcmdzKSB7fSkgb3IgQXJyYXkuZnJv
bSgpIGluc3RlYWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuXG4gIC8vIE9sZCBJ
RSBkb2Vzbid0IGdpdmUgY29sbGVjdGlvbnMgYWNjZXNzIHRvIGhhc093blByb3BlcnR5LiBBc3N1
bWUgaW5wdXRzXG4gIC8vIHdpdGhvdXQgbWV0aG9kIHdpbGwgdGhyb3cgZHVyaW5nIHRoZSBzbGlj
ZSBjYWxsIGFuZCBza2lwIHN0cmFpZ2h0IHRvIHRoZVxuICAvLyBmYWxsYmFjay5cbiAgaWYgKG9i
ai5oYXNPd25Qcm9wZXJ0eSkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gQXJyYXkucHJvdG90
eXBlLnNsaWNlLmNhbGwob2JqKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBJRSA8IDkg
ZG9lcyBub3Qgc3VwcG9ydCBBcnJheSNzbGljZSBvbiBjb2xsZWN0aW9ucyBvYmplY3RzXG4gICAg
fVxuICB9XG5cbiAgLy8gRmFsbCBiYWNrIHRvIGNvcHlpbmcga2V5IGJ5IGtleS4gVGhpcyBhc3N1
bWVzIGFsbCBrZXlzIGhhdmUgYSB2YWx1ZSxcbiAgLy8gc28gd2lsbCBub3QgcHJlc2VydmUgc3Bh
cnNlbHkgcG9wdWxhdGVkIGlucHV0cy5cbiAgdmFyIHJldCA9IEFycmF5KGxlbmd0aCk7XG4gIGZv
ciAodmFyIGlpID0gMDsgaWkgPCBsZW5ndGg7IGlpKyspIHtcbiAgICByZXRbaWldID0gb2JqW2lp
XTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIFBlcmZvcm0gYSBoZXVyaXN0aWMg
dGVzdCB0byBkZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIFwiYXJyYXktbGlrZVwiLlxuICpcbiAq
ICAgQSBtb25rIGFza2VkIEpvc2h1LCBhIFplbiBtYXN0ZXIsIFwiSGFzIGEgZG9nIEJ1ZGRoYSBu
YXR1cmU/XCJcbiAqICAgSm9zaHUgcmVwbGllZDogXCJNdS5cIlxuICpcbiAqIFRoaXMgZnVuY3Rp
b24gZGV0ZXJtaW5lcyBpZiBpdHMgYXJndW1lbnQgaGFzIFwiYXJyYXkgbmF0dXJlXCI6IGl0IHJl
dHVybnNcbiAqIHRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGFuIGFjdHVhbCBhcnJheSwgYW4gYGFy
Z3VtZW50cycgb2JqZWN0LCBvciBhblxuICogSFRNTENvbGxlY3Rpb24gKGUuZy4gbm9kZS5jaGls
ZE5vZGVzIG9yIG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoKSkuXG4gKlxuICogSXQgd2lsbCBy
ZXR1cm4gZmFsc2UgZm9yIG90aGVyIGFycmF5LWxpa2Ugb2JqZWN0cyBsaWtlIEZpbGVsaXN0Llxu
ICpcbiAqIEBwYXJhbSB7Kn0gb2JqXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlv
biBoYXNBcnJheU5hdHVyZShvYmopIHtcbiAgcmV0dXJuIChcbiAgICAvLyBub3QgbnVsbC9mYWxz
ZVxuICAgICEhb2JqICYmIChcbiAgICAvLyBhcnJheXMgYXJlIG9iamVjdHMsIE5vZGVMaXN0cyBh
cmUgZnVuY3Rpb25zIGluIFNhZmFyaVxuICAgIHR5cGVvZiBvYmogPT0gJ29iamVjdCcgfHwgdHlw
ZW9mIG9iaiA9PSAnZnVuY3Rpb24nKSAmJlxuICAgIC8vIHF1YWNrcyBsaWtlIGFuIGFycmF5XG4g
ICAgJ2xlbmd0aCcgaW4gb2JqICYmXG4gICAgLy8gbm90IHdpbmRvd1xuICAgICEoJ3NldEludGVy
dmFsJyBpbiBvYmopICYmXG4gICAgLy8gbm8gRE9NIG5vZGUgc2hvdWxkIGJlIGNvbnNpZGVyZWQg
YW4gYXJyYXktbGlrZVxuICAgIC8vIGEgJ3NlbGVjdCcgZWxlbWVudCBoYXMgJ2xlbmd0aCcgYW5k
ICdpdGVtJyBwcm9wZXJ0aWVzIG9uIElFOFxuICAgIHR5cGVvZiBvYmoubm9kZVR5cGUgIT0gJ251
bWJlcicgJiYgKFxuICAgIC8vIGEgcmVhbCBhcnJheVxuICAgIEFycmF5LmlzQXJyYXkob2JqKSB8
fFxuICAgIC8vIGFyZ3VtZW50c1xuICAgICdjYWxsZWUnIGluIG9iaiB8fFxuICAgIC8vIEhUTUxD
b2xsZWN0aW9uL05vZGVMaXN0XG4gICAgJ2l0ZW0nIGluIG9iailcbiAgKTtcbn1cblxuLyoqXG4g
KiBFbnN1cmUgdGhhdCB0aGUgYXJndW1lbnQgaXMgYW4gYXJyYXkgYnkgd3JhcHBpbmcgaXQgaW4g
YW4gYXJyYXkgaWYgaXQgaXMgbm90LlxuICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhlIGFyZ3VtZW50
IGlmIGl0IGlzIGFscmVhZHkgYW4gYXJyYXkuXG4gKlxuICogVGhpcyBpcyBtb3N0bHkgdXNlZnVs
IGlkaW9tYXRpY2FsbHk6XG4gKlxuICogICB2YXIgY3JlYXRlQXJyYXlGcm9tTWl4ZWQgPSByZXF1
aXJlKCdjcmVhdGVBcnJheUZyb21NaXhlZCcpO1xuICpcbiAqICAgZnVuY3Rpb24gdGFrZXNPbmVP
ck1vcmVUaGluZ3ModGhpbmdzKSB7XG4gKiAgICAgdGhpbmdzID0gY3JlYXRlQXJyYXlGcm9tTWl4
ZWQodGhpbmdzKTtcbiAqICAgICAuLi5cbiAqICAgfVxuICpcbiAqIFRoaXMgYWxsb3dzIHlvdSB0
byB0cmVhdCBgdGhpbmdzJyBhcyBhbiBhcnJheSwgYnV0IGFjY2VwdCBzY2FsYXJzIGluIHRoZSBB
UEkuXG4gKlxuICogSWYgeW91IG5lZWQgdG8gY29udmVydCBhbiBhcnJheS1saWtlIG9iamVjdCwg
bGlrZSBgYXJndW1lbnRzYCwgaW50byBhbiBhcnJheVxuICogdXNlIHRvQXJyYXkgaW5zdGVhZC5c
biAqXG4gKiBAcGFyYW0geyp9IG9ialxuICogQHJldHVybiB7YXJyYXl9XG4gKi9cbmZ1bmN0aW9u
IGNyZWF0ZUFycmF5RnJvbU1peGVkKG9iaikge1xuICBpZiAoIWhhc0FycmF5TmF0dXJlKG9iaikp
IHtcbiAgICByZXR1cm4gW29ial07XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7
XG4gICAgcmV0dXJuIG9iai5zbGljZSgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0b0FycmF5
KG9iaik7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVBcnJheUZyb21NaXhlZDtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9mYmpz
L2xpYi9jcmVhdGVBcnJheUZyb21NaXhlZC5qc1xuICoqIG1vZHVsZSBpZCA9IDEwMVxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENvcHlyaWdo
dCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4vKmVzbGludC1kaXNhYmxlIGZi
LXd3dy91bnNhZmUtaHRtbCovXG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUo
Jy4vRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIGNyZWF0ZUFycmF5RnJvbU1peGVkID0g
cmVxdWlyZSgnLi9jcmVhdGVBcnJheUZyb21NaXhlZCcpO1xudmFyIGdldE1hcmt1cFdyYXAgPSBy
ZXF1aXJlKCcuL2dldE1hcmt1cFdyYXAnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCcuL2lu
dmFyaWFudCcpO1xuXG4vKipcbiAqIER1bW15IGNvbnRhaW5lciB1c2VkIHRvIHJlbmRlciBhbGwg
bWFya3VwLlxuICovXG52YXIgZHVtbXlOb2RlID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNl
RE9NID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykgOiBudWxsO1xuXG4vKipcbiAqIFBh
dHRlcm4gdXNlZCBieSBgZ2V0Tm9kZU5hbWVgLlxuICovXG52YXIgbm9kZU5hbWVQYXR0ZXJuID0g
L15cXHMqPChcXHcrKS87XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGBub2RlTmFtZWAgb2YgdGhl
IGZpcnN0IGVsZW1lbnQgaW4gYSBzdHJpbmcgb2YgbWFya3VwLlxuICpcbiAqIEBwYXJhbSB7c3Ry
aW5nfSBtYXJrdXAgU3RyaW5nIG9mIG1hcmt1cC5cbiAqIEByZXR1cm4gez9zdHJpbmd9IE5vZGUg
bmFtZSBvZiB0aGUgc3VwcGxpZWQgbWFya3VwLlxuICovXG5mdW5jdGlvbiBnZXROb2RlTmFtZSht
YXJrdXApIHtcbiAgdmFyIG5vZGVOYW1lTWF0Y2ggPSBtYXJrdXAubWF0Y2gobm9kZU5hbWVQYXR0
ZXJuKTtcbiAgcmV0dXJuIG5vZGVOYW1lTWF0Y2ggJiYgbm9kZU5hbWVNYXRjaFsxXS50b0xvd2Vy
Q2FzZSgpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgbm9k
ZXMgcmVuZGVyZWQgZnJvbSB0aGUgc3VwcGxpZWQgbWFya3VwLiBUaGVcbiAqIG9wdGlvbmFsbHkg
c3VwcGxpZWQgYGhhbmRsZVNjcmlwdGAgZnVuY3Rpb24gd2lsbCBiZSBpbnZva2VkIG9uY2UgZm9y
IGVhY2hcbiAqIDxzY3JpcHQ+IGVsZW1lbnQgdGhhdCBpcyByZW5kZXJlZC4gSWYgbm8gYGhhbmRs
ZVNjcmlwdGAgZnVuY3Rpb24gaXMgc3VwcGxpZWQsXG4gKiBhbiBleGNlcHRpb24gaXMgdGhyb3du
IGlmIGFueSA8c2NyaXB0PiBlbGVtZW50cyBhcmUgcmVuZGVyZWQuXG4gKlxuICogQHBhcmFtIHtz
dHJpbmd9IG1hcmt1cCBBIHN0cmluZyBvZiB2YWxpZCBIVE1MIG1hcmt1cC5cbiAqIEBwYXJhbSB7
P2Z1bmN0aW9ufSBoYW5kbGVTY3JpcHQgSW52b2tlZCBvbmNlIGZvciBlYWNoIHJlbmRlcmVkIDxz
Y3JpcHQ+LlxuICogQHJldHVybiB7YXJyYXk8RE9NRWxlbWVudHxET01UZXh0Tm9kZT59IEFuIGFy
cmF5IG9mIHJlbmRlcmVkIG5vZGVzLlxuICovXG5mdW5jdGlvbiBjcmVhdGVOb2Rlc0Zyb21NYXJr
dXAobWFya3VwLCBoYW5kbGVTY3JpcHQpIHtcbiAgdmFyIG5vZGUgPSBkdW1teU5vZGU7XG4gICEh
IWR1bW15Tm9kZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICdjcmVhdGVOb2Rlc0Zyb21NYXJrdXAgZHVtbXkgbm90IGluaXRpYWxpemVk
JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICB2YXIgbm9kZU5hbWUgPSBnZXROb2Rl
TmFtZShtYXJrdXApO1xuXG4gIHZhciB3cmFwID0gbm9kZU5hbWUgJiYgZ2V0TWFya3VwV3JhcChu
b2RlTmFtZSk7XG4gIGlmICh3cmFwKSB7XG4gICAgbm9kZS5pbm5lckhUTUwgPSB3cmFwWzFdICsg
bWFya3VwICsgd3JhcFsyXTtcblxuICAgIHZhciB3cmFwRGVwdGggPSB3cmFwWzBdO1xuICAgIHdo
aWxlICh3cmFwRGVwdGgtLSkge1xuICAgICAgbm9kZSA9IG5vZGUubGFzdENoaWxkO1xuICAgIH1c
biAgfSBlbHNlIHtcbiAgICBub2RlLmlubmVySFRNTCA9IG1hcmt1cDtcbiAgfVxuXG4gIHZhciBz
Y3JpcHRzID0gbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0Jyk7XG4gIGlmIChzY3Jp
cHRzLmxlbmd0aCkge1xuICAgICFoYW5kbGVTY3JpcHQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnY3JlYXRlTm9kZXNGcm9tTWFya3Vw
KC4uLik6IFVuZXhwZWN0ZWQgPHNjcmlwdD4gZWxlbWVudCByZW5kZXJlZC4nKSA6IGludmFyaWFu
dChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY3JlYXRlQXJyYXlGcm9tTWl4ZWQoc2NyaXB0cykuZm9y
RWFjaChoYW5kbGVTY3JpcHQpO1xuICB9XG5cbiAgdmFyIG5vZGVzID0gQXJyYXkuZnJvbShub2Rl
LmNoaWxkTm9kZXMpO1xuICB3aGlsZSAobm9kZS5sYXN0Q2hpbGQpIHtcbiAgICBub2RlLnJlbW92
ZUNoaWxkKG5vZGUubGFzdENoaWxkKTtcbiAgfVxuICByZXR1cm4gbm9kZXM7XG59XG5cbm1vZHVs
ZS5leHBvcnRzID0gY3JlYXRlTm9kZXNGcm9tTWFya3VwO1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2NyZWF0ZU5vZGVzRnJvbU1h
cmt1cC5qc1xuICoqIG1vZHVsZSBpZCA9IDEwMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5c
bi8qZXNsaW50LWRpc2FibGUgZmItd3d3L3Vuc2FmZS1odG1sICovXG5cbnZhciBFeGVjdXRpb25F
bnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIGlu
dmFyaWFudCA9IHJlcXVpcmUoJy4vaW52YXJpYW50Jyk7XG5cbi8qKlxuICogRHVtbXkgY29udGFp
bmVyIHVzZWQgdG8gZGV0ZWN0IHdoaWNoIHdyYXBzIGFyZSBuZWNlc3NhcnkuXG4gKi9cbnZhciBk
dW1teU5vZGUgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gPyBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKSA6IG51bGw7XG5cbi8qKlxuICogU29tZSBicm93c2VycyBjYW5ub3Qg
dXNlIGBpbm5lckhUTUxgIHRvIHJlbmRlciBjZXJ0YWluIGVsZW1lbnRzIHN0YW5kYWxvbmUsXG4g
KiBzbyB3ZSB3cmFwIHRoZW0sIHJlbmRlciB0aGUgd3JhcHBlZCBub2RlcywgdGhlbiBleHRyYWN0
IHRoZSBkZXNpcmVkIG5vZGUuXG4gKlxuICogSW4gSUU4LCBjZXJ0YWluIGVsZW1lbnRzIGNhbm5v
dCByZW5kZXIgYWxvbmUsIHNvIHdyYXAgYWxsIGVsZW1lbnRzICgnKicpLlxuICovXG5cbnZhciBz
aG91bGRXcmFwID0ge307XG5cbnZhciBzZWxlY3RXcmFwID0gWzEsICc8c2VsZWN0IG11bHRpcGxl
PVwidHJ1ZVwiPicsICc8L3NlbGVjdD4nXTtcbnZhciB0YWJsZVdyYXAgPSBbMSwgJzx0YWJsZT4n
LCAnPC90YWJsZT4nXTtcbnZhciB0cldyYXAgPSBbMywgJzx0YWJsZT48dGJvZHk+PHRyPicsICc8
L3RyPjwvdGJvZHk+PC90YWJsZT4nXTtcblxudmFyIHN2Z1dyYXAgPSBbMSwgJzxzdmcgeG1sbnM9
XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPicsICc8L3N2Zz4nXTtcblxudmFyIG1hcmt1
cFdyYXAgPSB7XG4gICcqJzogWzEsICc/PGRpdj4nLCAnPC9kaXY+J10sXG5cbiAgJ2FyZWEnOiBb
MSwgJzxtYXA+JywgJzwvbWFwPiddLFxuICAnY29sJzogWzIsICc8dGFibGU+PHRib2R5PjwvdGJv
ZHk+PGNvbGdyb3VwPicsICc8L2NvbGdyb3VwPjwvdGFibGU+J10sXG4gICdsZWdlbmQnOiBbMSwg
JzxmaWVsZHNldD4nLCAnPC9maWVsZHNldD4nXSxcbiAgJ3BhcmFtJzogWzEsICc8b2JqZWN0Pics
ICc8L29iamVjdD4nXSxcbiAgJ3RyJzogWzIsICc8dGFibGU+PHRib2R5PicsICc8L3Rib2R5Pjwv
dGFibGU+J10sXG5cbiAgJ29wdGdyb3VwJzogc2VsZWN0V3JhcCxcbiAgJ29wdGlvbic6IHNlbGVj
dFdyYXAsXG5cbiAgJ2NhcHRpb24nOiB0YWJsZVdyYXAsXG4gICdjb2xncm91cCc6IHRhYmxlV3Jh
cCxcbiAgJ3Rib2R5JzogdGFibGVXcmFwLFxuICAndGZvb3QnOiB0YWJsZVdyYXAsXG4gICd0aGVh
ZCc6IHRhYmxlV3JhcCxcblxuICAndGQnOiB0cldyYXAsXG4gICd0aCc6IHRyV3JhcFxufTtcblxu
Ly8gSW5pdGlhbGl6ZSB0aGUgU1ZHIGVsZW1lbnRzIHNpbmNlIHdlIGtub3cgdGhleSdsbCBhbHdh
eXMgbmVlZCB0byBiZSB3cmFwcGVkXG4vLyBjb25zaXN0ZW50bHkuIElmIHRoZXkgYXJlIGNyZWF0
ZWQgaW5zaWRlIGEgPGRpdj4gdGhleSB3aWxsIGJlIGluaXRpYWxpemVkIGluXG4vLyB0aGUgd3Jv
bmcgbmFtZXNwYWNlIChhbmQgd2lsbCBub3QgZGlzcGxheSkuXG52YXIgc3ZnRWxlbWVudHMgPSBb
J2NpcmNsZScsICdjbGlwUGF0aCcsICdkZWZzJywgJ2VsbGlwc2UnLCAnZycsICdpbWFnZScsICds
aW5lJywgJ2xpbmVhckdyYWRpZW50JywgJ21hc2snLCAncGF0aCcsICdwYXR0ZXJuJywgJ3BvbHln
b24nLCAncG9seWxpbmUnLCAncmFkaWFsR3JhZGllbnQnLCAncmVjdCcsICdzdG9wJywgJ3RleHQn
LCAndHNwYW4nXTtcbnN2Z0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG5vZGVOYW1lKSB7XG4g
IG1hcmt1cFdyYXBbbm9kZU5hbWVdID0gc3ZnV3JhcDtcbiAgc2hvdWxkV3JhcFtub2RlTmFtZV0g
PSB0cnVlO1xufSk7XG5cbi8qKlxuICogR2V0cyB0aGUgbWFya3VwIHdyYXAgY29uZmlndXJhdGlv
biBmb3IgdGhlIHN1cHBsaWVkIGBub2RlTmFtZWAuXG4gKlxuICogTk9URTogVGhpcyBsYXppbHkg
ZGV0ZWN0cyB3aGljaCB3cmFwcyBhcmUgbmVjZXNzYXJ5IGZvciB0aGUgY3VycmVudCBicm93c2Vy
LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBub2RlTmFtZSBMb3dlcmNhc2UgYG5vZGVOYW1lYC5c
biAqIEByZXR1cm4gez9hcnJheX0gTWFya3VwIHdyYXAgY29uZmlndXJhdGlvbiwgaWYgYXBwbGlj
YWJsZS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFya3VwV3JhcChub2RlTmFtZSkge1xuICAhISFkdW1t
eU5vZGUgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnTWFya3VwIHdyYXBwaW5nIG5vZGUgbm90IGluaXRpYWxpemVkJykgOiBpbnZhcmlh
bnQoZmFsc2UpIDogdm9pZCAwO1xuICBpZiAoIW1hcmt1cFdyYXAuaGFzT3duUHJvcGVydHkobm9k
ZU5hbWUpKSB7XG4gICAgbm9kZU5hbWUgPSAnKic7XG4gIH1cbiAgaWYgKCFzaG91bGRXcmFwLmhh
c093blByb3BlcnR5KG5vZGVOYW1lKSkge1xuICAgIGlmIChub2RlTmFtZSA9PT0gJyonKSB7XG4g
ICAgICBkdW1teU5vZGUuaW5uZXJIVE1MID0gJzxsaW5rIC8+JztcbiAgICB9IGVsc2Uge1xuICAg
ICAgZHVtbXlOb2RlLmlubmVySFRNTCA9ICc8JyArIG5vZGVOYW1lICsgJz48LycgKyBub2RlTmFt
ZSArICc+JztcbiAgICB9XG4gICAgc2hvdWxkV3JhcFtub2RlTmFtZV0gPSAhZHVtbXlOb2RlLmZp
cnN0Q2hpbGQ7XG4gIH1cbiAgcmV0dXJuIHNob3VsZFdyYXBbbm9kZU5hbWVdID8gbWFya3VwV3Jh
cFtub2RlTmFtZV0gOiBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE1hcmt1cFdyYXA7
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJq
cy9saWIvZ2V0TWFya3VwV3JhcC5qc1xuICoqIG1vZHVsZSBpZCA9IDEwM1xuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBl
Y2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEdldHMgdGhlIHNjcm9sbCBw
b3NpdGlvbiBvZiB0aGUgc3VwcGxpZWQgZWxlbWVudCBvciB3aW5kb3cuXG4gKlxuICogVGhlIHJl
dHVybiB2YWx1ZXMgYXJlIHVuYm91bmRlZCwgdW5saWtlIGBnZXRTY3JvbGxQb3NpdGlvbmAuIFRo
aXMgbWVhbnMgdGhleVxuICogbWF5IGJlIG5lZ2F0aXZlIG9yIGV4Y2VlZCB0aGUgZWxlbWVudCBi
b3VuZGFyaWVzICh3aGljaCBpcyBwb3NzaWJsZSB1c2luZ1xuICogaW5lcnRpYWwgc2Nyb2xsaW5n
KS5cbiAqXG4gKiBAcGFyYW0ge0RPTVdpbmRvd3xET01FbGVtZW50fSBzY3JvbGxhYmxlXG4gKiBA
cmV0dXJuIHtvYmplY3R9IE1hcCB3aXRoIGB4YCBhbmQgYHlgIGtleXMuXG4gKi9cblxuZnVuY3Rp
b24gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24oc2Nyb2xsYWJsZSkge1xuICBpZiAoc2Nyb2xs
YWJsZS5XaW5kb3cgJiYgc2Nyb2xsYWJsZSBpbnN0YW5jZW9mIHNjcm9sbGFibGUuV2luZG93KSB7
XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHNjcm9sbGFibGUucGFnZVhPZmZzZXQgfHwgc2Nyb2xs
YWJsZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHk6IHNjcm9s
bGFibGUucGFnZVlPZmZzZXQgfHwgc2Nyb2xsYWJsZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQu
c2Nyb2xsVG9wXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHNjcm9sbGFibGUuc2Ny
b2xsTGVmdCxcbiAgICB5OiBzY3JvbGxhYmxlLnNjcm9sbFRvcFxuICB9O1xufVxuXG5tb2R1bGUu
ZXhwb3J0cyA9IGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uO1xuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2dldFVuYm91bmRlZFNj
cm9sbFBvc2l0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gMTA0XG4gKiogbW9kdWxlIGNodW5rcyA9
IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbnZhciBfdXBwZXJjYXNlUGF0dGVybiA9IC8oW0EtWl0p
L2c7XG5cbi8qKlxuICogSHlwaGVuYXRlcyBhIGNhbWVsY2FzZWQgc3RyaW5nLCBmb3IgZXhhbXBs
ZTpcbiAqXG4gKiAgID4gaHlwaGVuYXRlKCdiYWNrZ3JvdW5kQ29sb3InKVxuICogICA8IFwiYmFj
a2dyb3VuZC1jb2xvclwiXG4gKlxuICogRm9yIENTUyBzdHlsZSBuYW1lcywgdXNlIGBoeXBoZW5h
dGVTdHlsZU5hbWVgIGluc3RlYWQgd2hpY2ggd29ya3MgcHJvcGVybHlcbiAqIHdpdGggYWxsIHZl
bmRvciBwcmVmaXhlcywgaW5jbHVkaW5nIGBtc2AuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0
cmluZ1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBoeXBoZW5hdGUoc3RyaW5n
KSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZShfdXBwZXJjYXNlUGF0dGVybiwgJy0kMScpLnRv
TG93ZXJDYXNlKCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaHlwaGVuYXRlO1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2h5cGhl
bmF0ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDEwNVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG52YXIgaHlwaGVuYXRlID0gcmVxdWlyZSgnLi9oeXBoZW5hdGUnKTtc
blxudmFyIG1zUGF0dGVybiA9IC9ebXMtLztcblxuLyoqXG4gKiBIeXBoZW5hdGVzIGEgY2FtZWxj
YXNlZCBDU1MgcHJvcGVydHkgbmFtZSwgZm9yIGV4YW1wbGU6XG4gKlxuICogICA+IGh5cGhlbmF0
ZVN0eWxlTmFtZSgnYmFja2dyb3VuZENvbG9yJylcbiAqICAgPCBcImJhY2tncm91bmQtY29sb3Jc
IlxuICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnTW96VHJhbnNpdGlvbicpXG4gKiAgIDwgXCIt
bW96LXRyYW5zaXRpb25cIlxuICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnbXNUcmFuc2l0aW9u
JylcbiAqICAgPCBcIi1tcy10cmFuc2l0aW9uXCJcbiAqXG4gKiBBcyBNb2Rlcm5penIgc3VnZ2Vz
dHMgKGh0dHA6Ly9tb2Rlcm5penIuY29tL2RvY3MvI3ByZWZpeGVkKSwgYW4gYG1zYCBwcmVmaXhc
biAqIGlzIGNvbnZlcnRlZCB0byBgLW1zLWAuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmlu
Z1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBoeXBoZW5hdGVTdHlsZU5hbWUo
c3RyaW5nKSB7XG4gIHJldHVybiBoeXBoZW5hdGUoc3RyaW5nKS5yZXBsYWNlKG1zUGF0dGVybiwg
Jy1tcy0nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoeXBoZW5hdGVTdHlsZU5hbWU7XG5cblxu
LyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIv
aHlwaGVuYXRlU3R5bGVOYW1lLmpzXG4gKiogbW9kdWxlIGlkID0gMTA2XG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbi8qKlxuICogQHBhcmFtIHsqfSBvYmplY3Qg
VGhlIG9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgb3Igbm90
IHRoZSBvYmplY3QgaXMgYSBET00gbm9kZS5cbiAqL1xuZnVuY3Rpb24gaXNOb2RlKG9iamVjdCkg
e1xuICB2YXIgZG9jID0gb2JqZWN0ID8gb2JqZWN0Lm93bmVyRG9jdW1lbnQgfHwgb2JqZWN0IDog
ZG9jdW1lbnQ7XG4gIHZhciBkZWZhdWx0VmlldyA9IGRvYy5kZWZhdWx0VmlldyB8fCB3aW5kb3c7
XG4gIHJldHVybiAhIShvYmplY3QgJiYgKHR5cGVvZiBkZWZhdWx0Vmlldy5Ob2RlID09PSAnZnVu
Y3Rpb24nID8gb2JqZWN0IGluc3RhbmNlb2YgZGVmYXVsdFZpZXcuTm9kZSA6IHR5cGVvZiBvYmpl
Y3QgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmplY3Qubm9kZVR5cGUgPT09ICdudW1iZXInICYm
IHR5cGVvZiBvYmplY3Qubm9kZU5hbWUgPT09ICdzdHJpbmcnKSk7XG59XG5cbm1vZHVsZS5leHBv
cnRzID0gaXNOb2RlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVS
XG4gKiogLi9+L2ZianMvbGliL2lzTm9kZS5qc1xuICoqIG1vZHVsZSBpZCA9IDEwN1xuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENvcHlyaWdo
dCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG52YXIgaXNOb2RlID0gcmVxdWly
ZSgnLi9pc05vZGUnKTtcblxuLyoqXG4gKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgb2JqZWN0IHRv
IGNoZWNrLlxuICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciBvciBub3QgdGhlIG9iamVjdCBp
cyBhIERPTSB0ZXh0IG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGlzVGV4dE5vZGUob2JqZWN0KSB7XG4g
IHJldHVybiBpc05vZGUob2JqZWN0KSAmJiBvYmplY3Qubm9kZVR5cGUgPT0gMztcbn1cblxubW9k
dWxlLmV4cG9ydHMgPSBpc1RleHROb2RlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2lzVGV4dE5vZGUuanNcbiAqKiBtb2R1bGUg
aWQgPSAxMDhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0
IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKiBcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG4gKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1lbW9pemVzIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5j
dGlvbiB0aGF0IGFjY2VwdHMgb25lIHN0cmluZyBhcmd1bWVudC5cbiAqL1xuXG5mdW5jdGlvbiBt
ZW1vaXplU3RyaW5nT25seShjYWxsYmFjaykge1xuICB2YXIgY2FjaGUgPSB7fTtcbiAgcmV0dXJu
IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICBpZiAoIWNhY2hlLmhhc093blByb3BlcnR5KHN0cmlu
ZykpIHtcbiAgICAgIGNhY2hlW3N0cmluZ10gPSBjYWxsYmFjay5jYWxsKHRoaXMsIHN0cmluZyk7
XG4gICAgfVxuICAgIHJldHVybiBjYWNoZVtzdHJpbmddO1xuICB9O1xufVxuXG5tb2R1bGUuZXhw
b3J0cyA9IG1lbW9pemVTdHJpbmdPbmx5O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL21lbW9pemVTdHJpbmdPbmx5LmpzXG4gKiog
bW9kdWxlIGlkID0gMTA5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENv
cHlyaWdodCAyMDE1LCBZYWhvbyEgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0
aGUgTmV3IEJTRCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9y
IHRlcm1zLlxuICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSRUFDVF9TVEFUSUNTID0ge1xuICAg
IGNoaWxkQ29udGV4dFR5cGVzOiB0cnVlLFxuICAgIGNvbnRleHRUeXBlczogdHJ1ZSxcbiAgICBk
ZWZhdWx0UHJvcHM6IHRydWUsXG4gICAgZGlzcGxheU5hbWU6IHRydWUsXG4gICAgZ2V0RGVmYXVs
dFByb3BzOiB0cnVlLFxuICAgIG1peGluczogdHJ1ZSxcbiAgICBwcm9wVHlwZXM6IHRydWUsXG4g
ICAgdHlwZTogdHJ1ZVxufTtcblxudmFyIEtOT1dOX1NUQVRJQ1MgPSB7XG4gIG5hbWU6IHRydWUs
XG4gIGxlbmd0aDogdHJ1ZSxcbiAgcHJvdG90eXBlOiB0cnVlLFxuICBjYWxsZXI6IHRydWUsXG4g
IGNhbGxlZTogdHJ1ZSxcbiAgYXJndW1lbnRzOiB0cnVlLFxuICBhcml0eTogdHJ1ZVxufTtcblxu
dmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIGdldE93blBy
b3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztcbnZhciBnZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIg
Z2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG52YXIgb2JqZWN0UHJvdG90
eXBlID0gZ2V0UHJvdG90eXBlT2YgJiYgZ2V0UHJvdG90eXBlT2YoT2JqZWN0KTtcblxubW9kdWxl
LmV4cG9ydHMgPSBmdW5jdGlvbiBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQs
IHNvdXJjZUNvbXBvbmVudCwgYmxhY2tsaXN0KSB7XG4gICAgaWYgKHR5cGVvZiBzb3VyY2VDb21w
b25lbnQgIT09ICdzdHJpbmcnKSB7IC8vIGRvbid0IGhvaXN0IG92ZXIgc3RyaW5nIChodG1sKSBj
b21wb25lbnRzXG5cbiAgICAgICAgaWYgKG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgICAgICAg
dmFyIGluaGVyaXRlZENvbXBvbmVudCA9IGdldFByb3RvdHlwZU9mKHNvdXJjZUNvbXBvbmVudCk7
XG4gICAgICAgICAgICBpZiAoaW5oZXJpdGVkQ29tcG9uZW50ICYmIGluaGVyaXRlZENvbXBvbmVu
dCAhPT0gb2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICAgICAgICAgICAgaG9pc3ROb25SZWFjdFN0
YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBpbmhlcml0ZWRDb21wb25lbnQsIGJsYWNrbGlzdCk7XG4g
ICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIga2V5cyA9IGdldE93blByb3Bl
cnR5TmFtZXMoc291cmNlQ29tcG9uZW50KTtcblxuICAgICAgICBpZiAoZ2V0T3duUHJvcGVydHlT
eW1ib2xzKSB7XG4gICAgICAgICAgICBrZXlzID0ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlT
eW1ib2xzKHNvdXJjZUNvbXBvbmVudCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0ga2V5
c1tpXTtcbiAgICAgICAgICAgIGlmICghUkVBQ1RfU1RBVElDU1trZXldICYmICFLTk9XTl9TVEFU
SUNTW2tleV0gJiYgKCFibGFja2xpc3QgfHwgIWJsYWNrbGlzdFtrZXldKSkge1xuICAgICAgICAg
ICAgICAgIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZUNv
bXBvbmVudCwga2V5KTtcbiAgICAgICAgICAgICAgICB0cnkgeyAvLyBBdm9pZCBmYWlsdXJlcyBm
cm9tIHJlYWQtb25seSBwcm9wZXJ0aWVzXG4gICAgICAgICAgICAgICAgICAgIGRlZmluZVByb3Bl
cnR5KHRhcmdldENvbXBvbmVudCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgICAgICAgICAgICB9
IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJu
IHRhcmdldENvbXBvbmVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0Q29tcG9uZW50O1xu
fTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL2luZGV4LmpzXG4gKiogbW9kdWxlIGlkID0gMTEwXG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4n
dXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3
aGljaCB5b3VyIHByb2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLlxuICpcbiAqIFByb3ZpZGUgc3By
aW50Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzXG4g
KiB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdl
cmVcbiAqIGV4cGVjdGluZy5cbiAqXG4gKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBz
dHJpcHBlZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFudFxuICogd2lsbCByZW1haW4g
dG8gZW5zdXJlIGxvZ2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLlxuICovXG5cbnZh
ciBpbnZhcmlhbnQgPSBmdW5jdGlvbihjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwg
Zikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
IGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZh
cmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgfVxu
XG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdmFyIGVycm9yO1xuICAgIGlmIChmb3JtYXQgPT09
IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICdNaW5pZmll
ZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVu
dCAnICtcbiAgICAgICAgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFs
IGhlbHBmdWwgd2FybmluZ3MuJ1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGFy
Z3MgPSBbYSwgYiwgYywgZCwgZSwgZl07XG4gICAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgICAg
ZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlv
bigpIHsgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107IH0pXG4gICAgICApO1xuICAgICAgZXJyb3Iu
bmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB9XG5cbiAgICBlcnJvci5mcmFtZXNU
b1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG4g
ICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gaW52YXJpYW50O1xu
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vaW52
YXJpYW50L2Jyb3dzZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAxMTFcbiAqKiBtb2R1bGUgY2h1bmtz
ID0gMFxuICoqLyIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBnZXRS
YXdUYWcgPSByZXF1aXJlKCcuL19nZXRSYXdUYWcnKSxcbiAgICBvYmplY3RUb1N0cmluZyA9IHJl
cXVpcmUoJy4vX29iamVjdFRvU3RyaW5nJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1
bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgIHVu
ZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUg
cmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0
cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBv
ZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpc
biAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAq
IEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0
aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1
cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAg
cmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUp
KVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xu
fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRUYWc7XG5cblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Jhc2VHZXRUYWcuanNcbiAq
KiBtb2R1bGUgaWQgPSAxMTJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKiBEZXRl
Y3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2Jh
bCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3Qg
PT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbm1vZHVsZS5leHBvcnRzID0gZnJlZUdsb2JhbDtcblxu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFz
aC9fZnJlZUdsb2JhbC5qc1xuICoqIG1vZHVsZSBpZCA9IDExM1xuICoqIG1vZHVsZSBjaHVua3Mg
PSAwXG4gKiovIiwidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG5cbi8qKiBC
dWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZSA9IG92ZXJBcmco
T2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFBy
b3RvdHlwZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L2xvZGFzaC9fZ2V0UHJvdG90eXBlLmpzXG4gKiogbW9kdWxlIGlkID0gMTE0XG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9s
Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBv
YmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVj
dHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJv
dG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0
b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8j
c2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBu
YXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogQnVpbHQt
aW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5
bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZl
cnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2Ag
dmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0
byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdU
YWdgLlxuICovXG5mdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgdmFyIGlzT3duID0gaGFz
T3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLFxuICAgICAgdGFnID0gdmFs
dWVbc3ltVG9TdHJpbmdUYWddO1xuXG4gIHRyeSB7XG4gICAgdmFsdWVbc3ltVG9TdHJpbmdUYWdd
ID0gdW5kZWZpbmVkO1xuICAgIHZhciB1bm1hc2tlZCA9IHRydWU7XG4gIH0gY2F0Y2ggKGUpIHt9
XG5cbiAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICBp
ZiAodW5tYXNrZWQpIHtcbiAgICBpZiAoaXNPd24pIHtcbiAgICAgIHZhbHVlW3N5bVRvU3RyaW5n
VGFnXSA9IHRhZztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5n
VGFnXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMg
PSBnZXRSYXdUYWc7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RF
UlxuICoqIC4vfi9sb2Rhc2gvX2dldFJhd1RhZy5qc1xuICoqIG1vZHVsZSBpZCA9IDExNVxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCBy
ZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoq
XG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0
cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2Jq
ZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmlu
ZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAq
IEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3Ry
aW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RU
b1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1
ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb2JqZWN0VG9TdHJpbmc7XG5cblxuXG4vKioqKioq
KioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX29iamVjdFRv
U3RyaW5nLmpzXG4gKiogbW9kdWxlIGlkID0gMTE2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAq
Ki8iLCIvKipcbiAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNg
IHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFy
YW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICogQHBhcmFtIHtGdW5j
dGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVu
Y3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlckFyZyhm
dW5jLCB0cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBm
dW5jKHRyYW5zZm9ybShhcmcpKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvdmVyQXJn
O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34v
bG9kYXNoL19vdmVyQXJnLmpzXG4gKiogbW9kdWxlIGlkID0gMTE3XG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtc
blxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5
cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAm
JiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4g
Ki9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJu
IHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG5cblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX3Jvb3QuanNcbiAqKiBt
b2R1bGUgaWQgPSAxMThcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ2hl
Y2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYg
aXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0
XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICog
QGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxu
ICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0
LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uo
e30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4g
KiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZh
bHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5m
dW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYg
dHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0
TGlrZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L2xvZGFzaC9pc09iamVjdExpa2UuanNcbiAqKiBtb2R1bGUgaWQgPSAxMTlcbiAqKiBtb2R1
bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgdmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuICB2YXIg
d2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcbiAgdmFyIFJlYWN0UHJvcFR5
cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcbiAgdmFy
IGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IHRoZSB2
YWx1ZXMgbWF0Y2ggd2l0aCB0aGUgdHlwZSBzcGVjcy5cbiAqIEVycm9yIG1lc3NhZ2VzIGFyZSBt
ZW1vcml6ZWQgYW5kIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxuICpcbiAqIEBwYXJhbSB7b2Jq
ZWN0fSB0eXBlU3BlY3MgTWFwIG9mIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlXG4gKiBAcGFyYW0g
e29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNr
ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuIFwicHJvcFwiLCBcImNvbnRleHRc
IiwgXCJjaGlsZCBjb250ZXh0XCJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb21wb25lbnROYW1lIE5h
bWUgb2YgdGhlIGNvbXBvbmVudCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gKiBAcGFyYW0gez9GdW5j
dGlvbn0gZ2V0U3RhY2sgUmV0dXJucyB0aGUgY29tcG9uZW50IHN0YWNrLlxuICogQHByaXZhdGVc
biAqL1xuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9u
LCBjb21wb25lbnROYW1lLCBnZXRTdGFjaykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgIGZvciAodmFyIHR5cGVTcGVjTmFtZSBpbiB0eXBlU3Bl
Y3MpIHtcbiAgICAgIGlmICh0eXBlU3BlY3MuaGFzT3duUHJvcGVydHkodHlwZVNwZWNOYW1lKSkg
e1xuICAgICAgICB2YXIgZXJyb3I7XG4gICAgICAgIC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1h
eSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvXG4gICAgICAgIC8vIGZh
aWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxv
ZyBpdC5cbiAgICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xs
IGxldCB0aGVtIHRocm93LlxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgaW50
ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxu
ICAgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdp
dGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgICBpbnZhcmlhbnQodHlwZW9mIHR5cGVTcGVj
c1t0eXBlU3BlY05hbWVdID09PSAnZnVuY3Rpb24nLCAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZh
bGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICsgJ1JlYWN0LlByb3BU
eXBlcy4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIGxvY2F0aW9uLCB0eXBlU3Bl
Y05hbWUpO1xuICAgICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVz
LCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BU
eXBlc1NlY3JldCk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IgPSBl
eDtcbiAgICAgICAgfVxuICAgICAgICB3YXJuaW5nKCFlcnJvciB8fCBlcnJvciBpbnN0YW5jZW9m
IEVycm9yLCAnJXM6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAlcyBgJXNgIGlzIGludmFsaWQ7IHRo
ZSB0eXBlIGNoZWNrZXIgJyArICdmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVy
cm9yYCBidXQgcmV0dXJuZWQgYSAlcy4gJyArICdZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBh
c3MgYW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciAnICsgJ2NyZWF0b3IgKGFycmF5T2Ys
IGluc3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgJyArICdzaGFwZSBh
bGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3Mn
LCBsb2NhdGlvbiwgdHlwZVNwZWNOYW1lLCB0eXBlb2YgZXJyb3IpO1xuICAgICAgICBpZiAoZXJy
b3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1
cmVzKSkge1xuICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNh
dXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAgIC8vIHNhbWUgZXJy
b3IuXG4gICAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtc
blxuICAgICAgICAgIHZhciBzdGFjayA9IGdldFN0YWNrID8gZ2V0U3RhY2soKSA6ICcnO1xuXG4g
ICAgICAgICAgd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCAlcyB0eXBlOiAlcyVzJywgbG9jYXRpb24s
IGVycm9yLm1lc3NhZ2UsIHN0YWNrICE9IG51bGwgPyBzdGFjayA6ICcnKTtcbiAgICAgICAgfVxu
ICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNoZWNrUHJvcFR5cGVz
O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34v
cHJvcC10eXBlcy9jaGVja1Byb3BUeXBlcy5qc1xuICoqIG1vZHVsZSBpZCA9IDEyMFxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5
RnVuY3Rpb24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQn
KTtcbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5
cGVzU2VjcmV0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9u
IHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxO
YW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkg
e1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAg
ICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbnZhcmlhbnQoXG4gICAgICBmYWxzZSxcbiAgICAgICdD
YWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkg
dGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNr
UHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDov
L2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gIH07XG4gIHNoaW0uaXNSZXF1
aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4g
IH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHBy
b2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZh
ciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBib29sOiBzaGltLFxu
ICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAg
ICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAg
IGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBn
ZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25l
T2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGlt
XG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMgPSBlbXB0eUZ1bmN0aW9u
O1xuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1
cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMu
anNcbiAqKiBtb2R1bGUgaWQgPSAxMjFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVtcHR5RnVu
Y3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgaW52YXJpYW50
ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUo
J2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWly
ZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcbnZhciBjaGVja1Byb3BUeXBlcyA9IHJl
cXVpcmUoJy4vY2hlY2tQcm9wVHlwZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihp
c1ZhbGlkRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcykge1xuICAvKiBnbG9iYWwgU3ltYm9s
ICovXG4gIHZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24n
ICYmIFN5bWJvbC5pdGVyYXRvcjtcbiAgdmFyIEZBVVhfSVRFUkFUT1JfU1lNQk9MID0gJ0BAaXRl
cmF0b3InOyAvLyBCZWZvcmUgU3ltYm9sIHNwZWMuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhl
IGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlvbiBjb250YWluZWQgb24gdGhlIGl0ZXJhYmxlIG9iamVj
dC5cbiAgICpcbiAgICogQmUgc3VyZSB0byBpbnZva2UgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGl0
ZXJhYmxlIGFzIGNvbnRleHQ6XG4gICAqXG4gICAqICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0
ZXJhdG9yRm4obXlJdGVyYWJsZSk7XG4gICAqICAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgKiAg
ICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobXlJdGVyYWJsZSk7XG4gICAqICAg
ICAgIC4uLlxuICAgKiAgICAgfVxuICAgKlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG1heWJlSXRl
cmFibGVcbiAgICogQHJldHVybiB7P2Z1bmN0aW9ufVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0SXRl
cmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBtYXliZUl0ZXJh
YmxlICYmIChJVEVSQVRPUl9TWU1CT0wgJiYgbWF5YmVJdGVyYWJsZVtJVEVSQVRPUl9TWU1CT0xd
IHx8IG1heWJlSXRlcmFibGVbRkFVWF9JVEVSQVRPUl9TWU1CT0xdKTtcbiAgICBpZiAodHlwZW9m
IGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBpdGVyYXRvckZuO1xu
ICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb2xsZWN0aW9uIG9mIG1ldGhvZHMgdGhhdCBhbGxv
dyBkZWNsYXJhdGlvbiBhbmQgdmFsaWRhdGlvbiBvZiBwcm9wcyB0aGF0IGFyZVxuICAgKiBzdXBw
bGllZCB0byBSZWFjdCBjb21wb25lbnRzLiBFeGFtcGxlIHVzYWdlOlxuICAgKlxuICAgKiAgIHZh
ciBQcm9wcyA9IHJlcXVpcmUoJ1JlYWN0UHJvcFR5cGVzJyk7XG4gICAqICAgdmFyIE15QXJ0aWNs
ZSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgICogICAgIHByb3BUeXBlczoge1xuICAgKiAgICAg
ICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgcHJvcCBuYW1lZCBcImRlc2NyaXB0aW9uXCIuXG4gICAq
ICAgICAgIGRlc2NyaXB0aW9uOiBQcm9wcy5zdHJpbmcsXG4gICAqXG4gICAqICAgICAgIC8vIEEg
cmVxdWlyZWQgZW51bSBwcm9wIG5hbWVkIFwiY2F0ZWdvcnlcIi5cbiAgICogICAgICAgY2F0ZWdv
cnk6IFByb3BzLm9uZU9mKFsnTmV3cycsJ1Bob3RvcyddKS5pc1JlcXVpcmVkLFxuICAgKlxuICAg
KiAgICAgICAvLyBBIHByb3AgbmFtZWQgXCJkaWFsb2dcIiB0aGF0IHJlcXVpcmVzIGFuIGluc3Rh
bmNlIG9mIERpYWxvZy5cbiAgICogICAgICAgZGlhbG9nOiBQcm9wcy5pbnN0YW5jZU9mKERpYWxv
ZykuaXNSZXF1aXJlZFxuICAgKiAgICAgfSxcbiAgICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7
IC4uLiB9XG4gICAqICAgfSk7XG4gICAqXG4gICAqIEEgbW9yZSBmb3JtYWwgc3BlY2lmaWNhdGlv
biBvZiBob3cgdGhlc2UgbWV0aG9kcyBhcmUgdXNlZDpcbiAgICpcbiAgICogICB0eXBlIDo9IGFy
cmF5fGJvb2x8ZnVuY3xvYmplY3R8bnVtYmVyfHN0cmluZ3xvbmVPZihbLi4uXSl8aW5zdGFuY2VP
ZiguLi4pXG4gICAqICAgZGVjbCA6PSBSZWFjdFByb3BUeXBlcy57dHlwZX0oLmlzUmVxdWlyZWQp
P1xuICAgKlxuICAgKiBFYWNoIGFuZCBldmVyeSBkZWNsYXJhdGlvbiBwcm9kdWNlcyBhIGZ1bmN0
aW9uIHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlLiBUaGlzXG4gICAqIGFsbG93cyB0aGUgY3JlYXRp
b24gb2YgY3VzdG9tIHZhbGlkYXRpb24gZnVuY3Rpb25zLiBGb3IgZXhhbXBsZTpcbiAgICpcbiAg
ICogIHZhciBNeUxpbmsgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAqICAgIHByb3BUeXBlczog
e1xuICAgKiAgICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBvciBVUkkgcHJvcCBuYW1lZCBcImhy
ZWZcIi5cbiAgICogICAgICBocmVmOiBmdW5jdGlvbihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVu
dE5hbWUpIHtcbiAgICogICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4g
ICAqICAgICAgICBpZiAocHJvcFZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHByb3BWYWx1ZSAhPT0g
J3N0cmluZycgJiZcbiAgICogICAgICAgICAgICAhKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFVSSSkp
IHtcbiAgICogICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcbiAgICogICAgICAgICAgICAnRXhw
ZWN0ZWQgYSBzdHJpbmcgb3IgYW4gVVJJIGZvciAnICsgcHJvcE5hbWUgKyAnIGluICcgK1xuICAg
KiAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcbiAgICogICAgICAgICAgKTtcbiAgICogICAgICAg
IH1cbiAgICogICAgICB9XG4gICAqICAgIH0sXG4gICAqICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7
Li4ufVxuICAgKiAgfSk7XG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cblxuICB2YXIgQU5P
TllNT1VTID0gJzw8YW5vbnltb3VzPj4nO1xuXG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0
aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0
aFRocm93aW5nU2hpbXMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6
IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdhcnJheScpLFxuICAgIGJvb2w6IGNyZWF0ZVBy
aW1pdGl2ZVR5cGVDaGVja2VyKCdib29sZWFuJyksXG4gICAgZnVuYzogY3JlYXRlUHJpbWl0aXZl
VHlwZUNoZWNrZXIoJ2Z1bmN0aW9uJyksXG4gICAgbnVtYmVyOiBjcmVhdGVQcmltaXRpdmVUeXBl
Q2hlY2tlcignbnVtYmVyJyksXG4gICAgb2JqZWN0OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tl
cignb2JqZWN0JyksXG4gICAgc3RyaW5nOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignc3Ry
aW5nJyksXG4gICAgc3ltYm9sOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignc3ltYm9sJyks
XG5cbiAgICBhbnk6IGNyZWF0ZUFueVR5cGVDaGVja2VyKCksXG4gICAgYXJyYXlPZjogY3JlYXRl
QXJyYXlPZlR5cGVDaGVja2VyLFxuICAgIGVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tl
cigpLFxuICAgIGluc3RhbmNlT2Y6IGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIsXG4gICAgbm9k
ZTogY3JlYXRlTm9kZUNoZWNrZXIoKSxcbiAgICBvYmplY3RPZjogY3JlYXRlT2JqZWN0T2ZUeXBl
Q2hlY2tlcixcbiAgICBvbmVPZjogY3JlYXRlRW51bVR5cGVDaGVja2VyLFxuICAgIG9uZU9mVHlw
ZTogY3JlYXRlVW5pb25UeXBlQ2hlY2tlcixcbiAgICBzaGFwZTogY3JlYXRlU2hhcGVUeXBlQ2hl
Y2tlclxuICB9O1xuXG4gIC8qKlxuICAgKiBpbmxpbmVkIE9iamVjdC5pcyBwb2x5ZmlsbCB0byBh
dm9pZCByZXF1aXJpbmcgY29uc3VtZXJzIHNoaXAgdGhlaXIgb3duXG4gICAqIGh0dHBzOi8vZGV2
ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0ds
b2JhbF9PYmplY3RzL09iamVjdC9pc1xuICAgKi9cbiAgLyplc2xpbnQtZGlzYWJsZSBuby1zZWxm
LWNvbXBhcmUqL1xuICBmdW5jdGlvbiBpcyh4LCB5KSB7XG4gICAgLy8gU2FtZVZhbHVlIGFsZ29y
aXRobVxuICAgIGlmICh4ID09PSB5KSB7XG4gICAgICAvLyBTdGVwcyAxLTUsIDctMTBcbiAgICAg
IC8vIFN0ZXBzIDYuYi02LmU6ICswICE9IC0wXG4gICAgICByZXR1cm4geCAhPT0gMCB8fCAxIC8g
eCA9PT0gMSAvIHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFN0ZXAgNi5hOiBOYU4gPT0gTmFO
XG4gICAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5O1xuICAgIH1cbiAgfVxuICAvKmVzbGlu
dC1lbmFibGUgbm8tc2VsZi1jb21wYXJlKi9cblxuICAvKipcbiAgICogV2UgdXNlIGFuIEVycm9y
LWxpa2Ugb2JqZWN0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFzIHBlb3BsZSBtYXkgY2Fs
bFxuICAgKiBQcm9wVHlwZXMgZGlyZWN0bHkgYW5kIGluc3BlY3QgdGhlaXIgb3V0cHV0LiBIb3dl
dmVyLCB3ZSBkb24ndCB1c2UgcmVhbFxuICAgKiBFcnJvcnMgYW55bW9yZS4gV2UgZG9uJ3QgaW5z
cGVjdCB0aGVpciBzdGFjayBhbnl3YXksIGFuZCBjcmVhdGluZyB0aGVtXG4gICAqIGlzIHByb2hp
Yml0aXZlbHkgZXhwZW5zaXZlIGlmIHRoZXkgYXJlIGNyZWF0ZWQgdG9vIG9mdGVuLCBzdWNoIGFz
IHdoYXRcbiAgICogaGFwcGVucyBpbiBvbmVPZlR5cGUoKSBmb3IgYW55IHR5cGUgYmVmb3JlIHRo
ZSBvbmUgdGhhdCBtYXRjaGVkLlxuICAgKi9cbiAgZnVuY3Rpb24gUHJvcFR5cGVFcnJvcihtZXNz
YWdlKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICB0aGlzLnN0YWNrID0gJyc7
XG4gIH1cbiAgLy8gTWFrZSBgaW5zdGFuY2VvZiBFcnJvcmAgc3RpbGwgd29yayBmb3IgcmV0dXJu
ZWQgZXJyb3JzLlxuICBQcm9wVHlwZUVycm9yLnByb3RvdHlwZSA9IEVycm9yLnByb3RvdHlwZTtc
blxuICBmdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSkge1xuICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIg
bWFudWFsUHJvcFR5cGVDYWxsQ2FjaGUgPSB7fTtcbiAgICAgIHZhciBtYW51YWxQcm9wVHlwZVdh
cm5pbmdDb3VudCA9IDA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoZWNrVHlwZShpc1JlcXVpcmVk
LCBwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUs
IHNlY3JldCkge1xuICAgICAgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUgfHwgQU5PTllN
T1VTO1xuICAgICAgcHJvcEZ1bGxOYW1lID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuXG4g
ICAgICBpZiAoc2VjcmV0ICE9PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgICBpZiAo
dGhyb3dPbkRpcmVjdEFjY2Vzcykge1xuICAgICAgICAgIC8vIE5ldyBiZWhhdmlvciBvbmx5IGZv
ciB1c2VycyBvZiBgcHJvcC10eXBlc2AgcGFja2FnZVxuICAgICAgICAgIGludmFyaWFudChcbiAg
ICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRv
cnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2Uu
ICcgK1xuICAgICAgICAgICAgJ1VzZSBgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKClgIHRvIGNh
bGwgdGhlbS4gJyArXG4gICAgICAgICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2Ut
Y2hlY2stcHJvcC10eXBlcydcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1
bmRlZmluZWQnKSB7XG4gICAgICAgICAgLy8gT2xkIGJlaGF2aW9yIGZvciBwZW9wbGUgdXNpbmcg
UmVhY3QuUHJvcFR5cGVzXG4gICAgICAgICAgdmFyIGNhY2hlS2V5ID0gY29tcG9uZW50TmFtZSAr
ICc6JyArIHByb3BOYW1lO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFtYW51YWxQcm9w
VHlwZUNhbGxDYWNoZVtjYWNoZUtleV0gJiZcbiAgICAgICAgICAgIC8vIEF2b2lkIHNwYW1taW5n
IHRoZSBjb25zb2xlIGJlY2F1c2UgdGhleSBhcmUgb2Z0ZW4gbm90IGFjdGlvbmFibGUgZXhjZXB0
IGZvciBsaWIgYXV0aG9yc1xuICAgICAgICAgICAgbWFudWFsUHJvcFR5cGVXYXJuaW5nQ291bnQg
PCAzXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgICBm
YWxzZSxcbiAgICAgICAgICAgICAgJ1lvdSBhcmUgbWFudWFsbHkgY2FsbGluZyBhIFJlYWN0LlBy
b3BUeXBlcyB2YWxpZGF0aW9uICcgK1xuICAgICAgICAgICAgICAnZnVuY3Rpb24gZm9yIHRoZSBg
JXNgIHByb3Agb24gYCVzYC4gVGhpcyBpcyBkZXByZWNhdGVkICcgK1xuICAgICAgICAgICAgICAn
YW5kIHdpbGwgdGhyb3cgaW4gdGhlIHN0YW5kYWxvbmUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcg
K1xuICAgICAgICAgICAgICAnWW91IG1heSBiZSBzZWVpbmcgdGhpcyB3YXJuaW5nIGR1ZSB0byBh
IHRoaXJkLXBhcnR5IFByb3BUeXBlcyAnICtcbiAgICAgICAgICAgICAgJ2xpYnJhcnkuIFNlZSBo
dHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmctZG9udC1jYWxsLXByb3B0eXBlcyAnICsgJ2ZvciBk
ZXRhaWxzLicsXG4gICAgICAgICAgICAgIHByb3BGdWxsTmFtZSxcbiAgICAgICAgICAgICAgY29t
cG9uZW50TmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlQ2Fs
bENhY2hlW2NhY2hlS2V5XSA9IHRydWU7XG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdhcm5p
bmdDb3VudCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHBy
b3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7XG4gICAgICAgIGlmIChpc1JlcXVpcmVkKSB7XG4gICAg
ICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJu
IG5ldyBQcm9wVHlwZUVycm9yKCdUaGUgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFt
ZSArICdgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCAnICsgKCdpbiBgJyArIGNvbXBvbmVudE5hbWUg
KyAnYCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuJykpO1xuICAgICAgICAgIH1cbiAgICAgICAg
ICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJv
cEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGluICcgKyAoJ2AnICsgY29tcG9u
ZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGB1bmRlZmluZWRgLicpKTtcbiAgICAgICAg
fVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2
YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVs
bE5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjaGFpbmVkQ2hlY2tUeXBlID0gY2hl
Y2tUeXBlLmJpbmQobnVsbCwgZmFsc2UpO1xuICAgIGNoYWluZWRDaGVja1R5cGUuaXNSZXF1aXJl
ZCA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIHRydWUpO1xuXG4gICAgcmV0dXJuIGNoYWluZWRDaGVj
a1R5cGU7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcihleHBl
Y3RlZFR5cGUpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBv
bmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgdmFyIHBy
b3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BU
eXBlKHByb3BWYWx1ZSk7XG4gICAgICBpZiAocHJvcFR5cGUgIT09IGV4cGVjdGVkVHlwZSkge1xu
ICAgICAgICAvLyBgcHJvcFZhbHVlYCBiZWluZyBpbnN0YW5jZSBvZiwgc2F5LCBkYXRlL3JlZ2V4
cCwgcGFzcyB0aGUgJ29iamVjdCdcbiAgICAgICAgLy8gY2hlY2ssIGJ1dCB3ZSBjYW4gb2ZmZXIg
YSBtb3JlIHByZWNpc2UgZXJyb3IgbWVzc2FnZSBoZXJlIHJhdGhlciB0aGFuXG4gICAgICAgIC8v
ICdvZiB0eXBlIGBvYmplY3RgJy5cbiAgICAgICAgdmFyIHByZWNpc2VUeXBlID0gZ2V0UHJlY2lz
ZVR5cGUocHJvcFZhbHVlKTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0lu
dmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyAr
ICgnYCcgKyBwcmVjaXNlVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSAr
ICdgLCBleHBlY3RlZCAnKSArICgnYCcgKyBleHBlY3RlZFR5cGUgKyAnYC4nKSk7XG4gICAgICB9
XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5
cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFueVR5cGVDaGVj
a2VyKCkge1xuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcihlbXB0eUZ1bmN0
aW9uLnRoYXRSZXR1cm5zTnVsbCk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVBcnJheU9mVHlw
ZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJv
cE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlm
ICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5l
dyBQcm9wVHlwZUVycm9yKCdQcm9wZXJ0eSBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIGNvbXBv
bmVudCBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlv
biBpbnNpZGUgYXJyYXlPZi4nKTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9w
c1twcm9wTmFtZV07XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAg
ICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1
cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BG
dWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRv
IGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBhcnJheS4nKSk7XG4gICAgICB9
XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BWYWx1ZS5sZW5ndGg7IGkrKykge1xuICAg
ICAgICB2YXIgZXJyb3IgPSB0eXBlQ2hlY2tlcihwcm9wVmFsdWUsIGksIGNvbXBvbmVudE5hbWUs
IGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnWycgKyBpICsgJ10nLCBSZWFjdFByb3BUeXBlc1Nl
Y3JldCk7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAg
cmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAg
ICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAg
fVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tlcigpIHtcbiAgICBmdW5jdGlv
biB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9w
RnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAg
ICBpZiAoIWlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgdmFyIHByb3BUeXBl
ID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVy
cm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0
eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5h
bWUgKyAnYCwgZXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3RFbGVtZW50LicpKTtcbiAgICAgIH1cbiAg
ICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNo
ZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2VUeXBlQ2hl
Y2tlcihleHBlY3RlZENsYXNzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BO
YW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBpZiAo
IShwcm9wc1twcm9wTmFtZV0gaW5zdGFuY2VvZiBleHBlY3RlZENsYXNzKSkge1xuICAgICAgICB2
YXIgZXhwZWN0ZWRDbGFzc05hbWUgPSBleHBlY3RlZENsYXNzLm5hbWUgfHwgQU5PTllNT1VTO1xu
ICAgICAgICB2YXIgYWN0dWFsQ2xhc3NOYW1lID0gZ2V0Q2xhc3NOYW1lKHByb3BzW3Byb3BOYW1l
XSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRp
b24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIGFjdHVhbENs
YXNzTmFtZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3Rl
ZCAnKSArICgnaW5zdGFuY2Ugb2YgYCcgKyBleHBlY3RlZENsYXNzTmFtZSArICdgLicpKTtcbiAg
ICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5h
YmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRW51bVR5
cGVDaGVja2VyKGV4cGVjdGVkVmFsdWVzKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGV4cGVj
dGVkVmFsdWVzKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mLCBl
eHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhcnJheS4nKSA6IHZvaWQgMDtcbiAgICAgIHJldHVybiBl
bXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB2YWxp
ZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5h
bWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlm
IChpcyhwcm9wVmFsdWUsIGV4cGVjdGVkVmFsdWVzW2ldKSkge1xuICAgICAgICAgIHJldHVybiBu
dWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZXNTdHJpbmcgPSBKU09O
LnN0cmluZ2lmeShleHBlY3RlZFZhbHVlcyk7XG4gICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJy
b3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHZh
bHVlIGAnICsgcHJvcFZhbHVlICsgJ2AgJyArICgnc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnRO
YW1lICsgJ2AsIGV4cGVjdGVkIG9uZSBvZiAnICsgdmFsdWVzU3RyaW5nICsgJy4nKSk7XG4gICAg
fVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1c
blxuICBmdW5jdGlvbiBjcmVhdGVPYmplY3RPZlR5cGVDaGVja2VyKHR5cGVDaGVja2VyKSB7XG4g
ICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2Nh
dGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBpZiAodHlwZW9mIHR5cGVDaGVja2VyICE9PSAn
ZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignUHJvcGVydHkg
YCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiBjb21wb25lbnQgYCcgKyBjb21wb25lbnROYW1lICsg
J2AgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIG9iamVjdE9mLicpO1xuICAg
ICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIHZhciBw
cm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICBpZiAocHJvcFR5cGUgIT09
ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAn
ICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyAr
IHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVj
dGVkIGFuIG9iamVjdC4nKSk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gcHJvcFZh
bHVlKSB7XG4gICAgICAgIGlmIChwcm9wVmFsdWUuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAg
ICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnRO
YW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1Nl
Y3JldCk7XG4gICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAg
ICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAg
IHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNr
ZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlVW5pb25UeXBlQ2hlY2tlcihh
cnJheU9mVHlwZUNoZWNrZXJzKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5T2ZUeXBl
Q2hlY2tlcnMpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2ZUeXBl
LCBleHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhcnJheS4nKSA6IHZvaWQgMDtcbiAgICAgIHJldHVy
biBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGFycmF5T2ZUeXBlQ2hlY2tlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBj
aGVja2VyID0gYXJyYXlPZlR5cGVDaGVja2Vyc1tpXTtcbiAgICAgIGlmICh0eXBlb2YgY2hlY2tl
ciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIGZhbHNlLFxu
ICAgICAgICAgICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWQgdG8gb25lT2ZUeXBlLiBFeHBlY3Rl
ZCBhbiBhcnJheSBvZiBjaGVjayBmdW5jdGlvbnMsIGJ1dCAnICtcbiAgICAgICAgICAncmVjZWl2
ZWQgJXMgYXQgaW5kZXggJXMuJyxcbiAgICAgICAgICBnZXRQb3N0Zml4Rm9yVHlwZVdhcm5pbmco
Y2hlY2tlciksXG4gICAgICAgICAgaVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gZW1wdHlG
dW5jdGlvbi50aGF0UmV0dXJuc051bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24g
dmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1
bGxOYW1lKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5T2ZUeXBlQ2hlY2tlcnMu
bGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBhcnJheU9mVHlwZUNoZWNrZXJz
W2ldO1xuICAgICAgICBpZiAoY2hlY2tlcihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUs
IGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KSA9PSBudWxsKSB7
XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0
dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9w
RnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYC4n
KSk7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0
ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVOb2RlQ2hlY2tlcigpIHtcbiAgICBmdW5jdGlv
biB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9w
RnVsbE5hbWUpIHtcbiAgICAgIGlmICghaXNOb2RlKHByb3BzW3Byb3BOYW1lXSkpIHtcbiAgICAg
ICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcg
KyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUg
KyAnYCwgZXhwZWN0ZWQgYSBSZWFjdE5vZGUuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51
bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0
ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVTaGFwZVR5cGVDaGVja2VyKHNoYXBlVHlwZXMp
IHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUs
IGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1tw
cm9wTmFtZV07XG4gICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xu
ICAgICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gbmV3IFBy
b3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSAr
ICdgIG9mIHR5cGUgYCcgKyBwcm9wVHlwZSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsgY29t
cG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBgb2JqZWN0YC4nKSk7XG4gICAgICB9XG4gICAgICBm
b3IgKHZhciBrZXkgaW4gc2hhcGVUeXBlcykge1xuICAgICAgICB2YXIgY2hlY2tlciA9IHNoYXBl
VHlwZXNba2V5XTtcbiAgICAgICAgaWYgKCFjaGVja2VyKSB7XG4gICAgICAgICAgY29udGludWU7
XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwg
Y29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQ
cm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4g
ZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAg
ICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAg
ZnVuY3Rpb24gaXNOb2RlKHByb3BWYWx1ZSkge1xuICAgIHN3aXRjaCAodHlwZW9mIHByb3BWYWx1
ZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBj
YXNlICd1bmRlZmluZWQnOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgJ2Jvb2xl
YW4nOlxuICAgICAgICByZXR1cm4gIXByb3BWYWx1ZTtcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4g
ICAgICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4g
cHJvcFZhbHVlLmV2ZXJ5KGlzTm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BWYWx1
ZSA9PT0gbnVsbCB8fCBpc1ZhbGlkRWxlbWVudChwcm9wVmFsdWUpKSB7XG4gICAgICAgICAgcmV0
dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJh
dG9yRm4ocHJvcFZhbHVlKTtcbiAgICAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICAgICAgICB2
YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwocHJvcFZhbHVlKTtcbiAgICAgICAgICB2YXIg
c3RlcDtcbiAgICAgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gcHJvcFZhbHVlLmVudHJpZXMpIHtc
biAgICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAg
ICAgICAgICAgICAgaWYgKCFpc05vZGUoc3RlcC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9
IGVsc2Uge1xuICAgICAgICAgICAgLy8gSXRlcmF0b3Igd2lsbCBwcm92aWRlIGVudHJ5IFtrLHZd
IHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuXG4gICAgICAgICAgICB3aGlsZSAoIShzdGVwID0g
aXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAu
dmFsdWU7XG4gICAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICAgIGlmICgh
aXNOb2RlKGVudHJ5WzFdKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAg
ICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAg
IH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1c
blxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBm
YWxzZTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpc1N5bWJvbChwcm9wVHlwZSwgcHJvcFZh
bHVlKSB7XG4gICAgLy8gTmF0aXZlIFN5bWJvbC5cbiAgICBpZiAocHJvcFR5cGUgPT09ICdzeW1i
b2wnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyAxOS40LjMuNSBTeW1i
b2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddID09PSAnU3ltYm9sJ1xuICAgIGlmIChwcm9wVmFs
dWVbJ0BAdG9TdHJpbmdUYWcnXSA9PT0gJ1N5bWJvbCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xu
ICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIGZvciBub24tc3BlYyBjb21wbGlhbnQgU3ltYm9scyB3
aGljaCBhcmUgcG9seWZpbGxlZC5cbiAgICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9u
JyAmJiBwcm9wVmFsdWUgaW5zdGFuY2VvZiBTeW1ib2wpIHtcbiAgICAgIHJldHVybiB0cnVlO1xu
ICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEVxdWl2YWxlbnQgb2YgYHR5
cGVvZmAgYnV0IHdpdGggc3BlY2lhbCBoYW5kbGluZyBmb3IgYXJyYXkgYW5kIHJlZ2V4cC5cbiAg
ZnVuY3Rpb24gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKSB7XG4gICAgdmFyIHByb3BUeXBlID0gdHlw
ZW9mIHByb3BWYWx1ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAg
ICByZXR1cm4gJ2FycmF5JztcbiAgICB9XG4gICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJl
Z0V4cCkge1xuICAgICAgLy8gT2xkIHdlYmtpdHMgKGF0IGxlYXN0IHVudGlsIEFuZHJvaWQgNC4w
KSByZXR1cm4gJ2Z1bmN0aW9uJyByYXRoZXIgdGhhblxuICAgICAgLy8gJ29iamVjdCcgZm9yIHR5
cGVvZiBhIFJlZ0V4cC4gV2UnbGwgbm9ybWFsaXplIHRoaXMgaGVyZSBzbyB0aGF0IC9ibGEvXG4g
ICAgICAvLyBwYXNzZXMgUHJvcFR5cGVzLm9iamVjdC5cbiAgICAgIHJldHVybiAnb2JqZWN0Jztc
biAgICB9XG4gICAgaWYgKGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpKSB7XG4gICAgICBy
ZXR1cm4gJ3N5bWJvbCc7XG4gICAgfVxuICAgIHJldHVybiBwcm9wVHlwZTtcbiAgfVxuXG4gIC8v
IFRoaXMgaGFuZGxlcyBtb3JlIHR5cGVzIHRoYW4gYGdldFByb3BUeXBlYC4gT25seSB1c2VkIGZv
ciBlcnJvciBtZXNzYWdlcy5cbiAgLy8gU2VlIGBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcmAu
XG4gIGZ1bmN0aW9uIGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSkge1xuICAgIGlmICh0eXBlb2Yg
cHJvcFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBwcm9wVmFsdWUgPT09IG51bGwpIHtcbiAgICAg
IHJldHVybiAnJyArIHByb3BWYWx1ZTtcbiAgICB9XG4gICAgdmFyIHByb3BUeXBlID0gZ2V0UHJv
cFR5cGUocHJvcFZhbHVlKTtcbiAgICBpZiAocHJvcFR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAg
ICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gJ2RhdGUn
O1xuICAgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAg
ICAgcmV0dXJuICdyZWdleHAnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJvcFR5cGU7
XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcG9zdGZpeGVkIHRvIGEgd2Fy
bmluZyBhYm91dCBhbiBpbnZhbGlkIHR5cGUuXG4gIC8vIEZvciBleGFtcGxlLCBcInVuZGVmaW5l
ZFwiIG9yIFwib2YgdHlwZSBhcnJheVwiXG4gIGZ1bmN0aW9uIGdldFBvc3RmaXhGb3JUeXBlV2Fy
bmluZyh2YWx1ZSkge1xuICAgIHZhciB0eXBlID0gZ2V0UHJlY2lzZVR5cGUodmFsdWUpO1xuICAg
IHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnb2JqZWN0
JzpcbiAgICAgICAgcmV0dXJuICdhbiAnICsgdHlwZTtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxu
ICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICBjYXNlICdyZWdleHAnOlxuICAgICAgICByZXR1cm4g
J2EgJyArIHR5cGU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHlwZTtcbiAgICB9
XG4gIH1cblxuICAvLyBSZXR1cm5zIGNsYXNzIG5hbWUgb2YgdGhlIG9iamVjdCwgaWYgYW55Llxu
ICBmdW5jdGlvbiBnZXRDbGFzc05hbWUocHJvcFZhbHVlKSB7XG4gICAgaWYgKCFwcm9wVmFsdWUu
Y29uc3RydWN0b3IgfHwgIXByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lKSB7XG4gICAgICByZXR1
cm4gQU5PTllNT1VTO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5h
bWU7XG4gIH1cblxuICBSZWFjdFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyA9IGNoZWNrUHJvcFR5
cGVzO1xuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICBy
ZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcHJvcC10eXBlcy9mYWN0b3J5V2l0aFR5cGVDaGVja2Vy
cy5qc1xuICoqIG1vZHVsZSBpZCA9IDEyMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
J3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL1JlYWN0RE9N
Jyk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4v
fi9yZWFjdC1kb20vaW5kZXguanNcbiAqKiBtb2R1bGUgaWQgPSAxMjNcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0
cmljdCc7XG5cbnZhciBBUklBRE9NUHJvcGVydHlDb25maWcgPSB7XG4gIFByb3BlcnRpZXM6IHtc
biAgICAvLyBHbG9iYWwgU3RhdGVzIGFuZCBQcm9wZXJ0aWVzXG4gICAgJ2FyaWEtY3VycmVudCc6
IDAsIC8vIHN0YXRlXG4gICAgJ2FyaWEtZGV0YWlscyc6IDAsXG4gICAgJ2FyaWEtZGlzYWJsZWQn
OiAwLCAvLyBzdGF0ZVxuICAgICdhcmlhLWhpZGRlbic6IDAsIC8vIHN0YXRlXG4gICAgJ2FyaWEt
aW52YWxpZCc6IDAsIC8vIHN0YXRlXG4gICAgJ2FyaWEta2V5c2hvcnRjdXRzJzogMCxcbiAgICAn
YXJpYS1sYWJlbCc6IDAsXG4gICAgJ2FyaWEtcm9sZWRlc2NyaXB0aW9uJzogMCxcbiAgICAvLyBX
aWRnZXQgQXR0cmlidXRlc1xuICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6IDAsXG4gICAgJ2FyaWEt
Y2hlY2tlZCc6IDAsXG4gICAgJ2FyaWEtZXhwYW5kZWQnOiAwLFxuICAgICdhcmlhLWhhc3BvcHVw
JzogMCxcbiAgICAnYXJpYS1sZXZlbCc6IDAsXG4gICAgJ2FyaWEtbW9kYWwnOiAwLFxuICAgICdh
cmlhLW11bHRpbGluZSc6IDAsXG4gICAgJ2FyaWEtbXVsdGlzZWxlY3RhYmxlJzogMCxcbiAgICAn
YXJpYS1vcmllbnRhdGlvbic6IDAsXG4gICAgJ2FyaWEtcGxhY2Vob2xkZXInOiAwLFxuICAgICdh
cmlhLXByZXNzZWQnOiAwLFxuICAgICdhcmlhLXJlYWRvbmx5JzogMCxcbiAgICAnYXJpYS1yZXF1
aXJlZCc6IDAsXG4gICAgJ2FyaWEtc2VsZWN0ZWQnOiAwLFxuICAgICdhcmlhLXNvcnQnOiAwLFxu
ICAgICdhcmlhLXZhbHVlbWF4JzogMCxcbiAgICAnYXJpYS12YWx1ZW1pbic6IDAsXG4gICAgJ2Fy
aWEtdmFsdWVub3cnOiAwLFxuICAgICdhcmlhLXZhbHVldGV4dCc6IDAsXG4gICAgLy8gTGl2ZSBS
ZWdpb24gQXR0cmlidXRlc1xuICAgICdhcmlhLWF0b21pYyc6IDAsXG4gICAgJ2FyaWEtYnVzeSc6
IDAsXG4gICAgJ2FyaWEtbGl2ZSc6IDAsXG4gICAgJ2FyaWEtcmVsZXZhbnQnOiAwLFxuICAgIC8v
IERyYWctYW5kLURyb3AgQXR0cmlidXRlc1xuICAgICdhcmlhLWRyb3BlZmZlY3QnOiAwLFxuICAg
ICdhcmlhLWdyYWJiZWQnOiAwLFxuICAgIC8vIFJlbGF0aW9uc2hpcCBBdHRyaWJ1dGVzXG4gICAg
J2FyaWEtYWN0aXZlZGVzY2VuZGFudCc6IDAsXG4gICAgJ2FyaWEtY29sY291bnQnOiAwLFxuICAg
ICdhcmlhLWNvbGluZGV4JzogMCxcbiAgICAnYXJpYS1jb2xzcGFuJzogMCxcbiAgICAnYXJpYS1j
b250cm9scyc6IDAsXG4gICAgJ2FyaWEtZGVzY3JpYmVkYnknOiAwLFxuICAgICdhcmlhLWVycm9y
bWVzc2FnZSc6IDAsXG4gICAgJ2FyaWEtZmxvd3RvJzogMCxcbiAgICAnYXJpYS1sYWJlbGxlZGJ5
JzogMCxcbiAgICAnYXJpYS1vd25zJzogMCxcbiAgICAnYXJpYS1wb3NpbnNldCc6IDAsXG4gICAg
J2FyaWEtcm93Y291bnQnOiAwLFxuICAgICdhcmlhLXJvd2luZGV4JzogMCxcbiAgICAnYXJpYS1y
b3dzcGFuJzogMCxcbiAgICAnYXJpYS1zZXRzaXplJzogMFxuICB9LFxuICBET01BdHRyaWJ1dGVO
YW1lczoge30sXG4gIERPTVByb3BlcnR5TmFtZXM6IHt9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9
IEFSSUFET01Qcm9wZXJ0eUNvbmZpZztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0FSSUFET01Qcm9wZXJ0eUNvbmZpZy5q
c1xuICoqIG1vZHVsZSBpZCA9IDEyNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoq
XG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0
RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG5c
bnZhciBmb2N1c05vZGUgPSByZXF1aXJlKCdmYmpzL2xpYi9mb2N1c05vZGUnKTtcblxudmFyIEF1
dG9Gb2N1c1V0aWxzID0ge1xuICBmb2N1c0RPTUNvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuICAg
IGZvY3VzTm9kZShSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlz
KSk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQXV0b0ZvY3VzVXRpbHM7XG5cblxuLyoq
KioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xp
Yi9BdXRvRm9jdXNVdGlscy5qc1xuICoqIG1vZHVsZSBpZCA9IDEyNVxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50IEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHJlcXVpcmUoJy4vRXZlbnRQcm9wYWdhdG9y
cycpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0
aW9uRW52aXJvbm1lbnQnKTtcbnZhciBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUgPSByZXF1aXJl
KCcuL0ZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZScpO1xudmFyIFN5bnRoZXRpY0NvbXBvc2l0aW9u
RXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQnKTtcbnZhciBTeW50
aGV0aWNJbnB1dEV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNJbnB1dEV2ZW50Jyk7XG5cbnZh
ciBFTkRfS0VZQ09ERVMgPSBbOSwgMTMsIDI3LCAzMl07IC8vIFRhYiwgUmV0dXJuLCBFc2MsIFNw
YWNlXG52YXIgU1RBUlRfS0VZQ09ERSA9IDIyOTtcblxudmFyIGNhblVzZUNvbXBvc2l0aW9uRXZl
bnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ0NvbXBvc2l0aW9uRXZlbnQn
IGluIHdpbmRvdztcblxudmFyIGRvY3VtZW50TW9kZSA9IG51bGw7XG5pZiAoRXhlY3V0aW9uRW52
aXJvbm1lbnQuY2FuVXNlRE9NICYmICdkb2N1bWVudE1vZGUnIGluIGRvY3VtZW50KSB7XG4gIGRv
Y3VtZW50TW9kZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZTtcbn1cblxuLy8gV2Via2l0IG9mZmVy
cyBhIHZlcnkgdXNlZnVsIGB0ZXh0SW5wdXRgIGV2ZW50IHRoYXQgY2FuIGJlIHVzZWQgdG9cbi8v
IGRpcmVjdGx5IHJlcHJlc2VudCBgYmVmb3JlSW5wdXRgLiBUaGUgSUUgYHRleHRpbnB1dGAgZXZl
bnQgaXMgbm90IGFzXG4vLyB1c2VmdWwsIHNvIHdlIGRvbid0IHVzZSBpdC5cbnZhciBjYW5Vc2VU
ZXh0SW5wdXRFdmVudCA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnVGV4dEV2
ZW50JyBpbiB3aW5kb3cgJiYgIWRvY3VtZW50TW9kZSAmJiAhaXNQcmVzdG8oKTtcblxuLy8gSW4g
SUU5Kywgd2UgaGF2ZSBhY2Nlc3MgdG8gY29tcG9zaXRpb24gZXZlbnRzLCBidXQgdGhlIGRhdGEg
c3VwcGxpZWRcbi8vIGJ5IHRoZSBuYXRpdmUgY29tcG9zaXRpb25lbmQgZXZlbnQgbWF5IGJlIGlu
Y29ycmVjdC4gSmFwYW5lc2UgaWRlb2dyYXBoaWNcbi8vIHNwYWNlcywgZm9yIGluc3RhbmNlIChc
XHUzMDAwKSBhcmUgbm90IHJlY29yZGVkIGNvcnJlY3RseS5cbnZhciB1c2VGYWxsYmFja0NvbXBv
c2l0aW9uRGF0YSA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAoIWNhblVzZUNv
bXBvc2l0aW9uRXZlbnQgfHwgZG9jdW1lbnRNb2RlICYmIGRvY3VtZW50TW9kZSA+IDggJiYgZG9j
dW1lbnRNb2RlIDw9IDExKTtcblxuLyoqXG4gKiBPcGVyYSA8PSAxMiBpbmNsdWRlcyBUZXh0RXZl
bnQgaW4gd2luZG93LCBidXQgZG9lcyBub3QgZmlyZVxuICogdGV4dCBpbnB1dCBldmVudHMuIFJl
bHkgb24ga2V5cHJlc3MgaW5zdGVhZC5cbiAqL1xuZnVuY3Rpb24gaXNQcmVzdG8oKSB7XG4gIHZh
ciBvcGVyYSA9IHdpbmRvdy5vcGVyYTtcbiAgcmV0dXJuIHR5cGVvZiBvcGVyYSA9PT0gJ29iamVj
dCcgJiYgdHlwZW9mIG9wZXJhLnZlcnNpb24gPT09ICdmdW5jdGlvbicgJiYgcGFyc2VJbnQob3Bl
cmEudmVyc2lvbigpLCAxMCkgPD0gMTI7XG59XG5cbnZhciBTUEFDRUJBUl9DT0RFID0gMzI7XG52
YXIgU1BBQ0VCQVJfQ0hBUiA9IFN0cmluZy5mcm9tQ2hhckNvZGUoU1BBQ0VCQVJfQ09ERSk7XG5c
bi8vIEV2ZW50cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBuYW1lcy5cbnZhciBl
dmVudFR5cGVzID0ge1xuICBiZWZvcmVJbnB1dDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzOiB7XG4gICAgICBidWJibGVkOiAnb25CZWZvcmVJbnB1dCcsXG4gICAgICBjYXB0dXJlZDog
J29uQmVmb3JlSW5wdXRDYXB0dXJlJ1xuICAgIH0sXG4gICAgZGVwZW5kZW5jaWVzOiBbJ3RvcENv
bXBvc2l0aW9uRW5kJywgJ3RvcEtleVByZXNzJywgJ3RvcFRleHRJbnB1dCcsICd0b3BQYXN0ZSdd
XG4gIH0sXG4gIGNvbXBvc2l0aW9uRW5kOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6
IHtcbiAgICAgIGJ1YmJsZWQ6ICdvbkNvbXBvc2l0aW9uRW5kJyxcbiAgICAgIGNhcHR1cmVkOiAn
b25Db21wb3NpdGlvbkVuZENhcHR1cmUnXG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFsndG9w
Qmx1cicsICd0b3BDb21wb3NpdGlvbkVuZCcsICd0b3BLZXlEb3duJywgJ3RvcEtleVByZXNzJywg
J3RvcEtleVVwJywgJ3RvcE1vdXNlRG93biddXG4gIH0sXG4gIGNvbXBvc2l0aW9uU3RhcnQ6IHtc
biAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDogJ29uQ29tcG9z
aXRpb25TdGFydCcsXG4gICAgICBjYXB0dXJlZDogJ29uQ29tcG9zaXRpb25TdGFydENhcHR1cmUn
XG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFsndG9wQmx1cicsICd0b3BDb21wb3NpdGlvblN0
YXJ0JywgJ3RvcEtleURvd24nLCAndG9wS2V5UHJlc3MnLCAndG9wS2V5VXAnLCAndG9wTW91c2VE
b3duJ11cbiAgfSxcbiAgY29tcG9zaXRpb25VcGRhdGU6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRp
b25OYW1lczoge1xuICAgICAgYnViYmxlZDogJ29uQ29tcG9zaXRpb25VcGRhdGUnLFxuICAgICAg
Y2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZSdcbiAgICB9LFxuICAgIGRlcGVu
ZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbXBvc2l0aW9uVXBkYXRlJywgJ3RvcEtleURvd24n
LCAndG9wS2V5UHJlc3MnLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3duJ11cbiAgfVxufTtcblxu
Ly8gVHJhY2sgd2hldGhlciB3ZSd2ZSBldmVyIGhhbmRsZWQgYSBrZXlwcmVzcyBvbiB0aGUgc3Bh
Y2Uga2V5LlxudmFyIGhhc1NwYWNlS2V5cHJlc3MgPSBmYWxzZTtcblxuLyoqXG4gKiBSZXR1cm4g
d2hldGhlciBhIG5hdGl2ZSBrZXlwcmVzcyBldmVudCBpcyBhc3N1bWVkIHRvIGJlIGEgY29tbWFu
ZC5cbiAqIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBGaXJlZm94IGZpcmVzIGBrZXlwcmVzc2Ag
ZXZlbnRzIGZvciBrZXkgY29tbWFuZHNcbiAqIChjdXQsIGNvcHksIHNlbGVjdC1hbGwsIGV0Yy4p
IGV2ZW4gdGhvdWdoIG5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZC5cbiAqL1xuZnVuY3Rpb24gaXNL
ZXlwcmVzc0NvbW1hbmQobmF0aXZlRXZlbnQpIHtcbiAgcmV0dXJuIChuYXRpdmVFdmVudC5jdHJs
S2V5IHx8IG5hdGl2ZUV2ZW50LmFsdEtleSB8fCBuYXRpdmVFdmVudC5tZXRhS2V5KSAmJlxuICAv
LyBjdHJsS2V5ICYmIGFsdEtleSBpcyBlcXVpdmFsZW50IHRvIEFsdEdyLCBhbmQgaXMgbm90IGEg
Y29tbWFuZC5cbiAgIShuYXRpdmVFdmVudC5jdHJsS2V5ICYmIG5hdGl2ZUV2ZW50LmFsdEtleSk7
XG59XG5cbi8qKlxuICogVHJhbnNsYXRlIG5hdGl2ZSB0b3AgbGV2ZWwgZXZlbnRzIGludG8gZXZl
bnQgdHlwZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZVxuICogQHJldHVy
biB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRDb21wb3NpdGlvbkV2ZW50VHlwZSh0b3BMZXZl
bFR5cGUpIHtcbiAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcbiAgICBjYXNlICd0b3BDb21wb3Np
dGlvblN0YXJ0JzpcbiAgICAgIHJldHVybiBldmVudFR5cGVzLmNvbXBvc2l0aW9uU3RhcnQ7XG4g
ICAgY2FzZSAndG9wQ29tcG9zaXRpb25FbmQnOlxuICAgICAgcmV0dXJuIGV2ZW50VHlwZXMuY29t
cG9zaXRpb25FbmQ7XG4gICAgY2FzZSAndG9wQ29tcG9zaXRpb25VcGRhdGUnOlxuICAgICAgcmV0
dXJuIGV2ZW50VHlwZXMuY29tcG9zaXRpb25VcGRhdGU7XG4gIH1cbn1cblxuLyoqXG4gKiBEb2Vz
IG91ciBmYWxsYmFjayBiZXN0LWd1ZXNzIG1vZGVsIHRoaW5rIHRoaXMgZXZlbnQgc2lnbmlmaWVz
IHRoYXRcbiAqIGNvbXBvc2l0aW9uIGhhcyBiZWd1bj9cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30g
dG9wTGV2ZWxUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRcbiAqIEByZXR1cm4g
e2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzRmFsbGJhY2tDb21wb3NpdGlvblN0YXJ0KHRvcExl
dmVsVHlwZSwgbmF0aXZlRXZlbnQpIHtcbiAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gJ3RvcEtl
eURvd24nICYmIG5hdGl2ZUV2ZW50LmtleUNvZGUgPT09IFNUQVJUX0tFWUNPREU7XG59XG5cbi8q
KlxuICogRG9lcyBvdXIgZmFsbGJhY2sgbW9kZSB0aGluayB0aGF0IHRoaXMgZXZlbnQgaXMgdGhl
IGVuZCBvZiBjb21wb3NpdGlvbj9cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBl
XG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4g
Ki9cbmZ1bmN0aW9uIGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5cGUsIG5hdGl2
ZUV2ZW50KSB7XG4gIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgY2FzZSAndG9wS2V5VXAn
OlxuICAgICAgLy8gQ29tbWFuZCBrZXlzIGluc2VydCBvciBjbGVhciBJTUUgaW5wdXQuXG4gICAg
ICByZXR1cm4gRU5EX0tFWUNPREVTLmluZGV4T2YobmF0aXZlRXZlbnQua2V5Q29kZSkgIT09IC0x
O1xuICAgIGNhc2UgJ3RvcEtleURvd24nOlxuICAgICAgLy8gRXhwZWN0IElNRSBrZXlDb2RlIG9u
IGVhY2gga2V5ZG93bi4gSWYgd2UgZ2V0IGFueSBvdGhlclxuICAgICAgLy8gY29kZSB3ZSBtdXN0
IGhhdmUgZXhpdGVkIGVhcmxpZXIuXG4gICAgICByZXR1cm4gbmF0aXZlRXZlbnQua2V5Q29kZSAh
PT0gU1RBUlRfS0VZQ09ERTtcbiAgICBjYXNlICd0b3BLZXlQcmVzcyc6XG4gICAgY2FzZSAndG9w
TW91c2VEb3duJzpcbiAgICBjYXNlICd0b3BCbHVyJzpcbiAgICAgIC8vIEV2ZW50cyBhcmUgbm90
IHBvc3NpYmxlIHdpdGhvdXQgY2FuY2VsbGluZyBJTUUuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAg
ICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogR29vZ2xl
IElucHV0IFRvb2xzIHByb3ZpZGVzIGNvbXBvc2l0aW9uIGRhdGEgdmlhIGEgQ3VzdG9tRXZlbnQs
XG4gKiB3aXRoIHRoZSBgZGF0YWAgcHJvcGVydHkgcG9wdWxhdGVkIGluIHRoZSBgZGV0YWlsYCBv
YmplY3QuIElmIHRoaXNcbiAqIGlzIGF2YWlsYWJsZSBvbiB0aGUgZXZlbnQgb2JqZWN0LCB1c2Ug
aXQuIElmIG5vdCwgdGhpcyBpcyBhIHBsYWluXG4gKiBjb21wb3NpdGlvbiBldmVudCBhbmQgd2Ug
aGF2ZSBub3RoaW5nIHNwZWNpYWwgdG8gZXh0cmFjdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0g
bmF0aXZlRXZlbnRcbiAqIEByZXR1cm4gez9zdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldERhdGFG
cm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpIHtcbiAgdmFyIGRldGFpbCA9IG5hdGl2ZUV2ZW50
LmRldGFpbDtcbiAgaWYgKHR5cGVvZiBkZXRhaWwgPT09ICdvYmplY3QnICYmICdkYXRhJyBpbiBk
ZXRhaWwpIHtcbiAgICByZXR1cm4gZGV0YWlsLmRhdGE7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59
XG5cbi8vIFRyYWNrIHRoZSBjdXJyZW50IElNRSBjb21wb3NpdGlvbiBmYWxsYmFjayBvYmplY3Qs
IGlmIGFueS5cbnZhciBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxsO1xuXG4vKipcbiAqIEByZXR1
cm4gez9vYmplY3R9IEEgU3ludGhldGljQ29tcG9zaXRpb25FdmVudC5cbiAqL1xuZnVuY3Rpb24g
ZXh0cmFjdENvbXBvc2l0aW9uRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgdmFyIGV2ZW50VHlwZTtcbiAgdmFyIGZhbGxi
YWNrRGF0YTtcblxuICBpZiAoY2FuVXNlQ29tcG9zaXRpb25FdmVudCkge1xuICAgIGV2ZW50VHlw
ZSA9IGdldENvbXBvc2l0aW9uRXZlbnRUeXBlKHRvcExldmVsVHlwZSk7XG4gIH0gZWxzZSBpZiAo
IWN1cnJlbnRDb21wb3NpdGlvbikge1xuICAgIGlmIChpc0ZhbGxiYWNrQ29tcG9zaXRpb25TdGFy
dCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xuICAgICAgZXZlbnRUeXBlID0gZXZlbnRU
eXBlcy5jb21wb3NpdGlvblN0YXJ0O1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc0ZhbGxiYWNrQ29t
cG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkpIHtcbiAgICBldmVudFR5cGUg
PSBldmVudFR5cGVzLmNvbXBvc2l0aW9uRW5kO1xuICB9XG5cbiAgaWYgKCFldmVudFR5cGUpIHtc
biAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICh1c2VGYWxsYmFja0NvbXBvc2l0aW9uRGF0
YSkge1xuICAgIC8vIFRoZSBjdXJyZW50IGNvbXBvc2l0aW9uIGlzIHN0b3JlZCBzdGF0aWNhbGx5
IGFuZCBtdXN0IG5vdCBiZVxuICAgIC8vIG92ZXJ3cml0dGVuIHdoaWxlIGNvbXBvc2l0aW9uIGNv
bnRpbnVlcy5cbiAgICBpZiAoIWN1cnJlbnRDb21wb3NpdGlvbiAmJiBldmVudFR5cGUgPT09IGV2
ZW50VHlwZXMuY29tcG9zaXRpb25TdGFydCkge1xuICAgICAgY3VycmVudENvbXBvc2l0aW9uID0g
RmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLmdldFBvb2xlZChuYXRpdmVFdmVudFRhcmdldCk7XG4g
ICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09IGV2ZW50VHlwZXMuY29tcG9zaXRpb25FbmQpIHtc
biAgICAgIGlmIChjdXJyZW50Q29tcG9zaXRpb24pIHtcbiAgICAgICAgZmFsbGJhY2tEYXRhID0g
Y3VycmVudENvbXBvc2l0aW9uLmdldERhdGEoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2
YXIgZXZlbnQgPSBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LmdldFBvb2xlZChldmVudFR5cGUs
IHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cbiAgaWYgKGZh
bGxiYWNrRGF0YSkge1xuICAgIC8vIEluamVjdCBkYXRhIGdlbmVyYXRlZCBmcm9tIGZhbGxiYWNr
IHBhdGggaW50byB0aGUgc3ludGhldGljIGV2ZW50LlxuICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUg
cHJvcGVydHkgb2YgbmF0aXZlIENvbXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UuXG4gICAgZXZlbnQu
ZGF0YSA9IGZhbGxiYWNrRGF0YTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3VzdG9tRGF0YSA9IGdl
dERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpO1xuICAgIGlmIChjdXN0b21EYXRhICE9
PSBudWxsKSB7XG4gICAgICBldmVudC5kYXRhID0gY3VzdG9tRGF0YTtcbiAgICB9XG4gIH1cblxu
ICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xu
ICByZXR1cm4gZXZlbnQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlw
ZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2
ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7P3N0cmluZ30gVGhlIHN0
cmluZyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgYGJlZm9yZUlucHV0YCBldmVudC5cbiAqL1xuZnVu
Y3Rpb24gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50
KSB7XG4gIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgY2FzZSAndG9wQ29tcG9zaXRpb25F
bmQnOlxuICAgICAgcmV0dXJuIGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpO1xu
ICAgIGNhc2UgJ3RvcEtleVByZXNzJzpcbiAgICAgIC8qKlxuICAgICAgICogSWYgbmF0aXZlIGB0
ZXh0SW5wdXRgIGV2ZW50cyBhcmUgYXZhaWxhYmxlLCBvdXIgZ29hbCBpcyB0byBtYWtlXG4gICAg
ICAgKiB1c2Ugb2YgdGhlbS4gSG93ZXZlciwgdGhlcmUgaXMgYSBzcGVjaWFsIGNhc2U6IHRoZSBz
cGFjZWJhciBrZXkuXG4gICAgICAgKiBJbiBXZWJraXQsIHByZXZlbnRpbmcgZGVmYXVsdCBvbiBh
IHNwYWNlYmFyIGB0ZXh0SW5wdXRgIGV2ZW50XG4gICAgICAgKiBjYW5jZWxzIGNoYXJhY3RlciBp
bnNlcnRpb24sIGJ1dCBpdCAqYWxzbyogY2F1c2VzIHRoZSBicm93c2VyXG4gICAgICAgKiB0byBm
YWxsIGJhY2sgdG8gaXRzIGRlZmF1bHQgc3BhY2ViYXIgYmVoYXZpb3Igb2Ygc2Nyb2xsaW5nIHRo
ZVxuICAgICAgICogcGFnZS5cbiAgICAgICAqXG4gICAgICAgKiBUcmFja2luZyBhdDpcbiAgICAg
ICAqIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0z
NTUxMDNcbiAgICAgICAqXG4gICAgICAgKiBUbyBhdm9pZCB0aGlzIGlzc3VlLCB1c2UgdGhlIGtl
eXByZXNzIGV2ZW50IGFzIGlmIG5vIGB0ZXh0SW5wdXRgXG4gICAgICAgKiBldmVudCBpcyBhdmFp
bGFibGUuXG4gICAgICAgKi9cbiAgICAgIHZhciB3aGljaCA9IG5hdGl2ZUV2ZW50LndoaWNoO1xu
ICAgICAgaWYgKHdoaWNoICE9PSBTUEFDRUJBUl9DT0RFKSB7XG4gICAgICAgIHJldHVybiBudWxs
O1xuICAgICAgfVxuXG4gICAgICBoYXNTcGFjZUtleXByZXNzID0gdHJ1ZTtcbiAgICAgIHJldHVy
biBTUEFDRUJBUl9DSEFSO1xuXG4gICAgY2FzZSAndG9wVGV4dElucHV0JzpcbiAgICAgIC8vIFJl
Y29yZCB0aGUgY2hhcmFjdGVycyB0byBiZSBhZGRlZCB0byB0aGUgRE9NLlxuICAgICAgdmFyIGNo
YXJzID0gbmF0aXZlRXZlbnQuZGF0YTtcblxuICAgICAgLy8gSWYgaXQncyBhIHNwYWNlYmFyIGNo
YXJhY3RlciwgYXNzdW1lIHRoYXQgd2UgaGF2ZSBhbHJlYWR5IGhhbmRsZWRcbiAgICAgIC8vIGl0
IGF0IHRoZSBrZXlwcmVzcyBsZXZlbCBhbmQgYmFpbCBpbW1lZGlhdGVseS4gQW5kcm9pZCBDaHJv
bWVcbiAgICAgIC8vIGRvZXNuJ3QgZ2l2ZSB1cyBrZXljb2Rlcywgc28gd2UgbmVlZCB0byBibGFj
a2xpc3QgaXQuXG4gICAgICBpZiAoY2hhcnMgPT09IFNQQUNFQkFSX0NIQVIgJiYgaGFzU3BhY2VL
ZXlwcmVzcykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJu
IGNoYXJzO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIEZvciBvdGhlciBuYXRpdmUgZXZlbnQg
dHlwZXMsIGRvIG5vdGhpbmcuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAq
IEZvciBicm93c2VycyB0aGF0IGRvIG5vdCBwcm92aWRlIHRoZSBgdGV4dElucHV0YCBldmVudCwg
ZXh0cmFjdCB0aGVcbiAqIGFwcHJvcHJpYXRlIHN0cmluZyB0byB1c2UgZm9yIFN5bnRoZXRpY0lu
cHV0RXZlbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJv
bSBgRXZlbnRDb25zdGFudHNgLlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2
ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7P3N0cmluZ30gVGhlIGZhbGxiYWNrIHN0cmlu
ZyBmb3IgdGhpcyBgYmVmb3JlSW5wdXRgIGV2ZW50LlxuICovXG5mdW5jdGlvbiBnZXRGYWxsYmFj
a0JlZm9yZUlucHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuICAvLyBJZiB3
ZSBhcmUgY3VycmVudGx5IGNvbXBvc2luZyAoSU1FKSBhbmQgdXNpbmcgYSBmYWxsYmFjayB0byBk
byBzbyxcbiAgLy8gdHJ5IHRvIGV4dHJhY3QgdGhlIGNvbXBvc2VkIGNoYXJhY3RlcnMgZnJvbSB0
aGUgZmFsbGJhY2sgb2JqZWN0LlxuICAvLyBJZiBjb21wb3NpdGlvbiBldmVudCBpcyBhdmFpbGFi
bGUsIHdlIGV4dHJhY3QgYSBzdHJpbmcgb25seSBhdFxuICAvLyBjb21wb3NpdGlvbmV2ZW50LCBv
dGhlcndpc2UgZXh0cmFjdCBpdCBhdCBmYWxsYmFjayBldmVudHMuXG4gIGlmIChjdXJyZW50Q29t
cG9zaXRpb24pIHtcbiAgICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ29tcG9zaXRpb25FbmQn
IHx8ICFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50ICYmIGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0
b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xuICAgICAgdmFyIGNoYXJzID0gY3VycmVudENv
bXBvc2l0aW9uLmdldERhdGEoKTtcbiAgICAgIEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZS5yZWxl
YXNlKGN1cnJlbnRDb21wb3NpdGlvbik7XG4gICAgICBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxs
O1xuICAgICAgcmV0dXJuIGNoYXJzO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4g
IHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgY2FzZSAndG9wUGFzdGUnOlxuICAgICAgLy8g
SWYgYSBwYXN0ZSBldmVudCBvY2N1cnMgYWZ0ZXIgYSBrZXlwcmVzcywgdGhyb3cgb3V0IHRoZSBp
bnB1dFxuICAgICAgLy8gY2hhcnMuIFBhc3RlIGV2ZW50cyBzaG91bGQgbm90IGxlYWQgdG8gQmVm
b3JlSW5wdXQgZXZlbnRzLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSAndG9wS2V5UHJl
c3MnOlxuICAgICAgLyoqXG4gICAgICAgKiBBcyBvZiB2MjcsIEZpcmVmb3ggbWF5IGZpcmUga2V5
cHJlc3MgZXZlbnRzIGV2ZW4gd2hlbiBubyBjaGFyYWN0ZXJcbiAgICAgICAqIHdpbGwgYmUgaW5z
ZXJ0ZWQuIEEgZmV3IHBvc3NpYmlsaXRpZXM6XG4gICAgICAgKlxuICAgICAgICogLSBgd2hpY2hg
IGlzIGAwYC4gQXJyb3cga2V5cywgRXNjIGtleSwgZXRjLlxuICAgICAgICpcbiAgICAgICAqIC0g
YHdoaWNoYCBpcyB0aGUgcHJlc3NlZCBrZXkgY29kZSwgYnV0IG5vIGNoYXIgaXMgYXZhaWxhYmxl
LlxuICAgICAgICogICBFeDogJ0FsdEdyICsgZGAgaW4gUG9saXNoLiBUaGVyZSBpcyBubyBtb2Rp
ZmllZCBjaGFyYWN0ZXIgZm9yXG4gICAgICAgKiAgIHRoaXMga2V5IGNvbWJpbmF0aW9uIGFuZCBu
byBjaGFyYWN0ZXIgaXMgaW5zZXJ0ZWQgaW50byB0aGVcbiAgICAgICAqICAgZG9jdW1lbnQsIGJ1
dCBGRiBmaXJlcyB0aGUga2V5cHJlc3MgZm9yIGNoYXIgY29kZSBgMTAwYCBhbnl3YXkuXG4gICAg
ICAgKiAgIE5vIGBpbnB1dGAgZXZlbnQgd2lsbCBvY2N1ci5cbiAgICAgICAqXG4gICAgICAgKiAt
IGB3aGljaGAgaXMgdGhlIHByZXNzZWQga2V5IGNvZGUsIGJ1dCBhIGNvbW1hbmQgY29tYmluYXRp
b24gaXNcbiAgICAgICAqICAgYmVpbmcgdXNlZC4gRXg6IGBDbWQrQ2AuIE5vIGNoYXJhY3RlciBp
cyBpbnNlcnRlZCwgYW5kIG5vXG4gICAgICAgKiAgIGBpbnB1dGAgZXZlbnQgd2lsbCBvY2N1ci5c
biAgICAgICAqL1xuICAgICAgaWYgKG5hdGl2ZUV2ZW50LndoaWNoICYmICFpc0tleXByZXNzQ29t
bWFuZChuYXRpdmVFdmVudCkpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUo
bmF0aXZlRXZlbnQud2hpY2gpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2Fz
ZSAndG9wQ29tcG9zaXRpb25FbmQnOlxuICAgICAgcmV0dXJuIHVzZUZhbGxiYWNrQ29tcG9zaXRp
b25EYXRhID8gbnVsbCA6IG5hdGl2ZUV2ZW50LmRhdGE7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJl
dHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogRXh0cmFjdCBhIFN5bnRoZXRpY0lucHV0RXZl
bnQgZm9yIGBiZWZvcmVJbnB1dGAsIGJhc2VkIG9uIGVpdGhlciBuYXRpdmVcbiAqIGB0ZXh0SW5w
dXRgIG9yIGZhbGxiYWNrIGJlaGF2aW9yLlxuICpcbiAqIEByZXR1cm4gez9vYmplY3R9IEEgU3lu
dGhldGljSW5wdXRFdmVudC5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdEJlZm9yZUlucHV0RXZlbnQo
dG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQp
IHtcbiAgdmFyIGNoYXJzO1xuXG4gIGlmIChjYW5Vc2VUZXh0SW5wdXRFdmVudCkge1xuICAgIGNo
YXJzID0gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50
KTtcbiAgfSBlbHNlIHtcbiAgICBjaGFycyA9IGdldEZhbGxiYWNrQmVmb3JlSW5wdXRDaGFycyh0
b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KTtcbiAgfVxuXG4gIC8vIElmIG5vIGNoYXJhY3RlcnMg
YXJlIGJlaW5nIGluc2VydGVkLCBubyBCZWZvcmVJbnB1dCBldmVudCBzaG91bGRcbiAgLy8gYmUg
ZmlyZWQuXG4gIGlmICghY2hhcnMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBl
dmVudCA9IFN5bnRoZXRpY0lucHV0RXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuYmVmb3JlSW5w
dXQsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cbiAgZXZl
bnQuZGF0YSA9IGNoYXJzO1xuICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURp
c3BhdGNoZXMoZXZlbnQpO1xuICByZXR1cm4gZXZlbnQ7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFu
IGBvbkJlZm9yZUlucHV0YCBldmVudCB0byBtYXRjaFxuICogaHR0cDovL3d3dy53My5vcmcvVFIv
MjAxMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAxMzExMDUvI2V2ZW50cy1pbnB1dGV2ZW50cy5c
biAqXG4gKiBUaGlzIGV2ZW50IHBsdWdpbiBpcyBiYXNlZCBvbiB0aGUgbmF0aXZlIGB0ZXh0SW5w
dXRgIGV2ZW50XG4gKiBhdmFpbGFibGUgaW4gQ2hyb21lLCBTYWZhcmksIE9wZXJhLCBhbmQgSUUu
IFRoaXMgZXZlbnQgZmlyZXMgYWZ0ZXJcbiAqIGBvbktleVByZXNzYCBhbmQgYG9uQ29tcG9zaXRp
b25FbmRgLCBidXQgYmVmb3JlIGBvbklucHV0YC5cbiAqXG4gKiBgYmVmb3JlSW5wdXRgIGlzIHNw
ZWMnZCBidXQgbm90IGltcGxlbWVudGVkIGluIGFueSBicm93c2VycywgYW5kXG4gKiB0aGUgYGlu
cHV0YCBldmVudCBkb2VzIG5vdCBwcm92aWRlIGFueSB1c2VmdWwgaW5mb3JtYXRpb24gYWJvdXQg
d2hhdCBoYXNcbiAqIGFjdHVhbGx5IGJlZW4gYWRkZWQsIGNvbnRyYXJ5IHRvIHRoZSBzcGVjLiBU
aHVzLCBgdGV4dElucHV0YCBpcyB0aGUgYmVzdFxuICogYXZhaWxhYmxlIGV2ZW50IHRvIGlkZW50
aWZ5IHRoZSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBhY3R1YWxseSBiZWVuIGluc2VydGVkXG4gKiBp
bnRvIHRoZSB0YXJnZXQgbm9kZS5cbiAqXG4gKiBUaGlzIHBsdWdpbiBpcyBhbHNvIHJlc3BvbnNp
YmxlIGZvciBlbWl0dGluZyBgY29tcG9zaXRpb25gIGV2ZW50cywgdGh1c1xuICogYWxsb3dpbmcg
dXMgdG8gc2hhcmUgY29tcG9zaXRpb24gZmFsbGJhY2sgY29kZSBmb3IgYm90aCBgYmVmb3JlSW5w
dXRgIGFuZFxuICogYGNvbXBvc2l0aW9uYCBldmVudCB0eXBlcy5cbiAqL1xudmFyIEJlZm9yZUlu
cHV0RXZlbnRQbHVnaW4gPSB7XG4gIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cbiAgZXh0cmFj
dEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgcmV0dXJuIFtleHRyYWN0Q29tcG9zaXRpb25FdmVu
dCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdl
dCksIGV4dHJhY3RCZWZvcmVJbnB1dEV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0
aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KV07XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRz
ID0gQmVmb3JlSW5wdXRFdmVudFBsdWdpbjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBX
RUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0JlZm9yZUlucHV0RXZlbnRQbHVn
aW4uanNcbiAqKiBtb2R1bGUgaWQgPSAxMjZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBD
U1NQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vQ1NTUHJvcGVydHknKTtcbnZhciBFeGVjdXRpb25FbnZp
cm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52YXIg
UmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7
XG5cbnZhciBjYW1lbGl6ZVN0eWxlTmFtZSA9IHJlcXVpcmUoJ2ZianMvbGliL2NhbWVsaXplU3R5
bGVOYW1lJyk7XG52YXIgZGFuZ2Vyb3VzU3R5bGVWYWx1ZSA9IHJlcXVpcmUoJy4vZGFuZ2Vyb3Vz
U3R5bGVWYWx1ZScpO1xudmFyIGh5cGhlbmF0ZVN0eWxlTmFtZSA9IHJlcXVpcmUoJ2ZianMvbGli
L2h5cGhlbmF0ZVN0eWxlTmFtZScpO1xudmFyIG1lbW9pemVTdHJpbmdPbmx5ID0gcmVxdWlyZSgn
ZmJqcy9saWIvbWVtb2l6ZVN0cmluZ09ubHknKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJq
cy9saWIvd2FybmluZycpO1xuXG52YXIgcHJvY2Vzc1N0eWxlTmFtZSA9IG1lbW9pemVTdHJpbmdP
bmx5KGZ1bmN0aW9uIChzdHlsZU5hbWUpIHtcbiAgcmV0dXJuIGh5cGhlbmF0ZVN0eWxlTmFtZShz
dHlsZU5hbWUpO1xufSk7XG5cbnZhciBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyA9IGZhbHNlO1xu
dmFyIHN0eWxlRmxvYXRBY2Nlc3NvciA9ICdjc3NGbG9hdCc7XG5pZiAoRXhlY3V0aW9uRW52aXJv
bm1lbnQuY2FuVXNlRE9NKSB7XG4gIHZhciB0ZW1wU3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKS5zdHlsZTtcbiAgdHJ5IHtcbiAgICAvLyBJRTggdGhyb3dzIFwiSW52YWxpZCBh
cmd1bWVudC5cIiBpZiByZXNldHRpbmcgc2hvcnRoYW5kIHN0eWxlIHByb3BlcnRpZXMuXG4gICAg
dGVtcFN0eWxlLmZvbnQgPSAnJztcbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhc1Nob3J0aGFuZFBy
b3BlcnR5QnVnID0gdHJ1ZTtcbiAgfVxuICAvLyBJRTggb25seSBzdXBwb3J0cyBhY2Nlc3Npbmcg
Y3NzRmxvYXQgKHN0YW5kYXJkKSBhcyBzdHlsZUZsb2F0XG4gIGlmIChkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQuc3R5bGUuY3NzRmxvYXQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0eWxlRmxvYXRB
Y2Nlc3NvciA9ICdzdHlsZUZsb2F0JztcbiAgfVxufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAvLyAnbXNUcmFuc2Zvcm0nIGlzIGNvcnJlY3QsIGJ1
dCB0aGUgb3RoZXIgcHJlZml4ZXMgc2hvdWxkIGJlIGNhcGl0YWxpemVkXG4gIHZhciBiYWRWZW5k
b3JlZFN0eWxlTmFtZVBhdHRlcm4gPSAvXig/OndlYmtpdHxtb3p8bylbQS1aXS87XG5cbiAgLy8g
c3R5bGUgdmFsdWVzIHNob3VsZG4ndCBjb250YWluIGEgc2VtaWNvbG9uXG4gIHZhciBiYWRTdHls
ZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4gPSAvO1xccyokLztcblxuICB2YXIgd2FybmVkU3R5
bGVOYW1lcyA9IHt9O1xuICB2YXIgd2FybmVkU3R5bGVWYWx1ZXMgPSB7fTtcbiAgdmFyIHdhcm5l
ZEZvck5hTlZhbHVlID0gZmFsc2U7XG5cbiAgdmFyIHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lID0g
ZnVuY3Rpb24gKG5hbWUsIG93bmVyKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3du
UHJvcGVydHkobmFtZSkgJiYgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSkge1xuICAgICAgcmV0dXJu
O1xuICAgIH1cblxuICAgIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0gPSB0cnVlO1xuICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5zdXBw
b3J0ZWQgc3R5bGUgcHJvcGVydHkgJXMuIERpZCB5b3UgbWVhbiAlcz8lcycsIG5hbWUsIGNhbWVs
aXplU3R5bGVOYW1lKG5hbWUpLCBjaGVja1JlbmRlck1lc3NhZ2Uob3duZXIpKSA6IHZvaWQgMDtc
biAgfTtcblxuICB2YXIgd2FybkJhZFZlbmRvcmVkU3R5bGVOYW1lID0gZnVuY3Rpb24gKG5hbWUs
IG93bmVyKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkg
JiYgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAg
IHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0gPSB0cnVlO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5zdXBwb3J0ZWQgdmVuZG9yLXBy
ZWZpeGVkIHN0eWxlIHByb3BlcnR5ICVzLiBEaWQgeW91IG1lYW4gJXM/JXMnLCBuYW1lLCBuYW1l
LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKSwgY2hlY2tSZW5kZXJNZXNz
YWdlKG93bmVyKSkgOiB2b2lkIDA7XG4gIH07XG5cbiAgdmFyIHdhcm5TdHlsZVZhbHVlV2l0aFNl
bWljb2xvbiA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3duZXIpIHtcbiAgICBpZiAod2FybmVk
U3R5bGVWYWx1ZXMuaGFzT3duUHJvcGVydHkodmFsdWUpICYmIHdhcm5lZFN0eWxlVmFsdWVzW3Zh
bHVlXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZFN0eWxlVmFsdWVzW3Zh
bHVlXSA9IHRydWU7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsIFwiU3R5bGUgcHJvcGVydHkgdmFsdWVzIHNob3VsZG4ndCBjb250YWlu
IGEgc2VtaWNvbG9uLiVzIFwiICsgJ1RyeSBcIiVzOiAlc1wiIGluc3RlYWQuJywgY2hlY2tSZW5k
ZXJNZXNzYWdlKG93bmVyKSwgbmFtZSwgdmFsdWUucmVwbGFjZShiYWRTdHlsZVZhbHVlV2l0aFNl
bWljb2xvblBhdHRlcm4sICcnKSkgOiB2b2lkIDA7XG4gIH07XG5cbiAgdmFyIHdhcm5TdHlsZVZh
bHVlSXNOYU4gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG93bmVyKSB7XG4gICAgaWYgKHdhcm5l
ZEZvck5hTlZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgd2FybmVkRm9yTmFO
VmFsdWUgPSB0cnVlO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGZhbHNlLCAnYE5hTmAgaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgdGhlIGAlc2Ag
Y3NzIHN0eWxlIHByb3BlcnR5LiVzJywgbmFtZSwgY2hlY2tSZW5kZXJNZXNzYWdlKG93bmVyKSkg
OiB2b2lkIDA7XG4gIH07XG5cbiAgdmFyIGNoZWNrUmVuZGVyTWVzc2FnZSA9IGZ1bmN0aW9uIChv
d25lcikge1xuICAgIGlmIChvd25lcikge1xuICAgICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1l
KCk7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVy
IG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4g
Jyc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJh
bSB7Kn0gdmFsdWVcbiAgICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9uZW50XG4g
ICAqL1xuICB2YXIgd2FyblZhbGlkU3R5bGUgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIGNvbXBv
bmVudCkge1xuICAgIHZhciBvd25lcjtcbiAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICBvd25l
ciA9IGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuICAgIH1cbiAgICBpZiAobmFt
ZS5pbmRleE9mKCctJykgPiAtMSkge1xuICAgICAgd2Fybkh5cGhlbmF0ZWRTdHlsZU5hbWUobmFt
ZSwgb3duZXIpO1xuICAgIH0gZWxzZSBpZiAoYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuLnRl
c3QobmFtZSkpIHtcbiAgICAgIHdhcm5CYWRWZW5kb3JlZFN0eWxlTmFtZShuYW1lLCBvd25lcik7
XG4gICAgfSBlbHNlIGlmIChiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4udGVzdCh2
YWx1ZSkpIHtcbiAgICAgIHdhcm5TdHlsZVZhbHVlV2l0aFNlbWljb2xvbihuYW1lLCB2YWx1ZSwg
b3duZXIpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlz
TmFOKHZhbHVlKSkge1xuICAgICAgd2FyblN0eWxlVmFsdWVJc05hTihuYW1lLCB2YWx1ZSwgb3du
ZXIpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBPcGVyYXRpb25zIGZvciBkZWFsaW5nIHdp
dGggQ1NTIHByb3BlcnRpZXMuXG4gKi9cbnZhciBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMgPSB7XG4g
IC8qKlxuICAgKiBTZXJpYWxpemVzIGEgbWFwcGluZyBvZiBzdHlsZSBwcm9wZXJ0aWVzIGZvciB1
c2UgYXMgaW5saW5lIHN0eWxlczpcbiAgICpcbiAgICogICA+IGNyZWF0ZU1hcmt1cEZvclN0eWxl
cyh7d2lkdGg6ICcyMDBweCcsIGhlaWdodDogMH0pXG4gICAqICAgXCJ3aWR0aDoyMDBweDtoZWln
aHQ6MDtcIlxuICAgKlxuICAgKiBVbmRlZmluZWQgdmFsdWVzIGFyZSBpZ25vcmVkIHNvIHRoYXQg
ZGVjbGFyYXRpdmUgcHJvZ3JhbW1pbmcgaXMgZWFzaWVyLlxuICAgKiBUaGUgcmVzdWx0IHNob3Vs
ZCBiZSBIVE1MLWVzY2FwZWQgYmVmb3JlIGluc2VydGlvbiBpbnRvIHRoZSBET00uXG4gICAqXG4g
ICAqIEBwYXJhbSB7b2JqZWN0fSBzdHlsZXNcbiAgICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVu
dH0gY29tcG9uZW50XG4gICAqIEByZXR1cm4gez9zdHJpbmd9XG4gICAqL1xuICBjcmVhdGVNYXJr
dXBGb3JTdHlsZXM6IGZ1bmN0aW9uIChzdHlsZXMsIGNvbXBvbmVudCkge1xuICAgIHZhciBzZXJp
YWxpemVkID0gJyc7XG4gICAgZm9yICh2YXIgc3R5bGVOYW1lIGluIHN0eWxlcykge1xuICAgICAg
aWYgKCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkge1xuICAgICAgICBjb250aW51
ZTtcbiAgICAgIH1cbiAgICAgIHZhciBpc0N1c3RvbVByb3BlcnR5ID0gc3R5bGVOYW1lLmluZGV4
T2YoJy0tJykgPT09IDA7XG4gICAgICB2YXIgc3R5bGVWYWx1ZSA9IHN0eWxlc1tzdHlsZU5hbWVd
O1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgICAgaWYgKCFpc0N1c3RvbVByb3BlcnR5KSB7XG4gICAgICAgICAgd2FyblZhbGlkU3R5bGUo
c3R5bGVOYW1lLCBzdHlsZVZhbHVlLCBjb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4g
ICAgICBpZiAoc3R5bGVWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHNlcmlhbGl6ZWQgKz0gcHJv
Y2Vzc1N0eWxlTmFtZShzdHlsZU5hbWUpICsgJzonO1xuICAgICAgICBzZXJpYWxpemVkICs9IGRh
bmdlcm91c1N0eWxlVmFsdWUoc3R5bGVOYW1lLCBzdHlsZVZhbHVlLCBjb21wb25lbnQsIGlzQ3Vz
dG9tUHJvcGVydHkpICsgJzsnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc2VyaWFsaXpl
ZCB8fCBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgbXVsdGlw
bGUgc3R5bGVzIG9uIGEgbm9kZS4gIElmIGEgdmFsdWUgaXMgc3BlY2lmaWVkIGFzXG4gICAqICcn
IChlbXB0eSBzdHJpbmcpLCB0aGUgY29ycmVzcG9uZGluZyBzdHlsZSBwcm9wZXJ0eSB3aWxsIGJl
IHVuc2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAgICogQHBhcmFt
IHtvYmplY3R9IHN0eWxlc1xuICAgKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50fSBjb21wb25l
bnRcbiAgICovXG4gIHNldFZhbHVlRm9yU3R5bGVzOiBmdW5jdGlvbiAobm9kZSwgc3R5bGVzLCBj
b21wb25lbnQpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlv
bih7XG4gICAgICAgIGluc3RhbmNlSUQ6IGNvbXBvbmVudC5fZGVidWdJRCxcbiAgICAgICAgdHlw
ZTogJ3VwZGF0ZSBzdHlsZXMnLFxuICAgICAgICBwYXlsb2FkOiBzdHlsZXNcbiAgICAgIH0pO1xu
ICAgIH1cblxuICAgIHZhciBzdHlsZSA9IG5vZGUuc3R5bGU7XG4gICAgZm9yICh2YXIgc3R5bGVO
YW1lIGluIHN0eWxlcykge1xuICAgICAgaWYgKCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVO
YW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBpc0N1c3RvbVBy
b3BlcnR5ID0gc3R5bGVOYW1lLmluZGV4T2YoJy0tJykgPT09IDA7XG4gICAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAoIWlzQ3VzdG9t
UHJvcGVydHkpIHtcbiAgICAgICAgICB3YXJuVmFsaWRTdHlsZShzdHlsZU5hbWUsIHN0eWxlc1tz
dHlsZU5hbWVdLCBjb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgc3R5
bGVWYWx1ZSA9IGRhbmdlcm91c1N0eWxlVmFsdWUoc3R5bGVOYW1lLCBzdHlsZXNbc3R5bGVOYW1l
XSwgY29tcG9uZW50LCBpc0N1c3RvbVByb3BlcnR5KTtcbiAgICAgIGlmIChzdHlsZU5hbWUgPT09
ICdmbG9hdCcgfHwgc3R5bGVOYW1lID09PSAnY3NzRmxvYXQnKSB7XG4gICAgICAgIHN0eWxlTmFt
ZSA9IHN0eWxlRmxvYXRBY2Nlc3NvcjtcbiAgICAgIH1cbiAgICAgIGlmIChpc0N1c3RvbVByb3Bl
cnR5KSB7XG4gICAgICAgIHN0eWxlLnNldFByb3BlcnR5KHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSk7
XG4gICAgICB9IGVsc2UgaWYgKHN0eWxlVmFsdWUpIHtcbiAgICAgICAgc3R5bGVbc3R5bGVOYW1l
XSA9IHN0eWxlVmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZXhwYW5zaW9uID0g
aGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgJiYgQ1NTUHJvcGVydHkuc2hvcnRoYW5kUHJvcGVydHlF
eHBhbnNpb25zW3N0eWxlTmFtZV07XG4gICAgICAgIGlmIChleHBhbnNpb24pIHtcbiAgICAgICAg
ICAvLyBTaG9ydGhhbmQgcHJvcGVydHkgdGhhdCBJRTggd29uJ3QgbGlrZSB1bnNldHRpbmcsIHNv
IHVuc2V0IGVhY2hcbiAgICAgICAgICAvLyBjb21wb25lbnQgdG8gcGxhY2F0ZSBpdFxuICAgICAg
ICAgIGZvciAodmFyIGluZGl2aWR1YWxTdHlsZU5hbWUgaW4gZXhwYW5zaW9uKSB7XG4gICAgICAg
ICAgICBzdHlsZVtpbmRpdmlkdWFsU3R5bGVOYW1lXSA9ICcnO1xuICAgICAgICAgIH1cbiAgICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHlsZVtzdHlsZU5hbWVdID0gJyc7XG4gICAgICAgIH1c
biAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ1NTUHJvcGVydHlP
cGVyYXRpb25zO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0LWRvbS9saWIvQ1NTUHJvcGVydHlPcGVyYXRpb25zLmpzXG4gKiogbW9kdWxl
IGlkID0gMTI3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZlbnRQbHVnaW5IdWIgPSBy
ZXF1aXJlKCcuL0V2ZW50UGx1Z2luSHViJyk7XG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHJlcXVp
cmUoJy4vRXZlbnRQcm9wYWdhdG9ycycpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVx
dWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdERPTUNvbXBv
bmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0
VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG52YXIgU3ludGhldGljRXZlbnQg
PSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbnZhciBpbnB1dFZhbHVlVHJhY2tpbmcg
PSByZXF1aXJlKCcuL2lucHV0VmFsdWVUcmFja2luZycpO1xudmFyIGdldEV2ZW50VGFyZ2V0ID0g
cmVxdWlyZSgnLi9nZXRFdmVudFRhcmdldCcpO1xudmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSByZXF1
aXJlKCcuL2lzRXZlbnRTdXBwb3J0ZWQnKTtcbnZhciBpc1RleHRJbnB1dEVsZW1lbnQgPSByZXF1
aXJlKCcuL2lzVGV4dElucHV0RWxlbWVudCcpO1xuXG52YXIgZXZlbnRUeXBlcyA9IHtcbiAgY2hh
bmdlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6ICdv
bkNoYW5nZScsXG4gICAgICBjYXB0dXJlZDogJ29uQ2hhbmdlQ2FwdHVyZSdcbiAgICB9LFxuICAg
IGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENoYW5nZScsICd0b3BDbGljaycsICd0b3BG
b2N1cycsICd0b3BJbnB1dCcsICd0b3BLZXlEb3duJywgJ3RvcEtleVVwJywgJ3RvcFNlbGVjdGlv
bkNoYW5nZSddXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUFuZEFjY3VtdWxhdGVDaGFuZ2VF
dmVudChpbnN0LCBuYXRpdmVFdmVudCwgdGFyZ2V0KSB7XG4gIHZhciBldmVudCA9IFN5bnRoZXRp
Y0V2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmNoYW5nZSwgaW5zdCwgbmF0aXZlRXZlbnQsIHRh
cmdldCk7XG4gIGV2ZW50LnR5cGUgPSAnY2hhbmdlJztcbiAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1
bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcbiAgcmV0dXJuIGV2ZW50O1xufVxuLyoq
XG4gKiBGb3IgSUUgc2hpbXNcbiAqL1xudmFyIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xudmFyIGFj
dGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDtcblxuLyoqXG4gKiBTRUNUSU9OOiBoYW5kbGUgYGNoYW5n
ZWAgZXZlbnRcbiAqL1xuZnVuY3Rpb24gc2hvdWxkVXNlQ2hhbmdlRXZlbnQoZWxlbSkge1xuICB2
YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KTtcbiAgcmV0dXJuIG5vZGVOYW1lID09PSAnc2VsZWN0JyB8fCBub2RlTmFtZSA9PT0gJ2lucHV0
JyAmJiBlbGVtLnR5cGUgPT09ICdmaWxlJztcbn1cblxudmFyIGRvZXNDaGFuZ2VFdmVudEJ1YmJs
ZSA9IGZhbHNlO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICAvLyBT
ZWUgYGhhbmRsZUNoYW5nZWAgY29tbWVudCBiZWxvd1xuICBkb2VzQ2hhbmdlRXZlbnRCdWJibGUg
PSBpc0V2ZW50U3VwcG9ydGVkKCdjaGFuZ2UnKSAmJiAoIWRvY3VtZW50LmRvY3VtZW50TW9kZSB8
fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPiA4KTtcbn1cblxuZnVuY3Rpb24gbWFudWFsRGlzcGF0
Y2hDaGFuZ2VFdmVudChuYXRpdmVFdmVudCkge1xuICB2YXIgZXZlbnQgPSBjcmVhdGVBbmRBY2N1
bXVsYXRlQ2hhbmdlRXZlbnQoYWN0aXZlRWxlbWVudEluc3QsIG5hdGl2ZUV2ZW50LCBnZXRFdmVu
dFRhcmdldChuYXRpdmVFdmVudCkpO1xuXG4gIC8vIElmIGNoYW5nZSBhbmQgcHJvcGVydHljaGFu
Z2UgYnViYmxlZCwgd2UnZCBqdXN0IGJpbmQgdG8gaXQgbGlrZSBhbGwgdGhlXG4gIC8vIG90aGVy
IGV2ZW50cyBhbmQgaGF2ZSBpdCBnbyB0aHJvdWdoIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci4g
U2luY2UgaXRcbiAgLy8gZG9lc24ndCwgd2UgbWFudWFsbHkgbGlzdGVuIGZvciB0aGUgZXZlbnRz
IGFuZCBzbyB3ZSBoYXZlIHRvIGVucXVldWUgYW5kXG4gIC8vIHByb2Nlc3MgdGhlIGFic3RyYWN0
IGV2ZW50IG1hbnVhbGx5LlxuICAvL1xuICAvLyBCYXRjaGluZyBpcyBuZWNlc3NhcnkgaGVyZSBp
biBvcmRlciB0byBlbnN1cmUgdGhhdCBhbGwgZXZlbnQgaGFuZGxlcnMgcnVuXG4gIC8vIGJlZm9y
ZSB0aGUgbmV4dCByZXJlbmRlciAoaW5jbHVkaW5nIGV2ZW50IGhhbmRsZXJzIGF0dGFjaGVkIHRv
IGFuY2VzdG9yXG4gIC8vIGVsZW1lbnRzIGluc3RlYWQgb2YgZGlyZWN0bHkgb24gdGhlIGlucHV0
KS4gV2l0aG91dCB0aGlzLCBjb250cm9sbGVkXG4gIC8vIGNvbXBvbmVudHMgZG9uJ3Qgd29yayBw
cm9wZXJseSBpbiBjb25qdW5jdGlvbiB3aXRoIGV2ZW50IGJ1YmJsaW5nIGJlY2F1c2VcbiAgLy8g
dGhlIGNvbXBvbmVudCBpcyByZXJlbmRlcmVkIGFuZCB0aGUgdmFsdWUgcmV2ZXJ0ZWQgYmVmb3Jl
IGFsbCB0aGUgZXZlbnRcbiAgLy8gaGFuZGxlcnMgY2FuIHJ1bi4gU2VlIGh0dHBzOi8vZ2l0aHVi
LmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzA4LlxuICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVw
ZGF0ZXMocnVuRXZlbnRJbkJhdGNoLCBldmVudCk7XG59XG5cbmZ1bmN0aW9uIHJ1bkV2ZW50SW5C
YXRjaChldmVudCkge1xuICBFdmVudFBsdWdpbkh1Yi5lbnF1ZXVlRXZlbnRzKGV2ZW50KTtcbiAg
RXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUoZmFsc2UpO1xufVxuXG5mdW5jdGlvbiBz
dGFydFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgodGFyZ2V0LCB0YXJnZXRJbnN0KSB7XG4gIGFj
dGl2ZUVsZW1lbnQgPSB0YXJnZXQ7XG4gIGFjdGl2ZUVsZW1lbnRJbnN0ID0gdGFyZ2V0SW5zdDtc
biAgYWN0aXZlRWxlbWVudC5hdHRhY2hFdmVudCgnb25jaGFuZ2UnLCBtYW51YWxEaXNwYXRjaENo
YW5nZUV2ZW50KTtcbn1cblxuZnVuY3Rpb24gc3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgo
KSB7XG4gIGlmICghYWN0aXZlRWxlbWVudCkge1xuICAgIHJldHVybjtcbiAgfVxuICBhY3RpdmVF
bGVtZW50LmRldGFjaEV2ZW50KCdvbmNoYW5nZScsIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQp
O1xuICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgYWN0aXZlRWxlbWVudEluc3QgPSBudWxsO1xu
fVxuXG5mdW5jdGlvbiBnZXRJbnN0SWZWYWx1ZUNoYW5nZWQodGFyZ2V0SW5zdCwgbmF0aXZlRXZl
bnQpIHtcbiAgdmFyIHVwZGF0ZWQgPSBpbnB1dFZhbHVlVHJhY2tpbmcudXBkYXRlVmFsdWVJZkNo
YW5nZWQodGFyZ2V0SW5zdCk7XG4gIHZhciBzaW11bGF0ZWQgPSBuYXRpdmVFdmVudC5zaW11bGF0
ZWQgPT09IHRydWUgJiYgQ2hhbmdlRXZlbnRQbHVnaW4uX2FsbG93U2ltdWxhdGVkUGFzc1Rocm91
Z2g7XG5cbiAgaWYgKHVwZGF0ZWQgfHwgc2ltdWxhdGVkKSB7XG4gICAgcmV0dXJuIHRhcmdldElu
c3Q7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZvckNoYW5nZUV2ZW50KHRvcExl
dmVsVHlwZSwgdGFyZ2V0SW5zdCkge1xuICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ2hhbmdl
Jykge1xuICAgIHJldHVybiB0YXJnZXRJbnN0O1xuICB9XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUV2
ZW50c0ZvckNoYW5nZUV2ZW50SUU4KHRvcExldmVsVHlwZSwgdGFyZ2V0LCB0YXJnZXRJbnN0KSB7
XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BGb2N1cycpIHtcbiAgICAvLyBzdG9wV2F0Y2hp
bmcoKSBzaG91bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwgaXQganVzdCBpbiBjYXNlIHdl
XG4gICAgLy8gbWlzc2VkIGEgYmx1ciBldmVudCBzb21laG93LlxuICAgIHN0b3BXYXRjaGluZ0Zv
ckNoYW5nZUV2ZW50SUU4KCk7XG4gICAgc3RhcnRXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KHRh
cmdldCwgdGFyZ2V0SW5zdCk7XG4gIH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQmx1
cicpIHtcbiAgICBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgpO1xuICB9XG59XG5cbi8q
KlxuICogU0VDVElPTjogaGFuZGxlIGBpbnB1dGAgZXZlbnRcbiAqL1xudmFyIGlzSW5wdXRFdmVu
dFN1cHBvcnRlZCA9IGZhbHNlO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkg
e1xuICAvLyBJRTkgY2xhaW1zIHRvIHN1cHBvcnQgdGhlIGlucHV0IGV2ZW50IGJ1dCBmYWlscyB0
byB0cmlnZ2VyIGl0IHdoZW5cbiAgLy8gZGVsZXRpbmcgdGV4dCwgc28gd2UgaWdub3JlIGl0cyBp
bnB1dCBldmVudHMuXG5cbiAgaXNJbnB1dEV2ZW50U3VwcG9ydGVkID0gaXNFdmVudFN1cHBvcnRl
ZCgnaW5wdXQnKSAmJiAoISgnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCkgfHwgZG9jdW1lbnQu
ZG9jdW1lbnRNb2RlID4gOSk7XG59XG5cbi8qKlxuICogKEZvciBJRSA8PTkpIFN0YXJ0cyB0cmFj
a2luZyBwcm9wZXJ0eWNoYW5nZSBldmVudHMgb24gdGhlIHBhc3NlZC1pbiBlbGVtZW50XG4gKiBh
bmQgb3ZlcnJpZGUgdGhlIHZhbHVlIHByb3BlcnR5IHNvIHRoYXQgd2UgY2FuIGRpc3Rpbmd1aXNo
IHVzZXIgZXZlbnRzIGZyb21cbiAqIHZhbHVlIGNoYW5nZXMgaW4gSlMuXG4gKi9cbmZ1bmN0aW9u
IHN0YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSh0YXJnZXQsIHRhcmdldEluc3QpIHtcbiAgYWN0
aXZlRWxlbWVudCA9IHRhcmdldDtcbiAgYWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJbnN0O1xu
ICBhY3RpdmVFbGVtZW50LmF0dGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJv
cGVydHlDaGFuZ2UpO1xufVxuXG4vKipcbiAqIChGb3IgSUUgPD05KSBSZW1vdmVzIHRoZSBldmVu
dCBsaXN0ZW5lcnMgZnJvbSB0aGUgY3VycmVudGx5LXRyYWNrZWQgZWxlbWVudCxcbiAqIGlmIGFu
eSBleGlzdHMuXG4gKi9cbmZ1bmN0aW9uIHN0b3BXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKCkge1xu
ICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYWN0aXZlRWxlbWVu
dC5kZXRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGhhbmRsZVByb3BlcnR5Q2hhbmdlKTtc
blxuICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgYWN0aXZlRWxlbWVudEluc3QgPSBudWxsO1xu
fVxuXG4vKipcbiAqIChGb3IgSUUgPD05KSBIYW5kbGVzIGEgcHJvcGVydHljaGFuZ2UgZXZlbnQs
IHNlbmRpbmcgYSBgY2hhbmdlYCBldmVudCBpZlxuICogdGhlIHZhbHVlIG9mIHRoZSBhY3RpdmUg
ZWxlbWVudCBoYXMgY2hhbmdlZC5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlUHJvcGVydHlDaGFuZ2Uo
bmF0aXZlRXZlbnQpIHtcbiAgaWYgKG5hdGl2ZUV2ZW50LnByb3BlcnR5TmFtZSAhPT0gJ3ZhbHVl
Jykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKGFjdGl2
ZUVsZW1lbnRJbnN0LCBuYXRpdmVFdmVudCkpIHtcbiAgICBtYW51YWxEaXNwYXRjaENoYW5nZUV2
ZW50KG5hdGl2ZUV2ZW50KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVFdmVudHNGb3JJbnB1
dEV2ZW50UG9seWZpbGwodG9wTGV2ZWxUeXBlLCB0YXJnZXQsIHRhcmdldEluc3QpIHtcbiAgaWYg
KHRvcExldmVsVHlwZSA9PT0gJ3RvcEZvY3VzJykge1xuICAgIC8vIEluIElFOCwgd2UgY2FuIGNh
cHR1cmUgYWxtb3N0IGFsbCAudmFsdWUgY2hhbmdlcyBieSBhZGRpbmcgYVxuICAgIC8vIHByb3Bl
cnR5Y2hhbmdlIGhhbmRsZXIgYW5kIGxvb2tpbmcgZm9yIGV2ZW50cyB3aXRoIHByb3BlcnR5TmFt
ZVxuICAgIC8vIGVxdWFsIHRvICd2YWx1ZSdcbiAgICAvLyBJbiBJRTksIHByb3BlcnR5Y2hhbmdl
IGZpcmVzIGZvciBtb3N0IGlucHV0IGV2ZW50cyBidXQgaXMgYnVnZ3kgYW5kXG4gICAgLy8gZG9l
c24ndCBmaXJlIHdoZW4gdGV4dCBpcyBkZWxldGVkLCBidXQgY29udmVuaWVudGx5LCBzZWxlY3Rp
b25jaGFuZ2VcbiAgICAvLyBhcHBlYXJzIHRvIGZpcmUgaW4gYWxsIG9mIHRoZSByZW1haW5pbmcg
Y2FzZXMgc28gd2UgY2F0Y2ggdGhvc2UgYW5kXG4gICAgLy8gZm9yd2FyZCB0aGUgZXZlbnQgaWYg
dGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgLy8gSW4gZWl0aGVyIGNhc2UsIHdlIGRvbid0IHdh
bnQgdG8gY2FsbCB0aGUgZXZlbnQgaGFuZGxlciBpZiB0aGUgdmFsdWVcbiAgICAvLyBpcyBjaGFu
Z2VkIGZyb20gSlMgc28gd2UgcmVkZWZpbmUgYSBzZXR0ZXIgZm9yIGAudmFsdWVgIHRoYXQgdXBk
YXRlc1xuICAgIC8vIG91ciBhY3RpdmVFbGVtZW50VmFsdWUgdmFyaWFibGUsIGFsbG93aW5nIHVz
IHRvIGlnbm9yZSB0aG9zZSBjaGFuZ2VzXG4gICAgLy9cbiAgICAvLyBzdG9wV2F0Y2hpbmcoKSBz
aG91bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwgaXQganVzdCBpbiBjYXNlIHdlXG4gICAg
Ly8gbWlzc2VkIGEgYmx1ciBldmVudCBzb21laG93LlxuICAgIHN0b3BXYXRjaGluZ0ZvclZhbHVl
Q2hhbmdlKCk7XG4gICAgc3RhcnRXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKHRhcmdldCwgdGFyZ2V0
SW5zdCk7XG4gIH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQmx1cicpIHtcbiAgICBz
dG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpO1xuICB9XG59XG5cbi8vIEZvciBJRTggYW5kIElF
OS5cbmZ1bmN0aW9uIGdldFRhcmdldEluc3RGb3JJbnB1dEV2ZW50UG9seWZpbGwodG9wTGV2ZWxU
eXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCkge1xuICBpZiAodG9wTGV2ZWxUeXBlID09PSAn
dG9wU2VsZWN0aW9uQ2hhbmdlJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BLZXlVcCcgfHwgdG9w
TGV2ZWxUeXBlID09PSAndG9wS2V5RG93bicpIHtcbiAgICAvLyBPbiB0aGUgc2VsZWN0aW9uY2hh
bmdlIGV2ZW50LCB0aGUgdGFyZ2V0IGlzIGp1c3QgZG9jdW1lbnQgd2hpY2ggaXNuJ3RcbiAgICAv
LyBoZWxwZnVsIGZvciB1cyBzbyBqdXN0IGNoZWNrIGFjdGl2ZUVsZW1lbnQgaW5zdGVhZC5cbiAg
ICAvL1xuICAgIC8vIDk5JSBvZiB0aGUgdGltZSwga2V5ZG93biBhbmQga2V5dXAgYXJlbid0IG5l
Y2Vzc2FyeS4gSUU4IGZhaWxzIHRvIGZpcmVcbiAgICAvLyBwcm9wZXJ0eWNoYW5nZSBvbiB0aGUg
Zmlyc3QgaW5wdXQgZXZlbnQgYWZ0ZXIgc2V0dGluZyBgdmFsdWVgIGZyb20gYVxuICAgIC8vIHNj
cmlwdCBhbmQgZmlyZXMgb25seSBrZXlkb3duLCBrZXlwcmVzcywga2V5dXAuIENhdGNoaW5nIGtl
eXVwIHVzdWFsbHlcbiAgICAvLyBnZXRzIGl0IGFuZCBjYXRjaGluZyBrZXlkb3duIGxldHMgdXMg
ZmlyZSBhbiBldmVudCBmb3IgdGhlIGZpcnN0XG4gICAgLy8ga2V5c3Ryb2tlIGlmIHVzZXIgZG9l
cyBhIGtleSByZXBlYXQgKGl0J2xsIGJlIGEgbGl0dGxlIGRlbGF5ZWQ6IHJpZ2h0XG4gICAgLy8g
YmVmb3JlIHRoZSBzZWNvbmQga2V5c3Ryb2tlKS4gT3RoZXIgaW5wdXQgbWV0aG9kcyAoZS5nLiwg
cGFzdGUpIHNlZW0gdG9cbiAgICAvLyBmaXJlIHNlbGVjdGlvbmNoYW5nZSBub3JtYWxseS5cbiAg
ICByZXR1cm4gZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKGFjdGl2ZUVsZW1lbnRJbnN0LCBuYXRpdmVF
dmVudCk7XG4gIH1cbn1cblxuLyoqXG4gKiBTRUNUSU9OOiBoYW5kbGUgYGNsaWNrYCBldmVudFxu
ICovXG5mdW5jdGlvbiBzaG91bGRVc2VDbGlja0V2ZW50KGVsZW0pIHtcbiAgLy8gVXNlIHRoZSBg
Y2xpY2tgIGV2ZW50IHRvIGRldGVjdCBjaGFuZ2VzIHRvIGNoZWNrYm94IGFuZCByYWRpbyBpbnB1
dHMuXG4gIC8vIFRoaXMgYXBwcm9hY2ggd29ya3MgYWNyb3NzIGFsbCBicm93c2Vycywgd2hlcmVh
cyBgY2hhbmdlYCBkb2VzIG5vdCBmaXJlXG4gIC8vIHVudGlsIGBibHVyYCBpbiBJRTguXG4gIHZh
ciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWU7XG4gIHJldHVybiBub2RlTmFtZSAmJiBub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmIChlbGVtLnR5cGUgPT09ICdjaGVja2JveCcg
fHwgZWxlbS50eXBlID09PSAncmFkaW8nKTtcbn1cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZv
ckNsaWNrRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCkge1xuICBp
ZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ2xpY2snKSB7XG4gICAgcmV0dXJuIGdldEluc3RJZlZh
bHVlQ2hhbmdlZCh0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24g
Z2V0VGFyZ2V0SW5zdEZvcklucHV0T3JDaGFuZ2VFdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldElu
c3QsIG5hdGl2ZUV2ZW50KSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BJbnB1dCcgfHwg
dG9wTGV2ZWxUeXBlID09PSAndG9wQ2hhbmdlJykge1xuICAgIHJldHVybiBnZXRJbnN0SWZWYWx1
ZUNoYW5nZWQodGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGhh
bmRsZUNvbnRyb2xsZWRJbnB1dEJsdXIoaW5zdCwgbm9kZSkge1xuICAvLyBUT0RPOiBJbiBJRSwg
aW5zdCBpcyBvY2Nhc2lvbmFsbHkgbnVsbC4gV2h5P1xuICBpZiAoaW5zdCA9PSBudWxsKSB7XG4g
ICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRmliZXIgYW5kIFJlYWN0RE9NIGtlZXAgd3JhcHBlciBz
dGF0ZSBpbiBzZXBhcmF0ZSBwbGFjZXNcbiAgdmFyIHN0YXRlID0gaW5zdC5fd3JhcHBlclN0YXRl
IHx8IG5vZGUuX3dyYXBwZXJTdGF0ZTtcblxuICBpZiAoIXN0YXRlIHx8ICFzdGF0ZS5jb250cm9s
bGVkIHx8IG5vZGUudHlwZSAhPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAv
LyBJZiBjb250cm9sbGVkLCBhc3NpZ24gdGhlIHZhbHVlIGF0dHJpYnV0ZSB0byB0aGUgY3VycmVu
dCB2YWx1ZSBvbiBibHVyXG4gIHZhciB2YWx1ZSA9ICcnICsgbm9kZS52YWx1ZTtcbiAgaWYgKG5v
ZGUuZ2V0QXR0cmlidXRlKCd2YWx1ZScpICE9PSB2YWx1ZSkge1xuICAgIG5vZGUuc2V0QXR0cmli
dXRlKCd2YWx1ZScsIHZhbHVlKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgcGx1Z2luIGNyZWF0
ZXMgYW4gYG9uQ2hhbmdlYCBldmVudCB0aGF0IG5vcm1hbGl6ZXMgY2hhbmdlIGV2ZW50c1xuICog
YWNyb3NzIGZvcm0gZWxlbWVudHMuIFRoaXMgZXZlbnQgZmlyZXMgYXQgYSB0aW1lIHdoZW4gaXQn
cyBwb3NzaWJsZSB0b1xuICogY2hhbmdlIHRoZSBlbGVtZW50J3MgdmFsdWUgd2l0aG91dCBzZWVp
bmcgYSBmbGlja2VyLlxuICpcbiAqIFN1cHBvcnRlZCBlbGVtZW50cyBhcmU6XG4gKiAtIGlucHV0
IChzZWUgYGlzVGV4dElucHV0RWxlbWVudGApXG4gKiAtIHRleHRhcmVhXG4gKiAtIHNlbGVjdFxu
ICovXG52YXIgQ2hhbmdlRXZlbnRQbHVnaW4gPSB7XG4gIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMs
XG5cbiAgX2FsbG93U2ltdWxhdGVkUGFzc1Rocm91Z2g6IHRydWUsXG4gIF9pc0lucHV0RXZlbnRT
dXBwb3J0ZWQ6IGlzSW5wdXRFdmVudFN1cHBvcnRlZCxcblxuICBleHRyYWN0RXZlbnRzOiBmdW5j
dGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpIHtcbiAgICB2YXIgdGFyZ2V0Tm9kZSA9IHRhcmdldEluc3QgPyBSZWFjdERPTUNvbXBv
bmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0YXJnZXRJbnN0KSA6IHdpbmRvdztcblxuICAg
IHZhciBnZXRUYXJnZXRJbnN0RnVuYywgaGFuZGxlRXZlbnRGdW5jO1xuICAgIGlmIChzaG91bGRV
c2VDaGFuZ2VFdmVudCh0YXJnZXROb2RlKSkge1xuICAgICAgaWYgKGRvZXNDaGFuZ2VFdmVudEJ1
YmJsZSkge1xuICAgICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9IGdldFRhcmdldEluc3RGb3JDaGFu
Z2VFdmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhbmRsZUV2ZW50RnVuYyA9IGhhbmRs
ZUV2ZW50c0ZvckNoYW5nZUV2ZW50SUU4O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUZXh0
SW5wdXRFbGVtZW50KHRhcmdldE5vZGUpKSB7XG4gICAgICBpZiAoaXNJbnB1dEV2ZW50U3VwcG9y
dGVkKSB7XG4gICAgICAgIGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvcklucHV0
T3JDaGFuZ2VFdmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdldFRhcmdldEluc3RGdW5j
ID0gZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRQb2x5ZmlsbDtcbiAgICAgICAgaGFuZGxlRXZl
bnRGdW5jID0gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudFBvbHlmaWxsO1xuICAgICAgfVxuICAg
IH0gZWxzZSBpZiAoc2hvdWxkVXNlQ2xpY2tFdmVudCh0YXJnZXROb2RlKSkge1xuICAgICAgZ2V0
VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9yQ2xpY2tFdmVudDtcbiAgICB9XG5cbiAg
ICBpZiAoZ2V0VGFyZ2V0SW5zdEZ1bmMpIHtcbiAgICAgIHZhciBpbnN0ID0gZ2V0VGFyZ2V0SW5z
dEZ1bmModG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCk7XG4gICAgICBpZiAo
aW5zdCkge1xuICAgICAgICB2YXIgZXZlbnQgPSBjcmVhdGVBbmRBY2N1bXVsYXRlQ2hhbmdlRXZl
bnQoaW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICAgICAgcmV0dXJu
IGV2ZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChoYW5kbGVFdmVudEZ1bmMpIHtcbiAg
ICAgIGhhbmRsZUV2ZW50RnVuYyh0b3BMZXZlbFR5cGUsIHRhcmdldE5vZGUsIHRhcmdldEluc3Qp
O1xuICAgIH1cblxuICAgIC8vIFdoZW4gYmx1cnJpbmcsIHNldCB0aGUgdmFsdWUgYXR0cmlidXRl
IGZvciBudW1iZXIgaW5wdXRzXG4gICAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcEJsdXInKSB7
XG4gICAgICBoYW5kbGVDb250cm9sbGVkSW5wdXRCbHVyKHRhcmdldEluc3QsIHRhcmdldE5vZGUp
O1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDaGFuZ2VFdmVudFBsdWdpbjtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1kb20vbGliL0NoYW5nZUV2ZW50UGx1Z2luLmpzXG4gKiogbW9kdWxlIGlkID0gMTI4XG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0
UHJvZEludmFyaWFudCcpO1xuXG52YXIgRE9NTGF6eVRyZWUgPSByZXF1aXJlKCcuL0RPTUxhenlU
cmVlJyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVj
dXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgY3JlYXRlTm9kZXNGcm9tTWFya3VwID0gcmVxdWly
ZSgnZmJqcy9saWIvY3JlYXRlTm9kZXNGcm9tTWFya3VwJyk7XG52YXIgZW1wdHlGdW5jdGlvbiA9
IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1
aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIERhbmdlciA9IHtcbiAgLyoqXG4gICAq
IFJlcGxhY2VzIGEgbm9kZSB3aXRoIGEgc3RyaW5nIG9mIG1hcmt1cCBhdCBpdHMgY3VycmVudCBw
b3NpdGlvbiB3aXRoaW4gaXRzXG4gICAqIHBhcmVudC4gVGhlIG1hcmt1cCBtdXN0IHJlbmRlciBp
bnRvIGEgc2luZ2xlIHJvb3Qgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBv
bGRDaGlsZCBDaGlsZCBub2RlIHRvIHJlcGxhY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJr
dXAgTWFya3VwIHRvIHJlbmRlciBpbiBwbGFjZSBvZiB0aGUgY2hpbGQgbm9kZS5cbiAgICogQGlu
dGVybmFsXG4gICAqL1xuICBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDogZnVuY3Rp
b24gKG9sZENoaWxkLCBtYXJrdXApIHtcbiAgICAhRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNl
RE9NID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IENhbm5vdCByZW5k
ZXIgbWFya3VwIGluIGEgd29ya2VyIHRocmVhZC4gTWFrZSBzdXJlIGB3aW5kb3dgIGFuZCBgZG9j
dW1lbnRgIGFyZSBhdmFpbGFibGUgZ2xvYmFsbHkgYmVmb3JlIHJlcXVpcmluZyBSZWFjdCB3aGVu
IHVuaXQgdGVzdGluZyBvciB1c2UgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKSBmb3Ig
c2VydmVyIHJlbmRlcmluZy4nKSA6IF9wcm9kSW52YXJpYW50KCc1NicpIDogdm9pZCAwO1xuICAg
ICFtYXJrdXAgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4uKTogTWlzc2lu
ZyBtYXJrdXAuJykgOiBfcHJvZEludmFyaWFudCgnNTcnKSA6IHZvaWQgMDtcbiAgICAhKG9sZENo
aWxkLm5vZGVOYW1lICE9PSAnSFRNTCcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFy
a3VwKC4uLik6IENhbm5vdCByZXBsYWNlIG1hcmt1cCBvZiB0aGUgPGh0bWw+IG5vZGUuIFRoaXMg
aXMgYmVjYXVzZSBicm93c2VyIHF1aXJrcyBtYWtlIHRoaXMgdW5yZWxpYWJsZSBhbmQvb3Igc2xv
dy4gSWYgeW91IHdhbnQgdG8gcmVuZGVyIHRvIHRoZSByb290IHlvdSBtdXN0IHVzZSBzZXJ2ZXIg
cmVuZGVyaW5nLiBTZWUgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKS4nKSA6IF9wcm9k
SW52YXJpYW50KCc1OCcpIDogdm9pZCAwO1xuXG4gICAgaWYgKHR5cGVvZiBtYXJrdXAgPT09ICdz
dHJpbmcnKSB7XG4gICAgICB2YXIgbmV3Q2hpbGQgPSBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAobWFy
a3VwLCBlbXB0eUZ1bmN0aW9uKVswXTtcbiAgICAgIG9sZENoaWxkLnBhcmVudE5vZGUucmVwbGFj
ZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIERPTUxhenlU
cmVlLnJlcGxhY2VDaGlsZFdpdGhUcmVlKG9sZENoaWxkLCBtYXJrdXApO1xuICAgIH1cbiAgfVxu
fTtcblxubW9kdWxlLmV4cG9ydHMgPSBEYW5nZXI7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9EYW5nZXIuanNcbiAqKiBt
b2R1bGUgaWQgPSAxMjlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIHRo
YXQgaXMgaW5qZWN0YWJsZSBpbnRvIGBFdmVudFBsdWdpbkh1YmAsIHRoYXQgc3BlY2lmaWVzIGFc
biAqIGRldGVybWluaXN0aWMgb3JkZXJpbmcgb2YgYEV2ZW50UGx1Z2luYHMuIEEgY29udmVuaWVu
dCB3YXkgdG8gcmVhc29uIGFib3V0XG4gKiBwbHVnaW5zLCB3aXRob3V0IGhhdmluZyB0byBwYWNr
YWdlIGV2ZXJ5IG9uZSBvZiB0aGVtLiBUaGlzIGlzIGJldHRlciB0aGFuXG4gKiBoYXZpbmcgcGx1
Z2lucyBiZSBvcmRlcmVkIGluIHRoZSBzYW1lIG9yZGVyIHRoYXQgdGhleSBhcmUgaW5qZWN0ZWQg
YmVjYXVzZVxuICogdGhhdCBvcmRlcmluZyB3b3VsZCBiZSBpbmZsdWVuY2VkIGJ5IHRoZSBwYWNr
YWdpbmcgb3JkZXIuXG4gKiBgUmVzcG9uZGVyRXZlbnRQbHVnaW5gIG11c3Qgb2NjdXIgYmVmb3Jl
IGBTaW1wbGVFdmVudFBsdWdpbmAgc28gdGhhdFxuICogcHJldmVudGluZyBkZWZhdWx0IG9uIGV2
ZW50cyBpcyBjb252ZW5pZW50IGluIGBTaW1wbGVFdmVudFBsdWdpbmAgaGFuZGxlcnMuXG4gKi9c
blxudmFyIERlZmF1bHRFdmVudFBsdWdpbk9yZGVyID0gWydSZXNwb25kZXJFdmVudFBsdWdpbics
ICdTaW1wbGVFdmVudFBsdWdpbicsICdUYXBFdmVudFBsdWdpbicsICdFbnRlckxlYXZlRXZlbnRQ
bHVnaW4nLCAnQ2hhbmdlRXZlbnRQbHVnaW4nLCAnU2VsZWN0RXZlbnRQbHVnaW4nLCAnQmVmb3Jl
SW5wdXRFdmVudFBsdWdpbiddO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERlZmF1bHRFdmVudFBsdWdp
bk9yZGVyO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LWRvbS9saWIvRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIuanNcbiAqKiBtb2R1bGUg
aWQgPSAxMzBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudFByb3BhZ2F0b3JzID0g
cmVxdWlyZSgnLi9FdmVudFByb3BhZ2F0b3JzJyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVl
ID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBTeW50aGV0aWNNb3Vz
ZUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNNb3VzZUV2ZW50Jyk7XG5cbnZhciBldmVudFR5
cGVzID0ge1xuICBtb3VzZUVudGVyOiB7XG4gICAgcmVnaXN0cmF0aW9uTmFtZTogJ29uTW91c2VF
bnRlcicsXG4gICAgZGVwZW5kZW5jaWVzOiBbJ3RvcE1vdXNlT3V0JywgJ3RvcE1vdXNlT3Zlcidd
XG4gIH0sXG4gIG1vdXNlTGVhdmU6IHtcbiAgICByZWdpc3RyYXRpb25OYW1lOiAnb25Nb3VzZUxl
YXZlJyxcbiAgICBkZXBlbmRlbmNpZXM6IFsndG9wTW91c2VPdXQnLCAndG9wTW91c2VPdmVyJ11c
biAgfVxufTtcblxudmFyIEVudGVyTGVhdmVFdmVudFBsdWdpbiA9IHtcbiAgZXZlbnRUeXBlczog
ZXZlbnRUeXBlcyxcblxuICAvKipcbiAgICogRm9yIGFsbW9zdCBldmVyeSBpbnRlcmFjdGlvbiB3
ZSBjYXJlIGFib3V0LCB0aGVyZSB3aWxsIGJlIGJvdGggYSB0b3AtbGV2ZWxcbiAgICogYG1vdXNl
b3ZlcmAgYW5kIGBtb3VzZW91dGAgZXZlbnQgdGhhdCBvY2N1cnMuIE9ubHkgdXNlIGBtb3VzZW91
dGAgc28gdGhhdFxuICAgKiB3ZSBkbyBub3QgZXh0cmFjdCBkdXBsaWNhdGUgZXZlbnRzLiBIb3dl
dmVyLCBtb3ZpbmcgdGhlIG1vdXNlIGludG8gdGhlXG4gICAqIGJyb3dzZXIgZnJvbSBvdXRzaWRl
IHdpbGwgbm90IGZpcmUgYSBgbW91c2VvdXRgIGV2ZW50LiBJbiB0aGlzIGNhc2UsIHdlIHVzZVxu
ICAgKiB0aGUgYG1vdXNlb3ZlcmAgdG9wLWxldmVsIGV2ZW50LlxuICAgKi9cbiAgZXh0cmFjdEV2
ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlT3Zl
cicgJiYgKG5hdGl2ZUV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgbmF0aXZlRXZlbnQuZnJvbUVsZW1l
bnQpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRvcExldmVsVHlwZSAh
PT0gJ3RvcE1vdXNlT3V0JyAmJiB0b3BMZXZlbFR5cGUgIT09ICd0b3BNb3VzZU92ZXInKSB7XG4g
ICAgICAvLyBNdXN0IG5vdCBiZSBhIG1vdXNlIGluIG9yIG1vdXNlIG91dCAtIGlnbm9yaW5nLlxu
ICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIHdpbjtcbiAgICBpZiAobmF0aXZl
RXZlbnRUYXJnZXQud2luZG93ID09PSBuYXRpdmVFdmVudFRhcmdldCkge1xuICAgICAgLy8gYG5h
dGl2ZUV2ZW50VGFyZ2V0YCBpcyBwcm9iYWJseSBhIHdpbmRvdyBvYmplY3QuXG4gICAgICB3aW4g
PSBuYXRpdmVFdmVudFRhcmdldDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVE9ETzogRmlndXJl
IG91dCB3aHkgYG93bmVyRG9jdW1lbnRgIGlzIHNvbWV0aW1lcyB1bmRlZmluZWQgaW4gSUU4Llxu
ICAgICAgdmFyIGRvYyA9IG5hdGl2ZUV2ZW50VGFyZ2V0Lm93bmVyRG9jdW1lbnQ7XG4gICAgICBp
ZiAoZG9jKSB7XG4gICAgICAgIHdpbiA9IGRvYy5kZWZhdWx0VmlldyB8fCBkb2MucGFyZW50V2lu
ZG93O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luID0gd2luZG93O1xuICAgICAgfVxuICAg
IH1cblxuICAgIHZhciBmcm9tO1xuICAgIHZhciB0bztcbiAgICBpZiAodG9wTGV2ZWxUeXBlID09
PSAndG9wTW91c2VPdXQnKSB7XG4gICAgICBmcm9tID0gdGFyZ2V0SW5zdDtcbiAgICAgIHZhciBy
ZWxhdGVkID0gbmF0aXZlRXZlbnQucmVsYXRlZFRhcmdldCB8fCBuYXRpdmVFdmVudC50b0VsZW1l
bnQ7XG4gICAgICB0byA9IHJlbGF0ZWQgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2Vz
dEluc3RhbmNlRnJvbU5vZGUocmVsYXRlZCkgOiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICAv
LyBNb3ZpbmcgdG8gYSBub2RlIGZyb20gb3V0c2lkZSB0aGUgd2luZG93LlxuICAgICAgZnJvbSA9
IG51bGw7XG4gICAgICB0byA9IHRhcmdldEluc3Q7XG4gICAgfVxuXG4gICAgaWYgKGZyb20gPT09
IHRvKSB7XG4gICAgICAvLyBOb3RoaW5nIHBlcnRhaW5zIHRvIG91ciBtYW5hZ2VkIGNvbXBvbmVu
dHMuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgZnJvbU5vZGUgPSBmcm9t
ID09IG51bGwgPyB3aW4gOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5j
ZShmcm9tKTtcbiAgICB2YXIgdG9Ob2RlID0gdG8gPT0gbnVsbCA/IHdpbiA6IFJlYWN0RE9NQ29t
cG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRvKTtcblxuICAgIHZhciBsZWF2ZSA9IFN5
bnRoZXRpY01vdXNlRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMubW91c2VMZWF2ZSwgZnJvbSwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICBsZWF2ZS50eXBlID0gJ21vdXNl
bGVhdmUnO1xuICAgIGxlYXZlLnRhcmdldCA9IGZyb21Ob2RlO1xuICAgIGxlYXZlLnJlbGF0ZWRU
YXJnZXQgPSB0b05vZGU7XG5cbiAgICB2YXIgZW50ZXIgPSBTeW50aGV0aWNNb3VzZUV2ZW50Lmdl
dFBvb2xlZChldmVudFR5cGVzLm1vdXNlRW50ZXIsIHRvLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZl
bnRUYXJnZXQpO1xuICAgIGVudGVyLnR5cGUgPSAnbW91c2VlbnRlcic7XG4gICAgZW50ZXIudGFy
Z2V0ID0gdG9Ob2RlO1xuICAgIGVudGVyLnJlbGF0ZWRUYXJnZXQgPSBmcm9tTm9kZTtcblxuICAg
IEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzKGxlYXZlLCBl
bnRlciwgZnJvbSwgdG8pO1xuXG4gICAgcmV0dXJuIFtsZWF2ZSwgZW50ZXJdO1xuICB9XG59O1xu
XG5tb2R1bGUuZXhwb3J0cyA9IEVudGVyTGVhdmVFdmVudFBsdWdpbjtcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0VudGVy
TGVhdmVFdmVudFBsdWdpbi5qc1xuICoqIG1vZHVsZSBpZCA9IDEzMVxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3Ry
aWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBQ
b29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcblxudmFyIGdldFRleHRDb250
ZW50QWNjZXNzb3IgPSByZXF1aXJlKCcuL2dldFRleHRDb250ZW50QWNjZXNzb3InKTtcblxuLyoq
XG4gKiBUaGlzIGhlbHBlciBjbGFzcyBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgdGV4dCBjb250
ZW50IG9mIGEgdGFyZ2V0IG5vZGUsXG4gKiBhbGxvd2luZyBjb21wYXJpc29uIG9mIGNvbnRlbnQg
YmVmb3JlIGFuZCBhZnRlciBhIGdpdmVuIGV2ZW50LlxuICpcbiAqIElkZW50aWZ5IHRoZSBub2Rl
IHdoZXJlIHNlbGVjdGlvbiBjdXJyZW50bHkgYmVnaW5zLCB0aGVuIG9ic2VydmVcbiAqIGJvdGgg
aXRzIHRleHQgY29udGVudCBhbmQgaXRzIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIERPTS4gU2lu
Y2UgdGhlXG4gKiBicm93c2VyIG1heSBuYXRpdmVseSByZXBsYWNlIHRoZSB0YXJnZXQgbm9kZSBk
dXJpbmcgY29tcG9zaXRpb24sIHdlIGNhblxuICogdXNlIGl0cyBwb3NpdGlvbiB0byBmaW5kIGl0
cyByZXBsYWNlbWVudC5cbiAqXG4gKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSByb290XG4gKi9c
bmZ1bmN0aW9uIEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZShyb290KSB7XG4gIHRoaXMuX3Jvb3Qg
PSByb290O1xuICB0aGlzLl9zdGFydFRleHQgPSB0aGlzLmdldFRleHQoKTtcbiAgdGhpcy5fZmFs
bGJhY2tUZXh0ID0gbnVsbDtcbn1cblxuX2Fzc2lnbihGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUu
cHJvdG90eXBlLCB7XG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLl9yb290
ID0gbnVsbDtcbiAgICB0aGlzLl9zdGFydFRleHQgPSBudWxsO1xuICAgIHRoaXMuX2ZhbGxiYWNr
VGV4dCA9IG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IHRleHQgb2YgaW5w
dXQuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIGdldFRleHQ6IGZ1bmN0
aW9uICgpIHtcbiAgICBpZiAoJ3ZhbHVlJyBpbiB0aGlzLl9yb290KSB7XG4gICAgICByZXR1cm4g
dGhpcy5fcm9vdC52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3Jvb3RbZ2V0VGV4dENv
bnRlbnRBY2Nlc3NvcigpXTtcbiAgfSxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHRoZSBkaWZm
ZXJpbmcgc3Vic3RyaW5nIGJldHdlZW4gdGhlIGluaXRpYWxseSBzdG9yZWRcbiAgICogdGV4dCBj
b250ZW50IGFuZCB0aGUgY3VycmVudCBjb250ZW50LlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJp
bmd9XG4gICAqL1xuICBnZXREYXRhOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuX2ZhbGxi
YWNrVGV4dCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDtcbiAgICB9XG5cbiAg
ICB2YXIgc3RhcnQ7XG4gICAgdmFyIHN0YXJ0VmFsdWUgPSB0aGlzLl9zdGFydFRleHQ7XG4gICAg
dmFyIHN0YXJ0TGVuZ3RoID0gc3RhcnRWYWx1ZS5sZW5ndGg7XG4gICAgdmFyIGVuZDtcbiAgICB2
YXIgZW5kVmFsdWUgPSB0aGlzLmdldFRleHQoKTtcbiAgICB2YXIgZW5kTGVuZ3RoID0gZW5kVmFs
dWUubGVuZ3RoO1xuXG4gICAgZm9yIChzdGFydCA9IDA7IHN0YXJ0IDwgc3RhcnRMZW5ndGg7IHN0
YXJ0KyspIHtcbiAgICAgIGlmIChzdGFydFZhbHVlW3N0YXJ0XSAhPT0gZW5kVmFsdWVbc3RhcnRd
KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBtaW5FbmQgPSBz
dGFydExlbmd0aCAtIHN0YXJ0O1xuICAgIGZvciAoZW5kID0gMTsgZW5kIDw9IG1pbkVuZDsgZW5k
KyspIHtcbiAgICAgIGlmIChzdGFydFZhbHVlW3N0YXJ0TGVuZ3RoIC0gZW5kXSAhPT0gZW5kVmFs
dWVbZW5kTGVuZ3RoIC0gZW5kXSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5c
biAgICB2YXIgc2xpY2VUYWlsID0gZW5kID4gMSA/IDEgLSBlbmQgOiB1bmRlZmluZWQ7XG4gICAg
dGhpcy5fZmFsbGJhY2tUZXh0ID0gZW5kVmFsdWUuc2xpY2Uoc3RhcnQsIHNsaWNlVGFpbCk7XG4g
ICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDtcbiAgfVxufSk7XG5cblBvb2xlZENsYXNzLmFk
ZFBvb2xpbmdUbyhGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUpO1xuXG5tb2R1bGUuZXhwb3J0cyA9
IEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBX
RUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0ZhbGxiYWNrQ29tcG9zaXRpb25T
dGF0ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDEzMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xuXG52YXIgTVVTVF9VU0Vf
UFJPUEVSVFkgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uTVVTVF9VU0VfUFJPUEVSVFk7XG52YXIg
SEFTX0JPT0xFQU5fVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFM
VUU7XG52YXIgSEFTX05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX05V
TUVSSUNfVkFMVUU7XG52YXIgSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0
eS5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU7XG52YXIgSEFTX09WRVJMT0FE
RURfQk9PTEVBTl9WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9C
T09MRUFOX1ZBTFVFO1xuXG52YXIgSFRNTERPTVByb3BlcnR5Q29uZmlnID0ge1xuICBpc0N1c3Rv
bUF0dHJpYnV0ZTogUmVnRXhwLnByb3RvdHlwZS50ZXN0LmJpbmQobmV3IFJlZ0V4cCgnXihkYXRh
fGFyaWEpLVsnICsgRE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQnKSksXG4g
IFByb3BlcnRpZXM6IHtcbiAgICAvKipcbiAgICAgKiBTdGFuZGFyZCBQcm9wZXJ0aWVzXG4gICAg
ICovXG4gICAgYWNjZXB0OiAwLFxuICAgIGFjY2VwdENoYXJzZXQ6IDAsXG4gICAgYWNjZXNzS2V5
OiAwLFxuICAgIGFjdGlvbjogMCxcbiAgICBhbGxvd0Z1bGxTY3JlZW46IEhBU19CT09MRUFOX1ZB
TFVFLFxuICAgIGFsbG93VHJhbnNwYXJlbmN5OiAwLFxuICAgIGFsdDogMCxcbiAgICAvLyBzcGVj
aWZpZXMgdGFyZ2V0IGNvbnRleHQgZm9yIGxpbmtzIHdpdGggYHByZWxvYWRgIHR5cGVcbiAgICBh
czogMCxcbiAgICBhc3luYzogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgYXV0b0NvbXBsZXRlOiAw
LFxuICAgIC8vIGF1dG9Gb2N1cyBpcyBwb2x5ZmlsbGVkL25vcm1hbGl6ZWQgYnkgQXV0b0ZvY3Vz
VXRpbHNcbiAgICAvLyBhdXRvRm9jdXM6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGF1dG9QbGF5
OiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBjYXB0dXJlOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAg
ICBjZWxsUGFkZGluZzogMCxcbiAgICBjZWxsU3BhY2luZzogMCxcbiAgICBjaGFyU2V0OiAwLFxu
ICAgIGNoYWxsZW5nZTogMCxcbiAgICBjaGVja2VkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19C
T09MRUFOX1ZBTFVFLFxuICAgIGNpdGU6IDAsXG4gICAgY2xhc3NJRDogMCxcbiAgICBjbGFzc05h
bWU6IDAsXG4gICAgY29sczogSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG4gICAgY29sU3Bh
bjogMCxcbiAgICBjb250ZW50OiAwLFxuICAgIGNvbnRlbnRFZGl0YWJsZTogMCxcbiAgICBjb250
ZXh0TWVudTogMCxcbiAgICBjb250cm9sczogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgY29vcmRz
OiAwLFxuICAgIGNyb3NzT3JpZ2luOiAwLFxuICAgIGRhdGE6IDAsIC8vIEZvciBgPG9iamVjdCAv
PmAgYWN0cyBhcyBgc3JjYC5cbiAgICBkYXRlVGltZTogMCxcbiAgICAnZGVmYXVsdCc6IEhBU19C
T09MRUFOX1ZBTFVFLFxuICAgIGRlZmVyOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBkaXI6IDAs
XG4gICAgZGlzYWJsZWQ6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGRvd25sb2FkOiBIQVNfT1ZF
UkxPQURFRF9CT09MRUFOX1ZBTFVFLFxuICAgIGRyYWdnYWJsZTogMCxcbiAgICBlbmNUeXBlOiAw
LFxuICAgIGZvcm06IDAsXG4gICAgZm9ybUFjdGlvbjogMCxcbiAgICBmb3JtRW5jVHlwZTogMCxc
biAgICBmb3JtTWV0aG9kOiAwLFxuICAgIGZvcm1Ob1ZhbGlkYXRlOiBIQVNfQk9PTEVBTl9WQUxV
RSxcbiAgICBmb3JtVGFyZ2V0OiAwLFxuICAgIGZyYW1lQm9yZGVyOiAwLFxuICAgIGhlYWRlcnM6
IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIGhpZGRlbjogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAg
aGlnaDogMCxcbiAgICBocmVmOiAwLFxuICAgIGhyZWZMYW5nOiAwLFxuICAgIGh0bWxGb3I6IDAs
XG4gICAgaHR0cEVxdWl2OiAwLFxuICAgIGljb246IDAsXG4gICAgaWQ6IDAsXG4gICAgaW5wdXRN
b2RlOiAwLFxuICAgIGludGVncml0eTogMCxcbiAgICBpczogMCxcbiAgICBrZXlQYXJhbXM6IDAs
XG4gICAga2V5VHlwZTogMCxcbiAgICBraW5kOiAwLFxuICAgIGxhYmVsOiAwLFxuICAgIGxhbmc6
IDAsXG4gICAgbGlzdDogMCxcbiAgICBsb29wOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBsb3c6
IDAsXG4gICAgbWFuaWZlc3Q6IDAsXG4gICAgbWFyZ2luSGVpZ2h0OiAwLFxuICAgIG1hcmdpbldp
ZHRoOiAwLFxuICAgIG1heDogMCxcbiAgICBtYXhMZW5ndGg6IDAsXG4gICAgbWVkaWE6IDAsXG4g
ICAgbWVkaWFHcm91cDogMCxcbiAgICBtZXRob2Q6IDAsXG4gICAgbWluOiAwLFxuICAgIG1pbkxl
bmd0aDogMCxcbiAgICAvLyBDYXV0aW9uOyBgb3B0aW9uLnNlbGVjdGVkYCBpcyBub3QgdXBkYXRl
ZCBpZiBgc2VsZWN0Lm11bHRpcGxlYCBpc1xuICAgIC8vIGRpc2FibGVkIHdpdGggYHJlbW92ZUF0
dHJpYnV0ZWAuXG4gICAgbXVsdGlwbGU6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5f
VkFMVUUsXG4gICAgbXV0ZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUs
XG4gICAgbmFtZTogMCxcbiAgICBub25jZTogMCxcbiAgICBub1ZhbGlkYXRlOiBIQVNfQk9PTEVB
Tl9WQUxVRSxcbiAgICBvcGVuOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBvcHRpbXVtOiAwLFxu
ICAgIHBhdHRlcm46IDAsXG4gICAgcGxhY2Vob2xkZXI6IDAsXG4gICAgcGxheXNJbmxpbmU6IEhB
U19CT09MRUFOX1ZBTFVFLFxuICAgIHBvc3RlcjogMCxcbiAgICBwcmVsb2FkOiAwLFxuICAgIHBy
b2ZpbGU6IDAsXG4gICAgcmFkaW9Hcm91cDogMCxcbiAgICByZWFkT25seTogSEFTX0JPT0xFQU5f
VkFMVUUsXG4gICAgcmVmZXJyZXJQb2xpY3k6IDAsXG4gICAgcmVsOiAwLFxuICAgIHJlcXVpcmVk
OiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICByZXZlcnNlZDogSEFTX0JPT0xFQU5fVkFMVUUsXG4g
ICAgcm9sZTogMCxcbiAgICByb3dzOiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICBy
b3dTcGFuOiBIQVNfTlVNRVJJQ19WQUxVRSxcbiAgICBzYW5kYm94OiAwLFxuICAgIHNjb3BlOiAw
LFxuICAgIHNjb3BlZDogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgc2Nyb2xsaW5nOiAwLFxuICAg
IHNlYW1sZXNzOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBzZWxlY3RlZDogTVVTVF9VU0VfUFJP
UEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBzaGFwZTogMCxcbiAgICBzaXplOiBIQVNf
UE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICBzaXplczogMCxcbiAgICBzcGFuOiBIQVNfUE9T
SVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICBzcGVsbENoZWNrOiAwLFxuICAgIHNyYzogMCxcbiAg
ICBzcmNEb2M6IDAsXG4gICAgc3JjTGFuZzogMCxcbiAgICBzcmNTZXQ6IDAsXG4gICAgc3RhcnQ6
IEhBU19OVU1FUklDX1ZBTFVFLFxuICAgIHN0ZXA6IDAsXG4gICAgc3R5bGU6IDAsXG4gICAgc3Vt
bWFyeTogMCxcbiAgICB0YWJJbmRleDogMCxcbiAgICB0YXJnZXQ6IDAsXG4gICAgdGl0bGU6IDAs
XG4gICAgLy8gU2V0dGluZyAudHlwZSB0aHJvd3Mgb24gbm9uLTxpbnB1dD4gdGFnc1xuICAgIHR5
cGU6IDAsXG4gICAgdXNlTWFwOiAwLFxuICAgIHZhbHVlOiAwLFxuICAgIHdpZHRoOiAwLFxuICAg
IHdtb2RlOiAwLFxuICAgIHdyYXA6IDAsXG5cbiAgICAvKipcbiAgICAgKiBSREZhIFByb3BlcnRp
ZXNcbiAgICAgKi9cbiAgICBhYm91dDogMCxcbiAgICBkYXRhdHlwZTogMCxcbiAgICBpbmxpc3Q6
IDAsXG4gICAgcHJlZml4OiAwLFxuICAgIC8vIHByb3BlcnR5IGlzIGFsc28gc3VwcG9ydGVkIGZv
ciBPcGVuR3JhcGggaW4gbWV0YSB0YWdzLlxuICAgIHByb3BlcnR5OiAwLFxuICAgIHJlc291cmNl
OiAwLFxuICAgICd0eXBlb2YnOiAwLFxuICAgIHZvY2FiOiAwLFxuXG4gICAgLyoqXG4gICAgICog
Tm9uLXN0YW5kYXJkIFByb3BlcnRpZXNcbiAgICAgKi9cbiAgICAvLyBhdXRvQ2FwaXRhbGl6ZSBh
bmQgYXV0b0NvcnJlY3QgYXJlIHN1cHBvcnRlZCBpbiBNb2JpbGUgU2FmYXJpIGZvclxuICAgIC8v
IGtleWJvYXJkIGhpbnRzLlxuICAgIGF1dG9DYXBpdGFsaXplOiAwLFxuICAgIGF1dG9Db3JyZWN0
OiAwLFxuICAgIC8vIGF1dG9TYXZlIGFsbG93cyBXZWJLaXQvQmxpbmsgdG8gcGVyc2lzdCB2YWx1
ZXMgb2YgaW5wdXQgZmllbGRzIG9uIHBhZ2UgcmVsb2Fkc1xuICAgIGF1dG9TYXZlOiAwLFxuICAg
IC8vIGNvbG9yIGlzIGZvciBTYWZhcmkgbWFzay1pY29uIGxpbmtcbiAgICBjb2xvcjogMCxcbiAg
ICAvLyBpdGVtUHJvcCwgaXRlbVNjb3BlLCBpdGVtVHlwZSBhcmUgZm9yXG4gICAgLy8gTWljcm9k
YXRhIHN1cHBvcnQuIFNlZSBodHRwOi8vc2NoZW1hLm9yZy9kb2NzL2dzLmh0bWxcbiAgICBpdGVt
UHJvcDogMCxcbiAgICBpdGVtU2NvcGU6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGl0ZW1UeXBl
OiAwLFxuICAgIC8vIGl0ZW1JRCBhbmQgaXRlbVJlZiBhcmUgZm9yIE1pY3JvZGF0YSBzdXBwb3J0
IGFzIHdlbGwgYnV0XG4gICAgLy8gb25seSBzcGVjaWZpZWQgaW4gdGhlIFdIQVRXRyBzcGVjIGRv
Y3VtZW50LiBTZWVcbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9taWNyb2RhdGEuaHRtbCNtaWNyb2RhdGEtZG9tLWFwaVxuICAgIGl0ZW1JRDogMCxcbiAgICBp
dGVtUmVmOiAwLFxuICAgIC8vIHJlc3VsdHMgc2hvdyBsb29raW5nIGdsYXNzIGljb24gYW5kIHJl
Y2VudCBzZWFyY2hlcyBvbiBpbnB1dFxuICAgIC8vIHNlYXJjaCBmaWVsZHMgaW4gV2ViS2l0L0Js
aW5rXG4gICAgcmVzdWx0czogMCxcbiAgICAvLyBJRS1vbmx5IGF0dHJpYnV0ZSB0aGF0IHNwZWNp
ZmllcyBzZWN1cml0eSByZXN0cmljdGlvbnMgb24gYW4gaWZyYW1lXG4gICAgLy8gYXMgYW4gYWx0
ZXJuYXRpdmUgdG8gdGhlIHNhbmRib3ggYXR0cmlidXRlIG9uIElFPDEwXG4gICAgc2VjdXJpdHk6
IDAsXG4gICAgLy8gSUUtb25seSBhdHRyaWJ1dGUgdGhhdCBjb250cm9scyBmb2N1cyBiZWhhdmlv
clxuICAgIHVuc2VsZWN0YWJsZTogMFxuICB9LFxuICBET01BdHRyaWJ1dGVOYW1lczoge1xuICAg
IGFjY2VwdENoYXJzZXQ6ICdhY2NlcHQtY2hhcnNldCcsXG4gICAgY2xhc3NOYW1lOiAnY2xhc3Mn
LFxuICAgIGh0bWxGb3I6ICdmb3InLFxuICAgIGh0dHBFcXVpdjogJ2h0dHAtZXF1aXYnXG4gIH0s
XG4gIERPTVByb3BlcnR5TmFtZXM6IHt9LFxuICBET01NdXRhdGlvbk1ldGhvZHM6IHtcbiAgICB2
YWx1ZTogZnVuY3Rpb24gKG5vZGUsIHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkg
e1xuICAgICAgICByZXR1cm4gbm9kZS5yZW1vdmVBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG4gICAgICB9
XG5cbiAgICAgIC8vIE51bWJlciBpbnB1dHMgZ2V0IHNwZWNpYWwgdHJlYXRtZW50IGR1ZSB0byBz
b21lIGVkZ2UgY2FzZXMgaW5cbiAgICAgIC8vIENocm9tZS4gTGV0IGV2ZXJ5dGhpbmcgZWxzZSBh
c3NpZ24gdGhlIHZhbHVlIGF0dHJpYnV0ZSBhcyBub3JtYWwuXG4gICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyNTMjaXNzdWVjb21tZW50LTIzNjA3NDMy
NlxuICAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ251bWJlcicgfHwgbm9kZS5oYXNBdHRyaWJ1dGUo
J3ZhbHVlJykgPT09IGZhbHNlKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScs
ICcnICsgdmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChub2RlLnZhbGlkaXR5ICYmICFub2RlLnZh
bGlkaXR5LmJhZElucHV0ICYmIG5vZGUub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBu
b2RlKSB7XG4gICAgICAgIC8vIERvbid0IGFzc2lnbiBhbiBhdHRyaWJ1dGUgaWYgdmFsaWRhdGlv
biByZXBvcnRzIGJhZFxuICAgICAgICAvLyBpbnB1dC4gQ2hyb21lIHdpbGwgY2xlYXIgdGhlIHZh
bHVlLiBBZGRpdGlvbmFsbHksIGRvbid0XG4gICAgICAgIC8vIG9wZXJhdGUgb24gaW5wdXRzIHRo
YXQgaGF2ZSBmb2N1cywgb3RoZXJ3aXNlIENocm9tZSBtaWdodFxuICAgICAgICAvLyBzdHJpcCBv
ZmYgdHJhaWxpbmcgZGVjaW1hbCBwbGFjZXMgYW5kIGNhdXNlIHRoZSB1c2VyJ3NcbiAgICAgICAg
Ly8gY3Vyc29yIHBvc2l0aW9uIHRvIGp1bXAgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5wdXQu
XG4gICAgICAgIC8vXG4gICAgICAgIC8vIEluIFJlYWN0RE9NSW5wdXQsIHdlIGhhdmUgYW4gb25C
bHVyIGV2ZW50IHRoYXQgd2lsbCB0cmlnZ2VyXG4gICAgICAgIC8vIHRoaXMgZnVuY3Rpb24gYWdh
aW4gd2hlbiBmb2N1cyBpcyBsb3N0LlxuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUn
LCAnJyArIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRz
ID0gSFRNTERPTVByb3BlcnR5Q29uZmlnO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvSFRNTERPTVByb3BlcnR5Q29uZmln
LmpzXG4gKiogbW9kdWxlIGlkID0gMTMzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIv
KipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVh
Y3RSZWNvbmNpbGVyID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTtcblxudmFyIGluc3Rh
bnRpYXRlUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL2luc3RhbnRpYXRlUmVhY3RDb21wb25l
bnQnKTtcbnZhciBLZXlFc2NhcGVVdGlscyA9IHJlcXVpcmUoJy4vS2V5RXNjYXBlVXRpbHMnKTtc
bnZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vc2hvdWxkVXBkYXRl
UmVhY3RDb21wb25lbnQnKTtcbnZhciB0cmF2ZXJzZUFsbENoaWxkcmVuID0gcmVxdWlyZSgnLi90
cmF2ZXJzZUFsbENoaWxkcmVuJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dh
cm5pbmcnKTtcblxudmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7XG5cbmlmICh0eXBlb2YgcHJv
Y2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnYgJiYgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgPT09ICd0ZXN0Jykge1xuICAvLyBUZW1wb3JhcnkgaGFjay5cbiAgLy8gSW5saW5lIHJlcXVp
cmVzIGRvbid0IHdvcmsgd2VsbCB3aXRoIEplc3Q6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9m
YWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0MFxuICAvLyBSZW1vdmUgdGhlIGlubGluZSByZXF1aXJl
cyB3aGVuIHdlIGRvbid0IG5lZWQgdGhlbSBhbnltb3JlOlxuICAvLyBodHRwczovL2dpdGh1Yi5j
b20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTc4XG4gIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBy
ZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDb21wb25lbnRUcmVlSG9vaycpO1xufVxuXG5mdW5jdGlv
biBpbnN0YW50aWF0ZUNoaWxkKGNoaWxkSW5zdGFuY2VzLCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVn
SUQpIHtcbiAgLy8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5zdGFuY2UuXG4gIHZhciBrZXlVbmlx
dWUgPSBjaGlsZEluc3RhbmNlc1tuYW1lXSA9PT0gdW5kZWZpbmVkO1xuICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmICghUmVhY3RDb21wb25lbnRU
cmVlSG9vaykge1xuICAgICAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0
L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rJyk7XG4gICAgfVxuICAgIGlmICgha2V5VW5pcXVl
KSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhmYWxzZSwgJ2ZsYXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4g
d2l0aCB0aGUgc2FtZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsg
d2hlbiB0d28gY2hpbGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQg
d2lsbCBiZSB1c2VkLiVzJywgS2V5RXNjYXBlVXRpbHMudW5lc2NhcGUobmFtZSksIFJlYWN0Q29t
cG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6IHZvaWQg
MDtcbiAgICB9XG4gIH1cbiAgaWYgKGNoaWxkICE9IG51bGwgJiYga2V5VW5pcXVlKSB7XG4gICAg
Y2hpbGRJbnN0YW5jZXNbbmFtZV0gPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KGNoaWxkLCB0
cnVlKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlYWN0Q2hpbGRSZWNvbmNpbGVyIHByb3ZpZGVzIGhl
bHBlcnMgZm9yIGluaXRpYWxpemluZyBvciB1cGRhdGluZyBhIHNldCBvZlxuICogY2hpbGRyZW4u
IEl0cyBvdXRwdXQgaXMgc3VpdGFibGUgZm9yIHBhc3NpbmcgaXQgb250byBSZWFjdE11bHRpQ2hp
bGQgd2hpY2hcbiAqIGRvZXMgZGlmZmVkIHJlb3JkZXJpbmcgYW5kIGluc2VydGlvbi5cbiAqL1xu
dmFyIFJlYWN0Q2hpbGRSZWNvbmNpbGVyID0ge1xuICAvKipcbiAgICogR2VuZXJhdGVzIGEgXCJt
b3VudCBpbWFnZVwiIGZvciBlYWNoIG9mIHRoZSBzdXBwbGllZCBjaGlsZHJlbi4gSW4gdGhlIGNh
c2VcbiAgICogb2YgYFJlYWN0RE9NQ29tcG9uZW50YCwgYSBtb3VudCBpbWFnZSBpcyBhIHN0cmlu
ZyBvZiBtYXJrdXAuXG4gICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmVzdGVkQ2hpbGROb2Rl
cyBOZXN0ZWQgY2hpbGQgbWFwcy5cbiAgICogQHJldHVybiB7P29iamVjdH0gQSBzZXQgb2YgY2hp
bGQgaW5zdGFuY2VzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGluc3RhbnRpYXRlQ2hpbGRy
ZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZE5vZGVzLCB0cmFuc2FjdGlvbiwgY29udGV4dCwgc2Vs
ZkRlYnVnSUQpIC8vIDAgaW4gcHJvZHVjdGlvbiBhbmQgZm9yIHJvb3RzXG4gIHtcbiAgICBpZiAo
bmVzdGVkQ2hpbGROb2RlcyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4g
ICAgdmFyIGNoaWxkSW5zdGFuY2VzID0ge307XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihuZXN0ZWRD
aGlsZE5vZGVzLCBmdW5jdGlvbiAoY2hpbGRJbnN0cywgY2hpbGQsIG5hbWUpIHtcbiAgICAgICAg
cmV0dXJuIGluc3RhbnRpYXRlQ2hpbGQoY2hpbGRJbnN0cywgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1
Z0lEKTtcbiAgICAgIH0sIGNoaWxkSW5zdGFuY2VzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJh
dmVyc2VBbGxDaGlsZHJlbihuZXN0ZWRDaGlsZE5vZGVzLCBpbnN0YW50aWF0ZUNoaWxkLCBjaGls
ZEluc3RhbmNlcyk7XG4gICAgfVxuICAgIHJldHVybiBjaGlsZEluc3RhbmNlcztcbiAgfSxcblxu
ICAvKipcbiAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hpbGRyZW4gYW5kIHJldHVybnMgYSBu
ZXcgc2V0IG9mIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZDaGls
ZHJlbiBQcmV2aW91c2x5IGluaXRpYWxpemVkIHNldCBvZiBjaGlsZHJlbi5cbiAgICogQHBhcmFt
IHs/b2JqZWN0fSBuZXh0Q2hpbGRyZW4gRmxhdCBjaGlsZCBlbGVtZW50IG1hcHMuXG4gICAqIEBw
YXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFt
IHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7P29iamVjdH0gQSBuZXcgc2V0IG9mIGNo
aWxkIGluc3RhbmNlcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB1cGRhdGVDaGlsZHJlbjog
ZnVuY3Rpb24gKHByZXZDaGlsZHJlbiwgbmV4dENoaWxkcmVuLCBtb3VudEltYWdlcywgcmVtb3Zl
ZE5vZGVzLCB0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRl
eHQsIHNlbGZEZWJ1Z0lEKSAvLyAwIGluIHByb2R1Y3Rpb24gYW5kIGZvciByb290c1xuICB7XG4g
ICAgLy8gV2UgY3VycmVudGx5IGRvbid0IGhhdmUgYSB3YXkgdG8gdHJhY2sgbW92ZXMgaGVyZSBi
dXQgaWYgd2UgdXNlIGl0ZXJhdG9yc1xuICAgIC8vIGluc3RlYWQgb2YgZm9yLi5pbiB3ZSBjYW4g
emlwIHRoZSBpdGVyYXRvcnMgYW5kIGNoZWNrIGlmIGFuIGl0ZW0gaGFzXG4gICAgLy8gbW92ZWQu
XG4gICAgLy8gVE9ETzogSWYgbm90aGluZyBoYXMgY2hhbmdlZCwgcmV0dXJuIHRoZSBwcmV2Q2hp
bGRyZW4gb2JqZWN0IHNvIHRoYXQgd2VcbiAgICAvLyBjYW4gcXVpY2tseSBiYWlsb3V0IGlmIG5v
dGhpbmcgaGFzIGNoYW5nZWQuXG4gICAgaWYgKCFuZXh0Q2hpbGRyZW4gJiYgIXByZXZDaGlsZHJl
bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgbmFtZTtcbiAgICB2YXIgcHJldkNo
aWxkO1xuICAgIGZvciAobmFtZSBpbiBuZXh0Q2hpbGRyZW4pIHtcbiAgICAgIGlmICghbmV4dENo
aWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAg
fVxuICAgICAgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuICYmIHByZXZDaGlsZHJlbltuYW1lXTtc
biAgICAgIHZhciBwcmV2RWxlbWVudCA9IHByZXZDaGlsZCAmJiBwcmV2Q2hpbGQuX2N1cnJlbnRF
bGVtZW50O1xuICAgICAgdmFyIG5leHRFbGVtZW50ID0gbmV4dENoaWxkcmVuW25hbWVdO1xuICAg
ICAgaWYgKHByZXZDaGlsZCAhPSBudWxsICYmIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHBy
ZXZFbGVtZW50LCBuZXh0RWxlbWVudCkpIHtcbiAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2Vp
dmVDb21wb25lbnQocHJldkNoaWxkLCBuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQp
O1xuICAgICAgICBuZXh0Q2hpbGRyZW5bbmFtZV0gPSBwcmV2Q2hpbGQ7XG4gICAgICB9IGVsc2Ug
e1xuICAgICAgICBpZiAocHJldkNoaWxkKSB7XG4gICAgICAgICAgcmVtb3ZlZE5vZGVzW25hbWVd
ID0gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHByZXZDaGlsZCk7XG4gICAgICAgICAgUmVh
Y3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocHJldkNoaWxkLCBmYWxzZSk7XG4gICAgICAg
IH1cbiAgICAgICAgLy8gVGhlIGNoaWxkIG11c3QgYmUgaW5zdGFudGlhdGVkIGJlZm9yZSBpdCdz
IG1vdW50ZWQuXG4gICAgICAgIHZhciBuZXh0Q2hpbGRJbnN0YW5jZSA9IGluc3RhbnRpYXRlUmVh
Y3RDb21wb25lbnQobmV4dEVsZW1lbnQsIHRydWUpO1xuICAgICAgICBuZXh0Q2hpbGRyZW5bbmFt
ZV0gPSBuZXh0Q2hpbGRJbnN0YW5jZTtcbiAgICAgICAgLy8gQ3JlYXRpbmcgbW91bnQgaW1hZ2Ug
bm93IGVuc3VyZXMgcmVmcyBhcmUgcmVzb2x2ZWQgaW4gcmlnaHQgb3JkZXJcbiAgICAgICAgLy8g
KHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTAxIGZvciBleHBs
YW5hdGlvbikuXG4gICAgICAgIHZhciBuZXh0Q2hpbGRNb3VudEltYWdlID0gUmVhY3RSZWNvbmNp
bGVyLm1vdW50Q29tcG9uZW50KG5leHRDaGlsZEluc3RhbmNlLCB0cmFuc2FjdGlvbiwgaG9zdFBh
cmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKTtcbiAgICAgICAg
bW91bnRJbWFnZXMucHVzaChuZXh0Q2hpbGRNb3VudEltYWdlKTtcbiAgICAgIH1cbiAgICB9XG4g
ICAgLy8gVW5tb3VudCBjaGlsZHJlbiB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2VudC5cbiAgICBm
b3IgKG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7XG4gICAgICBpZiAocHJldkNoaWxkcmVuLmhhc093
blByb3BlcnR5KG5hbWUpICYmICEobmV4dENoaWxkcmVuICYmIG5leHRDaGlsZHJlbi5oYXNPd25Q
cm9wZXJ0eShuYW1lKSkpIHtcbiAgICAgICAgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuW25hbWVd
O1xuICAgICAgICByZW1vdmVkTm9kZXNbbmFtZV0gPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5v
ZGUocHJldkNoaWxkKTtcbiAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQo
cHJldkNoaWxkLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBV
bm1vdW50cyBhbGwgcmVuZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hvdWxkIGJlIHVzZWQgdG8gY2xl
YW4gdXAgY2hpbGRyZW5cbiAgICogd2hlbiB0aGlzIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQuXG4g
ICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gcmVuZGVyZWRDaGlsZHJlbiBQcmV2aW91c2x5IGlu
aXRpYWxpemVkIHNldCBvZiBjaGlsZHJlbi5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB1bm1v
dW50Q2hpbGRyZW46IGZ1bmN0aW9uIChyZW5kZXJlZENoaWxkcmVuLCBzYWZlbHkpIHtcbiAgICBm
b3IgKHZhciBuYW1lIGluIHJlbmRlcmVkQ2hpbGRyZW4pIHtcbiAgICAgIGlmIChyZW5kZXJlZENo
aWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIHZhciByZW5kZXJlZENoaWxk
ID0gcmVuZGVyZWRDaGlsZHJlbltuYW1lXTtcbiAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91
bnRDb21wb25lbnQocmVuZGVyZWRDaGlsZCwgc2FmZWx5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1c
bn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDaGlsZFJlY29uY2lsZXI7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9S
ZWFjdENoaWxkUmVjb25jaWxlci5qc1xuICoqIG1vZHVsZSBpZCA9IDEzNFxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxudmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NQ2hp
bGRyZW5PcGVyYXRpb25zJyk7XG52YXIgUmVhY3RET01JRE9wZXJhdGlvbnMgPSByZXF1aXJlKCcu
L1JlYWN0RE9NSURPcGVyYXRpb25zJyk7XG5cbi8qKlxuICogQWJzdHJhY3RzIGF3YXkgYWxsIGZ1
bmN0aW9uYWxpdHkgb2YgdGhlIHJlY29uY2lsZXIgdGhhdCByZXF1aXJlcyBrbm93bGVkZ2Ugb2Zc
biAqIHRoZSBicm93c2VyIGNvbnRleHQuIFRPRE86IFRoZXNlIGNhbGxlcnMgc2hvdWxkIGJlIHJl
ZmFjdG9yZWQgdG8gYXZvaWQgdGhlXG4gKiBuZWVkIGZvciB0aGlzIGluamVjdGlvbi5cbiAqL1xu
dmFyIFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50ID0ge1xuICBwcm9jZXNzQ2hpbGRy
ZW5VcGRhdGVzOiBSZWFjdERPTUlET3BlcmF0aW9ucy5kYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJl
blVwZGF0ZXMsXG5cbiAgcmVwbGFjZU5vZGVXaXRoTWFya3VwOiBET01DaGlsZHJlbk9wZXJhdGlv
bnMuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXBcbn07XG5cbm1vZHVsZS5leHBvcnRz
ID0gUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQ7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdENvbXBv
bmVudEJyb3dzZXJFbnZpcm9ubWVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDEzNVxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1
c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJ
bnZhcmlhbnQnKSxcbiAgICBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52
YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3QnKTtcbnZhciBSZWFjdENvbXBvbmVu
dEVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudEVudmlyb25tZW50Jyk7XG52
YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDdXJyZW50T3du
ZXInKTtcbnZhciBSZWFjdEVycm9yVXRpbHMgPSByZXF1aXJlKCcuL1JlYWN0RXJyb3JVdGlscycp
O1xudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VNYXAnKTtc
bnZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVtZW50YXRp
b24nKTtcbnZhciBSZWFjdE5vZGVUeXBlcyA9IHJlcXVpcmUoJy4vUmVhY3ROb2RlVHlwZXMnKTtc
bnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xuXG5p
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgY2hlY2tS
ZWFjdFR5cGVTcGVjID0gcmVxdWlyZSgnLi9jaGVja1JlYWN0VHlwZVNwZWMnKTtcbn1cblxudmFy
IGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlPYmplY3QnKTtcbnZhciBpbnZh
cmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBzaGFsbG93RXF1YWwg
PSByZXF1aXJlKCdmYmpzL2xpYi9zaGFsbG93RXF1YWwnKTtcbnZhciBzaG91bGRVcGRhdGVSZWFj
dENvbXBvbmVudCA9IHJlcXVpcmUoJy4vc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQnKTtcbnZh
ciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgQ29tcG9zaXRl
VHlwZXMgPSB7XG4gIEltcHVyZUNsYXNzOiAwLFxuICBQdXJlQ2xhc3M6IDEsXG4gIFN0YXRlbGVz
c0Z1bmN0aW9uYWw6IDJcbn07XG5cbmZ1bmN0aW9uIFN0YXRlbGVzc0NvbXBvbmVudChDb21wb25l
bnQpIHt9XG5TdGF0ZWxlc3NDb21wb25lbnQucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgp
IHtcbiAgdmFyIENvbXBvbmVudCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHRoaXMpLl9jdXJyZW50
RWxlbWVudC50eXBlO1xuICB2YXIgZWxlbWVudCA9IENvbXBvbmVudCh0aGlzLnByb3BzLCB0aGlz
LmNvbnRleHQsIHRoaXMudXBkYXRlcik7XG4gIHdhcm5JZkludmFsaWRFbGVtZW50KENvbXBvbmVu
dCwgZWxlbWVudCk7XG4gIHJldHVybiBlbGVtZW50O1xufTtcblxuZnVuY3Rpb24gd2FybklmSW52
YWxpZEVsZW1lbnQoQ29tcG9uZW50LCBlbGVtZW50KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoZWxlbWVudCA9PT0gbnVsbCB8fCBlbGVtZW50ID09PSBmYWxz
ZSB8fCBSZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSwgJyVzKC4uLik6IEEgdmFsaWQgUmVh
Y3QgZWxlbWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91IG1heSBoYXZlICcgKyAn
cmV0dXJuZWQgdW5kZWZpbmVkLCBhbiBhcnJheSBvciBzb21lIG90aGVyIGludmFsaWQgb2JqZWN0
LicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50
JykgOiB2b2lkIDA7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoIUNvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcywgJyVzKC4uLik6IGNoaWxkQ29u
dGV4dFR5cGVzIGNhbm5vdCBiZSBkZWZpbmVkIG9uIGEgZnVuY3Rpb25hbCBjb21wb25lbnQuJywg
Q29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnKSA6
IHZvaWQgMDtcbiAgfVxufVxuXG5mdW5jdGlvbiBzaG91bGRDb25zdHJ1Y3QoQ29tcG9uZW50KSB7
XG4gIHJldHVybiAhIShDb21wb25lbnQucHJvdG90eXBlICYmIENvbXBvbmVudC5wcm90b3R5cGUu
aXNSZWFjdENvbXBvbmVudCk7XG59XG5cbmZ1bmN0aW9uIGlzUHVyZUNvbXBvbmVudChDb21wb25l
bnQpIHtcbiAgcmV0dXJuICEhKENvbXBvbmVudC5wcm90b3R5cGUgJiYgQ29tcG9uZW50LnByb3Rv
dHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCk7XG59XG5cbi8vIFNlcGFyYXRlZCBpbnRvIGEgZnVu
Y3Rpb24gdG8gY29udGFpbiBkZW9wdGltaXphdGlvbnMgY2F1c2VkIGJ5IHRyeS9maW5hbGx5Llxu
ZnVuY3Rpb24gbWVhc3VyZUxpZmVDeWNsZVBlcmYoZm4sIGRlYnVnSUQsIHRpbWVyVHlwZSkge1xu
ICBpZiAoZGVidWdJRCA9PT0gMCkge1xuICAgIC8vIFRvcC1sZXZlbCB3cmFwcGVycyAoc2VlIFJl
YWN0TW91bnQpIGFuZCBlbXB0eSBjb21wb25lbnRzIChzZWVcbiAgICAvLyBSZWFjdERPTUVtcHR5
Q29tcG9uZW50KSBhcmUgaW52aXNpYmxlIHRvIGhvb2tzIGFuZCBkZXZ0b29scy5cbiAgICAvLyBC
b3RoIGFyZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRoYXQgc2hvdWxkIGdvIGF3YXkgaW4gdGhl
IGZ1dHVyZS5cbiAgICByZXR1cm4gZm4oKTtcbiAgfVxuXG4gIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vbkJlZ2luTGlmZUN5Y2xlVGltZXIoZGVidWdJRCwgdGltZXJUeXBlKTtcbiAg
dHJ5IHtcbiAgICByZXR1cm4gZm4oKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBSZWFjdEluc3RydW1l
bnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRMaWZlQ3ljbGVUaW1lcihkZWJ1Z0lELCB0aW1lclR5cGUp
O1xuICB9XG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tIFRoZSBMaWZlLUN5Y2xlIG9m
IGEgQ29tcG9zaXRlIENvbXBvbmVudCAtLS0tLS0tLS0tLS0tLS0tLS1cbiAqXG4gKiAtIGNvbnN0
cnVjdG9yOiBJbml0aWFsaXphdGlvbiBvZiBzdGF0ZS4gVGhlIGluc3RhbmNlIGlzIG5vdyByZXRh
aW5lZC5cbiAqICAgLSBjb21wb25lbnRXaWxsTW91bnRcbiAqICAgLSByZW5kZXJcbiAqICAgLSBb
Y2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnNdXG4gKiAgICAgLSBbY2hpbGRyZW4ncyBjb21wb25lbnRX
aWxsTW91bnQgYW5kIHJlbmRlcl1cbiAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudERpZE1v
dW50XVxuICogICAgIC0gY29tcG9uZW50RGlkTW91bnRcbiAqXG4gKiAgICAgICBVcGRhdGUgUGhh
c2VzOlxuICogICAgICAgLSBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIChvbmx5IGNhbGxlZCBp
ZiBwYXJlbnQgdXBkYXRlZClcbiAqICAgICAgIC0gc2hvdWxkQ29tcG9uZW50VXBkYXRlXG4gKiAg
ICAgICAgIC0gY29tcG9uZW50V2lsbFVwZGF0ZVxuICogICAgICAgICAgIC0gcmVuZGVyXG4gKiAg
ICAgICAgICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnMgb3IgcmVjZWl2ZSBwcm9wcyBwaGFz
ZXNdXG4gKiAgICAgICAgIC0gY29tcG9uZW50RGlkVXBkYXRlXG4gKlxuICogICAgIC0gY29tcG9u
ZW50V2lsbFVubW91bnRcbiAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudFdpbGxVbm1vdW50
XVxuICogICAtIFtjaGlsZHJlbiBkZXN0cm95ZWRdXG4gKiAtIChkZXN0cm95ZWQpOiBUaGUgaW5z
dGFuY2UgaXMgbm93IGJsYW5rLCByZWxlYXNlZCBieSBSZWFjdCBhbmQgcmVhZHkgZm9yIEdDLlxu
ICpcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLyoqXG4gKiBBbiBpbmNyZW1lbnRp
bmcgSUQgYXNzaWduZWQgdG8gZWFjaCBjb21wb25lbnQgd2hlbiBpdCBpcyBtb3VudGVkLiBUaGlz
IGlzXG4gKiB1c2VkIHRvIGVuZm9yY2UgdGhlIG9yZGVyIGluIHdoaWNoIGBSZWFjdFVwZGF0ZXNg
IHVwZGF0ZXMgZGlydHkgY29tcG9uZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgbmV4
dE1vdW50SUQgPSAxO1xuXG4vKipcbiAqIEBsZW5kcyB7UmVhY3RDb21wb3NpdGVDb21wb25lbnQu
cHJvdG90eXBlfVxuICovXG52YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgPSB7XG4gIC8qKlxu
ICAgKiBCYXNlIGNvbnN0cnVjdG9yIGZvciBhbGwgY29tcG9zaXRlIGNvbXBvbmVudC5cbiAgICpc
biAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnRcbiAgICogQGZpbmFsXG4gICAqIEBp
bnRlcm5hbFxuICAgKi9cbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHRo
aXMuX2N1cnJlbnRFbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gMDtc
biAgICB0aGlzLl9jb21wb3NpdGVUeXBlID0gbnVsbDtcbiAgICB0aGlzLl9pbnN0YW5jZSA9IG51
bGw7XG4gICAgdGhpcy5faG9zdFBhcmVudCA9IG51bGw7XG4gICAgdGhpcy5faG9zdENvbnRhaW5l
ckluZm8gPSBudWxsO1xuXG4gICAgLy8gU2VlIFJlYWN0VXBkYXRlUXVldWVcbiAgICB0aGlzLl91
cGRhdGVCYXRjaE51bWJlciA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQgPSBudWxs
O1xuICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5n
UmVwbGFjZVN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFs
c2U7XG5cbiAgICB0aGlzLl9yZW5kZXJlZE5vZGVUeXBlID0gbnVsbDtcbiAgICB0aGlzLl9yZW5k
ZXJlZENvbXBvbmVudCA9IG51bGw7XG4gICAgdGhpcy5fY29udGV4dCA9IG51bGw7XG4gICAgdGhp
cy5fbW91bnRPcmRlciA9IDA7XG4gICAgdGhpcy5fdG9wTGV2ZWxXcmFwcGVyID0gbnVsbDtcblxu
ICAgIC8vIFNlZSBSZWFjdFVwZGF0ZXMgYW5kIFJlYWN0VXBkYXRlUXVldWUuXG4gICAgdGhpcy5f
cGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG5cbiAgICAvLyBDb21wb25lbnRXaWxsVW5tb3VudCBz
aGFsbCBvbmx5IGJlIGNhbGxlZCBvbmNlXG4gICAgdGhpcy5fY2FsbGVkQ29tcG9uZW50V2lsbFVu
bW91bnQgPSBmYWxzZTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICB0aGlzLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IGZhbHNlO1xu
ICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGNvbXBvbmVudCwgcmVu
ZGVycyBtYXJrdXAsIGFuZCByZWdpc3RlcnMgZXZlbnQgbGlzdGVuZXJzLlxuICAgKlxuICAgKiBA
cGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFu
c2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBob3N0UGFyZW50XG4g
ICAqIEBwYXJhbSB7P29iamVjdH0gaG9zdENvbnRhaW5lckluZm9cbiAgICogQHBhcmFtIHs/b2Jq
ZWN0fSBjb250ZXh0XG4gICAqIEByZXR1cm4gez9zdHJpbmd9IFJlbmRlcmVkIG1hcmt1cCB0byBi
ZSBpbnNlcnRlZCBpbnRvIHRoZSBET00uXG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAg
ICovXG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQs
IGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxu
ICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuX21vdW50T3JkZXIgPSBuZXh0
TW91bnRJRCsrO1xuICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50O1xuICAgIHRoaXMu
X2hvc3RDb250YWluZXJJbmZvID0gaG9zdENvbnRhaW5lckluZm87XG5cbiAgICB2YXIgcHVibGlj
UHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgICB2YXIgcHVibGljQ29udGV4
dCA9IHRoaXMuX3Byb2Nlc3NDb250ZXh0KGNvbnRleHQpO1xuXG4gICAgdmFyIENvbXBvbmVudCA9
IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cbiAgICB2YXIgdXBkYXRlUXVldWUgPSB0cmFu
c2FjdGlvbi5nZXRVcGRhdGVRdWV1ZSgpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgcHVibGlj
IGNsYXNzXG4gICAgdmFyIGRvQ29uc3RydWN0ID0gc2hvdWxkQ29uc3RydWN0KENvbXBvbmVudCk7
XG4gICAgdmFyIGluc3QgPSB0aGlzLl9jb25zdHJ1Y3RDb21wb25lbnQoZG9Db25zdHJ1Y3QsIHB1
YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG4gICAgdmFyIHJlbmRlcmVk
RWxlbWVudDtcblxuICAgIC8vIFN1cHBvcnQgZnVuY3Rpb25hbCBjb21wb25lbnRzXG4gICAgaWYg
KCFkb0NvbnN0cnVjdCAmJiAoaW5zdCA9PSBudWxsIHx8IGluc3QucmVuZGVyID09IG51bGwpKSB7
XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSBpbnN0O1xuICAgICAgd2FybklmSW52YWxpZEVsZW1l
bnQoQ29tcG9uZW50LCByZW5kZXJlZEVsZW1lbnQpO1xuICAgICAgIShpbnN0ID09PSBudWxsIHx8
IGluc3QgPT09IGZhbHNlIHx8IFJlYWN0LmlzVmFsaWRFbGVtZW50KGluc3QpKSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcyguLi4p
OiBBIHZhbGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuIFlvdSBt
YXkgaGF2ZSByZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3RoZXIgaW52YWxp
ZCBvYmplY3QuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdD
b21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMDUnLCBDb21wb25lbnQuZGlzcGxheU5hbWUg
fHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgICAgaW5zdCA9
IG5ldyBTdGF0ZWxlc3NDb21wb25lbnQoQ29tcG9uZW50KTtcbiAgICAgIHRoaXMuX2NvbXBvc2l0
ZVR5cGUgPSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsO1xuICAgIH0gZWxzZSB7
XG4gICAgICBpZiAoaXNQdXJlQ29tcG9uZW50KENvbXBvbmVudCkpIHtcbiAgICAgICAgdGhpcy5f
Y29tcG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVzLlB1cmVDbGFzcztcbiAgICAgIH0gZWxzZSB7
XG4gICAgICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBDb21wb3NpdGVUeXBlcy5JbXB1cmVDbGFz
cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGxhdGVyIGluIF9yZW5kZXJW
YWxpZGF0ZWRDb21wb25lbnQsIGJ1dCBhZGQgYW4gZWFybHlcbiAgICAgIC8vIHdhcm5pbmcgbm93
IHRvIGhlbHAgZGVidWdnaW5nXG4gICAgICBpZiAoaW5zdC5yZW5kZXIgPT0gbnVsbCkge1xuICAg
ICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxz
ZSwgJyVzKC4uLik6IE5vIGByZW5kZXJgIG1ldGhvZCBmb3VuZCBvbiB0aGUgcmV0dXJuZWQgY29t
cG9uZW50ICcgKyAnaW5zdGFuY2U6IHlvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gZGVmaW5lIGBy
ZW5kZXJgLicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29t
cG9uZW50JykgOiB2b2lkIDA7XG4gICAgICB9XG5cbiAgICAgIHZhciBwcm9wc011dGF0ZWQgPSBp
bnN0LnByb3BzICE9PSBwdWJsaWNQcm9wcztcbiAgICAgIHZhciBjb21wb25lbnROYW1lID0gQ29t
cG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnO1xuXG4g
ICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnN0
LnByb3BzID09PSB1bmRlZmluZWQgfHwgIXByb3BzTXV0YXRlZCwgJyVzKC4uLik6IFdoZW4gY2Fs
bGluZyBzdXBlcigpIGluIGAlc2AsIG1ha2Ugc3VyZSB0byBwYXNzICcgKyBcInVwIHRoZSBzYW1l
IHByb3BzIHRoYXQgeW91ciBjb21wb25lbnQncyBjb25zdHJ1Y3RvciB3YXMgcGFzc2VkLlwiLCBj
b21wb25lbnROYW1lLCBjb21wb25lbnROYW1lKSA6IHZvaWQgMDtcbiAgICB9XG5cbiAgICAvLyBU
aGVzZSBzaG91bGQgYmUgc2V0IHVwIGluIHRoZSBjb25zdHJ1Y3RvciwgYnV0IGFzIGEgY29udmVu
aWVuY2UgZm9yXG4gICAgLy8gc2ltcGxlciBjbGFzcyBhYnN0cmFjdGlvbnMsIHdlIHNldCB0aGVt
IHVwIGFmdGVyIHRoZSBmYWN0LlxuICAgIGluc3QucHJvcHMgPSBwdWJsaWNQcm9wcztcbiAgICBp
bnN0LmNvbnRleHQgPSBwdWJsaWNDb250ZXh0O1xuICAgIGluc3QucmVmcyA9IGVtcHR5T2JqZWN0
O1xuICAgIGluc3QudXBkYXRlciA9IHVwZGF0ZVF1ZXVlO1xuXG4gICAgdGhpcy5faW5zdGFuY2Ug
PSBpbnN0O1xuXG4gICAgLy8gU3RvcmUgYSByZWZlcmVuY2UgZnJvbSB0aGUgaW5zdGFuY2UgYmFj
ayB0byB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb25cbiAgICBSZWFjdEluc3RhbmNlTWFwLnNl
dChpbnN0LCB0aGlzKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICAvLyBTaW5jZSBwbGFpbiBKUyBjbGFzc2VzIGFyZSBkZWZpbmVkIHdp
dGhvdXQgYW55IHNwZWNpYWwgaW5pdGlhbGl6YXRpb25cbiAgICAgIC8vIGxvZ2ljLCB3ZSBjYW4g
bm90IGNhdGNoIGNvbW1vbiBlcnJvcnMgZWFybHkuIFRoZXJlZm9yZSwgd2UgaGF2ZSB0b1xuICAg
ICAgLy8gY2F0Y2ggdGhlbSBoZXJlLCBhdCBpbml0aWFsaXphdGlvbiB0aW1lLCBpbnN0ZWFkLlxu
ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWlu
c3QuZ2V0SW5pdGlhbFN0YXRlIHx8IGluc3QuZ2V0SW5pdGlhbFN0YXRlLmlzUmVhY3RDbGFzc0Fw
cHJvdmVkIHx8IGluc3Quc3RhdGUsICdnZXRJbml0aWFsU3RhdGUgd2FzIGRlZmluZWQgb24gJXMs
IGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gJyArICdUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZv
ciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3MuICcgKyAnRGlkIHlvdSBt
ZWFuIHRvIGRlZmluZSBhIHN0YXRlIHByb3BlcnR5IGluc3RlYWQ/JywgdGhpcy5nZXROYW1lKCkg
fHwgJ2EgY29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5nZXREZWZhdWx0UHJvcHMgfHwgaW5zdC5n
ZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdnZXREZWZhdWx0UHJvcHMgd2Fz
IGRlZmluZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gJyArICdUaGlzIGlzIG9u
bHkgc3VwcG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3Mu
ICcgKyAnVXNlIGEgc3RhdGljIHByb3BlcnR5IHRvIGRlZmluZSBkZWZhdWx0UHJvcHMgaW5zdGVh
ZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LnByb3BU
eXBlcywgJ3Byb3BUeXBlcyB3YXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBvbiAl
cy4gVXNlIGEgc3RhdGljICcgKyAncHJvcGVydHkgdG8gZGVmaW5lIHByb3BUeXBlcyBpbnN0ZWFk
LicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWluc3QuY29udGV4
dFR5cGVzLCAnY29udGV4dFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIHByb3BlcnR5
IG9uICVzLiBVc2UgYSAnICsgJ3N0YXRpYyBwcm9wZXJ0eSB0byBkZWZpbmUgY29udGV4dFR5cGVz
IGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB2b2lkIDA7XG4g
ICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBl
b2YgaW5zdC5jb21wb25lbnRTaG91bGRVcGRhdGUgIT09ICdmdW5jdGlvbicsICclcyBoYXMgYSBt
ZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50U2hvdWxkVXBkYXRlKCkuIERpZCB5b3UgbWVhbiBz
aG91bGRDb21wb25lbnRVcGRhdGUoKT8gJyArICdUaGUgbmFtZSBpcyBwaHJhc2VkIGFzIGEgcXVl
c3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArICdleHBlY3RlZCB0byByZXR1cm4gYSB2
YWx1ZS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBp
bnN0LmNvbXBvbmVudERpZFVubW91bnQgIT09ICdmdW5jdGlvbicsICclcyBoYXMgYSBtZXRob2Qg
Y2FsbGVkICcgKyAnY29tcG9uZW50RGlkVW5tb3VudCgpLiBCdXQgdGhlcmUgaXMgbm8gc3VjaCBs
aWZlY3ljbGUgbWV0aG9kLiAnICsgJ0RpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsVW5tb3VudCgp
PycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3Qu
Y29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhhcyBhIG1ldGhv
ZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBj
b21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JywgdGhpcy5nZXROYW1lKCkgfHwgJ0EgY29tcG9u
ZW50JykgOiB2b2lkIDA7XG4gICAgfVxuXG4gICAgdmFyIGluaXRpYWxTdGF0ZSA9IGluc3Quc3Rh
dGU7XG4gICAgaWYgKGluaXRpYWxTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpbnN0LnN0
YXRlID0gaW5pdGlhbFN0YXRlID0gbnVsbDtcbiAgICB9XG4gICAgISh0eXBlb2YgaW5pdGlhbFN0
YXRlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpbml0aWFsU3RhdGUpKSA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5z
dGF0ZTogbXVzdCBiZSBzZXQgdG8gYW4gb2JqZWN0IG9yIG51bGwnLCB0aGlzLmdldE5hbWUoKSB8
fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMDYnLCB0aGlz
LmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDtcblxuICAg
IHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5nUmVwbGFj
ZVN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG5c
biAgICB2YXIgbWFya3VwO1xuICAgIGlmIChpbnN0LnVuc3RhYmxlX2hhbmRsZUVycm9yKSB7XG4g
ICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZyhy
ZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlv
biwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hcmt1cCA9IHRoaXMucGVyZm9ybUlu
aXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZv
LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKGluc3QuY29tcG9uZW50
RGlkTW91bnQpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
ZnVuY3Rpb24gKCkge1xuICAgICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgp
IHtcbiAgICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudERpZE1vdW50KCk7XG4gICAgICAg
ICAgfSwgX3RoaXMuX2RlYnVnSUQsICdjb21wb25lbnREaWRNb3VudCcpO1xuICAgICAgICB9KTtc
biAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgp
LmVucXVldWUoaW5zdC5jb21wb25lbnREaWRNb3VudCwgaW5zdCk7XG4gICAgICB9XG4gICAgfVxu
XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfSxcblxuICBfY29uc3RydWN0Q29tcG9uZW50OiBmdW5j
dGlvbiAoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1
ZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcztcbiAgICAgIHRyeSB7XG4gICAg
ICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXIoZG9Db25zdHJ1
Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG4gICAgICB9IGZp
bmFsbHkge1xuICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDtcbiAgICAg
IH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdENvbXBvbmVudFdp
dGhvdXRPd25lcihkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0
ZVF1ZXVlKTtcbiAgICB9XG4gIH0sXG5cbiAgX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25l
cjogZnVuY3Rpb24gKGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBk
YXRlUXVldWUpIHtcbiAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlw
ZTtcblxuICAgIGlmIChkb0NvbnN0cnVjdCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG1lYXN1cmVMaWZlQ3ljbGVQ
ZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudChwdWJsaWNQ
cm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuICAgICAgICB9LCB0aGlzLl9kZWJ1
Z0lELCAnY3RvcicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21wb25l
bnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtcbiAgICAgIH1cbiAg
ICB9XG5cbiAgICAvLyBUaGlzIGNhbiBzdGlsbCBiZSBhbiBpbnN0YW5jZSBpbiBjYXNlIG9mIGZh
Y3RvcnkgY29tcG9uZW50c1xuICAgIC8vIGJ1dCB3ZSdsbCBjb3VudCB0aGlzIGFzIHRpbWUgc3Bl
bnQgcmVuZGVyaW5nIGFzIHRoZSBtb3JlIGNvbW1vbiBjYXNlLlxuICAgIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICByZXR1cm4gbWVhc3VyZUxpZmVD
eWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gQ29tcG9uZW50KHB1YmxpY1By
b3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG4gICAgICB9LCB0aGlzLl9kZWJ1Z0lE
LCAncmVuZGVyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBDb21wb25lbnQocHVibGlj
UHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtcbiAgICB9XG4gIH0sXG5cbiAgcGVy
Zm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nOiBmdW5jdGlvbiAocmVuZGVyZWRFbGVt
ZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQp
IHtcbiAgICB2YXIgbWFya3VwO1xuICAgIHZhciBjaGVja3BvaW50ID0gdHJhbnNhY3Rpb24uY2hl
Y2twb2ludCgpO1xuICAgIHRyeSB7XG4gICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFs
TW91bnQocmVuZGVyZWRFbGVtZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJh
bnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIFJvbGwgYmFj
ayB0byBjaGVja3BvaW50LCBoYW5kbGUgZXJyb3IgKHdoaWNoIG1heSBhZGQgaXRlbXMgdG8gdGhl
IHRyYW5zYWN0aW9uKSwgYW5kIHRha2UgYSBuZXcgY2hlY2twb2ludFxuICAgICAgdHJhbnNhY3Rp
b24ucm9sbGJhY2soY2hlY2twb2ludCk7XG4gICAgICB0aGlzLl9pbnN0YW5jZS51bnN0YWJsZV9o
YW5kbGVFcnJvcihlKTtcbiAgICAgIGlmICh0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSkge1xuICAg
ICAgICB0aGlzLl9pbnN0YW5jZS5zdGF0ZSA9IHRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUodGhp
cy5faW5zdGFuY2UucHJvcHMsIHRoaXMuX2luc3RhbmNlLmNvbnRleHQpO1xuICAgICAgfVxuICAg
ICAgY2hlY2twb2ludCA9IHRyYW5zYWN0aW9uLmNoZWNrcG9pbnQoKTtcblxuICAgICAgdGhpcy5f
cmVuZGVyZWRDb21wb25lbnQudW5tb3VudENvbXBvbmVudCh0cnVlKTtcbiAgICAgIHRyYW5zYWN0
aW9uLnJvbGxiYWNrKGNoZWNrcG9pbnQpO1xuXG4gICAgICAvLyBUcnkgYWdhaW4gLSB3ZSd2ZSBp
bmZvcm1lZCB0aGUgY29tcG9uZW50IGFib3V0IHRoZSBlcnJvciwgc28gdGhleSBjYW4gcmVuZGVy
IGFuIGVycm9yIG1lc3NhZ2UgdGhpcyB0aW1lLlxuICAgICAgLy8gSWYgdGhpcyB0aHJvd3MgYWdh
aW4sIHRoZSBlcnJvciB3aWxsIGJ1YmJsZSB1cCAoYW5kIGNhbiBiZSBjYXVnaHQgYnkgYSBoaWdo
ZXIgZXJyb3IgYm91bmRhcnkpLlxuICAgICAgbWFya3VwID0gdGhpcy5wZXJmb3JtSW5pdGlhbE1v
dW50KHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5z
YWN0aW9uLCBjb250ZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfSxcblxuICBw
ZXJmb3JtSW5pdGlhbE1vdW50OiBmdW5jdGlvbiAocmVuZGVyZWRFbGVtZW50LCBob3N0UGFyZW50
LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICB2YXIgaW5z
dCA9IHRoaXMuX2luc3RhbmNlO1xuXG4gICAgdmFyIGRlYnVnSUQgPSAwO1xuICAgIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBkZWJ1Z0lEID0gdGhp
cy5fZGVidWdJRDtcbiAgICB9XG5cbiAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsTW91bnQpIHtc
biAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
ICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4g
aW5zdC5jb21wb25lbnRXaWxsTW91bnQoKTtcbiAgICAgICAgfSwgZGVidWdJRCwgJ2NvbXBvbmVu
dFdpbGxNb3VudCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5zdC5jb21wb25lbnRXaWxs
TW91bnQoKTtcbiAgICAgIH1cbiAgICAgIC8vIFdoZW4gbW91bnRpbmcsIGNhbGxzIHRvIGBzZXRT
dGF0ZWAgYnkgYGNvbXBvbmVudFdpbGxNb3VudGAgd2lsbCBzZXRcbiAgICAgIC8vIGB0aGlzLl9w
ZW5kaW5nU3RhdGVRdWV1ZWAgd2l0aG91dCB0cmlnZ2VyaW5nIGEgcmUtcmVuZGVyLlxuICAgICAg
aWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlKSB7XG4gICAgICAgIGluc3Quc3RhdGUgPSB0aGlz
Ll9wcm9jZXNzUGVuZGluZ1N0YXRlKGluc3QucHJvcHMsIGluc3QuY29udGV4dCk7XG4gICAgICB9
XG4gICAgfVxuXG4gICAgLy8gSWYgbm90IGEgc3RhdGVsZXNzIGNvbXBvbmVudCwgd2Ugbm93IHJl
bmRlclxuICAgIGlmIChyZW5kZXJlZEVsZW1lbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVu
ZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCk7XG4gICAgfVxu
XG4gICAgdmFyIG5vZGVUeXBlID0gUmVhY3ROb2RlVHlwZXMuZ2V0VHlwZShyZW5kZXJlZEVsZW1l
bnQpO1xuICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBub2RlVHlwZTtcbiAgICB2YXIgY2hp
bGQgPSB0aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KHJlbmRlcmVkRWxlbWVudCwgbm9k
ZVR5cGUgIT09IFJlYWN0Tm9kZVR5cGVzLkVNUFRZIC8qIHNob3VsZEhhdmVEZWJ1Z0lEICovXG4g
ICAgKTtcbiAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IGNoaWxkO1xuXG4gICAgdmFyIG1h
cmt1cCA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgdHJhbnNhY3Rpb24s
IGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0
KGNvbnRleHQpLCBkZWJ1Z0lEKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoZGVidWdJRCAhPT0gMCkge1xuICAgICAgICB2YXIg
Y2hpbGREZWJ1Z0lEcyA9IGNoaWxkLl9kZWJ1Z0lEICE9PSAwID8gW2NoaWxkLl9kZWJ1Z0lEXSA6
IFtdO1xuICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25TZXRDaGlsZHJl
bihkZWJ1Z0lELCBjaGlsZERlYnVnSURzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4g
bWFya3VwO1xuICB9LFxuXG4gIGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJu
IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZSh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCk7XG4g
IH0sXG5cbiAgLyoqXG4gICAqIFJlbGVhc2VzIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IGBt
b3VudENvbXBvbmVudGAuXG4gICAqXG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICov
XG4gIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChzYWZlbHkpIHtcbiAgICBpZiAoIXRoaXMu
X3JlbmRlcmVkQ29tcG9uZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGlu
c3QgPSB0aGlzLl9pbnN0YW5jZTtcblxuICAgIGlmIChpbnN0LmNvbXBvbmVudFdpbGxVbm1vdW50
ICYmICFpbnN0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCkge1xuICAgICAgaW5zdC5fY2Fs
bGVkQ29tcG9uZW50V2lsbFVubW91bnQgPSB0cnVlO1xuXG4gICAgICBpZiAoc2FmZWx5KSB7XG4g
ICAgICAgIHZhciBuYW1lID0gdGhpcy5nZXROYW1lKCkgKyAnLmNvbXBvbmVudFdpbGxVbm1vdW50
KCknO1xuICAgICAgICBSZWFjdEVycm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNrKG5hbWUs
IGluc3QuY29tcG9uZW50V2lsbFVubW91bnQuYmluZChpbnN0KSk7XG4gICAgICB9IGVsc2Uge1xu
ICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
ICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJl
dHVybiBpbnN0LmNvbXBvbmVudFdpbGxVbm1vdW50KCk7XG4gICAgICAgICAgfSwgdGhpcy5fZGVi
dWdJRCwgJ2NvbXBvbmVudFdpbGxVbm1vdW50Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAg
ICAgaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAg
fVxuXG4gICAgaWYgKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KSB7XG4gICAgICBSZWFjdFJlY29u
Y2lsZXIudW5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCwgc2FmZWx5KTtc
biAgICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBudWxsO1xuICAgICAgdGhpcy5fcmVuZGVy
ZWRDb21wb25lbnQgPSBudWxsO1xuICAgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xuICAgIH1c
blxuICAgIC8vIFJlc2V0IHBlbmRpbmcgZmllbGRzXG4gICAgLy8gRXZlbiBpZiB0aGlzIGNvbXBv
bmVudCBpcyBzY2hlZHVsZWQgZm9yIGFub3RoZXIgdXBkYXRlIGluIFJlYWN0VXBkYXRlcyxcbiAg
ICAvLyBpdCB3b3VsZCBzdGlsbCBiZSBpZ25vcmVkIGJlY2F1c2UgdGhlc2UgZmllbGRzIGFyZSBy
ZXNldC5cbiAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVu
ZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9
IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdDYWxsYmFja3MgPSBudWxsO1xuICAgIHRoaXMuX3Bl
bmRpbmdFbGVtZW50ID0gbnVsbDtcblxuICAgIC8vIFRoZXNlIGZpZWxkcyBkbyBub3QgcmVhbGx5
IG5lZWQgdG8gYmUgcmVzZXQgc2luY2UgdGhpcyBvYmplY3QgaXMgbm9cbiAgICAvLyBsb25nZXIg
YWNjZXNzaWJsZS5cbiAgICB0aGlzLl9jb250ZXh0ID0gbnVsbDtcbiAgICB0aGlzLl9yb290Tm9k
ZUlEID0gMDtcbiAgICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBudWxsO1xuXG4gICAgLy8gRGVs
ZXRlIHRoZSByZWZlcmVuY2UgZnJvbSB0aGUgaW5zdGFuY2UgdG8gdGhpcyBpbnRlcm5hbCByZXBy
ZXNlbnRhdGlvblxuICAgIC8vIHdoaWNoIGFsbG93IHRoZSBpbnRlcm5hbHMgdG8gYmUgcHJvcGVy
bHkgY2xlYW5lZCB1cCBldmVuIGlmIHRoZSB1c2VyXG4gICAgLy8gbGVha3MgYSByZWZlcmVuY2Ug
dG8gdGhlIHB1YmxpYyBpbnN0YW5jZS5cbiAgICBSZWFjdEluc3RhbmNlTWFwLnJlbW92ZShpbnN0
KTtcblxuICAgIC8vIFNvbWUgZXhpc3RpbmcgY29tcG9uZW50cyByZWx5IG9uIGluc3QucHJvcHMg
ZXZlbiBhZnRlciB0aGV5J3ZlIGJlZW5cbiAgICAvLyBkZXN0cm95ZWQgKGluIGV2ZW50IGhhbmRs
ZXJzKS5cbiAgICAvLyBUT0RPOiBpbnN0LnByb3BzID0gbnVsbDtcbiAgICAvLyBUT0RPOiBpbnN0
LnN0YXRlID0gbnVsbDtcbiAgICAvLyBUT0RPOiBpbnN0LmNvbnRleHQgPSBudWxsO1xuICB9LFxu
XG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRoZSBjb250ZXh0IG9iamVjdCB0byBvbmx5IGNvbnRhaW4g
a2V5cyBzcGVjaWZpZWQgaW5cbiAgICogYGNvbnRleHRUeXBlc2BcbiAgICpcbiAgICogQHBhcmFt
IHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7P29iamVjdH1cbiAgICogQHByaXZhdGVc
biAgICovXG4gIF9tYXNrQ29udGV4dDogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICB2YXIgQ29t
cG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICB2YXIgY29udGV4dFR5cGVz
ID0gQ29tcG9uZW50LmNvbnRleHRUeXBlcztcbiAgICBpZiAoIWNvbnRleHRUeXBlcykge1xuICAg
ICAgcmV0dXJuIGVtcHR5T2JqZWN0O1xuICAgIH1cbiAgICB2YXIgbWFza2VkQ29udGV4dCA9IHt9
O1xuICAgIGZvciAodmFyIGNvbnRleHROYW1lIGluIGNvbnRleHRUeXBlcykge1xuICAgICAgbWFz
a2VkQ29udGV4dFtjb250ZXh0TmFtZV0gPSBjb250ZXh0W2NvbnRleHROYW1lXTtcbiAgICB9XG4g
ICAgcmV0dXJuIG1hc2tlZENvbnRleHQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgdGhl
IGNvbnRleHQgb2JqZWN0IHRvIG9ubHkgY29udGFpbiBrZXlzIHNwZWNpZmllZCBpblxuICAgKiBg
Y29udGV4dFR5cGVzYCwgYW5kIGFzc2VydHMgdGhhdCB0aGV5IGFyZSB2YWxpZC5cbiAgICpcbiAg
ICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7P29iamVjdH1cbiAgICog
QHByaXZhdGVcbiAgICovXG4gIF9wcm9jZXNzQ29udGV4dDogZnVuY3Rpb24gKGNvbnRleHQpIHtc
biAgICB2YXIgbWFza2VkQ29udGV4dCA9IHRoaXMuX21hc2tDb250ZXh0KGNvbnRleHQpO1xuICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIg
Q29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICAgIGlmIChDb21wb25l
bnQuY29udGV4dFR5cGVzKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrQ29udGV4dFR5cGVzKENvbXBv
bmVudC5jb250ZXh0VHlwZXMsIG1hc2tlZENvbnRleHQsICdjb250ZXh0Jyk7XG4gICAgICB9XG4g
ICAgfVxuICAgIHJldHVybiBtYXNrZWRDb250ZXh0O1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFy
YW0ge29iamVjdH0gY3VycmVudENvbnRleHRcbiAgICogQHJldHVybiB7b2JqZWN0fVxuICAgKiBA
cHJpdmF0ZVxuICAgKi9cbiAgX3Byb2Nlc3NDaGlsZENvbnRleHQ6IGZ1bmN0aW9uIChjdXJyZW50
Q29udGV4dCkge1xuICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBl
O1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgdmFyIGNoaWxkQ29udGV4dDtc
blxuICAgIGlmIChpbnN0LmdldENoaWxkQ29udGV4dCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRp
b24uZGVidWdUb29sLm9uQmVnaW5Qcm9jZXNzaW5nQ2hpbGRDb250ZXh0KCk7XG4gICAgICAgIHRy
eSB7XG4gICAgICAgICAgY2hpbGRDb250ZXh0ID0gaW5zdC5nZXRDaGlsZENvbnRleHQoKTtcbiAg
ICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25FbmRQcm9jZXNzaW5nQ2hpbGRDb250ZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxz
ZSB7XG4gICAgICAgIGNoaWxkQ29udGV4dCA9IGluc3QuZ2V0Q2hpbGRDb250ZXh0KCk7XG4gICAg
ICB9XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkQ29udGV4dCkge1xuICAgICAgISh0eXBlb2YgQ29t
cG9uZW50LmNoaWxkQ29udGV4dFR5cGVzID09PSAnb2JqZWN0JykgPyBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMuZ2V0Q2hpbGRDb250
ZXh0KCk6IGNoaWxkQ29udGV4dFR5cGVzIG11c3QgYmUgZGVmaW5lZCBpbiBvcmRlciB0byB1c2Ug
Z2V0Q2hpbGRDb250ZXh0KCkuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29t
cG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMTA3JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0
Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB0aGlzLl9jaGVja0NvbnRleHRUeXBl
cyhDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMsIGNoaWxkQ29udGV4dCwgJ2NoaWxkIGNvbnRl
eHQnKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIG5hbWUgaW4gY2hpbGRDb250ZXh0KSB7XG4g
ICAgICAgICEobmFtZSBpbiBDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMpID8gcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzLmdldENo
aWxkQ29udGV4dCgpOiBrZXkgXCIlc1wiIGlzIG5vdCBkZWZpbmVkIGluIGNoaWxkQ29udGV4dFR5
cGVzLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcsIG5hbWUp
IDogX3Byb2RJbnZhcmlhbnQoJzEwOCcsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudCcsIG5hbWUpIDogdm9pZCAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9hc3Np
Z24oe30sIGN1cnJlbnRDb250ZXh0LCBjaGlsZENvbnRleHQpO1xuICAgIH1cbiAgICByZXR1cm4g
Y3VycmVudENvbnRleHQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFzc2VydCB0aGF0IHRoZSBjb250
ZXh0IHR5cGVzIGFyZSB2YWxpZFxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gdHlwZVNwZWNz
IE1hcCBvZiBjb250ZXh0IGZpZWxkIHRvIGEgUmVhY3RQcm9wVHlwZVxuICAgKiBAcGFyYW0ge29i
amVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWRc
biAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIGUuZy4gXCJwcm9wXCIsIFwiY29udGV4dFwi
LCBcImNoaWxkIGNvbnRleHRcIlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2NoZWNrQ29udGV4
dFR5cGVzOiBmdW5jdGlvbiAodHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uKSB7XG4gICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNoZWNrUmVh
Y3RUeXBlU3BlYyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIHRoaXMuZ2V0TmFtZSgpLCBu
dWxsLCB0aGlzLl9kZWJ1Z0lEKTtcbiAgICB9XG4gIH0sXG5cbiAgcmVjZWl2ZUNvbXBvbmVudDog
ZnVuY3Rpb24gKG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgbmV4dENvbnRleHQpIHtcbiAgICB2
YXIgcHJldkVsZW1lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudDtcbiAgICB2YXIgcHJldkNvbnRl
eHQgPSB0aGlzLl9jb250ZXh0O1xuXG4gICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQgPSBudWxsO1xu
XG4gICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0
RWxlbWVudCwgcHJldkNvbnRleHQsIG5leHRDb250ZXh0KTtcbiAgfSxcblxuICAvKipcbiAgICog
SWYgYW55IG9mIGBfcGVuZGluZ0VsZW1lbnRgLCBgX3BlbmRpbmdTdGF0ZVF1ZXVlYCwgb3IgYF9w
ZW5kaW5nRm9yY2VVcGRhdGVgXG4gICAqIGlzIHNldCwgdXBkYXRlIHRoZSBjb21wb25lbnQuXG4g
ICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25c
biAgICogQGludGVybmFsXG4gICAqL1xuICBwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6IGZ1bmN0
aW9uICh0cmFuc2FjdGlvbikge1xuICAgIGlmICh0aGlzLl9wZW5kaW5nRWxlbWVudCAhPSBudWxs
KSB7XG4gICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudCh0aGlzLCB0aGlzLl9w
ZW5kaW5nRWxlbWVudCwgdHJhbnNhY3Rpb24sIHRoaXMuX2NvbnRleHQpO1xuICAgIH0gZWxzZSBp
ZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgIT09IG51bGwgfHwgdGhpcy5fcGVuZGluZ0ZvcmNl
VXBkYXRlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgdGhpcy5f
Y3VycmVudEVsZW1lbnQsIHRoaXMuX2N1cnJlbnRFbGVtZW50LCB0aGlzLl9jb250ZXh0LCB0aGlz
Ll9jb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXIg
PSBudWxsO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUGVyZm9ybSBhbiB1cGRhdGUgdG8g
YSBtb3VudGVkIGNvbXBvbmVudC4gVGhlIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgYW5kXG4g
ICAqIHNob3VsZENvbXBvbmVudFVwZGF0ZSBtZXRob2RzIGFyZSBjYWxsZWQsIHRoZW4gKGFzc3Vt
aW5nIHRoZSB1cGRhdGUgaXNuJ3RcbiAgICogc2tpcHBlZCkgdGhlIHJlbWFpbmluZyB1cGRhdGUg
bGlmZWN5Y2xlIG1ldGhvZHMgYXJlIGNhbGxlZCBhbmQgdGhlIERPTVxuICAgKiByZXByZXNlbnRh
dGlvbiBpcyB1cGRhdGVkLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVudHMg
UmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS5cbiAgICogU29w
aGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92ZXJyaWRlIHRoaXMuXG4gICAqXG4gICAq
IEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBh
cmFtIHtSZWFjdEVsZW1lbnR9IHByZXZQYXJlbnRFbGVtZW50XG4gICAqIEBwYXJhbSB7UmVhY3RF
bGVtZW50fSBuZXh0UGFyZW50RWxlbWVudFxuICAgKiBAaW50ZXJuYWxcbiAgICogQG92ZXJyaWRh
YmxlXG4gICAqL1xuICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJl
dlBhcmVudEVsZW1lbnQsIG5leHRQYXJlbnRFbGVtZW50LCBwcmV2VW5tYXNrZWRDb250ZXh0LCBu
ZXh0VW5tYXNrZWRDb250ZXh0KSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcbiAg
ICAhKGluc3QgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAnQXR0ZW1wdGVkIHRvIHVwZGF0ZSBjb21wb25lbnQgYCVzYCB0
aGF0IGhhcyBhbHJlYWR5IGJlZW4gdW5tb3VudGVkIChvciBmYWlsZWQgdG8gbW91bnQpLicsIHRo
aXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlh
bnQoJzEzNicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDog
dm9pZCAwO1xuXG4gICAgdmFyIHdpbGxSZWNlaXZlID0gZmFsc2U7XG4gICAgdmFyIG5leHRDb250
ZXh0O1xuXG4gICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBjb250ZXh0IGhhcyBjaGFuZ2VkIG9yIG5v
dFxuICAgIGlmICh0aGlzLl9jb250ZXh0ID09PSBuZXh0VW5tYXNrZWRDb250ZXh0KSB7XG4gICAg
ICBuZXh0Q29udGV4dCA9IGluc3QuY29udGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dENv
bnRleHQgPSB0aGlzLl9wcm9jZXNzQ29udGV4dChuZXh0VW5tYXNrZWRDb250ZXh0KTtcbiAgICAg
IHdpbGxSZWNlaXZlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgcHJldlByb3BzID0gcHJldlBh
cmVudEVsZW1lbnQucHJvcHM7XG4gICAgdmFyIG5leHRQcm9wcyA9IG5leHRQYXJlbnRFbGVtZW50
LnByb3BzO1xuXG4gICAgLy8gTm90IGEgc2ltcGxlIHN0YXRlIHVwZGF0ZSBidXQgYSBwcm9wcyB1
cGRhdGVcbiAgICBpZiAocHJldlBhcmVudEVsZW1lbnQgIT09IG5leHRQYXJlbnRFbGVtZW50KSB7
XG4gICAgICB3aWxsUmVjZWl2ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gQW4gdXBkYXRlIGhl
cmUgd2lsbCBzY2hlZHVsZSBhbiB1cGRhdGUgYnV0IGltbWVkaWF0ZWx5IHNldFxuICAgIC8vIF9w
ZW5kaW5nU3RhdGVRdWV1ZSB3aGljaCB3aWxsIGVuc3VyZSB0aGF0IGFueSBzdGF0ZSB1cGRhdGVz
IGdldHNcbiAgICAvLyBpbW1lZGlhdGVseSByZWNvbmNpbGVkIGluc3RlYWQgb2Ygd2FpdGluZyBm
b3IgdGhlIG5leHQgYmF0Y2guXG4gICAgaWYgKHdpbGxSZWNlaXZlICYmIGluc3QuY29tcG9uZW50
V2lsbFJlY2VpdmVQcm9wcykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkg
e1xuICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFBy
b3BzLCBuZXh0Q29udGV4dCk7XG4gICAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdjb21wb25lbnRX
aWxsUmVjZWl2ZVByb3BzJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnN0LmNvbXBvbmVu
dFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzLCBuZXh0Q29udGV4dCk7XG4gICAgICB9XG4gICAg
fVxuXG4gICAgdmFyIG5leHRTdGF0ZSA9IHRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUobmV4dFBy
b3BzLCBuZXh0Q29udGV4dCk7XG4gICAgdmFyIHNob3VsZFVwZGF0ZSA9IHRydWU7XG5cbiAgICBp
ZiAoIXRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSkge1xuICAgICAgaWYgKGluc3Quc2hvdWxkQ29t
cG9uZW50VXBkYXRlKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgICAgICAgc2hvdWxkVXBkYXRlID0gbWVhc3VyZUxpZmVDeWNsZVBl
cmYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGluc3Quc2hvdWxkQ29tcG9uZW50
VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG4gICAgICAgICAgfSwg
dGhpcy5fZGVidWdJRCwgJ3Nob3VsZENvbXBvbmVudFVwZGF0ZScpO1xuICAgICAgICB9IGVsc2Ug
e1xuICAgICAgICAgIHNob3VsZFVwZGF0ZSA9IGluc3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5l
eHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxz
ZSB7XG4gICAgICAgIGlmICh0aGlzLl9jb21wb3NpdGVUeXBlID09PSBDb21wb3NpdGVUeXBlcy5Q
dXJlQ2xhc3MpIHtcbiAgICAgICAgICBzaG91bGRVcGRhdGUgPSAhc2hhbGxvd0VxdWFsKHByZXZQ
cm9wcywgbmV4dFByb3BzKSB8fCAhc2hhbGxvd0VxdWFsKGluc3Quc3RhdGUsIG5leHRTdGF0ZSk7
XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoc2hvdWxkVXBkYXRlICE9PSB1bmRlZmluZWQsICclcy5zaG91
bGRDb21wb25lbnRVcGRhdGUoKTogUmV0dXJuZWQgdW5kZWZpbmVkIGluc3RlYWQgb2YgYSAnICsg
J2Jvb2xlYW4gdmFsdWUuIE1ha2Ugc3VyZSB0byByZXR1cm4gdHJ1ZSBvciBmYWxzZS4nLCB0aGlz
LmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICB9
XG5cbiAgICB0aGlzLl91cGRhdGVCYXRjaE51bWJlciA9IG51bGw7XG4gICAgaWYgKHNob3VsZFVw
ZGF0ZSkge1xuICAgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG4gICAgICAv
LyBXaWxsIHNldCBgdGhpcy5wcm9wc2AsIGB0aGlzLnN0YXRlYCBhbmQgYHRoaXMuY29udGV4dGAu
XG4gICAgICB0aGlzLl9wZXJmb3JtQ29tcG9uZW50VXBkYXRlKG5leHRQYXJlbnRFbGVtZW50LCBu
ZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQsIHRyYW5zYWN0aW9uLCBuZXh0VW5tYXNr
ZWRDb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgaXQncyBkZXRlcm1pbmVkIHRo
YXQgYSBjb21wb25lbnQgc2hvdWxkIG5vdCB1cGRhdGUsIHdlIHN0aWxsIHdhbnRcbiAgICAgIC8v
IHRvIHNldCBwcm9wcyBhbmQgc3RhdGUgYnV0IHdlIHNob3J0Y3V0IHRoZSByZXN0IG9mIHRoZSB1
cGRhdGUuXG4gICAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRQYXJlbnRFbGVtZW50O1xu
ICAgICAgdGhpcy5fY29udGV4dCA9IG5leHRVbm1hc2tlZENvbnRleHQ7XG4gICAgICBpbnN0LnBy
b3BzID0gbmV4dFByb3BzO1xuICAgICAgaW5zdC5zdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICAgIGlu
c3QuY29udGV4dCA9IG5leHRDb250ZXh0O1xuICAgIH1cbiAgfSxcblxuICBfcHJvY2Vzc1BlbmRp
bmdTdGF0ZTogZnVuY3Rpb24gKHByb3BzLCBjb250ZXh0KSB7XG4gICAgdmFyIGluc3QgPSB0aGlz
Ll9pbnN0YW5jZTtcbiAgICB2YXIgcXVldWUgPSB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZTtcbiAg
ICB2YXIgcmVwbGFjZSA9IHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU7XG4gICAgdGhpcy5fcGVu
ZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0g
bnVsbDtcblxuICAgIGlmICghcXVldWUpIHtcbiAgICAgIHJldHVybiBpbnN0LnN0YXRlO1xuICAg
IH1cblxuICAgIGlmIChyZXBsYWNlICYmIHF1ZXVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0
dXJuIHF1ZXVlWzBdO1xuICAgIH1cblxuICAgIHZhciBuZXh0U3RhdGUgPSBfYXNzaWduKHt9LCBy
ZXBsYWNlID8gcXVldWVbMF0gOiBpbnN0LnN0YXRlKTtcbiAgICBmb3IgKHZhciBpID0gcmVwbGFj
ZSA/IDEgOiAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBwYXJ0aWFsID0g
cXVldWVbaV07XG4gICAgICBfYXNzaWduKG5leHRTdGF0ZSwgdHlwZW9mIHBhcnRpYWwgPT09ICdm
dW5jdGlvbicgPyBwYXJ0aWFsLmNhbGwoaW5zdCwgbmV4dFN0YXRlLCBwcm9wcywgY29udGV4dCkg
OiBwYXJ0aWFsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dFN0YXRlO1xuICB9LFxuXG4gIC8q
KlxuICAgKiBNZXJnZXMgbmV3IHByb3BzIGFuZCBzdGF0ZSwgbm90aWZpZXMgZGVsZWdhdGUgbWV0
aG9kcyBvZiB1cGRhdGUgYW5kXG4gICAqIHBlcmZvcm1zIHVwZGF0ZS5cbiAgICpcbiAgICogQHBh
cmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IE5leHQgZWxlbWVudFxuICAgKiBAcGFyYW0g
e29iamVjdH0gbmV4dFByb3BzIE5leHQgcHVibGljIG9iamVjdCB0byBzZXQgYXMgcHJvcGVydGll
cy5cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGUgTmV4dCBvYmplY3QgdG8gc2V0IGFz
IHN0YXRlLlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0IE5leHQgcHVibGljIG9i
amVjdCB0byBzZXQgYXMgY29udGV4dC5cbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gez9vYmplY3R9IHVubWFza2VkQ29udGV4
dFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3BlcmZvcm1Db21wb25lbnRVcGRhdGU6IGZ1bmN0
aW9uIChuZXh0RWxlbWVudCwgbmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0LCB0cmFu
c2FjdGlvbiwgdW5tYXNrZWRDb250ZXh0KSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAg
ICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXG4gICAgdmFyIGhhc0NvbXBvbmVudERpZFVw
ZGF0ZSA9IEJvb2xlYW4oaW5zdC5jb21wb25lbnREaWRVcGRhdGUpO1xuICAgIHZhciBwcmV2UHJv
cHM7XG4gICAgdmFyIHByZXZTdGF0ZTtcbiAgICB2YXIgcHJldkNvbnRleHQ7XG4gICAgaWYgKGhh
c0NvbXBvbmVudERpZFVwZGF0ZSkge1xuICAgICAgcHJldlByb3BzID0gaW5zdC5wcm9wcztcbiAg
ICAgIHByZXZTdGF0ZSA9IGluc3Quc3RhdGU7XG4gICAgICBwcmV2Q29udGV4dCA9IGluc3QuY29u
dGV4dDtcbiAgICB9XG5cbiAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsVXBkYXRlKSB7XG4gICAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBt
ZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGluc3Qu
Y29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpO1xu
ICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50V2lsbFVwZGF0ZScpO1xuICAgICAg
fSBlbHNlIHtcbiAgICAgICAgaW5zdC5jb21wb25lbnRXaWxsVXBkYXRlKG5leHRQcm9wcywgbmV4
dFN0YXRlLCBuZXh0Q29udGV4dCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fY3VycmVu
dEVsZW1lbnQgPSBuZXh0RWxlbWVudDtcbiAgICB0aGlzLl9jb250ZXh0ID0gdW5tYXNrZWRDb250
ZXh0O1xuICAgIGluc3QucHJvcHMgPSBuZXh0UHJvcHM7XG4gICAgaW5zdC5zdGF0ZSA9IG5leHRT
dGF0ZTtcbiAgICBpbnN0LmNvbnRleHQgPSBuZXh0Q29udGV4dDtcblxuICAgIHRoaXMuX3VwZGF0
ZVJlbmRlcmVkQ29tcG9uZW50KHRyYW5zYWN0aW9uLCB1bm1hc2tlZENvbnRleHQpO1xuXG4gICAg
aWYgKGhhc0NvbXBvbmVudERpZFVwZGF0ZSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3Vu
dFJlYWR5KCkuZW5xdWV1ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbWVhc3VyZUxpZmVDeWNs
ZVBlcmYoaW5zdC5jb21wb25lbnREaWRVcGRhdGUuYmluZChpbnN0LCBwcmV2UHJvcHMsIHByZXZT
dGF0ZSwgcHJldkNvbnRleHQpLCBfdGhpczIuX2RlYnVnSUQsICdjb21wb25lbnREaWRVcGRhdGUn
KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmFuc2FjdGlvbi5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGluc3QuY29tcG9uZW50RGlkVXBkYXRlLmJpbmQoaW5z
dCwgcHJldlByb3BzLCBwcmV2U3RhdGUsIHByZXZDb250ZXh0KSwgaW5zdCk7XG4gICAgICB9XG4g
ICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBDYWxsIHRoZSBjb21wb25lbnQncyBgcmVuZGVyYCBt
ZXRob2QgYW5kIHVwZGF0ZSB0aGUgRE9NIGFjY29yZGluZ2x5LlxuICAgKlxuICAgKiBAcGFyYW0g
e1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBpbnRlcm5hbFxu
ICAgKi9cbiAgX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24s
IGNvbnRleHQpIHtcbiAgICB2YXIgcHJldkNvbXBvbmVudEluc3RhbmNlID0gdGhpcy5fcmVuZGVy
ZWRDb21wb25lbnQ7XG4gICAgdmFyIHByZXZSZW5kZXJlZEVsZW1lbnQgPSBwcmV2Q29tcG9uZW50
SW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50O1xuICAgIHZhciBuZXh0UmVuZGVyZWRFbGVtZW50ID0g
dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCk7XG5cbiAgICB2YXIgZGVidWdJRCA9IDA7
XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
IGRlYnVnSUQgPSB0aGlzLl9kZWJ1Z0lEO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRVcGRhdGVS
ZWFjdENvbXBvbmVudChwcmV2UmVuZGVyZWRFbGVtZW50LCBuZXh0UmVuZGVyZWRFbGVtZW50KSkg
e1xuICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQocHJldkNvbXBvbmVudElu
c3RhbmNlLCBuZXh0UmVuZGVyZWRFbGVtZW50LCB0cmFuc2FjdGlvbiwgdGhpcy5fcHJvY2Vzc0No
aWxkQ29udGV4dChjb250ZXh0KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBvbGRIb3N0Tm9k
ZSA9IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShwcmV2Q29tcG9uZW50SW5zdGFuY2UpO1xu
ICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocHJldkNvbXBvbmVudEluc3Rh
bmNlLCBmYWxzZSk7XG5cbiAgICAgIHZhciBub2RlVHlwZSA9IFJlYWN0Tm9kZVR5cGVzLmdldFR5
cGUobmV4dFJlbmRlcmVkRWxlbWVudCk7XG4gICAgICB0aGlzLl9yZW5kZXJlZE5vZGVUeXBlID0g
bm9kZVR5cGU7XG4gICAgICB2YXIgY2hpbGQgPSB0aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9u
ZW50KG5leHRSZW5kZXJlZEVsZW1lbnQsIG5vZGVUeXBlICE9PSBSZWFjdE5vZGVUeXBlcy5FTVBU
WSAvKiBzaG91bGRIYXZlRGVidWdJRCAqL1xuICAgICAgKTtcbiAgICAgIHRoaXMuX3JlbmRlcmVk
Q29tcG9uZW50ID0gY2hpbGQ7XG5cbiAgICAgIHZhciBuZXh0TWFya3VwID0gUmVhY3RSZWNvbmNp
bGVyLm1vdW50Q29tcG9uZW50KGNoaWxkLCB0cmFuc2FjdGlvbiwgdGhpcy5faG9zdFBhcmVudCwg
dGhpcy5faG9zdENvbnRhaW5lckluZm8sIHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQoY29udGV4
dCksIGRlYnVnSUQpO1xuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgICAgICBpZiAoZGVidWdJRCAhPT0gMCkge1xuICAgICAgICAgIHZhciBj
aGlsZERlYnVnSURzID0gY2hpbGQuX2RlYnVnSUQgIT09IDAgPyBbY2hpbGQuX2RlYnVnSURdIDog
W107XG4gICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRy
ZW4oZGVidWdJRCwgY2hpbGREZWJ1Z0lEcyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAg
dGhpcy5fcmVwbGFjZU5vZGVXaXRoTWFya3VwKG9sZEhvc3ROb2RlLCBuZXh0TWFya3VwLCBwcmV2
Q29tcG9uZW50SW5zdGFuY2UpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogT3ZlcnJpZGRl
biBpbiBzaGFsbG93IHJlbmRlcmluZy5cbiAgICpcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAg
X3JlcGxhY2VOb2RlV2l0aE1hcmt1cDogZnVuY3Rpb24gKG9sZEhvc3ROb2RlLCBuZXh0TWFya3Vw
LCBwcmV2SW5zdGFuY2UpIHtcbiAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VO
b2RlV2l0aE1hcmt1cChvbGRIb3N0Tm9kZSwgbmV4dE1hcmt1cCwgcHJldkluc3RhbmNlKTtcbiAg
fSxcblxuICAvKipcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgX3JlbmRlclZhbGlkYXRlZENv
bXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBpbnN0
ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgdmFyIHJlbmRlcmVkRWxlbWVudDtcblxuICAgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICByZW5kZXJlZEVs
ZW1lbnQgPSBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVy
biBpbnN0LnJlbmRlcigpO1xuICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ3JlbmRlcicpO1xuICAg
IH0gZWxzZSB7XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSBpbnN0LnJlbmRlcigpO1xuICAgIH1c
blxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
ICAvLyBXZSBhbGxvdyBhdXRvLW1vY2tzIHRvIHByb2NlZWQgYXMgaWYgdGhleSdyZSByZXR1cm5p
bmcgbnVsbC5cbiAgICAgIGlmIChyZW5kZXJlZEVsZW1lbnQgPT09IHVuZGVmaW5lZCAmJiBpbnN0
LnJlbmRlci5faXNNb2NrRnVuY3Rpb24pIHtcbiAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBi
YWQgcHJhY3RpY2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmRcbiAgICAgICAgLy8gZGVwcmVj
YXRpbmcgdGhpcyBjb252ZW5pZW5jZS5cbiAgICAgICAgcmVuZGVyZWRFbGVtZW50ID0gbnVsbDtc
biAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyZWRFbGVtZW50O1xuICB9LFxuXG4g
IC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudDog
ZnVuY3Rpb24gKCkge1xuICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7XG4gICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgfHwgdGhpcy5fY29tcG9zaXRlVHlwZSAhPT0g
Q29tcG9zaXRlVHlwZXMuU3RhdGVsZXNzRnVuY3Rpb25hbCkge1xuICAgICAgUmVhY3RDdXJyZW50
T3duZXIuY3VycmVudCA9IHRoaXM7XG4gICAgICB0cnkge1xuICAgICAgICByZW5kZXJlZEVsZW1l
bnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQo
KTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQg
PSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSB0
aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKTtcbiAg
ICB9XG4gICAgIShcbiAgICAvLyBUT0RPOiBBbiBgaXNWYWxpZE5vZGVgIGZ1bmN0aW9uIHdvdWxk
IHByb2JhYmx5IGJlIG1vcmUgYXBwcm9wcmlhdGVcbiAgICByZW5kZXJlZEVsZW1lbnQgPT09IG51
bGwgfHwgcmVuZGVyZWRFbGVtZW50ID09PSBmYWxzZSB8fCBSZWFjdC5pc1ZhbGlkRWxlbWVudChy
ZW5kZXJlZEVsZW1lbnQpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICclcy5yZW5kZXIoKTogQSB2YWxpZCBSZWFjdCBlbGVtZW50IChv
ciBudWxsKSBtdXN0IGJlIHJldHVybmVkLiBZb3UgbWF5IGhhdmUgcmV0dXJuZWQgdW5kZWZpbmVk
LCBhbiBhcnJheSBvciBzb21lIG90aGVyIGludmFsaWQgb2JqZWN0LicsIHRoaXMuZ2V0TmFtZSgp
IHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwOScsIHRo
aXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXG4g
ICAgcmV0dXJuIHJlbmRlcmVkRWxlbWVudDtcbiAgfSxcblxuICAvKipcbiAgICogTGF6aWx5IGFs
bG9jYXRlcyB0aGUgcmVmcyBvYmplY3QgYW5kIHN0b3JlcyBgY29tcG9uZW50YCBhcyBgcmVmYC5c
biAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBSZWZlcmVuY2UgbmFtZS5cbiAgICogQHBh
cmFtIHtjb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gc3RvcmUgYXMgYHJlZmAuXG4g
ICAqIEBmaW5hbFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYXR0YWNoUmVmOiBmdW5jdGlvbiAo
cmVmLCBjb21wb25lbnQpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuZ2V0UHVibGljSW5zdGFuY2Uo
KTtcbiAgICAhKGluc3QgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnU3RhdGVsZXNzIGZ1bmN0aW9uIGNvbXBvbmVudHMg
Y2Fubm90IGhhdmUgcmVmcy4nKSA6IF9wcm9kSW52YXJpYW50KCcxMTAnKSA6IHZvaWQgMDtcbiAg
ICB2YXIgcHVibGljQ29tcG9uZW50SW5zdGFuY2UgPSBjb21wb25lbnQuZ2V0UHVibGljSW5zdGFu
Y2UoKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQgJiYgY29tcG9uZW50LmdldE5hbWUg
PyBjb21wb25lbnQuZ2V0TmFtZSgpIDogJ2EgY29tcG9uZW50JztcbiAgICAgIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHB1YmxpY0NvbXBvbmVudEluc3Rh
bmNlICE9IG51bGwgfHwgY29tcG9uZW50Ll9jb21wb3NpdGVUeXBlICE9PSBDb21wb3NpdGVUeXBl
cy5TdGF0ZWxlc3NGdW5jdGlvbmFsLCAnU3RhdGVsZXNzIGZ1bmN0aW9uIGNvbXBvbmVudHMgY2Fu
bm90IGJlIGdpdmVuIHJlZnMgJyArICcoU2VlIHJlZiBcIiVzXCIgaW4gJXMgY3JlYXRlZCBieSAl
cykuICcgKyAnQXR0ZW1wdHMgdG8gYWNjZXNzIHRoaXMgcmVmIHdpbGwgZmFpbC4nLCByZWYsIGNv
bXBvbmVudE5hbWUsIHRoaXMuZ2V0TmFtZSgpKSA6IHZvaWQgMDtcbiAgICB9XG4gICAgdmFyIHJl
ZnMgPSBpbnN0LnJlZnMgPT09IGVtcHR5T2JqZWN0ID8gaW5zdC5yZWZzID0ge30gOiBpbnN0LnJl
ZnM7XG4gICAgcmVmc1tyZWZdID0gcHVibGljQ29tcG9uZW50SW5zdGFuY2U7XG4gIH0sXG5cbiAg
LyoqXG4gICAqIERldGFjaGVzIGEgcmVmZXJlbmNlIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7
c3RyaW5nfSByZWYgTmFtZSB0byBkZXJlZmVyZW5jZS5cbiAgICogQGZpbmFsXG4gICAqIEBwcml2
YXRlXG4gICAqL1xuICBkZXRhY2hSZWY6IGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIgcmVmcyA9
IHRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKS5yZWZzO1xuICAgIGRlbGV0ZSByZWZzW3JlZl07XG4g
IH0sXG5cbiAgLyoqXG4gICAqIEdldCBhIHRleHQgZGVzY3JpcHRpb24gb2YgdGhlIGNvbXBvbmVu
dCB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IGl0XG4gICAqIGluIGVycm9yIG1lc3NhZ2Vz
LlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBuYW1lIG9yIG51bGwuXG4gICAqIEBpbnRlcm5h
bFxuICAgKi9cbiAgZ2V0TmFtZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciB0eXBlID0gdGhpcy5f
Y3VycmVudEVsZW1lbnQudHlwZTtcbiAgICB2YXIgY29uc3RydWN0b3IgPSB0aGlzLl9pbnN0YW5j
ZSAmJiB0aGlzLl9pbnN0YW5jZS5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gdHlwZS5kaXNwbGF5
TmFtZSB8fCBjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCB0eXBlLm5h
bWUgfHwgY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3IubmFtZSB8fCBudWxsO1xuICB9LFxuXG4g
IC8qKlxuICAgKiBHZXQgdGhlIHB1YmxpY2x5IGFjY2Vzc2libGUgcmVwcmVzZW50YXRpb24gb2Yg
dGhpcyBjb21wb25lbnQgLSBpLmUuIHdoYXRcbiAgICogaXMgZXhwb3NlZCBieSByZWZzIGFuZCBy
ZXR1cm5lZCBieSByZW5kZXIuIENhbiBiZSBudWxsIGZvciBzdGF0ZWxlc3NcbiAgICogY29tcG9u
ZW50cy5cbiAgICpcbiAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IHRoZSBwdWJsaWMgY29t
cG9uZW50IGluc3RhbmNlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldFB1YmxpY0luc3Rh
bmNlOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcbiAgICBp
ZiAodGhpcy5fY29tcG9zaXRlVHlwZSA9PT0gQ29tcG9zaXRlVHlwZXMuU3RhdGVsZXNzRnVuY3Rp
b25hbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBpbnN0O1xuICB9
LFxuXG4gIC8vIFN0dWJcbiAgX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6IG51bGxcbn07XG5c
bm1vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb3NpdGVDb21wb25lbnQ7XG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFj
dENvbXBvc2l0ZUNvbXBvbmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDEzNlxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbi8qIGds
b2JhbHMgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVu
dFRyZWUnKTtcbnZhciBSZWFjdERlZmF1bHRJbmplY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0RGVm
YXVsdEluamVjdGlvbicpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQn
KTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xu
dmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG52YXIgUmVhY3RW
ZXJzaW9uID0gcmVxdWlyZSgnLi9SZWFjdFZlcnNpb24nKTtcblxudmFyIGZpbmRET01Ob2RlID0g
cmVxdWlyZSgnLi9maW5kRE9NTm9kZScpO1xudmFyIGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9z
aXRlID0gcmVxdWlyZSgnLi9nZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZScpO1xudmFyIHJl
bmRlclN1YnRyZWVJbnRvQ29udGFpbmVyID0gcmVxdWlyZSgnLi9yZW5kZXJTdWJ0cmVlSW50b0Nv
bnRhaW5lcicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5c
blJlYWN0RGVmYXVsdEluamVjdGlvbi5pbmplY3QoKTtcblxudmFyIFJlYWN0RE9NID0ge1xuICBm
aW5kRE9NTm9kZTogZmluZERPTU5vZGUsXG4gIHJlbmRlcjogUmVhY3RNb3VudC5yZW5kZXIsXG4g
IHVubW91bnRDb21wb25lbnRBdE5vZGU6IFJlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9k
ZSxcbiAgdmVyc2lvbjogUmVhY3RWZXJzaW9uLFxuXG4gIC8qIGVzbGludC1kaXNhYmxlIGNhbWVs
Y2FzZSAqL1xuICB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlczogUmVhY3RVcGRhdGVzLmJhdGNoZWRV
cGRhdGVzLFxuICB1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjogcmVuZGVyU3Vi
dHJlZUludG9Db250YWluZXJcbiAgLyogZXNsaW50LWVuYWJsZSBjYW1lbGNhc2UgKi9cbn07XG5c
bi8vIEluamVjdCB0aGUgcnVudGltZSBpbnRvIGEgZGV2dG9vbHMgZ2xvYmFsIGhvb2sgcmVnYXJk
bGVzcyBvZiBicm93c2VyLlxuLy8gQWxsb3dzIGZvciBkZWJ1Z2dpbmcgd2hlbiB0aGUgaG9vayBp
cyBpbmplY3RlZCBvbiB0aGUgcGFnZS5cbmlmICh0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9C
QUxfSE9PS19fICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9C
QUxfSE9PS19fLmluamVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICBfX1JFQUNUX0RFVlRPT0xTX0dM
T0JBTF9IT09LX18uaW5qZWN0KHtcbiAgICBDb21wb25lbnRUcmVlOiB7XG4gICAgICBnZXRDbG9z
ZXN0SW5zdGFuY2VGcm9tTm9kZTogUmVhY3RET01Db21wb25lbnRUcmVlLmdldENsb3Nlc3RJbnN0
YW5jZUZyb21Ob2RlLFxuICAgICAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZnVuY3Rpb24gKGluc3Qp
IHtcbiAgICAgICAgLy8gaW5zdCBpcyBhbiBpbnRlcm5hbCBpbnN0YW5jZSAoYnV0IGNvdWxkIGJl
IGEgY29tcG9zaXRlKVxuICAgICAgICBpZiAoaW5zdC5fcmVuZGVyZWRDb21wb25lbnQpIHtcbiAg
ICAgICAgICBpbnN0ID0gZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUoaW5zdCk7XG4gICAg
ICAgIH1cbiAgICAgICAgaWYgKGluc3QpIHtcbiAgICAgICAgICByZXR1cm4gUmVhY3RET01Db21w
b25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG4gICAgICAgIH0gZWxzZSB7XG4g
ICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE1v
dW50OiBSZWFjdE1vdW50LFxuICAgIFJlY29uY2lsZXI6IFJlYWN0UmVjb25jaWxlclxuICB9KTtc
bn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFy
IEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJv
bm1lbnQnKTtcbiAgaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiB3aW5kb3cu
dG9wID09PSB3aW5kb3cuc2VsZikge1xuICAgIC8vIEZpcnN0IGNoZWNrIGlmIGRldnRvb2xzIGlz
IG5vdCBpbnN0YWxsZWRcbiAgICBpZiAodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hP
T0tfXyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIElmIHdlJ3JlIGluIENocm9tZSBvciBG
aXJlZm94LCBwcm92aWRlIGEgZG93bmxvYWQgbGluayBpZiBub3QgaW5zdGFsbGVkLlxuICAgICAg
aWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignQ2hyb21lJykgPiAtMSAmJiBuYXZpZ2F0
b3IudXNlckFnZW50LmluZGV4T2YoJ0VkZ2UnKSA9PT0gLTEgfHwgbmF2aWdhdG9yLnVzZXJBZ2Vu
dC5pbmRleE9mKCdGaXJlZm94JykgPiAtMSkge1xuICAgICAgICAvLyBGaXJlZm94IGRvZXMgbm90
IGhhdmUgdGhlIGlzc3VlIHdpdGggZGV2dG9vbHMgbG9hZGVkIG92ZXIgZmlsZTovL1xuICAgICAg
ICB2YXIgc2hvd0ZpbGVVcmxNZXNzYWdlID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sLmluZGV4
T2YoJ2h0dHAnKSA9PT0gLTEgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdGaXJlZm94
JykgPT09IC0xO1xuICAgICAgICBjb25zb2xlLmRlYnVnKCdEb3dubG9hZCB0aGUgUmVhY3QgRGV2
VG9vbHMgJyArIChzaG93RmlsZVVybE1lc3NhZ2UgPyAnYW5kIHVzZSBhbiBIVFRQIHNlcnZlciAo
aW5zdGVhZCBvZiBhIGZpbGU6IFVSTCkgJyA6ICcnKSArICdmb3IgYSBiZXR0ZXIgZGV2ZWxvcG1l
bnQgZXhwZXJpZW5jZTogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWRldnRvb2xzJyk7XG4gICAg
ICB9XG4gICAgfVxuXG4gICAgdmFyIHRlc3RGdW5jID0gZnVuY3Rpb24gdGVzdEZuKCkge307XG4g
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoKHRlc3RG
dW5jLm5hbWUgfHwgdGVzdEZ1bmMudG9TdHJpbmcoKSkuaW5kZXhPZigndGVzdEZuJykgIT09IC0x
LCBcIkl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIGEgbWluaWZpZWQgY29weSBvZiB0aGUgZGV2
ZWxvcG1lbnQgYnVpbGQgXCIgKyAnb2YgUmVhY3QuIFdoZW4gZGVwbG95aW5nIFJlYWN0IGFwcHMg
dG8gcHJvZHVjdGlvbiwgbWFrZSBzdXJlIHRvIHVzZSAnICsgJ3RoZSBwcm9kdWN0aW9uIGJ1aWxk
IHdoaWNoIHNraXBzIGRldmVsb3BtZW50IHdhcm5pbmdzIGFuZCBpcyBmYXN0ZXIuICcgKyAnU2Vl
IGh0dHBzOi8vZmIubWUvcmVhY3QtbWluaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuJykgOiB2
b2lkIDA7XG5cbiAgICAvLyBJZiB3ZSdyZSBpbiBJRTgsIGNoZWNrIHRvIHNlZSBpZiB3ZSBhcmUg
aW4gY29tcGF0aWJpbGl0eSBtb2RlIGFuZCBwcm92aWRlXG4gICAgLy8gaW5mb3JtYXRpb24gb24g
cHJldmVudGluZyBjb21wYXRpYmlsaXR5IG1vZGVcbiAgICB2YXIgaWVDb21wYXRpYmlsaXR5TW9k
ZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZSAmJiBkb2N1bWVudC5kb2N1bWVudE1vZGUgPCA4O1xu
XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWll
Q29tcGF0aWJpbGl0eU1vZGUsICdJbnRlcm5ldCBFeHBsb3JlciBpcyBydW5uaW5nIGluIGNvbXBh
dGliaWxpdHkgbW9kZTsgcGxlYXNlIGFkZCB0aGUgJyArICdmb2xsb3dpbmcgdGFnIHRvIHlvdXIg
SFRNTCB0byBwcmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmc6ICcgKyAnPG1ldGEgaHR0cC1lcXVp
dj1cIlgtVUEtQ29tcGF0aWJsZVwiIGNvbnRlbnQ9XCJJRT1lZGdlXCIgLz4nKSA6IHZvaWQgMDtc
blxuICAgIHZhciBleHBlY3RlZEZlYXR1cmVzID0gW1xuICAgIC8vIHNoaW1zXG4gICAgQXJyYXku
aXNBcnJheSwgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LCBBcnJheS5wcm90b3R5cGUuZm9yRWFjaCwg
QXJyYXkucHJvdG90eXBlLmluZGV4T2YsIEFycmF5LnByb3RvdHlwZS5tYXAsIERhdGUubm93LCBG
dW5jdGlvbi5wcm90b3R5cGUuYmluZCwgT2JqZWN0LmtleXMsIFN0cmluZy5wcm90b3R5cGUudHJp
bV07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkRmVhdHVyZXMubGVuZ3RoOyBp
KyspIHtcbiAgICAgIGlmICghZXhwZWN0ZWRGZWF0dXJlc1tpXSkge1xuICAgICAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ09uZSBvciBt
b3JlIEVTNSBzaGltcyBleHBlY3RlZCBieSBSZWFjdCBhcmUgbm90IGF2YWlsYWJsZTogJyArICdo
dHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmctcG9seWZpbGxzJykgOiB2b2lkIDA7XG4gICAgICAg
IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1
aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG4gIHZhciBSZWFjdERPTVVua25vd25Qcm9w
ZXJ0eUhvb2sgPSByZXF1aXJlKCcuL1JlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vaycpO1xuICB2
YXIgUmVhY3RET01OdWxsSW5wdXRWYWx1ZVByb3BIb29rID0gcmVxdWlyZSgnLi9SZWFjdERPTU51
bGxJbnB1dFZhbHVlUHJvcEhvb2snKTtcbiAgdmFyIFJlYWN0RE9NSW52YWxpZEFSSUFIb29rID0g
cmVxdWlyZSgnLi9SZWFjdERPTUludmFsaWRBUklBSG9vaycpO1xuXG4gIFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5hZGRIb29rKFJlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vayk7XG4g
IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5hZGRIb29rKFJlYWN0RE9NTnVsbElucHV0
VmFsdWVQcm9wSG9vayk7XG4gIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5hZGRIb29r
KFJlYWN0RE9NSW52YWxpZEFSSUFIb29rKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERP
TTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1kb20vbGliL1JlYWN0RE9NLmpzXG4gKiogbW9kdWxlIGlkID0gMTM3XG4gKiogbW9kdWxl
IGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuLyog
Z2xvYmFsIGhhc093blByb3BlcnR5OnRydWUgKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3By
b2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpLFxuICAgIF9hc3Np
Z24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBBdXRvRm9jdXNVdGlscyA9IHJl
cXVpcmUoJy4vQXV0b0ZvY3VzVXRpbHMnKTtcbnZhciBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMgPSBy
ZXF1aXJlKCcuL0NTU1Byb3BlcnR5T3BlcmF0aW9ucycpO1xudmFyIERPTUxhenlUcmVlID0gcmVx
dWlyZSgnLi9ET01MYXp5VHJlZScpO1xudmFyIERPTU5hbWVzcGFjZXMgPSByZXF1aXJlKCcuL0RP
TU5hbWVzcGFjZXMnKTtcbnZhciBET01Qcm9wZXJ0eSA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHkn
KTtcbnZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5T3Bl
cmF0aW9ucycpO1xudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpbkh1
YicpO1xudmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luUmVn
aXN0cnknKTtcbnZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCcuL1JlYWN0
QnJvd3NlckV2ZW50RW1pdHRlcicpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3MgPSByZXF1
aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50RmxhZ3MnKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRy
ZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0RE9NSW5w
dXQgPSByZXF1aXJlKCcuL1JlYWN0RE9NSW5wdXQnKTtcbnZhciBSZWFjdERPTU9wdGlvbiA9IHJl
cXVpcmUoJy4vUmVhY3RET01PcHRpb24nKTtcbnZhciBSZWFjdERPTVNlbGVjdCA9IHJlcXVpcmUo
Jy4vUmVhY3RET01TZWxlY3QnKTtcbnZhciBSZWFjdERPTVRleHRhcmVhID0gcmVxdWlyZSgnLi9S
ZWFjdERPTVRleHRhcmVhJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcu
L1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG52YXIgUmVhY3RNdWx0aUNoaWxkID0gcmVxdWlyZSgn
Li9SZWFjdE11bHRpQ2hpbGQnKTtcbnZhciBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9u
ID0gcmVxdWlyZSgnLi9SZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uJyk7XG5cbnZhciBl
bXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIGVz
Y2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IHJlcXVpcmUoJy4vZXNjYXBlVGV4dENvbnRlbnRG
b3JCcm93c2VyJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50
Jyk7XG52YXIgaXNFdmVudFN1cHBvcnRlZCA9IHJlcXVpcmUoJy4vaXNFdmVudFN1cHBvcnRlZCcp
O1xudmFyIHNoYWxsb3dFcXVhbCA9IHJlcXVpcmUoJ2ZianMvbGliL3NoYWxsb3dFcXVhbCcpO1xu
dmFyIGlucHV0VmFsdWVUcmFja2luZyA9IHJlcXVpcmUoJy4vaW5wdXRWYWx1ZVRyYWNraW5nJyk7
XG52YXIgdmFsaWRhdGVET01OZXN0aW5nID0gcmVxdWlyZSgnLi92YWxpZGF0ZURPTU5lc3Rpbmcn
KTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgRmxh
Z3MgPSBSZWFjdERPTUNvbXBvbmVudEZsYWdzO1xudmFyIGRlbGV0ZUxpc3RlbmVyID0gRXZlbnRQ
bHVnaW5IdWIuZGVsZXRlTGlzdGVuZXI7XG52YXIgZ2V0Tm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50
VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlO1xudmFyIGxpc3RlblRvID0gUmVhY3RCcm93c2VyRXZl
bnRFbWl0dGVyLmxpc3RlblRvO1xudmFyIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzID0gRXZlbnRQ
bHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcztcblxuLy8gRm9yIHF1aWNrbHkg
bWF0Y2hpbmcgY2hpbGRyZW4gdHlwZSwgdG8gdGVzdCBpZiBjYW4gYmUgdHJlYXRlZCBhcyBjb250
ZW50LlxudmFyIENPTlRFTlRfVFlQRVMgPSB7IHN0cmluZzogdHJ1ZSwgbnVtYmVyOiB0cnVlIH07
XG5cbnZhciBTVFlMRSA9ICdzdHlsZSc7XG52YXIgSFRNTCA9ICdfX2h0bWwnO1xudmFyIFJFU0VS
VkVEX1BST1BTID0ge1xuICBjaGlsZHJlbjogbnVsbCxcbiAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhU
TUw6IG51bGwsXG4gIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZzogbnVsbFxufTtcblxu
Ly8gTm9kZSB0eXBlIGZvciBkb2N1bWVudCBmcmFnbWVudHMgKE5vZGUuRE9DVU1FTlRfRlJBR01F
TlRfTk9ERSkuXG52YXIgRE9DX0ZSQUdNRU5UX1RZUEUgPSAxMTtcblxuZnVuY3Rpb24gZ2V0RGVj
bGFyYXRpb25FcnJvckFkZGVuZHVtKGludGVybmFsSW5zdGFuY2UpIHtcbiAgaWYgKGludGVybmFs
SW5zdGFuY2UpIHtcbiAgICB2YXIgb3duZXIgPSBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxl
bWVudC5fb3duZXIgfHwgbnVsbDtcbiAgICBpZiAob3duZXIpIHtcbiAgICAgIHZhciBuYW1lID0g
b3duZXIuZ2V0TmFtZSgpO1xuICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuICcgVGhp
cyBET00gbm9kZSB3YXMgcmVuZGVyZWQgYnkgYCcgKyBuYW1lICsgJ2AuJztcbiAgICAgIH1cbiAg
ICB9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBmcmllbmRseVN0cmluZ2lmeShv
YmopIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKEFycmF5Lmlz
QXJyYXkob2JqKSkge1xuICAgICAgcmV0dXJuICdbJyArIG9iai5tYXAoZnJpZW5kbHlTdHJpbmdp
ZnkpLmpvaW4oJywgJykgKyAnXSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYWlycyA9IFtd
O1xuICAgICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgIHZhciBrZXlF
c2NhcGVkID0gL15bYS16JF9dW1xcdyRfXSokL2kudGVzdChrZXkpID8ga2V5IDogSlNPTi5zdHJp
bmdpZnkoa2V5KTtcbiAgICAgICAgICBwYWlycy5wdXNoKGtleUVzY2FwZWQgKyAnOiAnICsgZnJp
ZW5kbHlTdHJpbmdpZnkob2JqW2tleV0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0
dXJuICd7JyArIHBhaXJzLmpvaW4oJywgJykgKyAnfSc7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5
cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaik7
XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiAn
W2Z1bmN0aW9uIG9iamVjdF0nO1xuICB9XG4gIC8vIERpZmZlcnMgZnJvbSBKU09OLnN0cmluZ2lm
eSBpbiB0aGF0IHVuZGVmaW5lZCBiZWNhdXNlIHVuZGVmaW5lZCBhbmQgdGhhdFxuICAvLyBpbmYg
YW5kIG5hbiBkb24ndCBiZWNvbWUgbnVsbFxuICByZXR1cm4gU3RyaW5nKG9iaik7XG59XG5cbnZh
ciBzdHlsZU11dGF0aW9uV2FybmluZyA9IHt9O1xuXG5mdW5jdGlvbiBjaGVja0FuZFdhcm5Gb3JN
dXRhdGVkU3R5bGUoc3R5bGUxLCBzdHlsZTIsIGNvbXBvbmVudCkge1xuICBpZiAoc3R5bGUxID09
IG51bGwgfHwgc3R5bGUyID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHNoYWxs
b3dFcXVhbChzdHlsZTEsIHN0eWxlMikpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgY29t
cG9uZW50TmFtZSA9IGNvbXBvbmVudC5fdGFnO1xuICB2YXIgb3duZXIgPSBjb21wb25lbnQuX2N1
cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgdmFyIG93bmVyTmFtZTtcbiAgaWYgKG93bmVyKSB7XG4g
ICAgb3duZXJOYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICB9XG5cbiAgdmFyIGhhc2ggPSBvd25l
ck5hbWUgKyAnfCcgKyBjb21wb25lbnROYW1lO1xuXG4gIGlmIChzdHlsZU11dGF0aW9uV2Fybmlu
Zy5oYXNPd25Qcm9wZXJ0eShoYXNoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0eWxlTXV0
YXRpb25XYXJuaW5nW2hhc2hdID0gdHJ1ZTtcblxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2Alc2Agd2FzIHBhc3NlZCBhIHN0eWxlIG9i
amVjdCB0aGF0IGhhcyBwcmV2aW91c2x5IGJlZW4gbXV0YXRlZC4gJyArICdNdXRhdGluZyBgc3R5
bGVgIGlzIGRlcHJlY2F0ZWQuIENvbnNpZGVyIGNsb25pbmcgaXQgYmVmb3JlaGFuZC4gQ2hlY2sg
JyArICd0aGUgYHJlbmRlcmAgJXMuIFByZXZpb3VzIHN0eWxlOiAlcy4gTXV0YXRlZCBzdHlsZTog
JXMuJywgY29tcG9uZW50TmFtZSwgb3duZXIgPyAnb2YgYCcgKyBvd25lck5hbWUgKyAnYCcgOiAn
dXNpbmcgPCcgKyBjb21wb25lbnROYW1lICsgJz4nLCBmcmllbmRseVN0cmluZ2lmeShzdHlsZTEp
LCBmcmllbmRseVN0cmluZ2lmeShzdHlsZTIpKSA6IHZvaWQgMDtcbn1cblxuLyoqXG4gKiBAcGFy
YW0ge29iamVjdH0gY29tcG9uZW50XG4gKiBAcGFyYW0gez9vYmplY3R9IHByb3BzXG4gKi9cbmZ1
bmN0aW9uIGFzc2VydFZhbGlkUHJvcHMoY29tcG9uZW50LCBwcm9wcykge1xuICBpZiAoIXByb3Bz
KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIE5vdGUgdGhlIHVzZSBvZiBgPT1gIHdoaWNoIGNo
ZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWQuXG4gIGlmICh2b2lkRWxlbWVudFRhZ3NbY29tcG9u
ZW50Ll90YWddKSB7XG4gICAgIShwcm9wcy5jaGlsZHJlbiA9PSBudWxsICYmIHByb3BzLmRhbmdl
cm91c2x5U2V0SW5uZXJIVE1MID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzIGlzIGEgdm9pZCBlbGVtZW50IHRhZyBh
bmQgbXVzdCBuZWl0aGVyIGhhdmUgYGNoaWxkcmVuYCBub3IgdXNlIGBkYW5nZXJvdXNseVNldElu
bmVySFRNTGAuJXMnLCBjb21wb25lbnQuX3RhZywgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5f
b3duZXIgPyAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICcgKyBjb21wb25lbnQuX2N1cnJl
bnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkgKyAnLicgOiAnJykgOiBfcHJvZEludmFyaWFudCgn
MTM3JywgY29tcG9uZW50Ll90YWcsIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyID8g
JyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAnICsgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVu
dC5fb3duZXIuZ2V0TmFtZSgpICsgJy4nIDogJycpIDogdm9pZCAwO1xuICB9XG4gIGlmIChwcm9w
cy5kYW5nZXJvdXNseVNldElubmVySFRNTCAhPSBudWxsKSB7XG4gICAgIShwcm9wcy5jaGlsZHJl
biA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICdDYW4gb25seSBzZXQgb25lIG9mIGBjaGlsZHJlbmAgb3IgYHByb3BzLmRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MYC4nKSA6IF9wcm9kSW52YXJpYW50KCc2MCcpIDogdm9pZCAw
O1xuICAgICEodHlwZW9mIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09PSAnb2JqZWN0
JyAmJiBIVE1MIGluIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdgcHJvcHMuZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUxgIG11c3QgYmUgaW4gdGhlIGZvcm0gYHtfX2h0bWw6IC4uLn1g
LiBQbGVhc2UgdmlzaXQgaHR0cHM6Ly9mYi5tZS9yZWFjdC1pbnZhcmlhbnQtZGFuZ2Vyb3VzbHkt
c2V0LWlubmVyLWh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykgOiBfcHJvZEludmFyaWFudCgn
NjEnKSA6IHZvaWQgMDtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKHByb3BzLmlubmVySFRNTCA9PSBudWxsLCAnRGlyZWN0bHkgc2V0dGluZyBwcm9wZXJ0
eSBgaW5uZXJIVE1MYCBpcyBub3QgcGVybWl0dGVkLiAnICsgJ0ZvciBtb3JlIGluZm9ybWF0aW9u
LCBsb29rdXAgZG9jdW1lbnRhdGlvbiBvbiBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLicpIDog
dm9pZCAwO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKHByb3BzLnN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyB8fCAhcHJvcHMuY29udGVu
dEVkaXRhYmxlIHx8IHByb3BzLmNoaWxkcmVuID09IG51bGwsICdBIGNvbXBvbmVudCBpcyBgY29u
dGVudEVkaXRhYmxlYCBhbmQgY29udGFpbnMgYGNoaWxkcmVuYCBtYW5hZ2VkIGJ5ICcgKyAnUmVh
Y3QuIEl0IGlzIG5vdyB5b3VyIHJlc3BvbnNpYmlsaXR5IHRvIGd1YXJhbnRlZSB0aGF0IG5vbmUg
b2YgJyArICd0aG9zZSBub2RlcyBhcmUgdW5leHBlY3RlZGx5IG1vZGlmaWVkIG9yIGR1cGxpY2F0
ZWQuIFRoaXMgaXMgJyArICdwcm9iYWJseSBub3QgaW50ZW50aW9uYWwuJykgOiB2b2lkIDA7XG4g
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMu
b25Gb2N1c0luID09IG51bGwgJiYgcHJvcHMub25Gb2N1c091dCA9PSBudWxsLCAnUmVhY3QgdXNl
cyBvbkZvY3VzIGFuZCBvbkJsdXIgaW5zdGVhZCBvZiBvbkZvY3VzSW4gYW5kIG9uRm9jdXNPdXQu
ICcgKyAnQWxsIFJlYWN0IGV2ZW50cyBhcmUgbm9ybWFsaXplZCB0byBidWJibGUsIHNvIG9uRm9j
dXNJbiBhbmQgb25Gb2N1c091dCAnICsgJ2FyZSBub3QgbmVlZGVkL3N1cHBvcnRlZCBieSBSZWFj
dC4nKSA6IHZvaWQgMDtcbiAgfVxuICAhKHByb3BzLnN0eWxlID09IG51bGwgfHwgdHlwZW9mIHBy
b3BzLnN0eWxlID09PSAnb2JqZWN0JykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVGhlIGBzdHlsZWAgcHJvcCBleHBlY3RzIGEgbWFw
cGluZyBmcm9tIHN0eWxlIHByb3BlcnRpZXMgdG8gdmFsdWVzLCBub3QgYSBzdHJpbmcuIEZvciBl
eGFtcGxlLCBzdHlsZT17e21hcmdpblJpZ2h0OiBzcGFjaW5nICsgXFwnZW1cXCd9fSB3aGVuIHVz
aW5nIEpTWC4lcycsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IF9w
cm9kSW52YXJpYW50KCc2MicsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQp
KSA6IHZvaWQgMDtcbn1cblxuZnVuY3Rpb24gZW5xdWV1ZVB1dExpc3RlbmVyKGluc3QsIHJlZ2lz
dHJhdGlvbk5hbWUsIGxpc3RlbmVyLCB0cmFuc2FjdGlvbikge1xuICBpZiAodHJhbnNhY3Rpb24g
aW5zdGFuY2VvZiBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uKSB7XG4gICAgcmV0dXJu
O1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgLy8gSUU4IGhhcyBubyBBUEkgZm9yIGV2ZW50IGNhcHR1cmluZyBhbmQgdGhlIGBvblNjcm9s
bGAgZXZlbnQgZG9lc24ndFxuICAgIC8vIGJ1YmJsZS5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhyZWdpc3RyYXRpb25OYW1lICE9PSAnb25TY3Jv
bGwnIHx8IGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9sbCcsIHRydWUpLCBcIlRoaXMgYnJvd3NlciBk
b2Vzbid0IHN1cHBvcnQgdGhlIGBvblNjcm9sbGAgZXZlbnRcIikgOiB2b2lkIDA7XG4gIH1cbiAg
dmFyIGNvbnRhaW5lckluZm8gPSBpbnN0Ll9ob3N0Q29udGFpbmVySW5mbztcbiAgdmFyIGlzRG9j
dW1lbnRGcmFnbWVudCA9IGNvbnRhaW5lckluZm8uX25vZGUgJiYgY29udGFpbmVySW5mby5fbm9k
ZS5ub2RlVHlwZSA9PT0gRE9DX0ZSQUdNRU5UX1RZUEU7XG4gIHZhciBkb2MgPSBpc0RvY3VtZW50
RnJhZ21lbnQgPyBjb250YWluZXJJbmZvLl9ub2RlIDogY29udGFpbmVySW5mby5fb3duZXJEb2N1
bWVudDtcbiAgbGlzdGVuVG8ocmVnaXN0cmF0aW9uTmFtZSwgZG9jKTtcbiAgdHJhbnNhY3Rpb24u
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwdXRMaXN0ZW5lciwge1xuICAgIGluc3Q6IGlu
c3QsXG4gICAgcmVnaXN0cmF0aW9uTmFtZTogcmVnaXN0cmF0aW9uTmFtZSxcbiAgICBsaXN0ZW5l
cjogbGlzdGVuZXJcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHB1dExpc3RlbmVyKCkge1xuICB2YXIg
bGlzdGVuZXJUb1B1dCA9IHRoaXM7XG4gIEV2ZW50UGx1Z2luSHViLnB1dExpc3RlbmVyKGxpc3Rl
bmVyVG9QdXQuaW5zdCwgbGlzdGVuZXJUb1B1dC5yZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lclRv
UHV0Lmxpc3RlbmVyKTtcbn1cblxuZnVuY3Rpb24gaW5wdXRQb3N0TW91bnQoKSB7XG4gIHZhciBp
bnN0ID0gdGhpcztcbiAgUmVhY3RET01JbnB1dC5wb3N0TW91bnRXcmFwcGVyKGluc3QpO1xufVxu
XG5mdW5jdGlvbiB0ZXh0YXJlYVBvc3RNb3VudCgpIHtcbiAgdmFyIGluc3QgPSB0aGlzO1xuICBS
ZWFjdERPTVRleHRhcmVhLnBvc3RNb3VudFdyYXBwZXIoaW5zdCk7XG59XG5cbmZ1bmN0aW9uIG9w
dGlvblBvc3RNb3VudCgpIHtcbiAgdmFyIGluc3QgPSB0aGlzO1xuICBSZWFjdERPTU9wdGlvbi5w
b3N0TW91bnRXcmFwcGVyKGluc3QpO1xufVxuXG52YXIgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hp
bGREZXYgPSBlbXB0eUZ1bmN0aW9uO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYgPSBmdW5jdGlvbiAo
Y29udGVudCkge1xuICAgIHZhciBoYXNFeGlzdGluZ0NvbnRlbnQgPSB0aGlzLl9jb250ZW50RGVi
dWdJRCAhPSBudWxsO1xuICAgIHZhciBkZWJ1Z0lEID0gdGhpcy5fZGVidWdJRDtcbiAgICAvLyBU
aGlzIElEIHJlcHJlc2VudHMgdGhlIGlubGluZWQgY2hpbGQgdGhhdCBoYXMgbm8gYmFja2luZyBp
bnN0YW5jZTpcbiAgICB2YXIgY29udGVudERlYnVnSUQgPSAtZGVidWdJRDtcblxuICAgIGlmIChj
b250ZW50ID09IG51bGwpIHtcbiAgICAgIGlmIChoYXNFeGlzdGluZ0NvbnRlbnQpIHtcbiAgICAg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVW5tb3VudENvbXBvbmVudCh0aGlz
Ll9jb250ZW50RGVidWdJRCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9jb250ZW50RGVidWdJRCA9
IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFsaWRhdGVET01OZXN0aW5nKG51
bGwsIFN0cmluZyhjb250ZW50KSwgdGhpcywgdGhpcy5fYW5jZXN0b3JJbmZvKTtcbiAgICB0aGlz
Ll9jb250ZW50RGVidWdJRCA9IGNvbnRlbnREZWJ1Z0lEO1xuICAgIGlmIChoYXNFeGlzdGluZ0Nv
bnRlbnQpIHtcbiAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZVVw
ZGF0ZUNvbXBvbmVudChjb250ZW50RGVidWdJRCwgY29udGVudCk7XG4gICAgICBSZWFjdEluc3Ry
dW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25VcGRhdGVDb21wb25lbnQoY29udGVudERlYnVnSUQpO1xu
ICAgIH0gZWxzZSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZv
cmVNb3VudENvbXBvbmVudChjb250ZW50RGVidWdJRCwgY29udGVudCwgZGVidWdJRCk7XG4gICAg
ICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Nb3VudENvbXBvbmVudChjb250ZW50
RGVidWdJRCk7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25TZXRDaGls
ZHJlbihkZWJ1Z0lELCBbY29udGVudERlYnVnSURdKTtcbiAgICB9XG4gIH07XG59XG5cbi8vIFRo
ZXJlIGFyZSBzbyBtYW55IG1lZGlhIGV2ZW50cywgaXQgbWFrZXMgc2Vuc2UgdG8ganVzdFxuLy8g
bWFpbnRhaW4gYSBsaXN0IHJhdGhlciB0aGFuIGNyZWF0ZSBhIGB0cmFwQnViYmxlZEV2ZW50YCBm
b3IgZWFjaFxudmFyIG1lZGlhRXZlbnRzID0ge1xuICB0b3BBYm9ydDogJ2Fib3J0JyxcbiAgdG9w
Q2FuUGxheTogJ2NhbnBsYXknLFxuICB0b3BDYW5QbGF5VGhyb3VnaDogJ2NhbnBsYXl0aHJvdWdo
JyxcbiAgdG9wRHVyYXRpb25DaGFuZ2U6ICdkdXJhdGlvbmNoYW5nZScsXG4gIHRvcEVtcHRpZWQ6
ICdlbXB0aWVkJyxcbiAgdG9wRW5jcnlwdGVkOiAnZW5jcnlwdGVkJyxcbiAgdG9wRW5kZWQ6ICdl
bmRlZCcsXG4gIHRvcEVycm9yOiAnZXJyb3InLFxuICB0b3BMb2FkZWREYXRhOiAnbG9hZGVkZGF0
YScsXG4gIHRvcExvYWRlZE1ldGFkYXRhOiAnbG9hZGVkbWV0YWRhdGEnLFxuICB0b3BMb2FkU3Rh
cnQ6ICdsb2Fkc3RhcnQnLFxuICB0b3BQYXVzZTogJ3BhdXNlJyxcbiAgdG9wUGxheTogJ3BsYXkn
LFxuICB0b3BQbGF5aW5nOiAncGxheWluZycsXG4gIHRvcFByb2dyZXNzOiAncHJvZ3Jlc3MnLFxu
ICB0b3BSYXRlQ2hhbmdlOiAncmF0ZWNoYW5nZScsXG4gIHRvcFNlZWtlZDogJ3NlZWtlZCcsXG4g
IHRvcFNlZWtpbmc6ICdzZWVraW5nJyxcbiAgdG9wU3RhbGxlZDogJ3N0YWxsZWQnLFxuICB0b3BT
dXNwZW5kOiAnc3VzcGVuZCcsXG4gIHRvcFRpbWVVcGRhdGU6ICd0aW1ldXBkYXRlJyxcbiAgdG9w
Vm9sdW1lQ2hhbmdlOiAndm9sdW1lY2hhbmdlJyxcbiAgdG9wV2FpdGluZzogJ3dhaXRpbmcnXG59
O1xuXG5mdW5jdGlvbiB0cmFja0lucHV0VmFsdWUoKSB7XG4gIGlucHV0VmFsdWVUcmFja2luZy50
cmFjayh0aGlzKTtcbn1cblxuZnVuY3Rpb24gdHJhcEJ1YmJsZWRFdmVudHNMb2NhbCgpIHtcbiAg
dmFyIGluc3QgPSB0aGlzO1xuICAvLyBJZiBhIGNvbXBvbmVudCByZW5kZXJzIHRvIG51bGwgb3Ig
aWYgYW5vdGhlciBjb21wb25lbnQgZmF0YWxzIGFuZCBjYXVzZXNcbiAgLy8gdGhlIHN0YXRlIG9m
IHRoZSB0cmVlIHRvIGJlIGNvcnJ1cHRlZCwgYG5vZGVgIGhlcmUgY2FuIGJlIG51bGwuXG4gICFp
bnN0Ll9yb290Tm9kZUlEID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ011c3QgYmUgbW91bnRlZCB0byB0cmFwIGV2ZW50cycpIDogX3By
b2RJbnZhcmlhbnQoJzYzJykgOiB2b2lkIDA7XG4gIHZhciBub2RlID0gZ2V0Tm9kZShpbnN0KTtc
biAgIW5vZGUgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAndHJhcEJ1YmJsZWRFdmVudCguLi4pOiBSZXF1aXJlcyBub2RlIHRvIGJlIHJl
bmRlcmVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzY0JykgOiB2b2lkIDA7XG5cbiAgc3dpdGNoIChp
bnN0Ll90YWcpIHtcbiAgICBjYXNlICdpZnJhbWUnOlxuICAgIGNhc2UgJ29iamVjdCc6XG4gICAg
ICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ci50cmFwQnViYmxlZEV2ZW50KCd0b3BMb2FkJywgJ2xvYWQnLCBub2RlKV07XG4gICAgICBicmVh
aztcbiAgICBjYXNlICd2aWRlbyc6XG4gICAgY2FzZSAnYXVkaW8nOlxuICAgICAgaW5zdC5fd3Jh
cHBlclN0YXRlLmxpc3RlbmVycyA9IFtdO1xuICAgICAgLy8gQ3JlYXRlIGxpc3RlbmVyIGZvciBl
YWNoIG1lZGlhIGV2ZW50XG4gICAgICBmb3IgKHZhciBldmVudCBpbiBtZWRpYUV2ZW50cykge1xu
ICAgICAgICBpZiAobWVkaWFFdmVudHMuaGFzT3duUHJvcGVydHkoZXZlbnQpKSB7XG4gICAgICAg
ICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycy5wdXNoKFJlYWN0QnJvd3NlckV2ZW50RW1p
dHRlci50cmFwQnViYmxlZEV2ZW50KGV2ZW50LCBtZWRpYUV2ZW50c1tldmVudF0sIG5vZGUpKTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc291cmNlJzpcbiAg
ICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0
dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEVycm9yJywgJ2Vycm9yJywgbm9kZSldO1xuICAgICAg
YnJlYWs7XG4gICAgY2FzZSAnaW1nJzpcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5l
cnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEVycm9y
JywgJ2Vycm9yJywgbm9kZSksIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2
ZW50KCd0b3BMb2FkJywgJ2xvYWQnLCBub2RlKV07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdm
b3JtJzpcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2Vy
RXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFJlc2V0JywgJ3Jlc2V0Jywgbm9kZSks
IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BTdWJtaXQnLCAn
c3VibWl0Jywgbm9kZSldO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnaW5wdXQnOlxuICAgIGNh
c2UgJ3NlbGVjdCc6XG4gICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgaW5zdC5fd3JhcHBlclN0
YXRlLmxpc3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVu
dCgndG9wSW52YWxpZCcsICdpbnZhbGlkJywgbm9kZSldO1xuICAgICAgYnJlYWs7XG4gIH1cbn1c
blxuZnVuY3Rpb24gcG9zdFVwZGF0ZVNlbGVjdFdyYXBwZXIoKSB7XG4gIFJlYWN0RE9NU2VsZWN0
LnBvc3RVcGRhdGVXcmFwcGVyKHRoaXMpO1xufVxuXG4vLyBGb3IgSFRNTCwgY2VydGFpbiB0YWdz
IHNob3VsZCBvbWl0IHRoZWlyIGNsb3NlIHRhZy4gV2Uga2VlcCBhIHdoaXRlbGlzdCBmb3Jcbi8v
IHRob3NlIHNwZWNpYWwtY2FzZSB0YWdzLlxuXG52YXIgb21pdHRlZENsb3NlVGFncyA9IHtcbiAg
YXJlYTogdHJ1ZSxcbiAgYmFzZTogdHJ1ZSxcbiAgYnI6IHRydWUsXG4gIGNvbDogdHJ1ZSxcbiAg
ZW1iZWQ6IHRydWUsXG4gIGhyOiB0cnVlLFxuICBpbWc6IHRydWUsXG4gIGlucHV0OiB0cnVlLFxu
ICBrZXlnZW46IHRydWUsXG4gIGxpbms6IHRydWUsXG4gIG1ldGE6IHRydWUsXG4gIHBhcmFtOiB0
cnVlLFxuICBzb3VyY2U6IHRydWUsXG4gIHRyYWNrOiB0cnVlLFxuICB3YnI6IHRydWVcbiAgLy8g
Tk9URTogbWVudWl0ZW0ncyBjbG9zZSB0YWcgc2hvdWxkIGJlIG9taXR0ZWQsIGJ1dCB0aGF0IGNh
dXNlcyBwcm9ibGVtcy5cbn07XG5cbnZhciBuZXdsaW5lRWF0aW5nVGFncyA9IHtcbiAgbGlzdGlu
ZzogdHJ1ZSxcbiAgcHJlOiB0cnVlLFxuICB0ZXh0YXJlYTogdHJ1ZVxufTtcblxuLy8gRm9yIEhU
TUwsIGNlcnRhaW4gdGFncyBjYW5ub3QgaGF2ZSBjaGlsZHJlbi4gVGhpcyBoYXMgdGhlIHNhbWUg
cHVycG9zZSBhc1xuLy8gYG9taXR0ZWRDbG9zZVRhZ3NgIGV4Y2VwdCB0aGF0IGBtZW51aXRlbWAg
c2hvdWxkIHN0aWxsIGhhdmUgaXRzIGNsb3NpbmcgdGFnLlxuXG52YXIgdm9pZEVsZW1lbnRUYWdz
ID0gX2Fzc2lnbih7XG4gIG1lbnVpdGVtOiB0cnVlXG59LCBvbWl0dGVkQ2xvc2VUYWdzKTtcblxu
Ly8gV2UgYWNjZXB0IGFueSB0YWcgdG8gYmUgcmVuZGVyZWQgYnV0IHNpbmNlIHRoaXMgZ2V0cyBp
bmplY3RlZCBpbnRvIGFyYml0cmFyeVxuLy8gSFRNTCwgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhh
dCBpdCdzIGEgc2FmZSB0YWcuXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sLyNOVC1O
YW1lXG5cbnZhciBWQUxJRF9UQUdfUkVHRVggPSAvXlthLXpBLVpdW2EtekEtWjpfXFwuXFwtXFxk
XSokLzsgLy8gU2ltcGxpZmllZCBzdWJzZXRcbnZhciB2YWxpZGF0ZWRUYWdDYWNoZSA9IHt9O1xu
dmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIHZhbGlk
YXRlRGFuZ2Vyb3VzVGFnKHRhZykge1xuICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwodmFsaWRh
dGVkVGFnQ2FjaGUsIHRhZykpIHtcbiAgICAhVkFMSURfVEFHX1JFR0VYLnRlc3QodGFnKSA/IHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdJ
bnZhbGlkIHRhZzogJXMnLCB0YWcpIDogX3Byb2RJbnZhcmlhbnQoJzY1JywgdGFnKSA6IHZvaWQg
MDtcbiAgICB2YWxpZGF0ZWRUYWdDYWNoZVt0YWddID0gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlv
biBpc0N1c3RvbUNvbXBvbmVudCh0YWdOYW1lLCBwcm9wcykge1xuICByZXR1cm4gdGFnTmFtZS5p
bmRleE9mKCctJykgPj0gMCB8fCBwcm9wcy5pcyAhPSBudWxsO1xufVxuXG52YXIgZ2xvYmFsSWRD
b3VudGVyID0gMTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFJlYWN0IGNsYXNzIHRoYXQgaXMg
aWRlbXBvdGVudCBhbmQgY2FwYWJsZSBvZiBjb250YWluaW5nIG90aGVyXG4gKiBSZWFjdCBjb21w
b25lbnRzLiBJdCBhY2NlcHRzIGV2ZW50IGxpc3RlbmVycyBhbmQgRE9NIHByb3BlcnRpZXMgdGhh
dCBhcmVcbiAqIHZhbGlkIGFjY29yZGluZyB0byBgRE9NUHJvcGVydHlgLlxuICpcbiAqICAtIEV2
ZW50IGxpc3RlbmVyczogYG9uQ2xpY2tgLCBgb25Nb3VzZURvd25gLCBldGMuXG4gKiAgLSBET00g
cHJvcGVydGllczogYGNsYXNzTmFtZWAsIGBuYW1lYCwgYHRpdGxlYCwgZXRjLlxuICpcbiAqIFRo
ZSBgc3R5bGVgIHByb3BlcnR5IGZ1bmN0aW9ucyBkaWZmZXJlbnRseSBmcm9tIHRoZSBET00gQVBJ
LiBJdCBhY2NlcHRzIGFuXG4gKiBvYmplY3QgbWFwcGluZyBvZiBzdHlsZSBwcm9wZXJ0aWVzIHRv
IHZhbHVlcy5cbiAqXG4gKiBAY29uc3RydWN0b3IgUmVhY3RET01Db21wb25lbnRcbiAqIEBleHRl
bmRzIFJlYWN0TXVsdGlDaGlsZFxuICovXG5mdW5jdGlvbiBSZWFjdERPTUNvbXBvbmVudChlbGVt
ZW50KSB7XG4gIHZhciB0YWcgPSBlbGVtZW50LnR5cGU7XG4gIHZhbGlkYXRlRGFuZ2Vyb3VzVGFn
KHRhZyk7XG4gIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gZWxlbWVudDtcbiAgdGhpcy5fdGFnID0g
dGFnLnRvTG93ZXJDYXNlKCk7XG4gIHRoaXMuX25hbWVzcGFjZVVSSSA9IG51bGw7XG4gIHRoaXMu
X3JlbmRlcmVkQ2hpbGRyZW4gPSBudWxsO1xuICB0aGlzLl9wcmV2aW91c1N0eWxlID0gbnVsbDtc
biAgdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBudWxsO1xuICB0aGlzLl9ob3N0Tm9kZSA9IG51
bGw7XG4gIHRoaXMuX2hvc3RQYXJlbnQgPSBudWxsO1xuICB0aGlzLl9yb290Tm9kZUlEID0gMDtc
biAgdGhpcy5fZG9tSUQgPSAwO1xuICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IG51bGw7XG4g
IHRoaXMuX3dyYXBwZXJTdGF0ZSA9IG51bGw7XG4gIHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51
bGw7XG4gIHRoaXMuX2ZsYWdzID0gMDtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICB0aGlzLl9hbmNlc3RvckluZm8gPSBudWxsO1xuICAgIHNldEFu
ZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgbnVsbCk7XG4gIH1cbn1cblxuUmVh
Y3RET01Db21wb25lbnQuZGlzcGxheU5hbWUgPSAnUmVhY3RET01Db21wb25lbnQnO1xuXG5SZWFj
dERPTUNvbXBvbmVudC5NaXhpbiA9IHtcbiAgLyoqXG4gICAqIEdlbmVyYXRlcyByb290IHRhZyBt
YXJrdXAgdGhlbiByZWN1cnNlcy4gVGhpcyBtZXRob2QgaGFzIHNpZGUgZWZmZWN0cyBhbmRcbiAg
ICogaXMgbm90IGlkZW1wb3RlbnQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAcGFyYW0g
e1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlv
bn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHs/UmVhY3RET01Db21wb25lbnR9IHRoZSBwYXJl
bnQgY29tcG9uZW50IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7P29iamVjdH0gaW5mbyBhYm91dCB0
aGUgaG9zdCBjb250YWluZXJcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJl
dHVybiB7c3RyaW5nfSBUaGUgY29tcHV0ZWQgbWFya3VwLlxuICAgKi9cbiAgbW91bnRDb21wb25l
bnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8s
IGNvbnRleHQpIHtcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gZ2xvYmFsSWRDb3VudGVyKys7XG4g
ICAgdGhpcy5fZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVyKys7XG4gICAgdGhp
cy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG4gICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8g
PSBob3N0Q29udGFpbmVySW5mbztcblxuICAgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVt
ZW50LnByb3BzO1xuXG4gICAgc3dpdGNoICh0aGlzLl90YWcpIHtcbiAgICAgIGNhc2UgJ2F1ZGlv
JzpcbiAgICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgY2FzZSAnaWZyYW1lJzpcbiAgICAgIGNhc2Ug
J2ltZyc6XG4gICAgICBjYXNlICdsaW5rJzpcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICBj
YXNlICdzb3VyY2UnOlxuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICB0aGlzLl93cmFwcGVy
U3RhdGUgPSB7XG4gICAgICAgICAgbGlzdGVuZXJzOiBudWxsXG4gICAgICAgIH07XG4gICAgICAg
IHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVu
dHNMb2NhbCwgdGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAg
ICAgICBSZWFjdERPTUlucHV0Lm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7
XG4gICAgICAgIHByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMp
O1xuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYWNr
SW5wdXRWYWx1ZSwgdGhpcyk7XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhpcyk7XG4gICAgICAgIGJyZWFr
O1xuICAgICAgY2FzZSAnb3B0aW9uJzpcbiAgICAgICAgUmVhY3RET01PcHRpb24ubW91bnRXcmFw
cGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50KTtcbiAgICAgICAgcHJvcHMgPSBSZWFjdERPTU9w
dGlvbi5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNh
c2UgJ3NlbGVjdCc6XG4gICAgICAgIFJlYWN0RE9NU2VsZWN0Lm1vdW50V3JhcHBlcih0aGlzLCBw
cm9wcywgaG9zdFBhcmVudCk7XG4gICAgICAgIHByb3BzID0gUmVhY3RET01TZWxlY3QuZ2V0SG9z
dFByb3BzKHRoaXMsIHByb3BzKTtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJl
YWR5KCkuZW5xdWV1ZSh0cmFwQnViYmxlZEV2ZW50c0xvY2FsLCB0aGlzKTtcbiAgICAgICAgYnJl
YWs7XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICAgIFJlYWN0RE9NVGV4dGFyZWEubW91
bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50KTtcbiAgICAgICAgcHJvcHMgPSBSZWFj
dERPTVRleHRhcmVhLmdldEhvc3RQcm9wcyh0aGlzLCBwcm9wcyk7XG4gICAgICAgIHRyYW5zYWN0
aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhY2tJbnB1dFZhbHVlLCB0aGlzKTtc
biAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFwQnVi
YmxlZEV2ZW50c0xvY2FsLCB0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgYXNz
ZXJ0VmFsaWRQcm9wcyh0aGlzLCBwcm9wcyk7XG5cbiAgICAvLyBXZSBjcmVhdGUgdGFncyBpbiB0
aGUgbmFtZXNwYWNlIG9mIHRoZWlyIHBhcmVudCBjb250YWluZXIsIGV4Y2VwdCBIVE1MXG4gICAg
Ly8gdGFncyBnZXQgbm8gbmFtZXNwYWNlLlxuICAgIHZhciBuYW1lc3BhY2VVUkk7XG4gICAgdmFy
IHBhcmVudFRhZztcbiAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7XG4gICAgICBuYW1lc3Bh
Y2VVUkkgPSBob3N0UGFyZW50Ll9uYW1lc3BhY2VVUkk7XG4gICAgICBwYXJlbnRUYWcgPSBob3N0
UGFyZW50Ll90YWc7XG4gICAgfSBlbHNlIGlmIChob3N0Q29udGFpbmVySW5mby5fdGFnKSB7XG4g
ICAgICBuYW1lc3BhY2VVUkkgPSBob3N0Q29udGFpbmVySW5mby5fbmFtZXNwYWNlVVJJO1xuICAg
ICAgcGFyZW50VGFnID0gaG9zdENvbnRhaW5lckluZm8uX3RhZztcbiAgICB9XG4gICAgaWYgKG5h
bWVzcGFjZVVSSSA9PSBudWxsIHx8IG5hbWVzcGFjZVVSSSA9PT0gRE9NTmFtZXNwYWNlcy5zdmcg
JiYgcGFyZW50VGFnID09PSAnZm9yZWlnbm9iamVjdCcpIHtcbiAgICAgIG5hbWVzcGFjZVVSSSA9
IERPTU5hbWVzcGFjZXMuaHRtbDtcbiAgICB9XG4gICAgaWYgKG5hbWVzcGFjZVVSSSA9PT0gRE9N
TmFtZXNwYWNlcy5odG1sKSB7XG4gICAgICBpZiAodGhpcy5fdGFnID09PSAnc3ZnJykge1xuICAg
ICAgICBuYW1lc3BhY2VVUkkgPSBET01OYW1lc3BhY2VzLnN2ZztcbiAgICAgIH0gZWxzZSBpZiAo
dGhpcy5fdGFnID09PSAnbWF0aCcpIHtcbiAgICAgICAgbmFtZXNwYWNlVVJJID0gRE9NTmFtZXNw
YWNlcy5tYXRobWw7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX25hbWVzcGFjZVVSSSA9IG5h
bWVzcGFjZVVSSTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICB2YXIgcGFyZW50SW5mbztcbiAgICAgIGlmIChob3N0UGFyZW50ICE9IG51
bGwpIHtcbiAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RQYXJlbnQuX2FuY2VzdG9ySW5mbztcbiAg
ICAgIH0gZWxzZSBpZiAoaG9zdENvbnRhaW5lckluZm8uX3RhZykge1xuICAgICAgICBwYXJlbnRJ
bmZvID0gaG9zdENvbnRhaW5lckluZm8uX2FuY2VzdG9ySW5mbztcbiAgICAgIH1cbiAgICAgIGlm
IChwYXJlbnRJbmZvKSB7XG4gICAgICAgIC8vIHBhcmVudEluZm8gc2hvdWxkIGFsd2F5cyBiZSBw
cmVzZW50IGV4Y2VwdCBmb3IgdGhlIHRvcC1sZXZlbFxuICAgICAgICAvLyBjb21wb25lbnQgd2hl
biBzZXJ2ZXIgcmVuZGVyaW5nXG4gICAgICAgIHZhbGlkYXRlRE9NTmVzdGluZyh0aGlzLl90YWcs
IG51bGwsIHRoaXMsIHBhcmVudEluZm8pO1xuICAgICAgfVxuICAgICAgdGhpcy5fYW5jZXN0b3JJ
bmZvID0gdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8ocGFyZW50SW5mbywg
dGhpcy5fdGFnLCB0aGlzKTtcbiAgICB9XG5cbiAgICB2YXIgbW91bnRJbWFnZTtcbiAgICBpZiAo
dHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkge1xuICAgICAgdmFyIG93bmVyRG9jdW1lbnQg
PSBob3N0Q29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDtcbiAgICAgIHZhciBlbDtcbiAgICAg
IGlmIChuYW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMuaHRtbCkge1xuICAgICAgICBpZiAo
dGhpcy5fdGFnID09PSAnc2NyaXB0Jykge1xuICAgICAgICAgIC8vIENyZWF0ZSB0aGUgc2NyaXB0
IHZpYSAuaW5uZXJIVE1MIHNvIGl0cyBcInBhcnNlci1pbnNlcnRlZFwiIGZsYWcgaXNcbiAgICAg
ICAgICAvLyBzZXQgdG8gdHJ1ZSBhbmQgaXQgZG9lcyBub3QgZXhlY3V0ZVxuICAgICAgICAgIHZh
ciBkaXYgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgIHZh
ciB0eXBlID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICAgICAgICBkaXYuaW5uZXJI
VE1MID0gJzwnICsgdHlwZSArICc+PC8nICsgdHlwZSArICc+JztcbiAgICAgICAgICBlbCA9IGRp
di5yZW1vdmVDaGlsZChkaXYuZmlyc3RDaGlsZCk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcHMu
aXMpIHtcbiAgICAgICAgICBlbCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLl9j
dXJyZW50RWxlbWVudC50eXBlLCBwcm9wcy5pcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAg
ICAgLy8gU2VwYXJhdGUgZWxzZSBicmFuY2ggaW5zdGVhZCBvZiB1c2luZyBgcHJvcHMuaXMgfHwg
dW5kZWZpbmVkYCBhYm92ZSBiZWN1YXNlIG9mIGEgRmlyZWZveCBidWcuXG4gICAgICAgICAgLy8g
U2VlIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwv
Njg5NlxuICAgICAgICAgIC8vIGFuZCBkaXNjdXNzaW9uIGluIGh0dHBzOi8vYnVnemlsbGEubW96
aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzYyNDBcbiAgICAgICAgICBlbCA9IG93bmVyRG9j
dW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtcbiAgICAgICAg
fVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWwgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUyhuYW1lc3BhY2VVUkksIHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUpO1xuICAgICAgfVxu
ICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZSh0aGlzLCBlbCk7XG4gICAg
ICB0aGlzLl9mbGFncyB8PSBGbGFncy5oYXNDYWNoZWRDaGlsZE5vZGVzO1xuICAgICAgaWYgKCF0
aGlzLl9ob3N0UGFyZW50KSB7XG4gICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRBdHRy
aWJ1dGVGb3JSb290KGVsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3VwZGF0ZURPTVByb3BlcnRp
ZXMobnVsbCwgcHJvcHMsIHRyYW5zYWN0aW9uKTtcbiAgICAgIHZhciBsYXp5VHJlZSA9IERPTUxh
enlUcmVlKGVsKTtcbiAgICAgIHRoaXMuX2NyZWF0ZUluaXRpYWxDaGlsZHJlbih0cmFuc2FjdGlv
biwgcHJvcHMsIGNvbnRleHQsIGxhenlUcmVlKTtcbiAgICAgIG1vdW50SW1hZ2UgPSBsYXp5VHJl
ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHRhZ09wZW4gPSB0aGlzLl9jcmVhdGVPcGVuVGFn
TWFya3VwQW5kUHV0TGlzdGVuZXJzKHRyYW5zYWN0aW9uLCBwcm9wcyk7XG4gICAgICB2YXIgdGFn
Q29udGVudCA9IHRoaXMuX2NyZWF0ZUNvbnRlbnRNYXJrdXAodHJhbnNhY3Rpb24sIHByb3BzLCBj
b250ZXh0KTtcbiAgICAgIGlmICghdGFnQ29udGVudCAmJiBvbWl0dGVkQ2xvc2VUYWdzW3RoaXMu
X3RhZ10pIHtcbiAgICAgICAgbW91bnRJbWFnZSA9IHRhZ09wZW4gKyAnLz4nO1xuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgbW91bnRJbWFnZSA9IHRhZ09wZW4gKyAnPicgKyB0YWdDb250ZW50ICsg
JzwvJyArIHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUgKyAnPic7XG4gICAgICB9XG4gICAgfVxu
XG4gICAgc3dpdGNoICh0aGlzLl90YWcpIHtcbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAg
dHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShpbnB1dFBvc3RNb3VudCwg
dGhpcyk7XG4gICAgICAgIGlmIChwcm9wcy5hdXRvRm9jdXMpIHtcbiAgICAgICAgICB0cmFuc2Fj
dGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9N
Q29tcG9uZW50LCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ug
J3RleHRhcmVhJzpcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5x
dWV1ZSh0ZXh0YXJlYVBvc3RNb3VudCwgdGhpcyk7XG4gICAgICAgIGlmIChwcm9wcy5hdXRvRm9j
dXMpIHtcbiAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVl
KEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtcbiAgICAgICAgfVxuICAg
ICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIGlmIChwcm9wcy5hdXRv
Rm9jdXMpIHtcbiAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1
ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtcbiAgICAgICAgfVxu
ICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2J1dHRvbic6XG4gICAgICAgIGlmIChwcm9wcy5h
dXRvRm9jdXMpIHtcbiAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5l
bnF1ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtcbiAgICAgICAg
fVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29wdGlvbic6XG4gICAgICAgIHRyYW5zYWN0
aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUob3B0aW9uUG9zdE1vdW50LCB0aGlzKTtc
biAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vdW50SW1hZ2U7XG4gIH0sXG5c
biAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgb3BlbiB0YWcgYW5kIGFsbCBhdHRy
aWJ1dGVzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBoYXMgc2lkZSBlZmZlY3RzIGJlY2F1c2Ug
ZXZlbnRzIGdldCByZWdpc3RlcmVkLlxuICAgKlxuICAgKiBJdGVyYXRpbmcgb3ZlciBvYmplY3Qg
cHJvcGVydGllcyBpcyBmYXN0ZXIgdGhhbiBpdGVyYXRpbmcgb3ZlciBhcnJheXMuXG4gICAqIEBz
ZWUgaHR0cDovL2pzcGVyZi5jb20vb2JqLXZzLWFyci1pdGVyYXRpb25cbiAgICpcbiAgICogQHBy
aXZhdGVcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVy
UmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBw
cm9wc1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBvZiBvcGVuaW5nIHRhZy5cbiAgICov
XG4gIF9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzOiBmdW5jdGlvbiAodHJhbnNh
Y3Rpb24sIHByb3BzKSB7XG4gICAgdmFyIHJldCA9ICc8JyArIHRoaXMuX2N1cnJlbnRFbGVtZW50
LnR5cGU7XG5cbiAgICBmb3IgKHZhciBwcm9wS2V5IGluIHByb3BzKSB7XG4gICAgICBpZiAoIXBy
b3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAg
fVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuICAgICAgaWYgKHByb3BW
YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHJl
Z2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAg
IGlmIChwcm9wVmFsdWUpIHtcbiAgICAgICAgICBlbnF1ZXVlUHV0TGlzdGVuZXIodGhpcywgcHJv
cEtleSwgcHJvcFZhbHVlLCB0cmFuc2FjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7
XG4gICAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuICAgICAgICAgIGlmIChwcm9wVmFs
dWUpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAgICAgICAgIC8vIFNlZSBgX3VwZGF0ZURPTVByb3BlcnRpZXNgLiBzdHls
ZSBibG9ja1xuICAgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlID0gcHJvcFZhbHVlO1xu
ICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvcFZhbHVlID0gdGhpcy5fcHJldmlvdXNTdHls
ZUNvcHkgPSBfYXNzaWduKHt9LCBwcm9wcy5zdHlsZSk7XG4gICAgICAgICAgfVxuICAgICAgICAg
IHByb3BWYWx1ZSA9IENTU1Byb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JTdHlsZXMo
cHJvcFZhbHVlLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbWFya3VwID0gbnVsbDtc
biAgICAgICAgaWYgKHRoaXMuX3RhZyAhPSBudWxsICYmIGlzQ3VzdG9tQ29tcG9uZW50KHRoaXMu
X3RhZywgcHJvcHMpKSB7XG4gICAgICAgICAgaWYgKCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9w
ZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICAgICAgbWFya3VwID0gRE9NUHJvcGVydHlPcGVyYXRp
b25zLmNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZShwcm9wS2V5LCBwcm9wVmFsdWUpO1xu
ICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXJrdXAgPSBET01Qcm9w
ZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yUHJvcGVydHkocHJvcEtleSwgcHJvcFZhbHVl
KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWFya3VwKSB7XG4gICAgICAgICAgcmV0ICs9ICcg
JyArIG1hcmt1cDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvciBzdGF0
aWMgcGFnZXMsIG5vIG5lZWQgdG8gcHV0IFJlYWN0IElEIGFuZCBjaGVja3N1bS4gU2F2ZXMgbG90
cyBvZlxuICAgIC8vIGJ5dGVzLlxuICAgIGlmICh0cmFuc2FjdGlvbi5yZW5kZXJUb1N0YXRpY01h
cmt1cCkge1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2hvc3RQ
YXJlbnQpIHtcbiAgICAgIHJldCArPSAnICcgKyBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRl
TWFya3VwRm9yUm9vdCgpO1xuICAgIH1cbiAgICByZXQgKz0gJyAnICsgRE9NUHJvcGVydHlPcGVy
YXRpb25zLmNyZWF0ZU1hcmt1cEZvcklEKHRoaXMuX2RvbUlEKTtcbiAgICByZXR1cm4gcmV0O1xu
ICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIGNvbnRlbnQgYmV0d2Vl
biB0aGUgdGFncy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtSZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0
aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICAgKiBAcGFyYW0ge29iamVjdH0gY29u
dGV4dFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IENvbnRlbnQgbWFya3VwLlxuICAgKi9cbiAgX2Ny
ZWF0ZUNvbnRlbnRNYXJrdXA6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQp
IHtcbiAgICB2YXIgcmV0ID0gJyc7XG5cbiAgICAvLyBJbnRlbnRpb25hbCB1c2Ugb2YgIT0gdG8g
YXZvaWQgY2F0Y2hpbmcgemVyby9mYWxzZS5cbiAgICB2YXIgaW5uZXJIVE1MID0gcHJvcHMuZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUw7XG4gICAgaWYgKGlubmVySFRNTCAhPSBudWxsKSB7XG4gICAg
ICBpZiAoaW5uZXJIVE1MLl9faHRtbCAhPSBudWxsKSB7XG4gICAgICAgIHJldCA9IGlubmVySFRN
TC5fX2h0bWw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjb250ZW50VG9Vc2Ug
PSBDT05URU5UX1RZUEVTW3R5cGVvZiBwcm9wcy5jaGlsZHJlbl0gPyBwcm9wcy5jaGlsZHJlbiA6
IG51bGw7XG4gICAgICB2YXIgY2hpbGRyZW5Ub1VzZSA9IGNvbnRlbnRUb1VzZSAhPSBudWxsID8g
bnVsbCA6IHByb3BzLmNoaWxkcmVuO1xuICAgICAgaWYgKGNvbnRlbnRUb1VzZSAhPSBudWxsKSB7
XG4gICAgICAgIC8vIFRPRE86IFZhbGlkYXRlIHRoYXQgdGV4dCBpcyBhbGxvd2VkIGFzIGEgY2hp
bGQgb2YgdGhpcyBub2RlXG4gICAgICAgIHJldCA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nl
cihjb250ZW50VG9Vc2UpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNh
bGwodGhpcywgY29udGVudFRvVXNlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaGls
ZHJlblRvVXNlICE9IG51bGwpIHtcbiAgICAgICAgdmFyIG1vdW50SW1hZ2VzID0gdGhpcy5tb3Vu
dENoaWxkcmVuKGNoaWxkcmVuVG9Vc2UsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgICAg
cmV0ID0gbW91bnRJbWFnZXMuam9pbignJyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChuZXds
aW5lRWF0aW5nVGFnc1t0aGlzLl90YWddICYmIHJldC5jaGFyQXQoMCkgPT09ICdcXG4nKSB7XG4g
ICAgICAvLyB0ZXh0L2h0bWwgaWdub3JlcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZXNlIHRh
Z3MgaWYgaXQncyBhIG5ld2xpbmVcbiAgICAgIC8vIFByZWZlciB0byBicmVhayBhcHBsaWNhdGlv
bi94bWwgb3ZlciB0ZXh0L2h0bWwgKGZvciBub3cpIGJ5IGFkZGluZ1xuICAgICAgLy8gYSBuZXds
aW5lIHNwZWNpZmljYWxseSB0byBnZXQgZWF0ZW4gYnkgdGhlIHBhcnNlci4gKEFsdGVybmF0ZWx5
IGZvclxuICAgICAgLy8gdGV4dGFyZWFzLCByZXBsYWNpbmcgXCJeXFxuXCIgd2l0aCBcIlxcclxc
blwiIGRvZXNuJ3QgZ2V0IGVhdGVuLCBhbmQgdGhlIGZpcnN0XG4gICAgICAvLyBcXHIgaXMgbm9y
bWFsaXplZCBvdXQgYnkgSFRNTFRleHRBcmVhRWxlbWVudCN2YWx1ZS4pXG4gICAgICAvLyBTZWU6
IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sLXBvbHlnbG90LyNuZXdsaW5lcy1pbi10ZXh0YXJl
YS1hbmQtcHJlPlxuICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3lu
dGF4Lmh0bWwjZWxlbWVudC1yZXN0cmljdGlvbnM+XG4gICAgICAvLyBTZWU6IDxodHRwOi8vd3d3
LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNuZXdsaW5lcz5cbiAgICAgIC8vIFNlZTogUGFy
c2luZyBvZiBcInRleHRhcmVhXCIgXCJsaXN0aW5nXCIgYW5kIFwicHJlXCIgZWxlbWVudHNcbiAg
ICAgIC8vICBmcm9tIDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNwYXJz
aW5nLW1haW4taW5ib2R5PlxuICAgICAgcmV0dXJuICdcXG4nICsgcmV0O1xuICAgIH0gZWxzZSB7
XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfSxcblxuICBfY3JlYXRlSW5pdGlhbENoaWxk
cmVuOiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByb3BzLCBjb250ZXh0LCBsYXp5VHJlZSkge1xu
ICAgIC8vIEludGVudGlvbmFsIHVzZSBvZiAhPSB0byBhdm9pZCBjYXRjaGluZyB6ZXJvL2ZhbHNl
LlxuICAgIHZhciBpbm5lckhUTUwgPSBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTDtcbiAg
ICBpZiAoaW5uZXJIVE1MICE9IG51bGwpIHtcbiAgICAgIGlmIChpbm5lckhUTUwuX19odG1sICE9
IG51bGwpIHtcbiAgICAgICAgRE9NTGF6eVRyZWUucXVldWVIVE1MKGxhenlUcmVlLCBpbm5lckhU
TUwuX19odG1sKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNvbnRlbnRUb1Vz
ZSA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIHByb3BzLmNoaWxkcmVuXSA/IHByb3BzLmNoaWxkcmVu
IDogbnVsbDtcbiAgICAgIHZhciBjaGlsZHJlblRvVXNlID0gY29udGVudFRvVXNlICE9IG51bGwg
PyBudWxsIDogcHJvcHMuY2hpbGRyZW47XG4gICAgICAvLyBUT0RPOiBWYWxpZGF0ZSB0aGF0IHRl
eHQgaXMgYWxsb3dlZCBhcyBhIGNoaWxkIG9mIHRoaXMgbm9kZVxuICAgICAgaWYgKGNvbnRlbnRU
b1VzZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIEF2b2lkIHNldHRpbmcgdGV4dENvbnRlbnQgd2hl
biB0aGUgdGV4dCBpcyBlbXB0eS4gSW4gSUUxMSBzZXR0aW5nXG4gICAgICAgIC8vIHRleHRDb250
ZW50IG9uIGEgdGV4dCBhcmVhIHdpbGwgY2F1c2UgdGhlIHBsYWNlaG9sZGVyIHRvIG5vdFxuICAg
ICAgICAvLyBzaG93IHdpdGhpbiB0aGUgdGV4dGFyZWEgdW50aWwgaXQgaGFzIGJlZW4gZm9jdXNl
ZCBhbmQgYmx1cnJlZCBhZ2Fpbi5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vi
b29rL3JlYWN0L2lzc3Vlcy82NzMxI2lzc3VlY29tbWVudC0yNTQ4NzQ1NTNcbiAgICAgICAgaWYg
KGNvbnRlbnRUb1VzZSAhPT0gJycpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50
Q2hpbGREZXYuY2FsbCh0aGlzLCBjb250ZW50VG9Vc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAg
ICBET01MYXp5VHJlZS5xdWV1ZVRleHQobGF6eVRyZWUsIGNvbnRlbnRUb1VzZSk7XG4gICAgICAg
IH1cbiAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5Ub1VzZSAhPSBudWxsKSB7XG4gICAgICAgIHZh
ciBtb3VudEltYWdlcyA9IHRoaXMubW91bnRDaGlsZHJlbihjaGlsZHJlblRvVXNlLCB0cmFuc2Fj
dGlvbiwgY29udGV4dCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW91bnRJbWFnZXMu
bGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBET01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVl
LCBtb3VudEltYWdlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAg
LyoqXG4gICAqIFJlY2VpdmVzIGEgbmV4dCBlbGVtZW50IGFuZCB1cGRhdGVzIHRoZSBjb21wb25l
bnQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4
dEVsZW1lbnRcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2Vy
dmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0
fSBjb250ZXh0XG4gICAqL1xuICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAobmV4dEVsZW1l
bnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIHByZXZFbGVtZW50ID0gdGhpcy5f
Y3VycmVudEVsZW1lbnQ7XG4gICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0RWxlbWVudDtc
biAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgcHJldkVsZW1lbnQsIG5leHRF
bGVtZW50LCBjb250ZXh0KTtcbiAgfSxcblxuICAvKipcbiAgICogVXBkYXRlcyBhIERPTSBjb21w
b25lbnQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQgYW5kXG4gICAqIGF0dGFj
aGVkIHRvIHRoZSBET00uIFJlY29uY2lsZXMgdGhlIHJvb3QgRE9NIG5vZGUsIHRoZW4gcmVjdXJz
ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNh
Y3Rpb25cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IHByZXZFbGVtZW50XG4gICAqIEBwYXJh
bSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudFxuICAgKiBAaW50ZXJuYWxcbiAgICogQG92ZXJy
aWRhYmxlXG4gICAqL1xuICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwg
cHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0KSB7XG4gICAgdmFyIGxhc3RQcm9wcyA9
IHByZXZFbGVtZW50LnByb3BzO1xuICAgIHZhciBuZXh0UHJvcHMgPSB0aGlzLl9jdXJyZW50RWxl
bWVudC5wcm9wcztcblxuICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG4gICAgICBjYXNlICdpbnB1
dCc6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFByb3BzKHRoaXMs
IGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFBy
b3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3B0aW9u
JzpcbiAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFByb3BzKHRoaXMs
IGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NT3B0aW9uLmdldEhvc3RQ
cm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVj
dCc6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQcm9wcyh0aGlz
LCBsYXN0UHJvcHMpO1xuICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXRIb3N0
UHJvcHModGhpcywgbmV4dFByb3BzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZXh0
YXJlYSc6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0SG9zdFByb3Bz
KHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEu
Z2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxu
ICAgIGFzc2VydFZhbGlkUHJvcHModGhpcywgbmV4dFByb3BzKTtcbiAgICB0aGlzLl91cGRhdGVE
T01Qcm9wZXJ0aWVzKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbik7XG4gICAgdGhp
cy5fdXBkYXRlRE9NQ2hpbGRyZW4obGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9uLCBj
b250ZXh0KTtcblxuICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG4gICAgICBjYXNlICdpbnB1dCc6
XG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgd3JhcHBlciBhcm91bmQgaW5wdXRzICphZnRlciogdXBk
YXRpbmcgcHJvcHMuIFRoaXMgaGFzIHRvXG4gICAgICAgIC8vIGhhcHBlbiBhZnRlciBgX3VwZGF0
ZURPTVByb3BlcnRpZXNgLiBPdGhlcndpc2UgSFRNTDUgaW5wdXQgdmFsaWRhdGlvbnNcbiAgICAg
ICAgLy8gcmFpc2Ugd2FybmluZ3MgYW5kIHByZXZlbnQgdGhlIG5ldyB2YWx1ZSBmcm9tIGJlaW5n
IGFzc2lnbmVkLlxuICAgICAgICBSZWFjdERPTUlucHV0LnVwZGF0ZVdyYXBwZXIodGhpcyk7XG4g
ICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICBSZWFjdERPTVRl
eHRhcmVhLnVwZGF0ZVdyYXBwZXIodGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAn
c2VsZWN0JzpcbiAgICAgICAgLy8gPHNlbGVjdD4gdmFsdWUgdXBkYXRlIG5lZWRzIHRvIG9jY3Vy
IGFmdGVyIDxvcHRpb24+IGNoaWxkcmVuXG4gICAgICAgIC8vIHJlY29uY2lsaWF0aW9uXG4gICAg
ICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocG9zdFVwZGF0ZVNl
bGVjdFdyYXBwZXIsIHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH0sXG5cbiAgLyoq
XG4gICAqIFJlY29uY2lsZXMgdGhlIHByb3BlcnRpZXMgYnkgZGV0ZWN0aW5nIGRpZmZlcmVuY2Vz
IGluIHByb3BlcnR5IHZhbHVlcyBhbmRcbiAgICogdXBkYXRpbmcgdGhlIERPTSBhcyBuZWNlc3Nh
cnkuIFRoaXMgZnVuY3Rpb24gaXMgcHJvYmFibHkgdGhlIHNpbmdsZSBtb3N0XG4gICAqIGNyaXRp
Y2FsIHBhdGggZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi5cbiAgICpcbiAgICogVE9ETzog
QmVuY2htYXJrIHdoZXRoZXIgY2hlY2tpbmcgZm9yIGNoYW5nZWQgdmFsdWVzIGluIG1lbW9yeSBh
Y3R1YWxseVxuICAgKiAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZSAoZXNwZWNpYWxseSBzdGF0
aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudHMpLlxuICAgKiBUT0RPOiBCZW5jaG1hcmsgdGhlIGVm
ZmVjdHMgb2YgcHV0dGluZyB0aGlzIGF0IHRoZSB0b3Agc2luY2UgOTklIG9mIHByb3BzXG4gICAq
ICAgICAgIGRvIG5vdCBjaGFuZ2UgZm9yIGEgZ2l2ZW4gcmVjb25jaWxpYXRpb24uXG4gICAqIFRP
RE86IEJlbmNobWFyayBhcmVhcyB0aGF0IGNhbiBiZSBpbXByb3ZlZCB3aXRoIGNhY2hpbmcuXG4g
ICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHNcbiAgICog
QHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2Rl
XG4gICAqL1xuICBfdXBkYXRlRE9NUHJvcGVydGllczogZnVuY3Rpb24gKGxhc3RQcm9wcywgbmV4
dFByb3BzLCB0cmFuc2FjdGlvbikge1xuICAgIHZhciBwcm9wS2V5O1xuICAgIHZhciBzdHlsZU5h
bWU7XG4gICAgdmFyIHN0eWxlVXBkYXRlcztcbiAgICBmb3IgKHByb3BLZXkgaW4gbGFzdFByb3Bz
KSB7XG4gICAgICBpZiAobmV4dFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpIHx8ICFsYXN0
UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwgbGFzdFByb3BzW3Byb3BLZXldID09IG51
bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAocHJvcEtleSA9PT0g
U1RZTEUpIHtcbiAgICAgICAgdmFyIGxhc3RTdHlsZSA9IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5
O1xuICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0U3R5bGUpIHtcbiAgICAgICAgICBpZiAo
bGFzdFN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHtcbiAgICAgICAgICAgIHN0eWxl
VXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTtcbiAgICAgICAgICAgIHN0eWxlVXBkYXRlc1tz
dHlsZU5hbWVdID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3By
ZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAocmVnaXN0cmF0aW9uTmFt
ZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgaWYgKGxhc3RQcm9w
c1twcm9wS2V5XSkge1xuICAgICAgICAgIC8vIE9ubHkgY2FsbCBkZWxldGVMaXN0ZW5lciBpZiB0
aGVyZSB3YXMgYSBsaXN0ZW5lciBwcmV2aW91c2x5IG9yXG4gICAgICAgICAgLy8gZWxzZSB3aWxs
RGVsZXRlTGlzdGVuZXIgZ2V0cyBjYWxsZWQgd2hlbiB0aGVyZSB3YXNuJ3QgYWN0dWFsbHkgYVxu
ICAgICAgICAgIC8vIGxpc3RlbmVyIChlLmcuLCBvbkNsaWNrPXtudWxsfSlcbiAgICAgICAgICBk
ZWxldGVMaXN0ZW5lcih0aGlzLCBwcm9wS2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlm
IChpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIGxhc3RQcm9wcykpIHtcbiAgICAgICAgaWYg
KCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICAgIERP
TVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvckF0dHJpYnV0ZShnZXROb2RlKHRoaXMp
LCBwcm9wS2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5wcm9w
ZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKHByb3BLZXkp
KSB7XG4gICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5
KGdldE5vZGUodGhpcyksIHByb3BLZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHByb3BL
ZXkgaW4gbmV4dFByb3BzKSB7XG4gICAgICB2YXIgbmV4dFByb3AgPSBuZXh0UHJvcHNbcHJvcEtl
eV07XG4gICAgICB2YXIgbGFzdFByb3AgPSBwcm9wS2V5ID09PSBTVFlMRSA/IHRoaXMuX3ByZXZp
b3VzU3R5bGVDb3B5IDogbGFzdFByb3BzICE9IG51bGwgPyBsYXN0UHJvcHNbcHJvcEtleV0gOiB1
bmRlZmluZWQ7XG4gICAgICBpZiAoIW5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSB8
fCBuZXh0UHJvcCA9PT0gbGFzdFByb3AgfHwgbmV4dFByb3AgPT0gbnVsbCAmJiBsYXN0UHJvcCA9
PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BLZXkg
PT09IFNUWUxFKSB7XG4gICAgICAgIGlmIChuZXh0UHJvcCkge1xuICAgICAgICAgIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICBjaGVja0Fu
ZFdhcm5Gb3JNdXRhdGVkU3R5bGUodGhpcy5fcHJldmlvdXNTdHlsZUNvcHksIHRoaXMuX3ByZXZp
b3VzU3R5bGUsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZSA9IG5leHRQ
cm9wO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXh0UHJvcCA9IHRoaXMuX3ByZXZpb3VzU3R5
bGVDb3B5ID0gX2Fzc2lnbih7fSwgbmV4dFByb3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAg
ICAgIHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBp
ZiAobGFzdFByb3ApIHtcbiAgICAgICAgICAvLyBVbnNldCBzdHlsZXMgb24gYGxhc3RQcm9wYCBi
dXQgbm90IG9uIGBuZXh0UHJvcGAuXG4gICAgICAgICAgZm9yIChzdHlsZU5hbWUgaW4gbGFzdFBy
b3ApIHtcbiAgICAgICAgICAgIGlmIChsYXN0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUp
ICYmICghbmV4dFByb3AgfHwgIW5leHRQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpKSB7
XG4gICAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTtcbiAgICAg
ICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSAnJztcbiAgICAgICAgICAgIH1cbiAg
ICAgICAgICB9XG4gICAgICAgICAgLy8gVXBkYXRlIHN0eWxlcyB0aGF0IGNoYW5nZWQgc2luY2Ug
YGxhc3RQcm9wYC5cbiAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBuZXh0UHJvcCkge1xuICAg
ICAgICAgICAgaWYgKG5leHRQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkgJiYgbGFzdFBy
b3Bbc3R5bGVOYW1lXSAhPT0gbmV4dFByb3Bbc3R5bGVOYW1lXSkge1xuICAgICAgICAgICAgICBz
dHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMgfHwge307XG4gICAgICAgICAgICAgIHN0eWxlVXBk
YXRlc1tzdHlsZU5hbWVdID0gbmV4dFByb3Bbc3R5bGVOYW1lXTtcbiAgICAgICAgICAgIH1cbiAg
ICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVsaWVzIG9uIGB1cGRh
dGVTdHlsZXNCeUlEYCBub3QgbXV0YXRpbmcgYHN0eWxlVXBkYXRlc2AuXG4gICAgICAgICAgc3R5
bGVVcGRhdGVzID0gbmV4dFByb3A7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocmVnaXN0
cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgaWYg
KG5leHRQcm9wKSB7XG4gICAgICAgICAgZW5xdWV1ZVB1dExpc3RlbmVyKHRoaXMsIHByb3BLZXks
IG5leHRQcm9wLCB0cmFuc2FjdGlvbik7XG4gICAgICAgIH0gZWxzZSBpZiAobGFzdFByb3ApIHtc
biAgICAgICAgICBkZWxldGVMaXN0ZW5lcih0aGlzLCBwcm9wS2V5KTtcbiAgICAgICAgfVxuICAg
ICAgfSBlbHNlIGlmIChpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIG5leHRQcm9wcykpIHtc
biAgICAgICAgaWYgKCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xu
ICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShnZXRO
b2RlKHRoaXMpLCBwcm9wS2V5LCBuZXh0UHJvcCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBp
ZiAoRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wS2V5XSB8fCBET01Qcm9wZXJ0eS5pc0N1c3Rv
bUF0dHJpYnV0ZShwcm9wS2V5KSkge1xuICAgICAgICB2YXIgbm9kZSA9IGdldE5vZGUodGhpcyk7
XG4gICAgICAgIC8vIElmIHdlJ3JlIHVwZGF0aW5nIHRvIG51bGwgb3IgdW5kZWZpbmVkLCB3ZSBz
aG91bGQgcmVtb3ZlIHRoZSBwcm9wZXJ0eVxuICAgICAgICAvLyBmcm9tIHRoZSBET00gbm9kZSBp
bnN0ZWFkIG9mIGluYWR2ZXJ0ZW50bHkgc2V0dGluZyB0byBhIHN0cmluZy4gVGhpc1xuICAgICAg
ICAvLyBicmluZ3MgdXMgaW4gbGluZSB3aXRoIHRoZSBzYW1lIGJlaGF2aW9yIHdlIGhhdmUgb24g
aW5pdGlhbCByZW5kZXIuXG4gICAgICAgIGlmIChuZXh0UHJvcCAhPSBudWxsKSB7XG4gICAgICAg
ICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yUHJvcGVydHkobm9kZSwgcHJvcEtl
eSwgbmV4dFByb3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIERPTVByb3BlcnR5T3Bl
cmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIHByb3BLZXkpO1xuICAgICAgICB9
XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdHlsZVVwZGF0ZXMpIHtcbiAgICAgIENTU1Byb3Bl
cnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclN0eWxlcyhnZXROb2RlKHRoaXMpLCBzdHlsZVVwZGF0
ZXMsIHRoaXMpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUmVjb25jaWxlcyB0aGUgY2hp
bGRyZW4gd2l0aCB0aGUgdmFyaW91cyBwcm9wZXJ0aWVzIHRoYXQgYWZmZWN0IHRoZVxuICAgKiBj
aGlsZHJlbiBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gbGFzdFByb3BzXG4g
ICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2ls
ZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxu
ICAgKi9cbiAgX3VwZGF0ZURPTUNoaWxkcmVuOiBmdW5jdGlvbiAobGFzdFByb3BzLCBuZXh0UHJv
cHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIGxhc3RDb250ZW50ID0gQ09OVEVO
VF9UWVBFU1t0eXBlb2YgbGFzdFByb3BzLmNoaWxkcmVuXSA/IGxhc3RQcm9wcy5jaGlsZHJlbiA6
IG51bGw7XG4gICAgdmFyIG5leHRDb250ZW50ID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgbmV4dFBy
b3BzLmNoaWxkcmVuXSA/IG5leHRQcm9wcy5jaGlsZHJlbiA6IG51bGw7XG5cbiAgICB2YXIgbGFz
dEh0bWwgPSBsYXN0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgJiYgbGFzdFByb3BzLmRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbDtcbiAgICB2YXIgbmV4dEh0bWwgPSBuZXh0UHJv
cHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgJiYgbmV4dFByb3BzLmRhbmdlcm91c2x5U2V0SW5u
ZXJIVE1MLl9faHRtbDtcblxuICAgIC8vIE5vdGUgdGhlIHVzZSBvZiBgIT1gIHdoaWNoIGNoZWNr
cyBmb3IgbnVsbCBvciB1bmRlZmluZWQuXG4gICAgdmFyIGxhc3RDaGlsZHJlbiA9IGxhc3RDb250
ZW50ICE9IG51bGwgPyBudWxsIDogbGFzdFByb3BzLmNoaWxkcmVuO1xuICAgIHZhciBuZXh0Q2hp
bGRyZW4gPSBuZXh0Q29udGVudCAhPSBudWxsID8gbnVsbCA6IG5leHRQcm9wcy5jaGlsZHJlbjtc
blxuICAgIC8vIElmIHdlJ3JlIHN3aXRjaGluZyBmcm9tIGNoaWxkcmVuIHRvIGNvbnRlbnQvaHRt
bCBvciB2aWNlIHZlcnNhLCByZW1vdmVcbiAgICAvLyB0aGUgb2xkIGNvbnRlbnRcbiAgICB2YXIg
bGFzdEhhc0NvbnRlbnRPckh0bWwgPSBsYXN0Q29udGVudCAhPSBudWxsIHx8IGxhc3RIdG1sICE9
IG51bGw7XG4gICAgdmFyIG5leHRIYXNDb250ZW50T3JIdG1sID0gbmV4dENvbnRlbnQgIT0gbnVs
bCB8fCBuZXh0SHRtbCAhPSBudWxsO1xuICAgIGlmIChsYXN0Q2hpbGRyZW4gIT0gbnVsbCAmJiBu
ZXh0Q2hpbGRyZW4gPT0gbnVsbCkge1xuICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbihudWxsLCB0
cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIGlmIChsYXN0SGFzQ29udGVudE9ySHRt
bCAmJiAhbmV4dEhhc0NvbnRlbnRPckh0bWwpIHtcbiAgICAgIHRoaXMudXBkYXRlVGV4dENvbnRl
bnQoJycpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4o
dGhpcy5fZGVidWdJRCwgW10pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuZXh0Q29udGVu
dCAhPSBudWxsKSB7XG4gICAgICBpZiAobGFzdENvbnRlbnQgIT09IG5leHRDb250ZW50KSB7XG4g
ICAgICAgIHRoaXMudXBkYXRlVGV4dENvbnRlbnQoJycgKyBuZXh0Q29udGVudCk7XG4gICAgICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAg
c2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBuZXh0Q29udGVudCk7XG4g
ICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5leHRIdG1sICE9IG51bGwpIHtcbiAg
ICAgIGlmIChsYXN0SHRtbCAhPT0gbmV4dEh0bWwpIHtcbiAgICAgICAgdGhpcy51cGRhdGVNYXJr
dXAoJycgKyBuZXh0SHRtbCk7XG4gICAgICB9XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1
Z1Rvb2wub25TZXRDaGlsZHJlbih0aGlzLl9kZWJ1Z0lELCBbXSk7XG4gICAgICB9XG4gICAgfSBl
bHNlIGlmIChuZXh0Q2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50
Q2hpbGREZXYuY2FsbCh0aGlzLCBudWxsKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVD
aGlsZHJlbihuZXh0Q2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICB9XG4gIH0s
XG5cbiAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZSh0aGlz
KTtcbiAgfSxcblxuICAvKipcbiAgICogRGVzdHJveXMgYWxsIGV2ZW50IHJlZ2lzdHJhdGlvbnMg
Zm9yIHRoaXMgaW5zdGFuY2UuIERvZXMgbm90IHJlbW92ZSBmcm9tXG4gICAqIHRoZSBET00uIFRo
YXQgbXVzdCBiZSBkb25lIGJ5IHRoZSBwYXJlbnQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAg
Ki9cbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHNhZmVseSkge1xuICAgIHN3aXRjaCAo
dGhpcy5fdGFnKSB7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICBjYXNlICdmb3JtJzpcbiAg
ICAgIGNhc2UgJ2lmcmFtZSc6XG4gICAgICBjYXNlICdpbWcnOlxuICAgICAgY2FzZSAnbGluayc6
XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgY2FzZSAnc291cmNlJzpcbiAgICAgIGNhc2Ug
J3ZpZGVvJzpcbiAgICAgICAgdmFyIGxpc3RlbmVycyA9IHRoaXMuX3dyYXBwZXJTdGF0ZS5saXN0
ZW5lcnM7XG4gICAgICAgIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGlzdGVuZXJzW2ld
LnJlbW92ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAg
IGNhc2UgJ2lucHV0JzpcbiAgICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAgICAgaW5wdXRWYWx1
ZVRyYWNraW5nLnN0b3BUcmFja2luZyh0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNl
ICdodG1sJzpcbiAgICAgIGNhc2UgJ2hlYWQnOlxuICAgICAgY2FzZSAnYm9keSc6XG4gICAgICAg
IC8qKlxuICAgICAgICAgKiBDb21wb25lbnRzIGxpa2UgPGh0bWw+IDxoZWFkPiBhbmQgPGJvZHk+
IGNhbid0IGJlIHJlbW92ZWQgb3IgYWRkZWRcbiAgICAgICAgICogZWFzaWx5IGluIGEgY3Jvc3Mt
YnJvd3NlciB3YXksIGhvd2V2ZXIgaXQncyB2YWx1YWJsZSB0byBiZSBhYmxlIHRvXG4gICAgICAg
ICAqIHRha2UgYWR2YW50YWdlIG9mIFJlYWN0J3MgcmVjb25jaWxpYXRpb24gZm9yIHN0eWxpbmcg
YW5kIDx0aXRsZT5cbiAgICAgICAgICogbWFuYWdlbWVudC4gU28gd2UganVzdCBkb2N1bWVudCBp
dCBhbmQgdGhyb3cgaW4gZGFuZ2Vyb3VzIGNhc2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgIWZh
bHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJzwlcz4gdHJpZWQgdG8gdW5tb3VudC4gQmVjYXVzZSBvZiBjcm9zcy1icm93c2VyIHF1
aXJrcyBpdCBpcyBpbXBvc3NpYmxlIHRvIHVubW91bnQgc29tZSB0b3AtbGV2ZWwgY29tcG9uZW50
cyAoZWcgPGh0bWw+LCA8aGVhZD4sIGFuZCA8Ym9keT4pIHJlbGlhYmx5IGFuZCBlZmZpY2llbnRs
eS4gVG8gZml4IHRoaXMsIGhhdmUgYSBzaW5nbGUgdG9wLWxldmVsIGNvbXBvbmVudCB0aGF0IG5l
dmVyIHVubW91bnRzIHJlbmRlciB0aGVzZSBlbGVtZW50cy4nLCB0aGlzLl90YWcpIDogX3Byb2RJ
bnZhcmlhbnQoJzY2JywgdGhpcy5fdGFnKSA6IHZvaWQgMDtcbiAgICAgICAgYnJlYWs7XG4gICAg
fVxuXG4gICAgdGhpcy51bm1vdW50Q2hpbGRyZW4oc2FmZWx5KTtcbiAgICBSZWFjdERPTUNvbXBv
bmVudFRyZWUudW5jYWNoZU5vZGUodGhpcyk7XG4gICAgRXZlbnRQbHVnaW5IdWIuZGVsZXRlQWxs
TGlzdGVuZXJzKHRoaXMpO1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSAwO1xuICAgIHRoaXMuX2Rv
bUlEID0gMDtcbiAgICB0aGlzLl93cmFwcGVyU3RhdGUgPSBudWxsO1xuXG4gICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHNldEFuZFZhbGlkYXRl
Q29udGVudENoaWxkRGV2LmNhbGwodGhpcywgbnVsbCk7XG4gICAgfVxuICB9LFxuXG4gIGdldFB1
YmxpY0luc3RhbmNlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGdldE5vZGUodGhpcyk7XG4g
IH1cbn07XG5cbl9hc3NpZ24oUmVhY3RET01Db21wb25lbnQucHJvdG90eXBlLCBSZWFjdERPTUNv
bXBvbmVudC5NaXhpbiwgUmVhY3RNdWx0aUNoaWxkLk1peGluKTtcblxubW9kdWxlLmV4cG9ydHMg
PSBSZWFjdERPTUNvbXBvbmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NQ29tcG9uZW50LmpzXG4gKiog
bW9kdWxlIGlkID0gMTM4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgdmFsaWRhdGVET01O
ZXN0aW5nID0gcmVxdWlyZSgnLi92YWxpZGF0ZURPTU5lc3RpbmcnKTtcblxudmFyIERPQ19OT0RF
X1RZUEUgPSA5O1xuXG5mdW5jdGlvbiBSZWFjdERPTUNvbnRhaW5lckluZm8odG9wTGV2ZWxXcmFw
cGVyLCBub2RlKSB7XG4gIHZhciBpbmZvID0ge1xuICAgIF90b3BMZXZlbFdyYXBwZXI6IHRvcExl
dmVsV3JhcHBlcixcbiAgICBfaWRDb3VudGVyOiAxLFxuICAgIF9vd25lckRvY3VtZW50OiBub2Rl
ID8gbm9kZS5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSA/IG5vZGUgOiBub2RlLm93bmVyRG9j
dW1lbnQgOiBudWxsLFxuICAgIF9ub2RlOiBub2RlLFxuICAgIF90YWc6IG5vZGUgPyBub2RlLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCkgOiBudWxsLFxuICAgIF9uYW1lc3BhY2VVUkk6IG5vZGUgPyBu
b2RlLm5hbWVzcGFjZVVSSSA6IG51bGxcbiAgfTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpbmZvLl9hbmNlc3RvckluZm8gPSBub2RlID8gdmFs
aWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8obnVsbCwgaW5mby5fdGFnLCBudWxs
KSA6IG51bGw7XG4gIH1cbiAgcmV0dXJuIGluZm87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVh
Y3RET01Db250YWluZXJJbmZvO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01Db250YWluZXJJbmZvLmpzXG4g
KiogbW9kdWxlIGlkID0gMTM5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9
IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIERPTUxhenlUcmVlID0gcmVxdWlyZSgn
Li9ET01MYXp5VHJlZScpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4v
UmVhY3RET01Db21wb25lbnRUcmVlJyk7XG5cbnZhciBSZWFjdERPTUVtcHR5Q29tcG9uZW50ID0g
ZnVuY3Rpb24gKGluc3RhbnRpYXRlKSB7XG4gIC8vIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IHVz
ZXMgdGhpczpcbiAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBudWxsO1xuICAvLyBSZWFjdERPTUNv
bXBvbmVudFRyZWUgdXNlcyB0aGVzZTpcbiAgdGhpcy5faG9zdE5vZGUgPSBudWxsO1xuICB0aGlz
Ll9ob3N0UGFyZW50ID0gbnVsbDtcbiAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBudWxsO1xu
ICB0aGlzLl9kb21JRCA9IDA7XG59O1xuX2Fzc2lnbihSZWFjdERPTUVtcHR5Q29tcG9uZW50LnBy
b3RvdHlwZSwge1xuICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBob3N0
UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCkge1xuICAgIHZhciBkb21JRCA9IGhv
c3RDb250YWluZXJJbmZvLl9pZENvdW50ZXIrKztcbiAgICB0aGlzLl9kb21JRCA9IGRvbUlEO1xu
ICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50O1xuICAgIHRoaXMuX2hvc3RDb250YWlu
ZXJJbmZvID0gaG9zdENvbnRhaW5lckluZm87XG5cbiAgICB2YXIgbm9kZVZhbHVlID0gJyByZWFj
dC1lbXB0eTogJyArIHRoaXMuX2RvbUlEICsgJyAnO1xuICAgIGlmICh0cmFuc2FjdGlvbi51c2VD
cmVhdGVFbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXJEb2N1bWVudCA9IGhvc3RDb250YWluZXJJ
bmZvLl9vd25lckRvY3VtZW50O1xuICAgICAgdmFyIG5vZGUgPSBvd25lckRvY3VtZW50LmNyZWF0
ZUNvbW1lbnQobm9kZVZhbHVlKTtcbiAgICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNo
ZU5vZGUodGhpcywgbm9kZSk7XG4gICAgICByZXR1cm4gRE9NTGF6eVRyZWUobm9kZSk7XG4gICAg
fSBlbHNlIHtcbiAgICAgIGlmICh0cmFuc2FjdGlvbi5yZW5kZXJUb1N0YXRpY01hcmt1cCkge1xu
ICAgICAgICAvLyBOb3JtYWxseSB3ZSdkIGluc2VydCBhIGNvbW1lbnQgbm9kZSwgYnV0IHNpbmNl
IHRoaXMgaXMgYSBzaXR1YXRpb25cbiAgICAgICAgLy8gd2hlcmUgUmVhY3Qgd29uJ3QgdGFrZSBv
dmVyIChzdGF0aWMgcGFnZXMpLCB3ZSBjYW4gc2ltcGx5IHJldHVyblxuICAgICAgICAvLyBub3Ro
aW5nLlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgICByZXR1cm4gJzwhLS0nICsg
bm9kZVZhbHVlICsgJy0tPic7XG4gICAgfVxuICB9LFxuICByZWNlaXZlQ29tcG9uZW50OiBmdW5j
dGlvbiAoKSB7fSxcbiAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyk7XG4gIH0sXG4gIHVu
bW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUu
dW5jYWNoZU5vZGUodGhpcyk7XG4gIH1cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9N
RW1wdHlDb21wb25lbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUVtcHR5Q29tcG9uZW50LmpzXG4gKiog
bW9kdWxlIGlkID0gMTQwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RET01GZWF0
dXJlRmxhZ3MgPSB7XG4gIHVzZUNyZWF0ZUVsZW1lbnQ6IHRydWUsXG4gIHVzZUZpYmVyOiBmYWxz
ZVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUZlYXR1cmVGbGFncztcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGli
L1JlYWN0RE9NRmVhdHVyZUZsYWdzLmpzXG4gKiogbW9kdWxlIGlkID0gMTQxXG4gKiogbW9kdWxl
IGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG52YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0gcmVxdWlyZSgnLi9ET01D
aGlsZHJlbk9wZXJhdGlvbnMnKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJl
KCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xuXG4vKipcbiAqIE9wZXJhdGlvbnMgdXNlZCB0
byBwcm9jZXNzIHVwZGF0ZXMgdG8gRE9NIG5vZGVzLlxuICovXG52YXIgUmVhY3RET01JRE9wZXJh
dGlvbnMgPSB7XG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgY29tcG9uZW50J3MgY2hpbGRyZW4gYnkg
cHJvY2Vzc2luZyBhIHNlcmllcyBvZiB1cGRhdGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5
PG9iamVjdD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuXG4gICAqIEBp
bnRlcm5hbFxuICAgKi9cbiAgZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOiBmdW5j
dGlvbiAocGFyZW50SW5zdCwgdXBkYXRlcykge1xuICAgIHZhciBub2RlID0gUmVhY3RET01Db21w
b25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UocGFyZW50SW5zdCk7XG4gICAgRE9NQ2hpbGRy
ZW5PcGVyYXRpb25zLnByb2Nlc3NVcGRhdGVzKG5vZGUsIHVwZGF0ZXMpO1xuICB9XG59O1xuXG5t
b2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NSURPcGVyYXRpb25zO1xuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01J
RE9wZXJhdGlvbnMuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDJcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7
XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyks
XG4gICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIERPTVByb3Bl
cnR5T3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHlPcGVyYXRpb25zJyk7XG52YXIg
TGlua2VkVmFsdWVVdGlscyA9IHJlcXVpcmUoJy4vTGlua2VkVmFsdWVVdGlscycpO1xudmFyIFJl
YWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7
XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGlu
dmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSBy
ZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBkaWRXYXJuVmFsdWVMaW5rID0gZmFs
c2U7XG52YXIgZGlkV2FybkNoZWNrZWRMaW5rID0gZmFsc2U7XG52YXIgZGlkV2FyblZhbHVlRGVm
YXVsdFZhbHVlID0gZmFsc2U7XG52YXIgZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCA9IGZh
bHNlO1xudmFyIGRpZFdhcm5Db250cm9sbGVkVG9VbmNvbnRyb2xsZWQgPSBmYWxzZTtcbnZhciBk
aWRXYXJuVW5jb250cm9sbGVkVG9Db250cm9sbGVkID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGZvcmNl
VXBkYXRlSWZNb3VudGVkKCkge1xuICBpZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuICAgIC8vIERP
TSBjb21wb25lbnQgaXMgc3RpbGwgbW91bnRlZDsgdXBkYXRlXG4gICAgUmVhY3RET01JbnB1dC51
cGRhdGVXcmFwcGVyKHRoaXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQ29udHJvbGxlZChwcm9w
cykge1xuICB2YXIgdXNlc0NoZWNrZWQgPSBwcm9wcy50eXBlID09PSAnY2hlY2tib3gnIHx8IHBy
b3BzLnR5cGUgPT09ICdyYWRpbyc7XG4gIHJldHVybiB1c2VzQ2hlY2tlZCA/IHByb3BzLmNoZWNr
ZWQgIT0gbnVsbCA6IHByb3BzLnZhbHVlICE9IG51bGw7XG59XG5cbi8qKlxuICogSW1wbGVtZW50
cyBhbiA8aW5wdXQ+IGhvc3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIHNldHRpbmcgdGhlc2Ugb3B0
aW9uYWxcbiAqIHByb3BzOiBgY2hlY2tlZGAsIGB2YWx1ZWAsIGBkZWZhdWx0Q2hlY2tlZGAsIGFu
ZCBgZGVmYXVsdFZhbHVlYC5cbiAqXG4gKiBJZiBgY2hlY2tlZGAgb3IgYHZhbHVlYCBhcmUgbm90
IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9uc1xuICogdGhhdCBhZmZl
Y3QgdGhlIGNoZWNrZWQgc3RhdGUgb3IgdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhl
IGVsZW1lbnQuXG4gKlxuICogSWYgdGhleSBhcmUgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRl
ZmluZWQpLCB0aGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsIG5vdFxuICogdHJpZ2dlciB1cGRhdGVz
IHRvIHRoZSBlbGVtZW50LiBJbnN0ZWFkLCB0aGUgcHJvcHMgbXVzdCBjaGFuZ2UgaW4gb3JkZXIg
Zm9yXG4gKiB0aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLlxuICpcbiAqIFRoZSBy
ZW5kZXJlZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYXMgdW5jaGVja2VkIChvciBgZGVm
YXVsdENoZWNrZWRgKVxuICogd2l0aCBhbiBlbXB0eSB2YWx1ZSAob3IgYGRlZmF1bHRWYWx1ZWAp
LlxuICpcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9XRC1odG1sNS0yMDEyMTAy
NS90aGUtaW5wdXQtZWxlbWVudC5odG1sXG4gKi9cbnZhciBSZWFjdERPTUlucHV0ID0ge1xuICBn
ZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuICAgIHZhciB2YWx1ZSA9IExp
bmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuICAgIHZhciBjaGVja2VkID0gTGlua2Vk
VmFsdWVVdGlscy5nZXRDaGVja2VkKHByb3BzKTtcblxuICAgIHZhciBob3N0UHJvcHMgPSBfYXNz
aWduKHtcbiAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBzZXQgLnR5cGUgYmVmb3JlIGFueSBvdGhlciBw
cm9wZXJ0aWVzIChzZXR0aW5nIC52YWx1ZVxuICAgICAgLy8gYmVmb3JlIC50eXBlIG1lYW5zIC52
YWx1ZSBpcyBsb3N0IGluIElFMTEgYW5kIGJlbG93KVxuICAgICAgdHlwZTogdW5kZWZpbmVkLFxu
ICAgICAgLy8gTWFrZSBzdXJlIHdlIHNldCAuc3RlcCBiZWZvcmUgLnZhbHVlIChzZXR0aW5nIC52
YWx1ZSBiZWZvcmUgLnN0ZXBcbiAgICAgIC8vIG1lYW5zIC52YWx1ZSBpcyByb3VuZGVkIG9uIG1v
dW50LCBiYXNlZCB1cG9uIHN0ZXAgcHJlY2lzaW9uKVxuICAgICAgc3RlcDogdW5kZWZpbmVkLFxu
ICAgICAgLy8gTWFrZSBzdXJlIHdlIHNldCAubWluICYgLm1heCBiZWZvcmUgLnZhbHVlICh0byBl
bnN1cmUgcHJvcGVyIG9yZGVyXG4gICAgICAvLyBpbiBjb3JuZXIgY2FzZXMgc3VjaCBhcyBtaW4g
b3IgbWF4IGRlcml2aW5nIGZyb20gdmFsdWUsIGUuZy4gSXNzdWUgIzcxNzApXG4gICAgICBtaW46
IHVuZGVmaW5lZCxcbiAgICAgIG1heDogdW5kZWZpbmVkXG4gICAgfSwgcHJvcHMsIHtcbiAgICAg
IGRlZmF1bHRDaGVja2VkOiB1bmRlZmluZWQsXG4gICAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5l
ZCxcbiAgICAgIHZhbHVlOiB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBpbnN0Ll93cmFwcGVyU3Rh
dGUuaW5pdGlhbFZhbHVlLFxuICAgICAgY2hlY2tlZDogY2hlY2tlZCAhPSBudWxsID8gY2hlY2tl
ZCA6IGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZCxcbiAgICAgIG9uQ2hhbmdlOiBp
bnN0Ll93cmFwcGVyU3RhdGUub25DaGFuZ2VcbiAgICB9KTtcblxuICAgIHJldHVybiBob3N0UHJv
cHM7XG4gIH0sXG5cbiAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgTGlu
a2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygnaW5wdXQnLCBwcm9wcywgaW5zdC5fY3VycmVu
dEVsZW1lbnQuX293bmVyKTtcblxuICAgICAgdmFyIG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1l
bnQuX293bmVyO1xuXG4gICAgICBpZiAocHJvcHMudmFsdWVMaW5rICE9PSB1bmRlZmluZWQgJiYg
IWRpZFdhcm5WYWx1ZUxpbmspIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgdmFsdWVMaW5rYCBwcm9wIG9uIGBpbnB1dGAg
aXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZv
aWQgMDtcbiAgICAgICAgZGlkV2FyblZhbHVlTGluayA9IHRydWU7XG4gICAgICB9XG4gICAgICBp
ZiAocHJvcHMuY2hlY2tlZExpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FybkNoZWNrZWRMaW5r
KSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGZhbHNlLCAnYGNoZWNrZWRMaW5rYCBwcm9wIG9uIGBpbnB1dGAgaXMgZGVwcmVjYXRlZDsg
c2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDtcbiAgICAgICAg
ZGlkV2FybkNoZWNrZWRMaW5rID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5jaGVj
a2VkICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdENoZWNrZWQgIT09IHVuZGVmaW5lZCAm
JiAhZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCkge1xuICAgICAgICBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGNvbnRhaW5zIGFu
IGlucHV0IG9mIHR5cGUgJXMgd2l0aCBib3RoIGNoZWNrZWQgYW5kIGRlZmF1bHRDaGVja2VkIHBy
b3BzLiAnICsgJ0lucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5j
b250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSBjaGVja2VkIHByb3AsIG9yIHRoZSBk
ZWZhdWx0Q2hlY2tlZCBwcm9wLCBidXQgbm90ICcgKyAnYm90aCkuIERlY2lkZSBiZXR3ZWVuIHVz
aW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGFuZCBy
ZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcgKyAnaHR0cHM6Ly9mYi5tZS9y
ZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkgfHwg
J0EgY29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2b2lkIDA7XG4gICAgICAgIGRpZFdhcm5DaGVj
a2VkRGVmYXVsdENoZWNrZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLnZhbHVl
ICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWRp
ZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGNvbnRhaW5zIGFuIGlucHV0IG9m
IHR5cGUgJXMgd2l0aCBib3RoIHZhbHVlIGFuZCBkZWZhdWx0VmFsdWUgcHJvcHMuICcgKyAnSW5w
dXQgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyAr
ICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJv
cCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQg
b3IgdW5jb250cm9sbGVkIGlucHV0ICcgKyAnZWxlbWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVz
ZSBwcm9wcy4gTW9yZSBpbmZvOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1j
b21wb25lbnRzJywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcsIHBy
b3BzLnR5cGUpIDogdm9pZCAwO1xuICAgICAgICBkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUgPSB0
cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZh
dWx0VmFsdWU7XG4gICAgaW5zdC5fd3JhcHBlclN0YXRlID0ge1xuICAgICAgaW5pdGlhbENoZWNr
ZWQ6IHByb3BzLmNoZWNrZWQgIT0gbnVsbCA/IHByb3BzLmNoZWNrZWQgOiBwcm9wcy5kZWZhdWx0
Q2hlY2tlZCxcbiAgICAgIGluaXRpYWxWYWx1ZTogcHJvcHMudmFsdWUgIT0gbnVsbCA/IHByb3Bz
LnZhbHVlIDogZGVmYXVsdFZhbHVlLFxuICAgICAgbGlzdGVuZXJzOiBudWxsLFxuICAgICAgb25D
aGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KSxcbiAgICAgIGNvbnRyb2xsZWQ6IGlzQ29u
dHJvbGxlZChwcm9wcylcbiAgICB9O1xuICB9LFxuXG4gIHVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9u
IChpbnN0KSB7XG4gICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5c
biAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
dmFyIGNvbnRyb2xsZWQgPSBpc0NvbnRyb2xsZWQocHJvcHMpO1xuICAgICAgdmFyIG93bmVyID0g
aW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXG4gICAgICBpZiAoIWluc3QuX3dyYXBwZXJT
dGF0ZS5jb250cm9sbGVkICYmIGNvbnRyb2xsZWQgJiYgIWRpZFdhcm5VbmNvbnRyb2xsZWRUb0Nv
bnRyb2xsZWQpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICclcyBpcyBjaGFuZ2luZyBhbiB1bmNvbnRyb2xsZWQgaW5wdXQg
b2YgdHlwZSAlcyB0byBiZSBjb250cm9sbGVkLiAnICsgJ0lucHV0IGVsZW1lbnRzIHNob3VsZCBu
b3Qgc3dpdGNoIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2Ep
LiAnICsgJ0RlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQg
aW5wdXQgJyArICdlbGVtZW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4gTW9y
ZSBpbmZvOiBodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVy
ICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQg
MDtcbiAgICAgICAgZGlkV2FyblVuY29udHJvbGxlZFRvQ29udHJvbGxlZCA9IHRydWU7XG4gICAg
ICB9XG4gICAgICBpZiAoaW5zdC5fd3JhcHBlclN0YXRlLmNvbnRyb2xsZWQgJiYgIWNvbnRyb2xs
ZWQgJiYgIWRpZFdhcm5Db250cm9sbGVkVG9VbmNvbnRyb2xsZWQpIHtcbiAgICAgICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBpcyBj
aGFuZ2luZyBhIGNvbnRyb2xsZWQgaW5wdXQgb2YgdHlwZSAlcyB0byBiZSB1bmNvbnRyb2xsZWQu
ICcgKyAnSW5wdXQgZWxlbWVudHMgc2hvdWxkIG5vdCBzd2l0Y2ggZnJvbSBjb250cm9sbGVkIHRv
IHVuY29udHJvbGxlZCAob3IgdmljZSB2ZXJzYSkuICcgKyAnRGVjaWRlIGJldHdlZW4gdXNpbmcg
YSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgZm9yIHRoZSBs
aWZldGltZSBvZiB0aGUgY29tcG9uZW50LiBNb3JlIGluZm86IGh0dHBzOi8vZmIubWUvcmVhY3Qt
Y29udHJvbGxlZC1jb21wb25lbnRzJywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNv
bXBvbmVudCcsIHByb3BzLnR5cGUpIDogdm9pZCAwO1xuICAgICAgICBkaWRXYXJuQ29udHJvbGxl
ZFRvVW5jb250cm9sbGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBT
aG91bGRuJ3QgdGhpcyBiZSBnZXRDaGVja2VkKHByb3BzKT9cbiAgICB2YXIgY2hlY2tlZCA9IHBy
b3BzLmNoZWNrZWQ7XG4gICAgaWYgKGNoZWNrZWQgIT0gbnVsbCkge1xuICAgICAgRE9NUHJvcGVy
dHlPcGVyYXRpb25zLnNldFZhbHVlRm9yUHJvcGVydHkoUmVhY3RET01Db21wb25lbnRUcmVlLmdl
dE5vZGVGcm9tSW5zdGFuY2UoaW5zdCksICdjaGVja2VkJywgY2hlY2tlZCB8fCBmYWxzZSk7XG4g
ICAgfVxuXG4gICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21J
bnN0YW5jZShpbnN0KTtcbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVl
KHByb3BzKTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgaWYgKHZhbHVlID09PSAw
ICYmIG5vZGUudmFsdWUgPT09ICcnKSB7XG4gICAgICAgIG5vZGUudmFsdWUgPSAnMCc7XG4gICAg
ICAgIC8vIE5vdGU6IElFOSByZXBvcnRzIGEgbnVtYmVyIGlucHV0cyBhcyAndGV4dCcsIHNvIGNo
ZWNrIHByb3BzIGluc3RlYWQuXG4gICAgICB9IGVsc2UgaWYgKHByb3BzLnR5cGUgPT09ICdudW1i
ZXInKSB7XG4gICAgICAgIC8vIFNpbXVsYXRlIGBpbnB1dC52YWx1ZUFzTnVtYmVyYC4gSUU5IGRv
ZXMgbm90IHN1cHBvcnQgaXRcbiAgICAgICAgdmFyIHZhbHVlQXNOdW1iZXIgPSBwYXJzZUZsb2F0
KG5vZGUudmFsdWUsIDEwKSB8fCAwO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgLy8gZXNsaW50
LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIHZhbHVlICE9IHZhbHVlQXNOdW1iZXIgfHxcbiAg
ICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIHZhbHVlID09IHZhbHVl
QXNOdW1iZXIgJiYgbm9kZS52YWx1ZSAhPSB2YWx1ZSkge1xuICAgICAgICAgIC8vIENhc3QgYHZh
bHVlYCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlzIHNldCBjb3JyZWN0bHkuIFdo
aWxlXG4gICAgICAgICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRvIHRoaXMgYXMgbmVjZXNzYXJ5
LCBqc2RvbSBkb2Vzbid0LlxuICAgICAgICAgIG5vZGUudmFsdWUgPSAnJyArIHZhbHVlO1xuICAg
ICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG5vZGUudmFsdWUgIT09ICcnICsgdmFsdWUpIHtcbiAg
ICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMg
c2V0IGNvcnJlY3RseS4gV2hpbGVcbiAgICAgICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRvIHRo
aXMgYXMgbmVjZXNzYXJ5LCBqc2RvbSBkb2Vzbid0LlxuICAgICAgICBub2RlLnZhbHVlID0gJycg
KyB2YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb3BzLnZhbHVlID09
IG51bGwgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgLy8gSW4gQ2hy
b21lLCBhc3NpZ25pbmcgZGVmYXVsdFZhbHVlIHRvIGNlcnRhaW4gaW5wdXQgdHlwZXMgdHJpZ2dl
cnMgaW5wdXQgdmFsaWRhdGlvbi5cbiAgICAgICAgLy8gRm9yIG51bWJlciBpbnB1dHMsIHRoZSBk
aXNwbGF5IHZhbHVlIGxvc2VzIHRyYWlsaW5nIGRlY2ltYWwgcG9pbnRzLiBGb3IgZW1haWwgaW5w
dXRzLFxuICAgICAgICAvLyBDaHJvbWUgcmFpc2VzIFwiVGhlIHNwZWNpZmllZCB2YWx1ZSA8eD4g
aXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzc1wiLlxuICAgICAgICAvL1xuICAgICAgICAvLyBI
ZXJlIHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUgZGVmYXVsdFZhbHVlIGhhcyBhY3R1YWxseSBjaGFu
Z2VkLCBhdm9pZGluZyB0aGVzZSBwcm9ibGVtc1xuICAgICAgICAvLyB3aGVuIHRoZSB1c2VyIGlz
IGlucHV0dGluZyB0ZXh0XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI1M1xuICAgICAgICBpZiAobm9kZS5kZWZhdWx0VmFs
dWUgIT09ICcnICsgcHJvcHMuZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgbm9kZS5kZWZhdWx0
VmFsdWUgPSAnJyArIHByb3BzLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAg
ICAgaWYgKHByb3BzLmNoZWNrZWQgPT0gbnVsbCAmJiBwcm9wcy5kZWZhdWx0Q2hlY2tlZCAhPSBu
dWxsKSB7XG4gICAgICAgIG5vZGUuZGVmYXVsdENoZWNrZWQgPSAhIXByb3BzLmRlZmF1bHRDaGVj
a2VkO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBwb3N0TW91bnRXcmFwcGVyOiBmdW5jdGlv
biAoaW5zdCkge1xuICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xu
XG4gICAgLy8gVGhpcyBpcyBpbiBwb3N0TW91bnQgYmVjYXVzZSB3ZSBuZWVkIGFjY2VzcyB0byB0
aGUgRE9NIG5vZGUsIHdoaWNoIGlzIG5vdFxuICAgIC8vIGF2YWlsYWJsZSB1bnRpbCBhZnRlciB0
aGUgY29tcG9uZW50IGhhcyBtb3VudGVkLlxuICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25l
bnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG5cbiAgICAvLyBEZXRhY2ggdmFsdWUg
ZnJvbSBkZWZhdWx0VmFsdWUuIFdlIHdvbid0IGRvIGFueXRoaW5nIGlmIHdlJ3JlIHdvcmtpbmcg
b25cbiAgICAvLyBzdWJtaXQgb3IgcmVzZXQgaW5wdXRzIGFzIHRob3NlIHZhbHVlcyAmIGRlZmF1
bHRWYWx1ZXMgYXJlIGxpbmtlZC4gVGhleVxuICAgIC8vIGFyZSBub3QgcmVzZXRhYmxlIG5vZGVz
IHNvIHRoaXMgb3BlcmF0aW9uIGRvZXNuJ3QgbWF0dGVyIGFuZCBhY3R1YWxseVxuICAgIC8vIHJl
bW92ZXMgYnJvd3Nlci1kZWZhdWx0IHZhbHVlcyAoZWcgXCJTdWJtaXQgUXVlcnlcIikgd2hlbiBu
byB2YWx1ZSBpc1xuICAgIC8vIHByb3ZpZGVkLlxuXG4gICAgc3dpdGNoIChwcm9wcy50eXBlKSB7
XG4gICAgICBjYXNlICdzdWJtaXQnOlxuICAgICAgY2FzZSAncmVzZXQnOlxuICAgICAgICBicmVh
aztcbiAgICAgIGNhc2UgJ2NvbG9yJzpcbiAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgY2FzZSAn
ZGF0ZXRpbWUnOlxuICAgICAgY2FzZSAnZGF0ZXRpbWUtbG9jYWwnOlxuICAgICAgY2FzZSAnbW9u
dGgnOlxuICAgICAgY2FzZSAndGltZSc6XG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgLy8g
VGhpcyBmaXhlcyB0aGUgbm8tc2hvdyBpc3N1ZSBvbiBpT1MgU2FmYXJpIGFuZCBBbmRyb2lkIENo
cm9tZTpcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vl
cy83MjMzXG4gICAgICAgIG5vZGUudmFsdWUgPSAnJztcbiAgICAgICAgbm9kZS52YWx1ZSA9IG5v
ZGUuZGVmYXVsdFZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAg
IG5vZGUudmFsdWUgPSBub2RlLnZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICAv
LyBOb3JtYWxseSwgd2UnZCBqdXN0IGRvIGBub2RlLmNoZWNrZWQgPSBub2RlLmNoZWNrZWRgIHVw
b24gaW5pdGlhbCBtb3VudCwgbGVzcyB0aGlzIGJ1Z1xuICAgIC8vIHRoaXMgaXMgbmVlZGVkIHRv
IHdvcmsgYXJvdW5kIGEgY2hyb21lIGJ1ZyB3aGVyZSBzZXR0aW5nIGRlZmF1bHRDaGVja2VkXG4g
ICAgLy8gd2lsbCBzb21ldGltZXMgaW5mbHVlbmNlIHRoZSB2YWx1ZSBvZiBjaGVja2VkIChldmVu
IGFmdGVyIGRldGFjaG1lbnQpLlxuICAgIC8vIFJlZmVyZW5jZTogaHR0cHM6Ly9idWdzLmNocm9t
aXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjA4NDE2XG4gICAgLy8gV2UgbmVl
ZCB0byB0ZW1wb3JhcmlseSB1bnNldCBuYW1lIHRvIGF2b2lkIGRpc3J1cHRpbmcgcmFkaW8gYnV0
dG9uIGdyb3Vwcy5cbiAgICB2YXIgbmFtZSA9IG5vZGUubmFtZTtcbiAgICBpZiAobmFtZSAhPT0g
JycpIHtcbiAgICAgIG5vZGUubmFtZSA9ICcnO1xuICAgIH1cbiAgICBub2RlLmRlZmF1bHRDaGVj
a2VkID0gIW5vZGUuZGVmYXVsdENoZWNrZWQ7XG4gICAgbm9kZS5kZWZhdWx0Q2hlY2tlZCA9ICFu
b2RlLmRlZmF1bHRDaGVja2VkO1xuICAgIGlmIChuYW1lICE9PSAnJykge1xuICAgICAgbm9kZS5u
YW1lID0gbmFtZTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZl
bnQpIHtcbiAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgdmFy
IHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2
ZW50KTtcblxuICAvLyBIZXJlIHdlIHVzZSBhc2FwIHRvIHdhaXQgdW50aWwgYWxsIHVwZGF0ZXMg
aGF2ZSBwcm9wYWdhdGVkLCB3aGljaFxuICAvLyBpcyBpbXBvcnRhbnQgd2hlbiB1c2luZyBjb250
cm9sbGVkIGNvbXBvbmVudHMgd2l0aGluIGxheWVyczpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xNjk4XG4gIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBk
YXRlSWZNb3VudGVkLCB0aGlzKTtcblxuICB2YXIgbmFtZSA9IHByb3BzLm5hbWU7XG4gIGlmIChw
cm9wcy50eXBlID09PSAncmFkaW8nICYmIG5hbWUgIT0gbnVsbCkge1xuICAgIHZhciByb290Tm9k
ZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpO1xuICAg
IHZhciBxdWVyeVJvb3QgPSByb290Tm9kZTtcblxuICAgIHdoaWxlIChxdWVyeVJvb3QucGFyZW50
Tm9kZSkge1xuICAgICAgcXVlcnlSb290ID0gcXVlcnlSb290LnBhcmVudE5vZGU7XG4gICAgfVxu
XG4gICAgLy8gSWYgYHJvb3ROb2RlLmZvcm1gIHdhcyBub24tbnVsbCwgdGhlbiB3ZSBjb3VsZCB0
cnkgYGZvcm0uZWxlbWVudHNgLFxuICAgIC8vIGJ1dCB0aGF0IHNvbWV0aW1lcyBiZWhhdmVzIHN0
cmFuZ2VseSBpbiBJRTguIFdlIGNvdWxkIGFsc28gdHJ5IHVzaW5nXG4gICAgLy8gYGZvcm0uZ2V0
RWxlbWVudHNCeU5hbWVgLCBidXQgdGhhdCB3aWxsIG9ubHkgcmV0dXJuIGRpcmVjdCBjaGlsZHJl
blxuICAgIC8vIGFuZCB3b24ndCBpbmNsdWRlIGlucHV0cyB0aGF0IHVzZSB0aGUgSFRNTDUgYGZv
cm09YCBhdHRyaWJ1dGUuIFNpbmNlXG4gICAgLy8gdGhlIGlucHV0IG1pZ2h0IG5vdCBldmVuIGJl
IGluIGEgZm9ybSwgbGV0J3MganVzdCB1c2UgdGhlIGdsb2JhbFxuICAgIC8vIGBxdWVyeVNlbGVj
dG9yQWxsYCB0byBlbnN1cmUgd2UgZG9uJ3QgbWlzcyBhbnl0aGluZy5cbiAgICB2YXIgZ3JvdXAg
PSBxdWVyeVJvb3QucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbbmFtZT0nICsgSlNPTi5zdHJpbmdp
ZnkoJycgKyBuYW1lKSArICddW3R5cGU9XCJyYWRpb1wiXScpO1xuXG4gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBncm91cC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG90aGVyTm9kZSA9IGdyb3Vw
W2ldO1xuICAgICAgaWYgKG90aGVyTm9kZSA9PT0gcm9vdE5vZGUgfHwgb3RoZXJOb2RlLmZvcm0g
IT09IHJvb3ROb2RlLmZvcm0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAv
LyBUaGlzIHdpbGwgdGhyb3cgaWYgcmFkaW8gYnV0dG9ucyByZW5kZXJlZCBieSBkaWZmZXJlbnQg
Y29waWVzIG9mIFJlYWN0XG4gICAgICAvLyBhbmQgdGhlIHNhbWUgbmFtZSBhcmUgcmVuZGVyZWQg
aW50byB0aGUgc2FtZSBmb3JtIChzYW1lIGFzICMxOTM5KS5cbiAgICAgIC8vIFRoYXQncyBwcm9i
YWJseSBva2F5OyB3ZSBkb24ndCBzdXBwb3J0IGl0IGp1c3QgYXMgd2UgZG9uJ3Qgc3VwcG9ydFxu
ICAgICAgLy8gbWl4aW5nIFJlYWN0IHJhZGlvIGJ1dHRvbnMgd2l0aCBub24tUmVhY3Qgb25lcy5c
biAgICAgIHZhciBvdGhlckluc3RhbmNlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3Rh
bmNlRnJvbU5vZGUob3RoZXJOb2RlKTtcbiAgICAgICFvdGhlckluc3RhbmNlID8gcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0RE9N
SW5wdXQ6IE1peGluZyBSZWFjdCBhbmQgbm9uLVJlYWN0IHJhZGlvIGlucHV0cyB3aXRoIHRoZSBz
YW1lIGBuYW1lYCBpcyBub3Qgc3VwcG9ydGVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzkwJykgOiB2
b2lkIDA7XG4gICAgICAvLyBJZiB0aGlzIGlzIGEgY29udHJvbGxlZCByYWRpbyBidXR0b24gZ3Jv
dXAsIGZvcmNpbmcgdGhlIGlucHV0IHRoYXRcbiAgICAgIC8vIHdhcyBwcmV2aW91c2x5IGNoZWNr
ZWQgdG8gdXBkYXRlIHdpbGwgY2F1c2UgaXQgdG8gYmUgY29tZSByZS1jaGVja2VkXG4gICAgICAv
LyBhcyBhcHByb3ByaWF0ZS5cbiAgICAgIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZN
b3VudGVkLCBvdGhlckluc3RhbmNlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0dXJuVmFs
dWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01JbnB1dDtcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0
RE9NSW5wdXQuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgUmVhY3QgPSBy
ZXF1aXJlKCdyZWFjdC9saWIvUmVhY3QnKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBy
ZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0RE9NU2VsZWN0ID0g
cmVxdWlyZSgnLi9SZWFjdERPTVNlbGVjdCcpO1xuXG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2Zi
anMvbGliL3dhcm5pbmcnKTtcbnZhciBkaWRXYXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuID0gZmFs
c2U7XG5cbmZ1bmN0aW9uIGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJlbikge1xuICB2YXIgY29udGVu
dCA9ICcnO1xuXG4gIC8vIEZsYXR0ZW4gY2hpbGRyZW4gYW5kIHdhcm4gaWYgdGhleSBhcmVuJ3Qg
c3RyaW5ncyBvciBudW1iZXJzO1xuICAvLyBpbnZhbGlkIHR5cGVzIGFyZSBpZ25vcmVkLlxuICBS
ZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICBp
ZiAoY2hpbGQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9m
IGNoaWxkID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY2hpbGQgPT09ICdudW1iZXInKSB7XG4gICAg
ICBjb250ZW50ICs9IGNoaWxkO1xuICAgIH0gZWxzZSBpZiAoIWRpZFdhcm5JbnZhbGlkT3B0aW9u
Q2hpbGRyZW4pIHtcbiAgICAgIGRpZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4gPSB0cnVlO1xu
ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFs
c2UsICdPbmx5IHN0cmluZ3MgYW5kIG51bWJlcnMgYXJlIHN1cHBvcnRlZCBhcyA8b3B0aW9uPiBj
aGlsZHJlbi4nKSA6IHZvaWQgMDtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjb250ZW50O1xu
fVxuXG4vKipcbiAqIEltcGxlbWVudHMgYW4gPG9wdGlvbj4gaG9zdCBjb21wb25lbnQgdGhhdCB3
YXJucyB3aGVuIGBzZWxlY3RlZGAgaXMgc2V0LlxuICovXG52YXIgUmVhY3RET01PcHRpb24gPSB7
XG4gIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzLCBob3N0UGFyZW50KSB7XG4g
ICAgLy8gVE9ETyAoeXVuZ3N0ZXJzKTogUmVtb3ZlIHN1cHBvcnQgZm9yIGBzZWxlY3RlZGAgaW4g
PG9wdGlvbj4uXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KHByb3BzLnNlbGVjdGVkID09IG51bGwsICdVc2UgdGhlIGBkZWZhdWx0VmFsdWVgIG9yIGB2YWx1
ZWAgcHJvcHMgb24gPHNlbGVjdD4gaW5zdGVhZCBvZiAnICsgJ3NldHRpbmcgYHNlbGVjdGVkYCBv
biA8b3B0aW9uPi4nKSA6IHZvaWQgMDtcbiAgICB9XG5cbiAgICAvLyBMb29rIHVwIHdoZXRoZXIg
dGhpcyBvcHRpb24gaXMgJ3NlbGVjdGVkJ1xuICAgIHZhciBzZWxlY3RWYWx1ZSA9IG51bGw7XG4g
ICAgaWYgKGhvc3RQYXJlbnQgIT0gbnVsbCkge1xuICAgICAgdmFyIHNlbGVjdFBhcmVudCA9IGhv
c3RQYXJlbnQ7XG5cbiAgICAgIGlmIChzZWxlY3RQYXJlbnQuX3RhZyA9PT0gJ29wdGdyb3VwJykg
e1xuICAgICAgICBzZWxlY3RQYXJlbnQgPSBzZWxlY3RQYXJlbnQuX2hvc3RQYXJlbnQ7XG4gICAg
ICB9XG5cbiAgICAgIGlmIChzZWxlY3RQYXJlbnQgIT0gbnVsbCAmJiBzZWxlY3RQYXJlbnQuX3Rh
ZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBSZWFjdERPTVNlbGVjdC5n
ZXRTZWxlY3RWYWx1ZUNvbnRleHQoc2VsZWN0UGFyZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAg
ICAvLyBJZiB0aGUgdmFsdWUgaXMgbnVsbCAoZS5nLiwgbm8gc3BlY2lmaWVkIHZhbHVlIG9yIGFm
dGVyIGluaXRpYWwgbW91bnQpXG4gICAgLy8gb3IgbWlzc2luZyAoZS5nLiwgZm9yIDxkYXRhbGlz
dD4pLCB3ZSBkb24ndCBjaGFuZ2UgcHJvcHMuc2VsZWN0ZWRcbiAgICB2YXIgc2VsZWN0ZWQgPSBu
dWxsO1xuICAgIGlmIChzZWxlY3RWYWx1ZSAhPSBudWxsKSB7XG4gICAgICB2YXIgdmFsdWU7XG4g
ICAgICBpZiAocHJvcHMudmFsdWUgIT0gbnVsbCkge1xuICAgICAgICB2YWx1ZSA9IHByb3BzLnZh
bHVlICsgJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IGZsYXR0ZW5DaGlsZHJl
bihwcm9wcy5jaGlsZHJlbik7XG4gICAgICB9XG4gICAgICBzZWxlY3RlZCA9IGZhbHNlO1xuICAg
ICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0VmFsdWUpKSB7XG4gICAgICAgIC8vIG11bHRpcGxl
XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0VmFsdWUubGVuZ3RoOyBpKyspIHtc
biAgICAgICAgICBpZiAoJycgKyBzZWxlY3RWYWx1ZVtpXSA9PT0gdmFsdWUpIHtcbiAgICAgICAg
ICAgIHNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAg
ICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWQgPSAnJyArIHNlbGVjdFZh
bHVlID09PSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUg
PSB7IHNlbGVjdGVkOiBzZWxlY3RlZCB9O1xuICB9LFxuXG4gIHBvc3RNb3VudFdyYXBwZXI6IGZ1
bmN0aW9uIChpbnN0KSB7XG4gICAgLy8gdmFsdWU9XCJcIiBzaG91bGQgbWFrZSBhIHZhbHVlIGF0
dHJpYnV0ZSAoIzYyMTkpXG4gICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJv
cHM7XG4gICAgaWYgKHByb3BzLnZhbHVlICE9IG51bGwpIHtcbiAgICAgIHZhciBub2RlID0gUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG4gICAgICBub2Rl
LnNldEF0dHJpYnV0ZSgndmFsdWUnLCBwcm9wcy52YWx1ZSk7XG4gICAgfVxuICB9LFxuXG4gIGdl
dEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG4gICAgdmFyIGhvc3RQcm9wcyA9
IF9hc3NpZ24oeyBzZWxlY3RlZDogdW5kZWZpbmVkLCBjaGlsZHJlbjogdW5kZWZpbmVkIH0sIHBy
b3BzKTtcblxuICAgIC8vIFJlYWQgc3RhdGUgb25seSBmcm9tIGluaXRpYWwgbW91bnQgYmVjYXVz
ZSA8c2VsZWN0PiB1cGRhdGVzIHZhbHVlXG4gICAgLy8gbWFudWFsbHk7IHdlIG5lZWQgdGhlIGlu
aXRpYWwgc3RhdGUgb25seSBmb3Igc2VydmVyIHJlbmRlcmluZ1xuICAgIGlmIChpbnN0Ll93cmFw
cGVyU3RhdGUuc2VsZWN0ZWQgIT0gbnVsbCkge1xuICAgICAgaG9zdFByb3BzLnNlbGVjdGVkID0g
aW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVkO1xuICAgIH1cblxuICAgIHZhciBjb250ZW50ID0g
ZmxhdHRlbkNoaWxkcmVuKHByb3BzLmNoaWxkcmVuKTtcblxuICAgIGlmIChjb250ZW50KSB7XG4g
ICAgICBob3N0UHJvcHMuY2hpbGRyZW4gPSBjb250ZW50O1xuICAgIH1cblxuICAgIHJldHVybiBo
b3N0UHJvcHM7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01PcHRpb247XG5c
blxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qt
ZG9tL2xpYi9SZWFjdERPTU9wdGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE0NFxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1
c2Ugc3RyaWN0JztcblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9s
aWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZz
ZXQgPSByZXF1aXJlKCcuL2dldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQnKTtcbnZhciBnZXRUZXh0
Q29udGVudEFjY2Vzc29yID0gcmVxdWlyZSgnLi9nZXRUZXh0Q29udGVudEFjY2Vzc29yJyk7XG5c
bi8qKlxuICogV2hpbGUgYGlzQ29sbGFwc2VkYCBpcyBhdmFpbGFibGUgb24gdGhlIFNlbGVjdGlv
biBvYmplY3QgYW5kIGBjb2xsYXBzZWRgXG4gKiBpcyBhdmFpbGFibGUgb24gdGhlIFJhbmdlIG9i
amVjdCwgSUUxMSBzb21ldGltZXMgZ2V0cyB0aGVtIHdyb25nLlxuICogSWYgdGhlIGFuY2hvci9m
b2N1cyBub2RlcyBhbmQgb2Zmc2V0cyBhcmUgdGhlIHNhbWUsIHRoZSByYW5nZSBpcyBjb2xsYXBz
ZWQuXG4gKi9cbmZ1bmN0aW9uIGlzQ29sbGFwc2VkKGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCwg
Zm9jdXNOb2RlLCBmb2N1c09mZnNldCkge1xuICByZXR1cm4gYW5jaG9yTm9kZSA9PT0gZm9jdXNO
b2RlICYmIGFuY2hvck9mZnNldCA9PT0gZm9jdXNPZmZzZXQ7XG59XG5cbi8qKlxuICogR2V0IHRo
ZSBhcHByb3ByaWF0ZSBhbmNob3IgYW5kIGZvY3VzIG5vZGUvb2Zmc2V0IHBhaXJzIGZvciBJRS5c
biAqXG4gKiBUaGUgY2F0Y2ggaGVyZSBpcyB0aGF0IElFJ3Mgc2VsZWN0aW9uIEFQSSBkb2Vzbid0
IHByb3ZpZGUgaW5mb3JtYXRpb25cbiAqIGFib3V0IHdoZXRoZXIgdGhlIHNlbGVjdGlvbiBpcyBm
b3J3YXJkIG9yIGJhY2t3YXJkLCBzbyB3ZSBoYXZlIHRvXG4gKiBiZWhhdmUgYXMgdGhvdWdoIGl0
J3MgYWx3YXlzIGZvcndhcmQuXG4gKlxuICogSUUgdGV4dCBkaWZmZXJzIGZyb20gbW9kZXJuIHNl
bGVjdGlvbiBpbiB0aGF0IGl0IGJlaGF2ZXMgYXMgdGhvdWdoXG4gKiBibG9jayBlbGVtZW50cyBl
bmQgd2l0aCBhIG5ldyBsaW5lLiBUaGlzIG1lYW5zIGNoYXJhY3RlciBvZmZzZXRzIHdpbGxcbiAq
IGRpZmZlciBiZXR3ZWVuIHRoZSB0d28gQVBJcy5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9
IG5vZGVcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0SUVPZmZzZXRzKG5v
ZGUpIHtcbiAgdmFyIHNlbGVjdGlvbiA9IGRvY3VtZW50LnNlbGVjdGlvbjtcbiAgdmFyIHNlbGVj
dGVkUmFuZ2UgPSBzZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtcbiAgdmFyIHNlbGVjdGVkTGVuZ3Ro
ID0gc2VsZWN0ZWRSYW5nZS50ZXh0Lmxlbmd0aDtcblxuICAvLyBEdXBsaWNhdGUgc2VsZWN0aW9u
IHNvIHdlIGNhbiBtb3ZlIHJhbmdlIHdpdGhvdXQgYnJlYWtpbmcgdXNlciBzZWxlY3Rpb24uXG4g
IHZhciBmcm9tU3RhcnQgPSBzZWxlY3RlZFJhbmdlLmR1cGxpY2F0ZSgpO1xuICBmcm9tU3RhcnQu
bW92ZVRvRWxlbWVudFRleHQobm9kZSk7XG4gIGZyb21TdGFydC5zZXRFbmRQb2ludCgnRW5kVG9T
dGFydCcsIHNlbGVjdGVkUmFuZ2UpO1xuXG4gIHZhciBzdGFydE9mZnNldCA9IGZyb21TdGFydC50
ZXh0Lmxlbmd0aDtcbiAgdmFyIGVuZE9mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgc2VsZWN0ZWRMZW5n
dGg7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydDogc3RhcnRPZmZzZXQsXG4gICAgZW5kOiBlbmRP
ZmZzZXRcbiAgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAqIEBy
ZXR1cm4gez9vYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldE1vZGVybk9mZnNldHMobm9kZSkge1xu
ICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbiAmJiB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCk7XG5cbiAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDAp
IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBhbmNob3JOb2RlID0gc2VsZWN0aW9u
LmFuY2hvck5vZGU7XG4gIHZhciBhbmNob3JPZmZzZXQgPSBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0
O1xuICB2YXIgZm9jdXNOb2RlID0gc2VsZWN0aW9uLmZvY3VzTm9kZTtcbiAgdmFyIGZvY3VzT2Zm
c2V0ID0gc2VsZWN0aW9uLmZvY3VzT2Zmc2V0O1xuXG4gIHZhciBjdXJyZW50UmFuZ2UgPSBzZWxl
Y3Rpb24uZ2V0UmFuZ2VBdCgwKTtcblxuICAvLyBJbiBGaXJlZm94LCByYW5nZS5zdGFydENvbnRh
aW5lciBhbmQgcmFuZ2UuZW5kQ29udGFpbmVyIGNhbiBiZSBcImFub255bW91c1xuICAvLyBkaXZz
XCIsIGUuZy4gdGhlIHVwL2Rvd24gYnV0dG9ucyBvbiBhbiA8aW5wdXQgdHlwZT1cIm51bWJlclwi
Pi4gQW5vbnltb3VzXG4gIC8vIGRpdnMgZG8gbm90IHNlZW0gdG8gZXhwb3NlIHByb3BlcnRpZXMs
IHRyaWdnZXJpbmcgYSBcIlBlcm1pc3Npb24gZGVuaWVkXG4gIC8vIGVycm9yXCIgaWYgYW55IG9m
IGl0cyBwcm9wZXJ0aWVzIGFyZSBhY2Nlc3NlZC4gVGhlIG9ubHkgc2VlbWluZ2x5IHBvc3NpYmxl
XG4gIC8vIHdheSB0byBhdm9pZCBlcnJvcmluZyBpcyB0byBhY2Nlc3MgYSBwcm9wZXJ0eSB0aGF0
IHR5cGljYWxseSB3b3JrcyBmb3JcbiAgLy8gbm9uLWFub255bW91cyBkaXZzIGFuZCBjYXRjaCBh
bnkgZXJyb3IgdGhhdCBtYXkgb3RoZXJ3aXNlIGFyaXNlLiBTZWVcbiAgLy8gaHR0cHM6Ly9idWd6
aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NDI3XG4gIHRyeSB7XG4gICAgLyog
ZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICovXG4gICAgY3VycmVudFJhbmdl
LnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlO1xuICAgIGN1cnJlbnRSYW5nZS5lbmRDb250YWluZXIu
bm9kZVR5cGU7XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMgKi9c
biAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gSWYgdGhlIG5v
ZGUgYW5kIG9mZnNldCB2YWx1ZXMgYXJlIHRoZSBzYW1lLCB0aGUgc2VsZWN0aW9uIGlzIGNvbGxh
cHNlZC5cbiAgLy8gYFNlbGVjdGlvbi5pc0NvbGxhcHNlZGAgaXMgYXZhaWxhYmxlIG5hdGl2ZWx5
LCBidXQgSUUgc29tZXRpbWVzIGdldHNcbiAgLy8gdGhpcyB2YWx1ZSB3cm9uZy5cbiAgdmFyIGlz
U2VsZWN0aW9uQ29sbGFwc2VkID0gaXNDb2xsYXBzZWQoc2VsZWN0aW9uLmFuY2hvck5vZGUsIHNl
bGVjdGlvbi5hbmNob3JPZmZzZXQsIHNlbGVjdGlvbi5mb2N1c05vZGUsIHNlbGVjdGlvbi5mb2N1
c09mZnNldCk7XG5cbiAgdmFyIHJhbmdlTGVuZ3RoID0gaXNTZWxlY3Rpb25Db2xsYXBzZWQgPyAw
IDogY3VycmVudFJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoO1xuXG4gIHZhciB0ZW1wUmFuZ2UgPSBj
dXJyZW50UmFuZ2UuY2xvbmVSYW5nZSgpO1xuICB0ZW1wUmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRz
KG5vZGUpO1xuICB0ZW1wUmFuZ2Uuc2V0RW5kKGN1cnJlbnRSYW5nZS5zdGFydENvbnRhaW5lciwg
Y3VycmVudFJhbmdlLnN0YXJ0T2Zmc2V0KTtcblxuICB2YXIgaXNUZW1wUmFuZ2VDb2xsYXBzZWQg
PSBpc0NvbGxhcHNlZCh0ZW1wUmFuZ2Uuc3RhcnRDb250YWluZXIsIHRlbXBSYW5nZS5zdGFydE9m
ZnNldCwgdGVtcFJhbmdlLmVuZENvbnRhaW5lciwgdGVtcFJhbmdlLmVuZE9mZnNldCk7XG5cbiAg
dmFyIHN0YXJ0ID0gaXNUZW1wUmFuZ2VDb2xsYXBzZWQgPyAwIDogdGVtcFJhbmdlLnRvU3RyaW5n
KCkubGVuZ3RoO1xuICB2YXIgZW5kID0gc3RhcnQgKyByYW5nZUxlbmd0aDtcblxuICAvLyBEZXRl
Y3Qgd2hldGhlciB0aGUgc2VsZWN0aW9uIGlzIGJhY2t3YXJkLlxuICB2YXIgZGV0ZWN0aW9uUmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICBkZXRlY3Rpb25SYW5nZS5zZXRTdGFydChh
bmNob3JOb2RlLCBhbmNob3JPZmZzZXQpO1xuICBkZXRlY3Rpb25SYW5nZS5zZXRFbmQoZm9jdXNO
b2RlLCBmb2N1c09mZnNldCk7XG4gIHZhciBpc0JhY2t3YXJkID0gZGV0ZWN0aW9uUmFuZ2UuY29s
bGFwc2VkO1xuXG4gIHJldHVybiB7XG4gICAgc3RhcnQ6IGlzQmFja3dhcmQgPyBlbmQgOiBzdGFy
dCxcbiAgICBlbmQ6IGlzQmFja3dhcmQgPyBzdGFydCA6IGVuZFxuICB9O1xufVxuXG4vKipcbiAq
IEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuICogQHBhcmFtIHtvYmplY3R9
IG9mZnNldHNcbiAqL1xuZnVuY3Rpb24gc2V0SUVPZmZzZXRzKG5vZGUsIG9mZnNldHMpIHtcbiAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7
XG4gIHZhciBzdGFydCwgZW5kO1xuXG4gIGlmIChvZmZzZXRzLmVuZCA9PT0gdW5kZWZpbmVkKSB7
XG4gICAgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0O1xuICAgIGVuZCA9IHN0YXJ0O1xuICB9IGVsc2Ug
aWYgKG9mZnNldHMuc3RhcnQgPiBvZmZzZXRzLmVuZCkge1xuICAgIHN0YXJ0ID0gb2Zmc2V0cy5l
bmQ7XG4gICAgZW5kID0gb2Zmc2V0cy5zdGFydDtcbiAgfSBlbHNlIHtcbiAgICBzdGFydCA9IG9m
ZnNldHMuc3RhcnQ7XG4gICAgZW5kID0gb2Zmc2V0cy5lbmQ7XG4gIH1cblxuICByYW5nZS5tb3Zl
VG9FbGVtZW50VGV4dChub2RlKTtcbiAgcmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBzdGFy
dCk7XG4gIHJhbmdlLnNldEVuZFBvaW50KCdFbmRUb1N0YXJ0JywgcmFuZ2UpO1xuICByYW5nZS5t
b3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQgLSBzdGFydCk7XG4gIHJhbmdlLnNlbGVjdCgpO1xufVxu
XG4vKipcbiAqIEluIG1vZGVybiBub24tSUUgYnJvd3NlcnMsIHdlIGNhbiBzdXBwb3J0IGJvdGgg
Zm9yd2FyZCBhbmQgYmFja3dhcmRcbiAqIHNlbGVjdGlvbnMuXG4gKlxuICogTm90ZTogSUUxMCsg
c3VwcG9ydHMgdGhlIFNlbGVjdGlvbiBvYmplY3QsIGJ1dCBpdCBkb2VzIG5vdCBzdXBwb3J0XG4g
KiB0aGUgYGV4dGVuZGAgbWV0aG9kLCB3aGljaCBtZWFucyB0aGF0IGV2ZW4gaW4gbW9kZXJuIElF
LCBpdCdzIG5vdCBwb3NzaWJsZVxuICogdG8gcHJvZ3JhbW1hdGljYWxseSBjcmVhdGUgYSBiYWNr
d2FyZCBzZWxlY3Rpb24uIFRodXMsIGZvciBhbGwgSUVcbiAqIHZlcnNpb25zLCB3ZSB1c2UgdGhl
IG9sZCBJRSBBUEkgdG8gY3JlYXRlIG91ciBzZWxlY3Rpb25zLlxuICpcbiAqIEBwYXJhbSB7RE9N
RWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHNcbiAq
L1xuZnVuY3Rpb24gc2V0TW9kZXJuT2Zmc2V0cyhub2RlLCBvZmZzZXRzKSB7XG4gIGlmICghd2lu
ZG93LmdldFNlbGVjdGlvbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBzZWxlY3Rpb24g
PSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIHZhciBsZW5ndGggPSBub2RlW2dldFRleHRDb250
ZW50QWNjZXNzb3IoKV0ubGVuZ3RoO1xuICB2YXIgc3RhcnQgPSBNYXRoLm1pbihvZmZzZXRzLnN0
YXJ0LCBsZW5ndGgpO1xuICB2YXIgZW5kID0gb2Zmc2V0cy5lbmQgPT09IHVuZGVmaW5lZCA/IHN0
YXJ0IDogTWF0aC5taW4ob2Zmc2V0cy5lbmQsIGxlbmd0aCk7XG5cbiAgLy8gSUUgMTEgdXNlcyBt
b2Rlcm4gc2VsZWN0aW9uLCBidXQgZG9lc24ndCBzdXBwb3J0IHRoZSBleHRlbmQgbWV0aG9kLlxu
ICAvLyBGbGlwIGJhY2t3YXJkIHNlbGVjdGlvbnMsIHNvIHdlIGNhbiBzZXQgd2l0aCBhIHNpbmds
ZSByYW5nZS5cbiAgaWYgKCFzZWxlY3Rpb24uZXh0ZW5kICYmIHN0YXJ0ID4gZW5kKSB7XG4gICAg
dmFyIHRlbXAgPSBlbmQ7XG4gICAgZW5kID0gc3RhcnQ7XG4gICAgc3RhcnQgPSB0ZW1wO1xuICB9
XG5cbiAgdmFyIHN0YXJ0TWFya2VyID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChub2RlLCBz
dGFydCk7XG4gIHZhciBlbmRNYXJrZXIgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KG5vZGUs
IGVuZCk7XG5cbiAgaWYgKHN0YXJ0TWFya2VyICYmIGVuZE1hcmtlcikge1xuICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnRNYXJr
ZXIubm9kZSwgc3RhcnRNYXJrZXIub2Zmc2V0KTtcbiAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFu
Z2VzKCk7XG5cbiAgICBpZiAoc3RhcnQgPiBlbmQpIHtcbiAgICAgIHNlbGVjdGlvbi5hZGRSYW5n
ZShyYW5nZSk7XG4gICAgICBzZWxlY3Rpb24uZXh0ZW5kKGVuZE1hcmtlci5ub2RlLCBlbmRNYXJr
ZXIub2Zmc2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZ2Uuc2V0RW5kKGVuZE1hcmtlci5u
b2RlLCBlbmRNYXJrZXIub2Zmc2V0KTtcbiAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7
XG4gICAgfVxuICB9XG59XG5cbnZhciB1c2VJRU9mZnNldHMgPSBFeGVjdXRpb25FbnZpcm9ubWVu
dC5jYW5Vc2VET00gJiYgJ3NlbGVjdGlvbicgaW4gZG9jdW1lbnQgJiYgISgnZ2V0U2VsZWN0aW9u
JyBpbiB3aW5kb3cpO1xuXG52YXIgUmVhY3RET01TZWxlY3Rpb24gPSB7XG4gIC8qKlxuICAgKiBA
cGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAgICovXG4gIGdldE9mZnNldHM6IHVzZUlFT2Zmc2V0
cyA/IGdldElFT2Zmc2V0cyA6IGdldE1vZGVybk9mZnNldHMsXG5cbiAgLyoqXG4gICAqIEBwYXJh
bSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuICAgKiBAcGFyYW0ge29iamVjdH0gb2Zm
c2V0c1xuICAgKi9cbiAgc2V0T2Zmc2V0czogdXNlSUVPZmZzZXRzID8gc2V0SUVPZmZzZXRzIDog
c2V0TW9kZXJuT2Zmc2V0c1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdGlv
bjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1kb20vbGliL1JlYWN0RE9NU2VsZWN0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gMTQ1XG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4g
Ki9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3Jl
YWN0UHJvZEludmFyaWFudCcpLFxuICAgIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWdu
Jyk7XG5cbnZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0RPTUNoaWxkcmVu
T3BlcmF0aW9ucycpO1xudmFyIERPTUxhenlUcmVlID0gcmVxdWlyZSgnLi9ET01MYXp5VHJlZScp
O1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25l
bnRUcmVlJyk7XG5cbnZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSByZXF1aXJlKCcu
L2VzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUo
J2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IHJlcXVpcmUo
Jy4vdmFsaWRhdGVET01OZXN0aW5nJyk7XG5cbi8qKlxuICogVGV4dCBub2RlcyB2aW9sYXRlIGEg
Y291cGxlIGFzc3VtcHRpb25zIHRoYXQgUmVhY3QgbWFrZXMgYWJvdXQgY29tcG9uZW50czpcbiAq
XG4gKiAgLSBXaGVuIG1vdW50aW5nIHRleHQgaW50byB0aGUgRE9NLCBhZGphY2VudCB0ZXh0IG5v
ZGVzIGFyZSBtZXJnZWQuXG4gKiAgLSBUZXh0IG5vZGVzIGNhbm5vdCBiZSBhc3NpZ25lZCBhIFJl
YWN0IHJvb3QgSUQuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMgdXNlZCB0byB3cmFwIHN0cmlu
Z3MgYmV0d2VlbiBjb21tZW50IG5vZGVzIHNvIHRoYXQgdGhleVxuICogY2FuIHVuZGVyZ28gdGhl
IHNhbWUgcmVjb25jaWxpYXRpb24gdGhhdCBpcyBhcHBsaWVkIHRvIGVsZW1lbnRzLlxuICpcbiAq
IFRPRE86IEludmVzdGlnYXRlIHJlcHJlc2VudGluZyBSZWFjdCBjb21wb25lbnRzIGluIHRoZSBE
T00gd2l0aCB0ZXh0IG5vZGVzLlxuICpcbiAqIEBjbGFzcyBSZWFjdERPTVRleHRDb21wb25lbnRc
biAqIEBleHRlbmRzIFJlYWN0Q29tcG9uZW50XG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIFJlYWN0
RE9NVGV4dENvbXBvbmVudCA9IGZ1bmN0aW9uICh0ZXh0KSB7XG4gIC8vIFRPRE86IFRoaXMgaXMg
cmVhbGx5IGEgUmVhY3RUZXh0IChSZWFjdE5vZGUpLCBub3QgYSBSZWFjdEVsZW1lbnRcbiAgdGhp
cy5fY3VycmVudEVsZW1lbnQgPSB0ZXh0O1xuICB0aGlzLl9zdHJpbmdUZXh0ID0gJycgKyB0ZXh0
O1xuICAvLyBSZWFjdERPTUNvbXBvbmVudFRyZWUgdXNlcyB0aGVzZTpcbiAgdGhpcy5faG9zdE5v
ZGUgPSBudWxsO1xuICB0aGlzLl9ob3N0UGFyZW50ID0gbnVsbDtcblxuICAvLyBQcm9wZXJ0aWVz
XG4gIHRoaXMuX2RvbUlEID0gMDtcbiAgdGhpcy5fbW91bnRJbmRleCA9IDA7XG4gIHRoaXMuX2Ns
b3NpbmdDb21tZW50ID0gbnVsbDtcbiAgdGhpcy5fY29tbWVudE5vZGVzID0gbnVsbDtcbn07XG5c
bl9hc3NpZ24oUmVhY3RET01UZXh0Q29tcG9uZW50LnByb3RvdHlwZSwge1xuICAvKipcbiAgICog
Q3JlYXRlcyB0aGUgbWFya3VwIGZvciB0aGlzIHRleHQgbm9kZS4gVGhpcyBub2RlIGlzIG5vdCBp
bnRlbmRlZCB0byBoYXZlXG4gICAqIGFueSBmZWF0dXJlcyBiZXNpZGVzIGNvbnRhaW5pbmcgdGV4
dCBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258
UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHJldHVy
biB7c3RyaW5nfSBNYXJrdXAgZm9yIHRoaXMgdGV4dCBub2RlLlxuICAgKiBAaW50ZXJuYWxcbiAg
ICovXG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQs
IGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBwYXJlbnRJbmZvO1xuICAgICAgaWYg
KGhvc3RQYXJlbnQgIT0gbnVsbCkge1xuICAgICAgICBwYXJlbnRJbmZvID0gaG9zdFBhcmVudC5f
YW5jZXN0b3JJbmZvO1xuICAgICAgfSBlbHNlIGlmIChob3N0Q29udGFpbmVySW5mbyAhPSBudWxs
KSB7XG4gICAgICAgIHBhcmVudEluZm8gPSBob3N0Q29udGFpbmVySW5mby5fYW5jZXN0b3JJbmZv
O1xuICAgICAgfVxuICAgICAgaWYgKHBhcmVudEluZm8pIHtcbiAgICAgICAgLy8gcGFyZW50SW5m
byBzaG91bGQgYWx3YXlzIGJlIHByZXNlbnQgZXhjZXB0IGZvciB0aGUgdG9wLWxldmVsXG4gICAg
ICAgIC8vIGNvbXBvbmVudCB3aGVuIHNlcnZlciByZW5kZXJpbmdcbiAgICAgICAgdmFsaWRhdGVE
T01OZXN0aW5nKG51bGwsIHRoaXMuX3N0cmluZ1RleHQsIHRoaXMsIHBhcmVudEluZm8pO1xuICAg
ICAgfVxuICAgIH1cblxuICAgIHZhciBkb21JRCA9IGhvc3RDb250YWluZXJJbmZvLl9pZENvdW50
ZXIrKztcbiAgICB2YXIgb3BlbmluZ1ZhbHVlID0gJyByZWFjdC10ZXh0OiAnICsgZG9tSUQgKyAn
ICc7XG4gICAgdmFyIGNsb3NpbmdWYWx1ZSA9ICcgL3JlYWN0LXRleHQgJztcbiAgICB0aGlzLl9k
b21JRCA9IGRvbUlEO1xuICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50O1xuICAgIGlm
ICh0cmFuc2FjdGlvbi51c2VDcmVhdGVFbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXJEb2N1bWVu
dCA9IGhvc3RDb250YWluZXJJbmZvLl9vd25lckRvY3VtZW50O1xuICAgICAgdmFyIG9wZW5pbmdD
b21tZW50ID0gb3duZXJEb2N1bWVudC5jcmVhdGVDb21tZW50KG9wZW5pbmdWYWx1ZSk7XG4gICAg
ICB2YXIgY2xvc2luZ0NvbW1lbnQgPSBvd25lckRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoY2xvc2lu
Z1ZhbHVlKTtcbiAgICAgIHZhciBsYXp5VHJlZSA9IERPTUxhenlUcmVlKG93bmVyRG9jdW1lbnQu
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKTtcbiAgICAgIERPTUxhenlUcmVlLnF1ZXVlQ2hpbGQo
bGF6eVRyZWUsIERPTUxhenlUcmVlKG9wZW5pbmdDb21tZW50KSk7XG4gICAgICBpZiAodGhpcy5f
c3RyaW5nVGV4dCkge1xuICAgICAgICBET01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBE
T01MYXp5VHJlZShvd25lckRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuX3N0cmluZ1RleHQp
KSk7XG4gICAgICB9XG4gICAgICBET01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBET01M
YXp5VHJlZShjbG9zaW5nQ29tbWVudCkpO1xuICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnBy
ZWNhY2hlTm9kZSh0aGlzLCBvcGVuaW5nQ29tbWVudCk7XG4gICAgICB0aGlzLl9jbG9zaW5nQ29t
bWVudCA9IGNsb3NpbmdDb21tZW50O1xuICAgICAgcmV0dXJuIGxhenlUcmVlO1xuICAgIH0gZWxz
ZSB7XG4gICAgICB2YXIgZXNjYXBlZFRleHQgPSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIo
dGhpcy5fc3RyaW5nVGV4dCk7XG5cbiAgICAgIGlmICh0cmFuc2FjdGlvbi5yZW5kZXJUb1N0YXRp
Y01hcmt1cCkge1xuICAgICAgICAvLyBOb3JtYWxseSB3ZSdkIHdyYXAgdGhpcyBiZXR3ZWVuIGNv
bW1lbnQgbm9kZXMgZm9yIHRoZSByZWFzb25zIHN0YXRlZFxuICAgICAgICAvLyBhYm92ZSwgYnV0
IHNpbmNlIHRoaXMgaXMgYSBzaXR1YXRpb24gd2hlcmUgUmVhY3Qgd29uJ3QgdGFrZSBvdmVyXG4g
ICAgICAgIC8vIChzdGF0aWMgcGFnZXMpLCB3ZSBjYW4gc2ltcGx5IHJldHVybiB0aGUgdGV4dCBh
cyBpdCBpcy5cbiAgICAgICAgcmV0dXJuIGVzY2FwZWRUZXh0O1xuICAgICAgfVxuXG4gICAgICBy
ZXR1cm4gJzwhLS0nICsgb3BlbmluZ1ZhbHVlICsgJy0tPicgKyBlc2NhcGVkVGV4dCArICc8IS0t
JyArIGNsb3NpbmdWYWx1ZSArICctLT4nO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogVXBk
YXRlcyB0aGlzIGNvbXBvbmVudCBieSB1cGRhdGluZyB0aGUgdGV4dCBjb250ZW50LlxuICAgKlxu
ICAgKiBAcGFyYW0ge1JlYWN0VGV4dH0gbmV4dFRleHQgVGhlIG5leHQgdGV4dCBjb250ZW50XG4g
ICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICog
QGludGVybmFsXG4gICAqL1xuICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAobmV4dFRleHQs
IHRyYW5zYWN0aW9uKSB7XG4gICAgaWYgKG5leHRUZXh0ICE9PSB0aGlzLl9jdXJyZW50RWxlbWVu
dCkge1xuICAgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0VGV4dDtcbiAgICAgIHZhciBu
ZXh0U3RyaW5nVGV4dCA9ICcnICsgbmV4dFRleHQ7XG4gICAgICBpZiAobmV4dFN0cmluZ1RleHQg
IT09IHRoaXMuX3N0cmluZ1RleHQpIHtcbiAgICAgICAgLy8gVE9ETzogU2F2ZSB0aGlzIGFzIHBl
bmRpbmcgcHJvcHMgYW5kIHVzZSBwZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnlcbiAgICAgICAgLy8g
YW5kL29yIHVwZGF0ZUNvbXBvbmVudCB0byBkbyB0aGUgYWN0dWFsIHVwZGF0ZSBmb3IgY29uc2lz
dGVuY3kgd2l0aFxuICAgICAgICAvLyBvdGhlciBjb21wb25lbnQgdHlwZXM/XG4gICAgICAgIHRo
aXMuX3N0cmluZ1RleHQgPSBuZXh0U3RyaW5nVGV4dDtcbiAgICAgICAgdmFyIGNvbW1lbnROb2Rl
cyA9IHRoaXMuZ2V0SG9zdE5vZGUoKTtcbiAgICAgICAgRE9NQ2hpbGRyZW5PcGVyYXRpb25zLnJl
cGxhY2VEZWxpbWl0ZWRUZXh0KGNvbW1lbnROb2Rlc1swXSwgY29tbWVudE5vZGVzWzFdLCBuZXh0
U3RyaW5nVGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGdldEhvc3ROb2RlOiBmdW5j
dGlvbiAoKSB7XG4gICAgdmFyIGhvc3ROb2RlID0gdGhpcy5fY29tbWVudE5vZGVzO1xuICAgIGlm
IChob3N0Tm9kZSkge1xuICAgICAgcmV0dXJuIGhvc3ROb2RlO1xuICAgIH1cbiAgICBpZiAoIXRo
aXMuX2Nsb3NpbmdDb21tZW50KSB7XG4gICAgICB2YXIgb3BlbmluZ0NvbW1lbnQgPSBSZWFjdERP
TUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKTtcbiAgICAgIHZhciBub2Rl
ID0gb3BlbmluZ0NvbW1lbnQubmV4dFNpYmxpbmc7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAg
ICAgICAhKG5vZGUgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnTWlzc2luZyBjbG9zaW5nIGNvbW1lbnQgZm9yIHRleHQg
Y29tcG9uZW50ICVzJywgdGhpcy5fZG9tSUQpIDogX3Byb2RJbnZhcmlhbnQoJzY3JywgdGhpcy5f
ZG9tSUQpIDogdm9pZCAwO1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gOCAmJiBub2Rl
Lm5vZGVWYWx1ZSA9PT0gJyAvcmVhY3QtdGV4dCAnKSB7XG4gICAgICAgICAgdGhpcy5fY2xvc2lu
Z0NvbW1lbnQgPSBub2RlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG5v
ZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgfVxuICAgIH1cbiAgICBob3N0Tm9kZSA9IFt0
aGlzLl9ob3N0Tm9kZSwgdGhpcy5fY2xvc2luZ0NvbW1lbnRdO1xuICAgIHRoaXMuX2NvbW1lbnRO
b2RlcyA9IGhvc3ROb2RlO1xuICAgIHJldHVybiBob3N0Tm9kZTtcbiAgfSxcblxuICB1bm1vdW50
Q29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBudWxs
O1xuICAgIHRoaXMuX2NvbW1lbnROb2RlcyA9IG51bGw7XG4gICAgUmVhY3RET01Db21wb25lbnRU
cmVlLnVuY2FjaGVOb2RlKHRoaXMpO1xuICB9XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFj
dERPTVRleHRDb21wb25lbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVRleHRDb21wb25lbnQuanNcbiAq
KiBtb2R1bGUgaWQgPSAxNDZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFy
aWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50JyksXG4gICAgX2Fzc2lnbiA9IHJl
cXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIExpbmtlZFZhbHVlVXRpbHMgPSByZXF1aXJl
KCcuL0xpbmtlZFZhbHVlVXRpbHMnKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1
aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVp
cmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xp
Yi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycp
O1xuXG52YXIgZGlkV2FyblZhbHVlTGluayA9IGZhbHNlO1xudmFyIGRpZFdhcm5WYWxEZWZhdWx0
VmFsID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3VudGVkKCkge1xuICBpZiAo
dGhpcy5fcm9vdE5vZGVJRCkge1xuICAgIC8vIERPTSBjb21wb25lbnQgaXMgc3RpbGwgbW91bnRl
ZDsgdXBkYXRlXG4gICAgUmVhY3RET01UZXh0YXJlYS51cGRhdGVXcmFwcGVyKHRoaXMpO1xuICB9
XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyBhIDx0ZXh0YXJlYT4gaG9zdCBjb21wb25lbnQgdGhh
dCBhbGxvd3Mgc2V0dGluZyBgdmFsdWVgLCBhbmRcbiAqIGBkZWZhdWx0VmFsdWVgLiBUaGlzIGRp
ZmZlcnMgZnJvbSB0aGUgdHJhZGl0aW9uYWwgRE9NIEFQSSBiZWNhdXNlIHZhbHVlIGlzXG4gKiB1
c3VhbGx5IHNldCBhcyBQQ0RBVEEgY2hpbGRyZW4uXG4gKlxuICogSWYgYHZhbHVlYCBpcyBub3Qg
c3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zIHRoYXQgYWZmZWN0IHRo
ZVxuICogdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuXG4gKlxuICog
SWYgYHZhbHVlYCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5k
ZXJlZCBlbGVtZW50IHdpbGxcbiAqIG5vdCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQu
IEluc3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBjaGFuZ2UgaW5cbiAqIG9yZGVyIGZvciB0
aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLlxuICpcbiAqIFRoZSByZW5kZXJlZCBl
bGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCBhbiBlbXB0eSB2YWx1ZSwgdGhlIHByb3Bc
biAqIGBkZWZhdWx0VmFsdWVgIGlmIHNwZWNpZmllZCwgb3IgdGhlIGNoaWxkcmVuIGNvbnRlbnQg
KGRlcHJlY2F0ZWQpLlxuICovXG52YXIgUmVhY3RET01UZXh0YXJlYSA9IHtcbiAgZ2V0SG9zdFBy
b3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICAhKHByb3BzLmRhbmdlcm91c2x5U2V0
SW5uZXJIVE1MID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ2BkYW5nZXJvdXNseVNldElubmVySFRNTGAgZG9lcyBub3Qg
bWFrZSBzZW5zZSBvbiA8dGV4dGFyZWE+LicpIDogX3Byb2RJbnZhcmlhbnQoJzkxJykgOiB2b2lk
IDA7XG5cbiAgICAvLyBBbHdheXMgc2V0IGNoaWxkcmVuIHRvIHRoZSBzYW1lIHRoaW5nLiBJbiBJ
RTksIHRoZSBzZWxlY3Rpb24gcmFuZ2Ugd2lsbFxuICAgIC8vIGdldCByZXNldCBpZiBgdGV4dENv
bnRlbnRgIGlzIG11dGF0ZWQuICBXZSBjb3VsZCBhZGQgYSBjaGVjayBpbiBzZXRUZXh0Q29udGVu
dFxuICAgIC8vIHRvIG9ubHkgc2V0IHRoZSB2YWx1ZSBpZi93aGVuIHRoZSB2YWx1ZSBkaWZmZXJz
IGZyb20gdGhlIG5vZGUgdmFsdWUgKHdoaWNoIHdvdWxkXG4gICAgLy8gY29tcGxldGVseSBzb2x2
ZSB0aGlzIElFOSBidWcpLCBidXQgU2ViYXN0aWFuK0JlbiBzZWVtZWQgdG8gbGlrZSB0aGlzIHNv
bHV0aW9uLlxuICAgIC8vIFRoZSB2YWx1ZSBjYW4gYmUgYSBib29sZWFuIG9yIG9iamVjdCBzbyB0
aGF0J3Mgd2h5IGl0J3MgZm9yY2VkIHRvIGJlIGEgc3RyaW5nLlxuICAgIHZhciBob3N0UHJvcHMg
PSBfYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGRl
ZmF1bHRWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgY2hpbGRyZW46ICcnICsgaW5zdC5fd3JhcHBl
clN0YXRlLmluaXRpYWxWYWx1ZSxcbiAgICAgIG9uQ2hhbmdlOiBpbnN0Ll93cmFwcGVyU3RhdGUu
b25DaGFuZ2VcbiAgICB9KTtcblxuICAgIHJldHVybiBob3N0UHJvcHM7XG4gIH0sXG5cbiAgbW91
bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgTGlua2VkVmFsdWVVdGlscy5jaGVj
a1Byb3BUeXBlcygndGV4dGFyZWEnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVy
KTtcbiAgICAgIGlmIChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZh
bHVlTGluaykge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhmYWxzZSwgJ2B2YWx1ZUxpbmtgIHByb3Agb24gYHRleHRhcmVhYCBpcyBkZXBy
ZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFkLicpIDogdm9pZCAwO1xu
ICAgICAgICBkaWRXYXJuVmFsdWVMaW5rID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9w
cy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVk
ICYmICFkaWRXYXJuVmFsRGVmYXVsdFZhbCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1RleHRhcmVhIGVsZW1lbnRzIG11
c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0
aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgJyAr
ICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxl
ZCB0ZXh0YXJlYSAnICsgJ2FuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86
ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnKSA6IHZvaWQg
MDtcbiAgICAgICAgZGlkV2FyblZhbERlZmF1bHRWYWwgPSB0cnVlO1xuICAgICAgfVxuICAgIH1c
blxuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuICAg
IHZhciBpbml0aWFsVmFsdWUgPSB2YWx1ZTtcblxuICAgIC8vIE9ubHkgYm90aGVyIGZldGNoaW5n
IGRlZmF1bHQgdmFsdWUgaWYgd2UncmUgZ29pbmcgdG8gdXNlIGl0XG4gICAgaWYgKHZhbHVlID09
IG51bGwpIHtcbiAgICAgIHZhciBkZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7XG4g
ICAgICAvLyBUT0RPICh5dW5nc3RlcnMpOiBSZW1vdmUgc3VwcG9ydCBmb3IgY2hpbGRyZW4gY29u
dGVudCBpbiA8dGV4dGFyZWE+LlxuICAgICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47
XG4gICAgICBpZiAoY2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVXNlIHRoZSBgZGVmYXVsdFZh
bHVlYCBvciBgdmFsdWVgIHByb3BzIGluc3RlYWQgb2Ygc2V0dGluZyAnICsgJ2NoaWxkcmVuIG9u
IDx0ZXh0YXJlYT4uJykgOiB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAgICAgIShkZWZhdWx0VmFs
dWUgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnSWYgeW91IHN1cHBseSBgZGVmYXVsdFZhbHVlYCBvbiBhIDx0ZXh0YXJl
YT4sIGRvIG5vdCBwYXNzIGNoaWxkcmVuLicpIDogX3Byb2RJbnZhcmlhbnQoJzkyJykgOiB2b2lk
IDA7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICAgICEo
Y2hpbGRyZW4ubGVuZ3RoIDw9IDEpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJzx0ZXh0YXJlYT4gY2FuIG9ubHkgaGF2ZSBhdCBtb3N0
IG9uZSBjaGlsZC4nKSA6IF9wcm9kSW52YXJpYW50KCc5MycpIDogdm9pZCAwO1xuICAgICAgICAg
IGNoaWxkcmVuID0gY2hpbGRyZW5bMF07XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0VmFs
dWUgPSAnJyArIGNoaWxkcmVuO1xuICAgICAgfVxuICAgICAgaWYgKGRlZmF1bHRWYWx1ZSA9PSBu
dWxsKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9ICcnO1xuICAgICAgfVxuICAgICAgaW5pdGlh
bFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9
IHtcbiAgICAgIGluaXRpYWxWYWx1ZTogJycgKyBpbml0aWFsVmFsdWUsXG4gICAgICBsaXN0ZW5l
cnM6IG51bGwsXG4gICAgICBvbkNoYW5nZTogX2hhbmRsZUNoYW5nZS5iaW5kKGluc3QpXG4gICAg
fTtcbiAgfSxcblxuICB1cGRhdGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIHZhciBw
cm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4gICAgdmFyIG5vZGUgPSBSZWFj
dERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcbiAgICB2YXIgdmFs
dWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpZiAodmFsdWUgIT0g
bnVsbCkge1xuICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUg
dmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hpbGVcbiAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxs
eSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwganNkb20gZG9lc24ndC5cbiAgICAgIHZhciBuZXdWYWx1
ZSA9ICcnICsgdmFsdWU7XG5cbiAgICAgIC8vIFRvIGF2b2lkIHNpZGUgZWZmZWN0cyAoc3VjaCBh
cyBsb3NpbmcgdGV4dCBzZWxlY3Rpb24pLCBvbmx5IHNldCB2YWx1ZSBpZiBjaGFuZ2VkXG4gICAg
ICBpZiAobmV3VmFsdWUgIT09IG5vZGUudmFsdWUpIHtcbiAgICAgICAgbm9kZS52YWx1ZSA9IG5l
d1ZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmRlZmF1bHRWYWx1ZSA9PSBudWxsKSB7
XG4gICAgICAgIG5vZGUuZGVmYXVsdFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxu
ICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuICAgICAgbm9kZS5kZWZhdWx0
VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7XG4gICAgfVxuICB9LFxuXG4gIHBvc3RNb3VudFdy
YXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgLy8gVGhpcyBpcyBpbiBwb3N0TW91bnQgYmVj
YXVzZSB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgRE9NIG5vZGUsIHdoaWNoIGlzIG5vdFxuICAgIC8v
IGF2YWlsYWJsZSB1bnRpbCBhZnRlciB0aGUgY29tcG9uZW50IGhhcyBtb3VudGVkLlxuICAgIHZh
ciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7
XG4gICAgdmFyIHRleHRDb250ZW50ID0gbm9kZS50ZXh0Q29udGVudDtcblxuICAgIC8vIE9ubHkg
c2V0IG5vZGUudmFsdWUgaWYgdGV4dENvbnRlbnQgaXMgZXF1YWwgdG8gdGhlIGV4cGVjdGVkXG4g
ICAgLy8gaW5pdGlhbCB2YWx1ZS4gSW4gSUUxMC9JRTExIHRoZXJlIGlzIGEgYnVnIHdoZXJlIHRo
ZSBwbGFjZWhvbGRlciBhdHRyaWJ1dGVcbiAgICAvLyB3aWxsIHBvcHVsYXRlIHRleHRDb250ZW50
IGFzIHdlbGwuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubWljcm9zb2Z0LmNvbS9taWNyb3Nv
ZnQtZWRnZS9wbGF0Zm9ybS9pc3N1ZXMvMTAxNTI1L1xuICAgIGlmICh0ZXh0Q29udGVudCA9PT0g
aW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSkge1xuICAgICAgbm9kZS52YWx1ZSA9IHRl
eHRDb250ZW50O1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gX2hhbmRsZUNoYW5nZShldmVu
dCkge1xuICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgdmFyIHJl
dHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2ZW50
KTtcbiAgUmVhY3RVcGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIHRoaXMpO1xuICBy
ZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01UZXh0YXJl
YTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1kb20vbGliL1JlYWN0RE9NVGV4dGFyZWEuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDdcbiAq
KiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVh
Y3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9p
bnZhcmlhbnQnKTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGxvd2VzdCBjb21tb24gYW5jZXN0b3Ig
b2YgQSBhbmQgQiwgb3IgbnVsbCBpZiB0aGV5IGFyZSBpblxuICogZGlmZmVyZW50IHRyZWVzLlxu
ICovXG5mdW5jdGlvbiBnZXRMb3dlc3RDb21tb25BbmNlc3RvcihpbnN0QSwgaW5zdEIpIHtcbiAg
ISgnX2hvc3ROb2RlJyBpbiBpbnN0QSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0Tm9kZUZyb21JbnN0YW5jZTogSW52YWxpZCBh
cmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczMycpIDogdm9pZCAwO1xuICAhKCdfaG9zdE5v
ZGUnIGluIGluc3RCKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50Licp
IDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7XG5cbiAgdmFyIGRlcHRoQSA9IDA7XG4g
IGZvciAodmFyIHRlbXBBID0gaW5zdEE7IHRlbXBBOyB0ZW1wQSA9IHRlbXBBLl9ob3N0UGFyZW50
KSB7XG4gICAgZGVwdGhBKys7XG4gIH1cbiAgdmFyIGRlcHRoQiA9IDA7XG4gIGZvciAodmFyIHRl
bXBCID0gaW5zdEI7IHRlbXBCOyB0ZW1wQiA9IHRlbXBCLl9ob3N0UGFyZW50KSB7XG4gICAgZGVw
dGhCKys7XG4gIH1cblxuICAvLyBJZiBBIGlzIGRlZXBlciwgY3Jhd2wgdXAuXG4gIHdoaWxlIChk
ZXB0aEEgLSBkZXB0aEIgPiAwKSB7XG4gICAgaW5zdEEgPSBpbnN0QS5faG9zdFBhcmVudDtcbiAg
ICBkZXB0aEEtLTtcbiAgfVxuXG4gIC8vIElmIEIgaXMgZGVlcGVyLCBjcmF3bCB1cC5cbiAgd2hp
bGUgKGRlcHRoQiAtIGRlcHRoQSA+IDApIHtcbiAgICBpbnN0QiA9IGluc3RCLl9ob3N0UGFyZW50
O1xuICAgIGRlcHRoQi0tO1xuICB9XG5cbiAgLy8gV2FsayBpbiBsb2Nrc3RlcCB1bnRpbCB3ZSBm
aW5kIGEgbWF0Y2guXG4gIHZhciBkZXB0aCA9IGRlcHRoQTtcbiAgd2hpbGUgKGRlcHRoLS0pIHtc
biAgICBpZiAoaW5zdEEgPT09IGluc3RCKSB7XG4gICAgICByZXR1cm4gaW5zdEE7XG4gICAgfVxu
ICAgIGluc3RBID0gaW5zdEEuX2hvc3RQYXJlbnQ7XG4gICAgaW5zdEIgPSBpbnN0Qi5faG9zdFBh
cmVudDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXR1cm4gaWYgQSBpcyBh
biBhbmNlc3RvciBvZiBCLlxuICovXG5mdW5jdGlvbiBpc0FuY2VzdG9yKGluc3RBLCBpbnN0Qikg
e1xuICAhKCdfaG9zdE5vZGUnIGluIGluc3RBKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdpc0FuY2VzdG9yOiBJbnZhbGlkIGFyZ3Vt
ZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzM1JykgOiB2b2lkIDA7XG4gICEoJ19ob3N0Tm9kZScg
aW4gaW5zdEIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ2lzQW5jZXN0b3I6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFy
aWFudCgnMzUnKSA6IHZvaWQgMDtcblxuICB3aGlsZSAoaW5zdEIpIHtcbiAgICBpZiAoaW5zdEIg
PT09IGluc3RBKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaW5zdEIgPSBpbnN0
Qi5faG9zdFBhcmVudDtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogUmV0dXJu
IHRoZSBwYXJlbnQgaW5zdGFuY2Ugb2YgdGhlIHBhc3NlZC1pbiBpbnN0YW5jZS5cbiAqL1xuZnVu
Y3Rpb24gZ2V0UGFyZW50SW5zdGFuY2UoaW5zdCkge1xuICAhKCdfaG9zdE5vZGUnIGluIGluc3Qp
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ2dldFBhcmVudEluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlh
bnQoJzM2JykgOiB2b2lkIDA7XG5cbiAgcmV0dXJuIGluc3QuX2hvc3RQYXJlbnQ7XG59XG5cbi8q
KlxuICogU2ltdWxhdGVzIHRoZSB0cmF2ZXJzYWwgb2YgYSB0d28tcGhhc2UsIGNhcHR1cmUvYnVi
YmxlIGV2ZW50IGRpc3BhdGNoLlxuICovXG5mdW5jdGlvbiB0cmF2ZXJzZVR3b1BoYXNlKGluc3Qs
IGZuLCBhcmcpIHtcbiAgdmFyIHBhdGggPSBbXTtcbiAgd2hpbGUgKGluc3QpIHtcbiAgICBwYXRo
LnB1c2goaW5zdCk7XG4gICAgaW5zdCA9IGluc3QuX2hvc3RQYXJlbnQ7XG4gIH1cbiAgdmFyIGk7
XG4gIGZvciAoaSA9IHBhdGgubGVuZ3RoOyBpLS0gPiAwOykge1xuICAgIGZuKHBhdGhbaV0sICdj
YXB0dXJlZCcsIGFyZyk7XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKysp
IHtcbiAgICBmbihwYXRoW2ldLCAnYnViYmxlZCcsIGFyZyk7XG4gIH1cbn1cblxuLyoqXG4gKiBU
cmF2ZXJzZXMgdGhlIElEIGhpZXJhcmNoeSBhbmQgaW52b2tlcyB0aGUgc3VwcGxpZWQgYGNiYCBv
biBhbnkgSURzIHRoYXRcbiAqIHNob3VsZCB3b3VsZCByZWNlaXZlIGEgYG1vdXNlRW50ZXJgIG9y
IGBtb3VzZUxlYXZlYCBldmVudC5cbiAqXG4gKiBEb2VzIG5vdCBpbnZva2UgdGhlIGNhbGxiYWNr
IG9uIHRoZSBuZWFyZXN0IGNvbW1vbiBhbmNlc3RvciBiZWNhdXNlIG5vdGhpbmdcbiAqIFwiZW50
ZXJlZFwiIG9yIFwibGVmdFwiIHRoYXQgZWxlbWVudC5cbiAqL1xuZnVuY3Rpb24gdHJhdmVyc2VF
bnRlckxlYXZlKGZyb20sIHRvLCBmbiwgYXJnRnJvbSwgYXJnVG8pIHtcbiAgdmFyIGNvbW1vbiA9
IGZyb20gJiYgdG8gPyBnZXRMb3dlc3RDb21tb25BbmNlc3Rvcihmcm9tLCB0bykgOiBudWxsO1xu
ICB2YXIgcGF0aEZyb20gPSBbXTtcbiAgd2hpbGUgKGZyb20gJiYgZnJvbSAhPT0gY29tbW9uKSB7
XG4gICAgcGF0aEZyb20ucHVzaChmcm9tKTtcbiAgICBmcm9tID0gZnJvbS5faG9zdFBhcmVudDtc
biAgfVxuICB2YXIgcGF0aFRvID0gW107XG4gIHdoaWxlICh0byAmJiB0byAhPT0gY29tbW9uKSB7
XG4gICAgcGF0aFRvLnB1c2godG8pO1xuICAgIHRvID0gdG8uX2hvc3RQYXJlbnQ7XG4gIH1cbiAg
dmFyIGk7XG4gIGZvciAoaSA9IDA7IGkgPCBwYXRoRnJvbS5sZW5ndGg7IGkrKykge1xuICAgIGZu
KHBhdGhGcm9tW2ldLCAnYnViYmxlZCcsIGFyZ0Zyb20pO1xuICB9XG4gIGZvciAoaSA9IHBhdGhU
by5sZW5ndGg7IGktLSA+IDA7KSB7XG4gICAgZm4ocGF0aFRvW2ldLCAnY2FwdHVyZWQnLCBhcmdU
byk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGlzQW5jZXN0b3I6IGlzQW5jZXN0
b3IsXG4gIGdldExvd2VzdENvbW1vbkFuY2VzdG9yOiBnZXRMb3dlc3RDb21tb25BbmNlc3Rvcixc
biAgZ2V0UGFyZW50SW5zdGFuY2U6IGdldFBhcmVudEluc3RhbmNlLFxuICB0cmF2ZXJzZVR3b1Bo
YXNlOiB0cmF2ZXJzZVR3b1BoYXNlLFxuICB0cmF2ZXJzZUVudGVyTGVhdmU6IHRyYXZlcnNlRW50
ZXJMZWF2ZVxufTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NVHJlZVRyYXZlcnNhbC5qc1xuICoqIG1vZHVs
ZSBpZCA9IDE0OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJl
KCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0
VXBkYXRlcycpO1xudmFyIFRyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi9UcmFuc2FjdGlvbicpO1xu
XG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtc
blxudmFyIFJFU0VUX0JBVENIRURfVVBEQVRFUyA9IHtcbiAgaW5pdGlhbGl6ZTogZW1wdHlGdW5j
dGlvbixcbiAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAgICBSZWFjdERlZmF1bHRCYXRjaGluZ1N0
cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzID0gZmFsc2U7XG4gIH1cbn07XG5cbnZhciBGTFVTSF9C
QVRDSEVEX1VQREFURVMgPSB7XG4gIGluaXRpYWxpemU6IGVtcHR5RnVuY3Rpb24sXG4gIGNsb3Nl
OiBSZWFjdFVwZGF0ZXMuZmx1c2hCYXRjaGVkVXBkYXRlcy5iaW5kKFJlYWN0VXBkYXRlcylcbn07
XG5cbnZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtGTFVTSF9CQVRDSEVEX1VQREFURVMsIFJF
U0VUX0JBVENIRURfVVBEQVRFU107XG5cbmZ1bmN0aW9uIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3Ry
YXRlZ3lUcmFuc2FjdGlvbigpIHtcbiAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xu
fVxuXG5fYXNzaWduKFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lUcmFuc2FjdGlvbi5wcm90
b3R5cGUsIFRyYW5zYWN0aW9uLCB7XG4gIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9u
ICgpIHtcbiAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG4gIH1cbn0pO1xuXG52YXIg
dHJhbnNhY3Rpb24gPSBuZXcgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9u
KCk7XG5cbnZhciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0ge1xuICBpc0JhdGNoaW5n
VXBkYXRlczogZmFsc2UsXG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIHByb3ZpZGVkIGZ1bmN0aW9u
IGluIGEgY29udGV4dCB3aXRoaW4gd2hpY2ggY2FsbHMgdG8gYHNldFN0YXRlYFxuICAgKiBhbmQg
ZnJpZW5kcyBhcmUgYmF0Y2hlZCBzdWNoIHRoYXQgY29tcG9uZW50cyBhcmVuJ3QgdXBkYXRlZCB1
bm5lY2Vzc2FyaWx5LlxuICAgKi9cbiAgYmF0Y2hlZFVwZGF0ZXM6IGZ1bmN0aW9uIChjYWxsYmFj
aywgYSwgYiwgYywgZCwgZSkge1xuICAgIHZhciBhbHJlYWR5QmF0Y2hpbmdVcGRhdGVzID0gUmVh
Y3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcztcblxuICAgIFJlYWN0
RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPSB0cnVlO1xuXG4gICAg
Ly8gVGhlIGNvZGUgaXMgd3JpdHRlbiB0aGlzIHdheSB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9u
c1xuICAgIGlmIChhbHJlYWR5QmF0Y2hpbmdVcGRhdGVzKSB7XG4gICAgICByZXR1cm4gY2FsbGJh
Y2soYSwgYiwgYywgZCwgZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cmFuc2FjdGlv
bi5wZXJmb3JtKGNhbGxiYWNrLCBudWxsLCBhLCBiLCBjLCBkLCBlKTtcbiAgICB9XG4gIH1cbn07
XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneTtcblxuXG4v
KioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20v
bGliL1JlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDlc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBBUklBRE9NUHJvcGVydHlDb25maWcgPSByZXF1
aXJlKCcuL0FSSUFET01Qcm9wZXJ0eUNvbmZpZycpO1xudmFyIEJlZm9yZUlucHV0RXZlbnRQbHVn
aW4gPSByZXF1aXJlKCcuL0JlZm9yZUlucHV0RXZlbnRQbHVnaW4nKTtcbnZhciBDaGFuZ2VFdmVu
dFBsdWdpbiA9IHJlcXVpcmUoJy4vQ2hhbmdlRXZlbnRQbHVnaW4nKTtcbnZhciBEZWZhdWx0RXZl
bnRQbHVnaW5PcmRlciA9IHJlcXVpcmUoJy4vRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXInKTtcbnZh
ciBFbnRlckxlYXZlRXZlbnRQbHVnaW4gPSByZXF1aXJlKCcuL0VudGVyTGVhdmVFdmVudFBsdWdp
bicpO1xudmFyIEhUTUxET01Qcm9wZXJ0eUNvbmZpZyA9IHJlcXVpcmUoJy4vSFRNTERPTVByb3Bl
cnR5Q29uZmlnJyk7XG52YXIgUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQgPSByZXF1
aXJlKCcuL1JlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50Jyk7XG52YXIgUmVhY3RET01D
b21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50Jyk7XG52YXIgUmVhY3RET01D
b21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBS
ZWFjdERPTUVtcHR5Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdERPTUVtcHR5Q29tcG9uZW50
Jyk7XG52YXIgUmVhY3RET01UcmVlVHJhdmVyc2FsID0gcmVxdWlyZSgnLi9SZWFjdERPTVRyZWVU
cmF2ZXJzYWwnKTtcbnZhciBSZWFjdERPTVRleHRDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0
RE9NVGV4dENvbXBvbmVudCcpO1xudmFyIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kgPSBy
ZXF1aXJlKCcuL1JlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3knKTtcbnZhciBSZWFjdEV2ZW50
TGlzdGVuZXIgPSByZXF1aXJlKCcuL1JlYWN0RXZlbnRMaXN0ZW5lcicpO1xudmFyIFJlYWN0SW5q
ZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluamVjdGlvbicpO1xudmFyIFJlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24nKTtcbnZh
ciBTVkdET01Qcm9wZXJ0eUNvbmZpZyA9IHJlcXVpcmUoJy4vU1ZHRE9NUHJvcGVydHlDb25maWcn
KTtcbnZhciBTZWxlY3RFdmVudFBsdWdpbiA9IHJlcXVpcmUoJy4vU2VsZWN0RXZlbnRQbHVnaW4n
KTtcbnZhciBTaW1wbGVFdmVudFBsdWdpbiA9IHJlcXVpcmUoJy4vU2ltcGxlRXZlbnRQbHVnaW4n
KTtcblxudmFyIGFscmVhZHlJbmplY3RlZCA9IGZhbHNlO1xuXG5mdW5jdGlvbiBpbmplY3QoKSB7
XG4gIGlmIChhbHJlYWR5SW5qZWN0ZWQpIHtcbiAgICAvLyBUT0RPOiBUaGlzIGlzIGN1cnJlbnRs
eSB0cnVlIGJlY2F1c2UgdGhlc2UgaW5qZWN0aW9ucyBhcmUgc2hhcmVkIGJldHdlZW5cbiAgICAv
LyB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyIHBhY2thZ2UuIFRoZXkgc2hvdWxkIGJlIGJ1aWx0
IGluZGVwZW5kZW50bHlcbiAgICAvLyBhbmQgbm90IHNoYXJlIGFueSBpbmplY3Rpb24gc3RhdGUu
IFRoZW4gdGhpcyBwcm9ibGVtIHdpbGwgYmUgc29sdmVkLlxuICAgIHJldHVybjtcbiAgfVxuICBh
bHJlYWR5SW5qZWN0ZWQgPSB0cnVlO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50RW1pdHRlci5p
bmplY3RSZWFjdEV2ZW50TGlzdGVuZXIoUmVhY3RFdmVudExpc3RlbmVyKTtcblxuICAvKipcbiAg
ICogSW5qZWN0IG1vZHVsZXMgZm9yIHJlc29sdmluZyBET00gaGllcmFyY2h5IGFuZCBwbHVnaW4g
b3JkZXJpbmcuXG4gICAqL1xuICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1Yi5pbmplY3RF
dmVudFBsdWdpbk9yZGVyKERlZmF1bHRFdmVudFBsdWdpbk9yZGVyKTtcbiAgUmVhY3RJbmplY3Rp
b24uRXZlbnRQbHVnaW5VdGlscy5pbmplY3RDb21wb25lbnRUcmVlKFJlYWN0RE9NQ29tcG9uZW50
VHJlZSk7XG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luVXRpbHMuaW5qZWN0VHJlZVRyYXZl
cnNhbChSZWFjdERPTVRyZWVUcmF2ZXJzYWwpO1xuXG4gIC8qKlxuICAgKiBTb21lIGltcG9ydGFu
dCBldmVudCBwbHVnaW5zIGluY2x1ZGVkIGJ5IGRlZmF1bHQgKHdpdGhvdXQgaGF2aW5nIHRvIHJl
cXVpcmVcbiAgICogdGhlbSkuXG4gICAqL1xuICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1
Yi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUoe1xuICAgIFNpbXBsZUV2ZW50UGx1Z2luOiBTaW1w
bGVFdmVudFBsdWdpbixcbiAgICBFbnRlckxlYXZlRXZlbnRQbHVnaW46IEVudGVyTGVhdmVFdmVu
dFBsdWdpbixcbiAgICBDaGFuZ2VFdmVudFBsdWdpbjogQ2hhbmdlRXZlbnRQbHVnaW4sXG4gICAg
U2VsZWN0RXZlbnRQbHVnaW46IFNlbGVjdEV2ZW50UGx1Z2luLFxuICAgIEJlZm9yZUlucHV0RXZl
bnRQbHVnaW46IEJlZm9yZUlucHV0RXZlbnRQbHVnaW5cbiAgfSk7XG5cbiAgUmVhY3RJbmplY3Rp
b24uSG9zdENvbXBvbmVudC5pbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MoUmVhY3RET01Db21w
b25lbnQpO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkhvc3RDb21wb25lbnQuaW5qZWN0VGV4dENvbXBv
bmVudENsYXNzKFJlYWN0RE9NVGV4dENvbXBvbmVudCk7XG5cbiAgUmVhY3RJbmplY3Rpb24uRE9N
UHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoQVJJQURPTVByb3BlcnR5Q29uZmlnKTtc
biAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoSFRN
TERPTVByb3BlcnR5Q29uZmlnKTtcbiAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0
RE9NUHJvcGVydHlDb25maWcoU1ZHRE9NUHJvcGVydHlDb25maWcpO1xuXG4gIFJlYWN0SW5qZWN0
aW9uLkVtcHR5Q29tcG9uZW50LmluamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeShmdW5jdGlvbiAo
aW5zdGFudGlhdGUpIHtcbiAgICByZXR1cm4gbmV3IFJlYWN0RE9NRW1wdHlDb21wb25lbnQoaW5z
dGFudGlhdGUpO1xuICB9KTtcblxuICBSZWFjdEluamVjdGlvbi5VcGRhdGVzLmluamVjdFJlY29u
Y2lsZVRyYW5zYWN0aW9uKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24pO1xuICBSZWFjdEluamVj
dGlvbi5VcGRhdGVzLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVhY3REZWZhdWx0QmF0Y2hpbmdT
dHJhdGVneSk7XG5cbiAgUmVhY3RJbmplY3Rpb24uQ29tcG9uZW50LmluamVjdEVudmlyb25tZW50
KFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50KTtcbn1cblxubW9kdWxlLmV4cG9ydHMg
PSB7XG4gIGluamVjdDogaW5qZWN0XG59O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3REZWZhdWx0SW5qZWN0aW9u
LmpzXG4gKiogbW9kdWxlIGlkID0gMTUwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIv
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZl
bnRQbHVnaW5IdWIgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luSHViJyk7XG5cbmZ1bmN0aW9uIHJ1
bkV2ZW50UXVldWVJbkJhdGNoKGV2ZW50cykge1xuICBFdmVudFBsdWdpbkh1Yi5lbnF1ZXVlRXZl
bnRzKGV2ZW50cyk7XG4gIEV2ZW50UGx1Z2luSHViLnByb2Nlc3NFdmVudFF1ZXVlKGZhbHNlKTtc
bn1cblxudmFyIFJlYWN0RXZlbnRFbWl0dGVyTWl4aW4gPSB7XG4gIC8qKlxuICAgKiBTdHJlYW1z
IGEgZmlyZWQgdG9wLWxldmVsIGV2ZW50IHRvIGBFdmVudFBsdWdpbkh1YmAgd2hlcmUgcGx1Z2lu
cyBoYXZlIHRoZVxuICAgKiBvcHBvcnR1bml0eSB0byBjcmVhdGUgYFJlYWN0RXZlbnRgcyB0byBi
ZSBkaXNwYXRjaGVkLlxuICAgKi9cbiAgaGFuZGxlVG9wTGV2ZWw6IGZ1bmN0aW9uICh0b3BMZXZl
bFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICAg
IHZhciBldmVudHMgPSBFdmVudFBsdWdpbkh1Yi5leHRyYWN0RXZlbnRzKHRvcExldmVsVHlwZSwg
dGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICBydW5FdmVu
dFF1ZXVlSW5CYXRjaChldmVudHMpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0
RXZlbnRFbWl0dGVyTWl4aW47XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdEV2ZW50RW1pdHRlck1peGluLmpzXG4g
KiogbW9kdWxlIGlkID0gMTUyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9
IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIEV2ZW50TGlzdGVuZXIgPSByZXF1aXJl
KCdmYmpzL2xpYi9FdmVudExpc3RlbmVyJyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBy
ZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xudmFyIFBvb2xlZENsYXNz
ID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9
IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3RVcGRhdGVzID0g
cmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGdldEV2ZW50VGFyZ2V0ID0gcmVxdWly
ZSgnLi9nZXRFdmVudFRhcmdldCcpO1xudmFyIGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uID0g
cmVxdWlyZSgnZmJqcy9saWIvZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24nKTtcblxuLyoqXG4g
KiBGaW5kIHRoZSBkZWVwZXN0IFJlYWN0IGNvbXBvbmVudCBjb21wbGV0ZWx5IGNvbnRhaW5pbmcg
dGhlIHJvb3Qgb2YgdGhlXG4gKiBwYXNzZWQtaW4gaW5zdGFuY2UgKGZvciB1c2Ugd2hlbiBlbnRp
cmUgUmVhY3QgdHJlZXMgYXJlIG5lc3RlZCB3aXRoaW4gZWFjaFxuICogb3RoZXIpLiBJZiBSZWFj
dCB0cmVlcyBhcmUgbm90IG5lc3RlZCwgcmV0dXJucyBudWxsLlxuICovXG5mdW5jdGlvbiBmaW5k
UGFyZW50KGluc3QpIHtcbiAgLy8gVE9ETzogSXQgbWF5IGJlIGEgZ29vZCBpZGVhIHRvIGNhY2hl
IHRoaXMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBET01cbiAgLy8gdHJhdmVyc2FsLCBidXQgY2Fj
aGluZyBpcyBkaWZmaWN1bHQgdG8gZG8gY29ycmVjdGx5IHdpdGhvdXQgdXNpbmcgYVxuICAvLyBt
dXRhdGlvbiBvYnNlcnZlciB0byBsaXN0ZW4gZm9yIGFsbCBET00gY2hhbmdlcy5cbiAgd2hpbGUg
KGluc3QuX2hvc3RQYXJlbnQpIHtcbiAgICBpbnN0ID0gaW5zdC5faG9zdFBhcmVudDtcbiAgfVxu
ICB2YXIgcm9vdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5j
ZShpbnN0KTtcbiAgdmFyIGNvbnRhaW5lciA9IHJvb3ROb2RlLnBhcmVudE5vZGU7XG4gIHJldHVy
biBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUoY29udGFp
bmVyKTtcbn1cblxuLy8gVXNlZCB0byBzdG9yZSBhbmNlc3RvciBoaWVyYXJjaHkgaW4gdG9wIGxl
dmVsIGNhbGxiYWNrXG5mdW5jdGlvbiBUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcodG9wTGV2
ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuICB0aGlzLnRvcExldmVsVHlwZSA9IHRvcExldmVsVHlw
ZTtcbiAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2ZUV2ZW50O1xuICB0aGlzLmFuY2VzdG9ycyA9
IFtdO1xufVxuX2Fzc2lnbihUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcucHJvdG90eXBlLCB7
XG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRvcExldmVsVHlwZSA9IG51
bGw7XG4gICAgdGhpcy5uYXRpdmVFdmVudCA9IG51bGw7XG4gICAgdGhpcy5hbmNlc3RvcnMubGVu
Z3RoID0gMDtcbiAgfVxufSk7XG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oVG9wTGV2ZWxDYWxs
YmFja0Jvb2tLZWVwaW5nLCBQb29sZWRDbGFzcy50d29Bcmd1bWVudFBvb2xlcik7XG5cbmZ1bmN0
aW9uIGhhbmRsZVRvcExldmVsSW1wbChib29rS2VlcGluZykge1xuICB2YXIgbmF0aXZlRXZlbnRU
YXJnZXQgPSBnZXRFdmVudFRhcmdldChib29rS2VlcGluZy5uYXRpdmVFdmVudCk7XG4gIHZhciB0
YXJnZXRJbnN0ID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldENsb3Nlc3RJbnN0YW5jZUZyb21O
b2RlKG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblxuICAvLyBMb29wIHRocm91Z2ggdGhlIGhpZXJhcmNo
eSwgaW4gY2FzZSB0aGVyZSdzIGFueSBuZXN0ZWQgY29tcG9uZW50cy5cbiAgLy8gSXQncyBpbXBv
cnRhbnQgdGhhdCB3ZSBidWlsZCB0aGUgYXJyYXkgb2YgYW5jZXN0b3JzIGJlZm9yZSBjYWxsaW5n
IGFueVxuICAvLyBldmVudCBoYW5kbGVycywgYmVjYXVzZSBldmVudCBoYW5kbGVycyBjYW4gbW9k
aWZ5IHRoZSBET00sIGxlYWRpbmcgdG9cbiAgLy8gaW5jb25zaXN0ZW5jaWVzIHdpdGggUmVhY3RN
b3VudCdzIG5vZGUgY2FjaGUuIFNlZSAjMTEwNS5cbiAgdmFyIGFuY2VzdG9yID0gdGFyZ2V0SW5z
dDtcbiAgZG8ge1xuICAgIGJvb2tLZWVwaW5nLmFuY2VzdG9ycy5wdXNoKGFuY2VzdG9yKTtcbiAg
ICBhbmNlc3RvciA9IGFuY2VzdG9yICYmIGZpbmRQYXJlbnQoYW5jZXN0b3IpO1xuICB9IHdoaWxl
IChhbmNlc3Rvcik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBib29rS2VlcGluZy5hbmNlc3Rv
cnMubGVuZ3RoOyBpKyspIHtcbiAgICB0YXJnZXRJbnN0ID0gYm9va0tlZXBpbmcuYW5jZXN0b3Jz
W2ldO1xuICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5faGFuZGxlVG9wTGV2ZWwoYm9va0tlZXBpbmcu
dG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBib29rS2VlcGluZy5uYXRpdmVFdmVudCwgZ2V0RXZl
bnRUYXJnZXQoYm9va0tlZXBpbmcubmF0aXZlRXZlbnQpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBz
Y3JvbGxWYWx1ZU1vbml0b3IoY2IpIHtcbiAgdmFyIHNjcm9sbFBvc2l0aW9uID0gZ2V0VW5ib3Vu
ZGVkU2Nyb2xsUG9zaXRpb24od2luZG93KTtcbiAgY2Ioc2Nyb2xsUG9zaXRpb24pO1xufVxuXG52
YXIgUmVhY3RFdmVudExpc3RlbmVyID0ge1xuICBfZW5hYmxlZDogdHJ1ZSxcbiAgX2hhbmRsZVRv
cExldmVsOiBudWxsLFxuXG4gIFdJTkRPV19IQU5ETEU6IEV4ZWN1dGlvbkVudmlyb25tZW50LmNh
blVzZURPTSA/IHdpbmRvdyA6IG51bGwsXG5cbiAgc2V0SGFuZGxlVG9wTGV2ZWw6IGZ1bmN0aW9u
IChoYW5kbGVUb3BMZXZlbCkge1xuICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5faGFuZGxlVG9wTGV2
ZWwgPSBoYW5kbGVUb3BMZXZlbDtcbiAgfSxcblxuICBzZXRFbmFibGVkOiBmdW5jdGlvbiAoZW5h
YmxlZCkge1xuICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5fZW5hYmxlZCA9ICEhZW5hYmxlZDtcbiAg
fSxcblxuICBpc0VuYWJsZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gUmVhY3RFdmVudExp
c3RlbmVyLl9lbmFibGVkO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUcmFwcyB0b3AtbGV2ZWwgZXZl
bnRzIGJ5IHVzaW5nIGV2ZW50IGJ1YmJsaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30g
dG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG4gICAqIEBwYXJhbSB7
c3RyaW5nfSBoYW5kbGVyQmFzZU5hbWUgRXZlbnQgbmFtZSAoZS5nLiBcImNsaWNrXCIpLlxuICAg
KiBAcGFyYW0ge29iamVjdH0gZWxlbWVudCBFbGVtZW50IG9uIHdoaWNoIHRvIGF0dGFjaCBsaXN0
ZW5lci5cbiAgICogQHJldHVybiB7P29iamVjdH0gQW4gb2JqZWN0IHdpdGggYSByZW1vdmUgZnVu
Y3Rpb24gd2hpY2ggd2lsbCBmb3JjZWZ1bGx5XG4gICAqICAgICAgICAgICAgICAgICAgcmVtb3Zl
IHRoZSBsaXN0ZW5lci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB0cmFwQnViYmxlZEV2ZW50
OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGVsZW1lbnQpIHtcbiAg
ICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4g
RXZlbnRMaXN0ZW5lci5saXN0ZW4oZWxlbWVudCwgaGFuZGxlckJhc2VOYW1lLCBSZWFjdEV2ZW50
TGlzdGVuZXIuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsIHRvcExldmVsVHlwZSkpO1xuICB9LFxu
XG4gIC8qKlxuICAgKiBUcmFwcyBhIHRvcC1sZXZlbCBldmVudCBieSB1c2luZyBldmVudCBjYXB0
dXJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZy
b20gYEV2ZW50Q29uc3RhbnRzYC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGhhbmRsZXJCYXNlTmFt
ZSBFdmVudCBuYW1lIChlLmcuIFwiY2xpY2tcIikuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBlbGVt
ZW50IEVsZW1lbnQgb24gd2hpY2ggdG8gYXR0YWNoIGxpc3RlbmVyLlxuICAgKiBAcmV0dXJuIHs/
b2JqZWN0fSBBbiBvYmplY3Qgd2l0aCBhIHJlbW92ZSBmdW5jdGlvbiB3aGljaCB3aWxsIGZvcmNl
ZnVsbHlcbiAgICogICAgICAgICAgICAgICAgICByZW1vdmUgdGhlIGxpc3RlbmVyLlxuICAgKiBA
aW50ZXJuYWxcbiAgICovXG4gIHRyYXBDYXB0dXJlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxU
eXBlLCBoYW5kbGVyQmFzZU5hbWUsIGVsZW1lbnQpIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAg
ICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gRXZlbnRMaXN0ZW5lci5jYXB0dXJl
KGVsZW1lbnQsIGhhbmRsZXJCYXNlTmFtZSwgUmVhY3RFdmVudExpc3RlbmVyLmRpc3BhdGNoRXZl
bnQuYmluZChudWxsLCB0b3BMZXZlbFR5cGUpKTtcbiAgfSxcblxuICBtb25pdG9yU2Nyb2xsVmFs
dWU6IGZ1bmN0aW9uIChyZWZyZXNoKSB7XG4gICAgdmFyIGNhbGxiYWNrID0gc2Nyb2xsVmFsdWVN
b25pdG9yLmJpbmQobnVsbCwgcmVmcmVzaCk7XG4gICAgRXZlbnRMaXN0ZW5lci5saXN0ZW4od2lu
ZG93LCAnc2Nyb2xsJywgY2FsbGJhY2spO1xuICB9LFxuXG4gIGRpc3BhdGNoRXZlbnQ6IGZ1bmN0
aW9uICh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG4gICAgaWYgKCFSZWFjdEV2ZW50TGlz
dGVuZXIuX2VuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgYm9va0tl
ZXBpbmcgPSBUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcuZ2V0UG9vbGVkKHRvcExldmVsVHlw
ZSwgbmF0aXZlRXZlbnQpO1xuICAgIHRyeSB7XG4gICAgICAvLyBFdmVudCBxdWV1ZSBiZWluZyBw
cm9jZXNzZWQgaW4gdGhlIHNhbWUgY3ljbGUgYWxsb3dzXG4gICAgICAvLyBgcHJldmVudERlZmF1
bHRgLlxuICAgICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKGhhbmRsZVRvcExldmVsSW1w
bCwgYm9va0tlZXBpbmcpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBUb3BMZXZlbENhbGxiYWNr
Qm9va0tlZXBpbmcucmVsZWFzZShib29rS2VlcGluZyk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1
bGUuZXhwb3J0cyA9IFJlYWN0RXZlbnRMaXN0ZW5lcjtcblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RXZlbnRMaXN0
ZW5lci5qc1xuICoqIG1vZHVsZSBpZCA9IDE1M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xudmFyIEV2ZW50UGx1Z2lu
SHViID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpbkh1YicpO1xudmFyIEV2ZW50UGx1Z2luVXRpbHMg
PSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luVXRpbHMnKTtcbnZhciBSZWFjdENvbXBvbmVudEVudmly
b25tZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudEVudmlyb25tZW50Jyk7XG52YXIgUmVh
Y3RFbXB0eUNvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbXB0eUNvbXBvbmVudCcpO1xudmFy
IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJy4vUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyJyk7XG52YXIgUmVhY3RIb3N0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdEhvc3RD
b21wb25lbnQnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycp
O1xuXG52YXIgUmVhY3RJbmplY3Rpb24gPSB7XG4gIENvbXBvbmVudDogUmVhY3RDb21wb25lbnRF
bnZpcm9ubWVudC5pbmplY3Rpb24sXG4gIERPTVByb3BlcnR5OiBET01Qcm9wZXJ0eS5pbmplY3Rp
b24sXG4gIEVtcHR5Q29tcG9uZW50OiBSZWFjdEVtcHR5Q29tcG9uZW50LmluamVjdGlvbixcbiAg
RXZlbnRQbHVnaW5IdWI6IEV2ZW50UGx1Z2luSHViLmluamVjdGlvbixcbiAgRXZlbnRQbHVnaW5V
dGlsczogRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rpb24sXG4gIEV2ZW50RW1pdHRlcjogUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLmluamVjdGlvbixcbiAgSG9zdENvbXBvbmVudDogUmVhY3RIb3N0
Q29tcG9uZW50LmluamVjdGlvbixcbiAgVXBkYXRlczogUmVhY3RVcGRhdGVzLmluamVjdGlvblxu
fTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluamVjdGlvbjtcblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0SW5q
ZWN0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gMTU0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAq
Ki8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52
YXIgYWRsZXIzMiA9IHJlcXVpcmUoJy4vYWRsZXIzMicpO1xuXG52YXIgVEFHX0VORCA9IC9cXC8/
Pi87XG52YXIgQ09NTUVOVF9TVEFSVCA9IC9ePFxcIVxcLVxcLS87XG5cbnZhciBSZWFjdE1hcmt1
cENoZWNrc3VtID0ge1xuICBDSEVDS1NVTV9BVFRSX05BTUU6ICdkYXRhLXJlYWN0LWNoZWNrc3Vt
JyxcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgc3RyaW5nXG4g
ICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZyB3aXRoIGNoZWNrc3VtIGF0dHJpYnV0
ZSBhdHRhY2hlZFxuICAgKi9cbiAgYWRkQ2hlY2tzdW1Ub01hcmt1cDogZnVuY3Rpb24gKG1hcmt1
cCkge1xuICAgIHZhciBjaGVja3N1bSA9IGFkbGVyMzIobWFya3VwKTtcblxuICAgIC8vIEFkZCBj
aGVja3N1bSAoaGFuZGxlIGJvdGggcGFyZW50IHRhZ3MsIGNvbW1lbnRzIGFuZCBzZWxmLWNsb3Np
bmcgdGFncylcbiAgICBpZiAoQ09NTUVOVF9TVEFSVC50ZXN0KG1hcmt1cCkpIHtcbiAgICAgIHJl
dHVybiBtYXJrdXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBtYXJrdXAucmVwbGFjZShU
QUdfRU5ELCAnICcgKyBSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSArICc9
XCInICsgY2hlY2tzdW0gKyAnXCIkJicpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQHBh
cmFtIHtzdHJpbmd9IG1hcmt1cCB0byB1c2VcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBlbGVt
ZW50IHJvb3QgUmVhY3QgZWxlbWVudFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gd2hldGhlciBv
ciBub3QgdGhlIG1hcmt1cCBpcyB0aGUgc2FtZVxuICAgKi9cbiAgY2FuUmV1c2VNYXJrdXA6IGZ1
bmN0aW9uIChtYXJrdXAsIGVsZW1lbnQpIHtcbiAgICB2YXIgZXhpc3RpbmdDaGVja3N1bSA9IGVs
ZW1lbnQuZ2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1F
KTtcbiAgICBleGlzdGluZ0NoZWNrc3VtID0gZXhpc3RpbmdDaGVja3N1bSAmJiBwYXJzZUludChl
eGlzdGluZ0NoZWNrc3VtLCAxMCk7XG4gICAgdmFyIG1hcmt1cENoZWNrc3VtID0gYWRsZXIzMiht
YXJrdXApO1xuICAgIHJldHVybiBtYXJrdXBDaGVja3N1bSA9PT0gZXhpc3RpbmdDaGVja3N1bTtc
biAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE1hcmt1cENoZWNrc3VtO1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9s
aWIvUmVhY3RNYXJrdXBDaGVja3N1bS5qc1xuICoqIG1vZHVsZSBpZCA9IDE1NVxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1
c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJ
bnZhcmlhbnQnKTtcblxudmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSByZXF1aXJlKCcu
L1JlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdEluc3RhbmNlTWFwID0gcmVx
dWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBy
ZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25l
ciA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdEN1cnJlbnRPd25lcicpO1xudmFyIFJlYWN0UmVj
b25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7XG52YXIgUmVhY3RDaGlsZFJl
Y29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0Q2hpbGRSZWNvbmNpbGVyJyk7XG5cbnZhciBlbXB0
eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIGZsYXR0
ZW5DaGlsZHJlbiA9IHJlcXVpcmUoJy4vZmxhdHRlbkNoaWxkcmVuJyk7XG52YXIgaW52YXJpYW50
ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogTWFrZSBhbiB1cGRh
dGUgZm9yIG1hcmt1cCB0byBiZSByZW5kZXJlZCBhbmQgaW5zZXJ0ZWQgYXQgYSBzdXBwbGllZCBp
bmRleC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCB0aGF0IHJlbmRlcnMg
aW50byBhbiBlbGVtZW50LlxuICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXggRGVzdGluYXRpb24g
aW5kZXguXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBtYWtlSW5zZXJ0TWFya3VwKG1hcmt1
cCwgYWZ0ZXJOb2RlLCB0b0luZGV4KSB7XG4gIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBo
aWRkZW4gY2xhc3Nlcy5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnSU5TRVJUX01BUktVUCcsXG4g
ICAgY29udGVudDogbWFya3VwLFxuICAgIGZyb21JbmRleDogbnVsbCxcbiAgICBmcm9tTm9kZTog
bnVsbCxcbiAgICB0b0luZGV4OiB0b0luZGV4LFxuICAgIGFmdGVyTm9kZTogYWZ0ZXJOb2RlXG4g
IH07XG59XG5cbi8qKlxuICogTWFrZSBhbiB1cGRhdGUgZm9yIG1vdmluZyBhbiBleGlzdGluZyBl
bGVtZW50IHRvIGFub3RoZXIgaW5kZXguXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRl
eCBTb3VyY2UgaW5kZXggb2YgdGhlIGV4aXN0aW5nIGVsZW1lbnQuXG4gKiBAcGFyYW0ge251bWJl
cn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleCBvZiB0aGUgZWxlbWVudC5cbiAqIEBwcml2YXRl
XG4gKi9cbmZ1bmN0aW9uIG1ha2VNb3ZlKGNoaWxkLCBhZnRlck5vZGUsIHRvSW5kZXgpIHtcbiAg
Ly8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuICByZXR1cm4ge1xu
ICAgIHR5cGU6ICdNT1ZFX0VYSVNUSU5HJyxcbiAgICBjb250ZW50OiBudWxsLFxuICAgIGZyb21J
bmRleDogY2hpbGQuX21vdW50SW5kZXgsXG4gICAgZnJvbU5vZGU6IFJlYWN0UmVjb25jaWxlci5n
ZXRIb3N0Tm9kZShjaGlsZCksXG4gICAgdG9JbmRleDogdG9JbmRleCxcbiAgICBhZnRlck5vZGU6
IGFmdGVyTm9kZVxuICB9O1xufVxuXG4vKipcbiAqIE1ha2UgYW4gdXBkYXRlIGZvciByZW1vdmlu
ZyBhbiBlbGVtZW50IGF0IGFuIGluZGV4LlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5k
ZXggSW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmVtb3ZlLlxuICogQHByaXZhdGVcbiAqL1xuZnVu
Y3Rpb24gbWFrZVJlbW92ZShjaGlsZCwgbm9kZSkge1xuICAvLyBOT1RFOiBOdWxsIHZhbHVlcyBy
ZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ1JFTU9WRV9OT0RF
JyxcbiAgICBjb250ZW50OiBudWxsLFxuICAgIGZyb21JbmRleDogY2hpbGQuX21vdW50SW5kZXgs
XG4gICAgZnJvbU5vZGU6IG5vZGUsXG4gICAgdG9JbmRleDogbnVsbCxcbiAgICBhZnRlck5vZGU6
IG51bGxcbiAgfTtcbn1cblxuLyoqXG4gKiBNYWtlIGFuIHVwZGF0ZSBmb3Igc2V0dGluZyB0aGUg
bWFya3VwIG9mIGEgbm9kZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCB0
aGF0IHJlbmRlcnMgaW50byBhbiBlbGVtZW50LlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24g
bWFrZVNldE1hcmt1cChtYXJrdXApIHtcbiAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhp
ZGRlbiBjbGFzc2VzLlxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdTRVRfTUFSS1VQJyxcbiAgICBj
b250ZW50OiBtYXJrdXAsXG4gICAgZnJvbUluZGV4OiBudWxsLFxuICAgIGZyb21Ob2RlOiBudWxs
LFxuICAgIHRvSW5kZXg6IG51bGwsXG4gICAgYWZ0ZXJOb2RlOiBudWxsXG4gIH07XG59XG5cbi8q
KlxuICogTWFrZSBhbiB1cGRhdGUgZm9yIHNldHRpbmcgdGhlIHRleHQgY29udGVudC5cbiAqXG4g
KiBAcGFyYW0ge3N0cmluZ30gdGV4dENvbnRlbnQgVGV4dCBjb250ZW50IHRvIHNldC5cbiAqIEBw
cml2YXRlXG4gKi9cbmZ1bmN0aW9uIG1ha2VUZXh0Q29udGVudCh0ZXh0Q29udGVudCkge1xuICAv
LyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHJldHVybiB7XG4g
ICAgdHlwZTogJ1RFWFRfQ09OVEVOVCcsXG4gICAgY29udGVudDogdGV4dENvbnRlbnQsXG4gICAg
ZnJvbUluZGV4OiBudWxsLFxuICAgIGZyb21Ob2RlOiBudWxsLFxuICAgIHRvSW5kZXg6IG51bGws
XG4gICAgYWZ0ZXJOb2RlOiBudWxsXG4gIH07XG59XG5cbi8qKlxuICogUHVzaCBhbiB1cGRhdGUs
IGlmIGFueSwgb250byB0aGUgcXVldWUuIENyZWF0ZXMgYSBuZXcgcXVldWUgaWYgbm9uZSBpc1xu
ICogcGFzc2VkIGFuZCBhbHdheXMgcmV0dXJucyB0aGUgcXVldWUuIE11dGF0aXZlLlxuICovXG5m
dW5jdGlvbiBlbnF1ZXVlKHF1ZXVlLCB1cGRhdGUpIHtcbiAgaWYgKHVwZGF0ZSkge1xuICAgIHF1
ZXVlID0gcXVldWUgfHwgW107XG4gICAgcXVldWUucHVzaCh1cGRhdGUpO1xuICB9XG4gIHJldHVy
biBxdWV1ZTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgYW55IGVucXVldWVkIHVwZGF0ZXMuXG4g
KlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc1F1ZXVlKGluc3QsIHVwZGF0ZVF1
ZXVlKSB7XG4gIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQucHJvY2Vzc0NoaWxkcmVuVXBkYXRl
cyhpbnN0LCB1cGRhdGVRdWV1ZSk7XG59XG5cbnZhciBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRh
dGlvbiA9IGVtcHR5RnVuY3Rpb247XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICB2YXIgZ2V0RGVidWdJRCA9IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgaWYg
KCFpbnN0Ll9kZWJ1Z0lEKSB7XG4gICAgICAvLyBDaGVjayBmb3IgQVJULWxpa2UgaW5zdGFuY2Vz
LiBUT0RPOiBUaGlzIGlzIHNpbGx5L2dyb3NzLlxuICAgICAgdmFyIGludGVybmFsO1xuICAgICAg
aWYgKGludGVybmFsID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQoaW5zdCkpIHtcbiAgICAgICAgaW5z
dCA9IGludGVybmFsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5zdC5fZGVidWdJRDtc
biAgfTtcbiAgc2V0Q2hpbGRyZW5Gb3JJbnN0cnVtZW50YXRpb24gPSBmdW5jdGlvbiAoY2hpbGRy
ZW4pIHtcbiAgICB2YXIgZGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7XG4gICAgLy8gVE9ETzog
UmVhY3QgTmF0aXZlIGVtcHR5IGNvbXBvbmVudHMgYXJlIGFsc28gbXVsdGljaGlsZC5cbiAgICAv
LyBUaGlzIG1lYW5zIHRoZXkgc3RpbGwgZ2V0IGludG8gdGhpcyBtZXRob2QgYnV0IGRvbid0IGhh
dmUgX2RlYnVnSUQuXG4gICAgaWYgKGRlYnVnSUQgIT09IDApIHtcbiAgICAgIFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKGRlYnVnSUQsIGNoaWxkcmVuID8gT2Jq
ZWN0LmtleXMoY2hpbGRyZW4pLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiBj
aGlsZHJlbltrZXldLl9kZWJ1Z0lEO1xuICAgICAgfSkgOiBbXSk7XG4gICAgfVxuICB9O1xufVxu
XG4vKipcbiAqIFJlYWN0TXVsdGlDaGlsZCBhcmUgY2FwYWJsZSBvZiByZWNvbmNpbGluZyBtdWx0
aXBsZSBjaGlsZHJlbi5cbiAqXG4gKiBAY2xhc3MgUmVhY3RNdWx0aUNoaWxkXG4gKiBAaW50ZXJu
YWxcbiAqL1xudmFyIFJlYWN0TXVsdGlDaGlsZCA9IHtcbiAgLyoqXG4gICAqIFByb3ZpZGVzIGNv
bW1vbiBmdW5jdGlvbmFsaXR5IGZvciBjb21wb25lbnRzIHRoYXQgbXVzdCByZWNvbmNpbGUgbXVs
dGlwbGVcbiAgICogY2hpbGRyZW4uIFRoaXMgaXMgdXNlZCBieSBgUmVhY3RET01Db21wb25lbnRg
IHRvIG1vdW50LCB1cGRhdGUsIGFuZFxuICAgKiB1bm1vdW50IGNoaWxkIGNvbXBvbmVudHMuXG4g
ICAqXG4gICAqIEBsZW5kcyB7UmVhY3RNdWx0aUNoaWxkLnByb3RvdHlwZX1cbiAgICovXG4gIE1p
eGluOiB7XG4gICAgX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmVz
dGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YXIgc2VsZkRlYnVnSUQg
PSBnZXREZWJ1Z0lEKHRoaXMpO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudEVsZW1lbnQpIHtc
biAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9
IHRoaXMuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgICAgICAgICAgIHJldHVybiBSZWFjdENo
aWxkUmVjb25jaWxlci5pbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2Fj
dGlvbiwgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAg
ICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICB9XG4g
ICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBSZWFjdENoaWxkUmVjb25jaWxlci5pbnN0
YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4g
ICAgfSxcblxuICAgIF9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChwcmV2Q2hp
bGRyZW4sIG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBtb3VudEltYWdlcywgcmVtb3ZlZE5v
ZGVzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgdmFyIG5leHRDaGlsZHJlbjtcbiAg
ICAgIHZhciBzZWxmRGVidWdJRCA9IDA7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBzZWxmRGVidWdJRCA9IGdldERlYnVnSUQodGhp
cyk7XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50RWxlbWVudCkge1xuICAgICAgICAgIHRyeSB7
XG4gICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcy5fY3VycmVudEVs
ZW1lbnQuX293bmVyO1xuICAgICAgICAgICAgbmV4dENoaWxkcmVuID0gZmxhdHRlbkNoaWxkcmVu
KG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBzZWxmRGVidWdJRCk7XG4gICAgICAgICAgfSBm
aW5hbGx5IHtcbiAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsO1xu
ICAgICAgICAgIH1cbiAgICAgICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51cGRhdGVDaGlsZHJl
bihwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgbW91bnRJbWFnZXMsIHJlbW92ZWROb2Rlcywg
dHJhbnNhY3Rpb24sIHRoaXMsIHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxm
RGVidWdJRCk7XG4gICAgICAgICAgcmV0dXJuIG5leHRDaGlsZHJlbjtcbiAgICAgICAgfVxuICAg
ICAgfVxuICAgICAgbmV4dENoaWxkcmVuID0gZmxhdHRlbkNoaWxkcmVuKG5leHROZXN0ZWRDaGls
ZHJlbkVsZW1lbnRzLCBzZWxmRGVidWdJRCk7XG4gICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51
cGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgbW91bnRJbWFnZXMsIHJl
bW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIHRoaXMsIHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCBj
b250ZXh0LCBzZWxmRGVidWdJRCk7XG4gICAgICByZXR1cm4gbmV4dENoaWxkcmVuO1xuICAgIH0s
XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBcIm1vdW50IGltYWdlXCIgZm9yIGVhY2gg
b2YgdGhlIHN1cHBsaWVkIGNoaWxkcmVuLiBJbiB0aGUgY2FzZVxuICAgICAqIG9mIGBSZWFjdERP
TUNvbXBvbmVudGAsIGEgbW91bnQgaW1hZ2UgaXMgYSBzdHJpbmcgb2YgbWFya3VwLlxuICAgICAq
XG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXN0ZWRDaGlsZHJlbiBOZXN0ZWQgY2hpbGQgbWFw
cy5cbiAgICAgKiBAcmV0dXJuIHthcnJheX0gQW4gYXJyYXkgb2YgbW91bnRlZCByZXByZXNlbnRh
dGlvbnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgbW91bnRDaGlsZHJlbjogZnVu
Y3Rpb24gKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgdmFy
IGNoaWxkcmVuID0gdGhpcy5fcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW4obmVzdGVkQ2hp
bGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgIHRoaXMuX3JlbmRlcmVkQ2hpbGRy
ZW4gPSBjaGlsZHJlbjtcblxuICAgICAgdmFyIG1vdW50SW1hZ2VzID0gW107XG4gICAgICB2YXIg
aW5kZXggPSAwO1xuICAgICAgZm9yICh2YXIgbmFtZSBpbiBjaGlsZHJlbikge1xuICAgICAgICBp
ZiAoY2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICB2YXIgY2hpbGQg
PSBjaGlsZHJlbltuYW1lXTtcbiAgICAgICAgICB2YXIgc2VsZkRlYnVnSUQgPSAwO1xuICAgICAg
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAg
ICAgICBzZWxmRGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7XG4gICAgICAgICAgfVxuICAgICAg
ICAgIHZhciBtb3VudEltYWdlID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNoaWxk
LCB0cmFuc2FjdGlvbiwgdGhpcywgdGhpcy5faG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNl
bGZEZWJ1Z0lEKTtcbiAgICAgICAgICBjaGlsZC5fbW91bnRJbmRleCA9IGluZGV4Kys7XG4gICAg
ICAgICAgbW91bnRJbWFnZXMucHVzaChtb3VudEltYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxu
XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
ICAgICBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRhdGlvbi5jYWxsKHRoaXMsIGNoaWxkcmVuKTtc
biAgICAgIH1cblxuICAgICAgcmV0dXJuIG1vdW50SW1hZ2VzO1xuICAgIH0sXG5cbiAgICAvKipc
biAgICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIHRleHQgY29udGVu
dCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV4dENvbnRlbnQgU3Ry
aW5nIG9mIGNvbnRlbnQuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgdXBkYXRlVGV4
dENvbnRlbnQ6IGZ1bmN0aW9uIChuZXh0Q29udGVudCkge1xuICAgICAgdmFyIHByZXZDaGlsZHJl
biA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgICAvLyBSZW1vdmUgYW55IHJlbmRlcmVk
IGNoaWxkcmVuLlxuICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudW5tb3VudENoaWxkcmVuKHBy
ZXZDaGlsZHJlbiwgZmFsc2UpO1xuICAgICAgZm9yICh2YXIgbmFtZSBpbiBwcmV2Q2hpbGRyZW4p
IHtcbiAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAg
ICAgICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICd1cGRhdGVUZXh0Q29udGVudCBjYWxsZWQgb24gbm9uLWVtcHR5IGNv
bXBvbmVudC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMTgnKSA6IHZvaWQgMDtcbiAgICAgICAgfVxu
ICAgICAgfVxuICAgICAgLy8gU2V0IG5ldyB0ZXh0IGNvbnRlbnQuXG4gICAgICB2YXIgdXBkYXRl
cyA9IFttYWtlVGV4dENvbnRlbnQobmV4dENvbnRlbnQpXTtcbiAgICAgIHByb2Nlc3NRdWV1ZSh0
aGlzLCB1cGRhdGVzKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZXMgYW55IHJl
bmRlcmVkIGNoaWxkcmVuIHdpdGggYSBtYXJrdXAgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHBh
cmFtIHtzdHJpbmd9IG5leHRNYXJrdXAgU3RyaW5nIG9mIG1hcmt1cC5cbiAgICAgKiBAaW50ZXJu
YWxcbiAgICAgKi9cbiAgICB1cGRhdGVNYXJrdXA6IGZ1bmN0aW9uIChuZXh0TWFya3VwKSB7XG4g
ICAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtcbiAgICAgIC8v
IFJlbW92ZSBhbnkgcmVuZGVyZWQgY2hpbGRyZW4uXG4gICAgICBSZWFjdENoaWxkUmVjb25jaWxl
ci51bm1vdW50Q2hpbGRyZW4ocHJldkNoaWxkcmVuLCBmYWxzZSk7XG4gICAgICBmb3IgKHZhciBu
YW1lIGluIHByZXZDaGlsZHJlbikge1xuICAgICAgICBpZiAocHJldkNoaWxkcmVuLmhhc093blBy
b3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZVRleHRDb250ZW50IGNh
bGxlZCBvbiBub24tZW1wdHkgY29tcG9uZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzExOCcpIDog
dm9pZCAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgdXBkYXRlcyA9IFttYWtlU2V0
TWFya3VwKG5leHRNYXJrdXApXTtcbiAgICAgIHByb2Nlc3NRdWV1ZSh0aGlzLCB1cGRhdGVzKTtc
biAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hpbGRyZW4g
d2l0aCBuZXcgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRO
ZXN0ZWRDaGlsZHJlbkVsZW1lbnRzIE5lc3RlZCBjaGlsZCBlbGVtZW50IG1hcHMuXG4gICAgICog
QHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBp
bnRlcm5hbFxuICAgICAqL1xuICAgIHVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmV4dE5lc3Rl
ZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgICAvLyBIb29r
IHVzZWQgYnkgUmVhY3QgQVJUXG4gICAgICB0aGlzLl91cGRhdGVDaGlsZHJlbihuZXh0TmVzdGVk
Q2hpbGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH0sXG5cbiAgICAv
KipcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzIE5l
c3RlZCBjaGlsZCBlbGVtZW50IG1hcHMuXG4gICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBmaW5hbFxuICAgICAqIEBwcm90ZWN0ZWRc
biAgICAgKi9cbiAgICBfdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXh0TmVzdGVkQ2hpbGRy
ZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIHZhciBwcmV2Q2hpbGRy
ZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuICAgICAgdmFyIHJlbW92ZWROb2RlcyA9IHt9
O1xuICAgICAgdmFyIG1vdW50SW1hZ2VzID0gW107XG4gICAgICB2YXIgbmV4dENoaWxkcmVuID0g
dGhpcy5fcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuKHByZXZDaGlsZHJlbiwgbmV4dE5lc3RlZENo
aWxkcmVuRWxlbWVudHMsIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCBj
b250ZXh0KTtcbiAgICAgIGlmICghbmV4dENoaWxkcmVuICYmICFwcmV2Q2hpbGRyZW4pIHtcbiAg
ICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHVwZGF0ZXMgPSBudWxsO1xuICAgICAg
dmFyIG5hbWU7XG4gICAgICAvLyBgbmV4dEluZGV4YCB3aWxsIGluY3JlbWVudCBmb3IgZWFjaCBj
aGlsZCBpbiBgbmV4dENoaWxkcmVuYCwgYnV0XG4gICAgICAvLyBgbGFzdEluZGV4YCB3aWxsIGJl
IHRoZSBsYXN0IGluZGV4IHZpc2l0ZWQgaW4gYHByZXZDaGlsZHJlbmAuXG4gICAgICB2YXIgbmV4
dEluZGV4ID0gMDtcbiAgICAgIHZhciBsYXN0SW5kZXggPSAwO1xuICAgICAgLy8gYG5leHRNb3Vu
dEluZGV4YCB3aWxsIGluY3JlbWVudCBmb3IgZWFjaCBuZXdseSBtb3VudGVkIGNoaWxkLlxuICAg
ICAgdmFyIG5leHRNb3VudEluZGV4ID0gMDtcbiAgICAgIHZhciBsYXN0UGxhY2VkTm9kZSA9IG51
bGw7XG4gICAgICBmb3IgKG5hbWUgaW4gbmV4dENoaWxkcmVuKSB7XG4gICAgICAgIGlmICghbmV4
dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgY29udGludWU7XG4g
ICAgICAgIH1cbiAgICAgICAgdmFyIHByZXZDaGlsZCA9IHByZXZDaGlsZHJlbiAmJiBwcmV2Q2hp
bGRyZW5bbmFtZV07XG4gICAgICAgIHZhciBuZXh0Q2hpbGQgPSBuZXh0Q2hpbGRyZW5bbmFtZV07
XG4gICAgICAgIGlmIChwcmV2Q2hpbGQgPT09IG5leHRDaGlsZCkge1xuICAgICAgICAgIHVwZGF0
ZXMgPSBlbnF1ZXVlKHVwZGF0ZXMsIHRoaXMubW92ZUNoaWxkKHByZXZDaGlsZCwgbGFzdFBsYWNl
ZE5vZGUsIG5leHRJbmRleCwgbGFzdEluZGV4KSk7XG4gICAgICAgICAgbGFzdEluZGV4ID0gTWF0
aC5tYXgocHJldkNoaWxkLl9tb3VudEluZGV4LCBsYXN0SW5kZXgpO1xuICAgICAgICAgIHByZXZD
aGlsZC5fbW91bnRJbmRleCA9IG5leHRJbmRleDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAg
ICBpZiAocHJldkNoaWxkKSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgYGxhc3RJbmRleGAgYmVm
b3JlIGBfbW91bnRJbmRleGAgZ2V0cyB1bnNldCBieSB1bm1vdW50aW5nLlxuICAgICAgICAgICAg
bGFzdEluZGV4ID0gTWF0aC5tYXgocHJldkNoaWxkLl9tb3VudEluZGV4LCBsYXN0SW5kZXgpO1xu
ICAgICAgICAgICAgLy8gVGhlIGByZW1vdmVkTm9kZXNgIGxvb3AgYmVsb3cgd2lsbCBhY3R1YWxs
eSByZW1vdmUgdGhlIGNoaWxkLlxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBUaGUgY2hpbGQg
bXVzdCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGl0J3MgbW91bnRlZC5cbiAgICAgICAgICB1cGRh
dGVzID0gZW5xdWV1ZSh1cGRhdGVzLCB0aGlzLl9tb3VudENoaWxkQXRJbmRleChuZXh0Q2hpbGQs
IG1vdW50SW1hZ2VzW25leHRNb3VudEluZGV4XSwgbGFzdFBsYWNlZE5vZGUsIG5leHRJbmRleCwg
dHJhbnNhY3Rpb24sIGNvbnRleHQpKTtcbiAgICAgICAgICBuZXh0TW91bnRJbmRleCsrO1xuICAg
ICAgICB9XG4gICAgICAgIG5leHRJbmRleCsrO1xuICAgICAgICBsYXN0UGxhY2VkTm9kZSA9IFJl
YWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShuZXh0Q2hpbGQpO1xuICAgICAgfVxuICAgICAgLy8g
UmVtb3ZlIGNoaWxkcmVuIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVzZW50LlxuICAgICAgZm9yIChu
YW1lIGluIHJlbW92ZWROb2Rlcykge1xuICAgICAgICBpZiAocmVtb3ZlZE5vZGVzLmhhc093blBy
b3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgdXBkYXRlcyA9IGVucXVldWUodXBkYXRlcywgdGhp
cy5fdW5tb3VudENoaWxkKHByZXZDaGlsZHJlbltuYW1lXSwgcmVtb3ZlZE5vZGVzW25hbWVdKSk7
XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh1cGRhdGVzKSB7XG4gICAgICAgIHByb2Nl
c3NRdWV1ZSh0aGlzLCB1cGRhdGVzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3JlbmRlcmVkQ2hp
bGRyZW4gPSBuZXh0Q2hpbGRyZW47XG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHNldENoaWxkcmVuRm9ySW5zdHJ1bWVudGF0aW9u
LmNhbGwodGhpcywgbmV4dENoaWxkcmVuKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4g
ICAgICogVW5tb3VudHMgYWxsIHJlbmRlcmVkIGNoaWxkcmVuLiBUaGlzIHNob3VsZCBiZSB1c2Vk
IHRvIGNsZWFuIHVwIGNoaWxkcmVuXG4gICAgICogd2hlbiB0aGlzIGNvbXBvbmVudCBpcyB1bm1v
dW50ZWQuIEl0IGRvZXMgbm90IGFjdHVhbGx5IHBlcmZvcm0gYW55XG4gICAgICogYmFja2VuZCBv
cGVyYXRpb25zLlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgdW5tb3Vu
dENoaWxkcmVuOiBmdW5jdGlvbiAoc2FmZWx5KSB7XG4gICAgICB2YXIgcmVuZGVyZWRDaGlsZHJl
biA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51
bm1vdW50Q2hpbGRyZW4ocmVuZGVyZWRDaGlsZHJlbiwgc2FmZWx5KTtcbiAgICAgIHRoaXMuX3Jl
bmRlcmVkQ2hpbGRyZW4gPSBudWxsO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBNb3ZlcyBh
IGNoaWxkIGNvbXBvbmVudCB0byB0aGUgc3VwcGxpZWQgaW5kZXguXG4gICAgICpcbiAgICAgKiBA
cGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gbW92ZS5cbiAgICAgKiBA
cGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleCBvZiB0aGUgZWxlbWVudC5c
biAgICAgKiBAcGFyYW0ge251bWJlcn0gbGFzdEluZGV4IExhc3QgaW5kZXggdmlzaXRlZCBvZiB0
aGUgc2libGluZ3Mgb2YgYGNoaWxkYC5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAg
bW92ZUNoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIGFmdGVyTm9kZSwgdG9JbmRleCwgbGFzdEluZGV4
KSB7XG4gICAgICAvLyBJZiB0aGUgaW5kZXggb2YgYGNoaWxkYCBpcyBsZXNzIHRoYW4gYGxhc3RJ
bmRleGAsIHRoZW4gaXQgbmVlZHMgdG9cbiAgICAgIC8vIGJlIG1vdmVkLiBPdGhlcndpc2UsIHdl
IGRvIG5vdCBuZWVkIHRvIG1vdmUgaXQgYmVjYXVzZSBhIGNoaWxkIHdpbGwgYmVcbiAgICAgIC8v
IGluc2VydGVkIG9yIG1vdmVkIGJlZm9yZSBgY2hpbGRgLlxuICAgICAgaWYgKGNoaWxkLl9tb3Vu
dEluZGV4IDwgbGFzdEluZGV4KSB7XG4gICAgICAgIHJldHVybiBtYWtlTW92ZShjaGlsZCwgYWZ0
ZXJOb2RlLCB0b0luZGV4KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ3Jl
YXRlcyBhIGNoaWxkIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21w
b25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBjcmVhdGUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9
IG1vdW50SW1hZ2UgTWFya3VwIHRvIGluc2VydC5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICov
XG4gICAgY3JlYXRlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgYWZ0ZXJOb2RlLCBtb3VudEltYWdl
KSB7XG4gICAgICByZXR1cm4gbWFrZUluc2VydE1hcmt1cChtb3VudEltYWdlLCBhZnRlck5vZGUs
IGNoaWxkLl9tb3VudEluZGV4KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBh
IGNoaWxkIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9
IGNoaWxkIENoaWxkIHRvIHJlbW92ZS5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAg
cmVtb3ZlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgbm9kZSkge1xuICAgICAgcmV0dXJuIG1ha2VS
ZW1vdmUoY2hpbGQsIG5vZGUpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBNb3VudHMgYSBj
aGlsZCB3aXRoIHRoZSBzdXBwbGllZCBuYW1lLlxuICAgICAqXG4gICAgICogTk9URTogVGhpcyBp
cyBwYXJ0IG9mIGB1cGRhdGVDaGlsZHJlbmAgYW5kIGlzIGhlcmUgZm9yIHJlYWRhYmlsaXR5Llxu
ICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRv
IG1vdW50LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGNoaWxkLlxu
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCBhdCB3aGljaCB0byBpbnNlcnQgdGhl
IGNoaWxkLlxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNh
Y3Rpb25cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIF9tb3VudENoaWxkQXRJbmRleDog
ZnVuY3Rpb24gKGNoaWxkLCBtb3VudEltYWdlLCBhZnRlck5vZGUsIGluZGV4LCB0cmFuc2FjdGlv
biwgY29udGV4dCkge1xuICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBpbmRleDtcbiAgICAgIHJl
dHVybiB0aGlzLmNyZWF0ZUNoaWxkKGNoaWxkLCBhZnRlck5vZGUsIG1vdW50SW1hZ2UpO1xuICAg
IH0sXG5cbiAgICAvKipcbiAgICAgKiBVbm1vdW50cyBhIHJlbmRlcmVkIGNoaWxkLlxuICAgICAq
XG4gICAgICogTk9URTogVGhpcyBpcyBwYXJ0IG9mIGB1cGRhdGVDaGlsZHJlbmAgYW5kIGlzIGhl
cmUgZm9yIHJlYWRhYmlsaXR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVu
dH0gY2hpbGQgQ29tcG9uZW50IHRvIHVubW91bnQuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9c
biAgICBfdW5tb3VudENoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIG5vZGUpIHtcbiAgICAgIHZhciB1
cGRhdGUgPSB0aGlzLnJlbW92ZUNoaWxkKGNoaWxkLCBub2RlKTtcbiAgICAgIGNoaWxkLl9tb3Vu
dEluZGV4ID0gbnVsbDtcbiAgICAgIHJldHVybiB1cGRhdGU7XG4gICAgfVxuICB9XG59O1xuXG5t
b2R1bGUuZXhwb3J0cyA9IFJlYWN0TXVsdGlDaGlsZDtcblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0TXVsdGlDaGls
ZC5qc1xuICoqIG1vZHVsZSBpZCA9IDE1NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
LyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52
YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52
YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICog
QHBhcmFtIHs/b2JqZWN0fSBvYmplY3RcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYG9i
amVjdGAgaXMgYSB2YWxpZCBvd25lci5cbiAqIEBmaW5hbFxuICovXG5mdW5jdGlvbiBpc1ZhbGlk
T3duZXIob2JqZWN0KSB7XG4gIHJldHVybiAhIShvYmplY3QgJiYgdHlwZW9mIG9iamVjdC5hdHRh
Y2hSZWYgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iamVjdC5kZXRhY2hSZWYgPT09ICdmdW5j
dGlvbicpO1xufVxuXG4vKipcbiAqIFJlYWN0T3duZXJzIGFyZSBjYXBhYmxlIG9mIHN0b3Jpbmcg
cmVmZXJlbmNlcyB0byBvd25lZCBjb21wb25lbnRzLlxuICpcbiAqIEFsbCBjb21wb25lbnRzIGFy
ZSBjYXBhYmxlIG9mIC8vYmVpbmcvLyByZWZlcmVuY2VkIGJ5IG93bmVyIGNvbXBvbmVudHMsIGJ1
dFxuICogb25seSBSZWFjdE93bmVyIGNvbXBvbmVudHMgYXJlIGNhcGFibGUgb2YgLy9yZWZlcmVu
Y2luZy8vIG93bmVkIGNvbXBvbmVudHMuXG4gKiBUaGUgbmFtZWQgcmVmZXJlbmNlIGlzIGtub3du
IGFzIGEgXCJyZWZcIi5cbiAqXG4gKiBSZWZzIGFyZSBhdmFpbGFibGUgd2hlbiBtb3VudGVkIGFu
ZCB1cGRhdGVkIGR1cmluZyByZWNvbmNpbGlhdGlvbi5cbiAqXG4gKiAgIHZhciBNeUNvbXBvbmVu
dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuICog
ICAgICAgcmV0dXJuIChcbiAqICAgICAgICAgPGRpdiBvbkNsaWNrPXt0aGlzLmhhbmRsZUNsaWNr
fT5cbiAqICAgICAgICAgICA8Q3VzdG9tQ29tcG9uZW50IHJlZj1cImN1c3RvbVwiIC8+XG4gKiAg
ICAgICAgIDwvZGl2PlxuICogICAgICAgKTtcbiAqICAgICB9LFxuICogICAgIGhhbmRsZUNsaWNr
OiBmdW5jdGlvbigpIHtcbiAqICAgICAgIHRoaXMucmVmcy5jdXN0b20uaGFuZGxlQ2xpY2soKTtc
biAqICAgICB9LFxuICogICAgIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbigpIHtcbiAqICAg
ICAgIHRoaXMucmVmcy5jdXN0b20uaW5pdGlhbGl6ZSgpO1xuICogICAgIH1cbiAqICAgfSk7XG4g
KlxuICogUmVmcyBzaG91bGQgcmFyZWx5IGJlIHVzZWQuIFdoZW4gcmVmcyBhcmUgdXNlZCwgdGhl
eSBzaG91bGQgb25seSBiZSBkb25lIHRvXG4gKiBjb250cm9sIGRhdGEgdGhhdCBpcyBub3QgaGFu
ZGxlZCBieSBSZWFjdCdzIGRhdGEgZmxvdy5cbiAqXG4gKiBAY2xhc3MgUmVhY3RPd25lclxuICov
XG52YXIgUmVhY3RPd25lciA9IHtcbiAgLyoqXG4gICAqIEFkZHMgYSBjb21wb25lbnQgYnkgcmVm
IHRvIGFuIG93bmVyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVu
dH0gY29tcG9uZW50IENvbXBvbmVudCB0byByZWZlcmVuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5n
fSByZWYgTmFtZSBieSB3aGljaCB0byByZWZlciB0byB0aGUgY29tcG9uZW50LlxuICAgKiBAcGFy
YW0ge1JlYWN0T3duZXJ9IG93bmVyIENvbXBvbmVudCBvbiB3aGljaCB0byByZWNvcmQgdGhlIHJl
Zi5cbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgYWRkQ29tcG9uZW50QXNS
ZWZUbzogZnVuY3Rpb24gKGNvbXBvbmVudCwgcmVmLCBvd25lcikge1xuICAgICFpc1ZhbGlkT3du
ZXIob3duZXIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ2FkZENvbXBvbmVudEFzUmVmVG8oLi4uKTogT25seSBhIFJlYWN0T3duZXIg
Y2FuIGhhdmUgcmVmcy4gWW91IG1pZ2h0IGJlIGFkZGluZyBhIHJlZiB0byBhIGNvbXBvbmVudCB0
aGF0IHdhcyBub3QgY3JlYXRlZCBpbnNpZGUgYSBjb21wb25lbnRcXCdzIGByZW5kZXJgIG1ldGhv
ZCwgb3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IGxvYWRlZCAoZGV0YWlsczog
aHR0cHM6Ly9mYi5tZS9yZWFjdC1yZWZzLW11c3QtaGF2ZS1vd25lcikuJykgOiBfcHJvZEludmFy
aWFudCgnMTE5JykgOiB2b2lkIDA7XG4gICAgb3duZXIuYXR0YWNoUmVmKHJlZiwgY29tcG9uZW50
KTtcbiAgfSxcblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGNvbXBvbmVudCBieSByZWYgZnJvbSBh
biBvd25lciBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNv
bXBvbmVudCBDb21wb25lbnQgdG8gZGVyZWZlcmVuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBy
ZWYgTmFtZSBvZiB0aGUgcmVmIHRvIHJlbW92ZS5cbiAgICogQHBhcmFtIHtSZWFjdE93bmVyfSBv
d25lciBDb21wb25lbnQgb24gd2hpY2ggdGhlIHJlZiBpcyByZWNvcmRlZC5cbiAgICogQGZpbmFs
XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tOiBmdW5j
dGlvbiAoY29tcG9uZW50LCByZWYsIG93bmVyKSB7XG4gICAgIWlzVmFsaWRPd25lcihvd25lcikg
PyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAncmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tKC4uLik6IE9ubHkgYSBSZWFjdE93bmVyIGNhbiBo
YXZlIHJlZnMuIFlvdSBtaWdodCBiZSByZW1vdmluZyBhIHJlZiB0byBhIGNvbXBvbmVudCB0aGF0
IHdhcyBub3QgY3JlYXRlZCBpbnNpZGUgYSBjb21wb25lbnRcXCdzIGByZW5kZXJgIG1ldGhvZCwg
b3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IGxvYWRlZCAoZGV0YWlsczogaHR0
cHM6Ly9mYi5tZS9yZWFjdC1yZWZzLW11c3QtaGF2ZS1vd25lcikuJykgOiBfcHJvZEludmFyaWFu
dCgnMTIwJykgOiB2b2lkIDA7XG4gICAgdmFyIG93bmVyUHVibGljSW5zdGFuY2UgPSBvd25lci5n
ZXRQdWJsaWNJbnN0YW5jZSgpO1xuICAgIC8vIENoZWNrIHRoYXQgYGNvbXBvbmVudGAncyBvd25l
ciBpcyBzdGlsbCBhbGl2ZSBhbmQgdGhhdCBgY29tcG9uZW50YCBpcyBzdGlsbCB0aGUgY3VycmVu
dCByZWZcbiAgICAvLyBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvIGRldGFjaCB0aGUgcmVmIGlm
IGFub3RoZXIgY29tcG9uZW50IHN0b2xlIGl0LlxuICAgIGlmIChvd25lclB1YmxpY0luc3RhbmNl
ICYmIG93bmVyUHVibGljSW5zdGFuY2UucmVmc1tyZWZdID09PSBjb21wb25lbnQuZ2V0UHVibGlj
SW5zdGFuY2UoKSkge1xuICAgICAgb3duZXIuZGV0YWNoUmVmKHJlZik7XG4gICAgfVxuICB9XG59
O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0T3duZXI7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdE93bmVyLmpz
XG4gKiogbW9kdWxlIGlkID0gMTU3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipc
biAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBS
ZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lM
TF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG5c
blxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qt
ZG9tL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qc1xuICoqIG1vZHVsZSBpZCA9IDE1OFxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWdu
Jyk7XG5cbnZhciBDYWxsYmFja1F1ZXVlID0gcmVxdWlyZSgnLi9DYWxsYmFja1F1ZXVlJyk7XG52
YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG52YXIgUmVhY3RCcm93
c2VyRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnLi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXInKTtc
bnZhciBSZWFjdElucHV0U2VsZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdElucHV0U2VsZWN0aW9u
Jyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVu
dGF0aW9uJyk7XG52YXIgVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1RyYW5zYWN0aW9uJyk7XG52
YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVRdWV1ZScpO1xuXG4v
KipcbiAqIEVuc3VyZXMgdGhhdCwgd2hlbiBwb3NzaWJsZSwgdGhlIHNlbGVjdGlvbiByYW5nZSAo
Y3VycmVudGx5IHNlbGVjdGVkIHRleHRcbiAqIGlucHV0KSBpcyBub3QgZGlzdHVyYmVkIGJ5IHBl
cmZvcm1pbmcgdGhlIHRyYW5zYWN0aW9uLlxuICovXG52YXIgU0VMRUNUSU9OX1JFU1RPUkFUSU9O
ID0ge1xuICAvKipcbiAgICogQHJldHVybiB7U2VsZWN0aW9ufSBTZWxlY3Rpb24gaW5mb3JtYXRp
b24uXG4gICAqL1xuICBpbml0aWFsaXplOiBSZWFjdElucHV0U2VsZWN0aW9uLmdldFNlbGVjdGlv
bkluZm9ybWF0aW9uLFxuICAvKipcbiAgICogQHBhcmFtIHtTZWxlY3Rpb259IHNlbCBTZWxlY3Rp
b24gaW5mb3JtYXRpb24gcmV0dXJuZWQgZnJvbSBgaW5pdGlhbGl6ZWAuXG4gICAqL1xuICBjbG9z
ZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5yZXN0b3JlU2VsZWN0aW9uXG59O1xuXG4vKipcbiAqIFN1
cHByZXNzZXMgZXZlbnRzIChibHVyL2ZvY3VzKSB0aGF0IGNvdWxkIGJlIGluYWR2ZXJ0ZW50bHkg
ZGlzcGF0Y2hlZCBkdWUgdG9cbiAqIGhpZ2ggbGV2ZWwgRE9NIG1hbmlwdWxhdGlvbnMgKGxpa2Ug
dGVtcG9yYXJpbHkgcmVtb3ZpbmcgYSB0ZXh0IGlucHV0IGZyb20gdGhlXG4gKiBET00pLlxuICov
XG52YXIgRVZFTlRfU1VQUFJFU1NJT04gPSB7XG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFu
fSBUaGUgZW5hYmxlZCBzdGF0dXMgb2YgYFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcmAgYmVmb3Jl
XG4gICAqIHRoZSByZWNvbmNpbGlhdGlvbi5cbiAgICovXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9u
ICgpIHtcbiAgICB2YXIgY3VycmVudGx5RW5hYmxlZCA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ci5pc0VuYWJsZWQoKTtcbiAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc2V0RW5hYmxlZChm
YWxzZSk7XG4gICAgcmV0dXJuIGN1cnJlbnRseUVuYWJsZWQ7XG4gIH0sXG5cbiAgLyoqXG4gICAq
IEBwYXJhbSB7Ym9vbGVhbn0gcHJldmlvdXNseUVuYWJsZWQgRW5hYmxlZCBzdGF0dXMgb2ZcbiAg
ICogICBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBiZWZvcmUgdGhlIHJlY29uY2lsaWF0aW9u
IG9jY3VycmVkLiBgY2xvc2VgXG4gICAqICAgcmVzdG9yZXMgdGhlIHByZXZpb3VzIHZhbHVlLlxu
ICAgKi9cbiAgY2xvc2U6IGZ1bmN0aW9uIChwcmV2aW91c2x5RW5hYmxlZCkge1xuICAgIFJlYWN0
QnJvd3NlckV2ZW50RW1pdHRlci5zZXRFbmFibGVkKHByZXZpb3VzbHlFbmFibGVkKTtcbiAgfVxu
fTtcblxuLyoqXG4gKiBQcm92aWRlcyBhIHF1ZXVlIGZvciBjb2xsZWN0aW5nIGBjb21wb25lbnRE
aWRNb3VudGAgYW5kXG4gKiBgY29tcG9uZW50RGlkVXBkYXRlYCBjYWxsYmFja3MgZHVyaW5nIHRo
ZSB0cmFuc2FjdGlvbi5cbiAqL1xudmFyIE9OX0RPTV9SRUFEWV9RVUVVRUlORyA9IHtcbiAgLyoq
XG4gICAqIEluaXRpYWxpemVzIHRoZSBpbnRlcm5hbCBgb25ET01SZWFkeWAgcXVldWUuXG4gICAq
L1xuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5yZWFjdE1vdW50UmVhZHku
cmVzZXQoKTtcbiAgfSxcblxuICAvKipcbiAgICogQWZ0ZXIgRE9NIGlzIGZsdXNoZWQsIGludm9r
ZSBhbGwgcmVnaXN0ZXJlZCBgb25ET01SZWFkeWAgY2FsbGJhY2tzLlxuICAgKi9cbiAgY2xvc2U6
IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJlYWN0TW91bnRSZWFkeS5ub3RpZnlBbGwoKTtcbiAg
fVxufTtcblxuLyoqXG4gKiBFeGVjdXRlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBgVHJhbnNh
Y3Rpb25gIGluc3RhbmNlLiBDb25zaWRlciB0aGVzZSBhc1xuICogYmVpbmcgbWVtYmVyIG1ldGhv
ZHMsIGJ1dCB3aXRoIGFuIGltcGxpZWQgb3JkZXJpbmcgd2hpbGUgYmVpbmcgaXNvbGF0ZWQgZnJv
bVxuICogZWFjaCBvdGhlci5cbiAqL1xudmFyIFRSQU5TQUNUSU9OX1dSQVBQRVJTID0gW1NFTEVD
VElPTl9SRVNUT1JBVElPTiwgRVZFTlRfU1VQUFJFU1NJT04sIE9OX0RPTV9SRUFEWV9RVUVVRUlO
R107XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFRS
QU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goe1xuICAgIGluaXRpYWxpemU6IFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1c2gsXG4gICAgY2xvc2U6IFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vbkVuZEZsdXNoXG4gIH0pO1xufVxuXG4vKipcbiAqIEN1cnJlbnRs
eTpcbiAqIC0gVGhlIG9yZGVyIHRoYXQgdGhlc2UgYXJlIGxpc3RlZCBpbiB0aGUgdHJhbnNhY3Rp
b24gaXMgY3JpdGljYWw6XG4gKiAtIFN1cHByZXNzZXMgZXZlbnRzLlxuICogLSBSZXN0b3JlcyBz
ZWxlY3Rpb24gcmFuZ2UuXG4gKlxuICogRnV0dXJlOlxuICogLSBSZXN0b3JlIGRvY3VtZW50L292
ZXJmbG93IHNjcm9sbCBwb3NpdGlvbnMgdGhhdCB3ZXJlIHVuaW50ZW50aW9uYWxseVxuICogICBt
b2RpZmllZCB2aWEgRE9NIGluc2VydGlvbnMgYWJvdmUgdGhlIHRvcCB2aWV3cG9ydCBib3VuZGFy
eS5cbiAqIC0gSW1wbGVtZW50L2ludGVncmF0ZSB3aXRoIGN1c3RvbWl6ZWQgY29uc3RyYWludCBi
YXNlZCBsYXlvdXQgc3lzdGVtIGFuZCBrZWVwXG4gKiAgIHRyYWNrIG9mIHdoaWNoIGRpbWVuc2lv
bnMgbXVzdCBiZSByZW1lYXN1cmVkLlxuICpcbiAqIEBjbGFzcyBSZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9uXG4gKi9cbmZ1bmN0aW9uIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24odXNlQ3JlYXRl
RWxlbWVudCkge1xuICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG4gIC8vIE9ubHkg
c2VydmVyLXNpZGUgcmVuZGVyaW5nIHJlYWxseSBuZWVkcyB0aGlzIG9wdGlvbiAoc2VlXG4gIC8v
IGBSZWFjdFNlcnZlclJlbmRlcmluZ2ApLCBidXQgc2VydmVyLXNpZGUgdXNlc1xuICAvLyBgUmVh
Y3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbmAgaW5zdGVhZC4gVGhpcyBvcHRpb24gaXMgaGVy
ZSBzbyB0aGF0IGl0J3NcbiAgLy8gYWNjZXNzaWJsZSBhbmQgZGVmYXVsdHMgdG8gZmFsc2Ugd2hl
biBgUmVhY3RET01Db21wb25lbnRgIGFuZFxuICAvLyBgUmVhY3RET01UZXh0Q29tcG9uZW50YCBj
aGVja3MgaXQgaW4gYG1vdW50Q29tcG9uZW50YC5gXG4gIHRoaXMucmVuZGVyVG9TdGF0aWNNYXJr
dXAgPSBmYWxzZTtcbiAgdGhpcy5yZWFjdE1vdW50UmVhZHkgPSBDYWxsYmFja1F1ZXVlLmdldFBv
b2xlZChudWxsKTtcbiAgdGhpcy51c2VDcmVhdGVFbGVtZW50ID0gdXNlQ3JlYXRlRWxlbWVudDtc
bn1cblxudmFyIE1peGluID0ge1xuICAvKipcbiAgICogQHNlZSBUcmFuc2FjdGlvblxuICAgKiBA
YWJzdHJhY3RcbiAgICogQGZpbmFsXG4gICAqIEByZXR1cm4ge2FycmF5PG9iamVjdD59IExpc3Qg
b2Ygb3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJlcy5cbiAgICogICBUT0RPOiBjb252ZXJ0IHRvIGFy
cmF5PFRyYW5zYWN0aW9uV3JhcHBlcj5cbiAgICovXG4gIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6
IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG4gIH0sXG5c
biAgLyoqXG4gICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgYG9uRE9N
UmVhZHlgIGNhbGxiYWNrcyB3aXRoLlxuICAgKi9cbiAgZ2V0UmVhY3RNb3VudFJlYWR5OiBmdW5j
dGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5O1xuICB9LFxuXG4gIC8q
KlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IFJlYWN0IGFzeW5j
IGV2ZW50cy5cbiAgICovXG4gIGdldFVwZGF0ZVF1ZXVlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0
dXJuIFJlYWN0VXBkYXRlUXVldWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhdmUgY3VycmVudCB0
cmFuc2FjdGlvbiBzdGF0ZSAtLSBpZiB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhpcyBtZXRob2Qg
aXNcbiAgICogcGFzc2VkIHRvIGByb2xsYmFja2AsIHRoZSB0cmFuc2FjdGlvbiB3aWxsIGJlIHJl
c2V0IHRvIHRoYXQgc3RhdGUuXG4gICAqL1xuICBjaGVja3BvaW50OiBmdW5jdGlvbiAoKSB7XG4g
ICAgLy8gcmVhY3RNb3VudFJlYWR5IGlzIHRoZSBvdXIgb25seSBzdGF0ZWZ1bCB3cmFwcGVyXG4g
ICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5LmNoZWNrcG9pbnQoKTtcbiAgfSxcblxuICBy
b2xsYmFjazogZnVuY3Rpb24gKGNoZWNrcG9pbnQpIHtcbiAgICB0aGlzLnJlYWN0TW91bnRSZWFk
eS5yb2xsYmFjayhjaGVja3BvaW50KTtcbiAgfSxcblxuICAvKipcbiAgICogYFBvb2xlZENsYXNz
YCBsb29rcyBmb3IgdGhpcywgYW5kIHdpbGwgaW52b2tlIHRoaXMgYmVmb3JlIGFsbG93aW5nIHRo
aXNcbiAgICogaW5zdGFuY2UgdG8gYmUgcmV1c2VkLlxuICAgKi9cbiAgZGVzdHJ1Y3RvcjogZnVu
Y3Rpb24gKCkge1xuICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFk
eSk7XG4gICAgdGhpcy5yZWFjdE1vdW50UmVhZHkgPSBudWxsO1xuICB9XG59O1xuXG5fYXNzaWdu
KFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4p
O1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7
XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjtcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGli
L1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uanNcbiAqKiBtb2R1bGUgaWQgPSAxNTlcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0
T3duZXInKTtcblxudmFyIFJlYWN0UmVmID0ge307XG5cbmZ1bmN0aW9uIGF0dGFjaFJlZihyZWYs
IGNvbXBvbmVudCwgb3duZXIpIHtcbiAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtc
biAgICByZWYoY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCkpO1xuICB9IGVsc2Uge1xuICAg
IC8vIExlZ2FjeSByZWZcbiAgICBSZWFjdE93bmVyLmFkZENvbXBvbmVudEFzUmVmVG8oY29tcG9u
ZW50LCByZWYsIG93bmVyKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZXRhY2hSZWYocmVmLCBjb21w
b25lbnQsIG93bmVyKSB7XG4gIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAg
cmVmKG51bGwpO1xuICB9IGVsc2Uge1xuICAgIC8vIExlZ2FjeSByZWZcbiAgICBSZWFjdE93bmVy
LnJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbShjb21wb25lbnQsIHJlZiwgb3duZXIpO1xuICB9XG59
XG5cblJlYWN0UmVmLmF0dGFjaFJlZnMgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIGVsZW1lbnQpIHtc
biAgaWYgKGVsZW1lbnQgPT09IG51bGwgfHwgdHlwZW9mIGVsZW1lbnQgIT09ICdvYmplY3QnKSB7
XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciByZWYgPSBlbGVtZW50LnJlZjtcbiAgaWYgKHJlZiAh
PSBudWxsKSB7XG4gICAgYXR0YWNoUmVmKHJlZiwgaW5zdGFuY2UsIGVsZW1lbnQuX293bmVyKTtc
biAgfVxufTtcblxuUmVhY3RSZWYuc2hvdWxkVXBkYXRlUmVmcyA9IGZ1bmN0aW9uIChwcmV2RWxl
bWVudCwgbmV4dEVsZW1lbnQpIHtcbiAgLy8gSWYgZWl0aGVyIHRoZSBvd25lciBvciBhIGByZWZg
IGhhcyBjaGFuZ2VkLCBtYWtlIHN1cmUgdGhlIG5ld2VzdCBvd25lclxuICAvLyBoYXMgc3RvcmVk
IGEgcmVmZXJlbmNlIHRvIGB0aGlzYCwgYW5kIHRoZSBwcmV2aW91cyBvd25lciAoaWYgZGlmZmVy
ZW50KVxuICAvLyBoYXMgZm9yZ290dGVuIHRoZSByZWZlcmVuY2UgdG8gYHRoaXNgLiBXZSB1c2Ug
dGhlIGVsZW1lbnQgaW5zdGVhZFxuICAvLyBvZiB0aGUgcHVibGljIHRoaXMucHJvcHMgYmVjYXVz
ZSB0aGUgcG9zdCBwcm9jZXNzaW5nIGNhbm5vdCBkZXRlcm1pbmVcbiAgLy8gYSByZWYuIFRoZSBy
ZWYgY29uY2VwdHVhbGx5IGxpdmVzIG9uIHRoZSBlbGVtZW50LlxuXG4gIC8vIFRPRE86IFNob3Vs
ZCB0aGlzIGV2ZW4gYmUgcG9zc2libGU/IFRoZSBvd25lciBjYW5ub3QgY2hhbmdlIGJlY2F1c2Vc
biAgLy8gaXQncyBmb3JiaWRkZW4gYnkgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQuIFRoZSBy
ZWYgY2FuIGNoYW5nZVxuICAvLyBpZiB5b3Ugc3dhcCB0aGUga2V5cyBvZiBidXQgbm90IHRoZSBy
ZWZzLiBSZWNvbnNpZGVyIHdoZXJlIHRoaXMgY2hlY2tcbiAgLy8gaXMgbWFkZS4gSXQgcHJvYmFi
bHkgYmVsb25ncyB3aGVyZSB0aGUga2V5IGNoZWNraW5nIGFuZFxuICAvLyBpbnN0YW50aWF0ZVJl
YWN0Q29tcG9uZW50IGlzIGRvbmUuXG5cbiAgdmFyIHByZXZSZWYgPSBudWxsO1xuICB2YXIgcHJl
dk93bmVyID0gbnVsbDtcbiAgaWYgKHByZXZFbGVtZW50ICE9PSBudWxsICYmIHR5cGVvZiBwcmV2
RWxlbWVudCA9PT0gJ29iamVjdCcpIHtcbiAgICBwcmV2UmVmID0gcHJldkVsZW1lbnQucmVmO1xu
ICAgIHByZXZPd25lciA9IHByZXZFbGVtZW50Ll9vd25lcjtcbiAgfVxuXG4gIHZhciBuZXh0UmVm
ID0gbnVsbDtcbiAgdmFyIG5leHRPd25lciA9IG51bGw7XG4gIGlmIChuZXh0RWxlbWVudCAhPT0g
bnVsbCAmJiB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdvYmplY3QnKSB7XG4gICAgbmV4dFJlZiA9
IG5leHRFbGVtZW50LnJlZjtcbiAgICBuZXh0T3duZXIgPSBuZXh0RWxlbWVudC5fb3duZXI7XG4g
IH1cblxuICByZXR1cm4gcHJldlJlZiAhPT0gbmV4dFJlZiB8fFxuICAvLyBJZiBvd25lciBjaGFu
Z2VzIGJ1dCB3ZSBoYXZlIGFuIHVuY2hhbmdlZCBmdW5jdGlvbiByZWYsIGRvbid0IHVwZGF0ZSBy
ZWZzXG4gIHR5cGVvZiBuZXh0UmVmID09PSAnc3RyaW5nJyAmJiBuZXh0T3duZXIgIT09IHByZXZP
d25lcjtcbn07XG5cblJlYWN0UmVmLmRldGFjaFJlZnMgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIGVs
ZW1lbnQpIHtcbiAgaWYgKGVsZW1lbnQgPT09IG51bGwgfHwgdHlwZW9mIGVsZW1lbnQgIT09ICdv
YmplY3QnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciByZWYgPSBlbGVtZW50LnJlZjtcbiAg
aWYgKHJlZiAhPSBudWxsKSB7XG4gICAgZGV0YWNoUmVmKHJlZiwgaW5zdGFuY2UsIGVsZW1lbnQu
X293bmVyKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFJlZjtcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGli
L1JlYWN0UmVmLmpzXG4gKiogbW9kdWxlIGlkID0gMTYwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFBvb2xlZENs
YXNzID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xudmFyIFRyYW5zYWN0aW9uID0gcmVxdWly
ZSgnLi9UcmFuc2FjdGlvbicpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgn
Li9SZWFjdEluc3RydW1lbnRhdGlvbicpO1xudmFyIFJlYWN0U2VydmVyVXBkYXRlUXVldWUgPSBy
ZXF1aXJlKCcuL1JlYWN0U2VydmVyVXBkYXRlUXVldWUnKTtcblxuLyoqXG4gKiBFeGVjdXRlZCB3
aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBgVHJhbnNhY3Rpb25gIGluc3RhbmNlLiBDb25zaWRlciB0
aGVzZSBhc1xuICogYmVpbmcgbWVtYmVyIG1ldGhvZHMsIGJ1dCB3aXRoIGFuIGltcGxpZWQgb3Jk
ZXJpbmcgd2hpbGUgYmVpbmcgaXNvbGF0ZWQgZnJvbVxuICogZWFjaCBvdGhlci5cbiAqL1xudmFy
IFRSQU5TQUNUSU9OX1dSQVBQRVJTID0gW107XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFRSQU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goe1xuICAgIGlu
aXRpYWxpemU6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1c2gsXG4g
ICAgY2xvc2U6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVuZEZsdXNoXG4gIH0p
O1xufVxuXG52YXIgbm9vcENhbGxiYWNrUXVldWUgPSB7XG4gIGVucXVldWU6IGZ1bmN0aW9uICgp
IHt9XG59O1xuXG4vKipcbiAqIEBjbGFzcyBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9u
XG4gKiBAcGFyYW0ge2Jvb2xlYW59IHJlbmRlclRvU3RhdGljTWFya3VwXG4gKi9cbmZ1bmN0aW9u
IFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24ocmVuZGVyVG9TdGF0aWNNYXJrdXApIHtc
biAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xuICB0aGlzLnJlbmRlclRvU3RhdGlj
TWFya3VwID0gcmVuZGVyVG9TdGF0aWNNYXJrdXA7XG4gIHRoaXMudXNlQ3JlYXRlRWxlbWVudCA9
IGZhbHNlO1xuICB0aGlzLnVwZGF0ZVF1ZXVlID0gbmV3IFJlYWN0U2VydmVyVXBkYXRlUXVldWUo
dGhpcyk7XG59XG5cbnZhciBNaXhpbiA9IHtcbiAgLyoqXG4gICAqIEBzZWUgVHJhbnNhY3Rpb25c
biAgICogQGFic3RyYWN0XG4gICAqIEBmaW5hbFxuICAgKiBAcmV0dXJuIHthcnJheX0gRW1wdHkg
bGlzdCBvZiBvcGVyYXRpb24gd3JhcCBwcm9jZWR1cmVzLlxuICAgKi9cbiAgZ2V0VHJhbnNhY3Rp
b25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVS
UztcbiAgfSxcblxuICAvKipcbiAgICogQHJldHVybiB7b2JqZWN0fSBUaGUgcXVldWUgdG8gY29s
bGVjdCBgb25ET01SZWFkeWAgY2FsbGJhY2tzIHdpdGguXG4gICAqL1xuICBnZXRSZWFjdE1vdW50
UmVhZHk6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbm9vcENhbGxiYWNrUXVldWU7XG4gIH0s
XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgUmVh
Y3QgYXN5bmMgZXZlbnRzLlxuICAgKi9cbiAgZ2V0VXBkYXRlUXVldWU6IGZ1bmN0aW9uICgpIHtc
biAgICByZXR1cm4gdGhpcy51cGRhdGVRdWV1ZTtcbiAgfSxcblxuICAvKipcbiAgICogYFBvb2xl
ZENsYXNzYCBsb29rcyBmb3IgdGhpcywgYW5kIHdpbGwgaW52b2tlIHRoaXMgYmVmb3JlIGFsbG93
aW5nIHRoaXNcbiAgICogaW5zdGFuY2UgdG8gYmUgcmV1c2VkLlxuICAgKi9cbiAgZGVzdHJ1Y3Rv
cjogZnVuY3Rpb24gKCkge30sXG5cbiAgY2hlY2twb2ludDogZnVuY3Rpb24gKCkge30sXG5cbiAg
cm9sbGJhY2s6IGZ1bmN0aW9uICgpIHt9XG59O1xuXG5fYXNzaWduKFJlYWN0U2VydmVyUmVuZGVy
aW5nVHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4pO1xuXG5Qb29sZWRD
bGFzcy5hZGRQb29saW5nVG8oUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbik7XG5cbm1v
ZHVsZS5leHBvcnRzID0gUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbjtcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGli
L1JlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24uanNcbiAqKiBtb2R1bGUgaWQgPSAxNjFc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGlu
c3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVj
dG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1
bmN0aW9uXCIpOyB9IH1cblxudmFyIFJlYWN0VXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0
VXBkYXRlUXVldWUnKTtcblxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5n
Jyk7XG5cbmZ1bmN0aW9uIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7XG4g
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFyIGNv
bnN0cnVjdG9yID0gcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3I7XG4gICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4pOiBDYW4g
b25seSB1cGRhdGUgYSBtb3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1lYW5z
IHlvdSBjYWxsZWQgJXMoKSBvdXRzaWRlIGNvbXBvbmVudFdpbGxNb3VudCgpIG9uIHRoZSBzZXJ2
ZXIuICcgKyAnVGhpcyBpcyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNvZGUgZm9yIHRoZSAl
cyBjb21wb25lbnQuJywgY2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwgY29uc3RydWN0b3IgJiYgKGNv
bnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8IGNvbnN0cnVjdG9yLm5hbWUpIHx8ICdSZWFjdENsYXNz
JykgOiB2b2lkIDA7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGlzIHRoZSB1cGRhdGUgcXVldWUg
dXNlZCBmb3Igc2VydmVyIHJlbmRlcmluZy5cbiAqIEl0IGRlbGVnYXRlcyB0byBSZWFjdFVwZGF0
ZVF1ZXVlIHdoaWxlIHNlcnZlciByZW5kZXJpbmcgaXMgaW4gcHJvZ3Jlc3MgYW5kXG4gKiBzd2l0
Y2hlcyB0byBSZWFjdE5vb3BVcGRhdGVRdWV1ZSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaGFzIGNv
bXBsZXRlZC5cbiAqIEBjbGFzcyBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlXG4gKiBAcGFyYW0ge1Ry
YW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICovXG5cbnZhciBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVl
ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlKHRyYW5z
YWN0aW9uKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlYWN0U2VydmVyVXBkYXRlUXVl
dWUpO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoq
XG4gICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMg
bW91bnRlZC5cbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5z
dGFuY2Ugd2Ugd2FudCB0byB0ZXN0LlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1v
dW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogQHByb3RlY3RlZFxuICAgKiBAZmluYWxcbiAg
ICovXG5cblxuICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5pc01vdW50ZWQgPSBm
dW5jdGlvbiBpc01vdW50ZWQocHVibGljSW5zdGFuY2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4g
IH07XG5cbiAgLyoqXG4gICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0
ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXNcbiAgICogaGF2ZSBwcm9jZXNzZWQuXG4g
ICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNl
IHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxi
YWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLlxuICAgKiBAaW50ZXJuYWxcbiAgICov
XG5cblxuICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlQ2FsbGJhY2sg
PSBmdW5jdGlvbiBlbnF1ZXVlQ2FsbGJhY2socHVibGljSW5zdGFuY2UsIGNhbGxiYWNrLCBjYWxs
ZXJOYW1lKSB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHtc
biAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUNhbGxiYWNrKHB1YmxpY0luc3RhbmNlLCBj
YWxsYmFjaywgY2FsbGVyTmFtZSk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBGb3JjZXMg
YW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3
aXRoXG4gICAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0
aW9uLlxuICAgKlxuICAgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cg
dGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gICAqIGNvbXBvbmVudCdzIHN0YXRlIGhh
cyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxuICAgKlxuICAgKiBUaGlz
IHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52
b2tlXG4gICAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAu
XG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3Rh
bmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG5cblxuICBS
ZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlRm9yY2VVcGRhdGUgPSBmdW5j
dGlvbiBlbnF1ZXVlRm9yY2VVcGRhdGUocHVibGljSW5zdGFuY2UpIHtcbiAgICBpZiAodGhpcy50
cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSkge1xuICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5l
bnF1ZXVlRm9yY2VVcGRhdGUocHVibGljSW5zdGFuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3
YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7XG4gICAgfVxuICB9O1xuXG4g
IC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3Ig
YHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuXG4gICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMu
c3RhdGVgIGFzIGltbXV0YWJsZS5cbiAgICpcbiAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRo
YXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cbiAgICogYWNj
ZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4g
dGhlIG9sZCB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0
YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2Jq
ZWN0fGZ1bmN0aW9ufSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuXG4gICAqIEBpbnRlcm5hbFxu
ICAgKi9cblxuXG4gIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmVucXVldWVSZXBs
YWNlU3RhdGUgPSBmdW5jdGlvbiBlbnF1ZXVlUmVwbGFjZVN0YXRlKHB1YmxpY0luc3RhbmNlLCBj
b21wbGV0ZVN0YXRlKSB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9u
KCkpIHtcbiAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZVJlcGxhY2VTdGF0ZShwdWJsaWNJ
bnN0YW5jZSwgY29tcGxldGVTdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdhcm5Ob29wKHB1
YmxpY0luc3RhbmNlLCAncmVwbGFjZVN0YXRlJyk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAg
KiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9w
ZW5kaW5nU3RhdGUgaXNcbiAgICogaW50ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0
cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSB0byBkZWVwXG4gICAqIHByb3BlcnRpZXMgd2hp
Y2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBp
dFxuICAgKiBkdXJpbmcgdGhlIG1lcmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9
IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICog
QHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUg
dG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cblxuXG4gIFJl
YWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmVucXVldWVTZXRTdGF0ZSA9IGZ1bmN0aW9u
IGVucXVldWVTZXRTdGF0ZShwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKSB7XG4gICAgaWYg
KHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHtcbiAgICAgIFJlYWN0VXBkYXRl
UXVldWUuZW5xdWV1ZVNldFN0YXRlKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpO1xuICAg
IH0gZWxzZSB7XG4gICAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3NldFN0YXRlJyk7XG4g
ICAgfVxuICB9O1xuXG4gIHJldHVybiBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlO1xufSgpO1xuXG5t
b2R1bGUuZXhwb3J0cyA9IFJlYWN0U2VydmVyVXBkYXRlUXVldWU7XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdFNl
cnZlclVwZGF0ZVF1ZXVlLmpzXG4gKiogbW9kdWxlIGlkID0gMTYyXG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICcxNS42LjEnO1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RWZXJzaW9u
LmpzXG4gKiogbW9kdWxlIGlkID0gMTYzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIv
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgTlMg
PSB7XG4gIHhsaW5rOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycsXG4gIHhtbDogJ2h0
dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSdcbn07XG5cbi8vIFdlIHVzZSBhdHRy
aWJ1dGVzIGZvciBldmVyeXRoaW5nIFNWRyBzbyBsZXQncyBhdm9pZCBzb21lIGR1cGxpY2F0aW9u
IGFuZCBydW5cbi8vIGNvZGUgaW5zdGVhZC5cbi8vIFRoZSBmb2xsb3dpbmcgYXJlIGFsbCBzcGVj
aWZpZWQgaW4gdGhlIEhUTUwgY29uZmlnIGFscmVhZHkgc28gd2UgZXhjbHVkZSBoZXJlLlxuLy8g
LSBjbGFzcyAoYXMgY2xhc3NOYW1lKVxuLy8gLSBjb2xvclxuLy8gLSBoZWlnaHRcbi8vIC0gaWRc
bi8vIC0gbGFuZ1xuLy8gLSBtYXhcbi8vIC0gbWVkaWFcbi8vIC0gbWV0aG9kXG4vLyAtIG1pblxu
Ly8gLSBuYW1lXG4vLyAtIHN0eWxlXG4vLyAtIHRhcmdldFxuLy8gLSB0eXBlXG4vLyAtIHdpZHRo
XG52YXIgQVRUUlMgPSB7XG4gIGFjY2VudEhlaWdodDogJ2FjY2VudC1oZWlnaHQnLFxuICBhY2N1
bXVsYXRlOiAwLFxuICBhZGRpdGl2ZTogMCxcbiAgYWxpZ25tZW50QmFzZWxpbmU6ICdhbGlnbm1l
bnQtYmFzZWxpbmUnLFxuICBhbGxvd1Jlb3JkZXI6ICdhbGxvd1Jlb3JkZXInLFxuICBhbHBoYWJl
dGljOiAwLFxuICBhbXBsaXR1ZGU6IDAsXG4gIGFyYWJpY0Zvcm06ICdhcmFiaWMtZm9ybScsXG4g
IGFzY2VudDogMCxcbiAgYXR0cmlidXRlTmFtZTogJ2F0dHJpYnV0ZU5hbWUnLFxuICBhdHRyaWJ1
dGVUeXBlOiAnYXR0cmlidXRlVHlwZScsXG4gIGF1dG9SZXZlcnNlOiAnYXV0b1JldmVyc2UnLFxu
ICBhemltdXRoOiAwLFxuICBiYXNlRnJlcXVlbmN5OiAnYmFzZUZyZXF1ZW5jeScsXG4gIGJhc2VQ
cm9maWxlOiAnYmFzZVByb2ZpbGUnLFxuICBiYXNlbGluZVNoaWZ0OiAnYmFzZWxpbmUtc2hpZnQn
LFxuICBiYm94OiAwLFxuICBiZWdpbjogMCxcbiAgYmlhczogMCxcbiAgYnk6IDAsXG4gIGNhbGNN
b2RlOiAnY2FsY01vZGUnLFxuICBjYXBIZWlnaHQ6ICdjYXAtaGVpZ2h0JyxcbiAgY2xpcDogMCxc
biAgY2xpcFBhdGg6ICdjbGlwLXBhdGgnLFxuICBjbGlwUnVsZTogJ2NsaXAtcnVsZScsXG4gIGNs
aXBQYXRoVW5pdHM6ICdjbGlwUGF0aFVuaXRzJyxcbiAgY29sb3JJbnRlcnBvbGF0aW9uOiAnY29s
b3ItaW50ZXJwb2xhdGlvbicsXG4gIGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6ICdjb2xvci1p
bnRlcnBvbGF0aW9uLWZpbHRlcnMnLFxuICBjb2xvclByb2ZpbGU6ICdjb2xvci1wcm9maWxlJyxc
biAgY29sb3JSZW5kZXJpbmc6ICdjb2xvci1yZW5kZXJpbmcnLFxuICBjb250ZW50U2NyaXB0VHlw
ZTogJ2NvbnRlbnRTY3JpcHRUeXBlJyxcbiAgY29udGVudFN0eWxlVHlwZTogJ2NvbnRlbnRTdHls
ZVR5cGUnLFxuICBjdXJzb3I6IDAsXG4gIGN4OiAwLFxuICBjeTogMCxcbiAgZDogMCxcbiAgZGVj
ZWxlcmF0ZTogMCxcbiAgZGVzY2VudDogMCxcbiAgZGlmZnVzZUNvbnN0YW50OiAnZGlmZnVzZUNv
bnN0YW50JyxcbiAgZGlyZWN0aW9uOiAwLFxuICBkaXNwbGF5OiAwLFxuICBkaXZpc29yOiAwLFxu
ICBkb21pbmFudEJhc2VsaW5lOiAnZG9taW5hbnQtYmFzZWxpbmUnLFxuICBkdXI6IDAsXG4gIGR4
OiAwLFxuICBkeTogMCxcbiAgZWRnZU1vZGU6ICdlZGdlTW9kZScsXG4gIGVsZXZhdGlvbjogMCxc
biAgZW5hYmxlQmFja2dyb3VuZDogJ2VuYWJsZS1iYWNrZ3JvdW5kJyxcbiAgZW5kOiAwLFxuICBl
eHBvbmVudDogMCxcbiAgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDogJ2V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQnLFxuICBmaWxsOiAwLFxuICBmaWxsT3BhY2l0eTogJ2ZpbGwtb3BhY2l0eScs
XG4gIGZpbGxSdWxlOiAnZmlsbC1ydWxlJyxcbiAgZmlsdGVyOiAwLFxuICBmaWx0ZXJSZXM6ICdm
aWx0ZXJSZXMnLFxuICBmaWx0ZXJVbml0czogJ2ZpbHRlclVuaXRzJyxcbiAgZmxvb2RDb2xvcjog
J2Zsb29kLWNvbG9yJyxcbiAgZmxvb2RPcGFjaXR5OiAnZmxvb2Qtb3BhY2l0eScsXG4gIGZvY3Vz
YWJsZTogMCxcbiAgZm9udEZhbWlseTogJ2ZvbnQtZmFtaWx5JyxcbiAgZm9udFNpemU6ICdmb250
LXNpemUnLFxuICBmb250U2l6ZUFkanVzdDogJ2ZvbnQtc2l6ZS1hZGp1c3QnLFxuICBmb250U3Ry
ZXRjaDogJ2ZvbnQtc3RyZXRjaCcsXG4gIGZvbnRTdHlsZTogJ2ZvbnQtc3R5bGUnLFxuICBmb250
VmFyaWFudDogJ2ZvbnQtdmFyaWFudCcsXG4gIGZvbnRXZWlnaHQ6ICdmb250LXdlaWdodCcsXG4g
IGZvcm1hdDogMCxcbiAgZnJvbTogMCxcbiAgZng6IDAsXG4gIGZ5OiAwLFxuICBnMTogMCxcbiAg
ZzI6IDAsXG4gIGdseXBoTmFtZTogJ2dseXBoLW5hbWUnLFxuICBnbHlwaE9yaWVudGF0aW9uSG9y
aXpvbnRhbDogJ2dseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwnLFxuICBnbHlwaE9yaWVudGF0
aW9uVmVydGljYWw6ICdnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCcsXG4gIGdseXBoUmVmOiAn
Z2x5cGhSZWYnLFxuICBncmFkaWVudFRyYW5zZm9ybTogJ2dyYWRpZW50VHJhbnNmb3JtJyxcbiAg
Z3JhZGllbnRVbml0czogJ2dyYWRpZW50VW5pdHMnLFxuICBoYW5naW5nOiAwLFxuICBob3JpekFk
dlg6ICdob3Jpei1hZHYteCcsXG4gIGhvcml6T3JpZ2luWDogJ2hvcml6LW9yaWdpbi14JyxcbiAg
aWRlb2dyYXBoaWM6IDAsXG4gIGltYWdlUmVuZGVyaW5nOiAnaW1hZ2UtcmVuZGVyaW5nJyxcbiAg
J2luJzogMCxcbiAgaW4yOiAwLFxuICBpbnRlcmNlcHQ6IDAsXG4gIGs6IDAsXG4gIGsxOiAwLFxu
ICBrMjogMCxcbiAgazM6IDAsXG4gIGs0OiAwLFxuICBrZXJuZWxNYXRyaXg6ICdrZXJuZWxNYXRy
aXgnLFxuICBrZXJuZWxVbml0TGVuZ3RoOiAna2VybmVsVW5pdExlbmd0aCcsXG4gIGtlcm5pbmc6
IDAsXG4gIGtleVBvaW50czogJ2tleVBvaW50cycsXG4gIGtleVNwbGluZXM6ICdrZXlTcGxpbmVz
JyxcbiAga2V5VGltZXM6ICdrZXlUaW1lcycsXG4gIGxlbmd0aEFkanVzdDogJ2xlbmd0aEFkanVz
dCcsXG4gIGxldHRlclNwYWNpbmc6ICdsZXR0ZXItc3BhY2luZycsXG4gIGxpZ2h0aW5nQ29sb3I6
ICdsaWdodGluZy1jb2xvcicsXG4gIGxpbWl0aW5nQ29uZUFuZ2xlOiAnbGltaXRpbmdDb25lQW5n
bGUnLFxuICBsb2NhbDogMCxcbiAgbWFya2VyRW5kOiAnbWFya2VyLWVuZCcsXG4gIG1hcmtlck1p
ZDogJ21hcmtlci1taWQnLFxuICBtYXJrZXJTdGFydDogJ21hcmtlci1zdGFydCcsXG4gIG1hcmtl
ckhlaWdodDogJ21hcmtlckhlaWdodCcsXG4gIG1hcmtlclVuaXRzOiAnbWFya2VyVW5pdHMnLFxu
ICBtYXJrZXJXaWR0aDogJ21hcmtlcldpZHRoJyxcbiAgbWFzazogMCxcbiAgbWFza0NvbnRlbnRV
bml0czogJ21hc2tDb250ZW50VW5pdHMnLFxuICBtYXNrVW5pdHM6ICdtYXNrVW5pdHMnLFxuICBt
YXRoZW1hdGljYWw6IDAsXG4gIG1vZGU6IDAsXG4gIG51bU9jdGF2ZXM6ICdudW1PY3RhdmVzJyxc
biAgb2Zmc2V0OiAwLFxuICBvcGFjaXR5OiAwLFxuICBvcGVyYXRvcjogMCxcbiAgb3JkZXI6IDAs
XG4gIG9yaWVudDogMCxcbiAgb3JpZW50YXRpb246IDAsXG4gIG9yaWdpbjogMCxcbiAgb3ZlcmZs
b3c6IDAsXG4gIG92ZXJsaW5lUG9zaXRpb246ICdvdmVybGluZS1wb3NpdGlvbicsXG4gIG92ZXJs
aW5lVGhpY2tuZXNzOiAnb3ZlcmxpbmUtdGhpY2tuZXNzJyxcbiAgcGFpbnRPcmRlcjogJ3BhaW50
LW9yZGVyJyxcbiAgcGFub3NlMTogJ3Bhbm9zZS0xJyxcbiAgcGF0aExlbmd0aDogJ3BhdGhMZW5n
dGgnLFxuICBwYXR0ZXJuQ29udGVudFVuaXRzOiAncGF0dGVybkNvbnRlbnRVbml0cycsXG4gIHBh
dHRlcm5UcmFuc2Zvcm06ICdwYXR0ZXJuVHJhbnNmb3JtJyxcbiAgcGF0dGVyblVuaXRzOiAncGF0
dGVyblVuaXRzJyxcbiAgcG9pbnRlckV2ZW50czogJ3BvaW50ZXItZXZlbnRzJyxcbiAgcG9pbnRz
OiAwLFxuICBwb2ludHNBdFg6ICdwb2ludHNBdFgnLFxuICBwb2ludHNBdFk6ICdwb2ludHNBdFkn
LFxuICBwb2ludHNBdFo6ICdwb2ludHNBdFonLFxuICBwcmVzZXJ2ZUFscGhhOiAncHJlc2VydmVB
bHBoYScsXG4gIHByZXNlcnZlQXNwZWN0UmF0aW86ICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJyxcbiAg
cHJpbWl0aXZlVW5pdHM6ICdwcmltaXRpdmVVbml0cycsXG4gIHI6IDAsXG4gIHJhZGl1czogMCxc
biAgcmVmWDogJ3JlZlgnLFxuICByZWZZOiAncmVmWScsXG4gIHJlbmRlcmluZ0ludGVudDogJ3Jl
bmRlcmluZy1pbnRlbnQnLFxuICByZXBlYXRDb3VudDogJ3JlcGVhdENvdW50JyxcbiAgcmVwZWF0
RHVyOiAncmVwZWF0RHVyJyxcbiAgcmVxdWlyZWRFeHRlbnNpb25zOiAncmVxdWlyZWRFeHRlbnNp
b25zJyxcbiAgcmVxdWlyZWRGZWF0dXJlczogJ3JlcXVpcmVkRmVhdHVyZXMnLFxuICByZXN0YXJ0
OiAwLFxuICByZXN1bHQ6IDAsXG4gIHJvdGF0ZTogMCxcbiAgcng6IDAsXG4gIHJ5OiAwLFxuICBz
Y2FsZTogMCxcbiAgc2VlZDogMCxcbiAgc2hhcGVSZW5kZXJpbmc6ICdzaGFwZS1yZW5kZXJpbmcn
LFxuICBzbG9wZTogMCxcbiAgc3BhY2luZzogMCxcbiAgc3BlY3VsYXJDb25zdGFudDogJ3NwZWN1
bGFyQ29uc3RhbnQnLFxuICBzcGVjdWxhckV4cG9uZW50OiAnc3BlY3VsYXJFeHBvbmVudCcsXG4g
IHNwZWVkOiAwLFxuICBzcHJlYWRNZXRob2Q6ICdzcHJlYWRNZXRob2QnLFxuICBzdGFydE9mZnNl
dDogJ3N0YXJ0T2Zmc2V0JyxcbiAgc3RkRGV2aWF0aW9uOiAnc3RkRGV2aWF0aW9uJyxcbiAgc3Rl
bWg6IDAsXG4gIHN0ZW12OiAwLFxuICBzdGl0Y2hUaWxlczogJ3N0aXRjaFRpbGVzJyxcbiAgc3Rv
cENvbG9yOiAnc3RvcC1jb2xvcicsXG4gIHN0b3BPcGFjaXR5OiAnc3RvcC1vcGFjaXR5JyxcbiAg
c3RyaWtldGhyb3VnaFBvc2l0aW9uOiAnc3RyaWtldGhyb3VnaC1wb3NpdGlvbicsXG4gIHN0cmlr
ZXRocm91Z2hUaGlja25lc3M6ICdzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcycsXG4gIHN0cmluZzog
MCxcbiAgc3Ryb2tlOiAwLFxuICBzdHJva2VEYXNoYXJyYXk6ICdzdHJva2UtZGFzaGFycmF5Jyxc
biAgc3Ryb2tlRGFzaG9mZnNldDogJ3N0cm9rZS1kYXNob2Zmc2V0JyxcbiAgc3Ryb2tlTGluZWNh
cDogJ3N0cm9rZS1saW5lY2FwJyxcbiAgc3Ryb2tlTGluZWpvaW46ICdzdHJva2UtbGluZWpvaW4n
LFxuICBzdHJva2VNaXRlcmxpbWl0OiAnc3Ryb2tlLW1pdGVybGltaXQnLFxuICBzdHJva2VPcGFj
aXR5OiAnc3Ryb2tlLW9wYWNpdHknLFxuICBzdHJva2VXaWR0aDogJ3N0cm9rZS13aWR0aCcsXG4g
IHN1cmZhY2VTY2FsZTogJ3N1cmZhY2VTY2FsZScsXG4gIHN5c3RlbUxhbmd1YWdlOiAnc3lzdGVt
TGFuZ3VhZ2UnLFxuICB0YWJsZVZhbHVlczogJ3RhYmxlVmFsdWVzJyxcbiAgdGFyZ2V0WDogJ3Rh
cmdldFgnLFxuICB0YXJnZXRZOiAndGFyZ2V0WScsXG4gIHRleHRBbmNob3I6ICd0ZXh0LWFuY2hv
cicsXG4gIHRleHREZWNvcmF0aW9uOiAndGV4dC1kZWNvcmF0aW9uJyxcbiAgdGV4dFJlbmRlcmlu
ZzogJ3RleHQtcmVuZGVyaW5nJyxcbiAgdGV4dExlbmd0aDogJ3RleHRMZW5ndGgnLFxuICB0bzog
MCxcbiAgdHJhbnNmb3JtOiAwLFxuICB1MTogMCxcbiAgdTI6IDAsXG4gIHVuZGVybGluZVBvc2l0
aW9uOiAndW5kZXJsaW5lLXBvc2l0aW9uJyxcbiAgdW5kZXJsaW5lVGhpY2tuZXNzOiAndW5kZXJs
aW5lLXRoaWNrbmVzcycsXG4gIHVuaWNvZGU6IDAsXG4gIHVuaWNvZGVCaWRpOiAndW5pY29kZS1i
aWRpJyxcbiAgdW5pY29kZVJhbmdlOiAndW5pY29kZS1yYW5nZScsXG4gIHVuaXRzUGVyRW06ICd1
bml0cy1wZXItZW0nLFxuICB2QWxwaGFiZXRpYzogJ3YtYWxwaGFiZXRpYycsXG4gIHZIYW5naW5n
OiAndi1oYW5naW5nJyxcbiAgdklkZW9ncmFwaGljOiAndi1pZGVvZ3JhcGhpYycsXG4gIHZNYXRo
ZW1hdGljYWw6ICd2LW1hdGhlbWF0aWNhbCcsXG4gIHZhbHVlczogMCxcbiAgdmVjdG9yRWZmZWN0
OiAndmVjdG9yLWVmZmVjdCcsXG4gIHZlcnNpb246IDAsXG4gIHZlcnRBZHZZOiAndmVydC1hZHYt
eScsXG4gIHZlcnRPcmlnaW5YOiAndmVydC1vcmlnaW4teCcsXG4gIHZlcnRPcmlnaW5ZOiAndmVy
dC1vcmlnaW4teScsXG4gIHZpZXdCb3g6ICd2aWV3Qm94JyxcbiAgdmlld1RhcmdldDogJ3ZpZXdU
YXJnZXQnLFxuICB2aXNpYmlsaXR5OiAwLFxuICB3aWR0aHM6IDAsXG4gIHdvcmRTcGFjaW5nOiAn
d29yZC1zcGFjaW5nJyxcbiAgd3JpdGluZ01vZGU6ICd3cml0aW5nLW1vZGUnLFxuICB4OiAwLFxu
ICB4SGVpZ2h0OiAneC1oZWlnaHQnLFxuICB4MTogMCxcbiAgeDI6IDAsXG4gIHhDaGFubmVsU2Vs
ZWN0b3I6ICd4Q2hhbm5lbFNlbGVjdG9yJyxcbiAgeGxpbmtBY3R1YXRlOiAneGxpbms6YWN0dWF0
ZScsXG4gIHhsaW5rQXJjcm9sZTogJ3hsaW5rOmFyY3JvbGUnLFxuICB4bGlua0hyZWY6ICd4bGlu
azpocmVmJyxcbiAgeGxpbmtSb2xlOiAneGxpbms6cm9sZScsXG4gIHhsaW5rU2hvdzogJ3hsaW5r
OnNob3cnLFxuICB4bGlua1RpdGxlOiAneGxpbms6dGl0bGUnLFxuICB4bGlua1R5cGU6ICd4bGlu
azp0eXBlJyxcbiAgeG1sQmFzZTogJ3htbDpiYXNlJyxcbiAgeG1sbnM6IDAsXG4gIHhtbG5zWGxp
bms6ICd4bWxuczp4bGluaycsXG4gIHhtbExhbmc6ICd4bWw6bGFuZycsXG4gIHhtbFNwYWNlOiAn
eG1sOnNwYWNlJyxcbiAgeTogMCxcbiAgeTE6IDAsXG4gIHkyOiAwLFxuICB5Q2hhbm5lbFNlbGVj
dG9yOiAneUNoYW5uZWxTZWxlY3RvcicsXG4gIHo6IDAsXG4gIHpvb21BbmRQYW46ICd6b29tQW5k
UGFuJ1xufTtcblxudmFyIFNWR0RPTVByb3BlcnR5Q29uZmlnID0ge1xuICBQcm9wZXJ0aWVzOiB7
fSxcbiAgRE9NQXR0cmlidXRlTmFtZXNwYWNlczoge1xuICAgIHhsaW5rQWN0dWF0ZTogTlMueGxp
bmssXG4gICAgeGxpbmtBcmNyb2xlOiBOUy54bGluayxcbiAgICB4bGlua0hyZWY6IE5TLnhsaW5r
LFxuICAgIHhsaW5rUm9sZTogTlMueGxpbmssXG4gICAgeGxpbmtTaG93OiBOUy54bGluayxcbiAg
ICB4bGlua1RpdGxlOiBOUy54bGluayxcbiAgICB4bGlua1R5cGU6IE5TLnhsaW5rLFxuICAgIHht
bEJhc2U6IE5TLnhtbCxcbiAgICB4bWxMYW5nOiBOUy54bWwsXG4gICAgeG1sU3BhY2U6IE5TLnht
bFxuICB9LFxuICBET01BdHRyaWJ1dGVOYW1lczoge31cbn07XG5cbk9iamVjdC5rZXlzKEFUVFJT
KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgU1ZHRE9NUHJvcGVydHlDb25maWcuUHJvcGVy
dGllc1trZXldID0gMDtcbiAgaWYgKEFUVFJTW2tleV0pIHtcbiAgICBTVkdET01Qcm9wZXJ0eUNv
bmZpZy5ET01BdHRyaWJ1dGVOYW1lc1trZXldID0gQVRUUlNba2V5XTtcbiAgfVxufSk7XG5cbm1v
ZHVsZS5leHBvcnRzID0gU1ZHRE9NUHJvcGVydHlDb25maWc7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TVkdET01Qcm9w
ZXJ0eUNvbmZpZy5qc1xuICoqIG1vZHVsZSBpZCA9IDE2NFxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztc
blxudmFyIEV2ZW50UHJvcGFnYXRvcnMgPSByZXF1aXJlKCcuL0V2ZW50UHJvcGFnYXRvcnMnKTtc
bnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVu
dmlyb25tZW50Jyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFj
dERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdElucHV0U2VsZWN0aW9uID0gcmVxdWlyZSgn
Li9SZWFjdElucHV0U2VsZWN0aW9uJyk7XG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcu
L1N5bnRoZXRpY0V2ZW50Jyk7XG5cbnZhciBnZXRBY3RpdmVFbGVtZW50ID0gcmVxdWlyZSgnZmJq
cy9saWIvZ2V0QWN0aXZlRWxlbWVudCcpO1xudmFyIGlzVGV4dElucHV0RWxlbWVudCA9IHJlcXVp
cmUoJy4vaXNUZXh0SW5wdXRFbGVtZW50Jyk7XG52YXIgc2hhbGxvd0VxdWFsID0gcmVxdWlyZSgn
ZmJqcy9saWIvc2hhbGxvd0VxdWFsJyk7XG5cbnZhciBza2lwU2VsZWN0aW9uQ2hhbmdlRXZlbnQg
PSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ2RvY3VtZW50TW9kZScgaW4gZG9j
dW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDw9IDExO1xuXG52YXIgZXZlbnRUeXBlcyA9
IHtcbiAgc2VsZWN0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1
YmJsZWQ6ICdvblNlbGVjdCcsXG4gICAgICBjYXB0dXJlZDogJ29uU2VsZWN0Q2FwdHVyZSdcbiAg
ICB9LFxuICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbnRleHRNZW51JywgJ3Rv
cEZvY3VzJywgJ3RvcEtleURvd24nLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3duJywgJ3RvcE1v
dXNlVXAnLCAndG9wU2VsZWN0aW9uQ2hhbmdlJ11cbiAgfVxufTtcblxudmFyIGFjdGl2ZUVsZW1l
bnQgPSBudWxsO1xudmFyIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDtcbnZhciBsYXN0U2VsZWN0
aW9uID0gbnVsbDtcbnZhciBtb3VzZURvd24gPSBmYWxzZTtcblxuLy8gVHJhY2sgd2hldGhlciBh
IGxpc3RlbmVyIGV4aXN0cyBmb3IgdGhpcyBwbHVnaW4uIElmIG5vbmUgZXhpc3QsIHdlIGRvXG4v
LyBub3QgZXh0cmFjdCBldmVudHMuIFNlZSAjMzYzOS5cbnZhciBoYXNMaXN0ZW5lciA9IGZhbHNl
O1xuXG4vKipcbiAqIEdldCBhbiBvYmplY3Qgd2hpY2ggaXMgYSB1bmlxdWUgcmVwcmVzZW50YXRp
b24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLlxuICpcbiAqIFRoZSByZXR1cm4gdmFsdWUgd2ls
bCBub3QgYmUgY29uc2lzdGVudCBhY3Jvc3Mgbm9kZXMgb3IgYnJvd3NlcnMsIGJ1dFxuICogdHdv
IGlkZW50aWNhbCBzZWxlY3Rpb25zIG9uIHRoZSBzYW1lIG5vZGUgd2lsbCByZXR1cm4gaWRlbnRp
Y2FsIG9iamVjdHMuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gKiBAcmV0dXJu
IHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldFNlbGVjdGlvbihub2RlKSB7XG4gIGlmICgnc2Vs
ZWN0aW9uU3RhcnQnIGluIG5vZGUgJiYgUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNTZWxlY3Rpb25D
YXBhYmlsaXRpZXMobm9kZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IG5vZGUuc2Vs
ZWN0aW9uU3RhcnQsXG4gICAgICBlbmQ6IG5vZGUuc2VsZWN0aW9uRW5kXG4gICAgfTtcbiAgfSBl
bHNlIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7XG4gICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRv
dy5nZXRTZWxlY3Rpb24oKTtcbiAgICByZXR1cm4ge1xuICAgICAgYW5jaG9yTm9kZTogc2VsZWN0
aW9uLmFuY2hvck5vZGUsXG4gICAgICBhbmNob3JPZmZzZXQ6IHNlbGVjdGlvbi5hbmNob3JPZmZz
ZXQsXG4gICAgICBmb2N1c05vZGU6IHNlbGVjdGlvbi5mb2N1c05vZGUsXG4gICAgICBmb2N1c09m
ZnNldDogc2VsZWN0aW9uLmZvY3VzT2Zmc2V0XG4gICAgfTtcbiAgfSBlbHNlIGlmIChkb2N1bWVu
dC5zZWxlY3Rpb24pIHtcbiAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRl
UmFuZ2UoKTtcbiAgICByZXR1cm4ge1xuICAgICAgcGFyZW50RWxlbWVudDogcmFuZ2UucGFyZW50
RWxlbWVudCgpLFxuICAgICAgdGV4dDogcmFuZ2UudGV4dCxcbiAgICAgIHRvcDogcmFuZ2UuYm91
bmRpbmdUb3AsXG4gICAgICBsZWZ0OiByYW5nZS5ib3VuZGluZ0xlZnRcbiAgICB9O1xuICB9XG59
XG5cbi8qKlxuICogUG9sbCBzZWxlY3Rpb24gdG8gc2VlIHdoZXRoZXIgaXQncyBjaGFuZ2VkLlxu
ICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudFxuICogQHJldHVybiB7P1N5bnRoZXRp
Y0V2ZW50fVxuICovXG5mdW5jdGlvbiBjb25zdHJ1Y3RTZWxlY3RFdmVudChuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgLy8gRW5zdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IGVsZW1l
bnQsIGFuZCB0aGF0IHRoZSB1c2VyIGlzIG5vdCBkcmFnZ2luZyBhXG4gIC8vIHNlbGVjdGlvbiAo
dGhpcyBtYXRjaGVzIG5hdGl2ZSBgc2VsZWN0YCBldmVudCBiZWhhdmlvcikuIEluIEhUTUw1LCBz
ZWxlY3RcbiAgLy8gZmlyZXMgb25seSBvbiBpbnB1dCBhbmQgdGV4dGFyZWEgdGh1cyBpZiB0aGVy
ZSdzIG5vIGZvY3VzZWQgZWxlbWVudCB3ZVxuICAvLyB3b24ndCBkaXNwYXRjaC5cbiAgaWYgKG1v
dXNlRG93biB8fCBhY3RpdmVFbGVtZW50ID09IG51bGwgfHwgYWN0aXZlRWxlbWVudCAhPT0gZ2V0
QWN0aXZlRWxlbWVudCgpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBPbmx5IGZp
cmUgd2hlbiBzZWxlY3Rpb24gaGFzIGFjdHVhbGx5IGNoYW5nZWQuXG4gIHZhciBjdXJyZW50U2Vs
ZWN0aW9uID0gZ2V0U2VsZWN0aW9uKGFjdGl2ZUVsZW1lbnQpO1xuICBpZiAoIWxhc3RTZWxlY3Rp
b24gfHwgIXNoYWxsb3dFcXVhbChsYXN0U2VsZWN0aW9uLCBjdXJyZW50U2VsZWN0aW9uKSkge1xu
ICAgIGxhc3RTZWxlY3Rpb24gPSBjdXJyZW50U2VsZWN0aW9uO1xuXG4gICAgdmFyIHN5bnRoZXRp
Y0V2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuc2VsZWN0LCBhY3Rp
dmVFbGVtZW50SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblxuICAgIHN5
bnRoZXRpY0V2ZW50LnR5cGUgPSAnc2VsZWN0JztcbiAgICBzeW50aGV0aWNFdmVudC50YXJnZXQg
PSBhY3RpdmVFbGVtZW50O1xuXG4gICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhh
c2VEaXNwYXRjaGVzKHN5bnRoZXRpY0V2ZW50KTtcblxuICAgIHJldHVybiBzeW50aGV0aWNFdmVu
dDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFRoaXMgcGx1Z2luIGNyZWF0
ZXMgYW4gYG9uU2VsZWN0YCBldmVudCB0aGF0IG5vcm1hbGl6ZXMgc2VsZWN0IGV2ZW50c1xuICog
YWNyb3NzIGZvcm0gZWxlbWVudHMuXG4gKlxuICogU3VwcG9ydGVkIGVsZW1lbnRzIGFyZTpcbiAq
IC0gaW5wdXQgKHNlZSBgaXNUZXh0SW5wdXRFbGVtZW50YClcbiAqIC0gdGV4dGFyZWFcbiAqIC0g
Y29udGVudEVkaXRhYmxlXG4gKlxuICogVGhpcyBkaWZmZXJzIGZyb20gbmF0aXZlIGJyb3dzZXIg
aW1wbGVtZW50YXRpb25zIGluIHRoZSBmb2xsb3dpbmcgd2F5czpcbiAqIC0gRmlyZXMgb24gY29u
dGVudEVkaXRhYmxlIGZpZWxkcyBhcyB3ZWxsIGFzIGlucHV0cy5cbiAqIC0gRmlyZXMgZm9yIGNv
bGxhcHNlZCBzZWxlY3Rpb24uXG4gKiAtIEZpcmVzIGFmdGVyIHVzZXIgaW5wdXQuXG4gKi9cbnZh
ciBTZWxlY3RFdmVudFBsdWdpbiA9IHtcbiAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblxuICBl
eHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICBpZiAoIWhhc0xpc3RlbmVyKSB7XG4gICAg
ICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgdGFyZ2V0Tm9kZSA9IHRhcmdldEluc3Qg
PyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0YXJnZXRJbnN0KSA6
IHdpbmRvdztcblxuICAgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgICAvLyBUcmFjayB0
aGUgaW5wdXQgbm9kZSB0aGF0IGhhcyBmb2N1cy5cbiAgICAgIGNhc2UgJ3RvcEZvY3VzJzpcbiAg
ICAgICAgaWYgKGlzVGV4dElucHV0RWxlbWVudCh0YXJnZXROb2RlKSB8fCB0YXJnZXROb2RlLmNv
bnRlbnRFZGl0YWJsZSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgYWN0aXZlRWxlbWVudCA9IHRh
cmdldE5vZGU7XG4gICAgICAgICAgYWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJbnN0O1xuICAg
ICAgICAgIGxhc3RTZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xu
ICAgICAgY2FzZSAndG9wQmx1cic6XG4gICAgICAgIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuICAg
ICAgICBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7XG4gICAgICAgIGxhc3RTZWxlY3Rpb24gPSBu
dWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIERvbid0IGZpcmUgdGhlIGV2ZW50IHdoaWxl
IHRoZSB1c2VyIGlzIGRyYWdnaW5nLiBUaGlzIG1hdGNoZXMgdGhlXG4gICAgICAvLyBzZW1hbnRp
Y3Mgb2YgdGhlIG5hdGl2ZSBzZWxlY3QgZXZlbnQuXG4gICAgICBjYXNlICd0b3BNb3VzZURvd24n
OlxuICAgICAgICBtb3VzZURvd24gPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ug
J3RvcENvbnRleHRNZW51JzpcbiAgICAgIGNhc2UgJ3RvcE1vdXNlVXAnOlxuICAgICAgICBtb3Vz
ZURvd24gPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFNlbGVjdEV2ZW50KG5hdGl2
ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgICAvLyBDaHJvbWUgYW5kIElFIGZpcmUg
bm9uLXN0YW5kYXJkIGV2ZW50IHdoZW4gc2VsZWN0aW9uIGlzIGNoYW5nZWQgKGFuZFxuICAgICAg
Ly8gc29tZXRpbWVzIHdoZW4gaXQgaGFzbid0KS4gSUUncyBldmVudCBmaXJlcyBvdXQgb2Ygb3Jk
ZXIgd2l0aCByZXNwZWN0XG4gICAgICAvLyB0byBrZXkgYW5kIGlucHV0IGV2ZW50cyBvbiBkZWxl
dGlvbiwgc28gd2UgZGlzY2FyZCBpdC5cbiAgICAgIC8vXG4gICAgICAvLyBGaXJlZm94IGRvZXNu
J3Qgc3VwcG9ydCBzZWxlY3Rpb25jaGFuZ2UsIHNvIGNoZWNrIHNlbGVjdGlvbiBzdGF0dXNcbiAg
ICAgIC8vIGFmdGVyIGVhY2gga2V5IGVudHJ5LiBUaGUgc2VsZWN0aW9uIGNoYW5nZXMgYWZ0ZXIg
a2V5ZG93biBhbmQgYmVmb3JlXG4gICAgICAvLyBrZXl1cCwgYnV0IHdlIGNoZWNrIG9uIGtleWRv
d24gYXMgd2VsbCBpbiB0aGUgY2FzZSBvZiBob2xkaW5nIGRvd24gYVxuICAgICAgLy8ga2V5LCB3
aGVuIG11bHRpcGxlIGtleWRvd24gZXZlbnRzIGFyZSBmaXJlZCBidXQgb25seSBvbmUga2V5dXAg
aXMuXG4gICAgICAvLyBUaGlzIGlzIGFsc28gb3VyIGFwcHJvYWNoIGZvciBJRSBoYW5kbGluZywg
Zm9yIHRoZSByZWFzb24gYWJvdmUuXG4gICAgICBjYXNlICd0b3BTZWxlY3Rpb25DaGFuZ2UnOlxu
ICAgICAgICBpZiAoc2tpcFNlbGVjdGlvbkNoYW5nZUV2ZW50KSB7XG4gICAgICAgICAgYnJlYWs7
XG4gICAgICAgIH1cbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGNhc2UgJ3RvcEtleURv
d24nOlxuICAgICAgY2FzZSAndG9wS2V5VXAnOlxuICAgICAgICByZXR1cm4gY29uc3RydWN0U2Vs
ZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICB9XG5cbiAgICBy
ZXR1cm4gbnVsbDtcbiAgfSxcblxuICBkaWRQdXRMaXN0ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJl
Z2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7XG4gICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09
ICdvblNlbGVjdCcpIHtcbiAgICAgIGhhc0xpc3RlbmVyID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07
XG5cbm1vZHVsZS5leHBvcnRzID0gU2VsZWN0RXZlbnRQbHVnaW47XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TZWxlY3RF
dmVudFBsdWdpbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE2NVxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFu
dCcpO1xuXG52YXIgRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoJ2ZianMvbGliL0V2ZW50TGlzdGVu
ZXInKTtcbnZhciBFdmVudFByb3BhZ2F0b3JzID0gcmVxdWlyZSgnLi9FdmVudFByb3BhZ2F0b3Jz
Jyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBv
bmVudFRyZWUnKTtcbnZhciBTeW50aGV0aWNBbmltYXRpb25FdmVudCA9IHJlcXVpcmUoJy4vU3lu
dGhldGljQW5pbWF0aW9uRXZlbnQnKTtcbnZhciBTeW50aGV0aWNDbGlwYm9hcmRFdmVudCA9IHJl
cXVpcmUoJy4vU3ludGhldGljQ2xpcGJvYXJkRXZlbnQnKTtcbnZhciBTeW50aGV0aWNFdmVudCA9
IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcbnZhciBTeW50aGV0aWNGb2N1c0V2ZW50ID0g
cmVxdWlyZSgnLi9TeW50aGV0aWNGb2N1c0V2ZW50Jyk7XG52YXIgU3ludGhldGljS2V5Ym9hcmRF
dmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljS2V5Ym9hcmRFdmVudCcpO1xudmFyIFN5bnRoZXRp
Y01vdXNlRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY01vdXNlRXZlbnQnKTtcbnZhciBTeW50
aGV0aWNEcmFnRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0RyYWdFdmVudCcpO1xudmFyIFN5
bnRoZXRpY1RvdWNoRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1RvdWNoRXZlbnQnKTtcbnZh
ciBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1RyYW5zaXRp
b25FdmVudCcpO1xudmFyIFN5bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1VJ
RXZlbnQnKTtcbnZhciBTeW50aGV0aWNXaGVlbEV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNX
aGVlbEV2ZW50Jyk7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1w
dHlGdW5jdGlvbicpO1xudmFyIGdldEV2ZW50Q2hhckNvZGUgPSByZXF1aXJlKCcuL2dldEV2ZW50
Q2hhckNvZGUnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQn
KTtcblxuLyoqXG4gKiBUdXJuc1xuICogWydhYm9ydCcsIC4uLl1cbiAqIGludG9cbiAqIGV2ZW50
VHlwZXMgPSB7XG4gKiAgICdhYm9ydCc6IHtcbiAqICAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1l
czoge1xuICogICAgICAgYnViYmxlZDogJ29uQWJvcnQnLFxuICogICAgICAgY2FwdHVyZWQ6ICdv
bkFib3J0Q2FwdHVyZScsXG4gKiAgICAgfSxcbiAqICAgICBkZXBlbmRlbmNpZXM6IFsndG9wQWJv
cnQnXSxcbiAqICAgfSxcbiAqICAgLi4uXG4gKiB9O1xuICogdG9wTGV2ZWxFdmVudHNUb0Rpc3Bh
dGNoQ29uZmlnID0ge1xuICogICAndG9wQWJvcnQnOiB7IHNhbWVDb25maWcgfVxuICogfTtcbiAq
L1xudmFyIGV2ZW50VHlwZXMgPSB7fTtcbnZhciB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25m
aWcgPSB7fTtcblsnYWJvcnQnLCAnYW5pbWF0aW9uRW5kJywgJ2FuaW1hdGlvbkl0ZXJhdGlvbics
ICdhbmltYXRpb25TdGFydCcsICdibHVyJywgJ2NhblBsYXknLCAnY2FuUGxheVRocm91Z2gnLCAn
Y2xpY2snLCAnY29udGV4dE1lbnUnLCAnY29weScsICdjdXQnLCAnZG91YmxlQ2xpY2snLCAnZHJh
ZycsICdkcmFnRW5kJywgJ2RyYWdFbnRlcicsICdkcmFnRXhpdCcsICdkcmFnTGVhdmUnLCAnZHJh
Z092ZXInLCAnZHJhZ1N0YXJ0JywgJ2Ryb3AnLCAnZHVyYXRpb25DaGFuZ2UnLCAnZW1wdGllZCcs
ICdlbmNyeXB0ZWQnLCAnZW5kZWQnLCAnZXJyb3InLCAnZm9jdXMnLCAnaW5wdXQnLCAnaW52YWxp
ZCcsICdrZXlEb3duJywgJ2tleVByZXNzJywgJ2tleVVwJywgJ2xvYWQnLCAnbG9hZGVkRGF0YScs
ICdsb2FkZWRNZXRhZGF0YScsICdsb2FkU3RhcnQnLCAnbW91c2VEb3duJywgJ21vdXNlTW92ZScs
ICdtb3VzZU91dCcsICdtb3VzZU92ZXInLCAnbW91c2VVcCcsICdwYXN0ZScsICdwYXVzZScsICdw
bGF5JywgJ3BsYXlpbmcnLCAncHJvZ3Jlc3MnLCAncmF0ZUNoYW5nZScsICdyZXNldCcsICdzY3Jv
bGwnLCAnc2Vla2VkJywgJ3NlZWtpbmcnLCAnc3RhbGxlZCcsICdzdWJtaXQnLCAnc3VzcGVuZCcs
ICd0aW1lVXBkYXRlJywgJ3RvdWNoQ2FuY2VsJywgJ3RvdWNoRW5kJywgJ3RvdWNoTW92ZScsICd0
b3VjaFN0YXJ0JywgJ3RyYW5zaXRpb25FbmQnLCAndm9sdW1lQ2hhbmdlJywgJ3dhaXRpbmcnLCAn
d2hlZWwnXS5mb3JFYWNoKGZ1bmN0aW9uIChldmVudCkge1xuICB2YXIgY2FwaXRhbGl6ZWRFdmVu
dCA9IGV2ZW50WzBdLnRvVXBwZXJDYXNlKCkgKyBldmVudC5zbGljZSgxKTtcbiAgdmFyIG9uRXZl
bnQgPSAnb24nICsgY2FwaXRhbGl6ZWRFdmVudDtcbiAgdmFyIHRvcEV2ZW50ID0gJ3RvcCcgKyBj
YXBpdGFsaXplZEV2ZW50O1xuXG4gIHZhciB0eXBlID0ge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBvbkV2ZW50LFxuICAgICAgY2FwdHVyZWQ6IG9uRXZl
bnQgKyAnQ2FwdHVyZSdcbiAgICB9LFxuICAgIGRlcGVuZGVuY2llczogW3RvcEV2ZW50XVxuICB9
O1xuICBldmVudFR5cGVzW2V2ZW50XSA9IHR5cGU7XG4gIHRvcExldmVsRXZlbnRzVG9EaXNwYXRj
aENvbmZpZ1t0b3BFdmVudF0gPSB0eXBlO1xufSk7XG5cbnZhciBvbkNsaWNrTGlzdGVuZXJzID0g
e307XG5cbmZ1bmN0aW9uIGdldERpY3Rpb25hcnlLZXkoaW5zdCkge1xuICAvLyBQcmV2ZW50cyBW
OCBwZXJmb3JtYW5jZSBpc3N1ZTpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3Jl
YWN0L3B1bGwvNzIzMlxuICByZXR1cm4gJy4nICsgaW5zdC5fcm9vdE5vZGVJRDtcbn1cblxuZnVu
Y3Rpb24gaXNJbnRlcmFjdGl2ZSh0YWcpIHtcbiAgcmV0dXJuIHRhZyA9PT0gJ2J1dHRvbicgfHwg
dGFnID09PSAnaW5wdXQnIHx8IHRhZyA9PT0gJ3NlbGVjdCcgfHwgdGFnID09PSAndGV4dGFyZWEn
O1xufVxuXG52YXIgU2ltcGxlRXZlbnRQbHVnaW4gPSB7XG4gIGV2ZW50VHlwZXM6IGV2ZW50VHlw
ZXMsXG5cbiAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5z
dCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgdmFyIGRpc3BhdGNoQ29u
ZmlnID0gdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnW3RvcExldmVsVHlwZV07XG4gICAg
aWYgKCFkaXNwYXRjaENvbmZpZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZh
ciBFdmVudENvbnN0cnVjdG9yO1xuICAgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgICBj
YXNlICd0b3BBYm9ydCc6XG4gICAgICBjYXNlICd0b3BDYW5QbGF5JzpcbiAgICAgIGNhc2UgJ3Rv
cENhblBsYXlUaHJvdWdoJzpcbiAgICAgIGNhc2UgJ3RvcER1cmF0aW9uQ2hhbmdlJzpcbiAgICAg
IGNhc2UgJ3RvcEVtcHRpZWQnOlxuICAgICAgY2FzZSAndG9wRW5jcnlwdGVkJzpcbiAgICAgIGNh
c2UgJ3RvcEVuZGVkJzpcbiAgICAgIGNhc2UgJ3RvcEVycm9yJzpcbiAgICAgIGNhc2UgJ3RvcElu
cHV0JzpcbiAgICAgIGNhc2UgJ3RvcEludmFsaWQnOlxuICAgICAgY2FzZSAndG9wTG9hZCc6XG4g
ICAgICBjYXNlICd0b3BMb2FkZWREYXRhJzpcbiAgICAgIGNhc2UgJ3RvcExvYWRlZE1ldGFkYXRh
JzpcbiAgICAgIGNhc2UgJ3RvcExvYWRTdGFydCc6XG4gICAgICBjYXNlICd0b3BQYXVzZSc6XG4g
ICAgICBjYXNlICd0b3BQbGF5JzpcbiAgICAgIGNhc2UgJ3RvcFBsYXlpbmcnOlxuICAgICAgY2Fz
ZSAndG9wUHJvZ3Jlc3MnOlxuICAgICAgY2FzZSAndG9wUmF0ZUNoYW5nZSc6XG4gICAgICBjYXNl
ICd0b3BSZXNldCc6XG4gICAgICBjYXNlICd0b3BTZWVrZWQnOlxuICAgICAgY2FzZSAndG9wU2Vl
a2luZyc6XG4gICAgICBjYXNlICd0b3BTdGFsbGVkJzpcbiAgICAgIGNhc2UgJ3RvcFN1Ym1pdCc6
XG4gICAgICBjYXNlICd0b3BTdXNwZW5kJzpcbiAgICAgIGNhc2UgJ3RvcFRpbWVVcGRhdGUnOlxu
ICAgICAgY2FzZSAndG9wVm9sdW1lQ2hhbmdlJzpcbiAgICAgIGNhc2UgJ3RvcFdhaXRpbmcnOlxu
ICAgICAgICAvLyBIVE1MIEV2ZW50c1xuICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cudzMub3Jn
L1RSL2h0bWw1L2luZGV4Lmh0bWwjZXZlbnRzLTBcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9
IFN5bnRoZXRpY0V2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcEtleVByZXNz
JzpcbiAgICAgICAgLy8gRmlyZWZveCBjcmVhdGVzIGEga2V5cHJlc3MgZXZlbnQgZm9yIGZ1bmN0
aW9uIGtleXMgdG9vLiBUaGlzIHJlbW92ZXNcbiAgICAgICAgLy8gdGhlIHVud2FudGVkIGtleXBy
ZXNzIGV2ZW50cy4gRW50ZXIgaXMgaG93ZXZlciBib3RoIHByaW50YWJsZSBhbmRcbiAgICAgICAg
Ly8gbm9uLXByaW50YWJsZS4gT25lIHdvdWxkIGV4cGVjdCBUYWIgdG8gYmUgYXMgd2VsbCAoYnV0
IGl0IGlzbid0KS5cbiAgICAgICAgaWYgKGdldEV2ZW50Q2hhckNvZGUobmF0aXZlRXZlbnQpID09
PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIC8qIGZhbGxz
IHRocm91Z2ggKi9cbiAgICAgIGNhc2UgJ3RvcEtleURvd24nOlxuICAgICAgY2FzZSAndG9wS2V5
VXAnOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljS2V5Ym9hcmRFdmVudDtc
biAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3BCbHVyJzpcbiAgICAgIGNhc2UgJ3RvcEZv
Y3VzJzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0ZvY3VzRXZlbnQ7XG4g
ICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wQ2xpY2snOlxuICAgICAgICAvLyBGaXJlZm94
IGNyZWF0ZXMgYSBjbGljayBldmVudCBvbiByaWdodCBtb3VzZSBjbGlja3MuIFRoaXMgcmVtb3Zl
cyB0aGVcbiAgICAgICAgLy8gdW53YW50ZWQgY2xpY2sgZXZlbnRzLlxuICAgICAgICBpZiAobmF0
aXZlRXZlbnQuYnV0dG9uID09PSAyKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAg
IH1cbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgJ3RvcERvdWJsZUNsaWNr
JzpcbiAgICAgIGNhc2UgJ3RvcE1vdXNlRG93bic6XG4gICAgICBjYXNlICd0b3BNb3VzZU1vdmUn
OlxuICAgICAgY2FzZSAndG9wTW91c2VVcCc6XG4gICAgICAvLyBUT0RPOiBEaXNhYmxlZCBlbGVt
ZW50cyBzaG91bGQgbm90IHJlc3BvbmQgdG8gbW91c2UgZXZlbnRzXG4gICAgICAvKiBmYWxscyB0
aHJvdWdoICovXG4gICAgICBjYXNlICd0b3BNb3VzZU91dCc6XG4gICAgICBjYXNlICd0b3BNb3Vz
ZU92ZXInOlxuICAgICAgY2FzZSAndG9wQ29udGV4dE1lbnUnOlxuICAgICAgICBFdmVudENvbnN0
cnVjdG9yID0gU3ludGhldGljTW91c2VFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNl
ICd0b3BEcmFnJzpcbiAgICAgIGNhc2UgJ3RvcERyYWdFbmQnOlxuICAgICAgY2FzZSAndG9wRHJh
Z0VudGVyJzpcbiAgICAgIGNhc2UgJ3RvcERyYWdFeGl0JzpcbiAgICAgIGNhc2UgJ3RvcERyYWdM
ZWF2ZSc6XG4gICAgICBjYXNlICd0b3BEcmFnT3Zlcic6XG4gICAgICBjYXNlICd0b3BEcmFnU3Rh
cnQnOlxuICAgICAgY2FzZSAndG9wRHJvcCc6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBT
eW50aGV0aWNEcmFnRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wVG91Y2hD
YW5jZWwnOlxuICAgICAgY2FzZSAndG9wVG91Y2hFbmQnOlxuICAgICAgY2FzZSAndG9wVG91Y2hN
b3ZlJzpcbiAgICAgIGNhc2UgJ3RvcFRvdWNoU3RhcnQnOlxuICAgICAgICBFdmVudENvbnN0cnVj
dG9yID0gU3ludGhldGljVG91Y2hFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0
b3BBbmltYXRpb25FbmQnOlxuICAgICAgY2FzZSAndG9wQW5pbWF0aW9uSXRlcmF0aW9uJzpcbiAg
ICAgIGNhc2UgJ3RvcEFuaW1hdGlvblN0YXJ0JzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9
IFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Rv
cFRyYW5zaXRpb25FbmQnOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljVHJh
bnNpdGlvbkV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcFNjcm9sbCc6XG4g
ICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNVSUV2ZW50O1xuICAgICAgICBicmVh
aztcbiAgICAgIGNhc2UgJ3RvcFdoZWVsJzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5
bnRoZXRpY1doZWVsRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wQ29weSc6
XG4gICAgICBjYXNlICd0b3BDdXQnOlxuICAgICAgY2FzZSAndG9wUGFzdGUnOlxuICAgICAgICBF
dmVudENvbnN0cnVjdG9yID0gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQ7XG4gICAgICAgIGJyZWFr
O1xuICAgIH1cbiAgICAhRXZlbnRDb25zdHJ1Y3RvciA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdTaW1wbGVFdmVudFBsdWdpbjogVW5o
YW5kbGVkIGV2ZW50IHR5cGUsIGAlc2AuJywgdG9wTGV2ZWxUeXBlKSA6IF9wcm9kSW52YXJpYW50
KCc4NicsIHRvcExldmVsVHlwZSkgOiB2b2lkIDA7XG4gICAgdmFyIGV2ZW50ID0gRXZlbnRDb25z
dHJ1Y3Rvci5nZXRQb29sZWQoZGlzcGF0Y2hDb25maWcsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdv
UGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcbiAgICByZXR1cm4gZXZlbnQ7XG4gIH0sXG5cbiAgZGlk
UHV0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcikg
e1xuICAgIC8vIE1vYmlsZSBTYWZhcmkgZG9lcyBub3QgZmlyZSBwcm9wZXJseSBidWJibGUgY2xp
Y2sgZXZlbnRzIG9uXG4gICAgLy8gbm9uLWludGVyYWN0aXZlIGVsZW1lbnRzLCB3aGljaCBtZWFu
cyBkZWxlZ2F0ZWQgY2xpY2sgbGlzdGVuZXJzIGRvIG5vdFxuICAgIC8vIGZpcmUuIFRoZSB3b3Jr
YXJvdW5kIGZvciB0aGlzIGJ1ZyBpbnZvbHZlcyBhdHRhY2hpbmcgYW4gZW1wdHkgY2xpY2tcbiAg
ICAvLyBsaXN0ZW5lciBvbiB0aGUgdGFyZ2V0IG5vZGUuXG4gICAgLy8gaHR0cDovL3d3dy5xdWly
a3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTAvMDkvY2xpY2tfZXZlbnRfZGVsLmh0bWxcbiAg
ICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gJ29uQ2xpY2snICYmICFpc0ludGVyYWN0aXZlKGlu
c3QuX3RhZykpIHtcbiAgICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xuICAg
ICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShp
bnN0KTtcbiAgICAgIGlmICghb25DbGlja0xpc3RlbmVyc1trZXldKSB7XG4gICAgICAgIG9uQ2xp
Y2tMaXN0ZW5lcnNba2V5XSA9IEV2ZW50TGlzdGVuZXIubGlzdGVuKG5vZGUsICdjbGljaycsIGVt
cHR5RnVuY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICB3aWxsRGVsZXRlTGlzdGVu
ZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgaWYgKHJlZ2lzdHJh
dGlvbk5hbWUgPT09ICdvbkNsaWNrJyAmJiAhaXNJbnRlcmFjdGl2ZShpbnN0Ll90YWcpKSB7XG4g
ICAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTtcbiAgICAgIG9uQ2xpY2tMaXN0
ZW5lcnNba2V5XS5yZW1vdmUoKTtcbiAgICAgIGRlbGV0ZSBvbkNsaWNrTGlzdGVuZXJzW2tleV07
XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNpbXBsZUV2ZW50UGx1Z2luO1xu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0
LWRvbS9saWIvU2ltcGxlRXZlbnRQbHVnaW4uanNcbiAqKiBtb2R1bGUgaWQgPSAxNjZcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhl
dGljRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93
d3cudzMub3JnL1RSL2NzczMtYW5pbWF0aW9ucy8jQW5pbWF0aW9uRXZlbnQtaW50ZXJmYWNlXG4g
KiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9B
bmltYXRpb25FdmVudFxuICovXG52YXIgQW5pbWF0aW9uRXZlbnRJbnRlcmZhY2UgPSB7XG4gIGFu
aW1hdGlvbk5hbWU6IG51bGwsXG4gIGVsYXBzZWRUaW1lOiBudWxsLFxuICBwc2V1ZG9FbGVtZW50
OiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25m
aWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5n
fSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAq
IEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBl
eHRlbmRzIHtTeW50aGV0aWNFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljQW5pbWF0aW9u
RXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZl
RXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0
Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQp
O1xufVxuXG5TeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljQW5pbWF0aW9uRXZl
bnQsIEFuaW1hdGlvbkV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0
aWNBbmltYXRpb25FdmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0FuaW1hdGlvbkV2ZW50LmpzXG4g
KiogbW9kdWxlIGlkID0gMTY3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGlj
RXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbi8qKlxuICogQGludGVyZmFj
ZSBFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9jbGlwYm9hcmQtYXBpcy9cbiAq
L1xudmFyIENsaXBib2FyZEV2ZW50SW50ZXJmYWNlID0ge1xuICBjbGlwYm9hcmREYXRhOiBmdW5j
dGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ2NsaXBib2FyZERhdGEnIGluIGV2ZW50ID8gZXZl
bnQuY2xpcGJvYXJkRGF0YSA6IHdpbmRvdy5jbGlwYm9hcmREYXRhO1xuICB9XG59O1xuXG4vKipc
biAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8g
ZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBN
YXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBu
YXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNV
SUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNDbGlwYm9hcmRFdmVudChkaXNwYXRjaENv
bmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xu
ICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0
Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRp
Y0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNDbGlwYm9hcmRFdmVudCwgQ2xpcGJvYXJkRXZl
bnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50
O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LWRvbS9saWIvU3ludGhldGljQ2xpcGJvYXJkRXZlbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAx
NjhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUo
Jy4vU3ludGhldGljRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2Vl
IGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWNvbXBvc2l0
aW9uZXZlbnRzXG4gKi9cbnZhciBDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlID0ge1xuICBkYXRh
OiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25m
aWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5n
fSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAq
IEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBl
eHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNDb21wb3Np
dGlvbkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRp
c3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KTtcbn1cblxuU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0NvbXBvc2l0
aW9uRXZlbnQsIENvbXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9
IFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNDb21wb3NpdGlv
bkV2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTY5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAq
Ki8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52
YXIgU3ludGhldGljTW91c2VFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljTW91c2VFdmVudCcp
O1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRHJhZ0V2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMu
b3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAqL1xudmFyIERyYWdFdmVudEludGVyZmFjZSA9
IHtcbiAgZGF0YVRyYW5zZmVyOiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBk
aXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5c
biAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhl
IGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJv
d3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlv
biBTeW50aGV0aWNEcmFnRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY01vdXNlRXZl
bnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY01vdXNlRXZlbnQuYXVnbWVudENs
YXNzKFN5bnRoZXRpY0RyYWdFdmVudCwgRHJhZ0V2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4
cG9ydHMgPSBTeW50aGV0aWNEcmFnRXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNEcmFnRXZlbnQu
anNcbiAqKiBtb2R1bGUgaWQgPSAxNzBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50
aGV0aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2ZW50Jyk7XG5cbi8qKlxuICog
QGludGVyZmFjZSBGb2N1c0V2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1M
ZXZlbC0zLUV2ZW50cy9cbiAqL1xudmFyIEZvY3VzRXZlbnRJbnRlcmZhY2UgPSB7XG4gIHJlbGF0
ZWRUYXJnZXQ6IG51bGxcbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29u
ZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFt
IHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFy
Z2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50
LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRp
Y0ZvY3VzRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlz
LCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCk7XG59XG5cblN5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0Zv
Y3VzRXZlbnQsIEZvY3VzRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRo
ZXRpY0ZvY3VzRXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNGb2N1c0V2ZW50LmpzXG4gKiogbW9k
dWxlIGlkID0gMTcxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljRXZlbnQg
PSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBFdmVu
dFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDEzL1dELURPTS1MZXZlbC0zLUV2ZW50
cy0yMDEzMTEwNVxuICogICAgICAvI2V2ZW50cy1pbnB1dGV2ZW50c1xuICovXG52YXIgSW5wdXRF
dmVudEludGVyZmFjZSA9IHtcbiAgZGF0YTogbnVsbFxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29i
amVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMg
ZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5
aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0
aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cbiAqL1xu
ZnVuY3Rpb24gU3ludGhldGljSW5wdXRFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJr
ZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3ludGhldGlj
RXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2
ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFz
cyhTeW50aGV0aWNJbnB1dEV2ZW50LCBJbnB1dEV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4
cG9ydHMgPSBTeW50aGV0aWNJbnB1dEV2ZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljSW5wdXRFdmVu
dC5qc1xuICoqIG1vZHVsZSBpZCA9IDE3MlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
LyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5
bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1VJRXZlbnQnKTtcblxudmFyIGdl
dEV2ZW50Q2hhckNvZGUgPSByZXF1aXJlKCcuL2dldEV2ZW50Q2hhckNvZGUnKTtcbnZhciBnZXRF
dmVudEtleSA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRLZXknKTtcbnZhciBnZXRFdmVudE1vZGlmaWVy
U3RhdGUgPSByZXF1aXJlKCcuL2dldEV2ZW50TW9kaWZpZXJTdGF0ZScpO1xuXG4vKipcbiAqIEBp
bnRlcmZhY2UgS2V5Ym9hcmRFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00t
TGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBLZXlib2FyZEV2ZW50SW50ZXJmYWNlID0ge1xuICBr
ZXk6IGdldEV2ZW50S2V5LFxuICBsb2NhdGlvbjogbnVsbCxcbiAgY3RybEtleTogbnVsbCxcbiAg
c2hpZnRLZXk6IG51bGwsXG4gIGFsdEtleTogbnVsbCxcbiAgbWV0YUtleTogbnVsbCxcbiAgcmVw
ZWF0OiBudWxsLFxuICBsb2NhbGU6IG51bGwsXG4gIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50
TW9kaWZpZXJTdGF0ZSxcbiAgLy8gTGVnYWN5IEludGVyZmFjZVxuICBjaGFyQ29kZTogZnVuY3Rp
b24gKGV2ZW50KSB7XG4gICAgLy8gYGNoYXJDb2RlYCBpcyB0aGUgcmVzdWx0IG9mIGEgS2V5UHJl
c3MgZXZlbnQgYW5kIHJlcHJlc2VudHMgdGhlIHZhbHVlIG9mXG4gICAgLy8gdGhlIGFjdHVhbCBw
cmludGFibGUgY2hhcmFjdGVyLlxuXG4gICAgLy8gS2V5UHJlc3MgaXMgZGVwcmVjYXRlZCwgYnV0
IGl0cyByZXBsYWNlbWVudCBpcyBub3QgeWV0IGZpbmFsIGFuZCBub3RcbiAgICAvLyBpbXBsZW1l
bnRlZCBpbiBhbnkgbWFqb3IgYnJvd3Nlci4gT25seSBLZXlQcmVzcyBoYXMgY2hhckNvZGUuXG4g
ICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlwcmVzcycpIHtcbiAgICAgIHJldHVybiBnZXRFdmVu
dENoYXJDb2RlKGV2ZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0sXG4gIGtleUNvZGU6
IGZ1bmN0aW9uIChldmVudCkge1xuICAgIC8vIGBrZXlDb2RlYCBpcyB0aGUgcmVzdWx0IG9mIGEg
S2V5RG93bi9VcCBldmVudCBhbmQgcmVwcmVzZW50cyB0aGUgdmFsdWUgb2ZcbiAgICAvLyBwaHlz
aWNhbCBrZXlib2FyZCBrZXkuXG5cbiAgICAvLyBUaGUgYWN0dWFsIG1lYW5pbmcgb2YgdGhlIHZh
bHVlIGRlcGVuZHMgb24gdGhlIHVzZXJzJyBrZXlib2FyZCBsYXlvdXRcbiAgICAvLyB3aGljaCBj
YW5ub3QgYmUgZGV0ZWN0ZWQuIEFzc3VtaW5nIHRoYXQgaXQgaXMgYSBVUyBrZXlib2FyZCBsYXlv
dXRcbiAgICAvLyBwcm92aWRlcyBhIHN1cnByaXNpbmdseSBhY2N1cmF0ZSBtYXBwaW5nIGZvciBV
UyBhbmQgRXVyb3BlYW4gdXNlcnMuXG4gICAgLy8gRHVlIHRvIHRoaXMsIGl0IGlzIGxlZnQgdG8g
dGhlIHVzZXIgdG8gaW1wbGVtZW50IGF0IHRoaXMgdGltZS5cbiAgICBpZiAoZXZlbnQudHlwZSA9
PT0gJ2tleWRvd24nIHx8IGV2ZW50LnR5cGUgPT09ICdrZXl1cCcpIHtcbiAgICAgIHJldHVybiBl
dmVudC5rZXlDb2RlO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfSxcbiAgd2hpY2g6IGZ1bmN0
aW9uIChldmVudCkge1xuICAgIC8vIGB3aGljaGAgaXMgYW4gYWxpYXMgZm9yIGVpdGhlciBga2V5
Q29kZWAgb3IgYGNoYXJDb2RlYCBkZXBlbmRpbmcgb24gdGhlXG4gICAgLy8gdHlwZSBvZiB0aGUg
ZXZlbnQuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlwcmVzcycpIHtcbiAgICAgIHJldHVy
biBnZXRFdmVudENoYXJDb2RlKGV2ZW50KTtcbiAgICB9XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09
ICdrZXlkb3duJyB8fCBldmVudC50eXBlID09PSAna2V5dXAnKSB7XG4gICAgICByZXR1cm4gZXZl
bnQua2V5Q29kZTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cbn07XG5cbi8qKlxuICogQHBh
cmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRj
aCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBp
ZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2
ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9
XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY0tleWJvYXJkRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRp
c3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJu
IFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJr
ZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY1VJRXZl
bnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0tleWJvYXJkRXZlbnQsIEtleWJvYXJkRXZlbnRJbnRl
cmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0tleWJvYXJkRXZlbnQ7XG5cblxu
LyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9t
L2xpYi9TeW50aGV0aWNLZXlib2FyZEV2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTczXG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljVUlFdmVudCA9IHJlcXVpcmUoJy4vU3lu
dGhldGljVUlFdmVudCcpO1xuXG52YXIgZ2V0RXZlbnRNb2RpZmllclN0YXRlID0gcmVxdWlyZSgn
Li9nZXRFdmVudE1vZGlmaWVyU3RhdGUnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIFRvdWNoRXZl
bnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvdG91Y2gtZXZlbnRzL1xuICovXG52YXIg
VG91Y2hFdmVudEludGVyZmFjZSA9IHtcbiAgdG91Y2hlczogbnVsbCxcbiAgdGFyZ2V0VG91Y2hl
czogbnVsbCxcbiAgY2hhbmdlZFRvdWNoZXM6IG51bGwsXG4gIGFsdEtleTogbnVsbCxcbiAgbWV0
YUtleTogbnVsbCxcbiAgY3RybEtleTogbnVsbCxcbiAgc2hpZnRLZXk6IG51bGwsXG4gIGdldE1v
ZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZVxufTtcblxuLyoqXG4gKiBAcGFyYW0g
e29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRo
aXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50
aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQg
TmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cbiAq
L1xuZnVuY3Rpb24gU3ludGhldGljVG91Y2hFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hN
YXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3ludGhl
dGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0
aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljVUlFdmVudC5hdWdt
ZW50Q2xhc3MoU3ludGhldGljVG91Y2hFdmVudCwgVG91Y2hFdmVudEludGVyZmFjZSk7XG5cbm1v
ZHVsZS5leHBvcnRzID0gU3ludGhldGljVG91Y2hFdmVudDtcblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY1Rv
dWNoRXZlbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxNzRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcblxuLyoq
XG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDkv
V0QtY3NzMy10cmFuc2l0aW9ucy0yMDA5MDMyMC8jdHJhbnNpdGlvbi1ldmVudHMtXG4gKiBAc2Vl
IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9UcmFuc2l0
aW9uRXZlbnRcbiAqL1xudmFyIFRyYW5zaXRpb25FdmVudEludGVyZmFjZSA9IHtcbiAgcHJvcGVy
dHlOYW1lOiBudWxsLFxuICBlbGFwc2VkVGltZTogbnVsbCxcbiAgcHNldWRvRWxlbWVudDogbnVs
bFxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJh
dGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlz
cGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFy
YW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5k
cyB7U3ludGhldGljRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY1RyYW5zaXRpb25FdmVu
dChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCkge1xuICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENv
bmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59
XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQs
IFRyYW5zaXRpb25FdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGlj
VHJhbnNpdGlvbkV2ZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljVHJhbnNpdGlvbkV2ZW50LmpzXG4g
KiogbW9kdWxlIGlkID0gMTc1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGlj
TW91c2VFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljTW91c2VFdmVudCcpO1xuXG4vKipcbiAq
IEBpbnRlcmZhY2UgV2hlZWxFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00t
TGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBXaGVlbEV2ZW50SW50ZXJmYWNlID0ge1xuICBkZWx0
YVg6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJldHVybiAnZGVsdGFYJyBpbiBldmVudCA/IGV2
ZW50LmRlbHRhWCA6IC8vIEZhbGxiYWNrIHRvIGB3aGVlbERlbHRhWGAgZm9yIFdlYmtpdCBhbmQg
bm9ybWFsaXplIChyaWdodCBpcyBwb3NpdGl2ZSkuXG4gICAgJ3doZWVsRGVsdGFYJyBpbiBldmVu
dCA/IC1ldmVudC53aGVlbERlbHRhWCA6IDA7XG4gIH0sXG4gIGRlbHRhWTogZnVuY3Rpb24gKGV2
ZW50KSB7XG4gICAgcmV0dXJuICdkZWx0YVknIGluIGV2ZW50ID8gZXZlbnQuZGVsdGFZIDogLy8g
RmFsbGJhY2sgdG8gYHdoZWVsRGVsdGFZYCBmb3IgV2Via2l0IGFuZCBub3JtYWxpemUgKGRvd24g
aXMgcG9zaXRpdmUpLlxuICAgICd3aGVlbERlbHRhWScgaW4gZXZlbnQgPyAtZXZlbnQud2hlZWxE
ZWx0YVkgOiAvLyBGYWxsYmFjayB0byBgd2hlZWxEZWx0YWAgZm9yIElFPDkgYW5kIG5vcm1hbGl6
ZSAoZG93biBpcyBwb3NpdGl2ZSkuXG4gICAgJ3doZWVsRGVsdGEnIGluIGV2ZW50ID8gLWV2ZW50
LndoZWVsRGVsdGEgOiAwO1xuICB9LFxuICBkZWx0YVo6IG51bGwsXG5cbiAgLy8gQnJvd3NlcnMg
d2l0aG91dCBcImRlbHRhTW9kZVwiIGlzIHJlcG9ydGluZyBpbiByYXcgd2hlZWwgZGVsdGEgd2hl
cmUgb25lXG4gIC8vIG5vdGNoIG9uIHRoZSBzY3JvbGwgaXMgYWx3YXlzICsvLSAxMjAsIHJvdWdo
bHkgZXF1aXZhbGVudCB0byBwaXhlbHMuXG4gIC8vIEEgZ29vZCBhcHByb3hpbWF0aW9uIG9mIERP
TV9ERUxUQV9MSU5FICgxKSBpcyA1JSBvZiB2aWV3cG9ydCBzaXplIG9yXG4gIC8vIH40MCBwaXhl
bHMsIGZvciBET01fREVMVEFfU0NSRUVOICgyKSBpdCBpcyA4Ny41JSBvZiB2aWV3cG9ydCBzaXpl
LlxuICBkZWx0YU1vZGU6IG51bGxcbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3Bh
dGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICog
QHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZl
bnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2Vy
IGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY01vdXNlRXZlbnR9XG4gKi9cbmZ1bmN0aW9u
IFN5bnRoZXRpY1doZWVsRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY01vdXNlRXZl
bnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY01vdXNlRXZlbnQuYXVnbWVudENs
YXNzKFN5bnRoZXRpY1doZWVsRXZlbnQsIFdoZWVsRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IFN5bnRoZXRpY1doZWVsRXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNXaGVlbEV2
ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTc2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBNT0QgPSA2NTUyMTtcblxuLy8gYWRsZXIzMiBpcyBub3QgY3J5cHRvZ3JhcGhpY2FsbHkg
c3Ryb25nLCBhbmQgaXMgb25seSB1c2VkIHRvIHNhbml0eSBjaGVjayB0aGF0XG4vLyBtYXJrdXAg
Z2VuZXJhdGVkIG9uIHRoZSBzZXJ2ZXIgbWF0Y2hlcyB0aGUgbWFya3VwIGdlbmVyYXRlZCBvbiB0
aGUgY2xpZW50LlxuLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiAoYSBtb2RpZmllZCB2ZXJzaW9uIG9m
IHRoZSBTaGVldEpTIHZlcnNpb24pIGhhcyBiZWVuIG9wdGltaXplZFxuLy8gZm9yIG91ciB1c2Ug
Y2FzZSwgYXQgdGhlIGV4cGVuc2Ugb2YgY29uZm9ybWluZyB0byB0aGUgYWRsZXIzMiBzcGVjaWZp
Y2F0aW9uXG4vLyBmb3Igbm9uLWFzY2lpIGlucHV0cy5cbmZ1bmN0aW9uIGFkbGVyMzIoZGF0YSkg
e1xuICB2YXIgYSA9IDE7XG4gIHZhciBiID0gMDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbCA9IGRh
dGEubGVuZ3RoO1xuICB2YXIgbSA9IGwgJiB+MHgzO1xuICB3aGlsZSAoaSA8IG0pIHtcbiAgICB2
YXIgbiA9IE1hdGgubWluKGkgKyA0MDk2LCBtKTtcbiAgICBmb3IgKDsgaSA8IG47IGkgKz0gNCkg
e1xuICAgICAgYiArPSAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSkpICsgKGEgKz0gZGF0YS5jaGFy
Q29kZUF0KGkgKyAxKSkgKyAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSArIDIpKSArIChhICs9IGRh
dGEuY2hhckNvZGVBdChpICsgMykpO1xuICAgIH1cbiAgICBhICU9IE1PRDtcbiAgICBiICU9IE1P
RDtcbiAgfVxuICBmb3IgKDsgaSA8IGw7IGkrKykge1xuICAgIGIgKz0gYSArPSBkYXRhLmNoYXJD
b2RlQXQoaSk7XG4gIH1cbiAgYSAlPSBNT0Q7XG4gIGIgJT0gTU9EO1xuICByZXR1cm4gYSB8IGIg
PDwgMTY7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYWRsZXIzMjtcblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2FkbGVyMzIu
anNcbiAqKiBtb2R1bGUgaWQgPSAxNzdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBDU1NQ
cm9wZXJ0eSA9IHJlcXVpcmUoJy4vQ1NTUHJvcGVydHknKTtcbnZhciB3YXJuaW5nID0gcmVxdWly
ZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgaXNVbml0bGVzc051bWJlciA9IENTU1Byb3Bl
cnR5LmlzVW5pdGxlc3NOdW1iZXI7XG52YXIgc3R5bGVXYXJuaW5ncyA9IHt9O1xuXG4vKipcbiAq
IENvbnZlcnQgYSB2YWx1ZSBpbnRvIHRoZSBwcm9wZXIgY3NzIHdyaXRhYmxlIHZhbHVlLiBUaGUg
c3R5bGUgbmFtZSBgbmFtZWBcbiAqIHNob3VsZCBiZSBsb2dpY2FsIChubyBoeXBoZW5zKSwgYXMg
c3BlY2lmaWVkXG4gKiBpbiBgQ1NTUHJvcGVydHkuaXNVbml0bGVzc051bWJlcmAuXG4gKlxuICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUgQ1NTIHByb3BlcnR5IG5hbWUgc3VjaCBhcyBgdG9wTWFyZ2lu
YC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgQ1NTIHByb3BlcnR5IHZhbHVlIHN1Y2ggYXMgYDEwcHhg
LlxuICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9uZW50XG4gKiBAcmV0dXJuIHtz
dHJpbmd9IE5vcm1hbGl6ZWQgc3R5bGUgdmFsdWUgd2l0aCBkaW1lbnNpb25zIGFwcGxpZWQuXG4g
Ki9cbmZ1bmN0aW9uIGRhbmdlcm91c1N0eWxlVmFsdWUobmFtZSwgdmFsdWUsIGNvbXBvbmVudCwg
aXNDdXN0b21Qcm9wZXJ0eSkge1xuICAvLyBOb3RlIHRoYXQgd2UndmUgcmVtb3ZlZCBlc2NhcGVU
ZXh0Rm9yQnJvd3NlcigpIGNhbGxzIGhlcmUgc2luY2UgdGhlXG4gIC8vIHdob2xlIHN0cmluZyB3
aWxsIGJlIGVzY2FwZWQgd2hlbiB0aGUgYXR0cmlidXRlIGlzIGluamVjdGVkIGludG9cbiAgLy8g
dGhlIG1hcmt1cC4gSWYgeW91IHByb3ZpZGUgdW5zYWZlIHVzZXIgZGF0YSBoZXJlIHRoZXkgY2Fu
IGluamVjdFxuICAvLyBhcmJpdHJhcnkgQ1NTIHdoaWNoIG1heSBiZSBwcm9ibGVtYXRpYyAoSSBj
b3VsZG4ndCByZXBybyB0aGlzKTpcbiAgLy8gaHR0cHM6Ly93d3cub3dhc3Aub3JnL2luZGV4LnBo
cC9YU1NfRmlsdGVyX0V2YXNpb25fQ2hlYXRfU2hlZXRcbiAgLy8gaHR0cDovL3d3dy50aGVzcGFu
bmVyLmNvLnVrLzIwMDcvMTEvMjYvdWx0aW1hdGUteHNzLWNzcy1pbmplY3Rpb24vXG4gIC8vIFRo
aXMgaXMgbm90IGFuIFhTUyBob2xlIGJ1dCBpbnN0ZWFkIGEgcG90ZW50aWFsIENTUyBpbmplY3Rp
b24gaXNzdWVcbiAgLy8gd2hpY2ggaGFzIGxlYWQgdG8gYSBncmVhdGVyIGRpc2N1c3Npb24gYWJv
dXQgaG93IHdlJ3JlIGdvaW5nIHRvXG4gIC8vIHRydXN0IFVSTHMgbW92aW5nIGZvcndhcmQuIFNl
ZSAjMjExNTkwMVxuXG4gIHZhciBpc0VtcHR5ID0gdmFsdWUgPT0gbnVsbCB8fCB0eXBlb2YgdmFs
dWUgPT09ICdib29sZWFuJyB8fCB2YWx1ZSA9PT0gJyc7XG4gIGlmIChpc0VtcHR5KSB7XG4gICAg
cmV0dXJuICcnO1xuICB9XG5cbiAgdmFyIGlzTm9uTnVtZXJpYyA9IGlzTmFOKHZhbHVlKTtcbiAg
aWYgKGlzQ3VzdG9tUHJvcGVydHkgfHwgaXNOb25OdW1lcmljIHx8IHZhbHVlID09PSAwIHx8IGlz
VW5pdGxlc3NOdW1iZXIuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgaXNVbml0bGVzc051bWJlcltu
YW1lXSkge1xuICAgIHJldHVybiAnJyArIHZhbHVlOyAvLyBjYXN0IHRvIHN0cmluZ1xuICB9XG5c
biAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gQWxsb3cgJzAnIHRvIHBhc3Mg
dGhyb3VnaCB3aXRob3V0IHdhcm5pbmcuIDAgaXMgYWxyZWFkeSBzcGVjaWFsIGFuZFxuICAgICAg
Ly8gZG9lc24ndCByZXF1aXJlIHVuaXRzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhcm4gYWJvdXQg
aXQuXG4gICAgICBpZiAoY29tcG9uZW50ICYmIHZhbHVlICE9PSAnMCcpIHtcbiAgICAgICAgdmFy
IG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG4gICAgICAgIHZhciBv
d25lck5hbWUgPSBvd25lciA/IG93bmVyLmdldE5hbWUoKSA6IG51bGw7XG4gICAgICAgIGlmIChv
d25lck5hbWUgJiYgIXN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXSkge1xuICAgICAgICAgIHN0eWxl
V2FybmluZ3Nbb3duZXJOYW1lXSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHZhciB3YXJuZWQg
PSBmYWxzZTtcbiAgICAgICAgaWYgKG93bmVyTmFtZSkge1xuICAgICAgICAgIHZhciB3YXJuaW5n
cyA9IHN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXTtcbiAgICAgICAgICB3YXJuZWQgPSB3YXJuaW5n
c1tuYW1lXTtcbiAgICAgICAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgICAgICAgd2FybmluZ3Nb
bmFtZV0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXdhcm5l
ZCkge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKGZhbHNlLCAnYSBgJXNgIHRhZyAob3duZXI6IGAlc2ApIHdhcyBwYXNzZWQgYSBudW1l
cmljIHN0cmluZyB2YWx1ZSAnICsgJ2ZvciBDU1MgcHJvcGVydHkgYCVzYCAodmFsdWU6IGAlc2Ap
IHdoaWNoIHdpbGwgYmUgdHJlYXRlZCAnICsgJ2FzIGEgdW5pdGxlc3MgbnVtYmVyIGluIGEgZnV0
dXJlIHZlcnNpb24gb2YgUmVhY3QuJywgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC50eXBlLCBv
d25lck5hbWUgfHwgJ3Vua25vd24nLCBuYW1lLCB2YWx1ZSkgOiB2b2lkIDA7XG4gICAgICAgIH1c
biAgICAgIH1cbiAgICB9XG4gICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG4gIH1cbiAgcmV0dXJu
IHZhbHVlICsgJ3B4Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkYW5nZXJvdXNTdHlsZVZhbHVl
O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LWRvbS9saWIvZGFuZ2Vyb3VzU3R5bGVWYWx1ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDE3OFxu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9y
ZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgn
cmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVl
ID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdEluc3RhbmNl
TWFwID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7XG5cbnZhciBnZXRIb3N0Q29tcG9u
ZW50RnJvbUNvbXBvc2l0ZSA9IHJlcXVpcmUoJy4vZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3Np
dGUnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZh
ciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vKipcbiAqIFJldHVy
bnMgdGhlIERPTSBub2RlIHJlbmRlcmVkIGJ5IHRoaXMgZWxlbWVudC5cbiAqXG4gKiBTZWUgaHR0
cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVh
Y3Rkb20uZmluZGRvbW5vZGVcbiAqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fERPTUVsZW1l
bnR9IGNvbXBvbmVudE9yRWxlbWVudFxuICogQHJldHVybiB7P0RPTUVsZW1lbnR9IFRoZSByb290
IG5vZGUgb2YgdGhpcyBlbGVtZW50LlxuICovXG5mdW5jdGlvbiBmaW5kRE9NTm9kZShjb21wb25l
bnRPckVsZW1lbnQpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICB2YXIgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuICAgIGlm
IChvd25lciAhPT0gbnVsbCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcob3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyLCAnJXMgaXMg
YWNjZXNzaW5nIGZpbmRET01Ob2RlIGluc2lkZSBpdHMgcmVuZGVyKCkuICcgKyAncmVuZGVyKCkg
c2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQgc3RhdGUuIEl0IHNob3VsZCAn
ICsgJ25ldmVyIGFjY2VzcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBzdGFsZSBkYXRhIGZyb20g
dGhlIHByZXZpb3VzICcgKyAncmVuZGVyLCBzdWNoIGFzIHJlZnMuIE1vdmUgdGhpcyBsb2dpYyB0
byBjb21wb25lbnREaWRNb3VudCBhbmQgJyArICdjb21wb25lbnREaWRVcGRhdGUgaW5zdGVhZC4n
LCBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBvd25l
ci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBpZiAoY29t
cG9uZW50T3JFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAo
Y29tcG9uZW50T3JFbGVtZW50Lm5vZGVUeXBlID09PSAxKSB7XG4gICAgcmV0dXJuIGNvbXBvbmVu
dE9yRWxlbWVudDtcbiAgfVxuXG4gIHZhciBpbnN0ID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQoY29t
cG9uZW50T3JFbGVtZW50KTtcbiAgaWYgKGluc3QpIHtcbiAgICBpbnN0ID0gZ2V0SG9zdENvbXBv
bmVudEZyb21Db21wb3NpdGUoaW5zdCk7XG4gICAgcmV0dXJuIGluc3QgPyBSZWFjdERPTUNvbXBv
bmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KSA6IG51bGw7XG4gIH1cblxuICBpZiAo
dHlwZW9mIGNvbXBvbmVudE9yRWxlbWVudC5yZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAh
ZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnZmluZERPTU5vZGUgd2FzIGNhbGxlZCBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50
LicpIDogX3Byb2RJbnZhcmlhbnQoJzQ0JykgOiB2b2lkIDA7XG4gIH0gZWxzZSB7XG4gICAgIWZh
bHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ0VsZW1lbnQgYXBwZWFycyB0byBiZSBuZWl0aGVyIFJlYWN0Q29tcG9uZW50IG5vciBE
T01Ob2RlIChrZXlzOiAlcyknLCBPYmplY3Qua2V5cyhjb21wb25lbnRPckVsZW1lbnQpKSA6IF9w
cm9kSW52YXJpYW50KCc0NScsIE9iamVjdC5rZXlzKGNvbXBvbmVudE9yRWxlbWVudCkpIDogdm9p
ZCAwO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmluZERPTU5vZGU7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9m
aW5kRE9NTm9kZS5qc1xuICoqIG1vZHVsZSBpZCA9IDE3OVxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgS2V5RXNjYXBlVXRpbHMgPSByZXF1aXJlKCcuL0tleUVzY2FwZVV0aWxzJyk7
XG52YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IHJlcXVpcmUoJy4vdHJhdmVyc2VBbGxDaGlsZHJl
bicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBS
ZWFjdENvbXBvbmVudFRyZWVIb29rO1xuXG5pZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmlu
ZWQnICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtc
biAgLy8gVGVtcG9yYXJ5IGhhY2suXG4gIC8vIElubGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdl
bGwgd2l0aCBKZXN0OlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNz
dWVzLzcyNDBcbiAgLy8gUmVtb3ZlIHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24ndCBu
ZWVkIHRoZW0gYW55bW9yZTpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0
L3B1bGwvNzE3OFxuICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gcmVxdWlyZSgncmVhY3QvbGli
L1JlYWN0Q29tcG9uZW50VHJlZUhvb2snKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2Z1bmN0aW9u
fSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBwYXNzZWQgdGhyb3VnaCB0cmF2ZXJzYWwuXG4gKiBA
cGFyYW0gez9SZWFjdENvbXBvbmVudH0gY2hpbGQgUmVhY3QgY2hpbGQgY29tcG9uZW50LlxuICog
QHBhcmFtIHshc3RyaW5nfSBuYW1lIFN0cmluZyBuYW1lIG9mIGtleSBwYXRoIHRvIGNoaWxkLlxu
ICogQHBhcmFtIHtudW1iZXI9fSBzZWxmRGVidWdJRCBPcHRpb25hbCBkZWJ1Z0lEIG9mIHRoZSBj
dXJyZW50IGludGVybmFsIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBmbGF0dGVuU2luZ2xlQ2hp
bGRJbnRvQ29udGV4dCh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lLCBzZWxmRGVidWdJRCkg
e1xuICAvLyBXZSBmb3VuZCBhIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgaWYgKHRyYXZlcnNlQ29u
dGV4dCAmJiB0eXBlb2YgdHJhdmVyc2VDb250ZXh0ID09PSAnb2JqZWN0Jykge1xuICAgIHZhciBy
ZXN1bHQgPSB0cmF2ZXJzZUNvbnRleHQ7XG4gICAgdmFyIGtleVVuaXF1ZSA9IHJlc3VsdFtuYW1l
XSA9PT0gdW5kZWZpbmVkO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICBpZiAoIVJlYWN0Q29tcG9uZW50VHJlZUhvb2spIHtcbiAgICAgICAg
UmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdENvbXBvbmVu
dFRyZWVIb29rJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWtleVVuaXF1ZSkge1xuICAgICAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2Zs
YXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4gd2l0aCB0aGUgc2Ft
ZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsgd2hlbiB0d28gY2hp
bGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSB1c2Vk
LiVzJywgS2V5RXNjYXBlVXRpbHMudW5lc2NhcGUobmFtZSksIFJlYWN0Q29tcG9uZW50VHJlZUhv
b2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6IHZvaWQgMDtcbiAgICAgIH1c
biAgICB9XG4gICAgaWYgKGtleVVuaXF1ZSAmJiBjaGlsZCAhPSBudWxsKSB7XG4gICAgICByZXN1
bHRbbmFtZV0gPSBjaGlsZDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBGbGF0dGVucyBjaGls
ZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuIEFu
eSBudWxsXG4gKiBjaGlsZHJlbiB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5n
IG9iamVjdC5cbiAqIEByZXR1cm4geyFvYmplY3R9IGZsYXR0ZW5lZCBjaGlsZHJlbiBrZXllZCBi
eSBuYW1lLlxuICovXG5mdW5jdGlvbiBmbGF0dGVuQ2hpbGRyZW4oY2hpbGRyZW4sIHNlbGZEZWJ1
Z0lEKSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xu
ICB9XG4gIHZhciByZXN1bHQgPSB7fTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1bmN0
aW9uICh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lKSB7XG4gICAgICByZXR1cm4gZmxhdHRl
blNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSwgc2Vs
ZkRlYnVnSUQpO1xuICAgIH0sIHJlc3VsdCk7XG4gIH0gZWxzZSB7XG4gICAgdHJhdmVyc2VBbGxD
aGlsZHJlbihjaGlsZHJlbiwgZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQsIHJlc3VsdCk7
XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuQ2hp
bGRyZW47XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vcmVhY3QtZG9tL2xpYi9mbGF0dGVuQ2hpbGRyZW4uanNcbiAqKiBtb2R1bGUgaWQgPSAxODBc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBnZXRFdmVudENoYXJDb2RlID0gcmVxdWlyZSgn
Li9nZXRFdmVudENoYXJDb2RlJyk7XG5cbi8qKlxuICogTm9ybWFsaXphdGlvbiBvZiBkZXByZWNh
dGVkIEhUTUw1IGBrZXlgIHZhbHVlc1xuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxh
Lm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNLZXlfbmFtZXNcbiAqL1xudmFy
IG5vcm1hbGl6ZUtleSA9IHtcbiAgRXNjOiAnRXNjYXBlJyxcbiAgU3BhY2ViYXI6ICcgJyxcbiAg
TGVmdDogJ0Fycm93TGVmdCcsXG4gIFVwOiAnQXJyb3dVcCcsXG4gIFJpZ2h0OiAnQXJyb3dSaWdo
dCcsXG4gIERvd246ICdBcnJvd0Rvd24nLFxuICBEZWw6ICdEZWxldGUnLFxuICBXaW46ICdPUycs
XG4gIE1lbnU6ICdDb250ZXh0TWVudScsXG4gIEFwcHM6ICdDb250ZXh0TWVudScsXG4gIFNjcm9s
bDogJ1Njcm9sbExvY2snLFxuICBNb3pQcmludGFibGVLZXk6ICdVbmlkZW50aWZpZWQnXG59O1xu
XG4vKipcbiAqIFRyYW5zbGF0aW9uIGZyb20gbGVnYWN5IGBrZXlDb2RlYCB0byBIVE1MNSBga2V5
YFxuICogT25seSBzcGVjaWFsIGtleXMgc3VwcG9ydGVkLCBhbGwgb3RoZXJzIGRlcGVuZCBvbiBr
ZXlib2FyZCBsYXlvdXQgb3IgYnJvd3NlclxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3pp
bGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNLZXlfbmFtZXNcbiAqL1xu
dmFyIHRyYW5zbGF0ZVRvS2V5ID0ge1xuICA4OiAnQmFja3NwYWNlJyxcbiAgOTogJ1RhYicsXG4g
IDEyOiAnQ2xlYXInLFxuICAxMzogJ0VudGVyJyxcbiAgMTY6ICdTaGlmdCcsXG4gIDE3OiAnQ29u
dHJvbCcsXG4gIDE4OiAnQWx0JyxcbiAgMTk6ICdQYXVzZScsXG4gIDIwOiAnQ2Fwc0xvY2snLFxu
ICAyNzogJ0VzY2FwZScsXG4gIDMyOiAnICcsXG4gIDMzOiAnUGFnZVVwJyxcbiAgMzQ6ICdQYWdl
RG93bicsXG4gIDM1OiAnRW5kJyxcbiAgMzY6ICdIb21lJyxcbiAgMzc6ICdBcnJvd0xlZnQnLFxu
ICAzODogJ0Fycm93VXAnLFxuICAzOTogJ0Fycm93UmlnaHQnLFxuICA0MDogJ0Fycm93RG93bics
XG4gIDQ1OiAnSW5zZXJ0JyxcbiAgNDY6ICdEZWxldGUnLFxuICAxMTI6ICdGMScsXG4gIDExMzog
J0YyJyxcbiAgMTE0OiAnRjMnLFxuICAxMTU6ICdGNCcsXG4gIDExNjogJ0Y1JyxcbiAgMTE3OiAn
RjYnLFxuICAxMTg6ICdGNycsXG4gIDExOTogJ0Y4JyxcbiAgMTIwOiAnRjknLFxuICAxMjE6ICdG
MTAnLFxuICAxMjI6ICdGMTEnLFxuICAxMjM6ICdGMTInLFxuICAxNDQ6ICdOdW1Mb2NrJyxcbiAg
MTQ1OiAnU2Nyb2xsTG9jaycsXG4gIDIyNDogJ01ldGEnXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7
b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEByZXR1cm4ge3N0
cmluZ30gTm9ybWFsaXplZCBga2V5YCBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gZ2V0RXZlbnRL
ZXkobmF0aXZlRXZlbnQpIHtcbiAgaWYgKG5hdGl2ZUV2ZW50LmtleSkge1xuICAgIC8vIE5vcm1h
bGl6ZSBpbmNvbnNpc3RlbnQgdmFsdWVzIHJlcG9ydGVkIGJ5IGJyb3dzZXJzIGR1ZSB0b1xuICAg
IC8vIGltcGxlbWVudGF0aW9ucyBvZiBhIHdvcmtpbmcgZHJhZnQgc3BlY2lmaWNhdGlvbi5cblxu
ICAgIC8vIEZpcmVGb3ggaW1wbGVtZW50cyBga2V5YCBidXQgcmV0dXJucyBgTW96UHJpbnRhYmxl
S2V5YCBmb3IgYWxsXG4gICAgLy8gcHJpbnRhYmxlIGNoYXJhY3RlcnMgKG5vcm1hbGl6ZWQgdG8g
YFVuaWRlbnRpZmllZGApLCBpZ25vcmUgaXQuXG4gICAgdmFyIGtleSA9IG5vcm1hbGl6ZUtleVtu
YXRpdmVFdmVudC5rZXldIHx8IG5hdGl2ZUV2ZW50LmtleTtcbiAgICBpZiAoa2V5ICE9PSAnVW5p
ZGVudGlmaWVkJykge1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gIH1cblxuICAvLyBCcm93
c2VyIGRvZXMgbm90IGltcGxlbWVudCBga2V5YCwgcG9seWZpbGwgYXMgbXVjaCBvZiBpdCBhcyB3
ZSBjYW4uXG4gIGlmIChuYXRpdmVFdmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7XG4gICAgdmFy
IGNoYXJDb2RlID0gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCk7XG5cbiAgICAvLyBUaGUg
ZW50ZXIta2V5IGlzIHRlY2huaWNhbGx5IGJvdGggcHJpbnRhYmxlIGFuZCBub24tcHJpbnRhYmxl
IGFuZCBjYW5cbiAgICAvLyB0aHVzIGJlIGNhcHR1cmVkIGJ5IGBrZXlwcmVzc2AsIG5vIG90aGVy
IG5vbi1wcmludGFibGUga2V5IHNob3VsZC5cbiAgICByZXR1cm4gY2hhckNvZGUgPT09IDEzID8g
J0VudGVyJyA6IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpO1xuICB9XG4gIGlmIChuYXRp
dmVFdmVudC50eXBlID09PSAna2V5ZG93bicgfHwgbmF0aXZlRXZlbnQudHlwZSA9PT0gJ2tleXVw
Jykge1xuICAgIC8vIFdoaWxlIHVzZXIga2V5Ym9hcmQgbGF5b3V0IGRldGVybWluZXMgdGhlIGFj
dHVhbCBtZWFuaW5nIG9mIGVhY2hcbiAgICAvLyBga2V5Q29kZWAgdmFsdWUsIGFsbW9zdCBhbGwg
ZnVuY3Rpb24ga2V5cyBoYXZlIGEgdW5pdmVyc2FsIHZhbHVlLlxuICAgIHJldHVybiB0cmFuc2xh
dGVUb0tleVtuYXRpdmVFdmVudC5rZXlDb2RlXSB8fCAnVW5pZGVudGlmaWVkJztcbiAgfVxuICBy
ZXR1cm4gJyc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRLZXk7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9n
ZXRFdmVudEtleS5qc1xuICoqIG1vZHVsZSBpZCA9IDE4MVxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG4vKiBnbG9iYWwgU3ltYm9sICovXG5cbnZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBl
b2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVyYXRvcjtcbnZhciBGQVVYX0lU
RVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLlxuXG4v
KipcbiAqIFJldHVybnMgdGhlIGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlvbiBjb250YWluZWQgb24g
dGhlIGl0ZXJhYmxlIG9iamVjdC5cbiAqXG4gKiBCZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rp
b24gd2l0aCB0aGUgaXRlcmFibGUgYXMgY29udGV4dDpcbiAqXG4gKiAgICAgdmFyIGl0ZXJhdG9y
Rm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUpO1xuICogICAgIGlmIChpdGVyYXRvckZuKSB7
XG4gKiAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobXlJdGVyYWJsZSk7XG4g
KiAgICAgICAuLi5cbiAqICAgICB9XG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJh
YmxlXG4gKiBAcmV0dXJuIHs/ZnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4o
bWF5YmVJdGVyYWJsZSkge1xuICB2YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRlcmFibGUgJiYgKElU
RVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJ
dGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF0pO1xuICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4g
PT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gaXRlcmF0b3JGbjtcbiAgfVxufVxuXG5tb2R1
bGUuZXhwb3J0cyA9IGdldEl0ZXJhdG9yRm47XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9nZXRJdGVyYXRvckZuLmpzXG4g
KiogbW9kdWxlIGlkID0gMTgyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEdpdmVu
IGFueSBub2RlIHJldHVybiB0aGUgZmlyc3QgbGVhZiBub2RlIHdpdGhvdXQgY2hpbGRyZW4uXG4g
KlxuICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlXG4gKiBAcmV0dXJuIHtE
T01FbGVtZW50fERPTVRleHROb2RlfVxuICovXG5cbmZ1bmN0aW9uIGdldExlYWZOb2RlKG5vZGUp
IHtcbiAgd2hpbGUgKG5vZGUgJiYgbm9kZS5maXJzdENoaWxkKSB7XG4gICAgbm9kZSA9IG5vZGUu
Zmlyc3RDaGlsZDtcbiAgfVxuICByZXR1cm4gbm9kZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG5l
eHQgc2libGluZyB3aXRoaW4gYSBjb250YWluZXIuIFRoaXMgd2lsbCB3YWxrIHVwIHRoZVxuICog
RE9NIGlmIGEgbm9kZSdzIHNpYmxpbmdzIGhhdmUgYmVlbiBleGhhdXN0ZWQuXG4gKlxuICogQHBh
cmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlXG4gKiBAcmV0dXJuIHs/RE9NRWxlbWVu
dHxET01UZXh0Tm9kZX1cbiAqL1xuZnVuY3Rpb24gZ2V0U2libGluZ05vZGUobm9kZSkge1xuICB3
aGlsZSAobm9kZSkge1xuICAgIGlmIChub2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICByZXR1cm4g
bm9kZS5uZXh0U2libGluZztcbiAgICB9XG4gICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAg
fVxufVxuXG4vKipcbiAqIEdldCBvYmplY3QgZGVzY3JpYmluZyB0aGUgbm9kZXMgd2hpY2ggY29u
dGFpbiBjaGFyYWN0ZXJzIGF0IG9mZnNldC5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9N
VGV4dE5vZGV9IHJvb3RcbiAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXRcbiAqIEByZXR1cm4gez9v
YmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQocm9vdCwgb2Zm
c2V0KSB7XG4gIHZhciBub2RlID0gZ2V0TGVhZk5vZGUocm9vdCk7XG4gIHZhciBub2RlU3RhcnQg
PSAwO1xuICB2YXIgbm9kZUVuZCA9IDA7XG5cbiAgd2hpbGUgKG5vZGUpIHtcbiAgICBpZiAobm9k
ZS5ub2RlVHlwZSA9PT0gMykge1xuICAgICAgbm9kZUVuZCA9IG5vZGVTdGFydCArIG5vZGUudGV4
dENvbnRlbnQubGVuZ3RoO1xuXG4gICAgICBpZiAobm9kZVN0YXJ0IDw9IG9mZnNldCAmJiBub2Rl
RW5kID49IG9mZnNldCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGU6IG5vZGUs
XG4gICAgICAgICAgb2Zmc2V0OiBvZmZzZXQgLSBub2RlU3RhcnRcbiAgICAgICAgfTtcbiAgICAg
IH1cblxuICAgICAgbm9kZVN0YXJ0ID0gbm9kZUVuZDtcbiAgICB9XG5cbiAgICBub2RlID0gZ2V0
TGVhZk5vZGUoZ2V0U2libGluZ05vZGUobm9kZSkpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRz
ID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2dldE5vZGVGb3JDaGFyYWN0
ZXJPZmZzZXQuanNcbiAqKiBtb2R1bGUgaWQgPSAxODNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVu
dmlyb25tZW50Jyk7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBtYXBwaW5nIG9mIHN0YW5kYXJkIHZl
bmRvciBwcmVmaXhlcyB1c2luZyB0aGUgZGVmaW5lZCBzdHlsZSBwcm9wZXJ0eSBhbmQgZXZlbnQg
bmFtZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3R5bGVQcm9wXG4gKiBAcGFyYW0ge3N0cmlu
Z30gZXZlbnROYW1lXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBtYWtlUHJl
Zml4TWFwKHN0eWxlUHJvcCwgZXZlbnROYW1lKSB7XG4gIHZhciBwcmVmaXhlcyA9IHt9O1xuXG4g
IHByZWZpeGVzW3N0eWxlUHJvcC50b0xvd2VyQ2FzZSgpXSA9IGV2ZW50TmFtZS50b0xvd2VyQ2Fz
ZSgpO1xuICBwcmVmaXhlc1snV2Via2l0JyArIHN0eWxlUHJvcF0gPSAnd2Via2l0JyArIGV2ZW50
TmFtZTtcbiAgcHJlZml4ZXNbJ01veicgKyBzdHlsZVByb3BdID0gJ21veicgKyBldmVudE5hbWU7
XG4gIHByZWZpeGVzWydtcycgKyBzdHlsZVByb3BdID0gJ01TJyArIGV2ZW50TmFtZTtcbiAgcHJl
Zml4ZXNbJ08nICsgc3R5bGVQcm9wXSA9ICdvJyArIGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpO1xu
XG4gIHJldHVybiBwcmVmaXhlcztcbn1cblxuLyoqXG4gKiBBIGxpc3Qgb2YgZXZlbnQgbmFtZXMg
dG8gYSBjb25maWd1cmFibGUgbGlzdCBvZiB2ZW5kb3IgcHJlZml4ZXMuXG4gKi9cbnZhciB2ZW5k
b3JQcmVmaXhlcyA9IHtcbiAgYW5pbWF0aW9uZW5kOiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24n
LCAnQW5pbWF0aW9uRW5kJyksXG4gIGFuaW1hdGlvbml0ZXJhdGlvbjogbWFrZVByZWZpeE1hcCgn
QW5pbWF0aW9uJywgJ0FuaW1hdGlvbkl0ZXJhdGlvbicpLFxuICBhbmltYXRpb25zdGFydDogbWFr
ZVByZWZpeE1hcCgnQW5pbWF0aW9uJywgJ0FuaW1hdGlvblN0YXJ0JyksXG4gIHRyYW5zaXRpb25l
bmQ6IG1ha2VQcmVmaXhNYXAoJ1RyYW5zaXRpb24nLCAnVHJhbnNpdGlvbkVuZCcpXG59O1xuXG4v
KipcbiAqIEV2ZW50IG5hbWVzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZGV0ZWN0ZWQgYW5kIHBy
ZWZpeGVkIChpZiBhcHBsaWNhYmxlKS5cbiAqL1xudmFyIHByZWZpeGVkRXZlbnROYW1lcyA9IHt9
O1xuXG4vKipcbiAqIEVsZW1lbnQgdG8gY2hlY2sgZm9yIHByZWZpeGVzIG9uLlxuICovXG52YXIg
c3R5bGUgPSB7fTtcblxuLyoqXG4gKiBCb290c3RyYXAgaWYgYSBET00gZXhpc3RzLlxuICovXG5p
ZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIHN0eWxlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7XG5cbiAgLy8gT24gc29tZSBwbGF0Zm9ybXMsIGlu
IHBhcnRpY3VsYXIgc29tZSByZWxlYXNlcyBvZiBBbmRyb2lkIDQueCxcbiAgLy8gdGhlIHVuLXBy
ZWZpeGVkIFwiYW5pbWF0aW9uXCIgYW5kIFwidHJhbnNpdGlvblwiIHByb3BlcnRpZXMgYXJlIGRl
ZmluZWQgb24gdGhlXG4gIC8vIHN0eWxlIG9iamVjdCBidXQgdGhlIGV2ZW50cyB0aGF0IGZpcmUg
d2lsbCBzdGlsbCBiZSBwcmVmaXhlZCwgc28gd2UgbmVlZFxuICAvLyB0byBjaGVjayBpZiB0aGUg
dW4tcHJlZml4ZWQgZXZlbnRzIGFyZSB1c2FibGUsIGFuZCBpZiBub3QgcmVtb3ZlIHRoZW0gZnJv
bSB0aGUgbWFwLlxuICBpZiAoISgnQW5pbWF0aW9uRXZlbnQnIGluIHdpbmRvdykpIHtcbiAgICBk
ZWxldGUgdmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbjtcbiAgICBkZWxldGUg
dmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbjtcbiAgICBkZWxldGUg
dmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uO1xuICB9XG5cbiAgLy8gU2Ft
ZSBhcyBhYm92ZVxuICBpZiAoISgnVHJhbnNpdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7XG4gICAg
ZGVsZXRlIHZlbmRvclByZWZpeGVzLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbjtcbiAgfVxufVxu
XG4vKipcbiAqIEF0dGVtcHRzIHRvIGRldGVybWluZSB0aGUgY29ycmVjdCB2ZW5kb3IgcHJlZml4
ZWQgZXZlbnQgbmFtZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lXG4gKiBAcmV0
dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZShl
dmVudE5hbWUpIHtcbiAgaWYgKHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5hbWVdKSB7XG4gICAg
cmV0dXJuIHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5hbWVdO1xuICB9IGVsc2UgaWYgKCF2ZW5k
b3JQcmVmaXhlc1tldmVudE5hbWVdKSB7XG4gICAgcmV0dXJuIGV2ZW50TmFtZTtcbiAgfVxuXG4g
IHZhciBwcmVmaXhNYXAgPSB2ZW5kb3JQcmVmaXhlc1tldmVudE5hbWVdO1xuXG4gIGZvciAodmFy
IHN0eWxlUHJvcCBpbiBwcmVmaXhNYXApIHtcbiAgICBpZiAocHJlZml4TWFwLmhhc093blByb3Bl
cnR5KHN0eWxlUHJvcCkgJiYgc3R5bGVQcm9wIGluIHN0eWxlKSB7XG4gICAgICByZXR1cm4gcHJl
Zml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0gPSBwcmVmaXhNYXBbc3R5bGVQcm9wXTtcbiAgICB9
XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VmVuZG9yUHJl
Zml4ZWRFdmVudE5hbWU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9nZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZS5qc1xu
ICoqIG1vZHVsZSBpZCA9IDE4NFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4g
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVzY2FwZVRl
eHRDb250ZW50Rm9yQnJvd3NlciA9IHJlcXVpcmUoJy4vZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93
c2VyJyk7XG5cbi8qKlxuICogRXNjYXBlcyBhdHRyaWJ1dGUgdmFsdWUgdG8gcHJldmVudCBzY3Jp
cHRpbmcgYXR0YWNrcy5cbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIGVzY2FwZS5c
biAqIEByZXR1cm4ge3N0cmluZ30gQW4gZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIHF1
b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKSB7XG4gIHJldHVybiAnXCInICsgZXNj
YXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHZhbHVlKSArICdcIic7XG59XG5cbm1vZHVsZS5leHBv
cnRzID0gcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXI7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9xdW90ZUF0dHJp
YnV0ZVZhbHVlRm9yQnJvd3Nlci5qc1xuICoqIG1vZHVsZSBpZCA9IDE4NVxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcblxu
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdE1vdW50LnJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyO1xu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0
LWRvbS9saWIvcmVuZGVyU3VidHJlZUludG9Db250YWluZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAx
ODZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0
cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuY3JlYXRlUHJvdmlkZXIgPSBjcmVhdGVQcm92
aWRlcjtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfcHJvcFR5cGVz
ID0gcmVxdWlyZSgncHJvcC10eXBlcycpO1xuXG52YXIgX3Byb3BUeXBlczIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF9wcm9wVHlwZXMpO1xuXG52YXIgX1Byb3BUeXBlcyA9IHJlcXVpcmUoJy4u
L3V0aWxzL1Byb3BUeXBlcycpO1xuXG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCcuLi91dGlscy93
YXJuaW5nJyk7XG5cbnZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJu
aW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9i
aiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rp
b24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5j
ZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90
IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxl
Q29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJl
ZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFz
bid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJv
YmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9
XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9m
IHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRo
cm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwg
b3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlw
ZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3
cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBP
YmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1
cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgZGlk
V2FybkFib3V0UmVjZWl2aW5nU3RvcmUgPSBmYWxzZTtcbmZ1bmN0aW9uIHdhcm5BYm91dFJlY2Vp
dmluZ1N0b3JlKCkge1xuICBpZiAoZGlkV2FybkFib3V0UmVjZWl2aW5nU3RvcmUpIHtcbiAgICBy
ZXR1cm47XG4gIH1cbiAgZGlkV2FybkFib3V0UmVjZWl2aW5nU3RvcmUgPSB0cnVlO1xuXG4gICgw
LCBfd2FybmluZzIuZGVmYXVsdCkoJzxQcm92aWRlcj4gZG9lcyBub3Qgc3VwcG9ydCBjaGFuZ2lu
ZyBgc3RvcmVgIG9uIHRoZSBmbHkuICcgKyAnSXQgaXMgbW9zdCBsaWtlbHkgdGhhdCB5b3Ugc2Vl
IHRoaXMgZXJyb3IgYmVjYXVzZSB5b3UgdXBkYXRlZCB0byAnICsgJ1JlZHV4IDIueCBhbmQgUmVh
Y3QgUmVkdXggMi54IHdoaWNoIG5vIGxvbmdlciBob3QgcmVsb2FkIHJlZHVjZXJzICcgKyAnYXV0
b21hdGljYWxseS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGpzL3JlYWN0LXJlZHV4L3Jl
bGVhc2VzLycgKyAndGFnL3YyLjAuMCBmb3IgdGhlIG1pZ3JhdGlvbiBpbnN0cnVjdGlvbnMuJyk7
XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVByb3ZpZGVyKCkge1xuICB2YXIgX1Byb3ZpZGVyJGNoaWxk
Q29udGV4O1xuXG4gIHZhciBzdG9yZUtleSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3Vt
ZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJ3N0b3JlJztcbiAgdmFyIHN1
YktleSA9IGFyZ3VtZW50c1sxXTtcblxuICB2YXIgc3Vic2NyaXB0aW9uS2V5ID0gc3ViS2V5IHx8
IHN0b3JlS2V5ICsgJ1N1YnNjcmlwdGlvbic7XG5cbiAgdmFyIFByb3ZpZGVyID0gZnVuY3Rpb24g
KF9Db21wb25lbnQpIHtcbiAgICBfaW5oZXJpdHMoUHJvdmlkZXIsIF9Db21wb25lbnQpO1xuXG4g
ICAgUHJvdmlkZXIucHJvdG90eXBlLmdldENoaWxkQ29udGV4dCA9IGZ1bmN0aW9uIGdldENoaWxk
Q29udGV4dCgpIHtcbiAgICAgIHZhciBfcmVmO1xuXG4gICAgICByZXR1cm4gX3JlZiA9IHt9LCBf
cmVmW3N0b3JlS2V5XSA9IHRoaXNbc3RvcmVLZXldLCBfcmVmW3N1YnNjcmlwdGlvbktleV0gPSBu
dWxsLCBfcmVmO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBQcm92aWRlcihwcm9wcywgY29udGV4
dCkge1xuICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFByb3ZpZGVyKTtcblxuICAgICAgdmFy
IF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX0NvbXBvbmVudC5jYWxs
KHRoaXMsIHByb3BzLCBjb250ZXh0KSk7XG5cbiAgICAgIF90aGlzW3N0b3JlS2V5XSA9IHByb3Bz
LnN0b3JlO1xuICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cblxuICAgIFByb3ZpZGVyLnByb3Rv
dHlwZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gX3JlYWN0LkNo
aWxkcmVuLm9ubHkodGhpcy5wcm9wcy5jaGlsZHJlbik7XG4gICAgfTtcblxuICAgIHJldHVybiBQ
cm92aWRlcjtcbiAgfShfcmVhY3QuQ29tcG9uZW50KTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIFByb3ZpZGVyLnByb3RvdHlwZS5jb21wb25l
bnRXaWxsUmVjZWl2ZVByb3BzID0gZnVuY3Rpb24gKG5leHRQcm9wcykge1xuICAgICAgaWYgKHRo
aXNbc3RvcmVLZXldICE9PSBuZXh0UHJvcHMuc3RvcmUpIHtcbiAgICAgICAgd2FybkFib3V0UmVj
ZWl2aW5nU3RvcmUoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgUHJvdmlkZXIucHJvcFR5
cGVzID0ge1xuICAgIHN0b3JlOiBfUHJvcFR5cGVzLnN0b3JlU2hhcGUuaXNSZXF1aXJlZCxcbiAg
ICBjaGlsZHJlbjogX3Byb3BUeXBlczIuZGVmYXVsdC5lbGVtZW50LmlzUmVxdWlyZWRcbiAgfTtc
biAgUHJvdmlkZXIuY2hpbGRDb250ZXh0VHlwZXMgPSAoX1Byb3ZpZGVyJGNoaWxkQ29udGV4ID0g
e30sIF9Qcm92aWRlciRjaGlsZENvbnRleFtzdG9yZUtleV0gPSBfUHJvcFR5cGVzLnN0b3JlU2hh
cGUuaXNSZXF1aXJlZCwgX1Byb3ZpZGVyJGNoaWxkQ29udGV4W3N1YnNjcmlwdGlvbktleV0gPSBf
UHJvcFR5cGVzLnN1YnNjcmlwdGlvblNoYXBlLCBfUHJvdmlkZXIkY2hpbGRDb250ZXgpO1xuXG4g
IHJldHVybiBQcm92aWRlcjtcbn1cblxuZXhwb3J0cy5kZWZhdWx0ID0gY3JlYXRlUHJvdmlkZXIo
KTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1yZWR1eC9saWIvY29tcG9uZW50cy9Qcm92aWRlci5qc1xuICoqIG1vZHVsZSBpZCA9IDE4
N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRz
Ll9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1
bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBp
KyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkg
eyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkg
eyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG5l
eHBvcnRzLmNyZWF0ZUNvbm5lY3QgPSBjcmVhdGVDb25uZWN0O1xuXG52YXIgX2Nvbm5lY3RBZHZh
bmNlZCA9IHJlcXVpcmUoJy4uL2NvbXBvbmVudHMvY29ubmVjdEFkdmFuY2VkJyk7XG5cbnZhciBf
Y29ubmVjdEFkdmFuY2VkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Nvbm5lY3RBZHZhbmNl
ZCk7XG5cbnZhciBfc2hhbGxvd0VxdWFsID0gcmVxdWlyZSgnLi4vdXRpbHMvc2hhbGxvd0VxdWFs
Jyk7XG5cbnZhciBfc2hhbGxvd0VxdWFsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NoYWxs
b3dFcXVhbCk7XG5cbnZhciBfbWFwRGlzcGF0Y2hUb1Byb3BzID0gcmVxdWlyZSgnLi9tYXBEaXNw
YXRjaFRvUHJvcHMnKTtcblxudmFyIF9tYXBEaXNwYXRjaFRvUHJvcHMyID0gX2ludGVyb3BSZXF1
aXJlRGVmYXVsdChfbWFwRGlzcGF0Y2hUb1Byb3BzKTtcblxudmFyIF9tYXBTdGF0ZVRvUHJvcHMg
PSByZXF1aXJlKCcuL21hcFN0YXRlVG9Qcm9wcycpO1xuXG52YXIgX21hcFN0YXRlVG9Qcm9wczIg
PSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9tYXBTdGF0ZVRvUHJvcHMpO1xuXG52YXIgX21lcmdl
UHJvcHMgPSByZXF1aXJlKCcuL21lcmdlUHJvcHMnKTtcblxudmFyIF9tZXJnZVByb3BzMiA9IF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQoX21lcmdlUHJvcHMpO1xuXG52YXIgX3NlbGVjdG9yRmFjdG9y
eSA9IHJlcXVpcmUoJy4vc2VsZWN0b3JGYWN0b3J5Jyk7XG5cbnZhciBfc2VsZWN0b3JGYWN0b3J5
MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NlbGVjdG9yRmFjdG9yeSk7XG5cbmZ1bmN0aW9u
IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1
bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0
UHJvcGVydGllcyhvYmosIGtleXMpIHsgdmFyIHRhcmdldCA9IHt9OyBmb3IgKHZhciBpIGluIG9i
aikgeyBpZiAoa2V5cy5pbmRleE9mKGkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90
b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGkpKSBjb250aW51ZTsgdGFyZ2V0W2ldID0g
b2JqW2ldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuLypcbiAgY29ubmVjdCBpcyBhIGZhY2FkZSBv
dmVyIGNvbm5lY3RBZHZhbmNlZC4gSXQgdHVybnMgaXRzIGFyZ3MgaW50byBhIGNvbXBhdGlibGVc
biAgc2VsZWN0b3JGYWN0b3J5LCB3aGljaCBoYXMgdGhlIHNpZ25hdHVyZTpcblxuICAgIChkaXNw
YXRjaCwgb3B0aW9ucykgPT4gKG5leHRTdGF0ZSwgbmV4dE93blByb3BzKSA9PiBuZXh0RmluYWxQ
cm9wc1xuICBcbiAgY29ubmVjdCBwYXNzZXMgaXRzIGFyZ3MgdG8gY29ubmVjdEFkdmFuY2VkIGFz
IG9wdGlvbnMsIHdoaWNoIHdpbGwgaW4gdHVybiBwYXNzIHRoZW0gdG9cbiAgc2VsZWN0b3JGYWN0
b3J5IGVhY2ggdGltZSBhIENvbm5lY3QgY29tcG9uZW50IGluc3RhbmNlIGlzIGluc3RhbnRpYXRl
ZCBvciBob3QgcmVsb2FkZWQuXG5cbiAgc2VsZWN0b3JGYWN0b3J5IHJldHVybnMgYSBmaW5hbCBw
cm9wcyBzZWxlY3RvciBmcm9tIGl0cyBtYXBTdGF0ZVRvUHJvcHMsXG4gIG1hcFN0YXRlVG9Qcm9w
c0ZhY3RvcmllcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHNGYWN0b3Jp
ZXMsIG1lcmdlUHJvcHMsXG4gIG1lcmdlUHJvcHNGYWN0b3JpZXMsIGFuZCBwdXJlIGFyZ3MuXG5c
biAgVGhlIHJlc3VsdGluZyBmaW5hbCBwcm9wcyBzZWxlY3RvciBpcyBjYWxsZWQgYnkgdGhlIENv
bm5lY3QgY29tcG9uZW50IGluc3RhbmNlIHdoZW5ldmVyXG4gIGl0IHJlY2VpdmVzIG5ldyBwcm9w
cyBvciBzdG9yZSBzdGF0ZS5cbiAqL1xuXG5mdW5jdGlvbiBtYXRjaChhcmcsIGZhY3Rvcmllcywg
bmFtZSkge1xuICBmb3IgKHZhciBpID0gZmFjdG9yaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0t
KSB7XG4gICAgdmFyIHJlc3VsdCA9IGZhY3Rvcmllc1tpXShhcmcpO1xuICAgIGlmIChyZXN1bHQp
IHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGRpc3BhdGNoLCBvcHRp
b25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIG9mIHR5cGUgJyArIHR5
cGVvZiBhcmcgKyAnIGZvciAnICsgbmFtZSArICcgYXJndW1lbnQgd2hlbiBjb25uZWN0aW5nIGNv
bXBvbmVudCAnICsgb3B0aW9ucy53cmFwcGVkQ29tcG9uZW50TmFtZSArICcuJyk7XG4gIH07XG59
XG5cbmZ1bmN0aW9uIHN0cmljdEVxdWFsKGEsIGIpIHtcbiAgcmV0dXJuIGEgPT09IGI7XG59XG5c
bi8vIGNyZWF0ZUNvbm5lY3Qgd2l0aCBkZWZhdWx0IGFyZ3MgYnVpbGRzIHRoZSAnb2ZmaWNpYWwn
IGNvbm5lY3QgYmVoYXZpb3IuIENhbGxpbmcgaXQgd2l0aFxuLy8gZGlmZmVyZW50IG9wdGlvbnMg
b3BlbnMgdXAgc29tZSB0ZXN0aW5nIGFuZCBleHRlbnNpYmlsaXR5IHNjZW5hcmlvc1xuZnVuY3Rp
b24gY3JlYXRlQ29ubmVjdCgpIHtcbiAgdmFyIF9yZWYgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAm
JiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9LFxuICAgICAg
X3JlZiRjb25uZWN0SE9DID0gX3JlZi5jb25uZWN0SE9DLFxuICAgICAgY29ubmVjdEhPQyA9IF9y
ZWYkY29ubmVjdEhPQyA9PT0gdW5kZWZpbmVkID8gX2Nvbm5lY3RBZHZhbmNlZDIuZGVmYXVsdCA6
IF9yZWYkY29ubmVjdEhPQyxcbiAgICAgIF9yZWYkbWFwU3RhdGVUb1Byb3BzRiA9IF9yZWYubWFw
U3RhdGVUb1Byb3BzRmFjdG9yaWVzLFxuICAgICAgbWFwU3RhdGVUb1Byb3BzRmFjdG9yaWVzID0g
X3JlZiRtYXBTdGF0ZVRvUHJvcHNGID09PSB1bmRlZmluZWQgPyBfbWFwU3RhdGVUb1Byb3BzMi5k
ZWZhdWx0IDogX3JlZiRtYXBTdGF0ZVRvUHJvcHNGLFxuICAgICAgX3JlZiRtYXBEaXNwYXRjaFRv
UHJvID0gX3JlZi5tYXBEaXNwYXRjaFRvUHJvcHNGYWN0b3JpZXMsXG4gICAgICBtYXBEaXNwYXRj
aFRvUHJvcHNGYWN0b3JpZXMgPSBfcmVmJG1hcERpc3BhdGNoVG9Qcm8gPT09IHVuZGVmaW5lZCA/
IF9tYXBEaXNwYXRjaFRvUHJvcHMyLmRlZmF1bHQgOiBfcmVmJG1hcERpc3BhdGNoVG9Qcm8sXG4g
ICAgICBfcmVmJG1lcmdlUHJvcHNGYWN0b3IgPSBfcmVmLm1lcmdlUHJvcHNGYWN0b3JpZXMsXG4g
ICAgICBtZXJnZVByb3BzRmFjdG9yaWVzID0gX3JlZiRtZXJnZVByb3BzRmFjdG9yID09PSB1bmRl
ZmluZWQgPyBfbWVyZ2VQcm9wczIuZGVmYXVsdCA6IF9yZWYkbWVyZ2VQcm9wc0ZhY3RvcixcbiAg
ICAgIF9yZWYkc2VsZWN0b3JGYWN0b3J5ID0gX3JlZi5zZWxlY3RvckZhY3RvcnksXG4gICAgICBz
ZWxlY3RvckZhY3RvcnkgPSBfcmVmJHNlbGVjdG9yRmFjdG9yeSA9PT0gdW5kZWZpbmVkID8gX3Nl
bGVjdG9yRmFjdG9yeTIuZGVmYXVsdCA6IF9yZWYkc2VsZWN0b3JGYWN0b3J5O1xuXG4gIHJldHVy
biBmdW5jdGlvbiBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBt
ZXJnZVByb3BzKSB7XG4gICAgdmFyIF9yZWYyID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJn
dW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiB7fSxcbiAgICAgICAgX3Jl
ZjIkcHVyZSA9IF9yZWYyLnB1cmUsXG4gICAgICAgIHB1cmUgPSBfcmVmMiRwdXJlID09PSB1bmRl
ZmluZWQgPyB0cnVlIDogX3JlZjIkcHVyZSxcbiAgICAgICAgX3JlZjIkYXJlU3RhdGVzRXF1YWwg
PSBfcmVmMi5hcmVTdGF0ZXNFcXVhbCxcbiAgICAgICAgYXJlU3RhdGVzRXF1YWwgPSBfcmVmMiRh
cmVTdGF0ZXNFcXVhbCA9PT0gdW5kZWZpbmVkID8gc3RyaWN0RXF1YWwgOiBfcmVmMiRhcmVTdGF0
ZXNFcXVhbCxcbiAgICAgICAgX3JlZjIkYXJlT3duUHJvcHNFcXVhID0gX3JlZjIuYXJlT3duUHJv
cHNFcXVhbCxcbiAgICAgICAgYXJlT3duUHJvcHNFcXVhbCA9IF9yZWYyJGFyZU93blByb3BzRXF1
YSA9PT0gdW5kZWZpbmVkID8gX3NoYWxsb3dFcXVhbDIuZGVmYXVsdCA6IF9yZWYyJGFyZU93blBy
b3BzRXF1YSxcbiAgICAgICAgX3JlZjIkYXJlU3RhdGVQcm9wc0VxID0gX3JlZjIuYXJlU3RhdGVQ
cm9wc0VxdWFsLFxuICAgICAgICBhcmVTdGF0ZVByb3BzRXF1YWwgPSBfcmVmMiRhcmVTdGF0ZVBy
b3BzRXEgPT09IHVuZGVmaW5lZCA/IF9zaGFsbG93RXF1YWwyLmRlZmF1bHQgOiBfcmVmMiRhcmVT
dGF0ZVByb3BzRXEsXG4gICAgICAgIF9yZWYyJGFyZU1lcmdlZFByb3BzRSA9IF9yZWYyLmFyZU1l
cmdlZFByb3BzRXF1YWwsXG4gICAgICAgIGFyZU1lcmdlZFByb3BzRXF1YWwgPSBfcmVmMiRhcmVN
ZXJnZWRQcm9wc0UgPT09IHVuZGVmaW5lZCA/IF9zaGFsbG93RXF1YWwyLmRlZmF1bHQgOiBfcmVm
MiRhcmVNZXJnZWRQcm9wc0UsXG4gICAgICAgIGV4dHJhT3B0aW9ucyA9IF9vYmplY3RXaXRob3V0
UHJvcGVydGllcyhfcmVmMiwgWydwdXJlJywgJ2FyZVN0YXRlc0VxdWFsJywgJ2FyZU93blByb3Bz
RXF1YWwnLCAnYXJlU3RhdGVQcm9wc0VxdWFsJywgJ2FyZU1lcmdlZFByb3BzRXF1YWwnXSk7XG5c
biAgICB2YXIgaW5pdE1hcFN0YXRlVG9Qcm9wcyA9IG1hdGNoKG1hcFN0YXRlVG9Qcm9wcywgbWFw
U3RhdGVUb1Byb3BzRmFjdG9yaWVzLCAnbWFwU3RhdGVUb1Byb3BzJyk7XG4gICAgdmFyIGluaXRN
YXBEaXNwYXRjaFRvUHJvcHMgPSBtYXRjaChtYXBEaXNwYXRjaFRvUHJvcHMsIG1hcERpc3BhdGNo
VG9Qcm9wc0ZhY3RvcmllcywgJ21hcERpc3BhdGNoVG9Qcm9wcycpO1xuICAgIHZhciBpbml0TWVy
Z2VQcm9wcyA9IG1hdGNoKG1lcmdlUHJvcHMsIG1lcmdlUHJvcHNGYWN0b3JpZXMsICdtZXJnZVBy
b3BzJyk7XG5cbiAgICByZXR1cm4gY29ubmVjdEhPQyhzZWxlY3RvckZhY3RvcnksIF9leHRlbmRz
KHtcbiAgICAgIC8vIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICAgIG1ldGhvZE5hbWU6ICdj
b25uZWN0JyxcblxuICAgICAgLy8gdXNlZCB0byBjb21wdXRlIENvbm5lY3QncyBkaXNwbGF5TmFt
ZSBmcm9tIHRoZSB3cmFwcGVkIGNvbXBvbmVudCdzIGRpc3BsYXlOYW1lLlxuICAgICAgZ2V0RGlz
cGxheU5hbWU6IGZ1bmN0aW9uIGdldERpc3BsYXlOYW1lKG5hbWUpIHtcbiAgICAgICAgcmV0dXJu
ICdDb25uZWN0KCcgKyBuYW1lICsgJyknO1xuICAgICAgfSxcblxuICAgICAgLy8gaWYgbWFwU3Rh
dGVUb1Byb3BzIGlzIGZhbHN5LCB0aGUgQ29ubmVjdCBjb21wb25lbnQgZG9lc24ndCBzdWJzY3Jp
YmUgdG8gc3RvcmUgc3RhdGUgY2hhbmdlc1xuICAgICAgc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2Vz
OiBCb29sZWFuKG1hcFN0YXRlVG9Qcm9wcyksXG5cbiAgICAgIC8vIHBhc3NlZCB0aHJvdWdoIHRv
IHNlbGVjdG9yRmFjdG9yeVxuICAgICAgaW5pdE1hcFN0YXRlVG9Qcm9wczogaW5pdE1hcFN0YXRl
VG9Qcm9wcyxcbiAgICAgIGluaXRNYXBEaXNwYXRjaFRvUHJvcHM6IGluaXRNYXBEaXNwYXRjaFRv
UHJvcHMsXG4gICAgICBpbml0TWVyZ2VQcm9wczogaW5pdE1lcmdlUHJvcHMsXG4gICAgICBwdXJl
OiBwdXJlLFxuICAgICAgYXJlU3RhdGVzRXF1YWw6IGFyZVN0YXRlc0VxdWFsLFxuICAgICAgYXJl
T3duUHJvcHNFcXVhbDogYXJlT3duUHJvcHNFcXVhbCxcbiAgICAgIGFyZVN0YXRlUHJvcHNFcXVh
bDogYXJlU3RhdGVQcm9wc0VxdWFsLFxuICAgICAgYXJlTWVyZ2VkUHJvcHNFcXVhbDogYXJlTWVy
Z2VkUHJvcHNFcXVhbFxuXG4gICAgfSwgZXh0cmFPcHRpb25zKSk7XG4gIH07XG59XG5cbmV4cG9y
dHMuZGVmYXVsdCA9IGNyZWF0ZUNvbm5lY3QoKTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC9jb25uZWN0
LmpzXG4gKiogbW9kdWxlIGlkID0gMTg4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIn
dXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLndoZW5N
YXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uID0gd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzRnVu
Y3Rpb247XG5leHBvcnRzLndoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc01pc3NpbmcgPSB3aGVuTWFw
RGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nO1xuZXhwb3J0cy53aGVuTWFwRGlzcGF0Y2hUb1Byb3Bz
SXNPYmplY3QgPSB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNPYmplY3Q7XG5cbnZhciBfcmVkdXgg
PSByZXF1aXJlKCdyZWR1eCcpO1xuXG52YXIgX3dyYXBNYXBUb1Byb3BzID0gcmVxdWlyZSgnLi93
cmFwTWFwVG9Qcm9wcycpO1xuXG5mdW5jdGlvbiB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5j
dGlvbihtYXBEaXNwYXRjaFRvUHJvcHMpIHtcbiAgcmV0dXJuIHR5cGVvZiBtYXBEaXNwYXRjaFRv
UHJvcHMgPT09ICdmdW5jdGlvbicgPyAoMCwgX3dyYXBNYXBUb1Byb3BzLndyYXBNYXBUb1Byb3Bz
RnVuYykobWFwRGlzcGF0Y2hUb1Byb3BzLCAnbWFwRGlzcGF0Y2hUb1Byb3BzJykgOiB1bmRlZmlu
ZWQ7XG59XG5cbmZ1bmN0aW9uIHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc01pc3NpbmcobWFwRGlz
cGF0Y2hUb1Byb3BzKSB7XG4gIHJldHVybiAhbWFwRGlzcGF0Y2hUb1Byb3BzID8gKDAsIF93cmFw
TWFwVG9Qcm9wcy53cmFwTWFwVG9Qcm9wc0NvbnN0YW50KShmdW5jdGlvbiAoZGlzcGF0Y2gpIHtc
biAgICByZXR1cm4geyBkaXNwYXRjaDogZGlzcGF0Y2ggfTtcbiAgfSkgOiB1bmRlZmluZWQ7XG59
XG5cbmZ1bmN0aW9uIHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc09iamVjdChtYXBEaXNwYXRjaFRv
UHJvcHMpIHtcbiAgcmV0dXJuIG1hcERpc3BhdGNoVG9Qcm9wcyAmJiB0eXBlb2YgbWFwRGlzcGF0
Y2hUb1Byb3BzID09PSAnb2JqZWN0JyA/ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRvUHJv
cHNDb25zdGFudCkoZnVuY3Rpb24gKGRpc3BhdGNoKSB7XG4gICAgcmV0dXJuICgwLCBfcmVkdXgu
YmluZEFjdGlvbkNyZWF0b3JzKShtYXBEaXNwYXRjaFRvUHJvcHMsIGRpc3BhdGNoKTtcbiAgfSkg
OiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydHMuZGVmYXVsdCA9IFt3aGVuTWFwRGlzcGF0Y2hUb1By
b3BzSXNGdW5jdGlvbiwgd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzTWlzc2luZywgd2hlbk1hcERp
c3BhdGNoVG9Qcm9wc0lzT2JqZWN0XTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC9tYXBEaXNwYXRjaFRv
UHJvcHMuanNcbiAqKiBtb2R1bGUgaWQgPSAxODlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMu
d2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb24gPSB3aGVuTWFwU3RhdGVUb1Byb3BzSXNGdW5j
dGlvbjtcbmV4cG9ydHMud2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZyA9IHdoZW5NYXBTdGF0
ZVRvUHJvcHNJc01pc3Npbmc7XG5cbnZhciBfd3JhcE1hcFRvUHJvcHMgPSByZXF1aXJlKCcuL3dy
YXBNYXBUb1Byb3BzJyk7XG5cbmZ1bmN0aW9uIHdoZW5NYXBTdGF0ZVRvUHJvcHNJc0Z1bmN0aW9u
KG1hcFN0YXRlVG9Qcm9wcykge1xuICByZXR1cm4gdHlwZW9mIG1hcFN0YXRlVG9Qcm9wcyA9PT0g
J2Z1bmN0aW9uJyA/ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRvUHJvcHNGdW5jKShtYXBT
dGF0ZVRvUHJvcHMsICdtYXBTdGF0ZVRvUHJvcHMnKSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rp
b24gd2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZyhtYXBTdGF0ZVRvUHJvcHMpIHtcbiAgcmV0
dXJuICFtYXBTdGF0ZVRvUHJvcHMgPyAoMCwgX3dyYXBNYXBUb1Byb3BzLndyYXBNYXBUb1Byb3Bz
Q29uc3RhbnQpKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge307XG4gIH0pIDogdW5kZWZpbmVk
O1xufVxuXG5leHBvcnRzLmRlZmF1bHQgPSBbd2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb24s
IHdoZW5NYXBTdGF0ZVRvUHJvcHNJc01pc3NpbmddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxu
ICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0L21hcFN0
YXRlVG9Qcm9wcy5qc1xuICoqIG1vZHVsZSBpZCA9IDE5MFxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52
YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2
YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3Vt
ZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtr
ZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG5leHBvcnRzLmRlZmF1bHRNZXJnZVByb3Bz
ID0gZGVmYXVsdE1lcmdlUHJvcHM7XG5leHBvcnRzLndyYXBNZXJnZVByb3BzRnVuYyA9IHdyYXBN
ZXJnZVByb3BzRnVuYztcbmV4cG9ydHMud2hlbk1lcmdlUHJvcHNJc0Z1bmN0aW9uID0gd2hlbk1l
cmdlUHJvcHNJc0Z1bmN0aW9uO1xuZXhwb3J0cy53aGVuTWVyZ2VQcm9wc0lzT21pdHRlZCA9IHdo
ZW5NZXJnZVByb3BzSXNPbWl0dGVkO1xuXG52YXIgX3ZlcmlmeVBsYWluT2JqZWN0ID0gcmVxdWly
ZSgnLi4vdXRpbHMvdmVyaWZ5UGxhaW5PYmplY3QnKTtcblxudmFyIF92ZXJpZnlQbGFpbk9iamVj
dDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92ZXJpZnlQbGFpbk9iamVjdCk7XG5cbmZ1bmN0
aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNN
b2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGRlZmF1bHRNZXJn
ZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKSB7XG4gIHJldHVybiBf
ZXh0ZW5kcyh7fSwgb3duUHJvcHMsIHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMpO1xufVxuXG5m
dW5jdGlvbiB3cmFwTWVyZ2VQcm9wc0Z1bmMobWVyZ2VQcm9wcykge1xuICByZXR1cm4gZnVuY3Rp
b24gaW5pdE1lcmdlUHJvcHNQcm94eShkaXNwYXRjaCwgX3JlZikge1xuICAgIHZhciBkaXNwbGF5
TmFtZSA9IF9yZWYuZGlzcGxheU5hbWUsXG4gICAgICAgIHB1cmUgPSBfcmVmLnB1cmUsXG4gICAg
ICAgIGFyZU1lcmdlZFByb3BzRXF1YWwgPSBfcmVmLmFyZU1lcmdlZFByb3BzRXF1YWw7XG5cbiAg
ICB2YXIgaGFzUnVuT25jZSA9IGZhbHNlO1xuICAgIHZhciBtZXJnZWRQcm9wcyA9IHZvaWQgMDtc
blxuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZVByb3BzUHJveHkoc3RhdGVQcm9wcywgZGlzcGF0
Y2hQcm9wcywgb3duUHJvcHMpIHtcbiAgICAgIHZhciBuZXh0TWVyZ2VkUHJvcHMgPSBtZXJnZVBy
b3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcblxuICAgICAgaWYgKGhh
c1J1bk9uY2UpIHtcbiAgICAgICAgaWYgKCFwdXJlIHx8ICFhcmVNZXJnZWRQcm9wc0VxdWFsKG5l
eHRNZXJnZWRQcm9wcywgbWVyZ2VkUHJvcHMpKSBtZXJnZWRQcm9wcyA9IG5leHRNZXJnZWRQcm9w
cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhc1J1bk9uY2UgPSB0cnVlO1xuICAgICAgICBt
ZXJnZWRQcm9wcyA9IG5leHRNZXJnZWRQcm9wcztcblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgKDAsIF92ZXJpZnlQbGFpbk9iamVjdDIuZGVmYXVs
dCkobWVyZ2VkUHJvcHMsIGRpc3BsYXlOYW1lLCAnbWVyZ2VQcm9wcycpO1xuICAgICAgfVxuXG4g
ICAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4gICAgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gd2hl
bk1lcmdlUHJvcHNJc0Z1bmN0aW9uKG1lcmdlUHJvcHMpIHtcbiAgcmV0dXJuIHR5cGVvZiBtZXJn
ZVByb3BzID09PSAnZnVuY3Rpb24nID8gd3JhcE1lcmdlUHJvcHNGdW5jKG1lcmdlUHJvcHMpIDog
dW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB3aGVuTWVyZ2VQcm9wc0lzT21pdHRlZChtZXJnZVBy
b3BzKSB7XG4gIHJldHVybiAhbWVyZ2VQcm9wcyA/IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4g
ZGVmYXVsdE1lcmdlUHJvcHM7XG4gIH0gOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydHMuZGVmYXVs
dCA9IFt3aGVuTWVyZ2VQcm9wc0lzRnVuY3Rpb24sIHdoZW5NZXJnZVByb3BzSXNPbWl0dGVkXTtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1yZWR1eC9saWIvY29ubmVjdC9tZXJnZVByb3BzLmpzXG4gKiogbW9kdWxlIGlkID0gMTkxXG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19l
c01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmltcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3Rvcnkg
PSBpbXB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5O1xuZXhwb3J0cy5wdXJlRmluYWxQcm9w
c1NlbGVjdG9yRmFjdG9yeSA9IHB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5O1xuZXhwb3J0
cy5kZWZhdWx0ID0gZmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeTtcblxudmFyIF92ZXJpZnlTdWJz
ZWxlY3RvcnMgPSByZXF1aXJlKCcuL3ZlcmlmeVN1YnNlbGVjdG9ycycpO1xuXG52YXIgX3Zlcmlm
eVN1YnNlbGVjdG9yczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92ZXJpZnlTdWJzZWxlY3Rv
cnMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2Jq
ICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlv
biBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMob2JqLCBrZXlzKSB7IHZhciB0YXJnZXQgPSB7fTsg
Zm9yICh2YXIgaSBpbiBvYmopIHsgaWYgKGtleXMuaW5kZXhPZihpKSA+PSAwKSBjb250aW51ZTsg
aWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBpKSkgY29udGlu
dWU7IHRhcmdldFtpXSA9IG9ialtpXTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIGlt
cHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRj
aFRvUHJvcHMsIG1lcmdlUHJvcHMsIGRpc3BhdGNoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBpbXB1
cmVGaW5hbFByb3BzU2VsZWN0b3Ioc3RhdGUsIG93blByb3BzKSB7XG4gICAgcmV0dXJuIG1lcmdl
UHJvcHMobWFwU3RhdGVUb1Byb3BzKHN0YXRlLCBvd25Qcm9wcyksIG1hcERpc3BhdGNoVG9Qcm9w
cyhkaXNwYXRjaCwgb3duUHJvcHMpLCBvd25Qcm9wcyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHB1
cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5KG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hU
b1Byb3BzLCBtZXJnZVByb3BzLCBkaXNwYXRjaCwgX3JlZikge1xuICB2YXIgYXJlU3RhdGVzRXF1
YWwgPSBfcmVmLmFyZVN0YXRlc0VxdWFsLFxuICAgICAgYXJlT3duUHJvcHNFcXVhbCA9IF9yZWYu
YXJlT3duUHJvcHNFcXVhbCxcbiAgICAgIGFyZVN0YXRlUHJvcHNFcXVhbCA9IF9yZWYuYXJlU3Rh
dGVQcm9wc0VxdWFsO1xuXG4gIHZhciBoYXNSdW5BdExlYXN0T25jZSA9IGZhbHNlO1xuICB2YXIg
c3RhdGUgPSB2b2lkIDA7XG4gIHZhciBvd25Qcm9wcyA9IHZvaWQgMDtcbiAgdmFyIHN0YXRlUHJv
cHMgPSB2b2lkIDA7XG4gIHZhciBkaXNwYXRjaFByb3BzID0gdm9pZCAwO1xuICB2YXIgbWVyZ2Vk
UHJvcHMgPSB2b2lkIDA7XG5cbiAgZnVuY3Rpb24gaGFuZGxlRmlyc3RDYWxsKGZpcnN0U3RhdGUs
IGZpcnN0T3duUHJvcHMpIHtcbiAgICBzdGF0ZSA9IGZpcnN0U3RhdGU7XG4gICAgb3duUHJvcHMg
PSBmaXJzdE93blByb3BzO1xuICAgIHN0YXRlUHJvcHMgPSBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUs
IG93blByb3BzKTtcbiAgICBkaXNwYXRjaFByb3BzID0gbWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3Bh
dGNoLCBvd25Qcm9wcyk7XG4gICAgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMs
IGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcbiAgICBoYXNSdW5BdExlYXN0T25jZSA9IHRydWU7
XG4gICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlTmV3UHJv
cHNBbmROZXdTdGF0ZSgpIHtcbiAgICBzdGF0ZVByb3BzID0gbWFwU3RhdGVUb1Byb3BzKHN0YXRl
LCBvd25Qcm9wcyk7XG5cbiAgICBpZiAobWFwRGlzcGF0Y2hUb1Byb3BzLmRlcGVuZHNPbk93blBy
b3BzKSBkaXNwYXRjaFByb3BzID0gbWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvd25Qcm9w
cyk7XG5cbiAgICBtZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQ
cm9wcywgb3duUHJvcHMpO1xuICAgIHJldHVybiBtZXJnZWRQcm9wcztcbiAgfVxuXG4gIGZ1bmN0
aW9uIGhhbmRsZU5ld1Byb3BzKCkge1xuICAgIGlmIChtYXBTdGF0ZVRvUHJvcHMuZGVwZW5kc09u
T3duUHJvcHMpIHN0YXRlUHJvcHMgPSBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtc
blxuICAgIGlmIChtYXBEaXNwYXRjaFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMpIGRpc3BhdGNo
UHJvcHMgPSBtYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG93blByb3BzKTtcblxuICAgIG1l
cmdlZFByb3BzID0gbWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzLCBvd25Qcm9w
cyk7XG4gICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlTmV3
U3RhdGUoKSB7XG4gICAgdmFyIG5leHRTdGF0ZVByb3BzID0gbWFwU3RhdGVUb1Byb3BzKHN0YXRl
LCBvd25Qcm9wcyk7XG4gICAgdmFyIHN0YXRlUHJvcHNDaGFuZ2VkID0gIWFyZVN0YXRlUHJvcHNF
cXVhbChuZXh0U3RhdGVQcm9wcywgc3RhdGVQcm9wcyk7XG4gICAgc3RhdGVQcm9wcyA9IG5leHRT
dGF0ZVByb3BzO1xuXG4gICAgaWYgKHN0YXRlUHJvcHNDaGFuZ2VkKSBtZXJnZWRQcm9wcyA9IG1l
cmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuXG4gICAgcmV0
dXJuIG1lcmdlZFByb3BzO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlU3Vic2VxdWVudENhbGxz
KG5leHRTdGF0ZSwgbmV4dE93blByb3BzKSB7XG4gICAgdmFyIHByb3BzQ2hhbmdlZCA9ICFhcmVP
d25Qcm9wc0VxdWFsKG5leHRPd25Qcm9wcywgb3duUHJvcHMpO1xuICAgIHZhciBzdGF0ZUNoYW5n
ZWQgPSAhYXJlU3RhdGVzRXF1YWwobmV4dFN0YXRlLCBzdGF0ZSk7XG4gICAgc3RhdGUgPSBuZXh0
U3RhdGU7XG4gICAgb3duUHJvcHMgPSBuZXh0T3duUHJvcHM7XG5cbiAgICBpZiAocHJvcHNDaGFu
Z2VkICYmIHN0YXRlQ2hhbmdlZCkgcmV0dXJuIGhhbmRsZU5ld1Byb3BzQW5kTmV3U3RhdGUoKTtc
biAgICBpZiAocHJvcHNDaGFuZ2VkKSByZXR1cm4gaGFuZGxlTmV3UHJvcHMoKTtcbiAgICBpZiAo
c3RhdGVDaGFuZ2VkKSByZXR1cm4gaGFuZGxlTmV3U3RhdGUoKTtcbiAgICByZXR1cm4gbWVyZ2Vk
UHJvcHM7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gcHVyZUZpbmFsUHJvcHNTZWxlY3Rvcihu
ZXh0U3RhdGUsIG5leHRPd25Qcm9wcykge1xuICAgIHJldHVybiBoYXNSdW5BdExlYXN0T25jZSA/
IGhhbmRsZVN1YnNlcXVlbnRDYWxscyhuZXh0U3RhdGUsIG5leHRPd25Qcm9wcykgOiBoYW5kbGVG
aXJzdENhbGwobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpO1xuICB9O1xufVxuXG4vLyBUT0RPOiBB
ZGQgbW9yZSBjb21tZW50c1xuXG4vLyBJZiBwdXJlIGlzIHRydWUsIHRoZSBzZWxlY3RvciByZXR1
cm5lZCBieSBzZWxlY3RvckZhY3Rvcnkgd2lsbCBtZW1vaXplIGl0cyByZXN1bHRzLFxuLy8gYWxs
b3dpbmcgY29ubmVjdEFkdmFuY2VkJ3Mgc2hvdWxkQ29tcG9uZW50VXBkYXRlIHRvIHJldHVybiBm
YWxzZSBpZiBmaW5hbFxuLy8gcHJvcHMgaGF2ZSBub3QgY2hhbmdlZC4gSWYgZmFsc2UsIHRoZSBz
ZWxlY3RvciB3aWxsIGFsd2F5cyByZXR1cm4gYSBuZXdcbi8vIG9iamVjdCBhbmQgc2hvdWxkQ29t
cG9uZW50VXBkYXRlIHdpbGwgYWx3YXlzIHJldHVybiB0cnVlLlxuXG5mdW5jdGlvbiBmaW5hbFBy
b3BzU2VsZWN0b3JGYWN0b3J5KGRpc3BhdGNoLCBfcmVmMikge1xuICB2YXIgaW5pdE1hcFN0YXRl
VG9Qcm9wcyA9IF9yZWYyLmluaXRNYXBTdGF0ZVRvUHJvcHMsXG4gICAgICBpbml0TWFwRGlzcGF0
Y2hUb1Byb3BzID0gX3JlZjIuaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyxcbiAgICAgIGluaXRNZXJn
ZVByb3BzID0gX3JlZjIuaW5pdE1lcmdlUHJvcHMsXG4gICAgICBvcHRpb25zID0gX29iamVjdFdp
dGhvdXRQcm9wZXJ0aWVzKF9yZWYyLCBbJ2luaXRNYXBTdGF0ZVRvUHJvcHMnLCAnaW5pdE1hcERp
c3BhdGNoVG9Qcm9wcycsICdpbml0TWVyZ2VQcm9wcyddKTtcblxuICB2YXIgbWFwU3RhdGVUb1By
b3BzID0gaW5pdE1hcFN0YXRlVG9Qcm9wcyhkaXNwYXRjaCwgb3B0aW9ucyk7XG4gIHZhciBtYXBE
aXNwYXRjaFRvUHJvcHMgPSBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvcHRpb25z
KTtcbiAgdmFyIG1lcmdlUHJvcHMgPSBpbml0TWVyZ2VQcm9wcyhkaXNwYXRjaCwgb3B0aW9ucyk7
XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAo
MCwgX3ZlcmlmeVN1YnNlbGVjdG9yczIuZGVmYXVsdCkobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNw
YXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMsIG9wdGlvbnMuZGlzcGxheU5hbWUpO1xuICB9XG5cbiAg
dmFyIHNlbGVjdG9yRmFjdG9yeSA9IG9wdGlvbnMucHVyZSA/IHB1cmVGaW5hbFByb3BzU2VsZWN0
b3JGYWN0b3J5IDogaW1wdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeTtcblxuICByZXR1cm4g
c2VsZWN0b3JGYWN0b3J5KG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJn
ZVByb3BzLCBkaXNwYXRjaCwgb3B0aW9ucyk7XG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtcmVkdXgvbGliL2Nvbm5lY3Qvc2VsZWN0
b3JGYWN0b3J5LmpzXG4gKiogbW9kdWxlIGlkID0gMTkyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBv
cnRzLmRlZmF1bHQgPSB2ZXJpZnlTdWJzZWxlY3RvcnM7XG5cbnZhciBfd2FybmluZyA9IHJlcXVp
cmUoJy4uL3V0aWxzL3dhcm5pbmcnKTtcblxudmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWly
ZURlZmF1bHQoX3dhcm5pbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9i
aikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmog
fTsgfVxuXG5mdW5jdGlvbiB2ZXJpZnkoc2VsZWN0b3IsIG1ldGhvZE5hbWUsIGRpc3BsYXlOYW1l
KSB7XG4gIGlmICghc2VsZWN0b3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQg
dmFsdWUgZm9yICcgKyBtZXRob2ROYW1lICsgJyBpbiAnICsgZGlzcGxheU5hbWUgKyAnLicpO1xu
ICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICdtYXBTdGF0ZVRvUHJvcHMnIHx8IG1ldGhvZE5h
bWUgPT09ICdtYXBEaXNwYXRjaFRvUHJvcHMnKSB7XG4gICAgaWYgKCFzZWxlY3Rvci5oYXNPd25Q
cm9wZXJ0eSgnZGVwZW5kc09uT3duUHJvcHMnKSkge1xuICAgICAgKDAsIF93YXJuaW5nMi5kZWZh
dWx0KSgnVGhlIHNlbGVjdG9yIGZvciAnICsgbWV0aG9kTmFtZSArICcgb2YgJyArIGRpc3BsYXlO
YW1lICsgJyBkaWQgbm90IHNwZWNpZnkgYSB2YWx1ZSBmb3IgZGVwZW5kc09uT3duUHJvcHMuJyk7
XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVN1YnNlbGVjdG9ycyhtYXBTdGF0ZVRv
UHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcywgZGlzcGxheU5hbWUpIHtcbiAg
dmVyaWZ5KG1hcFN0YXRlVG9Qcm9wcywgJ21hcFN0YXRlVG9Qcm9wcycsIGRpc3BsYXlOYW1lKTtc
biAgdmVyaWZ5KG1hcERpc3BhdGNoVG9Qcm9wcywgJ21hcERpc3BhdGNoVG9Qcm9wcycsIGRpc3Bs
YXlOYW1lKTtcbiAgdmVyaWZ5KG1lcmdlUHJvcHMsICdtZXJnZVByb3BzJywgZGlzcGxheU5hbWUp
O1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0L3ZlcmlmeVN1YnNlbGVjdG9ycy5qc1xuICoqIG1vZHVs
ZSBpZCA9IDE5M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7
XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVj
ayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25z
dHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMg
YSBmdW5jdGlvblwiKTsgfSB9XG5cbi8vIGVuY2Fwc3VsYXRlcyB0aGUgc3Vic2NyaXB0aW9uIGxv
Z2ljIGZvciBjb25uZWN0aW5nIGEgY29tcG9uZW50IHRvIHRoZSByZWR1eCBzdG9yZSwgYXNcbi8v
IHdlbGwgYXMgbmVzdGluZyBzdWJzY3JpcHRpb25zIG9mIGRlc2NlbmRhbnQgY29tcG9uZW50cywg
c28gdGhhdCB3ZSBjYW4gZW5zdXJlIHRoZVxuLy8gYW5jZXN0b3IgY29tcG9uZW50cyByZS1yZW5k
ZXIgYmVmb3JlIGRlc2NlbmRhbnRzXG5cbnZhciBDTEVBUkVEID0gbnVsbDtcbnZhciBudWxsTGlz
dGVuZXJzID0ge1xuICBub3RpZnk6IGZ1bmN0aW9uIG5vdGlmeSgpIHt9XG59O1xuXG5mdW5jdGlv
biBjcmVhdGVMaXN0ZW5lckNvbGxlY3Rpb24oKSB7XG4gIC8vIHRoZSBjdXJyZW50L25leHQgcGF0
dGVybiBpcyBjb3BpZWQgZnJvbSByZWR1eCdzIGNyZWF0ZVN0b3JlIGNvZGUuXG4gIC8vIFRPRE86
IHJlZmFjdG9yK2V4cG9zZSB0aGF0IGNvZGUgdG8gYmUgcmV1c2FibGUgaGVyZT9cbiAgdmFyIGN1
cnJlbnQgPSBbXTtcbiAgdmFyIG5leHQgPSBbXTtcblxuICByZXR1cm4ge1xuICAgIGNsZWFyOiBm
dW5jdGlvbiBjbGVhcigpIHtcbiAgICAgIG5leHQgPSBDTEVBUkVEO1xuICAgICAgY3VycmVudCA9
IENMRUFSRUQ7XG4gICAgfSxcbiAgICBub3RpZnk6IGZ1bmN0aW9uIG5vdGlmeSgpIHtcbiAgICAg
IHZhciBsaXN0ZW5lcnMgPSBjdXJyZW50ID0gbmV4dDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxpc3RlbmVyc1tpXSgpO1xuICAg
ICAgfVxuICAgIH0sXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gbmV4
dDtcbiAgICB9LFxuICAgIHN1YnNjcmliZTogZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7
XG4gICAgICB2YXIgaXNTdWJzY3JpYmVkID0gdHJ1ZTtcbiAgICAgIGlmIChuZXh0ID09PSBjdXJy
ZW50KSBuZXh0ID0gY3VycmVudC5zbGljZSgpO1xuICAgICAgbmV4dC5wdXNoKGxpc3RlbmVyKTtc
blxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgICAgICBpZiAoIWlz
U3Vic2NyaWJlZCB8fCBjdXJyZW50ID09PSBDTEVBUkVEKSByZXR1cm47XG4gICAgICAgIGlzU3Vi
c2NyaWJlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChuZXh0ID09PSBjdXJyZW50KSBuZXh0ID0g
Y3VycmVudC5zbGljZSgpO1xuICAgICAgICBuZXh0LnNwbGljZShuZXh0LmluZGV4T2YobGlzdGVu
ZXIpLCAxKTtcbiAgICAgIH07XG4gICAgfVxuICB9O1xufVxuXG52YXIgU3Vic2NyaXB0aW9uID0g
ZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTdWJzY3JpcHRpb24oc3RvcmUsIHBhcmVudFN1Yiwg
b25TdGF0ZUNoYW5nZSkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdWJzY3JpcHRpb24p
O1xuXG4gICAgdGhpcy5zdG9yZSA9IHN0b3JlO1xuICAgIHRoaXMucGFyZW50U3ViID0gcGFyZW50
U3ViO1xuICAgIHRoaXMub25TdGF0ZUNoYW5nZSA9IG9uU3RhdGVDaGFuZ2U7XG4gICAgdGhpcy51
bnN1YnNjcmliZSA9IG51bGw7XG4gICAgdGhpcy5saXN0ZW5lcnMgPSBudWxsTGlzdGVuZXJzO1xu
ICB9XG5cbiAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5hZGROZXN0ZWRTdWIgPSBmdW5jdGlvbiBh
ZGROZXN0ZWRTdWIobGlzdGVuZXIpIHtcbiAgICB0aGlzLnRyeVN1YnNjcmliZSgpO1xuICAgIHJl
dHVybiB0aGlzLmxpc3RlbmVycy5zdWJzY3JpYmUobGlzdGVuZXIpO1xuICB9O1xuXG4gIFN1YnNj
cmlwdGlvbi5wcm90b3R5cGUubm90aWZ5TmVzdGVkU3VicyA9IGZ1bmN0aW9uIG5vdGlmeU5lc3Rl
ZFN1YnMoKSB7XG4gICAgdGhpcy5saXN0ZW5lcnMubm90aWZ5KCk7XG4gIH07XG5cbiAgU3Vic2Ny
aXB0aW9uLnByb3RvdHlwZS5pc1N1YnNjcmliZWQgPSBmdW5jdGlvbiBpc1N1YnNjcmliZWQoKSB7
XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy51bnN1YnNjcmliZSk7XG4gIH07XG5cbiAgU3Vic2Ny
aXB0aW9uLnByb3RvdHlwZS50cnlTdWJzY3JpYmUgPSBmdW5jdGlvbiB0cnlTdWJzY3JpYmUoKSB7
XG4gICAgaWYgKCF0aGlzLnVuc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlID0g
dGhpcy5wYXJlbnRTdWIgPyB0aGlzLnBhcmVudFN1Yi5hZGROZXN0ZWRTdWIodGhpcy5vblN0YXRl
Q2hhbmdlKSA6IHRoaXMuc3RvcmUuc3Vic2NyaWJlKHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAg
ICAgIHRoaXMubGlzdGVuZXJzID0gY3JlYXRlTGlzdGVuZXJDb2xsZWN0aW9uKCk7XG4gICAgfVxu
ICB9O1xuXG4gIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUudHJ5VW5zdWJzY3JpYmUgPSBmdW5jdGlv
biB0cnlVbnN1YnNjcmliZSgpIHtcbiAgICBpZiAodGhpcy51bnN1YnNjcmliZSkge1xuICAgICAg
dGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy51bnN1YnNjcmliZSA9IG51bGw7XG4gICAg
ICB0aGlzLmxpc3RlbmVycy5jbGVhcigpO1xuICAgICAgdGhpcy5saXN0ZW5lcnMgPSBudWxsTGlz
dGVuZXJzO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gU3Vic2NyaXB0aW9uO1xufSgpO1xuXG5l
eHBvcnRzLmRlZmF1bHQgPSBTdWJzY3JpcHRpb247XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtcmVkdXgvbGliL3V0aWxzL1N1YnNjcmlw
dGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE5NFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5k
ZWZhdWx0ID0gc2hhbGxvd0VxdWFsO1xudmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgaWYgKHggPT09IHkpIHtcbiAg
ICByZXR1cm4geCAhPT0gMCB8fCB5ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTtcbiAgfSBlbHNl
IHtcbiAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5O1xuICB9XG59XG5cbmZ1bmN0aW9uIHNo
YWxsb3dFcXVhbChvYmpBLCBvYmpCKSB7XG4gIGlmIChpcyhvYmpBLCBvYmpCKSkgcmV0dXJuIHRy
dWU7XG5cbiAgaWYgKHR5cGVvZiBvYmpBICE9PSAnb2JqZWN0JyB8fCBvYmpBID09PSBudWxsIHx8
IHR5cGVvZiBvYmpCICE9PSAnb2JqZWN0JyB8fCBvYmpCID09PSBudWxsKSB7XG4gICAgcmV0dXJu
IGZhbHNlO1xuICB9XG5cbiAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMob2JqQSk7XG4gIHZhciBr
ZXlzQiA9IE9iamVjdC5rZXlzKG9iakIpO1xuXG4gIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNC
Lmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5c0EubGVu
Z3RoOyBpKyspIHtcbiAgICBpZiAoIWhhc093bi5jYWxsKG9iakIsIGtleXNBW2ldKSB8fCAhaXMo
b2JqQVtrZXlzQVtpXV0sIG9iakJba2V5c0FbaV1dKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xu
ICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxu
ICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXJlZHV4L2xpYi91dGlscy9zaGFsbG93
RXF1YWwuanNcbiAqKiBtb2R1bGUgaWQgPSAxOTVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIi8vIEByZW1vdmUtb24tZWplY3QtYmVnaW5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE1
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqL1xuLy8gQHJlbW92ZS1vbi1lamVjdC1lbmRcblxuaWYgKHR5cGVvZiBQcm9taXNlID09PSAn
dW5kZWZpbmVkJykge1xuICAvLyBSZWplY3Rpb24gdHJhY2tpbmcgcHJldmVudHMgYSBjb21tb24g
aXNzdWUgd2hlcmUgUmVhY3QgZ2V0cyBpbnRvIGFuXG4gIC8vIGluY29uc2lzdGVudCBzdGF0ZSBk
dWUgdG8gYW4gZXJyb3IsIGJ1dCBpdCBnZXRzIHN3YWxsb3dlZCBieSBhIFByb21pc2UsXG4gIC8v
IGFuZCB0aGUgdXNlciBoYXMgbm8gaWRlYSB3aGF0IGNhdXNlcyBSZWFjdCdzIGVycmF0aWMgZnV0
dXJlIGJlaGF2aW9yLlxuICByZXF1aXJlKCdwcm9taXNlL2xpYi9yZWplY3Rpb24tdHJhY2tpbmcn
KS5lbmFibGUoKTtcbiAgd2luZG93LlByb21pc2UgPSByZXF1aXJlKCdwcm9taXNlL2xpYi9lczYt
ZXh0ZW5zaW9ucy5qcycpO1xufVxuXG4vLyBmZXRjaCgpIHBvbHlmaWxsIGZvciBtYWtpbmcgQVBJ
IGNhbGxzLlxucmVxdWlyZSgnd2hhdHdnLWZldGNoJyk7XG5cbi8vIE9iamVjdC5hc3NpZ24oKSBp
cyBjb21tb25seSB1c2VkIHdpdGggUmVhY3QuXG4vLyBJdCB3aWxsIHVzZSB0aGUgbmF0aXZlIGlt
cGxlbWVudGF0aW9uIGlmIGl0J3MgcHJlc2VudCBhbmQgaXNuJ3QgYnVnZ3kuXG5PYmplY3QuYXNz
aWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qtc2NyaXB0cy9jb25maWcvcG9seWZp
bGxzLmpzXG4gKiogbW9kdWxlIGlkID0gMTk2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCJcInVzZSBzdHJpY3RcIjtcblxuLy8gVXNlIHRoZSBmYXN0ZXN0IG1lYW5zIHBvc3NpYmxlIHRv
IGV4ZWN1dGUgYSB0YXNrIGluIGl0cyBvd24gdHVybiwgd2l0aFxuLy8gcHJpb3JpdHkgb3ZlciBv
dGhlciBldmVudHMgaW5jbHVkaW5nIElPLCBhbmltYXRpb24sIHJlZmxvdywgYW5kIHJlZHJhd1xu
Ly8gZXZlbnRzIGluIGJyb3dzZXJzLlxuLy9cbi8vIEFuIGV4Y2VwdGlvbiB0aHJvd24gYnkgYSB0
YXNrIHdpbGwgcGVybWFuZW50bHkgaW50ZXJydXB0IHRoZSBwcm9jZXNzaW5nIG9mXG4vLyBzdWJz
ZXF1ZW50IHRhc2tzLiBUaGUgaGlnaGVyIGxldmVsIGBhc2FwYCBmdW5jdGlvbiBlbnN1cmVzIHRo
YXQgaWYgYW5cbi8vIGV4Y2VwdGlvbiBpcyB0aHJvd24gYnkgYSB0YXNrLCB0aGF0IHRoZSB0YXNr
IHF1ZXVlIHdpbGwgY29udGludWUgZmx1c2hpbmcgYXNcbi8vIHNvb24gYXMgcG9zc2libGUsIGJ1
dCBpZiB5b3UgdXNlIGByYXdBc2FwYCBkaXJlY3RseSwgeW91IGFyZSByZXNwb25zaWJsZSB0b1xu
Ly8gZWl0aGVyIGVuc3VyZSB0aGF0IG5vIGV4Y2VwdGlvbnMgYXJlIHRocm93biBmcm9tIHlvdXIg
dGFzaywgb3IgdG8gbWFudWFsbHlcbi8vIGNhbGwgYHJhd0FzYXAucmVxdWVzdEZsdXNoYCBpZiBh
biBleGNlcHRpb24gaXMgdGhyb3duLlxubW9kdWxlLmV4cG9ydHMgPSByYXdBc2FwO1xuZnVuY3Rp
b24gcmF3QXNhcCh0YXNrKSB7XG4gICAgaWYgKCFxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcmVx
dWVzdEZsdXNoKCk7XG4gICAgICAgIGZsdXNoaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgLy8gRXF1
aXZhbGVudCB0byBwdXNoLCBidXQgYXZvaWRzIGEgZnVuY3Rpb24gY2FsbC5cbiAgICBxdWV1ZVtx
dWV1ZS5sZW5ndGhdID0gdGFzaztcbn1cblxudmFyIHF1ZXVlID0gW107XG4vLyBPbmNlIGEgZmx1
c2ggaGFzIGJlZW4gcmVxdWVzdGVkLCBubyBmdXJ0aGVyIGNhbGxzIHRvIGByZXF1ZXN0Rmx1c2hg
IGFyZVxuLy8gbmVjZXNzYXJ5IHVudGlsIHRoZSBuZXh0IGBmbHVzaGAgY29tcGxldGVzLlxudmFy
IGZsdXNoaW5nID0gZmFsc2U7XG4vLyBgcmVxdWVzdEZsdXNoYCBpcyBhbiBpbXBsZW1lbnRhdGlv
bi1zcGVjaWZpYyBtZXRob2QgdGhhdCBhdHRlbXB0cyB0byBraWNrXG4vLyBvZmYgYSBgZmx1c2hg
IGV2ZW50IGFzIHF1aWNrbHkgYXMgcG9zc2libGUuIGBmbHVzaGAgd2lsbCBhdHRlbXB0IHRvIGV4
aGF1c3Rcbi8vIHRoZSBldmVudCBxdWV1ZSBiZWZvcmUgeWllbGRpbmcgdG8gdGhlIGJyb3dzZXIn
cyBvd24gZXZlbnQgbG9vcC5cbnZhciByZXF1ZXN0Rmx1c2g7XG4vLyBUaGUgcG9zaXRpb24gb2Yg
dGhlIG5leHQgdGFzayB0byBleGVjdXRlIGluIHRoZSB0YXNrIHF1ZXVlLiBUaGlzIGlzXG4vLyBw
cmVzZXJ2ZWQgYmV0d2VlbiBjYWxscyB0byBgZmx1c2hgIHNvIHRoYXQgaXQgY2FuIGJlIHJlc3Vt
ZWQgaWZcbi8vIGEgdGFzayB0aHJvd3MgYW4gZXhjZXB0aW9uLlxudmFyIGluZGV4ID0gMDtcbi8v
IElmIGEgdGFzayBzY2hlZHVsZXMgYWRkaXRpb25hbCB0YXNrcyByZWN1cnNpdmVseSwgdGhlIHRh
c2sgcXVldWUgY2FuIGdyb3dcbi8vIHVuYm91bmRlZC4gVG8gcHJldmVudCBtZW1vcnkgZXhoYXVz
dGlvbiwgdGhlIHRhc2sgcXVldWUgd2lsbCBwZXJpb2RpY2FsbHlcbi8vIHRydW5jYXRlIGFscmVh
ZHktY29tcGxldGVkIHRhc2tzLlxudmFyIGNhcGFjaXR5ID0gMTAyNDtcblxuLy8gVGhlIGZsdXNo
IGZ1bmN0aW9uIHByb2Nlc3NlcyBhbGwgdGFza3MgdGhhdCBoYXZlIGJlZW4gc2NoZWR1bGVkIHdp
dGhcbi8vIGByYXdBc2FwYCB1bmxlc3MgYW5kIHVudGlsIG9uZSBvZiB0aG9zZSB0YXNrcyB0aHJv
d3MgYW4gZXhjZXB0aW9uLlxuLy8gSWYgYSB0YXNrIHRocm93cyBhbiBleGNlcHRpb24sIGBmbHVz
aGAgZW5zdXJlcyB0aGF0IGl0cyBzdGF0ZSB3aWxsIHJlbWFpblxuLy8gY29uc2lzdGVudCBhbmQg
d2lsbCByZXN1bWUgd2hlcmUgaXQgbGVmdCBvZmYgd2hlbiBjYWxsZWQgYWdhaW4uXG4vLyBIb3dl
dmVyLCBgZmx1c2hgIGRvZXMgbm90IG1ha2UgYW55IGFycmFuZ2VtZW50cyB0byBiZSBjYWxsZWQg
YWdhaW4gaWYgYW5cbi8vIGV4Y2VwdGlvbiBpcyB0aHJvd24uXG5mdW5jdGlvbiBmbHVzaCgpIHtc
biAgICB3aGlsZSAoaW5kZXggPCBxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRJ
bmRleCA9IGluZGV4O1xuICAgICAgICAvLyBBZHZhbmNlIHRoZSBpbmRleCBiZWZvcmUgY2FsbGlu
ZyB0aGUgdGFzay4gVGhpcyBlbnN1cmVzIHRoYXQgd2Ugd2lsbFxuICAgICAgICAvLyBiZWdpbiBm
bHVzaGluZyBvbiB0aGUgbmV4dCB0YXNrIHRoZSB0YXNrIHRocm93cyBhbiBlcnJvci5cbiAgICAg
ICAgaW5kZXggPSBpbmRleCArIDE7XG4gICAgICAgIHF1ZXVlW2N1cnJlbnRJbmRleF0uY2FsbCgp
O1xuICAgICAgICAvLyBQcmV2ZW50IGxlYWtpbmcgbWVtb3J5IGZvciBsb25nIGNoYWlucyBvZiBy
ZWN1cnNpdmUgY2FsbHMgdG8gYGFzYXBgLlxuICAgICAgICAvLyBJZiB3ZSBjYWxsIGBhc2FwYCB3
aXRoaW4gdGFza3Mgc2NoZWR1bGVkIGJ5IGBhc2FwYCwgdGhlIHF1ZXVlIHdpbGxcbiAgICAgICAg
Ly8gZ3JvdywgYnV0IHRvIGF2b2lkIGFuIE8obikgd2FsayBmb3IgZXZlcnkgdGFzayB3ZSBleGVj
dXRlLCB3ZSBkb24ndFxuICAgICAgICAvLyBzaGlmdCB0YXNrcyBvZmYgdGhlIHF1ZXVlIGFmdGVy
IHRoZXkgaGF2ZSBiZWVuIGV4ZWN1dGVkLlxuICAgICAgICAvLyBJbnN0ZWFkLCB3ZSBwZXJpb2Rp
Y2FsbHkgc2hpZnQgMTAyNCB0YXNrcyBvZmYgdGhlIHF1ZXVlLlxuICAgICAgICBpZiAoaW5kZXgg
PiBjYXBhY2l0eSkge1xuICAgICAgICAgICAgLy8gTWFudWFsbHkgc2hpZnQgYWxsIHZhbHVlcyBz
dGFydGluZyBhdCB0aGUgaW5kZXggYmFjayB0byB0aGVcbiAgICAgICAgICAgIC8vIGJlZ2lubmlu
ZyBvZiB0aGUgcXVldWUuXG4gICAgICAgICAgICBmb3IgKHZhciBzY2FuID0gMCwgbmV3TGVuZ3Ro
ID0gcXVldWUubGVuZ3RoIC0gaW5kZXg7IHNjYW4gPCBuZXdMZW5ndGg7IHNjYW4rKykge1xuICAg
ICAgICAgICAgICAgIHF1ZXVlW3NjYW5dID0gcXVldWVbc2NhbiArIGluZGV4XTtcbiAgICAgICAg
ICAgIH1cbiAgICAgICAgICAgIHF1ZXVlLmxlbmd0aCAtPSBpbmRleDtcbiAgICAgICAgICAgIGlu
ZGV4ID0gMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5sZW5ndGggPSAwO1xuICAgIGlu
ZGV4ID0gMDtcbiAgICBmbHVzaGluZyA9IGZhbHNlO1xufVxuXG4vLyBgcmVxdWVzdEZsdXNoYCBp
cyBpbXBsZW1lbnRlZCB1c2luZyBhIHN0cmF0ZWd5IGJhc2VkIG9uIGRhdGEgY29sbGVjdGVkIGZy
b21cbi8vIGV2ZXJ5IGF2YWlsYWJsZSBTYXVjZUxhYnMgU2VsZW5pdW0gd2ViIGRyaXZlciB3b3Jr
ZXIgYXQgdGltZSBvZiB3cml0aW5nLlxuLy8gaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vc3ByZWFk
c2hlZXRzL2QvMW1HLTVVWUd1cDVxeEdkRU1Xa2hQNkJXQ3owNTNOVWIyRTFRb1VUVTE2dUEvZWRp
dCNnaWQ9NzgzNzI0NTkzXG5cbi8vIFNhZmFyaSA2IGFuZCA2LjEgZm9yIGRlc2t0b3AsIGlQYWQs
IGFuZCBpUGhvbmUgYXJlIHRoZSBvbmx5IGJyb3dzZXJzIHRoYXRcbi8vIGhhdmUgV2ViS2l0TXV0
YXRpb25PYnNlcnZlciBidXQgbm90IHVuLXByZWZpeGVkIE11dGF0aW9uT2JzZXJ2ZXIuXG4vLyBN
dXN0IHVzZSBgZ2xvYmFsYCBvciBgc2VsZmAgaW5zdGVhZCBvZiBgd2luZG93YCB0byB3b3JrIGlu
IGJvdGggZnJhbWVzIGFuZCB3ZWJcbi8vIHdvcmtlcnMuIGBnbG9iYWxgIGlzIGEgcHJvdmlzaW9u
IG9mIEJyb3dzZXJpZnksIE1yLCBNcnMsIG9yIE1vcC5cblxuLyogZ2xvYmFscyBzZWxmICovXG52
YXIgc2NvcGUgPSB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogc2Vs
ZjtcbnZhciBCcm93c2VyTXV0YXRpb25PYnNlcnZlciA9IHNjb3BlLk11dGF0aW9uT2JzZXJ2ZXIg
fHwgc2NvcGUuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcblxuLy8gTXV0YXRpb25PYnNlcnZlcnMg
YXJlIGRlc2lyYWJsZSBiZWNhdXNlIHRoZXkgaGF2ZSBoaWdoIHByaW9yaXR5IGFuZCB3b3JrXG4v
LyByZWxpYWJseSBldmVyeXdoZXJlIHRoZXkgYXJlIGltcGxlbWVudGVkLlxuLy8gVGhleSBhcmUg
aW1wbGVtZW50ZWQgaW4gYWxsIG1vZGVybiBicm93c2Vycy5cbi8vXG4vLyAtIEFuZHJvaWQgNC00
LjNcbi8vIC0gQ2hyb21lIDI2LTM0XG4vLyAtIEZpcmVmb3ggMTQtMjlcbi8vIC0gSW50ZXJuZXQg
RXhwbG9yZXIgMTFcbi8vIC0gaVBhZCBTYWZhcmkgNi03LjFcbi8vIC0gaVBob25lIFNhZmFyaSA3
LTcuMVxuLy8gLSBTYWZhcmkgNi03XG5pZiAodHlwZW9mIEJyb3dzZXJNdXRhdGlvbk9ic2VydmVy
ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXF1ZXN0Rmx1c2ggPSBtYWtlUmVxdWVzdENhbGxG
cm9tTXV0YXRpb25PYnNlcnZlcihmbHVzaCk7XG5cbi8vIE1lc3NhZ2VDaGFubmVscyBhcmUgZGVz
aXJhYmxlIGJlY2F1c2UgdGhleSBnaXZlIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIEhUTUxcbi8vIHRh
c2sgcXVldWUsIGFyZSBpbXBsZW1lbnRlZCBpbiBJbnRlcm5ldCBFeHBsb3JlciAxMCwgU2FmYXJp
IDUuMC0xLCBhbmQgT3BlcmFcbi8vIDExLTEyLCBhbmQgaW4gd2ViIHdvcmtlcnMgaW4gbWFueSBl
bmdpbmVzLlxuLy8gQWx0aG91Z2ggbWVzc2FnZSBjaGFubmVscyB5aWVsZCB0byBhbnkgcXVldWVk
IHJlbmRlcmluZyBhbmQgSU8gdGFza3MsIHRoZXlcbi8vIHdvdWxkIGJlIGJldHRlciB0aGFuIGlt
cG9zaW5nIHRoZSA0bXMgZGVsYXkgb2YgdGltZXJzLlxuLy8gSG93ZXZlciwgdGhleSBkbyBub3Qg
d29yayByZWxpYWJseSBpbiBJbnRlcm5ldCBFeHBsb3JlciBvciBTYWZhcmkuXG5cbi8vIEludGVy
bmV0IEV4cGxvcmVyIDEwIGlzIHRoZSBvbmx5IGJyb3dzZXIgdGhhdCBoYXMgc2V0SW1tZWRpYXRl
IGJ1dCBkb2VzXG4vLyBub3QgaGF2ZSBNdXRhdGlvbk9ic2VydmVycy5cbi8vIEFsdGhvdWdoIHNl
dEltbWVkaWF0ZSB5aWVsZHMgdG8gdGhlIGJyb3dzZXIncyByZW5kZXJlciwgaXQgd291bGQgYmVc
bi8vIHByZWZlcnJhYmxlIHRvIGZhbGxpbmcgYmFjayB0byBzZXRUaW1lb3V0IHNpbmNlIGl0IGRv
ZXMgbm90IGhhdmVcbi8vIHRoZSBtaW5pbXVtIDRtcyBwZW5hbHR5LlxuLy8gVW5mb3J0dW5hdGVs
eSB0aGVyZSBhcHBlYXJzIHRvIGJlIGEgYnVnIGluIEludGVybmV0IEV4cGxvcmVyIDEwIE1vYmls
ZSAoYW5kXG4vLyBEZXNrdG9wIHRvIGEgbGVzc2VyIGV4dGVudCkgdGhhdCByZW5kZXJzIGJvdGgg
c2V0SW1tZWRpYXRlIGFuZFxuLy8gTWVzc2FnZUNoYW5uZWwgdXNlbGVzcyBmb3IgdGhlIHB1cnBv
c2VzIG9mIEFTQVAuXG4vLyBodHRwczovL2dpdGh1Yi5jb20va3Jpc2tvd2FsL3EvaXNzdWVzLzM5
NlxuXG4vLyBUaW1lcnMgYXJlIGltcGxlbWVudGVkIHVuaXZlcnNhbGx5LlxuLy8gV2UgZmFsbCBi
YWNrIHRvIHRpbWVycyBpbiB3b3JrZXJzIGluIG1vc3QgZW5naW5lcywgYW5kIGluIGZvcmVncm91
bmRcbi8vIGNvbnRleHRzIGluIHRoZSBmb2xsb3dpbmcgYnJvd3NlcnMuXG4vLyBIb3dldmVyLCBu
b3RlIHRoYXQgZXZlbiB0aGlzIHNpbXBsZSBjYXNlIHJlcXVpcmVzIG51YW5jZXMgdG8gb3BlcmF0
ZSBpbiBhXG4vLyBicm9hZCBzcGVjdHJ1bSBvZiBicm93c2Vycy5cbi8vXG4vLyAtIEZpcmVmb3gg
My0xM1xuLy8gLSBJbnRlcm5ldCBFeHBsb3JlciA2LTlcbi8vIC0gaVBhZCBTYWZhcmkgNC4zXG4v
LyAtIEx5bnggMi44Ljdcbn0gZWxzZSB7XG4gICAgcmVxdWVzdEZsdXNoID0gbWFrZVJlcXVlc3RD
YWxsRnJvbVRpbWVyKGZsdXNoKTtcbn1cblxuLy8gYHJlcXVlc3RGbHVzaGAgcmVxdWVzdHMgdGhh
dCB0aGUgaGlnaCBwcmlvcml0eSBldmVudCBxdWV1ZSBiZSBmbHVzaGVkIGFzXG4vLyBzb29uIGFz
IHBvc3NpYmxlLlxuLy8gVGhpcyBpcyB1c2VmdWwgdG8gcHJldmVudCBhbiBlcnJvciB0aHJvd24g
aW4gYSB0YXNrIGZyb20gc3RhbGxpbmcgdGhlIGV2ZW50XG4vLyBxdWV1ZSBpZiB0aGUgZXhjZXB0
aW9uIGhhbmRsZWQgYnkgTm9kZS5qc+KAmXNcbi8vIGBwcm9jZXNzLm9uKFwidW5jYXVnaHRFeGNl
cHRpb25cIilgIG9yIGJ5IGEgZG9tYWluLlxucmF3QXNhcC5yZXF1ZXN0Rmx1c2ggPSByZXF1ZXN0
Rmx1c2g7XG5cbi8vIFRvIHJlcXVlc3QgYSBoaWdoIHByaW9yaXR5IGV2ZW50LCB3ZSBpbmR1Y2Ug
YSBtdXRhdGlvbiBvYnNlcnZlciBieSB0b2dnbGluZ1xuLy8gdGhlIHRleHQgb2YgYSB0ZXh0IG5v
ZGUgYmV0d2VlbiBcIjFcIiBhbmQgXCItMVwiLlxuZnVuY3Rpb24gbWFrZVJlcXVlc3RDYWxsRnJv
bU11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spIHtcbiAgICB2YXIgdG9nZ2xlID0gMTtcbiAgICB2
YXIgb2JzZXJ2ZXIgPSBuZXcgQnJvd3Nlck11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spO1xuICAg
IHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJcIik7XG4gICAgb2JzZXJ2ZXIu
b2JzZXJ2ZShub2RlLCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZX0pO1xuICAgIHJldHVybiBmdW5jdGlv
biByZXF1ZXN0Q2FsbCgpIHtcbiAgICAgICAgdG9nZ2xlID0gLXRvZ2dsZTtcbiAgICAgICAgbm9k
ZS5kYXRhID0gdG9nZ2xlO1xuICAgIH07XG59XG5cbi8vIFRoZSBtZXNzYWdlIGNoYW5uZWwgdGVj
aG5pcXVlIHdhcyBkaXNjb3ZlcmVkIGJ5IE1hbHRlIFVibCBhbmQgd2FzIHRoZVxuLy8gb3JpZ2lu
YWwgZm91bmRhdGlvbiBmb3IgdGhpcyBsaWJyYXJ5LlxuLy8gaHR0cDovL3d3dy5ub25ibG9ja2lu
Zy5pby8yMDExLzA2L3dpbmRvd25leHR0aWNrLmh0bWxcblxuLy8gU2FmYXJpIDYuMC41IChhdCBs
ZWFzdCkgaW50ZXJtaXR0ZW50bHkgZmFpbHMgdG8gY3JlYXRlIG1lc3NhZ2UgcG9ydHMgb24gYVxu
Ly8gcGFnZSdzIGZpcnN0IGxvYWQuIFRoYW5rZnVsbHksIHRoaXMgdmVyc2lvbiBvZiBTYWZhcmkg
c3VwcG9ydHNcbi8vIE11dGF0aW9uT2JzZXJ2ZXJzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGZhbGwg
YmFjayBpbiB0aGF0IGNhc2UuXG5cbi8vIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0Q2FsbEZyb21NZXNz
YWdlQ2hhbm5lbChjYWxsYmFjaykge1xuLy8gICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VD
aGFubmVsKCk7XG4vLyAgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBjYWxsYmFjaztcbi8v
ICAgICByZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwoKSB7XG4vLyAgICAgICAgIGNoYW5uZWwu
cG9ydDIucG9zdE1lc3NhZ2UoMCk7XG4vLyAgICAgfTtcbi8vIH1cblxuLy8gRm9yIHJlYXNvbnMg
ZXhwbGFpbmVkIGFib3ZlLCB3ZSBhcmUgYWxzbyB1bmFibGUgdG8gdXNlIGBzZXRJbW1lZGlhdGVg
XG4vLyB1bmRlciBhbnkgY2lyY3Vtc3RhbmNlcy5cbi8vIEV2ZW4gaWYgd2Ugd2VyZSwgdGhlcmUg
aXMgYW5vdGhlciBidWcgaW4gSW50ZXJuZXQgRXhwbG9yZXIgMTAuXG4vLyBJdCBpcyBub3Qgc3Vm
ZmljaWVudCB0byBhc3NpZ24gYHNldEltbWVkaWF0ZWAgdG8gYHJlcXVlc3RGbHVzaGAgYmVjYXVz
ZVxuLy8gYHNldEltbWVkaWF0ZWAgbXVzdCBiZSBjYWxsZWQgKmJ5IG5hbWUqIGFuZCB0aGVyZWZv
cmUgbXVzdCBiZSB3cmFwcGVkIGluIGFcbi8vIGNsb3N1cmUuXG4vLyBOZXZlciBmb3JnZXQuXG5c
bi8vIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0Q2FsbEZyb21TZXRJbW1lZGlhdGUoY2FsbGJhY2spIHtc
bi8vICAgICByZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwoKSB7XG4vLyAgICAgICAgIHNldElt
bWVkaWF0ZShjYWxsYmFjayk7XG4vLyAgICAgfTtcbi8vIH1cblxuLy8gU2FmYXJpIDYuMCBoYXMg
YSBwcm9ibGVtIHdoZXJlIHRpbWVycyB3aWxsIGdldCBsb3N0IHdoaWxlIHRoZSB1c2VyIGlzXG4v
LyBzY3JvbGxpbmcuIFRoaXMgcHJvYmxlbSBkb2VzIG5vdCBpbXBhY3QgQVNBUCBiZWNhdXNlIFNh
ZmFyaSA2LjAgc3VwcG9ydHNcbi8vIG11dGF0aW9uIG9ic2VydmVycywgc28gdGhhdCBpbXBsZW1l
bnRhdGlvbiBpcyB1c2VkIGluc3RlYWQuXG4vLyBIb3dldmVyLCBpZiB3ZSBldmVyIGVsZWN0IHRv
IHVzZSB0aW1lcnMgaW4gU2FmYXJpLCB0aGUgcHJldmFsZW50IHdvcmstYXJvdW5kXG4vLyBpcyB0
byBhZGQgYSBzY3JvbGwgZXZlbnQgbGlzdGVuZXIgdGhhdCBjYWxscyBmb3IgYSBmbHVzaC5cblxu
Ly8gYHNldFRpbWVvdXRgIGRvZXMgbm90IGNhbGwgdGhlIHBhc3NlZCBjYWxsYmFjayBpZiB0aGUg
ZGVsYXkgaXMgbGVzcyB0aGFuXG4vLyBhcHByb3hpbWF0ZWx5IDcgaW4gd2ViIHdvcmtlcnMgaW4g
RmlyZWZveCA4IHRocm91Z2ggMTgsIGFuZCBzb21ldGltZXMgbm90XG4vLyBldmVuIHRoZW4uXG5c
bmZ1bmN0aW9uIG1ha2VSZXF1ZXN0Q2FsbEZyb21UaW1lcihjYWxsYmFjaykge1xuICAgIHJldHVy
biBmdW5jdGlvbiByZXF1ZXN0Q2FsbCgpIHtcbiAgICAgICAgLy8gV2UgZGlzcGF0Y2ggYSB0aW1l
b3V0IHdpdGggYSBzcGVjaWZpZWQgZGVsYXkgb2YgMCBmb3IgZW5naW5lcyB0aGF0XG4gICAgICAg
IC8vIGNhbiByZWxpYWJseSBhY2NvbW1vZGF0ZSB0aGF0IHJlcXVlc3QuIFRoaXMgd2lsbCB1c3Vh
bGx5IGJlIHNuYXBwZWRcbiAgICAgICAgLy8gdG8gYSA0IG1pbGlzZWNvbmQgZGVsYXksIGJ1dCBv
bmNlIHdlJ3JlIGZsdXNoaW5nLCB0aGVyZSdzIG5vIGRlbGF5XG4gICAgICAgIC8vIGJldHdlZW4g
ZXZlbnRzLlxuICAgICAgICB2YXIgdGltZW91dEhhbmRsZSA9IHNldFRpbWVvdXQoaGFuZGxlVGlt
ZXIsIDApO1xuICAgICAgICAvLyBIb3dldmVyLCBzaW5jZSB0aGlzIHRpbWVyIGdldHMgZnJlcXVl
bnRseSBkcm9wcGVkIGluIEZpcmVmb3hcbiAgICAgICAgLy8gd29ya2Vycywgd2UgZW5saXN0IGFu
IGludGVydmFsIGhhbmRsZSB0aGF0IHdpbGwgdHJ5IHRvIGZpcmVcbiAgICAgICAgLy8gYW4gZXZl
bnQgMjAgdGltZXMgcGVyIHNlY29uZCB1bnRpbCBpdCBzdWNjZWVkcy5cbiAgICAgICAgdmFyIGlu
dGVydmFsSGFuZGxlID0gc2V0SW50ZXJ2YWwoaGFuZGxlVGltZXIsIDUwKTtcblxuICAgICAgICBm
dW5jdGlvbiBoYW5kbGVUaW1lcigpIHtcbiAgICAgICAgICAgIC8vIFdoaWNoZXZlciB0aW1lciBz
dWNjZWVkcyB3aWxsIGNhbmNlbCBib3RoIHRpbWVycyBhbmRcbiAgICAgICAgICAgIC8vIGV4ZWN1
dGUgdGhlIGNhbGxiYWNrLlxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRIYW5kbGUp
O1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbEhhbmRsZSk7XG4gICAgICAgICAg
ICBjYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuLy8gVGhpcyBpcyBmb3IgYGFz
YXAuanNgIG9ubHkuXG4vLyBJdHMgbmFtZSB3aWxsIGJlIHBlcmlvZGljYWxseSByYW5kb21pemVk
IHRvIGJyZWFrIGFueSBjb2RlIHRoYXQgZGVwZW5kcyBvblxuLy8gaXRzIGV4aXN0ZW5jZS5cbnJh
d0FzYXAubWFrZVJlcXVlc3RDYWxsRnJvbVRpbWVyID0gbWFrZVJlcXVlc3RDYWxsRnJvbVRpbWVy
O1xuXG4vLyBBU0FQIHdhcyBvcmlnaW5hbGx5IGEgbmV4dFRpY2sgc2hpbSBpbmNsdWRlZCBpbiBR
LiBUaGlzIHdhcyBmYWN0b3JlZCBvdXRcbi8vIGludG8gdGhpcyBBU0FQIHBhY2thZ2UuIEl0IHdh
cyBsYXRlciBhZGFwdGVkIHRvIFJTVlAgd2hpY2ggbWFkZSBmdXJ0aGVyXG4vLyBhbWVuZG1lbnRz
LiBUaGVzZSBkZWNpc2lvbnMsIHBhcnRpY3VsYXJseSB0byBtYXJnaW5hbGl6ZSBNZXNzYWdlQ2hh
bm5lbCBhbmRcbi8vIHRvIGNhcHR1cmUgdGhlIE11dGF0aW9uT2JzZXJ2ZXIgaW1wbGVtZW50YXRp
b24gaW4gYSBjbG9zdXJlLCB3ZXJlIGludGVncmF0ZWRcbi8vIGJhY2sgaW50byBBU0FQIHByb3Bl
ci5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90aWxkZWlvL3JzdnAuanMvYmxvYi9jZGRmNzIzMjU0
NmE5Y2Y4NTg1MjRiNzVjZGU2ZjllZGY3MjYyMGE3L2xpYi9yc3ZwL2FzYXAuanNcblxuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXNjcmlw
dHMvfi9hc2FwL2Jyb3dzZXItcmF3LmpzXG4gKiogbW9kdWxlIGlkID0gMTk3XG4gKiogbW9kdWxl
IGNodW5rcyA9IDBcbiAqKi8iLCJpbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuLi9jb25zdGFudHMv
QWN0aW9uVHlwZXMnXG5cbmV4cG9ydCBjb25zdCBhZGRUb2RvID0gdGV4dCA9PiAoeyB0eXBlOiB0
eXBlcy5BRERfVE9ETywgdGV4dCB9KVxuZXhwb3J0IGNvbnN0IGRlbGV0ZVRvZG8gPSBpZCA9PiAo
eyB0eXBlOiB0eXBlcy5ERUxFVEVfVE9ETywgaWQgfSlcbmV4cG9ydCBjb25zdCBlZGl0VG9kbyA9
IChpZCwgdGV4dCkgPT4gKHsgdHlwZTogdHlwZXMuRURJVF9UT0RPLCBpZCwgdGV4dCB9KVxuZXhw
b3J0IGNvbnN0IGNvbXBsZXRlVG9kbyA9IGlkID0+ICh7IHR5cGU6IHR5cGVzLkNPTVBMRVRFX1RP
RE8sIGlkIH0pXG5leHBvcnQgY29uc3QgY29tcGxldGVBbGwgPSAoKSA9PiAoeyB0eXBlOiB0eXBl
cy5DT01QTEVURV9BTEwgfSlcbmV4cG9ydCBjb25zdCBjbGVhckNvbXBsZXRlZCA9ICgpID0+ICh7
IHR5cGU6IHR5cGVzLkNMRUFSX0NPTVBMRVRFRCB9KVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVS
ICoqXG4gKiogLi9zcmMvYWN0aW9ucy9pbmRleC5qc1xuICoqLyIsImltcG9ydCBSZWFjdCwgeyBQ
cm9wVHlwZXMsIENvbXBvbmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJv
bSAnY2xhc3NuYW1lcydcbmltcG9ydCB7IFNIT1dfQUxMLCBTSE9XX0NPTVBMRVRFRCwgU0hPV19B
Q1RJVkUgfSBmcm9tICcuLi9jb25zdGFudHMvVG9kb0ZpbHRlcnMnXG5cbmNvbnN0IEZJTFRFUl9U
SVRMRVMgPSB7XG4gIFtTSE9XX0FMTF06ICdBbGwnLFxuICBbU0hPV19BQ1RJVkVdOiAnQWN0aXZl
JyxcbiAgW1NIT1dfQ09NUExFVEVEXTogJ0NvbXBsZXRlZCdcbn1cblxuZXhwb3J0IGRlZmF1bHQg
Y2xhc3MgRm9vdGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtc
biAgICBjb21wbGV0ZWRDb3VudDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgIGFj
dGl2ZUNvdW50OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgZmlsdGVyOiBQcm9w
VHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgb25DbGVhckNvbXBsZXRlZDogUHJvcFR5cGVz
LmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvblNob3c6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRc
biAgfVxuXG4gIHJlbmRlclRvZG9Db3VudCgpIHtcbiAgICBjb25zdCB7IGFjdGl2ZUNvdW50IH0g
PSB0aGlzLnByb3BzXG4gICAgY29uc3QgaXRlbVdvcmQgPSBhY3RpdmVDb3VudCA9PT0gMSA/ICdp
dGVtJyA6ICdpdGVtcydcblxuICAgIHJldHVybiAoXG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0
b2RvLWNvdW50XCI+XG4gICAgICAgIDxzdHJvbmc+e2FjdGl2ZUNvdW50IHx8ICdObyd9PC9zdHJv
bmc+IHtpdGVtV29yZH0gbGVmdFxuICAgICAgPC9zcGFuPlxuICAgIClcbiAgfVxuXG4gIHJlbmRl
ckZpbHRlckxpbmsoZmlsdGVyKSB7XG4gICAgY29uc3QgdGl0bGUgPSBGSUxURVJfVElUTEVTW2Zp
bHRlcl1cbiAgICBjb25zdCB7IGZpbHRlcjogc2VsZWN0ZWRGaWx0ZXIsIG9uU2hvdyB9ID0gdGhp
cy5wcm9wc1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxhIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyh7
IHNlbGVjdGVkOiBmaWx0ZXIgPT09IHNlbGVjdGVkRmlsdGVyIH0pfVxuICAgICAgICAgc3R5bGU9
e3sgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU2hvdyhm
aWx0ZXIpfT5cbiAgICAgICAge3RpdGxlfVxuICAgICAgPC9hPlxuICAgIClcbiAgfVxuXG4gIHJl
bmRlckNsZWFyQnV0dG9uKCkge1xuICAgIGNvbnN0IHsgY29tcGxldGVkQ291bnQsIG9uQ2xlYXJD
b21wbGV0ZWQgfSA9IHRoaXMucHJvcHNcbiAgICBpZiAoY29tcGxldGVkQ291bnQgPiAwKSB7XG4g
ICAgICByZXR1cm4gKFxuICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImNsZWFyLWNvbXBsZXRl
ZFwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17b25DbGVhckNvbXBsZXRlZH0gPlxuICAgICAg
ICAgIENsZWFyIGNvbXBsZXRlZFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIClcbiAgICB9XG4g
IH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxmb290ZXIgY2xhc3NOYW1l
PVwiZm9vdGVyXCI+XG4gICAgICAgIHt0aGlzLnJlbmRlclRvZG9Db3VudCgpfVxuICAgICAgICA8
dWwgY2xhc3NOYW1lPVwiZmlsdGVyc1wiPlxuICAgICAgICAgIHtbIFNIT1dfQUxMLCBTSE9XX0FD
VElWRSwgU0hPV19DT01QTEVURUQgXS5tYXAoZmlsdGVyID0+XG4gICAgICAgICAgICA8bGkga2V5
PXtmaWx0ZXJ9PlxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJGaWx0ZXJMaW5rKGZpbHRlcil9
XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvdWw+XG4gICAgICAg
IHt0aGlzLnJlbmRlckNsZWFyQnV0dG9uKCl9XG4gICAgICA8L2Zvb3Rlcj5cbiAgICApXG4gIH1c
bn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2NvbXBvbmVudHMvRm9v
dGVyLmpzXG4gKiovIiwiaW1wb3J0IFJlYWN0LCB7IFByb3BUeXBlcywgQ29tcG9uZW50IH0gZnJv
bSAncmVhY3QnXG5pbXBvcnQgVG9kb1RleHRJbnB1dCBmcm9tICcuL1RvZG9UZXh0SW5wdXQnXG5c
bmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhlYWRlciBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRp
YyBwcm9wVHlwZXMgPSB7XG4gICAgYWRkVG9kbzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxu
ICB9XG5cbiAgaGFuZGxlU2F2ZSA9IHRleHQgPT4ge1xuICAgIGlmICh0ZXh0Lmxlbmd0aCAhPT0g
MCkge1xuICAgICAgdGhpcy5wcm9wcy5hZGRUb2RvKHRleHQpXG4gICAgfVxuICB9XG5cbiAgcmVu
ZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8aGVhZGVyIGNsYXNzTmFtZT1cImhlYWRlclwi
PlxuICAgICAgICA8aDE+dG9kb3M8L2gxPlxuICAgICAgICA8VG9kb1RleHRJbnB1dCBuZXdUb2Rv
XG4gICAgICAgICAgICAgICAgICAgICAgIG9uU2F2ZT17dGhpcy5oYW5kbGVTYXZlfVxuICAgICAg
ICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldoYXQgbmVlZHMgdG8gYmUgZG9uZT9cIiAv
PlxuICAgICAgPC9oZWFkZXI+XG4gICAgKVxuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09U
RVIgKipcbiAqKiAuL3NyYy9jb21wb25lbnRzL0hlYWRlci5qc1xuICoqLyIsImltcG9ydCBSZWFj
dCwgeyBDb21wb25lbnQsIFByb3BUeXBlcyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFRvZG9JdGVt
IGZyb20gJy4vVG9kb0l0ZW0nXG5pbXBvcnQgRm9vdGVyIGZyb20gJy4vRm9vdGVyJ1xuaW1wb3J0
IHsgU0hPV19BTEwsIFNIT1dfQ09NUExFVEVELCBTSE9XX0FDVElWRSB9IGZyb20gJy4uL2NvbnN0
YW50cy9Ub2RvRmlsdGVycydcblxuY29uc3QgVE9ET19GSUxURVJTID0ge1xuICBbU0hPV19BTExd
OiAoKSA9PiB0cnVlLFxuICBbU0hPV19BQ1RJVkVdOiB0b2RvID0+ICF0b2RvLmNvbXBsZXRlZCxc
biAgW1NIT1dfQ09NUExFVEVEXTogdG9kbyA9PiB0b2RvLmNvbXBsZXRlZFxufVxuXG5leHBvcnQg
ZGVmYXVsdCBjbGFzcyBNYWluU2VjdGlvbiBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBw
cm9wVHlwZXMgPSB7XG4gICAgdG9kb3M6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICAg
IGFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxuICB9XG5cbiAgc3RhdGUgPSB7
IGZpbHRlcjogU0hPV19BTEwgfVxuXG4gIGhhbmRsZUNsZWFyQ29tcGxldGVkID0gKCkgPT4ge1xu
ICAgIHRoaXMucHJvcHMuYWN0aW9ucy5jbGVhckNvbXBsZXRlZCgpXG4gIH1cblxuICBoYW5kbGVT
aG93ID0gZmlsdGVyID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgZmlsdGVyIH0pXG4gIH1cblxu
ICByZW5kZXJUb2dnbGVBbGwoY29tcGxldGVkQ291bnQpIHtcbiAgICBjb25zdCB7IHRvZG9zLCBh
Y3Rpb25zIH0gPSB0aGlzLnByb3BzXG4gICAgaWYgKHRvZG9zLmxlbmd0aCA+IDApIHtcbiAgICAg
IHJldHVybiAoXG4gICAgICAgIDxpbnB1dCBjbGFzc05hbWU9XCJ0b2dnbGUtYWxsXCJcbiAgICAg
ICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICBjaGVja2VkPXtjb21w
bGV0ZWRDb3VudCA9PT0gdG9kb3MubGVuZ3RofVxuICAgICAgICAgICAgICAgb25DaGFuZ2U9e2Fj
dGlvbnMuY29tcGxldGVBbGx9IC8+XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyRm9v
dGVyKGNvbXBsZXRlZENvdW50KSB7XG4gICAgY29uc3QgeyB0b2RvcyB9ID0gdGhpcy5wcm9wc1xu
ICAgIGNvbnN0IHsgZmlsdGVyIH0gPSB0aGlzLnN0YXRlXG4gICAgY29uc3QgYWN0aXZlQ291bnQg
PSB0b2Rvcy5sZW5ndGggLSBjb21wbGV0ZWRDb3VudFxuXG4gICAgaWYgKHRvZG9zLmxlbmd0aCkg
e1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEZvb3RlciBjb21wbGV0ZWRDb3VudD17Y29tcGxl
dGVkQ291bnR9XG4gICAgICAgICAgICAgICAgYWN0aXZlQ291bnQ9e2FjdGl2ZUNvdW50fVxuICAg
ICAgICAgICAgICAgIGZpbHRlcj17ZmlsdGVyfVxuICAgICAgICAgICAgICAgIG9uQ2xlYXJDb21w
bGV0ZWQ9e3RoaXMuaGFuZGxlQ2xlYXJDb21wbGV0ZWQuYmluZCh0aGlzKX1cbiAgICAgICAgICAg
ICAgICBvblNob3c9e3RoaXMuaGFuZGxlU2hvdy5iaW5kKHRoaXMpfSAvPlxuICAgICAgKVxuICAg
IH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IHRvZG9zLCBhY3Rpb25zIH0gPSB0
aGlzLnByb3BzXG4gICAgY29uc3QgeyBmaWx0ZXIgfSA9IHRoaXMuc3RhdGVcblxuICAgIGNvbnN0
IGZpbHRlcmVkVG9kb3MgPSB0b2Rvcy5maWx0ZXIoVE9ET19GSUxURVJTW2ZpbHRlcl0pXG4gICAg
Y29uc3QgY29tcGxldGVkQ291bnQgPSB0b2Rvcy5yZWR1Y2UoKGNvdW50LCB0b2RvKSA9PlxuICAg
ICAgdG9kby5jb21wbGV0ZWQgPyBjb3VudCArIDEgOiBjb3VudCxcbiAgICAgIDBcbiAgICApXG5c
biAgICByZXR1cm4gKFxuICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwibWFpblwiPlxuICAgICAg
ICB7dGhpcy5yZW5kZXJUb2dnbGVBbGwoY29tcGxldGVkQ291bnQpfVxuICAgICAgICA8dWwgY2xh
c3NOYW1lPVwidG9kby1saXN0XCI+XG4gICAgICAgICAge2ZpbHRlcmVkVG9kb3MubWFwKHRvZG8g
PT5cbiAgICAgICAgICAgIDxUb2RvSXRlbSBrZXk9e3RvZG8uaWR9IHRvZG89e3RvZG99IHsuLi5h
Y3Rpb25zfSAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvdWw+XG4gICAgICAgIHt0aGlzLnJl
bmRlckZvb3Rlcihjb21wbGV0ZWRDb3VudCl9XG4gICAgICA8L3NlY3Rpb24+XG4gICAgKVxuICB9
XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9jb21wb25lbnRzL01h
aW5TZWN0aW9uLmpzXG4gKiovIiwiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCwgUHJvcFR5cGVz
IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1w
b3J0IFRvZG9UZXh0SW5wdXQgZnJvbSAnLi9Ub2RvVGV4dElucHV0J1xuXG5leHBvcnQgZGVmYXVs
dCBjbGFzcyBUb2RvSXRlbSBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMg
PSB7XG4gICAgdG9kbzogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGVkaXRUb2Rv
OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGRlbGV0ZVRvZG86IFByb3BUeXBlcy5m
dW5jLmlzUmVxdWlyZWQsXG4gICAgY29tcGxldGVUb2RvOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVp
cmVkXG4gIH1cblxuICBzdGF0ZSA9IHtcbiAgICBlZGl0aW5nOiBmYWxzZVxuICB9XG5cbiAgaGFu
ZGxlRG91YmxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGVkaXRpbmc6IHRy
dWUgfSlcbiAgfVxuXG4gIGhhbmRsZVNhdmUgPSAoaWQsIHRleHQpID0+IHtcbiAgICBpZiAodGV4
dC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMucHJvcHMuZGVsZXRlVG9kbyhpZClcbiAgICB9
IGVsc2Uge1xuICAgICAgdGhpcy5wcm9wcy5lZGl0VG9kbyhpZCwgdGV4dClcbiAgICB9XG4gICAg
dGhpcy5zZXRTdGF0ZSh7IGVkaXRpbmc6IGZhbHNlIH0pXG4gIH1cblxuICByZW5kZXIoKSB7XG4g
ICAgY29uc3QgeyB0b2RvLCBjb21wbGV0ZVRvZG8sIGRlbGV0ZVRvZG8gfSA9IHRoaXMucHJvcHNc
blxuICAgIGxldCBlbGVtZW50XG4gICAgaWYgKHRoaXMuc3RhdGUuZWRpdGluZykge1xuICAgICAg
ZWxlbWVudCA9IChcbiAgICAgICAgPFRvZG9UZXh0SW5wdXQgdGV4dD17dG9kby50ZXh0fVxuICAg
ICAgICAgICAgICAgICAgICAgICBlZGl0aW5nPXt0aGlzLnN0YXRlLmVkaXRpbmd9XG4gICAgICAg
ICAgICAgICAgICAgICAgIG9uU2F2ZT17KHRleHQpID0+IHRoaXMuaGFuZGxlU2F2ZSh0b2RvLmlk
LCB0ZXh0KX0gLz5cbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudCA9IChcbiAg
ICAgICAgPGRpdiBjbGFzc05hbWU9XCJ2aWV3XCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzTmFt
ZT1cInRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAg
ICAgICAgICAgIGNoZWNrZWQ9e3RvZG8uY29tcGxldGVkfVxuICAgICAgICAgICAgICAgICBvbkNo
YW5nZT17KCkgPT4gY29tcGxldGVUb2RvKHRvZG8uaWQpfSAvPlxuICAgICAgICAgIDxsYWJlbCBv
bkRvdWJsZUNsaWNrPXt0aGlzLmhhbmRsZURvdWJsZUNsaWNrfT5cbiAgICAgICAgICAgIHt0b2Rv
LnRleHR9XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1c
ImRlc3Ryb3lcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gZGVsZXRlVG9kbyh0
b2RvLmlkKX0gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJu
IChcbiAgICAgIDxsaSBjbGFzc05hbWU9e2NsYXNzbmFtZXMoe1xuICAgICAgICBjb21wbGV0ZWQ6
IHRvZG8uY29tcGxldGVkLFxuICAgICAgICBlZGl0aW5nOiB0aGlzLnN0YXRlLmVkaXRpbmdcbiAg
ICAgIH0pfT5cbiAgICAgICAge2VsZW1lbnR9XG4gICAgICA8L2xpPlxuICAgIClcbiAgfVxufVxu
XG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvY29tcG9uZW50cy9Ub2RvSXRl
bS5qc1xuICoqLyIsImltcG9ydCBSZWFjdCwgeyBQcm9wVHlwZXMgfSBmcm9tICdyZWFjdCdcbmlt
cG9ydCB7IGJpbmRBY3Rpb25DcmVhdG9ycyB9IGZyb20gJ3JlZHV4J1xuaW1wb3J0IHsgY29ubmVj
dCB9IGZyb20gJ3JlYWN0LXJlZHV4J1xuaW1wb3J0IEhlYWRlciBmcm9tICcuLi9jb21wb25lbnRz
L0hlYWRlcidcbmltcG9ydCBNYWluU2VjdGlvbiBmcm9tICcuLi9jb21wb25lbnRzL01haW5TZWN0
aW9uJ1xuaW1wb3J0ICogYXMgVG9kb0FjdGlvbnMgZnJvbSAnLi4vYWN0aW9ucydcblxuY29uc3Qg
QXBwID0gKHt0b2RvcywgYWN0aW9uc30pID0+IChcbiAgPGRpdj5cbiAgICA8SGVhZGVyIGFkZFRv
ZG89e2FjdGlvbnMuYWRkVG9kb30gLz5cbiAgICA8TWFpblNlY3Rpb24gdG9kb3M9e3RvZG9zfSBh
Y3Rpb25zPXthY3Rpb25zfSAvPlxuICA8L2Rpdj5cbilcblxuQXBwLnByb3BUeXBlcyA9IHtcbiAg
dG9kb3M6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBhY3Rpb25zOiBQcm9wVHlwZXMu
b2JqZWN0LmlzUmVxdWlyZWRcbn1cblxuY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gc3RhdGUgPT4g
KHtcbiAgdG9kb3M6IHN0YXRlLnRvZG9zXG59KVxuXG5jb25zdCBtYXBEaXNwYXRjaFRvUHJvcHMg
PSBkaXNwYXRjaCA9PiAoe1xuICAgIGFjdGlvbnM6IGJpbmRBY3Rpb25DcmVhdG9ycyhUb2RvQWN0
aW9ucywgZGlzcGF0Y2gpXG59KVxuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KFxuICBtYXBTdGF0
ZVRvUHJvcHMsXG4gIG1hcERpc3BhdGNoVG9Qcm9wc1xuKShBcHApXG5cblxuXG4vKiogV0VCUEFD
SyBGT09URVIgKipcbiAqKiAuL3NyYy9jb250YWluZXJzL0FwcC5qc1xuICoqLyIsImltcG9ydCBS
ZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHJlbmRlciB9IGZyb20gJ3JlYWN0LWRvbSdcbmlt
cG9ydCB7IGNyZWF0ZVN0b3JlIH0gZnJvbSAncmVkdXgnXG5pbXBvcnQgeyBQcm92aWRlciB9IGZy
b20gJ3JlYWN0LXJlZHV4J1xuaW1wb3J0IEFwcCBmcm9tICcuL2NvbnRhaW5lcnMvQXBwJ1xuaW1w
b3J0IHJlZHVjZXIgZnJvbSAnLi9yZWR1Y2VycydcbmltcG9ydCAndG9kb212Yy1hcHAtY3NzL2lu
ZGV4LmNzcydcblxuY29uc3Qgc3RvcmUgPSBjcmVhdGVTdG9yZShyZWR1Y2VyKVxuXG5yZW5kZXIo
XG4gIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgIDxBcHAgLz5cbiAgPC9Qcm92aWRlcj4s
XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290JylcbilcblxuXG5cbi8qKiBXRUJQQUNL
IEZPT1RFUiAqKlxuICoqIC4vc3JjL2luZGV4LmpzXG4gKiovIiwiaW1wb3J0IHsgY29tYmluZVJl
ZHVjZXJzIH0gZnJvbSAncmVkdXgnXG5pbXBvcnQgdG9kb3MgZnJvbSAnLi90b2RvcydcblxuY29u
c3Qgcm9vdFJlZHVjZXIgPSBjb21iaW5lUmVkdWNlcnMoe1xuICB0b2Rvc1xufSlcblxuZXhwb3J0
IGRlZmF1bHQgcm9vdFJlZHVjZXJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4v
c3JjL3JlZHVjZXJzL2luZGV4LmpzXG4gKiovIiwiaW1wb3J0IHsgQUREX1RPRE8sIERFTEVURV9U
T0RPLCBFRElUX1RPRE8sIENPTVBMRVRFX1RPRE8sIENPTVBMRVRFX0FMTCwgQ0xFQVJfQ09NUExF
VEVEIH0gZnJvbSAnLi4vY29uc3RhbnRzL0FjdGlvblR5cGVzJ1xuXG5jb25zdCBpbml0aWFsU3Rh
dGUgPSBbXVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b2RvcyhzdGF0ZSA9IGluaXRpYWxT
dGF0ZSwgYWN0aW9uKSB7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlIEFERF9U
T0RPOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHtcbiAgICAg
ICAgICBpZDogc3RhdGUucmVkdWNlKChtYXhJZCwgdG9kbykgPT4gTWF0aC5tYXgodG9kby5pZCwg
bWF4SWQpLCAtMSkgKyAxLFxuICAgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsXG4gICAgICAgICAg
dGV4dDogYWN0aW9uLnRleHRcbiAgICAgICAgfVxuICAgICAgXVxuXG4gICAgY2FzZSBERUxFVEVf
VE9ETzpcbiAgICAgIHJldHVybiBzdGF0ZS5maWx0ZXIodG9kbyA9PlxuICAgICAgICB0b2RvLmlk
ICE9PSBhY3Rpb24uaWRcbiAgICAgIClcblxuICAgIGNhc2UgRURJVF9UT0RPOlxuICAgICAgcmV0
dXJuIHN0YXRlLm1hcCh0b2RvID0+XG4gICAgICAgIHRvZG8uaWQgPT09IGFjdGlvbi5pZCA/XG4g
ICAgICAgICAgeyAuLi50b2RvLCB0ZXh0OiBhY3Rpb24udGV4dCB9IDpcbiAgICAgICAgICB0b2Rv
XG4gICAgICApXG5cbiAgICBjYXNlIENPTVBMRVRFX1RPRE86XG4gICAgICByZXR1cm4gc3RhdGUu
bWFwKHRvZG8gPT5cbiAgICAgICAgdG9kby5pZCA9PT0gYWN0aW9uLmlkID9cbiAgICAgICAgICB7
IC4uLnRvZG8sIGNvbXBsZXRlZDogIXRvZG8uY29tcGxldGVkIH0gOlxuICAgICAgICAgIHRvZG9c
biAgICAgIClcblxuICAgIGNhc2UgQ09NUExFVEVfQUxMOlxuICAgICAgY29uc3QgYXJlQWxsTWFy
a2VkID0gc3RhdGUuZXZlcnkodG9kbyA9PiB0b2RvLmNvbXBsZXRlZClcbiAgICAgIHJldHVybiBz
dGF0ZS5tYXAodG9kbyA9PiAoe1xuICAgICAgICAuLi50b2RvLFxuICAgICAgICBjb21wbGV0ZWQ6
ICFhcmVBbGxNYXJrZWRcbiAgICAgIH0pKVxuXG4gICAgY2FzZSBDTEVBUl9DT01QTEVURUQ6XG4g
ICAgICByZXR1cm4gc3RhdGUuZmlsdGVyKHRvZG8gPT4gdG9kby5jb21wbGV0ZWQgPT09IGZhbHNl
KVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZVxuICB9XG59XG5cblxuXG4vKiog
V0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9yZWR1Y2Vycy90b2Rvcy5qc1xuICoqLyIsIid1
c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG52YXIgaGFz
T3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHByb3BJ
c0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5m
dW5jdGlvbiB0b09iamVjdCh2YWwpIHtcblx0aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVu
ZGVmaW5lZCkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gY2Fubm90
IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkJyk7XG5cdH1cblxuXHRyZXR1cm4gT2Jq
ZWN0KHZhbCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcblx0dHJ5IHtcblx0
XHRpZiAoIU9iamVjdC5hc3NpZ24pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0
XHQvLyBEZXRlY3QgYnVnZ3kgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjgg
dmVyc2lvbnMuXG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVz
L2RldGFpbD9pZD00MTE4XG5cdFx0dmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBl
c2xpbnQtZGlzYWJsZS1saW5lXG5cdFx0dGVzdDFbNV0gPSAnZGUnO1xuXHRcdGlmIChPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1Jykge1xuXHRcdFx0cmV0dXJuIGZh
bHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1
ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDIgPSB7fTtcblx0XHRmb3IgKHZhciBpID0g
MDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdHRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUo
aSldID0gaTtcblx0XHR9XG5cdFx0dmFyIG9yZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5h
bWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtcblx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0
XHR9KTtcblx0XHRpZiAob3JkZXIyLmpvaW4oJycpICE9PSAnMDEyMzQ1Njc4OScpIHtcblx0XHRc
dHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3Jn
L3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QzID0ge307XG5cdFx0J2Fi
Y2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7
XG5cdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdH0pO1xuXHRcdGlmIChPYmplY3Qu
a2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpvaW4oJycpICE9PVxuXHRcdFx0XHQnYWJj
ZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0
cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHQvLyBXZSBkb24ndCBleHBlY3QgYW55
IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxuXHRcdHJldHVy
biBmYWxzZTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8g
T2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuXHR2YXIgZnJvbTtc
blx0dmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTtcblx0dmFyIHN5bWJvbHM7XG5cblx0Zm9yICh2
YXIgcyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcblx0XHRmcm9tID0gT2JqZWN0
KGFyZ3VtZW50c1tzXSk7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuXHRcdFx0aWYg
KGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRcdFx0XHR0b1trZXldID0gZnJv
bVtrZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlT
eW1ib2xzKSB7XG5cdFx0XHRzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhm
cm9tKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xu
XHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7XG5c
dFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xuXHRcdFx0XHR9XG5c
dFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRvO1xufTtcblxuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXNjcmlwdHMvfi9vYmpl
Y3QtYXNzaWduL2luZGV4LmpzXG4gKiogbW9kdWxlIGlkID0gMjA4XG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8vVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBF
UzYgZXh0ZW5zaW9ucyB0byB0aGUgY29yZSBQcm9taXNlcy9BKyBBUElcblxudmFyIFByb21pc2Ug
PSByZXF1aXJlKCcuL2NvcmUuanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQcm9taXNlO1xuXG4v
KiBTdGF0aWMgRnVuY3Rpb25zICovXG5cbnZhciBUUlVFID0gdmFsdWVQcm9taXNlKHRydWUpO1xu
dmFyIEZBTFNFID0gdmFsdWVQcm9taXNlKGZhbHNlKTtcbnZhciBOVUxMID0gdmFsdWVQcm9taXNl
KG51bGwpO1xudmFyIFVOREVGSU5FRCA9IHZhbHVlUHJvbWlzZSh1bmRlZmluZWQpO1xudmFyIFpF
Uk8gPSB2YWx1ZVByb21pc2UoMCk7XG52YXIgRU1QVFlTVFJJTkcgPSB2YWx1ZVByb21pc2UoJycp
O1xuXG5mdW5jdGlvbiB2YWx1ZVByb21pc2UodmFsdWUpIHtcbiAgdmFyIHAgPSBuZXcgUHJvbWlz
ZShQcm9taXNlLl82MSk7XG4gIHAuXzgxID0gMTtcbiAgcC5fNjUgPSB2YWx1ZTtcbiAgcmV0dXJu
IHA7XG59XG5Qcm9taXNlLnJlc29sdmUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgaWYgKHZhbHVl
IGluc3RhbmNlb2YgUHJvbWlzZSkgcmV0dXJuIHZhbHVlO1xuXG4gIGlmICh2YWx1ZSA9PT0gbnVs
bCkgcmV0dXJuIE5VTEw7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gVU5ERUZJ
TkVEO1xuICBpZiAodmFsdWUgPT09IHRydWUpIHJldHVybiBUUlVFO1xuICBpZiAodmFsdWUgPT09
IGZhbHNlKSByZXR1cm4gRkFMU0U7XG4gIGlmICh2YWx1ZSA9PT0gMCkgcmV0dXJuIFpFUk87XG4g
IGlmICh2YWx1ZSA9PT0gJycpIHJldHVybiBFTVBUWVNUUklORztcblxuICBpZiAodHlwZW9mIHZh
bHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0
cnkge1xuICAgICAgdmFyIHRoZW4gPSB2YWx1ZS50aGVuO1xuICAgICAgaWYgKHR5cGVvZiB0aGVu
ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSh0aGVuLmJpbmQo
dmFsdWUpKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgcmVqZWN0KGV4KTtc
biAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdmFsdWVQcm9taXNlKHZhbHVlKTtcbn07
XG5cblByb21pc2UuYWxsID0gZnVuY3Rpb24gKGFycikge1xuICB2YXIgYXJncyA9IEFycmF5LnBy
b3RvdHlwZS5zbGljZS5jYWxsKGFycik7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9u
IChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHJldHVybiBy
ZXNvbHZlKFtdKTtcbiAgICB2YXIgcmVtYWluaW5nID0gYXJncy5sZW5ndGg7XG4gICAgZnVuY3Rp
b24gcmVzKGksIHZhbCkge1xuICAgICAgaWYgKHZhbCAmJiAodHlwZW9mIHZhbCA9PT0gJ29iamVj
dCcgfHwgdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgaWYgKHZhbCBpbnN0
YW5jZW9mIFByb21pc2UgJiYgdmFsLnRoZW4gPT09IFByb21pc2UucHJvdG90eXBlLnRoZW4pIHtc
biAgICAgICAgICB3aGlsZSAodmFsLl84MSA9PT0gMykge1xuICAgICAgICAgICAgdmFsID0gdmFs
Ll82NTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhbC5fODEgPT09IDEpIHJldHVybiBy
ZXMoaSwgdmFsLl82NSk7XG4gICAgICAgICAgaWYgKHZhbC5fODEgPT09IDIpIHJlamVjdCh2YWwu
XzY1KTtcbiAgICAgICAgICB2YWwudGhlbihmdW5jdGlvbiAodmFsKSB7XG4gICAgICAgICAgICBy
ZXMoaSwgdmFsKTtcbiAgICAgICAgICB9LCByZWplY3QpO1xuICAgICAgICAgIHJldHVybjtcbiAg
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgdGhlbiA9IHZhbC50aGVuO1xuICAgICAgICAg
IGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFyIHAgPSBu
ZXcgUHJvbWlzZSh0aGVuLmJpbmQodmFsKSk7XG4gICAgICAgICAgICBwLnRoZW4oZnVuY3Rpb24g
KHZhbCkge1xuICAgICAgICAgICAgICByZXMoaSwgdmFsKTtcbiAgICAgICAgICAgIH0sIHJlamVj
dCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9
XG4gICAgICBhcmdzW2ldID0gdmFsO1xuICAgICAgaWYgKC0tcmVtYWluaW5nID09PSAwKSB7XG4g
ICAgICAgIHJlc29sdmUoYXJncyk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzKGksIGFyZ3NbaV0pO1xuICAgIH1c
biAgfSk7XG59O1xuXG5Qcm9taXNlLnJlamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1
cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlamVjdCh2
YWx1ZSk7XG4gIH0pO1xufTtcblxuUHJvbWlzZS5yYWNlID0gZnVuY3Rpb24gKHZhbHVlcykge1xu
ICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZh
bHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKXtcbiAgICAgIFByb21pc2UucmVzb2x2ZSh2YWx1
ZSkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbi8qIFByb3Rv
dHlwZSBNZXRob2RzICovXG5cblByb21pc2UucHJvdG90eXBlWydjYXRjaCddID0gZnVuY3Rpb24g
KG9uUmVqZWN0ZWQpIHtcbiAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcbn07
XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1zY3JpcHRzL34vcHJvbWlzZS9saWIvZXM2LWV4dGVuc2lvbnMuanNcbiAqKiBtb2R1bGUg
aWQgPSAyMDlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0Jztcblxu
dmFyIFByb21pc2UgPSByZXF1aXJlKCcuL2NvcmUnKTtcblxudmFyIERFRkFVTFRfV0hJVEVMSVNU
ID0gW1xuICBSZWZlcmVuY2VFcnJvcixcbiAgVHlwZUVycm9yLFxuICBSYW5nZUVycm9yXG5dO1xu
XG52YXIgZW5hYmxlZCA9IGZhbHNlO1xuZXhwb3J0cy5kaXNhYmxlID0gZGlzYWJsZTtcbmZ1bmN0
aW9uIGRpc2FibGUoKSB7XG4gIGVuYWJsZWQgPSBmYWxzZTtcbiAgUHJvbWlzZS5fMTAgPSBudWxs
O1xuICBQcm9taXNlLl85NyA9IG51bGw7XG59XG5cbmV4cG9ydHMuZW5hYmxlID0gZW5hYmxlO1xu
ZnVuY3Rpb24gZW5hYmxlKG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4g
IGlmIChlbmFibGVkKSBkaXNhYmxlKCk7XG4gIGVuYWJsZWQgPSB0cnVlO1xuICB2YXIgaWQgPSAw
O1xuICB2YXIgZGlzcGxheUlkID0gMDtcbiAgdmFyIHJlamVjdGlvbnMgPSB7fTtcbiAgUHJvbWlz
ZS5fMTAgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgIGlmIChcbiAgICAgIHByb21pc2UuXzgx
ID09PSAyICYmIC8vIElTIFJFSkVDVEVEXG4gICAgICByZWplY3Rpb25zW3Byb21pc2UuXzcyXVxu
ICAgICkge1xuICAgICAgaWYgKHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdLmxvZ2dlZCkge1xuICAg
ICAgICBvbkhhbmRsZWQocHJvbWlzZS5fNzIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xl
YXJUaW1lb3V0KHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdLnRpbWVvdXQpO1xuICAgICAgfVxuICAg
ICAgZGVsZXRlIHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdO1xuICAgIH1cbiAgfTtcbiAgUHJvbWlz
ZS5fOTcgPSBmdW5jdGlvbiAocHJvbWlzZSwgZXJyKSB7XG4gICAgaWYgKHByb21pc2UuXzQ1ID09
PSAwKSB7IC8vIG5vdCB5ZXQgaGFuZGxlZFxuICAgICAgcHJvbWlzZS5fNzIgPSBpZCsrO1xuICAg
ICAgcmVqZWN0aW9uc1twcm9taXNlLl83Ml0gPSB7XG4gICAgICAgIGRpc3BsYXlJZDogbnVsbCxc
biAgICAgICAgZXJyb3I6IGVycixcbiAgICAgICAgdGltZW91dDogc2V0VGltZW91dChcbiAgICAg
ICAgICBvblVuaGFuZGxlZC5iaW5kKG51bGwsIHByb21pc2UuXzcyKSxcbiAgICAgICAgICAvLyBG
b3IgcmVmZXJlbmNlIGVycm9ycyBhbmQgdHlwZSBlcnJvcnMsIHRoaXMgYWxtb3N0IGFsd2F5c1xu
ICAgICAgICAgIC8vIG1lYW5zIHRoZSBwcm9ncmFtbWVyIG1hZGUgYSBtaXN0YWtlLCBzbyBsb2cg
dGhlbSBhZnRlciBqdXN0XG4gICAgICAgICAgLy8gMTAwbXNcbiAgICAgICAgICAvLyBvdGhlcndp
c2UsIHdhaXQgMiBzZWNvbmRzIHRvIHNlZSBpZiB0aGV5IGdldCBoYW5kbGVkXG4gICAgICAgICAg
bWF0Y2hXaGl0ZWxpc3QoZXJyLCBERUZBVUxUX1dISVRFTElTVClcbiAgICAgICAgICAgID8gMTAw
XG4gICAgICAgICAgICA6IDIwMDBcbiAgICAgICAgKSxcbiAgICAgICAgbG9nZ2VkOiBmYWxzZVxu
ICAgICAgfTtcbiAgICB9XG4gIH07XG4gIGZ1bmN0aW9uIG9uVW5oYW5kbGVkKGlkKSB7XG4gICAg
aWYgKFxuICAgICAgb3B0aW9ucy5hbGxSZWplY3Rpb25zIHx8XG4gICAgICBtYXRjaFdoaXRlbGlz
dChcbiAgICAgICAgcmVqZWN0aW9uc1tpZF0uZXJyb3IsXG4gICAgICAgIG9wdGlvbnMud2hpdGVs
aXN0IHx8IERFRkFVTFRfV0hJVEVMSVNUXG4gICAgICApXG4gICAgKSB7XG4gICAgICByZWplY3Rp
b25zW2lkXS5kaXNwbGF5SWQgPSBkaXNwbGF5SWQrKztcbiAgICAgIGlmIChvcHRpb25zLm9uVW5o
YW5kbGVkKSB7XG4gICAgICAgIHJlamVjdGlvbnNbaWRdLmxvZ2dlZCA9IHRydWU7XG4gICAgICAg
IG9wdGlvbnMub25VbmhhbmRsZWQoXG4gICAgICAgICAgcmVqZWN0aW9uc1tpZF0uZGlzcGxheUlk
LFxuICAgICAgICAgIHJlamVjdGlvbnNbaWRdLmVycm9yXG4gICAgICAgICk7XG4gICAgICB9IGVs
c2Uge1xuICAgICAgICByZWplY3Rpb25zW2lkXS5sb2dnZWQgPSB0cnVlO1xuICAgICAgICBsb2dF
cnJvcihcbiAgICAgICAgICByZWplY3Rpb25zW2lkXS5kaXNwbGF5SWQsXG4gICAgICAgICAgcmVq
ZWN0aW9uc1tpZF0uZXJyb3JcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZnVu
Y3Rpb24gb25IYW5kbGVkKGlkKSB7XG4gICAgaWYgKHJlamVjdGlvbnNbaWRdLmxvZ2dlZCkge1xu
ICAgICAgaWYgKG9wdGlvbnMub25IYW5kbGVkKSB7XG4gICAgICAgIG9wdGlvbnMub25IYW5kbGVk
KHJlamVjdGlvbnNbaWRdLmRpc3BsYXlJZCwgcmVqZWN0aW9uc1tpZF0uZXJyb3IpO1xuICAgICAg
fSBlbHNlIGlmICghcmVqZWN0aW9uc1tpZF0ub25VbmhhbmRsZWQpIHtcbiAgICAgICAgY29uc29s
ZS53YXJuKFxuICAgICAgICAgICdQcm9taXNlIFJlamVjdGlvbiBIYW5kbGVkIChpZDogJyArIHJl
amVjdGlvbnNbaWRdLmRpc3BsYXlJZCArICcpOidcbiAgICAgICAgKTtcbiAgICAgICAgY29uc29s
ZS53YXJuKFxuICAgICAgICAgICcgIFRoaXMgbWVhbnMgeW91IGNhbiBpZ25vcmUgYW55IHByZXZp
b3VzIG1lc3NhZ2VzIG9mIHRoZSBmb3JtIFwiUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uXCIgd2l0aCBpZCAnICtcbiAgICAgICAgICByZWplY3Rpb25zW2lkXS5kaXNwbGF5SWQg
KyAnLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbG9n
RXJyb3IoaWQsIGVycm9yKSB7XG4gIGNvbnNvbGUud2FybignUG9zc2libGUgVW5oYW5kbGVkIFBy
b21pc2UgUmVqZWN0aW9uIChpZDogJyArIGlkICsgJyk6Jyk7XG4gIHZhciBlcnJTdHIgPSAoZXJy
b3IgJiYgKGVycm9yLnN0YWNrIHx8IGVycm9yKSkgKyAnJztcbiAgZXJyU3RyLnNwbGl0KCdcXG4n
KS5mb3JFYWNoKGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgY29uc29sZS53YXJuKCcgICcgKyBsaW5l
KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoV2hpdGVsaXN0KGVycm9yLCBsaXN0KSB7XG4g
IHJldHVybiBsaXN0LnNvbWUoZnVuY3Rpb24gKGNscykge1xuICAgIHJldHVybiBlcnJvciBpbnN0
YW5jZW9mIGNscztcbiAgfSk7XG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vcmVhY3Qtc2NyaXB0cy9+L3Byb21pc2UvbGliL3JlamVjdGlvbi10
cmFja2luZy5qc1xuICoqIG1vZHVsZSBpZCA9IDIxMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4g
KiovIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihtb2R1bGUpIHtcclxuXHRpZighbW9kdWxl
LndlYnBhY2tQb2x5ZmlsbCkge1xyXG5cdFx0bW9kdWxlLmRlcHJlY2F0ZSA9IGZ1bmN0aW9uKCkg
e307XHJcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcclxuXHRcdC8vIG1vZHVsZS5wYXJlbnQgPSB1
bmRlZmluZWQgYnkgZGVmYXVsdFxyXG5cdFx0bW9kdWxlLmNoaWxkcmVuID0gW107XHJcblx0XHRt
b2R1bGUud2VicGFja1BvbHlmaWxsID0gMTtcclxuXHR9XHJcblx0cmV0dXJuIG1vZHVsZTtcclxu
fVxyXG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqICh3
ZWJwYWNrKS9idWlsZGluL21vZHVsZS5qc1xuICoqIG1vZHVsZSBpZCA9IDIxMVxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiKGZ1bmN0aW9uKHNlbGYpIHtcbiAgJ3VzZSBzdHJpY3QnO1xu
XG4gIGlmIChzZWxmLmZldGNoKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgc3VwcG9ydCA9
IHtcbiAgICBzZWFyY2hQYXJhbXM6ICdVUkxTZWFyY2hQYXJhbXMnIGluIHNlbGYsXG4gICAgaXRl
cmFibGU6ICdTeW1ib2wnIGluIHNlbGYgJiYgJ2l0ZXJhdG9yJyBpbiBTeW1ib2wsXG4gICAgYmxv
YjogJ0ZpbGVSZWFkZXInIGluIHNlbGYgJiYgJ0Jsb2InIGluIHNlbGYgJiYgKGZ1bmN0aW9uKCkg
e1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3IEJsb2IoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxu
ICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0p
KCksXG4gICAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gc2VsZixcbiAgICBhcnJheUJ1ZmZlcjog
J0FycmF5QnVmZmVyJyBpbiBzZWxmXG4gIH1cblxuICBmdW5jdGlvbiBub3JtYWxpemVOYW1lKG5h
bWUpIHtcbiAgICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBuYW1lID0g
U3RyaW5nKG5hbWUpXG4gICAgfVxuICAgIGlmICgvW15hLXowLTlcXC0jJCUmJyorLlxcXl9gfH5d
L2kudGVzdChuYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBjaGFy
YWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWUnKVxuICAgIH1cbiAgICByZXR1cm4gbmFtZS50b0xv
d2VyQ2FzZSgpXG4gIH1cblxuICBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICAg
IGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZSA9IFN0cmluZyh2
YWx1ZSlcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICAvLyBCdWlsZCBhIGRlc3Ry
dWN0aXZlIGl0ZXJhdG9yIGZvciB0aGUgdmFsdWUgbGlzdFxuICBmdW5jdGlvbiBpdGVyYXRvckZv
cihpdGVtcykge1xuICAgIHZhciBpdGVyYXRvciA9IHtcbiAgICAgIG5leHQ6IGZ1bmN0aW9uKCkg
e1xuICAgICAgICB2YXIgdmFsdWUgPSBpdGVtcy5zaGlmdCgpXG4gICAgICAgIHJldHVybiB7ZG9u
ZTogdmFsdWUgPT09IHVuZGVmaW5lZCwgdmFsdWU6IHZhbHVlfVxuICAgICAgfVxuICAgIH1cblxu
ICAgIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gICAgICBpdGVyYXRvcltTeW1ib2wuaXRlcmF0
b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvclxuICAgICAgfVxuICAg
IH1cblxuICAgIHJldHVybiBpdGVyYXRvclxuICB9XG5cbiAgZnVuY3Rpb24gSGVhZGVycyhoZWFk
ZXJzKSB7XG4gICAgdGhpcy5tYXAgPSB7fVxuXG4gICAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBI
ZWFkZXJzKSB7XG4gICAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtc
biAgICAgICAgdGhpcy5hcHBlbmQobmFtZSwgdmFsdWUpXG4gICAgICB9LCB0aGlzKVxuXG4gICAg
fSBlbHNlIGlmIChoZWFkZXJzKSB7XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyho
ZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQobmFt
ZSwgaGVhZGVyc1tuYW1lXSlcbiAgICAgIH0sIHRoaXMpXG4gICAgfVxuICB9XG5cbiAgSGVhZGVy
cy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgICBuYW1lID0g
bm9ybWFsaXplTmFtZShuYW1lKVxuICAgIHZhbHVlID0gbm9ybWFsaXplVmFsdWUodmFsdWUpXG4g
ICAgdmFyIGxpc3QgPSB0aGlzLm1hcFtuYW1lXVxuICAgIGlmICghbGlzdCkge1xuICAgICAgbGlz
dCA9IFtdXG4gICAgICB0aGlzLm1hcFtuYW1lXSA9IGxpc3RcbiAgICB9XG4gICAgbGlzdC5wdXNo
KHZhbHVlKVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGVbJ2RlbGV0ZSddID0gZnVuY3Rpb24o
bmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxuICB9XG5c
biAgSGVhZGVycy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24obmFtZSkge1xuICAgIHZhciB2YWx1
ZXMgPSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxuICAgIHJldHVybiB2YWx1ZXMgPyB2
YWx1ZXNbMF0gOiBudWxsXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5nZXRBbGwgPSBmdW5j
dGlvbihuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldIHx8
IFtdXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4g
ICAgcmV0dXJuIHRoaXMubWFwLmhhc093blByb3BlcnR5KG5vcm1hbGl6ZU5hbWUobmFtZSkpXG4g
IH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xu
ICAgIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldID0gW25vcm1hbGl6ZVZhbHVlKHZhbHVl
KV1cbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihjYWxsYmFj
aywgdGhpc0FyZykge1xuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMubWFwKS5m
b3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHRoaXMubWFwW25hbWVdLmZvckVhY2goZnVu
Y3Rpb24odmFsdWUpIHtcbiAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB2YWx1ZSwgbmFt
ZSwgdGhpcylcbiAgICAgIH0sIHRoaXMpXG4gICAgfSwgdGhpcylcbiAgfVxuXG4gIEhlYWRlcnMu
cHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgaXRlbXMgPSBbXVxuICAgIHRo
aXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkgeyBpdGVtcy5wdXNoKG5hbWUpIH0pXG4g
ICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGUu
dmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGl0ZW1zID0gW11cbiAgICB0aGlzLmZvckVh
Y2goZnVuY3Rpb24odmFsdWUpIHsgaXRlbXMucHVzaCh2YWx1ZSkgfSlcbiAgICByZXR1cm4gaXRl
cmF0b3JGb3IoaXRlbXMpXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzID0gZnVu
Y3Rpb24oKSB7XG4gICAgdmFyIGl0ZW1zID0gW11cbiAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24o
dmFsdWUsIG5hbWUpIHsgaXRlbXMucHVzaChbbmFtZSwgdmFsdWVdKSB9KVxuICAgIHJldHVybiBp
dGVyYXRvckZvcihpdGVtcylcbiAgfVxuXG4gIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gICAg
SGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVu
dHJpZXNcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbnN1bWVkKGJvZHkpIHtcbiAgICBpZiAoYm9keS5i
b2R5VXNlZCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ0Fs
cmVhZHkgcmVhZCcpKVxuICAgIH1cbiAgICBib2R5LmJvZHlVc2VkID0gdHJ1ZVxuICB9XG5cbiAg
ZnVuY3Rpb24gZmlsZVJlYWRlclJlYWR5KHJlYWRlcikge1xuICAgIHJldHVybiBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5j
dGlvbigpIHtcbiAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KVxuICAgICAgfVxuICAgICAg
cmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KHJlYWRlci5lcnJv
cilcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZEJsb2JBc0FycmF5QnVm
ZmVyKGJsb2IpIHtcbiAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICAgIHJlYWRl
ci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKVxuICAgIHJldHVybiBmaWxlUmVhZGVyUmVhZHkocmVh
ZGVyKVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYikge1xuICAgIHZhciBy
ZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gICAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYilcbiAg
ICByZXR1cm4gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgfVxuXG4gIGZ1bmN0aW9uIEJvZHko
KSB7XG4gICAgdGhpcy5ib2R5VXNlZCA9IGZhbHNlXG5cbiAgICB0aGlzLl9pbml0Qm9keSA9IGZ1
bmN0aW9uKGJvZHkpIHtcbiAgICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxuICAgICAgaWYgKHR5
cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHlc
biAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iICYmIEJsb2IucHJvdG90eXBlLmlzUHJvdG90
eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5fYm9keUJsb2IgPSBib2R5XG4gICAgICB9IGVs
c2UgaWYgKHN1cHBvcnQuZm9ybURhdGEgJiYgRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBl
T2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5fYm9keUZvcm1EYXRhID0gYm9keVxuICAgICAgfSBl
bHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBl
LmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5LnRv
U3RyaW5nKClcbiAgICAgIH0gZWxzZSBpZiAoIWJvZHkpIHtcbiAgICAgICAgdGhpcy5fYm9keVRl
eHQgPSAnJ1xuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIEFycmF5QnVm
ZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIC8vIE9ubHkgc3Vw
cG9ydCBBcnJheUJ1ZmZlcnMgZm9yIFBPU1QgbWV0aG9kLlxuICAgICAgICAvLyBSZWNlaXZpbmcg
QXJyYXlCdWZmZXJzIGhhcHBlbnMgdmlhIEJsb2JzLCBpbnN0ZWFkLlxuICAgICAgfSBlbHNlIHtc
biAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCBCb2R5SW5pdCB0eXBlJylcbiAg
ICAgIH1cblxuICAgICAgaWYgKCF0aGlzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSkge1xu
ICAgICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhpcy5o
ZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCcpXG4g
ICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUJsb2IgJiYgdGhpcy5fYm9keUJsb2IudHlwZSkg
e1xuICAgICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsIHRoaXMuX2JvZHlC
bG9iLnR5cGUpXG4gICAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJM
U2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgICAg
dGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0t
dXJsZW5jb2RlZDtjaGFyc2V0PVVURi04JylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxu
ICAgIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICAgIHRoaXMuYmxvYiA9IGZ1bmN0aW9uKCkge1xu
ICAgICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgICBpZiAocmVqZWN0
ZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgICAgfVxuXG4gICAgICAgIGlm
ICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhp
cy5fYm9keUJsb2IpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4g
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFz
IGJsb2InKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29s
dmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAg
ICAgdGhpcy5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5i
bG9iKCkudGhlbihyZWFkQmxvYkFzQXJyYXlCdWZmZXIpXG4gICAgICB9XG5cbiAgICAgIHRoaXMu
dGV4dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlz
KVxuICAgICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAg
ICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICAgIHJldHVy
biByZWFkQmxvYkFzVGV4dCh0aGlzLl9ib2R5QmxvYilcbiAgICAgICAgfSBlbHNlIGlmICh0aGlz
Ll9ib2R5Rm9ybURhdGEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCBy
ZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCcpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICAgICAgfVxuICAgICAg
fVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAg
dmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICAgICAgcmV0dXJuIHJlamVjdGVkID8g
cmVqZWN0ZWQgOiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpXG4gICAgICB9XG4gICAg
fVxuXG4gICAgaWYgKHN1cHBvcnQuZm9ybURhdGEpIHtcbiAgICAgIHRoaXMuZm9ybURhdGEgPSBm
dW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oZGVjb2RlKVxuICAg
ICAgfVxuICAgIH1cblxuICAgIHRoaXMuanNvbiA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJu
IHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xu
ICB9XG5cbiAgLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBu
b3JtYWxpemVkXG4gIHZhciBtZXRob2RzID0gWydERUxFVEUnLCAnR0VUJywgJ0hFQUQnLCAnT1BU
SU9OUycsICdQT1NUJywgJ1BVVCddXG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplTWV0aG9kKG1ldGhv
ZCkge1xuICAgIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgICByZXR1cm4g
KG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xKSA/IHVwY2FzZWQgOiBtZXRob2RcbiAgfVxu
XG4gIGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0
aW9ucyB8fCB7fVxuICAgIHZhciBib2R5ID0gb3B0aW9ucy5ib2R5XG4gICAgaWYgKFJlcXVlc3Qu
cHJvdG90eXBlLmlzUHJvdG90eXBlT2YoaW5wdXQpKSB7XG4gICAgICBpZiAoaW5wdXQuYm9keVVz
ZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJylcbiAgICAg
IH1cbiAgICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG4gICAgICB0aGlzLmNyZWRlbnRpYWxzID0g
aW5wdXQuY3JlZGVudGlhbHNcbiAgICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICAg
IHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG4gICAgICB9XG4gICAg
ICB0aGlzLm1ldGhvZCA9IGlucHV0Lm1ldGhvZFxuICAgICAgdGhpcy5tb2RlID0gaW5wdXQubW9k
ZVxuICAgICAgaWYgKCFib2R5KSB7XG4gICAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXRcbiAg
ICAgICAgaW5wdXQuYm9keVVzZWQgPSB0cnVlXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAg
IHRoaXMudXJsID0gaW5wdXRcbiAgICB9XG5cbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gb3B0aW9u
cy5jcmVkZW50aWFscyB8fCB0aGlzLmNyZWRlbnRpYWxzIHx8ICdvbWl0J1xuICAgIGlmIChvcHRp
b25zLmhlYWRlcnMgfHwgIXRoaXMuaGVhZGVycykge1xuICAgICAgdGhpcy5oZWFkZXJzID0gbmV3
IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICAgIH1cbiAgICB0aGlzLm1ldGhvZCA9IG5vcm1h
bGl6ZU1ldGhvZChvcHRpb25zLm1ldGhvZCB8fCB0aGlzLm1ldGhvZCB8fCAnR0VUJylcbiAgICB0
aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGxcbiAgICB0aGlzLnJl
ZmVycmVyID0gbnVsbFxuXG4gICAgaWYgKCh0aGlzLm1ldGhvZCA9PT0gJ0dFVCcgfHwgdGhpcy5t
ZXRob2QgPT09ICdIRUFEJykgJiYgYm9keSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcign
Qm9keSBub3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMnKVxuICAgIH1cbiAgICB0
aGlzLl9pbml0Qm9keShib2R5KVxuICB9XG5cbiAgUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBm
dW5jdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IFJlcXVlc3QodGhpcylcbiAgfVxuXG4gIGZ1bmN0
aW9uIGRlY29kZShib2R5KSB7XG4gICAgdmFyIGZvcm0gPSBuZXcgRm9ybURhdGEoKVxuICAgIGJv
ZHkudHJpbSgpLnNwbGl0KCcmJykuZm9yRWFjaChmdW5jdGlvbihieXRlcykge1xuICAgICAgaWYg
KGJ5dGVzKSB7XG4gICAgICAgIHZhciBzcGxpdCA9IGJ5dGVzLnNwbGl0KCc9JylcbiAgICAgICAg
dmFyIG5hbWUgPSBzcGxpdC5zaGlmdCgpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIHZh
ciB2YWx1ZSA9IHNwbGl0LmpvaW4oJz0nKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICBm
b3JtLmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQobmFtZSksIGRlY29kZVVSSUNvbXBvbmVudCh2
YWx1ZSkpXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gZm9ybVxuICB9XG5cbiAgZnVuY3Rp
b24gaGVhZGVycyh4aHIpIHtcbiAgICB2YXIgaGVhZCA9IG5ldyBIZWFkZXJzKClcbiAgICB2YXIg
cGFpcnMgPSAoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIHx8ICcnKS50cmltKCkuc3BsaXQo
J1xcbicpXG4gICAgcGFpcnMuZm9yRWFjaChmdW5jdGlvbihoZWFkZXIpIHtcbiAgICAgIHZhciBz
cGxpdCA9IGhlYWRlci50cmltKCkuc3BsaXQoJzonKVxuICAgICAgdmFyIGtleSA9IHNwbGl0LnNo
aWZ0KCkudHJpbSgpXG4gICAgICB2YXIgdmFsdWUgPSBzcGxpdC5qb2luKCc6JykudHJpbSgpXG4g
ICAgICBoZWFkLmFwcGVuZChrZXksIHZhbHVlKVxuICAgIH0pXG4gICAgcmV0dXJuIGhlYWRcbiAg
fVxuXG4gIEJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxuICBmdW5jdGlvbiBSZXNwb25z
ZShib2R5SW5pdCwgb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgb3B0aW9u
cyA9IHt9XG4gICAgfVxuXG4gICAgdGhpcy50eXBlID0gJ2RlZmF1bHQnXG4gICAgdGhpcy5zdGF0
dXMgPSBvcHRpb25zLnN0YXR1c1xuICAgIHRoaXMub2sgPSB0aGlzLnN0YXR1cyA+PSAyMDAgJiYg
dGhpcy5zdGF0dXMgPCAzMDBcbiAgICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1c1Rl
eHRcbiAgICB0aGlzLmhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJz
ID8gb3B0aW9ucy5oZWFkZXJzIDogbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICAgIHRo
aXMudXJsID0gb3B0aW9ucy51cmwgfHwgJydcbiAgICB0aGlzLl9pbml0Qm9keShib2R5SW5pdClc
biAgfVxuXG4gIEJvZHkuY2FsbChSZXNwb25zZS5wcm90b3R5cGUpXG5cbiAgUmVzcG9uc2UucHJv
dG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlz
Ll9ib2R5SW5pdCwge1xuICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICAgIHN0YXR1c1Rl
eHQ6IHRoaXMuc3RhdHVzVGV4dCxcbiAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVh
ZGVycyksXG4gICAgICB1cmw6IHRoaXMudXJsXG4gICAgfSlcbiAgfVxuXG4gIFJlc3BvbnNlLmVy
cm9yID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGws
IHtzdGF0dXM6IDAsIHN0YXR1c1RleHQ6ICcnfSlcbiAgICByZXNwb25zZS50eXBlID0gJ2Vycm9y
J1xuICAgIHJldHVybiByZXNwb25zZVxuICB9XG5cbiAgdmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBb
MzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cbiAgUmVzcG9uc2UucmVkaXJlY3QgPSBmdW5jdGlv
bih1cmwsIHN0YXR1cykge1xuICAgIGlmIChyZWRpcmVjdFN0YXR1c2VzLmluZGV4T2Yoc3RhdHVz
KSA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBj
b2RlJylcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IHN0
YXR1cywgaGVhZGVyczoge2xvY2F0aW9uOiB1cmx9fSlcbiAgfVxuXG4gIHNlbGYuSGVhZGVycyA9
IEhlYWRlcnNcbiAgc2VsZi5SZXF1ZXN0ID0gUmVxdWVzdFxuICBzZWxmLlJlc3BvbnNlID0gUmVz
cG9uc2VcblxuICBzZWxmLmZldGNoID0gZnVuY3Rpb24oaW5wdXQsIGluaXQpIHtcbiAgICByZXR1
cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVx
dWVzdFxuICAgICAgaWYgKFJlcXVlc3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoaW5wdXQpICYm
ICFpbml0KSB7XG4gICAgICAgIHJlcXVlc3QgPSBpbnB1dFxuICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KVxuICAgICAgfVxuXG4gICAgICB2
YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KClcblxuICAgICAgZnVuY3Rpb24gcmVzcG9uc2VV
UkwoKSB7XG4gICAgICAgIGlmICgncmVzcG9uc2VVUkwnIGluIHhocikge1xuICAgICAgICAgIHJl
dHVybiB4aHIucmVzcG9uc2VVUkxcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF2b2lkIHNlY3Vy
aXR5IHdhcm5pbmdzIG9uIGdldFJlc3BvbnNlSGVhZGVyIHdoZW4gbm90IGFsbG93ZWQgYnkgQ09S
U1xuICAgICAgICBpZiAoL15YLVJlcXVlc3QtVVJMOi9tLnRlc3QoeGhyLmdldEFsbFJlc3BvbnNl
SGVhZGVycygpKSkge1xuICAgICAgICAgIHJldHVybiB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ1gt
UmVxdWVzdC1VUkwnKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAg
ICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSB7XG4g
ICAgICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzLFxuICAgICAgICAgIHN0YXR1c1RleHQ6IHhoci5z
dGF0dXNUZXh0LFxuICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMoeGhyKSxcbiAgICAgICAgICB1
cmw6IHJlc3BvbnNlVVJMKClcbiAgICAgICAgfVxuICAgICAgICB2YXIgYm9keSA9ICdyZXNwb25z
ZScgaW4geGhyID8geGhyLnJlc3BvbnNlIDogeGhyLnJlc3BvbnNlVGV4dFxuICAgICAgICByZXNv
bHZlKG5ldyBSZXNwb25zZShib2R5LCBvcHRpb25zKSlcbiAgICAgIH1cblxuICAgICAgeGhyLm9u
ZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdv
cmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH1cblxuICAgICAgeGhyLm9udGltZW91dCA9IGZ1
bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0
IGZhaWxlZCcpKVxuICAgICAgfVxuXG4gICAgICB4aHIub3BlbihyZXF1ZXN0Lm1ldGhvZCwgcmVx
dWVzdC51cmwsIHRydWUpXG5cbiAgICAgIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnaW5j
bHVkZScpIHtcbiAgICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWVcbiAgICAgIH1cblxu
ICAgICAgaWYgKCdyZXNwb25zZVR5cGUnIGluIHhociAmJiBzdXBwb3J0LmJsb2IpIHtcbiAgICAg
ICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJ1xuICAgICAgfVxuXG4gICAgICByZXF1ZXN0Lmhl
YWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVx
dWVzdEhlYWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgIH0pXG5cbiAgICAgIHhoci5zZW5kKHR5cGVv
ZiByZXF1ZXN0Ll9ib2R5SW5pdCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogcmVxdWVzdC5fYm9k
eUluaXQpXG4gICAgfSlcbiAgfVxuICBzZWxmLmZldGNoLnBvbHlmaWxsID0gdHJ1ZVxufSkodHlw
ZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMpO1xuXG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qtc2NyaXB0cy9+L3do
YXR3Zy1mZXRjaC9mZXRjaC5qc1xuICoqIG1vZHVsZSBpZCA9IDIxMlxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3Ry
aWN0JztcblxudmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xudmFy
IFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG5cbnZhciBlbXB0eUZ1
bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIHRyYXZlcnNl
QWxsQ2hpbGRyZW4gPSByZXF1aXJlKCcuL3RyYXZlcnNlQWxsQ2hpbGRyZW4nKTtcblxudmFyIHR3
b0FyZ3VtZW50UG9vbGVyID0gUG9vbGVkQ2xhc3MudHdvQXJndW1lbnRQb29sZXI7XG52YXIgZm91
ckFyZ3VtZW50UG9vbGVyID0gUG9vbGVkQ2xhc3MuZm91ckFyZ3VtZW50UG9vbGVyO1xuXG52YXIg
dXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXggPSAvXFwvKy9nO1xuZnVuY3Rpb24gZXNjYXBlVXNl
clByb3ZpZGVkS2V5KHRleHQpIHtcbiAgcmV0dXJuICgnJyArIHRleHQpLnJlcGxhY2UodXNlclBy
b3ZpZGVkS2V5RXNjYXBlUmVnZXgsICckJi8nKTtcbn1cblxuLyoqXG4gKiBQb29sZWRDbGFzcyBy
ZXByZXNlbnRpbmcgdGhlIGJvb2trZWVwaW5nIGFzc29jaWF0ZWQgd2l0aCBwZXJmb3JtaW5nIGEg
Y2hpbGRcbiAqIHRyYXZlcnNhbC4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tzLlxu
ICpcbiAqIEBjb25zdHJ1Y3RvciBGb3JFYWNoQm9va0tlZXBpbmdcbiAqIEBwYXJhbSB7IWZ1bmN0
aW9ufSBmb3JFYWNoRnVuY3Rpb24gRnVuY3Rpb24gdG8gcGVyZm9ybSB0cmF2ZXJzYWwgd2l0aC5c
biAqIEBwYXJhbSB7Pyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBjb250ZXh0
IHdpdGguXG4gKi9cbmZ1bmN0aW9uIEZvckVhY2hCb29rS2VlcGluZyhmb3JFYWNoRnVuY3Rpb24s
IGZvckVhY2hDb250ZXh0KSB7XG4gIHRoaXMuZnVuYyA9IGZvckVhY2hGdW5jdGlvbjtcbiAgdGhp
cy5jb250ZXh0ID0gZm9yRWFjaENvbnRleHQ7XG4gIHRoaXMuY291bnQgPSAwO1xufVxuRm9yRWFj
aEJvb2tLZWVwaW5nLnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkge1xuICB0aGlz
LmZ1bmMgPSBudWxsO1xuICB0aGlzLmNvbnRleHQgPSBudWxsO1xuICB0aGlzLmNvdW50ID0gMDtc
bn07XG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oRm9yRWFjaEJvb2tLZWVwaW5nLCB0d29Bcmd1
bWVudFBvb2xlcik7XG5cbmZ1bmN0aW9uIGZvckVhY2hTaW5nbGVDaGlsZChib29rS2VlcGluZywg
Y2hpbGQsIG5hbWUpIHtcbiAgdmFyIGZ1bmMgPSBib29rS2VlcGluZy5mdW5jLFxuICAgICAgY29u
dGV4dCA9IGJvb2tLZWVwaW5nLmNvbnRleHQ7XG5cbiAgZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxk
LCBib29rS2VlcGluZy5jb3VudCsrKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGNo
aWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC5c
biAqXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2
ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4uZm9yZWFjaFxuICpcbiAqIFRoZSBwcm92aWRlZCBm
b3JFYWNoRnVuYyhjaGlsZCwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoXG4gKiBsZWFm
IGNoaWxkLlxuICpcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFp
bmVyLlxuICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmb3JFYWNoRnVuY1xuICogQHBhcmFt
IHsqfSBmb3JFYWNoQ29udGV4dCBDb250ZXh0IGZvciBmb3JFYWNoQ29udGV4dC5cbiAqL1xuZnVu
Y3Rpb24gZm9yRWFjaENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoRnVuYywgZm9yRWFjaENvbnRl
eHQpIHtcbiAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4g
IH1cbiAgdmFyIHRyYXZlcnNlQ29udGV4dCA9IEZvckVhY2hCb29rS2VlcGluZy5nZXRQb29sZWQo
Zm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KTtcbiAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGls
ZHJlbiwgZm9yRWFjaFNpbmdsZUNoaWxkLCB0cmF2ZXJzZUNvbnRleHQpO1xuICBGb3JFYWNoQm9v
a0tlZXBpbmcucmVsZWFzZSh0cmF2ZXJzZUNvbnRleHQpO1xufVxuXG4vKipcbiAqIFBvb2xlZENs
YXNzIHJlcHJlc2VudGluZyB0aGUgYm9va2tlZXBpbmcgYXNzb2NpYXRlZCB3aXRoIHBlcmZvcm1p
bmcgYSBjaGlsZFxuICogbWFwcGluZy4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tz
LlxuICpcbiAqIEBjb25zdHJ1Y3RvciBNYXBCb29rS2VlcGluZ1xuICogQHBhcmFtIHshKn0gbWFw
UmVzdWx0IE9iamVjdCBjb250YWluaW5nIHRoZSBvcmRlcmVkIG1hcCBvZiByZXN1bHRzLlxuICog
QHBhcmFtIHshZnVuY3Rpb259IG1hcEZ1bmN0aW9uIEZ1bmN0aW9uIHRvIHBlcmZvcm0gbWFwcGlu
ZyB3aXRoLlxuICogQHBhcmFtIHs/Kn0gbWFwQ29udGV4dCBDb250ZXh0IHRvIHBlcmZvcm0gbWFw
cGluZyB3aXRoLlxuICovXG5mdW5jdGlvbiBNYXBCb29rS2VlcGluZyhtYXBSZXN1bHQsIGtleVBy
ZWZpeCwgbWFwRnVuY3Rpb24sIG1hcENvbnRleHQpIHtcbiAgdGhpcy5yZXN1bHQgPSBtYXBSZXN1
bHQ7XG4gIHRoaXMua2V5UHJlZml4ID0ga2V5UHJlZml4O1xuICB0aGlzLmZ1bmMgPSBtYXBGdW5j
dGlvbjtcbiAgdGhpcy5jb250ZXh0ID0gbWFwQ29udGV4dDtcbiAgdGhpcy5jb3VudCA9IDA7XG59
XG5NYXBCb29rS2VlcGluZy5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHtcbiAg
dGhpcy5yZXN1bHQgPSBudWxsO1xuICB0aGlzLmtleVByZWZpeCA9IG51bGw7XG4gIHRoaXMuZnVu
YyA9IG51bGw7XG4gIHRoaXMuY29udGV4dCA9IG51bGw7XG4gIHRoaXMuY291bnQgPSAwO1xufTtc
blBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhNYXBCb29rS2VlcGluZywgZm91ckFyZ3VtZW50UG9v
bGVyKTtcblxuZnVuY3Rpb24gbWFwU2luZ2xlQ2hpbGRJbnRvQ29udGV4dChib29rS2VlcGluZywg
Y2hpbGQsIGNoaWxkS2V5KSB7XG4gIHZhciByZXN1bHQgPSBib29rS2VlcGluZy5yZXN1bHQsXG4g
ICAgICBrZXlQcmVmaXggPSBib29rS2VlcGluZy5rZXlQcmVmaXgsXG4gICAgICBmdW5jID0gYm9v
a0tlZXBpbmcuZnVuYyxcbiAgICAgIGNvbnRleHQgPSBib29rS2VlcGluZy5jb250ZXh0O1xuXG5c
biAgdmFyIG1hcHBlZENoaWxkID0gZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGlu
Zy5jb3VudCsrKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkobWFwcGVkQ2hpbGQpKSB7XG4gICAgbWFw
SW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChtYXBwZWRDaGlsZCwgcmVzdWx0LCBjaGlsZEtleSwg
ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChtYXBwZWRD
aGlsZCAhPSBudWxsKSB7XG4gICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChtYXBw
ZWRDaGlsZCkpIHtcbiAgICAgIG1hcHBlZENoaWxkID0gUmVhY3RFbGVtZW50LmNsb25lQW5kUmVw
bGFjZUtleShtYXBwZWRDaGlsZCxcbiAgICAgIC8vIEtlZXAgYm90aCB0aGUgKG1hcHBlZCkgYW5k
IG9sZCBrZXlzIGlmIHRoZXkgZGlmZmVyLCBqdXN0IGFzXG4gICAgICAvLyB0cmF2ZXJzZUFsbENo
aWxkcmVuIHVzZWQgdG8gZG8gZm9yIG9iamVjdHMgYXMgY2hpbGRyZW5cbiAgICAgIGtleVByZWZp
eCArIChtYXBwZWRDaGlsZC5rZXkgJiYgKCFjaGlsZCB8fCBjaGlsZC5rZXkgIT09IG1hcHBlZENo
aWxkLmtleSkgPyBlc2NhcGVVc2VyUHJvdmlkZWRLZXkobWFwcGVkQ2hpbGQua2V5KSArICcvJyA6
ICcnKSArIGNoaWxkS2V5KTtcbiAgICB9XG4gICAgcmVzdWx0LnB1c2gobWFwcGVkQ2hpbGQpO1xu
ICB9XG59XG5cbmZ1bmN0aW9uIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwoY2hpbGRyZW4s
IGFycmF5LCBwcmVmaXgsIGZ1bmMsIGNvbnRleHQpIHtcbiAgdmFyIGVzY2FwZWRQcmVmaXggPSAn
JztcbiAgaWYgKHByZWZpeCAhPSBudWxsKSB7XG4gICAgZXNjYXBlZFByZWZpeCA9IGVzY2FwZVVz
ZXJQcm92aWRlZEtleShwcmVmaXgpICsgJy8nO1xuICB9XG4gIHZhciB0cmF2ZXJzZUNvbnRleHQg
PSBNYXBCb29rS2VlcGluZy5nZXRQb29sZWQoYXJyYXksIGVzY2FwZWRQcmVmaXgsIGZ1bmMsIGNv
bnRleHQpO1xuICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBtYXBTaW5nbGVDaGlsZElu
dG9Db250ZXh0LCB0cmF2ZXJzZUNvbnRleHQpO1xuICBNYXBCb29rS2VlcGluZy5yZWxlYXNlKHRy
YXZlcnNlQ29udGV4dCk7XG59XG5cbi8qKlxuICogTWFwcyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBp
Y2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuXG4gKlxuICogU2VlIGh0dHBzOi8v
ZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNo
aWxkcmVuLm1hcFxuICpcbiAqIFRoZSBwcm92aWRlZCBtYXBGdW5jdGlvbihjaGlsZCwga2V5LCBp
bmRleCkgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2hcbiAqIGxlYWYgY2hpbGQuXG4gKlxuICogQHBh
cmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0ge2Z1
bmN0aW9uKCosIGludCl9IGZ1bmMgVGhlIG1hcCBmdW5jdGlvbi5cbiAqIEBwYXJhbSB7Kn0gY29u
dGV4dCBDb250ZXh0IGZvciBtYXBGdW5jdGlvbi5cbiAqIEByZXR1cm4ge29iamVjdH0gT2JqZWN0
IGNvbnRhaW5pbmcgdGhlIG9yZGVyZWQgbWFwIG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIG1h
cENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jLCBjb250ZXh0KSB7XG4gIGlmIChjaGlsZHJlbiA9PSBu
dWxsKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAg
bWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgcmVzdWx0LCBudWxsLCBmdW5j
LCBjb250ZXh0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZm9yRWFjaFNpbmds
ZUNoaWxkRHVtbXkodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkge1xuICByZXR1cm4gbnVs
bDtcbn1cblxuLyoqXG4gKiBDb3VudCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHRoYXQgYXJlIHR5
cGljYWxseSBzcGVjaWZpZWQgYXNcbiAqIGBwcm9wcy5jaGlsZHJlbmAuXG4gKlxuICogU2VlIGh0
dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3Jl
YWN0LmNoaWxkcmVuLmNvdW50XG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4g
dHJlZSBjb250YWluZXIuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRy
ZW4uXG4gKi9cbmZ1bmN0aW9uIGNvdW50Q2hpbGRyZW4oY2hpbGRyZW4sIGNvbnRleHQpIHtcbiAg
cmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hTaW5nbGVDaGlsZER1
bW15LCBudWxsKTtcbn1cblxuLyoqXG4gKiBGbGF0dGVuIGEgY2hpbGRyZW4gb2JqZWN0ICh0eXBp
Y2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmApIGFuZFxuICogcmV0dXJuIGFuIGFy
cmF5IHdpdGggYXBwcm9wcmlhdGVseSByZS1rZXllZCBjaGlsZHJlbi5cbiAqXG4gKiBTZWUgaHR0
cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVh
Y3QuY2hpbGRyZW4udG9hcnJheVxuICovXG5mdW5jdGlvbiB0b0FycmF5KGNoaWxkcmVuKSB7XG4g
IHZhciByZXN1bHQgPSBbXTtcbiAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJl
biwgcmVzdWx0LCBudWxsLCBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQpO1xuICBy
ZXR1cm4gcmVzdWx0O1xufVxuXG52YXIgUmVhY3RDaGlsZHJlbiA9IHtcbiAgZm9yRWFjaDogZm9y
RWFjaENoaWxkcmVuLFxuICBtYXA6IG1hcENoaWxkcmVuLFxuICBtYXBJbnRvV2l0aEtleVByZWZp
eEludGVybmFsOiBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsLFxuICBjb3VudDogY291bnRD
aGlsZHJlbixcbiAgdG9BcnJheTogdG9BcnJheVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFj
dENoaWxkcmVuO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0L2xpYi9SZWFjdENoaWxkcmVuLmpzXG4gKiogbW9kdWxlIGlkID0gMjE1XG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4g
Ki9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFj
dEVsZW1lbnQnKTtcblxuLyoqXG4gKiBDcmVhdGUgYSBmYWN0b3J5IHRoYXQgY3JlYXRlcyBIVE1M
IHRhZyBlbGVtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgY3JlYXRlRE9NRmFjdG9y
eSA9IFJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5O1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHJlcXVp
cmUoJy4vUmVhY3RFbGVtZW50VmFsaWRhdG9yJyk7XG4gIGNyZWF0ZURPTUZhY3RvcnkgPSBSZWFj
dEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9yeTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEg
bWFwcGluZyBmcm9tIHN1cHBvcnRlZCBIVE1MIHRhZ3MgdG8gYFJlYWN0RE9NQ29tcG9uZW50YCBj
bGFzc2VzLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xudmFyIFJlYWN0RE9NRmFjdG9yaWVzID0ge1xu
ICBhOiBjcmVhdGVET01GYWN0b3J5KCdhJyksXG4gIGFiYnI6IGNyZWF0ZURPTUZhY3RvcnkoJ2Fi
YnInKSxcbiAgYWRkcmVzczogY3JlYXRlRE9NRmFjdG9yeSgnYWRkcmVzcycpLFxuICBhcmVhOiBj
cmVhdGVET01GYWN0b3J5KCdhcmVhJyksXG4gIGFydGljbGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2Fy
dGljbGUnKSxcbiAgYXNpZGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2FzaWRlJyksXG4gIGF1ZGlvOiBj
cmVhdGVET01GYWN0b3J5KCdhdWRpbycpLFxuICBiOiBjcmVhdGVET01GYWN0b3J5KCdiJyksXG4g
IGJhc2U6IGNyZWF0ZURPTUZhY3RvcnkoJ2Jhc2UnKSxcbiAgYmRpOiBjcmVhdGVET01GYWN0b3J5
KCdiZGknKSxcbiAgYmRvOiBjcmVhdGVET01GYWN0b3J5KCdiZG8nKSxcbiAgYmlnOiBjcmVhdGVE
T01GYWN0b3J5KCdiaWcnKSxcbiAgYmxvY2txdW90ZTogY3JlYXRlRE9NRmFjdG9yeSgnYmxvY2tx
dW90ZScpLFxuICBib2R5OiBjcmVhdGVET01GYWN0b3J5KCdib2R5JyksXG4gIGJyOiBjcmVhdGVE
T01GYWN0b3J5KCdicicpLFxuICBidXR0b246IGNyZWF0ZURPTUZhY3RvcnkoJ2J1dHRvbicpLFxu
ICBjYW52YXM6IGNyZWF0ZURPTUZhY3RvcnkoJ2NhbnZhcycpLFxuICBjYXB0aW9uOiBjcmVhdGVE
T01GYWN0b3J5KCdjYXB0aW9uJyksXG4gIGNpdGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2NpdGUnKSxc
biAgY29kZTogY3JlYXRlRE9NRmFjdG9yeSgnY29kZScpLFxuICBjb2w6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2NvbCcpLFxuICBjb2xncm91cDogY3JlYXRlRE9NRmFjdG9yeSgnY29sZ3JvdXAnKSxcbiAg
ZGF0YTogY3JlYXRlRE9NRmFjdG9yeSgnZGF0YScpLFxuICBkYXRhbGlzdDogY3JlYXRlRE9NRmFj
dG9yeSgnZGF0YWxpc3QnKSxcbiAgZGQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2RkJyksXG4gIGRlbDog
Y3JlYXRlRE9NRmFjdG9yeSgnZGVsJyksXG4gIGRldGFpbHM6IGNyZWF0ZURPTUZhY3RvcnkoJ2Rl
dGFpbHMnKSxcbiAgZGZuOiBjcmVhdGVET01GYWN0b3J5KCdkZm4nKSxcbiAgZGlhbG9nOiBjcmVh
dGVET01GYWN0b3J5KCdkaWFsb2cnKSxcbiAgZGl2OiBjcmVhdGVET01GYWN0b3J5KCdkaXYnKSxc
biAgZGw6IGNyZWF0ZURPTUZhY3RvcnkoJ2RsJyksXG4gIGR0OiBjcmVhdGVET01GYWN0b3J5KCdk
dCcpLFxuICBlbTogY3JlYXRlRE9NRmFjdG9yeSgnZW0nKSxcbiAgZW1iZWQ6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2VtYmVkJyksXG4gIGZpZWxkc2V0OiBjcmVhdGVET01GYWN0b3J5KCdmaWVsZHNldCcp
LFxuICBmaWdjYXB0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdmaWdjYXB0aW9uJyksXG4gIGZpZ3Vy
ZTogY3JlYXRlRE9NRmFjdG9yeSgnZmlndXJlJyksXG4gIGZvb3RlcjogY3JlYXRlRE9NRmFjdG9y
eSgnZm9vdGVyJyksXG4gIGZvcm06IGNyZWF0ZURPTUZhY3RvcnkoJ2Zvcm0nKSxcbiAgaDE6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2gxJyksXG4gIGgyOiBjcmVhdGVET01GYWN0b3J5KCdoMicpLFxuICBo
MzogY3JlYXRlRE9NRmFjdG9yeSgnaDMnKSxcbiAgaDQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2g0Jyks
XG4gIGg1OiBjcmVhdGVET01GYWN0b3J5KCdoNScpLFxuICBoNjogY3JlYXRlRE9NRmFjdG9yeSgn
aDYnKSxcbiAgaGVhZDogY3JlYXRlRE9NRmFjdG9yeSgnaGVhZCcpLFxuICBoZWFkZXI6IGNyZWF0
ZURPTUZhY3RvcnkoJ2hlYWRlcicpLFxuICBoZ3JvdXA6IGNyZWF0ZURPTUZhY3RvcnkoJ2hncm91
cCcpLFxuICBocjogY3JlYXRlRE9NRmFjdG9yeSgnaHInKSxcbiAgaHRtbDogY3JlYXRlRE9NRmFj
dG9yeSgnaHRtbCcpLFxuICBpOiBjcmVhdGVET01GYWN0b3J5KCdpJyksXG4gIGlmcmFtZTogY3Jl
YXRlRE9NRmFjdG9yeSgnaWZyYW1lJyksXG4gIGltZzogY3JlYXRlRE9NRmFjdG9yeSgnaW1nJyks
XG4gIGlucHV0OiBjcmVhdGVET01GYWN0b3J5KCdpbnB1dCcpLFxuICBpbnM6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2lucycpLFxuICBrYmQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2tiZCcpLFxuICBrZXlnZW46
IGNyZWF0ZURPTUZhY3RvcnkoJ2tleWdlbicpLFxuICBsYWJlbDogY3JlYXRlRE9NRmFjdG9yeSgn
bGFiZWwnKSxcbiAgbGVnZW5kOiBjcmVhdGVET01GYWN0b3J5KCdsZWdlbmQnKSxcbiAgbGk6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2xpJyksXG4gIGxpbms6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmsnKSxc
biAgbWFpbjogY3JlYXRlRE9NRmFjdG9yeSgnbWFpbicpLFxuICBtYXA6IGNyZWF0ZURPTUZhY3Rv
cnkoJ21hcCcpLFxuICBtYXJrOiBjcmVhdGVET01GYWN0b3J5KCdtYXJrJyksXG4gIG1lbnU6IGNy
ZWF0ZURPTUZhY3RvcnkoJ21lbnUnKSxcbiAgbWVudWl0ZW06IGNyZWF0ZURPTUZhY3RvcnkoJ21l
bnVpdGVtJyksXG4gIG1ldGE6IGNyZWF0ZURPTUZhY3RvcnkoJ21ldGEnKSxcbiAgbWV0ZXI6IGNy
ZWF0ZURPTUZhY3RvcnkoJ21ldGVyJyksXG4gIG5hdjogY3JlYXRlRE9NRmFjdG9yeSgnbmF2Jyks
XG4gIG5vc2NyaXB0OiBjcmVhdGVET01GYWN0b3J5KCdub3NjcmlwdCcpLFxuICBvYmplY3Q6IGNy
ZWF0ZURPTUZhY3RvcnkoJ29iamVjdCcpLFxuICBvbDogY3JlYXRlRE9NRmFjdG9yeSgnb2wnKSxc
biAgb3B0Z3JvdXA6IGNyZWF0ZURPTUZhY3RvcnkoJ29wdGdyb3VwJyksXG4gIG9wdGlvbjogY3Jl
YXRlRE9NRmFjdG9yeSgnb3B0aW9uJyksXG4gIG91dHB1dDogY3JlYXRlRE9NRmFjdG9yeSgnb3V0
cHV0JyksXG4gIHA6IGNyZWF0ZURPTUZhY3RvcnkoJ3AnKSxcbiAgcGFyYW06IGNyZWF0ZURPTUZh
Y3RvcnkoJ3BhcmFtJyksXG4gIHBpY3R1cmU6IGNyZWF0ZURPTUZhY3RvcnkoJ3BpY3R1cmUnKSxc
biAgcHJlOiBjcmVhdGVET01GYWN0b3J5KCdwcmUnKSxcbiAgcHJvZ3Jlc3M6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3Byb2dyZXNzJyksXG4gIHE6IGNyZWF0ZURPTUZhY3RvcnkoJ3EnKSxcbiAgcnA6IGNy
ZWF0ZURPTUZhY3RvcnkoJ3JwJyksXG4gIHJ0OiBjcmVhdGVET01GYWN0b3J5KCdydCcpLFxuICBy
dWJ5OiBjcmVhdGVET01GYWN0b3J5KCdydWJ5JyksXG4gIHM6IGNyZWF0ZURPTUZhY3RvcnkoJ3Mn
KSxcbiAgc2FtcDogY3JlYXRlRE9NRmFjdG9yeSgnc2FtcCcpLFxuICBzY3JpcHQ6IGNyZWF0ZURP
TUZhY3RvcnkoJ3NjcmlwdCcpLFxuICBzZWN0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdzZWN0aW9u
JyksXG4gIHNlbGVjdDogY3JlYXRlRE9NRmFjdG9yeSgnc2VsZWN0JyksXG4gIHNtYWxsOiBjcmVh
dGVET01GYWN0b3J5KCdzbWFsbCcpLFxuICBzb3VyY2U6IGNyZWF0ZURPTUZhY3RvcnkoJ3NvdXJj
ZScpLFxuICBzcGFuOiBjcmVhdGVET01GYWN0b3J5KCdzcGFuJyksXG4gIHN0cm9uZzogY3JlYXRl
RE9NRmFjdG9yeSgnc3Ryb25nJyksXG4gIHN0eWxlOiBjcmVhdGVET01GYWN0b3J5KCdzdHlsZScp
LFxuICBzdWI6IGNyZWF0ZURPTUZhY3RvcnkoJ3N1YicpLFxuICBzdW1tYXJ5OiBjcmVhdGVET01G
YWN0b3J5KCdzdW1tYXJ5JyksXG4gIHN1cDogY3JlYXRlRE9NRmFjdG9yeSgnc3VwJyksXG4gIHRh
YmxlOiBjcmVhdGVET01GYWN0b3J5KCd0YWJsZScpLFxuICB0Ym9keTogY3JlYXRlRE9NRmFjdG9y
eSgndGJvZHknKSxcbiAgdGQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RkJyksXG4gIHRleHRhcmVhOiBj
cmVhdGVET01GYWN0b3J5KCd0ZXh0YXJlYScpLFxuICB0Zm9vdDogY3JlYXRlRE9NRmFjdG9yeSgn
dGZvb3QnKSxcbiAgdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ3RoJyksXG4gIHRoZWFkOiBjcmVhdGVE
T01GYWN0b3J5KCd0aGVhZCcpLFxuICB0aW1lOiBjcmVhdGVET01GYWN0b3J5KCd0aW1lJyksXG4g
IHRpdGxlOiBjcmVhdGVET01GYWN0b3J5KCd0aXRsZScpLFxuICB0cjogY3JlYXRlRE9NRmFjdG9y
eSgndHInKSxcbiAgdHJhY2s6IGNyZWF0ZURPTUZhY3RvcnkoJ3RyYWNrJyksXG4gIHU6IGNyZWF0
ZURPTUZhY3RvcnkoJ3UnKSxcbiAgdWw6IGNyZWF0ZURPTUZhY3RvcnkoJ3VsJyksXG4gICd2YXIn
OiBjcmVhdGVET01GYWN0b3J5KCd2YXInKSxcbiAgdmlkZW86IGNyZWF0ZURPTUZhY3RvcnkoJ3Zp
ZGVvJyksXG4gIHdicjogY3JlYXRlRE9NRmFjdG9yeSgnd2JyJyksXG5cbiAgLy8gU1ZHXG4gIGNp
cmNsZTogY3JlYXRlRE9NRmFjdG9yeSgnY2lyY2xlJyksXG4gIGNsaXBQYXRoOiBjcmVhdGVET01G
YWN0b3J5KCdjbGlwUGF0aCcpLFxuICBkZWZzOiBjcmVhdGVET01GYWN0b3J5KCdkZWZzJyksXG4g
IGVsbGlwc2U6IGNyZWF0ZURPTUZhY3RvcnkoJ2VsbGlwc2UnKSxcbiAgZzogY3JlYXRlRE9NRmFj
dG9yeSgnZycpLFxuICBpbWFnZTogY3JlYXRlRE9NRmFjdG9yeSgnaW1hZ2UnKSxcbiAgbGluZTog
Y3JlYXRlRE9NRmFjdG9yeSgnbGluZScpLFxuICBsaW5lYXJHcmFkaWVudDogY3JlYXRlRE9NRmFj
dG9yeSgnbGluZWFyR3JhZGllbnQnKSxcbiAgbWFzazogY3JlYXRlRE9NRmFjdG9yeSgnbWFzaycp
LFxuICBwYXRoOiBjcmVhdGVET01GYWN0b3J5KCdwYXRoJyksXG4gIHBhdHRlcm46IGNyZWF0ZURP
TUZhY3RvcnkoJ3BhdHRlcm4nKSxcbiAgcG9seWdvbjogY3JlYXRlRE9NRmFjdG9yeSgncG9seWdv
bicpLFxuICBwb2x5bGluZTogY3JlYXRlRE9NRmFjdG9yeSgncG9seWxpbmUnKSxcbiAgcmFkaWFs
R3JhZGllbnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3JhZGlhbEdyYWRpZW50JyksXG4gIHJlY3Q6IGNy
ZWF0ZURPTUZhY3RvcnkoJ3JlY3QnKSxcbiAgc3RvcDogY3JlYXRlRE9NRmFjdG9yeSgnc3RvcCcp
LFxuICBzdmc6IGNyZWF0ZURPTUZhY3RvcnkoJ3N2ZycpLFxuICB0ZXh0OiBjcmVhdGVET01GYWN0
b3J5KCd0ZXh0JyksXG4gIHRzcGFuOiBjcmVhdGVET01GYWN0b3J5KCd0c3BhbicpXG59O1xuXG5t
b2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NRmFjdG9yaWVzO1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9SZWFjdERPTUZhY3Rvcmll
cy5qc1xuICoqIG1vZHVsZSBpZCA9IDIxNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
LyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9y
ZXF1aXJlID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKSxcbiAgICBpc1ZhbGlkRWxlbWVudCA9
IF9yZXF1aXJlLmlzVmFsaWRFbGVtZW50O1xuXG52YXIgZmFjdG9yeSA9IHJlcXVpcmUoJ3Byb3At
dHlwZXMvZmFjdG9yeScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoaXNWYWxpZEVsZW1l
bnQpO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0L2xpYi9SZWFjdFByb3BUeXBlcy5qc1xuICoqIG1vZHVsZSBpZCA9IDIxN1xuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5c
bid1c2Ugc3RyaWN0JztcblxudmFyIF9yZXF1aXJlID0gcmVxdWlyZSgnLi9SZWFjdEJhc2VDbGFz
c2VzJyksXG4gICAgQ29tcG9uZW50ID0gX3JlcXVpcmUuQ29tcG9uZW50O1xuXG52YXIgX3JlcXVp
cmUyID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKSxcbiAgICBpc1ZhbGlkRWxlbWVudCA9IF9y
ZXF1aXJlMi5pc1ZhbGlkRWxlbWVudDtcblxudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gcmVx
dWlyZSgnLi9SZWFjdE5vb3BVcGRhdGVRdWV1ZScpO1xudmFyIGZhY3RvcnkgPSByZXF1aXJlKCdj
cmVhdGUtcmVhY3QtY2xhc3MvZmFjdG9yeScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3Rvcnko
Q29tcG9uZW50LCBpc1ZhbGlkRWxlbWVudCwgUmVhY3ROb29wVXBkYXRlUXVldWUpO1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9j
cmVhdGVDbGFzcy5qc1xuICoqIG1vZHVsZSBpZCA9IDIxOVxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgbmV4dERlYnVnSUQgPSAxO1xuXG5mdW5jdGlvbiBnZXROZXh0RGVidWdJRCgp
IHtcbiAgcmV0dXJuIG5leHREZWJ1Z0lEKys7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmV4
dERlYnVnSUQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAq
KiAuL34vcmVhY3QvbGliL2dldE5leHREZWJ1Z0lELmpzXG4gKiogbW9kdWxlIGlkID0gMjIxXG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEZvcmtlZCBmcm9tIGZianMvd2FybmluZzpcbiAq
IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mYmpzL2Jsb2IvZTY2YmEyMGFkNWJlNDMzZWI1
NDQyM2YyYjA5N2Q4MjkzMjRkOWRlNi9wYWNrYWdlcy9mYmpzL3NyYy9fX2ZvcmtzX18vd2Fybmlu
Zy5qc1xuICpcbiAqIE9ubHkgY2hhbmdlIGlzIHdlIHVzZSBjb25zb2xlLndhcm4gaW5zdGVhZCBv
ZiBjb25zb2xlLmVycm9yLFxuICogYW5kIGRvIG5vdGhpbmcgd2hlbiAnY29uc29sZScgaXMgbm90
IHN1cHBvcnRlZC5cbiAqIFRoaXMgcmVhbGx5IHNpbXBsaWZpZXMgdGhlIGNvZGUuXG4gKiAtLS1c
biAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1dCBvbmx5IGxvZ3MgYSB3YXJuaW5nIGlmIHRoZSBj
b25kaXRpb24gaXMgbm90IG1ldC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gbG9nIGlzc3VlcyBp
biBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgaW4gY3JpdGljYWxcbiAqIHBhdGhzLiBSZW1vdmlu
ZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50cyB3aWxsIGtlZXAg
dGhlXG4gKiBzYW1lIGxvZ2ljIGFuZCBmb2xsb3cgdGhlIHNhbWUgY29kZSBwYXRocy5cbiAqL1xu
XG52YXIgbG93UHJpb3JpdHlXYXJuaW5nID0gZnVuY3Rpb24gKCkge307XG5cbmlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBwcmludFdhcm5pbmcgPSBm
dW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgs
IGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwg
X2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtc
biAgICB9XG5cbiAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgIHZhciBtZXNzYWdlID0gJ1dhcm5p
bmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJu
IGFyZ3NbYXJnSW5kZXgrK107XG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAn
dW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0
cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAg
Ly8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2Fu
IHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNl
ZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtc
biAgICB9IGNhdGNoICh4KSB7fVxuICB9O1xuXG4gIGxvd1ByaW9yaXR5V2FybmluZyA9IGZ1bmN0
aW9uIChjb25kaXRpb24sIGZvcm1hdCkge1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkg
e1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4u
YXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAnICsgJ21lc3NhZ2UgYXJndW1lbnQnKTtcbiAgICB9
XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRz
Lmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yID4gMiA/IF9sZW4yIC0gMiA6IDApLCBfa2V5MiA9
IDI7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgYXJnc1tfa2V5MiAtIDJdID0g
YXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgcHJpbnRXYXJuaW5nLmFwcGx5KHVu
ZGVmaW5lZCwgW2Zvcm1hdF0uY29uY2F0KGFyZ3MpKTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVs
ZS5leHBvcnRzID0gbG93UHJpb3JpdHlXYXJuaW5nO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxu
ICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9sb3dQcmlvcml0eVdhcm5pbmcu
anNcbiAqKiBtb2R1bGUgaWQgPSAyMjJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJ
bnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3RF
bGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcblxudmFyIGludmFyaWFudCA9IHJl
cXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGZpcnN0
IGNoaWxkIGluIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiBhbmQgdmVyaWZpZXMgdGhhdCB0aGVy
ZVxuICogaXMgb25seSBvbmUgY2hpbGQgaW4gdGhlIGNvbGxlY3Rpb24uXG4gKlxuICogU2VlIGh0
dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3Jl
YWN0LmNoaWxkcmVuLm9ubHlcbiAqXG4gKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0
aGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBhIHNpbmdsZSBjaGlsZCBnZXRzXG4gKiBwYXNzZWQg
d2l0aG91dCBhIHdyYXBwZXIsIGJ1dCB0aGUgcHVycG9zZSBvZiB0aGlzIGhlbHBlciBmdW5jdGlv
biBpcyB0b1xuICogYWJzdHJhY3QgYXdheSB0aGUgcGFydGljdWxhciBzdHJ1Y3R1cmUgb2YgY2hp
bGRyZW4uXG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBjaGlsZHJlbiBDaGlsZCBjb2xsZWN0aW9u
IHN0cnVjdHVyZS5cbiAqIEByZXR1cm4ge1JlYWN0RWxlbWVudH0gVGhlIGZpcnN0IGFuZCBvbmx5
IGBSZWFjdEVsZW1lbnRgIGNvbnRhaW5lZCBpbiB0aGVcbiAqIHN0cnVjdHVyZS5cbiAqL1xuZnVu
Y3Rpb24gb25seUNoaWxkKGNoaWxkcmVuKSB7XG4gICFSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1l
bnQoY2hpbGRyZW4pID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ1JlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBh
IHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MycpIDog
dm9pZCAwO1xuICByZXR1cm4gY2hpbGRyZW47XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb25seUNo
aWxkO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0L2xpYi9vbmx5Q2hpbGQuanNcbiAqKiBtb2R1bGUgaWQgPSAyMjNcbiAqKiBtb2R1bGUg
Y2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52
YXJpYW50Jyk7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJy
ZW50T3duZXInKTtcbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSByZXF1aXJlKCcuL1JlYWN0RWxl
bWVudFN5bWJvbCcpO1xuXG52YXIgZ2V0SXRlcmF0b3JGbiA9IHJlcXVpcmUoJy4vZ2V0SXRlcmF0
b3JGbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xu
dmFyIEtleUVzY2FwZVV0aWxzID0gcmVxdWlyZSgnLi9LZXlFc2NhcGVVdGlscycpO1xudmFyIHdh
cm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBTRVBBUkFUT1IgPSAn
Lic7XG52YXIgU1VCU0VQQVJBVE9SID0gJzonO1xuXG4vKipcbiAqIFRoaXMgaXMgaW5saW5lZCBm
cm9tIFJlYWN0RWxlbWVudCBzaW5jZSB0aGlzIGZpbGUgaXMgc2hhcmVkIGJldHdlZW5cbiAqIGlz
b21vcnBoaWMgYW5kIHJlbmRlcmVycy4gV2UgY291bGQgZXh0cmFjdCB0aGlzIHRvIGFcbiAqXG4g
Ki9cblxuLyoqXG4gKiBUT0RPOiBUZXN0IHRoYXQgYSBzaW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5
IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUgc2FtZSBrZXlcbiAqIHBhdHRlcm4uXG4gKi9cblxudmFy
IGRpZFdhcm5BYm91dE1hcHMgPSBmYWxzZTtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIGtleSBzdHJp
bmcgdGhhdCBpZGVudGlmaWVzIGEgY29tcG9uZW50IHdpdGhpbiBhIHNldC5cbiAqXG4gKiBAcGFy
YW0geyp9IGNvbXBvbmVudCBBIGNvbXBvbmVudCB0aGF0IGNvdWxkIGNvbnRhaW4gYSBtYW51YWwg
a2V5LlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQgaXMgdXNlZCBpZiBhIG1h
bnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLlxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5j
dGlvbiBnZXRDb21wb25lbnRLZXkoY29tcG9uZW50LCBpbmRleCkge1xuICAvLyBEbyBzb21lIHR5
cGVjaGVja2luZyBoZXJlIHNpbmNlIHdlIGNhbGwgdGhpcyBibGluZGx5LiBXZSB3YW50IHRvIGVu
c3VyZVxuICAvLyB0aGF0IHdlIGRvbid0IGJsb2NrIHBvdGVudGlhbCBmdXR1cmUgRVMgQVBJcy5c
biAgaWYgKGNvbXBvbmVudCAmJiB0eXBlb2YgY29tcG9uZW50ID09PSAnb2JqZWN0JyAmJiBjb21w
b25lbnQua2V5ICE9IG51bGwpIHtcbiAgICAvLyBFeHBsaWNpdCBrZXlcbiAgICByZXR1cm4gS2V5
RXNjYXBlVXRpbHMuZXNjYXBlKGNvbXBvbmVudC5rZXkpO1xuICB9XG4gIC8vIEltcGxpY2l0IGtl
eSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0XG4gIHJldHVybiBpbmRleC50b1N0
cmluZygzNik7XG59XG5cbi8qKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJl
ZSBjb250YWluZXIuXG4gKiBAcGFyYW0geyFzdHJpbmd9IG5hbWVTb0ZhciBOYW1lIG9mIHRoZSBr
ZXkgcGF0aCBzbyBmYXIuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sg
dG8gaW52b2tlIHdpdGggZWFjaCBjaGlsZCBmb3VuZC5cbiAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNl
Q29udGV4dCBVc2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdGhyb3VnaG91dCB0aGUgdHJhdmVyc2Fs
XG4gKiBwcm9jZXNzLlxuICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJl
biBpbiB0aGlzIHN1YnRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBs
KGNoaWxkcmVuLCBuYW1lU29GYXIsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHtcbiAgdmFy
IHR5cGUgPSB0eXBlb2YgY2hpbGRyZW47XG5cbiAgaWYgKHR5cGUgPT09ICd1bmRlZmluZWQnIHx8
IHR5cGUgPT09ICdib29sZWFuJykge1xuICAgIC8vIEFsbCBvZiB0aGUgYWJvdmUgYXJlIHBlcmNl
aXZlZCBhcyBudWxsLlxuICAgIGNoaWxkcmVuID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjaGlsZHJl
biA9PT0gbnVsbCB8fCB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09PSAnbnVtYmVyJyB8fFxu
ICAvLyBUaGUgZm9sbG93aW5nIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQuIFRoaXMgbWVh
bnMgd2UgY2FuIG9wdGltaXplXG4gIC8vIHNvbWUgY2hlY2tzLiBSZWFjdCBGaWJlciBhbHNvIGlu
bGluZXMgdGhpcyBsb2dpYyBmb3Igc2ltaWxhciBwdXJwb3Nlcy5cbiAgdHlwZSA9PT0gJ29iamVj
dCcgJiYgY2hpbGRyZW4uJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRSkge1xuICAgIGNh
bGxiYWNrKHRyYXZlcnNlQ29udGV4dCwgY2hpbGRyZW4sXG4gICAgLy8gSWYgaXQncyB0aGUgb25s
eSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUgYXMgaWYgaXQgd2FzIHdyYXBwZWQgaW4gYW4gYXJyYXlc
biAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVu
IGdyb3dzLlxuICAgIG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRL
ZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFyKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHZh
ciBjaGlsZDtcbiAgdmFyIG5leHROYW1lO1xuICB2YXIgc3VidHJlZUNvdW50ID0gMDsgLy8gQ291
bnQgb2YgY2hpbGRyZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc3VidHJlZS5cbiAgdmFyIG5leHRO
YW1lUHJlZml4ID0gbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiA6IG5hbWVTb0ZhciArIFNV
QlNFUEFSQVRPUjtcblxuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZCA9IGNo
aWxkcmVuW2ldO1xuICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVu
dEtleShjaGlsZCwgaSk7XG4gICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJl
bkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICB9
XG4gIH0gZWxzZSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKGNoaWxkcmVu
KTtcbiAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JG
bi5jYWxsKGNoaWxkcmVuKTtcbiAgICAgIHZhciBzdGVwO1xuICAgICAgaWYgKGl0ZXJhdG9yRm4g
IT09IGNoaWxkcmVuLmVudHJpZXMpIHtcbiAgICAgICAgdmFyIGlpID0gMDtcbiAgICAgICAgd2hp
bGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIGNoaWxkID0g
c3RlcC52YWx1ZTtcbiAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29t
cG9uZW50S2V5KGNoaWxkLCBpaSsrKTtcbiAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVy
c2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250
ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRy
ZW5BZGRlbmR1bSA9ICcnO1xuICAgICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
KSB7XG4gICAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgPSBSZWFjdEN1cnJl
bnRPd25lci5jdXJyZW50LmdldE5hbWUoKTtcbiAgICAgICAgICAgIGlmIChtYXBzQXNDaGlsZHJl
bk93bmVyTmFtZSkge1xuICAgICAgICAgICAgICBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyBD
aGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lICsg
J2AuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZGlkV2FybkFib3V0TWFwcywgJ1Vz
aW5nIE1hcHMgYXMgY2hpbGRyZW4gaXMgbm90IHlldCBmdWxseSBzdXBwb3J0ZWQuIEl0IGlzIGFu
ICcgKyAnZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtaWdodCBiZSByZW1vdmVkLiBDb252ZXJ0
IGl0IHRvIGEgJyArICdzZXF1ZW5jZSAvIGl0ZXJhYmxlIG9mIGtleWVkIFJlYWN0RWxlbWVudHMg
aW5zdGVhZC4lcycsIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0pIDogdm9pZCAwO1xuICAgICAgICAg
IGRpZFdhcm5BYm91dE1hcHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEl0ZXJhdG9y
IHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFsdWVzLlxuICAg
ICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAg
dmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAg
ICAgIGNoaWxkID0gZW50cnlbMV07XG4gICAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJl
Zml4ICsgS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGVudHJ5WzBdKSArIFNVQlNFUEFSQVRPUiArIGdl
dENvbXBvbmVudEtleShjaGlsZCwgMCk7XG4gICAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJh
dmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VD
b250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYg
KHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YXIgYWRkZW5kdW0gPSAnJztcbiAgICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGFkZGVu
ZHVtID0gJyBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwg
dXNlIGFuIGFycmF5ICcgKyAnaW5zdGVhZCBvciB3cmFwIHRoZSBvYmplY3QgdXNpbmcgY3JlYXRl
RnJhZ21lbnQob2JqZWN0KSBmcm9tIHRoZSAnICsgJ1JlYWN0IGFkZC1vbnMuJztcbiAgICAgICAg
aWYgKGNoaWxkcmVuLl9pc1JlYWN0RWxlbWVudCkge1xuICAgICAgICAgIGFkZGVuZHVtID0gXCIg
SXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgYW4gZWxlbWVudCBjcmVhdGVkIGJ5IGEgZGlmZmVy
ZW50IFwiICsgJ3ZlcnNpb24gb2YgUmVhY3QuIE1ha2Ugc3VyZSB0byB1c2Ugb25seSBvbmUgY29w
eSBvZiBSZWFjdC4nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5j
dXJyZW50KSB7XG4gICAgICAgICAgdmFyIG5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
LmdldE5hbWUoKTtcbiAgICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgYWRkZW5kdW0g
Kz0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgICAg
ICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIGNoaWxkcmVuU3RyaW5nID0gU3Ry
aW5nKGNoaWxkcmVuKTtcbiAgICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMg
YSBSZWFjdCBjaGlsZCAoZm91bmQ6ICVzKS4lcycsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVj
dCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4p
LmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogX3Byb2RJbnZh
cmlhbnQoJzMxJywgY2hpbGRyZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8gJ29iamVj
dCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhjaGlsZHJlbikuam9pbignLCAnKSArICd9JyA6
IGNoaWxkcmVuU3RyaW5nLCBhZGRlbmR1bSkgOiB2b2lkIDA7XG4gICAgfVxuICB9XG5cbiAgcmV0
dXJuIHN1YnRyZWVDb3VudDtcbn1cblxuLyoqXG4gKiBUcmF2ZXJzZXMgY2hpbGRyZW4gdGhhdCBh
cmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLCBidXRcbiAqIG1pZ2h0
IGFsc28gYmUgc3BlY2lmaWVkIHRocm91Z2ggYXR0cmlidXRlczpcbiAqXG4gKiAtIGB0cmF2ZXJz
ZUFsbENoaWxkcmVuKHRoaXMucHJvcHMuY2hpbGRyZW4sIC4uLilgXG4gKiAtIGB0cmF2ZXJzZUFs
bENoaWxkcmVuKHRoaXMucHJvcHMubGVmdFBhbmVsQ2hpbGRyZW4sIC4uLilgXG4gKlxuICogVGhl
IGB0cmF2ZXJzZUNvbnRleHRgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRoYXQgaXMgcGFzc2Vk
IHRocm91Z2ggdGhlXG4gKiBlbnRpcmUgdHJhdmVyc2FsLiBJdCBjYW4gYmUgdXNlZCB0byBzdG9y
ZSBhY2N1bXVsYXRpb25zIG9yIGFueXRoaW5nIGVsc2UgdGhhdFxuICogdGhlIGNhbGxiYWNrIG1p
Z2h0IGZpbmQgcmVsZXZhbnQuXG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4g
dHJlZSBvYmplY3QuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgVG8gaW52b2tlIHVw
b24gdHJhdmVyc2luZyBlYWNoIGNoaWxkLlxuICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0
IENvbnRleHQgZm9yIHRyYXZlcnNhbC5cbiAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIg
b2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuICovXG5mdW5jdGlvbiB0cmF2ZXJzZUFsbENo
aWxkcmVuKGNoaWxkcmVuLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG4gIGlmIChjaGls
ZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gdHJhdmVyc2VB
bGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sICcnLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtc
bn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmF2ZXJzZUFsbENoaWxkcmVuO1xuXG5cbi8qKioqKioq
KioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi90cmF2ZXJz
ZUFsbENoaWxkcmVuLmpzXG4gKiogbW9kdWxlIGlkID0gMjI0XG4gKiogbW9kdWxlIGNodW5rcyA9
IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5c
bnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3Ig
KHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJn
dW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBl
Lmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNl
W2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGFw
cGx5TWlkZGxld2FyZTtcblxudmFyIF9jb21wb3NlID0gcmVxdWlyZSgnLi9jb21wb3NlJyk7XG5c
bnZhciBfY29tcG9zZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb3NlKTtcblxuZnVu
Y3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19l
c01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG4vKipcbiAqIENyZWF0ZXMg
YSBzdG9yZSBlbmhhbmNlciB0aGF0IGFwcGxpZXMgbWlkZGxld2FyZSB0byB0aGUgZGlzcGF0Y2gg
bWV0aG9kXG4gKiBvZiB0aGUgUmVkdXggc3RvcmUuIFRoaXMgaXMgaGFuZHkgZm9yIGEgdmFyaWV0
eSBvZiB0YXNrcywgc3VjaCBhcyBleHByZXNzaW5nXG4gKiBhc3luY2hyb25vdXMgYWN0aW9ucyBp
biBhIGNvbmNpc2UgbWFubmVyLCBvciBsb2dnaW5nIGV2ZXJ5IGFjdGlvbiBwYXlsb2FkLlxuICpc
biAqIFNlZSBgcmVkdXgtdGh1bmtgIHBhY2thZ2UgYXMgYW4gZXhhbXBsZSBvZiB0aGUgUmVkdXgg
bWlkZGxld2FyZS5cbiAqXG4gKiBCZWNhdXNlIG1pZGRsZXdhcmUgaXMgcG90ZW50aWFsbHkgYXN5
bmNocm9ub3VzLCB0aGlzIHNob3VsZCBiZSB0aGUgZmlyc3RcbiAqIHN0b3JlIGVuaGFuY2VyIGlu
IHRoZSBjb21wb3NpdGlvbiBjaGFpbi5cbiAqXG4gKiBOb3RlIHRoYXQgZWFjaCBtaWRkbGV3YXJl
IHdpbGwgYmUgZ2l2ZW4gdGhlIGBkaXNwYXRjaGAgYW5kIGBnZXRTdGF0ZWAgZnVuY3Rpb25zXG4g
KiBhcyBuYW1lZCBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIHsuLi5GdW5jdGlvbn0gbWlkZGxl
d2FyZXMgVGhlIG1pZGRsZXdhcmUgY2hhaW4gdG8gYmUgYXBwbGllZC5cbiAqIEByZXR1cm5zIHtG
dW5jdGlvbn0gQSBzdG9yZSBlbmhhbmNlciBhcHBseWluZyB0aGUgbWlkZGxld2FyZS5cbiAqL1xu
ZnVuY3Rpb24gYXBwbHlNaWRkbGV3YXJlKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRz
Lmxlbmd0aCwgbWlkZGxld2FyZXMgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVu
OyBfa2V5KyspIHtcbiAgICBtaWRkbGV3YXJlc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAg
fVxuXG4gIHJldHVybiBmdW5jdGlvbiAoY3JlYXRlU3RvcmUpIHtcbiAgICByZXR1cm4gZnVuY3Rp
b24gKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlLCBlbmhhbmNlcikge1xuICAgICAgdmFyIHN0b3Jl
ID0gY3JlYXRlU3RvcmUocmVkdWNlciwgcHJlbG9hZGVkU3RhdGUsIGVuaGFuY2VyKTtcbiAgICAg
IHZhciBfZGlzcGF0Y2ggPSBzdG9yZS5kaXNwYXRjaDtcbiAgICAgIHZhciBjaGFpbiA9IFtdO1xu
XG4gICAgICB2YXIgbWlkZGxld2FyZUFQSSA9IHtcbiAgICAgICAgZ2V0U3RhdGU6IHN0b3JlLmdl
dFN0YXRlLFxuICAgICAgICBkaXNwYXRjaDogZnVuY3Rpb24gZGlzcGF0Y2goYWN0aW9uKSB7XG4g
ICAgICAgICAgcmV0dXJuIF9kaXNwYXRjaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9O1xu
ICAgICAgY2hhaW4gPSBtaWRkbGV3YXJlcy5tYXAoZnVuY3Rpb24gKG1pZGRsZXdhcmUpIHtcbiAg
ICAgICAgcmV0dXJuIG1pZGRsZXdhcmUobWlkZGxld2FyZUFQSSk7XG4gICAgICB9KTtcbiAgICAg
IF9kaXNwYXRjaCA9IF9jb21wb3NlMlsnZGVmYXVsdCddLmFwcGx5KHVuZGVmaW5lZCwgY2hhaW4p
KHN0b3JlLmRpc3BhdGNoKTtcblxuICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBzdG9yZSwge1xu
ICAgICAgICBkaXNwYXRjaDogX2Rpc3BhdGNoXG4gICAgICB9KTtcbiAgICB9O1xuICB9O1xufVxu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlZHV4
L2xpYi9hcHBseU1pZGRsZXdhcmUuanNcbiAqKiBtb2R1bGUgaWQgPSAyMjVcbiAqKiBtb2R1bGUg
Y2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0g
dHJ1ZTtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGJpbmRBY3Rpb25DcmVhdG9ycztcbmZ1bmN0aW9u
IGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3IsIGRpc3BhdGNoKSB7XG4gIHJldHVybiBm
dW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoKGFjdGlvbkNyZWF0b3IuYXBwbHkodW5k
ZWZpbmVkLCBhcmd1bWVudHMpKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBUdXJucyBhbiBvYmplY3Qg
d2hvc2UgdmFsdWVzIGFyZSBhY3Rpb24gY3JlYXRvcnMsIGludG8gYW4gb2JqZWN0IHdpdGggdGhl
XG4gKiBzYW1lIGtleXMsIGJ1dCB3aXRoIGV2ZXJ5IGZ1bmN0aW9uIHdyYXBwZWQgaW50byBhIGBk
aXNwYXRjaGAgY2FsbCBzbyB0aGV5XG4gKiBtYXkgYmUgaW52b2tlZCBkaXJlY3RseS4gVGhpcyBp
cyBqdXN0IGEgY29udmVuaWVuY2UgbWV0aG9kLCBhcyB5b3UgY2FuIGNhbGxcbiAqIGBzdG9yZS5k
aXNwYXRjaChNeUFjdGlvbkNyZWF0b3JzLmRvU29tZXRoaW5nKCkpYCB5b3Vyc2VsZiBqdXN0IGZp
bmUuXG4gKlxuICogRm9yIGNvbnZlbmllbmNlLCB5b3UgY2FuIGFsc28gcGFzcyBhIHNpbmdsZSBm
dW5jdGlvbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQsXG4gKiBhbmQgZ2V0IGEgZnVuY3Rpb24gaW4g
cmV0dXJuLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb258T2JqZWN0fSBhY3Rpb25DcmVhdG9ycyBB
biBvYmplY3Qgd2hvc2UgdmFsdWVzIGFyZSBhY3Rpb25cbiAqIGNyZWF0b3IgZnVuY3Rpb25zLiBP
bmUgaGFuZHkgd2F5IHRvIG9idGFpbiBpdCBpcyB0byB1c2UgRVM2IGBpbXBvcnQgKiBhc2BcbiAq
IHN5bnRheC4gWW91IG1heSBhbHNvIHBhc3MgYSBzaW5nbGUgZnVuY3Rpb24uXG4gKlxuICogQHBh
cmFtIHtGdW5jdGlvbn0gZGlzcGF0Y2ggVGhlIGBkaXNwYXRjaGAgZnVuY3Rpb24gYXZhaWxhYmxl
IG9uIHlvdXIgUmVkdXhcbiAqIHN0b3JlLlxuICpcbiAqIEByZXR1cm5zIHtGdW5jdGlvbnxPYmpl
Y3R9IFRoZSBvYmplY3QgbWltaWNraW5nIHRoZSBvcmlnaW5hbCBvYmplY3QsIGJ1dCB3aXRoXG4g
KiBldmVyeSBhY3Rpb24gY3JlYXRvciB3cmFwcGVkIGludG8gdGhlIGBkaXNwYXRjaGAgY2FsbC4g
SWYgeW91IHBhc3NlZCBhXG4gKiBmdW5jdGlvbiBhcyBgYWN0aW9uQ3JlYXRvcnNgLCB0aGUgcmV0
dXJuIHZhbHVlIHdpbGwgYWxzbyBiZSBhIHNpbmdsZVxuICogZnVuY3Rpb24uXG4gKi9cbmZ1bmN0
aW9uIGJpbmRBY3Rpb25DcmVhdG9ycyhhY3Rpb25DcmVhdG9ycywgZGlzcGF0Y2gpIHtcbiAgaWYg
KHR5cGVvZiBhY3Rpb25DcmVhdG9ycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBiaW5k
QWN0aW9uQ3JlYXRvcihhY3Rpb25DcmVhdG9ycywgZGlzcGF0Y2gpO1xuICB9XG5cbiAgaWYgKHR5
cGVvZiBhY3Rpb25DcmVhdG9ycyAhPT0gJ29iamVjdCcgfHwgYWN0aW9uQ3JlYXRvcnMgPT09IG51
bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2JpbmRBY3Rpb25DcmVhdG9ycyBleHBlY3RlZCBh
biBvYmplY3Qgb3IgYSBmdW5jdGlvbiwgaW5zdGVhZCByZWNlaXZlZCAnICsgKGFjdGlvbkNyZWF0
b3JzID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIGFjdGlvbkNyZWF0b3JzKSArICcuICcgKyAn
RGlkIHlvdSB3cml0ZSBcImltcG9ydCBBY3Rpb25DcmVhdG9ycyBmcm9tXCIgaW5zdGVhZCBvZiBc
ImltcG9ydCAqIGFzIEFjdGlvbkNyZWF0b3JzIGZyb21cIj8nKTtcbiAgfVxuXG4gIHZhciBrZXlz
ID0gT2JqZWN0LmtleXMoYWN0aW9uQ3JlYXRvcnMpO1xuICB2YXIgYm91bmRBY3Rpb25DcmVhdG9y
cyA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2
YXIga2V5ID0ga2V5c1tpXTtcbiAgICB2YXIgYWN0aW9uQ3JlYXRvciA9IGFjdGlvbkNyZWF0b3Jz
W2tleV07XG4gICAgaWYgKHR5cGVvZiBhY3Rpb25DcmVhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4g
ICAgICBib3VuZEFjdGlvbkNyZWF0b3JzW2tleV0gPSBiaW5kQWN0aW9uQ3JlYXRvcihhY3Rpb25D
cmVhdG9yLCBkaXNwYXRjaCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBib3VuZEFjdGlvbkNyZWF0
b3JzO1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlZHV4L2xpYi9iaW5kQWN0aW9uQ3JlYXRvcnMuanNcbiAqKiBtb2R1bGUgaWQgPSAyMjZc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5f
X2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGNvbWJpbmVSZWR1Y2Vycztc
blxudmFyIF9jcmVhdGVTdG9yZSA9IHJlcXVpcmUoJy4vY3JlYXRlU3RvcmUnKTtcblxudmFyIF9p
c1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoL2lzUGxhaW5PYmplY3QnKTtcblxudmFyIF9p
c1BsYWluT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzUGxhaW5PYmplY3QpO1xu
XG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCcuL3V0aWxzL3dhcm5pbmcnKTtcblxudmFyIF93YXJu
aW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcpO1xuXG5mdW5jdGlvbiBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8g
b2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGdldFVuZGVmaW5lZFN0YXRl
RXJyb3JNZXNzYWdlKGtleSwgYWN0aW9uKSB7XG4gIHZhciBhY3Rpb25UeXBlID0gYWN0aW9uICYm
IGFjdGlvbi50eXBlO1xuICB2YXIgYWN0aW9uTmFtZSA9IGFjdGlvblR5cGUgJiYgJ1wiJyArIGFj
dGlvblR5cGUudG9TdHJpbmcoKSArICdcIicgfHwgJ2FuIGFjdGlvbic7XG5cbiAgcmV0dXJuICdH
aXZlbiBhY3Rpb24gJyArIGFjdGlvbk5hbWUgKyAnLCByZWR1Y2VyIFwiJyArIGtleSArICdcIiBy
ZXR1cm5lZCB1bmRlZmluZWQuICcgKyAnVG8gaWdub3JlIGFuIGFjdGlvbiwgeW91IG11c3QgZXhw
bGljaXRseSByZXR1cm4gdGhlIHByZXZpb3VzIHN0YXRlLiAnICsgJ0lmIHlvdSB3YW50IHRoaXMg
cmVkdWNlciB0byBob2xkIG5vIHZhbHVlLCB5b3UgY2FuIHJldHVybiBudWxsIGluc3RlYWQgb2Yg
dW5kZWZpbmVkLic7XG59XG5cbmZ1bmN0aW9uIGdldFVuZXhwZWN0ZWRTdGF0ZVNoYXBlV2Fybmlu
Z01lc3NhZ2UoaW5wdXRTdGF0ZSwgcmVkdWNlcnMsIGFjdGlvbiwgdW5leHBlY3RlZEtleUNhY2hl
KSB7XG4gIHZhciByZWR1Y2VyS2V5cyA9IE9iamVjdC5rZXlzKHJlZHVjZXJzKTtcbiAgdmFyIGFy
Z3VtZW50TmFtZSA9IGFjdGlvbiAmJiBhY3Rpb24udHlwZSA9PT0gX2NyZWF0ZVN0b3JlLkFjdGlv
blR5cGVzLklOSVQgPyAncHJlbG9hZGVkU3RhdGUgYXJndW1lbnQgcGFzc2VkIHRvIGNyZWF0ZVN0
b3JlJyA6ICdwcmV2aW91cyBzdGF0ZSByZWNlaXZlZCBieSB0aGUgcmVkdWNlcic7XG5cbiAgaWYg
KHJlZHVjZXJLZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnU3RvcmUgZG9lcyBub3Qg
aGF2ZSBhIHZhbGlkIHJlZHVjZXIuIE1ha2Ugc3VyZSB0aGUgYXJndW1lbnQgcGFzc2VkICcgKyAn
dG8gY29tYmluZVJlZHVjZXJzIGlzIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIHJlZHVjZXJz
Lic7XG4gIH1cblxuICBpZiAoISgwLCBfaXNQbGFpbk9iamVjdDJbJ2RlZmF1bHQnXSkoaW5wdXRT
dGF0ZSkpIHtcbiAgICByZXR1cm4gJ1RoZSAnICsgYXJndW1lbnROYW1lICsgJyBoYXMgdW5leHBl
Y3RlZCB0eXBlIG9mIFwiJyArIHt9LnRvU3RyaW5nLmNhbGwoaW5wdXRTdGF0ZSkubWF0Y2goL1xc
cyhbYS16fEEtWl0rKS8pWzFdICsgJ1wiLiBFeHBlY3RlZCBhcmd1bWVudCB0byBiZSBhbiBvYmpl
Y3Qgd2l0aCB0aGUgZm9sbG93aW5nICcgKyAoJ2tleXM6IFwiJyArIHJlZHVjZXJLZXlzLmpvaW4o
J1wiLCBcIicpICsgJ1wiJyk7XG4gIH1cblxuICB2YXIgdW5leHBlY3RlZEtleXMgPSBPYmplY3Qu
a2V5cyhpbnB1dFN0YXRlKS5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiAhcmVk
dWNlcnMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhdW5leHBlY3RlZEtleUNhY2hlW2tleV07XG4g
IH0pO1xuXG4gIHVuZXhwZWN0ZWRLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHVu
ZXhwZWN0ZWRLZXlDYWNoZVtrZXldID0gdHJ1ZTtcbiAgfSk7XG5cbiAgaWYgKHVuZXhwZWN0ZWRL
ZXlzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gJ1VuZXhwZWN0ZWQgJyArICh1bmV4cGVjdGVk
S2V5cy5sZW5ndGggPiAxID8gJ2tleXMnIDogJ2tleScpICsgJyAnICsgKCdcIicgKyB1bmV4cGVj
dGVkS2V5cy5qb2luKCdcIiwgXCInKSArICdcIiBmb3VuZCBpbiAnICsgYXJndW1lbnROYW1lICsg
Jy4gJykgKyAnRXhwZWN0ZWQgdG8gZmluZCBvbmUgb2YgdGhlIGtub3duIHJlZHVjZXIga2V5cyBp
bnN0ZWFkOiAnICsgKCdcIicgKyByZWR1Y2VyS2V5cy5qb2luKCdcIiwgXCInKSArICdcIi4gVW5l
eHBlY3RlZCBrZXlzIHdpbGwgYmUgaWdub3JlZC4nKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3Nl
cnRSZWR1Y2VyU2hhcGUocmVkdWNlcnMpIHtcbiAgT2JqZWN0LmtleXMocmVkdWNlcnMpLmZvckVh
Y2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciByZWR1Y2VyID0gcmVkdWNlcnNba2V5XTtcbiAg
ICB2YXIgaW5pdGlhbFN0YXRlID0gcmVkdWNlcih1bmRlZmluZWQsIHsgdHlwZTogX2NyZWF0ZVN0
b3JlLkFjdGlvblR5cGVzLklOSVQgfSk7XG5cbiAgICBpZiAodHlwZW9mIGluaXRpYWxTdGF0ZSA9
PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNlciBcIicgKyBr
ZXkgKyAnXCIgcmV0dXJuZWQgdW5kZWZpbmVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4gJyArICdJ
ZiB0aGUgc3RhdGUgcGFzc2VkIHRvIHRoZSByZWR1Y2VyIGlzIHVuZGVmaW5lZCwgeW91IG11c3Qg
JyArICdleHBsaWNpdGx5IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZS4gVGhlIGluaXRpYWwgc3Rh
dGUgbWF5ICcgKyAnbm90IGJlIHVuZGVmaW5lZC4gSWYgeW91IGRvblxcJ3Qgd2FudCB0byBzZXQg
YSB2YWx1ZSBmb3IgdGhpcyByZWR1Y2VyLCAnICsgJ3lvdSBjYW4gdXNlIG51bGwgaW5zdGVhZCBv
ZiB1bmRlZmluZWQuJyk7XG4gICAgfVxuXG4gICAgdmFyIHR5cGUgPSAnQEByZWR1eC9QUk9CRV9V
TktOT1dOX0FDVElPTl8nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDcp
LnNwbGl0KCcnKS5qb2luKCcuJyk7XG4gICAgaWYgKHR5cGVvZiByZWR1Y2VyKHVuZGVmaW5lZCwg
eyB0eXBlOiB0eXBlIH0pID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9y
KCdSZWR1Y2VyIFwiJyArIGtleSArICdcIiByZXR1cm5lZCB1bmRlZmluZWQgd2hlbiBwcm9iZWQg
d2l0aCBhIHJhbmRvbSB0eXBlLiAnICsgKCdEb25cXCd0IHRyeSB0byBoYW5kbGUgJyArIF9jcmVh
dGVTdG9yZS5BY3Rpb25UeXBlcy5JTklUICsgJyBvciBvdGhlciBhY3Rpb25zIGluIFwicmVkdXgv
KlwiICcpICsgJ25hbWVzcGFjZS4gVGhleSBhcmUgY29uc2lkZXJlZCBwcml2YXRlLiBJbnN0ZWFk
LCB5b3UgbXVzdCByZXR1cm4gdGhlICcgKyAnY3VycmVudCBzdGF0ZSBmb3IgYW55IHVua25vd24g
YWN0aW9ucywgdW5sZXNzIGl0IGlzIHVuZGVmaW5lZCwgJyArICdpbiB3aGljaCBjYXNlIHlvdSBt
dXN0IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZSwgcmVnYXJkbGVzcyBvZiB0aGUgJyArICdhY3Rp
b24gdHlwZS4gVGhlIGluaXRpYWwgc3RhdGUgbWF5IG5vdCBiZSB1bmRlZmluZWQsIGJ1dCBjYW4g
YmUgbnVsbC4nKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFR1cm5zIGFuIG9iamVjdCB3
aG9zZSB2YWx1ZXMgYXJlIGRpZmZlcmVudCByZWR1Y2VyIGZ1bmN0aW9ucywgaW50byBhIHNpbmds
ZVxuICogcmVkdWNlciBmdW5jdGlvbi4gSXQgd2lsbCBjYWxsIGV2ZXJ5IGNoaWxkIHJlZHVjZXIs
IGFuZCBnYXRoZXIgdGhlaXIgcmVzdWx0c1xuICogaW50byBhIHNpbmdsZSBzdGF0ZSBvYmplY3Qs
IHdob3NlIGtleXMgY29ycmVzcG9uZCB0byB0aGUga2V5cyBvZiB0aGUgcGFzc2VkXG4gKiByZWR1
Y2VyIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcmVkdWNlcnMgQW4gb2JqZWN0
IHdob3NlIHZhbHVlcyBjb3JyZXNwb25kIHRvIGRpZmZlcmVudFxuICogcmVkdWNlciBmdW5jdGlv
bnMgdGhhdCBuZWVkIHRvIGJlIGNvbWJpbmVkIGludG8gb25lLiBPbmUgaGFuZHkgd2F5IHRvIG9i
dGFpblxuICogaXQgaXMgdG8gdXNlIEVTNiBgaW1wb3J0ICogYXMgcmVkdWNlcnNgIHN5bnRheC4g
VGhlIHJlZHVjZXJzIG1heSBuZXZlciByZXR1cm5cbiAqIHVuZGVmaW5lZCBmb3IgYW55IGFjdGlv
bi4gSW5zdGVhZCwgdGhleSBzaG91bGQgcmV0dXJuIHRoZWlyIGluaXRpYWwgc3RhdGVcbiAqIGlm
IHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlbSB3YXMgdW5kZWZpbmVkLCBhbmQgdGhlIGN1cnJlbnQg
c3RhdGUgZm9yIGFueVxuICogdW5yZWNvZ25pemVkIGFjdGlvbi5cbiAqXG4gKiBAcmV0dXJucyB7
RnVuY3Rpb259IEEgcmVkdWNlciBmdW5jdGlvbiB0aGF0IGludm9rZXMgZXZlcnkgcmVkdWNlciBp
bnNpZGUgdGhlXG4gKiBwYXNzZWQgb2JqZWN0LCBhbmQgYnVpbGRzIGEgc3RhdGUgb2JqZWN0IHdp
dGggdGhlIHNhbWUgc2hhcGUuXG4gKi9cbmZ1bmN0aW9uIGNvbWJpbmVSZWR1Y2VycyhyZWR1Y2Vy
cykge1xuICB2YXIgcmVkdWNlcktleXMgPSBPYmplY3Qua2V5cyhyZWR1Y2Vycyk7XG4gIHZhciBm
aW5hbFJlZHVjZXJzID0ge307XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmVkdWNlcktleXMubGVu
Z3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0gcmVkdWNlcktleXNbaV07XG5cbiAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiBy
ZWR1Y2Vyc1trZXldID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAoMCwgX3dhcm5pbmcyWydk
ZWZhdWx0J10pKCdObyByZWR1Y2VyIHByb3ZpZGVkIGZvciBrZXkgXCInICsga2V5ICsgJ1wiJyk7
XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiByZWR1Y2Vyc1trZXldID09PSAnZnVu
Y3Rpb24nKSB7XG4gICAgICBmaW5hbFJlZHVjZXJzW2tleV0gPSByZWR1Y2Vyc1trZXldO1xuICAg
IH1cbiAgfVxuICB2YXIgZmluYWxSZWR1Y2VyS2V5cyA9IE9iamVjdC5rZXlzKGZpbmFsUmVkdWNl
cnMpO1xuXG4gIHZhciB1bmV4cGVjdGVkS2V5Q2FjaGUgPSB2b2lkIDA7XG4gIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdW5leHBlY3RlZEtleUNhY2hl
ID0ge307XG4gIH1cblxuICB2YXIgc2hhcGVBc3NlcnRpb25FcnJvciA9IHZvaWQgMDtcbiAgdHJ5
IHtcbiAgICBhc3NlcnRSZWR1Y2VyU2hhcGUoZmluYWxSZWR1Y2Vycyk7XG4gIH0gY2F0Y2ggKGUp
IHtcbiAgICBzaGFwZUFzc2VydGlvbkVycm9yID0gZTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlv
biBjb21iaW5hdGlvbigpIHtcbiAgICB2YXIgc3RhdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAm
JiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgIHZh
ciBhY3Rpb24gPSBhcmd1bWVudHNbMV07XG5cbiAgICBpZiAoc2hhcGVBc3NlcnRpb25FcnJvcikg
e1xuICAgICAgdGhyb3cgc2hhcGVBc3NlcnRpb25FcnJvcjtcbiAgICB9XG5cbiAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIHdhcm5pbmdN
ZXNzYWdlID0gZ2V0VW5leHBlY3RlZFN0YXRlU2hhcGVXYXJuaW5nTWVzc2FnZShzdGF0ZSwgZmlu
YWxSZWR1Y2VycywgYWN0aW9uLCB1bmV4cGVjdGVkS2V5Q2FjaGUpO1xuICAgICAgaWYgKHdhcm5p
bmdNZXNzYWdlKSB7XG4gICAgICAgICgwLCBfd2FybmluZzJbJ2RlZmF1bHQnXSkod2FybmluZ01l
c3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBoYXNDaGFuZ2VkID0gZmFsc2U7XG4g
ICAgdmFyIG5leHRTdGF0ZSA9IHt9O1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBmaW5hbFJl
ZHVjZXJLZXlzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9rZXkgPSBmaW5hbFJlZHVjZXJL
ZXlzW19pXTtcbiAgICAgIHZhciByZWR1Y2VyID0gZmluYWxSZWR1Y2Vyc1tfa2V5XTtcbiAgICAg
IHZhciBwcmV2aW91c1N0YXRlRm9yS2V5ID0gc3RhdGVbX2tleV07XG4gICAgICB2YXIgbmV4dFN0
YXRlRm9yS2V5ID0gcmVkdWNlcihwcmV2aW91c1N0YXRlRm9yS2V5LCBhY3Rpb24pO1xuICAgICAg
aWYgKHR5cGVvZiBuZXh0U3RhdGVGb3JLZXkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHZh
ciBlcnJvck1lc3NhZ2UgPSBnZXRVbmRlZmluZWRTdGF0ZUVycm9yTWVzc2FnZShfa2V5LCBhY3Rp
b24pO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICAgIH1cbiAg
ICAgIG5leHRTdGF0ZVtfa2V5XSA9IG5leHRTdGF0ZUZvcktleTtcbiAgICAgIGhhc0NoYW5nZWQg
PSBoYXNDaGFuZ2VkIHx8IG5leHRTdGF0ZUZvcktleSAhPT0gcHJldmlvdXNTdGF0ZUZvcktleTtc
biAgICB9XG4gICAgcmV0dXJuIGhhc0NoYW5nZWQgPyBuZXh0U3RhdGUgOiBzdGF0ZTtcbiAgfTtc
bn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWR1eC9saWIvY29tYmluZVJlZHVjZXJzLmpzXG4gKiogbW9kdWxlIGlkID0gMjI3XG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2lu
ZGV4Jyk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9zeW1ib2wtb2JzZXJ2YWJsZS9pbmRleC5qc1xuICoqIG1vZHVsZSBpZCA9IDIyOFxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5l
UHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xu
XG52YXIgX3BvbnlmaWxsID0gcmVxdWlyZSgnLi9wb255ZmlsbCcpO1xuXG52YXIgX3BvbnlmaWxs
MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3BvbnlmaWxsKTtcblxuZnVuY3Rpb24gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9i
aiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgcm9vdDsgLyogZ2xvYmFsIHdpbmRvdyAq
L1xuXG5cbmlmICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgcm9vdCA9IHNlbGY7
XG59IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIHJvb3QgPSB3
aW5kb3c7XG59IGVsc2UgaWYgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnKSB7XG4gIHJv
b3QgPSBnbG9iYWw7XG59IGVsc2UgaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7
XG4gIHJvb3QgPSBtb2R1bGU7XG59IGVsc2Uge1xuICByb290ID0gRnVuY3Rpb24oJ3JldHVybiB0
aGlzJykoKTtcbn1cblxudmFyIHJlc3VsdCA9ICgwLCBfcG9ueWZpbGwyWydkZWZhdWx0J10pKHJv
b3QpO1xuZXhwb3J0c1snZGVmYXVsdCddID0gcmVzdWx0O1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3N5bWJvbC1vYnNlcnZhYmxlL2xpYi9pbmRl
eC5qc1xuICoqIG1vZHVsZSBpZCA9IDIyOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
J3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9k
dWxlXCIsIHtcblx0dmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1snZGVmYXVsdCddID0gc3ltYm9s
T2JzZXJ2YWJsZVBvbnlmaWxsO1xuZnVuY3Rpb24gc3ltYm9sT2JzZXJ2YWJsZVBvbnlmaWxsKHJv
b3QpIHtcblx0dmFyIHJlc3VsdDtcblx0dmFyIF9TeW1ib2wgPSByb290LlN5bWJvbDtcblxuXHRp
ZiAodHlwZW9mIF9TeW1ib2wgPT09ICdmdW5jdGlvbicpIHtcblx0XHRpZiAoX1N5bWJvbC5vYnNl
cnZhYmxlKSB7XG5cdFx0XHRyZXN1bHQgPSBfU3ltYm9sLm9ic2VydmFibGU7XG5cdFx0fSBlbHNl
IHtcblx0XHRcdHJlc3VsdCA9IF9TeW1ib2woJ29ic2VydmFibGUnKTtcblx0XHRcdF9TeW1ib2wu
b2JzZXJ2YWJsZSA9IHJlc3VsdDtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0cmVzdWx0ID0gJ0BA
b2JzZXJ2YWJsZSc7XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9zeW1ib2wtb2JzZXJ2YWJsZS9s
aWIvcG9ueWZpbGwuanNcbiAqKiBtb2R1bGUgaWQgPSAyMzBcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3Ry
aWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlh
bnQnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xu
XG4vKipcbiAqIFN0YXRpYyBwb29sZXJzLiBTZXZlcmFsIGN1c3RvbSB2ZXJzaW9ucyBmb3IgZWFj
aCBwb3RlbnRpYWwgbnVtYmVyIG9mXG4gKiBhcmd1bWVudHMuIEEgY29tcGxldGVseSBnZW5lcmlj
IHBvb2xlciBpcyBlYXN5IHRvIGltcGxlbWVudCwgYnV0IHdvdWxkXG4gKiByZXF1aXJlIGFjY2Vz
c2luZyB0aGUgYGFyZ3VtZW50c2Agb2JqZWN0LiBJbiBlYWNoIG9mIHRoZXNlLCBgdGhpc2AgcmVm
ZXJzIHRvXG4gKiB0aGUgQ2xhc3MgaXRzZWxmLCBub3QgYW4gaW5zdGFuY2UuIElmIGFueSBvdGhl
cnMgYXJlIG5lZWRlZCwgc2ltcGx5IGFkZCB0aGVtXG4gKiBoZXJlLCBvciBpbiB0aGVpciBvd24g
ZmlsZXMuXG4gKi9cbnZhciBvbmVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChjb3B5RmllbGRz
RnJvbSkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxl
bmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAg
ICBLbGFzcy5jYWxsKGluc3RhbmNlLCBjb3B5RmllbGRzRnJvbSk7XG4gICAgcmV0dXJuIGluc3Rh
bmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3MoY29weUZpZWxkc0Zyb20pO1xu
ICB9XG59O1xuXG52YXIgdHdvQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyKSB7XG4g
IHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4g
ICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNh
bGwoaW5zdGFuY2UsIGExLCBhMik7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xu
ICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyKTtcbiAgfVxufTtcblxudmFyIHRocmVlQXJndW1l
bnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMykge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xu
ICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEts
YXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIs
IGEzKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBL
bGFzcyhhMSwgYTIsIGEzKTtcbiAgfVxufTtcblxudmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IGZ1
bmN0aW9uIChhMSwgYTIsIGEzLCBhNCkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xh
c3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3Rh
bmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzLCBhNCk7
XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3Mo
YTEsIGEyLCBhMywgYTQpO1xuICB9XG59O1xuXG52YXIgc3RhbmRhcmRSZWxlYXNlciA9IGZ1bmN0
aW9uIChpbnN0YW5jZSkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICAhKGluc3RhbmNlIGluc3Rh
bmNlb2YgS2xhc3MpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ1RyeWluZyB0byByZWxlYXNlIGFuIGluc3RhbmNlIGludG8gYSBwb29s
IG9mIGEgZGlmZmVyZW50IHR5cGUuJykgOiBfcHJvZEludmFyaWFudCgnMjUnKSA6IHZvaWQgMDtc
biAgaW5zdGFuY2UuZGVzdHJ1Y3RvcigpO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0
aCA8IEtsYXNzLnBvb2xTaXplKSB7XG4gICAgS2xhc3MuaW5zdGFuY2VQb29sLnB1c2goaW5zdGFu
Y2UpO1xuICB9XG59O1xuXG52YXIgREVGQVVMVF9QT09MX1NJWkUgPSAxMDtcbnZhciBERUZBVUxU
X1BPT0xFUiA9IG9uZUFyZ3VtZW50UG9vbGVyO1xuXG4vKipcbiAqIEF1Z21lbnRzIGBDb3B5Q29u
c3RydWN0b3JgIHRvIGJlIGEgcG9vbGFibGUgY2xhc3MsIGF1Z21lbnRpbmcgb25seSB0aGUgY2xh
c3NcbiAqIGl0c2VsZiAoc3RhdGljYWxseSkgbm90IGFkZGluZyBhbnkgcHJvdG90eXBpY2FsIGZp
ZWxkcy4gQW55IENvcHlDb25zdHJ1Y3RvclxuICogeW91IGdpdmUgdGhpcyBtYXkgaGF2ZSBhIGBw
b29sU2l6ZWAgcHJvcGVydHksIGFuZCB3aWxsIGxvb2sgZm9yIGFcbiAqIHByb3RvdHlwaWNhbCBg
ZGVzdHJ1Y3RvcmAgb24gaW5zdGFuY2VzLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IENvcHlD
b25zdHJ1Y3RvciBDb25zdHJ1Y3RvciB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlc2V0LlxuICogQHBh
cmFtIHtGdW5jdGlvbn0gcG9vbGVyIEN1c3RvbWl6YWJsZSBwb29sZXIuXG4gKi9cbnZhciBhZGRQ
b29saW5nVG8gPSBmdW5jdGlvbiAoQ29weUNvbnN0cnVjdG9yLCBwb29sZXIpIHtcbiAgLy8gQ2Fz
dGluZyBhcyBhbnkgc28gdGhhdCBmbG93IGlnbm9yZXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlv
biBhbmQgdHJ1c3RzXG4gIC8vIGl0IHRvIG1hdGNoIHRoZSB0eXBlIHdlIGRlY2xhcmVkXG4gIHZh
ciBOZXdLbGFzcyA9IENvcHlDb25zdHJ1Y3RvcjtcbiAgTmV3S2xhc3MuaW5zdGFuY2VQb29sID0g
W107XG4gIE5ld0tsYXNzLmdldFBvb2xlZCA9IHBvb2xlciB8fCBERUZBVUxUX1BPT0xFUjtcbiAg
aWYgKCFOZXdLbGFzcy5wb29sU2l6ZSkge1xuICAgIE5ld0tsYXNzLnBvb2xTaXplID0gREVGQVVM
VF9QT09MX1NJWkU7XG4gIH1cbiAgTmV3S2xhc3MucmVsZWFzZSA9IHN0YW5kYXJkUmVsZWFzZXI7
XG4gIHJldHVybiBOZXdLbGFzcztcbn07XG5cbnZhciBQb29sZWRDbGFzcyA9IHtcbiAgYWRkUG9v
bGluZ1RvOiBhZGRQb29saW5nVG8sXG4gIG9uZUFyZ3VtZW50UG9vbGVyOiBvbmVBcmd1bWVudFBv
b2xlcixcbiAgdHdvQXJndW1lbnRQb29sZXI6IHR3b0FyZ3VtZW50UG9vbGVyLFxuICB0aHJlZUFy
Z3VtZW50UG9vbGVyOiB0aHJlZUFyZ3VtZW50UG9vbGVyLFxuICBmb3VyQXJndW1lbnRQb29sZXI6
IGZvdXJBcmd1bWVudFBvb2xlclxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBQb29sZWRDbGFzcztc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC9saWIvUG9vbGVkQ2xhc3MuanNcbiAqKiBtb2R1bGUgaWQgPSAyMTRcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wYWNrYWdlLWxvY2suanNv
biBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3BhY2thZ2UtbG9jay5qc29uCmluZGV4IGMxMjU1
MzY3M2I4MWZhZTA0OGE2NTdhZmFlNTU2MjU2ZGZhMzZmZTUuLjQzODcxYzYxNTM1NDUwMTllMjYz
OThiMTJiOGVhNzE5YTM1NTdlYjEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4
L3BhY2thZ2UtbG9jay5qc29uCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3BhY2thZ2Ut
bG9jay5qc29uCkBAIC0yLDY3NTEgKzIsNDMwMSBAQAogICAicmVxdWlyZXMiOiB0cnVlLAogICAi
bG9ja2ZpbGVWZXJzaW9uIjogMSwKICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAiYXNhcCI6IHsK
LSAgICAgICJ2ZXJzaW9uIjogIjIuMC42IiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9hc2FwLy0vYXNhcC0yLjAuNi50Z3oiLAotICAgICAgImludGVncml0
eSI6ICJzaGExLTVRTkhZUjErYVFsRElJdTlyK3ZMd3Z1R2JVWT0iCi0gICAgfSwKLSAgICAiYm9v
bGJhc2UiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYm9vbGJhc2UvLS9ib29sYmFzZS0xLjAuMC50Z3oi
LAotICAgICAgImludGVncml0eSI6ICJzaGExLWFOLzErK1lNVWVzM2NsNnA0KzB4RGN3ZWQyND0i
LAorICAgICJhYmFiIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FiYWIvLS9hYmFiLTEuMC4zLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdUIzbDl5ZE94T2RXMTVmTmcwOHdOa0p5VGwwPSIs
CiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCi0gICAgImNoZWVyaW8iOiB7Ci0gICAgICAidmVy
c2lvbiI6ICIwLjIyLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2NoZWVyaW8vLS9jaGVlcmlvLTAuMjIuMC50Z3oiLAotICAgICAgImludGVncml0eSI6
ICJzaGExLXFicW9ZS1A1dFpXbXVCc2Fob2N4SWUwNkpwND0iLAorICAgICJhY2NlcHRzIjogewor
ICAgICAgInZlcnNpb24iOiAiMS4zLjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2FjY2VwdHMvLS9hY2NlcHRzLTEuMy40LnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtaGlSbldNZmRiU0dtUjAvd2hLUjBEc0Jlc2g4PSIsCiAgICAgICAiZGV2
IjogdHJ1ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgImNzcy1zZWxlY3QiOiAiMS4y
LjAiLAotICAgICAgICAiZG9tLXNlcmlhbGl6ZXIiOiAiMC4xLjAiLAotICAgICAgICAiZW50aXRp
ZXMiOiAiMS4xLjEiLAotICAgICAgICAiaHRtbHBhcnNlcjIiOiAiMy45LjIiLAotICAgICAgICAi
bG9kYXNoLmFzc2lnbmluIjogIjQuMi4wIiwKLSAgICAgICAgImxvZGFzaC5iaW5kIjogIjQuMi4x
IiwKLSAgICAgICAgImxvZGFzaC5kZWZhdWx0cyI6ICI0LjIuMCIsCi0gICAgICAgICJsb2Rhc2gu
ZmlsdGVyIjogIjQuNi4wIiwKLSAgICAgICAgImxvZGFzaC5mbGF0dGVuIjogIjQuNC4wIiwKLSAg
ICAgICAgImxvZGFzaC5mb3JlYWNoIjogIjQuNS4wIiwKLSAgICAgICAgImxvZGFzaC5tYXAiOiAi
NC42LjAiLAotICAgICAgICAibG9kYXNoLm1lcmdlIjogIjQuNi4wIiwKLSAgICAgICAgImxvZGFz
aC5waWNrIjogIjQuNC4wIiwKLSAgICAgICAgImxvZGFzaC5yZWR1Y2UiOiAiNC42LjAiLAotICAg
ICAgICAibG9kYXNoLnJlamVjdCI6ICI0LjYuMCIsCi0gICAgICAgICJsb2Rhc2guc29tZSI6ICI0
LjYuMCIKKyAgICAgICAgIm1pbWUtdHlwZXMiOiAiMi4xLjE3IiwKKyAgICAgICAgIm5lZ290aWF0
b3IiOiAiMC42LjEiCiAgICAgICB9CiAgICAgfSwKLSAgICAiY2xhc3NuYW1lcyI6IHsKLSAgICAg
ICJ2ZXJzaW9uIjogIjIuMi41IiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9jbGFzc25hbWVzLy0vY2xhc3NuYW1lcy0yLjIuNS50Z3oiLAotICAgICAgImlu
dGVncml0eSI6ICJzaGExLSt6Z0IxRk5HZGtudk5nUEgxaG9DdlJLYjNtMD0iCisgICAgImFjb3Ju
IjogeworICAgICAgInZlcnNpb24iOiAiNS4xLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2Fjb3JuLy0vYWNvcm4tNS4xLjIudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhNTEyLW85NkZaTEpCUFkxbHZUdUp5bEdBOUJrM3QvR0tQUEpHOEgweWRR
UWwwMWNyendKZ3NwYTRBRUlxL3BWVFhpZ21LMFBIVlFoaUF0bjhXTUJMTDlEMldBPT0iLAorICAg
ICAgImRldiI6IHRydWUKICAgICB9LAotICAgICJjb3JlLWpzIjogewotICAgICAgInZlcnNpb24i
OiAiMS4yLjciLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2NvcmUtanMvLS9jb3JlLWpzLTEuMi43LnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEt
WlNLVXdVWlIyeWo2azcwdFgvS1lPazhJeGpZPSIKKyAgICAiYWNvcm4tZHluYW1pYy1pbXBvcnQi
OiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYWNvcm4tZHluYW1pYy1pbXBvcnQvLS9hY29ybi1keW5hbWlj
LWltcG9ydC0yLjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXgxSzlJUXZ2WjVV
QnRzYkxmOGhQajBjVmpNUT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJhY29ybiI6ICI0LjAuMTMiCisgICAgICB9LAorICAgICAgImRlcGVuZGVu
Y2llcyI6IHsKKyAgICAgICAgImFjb3JuIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMC4x
MyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fj
b3JuLy0vYWNvcm4tNC4wLjEzLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLUVG
U1ZybE5oMXBlOUdWeUNVWkxoclg4bE40Yz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0KKyAgICAgIH0KICAgICB9LAotICAgICJjb3JlLXV0aWwtaXMiOiB7Ci0gICAgICAidmVy
c2lvbiI6ICIxLjAuMiIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvY29yZS11dGlsLWlzLy0vY29yZS11dGlsLWlzLTEuMC4yLnRneiIsCi0gICAgICAiaW50
ZWdyaXR5IjogInNoYTEtdGYxVUlncWl2RnExZXF0eFFNbEFkVVVEd2FjPSIsCi0gICAgICAiZGV2
IjogdHJ1ZQorICAgICJhY29ybi1nbG9iYWxzIjogeworICAgICAgInZlcnNpb24iOiAiMy4xLjAi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fjb3JuLWds
b2JhbHMvLS9hY29ybi1nbG9iYWxzLTMuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtL1lKdzl4KzdTWmF3QlBxSUR1WFVaWE9uTWI4PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFjb3JuIjogIjQuMC4xMyIKKyAgICAgIH0sCisg
ICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiYWNvcm4iOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiNC4wLjEzIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvYWNvcm4vLS9hY29ybi00LjAuMTMudGd6IiwKKyAgICAgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtRUZTVnJsTmgxcGU5R1Z5Q1VaTGhyWDhsTjRjPSIsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfQorICAgICAgfQogICAgIH0sCi0gICAgImNyZWF0ZS1yZWFjdC1j
bGFzcyI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjE1LjYuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY3JlYXRlLXJlYWN0LWNsYXNzLy0vY3JlYXRlLXJl
YWN0LWNsYXNzLTE1LjYuMC50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLXEwU0VsOEps
WnVIaWxCUG9neUI5VjgvbnZ0UT0iLAorICAgICJhY29ybi1qc3giOiB7CisgICAgICAidmVyc2lv
biI6ICIzLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvYWNvcm4tanN4Ly0vYWNvcm4tanN4LTMuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtcjkrVWlQc2V6dnlEU1BiN0l2Ums0eXBZczJzPSIsCisgICAgICAiZGV2IjogdHJ1ZSwK
ICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgImZianMiOiAiMC44LjE0IiwKLSAgICAgICAg
Imxvb3NlLWVudmlmeSI6ICIxLjMuMSIsCi0gICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4x
IgorICAgICAgICAiYWNvcm4iOiAiMy4zLjAiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2ll
cyI6IHsKKyAgICAgICAgImFjb3JuIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMy4wIiwK
KyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYWNvcm4v
LS9hY29ybi0zLjMuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1SZU4vczU2
Tm8vSmJydVAvVTJuaXUxOGlBWG89IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
CiAgICAgICB9CiAgICAgfSwKLSAgICAiY3NzLXNlbGVjdCI6IHsKLSAgICAgICJ2ZXJzaW9uIjog
IjEuMi4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9j
c3Mtc2VsZWN0Ly0vY3NzLXNlbGVjdC0xLjIuMC50Z3oiLAotICAgICAgImludGVncml0eSI6ICJz
aGExLUt6b1JCVG5GTlY4YzJOTVVZajZIQ3hJZXlGZz0iLAorICAgICJhZGRyZXNzIjogeworICAg
ICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2FkZHJlc3MvLS9hZGRyZXNzLTEuMC4yLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtU0FDQjZDdFllNk1aUlovdlVTOVJiK0E5V0s4PSIsCisgICAgICAiZGV2Ijog
dHJ1ZQorICAgIH0sCisgICAgImFqdiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjUuMi4yIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hanYvLS9hanYtNS4y
LjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1SOGFOYWVodlhaVXhBN0FIU3BRdzNH
UGFYams9IiwKICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjogewotICAgICAg
ICAiYm9vbGJhc2UiOiAiMS4wLjAiLAotICAgICAgICAiY3NzLXdoYXQiOiAiMi4xLjAiLAotICAg
ICAgICAiZG9tdXRpbHMiOiAiMS41LjEiLAotICAgICAgICAibnRoLWNoZWNrIjogIjEuMC4xIgor
ICAgICAgICAiY28iOiAiNC42LjAiLAorICAgICAgICAiZmFzdC1kZWVwLWVxdWFsIjogIjEuMC4w
IiwKKyAgICAgICAgImpzb24tc2NoZW1hLXRyYXZlcnNlIjogIjAuMy4xIiwKKyAgICAgICAgImpz
b24tc3RhYmxlLXN0cmluZ2lmeSI6ICIxLjAuMSIKICAgICAgIH0KICAgICB9LAotICAgICJjc3Mt
d2hhdCI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jc3Mtd2hhdC8tL2Nzcy13aGF0LTIuMS4wLnRneiIs
Ci0gICAgICAiaW50ZWdyaXR5IjogInNoYTEtbEdmUU1zT00rdSs1OHRlVkFTVXdZdmgvb2IwPSIs
CisgICAgImFqdi1rZXl3b3JkcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuNS4xIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hanYta2V5d29yZHMvLS9h
anYta2V5d29yZHMtMS41LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1NVTNRcExN
Mmo2MDkvTnhVN2VZWEc0aHRyenc9IiwKICAgICAgICJkZXYiOiB0cnVlCiAgICAgfSwKLSAgICAi
ZGVmaW5lLXByb3BlcnRpZXMiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCi0gICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZGVmaW5lLXByb3BlcnRpZXMv
LS9kZWZpbmUtcHJvcGVydGllcy0xLjEuMi50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGEx
LWc2Yy9MK3BXbUpqN2MzR1R5UGh6eXZiVVhKUT0iLAorICAgICJhbGlnbi10ZXh0IjogeworICAg
ICAgInZlcnNpb24iOiAiMC4xLjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2FsaWduLXRleHQvLS9hbGlnbi10ZXh0LTAuMS40LnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtRE5rS1ZoQ1Q4MTBLbVNWc0lyY0dsRFA2MFJjPSIsCiAgICAgICAi
ZGV2IjogdHJ1ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgImZvcmVhY2giOiAiMi4w
LjUiLAotICAgICAgICAib2JqZWN0LWtleXMiOiAiMS4wLjExIgorICAgICAgICAia2luZC1vZiI6
ICIzLjIuMiIsCisgICAgICAgICJsb25nZXN0IjogIjEuMC4xIiwKKyAgICAgICAgInJlcGVhdC1z
dHJpbmciOiAiMS42LjEiCiAgICAgICB9CiAgICAgfSwKLSAgICAiZG9tLXNlcmlhbGl6ZXIiOiB7
Ci0gICAgICAidmVyc2lvbiI6ICIwLjEuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvZG9tLXNlcmlhbGl6ZXIvLS9kb20tc2VyaWFsaXplci0wLjEuMC50
Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLUJ6eHBkVWJPQjRET0k3NUtLT0tUNUF2RERJ
ST0iLAorICAgICJhbHBoYW51bS1zb3J0IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FscGhhbnVtLXNv
cnQvLS9hbHBoYW51bS1zb3J0LTEuMC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
bDZFUmxrbXlFYTB6YVIyZm4waHFqc243NEtNPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0s
CisgICAgImFtZGVmaW5lIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FtZGVmaW5lLy0vYW1kZWZpbmUt
MS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1TbEtDckJaSEtlazJHYno5T3RG
UitCZk9rZlU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYW5zZXIiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIxLjQuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvYW5zZXIvLS9hbnNlci0xLjQuMS50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLXcyUVlZNmxpenI3NVFlb3Nod2J5eTA4SEZyMD0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJhbnNpLWFsaWduIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjAi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fuc2ktYWxp
Z24vLS9hbnNpLWFsaWduLTEuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTHd3
V1dJS1hPYTNWNjdGZWF3eHVOQ1B3RnJvPSIsCiAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJy
ZXF1aXJlcyI6IHsKLSAgICAgICAgImRvbWVsZW1lbnR0eXBlIjogIjEuMS4zIiwKLSAgICAgICAg
ImVudGl0aWVzIjogIjEuMS4xIgorICAgICAgICAic3RyaW5nLXdpZHRoIjogIjEuMC4yIgogICAg
ICAgfSwKICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAgICAgICJkb21lbGVtZW50dHlwZSI6
IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCi0gICAgICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RvbWVsZW1lbnR0eXBlLy0vZG9tZWxlbWVudHR5
cGUtMS4xLjMudGd6IiwKLSAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdlNoM1BpWkNpQnJz
VVZSSkpDbWNYTmdpR0ZzPSIsCi0gICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgImlzLWZ1
bGx3aWR0aC1jb2RlLXBvaW50IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtZnVsbHdp
ZHRoLWNvZGUtcG9pbnQvLS9pcy1mdWxsd2lkdGgtY29kZS1wb2ludC0xLjAuMC50Z3oiLAorICAg
ICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS03NTR4T0c4REduOE5aRHI0TDk1UXhGZnZBTXM9IiwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAibnVtYmVyLWlzLW5hbiI6ICIxLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJzdHJpbmctd2lkdGgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAor
ICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJpbmct
d2lkdGgvLS9zdHJpbmctd2lkdGgtMS4wLjIudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtRVl2Zlc0emNVYUtuNXcwaEhnZmlzTG14QjlNPSIsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImNvZGUtcG9pbnQtYXQi
OiAiMS4xLjAiLAorICAgICAgICAgICAgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIjEuMC4w
IiwKKyAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4xIgorICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgfQogICAgIH0sCi0gICAgImRvbWVsZW1lbnR0eXBlIjogewotICAgICAgInZl
cnNpb24iOiAiMS4zLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2RvbWVsZW1lbnR0eXBlLy0vZG9tZWxlbWVudHR5cGUtMS4zLjAudGd6IiwKLSAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1zWHJ0Z3VpcldlVXQyY0diRjFiZy9CaHlCTUk9IiwKKyAgICAi
YW5zaS1lc2NhcGVzIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fuc2ktZXNjYXBlcy8tL2Fuc2ktZXNj
YXBlcy0yLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVc2NVN2a0pJZU4yWGcr
aVJEai9Da2k2RHlCcz0iLAogICAgICAgImRldiI6IHRydWUKICAgICB9LAotICAgICJkb21oYW5k
bGVyIjogewotICAgICAgInZlcnNpb24iOiAiMi40LjEiLAotICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RvbWhhbmRsZXIvLS9kb21oYW5kbGVyLTIuNC4xLnRn
eiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEtaVM1SEFBcVp2bFc3ODNkUC9xQldIWWg1d2xr
PSIsCisgICAgImFuc2ktaHRtbCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMC43IiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hbnNpLWh0bWwvLS9hbnNp
LWh0bWwtMC4wLjcudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1nVFdFQWhsaXFlbm0v
UU9mbEEwUzlXeW5oWjQ9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYW5zaS1y
ZWdleCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hbnNpLXJlZ2V4Ly0vYW5zaS1yZWdleC0yLjEuMS50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXc3TTZ0ZTQyRFliZzVpandSb3JuN3lmV1ZO
OD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJhbnNpLXN0eWxlcyI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjMuMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9hbnNpLXN0eWxlcy8tL2Fuc2ktc3R5bGVzLTMuMi4wLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTUxMi1OblNPbU1FWXRWUjJKVk1JR1R6eW5Sa2theHRpcTF4bkZC
Y2RRRC9Ebk5DWVBvRVBzVkpoTTk4QkR5YW9OT1FJaTdwNG9rZGkzRTI3ZU43R1Fic1V1Zz09IiwK
ICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAiZG9tZWxl
bWVudHR5cGUiOiAiMS4zLjAiCisgICAgICAgICJjb2xvci1jb252ZXJ0IjogIjEuOS4wIgogICAg
ICAgfQogICAgIH0sCi0gICAgImRvbXV0aWxzIjogewotICAgICAgInZlcnNpb24iOiAiMS41LjEi
LAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RvbXV0aWxz
Ly0vZG9tdXRpbHMtMS41LjEudGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0zTmhJaWli
MVk5WVFlZVNNbjN0K01qYzJnczg9IiwKKyAgICAiYW55bWF0Y2giOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjMuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvYW55bWF0Y2gvLS9hbnltYXRjaC0xLjMuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGE1MTItMFhOYXlDOGxUSFEyT0k4YWxqTkNOM3NTeDZoc3IvMStybGNEQW90WEpSN0Mxb1paSENO
c2ZwYkt3TWpSQTNVcWI1dEYxUmFlMm9sb1RyNHhwcStXakE9PSIsCiAgICAgICAiZGV2IjogdHJ1
ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgImRvbS1zZXJpYWxpemVyIjogIjAuMS4w
IiwKLSAgICAgICAgImRvbWVsZW1lbnR0eXBlIjogIjEuMy4wIgorICAgICAgICAibWljcm9tYXRj
aCI6ICIyLjMuMTEiLAorICAgICAgICAibm9ybWFsaXplLXBhdGgiOiAiMi4xLjEiCiAgICAgICB9
CiAgICAgfSwKLSAgICAiZW5jb2RpbmciOiB7Ci0gICAgICAidmVyc2lvbiI6ICIwLjEuMTIiLAot
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VuY29kaW5nLy0v
ZW5jb2RpbmctMC4xLjEyLnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEtVTR0bTgrNWl6
UnExSHNNamdwMGZsSURIUytzPSIsCisgICAgImFwcGVuZC10cmFuc2Zvcm0iOiB7CisgICAgICAi
dmVyc2lvbiI6ICIwLjQuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvYXBwZW5kLXRyYW5zZm9ybS8tL2FwcGVuZC10cmFuc2Zvcm0tMC40LjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0xMjYvaktsTkoyNGtlamE2MUVwTGRLdGhHWkU9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAiaWNvbnYt
bGl0ZSI6ICIwLjQuMTgiCisgICAgICAgICJkZWZhdWx0LXJlcXVpcmUtZXh0ZW5zaW9ucyI6ICIx
LjAuMCIKICAgICAgIH0KICAgICB9LAotICAgICJlbnRpdGllcyI6IHsKLSAgICAgICJ2ZXJzaW9u
IjogIjEuMS4xIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9lbnRpdGllcy8tL2VudGl0aWVzLTEuMS4xLnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNo
YTEtYmx3dENsWWh0ZHJhN08rQXVRN2Z0YzEzY3ZBPSIsCisgICAgImFyZ3BhcnNlIjogeworICAg
ICAgInZlcnNpb24iOiAiMS4wLjkiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2FyZ3BhcnNlLy0vYXJncGFyc2UtMS4wLjkudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1jOWc3d21QNGJwZjR6RTlycmhzT2tLZlNMSVk9IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAic3ByaW50Zi1qcyI6ICIxLjAu
MyIKKyAgICAgIH0KKyAgICB9LAorICAgICJhcmlhLXF1ZXJ5IjogeworICAgICAgInZlcnNpb24i
OiAiMC43LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2FyaWEtcXVlcnkvLS9hcmlhLXF1ZXJ5LTAuNy4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTUxMi0vcjJsSGwwOVYzbzc0KzJNTEtFZGV3b2ozN1lacWlRWm5mZW4xTzRpTmxyT2pVZ2VL
dXUxVTJ5RjNpS2g2SEp4cUYrT1hrTE1mUXY2NVovY3Z4RDZ2QT09IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYXN0LXR5cGVzLWZsb3ciOiAiMC4w
LjciCisgICAgICB9CisgICAgfSwKKyAgICAiYXJyLWRpZmYiOiB7CisgICAgICAidmVyc2lvbiI6
ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
YXJyLWRpZmYvLS9hcnItZGlmZi0yLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LWp6dUNmNVZhaTlacGFYNUtRbGFzUE9yalZzOD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICJhcnItZmxhdHRlbiI6ICIxLjEuMCIKKyAgICAgIH0K
KyAgICB9LAorICAgICJhcnItZmxhdHRlbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnItZmxhdHRl
bi8tL2Fyci1mbGF0dGVuLTEuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1M
M2hLVjVSL3A1bzgxUjdPMDJJR253cERta3A2RTk4MlhodGJ1d1NlM080cU90TU1NdG9kaWNBU0Ex
Q255MlUrYUNYY05wbWwrbTRkUHN2c0ozamF0Zz09IiwKICAgICAgICJkZXYiOiB0cnVlCiAgICAg
fSwKLSAgICAiZW56eW1lIjogewotICAgICAgInZlcnNpb24iOiAiMi45LjEiLAotICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VuenltZS8tL2VuenltZS0yLjku
MS50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLUI5WE9hUkpCSkErNEY3OHNTeGpXNVRB
a0RmWT0iLAorICAgICJhcnJheS1lcXVhbCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1lcXVh
bC8tL2FycmF5LWVxdWFsLTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtakNw
ZThrY3YyZXAwS3dUSGVuVUpPNkoxZkpNPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisg
ICAgImFycmF5LWZpbHRlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMC4xIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1maWx0ZXIvLS9hcnJh
eS1maWx0ZXItMC4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1mYWpQTGlaaWp0
Y3lnRFdCL1NIMmZLelM3dXc9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYXJy
YXktZmluZC1pbmRleCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1maW5kLWluZGV4Ly0vYXJy
YXktZmluZC1pbmRleC0xLjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTN3RUtv
U2grRmt1OXB2bHlPd3FXb2V4Qmg2RT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJhcnJheS1mbGF0dGVuIjogeworICAgICAgInZlcnNpb24iOiAiMi4xLjEiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0ZW4vLS9hcnJh
eS1mbGF0dGVuLTIuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUW11NTJvUUpE
Qmc0MkJMSUZRcnlDb014NHBZPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImFy
cmF5LWluY2x1ZGVzIjogeworICAgICAgInZlcnNpb24iOiAiMy4wLjMiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWluY2x1ZGVzLy0vYXJyYXkt
aW5jbHVkZXMtMy4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1HRXRJOWkyUzEw
VXJzeHN5TVdYSCtMMENKbTA9IiwKICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVz
IjogewotICAgICAgICAiY2hlZXJpbyI6ICIwLjIyLjAiLAotICAgICAgICAiZnVuY3Rpb24ucHJv
dG90eXBlLm5hbWUiOiAiMS4wLjMiLAotICAgICAgICAiaXMtc3Vic2V0IjogIjAuMS4xIiwKLSAg
ICAgICAgImxvZGFzaCI6ICI0LjE3LjQiLAotICAgICAgICAib2JqZWN0LWlzIjogIjEuMC4xIiwK
LSAgICAgICAgIm9iamVjdC5hc3NpZ24iOiAiNC4wLjQiLAotICAgICAgICAib2JqZWN0LmVudHJp
ZXMiOiAiMS4wLjQiLAotICAgICAgICAib2JqZWN0LnZhbHVlcyI6ICIxLjAuNCIsCi0gICAgICAg
ICJwcm9wLXR5cGVzIjogIjE1LjUuMTAiLAotICAgICAgICAidXVpZCI6ICIzLjEuMCIKKyAgICAg
ICAgImRlZmluZS1wcm9wZXJ0aWVzIjogIjEuMS4yIiwKKyAgICAgICAgImVzLWFic3RyYWN0Ijog
IjEuOC4yIgogICAgICAgfQogICAgIH0sCi0gICAgImVzLWFic3RyYWN0IjogewotICAgICAgInZl
cnNpb24iOiAiMS44LjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2VzLWFic3RyYWN0Ly0vZXMtYWJzdHJhY3QtMS44LjAudGd6IiwKLSAgICAgICJpbnRl
Z3JpdHkiOiAic2hhNTEyLUNmOS9oNU1yWHRFeE0yMGdTUzU1WUZyR0tDeVByUkJqSVZCdFZ5eTh2
bWxzRGZlME5QS01XajY1dFBMZ3p5ZlB1YXBXeGg1d2hwWEN0VzQrQVc1bVJnPT0iLAorICAgICJh
cnJheS1tYXAiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjAuMCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyYXktbWFwLy0vYXJyYXktbWFwLTAuMC4w
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaUtLNnR6MGM5N3pWd2JFWW9BUDJiMlpm
cG1JPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImFycmF5LXJlZHVjZSI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjAuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1yZWR1Y2UvLS9hcnJheS1yZWR1Y2UtMC4wLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1GemlaMC8vUng5azRQa1I1VWwyK0o0eXJYeXM9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYXJyYXktdW5pb24iOiB7CisgICAgICAi
dmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvYXJyYXktdW5pb24vLS9hcnJheS11bmlvbi0xLjAuMi50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLW1qUkJEazlPUGFJOTZqZGI1YjV3OGtkNDdEaz0iLAogICAgICAgImRl
diI6IHRydWUsCiAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICJlcy10by1wcmltaXRpdmUi
OiAiMS4xLjEiLAotICAgICAgICAiZnVuY3Rpb24tYmluZCI6ICIxLjEuMCIsCi0gICAgICAgICJo
YXMiOiAiMS4wLjEiLAotICAgICAgICAiaXMtY2FsbGFibGUiOiAiMS4xLjMiLAotICAgICAgICAi
aXMtcmVnZXgiOiAiMS4wLjQiCisgICAgICAgICJhcnJheS11bmlxIjogIjEuMC4zIgogICAgICAg
fQogICAgIH0sCi0gICAgImVzLXRvLXByaW1pdGl2ZSI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjEu
MS4xIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lcy10
by1wcmltaXRpdmUvLS9lcy10by1wcmltaXRpdmUtMS4xLjEudGd6IiwKLSAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1SVFZTU0tpSmVRTkxaNUxobTdnZkszbDEzUTA9IiwKKyAgICAiYXJyYXktdW5p
cSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS11bmlxLy0vYXJyYXktdW5pcS0xLjAuMy50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLXIycklkNkpjeC9kT0JZaVVkVGhZMzlzay9iWT0i
LAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJhcnJheS11bmlxdWUiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIwLjIuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvYXJyYXktdW5pcXVlLy0vYXJyYXktdW5pcXVlLTAuMi4xLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtb2RsOHl2eThKaVhNY1ByYzZ6YWxERml3R2xNPSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImFycmlmeSI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9h
cnJpZnkvLS9hcnJpZnktMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1pWVVJ
MmlJbTg0RGZrRWNvUldoSndWQWFTdzA9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAg
ICAiYXNhcCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC42IiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hc2FwLy0vYXNhcC0yLjAuNi50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLTVRTkhZUjErYVFsRElJdTlyK3ZMd3Z1R2JVWT0iCisgICAg
fSwKKyAgICAiYXNuMSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMi4zIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hc24xLy0vYXNuMS0wLjIuMy50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLTJzaDRkeFBKbG1oSi9JR0FkMzYrbkIzZk80WT0i
LAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJhc24xLmpzIjogeworICAgICAgInZl
cnNpb24iOiAiNC45LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2FzbjEuanMvLS9hc24xLmpzLTQuOS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtU0xva0MwV3BLQTZVZEltUXVsbDlJV1lYL1VBPSIsCiAgICAgICAiZGV2IjogdHJ1ZSwK
ICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgImlzLWNhbGxhYmxlIjogIjEuMS4zIiwKLSAg
ICAgICAgImlzLWRhdGUtb2JqZWN0IjogIjEuMC4xIiwKLSAgICAgICAgImlzLXN5bWJvbCI6ICIx
LjAuMSIKKyAgICAgICAgImJuLmpzIjogIjQuMTEuOCIsCisgICAgICAgICJpbmhlcml0cyI6ICIy
LjAuMyIsCisgICAgICAgICJtaW5pbWFsaXN0aWMtYXNzZXJ0IjogIjEuMC4wIgogICAgICAgfQog
ICAgIH0sCi0gICAgImZianMiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIwLjguMTQiLAotICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZianMvLS9mYmpzLTAuOC4x
NC50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLTBkdml2aVZNTmFrZUNmTWZuTlVLUUxL
ZzdSdz0iLAorICAgICJhc3NlcnQiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjQuMSIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXNzZXJ0Ly0vYXNzZXJ0
LTEuNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbVpFdFdSZzJ0YWIxczBYQThI
N3Z3SS9HWFpFPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJyZXF1aXJlcyI6IHsKLSAg
ICAgICAgImNvcmUtanMiOiAiMS4yLjciLAotICAgICAgICAiaXNvbW9ycGhpYy1mZXRjaCI6ICIy
LjIuMSIsCi0gICAgICAgICJsb29zZS1lbnZpZnkiOiAiMS4zLjEiLAotICAgICAgICAib2JqZWN0
LWFzc2lnbiI6ICI0LjEuMSIsCi0gICAgICAgICJwcm9taXNlIjogIjcuMy4xIiwKLSAgICAgICAg
InNldGltbWVkaWF0ZSI6ICIxLjAuNSIsCi0gICAgICAgICJ1YS1wYXJzZXItanMiOiAiMC43LjE0
IgorICAgICAgICAidXRpbCI6ICIwLjEwLjMiCiAgICAgICB9CiAgICAgfSwKLSAgICAiZm9yZWFj
aCI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjIuMC41IiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mb3JlYWNoLy0vZm9yZWFjaC0yLjAuNS50Z3oiLAotICAg
ICAgImludGVncml0eSI6ICJzaGExLUMrNEFVQml1c21EUW82ODY1bGpkQVRic0c1az0iLAorICAg
ICJhc3NlcnQtcGx1cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hc3NlcnQtcGx1cy8tL2Fzc2VydC1w
bHVzLTAuMi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMTA0YmgrZXYvQTI0cXR0
d0lmUCtTQkFhc2pRPSIsCiAgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCi0gICAgImZzZXZlbnRz
IjogewotICAgICAgInZlcnNpb24iOiAiMS4wLjE0IiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mc2V2ZW50cy8tL2ZzZXZlbnRzLTEuMC4xNC50Z3oiLAot
ICAgICAgImludGVncml0eSI6ICJzaGExLVZZNk13NFpEMk85QS9rVVZoSWJRMGxkWTd1UT0iLAor
ICAgICJhc3QtdHlwZXMtZmxvdyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMC43IiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hc3QtdHlwZXMtZmxvdy8t
L2FzdC10eXBlcy1mbG93LTAuMC43LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtOXd0
elhHdktHbHljSXRtQ3crT2VmK3VqdmEwPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisg
ICAgImFzeW5jIjogeworICAgICAgInZlcnNpb24iOiAiMi41LjAiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FzeW5jLy0vYXN5bmMtMi41LjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWUrbEpBSmVOV3VQQ055eFpLT0JkYUpHeUxHSHVn
WFZRdHJBd3R1QWUydmh4VFl4RlRLRTczcDhKdVRtZEgwcWRRWnREdkk0ZGhKd2paYzV6c2ZJc1l3
PT0iLAogICAgICAgImRldiI6IHRydWUsCi0gICAgICAib3B0aW9uYWwiOiB0cnVlLAogICAgICAg
InJlcXVpcmVzIjogewotICAgICAgICAibmFuIjogIjIuNi4yIiwKLSAgICAgICAgIm5vZGUtcHJl
LWd5cCI6ICIwLjYuMjkiCi0gICAgICB9LAotICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAg
ICAgImFiYnJldiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuOSIsCi0gICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAibG9kYXNoIjogIjQuMTcuNCIKKyAgICAgIH0KKyAg
ICB9LAorICAgICJhc3luYy1lYWNoIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FzeW5jLWVhY2gvLS9h
c3luYy1lYWNoLTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtR2RPR29kbnR4
dWZCeUYwNGl1Mjh4VzB6WUMwPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImFz
eW5ja2l0IjogeworICAgICAgInZlcnNpb24iOiAiMC40LjAiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FzeW5ja2l0Ly0vYXN5bmNraXQtMC40LjAudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS14NTdaZjM4MHk0OHJvYnlYa0x6RFprZExTM2s9
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYXV0b3ByZWZpeGVyIjogeworICAg
ICAgInZlcnNpb24iOiAiNy4xLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2F1dG9wcmVmaXhlci8tL2F1dG9wcmVmaXhlci03LjEuMi50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLSsrcndmVWo5aDQ0R2dyOTh2dXJlY29yYkt4Zz0iLAorICAg
ICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJicm93c2Vyc2xp
c3QiOiAiMi40LjAiLAorICAgICAgICAiY2FuaXVzZS1saXRlIjogIjEuMC4zMDAwMDcyNiIsCisg
ICAgICAgICJub3JtYWxpemUtcmFuZ2UiOiAiMC4xLjIiLAorICAgICAgICAibnVtMmZyYWN0aW9u
IjogIjEuMi4yIiwKKyAgICAgICAgInBvc3Rjc3MiOiAiNi4wLjExIiwKKyAgICAgICAgInBvc3Rj
c3MtdmFsdWUtcGFyc2VyIjogIjMuMy4wIgorICAgICAgfQorICAgIH0sCisgICAgImF3cy1zaWdu
MiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hd3Mtc2lnbjIvLS9hd3Mtc2lnbjItMC42LjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1GRFF0MDQyOHlVME9XNGZYWTgxallTd09lVTg9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYXdzNCI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjEuNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9hd3M0Ly0vYXdzNC0xLjYuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWcrOWNx
R0N5c3k1S0RlN2U2TWR4dWR0WFJ4ND0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJheG9iamVjdC1xdWVyeSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4wIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9heG9iamVjdC1xdWVyeS8tL2F4
b2JqZWN0LXF1ZXJ5LTAuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWXZXZHZG
bkorU1FuV2NvMG1XRG5vdjQ4TnNBPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgImFzdC10eXBlcy1mbG93IjogIjAuMC43IgorICAgICAgfQorICAg
IH0sCisgICAgImJhYmVsLWNvZGUtZnJhbWUiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjI2LjAi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLWNv
ZGUtZnJhbWUvLS9iYWJlbC1jb2RlLWZyYW1lLTYuMjYuMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLVkvMUQ5OXdlTzdmT05aUjl1UDQybWo5WXgwcz0iLAorICAgICAgImRldiI6IHRy
dWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAg
ICAgICJlc3V0aWxzIjogIjIuMC4yIiwKKyAgICAgICAgImpzLXRva2VucyI6ICIzLjAuMiIKKyAg
ICAgIH0KKyAgICB9LAorICAgICJiYWJlbC1jb3JlIjogeworICAgICAgInZlcnNpb24iOiAiNi4y
NS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJl
bC1jb3JlLy0vYmFiZWwtY29yZS02LjI1LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1mZFFyQkdQSFF1blZLVzNyUHNaNmt5TGExeWs9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFiZWwtY29kZS1mcmFtZSI6ICI2LjI2LjAiLAor
ICAgICAgICAiYmFiZWwtZ2VuZXJhdG9yIjogIjYuMjYuMCIsCisgICAgICAgICJiYWJlbC1oZWxw
ZXJzIjogIjYuMjQuMSIsCisgICAgICAgICJiYWJlbC1tZXNzYWdlcyI6ICI2LjIzLjAiLAorICAg
ICAgICAiYmFiZWwtcmVnaXN0ZXIiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUi
OiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogIjYuMjYuMCIsCisgICAgICAg
ICJiYWJlbC10cmF2ZXJzZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4y
Ni4wIiwKKyAgICAgICAgImJhYnlsb24iOiAiNi4xOC4wIiwKKyAgICAgICAgImNvbnZlcnQtc291
cmNlLW1hcCI6ICIxLjUuMCIsCisgICAgICAgICJkZWJ1ZyI6ICIyLjYuOCIsCisgICAgICAgICJq
c29uNSI6ICIwLjUuMSIsCisgICAgICAgICJsb2Rhc2giOiAiNC4xNy40IiwKKyAgICAgICAgIm1p
bmltYXRjaCI6ICIzLjAuNCIsCisgICAgICAgICJwYXRoLWlzLWFic29sdXRlIjogIjEuMC4xIiwK
KyAgICAgICAgInByaXZhdGUiOiAiMC4xLjciLAorICAgICAgICAic2xhc2giOiAiMS4wLjAiLAor
ICAgICAgICAic291cmNlLW1hcCI6ICIwLjUuNyIKKyAgICAgIH0KKyAgICB9LAorICAgICJiYWJl
bC1lc2xpbnQiOiB7CisgICAgICAidmVyc2lvbiI6ICI3LjIuMyIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtZXNsaW50Ly0vYmFiZWwtZXNsaW50
LTcuMi4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtc3Y0dGdCSmtjUFhCbEVMY2RY
SlRxSmR4Q0NjPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImJhYmVsLWNvZGUtZnJhbWUiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXRyYXZl
cnNlIjogIjYuMjYuMCIsCisgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjI2LjAiLAorICAgICAg
ICAiYmFieWxvbiI6ICI2LjE4LjAiCisgICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwtZ2VuZXJh
dG9yIjogeworICAgICAgInZlcnNpb24iOiAiNi4yNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1nZW5lcmF0b3IvLS9iYWJlbC1nZW5lcmF0
b3ItNi4yNi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtckJyaUFIQzNuMjQ4b2RN
bWxoTUZOM1R5RGNVPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgImJhYmVsLW1lc3NhZ2VzIjogIjYuMjMuMCIsCisgICAgICAgICJiYWJlbC1ydW50
aW1lIjogIjYuMjYuMCIsCisgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjI2LjAiLAorICAgICAg
ICAiZGV0ZWN0LWluZGVudCI6ICI0LjAuMCIsCisgICAgICAgICJqc2VzYyI6ICIxLjMuMCIsCisg
ICAgICAgICJsb2Rhc2giOiAiNC4xNy40IiwKKyAgICAgICAgInNvdXJjZS1tYXAiOiAiMC41Ljci
LAorICAgICAgICAidHJpbS1yaWdodCI6ICIxLjAuMSIKKyAgICAgIH0sCisgICAgICAiZGVwZW5k
ZW5jaWVzIjogeworICAgICAgICAianNlc2MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4z
LjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9q
c2VzYy8tL2pzZXNjLTEuMy4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLVJz
UCt5TUdKS3hLd2d6MjV2SFlpRjIyNnMwcz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJiYWJlbC1oZWxwZXItYnVpbGRlci1iaW5hcnkt
YXNzaWdubWVudC1vcGVyYXRvci12aXNpdG9yIjogeworICAgICAgInZlcnNpb24iOiAiNi4yNC4x
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1o
ZWxwZXItYnVpbGRlci1iaW5hcnktYXNzaWdubWVudC1vcGVyYXRvci12aXNpdG9yLy0vYmFiZWwt
aGVscGVyLWJ1aWxkZXItYmluYXJ5LWFzc2lnbm1lbnQtb3BlcmF0b3ItdmlzaXRvci02LjI0LjEu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS16T1JSZXRvMWIwSWd2SzZLQXNLelJ2bWxa
bVE9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAi
YmFiZWwtaGVscGVyLWV4cGxvZGUtYXNzaWduYWJsZS1leHByZXNzaW9uIjogIjYuMjQuMSIsCisg
ICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIsCisgICAgICAgICJiYWJlbC10eXBlcyI6
ICI2LjI2LjAiCisgICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwtaGVscGVyLWJ1aWxkZXItcmVh
Y3QtanN4IjogeworICAgICAgInZlcnNpb24iOiAiNi4yNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1oZWxwZXItYnVpbGRlci1yZWFjdC1q
c3gvLS9iYWJlbC1oZWxwZXItYnVpbGRlci1yZWFjdC1qc3gtNi4yNi4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtT2YrREU3ZGNpMlhjNy9IekhUZytEL0trQ0tBPSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUi
OiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMjYuMCIsCisgICAgICAgICJl
c3V0aWxzIjogIjIuMC4yIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLWhlbHBlci1jYWxs
LWRlbGVnYXRlIjogeworICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1oZWxwZXItY2FsbC1kZWxlZ2F0
ZS8tL2JhYmVsLWhlbHBlci1jYWxsLWRlbGVnYXRlLTYuMjQuMS50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLTdPYXF6ZHgyNUJ3MFlmaUwvRmRiME5xaTM0MD0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1oZWxwZXItaG9pc3Qt
dmFyaWFibGVzIjogIjYuMjQuMSIsCisgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIs
CisgICAgICAgICJiYWJlbC10cmF2ZXJzZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtdHlw
ZXMiOiAiNi4yNi4wIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLWhlbHBlci1kZWZpbmUt
bWFwIjogeworICAgICAgInZlcnNpb24iOiAiNi4yNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1oZWxwZXItZGVmaW5lLW1hcC8tL2JhYmVs
LWhlbHBlci1kZWZpbmUtbWFwLTYuMjYuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LXBmVnRxMEdpWDVmc3RKakg2NnlwZ1orVnZsOD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZSI6ICI2
LjI0LjEiLAorICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFi
ZWwtdHlwZXMiOiAiNi4yNi4wIiwKKyAgICAgICAgImxvZGFzaCI6ICI0LjE3LjQiCisgICAgICB9
CisgICAgfSwKKyAgICAiYmFiZWwtaGVscGVyLWV4cGxvZGUtYXNzaWduYWJsZS1leHByZXNzaW9u
IjogeworICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1oZWxwZXItZXhwbG9kZS1hc3NpZ25hYmxlLWV4
cHJlc3Npb24vLS9iYWJlbC1oZWxwZXItZXhwbG9kZS1hc3NpZ25hYmxlLWV4cHJlc3Npb24tNi4y
NC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtOGx1Q3ozM0JCRFBGWDNCWkxWZEdR
QXJDTEtvPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXRyYXZlcnNlIjog
IjYuMjYuMCIsCisgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjI2LjAiCisgICAgICB9CisgICAg
fSwKKyAgICAiYmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWUiOiB7CisgICAgICAidmVyc2lvbiI6
ICI2LjI0LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2JhYmVsLWhlbHBlci1mdW5jdGlvbi1uYW1lLy0vYmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWUt
Ni4yNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMDBkYmpBUHRtQ1FxSmJTRFVh
c1lPWjAxZ0trPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImJhYmVsLWhlbHBlci1nZXQtZnVuY3Rpb24tYXJpdHkiOiAiNi4yNC4xIiwKKyAgICAg
ICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXRlbXBsYXRlIjog
IjYuMjYuMCIsCisgICAgICAgICJiYWJlbC10cmF2ZXJzZSI6ICI2LjI2LjAiLAorICAgICAgICAi
YmFiZWwtdHlwZXMiOiAiNi4yNi4wIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLWhlbHBl
ci1nZXQtZnVuY3Rpb24tYXJpdHkiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjI0LjEiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLWhlbHBlci1n
ZXQtZnVuY3Rpb24tYXJpdHkvLS9iYWJlbC1oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5LTYuMjQu
MS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWozZUNxcE5BZkVIVHFsQ1FqNG13TWJH
MmhUMD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIsCisgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjI2
LjAiCisgICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwtaGVscGVyLWhvaXN0LXZhcmlhYmxlcyI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtaGVscGVyLWhvaXN0LXZhcmlhYmxlcy8tL2JhYmVs
LWhlbHBlci1ob2lzdC12YXJpYWJsZXMtNi4yNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtSHNzbmFKeWRKVkUrcmJ5WkZLYy9WQWkrZW5ZPSIsCisgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIiwK
KyAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMjYuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJi
YWJlbC1oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uIjogeworICAgICAgInZlcnNpb24i
OiAiNi4yNC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9iYWJlbC1oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uLy0vYmFiZWwtaGVscGVyLW9w
dGltaXNlLWNhbGwtZXhwcmVzc2lvbi02LjI0LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS05NkUwSjdxZmMvajArcGs4VktsNGd0RWtRbGM9IiwKKyAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAor
ICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4yNi4wIgorICAgICAgfQorICAgIH0sCisgICAgImJh
YmVsLWhlbHBlci1yZWdleCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjYuMCIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtaGVscGVyLXJlZ2V4
Ly0vYmFiZWwtaGVscGVyLXJlZ2V4LTYuMjYuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLU1seForUUw0THlTM1Q2enUwRFk1VlBaSlhuST0iLAorICAgICAgImRldiI6IHRydWUsCisg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIsCisg
ICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjI2LjAiLAorICAgICAgICAibG9kYXNoIjogIjQuMTcu
NCIKKyAgICAgIH0KKyAgICB9LAorICAgICJiYWJlbC1oZWxwZXItcmVtYXAtYXN5bmMtdG8tZ2Vu
ZXJhdG9yIjogeworICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1oZWxwZXItcmVtYXAtYXN5bmMtdG8t
Z2VuZXJhdG9yLy0vYmFiZWwtaGVscGVyLXJlbWFwLWFzeW5jLXRvLWdlbmVyYXRvci02LjI0LjEu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1Yc1dCZ25yWEkvN04wNEh4eVNnNUJuYmtW
UnM9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAi
YmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWUiOiAiNi4yNC4xIiwKKyAgICAgICAgImJhYmVsLXJ1
bnRpbWUiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogIjYuMjYuMCIsCisg
ICAgICAgICJiYWJlbC10cmF2ZXJzZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtdHlwZXMi
OiAiNi4yNi4wIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLWhlbHBlci1yZXBsYWNlLXN1
cGVycyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtaGVscGVyLXJlcGxhY2Utc3VwZXJzLy0v
YmFiZWwtaGVscGVyLXJlcGxhY2Utc3VwZXJzLTYuMjQuMS50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLXYyMi81RGs0MFhOcG9oUEtpb3YzUzJxUXF4bz0iLAorICAgICAgImRldiI6IHRy
dWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1oZWxwZXItb3B0aW1pc2Ut
Y2FsbC1leHByZXNzaW9uIjogIjYuMjQuMSIsCisgICAgICAgICJiYWJlbC1tZXNzYWdlcyI6ICI2
LjIzLjAiLAorICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFi
ZWwtdGVtcGxhdGUiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXRyYXZlcnNlIjogIjYuMjYu
MCIsCisgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjI2LjAiCisgICAgICB9CisgICAgfSwKKyAg
ICAiYmFiZWwtaGVscGVycyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtaGVscGVycy8tL2Jh
YmVsLWhlbHBlcnMtNi4yNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTkhIZW5L
N0RpT1hJVU9XWDVZb20zZk4yQXJJPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIiwKKyAgICAgICAgImJh
YmVsLXRlbXBsYXRlIjogIjYuMjYuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJiYWJlbC1qZXN0
IjogeworICAgICAgInZlcnNpb24iOiAiMjAuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1qZXN0Ly0vYmFiZWwtamVzdC0yMC4wLjMudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS01S0E3RTl3UU9KNFVEOFpGMEovOFRPMHdGbkU9
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFi
ZWwtY29yZSI6ICI2LjI1LjAiLAorICAgICAgICAiYmFiZWwtcGx1Z2luLWlzdGFuYnVsIjogIjQu
MS40IiwKKyAgICAgICAgImJhYmVsLXByZXNldC1qZXN0IjogIjIwLjAuMyIKKyAgICAgIH0KKyAg
ICB9LAorICAgICJiYWJlbC1sb2FkZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICI3LjEuMSIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtbG9hZGVy
Ly0vYmFiZWwtbG9hZGVyLTcuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdUhF
MHlMRXVQa3dxbE9CVVlJVzhhQW9yaElnPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgImZpbmQtY2FjaGUtZGlyIjogIjEuMC4wIiwKKyAgICAgICAg
ImxvYWRlci11dGlscyI6ICIxLjEuMCIsCisgICAgICAgICJta2RpcnAiOiAiMC41LjEiCisgICAg
ICB9CisgICAgfSwKKyAgICAiYmFiZWwtbWVzc2FnZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICI2
LjIzLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Jh
YmVsLW1lc3NhZ2VzLy0vYmFiZWwtbWVzc2FnZXMtNi4yMy4wLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtODgzMGNEaFlBMXNxS1ZIRzdGN2ZiR0x5WXc0PSIsCisgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4y
Ni4wIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXBsdWdpbi1jaGVjay1lczIwMTUtY29u
c3RhbnRzIjogeworICAgICAgInZlcnNpb24iOiAiNi4yMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tY2hlY2stZXMyMDE1LWNv
bnN0YW50cy8tL2JhYmVsLXBsdWdpbi1jaGVjay1lczIwMTUtY29uc3RhbnRzLTYuMjIuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLU5SVjdFQlFtL1MvOVBhUDNYSDBla1lOYnY0bz0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJl
bC1ydW50aW1lIjogIjYuMjYuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJiYWJlbC1wbHVnaW4t
ZHluYW1pYy1pbXBvcnQtbm9kZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tZHlu
YW1pYy1pbXBvcnQtbm9kZS8tL2JhYmVsLXBsdWdpbi1keW5hbWljLWltcG9ydC1ub2RlLTEuMC4y
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcmJXOGowaW9reEZVQTVXdW53ekQ3VXNR
dXk0PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ImJhYmVsLXBsdWdpbi1zeW50YXgtZHluYW1pYy1pbXBvcnQiOiAiNi4xOC4wIiwKKyAgICAgICAg
ImJhYmVsLXRlbXBsYXRlIjogIjYuMjYuMCIsCisgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjI2
LjAiCisgICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwtcGx1Z2luLWlzdGFuYnVsIjogeworICAg
ICAgInZlcnNpb24iOiAiNC4xLjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2JhYmVsLXBsdWdpbi1pc3RhbmJ1bC8tL2JhYmVsLXBsdWdpbi1pc3RhbmJ1
bC00LjEuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUdOM29TL1BPTXAvZDgvUVFQ
NjZTRkZiWTVZYz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJmaW5kLXVwIjogIjIuMS4wIiwKKyAgICAgICAgImlzdGFuYnVsLWxpYi1pbnN0cnVt
ZW50IjogIjEuOC4wIiwKKyAgICAgICAgInRlc3QtZXhjbHVkZSI6ICI0LjEuMSIKKyAgICAgIH0K
KyAgICB9LAorICAgICJiYWJlbC1wbHVnaW4tamVzdC1ob2lzdCI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjIwLjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvYmFiZWwtcGx1Z2luLWplc3QtaG9pc3QvLS9iYWJlbC1wbHVnaW4tamVzdC1ob2lzdC0yMC4w
LjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1yKzNJVTcwL2pjTlVqcVp4KythZEE4
d3NGMmM9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYmFiZWwtcGx1Z2luLXN5
bnRheC1hc3luYy1mdW5jdGlvbnMiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjEzLjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXBsdWdpbi1z
eW50YXgtYXN5bmMtZnVuY3Rpb25zLy0vYmFiZWwtcGx1Z2luLXN5bnRheC1hc3luYy1mdW5jdGlv
bnMtNi4xMy4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEteXRuSzBSa2JXdFkwdnpD
dUNISTVIZ1pIdnBVPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImJhYmVsLXBs
dWdpbi1zeW50YXgtY2xhc3MtcHJvcGVydGllcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMTMu
MCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwt
cGx1Z2luLXN5bnRheC1jbGFzcy1wcm9wZXJ0aWVzLy0vYmFiZWwtcGx1Z2luLXN5bnRheC1jbGFz
cy1wcm9wZXJ0aWVzLTYuMTMuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTErc2p0
NW94ZjRWRGxpeFFXNEo4Zld5c0o5ND0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJiYWJlbC1wbHVnaW4tc3ludGF4LWR5bmFtaWMtaW1wb3J0IjogeworICAgICAgInZlcnNpb24i
OiAiNi4xOC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9iYWJlbC1wbHVnaW4tc3ludGF4LWR5bmFtaWMtaW1wb3J0Ly0vYmFiZWwtcGx1Z2luLXN5bnRh
eC1keW5hbWljLWltcG9ydC02LjE4LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1q
V29tSXB5RGRGcVpncVJCQlJWeXlxRjVzZG89IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwK
KyAgICAiYmFiZWwtcGx1Z2luLXN5bnRheC1leHBvbmVudGlhdGlvbi1vcGVyYXRvciI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjYuMTMuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXN5bnRheC1leHBvbmVudGlhdGlvbi1vcGVyYXRv
ci8tL2JhYmVsLXBsdWdpbi1zeW50YXgtZXhwb25lbnRpYXRpb24tb3BlcmF0b3ItNi4xMy4wLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbnVmb00zS1EycFVvZ2dHbXBYOUJjREY0TU40
PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImJhYmVsLXBsdWdpbi1zeW50YXgt
ZmxvdyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMTguMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXN5bnRheC1mbG93Ly0vYmFi
ZWwtcGx1Z2luLXN5bnRheC1mbG93LTYuMTguMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLVREcXlDaXJ5YXFJTTBsbVZ3NWpFNjNBeERJMD0iLAorICAgICAgImRldiI6IHRydWUKKyAg
ICB9LAorICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWpzeCI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjYuMTguMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
YmFiZWwtcGx1Z2luLXN5bnRheC1qc3gvLS9iYWJlbC1wbHVnaW4tc3ludGF4LWpzeC02LjE4LjAu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1Ddk1xbW00VHluby8xUWFlWXRldzlZME5p
VVk9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYmFiZWwtcGx1Z2luLXN5bnRh
eC1vYmplY3QtcmVzdC1zcHJlYWQiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjEzLjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXBsdWdpbi1z
eW50YXgtb2JqZWN0LXJlc3Qtc3ByZWFkLy0vYmFiZWwtcGx1Z2luLXN5bnRheC1vYmplY3QtcmVz
dC1zcHJlYWQtNi4xMy4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtL1dVMjhyemhP
RGIvbzZWRmpFa0RwWmU3Ty9VPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImJh
YmVsLXBsdWdpbi1zeW50YXgtdHJhaWxpbmctZnVuY3Rpb24tY29tbWFzIjogeworICAgICAgInZl
cnNpb24iOiAiNi4yMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9iYWJlbC1wbHVnaW4tc3ludGF4LXRyYWlsaW5nLWZ1bmN0aW9uLWNvbW1hcy8tL2Jh
YmVsLXBsdWdpbi1zeW50YXgtdHJhaWxpbmctZnVuY3Rpb24tY29tbWFzLTYuMjIuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLXVnTmdrMytOQnVRQmdLUS80TlZoYi85VExQTT0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWFz
eW5jLXRvLWdlbmVyYXRvciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1hc3luYy10by1nZW5lcmF0b3IvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWFzeW5jLXRv
LWdlbmVyYXRvci02LjI0LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1aVGJqZUsv
Mnl4MVZGNndPUU9zK244alFoMkU9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAiYmFiZWwtaGVscGVyLXJlbWFwLWFzeW5jLXRvLWdlbmVyYXRvciI6
ICI2LjI0LjEiLAorICAgICAgICAiYmFiZWwtcGx1Z2luLXN5bnRheC1hc3luYy1mdW5jdGlvbnMi
OiAiNi4xMy4wIiwKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIgorICAgICAgfQor
ICAgIH0sCisgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tY2xhc3MtcHJvcGVydGllcyI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1jbGFzcy1wcm9wZXJ0aWVz
Ly0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1jbGFzcy1wcm9wZXJ0aWVzLTYuMjQuMS50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLWFubDJQcVlkTTlOdk43WVJxcDN2Z2FnYlJxdz0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1o
ZWxwZXItZnVuY3Rpb24tbmFtZSI6ICI2LjI0LjEiLAorICAgICAgICAiYmFiZWwtcGx1Z2luLXN5
bnRheC1jbGFzcy1wcm9wZXJ0aWVzIjogIjYuMTMuMCIsCisgICAgICAgICJiYWJlbC1ydW50aW1l
IjogIjYuMjYuMCIsCisgICAgICAgICJiYWJlbC10ZW1wbGF0ZSI6ICI2LjI2LjAiCisgICAgICB9
CisgICAgfSwKKyAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYXJyb3ctZnVuY3Rp
b25zIjogeworICAgICAgInZlcnNpb24iOiAiNi4yMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1h
cnJvdy1mdW5jdGlvbnMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1hcnJvdy1mdW5j
dGlvbnMtNi4yMi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUlNhU3kzRWRYM25j
ZjRYa1FNNUJ1ZkpFMGlFPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIgorICAgICAgfQorICAgIH0sCisg
ICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2NrLXNjb3BlZC1mdW5jdGlvbnMi
OiB7CisgICAgICAidmVyc2lvbiI6ICI2LjIyLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2Nr
LXNjb3BlZC1mdW5jdGlvbnMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9jay1z
Y29wZWQtZnVuY3Rpb25zLTYuMjIuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXU4
VWJTZmxrMXd5NDJPQzVUb0lDUnM0NllVRT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIKKyAgICAgIH0K
KyAgICB9LAorICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9jay1zY29waW5n
IjogeworICAgICAgInZlcnNpb24iOiAiNi4yNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9j
ay1zY29waW5nLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYmxvY2stc2NvcGluZy02
LjI2LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0xdzlTbWNFd2pRWEJMMFk0RTdD
Z25uT3hpVjg9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtdGVtcGxhdGUi
OiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXRyYXZlcnNlIjogIjYuMjYuMCIsCisgICAgICAg
ICJiYWJlbC10eXBlcyI6ICI2LjI2LjAiLAorICAgICAgICAibG9kYXNoIjogIjQuMTcuNCIKKyAg
ICAgIH0KKyAgICB9LAorICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jbGFzc2Vz
IjogeworICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jbGFz
c2VzLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtY2xhc3Nlcy02LjI0LjEudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1Xa3hZcFF5Y2xHSGxaTFN5bzcrcnlYb2xoTnM9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFiZWwt
aGVscGVyLWRlZmluZS1tYXAiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLWhlbHBlci1mdW5j
dGlvbi1uYW1lIjogIjYuMjQuMSIsCisgICAgICAgICJiYWJlbC1oZWxwZXItb3B0aW1pc2UtY2Fs
bC1leHByZXNzaW9uIjogIjYuMjQuMSIsCisgICAgICAgICJiYWJlbC1oZWxwZXItcmVwbGFjZS1z
dXBlcnMiOiAiNi4yNC4xIiwKKyAgICAgICAgImJhYmVsLW1lc3NhZ2VzIjogIjYuMjMuMCIsCisg
ICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIsCisgICAgICAgICJiYWJlbC10ZW1wbGF0
ZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtdHJhdmVyc2UiOiAiNi4yNi4wIiwKKyAgICAg
ICAgImJhYmVsLXR5cGVzIjogIjYuMjYuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJiYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jb21wdXRlZC1wcm9wZXJ0aWVzIjogeworICAgICAgInZl
cnNpb24iOiAiNi4yNC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jb21wdXRlZC1wcm9wZXJ0aWVz
Ly0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtY29tcHV0ZWQtcHJvcGVydGllcy02LjI0
LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1iK0tvMFdpVjFXTlBUTm1adHROSUNq
Q0JXYk09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAi
Ni4yNi4wIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LWRlc3RydWN0dXJpbmciOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjIzLjAiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZXMyMDE1LWRlc3RydWN0dXJpbmcvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS1kZXN0cnVjdHVyaW5nLTYuMjMuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLW1Y
dXg4YXVXZjJndEt3aDIvaldOWU9kbHhXMD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIKKyAgICAgIH0K
KyAgICB9LAorICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1kdXBsaWNhdGUta2V5
cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZHVw
bGljYXRlLWtleXMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1kdXBsaWNhdGUta2V5
cy02LjI0LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1jK3M5TVF5cGFlUHZuc2tj
VTNRYWJ4VjJRajQ9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtdHlwZXMi
OiAiNi4yNi4wIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
ZXMyMDE1LWZvci1vZiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjMuMCIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1lczIwMTUtZm9yLW9mLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZm9yLW9mLTYu
MjMuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTlIeVZzcllUM3gwK3pDL2JkWE5p
UEhVa2hwRT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJiYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1mdW5jdGlvbi1uYW1lIjogeworICAgICAgInZlcnNp
b24iOiAiNi4yNC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1mdW5jdGlvbi1uYW1lLy0vYmFiZWwt
cGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZnVuY3Rpb24tbmFtZS02LjI0LjEudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1nMHlKaFR2RGF4cnc4NlRGMjZxVS9ZNnNxb3M9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFiZWwtaGVscGVy
LWZ1bmN0aW9uLW5hbWUiOiAiNi4yNC4xIiwKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4y
Ni4wIiwKKyAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMjYuMCIKKyAgICAgIH0KKyAgICB9LAor
ICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1saXRlcmFscyI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjYuMjIuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbGl0ZXJhbHMvLS9iYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1saXRlcmFscy02LjIyLjAudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1UMVNnTFd6V2JQa1ZLQUFab3gweGtsTjN5aTQ9IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2
LjI2LjAiCisgICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIw
MTUtbW9kdWxlcy1hbWQiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjI0LjEiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tZXMyMDE1LW1vZHVsZXMtYW1kLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9k
dWxlcy1hbWQtNi4yNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtT3o1VUFYSTVo
QzF0R2NNQkhFdlM4QW9BMFZRPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtY29t
bW9uanMiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIiwKKyAg
ICAgICAgImJhYmVsLXRlbXBsYXRlIjogIjYuMjYuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJi
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLWNvbW1vbmpzIjogeworICAgICAg
InZlcnNpb24iOiAiNi4yNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLWNvbW1vbmpz
Ly0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1jb21tb25qcy02LjI2LjAu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1EWU9VQXB0OXhxdmhxWDd4Z2VBSFdOMHVY
WW89IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAi
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1zdHJpY3QtbW9kZSI6ICI2LjI0LjEiLAorICAgICAgICAi
YmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4y
Ni4wIiwKKyAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMjYuMCIKKyAgICAgIH0KKyAgICB9LAor
ICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLXN5c3RlbWpzIjogewor
ICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLXN5
c3RlbWpzLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1zeXN0ZW1qcy02
LjI0LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0vNG1oUXJrUm1wQmhsZlh4QnV6
ekJkbEFmU009IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAiYmFiZWwtaGVscGVyLWhvaXN0LXZhcmlhYmxlcyI6ICI2LjI0LjEiLAorICAgICAgICAi
YmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4y
Ni4wIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LW1vZHVsZXMtdW1kIjogeworICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LWVzMjAxNS1tb2R1bGVzLXVtZC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVs
ZXMtdW1kLTYuMjQuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXJKbCtZb1hOR08x
aGRxMjJCOVlDTkVyVGhHZz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLWFtZCI6
ICI2LjI0LjEiLAorICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAorICAgICAgICAi
YmFiZWwtdGVtcGxhdGUiOiAiNi4yNi4wIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tZXMyMDE1LW9iamVjdC1zdXBlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjYuMjQuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtb2JqZWN0LXN1cGVyLy0vYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1lczIwMTUtb2JqZWN0LXN1cGVyLTYuMjQuMS50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLUpNNzJtdUljdURwL2hnUGEwQ0gxY3Vzbmo0MD0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1oZWxwZXItcmVwbGFj
ZS1zdXBlcnMiOiAiNi4yNC4xIiwKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIgor
ICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXBhcmFt
ZXRlcnMiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjI0LjEiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LXBhcmFtZXRlcnMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1wYXJhbWV0ZXJzLTYu
MjQuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVY2dzFHclNjcnhTcGZORTdDZlp2
M3dwaVh5cz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJiYWJlbC1oZWxwZXItY2FsbC1kZWxlZ2F0ZSI6ICI2LjI0LjEiLAorICAgICAgICAiYmFi
ZWwtaGVscGVyLWdldC1mdW5jdGlvbi1hcml0eSI6ICI2LjI0LjEiLAorICAgICAgICAiYmFiZWwt
cnVudGltZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4yNi4wIiwK
KyAgICAgICAgImJhYmVsLXRyYXZlcnNlIjogIjYuMjYuMCIsCisgICAgICAgICJiYWJlbC10eXBl
cyI6ICI2LjI2LjAiCisgICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1lczIwMTUtc2hvcnRoYW5kLXByb3BlcnRpZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjI0
LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXNob3J0aGFuZC1wcm9wZXJ0aWVzLy0vYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1lczIwMTUtc2hvcnRoYW5kLXByb3BlcnRpZXMtNi4yNC4xLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtSlBoMTFuSWNoMllidlpta1lpNVI4VTNqaXFBPSIsCisg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJhYmVsLXJ1
bnRpbWUiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMjYuMCIKKyAgICAg
IH0KKyAgICB9LAorICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1zcHJlYWQiOiB7
CisgICAgICAidmVyc2lvbiI6ICI2LjIyLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXNwcmVhZC8t
L2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXNwcmVhZC02LjIyLjAudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS0xdGFLbWZpYTdjUlRiSUdsUXVqZG54ZEcrTkU9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFiZWwtcnVudGlt
ZSI6ICI2LjI2LjAiCisgICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1lczIwMTUtc3RpY2t5LXJlZ2V4IjogeworICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4t
dHJhbnNmb3JtLWVzMjAxNS1zdGlja3ktcmVnZXgvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVz
MjAxNS1zdGlja3ktcmVnZXgtNi4yNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
QU1ITnNheW5FUkxOOE05aEpzTHRhMFY4emJ3PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJhYmVsLWhlbHBlci1yZWdleCI6ICI2LjI2LjAiLAor
ICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtdHlwZXMi
OiAiNi4yNi4wIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
ZXMyMDE1LXRlbXBsYXRlLWxpdGVyYWxzIjogeworICAgICAgInZlcnNpb24iOiAiNi4yMi4wIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWVzMjAxNS10ZW1wbGF0ZS1saXRlcmFscy8tL2JhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZXMyMDE1LXRlbXBsYXRlLWxpdGVyYWxzLTYuMjIuMC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLXFFczBVUGZwK1BIMmc1MXRhSDJvUzdFamJZMD0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYu
MjYuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS10eXBlb2Ytc3ltYm9sIjogeworICAgICAgInZlcnNpb24iOiAiNi4yMy4wIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS10eXBlb2Ytc3ltYm9sLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUt
dHlwZW9mLXN5bWJvbC02LjIzLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0zc0Nm
SE4zL2xMVXF4ejFRWElUZldkek9zM0k9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiCisgICAgICB9Cisg
ICAgfSwKKyAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdW5pY29kZS1yZWdleCI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdW5pY29k
ZS1yZWdleC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXVuaWNvZGUtcmVnZXgtNi4y
NC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMDRzUzlDNm5Najl5azRmeGlueGE0
ZnJyTmVrPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgImJhYmVsLWhlbHBlci1yZWdleCI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtcnVudGlt
ZSI6ICI2LjI2LjAiLAorICAgICAgICAicmVnZXhwdS1jb3JlIjogIjIuMC4wIgorICAgICAgfSwK
KyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJyZWdleHB1LWNvcmUiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWdleHB1LWNvcmUvLS9yZWdleHB1LWNvcmUtMi4wLjAudGd6
IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtU2RBNGczdU56NHY2VzVwQ0U1azQ1dW9x
NGtBPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJyZWdlbmVyYXRlIjogIjEu
My4yIiwKKyAgICAgICAgICAgICJyZWdqc2dlbiI6ICIwLjIuMCIsCisgICAgICAgICAgICAicmVn
anNwYXJzZXIiOiAiMC4xLjUiCisgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAiYW5z
aS1yZWdleCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCi0gICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAicmVnanNnZW4iOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMC4yLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9yZWdqc2dlbi8tL3JlZ2pzZ2VuLTAuMi4wLnRneiIsCisgICAgICAgICAgImludGVncml0
eSI6ICJzaGExLWJBRnEzcXhWVDNXQ1ArTjZ3RnVTMWFUdHNmYz0iLAogICAgICAgICAgICJkZXYi
OiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJhbnNpLXN0eWxlcyI6IHsKLSAgICAgICAgICAi
dmVyc2lvbiI6ICIyLjIuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAg
ICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKLSAgICAgICAgfSwKLSAg
ICAgICAgImFwcm9iYSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNCIsCi0gICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJv
cHRpb25hbCI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImFyZS13ZS10aGVyZS15ZXQiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAot
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJkZWxlZ2F0ZXMiOiAiMS4wLjAi
LAotICAgICAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6ICIyLjEuNCIKLSAgICAgICAgICB9Ci0g
ICAgICAgIH0sCi0gICAgICAgICJhc24xIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4z
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0g
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiYXNzZXJ0LXBs
dXMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4yLjAiLAotICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJhc3luYyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICIxLjUuMiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0
cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImF3
cy1zaWduMiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuMCIsCi0gICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImF3czQiOiB7Ci0gICAgICAgICAgInZlcnNp
b24iOiAiMS40LjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2
IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAg
ICJiYWxhbmNlZC1tYXRjaCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuMiIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0s
Ci0gICAgICAgICJibCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCi0gICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJv
cHRpb25hbCI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgInJl
YWRhYmxlLXN0cmVhbSI6ICIyLjAuNiIKLSAgICAgICAgICB9LAotICAgICAgICAgICJkZXBlbmRl
bmNpZXMiOiB7Ci0gICAgICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogewotICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjAuNiIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUs
Ci0gICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAiY29yZS11dGls
LWlzIjogIjEuMC4yIiwKLSAgICAgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjEiLAotICAg
ICAgICAgICAgICAgICJpc2FycmF5IjogIjEuMC4wIiwKLSAgICAgICAgICAgICAgICAicHJvY2Vz
cy1uZXh0aWNrLWFyZ3MiOiAiMS4wLjciLAotICAgICAgICAgICAgICAgICJzdHJpbmdfZGVjb2Rl
ciI6ICIwLjEwLjMxIiwKLSAgICAgICAgICAgICAgICAidXRpbC1kZXByZWNhdGUiOiAiMS4wLjIi
Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0s
Ci0gICAgICAgICJibG9jay1zdHJlYW0iOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4wLjki
LAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAg
ICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjEiCi0g
ICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiYm9vbSI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIyLjEwLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgInJl
Z2pzcGFyc2VyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS41IiwKKyAgICAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVnanNwYXJzZXIvLS9yZWdq
c3BhcnNlci0wLjEuNS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1mdWo0VGNi
NmVTMC8wSzRpalNTOWxKNnRJRnc9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAg
ICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiaG9layI6ICIyLjE2LjMiCisgICAgICAgICAg
ICAianNlc2MiOiAiMC41LjAiCiAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiYnJh
Y2UtZXhwYW5zaW9uIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS41IiwKLSAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJl
cXVpcmVzIjogewotICAgICAgICAgICAgImJhbGFuY2VkLW1hdGNoIjogIjAuNC4yIiwKLSAgICAg
ICAgICAgICJjb25jYXQtbWFwIjogIjAuMC4xIgorICAgICAgICB9CisgICAgICB9CisgICAgfSwK
KyAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1leHBvbmVudGlhdGlvbi1vcGVyYXRvciI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1leHBvbmVudGlhdGlvbi1v
cGVyYXRvci8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXhwb25lbnRpYXRpb24tb3BlcmF0b3It
Ni4yNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtS3JESngvTUpqNlNKQjNjcnVC
UCtRZWplT2c0PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImJhYmVsLWhlbHBlci1idWlsZGVyLWJpbmFyeS1hc3NpZ25tZW50LW9wZXJhdG9yLXZp
c2l0b3IiOiAiNi4yNC4xIiwKKyAgICAgICAgImJhYmVsLXBsdWdpbi1zeW50YXgtZXhwb25lbnRp
YXRpb24tb3BlcmF0b3IiOiAiNi4xMy4wIiwKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4y
Ni4wIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZmxvdy1z
dHJpcC10eXBlcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjIuMCIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1m
bG93LXN0cmlwLXR5cGVzLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1mbG93LXN0cmlwLXR5cGVz
LTYuMjIuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWhNdG5LVFhVTnhUOXd5dk9o
RmFOaDBRYzk4OD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWZsb3ciOiAiNi4xOC4wIiwKKyAgICAgICAgImJh
YmVsLXJ1bnRpbWUiOiAiNi4yNi4wIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tb2JqZWN0LXJlc3Qtc3ByZWFkIjogeworICAgICAgInZlcnNpb24iOiAiNi4y
My4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLW9iamVjdC1yZXN0LXNwcmVhZC8tL2JhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tb2JqZWN0LXJlc3Qtc3ByZWFkLTYuMjMuMC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLWgxMXJ5YjUySEZpaXJqL3U1ZHhJbGRqSCtTRT0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LW9iamVj
dC1yZXN0LXNwcmVhZCI6ICI2LjEzLjAiLAorICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2
LjAiCisgICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1j
b25zdGFudC1lbGVtZW50cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjMuMCIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1yZWFjdC1jb25zdGFudC1lbGVtZW50cy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVh
Y3QtY29uc3RhbnQtZWxlbWVudHMtNi4yMy4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtTHhHYjlOTE4xRjY1dXFybGRBVThZRTloUjkwPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIgorICAg
ICAgfQorICAgIH0sCisgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtZGlzcGxheS1u
YW1lIjogeworICAgICAgInZlcnNpb24iOiAiNi4yNS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWRp
c3BsYXktbmFtZS8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtZGlzcGxheS1uYW1lLTYu
MjUuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVorSy9IeDZjazZzSTI1WjVMZ1U1
Sy9MTUtORT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJiYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjQu
MSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwt
cGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0
LWpzeC02LjI0LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1oQW9Dam4zMFlOL0Rv
dEtmREEyUjlqZHVacU09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAiYmFiZWwtaGVscGVyLWJ1aWxkZXItcmVhY3QtanN4IjogIjYuMjYuMCIsCisg
ICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWpzeCI6ICI2LjE4LjAiLAorICAgICAgICAiYmFi
ZWwtcnVudGltZSI6ICI2LjI2LjAiCisgICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1yZWFjdC1qc3gtc2VsZiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjIuMCIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtc2VsZi8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVh
Y3QtanN4LXNlbGYtNi4yMi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMzIyQXFk
b21FcUVoNXQzWFZZdkw3UEJ1WTI0PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgImJhYmVsLXBsdWdpbi1zeW50YXgtanN4IjogIjYuMTguMCIsCisg
ICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJi
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1zb3VyY2UiOiB7CisgICAgICAidmVyc2lv
biI6ICI2LjIyLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4LXNvdXJjZS8tL2JhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tcmVhY3QtanN4LXNvdXJjZS02LjIyLjAudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1acXdTRlQ5YzB0RjdQQmttajB2d0dYOUU3Tlk9IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFiZWwtcGx1Z2luLXN5bnRheC1q
c3giOiAiNi4xOC4wIiwKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIgorICAgICAg
fQorICAgIH0sCisgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5lcmF0b3IiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICI2LjI0LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5lcmF0b3IvLS9iYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLXJlZ2VuZXJhdG9yLTYuMjQuMS50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLXVOb3dXdFE4UEptMGhJNVA1QU43ZHcwanhCZz0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJyZWdlbmVyYXRvci10cmFuc2Zv
cm0iOiAiMC45LjExIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tcnVudGltZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjMuMCIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1y
dW50aW1lLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1ydW50aW1lLTYuMjMuMC50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLWlFa05SR1VDNnB1T2Z2c1A0SjdFMlpSNXNlND0iLAorICAg
ICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1ydW50
aW1lIjogIjYuMjYuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJiYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLXN0cmljdC1tb2RlIjogeworICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLXN0cmljdC1tb2RlLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1zdHJpY3QtbW9kZS02LjI0
LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0xZnIzcWxlS1pidmxrYzllMnVCS0RH
Y0NCMWc9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4y
Ni4wIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXByZXNldC1lbnYiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIxLjUuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvYmFiZWwtcHJlc2V0LWVudi8tL2JhYmVsLXByZXNldC1lbnYtMS41LjIudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS16VXJwQ202VXR3bjVjM1N6UGwrTG1EVldyZTg9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFiZWwt
cGx1Z2luLWNoZWNrLWVzMjAxNS1jb25zdGFudHMiOiAiNi4yMi4wIiwKKyAgICAgICAgImJhYmVs
LXBsdWdpbi1zeW50YXgtdHJhaWxpbmctZnVuY3Rpb24tY29tbWFzIjogIjYuMjIuMCIsCisgICAg
ICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWFzeW5jLXRvLWdlbmVyYXRvciI6ICI2LjI0LjEi
LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYXJyb3ctZnVuY3Rpb25z
IjogIjYuMjIuMCIsCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9j
ay1zY29wZWQtZnVuY3Rpb25zIjogIjYuMjIuMCIsCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS1ibG9jay1zY29waW5nIjogIjYuMjYuMCIsCisgICAgICAgICJiYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jbGFzc2VzIjogIjYuMjQuMSIsCisgICAgICAgICJiYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jb21wdXRlZC1wcm9wZXJ0aWVzIjogIjYuMjQuMSIs
CisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1kZXN0cnVjdHVyaW5nIjog
IjYuMjMuMCIsCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1kdXBsaWNh
dGUta2V5cyI6ICI2LjI0LjEiLAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIw
MTUtZm9yLW9mIjogIjYuMjMuMCIsCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVz
MjAxNS1mdW5jdGlvbi1uYW1lIjogIjYuMjQuMSIsCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS1saXRlcmFscyI6ICI2LjIyLjAiLAorICAgICAgICAiYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1hbWQiOiAiNi4yNC4xIiwKKyAgICAgICAgImJhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtY29tbW9uanMiOiAiNi4yNi4wIiwKKyAg
ICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtc3lzdGVtanMiOiAi
Ni4yNC4xIiwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMt
dW1kIjogIjYuMjQuMSIsCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1v
YmplY3Qtc3VwZXIiOiAiNi4yNC4xIiwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
ZXMyMDE1LXBhcmFtZXRlcnMiOiAiNi4yNC4xIiwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZXMyMDE1LXNob3J0aGFuZC1wcm9wZXJ0aWVzIjogIjYuMjQuMSIsCisgICAgICAgICJi
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1zcHJlYWQiOiAiNi4yMi4wIiwKKyAgICAgICAg
ImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXN0aWNreS1yZWdleCI6ICI2LjI0LjEiLAor
ICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdGVtcGxhdGUtbGl0ZXJhbHMi
OiAiNi4yMi4wIiwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXR5cGVv
Zi1zeW1ib2wiOiAiNi4yMy4wIiwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LXVuaWNvZGUtcmVnZXgiOiAiNi4yNC4xIiwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZXhwb25lbnRpYXRpb24tb3BlcmF0b3IiOiAiNi4yNC4xIiwKKyAgICAgICAgImJhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5lcmF0b3IiOiAiNi4yNC4xIiwKKyAgICAgICAgImJyb3dz
ZXJzbGlzdCI6ICIyLjQuMCIsCisgICAgICAgICJpbnZhcmlhbnQiOiAiMi4yLjIiLAorICAgICAg
ICAic2VtdmVyIjogIjUuNC4xIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXByZXNldC1m
bG93IjogeworICAgICAgInZlcnNpb24iOiAiNi4yMy4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wcmVzZXQtZmxvdy8tL2JhYmVsLXByZXNl
dC1mbG93LTYuMjMuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTV4SVlpSENGcnBv
a3RiNUJhYS83V1pnV3hKMD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWZsb3ctc3RyaXAtdHlwZXMiOiAi
Ni4yMi4wIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXByZXNldC1qZXN0IjogeworICAg
ICAgInZlcnNpb24iOiAiMjAuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9iYWJlbC1wcmVzZXQtamVzdC8tL2JhYmVsLXByZXNldC1qZXN0LTIwLjAu
My50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXk2eXEzc3RkYUp5aDRkNFRZT3Y4Wm9Z
c0Y0bz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJiYWJlbC1wbHVnaW4tamVzdC1ob2lzdCI6ICIyMC4wLjMiCisgICAgICB9CisgICAgfSwKKyAg
ICAiYmFiZWwtcHJlc2V0LXJlYWN0IjogeworICAgICAgInZlcnNpb24iOiAiNi4yNC4xIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wcmVzZXQt
cmVhY3QvLS9iYWJlbC1wcmVzZXQtcmVhY3QtNi4yNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtdW1uZnJxUmZ3K3hqbTJwT3pxYmhkd0xKRTRBPSIsCisgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJhYmVsLXBsdWdpbi1zeW50YXgtanN4
IjogIjYuMTguMCIsCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWRpc3Bs
YXktbmFtZSI6ICI2LjI1LjAiLAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFj
dC1qc3giOiAiNi4yNC4xIiwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3Qt
anN4LXNlbGYiOiAiNi4yMi4wIiwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVh
Y3QtanN4LXNvdXJjZSI6ICI2LjIyLjAiLAorICAgICAgICAiYmFiZWwtcHJlc2V0LWZsb3ciOiAi
Ni4yMy4wIgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXByZXNldC1yZWFjdC1hcHAiOiB7
CisgICAgICAidmVyc2lvbiI6ICIzLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcHJlc2V0LXJlYWN0LWFwcC8tL2JhYmVsLXByZXNldC1y
ZWFjdC1hcHAtMy4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLVV3UlUxcHBP
bDFKUUVYbkNYeThhRnNLdHZTa24xcE5RVUx2ZU9HWnN5dGZybEhVWXU5Z1UrRCt6UFlZNnlNY0F0
YnZRNGhGcyt1QTBicFBOd1I5KytRPT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1wbHVnaW4tZHluYW1pYy1pbXBvcnQtbm9kZSI6ICIx
LjAuMiIsCisgICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWR5bmFtaWMtaW1wb3J0IjogIjYu
MTguMCIsCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWNsYXNzLXByb3BlcnRpZXMi
OiAiNi4yNC4xIiwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tb2JqZWN0LXJlc3Qt
c3ByZWFkIjogIjYuMjMuMCIsCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0
LWNvbnN0YW50LWVsZW1lbnRzIjogIjYuMjMuMCIsCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLXJlYWN0LWpzeCI6ICI2LjI0LjEiLAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1yZWFjdC1qc3gtc2VsZiI6ICI2LjIyLjAiLAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRy
YW5zZm9ybS1yZWFjdC1qc3gtc291cmNlIjogIjYuMjIuMCIsCisgICAgICAgICJiYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLXJlZ2VuZXJhdG9yIjogIjYuMjQuMSIsCisgICAgICAgICJiYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLXJ1bnRpbWUiOiAiNi4yMy4wIiwKKyAgICAgICAgImJhYmVsLXByZXNldC1l
bnYiOiAiMS41LjIiLAorICAgICAgICAiYmFiZWwtcHJlc2V0LXJlYWN0IjogIjYuMjQuMSIKKyAg
ICAgIH0KKyAgICB9LAorICAgICJiYWJlbC1yZWdpc3RlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjYuMjYuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
YmFiZWwtcmVnaXN0ZXIvLS9iYWJlbC1yZWdpc3Rlci02LjI2LjAudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1idEFoRno0dnkwaHRlc3RGeGdDYWhXOWtjSEU9IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFiZWwtY29yZSI6ICI2LjI2
LjAiLAorICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAorICAgICAgICAiY29yZS1q
cyI6ICIyLjUuMSIsCisgICAgICAgICJob21lLW9yLXRtcCI6ICIyLjAuMCIsCisgICAgICAgICJs
b2Rhc2giOiAiNC4xNy40IiwKKyAgICAgICAgIm1rZGlycCI6ICIwLjUuMSIsCisgICAgICAgICJz
b3VyY2UtbWFwLXN1cHBvcnQiOiAiMC40LjE3IgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNp
ZXMiOiB7CisgICAgICAgICJiYWJlbC1jb3JlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYu
MjYuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2JhYmVsLWNvcmUvLS9iYWJlbC1jb3JlLTYuMjYuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1yekwzaXpHbS9POFJuSWV3L1kyWFUvQTZDN2c9IiwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtY29k
ZS1mcmFtZSI6ICI2LjI2LjAiLAorICAgICAgICAgICAgImJhYmVsLWdlbmVyYXRvciI6ICI2LjI2
LjAiLAorICAgICAgICAgICAgImJhYmVsLWhlbHBlcnMiOiAiNi4yNC4xIiwKKyAgICAgICAgICAg
ICJiYWJlbC1tZXNzYWdlcyI6ICI2LjIzLjAiLAorICAgICAgICAgICAgImJhYmVsLXJlZ2lzdGVy
IjogIjYuMjYuMCIsCisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAorICAg
ICAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogIjYuMjYuMCIsCisgICAgICAgICAgICAiYmFiZWwt
dHJhdmVyc2UiOiAiNi4yNi4wIiwKKyAgICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjI2LjAi
LAorICAgICAgICAgICAgImJhYnlsb24iOiAiNi4xOC4wIiwKKyAgICAgICAgICAgICJjb252ZXJ0
LXNvdXJjZS1tYXAiOiAiMS41LjAiLAorICAgICAgICAgICAgImRlYnVnIjogIjIuNi44IiwKKyAg
ICAgICAgICAgICJqc29uNSI6ICIwLjUuMSIsCisgICAgICAgICAgICAibG9kYXNoIjogIjQuMTcu
NCIsCisgICAgICAgICAgICAibWluaW1hdGNoIjogIjMuMC40IiwKKyAgICAgICAgICAgICJwYXRo
LWlzLWFic29sdXRlIjogIjEuMC4xIiwKKyAgICAgICAgICAgICJwcml2YXRlIjogIjAuMS43IiwK
KyAgICAgICAgICAgICJzbGFzaCI6ICIxLjAuMCIsCisgICAgICAgICAgICAic291cmNlLW1hcCI6
ICIwLjUuNyIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJidWZmZXItc2hpbXMi
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgImNvcmUtanMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi41LjEi
LAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb3Jl
LWpzLy0vY29yZS1qcy0yLjUuMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1y
bWgwM0dhVGQ0bTRCMVQvVkNqZlpvR2NwUXM9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAg
ICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwtcnVudGltZSI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjYuMjYuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvYmFiZWwtcnVudGltZS8tL2JhYmVsLXJ1bnRpbWUtNi4yNi4wLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtbGx4d1dHYU9nclZkZS80RS95TTN2SXRXUi80PSIsCisgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImNvcmUtanMiOiAi
Mi41LjEiLAorICAgICAgICAicmVnZW5lcmF0b3ItcnVudGltZSI6ICIwLjExLjAiCisgICAgICB9
LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImNvcmUtanMiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMi41LjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9jb3JlLWpzLy0vY29yZS1qcy0yLjUuMS50Z3oiLAorICAgICAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1ybWgwM0dhVGQ0bTRCMVQvVkNqZlpvR2NwUXM9IiwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwt
dGVtcGxhdGUiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjI2LjAiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXRlbXBsYXRlLy0vYmFiZWwtdGVt
cGxhdGUtNi4yNi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtM2dQaTBXT1dzR24w
YmRuLytGSWZzYURqWGdJPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXRy
YXZlcnNlIjogIjYuMjYuMCIsCisgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjI2LjAiLAorICAg
ICAgICAiYmFieWxvbiI6ICI2LjE4LjAiLAorICAgICAgICAibG9kYXNoIjogIjQuMTcuNCIKKyAg
ICAgIH0KKyAgICB9LAorICAgICJiYWJlbC10cmF2ZXJzZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjYuMjYuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
YmFiZWwtdHJhdmVyc2UvLS9iYWJlbC10cmF2ZXJzZS02LjI2LjAudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1ScW5MMSszTVlzamx3R1RpMHRqUTlBTlhadTQ9IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFiZWwtY29kZS1mcmFtZSI6
ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtbWVzc2FnZXMiOiAiNi4yMy4wIiwKKyAgICAgICAg
ImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMjYu
MCIsCisgICAgICAgICJiYWJ5bG9uIjogIjYuMTguMCIsCisgICAgICAgICJkZWJ1ZyI6ICIyLjYu
OCIsCisgICAgICAgICJnbG9iYWxzIjogIjkuMTguMCIsCisgICAgICAgICJpbnZhcmlhbnQiOiAi
Mi4yLjIiLAorICAgICAgICAibG9kYXNoIjogIjQuMTcuNCIKKyAgICAgIH0KKyAgICB9LAorICAg
ICJiYWJlbC10eXBlcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjYuMCIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtdHlwZXMvLS9iYWJlbC10
eXBlcy02LjI2LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1vN0J6K1VxMG5yYjZW
YzFsSW5velE0QmpKSmM9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAorICAgICAgICAiZXN1dGlscyI6
ICIyLjAuMiIsCisgICAgICAgICJsb2Rhc2giOiAiNC4xNy40IiwKKyAgICAgICAgInRvLWZhc3Qt
cHJvcGVydGllcyI6ICIxLjAuMyIKKyAgICAgIH0KKyAgICB9LAorICAgICJiYWJ5bG9uIjogewor
ICAgICAgInZlcnNpb24iOiAiNi4xOC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9iYWJ5bG9uLy0vYmFieWxvbi02LjE4LjAudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhNTEyLXEvVUVqZkdKMkNtM29LVjcxREp6OWQyNVRQbnE1cmhCVkwyUTRm
QTV3Y0MzamNyZG43K1Nzc0V5YkZJeHdBdnZQK1lDc0NZTkt1Z2hvRjMzR3hneWNRPT0iLAorICAg
ICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJiYWxhbmNlZC1tYXRjaCI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9iYWxhbmNlZC1tYXRjaC8tL2JhbGFuY2VkLW1hdGNoLTEuMC4wLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtaWJUUm1hc3I3a25lRms2Z0s0bk9SaTF4dDJjPSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImJhc2U2NC1qcyI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjEuMi4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9iYXNlNjQtanMvLS9iYXNlNjQtanMtMS4yLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhNTEyLWR3VlVWSVhzQlpYd1R1d25YSTlSSzhzQm1ncTA5TkRIenlSOVNBcGg5ZXFrNzZnS0sy
SlNRbVpBUkMyelJDODFKQzJRVHR4RDBBUlU1cVRTMjVnSUd3PT0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJiYXRjaCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNi4xIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYXRjaC8tL2JhdGNo
LTAuNi4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtM0RReFQwNW5reGdKUDhkZ0p5
VWwrVXZ5WEJZPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImJjcnlwdC1wYmtk
ZiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iY3J5cHQtcGJrZGYvLS9iY3J5cHQtcGJrZGYtMS4wLjEu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ZN3hkeTJFekc1SzhCZjFTaVZQRE5HS2di
NDA9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInR3ZWV0bmFjbCI6ICIwLjE0LjUiCisgICAgICB9Cisg
ICAgfSwKKyAgICAiYmlnLmpzIjogeworICAgICAgInZlcnNpb24iOiAiMy4xLjMiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JpZy5qcy8tL2JpZy5qcy0z
LjEuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVRLMmlHVFpTNnp5cDdJNVZ5UUZX
YWNtQWFYZz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJiaW5hcnktZXh0ZW5z
aW9ucyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMTAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmluYXJ5LWV4dGVuc2lvbnMvLS9iaW5hcnktZXh0
ZW5zaW9ucy0xLjEwLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1tdXVhYkY2SVk0
cXRGeDRXZjFrQXErSklOZEE9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYmx1
ZWJpcmQiOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjUuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmx1ZWJpcmQvLS9ibHVlYmlyZC0zLjUuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLWVSUWcxL1ZSN3FLSmRGT29wM1pUK1dZRzFudz0i
LAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJibi5qcyI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjQuMTEuOCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvYm4uanMvLS9ibi5qcy00LjExLjgudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
NTEyLUl0ZllmUExrV0hVamNrUUNrOHhDK0x3eGdLOE5ZY1h5d0dpZ0pnU3dPUDhZMml5V1Q0ZjJ2
c1pub09YVFRibytvNXlYbUlVSjRnbjU1MzhTTzVTM2dBPT0iLAorICAgICAgImRldiI6IHRydWUK
KyAgICB9LAorICAgICJib25qb3VyIjogeworICAgICAgInZlcnNpb24iOiAiMy41LjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JvbmpvdXIvLS9ib25q
b3VyLTMuNS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtam9rS0dEMk82YUk1T3po
RXhwR2tLODk3eWZVPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgImFycmF5LWZsYXR0ZW4iOiAiMi4xLjEiLAorICAgICAgICAiZGVlcC1lcXVhbCI6
ICIxLjAuMSIsCisgICAgICAgICJkbnMtZXF1YWwiOiAiMS4wLjAiLAorICAgICAgICAiZG5zLXR4
dCI6ICIyLjAuMiIsCisgICAgICAgICJtdWx0aWNhc3QtZG5zIjogIjYuMS4xIiwKKyAgICAgICAg
Im11bHRpY2FzdC1kbnMtc2VydmljZS10eXBlcyI6ICIxLjEuMCIKKyAgICAgIH0KKyAgICB9LAor
ICAgICJib29sYmFzZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ib29sYmFzZS8tL2Jvb2xiYXNlLTEu
MC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYU4vMSsrWU1VZXMzY2w2cDQrMHhE
Y3dlZDI0PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImJvb20iOiB7CisgICAg
ICAidmVyc2lvbiI6ICIyLjEwLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2Jvb20vLS9ib29tLTIuMTAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLU9jaVJqTy8xZVorRCtVa3FoSTlpV3QwTWRtOD0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJob2VrIjogIjIuMTYuMyIKKyAgICAgIH0K
KyAgICB9LAorICAgICJib3hlbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNi4wIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ib3hlbi8tL2JveGVuLTAu
Ni4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZzJUVUpJckRUL0R2R3k4cjlKcHNZ
TTROZ2JZPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgImFuc2ktYWxpZ24iOiAiMS4xLjAiLAorICAgICAgICAiY2FtZWxjYXNlIjogIjIuMS4xIiwK
KyAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAgImNsaS1ib3hlcyI6ICIxLjAuMCIs
CisgICAgICAgICJmaWxsZWQtYXJyYXkiOiAiMS4xLjAiLAorICAgICAgICAib2JqZWN0LWFzc2ln
biI6ICI0LjEuMSIsCisgICAgICAgICJyZXBlYXRpbmciOiAiMi4wLjEiLAorICAgICAgICAic3Ry
aW5nLXdpZHRoIjogIjEuMC4yIiwKKyAgICAgICAgIndpZGVzdC1saW5lIjogIjEuMC4wIgorICAg
ICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJjYW1lbGNhc2UiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMi4xLjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jYW1lbGNhc2UvLS9jYW1lbGNhc2UtMi4xLjEudGd6IiwK
KyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZkIwVzFubWh1K1djb0N5czdQc0JIaUFmV2g4
PSIsCiAgICAgICAgICAgImRldiI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgImNhc2VsZXNz
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMTEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6IHRy
dWUKLSAgICAgICAgfSwKLSAgICAgICAgImNoYWxrIjogewotICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMS4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJpcy1mdWxsd2lk
dGgtY29kZS1wb2ludCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLWZ1bGx3aWR0aC1j
b2RlLXBvaW50Ly0vaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQtMS4wLjAudGd6IiwKKyAgICAgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtNzU0eE9HOERHbjhOWkRyNEw5NVF4RmZ2QU1zPSIsCiAgICAg
ICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKICAgICAgICAg
ICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYW5zaS1zdHlsZXMiOiAiMi4yLjEiLAotICAg
ICAgICAgICAgImVzY2FwZS1zdHJpbmctcmVnZXhwIjogIjEuMC41IiwKLSAgICAgICAgICAgICJo
YXMtYW5zaSI6ICIyLjAuMCIsCi0gICAgICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIsCi0g
ICAgICAgICAgICAic3VwcG9ydHMtY29sb3IiOiAiMi4wLjAiCisgICAgICAgICAgICAibnVtYmVy
LWlzLW5hbiI6ICIxLjAuMSIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJjb2Rl
LXBvaW50LWF0IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICJzdHJpbmctd2lkdGgiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9zdHJpbmctd2lkdGgvLS9zdHJpbmctd2lkdGgtMS4wLjIudGd6IiwKKyAgICAg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtRVl2Zlc0emNVYUtuNXcwaEhnZmlzTG14QjlNPSIsCiAg
ICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAg
ICAgIm51bWJlci1pcy1uYW4iOiAiMS4wLjAiCisgICAgICAgICAgICAiY29kZS1wb2ludC1hdCI6
ICIxLjEuMCIsCisgICAgICAgICAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiAiMS4wLjAi
LAorICAgICAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiCiAgICAgICAgICAgfQotICAgICAg
ICB9LAotICAgICAgICAiY29tYmluZWQtc3RyZWFtIjogewotICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMC41IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRy
dWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImRlbGF5ZWQtc3RyZWFt
IjogIjEuMC4wIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImNvbW1hbmRlciI6
IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjkuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6IHRydWUs
Ci0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImdyYWNlZnVsLXJlYWRsaW5r
IjogIjEuMC4xIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImNvbmNhdC1tYXAi
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4wLjEiLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiY29uc29s
ZS1jb250cm9sLXN0cmluZ3MiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9
LAotICAgICAgICAiY29yZS11dGlsLWlzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4y
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9
LAorICAgICJicmFjZS1leHBhbnNpb24iOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuOCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYnJhY2UtZXhwYW5z
aW9uLy0vYnJhY2UtZXhwYW5zaW9uLTEuMS44LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtd0hzaEhIeVZMc0g0NzlVYWQrOE5IVG1Rb3BJPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJhbGFuY2VkLW1hdGNoIjogIjEuMC4wIiwKKyAg
ICAgICAgImNvbmNhdC1tYXAiOiAiMC4wLjEiCisgICAgICB9CisgICAgfSwKKyAgICAiYnJhY2Vz
IjogeworICAgICAgInZlcnNpb24iOiAiMS44LjUiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2JyYWNlcy8tL2JyYWNlcy0xLjguNS50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLXVuZVdMaExmK1duV3QyY1I2UlMzTjRWNzlxYz0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJleHBhbmQtcmFuZ2Ui
OiAiMS44LjIiLAorICAgICAgICAicHJlc2VydmUiOiAiMC4yLjAiLAorICAgICAgICAicmVwZWF0
LWVsZW1lbnQiOiAiMS4xLjIiCisgICAgICB9CisgICAgfSwKKyAgICAiYnJvcmFuZCI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9icm9yYW5kLy0vYnJvcmFuZC0xLjEuMC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLUVzSmUva0NrWGp3eVByaG5XZ29NNVhzaU54OD0iLAorICAgICAgImRldiI6
IHRydWUKKyAgICB9LAorICAgICJicm93c2VyLXJlc29sdmUiOiB7CisgICAgICAidmVyc2lvbiI6
ICIxLjExLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2Jyb3dzZXItcmVzb2x2ZS8tL2Jyb3dzZXItcmVzb2x2ZS0xLjExLjIudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1qL0NiQ2l4Q0Z4aWhCUndtQ3pMa2owUXBPTTQ9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAicmVzb2x2ZSI6ICIxLjEu
NyIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAicmVzb2x2ZSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuNyIsCisgICAgICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Jlc29sdmUvLS9yZXNvbHZlLTEuMS43LnRneiIs
CisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLUlERVUyQ3JTeGUyZWpnUVJzNU1vZGVpSjZY
cz0iLAogICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJjcnlwdGls
ZXMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4wLjUiLAotICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJib29tIjogIjIuMTAu
MSIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJkYXNoZGFzaCI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjE0LjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAotICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6ICIxLjAuMCIKLSAg
ICAgICAgICB9LAotICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAgICAgICAgICAiYXNz
ZXJ0LXBsdXMiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAg
ICAgICAgfSwKLSAgICAgICAgImRlYnVnIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4w
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0g
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICAgICAibXMiOiAiMC43LjEiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAi
ZGVlcC1leHRlbmQiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC40LjEiLAotICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJkZWxheWVkLXN0cmVhbSI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAiYnJvd3NlcmlmeS1hZXMiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIxLjAuOCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvYnJvd3NlcmlmeS1hZXMvLS9icm93c2VyaWZ5LWFlcy0xLjAuOC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGE1MTItV1lDTU9UL1B0R1RscE9LRmh0MFlKRlljUHk2cExD
Ujk4Q3RXZnpLMTN6b3luTGxCTXZBZEVNU1JHbWduSkN3Mk0yai81cXhCa2luWlFGb2JpZU04ZFE9
PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJ1
ZmZlci14b3IiOiAiMS4wLjMiLAorICAgICAgICAiY2lwaGVyLWJhc2UiOiAiMS4wLjQiLAorICAg
ICAgICAiY3JlYXRlLWhhc2giOiAiMS4xLjMiLAorICAgICAgICAiZXZwX2J5dGVzdG9rZXkiOiAi
MS4wLjMiLAorICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiLAorICAgICAgICAic2FmZS1idWZm
ZXIiOiAiNS4xLjEiCisgICAgICB9CisgICAgfSwKKyAgICAiYnJvd3NlcmlmeS1jaXBoZXIiOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvYnJvd3NlcmlmeS1jaXBoZXIvLS9icm93c2VyaWZ5LWNpcGhlci0x
LjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLW1ZZ2tTSFMvWHRUaWphbFdadHpX
YXNqOE5qbz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJicm93c2VyaWZ5LWFlcyI6ICIxLjAuOCIsCisgICAgICAgICJicm93c2VyaWZ5LWRlcyI6
ICIxLjAuMCIsCisgICAgICAgICJldnBfYnl0ZXN0b2tleSI6ICIxLjAuMyIKKyAgICAgIH0KKyAg
ICB9LAorICAgICJicm93c2VyaWZ5LWRlcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9icm93c2VyaWZ5
LWRlcy8tL2Jyb3dzZXJpZnktZGVzLTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtMnFKM2NYUndraTdTL2hoWlFSaWhkVU9YSWQwPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImNpcGhlci1iYXNlIjogIjEuMC40IiwKKyAgICAg
ICAgImRlcy5qcyI6ICIxLjAuMCIsCisgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIKKyAgICAg
IH0KKyAgICB9LAorICAgICJicm93c2VyaWZ5LXJzYSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQu
MC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9icm93
c2VyaWZ5LXJzYS8tL2Jyb3dzZXJpZnktcnNhLTQuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtSWVDcit2YnlBcHp5K3ZzVE5XZW5BZFFUVlNRPSIsCisgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJuLmpzIjogIjQuMTEuOCIsCisgICAg
ICAgICJyYW5kb21ieXRlcyI6ICIyLjAuNSIKKyAgICAgIH0KKyAgICB9LAorICAgICJicm93c2Vy
aWZ5LXNpZ24iOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjAuNCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYnJvd3NlcmlmeS1zaWduLy0vYnJvd3Nlcmlm
eS1zaWduLTQuMC40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcWs2MmpsMTdaWXVx
YS9hbGZtTU12WHFUMHBnPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgImJuLmpzIjogIjQuMTEuOCIsCisgICAgICAgICJicm93c2VyaWZ5LXJzYSI6
ICI0LjAuMSIsCisgICAgICAgICJjcmVhdGUtaGFzaCI6ICIxLjEuMyIsCisgICAgICAgICJjcmVh
dGUtaG1hYyI6ICIxLjEuNiIsCisgICAgICAgICJlbGxpcHRpYyI6ICI2LjQuMCIsCisgICAgICAg
ICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICJwYXJzZS1hc24xIjogIjUuMS4wIgorICAg
ICAgfQorICAgIH0sCisgICAgImJyb3dzZXJpZnktemxpYiI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjAuMS40IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9i
cm93c2VyaWZ5LXpsaWIvLS9icm93c2VyaWZ5LXpsaWItMC4xLjQudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS11elg0cFJuMkFPRDZhNFNGSkJ5WG5RRkIreTA9IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAicGFrbyI6ICIwLjIuOSIKKyAg
ICAgIH0KKyAgICB9LAorICAgICJicm93c2Vyc2xpc3QiOiB7CisgICAgICAidmVyc2lvbiI6ICIy
LjQuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYnJv
d3NlcnNsaXN0Ly0vYnJvd3NlcnNsaXN0LTIuNC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTUxMi1hTTJHdDR4OWJWbENVdGVBREJTNkpQMEYrMnRNV0tNMWpRelV1bFZST3RkRldGSWNJ
VnZZNzZBSmJyN0dEcXkwZURobitQY25wenppdkd4WTRxaWFLUT09IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY2FuaXVzZS1saXRlIjogIjEuMC4z
MDAwMDcyNiIsCisgICAgICAgICJlbGVjdHJvbi10by1jaHJvbWl1bSI6ICIxLjMuMjEiCisgICAg
ICB9CisgICAgfSwKKyAgICAiYnNlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ic2VyLy0vYnNlci0y
LjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLW1zZU5QdFhaRllCUDJIckxGWXZI
bHhSNkZ4az0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJub2RlLWludDY0IjogIjAuNC4wIgorICAgICAgfQorICAgIH0sCisgICAgImJ1ZmZlciI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuOS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9idWZmZXIvLS9idWZmZXItNC45LjEudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1iUnUyQWJCNlR2enRsd2xCTWdrd0o4bGJ3cGc9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFzZTY0LWpzIjogIjEu
Mi4xIiwKKyAgICAgICAgImllZWU3NTQiOiAiMS4xLjgiLAorICAgICAgICAiaXNhcnJheSI6ICIx
LjAuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJidWZmZXItaW5kZXhvZiI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjEuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9idWZmZXItaW5kZXhvZi8tL2J1ZmZlci1pbmRleG9mLTEuMS4xLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTUxMi00L3JPRWc4NmppdnRQVGVPVVVUNjFqSk8xWWExVHJSL09r
cUNTWkR5cTg0V0poM0x1dWlwaEJZSk4rZm01eHVmSWs0WEFGY0V3dGUvOFd6QzhJZi8xZz09IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYnVmZmVyLXhvciI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjEuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9idWZmZXIteG9yLy0vYnVmZmVyLXhvci0xLjAuMy50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLUp1WWUwVUl2dHczVUxtNDJjcDdWSFlWZjZOaz0iLAorICAgICAgImRldiI6
IHRydWUKKyAgICB9LAorICAgICJidWlsdGluLW1vZHVsZXMiOiB7CisgICAgICAidmVyc2lvbiI6
ICIxLjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
YnVpbHRpbi1tb2R1bGVzLy0vYnVpbHRpbi1tb2R1bGVzLTEuMS4xLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtSnc4SGJGcHl3QzliWmFSOStVeGY0Nko0aVM4PSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgImJ1aWx0aW4tc3RhdHVzLWNvZGVzIjogeworICAgICAgInZl
cnNpb24iOiAiMy4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2J1aWx0aW4tc3RhdHVzLWNvZGVzLy0vYnVpbHRpbi1zdGF0dXMtY29kZXMtMy4wLjAu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1oWmdvZU9JYm1PSEdaQ1hnUFFGMGVJOVdu
dWc9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYnl0ZXMiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIyLjUuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvYnl0ZXMvLS9ieXRlcy0yLjUuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLVRKUWo2aTBsTENjTVFiSzk3Ky81dTJ0aXdHbz0iLAorICAgICAgImRldiI6IHRydWUKKyAg
ICB9LAorICAgICJjYWxsZXItcGF0aCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4wIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jYWxsZXItcGF0aC8t
L2NhbGxlci1wYXRoLTAuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbEFoZTlq
V0I3TlBhcVNSRXFQNlU2Q1YzZFI4PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgImNhbGxzaXRlcyI6ICIwLjIuMCIKKyAgICAgIH0KKyAgICB9LAor
ICAgICJjYWxsc2l0ZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2FsbHNpdGVzLy0vY2FsbHNpdGVz
LTAuMi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcjZ1V0ppa1FwL004R2FWM1dD
WEduelRqVU1vPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImNhbWVsLWNhc2Ui
OiB7CisgICAgICAidmVyc2lvbiI6ICIzLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2FtZWwtY2FzZS8tL2NhbWVsLWNhc2UtMy4wLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS15ancyaUtUcHp6cE0ybmQ5eE55OGNUSkp6M009IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibm8tY2Fz
ZSI6ICIyLjMuMSIsCisgICAgICAgICJ1cHBlci1jYXNlIjogIjEuMS4zIgorICAgICAgfQorICAg
IH0sCisgICAgImNhbWVsY2FzZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMi4xIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jYW1lbGNhc2UvLS9jYW1l
bGNhc2UtMS4yLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1tN1V3VFM0TFZtbUxM
SFdMQ0tQcXFkcWxpams9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiY2FtZWxj
YXNlLWtleXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2FtZWxjYXNlLWtleXMvLS9jYW1lbGNhc2Ut
a2V5cy0yLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLU1JdnVyLzN5Z1JrRkh2
b2RreUlUeVJ1UGt1Yz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICJjYW1lbGNhc2UiOiAiMi4xLjEiLAorICAgICAgICAibWFwLW9iaiI6ICIxLjAu
MSIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiY2FtZWxjYXNl
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4xIiwKKyAgICAgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2FtZWxjYXNlLy0vY2FtZWxjYXNlLTIuMS4x
LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLWZCMFcxbm1odStXY29DeXM3UHNC
SGlBZldoOD0iLAogICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJk
ZWxlZ2F0ZXMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJlY2MtanNibiI6IHsKLSAgICAgICAgICAi
dmVyc2lvbiI6ICIwLjEuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICB9
CisgICAgICB9CisgICAgfSwKKyAgICAiY2FuaXVzZS1hcGkiOiB7CisgICAgICAidmVyc2lvbiI6
ICIxLjYuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
Y2FuaXVzZS1hcGkvLS9jYW5pdXNlLWFwaS0xLjYuMS50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLXRUVG54elRFK0I3RisraXNvcTBrTlV1V0xHdz0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJicm93c2Vyc2xpc3QiOiAiMS43LjciLAor
ICAgICAgICAiY2FuaXVzZS1kYiI6ICIxLjAuMzAwMDA3MjYiLAorICAgICAgICAibG9kYXNoLm1l
bW9pemUiOiAiNC4xLjIiLAorICAgICAgICAibG9kYXNoLnVuaXEiOiAiNC41LjAiCisgICAgICB9
LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImJyb3dzZXJzbGlzdCI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjcuNyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2Jyb3dzZXJzbGlzdC8tL2Jyb3dzZXJzbGlzdC0xLjcuNy50
Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1DOWRuQkNXTDZDbXlPWXUxRGt0aTBh
Rm1zTGs9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJqc2JuIjogIjAuMS4w
IgorICAgICAgICAgICAgImNhbml1c2UtZGIiOiAiMS4wLjMwMDAwNzI2IiwKKyAgICAgICAgICAg
ICJlbGVjdHJvbi10by1jaHJvbWl1bSI6ICIxLjMuMjEiCiAgICAgICAgICAgfQotICAgICAgICB9
LAotICAgICAgICAiZXNjYXBlLXN0cmluZy1yZWdleHAiOiB7Ci0gICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjUiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJl
eHRlbmQiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMy4wLjAiLAotICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwi
OiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJleHRzcHJpbnRmIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC4yIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgIH0K
KyAgICAgIH0KKyAgICB9LAorICAgICJjYW5pdXNlLWRiIjogeworICAgICAgInZlcnNpb24iOiAi
MS4wLjMwMDAwNzI2IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9jYW5pdXNlLWRiLy0vY2FuaXVzZS1kYi0xLjAuMzAwMDA3MjYudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1tN2RDK05BbXBpMzRjN3dEd0doRDBpVmJZTmM9IiwKKyAgICAgICJk
ZXYiOiB0cnVlCisgICAgfSwKKyAgICAiY2FuaXVzZS1saXRlIjogeworICAgICAgInZlcnNpb24i
OiAiMS4wLjMwMDAwNzI2IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9jYW5pdXNlLWxpdGUvLS9jYW5pdXNlLWxpdGUtMS4wLjMwMDAwNzI2LnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtbG1wMVA2RUhvSjFCTWMrTFBXRm5JNkJzejM0PSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImNhcHR1cmUtc3RhY2stdHJhY2UiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvY2FwdHVyZS1zdGFjay10cmFjZS8tL2NhcHR1cmUtc3RhY2stdHJhY2Ut
MS4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1TbStnYzVuQ2E3cEg4TEpKYTAw
UHRBakZWUTA9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiY2FzZS1zZW5zaXRp
dmUtcGF0aHMtd2VicGFjay1wbHVnaW4iOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMSIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2FzZS1zZW5zaXRp
dmUtcGF0aHMtd2VicGFjay1wbHVnaW4vLS9jYXNlLXNlbnNpdGl2ZS1wYXRocy13ZWJwYWNrLXBs
dWdpbi0yLjEuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVBTbk8yTUh4Skw5dlU0
UnZzL1dKUnpIOXlRaz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJjYXNlbGVz
cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMTIuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2FzZWxlc3MvLS9jYXNlbGVzcy0wLjEyLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1HMmdjSWYrRUF6eUNaVU1KQm9sQ0RSaHhVZHc9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiY2VudGVyLWFsaWduIjogeworICAgICAg
InZlcnNpb24iOiAiMC4xLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2NlbnRlci1hbGlnbi8tL2NlbnRlci1hbGlnbi0wLjEuMy50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLXFnMHlZcHR1NlhJZ0JCSEwxRVlja0h2Q3Q2MD0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJhbGlnbi10ZXh0Ijog
IjAuMS40IiwKKyAgICAgICAgImxhenktY2FjaGUiOiAiMS4wLjQiCisgICAgICB9CisgICAgfSwK
KyAgICAiY2hhbGsiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2hhbGsvLS9jaGFsay0xLjEuMy50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLXFCRmNWZVNuQXY1TkZRcTlPSEtDS240Si9KZz0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJhbnNp
LXN0eWxlcyI6ICIyLjIuMSIsCisgICAgICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6ICIxLjAu
NSIsCisgICAgICAgICJoYXMtYW5zaSI6ICIyLjAuMCIsCisgICAgICAgICJzdHJpcC1hbnNpIjog
IjMuMC4xIiwKKyAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjIuMC4wIgorICAgICAgfSwKKyAg
ICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJhbnNpLXN0eWxlcyI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjIuMSIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2Fuc2ktc3R5bGVzLy0vYW5zaS1zdHlsZXMtMi4yLjEudGd6IiwKKyAg
ICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdERMZE0xaTJOTTkxNGVSbVEyZ2tCVFBCM2I0PSIs
CiAgICAgICAgICAgImRldiI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgImZvcmV2ZXItYWdl
bnQiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC42LjEiLAotICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJmb3JtLWRhdGEiOiB7Ci0gICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjAtcmM0IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKLSAgICAgICAgICAicmVx
dWlyZXMiOiB7Ci0gICAgICAgICAgICAiYXN5bmMiOiAiMS41LjIiLAotICAgICAgICAgICAgImNv
bWJpbmVkLXN0cmVhbSI6ICIxLjAuNSIsCi0gICAgICAgICAgICAibWltZS10eXBlcyI6ICIyLjEu
MTEiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiZnMucmVhbHBhdGgiOiB7Ci0g
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4w
IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3Vw
cG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci0yLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1VMTBFWE9hMk5qK2tBUmNJUmltWlhwM3pKTWM9IiwKICAgICAgICAgICAi
ZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiZnN0cmVhbSI6IHsKLSAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMTAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiZ3Jh
Y2VmdWwtZnMiOiAiNC4xLjQiLAotICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4xIiwKLSAg
ICAgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAotICAgICAgICAgICAgInJpbXJhZiI6ICIyLjUu
MyIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJmc3RyZWFtLWlnbm9yZSI6IHsK
LSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCi0g
ICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImZzdHJlYW0iOiAiMS4wLjEwIiwK
LSAgICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMSIsCi0gICAgICAgICAgICAibWluaW1hdGNo
IjogIjMuMC4yIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImdhdWdlIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNi4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKLSAg
ICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYXByb2JhIjogIjEuMC40IiwKLSAg
ICAgICAgICAgICJjb25zb2xlLWNvbnRyb2wtc3RyaW5ncyI6ICIxLjEuMCIsCi0gICAgICAgICAg
ICAiaGFzLWNvbG9yIjogIjAuMS43IiwKLSAgICAgICAgICAgICJoYXMtdW5pY29kZSI6ICIyLjAu
MSIsCi0gICAgICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMCIsCi0gICAgICAgICAgICAi
c2lnbmFsLWV4aXQiOiAiMy4wLjAiLAotICAgICAgICAgICAgInN0cmluZy13aWR0aCI6ICIxLjAu
MSIsCi0gICAgICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIsCi0gICAgICAgICAgICAid2lk
ZS1hbGlnbiI6ICIxLjEuMCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJnZW5l
cmF0ZS1mdW5jdGlvbiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCi0gICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJv
cHRpb25hbCI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImdlbmVyYXRlLW9iamVjdC1wcm9w
ZXJ0eSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6
IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImlzLXByb3BlcnR5
IjogIjEuMC4yIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImdldHBhc3MiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4xLjYiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAot
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6ICIxLjAu
MCIKLSAgICAgICAgICB9LAotICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAgICAgICAg
ICAiYXNzZXJ0LXBsdXMiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKLSAg
ICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwK
LSAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQotICAgICAgICAgICAgfQotICAgICAgICAg
IH0KLSAgICAgICAgfSwKLSAgICAgICAgImdsb2IiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAi
Ny4wLjUiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1
ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiZnMucmVhbHBhdGgiOiAi
MS4wLjAiLAotICAgICAgICAgICAgImluZmxpZ2h0IjogIjEuMC41IiwKLSAgICAgICAgICAgICJp
bmhlcml0cyI6ICIyLjAuMSIsCi0gICAgICAgICAgICAibWluaW1hdGNoIjogIjMuMC4yIiwKLSAg
ICAgICAgICAgICJvbmNlIjogIjEuMy4zIiwKLSAgICAgICAgICAgICJwYXRoLWlzLWFic29sdXRl
IjogIjEuMC4wIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImdyYWNlZnVsLWZz
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMS40IiwKLSAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImdyYWNl
ZnVsLXJlYWRsaW5rIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKLSAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiaGFyLXZhbGlkYXRvciI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICIyLjAuNiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAot
ICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCi0gICAg
ICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKLSAgICAg
ICAgICAgICJjb21tYW5kZXIiOiAiMi45LjAiLAotICAgICAgICAgICAgImlzLW15LWpzb24tdmFs
aWQiOiAiMi4xMy4xIiwKLSAgICAgICAgICAgICJwaW5raWUtcHJvbWlzZSI6ICIyLjAuMSIKLSAg
ICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJoYXMtYW5zaSI6IHsKLSAgICAgICAgICAi
dmVyc2lvbiI6ICIyLjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAg
ICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCi0gICAgICAgICAgInJl
cXVpcmVzIjogewotICAgICAgICAgICAgImFuc2ktcmVnZXgiOiAiMi4wLjAiCi0gICAgICAgICAg
fQotICAgICAgICB9LAotICAgICAgICAiaGFzLWNvbG9yIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMS43IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAi
aGFzLXVuaWNvZGUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAotICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJoYXdrIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjMuMS4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKLSAgICAgICAgICAicmVx
dWlyZXMiOiB7Ci0gICAgICAgICAgICAiYm9vbSI6ICIyLjEwLjEiLAotICAgICAgICAgICAgImNy
eXB0aWxlcyI6ICIyLjAuNSIsCi0gICAgICAgICAgICAiaG9layI6ICIyLjE2LjMiLAotICAgICAg
ICAgICAgInNudHAiOiAiMS4wLjkiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAi
aG9layI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjE2LjMiLAotICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAi
aHR0cC1zaWduYXR1cmUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAotICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAi
b3B0aW9uYWwiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJh
c3NlcnQtcGx1cyI6ICIwLjIuMCIsCi0gICAgICAgICAgICAianNwcmltIjogIjEuMy4wIiwKLSAg
ICAgICAgICAgICJzc2hwayI6ICIxLjguMyIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAg
ICAgICJpbmZsaWdodCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCi0gICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJvbmNlIjogIjEuMy4zIiwKLSAgICAgICAgICAgICJ3
cmFwcHkiOiAiMS4wLjIiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiaW5oZXJp
dHMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAotICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiaW5p
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy40IiwKLSAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQotICAgICAgICB9LAotICAgICAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiB7Ci0gICAg
ICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAg
ICAibnVtYmVyLWlzLW5hbiI6ICIxLjAuMCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAg
ICAgICJpcy1teS1qc29uLXZhbGlkIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMTMuMSIs
Ci0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAg
ICAgICAgICJvcHRpb25hbCI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAg
ICAgICAgImdlbmVyYXRlLWZ1bmN0aW9uIjogIjIuMC4wIiwKLSAgICAgICAgICAgICJnZW5lcmF0
ZS1vYmplY3QtcHJvcGVydHkiOiAiMS4yLjAiLAotICAgICAgICAgICAgImpzb25wb2ludGVyIjog
IjIuMC4wIiwKLSAgICAgICAgICAgICJ4dGVuZCI6ICI0LjAuMSIKLSAgICAgICAgICB9Ci0gICAg
ICAgIH0sCi0gICAgICAgICJpcy1wcm9wZXJ0eSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIx
LjAuMiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVl
LAotICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImlzLXR5
cGVkYXJyYXkiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJpc2FycmF5IjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImlzc3RyZWFtIjogewotICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuMS4yIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQotICAgICAgICB9LAot
ICAgICAgICAiam9kaWQyNTUxOSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCi0g
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAg
ICAgICJvcHRpb25hbCI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAg
ICAgImpzYm4iOiAiMC4xLjAiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAianNi
biI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6IHRy
dWUKLSAgICAgICAgfSwKLSAgICAgICAgImpzb24tc2NoZW1hIjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuMi4yIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRl
diI6IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQotICAgICAgICB9LAotICAgICAg
ICAianNvbi1zdHJpbmdpZnktc2FmZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI1LjAuMSIs
Ci0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAg
ICAgICAgICJvcHRpb25hbCI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImpzb25wb2ludGVy
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQotICAgICAgICB9LAotICAgICAgICAianNwcmltIjogewotICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMy4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRy
dWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7
Ci0gICAgICAgICAgICAiZXh0c3ByaW50ZiI6ICIxLjAuMiIsCi0gICAgICAgICAgICAianNvbi1z
Y2hlbWEiOiAiMC4yLjIiLAotICAgICAgICAgICAgInZlcnJvciI6ICIxLjMuNiIKLSAgICAgICAg
ICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJtaW1lLWRiIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMjMuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYi
OiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJtaW1lLXR5cGVzIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjIuMS4xMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAg
ICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJtaW1l
LWRiIjogIjEuMjMuMCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJtaW5pbWF0
Y2giOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMy4wLjIiLAotICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7
Ci0gICAgICAgICAgICAiYnJhY2UtZXhwYW5zaW9uIjogIjEuMS41IgotICAgICAgICAgIH0KLSAg
ICAgICAgfSwKLSAgICAgICAgIm1pbmltaXN0IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
MC44IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUK
LSAgICAgICAgfSwKLSAgICAgICAgIm1rZGlycCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIw
LjUuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVl
LAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJtaW5pbWlzdCI6ICIwLjAu
OCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJtcyI6IHsKLSAgICAgICAgICAi
dmVyc2lvbiI6ICIwLjcuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAg
ICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKLSAgICAgICAgfSwKLSAg
ICAgICAgIm5vZGUtcHJlLWd5cCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuMjkiLAot
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICJta2RpcnAiOiAiMC41LjEiLAotICAgICAgICAgICAgIm5vcHQiOiAiMy4wLjYiLAotICAg
ICAgICAgICAgIm5wbWxvZyI6ICIzLjEuMiIsCi0gICAgICAgICAgICAicmMiOiAiMS4xLjYiLAot
ICAgICAgICAgICAgInJlcXVlc3QiOiAiMi43My4wIiwKLSAgICAgICAgICAgICJyaW1yYWYiOiAi
Mi41LjMiLAotICAgICAgICAgICAgInNlbXZlciI6ICI1LjIuMCIsCi0gICAgICAgICAgICAidGFy
IjogIjIuMi4xIiwKLSAgICAgICAgICAgICJ0YXItcGFjayI6ICIzLjEuNCIKLSAgICAgICAgICB9
Ci0gICAgICAgIH0sCi0gICAgICAgICJub2RlLXV1aWQiOiB7Ci0gICAgICAgICAgInZlcnNpb24i
OiAiMS40LjciLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJu
b3B0IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC42IiwKLSAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjog
dHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYWJicmV2IjogIjEu
MC45IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgIm5wbWxvZyI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIzLjEuMiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAg
ICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCi0gICAgICAg
ICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImFyZS13ZS10aGVyZS15ZXQiOiAiMS4xLjIi
LAotICAgICAgICAgICAgImNvbnNvbGUtY29udHJvbC1zdHJpbmdzIjogIjEuMS4wIiwKLSAgICAg
ICAgICAgICJnYXVnZSI6ICIyLjYuMCIsCi0gICAgICAgICAgICAic2V0LWJsb2NraW5nIjogIjIu
MC4wIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgIm51bWJlci1pcy1uYW4iOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAib2F1dGgtc2ln
biI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjguMiIsCi0gICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6IHRy
dWUKLSAgICAgICAgfSwKLSAgICAgICAgIm9iamVjdC1hc3NpZ24iOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiNC4xLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgIH0sCi0gICAg
ICAgICJvbmNlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4zIiwKLSAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVp
cmVzIjogewotICAgICAgICAgICAgIndyYXBweSI6ICIxLjAuMiIKLSAgICAgICAgICB9Ci0gICAg
ICAgIH0sCi0gICAgICAgICJwYXRoLWlzLWFic29sdXRlIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInBpbmtpZSI6IHsKLSAgICAgICAgICAidmVyc2lv
biI6ICIyLjAuNCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYi
OiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAg
InBpbmtpZS1wcm9taXNlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKLSAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAg
Im9wdGlvbmFsIjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAi
cGlua2llIjogIjIuMC40IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInByb2Nl
c3MtbmV4dGljay1hcmdzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC43IiwKLSAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwK
LSAgICAgICAgInFzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMi4wIiwKLSAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAicmMiOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMS4xLjYiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAotICAgICAgICAgICJyZXF1
aXJlcyI6IHsKLSAgICAgICAgICAgICJkZWVwLWV4dGVuZCI6ICIwLjQuMSIsCi0gICAgICAgICAg
ICAiaW5pIjogIjEuMy40IiwKLSAgICAgICAgICAgICJtaW5pbWlzdCI6ICIxLjIuMCIsCi0gICAg
ICAgICAgICAic3RyaXAtanNvbi1jb21tZW50cyI6ICIxLjAuNCIKLSAgICAgICAgICB9LAotICAg
ICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAgICAgICAgICAibWluaW1pc3QiOiB7Ci0gICAg
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAg
InJlYWRhYmxlLXN0cmVhbSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuNCIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJidWZmZXItc2hpbXMiOiAiMS4wLjAiLAotICAg
ICAgICAgICAgImNvcmUtdXRpbC1pcyI6ICIxLjAuMiIsCi0gICAgICAgICAgICAiaW5oZXJpdHMi
OiAiMi4wLjEiLAotICAgICAgICAgICAgImlzYXJyYXkiOiAiMS4wLjAiLAotICAgICAgICAgICAg
InByb2Nlc3MtbmV4dGljay1hcmdzIjogIjEuMC43IiwKLSAgICAgICAgICAgICJzdHJpbmdfZGVj
b2RlciI6ICIwLjEwLjMxIiwKLSAgICAgICAgICAgICJ1dGlsLWRlcHJlY2F0ZSI6ICIxLjAuMiIK
LSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJyZXF1ZXN0IjogewotICAgICAgICAg
ICJ2ZXJzaW9uIjogIjIuNzMuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAg
ICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCi0gICAgICAgICAg
InJlcXVpcmVzIjogewotICAgICAgICAgICAgImF3cy1zaWduMiI6ICIwLjYuMCIsCi0gICAgICAg
ICAgICAiYXdzNCI6ICIxLjQuMSIsCi0gICAgICAgICAgICAiYmwiOiAiMS4xLjIiLAotICAgICAg
ICAgICAgImNhc2VsZXNzIjogIjAuMTEuMCIsCi0gICAgICAgICAgICAiY29tYmluZWQtc3RyZWFt
IjogIjEuMC41IiwKLSAgICAgICAgICAgICJleHRlbmQiOiAiMy4wLjAiLAotICAgICAgICAgICAg
ImZvcmV2ZXItYWdlbnQiOiAiMC42LjEiLAotICAgICAgICAgICAgImZvcm0tZGF0YSI6ICIxLjAu
MC1yYzQiLAotICAgICAgICAgICAgImhhci12YWxpZGF0b3IiOiAiMi4wLjYiLAotICAgICAgICAg
ICAgImhhd2siOiAiMy4xLjMiLAotICAgICAgICAgICAgImh0dHAtc2lnbmF0dXJlIjogIjEuMS4x
IiwKLSAgICAgICAgICAgICJpcy10eXBlZGFycmF5IjogIjEuMC4wIiwKLSAgICAgICAgICAgICJp
c3N0cmVhbSI6ICIwLjEuMiIsCi0gICAgICAgICAgICAianNvbi1zdHJpbmdpZnktc2FmZSI6ICI1
LjAuMSIsCi0gICAgICAgICAgICAibWltZS10eXBlcyI6ICIyLjEuMTEiLAotICAgICAgICAgICAg
Im5vZGUtdXVpZCI6ICIxLjQuNyIsCi0gICAgICAgICAgICAib2F1dGgtc2lnbiI6ICIwLjguMiIs
Ci0gICAgICAgICAgICAicXMiOiAiNi4yLjAiLAotICAgICAgICAgICAgInN0cmluZ3N0cmVhbSI6
ICIwLjAuNSIsCi0gICAgICAgICAgICAidG91Z2gtY29va2llIjogIjIuMi4yIiwKLSAgICAgICAg
ICAgICJ0dW5uZWwtYWdlbnQiOiAiMC40LjMiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAg
ICAgICAicmltcmFmIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNS4zIiwKLSAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJl
cXVpcmVzIjogewotICAgICAgICAgICAgImdsb2IiOiAiNy4wLjUiCi0gICAgICAgICAgfQotICAg
ICAgICB9LAotICAgICAgICAic2VtdmVyIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjUuMi4w
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0g
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAic2V0LWJsb2Nr
aW5nIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKLSAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjog
dHJ1ZQotICAgICAgICB9LAotICAgICAgICAic2lnbmFsLWV4aXQiOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMy4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgIH0sCi0gICAg
ICAgICJzbnRwIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC45IiwKLSAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiaG9layI6
ICIyLjE2LjMiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAic3NocGsiOiB7Ci0g
ICAgICAgICAgInZlcnNpb24iOiAiMS44LjMiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
LSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAotICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJhc24xIjogIjAuMi4zIiwKLSAgICAg
ICAgICAgICJhc3NlcnQtcGx1cyI6ICIxLjAuMCIsCi0gICAgICAgICAgICAiZGFzaGRhc2giOiAi
MS4xNC4wIiwKLSAgICAgICAgICAgICJlY2MtanNibiI6ICIwLjEuMSIsCi0gICAgICAgICAgICAi
Z2V0cGFzcyI6ICIwLjEuNiIsCi0gICAgICAgICAgICAiam9kaWQyNTUxOSI6ICIxLjAuMiIsCi0g
ICAgICAgICAgICAianNibiI6ICIwLjEuMCIsCi0gICAgICAgICAgICAidHdlZXRuYWNsIjogIjAu
MTMuMyIKLSAgICAgICAgICB9LAotICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAgICAg
ICAgICAiYXNzZXJ0LXBsdXMiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwK
LSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZSwKLSAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQotICAgICAgICAgICAgfQotICAgICAg
ICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInN0cmluZ19kZWNvZGVyIjogewotICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuMTAuMzEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAg
ICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAic3RyaW5nLXdpZHRoIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAg
ICAgICAgImNvZGUtcG9pbnQtYXQiOiAiMS4wLjAiLAotICAgICAgICAgICAgImlzLWZ1bGx3aWR0
aC1jb2RlLXBvaW50IjogIjEuMC4wIiwKLSAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4x
IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInN0cmluZ3N0cmVhbSI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjAuNSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAot
ICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKLSAgICAg
ICAgfSwKLSAgICAgICAgInN0cmlwLWFuc2kiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMy4w
LjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwK
LSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYW5zaS1yZWdleCI6ICIyLjAu
MCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJzdHJpcC1qc29uLWNvbW1lbnRz
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC40IiwKLSAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQotICAgICAgICB9LAotICAgICAgICAic3VwcG9ydHMtY29sb3IiOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMi4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgIH0sCi0gICAg
ICAgICJ0YXIiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAotICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWly
ZXMiOiB7Ci0gICAgICAgICAgICAiYmxvY2stc3RyZWFtIjogIjAuMC45IiwKLSAgICAgICAgICAg
ICJmc3RyZWFtIjogIjEuMC4xMCIsCi0gICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjEiCi0g
ICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAidGFyLXBhY2siOiB7Ci0gICAgICAgICAg
InZlcnNpb24iOiAiMy4xLjQiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAotICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJkZWJ1ZyI6ICIyLjIuMCIsCi0gICAgICAgICAgICAi
ZnN0cmVhbSI6ICIxLjAuMTAiLAotICAgICAgICAgICAgImZzdHJlYW0taWdub3JlIjogIjEuMC41
IiwKLSAgICAgICAgICAgICJvbmNlIjogIjEuMy4zIiwKLSAgICAgICAgICAgICJyZWFkYWJsZS1z
dHJlYW0iOiAiMi4xLjQiLAotICAgICAgICAgICAgInJpbXJhZiI6ICIyLjUuMyIsCi0gICAgICAg
ICAgICAidGFyIjogIjIuMi4xIiwKLSAgICAgICAgICAgICJ1aWQtbnVtYmVyIjogIjAuMC42Igot
ICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInRvdWdoLWNvb2tpZSI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIyLjIuMiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAg
ICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKLSAgICAgICAg
fSwKLSAgICAgICAgInR1bm5lbC1hZ2VudCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjQu
MyIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAot
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInR3ZWV0bmFj
bCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjEzLjMiLAotICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJ1aWQtbnVtYmVyIjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuMC42IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRl
diI6IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQotICAgICAgICB9LAotICAgICAg
ICAidXRpbC1kZXByZWNhdGUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9
LAotICAgICAgICAidmVycm9yIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy42IiwKLSAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAg
ICAiZXh0c3ByaW50ZiI6ICIxLjAuMiIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAg
ICJ3aWRlLWFsaWduIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKLSAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAic3Ry
aW5nLXdpZHRoIjogIjEuMC4xIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgIndy
YXBweSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJ4
dGVuZCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI0LjAuMSIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJvcHRpb25hbCI6
IHRydWUKLSAgICAgICAgfQotICAgICAgfQotICAgIH0sCi0gICAgImZ1bmN0aW9uLWJpbmQiOiB7
Ci0gICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvZnVuY3Rpb24tYmluZC8tL2Z1bmN0aW9uLWJpbmQtMS4xLjAudGd6
IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1GaGRuRk1nQmVZNU9qeXozOTFLVVo3dEtWM0U9
IiwKLSAgICAgICJkZXYiOiB0cnVlCi0gICAgfSwKLSAgICAiZnVuY3Rpb24ucHJvdG90eXBlLm5h
bWUiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZnVuY3Rpb24ucHJvdG90eXBlLm5hbWUvLS9mdW5jdGlv
bi5wcm90b3R5cGUubmFtZS0xLjAuMy50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGE1MTIt
NUVibHhaVWRpb1hpMkppTVo5RlVid1lqNDBlUTlNRkh5ekZMQlNQZGxSbDNTTzhsN1NMV3VBblEv
YXQvMVdpNGhqSndNRS9DNVdwRjJaZkFjOG5HTnc9PSIsCi0gICAgICAiZGV2IjogdHJ1ZSwKLSAg
ICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgImRlZmluZS1wcm9wZXJ0aWVzIjogIjEuMS4yIiwK
LSAgICAgICAgImZ1bmN0aW9uLWJpbmQiOiAiMS4xLjAiLAotICAgICAgICAiaXMtY2FsbGFibGUi
OiAiMS4xLjMiCi0gICAgICB9Ci0gICAgfSwKLSAgICAiaGFzIjogewotICAgICAgInZlcnNpb24i
OiAiMS4wLjEiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2hhcy8tL2hhcy0xLjAuMS50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLWhHRnpQMU9M
Q0RmSk5oNDVxYXVlbHdUY0x5Zz0iLAotICAgICAgImRldiI6IHRydWUsCi0gICAgICAicmVxdWly
ZXMiOiB7Ci0gICAgICAgICJmdW5jdGlvbi1iaW5kIjogIjEuMS4wIgotICAgICAgfQotICAgIH0s
Ci0gICAgImhvaXN0LW5vbi1yZWFjdC1zdGF0aWNzIjogewotICAgICAgInZlcnNpb24iOiAiMi4y
LjIiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hvaXN0
LW5vbi1yZWFjdC1zdGF0aWNzLy0vaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MtMi4yLjIudGd6IiwK
LSAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS13T3lscDlXaWpGcmFNUWZyZGpzQjJtdjZnZnM9Igot
ICAgIH0sCi0gICAgImh0bWxwYXJzZXIyIjogewotICAgICAgInZlcnNpb24iOiAiMy45LjIiLAot
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2h0bWxwYXJzZXIy
Ly0vaHRtbHBhcnNlcjItMy45LjIudGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1HOStI
ck1vUFA1NVQray9NNnc5TFRMc0Fzemc9IiwKLSAgICAgICJkZXYiOiB0cnVlLAotICAgICAgInJl
cXVpcmVzIjogewotICAgICAgICAiZG9tZWxlbWVudHR5cGUiOiAiMS4zLjAiLAotICAgICAgICAi
ZG9taGFuZGxlciI6ICIyLjQuMSIsCi0gICAgICAgICJkb211dGlscyI6ICIxLjUuMSIsCi0gICAg
ICAgICJlbnRpdGllcyI6ICIxLjEuMSIsCi0gICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCi0g
ICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiAiMi4zLjMiCi0gICAgICB9Ci0gICAgfSwKLSAgICAi
aWNvbnYtbGl0ZSI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjAuNC4xOCIsCi0gICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaWNvbnYtbGl0ZS8tL2ljb252LWxpdGUt
MC40LjE4LnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1zcjFaUXBoM1V3SFRSMFhm
dFNiSzg1T3ZCYnhlL2FiTEd6RW5QRU5DUXdtSGY3c2NrOE95dTRvYjNMZ0J4V1d4Um9NK1FzemVV
eWw3amJxYXB1MlRxQT09IgotICAgIH0sCi0gICAgImluaGVyaXRzIjogewotICAgICAgInZlcnNp
b24iOiAiMi4wLjMiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2luaGVyaXRzLy0vaW5oZXJpdHMtMi4wLjMudGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1ZendzZytQYVFxVUM5U1JtQWlTQTlDQ0NZZDQ9IiwKLSAgICAgICJkZXYiOiB0cnVlCi0g
ICAgfSwKLSAgICAiaW52YXJpYW50IjogewotICAgICAgInZlcnNpb24iOiAiMi4yLjIiLAotICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ludmFyaWFudC8tL2lu
dmFyaWFudC0yLjIuMi50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLW5oOVdyQXJOdHI4
d013YnpPTDQ3SUVybUEyQT0iLAotICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAibG9vc2Ut
ZW52aWZ5IjogIjEuMy4xIgotICAgICAgfQotICAgIH0sCi0gICAgImlzLWNhbGxhYmxlIjogewot
ICAgICAgInZlcnNpb24iOiAiMS4xLjMiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2lzLWNhbGxhYmxlLy0vaXMtY2FsbGFibGUtMS4xLjMudGd6IiwKLSAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1odXQxT1NnRjNjTTY5eHlTb083ZmRPNTJCTEk9IiwKLSAg
ICAgICJkZXYiOiB0cnVlCi0gICAgfSwKLSAgICAiaXMtZGF0ZS1vYmplY3QiOiB7Ci0gICAgICAi
dmVyc2lvbiI6ICIxLjAuMSIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvaXMtZGF0ZS1vYmplY3QvLS9pcy1kYXRlLW9iamVjdC0xLjAuMS50Z3oiLAotICAg
ICAgImludGVncml0eSI6ICJzaGExLW1xSU90cTdydi9kL3ZUUG5US0FiTTFnZE9oWT0iLAotICAg
ICAgImRldiI6IHRydWUKLSAgICB9LAotICAgICJpcy1yZWdleCI6IHsKLSAgICAgICJ2ZXJzaW9u
IjogIjEuMC40IiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9pcy1yZWdleC8tL2lzLXJlZ2V4LTEuMC40LnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNo
YTEtVlJkSW0xUndrYkNURGdsV1ZNN1NYdWwrbEpFPSIsCi0gICAgICAiZGV2IjogdHJ1ZSwKLSAg
ICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgImhhcyI6ICIxLjAuMSIKLSAgICAgIH0KLSAgICB9
LAotICAgICJpcy1zdHJlYW0iOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCi0gICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtc3RyZWFtLy0vaXMtc3Ry
ZWFtLTEuMS4wLnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEtRXRTajNVNW80TGVjNjQy
OGhCYzY2QTJSeWtRPSIKLSAgICB9LAotICAgICJpcy1zdWJzZXQiOiB7Ci0gICAgICAidmVyc2lv
biI6ICIwLjEuMSIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvaXMtc3Vic2V0Ly0vaXMtc3Vic2V0LTAuMS4xLnRneiIsCi0gICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtaWxrUmZaTXQ0ZDRBOGtYODNUbk9RL0hwT2FZPSIsCi0gICAgICAiZGV2IjogdHJ1ZQot
ICAgIH0sCi0gICAgImlzLXN5bWJvbCI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKLSAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1zeW1ib2wvLS9p
cy1zeW1ib2wtMS4wLjEudGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1QTVdmQUFKUmxM
YXJMampicm1hSkpXdG1CWEk9IiwKLSAgICAgICJkZXYiOiB0cnVlCi0gICAgfSwKLSAgICAiaXNh
cnJheSI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pc2FycmF5Ly0vaXNhcnJheS0xLjAuMC50Z3oiLAot
ICAgICAgImludGVncml0eSI6ICJzaGExLXU1TmRTRmdzdWhhTUJvTkpWNlZLUGdjU1R4RT0iLAot
ICAgICAgImRldiI6IHRydWUKLSAgICB9LAotICAgICJpc29tb3JwaGljLWZldGNoIjogewotICAg
ICAgInZlcnNpb24iOiAiMi4yLjEiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2lzb21vcnBoaWMtZmV0Y2gvLS9pc29tb3JwaGljLWZldGNoLTIuMi4xLnRn
eiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEtWVJyaHJQRlBYb0gzS1ZCMGNvR2Y2WE0xV0tr
PSIsCi0gICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICJub2RlLWZldGNoIjogIjEuNy4yIiwK
LSAgICAgICAgIndoYXR3Zy1mZXRjaCI6ICIyLjAuMyIKLSAgICAgIH0KLSAgICB9LAotICAgICJq
cy10b2tlbnMiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIzLjAuMiIsCi0gICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvanMtdG9rZW5zLy0vanMtdG9rZW5zLTMuMC4y
LnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEtbUdiZk9WRUNFdzQ0OS9tV3ZPdGxSRElK
d2xzPSIKLSAgICB9LAotICAgICJsb2Rhc2giOiB7Ci0gICAgICAidmVyc2lvbiI6ICI0LjE3LjQi
LAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC8t
L2xvZGFzaC00LjE3LjQudGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1lQ0E2VFJ3eWl1
SFliY3BrWU9OcHRYOUFWYTQ9IgotICAgIH0sCi0gICAgImxvZGFzaC1lcyI6IHsKLSAgICAgICJ2
ZXJzaW9uIjogIjQuMTcuNCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvbG9kYXNoLWVzLy0vbG9kYXNoLWVzLTQuMTcuNC50Z3oiLAotICAgICAgImludGVn
cml0eSI6ICJzaGExLTNNSFhWUzRWQ2daQUJ6dXB5ekhYRHdNcFVPYz0iCi0gICAgfSwKLSAgICAi
bG9kYXNoLmFzc2lnbmluIjogewotICAgICAgInZlcnNpb24iOiAiNC4yLjAiLAotICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5hc3NpZ25pbi8tL2xv
ZGFzaC5hc3NpZ25pbi00LjIuMC50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLXVvMzEr
NFFlc0tQb0JFSXlzT0pqcU54cUtLST0iLAotICAgICAgImRldiI6IHRydWUKLSAgICB9LAotICAg
ICJsb2Rhc2guYmluZCI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjQuMi4xIiwKLSAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2guYmluZC8tL2xvZGFzaC5i
aW5kLTQuMi4xLnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEtZXVNQmZwT1dJcXd4dDlm
WDNMR3pUYkZwRFRVPSIsCi0gICAgICAiZGV2IjogdHJ1ZQotICAgIH0sCi0gICAgImxvZGFzaC5k
ZWZhdWx0cyI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjQuMi4wIiwKLSAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2guZGVmYXVsdHMvLS9sb2Rhc2guZGVm
YXVsdHMtNC4yLjAudGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0wSkY0Y1cvK3BOM3A1
ZnQ3Ti9id2dDSjBXQXc9IiwKLSAgICAgICJkZXYiOiB0cnVlCi0gICAgfSwKLSAgICAibG9kYXNo
LmZpbHRlciI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjQuNi4wIiwKLSAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2guZmlsdGVyLy0vbG9kYXNoLmZpbHRl
ci00LjYuMC50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLVpvc2RTWUZnT3VITVdtK25Z
QlErU0F0TVNzND0iLAotICAgICAgImRldiI6IHRydWUKLSAgICB9LAotICAgICJsb2Rhc2guZmxh
dHRlbiI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjQuNC4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2guZmxhdHRlbi8tL2xvZGFzaC5mbGF0dGVu
LTQuNC4wLnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEtOHh3aUlscVdNdEs3K09TdDIr
OGtDcWRscGg4PSIsCi0gICAgICAiZGV2IjogdHJ1ZQotICAgIH0sCi0gICAgImxvZGFzaC5mb3Jl
YWNoIjogewotICAgICAgInZlcnNpb24iOiAiNC41LjAiLAotICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5mb3JlYWNoLy0vbG9kYXNoLmZvcmVhY2gt
NC41LjAudGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1HbW8xNnM1QUVvREg4RzNkN0RV
V1dySitQbE09IiwKLSAgICAgICJkZXYiOiB0cnVlCi0gICAgfSwKLSAgICAibG9kYXNoLm1hcCI6
IHsKLSAgICAgICJ2ZXJzaW9uIjogIjQuNi4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2gubWFwLy0vbG9kYXNoLm1hcC00LjYuMC50Z3oiLAot
ICAgICAgImludGVncml0eSI6ICJzaGExLWR4N0hnNTQwYzluRXplS0xHVGxNTldMMDl0TT0iLAot
ICAgICAgImRldiI6IHRydWUKLSAgICB9LAotICAgICJsb2Rhc2gubWVyZ2UiOiB7Ci0gICAgICAi
dmVyc2lvbiI6ICI0LjYuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvbG9kYXNoLm1lcmdlLy0vbG9kYXNoLm1lcmdlLTQuNi4wLnRneiIsCi0gICAgICAi
aW50ZWdyaXR5IjogInNoYTEtYVloTG9VU3NNLzVwbHplbUNHM3YrdDBQaWNVPSIsCi0gICAgICAi
ZGV2IjogdHJ1ZQotICAgIH0sCi0gICAgImxvZGFzaC5waWNrIjogewotICAgICAgInZlcnNpb24i
OiAiNC40LjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2xvZGFzaC5waWNrLy0vbG9kYXNoLnBpY2stNC40LjAudGd6IiwKLSAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1VdkJXRVAvNTN0UWlZUlJCN1IvQkk2QXdBYk09IiwKLSAgICAgICJkZXYiOiB0cnVl
Ci0gICAgfSwKLSAgICAibG9kYXNoLnJlZHVjZSI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjQuNi4w
IiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2gu
cmVkdWNlLy0vbG9kYXNoLnJlZHVjZS00LjYuMC50Z3oiLAotICAgICAgImludGVncml0eSI6ICJz
aGExLThhdHJnNUtaclVqM2hLdS9SMldXOER1UlRUcz0iLAotICAgICAgImRldiI6IHRydWUKLSAg
ICB9LAotICAgICJsb2Rhc2gucmVqZWN0IjogewotICAgICAgInZlcnNpb24iOiAiNC42LjAiLAot
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5yZWpl
Y3QvLS9sb2Rhc2gucmVqZWN0LTQuNi4wLnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEt
Z05aSkxjRkhDR1M3OVlOVE8yVWZRcW4xSkJVPSIsCi0gICAgICAiZGV2IjogdHJ1ZQotICAgIH0s
Ci0gICAgImxvZGFzaC5zb21lIjogewotICAgICAgInZlcnNpb24iOiAiNC42LjAiLAotICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5zb21lLy0vbG9k
YXNoLnNvbWUtNC42LjAudGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1HN256Rk85cmk2
M3RFN1ZKRnBzcWxGNjJqazA9IiwKLSAgICAgICJkZXYiOiB0cnVlCi0gICAgfSwKLSAgICAibG9v
c2UtZW52aWZ5IjogewotICAgICAgInZlcnNpb24iOiAiMS4zLjEiLAotICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvb3NlLWVudmlmeS8tL2xvb3NlLWVudmlm
eS0xLjMuMS50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLTBhaXRNL3FjNE9jVDFsL2RD
c2kzU05SNHlFZz0iLAotICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAianMtdG9rZW5zIjog
IjMuMC4yIgotICAgICAgfQotICAgIH0sCi0gICAgIm5hbiI6IHsKLSAgICAgICJ2ZXJzaW9uIjog
IjIuNi4yIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9u
YW4vLS9uYW4tMi42LjIudGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS01UDgwNXNsZjM3
V3V6QWplWlpiME5nV24yMFU9IiwKLSAgICAgICJkZXYiOiB0cnVlLAotICAgICAgIm9wdGlvbmFs
IjogdHJ1ZQotICAgIH0sCi0gICAgIm5vZGUtZmV0Y2giOiB7Ci0gICAgICAidmVyc2lvbiI6ICIx
LjcuMiIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbm9k
ZS1mZXRjaC8tL25vZGUtZmV0Y2gtMS43LjIudGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAic2hh
NTEyLXhaWlVxMnlEaEtNSW4vVWdHNXEvL0laU05MSkl3VzJReFMxNENOSDVzcHVpWGtJVE0ycFVp
dGpkcTU4eUxTYVU3bTRNMHdCTmFNMkdoL2dnWTRZSmlnPT0iLAotICAgICAgInJlcXVpcmVzIjog
ewotICAgICAgICAiZW5jb2RpbmciOiAiMC4xLjEyIiwKLSAgICAgICAgImlzLXN0cmVhbSI6ICIx
LjEuMCIKLSAgICAgIH0KLSAgICB9LAotICAgICJudGgtY2hlY2siOiB7Ci0gICAgICAidmVyc2lv
biI6ICIxLjAuMSIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvbnRoLWNoZWNrLy0vbnRoLWNoZWNrLTEuMC4xLnRneiIsCi0gICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtbVNtczMyS1B3c1FRbU42cmdxeFlEUEZKcXVRPSIsCi0gICAgICAiZGV2IjogdHJ1ZSwK
LSAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgImJvb2xiYXNlIjogIjEuMC4wIgotICAgICAg
fQotICAgIH0sCi0gICAgIm9iamVjdC1hc3NpZ24iOiB7Ci0gICAgICAidmVyc2lvbiI6ICI0LjEu
MSIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb2JqZWN0
LWFzc2lnbi8tL29iamVjdC1hc3NpZ24tNC4xLjEudGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1JUW10eDVaWWg4L0FYTHZVUXNySXY3czJDR009IgotICAgIH0sCi0gICAgIm9iamVjdC1p
cyI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vYmplY3QtaXMvLS9vYmplY3QtaXMtMS4wLjEudGd6IiwK
LSAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1DcVlPeVppYUN6N1hsYzlOQnZZczhhMWxPYlk9IiwK
LSAgICAgICJkZXYiOiB0cnVlCi0gICAgfSwKLSAgICAib2JqZWN0LWtleXMiOiB7Ci0gICAgICAi
dmVyc2lvbiI6ICIxLjAuMTEiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL29iamVjdC1rZXlzLy0vb2JqZWN0LWtleXMtMS4wLjExLnRneiIsCi0gICAgICAi
aW50ZWdyaXR5IjogInNoYTEteFVZQmQ0clZZUEVVTE9EZ0c4eW90VzBUUW0wPSIsCi0gICAgICAi
ZGV2IjogdHJ1ZQotICAgIH0sCi0gICAgIm9iamVjdC5hc3NpZ24iOiB7Ci0gICAgICAidmVyc2lv
biI6ICI0LjAuNCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvb2JqZWN0LmFzc2lnbi8tL29iamVjdC5hc3NpZ24tNC4wLjQudGd6IiwKLSAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1zY25NQkU3eHVmNWpZRy9CUWF1N011RkhNTXc9IiwKLSAgICAgICJkZXYi
OiB0cnVlLAotICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAiZGVmaW5lLXByb3BlcnRpZXMi
OiAiMS4xLjIiLAotICAgICAgICAiZnVuY3Rpb24tYmluZCI6ICIxLjEuMCIsCi0gICAgICAgICJv
YmplY3Qta2V5cyI6ICIxLjAuMTEiCi0gICAgICB9Ci0gICAgfSwKLSAgICAib2JqZWN0LmVudHJp
ZXMiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxLjAuNCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb2JqZWN0LmVudHJpZXMvLS9vYmplY3QuZW50cmllcy0x
LjAuNC50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLUcvbWszU0tJOWJNL09wazlKWFpo
OEYwV0dsOD0iLAotICAgICAgImRldiI6IHRydWUsCi0gICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICJkZWZpbmUtcHJvcGVydGllcyI6ICIxLjEuMiIsCi0gICAgICAgICJlcy1hYnN0cmFjdCI6
ICIxLjguMCIsCi0gICAgICAgICJmdW5jdGlvbi1iaW5kIjogIjEuMS4wIiwKLSAgICAgICAgImhh
cyI6ICIxLjAuMSIKLSAgICAgIH0KLSAgICB9LAotICAgICJvYmplY3QudmFsdWVzIjogewotICAg
ICAgInZlcnNpb24iOiAiMS4wLjQiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL29iamVjdC52YWx1ZXMvLS9vYmplY3QudmFsdWVzLTEuMC40LnRneiIsCi0g
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtNVNUYUNiVDJiL0JkOUZkVWJzY3F5WjhUQnBvPSIsCi0g
ICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgImRlZmluZS1w
cm9wZXJ0aWVzIjogIjEuMS4yIiwKLSAgICAgICAgImVzLWFic3RyYWN0IjogIjEuOC4wIiwKLSAg
ICAgICAgImZ1bmN0aW9uLWJpbmQiOiAiMS4xLjAiLAotICAgICAgICAiaGFzIjogIjEuMC4xIgot
ICAgICAgfQotICAgIH0sCi0gICAgInByb2Nlc3MtbmV4dGljay1hcmdzIjogewotICAgICAgInZl
cnNpb24iOiAiMS4wLjciLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3Byb2Nlc3MtbmV4dGljay1hcmdzLy0vcHJvY2Vzcy1uZXh0aWNrLWFyZ3MtMS4wLjcu
dGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1GUTRndDFaWkN0UDVFSlB5V2s4cTJML3pD
Nk09IiwKLSAgICAgICJkZXYiOiB0cnVlCi0gICAgfSwKLSAgICAicHJvbWlzZSI6IHsKLSAgICAg
ICJ2ZXJzaW9uIjogIjcuMy4xIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9wcm9taXNlLy0vcHJvbWlzZS03LjMuMS50Z3oiLAotICAgICAgImludGVncml0
eSI6ICJzaGE1MTItbm9sUVhaLzRMK2JQL1VHbGtmYUl1alg5Qkt4R3dtUTlPVDRtT3Q1eXZ5OGlL
MWgzd3FURUpDaWp6R0FOVENDbDluV2pZNDFqdXlBbjJLM1ExaExMVGc9PSIsCi0gICAgICAicmVx
dWlyZXMiOiB7Ci0gICAgICAgICJhc2FwIjogIjIuMC42IgotICAgICAgfQotICAgIH0sCi0gICAg
InByb3AtdHlwZXMiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxNS41LjEwIiwKLSAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcm9wLXR5cGVzLy0vcHJvcC10eXBl
cy0xNS41LjEwLnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEtSjVmZnd4SmhndU9wWGoz
N3N1aVQzZGRGWVZRPSIsCi0gICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICJmYmpzIjogIjAu
OC4xNCIsCi0gICAgICAgICJsb29zZS1lbnZpZnkiOiAiMS4zLjEiCi0gICAgICB9Ci0gICAgfSwK
LSAgICAicmVhY3QiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxNS42LjEiLAotICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlYWN0Ly0vcmVhY3QtMTUuNi4xLnRn
eiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEtdXFoRFRzWjRDOTZaZk53NEMzbk5NN2xqazk4
PSIsCi0gICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICJjcmVhdGUtcmVhY3QtY2xhc3MiOiAi
MTUuNi4wIiwKLSAgICAgICAgImZianMiOiAiMC44LjE0IiwKLSAgICAgICAgImxvb3NlLWVudmlm
eSI6ICIxLjMuMSIsCi0gICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4xIiwKLSAgICAgICAg
InByb3AtdHlwZXMiOiAiMTUuNS4xMCIKLSAgICAgIH0KLSAgICB9LAotICAgICJyZWFjdC1hZGRv
bnMtdGVzdC11dGlscyI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjE1LjYuMCIsCi0gICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QtYWRkb25zLXRlc3QtdXRp
bHMvLS9yZWFjdC1hZGRvbnMtdGVzdC11dGlscy0xNS42LjAudGd6IiwKLSAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1CaTAyRVgvbzBZODdwZUJ1c3pPRHNMaGVwYms9IiwKLSAgICAgICJkZXYiOiB0
cnVlCi0gICAgfSwKLSAgICAicmVhY3QtZG9tIjogewotICAgICAgInZlcnNpb24iOiAiMTUuNi4x
IiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC1k
b20vLS9yZWFjdC1kb20tMTUuNi4xLnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNoYTEtTExE
dFFaRURqbFBDQ2VzNmVhSStLa3o1bEhBPSIsCi0gICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAg
ICJmYmpzIjogIjAuOC4xNCIsCi0gICAgICAgICJsb29zZS1lbnZpZnkiOiAiMS4zLjEiLAotICAg
ICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMSIsCi0gICAgICAgICJwcm9wLXR5cGVzIjogIjE1
LjUuMTAiCi0gICAgICB9Ci0gICAgfSwKLSAgICAicmVhY3QtcmVkdXgiOiB7Ci0gICAgICAidmVy
c2lvbiI6ICI1LjAuNiIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvcmVhY3QtcmVkdXgvLS9yZWFjdC1yZWR1eC01LjAuNi50Z3oiLAotICAgICAgImludGVn
cml0eSI6ICJzaGE1MTItOHRhYWFHdStKN1BNSlFESnJrL3hpV0VZUW1kbzNta1h3NndQcjNLM0x4
dlhpczNGeW1pcTdjMTNTK1RwbHMvQXlOVUFzb09Oa1U4MUFQMFJBNnk2Vnc9PSIsCi0gICAgICAi
cmVxdWlyZXMiOiB7Ci0gICAgICAgICJob2lzdC1ub24tcmVhY3Qtc3RhdGljcyI6ICIyLjIuMiIs
Ci0gICAgICAgICJpbnZhcmlhbnQiOiAiMi4yLjIiLAotICAgICAgICAibG9kYXNoIjogIjQuMTcu
NCIsCi0gICAgICAgICJsb2Rhc2gtZXMiOiAiNC4xNy40IiwKLSAgICAgICAgImxvb3NlLWVudmlm
eSI6ICIxLjMuMSIsCi0gICAgICAgICJwcm9wLXR5cGVzIjogIjE1LjUuMTAiCi0gICAgICB9Ci0g
ICAgfSwKLSAgICAicmVhY3Qtc2NyaXB0cyI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjAuNi4xIiwK
LSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC1zY3Jp
cHRzLy0vcmVhY3Qtc2NyaXB0cy0wLjYuMS50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGEx
LVVtekVjcTRNRGVhOFQ5eTdHWXJ5cGl4dFJuRT0iLAotICAgICAgImRldiI6IHRydWUsCi0gICAg
ICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICJhdXRvcHJlZml4ZXIiOiAiNi40LjEiLAotICAgICAg
ICAiYmFiZWwtY29yZSI6ICI2LjE0LjAiLAotICAgICAgICAiYmFiZWwtZXNsaW50IjogIjYuMS4y
IiwKLSAgICAgICAgImJhYmVsLWplc3QiOiAiMTUuMC4wIiwKLSAgICAgICAgImJhYmVsLWxvYWRl
ciI6ICI2LjIuNSIsCi0gICAgICAgICJiYWJlbC1wcmVzZXQtcmVhY3QtYXBwIjogIjAuMi4xIiwK
LSAgICAgICAgImNhc2Utc2Vuc2l0aXZlLXBhdGhzLXdlYnBhY2stcGx1Z2luIjogIjEuMS40IiwK
LSAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKLSAgICAgICAgImNvbm5lY3QtaGlzdG9yeS1hcGkt
ZmFsbGJhY2siOiAiMS4zLjAiLAotICAgICAgICAiY3Jvc3Mtc3Bhd24iOiAiNC4wLjAiLAotICAg
ICAgICAiY3NzLWxvYWRlciI6ICIwLjI0LjAiLAotICAgICAgICAiZGV0ZWN0LXBvcnQiOiAiMS4w
LjAiLAotICAgICAgICAiZG90ZW52IjogIjIuMC4wIiwKLSAgICAgICAgImVzbGludCI6ICIzLjUu
MCIsCi0gICAgICAgICJlc2xpbnQtY29uZmlnLXJlYWN0LWFwcCI6ICIwLjIuMSIsCi0gICAgICAg
ICJlc2xpbnQtbG9hZGVyIjogIjEuNS4wIiwKLSAgICAgICAgImVzbGludC1wbHVnaW4tZmxvd3R5
cGUiOiAiMi4xOC4xIiwKLSAgICAgICAgImVzbGludC1wbHVnaW4taW1wb3J0IjogIjEuMTIuMCIs
Ci0gICAgICAgICJlc2xpbnQtcGx1Z2luLWpzeC1hMTF5IjogIjIuMi4yIiwKLSAgICAgICAgImVz
bGludC1wbHVnaW4tcmVhY3QiOiAiNi4zLjAiLAotICAgICAgICAiZXh0cmFjdC10ZXh0LXdlYnBh
Y2stcGx1Z2luIjogIjEuMC4xIiwKLSAgICAgICAgImZpbGUtbG9hZGVyIjogIjAuOS4wIiwKLSAg
ICAgICAgImZpbGVzaXplIjogIjMuMy4wIiwKLSAgICAgICAgImZpbmQtY2FjaGUtZGlyIjogIjAu
MS4xIiwKLSAgICAgICAgImZzLWV4dHJhIjogIjAuMzAuMCIsCi0gICAgICAgICJmc2V2ZW50cyI6
ICIxLjAuMTQiLAotICAgICAgICAiZ3ppcC1zaXplIjogIjMuMC4wIiwKLSAgICAgICAgImh0bWwt
d2VicGFjay1wbHVnaW4iOiAiMi4yMi4wIiwKLSAgICAgICAgImh0dHAtcHJveHktbWlkZGxld2Fy
ZSI6ICIwLjE3LjEiLAotICAgICAgICAiamVzdCI6ICIxNS4xLjEiLAotICAgICAgICAianNvbi1s
b2FkZXIiOiAiMC41LjQiLAotICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMCIsCi0gICAg
ICAgICJwYXRoLWV4aXN0cyI6ICIyLjEuMCIsCi0gICAgICAgICJwb3N0Y3NzLWxvYWRlciI6ICIw
LjEzLjAiLAotICAgICAgICAicHJvbWlzZSI6ICI3LjEuMSIsCi0gICAgICAgICJyZWFjdC1kZXYt
dXRpbHMiOiAiMC4yLjEiLAotICAgICAgICAicmVjdXJzaXZlLXJlYWRkaXIiOiAiMi4xLjAiLAot
ICAgICAgICAicmltcmFmIjogIjIuNS40IiwKLSAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEi
LAotICAgICAgICAic3R5bGUtbG9hZGVyIjogIjAuMTMuMSIsCi0gICAgICAgICJ1cmwtbG9hZGVy
IjogIjAuNS43IiwKLSAgICAgICAgIndlYnBhY2siOiAiMS4xMy4yIiwKLSAgICAgICAgIndlYnBh
Y2stZGV2LXNlcnZlciI6ICIxLjE2LjEiLAotICAgICAgICAid2hhdHdnLWZldGNoIjogIjEuMC4w
IgotICAgICAgfSwKLSAgICAgICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAgICAgICJhYmFiIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImFiYnJldiI6IHsK
LSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuOSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJhY2NlcHRzIjog
ewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgIm1pbWUtdHlwZXMiOiAiMi4xLjEyIiwKLSAgICAgICAgICAgICJuZWdvdGlhdG9y
IjogIjAuNi4xIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImFjb3JuIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMC4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImFjb3JuLWdsb2Jh
bHMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjkiLAotICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7
Ci0gICAgICAgICAgICAiYWNvcm4iOiAiMi43LjAiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAi
ZGVwZW5kZW5jaWVzIjogewotICAgICAgICAgICAgImFjb3JuIjogewotICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIyLjcuMCIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAg
ICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAg
IH0sCi0gICAgICAgICJhY29ybi1qc3giOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMy4wLjEi
LAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAg
ICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYWNvcm4iOiAiMy4zLjAiCi0gICAg
ICAgICAgfSwKLSAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewotICAgICAgICAgICAgImFjb3Ju
IjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIzLjMuMCIsCi0gICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJhanYiOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiNC43LjQiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiY28iOiAi
NC42LjAiLAotICAgICAgICAgICAgImpzb24tc3RhYmxlLXN0cmluZ2lmeSI6ICIxLjAuMSIKLSAg
ICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJhanYta2V5d29yZHMiOiB7Ci0gICAgICAg
ICAgInZlcnNpb24iOiAiMS4xLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAg
ICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiYWxpZ24tdGV4dCI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjEuNCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAot
ICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICJraW5kLW9mIjogIjMuMC40IiwKLSAgICAgICAgICAgICJsb25nZXN0IjogIjEuMC4xIiwK
LSAgICAgICAgICAgICJyZXBlYXQtc3RyaW5nIjogIjEuNS40IgotICAgICAgICAgIH0KLSAgICAg
ICAgfSwKLSAgICAgICAgImFscGhhbnVtLXNvcnQiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjIiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1
ZQotICAgICAgICB9LAotICAgICAgICAiYW1kZWZpbmUiOiB7Ci0gICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2Ijog
dHJ1ZQotICAgICAgICB9LAotICAgICAgICAiYW5zaS1lc2NhcGVzIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuNC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImFuc2ktaHRtbCI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjAuNSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAg
ICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJhbnNpLXJlZ2V4IjogewotICAg
ICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0g
ICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImFuc2ktc3R5bGVzIjog
ewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImFuc2ljb2xv
cnMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4yLjEiLAotICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiYW55
bWF0Y2giOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4zLjAiLAotICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMi
OiB7Ci0gICAgICAgICAgICAiYXJyaWZ5IjogIjEuMC4xIiwKLSAgICAgICAgICAgICJtaWNyb21h
dGNoIjogIjIuMy4xMSIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJhcHBlbmQt
dHJhbnNmb3JtIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMy4wIiwKLSAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAg
ICAgImFyZ3BhcnNlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC43IiwKLSAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJl
cXVpcmVzIjogewotICAgICAgICAgICAgInNwcmludGYtanMiOiAiMS4wLjMiCi0gICAgICAgICAg
fQotICAgICAgICB9LAotICAgICAgICAiYXJyLWRpZmYiOiB7Ci0gICAgICAgICAgInZlcnNpb24i
OiAiMi4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYXJyLWZsYXR0ZW4i
OiAiMS4wLjEiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiYXJyLWZsYXR0ZW4i
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiYXJyYXkt
ZGlmZmVyIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAg
ImFycmF5LWVxdWFsIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAg
ICAgICAgImFycmF5LWZsYXR0ZW4iOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAot
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAg
ICB9LAotICAgICAgICAiYXJyYXktdW5pb24iOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjIiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwK
LSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYXJyYXktdW5pcSI6ICIxLjAu
MyIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJhcnJheS11bmlxIjogewotICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0g
ICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImFycmF5LXVuaXF1ZSI6
IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJhcnJpZnki
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiYXNhcCI6
IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuNSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJhc24xIjog
ewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImFzc2VydCI6
IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjQuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAg
ICAgICAgICAgICJ1dGlsIjogIjAuMTAuMyIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAg
ICAgICJhc3NlcnQtcGx1cyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0s
Ci0gICAgICAgICJhc3luYyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjUuMiIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0s
Ci0gICAgICAgICJhc3luYy1lYWNoIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwK
LSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAg
ICAgfSwKLSAgICAgICAgImFzeW5ja2l0IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNC4w
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAg
ICAgICAgfSwKLSAgICAgICAgImF1dG9wcmVmaXhlciI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICI2LjQuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0
cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJicm93c2Vyc2xpc3Qi
OiAiMS4zLjYiLAotICAgICAgICAgICAgImNhbml1c2UtZGIiOiAiMS4wLjMwMDAwNTQwIiwKLSAg
ICAgICAgICAgICJub3JtYWxpemUtcmFuZ2UiOiAiMC4xLjIiLAotICAgICAgICAgICAgIm51bTJm
cmFjdGlvbiI6ICIxLjIuMiIsCi0gICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIsCi0gICAg
ICAgICAgICAicG9zdGNzcy12YWx1ZS1wYXJzZXIiOiAiMy4zLjAiCi0gICAgICAgICAgfQotICAg
ICAgICB9LAotICAgICAgICAiYXdzLXNpZ24yIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
Ni4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUK
LSAgICAgICAgfSwKLSAgICAgICAgImF3czQiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS40
LjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQot
ICAgICAgICB9LAotICAgICAgICAiYmFiZWwtY29kZS1mcmFtZSI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICI2LjExLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYmFiZWwt
cnVudGltZSI6ICI2LjExLjYiLAotICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKLSAgICAg
ICAgICAgICJlc3V0aWxzIjogIjIuMC4yIiwKLSAgICAgICAgICAgICJqcy10b2tlbnMiOiAiMi4w
LjAiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiYmFiZWwtY29yZSI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICI2LjE0LjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
LSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAg
ICAgICAiYmFiZWwtY29kZS1mcmFtZSI6ICI2LjExLjAiLAotICAgICAgICAgICAgImJhYmVsLWdl
bmVyYXRvciI6ICI2LjE0LjAiLAotICAgICAgICAgICAgImJhYmVsLWhlbHBlcnMiOiAiNi44LjAi
LAotICAgICAgICAgICAgImJhYmVsLW1lc3NhZ2VzIjogIjYuOC4wIiwKLSAgICAgICAgICAgICJi
YWJlbC1yZWdpc3RlciI6ICI2LjE0LjAiLAotICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAi
Ni4xMS42IiwKLSAgICAgICAgICAgICJiYWJlbC10ZW1wbGF0ZSI6ICI2LjE1LjAiLAotICAgICAg
ICAgICAgImJhYmVsLXRyYXZlcnNlIjogIjYuMTUuMCIsCi0gICAgICAgICAgICAiYmFiZWwtdHlw
ZXMiOiAiNi4xNS4wIiwKLSAgICAgICAgICAgICJiYWJ5bG9uIjogIjYuMTEuMiIsCi0gICAgICAg
ICAgICAiY29udmVydC1zb3VyY2UtbWFwIjogIjEuMy4wIiwKLSAgICAgICAgICAgICJkZWJ1ZyI6
ICIyLjIuMCIsCi0gICAgICAgICAgICAianNvbjUiOiAiMC40LjAiLAotICAgICAgICAgICAgImxv
ZGFzaCI6ICI0LjE2LjIiLAotICAgICAgICAgICAgIm1pbmltYXRjaCI6ICIzLjAuMyIsCi0gICAg
ICAgICAgICAicGF0aC1leGlzdHMiOiAiMS4wLjAiLAotICAgICAgICAgICAgInBhdGgtaXMtYWJz
b2x1dGUiOiAiMS4wLjAiLAotICAgICAgICAgICAgInByaXZhdGUiOiAiMC4xLjYiLAotICAgICAg
ICAgICAgInNoZWJhbmctcmVnZXgiOiAiMS4wLjAiLAotICAgICAgICAgICAgInNsYXNoIjogIjEu
MC4wIiwKLSAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS42IgotICAgICAgICAgIH0sCi0g
ICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJwYXRoLWV4aXN0cyI6IHsK
LSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiYmFiZWwtZXNsaW50IjogewotICAgICAgICAg
ICJ2ZXJzaW9uIjogIjYuMS4yIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJh
YmVsLXRyYXZlcnNlIjogIjYuMTUuMCIsCi0gICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4x
NS4wIiwKLSAgICAgICAgICAgICJiYWJ5bG9uIjogIjYuMTEuMiIsCi0gICAgICAgICAgICAibG9k
YXNoLmFzc2lnbiI6ICI0LjIuMCIsCi0gICAgICAgICAgICAibG9kYXNoLnBpY2tieSI6ICI0LjYu
MCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJiYWJlbC1nZW5lcmF0b3IiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiNi4xNC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgImJhYmVsLW1lc3NhZ2VzIjogIjYuOC4wIiwKLSAgICAgICAgICAgICJiYWJlbC1y
dW50aW1lIjogIjYuMTEuNiIsCi0gICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIiwK
LSAgICAgICAgICAgICJkZXRlY3QtaW5kZW50IjogIjMuMC4xIiwKLSAgICAgICAgICAgICJsb2Rh
c2giOiAiNC4xNi4yIiwKLSAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS42IgotICAgICAg
ICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJhYmVsLWhlbHBlci1idWlsZGVyLWJpbmFyeS1h
c3NpZ25tZW50LW9wZXJhdG9yLXZpc2l0b3IiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNi4x
NS4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUs
Ci0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVsLWhlbHBlci1leHBs
b2RlLWFzc2lnbmFibGUtZXhwcmVzc2lvbiI6ICI2LjguMCIsCi0gICAgICAgICAgICAiYmFiZWwt
cnVudGltZSI6ICI2LjExLjYiLAotICAgICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIK
LSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJiYWJlbC1oZWxwZXItYnVpbGRlci1y
ZWFjdC1qc3giOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNi45LjAiLAotICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWly
ZXMiOiB7Ci0gICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAotICAgICAgICAg
ICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIsCi0gICAgICAgICAgICAiZXN1dGlscyI6ICIyLjAu
MiIsCi0gICAgICAgICAgICAibG9kYXNoIjogIjQuMTYuMiIKLSAgICAgICAgICB9Ci0gICAgICAg
IH0sCi0gICAgICAgICJiYWJlbC1oZWxwZXItY2FsbC1kZWxlZ2F0ZSI6IHsKLSAgICAgICAgICAi
dmVyc2lvbiI6ICI2LjguMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAg
ICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJiYWJl
bC1oZWxwZXItaG9pc3QtdmFyaWFibGVzIjogIjYuOC4wIiwKLSAgICAgICAgICAgICJiYWJlbC1y
dW50aW1lIjogIjYuMTEuNiIsCi0gICAgICAgICAgICAiYmFiZWwtdHJhdmVyc2UiOiAiNi4xNS4w
IiwKLSAgICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiCi0gICAgICAgICAgfQotICAg
ICAgICB9LAotICAgICAgICAiYmFiZWwtaGVscGVyLWRlZmluZS1tYXAiOiB7Ci0gICAgICAgICAg
InZlcnNpb24iOiAiNi45LjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYmFi
ZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWUiOiAiNi44LjAiLAotICAgICAgICAgICAgImJhYmVsLXJ1
bnRpbWUiOiAiNi4xMS42IiwKLSAgICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiLAot
ICAgICAgICAgICAgImxvZGFzaCI6ICI0LjE2LjIiCi0gICAgICAgICAgfQotICAgICAgICB9LAot
ICAgICAgICAiYmFiZWwtaGVscGVyLWV4cGxvZGUtYXNzaWduYWJsZS1leHByZXNzaW9uIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAg
ICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKLSAgICAgICAgICAgICJiYWJlbC10cmF2
ZXJzZSI6ICI2LjE1LjAiLAotICAgICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIKLSAg
ICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJiYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFt
ZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIsCi0gICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsK
LSAgICAgICAgICAgICJiYWJlbC1oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5IjogIjYuOC4wIiwK
LSAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCi0gICAgICAgICAgICAiYmFi
ZWwtdGVtcGxhdGUiOiAiNi4xNS4wIiwKLSAgICAgICAgICAgICJiYWJlbC10cmF2ZXJzZSI6ICI2
LjE1LjAiLAotICAgICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIKLSAgICAgICAgICB9
Ci0gICAgICAgIH0sCi0gICAgICAgICJiYWJlbC1oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5Ijog
ewotICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKLSAgICAgICAgICAgICJiYWJlbC10
eXBlcyI6ICI2LjE1LjAiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiYmFiZWwt
aGVscGVyLWhvaXN0LXZhcmlhYmxlcyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIs
Ci0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEu
NiIsCi0gICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIgotICAgICAgICAgIH0KLSAg
ICAgICAgfSwKLSAgICAgICAgImJhYmVsLWhlbHBlci1vcHRpbWlzZS1jYWxsLWV4cHJlc3Npb24i
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNi44LjAiLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0g
ICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAotICAgICAgICAgICAgImJhYmVs
LXR5cGVzIjogIjYuMTUuMCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJiYWJl
bC1oZWxwZXItcmVnZXgiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNi45LjAiLAotICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAi
cmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAotICAg
ICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIsCi0gICAgICAgICAgICAibG9kYXNoIjog
IjQuMTYuMiIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJiYWJlbC1oZWxwZXIt
cmVtYXAtYXN5bmMtdG8tZ2VuZXJhdG9yIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTEu
MiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAot
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJiYWJlbC1oZWxwZXItZnVuY3Rp
b24tbmFtZSI6ICI2LjguMCIsCi0gICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYi
LAotICAgICAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogIjYuMTUuMCIsCi0gICAgICAgICAgICAi
YmFiZWwtdHJhdmVyc2UiOiAiNi4xNS4wIiwKLSAgICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2
LjE1LjAiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiYmFiZWwtaGVscGVyLXJl
cGxhY2Utc3VwZXJzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTQuMCIsCi0gICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJiYWJlbC1oZWxwZXItb3B0aW1pc2UtY2FsbC1leHBy
ZXNzaW9uIjogIjYuOC4wIiwKLSAgICAgICAgICAgICJiYWJlbC1tZXNzYWdlcyI6ICI2LjguMCIs
Ci0gICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAotICAgICAgICAgICAgImJh
YmVsLXRlbXBsYXRlIjogIjYuMTUuMCIsCi0gICAgICAgICAgICAiYmFiZWwtdHJhdmVyc2UiOiAi
Ni4xNS4wIiwKLSAgICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiCi0gICAgICAgICAg
fQotICAgICAgICB9LAotICAgICAgICAiYmFiZWwtaGVscGVycyI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICI2LjguMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJk
ZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJiYWJlbC1y
dW50aW1lIjogIjYuMTEuNiIsCi0gICAgICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4xNS4w
IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJhYmVsLWplc3QiOiB7Ci0gICAg
ICAgICAgInZlcnNpb24iOiAiMTUuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0g
ICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAg
ICAgImJhYmVsLWNvcmUiOiAiNi4xNC4wIiwKLSAgICAgICAgICAgICJiYWJlbC1wbHVnaW4taXN0
YW5idWwiOiAiMi4wLjEiLAotICAgICAgICAgICAgImJhYmVsLXByZXNldC1qZXN0IjogIjE1LjAu
MCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJiYWJlbC1sb2FkZXIiOiB7Ci0g
ICAgICAgICAgInZlcnNpb24iOiAiNi4yLjUiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
LSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAg
ICAgICAibG9hZGVyLXV0aWxzIjogIjAuMi4xNiIsCi0gICAgICAgICAgICAibWtkaXJwIjogIjAu
NS4xIiwKLSAgICAgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4wIgotICAgICAgICAgIH0K
LSAgICAgICAgfSwKLSAgICAgICAgImJhYmVsLW1lc3NhZ2VzIjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjYuOC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRl
diI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVsLXJ1
bnRpbWUiOiAiNi4xMS42IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJhYmVs
LXBsdWdpbi1jaGVjay1lczIwMTUtY29uc3RhbnRzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjog
IjYuOC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRy
dWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUi
OiAiNi4xMS42IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJhYmVsLXBsdWdp
bi1pc3RhbmJ1bCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCi0gICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1
aXJlcyI6IHsKLSAgICAgICAgICAgICJmaW5kLXVwIjogIjEuMS4yIiwKLSAgICAgICAgICAgICJp
c3RhbmJ1bC1saWItaW5zdHJ1bWVudCI6ICIxLjEuMyIsCi0gICAgICAgICAgICAidGVzdC1leGNs
dWRlIjogIjIuMS4yIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJhYmVsLXBs
dWdpbi1qZXN0LWhvaXN0IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjE1LjAuMCIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0s
Ci0gICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWFzeW5jLWZ1bmN0aW9ucyI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICI2LjEzLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiYmFiZWwtcGx1Z2luLXN5
bnRheC1jbGFzcy1wcm9wZXJ0aWVzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTMuMCIs
Ci0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAg
ICAgIH0sCi0gICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWV4cG9uZW50aWF0aW9uLW9wZXJh
dG9yIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTMuMCIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJi
YWJlbC1wbHVnaW4tc3ludGF4LWZsb3ciOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNi4xMy4w
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAg
ICAgICAgfSwKLSAgICAgICAgImJhYmVsLXBsdWdpbi1zeW50YXgtanN4IjogewotICAgICAgICAg
ICJ2ZXJzaW9uIjogIjYuMTMuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAg
ICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4
LW9iamVjdC1yZXN0LXNwcmVhZCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI2LjEzLjAiLAot
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAg
ICB9LAotICAgICAgICAiYmFiZWwtcGx1Z2luLXN5bnRheC10cmFpbGluZy1mdW5jdGlvbi1jb21t
YXMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNi4xMy4wIiwKLSAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImJh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tYXN5bmMtdG8tZ2VuZXJhdG9yIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjYuOC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVs
LWhlbHBlci1yZW1hcC1hc3luYy10by1nZW5lcmF0b3IiOiAiNi4xMS4yIiwKLSAgICAgICAgICAg
ICJiYWJlbC1wbHVnaW4tc3ludGF4LWFzeW5jLWZ1bmN0aW9ucyI6ICI2LjEzLjAiLAotICAgICAg
ICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgotICAgICAgICAgIH0KLSAgICAgICAgfSwK
LSAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tY2xhc3MtcHJvcGVydGllcyI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICI2LjExLjUiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
LSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAg
ICAgICAiYmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWUiOiAiNi44LjAiLAotICAgICAgICAgICAg
ImJhYmVsLXBsdWdpbi1zeW50YXgtY2xhc3MtcHJvcGVydGllcyI6ICI2LjEzLjAiLAotICAgICAg
ICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgotICAgICAgICAgIH0KLSAgICAgICAgfSwK
LSAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWFycm93LWZ1bmN0aW9ucyI6
IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAg
ICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIKLSAgICAgICAgICB9Ci0gICAgICAg
IH0sCi0gICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9jay1zY29wZWQt
ZnVuY3Rpb25zIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKLSAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVp
cmVzIjogewotICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgotICAgICAgICAg
IH0KLSAgICAgICAgfSwKLSAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJs
b2NrLXNjb3BpbmciOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNi4xNS4wIiwKLSAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJl
cXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKLSAgICAg
ICAgICAgICJiYWJlbC10ZW1wbGF0ZSI6ICI2LjE1LjAiLAotICAgICAgICAgICAgImJhYmVsLXRy
YXZlcnNlIjogIjYuMTUuMCIsCi0gICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIiwK
LSAgICAgICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIgotICAgICAgICAgIH0KLSAgICAgICAgfSwK
LSAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNsYXNzZXMiOiB7Ci0gICAg
ICAgICAgInZlcnNpb24iOiAiNi4xNC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0g
ICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAg
ICAgImJhYmVsLWhlbHBlci1kZWZpbmUtbWFwIjogIjYuOS4wIiwKLSAgICAgICAgICAgICJiYWJl
bC1oZWxwZXItZnVuY3Rpb24tbmFtZSI6ICI2LjguMCIsCi0gICAgICAgICAgICAiYmFiZWwtaGVs
cGVyLW9wdGltaXNlLWNhbGwtZXhwcmVzc2lvbiI6ICI2LjguMCIsCi0gICAgICAgICAgICAiYmFi
ZWwtaGVscGVyLXJlcGxhY2Utc3VwZXJzIjogIjYuMTQuMCIsCi0gICAgICAgICAgICAiYmFiZWwt
bWVzc2FnZXMiOiAiNi44LjAiLAotICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42
IiwKLSAgICAgICAgICAgICJiYWJlbC10ZW1wbGF0ZSI6ICI2LjE1LjAiLAotICAgICAgICAgICAg
ImJhYmVsLXRyYXZlcnNlIjogIjYuMTUuMCIsCi0gICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAi
Ni4xNS4wIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tZXMyMDE1LWNvbXB1dGVkLXByb3BlcnRpZXMiOiB7Ci0gICAgICAgICAgInZlcnNp
b24iOiAiNi44LjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2
IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYmFiZWwtaGVs
cGVyLWRlZmluZS1tYXAiOiAiNi45LjAiLAotICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAi
Ni4xMS42IiwKLSAgICAgICAgICAgICJiYWJlbC10ZW1wbGF0ZSI6ICI2LjE1LjAiCi0gICAgICAg
ICAgfQotICAgICAgICB9LAotICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUt
ZGVzdHJ1Y3R1cmluZyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI2LjkuMCIsCi0gICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIKLSAgICAg
ICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS1kdXBsaWNhdGUta2V5cyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCi0g
ICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIgotICAgICAgICAgIH0KLSAgICAgICAg
fSwKLSAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWZvci1vZiI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAot
ICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0g
ICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1mdW5jdGlvbi1uYW1lIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOS4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAg
ICAgICAgImJhYmVsLWhlbHBlci1mdW5jdGlvbi1uYW1lIjogIjYuOC4wIiwKLSAgICAgICAgICAg
ICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCi0gICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAi
Ni4xNS4wIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tZXMyMDE1LWxpdGVyYWxzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4w
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0g
ICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4x
MS42IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZXMyMDE1LW1vZHVsZXMtYW1kIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4w
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0g
ICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tZXMyMDE1LW1vZHVsZXMtY29tbW9uanMiOiAiNi4xNC4wIiwKLSAgICAgICAgICAgICJiYWJl
bC1ydW50aW1lIjogIjYuMTEuNiIsCi0gICAgICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4x
NS4wIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZXMyMDE1LW1vZHVsZXMtY29tbW9uanMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAi
Ni4xNC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRy
dWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tc3RyaWN0LW1vZGUiOiAiNi4xMS4zIiwKLSAgICAgICAgICAgICJiYWJlbC1ydW50
aW1lIjogIjYuMTEuNiIsCi0gICAgICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4xNS4wIiwK
LSAgICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiCi0gICAgICAgICAgfQotICAgICAg
ICB9LAotICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1zeXN0
ZW1qcyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI2LjE0LjAiLAotICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMi
OiB7Ci0gICAgICAgICAgICAiYmFiZWwtaGVscGVyLWhvaXN0LXZhcmlhYmxlcyI6ICI2LjguMCIs
Ci0gICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAotICAgICAgICAgICAgImJh
YmVsLXRlbXBsYXRlIjogIjYuMTUuMCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAg
ICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLXVtZCI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICI2LjEyLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAi
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1hbWQiOiAiNi44LjAiLAotICAg
ICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKLSAgICAgICAgICAgICJiYWJlbC10
ZW1wbGF0ZSI6ICI2LjE1LjAiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtb2JqZWN0LXN1cGVyIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjYuOC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVs
LWhlbHBlci1yZXBsYWNlLXN1cGVycyI6ICI2LjE0LjAiLAotICAgICAgICAgICAgImJhYmVsLXJ1
bnRpbWUiOiAiNi4xMS42IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXBhcmFtZXRlcnMiOiB7Ci0gICAgICAgICAgInZlcnNp
b24iOiAiNi4xMS40IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRl
diI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVsLWhl
bHBlci1jYWxsLWRlbGVnYXRlIjogIjYuOC4wIiwKLSAgICAgICAgICAgICJiYWJlbC1oZWxwZXIt
Z2V0LWZ1bmN0aW9uLWFyaXR5IjogIjYuOC4wIiwKLSAgICAgICAgICAgICJiYWJlbC1ydW50aW1l
IjogIjYuMTEuNiIsCi0gICAgICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4xNS4wIiwKLSAg
ICAgICAgICAgICJiYWJlbC10cmF2ZXJzZSI6ICI2LjE1LjAiLAotICAgICAgICAgICAgImJhYmVs
LXR5cGVzIjogIjYuMTUuMCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJiYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1zaG9ydGhhbmQtcHJvcGVydGllcyI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICI2LjguMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAg
ICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAg
ICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCi0gICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAi
Ni4xNS4wIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tZXMyMDE1LXNwcmVhZCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIs
Ci0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEu
NiIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS1zdGlja3ktcmVnZXgiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNi44LjAi
LAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAg
ICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYmFiZWwtaGVscGVyLXJlZ2V4Ijog
IjYuOS4wIiwKLSAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCi0gICAgICAg
ICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAg
ICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXRlbXBsYXRlLWxpdGVyYWxzIjog
ewotICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgotICAgICAgICAgIH0KLSAgICAgICAg
fSwKLSAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXR5cGVvZi1zeW1ib2wi
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNi44LjAiLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0g
ICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiCi0gICAgICAgICAgfQotICAgICAg
ICB9LAotICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdW5pY29kZS1yZWdl
eCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI2LjExLjAiLAotICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7
Ci0gICAgICAgICAgICAiYmFiZWwtaGVscGVyLXJlZ2V4IjogIjYuOS4wIiwKLSAgICAgICAgICAg
ICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCi0gICAgICAgICAgICAicmVnZXhwdS1jb3JlIjog
IjIuMC4wIgotICAgICAgICAgIH0sCi0gICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAg
ICAgICAgICJyZWdleHB1LWNvcmUiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4w
IiwKLSAgICAgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3JlZ2V4cHUtY29yZS8tL3JlZ2V4cHUtY29yZS0yLjAuMC50Z3oiLAotICAgICAgICAgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtU2RBNGczdU56NHY2VzVwQ0U1azQ1dW9xNGtBPSIsCi0gICAgICAg
ICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAg
ICAgICAgICAgInJlZ2VuZXJhdGUiOiAiMS4zLjEiLAotICAgICAgICAgICAgICAgICJyZWdqc2dl
biI6ICIwLjIuMCIsCi0gICAgICAgICAgICAgICAgInJlZ2pzcGFyc2VyIjogIjAuMS41IgotICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9LAotICAg
ICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1leHBvbmVudGlhdGlvbi1vcGVyYXRvciI6IHsK
LSAgICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAg
ICAgICAgICJiYWJlbC1oZWxwZXItYnVpbGRlci1iaW5hcnktYXNzaWdubWVudC1vcGVyYXRvci12
aXNpdG9yIjogIjYuMTUuMCIsCi0gICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXN5bnRheC1leHBv
bmVudGlhdGlvbi1vcGVyYXRvciI6ICI2LjEzLjAiLAotICAgICAgICAgICAgImJhYmVsLXJ1bnRp
bWUiOiAiNi4xMS42IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tZmxvdy1zdHJpcC10eXBlcyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICI2LjE0LjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYmFiZWwtcGx1Z2lu
LXN5bnRheC1mbG93IjogIjYuMTMuMCIsCi0gICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2
LjExLjYiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiYmFiZWwtcGx1Z2luLXRy
YW5zZm9ybS1vYmplY3QtcmVzdC1zcHJlYWQiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNi44
LjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwK
LSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXN5bnRh
eC1vYmplY3QtcmVzdC1zcHJlYWQiOiAiNi4xMy4wIiwKLSAgICAgICAgICAgICJiYWJlbC1ydW50
aW1lIjogIjYuMTEuNiIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJiYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLXJlYWN0LWNvbnN0YW50LWVsZW1lbnRzIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjYuOS4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVs
LXJ1bnRpbWUiOiAiNi4xMS42IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtZGlzcGxheS1uYW1lIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjYuOC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVs
LXJ1bnRpbWUiOiAiNi4xMS42IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4IjogewotICAgICAgICAgICJ2ZXJzaW9uIjog
IjYuOC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRy
dWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVsLWhlbHBlci1i
dWlsZGVyLXJlYWN0LWpzeCI6ICI2LjkuMCIsCi0gICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXN5
bnRheC1qc3giOiAiNi4xMy4wIiwKLSAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEu
NiIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLXJlYWN0LWpzeC1zZWxmIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTEuMCIsCi0g
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWpzeCI6
ICI2LjEzLjAiLAotICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgotICAgICAg
ICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3Qt
anN4LXNvdXJjZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI2LjkuMCIsCi0gICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1
aXJlcyI6IHsKLSAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWpzeCI6ICI2LjEzLjAi
LAotICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgotICAgICAgICAgIH0KLSAg
ICAgICAgfSwKLSAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5lcmF0b3IiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiNi4xNC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgImJhYmVsLWNvcmUiOiAiNi4xNC4wIiwKLSAgICAgICAgICAgICJiYWJlbC1wbHVn
aW4tc3ludGF4LWFzeW5jLWZ1bmN0aW9ucyI6ICI2LjEzLjAiLAotICAgICAgICAgICAgImJhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2NrLXNjb3BpbmciOiAiNi4xNS4wIiwKLSAgICAg
ICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1mb3Itb2YiOiAiNi44LjAiLAot
ICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKLSAgICAgICAgICAgICJiYWJl
bC10cmF2ZXJzZSI6ICI2LjE1LjAiLAotICAgICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMTUu
MCIsCi0gICAgICAgICAgICAiYmFieWxvbiI6ICI2LjExLjIiLAotICAgICAgICAgICAgInByaXZh
dGUiOiAiMC4xLjYiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1ydW50aW1lIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTUuMCIs
Ci0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEu
NiIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLXN0cmljdC1tb2RlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTEuMyIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCi0g
ICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIgotICAgICAgICAgIH0KLSAgICAgICAg
fSwKLSAgICAgICAgImJhYmVsLXByZXNldC1lczIwMTUiOiB7Ci0gICAgICAgICAgInZlcnNpb24i
OiAiNi4xNC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVsLXBsdWdp
bi1jaGVjay1lczIwMTUtY29uc3RhbnRzIjogIjYuOC4wIiwKLSAgICAgICAgICAgICJiYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1hcnJvdy1mdW5jdGlvbnMiOiAiNi44LjAiLAotICAgICAg
ICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2NrLXNjb3BlZC1mdW5jdGlv
bnMiOiAiNi44LjAiLAotICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LWJsb2NrLXNjb3BpbmciOiAiNi4xNS4wIiwKLSAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS1jbGFzc2VzIjogIjYuMTQuMCIsCi0gICAgICAgICAgICAiYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1lczIwMTUtY29tcHV0ZWQtcHJvcGVydGllcyI6ICI2LjguMCIsCi0gICAg
ICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZGVzdHJ1Y3R1cmluZyI6ICI2
LjkuMCIsCi0gICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZHVwbGlj
YXRlLWtleXMiOiAiNi44LjAiLAotICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
ZXMyMDE1LWZvci1vZiI6ICI2LjguMCIsCi0gICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1lczIwMTUtZnVuY3Rpb24tbmFtZSI6ICI2LjkuMCIsCi0gICAgICAgICAgICAiYmFiZWwt
cGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbGl0ZXJhbHMiOiAiNi44LjAiLAotICAgICAgICAgICAg
ImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtYW1kIjogIjYuOC4wIiwKLSAg
ICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLWNvbW1vbmpz
IjogIjYuMTQuMCIsCi0gICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUt
bW9kdWxlcy1zeXN0ZW1qcyI6ICI2LjE0LjAiLAotICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtdW1kIjogIjYuMTIuMCIsCi0gICAgICAgICAgICAiYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtb2JqZWN0LXN1cGVyIjogIjYuOC4wIiwKLSAgICAg
ICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1wYXJhbWV0ZXJzIjogIjYuMTEu
NCIsCi0gICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtc2hvcnRoYW5k
LXByb3BlcnRpZXMiOiAiNi44LjAiLAotICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tZXMyMDE1LXNwcmVhZCI6ICI2LjguMCIsCi0gICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRy
YW5zZm9ybS1lczIwMTUtc3RpY2t5LXJlZ2V4IjogIjYuOC4wIiwKLSAgICAgICAgICAgICJiYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS10ZW1wbGF0ZS1saXRlcmFscyI6ICI2LjguMCIsCi0g
ICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdHlwZW9mLXN5bWJvbCI6
ICI2LjguMCIsCi0gICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdW5p
Y29kZS1yZWdleCI6ICI2LjExLjAiLAotICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tcmVnZW5lcmF0b3IiOiAiNi4xNC4wIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAg
ICAgImJhYmVsLXByZXNldC1lczIwMTYiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNi4xMS4z
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0g
ICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tZXhwb25lbnRpYXRpb24tb3BlcmF0b3IiOiAiNi44LjAiCi0gICAgICAgICAgfQotICAgICAg
ICB9LAotICAgICAgICAiYmFiZWwtcHJlc2V0LWVzMjAxNyI6IHsKLSAgICAgICAgICAidmVyc2lv
biI6ICI2LjE0LjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2
IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYmFiZWwtcGx1
Z2luLXN5bnRheC10cmFpbGluZy1mdW5jdGlvbi1jb21tYXMiOiAiNi4xMy4wIiwKLSAgICAgICAg
ICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWFzeW5jLXRvLWdlbmVyYXRvciI6ICI2LjguMCIK
LSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJiYWJlbC1wcmVzZXQtamVzdCI6IHsK
LSAgICAgICAgICAidmVyc2lvbiI6ICIxNS4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICAgICAiYmFiZWwtcGx1Z2luLWplc3QtaG9pc3QiOiAiMTUuMC4wIgotICAgICAgICAgIH0K
LSAgICAgICAgfSwKLSAgICAgICAgImJhYmVsLXByZXNldC1sYXRlc3QiOiB7Ci0gICAgICAgICAg
InZlcnNpb24iOiAiNi4xNC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJh
YmVsLXByZXNldC1lczIwMTUiOiAiNi4xNC4wIiwKLSAgICAgICAgICAgICJiYWJlbC1wcmVzZXQt
ZXMyMDE2IjogIjYuMTEuMyIsCi0gICAgICAgICAgICAiYmFiZWwtcHJlc2V0LWVzMjAxNyI6ICI2
LjE0LjAiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiYmFiZWwtcHJlc2V0LXJl
YWN0IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTEuMSIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6
IHsKLSAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWZsb3ciOiAiNi4xMy4wIiwKLSAg
ICAgICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWpzeCI6ICI2LjEzLjAiLAotICAgICAgICAg
ICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZmxvdy1zdHJpcC10eXBlcyI6ICI2LjE0LjAiLAot
ICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtZGlzcGxheS1uYW1lIjog
IjYuOC4wIiwKLSAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeCI6
ICI2LjguMCIsCi0gICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gt
c2VsZiI6ICI2LjExLjAiLAotICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVh
Y3QtanN4LXNvdXJjZSI6ICI2LjkuMCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAg
ICJiYWJlbC1wcmVzZXQtcmVhY3QtYXBwIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4x
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0g
ICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tY2xhc3MtcHJvcGVydGllcyI6ICI2LjExLjUiLAotICAgICAgICAgICAgImJhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tb2JqZWN0LXJlc3Qtc3ByZWFkIjogIjYuOC4wIiwKLSAgICAgICAgICAgICJi
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWNvbnN0YW50LWVsZW1lbnRzIjogIjYuOS4xIiwK
LSAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1zZWxmIjogIjYu
MTEuMCIsCi0gICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtc291
cmNlIjogIjYuOS4wIiwKLSAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlZ2Vu
ZXJhdG9yIjogIjYuMTQuMCIsCi0gICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1y
dW50aW1lIjogIjYuMTUuMCIsCi0gICAgICAgICAgICAiYmFiZWwtcHJlc2V0LWxhdGVzdCI6ICI2
LjE0LjAiLAotICAgICAgICAgICAgImJhYmVsLXByZXNldC1yZWFjdCI6ICI2LjExLjEiLAotICAg
ICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgotICAgICAgICAgIH0sCi0gICAgICAg
ICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJhbWRlZmluZSI6IHsKLSAgICAgICAg
ICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
ImFuc2ktcmVnZXgiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKLSAgICAg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICJhbnNpLXN0eWxlcyI6IHsKLSAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMi4yLjEiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAg
ICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImJhYmVs
LWNvZGUtZnJhbWUiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTEuMCIsCi0gICAg
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0g
ICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAiYmFiZWwtcnVudGlt
ZSI6ICI2LjExLjYiLAotICAgICAgICAgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCi0gICAgICAg
ICAgICAgICAgImVzdXRpbHMiOiAiMi4wLjIiLAotICAgICAgICAgICAgICAgICJqcy10b2tlbnMi
OiAiMi4wLjAiCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAi
YmFiZWwtY29yZSI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiNi4xNC4wIiwKLSAgICAg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICJiYWJlbC1jb2RlLWZy
YW1lIjogIjYuMTEuMCIsCi0gICAgICAgICAgICAgICAgImJhYmVsLWdlbmVyYXRvciI6ICI2LjE0
LjAiLAotICAgICAgICAgICAgICAgICJiYWJlbC1oZWxwZXJzIjogIjYuOC4wIiwKLSAgICAgICAg
ICAgICAgICAiYmFiZWwtbWVzc2FnZXMiOiAiNi44LjAiLAotICAgICAgICAgICAgICAgICJiYWJl
bC1yZWdpc3RlciI6ICI2LjE0LjAiLAotICAgICAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjog
IjYuMTEuNiIsCi0gICAgICAgICAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogIjYuMTUuMCIsCi0g
ICAgICAgICAgICAgICAgImJhYmVsLXRyYXZlcnNlIjogIjYuMTUuMCIsCi0gICAgICAgICAgICAg
ICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIsCi0gICAgICAgICAgICAgICAgImJhYnlsb24iOiAi
Ni4xMS4yIiwKLSAgICAgICAgICAgICAgICAiY29udmVydC1zb3VyY2UtbWFwIjogIjEuMy4wIiwK
LSAgICAgICAgICAgICAgICAiZGVidWciOiAiMi4yLjAiLAotICAgICAgICAgICAgICAgICJqc29u
NSI6ICIwLjQuMCIsCi0gICAgICAgICAgICAgICAgImxvZGFzaCI6ICI0LjE2LjIiLAotICAgICAg
ICAgICAgICAgICJtaW5pbWF0Y2giOiAiMy4wLjMiLAotICAgICAgICAgICAgICAgICJwYXRoLWV4
aXN0cyI6ICIxLjAuMCIsCi0gICAgICAgICAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUiOiAiMS4w
LjAiLAotICAgICAgICAgICAgICAgICJwcml2YXRlIjogIjAuMS42IiwKLSAgICAgICAgICAgICAg
ICAic2hlYmFuZy1yZWdleCI6ICIxLjAuMCIsCi0gICAgICAgICAgICAgICAgInNsYXNoIjogIjEu
MC4wIiwKLSAgICAgICAgICAgICAgICAic291cmNlLW1hcCI6ICIwLjUuNiIKLSAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJiYWJlbC1nZW5lcmF0b3IiOiB7Ci0g
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTQuMCIsCi0gICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1
aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAiYmFiZWwtbWVzc2FnZXMiOiAiNi44LjAiLAotICAg
ICAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCi0gICAgICAgICAgICAgICAg
ImJhYmVsLXR5cGVzIjogIjYuMTUuMCIsCi0gICAgICAgICAgICAgICAgImRldGVjdC1pbmRlbnQi
OiAiMy4wLjEiLAotICAgICAgICAgICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIiwKLSAgICAgICAg
ICAgICAgICAic291cmNlLW1hcCI6ICIwLjUuNiIKLSAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICJiYWJlbC1oZWxwZXJzIjogewotICAgICAgICAgICAgICAidmVy
c2lvbiI6ICI2LjguMCIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAg
ICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAotICAgICAgICAgICAgICAgICJiYWJl
bC10ZW1wbGF0ZSI6ICI2LjE1LjAiCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAiYmFiZWwtbWVzc2FnZXMiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjYuOC4wIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAg
ICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICJiYWJlbC1yZWdpc3RlciI6IHsKLSAgICAgICAgICAgICAgInZlcnNp
b24iOiAiNi4xNC4wIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAg
ICAgICAgICJiYWJlbC1jb3JlIjogIjYuMTQuMCIsCi0gICAgICAgICAgICAgICAgImJhYmVsLXJ1
bnRpbWUiOiAiNi4xMS42IiwKLSAgICAgICAgICAgICAgICAiY29yZS1qcyI6ICIyLjQuMSIsCi0g
ICAgICAgICAgICAgICAgImhvbWUtb3ItdG1wIjogIjEuMC4wIiwKLSAgICAgICAgICAgICAgICAi
bG9kYXNoIjogIjQuMTYuMiIsCi0gICAgICAgICAgICAgICAgIm1rZGlycCI6ICIwLjUuMSIsCi0g
ICAgICAgICAgICAgICAgInBhdGgtZXhpc3RzIjogIjEuMC4wIiwKLSAgICAgICAgICAgICAgICAi
c291cmNlLW1hcC1zdXBwb3J0IjogIjAuMi4xMCIKLSAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogewotICAgICAgICAgICAgICAidmVy
c2lvbiI6ICI2LjExLjYiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAg
ICAgICAgICAgImNvcmUtanMiOiAiMi40LjEiLAotICAgICAgICAgICAgICAgICJyZWdlbmVyYXRv
ci1ydW50aW1lIjogIjAuOS41IgotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAg
ICAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICI2
LjE1LjAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJk
ZXYiOiB0cnVlLAotICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAg
ImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKLSAgICAgICAgICAgICAgICAiYmFiZWwtdHJhdmVy
c2UiOiAiNi4xNS4wIiwKLSAgICAgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIiwK
LSAgICAgICAgICAgICAgICAiYmFieWxvbiI6ICI2LjExLjIiLAotICAgICAgICAgICAgICAgICJs
b2Rhc2giOiAiNC4xNi4yIgotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAg
ICAgICAgImJhYmVsLXRyYXZlcnNlIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICI2LjE1
LjAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYi
OiB0cnVlLAotICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgImJh
YmVsLWNvZGUtZnJhbWUiOiAiNi4xMS4wIiwKLSAgICAgICAgICAgICAgICAiYmFiZWwtbWVzc2Fn
ZXMiOiAiNi44LjAiLAotICAgICAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIs
Ci0gICAgICAgICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIsCi0gICAgICAgICAgICAg
ICAgImJhYnlsb24iOiAiNi4xMS4yIiwKLSAgICAgICAgICAgICAgICAiZGVidWciOiAiMi4yLjAi
LAotICAgICAgICAgICAgICAgICJnbG9iYWxzIjogIjguMTguMCIsCi0gICAgICAgICAgICAgICAg
ImludmFyaWFudCI6ICIyLjIuMSIsCi0gICAgICAgICAgICAgICAgImxvZGFzaCI6ICI0LjE2LjIi
Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiYmFiZWwtdHlw
ZXMiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTUuMCIsCi0gICAgICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjEx
LjYiLAotICAgICAgICAgICAgICAgICJlc3V0aWxzIjogIjIuMC4yIiwKLSAgICAgICAgICAgICAg
ICAibG9kYXNoIjogIjQuMTYuMiIsCi0gICAgICAgICAgICAgICAgInRvLWZhc3QtcHJvcGVydGll
cyI6ICIxLjAuMiIKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICJiYWJ5bG9uIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICI2LjExLjIiLAotICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgImJhbGFuY2VkLW1hdGNoIjogewotICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjQuMiIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiYnJh
Y2UtZXhwYW5zaW9uIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuNiIsCi0gICAg
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0g
ICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAiYmFsYW5jZWQtbWF0
Y2giOiAiMC40LjIiLAotICAgICAgICAgICAgICAgICJjb25jYXQtbWFwIjogIjAuMC4xIgotICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImNoYWxrIjogewotICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJl
cyI6IHsKLSAgICAgICAgICAgICAgICAiYW5zaS1zdHlsZXMiOiAiMi4yLjEiLAotICAgICAgICAg
ICAgICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6ICIxLjAuNSIsCi0gICAgICAgICAgICAgICAg
Imhhcy1hbnNpIjogIjIuMC4wIiwKLSAgICAgICAgICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAu
MSIsCi0gICAgICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjIuMC4wIgotICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImNvbmNhdC1tYXAiOiB7Ci0gICAg
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC4xIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
My4wIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2
IjogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJjb3JlLWpzIjogewotICAgICAg
ICAgICAgICAidmVyc2lvbiI6ICIyLjQuMSIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAiZGVidWciOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4wIiwKLSAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAg
ICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICJtcyI6ICIwLjcuMSIKLSAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJkZXRlY3QtaW5kZW50
IjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMSIsCi0gICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAiZ2V0LXN0ZGluIjogIjQuMC4xIiwKLSAg
ICAgICAgICAgICAgICAibWluaW1pc3QiOiAiMS4yLjAiLAotICAgICAgICAgICAgICAgICJyZXBl
YXRpbmciOiAiMS4xLjMiCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAiZXNjYXBlLXN0cmluZy1yZWdleHAiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMC41IiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJlc3V0aWxzIjogewotICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMiIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAiZ2V0LXN0ZGluIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICI0LjAuMSIsCi0g
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUK
LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiZ2xvYmFscyI6IHsKLSAgICAgICAgICAgICAg
InZlcnNpb24iOiAiOC4xOC4wIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAg
ICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJoYXMt
YW5zaSI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAotICAgICAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAg
ICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgImFuc2ktcmVnZXgiOiAiMi4wLjAi
Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiaG9tZS1vci10
bXAiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAg
ICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICJvcy10bXBkaXIiOiAiMS4wLjEiLAot
ICAgICAgICAgICAgICAgICJ1c2VyLWhvbWUiOiAiMS4xLjEiCi0gICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAiaW52YXJpYW50IjogewotICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIyLjIuMSIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAg
ICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAg
ICAgICAgICAgICAibG9vc2UtZW52aWZ5IjogIjEuMi4wIgotICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgImlzLWZpbml0ZSI6IHsKLSAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjEiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAg
ICAgICAgICAgIm51bWJlci1pcy1uYW4iOiAiMS4wLjAiCi0gICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAianMtdG9rZW5zIjogewotICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIyLjAuMCIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAg
ICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAianNlc2MiOiB7
Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNS4wIiwKLSAgICAgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImpzb241IjogewotICAgICAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjQuMCIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAibG9kYXNoIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICI0LjE2LjIiLAotICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgImxvb3NlLWVudmlmeSI6IHsKLSAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMS4yLjAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAg
ICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICAgICAgICAgImpzLXRva2VucyI6ICIxLjAuMyIKLSAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICAgICAianMtdG9rZW5zIjog
ewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAotICAgICAgICAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAibWluaW1hdGNoIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMyIsCi0gICAg
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0g
ICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAiYnJhY2UtZXhwYW5z
aW9uIjogIjEuMS42IgotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgIm1pbmltaXN0IjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCi0gICAg
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAibWtkaXJwIjogewotICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIwLjUuMSIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAg
ICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICAgICAibWluaW1pc3QiOiAiMC4wLjgiCi0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAgICAgICAgICAgICAgIm1pbmltaXN0IjogewotICAg
ICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjgiLAotICAgICAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAibXMi
OiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNy4xIiwKLSAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICJudW1iZXItaXMtbmFuIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6
ICIxLjAuMCIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAg
ImRldiI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAib3MtdG1wZGlyIjogewot
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCi0gICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAicGF0aC1leGlzdHMiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4w
IiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJwYXRoLWlzLWFic29sdXRlIjogewot
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAicHJpdmF0ZSI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjYiLAot
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVl
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInJlZ2VuZXJhdGUiOiB7Ci0gICAgICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMy4xIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlCi0g
ICAgICAgICAgICB9LAotICAgICAgICAgICAgInJlZ2VuZXJhdG9yLXJ1bnRpbWUiOiB7Ci0gICAg
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuOS41IiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICJyZWdleHB1LWNvcmUiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwK
LSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAicmVxdWlyZXMi
OiB7Ci0gICAgICAgICAgICAgICAgInJlZ2VuZXJhdGUiOiAiMS4zLjEiLAotICAgICAgICAgICAg
ICAgICJyZWdqc2dlbiI6ICIwLjIuMCIsCi0gICAgICAgICAgICAgICAgInJlZ2pzcGFyc2VyIjog
IjAuMS41IgotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInJl
Z2pzZ2VuIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCi0gICAgICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJyZWdqc3Bh
cnNlciI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjUiLAotICAgICAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICAgICAianNlc2MiOiAiMC41LjAiCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAicmVwZWF0aW5nIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIx
LjEuMyIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRl
diI6IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAi
aXMtZmluaXRlIjogIjEuMC4xIgotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAg
ICAgICAgICAgInNoZWJhbmctcmVnZXgiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC4wIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2
IjogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJzbGFzaCI6IHsKLSAgICAgICAg
ICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
InNvdXJjZS1tYXAiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNS42IiwKLSAgICAg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICJzb3VyY2UtbWFwLXN1cHBvcnQiOiB7Ci0gICAgICAg
ICAgICAgICJ2ZXJzaW9uIjogIjAuMi4xMCIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJlcyI6
IHsKLSAgICAgICAgICAgICAgICAic291cmNlLW1hcCI6ICIwLjEuMzIiCi0gICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAgICAgICAgICAgICAgInNv
dXJjZS1tYXAiOiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMzIiLAotICAg
ICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAg
ICAgICJhbWRlZmluZSI6ICIxLjAuMCIKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3Ry
aXAtYW5zaSI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjEiLAotICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAg
ICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgImFuc2ktcmVnZXgiOiAiMi4w
LjAiCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3VwcG9y
dHMtY29sb3IiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKLSAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICJ0by1mYXN0LXByb3BlcnRpZXMiOiB7Ci0gICAgICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAot
ICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJ1
c2VyLWhvbWUiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKLSAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAg
ICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJhYmVsLXJlZ2lzdGVy
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTQuMCIsCi0gICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsK
LSAgICAgICAgICAgICJiYWJlbC1jb3JlIjogIjYuMTQuMCIsCi0gICAgICAgICAgICAiYmFiZWwt
cnVudGltZSI6ICI2LjExLjYiLAotICAgICAgICAgICAgImNvcmUtanMiOiAiMi40LjEiLAotICAg
ICAgICAgICAgImhvbWUtb3ItdG1wIjogIjEuMC4wIiwKLSAgICAgICAgICAgICJsb2Rhc2giOiAi
NC4xNi4yIiwKLSAgICAgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAotICAgICAgICAgICAgInBh
dGgtZXhpc3RzIjogIjEuMC4wIiwKLSAgICAgICAgICAgICJzb3VyY2UtbWFwLXN1cHBvcnQiOiAi
MC4yLjEwIgotICAgICAgICAgIH0sCi0gICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAg
ICAgICAgICJwYXRoLWV4aXN0cyI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAi
LAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0
cnVlCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiYmFi
ZWwtcnVudGltZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI2LjExLjYiLAotICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVx
dWlyZXMiOiB7Ci0gICAgICAgICAgICAiY29yZS1qcyI6ICIyLjQuMSIsCi0gICAgICAgICAgICAi
cmVnZW5lcmF0b3ItcnVudGltZSI6ICIwLjkuNSIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0g
ICAgICAgICJiYWJlbC10ZW1wbGF0ZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI2LjE1LjAi
LAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAg
ICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjEx
LjYiLAotICAgICAgICAgICAgImJhYmVsLXRyYXZlcnNlIjogIjYuMTUuMCIsCi0gICAgICAgICAg
ICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIiwKLSAgICAgICAgICAgICJiYWJ5bG9uIjogIjYuMTEu
MiIsCi0gICAgICAgICAgICAibG9kYXNoIjogIjQuMTYuMiIKLSAgICAgICAgICB9Ci0gICAgICAg
IH0sCi0gICAgICAgICJiYWJlbC10cmF2ZXJzZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI2
LjE1LjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1
ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYmFiZWwtY29kZS1mcmFt
ZSI6ICI2LjExLjAiLAotICAgICAgICAgICAgImJhYmVsLW1lc3NhZ2VzIjogIjYuOC4wIiwKLSAg
ICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCi0gICAgICAgICAgICAiYmFiZWwt
dHlwZXMiOiAiNi4xNS4wIiwKLSAgICAgICAgICAgICJiYWJ5bG9uIjogIjYuMTEuMiIsCi0gICAg
ICAgICAgICAiZGVidWciOiAiMi4yLjAiLAotICAgICAgICAgICAgImdsb2JhbHMiOiAiOC4xOC4w
IiwKLSAgICAgICAgICAgICJpbnZhcmlhbnQiOiAiMi4yLjEiLAotICAgICAgICAgICAgImxvZGFz
aCI6ICI0LjE2LjIiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiYmFiZWwtdHlw
ZXMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNi4xNS4wIiwKLSAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjog
ewotICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKLSAgICAgICAgICAgICJl
c3V0aWxzIjogIjIuMC4yIiwKLSAgICAgICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIiwKLSAgICAg
ICAgICAgICJ0by1mYXN0LXByb3BlcnRpZXMiOiAiMS4wLjIiCi0gICAgICAgICAgfQotICAgICAg
ICB9LAotICAgICAgICAiYmFieWxvbiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI2LjExLjIi
LAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAg
ICAgICB9LAotICAgICAgICAiYmFsYW5jZWQtbWF0Y2giOiB7Ci0gICAgICAgICAgInZlcnNpb24i
OiAiMC40LjIiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2Ijog
dHJ1ZQotICAgICAgICB9LAotICAgICAgICAiQmFzZTY0IjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMi4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImJhc2U2NC1qcyI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIxLjIuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJk
ZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJiYXRjaCI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIwLjUuMyIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJk
ZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJiY3J5cHQtcGJrZGYiOiB7Ci0gICAgICAg
ICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAotICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJ0d2VldG5hY2wiOiAiMC4xNC4zIgotICAgICAg
ICAgIH0sCi0gICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJ0d2VldG5h
Y2wiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMTQuMyIsCi0gICAgICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAg
ICAgICJvcHRpb25hbCI6IHRydWUKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAg
IH0sCi0gICAgICAgICJiaWcuanMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMy4xLjMiLAot
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAg
ICB9LAotICAgICAgICAiYmluYXJ5LWV4dGVuc2lvbnMiOiB7Ci0gICAgICAgICAgInZlcnNpb24i
OiAiMS42LjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2Ijog
dHJ1ZQotICAgICAgICB9LAotICAgICAgICAiYmwiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAi
MS4xLjIiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1
ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAicmVhZGFibGUtc3RyZWFt
IjogIjIuMC42IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJsdWViaXJkIjog
ewotICAgICAgICAgICJ2ZXJzaW9uIjogIjMuNC42IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImJvb2xiYXNl
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImJvb20i
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4xMC4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewot
ICAgICAgICAgICAgImhvZWsiOiAiMi4xNi4zIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAg
ICAgICAgImJyYWNlLWV4cGFuc2lvbiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuNiIs
Ci0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJiYWxhbmNlZC1tYXRjaCI6ICIwLjQu
MiIsCi0gICAgICAgICAgICAiY29uY2F0LW1hcCI6ICIwLjAuMSIKLSAgICAgICAgICB9Ci0gICAg
ICAgIH0sCi0gICAgICAgICJicmFjZXMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS44LjUi
LAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAg
ICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiZXhwYW5kLXJhbmdlIjogIjEuOC4y
IiwKLSAgICAgICAgICAgICJwcmVzZXJ2ZSI6ICIwLjIuMCIsCi0gICAgICAgICAgICAicmVwZWF0
LWVsZW1lbnQiOiAiMS4xLjIiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiYnJv
d3Nlci1yZXNvbHZlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMTEuMiIsCi0gICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJyZXNvbHZlIjogIjEuMS43IgotICAgICAgICAgIH0K
LSAgICAgICAgfSwKLSAgICAgICAgImJyb3dzZXJpZnktemxpYiI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIwLjEuNCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJk
ZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJwYWtvIjog
IjAuMi45IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImJyb3dzZXJzbGlzdCI6
IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuNiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAg
ICAgICAgICAgICJjYW5pdXNlLWRiIjogIjEuMC4zMDAwMDU0MCIKLSAgICAgICAgICB9Ci0gICAg
ICAgIH0sCi0gICAgICAgICJic2VyIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwK
LSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAg
ICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgIm5vZGUtaW50NjQiOiAiMC40LjAiCi0g
ICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiYnVmZmVyIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjQuOS4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJhc2U2
NC1qcyI6ICIxLjIuMCIsCi0gICAgICAgICAgICAiaWVlZTc1NCI6ICIxLjEuNiIsCi0gICAgICAg
ICAgICAiaXNhcnJheSI6ICIxLjAuMCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAg
ICJidWlsdGluLW1vZHVsZXMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9
LAotICAgICAgICAiYnl0ZXMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4zLjAiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9
LAotICAgICAgICAiY2FsbGVyLXBhdGgiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4xLjAi
LAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAg
ICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiY2FsbHNpdGVzIjogIjAuMi4wIgot
ICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImNhbGxzaXRlcyI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjIuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAg
ICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJjYW1lbC1jYXNlIjogewotICAg
ICAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0g
ICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAg
ICAgIm5vLWNhc2UiOiAiMi4zLjAiLAotICAgICAgICAgICAgInVwcGVyLWNhc2UiOiAiMS4xLjMi
Ci0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiY2FtZWxjYXNlIjogewotICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMi4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAg
ICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImNhbml1c2UtZGIiOiB7Ci0g
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjMwMDAwNTQwIiwKLSAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImNhcmRp
bmFsIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjog
ewotICAgICAgICAgICAgImFuc2ljb2xvcnMiOiAiMC4yLjEiLAotICAgICAgICAgICAgInJlZGV5
ZWQiOiAiMS4wLjAiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiY2FzZS1zZW5z
aXRpdmUtcGF0aHMtd2VicGFjay1wbHVnaW4iOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4x
LjQiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQot
ICAgICAgICB9LAotICAgICAgICAiY2FzZWxlc3MiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAi
MC4xMS4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRy
dWUKLSAgICAgICAgfSwKLSAgICAgICAgImNlbnRlci1hbGlnbiI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIwLjEuMyIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJk
ZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJhbGlnbi10
ZXh0IjogIjAuMS40IiwKLSAgICAgICAgICAgICJsYXp5LWNhY2hlIjogIjEuMC40IgotICAgICAg
ICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImNoYWxrIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMS4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImFuc2ktc3R5bGVz
IjogIjIuMi4xIiwKLSAgICAgICAgICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6ICIxLjAuNSIs
Ci0gICAgICAgICAgICAiaGFzLWFuc2kiOiAiMi4wLjAiLAotICAgICAgICAgICAgInN0cmlwLWFu
c2kiOiAiMy4wLjEiLAotICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjIuMC4wIgotICAg
ICAgICAgIH0sCi0gICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJzdXBw
b3J0cy1jb2xvciI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAotICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiY2hhbmdlLWNhc2Ui
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMy4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0g
ICAgICAgICAgICAiY2FtZWwtY2FzZSI6ICIzLjAuMCIsCi0gICAgICAgICAgICAiY29uc3RhbnQt
Y2FzZSI6ICIyLjAuMCIsCi0gICAgICAgICAgICAiZG90LWNhc2UiOiAiMi4xLjAiLAotICAgICAg
ICAgICAgImhlYWRlci1jYXNlIjogIjEuMC4wIiwKLSAgICAgICAgICAgICJpcy1sb3dlci1jYXNl
IjogIjEuMS4zIiwKLSAgICAgICAgICAgICJpcy11cHBlci1jYXNlIjogIjEuMS4yIiwKLSAgICAg
ICAgICAgICJsb3dlci1jYXNlIjogIjEuMS4zIiwKLSAgICAgICAgICAgICJsb3dlci1jYXNlLWZp
cnN0IjogIjEuMC4yIiwKLSAgICAgICAgICAgICJuby1jYXNlIjogIjIuMy4wIiwKLSAgICAgICAg
ICAgICJwYXJhbS1jYXNlIjogIjIuMS4wIiwKLSAgICAgICAgICAgICJwYXNjYWwtY2FzZSI6ICIy
LjAuMCIsCi0gICAgICAgICAgICAicGF0aC1jYXNlIjogIjIuMS4wIiwKLSAgICAgICAgICAgICJz
ZW50ZW5jZS1jYXNlIjogIjIuMS4wIiwKLSAgICAgICAgICAgICJzbmFrZS1jYXNlIjogIjIuMS4w
IiwKLSAgICAgICAgICAgICJzd2FwLWNhc2UiOiAiMS4xLjIiLAotICAgICAgICAgICAgInRpdGxl
LWNhc2UiOiAiMi4xLjAiLAotICAgICAgICAgICAgInVwcGVyLWNhc2UiOiAiMS4xLjMiLAotICAg
ICAgICAgICAgInVwcGVyLWNhc2UtZmlyc3QiOiAiMS4xLjIiCi0gICAgICAgICAgfQotICAgICAg
ICB9LAotICAgICAgICAiY2hva2lkYXIiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS42LjAi
LAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAg
ICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYW55bWF0Y2giOiAiMS4zLjAiLAot
ICAgICAgICAgICAgImFzeW5jLWVhY2giOiAiMS4wLjEiLAotICAgICAgICAgICAgImZzZXZlbnRz
IjogIjEuMC4xNCIsCi0gICAgICAgICAgICAiZ2xvYi1wYXJlbnQiOiAiMi4wLjAiLAotICAgICAg
ICAgICAgImluaGVyaXRzIjogIjIuMC4zIiwKLSAgICAgICAgICAgICJpcy1iaW5hcnktcGF0aCI6
ICIxLjAuMSIsCi0gICAgICAgICAgICAiaXMtZ2xvYiI6ICIyLjAuMSIsCi0gICAgICAgICAgICAi
cGF0aC1pcy1hYnNvbHV0ZSI6ICIxLjAuMCIsCi0gICAgICAgICAgICAicmVhZGRpcnAiOiAiMi4x
LjAiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewotICAgICAgICAg
ICAgImZzZXZlbnRzIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMTQiLAotICAg
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlLAot
ICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAotICAgICAgICAgICAgICAicmVxdWlyZXMi
OiB7Ci0gICAgICAgICAgICAgICAgIm5hbiI6ICIyLjQuMCIsCi0gICAgICAgICAgICAgICAgIm5v
ZGUtcHJlLWd5cCI6ICIwLjYuMjkiCi0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICJk
ZXBlbmRlbmNpZXMiOiB7Ci0gICAgICAgICAgICAgICAgImFiYnJldiI6IHsKLSAgICAgICAgICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMC45IiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAg
Im9wdGlvbmFsIjogdHJ1ZQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImFu
c2ktcmVnZXgiOiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCi0gICAg
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImFuc2ktc3R5bGVzIjog
ewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAotICAgICAgICAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAg
ICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAiYXByb2JhIjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjQiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAg
ICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiYXJlLXdlLXRoZXJlLXlldCI6IHsKLSAg
ICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKLSAgICAgICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6
IHsKLSAgICAgICAgICAgICAgICAgICAgImRlbGVnYXRlcyI6ICIxLjAuMCIsCi0gICAgICAgICAg
ICAgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiAiMi4xLjQiCi0gICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiYXNuMSI6IHsKLSAgICAgICAg
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4zIiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
ImFzc2VydC1wbHVzIjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjAiLAot
ICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRl
diI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAiYXN5bmMiOiB7Ci0gICAgICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjUuMiIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0g
ICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJhd3Mtc2lnbjIi
OiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuMCIsCi0gICAgICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKLSAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICJhd3M0IjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS40
LjEiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAg
ICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiYmFsYW5jZWQtbWF0Y2giOiB7Ci0gICAg
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuMiIsCi0gICAgICAgICAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgImJsIjogewotICAgICAgICAgICAgICAgICAgInZlcnNp
b24iOiAiMS4xLjIiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAg
ICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlLAotICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICAg
ICAicmVhZGFibGUtc3RyZWFtIjogIjIuMC42IgotICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJyZWFk
YWJsZS1zdHJlYW0iOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjYi
LAotICAgICAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlLAotICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJjb3JlLXV0aWwtaXMiOiAiMS4wLjIiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgImluaGVyaXRzIjogIjIuMC4xIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpc2FycmF5
IjogIjEuMC4wIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJwcm9jZXNzLW5leHRpY2stYXJn
cyI6ICIxLjAuNyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nX2RlY29kZXIiOiAi
MC4xMC4zMSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAidXRpbC1kZXByZWNhdGUiOiAiMS4w
LjIiCi0gICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiYmxv
Y2stc3RyZWFtIjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjkiLAotICAg
ICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAg
ICAgICJpbmhlcml0cyI6ICIyLjAuMSIKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICJib29tIjogewotICAgICAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMi4xMC4xIiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgInJlcXVpcmVz
IjogewotICAgICAgICAgICAgICAgICAgICAiaG9layI6ICIyLjE2LjMiCi0gICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiYnJhY2UtZXhwYW5z
aW9uIjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjUiLAotICAgICAgICAg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUs
Ci0gICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJi
YWxhbmNlZC1tYXRjaCI6ICIwLjQuMiIsCi0gICAgICAgICAgICAgICAgICAgICJjb25jYXQtbWFw
IjogIjAuMC4xIgotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgImJ1ZmZlci1zaGltcyI6IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4wIiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAg
ICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAiY2FzZWxlc3MiOiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjExLjAiLAot
ICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRl
diI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAiY2hhbGsiOiB7Ci0gICAgICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjEuMyIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0g
ICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAg
ICAgICAgICJhbnNpLXN0eWxlcyI6ICIyLjIuMSIsCi0gICAgICAgICAgICAgICAgICAgICJlc2Nh
cGUtc3RyaW5nLXJlZ2V4cCI6ICIxLjAuNSIsCi0gICAgICAgICAgICAgICAgICAgICJoYXMtYW5z
aSI6ICIyLjAuMCIsCi0gICAgICAgICAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4xIiwK
LSAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjIuMC4wIgotICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImNvZGUtcG9p
bnQtYXQiOiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAg
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZSwKLSAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAgICAg
Im51bWJlci1pcy1uYW4iOiAiMS4wLjAiCi0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAiY29tYmluZWQtc3RyZWFtIjogewotICAgICAgICAg
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAg
ICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJkZWxheWVkLXN0cmVhbSI6ICIx
LjAuMCIKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICJjb21tYW5kZXIiOiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjku
MCIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCi0gICAg
ICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJncmFjZWZ1
bC1yZWFkbGluayI6ICIxLjAuMSIKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgICJjb25jYXQtbWFwIjogewotICAgICAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMC4wLjEiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAot
ICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICJjb25zb2xlLWNvbnRyb2wtc3RyaW5ncyI6IHsKLSAgICAgICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMS4wIiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
LSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAiY29yZS11dGlsLWlzIjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjIiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAg
ICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICJjcnlwdGlsZXMiOiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuNSIsCi0g
ICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2
IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCi0gICAgICAgICAg
ICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJib29tIjogIjIuMTAu
MSIKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgICJkYXNoZGFzaCI6IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMTQuMCIs
Ci0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCi0gICAgICAg
ICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhc3NlcnQtcGx1
cyI6ICIxLjAuMCIKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAiZGVw
ZW5kZW5jaWVzIjogewotICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0LXBsdXMiOiB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICAgICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICJkZWJ1ZyI6IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4wIiwK
LSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKLSAgICAgICAg
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAgICAgIm1zIjogIjAuNy4x
IgotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgImRlZXAtZXh0ZW5kIjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC40LjEi
LAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAg
ImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiZGVsYXllZC1zdHJlYW0iOiB7Ci0gICAgICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgImRlbGVnYXRlcyI6IHsKLSAgICAgICAgICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImVjYy1qc2JuIjog
ewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjEiLAotICAgICAgICAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAg
ICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgInJlcXVp
cmVzIjogewotICAgICAgICAgICAgICAgICAgICAianNibiI6ICIwLjEuMCIKLSAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJlc2NhcGUtc3Ry
aW5nLXJlZ2V4cCI6IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKLSAg
ICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYi
OiB0cnVlLAotICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQotICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgImV4dGVuZCI6IHsKLSAgICAgICAgICAgICAgICAgICJ2
ZXJzaW9uIjogIjMuMC4wIiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImV4dHNwcmludGYi
OiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCi0gICAgICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImZvcmV2ZXItYWdlbnQiOiB7Ci0gICAg
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuMSIsCi0gICAgICAgICAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAg
ICAgICAgICJvcHRpb25hbCI6IHRydWUKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgICJmb3JtLWRhdGEiOiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMC1y
YzQiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAg
ICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAotICAg
ICAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICAgICAiYXN5bmMi
OiAiMS41LjIiLAotICAgICAgICAgICAgICAgICAgICAiY29tYmluZWQtc3RyZWFtIjogIjEuMC41
IiwKLSAgICAgICAgICAgICAgICAgICAgIm1pbWUtdHlwZXMiOiAiMi4xLjExIgotICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImZzLnJlYWxw
YXRoIjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUK
LSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJmc3RyZWFtIjogewotICAgICAg
ICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEwIiwKLSAgICAgICAgICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAg
ICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICAgICAiZ3JhY2VmdWwtZnMiOiAi
NC4xLjQiLAotICAgICAgICAgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjEiLAotICAgICAg
ICAgICAgICAgICAgICAibWtkaXJwIjogIjAuNS4xIiwKLSAgICAgICAgICAgICAgICAgICAgInJp
bXJhZiI6ICIyLjUuMyIKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICJmc3RyZWFtLWlnbm9yZSI6IHsKLSAgICAgICAgICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC41IiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAg
ICAgICAgImZzdHJlYW0iOiAiMS4wLjEwIiwKLSAgICAgICAgICAgICAgICAgICAgImluaGVyaXRz
IjogIjIuMC4xIiwKLSAgICAgICAgICAgICAgICAgICAgIm1pbmltYXRjaCI6ICIzLjAuMiIKLSAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJn
YXVnZSI6IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNi4wIiwKLSAgICAgICAg
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVl
LAotICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFwcm9iYSI6ICIxLjAuNCIsCi0g
ICAgICAgICAgICAgICAgICAgICJjb25zb2xlLWNvbnRyb2wtc3RyaW5ncyI6ICIxLjEuMCIsCi0g
ICAgICAgICAgICAgICAgICAgICJoYXMtY29sb3IiOiAiMC4xLjciLAotICAgICAgICAgICAgICAg
ICAgICAiaGFzLXVuaWNvZGUiOiAiMi4wLjEiLAotICAgICAgICAgICAgICAgICAgICAib2JqZWN0
LWFzc2lnbiI6ICI0LjEuMCIsCi0gICAgICAgICAgICAgICAgICAgICJzaWduYWwtZXhpdCI6ICIz
LjAuMCIsCi0gICAgICAgICAgICAgICAgICAgICJzdHJpbmctd2lkdGgiOiAiMS4wLjEiLAotICAg
ICAgICAgICAgICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIsCi0gICAgICAgICAgICAgICAg
ICAgICJ3aWRlLWFsaWduIjogIjEuMS4wIgotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImdlbmVyYXRlLWZ1bmN0aW9uIjogewotICAgICAg
ICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAotICAgICAgICAgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAiZ2VuZXJhdGUtb2JqZWN0LXByb3BlcnR5IjogewotICAgICAgICAgICAgICAgICAgInZlcnNp
b24iOiAiMS4yLjAiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAg
ICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlLAotICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICAg
ICAiaXMtcHJvcGVydHkiOiAiMS4wLjIiCi0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAiZ2V0cGFzcyI6IHsKLSAgICAgICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuMS42IiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
LSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAg
ICAgICAgICAgImFzc2VydC1wbHVzIjogIjEuMC4wIgotICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJh
c3NlcnQtcGx1cyI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAg
ICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRy
dWUKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImdsb2IiOiB7Ci0gICAgICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICI3LjAuNSIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0g
ICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJyZXF1aXJl
cyI6IHsKLSAgICAgICAgICAgICAgICAgICAgImZzLnJlYWxwYXRoIjogIjEuMC4wIiwKLSAgICAg
ICAgICAgICAgICAgICAgImluZmxpZ2h0IjogIjEuMC41IiwKLSAgICAgICAgICAgICAgICAgICAg
ImluaGVyaXRzIjogIjIuMC4xIiwKLSAgICAgICAgICAgICAgICAgICAgIm1pbmltYXRjaCI6ICIz
LjAuMiIsCi0gICAgICAgICAgICAgICAgICAgICJvbmNlIjogIjEuMy4zIiwKLSAgICAgICAgICAg
ICAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUiOiAiMS4wLjAiCi0gICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiZ3JhY2VmdWwtZnMiOiB7Ci0g
ICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICI0LjEuNCIsCi0gICAgICAgICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImdyYWNlZnVsLXJlYWRsaW5rIjogewotICAgICAg
ICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAotICAgICAgICAgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAiaGFyLXZhbGlkYXRvciI6IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC42
IiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKLSAgICAg
ICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAgICAgImNoYWxrIjog
IjEuMS4zIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmRlciI6ICIyLjkuMCIsCi0gICAg
ICAgICAgICAgICAgICAgICJpcy1teS1qc29uLXZhbGlkIjogIjIuMTMuMSIsCi0gICAgICAgICAg
ICAgICAgICAgICJwaW5raWUtcHJvbWlzZSI6ICIyLjAuMSIKLSAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJoYXMtYW5zaSI6IHsKLSAgICAg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKLSAgICAgICAgICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAg
ICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsK
LSAgICAgICAgICAgICAgICAgICAgImFuc2ktcmVnZXgiOiAiMi4wLjAiCi0gICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiaGFzLWNvbG9yIjog
ewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjciLAotICAgICAgICAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAg
ICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAiaGFzLXVuaWNvZGUiOiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6
ICIyLjAuMSIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUK
LSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJoYXdrIjogewotICAgICAgICAg
ICAgICAgICAgInZlcnNpb24iOiAiMy4xLjMiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgICAgICAgICAiYm9vbSI6ICIyLjEwLjEiLAotICAgICAgICAgICAgICAgICAgICAi
Y3J5cHRpbGVzIjogIjIuMC41IiwKLSAgICAgICAgICAgICAgICAgICAgImhvZWsiOiAiMi4xNi4z
IiwKLSAgICAgICAgICAgICAgICAgICAgInNudHAiOiAiMS4wLjkiCi0gICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiaG9layI6IHsKLSAgICAg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMTYuMyIsCi0gICAgICAgICAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgImh0dHAtc2lnbmF0dXJlIjogewotICAgICAgICAgICAg
ICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAi
b3B0aW9uYWwiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAg
ICAgICAgICAgICAgICAiYXNzZXJ0LXBsdXMiOiAiMC4yLjAiLAotICAgICAgICAgICAgICAgICAg
ICAianNwcmltIjogIjEuMy4wIiwKLSAgICAgICAgICAgICAgICAgICAgInNzaHBrIjogIjEuOC4z
IgotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgImluZmxpZ2h0IjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAot
ICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRl
diI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAg
ICAgICAgICJvbmNlIjogIjEuMy4zIiwKLSAgICAgICAgICAgICAgICAgICAgIndyYXBweSI6ICIx
LjAuMiIKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICJpbmhlcml0cyI6IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4x
IiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiaW5pIjog
ewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4zLjQiLAotICAgICAgICAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAg
ICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiB7Ci0gICAgICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJyZXF1
aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAgICAgIm51bWJlci1pcy1uYW4iOiAiMS4wLjAiCi0g
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAi
aXMtbXktanNvbi12YWxpZCI6IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMTMu
MSIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCi0gICAg
ICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJnZW5lcmF0
ZS1mdW5jdGlvbiI6ICIyLjAuMCIsCi0gICAgICAgICAgICAgICAgICAgICJnZW5lcmF0ZS1vYmpl
Y3QtcHJvcGVydHkiOiAiMS4yLjAiLAotICAgICAgICAgICAgICAgICAgICAianNvbnBvaW50ZXIi
OiAiMi4wLjAiLAotICAgICAgICAgICAgICAgICAgICAieHRlbmQiOiAiNC4wLjEiCi0gICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiaXMtcHJv
cGVydHkiOiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCi0gICAgICAg
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKLSAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICJpcy10eXBlZGFycmF5IjogewotICAgICAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAot
ICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiaXNhcnJheSI6
IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAgICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiaXNzdHJlYW0iOiB7Ci0gICAgICAgICAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjEuMiIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAg
ICJvcHRpb25hbCI6IHRydWUKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJq
b2RpZDI1NTE5IjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAotICAg
ICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAotICAgICAgICAgICAg
ICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICAgICAianNibiI6ICIwLjEuMCIK
LSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICJqc2JuIjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjAiLAotICAgICAg
ICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRy
dWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAianNvbi1zY2hlbWEiOiB7Ci0gICAgICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIwLjIuMiIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0g
ICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJqc29uLXN0cmlu
Z2lmeS1zYWZlIjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiNS4wLjEiLAotICAg
ICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICAianNvbnBvaW50ZXIiOiB7Ci0gICAgICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjAuMCIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRp
b25hbCI6IHRydWUKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJqc3ByaW0i
OiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuMCIsCi0gICAgICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAicmVx
dWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJleHRzcHJpbnRmIjogIjEuMC4yIiwKLSAg
ICAgICAgICAgICAgICAgICAgImpzb24tc2NoZW1hIjogIjAuMi4yIiwKLSAgICAgICAgICAgICAg
ICAgICAgInZlcnJvciI6ICIxLjMuNiIKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICJtaW1lLWRiIjogewotICAgICAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMS4yMy4wIiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
LSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAibWltZS10eXBlcyI6IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuMS4xMSIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAg
ICAgICAgICAgICAgICAgICAgIm1pbWUtZGIiOiAiMS4yMy4wIgotICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIm1pbmltYXRjaCI6IHsKLSAg
ICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4yIiwKLSAgICAgICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAg
ICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICAgICAiYnJhY2UtZXhwYW5z
aW9uIjogIjEuMS41IgotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgIm1pbmltaXN0IjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24i
OiAiMC4wLjgiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAg
ICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICJta2RpcnAiOiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjUuMSIsCi0gICAg
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAg
ICAgIm1pbmltaXN0IjogIjAuMC44IgotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgIm1zIjogewotICAgICAgICAgICAgICAgICAgInZlcnNp
b24iOiAiMC43LjEiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAg
ICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAibm9kZS1wcmUtZ3lwIjog
ewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC42LjI5IiwKLSAgICAgICAgICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAg
ICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJyZXF1
aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAgICAgIm1rZGlycCI6ICIwLjUuMSIsCi0gICAgICAg
ICAgICAgICAgICAgICJub3B0IjogIjMuMC42IiwKLSAgICAgICAgICAgICAgICAgICAgIm5wbWxv
ZyI6ICIzLjEuMiIsCi0gICAgICAgICAgICAgICAgICAgICJyYyI6ICIxLjEuNiIsCi0gICAgICAg
ICAgICAgICAgICAgICJyZXF1ZXN0IjogIjIuNzMuMCIsCi0gICAgICAgICAgICAgICAgICAgICJy
aW1yYWYiOiAiMi41LjMiLAotICAgICAgICAgICAgICAgICAgICAic2VtdmVyIjogIjUuMi4wIiwK
LSAgICAgICAgICAgICAgICAgICAgInRhciI6ICIyLjIuMSIsCi0gICAgICAgICAgICAgICAgICAg
ICJ0YXItcGFjayI6ICIzLjEuNCIKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgICJub2RlLXV1aWQiOiB7Ci0gICAgICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjQuNyIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0g
ICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJub3B0Ijogewot
ICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjYiLAotICAgICAgICAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAg
ICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgInJlcXVpcmVz
IjogewotICAgICAgICAgICAgICAgICAgICAiYWJicmV2IjogIjEuMC45IgotICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIm5wbWxvZyI6IHsK
LSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMS4yIiwKLSAgICAgICAgICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAg
ICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJyZXF1aXJl
cyI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFyZS13ZS10aGVyZS15ZXQiOiAiMS4xLjIiLAot
ICAgICAgICAgICAgICAgICAgICAiY29uc29sZS1jb250cm9sLXN0cmluZ3MiOiAiMS4xLjAiLAot
ICAgICAgICAgICAgICAgICAgICAiZ2F1Z2UiOiAiMi42LjAiLAotICAgICAgICAgICAgICAgICAg
ICAic2V0LWJsb2NraW5nIjogIjIuMC4wIgotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIm51bWJlci1pcy1uYW4iOiB7Ci0gICAgICAgICAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgIm9hdXRoLXNpZ24iOiB7Ci0gICAgICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIwLjguMiIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAg
ICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6
IHRydWUKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJvYmplY3QtYXNzaWdu
IjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiNC4xLjAiLAotICAgICAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0g
ICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAib25jZSI6IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
My4zIiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAg
ICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAg
ICAgICAgICAgICAgICAid3JhcHB5IjogIjEuMC4yIgotICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUiOiB7Ci0g
ICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgInBpbmtpZSI6IHsKLSAgICAgICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjIuMC40IiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
LSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgInBpbmtpZS1w
cm9taXNlIjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAotICAgICAg
ICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRy
dWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAotICAgICAgICAgICAgICAg
ICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICAgICAicGlua2llIjogIjIuMC40Igot
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
InByb2Nlc3MtbmV4dGljay1hcmdzIjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjciLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAg
ICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJx
cyI6IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMi4wIiwKLSAgICAgICAgICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAot
ICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQotICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgInJjIjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4x
LjYiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAg
ICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAotICAg
ICAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICAgICAiZGVlcC1l
eHRlbmQiOiAiMC40LjEiLAotICAgICAgICAgICAgICAgICAgICAiaW5pIjogIjEuMy40IiwKLSAg
ICAgICAgICAgICAgICAgICAgIm1pbmltaXN0IjogIjEuMi4wIiwKLSAgICAgICAgICAgICAgICAg
ICAgInN0cmlwLWpzb24tY29tbWVudHMiOiAiMS4wLjQiCi0gICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICAgICAgICAg
Im1pbmltaXN0IjogewotICAgICAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwK
LSAgICAgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogewotICAgICAgICAg
ICAgICAgICAgInZlcnNpb24iOiAiMi4xLjQiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAg
ICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJidWZmZXItc2hpbXMiOiAiMS4w
LjAiLAotICAgICAgICAgICAgICAgICAgICAiY29yZS11dGlsLWlzIjogIjEuMC4yIiwKLSAgICAg
ICAgICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4xIiwKLSAgICAgICAgICAgICAgICAgICAg
ImlzYXJyYXkiOiAiMS4wLjAiLAotICAgICAgICAgICAgICAgICAgICAicHJvY2Vzcy1uZXh0aWNr
LWFyZ3MiOiAiMS4wLjciLAotICAgICAgICAgICAgICAgICAgICAic3RyaW5nX2RlY29kZXIiOiAi
MC4xMC4zMSIsCi0gICAgICAgICAgICAgICAgICAgICJ1dGlsLWRlcHJlY2F0ZSI6ICIxLjAuMiIK
LSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICJyZXF1ZXN0IjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi43My4wIiwKLSAg
ICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYi
OiB0cnVlLAotICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKLSAgICAgICAgICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAgICAgImF3cy1zaWduMiI6ICIw
LjYuMCIsCi0gICAgICAgICAgICAgICAgICAgICJhd3M0IjogIjEuNC4xIiwKLSAgICAgICAgICAg
ICAgICAgICAgImJsIjogIjEuMS4yIiwKLSAgICAgICAgICAgICAgICAgICAgImNhc2VsZXNzIjog
IjAuMTEuMCIsCi0gICAgICAgICAgICAgICAgICAgICJjb21iaW5lZC1zdHJlYW0iOiAiMS4wLjUi
LAotICAgICAgICAgICAgICAgICAgICAiZXh0ZW5kIjogIjMuMC4wIiwKLSAgICAgICAgICAgICAg
ICAgICAgImZvcmV2ZXItYWdlbnQiOiAiMC42LjEiLAotICAgICAgICAgICAgICAgICAgICAiZm9y
bS1kYXRhIjogIjEuMC4wLXJjNCIsCi0gICAgICAgICAgICAgICAgICAgICJoYXItdmFsaWRhdG9y
IjogIjIuMC42IiwKLSAgICAgICAgICAgICAgICAgICAgImhhd2siOiAiMy4xLjMiLAotICAgICAg
ICAgICAgICAgICAgICAiaHR0cC1zaWduYXR1cmUiOiAiMS4xLjEiLAotICAgICAgICAgICAgICAg
ICAgICAiaXMtdHlwZWRhcnJheSI6ICIxLjAuMCIsCi0gICAgICAgICAgICAgICAgICAgICJpc3N0
cmVhbSI6ICIwLjEuMiIsCi0gICAgICAgICAgICAgICAgICAgICJqc29uLXN0cmluZ2lmeS1zYWZl
IjogIjUuMC4xIiwKLSAgICAgICAgICAgICAgICAgICAgIm1pbWUtdHlwZXMiOiAiMi4xLjExIiwK
LSAgICAgICAgICAgICAgICAgICAgIm5vZGUtdXVpZCI6ICIxLjQuNyIsCi0gICAgICAgICAgICAg
ICAgICAgICJvYXV0aC1zaWduIjogIjAuOC4yIiwKLSAgICAgICAgICAgICAgICAgICAgInFzIjog
IjYuMi4wIiwKLSAgICAgICAgICAgICAgICAgICAgInN0cmluZ3N0cmVhbSI6ICIwLjAuNSIsCi0g
ICAgICAgICAgICAgICAgICAgICJ0b3VnaC1jb29raWUiOiAiMi4yLjIiLAotICAgICAgICAgICAg
ICAgICAgICAidHVubmVsLWFnZW50IjogIjAuNC4zIgotICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgInJpbXJhZiI6IHsKLSAgICAgICAgICAg
ICAgICAgICJ2ZXJzaW9uIjogIjIuNS4zIiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAg
InJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICAgICAiZ2xvYiI6ICI3LjAuNSIKLSAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJzZW12
ZXIiOiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICI1LjIuMCIsCi0gICAgICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwK
LSAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKLSAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICJzZXQtYmxvY2tpbmciOiB7Ci0gICAgICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIyLjAuMCIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAg
ICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6
IHRydWUKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJzaWduYWwtZXhpdCI6
IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKLSAgICAgICAgICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAg
ICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQotICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgInNudHAiOiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAu
OSIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCi0gICAg
ICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJob2VrIjog
IjIuMTYuMyIKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICJzc2hwayI6IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuOC4z
IiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKLSAgICAg
ICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFzbjEiOiAi
MC4yLjMiLAotICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0LXBsdXMiOiAiMS4wLjAiLAotICAg
ICAgICAgICAgICAgICAgICAiZGFzaGRhc2giOiAiMS4xNC4wIiwKLSAgICAgICAgICAgICAgICAg
ICAgImVjYy1qc2JuIjogIjAuMS4xIiwKLSAgICAgICAgICAgICAgICAgICAgImdldHBhc3MiOiAi
MC4xLjYiLAotICAgICAgICAgICAgICAgICAgICAiam9kaWQyNTUxOSI6ICIxLjAuMiIsCi0gICAg
ICAgICAgICAgICAgICAgICJqc2JuIjogIjAuMS4wIiwKLSAgICAgICAgICAgICAgICAgICAgInR3
ZWV0bmFjbCI6ICIwLjEzLjMiCi0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFzc2VydC1wbHVzIjog
ewotICAgICAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAic3RyaW5nX2RlY29kZXIiOiB7Ci0gICAgICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIwLjEwLjMxIiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAic3RyaW5nLXdpZHRoIjogewotICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjEiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAg
ICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICAgICAgICAgICAgICJjb2RlLXBvaW50LWF0IjogIjEuMC4wIiwKLSAgICAgICAgICAgICAg
ICAgICAgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIjEuMC4wIiwKLSAgICAgICAgICAgICAg
ICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiCi0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAic3RyaW5nc3RyZWFtIjogewotICAgICAgICAg
ICAgICAgICAgInZlcnNpb24iOiAiMC4wLjUiLAotICAgICAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAi
c3RyaXAtYW5zaSI6IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKLSAg
ICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYi
OiB0cnVlLAotICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAg
ICAgICAiYW5zaS1yZWdleCI6ICIyLjAuMCIKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICJzdHJpcC1qc29uLWNvbW1lbnRzIjogewotICAg
ICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjQiLAotICAgICAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAg
ICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAic3VwcG9ydHMtY29sb3IiOiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIy
LjAuMCIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKLSAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJ0YXIiOiB7Ci0gICAgICAgICAgICAg
ICAgICAidmVyc2lvbiI6ICIyLjIuMSIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAgICAgImJsb2NrLXN0cmVhbSI6ICIwLjAuOSIs
Ci0gICAgICAgICAgICAgICAgICAgICJmc3RyZWFtIjogIjEuMC4xMCIsCi0gICAgICAgICAgICAg
ICAgICAgICJpbmhlcml0cyI6ICIyLjAuMSIKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICJ0YXItcGFjayI6IHsKLSAgICAgICAgICAgICAg
ICAgICJ2ZXJzaW9uIjogIjMuMS40IiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICAgICAgICAgImRlYnVnIjogIjIuMi4wIiwKLSAgICAgICAgICAgICAgICAgICAgImZzdHJl
YW0iOiAiMS4wLjEwIiwKLSAgICAgICAgICAgICAgICAgICAgImZzdHJlYW0taWdub3JlIjogIjEu
MC41IiwKLSAgICAgICAgICAgICAgICAgICAgIm9uY2UiOiAiMS4zLjMiLAotICAgICAgICAgICAg
ICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogIjIuMS40IiwKLSAgICAgICAgICAgICAgICAgICAg
InJpbXJhZiI6ICIyLjUuMyIsCi0gICAgICAgICAgICAgICAgICAgICJ0YXIiOiAiMi4yLjEiLAot
ICAgICAgICAgICAgICAgICAgICAidWlkLW51bWJlciI6ICIwLjAuNiIKLSAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJ0b3VnaC1jb29raWUi
OiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjIuMiIsCi0gICAgICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKLSAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICJ0dW5uZWwtYWdlbnQiOiB7Ci0gICAgICAgICAgICAgICAgICAidmVyc2lv
biI6ICIwLjQuMyIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRy
dWUKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJ0d2VldG5hY2wiOiB7Ci0g
ICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjEzLjMiLAotICAgICAgICAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAg
ICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAidWlkLW51bWJlciI6IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
MC42IiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAg
ICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQotICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgInV0aWwtZGVwcmVjYXRlIjogewotICAg
ICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAotICAgICAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICJ2ZXJyb3IiOiB7Ci0gICAgICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjMuNiIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0g
ICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAg
ICAgICAgICJleHRzcHJpbnRmIjogIjEuMC4yIgotICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIndpZGUtYWxpZ24iOiB7Ci0gICAgICAgICAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCi0gICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAg
ICJvcHRpb25hbCI6IHRydWUsCi0gICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICAgICAgICAgICAgICJzdHJpbmctd2lkdGgiOiAiMS4wLjEiCi0gICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAid3JhcHB5IjogewotICAg
ICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAotICAgICAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICJ4dGVuZCI6IHsKLSAgICAgICAgICAgICAgICAgICJ2
ZXJzaW9uIjogIjQuMC4xIiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImNpcmN1bGFyLWpzb24iOiB7Ci0g
ICAgICAgICAgInZlcnNpb24iOiAiMC4zLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
LSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiY2xhcCI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAot
ICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICJjaGFsayI6ICIxLjEuMyIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJj
bGVhbi1jc3MiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMy40LjIwIiwKLSAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVp
cmVzIjogewotICAgICAgICAgICAgImNvbW1hbmRlciI6ICIyLjguMSIsCi0gICAgICAgICAgICAi
c291cmNlLW1hcCI6ICIwLjQuNCIKLSAgICAgICAgICB9LAotICAgICAgICAgICJkZXBlbmRlbmNp
ZXMiOiB7Ci0gICAgICAgICAgICAic291cmNlLW1hcCI6IHsKLSAgICAgICAgICAgICAgInZlcnNp
b24iOiAiMC40LjQiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAg
ICAgICAgImFtZGVmaW5lIjogIjEuMC4wIgotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiY2xpLWN1cnNvciI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAg
ICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAg
ICJyZXN0b3JlLWN1cnNvciI6ICIxLjAuMSIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAg
ICAgICJjbGktdGFibGUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4zLjEiLAotICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAi
cmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiY29sb3JzIjogIjEuMC4zIgotICAgICAgICAgIH0s
Ci0gICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJjb2xvcnMiOiB7Ci0g
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAgfQotICAgICAg
ICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImNsaS11c2FnZSI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIwLjEuNCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJk
ZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJtYXJrZWQi
OiAiMC4zLjYiLAotICAgICAgICAgICAgIm1hcmtlZC10ZXJtaW5hbCI6ICIxLjYuMiIKLSAgICAg
ICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJjbGktd2lkdGgiOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMi4xLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAi
ZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiY2xpdWkiOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMi4xLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiY2VudGVy
LWFsaWduIjogIjAuMS4zIiwKLSAgICAgICAgICAgICJyaWdodC1hbGlnbiI6ICIwLjEuMyIsCi0g
ICAgICAgICAgICAid29yZHdyYXAiOiAiMC4wLjIiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAi
ZGVwZW5kZW5jaWVzIjogewotICAgICAgICAgICAgIndvcmR3cmFwIjogewotICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjAuMiIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAg
ICAgIH0sCi0gICAgICAgICJjbG9uZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIs
Ci0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAg
ICAgIH0sCi0gICAgICAgICJjbyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI0LjYuMCIsCi0g
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAg
IH0sCi0gICAgICAgICJjb2EiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAg
ICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAicSI6ICIxLjQuMSIKLSAgICAgICAgICB9Ci0g
ICAgICAgIH0sCi0gICAgICAgICJjb2RlLXBvaW50LWF0IjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgIm51bWJlci1pcy1u
YW4iOiAiMS4wLjAiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiY29sb3IiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4xMS4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgImNsb25lIjogIjEuMC4yIiwKLSAgICAgICAgICAgICJjb2xvci1jb252ZXJ0Ijog
IjEuNS4wIiwKLSAgICAgICAgICAgICJjb2xvci1zdHJpbmciOiAiMC4zLjAiCi0gICAgICAgICAg
fQotICAgICAgICB9LAotICAgICAgICAiY29sb3ItY29udmVydCI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIxLjUuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJk
ZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJjb2xvci1uYW1lIjogewotICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMS4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImNvbG9yLXN0cmluZyI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjMuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAot
ICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICJjb2xvci1uYW1lIjogIjEuMS4xIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAg
ICAgImNvbG9ybWluIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKLSAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJl
cXVpcmVzIjogewotICAgICAgICAgICAgImNvbG9yIjogIjAuMTEuMyIsCi0gICAgICAgICAgICAi
Y3NzLWNvbG9yLW5hbWVzIjogIjAuMC40IiwKLSAgICAgICAgICAgICJoYXMiOiAiMS4wLjEiCi0g
ICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiY29sb3JzIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMS4yIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImNvbWJpbmVkLXN0cmVhbSI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAot
ICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICJkZWxheWVkLXN0cmVhbSI6ICIxLjAuMCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0g
ICAgICAgICJjb21tYW5kZXIiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi44LjEiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAg
ICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiZ3JhY2VmdWwtcmVhZGxpbmsiOiAiMS4wLjEi
Ci0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiY29tbW9uZGlyIjogewotICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAg
ICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImNvbXByZXNzaWJsZSI6IHsK
LSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuOCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAg
ICAgICAgICJtaW1lLWRiIjogIjEuMjQuMCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAg
ICAgICJjb21wcmVzc2lvbiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjYuMiIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJhY2NlcHRzIjogIjEuMy4zIiwKLSAgICAgICAg
ICAgICJieXRlcyI6ICIyLjMuMCIsCi0gICAgICAgICAgICAiY29tcHJlc3NpYmxlIjogIjIuMC44
IiwKLSAgICAgICAgICAgICJkZWJ1ZyI6ICIyLjIuMCIsCi0gICAgICAgICAgICAib24taGVhZGVy
cyI6ICIxLjAuMSIsCi0gICAgICAgICAgICAidmFyeSI6ICIxLjEuMCIKLSAgICAgICAgICB9Ci0g
ICAgICAgIH0sCi0gICAgICAgICJjb25jYXQtbWFwIjogewotICAgICAgICAgICJ2ZXJzaW9uIjog
IjAuMC4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRy
dWUKLSAgICAgICAgfSwKLSAgICAgICAgImNvbmNhdC1zdHJlYW0iOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMS41LjIiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiaW5oZXJp
dHMiOiAiMi4wLjMiLAotICAgICAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6ICIyLjAuNiIsCi0g
ICAgICAgICAgICAidHlwZWRhcnJheSI6ICIwLjAuNiIKLSAgICAgICAgICB9Ci0gICAgICAgIH0s
Ci0gICAgICAgICJjb25uZWN0LWhpc3RvcnktYXBpLWZhbGxiYWNrIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMy4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImNvbnNvbGUtYnJvd3NlcmlmeSI6IHsK
LSAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAg
ICAgICAgICJkYXRlLW5vdyI6ICIwLjEuNCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAg
ICAgICJjb25zdGFudC1jYXNlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKLSAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAg
ICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgInNuYWtlLWNhc2UiOiAiMi4xLjAiLAotICAg
ICAgICAgICAgInVwcGVyLWNhc2UiOiAiMS4xLjMiCi0gICAgICAgICAgfQotICAgICAgICB9LAot
ICAgICAgICAiY29uc3RhbnRzLWJyb3dzZXJpZnkiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAi
MC4wLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1
ZQotICAgICAgICB9LAotICAgICAgICAiY29udGFpbnMtcGF0aCI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIwLjEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJk
ZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJjb250ZW50LWRpc3Bvc2l0aW9uIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNS4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImNvbnRlbnQtdHlw
ZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCi0gICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJjb252
ZXJ0LXNvdXJjZS1tYXAiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4zLjAiLAotICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAot
ICAgICAgICAiY29va2llIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMy4xIiwKLSAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwK
LSAgICAgICAgImNvb2tpZS1zaWduYXR1cmUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjYiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQot
ICAgICAgICB9LAotICAgICAgICAiY29yZS1qcyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIy
LjQuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVl
Ci0gICAgICAgIH0sCi0gICAgICAgICJjb3JlLXV0aWwtaXMiOiB7Ci0gICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjIiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2
IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiY3Jvc3Mtc3Bhd24iOiB7Ci0gICAgICAgICAg
InZlcnNpb24iOiAiNC4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAibHJ1
LWNhY2hlIjogIjQuMC4xIiwKLSAgICAgICAgICAgICJ3aGljaCI6ICIxLjIuMTEiCi0gICAgICAg
ICAgfQotICAgICAgICB9LAotICAgICAgICAiY3J5cHRpbGVzIjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMC41IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRl
diI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJvb20iOiAi
Mi4xMC4xIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImNyeXB0by1icm93c2Vy
aWZ5IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMi44IiwKLSAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjog
ewotICAgICAgICAgICAgInBia2RmMi1jb21wYXQiOiAiMi4wLjEiLAotICAgICAgICAgICAgInJp
cGVtZDE2MCI6ICIwLjIuMCIsCi0gICAgICAgICAgICAic2hhLmpzIjogIjIuMi42IgotICAgICAg
ICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImNzcy1jb2xvci1uYW1lcyI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjAuNCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAg
ICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJjc3MtbG9hZGVyIjogewotICAg
ICAgICAgICJ2ZXJzaW9uIjogIjAuMjQuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAot
ICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICJiYWJlbC1jb2RlLWZyYW1lIjogIjYuMTEuMCIsCi0gICAgICAgICAgICAiY3NzLXNlbGVj
dG9yLXRva2VuaXplciI6ICIwLjYuMCIsCi0gICAgICAgICAgICAiY3NzbmFubyI6ICIzLjcuNSIs
Ci0gICAgICAgICAgICAibG9hZGVyLXV0aWxzIjogIjAuMi4xNiIsCi0gICAgICAgICAgICAibG9k
YXNoLmNhbWVsY2FzZSI6ICIzLjAuMSIsCi0gICAgICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0
LjEuMCIsCi0gICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIsCi0gICAgICAgICAgICAicG9z
dGNzcy1tb2R1bGVzLWV4dHJhY3QtaW1wb3J0cyI6ICIxLjAuMSIsCi0gICAgICAgICAgICAicG9z
dGNzcy1tb2R1bGVzLWxvY2FsLWJ5LWRlZmF1bHQiOiAiMS4xLjEiLAotICAgICAgICAgICAgInBv
c3Rjc3MtbW9kdWxlcy1zY29wZSI6ICIxLjAuMiIsCi0gICAgICAgICAgICAicG9zdGNzcy1tb2R1
bGVzLXZhbHVlcyI6ICIxLjIuMiIsCi0gICAgICAgICAgICAic291cmNlLWxpc3QtbWFwIjogIjAu
MS42IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImNzcy1zZWxlY3QiOiB7Ci0g
ICAgICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
LSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAg
ICAgICAiYm9vbGJhc2UiOiAiMS4wLjAiLAotICAgICAgICAgICAgImNzcy13aGF0IjogIjIuMS4w
IiwKLSAgICAgICAgICAgICJkb211dGlscyI6ICIxLjUuMSIsCi0gICAgICAgICAgICAibnRoLWNo
ZWNrIjogIjEuMC4xIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImNzcy1zZWxl
Y3Rvci10b2tlbml6ZXIiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC42LjAiLAotICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAi
cmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiY3NzZXNjIjogIjAuMS4wIiwKLSAgICAgICAgICAg
ICJmYXN0cGFyc2UiOiAiMS4xLjEiLAotICAgICAgICAgICAgInJlZ2V4cHUtY29yZSI6ICIxLjAu
MCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJjc3Mtd2hhdCI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAg
ICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJjc3Nlc2MiOiB7Ci0gICAg
ICAgICAgInZlcnNpb24iOiAiMC4xLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiY3NzbmFubyI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICIzLjcuNSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAot
ICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICJhdXRvcHJlZml4ZXIiOiAiNi40LjEiLAotICAgICAgICAgICAgImRlY2FtZWxpemUiOiAi
MS4yLjAiLAotICAgICAgICAgICAgImRlZmluZWQiOiAiMS4wLjAiLAotICAgICAgICAgICAgImhh
cyI6ICIxLjAuMSIsCi0gICAgICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMCIsCi0gICAg
ICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIsCi0gICAgICAgICAgICAicG9zdGNzcy1jYWxjIjog
IjUuMy4xIiwKLSAgICAgICAgICAgICJwb3N0Y3NzLWNvbG9ybWluIjogIjIuMi4xIiwKLSAgICAg
ICAgICAgICJwb3N0Y3NzLWNvbnZlcnQtdmFsdWVzIjogIjIuNC4wIiwKLSAgICAgICAgICAgICJw
b3N0Y3NzLWRpc2NhcmQtY29tbWVudHMiOiAiMi4wLjQiLAotICAgICAgICAgICAgInBvc3Rjc3Mt
ZGlzY2FyZC1kdXBsaWNhdGVzIjogIjIuMC4xIiwKLSAgICAgICAgICAgICJwb3N0Y3NzLWRpc2Nh
cmQtZW1wdHkiOiAiMi4xLjAiLAotICAgICAgICAgICAgInBvc3Rjc3MtZGlzY2FyZC1vdmVycmlk
ZGVuIjogIjAuMS4xIiwKLSAgICAgICAgICAgICJwb3N0Y3NzLWRpc2NhcmQtdW51c2VkIjogIjIu
Mi4xIiwKLSAgICAgICAgICAgICJwb3N0Y3NzLWZpbHRlci1wbHVnaW5zIjogIjIuMC4xIiwKLSAg
ICAgICAgICAgICJwb3N0Y3NzLW1lcmdlLWlkZW50cyI6ICIyLjEuNyIsCi0gICAgICAgICAgICAi
cG9zdGNzcy1tZXJnZS1sb25naGFuZCI6ICIyLjAuMSIsCi0gICAgICAgICAgICAicG9zdGNzcy1t
ZXJnZS1ydWxlcyI6ICIyLjAuMTAiLAotICAgICAgICAgICAgInBvc3Rjc3MtbWluaWZ5LWZvbnQt
dmFsdWVzIjogIjEuMC41IiwKLSAgICAgICAgICAgICJwb3N0Y3NzLW1pbmlmeS1ncmFkaWVudHMi
OiAiMS4wLjMiLAotICAgICAgICAgICAgInBvc3Rjc3MtbWluaWZ5LXBhcmFtcyI6ICIxLjAuNSIs
Ci0gICAgICAgICAgICAicG9zdGNzcy1taW5pZnktc2VsZWN0b3JzIjogIjIuMC41IiwKLSAgICAg
ICAgICAgICJwb3N0Y3NzLW5vcm1hbGl6ZS1jaGFyc2V0IjogIjEuMS4wIiwKLSAgICAgICAgICAg
ICJwb3N0Y3NzLW5vcm1hbGl6ZS11cmwiOiAiMy4wLjciLAotICAgICAgICAgICAgInBvc3Rjc3Mt
b3JkZXJlZC12YWx1ZXMiOiAiMi4yLjIiLAotICAgICAgICAgICAgInBvc3Rjc3MtcmVkdWNlLWlk
ZW50cyI6ICIyLjMuMCIsCi0gICAgICAgICAgICAicG9zdGNzcy1yZWR1Y2UtaW5pdGlhbCI6ICIx
LjAuMCIsCi0gICAgICAgICAgICAicG9zdGNzcy1yZWR1Y2UtdHJhbnNmb3JtcyI6ICIxLjAuMyIs
Ci0gICAgICAgICAgICAicG9zdGNzcy1zdmdvIjogIjIuMS41IiwKLSAgICAgICAgICAgICJwb3N0
Y3NzLXVuaXF1ZS1zZWxlY3RvcnMiOiAiMi4wLjIiLAotICAgICAgICAgICAgInBvc3Rjc3MtdmFs
dWUtcGFyc2VyIjogIjMuMy4wIiwKLSAgICAgICAgICAgICJwb3N0Y3NzLXppbmRleCI6ICIyLjEu
MSIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJjc3NvIjogewotICAgICAgICAg
ICJ2ZXJzaW9uIjogIjIuMi4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImNs
YXAiOiAiMS4xLjEiLAotICAgICAgICAgICAgInNvdXJjZS1tYXAiOiAiMC41LjYiCi0gICAgICAg
ICAgfQotICAgICAgICB9LAotICAgICAgICAiY3Nzb20iOiB7Ci0gICAgICAgICAgInZlcnNpb24i
OiAiMC4zLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2Ijog
dHJ1ZQotICAgICAgICB9LAotICAgICAgICAiY3Nzc3R5bGUiOiB7Ci0gICAgICAgICAgInZlcnNp
b24iOiAiMC4yLjM3IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRl
diI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImNzc29tIjog
IjAuMy4xIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImQiOiB7Ci0gICAgICAg
ICAgInZlcnNpb24iOiAiMC4xLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAi
ZXM1LWV4dCI6ICIwLjEwLjEyIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImRh
bWVyYXUtbGV2ZW5zaHRlaW4iOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9
LAotICAgICAgICAiZGFzaGRhc2giOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xNC4wIiwK
LSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAg
ICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImFzc2VydC1wbHVzIjogIjEuMC4wIgot
ICAgICAgICAgIH0sCi0gICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJh
c3NlcnQtcGx1cyI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiZGF0ZS1ub3ciOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4xLjQiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiZGVidWciOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4yLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICAgICAibXMiOiAiMC43LjEiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAi
ZGVjYW1lbGl6ZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCi0gICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAg
ICAgICJkZWVwLWlzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4zIiwKLSAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAg
ICAgICAgImRlZmluZWQiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAot
ICAgICAgICAiZGVsIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4yIiwKLSAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJl
cXVpcmVzIjogewotICAgICAgICAgICAgImdsb2JieSI6ICI1LjAuMCIsCi0gICAgICAgICAgICAi
aXMtcGF0aC1jd2QiOiAiMS4wLjAiLAotICAgICAgICAgICAgImlzLXBhdGgtaW4tY3dkIjogIjEu
MC4wIiwKLSAgICAgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4wIiwKLSAgICAgICAgICAg
ICJwaWZ5IjogIjIuMy4wIiwKLSAgICAgICAgICAgICJwaW5raWUtcHJvbWlzZSI6ICIyLjAuMSIs
Ci0gICAgICAgICAgICAicmltcmFmIjogIjIuNS40IgotICAgICAgICAgIH0KLSAgICAgICAgfSwK
LSAgICAgICAgImRlbGF5ZWQtc3RyZWFtIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4w
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAg
ICAgICAgfSwKLSAgICAgICAgImRlcGQiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAi
LAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAg
ICAgICB9LAotICAgICAgICAiZGVzdHJveSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAu
NCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0g
ICAgICAgIH0sCi0gICAgICAgICJkZXRlY3QtaW5kZW50IjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjMuMC4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImdldC1zdGRpbiI6
ICI0LjAuMSIsCi0gICAgICAgICAgICAibWluaW1pc3QiOiAiMS4yLjAiLAotICAgICAgICAgICAg
InJlcGVhdGluZyI6ICIxLjEuMyIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJk
ZXRlY3QtcG9ydCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1
aXJlcyI6IHsKLSAgICAgICAgICAgICJjb21tYW5kZXIiOiAiMi44LjEiCi0gICAgICAgICAgfQot
ICAgICAgICB9LAotICAgICAgICAiZGlmZiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIzLjAu
MCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0g
ICAgICAgIH0sCi0gICAgICAgICJkb2N0cmluZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIx
LjQuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVl
LAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJlc3V0aWxzIjogIjIuMC4y
IiwKLSAgICAgICAgICAgICJpc2FycmF5IjogIjEuMC4wIgotICAgICAgICAgIH0KLSAgICAgICAg
fSwKLSAgICAgICAgImRvbS1jb252ZXJ0ZXIiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4x
LjQiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwK
LSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAidXRpbGEiOiAiMC4zLjMiCi0g
ICAgICAgICAgfSwKLSAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewotICAgICAgICAgICAgInV0
aWxhIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjMuMyIsCi0gICAgICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJkb20tc2VyaWFsaXplciI6IHsK
LSAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAg
ICAgICAgICJkb21lbGVtZW50dHlwZSI6ICIxLjEuMyIsCi0gICAgICAgICAgICAiZW50aXRpZXMi
OiAiMS4xLjEiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewotICAg
ICAgICAgICAgImRvbWVsZW1lbnR0eXBlIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIx
LjEuMyIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRl
diI6IHRydWUKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAg
ICJkb21haW4tYnJvd3NlciI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuNyIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0s
Ci0gICAgICAgICJkb21lbGVtZW50dHlwZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjMu
MCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0g
ICAgICAgIH0sCi0gICAgICAgICJkb21oYW5kbGVyIjogewotICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuMS4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRy
dWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImRvbWVsZW1lbnR0eXBl
IjogIjEuMy4wIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImRvbXV0aWxzIjog
ewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNS4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgImRvbS1zZXJpYWxpemVyIjogIjAuMS4wIiwKLSAgICAgICAgICAgICJkb21lbGVt
ZW50dHlwZSI6ICIxLjMuMCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJkb3Qt
Y2FzZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6
IHsKLSAgICAgICAgICAgICJuby1jYXNlIjogIjIuMy4wIgotICAgICAgICAgIH0KLSAgICAgICAg
fSwKLSAgICAgICAgImRvdGVudiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCi0g
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAg
IH0sCi0gICAgICAgICJkdXBsZXhlciI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMSIs
Ci0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAg
ICAgIH0sCi0gICAgICAgICJlY2MtanNibiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjEu
MSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAot
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgImpzYm4iOiAiMC4xLjAiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAg
ICAiZWUtZmlyc3QiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAotICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAg
ICAgICAiZW1vamlzLWxpc3QiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9
LAotICAgICAgICAiZW5jb2RldXJsIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwK
LSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAg
ICAgfSwKLSAgICAgICAgImVuaGFuY2VkLXJlc29sdmUiOiB7Ci0gICAgICAgICAgInZlcnNpb24i
OiAiMC45LjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiZ3JhY2VmdWwtZnMi
OiAiNC4xLjgiLAotICAgICAgICAgICAgIm1lbW9yeS1mcyI6ICIwLjIuMCIsCi0gICAgICAgICAg
ICAidGFwYWJsZSI6ICIwLjEuMTAiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAiZGVwZW5kZW5j
aWVzIjogewotICAgICAgICAgICAgIm1lbW9yeS1mcyI6IHsKLSAgICAgICAgICAgICAgInZlcnNp
b24iOiAiMC4yLjAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9LAot
ICAgICAgICAiZW50aXRpZXMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9
LAotICAgICAgICAiZXJybm8iOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4xLjQiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAg
ICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAicHJyIjogIjAuMC4wIgotICAgICAgICAgIH0K
LSAgICAgICAgfSwKLSAgICAgICAgImVycm9yLWV4IjogewotICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMy4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRy
dWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImlzLWFycmF5aXNoIjog
IjAuMi4xIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImVzNS1leHQiOiB7Ci0g
ICAgICAgICAgInZlcnNpb24iOiAiMC4xMC4xMiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAg
ICAgICAgICJlczYtaXRlcmF0b3IiOiAiMi4wLjAiLAotICAgICAgICAgICAgImVzNi1zeW1ib2wi
OiAiMy4xLjAiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiZXM2LWl0ZXJhdG9y
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewot
ICAgICAgICAgICAgImQiOiAiMC4xLjEiLAotICAgICAgICAgICAgImVzNS1leHQiOiAiMC4xMC4x
MiIsCi0gICAgICAgICAgICAiZXM2LXN5bWJvbCI6ICIzLjEuMCIKLSAgICAgICAgICB9Ci0gICAg
ICAgIH0sCi0gICAgICAgICJlczYtbWFwIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS40
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0g
ICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImQiOiAiMC4xLjEiLAotICAgICAg
ICAgICAgImVzNS1leHQiOiAiMC4xMC4xMiIsCi0gICAgICAgICAgICAiZXM2LWl0ZXJhdG9yIjog
IjIuMC4wIiwKLSAgICAgICAgICAgICJlczYtc2V0IjogIjAuMS40IiwKLSAgICAgICAgICAgICJl
czYtc3ltYm9sIjogIjMuMS4wIiwKLSAgICAgICAgICAgICJldmVudC1lbWl0dGVyIjogIjAuMy40
IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImVzNi1zZXQiOiB7Ci0gICAgICAg
ICAgInZlcnNpb24iOiAiMC4xLjQiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAi
ZCI6ICIwLjEuMSIsCi0gICAgICAgICAgICAiZXM1LWV4dCI6ICIwLjEwLjEyIiwKLSAgICAgICAg
ICAgICJlczYtaXRlcmF0b3IiOiAiMi4wLjAiLAotICAgICAgICAgICAgImVzNi1zeW1ib2wiOiAi
My4xLjAiLAotICAgICAgICAgICAgImV2ZW50LWVtaXR0ZXIiOiAiMC4zLjQiCi0gICAgICAgICAg
fQotICAgICAgICB9LAotICAgICAgICAiZXM2LXN5bWJvbCI6IHsKLSAgICAgICAgICAidmVyc2lv
biI6ICIzLjEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYi
OiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJkIjogIjAuMS4x
IiwKLSAgICAgICAgICAgICJlczUtZXh0IjogIjAuMTAuMTIiCi0gICAgICAgICAgfQotICAgICAg
ICB9LAotICAgICAgICAiZXM2LXdlYWstbWFwIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIu
MC4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUs
Ci0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImQiOiAiMC4xLjEiLAotICAg
ICAgICAgICAgImVzNS1leHQiOiAiMC4xMC4xMiIsCi0gICAgICAgICAgICAiZXM2LWl0ZXJhdG9y
IjogIjIuMC4wIiwKLSAgICAgICAgICAgICJlczYtc3ltYm9sIjogIjMuMS4wIgotICAgICAgICAg
IH0KLSAgICAgICAgfSwKLSAgICAgICAgImVzY2FwZS1odG1sIjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMC4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRl
diI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImVzY2FwZS1zdHJpbmctcmVnZXhwIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImVzY29kZWdlbiI6
IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjguMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAg
ICAgICAgICAgICJlc3ByaW1hIjogIjIuNy4zIiwKLSAgICAgICAgICAgICJlc3RyYXZlcnNlIjog
IjEuOS4zIiwKLSAgICAgICAgICAgICJlc3V0aWxzIjogIjIuMC4yIiwKLSAgICAgICAgICAgICJv
cHRpb25hdG9yIjogIjAuOC4yIiwKLSAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuMi4wIgot
ICAgICAgICAgIH0sCi0gICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJl
c3RyYXZlcnNlIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjkuMyIsCi0gICAgICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAic291cmNlLW1hcCI6IHsKLSAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMC4yLjAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAotICAg
ICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgImFtZGVmaW5lIjogIjEu
MC4wIgotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAg
ICB9LAotICAgICAgICAiZXNjb3BlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjMuNi4wIiwK
LSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAg
ICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImVzNi1tYXAiOiAiMC4xLjQiLAotICAg
ICAgICAgICAgImVzNi13ZWFrLW1hcCI6ICIyLjAuMSIsCi0gICAgICAgICAgICAiZXNyZWN1cnNl
IjogIjQuMS4wIiwKLSAgICAgICAgICAgICJlc3RyYXZlcnNlIjogIjQuMi4wIgotICAgICAgICAg
IH0KLSAgICAgICAgfSwKLSAgICAgICAgImVzbGludCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICIzLjUuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0
cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJjaGFsayI6ICIxLjEu
MyIsCi0gICAgICAgICAgICAiY29uY2F0LXN0cmVhbSI6ICIxLjUuMiIsCi0gICAgICAgICAgICAi
ZGVidWciOiAiMi4yLjAiLAotICAgICAgICAgICAgImRvY3RyaW5lIjogIjEuNC4wIiwKLSAgICAg
ICAgICAgICJlc2NvcGUiOiAiMy42LjAiLAotICAgICAgICAgICAgImVzcHJlZSI6ICIzLjMuMSIs
Ci0gICAgICAgICAgICAiZXN0cmF2ZXJzZSI6ICI0LjIuMCIsCi0gICAgICAgICAgICAiZXN1dGls
cyI6ICIyLjAuMiIsCi0gICAgICAgICAgICAiZmlsZS1lbnRyeS1jYWNoZSI6ICIyLjAuMCIsCi0g
ICAgICAgICAgICAiZ2xvYiI6ICI3LjEuMCIsCi0gICAgICAgICAgICAiZ2xvYmFscyI6ICI5LjEw
LjAiLAotICAgICAgICAgICAgImlnbm9yZSI6ICIzLjEuNSIsCi0gICAgICAgICAgICAiaW11cm11
cmhhc2giOiAiMC4xLjQiLAotICAgICAgICAgICAgImlucXVpcmVyIjogIjAuMTIuMCIsCi0gICAg
ICAgICAgICAiaXMtbXktanNvbi12YWxpZCI6ICIyLjE0LjAiLAotICAgICAgICAgICAgImlzLXJl
c29sdmFibGUiOiAiMS4wLjAiLAotICAgICAgICAgICAgImpzLXlhbWwiOiAiMy42LjEiLAotICAg
ICAgICAgICAgImpzb24tc3RhYmxlLXN0cmluZ2lmeSI6ICIxLjAuMSIsCi0gICAgICAgICAgICAi
bGV2biI6ICIwLjMuMCIsCi0gICAgICAgICAgICAibG9kYXNoIjogIjQuMTYuMiIsCi0gICAgICAg
ICAgICAibWtkaXJwIjogIjAuNS4xIiwKLSAgICAgICAgICAgICJuYXR1cmFsLWNvbXBhcmUiOiAi
MS40LjAiLAotICAgICAgICAgICAgIm9wdGlvbmF0b3IiOiAiMC44LjIiLAotICAgICAgICAgICAg
InBhdGgtaXMtaW5zaWRlIjogIjEuMC4yIiwKLSAgICAgICAgICAgICJwbHVyYWxpemUiOiAiMS4y
LjEiLAotICAgICAgICAgICAgInByb2dyZXNzIjogIjEuMS44IiwKLSAgICAgICAgICAgICJyZXF1
aXJlLXVuY2FjaGVkIjogIjEuMC4yIiwKLSAgICAgICAgICAgICJzaGVsbGpzIjogIjAuNi4xIiwK
LSAgICAgICAgICAgICJzdHJpcC1ib20iOiAiMy4wLjAiLAotICAgICAgICAgICAgInN0cmlwLWpz
b24tY29tbWVudHMiOiAiMS4wLjQiLAotICAgICAgICAgICAgInRhYmxlIjogIjMuOC4wIiwKLSAg
ICAgICAgICAgICJ0ZXh0LXRhYmxlIjogIjAuMi4wIiwKLSAgICAgICAgICAgICJ1c2VyLWhvbWUi
OiAiMi4wLjAiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewotICAg
ICAgICAgICAgImdsb2JhbHMiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjkuMTAuMCIs
Ci0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRy
dWUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3RyaXAtYm9tIjogewotICAgICAgICAg
ICAgICAidmVyc2lvbiI6ICIzLjAuMCIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
LSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAi
dXNlci1ob21lIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCi0gICAgICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAg
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAib3MtaG9tZWRpciI6ICIx
LjAuMSIKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAg
ICAgfSwKLSAgICAgICAgImVzbGludC1jb25maWctcmVhY3QtYXBwIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjAuMi4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImVzbGludC1pbXBvcnQtcmVzb2x2ZXIt
bm9kZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMyIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6
IHsKLSAgICAgICAgICAgICJkZWJ1ZyI6ICIyLjIuMCIsCi0gICAgICAgICAgICAib2JqZWN0LWFz
c2lnbiI6ICI0LjEuMCIsCi0gICAgICAgICAgICAicmVzb2x2ZSI6ICIxLjEuNyIKLSAgICAgICAg
ICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJlc2xpbnQtbG9hZGVyIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuNS4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImZpbmQt
Y2FjaGUtZGlyIjogIjAuMS4xIiwKLSAgICAgICAgICAgICJsb2FkZXItdXRpbHMiOiAiMC4yLjE2
IiwKLSAgICAgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4wIgotICAgICAgICAgIH0KLSAg
ICAgICAgfSwKLSAgICAgICAgImVzbGludC1wbHVnaW4tZmxvd3R5cGUiOiB7Ci0gICAgICAgICAg
InZlcnNpb24iOiAiMi4xOC4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImxv
ZGFzaCI6ICI0LjE2LjIiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiZXNsaW50
LXBsdWdpbi1pbXBvcnQiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xMi4wIiwKLSAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAg
InJlcXVpcmVzIjogewotICAgICAgICAgICAgImJ1aWx0aW4tbW9kdWxlcyI6ICIxLjEuMSIsCi0g
ICAgICAgICAgICAiY29udGFpbnMtcGF0aCI6ICIwLjEuMCIsCi0gICAgICAgICAgICAiZGVidWci
OiAiMi4yLjAiLAotICAgICAgICAgICAgImRvY3RyaW5lIjogIjEuMi4zIiwKLSAgICAgICAgICAg
ICJlczYtbWFwIjogIjAuMS40IiwKLSAgICAgICAgICAgICJlczYtc2V0IjogIjAuMS40IiwKLSAg
ICAgICAgICAgICJlc2xpbnQtaW1wb3J0LXJlc29sdmVyLW5vZGUiOiAiMC4yLjMiLAotICAgICAg
ICAgICAgImxvZGFzaC5jb25kIjogIjQuNS4yIiwKLSAgICAgICAgICAgICJsb2Rhc2guZW5kc3dp
dGgiOiAiNC4yLjEiLAotICAgICAgICAgICAgImxvZGFzaC5maW5kIjogIjQuNi4wIiwKLSAgICAg
ICAgICAgICJsb2Rhc2guZmluZGluZGV4IjogIjQuNi4wIiwKLSAgICAgICAgICAgICJvYmplY3Qt
YXNzaWduIjogIjQuMS4wIiwKLSAgICAgICAgICAgICJwa2ctZGlyIjogIjEuMC4wIiwKLSAgICAg
ICAgICAgICJwa2ctdXAiOiAiMS4wLjAiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAiZGVwZW5k
ZW5jaWVzIjogewotICAgICAgICAgICAgImRvY3RyaW5lIjogewotICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIxLjIuMyIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAg
ICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICAgICAiZXN1dGlscyI6ICIyLjAuMiIsCi0gICAgICAgICAgICAgICAgImlzYXJyYXkiOiAi
MS4wLjAiCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAg
ICAgIH0sCi0gICAgICAgICJlc2xpbnQtcGx1Z2luLWpzeC1hMTF5IjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjIuMi4yIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImRhbWVy
YXUtbGV2ZW5zaHRlaW4iOiAiMS4wLjMiLAotICAgICAgICAgICAgImpzeC1hc3QtdXRpbHMiOiAi
MS4zLjEiLAotICAgICAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjAiCi0gICAgICAgICAg
fQotICAgICAgICB9LAotICAgICAgICAiZXNsaW50LXBsdWdpbi1yZWFjdCI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICI2LjMuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAg
ICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJk
b2N0cmluZSI6ICIxLjQuMCIsCi0gICAgICAgICAgICAianN4LWFzdC11dGlscyI6ICIxLjMuMSIK
LSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJlc3ByZWUiOiB7Ci0gICAgICAgICAg
InZlcnNpb24iOiAiMy4zLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYWNv
cm4iOiAiNC4wLjMiLAotICAgICAgICAgICAgImFjb3JuLWpzeCI6ICIzLjAuMSIKLSAgICAgICAg
ICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJlc3ByaW1hIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjIuNy4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImVzcmVjdXJzZSI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICI0LjEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJk
ZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJlc3RyYXZl
cnNlIjogIjQuMS4xIiwKLSAgICAgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4wIgotICAg
ICAgICAgIH0sCi0gICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJlc3Ry
YXZlcnNlIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICI0LjEuMSIsCi0gICAgICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJlc3RyYXZlcnNlIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMi4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImVzdXRpbHMiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4wLjIiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiZXRhZyI6IHsK
LSAgICAgICAgICAidmVyc2lvbiI6ICIxLjcuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJldmVudC1lbWl0
dGVyIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMy40IiwKLSAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjog
ewotICAgICAgICAgICAgImQiOiAiMC4xLjEiLAotICAgICAgICAgICAgImVzNS1leHQiOiAiMC4x
MC4xMiIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJldmVudGVtaXR0ZXIzIjog
ewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImV2ZW50cyI6
IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJldmVudHNv
dXJjZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuNiIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6
IHsKLSAgICAgICAgICAgICJvcmlnaW5hbCI6ICIxLjAuMCIKLSAgICAgICAgICB9Ci0gICAgICAg
IH0sCi0gICAgICAgICJleGVjLXNoIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwK
LSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAg
ICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgIm1lcmdlIjogIjEuMi4wIgotICAgICAg
ICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImV4aXQtaG9vayI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIxLjEuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJk
ZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJleHBhbmQtYnJhY2tldHMiOiB7Ci0gICAg
ICAgICAgInZlcnNpb24iOiAiMC4xLjUiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAg
ICAiaXMtcG9zaXgtYnJhY2tldCI6ICIwLjEuMSIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0g
ICAgICAgICJleHBhbmQtcmFuZ2UiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS44LjIiLAot
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAg
ICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiZmlsbC1yYW5nZSI6ICIyLjIuMyIKLSAg
ICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJleHByZXNzIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjQuMTQuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAg
ICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJhY2Nl
cHRzIjogIjEuMy4zIiwKLSAgICAgICAgICAgICJhcnJheS1mbGF0dGVuIjogIjEuMS4xIiwKLSAg
ICAgICAgICAgICJjb250ZW50LWRpc3Bvc2l0aW9uIjogIjAuNS4xIiwKLSAgICAgICAgICAgICJj
b250ZW50LXR5cGUiOiAiMS4wLjIiLAotICAgICAgICAgICAgImNvb2tpZSI6ICIwLjMuMSIsCi0g
ICAgICAgICAgICAiY29va2llLXNpZ25hdHVyZSI6ICIxLjAuNiIsCi0gICAgICAgICAgICAiZGVi
dWciOiAiMi4yLjAiLAotICAgICAgICAgICAgImRlcGQiOiAiMS4xLjAiLAotICAgICAgICAgICAg
ImVuY29kZXVybCI6ICIxLjAuMSIsCi0gICAgICAgICAgICAiZXNjYXBlLWh0bWwiOiAiMS4wLjMi
LAotICAgICAgICAgICAgImV0YWciOiAiMS43LjAiLAotICAgICAgICAgICAgImZpbmFsaGFuZGxl
ciI6ICIwLjUuMCIsCi0gICAgICAgICAgICAiZnJlc2giOiAiMC4zLjAiLAotICAgICAgICAgICAg
Im1lcmdlLWRlc2NyaXB0b3JzIjogIjEuMC4xIiwKLSAgICAgICAgICAgICJtZXRob2RzIjogIjEu
MS4yIiwKLSAgICAgICAgICAgICJvbi1maW5pc2hlZCI6ICIyLjMuMCIsCi0gICAgICAgICAgICAi
cGFyc2V1cmwiOiAiMS4zLjEiLAotICAgICAgICAgICAgInBhdGgtdG8tcmVnZXhwIjogIjAuMS43
IiwKLSAgICAgICAgICAgICJwcm94eS1hZGRyIjogIjEuMS4yIiwKLSAgICAgICAgICAgICJxcyI6
ICI2LjIuMCIsCi0gICAgICAgICAgICAicmFuZ2UtcGFyc2VyIjogIjEuMi4wIiwKLSAgICAgICAg
ICAgICJzZW5kIjogIjAuMTQuMSIsCi0gICAgICAgICAgICAic2VydmUtc3RhdGljIjogIjEuMTEu
MSIsCi0gICAgICAgICAgICAidHlwZS1pcyI6ICIxLjYuMTMiLAotICAgICAgICAgICAgInV0aWxz
LW1lcmdlIjogIjEuMC4wIiwKLSAgICAgICAgICAgICJ2YXJ5IjogIjEuMS4wIgotICAgICAgICAg
IH0sCi0gICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJxcyI6IHsKLSAg
ICAgICAgICAgICAgInZlcnNpb24iOiAiNi4yLjAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgfQotICAgICAgICB9LAotICAgICAgICAiZXh0ZW5kIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjMuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImV4dGdsb2IiOiB7Ci0gICAgICAgICAgInZlcnNp
b24iOiAiMC4zLjIiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2
IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiaXMtZXh0Z2xv
YiI6ICIxLjAuMCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJleHRyYWN0LXRl
eHQtd2VicGFjay1wbHVnaW4iOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAg
ICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYXN5bmMiOiAiMS41LjIiLAotICAgICAgICAg
ICAgImxvYWRlci11dGlscyI6ICIwLjIuMTYiLAotICAgICAgICAgICAgIndlYnBhY2stc291cmNl
cyI6ICIwLjEuMiIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJleHRzcHJpbnRm
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKLSAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJjaGVlcmlvIjogeworICAg
ICAgInZlcnNpb24iOiAiMC4yMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9jaGVlcmlvLy0vY2hlZXJpby0wLjIyLjAudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1xYnFvWUtQNXRaV211QnNhaG9jeEllMDZKcDQ9IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY3NzLXNlbGVjdCI6ICIxLjIu
MCIsCisgICAgICAgICJkb20tc2VyaWFsaXplciI6ICIwLjEuMCIsCisgICAgICAgICJlbnRpdGll
cyI6ICIxLjEuMSIsCisgICAgICAgICJodG1scGFyc2VyMiI6ICIzLjkuMiIsCisgICAgICAgICJs
b2Rhc2guYXNzaWduaW4iOiAiNC4yLjAiLAorICAgICAgICAibG9kYXNoLmJpbmQiOiAiNC4yLjEi
LAorICAgICAgICAibG9kYXNoLmRlZmF1bHRzIjogIjQuMi4wIiwKKyAgICAgICAgImxvZGFzaC5m
aWx0ZXIiOiAiNC42LjAiLAorICAgICAgICAibG9kYXNoLmZsYXR0ZW4iOiAiNC40LjAiLAorICAg
ICAgICAibG9kYXNoLmZvcmVhY2giOiAiNC41LjAiLAorICAgICAgICAibG9kYXNoLm1hcCI6ICI0
LjYuMCIsCisgICAgICAgICJsb2Rhc2gubWVyZ2UiOiAiNC42LjAiLAorICAgICAgICAibG9kYXNo
LnBpY2siOiAiNC40LjAiLAorICAgICAgICAibG9kYXNoLnJlZHVjZSI6ICI0LjYuMCIsCisgICAg
ICAgICJsb2Rhc2gucmVqZWN0IjogIjQuNi4wIiwKKyAgICAgICAgImxvZGFzaC5zb21lIjogIjQu
Ni4wIgorICAgICAgfQorICAgIH0sCisgICAgImNob2tpZGFyIjogeworICAgICAgInZlcnNpb24i
OiAiMS43LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2Nob2tpZGFyLy0vY2hva2lkYXItMS43LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1lWTVvbDNnVkhJQjJ0TE5nNWUzU2pOb3J0R2c9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAiYW55bWF0Y2giOiAiMS4zLjIiLAorICAgICAgICAi
YXN5bmMtZWFjaCI6ICIxLjAuMSIsCisgICAgICAgICJmc2V2ZW50cyI6ICIxLjEuMiIsCisgICAg
ICAgICJnbG9iLXBhcmVudCI6ICIyLjAuMCIsCisgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIs
CisgICAgICAgICJpcy1iaW5hcnktcGF0aCI6ICIxLjAuMSIsCisgICAgICAgICJpcy1nbG9iIjog
IjIuMC4xIiwKKyAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUiOiAiMS4wLjEiLAorICAgICAgICAi
cmVhZGRpcnAiOiAiMi4xLjAiCisgICAgICB9CisgICAgfSwKKyAgICAiY2ktaW5mbyI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9jaS1pbmZvLy0vY2ktaW5mby0xLjEuMS50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGE1MTItdkhEREYvYlA5UllwVFd0VWhwSlJoQ0ZkdnZwM2lEV3ZFYnVEYldndmpV
ck5HVjFNWEpyRTBNUGN3R3RFbGVkMDRtNjFpd2RCTFVJSFp0RGd6V1M0WlE9PSIsCisgICAgICAi
ZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImNpcGhlci1iYXNlIjogeworICAgICAgInZlcnNpb24i
OiAiMS4wLjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2NpcGhlci1iYXNlLy0vY2lwaGVyLWJhc2UtMS4wLjQudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhNTEyLUtraHQ1eWU2Wkdtd3Y0MHVVRFp6dGF5VDJUaExRR2Zuai9UNzFOL1h6ZVplbzNu
Zjhmb3lXN3pHVHNQWWtFeWEzbTVmM2NBeXBIK3FlN1lPck0xVTJRPT0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIs
CisgICAgICAgICJzYWZlLWJ1ZmZlciI6ICI1LjEuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJj
aXJjdWxhci1qc29uIjogeworICAgICAgInZlcnNpb24iOiAiMC4zLjMiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NpcmN1bGFyLWpzb24vLS9jaXJjdWxh
ci1qc29uLTAuMy4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1VWkszTkJ4Mk1j
YStiNUxzRzdiWTE4M3BIV3Q1WTF4dHM0UDNQejdFTlR3R1ZuSk9VV2JSYjNvY2p2WDdoeDl0cS95
VEFkY2xYbTlzWjM4Z051ZW00QT09IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAi
Y2xhcCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jbGFwLy0vY2xhcC0xLjIuMC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLVdja1A0K0UzRUVkRy94bEdtaWVtTlA5b3lGYz0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjaGFsayI6ICIxLjEu
MyIKKyAgICAgIH0KKyAgICB9LAorICAgICJjbGFzc25hbWVzIjogeworICAgICAgInZlcnNpb24i
OiAiMi4yLjUiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2NsYXNzbmFtZXMvLS9jbGFzc25hbWVzLTIuMi41LnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtK3pnQjFGTkdka252TmdQSDFob0N2UktiM20wPSIKKyAgICB9LAorICAgICJjbGVhbi1j
c3MiOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjEuOCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2xlYW4tY3NzLy0vY2xlYW4tY3NzLTQuMS44LnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtQmhSVnNrbEtkUXJKajBiWTFldXhmR2VlcWRFPSIs
CisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInNvdXJj
ZS1tYXAiOiAiMC41LjciCisgICAgICB9CisgICAgfSwKKyAgICAiY2xpLWJveGVzIjogeworICAg
ICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2NsaS1ib3hlcy8tL2NsaS1ib3hlcy0xLjAuMC50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLVQ2a1h3K1djbEtBRXpXSDQ3bENkcGxGb2NVTT0iLAorICAgICAgImRl
diI6IHRydWUKKyAgICB9LAorICAgICJjbGktY3Vyc29yIjogeworICAgICAgInZlcnNpb24iOiAi
Mi4xLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Ns
aS1jdXJzb3IvLS9jbGktY3Vyc29yLTIuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtczEyc04yUjUrc3crbEhSOVFkRFE5U09QL0xVPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInJlc3RvcmUtY3Vyc29yIjogIjIuMC4wIgorICAg
ICAgfQorICAgIH0sCisgICAgImNsaS13aWR0aCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMi4w
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jbGktd2lk
dGgvLS9jbGktd2lkdGgtMi4yLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0veG50
NkttbDVYa3lRVWV3d1I4UHZMcSsxams9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAg
ICAiY2xpdWkiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2xpdWkvLS9jbGl1aS0yLjEuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLVMwZFhZUCtBSmt4MkxEb1hHUU11a2NmK29ORT0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjZW50ZXIt
YWxpZ24iOiAiMC4xLjMiLAorICAgICAgICAicmlnaHQtYWxpZ24iOiAiMC4xLjMiLAorICAgICAg
ICAid29yZHdyYXAiOiAiMC4wLjIiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsK
KyAgICAgICAgIndvcmR3cmFwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC4yIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvd29yZHdyYXAv
LS93b3Jkd3JhcC0wLjAuMi50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS10NVpw
dTBMc3RBbjRQVmc4clZMS0YrcWhaRDg9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAg
ICB9LAotICAgICAgICAiZmFzdC1sZXZlbnNodGVpbiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICIyLjAuNCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICB9CisgICAgICB9
CisgICAgfSwKKyAgICAiY2xvbmUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2xvbmUvLS9jbG9uZS0x
LjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUpndDZtZXV4N2Y0a2RUZ1hYM2d5
UThzWjBVaz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJjbyI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjQuNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9jby8tL2NvLTQuNi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
YnFhOTg5aFRybFRNdU9SNytndnorUU1mc1lRPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0s
CisgICAgImNvYSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC40IiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb2EvLS9jb2EtMS4wLjQudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1xZThWTm1EV3FHcUwzc0FvbWx4b1RTRjBNdjA9IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAicSI6ICIxLjUu
MCIKKyAgICAgIH0KKyAgICB9LAorICAgICJjb2RlLXBvaW50LWF0IjogeworICAgICAgInZlcnNp
b24iOiAiMS4xLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2NvZGUtcG9pbnQtYXQvLS9jb2RlLXBvaW50LWF0LTEuMS4wLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtRFFjTFRRUTZXK296b3ZHa0RpN2JQWnBNejNjPSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgImNvbG9yIjogeworICAgICAgInZlcnNpb24iOiAiMC4xMS40
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb2xvci8t
L2NvbG9yLTAuMTEuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWJYdGNkUHRsNkVI
TlNIa3EwZTFlQjdrRTEyUT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJjbG9uZSI6ICIxLjAuMiIsCisgICAgICAgICJjb2xvci1jb252ZXJ0Ijog
IjEuOS4wIiwKKyAgICAgICAgImNvbG9yLXN0cmluZyI6ICIwLjMuMCIKKyAgICAgIH0KKyAgICB9
LAorICAgICJjb2xvci1jb252ZXJ0IjogeworICAgICAgInZlcnNpb24iOiAiMS45LjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvbG9yLWNvbnZlcnQv
LS9jb2xvci1jb252ZXJ0LTEuOS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtR3N6
NWZkYzV1WU8vbVUxVy9zajVXRk5rRzNvPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgImNvbG9yLW5hbWUiOiAiMS4xLjMiCisgICAgICB9CisgICAg
fSwKKyAgICAiY29sb3ItbmFtZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4zIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb2xvci1uYW1lLy0vY29s
b3ItbmFtZS0xLjEuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXA5QlZpOWljUXZl
VjNVSXlqM1FJTWNwVHZDVT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJjb2xv
ci1zdHJpbmciOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjMuMCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29sb3Itc3RyaW5nLy0vY29sb3Itc3RyaW5n
LTAuMy4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtSjlSdnRuQWx4Y0w2SlprNysv
VjU1SGhCdVpFPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImNvbG9yLW5hbWUiOiAiMS4xLjMiCisgICAgICB9CisgICAgfSwKKyAgICAiY29sb3Jt
aW4iOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29sb3JtaW4vLS9jb2xvcm1pbi0xLjEuMi50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLTZpOTBJS2NybG9nYU9Lcmxuc0VrcHZjcGdUTT0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjb2xvciI6
ICIwLjExLjQiLAorICAgICAgICAiY3NzLWNvbG9yLW5hbWVzIjogIjAuMC40IiwKKyAgICAgICAg
ImhhcyI6ICIxLjAuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJjb2xvcnMiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIxLjEuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvY29sb3JzLy0vY29sb3JzLTEuMS4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtRm9wSEFYVnJhbjlSb1N6Z3lYdjZLTUNFN1dNPSIsCisgICAgICAiZGV2IjogdHJ1ZQor
ICAgIH0sCisgICAgImNvbWJpbmVkLXN0cmVhbSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC41
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb21iaW5l
ZC1zdHJlYW0vLS9jb21iaW5lZC1zdHJlYW0tMS4wLjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1rNE53cFh0S1VkNml4M3dWMWNYOStKVVdRQWs9IiwKKyAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZGVsYXllZC1zdHJlYW0iOiAiMS4wLjAi
CisgICAgICB9CisgICAgfSwKKyAgICAiY29tbWFuZGVyIjogeworICAgICAgInZlcnNpb24iOiAi
Mi4xMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9j
b21tYW5kZXIvLS9jb21tYW5kZXItMi4xMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTUxMi1iMDU1M3VZQTVZQUVHZ3lZSUdZUk96S1E3WDVSQXFlZGtmamlaeHdpMGtMMWczYk9hQk5O
WmZZa3p0L0NMMHVtZ0Q1d2M5SmVjMkZiQjk4Q2prTVJ2UT09IiwKKyAgICAgICJkZXYiOiB0cnVl
CisgICAgfSwKKyAgICAiY29tbW9uZGlyIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvbW1vbmRpci8t
L2NvbW1vbmRpci0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTNkZ0EyZ3ht
RW5PVHpLV1ZEcWxvbzZyeEpUcz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJj
b21wcmVzc2libGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMTEiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvbXByZXNzaWJsZS8tL2NvbXByZXNz
aWJsZS0yLjAuMTEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1GbkdLZGQ0b1B0am1C
QVFXSmFJR1JZWjVmWW89IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAibWltZS1kYiI6ICIxLjMwLjAiCisgICAgICB9CisgICAgfSwKKyAgICAiY29t
cHJlc3Npb24iOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjcuMCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29tcHJlc3Npb24vLS9jb21wcmVzc2lvbi0x
LjcuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUF3eWZHWThXUTZCWDEzYW5PT2tp
MmtOekFTMD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJhY2NlcHRzIjogIjEuMy40IiwKKyAgICAgICAgImJ5dGVzIjogIjIuNS4wIiwKKyAgICAg
ICAgImNvbXByZXNzaWJsZSI6ICIyLjAuMTEiLAorICAgICAgICAiZGVidWciOiAiMi42LjgiLAor
ICAgICAgICAib24taGVhZGVycyI6ICIxLjAuMSIsCisgICAgICAgICJzYWZlLWJ1ZmZlciI6ICI1
LjEuMSIsCisgICAgICAgICJ2YXJ5IjogIjEuMS4xIgorICAgICAgfQorICAgIH0sCisgICAgImNv
bmNhdC1tYXAiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjAuMSIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29uY2F0LW1hcC8tL2NvbmNhdC1tYXAtMC4w
LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0yS2xyMTMvV2pmZDVPbk1EYWp1ZzFV
QmRSM3M9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiY29uY2F0LXN0cmVhbSI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb25jYXQtc3RyZWFtLy0vY29uY2F0LXN0cmVhbS0xLjYuMC50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUNxeG1MOVVyNTRsazFWTXZhVWVFNXdFUXJQ
Yz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJp
bmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiAiMi4zLjMiLAor
ICAgICAgICAidHlwZWRhcnJheSI6ICIwLjAuNiIKKyAgICAgIH0KKyAgICB9LAorICAgICJjb25m
aWdzdG9yZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb25maWdzdG9yZS8tL2NvbmZpZ3N0b3JlLTIu
MS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYzNvNmNEYnBpR0VDcW1DWjVIdXpP
ckdyb2FFPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgImRvdC1wcm9wIjogIjMuMC4wIiwKKyAgICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS4xMSIs
CisgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAorICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0
LjEuMSIsCisgICAgICAgICJvcy10bXBkaXIiOiAiMS4wLjIiLAorICAgICAgICAib3NlbnYiOiAi
MC4xLjQiLAorICAgICAgICAidXVpZCI6ICIyLjAuMyIsCisgICAgICAgICJ3cml0ZS1maWxlLWF0
b21pYyI6ICIxLjMuNCIsCisgICAgICAgICJ4ZGctYmFzZWRpciI6ICIyLjAuMCIKKyAgICAgIH0s
CisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAidXVpZCI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIyLjAuMyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3V1aWQvLS91dWlkLTIuMC4zLnRneiIsCisgICAgICAgICAgImludGVncml0
eSI6ICJzaGExLVorTG9ZM2x5RlZNTi96R09XL25jNi8xSHNobz0iLAogICAgICAgICAgICJkZXYi
OiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJmYXN0cGFyc2UiOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMS4xLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0sCisgICAgImNvbm5lY3QtaGlzdG9yeS1hcGktZmFsbGJhY2siOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIxLjMuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvY29ubmVjdC1oaXN0b3J5LWFwaS1mYWxsYmFjay8tL2Nvbm5lY3QtaGlz
dG9yeS1hcGktZmFsbGJhY2stMS4zLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS01
UjBYK1BEdkRia0taUDIwZmVNRkZWYnA4V2s9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwK
KyAgICAiY29uc29sZS1icm93c2VyaWZ5IjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvbnNvbGUtYnJv
d3NlcmlmeS8tL2NvbnNvbGUtYnJvd3NlcmlmeS0xLjEuMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLThDUWNSWE1LbjhZeU95QnR2emp0eDBIUXV4QT0iLAorICAgICAgImRldiI6IHRy
dWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJkYXRlLW5vdyI6ICIwLjEuNCIKKyAg
ICAgIH0KKyAgICB9LAorICAgICJjb25zdGFudHMtYnJvd3NlcmlmeSI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9jb25zdGFudHMtYnJvd3NlcmlmeS8tL2NvbnN0YW50cy1icm93c2VyaWZ5LTEuMC4wLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtd2d1VzJNWVhkSXF2SEJZQ0YyRE5KL3k0eTNV
PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImNvbnRhaW5zLXBhdGgiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIwLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvY29udGFpbnMtcGF0aC8tL2NvbnRhaW5zLXBhdGgtMC4xLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0vb3p4aFA5bWNMYTY3d0dwMUlZYVhMN0VFZ289IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiY29udGVudC1kaXNwb3NpdGlvbiI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjAuNS4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9jb250ZW50LWRpc3Bvc2l0aW9uLy0vY29udGVudC1kaXNwb3NpdGlv
bi0wLjUuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLURQYUx1ZDMxOHI1NVljT29V
WGpMaGR1bmpMUT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJjb250ZW50LXR5
cGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29udGVudC10eXBlLy0vY29udGVudC10eXBlLTEuMC4y
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdDlFVHJ1ZW8zU2U5SVJNOFRjSlNuZkZ5
SHUwPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImNvbnRlbnQtdHlwZS1wYXJz
ZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29udGVudC10eXBlLXBhcnNlci8tL2NvbnRlbnQtdHlw
ZS1wYXJzZXItMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS13K1ZwaU1VOFpS
Si90RzFBTXFPcEFDUnYzSlE9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiY29u
dmVydC1zb3VyY2UtbWFwIjogeworICAgICAgInZlcnNpb24iOiAiMS41LjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvbnZlcnQtc291cmNlLW1hcC8t
L2NvbnZlcnQtc291cmNlLW1hcC0xLjUuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LW1zMXdoUnh0WGYzWlBaS0M1ZTM1U2dQL1JyVT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9
LAorICAgICJjb29raWUiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjMuMSIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29va2llLy0vY29va2llLTAuMy4x
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtNStDaCtlOUR0TWk2a2x4Y1dwYm9CdEZv
YzdzPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImNvb2tpZS1zaWduYXR1cmUi
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuNiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29va2llLXNpZ25hdHVyZS8tL2Nvb2tpZS1zaWduYXR1cmUt
MS4wLjYudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS00d09vZ3JOQ3pEN295bEU2ZVpt
WE5OcXpyaXc9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiY29yZS1qcyI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuMi43IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9jb3JlLWpzLy0vY29yZS1qcy0xLjIuNy50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLVpTS1V3VVpSMnlqNms3MHRYL0tZT2s4SXhqWT0iCisgICAgfSwKKyAg
ICAiY29yZS11dGlsLWlzIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvcmUtdXRpbC1pcy8tL2NvcmUt
dXRpbC1pcy0xLjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXRmMVVJZ3FpdkZx
MWVxdHhRTWxBZFVVRHdhYz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJjb3Nt
aWNvbmZpZyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMi4yIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb3NtaWNvbmZpZy8tL2Nvc21pY29uZmlnLTIu
Mi4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1HaU5YTHdBRlBZSHkyNVhtVFBw
YWZZdm4zQ0xBa0o4Rkxzc2NxNzhNUWQxS2gwT1U2WXpobjRlVjJNVkY0RzlXRVFab1dFR2x0YXRk
UitudEdQTWw1QT09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAiaXMtZGlyZWN0b3J5IjogIjAuMy4xIiwKKyAgICAgICAgImpzLXlhbWwiOiAiMy43
LjAiLAorICAgICAgICAibWluaW1pc3QiOiAiMS4yLjAiLAorICAgICAgICAib2JqZWN0LWFzc2ln
biI6ICI0LjEuMSIsCisgICAgICAgICJvcy1ob21lZGlyIjogIjEuMC4yIiwKKyAgICAgICAgInBh
cnNlLWpzb24iOiAiMi4yLjAiLAorICAgICAgICAicmVxdWlyZS1mcm9tLXN0cmluZyI6ICIxLjIu
MSIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAibWluaW1pc3Qi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9taW5pbWlzdC8tL21pbmltaXN0LTEuMi4wLnRn
eiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLW8xQUlzZzlCT0Q3c0g3a1U5TTFkOTVv
bVFvUT0iLAogICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJmYXll
LXdlYnNvY2tldCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjEwLjAiLAotICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVx
dWlyZXMiOiB7Ci0gICAgICAgICAgICAid2Vic29ja2V0LWRyaXZlciI6ICIwLjYuNSIKLSAgICAg
ICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJmYi13YXRjaG1hbiI6IHsKLSAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjkuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAg
ICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJic2Vy
IjogIjEuMC4yIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImZpZ3VyZXMiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS43LjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICAgICAiZXNjYXBlLXN0cmluZy1yZWdleHAiOiAiMS4wLjUiLAotICAgICAgICAgICAgIm9i
amVjdC1hc3NpZ24iOiAiNC4xLjAiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAi
ZmlsZS1lbnRyeS1jYWNoZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJmbGF0LWNhY2hlIjogIjEuMi4xIiwKLSAgICAg
ICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4wIgotICAgICAgICAgIH0KLSAgICAgICAgfSwK
LSAgICAgICAgImZpbGUtbG9hZGVyIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuOS4wIiwK
LSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAg
ICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImxvYWRlci11dGlscyI6ICIwLjIuMTYi
Ci0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiZmlsZW5hbWUtcmVnZXgiOiB7Ci0g
ICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgImNyZWF0ZS1lY2RoIjogeworICAgICAg
InZlcnNpb24iOiAiNC4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2NyZWF0ZS1lY2RoLy0vY3JlYXRlLWVjZGgtNC4wLjAudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1pSXh5TlpiTjkyRXZaSmdqUHV2WG8xTUJjMzA9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYm4uanMiOiAiNC4xMS44
IiwKKyAgICAgICAgImVsbGlwdGljIjogIjYuNC4wIgorICAgICAgfQorICAgIH0sCisgICAgImNy
ZWF0ZS1lcnJvci1jbGFzcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMC4yIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jcmVhdGUtZXJyb3ItY2xhc3Mv
LS9jcmVhdGUtZXJyb3ItY2xhc3MtMy4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1CcjU2dnZsSG8vRktNUDFoQm5IVUFieW90N1k9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAiY2FwdHVyZS1zdGFjay10cmFjZSI6ICIxLjAuMCIK
KyAgICAgIH0KKyAgICB9LAorICAgICJjcmVhdGUtaGFzaCI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjEuMS4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9j
cmVhdGUtaGFzaC8tL2NyZWF0ZS1oYXNoLTEuMS4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtWUdCQ3JJdVNZblVQU0R5dDJyRDFnWkZ5MlAwPSIsCisgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImNpcGhlci1iYXNlIjogIjEuMC40IiwKKyAg
ICAgICAgImluaGVyaXRzIjogIjIuMC4zIiwKKyAgICAgICAgInJpcGVtZDE2MCI6ICIyLjAuMSIs
CisgICAgICAgICJzaGEuanMiOiAiMi40LjgiCisgICAgICB9CisgICAgfSwKKyAgICAiY3JlYXRl
LWhtYWMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuNiIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY3JlYXRlLWhtYWMvLS9jcmVhdGUtaG1hYy0xLjEu
Ni50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXJMbmlJYVRoZTlzSGJwQmxmRUs1UGpj
bXp3WT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJjaXBoZXItYmFzZSI6ICIxLjAuNCIsCisgICAgICAgICJjcmVhdGUtaGFzaCI6ICIxLjEuMyIs
CisgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICJyaXBlbWQxNjAiOiAiMi4w
LjEiLAorICAgICAgICAic2FmZS1idWZmZXIiOiAiNS4xLjEiLAorICAgICAgICAic2hhLmpzIjog
IjIuNC44IgorICAgICAgfQorICAgIH0sCisgICAgImNyZWF0ZS1yZWFjdC1jbGFzcyI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjE1LjYuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvY3JlYXRlLXJlYWN0LWNsYXNzLy0vY3JlYXRlLXJlYWN0LWNsYXNzLTE1
LjYuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXEwU0VsOEpsWnVIaWxCUG9neUI5
VjgvbnZ0UT0iLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZmJqcyI6ICIwLjguMTQi
LAorICAgICAgICAibG9vc2UtZW52aWZ5IjogIjEuMy4xIiwKKyAgICAgICAgIm9iamVjdC1hc3Np
Z24iOiAiNC4xLjEiCisgICAgICB9CisgICAgfSwKKyAgICAiY3Jvc3Mtc3Bhd24iOiB7CisgICAg
ICAidmVyc2lvbiI6ICI1LjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvY3Jvc3Mtc3Bhd24vLS9jcm9zcy1zcGF3bi01LjEuMC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLTZMME8vdVdQei9iNCtVVVFvS1ZVdS9valZFaz0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJscnUtY2FjaGUiOiAi
NC4xLjEiLAorICAgICAgICAic2hlYmFuZy1jb21tYW5kIjogIjEuMi4wIiwKKyAgICAgICAgIndo
aWNoIjogIjEuMy4wIgorICAgICAgfQorICAgIH0sCisgICAgImNyeXB0aWxlcyI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjIuMC41IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9jcnlwdGlsZXMvLS9jcnlwdGlsZXMtMi4wLjUudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1POS9zM0dDQlI4SEdjZ0w2S1I1OXlsbnFvN2c9IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYm9vbSI6ICIyLjEwLjEiCisg
ICAgICB9CisgICAgfSwKKyAgICAiY3J5cHRvLWJyb3dzZXJpZnkiOiB7CisgICAgICAidmVyc2lv
biI6ICIzLjExLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2NyeXB0by1icm93c2VyaWZ5Ly0vY3J5cHRvLWJyb3dzZXJpZnktMy4xMS4xLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1OYTdabHdDT3FvYVc1UndVSzFXcFh3czJrdjhtTmhX
ZFRsem9iMFVYdWxrNkc5QkRieWlKYUdUWUJJWDYxT3puOWwxRVBQSnBJQ1piNERhT3BUOU5sUT09
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYnJv
d3NlcmlmeS1jaXBoZXIiOiAiMS4wLjAiLAorICAgICAgICAiYnJvd3NlcmlmeS1zaWduIjogIjQu
MC40IiwKKyAgICAgICAgImNyZWF0ZS1lY2RoIjogIjQuMC4wIiwKKyAgICAgICAgImNyZWF0ZS1o
YXNoIjogIjEuMS4zIiwKKyAgICAgICAgImNyZWF0ZS1obWFjIjogIjEuMS42IiwKKyAgICAgICAg
ImRpZmZpZS1oZWxsbWFuIjogIjUuMC4yIiwKKyAgICAgICAgImluaGVyaXRzIjogIjIuMC4zIiwK
KyAgICAgICAgInBia2RmMiI6ICIzLjAuMTMiLAorICAgICAgICAicHVibGljLWVuY3J5cHQiOiAi
NC4wLjAiLAorICAgICAgICAicmFuZG9tYnl0ZXMiOiAiMi4wLjUiCisgICAgICB9CisgICAgfSwK
KyAgICAiY3NzLWNvbG9yLW5hbWVzIjogeworICAgICAgInZlcnNpb24iOiAiMC4wLjQiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Nzcy1jb2xvci1uYW1l
cy8tL2Nzcy1jb2xvci1uYW1lcy0wLjAuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LWdJcmNMbm5QaEhPQWFiWkd5eURzSjc2MktlQT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9
LAorICAgICJjc3MtbG9hZGVyIjogeworICAgICAgInZlcnNpb24iOiAiMC4yOC40IiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jc3MtbG9hZGVyLy0vY3Nz
LWxvYWRlci0wLjI4LjQudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1iUE5Ya1pMT05W
NkxPTlgwTGRlaDh1eUpqUTg9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAiYmFiZWwtY29kZS1mcmFtZSI6ICI2LjI2LjAiLAorICAgICAgICAiY3Nz
LXNlbGVjdG9yLXRva2VuaXplciI6ICIwLjcuMCIsCisgICAgICAgICJjc3NuYW5vIjogIjMuMTAu
MCIsCisgICAgICAgICJpY3NzLXV0aWxzIjogIjIuMS4wIiwKKyAgICAgICAgImxvYWRlci11dGls
cyI6ICIxLjEuMCIsCisgICAgICAgICJsb2Rhc2guY2FtZWxjYXNlIjogIjQuMy4wIiwKKyAgICAg
ICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjEiLAorICAgICAgICAicG9zdGNzcyI6ICI1LjIuMTci
LAorICAgICAgICAicG9zdGNzcy1tb2R1bGVzLWV4dHJhY3QtaW1wb3J0cyI6ICIxLjEuMCIsCisg
ICAgICAgICJwb3N0Y3NzLW1vZHVsZXMtbG9jYWwtYnktZGVmYXVsdCI6ICIxLjIuMCIsCisgICAg
ICAgICJwb3N0Y3NzLW1vZHVsZXMtc2NvcGUiOiAiMS4xLjAiLAorICAgICAgICAicG9zdGNzcy1t
b2R1bGVzLXZhbHVlcyI6ICIxLjMuMCIsCisgICAgICAgICJwb3N0Y3NzLXZhbHVlLXBhcnNlciI6
ICIzLjMuMCIsCisgICAgICAgICJzb3VyY2UtbGlzdC1tYXAiOiAiMC4xLjgiCisgICAgICB9LAor
ICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImhhcy1mbGFnIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvaGFzLWZsYWcvLS9oYXMtZmxhZy0xLjAuMC50Z3oiLAorICAgICAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1uWjU1TVdYT0FYb0E4QVFZeEQrVUtuc2RFZm89IiwKICAgICAg
ICAgICAiZGV2IjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAiZmlsZXNldCI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjIuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAicG9zdGNzcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI1LjIuMTciLAorICAgICAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wb3N0Y3NzLy0vcG9z
dGNzcy01LjIuMTcudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtejA5WmU0Wk5a
Y2lra3JMcXZwMXdiSWVjT0lzPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAg
InJlcXVpcmVzIjogewotICAgICAgICAgICAgImdsb2IiOiAiNS4wLjE1IiwKLSAgICAgICAgICAg
ICJtaW5pbWF0Y2giOiAiMi4wLjEwIgotICAgICAgICAgIH0sCi0gICAgICAgICAgImRlcGVuZGVu
Y2llcyI6IHsKLSAgICAgICAgICAgICJnbG9iIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6
ICI1LjAuMTUiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAg
ICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAg
ICAgImluZmxpZ2h0IjogIjEuMC41IiwKLSAgICAgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4w
LjMiLAotICAgICAgICAgICAgICAgICJtaW5pbWF0Y2giOiAiMi4wLjEwIiwKLSAgICAgICAgICAg
ICAgICAib25jZSI6ICIxLjQuMCIsCi0gICAgICAgICAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUi
OiAiMS4wLjAiCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAi
bWluaW1hdGNoIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMTAiLAotICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAg
ICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgImJyYWNlLWV4cGFuc2lv
biI6ICIxLjEuNiIKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICAgICAg
ImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAgICAgICJqcy1iYXNlNjQiOiAiMi4xLjkiLAorICAg
ICAgICAgICAgInNvdXJjZS1tYXAiOiAiMC41LjciLAorICAgICAgICAgICAgInN1cHBvcnRzLWNv
bG9yIjogIjMuMi4zIgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgImZpbGVzaXpl
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMy4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImZpbGwt
cmFuZ2UiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4yLjMiLAotICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjMuMi4zIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvc3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci0zLjIuMy50Z3oiLAorICAg
ICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1aYXdGQkxPVlFYSFlwa2xHc3E0OHU0cGZWUFk9IiwK
ICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAg
ICAgICAiaXMtbnVtYmVyIjogIjIuMS4wIiwKLSAgICAgICAgICAgICJpc29iamVjdCI6ICIyLjEu
MCIsCi0gICAgICAgICAgICAicmFuZG9tYXRpYyI6ICIxLjEuNSIsCi0gICAgICAgICAgICAicmVw
ZWF0LWVsZW1lbnQiOiAiMS4xLjIiLAotICAgICAgICAgICAgInJlcGVhdC1zdHJpbmciOiAiMS41
LjQiCisgICAgICAgICAgICAiaGFzLWZsYWciOiAiMS4wLjAiCiAgICAgICAgICAgfQotICAgICAg
ICB9LAotICAgICAgICAiZmluYWxoYW5kbGVyIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
NS4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICB9LAorICAgICJjc3Mtc2VsZWN0IjogeworICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Nzcy1zZWxlY3QvLS9j
c3Mtc2VsZWN0LTEuMi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtS3pvUkJUbkZO
VjhjMk5NVVlqNkhDeElleUZnPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgImJvb2xiYXNlIjogIjEuMC4wIiwKKyAgICAgICAgImNzcy13aGF0Ijog
IjIuMS4wIiwKKyAgICAgICAgImRvbXV0aWxzIjogIjEuNS4xIiwKKyAgICAgICAgIm50aC1jaGVj
ayI6ICIxLjAuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJjc3Mtc2VsZWN0b3ItdG9rZW5pemVy
IjogeworICAgICAgInZlcnNpb24iOiAiMC43LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2Nzcy1zZWxlY3Rvci10b2tlbml6ZXIvLS9jc3Mtc2VsZWN0
b3ItdG9rZW5pemVyLTAuNy4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtNXBpRWRL
Nk1sVFIzdjE1Ky9zL096Tm5QVElZPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgImNzc2VzYyI6ICIwLjEuMCIsCisgICAgICAgICJmYXN0cGFyc2Ui
OiAiMS4xLjEiLAorICAgICAgICAicmVnZXhwdS1jb3JlIjogIjEuMC4wIgorICAgICAgfSwKKyAg
ICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJyZWdleHB1LWNvcmUiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9yZWdleHB1LWNvcmUvLS9yZWdleHB1LWNvcmUtMS4wLjAudGd6IiwK
KyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaHFkajlZN2sxOEwyc1FMa2RrQlEzbjdaREdz
PSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgImRlYnVnIjogIjIuMi4wIiwKLSAgICAgICAgICAgICJlc2NhcGUtaHRtbCI6ICIx
LjAuMyIsCi0gICAgICAgICAgICAib24tZmluaXNoZWQiOiAiMi4zLjAiLAotICAgICAgICAgICAg
InN0YXR1c2VzIjogIjEuMy4wIiwKLSAgICAgICAgICAgICJ1bnBpcGUiOiAiMS4wLjAiCisgICAg
ICAgICAgICAicmVnZW5lcmF0ZSI6ICIxLjMuMiIsCisgICAgICAgICAgICAicmVnanNnZW4iOiAi
MC4yLjAiLAorICAgICAgICAgICAgInJlZ2pzcGFyc2VyIjogIjAuMS41IgogICAgICAgICAgIH0K
ICAgICAgICAgfSwKLSAgICAgICAgImZpbmQtY2FjaGUtZGlyIjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuMS4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRl
diI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImNvbW1vbmRp
ciI6ICIxLjAuMSIsCi0gICAgICAgICAgICAibWtkaXJwIjogIjAuNS4xIiwKLSAgICAgICAgICAg
ICJwa2ctZGlyIjogIjEuMC4wIgotICAgICAgICAgIH0KKyAgICAgICAgInJlZ2pzZ2VuIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVnanNnZW4vLS9yZWdqc2dlbi0wLjIuMC50Z3oiLAor
ICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1iQUZxM3F4VlQzV0NQK042d0Z1UzFhVHRzZmM9
IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAiZmluZC11cCI6
IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAicmVnanNwYXJzZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4x
LjUiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9y
ZWdqc3BhcnNlci8tL3JlZ2pzcGFyc2VyLTAuMS41LnRneiIsCisgICAgICAgICAgImludGVncml0
eSI6ICJzaGExLWZ1ajRUY2I2ZVMwLzBLNGlqU1M5bEo2dElGdz0iLAogICAgICAgICAgICJkZXYi
OiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJwYXRoLWV4aXN0
cyI6ICIyLjEuMCIsCi0gICAgICAgICAgICAicGlua2llLXByb21pc2UiOiAiMi4wLjEiCisgICAg
ICAgICAgICAianNlc2MiOiAiMC41LjAiCiAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAg
ICAiZmxhdC1jYWNoZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMSIsCi0gICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAiY3Nz
LXdoYXQiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY3NzLXdoYXQvLS9jc3Mtd2hhdC0yLjEuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLWxHZlFNc09NK3UrNTh0ZVZBU1V3WXZoL29iMD0i
LAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJjc3Nlc2MiOiB7CisgICAgICAidmVy
c2lvbiI6ICIwLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvY3NzZXNjLy0vY3NzZXNjLTAuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEteUJTUVBrVmlNM0dnUjN0QUVKcXErKzZ0MjdRPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAg
IH0sCisgICAgImNzc25hbm8iOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjEwLjAiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Nzc25hbm8vLS9jc3NuYW5v
LTMuMTAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVR6ajJ6cUs1c1grZ0ZKRHlQ
eDNHanFaY0hEZz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJhdXRvcHJlZml4ZXIiOiAiNi43LjciLAorICAgICAgICAiZGVjYW1lbGl6ZSI6ICIx
LjIuMCIsCisgICAgICAgICJkZWZpbmVkIjogIjEuMC4wIiwKKyAgICAgICAgImhhcyI6ICIxLjAu
MSIsCisgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4xIiwKKyAgICAgICAgInBvc3Rjc3Mi
OiAiNS4yLjE3IiwKKyAgICAgICAgInBvc3Rjc3MtY2FsYyI6ICI1LjMuMSIsCisgICAgICAgICJw
b3N0Y3NzLWNvbG9ybWluIjogIjIuMi4yIiwKKyAgICAgICAgInBvc3Rjc3MtY29udmVydC12YWx1
ZXMiOiAiMi42LjEiLAorICAgICAgICAicG9zdGNzcy1kaXNjYXJkLWNvbW1lbnRzIjogIjIuMC40
IiwKKyAgICAgICAgInBvc3Rjc3MtZGlzY2FyZC1kdXBsaWNhdGVzIjogIjIuMS4wIiwKKyAgICAg
ICAgInBvc3Rjc3MtZGlzY2FyZC1lbXB0eSI6ICIyLjEuMCIsCisgICAgICAgICJwb3N0Y3NzLWRp
c2NhcmQtb3ZlcnJpZGRlbiI6ICIwLjEuMSIsCisgICAgICAgICJwb3N0Y3NzLWRpc2NhcmQtdW51
c2VkIjogIjIuMi4zIiwKKyAgICAgICAgInBvc3Rjc3MtZmlsdGVyLXBsdWdpbnMiOiAiMi4wLjIi
LAorICAgICAgICAicG9zdGNzcy1tZXJnZS1pZGVudHMiOiAiMi4xLjciLAorICAgICAgICAicG9z
dGNzcy1tZXJnZS1sb25naGFuZCI6ICIyLjAuMiIsCisgICAgICAgICJwb3N0Y3NzLW1lcmdlLXJ1
bGVzIjogIjIuMS4yIiwKKyAgICAgICAgInBvc3Rjc3MtbWluaWZ5LWZvbnQtdmFsdWVzIjogIjEu
MC41IiwKKyAgICAgICAgInBvc3Rjc3MtbWluaWZ5LWdyYWRpZW50cyI6ICIxLjAuNSIsCisgICAg
ICAgICJwb3N0Y3NzLW1pbmlmeS1wYXJhbXMiOiAiMS4yLjIiLAorICAgICAgICAicG9zdGNzcy1t
aW5pZnktc2VsZWN0b3JzIjogIjIuMS4xIiwKKyAgICAgICAgInBvc3Rjc3Mtbm9ybWFsaXplLWNo
YXJzZXQiOiAiMS4xLjEiLAorICAgICAgICAicG9zdGNzcy1ub3JtYWxpemUtdXJsIjogIjMuMC44
IiwKKyAgICAgICAgInBvc3Rjc3Mtb3JkZXJlZC12YWx1ZXMiOiAiMi4yLjMiLAorICAgICAgICAi
cG9zdGNzcy1yZWR1Y2UtaWRlbnRzIjogIjIuNC4wIiwKKyAgICAgICAgInBvc3Rjc3MtcmVkdWNl
LWluaXRpYWwiOiAiMS4wLjEiLAorICAgICAgICAicG9zdGNzcy1yZWR1Y2UtdHJhbnNmb3JtcyI6
ICIxLjAuNCIsCisgICAgICAgICJwb3N0Y3NzLXN2Z28iOiAiMi4xLjYiLAorICAgICAgICAicG9z
dGNzcy11bmlxdWUtc2VsZWN0b3JzIjogIjIuMC4yIiwKKyAgICAgICAgInBvc3Rjc3MtdmFsdWUt
cGFyc2VyIjogIjMuMy4wIiwKKyAgICAgICAgInBvc3Rjc3MtemluZGV4IjogIjIuMi4wIgorICAg
ICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJhdXRvcHJlZml4ZXIiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiNi43LjciLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hdXRvcHJlZml4ZXIvLS9hdXRvcHJlZml4ZXItNi43
LjcudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtSGIwY2cxWlk0MXpqK1poQW1k
c0FXRng0SUJRPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVz
IjogewotICAgICAgICAgICAgImNpcmN1bGFyLWpzb24iOiAiMC4zLjEiLAotICAgICAgICAgICAg
ImRlbCI6ICIyLjIuMiIsCi0gICAgICAgICAgICAiZ3JhY2VmdWwtZnMiOiAiNC4xLjgiLAotICAg
ICAgICAgICAgIndyaXRlIjogIjAuMi4xIgorICAgICAgICAgICAgImJyb3dzZXJzbGlzdCI6ICIx
LjcuNyIsCisgICAgICAgICAgICAiY2FuaXVzZS1kYiI6ICIxLjAuMzAwMDA3MjYiLAorICAgICAg
ICAgICAgIm5vcm1hbGl6ZS1yYW5nZSI6ICIwLjEuMiIsCisgICAgICAgICAgICAibnVtMmZyYWN0
aW9uIjogIjEuMi4yIiwKKyAgICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4xNyIsCisgICAgICAg
ICAgICAicG9zdGNzcy12YWx1ZS1wYXJzZXIiOiAiMy4zLjAiCiAgICAgICAgICAgfQogICAgICAg
ICB9LAotICAgICAgICAiZmxhdHRlbiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIs
Ci0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAg
ICAgIH0sCi0gICAgICAgICJmb3ItaW4iOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4xLjYi
LAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAg
ICAgICB9LAotICAgICAgICAiZm9yLW93biI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjEu
NCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAiYnJvd3NlcnNsaXN0Ijog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNy43IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYnJvd3NlcnNsaXN0Ly0vYnJvd3NlcnNsaXN0LTEu
Ny43LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLUM5ZG5CQ1dMNkNteU9ZdTFE
a3RpMGFGbXNMaz0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJl
cyI6IHsKLSAgICAgICAgICAgICJmb3ItaW4iOiAiMC4xLjYiCisgICAgICAgICAgICAiY2FuaXVz
ZS1kYiI6ICIxLjAuMzAwMDA3MjYiLAorICAgICAgICAgICAgImVsZWN0cm9uLXRvLWNocm9taXVt
IjogIjEuMy4yMSIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJmb3JldmVyLWFn
ZW50IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNi4xIiwKLSAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICJoYXMtZmxhZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2hhcy1mbGFnLy0vaGFzLWZsYWctMS4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtblo1NU1XWE9BWG9BOEFRWXhEK1VLbnNkRWZvPSIsCiAgICAgICAgICAgImRldiI6IHRy
dWUKICAgICAgICAgfSwKLSAgICAgICAgImZvcm0tZGF0YSI6IHsKLSAgICAgICAgICAidmVyc2lv
biI6ICIyLjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAicG9zdGNz
cyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI1LjIuMTciLAorICAgICAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wb3N0Y3NzLy0vcG9zdGNzcy01LjIuMTcu
dGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtejA5WmU0Wk5aY2lra3JMcXZwMXdi
SWVjT0lzPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjog
ewotICAgICAgICAgICAgImFzeW5ja2l0IjogIjAuNC4wIiwKLSAgICAgICAgICAgICJjb21iaW5l
ZC1zdHJlYW0iOiAiMS4wLjUiLAotICAgICAgICAgICAgIm1pbWUtdHlwZXMiOiAiMi4xLjEyIgor
ICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAgICAgICJqcy1iYXNlNjQiOiAi
Mi4xLjkiLAorICAgICAgICAgICAgInNvdXJjZS1tYXAiOiAiMC41LjciLAorICAgICAgICAgICAg
InN1cHBvcnRzLWNvbG9yIjogIjMuMi4zIgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAg
ICAgImZvcndhcmRlZCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMCIsCi0gICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0g
ICAgICAgICJmcmVzaCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjMuMCIsCi0gICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0g
ICAgICAgICJmcy1leHRyYSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjMwLjAiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjMuMi4zIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci0zLjIu
My50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1aYXdGQkxPVlFYSFlwa2xHc3E0
OHU0cGZWUFk9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMi
OiB7Ci0gICAgICAgICAgICAiZ3JhY2VmdWwtZnMiOiAiNC4xLjgiLAotICAgICAgICAgICAgImpz
b25maWxlIjogIjIuNC4wIiwKLSAgICAgICAgICAgICJrbGF3IjogIjEuMy4wIiwKLSAgICAgICAg
ICAgICJwYXRoLWlzLWFic29sdXRlIjogIjEuMC4wIiwKLSAgICAgICAgICAgICJyaW1yYWYiOiAi
Mi41LjQiCisgICAgICAgICAgICAiaGFzLWZsYWciOiAiMS4wLjAiCiAgICAgICAgICAgfQotICAg
ICAgICB9LAotICAgICAgICAiZnMucmVhbHBhdGgiOiB7CisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICB9LAorICAgICJjc3NvIjogeworICAgICAgInZlcnNpb24iOiAiMi4zLjIiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Nzc28vLS9jc3NvLTIuMy4yLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtM2RVc1dIQXo5SjZVdHgvRlZXbnlVdWovWDRV
PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImNs
YXAiOiAiMS4yLjAiLAorICAgICAgICAic291cmNlLW1hcCI6ICIwLjUuNyIKKyAgICAgIH0KKyAg
ICB9LAorICAgICJjc3NvbSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMy4yIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jc3NvbS8tL2Nzc29tLTAuMy4y
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdUFOaGNNZWZCNmtQOHZGdUlpaEFKNkpE
aElzPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImNzc3N0eWxlIjogeworICAg
ICAgInZlcnNpb24iOiAiMC4yLjM3IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9jc3NzdHlsZS8tL2Nzc3N0eWxlLTAuMi4zNy50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLVZCQ1hJMHl5VVR5RHp1MDZ6ZHduL3llWWZWUT0iLAorICAgICAgImRl
diI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjc3NvbSI6ICIwLjMuMiIK
KyAgICAgIH0KKyAgICB9LAorICAgICJjdXJyZW50bHktdW5oYW5kbGVkIjogeworICAgICAgInZl
cnNpb24iOiAiMC40LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2N1cnJlbnRseS11bmhhbmRsZWQvLS9jdXJyZW50bHktdW5oYW5kbGVkLTAuNC4xLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbUkzelArcXhrZTk1bW1FMm5kZHNGNjM1Vitv
PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFy
cmF5LWZpbmQtaW5kZXgiOiAiMS4wLjIiCisgICAgICB9CisgICAgfSwKKyAgICAiZCI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9kLy0vZC0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LWRVdTF2K1ZVVWRwcHBZdVUxRjlNV3dSaTFZOD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICJlczUtZXh0IjogIjAuMTAuMzAiCisgICAgICB9Cisg
ICAgfSwKKyAgICAiZGFtZXJhdS1sZXZlbnNodGVpbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEu
MC40IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kYW1l
cmF1LWxldmVuc2h0ZWluLy0vZGFtZXJhdS1sZXZlbnNodGVpbi0xLjAuNC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLUF4a2NReXkyN3FGb3UzZnpwVi85ekxpWGhSUT0iLAorICAgICAg
ImRldiI6IHRydWUKKyAgICB9LAorICAgICJkYXNoZGFzaCI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjEuMTQuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
ZGFzaGRhc2gvLS9kYXNoZGFzaC0xLjE0LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1oVHo2RDN5K0wrMWQ0Z01tdU4xWUVEWDI0dkE9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAiYXNzZXJ0LXBsdXMiOiAiMS4wLjAiCisgICAgICB9
LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImFzc2VydC1wbHVzIjogewogICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0g
ICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImZ1bmN0aW9uLWJpbmQi
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiZ2VuZXJh
dGUtZnVuY3Rpb24iOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAotICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvYXNzZXJ0LXBsdXMvLS9hc3NlcnQtcGx1cy0xLjAuMC50Z3oiLAorICAgICAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS04UzRQUEYxM3NMSE4yUlJwUXVUcGJCNU4xU1U9IiwKICAg
ICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiZ2VuZXJhdGUtb2JqZWN0
LXByb3BlcnR5IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKLSAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVp
cmVzIjogewotICAgICAgICAgICAgImlzLXByb3BlcnR5IjogIjEuMC4yIgotICAgICAgICAgIH0K
LSAgICAgICAgfSwKLSAgICAgICAgImdldC1jYWxsZXItZmlsZSI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIxLjAuMiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICB9Cisg
ICAgICB9CisgICAgfSwKKyAgICAiZGF0ZS1ub3ciOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEu
NCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZGF0ZS1u
b3cvLS9kYXRlLW5vdy0wLjEuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTZ2UTUv
VTFJU0sxMDVjeDl2dklBWnl1ZU5Gcz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJkZWJ1ZyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuNi44IiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kZWJ1Zy8tL2RlYnVnLTIuNi44LnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtNXpGVEhLTHQ0bjBZZ2lKQ2ZhRjRJZGFQOVB3PSIsCisg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgIm1zIjogIjIu
MC4wIgorICAgICAgfQorICAgIH0sCisgICAgImRlY2FtZWxpemUiOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjIuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvZGVjYW1lbGl6ZS8tL2RlY2FtZWxpemUtMS4yLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS05bE5ORlJTQ2FiSURVdWUrNG05UUg1b1pFcEE9IiwKKyAgICAgICJkZXYiOiB0cnVl
CisgICAgfSwKKyAgICAiZGVlcC1lcXVhbCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kZWVwLWVxdWFs
Ly0vZGVlcC1lcXVhbC0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTlkSmdL
U3RtRGdoTy8wemJ5ZkNLMHlSMFNMVT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJkZWVwLWV4dGVuZCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNC4yIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kZWVwLWV4dGVuZC8tL2RlZXAtZXh0
ZW5kLTAuNC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtU0xhWnduNHpTL2lmRUlr
cjVETDI1TWZUU244PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImRlZXAtaXMi
OiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZGVlcC1pcy8tL2RlZXAtaXMtMC4xLjMudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1zMm5XKzEyOEUrN1BVaytSc0hEKzdjTlh6elE9IiwKKyAgICAg
ICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZGVmYXVsdC1yZXF1aXJlLWV4dGVuc2lvbnMiOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvZGVmYXVsdC1yZXF1aXJlLWV4dGVuc2lvbnMvLS9kZWZhdWx0LXJl
cXVpcmUtZXh0ZW5zaW9ucy0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTgz
NmhYVDRULzltME45TStHblcxKzVlSFRMZz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICJzdHJpcC1ib20iOiAiMi4wLjAiCisgICAgICB9CisgICAg
fSwKKyAgICAiZGVmaW5lLXByb3BlcnRpZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMiIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZGVmaW5lLXBy
b3BlcnRpZXMvLS9kZWZpbmUtcHJvcGVydGllcy0xLjEuMi50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLWc2Yy9MK3BXbUpqN2MzR1R5UGh6eXZiVVhKUT0iLAorICAgICAgImRldiI6IHRy
dWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJmb3JlYWNoIjogIjIuMC41IiwKKyAg
ICAgICAgIm9iamVjdC1rZXlzIjogIjEuMC4xMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJkZWZp
bmVkIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RlZmluZWQvLS9kZWZpbmVkLTEuMC4wLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEteVkyYnp2ZFdkQmlPRVFscEZSR1o0NXNmcHBNPSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImRlbCI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjIuMi4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9k
ZWwvLS9kZWwtMi4yLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS13U3lZSFFaNFJz
aEx5dmhpei9rdzJRZi8wYWc9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAiZ2xvYmJ5IjogIjUuMC4wIiwKKyAgICAgICAgImlzLXBhdGgtY3dkIjog
IjEuMC4wIiwKKyAgICAgICAgImlzLXBhdGgtaW4tY3dkIjogIjEuMC4wIiwKKyAgICAgICAgIm9i
amVjdC1hc3NpZ24iOiAiNC4xLjEiLAorICAgICAgICAicGlmeSI6ICIyLjMuMCIsCisgICAgICAg
ICJwaW5raWUtcHJvbWlzZSI6ICIyLjAuMSIsCisgICAgICAgICJyaW1yYWYiOiAiMi42LjEiCisg
ICAgICB9CisgICAgfSwKKyAgICAiZGVsYXllZC1zdHJlYW0iOiB7CisgICAgICAidmVyc2lvbiI6
ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
ZGVsYXllZC1zdHJlYW0vLS9kZWxheWVkLXN0cmVhbS0xLjAuMC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLTN6cmhtYXl0KzMxRUNxcmdzcDRpY3JKT3hoaz0iLAorICAgICAgImRldiI6
IHRydWUKKyAgICB9LAorICAgICJkZXBkIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RlcGQvLS9kZXBk
LTEuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVjRPMDRjUlo4RytseWlmNWtm
UFFibm94QTFrPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImRlcy5qcyI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9kZXMuanMvLS9kZXMuanMtMS4wLjAudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS13SFRTNHFwcWlwb0gyOVlmbWhYQ3pZUHNqc3c9IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMi
LAorICAgICAgICAibWluaW1hbGlzdGljLWFzc2VydCI6ICIxLjAuMCIKKyAgICAgIH0KKyAgICB9
LAorICAgICJkZXN0cm95IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjQiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Rlc3Ryb3kvLS9kZXN0cm95LTEu
MC40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbDRoWFJDeEVkSjVDQm1FK041UmlC
WUpxdllBPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImRldGVjdC1pbmRlbnQi
OiB7CisgICAgICAidmVyc2lvbiI6ICI0LjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZGV0ZWN0LWluZGVudC8tL2RldGVjdC1pbmRlbnQtNC4wLjAu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS05MjBHUTFMTjlEb2N0czVobkU3anFVZGQ0
Z2c9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAi
cmVwZWF0aW5nIjogIjIuMC4xIgorICAgICAgfQorICAgIH0sCisgICAgImRldGVjdC1ub2RlIjog
eworICAgICAgInZlcnNpb24iOiAiMi4wLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2RldGVjdC1ub2RlLy0vZGV0ZWN0LW5vZGUtMi4wLjMudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1vZ004Q2N5T0ZZMDNkSSs5NTFCNE1yMXM0U2M9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZGV0ZWN0LXBvcnQtYWx0IjogeworICAg
ICAgInZlcnNpb24iOiAiMS4xLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2RldGVjdC1wb3J0LWFsdC8tL2RldGVjdC1wb3J0LWFsdC0xLjEuMy50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLXBOTHdZZGRYb0RUczgzeFJRbUNwaDFEeXNURT0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJhZGRy
ZXNzIjogIjEuMC4yIiwKKyAgICAgICAgImRlYnVnIjogIjIuNi44IgorICAgICAgfQorICAgIH0s
CisgICAgImRpZmYiOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjMuMSIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZGlmZi8tL2RpZmYtMy4zLjEudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLU1LUEhaRE1CMG82eUh5RHJ5VU9TY3FaaWJwOTE0
a3NYd0FNWU1USGo2S084VWVLc1JZTkpEM29OQ0tqVHFab24rVjQ4OFA3Ti9IelhGOHQ3WlI5NXd3
PT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJkaWZmaWUtaGVsbG1hbiI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjUuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9kaWZmaWUtaGVsbG1hbi8tL2RpZmZpZS1oZWxsbWFuLTUuMC4yLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdFlOWE9TY00vaWFzOWpJSm45N1NvSDhnbmw0
PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJu
LmpzIjogIjQuMTEuOCIsCisgICAgICAgICJtaWxsZXItcmFiaW4iOiAiNC4wLjAiLAorICAgICAg
ICAicmFuZG9tYnl0ZXMiOiAiMi4wLjUiCisgICAgICB9CisgICAgfSwKKyAgICAiZG5zLWVxdWFs
IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2Rucy1lcXVhbC8tL2Rucy1lcXVhbC0xLjAuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLXM1NS9IYWJyQ25XNm5CY3lTelIxUEVmZ1pVMD0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJkbnMtcGFja2V0IjogeworICAgICAgInZl
cnNpb24iOiAiMS4yLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2Rucy1wYWNrZXQvLS9kbnMtcGFja2V0LTEuMi4yLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTUxMi1rTitEamZHRjdkSkdVTDduV1JrdEw5WjE4dDFyV1AzYVFseVpkWThYbHB2
VTNOYzZHZUZUUUFwZnRjanRXS3hBWmZpZ2daU0dyQ0Vvc3pOZ3ZucHdEZz09IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaXAiOiAiMS4xLjUiLAor
ICAgICAgICAic2FmZS1idWZmZXIiOiAiNS4xLjEiCisgICAgICB9CisgICAgfSwKKyAgICAiZG5z
LXR4dCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kbnMtdHh0Ly0vZG5zLXR4dC0yLjAuMi50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLXVSMkFiMTBuR0k1S3MrZlJCOWlCb2N4R1FyWT0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJidWZmZXIt
aW5kZXhvZiI6ICIxLjEuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJkb2N0cmluZSI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9kb2N0cmluZS8tL2RvY3RyaW5lLTIuMC4wLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEteHoyTktRblNJcEhob0FlamxZQk5xTFpsL21NPSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImVzdXRpbHMiOiAiMi4wLjIi
LAorICAgICAgICAiaXNhcnJheSI6ICIxLjAuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJkb20t
Y29udmVydGVyIjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjQiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RvbS1jb252ZXJ0ZXIvLS9kb20tY29udmVy
dGVyLTAuMS40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcEY3MWNudUpESnYvNXRm
SWR1ZXhuTERoZnpzPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgInV0aWxhIjogIjAuMy4zIgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMi
OiB7CisgICAgICAgICJ1dGlsYSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjMuMyIsCisg
ICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3V0aWxhLy0v
dXRpbGEtMC4zLjMudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMStqbjErTUpF
SENTc0YrTmxvaUNUV002UWlZPSIsCiAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwK
LSAgICAgICAgImdldC1zdGRpbiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI0LjAuMSIsCi0g
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAg
ICAiZG9tLXNlcmlhbGl6ZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuMCIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZG9tLXNlcmlhbGl6ZXIvLS9k
b20tc2VyaWFsaXplci0wLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUJ6eHBk
VWJPQjRET0k3NUtLT0tUNUF2RERJST0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICJkb21lbGVtZW50dHlwZSI6ICIxLjEuMyIsCisgICAgICAgICJl
bnRpdGllcyI6ICIxLjEuMSIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAg
ICAgICAiZG9tZWxlbWVudHR5cGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjMiLAor
ICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kb21lbGVt
ZW50dHlwZS8tL2RvbWVsZW1lbnR0eXBlLTEuMS4zLnRneiIsCisgICAgICAgICAgImludGVncml0
eSI6ICJzaGExLXZTaDNQaVpDaUJyc1VWUkpKQ21jWE5naUdGcz0iLAogICAgICAgICAgICJkZXYi
OiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJnZXRwYXNzIjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuMS42IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRl
diI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImFzc2VydC1w
bHVzIjogIjEuMC4wIgotICAgICAgICAgIH0sCi0gICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsK
LSAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJk
ZXYiOiB0cnVlCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAg
ICAiZ2xvYiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI3LjEuMCIsCi0gICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJl
cyI6IHsKLSAgICAgICAgICAgICJmcy5yZWFscGF0aCI6ICIxLjAuMCIsCi0gICAgICAgICAgICAi
aW5mbGlnaHQiOiAiMS4wLjUiLAotICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4zIiwKLSAg
ICAgICAgICAgICJtaW5pbWF0Y2giOiAiMy4wLjMiLAotICAgICAgICAgICAgIm9uY2UiOiAiMS40
LjAiLAotICAgICAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUiOiAiMS4wLjAiCi0gICAgICAgICAg
fQotICAgICAgICB9LAotICAgICAgICAiZ2xvYi1iYXNlIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMy4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImdsb2ItcGFyZW50
IjogIjIuMC4wIiwKLSAgICAgICAgICAgICJpcy1nbG9iIjogIjIuMC4xIgotICAgICAgICAgIH0K
LSAgICAgICAgfSwKLSAgICAgICAgImdsb2ItcGFyZW50IjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjIuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImlzLWdsb2IiOiAi
Mi4wLjEiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiZ2xvYmFscyI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICI4LjE4LjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgImRvbS11cmxzIjogeworICAgICAgInZl
cnNpb24iOiAiMS4xLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2RvbS11cmxzLy0vZG9tLXVybHMtMS4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1BQjNmZ1dLTTBlY0dFbHh4ZHZVOHpzVmRrWTQ9IiwKKyAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAidXJpanMiOiAiMS4xOC4xMiIKKyAgICAg
IH0KKyAgICB9LAorICAgICJkb21haW4tYnJvd3NlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEu
MS43IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kb21h
aW4tYnJvd3Nlci8tL2RvbWFpbi1icm93c2VyLTEuMS43LnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtaG5xa3NKUDZvRjhkNEl3RzlOZXlIOStHbUx3PSIsCisgICAgICAiZGV2IjogdHJ1
ZQorICAgIH0sCisgICAgImRvbWVsZW1lbnR0eXBlIjogeworICAgICAgInZlcnNpb24iOiAiMS4z
LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RvbWVs
ZW1lbnR0eXBlLy0vZG9tZWxlbWVudHR5cGUtMS4zLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1zWHJ0Z3VpcldlVXQyY0diRjFiZy9CaHlCTUk9IiwKKyAgICAgICJkZXYiOiB0cnVl
CisgICAgfSwKKyAgICAiZG9taGFuZGxlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuNC4xIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kb21oYW5kbGVy
Ly0vZG9taGFuZGxlci0yLjQuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWlTNUhB
QXFadmxXNzgzZFAvcUJXSFloNXdsaz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICJkb21lbGVtZW50dHlwZSI6ICIxLjMuMCIKKyAgICAgIH0KKyAg
ICB9LAorICAgICJkb211dGlscyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuNS4xIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kb211dGlscy8tL2RvbXV0
aWxzLTEuNS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtM05oSWlpYjFZOVlRZWVT
TW4zdCtNamMyZ3M4PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgImRvbS1zZXJpYWxpemVyIjogIjAuMS4wIiwKKyAgICAgICAgImRvbWVsZW1lbnR0
eXBlIjogIjEuMy4wIgorICAgICAgfQorICAgIH0sCisgICAgImRvdC1wcm9wIjogeworICAgICAg
InZlcnNpb24iOiAiMy4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2RvdC1wcm9wLy0vZG90LXByb3AtMy4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1HM0NLOEpTa25Kb09mYnl0ZVFxNlU1MnNFWGM9IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaXMtb2JqIjogIjEuMC4xIgorICAg
ICAgfQorICAgIH0sCisgICAgImRvdGVudiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMC4wIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kb3RlbnYvLS9k
b3RlbnYtNC4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1oazd4TjVyTzFWem0r
VjNyN056aGVmZWd6UjA9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZHVwbGV4
ZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZHVwbGV4ZXIvLS9kdXBsZXhlci0wLjEuMS50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLXJPYi9nSXdjNW10WDBldjVlWGVzc0NNMHo4RT0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJkdXBsZXhlcjIiOiB7CisgICAgICAidmVy
c2lvbiI6ICIwLjEuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvZHVwbGV4ZXIyLy0vZHVwbGV4ZXIyLTAuMS40LnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtaXhMYXVIakExcDQrZUpFRkZtS2pMOGE5M01FPSIsCisgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6ICIyLjMu
MyIKKyAgICAgIH0KKyAgICB9LAorICAgICJlY2MtanNibiI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjAuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9l
Y2MtanNibi8tL2VjYy1qc2JuLTAuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
RDhjNm50WHcxVHc0R1RPWVVqNzM1VU4zZFFVPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICJvcHRpb25hbCI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJqc2JuIjog
IjAuMS4xIgorICAgICAgfQorICAgIH0sCisgICAgImVlLWZpcnN0IjogeworICAgICAgInZlcnNp
b24iOiAiMS4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2VlLWZpcnN0Ly0vZWUtZmlyc3QtMS4xLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1XUXhoRldzSzR2VHdKVmN5b1ZpeVpyeFdzaDA9IiwKKyAgICAgICJkZXYiOiB0cnVlCisg
ICAgfSwKKyAgICAiZWxlY3Ryb24tdG8tY2hyb21pdW0iOiB7CisgICAgICAidmVyc2lvbiI6ICIx
LjMuMjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Vs
ZWN0cm9uLXRvLWNocm9taXVtLy0vZWxlY3Ryb24tdG8tY2hyb21pdW0tMS4zLjIxLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtcVdmcjNQNk8wQWcvd2tUUmlVQWlxT2dSUHFJPSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImVsbGlwdGljIjogeworICAgICAgInZlcnNp
b24iOiAiNi40LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2VsbGlwdGljLy0vZWxsaXB0aWMtNi40LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS15c212aDJMSVdEWVljQVBJMytHVDVlTHE1ZDg9IiwKKyAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYm4uanMiOiAiNC4xMS44IiwKKyAgICAgICAg
ImJyb3JhbmQiOiAiMS4xLjAiLAorICAgICAgICAiaGFzaC5qcyI6ICIxLjEuMyIsCisgICAgICAg
ICJobWFjLWRyYmciOiAiMS4wLjEiLAorICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiLAorICAg
ICAgICAibWluaW1hbGlzdGljLWFzc2VydCI6ICIxLjAuMCIsCisgICAgICAgICJtaW5pbWFsaXN0
aWMtY3J5cHRvLXV0aWxzIjogIjEuMC4xIgorICAgICAgfQorICAgIH0sCisgICAgImVtb2ppLXJl
Z2V4IjogeworICAgICAgInZlcnNpb24iOiAiNi41LjEiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Vtb2ppLXJlZ2V4Ly0vZW1vamktcmVnZXgtNi41LjEu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLVBBSHA2VHhyQ3k3TUdNRmlkcm84dWlr
cit6bEpKS0ovUTZtbTJFeFo3SHdreVI5bFNWRmZFM2t0MzZxY3dhMjRCUUw3eTBHOWF4eWNHaksx
QS8wdU5RPT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJlbW9qaXMtbGlzdCI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lbW9qaXMtbGlzdC8tL2Vtb2ppcy1saXN0LTIuMS4wLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVGFwTm5iQVBtQm1JREhuNlJYcmxzSm9mMDRrPSIs
CisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImVuY29kZXVybCI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9lbmNvZGV1cmwvLS9lbmNvZGV1cmwtMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1lZVBWaGxVMGFRbitidzlGcGQ1b0VEc3BUU0E9IiwKKyAgICAgICJkZXYiOiB0
cnVlCisgICAgfSwKKyAgICAiZW5jb2RpbmciOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuMTIi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VuY29kaW5n
Ly0vZW5jb2RpbmctMC4xLjEyLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVTR0bTgr
NWl6UnExSHNNamdwMGZsSURIUytzPSIsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJp
Y29udi1saXRlIjogIjAuNC4xOCIKKyAgICAgIH0KKyAgICB9LAorICAgICJlbmhhbmNlZC1yZXNv
bHZlIjogeworICAgICAgInZlcnNpb24iOiAiMy40LjEiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VuaGFuY2VkLXJlc29sdmUvLS9lbmhhbmNlZC1yZXNv
bHZlLTMuNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtQkNIak9mMXhRWnM5b1Qw
U216bDVCQUl3UjI0PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS4xMSIsCisgICAgICAgICJtZW1vcnktZnMiOiAi
MC40LjEiLAorICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMSIsCisgICAgICAgICJ0YXBh
YmxlIjogIjAuMi44IgorICAgICAgfQorICAgIH0sCisgICAgImVudGl0aWVzIjogeworICAgICAg
InZlcnNpb24iOiAiMS4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2VudGl0aWVzLy0vZW50aXRpZXMtMS4xLjEudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1ibHd0Q2xZaHRkcmE3TytBdVE3ZnRjMTNjdkE9IiwKKyAgICAgICJkZXYiOiB0
cnVlCisgICAgfSwKKyAgICAiZW56eW1lIjogeworICAgICAgInZlcnNpb24iOiAiMi45LjEiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VuenltZS8tL2Vu
enltZS0yLjkuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUI5WE9hUkpCSkErNEY3
OHNTeGpXNVRBa0RmWT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICJjaGVlcmlvIjogIjAuMjIuMCIsCisgICAgICAgICJmdW5jdGlvbi5wcm90b3R5
cGUubmFtZSI6ICIxLjAuMyIsCisgICAgICAgICJpcy1zdWJzZXQiOiAiMC4xLjEiLAorICAgICAg
ICAibG9kYXNoIjogIjQuMTcuNCIsCisgICAgICAgICJvYmplY3QtaXMiOiAiMS4wLjEiLAorICAg
ICAgICAib2JqZWN0LmFzc2lnbiI6ICI0LjAuNCIsCisgICAgICAgICJvYmplY3QuZW50cmllcyI6
ICIxLjAuNCIsCisgICAgICAgICJvYmplY3QudmFsdWVzIjogIjEuMC40IiwKKyAgICAgICAgInBy
b3AtdHlwZXMiOiAiMTUuNS4xMCIsCisgICAgICAgICJ1dWlkIjogIjMuMS4wIgorICAgICAgfQor
ICAgIH0sCisgICAgImVycm5vIjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjQiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Vycm5vLy0vZXJybm8tMC4x
LjQudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS11SmJpT3A1ZWk2TTRjZnlaYXIwMk5m
eWFISDA9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAicHJyIjogIjAuMC4wIgorICAgICAgfQorICAgIH0sCisgICAgImVycm9yLWV4IjogeworICAg
ICAgInZlcnNpb24iOiAiMS4zLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2Vycm9yLWV4Ly0vZXJyb3ItZXgtMS4zLjEudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS0rRldvYk9ZYTNFNkdJY1BOb2g1NmRoTERxTnc9IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaXMtYXJyYXlpc2giOiAiMC4y
LjEiCisgICAgICB9CisgICAgfSwKKyAgICAiZXMtYWJzdHJhY3QiOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjguMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvZXMtYWJzdHJhY3QvLS9lcy1hYnN0cmFjdC0xLjguMi50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGE1MTItZHZod0ZMM3lqUXhOTnNPV3g2ZXhNbGFEclJIQ1JHTVFsbng1bHNYRENaL0o3
Ry9mcmdJSWw5NHpoWlNwL2dhbFZBWXA3VnpQaTFPckFIdGE4OS95R1E9PSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImVzLXRvLXByaW1pdGl2ZSI6
ICIxLjEuMSIsCisgICAgICAgICJmdW5jdGlvbi1iaW5kIjogIjEuMS4xIiwKKyAgICAgICAgImhh
cyI6ICIxLjAuMSIsCisgICAgICAgICJpcy1jYWxsYWJsZSI6ICIxLjEuMyIsCisgICAgICAgICJp
cy1yZWdleCI6ICIxLjAuNCIKKyAgICAgIH0KKyAgICB9LAorICAgICJlcy10by1wcmltaXRpdmUi
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXMtdG8tcHJpbWl0aXZlLy0vZXMtdG8tcHJpbWl0aXZlLTEu
MS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUlRWU1NLaUplUU5MWjVMaG03Z2ZL
M2wxM1EwPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgImlzLWNhbGxhYmxlIjogIjEuMS4zIiwKKyAgICAgICAgImlzLWRhdGUtb2JqZWN0IjogIjEu
MC4xIiwKKyAgICAgICAgImlzLXN5bWJvbCI6ICIxLjAuMSIKKyAgICAgIH0KKyAgICB9LAorICAg
ICJlczUtZXh0IjogeworICAgICAgInZlcnNpb24iOiAiMC4xMC4zMCIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXM1LWV4dC8tL2VzNS1leHQtMC4xMC4z
MC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWNVR2hhRFpwZmJxL3FxN3VRVWxjNHA5
U3lUaz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJlczYtaXRlcmF0b3IiOiAiMi4wLjEiLAorICAgICAgICAiZXM2LXN5bWJvbCI6ICIzLjEuMSIK
KyAgICAgIH0KKyAgICB9LAorICAgICJlczYtaXRlcmF0b3IiOiB7CisgICAgICAidmVyc2lvbiI6
ICIyLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
ZXM2LWl0ZXJhdG9yLy0vZXM2LWl0ZXJhdG9yLTIuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtampHY253UlR2MWRkTjBsQXBsV1NEbG5LVlJJPSIsCisgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImQiOiAiMS4wLjAiLAorICAgICAgICAi
ZXM1LWV4dCI6ICIwLjEwLjMwIiwKKyAgICAgICAgImVzNi1zeW1ib2wiOiAiMy4xLjEiCisgICAg
ICB9CisgICAgfSwKKyAgICAiZXM2LW1hcCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS41IiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lczYtbWFwLy0v
ZXM2LW1hcC0wLjEuNS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWtUYmdVRDNNQnFN
QmFROExzVS8wNDJUcFNmQT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJkIjogIjEuMC4wIiwKKyAgICAgICAgImVzNS1leHQiOiAiMC4xMC4zMCIs
CisgICAgICAgICJlczYtaXRlcmF0b3IiOiAiMi4wLjEiLAorICAgICAgICAiZXM2LXNldCI6ICIw
LjEuNSIsCisgICAgICAgICJlczYtc3ltYm9sIjogIjMuMS4xIiwKKyAgICAgICAgImV2ZW50LWVt
aXR0ZXIiOiAiMC4zLjUiCisgICAgICB9CisgICAgfSwKKyAgICAiZXM2LXByb21pc2UiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICI0LjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvZXM2LXByb21pc2UvLS9lczYtcHJvbWlzZS00LjEuMS50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGE1MTItT2FVMWhIamdKZitiME56c3hDZzdOZElZRVJENkh5L1BF
bUZMVGp3K2I2NXNjdWlzRzNLdDRRb1R2SjY2QkJrUFo1ODFncjBrcG9WektueG5pTThubmc9PSIs
CisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImVzNi1zZXQiOiB7CisgICAgICAidmVy
c2lvbiI6ICIwLjEuNSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvZXM2LXNldC8tL2VzNi1zZXQtMC4xLjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS0wclBzWFUyQURPMkJqYlU0MG9sMDJ3cHp6TEU9IiwKKyAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZCI6ICIxLjAuMCIsCisgICAgICAgICJlczUt
ZXh0IjogIjAuMTAuMzAiLAorICAgICAgICAiZXM2LWl0ZXJhdG9yIjogIjIuMC4xIiwKKyAgICAg
ICAgImVzNi1zeW1ib2wiOiAiMy4xLjEiLAorICAgICAgICAiZXZlbnQtZW1pdHRlciI6ICIwLjMu
NSIKKyAgICAgIH0KKyAgICB9LAorICAgICJlczYtc3ltYm9sIjogeworICAgICAgInZlcnNpb24i
OiAiMy4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2VzNi1zeW1ib2wvLS9lczYtc3ltYm9sLTMuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtdndEdlQ5cTJ1aHRHN0xlMktiVEg3VmNWekhjPSIsCisgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImQiOiAiMS4wLjAiLAorICAgICAgICAiZXM1
LWV4dCI6ICIwLjEwLjMwIgorICAgICAgfQorICAgIH0sCisgICAgImVzNi13ZWFrLW1hcCI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjIuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9lczYtd2Vhay1tYXAvLS9lczYtd2Vhay1tYXAtMi4wLjIudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1YanF6SWxILzBWT0tINDVmK2hOWGR5K1MyVzg9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZCI6ICIx
LjAuMCIsCisgICAgICAgICJlczUtZXh0IjogIjAuMTAuMzAiLAorICAgICAgICAiZXM2LWl0ZXJh
dG9yIjogIjIuMC4xIiwKKyAgICAgICAgImVzNi1zeW1ib2wiOiAiMy4xLjEiCisgICAgICB9Cisg
ICAgfSwKKyAgICAiZXNjYXBlLWh0bWwiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNjYXBlLWh0bWwv
LS9lc2NhcGUtaHRtbC0xLjAuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUFsanE1
TlBRd0pkTjRjRnBHSTd3QlIwZEdZZz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc2NhcGUtc3RyaW5n
LXJlZ2V4cC8tL2VzY2FwZS1zdHJpbmctcmVnZXhwLTEuMC41LnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtRzJIQVZpR1FxTi8ycmp1eXp3SUF5aE1MaHRRPSIsCisgICAgICAiZGV2Ijog
dHJ1ZQorICAgIH0sCisgICAgImVzY29kZWdlbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuOC4x
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc2NvZGVn
ZW4vLS9lc2NvZGVnZW4tMS44LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1XbHRU
cjBhVEVRdnJzSVo2bzBNTjA3Y0tFQmc9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAiZXNwcmltYSI6ICIyLjcuMyIsCisgICAgICAgICJlc3RyYXZl
cnNlIjogIjEuOS4zIiwKKyAgICAgICAgImVzdXRpbHMiOiAiMi4wLjIiLAorICAgICAgICAib3B0
aW9uYXRvciI6ICIwLjguMiIsCisgICAgICAgICJzb3VyY2UtbWFwIjogIjAuMi4wIgorICAgICAg
fSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJlc3RyYXZlcnNlIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuOS4zIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXN0cmF2ZXJzZS8tL2VzdHJhdmVyc2UtMS45LjMudGd6IiwK
KyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcjJmeTNKSWxna0ZaVUpKZ2thUUFYU25KdTBR
PSIsCiAgICAgICAgICAgImRldiI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgImdsb2JieSI6
IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICI1LjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAic291cmNlLW1hcCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIu
MCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Nv
dXJjZS1tYXAvLS9zb3VyY2UtbWFwLTAuMi4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6
ICJzaGExLTJyYy92UHdycUJtMDNnTzliMjZxU0JaTFA1MD0iLAogICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjog
ewotICAgICAgICAgICAgImFycmF5LXVuaW9uIjogIjEuMC4yIiwKLSAgICAgICAgICAgICJhcnJp
ZnkiOiAiMS4wLjEiLAotICAgICAgICAgICAgImdsb2IiOiAiNy4xLjAiLAotICAgICAgICAgICAg
Im9iamVjdC1hc3NpZ24iOiAiNC4xLjAiLAotICAgICAgICAgICAgInBpZnkiOiAiMi4zLjAiLAot
ICAgICAgICAgICAgInBpbmtpZS1wcm9taXNlIjogIjIuMC4xIgorICAgICAgICAgICAgImFtZGVm
aW5lIjogIjEuMC4xIgogICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImdyYWNlZnVs
LWZzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMS44IiwKLSAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImdy
YWNlZnVsLXJlYWRsaW5rIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKLSAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwK
LSAgICAgICAgImdyb3dseSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuMCIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAi
ZXNjb3BlIjogeworICAgICAgInZlcnNpb24iOiAiMy42LjAiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzY29wZS8tL2VzY29wZS0zLjYuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLTRCbDE2Qko0R2hZNmJhMzkyQU9ZM0dUSWljTT0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJlczYtbWFw
IjogIjAuMS41IiwKKyAgICAgICAgImVzNi13ZWFrLW1hcCI6ICIyLjAuMiIsCisgICAgICAgICJl
c3JlY3Vyc2UiOiAiNC4yLjAiLAorICAgICAgICAiZXN0cmF2ZXJzZSI6ICI0LjIuMCIKKyAgICAg
IH0KKyAgICB9LAorICAgICJlc2xpbnQiOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjQuMSIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNsaW50Ly0vZXNs
aW50LTQuNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbWMxK3I4LzhvditacGNq
MThxUjAxalpMUzlNPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgImFqdiI6ICI1LjIuMiIsCisgICAgICAgICJiYWJlbC1jb2RlLWZyYW1lIjogIjYu
MjYuMCIsCisgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAgICAgICJjb25jYXQtc3RyZWFt
IjogIjEuNi4wIiwKKyAgICAgICAgImNyb3NzLXNwYXduIjogIjUuMS4wIiwKKyAgICAgICAgImRl
YnVnIjogIjIuNi44IiwKKyAgICAgICAgImRvY3RyaW5lIjogIjIuMC4wIiwKKyAgICAgICAgImVz
bGludC1zY29wZSI6ICIzLjcuMSIsCisgICAgICAgICJlc3ByZWUiOiAiMy41LjAiLAorICAgICAg
ICAiZXNxdWVyeSI6ICIxLjAuMCIsCisgICAgICAgICJlc3RyYXZlcnNlIjogIjQuMi4wIiwKKyAg
ICAgICAgImVzdXRpbHMiOiAiMi4wLjIiLAorICAgICAgICAiZmlsZS1lbnRyeS1jYWNoZSI6ICIy
LjAuMCIsCisgICAgICAgICJmdW5jdGlvbmFsLXJlZC1ibGFjay10cmVlIjogIjEuMC4xIiwKKyAg
ICAgICAgImdsb2IiOiAiNy4xLjIiLAorICAgICAgICAiZ2xvYmFscyI6ICI5LjE4LjAiLAorICAg
ICAgICAiaWdub3JlIjogIjMuMy41IiwKKyAgICAgICAgImltdXJtdXJoYXNoIjogIjAuMS40IiwK
KyAgICAgICAgImlucXVpcmVyIjogIjMuMi4zIiwKKyAgICAgICAgImlzLXJlc29sdmFibGUiOiAi
MS4wLjAiLAorICAgICAgICAianMteWFtbCI6ICIzLjkuMSIsCisgICAgICAgICJqc29uLXN0YWJs
ZS1zdHJpbmdpZnkiOiAiMS4wLjEiLAorICAgICAgICAibGV2biI6ICIwLjMuMCIsCisgICAgICAg
ICJsb2Rhc2giOiAiNC4xNy40IiwKKyAgICAgICAgIm1pbmltYXRjaCI6ICIzLjAuNCIsCisgICAg
ICAgICJta2RpcnAiOiAiMC41LjEiLAorICAgICAgICAibmF0dXJhbC1jb21wYXJlIjogIjEuNC4w
IiwKKyAgICAgICAgIm9wdGlvbmF0b3IiOiAiMC44LjIiLAorICAgICAgICAicGF0aC1pcy1pbnNp
ZGUiOiAiMS4wLjIiLAorICAgICAgICAicGx1cmFsaXplIjogIjQuMC4wIiwKKyAgICAgICAgInBy
b2dyZXNzIjogIjIuMC4wIiwKKyAgICAgICAgInJlcXVpcmUtdW5jYWNoZWQiOiAiMS4wLjMiLAor
ICAgICAgICAic2VtdmVyIjogIjUuNC4xIiwKKyAgICAgICAgInN0cmlwLWpzb24tY29tbWVudHMi
OiAiMi4wLjEiLAorICAgICAgICAidGFibGUiOiAiNC4wLjEiLAorICAgICAgICAidGV4dC10YWJs
ZSI6ICIwLjIuMCIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAi
ZXNwcmltYSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjAuMCIsCisgICAgICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzcHJpbWEvLS9lc3ByaW1hLTQu
MC4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItb2Z0VGNhTXUvRUdyRUl1
OTA0bVd0ZUtJdjh2TXVPZ0dZbzdFaFZKSk4wMFIvRUVEOURDdWEveHhIUmRZbkt0Y0VDelZnN3hP
V2hmbHZKTW5xY0Zaanc9PSIsCiAgICAgICAgICAgImRldiI6IHRydWUKICAgICAgICAgfSwKLSAg
ICAgICAgImd6aXAtc2l6ZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMCIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJkdXBsZXhlciI6ICIwLjEuMSIKLSAgICAgICAg
ICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJoYW5kbGViYXJzIjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjQuMC41IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJqcy15
YW1sIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuOS4xIiwKKyAgICAgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvanMteWFtbC8tL2pzLXlhbWwtMy45LjEu
dGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1DYmNHMzc5TDFlK21XQm5MdkhX
V2VMczhHeVYvRU13ODYydUxJM2MrR3hWeURIV1pjalppbnd1QmQzaVcycGd4Z0lsa3NXLzF2Tkph
NHRvK1J2RE93dz09IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWly
ZXMiOiB7Ci0gICAgICAgICAgICAiYXN5bmMiOiAiMS41LjIiLAotICAgICAgICAgICAgIm9wdGlt
aXN0IjogIjAuNi4xIiwKLSAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNC40IiwKLSAgICAg
ICAgICAgICJ1Z2xpZnktanMiOiAiMi42LjQiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAiZGVw
ZW5kZW5jaWVzIjogewotICAgICAgICAgICAgInNvdXJjZS1tYXAiOiB7Ci0gICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuNC40IiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAg
ICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgICAgICJhbWRlZmluZSI6ICIxLjAuMCIKLSAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgImFyZ3BhcnNlIjogIjEuMC45IiwKKyAgICAgICAgICAgICJl
c3ByaW1hIjogIjQuMC4wIgogICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgImhhci12
YWxpZGF0b3IiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4wLjYiLAotICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgImVzbGludC1j
b25maWctcmVhY3QtYXBwIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzbGludC1jb25maWctcmVhY3Qt
YXBwLy0vZXNsaW50LWNvbmZpZy1yZWFjdC1hcHAtMi4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhNTEyLVF6RmFaSUZmR2VkaHpSSTZsMlprcFA5OUd5RXFrY1BTUE1uR2VIdC9oV3Rq
dHcxUU1BMUVTUWlJdEJMU1VkdysyWnZOcXptRkdKRHFHSS9kdW8wbCtRPT0iLAorICAgICAgImRl
diI6IHRydWUKKyAgICB9LAorICAgICJlc2xpbnQtaW1wb3J0LXJlc29sdmVyLW5vZGUiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIwLjMuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvZXNsaW50LWltcG9ydC1yZXNvbHZlci1ub2RlLy0vZXNsaW50LWltcG9y
dC1yZXNvbHZlci1ub2RlLTAuMy4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi15
VXRYUzE1Z0ljaWo2OE5tWG1QOU5pNzdBUXVDTjBpdFhiQ2MvaldkOEM2L3lLWmFTTlhpY3BDOGNn
dmpueFZkbWZzb3NJWHJqcHpGcTdHY0RyeWI2QT09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAiZGVidWciOiAiMi42LjgiLAorICAgICAgICAicmVz
b2x2ZSI6ICIxLjQuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJlc2xpbnQtbG9hZGVyIjogewor
ICAgICAgInZlcnNpb24iOiAiMS45LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2VzbGludC1sb2FkZXIvLS9lc2xpbnQtbG9hZGVyLTEuOS4wLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi00MGFOOTc2cVNOUHliOWVqVHFqRXRoWklUcGxz
MVNWS3R3Z3VhaG1IMWR6R0N3UVUvdnlTRSt4WDMzVlptRDhjc1UwYWhWTkN0RmxzUGdLcVJCaXFn
Zz09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAi
bG9hZGVyLWZzLWNhY2hlIjogIjEuMC4xIiwKKyAgICAgICAgImxvYWRlci11dGlscyI6ICIxLjEu
MCIsCisgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4xIiwKKyAgICAgICAgIm9iamVjdC1o
YXNoIjogIjEuMS44IiwKKyAgICAgICAgInJpbXJhZiI6ICIyLjYuMSIKKyAgICAgIH0KKyAgICB9
LAorICAgICJlc2xpbnQtbW9kdWxlLXV0aWxzIjogeworICAgICAgInZlcnNpb24iOiAiMi4xLjEi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzbGludC1t
b2R1bGUtdXRpbHMvLS9lc2xpbnQtbW9kdWxlLXV0aWxzLTIuMS4xLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTUxMi1qREkvWDVsLzZEMXJSRC8zVDQzcThRZ2JsczJucTVrbTVLU3Fpd2x5
VWJHbzUrMDRmWGhNS2RDUGhqd2JxQWE2SFhXYU14ajhRNGhRREloN0lhZEpRdz09IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZGVidWciOiAiMi42
LjgiLAorICAgICAgICAicGtnLWRpciI6ICIxLjAuMCIKKyAgICAgIH0sCisgICAgICAiZGVwZW5k
ZW5jaWVzIjogeworICAgICAgICAiZmluZC11cCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjEuMiIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2ZpbmQtdXAvLS9maW5kLXVwLTEuMS4yLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJz
aGExLWF5NllJckdpemdwZ3EyVFdFT3pLMVR5eVRROD0iLAogICAgICAgICAgICJkZXYiOiB0cnVl
LAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJjaGFsayI6ICIxLjEuMyIs
Ci0gICAgICAgICAgICAiY29tbWFuZGVyIjogIjIuOS4wIiwKLSAgICAgICAgICAgICJpcy1teS1q
c29uLXZhbGlkIjogIjIuMTQuMCIsCisgICAgICAgICAgICAicGF0aC1leGlzdHMiOiAiMi4xLjAi
LAogICAgICAgICAgICAgInBpbmtpZS1wcm9taXNlIjogIjIuMC4xIgotICAgICAgICAgIH0sCi0g
ICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJjb21tYW5kZXIiOiB7Ci0g
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuOS4wIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgInJlcXVp
cmVzIjogewotICAgICAgICAgICAgICAgICJncmFjZWZ1bC1yZWFkbGluayI6ICIxLjAuMSIKLSAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAg
ICAgICAgImhhcyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCi0gICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1
aXJlcyI6IHsKLSAgICAgICAgICAgICJmdW5jdGlvbi1iaW5kIjogIjEuMS4wIgotICAgICAgICAg
IH0KLSAgICAgICAgfSwKLSAgICAgICAgImhhcy1hbnNpIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjIuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImFuc2ktcmVnZXgi
OiAiMi4wLjAiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiaGFzLWZsYWciOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiaGF3ayI6IHsK
LSAgICAgICAgICAidmVyc2lvbiI6ICIzLjEuMyIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAg
ICAgICAgICJib29tIjogIjIuMTAuMSIsCi0gICAgICAgICAgICAiY3J5cHRpbGVzIjogIjIuMC41
IiwKLSAgICAgICAgICAgICJob2VrIjogIjIuMTYuMyIsCi0gICAgICAgICAgICAic250cCI6ICIx
LjAuOSIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJoZSI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAg
ICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJoZWFkZXItY2FzZSI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAicGF0aC1leGlzdHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAor
ICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wYXRoLWV4
aXN0cy8tL3BhdGgtZXhpc3RzLTIuMS4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJz
aGExLUQrdHNaUEQ4VVkyYWRVM1Y3N1lzY0NKMkgwcz0iLAogICAgICAgICAgICJkZXYiOiB0cnVl
LAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJuby1jYXNlIjogIjIuMy4w
IiwKLSAgICAgICAgICAgICJ1cHBlci1jYXNlIjogIjEuMS4zIgorICAgICAgICAgICAgInBpbmtp
ZS1wcm9taXNlIjogIjIuMC4xIgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgImhv
ZWsiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4xNi4zIiwKLSAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImhv
bWUtb3ItdG1wIjogeworICAgICAgICAicGtnLWRpciI6IHsKICAgICAgICAgICAidmVyc2lvbiI6
ICIxLjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0
cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJvcy10bXBkaXIiOiAi
MS4wLjEiLAotICAgICAgICAgICAgInVzZXItaG9tZSI6ICIxLjEuMSIKLSAgICAgICAgICB9Ci0g
ICAgICAgIH0sCi0gICAgICAgICJob3N0ZWQtZ2l0LWluZm8iOiB7Ci0gICAgICAgICAgInZlcnNp
b24iOiAiMi4xLjUiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2
IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiaHRtbC1jb21tZW50LXJlZ2V4IjogewotICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0g
ICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImh0bWwtZW50aXRpZXMi
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiaHRtbC1t
aW5pZmllciI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuNyIsCi0gICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJl
cyI6IHsKLSAgICAgICAgICAgICJjaGFuZ2UtY2FzZSI6ICIzLjAuMCIsCi0gICAgICAgICAgICAi
Y2xlYW4tY3NzIjogIjMuNC4yMCIsCi0gICAgICAgICAgICAiY29tbWFuZGVyIjogIjIuOS4wIiwK
LSAgICAgICAgICAgICJoZSI6ICIxLjEuMCIsCi0gICAgICAgICAgICAibmNuYW1lIjogIjEuMC4w
IiwKLSAgICAgICAgICAgICJyZWxhdGV1cmwiOiAiMC4yLjciLAotICAgICAgICAgICAgInVnbGlm
eS1qcyI6ICIyLjYuNCIKLSAgICAgICAgICB9LAotICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7
Ci0gICAgICAgICAgICAiY29tbWFuZGVyIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIy
LjkuMCIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRl
diI6IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAi
Z3JhY2VmdWwtcmVhZGxpbmsiOiAiMS4wLjEiCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJodG1sLXdlYnBhY2stcGx1Z2lu
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMjIuMCIsCi0gICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsK
LSAgICAgICAgICAgICJibHVlYmlyZCI6ICIzLjQuNiIsCi0gICAgICAgICAgICAiaHRtbC1taW5p
ZmllciI6ICIyLjEuNyIsCi0gICAgICAgICAgICAibG9hZGVyLXV0aWxzIjogIjAuMi4xNiIsCi0g
ICAgICAgICAgICAibG9kYXNoIjogIjQuMTYuMiIsCi0gICAgICAgICAgICAicHJldHR5LWVycm9y
IjogIjIuMC4xIiwKLSAgICAgICAgICAgICJ0b3Bvc29ydCI6ICIxLjAuMCIKLSAgICAgICAgICB9
Ci0gICAgICAgIH0sCi0gICAgICAgICJodG1scGFyc2VyMiI6IHsKLSAgICAgICAgICAidmVyc2lv
biI6ICIzLjMuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYi
OiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJkb21lbGVtZW50
dHlwZSI6ICIxLjMuMCIsCi0gICAgICAgICAgICAiZG9taGFuZGxlciI6ICIyLjEuMCIsCi0gICAg
ICAgICAgICAiZG9tdXRpbHMiOiAiMS4xLjYiLAotICAgICAgICAgICAgInJlYWRhYmxlLXN0cmVh
bSI6ICIxLjAuMzQiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewot
ICAgICAgICAgICAgImRvbXV0aWxzIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjEu
NiIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAiZG9t
ZWxlbWVudHR5cGUiOiAiMS4zLjAiCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAiaXNhcnJheSI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjEi
LAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0
cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6IHsKLSAg
ICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjM0IiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgInJlcXVp
cmVzIjogewotICAgICAgICAgICAgICAgICJjb3JlLXV0aWwtaXMiOiAiMS4wLjIiLAotICAgICAg
ICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCi0gICAgICAgICAgICAgICAgImlzYXJyYXki
OiAiMC4wLjEiLAotICAgICAgICAgICAgICAgICJzdHJpbmdfZGVjb2RlciI6ICIwLjEwLjMxIgot
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9LAot
ICAgICAgICAiaHR0cC1icm93c2VyaWZ5IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNy4w
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3BrZy1kaXIvLS9wa2ctZGlyLTEuMC4wLnRneiIsCisg
ICAgICAgICAgImludGVncml0eSI6ICJzaGExLWVrdFFpbzFic3RZcDFFY0ZiL1RweVRGTTg5UT0i
LAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAg
ICAgICAgICJCYXNlNjQiOiAiMC4yLjEiLAotICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4z
IgorICAgICAgICAgICAgImZpbmQtdXAiOiAiMS4xLjIiCiAgICAgICAgICAgfQotICAgICAgICB9
LAotICAgICAgICAiaHR0cC1lcnJvcnMiOiB7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAor
ICAgICJlc2xpbnQtcGx1Z2luLWZsb3d0eXBlIjogeworICAgICAgInZlcnNpb24iOiAiMi4zNS4w
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc2xpbnQt
cGx1Z2luLWZsb3d0eXBlLy0vZXNsaW50LXBsdWdpbi1mbG93dHlwZS0yLjM1LjAudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLXpqWEdqT3NIZHM4Yjg0QzBBZDNWVmlLaCtzVUE5UGVY
S0h3UFJsU0x3d1NYMHYxaVVKZi82SVg3d3hjK3cyVDJ0bkRIOFBUNkIvWWd0Y0V1Tkkzc3NBPT0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJsb2Rh
c2giOiAiNC4xNy40IgorICAgICAgfQorICAgIH0sCisgICAgImVzbGludC1wbHVnaW4taW1wb3J0
IjogeworICAgICAgInZlcnNpb24iOiAiMi43LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2VzbGludC1wbHVnaW4taW1wb3J0Ly0vZXNsaW50LXBsdWdp
bi1pbXBvcnQtMi43LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUhHWW1wVTlm
L3pKYVFpS05RT1ZmSFVoMm9MV1czU1RCckNnSDBzSFRYMXh0c3hZbEgxempMaDhGbFFHRUlkWlNk
VGJVTWFWMzZXYVo2SW1Ya2VuR3hRPT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICJidWlsdGluLW1vZHVsZXMiOiAiMS4xLjEiLAorICAgICAgICAi
Y29udGFpbnMtcGF0aCI6ICIwLjEuMCIsCisgICAgICAgICJkZWJ1ZyI6ICIyLjYuOCIsCisgICAg
ICAgICJkb2N0cmluZSI6ICIxLjUuMCIsCisgICAgICAgICJlc2xpbnQtaW1wb3J0LXJlc29sdmVy
LW5vZGUiOiAiMC4zLjEiLAorICAgICAgICAiZXNsaW50LW1vZHVsZS11dGlscyI6ICIyLjEuMSIs
CisgICAgICAgICJoYXMiOiAiMS4wLjEiLAorICAgICAgICAibG9kYXNoLmNvbmQiOiAiNC41LjIi
LAorICAgICAgICAibWluaW1hdGNoIjogIjMuMC40IiwKKyAgICAgICAgInJlYWQtcGtnLXVwIjog
IjIuMC4wIgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJkb2N0
cmluZSI6IHsKICAgICAgICAgICAidmVyc2lvbiI6ICIxLjUuMCIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6
IHsKLSAgICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMSIsCi0gICAgICAgICAgICAic2V0cHJv
dG90eXBlb2YiOiAiMS4wLjEiLAotICAgICAgICAgICAgInN0YXR1c2VzIjogIjEuMy4wIgotICAg
ICAgICAgIH0sCi0gICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJpbmhl
cml0cyI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAotICAgICAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiaHR0cC1wcm94eSI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjE1LjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
LSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAg
ICAgICAiZXZlbnRlbWl0dGVyMyI6ICIxLjIuMCIsCi0gICAgICAgICAgICAicmVxdWlyZXMtcG9y
dCI6ICIxLjAuMCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJodHRwLXByb3h5
LW1pZGRsZXdhcmUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4xNy4xIiwKLSAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2RvY3RyaW5lLy0vZG9jdHJpbmUtMS41LjAudGd6IiwKKyAgICAgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtTjUzT2N3OWhadmRzNzZUbWNIb1Ztd0xGcHZvPSIsCiAgICAgICAg
ICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImh0
dHAtcHJveHkiOiAiMS4xNS4xIiwKLSAgICAgICAgICAgICJpcy1nbG9iIjogIjIuMC4xIiwKLSAg
ICAgICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIiwKLSAgICAgICAgICAgICJtaWNyb21hdGNoIjog
IjIuMy4xMSIKKyAgICAgICAgICAgICJlc3V0aWxzIjogIjIuMC4yIiwKKyAgICAgICAgICAgICJp
c2FycmF5IjogIjEuMC4wIgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgImh0dHAt
c2lnbmF0dXJlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKLSAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICJsb2FkLWpzb24tZmlsZSI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2xvYWQtanNvbi1maWxlLy0vbG9hZC1qc29uLWZpbGUtMi4wLjAudGd6IiwK
KyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZVVma0lVbXZnTmFXeS9lWHZLcTgvaC9pbktn
PSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgImFzc2VydC1wbHVzIjogIjAuMi4wIiwKLSAgICAgICAgICAgICJqc3ByaW0iOiAi
MS4zLjEiLAotICAgICAgICAgICAgInNzaHBrIjogIjEuMTAuMCIKKyAgICAgICAgICAgICJncmFj
ZWZ1bC1mcyI6ICI0LjEuMTEiLAorICAgICAgICAgICAgInBhcnNlLWpzb24iOiAiMi4yLjAiLAor
ICAgICAgICAgICAgInBpZnkiOiAiMi4zLjAiLAorICAgICAgICAgICAgInN0cmlwLWJvbSI6ICIz
LjAuMCIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJodHRwcy1icm93c2VyaWZ5
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImljb252
LWxpdGUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC40LjEzIiwKLSAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAg
Imljc3MtcmVwbGFjZS1zeW1ib2xzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwK
LSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAg
ICAgfSwKLSAgICAgICAgImllZWU3NTQiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjYi
LAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAg
ICAgICB9LAotICAgICAgICAiaWdub3JlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMS41
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAg
ICAgICAgfSwKLSAgICAgICAgImltdXJtdXJoYXNoIjogewotICAgICAgICAgICJ2ZXJzaW9uIjog
IjAuMS40IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRy
dWUKLSAgICAgICAgfSwKLSAgICAgICAgImluZGV4ZXMtb2YiOiB7Ci0gICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICAicGF0aC10eXBlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIu
MC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
cGF0aC10eXBlLy0vcGF0aC10eXBlLTIuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6
ICJzaGExLThCTE11RUZiY0piOExhb1FWTVBYSTRsWlRITT0iLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJwaWZ5IjogIjIuMy4w
IgorICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgImluZGV4b2YiOiB7Ci0gICAgICAg
ICAgInZlcnNpb24iOiAiMC4wLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAicmVhZC1wa2ciOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMi4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9yZWFkLXBrZy8tL3JlYWQtcGtnLTIuMC4wLnRneiIsCisgICAgICAgICAgImludGVn
cml0eSI6ICJzaGExLWp2SEFZanhxYmJEY1p4UEV2NnhHTXlzamFQZz0iLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJsb2FkLWpz
b24tZmlsZSI6ICIyLjAuMCIsCisgICAgICAgICAgICAibm9ybWFsaXplLXBhY2thZ2UtZGF0YSI6
ICIyLjQuMCIsCisgICAgICAgICAgICAicGF0aC10eXBlIjogIjIuMC4wIgorICAgICAgICAgIH0K
ICAgICAgICAgfSwKLSAgICAgICAgImluZmxpZ2h0IjogewotICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMC41IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJyZWFkLXBrZy11
cCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlYWQtcGtnLXVwLy0vcmVhZC1wa2ctdXAt
Mi4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYTNLb0JJbUU0TVFlZVZF
UDFlbjZtYk8xU2I0PSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVp
cmVzIjogewotICAgICAgICAgICAgIm9uY2UiOiAiMS40LjAiLAotICAgICAgICAgICAgIndyYXBw
eSI6ICIxLjAuMiIKKyAgICAgICAgICAgICJmaW5kLXVwIjogIjIuMS4wIiwKKyAgICAgICAgICAg
ICJyZWFkLXBrZyI6ICIyLjAuMCIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJp
bmhlcml0cyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMyIsCi0gICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAic3RyaXAtYm9tIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjMuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvc3RyaXAtYm9tLy0vc3RyaXAtYm9tLTMuMC4wLnRneiIsCisgICAgICAgICAgImludGVn
cml0eSI6ICJzaGExLUl6VEJqcHgxbjN2ZFZ2M3ZmcHJqMVlqbWp0TT0iLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJlc2xpbnQtcGx1Z2lu
LWpzeC1hMTF5IjogeworICAgICAgInZlcnNpb24iOiAiNS4xLjEiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzbGludC1wbHVnaW4tanN4LWExMXkvLS9l
c2xpbnQtcGx1Z2luLWpzeC1hMTF5LTUuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTUxMi01STlTcG9QN2dUNHdCRk90WFQ4L3RYTlBZb2hIQlZmeVZmTzE3dmtiQzdyOWtFSXhZSkYx
MkQzcEtxaGs4K3huazEycmZ4S0NsUzNXQ0ZwVmNrRlRQUT09IiwKKyAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYXJpYS1xdWVyeSI6ICIwLjcuMCIsCisg
ICAgICAgICJhcnJheS1pbmNsdWRlcyI6ICIzLjAuMyIsCisgICAgICAgICJhc3QtdHlwZXMtZmxv
dyI6ICIwLjAuNyIsCisgICAgICAgICJheG9iamVjdC1xdWVyeSI6ICIwLjEuMCIsCisgICAgICAg
ICJkYW1lcmF1LWxldmVuc2h0ZWluIjogIjEuMC40IiwKKyAgICAgICAgImVtb2ppLXJlZ2V4Ijog
IjYuNS4xIiwKKyAgICAgICAgImpzeC1hc3QtdXRpbHMiOiAiMS40LjEiCisgICAgICB9CisgICAg
fSwKKyAgICAiZXNsaW50LXBsdWdpbi1yZWFjdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjcuMS4w
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc2xpbnQt
cGx1Z2luLXJlYWN0Ly0vZXNsaW50LXBsdWdpbi1yZWFjdC03LjEuMC50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLUozY0t6em4xL1VuTkN2UUlQT1dCQk9zNURVdz0iLAorICAgICAgImRl
diI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJkb2N0cmluZSI6ICIyLjAu
MCIsCisgICAgICAgICJoYXMiOiAiMS4wLjEiLAorICAgICAgICAianN4LWFzdC11dGlscyI6ICIx
LjQuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJlc2xpbnQtc2NvcGUiOiB7CisgICAgICAidmVy
c2lvbiI6ICIzLjcuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvZXNsaW50LXNjb3BlLy0vZXNsaW50LXNjb3BlLTMuNy4xLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtUFdQRDdmMmdMZ2JnR2tVcTJJeXF6SHpjdHVnPSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImVzcmVjdXJzZSI6ICI0LjIu
MCIsCisgICAgICAgICJlc3RyYXZlcnNlIjogIjQuMi4wIgorICAgICAgfQorICAgIH0sCisgICAg
ImVzcHJlZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuNS4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc3ByZWUvLS9lc3ByZWUtMy41LjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1tRFdHSmIzUVZZWWVvbjRvWitweW42OUdQWTA9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYWNvcm4i
OiAiNS4xLjIiLAorICAgICAgICAiYWNvcm4tanN4IjogIjMuMC4xIgorICAgICAgfQorICAgIH0s
CisgICAgImVzcHJpbWEiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjcuMyIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXNwcmltYS8tL2VzcHJpbWEtMi43
LjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1sdU8zRFZkNTlxMUp6UU1tYzlIREVu
WjdwWUU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZXNxdWVyeSI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9lc3F1ZXJ5Ly0vZXNxdWVyeS0xLjAuMC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLXo3cUxWOWY3cVQ4WEtZcUtBR29FemFFOWdQbz0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJlc3RyYXZlcnNlIjogIjQuMi4w
IgorICAgICAgfQorICAgIH0sCisgICAgImVzcmVjdXJzZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjQuMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9l
c3JlY3Vyc2UvLS9lc3JlY3Vyc2UtNC4yLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS0rcFZvMlkwNEkvbWtIWkhwQXR5cm5xYmxzV009IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAiZXN0cmF2ZXJzZSI6ICI0LjIuMCIsCisgICAgICAg
ICJvYmplY3QtYXNzaWduIjogIjQuMS4xIgorICAgICAgfQorICAgIH0sCisgICAgImVzdHJhdmVy
c2UiOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjIuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXN0cmF2ZXJzZS8tL2VzdHJhdmVyc2UtNC4yLjAudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1EZTQvN1RIODFHbGhqT2MwSUpuOEd2b0wyeE09
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZXN1dGlscyI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjIuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9lc3V0aWxzLy0vZXN1dGlscy0yLjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLUNyOVBIS3BieXg5Nm5Zck1iZXBQcXFCTHJKcz0iLAorICAgICAgImRldiI6IHRydWUK
KyAgICB9LAorICAgICJldGFnIjogeworICAgICAgInZlcnNpb24iOiAiMS44LjAiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2V0YWcvLS9ldGFnLTEuOC4w
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYjJNYTd6TnRiRVkySzFGMlFFVE9JV3Zq
d0ZFPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImV2ZW50LWVtaXR0ZXIiOiB7
CisgICAgICAidmVyc2lvbiI6ICIwLjMuNSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvZXZlbnQtZW1pdHRlci8tL2V2ZW50LWVtaXR0ZXItMC4zLjUudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0zNHhwN3ZGa2VTUEhGWHVjNkRoQVlRc0N6RGs9
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZCI6
ICIxLjAuMCIsCisgICAgICAgICJlczUtZXh0IjogIjAuMTAuMzAiCisgICAgICB9CisgICAgfSwK
KyAgICAiZXZlbnRlbWl0dGVyMyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ldmVudGVtaXR0ZXIzLy0v
ZXZlbnRlbWl0dGVyMy0xLjIuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUhJYVpI
WUZxMGVVRWRRNXpoMElrN1BPK3hRZz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJldmVudHMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXZlbnRzLy0vZXZlbnRzLTEuMS4xLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbnIyM1kxclFtY2NOekV3cUgxQUVLSTZMMlNRPSIs
CisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImV2ZW50c291cmNlIjogeworICAgICAg
InZlcnNpb24iOiAiMC4xLjYiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2V2ZW50c291cmNlLy0vZXZlbnRzb3VyY2UtMC4xLjYudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1DczdlaEo3WDNSek1Nc2dSdXhHNVJOVHlrakk9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAib3JpZ2luYWwiOiAiMS4w
LjAiCisgICAgICB9CisgICAgfSwKKyAgICAiZXZwX2J5dGVzdG9rZXkiOiB7CisgICAgICAidmVy
c2lvbiI6ICIxLjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvZXZwX2J5dGVzdG9rZXkvLS9ldnBfYnl0ZXN0b2tleS0xLjAuMy50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGE1MTItL2YyR280VG9nbkgvS3ZDSVNQN09Vc0huODVoVDluVWt4eEE5
QkVXeEZuK09qOW84Wk5MbS80MGhkbGdTTHl1T2ltc3JUS0xVTUVvclFleHAvYVBRZUE9PSIsCisg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgIm1kNS5qcyI6
ICIxLjMuNCIsCisgICAgICAgICJzYWZlLWJ1ZmZlciI6ICI1LjEuMSIKKyAgICAgIH0KKyAgICB9
LAorICAgICJleGVjLXNoIjogeworICAgICAgInZlcnNpb24iOiAiMC4yLjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2V4ZWMtc2gvLS9leGVjLXNoLTAu
Mi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRlBkZDQvSU5LRzc1TXdtYkxPVUtr
RFdjN3hBPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgIm1lcmdlIjogIjEuMi4wIgorICAgICAgfQorICAgIH0sCisgICAgImV4ZWNhIjogeworICAg
ICAgInZlcnNpb24iOiAiMC43LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2V4ZWNhLy0vZXhlY2EtMC43LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1sRXZzMDB6RUh1TXFZNm42OG5yVnBsL0ZsM2M9IiwKKyAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY3Jvc3Mtc3Bhd24iOiAiNS4xLjAiLAor
ICAgICAgICAiZ2V0LXN0cmVhbSI6ICIzLjAuMCIsCisgICAgICAgICJpcy1zdHJlYW0iOiAiMS4x
LjAiLAorICAgICAgICAibnBtLXJ1bi1wYXRoIjogIjIuMC4yIiwKKyAgICAgICAgInAtZmluYWxs
eSI6ICIxLjAuMCIsCisgICAgICAgICJzaWduYWwtZXhpdCI6ICIzLjAuMiIsCisgICAgICAgICJz
dHJpcC1lb2YiOiAiMS4wLjAiCisgICAgICB9CisgICAgfSwKKyAgICAiZXhwYW5kLWJyYWNrZXRz
IjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjUiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2V4cGFuZC1icmFja2V0cy8tL2V4cGFuZC1icmFja2V0cy0w
LjEuNS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTN3Y29UalFxZ0h6WE02eGE5eVFS
NVlIUkYzcz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJpcy1wb3NpeC1icmFja2V0IjogIjAuMS4xIgorICAgICAgfQorICAgIH0sCisgICAgImV4
cGFuZC1yYW5nZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuOC4yIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9leHBhbmQtcmFuZ2UvLS9leHBhbmQtcmFu
Z2UtMS44LjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1vcG52L1ROZjRuSWV1dWpp
Vit4NVpFL0lVemM9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAiZmlsbC1yYW5nZSI6ICIyLjIuMyIKKyAgICAgIH0KKyAgICB9LAorICAgICJleHBh
bmQtdGlsZGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMiIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXhwYW5kLXRpbGRlLy0vZXhwYW5kLXRpbGRl
LTIuMC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbCtnQnFnVXQ4Q1JVM2thd0sv
WWhaQ3pjaFFJPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImhvbWVkaXItcG9seWZpbGwiOiAiMS4wLjEiCisgICAgICB9CisgICAgfSwKKyAgICAi
ZXhwcmVzcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMTUuNCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXhwcmVzcy8tL2V4cHJlc3MtNC4xNS40LnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtQXk0aVUwaWMrUHpnSm1hK3lqMFI3WG90cnRF
PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFj
Y2VwdHMiOiAiMS4zLjQiLAorICAgICAgICAiYXJyYXktZmxhdHRlbiI6ICIxLjEuMSIsCisgICAg
ICAgICJjb250ZW50LWRpc3Bvc2l0aW9uIjogIjAuNS4yIiwKKyAgICAgICAgImNvbnRlbnQtdHlw
ZSI6ICIxLjAuMiIsCisgICAgICAgICJjb29raWUiOiAiMC4zLjEiLAorICAgICAgICAiY29va2ll
LXNpZ25hdHVyZSI6ICIxLjAuNiIsCisgICAgICAgICJkZWJ1ZyI6ICIyLjYuOCIsCisgICAgICAg
ICJkZXBkIjogIjEuMS4xIiwKKyAgICAgICAgImVuY29kZXVybCI6ICIxLjAuMSIsCisgICAgICAg
ICJlc2NhcGUtaHRtbCI6ICIxLjAuMyIsCisgICAgICAgICJldGFnIjogIjEuOC4wIiwKKyAgICAg
ICAgImZpbmFsaGFuZGxlciI6ICIxLjAuNCIsCisgICAgICAgICJmcmVzaCI6ICIwLjUuMCIsCisg
ICAgICAgICJtZXJnZS1kZXNjcmlwdG9ycyI6ICIxLjAuMSIsCisgICAgICAgICJtZXRob2RzIjog
IjEuMS4yIiwKKyAgICAgICAgIm9uLWZpbmlzaGVkIjogIjIuMy4wIiwKKyAgICAgICAgInBhcnNl
dXJsIjogIjEuMy4xIiwKKyAgICAgICAgInBhdGgtdG8tcmVnZXhwIjogIjAuMS43IiwKKyAgICAg
ICAgInByb3h5LWFkZHIiOiAiMS4xLjUiLAorICAgICAgICAicXMiOiAiNi41LjAiLAorICAgICAg
ICAicmFuZ2UtcGFyc2VyIjogIjEuMi4wIiwKKyAgICAgICAgInNlbmQiOiAiMC4xNS40IiwKKyAg
ICAgICAgInNlcnZlLXN0YXRpYyI6ICIxLjEyLjQiLAorICAgICAgICAic2V0cHJvdG90eXBlb2Yi
OiAiMS4wLjMiLAorICAgICAgICAic3RhdHVzZXMiOiAiMS4zLjEiLAorICAgICAgICAidHlwZS1p
cyI6ICIxLjYuMTUiLAorICAgICAgICAidXRpbHMtbWVyZ2UiOiAiMS4wLjAiLAorICAgICAgICAi
dmFyeSI6ICIxLjEuMSIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAg
ICAiYXJyYXktZmxhdHRlbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisgICAg
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0
ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJz
aGExLW1sOXBrRkd4NXdjektQS2dDSmFMWk9vcFZkST0iLAogICAgICAgICAgICJkZXYiOiB0cnVl
CiAgICAgICAgIH0sCi0gICAgICAgICJpbnF1aXJlciI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICIwLjEyLjAiLAorICAgICAgICAicGF0aC10by1yZWdleHAiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMC4xLjciLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9wYXRoLXRvLXJlZ2V4cC8tL3BhdGgtdG8tcmVnZXhwLTAuMS43LnRneiIsCisgICAg
ICAgICAgImludGVncml0eSI6ICJzaGExLTMyQkJlQUJmVWk4VjYwU1E1eVI2Ry9xbWY0dz0iLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJxcyI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICI2LjUuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3FzLy0vcXMtNi41LjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdy
aXR5IjogInNoYTUxMi1malZGalc5eWhxTWhWR3dSRXhDWExoSktyTGxrWVNheE5XZHljOXJtSGxy
VlpiazM1WUhIMzEyZEZkNzE5MXVRZVhrSTNtS0xaVEliU3ZJZUZ3RmVtZz09IiwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAiZXh0ZW5kIjog
eworICAgICAgInZlcnNpb24iOiAiMy4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2V4dGVuZC8tL2V4dGVuZC0zLjAuMS50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLXAxWHFlOEd0L01XakhPZm5ZdHVxM0Y1alpFUT0iLAorICAgICAgImRl
diI6IHRydWUKKyAgICB9LAorICAgICJleHRlcm5hbC1lZGl0b3IiOiB7CisgICAgICAidmVyc2lv
biI6ICIyLjAuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvZXh0ZXJuYWwtZWRpdG9yLy0vZXh0ZXJuYWwtZWRpdG9yLTIuMC40LnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtSHRrWm5hbkwvaTd5OTZNYkw5NkxEUkkyaVhJPSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImljb252LWxpdGUiOiAi
MC40LjE4IiwKKyAgICAgICAgImpzY2hhcmRldCI6ICIxLjUuMSIsCisgICAgICAgICJ0bXAiOiAi
MC4wLjMxIgorICAgICAgfQorICAgIH0sCisgICAgImV4dGdsb2IiOiB7CisgICAgICAidmVyc2lv
biI6ICIwLjMuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvZXh0Z2xvYi8tL2V4dGdsb2ItMC4zLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1MaGovUFM5SnF5ZGx6c2tDUHdFZHFvMkRTYUU9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAiaXMtZXh0Z2xvYiI6ICIxLjAuMCIKKyAgICAgIH0K
KyAgICB9LAorICAgICJleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW4iOiB7CisgICAgICAidmVy
c2lvbiI6ICIzLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luLy0vZXh0cmFjdC10ZXh0LXdlYnBhY2st
cGx1Z2luLTMuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEta01xbmtIdkVTZk0x
QUY0NngxTXJRYkFONWhJPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgImFzeW5jIjogIjIuNS4wIiwKKyAgICAgICAgImxvYWRlci11dGlscyI6ICIx
LjEuMCIsCisgICAgICAgICJzY2hlbWEtdXRpbHMiOiAiMC4zLjAiLAorICAgICAgICAid2VicGFj
ay1zb3VyY2VzIjogIjEuMC4xIgorICAgICAgfQorICAgIH0sCisgICAgImV4dHNwcmludGYiOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjMuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvZXh0c3ByaW50Zi8tL2V4dHNwcmludGYtMS4zLjAudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1scEdFUU9NRUducEJUNHhTNDhWMDZ6dytIZ1U9IiwKKyAg
ICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZmFzdC1kZWVwLWVxdWFsIjogeworICAgICAg
InZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2Zhc3QtZGVlcC1lcXVhbC8tL2Zhc3QtZGVlcC1lcXVhbC0xLjAuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLWxpVnFPOGwxV1Y2emJZTHBrcDBHRFlrME9mOD0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJmYXN0LWxldmVuc2h0ZWluIjogeworICAg
ICAgInZlcnNpb24iOiAiMi4wLjYiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2Zhc3QtbGV2ZW5zaHRlaW4vLS9mYXN0LWxldmVuc2h0ZWluLTIuMC42LnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUFlwY1pvZzZGcU1NcUdRK2hSOFp1cWQ1ZVJj
PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImZhc3RwYXJzZSI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjEuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9mYXN0cGFyc2UvLS9mYXN0cGFyc2UtMS4xLjEudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS0wZUprT3ppcFRYV0R0SGtHRG14Sy84bEFjZmc9IiwKKyAgICAgICJkZXYi
OiB0cnVlCisgICAgfSwKKyAgICAiZmF5ZS13ZWJzb2NrZXQiOiB7CisgICAgICAidmVyc2lvbiI6
ICIwLjExLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2ZheWUtd2Vic29ja2V0Ly0vZmF5ZS13ZWJzb2NrZXQtMC4xMS4xLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtOE8vaGpFOVc1UFFLL0g0R3h4bjlYdVlZanpnPSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgIndlYnNvY2tldC1kcml2ZXIi
OiAiMC42LjUiCisgICAgICB9CisgICAgfSwKKyAgICAiZmItd2F0Y2htYW4iOiB7CisgICAgICAi
dmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvZmItd2F0Y2htYW4vLS9mYi13YXRjaG1hbi0yLjAuMC50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLVZPbXI5OStpOG16WnNXTnNXSXdhL0FYZVhWZz0iLAorICAgICAgImRl
diI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJic2VyIjogIjIuMC4wIgor
ICAgICAgfQorICAgIH0sCisgICAgImZianMiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjguMTQi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZianMvLS9m
YmpzLTAuOC4xNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTBkdml2aVZNTmFrZUNm
TWZuTlVLUUxLZzdSdz0iLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY29yZS1qcyI6
ICIxLjIuNyIsCisgICAgICAgICJpc29tb3JwaGljLWZldGNoIjogIjIuMi4xIiwKKyAgICAgICAg
Imxvb3NlLWVudmlmeSI6ICIxLjMuMSIsCisgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4x
IiwKKyAgICAgICAgInByb21pc2UiOiAiNy4zLjEiLAorICAgICAgICAic2V0aW1tZWRpYXRlIjog
IjEuMC41IiwKKyAgICAgICAgInVhLXBhcnNlci1qcyI6ICIwLjcuMTQiCisgICAgICB9CisgICAg
fSwKKyAgICAiZmlndXJlcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9maWd1cmVzLy0vZmlndXJlcy0y
LjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLU9yR2kwcVlzaS90REdneVV5M2w2
TDg0bnlXST0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6ICIxLjAuNSIKKyAgICAgIH0KKyAgICB9LAorICAg
ICJmaWxlLWVudHJ5LWNhY2hlIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZpbGUtZW50cnktY2FjaGUv
LS9maWxlLWVudHJ5LWNhY2hlLTIuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
dzVLWkRENW9SNFBZT0xqSVNrWFlvRWhGZzJFPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImZsYXQtY2FjaGUiOiAiMS4yLjIiLAorICAgICAgICAi
b2JqZWN0LWFzc2lnbiI6ICI0LjEuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJmaWxlLWxvYWRl
ciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMTEuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmlsZS1sb2FkZXIvLS9maWxlLWxvYWRlci0wLjExLjIu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLU4rdWhGM21zd0lGZXppSFFqR1NjSi95
SFhZdDNEaUxCZUMrOXZXVytXalVCaUNsTVNPbFYxWXJYUWkrN0tNMmFBM1JuNEJ5Ymd2K3VYRlFi
Zmt6cHZnPT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJsb2FkZXItdXRpbHMiOiAiMS4xLjAiCisgICAgICB9CisgICAgfSwKKyAgICAiZmlsZW5h
bWUtcmVnZXgiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmlsZW5hbWUtcmVnZXgvLS9maWxlbmFtZS1y
ZWdleC0yLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXdjUzV2dVBnbHlYZHNR
YTNYQjR3SCtMeGl5WT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJmaWxlc2V0
IjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2ZpbGVzZXQvLS9maWxlc2V0LTIuMC4zLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtam5WSXFXMDh3akorNWVaMEZvY2pvek83b3FBPSIsCisgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImdsb2IiOiAiNy4x
LjIiLAorICAgICAgICAibWluaW1hdGNoIjogIjMuMC40IgorICAgICAgfQorICAgIH0sCisgICAg
ImZpbGVzaXplIjogeworICAgICAgInZlcnNpb24iOiAiMy41LjEwIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9maWxlc2l6ZS8tL2ZpbGVzaXplLTMuNS4x
MC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLS9JK2lQZHRPK2VYZ3EyNGVaUFo1b2tw
V2RoOD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJmaWxsLXJhbmdlIjogewor
ICAgICAgInZlcnNpb24iOiAiMi4yLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2ZpbGwtcmFuZ2UvLS9maWxsLXJhbmdlLTIuMi4zLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtVUxkOS9YNUdtOGRKSkhDV05wbitlb1NGcHlNPSIsCisgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImlzLW51bWJlciI6
ICIyLjEuMCIsCisgICAgICAgICJpc29iamVjdCI6ICIyLjEuMCIsCisgICAgICAgICJyYW5kb21h
dGljIjogIjEuMS43IiwKKyAgICAgICAgInJlcGVhdC1lbGVtZW50IjogIjEuMS4yIiwKKyAgICAg
ICAgInJlcGVhdC1zdHJpbmciOiAiMS42LjEiCisgICAgICB9CisgICAgfSwKKyAgICAiZmlsbGVk
LWFycmF5IjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZpbGxlZC1hcnJheS8tL2ZpbGxlZC1hcnJheS0x
LjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXc4VDJ4bU81STBXYW1xS1pFdExR
TWZGUWY0UT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJmaW5hbGhhbmRsZXIi
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmluYWxoYW5kbGVyLy0vZmluYWxoYW5kbGVyLTEuMC40LnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi0xNmwvcjhSZ3psWEttRk9oWnBIQnp0dnll
K2xBaEM1U1U3aFhhdm5lckM5VWZacVp4eFhsM0J6TDhNaGZmUFQza0Y2MWxqOU9hdjJMS0V6aDBl
aTd0Zz09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAiZGVidWciOiAiMi42LjgiLAorICAgICAgICAiZW5jb2RldXJsIjogIjEuMC4xIiwKKyAgICAg
ICAgImVzY2FwZS1odG1sIjogIjEuMC4zIiwKKyAgICAgICAgIm9uLWZpbmlzaGVkIjogIjIuMy4w
IiwKKyAgICAgICAgInBhcnNldXJsIjogIjEuMy4xIiwKKyAgICAgICAgInN0YXR1c2VzIjogIjEu
My4xIiwKKyAgICAgICAgInVucGlwZSI6ICIxLjAuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJm
aW5kLWNhY2hlLWRpciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9maW5kLWNhY2hlLWRpci8tL2ZpbmQt
Y2FjaGUtZGlyLTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEta29qajZlUE1O
MGh4ZlRucTNoZlBjZnd3N204PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgImNvbW1vbmRpciI6ICIxLjAuMSIsCisgICAgICAgICJtYWtlLWRpciI6
ICIxLjAuMCIsCisgICAgICAgICJwa2ctZGlyIjogIjIuMC4wIgorICAgICAgfQorICAgIH0sCisg
ICAgImZpbmQtdXAiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmluZC11cC8tL2ZpbmQtdXAtMi4xLjAu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1SZEczNVFiSEY5M1VnbmRhSzNlU0Nqd01W
NmM9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAi
bG9jYXRlLXBhdGgiOiAiMi4wLjAiCisgICAgICB9CisgICAgfSwKKyAgICAiZmxhdC1jYWNoZSI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMi4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mbGF0LWNhY2hlLy0vZmxhdC1jYWNoZS0xLjIuMi50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLStvWnhUbkxDSGJpR0FYWWV6eTlWWFJxOGE1WT0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjaXJjdWxh
ci1qc29uIjogIjAuMy4zIiwKKyAgICAgICAgImRlbCI6ICIyLjIuMiIsCisgICAgICAgICJncmFj
ZWZ1bC1mcyI6ICI0LjEuMTEiLAorICAgICAgICAid3JpdGUiOiAiMC4yLjEiCisgICAgICB9Cisg
ICAgfSwKKyAgICAiZmxhdHRlbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mbGF0dGVuLy0vZmxhdHRl
bi0xLjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTJ1UnFuWGo3NGxLU0pZekI1
NENrSFpYQU40ST0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJmb3ItaW4iOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvZm9yLWluLy0vZm9yLWluLTEuMC4yLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtZ1FhTktWcUJRdXdLeHliRzRpQU1NUHR0WG9BPSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgImZvci1vd24iOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEu
NSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZm9yLW93
bi8tL2Zvci1vd24tMC4xLjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1VbVhHZ2FU
eWxOcTc4WHlWQ2JaMk9xaEZFTTQ9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAiZm9yLWluIjogIjEuMC4yIgorICAgICAgfQorICAgIH0sCisgICAg
ImZvcmVhY2giOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuNSIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZm9yZWFjaC8tL2ZvcmVhY2gtMi4wLjUudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1DKzRBVUJpdXNtRFFvNjg2NWxqZEFUYnNHNWs9
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZm9yZXZlci1hZ2VudCI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjAuNi4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9mb3JldmVyLWFnZW50Ly0vZm9yZXZlci1hZ2VudC0wLjYuMS50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLSs4Y2ZERUd0NnpmNWJGZDYwZTFDMlAyc3lwRT0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJmb3JtLWRhdGEiOiB7CisgICAgICAidmVy
c2lvbiI6ICIyLjEuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvZm9ybS1kYXRhLy0vZm9ybS1kYXRhLTIuMS40LnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtTThHRHJQR1RKMjdLcVlGRHBwNlV2KzRYVU5FPSIsCisgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFzeW5ja2l0IjogIjAuNC4wIiwKKyAg
ICAgICAgImNvbWJpbmVkLXN0cmVhbSI6ICIxLjAuNSIsCisgICAgICAgICJtaW1lLXR5cGVzIjog
IjIuMS4xNyIKKyAgICAgIH0KKyAgICB9LAorICAgICJmb3J3YXJkZWQiOiB7CisgICAgICAidmVy
c2lvbiI6ICIwLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvZm9yd2FyZGVkLy0vZm9yd2FyZGVkLTAuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtR2UrWWRNU3VIQ2w3endlUDNtT2dtMmFvUTJNPSIsCisgICAgICAiZGV2IjogdHJ1
ZQorICAgIH0sCisgICAgImZyZXNoIjogeworICAgICAgInZlcnNpb24iOiAiMC41LjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZyZXNoLy0vZnJlc2gt
MC41LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS05SFRLWG1xU1J0YjlqZ2xUejZt
NXlBV3ZwNDQ9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZnMtZXh0cmEiOiB7
CisgICAgICAidmVyc2lvbiI6ICIzLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvZnMtZXh0cmEvLS9mcy1leHRyYS0zLjAuMS50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLU41VHplTVdMTkM2bjI3c2pDVkVKeExPMklwRT0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJncmFjZWZ1bC1mcyI6
ICI0LjEuMTEiLAorICAgICAgICAianNvbmZpbGUiOiAiMy4wLjEiLAorICAgICAgICAidW5pdmVy
c2FsaWZ5IjogIjAuMS4xIgorICAgICAgfQorICAgIH0sCisgICAgImZzLnJlYWxwYXRoIjogewor
ICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2ZzLnJlYWxwYXRoLy0vZnMucmVhbHBhdGgtMS4wLjAudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1GUVN0SlNNVmpLcEEyMG9uaDhzQlFSbVU2azg9IiwKKyAg
ICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZnNldmVudHMiOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjEuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvZnNldmVudHMvLS9mc2V2ZW50cy0xLjEuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGE1MTItU240NEU1d1FXNGJUSFh2UW12U0h3cWJ1aVh0ZHVENlJyam0yWnRVRUdieXJpZytuVUgz
dC9RRDRNNC9aWFZpWTU1NlRCcFJnWmtITER4M0p4UHd4aXc9PSIsCisgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJuYW4iOiAiMi43LjAiLAorICAgICAgICAibm9kZS1wcmUtZ3lwIjogIjAuNi4zNiIKKyAgICAg
IH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiYWJicmV2IjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAg
ICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAg
ImFuc2ktZXNjYXBlcyI6ICIxLjQuMCIsCi0gICAgICAgICAgICAiYW5zaS1yZWdleCI6ICIyLjAu
MCIsCi0gICAgICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAotICAgICAgICAgICAgImNsaS1jdXJz
b3IiOiAiMS4wLjIiLAotICAgICAgICAgICAgImNsaS13aWR0aCI6ICIyLjEuMCIsCi0gICAgICAg
ICAgICAiZmlndXJlcyI6ICIxLjcuMCIsCi0gICAgICAgICAgICAibG9kYXNoIjogIjQuMTYuMiIs
Ci0gICAgICAgICAgICAicmVhZGxpbmUyIjogIjEuMC4xIiwKLSAgICAgICAgICAgICJydW4tYXN5
bmMiOiAiMC4xLjAiLAotICAgICAgICAgICAgInJ4LWxpdGUiOiAiMy4xLjIiLAotICAgICAgICAg
ICAgInN0cmluZy13aWR0aCI6ICIxLjAuMiIsCi0gICAgICAgICAgICAic3RyaXAtYW5zaSI6ICIz
LjAuMSIsCi0gICAgICAgICAgICAidGhyb3VnaCI6ICIyLjMuOCIKLSAgICAgICAgICB9Ci0gICAg
ICAgIH0sCi0gICAgICAgICJpbnRlcnByZXQiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC42
LjYiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgImludmFyaWFu
dCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjIuMSIsCisgICAgICAgICJhanYiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiNC4xMS44IiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CiAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKICAg
ICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAibG9vc2UtZW52aWZ5IjogIjEuMi4w
IgorICAgICAgICAgICAgImNvIjogIjQuNi4wIiwKKyAgICAgICAgICAgICJqc29uLXN0YWJsZS1z
dHJpbmdpZnkiOiAiMS4wLjEiCiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAiaW52
ZXJ0LWt2IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgImFuc2kt
cmVnZXgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xLjEiLAogICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAi
aXBhZGRyLmpzIjogeworICAgICAgICAiYXByb2JhIjogewogICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMS4xIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRy
dWUKLSAgICAgICAgfSwKLSAgICAgICAgImlzLWFic29sdXRlLXVybCI6IHsKLSAgICAgICAgICAi
dmVyc2lvbiI6ICIyLjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAg
ICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJpcy1hcnJheWlzaCI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjIuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAg
ICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJpcy1iaW5hcnktcGF0aCI6
IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAogICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAg
ICAgICAgICAgICJiaW5hcnktZXh0ZW5zaW9ucyI6ICIxLjYuMCIKLSAgICAgICAgICB9CisgICAg
ICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAiaXMtYnVmZmVyIjog
eworICAgICAgICAiYXJlLXdlLXRoZXJlLXlldCI6IHsKICAgICAgICAgICAidmVyc2lvbiI6ICIx
LjEuNCIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVl
Ci0gICAgICAgIH0sCi0gICAgICAgICJpcy1idWlsdGluLW1vZHVsZSI6IHsKLSAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAogICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCiAgICAgICAgICAgInJl
cXVpcmVzIjogewotICAgICAgICAgICAgImJ1aWx0aW4tbW9kdWxlcyI6ICIxLjEuMSIKKyAgICAg
ICAgICAgICJkZWxlZ2F0ZXMiOiAiMS4wLjAiLAorICAgICAgICAgICAgInJlYWRhYmxlLXN0cmVh
bSI6ICIyLjIuOSIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJpcy1kb3RmaWxl
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKLSAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImlzLWVx
dWFsLXNoYWxsb3ciOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4xLjMiLAorICAgICAgICAi
YXNuMSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMyIsCiAgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6
IHsKLSAgICAgICAgICAgICJpcy1wcmltaXRpdmUiOiAiMi4wLjAiCi0gICAgICAgICAgfQotICAg
ICAgICB9LAotICAgICAgICAiaXMtZXh0ZW5kYWJsZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICIwLjEuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAiaXMt
ZXh0Z2xvYiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICJhc3Nl
cnQtcGx1cyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCiAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAiaXMt
ZmluaXRlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICAgImFzeW5j
a2l0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNC4wIiwKICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjog
ewotICAgICAgICAgICAgIm51bWJlci1pcy1uYW4iOiAiMS4wLjAiCi0gICAgICAgICAgfQorICAg
ICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgImlzLWZ1bGx3aWR0
aC1jb2RlLXBvaW50IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAg
ImF3cy1zaWduMiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuMCIsCiAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1
aXJlcyI6IHsKLSAgICAgICAgICAgICJudW1iZXItaXMtbmFuIjogIjEuMC4wIgotICAgICAgICAg
IH0KKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJpcy1n
bG9iIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICAgImF3czQiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS42LjAiLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICAgICAiaXMtZXh0Z2xvYiI6ICIxLjAuMCIKLSAgICAgICAgICB9CisgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAiaXMtbG93ZXItY2FzZSI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAgICJiYWxhbmNlZC1tYXRjaCI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuMiIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAg
ICAgICAgICJsb3dlci1jYXNlIjogIjEuMS4zIgotICAgICAgICAgIH0KKyAgICAgICAgICAiZGV2
IjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAiaXMtbXktanNvbi12YWxpZCI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIyLjE0LjAiLAorICAgICAgICAiYmNyeXB0LXBia2RmIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKICAgICAg
ICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiZ2VuZXJhdGUtZnVuY3Rpb24iOiAiMi4w
LjAiLAotICAgICAgICAgICAgImdlbmVyYXRlLW9iamVjdC1wcm9wZXJ0eSI6ICIxLjIuMCIsCi0g
ICAgICAgICAgICAianNvbnBvaW50ZXIiOiAiMi4wLjAiLAotICAgICAgICAgICAgInh0ZW5kIjog
IjQuMC4xIgorICAgICAgICAgICAgInR3ZWV0bmFjbCI6ICIwLjE0LjUiCiAgICAgICAgICAgfQog
ICAgICAgICB9LAotICAgICAgICAiaXMtbnVtYmVyIjogewotICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuMS4wIiwKKyAgICAgICAgImJsb2NrLXN0cmVhbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIwLjAuOSIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0
cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJraW5kLW9mIjogIjMu
MC40IgorICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4zIgogICAgICAgICAgIH0KICAgICAg
ICAgfSwKLSAgICAgICAgImlzLXBhdGgtY3dkIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUK
LSAgICAgICAgfSwKLSAgICAgICAgImlzLXBhdGgtaW4tY3dkIjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMC4wIiwKKyAgICAgICAgImJvb20iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
Mi4xMC4xIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6IHRy
dWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImlzLXBhdGgtaW5zaWRl
IjogIjEuMC4wIgorICAgICAgICAgICAgImhvZWsiOiAiMi4xNi4zIgogICAgICAgICAgIH0KICAg
ICAgICAgfSwKLSAgICAgICAgImlzLXBhdGgtaW5zaWRlIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4wIiwKKyAgICAgICAgImJyYWNlLWV4cGFuc2lvbiI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjEuNyIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAogICAgICAgICAgICJk
ZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJwYXRoLWlz
LWluc2lkZSI6ICIxLjAuMiIKKyAgICAgICAgICAgICJiYWxhbmNlZC1tYXRjaCI6ICIwLjQuMiIs
CisgICAgICAgICAgICAiY29uY2F0LW1hcCI6ICIwLjAuMSIKICAgICAgICAgICB9CiAgICAgICAg
IH0sCi0gICAgICAgICJpcy1wbGFpbi1vYmoiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4x
LjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQot
ICAgICAgICB9LAotICAgICAgICAiaXMtcG9zaXgtYnJhY2tldCI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIwLjEuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJk
ZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJpcy1wcmltaXRpdmUiOiB7Ci0gICAgICAg
ICAgInZlcnNpb24iOiAiMi4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAg
ICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiaXMtcHJvcGVydHkiOiB7Ci0g
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAiYnVmZmVyLXNoaW1zIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CiAgICAgICAgICAgImRldiI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgImlzLXJlc29sdmFi
bGUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAiY2FzZWxlc3Mi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xMi4wIiwKICAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCiAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewot
ICAgICAgICAgICAgInRyeWl0IjogIjEuMC4yIgotICAgICAgICAgIH0KKyAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJpcy1zdmciOiB7Ci0gICAgICAgICAg
InZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAiY28iOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiNC42LjAiLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiaHRtbC1jb21tZW50
LXJlZ2V4IjogIjEuMS4xIgotICAgICAgICAgIH0KKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVl
CiAgICAgICAgIH0sCi0gICAgICAgICJpcy10eXBlZGFycmF5IjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMC4wIiwKKyAgICAgICAgImNvZGUtcG9pbnQtYXQiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4xLjAiLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAi
ZGV2IjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAiaXMtdXBwZXItY2FzZSI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCisgICAgICAgICJjb21iaW5lZC1zdHJlYW0iOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
ICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAg
ICAgICAidXBwZXItY2FzZSI6ICIxLjEuMyIKKyAgICAgICAgICAgICJkZWxheWVkLXN0cmVhbSI6
ICIxLjAuMCIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJpcy11dGY4Ijogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4xIiwKKyAgICAgICAgImNvbmNhdC1tYXAiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMC4wLjEiLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
ICAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAiaXNhcnJheSI6IHsK
LSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICJjb25zb2xlLWNvbnRyb2wt
c3RyaW5ncyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCiAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAg
ICJpc2V4ZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCisgICAgICAgICJjb3Jl
LXV0aWwtaXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAogICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgICB9LAotICAgICAg
ICAiaXNvYmplY3QiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAorICAgICAgICAi
Y3J5cHRpbGVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC41IiwKICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiaXNhcnJh
eSI6ICIxLjAuMCIKKyAgICAgICAgICAgICJib29tIjogIjIuMTAuMSIKICAgICAgICAgICB9CiAg
ICAgICAgIH0sCi0gICAgICAgICJpc3N0cmVhbSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIw
LjEuMiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVl
Ci0gICAgICAgIH0sCi0gICAgICAgICJpc3RhbmJ1bCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICIwLjQuNSIsCisgICAgICAgICJkYXNoZGFzaCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjE0LjEiLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsK
LSAgICAgICAgICAgICJhYmJyZXYiOiAiMS4wLjkiLAotICAgICAgICAgICAgImFzeW5jIjogIjEu
NS4yIiwKLSAgICAgICAgICAgICJlc2NvZGVnZW4iOiAiMS44LjEiLAotICAgICAgICAgICAgImVz
cHJpbWEiOiAiMi43LjMiLAotICAgICAgICAgICAgImdsb2IiOiAiNS4wLjE1IiwKLSAgICAgICAg
ICAgICJoYW5kbGViYXJzIjogIjQuMC41IiwKLSAgICAgICAgICAgICJqcy15YW1sIjogIjMuNi4x
IiwKLSAgICAgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAotICAgICAgICAgICAgIm5vcHQiOiAi
My4wLjYiLAotICAgICAgICAgICAgIm9uY2UiOiAiMS40LjAiLAotICAgICAgICAgICAgInJlc29s
dmUiOiAiMS4xLjciLAotICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjMuMS4yIiwKLSAg
ICAgICAgICAgICJ3aGljaCI6ICIxLjIuMTEiLAotICAgICAgICAgICAgIndvcmR3cmFwIjogIjEu
MC4wIgorICAgICAgICAgICAgImFzc2VydC1wbHVzIjogIjEuMC4wIgogICAgICAgICAgIH0sCiAg
ICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJnbG9iIjogewotICAgICAg
ICAgICAgICAidmVyc2lvbiI6ICI1LjAuMTUiLAorICAgICAgICAgICAgImFzc2VydC1wbHVzIjog
eworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCiAgICAgICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKICAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAiaW5mbGlnaHQiOiAiMS4wLjUiLAotICAgICAg
ICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCi0gICAgICAgICAgICAgICAgIm1pbmltYXRj
aCI6ICIzLjAuMyIsCi0gICAgICAgICAgICAgICAgIm9uY2UiOiAiMS40LjAiLAotICAgICAgICAg
ICAgICAgICJwYXRoLWlzLWFic29sdXRlIjogIjEuMC4wIgotICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgICAgIH0KICAgICAgICAgICB9CiAg
ICAgICAgIH0sCi0gICAgICAgICJpc3RhbmJ1bC1hcGkiOiB7Ci0gICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjAtYXBsaGEuMTAiLAorICAgICAgICAiZGVidWciOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMi42LjgiLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJl
cyI6IHsKLSAgICAgICAgICAgICJhc3luYyI6ICIxLjUuMiIsCi0gICAgICAgICAgICAiY2xvbmUi
OiAiMS4wLjIiLAotICAgICAgICAgICAgImZpbGVzZXQiOiAiMC4yLjEiLAotICAgICAgICAgICAg
ImlzdGFuYnVsLWxpYi1jb3ZlcmFnZSI6ICIxLjAuMCIsCi0gICAgICAgICAgICAiaXN0YW5idWwt
bGliLWhvb2siOiAiMS4wLjAtYWxwaGEuNCIsCi0gICAgICAgICAgICAiaXN0YW5idWwtbGliLWlu
c3RydW1lbnQiOiAiMS4xLjMiLAotICAgICAgICAgICAgImlzdGFuYnVsLWxpYi1yZXBvcnQiOiAi
MS4wLjAtYWxwaGEuMyIsCi0gICAgICAgICAgICAiaXN0YW5idWwtbGliLXNvdXJjZS1tYXBzIjog
IjEuMC4xIiwKLSAgICAgICAgICAgICJpc3RhbmJ1bC1yZXBvcnRzIjogIjEuMC4wLWFscGhhLjgi
LAotICAgICAgICAgICAgImpzLXlhbWwiOiAiMy42LjEiLAotICAgICAgICAgICAgIm1rZGlycCI6
ICIwLjUuMSIsCi0gICAgICAgICAgICAib25jZSI6ICIxLjQuMCIKKyAgICAgICAgICAgICJtcyI6
ICIyLjAuMCIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJpc3RhbmJ1bC1saWIt
Y292ZXJhZ2UiOiB7CisgICAgICAgICJkZWVwLWV4dGVuZCI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIwLjQuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
ImRlbGF5ZWQtc3RyZWFtIjogewogICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6IHRydWUKICAgICAgICAgfSwK
LSAgICAgICAgImlzdGFuYnVsLWxpYi1ob29rIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC4wLWFscGhhLjQiLAorICAgICAgICAiZGVsZWdhdGVzIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4wIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImFwcGVuZC10cmFu
c2Zvcm0iOiAiMC4zLjAiCi0gICAgICAgICAgfQorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUK
ICAgICAgICAgfSwKLSAgICAgICAgImlzdGFuYnVsLWxpYi1pbnN0cnVtZW50IjogewotICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMS4zIiwKKyAgICAgICAgImVjYy1qc2JuIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuMS4xIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKICAgICAgICAgICAi
cmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYmFiZWwtZ2VuZXJhdG9yIjogIjYuMTQuMCIsCi0g
ICAgICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4xNS4wIiwKLSAgICAgICAgICAgICJiYWJl
bC10cmF2ZXJzZSI6ICI2LjE1LjAiLAotICAgICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMTUu
MCIsCi0gICAgICAgICAgICAiYmFieWxvbiI6ICI2LjExLjIiLAotICAgICAgICAgICAgImlzdGFu
YnVsLWxpYi1jb3ZlcmFnZSI6ICIxLjAuMCIKKyAgICAgICAgICAgICJqc2JuIjogIjAuMS4xIgog
ICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgImlzdGFuYnVsLWxpYi1yZXBvcnQiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAtYWxwaGEuMyIsCisgICAgICAgICJleHRlbmQi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjEiLAogICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0g
ICAgICAgICAgICAiYXN5bmMiOiAiMS41LjIiLAotICAgICAgICAgICAgImlzdGFuYnVsLWxpYi1j
b3ZlcmFnZSI6ICIxLjAuMCIsCi0gICAgICAgICAgICAibWtkaXJwIjogIjAuNS4xIiwKLSAgICAg
ICAgICAgICJwYXRoLXBhcnNlIjogIjEuMC41IiwKLSAgICAgICAgICAgICJyaW1yYWYiOiAiMi41
LjQiLAotICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjMuMS4yIgotICAgICAgICAgIH0K
KyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJpc3RhbmJ1
bC1saWItc291cmNlLW1hcHMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAg
ICAgICAiZXh0c3ByaW50ZiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCiAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJpc3RhbmJ1bC1saWItY292ZXJhZ2UiOiAiMS4w
LjAiLAotICAgICAgICAgICAgIm1rZGlycCI6ICIwLjUuMSIsCi0gICAgICAgICAgICAicmltcmFm
IjogIjIuNS40IiwKLSAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS42IgotICAgICAgICAg
IH0KKyAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAiaXN0YW5idWwt
cmVwb3J0cyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMC1hbHBoYS44IiwKKyAgICAg
ICAgImZvcmV2ZXItYWdlbnQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC42LjEiLAogICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAg
ICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiaGFuZGxlYmFycyI6ICI0LjAuNSIKLSAgICAg
ICAgICB9CisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAi
amFzbWluZS1jaGVjayI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuNSIsCisgICAgICAg
ICJmb3JtLWRhdGEiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xLjQiLAogICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJ0ZXN0
Y2hlY2siOiAiMC4xLjQiCisgICAgICAgICAgICAiYXN5bmNraXQiOiAiMC40LjAiLAorICAgICAg
ICAgICAgImNvbWJpbmVkLXN0cmVhbSI6ICIxLjAuNSIsCisgICAgICAgICAgICAibWltZS10eXBl
cyI6ICIyLjEuMTUiCiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAiamVzdCI6IHsK
LSAgICAgICAgICAidmVyc2lvbiI6ICIxNS4xLjEiLAorICAgICAgICAiZnMucmVhbHBhdGgiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICAgICAiamVzdC1jbGkiOiAiMTUuMS4xIgotICAgICAgICAgIH0sCi0gICAgICAgICAgImRl
cGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJjYWxsc2l0ZXMiOiB7Ci0gICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjIuMC4wIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAg
ICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJjbGl1
aSI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjAiLAotICAgICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAg
ICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgInN0cmluZy13aWR0aCI6ICIxLjAuMiIs
Ci0gICAgICAgICAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiLAotICAgICAgICAgICAgICAg
ICJ3cmFwLWFuc2kiOiAiMi4wLjAiCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAiamVzdC1jbGkiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjE1LjEu
MSIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6
IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAiYW5z
aS1lc2NhcGVzIjogIjEuNC4wIiwKLSAgICAgICAgICAgICAgICAiY2FsbHNpdGVzIjogIjIuMC4w
IiwKLSAgICAgICAgICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAotICAgICAgICAgICAgICAgICJn
cmFjZWZ1bC1mcyI6ICI0LjEuOCIsCi0gICAgICAgICAgICAgICAgImlzdGFuYnVsLWFwaSI6ICIx
LjAuMC1hcGxoYS4xMCIsCi0gICAgICAgICAgICAgICAgImlzdGFuYnVsLWxpYi1jb3ZlcmFnZSI6
ICIxLjAuMCIsCi0gICAgICAgICAgICAgICAgImlzdGFuYnVsLWxpYi1pbnN0cnVtZW50IjogIjEu
MS4zIiwKLSAgICAgICAgICAgICAgICAiamVzdC1jaGFuZ2VkLWZpbGVzIjogIjE1LjAuMCIsCi0g
ICAgICAgICAgICAgICAgImplc3QtY29uZmlnIjogIjE1LjEuMSIsCi0gICAgICAgICAgICAgICAg
Implc3QtZW52aXJvbm1lbnQtanNkb20iOiAiMTUuMS4xIiwKLSAgICAgICAgICAgICAgICAiamVz
dC1maWxlLWV4aXN0cyI6ICIxNS4wLjAiLAotICAgICAgICAgICAgICAgICJqZXN0LWhhc3RlLW1h
cCI6ICIxNS4wLjEiLAotICAgICAgICAgICAgICAgICJqZXN0LWphc21pbmUyIjogIjE1LjEuMSIs
Ci0gICAgICAgICAgICAgICAgImplc3QtbW9jayI6ICIxNS4wLjAiLAotICAgICAgICAgICAgICAg
ICJqZXN0LXJlc29sdmUiOiAiMTUuMC4xIiwKLSAgICAgICAgICAgICAgICAiamVzdC1yZXNvbHZl
LWRlcGVuZGVuY2llcyI6ICIxNS4wLjEiLAotICAgICAgICAgICAgICAgICJqZXN0LXJ1bnRpbWUi
OiAiMTUuMS4xIiwKLSAgICAgICAgICAgICAgICAiamVzdC1zbmFwc2hvdCI6ICIxNS4xLjEiLAot
ICAgICAgICAgICAgICAgICJqZXN0LXV0aWwiOiAiMTUuMS4xIiwKLSAgICAgICAgICAgICAgICAi
anNvbi1zdGFibGUtc3RyaW5naWZ5IjogIjEuMC4xIiwKLSAgICAgICAgICAgICAgICAibm9kZS1u
b3RpZmllciI6ICI0LjYuMSIsCi0gICAgICAgICAgICAgICAgInNhbmUiOiAiMS40LjEiLAotICAg
ICAgICAgICAgICAgICJ3aGljaCI6ICIxLjIuMTEiLAotICAgICAgICAgICAgICAgICJ3b3JrZXIt
ZmFybSI6ICIxLjMuMSIsCi0gICAgICAgICAgICAgICAgInlhcmdzIjogIjUuMC4wIgotICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgIndpbmRvdy1zaXplIjogewot
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCi0gICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAieWFyZ3MiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjUuMC4wIiwKLSAg
ICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwK
LSAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICJjbGl1aSI6ICIz
LjIuMCIsCi0gICAgICAgICAgICAgICAgImRlY2FtZWxpemUiOiAiMS4yLjAiLAotICAgICAgICAg
ICAgICAgICJnZXQtY2FsbGVyLWZpbGUiOiAiMS4wLjIiLAotICAgICAgICAgICAgICAgICJsb2Rh
c2guYXNzaWduIjogIjQuMi4wIiwKLSAgICAgICAgICAgICAgICAib3MtbG9jYWxlIjogIjEuNC4w
IiwKLSAgICAgICAgICAgICAgICAicmVhZC1wa2ctdXAiOiAiMS4wLjEiLAotICAgICAgICAgICAg
ICAgICJyZXF1aXJlLWRpcmVjdG9yeSI6ICIyLjEuMSIsCi0gICAgICAgICAgICAgICAgInJlcXVp
cmUtbWFpbi1maWxlbmFtZSI6ICIxLjAuMSIsCi0gICAgICAgICAgICAgICAgInNldC1ibG9ja2lu
ZyI6ICIyLjAuMCIsCi0gICAgICAgICAgICAgICAgInN0cmluZy13aWR0aCI6ICIxLjAuMiIsCi0g
ICAgICAgICAgICAgICAgIndoaWNoLW1vZHVsZSI6ICIxLjAuMCIsCi0gICAgICAgICAgICAgICAg
IndpbmRvdy1zaXplIjogIjAuMi4wIiwKLSAgICAgICAgICAgICAgICAieTE4biI6ICIzLjIuMSIs
Ci0gICAgICAgICAgICAgICAgInlhcmdzLXBhcnNlciI6ICIzLjIuMCIKLSAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KKyAgICAgICAgICAiZGV2IjogdHJ1ZQogICAg
ICAgICB9LAotICAgICAgICAiamVzdC1jaGFuZ2VkLWZpbGVzIjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjE1LjAuMCIsCisgICAgICAgICJmc3RyZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4xMSIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS4xMSIsCisgICAgICAgICAgICAiaW5oZXJp
dHMiOiAiMi4wLjMiLAorICAgICAgICAgICAgIm1rZGlycCI6ICIwLjUuMSIsCisgICAgICAgICAg
ICAicmltcmFmIjogIjIuNi4xIgorICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgImpl
c3QtY29uZmlnIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjE1LjEuMSIsCisgICAgICAgICJm
c3RyZWFtLWlnbm9yZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCiAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJv
cHRpb25hbCI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImNo
YWxrIjogIjEuMS4zIiwKLSAgICAgICAgICAgICJpc3RhbmJ1bCI6ICIwLjQuNSIsCi0gICAgICAg
ICAgICAiamVzdC1lbnZpcm9ubWVudC1qc2RvbSI6ICIxNS4xLjEiLAotICAgICAgICAgICAgImpl
c3QtZW52aXJvbm1lbnQtbm9kZSI6ICIxNS4xLjEiLAotICAgICAgICAgICAgImplc3QtamFzbWlu
ZTIiOiAiMTUuMS4xIiwKLSAgICAgICAgICAgICJqZXN0LW1vY2siOiAiMTUuMC4wIiwKLSAgICAg
ICAgICAgICJqZXN0LXJlc29sdmUiOiAiMTUuMC4xIiwKLSAgICAgICAgICAgICJqZXN0LXV0aWwi
OiAiMTUuMS4xIiwKLSAgICAgICAgICAgICJqc29uLXN0YWJsZS1zdHJpbmdpZnkiOiAiMS4wLjEi
CisgICAgICAgICAgICAiZnN0cmVhbSI6ICIxLjAuMTEiLAorICAgICAgICAgICAgImluaGVyaXRz
IjogIjIuMC4zIiwKKyAgICAgICAgICAgICJtaW5pbWF0Y2giOiAiMy4wLjQiCiAgICAgICAgICAg
fQogICAgICAgICB9LAotICAgICAgICAiamVzdC1kaWZmIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjE1LjEuMCIsCisgICAgICAgICJnYXVnZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIy
LjcuNCIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewot
ICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKLSAgICAgICAgICAgICJkaWZmIjogIjMuMC4w
IiwKLSAgICAgICAgICAgICJqZXN0LW1hdGNoZXItdXRpbHMiOiAiMTUuMS4wIiwKLSAgICAgICAg
ICAgICJwcmV0dHktZm9ybWF0IjogIjMuOC4wIgorICAgICAgICAgICAgImFwcm9iYSI6ICIxLjEu
MSIsCisgICAgICAgICAgICAiY29uc29sZS1jb250cm9sLXN0cmluZ3MiOiAiMS4xLjAiLAorICAg
ICAgICAgICAgImhhcy11bmljb2RlIjogIjIuMC4xIiwKKyAgICAgICAgICAgICJvYmplY3QtYXNz
aWduIjogIjQuMS4xIiwKKyAgICAgICAgICAgICJzaWduYWwtZXhpdCI6ICIzLjAuMiIsCisgICAg
ICAgICAgICAic3RyaW5nLXdpZHRoIjogIjEuMC4yIiwKKyAgICAgICAgICAgICJzdHJpcC1hbnNp
IjogIjMuMC4xIiwKKyAgICAgICAgICAgICJ3aWRlLWFsaWduIjogIjEuMS4yIgogICAgICAgICAg
IH0KICAgICAgICAgfSwKLSAgICAgICAgImplc3QtZW52aXJvbm1lbnQtanNkb20iOiB7Ci0gICAg
ICAgICAgInZlcnNpb24iOiAiMTUuMS4xIiwKKyAgICAgICAgImdldHBhc3MiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMC4xLjciLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKICAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAogICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJqZXN0LXV0aWwiOiAiMTUuMS4xIiwKLSAgICAg
ICAgICAgICJqc2RvbSI6ICI5LjUuMCIKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6ICIxLjAu
MCIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAg
ICAiYXNzZXJ0LXBsdXMiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAg
ICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgfQogICAgICAgICAg
IH0KICAgICAgICAgfSwKLSAgICAgICAgImplc3QtZW52aXJvbm1lbnQtbm9kZSI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIxNS4xLjEiLAorICAgICAgICAiZ2xvYiI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICI3LjEuMiIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAogICAgICAgICAg
ICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJqZXN0
LXV0aWwiOiAiMTUuMS4xIgorICAgICAgICAgICAgImZzLnJlYWxwYXRoIjogIjEuMC4wIiwKKyAg
ICAgICAgICAgICJpbmZsaWdodCI6ICIxLjAuNiIsCisgICAgICAgICAgICAiaW5oZXJpdHMiOiAi
Mi4wLjMiLAorICAgICAgICAgICAgIm1pbmltYXRjaCI6ICIzLjAuNCIsCisgICAgICAgICAgICAi
b25jZSI6ICIxLjQuMCIsCisgICAgICAgICAgICAicGF0aC1pcy1hYnNvbHV0ZSI6ICIxLjAuMSIK
ICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJqZXN0LWZpbGUtZXhpc3RzIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjE1LjAuMCIsCisgICAgICAgICJncmFjZWZ1bC1mcyI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICI0LjEuMTEiLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAiamVzdC1oYXN0
ZS1tYXAiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMTUuMC4xIiwKKyAgICAgICAgImhhci1z
Y2hlbWEiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAogICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMi
OiB7Ci0gICAgICAgICAgICAiZmItd2F0Y2htYW4iOiAiMS45LjAiLAotICAgICAgICAgICAgImdy
YWNlZnVsLWZzIjogIjQuMS44IiwKLSAgICAgICAgICAgICJtdWx0aW1hdGNoIjogIjIuMS4wIiwK
LSAgICAgICAgICAgICJ3b3JrZXItZmFybSI6ICIxLjMuMSIKLSAgICAgICAgICB9CisgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAiamVzdC1qYXNtaW5lMiI6
IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxNS4xLjEiLAorICAgICAgICAiaGFyLXZhbGlkYXRv
ciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjIuMSIsCiAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRy
dWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImdyYWNlZnVsLWZzIjog
IjQuMS44IiwKLSAgICAgICAgICAgICJqYXNtaW5lLWNoZWNrIjogIjAuMS41IiwKLSAgICAgICAg
ICAgICJqZXN0LW1hdGNoZXJzIjogIjE1LjEuMSIsCi0gICAgICAgICAgICAiamVzdC1zbmFwc2hv
dCI6ICIxNS4xLjEiLAotICAgICAgICAgICAgImplc3QtdXRpbCI6ICIxNS4xLjEiCisgICAgICAg
ICAgICAiYWp2IjogIjQuMTEuOCIsCisgICAgICAgICAgICAiaGFyLXNjaGVtYSI6ICIxLjAuNSIK
ICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJqZXN0LW1hdGNoZXItdXRpbHMiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMTUuMS4wIiwKKyAgICAgICAgImhhcy11bmljb2RlIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCiAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgImNoYWxrIjogIjEuMS4zIgotICAgICAgICAgIH0KKyAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJqZXN0LW1hdGNoZXJzIjogewotICAgICAg
ICAgICJ2ZXJzaW9uIjogIjE1LjEuMSIsCisgICAgICAgICJoYXdrIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjMuMS4zIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKICAgICAgICAgICAicmVx
dWlyZXMiOiB7Ci0gICAgICAgICAgICAiamVzdC1kaWZmIjogIjE1LjEuMCIsCi0gICAgICAgICAg
ICAiamVzdC1tYXRjaGVyLXV0aWxzIjogIjE1LjEuMCIsCi0gICAgICAgICAgICAiamVzdC11dGls
IjogIjE1LjEuMSIKKyAgICAgICAgICAgICJib29tIjogIjIuMTAuMSIsCisgICAgICAgICAgICAi
Y3J5cHRpbGVzIjogIjIuMC41IiwKKyAgICAgICAgICAgICJob2VrIjogIjIuMTYuMyIsCisgICAg
ICAgICAgICAic250cCI6ICIxLjAuOSIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAg
ICJqZXN0LW1vY2siOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMTUuMC4wIiwKKyAgICAgICAg
ImhvZWsiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xNi4zIiwKICAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAg
Implc3QtcmVzb2x2ZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxNS4wLjEiLAorICAgICAg
ICAiaHR0cC1zaWduYXR1cmUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAogICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAg
ICJicm93c2VyLXJlc29sdmUiOiAiMS4xMS4yIiwKLSAgICAgICAgICAgICJqZXN0LWZpbGUtZXhp
c3RzIjogIjE1LjAuMCIsCi0gICAgICAgICAgICAiamVzdC1oYXN0ZS1tYXAiOiAiMTUuMC4xIiwK
LSAgICAgICAgICAgICJyZXNvbHZlIjogIjEuMS43IgorICAgICAgICAgICAgImFzc2VydC1wbHVz
IjogIjAuMi4wIiwKKyAgICAgICAgICAgICJqc3ByaW0iOiAiMS40LjAiLAorICAgICAgICAgICAg
InNzaHBrIjogIjEuMTMuMCIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJqZXN0
LXJlc29sdmUtZGVwZW5kZW5jaWVzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjE1LjAuMSIs
CisgICAgICAgICJpbmZsaWdodCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNiIsCiAg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJqZXN0LWZpbGUtZXhpc3RzIjogIjE1LjAu
MCIsCi0gICAgICAgICAgICAiamVzdC1yZXNvbHZlIjogIjE1LjAuMSIKKyAgICAgICAgICAgICJv
bmNlIjogIjEuNC4wIiwKKyAgICAgICAgICAgICJ3cmFwcHkiOiAiMS4wLjIiCiAgICAgICAgICAg
fQogICAgICAgICB9LAotICAgICAgICAiamVzdC1ydW50aW1lIjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjE1LjEuMSIsCisgICAgICAgICJpbmhlcml0cyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIyLjAuMyIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYi
OiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJiYWJlbC1jb3Jl
IjogIjYuMTQuMCIsCi0gICAgICAgICAgICAiYmFiZWwtamVzdCI6ICIxNS4wLjAiLAotICAgICAg
ICAgICAgImJhYmVsLXBsdWdpbi1pc3RhbmJ1bCI6ICIyLjAuMSIsCi0gICAgICAgICAgICAiY2hh
bGsiOiAiMS4xLjMiLAotICAgICAgICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS44IiwKLSAgICAg
ICAgICAgICJqZXN0LWNvbmZpZyI6ICIxNS4xLjEiLAotICAgICAgICAgICAgImplc3QtZmlsZS1l
eGlzdHMiOiAiMTUuMC4wIiwKLSAgICAgICAgICAgICJqZXN0LWhhc3RlLW1hcCI6ICIxNS4wLjEi
LAotICAgICAgICAgICAgImplc3QtbW9jayI6ICIxNS4wLjAiLAotICAgICAgICAgICAgImplc3Qt
cmVzb2x2ZSI6ICIxNS4wLjEiLAotICAgICAgICAgICAgImplc3Qtc25hcHNob3QiOiAiMTUuMS4x
IiwKLSAgICAgICAgICAgICJqZXN0LXV0aWwiOiAiMTUuMS4xIiwKLSAgICAgICAgICAgICJqc29u
LXN0YWJsZS1zdHJpbmdpZnkiOiAiMS4wLjEiLAotICAgICAgICAgICAgIm11bHRpbWF0Y2giOiAi
Mi4xLjAiLAotICAgICAgICAgICAgInlhcmdzIjogIjUuMC4wIgotICAgICAgICAgIH0sCi0gICAg
ICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJjbGl1aSI6IHsKLSAgICAgICAg
ICAgICAgInZlcnNpb24iOiAiMy4yLjAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7
Ci0gICAgICAgICAgICAgICAgInN0cmluZy13aWR0aCI6ICIxLjAuMiIsCi0gICAgICAgICAgICAg
ICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiLAotICAgICAgICAgICAgICAgICJ3cmFwLWFuc2kiOiAi
Mi4wLjAiCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAid2lu
ZG93LXNpemUiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKLSAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICJ5YXJncyI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24i
OiAiNS4wLjAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAg
ICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAg
ICAgImNsaXVpIjogIjMuMi4wIiwKLSAgICAgICAgICAgICAgICAiZGVjYW1lbGl6ZSI6ICIxLjIu
MCIsCi0gICAgICAgICAgICAgICAgImdldC1jYWxsZXItZmlsZSI6ICIxLjAuMiIsCi0gICAgICAg
ICAgICAgICAgImxvZGFzaC5hc3NpZ24iOiAiNC4yLjAiLAotICAgICAgICAgICAgICAgICJvcy1s
b2NhbGUiOiAiMS40LjAiLAotICAgICAgICAgICAgICAgICJyZWFkLXBrZy11cCI6ICIxLjAuMSIs
Ci0gICAgICAgICAgICAgICAgInJlcXVpcmUtZGlyZWN0b3J5IjogIjIuMS4xIiwKLSAgICAgICAg
ICAgICAgICAicmVxdWlyZS1tYWluLWZpbGVuYW1lIjogIjEuMC4xIiwKLSAgICAgICAgICAgICAg
ICAic2V0LWJsb2NraW5nIjogIjIuMC4wIiwKLSAgICAgICAgICAgICAgICAic3RyaW5nLXdpZHRo
IjogIjEuMC4yIiwKLSAgICAgICAgICAgICAgICAid2hpY2gtbW9kdWxlIjogIjEuMC4wIiwKLSAg
ICAgICAgICAgICAgICAid2luZG93LXNpemUiOiAiMC4yLjAiLAotICAgICAgICAgICAgICAgICJ5
MThuIjogIjMuMi4xIiwKLSAgICAgICAgICAgICAgICAieWFyZ3MtcGFyc2VyIjogIjMuMi4wIgot
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQorICAgICAgICAgICJk
ZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJqZXN0LXNuYXBzaG90IjogewotICAgICAg
ICAgICJ2ZXJzaW9uIjogIjE1LjEuMSIsCisgICAgICAgICJpbmkiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4zLjQiLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiamVzdC1k
aWZmIjogIjE1LjEuMCIsCi0gICAgICAgICAgICAiamVzdC1maWxlLWV4aXN0cyI6ICIxNS4wLjAi
LAotICAgICAgICAgICAgImplc3QtdXRpbCI6ICIxNS4xLjEiLAotICAgICAgICAgICAgInByZXR0
eS1mb3JtYXQiOiAiMy44LjAiCi0gICAgICAgICAgfQorICAgICAgICAgICJvcHRpb25hbCI6IHRy
dWUKICAgICAgICAgfSwKLSAgICAgICAgImplc3QtdXRpbCI6IHsKLSAgICAgICAgICAidmVyc2lv
biI6ICIxNS4xLjEiLAorICAgICAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKICAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAg
ICAiY2hhbGsiOiAiMS4xLjMiLAotICAgICAgICAgICAgImRpZmYiOiAiMy4wLjAiLAotICAgICAg
ICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS44IiwKLSAgICAgICAgICAgICJqZXN0LWZpbGUtZXhp
c3RzIjogIjE1LjAuMCIsCi0gICAgICAgICAgICAiamVzdC1tb2NrIjogIjE1LjAuMCIsCi0gICAg
ICAgICAgICAibWtkaXJwIjogIjAuNS4xIgorICAgICAgICAgICAgIm51bWJlci1pcy1uYW4iOiAi
MS4wLjEiCiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAiam9kaWQyNTUxOSI6IHsK
LSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICJpcy10eXBlZGFycmF5Ijog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCiAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwK
LSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAianNibiI6ICIwLjEuMCIKLSAg
ICAgICAgICB9CisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICB9LAotICAgICAg
ICAianMtYmFzZTY0IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS45IiwKKyAgICAgICAg
ImlzYXJyYXkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAogICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgICB9LAotICAgICAg
ICAianMtdG9rZW5zIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAg
Imlzc3RyZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4yIiwKICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJq
cy15YW1sIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjMuNi4xIiwKKyAgICAgICAgImpvZGlk
MjU1MTkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAogICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwi
OiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJhcmdwYXJzZSI6
ICIxLjAuNyIsCi0gICAgICAgICAgICAiZXNwcmltYSI6ICIyLjcuMyIKKyAgICAgICAgICAgICJq
c2JuIjogIjAuMS4xIgogICAgICAgICAgIH0KICAgICAgICAgfSwKICAgICAgICAgImpzYm4iOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4xLjAiLAorICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
MS4xIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6IHRydWUs
CiAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAianNkb20i
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiOS41LjAiLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0g
ICAgICAgICAgICAiYWJhYiI6ICIxLjAuMyIsCi0gICAgICAgICAgICAiYWNvcm4iOiAiMi43LjAi
LAotICAgICAgICAgICAgImFjb3JuLWdsb2JhbHMiOiAiMS4wLjkiLAotICAgICAgICAgICAgImFy
cmF5LWVxdWFsIjogIjEuMC4wIiwKLSAgICAgICAgICAgICJjc3NvbSI6ICIwLjMuMSIsCi0gICAg
ICAgICAgICAiY3Nzc3R5bGUiOiAiMC4yLjM3IiwKLSAgICAgICAgICAgICJlc2NvZGVnZW4iOiAi
MS44LjEiLAotICAgICAgICAgICAgImljb252LWxpdGUiOiAiMC40LjEzIiwKLSAgICAgICAgICAg
ICJud21hdGNoZXIiOiAiMS4zLjgiLAotICAgICAgICAgICAgInBhcnNlNSI6ICIxLjUuMSIsCi0g
ICAgICAgICAgICAicmVxdWVzdCI6ICIyLjc1LjAiLAotICAgICAgICAgICAgInNheCI6ICIxLjIu
MSIsCi0gICAgICAgICAgICAic3ltYm9sLXRyZWUiOiAiMy4xLjQiLAotICAgICAgICAgICAgInRv
dWdoLWNvb2tpZSI6ICIyLjMuMSIsCi0gICAgICAgICAgICAid2ViaWRsLWNvbnZlcnNpb25zIjog
IjMuMC4xIiwKLSAgICAgICAgICAgICJ3aGF0d2ctdXJsIjogIjMuMC4wIiwKLSAgICAgICAgICAg
ICJ4bWwtbmFtZS12YWxpZGF0b3IiOiAiMi4wLjEiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAi
ZGVwZW5kZW5jaWVzIjogewotICAgICAgICAgICAgImFjb3JuIjogewotICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIyLjcuMCIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAg
ICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAg
IH0sCi0gICAgICAgICJqc2VzYyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjUuMCIsCi0g
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAg
IH0sCi0gICAgICAgICJqc29uLWxvYWRlciI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjUu
NCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0g
ICAgICAgIH0sCiAgICAgICAgICJqc29uLXNjaGVtYSI6IHsKICAgICAgICAgICAidmVyc2lvbiI6
ICIwLjIuMyIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQog
ICAgICAgICB9LAogICAgICAgICAianNvbi1zdGFibGUtc3RyaW5naWZ5IjogewogICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4xIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKICAgICAgICAgICAi
cmVxdWlyZXMiOiB7CiAgICAgICAgICAgICAianNvbmlmeSI6ICIwLjAuMCIKICAgICAgICAgICB9
CkBAIC02NzU0LDI4NzQgKzQzMDQsNzIzMyBAQAogICAgICAgICAianNvbi1zdHJpbmdpZnktc2Fm
ZSI6IHsKICAgICAgICAgICAidmVyc2lvbiI6ICI1LjAuMSIsCiAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJqc29u
MyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIzLjMuMiIsCi0gICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJqc29u
NSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuMCIsCi0gICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJqc29u
ZmlsZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjQuMCIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6
IHsKLSAgICAgICAgICAgICJncmFjZWZ1bC1mcyI6ICI0LjEuOCIKLSAgICAgICAgICB9CisgICAg
ICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICB9LAogICAgICAgICAianNvbmlmeSI6IHsK
ICAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuMCIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJqc29ucG9pbnRl
ciI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICB9LAogICAgICAgICAianNwcmltIjog
ewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4xIiwKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjQuMCIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgImFzc2VydC1wbHVzIjogIjEuMC4wIiwKICAgICAgICAgICAgICJleHRzcHJp
bnRmIjogIjEuMC4yIiwKICAgICAgICAgICAgICJqc29uLXNjaGVtYSI6ICIwLjIuMyIsCiAgICAg
ICAgICAgICAidmVycm9yIjogIjEuMy42IgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVu
ZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6IHsKKyAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisg
ICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAianN4LWFzdC11
dGlscyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuMSIsCisgICAgICAgICJtaW1lLWRi
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMjcuMCIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJtaW1l
LXR5cGVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4xNSIsCiAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJl
cyI6IHsKLSAgICAgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4wIgorICAgICAgICAgICAg
Im1pbWUtZGIiOiAiMS4yNy4wIgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgImtp
bmQtb2YiOiB7CisgICAgICAgICJtaW5pbWF0Y2giOiB7CiAgICAgICAgICAgInZlcnNpb24iOiAi
My4wLjQiLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1
ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiaXMtYnVmZmVyIjogIjEu
MS40IgorICAgICAgICAgICAgImJyYWNlLWV4cGFuc2lvbiI6ICIxLjEuNyIKICAgICAgICAgICB9
CiAgICAgICAgIH0sCi0gICAgICAgICJrbGF3IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
My4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUK
LSAgICAgICAgfSwKLSAgICAgICAgImxhenktY2FjaGUiOiB7Ci0gICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjQiLAorICAgICAgICAibWluaW1pc3QiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MC4wLjgiLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1
ZQogICAgICAgICB9LAotICAgICAgICAibGNpZCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIx
LjAuMCIsCisgICAgICAgICJta2RpcnAiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC41LjEi
LAogICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAg
ICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiaW52ZXJ0LWt2IjogIjEuMC4wIgor
ICAgICAgICAgICAgIm1pbmltaXN0IjogIjAuMC44IgogICAgICAgICAgIH0KICAgICAgICAgfSwK
LSAgICAgICAgImxldm4iOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4zLjAiLAorICAgICAg
ICAibXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJub2RlLXByZS1neXAiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMC42LjM2IiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKICAgICAgICAgICAi
cmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAicHJlbHVkZS1scyI6ICIxLjEuMiIsCi0gICAgICAg
ICAgICAidHlwZS1jaGVjayI6ICIwLjMuMiIKKyAgICAgICAgICAgICJta2RpcnAiOiAiMC41LjEi
LAorICAgICAgICAgICAgIm5vcHQiOiAiNC4wLjEiLAorICAgICAgICAgICAgIm5wbWxvZyI6ICI0
LjEuMCIsCisgICAgICAgICAgICAicmMiOiAiMS4yLjEiLAorICAgICAgICAgICAgInJlcXVlc3Qi
OiAiMi44MS4wIiwKKyAgICAgICAgICAgICJyaW1yYWYiOiAiMi42LjEiLAorICAgICAgICAgICAg
InNlbXZlciI6ICI1LjMuMCIsCisgICAgICAgICAgICAidGFyIjogIjIuMi4xIiwKKyAgICAgICAg
ICAgICJ0YXItcGFjayI6ICIzLjQuMCIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAg
ICJsb2FkLWpzb24tZmlsZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAg
ICAgICJub3B0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMC4xIiwKICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiZ3JhY2Vm
dWwtZnMiOiAiNC4xLjgiLAotICAgICAgICAgICAgInBhcnNlLWpzb24iOiAiMi4yLjAiLAotICAg
ICAgICAgICAgInBpZnkiOiAiMi4zLjAiLAotICAgICAgICAgICAgInBpbmtpZS1wcm9taXNlIjog
IjIuMC4xIiwKLSAgICAgICAgICAgICJzdHJpcC1ib20iOiAiMi4wLjAiCisgICAgICAgICAgICAi
YWJicmV2IjogIjEuMS4wIiwKKyAgICAgICAgICAgICJvc2VudiI6ICIwLjEuNCIKICAgICAgICAg
ICB9CiAgICAgICAgIH0sCi0gICAgICAgICJsb2FkZXItdXRpbHMiOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMC4yLjE2IiwKKyAgICAgICAgIm5wbWxvZyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICI0LjEuMCIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVz
IjogewotICAgICAgICAgICAgImJpZy5qcyI6ICIzLjEuMyIsCi0gICAgICAgICAgICAiZW1vamlz
LWxpc3QiOiAiMi4wLjEiLAotICAgICAgICAgICAgImpzb241IjogIjAuNS4wIiwKLSAgICAgICAg
ICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4wIgotICAgICAgICAgIH0sCi0gICAgICAgICAgImRl
cGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJqc29uNSI6IHsKLSAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMC41LjAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAgICB9CisgICAgICAgICAgICAiYXJlLXdlLXRo
ZXJlLXlldCI6ICIxLjEuNCIsCisgICAgICAgICAgICAiY29uc29sZS1jb250cm9sLXN0cmluZ3Mi
OiAiMS4xLjAiLAorICAgICAgICAgICAgImdhdWdlIjogIjIuNy40IiwKKyAgICAgICAgICAgICJz
ZXQtYmxvY2tpbmciOiAiMi4wLjAiCiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAi
bG9kYXNoIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMTYuMiIsCisgICAgICAgICJudW1i
ZXItaXMtbmFuIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6IHRydWUKICAgICAgICAgfSwKLSAgICAg
ICAgImxvZGFzaC5fYXJyYXljb3B5IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwK
KyAgICAgICAgIm9hdXRoLXNpZ24iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC44LjIiLAog
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgfSwK
LSAgICAgICAgImxvZGFzaC5fYXJyYXllYWNoIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjMu
MC4wIiwKKyAgICAgICAgIm9iamVjdC1hc3NpZ24iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
NC4xLjEiLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAg
ICAgICAgfSwKLSAgICAgICAgImxvZGFzaC5fYmFzZWFzc2lnbiI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIzLjIuMCIsCisgICAgICAgICJvbmNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuNC4wIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6IHRy
dWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImxvZGFzaC5fYmFzZWNv
cHkiOiAiMy4wLjEiLAotICAgICAgICAgICAgImxvZGFzaC5rZXlzIjogIjMuMS4yIgorICAgICAg
ICAgICAgIndyYXBweSI6ICIxLjAuMiIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAg
ICJsb2Rhc2guX2Jhc2VjbG9uZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIzLjMuMCIsCisg
ICAgICAgICJvcy1ob21lZGlyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAg
ICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImxvZGFzaC5fYXJyYXljb3B5IjogIjMuMC4w
IiwKLSAgICAgICAgICAgICJsb2Rhc2guX2FycmF5ZWFjaCI6ICIzLjAuMCIsCi0gICAgICAgICAg
ICAibG9kYXNoLl9iYXNlYXNzaWduIjogIjMuMi4wIiwKLSAgICAgICAgICAgICJsb2Rhc2guX2Jh
c2Vmb3IiOiAiMy4wLjMiLAotICAgICAgICAgICAgImxvZGFzaC5pc2FycmF5IjogIjMuMC40IiwK
LSAgICAgICAgICAgICJsb2Rhc2gua2V5cyI6ICIzLjEuMiIKLSAgICAgICAgICB9CisgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAibG9kYXNoLl9iYXNlY29w
eSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMSIsCisgICAgICAgICJvcy10bXBkaXIi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAogICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgImxvZGFzaC5fYmFz
ZWZvciI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMyIsCisgICAgICAgICJvc2VudiI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuNCIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAib3MtaG9tZWRpciI6ICIxLjAuMiIsCisgICAgICAgICAgICAib3MtdG1wZGlyIjogIjEu
MC4yIgorICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgImxvZGFzaC5fYmluZGNhbGxi
YWNrIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKKyAgICAgICAgInBhdGgtaXMt
YWJzb2x1dGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAogICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgICB9LAotICAgICAg
ICAibG9kYXNoLl9jcmVhdGVjb21wb3VuZGVyIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjMu
MC4wIiwKKyAgICAgICAgInBlcmZvcm1hbmNlLW5vdyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIwLjIuMCIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0
cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJsb2Rhc2guZGVidXJy
IjogIjMuMi4wIiwKLSAgICAgICAgICAgICJsb2Rhc2gud29yZHMiOiAiMy4yLjAiCi0gICAgICAg
ICAgfQorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgImxv
ZGFzaC5fZ2V0bmF0aXZlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjMuOS4xIiwKKyAgICAg
ICAgInByb2Nlc3MtbmV4dGljay1hcmdzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC43
IiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6IHRydWUKICAg
ICAgICAgfSwKLSAgICAgICAgImxvZGFzaC5fcm9vdCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICIzLjAuMSIsCisgICAgICAgICJwdW55Y29kZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjQuMSIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAg
ICAgICB9LAotICAgICAgICAibG9kYXNoLmFzc2lnbiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICI0LjIuMCIsCisgICAgICAgICJxcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjQuMCIs
CiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICB9
LAotICAgICAgICAibG9kYXNoLmNhbWVsY2FzZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIz
LjAuMSIsCisgICAgICAgICJyYyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMSIsCiAg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJvcHRpb25hbCI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAg
ICAgImxvZGFzaC5fY3JlYXRlY29tcG91bmRlciI6ICIzLjAuMCIKKyAgICAgICAgICAgICJkZWVw
LWV4dGVuZCI6ICIwLjQuMiIsCisgICAgICAgICAgICAiaW5pIjogIjEuMy40IiwKKyAgICAgICAg
ICAgICJtaW5pbWlzdCI6ICIxLjIuMCIsCisgICAgICAgICAgICAic3RyaXAtanNvbi1jb21tZW50
cyI6ICIyLjAuMSIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Cisg
ICAgICAgICAgICAibWluaW1pc3QiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4w
IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgfQogICAg
ICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgImxvZGFzaC5jbG9uZWRlZXAiOiB7Ci0gICAg
ICAgICAgInZlcnNpb24iOiAiMy4wLjIiLAorICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi45IiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAg
ICAgICAgImxvZGFzaC5fYmFzZWNsb25lIjogIjMuMy4wIiwKLSAgICAgICAgICAgICJsb2Rhc2gu
X2JpbmRjYWxsYmFjayI6ICIzLjAuMSIKKyAgICAgICAgICAgICJidWZmZXItc2hpbXMiOiAiMS4w
LjAiLAorICAgICAgICAgICAgImNvcmUtdXRpbC1pcyI6ICIxLjAuMiIsCisgICAgICAgICAgICAi
aW5oZXJpdHMiOiAiMi4wLjMiLAorICAgICAgICAgICAgImlzYXJyYXkiOiAiMS4wLjAiLAorICAg
ICAgICAgICAgInByb2Nlc3MtbmV4dGljay1hcmdzIjogIjEuMC43IiwKKyAgICAgICAgICAgICJz
dHJpbmdfZGVjb2RlciI6ICIxLjAuMSIsCisgICAgICAgICAgICAidXRpbC1kZXByZWNhdGUiOiAi
MS4wLjIiCiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAibG9kYXNoLmNvbmQiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiNC41LjIiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAibG9kYXNoLmRl
YnVyciI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIzLjIuMCIsCisgICAgICAgICJyZXF1ZXN0
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuODEuMCIsCiAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRy
dWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImxvZGFzaC5fcm9vdCI6
ICIzLjAuMSIKKyAgICAgICAgICAgICJhd3Mtc2lnbjIiOiAiMC42LjAiLAorICAgICAgICAgICAg
ImF3czQiOiAiMS42LjAiLAorICAgICAgICAgICAgImNhc2VsZXNzIjogIjAuMTIuMCIsCisgICAg
ICAgICAgICAiY29tYmluZWQtc3RyZWFtIjogIjEuMC41IiwKKyAgICAgICAgICAgICJleHRlbmQi
OiAiMy4wLjEiLAorICAgICAgICAgICAgImZvcmV2ZXItYWdlbnQiOiAiMC42LjEiLAorICAgICAg
ICAgICAgImZvcm0tZGF0YSI6ICIyLjEuNCIsCisgICAgICAgICAgICAiaGFyLXZhbGlkYXRvciI6
ICI0LjIuMSIsCisgICAgICAgICAgICAiaGF3ayI6ICIzLjEuMyIsCisgICAgICAgICAgICAiaHR0
cC1zaWduYXR1cmUiOiAiMS4xLjEiLAorICAgICAgICAgICAgImlzLXR5cGVkYXJyYXkiOiAiMS4w
LjAiLAorICAgICAgICAgICAgImlzc3RyZWFtIjogIjAuMS4yIiwKKyAgICAgICAgICAgICJqc29u
LXN0cmluZ2lmeS1zYWZlIjogIjUuMC4xIiwKKyAgICAgICAgICAgICJtaW1lLXR5cGVzIjogIjIu
MS4xNSIsCisgICAgICAgICAgICAib2F1dGgtc2lnbiI6ICIwLjguMiIsCisgICAgICAgICAgICAi
cGVyZm9ybWFuY2Utbm93IjogIjAuMi4wIiwKKyAgICAgICAgICAgICJxcyI6ICI2LjQuMCIsCisg
ICAgICAgICAgICAic2FmZS1idWZmZXIiOiAiNS4wLjEiLAorICAgICAgICAgICAgInN0cmluZ3N0
cmVhbSI6ICIwLjAuNSIsCisgICAgICAgICAgICAidG91Z2gtY29va2llIjogIjIuMy4yIiwKKyAg
ICAgICAgICAgICJ0dW5uZWwtYWdlbnQiOiAiMC42LjAiLAorICAgICAgICAgICAgInV1aWQiOiAi
My4wLjEiCiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAibG9kYXNoLmVuZHN3aXRo
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMi4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgImxvZGFz
aC5maW5kIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjQuNi4wIiwKLSAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAg
ImxvZGFzaC5maW5kaW5kZXgiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNC42LjAiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9
LAotICAgICAgICAibG9kYXNoLmluZGV4b2YiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNC4w
LjUiLAorICAgICAgICAicmltcmFmIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNi4xIiwK
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAi
Z2xvYiI6ICI3LjEuMiIKKyAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJsb2Rhc2gu
aXNhcmd1bWVudHMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMy4xLjAiLAorICAgICAgICAi
c2FmZS1idWZmZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNS4wLjEiLAogICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgICB9LAotICAg
ICAgICAibG9kYXNoLmlzYXJyYXkiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMy4wLjQiLAor
ICAgICAgICAic2VtdmVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjUuMy4wIiwKICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgIH0sCi0gICAg
ICAgICJsb2Rhc2gua2V5cyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIzLjEuMiIsCisgICAg
ICAgICJzZXQtYmxvY2tpbmciOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAogICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAg
ICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAibG9kYXNoLl9nZXRuYXRpdmUiOiAiMy45LjEi
LAotICAgICAgICAgICAgImxvZGFzaC5pc2FyZ3VtZW50cyI6ICIzLjEuMCIsCi0gICAgICAgICAg
ICAibG9kYXNoLmlzYXJyYXkiOiAiMy4wLjQiCi0gICAgICAgICAgfQorICAgICAgICAgICJvcHRp
b25hbCI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgImxvZGFzaC5waWNrYnkiOiB7Ci0gICAg
ICAgICAgInZlcnNpb24iOiAiNC42LjAiLAorICAgICAgICAic2lnbmFsLWV4aXQiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMy4wLjIiLAogICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJv
cHRpb25hbCI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgImxvZGFzaC53b3JkcyI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICIzLjIuMCIsCisgICAgICAgICJzbnRwIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC45IiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKICAgICAgICAgICAi
cmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAibG9kYXNoLl9yb290IjogIjMuMC4xIgorICAgICAg
ICAgICAgImhvZWsiOiAiMi4xNi4zIgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAg
Imxvbmdlc3QiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAotICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAg
ICAibG9vc2UtZW52aWZ5IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKKyAgICAg
ICAgInNzaHBrIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMTMuMCIsCiAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRp
b25hbCI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImpzLXRv
a2VucyI6ICIxLjAuMyIKKyAgICAgICAgICAgICJhc24xIjogIjAuMi4zIiwKKyAgICAgICAgICAg
ICJhc3NlcnQtcGx1cyI6ICIxLjAuMCIsCisgICAgICAgICAgICAiYmNyeXB0LXBia2RmIjogIjEu
MC4xIiwKKyAgICAgICAgICAgICJkYXNoZGFzaCI6ICIxLjE0LjEiLAorICAgICAgICAgICAgImVj
Yy1qc2JuIjogIjAuMS4xIiwKKyAgICAgICAgICAgICJnZXRwYXNzIjogIjAuMS43IiwKKyAgICAg
ICAgICAgICJqb2RpZDI1NTE5IjogIjEuMC4yIiwKKyAgICAgICAgICAgICJqc2JuIjogIjAuMS4x
IiwKKyAgICAgICAgICAgICJ0d2VldG5hY2wiOiAiMC4xNC41IgogICAgICAgICAgIH0sCiAgICAg
ICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJqcy10b2tlbnMiOiB7Ci0gICAg
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6
IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAogICAgICAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICAgICAgICAgICB9
CiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAibG93ZXItY2FzZSI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAg
ICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJsb3dlci1jYXNlLWZpcnN0
IjogeworICAgICAgICAic3RyaW5nLXdpZHRoIjogewogICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC4yIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6IHRydWUs
CiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImxvd2VyLWNhc2UiOiAiMS4x
LjMiCisgICAgICAgICAgICAiY29kZS1wb2ludC1hdCI6ICIxLjEuMCIsCisgICAgICAgICAgICAi
aXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiAiMS4wLjAiLAorICAgICAgICAgICAgInN0cmlwLWFu
c2kiOiAiMy4wLjEiCiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAibHJ1LWNhY2hl
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMC4xIiwKKyAgICAgICAgInN0cmluZ19kZWNv
ZGVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjog
ewotICAgICAgICAgICAgInBzZXVkb21hcCI6ICIxLjAuMiIsCi0gICAgICAgICAgICAieWFsbGlz
dCI6ICIyLjAuMCIKKyAgICAgICAgICAgICJzYWZlLWJ1ZmZlciI6ICI1LjAuMSIKICAgICAgICAg
ICB9CiAgICAgICAgIH0sCi0gICAgICAgICJtYWNhZGRyZXNzIjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuMi44IiwKKyAgICAgICAgInN0cmluZ3N0cmVhbSI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIwLjAuNSIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjog
dHJ1ZQogICAgICAgICB9LAotICAgICAgICAibWFrZWVycm9yIjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMC4xMSIsCisgICAgICAgICJzdHJpcC1hbnNpIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjMuMC4xIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRl
diI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgInRtcGwiOiAi
MS4wLjQiCisgICAgICAgICAgICAiYW5zaS1yZWdleCI6ICIyLjEuMSIKICAgICAgICAgICB9CiAg
ICAgICAgIH0sCi0gICAgICAgICJtYXJrZWQiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4z
LjYiLAorICAgICAgICAic3RyaXAtanNvbi1jb21tZW50cyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIyLjAuMSIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQogICAgICAgICB9LAotICAgICAgICAibWFya2VkLXRlcm1pbmFsIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuNi4yIiwKKyAgICAgICAgInRhciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIyLjIuMSIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0
cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJjYXJkaW5hbCI6ICIx
LjAuMCIsCi0gICAgICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAotICAgICAgICAgICAgImNsaS10
YWJsZSI6ICIwLjMuMSIsCi0gICAgICAgICAgICAibG9kYXNoLmFzc2lnbiI6ICI0LjIuMCIsCi0g
ICAgICAgICAgICAibm9kZS1lbW9qaSI6ICIxLjQuMSIKKyAgICAgICAgICAgICJibG9jay1zdHJl
YW0iOiAiMC4wLjkiLAorICAgICAgICAgICAgImZzdHJlYW0iOiAiMS4wLjExIiwKKyAgICAgICAg
ICAgICJpbmhlcml0cyI6ICIyLjAuMyIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAg
ICJtYXRoLWV4cHJlc3Npb24tZXZhbHVhdG9yIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
Mi4xNCIsCisgICAgICAgICJ0YXItcGFjayI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjQu
MCIsCiAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAogICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgImxvZGFzaC5pbmRleG9mIjogIjQuMC41IgorICAgICAgICAgICAgImRlYnVnIjog
IjIuNi44IiwKKyAgICAgICAgICAgICJmc3RyZWFtIjogIjEuMC4xMSIsCisgICAgICAgICAgICAi
ZnN0cmVhbS1pZ25vcmUiOiAiMS4wLjUiLAorICAgICAgICAgICAgIm9uY2UiOiAiMS40LjAiLAor
ICAgICAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6ICIyLjIuOSIsCisgICAgICAgICAgICAicmlt
cmFmIjogIjIuNi4xIiwKKyAgICAgICAgICAgICJ0YXIiOiAiMi4yLjEiLAorICAgICAgICAgICAg
InVpZC1udW1iZXIiOiAiMC4wLjYiCiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAi
bWVkaWEtdHlwZXIiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4zLjAiLAorICAgICAgICAi
dG91Z2gtY29va2llIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMy4yIiwKICAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJwdW55Y29kZSI6ICIxLjQuMSIKKyAgICAgICAgICB9CiAgICAg
ICAgIH0sCi0gICAgICAgICJtZW1vcnktZnMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4z
LjAiLAorICAgICAgICAidHVubmVsLWFnZW50IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
Ni4wIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0g
ICAgICAgICAgICAiZXJybm8iOiAiMC4xLjQiLAotICAgICAgICAgICAgInJlYWRhYmxlLXN0cmVh
bSI6ICIyLjAuNiIKKyAgICAgICAgICAgICJzYWZlLWJ1ZmZlciI6ICI1LjAuMSIKICAgICAgICAg
ICB9CiAgICAgICAgIH0sCi0gICAgICAgICJtZXJnZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICIxLjIuMCIsCisgICAgICAgICJ0d2VldG5hY2wiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MC4xNC41IiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRy
dWUKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCiAg
ICAgICAgIH0sCi0gICAgICAgICJtZXJnZS1kZXNjcmlwdG9ycyI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIxLjAuMSIsCisgICAgICAgICJ1aWQtbnVtYmVyIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuMC42IiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJtZXRob2RzIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMS4yIiwKKyAgICAgICAgInV0aWwtZGVwcmVjYXRlIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMC4yIiwKICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRl
diI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgIm1pY3JvbWF0Y2giOiB7Ci0gICAgICAgICAg
InZlcnNpb24iOiAiMi4zLjExIiwKKyAgICAgICAgInV1aWQiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMy4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJ2ZXJyb3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4zLjYiLAogICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJhcnItZGlm
ZiI6ICIyLjAuMCIsCi0gICAgICAgICAgICAiYXJyYXktdW5pcXVlIjogIjAuMi4xIiwKLSAgICAg
ICAgICAgICJicmFjZXMiOiAiMS44LjUiLAotICAgICAgICAgICAgImV4cGFuZC1icmFja2V0cyI6
ICIwLjEuNSIsCi0gICAgICAgICAgICAiZXh0Z2xvYiI6ICIwLjMuMiIsCi0gICAgICAgICAgICAi
ZmlsZW5hbWUtcmVnZXgiOiAiMi4wLjAiLAotICAgICAgICAgICAgImlzLWV4dGdsb2IiOiAiMS4w
LjAiLAotICAgICAgICAgICAgImlzLWdsb2IiOiAiMi4wLjEiLAotICAgICAgICAgICAgImtpbmQt
b2YiOiAiMy4wLjQiLAotICAgICAgICAgICAgIm5vcm1hbGl6ZS1wYXRoIjogIjIuMC4xIiwKLSAg
ICAgICAgICAgICJvYmplY3Qub21pdCI6ICIyLjAuMCIsCi0gICAgICAgICAgICAicGFyc2UtZ2xv
YiI6ICIzLjAuNCIsCi0gICAgICAgICAgICAicmVnZXgtY2FjaGUiOiAiMC40LjMiCisgICAgICAg
ICAgICAiZXh0c3ByaW50ZiI6ICIxLjAuMiIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAg
ICAgICJtaW1lIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4xMSIsCisgICAgICAgICJ3
aWRlLWFsaWduIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJzdHJpbmctd2lkdGgiOiAiMS4wLjIiCisgICAgICAgICAgfQogICAg
ICAgICB9LAotICAgICAgICAibWltZS1kYiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjI0
LjAiLAorICAgICAgICAid3JhcHB5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwK
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCiAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfQorICAgICAgfQorICAgIH0sCisgICAgImZ1bmN0aW9uLWJpbmQiOiB7CisgICAgICAidmVy
c2lvbiI6ICIxLjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvZnVuY3Rpb24tYmluZC8tL2Z1bmN0aW9uLWJpbmQtMS4xLjEudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhNTEyLXlJb3ZBek1YNDlzRjhZbDU4ZlNDV0o1c3ZTTHVhaWJQeFhRSkZM
bUJPYlR1Q3IwTWYxS2lQb3BHTTlOaUZqaVlCQ2JmYWEyRmg2YnJlUTZBTlZUSTBBPT0iLAorICAg
ICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJmdW5jdGlvbi5wcm90b3R5cGUubmFtZSI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9mdW5jdGlvbi5wcm90b3R5cGUubmFtZS8tL2Z1bmN0aW9uLnByb3Rv
dHlwZS5uYW1lLTEuMC4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi01RWJseFpV
ZGlvWGkySmlNWjlGVWJ3WWo0MGVROU1GSHl6RkxCU1BkbFJsM1NPOGw3U0xXdUFuUS9hdC8xV2k0
aGpKd01FL0M1V3BGMlpmQWM4bkdOdz09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAiZGVmaW5lLXByb3BlcnRpZXMiOiAiMS4xLjIiLAorICAgICAg
ICAiZnVuY3Rpb24tYmluZCI6ICIxLjEuMSIsCisgICAgICAgICJpcy1jYWxsYWJsZSI6ICIxLjEu
MyIKKyAgICAgIH0KKyAgICB9LAorICAgICJmdW5jdGlvbmFsLXJlZC1ibGFjay10cmVlIjogewor
ICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2Z1bmN0aW9uYWwtcmVkLWJsYWNrLXRyZWUvLS9mdW5jdGlvbmFsLXJl
ZC1ibGFjay10cmVlLTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtR3dxenZW
VTdLZzFqbWRLY0RqNmdzbElIZ3ljPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAg
ImdldC1jYWxsZXItZmlsZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9nZXQtY2FsbGVyLWZpbGUvLS9n
ZXQtY2FsbGVyLWZpbGUtMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS05d0xt
TVNmbjRqSEJZS2dNRlZTc3R3MVFSK1U9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAg
ICAiZ2V0LXN0ZGluIjogeworICAgICAgInZlcnNpb24iOiAiNC4wLjEiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2dldC1zdGRpbi8tL2dldC1zdGRpbi00
LjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXVXakdzS0JEaERKSkF1aS9HbDN6
Slhta1VQND0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJnZXQtc3RyZWFtIjog
eworICAgICAgInZlcnNpb24iOiAiMy4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2dldC1zdHJlYW0vLS9nZXQtc3RyZWFtLTMuMC4wLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtanBROUUxamNOMVZRVk95K0x0c0ZxaGRPM2hRPSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImdldHBhc3MiOiB7CisgICAgICAidmVyc2lv
biI6ICIwLjEuNyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvZ2V0cGFzcy8tL2dldHBhc3MtMC4xLjcudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1YditPUG1oTlZwcmt5eXNTZ21CT2k2WWhTZm89IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAiYXNzZXJ0LXBsdXMiOiAiMS4wLjAiCisgICAgICB9
LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImFzc2VydC1wbHVzIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXNzZXJ0LXBsdXMvLS9hc3NlcnQtcGx1cy0xLjAuMC50Z3oi
LAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS04UzRQUEYxM3NMSE4yUlJwUXVUcGJCNU4x
U1U9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwK
KyAgICAiZ2xvYiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjcuMS4yIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9nbG9iLy0vZ2xvYi03LjEuMi50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGE1MTItTUpUVWcxa2p1TGVRQ0orY2NFNFZwYTZrS1ZYa1BZ
SjJtT0NReVV1S0xjTFFzZHJNQ3BCUFVpOHFWRTYrWXVhSmtvemVBOU51c1RBdzNoTHI4WGU1RVE9
PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImZz
LnJlYWxwYXRoIjogIjEuMC4wIiwKKyAgICAgICAgImluZmxpZ2h0IjogIjEuMC42IiwKKyAgICAg
ICAgImluaGVyaXRzIjogIjIuMC4zIiwKKyAgICAgICAgIm1pbmltYXRjaCI6ICIzLjAuNCIsCisg
ICAgICAgICJvbmNlIjogIjEuNC4wIiwKKyAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUiOiAiMS4w
LjEiCisgICAgICB9CisgICAgfSwKKyAgICAiZ2xvYi1iYXNlIjogeworICAgICAgInZlcnNpb24i
OiAiMC4zLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2dsb2ItYmFzZS8tL2dsb2ItYmFzZS0wLjMuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLTI3Rms5aUliSEFzY3o0S3VveWkwbDk4T284UT0iLAorICAgICAgImRldiI6IHRydWUsCisg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJnbG9iLXBhcmVudCI6ICIyLjAuMCIsCisgICAg
ICAgICJpcy1nbG9iIjogIjIuMC4xIgorICAgICAgfQorICAgIH0sCisgICAgImdsb2ItcGFyZW50
IjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2dsb2ItcGFyZW50Ly0vZ2xvYi1wYXJlbnQtMi4wLjAudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1nVGc5Y3RzRlQ4elBVemJhcVFMeGd2YnR1eWc9
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaXMt
Z2xvYiI6ICIyLjAuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJnbG9iYWwtbW9kdWxlcyI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9nbG9iYWwtbW9kdWxlcy8tL2dsb2JhbC1tb2R1bGVzLTEuMC4wLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1zS3pwRWtmMTFHcE9GdXcwWnpqem10NEI0
VVp3ak9jRzc1N1BQdnJmaHhjTEZicTB3cHNncE9xeHB4dHhGaUNHNER0RzkzTTZYUlZiRjJvR2Rl
djdiZz09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAiZ2xvYmFsLXByZWZpeCI6ICIxLjAuMiIsCisgICAgICAgICJpcy13aW5kb3dzIjogIjEuMC4x
IiwKKyAgICAgICAgInJlc29sdmUtZGlyIjogIjEuMC4xIgorICAgICAgfQorICAgIH0sCisgICAg
Imdsb2JhbC1wcmVmaXgiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZ2xvYmFsLXByZWZpeC8tL2dsb2Jh
bC1wcmVmaXgtMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0yL2REeHNGSmts
azhaVlZveTJidE1zQVNMcjQ9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAiZXhwYW5kLXRpbGRlIjogIjIuMC4yIiwKKyAgICAgICAgImhvbWVkaXIt
cG9seWZpbGwiOiAiMS4wLjEiLAorICAgICAgICAiaW5pIjogIjEuMy40IiwKKyAgICAgICAgImlz
LXdpbmRvd3MiOiAiMS4wLjEiLAorICAgICAgICAid2hpY2giOiAiMS4zLjAiCisgICAgICB9Cisg
ICAgfSwKKyAgICAiZ2xvYmFscyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjkuMTguMCIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZ2xvYmFscy8tL2dsb2Jh
bHMtOS4xOC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1TMG5HM0NMRVFpWS9J
THhxdHp0VFdILzNpUlJkeUJMdzZLTUR4bktNY2hydGJqMk9GbWVoVmgwV1VDZlczRFVySWd4L3FG
ckpQSUNycTRaNHNUUjlVUT09IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZ2xv
YmJ5IjogeworICAgICAgInZlcnNpb24iOiAiNS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2dsb2JieS8tL2dsb2JieS01LjAuMC50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLTY5aEdaOG9OdXpNTG1iejhhT3JDdkZRM0RnMD0iLAorICAg
ICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJhcnJheS11bmlv
biI6ICIxLjAuMiIsCisgICAgICAgICJhcnJpZnkiOiAiMS4wLjEiLAorICAgICAgICAiZ2xvYiI6
ICI3LjEuMiIsCisgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4xIiwKKyAgICAgICAgInBp
ZnkiOiAiMi4zLjAiLAorICAgICAgICAicGlua2llLXByb21pc2UiOiAiMi4wLjEiCisgICAgICB9
CisgICAgfSwKKyAgICAiZ290IjogeworICAgICAgInZlcnNpb24iOiAiNS43LjEiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2dvdC8tL2dvdC01LjcuMS50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVg0RmpXbUhrcGxpZkdBVnA2azQ0Rm9DbEh6
VT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJj
cmVhdGUtZXJyb3ItY2xhc3MiOiAiMy4wLjIiLAorICAgICAgICAiZHVwbGV4ZXIyIjogIjAuMS40
IiwKKyAgICAgICAgImlzLXJlZGlyZWN0IjogIjEuMC4wIiwKKyAgICAgICAgImlzLXJldHJ5LWFs
bG93ZWQiOiAiMS4xLjAiLAorICAgICAgICAiaXMtc3RyZWFtIjogIjEuMS4wIiwKKyAgICAgICAg
Imxvd2VyY2FzZS1rZXlzIjogIjEuMC4wIiwKKyAgICAgICAgIm5vZGUtc3RhdHVzLWNvZGVzIjog
IjEuMC4wIiwKKyAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjEiLAorICAgICAgICAicGFy
c2UtanNvbiI6ICIyLjIuMCIsCisgICAgICAgICJwaW5raWUtcHJvbWlzZSI6ICIyLjAuMSIsCisg
ICAgICAgICJyZWFkLWFsbC1zdHJlYW0iOiAiMy4xLjAiLAorICAgICAgICAicmVhZGFibGUtc3Ry
ZWFtIjogIjIuMy4zIiwKKyAgICAgICAgInRpbWVkLW91dCI6ICIzLjEuMyIsCisgICAgICAgICJ1
bnppcC1yZXNwb25zZSI6ICIxLjAuMiIsCisgICAgICAgICJ1cmwtcGFyc2UtbGF4IjogIjEuMC4w
IgorICAgICAgfQorICAgIH0sCisgICAgImdyYWNlZnVsLWZzIjogeworICAgICAgInZlcnNpb24i
OiAiNC4xLjExIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9ncmFjZWZ1bC1mcy8tL2dyYWNlZnVsLWZzLTQuMS4xMS50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLURvdmY1TkhkdUlWTlpPQk9wOEFPS2dKdVZsZz0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJncm93bHkiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjMuMCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZ3Jvd2x5Ly0vZ3Jv
d2x5LTEuMy4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtOFFkSXkrZHErV1MzeVd5
VHhyekNpdkVnd0lFPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImd6aXAtc2l6
ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9nemlwLXNpemUvLS9nemlwLXNpemUtMy4wLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1WR0dJNmIzRE4vWnpkeStCWmdSa3M0bmM1U0E9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZHVwbGV4
ZXIiOiAiMC4xLjEiCisgICAgICB9CisgICAgfSwKKyAgICAiaGFuZGxlLXRoaW5nIjogeworICAg
ICAgInZlcnNpb24iOiAiMS4yLjUiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2hhbmRsZS10aGluZy8tL2hhbmRsZS10aGluZy0xLjIuNS50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLS9YcXRjbXZ4cGYwVzM4S2JMM3BtQWRKeE9jUT0iLAorICAg
ICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJoYW5kbGViYXJzIjogeworICAgICAgInZlcnNp
b24iOiAiNC4wLjEwIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9oYW5kbGViYXJzLy0vaGFuZGxlYmFycy00LjAuMTAudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1QVERIR0xDYVBaYnlQcVRNSDBBOFRUdXAvMDg9IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYXN5bmMiOiAiMS41LjIiLAorICAg
ICAgICAib3B0aW1pc3QiOiAiMC42LjEiLAorICAgICAgICAic291cmNlLW1hcCI6ICIwLjQuNCIs
CisgICAgICAgICJ1Z2xpZnktanMiOiAiMi44LjI5IgorICAgICAgfSwKKyAgICAgICJkZXBlbmRl
bmNpZXMiOiB7CisgICAgICAgICJhc3luYyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjUu
MiIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fz
eW5jLy0vYXN5bmMtMS41LjIudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtN0dw
aHJsWklEQXc4c2tISlZoamlDSkw1WnlvPSIsCisgICAgICAgICAgImRldiI6IHRydWUKICAgICAg
ICAgfSwKLSAgICAgICAgIm1pbWUtdHlwZXMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4x
LjEyIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUs
Ci0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgIm1pbWUtZGIiOiAiMS4yNC4w
IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgIm1pbmltYXRjaCI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIzLjAuMyIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAic291cmNlLW1hcCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuNCIsCisgICAg
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NvdXJjZS1tYXAv
LS9zb3VyY2UtbWFwLTAuNC40LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLTY2
VDEycHdOeVpuZWFBTXRpMDkyRnpaU0Eycz0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJicmFjZS1leHBhbnNpb24iOiAiMS4x
LjYiCisgICAgICAgICAgICAiYW1kZWZpbmUiOiAiMS4wLjEiCiAgICAgICAgICAgfQogICAgICAg
ICB9LAotICAgICAgICAibWluaW1pc3QiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4yLjAi
LAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAg
ICAgICB9LAotICAgICAgICAibWtkaXJwIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNS4x
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJ1Z2xpZnktanMiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMi44LjI5IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdWdsaWZ5LWpzLy0vdWdsaWZ5LWpzLTIuOC4yOS50Z3oi
LAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1LY1Z6TVVnRmU3VGg5MTN6VzNxY3R5NXFX
ZDA9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVl
LAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJtaW5pbWlzdCI6ICIwLjAu
OCIKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS43IiwKKyAgICAgICAgICAgICJ1Z2xp
ZnktdG8tYnJvd3NlcmlmeSI6ICIxLjAuMiIsCisgICAgICAgICAgICAieWFyZ3MiOiAiMy4xMC4w
IgogICAgICAgICAgIH0sCiAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAg
ICJtaW5pbWlzdCI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjgiLAotICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgICAgICAic291cmNlLW1hcCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC41Ljci
LAorICAgICAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
c291cmNlLW1hcC8tL3NvdXJjZS1tYXAtMC41LjcudGd6IiwKKyAgICAgICAgICAgICAgImludGVn
cml0eSI6ICJzaGExLWlnT2RMUkFoMGkwZW9VeUEyT3BHaTZMdlA4dz0iLAorICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgICAgICAg
ICAgfQogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgIm1zIjogewotICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuNy4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgIm11bHRpbWF0Y2giOiB7Ci0gICAg
ICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAg
ICAiYXJyYXktZGlmZmVyIjogIjEuMC4wIiwKLSAgICAgICAgICAgICJhcnJheS11bmlvbiI6ICIx
LjAuMiIsCi0gICAgICAgICAgICAiYXJyaWZ5IjogIjEuMC4xIiwKLSAgICAgICAgICAgICJtaW5p
bWF0Y2giOiAiMy4wLjMiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAibXV0ZS1z
dHJlYW0iOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4wLjUiLAotICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAi
bmFuIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNC4wIiwKLSAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9wdGlvbmFsIjog
dHJ1ZQotICAgICAgICB9LAotICAgICAgICAibmF0dXJhbC1jb21wYXJlIjogewotICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuNC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgIm5jbmFtZSI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAieWFyZ3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4xMC4wIiwKKyAgICAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcveWFyZ3MvLS95YXJncy0zLjEw
LjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtOSs1NzJGZmRmQjB0T01EblR2
dldnZEZESDlFPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAieG1sLWNoYXIt
Y2xhc3NlcyI6ICIxLjAuMCIKKyAgICAgICAgICAgICJjYW1lbGNhc2UiOiAiMS4yLjEiLAorICAg
ICAgICAgICAgImNsaXVpIjogIjIuMS4wIiwKKyAgICAgICAgICAgICJkZWNhbWVsaXplIjogIjEu
Mi4wIiwKKyAgICAgICAgICAgICJ3aW5kb3ctc2l6ZSI6ICIwLjEuMCIKICAgICAgICAgICB9Ci0g
ICAgICAgIH0sCi0gICAgICAgICJuZWdvdGlhdG9yIjogewotICAgICAgICAgICJ2ZXJzaW9uIjog
IjAuNi4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRy
dWUKLSAgICAgICAgfSwKLSAgICAgICAgIm5vLWNhc2UiOiB7Ci0gICAgICAgICAgInZlcnNpb24i
OiAiMi4zLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgfQorICAgICAg
fQorICAgIH0sCisgICAgImhhci1zY2hlbWEiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuNSIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaGFyLXNjaGVt
YS8tL2hhci1zY2hlbWEtMS4wLjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0wbU1U
WDBNd2ZBTEdBcS9JL3BXWERBRlJOcDQ9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAg
ICAiaGFyLXZhbGlkYXRvciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMi4xIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oYXItdmFsaWRhdG9yLy0vaGFy
LXZhbGlkYXRvci00LjIuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLU0wZ2REeHUv
OWdEZElEMTFnU3BxWDdvQUxpbz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICJhanYiOiAiNC4xMS44IiwKKyAgICAgICAgImhhci1zY2hlbWEiOiAi
MS4wLjUiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImFqdiI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjExLjgiLAorICAgICAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hanYvLS9hanYtNC4xMS44LnRneiIsCisgICAg
ICAgICAgImludGVncml0eSI6ICJzaGExLWd2K3dLeW5tWXE1VHZjSUs4VmxIY0djNXhUWT0iLAog
ICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICJsb3dlci1jYXNlIjogIjEuMS4zIgorICAgICAgICAgICAgImNvIjogIjQuNi4wIiwKKyAg
ICAgICAgICAgICJqc29uLXN0YWJsZS1zdHJpbmdpZnkiOiAiMS4wLjEiCiAgICAgICAgICAgfQot
ICAgICAgICB9LAotICAgICAgICAibm9kZS1lbW9qaSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICIxLjQuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICB9CisgICAgICB9
CisgICAgfSwKKyAgICAiaGFzIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hhcy8tL2hhcy0xLjAuMS50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWhHRnpQMU9MQ0RmSk5oNDVxYXVlbHdUY0x5
Zz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJm
dW5jdGlvbi1iaW5kIjogIjEuMS4xIgorICAgICAgfQorICAgIH0sCisgICAgImhhcy1hbnNpIjog
eworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2hhcy1hbnNpLy0vaGFzLWFuc2ktMi4wLjAudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1OUFVFbk9IczN5c0dTYTgrOGs1RjdUVkJiWkU9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYW5zaS1yZWdleCI6
ICIyLjEuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJoYXMtZmxhZyI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjIuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9oYXMtZmxhZy8tL2hhcy1mbGFnLTIuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtNkNCNjhjeDdNTlJHekhDM05MWG92aGo0alZFPSIsCisgICAgICAiZGV2IjogdHJ1ZQor
ICAgIH0sCisgICAgImhhc2gtYmFzZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4yIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oYXNoLWJhc2UvLS9o
YXNoLWJhc2UtMi4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1adW9kaFcyMDZL
VkhESzMyL09JNjVTUk84dUU9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiCisgICAgICB9CisgICAgfSwKKyAgICAi
aGFzaC5qcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4zIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oYXNoLmpzLy0vaGFzaC5qcy0xLjEuMy50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItL1VFVHlQMFcyMlFJTHFTKzZIb3dldndoRUZK
M01CSm53VGY3NVFvYjlXejl0MERQdWlzTDhrVzhZWk1LNjJkSEFLRTFjMXArZ1kxVHRPTFkrVVNF
SEE9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ImluaGVyaXRzIjogIjIuMC4zIiwKKyAgICAgICAgIm1pbmltYWxpc3RpYy1hc3NlcnQiOiAiMS4w
LjAiCisgICAgICB9CisgICAgfSwKKyAgICAiaGF3ayI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMu
MS4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oYXdr
Ly0vaGF3ay0zLjEuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUI0UkV2WHdXUUxE
K1ZBMHNtM1BWbG5qbzRjUT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJib29tIjogIjIuMTAuMSIsCisgICAgICAgICJjcnlwdGlsZXMiOiAiMi4w
LjUiLAorICAgICAgICAiaG9layI6ICIyLjE2LjMiLAorICAgICAgICAic250cCI6ICIxLjAuOSIK
KyAgICAgIH0KKyAgICB9LAorICAgICJoZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oZS8tL2hlLTEu
MS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtazBFUDBoc0FselVWSDRob3d2Sng4
MEorSS8wPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImhtYWMtZHJiZyI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9obWFjLWRyYmcvLS9obWFjLWRyYmctMS4wLjEudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS0wblJYQVFKYWJIZGFiRlJYaysxUUw4REdTYUU9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaGFzaC5qcyI6ICIx
LjEuMyIsCisgICAgICAgICJtaW5pbWFsaXN0aWMtYXNzZXJ0IjogIjEuMC4wIiwKKyAgICAgICAg
Im1pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHMiOiAiMS4wLjEiCisgICAgICB9CisgICAgfSwKKyAg
ICAiaG9layI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMTYuMyIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaG9lay8tL2hvZWstMi4xNi4zLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtSUx0MEE5UE9vNWpwSGNSeENvL3h1Q2RLSmUwPSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImhvaXN0LW5vbi1yZWFjdC1zdGF0aWNzIjog
eworICAgICAgInZlcnNpb24iOiAiMi4zLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzLy0vaG9pc3Qtbm9uLXJl
YWN0LXN0YXRpY3MtMi4zLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ORDI0VEdB
WXhsQjNpSmdrQVRXaFFnN2lMT0E9IgorICAgIH0sCisgICAgImhvbWUtb3ItdG1wIjogeworICAg
ICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2hvbWUtb3ItdG1wLy0vaG9tZS1vci10bXAtMi4wLjAudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS00MncvTFN5dWZYUnFoWDQ0MFkxZk1xZUlMYmc9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAib3MtaG9tZWRpciI6
ICIxLjAuMiIsCisgICAgICAgICJvcy10bXBkaXIiOiAiMS4wLjIiCisgICAgICB9CisgICAgfSwK
KyAgICAiaG9tZWRpci1wb2x5ZmlsbCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ob21lZGlyLXBvbHlm
aWxsLy0vaG9tZWRpci1wb2x5ZmlsbC0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLVRDdThpbldKbVA3cjllMW9XQTkyMUdkb3RMdz0iLAorICAgICAgImRldiI6IHRydWUsCisg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJwYXJzZS1wYXNzd2QiOiAiMS4wLjAiCisgICAg
ICB9CisgICAgfSwKKyAgICAiaG9zdGVkLWdpdC1pbmZvIjogeworICAgICAgInZlcnNpb24iOiAi
Mi41LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hv
c3RlZC1naXQtaW5mby8tL2hvc3RlZC1naXQtaW5mby0yLjUuMC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGE1MTItcE5nYlVSU3VhYjkwS2JUcXZSUHNzZWFUeE9KQ1pCRDBhN3QraGFTTjMz
cGlQOWNDTTRsMENxZHpBaWYyaFVxbTcxNlVvdktCMlJPbWlhYkdBS1ZYeWc9PSIsCisgICAgICAi
ZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImhwYWNrLmpzIjogeworICAgICAgInZlcnNpb24iOiAi
Mi4xLjYiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hw
YWNrLmpzLy0vaHBhY2suanMtMi4xLjYudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1o
M2RNQ1VubEUvUXVoRmRiUEVWb0g2M2lvTEk9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiLAorICAgICAgICAib2J1
ZiI6ICIxLjEuMSIsCisgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiAiMi4zLjMiLAorICAgICAg
ICAid2J1ZiI6ICIxLjcuMiIKKyAgICAgIH0KKyAgICB9LAorICAgICJodG1sLWNvbW1lbnQtcmVn
ZXgiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaHRtbC1jb21tZW50LXJlZ2V4Ly0vaHRtbC1jb21tZW50
LXJlZ2V4LTEuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWm91VGQyNnE1VjY5
NlBPdFJrc3dla2xqWWw0PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImh0bWwt
ZW5jb2Rpbmctc25pZmZlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9odG1sLWVuY29kaW5nLXNuaWZm
ZXIvLS9odG1sLWVuY29kaW5nLXNuaWZmZXItMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1lYjk2ZUY2a2xmNW1GbDV6UVZQelkvOVVOOW89IiwKKyAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAid2hhdHdnLWVuY29kaW5nIjogIjEuMC4x
IgorICAgICAgfQorICAgIH0sCisgICAgImh0bWwtZW50aXRpZXMiOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjIuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvaHRtbC1lbnRpdGllcy8tL2h0bWwtZW50aXRpZXMtMS4yLjEudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1EZktUVWZCeUVXTlJYZnVlVlVQbDl1N1ZGaTg9IiwKKyAgICAgICJkZXYi
OiB0cnVlCisgICAgfSwKKyAgICAiaHRtbC1taW5pZmllciI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjMuNS4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9o
dG1sLW1pbmlmaWVyLy0vaHRtbC1taW5pZmllci0zLjUuMy50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGE1MTItaUtSelFRRHVUQ3NxMFVsdGJpL21mSkpuUjBEM0FkWktUcTk2NkdzcDkyeGtt
QVBDVjRYaTA4cWhKMERsM1pBV2VtU2dKN3FaSytVc1pjMGdGcUs2d2c9PSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImNhbWVsLWNhc2UiOiAiMy4w
LjAiLAorICAgICAgICAiY2xlYW4tY3NzIjogIjQuMS44IiwKKyAgICAgICAgImNvbW1hbmRlciI6
ICIyLjExLjAiLAorICAgICAgICAiaGUiOiAiMS4xLjEiLAorICAgICAgICAibmNuYW1lIjogIjEu
MC4wIiwKKyAgICAgICAgInBhcmFtLWNhc2UiOiAiMi4xLjEiLAorICAgICAgICAicmVsYXRldXJs
IjogIjAuMi43IiwKKyAgICAgICAgInVnbGlmeS1qcyI6ICIzLjAuMjgiCisgICAgICB9CisgICAg
fSwKKyAgICAiaHRtbC13ZWJwYWNrLXBsdWdpbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMjku
MCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaHRtbC13
ZWJwYWNrLXBsdWdpbi8tL2h0bWwtd2VicGFjay1wbHVnaW4tMi4yOS4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtNllmMElZVTlPMms0eU1USUZ4aEM1ZjBYcnlNPSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJsdWViaXJkIjogIjMu
NS4wIiwKKyAgICAgICAgImh0bWwtbWluaWZpZXIiOiAiMy41LjMiLAorICAgICAgICAibG9hZGVy
LXV0aWxzIjogIjAuMi4xNyIsCisgICAgICAgICJsb2Rhc2giOiAiNC4xNy40IiwKKyAgICAgICAg
InByZXR0eS1lcnJvciI6ICIyLjEuMSIsCisgICAgICAgICJ0b3Bvc29ydCI6ICIxLjAuMyIKKyAg
ICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAibG9hZGVyLXV0aWxzIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4xNyIsCisgICAgICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvYWRlci11dGlscy8tL2xvYWRlci11dGlscy0w
LjIuMTcudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtK0c1amROUXlCYWJteGc2
Umx2RjhBcG0vczBnPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVp
cmVzIjogewotICAgICAgICAgICAgInN0cmluZy5wcm90b3R5cGUuY29kZXBvaW50YXQiOiAiMC4y
LjAiCisgICAgICAgICAgICAiYmlnLmpzIjogIjMuMS4zIiwKKyAgICAgICAgICAgICJlbW9qaXMt
bGlzdCI6ICIyLjEuMCIsCisgICAgICAgICAgICAianNvbjUiOiAiMC41LjEiLAorICAgICAgICAg
ICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjEiCiAgICAgICAgICAgfQotICAgICAgICB9LAotICAg
ICAgICAibm9kZS1pbnQ2NCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuMCIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAi
aHRtbHBhcnNlcjIiOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjkuMiIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaHRtbHBhcnNlcjIvLS9odG1scGFyc2Vy
Mi0zLjkuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUc5K0hyTW9QUDU1VCtrL002
dzlMVExzQXN6Zz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJkb21lbGVtZW50dHlwZSI6ICIxLjMuMCIsCisgICAgICAgICJkb21oYW5kbGVyIjog
IjIuNC4xIiwKKyAgICAgICAgImRvbXV0aWxzIjogIjEuNS4xIiwKKyAgICAgICAgImVudGl0aWVz
IjogIjEuMS4xIiwKKyAgICAgICAgImluaGVyaXRzIjogIjIuMC4zIiwKKyAgICAgICAgInJlYWRh
YmxlLXN0cmVhbSI6ICIyLjMuMyIKKyAgICAgIH0KKyAgICB9LAorICAgICJodHRwLWRlY2VpdmVy
IjogeworICAgICAgInZlcnNpb24iOiAiMS4yLjciLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2h0dHAtZGVjZWl2ZXIvLS9odHRwLWRlY2VpdmVyLTEuMi43
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtK25Gb2xFcTVwUm5UTjhzTDdIS0UzRDV5
UFljPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImh0dHAtZXJyb3JzIjogewor
ICAgICAgInZlcnNpb24iOiAiMS42LjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2h0dHAtZXJyb3JzLy0vaHR0cC1lcnJvcnMtMS42LjIudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1DZ0FzeUZjSEdTcCtlVWJPN2NFUlZmWU94elk9IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZGVwZCI6ICIx
LjEuMSIsCisgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICJzZXRwcm90b3R5
cGVvZiI6ICIxLjAuMyIsCisgICAgICAgICJzdGF0dXNlcyI6ICIxLjMuMSIKKyAgICAgIH0KKyAg
ICB9LAorICAgICJodHRwLXByb3h5IjogeworICAgICAgInZlcnNpb24iOiAiMS4xNi4yIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9odHRwLXByb3h5Ly0v
aHR0cC1wcm94eS0xLjE2LjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1CdC95a3BV
cjlrMitoSEg2bmZjd1p0VHpkMEk9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAiZXZlbnRlbWl0dGVyMyI6ICIxLjIuMCIsCisgICAgICAgICJyZXF1
aXJlcy1wb3J0IjogIjEuMC4wIgorICAgICAgfQorICAgIH0sCisgICAgImh0dHAtcHJveHktbWlk
ZGxld2FyZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMTcuNCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaHR0cC1wcm94eS1taWRkbGV3YXJlLy0vaHR0
cC1wcm94eS1taWRkbGV3YXJlLTAuMTcuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LVpDNklTSVVkWnZDZFR4SkpFb1J0dXV0QnVETT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICJodHRwLXByb3h5IjogIjEuMTYuMiIsCisgICAgICAg
ICJpcy1nbG9iIjogIjMuMS4wIiwKKyAgICAgICAgImxvZGFzaCI6ICI0LjE3LjQiLAorICAgICAg
ICAibWljcm9tYXRjaCI6ICIyLjMuMTEiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6
IHsKKyAgICAgICAgImlzLWV4dGdsb2IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xLjEi
LAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1l
eHRnbG9iLy0vaXMtZXh0Z2xvYi0yLjEuMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1xSXdDVTFlUjhDN1RmSGFodWVxWGM4Z3orTUk9IiwKICAgICAgICAgICAiZGV2IjogdHJ1
ZQogICAgICAgICB9LAotICAgICAgICAibm9kZS1saWJzLWJyb3dzZXIiOiB7Ci0gICAgICAgICAg
InZlcnNpb24iOiAiMC42LjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiYXNz
ZXJ0IjogIjEuNC4xIiwKLSAgICAgICAgICAgICJicm93c2VyaWZ5LXpsaWIiOiAiMC4xLjQiLAot
ICAgICAgICAgICAgImJ1ZmZlciI6ICI0LjkuMSIsCi0gICAgICAgICAgICAiY29uc29sZS1icm93
c2VyaWZ5IjogIjEuMS4wIiwKLSAgICAgICAgICAgICJjb25zdGFudHMtYnJvd3NlcmlmeSI6ICIw
LjAuMSIsCi0gICAgICAgICAgICAiY3J5cHRvLWJyb3dzZXJpZnkiOiAiMy4yLjgiLAotICAgICAg
ICAgICAgImRvbWFpbi1icm93c2VyIjogIjEuMS43IiwKLSAgICAgICAgICAgICJldmVudHMiOiAi
MS4xLjEiLAotICAgICAgICAgICAgImh0dHAtYnJvd3NlcmlmeSI6ICIxLjcuMCIsCi0gICAgICAg
ICAgICAiaHR0cHMtYnJvd3NlcmlmeSI6ICIwLjAuMCIsCi0gICAgICAgICAgICAib3MtYnJvd3Nl
cmlmeSI6ICIwLjEuMiIsCi0gICAgICAgICAgICAicGF0aC1icm93c2VyaWZ5IjogIjAuMC4wIiwK
LSAgICAgICAgICAgICJwcm9jZXNzIjogIjAuMTEuOSIsCi0gICAgICAgICAgICAicHVueWNvZGUi
OiAiMS40LjEiLAotICAgICAgICAgICAgInF1ZXJ5c3RyaW5nLWVzMyI6ICIwLjIuMSIsCi0gICAg
ICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogIjEuMS4xNCIsCi0gICAgICAgICAgICAic3RyZWFt
LWJyb3dzZXJpZnkiOiAiMS4wLjAiLAotICAgICAgICAgICAgInN0cmluZ19kZWNvZGVyIjogIjAu
MTAuMzEiLAotICAgICAgICAgICAgInRpbWVycy1icm93c2VyaWZ5IjogIjEuNC4yIiwKLSAgICAg
ICAgICAgICJ0dHktYnJvd3NlcmlmeSI6ICIwLjAuMCIsCi0gICAgICAgICAgICAidXJsIjogIjAu
MTAuMyIsCi0gICAgICAgICAgICAidXRpbCI6ICIwLjEwLjMiLAotICAgICAgICAgICAgInZtLWJy
b3dzZXJpZnkiOiAiMC4wLjQiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAiZGVwZW5kZW5jaWVz
IjogewotICAgICAgICAgICAgImlzYXJyYXkiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjAuMC4xIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJyZWFkYWJsZS1zdHJlYW0i
OiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xNCIsCi0gICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAiY29yZS11dGlsLWlzIjogIjEuMC4yIiwK
LSAgICAgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiLAotICAgICAgICAgICAgICAgICJp
c2FycmF5IjogIjAuMC4xIiwKLSAgICAgICAgICAgICAgICAic3RyaW5nX2RlY29kZXIiOiAiMC4x
MC4zMSIKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAg
ICAgfSwKLSAgICAgICAgIm5vZGUtbm90aWZpZXIiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAi
NC42LjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgImlzLWdsb2IiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMy4xLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1nbG9iLy0vaXMtZ2xvYi0zLjEuMC50Z3oiLAor
ICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1lNld1SkNGNEJLeHdjSHVXa2lWblNHekQ2RW89
IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICAgICAiY2xpLXVzYWdlIjogIjAuMS40IiwKLSAgICAgICAgICAgICJncm93bHkiOiAiMS4z
LjAiLAotICAgICAgICAgICAgImxvZGFzaC5jbG9uZWRlZXAiOiAiMy4wLjIiLAotICAgICAgICAg
ICAgIm1pbmltaXN0IjogIjEuMi4wIiwKLSAgICAgICAgICAgICJzZW12ZXIiOiAiNS4zLjAiLAot
ICAgICAgICAgICAgInNoZWxsd29yZHMiOiAiMC4xLjAiLAotICAgICAgICAgICAgIndoaWNoIjog
IjEuMi4xMSIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJub2RlLXV1aWQiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS40LjciLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAgICJpcy1leHRnbG9iIjogIjIuMS4xIgorICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgfQorICAgIH0sCisgICAgImh0dHAtc2lnbmF0dXJlIjogeworICAgICAgInZl
cnNpb24iOiAiMS4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2h0dHAtc2lnbmF0dXJlLy0vaHR0cC1zaWduYXR1cmUtMS4xLjEudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS0zM0xpWndaczBLeG4rM2F0K09FMHFQdlBrYjg9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYXNzZXJ0LXBsdXMi
OiAiMC4yLjAiLAorICAgICAgICAianNwcmltIjogIjEuNC4xIiwKKyAgICAgICAgInNzaHBrIjog
IjEuMTMuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJodHRwcy1icm93c2VyaWZ5IjogeworICAg
ICAgInZlcnNpb24iOiAiMC4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2h0dHBzLWJyb3dzZXJpZnkvLS9odHRwcy1icm93c2VyaWZ5LTAuMC4xLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUDVFMlhLdm1DM2Z0RHJ1aVMwVk9QZ25aV29J
PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImljb252LWxpdGUiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIwLjQuMTgiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2ljb252LWxpdGUvLS9pY29udi1saXRlLTAuNC4xOC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGE1MTItc3IxWlFwaDNVd0hUUjBYZnRTYks4NU92QmJ4ZS9hYkxHekVu
UEVOQ1F3bUhmN3NjazhPeXU0b2IzTGdCeFdXeFJvTStRc3plVXlsN2picWFwdTJUcUE9PSIKKyAg
ICB9LAorICAgICJpY3NzLXJlcGxhY2Utc3ltYm9scyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEu
MS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pY3Nz
LXJlcGxhY2Utc3ltYm9scy8tL2ljc3MtcmVwbGFjZS1zeW1ib2xzLTEuMS4wLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtQnVwdmcyZWFkMG5qaHMvaC9vRXE1ZHNpUGUwPSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImljc3MtdXRpbHMiOiB7CisgICAgICAidmVyc2lv
biI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvaWNzcy11dGlscy8tL2ljc3MtdXRpbHMtMi4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1nL0NnN0RlTDh5UmhlTGJDclpFMjhUV3h5V0k9IiwKKyAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAicG9zdGNzcyI6ICI2LjAuMTEiCisgICAg
ICB9CisgICAgfSwKKyAgICAiaWVlZTc1NCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS44IiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pZWVlNzU0Ly0v
aWVlZTc1NC0xLjEuOC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXZqUFVDc0VPOFpK
bkFmYndpaTJHKy8wYTArUT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJpZ25v
cmUiOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjMuNSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaWdub3JlLy0vaWdub3JlLTMuMy41LnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTUxMi1KTEg5M21MOGFtWlFoaC9wNm1mUWdWQkgzTTZlcE5xM0Rm
c1hzVFN1U3JJblZqd3lZbEZFMW52MkFnZlJDQzhQb09oTTBqd1E1djhzOUxnYks3eUdEdz09IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaW11cm11cmhhc2giOiB7CisgICAgICAi
dmVyc2lvbiI6ICIwLjEuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvaW11cm11cmhhc2gvLS9pbXVybXVyaGFzaC0wLjEuNC50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLWtoaTVzcmtvb2ppeFBjVDdhMjFYYnlNVVUrbz0iLAorICAgICAgImRl
diI6IHRydWUKKyAgICB9LAorICAgICJpbmRlbnQtc3RyaW5nIjogeworICAgICAgInZlcnNpb24i
OiAiMi4xLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2luZGVudC1zdHJpbmcvLS9pbmRlbnQtc3RyaW5nLTIuMS4wLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtamkxSU5JZENFaHRLZ2hpM29UZnBwU0JKM0lBPSIsCisgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInJlcGVhdGluZyI6ICIyLjAuMSIK
KyAgICAgIH0KKyAgICB9LAorICAgICJpbmRleGVzLW9mIjogeworICAgICAgInZlcnNpb24iOiAi
MS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lu
ZGV4ZXMtb2YvLS9pbmRleGVzLW9mLTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtOHc5eGJJNHIwMGJIdG4wOTg1RlZacWZBVmdjPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAg
IH0sCisgICAgImluZGV4b2YiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjAuMSIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaW5kZXhvZi8tL2luZGV4b2Yt
MC4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ndHd6YlNNcmtHSVhuUVdyTXBP
bVlGbjlRMTA9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaW5mbGlnaHQiOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjAuNiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvaW5mbGlnaHQvLS9pbmZsaWdodC0xLjAuNi50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLVNiMWpNZGZRTFF3SnZKRUtFSFc2Z1dXMWJmaz0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJvbmNlIjogIjEuNC4w
IiwKKyAgICAgICAgIndyYXBweSI6ICIxLjAuMiIKKyAgICAgIH0KKyAgICB9LAorICAgICJpbmhl
cml0cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pbmhlcml0cy8tL2luaGVyaXRzLTIuMC4zLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWXp3c2crUGFRcVVDOVNSbUFpU0E5Q0NDWWQ0PSIs
CisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImluaSI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjEuMy40IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9pbmkvLS9pbmktMS4zLjQudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1CVGZMZWRy
MW0xbWhwUmZmOXdiSWJzQTVGaTQ9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAi
aW5xdWlyZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjIuMyIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaW5xdWlyZXIvLS9pbnF1aXJlci0zLjIuMy50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItQmMzS2JpbXBEVE9lUWREajE4SXIvcmxz
R3VoQlNTTnFkT254YUF1S2hwa2RuTU11S3NFR2JaRDJ2NUtGRjlvc28yT1UrQlBoNysvdTVvYm1G
RFJtV3c9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgImFuc2ktZXNjYXBlcyI6ICIyLjAuMCIsCisgICAgICAgICJjaGFsayI6ICIyLjEuMCIsCisg
ICAgICAgICJjbGktY3Vyc29yIjogIjIuMS4wIiwKKyAgICAgICAgImNsaS13aWR0aCI6ICIyLjIu
MCIsCisgICAgICAgICJleHRlcm5hbC1lZGl0b3IiOiAiMi4wLjQiLAorICAgICAgICAiZmlndXJl
cyI6ICIyLjAuMCIsCisgICAgICAgICJsb2Rhc2giOiAiNC4xNy40IiwKKyAgICAgICAgIm11dGUt
c3RyZWFtIjogIjAuMC43IiwKKyAgICAgICAgInJ1bi1hc3luYyI6ICIyLjMuMCIsCisgICAgICAg
ICJyeC1saXRlIjogIjQuMC44IiwKKyAgICAgICAgInJ4LWxpdGUtYWdncmVnYXRlcyI6ICI0LjAu
OCIsCisgICAgICAgICJzdHJpbmctd2lkdGgiOiAiMi4xLjEiLAorICAgICAgICAic3RyaXAtYW5z
aSI6ICI0LjAuMCIsCisgICAgICAgICJ0aHJvdWdoIjogIjIuMy44IgorICAgICAgfSwKKyAgICAg
ICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJhbnNpLXJlZ2V4IjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvYW5zaS1yZWdleC8tL2Fuc2ktcmVnZXgtMy4wLjAudGd6IiwKKyAgICAgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtN1FNWHd5SUdUM2xHYkFLV2E5MjJCYXMzMlpnPSIsCiAgICAg
ICAgICAgImRldiI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgIm5vcHQiOiB7Ci0gICAgICAg
ICAgInZlcnNpb24iOiAiMy4wLjYiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgImNoYWxrIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2hhbGsvLS9jaGFsay0yLjEu
MC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUxVSEdTL2RnZTR1amJYTUpy
bmloWU1jTDRBb093ZUdudzlUcDNrUXVxeTFLeDVjMXFLanF2TUpaNm5WSlBNV0p0S0NUTjcyWm9n
SDNvZVNPOWc5clhRPT0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1
aXJlcyI6IHsKLSAgICAgICAgICAgICJhYmJyZXYiOiAiMS4wLjkiCisgICAgICAgICAgICAiYW5z
aS1zdHlsZXMiOiAiMy4yLjAiLAorICAgICAgICAgICAgImVzY2FwZS1zdHJpbmctcmVnZXhwIjog
IjEuMC41IiwKKyAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICI0LjQuMCIKICAgICAgICAg
ICB9CiAgICAgICAgIH0sCi0gICAgICAgICJub3JtYWxpemUtcGFja2FnZS1kYXRhIjogewotICAg
ICAgICAgICJ2ZXJzaW9uIjogIjIuMy41IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICJzdHJpcC1hbnNpIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMC4wIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3RyaXAtYW5z
aS8tL3N0cmlwLWFuc2ktNC4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
cUVlUUl1c2F3MmlvY1RpYlkxSml4UVh1Tm84PSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAg
ICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImhvc3RlZC1naXQtaW5mbyI6ICIy
LjEuNSIsCi0gICAgICAgICAgICAiaXMtYnVpbHRpbi1tb2R1bGUiOiAiMS4wLjAiLAotICAgICAg
ICAgICAgInNlbXZlciI6ICI1LjMuMCIsCi0gICAgICAgICAgICAidmFsaWRhdGUtbnBtLXBhY2th
Z2UtbGljZW5zZSI6ICIzLjAuMSIKKyAgICAgICAgICAgICJhbnNpLXJlZ2V4IjogIjMuMC4wIgog
ICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgIm5vcm1hbGl6ZS1wYXRoIjogewotICAg
ICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0g
ICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgIm5vcm1hbGl6ZS1yYW5n
ZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMiIsCi0gICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAiaW50ZXJuYWwtaXAiOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvaW50ZXJuYWwtaXAvLS9pbnRlcm5hbC1pcC0xLjIuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLXJwKy9rN21FaDRlRjFRcU40Yk5XbFdCWXoxdz0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJtZW93Ijog
IjMuNy4wIgorICAgICAgfQorICAgIH0sCisgICAgImludGVycHJldCI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9pbnRlcnByZXQvLS9pbnRlcnByZXQtMS4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS15OE5jWXU3dWMvR2F0N0VLZ0JVUlFCcjhENUE9IiwKKyAgICAgICJkZXYiOiB0cnVl
CisgICAgfSwKKyAgICAiaW52YXJpYW50IjogeworICAgICAgInZlcnNpb24iOiAiMi4yLjIiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ludmFyaWFudC8t
L2ludmFyaWFudC0yLjIuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLW5oOVdyQXJO
dHI4d013YnpPTDQ3SUVybUEyQT0iLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibG9v
c2UtZW52aWZ5IjogIjEuMy4xIgorICAgICAgfQorICAgIH0sCisgICAgImludmVydC1rdiI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9pbnZlcnQta3YvLS9pbnZlcnQta3YtMS4wLjAudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1FRXFPU3F5bTA5ak5GWHFPK0wrckxYby8vYlk9IiwKKyAgICAg
ICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXAiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEu
NSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXAvLS9p
cC0xLjEuNS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXZkN1hBUlFwQ0NqQW9Ebm5M
dkpmV3E3RU5Vbz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJpcGFkZHIuanMi
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjQuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXBhZGRyLmpzLy0vaXBhZGRyLmpzLTEuNC4wLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtS1dyS2g0cUNHQmJsdUYwS0tGcVp2UDlGZ3ZBPSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlzLWFic29sdXRlLXVybCI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9pcy1hYnNvbHV0ZS11cmwvLS9pcy1hYnNvbHV0ZS11cmwtMi4xLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1VRk1OKzRUOHlhcDl2bmhTNkRvM3VUdWZLcVk9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtYXJyYXlpc2giOiB7CisgICAgICAi
dmVyc2lvbiI6ICIwLjIuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvaXMtYXJyYXlpc2gvLS9pcy1hcnJheWlzaC0wLjIuMS50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLWQ4bVlRRko2cU95eHFMcHBlNEJrV25xU2FwMD0iLAorICAgICAgImRl
diI6IHRydWUKKyAgICB9LAorICAgICJpcy1iaW5hcnktcGF0aCI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9pcy1iaW5hcnktcGF0aC8tL2lzLWJpbmFyeS1wYXRoLTEuMC4xLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtZGZGbVFyU0E4WWVuRWNnVUZoL1RwS2RsV0pnPSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJpbmFyeS1leHRlbnNpb25z
IjogIjEuMTAuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJpcy1idWZmZXIiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIxLjEuNSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvaXMtYnVmZmVyLy0vaXMtYnVmZmVyLTEuMS41LnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtSHpzbTcyRTdJVXVJeThvanpHd0IySGxoN3N3PSIsCisgICAgICAiZGV2Ijog
dHJ1ZQorICAgIH0sCisgICAgImlzLWJ1aWx0aW4tbW9kdWxlIjogeworICAgICAgInZlcnNpb24i
OiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2lzLWJ1aWx0aW4tbW9kdWxlLy0vaXMtYnVpbHRpbi1tb2R1bGUtMS4wLjAudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1WQVZ5MDA5Nnd4R2ZqM2JEREx3YkhnTjYvNzQ9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYnVpbHRpbi1tb2R1
bGVzIjogIjEuMS4xIgorICAgICAgfQorICAgIH0sCisgICAgImlzLWNhbGxhYmxlIjogeworICAg
ICAgInZlcnNpb24iOiAiMS4xLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2lzLWNhbGxhYmxlLy0vaXMtY2FsbGFibGUtMS4xLjMudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1odXQxT1NnRjNjTTY5eHlTb083ZmRPNTJCTEk9IiwKKyAgICAg
ICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtY2kiOiB7CisgICAgICAidmVyc2lvbiI6ICIx
LjAuMTAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lz
LWNpLy0vaXMtY2ktMS4wLjEwLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtOXpremF5
WXlObEJocWRTQ2NNMVdyak5wTVk0PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgImNpLWluZm8iOiAiMS4xLjEiCisgICAgICB9CisgICAgfSwKKyAg
ICAiaXMtZGF0ZS1vYmplY3QiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtZGF0ZS1vYmplY3QvLS9p
cy1kYXRlLW9iamVjdC0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLW1xSU90
cTdydi9kL3ZUUG5US0FiTTFnZE9oWT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJpcy1kaXJlY3RvcnkiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjMuMSIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtZGlyZWN0b3J5Ly0vaXMtZGly
ZWN0b3J5LTAuMy4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWVRPYmJ5UjEvSGN2
MmNuWVAxeUZkZHdWU3VFPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlzLWRv
dGZpbGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtZG90ZmlsZS8tL2lzLWRvdGZpbGUtMS4wLjMu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1wcUx6TC8wdCt3VDF5aVhzMFBhNFBQZVlv
ZUU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtZXF1YWwtc2hhbGxvdyI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1lcXVhbC1zaGFsbG93Ly0vaXMtZXF1YWwtc2hhbGxvdy0w
LjEuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUlqZ0pqOEloM2d2UHBkbnF4TVJk
WTRxaHhUUT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJpcy1wcmltaXRpdmUiOiAiMi4wLjAiCisgICAgICB9CisgICAgfSwKKyAgICAiaXMtZXh0
ZW5kYWJsZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1leHRlbmRhYmxlLy0vaXMtZXh0ZW5kYWJs
ZS0wLjEuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVlyRVE0b21rY1VHT1BzTnFZ
WDFITGpBZC9Jaz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJpcy1leHRnbG9i
IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2lzLWV4dGdsb2IvLS9pcy1leHRnbG9iLTEuMC4wLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtckVhQmQ4U1VOQVdna3Z5UEtYWU1iL3hpQnNBPSIs
CisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlzLWZpbml0ZSI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9pcy1maW5pdGUvLS9pcy1maW5pdGUtMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS16R1ozYVZZQ3ZsVU84UjZMU3FZd1UwSzIwS289IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibnVtYmVyLWlzLW5hbiI6ICIxLjAu
MSIKKyAgICAgIH0KKyAgICB9LAorICAgICJpcy1mdWxsd2lkdGgtY29kZS1wb2ludCI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9pcy1mdWxsd2lkdGgtY29kZS1wb2ludC8tL2lzLWZ1bGx3aWR0aC1jb2Rl
LXBvaW50LTIuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbzdNS1hFOFprWU1X
ZXFxNU8rNzY0OTM3WlU4PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlzLWds
b2IiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtZ2xvYi8tL2lzLWdsb2ItMi4wLjEudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS0wSmI1SnFQZTFXQVBQOS9aRVpqTENJakMyR009IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaXMtZXh0Z2xv
YiI6ICIxLjAuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJpcy1ucG0iOiB7CisgICAgICAidmVy
c2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvaXMtbnBtLy0vaXMtbnBtLTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtOHZ0anBsNUpCYlFHeUdCeWRsb2FUY2VUdWZRPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAg
IH0sCisgICAgImlzLW51bWJlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1udW1iZXIvLS9pcy1u
dW1iZXItMi4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1BZnk3czVOR09sU1BM
MFpzemhiZXprbmJrSTg9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAia2luZC1vZiI6ICIzLjIuMiIKKyAgICAgIH0KKyAgICB9LAorICAgICJpcy1v
YmoiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtb2JqLy0vaXMtb2JqLTEuMC4xLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtUGtjcHJCOWYzZ0pjMTlnNmlXMnJuMDluMnc4PSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlzLXBhdGgtY3dkIjogeworICAgICAgInZlcnNp
b24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2lzLXBhdGgtY3dkLy0vaXMtcGF0aC1jd2QtMS4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS0waVhzSXhNdWllM1RqOXAyZEhMbUxtWHhFRzA9IiwKKyAgICAgICJkZXYiOiB0
cnVlCisgICAgfSwKKyAgICAiaXMtcGF0aC1pbi1jd2QiOiB7CisgICAgICAidmVyc2lvbiI6ICIx
LjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMt
cGF0aC1pbi1jd2QvLS9pcy1wYXRoLWluLWN3ZC0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLVpIZFlLNElVMWdJMFlKUldjQU8raXA2c0JOdz0iLAorICAgICAgImRldiI6IHRy
dWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJpcy1wYXRoLWluc2lkZSI6ICIxLjAu
MCIKKyAgICAgIH0KKyAgICB9LAorICAgICJpcy1wYXRoLWluc2lkZSI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9pcy1wYXRoLWluc2lkZS8tL2lzLXBhdGgtaW5zaWRlLTEuMC4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtL0FibG9XZy92YUU5NW1ldjl4ZTd3UXBJODM4PSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInBhdGgtaXMtaW5zaWRl
IjogIjEuMC4yIgorICAgICAgfQorICAgIH0sCisgICAgImlzLXBsYWluLW9iaiI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9pcy1wbGFpbi1vYmovLS9pcy1wbGFpbi1vYmotMS4xLjAudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1jYVVNaENuZnluYzhrcU9RcEtBN09melZIVDQ9IiwKKyAgICAg
ICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtcG9zaXgtYnJhY2tldCI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjAuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9pcy1wb3NpeC1icmFja2V0Ly0vaXMtcG9zaXgtYnJhY2tldC0wLjEuMS50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLU16VGNlWGREYU9rdkFXNXZ2QXFJOWMxdWE4UT0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJpcy1wcmltaXRpdmUiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvaXMtcHJpbWl0aXZlLy0vaXMtcHJpbWl0aXZlLTIuMC4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtSUh1cmtXT0VtY0I3S3Q4a0NrR29jaEFEUlhVPSIsCisgICAgICAi
ZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlzLXByb21pc2UiOiB7CisgICAgICAidmVyc2lvbiI6
ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
aXMtcHJvbWlzZS8tL2lzLXByb21pc2UtMi4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1lYUtwN09md2x1Z1BOdEt5ODd3V3dmOUw4L289IiwKKyAgICAgICJkZXYiOiB0cnVlCisg
ICAgfSwKKyAgICAiaXMtcmVkaXJlY3QiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtcmVkaXJlY3Qv
LS9pcy1yZWRpcmVjdC0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUhRUGQ3
Vk85amJEekRDYmsrVjAyL0h5SDNDUT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJpcy1yZWdleCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC40IiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1yZWdleC8tL2lzLXJlZ2V4LTEuMC40
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVlJkSW0xUndrYkNURGdsV1ZNN1NYdWwr
bEpFPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ImhhcyI6ICIxLjAuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJpcy1yZXNvbHZhYmxlIjogewor
ICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2lzLXJlc29sdmFibGUvLS9pcy1yZXNvbHZhYmxlLTEuMC4wLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtamZWOFllb3VQRkFVQ05FQSt3RTgrTmJnekdJPSIs
CisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInRyeWl0
IjogIjEuMC4zIgorICAgICAgfQorICAgIH0sCisgICAgImlzLXJldHJ5LWFsbG93ZWQiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvaXMtcmV0cnktYWxsb3dlZC8tL2lzLXJldHJ5LWFsbG93ZWQtMS4xLjAu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1FYUJnVm90bk01UkVBejBCSmFZYUlOVmsr
elE9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtcm9vdCI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9pcy1yb290Ly0vaXMtcm9vdC0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLUI3YkNNN3c1VE5uUUs2RmNsbXZXWmcxalF0VT0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJpcy1zdHJlYW0iOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMCIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtc3RyZWFt
Ly0vaXMtc3RyZWFtLTEuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRXRTajNV
NW80TGVjNjQyOGhCYzY2QTJSeWtRPSIKKyAgICB9LAorICAgICJpcy1zdWJzZXQiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIwLjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvaXMtc3Vic2V0Ly0vaXMtc3Vic2V0LTAuMS4xLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtaWxrUmZaTXQ0ZDRBOGtYODNUbk9RL0hwT2FZPSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgImlzLXN2ZyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMS4w
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1zdmcv
LS9pcy1zdmctMi4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS16MkVKRGFEWjc3
eXJoeUxldW04RElnamJzT2s9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAiaHRtbC1jb21tZW50LXJlZ2V4IjogIjEuMS4xIgorICAgICAgfQorICAg
IH0sCisgICAgImlzLXN5bWJvbCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1zeW1ib2wvLS9pcy1z
eW1ib2wtMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1QTVdmQUFKUmxMYXJM
ampicm1hSkpXdG1CWEk9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtdHlw
ZWRhcnJheSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy10eXBlZGFycmF5Ly0vaXMtdHlwZWRhcnJh
eS0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTVIbklDRmpmREJzUjNkcHBR
UGxnRWZ6YVNwbz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJpcy11dGY4Ijog
eworICAgICAgInZlcnNpb24iOiAiMC4yLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2lzLXV0ZjgvLS9pcy11dGY4LTAuMi4xLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtU3cyaFJDRUUwYk0yTkE2QWVYNkdYUE9mZlhJPSIsCisgICAgICAi
ZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlzLXdpbmRvd3MiOiB7CisgICAgICAidmVyc2lvbiI6
ICIxLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
aXMtd2luZG93cy8tL2lzLXdpbmRvd3MtMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1NUTIzRDNRdEpab1dvMmtnSzFHdmhDTXpFTms9IiwKKyAgICAgICJkZXYiOiB0cnVlCisg
ICAgfSwKKyAgICAiaXMtd3NsIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLXdzbC8tL2lzLXdzbC0x
LjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUh4YmtxaUt3VFJNMnRtR0lwbXJ6
eGdERHBtMD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJpc2FycmF5Ijogewor
ICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2lzYXJyYXkvLS9pc2FycmF5LTEuMC4wLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtdTVOZFNGZ3N1aGFNQm9OSlY2VktQZ2NTVHhFPSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgImlzZXhlIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjAi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzZXhlLy0v
aXNleGUtMi4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS02UHZ6ZE54VmIvaVVl
aERjc0ZjdFl6OHMraEE9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXNvYmpl
Y3QiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXNvYmplY3QvLS9pc29iamVjdC0yLjEuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLThHVldFSmFqOGRvdTlHSnkrQlhJUU5oK0RJaz0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJpc2FycmF5
IjogIjEuMC4wIgorICAgICAgfQorICAgIH0sCisgICAgImlzb21vcnBoaWMtZmV0Y2giOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIyLjIuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvaXNvbW9ycGhpYy1mZXRjaC8tL2lzb21vcnBoaWMtZmV0Y2gtMi4yLjEu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ZUnJoclBGUFhvSDNLVkIwY29HZjZYTTFX
S2s9IiwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgIm5vZGUtZmV0Y2giOiAiMS43LjIi
LAorICAgICAgICAid2hhdHdnLWZldGNoIjogIjIuMC4zIgorICAgICAgfQorICAgIH0sCisgICAg
Imlzc3RyZWFtIjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjIiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzc3RyZWFtLy0vaXNzdHJlYW0tMC4xLjIu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1SK1kvZXZWYSttK1M0VkFPYVE2NHVGS2ND
Wm89IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXN0YW5idWwtYXBpIjogewor
ICAgICAgInZlcnNpb24iOiAiMS4xLjE0IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9pc3RhbmJ1bC1hcGkvLS9pc3RhbmJ1bC1hcGktMS4xLjE0LnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtSmJ4WEFmZkdnTUQvLzVFOTVHNDJHYU9tNW9BPSIs
CisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFzeW5j
IjogIjIuNS4wIiwKKyAgICAgICAgImZpbGVzZXQiOiAiMi4wLjMiLAorICAgICAgICAiaXN0YW5i
dWwtbGliLWNvdmVyYWdlIjogIjEuMS4xIiwKKyAgICAgICAgImlzdGFuYnVsLWxpYi1ob29rIjog
IjEuMC43IiwKKyAgICAgICAgImlzdGFuYnVsLWxpYi1pbnN0cnVtZW50IjogIjEuOC4wIiwKKyAg
ICAgICAgImlzdGFuYnVsLWxpYi1yZXBvcnQiOiAiMS4xLjEiLAorICAgICAgICAiaXN0YW5idWwt
bGliLXNvdXJjZS1tYXBzIjogIjEuMi4xIiwKKyAgICAgICAgImlzdGFuYnVsLXJlcG9ydHMiOiAi
MS4xLjIiLAorICAgICAgICAianMteWFtbCI6ICIzLjcuMCIsCisgICAgICAgICJta2RpcnAiOiAi
MC41LjEiLAorICAgICAgICAib25jZSI6ICIxLjQuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJp
c3RhbmJ1bC1saWItY292ZXJhZ2UiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXN0YW5idWwtbGliLWNv
dmVyYWdlLy0vaXN0YW5idWwtbGliLWNvdmVyYWdlLTEuMS4xLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTUxMi0wKzF2RGttenhxSkluNXJjb0VxYXBTQjREbVB4RTMxRXRJMmRGMmFDa1Y1
ZXNOOUVXSHhaMGR3Z0RDbGl2TVhKcUU3emFZUXhxMzBoajVMMG5sVE41UT09IiwKKyAgICAgICJk
ZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXN0YW5idWwtbGliLWhvb2siOiB7CisgICAgICAidmVy
c2lvbiI6ICIxLjAuNyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvaXN0YW5idWwtbGliLWhvb2svLS9pc3RhbmJ1bC1saWItaG9vay0xLjAuNy50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGE1MTItM1UySEI5eTFaVjlVbUZsRTEyRngrblB0RnFJeW16
cnFDa3NyWHVqbTNOVmJBWklKZy9SZllnTzFYaUlhMG1ibXhUaldwVkVWbGtJWkoyNXhWSUFma1E9
PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFw
cGVuZC10cmFuc2Zvcm0iOiAiMC40LjAiCisgICAgICB9CisgICAgfSwKKyAgICAiaXN0YW5idWwt
bGliLWluc3RydW1lbnQiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjguMCIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXN0YW5idWwtbGliLWluc3RydW1l
bnQvLS9pc3RhbmJ1bC1saWItaW5zdHJ1bWVudC0xLjguMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLVp2YkpRaHpKN0VjRTkyOHRzSVM2a0hpaXRUST0iLAorICAgICAgImRldiI6IHRy
dWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1nZW5lcmF0b3IiOiAiNi4y
Ni4wIiwKKyAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogIjYuMjYuMCIsCisgICAgICAgICJiYWJl
bC10cmF2ZXJzZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4yNi4wIiwK
KyAgICAgICAgImJhYnlsb24iOiAiNi4xOC4wIiwKKyAgICAgICAgImlzdGFuYnVsLWxpYi1jb3Zl
cmFnZSI6ICIxLjEuMSIsCisgICAgICAgICJzZW12ZXIiOiAiNS40LjEiCisgICAgICB9CisgICAg
fSwKKyAgICAiaXN0YW5idWwtbGliLXJlcG9ydCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4x
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pc3RhbmJ1
bC1saWItcmVwb3J0Ly0vaXN0YW5idWwtbGliLXJlcG9ydC0xLjEuMS50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGE1MTItdHZGK1ltQ21INHRobmV6NkpGWDA2dWpJQTE5V1BhOVlVaXdqYzF1
QUxGMmN2NWRtRTNJdDhiNUk4T2I3RkhKNzBIOVk1eUYrVERrVmEvbWNBRHV3MVE9PSIsCisgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImlzdGFuYnVsLWxp
Yi1jb3ZlcmFnZSI6ICIxLjEuMSIsCisgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAorICAgICAg
ICAicGF0aC1wYXJzZSI6ICIxLjAuNSIsCisgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIzLjIu
MyIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiaGFzLWZsYWci
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oYXMtZmxhZy8tL2hhcy1mbGFnLTEuMC4wLnRn
eiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLW5aNTVNV1hPQVhvQThBUVl4RCtVS25z
ZEVmbz0iLAogICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJub3Jt
YWxpemUtdXJsIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNi4xIiwKLSAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVp
cmVzIjogewotICAgICAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjAiLAotICAgICAgICAg
ICAgInByZXBlbmQtaHR0cCI6ICIxLjAuNCIsCi0gICAgICAgICAgICAicXVlcnktc3RyaW5nIjog
IjQuMi4zIiwKLSAgICAgICAgICAgICJzb3J0LWtleXMiOiAiMS4xLjIiCi0gICAgICAgICAgfQot
ICAgICAgICB9LAotICAgICAgICAibnRoLWNoZWNrIjogewotICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMC4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJzdXBwb3J0cy1j
b2xvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjIuMyIsCisgICAgICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N1cHBvcnRzLWNvbG9yLy0vc3VwcG9y
dHMtY29sb3ItMy4yLjMudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWmF3RkJM
T1ZRWEhZcGtsR3NxNDh1NHBmVlBZPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAg
ICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImJvb2xiYXNlIjogIjEuMC4wIgorICAgICAg
ICAgICAgImhhcy1mbGFnIjogIjEuMC4wIgogICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAg
ICAgIm51bTJmcmFjdGlvbiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMiIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0s
Ci0gICAgICAgICJudW1iZXItaXMtbmFuIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4w
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAg
ICAgICAgfSwKLSAgICAgICAgIm53bWF0Y2hlciI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIx
LjMuOCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVl
Ci0gICAgICAgIH0sCi0gICAgICAgICJvYXV0aC1zaWduIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuOC4yIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgIm9iamVjdC1hc3NpZ24iOiB7Ci0gICAgICAgICAg
InZlcnNpb24iOiAiNC4xLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
fQorICAgICAgfQorICAgIH0sCisgICAgImlzdGFuYnVsLWxpYi1zb3VyY2UtbWFwcyI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjEuMi4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9pc3RhbmJ1bC1saWItc291cmNlLW1hcHMvLS9pc3RhbmJ1bC1saWItc291
cmNlLW1hcHMtMS4yLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLW11a1Z2U1hD
bjlKUXZkSmw4d1AvaVBocWlnME1SdHVXdUQ0Wk5LbzZ2QjJJay8vQW1oQUtlM1FuUE4wMmRta1Jl
M2xUdWRGazNyem9IaHdVNGhiOTR3PT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICJkZWJ1ZyI6ICIyLjYuOCIsCisgICAgICAgICJpc3RhbmJ1bC1s
aWItY292ZXJhZ2UiOiAiMS4xLjEiLAorICAgICAgICAibWtkaXJwIjogIjAuNS4xIiwKKyAgICAg
ICAgInJpbXJhZiI6ICIyLjYuMSIsCisgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS43IgorICAg
ICAgfQorICAgIH0sCisgICAgImlzdGFuYnVsLXJlcG9ydHMiOiB7CisgICAgICAidmVyc2lvbiI6
ICIxLjEuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
aXN0YW5idWwtcmVwb3J0cy8tL2lzdGFuYnVsLXJlcG9ydHMtMS4xLjIudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1EN0xqOXFxWklyMDg1RjBGMkt0TlhvNEh2VTg9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaGFuZGxlYmFycyI6ICI0
LjAuMTAiCisgICAgICB9CisgICAgfSwKKyAgICAiamVzdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjIwLjAuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
amVzdC8tL2plc3QtMjAuMC40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUGRKZ3dw
aWRiYTFuaXg2Y3hOa1pSUGJXQXF3PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgImplc3QtY2xpIjogIjIwLjAuNCIKKyAgICAgIH0sCisgICAgICAi
ZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiYW5zaS1lc2NhcGVzIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuNC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvYW5zaS1lc2NhcGVzLy0vYW5zaS1lc2NhcGVzLTEuNC4wLnRneiIsCisgICAg
ICAgICAgImludGVncml0eSI6ICJzaGExLTA2aW9PekdhcG5lVFppc1Q1MkhIa1JRaU1HND0iLAog
ICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJvYmplY3Qub21pdCI6
IHsKKyAgICAgICAgImNhbGxzaXRlcyI6IHsKICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIs
Ci0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJmb3Itb3duIjogIjAuMS40IiwKLSAg
ICAgICAgICAgICJpcy1leHRlbmRhYmxlIjogIjAuMS4xIgotICAgICAgICAgIH0KLSAgICAgICAg
fSwKLSAgICAgICAgIm9uLWZpbmlzaGVkIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMy4w
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0g
ICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImVlLWZpcnN0IjogIjEuMS4xIgot
ICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgIm9uLWhlYWRlcnMiOiB7Ci0gICAgICAg
ICAgInZlcnNpb24iOiAiMS4wLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2FsbHNpdGVzLy0v
Y2FsbHNpdGVzLTIuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLUJ1dUU4
QTdxUVQyb2F2L3ZyTC83TmdrN1BGQT0iLAogICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAg
IH0sCi0gICAgICAgICJvbmNlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNC4wIiwKLSAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJqZXN0LWNsaSI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIyMC4wLjQiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9qZXN0LWNsaS8tL2plc3QtY2xpLTIwLjAuNC50Z3oiLAorICAgICAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS01VEt4bllpdVc4YkVGK2l3V1RwdjZWU3gzSk09IiwKICAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAg
ICAid3JhcHB5IjogIjEuMC4yIgorICAgICAgICAgICAgImFuc2ktZXNjYXBlcyI6ICIxLjQuMCIs
CisgICAgICAgICAgICAiY2FsbHNpdGVzIjogIjIuMC4wIiwKKyAgICAgICAgICAgICJjaGFsayI6
ICIxLjEuMyIsCisgICAgICAgICAgICAiZ3JhY2VmdWwtZnMiOiAiNC4xLjExIiwKKyAgICAgICAg
ICAgICJpcy1jaSI6ICIxLjAuMTAiLAorICAgICAgICAgICAgImlzdGFuYnVsLWFwaSI6ICIxLjEu
MTQiLAorICAgICAgICAgICAgImlzdGFuYnVsLWxpYi1jb3ZlcmFnZSI6ICIxLjEuMSIsCisgICAg
ICAgICAgICAiaXN0YW5idWwtbGliLWluc3RydW1lbnQiOiAiMS44LjAiLAorICAgICAgICAgICAg
ImlzdGFuYnVsLWxpYi1zb3VyY2UtbWFwcyI6ICIxLjIuMSIsCisgICAgICAgICAgICAiamVzdC1j
aGFuZ2VkLWZpbGVzIjogIjIwLjAuMyIsCisgICAgICAgICAgICAiamVzdC1jb25maWciOiAiMjAu
MC40IiwKKyAgICAgICAgICAgICJqZXN0LWRvY2Jsb2NrIjogIjIwLjAuMyIsCisgICAgICAgICAg
ICAiamVzdC1lbnZpcm9ubWVudC1qc2RvbSI6ICIyMC4wLjMiLAorICAgICAgICAgICAgImplc3Qt
aGFzdGUtbWFwIjogIjIwLjAuNSIsCisgICAgICAgICAgICAiamVzdC1qYXNtaW5lMiI6ICIyMC4w
LjQiLAorICAgICAgICAgICAgImplc3QtbWVzc2FnZS11dGlsIjogIjIwLjAuMyIsCisgICAgICAg
ICAgICAiamVzdC1yZWdleC11dGlsIjogIjIwLjAuMyIsCisgICAgICAgICAgICAiamVzdC1yZXNv
bHZlLWRlcGVuZGVuY2llcyI6ICIyMC4wLjMiLAorICAgICAgICAgICAgImplc3QtcnVudGltZSI6
ICIyMC4wLjQiLAorICAgICAgICAgICAgImplc3Qtc25hcHNob3QiOiAiMjAuMC4zIiwKKyAgICAg
ICAgICAgICJqZXN0LXV0aWwiOiAiMjAuMC4zIiwKKyAgICAgICAgICAgICJtaWNyb21hdGNoIjog
IjIuMy4xMSIsCisgICAgICAgICAgICAibm9kZS1ub3RpZmllciI6ICI1LjEuMiIsCisgICAgICAg
ICAgICAicGlmeSI6ICIyLjMuMCIsCisgICAgICAgICAgICAic2xhc2giOiAiMS4wLjAiLAorICAg
ICAgICAgICAgInN0cmluZy1sZW5ndGgiOiAiMS4wLjEiLAorICAgICAgICAgICAgInRocm9hdCI6
ICIzLjIuMCIsCisgICAgICAgICAgICAid2hpY2giOiAiMS4zLjAiLAorICAgICAgICAgICAgIndv
cmtlci1mYXJtIjogIjEuNS4wIiwKKyAgICAgICAgICAgICJ5YXJncyI6ICI3LjEuMCIKICAgICAg
ICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJvbmV0aW1lIjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMS4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICB9LAorICAgICJqZXN0LWNoYW5nZWQtZmlsZXMiOiB7CisgICAgICAidmVyc2lv
biI6ICIyMC4wLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2plc3QtY2hhbmdlZC1maWxlcy8tL2plc3QtY2hhbmdlZC1maWxlcy0yMC4wLjMudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1rNVRWekdYRU9FQmhTYjd4djAxU3RvNEQ0L2c9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiamVzdC1jb25maWciOiB7CisgICAgICAi
dmVyc2lvbiI6ICIyMC4wLjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2plc3QtY29uZmlnLy0vamVzdC1jb25maWctMjAuMC40LnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtNDNrd3F5SVh5Uk5nWHY4VDU3MTJQc1NQcnVvPSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImNoYWxrIjogIjEuMS4z
IiwKKyAgICAgICAgImdsb2IiOiAiNy4xLjIiLAorICAgICAgICAiamVzdC1lbnZpcm9ubWVudC1q
c2RvbSI6ICIyMC4wLjMiLAorICAgICAgICAiamVzdC1lbnZpcm9ubWVudC1ub2RlIjogIjIwLjAu
MyIsCisgICAgICAgICJqZXN0LWphc21pbmUyIjogIjIwLjAuNCIsCisgICAgICAgICJqZXN0LW1h
dGNoZXItdXRpbHMiOiAiMjAuMC4zIiwKKyAgICAgICAgImplc3QtcmVnZXgtdXRpbCI6ICIyMC4w
LjMiLAorICAgICAgICAiamVzdC1yZXNvbHZlIjogIjIwLjAuNCIsCisgICAgICAgICJqZXN0LXZh
bGlkYXRlIjogIjIwLjAuMyIsCisgICAgICAgICJwcmV0dHktZm9ybWF0IjogIjIwLjAuMyIKKyAg
ICAgIH0KKyAgICB9LAorICAgICJqZXN0LWRpZmYiOiB7CisgICAgICAidmVyc2lvbiI6ICIyMC4w
LjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2plc3Qt
ZGlmZi8tL2plc3QtZGlmZi0yMC4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1n
ZktJL1o1blh3K3lQSFh4d3JHVVJmNVlaaGM9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAorICAgICAgICAiZGlmZiI6
ICIzLjMuMSIsCisgICAgICAgICJqZXN0LW1hdGNoZXItdXRpbHMiOiAiMjAuMC4zIiwKKyAgICAg
ICAgInByZXR0eS1mb3JtYXQiOiAiMjAuMC4zIgorICAgICAgfQorICAgIH0sCisgICAgImplc3Qt
ZG9jYmxvY2siOiB7CisgICAgICAidmVyc2lvbiI6ICIyMC4wLjMiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2plc3QtZG9jYmxvY2svLS9qZXN0LWRvY2Js
b2NrLTIwLjAuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUY3NnBoRFFzd3oyRHhR
KytGVVhxRHZxa1J4ST0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJqZXN0LWVu
dmlyb25tZW50LWpzZG9tIjogeworICAgICAgInZlcnNpb24iOiAiMjAuMC4zIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qZXN0LWVudmlyb25tZW50LWpz
ZG9tLy0vamVzdC1lbnZpcm9ubWVudC1qc2RvbS0yMC4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1CSXFLd1M3aUpmY1pCQmR4T0RTN21aZUgzcGs9IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiamVzdC1tb2NrIjogIjIwLjAuMyIs
CisgICAgICAgICJqZXN0LXV0aWwiOiAiMjAuMC4zIiwKKyAgICAgICAgImpzZG9tIjogIjkuMTIu
MCIKKyAgICAgIH0KKyAgICB9LAorICAgICJqZXN0LWVudmlyb25tZW50LW5vZGUiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIyMC4wLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2plc3QtZW52aXJvbm1lbnQtbm9kZS8tL2plc3QtZW52aXJvbm1lbnQtbm9k
ZS0yMC4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0xSWk4UmhLdkxDUnVtRzZL
NTJjYUNaRmoxQU09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAiamVzdC1tb2NrIjogIjIwLjAuMyIsCisgICAgICAgICJqZXN0LXV0aWwiOiAiMjAu
MC4zIgorICAgICAgfQorICAgIH0sCisgICAgImplc3QtaGFzdGUtbWFwIjogeworICAgICAgInZl
cnNpb24iOiAiMjAuMC41IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9qZXN0LWhhc3RlLW1hcC8tL2plc3QtaGFzdGUtbWFwLTIwLjAuNS50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGE1MTItMElLQVFqVXZ1WmpNQ05pLzBWTlFRRjc0L0g5S0I2N2hz
SEpxR2l3VFdRQzZYTzVBenM3a0xXbSs2US9kd3VodkRVdkFCRE9CTUZLMi9Gd1ozc1owN1E9PSIs
CisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImZiLXdh
dGNobWFuIjogIjIuMC4wIiwKKyAgICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS4xMSIsCisgICAg
ICAgICJqZXN0LWRvY2Jsb2NrIjogIjIwLjAuMyIsCisgICAgICAgICJtaWNyb21hdGNoIjogIjIu
My4xMSIsCisgICAgICAgICJzYW5lIjogIjEuNi4wIiwKKyAgICAgICAgIndvcmtlci1mYXJtIjog
IjEuNS4wIgorICAgICAgfQorICAgIH0sCisgICAgImplc3QtamFzbWluZTIiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIyMC4wLjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2plc3QtamFzbWluZTIvLS9qZXN0LWphc21pbmUyLTIwLjAuNC50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLS9NV3hRUmVBMlJIUVFwQXU4WVdlaFM1ZzFlRT0iLAorICAg
ICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjaGFsayI6ICIx
LjEuMyIsCisgICAgICAgICJncmFjZWZ1bC1mcyI6ICI0LjEuMTEiLAorICAgICAgICAiamVzdC1k
aWZmIjogIjIwLjAuMyIsCisgICAgICAgICJqZXN0LW1hdGNoZXItdXRpbHMiOiAiMjAuMC4zIiwK
KyAgICAgICAgImplc3QtbWF0Y2hlcnMiOiAiMjAuMC4zIiwKKyAgICAgICAgImplc3QtbWVzc2Fn
ZS11dGlsIjogIjIwLjAuMyIsCisgICAgICAgICJqZXN0LXNuYXBzaG90IjogIjIwLjAuMyIsCisg
ICAgICAgICJvbmNlIjogIjEuNC4wIiwKKyAgICAgICAgInAtbWFwIjogIjEuMS4xIgorICAgICAg
fQorICAgIH0sCisgICAgImplc3QtbWF0Y2hlci11dGlscyI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjIwLjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
amVzdC1tYXRjaGVyLXV0aWxzLy0vamVzdC1tYXRjaGVyLXV0aWxzLTIwLjAuMy50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLXM2YTQ0M3lsZDRBN0NES3BpeFpQUkxlQlZoST0iLAorICAg
ICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjaGFsayI6ICIx
LjEuMyIsCisgICAgICAgICJwcmV0dHktZm9ybWF0IjogIjIwLjAuMyIKKyAgICAgIH0KKyAgICB9
LAorICAgICJqZXN0LW1hdGNoZXJzIjogeworICAgICAgInZlcnNpb24iOiAiMjAuMC4zIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qZXN0LW1hdGNoZXJz
Ly0vamVzdC1tYXRjaGVycy0yMC4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS15
bW5iSERMYldtOXdmNlhnUUJxN1ZYQU4vV0E9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAiamVzdC1kaWZmIjogIjIwLjAuMyIsCisgICAgICAgICJq
ZXN0LW1hdGNoZXItdXRpbHMiOiAiMjAuMC4zIiwKKyAgICAgICAgImplc3QtbWVzc2FnZS11dGls
IjogIjIwLjAuMyIsCisgICAgICAgICJqZXN0LXJlZ2V4LXV0aWwiOiAiMjAuMC4zIgorICAgICAg
fQorICAgIH0sCisgICAgImplc3QtbWVzc2FnZS11dGlsIjogeworICAgICAgInZlcnNpb24iOiAi
MjAuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9q
ZXN0LW1lc3NhZ2UtdXRpbC8tL2plc3QtbWVzc2FnZS11dGlsLTIwLjAuMy50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLWF1d29SREJ2eXc1dWROVjViQkFHMlcvZGd4dz0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjaGFsayI6ICIxLjEu
MyIsCisgICAgICAgICJtaWNyb21hdGNoIjogIjIuMy4xMSIsCisgICAgICAgICJzbGFzaCI6ICIx
LjAuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJqZXN0LW1vY2siOiB7CisgICAgICAidmVyc2lv
biI6ICIyMC4wLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2plc3QtbW9jay8tL2plc3QtbW9jay0yMC4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1pOEJ3NlFRVXFoVmNFYWpXVElhYURWeHgybGs9IiwKKyAgICAgICJkZXYiOiB0cnVl
CisgICAgfSwKKyAgICAiamVzdC1yZWdleC11dGlsIjogeworICAgICAgInZlcnNpb24iOiAiMjAu
MC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qZXN0
LXJlZ2V4LXV0aWwvLS9qZXN0LXJlZ2V4LXV0aWwtMjAuMC4zLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtaGJ1clhSTStSR0piR2ZyNHhxcFJJdENGMTJJPSIsCisgICAgICAiZGV2Ijog
dHJ1ZQorICAgIH0sCisgICAgImplc3QtcmVzb2x2ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIw
LjAuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvamVz
dC1yZXNvbHZlLy0vamVzdC1yZXNvbHZlLTIwLjAuNC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLWxFaXo2TGE2L0JWSGxFVEdTWkJGdC8vbGw2VT0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJicm93c2VyLXJlc29sdmUiOiAiMS4xMS4y
IiwKKyAgICAgICAgImlzLWJ1aWx0aW4tbW9kdWxlIjogIjEuMC4wIiwKKyAgICAgICAgInJlc29s
dmUiOiAiMS40LjAiCisgICAgICB9CisgICAgfSwKKyAgICAiamVzdC1yZXNvbHZlLWRlcGVuZGVu
Y2llcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIwLjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvamVzdC1yZXNvbHZlLWRlcGVuZGVuY2llcy8tL2pl
c3QtcmVzb2x2ZS1kZXBlbmRlbmNpZXMtMjAuMC4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtYmhTbnR4ZXZEeXl6Wm54VW5lUUs4QmV4Y2pvPSIsCisgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImplc3QtcmVnZXgtdXRpbCI6ICIyMC4wLjMi
CisgICAgICB9CisgICAgfSwKKyAgICAiamVzdC1ydW50aW1lIjogeworICAgICAgInZlcnNpb24i
OiAiMjAuMC40IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9qZXN0LXJ1bnRpbWUvLS9qZXN0LXJ1bnRpbWUtMjAuMC40LnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtb3NnQ0laeENBL2RVM3hRRTVKQVlZV25SSk5nPSIsCisgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJhYmVsLWNvcmUiOiAiNi4yNS4w
IiwKKyAgICAgICAgImJhYmVsLWplc3QiOiAiMjAuMC4zIiwKKyAgICAgICAgImJhYmVsLXBsdWdp
bi1pc3RhbmJ1bCI6ICI0LjEuNCIsCisgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAgICAg
ICJjb252ZXJ0LXNvdXJjZS1tYXAiOiAiMS41LjAiLAorICAgICAgICAiZ3JhY2VmdWwtZnMiOiAi
NC4xLjExIiwKKyAgICAgICAgImplc3QtY29uZmlnIjogIjIwLjAuNCIsCisgICAgICAgICJqZXN0
LWhhc3RlLW1hcCI6ICIyMC4wLjUiLAorICAgICAgICAiamVzdC1yZWdleC11dGlsIjogIjIwLjAu
MyIsCisgICAgICAgICJqZXN0LXJlc29sdmUiOiAiMjAuMC40IiwKKyAgICAgICAgImplc3QtdXRp
bCI6ICIyMC4wLjMiLAorICAgICAgICAianNvbi1zdGFibGUtc3RyaW5naWZ5IjogIjEuMC4xIiwK
KyAgICAgICAgIm1pY3JvbWF0Y2giOiAiMi4zLjExIiwKKyAgICAgICAgInN0cmlwLWJvbSI6ICIz
LjAuMCIsCisgICAgICAgICJ5YXJncyI6ICI3LjEuMCIKKyAgICAgIH0sCisgICAgICAiZGVwZW5k
ZW5jaWVzIjogeworICAgICAgICAic3RyaXAtYm9tIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjMuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvc3RyaXAtYm9tLy0vc3RyaXAtYm9tLTMuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0
eSI6ICJzaGExLUl6VEJqcHgxbjN2ZFZ2M3ZmcHJqMVlqbWp0TT0iLAogICAgICAgICAgICJkZXYi
OiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJvcGVuIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMC41IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9LAorICAgICJqZXN0LXNuYXBzaG90IjogeworICAgICAgInZlcnNpb24iOiAiMjAu
MC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qZXN0
LXNuYXBzaG90Ly0vamVzdC1zbmFwc2hvdC0yMC4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1XNFIrR3RzYVRaQ0ZLbitmRWxDRzRZZkhaV1k9IiwKKyAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAorICAgICAg
ICAiamVzdC1kaWZmIjogIjIwLjAuMyIsCisgICAgICAgICJqZXN0LW1hdGNoZXItdXRpbHMiOiAi
MjAuMC4zIiwKKyAgICAgICAgImplc3QtdXRpbCI6ICIyMC4wLjMiLAorICAgICAgICAibmF0dXJh
bC1jb21wYXJlIjogIjEuNC4wIiwKKyAgICAgICAgInByZXR0eS1mb3JtYXQiOiAiMjAuMC4zIgor
ICAgICAgfQorICAgIH0sCisgICAgImplc3QtdXRpbCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIw
LjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvamVz
dC11dGlsLy0vamVzdC11dGlsLTIwLjAuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LURBZjMyQTJDOU9XbWZHK0xuRC9uOWx6OU1xMD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAgICAgICJncmFj
ZWZ1bC1mcyI6ICI0LjEuMTEiLAorICAgICAgICAiamVzdC1tZXNzYWdlLXV0aWwiOiAiMjAuMC4z
IiwKKyAgICAgICAgImplc3QtbW9jayI6ICIyMC4wLjMiLAorICAgICAgICAiamVzdC12YWxpZGF0
ZSI6ICIyMC4wLjMiLAorICAgICAgICAibGV2ZW4iOiAiMi4xLjAiLAorICAgICAgICAibWtkaXJw
IjogIjAuNS4xIgorICAgICAgfQorICAgIH0sCisgICAgImplc3QtdmFsaWRhdGUiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIyMC4wLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2plc3QtdmFsaWRhdGUvLS9qZXN0LXZhbGlkYXRlLTIwLjAuMy50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLTBNL1IzazlYbnltRWhKSmNLQStQSFpUc1BLcz0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjaGFsayI6
ICIxLjEuMyIsCisgICAgICAgICJqZXN0LW1hdGNoZXItdXRpbHMiOiAiMjAuMC4zIiwKKyAgICAg
ICAgImxldmVuIjogIjIuMS4wIiwKKyAgICAgICAgInByZXR0eS1mb3JtYXQiOiAiMjAuMC4zIgor
ICAgICAgfQorICAgIH0sCisgICAgImpzLWJhc2U2NCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIu
MS45IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qcy1i
YXNlNjQvLS9qcy1iYXNlNjQtMi4xLjkudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS04
T2dLNERta3ZXVkxYeWdmeVQ4RXFSU24vTTQ9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwK
KyAgICAianMtdG9rZW5zIjogeworICAgICAgInZlcnNpb24iOiAiMy4wLjIiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2pzLXRva2Vucy8tL2pzLXRva2Vu
cy0zLjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLW1HYmZPVkVDRXc0NDkvbVd2
T3RsUkRJSndscz0iCisgICAgfSwKKyAgICAianMteWFtbCI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjMuNy4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9q
cy15YW1sLy0vanMteWFtbC0zLjcuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVhK
WjkzWU42bS8zS1h5M29RbE9yNktIQU80QT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICJhcmdwYXJzZSI6ICIxLjAuOSIsCisgICAgICAgICJlc3By
aW1hIjogIjIuNy4zIgorICAgICAgfQorICAgIH0sCisgICAgImpzYm4iOiB7CisgICAgICAidmVy
c2lvbiI6ICIwLjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvanNibi8tL2pzYm4tMC4xLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1w
ZVpVd3VXaTNyWHlBZGxzNzd5b0RBN3k5Uk09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
Im9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgImpzY2hhcmRldCI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuNS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9qc2NoYXJkZXQvLS9qc2NoYXJkZXQtMS41LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhNTEyLXZFMmhUMUQwSExaQ0xMY2xmQlNma2ZUVGVkaFZqMGZ1YkhwSkJIS3d3VVdYMG5T
YmhQQWZrK1NHOXJUWDk1QllObWF1OHJHRmZDZWFUNlQ1T1cxQzJBPT0iLAorICAgICAgImRldiI6
IHRydWUKKyAgICB9LAorICAgICJqc2RvbSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjkuMTIuMCIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvanNkb20vLS9q
c2RvbS05LjEyLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS02TVZHLy95d2JBRFVn
enlvUkJEKzEvaWdsOVE9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAiYWJhYiI6ICIxLjAuMyIsCisgICAgICAgICJhY29ybiI6ICI0LjAuMTMiLAor
ICAgICAgICAiYWNvcm4tZ2xvYmFscyI6ICIzLjEuMCIsCisgICAgICAgICJhcnJheS1lcXVhbCI6
ICIxLjAuMCIsCisgICAgICAgICJjb250ZW50LXR5cGUtcGFyc2VyIjogIjEuMC4xIiwKKyAgICAg
ICAgImNzc29tIjogIjAuMy4yIiwKKyAgICAgICAgImNzc3N0eWxlIjogIjAuMi4zNyIsCisgICAg
ICAgICJlc2NvZGVnZW4iOiAiMS44LjEiLAorICAgICAgICAiaHRtbC1lbmNvZGluZy1zbmlmZmVy
IjogIjEuMC4xIiwKKyAgICAgICAgIm53bWF0Y2hlciI6ICIxLjQuMSIsCisgICAgICAgICJwYXJz
ZTUiOiAiMS41LjEiLAorICAgICAgICAicmVxdWVzdCI6ICIyLjgxLjAiLAorICAgICAgICAic2F4
IjogIjEuMi40IiwKKyAgICAgICAgInN5bWJvbC10cmVlIjogIjMuMi4yIiwKKyAgICAgICAgInRv
dWdoLWNvb2tpZSI6ICIyLjMuMiIsCisgICAgICAgICJ3ZWJpZGwtY29udmVyc2lvbnMiOiAiNC4w
LjIiLAorICAgICAgICAid2hhdHdnLWVuY29kaW5nIjogIjEuMC4xIiwKKyAgICAgICAgIndoYXR3
Zy11cmwiOiAiNC44LjAiLAorICAgICAgICAieG1sLW5hbWUtdmFsaWRhdG9yIjogIjIuMC4xIgor
ICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJhY29ybiI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICI0LjAuMTMiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hY29ybi8tL2Fjb3JuLTQuMC4xMy50Z3oiLAorICAgICAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1FRlNWcmxOaDFwZTlHVnlDVVpMaHJYOGxONGM9IiwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAianNl
c2MiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjUuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvanNlc2MvLS9qc2VzYy0wLjUuMC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLTU5N21ialhXL0JiM0VQNlIxYzlwOXc4SWtSMD0iLAorICAgICAg
ImRldiI6IHRydWUKKyAgICB9LAorICAgICJqc29uLWxvYWRlciI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjAuNS43IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9qc29uLWxvYWRlci8tL2pzb24tbG9hZGVyLTAuNS43LnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTUxMi1RTFBzOERqN2xuZjNlM1FZUzF6a0NvKzRad3FPaUY5ZC9uWm5Zb3pUSVN4WFdD
Zk5zOXl1a3k1ckp3NC9XMzRzN1BPYU5sYlptUUdhQjVOaVhDYlA0dz09IiwKKyAgICAgICJkZXYi
OiB0cnVlCisgICAgfSwKKyAgICAianNvbi1zY2hlbWEiOiB7CisgICAgICAidmVyc2lvbiI6ICIw
LjIuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvanNv
bi1zY2hlbWEvLS9qc29uLXNjaGVtYS0wLjIuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLXRJRElrdVdhTHdXVlRPY252VDhxVG9ndm5oTT0iLAorICAgICAgImRldiI6IHRydWUKKyAg
ICB9LAorICAgICJqc29uLXNjaGVtYS10cmF2ZXJzZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAu
My4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qc29u
LXNjaGVtYS10cmF2ZXJzZS8tL2pzb24tc2NoZW1hLXRyYXZlcnNlLTAuMy4xLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtTkpwdFJNVTZVZDZKdEFnRnhkWGxtMEY5TTBBPSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImpzb24tc3RhYmxlLXN0cmluZ2lmeSI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9qc29uLXN0YWJsZS1zdHJpbmdpZnkvLS9qc29uLXN0YWJsZS1zdHJpbmdp
ZnktMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1tbldkT2NYeS8xQS8xVEFH
UnUxRVg0akUrYTg9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAianNvbmlmeSI6ICIwLjAuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJqc29uLXN0
cmluZ2lmeS1zYWZlIjogeworICAgICAgInZlcnNpb24iOiAiNS4wLjEiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2pzb24tc3RyaW5naWZ5LXNhZmUvLS9q
c29uLXN0cmluZ2lmeS1zYWZlLTUuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
RXBhaTFZL1VYeG1nOXM0QjFsY0I0c2MxdHVzPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0s
CisgICAgImpzb24zIjogeworICAgICAgInZlcnNpb24iOiAiMy4zLjIiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2pzb24zLy0vanNvbjMtMy4zLjIudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1QQVEwZEQzNVBpOWNRcTduc1p2TFNEVjE5T0U9
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAianNvbjUiOiB7CisgICAgICAidmVy
c2lvbiI6ICIwLjUuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvanNvbjUvLS9qc29uNS0wLjUuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LUhxM25yTUFTQTByWVRpT1dkbjZ0bjZWSldDRT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9
LAorICAgICJqc29uZmlsZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qc29uZmlsZS8tL2pzb25maWxl
LTMuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcGV6RzlsOVQ5bUxFUVZ4MmRh
QXpIUW1TN0dZPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS4xMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJqc29u
aWZ5IjogeworICAgICAgInZlcnNpb24iOiAiMC4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2pzb25pZnkvLS9qc29uaWZ5LTAuMC4wLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtTEhTMjdrSFpQS1ViZTFxdTZQVURZeDBsS25NPSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImpzcHJpbSI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjEuNC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9qc3ByaW0vLS9qc3ByaW0tMS40LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1N
VDVtdkI1Y3dHNURpOEczU1p3dVhGYXN0cUk9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAiYXNzZXJ0LXBsdXMiOiAiMS4wLjAiLAorICAgICAgICAi
ZXh0c3ByaW50ZiI6ICIxLjMuMCIsCisgICAgICAgICJqc29uLXNjaGVtYSI6ICIwLjIuMyIsCisg
ICAgICAgICJ2ZXJyb3IiOiAiMS4xMC4wIgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMi
OiB7CisgICAgICAgICJhc3NlcnQtcGx1cyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAu
MCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fz
c2VydC1wbHVzLy0vYXNzZXJ0LXBsdXMtMS4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtOFM0UFBGMTNzTEhOMlJScFF1VHBiQjVOMVNVPSIsCiAgICAgICAgICAgImRldiI6
IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgIm9wbiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICI0LjAuMiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICB9CisgICAgICB9
CisgICAgfSwKKyAgICAianN4LWFzdC11dGlscyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuNC4x
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qc3gtYXN0
LXV0aWxzLy0vanN4LWFzdC11dGlscy0xLjQuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLU9HY2hQbzNYbS9IbzhqQU1EUHdlK3hnc0RmRT0iLAorICAgICAgImRldiI6IHRydWUKKyAg
ICB9LAorICAgICJraW5kLW9mIjogeworICAgICAgInZlcnNpb24iOiAiMy4yLjIiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2tpbmQtb2YvLS9raW5kLW9m
LTMuMi4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTWVvaHB6UzZ1YnV3OHlSbTJK
T3VwUjVLUEdRPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImlzLWJ1ZmZlciI6ICIxLjEuNSIKKyAgICAgIH0KKyAgICB9LAorICAgICJrbGF3Ijog
eworICAgICAgInZlcnNpb24iOiAiMS4zLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2tsYXcvLS9rbGF3LTEuMy4xLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtUUloRE8wYXpzYm9sblhoNFhZNlc5enVnSkRrPSIsCisgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS4x
MSIKKyAgICAgIH0KKyAgICB9LAorICAgICJsYXRlc3QtdmVyc2lvbiI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjIuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9sYXRlc3QtdmVyc2lvbi8tL2xhdGVzdC12ZXJzaW9uLTIuMC4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtVnZqV0U1WWdoSHVBRi9qeDlOZU9JUk1rRm9zPSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInBhY2thZ2UtanNvbiI6
ICIyLjQuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJsYXp5LWNhY2hlIjogeworICAgICAgInZl
cnNpb24iOiAiMS4wLjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2xhenktY2FjaGUvLS9sYXp5LWNhY2hlLTEuMC40LnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtb2RlUHc2VUVkTXVBaEYwN08yNGRwSnBFYm80PSIsCisgICAgICAiZGV2Ijog
dHJ1ZQorICAgIH0sCisgICAgImxhenktcmVxIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjAi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xhenktcmVx
Ly0vbGF6eS1yZXEtMS4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS12YTYrclRE
NDJDUURuT0RPRkoxTnFnZTZINnc9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAi
bGNpZCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sY2lkLy0vbGNpZC0xLjAuMC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLU1Jck1yNkM4U0RvNFo3UzI4cmxRWWxIUnVEVT0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJpbnZlcnQta3YiOiAi
MS4wLjAiCisgICAgICB9CisgICAgfSwKKyAgICAibGV2ZW4iOiB7CisgICAgICAidmVyc2lvbiI6
ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
bGV2ZW4vLS9sZXZlbi0yLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXd1ZXA5
M0lKVGU2ZE5DQXE2S3pPUm9lSFZZQT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJsZXZuIjogeworICAgICAgInZlcnNpb24iOiAiMC4zLjAiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xldm4vLS9sZXZuLTAuMy4wLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtT3dtU1R0K2ZDRHdFa1AzVXdMeEVJZUJIWk80PSIsCisgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInByZWx1ZGUtbHMi
OiAiMS4xLjIiLAorICAgICAgICAidHlwZS1jaGVjayI6ICIwLjMuMiIKKyAgICAgIH0KKyAgICB9
LAorICAgICJsb2FkLWpzb24tZmlsZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2FkLWpzb24tZmls
ZS8tL2xvYWQtanNvbi1maWxlLTEuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
bFdrRmNJMVl0THEwd2lZYkJQV2ZNY21UZE1BPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS4xMSIsCisgICAgICAg
ICJwYXJzZS1qc29uIjogIjIuMi4wIiwKKyAgICAgICAgInBpZnkiOiAiMi4zLjAiLAorICAgICAg
ICAicGlua2llLXByb21pc2UiOiAiMi4wLjEiLAorICAgICAgICAic3RyaXAtYm9tIjogIjIuMC4w
IgorICAgICAgfQorICAgIH0sCisgICAgImxvYWRlci1mcy1jYWNoZSI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9sb2FkZXItZnMtY2FjaGUvLS9sb2FkZXItZnMtY2FjaGUtMS4wLjEudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1WdUMvQ0wyWENMSnFkbHRvVUpoQXlON0ovYnc9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZmluZC1jYWNoZS1k
aXIiOiAiMC4xLjEiLAorICAgICAgICAibWtkaXJwIjogIjAuNS4xIgorICAgICAgfSwKKyAgICAg
ICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJmaW5kLWNhY2hlLWRpciI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjEuMSIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2ZpbmQtY2FjaGUtZGlyLy0vZmluZC1jYWNoZS1kaXItMC4xLjEudGd6
IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEteU43NjVYeUtVcWluaFBuakhGZkhRdW1U
b0xrPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewot
ICAgICAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjAiLAotICAgICAgICAgICAgInBpbmtp
ZS1wcm9taXNlIjogIjIuMC4xIgorICAgICAgICAgICAgImNvbW1vbmRpciI6ICIxLjAuMSIsCisg
ICAgICAgICAgICAibWtkaXJwIjogIjAuNS4xIiwKKyAgICAgICAgICAgICJwa2ctZGlyIjogIjEu
MC4wIgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgIm9wdGltaXN0IjogewotICAg
ICAgICAgICJ2ZXJzaW9uIjogIjAuNi4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICJmaW5kLXVwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKKyAgICAg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmluZC11cC8tL2Zp
bmQtdXAtMS4xLjIudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYXk2WUlyR2l6
Z3BncTJUV0VPeksxVHl5VFE4PSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAg
InJlcXVpcmVzIjogewotICAgICAgICAgICAgIm1pbmltaXN0IjogIjAuMC4xMCIsCi0gICAgICAg
ICAgICAid29yZHdyYXAiOiAiMC4wLjMiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAiZGVwZW5k
ZW5jaWVzIjogewotICAgICAgICAgICAgIm1pbmltaXN0IjogewotICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIwLjAuMTAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgIndvcmR3cmFw
IjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuMyIsCi0gICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICJwYXRoLWV4aXN0cyI6ICIyLjEuMCIsCisgICAgICAgICAgICAicGlua2ll
LXByb21pc2UiOiAiMi4wLjEiCiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAib3B0
aW9uYXRvciI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjguMiIsCi0gICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAicGF0aC1leGlzdHMiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMi4xLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9wYXRoLWV4aXN0cy8tL3BhdGgtZXhpc3RzLTIuMS4wLnRneiIsCisgICAgICAgICAg
ImludGVncml0eSI6ICJzaGExLUQrdHNaUEQ4VVkyYWRVM1Y3N1lzY0NKMkgwcz0iLAogICAgICAg
ICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJk
ZWVwLWlzIjogIjAuMS4zIiwKLSAgICAgICAgICAgICJmYXN0LWxldmVuc2h0ZWluIjogIjIuMC40
IiwKLSAgICAgICAgICAgICJsZXZuIjogIjAuMy4wIiwKLSAgICAgICAgICAgICJwcmVsdWRlLWxz
IjogIjEuMS4yIiwKLSAgICAgICAgICAgICJ0eXBlLWNoZWNrIjogIjAuMy4yIiwKLSAgICAgICAg
ICAgICJ3b3Jkd3JhcCI6ICIxLjAuMCIKKyAgICAgICAgICAgICJwaW5raWUtcHJvbWlzZSI6ICIy
LjAuMSIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJvcmlnaW5hbCI6IHsKKyAg
ICAgICAgInBrZy1kaXIiOiB7CiAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAi
cmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAidXJsLXBhcnNlIjogIjEuMC41IgotICAgICAgICAg
IH0sCi0gICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJ1cmwtcGFyc2Ui
OiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKLSAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAg
InJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICJxdWVyeXN0cmluZ2lmeSI6ICIwLjAuNCIs
Ci0gICAgICAgICAgICAgICAgInJlcXVpcmVzLXBvcnQiOiAiMS4wLjAiCi0gICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJvcy1i
cm93c2VyaWZ5IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4yIiwKLSAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAg
ICAgIm9zLWhvbWVkaXIiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAotICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAot
ICAgICAgICAib3MtbG9jYWxlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNC4wIiwKLSAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAg
ICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImxjaWQiOiAiMS4wLjAiCi0gICAgICAgICAg
fQotICAgICAgICB9LAotICAgICAgICAib3MtdG1wZGlyIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInBha28iOiB7Ci0gICAgICAgICAgInZlcnNpb24i
OiAiMC4yLjkiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2Ijog
dHJ1ZQotICAgICAgICB9LAotICAgICAgICAicGFyYW0tY2FzZSI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIyLjEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wa2ctZGlyLy0vcGtnLWRpci0x
LjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1la3RRaW8xYnN0WXAxRWNG
Yi9UcHlURk04OVE9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWly
ZXMiOiB7Ci0gICAgICAgICAgICAibm8tY2FzZSI6ICIyLjMuMCIKKyAgICAgICAgICAgICJmaW5k
LXVwIjogIjEuMS4yIgogICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInBhcnNlLWds
b2IiOiB7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJsb2FkZXItcnVubmVyIjog
eworICAgICAgInZlcnNpb24iOiAiMi4zLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2xvYWRlci1ydW5uZXIvLS9sb2FkZXItcnVubmVyLTIuMy4wLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtOUlLdXFDMVVQZ2VTRndEVnBHN3liOXJHdUtJ
PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImxvYWRlci11dGlscyI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9sb2FkZXItdXRpbHMvLS9sb2FkZXItdXRpbHMtMS4xLjAudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS15WXJ2U0l2TTdhTC90ZUxlWkcxcWRVUXA5YzA9IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmlnLmpzIjog
IjMuMS4zIiwKKyAgICAgICAgImVtb2ppcy1saXN0IjogIjIuMS4wIiwKKyAgICAgICAgImpzb241
IjogIjAuNS4xIgorICAgICAgfQorICAgIH0sCisgICAgImxvY2F0ZS1wYXRoIjogeworICAgICAg
InZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2xvY2F0ZS1wYXRoLy0vbG9jYXRlLXBhdGgtMi4wLjAudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1LMWFMSmw3c2xFeHRuQTNwdzl1N3lnTlV6WTQ9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAicC1sb2NhdGUiOiAiMi4w
LjAiLAorICAgICAgICAicGF0aC1leGlzdHMiOiAiMy4wLjAiCisgICAgICB9CisgICAgfSwKKyAg
ICAibG9kYXNoIjogeworICAgICAgInZlcnNpb24iOiAiNC4xNy40IiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2gvLS9sb2Rhc2gtNC4xNy40LnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZUNBNlRSd3lpdUhZYmNwa1lPTnB0WDlBVmE0
PSIKKyAgICB9LAorICAgICJsb2Rhc2gtZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjE3LjQi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC1l
cy8tL2xvZGFzaC1lcy00LjE3LjQudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0zTUhY
VlM0VkNnWkFCenVweXpIWER3TXBVT2M9IgorICAgIH0sCisgICAgImxvZGFzaC5fcmVpbnRlcnBv
bGF0ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2guX3JlaW50ZXJwb2xhdGUvLS9sb2Rhc2gu
X3JlaW50ZXJwb2xhdGUtMy4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ETTh0
aVJacThEczJZOGVXVTR0MXJHNFJUWjA9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAg
ICAibG9kYXNoLmFzc2lnbmluIjogeworICAgICAgInZlcnNpb24iOiAiNC4yLjAiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5hc3NpZ25pbi8t
L2xvZGFzaC5hc3NpZ25pbi00LjIuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXVv
MzErNFFlc0tQb0JFSXlzT0pqcU54cUtLST0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAor
ICAgICJsb2Rhc2guYmluZCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMi4xIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2guYmluZC8tL2xvZGFz
aC5iaW5kLTQuMi4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZXVNQmZwT1dJcXd4
dDlmWDNMR3pUYkZwRFRVPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImxvZGFz
aC5jYW1lbGNhc2UiOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjMuMCIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLmNhbWVsY2FzZS8tL2xvZGFz
aC5jYW1lbGNhc2UtNC4zLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1zb3FtS0lv
cm44WlJBMXgzRWZaYXRoa0RNYVk9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAi
bG9kYXNoLmNvbmQiOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjUuMiIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLmNvbmQvLS9sb2Rhc2guY29u
ZC00LjUuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTlIR2gya2hyNWc5cXVWWFJj
UlZTUGRIU1ZkVT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb2Rhc2guZGVm
YXVsdHMiOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjIuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLmRlZmF1bHRzLy0vbG9kYXNoLmRlZmF1
bHRzLTQuMi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMEpGNGNXLytwTjNwNWZ0
N04vYndnQ0owV0F3PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImxvZGFzaC5m
aWx0ZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjYuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLmZpbHRlci8tL2xvZGFzaC5maWx0ZXIt
NC42LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ab3NkU1lGZ091SE1XbStuWUJR
K1NBdE1TczQ9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibG9kYXNoLmZsYXR0
ZW4iOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjQuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLmZsYXR0ZW4vLS9sb2Rhc2guZmxhdHRlbi00
LjQuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTh4d2lJbHFXTXRLNytPU3QyKzhr
Q3FkbHBoOD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb2Rhc2guZm9yZWFj
aCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuNS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2guZm9yZWFjaC8tL2xvZGFzaC5mb3JlYWNoLTQu
NS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtR21vMTZzNUFFb0RIOEczZDdEVVdX
ckorUGxNPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImxvZGFzaC5tYXAiOiB7
CisgICAgICAidmVyc2lvbiI6ICI0LjYuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLm1hcC8tL2xvZGFzaC5tYXAtNC42LjAudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1keDdIZzU0MGM5bkV6ZUtMR1RsTU5XTDA5dE09IiwKKyAg
ICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibG9kYXNoLm1lbW9pemUiOiB7CisgICAgICAi
dmVyc2lvbiI6ICI0LjEuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvbG9kYXNoLm1lbW9pemUvLS9sb2Rhc2gubWVtb2l6ZS00LjEuMi50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLXZNYkVta0tpaEE3WmwvTWo2dHBlelJndUMvND0iLAorICAg
ICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb2Rhc2gubWVyZ2UiOiB7CisgICAgICAidmVy
c2lvbiI6ICI0LjYuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvbG9kYXNoLm1lcmdlLy0vbG9kYXNoLm1lcmdlLTQuNi4wLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtYVloTG9VU3NNLzVwbHplbUNHM3YrdDBQaWNVPSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgImxvZGFzaC5waWNrIjogeworICAgICAgInZlcnNpb24iOiAi
NC40LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xv
ZGFzaC5waWNrLy0vbG9kYXNoLnBpY2stNC40LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1VdkJXRVAvNTN0UWlZUlJCN1IvQkk2QXdBYk09IiwKKyAgICAgICJkZXYiOiB0cnVlCisg
ICAgfSwKKyAgICAibG9kYXNoLnJlZHVjZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuNi4wIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2gucmVk
dWNlLy0vbG9kYXNoLnJlZHVjZS00LjYuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LThhdHJnNUtaclVqM2hLdS9SMldXOER1UlRUcz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9
LAorICAgICJsb2Rhc2gucmVqZWN0IjogeworICAgICAgInZlcnNpb24iOiAiNC42LjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5yZWplY3Qv
LS9sb2Rhc2gucmVqZWN0LTQuNi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZ05a
SkxjRkhDR1M3OVlOVE8yVWZRcW4xSkJVPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisg
ICAgImxvZGFzaC5zb21lIjogeworICAgICAgInZlcnNpb24iOiAiNC42LjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5zb21lLy0vbG9kYXNo
LnNvbWUtNC42LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1HN256Rk85cmk2M3RF
N1ZKRnBzcWxGNjJqazA9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibG9kYXNo
LnRlbXBsYXRlIjogeworICAgICAgInZlcnNpb24iOiAiNC40LjAiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC50ZW1wbGF0ZS8tL2xvZGFzaC50
ZW1wbGF0ZS00LjQuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTV6b0RoY2cxVlpG
MGJnSUxtV2VjYVE1bys2QT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJsb2Rhc2guX3JlaW50ZXJwb2xhdGUiOiAiMy4wLjAiLAorICAgICAgICAi
bG9kYXNoLnRlbXBsYXRlc2V0dGluZ3MiOiAiNC4xLjAiCisgICAgICB9CisgICAgfSwKKyAgICAi
bG9kYXNoLnRlbXBsYXRlc2V0dGluZ3MiOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjEuMCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLnRlbXBs
YXRlc2V0dGluZ3MvLS9sb2Rhc2gudGVtcGxhdGVzZXR0aW5ncy00LjEuMC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLUswMU9sYnBFRFpGZjhJdkltZVJWTm1aeE14WT0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJsb2Rhc2guX3JlaW50
ZXJwb2xhdGUiOiAiMy4wLjAiCisgICAgICB9CisgICAgfSwKKyAgICAibG9kYXNoLnVuaXEiOiB7
CisgICAgICAidmVyc2lvbiI6ICI0LjUuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLnVuaXEvLS9sb2Rhc2gudW5pcS00LjUuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLTBDSlRjNjYyVXEzQnZJTGtsRk01cUVKMVIzTT0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb2dsZXZlbCI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuNC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9sb2dsZXZlbC8tL2xvZ2xldmVsLTEuNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtbGJPRCtSbzhKMWI5U3JDVFpuNURDUllmSzgwPSIsCisgICAgICAiZGV2IjogdHJ1ZQor
ICAgIH0sCisgICAgImxvbmdlc3QiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9uZ2VzdC8tL2xvbmdl
c3QtMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1NS0N5MmpqM04zRG9LVW9O
SXVaaVh0ZDlBSmM9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibG9vc2UtZW52
aWZ5IjogeworICAgICAgInZlcnNpb24iOiAiMS4zLjEiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvb3NlLWVudmlmeS8tL2xvb3NlLWVudmlmeS0xLjMu
MS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTBhaXRNL3FjNE9jVDFsL2RDc2kzU05S
NHlFZz0iLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAianMtdG9rZW5zIjogIjMuMC4y
IgorICAgICAgfQorICAgIH0sCisgICAgImxvdWQtcmVqZWN0aW9uIjogeworICAgICAgInZlcnNp
b24iOiAiMS42LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2xvdWQtcmVqZWN0aW9uLy0vbG91ZC1yZWplY3Rpb24tMS42LjAudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1XMGI0QVVmdDdsZUljUENHMEVnaHo1bU9WUjg9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY3VycmVudGx5LXVuaGFu
ZGxlZCI6ICIwLjQuMSIsCisgICAgICAgICJzaWduYWwtZXhpdCI6ICIzLjAuMiIKKyAgICAgIH0K
KyAgICB9LAorICAgICJsb3dlci1jYXNlIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjQiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvd2VyLWNhc2Uv
LS9sb3dlci1jYXNlLTEuMS40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbWl5cjBi
bm80SzZaT2t2MzFZZGNPY1F1anF3PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAg
Imxvd2VyY2FzZS1rZXlzIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvd2VyY2FzZS1rZXlzLy0vbG93
ZXJjYXNlLWtleXMtMS4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1Uak5tczU1
L1ZGZmpYeE1rdmZiNGpRdjhjd1k9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAi
bHJ1LWNhY2hlIjogeworICAgICAgInZlcnNpb24iOiAiNC4xLjEiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xydS1jYWNoZS8tL2xydS1jYWNoZS00LjEu
MS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItcTRzcGU0S1Rmc0FTMVNVSExPMHd6
OFFpeWYxK3ZNSUFncFJZaW9GWURNTnFLZkhRYmcrQVZESDNpNGZ2cGw3MS9QMUwwZEJsK2ZRaStQ
MzdVWWYwZXc9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgInBzZXVkb21hcCI6ICIxLjAuMiIsCisgICAgICAgICJ5YWxsaXN0IjogIjIuMS4yIgor
ICAgICAgfQorICAgIH0sCisgICAgIm1hY2FkZHJlc3MiOiB7CisgICAgICAidmVyc2lvbiI6ICIw
LjIuOCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbWFj
YWRkcmVzcy8tL21hY2FkZHJlc3MtMC4yLjgudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1XUVRjVTN3NTdHMisvcTZRSXljVFg2aFJIeEk9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAg
fSwKKyAgICAibWFrZS1kaXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbWFrZS1kaXIvLS9tYWtlLWRp
ci0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWw2QVJkUjZSM1lmUHJlOVln
eTY3QkpOdDZYZz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJwaWZ5IjogIjIuMy4wIgorICAgICAgfQorICAgIH0sCisgICAgIm1ha2VlcnJvciI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbWFrZWVycm9yLy0vbWFrZWVycm9yLTEuMC4xMS50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLTRCcGNrUW55cjNsbURrNkxsWWQ1QVlUMXFXdz0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJ0bXBsIjog
IjEuMC40IgorICAgICAgfQorICAgIH0sCisgICAgIm1hcC1vYmoiOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvbWFwLW9iai8tL21hcC1vYmotMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS0yVFBPdVNCZGdyM1BTSWIyZEN2Y0swM3FGRzA9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAg
fSwKKyAgICAibWF0aC1leHByZXNzaW9uLWV2YWx1YXRvciI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjEuMi4xNyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
bWF0aC1leHByZXNzaW9uLWV2YWx1YXRvci8tL21hdGgtZXhwcmVzc2lvbi1ldmFsdWF0b3ItMS4y
LjE3LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtM29HZjI4MkUzTTJQcmxuR3JyZVdG
Ym5TWnF3PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm1kNS5qcyI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjEuMy40IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9tZDUuanMvLS9tZDUuanMtMS4zLjQudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS02YjI5NlVvZ3Bhd1lzRU5BL0ZkazFiQ2RrQjA9IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaGFzaC1iYXNlIjogIjMuMC40IiwK
KyAgICAgICAgImluaGVyaXRzIjogIjIuMC4zIgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNp
ZXMiOiB7CisgICAgICAgICJoYXNoLWJhc2UiOiB7CiAgICAgICAgICAgInZlcnNpb24iOiAiMy4w
LjQiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaGFzaC1iYXNlLy0vaGFzaC1iYXNlLTMuMC40LnRn
eiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLVg4aG9hRWZzMXpTWlFETVpwckNqOC9h
dVNSZz0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsK
LSAgICAgICAgICAgICJnbG9iLWJhc2UiOiAiMC4zLjAiLAotICAgICAgICAgICAgImlzLWRvdGZp
bGUiOiAiMS4wLjIiLAotICAgICAgICAgICAgImlzLWV4dGdsb2IiOiAiMS4wLjAiLAotICAgICAg
ICAgICAgImlzLWdsb2IiOiAiMi4wLjEiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAg
ICAicGFyc2UtanNvbiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjIuMCIsCi0gICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJlcnJvci1leCI6ICIxLjMuMCIKLSAgICAgICAgICB9
Ci0gICAgICAgIH0sCi0gICAgICAgICJwYXJzZTUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAi
MS41LjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1
ZQotICAgICAgICB9LAotICAgICAgICAicGFyc2V1cmwiOiB7Ci0gICAgICAgICAgInZlcnNpb24i
OiAiMS4zLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2Ijog
dHJ1ZQotICAgICAgICB9LAotICAgICAgICAicGFzY2FsLWNhc2UiOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMi4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiY2FtZWwt
Y2FzZSI6ICIzLjAuMCIsCi0gICAgICAgICAgICAidXBwZXItY2FzZS1maXJzdCI6ICIxLjEuMiIK
KyAgICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICAgICAic2FmZS1idWZm
ZXIiOiAiNS4xLjEiCiAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAicGF0aC1icm93
c2VyaWZ5IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC4wIiwKLSAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJtZWRpYS10eXBl
ciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMy4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9tZWRpYS10eXBlci8tL21lZGlhLXR5cGVyLTAuMy4wLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaHhEWHJ3cW1KdmovK2h6Z0FXaFVVbU1sVjBn
PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm1lbSI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9tZW0vLS9tZW0tMS4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1YdDFT
dElYS0haQVA1a2lWVUZPWm9OK2tYM1k9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAibWltaWMtZm4iOiAiMS4xLjAiCisgICAgICB9CisgICAgfSwK
KyAgICAibWVtb3J5LWZzIjogeworICAgICAgInZlcnNpb24iOiAiMC40LjEiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21lbW9yeS1mcy8tL21lbW9yeS1m
cy0wLjQuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLU9wb2d1RVlsSStSSHo3eCtp
N2dPMW1lL3hWST0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJlcnJubyI6ICIwLjEuNCIsCisgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiAiMi4z
LjMiCisgICAgICB9CisgICAgfSwKKyAgICAibWVvdyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMu
Ny4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9tZW93
Ly0vbWVvdy0zLjcuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWNzdG1pMEpTS0Nr
S3UvcUZhSkpZY3dpb0Fmcz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJjYW1lbGNhc2Uta2V5cyI6ICIyLjEuMCIsCisgICAgICAgICJkZWNhbWVs
aXplIjogIjEuMi4wIiwKKyAgICAgICAgImxvdWQtcmVqZWN0aW9uIjogIjEuNi4wIiwKKyAgICAg
ICAgIm1hcC1vYmoiOiAiMS4wLjEiLAorICAgICAgICAibWluaW1pc3QiOiAiMS4yLjAiLAorICAg
ICAgICAibm9ybWFsaXplLXBhY2thZ2UtZGF0YSI6ICIyLjQuMCIsCisgICAgICAgICJvYmplY3Qt
YXNzaWduIjogIjQuMS4xIiwKKyAgICAgICAgInJlYWQtcGtnLXVwIjogIjEuMC4xIiwKKyAgICAg
ICAgInJlZGVudCI6ICIxLjAuMCIsCisgICAgICAgICJ0cmltLW5ld2xpbmVzIjogIjEuMC4wIgor
ICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJtaW5pbWlzdCI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21pbmltaXN0Ly0vbWluaW1pc3QtMS4yLjAudGd6IiwK
KyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbzFBSXNnOUJPRDdzSDdrVTlNMWQ5NW9tUW9R
PSIsCiAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInBhdGgtY2Fz
ZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsK
LSAgICAgICAgICAgICJuby1jYXNlIjogIjIuMy4wIgotICAgICAgICAgIH0KLSAgICAgICAgfSwK
LSAgICAgICAgInBhdGgtZXhpc3RzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwK
LSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAg
ICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgInBpbmtpZS1wcm9taXNlIjogIjIuMC4x
IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgIm1lcmdlIjogeworICAgICAgInZl
cnNpb24iOiAiMS4yLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL21lcmdlLy0vbWVyZ2UtMS4yLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1kVEhqblVsSndvR21hNHhhYmdKbDZMQllsTm89IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAg
fSwKKyAgICAibWVyZ2UtZGVzY3JpcHRvcnMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbWVyZ2UtZGVz
Y3JpcHRvcnMvLS9tZXJnZS1kZXNjcmlwdG9ycy0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLXNBcXFWVzNZdEVWb0ZRN0owYmxUOC9rTXUyRT0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJtZXRob2RzIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21ldGhvZHMvLS9t
ZXRob2RzLTEuMS4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVlNtazFuWlVFMDdj
eFNabVZvTmJENFVhL080PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm1pY3Jv
bWF0Y2giOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjMuMTEiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21pY3JvbWF0Y2gvLS9taWNyb21hdGNoLTIuMy4x
MS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWhtZDhsOUZ5Q3pZME1kQk5EUlVwTzlP
TUZXVT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJhcnItZGlmZiI6ICIyLjAuMCIsCisgICAgICAgICJhcnJheS11bmlxdWUiOiAiMC4yLjEiLAor
ICAgICAgICAiYnJhY2VzIjogIjEuOC41IiwKKyAgICAgICAgImV4cGFuZC1icmFja2V0cyI6ICIw
LjEuNSIsCisgICAgICAgICJleHRnbG9iIjogIjAuMy4yIiwKKyAgICAgICAgImZpbGVuYW1lLXJl
Z2V4IjogIjIuMC4xIiwKKyAgICAgICAgImlzLWV4dGdsb2IiOiAiMS4wLjAiLAorICAgICAgICAi
aXMtZ2xvYiI6ICIyLjAuMSIsCisgICAgICAgICJraW5kLW9mIjogIjMuMi4yIiwKKyAgICAgICAg
Im5vcm1hbGl6ZS1wYXRoIjogIjIuMS4xIiwKKyAgICAgICAgIm9iamVjdC5vbWl0IjogIjIuMC4x
IiwKKyAgICAgICAgInBhcnNlLWdsb2IiOiAiMy4wLjQiLAorICAgICAgICAicmVnZXgtY2FjaGUi
OiAiMC40LjQiCisgICAgICB9CisgICAgfSwKKyAgICAibWlsbGVyLXJhYmluIjogeworICAgICAg
InZlcnNpb24iOiAiNC4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL21pbGxlci1yYWJpbi8tL21pbGxlci1yYWJpbi00LjAuMC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLVNtTDdIVUtUUEFWWU9ZTDB4eGIyKzU1c2JUMD0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJibi5qcyI6ICI0LjEx
LjgiLAorICAgICAgICAiYnJvcmFuZCI6ICIxLjEuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJt
aW1lIjogeworICAgICAgInZlcnNpb24iOiAiMS4zLjYiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21pbWUvLS9taW1lLTEuMy42LnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtV1IyRTAyVTZhd3RLTzUzNDNscW9FSTV5NWVBPSIsCisgICAgICAi
ZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm1pbWUtZGIiOiB7CisgICAgICAidmVyc2lvbiI6ICIx
LjMwLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21p
bWUtZGIvLS9taW1lLWRiLTEuMzAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWRN
WkQyaTNaMXFSVG1aWTBaYkp0WEtmWEh3RT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAor
ICAgICJtaW1lLXR5cGVzIjogeworICAgICAgInZlcnNpb24iOiAiMi4xLjE3IiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9taW1lLXR5cGVzLy0vbWltZS10
eXBlcy0yLjEuMTcudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1DZGVqay9BK21WcDUr
SytGZTNDcDRLc1dWWG89IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAibWltZS1kYiI6ICIxLjMwLjAiCisgICAgICB9CisgICAgfSwKKyAgICAibWlt
aWMtZm4iOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbWltaWMtZm4vLS9taW1pYy1mbi0xLjEuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLTVtZDRQWkxvbmIwMEtCaTFJd3VkWXFaeXJSZz0i
LAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJtaW5pbWFsaXN0aWMtYXNzZXJ0Ijog
eworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL21pbmltYWxpc3RpYy1hc3NlcnQvLS9taW5pbWFsaXN0aWMtYXNz
ZXJ0LTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtY0N2aTNhYXpmMGcydkxQ
MTIxWmtHMlNoMDlNPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm1pbmltYWxp
c3RpYy1jcnlwdG8tdXRpbHMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbWluaW1hbGlzdGljLWNyeXB0
by11dGlscy8tL21pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHMtMS4wLjEudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS05c0FNSEFzSUlrYmx4Tm1kKzR4OENEc3JXQ289IiwKKyAgICAgICJk
ZXYiOiB0cnVlCisgICAgfSwKKyAgICAibWluaW1hdGNoIjogeworICAgICAgInZlcnNpb24iOiAi
My4wLjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21p
bmltYXRjaC8tL21pbmltYXRjaC0zLjAuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1
MTIteUpIVlFFaHlxUExVVGd0OUI4M1BYdTZXM3J4NE12dkh2U1V2VG9vZ3B3b0dET1VRK3lEclIw
SFJvdCt5T0NkQ083dTRoWDNwV2Z0NmtXQkJjcWgwVUE9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJyYWNlLWV4cGFuc2lvbiI6ICIxLjEuOCIK
KyAgICAgIH0KKyAgICB9LAorICAgICJtaW5pbWlzdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAu
MC44IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9taW5p
bWlzdC8tL21pbmltaXN0LTAuMC44LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaFgv
S3Y4TTVmU1lsdUNLQ1l1aHFwNkFSc0YwPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisg
ICAgIm1rZGlycCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNS4xIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ta2RpcnAvLS9ta2RpcnAtMC41LjEudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1NQVYwT09yR3ozK01SMmZ6aGtqV2FYMTF5UU09
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibWlu
aW1pc3QiOiAiMC4wLjgiCisgICAgICB9CisgICAgfSwKKyAgICAibXMiOiB7CisgICAgICAidmVy
c2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvbXMvLS9tcy0yLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVZnaXVy
ZndBdm13cEFkOWZtR0Y0amVEVmw4Zz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJtdWx0aWNhc3QtZG5zIjogeworICAgICAgInZlcnNpb24iOiAiNi4xLjEiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL211bHRpY2FzdC1kbnMvLS9tdWx0
aWNhc3QtZG5zLTYuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYm4zb2FsY0lj
cXNYQllyZXB4WUx2c3FCVGQ0PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgImRucy1wYWNrZXQiOiAiMS4yLjIiLAorICAgICAgICAidGh1bmt5Ijog
IjAuMS4wIgorICAgICAgfQorICAgIH0sCisgICAgIm11bHRpY2FzdC1kbnMtc2VydmljZS10eXBl
cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9tdWx0aWNhc3QtZG5zLXNlcnZpY2UtdHlwZXMvLS9tdWx0
aWNhc3QtZG5zLXNlcnZpY2UtdHlwZXMtMS4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1pWjhSMldodVhnWExrYk5kWHc1anQzUFB5UUU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisg
ICAgfSwKKyAgICAibXV0ZS1zdHJlYW0iOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjAuNyIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbXV0ZS1zdHJlYW0v
LS9tdXRlLXN0cmVhbS0wLjAuNy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLU1IWE9r
N3dodVBxMFBodkUybjZCRmUwZWU2cz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJuYW4iOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjcuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbmFuLy0vbmFuLTIuNy4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtMlZ2M0lleUhmZ2piSjI3VC9HNjNqNUNEclVZPSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJuYXR1cmFs
LWNvbXBhcmUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjQuMCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbmF0dXJhbC1jb21wYXJlLy0vbmF0dXJhbC1j
b21wYXJlLTEuNC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtU3I2Lzd0ZFVIeXdu
clBzcHZidlJYSTFicFBjPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm5jbmFt
ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9uY25hbWUvLS9uY25hbWUtMS4wLjAudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1XMWV0R0xIS0NTaGs3Mkt3c2UyQmxQT0R0eHc9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAieG1sLWNoYXItY2xh
c3NlcyI6ICIxLjAuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJuZWdvdGlhdG9yIjogeworICAg
ICAgInZlcnNpb24iOiAiMC42LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL25lZ290aWF0b3IvLS9uZWdvdGlhdG9yLTAuNi4xLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtS3pKeGhPaVpJUUVYZXloV1A3WG5FQ3JOREtrPSIsCisgICAgICAi
ZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm5vLWNhc2UiOiB7CisgICAgICAidmVyc2lvbiI6ICIy
LjMuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbm8t
Y2FzZS8tL25vLWNhc2UtMi4zLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ldXVo
eHpwU0dFSmxWVXQ5d0R1dmNnMzRBSUU9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAibG93ZXItY2FzZSI6ICIxLjEuNCIKKyAgICAgIH0KKyAgICB9
LAorICAgICJub2RlLWZldGNoIjogeworICAgICAgInZlcnNpb24iOiAiMS43LjIiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL25vZGUtZmV0Y2gvLS9ub2Rl
LWZldGNoLTEuNy4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi14WlpVcTJ5RGhL
TUluL1VnRzVxLy9JWlNOTEpJd1cyUXhTMTRDTkg1c3B1aVhrSVRNMnBVaXRqZHE1OHlMU2FVN200
TTB3Qk5hTTJHaC9nZ1k0WUppZz09IiwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImVu
Y29kaW5nIjogIjAuMS4xMiIsCisgICAgICAgICJpcy1zdHJlYW0iOiAiMS4xLjAiCisgICAgICB9
CisgICAgfSwKKyAgICAibm9kZS1mb3JnZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNi4zMyIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbm9kZS1mb3Jn
ZS8tL25vZGUtZm9yZ2UtMC42LjMzLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUmpn
Umg1OVhQVVVWV3RhcDlEM0NsdWpvWHJ3PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisg
ICAgIm5vZGUtaW50NjQiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjQuMCIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbm9kZS1pbnQ2NC8tL25vZGUtaW50
NjQtMC40LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1oNmtHWE5zMVhUR0MyUGxN
NFJHSXVDWEdpanM9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibm9kZS1saWJz
LWJyb3dzZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbm9kZS1saWJzLWJyb3dzZXIvLS9ub2RlLWxp
YnMtYnJvd3Nlci0yLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLW82V2V5WEFr
bUZ0RzZWZzNsa2I1YkV0aFprWT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICJhc3NlcnQiOiAiMS40LjEiLAorICAgICAgICAiYnJvd3NlcmlmeS16
bGliIjogIjAuMS40IiwKKyAgICAgICAgImJ1ZmZlciI6ICI0LjkuMSIsCisgICAgICAgICJjb25z
b2xlLWJyb3dzZXJpZnkiOiAiMS4xLjAiLAorICAgICAgICAiY29uc3RhbnRzLWJyb3dzZXJpZnki
OiAiMS4wLjAiLAorICAgICAgICAiY3J5cHRvLWJyb3dzZXJpZnkiOiAiMy4xMS4xIiwKKyAgICAg
ICAgImRvbWFpbi1icm93c2VyIjogIjEuMS43IiwKKyAgICAgICAgImV2ZW50cyI6ICIxLjEuMSIs
CisgICAgICAgICJodHRwcy1icm93c2VyaWZ5IjogIjAuMC4xIiwKKyAgICAgICAgIm9zLWJyb3dz
ZXJpZnkiOiAiMC4yLjEiLAorICAgICAgICAicGF0aC1icm93c2VyaWZ5IjogIjAuMC4wIiwKKyAg
ICAgICAgInByb2Nlc3MiOiAiMC4xMS4xMCIsCisgICAgICAgICJwdW55Y29kZSI6ICIxLjQuMSIs
CisgICAgICAgICJxdWVyeXN0cmluZy1lczMiOiAiMC4yLjEiLAorICAgICAgICAicmVhZGFibGUt
c3RyZWFtIjogIjIuMy4zIiwKKyAgICAgICAgInN0cmVhbS1icm93c2VyaWZ5IjogIjIuMC4xIiwK
KyAgICAgICAgInN0cmVhbS1odHRwIjogIjIuNy4yIiwKKyAgICAgICAgInN0cmluZ19kZWNvZGVy
IjogIjAuMTAuMzEiLAorICAgICAgICAidGltZXJzLWJyb3dzZXJpZnkiOiAiMi4wLjQiLAorICAg
ICAgICAidHR5LWJyb3dzZXJpZnkiOiAiMC4wLjAiLAorICAgICAgICAidXJsIjogIjAuMTEuMCIs
CisgICAgICAgICJ1dGlsIjogIjAuMTAuMyIsCisgICAgICAgICJ2bS1icm93c2VyaWZ5IjogIjAu
MC40IgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJzdHJpbmdf
ZGVjb2RlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEwLjMxIiwKKyAgICAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3RyaW5nX2RlY29kZXIvLS9z
dHJpbmdfZGVjb2Rlci0wLjEwLjMxLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGEx
LVl1SUR2RUYyYkd3b3lmeUVNQjJySEZNUStwUT0iLAogICAgICAgICAgICJkZXYiOiB0cnVlCi0g
ICAgICAgIH0sCi0gICAgICAgICJwYXRoLWlzLWluc2lkZSI6IHsKLSAgICAgICAgICAidmVyc2lv
biI6ICIxLjAuMiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICB9CisgICAg
ICB9CisgICAgfSwKKyAgICAibm9kZS1ub3RpZmllciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjUu
MS4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ub2Rl
LW5vdGlmaWVyLy0vbm9kZS1ub3RpZmllci01LjEuMi50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLUw2bmhKZ1g2RUFDZFJGU2RiODJLWTkzZzVQOD0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJncm93bHkiOiAiMS4zLjAiLAorICAgICAg
ICAic2VtdmVyIjogIjUuNC4xIiwKKyAgICAgICAgInNoZWxsd29yZHMiOiAiMC4xLjEiLAorICAg
ICAgICAid2hpY2giOiAiMS4zLjAiCisgICAgICB9CisgICAgfSwKKyAgICAibm9kZS1zdGF0dXMt
Y29kZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbm9kZS1zdGF0dXMtY29kZXMvLS9ub2RlLXN0YXR1
cy1jb2Rlcy0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVd1VlVIUUpHUmRN
cVdQemR5YzdzNm5yanJDOD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJub3Jt
YWxpemUtcGFja2FnZS1kYXRhIjogeworICAgICAgInZlcnNpb24iOiAiMi40LjAiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL25vcm1hbGl6ZS1wYWNrYWdl
LWRhdGEvLS9ub3JtYWxpemUtcGFja2FnZS1kYXRhLTIuNC4wLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTUxMi05ampVRmJUUGZFeTNSL2FkLzJvTmJLdFc5SGdvdmw1TzFGdkZXS2tLYmxO
WG9OL09vdTYrOStLS29oUEsxM1ljMy9UeXVueVdoSnA2Z3ZSTlIvUFBBdz09IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaG9zdGVkLWdpdC1pbmZv
IjogIjIuNS4wIiwKKyAgICAgICAgImlzLWJ1aWx0aW4tbW9kdWxlIjogIjEuMC4wIiwKKyAgICAg
ICAgInNlbXZlciI6ICI1LjQuMSIsCisgICAgICAgICJ2YWxpZGF0ZS1ucG0tcGFja2FnZS1saWNl
bnNlIjogIjMuMC4xIgorICAgICAgfQorICAgIH0sCisgICAgIm5vcm1hbGl6ZS1wYXRoIjogewor
ICAgICAgInZlcnNpb24iOiAiMi4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL25vcm1hbGl6ZS1wYXRoLy0vbm9ybWFsaXplLXBhdGgtMi4xLjEudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1HcktMVlc0WmcyT293YWIzNXZvZ0UzL21ydGs9
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAicmVt
b3ZlLXRyYWlsaW5nLXNlcGFyYXRvciI6ICIxLjEuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJu
b3JtYWxpemUtcmFuZ2UiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuMiIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbm9ybWFsaXplLXJhbmdlLy0vbm9y
bWFsaXplLXJhbmdlLTAuMS4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTFJEQWE5
L1RFdXFYZDJsYVRTaERsRmEzV1VJPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAg
Im5vcm1hbGl6ZS11cmwiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjkuMSIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbm9ybWFsaXplLXVybC8tL25vcm1h
bGl6ZS11cmwtMS45LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1MTURXYXpIcUl3
TmtXRU51TmlEWVdWVEdiRHc9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMSIsCisgICAgICAgICJwcmVwZW5k
LWh0dHAiOiAiMS4wLjQiLAorICAgICAgICAicXVlcnktc3RyaW5nIjogIjQuMy40IiwKKyAgICAg
ICAgInNvcnQta2V5cyI6ICIxLjEuMiIKKyAgICAgIH0KKyAgICB9LAorICAgICJucG0tcnVuLXBh
dGgiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbnBtLXJ1bi1wYXRoLy0vbnBtLXJ1bi1wYXRoLTIuMC4y
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTmFrakxmbzExd1o3VExMZDhqVjdHSEZU
YkY4PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
InBhdGgta2V5IjogIjIuMC4xIgorICAgICAgfQorICAgIH0sCisgICAgIm50aC1jaGVjayI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9udGgtY2hlY2svLS9udGgtY2hlY2stMS4wLjEudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1tU21zMzJLUHdzUVFtTjZyZ3F4WURQRkpxdVE9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYm9vbGJhc2UiOiAi
MS4wLjAiCisgICAgICB9CisgICAgfSwKKyAgICAibnVtMmZyYWN0aW9uIjogeworICAgICAgInZl
cnNpb24iOiAiMS4yLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL251bTJmcmFjdGlvbi8tL251bTJmcmFjdGlvbi0xLjIuMi50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLWIyZ3JhZ0o2VHAzZnBGWk0wbGlkSFU1bW50ND0iLAorICAgICAgImRl
diI6IHRydWUKKyAgICB9LAorICAgICJudW1iZXItaXMtbmFuIjogeworICAgICAgInZlcnNpb24i
OiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L251bWJlci1pcy1uYW4vLS9udW1iZXItaXMtbmFuLTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtQ1h0Z0sxTkNLbElzR3Z1SGtER0ROcFFhQVIwPSIsCisgICAgICAiZGV2Ijog
dHJ1ZQorICAgIH0sCisgICAgIm53bWF0Y2hlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuNC4x
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ud21hdGNo
ZXIvLS9ud21hdGNoZXItMS40LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ldW13
ZXc2b0JOdCtKZkJjdGY1QWw5VGtsSjg9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAg
ICAib2F1dGgtc2lnbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuOC4yIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vYXV0aC1zaWduLy0vb2F1dGgtc2ln
bi0wLjguMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVJxYXJmd3JxMk42dW5zQldW
NEMzMU8vcm5VTT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJvYmplY3QtYXNz
aWduIjogeworICAgICAgInZlcnNpb24iOiAiNC4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29iamVjdC1hc3NpZ24vLS9vYmplY3QtYXNzaWduLTQu
MS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtSVFtdHg1WlloOC9BWEx2VVFzckl2
N3MyQ0dNPSIKKyAgICB9LAorICAgICJvYmplY3QtaGFzaCI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjEuMS44IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9v
YmplY3QtaGFzaC8tL29iamVjdC1oYXNoLTEuMS44LnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtS0taWno1aDlscVRhdm5oZ0tKODdVeWJFb0R3PSIsCisgICAgICAiZGV2IjogdHJ1ZQor
ICAgIH0sCisgICAgIm9iamVjdC1pcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vYmplY3QtaXMvLS9v
YmplY3QtaXMtMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1DcVlPeVppYUN6
N1hsYzlOQnZZczhhMWxPYlk9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAib2Jq
ZWN0LWtleXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMTEiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29iamVjdC1rZXlzLy0vb2JqZWN0LWtleXMt
MS4wLjExLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEteFVZQmQ0clZZUEVVTE9EZ0c4
eW90VzBUUW0wPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm9iamVjdC5hc3Np
Z24iOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjAuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb2JqZWN0LmFzc2lnbi8tL29iamVjdC5hc3NpZ24tNC4w
LjQudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1zY25NQkU3eHVmNWpZRy9CUWF1N011
RkhNTXc9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAiZGVmaW5lLXByb3BlcnRpZXMiOiAiMS4xLjIiLAorICAgICAgICAiZnVuY3Rpb24tYmluZCI6
ICIxLjEuMSIsCisgICAgICAgICJvYmplY3Qta2V5cyI6ICIxLjAuMTEiCisgICAgICB9CisgICAg
fSwKKyAgICAib2JqZWN0LmVudHJpZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuNCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb2JqZWN0LmVudHJp
ZXMvLS9vYmplY3QuZW50cmllcy0xLjAuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LUcvbWszU0tJOWJNL09wazlKWFpoOEYwV0dsOD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICJkZWZpbmUtcHJvcGVydGllcyI6ICIxLjEuMiIsCisg
ICAgICAgICJlcy1hYnN0cmFjdCI6ICIxLjguMiIsCisgICAgICAgICJmdW5jdGlvbi1iaW5kIjog
IjEuMS4xIiwKKyAgICAgICAgImhhcyI6ICIxLjAuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJv
YmplY3Qub21pdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vYmplY3Qub21pdC8tL29iamVjdC5vbWl0
LTIuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtR3B4MFNDbnpuYnVGakhiS05Y
bXVLbFRyMGZvPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImZvci1vd24iOiAiMC4xLjUiLAorICAgICAgICAiaXMtZXh0ZW5kYWJsZSI6ICIwLjEu
MSIKKyAgICAgIH0KKyAgICB9LAorICAgICJvYmplY3QudmFsdWVzIjogeworICAgICAgInZlcnNp
b24iOiAiMS4wLjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL29iamVjdC52YWx1ZXMvLS9vYmplY3QudmFsdWVzLTEuMC40LnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtNVNUYUNiVDJiL0JkOUZkVWJzY3F5WjhUQnBvPSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImRlZmluZS1wcm9wZXJ0aWVz
IjogIjEuMS4yIiwKKyAgICAgICAgImVzLWFic3RyYWN0IjogIjEuOC4yIiwKKyAgICAgICAgImZ1
bmN0aW9uLWJpbmQiOiAiMS4xLjEiLAorICAgICAgICAiaGFzIjogIjEuMC4xIgorICAgICAgfQor
ICAgIH0sCisgICAgIm9idWYiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb2J1Zi8tL29idWYtMS4xLjEu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1FRUVrdHNZQ3hubG9nYUJDVkIwMjIwT2xK
azQ9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAib24tZmluaXNoZWQiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIyLjMuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvb24tZmluaXNoZWQvLS9vbi1maW5pc2hlZC0yLjMuMC50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLUlQRXpaSUd3ZzgxMU0zbVNvV2x4cWkyUWFVYz0iLAorICAg
ICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJlZS1maXJzdCI6
ICIxLjEuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJvbi1oZWFkZXJzIjogeworICAgICAgInZl
cnNpb24iOiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL29uLWhlYWRlcnMvLS9vbi1oZWFkZXJzLTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEta285ZEQwY05TVFFtVWVwbmxMQ0ZmQkFHay9jPSIsCisgICAgICAiZGV2Ijog
dHJ1ZQorICAgIH0sCisgICAgIm9uY2UiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjQuMCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb25jZS8tL29uY2Ut
MS40LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1XRHNhcDNXV0hVc1JPc0Y5bkZD
Njc1M1hhOUU9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAid3JhcHB5IjogIjEuMC4yIgorICAgICAgfQorICAgIH0sCisgICAgIm9uZXRpbWUiOiB7
CisgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvb25ldGltZS8tL29uZXRpbWUtMi4wLjEudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1CblFvSXcvV2RFT3llVXNpdTZVb3RvWjVZdFE9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibWltaWMtZm4iOiAiMS4x
LjAiCisgICAgICB9CisgICAgfSwKKyAgICAib3BuIjogeworICAgICAgInZlcnNpb24iOiAiNS4x
LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29wbi8t
L29wbi01LjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItaVBObDdTeU04TDMw
Um0xc2pHZExMaGV5SFZ3NVlYVmZpM1NLV0p6Qkk3ZWZ4UndIb2pmUkZqd0UvT0xNNnFwOXhKWU1n
YWI4V2ljVFUxY1BvWStIcGc9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgImlzLXdzbCI6ICIxLjEuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJv
cHRpbWlzdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNi4xIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vcHRpbWlzdC8tL29wdGltaXN0LTAuNi4xLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMmo2blJvYjZJYUdhRVJ3eWJwRHJGYUFaWm9Z
PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgIm1p
bmltaXN0IjogIjAuMC44IiwKKyAgICAgICAgIndvcmR3cmFwIjogIjAuMC4zIgorICAgICAgfSwK
KyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJ3b3Jkd3JhcCI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjAuMyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3dvcmR3cmFwLy0vd29yZHdyYXAtMC4wLjMudGd6IiwKKyAgICAgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtbzlYYWJOWEF2QUFJMDNJMHU2OGI3V01Ga1FjPSIsCiAgICAg
ICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInBhdGgtcGFyc2UiOiB7Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJvcHRpb25hdG9yIjogeworICAgICAgInZl
cnNpb24iOiAiMC44LjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL29wdGlvbmF0b3IvLS9vcHRpb25hdG9yLTAuOC4yLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtTmt4ZVFKMC9UV01CMXNDMHdGdTZVQmdLNjJRPSIsCisgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImRlZXAtaXMiOiAiMC4xLjMiLAor
ICAgICAgICAiZmFzdC1sZXZlbnNodGVpbiI6ICIyLjAuNiIsCisgICAgICAgICJsZXZuIjogIjAu
My4wIiwKKyAgICAgICAgInByZWx1ZGUtbHMiOiAiMS4xLjIiLAorICAgICAgICAidHlwZS1jaGVj
ayI6ICIwLjMuMiIsCisgICAgICAgICJ3b3Jkd3JhcCI6ICIxLjAuMCIKKyAgICAgIH0KKyAgICB9
LAorICAgICJvcmlnaW5hbCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vcmlnaW5hbC8tL29yaWdpbmFs
LTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEta1VmNVA2RnBiUVMrWWVBYjFR
dXVyS1pXdlRzPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgInVybC1wYXJzZSI6ICIxLjAuNSIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVz
IjogeworICAgICAgICAidXJsLXBhcnNlIjogewogICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAg
ICAgICAgfSwKLSAgICAgICAgInBhdGgtdG8tcmVnZXhwIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMS43IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInBhdGgtdHlwZSI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIxLjEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJk
ZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJncmFjZWZ1
bC1mcyI6ICI0LjEuOCIsCi0gICAgICAgICAgICAicGlmeSI6ICIyLjMuMCIsCi0gICAgICAgICAg
ICAicGlua2llLXByb21pc2UiOiAiMi4wLjEiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAg
ICAgICAicGJrZGYyLWNvbXBhdCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCi0g
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAg
IH0sCi0gICAgICAgICJwaWZ5IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMy4wIiwKLSAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAg
fSwKLSAgICAgICAgInBpbmtpZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuNCIsCi0g
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAg
IH0sCi0gICAgICAgICJwaW5raWUtcHJvbWlzZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIy
LjAuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVl
LAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJwaW5raWUiOiAiMi4wLjQi
Ci0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAicGtnLWRpciI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAg
ICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJm
aW5kLXVwIjogIjEuMS4yIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInBrZy11
cCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy91cmwtcGFyc2UvLS91cmwtcGFyc2UtMS4wLjUudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtQ0ZTR0JDS3YzUDcrdHNsbHhtTFVnQUZwa25zPSIsCiAgICAgICAgICAgImRldiI6
IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImZpbmQtdXAiOiAi
MS4xLjIiCisgICAgICAgICAgICAicXVlcnlzdHJpbmdpZnkiOiAiMC4wLjQiLAorICAgICAgICAg
ICAgInJlcXVpcmVzLXBvcnQiOiAiMS4wLjAiCiAgICAgICAgICAgfQotICAgICAgICB9LAotICAg
ICAgICAicGx1cmFsaXplIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4xIiwKLSAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJv
cy1icm93c2VyaWZ5IjogeworICAgICAgInZlcnNpb24iOiAiMC4yLjEiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29zLWJyb3dzZXJpZnkvLS9vcy1icm93
c2VyaWZ5LTAuMi4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWS94TXp1WFMxM1k5
SnJ2NFlCQjQ1c0xnQkU4PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm9zLWhv
bWVkaXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb3MtaG9tZWRpci8tL29zLWhvbWVkaXItMS4wLjIu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0vN3hKaUROdURvTTk0TUZveCs4VklTR3Fm
N009IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAib3MtbG9jYWxlIjogeworICAg
ICAgInZlcnNpb24iOiAiMS40LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL29zLWxvY2FsZS8tL29zLWxvY2FsZS0xLjQuMC50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLUlQbnhldUtlMDBYb3ZlV0RzVDBnQ1lBOEZOaz0iLAorICAgICAgImRl
diI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJsY2lkIjogIjEuMC4wIgor
ICAgICAgfQorICAgIH0sCisgICAgIm9zLXRtcGRpciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEu
MC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vcy10
bXBkaXIvLS9vcy10bXBkaXItMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS11
K1owQnNlYXFGeGMvc2RtL2xjMFZWMzZFblE9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwK
KyAgICAib3NlbnYiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuNCIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb3NlbnYvLS9vc2Vudi0wLjEuNC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLVF2NXRXVlBmQnNnR1MrYnhkc1BRV3FxalJrUT0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJvcy1o
b21lZGlyIjogIjEuMC4yIiwKKyAgICAgICAgIm9zLXRtcGRpciI6ICIxLjAuMiIKKyAgICAgIH0K
KyAgICB9LAorICAgICJwLWZpbmFsbHkiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcC1maW5hbGx5Ly0v
cC1maW5hbGx5LTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUDd6N0ZiaVpw
RUVqczB0dHpCaTNKRE5xTEs0PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInAt
bGltaXQiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcC1saW1pdC8tL3AtbGltaXQtMS4xLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1zSC95MmFYWWkreUFZRFdKV2l1clpxSjVpTHc9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAicC1sb2NhdGUiOiB7CisgICAgICAidmVy
c2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvcC1sb2NhdGUvLS9wLWxvY2F0ZS0yLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLUlLQVFPeUlxY01qOU9jd3VXQWFBODkzbDdFTT0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJwLWxpbWl0IjogIjEuMS4wIgorICAgICAg
fQorICAgIH0sCisgICAgInAtbWFwIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3AtbWFwLy0vcC1tYXAt
MS4xLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1CZlhrcnBlZ2FEY2J3cVhNaHIr
OXZCbkVybm89IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAicGFja2FnZS1qc29u
IjogeworICAgICAgInZlcnNpb24iOiAiMi40LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3BhY2thZ2UtanNvbi8tL3BhY2thZ2UtanNvbi0yLjQuMC50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLURSVzlaOUhMdmR1eXlpSXY4dTI0YThzeHFM
cz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJn
b3QiOiAiNS43LjEiLAorICAgICAgICAicmVnaXN0cnktYXV0aC10b2tlbiI6ICIzLjMuMSIsCisg
ICAgICAgICJyZWdpc3RyeS11cmwiOiAiMy4xLjAiLAorICAgICAgICAic2VtdmVyIjogIjUuNC4x
IgorICAgICAgfQorICAgIH0sCisgICAgInBha28iOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjIu
OSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGFrby8t
L3Bha28tMC4yLjkudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS04L2RTTDA3M2dqU05x
Qlliclo3UDFSdjRPblU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAicGFyYW0t
Y2FzZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wYXJhbS1jYXNlLy0vcGFyYW0tY2FzZS0yLjEuMS50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTM1VDlqUFpUSHM5MTVyNzVvSVdQdkhLK0lr
Yz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJu
by1jYXNlIjogIjIuMy4xIgorICAgICAgfQorICAgIH0sCisgICAgInBhcnNlLWFzbjEiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICI1LjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvcGFyc2UtYXNuMS8tL3BhcnNlLWFzbjEtNS4xLjAudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1OOFQ1dCswNnRseDBnWHRmSklDVGY3K1h4eEk9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYXNuMS5qcyI6ICI0
LjkuMSIsCisgICAgICAgICJicm93c2VyaWZ5LWFlcyI6ICIxLjAuOCIsCisgICAgICAgICJjcmVh
dGUtaGFzaCI6ICIxLjEuMyIsCisgICAgICAgICJldnBfYnl0ZXN0b2tleSI6ICIxLjAuMyIsCisg
ICAgICAgICJwYmtkZjIiOiAiMy4wLjEzIgorICAgICAgfQorICAgIH0sCisgICAgInBhcnNlLWds
b2IiOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjAuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGFyc2UtZ2xvYi8tL3BhcnNlLWdsb2ItMy4wLjQudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1zc04yejdFZk5WRTdyZEZ6N3d1MjQ2T0lPUnc9
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZ2xv
Yi1iYXNlIjogIjAuMy4wIiwKKyAgICAgICAgImlzLWRvdGZpbGUiOiAiMS4wLjMiLAorICAgICAg
ICAiaXMtZXh0Z2xvYiI6ICIxLjAuMCIsCisgICAgICAgICJpcy1nbG9iIjogIjIuMC4xIgorICAg
ICAgfQorICAgIH0sCisgICAgInBhcnNlLWpzb24iOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjIu
MCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGFyc2Ut
anNvbi8tL3BhcnNlLWpzb24tMi4yLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS05
SUQwQkRUdmdIUWZoR2tKbjQzcUdQVmFUY2s9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAiZXJyb3ItZXgiOiAiMS4zLjEiCisgICAgICB9CisgICAg
fSwKKyAgICAicGFyc2UtcGFzc3dkIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3BhcnNlLXBhc3N3ZC8t
L3BhcnNlLXBhc3N3ZC0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWJWdVRT
a1ZwazdJOU4vUUtPQzF2Rm1hbzVjWT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJwYXJzZTUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjUuMSIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGFyc2U1Ly0vcGFyc2U1LTEuNS4xLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbTM4N0RlTXI1NDNDUUJzWFZ6eks4UGIxblpRPSIs
CisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInBhcnNldXJsIjogeworICAgICAgInZl
cnNpb24iOiAiMS4zLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3BhcnNldXJsLy0vcGFyc2V1cmwtMS4zLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS15S3VNa2lPNk5JaUtwa29wZXlpRk8rd1kybFk9IiwKKyAgICAgICJkZXYiOiB0cnVl
CisgICAgfSwKKyAgICAicGF0aC1icm93c2VyaWZ5IjogeworICAgICAgInZlcnNpb24iOiAiMC4w
LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3BhdGgt
YnJvd3NlcmlmeS8tL3BhdGgtYnJvd3NlcmlmeS0wLjAuMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLW9MaHdjcHF1SVVBRnQ5VURMc0xMdXcrMFJSbz0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJwYXRoLWV4aXN0cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMC4w
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wYXRoLWV4
aXN0cy8tL3BhdGgtZXhpc3RzLTMuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
emc2K3FsOTR5eGlTWHFmWUVOZTFtd0VQMVJVPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0s
CisgICAgInBhdGgtaXMtYWJzb2x1dGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGF0aC1pcy1hYnNv
bHV0ZS8tL3BhdGgtaXMtYWJzb2x1dGUtMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1GMHVTYUhOVk5QKzhlczVyOVRwYW5odGNYMTg9IiwKKyAgICAgICJkZXYiOiB0cnVlCisg
ICAgfSwKKyAgICAicGF0aC1pcy1pbnNpZGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGF0aC1pcy1p
bnNpZGUvLS9wYXRoLWlzLWluc2lkZS0xLjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLU5sUVgzdDVFUXcwY0VhOWhBbitzOEhTOS9GTT0iLAorICAgICAgImRldiI6IHRydWUKKyAg
ICB9LAorICAgICJwYXRoLWtleSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wYXRoLWtleS8tL3BhdGgt
a2V5LTIuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUVJ5dHRYVEZvVURUcExH
UkRVRFlETW4wQzBBPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInBhdGgtcGFy
c2UiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGF0aC1wYXJzZS8tL3BhdGgtcGFyc2UtMS4wLjUudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1QQnJmaHg2cHpXeVVNYmJxSzlkS0QvQlZ4TUU9
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAicGF0aC10by1yZWdleHAiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIxLjcuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvcGF0aC10by1yZWdleHAvLS9wYXRoLXRvLXJlZ2V4cC0xLjcuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLVdmM2c5RFc2MnN1aEE2aE9uVHZHVHBhNWszMD0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJpc2Fy
cmF5IjogIjAuMC4xIgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAg
ICJpc2FycmF5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC4xIiwKKyAgICAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXNhcnJheS8tL2lzYXJyYXkt
MC4wLjEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaWhpcy9LbW85QmQrQ2F2
OFlEaVRtd1hSN3Q4PSIsCiAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAg
ICAgInBvc3Rjc3MiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNS4yLjIiLAotICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVx
dWlyZXMiOiB7Ci0gICAgICAgICAgICAianMtYmFzZTY0IjogIjIuMS45IiwKLSAgICAgICAgICAg
ICJzb3VyY2UtbWFwIjogIjAuNS42IiwKLSAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIz
LjEuMiIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJwb3N0Y3NzLWNhbGMiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiNS4zLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIsCi0gICAgICAgICAgICAicG9zdGNzcy1tZXNzYWdl
LWhlbHBlcnMiOiAiMi4wLjAiLAotICAgICAgICAgICAgInJlZHVjZS1jc3MtY2FsYyI6ICIxLjMu
MCIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJwb3N0Y3NzLWNvbG9ybWluIjog
ewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgImNvbG9ybWluIjogIjEuMS4yIiwKLSAgICAgICAgICAgICJwb3N0Y3NzIjogIjUu
Mi4yIiwKLSAgICAgICAgICAgICJwb3N0Y3NzLXZhbHVlLXBhcnNlciI6ICIzLjMuMCIKLSAgICAg
ICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJwb3N0Y3NzLWNvbnZlcnQtdmFsdWVzIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAg
ICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiLAotICAgICAgICAgICAgInBvc3Rjc3MtdmFsdWUtcGFy
c2VyIjogIjMuMy4wIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInBvc3Rjc3Mt
ZGlzY2FyZC1jb21tZW50cyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuNCIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4yIgotICAgICAgICAg
IH0KLSAgICAgICAgfSwKLSAgICAgICAgInBvc3Rjc3MtZGlzY2FyZC1kdXBsaWNhdGVzIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAg
ICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiCi0gICAgICAgICAgfQotICAgICAgICB9LAotICAgICAg
ICAicG9zdGNzcy1kaXNjYXJkLWVtcHR5IjogeworICAgICAgICB9CisgICAgICB9CisgICAgfSwK
KyAgICAicGF0aC10eXBlIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3BhdGgtdHlwZS8tL3BhdGgtdHlw
ZS0xLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVdjUlBmdVNSMm5CTnBCWGFX
a0J3dWsrUDVFRT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJncmFjZWZ1bC1mcyI6ICI0LjEuMTEiLAorICAgICAgICAicGlmeSI6ICIyLjMuMCIs
CisgICAgICAgICJwaW5raWUtcHJvbWlzZSI6ICIyLjAuMSIKKyAgICAgIH0KKyAgICB9LAorICAg
ICJwYmtkZjIiOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjAuMTMiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bia2RmMi8tL3Bia2RmMi0zLjAuMTMudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLStkQ0h4REgrZGpOdGpnV212VkMvbXkzU1lC
QUtwS05xS1NqTGtwK0d0V1dZZTRYUEUrZS9QU0QyYUNhbmxFWlpucVBrMnVla1RLTkMvY2Nid2Qy
WDJRPT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJjcmVhdGUtaGFzaCI6ICIxLjEuMyIsCisgICAgICAgICJjcmVhdGUtaG1hYyI6ICIxLjEuNiIs
CisgICAgICAgICJyaXBlbWQxNjAiOiAiMi4wLjEiLAorICAgICAgICAic2FmZS1idWZmZXIiOiAi
NS4xLjEiLAorICAgICAgICAic2hhLmpzIjogIjIuNC44IgorICAgICAgfQorICAgIH0sCisgICAg
InBlcmZvcm1hbmNlLW5vdyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wZXJmb3JtYW5jZS1ub3cvLS9w
ZXJmb3JtYW5jZS1ub3ctMC4yLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1NKzh3
eGNkOVRxSWNXbE9HblpHMWJZOGxWZVU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAg
ICAicGlmeSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMy4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9waWZ5Ly0vcGlmeS0yLjMuMC50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLTdSUWFhc0JEcUVucVdJU1k1OXlvc1ZNdzZRdz0iLAorICAg
ICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJwaW5raWUiOiB7CisgICAgICAidmVyc2lvbiI6
ICIyLjAuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
cGlua2llLy0vcGlua2llLTIuMC40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtY2xW
cmdNK2cxSXFYVG9EbmNram9EdFQzK0hBPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisg
ICAgInBpbmtpZS1wcm9taXNlIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3BpbmtpZS1wcm9taXNlLy0v
cGlua2llLXByb21pc2UtMi4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1JVFhX
MzZlaldNQnBySnNYaDNZb2dpaEZEL289IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAicGlua2llIjogIjIuMC40IgorICAgICAgfQorICAgIH0sCisg
ICAgInBrZy1kaXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGtnLWRpci8tL3BrZy1kaXItMi4wLjAu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS05dFhSRUo0WjFqN2ZRbzRMMVg0U2QzWVZN
MHM9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAi
ZmluZC11cCI6ICIyLjEuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJwbHVyYWxpemUiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICI0LjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvcGx1cmFsaXplLy0vcGx1cmFsaXplLTQuMC4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtV2JjSXdjQVpDaTlwTHh4MkdNUkdzRkw5RjJJPSIsCisgICAgICAi
ZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInBvcnRmaW5kZXIiOiB7CisgICAgICAidmVyc2lvbiI6
ICIxLjAuMTMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3BvcnRmaW5kZXIvLS9wb3J0ZmluZGVyLTEuMC4xMy50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLXV6THMySHduRUVybTdrUzFvOHkvRHJzYTdlaz0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJhc3luYyI6ICIxLjUuMiIsCisgICAgICAg
ICJkZWJ1ZyI6ICIyLjYuOCIsCisgICAgICAgICJta2RpcnAiOiAiMC41LjEiCisgICAgICB9LAor
ICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImFzeW5jIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuNS4yIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvYXN5bmMvLS9hc3luYy0xLjUuMi50Z3oiLAorICAgICAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS03R3BocmxaSURBdzhza0hKVmhqaUNKTDVaeW89IiwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAicG9zdGNzcyI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjYuMC4xMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvcG9zdGNzcy8tL3Bvc3Rjc3MtNi4wLjExLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTUxMi1Ec25JenpuTlJRcHJzR1RBTHBrQzB4akR5Z28rUWNPZCtxVmpQOStS
anl6clBpeVlPWEJHT3dvSjRyQWlpRTRsdTZKZ2dRL2pXNG5pWTI0V0x4dW5jZz09IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY2hhbGsiOiAiMi4x
LjAiLAorICAgICAgICAic291cmNlLW1hcCI6ICIwLjUuNyIsCisgICAgICAgICJzdXBwb3J0cy1j
b2xvciI6ICI0LjQuMCIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAg
ICAiY2hhbGsiOiB7CiAgICAgICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAotICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWly
ZXMiOiB7Ci0gICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIKLSAgICAgICAgICB9Ci0gICAg
ICAgIH0sCi0gICAgICAgICJwb3N0Y3NzLWRpc2NhcmQtb3ZlcnJpZGRlbiI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjEuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jaGFsay8tL2NoYWxr
LTIuMS4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItTFVIR1MvZGdlNHVq
YlhNSnJuaWhZTWNMNEFvT3dlR253OVRwM2tRdXF5MUt4NWMxcUtqcXZNSlo2blZKUE1XSnRLQ1RO
NzJab2dIM29lU085ZzlyWFE9PSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAg
InJlcXVpcmVzIjogewotICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiCisgICAgICAgICAg
ICAiYW5zaS1zdHlsZXMiOiAiMy4yLjAiLAorICAgICAgICAgICAgImVzY2FwZS1zdHJpbmctcmVn
ZXhwIjogIjEuMC41IiwKKyAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICI0LjQuMCIKICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJwb3N0Y3NzLWNhbGMi
OiB7CisgICAgICAidmVyc2lvbiI6ICI1LjMuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNzcy1jYWxjLy0vcG9zdGNzcy1jYWxjLTUuMy4xLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZDdybnlwS0syRmNXNHYya0x5WWI5OEhXVzE0
PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInBv
c3Rjc3MiOiAiNS4yLjE3IiwKKyAgICAgICAgInBvc3Rjc3MtbWVzc2FnZS1oZWxwZXJzIjogIjIu
MC4wIiwKKyAgICAgICAgInJlZHVjZS1jc3MtY2FsYyI6ICIxLjMuMCIKKyAgICAgIH0sCisgICAg
ICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiaGFzLWZsYWciOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9oYXMtZmxhZy8tL2hhcy1mbGFnLTEuMC4wLnRneiIsCisgICAgICAgICAgImlu
dGVncml0eSI6ICJzaGExLW5aNTVNV1hPQVhvQThBUVl4RCtVS25zZEVmbz0iLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJwb3N0Y3NzLWRpc2NhcmQtdW51c2Vk
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICJwb3N0Y3NzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjUuMi4x
NyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bv
c3Rjc3MvLS9wb3N0Y3NzLTUuMi4xNy50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS16MDlaZTRaTlpjaWtrckxxdnAxd2JJZWNPSXM9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwK
ICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiZmxhdHRlbiI6ICIxLjAuMiIs
Ci0gICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIsCi0gICAgICAgICAgICAidW5pcXMiOiAi
Mi4wLjAiCisgICAgICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAorICAgICAgICAgICAgImpzLWJh
c2U2NCI6ICIyLjEuOSIsCisgICAgICAgICAgICAic291cmNlLW1hcCI6ICIwLjUuNyIsCisgICAg
ICAgICAgICAic3VwcG9ydHMtY29sb3IiOiAiMy4yLjMiCiAgICAgICAgICAgfQogICAgICAgICB9
LAotICAgICAgICAicG9zdGNzcy1maWx0ZXItcGx1Z2lucyI6IHsKLSAgICAgICAgICAidmVyc2lv
biI6ICIyLjAuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAic3VwcG9y
dHMtY29sb3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjMiLAorICAgICAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdXBwb3J0cy1jb2xvci8tL3N1
cHBvcnRzLWNvbG9yLTMuMi4zLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLVph
d0ZCTE9WUVhIWXBrbEdzcTQ4dTRwZlZQWT0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4yIiwKLSAg
ICAgICAgICAgICJ1bmlxaWQiOiAiMy4xLjAiCisgICAgICAgICAgICAiaGFzLWZsYWciOiAiMS4w
LjAiCiAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAicG9zdGNz
cy1jb2xvcm1pbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMi4yIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wb3N0Y3NzLWNvbG9ybWluLy0vcG9zdGNz
cy1jb2xvcm1pbi0yLjIuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVpqRkJmVjhP
a0pvOWZzSnJKTWlvMGVUNWJrcz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICJjb2xvcm1pbiI6ICIxLjEuMiIsCisgICAgICAgICJwb3N0Y3NzIjog
IjUuMi4xNyIsCisgICAgICAgICJwb3N0Y3NzLXZhbHVlLXBhcnNlciI6ICIzLjMuMCIKKyAgICAg
IH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiaGFzLWZsYWciOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oYXMtZmxhZy8tL2hhcy1mbGFnLTEuMC4wLnRneiIsCisgICAg
ICAgICAgImludGVncml0eSI6ICJzaGExLW5aNTVNV1hPQVhvQThBUVl4RCtVS25zZEVmbz0iLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJwb3N0Y3NzLWxvYWRl
ciI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjEzLjAiLAotICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgInBvc3Rjc3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNS4y
LjE3IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
cG9zdGNzcy8tL3Bvc3Rjc3MtNS4yLjE3LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJz
aGExLXowOVplNFpOWmNpa2tyTHF2cDF3YkllY09Jcz0iLAogICAgICAgICAgICJkZXYiOiB0cnVl
LAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJsb2FkZXItdXRpbHMiOiAi
MC4yLjE2IiwKLSAgICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4yIgorICAgICAgICAgICAgImNo
YWxrIjogIjEuMS4zIiwKKyAgICAgICAgICAgICJqcy1iYXNlNjQiOiAiMi4xLjkiLAorICAgICAg
ICAgICAgInNvdXJjZS1tYXAiOiAiMC41LjciLAorICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9y
IjogIjMuMi4zIgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgInBvc3Rjc3MtbWVy
Z2UtaWRlbnRzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS43IiwKLSAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICJzdXBwb3J0cy1jb2xvciI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIzLjIuMyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3N1cHBvcnRzLWNvbG9yLy0vc3VwcG9ydHMtY29sb3ItMy4yLjMudGd6IiwK
KyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWmF3RkJMT1ZRWEhZcGtsR3NxNDh1NHBmVlBZ
PSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgImhhcyI6ICIxLjAuMSIsCi0gICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIs
Ci0gICAgICAgICAgICAicG9zdGNzcy12YWx1ZS1wYXJzZXIiOiAiMy4zLjAiCisgICAgICAgICAg
ICAiaGFzLWZsYWciOiAiMS4wLjAiCiAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9Cisg
ICAgfSwKKyAgICAicG9zdGNzcy1jb252ZXJ0LXZhbHVlcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjIuNi4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9w
b3N0Y3NzLWNvbnZlcnQtdmFsdWVzLy0vcG9zdGNzcy1jb252ZXJ0LXZhbHVlcy0yLjYuMS50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLXU5aFpQRndmMHVQUnd5SzdrbDNLNk5yazFpMD0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJwb3N0
Y3NzIjogIjUuMi4xNyIsCisgICAgICAgICJwb3N0Y3NzLXZhbHVlLXBhcnNlciI6ICIzLjMuMCIK
KyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiaGFzLWZsYWciOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oYXMtZmxhZy8tL2hhcy1mbGFnLTEuMC4wLnRneiIs
CisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLW5aNTVNV1hPQVhvQThBUVl4RCtVS25zZEVm
bz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJwb3N0Y3Nz
LW1lcmdlLWxvbmdoYW5kIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKLSAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJwb3N0Y3NzIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjUuMi4xNyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3Bvc3Rjc3MvLS9wb3N0Y3NzLTUuMi4xNy50Z3oiLAorICAgICAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS16MDlaZTRaTlpjaWtrckxxdnAxd2JJZWNPSXM9IiwKICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAicG9z
dGNzcyI6ICI1LjIuMiIKKyAgICAgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAgICAgICAg
ICAianMtYmFzZTY0IjogIjIuMS45IiwKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS43
IiwKKyAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIzLjIuMyIKICAgICAgICAgICB9CiAg
ICAgICAgIH0sCi0gICAgICAgICJwb3N0Y3NzLW1lcmdlLXJ1bGVzIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjIuMC4xMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAi
c3VwcG9ydHMtY29sb3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjMiLAorICAgICAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdXBwb3J0cy1jb2xv
ci8tL3N1cHBvcnRzLWNvbG9yLTMuMi4zLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJz
aGExLVphd0ZCTE9WUVhIWXBrbEdzcTQ4dTRwZlZQWT0iLAogICAgICAgICAgICJkZXYiOiB0cnVl
LAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4y
IiwKLSAgICAgICAgICAgICJ2ZW5kb3JzIjogIjEuMC4xIgorICAgICAgICAgICAgImhhcy1mbGFn
IjogIjEuMC4wIgogICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInBvc3Rjc3MtbWVz
c2FnZS1oZWxwZXJzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKLSAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJwb3N0
Y3NzLWRpc2NhcmQtY29tbWVudHMiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuNCIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNzcy1kaXNjYXJk
LWNvbW1lbnRzLy0vcG9zdGNzcy1kaXNjYXJkLWNvbW1lbnRzLTIuMC40LnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtdnY2Sit2MWJQYXpsek01UnQydUJVVXZnRGowPSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInBvc3Rjc3MiOiAiNS4y
LjE3IgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJoYXMtZmxh
ZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hhcy1mbGFnLy0vaGFzLWZsYWctMS4wLjAu
dGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtblo1NU1XWE9BWG9BOEFRWXhEK1VL
bnNkRWZvPSIsCiAgICAgICAgICAgImRldiI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgInBv
c3Rjc3MtbWluaWZ5LWZvbnQtdmFsdWVzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJwb3N0Y3NzIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjUuMi4xNyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3MvLS9wb3N0Y3NzLTUuMi4xNy50Z3oiLAorICAg
ICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS16MDlaZTRaTlpjaWtrckxxdnAxd2JJZWNPSXM9IiwK
ICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAg
ICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMCIsCi0gICAgICAgICAgICAicG9zdGNzcyI6ICI1
LjIuMiIsCi0gICAgICAgICAgICAicG9zdGNzcy12YWx1ZS1wYXJzZXIiOiAiMy4zLjAiCisgICAg
ICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAorICAgICAgICAgICAgImpzLWJhc2U2NCI6ICIyLjEu
OSIsCisgICAgICAgICAgICAic291cmNlLW1hcCI6ICIwLjUuNyIsCisgICAgICAgICAgICAic3Vw
cG9ydHMtY29sb3IiOiAiMy4yLjMiCiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAi
cG9zdGNzcy1taW5pZnktZ3JhZGllbnRzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4z
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJzdXBwb3J0cy1jb2xvciI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjIuMyIsCisgICAgICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N1cHBvcnRzLWNvbG9yLy0vc3VwcG9ydHMtY29s
b3ItMy4yLjMudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWmF3RkJMT1ZRWEhZ
cGtsR3NxNDh1NHBmVlBZPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJl
cXVpcmVzIjogewotICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiLAotICAgICAgICAgICAg
InBvc3Rjc3MtdmFsdWUtcGFyc2VyIjogIjMuMy4wIgorICAgICAgICAgICAgImhhcy1mbGFnIjog
IjEuMC4wIgogICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgInBv
c3Rjc3MtZGlzY2FyZC1kdXBsaWNhdGVzIjogeworICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3MtZGlz
Y2FyZC1kdXBsaWNhdGVzLy0vcG9zdGNzcy1kaXNjYXJkLWR1cGxpY2F0ZXMtMi4xLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS11YXZ5ZTRpc0dJRllwZXNTcThyaUFtTzVHVEk9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAicG9zdGNz
cyI6ICI1LjIuMTciCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAg
Imhhcy1mbGFnIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaGFzLWZsYWcvLS9oYXMtZmxh
Zy0xLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1uWjU1TVdYT0FYb0E4
QVFZeEQrVUtuc2RFZm89IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgICB9LAotICAg
ICAgICAicG9zdGNzcy1taW5pZnktcGFyYW1zIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC41IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJwb3N0Y3NzIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjUuMi4xNyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3MvLS9wb3N0Y3NzLTUuMi4xNy50Z3oiLAor
ICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS16MDlaZTRaTlpjaWtrckxxdnAxd2JJZWNPSXM9
IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICAgICAiYWxwaGFudW0tc29ydCI6ICIxLjAuMiIsCi0gICAgICAgICAgICAicG9zdGNzcyI6
ICI1LjIuMiIsCi0gICAgICAgICAgICAicG9zdGNzcy12YWx1ZS1wYXJzZXIiOiAiMy4zLjAiLAot
ICAgICAgICAgICAgInVuaXFzIjogIjIuMC4wIgorICAgICAgICAgICAgImNoYWxrIjogIjEuMS4z
IiwKKyAgICAgICAgICAgICJqcy1iYXNlNjQiOiAiMi4xLjkiLAorICAgICAgICAgICAgInNvdXJj
ZS1tYXAiOiAiMC41LjciLAorICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjMuMi4zIgog
ICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgInBvc3Rjc3MtbWluaWZ5LXNlbGVjdG9y
cyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuNSIsCi0gICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAic3VwcG9ydHMtY29sb3IiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMy4yLjMiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9zdXBwb3J0cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTMuMi4zLnRneiIsCisgICAgICAg
ICAgImludGVncml0eSI6ICJzaGExLVphd0ZCTE9WUVhIWXBrbEdzcTQ4dTRwZlZQWT0iLAogICAg
ICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAg
ICJhbHBoYW51bS1zb3J0IjogIjEuMC4yIiwKLSAgICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4y
IiwKLSAgICAgICAgICAgICJwb3N0Y3NzLXNlbGVjdG9yLXBhcnNlciI6ICIyLjIuMSIKKyAgICAg
ICAgICAgICJoYXMtZmxhZyI6ICIxLjAuMCIKICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9LAorICAgICJwb3N0Y3NzLWRpc2NhcmQtZW1wdHkiOiB7CisgICAgICAidmVyc2lv
biI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvcG9zdGNzcy1kaXNjYXJkLWVtcHR5Ly0vcG9zdGNzcy1kaXNjYXJkLWVtcHR5LTIuMS4wLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMHJTOW5WenRYcjJOeXQ1MlFNZlh6WDlQa3JV
PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInBv
c3Rjc3MiOiAiNS4yLjE3IgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAg
ICAgICJoYXMtZmxhZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hhcy1mbGFnLy0vaGFz
LWZsYWctMS4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtblo1NU1XWE9B
WG9BOEFRWXhEK1VLbnNkRWZvPSIsCisgICAgICAgICAgImRldiI6IHRydWUKICAgICAgICAgfSwK
LSAgICAgICAgInBvc3Rjc3MtbW9kdWxlcy1leHRyYWN0LWltcG9ydHMiOiB7Ci0gICAgICAgICAg
InZlcnNpb24iOiAiMS4wLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
InBvc3Rjc3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNS4yLjE3IiwKKyAgICAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNzcy8tL3Bvc3Rjc3Mt
NS4yLjE3LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXowOVplNFpOWmNpa2ty
THF2cDF3YkllY09Jcz0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1
aXJlcyI6IHsKLSAgICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4yIgorICAgICAgICAgICAgImNo
YWxrIjogIjEuMS4zIiwKKyAgICAgICAgICAgICJqcy1iYXNlNjQiOiAiMi4xLjkiLAorICAgICAg
ICAgICAgInNvdXJjZS1tYXAiOiAiMC41LjciLAorICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9y
IjogIjMuMi4zIgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgInBvc3Rjc3MtbW9k
dWxlcy1sb2NhbC1ieS1kZWZhdWx0IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwK
LSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJzdXBwb3J0cy1jb2xvciI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIzLjIuMyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N1cHBvcnRzLWNvbG9yLy0vc3VwcG9ydHMtY29sb3It
My4yLjMudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWmF3RkJMT1ZRWEhZcGts
R3NxNDh1NHBmVlBZPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVp
cmVzIjogewotICAgICAgICAgICAgImNzcy1zZWxlY3Rvci10b2tlbml6ZXIiOiAiMC42LjAiLAot
ICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiCisgICAgICAgICAgICAiaGFzLWZsYWciOiAi
MS4wLjAiCiAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAicG9z
dGNzcy1kaXNjYXJkLW92ZXJyaWRkZW4iOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuMSIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNzcy1kaXNj
YXJkLW92ZXJyaWRkZW4vLS9wb3N0Y3NzLWRpc2NhcmQtb3ZlcnJpZGRlbi0wLjEuMS50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLWl4NnZWVTlvYjdLSXpZZE1WV1o3Q3FObWpWZz0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJwb3N0Y3Nz
IjogIjUuMi4xNyIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAi
aGFzLWZsYWciOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oYXMtZmxhZy8tL2hhcy1mbGFn
LTEuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLW5aNTVNV1hPQVhvQThB
UVl4RCtVS25zZEVmbz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAg
ICAgICJwb3N0Y3NzLW1vZHVsZXMtc2NvcGUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjIiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgInBvc3Rjc3MiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiNS4yLjE3IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNzcy8tL3Bvc3Rjc3MtNS4yLjE3LnRneiIsCisg
ICAgICAgICAgImludGVncml0eSI6ICJzaGExLXowOVplNFpOWmNpa2tyTHF2cDF3YkllY09Jcz0i
LAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAg
ICAgICAgICJjc3Mtc2VsZWN0b3ItdG9rZW5pemVyIjogIjAuNi4wIiwKLSAgICAgICAgICAgICJw
b3N0Y3NzIjogIjUuMi4yIgorICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAg
ICAgICJqcy1iYXNlNjQiOiAiMi4xLjkiLAorICAgICAgICAgICAgInNvdXJjZS1tYXAiOiAiMC41
LjciLAorICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjMuMi4zIgogICAgICAgICAgIH0K
ICAgICAgICAgfSwKLSAgICAgICAgInBvc3Rjc3MtbW9kdWxlcy12YWx1ZXMiOiB7Ci0gICAgICAg
ICAgInZlcnNpb24iOiAiMS4yLjIiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgInN1cHBvcnRzLWNvbG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMi4zIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3VwcG9ydHMt
Y29sb3IvLS9zdXBwb3J0cy1jb2xvci0zLjIuMy50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1aYXdGQkxPVlFYSFlwa2xHc3E0OHU0cGZWUFk9IiwKICAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiaWNzcy1yZXBsYWNl
LXN5bWJvbHMiOiAiMS4wLjIiLAotICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiCisgICAg
ICAgICAgICAiaGFzLWZsYWciOiAiMS4wLjAiCiAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICB9CisgICAgfSwKKyAgICAicG9zdGNzcy1kaXNjYXJkLXVudXNlZCI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjIuMi4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9wb3N0Y3NzLWRpc2NhcmQtdW51c2VkLy0vcG9zdGNzcy1kaXNjYXJkLXVudXNlZC0yLjIu
My50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXZPTUxMTVdSLzhZME1pdGZzMFpMYlpO
UFJETT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJwb3N0Y3NzIjogIjUuMi4xNyIsCisgICAgICAgICJ1bmlxcyI6ICIyLjAuMCIKKyAgICAgIH0s
CisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiaGFzLWZsYWciOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9oYXMtZmxhZy8tL2hhcy1mbGFnLTEuMC4wLnRneiIsCisgICAgICAg
ICAgImludGVncml0eSI6ICJzaGExLW5aNTVNV1hPQVhvQThBUVl4RCtVS25zZEVmbz0iLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJwb3N0Y3NzLW5vcm1hbGl6
ZS1jaGFyc2V0IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKLSAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICJwb3N0Y3NzIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjUuMi4xNyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3Bvc3Rjc3MvLS9wb3N0Y3NzLTUuMi4xNy50Z3oiLAorICAgICAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS16MDlaZTRaTlpjaWtrckxxdnAxd2JJZWNPSXM9IiwKICAgICAgICAgICAiZGV2
IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAicG9zdGNzcyI6
ICI1LjIuMiIKKyAgICAgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAgICAgICAgICAianMt
YmFzZTY0IjogIjIuMS45IiwKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS43IiwKKyAg
ICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIzLjIuMyIKICAgICAgICAgICB9CiAgICAgICAg
IH0sCi0gICAgICAgICJwb3N0Y3NzLW5vcm1hbGl6ZS11cmwiOiB7Ci0gICAgICAgICAgInZlcnNp
b24iOiAiMy4wLjciLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgInN1cHBv
cnRzLWNvbG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMi4zIiwKKyAgICAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3VwcG9ydHMtY29sb3IvLS9z
dXBwb3J0cy1jb2xvci0zLjIuMy50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1a
YXdGQkxPVlFYSFlwa2xHc3E0OHU0cGZWUFk9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAg
ICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiaXMtYWJzb2x1dGUtdXJsIjogIjIu
MC4wIiwKLSAgICAgICAgICAgICJub3JtYWxpemUtdXJsIjogIjEuNi4xIiwKLSAgICAgICAgICAg
ICJwb3N0Y3NzIjogIjUuMi4yIiwKLSAgICAgICAgICAgICJwb3N0Y3NzLXZhbHVlLXBhcnNlciI6
ICIzLjMuMCIKKyAgICAgICAgICAgICJoYXMtZmxhZyI6ICIxLjAuMCIKICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJwb3N0Y3NzLWZpbHRlci1wbHVnaW5zIjog
eworICAgICAgInZlcnNpb24iOiAiMi4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3MtZmlsdGVyLXBsdWdpbnMvLS9wb3N0Y3NzLWZpbHRl
ci1wbHVnaW5zLTIuMC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYllXR0pUVFhO
YXhDRGtxRmdHNGZYVUtHMkV3PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjE3IiwKKyAgICAgICAgInVuaXFpZCI6ICI0
LjEuMSIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiaGFzLWZs
YWciOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oYXMtZmxhZy8tL2hhcy1mbGFnLTEuMC4w
LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLW5aNTVNV1hPQVhvQThBUVl4RCtV
S25zZEVmbz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJw
b3N0Y3NzLW9yZGVyZWQtdmFsdWVzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4yIiwK
LSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJwb3N0Y3NzIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjUuMi4xNyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3MvLS9wb3N0Y3NzLTUuMi4xNy50Z3oiLAorICAgICAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS16MDlaZTRaTlpjaWtrckxxdnAxd2JJZWNPSXM9IiwKICAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAg
ICAicG9zdGNzcyI6ICI1LjIuMiIsCi0gICAgICAgICAgICAicG9zdGNzcy12YWx1ZS1wYXJzZXIi
OiAiMy4zLjAiCisgICAgICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAorICAgICAgICAgICAgImpz
LWJhc2U2NCI6ICIyLjEuOSIsCisgICAgICAgICAgICAic291cmNlLW1hcCI6ICIwLjUuNyIsCisg
ICAgICAgICAgICAic3VwcG9ydHMtY29sb3IiOiAiMy4yLjMiCiAgICAgICAgICAgfQogICAgICAg
ICB9LAotICAgICAgICAicG9zdGNzcy1yZWR1Y2UtaWRlbnRzIjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMy4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJzdXBw
b3J0cy1jb2xvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjIuMyIsCisgICAgICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N1cHBvcnRzLWNvbG9yLy0v
c3VwcG9ydHMtY29sb3ItMy4yLjMudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
WmF3RkJMT1ZRWEhZcGtsR3NxNDh1NHBmVlBZPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAg
ICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiLAot
ICAgICAgICAgICAgInBvc3Rjc3MtdmFsdWUtcGFyc2VyIjogIjMuMy4wIgorICAgICAgICAgICAg
Imhhcy1mbGFnIjogIjEuMC4wIgogICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInBv
c3Rjc3MtcmVkdWNlLWluaXRpYWwiOiB7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAg
ICJwb3N0Y3NzLWZsZXhidWdzLWZpeGVzIjogeworICAgICAgInZlcnNpb24iOiAiMy4yLjAiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3MtZmxl
eGJ1Z3MtZml4ZXMvLS9wb3N0Y3NzLWZsZXhidWdzLWZpeGVzLTMuMi4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTUxMi0wQXVEOUhHMUV5My8zbnFQV3U5eXFmN3JMMEtDUHU1VmdqRHNq
ZjVtekVjdW85SC96OG5jby9mbGpLZ2pzT1VyWnlwYTk1TUkwa1M0eEJaZUJ6ejJsdz09IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAicG9zdGNzcyI6
ICI2LjAuMTEiCisgICAgICB9CisgICAgfSwKKyAgICAicG9zdGNzcy1sb2FkLWNvbmZpZyI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9wb3N0Y3NzLWxvYWQtY29uZmlnLy0vcG9zdGNzcy1sb2FkLWNvbmZp
Zy0xLjIuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVU1NmEvSjNjaGlBU0hyK2Rq
RFp6NE01UTBvbz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJjb3NtaWNvbmZpZyI6ICIyLjIuMiIsCisgICAgICAgICJvYmplY3QtYXNzaWduIjog
IjQuMS4xIiwKKyAgICAgICAgInBvc3Rjc3MtbG9hZC1vcHRpb25zIjogIjEuMi4wIiwKKyAgICAg
ICAgInBvc3Rjc3MtbG9hZC1wbHVnaW5zIjogIjIuMy4wIgorICAgICAgfQorICAgIH0sCisgICAg
InBvc3Rjc3MtbG9hZC1vcHRpb25zIjogeworICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3MtbG9hZC1v
cHRpb25zLy0vcG9zdGNzcy1sb2FkLW9wdGlvbnMtMS4yLjAudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1zSml4VlozYXd0OEV2QXV6ZGZtYVhQNHJiWXc9IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY29zbWljb25maWciOiAiMi4yLjIi
LAorICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMSIKKyAgICAgIH0KKyAgICB9LAorICAg
ICJwb3N0Y3NzLWxvYWQtcGx1Z2lucyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMy4wIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wb3N0Y3NzLWxvYWQt
cGx1Z2lucy8tL3Bvc3Rjc3MtbG9hZC1wbHVnaW5zLTIuMy4wLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtZEZkb0VXV1pyS0x3Q2ZyVUpyQUJkUVNkalpJPSIsCisgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImNvc21pY29uZmlnIjogIjIuMi4y
IiwKKyAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjEiCisgICAgICB9CisgICAgfSwKKyAg
ICAicG9zdGNzcy1sb2FkZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuNiIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNzcy1sb2FkZXIvLS9w
b3N0Y3NzLWxvYWRlci0yLjAuNi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItSElx
N3l5MWhoOUtJNDcyWTM4aVNSVjRXdXBaVU55NnpPYmt4UU0vWnVJbm9hRTIrUHlYNE5jTzZqalA1
SEc1bVhMN2o1a2NORWwwZkFHNEt2YTdPOXc9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImxvYWRlci11dGlscyI6ICIxLjEuMCIsCisgICAgICAg
ICJwb3N0Y3NzIjogIjYuMC4xMSIsCisgICAgICAgICJwb3N0Y3NzLWxvYWQtY29uZmlnIjogIjEu
Mi4wIiwKKyAgICAgICAgInNjaGVtYS11dGlscyI6ICIwLjMuMCIKKyAgICAgIH0KKyAgICB9LAor
ICAgICJwb3N0Y3NzLW1lcmdlLWlkZW50cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMS43IiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wb3N0Y3NzLW1l
cmdlLWlkZW50cy8tL3Bvc3Rjc3MtbWVyZ2UtaWRlbnRzLTIuMS43LnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtVEZVd01Ud0k0ZFd6dS9QU3U4ZEg0bmp1b25BPSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImhhcyI6ICIxLjAuMSIsCisg
ICAgICAgICJwb3N0Y3NzIjogIjUuMi4xNyIsCisgICAgICAgICJwb3N0Y3NzLXZhbHVlLXBhcnNl
ciI6ICIzLjMuMCIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAi
aGFzLWZsYWciOiB7CiAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWly
ZXMiOiB7Ci0gICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIKLSAgICAgICAgICB9Ci0gICAg
ICAgIH0sCi0gICAgICAgICJwb3N0Y3NzLXJlZHVjZS10cmFuc2Zvcm1zIjogewotICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgInBv
c3Rjc3MiOiAiNS4yLjIiLAotICAgICAgICAgICAgInBvc3Rjc3MtdmFsdWUtcGFyc2VyIjogIjMu
My4wIgotICAgICAgICAgIH0KKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvaGFzLWZsYWcvLS9oYXMtZmxhZy0xLjAuMC50Z3oiLAorICAgICAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1uWjU1TVdYT0FYb0E4QVFZeEQrVUtuc2RFZm89IiwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAicG9zdGNzcy1zZWxlY3Rvci1wYXJz
ZXIiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAotICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgInBvc3Rjc3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNS4y
LjE3IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
cG9zdGNzcy8tL3Bvc3Rjc3MtNS4yLjE3LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJz
aGExLXowOVplNFpOWmNpa2tyTHF2cDF3YkllY09Jcz0iLAogICAgICAgICAgICJkZXYiOiB0cnVl
LAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJmbGF0dGVuIjogIjEuMC4y
IiwKLSAgICAgICAgICAgICJpbmRleGVzLW9mIjogIjEuMC4xIiwKLSAgICAgICAgICAgICJ1bmlx
IjogIjEuMC4xIgorICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAgICAgICJq
cy1iYXNlNjQiOiAiMi4xLjkiLAorICAgICAgICAgICAgInNvdXJjZS1tYXAiOiAiMC41LjciLAor
ICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjMuMi4zIgogICAgICAgICAgIH0KICAgICAg
ICAgfSwKLSAgICAgICAgInBvc3Rjc3Mtc3ZnbyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIy
LjEuNSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAic3VwcG9ydHMtY29s
b3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjMiLAorICAgICAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdXBwb3J0cy1jb2xvci8tL3N1cHBvcnRz
LWNvbG9yLTMuMi4zLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLVphd0ZCTE9W
UVhIWXBrbEdzcTQ4dTRwZlZQWT0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJpcy1zdmciOiAiMi4wLjEiLAotICAgICAgICAg
ICAgInBvc3Rjc3MiOiAiNS4yLjIiLAotICAgICAgICAgICAgInBvc3Rjc3MtdmFsdWUtcGFyc2Vy
IjogIjMuMy4wIiwKLSAgICAgICAgICAgICJzdmdvIjogIjAuNy4xIgorICAgICAgICAgICAgImhh
cy1mbGFnIjogIjEuMC4wIgogICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0s
CisgICAgInBvc3Rjc3MtbWVyZ2UtbG9uZ2hhbmQiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAu
MiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNz
cy1tZXJnZS1sb25naGFuZC8tL3Bvc3Rjc3MtbWVyZ2UtbG9uZ2hhbmQtMi4wLjIudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1JOWtNMFNld3AzbVVrVk15YzVBMG9hVHoxbGc9IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAicG9zdGNzcyI6
ICI1LjIuMTciCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImhh
cy1mbGFnIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaGFzLWZsYWcvLS9oYXMtZmxhZy0x
LjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1uWjU1TVdYT0FYb0E4QVFZ
eEQrVUtuc2RFZm89IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgICB9LAotICAgICAg
ICAicG9zdGNzcy11bmlxdWUtc2VsZWN0b3JzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIu
MC4yIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJwb3N0Y3NzIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjUuMi4xNyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3MvLS9wb3N0Y3NzLTUuMi4xNy50Z3oiLAor
ICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS16MDlaZTRaTlpjaWtrckxxdnAxd2JJZWNPSXM9
IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICAgICAiYWxwaGFudW0tc29ydCI6ICIxLjAuMiIsCi0gICAgICAgICAgICAicG9zdGNzcyI6
ICI1LjIuMiIsCi0gICAgICAgICAgICAidW5pcXMiOiAiMi4wLjAiCisgICAgICAgICAgICAiY2hh
bGsiOiAiMS4xLjMiLAorICAgICAgICAgICAgImpzLWJhc2U2NCI6ICIyLjEuOSIsCisgICAgICAg
ICAgICAic291cmNlLW1hcCI6ICIwLjUuNyIsCisgICAgICAgICAgICAic3VwcG9ydHMtY29sb3Ii
OiAiMy4yLjMiCiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAicG9zdGNzcy12YWx1
ZS1wYXJzZXIiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMy4zLjAiLAotICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAg
ICAicG9zdGNzcy16aW5kZXgiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4xLjEiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjMuMi4zIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci0zLjIu
My50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1aYXdGQkxPVlFYSFlwa2xHc3E0
OHU0cGZWUFk9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMi
OiB7Ci0gICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIsCi0gICAgICAgICAgICAidW5pcXMi
OiAiMi4wLjAiCisgICAgICAgICAgICAiaGFzLWZsYWciOiAiMS4wLjAiCiAgICAgICAgICAgfQot
ICAgICAgICB9LAotICAgICAgICAicHJlbHVkZS1scyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICIxLjEuMiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0
cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJwcmVwZW5kLWh0dHAiOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjQiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAi
ZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAicHJlc2VydmUiOiB7Ci0gICAgICAgICAg
InZlcnNpb24iOiAiMC4yLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAg
ICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAicHJldHR5LWVycm9yIjogewotICAg
ICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJwb3N0Y3NzLW1lcmdlLXJ1bGVzIjogewor
ICAgICAgInZlcnNpb24iOiAiMi4xLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3Bvc3Rjc3MtbWVyZ2UtcnVsZXMvLS9wb3N0Y3NzLW1lcmdlLXJ1bGVz
LTIuMS4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMGQ5ZCtxZXhyTU8rVlQ4T25o
RG9mR0cxOXlFPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImJyb3dzZXJzbGlzdCI6ICIxLjcuNyIsCisgICAgICAgICJjYW5pdXNlLWFwaSI6ICIx
LjYuMSIsCisgICAgICAgICJwb3N0Y3NzIjogIjUuMi4xNyIsCisgICAgICAgICJwb3N0Y3NzLXNl
bGVjdG9yLXBhcnNlciI6ICIyLjIuMyIsCisgICAgICAgICJ2ZW5kb3JzIjogIjEuMC4xIgorICAg
ICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJicm93c2Vyc2xpc3QiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS43LjciLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9icm93c2Vyc2xpc3QvLS9icm93c2Vyc2xpc3QtMS43
LjcudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtQzlkbkJDV0w2Q215T1l1MURr
dGkwYUZtc0xrPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVz
IjogewotICAgICAgICAgICAgInJlbmRlcmtpZCI6ICIyLjAuMCIsCi0gICAgICAgICAgICAidXRp
bGEiOiAiMC40LjAiCisgICAgICAgICAgICAiY2FuaXVzZS1kYiI6ICIxLjAuMzAwMDA3MjYiLAor
ICAgICAgICAgICAgImVsZWN0cm9uLXRvLWNocm9taXVtIjogIjEuMy4yMSIKICAgICAgICAgICB9
CiAgICAgICAgIH0sCi0gICAgICAgICJwcmV0dHktZm9ybWF0IjogewotICAgICAgICAgICJ2ZXJz
aW9uIjogIjMuOC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRl
diI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInByaXZhdGUiOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMC4xLjYiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAi
ZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAicHJvY2VzcyI6IHsKLSAgICAgICAgICAi
dmVyc2lvbiI6ICIwLjExLjkiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAg
ICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAicHJvY2Vzcy1uZXh0aWNrLWFyZ3Mi
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjciLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAicHJvZ3Jl
c3MiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjgiLAotICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgImhhcy1mbGFnIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
aGFzLWZsYWcvLS9oYXMtZmxhZy0xLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1uWjU1TVdYT0FYb0E4QVFZeEQrVUtuc2RFZm89IiwKICAgICAgICAgICAiZGV2IjogdHJ1
ZQogICAgICAgICB9LAotICAgICAgICAicHJvbWlzZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICI3LjEuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0
cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJhc2FwIjogIjIuMC41
IgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInByb3h5LWFkZHIiOiB7Ci0gICAg
ICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgInBvc3Rjc3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNS4yLjE3IiwKKyAgICAg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNzcy8tL3Bv
c3Rjc3MtNS4yLjE3LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXowOVplNFpO
WmNpa2tyTHF2cDF3YkllY09Jcz0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJmb3J3YXJkZWQiOiAiMC4xLjAiLAotICAgICAg
ICAgICAgImlwYWRkci5qcyI6ICIxLjEuMSIKKyAgICAgICAgICAgICJjaGFsayI6ICIxLjEuMyIs
CisgICAgICAgICAgICAianMtYmFzZTY0IjogIjIuMS45IiwKKyAgICAgICAgICAgICJzb3VyY2Ut
bWFwIjogIjAuNS43IiwKKyAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIzLjIuMyIKICAg
ICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJwcnIiOiB7Ci0gICAgICAgICAgInZlcnNp
b24iOiAiMC4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2
IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAicHNldWRvbWFwIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC4yIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInB1bnljb2RlIjogewotICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuNC4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInEiOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMS40LjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAi
ZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAicXMiOiB7Ci0gICAgICAgICAgInZlcnNp
b24iOiAiNi4yLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2
IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAicXVlcnktc3RyaW5nIjogewotICAgICAgICAg
ICJ2ZXJzaW9uIjogIjQuMi4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICJzdXBwb3J0cy1jb2xvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjIuMyIsCisgICAg
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N1cHBvcnRzLWNv
bG9yLy0vc3VwcG9ydHMtY29sb3ItMy4yLjMudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtWmF3RkJMT1ZRWEhZcGtsR3NxNDh1NHBmVlBZPSIsCiAgICAgICAgICAgImRldiI6IHRy
dWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgIm9iamVjdC1hc3NpZ24i
OiAiNC4xLjAiLAotICAgICAgICAgICAgInN0cmljdC11cmktZW5jb2RlIjogIjEuMS4wIgorICAg
ICAgICAgICAgImhhcy1mbGFnIjogIjEuMC4wIgogICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAg
ICAgICAgInF1ZXJ5c3RyaW5nIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKLSAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAg
fSwKLSAgICAgICAgInF1ZXJ5c3RyaW5nLWVzMyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIw
LjIuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVl
Ci0gICAgICAgIH0sCi0gICAgICAgICJxdWVyeXN0cmluZ2lmeSI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIwLjAuNCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICB9Cisg
ICAgICB9CisgICAgfSwKKyAgICAicG9zdGNzcy1tZXNzYWdlLWhlbHBlcnMiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvcG9zdGNzcy1tZXNzYWdlLWhlbHBlcnMvLS9wb3N0Y3NzLW1lc3NhZ2UtaGVscGVy
cy0yLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXBQTDArcmJrL2dBdkN1MEFC
SGpOOVMrYnBnND0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJwb3N0Y3NzLW1p
bmlmeS1mb250LXZhbHVlcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wb3N0Y3NzLW1pbmlmeS1mb250
LXZhbHVlcy8tL3Bvc3Rjc3MtbWluaWZ5LWZvbnQtdmFsdWVzLTEuMC41LnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtUzFqdHRXWkI2NmZJUjBxelVteXYxN3ZleTJrPSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgIm9iamVjdC1hc3NpZ24i
OiAiNC4xLjEiLAorICAgICAgICAicG9zdGNzcyI6ICI1LjIuMTciLAorICAgICAgICAicG9zdGNz
cy12YWx1ZS1wYXJzZXIiOiAiMy4zLjAiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6
IHsKKyAgICAgICAgImhhcy1mbGFnIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwK
KyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaGFzLWZs
YWcvLS9oYXMtZmxhZy0xLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1u
WjU1TVdYT0FYb0E4QVFZeEQrVUtuc2RFZm89IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZQogICAg
ICAgICB9LAotICAgICAgICAicmFuZG9tYXRpYyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIx
LjEuNSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAicG9zdGNzcyI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICI1LjIuMTciLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wb3N0Y3NzLy0vcG9zdGNzcy01LjIuMTcudGd6IiwK
KyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtejA5WmU0Wk5aY2lra3JMcXZwMXdiSWVjT0lz
PSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgImlzLW51bWJlciI6ICIyLjEuMCIsCi0gICAgICAgICAgICAia2luZC1vZiI6ICIz
LjAuNCIKKyAgICAgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAgICAgICAgICAianMtYmFz
ZTY0IjogIjIuMS45IiwKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS43IiwKKyAgICAg
ICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIzLjIuMyIKICAgICAgICAgICB9CiAgICAgICAgIH0s
Ci0gICAgICAgICJyYW5nZS1wYXJzZXIiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4yLjAi
LAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAg
ICAgICB9LAotICAgICAgICAicmVhY3QtZGV2LXV0aWxzIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMi4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJzdXBwb3J0
cy1jb2xvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjIuMyIsCisgICAgICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N1cHBvcnRzLWNvbG9yLy0vc3Vw
cG9ydHMtY29sb3ItMy4yLjMudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWmF3
RkJMT1ZRWEhZcGtsR3NxNDh1NHBmVlBZPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAg
ICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImFuc2ktaHRtbCI6ICIwLjAuNSIsCi0g
ICAgICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAotICAgICAgICAgICAgImVzY2FwZS1zdHJpbmct
cmVnZXhwIjogIjEuMC41IiwKLSAgICAgICAgICAgICJodG1sLWVudGl0aWVzIjogIjEuMi4wIiwK
LSAgICAgICAgICAgICJvcG4iOiAiNC4wLjIiLAotICAgICAgICAgICAgInNvY2tqcy1jbGllbnQi
OiAiMS4wLjMiLAotICAgICAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiCi0gICAgICAgICAg
fSwKLSAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewotICAgICAgICAgICAgImFuc2ktcmVnZXgi
OiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKLSAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICJhbnNpLXN0eWxlcyI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAi
Mi4yLjEiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJk
ZXYiOiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImNoYWxrIjogewotICAgICAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJlcyI6
IHsKLSAgICAgICAgICAgICAgICAiYW5zaS1zdHlsZXMiOiAiMi4yLjEiLAotICAgICAgICAgICAg
ICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6ICIxLjAuNSIsCi0gICAgICAgICAgICAgICAgImhh
cy1hbnNpIjogIjIuMC4wIiwKLSAgICAgICAgICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIs
Ci0gICAgICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjIuMC4wIgotICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImRlYnVnIjogewotICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjIuMCIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAg
ICAgICAgICAgICAgICAibXMiOiAiMC43LjEiCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAiZXNjYXBlLXN0cmluZy1yZWdleHAiOiB7Ci0gICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC41IiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAg
ICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJldmVu
dHNvdXJjZSI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjYiLAotICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAg
ICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgIm9yaWdpbmFsIjogIjEuMC4w
IgotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImZheWUtd2Vi
c29ja2V0IjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjcuMyIsCi0gICAgICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAid2Vic29ja2V0LWRyaXZlciI6
ICIwLjYuNSIKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJo
YXMtYW5zaSI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAotICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAg
ICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgImFuc2ktcmVnZXgiOiAiMi4w
LjAiCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiaW5oZXJp
dHMiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4zIiwKLSAgICAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICJqc29uMyI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMy4z
LjIiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYi
OiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgIm1zIjogewotICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjcuMSIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAib2Jq
ZWN0LWFzc2lnbiI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiNC4xLjAiLAotICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAib3Jp
Z2luYWwiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAg
ICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICJ1cmwtcGFyc2UiOiAiMS4wLjUi
Ci0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAg
ICAgICAgICAgICAgInVybC1wYXJzZSI6IHsKLSAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMC41IiwKLSAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAg
ICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgICAgICAgICAicXVlcnlzdHJpbmdpZnkiOiAiMC4wLjQiLAotICAgICAgICAgICAg
ICAgICAgICAicmVxdWlyZXMtcG9ydCI6ICIxLjAuMCIKLSAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAicGlua2llIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuNCIsCi0gICAg
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJw
aW5raWUtcHJvbWlzZSI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAotICAg
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsK
LSAgICAgICAgICAgICAgICAicGlua2llIjogIjIuMC40IgotICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgInF1ZXJ5c3RyaW5naWZ5IjogewotICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjAuNCIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAicmVx
dWlyZXMtcG9ydCI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgInNvY2tqcy1jbGllbnQiOiB7Ci0gICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4zIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAg
ICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAg
ICAgICAgICAgICAgICJkZWJ1ZyI6ICIyLjIuMCIsCi0gICAgICAgICAgICAgICAgImV2ZW50c291
cmNlIjogIjAuMS42IiwKLSAgICAgICAgICAgICAgICAiZmF5ZS13ZWJzb2NrZXQiOiAiMC43LjMi
LAotICAgICAgICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCi0gICAgICAgICAgICAgICAg
Impzb24zIjogIjMuMy4yIiwKLSAgICAgICAgICAgICAgICAidXJsLXBhcnNlIjogIjEuMS4zIgot
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInN0cmlwLWFuc2ki
OiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKLSAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAgICAg
InJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICJhbnNpLXJlZ2V4IjogIjIuMC4wIgotICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9y
IjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCi0gICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAidXJsLXBhcnNlIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIx
LjEuMyIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRl
diI6IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICAgICAi
cXVlcnlzdHJpbmdpZnkiOiAiMC4wLjQiLAotICAgICAgICAgICAgICAgICJyZXF1aXJlcy1wb3J0
IjogIjEuMC4wIgotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
IndlYnNvY2tldC1kcml2ZXIiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNi41IiwK
LSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZSwKLSAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICJ3ZWJzb2Nr
ZXQtZXh0ZW5zaW9ucyI6ICIwLjEuMSIKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICJ3ZWJzb2NrZXQtZXh0ZW5zaW9ucyI6IHsKLSAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMC4xLjEiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAgICB9CisgICAgICAgICAgICAiaGFzLWZsYWci
OiAiMS4wLjAiCiAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAi
cG9zdGNzcy1taW5pZnktZ3JhZGllbnRzIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3MtbWlu
aWZ5LWdyYWRpZW50cy8tL3Bvc3Rjc3MtbWluaWZ5LWdyYWRpZW50cy0xLjAuNS50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLVhiMmhFM053UDRQUHRLUHFPSUhZMTEvMTV1RT0iLAorICAg
ICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJwb3N0Y3NzIjog
IjUuMi4xNyIsCisgICAgICAgICJwb3N0Y3NzLXZhbHVlLXBhcnNlciI6ICIzLjMuMCIKKyAgICAg
IH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiaGFzLWZsYWciOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oYXMtZmxhZy8tL2hhcy1mbGFnLTEuMC4wLnRneiIsCisgICAg
ICAgICAgImludGVncml0eSI6ICJzaGExLW5aNTVNV1hPQVhvQThBUVl4RCtVS25zZEVmbz0iLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJyZWFkLXBrZyI6IHsK
LSAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAicG9zdGNzcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI1LjIuMTciLAor
ICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wb3N0Y3Nz
Ly0vcG9zdGNzcy01LjIuMTcudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtejA5
WmU0Wk5aY2lra3JMcXZwMXdiSWVjT0lzPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAg
ICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImxvYWQtanNvbi1maWxlIjogIjEuMS4w
IiwKLSAgICAgICAgICAgICJub3JtYWxpemUtcGFja2FnZS1kYXRhIjogIjIuMy41IiwKLSAgICAg
ICAgICAgICJwYXRoLXR5cGUiOiAiMS4xLjAiCisgICAgICAgICAgICAiY2hhbGsiOiAiMS4xLjMi
LAorICAgICAgICAgICAgImpzLWJhc2U2NCI6ICIyLjEuOSIsCisgICAgICAgICAgICAic291cmNl
LW1hcCI6ICIwLjUuNyIsCisgICAgICAgICAgICAic3VwcG9ydHMtY29sb3IiOiAiMy4yLjMiCiAg
ICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAicmVhZC1wa2ctdXAiOiB7Ci0gICAgICAg
ICAgInZlcnNpb24iOiAiMS4wLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgInN1cHBvcnRzLWNvbG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMi4zIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3VwcG9ydHMt
Y29sb3IvLS9zdXBwb3J0cy1jb2xvci0zLjIuMy50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1aYXdGQkxPVlFYSFlwa2xHc3E0OHU0cGZWUFk9IiwKICAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiZmluZC11cCI6ICIx
LjEuMiIsCi0gICAgICAgICAgICAicmVhZC1wa2ciOiAiMS4xLjAiCisgICAgICAgICAgICAiaGFz
LWZsYWciOiAiMS4wLjAiCiAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwK
KyAgICAicG9zdGNzcy1taW5pZnktcGFyYW1zIjogeworICAgICAgInZlcnNpb24iOiAiMS4yLjIi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3Mt
bWluaWZ5LXBhcmFtcy8tL3Bvc3Rjc3MtbWluaWZ5LXBhcmFtcy0xLjIuMi50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLXJTemdjVGM3bERzOWt3by9wWm8xakNqVzhmTT0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJhbHBoYW51bS1zb3J0
IjogIjEuMC4yIiwKKyAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjE3IiwKKyAgICAgICAgInBvc3Rj
c3MtdmFsdWUtcGFyc2VyIjogIjMuMy4wIiwKKyAgICAgICAgInVuaXFzIjogIjIuMC4wIgorICAg
ICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJoYXMtZmxhZyI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2hhcy1mbGFnLy0vaGFzLWZsYWctMS4wLjAudGd6IiwKKyAg
ICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtblo1NU1XWE9BWG9BOEFRWXhEK1VLbnNkRWZvPSIs
CisgICAgICAgICAgImRldiI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgInJlYWRhYmxlLXN0
cmVhbSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuNiIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAicG9zdGNzcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI1
LjIuMTciLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9wb3N0Y3NzLy0vcG9zdGNzcy01LjIuMTcudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtejA5WmU0Wk5aY2lra3JMcXZwMXdiSWVjT0lzPSIsCiAgICAgICAgICAgImRldiI6IHRy
dWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImNvcmUtdXRpbC1pcyI6
ICIxLjAuMiIsCi0gICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiLAotICAgICAgICAgICAg
ImlzYXJyYXkiOiAiMS4wLjAiLAotICAgICAgICAgICAgInByb2Nlc3MtbmV4dGljay1hcmdzIjog
IjEuMC43IiwKLSAgICAgICAgICAgICJzdHJpbmdfZGVjb2RlciI6ICIwLjEwLjMxIiwKLSAgICAg
ICAgICAgICJ1dGlsLWRlcHJlY2F0ZSI6ICIxLjAuMiIKKyAgICAgICAgICAgICJjaGFsayI6ICIx
LjEuMyIsCisgICAgICAgICAgICAianMtYmFzZTY0IjogIjIuMS45IiwKKyAgICAgICAgICAgICJz
b3VyY2UtbWFwIjogIjAuNS43IiwKKyAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIzLjIu
MyIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJyZWFkZGlycCI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAic3VwcG9ydHMtY29sb3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjMiLAor
ICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdXBwb3J0
cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTMuMi4zLnRneiIsCisgICAgICAgICAgImludGVncml0
eSI6ICJzaGExLVphd0ZCTE9WUVhIWXBrbEdzcTQ4dTRwZlZQWT0iLAogICAgICAgICAgICJkZXYi
OiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJncmFjZWZ1bC1m
cyI6ICI0LjEuOCIsCi0gICAgICAgICAgICAibWluaW1hdGNoIjogIjMuMC4zIiwKLSAgICAgICAg
ICAgICJyZWFkYWJsZS1zdHJlYW0iOiAiMi4wLjYiLAotICAgICAgICAgICAgInNldC1pbW1lZGlh
dGUtc2hpbSI6ICIxLjAuMSIKKyAgICAgICAgICAgICJoYXMtZmxhZyI6ICIxLjAuMCIKICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJwb3N0Y3NzLW1pbmlmeS1z
ZWxlY3RvcnMiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMSIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNzcy1taW5pZnktc2VsZWN0b3JzLy0v
cG9zdGNzcy1taW5pZnktc2VsZWN0b3JzLTIuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtc3NhcGpBQnl6NUc1TXRHa2xsQ0JGREVYTmI4PSIsCisgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFscGhhbnVtLXNvcnQiOiAiMS4wLjIiLAor
ICAgICAgICAiaGFzIjogIjEuMC4xIiwKKyAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjE3IiwKKyAg
ICAgICAgInBvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyIjogIjIuMi4zIgorICAgICAgfSwKKyAgICAg
ICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJoYXMtZmxhZyI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2hhcy1mbGFnLy0vaGFzLWZsYWctMS4wLjAudGd6IiwKKyAgICAgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtblo1NU1XWE9BWG9BOEFRWXhEK1VLbnNkRWZvPSIsCisgICAgICAgICAg
ImRldiI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgInJlYWRsaW5lMiI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjAuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAicG9zdGNzcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI1LjIuMTciLAorICAgICAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wb3N0Y3NzLy0vcG9zdGNz
cy01LjIuMTcudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtejA5WmU0Wk5aY2lr
a3JMcXZwMXdiSWVjT0lzPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJl
cXVpcmVzIjogewotICAgICAgICAgICAgImNvZGUtcG9pbnQtYXQiOiAiMS4wLjAiLAotICAgICAg
ICAgICAgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIjEuMC4wIiwKLSAgICAgICAgICAgICJt
dXRlLXN0cmVhbSI6ICIwLjAuNSIKKyAgICAgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAg
ICAgICAgICAianMtYmFzZTY0IjogIjIuMS45IiwKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjog
IjAuNS43IiwKKyAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIzLjIuMyIKICAgICAgICAg
ICB9CiAgICAgICAgIH0sCi0gICAgICAgICJyZWN1cnNpdmUtcmVhZGRpciI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAic3VwcG9ydHMtY29sb3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjMiLAorICAg
ICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdXBwb3J0cy1j
b2xvci8tL3N1cHBvcnRzLWNvbG9yLTMuMi4zLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6
ICJzaGExLVphd0ZCTE9WUVhIWXBrbEdzcTQ4dTRwZlZQWT0iLAogICAgICAgICAgICJkZXYiOiB0
cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJtaW5pbWF0Y2giOiAi
My4wLjIiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewotICAgICAg
ICAgICAgIm1pbmltYXRjaCI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjIiLAot
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgICAgICJkZXYiOiB0cnVl
LAotICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgImJyYWNlLWV4
cGFuc2lvbiI6ICIxLjEuNiIKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgImhhcy1mbGFnIjogIjEuMC4wIgogICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAg
ICAgInJlZGV5ZWQiOiB7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJwb3N0Y3Nz
LW1vZHVsZXMtZXh0cmFjdC1pbXBvcnRzIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3MtbW9k
dWxlcy1leHRyYWN0LWltcG9ydHMvLS9wb3N0Y3NzLW1vZHVsZXMtZXh0cmFjdC1pbXBvcnRzLTEu
MS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdGhUSmNndm1nVzZ1NDErenBmcWgy
NmFnWGRzPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgInBvc3Rjc3MiOiAiNi4wLjExIgorICAgICAgfQorICAgIH0sCisgICAgInBvc3Rjc3MtbW9k
dWxlcy1sb2NhbC1ieS1kZWZhdWx0IjogeworICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3MtbW9kdWxl
cy1sb2NhbC1ieS1kZWZhdWx0Ly0vcG9zdGNzcy1tb2R1bGVzLWxvY2FsLWJ5LWRlZmF1bHQtMS4y
LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS05OWdNT1l4YU9UK25sa1JtdlJsUUNu
MWh3R2s9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAiY3NzLXNlbGVjdG9yLXRva2VuaXplciI6ICIwLjcuMCIsCisgICAgICAgICJwb3N0Y3NzIjog
IjYuMC4xMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJwb3N0Y3NzLW1vZHVsZXMtc2NvcGUiOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNzcy1tb2R1bGVzLXNjb3BlLy0vcG9zdGNzcy1tb2R1bGVz
LXNjb3BlLTEuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMXVwa21VeDUrWHRp
cHl0Q2I3NWdWcUdVdTVBPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgImNzcy1zZWxlY3Rvci10b2tlbml6ZXIiOiAiMC43LjAiLAorICAgICAgICAi
cG9zdGNzcyI6ICI2LjAuMTEiCisgICAgICB9CisgICAgfSwKKyAgICAicG9zdGNzcy1tb2R1bGVz
LXZhbHVlcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMy4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wb3N0Y3NzLW1vZHVsZXMtdmFsdWVzLy0vcG9z
dGNzcy1tb2R1bGVzLXZhbHVlcy0xLjMuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LTdQK3AxK0dTVVlPSjlDclE2RDl5cnNSVzZpQT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICJpY3NzLXJlcGxhY2Utc3ltYm9scyI6ICIxLjEuMCIs
CisgICAgICAgICJwb3N0Y3NzIjogIjYuMC4xMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJwb3N0
Y3NzLW5vcm1hbGl6ZS1jaGFyc2V0IjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3Mtbm9ybWFs
aXplLWNoYXJzZXQvLS9wb3N0Y3NzLW5vcm1hbGl6ZS1jaGFyc2V0LTEuMS4xLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtNzU3bkVoTFgvbldjZU8wV0wySHRZclhMay9FPSIsCisgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInBvc3Rjc3MiOiAi
NS4yLjE3IgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJoYXMt
ZmxhZyI6IHsKICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6
IHsKLSAgICAgICAgICAgICJlc3ByaW1hIjogIjIuNy4zIgotICAgICAgICAgIH0KKyAgICAgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaGFzLWZsYWcvLS9oYXMt
ZmxhZy0xLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1uWjU1TVdYT0FY
b0E4QVFZeEQrVUtuc2RFZm89IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQogICAgICAgICB9LAot
ICAgICAgICAicmVkdWNlLWNzcy1jYWxjIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4w
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJwb3N0Y3NzIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjUuMi4xNyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3MvLS9wb3N0Y3NzLTUuMi4xNy50Z3oiLAorICAg
ICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS16MDlaZTRaTlpjaWtrckxxdnAxd2JJZWNPSXM9IiwK
ICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAg
ICAgICAiYmFsYW5jZWQtbWF0Y2giOiAiMC40LjIiLAotICAgICAgICAgICAgIm1hdGgtZXhwcmVz
c2lvbi1ldmFsdWF0b3IiOiAiMS4yLjE0IiwKLSAgICAgICAgICAgICJyZWR1Y2UtZnVuY3Rpb24t
Y2FsbCI6ICIxLjAuMSIKKyAgICAgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAgICAgICAg
ICAianMtYmFzZTY0IjogIjIuMS45IiwKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS43
IiwKKyAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIzLjIuMyIKICAgICAgICAgICB9CiAg
ICAgICAgIH0sCi0gICAgICAgICJyZWR1Y2UtZnVuY3Rpb24tY2FsbCI6IHsKLSAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAi
c3VwcG9ydHMtY29sb3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjMiLAorICAgICAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdXBwb3J0cy1jb2xv
ci8tL3N1cHBvcnRzLWNvbG9yLTMuMi4zLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJz
aGExLVphd0ZCTE9WUVhIWXBrbEdzcTQ4dTRwZlZQWT0iLAogICAgICAgICAgICJkZXYiOiB0cnVl
LAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJiYWxhbmNlZC1tYXRjaCI6
ICIwLjEuMCIKLSAgICAgICAgICB9LAotICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAg
ICAgICAgICAiYmFsYW5jZWQtbWF0Y2giOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
MS4wIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2
IjogdHJ1ZQotICAgICAgICAgICAgfQorICAgICAgICAgICAgImhhcy1mbGFnIjogIjEuMC4wIgog
ICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInJlZ2VuZXJhdGUiOiB7Ci0gICAgICAg
ICAgInZlcnNpb24iOiAiMS4zLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAg
ICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAicmVnZW5lcmF0b3ItcnVudGlt
ZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjkuNSIsCi0gICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAicG9zdGNzcy1ub3JtYWxp
emUtdXJsIjogeworICAgICAgInZlcnNpb24iOiAiMy4wLjgiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3Mtbm9ybWFsaXplLXVybC8tL3Bvc3Rj
c3Mtbm9ybWFsaXplLXVybC0zLjAuOC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUVJ
OTBzL0w4MnZpUm92K2o2a1dTSjUvSGdpST0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICJpcy1hYnNvbHV0ZS11cmwiOiAiMi4xLjAiLAorICAgICAg
ICAibm9ybWFsaXplLXVybCI6ICIxLjkuMSIsCisgICAgICAgICJwb3N0Y3NzIjogIjUuMi4xNyIs
CisgICAgICAgICJwb3N0Y3NzLXZhbHVlLXBhcnNlciI6ICIzLjMuMCIKKyAgICAgIH0sCisgICAg
ICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiaGFzLWZsYWciOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9oYXMtZmxhZy8tL2hhcy1mbGFnLTEuMC4wLnRneiIsCisgICAgICAgICAgImlu
dGVncml0eSI6ICJzaGExLW5aNTVNV1hPQVhvQThBUVl4RCtVS25zZEVmbz0iLAogICAgICAgICAg
ICJkZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJyZWdleC1jYWNoZSI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjQuMyIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAicG9zdGNzcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI1LjIuMTciLAorICAgICAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wb3N0Y3NzLy0vcG9z
dGNzcy01LjIuMTcudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtejA5WmU0Wk5a
Y2lra3JMcXZwMXdiSWVjT0lzPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAg
InJlcXVpcmVzIjogewotICAgICAgICAgICAgImlzLWVxdWFsLXNoYWxsb3ciOiAiMC4xLjMiLAot
ICAgICAgICAgICAgImlzLXByaW1pdGl2ZSI6ICIyLjAuMCIKKyAgICAgICAgICAgICJjaGFsayI6
ICIxLjEuMyIsCisgICAgICAgICAgICAianMtYmFzZTY0IjogIjIuMS45IiwKKyAgICAgICAgICAg
ICJzb3VyY2UtbWFwIjogIjAuNS43IiwKKyAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIz
LjIuMyIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJyZWdleHB1LWNvcmUiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMu
Mi4zIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
c3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci0zLjIuMy50Z3oiLAorICAgICAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1aYXdGQkxPVlFYSFlwa2xHc3E0OHU0cGZWUFk9IiwKICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAicmVn
ZW5lcmF0ZSI6ICIxLjMuMSIsCi0gICAgICAgICAgICAicmVnanNnZW4iOiAiMC4yLjAiLAotICAg
ICAgICAgICAgInJlZ2pzcGFyc2VyIjogIjAuMS41IgorICAgICAgICAgICAgImhhcy1mbGFnIjog
IjEuMC4wIgogICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInJlZ2pzZ2VuIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJwb3N0Y3NzLW9yZGVyZWQtdmFsdWVz
IjogeworICAgICAgInZlcnNpb24iOiAiMi4yLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3Mtb3JkZXJlZC12YWx1ZXMvLS9wb3N0Y3NzLW9y
ZGVyZWQtdmFsdWVzLTIuMi4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtN3NiQ3Bu
dHNRU3FOc2dRdWQvNk5wRCtWd1IwPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjE3IiwKKyAgICAgICAgInBvc3Rjc3Mt
dmFsdWUtcGFyc2VyIjogIjMuMy4wIgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7
CisgICAgICAgICJoYXMtZmxhZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisg
ICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hhcy1mbGFn
Ly0vaGFzLWZsYWctMS4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtblo1
NU1XWE9BWG9BOEFRWXhEK1VLbnNkRWZvPSIsCiAgICAgICAgICAgImRldiI6IHRydWUKICAgICAg
ICAgfSwKLSAgICAgICAgInJlZ2pzcGFyc2VyIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
MS41IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJwb3N0Y3NzIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjUuMi4xNyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3MvLS9wb3N0Y3NzLTUuMi4xNy50Z3oiLAor
ICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS16MDlaZTRaTlpjaWtrckxxdnAxd2JJZWNPSXM9
IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAg
ICAgICAgICAianNlc2MiOiAiMC41LjAiCisgICAgICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAor
ICAgICAgICAgICAgImpzLWJhc2U2NCI6ICIyLjEuOSIsCisgICAgICAgICAgICAic291cmNlLW1h
cCI6ICIwLjUuNyIsCisgICAgICAgICAgICAic3VwcG9ydHMtY29sb3IiOiAiMy4yLjMiCiAgICAg
ICAgICAgfQogICAgICAgICB9LAotICAgICAgICAicmVsYXRldXJsIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjAuMi43IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInJlbmRlcmtpZCI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAic3VwcG9ydHMtY29sb3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjMiLAorICAg
ICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdXBwb3J0cy1j
b2xvci8tL3N1cHBvcnRzLWNvbG9yLTMuMi4zLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6
ICJzaGExLVphd0ZCTE9WUVhIWXBrbEdzcTQ4dTRwZlZQWT0iLAogICAgICAgICAgICJkZXYiOiB0
cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJjc3Mtc2VsZWN0Ijog
IjEuMi4wIiwKLSAgICAgICAgICAgICJkb20tY29udmVydGVyIjogIjAuMS40IiwKLSAgICAgICAg
ICAgICJodG1scGFyc2VyMiI6ICIzLjMuMCIsCi0gICAgICAgICAgICAic3RyaXAtYW5zaSI6ICIz
LjAuMSIsCi0gICAgICAgICAgICAidXRpbGEiOiAiMC4zLjMiCi0gICAgICAgICAgfSwKLSAgICAg
ICAgICAiZGVwZW5kZW5jaWVzIjogewotICAgICAgICAgICAgInV0aWxhIjogewotICAgICAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjMuMyIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
LSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICJo
YXMtZmxhZyI6ICIxLjAuMCIKICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJyZXBl
YXQtZWxlbWVudCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCi0gICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAg
ICAgICJyZXBlYXQtc3RyaW5nIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNS40IiwKLSAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAg
ICJwb3N0Y3NzLXJlZHVjZS1pZGVudHMiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjQuMCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNzcy1yZWR1
Y2UtaWRlbnRzLy0vcG9zdGNzcy1yZWR1Y2UtaWRlbnRzLTIuNC4wLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtd3NiU0RNbFlLRTlxdjc1ajkyQ2I5QWtGbXRNPSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjE3
IiwKKyAgICAgICAgInBvc3Rjc3MtdmFsdWUtcGFyc2VyIjogIjMuMy4wIgorICAgICAgfSwKKyAg
ICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJoYXMtZmxhZyI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2hhcy1mbGFnLy0vaGFzLWZsYWctMS4wLjAudGd6IiwKKyAgICAgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtblo1NU1XWE9BWG9BOEFRWXhEK1VLbnNkRWZvPSIsCiAgICAgICAg
ICAgImRldiI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgInJlcGVhdGluZyI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAicG9zdGNzcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI1LjIuMTciLAorICAgICAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wb3N0Y3NzLy0vcG9z
dGNzcy01LjIuMTcudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtejA5WmU0Wk5a
Y2lra3JMcXZwMXdiSWVjT0lzPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAg
InJlcXVpcmVzIjogewotICAgICAgICAgICAgImlzLWZpbml0ZSI6ICIxLjAuMSIKKyAgICAgICAg
ICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAgICAgICAgICAianMtYmFzZTY0IjogIjIuMS45IiwK
KyAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS43IiwKKyAgICAgICAgICAgICJzdXBwb3J0
cy1jb2xvciI6ICIzLjIuMyIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJyZXF1
ZXN0IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNzUuMCIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAic3VwcG9ydHMtY29sb3IiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMy4yLjMiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9zdXBwb3J0cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTMuMi4zLnRneiIsCisgICAg
ICAgICAgImludGVncml0eSI6ICJzaGExLVphd0ZCTE9WUVhIWXBrbEdzcTQ4dTRwZlZQWT0iLAog
ICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICJhd3Mtc2lnbjIiOiAiMC42LjAiLAotICAgICAgICAgICAgImF3czQiOiAiMS40LjEiLAot
ICAgICAgICAgICAgImJsIjogIjEuMS4yIiwKLSAgICAgICAgICAgICJjYXNlbGVzcyI6ICIwLjEx
LjAiLAotICAgICAgICAgICAgImNvbWJpbmVkLXN0cmVhbSI6ICIxLjAuNSIsCi0gICAgICAgICAg
ICAiZXh0ZW5kIjogIjMuMC4wIiwKLSAgICAgICAgICAgICJmb3JldmVyLWFnZW50IjogIjAuNi4x
IiwKLSAgICAgICAgICAgICJmb3JtLWRhdGEiOiAiMi4wLjAiLAotICAgICAgICAgICAgImhhci12
YWxpZGF0b3IiOiAiMi4wLjYiLAotICAgICAgICAgICAgImhhd2siOiAiMy4xLjMiLAotICAgICAg
ICAgICAgImh0dHAtc2lnbmF0dXJlIjogIjEuMS4xIiwKLSAgICAgICAgICAgICJpcy10eXBlZGFy
cmF5IjogIjEuMC4wIiwKLSAgICAgICAgICAgICJpc3N0cmVhbSI6ICIwLjEuMiIsCi0gICAgICAg
ICAgICAianNvbi1zdHJpbmdpZnktc2FmZSI6ICI1LjAuMSIsCi0gICAgICAgICAgICAibWltZS10
eXBlcyI6ICIyLjEuMTIiLAotICAgICAgICAgICAgIm5vZGUtdXVpZCI6ICIxLjQuNyIsCi0gICAg
ICAgICAgICAib2F1dGgtc2lnbiI6ICIwLjguMiIsCi0gICAgICAgICAgICAicXMiOiAiNi4yLjEi
LAotICAgICAgICAgICAgInN0cmluZ3N0cmVhbSI6ICIwLjAuNSIsCi0gICAgICAgICAgICAidG91
Z2gtY29va2llIjogIjIuMy4xIiwKLSAgICAgICAgICAgICJ0dW5uZWwtYWdlbnQiOiAiMC40LjMi
CisgICAgICAgICAgICAiaGFzLWZsYWciOiAiMS4wLjAiCiAgICAgICAgICAgfQotICAgICAgICB9
LAotICAgICAgICAicmVxdWlyZS1kaXJlY3RvcnkiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAi
Mi4xLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1
ZQotICAgICAgICB9LAotICAgICAgICAicmVxdWlyZS1tYWluLWZpbGVuYW1lIjogewotICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJwb3N0Y3NzLXJlZHVjZS1pbml0aWFsIjogewor
ICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3Bvc3Rjc3MtcmVkdWNlLWluaXRpYWwvLS9wb3N0Y3NzLXJlZHVjZS1p
bml0aWFsLTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYVBnR2xmQkYwSUpq
cUhtdEpBMzQzV1QyUk9vPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjE3IgorICAgICAgfSwKKyAgICAgICJkZXBlbmRl
bmNpZXMiOiB7CisgICAgICAgICJoYXMtZmxhZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2hhcy1mbGFnLy0vaGFzLWZsYWctMS4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtblo1NU1XWE9BWG9BOEFRWXhEK1VLbnNkRWZvPSIsCiAgICAgICAgICAgImRldiI6IHRy
dWUKICAgICAgICAgfSwKLSAgICAgICAgInJlcXVpcmUtdW5jYWNoZWQiOiB7Ci0gICAgICAgICAg
InZlcnNpb24iOiAiMS4wLjIiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
InBvc3Rjc3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNS4yLjE3IiwKKyAgICAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNzcy8tL3Bvc3Rjc3Mt
NS4yLjE3LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXowOVplNFpOWmNpa2ty
THF2cDF3YkllY09Jcz0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1
aXJlcyI6IHsKLSAgICAgICAgICAgICJjYWxsZXItcGF0aCI6ICIwLjEuMCIsCi0gICAgICAgICAg
ICAicmVzb2x2ZS1mcm9tIjogIjEuMC4xIgorICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwK
KyAgICAgICAgICAgICJqcy1iYXNlNjQiOiAiMi4xLjkiLAorICAgICAgICAgICAgInNvdXJjZS1t
YXAiOiAiMC41LjciLAorICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjMuMi4zIgogICAg
ICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgInJlcXVpcmVzLXBvcnQiOiB7CisgICAgICAg
ICJzdXBwb3J0cy1jb2xvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjIuMyIsCisgICAg
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N1cHBvcnRzLWNv
bG9yLy0vc3VwcG9ydHMtY29sb3ItMy4yLjMudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtWmF3RkJMT1ZRWEhZcGtsR3NxNDh1NHBmVlBZPSIsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImhhcy1mbGFnIjogIjEu
MC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgInBvc3Rj
c3MtcmVkdWNlLXRyYW5zZm9ybXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuNCIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNzcy1yZWR1Y2Ut
dHJhbnNmb3Jtcy8tL3Bvc3Rjc3MtcmVkdWNlLXRyYW5zZm9ybXMtMS4wLjQudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS0vM2IwMkNFa043TWNLWXBDMHVGRVFDVjNHdUU9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaGFzIjogIjEuMC4x
IiwKKyAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjE3IiwKKyAgICAgICAgInBvc3Rjc3MtdmFsdWUt
cGFyc2VyIjogIjMuMy4wIgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAg
ICAgICJoYXMtZmxhZyI6IHsKICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0g
ICAgICAgICJyZXNvbHZlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS43IiwKLSAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwK
LSAgICAgICAgInJlc29sdmUtZnJvbSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIs
Ci0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oYXMtZmxhZy8tL2hhcy1mbGFnLTEuMC4wLnRneiIsCisg
ICAgICAgICAgImludGVncml0eSI6ICJzaGExLW5aNTVNV1hPQVhvQThBUVl4RCtVS25zZEVmbz0i
LAogICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJyZXN0b3JlLWN1
cnNvciI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICB9LAorICAgICAgICAicG9zdGNzcyI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICI1LjIuMTciLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9wb3N0Y3NzLy0vcG9zdGNzcy01LjIuMTcudGd6IiwKKyAgICAgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtejA5WmU0Wk5aY2lra3JMcXZwMXdiSWVjT0lzPSIsCiAgICAgICAg
ICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImV4
aXQtaG9vayI6ICIxLjEuMSIsCi0gICAgICAgICAgICAib25ldGltZSI6ICIxLjEuMCIKKyAgICAg
ICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAgICAgICAgICAianMtYmFzZTY0IjogIjIuMS45
IiwKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS43IiwKKyAgICAgICAgICAgICJzdXBw
b3J0cy1jb2xvciI6ICIzLjIuMyIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJy
aWdodC1hbGlnbiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMyIsCi0gICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAic3VwcG9ydHMtY29sb3IiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMy4yLjMiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9zdXBwb3J0cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTMuMi4zLnRneiIs
CisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLVphd0ZCTE9WUVhIWXBrbEdzcTQ4dTRwZlZQ
WT0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAg
ICAgICAgICAgICJhbGlnbi10ZXh0IjogIjAuMS40IgorICAgICAgICAgICAgImhhcy1mbGFnIjog
IjEuMC4wIgogICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgInBv
c3Rjc3Mtc2VsZWN0b3ItcGFyc2VyIjogeworICAgICAgInZlcnNpb24iOiAiMi4yLjMiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3Mtc2VsZWN0
b3ItcGFyc2VyLy0vcG9zdGNzcy1zZWxlY3Rvci1wYXJzZXItMi4yLjMudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS0rVU4zaUdCc1BKck80Vy8rallzV0tYOG51NUE9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZmxhdHRlbiI6ICIxLjAu
MiIsCisgICAgICAgICJpbmRleGVzLW9mIjogIjEuMC4xIiwKKyAgICAgICAgInVuaXEiOiAiMS4w
LjEiCisgICAgICB9CisgICAgfSwKKyAgICAicG9zdGNzcy1zdmdvIjogeworICAgICAgInZlcnNp
b24iOiAiMi4xLjYiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL3Bvc3Rjc3Mtc3Znby8tL3Bvc3Rjc3Mtc3Znby0yLjEuNi50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLXR0OFlxbUU3Wm00VFB3aXR0U0djSm9Tc0VJMD0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJpcy1zdmciOiAiMi4xLjAiLAor
ICAgICAgICAicG9zdGNzcyI6ICI1LjIuMTciLAorICAgICAgICAicG9zdGNzcy12YWx1ZS1wYXJz
ZXIiOiAiMy4zLjAiLAorICAgICAgICAic3ZnbyI6ICIwLjcuMiIKKyAgICAgIH0sCisgICAgICAi
ZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiaGFzLWZsYWciOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9oYXMtZmxhZy8tL2hhcy1mbGFnLTEuMC4wLnRneiIsCisgICAgICAgICAgImludGVn
cml0eSI6ICJzaGExLW5aNTVNV1hPQVhvQThBUVl4RCtVS25zZEVmbz0iLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJyaW1yYWYiOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMi41LjQiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgInBv
c3Rjc3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNS4yLjE3IiwKKyAgICAgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNzcy8tL3Bvc3Rjc3MtNS4y
LjE3LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXowOVplNFpOWmNpa2tyTHF2
cDF3YkllY09Jcz0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJl
cyI6IHsKLSAgICAgICAgICAgICJnbG9iIjogIjcuMS4wIgorICAgICAgICAgICAgImNoYWxrIjog
IjEuMS4zIiwKKyAgICAgICAgICAgICJqcy1iYXNlNjQiOiAiMi4xLjkiLAorICAgICAgICAgICAg
InNvdXJjZS1tYXAiOiAiMC41LjciLAorICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjMu
Mi4zIgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgInJpcGVtZDE2MCI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAot
ICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJydW4tYXN5bmMiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4xLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMu
Mi4zIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
c3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci0zLjIuMy50Z3oiLAorICAgICAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1aYXdGQkxPVlFYSFlwa2xHc3E0OHU0cGZWUFk9IiwKICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAib25j
ZSI6ICIxLjQuMCIKKyAgICAgICAgICAgICJoYXMtZmxhZyI6ICIxLjAuMCIKICAgICAgICAgICB9
Ci0gICAgICAgIH0sCi0gICAgICAgICJyeC1saXRlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjog
IjMuMS4yIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgIH0KKyAgICAgIH0K
KyAgICB9LAorICAgICJwb3N0Y3NzLXVuaXF1ZS1zZWxlY3RvcnMiOiB7CisgICAgICAidmVyc2lv
biI6ICIyLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvcG9zdGNzcy11bmlxdWUtc2VsZWN0b3JzLy0vcG9zdGNzcy11bmlxdWUtc2VsZWN0b3JzLTIu
MC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbUIxWDBwM2NzejU3SGY0ZjFEdUdT
Zmt6eWgwPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgImFscGhhbnVtLXNvcnQiOiAiMS4wLjIiLAorICAgICAgICAicG9zdGNzcyI6ICI1LjIuMTci
LAorICAgICAgICAidW5pcXMiOiAiMi4wLjAiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2ll
cyI6IHsKKyAgICAgICAgImhhcy1mbGFnIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4w
IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaGFz
LWZsYWcvLS9oYXMtZmxhZy0xLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1uWjU1TVdYT0FYb0E4QVFZeEQrVUtuc2RFZm89IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZQog
ICAgICAgICB9LAotICAgICAgICAic2FuZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjQu
MSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAicG9zdGNzcyI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICI1LjIuMTciLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wb3N0Y3NzLy0vcG9zdGNzcy01LjIuMTcudGd6IiwKKyAg
ICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtejA5WmU0Wk5aY2lra3JMcXZwMXdiSWVjT0lzPSIs
CiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAg
ICAgICAgImV4ZWMtc2giOiAiMC4yLjAiLAotICAgICAgICAgICAgImZiLXdhdGNobWFuIjogIjEu
OS4wIiwKLSAgICAgICAgICAgICJtaW5pbWF0Y2giOiAiMy4wLjMiLAotICAgICAgICAgICAgIm1p
bmltaXN0IjogIjEuMi4wIiwKLSAgICAgICAgICAgICJ3YWxrZXIiOiAiMS4wLjciLAotICAgICAg
ICAgICAgIndhdGNoIjogIjAuMTAuMCIKKyAgICAgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisg
ICAgICAgICAgICAianMtYmFzZTY0IjogIjIuMS45IiwKKyAgICAgICAgICAgICJzb3VyY2UtbWFw
IjogIjAuNS43IiwKKyAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIzLjIuMyIKICAgICAg
ICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJzYXgiOiB7Ci0gICAgICAgICAgInZlcnNpb24i
OiAiMS4yLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2Ijog
dHJ1ZQotICAgICAgICB9LAotICAgICAgICAic2VtdmVyIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjUuMy4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJzdXBwb3J0
cy1jb2xvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjIuMyIsCisgICAgICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N1cHBvcnRzLWNvbG9yLy0vc3Vw
cG9ydHMtY29sb3ItMy4yLjMudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWmF3
RkJMT1ZRWEhZcGtsR3NxNDh1NHBmVlBZPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImhhcy1mbGFnIjogIjEuMC4wIgorICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgInBvc3Rjc3MtdmFsdWUt
cGFyc2VyIjogeworICAgICAgInZlcnNpb24iOiAiMy4zLjAiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bvc3Rjc3MtdmFsdWUtcGFyc2VyLy0vcG9zdGNz
cy12YWx1ZS1wYXJzZXItMy4zLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1oL09Q
bnhqM2RLU3JUSW9qTDF4YzZJY3FuUlU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAg
ICAicG9zdGNzcy16aW5kZXgiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjIuMCIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNzcy16aW5kZXgvLS9w
b3N0Y3NzLXppbmRleC0yLjIuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTBoQ2Qz
QVZia2E5bi9FeXpzQ1dVWmpuU3J5ST0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICJoYXMiOiAiMS4wLjEiLAorICAgICAgICAicG9zdGNzcyI6ICI1
LjIuMTciLAorICAgICAgICAidW5pcXMiOiAiMi4wLjAiCisgICAgICB9LAorICAgICAgImRlcGVu
ZGVuY2llcyI6IHsKKyAgICAgICAgImhhcy1mbGFnIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvaGFzLWZsYWcvLS9oYXMtZmxhZy0xLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1uWjU1TVdYT0FYb0E4QVFZeEQrVUtuc2RFZm89IiwKICAgICAgICAgICAiZGV2Ijog
dHJ1ZQogICAgICAgICB9LAotICAgICAgICAic2VuZCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6
ICIwLjE0LjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgInBvc3Rjc3Mi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNS4yLjE3IiwKKyAgICAgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcG9zdGNzcy8tL3Bvc3Rjc3MtNS4yLjE3LnRn
eiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXowOVplNFpOWmNpa2tyTHF2cDF3Ykll
Y09Jcz0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsK
LSAgICAgICAgICAgICJkZWJ1ZyI6ICIyLjIuMCIsCi0gICAgICAgICAgICAiZGVwZCI6ICIxLjEu
MCIsCi0gICAgICAgICAgICAiZGVzdHJveSI6ICIxLjAuNCIsCi0gICAgICAgICAgICAiZW5jb2Rl
dXJsIjogIjEuMC4xIiwKLSAgICAgICAgICAgICJlc2NhcGUtaHRtbCI6ICIxLjAuMyIsCi0gICAg
ICAgICAgICAiZXRhZyI6ICIxLjcuMCIsCi0gICAgICAgICAgICAiZnJlc2giOiAiMC4zLjAiLAot
ICAgICAgICAgICAgImh0dHAtZXJyb3JzIjogIjEuNS4wIiwKLSAgICAgICAgICAgICJtaW1lIjog
IjEuMy40IiwKLSAgICAgICAgICAgICJtcyI6ICIwLjcuMSIsCi0gICAgICAgICAgICAib24tZmlu
aXNoZWQiOiAiMi4zLjAiLAotICAgICAgICAgICAgInJhbmdlLXBhcnNlciI6ICIxLjIuMCIsCi0g
ICAgICAgICAgICAic3RhdHVzZXMiOiAiMS4zLjAiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAi
ZGVwZW5kZW5jaWVzIjogewotICAgICAgICAgICAgIm1pbWUiOiB7Ci0gICAgICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMy40IiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAg
ICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAgfQorICAgICAgICAgICAgImNoYWxrIjog
IjEuMS4zIiwKKyAgICAgICAgICAgICJqcy1iYXNlNjQiOiAiMi4xLjkiLAorICAgICAgICAgICAg
InNvdXJjZS1tYXAiOiAiMC41LjciLAorICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjMu
Mi4zIgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgInNlbnRlbmNlLWNhc2UiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMu
Mi4zIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
c3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci0zLjIuMy50Z3oiLAorICAgICAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1aYXdGQkxPVlFYSFlwa2xHc3E0OHU0cGZWUFk9IiwKICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAibm8t
Y2FzZSI6ICIyLjMuMCIsCi0gICAgICAgICAgICAidXBwZXItY2FzZS1maXJzdCI6ICIxLjEuMiIK
KyAgICAgICAgICAgICJoYXMtZmxhZyI6ICIxLjAuMCIKICAgICAgICAgICB9Ci0gICAgICAgIH0s
Ci0gICAgICAgICJzZXJ2ZS1pbmRleCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjguMCIs
Ci0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICB9CisgICAgICB9CisgICAgfSwK
KyAgICAicHJlbHVkZS1scyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcmVsdWRlLWxzLy0vcHJlbHVk
ZS1scy0xLjEuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUlaTXFWSjllVXYvWnFD
ZjFjT0JMNWlxWDJsUT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJwcmVwZW5k
LWh0dHAiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuNCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcHJlcGVuZC1odHRwLy0vcHJlcGVuZC1odHRwLTEu
MC40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMVBSV0t3emphVzVCckZMUTRBTGxl
bU5keHR3PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInByZXNlcnZlIjogewor
ICAgICAgInZlcnNpb24iOiAiMC4yLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3ByZXNlcnZlLy0vcHJlc2VydmUtMC4yLjAudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1nVjdSOXV2R1dTYjRaYk1Rd0hFN3l6TVZ6a3M9IiwKKyAgICAgICJk
ZXYiOiB0cnVlCisgICAgfSwKKyAgICAicHJldHR5LWJ5dGVzIjogeworICAgICAgInZlcnNpb24i
OiAiNC4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3ByZXR0eS1ieXRlcy8tL3ByZXR0eS1ieXRlcy00LjAuMi50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLXNyK0M1elVOWmNiRE9xbGFxbHBQWXlmMkhOaz0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJwcmV0dHktZXJyb3IiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEu
MSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcHJldHR5
LWVycm9yLy0vcHJldHR5LWVycm9yLTIuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtWDArSHlQa2VXdVB6dW9lclRQWGdPeG9YOGFNPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInJlbmRlcmtpZCI6ICIyLjAuMSIsCisgICAgICAg
ICJ1dGlsYSI6ICIwLjQuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJwcmV0dHktZm9ybWF0Ijog
eworICAgICAgInZlcnNpb24iOiAiMjAuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcmV0dHktZm9ybWF0Ly0vcHJldHR5LWZvcm1hdC0yMC4wLjMu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1BZzQxQ2xZS0grR3BqY08rdHN6L3M0YmVp
eFE9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAi
YW5zaS1yZWdleCI6ICIyLjEuMSIsCisgICAgICAgICJhbnNpLXN0eWxlcyI6ICIzLjIuMCIKKyAg
ICAgIH0KKyAgICB9LAorICAgICJwcml2YXRlIjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjci
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3ByaXZhdGUv
LS9wcml2YXRlLTAuMS43LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYU01ZWloN3dv
anUxY013b1UzdFRNcXVtUHZFPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInBy
b2Nlc3MiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjExLjEwIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcm9jZXNzLy0vcHJvY2Vzcy0wLjExLjEwLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtY3pJd0RvUUJZYjJqNXBvZEhaR24xTHdXOFlJ
PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInByb2Nlc3MtbmV4dGljay1hcmdz
IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjciLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3Byb2Nlc3MtbmV4dGljay1hcmdzLy0vcHJvY2Vzcy1uZXh0
aWNrLWFyZ3MtMS4wLjcudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1GUTRndDFaWkN0
UDVFSlB5V2s4cTJML3pDNk09IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAicHJv
Z3Jlc3MiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcHJvZ3Jlc3MvLS9wcm9ncmVzcy0yLjAuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLWlodmpacitQd2oyeXZTUHhERy9wSUxRNG5SOD0i
LAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJwcm9taXNlIjogeworICAgICAgInZl
cnNpb24iOiAiNy4zLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3Byb21pc2UvLS9wcm9taXNlLTcuMy4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTUxMi1ub2xRWFovNEwrYlAvVUdsa2ZhSXVqWDlCS3hHd21ROU9UNG1PdDV5dnk4aUsxaDN3
cVRFSkNpanpHQU5UQ0NsOW5Xalk0MWp1eUFuMkszUTFoTExUZz09IiwKKyAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgImFzYXAiOiAiMi4wLjYiCisgICAgICB9CisgICAgfSwKKyAgICAicHJv
cC10eXBlcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjE1LjUuMTAiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Byb3AtdHlwZXMvLS9wcm9wLXR5cGVzLTE1
LjUuMTAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1KNWZmd3hKaGd1T3BYajM3c3Vp
VDNkZEZZVlE9IiwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImZianMiOiAiMC44LjE0
IiwKKyAgICAgICAgImxvb3NlLWVudmlmeSI6ICIxLjMuMSIKKyAgICAgIH0KKyAgICB9LAorICAg
ICJwcm94eS1hZGRyIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjUiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Byb3h5LWFkZHIvLS9wcm94eS1hZGRy
LTEuMS41LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtY2NEdU94QXQ0L0lDODdaUFlJ
MFhQOHVocVJnPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImZvcndhcmRlZCI6ICIwLjEuMCIsCisgICAgICAgICJpcGFkZHIuanMiOiAiMS40LjAi
CisgICAgICB9CisgICAgfSwKKyAgICAicHJyIjogeworICAgICAgInZlcnNpb24iOiAiMC4wLjAi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Byci8tL3By
ci0wLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUdvUzRXUWd5VlFGQkdGUFFD
QjdqK29iaWttbz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJwc2V1ZG9tYXAi
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcHNldWRvbWFwLy0vcHNldWRvbWFwLTEuMC4yLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtOEZLaWphY09ZWWtYN3dxS3cwd2E1YWFDaHJNPSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInB1YmxpYy1lbmNyeXB0IjogeworICAgICAg
InZlcnNpb24iOiAiNC4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL3B1YmxpYy1lbmNyeXB0Ly0vcHVibGljLWVuY3J5cHQtNC4wLjAudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1PZmFaODZSbFlOMWV1c3ZLYVR5dmZHWEJqTVk9IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYm4uanMiOiAi
NC4xMS44IiwKKyAgICAgICAgImJyb3dzZXJpZnktcnNhIjogIjQuMC4xIiwKKyAgICAgICAgImNy
ZWF0ZS1oYXNoIjogIjEuMS4zIiwKKyAgICAgICAgInBhcnNlLWFzbjEiOiAiNS4xLjAiLAorICAg
ICAgICAicmFuZG9tYnl0ZXMiOiAiMi4wLjUiCisgICAgICB9CisgICAgfSwKKyAgICAicHVueWNv
ZGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjQuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcHVueWNvZGUvLS9wdW55Y29kZS0xLjQuMS50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLXdOV21PeWNZZ0FyWTRlc1BwU2FjaE4xQmhGND0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJxIjogeworICAgICAgInZlcnNpb24iOiAi
MS41LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Ev
LS9xLTEuNS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtM1FHNnlkQnRNT2J5R2E3
TGdsUHVucjNEQ1BFPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInFzIjogewor
ICAgICAgInZlcnNpb24iOiAiNi40LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3FzLy0vcXMtNi40LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1FK0p0S0sxckQvcXBFeExOTy9jSTdUVWVjak09IiwKKyAgICAgICJkZXYiOiB0cnVlCisg
ICAgfSwKKyAgICAicXVlcnktc3RyaW5nIjogeworICAgICAgInZlcnNpb24iOiAiNC4zLjQiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3F1ZXJ5LXN0cmlu
Zy8tL3F1ZXJ5LXN0cmluZy00LjMuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXU3
YVR1Y3FSWENNbEZiSW9zYUFyWUpCRDIrcz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4xIiwKKyAgICAgICAg
InN0cmljdC11cmktZW5jb2RlIjogIjEuMS4wIgorICAgICAgfQorICAgIH0sCisgICAgInF1ZXJ5
c3RyaW5nIjogeworICAgICAgInZlcnNpb24iOiAiMC4yLjAiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3F1ZXJ5c3RyaW5nLy0vcXVlcnlzdHJpbmctMC4y
LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1zZ21Fa2dPN0pkK0NEYWRXNTBjQVdI
aFNGaUE9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAicXVlcnlzdHJpbmctZXMz
IjogeworICAgICAgInZlcnNpb24iOiAiMC4yLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3F1ZXJ5c3RyaW5nLWVzMy8tL3F1ZXJ5c3RyaW5nLWVzMy0w
LjIuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLW5zWWZlUVNZZFhCOWFVRkZsdjJR
ZWsxeEhuTT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJxdWVyeXN0cmluZ2lm
eSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMC40IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9xdWVyeXN0cmluZ2lmeS8tL3F1ZXJ5c3RyaW5naWZ5LTAu
MC40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRFBmNFQ1Umovd3JsSEV4TEZDMlZ2
amR5VFp3PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInJhbmRvbWF0aWMiOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjEuNyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvcmFuZG9tYXRpYy8tL3JhbmRvbWF0aWMtMS4xLjcudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUQ1SlVqUHlKYmFKRGt1QWF6cFZuU2ZWa0xscGVPM3dE
bFBST1RNTEdLRzF6TUZORlJncmNpS28xbHR6L0F6TlRrcUUwSHpEeDY1NVFPTDUxTjA2aG93PT0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJpcy1u
dW1iZXIiOiAiMy4wLjAiLAorICAgICAgICAia2luZC1vZiI6ICI0LjAuMCIKKyAgICAgIH0sCisg
ICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiaXMtbnVtYmVyIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvaXMtbnVtYmVyLy0vaXMtbnVtYmVyLTMuMC4wLnRneiIsCisgICAgICAg
ICAgImludGVncml0eSI6ICJzaGExLUpQMWlBYVI0TFBVRlljZ1FKMnI4ZlJMWEVaVT0iLAogICAg
ICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAg
ICJhY2NlcHRzIjogIjEuMy4zIiwKLSAgICAgICAgICAgICJiYXRjaCI6ICIwLjUuMyIsCi0gICAg
ICAgICAgICAiZGVidWciOiAiMi4yLjAiLAotICAgICAgICAgICAgImVzY2FwZS1odG1sIjogIjEu
MC4zIiwKLSAgICAgICAgICAgICJodHRwLWVycm9ycyI6ICIxLjUuMCIsCi0gICAgICAgICAgICAi
bWltZS10eXBlcyI6ICIyLjEuMTIiLAotICAgICAgICAgICAgInBhcnNldXJsIjogIjEuMy4xIgor
ICAgICAgICAgICAgImtpbmQtb2YiOiAiMy4yLjIiCisgICAgICAgICAgfSwKKyAgICAgICAgICAi
ZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImtpbmQtb2YiOiB7CisgICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjMuMi4yIiwKKyAgICAgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2tpbmQtb2YvLS9raW5kLW9mLTMuMi4yLnRneiIsCisgICAgICAg
ICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1NZW9ocHpTNnVidXc4eVJtMkpPdXBSNUtQR1E9IiwK
KyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICAgICAiaXMtYnVmZmVyIjogIjEuMS41IgorICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAic2VydmUtc3Rh
dGljIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMTEuMSIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAia2luZC1vZiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0
LjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2tpbmQtb2YvLS9raW5kLW9mLTQuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJz
aGExLUlJRTk4OWNTa29zZ2MzaHBHa1VHYjY1eTNWYz0iLAogICAgICAgICAgICJkZXYiOiB0cnVl
LAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJlbmNvZGV1cmwiOiAiMS4w
LjEiLAotICAgICAgICAgICAgImVzY2FwZS1odG1sIjogIjEuMC4zIiwKLSAgICAgICAgICAgICJw
YXJzZXVybCI6ICIxLjMuMSIsCi0gICAgICAgICAgICAic2VuZCI6ICIwLjE0LjEiCisgICAgICAg
ICAgICAiaXMtYnVmZmVyIjogIjEuMS41IgogICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAg
ICAgInNldC1ibG9ja2luZyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0s
Ci0gICAgICAgICJzZXQtaW1tZWRpYXRlLXNoaW0iOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1
ZQotICAgICAgICB9LAotICAgICAgICAic2V0cHJvdG90eXBlb2YiOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAi
ZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAic2hhLmpzIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjIuMi42IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAg
ImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInNoZWJhbmctcmVnZXgiOiB7Ci0gICAg
ICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAg
ICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAic2hlbGxqcyI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjYuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAot
ICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJzaGVsbHdvcmRzIjog
ewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInNsYXNoIjog
ewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJyYW5kb21ieXRlcyI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjIuMC41IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9yYW5kb21ieXRlcy8tL3JhbmRvbWJ5dGVzLTIuMC41LnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTUxMi04VDdabjFBaE1zUS9ISTFTamNDZlQvdDRpaTNlQXFjbzN5
T2NTelM0bW96c096NjlsSExzb01YbUY5blpnbkZhbllzY25TbFVTZ3M4dVp5S3pwRTZrZz09IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAic2FmZS1i
dWZmZXIiOiAiNS4xLjEiCisgICAgICB9CisgICAgfSwKKyAgICAicmFuZ2UtcGFyc2VyIjogewor
ICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3JhbmdlLXBhcnNlci8tL3JhbmdlLXBhcnNlci0xLjIuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLTlKdm10SWVKVGR4QTNNbEtNaTloRUpMZ0RWND0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJyYyI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjEuMi4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9y
Yy8tL3JjLTEuMi4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTGdQbzVDN2tVTGpM
UGM1bHZodjRsMDRkL1pVPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgImRlZXAtZXh0ZW5kIjogIjAuNC4yIiwKKyAgICAgICAgImluaSI6ICIxLjMu
NCIsCisgICAgICAgICJtaW5pbWlzdCI6ICIxLjIuMCIsCisgICAgICAgICJzdHJpcC1qc29uLWNv
bW1lbnRzIjogIjIuMC4xIgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAg
ICAgICJtaW5pbWlzdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCisgICAgICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21pbmltaXN0Ly0vbWlu
aW1pc3QtMS4yLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbzFBSXNnOUJP
RDdzSDdrVTlNMWQ5NW9tUW9RPSIsCiAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwK
LSAgICAgICAgInNsaWNlLWFuc2kiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4wLjQiLAot
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisg
ICAgInJlYWN0IjogeworICAgICAgInZlcnNpb24iOiAiMTUuNi4xIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC8tL3JlYWN0LTE1LjYuMS50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLXVxaERUc1o0Qzk2WmZOdzRDM25OTTdsams5OD0i
LAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY3JlYXRlLXJlYWN0LWNsYXNzIjogIjE1
LjYuMCIsCisgICAgICAgICJmYmpzIjogIjAuOC4xNCIsCisgICAgICAgICJsb29zZS1lbnZpZnki
OiAiMS4zLjEiLAorICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMSIsCisgICAgICAgICJw
cm9wLXR5cGVzIjogIjE1LjUuMTAiCisgICAgICB9CisgICAgfSwKKyAgICAicmVhY3QtYWRkb25z
LXRlc3QtdXRpbHMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxNS42LjAiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlYWN0LWFkZG9ucy10ZXN0LXV0aWxz
Ly0vcmVhY3QtYWRkb25zLXRlc3QtdXRpbHMtMTUuNi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtQmkwMkVYL28wWTg3cGVCdXN6T0RzTGhlcGJrPSIsCisgICAgICAiZGV2IjogdHJ1
ZQorICAgIH0sCisgICAgInJlYWN0LWRldi11dGlscyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQu
MC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFj
dC1kZXYtdXRpbHMvLS9yZWFjdC1kZXYtdXRpbHMtNC4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1FR3JqMHArQkhCYWRSWnU1SVZwWk03ZmhIN1k9IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYWRkcmVzcyI6ICIxLjAuMiIsCisg
ICAgICAgICJiYWJlbC1jb2RlLWZyYW1lIjogIjYuMjIuMCIsCisgICAgICAgICJjaGFsayI6ICIx
LjEuMyIsCisgICAgICAgICJjcm9zcy1zcGF3biI6ICI1LjEuMCIsCisgICAgICAgICJkZXRlY3Qt
cG9ydC1hbHQiOiAiMS4xLjMiLAorICAgICAgICAiZXNjYXBlLXN0cmluZy1yZWdleHAiOiAiMS4w
LjUiLAorICAgICAgICAiZmlsZXNpemUiOiAiMy41LjEwIiwKKyAgICAgICAgImdsb2JhbC1tb2R1
bGVzIjogIjEuMC4wIiwKKyAgICAgICAgImd6aXAtc2l6ZSI6ICIzLjAuMCIsCisgICAgICAgICJp
bnF1aXJlciI6ICIzLjIuMSIsCisgICAgICAgICJpcy1yb290IjogIjEuMC4wIiwKKyAgICAgICAg
Im9wbiI6ICI1LjEuMCIsCisgICAgICAgICJyZWFjdC1lcnJvci1vdmVybGF5IjogIjIuMC4xIiwK
KyAgICAgICAgInJlY3Vyc2l2ZS1yZWFkZGlyIjogIjIuMi4xIiwKKyAgICAgICAgInNoZWxsLXF1
b3RlIjogIjEuNi4xIiwKKyAgICAgICAgInNvY2tqcy1jbGllbnQiOiAiMS4xLjQiLAorICAgICAg
ICAic3RyaXAtYW5zaSI6ICIzLjAuMSIsCisgICAgICAgICJ0ZXh0LXRhYmxlIjogIjAuMi4wIgor
ICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJhbnNpLXJlZ2V4Ijog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYW5zaS1yZWdleC8tL2Fuc2ktcmVnZXgtMy4wLjAu
dGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtN1FNWHd5SUdUM2xHYkFLV2E5MjJC
YXMzMlpnPSIsCiAgICAgICAgICAgImRldiI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgInNu
YWtlLWNhc2UiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAotICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWly
ZXMiOiB7Ci0gICAgICAgICAgICAibm8tY2FzZSI6ICIyLjMuMCIKLSAgICAgICAgICB9Ci0gICAg
ICAgIH0sCi0gICAgICAgICJzbnRwIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC45IiwK
LSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAg
ICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImhvZWsiOiAiMi4xNi4zIgotICAgICAg
ICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInNvY2tqcyI6IHsKLSAgICAgICAgICAidmVyc2lv
biI6ICIwLjMuMTgiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgImJhYmVs
LWNvZGUtZnJhbWUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi4yMi4wIiwKKyAgICAgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtY29kZS1mcmFt
ZS8tL2JhYmVsLWNvZGUtZnJhbWUtNi4yMi4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6
ICJzaGExLUFuWWd2dVZucUl3eVZoVjA1LzBJQWRNeEdPUT0iLAogICAgICAgICAgICJkZXYiOiB0
cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJmYXllLXdlYnNvY2tl
dCI6ICIwLjEwLjAiLAotICAgICAgICAgICAgInV1aWQiOiAiMi4wLjMiCisgICAgICAgICAgICAi
Y2hhbGsiOiAiMS4xLjMiLAorICAgICAgICAgICAgImVzdXRpbHMiOiAiMi4wLjIiLAorICAgICAg
ICAgICAgImpzLXRva2VucyI6ICIzLjAuMiIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAg
ICAgICJzb2NranMtY2xpZW50IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKLSAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAg
ICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImRlYnVnIjogIjIuMi4wIiwKLSAgICAgICAg
ICAgICJldmVudHNvdXJjZSI6ICIwLjEuNiIsCi0gICAgICAgICAgICAiZmF5ZS13ZWJzb2NrZXQi
OiAiMC4xMS4wIiwKLSAgICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCi0gICAgICAgICAg
ICAianNvbjMiOiAiMy4zLjIiLAotICAgICAgICAgICAgInVybC1wYXJzZSI6ICIxLjEuMyIKKyAg
ICAgICAgImlucXVpcmVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMi4xIiwKKyAgICAg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaW5xdWlyZXIvLS9p
bnF1aXJlci0zLjIuMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLVFnVzNl
aVBOOGdwai9LNXZWcEhBREpKZ3JyRjBoby9kWkd5bGlrR1g3aXFBZFJnQzlGVktZS1dGTHg2aFpE
QkZjT0xFb1NxSU5ZclZQZUZBZUcvUGRBPT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhbnNpLWVzY2FwZXMiOiAiMi4wLjAi
LAorICAgICAgICAgICAgImNoYWxrIjogIjIuMS4wIiwKKyAgICAgICAgICAgICJjbGktY3Vyc29y
IjogIjIuMS4wIiwKKyAgICAgICAgICAgICJjbGktd2lkdGgiOiAiMi4yLjAiLAorICAgICAgICAg
ICAgImV4dGVybmFsLWVkaXRvciI6ICIyLjAuNCIsCisgICAgICAgICAgICAiZmlndXJlcyI6ICIy
LjAuMCIsCisgICAgICAgICAgICAibG9kYXNoIjogIjQuMTcuNCIsCisgICAgICAgICAgICAibXV0
ZS1zdHJlYW0iOiAiMC4wLjciLAorICAgICAgICAgICAgInJ1bi1hc3luYyI6ICIyLjMuMCIsCisg
ICAgICAgICAgICAicngtbGl0ZSI6ICI0LjAuOCIsCisgICAgICAgICAgICAicngtbGl0ZS1hZ2dy
ZWdhdGVzIjogIjQuMC44IiwKKyAgICAgICAgICAgICJzdHJpbmctd2lkdGgiOiAiMi4xLjEiLAor
ICAgICAgICAgICAgInN0cmlwLWFuc2kiOiAiNC4wLjAiLAorICAgICAgICAgICAgInRocm91Z2gi
OiAiMi4zLjgiCiAgICAgICAgICAgfSwKICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewotICAg
ICAgICAgICAgImZheWUtd2Vic29ja2V0IjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIw
LjExLjAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAiY2hh
bGsiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICAgICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NoYWxrLy0vY2hhbGstMi4x
LjAudGd6IiwKKyAgICAgICAgICAgICAgImludGVncml0eSI6ICJzaGE1MTItTFVIR1MvZGdlNHVq
YlhNSnJuaWhZTWNMNEFvT3dlR253OVRwM2tRdXF5MUt4NWMxcUtqcXZNSlo2blZKUE1XSnRLQ1RO
NzJab2dIM29lU085ZzlyWFE9PSIsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgImFuc2ktc3R5bGVzIjogIjMu
Mi4wIiwKKyAgICAgICAgICAgICAgICAiZXNjYXBlLXN0cmluZy1yZWdleHAiOiAiMS4wLjUiLAor
ICAgICAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICI0LjQuMCIKKyAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdHJpcC1hbnNpIjogeworICAgICAgICAg
ICAgICAidmVyc2lvbiI6ICI0LjAuMCIsCisgICAgICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJpcC1hbnNpLy0vc3RyaXAtYW5zaS00LjAuMC50Z3oi
LAorICAgICAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcUVlUUl1c2F3MmlvY1RpYlkxSml4
UVh1Tm84PSIsCiAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICAgICAicmVx
dWlyZXMiOiB7Ci0gICAgICAgICAgICAgICAgIndlYnNvY2tldC1kcml2ZXIiOiAiMC42LjUiCisg
ICAgICAgICAgICAgICAgImFuc2ktcmVnZXgiOiAiMy4wLjAiCiAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJzb3J0LWtleXMi
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgInJlYWN0LWRvbSI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjE1LjYuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvcmVhY3QtZG9tLy0vcmVhY3QtZG9tLTE1LjYuMS50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLUxMRHRRWkVEamxQQ0NlczZlYUkrS2t6NWxIQT0iLAorICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAiZmJqcyI6ICIwLjguMTQiLAorICAgICAgICAibG9vc2Ut
ZW52aWZ5IjogIjEuMy4xIiwKKyAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjEiLAorICAg
ICAgICAicHJvcC10eXBlcyI6ICIxNS41LjEwIgorICAgICAgfQorICAgIH0sCisgICAgInJlYWN0
LWVycm9yLW92ZXJsYXkiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QtZXJyb3Itb3ZlcmxheS8t
L3JlYWN0LWVycm9yLW92ZXJsYXktMi4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1ZaTQ4eUZ6ZnRMejhqcFAwZmR6ZDA0NGVGMjQ9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAiYW5zZXIiOiAiMS40LjEiLAorICAgICAgICAiYmFi
ZWwtY29kZS1mcmFtZSI6ICI2LjIyLjAiLAorICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2
LjAiLAorICAgICAgICAiaHRtbC1lbnRpdGllcyI6ICIxLjIuMSIsCisgICAgICAgICJyZWFjdCI6
ICIxNS42LjEiLAorICAgICAgICAicmVhY3QtZG9tIjogIjE1LjYuMSIsCisgICAgICAgICJzZXR0
bGUtcHJvbWlzZSI6ICIxLjAuMCIsCisgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS42IgorICAg
ICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJiYWJlbC1jb2RlLWZyYW1l
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMjIuMCIsCisgICAgICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLWNvZGUtZnJhbWUvLS9iYWJlbC1j
b2RlLWZyYW1lLTYuMjIuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1Bblln
dnVWbnFJd3lWaFYwNS8wSUFkTXhHT1E9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAg
ICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiaXMtcGxhaW4tb2JqIjogIjEuMS4wIgor
ICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAgICAgICJlc3V0aWxzIjogIjIu
MC4yIiwKKyAgICAgICAgICAgICJqcy10b2tlbnMiOiAiMy4wLjIiCiAgICAgICAgICAgfQogICAg
ICAgICB9LAotICAgICAgICAic291cmNlLWxpc3QtbWFwIjogewotICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMS42IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6
IHRydWUKLSAgICAgICAgfSwKICAgICAgICAgInNvdXJjZS1tYXAiOiB7CiAgICAgICAgICAgInZl
cnNpb24iOiAiMC41LjYiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc291cmNlLW1hcC8tL3NvdXJj
ZS1tYXAtMC41LjYudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZGM0NDlTdndj
enhhZnd3UmpZRXpTaXUxOUJJPSIsCiAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0sCisgICAgInJlYWN0LXJlZHV4IjogeworICAgICAgInZlcnNpb24iOiAi
NS4wLjYiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Jl
YWN0LXJlZHV4Ly0vcmVhY3QtcmVkdXgtNS4wLjYudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhNTEyLTh0YWFhR3UrSjdQTUpRREpyay94aVdFWVFtZG8zbWtYdzZ3UHIzSzNMeHZYaXMzRnlt
aXE3YzEzUytUcGxzL0F5TlVBc29PTmtVODFBUDBSQTZ5NlZ3PT0iLAorICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAiaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MiOiAiMi4zLjEiLAorICAgICAg
ICAiaW52YXJpYW50IjogIjIuMi4yIiwKKyAgICAgICAgImxvZGFzaCI6ICI0LjE3LjQiLAorICAg
ICAgICAibG9kYXNoLWVzIjogIjQuMTcuNCIsCisgICAgICAgICJsb29zZS1lbnZpZnkiOiAiMS4z
LjEiLAorICAgICAgICAicHJvcC10eXBlcyI6ICIxNS41LjEwIgorICAgICAgfQorICAgIH0sCisg
ICAgInJlYWN0LXNjcmlwdHMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMTMiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlYWN0LXNjcmlwdHMvLS9y
ZWFjdC1zY3JpcHRzLTEuMC4xMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXBSMTNX
a3NaV3JKbFBGWXJjMWMxeVBjTXVnND0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICJhdXRvcHJlZml4ZXIiOiAiNy4xLjIiLAorICAgICAgICAiYmFi
ZWwtY29yZSI6ICI2LjI1LjAiLAorICAgICAgICAiYmFiZWwtZXNsaW50IjogIjcuMi4zIiwKKyAg
ICAgICAgImJhYmVsLWplc3QiOiAiMjAuMC4zIiwKKyAgICAgICAgImJhYmVsLWxvYWRlciI6ICI3
LjEuMSIsCisgICAgICAgICJiYWJlbC1wcmVzZXQtcmVhY3QtYXBwIjogIjMuMC4yIiwKKyAgICAg
ICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIiwKKyAgICAgICAgImNhc2Utc2Vuc2l0aXZlLXBh
dGhzLXdlYnBhY2stcGx1Z2luIjogIjIuMS4xIiwKKyAgICAgICAgImNoYWxrIjogIjEuMS4zIiwK
KyAgICAgICAgImNzcy1sb2FkZXIiOiAiMC4yOC40IiwKKyAgICAgICAgImRvdGVudiI6ICI0LjAu
MCIsCisgICAgICAgICJlc2xpbnQiOiAiNC40LjEiLAorICAgICAgICAiZXNsaW50LWNvbmZpZy1y
ZWFjdC1hcHAiOiAiMi4wLjAiLAorICAgICAgICAiZXNsaW50LWxvYWRlciI6ICIxLjkuMCIsCisg
ICAgICAgICJlc2xpbnQtcGx1Z2luLWZsb3d0eXBlIjogIjIuMzUuMCIsCisgICAgICAgICJlc2xp
bnQtcGx1Z2luLWltcG9ydCI6ICIyLjcuMCIsCisgICAgICAgICJlc2xpbnQtcGx1Z2luLWpzeC1h
MTF5IjogIjUuMS4xIiwKKyAgICAgICAgImVzbGludC1wbHVnaW4tcmVhY3QiOiAiNy4xLjAiLAor
ICAgICAgICAiZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luIjogIjMuMC4wIiwKKyAgICAgICAg
ImZpbGUtbG9hZGVyIjogIjAuMTEuMiIsCisgICAgICAgICJmcy1leHRyYSI6ICIzLjAuMSIsCisg
ICAgICAgICJmc2V2ZW50cyI6ICIxLjEuMiIsCisgICAgICAgICJodG1sLXdlYnBhY2stcGx1Z2lu
IjogIjIuMjkuMCIsCisgICAgICAgICJqZXN0IjogIjIwLjAuNCIsCisgICAgICAgICJvYmplY3Qt
YXNzaWduIjogIjQuMS4xIiwKKyAgICAgICAgInBvc3Rjc3MtZmxleGJ1Z3MtZml4ZXMiOiAiMy4y
LjAiLAorICAgICAgICAicG9zdGNzcy1sb2FkZXIiOiAiMi4wLjYiLAorICAgICAgICAicHJvbWlz
ZSI6ICI4LjAuMSIsCisgICAgICAgICJyZWFjdC1kZXYtdXRpbHMiOiAiNC4wLjEiLAorICAgICAg
ICAic3R5bGUtbG9hZGVyIjogIjAuMTguMiIsCisgICAgICAgICJzdy1wcmVjYWNoZS13ZWJwYWNr
LXBsdWdpbiI6ICIwLjExLjQiLAorICAgICAgICAidXJsLWxvYWRlciI6ICIwLjUuOSIsCisgICAg
ICAgICJ3ZWJwYWNrIjogIjMuNS4xIiwKKyAgICAgICAgIndlYnBhY2stZGV2LXNlcnZlciI6ICIy
LjcuMSIsCisgICAgICAgICJ3ZWJwYWNrLW1hbmlmZXN0LXBsdWdpbiI6ICIxLjIuMSIsCisgICAg
ICAgICJ3aGF0d2ctZmV0Y2giOiAiMi4wLjMiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2ll
cyI6IHsKKyAgICAgICAgInByb21pc2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiOC4wLjEi
LAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcm9t
aXNlLy0vcHJvbWlzZS04LjAuMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS01
RjFvc0FvWFpIdHRweEcvaGUxdTFISUk5RkE9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYXNhcCI6ICIyLjAuNiIKKyAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJyZWFkLWFsbC1zdHJlYW0i
OiB7CisgICAgICAidmVyc2lvbiI6ICIzLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhZC1hbGwtc3RyZWFtLy0vcmVhZC1hbGwtc3RyZWFtLTMu
MS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTmNQaGQvSUhqdmVKN2t2NitrTnpC
MDZ1OVBvPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgInBpbmtpZS1wcm9taXNlIjogIjIuMC4xIiwKKyAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6
ICIyLjMuMyIKKyAgICAgIH0KKyAgICB9LAorICAgICJyZWFkLXBrZyI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9yZWFkLXBrZy8tL3JlYWQtcGtnLTEuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtOWYrcVhzMHB5ekhBUjB2S2ZYVnJhN0tlUHlnPSIsCisgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImxvYWQtanNvbi1maWxlIjogIjEuMS4wIiwK
KyAgICAgICAgIm5vcm1hbGl6ZS1wYWNrYWdlLWRhdGEiOiAiMi40LjAiLAorICAgICAgICAicGF0
aC10eXBlIjogIjEuMS4wIgorICAgICAgfQorICAgIH0sCisgICAgInJlYWQtcGtnLXVwIjogewor
ICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3JlYWQtcGtnLXVwLy0vcmVhZC1wa2ctdXAtMS4wLjEudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1uV1BCTW5iQVpaR05WL0FDcFg5QW9iWkQrd0k9IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZmluZC11cCI6
ICIxLjEuMiIsCisgICAgICAgICJyZWFkLXBrZyI6ICIxLjEuMCIKKyAgICAgIH0sCisgICAgICAi
ZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiZmluZC11cCI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjEuMiIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2ZpbmQtdXAvLS9maW5kLXVwLTEuMS4yLnRneiIsCisgICAgICAgICAgImludGVncml0
eSI6ICJzaGExLWF5NllJckdpemdwZ3EyVFdFT3pLMVR5eVRROD0iLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJwYXRoLWV4aXN0
cyI6ICIyLjEuMCIsCisgICAgICAgICAgICAicGlua2llLXByb21pc2UiOiAiMi4wLjEiCisgICAg
ICAgICAgfQogICAgICAgICB9LAotICAgICAgICAic291cmNlLW1hcC1zdXBwb3J0IjogewotICAg
ICAgICAgICJ2ZXJzaW9uIjogIjAuMi4xMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAicGF0aC1leGlzdHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAor
ICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wYXRoLWV4
aXN0cy8tL3BhdGgtZXhpc3RzLTIuMS4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJz
aGExLUQrdHNaUEQ4VVkyYWRVM1Y3N1lzY0NKMkgwcz0iLAogICAgICAgICAgICJkZXYiOiB0cnVl
LAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAu
MS4zMiIKLSAgICAgICAgICB9LAotICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAgICAg
ICAgICAic291cmNlLW1hcCI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjMyIiwK
LSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZSwKLSAgICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICJhbWRlZmlu
ZSI6ICIxLjAuMCIKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICAgICAg
InBpbmtpZS1wcm9taXNlIjogIjIuMC4xIgorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
fQorICAgIH0sCisgICAgInJlYWRhYmxlLXN0cmVhbSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIu
My4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFk
YWJsZS1zdHJlYW0vLS9yZWFkYWJsZS1zdHJlYW0tMi4zLjMudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhNTEyLW0rcXp6Y243S1V4RW1kMWdNYmNoRitZMmVJVWJpZVVheGtXdHB0eUh5d3JY
MHJFOFFFWXFQQzA3VnV5NFdtMzIveEUxNk5jZEJjdGI4UzBYZS81SWVRPT0iLAorICAgICAgImRl
diI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjb3JlLXV0aWwtaXMiOiAi
MS4wLjIiLAorICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiLAorICAgICAgICAiaXNhcnJheSI6
ICIxLjAuMCIsCisgICAgICAgICJwcm9jZXNzLW5leHRpY2stYXJncyI6ICIxLjAuNyIsCisgICAg
ICAgICJzYWZlLWJ1ZmZlciI6ICI1LjEuMSIsCisgICAgICAgICJzdHJpbmdfZGVjb2RlciI6ICIx
LjAuMyIsCisgICAgICAgICJ1dGlsLWRlcHJlY2F0ZSI6ICIxLjAuMiIKKyAgICAgIH0KKyAgICB9
LAorICAgICJyZWFkZGlycCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFkZGlycC8tL3JlYWRkaXJw
LTIuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVHRDdEJnM3pCek1BeElSQU56
OXkwY3hrTFhnPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS4xMSIsCisgICAgICAgICJtaW5pbWF0Y2giOiAiMy4w
LjQiLAorICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogIjIuMy4zIiwKKyAgICAgICAgInNldC1p
bW1lZGlhdGUtc2hpbSI6ICIxLjAuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJyZWN1cnNpdmUt
cmVhZGRpciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMi4xIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWN1cnNpdmUtcmVhZGRpci8tL3JlY3Vyc2l2
ZS1yZWFkZGlyLTIuMi4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEta084akhRZDR4
YzRKUEpwSTEwNWNWQ0xST3BrPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgIm1pbmltYXRjaCI6ICIzLjAuMyIKKyAgICAgIH0sCisgICAgICAiZGVw
ZW5kZW5jaWVzIjogeworICAgICAgICAibWluaW1hdGNoIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjMuMC4zIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvbWluaW1hdGNoLy0vbWluaW1hdGNoLTMuMC4zLnRneiIsCisgICAgICAgICAgImludGVn
cml0eSI6ICJzaGExLUtrNUFrTGxyTGJCcW5YM3dFRldtS25mSnQzUT0iLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJicmFjZS1l
eHBhbnNpb24iOiAiMS4xLjgiCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAg
fSwKKyAgICAicmVkZW50IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlZGVudC8tL3JlZGVudC0xLjAu
MC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXo1RnFzZjFmSHhiZnNnZ2kzVzdIOXpE
Q3I5ND0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJpbmRlbnQtc3RyaW5nIjogIjIuMS4wIiwKKyAgICAgICAgInN0cmlwLWluZGVudCI6ICIxLjAu
MSIKKyAgICAgIH0KKyAgICB9LAorICAgICJyZWR1Y2UtY3NzLWNhbGMiOiB7CisgICAgICAidmVy
c2lvbiI6ICIxLjMuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvcmVkdWNlLWNzcy1jYWxjLy0vcmVkdWNlLWNzcy1jYWxjLTEuMy4wLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtZEh5UlRnU1dGS1RKejd1bUtZY2EwZEtTZHhZPSIsCisgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJhbGFuY2VkLW1h
dGNoIjogIjAuNC4yIiwKKyAgICAgICAgIm1hdGgtZXhwcmVzc2lvbi1ldmFsdWF0b3IiOiAiMS4y
LjE3IiwKKyAgICAgICAgInJlZHVjZS1mdW5jdGlvbi1jYWxsIjogIjEuMC4yIgorICAgICAgfSwK
KyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJiYWxhbmNlZC1tYXRjaCI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjQuMiIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2JhbGFuY2VkLW1hdGNoLy0vYmFsYW5jZWQtbWF0Y2gtMC40
LjIudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEteXo4K1BITXR3UEFlNXd0QVB6
QXVZZGR3bURnPSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfQorICAgICAgfQor
ICAgIH0sCisgICAgInJlZHVjZS1mdW5jdGlvbi1jYWxsIjogeworICAgICAgInZlcnNpb24iOiAi
MS4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Jl
ZHVjZS1mdW5jdGlvbi1jYWxsLy0vcmVkdWNlLWZ1bmN0aW9uLWNhbGwtMS4wLjIudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1XaUFMK1M0T04zVVhVdjVGc0tzekQ5UzJ2cGs9IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFsYW5jZWQt
bWF0Y2giOiAiMC40LjIiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAg
ICAgImJhbGFuY2VkLW1hdGNoIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNC4yIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFsYW5jZWQt
bWF0Y2gvLS9iYWxhbmNlZC1tYXRjaC0wLjQuMi50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS15ejgrUEhNdHdQQWU1d3RBUHpBdVlkZHdtRGc9IiwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAicmVkdXgiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIzLjcuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvcmVkdXgvLS9yZWR1eC0zLjcuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGE1MTItcE5xbmY5cTFoSTVISFpSQmtqM2JBbmdHWlcvSk1DbWV4RGxPeHc0WGFnWFkybzEzMjdu
SEg1NExvVGppUEowZ2l6b3FQRFJxV3lYLzAwZzBoRDZ3K0E9PSIsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJsb2Rhc2giOiAiNC4xNy40IiwKKyAgICAgICAgImxvZGFzaC1lcyI6ICI0
LjE3LjQiLAorICAgICAgICAibG9vc2UtZW52aWZ5IjogIjEuMy4xIiwKKyAgICAgICAgInN5bWJv
bC1vYnNlcnZhYmxlIjogIjEuMC40IgorICAgICAgfQorICAgIH0sCisgICAgInJlZ2VuZXJhdGUi
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjMuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVnZW5lcmF0ZS8tL3JlZ2VuZXJhdGUtMS4zLjIudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0wWlFjWjdyVU4rRytka002M1ZzNFg1V3hrbUE9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAicmVnZW5lcmF0ZS11bmljb2RlLXByb3Bl
cnRpZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICI1LjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVnZW5lcmF0ZS11bmljb2RlLXByb3BlcnRpZXMv
LS9yZWdlbmVyYXRlLXVuaWNvZGUtcHJvcGVydGllcy01LjEuMS50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGE1MTItb2FaWGd5aEhSOVZZbllGelBSZE8razd0SGFVWE81alBxZkZZbmFDNWtJ
VzlOUTBrVndiNXJ0OHg1Q0VDMExDWjdXUklVeTd6SXJDRjdSMnhJYmppUkE9PSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInJlZ2VuZXJhdGUiOiAi
MS4zLjIiCisgICAgICB9CisgICAgfSwKKyAgICAicmVnZW5lcmF0b3ItcnVudGltZSI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjAuMTEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvcmVnZW5lcmF0b3ItcnVudGltZS8tL3JlZ2VuZXJhdG9yLXJ1bnRpbWUt
MC4xMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi0vYUEwa0xlUmI1TjlLMGQ0
Znc3b29FYkkreERlK0RLRDQ5OUVRcXlnR3FlUzhOM3h0bzE1cDA5dVkyeGo3aXhQODFzTlBYdlJM
bkFRSXFkVlN0Z2IxQT09IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAicmVnZW5l
cmF0b3ItdHJhbnNmb3JtIjogeworICAgICAgInZlcnNpb24iOiAiMC45LjExIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWdlbmVyYXRvci10cmFuc2Zv
cm0vLS9yZWdlbmVyYXRvci10cmFuc2Zvcm0tMC45LjExLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtT24wR2RTRExlM0YyZHA2MS80YUdrYjcrRW9NPSIsCisgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4w
IiwKKyAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMjYuMCIsCisgICAgICAgICJwcml2YXRlIjog
IjAuMS43IgorICAgICAgfQorICAgIH0sCisgICAgInJlZ2V4LWNhY2hlIjogeworICAgICAgInZl
cnNpb24iOiAiMC40LjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3JlZ2V4LWNhY2hlLy0vcmVnZXgtY2FjaGUtMC40LjQudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhNTEyLW5WSVp3dENqa0M5WWd2V2twTTU1QjVyQmhCWVJaaEFhSmJnY0ZZWFhz
SG5iWjlVWkk5bm5WV1lacEJsQ3F2OWhvMmVacnlQbldyWkdzT2RQd1ZXWFdRPT0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJpcy1lcXVhbC1zaGFs
bG93IjogIjAuMS4zIgorICAgICAgfQorICAgIH0sCisgICAgInJlZ2V4cHUtY29yZSI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjQuMS4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9yZWdleHB1LWNvcmUvLS9yZWdleHB1LWNvcmUtNC4xLjIudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLXFOTVpDbjFQVmxWL1QreEJ3a0h5d0Y3TW5PUXlVVDlF
YVg0TWdBdHhPdGkyaHBWWi84UkcrWHJWU2lsVFIvNVNMSDVmM0N3QjBUdExhR08yTStnVWxBPT0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJyZWdl
bmVyYXRlIjogIjEuMy4yIiwKKyAgICAgICAgInJlZ2VuZXJhdGUtdW5pY29kZS1wcm9wZXJ0aWVz
IjogIjUuMS4xIiwKKyAgICAgICAgInJlZ2pzZ2VuIjogIjAuMy4wIiwKKyAgICAgICAgInJlZ2pz
cGFyc2VyIjogIjAuMi4xIiwKKyAgICAgICAgInVuaWNvZGUtbWF0Y2gtcHJvcGVydHktZWNtYXNj
cmlwdCI6ICIxLjAuMyIsCisgICAgICAgICJ1bmljb2RlLW1hdGNoLXByb3BlcnR5LXZhbHVlLWVj
bWFzY3JpcHQiOiAiMS4wLjEiCisgICAgICB9CisgICAgfSwKKyAgICAicmVnaXN0cnktYXV0aC10
b2tlbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMy4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWdpc3RyeS1hdXRoLXRva2VuLy0vcmVnaXN0cnkt
YXV0aC10b2tlbi0zLjMuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLSt3MHlpZTRO
bXRvc3UxS3ZYZjVteXdjTk1BWT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICJyYyI6ICIxLjIuMSIsCisgICAgICAgICJzYWZlLWJ1ZmZlciI6ICI1
LjEuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJyZWdpc3RyeS11cmwiOiB7CisgICAgICAidmVy
c2lvbiI6ICIzLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvcmVnaXN0cnktdXJsLy0vcmVnaXN0cnktdXJsLTMuMS4wLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtUFU3NGNQYzkzaDEzOE0rYU9CUXlSRTRYU1VJPSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInJjIjogIjEuMi4xIgorICAg
ICAgfQorICAgIH0sCisgICAgInJlZ2pzZ2VuIjogeworICAgICAgInZlcnNpb24iOiAiMC4zLjAi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlZ2pzZ2Vu
Ly0vcmVnanNnZW4tMC4zLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1EdVNqNlNk
a01NMmlYeDU0bnFiQlc0ZXd5ME09IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAi
cmVnanNwYXJzZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjIuMSIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVnanNwYXJzZXIvLS9yZWdqc3BhcnNl
ci0wLjIuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXczaDFVL3J3VG5kY01DRUM3
elJ0bVZBQTdCdz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJqc2VzYyI6ICIwLjUuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJyZWxhdGV1cmwi
OiB7CisgICAgICAidmVyc2lvbiI6ICIwLjIuNyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVsYXRldXJsLy0vcmVsYXRldXJsLTAuMi43LnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtVk52emQrVVVRS3lwQ2t6U2RHQU5QL0xZaUtrPSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInJlbW92ZS10cmFpbGluZy1zZXBhcmF0b3Ii
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVtb3ZlLXRyYWlsaW5nLXNlcGFyYXRvci8tL3JlbW92ZS10
cmFpbGluZy1zZXBhcmF0b3ItMS4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS13
a3ZPS2lnNjJ0VzhQMWpnMUlKSnVTTjUyTzg9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwK
KyAgICAicmVuZGVya2lkIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlbmRlcmtpZC8tL3JlbmRlcmtp
ZC0yLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWlZeXIvSXZ0NUxlNUVUV2ov
OU1qNVl3TnN4az0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJjc3Mtc2VsZWN0IjogIjEuMi4wIiwKKyAgICAgICAgImRvbS1jb252ZXJ0ZXIiOiAi
MC4xLjQiLAorICAgICAgICAiaHRtbHBhcnNlcjIiOiAiMy4zLjAiLAorICAgICAgICAic3RyaXAt
YW5zaSI6ICIzLjAuMSIsCisgICAgICAgICJ1dGlsYSI6ICIwLjMuMyIKKyAgICAgIH0sCisgICAg
ICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiZG9taGFuZGxlciI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2RvbWhhbmRsZXIvLS9kb21oYW5kbGVyLTIuMS4wLnRneiIsCisgICAgICAg
ICAgImludGVncml0eSI6ICJzaGExLTBtUnZYbGYydzdxeEhQYkxCZFBBclBkQkpaUT0iLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJkb21lbGVtZW50dHlwZSI6ICIxLjMuMCIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAg
ICAgICJzcGR4LWNvcnJlY3QiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgImRvbXV0aWxzIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMS42IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvZG9tdXRpbHMvLS9kb211dGlscy0xLjEuNi50Z3oiLAorICAgICAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS12ZHc5NEptNW91K3N4UnhpUHlqMEZ1ekZkSVU9IiwKICAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAi
c3BkeC1saWNlbnNlLWlkcyI6ICIxLjIuMiIKKyAgICAgICAgICAgICJkb21lbGVtZW50dHlwZSI6
ICIxLjMuMCIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJzcGR4LWV4cHJlc3Np
b24tcGFyc2UiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAotICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAg
ICAic3BkeC1saWNlbnNlLWlkcyI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMiIsCi0g
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAg
IH0sCi0gICAgICAgICJzcHJpbnRmLWpzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4z
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAg
ICAgICAgfSwKLSAgICAgICAgInNzaHBrIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMTAu
MCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAiaHRtbHBhcnNlcjIiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMy4zLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9odG1scGFyc2VyMi8tL2h0bWxwYXJzZXIyLTMuMy4w
LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXpIRFFXbG4yVkM1RDhPYUZ5WUxo
VEpKS252ND0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6
IHsKLSAgICAgICAgICAgICJhc24xIjogIjAuMi4zIiwKLSAgICAgICAgICAgICJhc3NlcnQtcGx1
cyI6ICIxLjAuMCIsCi0gICAgICAgICAgICAiYmNyeXB0LXBia2RmIjogIjEuMC4wIiwKLSAgICAg
ICAgICAgICJkYXNoZGFzaCI6ICIxLjE0LjAiLAotICAgICAgICAgICAgImVjYy1qc2JuIjogIjAu
MS4xIiwKLSAgICAgICAgICAgICJnZXRwYXNzIjogIjAuMS42IiwKLSAgICAgICAgICAgICJqb2Rp
ZDI1NTE5IjogIjEuMC4yIiwKLSAgICAgICAgICAgICJqc2JuIjogIjAuMS4wIiwKLSAgICAgICAg
ICAgICJ0d2VldG5hY2wiOiAiMC4xMy4zIgotICAgICAgICAgIH0sCi0gICAgICAgICAgImRlcGVu
ZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6IHsKLSAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAg
ICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAgICB9CisgICAgICAgICAgICAiZG9tZWxl
bWVudHR5cGUiOiAiMS4zLjAiLAorICAgICAgICAgICAgImRvbWhhbmRsZXIiOiAiMi4xLjAiLAor
ICAgICAgICAgICAgImRvbXV0aWxzIjogIjEuMS42IiwKKyAgICAgICAgICAgICJyZWFkYWJsZS1z
dHJlYW0iOiAiMS4wLjM0IgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgInN0YXR1
c2VzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4wIiwKLSAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICJpc2FycmF5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
MC4xIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
aXNhcnJheS8tL2lzYXJyYXktMC4wLjEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtaWhpcy9LbW85QmQrQ2F2OFlEaVRtd1hSN3Q4PSIsCiAgICAgICAgICAgImRldiI6IHRydWUK
ICAgICAgICAgfSwKLSAgICAgICAgInN0cmVhbS1icm93c2VyaWZ5IjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJy
ZWFkYWJsZS1zdHJlYW0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjM0IiwKKyAgICAg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhZGFibGUtc3Ry
ZWFtLy0vcmVhZGFibGUtc3RyZWFtLTEuMC4zNC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1FbGdnNDB2SVF0THlxcSt2NU1LUmJ1TXNGWHc9IiwKICAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY29yZS11dGlsLWlz
IjogIjEuMC4yIiwKICAgICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCi0gICAgICAgICAg
ICAicmVhZGFibGUtc3RyZWFtIjogIjEuMS4xNCIKLSAgICAgICAgICB9LAotICAgICAgICAgICJk
ZXBlbmRlbmNpZXMiOiB7Ci0gICAgICAgICAgICAiaXNhcnJheSI6IHsKLSAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMC4wLjEiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAg
ICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInJlYWRh
YmxlLXN0cmVhbSI6IHsKLSAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjE0IiwKLSAgICAg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAg
ICAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgICAgICJjb3JlLXV0aWwtaXMi
OiAiMS4wLjIiLAotICAgICAgICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCi0gICAgICAg
ICAgICAgICAgImlzYXJyYXkiOiAiMC4wLjEiLAotICAgICAgICAgICAgICAgICJzdHJpbmdfZGVj
b2RlciI6ICIwLjEwLjMxIgotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICAiaXNhcnJheSI6ICIwLjAuMSIsCisgICAgICAgICAgICAic3RyaW5nX2RlY29kZXIiOiAi
MC4xMC4zMSIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJzdHJlYW0tY2FjaGUi
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4wLjIiLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAic3RyaWN0
LXVyaS1lbmNvZGUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAotICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAogICAg
ICAgICAic3RyaW5nX2RlY29kZXIiOiB7CiAgICAgICAgICAgInZlcnNpb24iOiAiMC4xMC4zMSIs
Ci0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJpbmdfZGVjb2Rlci8tL3N0cmluZ19kZWNvZGVyLTAu
MTAuMzEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWXVJRHZFRjJiR3dveWZ5
RU1CMnJIRk1RK3BRPSIsCiAgICAgICAgICAgImRldiI6IHRydWUKICAgICAgICAgfSwKLSAgICAg
ICAgInN0cmluZy13aWR0aCI6IHsKKyAgICAgICAgInV0aWxhIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuMy4zIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvdXRpbGEvLS91dGlsYS0wLjMuMy50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS0xK2puMStNSkVIQ1NzRitObG9pQ1RXTTZRaVk9IiwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAicmVwZWF0LWVsZW1lbnQiOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvcmVwZWF0LWVsZW1lbnQvLS9yZXBlYXQtZWxlbWVudC0xLjEuMi50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTd3aWFGNDBVZzdxdVRaUHJtTFQ1NU9FZG1R
bz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJyZXBlYXQtc3RyaW5nIjogewor
ICAgICAgInZlcnNpb24iOiAiMS42LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3JlcGVhdC1zdHJpbmcvLS9yZXBlYXQtc3RyaW5nLTEuNi4xLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtamNya2NPSElpcnd0WUEvL1NuZGlodHAxNWpjPSIs
CisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInJlcGVhdGluZyI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9yZXBlYXRpbmcvLS9yZXBlYXRpbmctMi4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1VaFRGT3BKdE5WSndkU2Y3cTBGZHZBalFiZG89IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaXMtZmluaXRlIjogIjEuMC4yIgor
ICAgICAgfQorICAgIH0sCisgICAgInJlcXVlc3QiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjgx
LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlcXVl
c3QvLS9yZXF1ZXN0LTIuODEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXhwS0pS
cURnYkYrTmI0cVRNMGFmL2FSaW1LQT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICJhd3Mtc2lnbjIiOiAiMC42LjAiLAorICAgICAgICAiYXdzNCI6
ICIxLjYuMCIsCisgICAgICAgICJjYXNlbGVzcyI6ICIwLjEyLjAiLAorICAgICAgICAiY29tYmlu
ZWQtc3RyZWFtIjogIjEuMC41IiwKKyAgICAgICAgImV4dGVuZCI6ICIzLjAuMSIsCisgICAgICAg
ICJmb3JldmVyLWFnZW50IjogIjAuNi4xIiwKKyAgICAgICAgImZvcm0tZGF0YSI6ICIyLjEuNCIs
CisgICAgICAgICJoYXItdmFsaWRhdG9yIjogIjQuMi4xIiwKKyAgICAgICAgImhhd2siOiAiMy4x
LjMiLAorICAgICAgICAiaHR0cC1zaWduYXR1cmUiOiAiMS4xLjEiLAorICAgICAgICAiaXMtdHlw
ZWRhcnJheSI6ICIxLjAuMCIsCisgICAgICAgICJpc3N0cmVhbSI6ICIwLjEuMiIsCisgICAgICAg
ICJqc29uLXN0cmluZ2lmeS1zYWZlIjogIjUuMC4xIiwKKyAgICAgICAgIm1pbWUtdHlwZXMiOiAi
Mi4xLjE3IiwKKyAgICAgICAgIm9hdXRoLXNpZ24iOiAiMC44LjIiLAorICAgICAgICAicGVyZm9y
bWFuY2Utbm93IjogIjAuMi4wIiwKKyAgICAgICAgInFzIjogIjYuNC4wIiwKKyAgICAgICAgInNh
ZmUtYnVmZmVyIjogIjUuMS4xIiwKKyAgICAgICAgInN0cmluZ3N0cmVhbSI6ICIwLjAuNSIsCisg
ICAgICAgICJ0b3VnaC1jb29raWUiOiAiMi4zLjIiLAorICAgICAgICAidHVubmVsLWFnZW50Ijog
IjAuNi4wIiwKKyAgICAgICAgInV1aWQiOiAiMy4xLjAiCisgICAgICB9CisgICAgfSwKKyAgICAi
cmVxdWlyZS1kaXJlY3RvcnkiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMSIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVxdWlyZS1kaXJlY3Rvcnkv
LS9yZXF1aXJlLWRpcmVjdG9yeS0yLjEuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LWpHU3RYOU1OcXh5WGJpTkUvK2Yza3FhbTMwST0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9
LAorICAgICJyZXF1aXJlLWZyb20tc3RyaW5nIjogeworICAgICAgInZlcnNpb24iOiAiMS4yLjEi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlcXVpcmUt
ZnJvbS1zdHJpbmcvLS9yZXF1aXJlLWZyb20tc3RyaW5nLTEuMi4xLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtVXB5Y3p2SnpnSzMreWFMNVpiWkp1KzVqWkJnPSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgInJlcXVpcmUtbWFpbi1maWxlbmFtZSI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9yZXF1aXJlLW1haW4tZmlsZW5hbWUvLS9yZXF1aXJlLW1haW4tZmlsZW5hbWUtMS4w
LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1sL2NYdHAxSWVFOWZVbXBzV3FqLzNh
QlZwTkU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAicmVxdWlyZS11bmNhY2hl
ZCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZXF1aXJlLXVuY2FjaGVkLy0vcmVxdWlyZS11bmNhY2hl
ZC0xLjAuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVRnMVcxc2xtTDlNZVF3RWNT
NVdxU1pWVUlkTT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJjYWxsZXItcGF0aCI6ICIwLjEuMCIsCisgICAgICAgICJyZXNvbHZlLWZyb20iOiAi
MS4wLjEiCisgICAgICB9CisgICAgfSwKKyAgICAicmVxdWlyZXMtcG9ydCI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9yZXF1aXJlcy1wb3J0Ly0vcmVxdWlyZXMtcG9ydC0xLjAuMC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLWtsMG1BZE9heElYZ2tjOE5wY2JtbE53OXl2OD0iLAorICAgICAg
ImRldiI6IHRydWUKKyAgICB9LAorICAgICJyZXNvbHZlIjogeworICAgICAgInZlcnNpb24iOiAi
MS40LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Jl
c29sdmUvLS9yZXNvbHZlLTEuNC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1h
VzdzVktQdWZ5SHFPbXl5THpnL0orODYwNnY1bmV2QmdhbGlJbFY3blVwVk1zRG5vQkdWL2NiU0xO
alpBZzlxMENmZC8rZWFzS1ZLUTh2T3U4Zm4xUT09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAicGF0aC1wYXJzZSI6ICIxLjAuNSIKKyAgICAgIH0K
KyAgICB9LAorICAgICJyZXNvbHZlLWRpciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZXNvbHZlLWRp
ci8tL3Jlc29sdmUtZGlyLTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZWFR
R1JNTml2b0x5YnYvbk9jbTdVNElFYjBNPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgImV4cGFuZC10aWxkZSI6ICIyLjAuMiIsCisgICAgICAgICJn
bG9iYWwtbW9kdWxlcyI6ICIxLjAuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJyZXNvbHZlLWZy
b20iOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVzb2x2ZS1mcm9tLy0vcmVzb2x2ZS1mcm9tLTEuMC4x
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtSnN2K2sxMGE3dXE3S2J3LzVhNndIcFBV
UWlZPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInJlc3RvcmUtY3Vyc29yIjog
eworICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3Jlc3RvcmUtY3Vyc29yLy0vcmVzdG9yZS1jdXJzb3ItMi4wLjAu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1uMzdpaC9ndjB5YlUvUllwSTlZaEtlN2cz
Njg9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAi
b25ldGltZSI6ICIyLjAuMSIsCisgICAgICAgICJzaWduYWwtZXhpdCI6ICIzLjAuMiIKKyAgICAg
IH0KKyAgICB9LAorICAgICJyaWdodC1hbGlnbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4z
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yaWdodC1h
bGlnbi8tL3JpZ2h0LWFsaWduLTAuMS4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
WVRPYmNpL21vMUZXaVNFTkpPRk1saFNHRSs4PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFsaWduLXRleHQiOiAiMC4xLjQiCisgICAgICB9Cisg
ICAgfSwKKyAgICAicmltcmFmIjogeworICAgICAgInZlcnNpb24iOiAiMi42LjEiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JpbXJhZi8tL3JpbXJhZi0y
LjYuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXdqT094a1BmZWh0LzVjVlBxRzlY
UW9wVjh6MD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJnbG9iIjogIjcuMS4yIgorICAgICAgfQorICAgIH0sCisgICAgInJpcGVtZDE2MCI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9yaXBlbWQxNjAvLS9yaXBlbWQxNjAtMi4wLjEudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1EMFdFS1Z4VG8yS0s5K2JYbXNvaHpsZlJ4dWM9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaGFzaC1iYXNlIjog
IjIuMC4yIiwKKyAgICAgICAgImluaGVyaXRzIjogIjIuMC4zIgorICAgICAgfQorICAgIH0sCisg
ICAgInJ1bi1hc3luYyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMy4wIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ydW4tYXN5bmMvLS9ydW4tYXN5bmMt
Mi4zLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1BM0dyU3VDOTF5RFVGbTE5L2Fa
UDk2UkZwc0E9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAiaXMtcHJvbWlzZSI6ICIyLjEuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJyeC1saXRl
IjogeworICAgICAgInZlcnNpb24iOiAiNC4wLjgiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3J4LWxpdGUvLS9yeC1saXRlLTQuMC44LnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtQ3g0UnI0dkVTRGJ3U21RSDZTMmtKR2UzbEVRPSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInJ4LWxpdGUtYWdncmVnYXRlcyI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjQuMC44IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9yeC1saXRlLWFnZ3JlZ2F0ZXMvLS9yeC1saXRlLWFnZ3JlZ2F0ZXMtNC4wLjgu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1kVHVIcUpvUnlWUm54S3dXSnNUdnhPQmNa
NzQ9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAi
cngtbGl0ZSI6ICI0LjAuOCIKKyAgICAgIH0KKyAgICB9LAorICAgICJzYWZlLWJ1ZmZlciI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjUuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9zYWZlLWJ1ZmZlci8tL3NhZmUtYnVmZmVyLTUuMS4xLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1rS3ZOSm42TW05M2dBY3pXVkpnN3dIK3dHWVdOckRI
ZFd2cFVtSHlFc2dDdEl3d28zYnFQdFY0dFI1dHVQYVVoVE9vL2t2aFZ3ZDhYd3dPbGxHWWtiZz09
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAic2FuZSI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9zYW5lLy0vc2FuZS0xLjYuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWxo
REVVakI2RTEwcHdmMytKVWNEUVlERVozVT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICJhbnltYXRjaCI6ICIxLjMuMiIsCisgICAgICAgICJleGVj
LXNoIjogIjAuMi4wIiwKKyAgICAgICAgImZiLXdhdGNobWFuIjogIjEuOS4yIiwKKyAgICAgICAg
Im1pbmltYXRjaCI6ICIzLjAuNCIsCisgICAgICAgICJtaW5pbWlzdCI6ICIxLjIuMCIsCisgICAg
ICAgICJ3YWxrZXIiOiAiMS4wLjciLAorICAgICAgICAid2F0Y2giOiAiMC4xMC4wIgorICAgICAg
fSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJic2VyIjogewogICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4yIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JzZXIvLS9ic2VyLTEu
MC4yLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLU9CRVdsd3NxYmU2bFpHM1JY
ZGNuaEVTMVlXaz0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJl
cyI6IHsKLSAgICAgICAgICAgICJjb2RlLXBvaW50LWF0IjogIjEuMC4wIiwKLSAgICAgICAgICAg
ICJpcy1mdWxsd2lkdGgtY29kZS1wb2ludCI6ICIxLjAuMCIsCi0gICAgICAgICAgICAic3RyaXAt
YW5zaSI6ICIzLjAuMSIKKyAgICAgICAgICAgICJub2RlLWludDY0IjogIjAuNC4wIgogICAgICAg
ICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgInN0cmluZy5wcm90b3R5cGUuY29kZXBvaW50YXQi
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4yLjAiLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAic3RyaW5n
c3RyZWFtIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC41IiwKLSAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAg
InN0cmlwLWFuc2kiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMy4wLjEiLAotICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgImZiLXdhdGNobWFuIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuOS4yIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvZmItd2F0Y2htYW4vLS9mYi13YXRjaG1hbi0xLjkuMi50Z3oiLAorICAgICAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1va3owZUNmNExUajdXYWFhMXd0MjQ3YXVjNE09IiwKICAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAg
ICAiYW5zaS1yZWdleCI6ICIyLjAuMCIKKyAgICAgICAgICAgICJic2VyIjogIjEuMC4yIgogICAg
ICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgInN0cmlwLWJvbSI6IHsKLSAgICAgICAgICAi
dmVyc2lvbiI6ICIyLjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAi
bWluaW1pc3QiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAorICAgICAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9taW5pbWlzdC8tL21pbmltaXN0
LTEuMi4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLW8xQUlzZzlCT0Q3c0g3
a1U5TTFkOTVvbVFvUT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0KKyAgICAg
IH0KKyAgICB9LAorICAgICJzYXgiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjIuNCIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc2F4Ly0vc2F4LTEuMi40
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1OcVZEdjlUcEFOVWpGbTBOOHVNNUd4
TDM2VWdLaTkvYXRadyt4N1lGblE4Y2t3RkdLcmw0eFg0eVd0cmV5M1VKbTVuUDFrVWJuWWdMb3Bx
V05TUmhXdz09IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAic2NoZW1hLXV0aWxz
IjogeworICAgICAgInZlcnNpb24iOiAiMC4zLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3NjaGVtYS11dGlscy8tL3NjaGVtYS11dGlscy0wLjMuMC50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTlZZHlJczQra3g3YTREbnhmck54Ym5FMytN
OD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJh
anYiOiAiNS4yLjIiCisgICAgICB9CisgICAgfSwKKyAgICAic2VsZWN0LWhvc2UiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvc2VsZWN0LWhvc2UvLS9zZWxlY3QtaG9zZS0yLjAuMC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLVlsMkdXUGhscjBQc2xpdjhOMm8zTlpwSmxNbz0iLAorICAgICAg
ImRldiI6IHRydWUKKyAgICB9LAorICAgICJzZWxmc2lnbmVkIjogeworICAgICAgInZlcnNpb24i
OiAiMS4xMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9zZWxmc2lnbmVkLy0vc2VsZnNpZ25lZC0xLjEwLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS12NHkzdURKV3hGVWVNVFI4WXhGM2pibWU3Rkk9IiwKKyAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibm9kZS1mb3JnZSI6ICIwLjYuMzMiCisg
ICAgICB9CisgICAgfSwKKyAgICAic2VtdmVyIjogeworICAgICAgInZlcnNpb24iOiAiNS40LjEi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NlbXZlci8t
L3NlbXZlci01LjQuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItV2ZHL1g5K29B
VGg4MVh0bGxJby9JOGdPaVk5RVhSZHYxY1FkeXlrZVhLMTdZY1VXM0VYVUFpMlRvNHBjSDZuWnRK
UHI3Wk9wTTVPTXlXSlptKzhSc2c9PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAg
InNlbXZlci1kaWZmIjogeworICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NlbXZlci1kaWZmLy0vc2VtdmVyLWRp
ZmYtMi4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1TN3VFTjhqVGZrc004YWFQ
MXlic2JXUmRiVFk9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAic2VtdmVyIjogIjUuNC4xIgorICAgICAgfQorICAgIH0sCisgICAgInNlbmQiOiB7
CisgICAgICAidmVyc2lvbiI6ICIwLjE1LjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3NlbmQvLS9zZW5kLTAuMTUuNC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLW1GK3FQaWhMQW5QSGt6WktOY1p6ZTlrNUJiaz0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJkZWJ1ZyI6ICIyLjYuOCIsCisg
ICAgICAgICJkZXBkIjogIjEuMS4xIiwKKyAgICAgICAgImRlc3Ryb3kiOiAiMS4wLjQiLAorICAg
ICAgICAiZW5jb2RldXJsIjogIjEuMC4xIiwKKyAgICAgICAgImVzY2FwZS1odG1sIjogIjEuMC4z
IiwKKyAgICAgICAgImV0YWciOiAiMS44LjAiLAorICAgICAgICAiZnJlc2giOiAiMC41LjAiLAor
ICAgICAgICAiaHR0cC1lcnJvcnMiOiAiMS42LjIiLAorICAgICAgICAibWltZSI6ICIxLjMuNCIs
CisgICAgICAgICJtcyI6ICIyLjAuMCIsCisgICAgICAgICJvbi1maW5pc2hlZCI6ICIyLjMuMCIs
CisgICAgICAgICJyYW5nZS1wYXJzZXIiOiAiMS4yLjAiLAorICAgICAgICAic3RhdHVzZXMiOiAi
MS4zLjEiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgIm1pbWUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4zLjQiLAorICAgICAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9taW1lLy0vbWltZS0xLjMuNC50Z3oiLAorICAg
ICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1FVitlTzJzOXJ5bFptRHl6anhTYUxVRHJYVk09IiwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAi
c2VydmUtaW5kZXgiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjkuMCIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc2VydmUtaW5kZXgvLS9zZXJ2ZS1pbmRl
eC0xLjkuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTByS0EvRllOWVc3b0cwaS9E
NmdxdnRKSVhPYz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJhY2NlcHRzIjogIjEuMy40IiwKKyAgICAgICAgImJhdGNoIjogIjAuNi4xIiwKKyAg
ICAgICAgImRlYnVnIjogIjIuNi44IiwKKyAgICAgICAgImVzY2FwZS1odG1sIjogIjEuMC4zIiwK
KyAgICAgICAgImh0dHAtZXJyb3JzIjogIjEuNi4yIiwKKyAgICAgICAgIm1pbWUtdHlwZXMiOiAi
Mi4xLjE3IiwKKyAgICAgICAgInBhcnNldXJsIjogIjEuMy4xIgorICAgICAgfQorICAgIH0sCisg
ICAgInNlcnZlLXN0YXRpYyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMTIuNCIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc2VydmUtc3RhdGljLy0vc2Vy
dmUtc3RhdGljLTEuMTIuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLW0ycXBqdXR5
VThUdTNFd2ZiOXZLWUprQnFXRT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICJlbmNvZGV1cmwiOiAiMS4wLjEiLAorICAgICAgICAiZXNjYXBlLWh0
bWwiOiAiMS4wLjMiLAorICAgICAgICAicGFyc2V1cmwiOiAiMS4zLjEiLAorICAgICAgICAic2Vu
ZCI6ICIwLjE1LjQiCisgICAgICB9CisgICAgfSwKKyAgICAic2VydmljZXdvcmtlci1jYWNoZS1w
b2x5ZmlsbCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zZXJ2aWNld29ya2VyLWNhY2hlLXBvbHlmaWxs
Ly0vc2VydmljZXdvcmtlci1jYWNoZS1wb2x5ZmlsbC00LjAuMC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLTNobnVjNzd5R3JQQWRBbzNzejIySkdTNnZlcz0iLAorICAgICAgImRldiI6
IHRydWUKKyAgICB9LAorICAgICJzZXQtYmxvY2tpbmciOiB7CisgICAgICAidmVyc2lvbiI6ICIy
LjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc2V0
LWJsb2NraW5nLy0vc2V0LWJsb2NraW5nLTIuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtQkYrWGd0QVJycHBvQTkzVGdySkRrclBZa1BjPSIsCisgICAgICAiZGV2IjogdHJ1ZQor
ICAgIH0sCisgICAgInNldC1pbW1lZGlhdGUtc2hpbSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEu
MC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zZXQt
aW1tZWRpYXRlLXNoaW0vLS9zZXQtaW1tZWRpYXRlLXNoaW0tMS4wLjEudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1TeXNiSit1QWlwK056RWdhV09YbGIxbWZQMkU9IiwKKyAgICAgICJk
ZXYiOiB0cnVlCisgICAgfSwKKyAgICAic2V0aW1tZWRpYXRlIjogeworICAgICAgInZlcnNpb24i
OiAiMS4wLjUiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3NldGltbWVkaWF0ZS8tL3NldGltbWVkaWF0ZS0xLjAuNS50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLUtReTdJeTR3YVVMWDErcWJnM01xdDRWdmdvVT0iCisgICAgfSwKKyAgICAic2V0
cHJvdG90eXBlb2YiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc2V0cHJvdG90eXBlb2YvLS9zZXRwcm90
b3R5cGVvZi0xLjAuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVpsWitOd1ErNjA4
RTJSdldXTURMNzdWYmpnUT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJzZXR0
bGUtcHJvbWlzZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zZXR0bGUtcHJvbWlzZS8tL3NldHRsZS1w
cm9taXNlLTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYVhyYldMZ2g4NGZP
SjFmQWJ2eWQ1ZkR1TTlnPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInNoYS5q
cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuNC44IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zaGEuanMvLS9zaGEuanMtMi40LjgudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1Od2FNTEVkcmE2OUFMUlNrbkdmMWw1SWZZMDg9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaW5oZXJpdHMiOiAi
Mi4wLjMiCisgICAgICB9CisgICAgfSwKKyAgICAic2hlYmFuZy1jb21tYW5kIjogeworICAgICAg
InZlcnNpb24iOiAiMS4yLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL3NoZWJhbmctY29tbWFuZC8tL3NoZWJhbmctY29tbWFuZC0xLjIuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLVJLckdXMmxiQXptSmFNT2ZOai91WGVyOThlbz0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJzaGViYW5n
LXJlZ2V4IjogIjEuMC4wIgorICAgICAgfQorICAgIH0sCisgICAgInNoZWJhbmctcmVnZXgiOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvc2hlYmFuZy1yZWdleC8tL3NoZWJhbmctcmVnZXgtMS4wLjAudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0ya0wwbDBEQXRDMnl5cGNvVnh5eGtNbU8vcU09
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAic2hlbGwtcXVvdGUiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIxLjYuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvc2hlbGwtcXVvdGUvLS9zaGVsbC1xdW90ZS0xLjYuMS50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLTlIZ1pTY3prQW1seEowTU9vN1BGUjI5SUYyYz0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJhcnJheS1maWx0ZXIi
OiAiMC4wLjEiLAorICAgICAgICAiYXJyYXktbWFwIjogIjAuMC4wIiwKKyAgICAgICAgImFycmF5
LXJlZHVjZSI6ICIwLjAuMCIsCisgICAgICAgICJqc29uaWZ5IjogIjAuMC4wIgorICAgICAgfQor
ICAgIH0sCisgICAgInNoZWxsd29yZHMiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuMSIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc2hlbGx3b3Jkcy8t
L3NoZWxsd29yZHMtMC4xLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLXZGd1NV
ZlF2cXliaUlDd1pZNStEQVdJUExLc1dPMzFROTFKU0tsM1VZditLNWMyUVJQem4wcXplYzZRUHUx
UWM5ZUhZSXRpUDNOZEpxTlZxZXRZQXd3PT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAor
ICAgICJzaWduYWwtZXhpdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMC4yIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zaWduYWwtZXhpdC8tL3NpZ25h
bC1leGl0LTMuMC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdGYzQWp4S0g2aEY0
WW81QlhpVVRLM05rYkcwPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInNsYXNo
IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3NsYXNoLy0vc2xhc2gtMS4wLjAudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS14Qjh2YkRuOEZ0SE5GNjFMWFlsaEZLNUhEVlU9IiwKKyAgICAgICJk
ZXYiOiB0cnVlCisgICAgfSwKKyAgICAic2xpY2UtYW5zaSI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjAuMC40IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9z
bGljZS1hbnNpLy0vc2xpY2UtYW5zaS0wLjAuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLTdiK0pBL1p2Zk9MNDZ2MXM3dFplSmt5REd6VT0iLAorICAgICAgImRldiI6IHRydWUKKyAg
ICB9LAorICAgICJzbGlkZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS42IiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zbGlkZS8tL3NsaWRlLTEuMS42
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVnVzQ2ZXVzAwdHpteXk0dE1zVFVyOG5o
MXdjPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInNudHAiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIxLjAuOSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvc250cC8tL3NudHAtMS4wLjkudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1aVUVZVE1rSzdxYkc1N05lSmxrSUpFUEdZWmc9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAiaG9layI6ICIyLjE2LjMiCisgICAgICB9CisgICAg
fSwKKyAgICAic29ja2pzIjogeworICAgICAgInZlcnNpb24iOiAiMC4zLjE4IiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zb2NranMvLS9zb2NranMtMC4z
LjE4LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMmJLSk1XeW4zM2RaWHZLWjRIWHcr
VGZyUWdjPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgImZheWUtd2Vic29ja2V0IjogIjAuMTAuMCIsCisgICAgICAgICJ1dWlkIjogIjIuMC4zIgor
ICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJmYXllLXdlYnNvY2tl
dCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEwLjAiLAorICAgICAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mYXllLXdlYnNvY2tldC8tL2ZheWUtd2Vi
c29ja2V0LTAuMTAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1Ua2t2alFU
ZnR2aVFBMUIvYnR2eTFRSG54dlE9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAg
ICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiaXMtdXRmOCI6ICIwLjIuMSIKKyAgICAgICAg
ICAgICJ3ZWJzb2NrZXQtZHJpdmVyIjogIjAuNi41IgogICAgICAgICAgIH0KICAgICAgICAgfSwK
LSAgICAgICAgInN0cmlwLWpzb24tY29tbWVudHMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjQiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgInV1aWQiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMi4wLjMiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy91dWlkLy0vdXVpZC0yLjAuMy50Z3oiLAorICAgICAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1aK0xvWTNseUZWTU4vekdPVy9uYzYvMUhzaG89IiwKICAgICAg
ICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAic3R5bGUtbG9hZGVyIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMTMuMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAotICAgICAgICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAg
ICAgICAgICJsb2FkZXItdXRpbHMiOiAiMC4yLjE2IgotICAgICAgICAgIH0KLSAgICAgICAgfSwK
LSAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMS4y
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0g
ICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgImhhcy1mbGFnIjogIjEuMC4wIgot
ICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInN2Z28iOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMC43LjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiY29hIjog
IjEuMC4xIiwKLSAgICAgICAgICAgICJjb2xvcnMiOiAiMS4xLjIiLAotICAgICAgICAgICAgImNz
c28iOiAiMi4yLjEiLAotICAgICAgICAgICAgImpzLXlhbWwiOiAiMy42LjEiLAotICAgICAgICAg
ICAgIm1rZGlycCI6ICIwLjUuMSIsCi0gICAgICAgICAgICAic2F4IjogIjEuMi4xIiwKLSAgICAg
ICAgICAgICJ3aGV0LmV4dGVuZCI6ICIwLjkuOSIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0g
ICAgICAgICJzd2FwLWNhc2UiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAg
ICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAibG93ZXItY2FzZSI6ICIxLjEuMyIsCi0gICAg
ICAgICAgICAidXBwZXItY2FzZSI6ICIxLjEuMyIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0g
ICAgICAgICJzeW1ib2wtdHJlZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIzLjEuNCIsCi0g
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAg
ICAic29ja2pzLWNsaWVudCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS40IiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zb2NranMtY2xpZW50Ly0vc29j
a2pzLWNsaWVudC0xLjEuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVc2dmpocmQx
NU04VTUxSUpFVVVtVkFGc2l4ST0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICJkZWJ1ZyI6ICIyLjYuOCIsCisgICAgICAgICJldmVudHNvdXJjZSI6
ICIwLjEuNiIsCisgICAgICAgICJmYXllLXdlYnNvY2tldCI6ICIwLjExLjEiLAorICAgICAgICAi
aW5oZXJpdHMiOiAiMi4wLjMiLAorICAgICAgICAianNvbjMiOiAiMy4zLjIiLAorICAgICAgICAi
dXJsLXBhcnNlIjogIjEuMS45IgorICAgICAgfQorICAgIH0sCisgICAgInNvcnQta2V5cyI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9zb3J0LWtleXMvLS9zb3J0LWtleXMtMS4xLjIudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1SQnR0VFRSbm1QRzA1SjZKSUszN29PVkQrYTA9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaXMtcGxhaW4tb2Jq
IjogIjEuMS4wIgorICAgICAgfQorICAgIH0sCisgICAgInNvdXJjZS1saXN0LW1hcCI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjAuMS44IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9zb3VyY2UtbGlzdC1tYXAvLS9zb3VyY2UtbGlzdC1tYXAtMC4xLjgudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS14VkN5cTFRbjlyUHlIMXIrcllqRTlWaDdJUVk9
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAic291cmNlLW1hcCI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjAuNS43IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9zb3VyY2UtbWFwLy0vc291cmNlLW1hcC0wLjUuNy50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLWlnT2RMUkFoMGkwZW9VeUEyT3BHaTZMdlA4dz0iLAorICAgICAgImRl
diI6IHRydWUKKyAgICB9LAorICAgICJzb3VyY2UtbWFwLXN1cHBvcnQiOiB7CisgICAgICAidmVy
c2lvbiI6ICIwLjQuMTciLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3NvdXJjZS1tYXAtc3VwcG9ydC8tL3NvdXJjZS1tYXAtc3VwcG9ydC0wLjQuMTcudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLTMwYzFDaDhGU2pWMEZ3QzI1M2lmdGJiajBk
VS9PWG9TZzFMQUVHWkpVbEdnalROajZjdStEVnFKV1dJWkpZNVJYTFdWNGVGdFIrNG91bzBWSU9Z
T1RnPT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJzb3VyY2UtbWFwIjogIjAuNS43IgorICAgICAgfQorICAgIH0sCisgICAgInNwZHgtY29ycmVj
dCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zcGR4LWNvcnJlY3QvLS9zcGR4LWNvcnJlY3QtMS4wLjIu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1TekJ6MlRQL1VmT1JMd09zVlJsSmlrRlEy
MEE9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAi
c3BkeC1saWNlbnNlLWlkcyI6ICIxLjIuMiIKKyAgICAgIH0KKyAgICB9LAorICAgICJzcGR4LWV4
cHJlc3Npb24tcGFyc2UiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuNCIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3BkeC1leHByZXNzaW9uLXBhcnNl
Ly0vc3BkeC1leHByZXNzaW9uLXBhcnNlLTEuMC40LnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtbTk4dklPSDBEdFJIKytKekptR1IvTzFSWW13PSIsCisgICAgICAiZGV2IjogdHJ1ZQor
ICAgIH0sCisgICAgInNwZHgtbGljZW5zZS1pZHMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjIu
MiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3BkeC1s
aWNlbnNlLWlkcy8tL3NwZHgtbGljZW5zZS1pZHMtMS4yLjIudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS15ZDk2TkNSWlN0NXIwUmtBMVpacGJjQnJyRmM9IiwKKyAgICAgICJkZXYiOiB0
cnVlCisgICAgfSwKKyAgICAic3BkeSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuNC43IiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zcGR5Ly0vc3BkeS0z
LjQuNy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVF2OUI3T1hNRDVtanBzS0txN2Mv
WERzRHJMdz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJkZWJ1ZyI6ICIyLjYuOCIsCisgICAgICAgICJoYW5kbGUtdGhpbmciOiAiMS4yLjUiLAor
ICAgICAgICAiaHR0cC1kZWNlaXZlciI6ICIxLjIuNyIsCisgICAgICAgICJzYWZlLWJ1ZmZlciI6
ICI1LjEuMSIsCisgICAgICAgICJzZWxlY3QtaG9zZSI6ICIyLjAuMCIsCisgICAgICAgICJzcGR5
LXRyYW5zcG9ydCI6ICIyLjAuMjAiCisgICAgICB9CisgICAgfSwKKyAgICAic3BkeS10cmFuc3Bv
cnQiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMjAiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3NwZHktdHJhbnNwb3J0Ly0vc3BkeS10cmFuc3BvcnQt
Mi4wLjIwLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYzE1eUJVeElheU5VL29ubkFp
VmdCS09hemswPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImRlYnVnIjogIjIuNi44IiwKKyAgICAgICAgImRldGVjdC1ub2RlIjogIjIuMC4zIiwK
KyAgICAgICAgImhwYWNrLmpzIjogIjIuMS42IiwKKyAgICAgICAgIm9idWYiOiAiMS4xLjEiLAor
ICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogIjIuMy4zIiwKKyAgICAgICAgInNhZmUtYnVmZmVy
IjogIjUuMS4xIiwKKyAgICAgICAgIndidWYiOiAiMS43LjIiCisgICAgICB9CisgICAgfSwKKyAg
ICAic3ByaW50Zi1qcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zcHJpbnRmLWpzLy0vc3ByaW50Zi1q
cy0xLjAuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUJPYVNiMllvbFRWUFBkQVZJ
RFl6dUZjcGZpdz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJzc2hwayI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuMTMuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvc3NocGsvLS9zc2hway0xLjEzLjEudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1VUzMyMm1LSEZFTVczRXdZL2h6eDJVQnptK009IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYXNuMSI6ICIwLjIuMyIsCisg
ICAgICAgICJhc3NlcnQtcGx1cyI6ICIxLjAuMCIsCisgICAgICAgICJiY3J5cHQtcGJrZGYiOiAi
MS4wLjEiLAorICAgICAgICAiZGFzaGRhc2giOiAiMS4xNC4xIiwKKyAgICAgICAgImVjYy1qc2Ju
IjogIjAuMS4xIiwKKyAgICAgICAgImdldHBhc3MiOiAiMC4xLjciLAorICAgICAgICAianNibiI6
ICIwLjEuMSIsCisgICAgICAgICJ0d2VldG5hY2wiOiAiMC4xNC41IgorICAgICAgfSwKKyAgICAg
ICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJhc3NlcnQtcGx1cyI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2Fzc2VydC1wbHVzLy0vYXNzZXJ0LXBsdXMtMS4wLjAudGd6IiwKKyAgICAg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtOFM0UFBGMTNzTEhOMlJScFF1VHBiQjVOMVNVPSIsCisg
ICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgInN0
YXR1c2VzIjogeworICAgICAgInZlcnNpb24iOiAiMS4zLjEiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0YXR1c2VzLy0vc3RhdHVzZXMtMS4zLjEudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0rdlVibnJkS3J2T3pyUFN0WDJHcjhreTN1VDQ9
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAic3RyZWFtLWJyb3dzZXJpZnkiOiB7
CisgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvc3RyZWFtLWJyb3dzZXJpZnkvLS9zdHJlYW0tYnJvd3NlcmlmeS0y
LjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVppWnU1Zm05dVpRS1RrVVV5dnRE
dTNIbHlkcz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiAiMi4z
LjMiCisgICAgICB9CisgICAgfSwKKyAgICAic3RyZWFtLWh0dHAiOiB7CisgICAgICAidmVyc2lv
biI6ICIyLjcuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvc3RyZWFtLWh0dHAvLS9zdHJlYW0taHR0cC0yLjcuMi50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGE1MTItYzB5VEQycmJRelh0U3NGU1ZodHB2WS92UzZ1MDY2UGNYT1g5a0JCM21TTzc2
UmlVUXpMMzQwdUprR0JXbmxCZzQvSFp6cWlVWHRhVkE3d2NSY0pnRXc9PSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJ1aWx0aW4tc3RhdHVzLWNv
ZGVzIjogIjMuMC4wIiwKKyAgICAgICAgImluaGVyaXRzIjogIjIuMC4zIiwKKyAgICAgICAgInJl
YWRhYmxlLXN0cmVhbSI6ICIyLjMuMyIsCisgICAgICAgICJ0by1hcnJheWJ1ZmZlciI6ICIxLjAu
MSIsCisgICAgICAgICJ4dGVuZCI6ICI0LjAuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJzdHJp
Y3QtdXJpLWVuY29kZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJpY3QtdXJpLWVuY29kZS8tL3N0
cmljdC11cmktZW5jb2RlLTEuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtSjVz
aVhmSFZnckgxVG1XdDNVTlM0WStxQnhNPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisg
ICAgInN0cmluZy1sZW5ndGgiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3RyaW5nLWxlbmd0aC8tL3N0
cmluZy1sZW5ndGgtMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1WcGNQc2NP
RldPbm5DM0tMODk0bW1zUmEzNnc9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIKKyAgICAgIH0KKyAgICB9LAor
ICAgICJzdHJpbmctd2lkdGgiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMSIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3RyaW5nLXdpZHRoLy0vc3Ry
aW5nLXdpZHRoLTIuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1uT3FINTlk
ZUNxOVNSSGx4cTFBdzg1Sm50NHc2S3ZMS3FXVmlrNm9BOVprbFhMTklPbHFnNEYyeXJUMU1WYVRq
QXF2VndkZmVaN3c3YUN2SkQ3dWdrdz09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiAiMi4wLjAiLAor
ICAgICAgICAic3RyaXAtYW5zaSI6ICI0LjAuMCIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5j
aWVzIjogeworICAgICAgICAiYW5zaS1yZWdleCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIz
LjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2Fuc2ktcmVnZXgvLS9hbnNpLXJlZ2V4LTMuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0
eSI6ICJzaGExLTdRTVh3eUlHVDNsR2JBS1dhOTIyQmFzMzJaZz0iLAogICAgICAgICAgICJkZXYi
OiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJ0YWJsZSI6IHsKLSAgICAgICAgICAidmVyc2lv
biI6ICIzLjguMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAic3RyaXAt
YW5zaSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjAuMCIsCisgICAgICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0cmlwLWFuc2kvLS9zdHJpcC1hbnNp
LTQuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXFFZVFJdXNhdzJpb2NU
aWJZMUppeFFYdU5vOD0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1
aXJlcyI6IHsKLSAgICAgICAgICAgICJhanYiOiAiNC43LjQiLAotICAgICAgICAgICAgImFqdi1r
ZXl3b3JkcyI6ICIxLjEuMSIsCi0gICAgICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAotICAgICAg
ICAgICAgImxvZGFzaCI6ICI0LjE2LjIiLAotICAgICAgICAgICAgInNsaWNlLWFuc2kiOiAiMC4w
LjQiLAotICAgICAgICAgICAgInN0cmluZy13aWR0aCI6ICIxLjAuMiIKKyAgICAgICAgICAgICJh
bnNpLXJlZ2V4IjogIjMuMC4wIgogICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInRh
cGFibGUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4xLjEwIiwKLSAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAg
InRlc3QtZXhjbHVkZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMiIsCi0gICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAic3Ry
aW5nX2RlY29kZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3RyaW5nX2RlY29kZXIvLS9zdHJpbmdf
ZGVjb2Rlci0xLjAuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItNEFINlo1ZnpO
TkJjSCs2WERNZkEvQlR0ODdza3hxSmxPMGxBaDNEa2VyNXpUaGNBeEc2bUt6K2lHdTMwOFVLb1BQ
UThEY3F4LzRKaHVqemx0UmEraFE9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgInNhZmUtYnVmZmVyIjogIjUuMS4xIgorICAgICAgfQorICAgIH0s
CisgICAgInN0cmluZ3N0cmVhbSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMC41IiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJpbmdzdHJlYW0vLS9z
dHJpbmdzdHJlYW0tMC4wLjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1Ua2hNMU41
YUM3dnVHT1JqQjNFS2lvRmlHSGc9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAi
c3RyaXAtYW5zaSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJpcC1hbnNpLy0vc3RyaXAtYW5zaS0z
LjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWFqaGZ1SVU5bFMxZjhGME9pcStV
SjQzR1BjOD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJhbnNpLXJlZ2V4IjogIjIuMS4xIgorICAgICAgfQorICAgIH0sCisgICAgInN0cmlwLWJv
bSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJpcC1ib20vLS9zdHJpcC1ib20tMi4wLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ZaG1vVmhaU0JKSHpWNGk5dnhSSHFaeCthdzQ9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaXMtdXRm
OCI6ICIwLjIuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJzdHJpcC1lb2YiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvc3RyaXAtZW9mLy0vc3RyaXAtZW9mLTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtdTBQL1ZaaW02d1hZbTFuODBTbkpnekUyQnI4PSIsCisgICAgICAiZGV2Ijog
dHJ1ZQorICAgIH0sCisgICAgInN0cmlwLWluZGVudCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEu
MC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJp
cC1pbmRlbnQvLS9zdHJpcC1pbmRlbnQtMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1ESGxpcHEzdnA3dlVyRFprWUtZNFZTcmhvS0k9IiwKKyAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZ2V0LXN0ZGluIjogIjQuMC4xIgorICAgICAg
fQorICAgIH0sCisgICAgInN0cmlwLWpzb24tY29tbWVudHMiOiB7CisgICAgICAidmVyc2lvbiI6
ICIyLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
c3RyaXAtanNvbi1jb21tZW50cy8tL3N0cmlwLWpzb24tY29tbWVudHMtMi4wLjEudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1QRk1aUXVrSXdtbDhEc05FaFl3b2JIeWdwZ289IiwKKyAg
ICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAic3R5bGUtbG9hZGVyIjogeworICAgICAgInZl
cnNpb24iOiAiMC4xOC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9zdHlsZS1sb2FkZXIvLS9zdHlsZS1sb2FkZXItMC4xOC4yLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTUxMi1XUHBKUFpHVXhXWUhXSVVNTk5PWXFxbDd6aDg1ekdtcjg0RmRU
VldxNTJXVElrcWxXOXhTeEQzUVlXaS9UMzFjcW45VU5Tc2lldFZFZ0duMmFhU0N6dz09IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibG9hZGVyLXV0
aWxzIjogIjEuMS4wIiwKKyAgICAgICAgInNjaGVtYS11dGlscyI6ICIwLjMuMCIKKyAgICAgIH0K
KyAgICB9LAorICAgICJzdXBwb3J0cy1jb2xvciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuNC4w
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdXBwb3J0
cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTQuNC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTUxMi1yS0MzK0R5WFdnSzBaTEt3bVJzcmt5SFZaQWpOa2Z6ZWVodUZXZEdHY3FHRFRaRkg3
MytSSDZTL1JEQUF4bDlHdXNTalpTVVdZTG1UOU41cHpYRk9YUT09IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaGFzLWZsYWciOiAiMi4wLjAiCisg
ICAgICB9CisgICAgfSwKKyAgICAic3ZnbyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNy4yIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdmdvLy0vc3Zn
by0wLjcuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLW4xZHlRVGxTRTF4djc3OUFy
K2FrK3FpTFM3VT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJjb2EiOiAiMS4wLjQiLAorICAgICAgICAiY29sb3JzIjogIjEuMS4yIiwKKyAgICAg
ICAgImNzc28iOiAiMi4zLjIiLAorICAgICAgICAianMteWFtbCI6ICIzLjcuMCIsCisgICAgICAg
ICJta2RpcnAiOiAiMC41LjEiLAorICAgICAgICAic2F4IjogIjEuMi40IiwKKyAgICAgICAgIndo
ZXQuZXh0ZW5kIjogIjAuOS45IgorICAgICAgfQorICAgIH0sCisgICAgInN3LXByZWNhY2hlIjog
eworICAgICAgInZlcnNpb24iOiAiNS4yLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3N3LXByZWNhY2hlLy0vc3ctcHJlY2FjaGUtNS4yLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLXNLY3RkWCs1aFV4a3FKLzFETTg4dWJRK1FSdnl3
N0NueFdkazkwOU4yRGd2eE1xYzFnY1FGcndMN3pwVmM4N3dGbUNBL092UlFkMGlNQzJYZEZvcFln
PT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJk
b20tdXJscyI6ICIxLjEuMCIsCisgICAgICAgICJlczYtcHJvbWlzZSI6ICI0LjEuMSIsCisgICAg
ICAgICJnbG9iIjogIjcuMS4yIiwKKyAgICAgICAgImxvZGFzaC5kZWZhdWx0cyI6ICI0LjIuMCIs
CisgICAgICAgICJsb2Rhc2gudGVtcGxhdGUiOiAiNC40LjAiLAorICAgICAgICAibWVvdyI6ICIz
LjcuMCIsCisgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAorICAgICAgICAicHJldHR5LWJ5dGVz
IjogIjQuMC4yIiwKKyAgICAgICAgInN3LXRvb2xib3giOiAiMy42LjAiLAorICAgICAgICAidXBk
YXRlLW5vdGlmaWVyIjogIjEuMC4zIgorICAgICAgfQorICAgIH0sCisgICAgInN3LXByZWNhY2hl
LXdlYnBhY2stcGx1Z2luIjogeworICAgICAgInZlcnNpb24iOiAiMC4xMS40IiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdy1wcmVjYWNoZS13ZWJwYWNr
LXBsdWdpbi8tL3N3LXByZWNhY2hlLXdlYnBhY2stcGx1Z2luLTAuMTEuNC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLXBwVUJmbFR1MVhWVkZKT2xHZHdkcU5vdHhlQT0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJkZWwiOiAiMi4yLjIi
LAorICAgICAgICAic3ctcHJlY2FjaGUiOiAiNS4yLjAiLAorICAgICAgICAidWdsaWZ5LWpzIjog
IjMuMC4yOCIKKyAgICAgIH0KKyAgICB9LAorICAgICJzdy10b29sYm94IjogeworICAgICAgInZl
cnNpb24iOiAiMy42LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3N3LXRvb2xib3gvLS9zdy10b29sYm94LTMuNi4wLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtSnQ4ZEhIQTBobGprM3FLSVF4a1VtM3N4ZzdVPSIsCisgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInBhdGgtdG8tcmVnZXhwIjogIjEu
Ny4wIiwKKyAgICAgICAgInNlcnZpY2V3b3JrZXItY2FjaGUtcG9seWZpbGwiOiAiNC4wLjAiCisg
ICAgICB9CisgICAgfSwKKyAgICAic3ltYm9sLW9ic2VydmFibGUiOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjAuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvc3ltYm9sLW9ic2VydmFibGUvLS9zeW1ib2wtb2JzZXJ2YWJsZS0xLjAuNC50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLUtiOWhYVXFuRWh2ZGlZc2kxTFA1dkU0cW9EMD0iCisgICAg
fSwKKyAgICAic3ltYm9sLXRyZWUiOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjIuMiIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3ltYm9sLXRyZWUvLS9z
eW1ib2wtdHJlZS0zLjIuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXJpZmJPUFpn
cDY0dUhEdDlHOEtRZ1p1RkdlWT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ0
YWJsZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90YWJsZS8tL3RhYmxlLTQuMC4xLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtcUJGc0V6K3NMR0gwcENDcmJOOWNUV0h3NURVPSIsCisgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFqdiI6ICI0LjEx
LjgiLAorICAgICAgICAiYWp2LWtleXdvcmRzIjogIjEuNS4xIiwKKyAgICAgICAgImNoYWxrIjog
IjEuMS4zIiwKKyAgICAgICAgImxvZGFzaCI6ICI0LjE3LjQiLAorICAgICAgICAic2xpY2UtYW5z
aSI6ICIwLjAuNCIsCisgICAgICAgICJzdHJpbmctd2lkdGgiOiAiMi4xLjEiCisgICAgICB9LAor
ICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImFqdiI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICI0LjExLjgiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9hanYvLS9hanYtNC4xMS44LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6
ICJzaGExLWd2K3dLeW5tWXE1VHZjSUs4VmxIY0djNXhUWT0iLAogICAgICAgICAgICJkZXYiOiB0
cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJhcnJpZnkiOiAiMS4w
LjEiLAotICAgICAgICAgICAgImxvZGFzaC5hc3NpZ24iOiAiNC4yLjAiLAotICAgICAgICAgICAg
Im1pY3JvbWF0Y2giOiAiMi4zLjExIiwKLSAgICAgICAgICAgICJyZWFkLXBrZy11cCI6ICIxLjAu
MSIsCi0gICAgICAgICAgICAicmVxdWlyZS1tYWluLWZpbGVuYW1lIjogIjEuMC4xIgorICAgICAg
ICAgICAgImNvIjogIjQuNi4wIiwKKyAgICAgICAgICAgICJqc29uLXN0YWJsZS1zdHJpbmdpZnki
OiAiMS4wLjEiCiAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAidGVzdGNoZWNrIjog
ewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS40IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInRleHQtdGFi
bGUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4yLjAiLAotICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAidGhy
b3VnaCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIyLjMuOCIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJ0
aW1lcnMtYnJvd3NlcmlmeSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjQuMiIsCi0gICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAi
dGFwYWJsZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMi44IiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90YXBhYmxlLy0vdGFwYWJsZS0wLjIuOC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLW1UY3FYSm1iOHQ4V0N2d05kTDdVOUhsSXpTST0i
LAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ0ZXN0LWV4Y2x1ZGUiOiB7CisgICAg
ICAidmVyc2lvbiI6ICI0LjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvdGVzdC1leGNsdWRlLy0vdGVzdC1leGNsdWRlLTQuMS4xLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTUxMi0zNStBc3JzazNYSEpEQmdmL1ZSRmV4UGdoM1V5RVR2OElB
bi9MUlRpWmpWeTZyalBWcWRFazhkSmNKWUJ6bDF3MFhDSk00OGx2VHk4U2ZFc0NXUzRuQT09IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYXJyaWZ5
IjogIjEuMC4xIiwKKyAgICAgICAgIm1pY3JvbWF0Y2giOiAiMi4zLjExIiwKKyAgICAgICAgIm9i
amVjdC1hc3NpZ24iOiAiNC4xLjEiLAorICAgICAgICAicmVhZC1wa2ctdXAiOiAiMS4wLjEiLAor
ICAgICAgICAicmVxdWlyZS1tYWluLWZpbGVuYW1lIjogIjEuMC4xIgorICAgICAgfQorICAgIH0s
CisgICAgInRleHQtdGFibGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdGV4dC10YWJsZS8tL3RleHQt
dGFibGUtMC4yLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1mMTdvSTY2QVVnZkFD
dkxmU29Uc1A4K2xjTFE9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAidGhyb2F0
IjogeworICAgICAgInZlcnNpb24iOiAiMy4yLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3Rocm9hdC8tL3Rocm9hdC0zLjIuMC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGE1MTItL0VZOFZwdmxxSitzRnRMUGVPZ2M4UGw3a1FWT1d2MHdvRDg3
S1RYVkhQSUFFODQyRkdUK3Jva3hJaGU4eElVUDFjZmdya3QwYXMwdkRMakRpTXRyOHc9PSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInRocm91Z2giOiB7CisgICAgICAidmVyc2lv
biI6ICIyLjMuOCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvdGhyb3VnaC8tL3Rocm91Z2gtMi4zLjgudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1EZFRKLzZxOE5YbGdzYmNrRVYxK0RvYWk0ZlU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAg
fSwKKyAgICAidGh1bmt5IjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RodW5reS8tL3RodW5reS0wLjEu
MC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXZ6QVVhQ1RpdHVaN0R5MTZTc2krc21r
SWFFND0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ0aW1lLXN0YW1wIjogewor
ICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3RpbWUtc3RhbXAvLS90aW1lLXN0YW1wLTIuMC4wLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtbGNha1JURGhXNmpXOUtQc3VNT2orc1J0bzFjPSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInRpbWVkLW91dCI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjMuMS4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy90aW1lZC1vdXQvLS90aW1lZC1vdXQtMy4xLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1sWVlML01YSGJDZC9qNE1tL1E5YkxpRHJvaGM9IiwKKyAgICAgICJkZXYiOiB0cnVlCisg
ICAgfSwKKyAgICAidGltZXJzLWJyb3dzZXJpZnkiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAu
NCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdGltZXJz
LWJyb3dzZXJpZnkvLS90aW1lcnMtYnJvd3NlcmlmeS0yLjAuNC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGE1MTItdVpZaHlVM0VYOE83SFFQK0o5ZlRWWXdzcTkwVnI2OHhQRUZvN3lyVklt
SXhZdkhndWtCRWdPQi9TZ0dvb3JXVlR6R00vM1ord1VObmJvQTRNOGpXcmc9PSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInNldGltbWVkaWF0ZSI6
ICIxLjAuNSIKKyAgICAgIH0KKyAgICB9LAorICAgICJ0bXAiOiB7CisgICAgICAidmVyc2lvbiI6
ICIwLjAuMzEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3RtcC8tL3RtcC0wLjAuMzEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1qemlybERq
aGN4WGwyOWl6Wlg2TCt5ZDY1S2M9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAib3MtdG1wZGlyIjogIjEuMC4yIgorICAgICAgfQorICAgIH0sCisg
ICAgInRtcGwiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuNCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdG1wbC8tL3RtcGwtMS4wLjQudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1JMlFOMTdRdEFFTTVFUlFJSU9YUFJBNVNIZEU9IiwKKyAg
ICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAidG8tYXJyYXlidWZmZXIiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvdG8tYXJyYXlidWZmZXIvLS90by1hcnJheWJ1ZmZlci0xLjAuMS50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLWZTS2JIOHhqZmtac29JRVlDRGFucXIvNFAwTT0iLAorICAg
ICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ0by1mYXN0LXByb3BlcnRpZXMiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIxLjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvdG8tZmFzdC1wcm9wZXJ0aWVzLy0vdG8tZmFzdC1wcm9wZXJ0aWVzLTEuMC4z
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdURWeCtrMk1KYmd1SXhzRzQ2TUZYZVRL
R2tjPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInRvZG9tdmMtYXBwLWNzcyI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy90b2RvbXZjLWFwcC1jc3MvLS90b2RvbXZjLWFwcC1jc3MtMi4x
LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS10dkp4YlRPYStpNWZlWk5IMHFTTEJU
bGlRcVU9IgorICAgIH0sCisgICAgInRvcG9zb3J0IjogeworICAgICAgInZlcnNpb24iOiAiMS4w
LjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvcG9z
b3J0Ly0vdG9wb3NvcnQtMS4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS04Q3pZ
cDB2WXZpL0E2WVlSdzdyTGxhRnhocHc9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAg
ICAidG91Z2gtY29va2llIjogeworICAgICAgInZlcnNpb24iOiAiMi4zLjIiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvdWdoLWNvb2tpZS8tL3RvdWdo
LWNvb2tpZS0yLjMuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLThJSDNia3lGY2c1
c042WDZ6dGMzRlEyRUJ5bz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJwdW55Y29kZSI6ICIxLjQuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJ0
cjQ2IjogeworICAgICAgInZlcnNpb24iOiAiMC4wLjMiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RyNDYvLS90cjQ2LTAuMC4zLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtZ1lUOU5IMnNuTndZV1pMenBtSXVGTG5acTJvPSIsCisgICAgICAi
ZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInRyaW0tbmV3bGluZXMiOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvdHJpbS1uZXdsaW5lcy8tL3RyaW0tbmV3bGluZXMtMS4wLjAudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1XSWVXYTdXQ3BGQTZRZXRTVDMwMUFSZ1ZwaE09IiwKKyAgICAgICJkZXYi
OiB0cnVlCisgICAgfSwKKyAgICAidHJpbS1yaWdodCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEu
MC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90cmlt
LXJpZ2h0Ly0vdHJpbS1yaWdodC0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LXl5NFNBd1orREkzaDloUUpTNS9rVndUcVlBTT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9
LAorICAgICJ0cnlpdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90cnlpdC8tL3RyeWl0LTEuMC4zLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtT1R2bk1LbEViOUhxMXRwWm9CUXdqemJDaWNz
PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInR0eS1icm93c2VyaWZ5Ijogewor
ICAgICAgInZlcnNpb24iOiAiMC4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3R0eS1icm93c2VyaWZ5Ly0vdHR5LWJyb3dzZXJpZnktMC4wLjAudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1vVmU2UUMyaVRwdjVWL21xYWRVazd0UXBBYVk9
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAidHVubmVsLWFnZW50IjogeworICAg
ICAgInZlcnNpb24iOiAiMC42LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3R1bm5lbC1hZ2VudC8tL3R1bm5lbC1hZ2VudC0wLjYuMC50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLUo2WGVvR3Myc0VvS21XWjNTeWtJYVBEOFFQMD0iLAorICAg
ICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJzYWZlLWJ1ZmZl
ciI6ICI1LjEuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJ0d2VldG5hY2wiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIwLjE0LjUiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL3R3ZWV0bmFjbC8tL3R3ZWV0bmFjbC0wLjE0LjUudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1XdWFCZC9HUzFFVmlhZEVJcjZrLytIUS9UMlE9IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgInR5cGUtY2hlY2si
OiB7CisgICAgICAidmVyc2lvbiI6ICIwLjMuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdHlwZS1jaGVjay8tL3R5cGUtY2hlY2stMC4zLjIudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1XSVRLdFJMUEhUVmVQN2VFOHdnRXNyVWcyM0k9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAicHJlbHVk
ZS1scyI6ICIxLjEuMiIKKyAgICAgIH0KKyAgICB9LAorICAgICJ0eXBlLWlzIjogeworICAgICAg
InZlcnNpb24iOiAiMS42LjE1IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy90eXBlLWlzLy0vdHlwZS1pcy0xLjYuMTUudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS15ckVQdEpDZVJCeUNoQzZ2NGExa2JJR0FSQkE9IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibWVkaWEtdHlwZXIiOiAiMC4zLjAi
LAorICAgICAgICAibWltZS10eXBlcyI6ICIyLjEuMTciCisgICAgICB9CisgICAgfSwKKyAgICAi
dHlwZWRhcnJheSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMC42IiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90eXBlZGFycmF5Ly0vdHlwZWRhcnJheS0w
LjAuNi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWhuckhUamhrR0hzZFBVZlpscWVP
eGNpREIzYz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ1YS1wYXJzZXItanMi
OiB7CisgICAgICAidmVyc2lvbiI6ICIwLjcuMTQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3VhLXBhcnNlci1qcy8tL3VhLXBhcnNlci1qcy0wLjcuMTQu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1FUTFUK2t3L01td1NFcEs3NnNrRTB1QXpo
OG89IgorICAgIH0sCisgICAgInVnbGlmeS1qcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMC4y
OCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdWdsaWZ5
LWpzLy0vdWdsaWZ5LWpzLTMuMC4yOC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTIt
MGgvcUdheTAxNkdHMmxWYXYzS3oxNzRGM1QyVmpsejJ2NkhDdCtXRFFwb1hmY28waFd3RjVnSEs5
eWg4OG1VWXZJQytON1o4TlQ4V3BqU3AxeW9xR0E9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImNvbW1hbmRlciI6ICIyLjExLjAiLAorICAgICAg
ICAic291cmNlLW1hcCI6ICIwLjUuNyIKKyAgICAgIH0KKyAgICB9LAorICAgICJ1Z2xpZnktdG8t
YnJvd3NlcmlmeSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy91Z2xpZnktdG8tYnJvd3NlcmlmeS8tL3Vn
bGlmeS10by1icm93c2VyaWZ5LTEuMC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
YmdrazFyMm10YS9qU2VPYWJXTW9VS0Q0Z3JjPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJ1Z2xpZnlqcy13ZWJwYWNrLXBsdWdpbiI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNC42IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy91Z2xpZnlqcy13ZWJwYWNrLXBsdWdpbi8tL3VnbGlmeWpzLXdl
YnBhY2stcGx1Z2luLTAuNC42LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdVZIMHE3
YTlZWDVtOWo2NGtVbU9PUmRqNHdrPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgInNvdXJjZS1tYXAiOiAiMC41LjciLAorICAgICAgICAidWdsaWZ5
LWpzIjogIjIuOC4yOSIsCisgICAgICAgICJ3ZWJwYWNrLXNvdXJjZXMiOiAiMS4wLjEiCisgICAg
ICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgInVnbGlmeS1qcyI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIyLjguMjkiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy91Z2xpZnktanMvLS91Z2xpZnktanMtMi44LjI5LnRneiIs
CisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLUtjVnpNVWdGZTdUaDkxM3pXM3FjdHk1cVdk
MD0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAg
ICAgICAgICAgICJwcm9jZXNzIjogIjAuMTEuOSIKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjog
IjAuNS43IiwKKyAgICAgICAgICAgICJ1Z2xpZnktdG8tYnJvd3NlcmlmeSI6ICIxLjAuMiIsCisg
ICAgICAgICAgICAieWFyZ3MiOiAiMy4xMC4wIgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAg
ICAgICAgInRpdGxlLWNhc2UiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAotICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgInlhcmdzIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjMuMTAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3lhcmdzLy0veWFyZ3MtMy4xMC4wLnRneiIsCisgICAgICAgICAgImludGVn
cml0eSI6ICJzaGExLTkrNTcyRmZkZkIwdE9NRG5UdnZXZ2RGREg5RT0iLAogICAgICAgICAgICJk
ZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJuby1jYXNl
IjogIjIuMy4wIiwKLSAgICAgICAgICAgICJ1cHBlci1jYXNlIjogIjEuMS4zIgorICAgICAgICAg
ICAgImNhbWVsY2FzZSI6ICIxLjIuMSIsCisgICAgICAgICAgICAiY2xpdWkiOiAiMi4xLjAiLAor
ICAgICAgICAgICAgImRlY2FtZWxpemUiOiAiMS4yLjAiLAorICAgICAgICAgICAgIndpbmRvdy1z
aXplIjogIjAuMS4wIgogICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInRtcGwiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjQiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAidG8tZmFzdC1w
cm9wZXJ0aWVzIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKLSAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJ1bmljb2Rl
LWNhbm9uaWNhbC1wcm9wZXJ0eS1uYW1lcy1lY21hc2NyaXB0IjogeworICAgICAgInZlcnNpb24i
OiAiMS4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3VuaWNvZGUtY2Fub25pY2FsLXByb3BlcnR5LW5hbWVzLWVjbWFzY3JpcHQvLS91bmljb2RlLWNh
bm9uaWNhbC1wcm9wZXJ0eS1uYW1lcy1lY21hc2NyaXB0LTEuMC4yLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTUxMi10SUh4QjNEUjlhUzh1QXJoeklqYTh5MExRRHZXeDdEWklSa0hKdExQ
bk0yOXgvbTBzTmlNRjlGWXN4SUFTcGtqODVxZkJ2TVdCc0ZVUlpvSElYNmNlQT09IiwKKyAgICAg
ICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAidW5pY29kZS1tYXRjaC1wcm9wZXJ0eS1lY21hc2Ny
aXB0IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3VuaWNvZGUtbWF0Y2gtcHJvcGVydHktZWNtYXNjcmlw
dC8tL3VuaWNvZGUtbWF0Y2gtcHJvcGVydHktZWNtYXNjcmlwdC0xLjAuMy50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGE1MTItbkZjYUJGY3IwOFVRTkYxNVpnSTVJU2gzeVVuUW03U0pSUnh3
WXJMNVZZWDQ2cFMrNlE3VENUdjR6YksrajYvbDdyUXQwbU1pVEwyenBtZXlnbnk2ckE9PSIsCisg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgInVuaWNvZGUt
Y2Fub25pY2FsLXByb3BlcnR5LW5hbWVzLWVjbWFzY3JpcHQiOiAiMS4wLjIiLAorICAgICAgICAi
dW5pY29kZS1wcm9wZXJ0eS1hbGlhc2VzLWVjbWFzY3JpcHQiOiAiMS4wLjMiCisgICAgICB9Cisg
ICAgfSwKKyAgICAidW5pY29kZS1tYXRjaC1wcm9wZXJ0eS12YWx1ZS1lY21hc2NyaXB0Ijogewor
ICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3VuaWNvZGUtbWF0Y2gtcHJvcGVydHktdmFsdWUtZWNtYXNjcmlwdC8t
L3VuaWNvZGUtbWF0Y2gtcHJvcGVydHktdmFsdWUtZWNtYXNjcmlwdC0xLjAuMS50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGE1MTItbE04QjBGRFpRaDl5WUdnaWFiUlFjeVdpY0IyN1ZMT29s
U0JSSXhzTzdGZVFQdGcrNzlPZTdzQzhNenI4Qk9iRHMrRzlDZVltQy9zaEhvNk9nZ05Fb2c9PSIs
CisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInVuaWNvZGUtcHJvcGVydHktYWxpYXNl
cy1lY21hc2NyaXB0IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3VuaWNvZGUtcHJvcGVydHktYWxpYXNl
cy1lY21hc2NyaXB0Ly0vdW5pY29kZS1wcm9wZXJ0eS1hbGlhc2VzLWVjbWFzY3JpcHQtMS4wLjMu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLVRkRG1ET1R4RWYyYWQxZzNaQnBNNmNx
S0liMm5KcFZsejFRKytjYXNEcnlLejE4dHBlTUJoU25nOWhqQzFDVFFDa09WOVJ3MmtubFNCNmlS
bzdhZDF3PT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ1bmlxIjogeworICAg
ICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3VuaXEvLS91bmlxLTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtc3h4YTZDVklSS09vS0JWQnppc0V1R1duTlA4PSIsCisgICAgICAiZGV2IjogdHJ1ZQor
ICAgIH0sCisgICAgInVuaXFpZCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMS4xIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy91bmlxaWQvLS91bmlxaWQt
NC4xLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1pU0lOMzJ0MUd1VXJYM0pJU0dO
U2haYTdoTUU9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAibWFjYWRkcmVzcyI6ICIwLjIuOCIKKyAgICAgIH0KKyAgICB9LAorICAgICJ1bmlxcyI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy91bmlxcy8tL3VuaXFzLTIuMC4wLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtLysza3Myc2xLUWFXNXVGbDFLV2UyNW1PYXdJPSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgInVuaXZlcnNhbGlmeSI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjAuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy91
bml2ZXJzYWxpZnkvLS91bml2ZXJzYWxpZnktMC4xLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS0rbkc2M1VRM3Iwd1VpRUhqczdGbCtlbmxrTGM9IiwKKyAgICAgICJkZXYiOiB0cnVl
CisgICAgfSwKKyAgICAidW5waXBlIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3VucGlwZS8tL3VucGlw
ZS0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXNyOU82RkZLcm1GbHRJRjRL
ZEliTHZTWkJPdz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ1bnppcC1yZXNw
b25zZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy91bnppcC1yZXNwb25zZS8tL3VuemlwLXJlc3BvbnNl
LTEuMC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdVlUd2gzL0FxSndzZHp6Qjcz
dGJJeXRiQnY0PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInVwZGF0ZS1ub3Rp
ZmllciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy91cGRhdGUtbm90aWZpZXIvLS91cGRhdGUtbm90aWZp
ZXItMS4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1qNUxGRlVncjFvTWJmSk1C
UG5ENGRWTEh6MW89IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAiYm94ZW4iOiAiMC42LjAiLAorICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAorICAg
ICAgICAiY29uZmlnc3RvcmUiOiAiMi4xLjAiLAorICAgICAgICAiaXMtbnBtIjogIjEuMC4wIiwK
KyAgICAgICAgImxhdGVzdC12ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgImxhenktcmVxIjog
IjEuMS4wIiwKKyAgICAgICAgInNlbXZlci1kaWZmIjogIjIuMS4wIiwKKyAgICAgICAgInhkZy1i
YXNlZGlyIjogIjIuMC4wIgorICAgICAgfQorICAgIH0sCisgICAgInVwcGVyLWNhc2UiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvdXBwZXItY2FzZS8tL3VwcGVyLWNhc2UtMS4xLjMudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS05clJRSEM3RXpkSnJwNHZuSWlsaDNuZGlGWmc9IiwKKyAgICAg
ICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAidXJpanMiOiB7CisgICAgICAidmVyc2lvbiI6ICIx
LjE4LjEyIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy91
cmlqcy8tL3VyaWpzLTEuMTguMTIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLVds
dlVrb2NiUStHWWhpOHprY2JlY2JHWXE3WUxTZDJJM0lueEFmcWVoNm1XdldhbEJFN2JJU0RIY0FM
M0o3U1RyV0ZmaXp1SjcwOXNySEQrUnVBQlBRPT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9
LAorICAgICJ1cmwiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjExLjAiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3VybC8tL3VybC0wLjExLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1PRGpwZlB4Z1VoNjNQRkphamxXLzNaNHVLUEU9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAicHVueWNv
ZGUiOiAiMS4zLjIiLAorICAgICAgICAicXVlcnlzdHJpbmciOiAiMC4yLjAiCisgICAgICB9LAor
ICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgInB1bnljb2RlIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMy4yIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvcHVueWNvZGUvLS9wdW55Y29kZS0xLjMuMi50Z3oiLAorICAgICAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1sbE9nTnZ0OEh1UWpRdkl5WE03djZqa214STA9IiwKICAgICAg
ICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAidG9wb3NvcnQiOiB7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJ1cmwtbG9hZGVyIjogeworICAgICAgInZlcnNp
b24iOiAiMC41LjkiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL3VybC1sb2FkZXIvLS91cmwtbG9hZGVyLTAuNS45LnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTUxMi1CN1FZRnl2ditmT0JxQlZlZWZzeHY2a29XV3RqbUhhTUZUNktaV3RpNEtSdzhZ
VUQvaE9VKzNBRUN2WHV6eVZhd0lCeDN6N3pRUmVqWENEU081a2sxUT09IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibG9hZGVyLXV0aWxzIjogIjEu
MS4wIiwKKyAgICAgICAgIm1pbWUiOiAiMS4zLjYiCisgICAgICB9CisgICAgfSwKKyAgICAidXJs
LXBhcnNlIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjkiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3VybC1wYXJzZS8tL3VybC1wYXJzZS0xLjEuOS50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXhuOGRkMTFSOEtHSkVkMTdQL3JTZTdubHZS
az0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJx
dWVyeXN0cmluZ2lmeSI6ICIxLjAuMCIsCisgICAgICAgICJyZXF1aXJlcy1wb3J0IjogIjEuMC4w
IgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJxdWVyeXN0cmlu
Z2lmeSI6IHsKICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJ0
b3VnaC1jb29raWUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4zLjEiLAotICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAg
ICAgICAidHI0NiI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuMyIsCi0gICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9xdWVyeXN0cmluZ2lmeS8tL3F1ZXJ5c3RyaW5naWZ5LTEuMC4wLnRneiIsCisg
ICAgICAgICAgImludGVncml0eSI6ICJzaGExLVlvWWtJUkxGdHhMNlpVNVNabEsvYWhQL0Jjcz0i
LAogICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJ0cnlpdCI6IHsK
LSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAidXJsLXBhcnNlLWxheCI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy91cmwtcGFyc2UtbGF4Ly0vdXJsLXBhcnNlLWxheC0xLjAuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLWV2anpBMlJlbTllYUp5NTZGS3hvdkFZSjJuTT0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJwcmVwZW5k
LWh0dHAiOiAiMS4wLjQiCisgICAgICB9CisgICAgfSwKKyAgICAidXRpbCI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjAuMTAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvdXRpbC8tL3V0aWwtMC4xMC4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtZXZzYS9sQ0FVa1pJbmoyMy9nN1RlVE5xd1BrPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImluaGVyaXRzIjogIjIuMC4xIgorICAgICAgfSwK
KyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJpbmhlcml0cyI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2luaGVyaXRzLy0vaW5oZXJpdHMtMi4wLjEudGd6IiwKKyAgICAgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtc1gwSTB5YTBRajVXanY5eG41R3dzY3ZmYWZFPSIsCiAgICAg
ICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInR0eS1icm93c2VyaWZ5Ijog
ewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJ1dGlsLWRlcHJlY2F0ZSI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy91dGlsLWRlcHJlY2F0ZS8tL3V0aWwtZGVwcmVjYXRlLTEuMC4yLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUlExTnlmcHczbk1uWXZ2UzFLS0pnVUdhRE04
PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInV0aWxhIjogeworICAgICAgInZl
cnNpb24iOiAiMC40LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3V0aWxhLy0vdXRpbGEtMC40LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1paGFnWFVSV1Y2T3VwZTdNV3hLaytsTjVkeXc9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAg
fSwKKyAgICAidXRpbHMtbWVyZ2UiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdXRpbHMtbWVyZ2UvLS91
dGlscy1tZXJnZS0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUFwVDdraXU1
TjFGVFZCeFBjSllqSHloOGl2Zz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ1
dWlkIjogeworICAgICAgInZlcnNpb24iOiAiMy4xLjAiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3V1aWQvLS91dWlkLTMuMS4wLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTUxMi1ESVd0elVrdzA0TTRrM2JmMUljcFMydG5nWEVMMjZZVUQyTTB0
TURVcG5VcnoyaGd6VUJsRDU1YTRGamRMR1B2Zkh4UzZ1bHVHV3ZhVkVxZ0JjVmErZz09IiwKKyAg
ICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAidmFsaWRhdGUtbnBtLXBhY2thZ2UtbGljZW5z
ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy92YWxpZGF0ZS1ucG0tcGFja2FnZS1saWNlbnNlLy0vdmFs
aWRhdGUtbnBtLXBhY2thZ2UtbGljZW5zZS0zLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLUtBUzZ2bkVxMHplVVdhejc0a2RHcXl3d1A3dz0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJzcGR4LWNvcnJlY3QiOiAiMS4wLjIiLAor
ICAgICAgICAic3BkeC1leHByZXNzaW9uLXBhcnNlIjogIjEuMC40IgorICAgICAgfQorICAgIH0s
CisgICAgInZhcnkiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdmFyeS8tL3ZhcnktMS4xLjEudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1aMU5ldTJsTUhWSWxkRmVZUm1VeVAxaCtqVGM9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAidmVuZG9ycyI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy92ZW5kb3JzLy0vdmVuZG9ycy0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLU42MXp5TzVCZjdQVmdPZUZNU01IMG5TRWZ5ST0iLAorICAgICAgImRldiI6IHRydWUKKyAg
ICB9LAorICAgICJ2ZXJyb3IiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEwLjAiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3ZlcnJvci8tL3ZlcnJvci0x
LjEwLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1PaEJjb1hCVHIxWFc0bkRCK0Np
R2d1R05wQUE9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAiYXNzZXJ0LXBsdXMiOiAiMS4wLjAiLAorICAgICAgICAiY29yZS11dGlsLWlzIjogIjEu
MC4yIiwKKyAgICAgICAgImV4dHNwcmludGYiOiAiMS4zLjAiCisgICAgICB9LAorICAgICAgImRl
cGVuZGVuY2llcyI6IHsKKyAgICAgICAgImFzc2VydC1wbHVzIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvYXNzZXJ0LXBsdXMvLS9hc3NlcnQtcGx1cy0xLjAuMC50Z3oiLAorICAgICAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS04UzRQUEYxM3NMSE4yUlJwUXVUcGJCNU4xU1U9IiwKICAgICAg
ICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAidHVubmVsLWFnZW50Ijogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNC4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJ2bS1icm93c2VyaWZ5IjogeworICAg
ICAgInZlcnNpb24iOiAiMC4wLjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3ZtLWJyb3dzZXJpZnkvLS92bS1icm93c2VyaWZ5LTAuMC40LnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtWFg2a1c3NzU1S2IvWmZsVU9PQ29mRFY5V25NPSIsCisg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImluZGV4b2Yi
OiAiMC4wLjEiCisgICAgICB9CisgICAgfSwKKyAgICAid2Fsa2VyIjogeworICAgICAgInZlcnNp
b24iOiAiMS4wLjciLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL3dhbGtlci8tL3dhbGtlci0xLjAuNy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LUwzK2JqOUVOWjNKaXNZcUlUaWpSbGhqZ0tQcz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICJtYWtlZXJyb3IiOiAiMS4wLjExIgorICAgICAgfQor
ICAgIH0sCisgICAgIndhdGNoIjogeworICAgICAgInZlcnNpb24iOiAiMC4xMC4wIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93YXRjaC8tL3dhdGNoLTAu
MTAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWQzbUxMYUQ1a1ExWlh4ck9Xd3dp
V0ZJZklkdz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ3YXRjaHBhY2siOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjQuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvd2F0Y2hwYWNrLy0vd2F0Y2hwYWNrLTEuNC4wLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtU2hSeXZMdVZLOUNwdTBBMmdCK1ZUZnM1K3F3PSIsCisgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFzeW5jIjogIjIu
NS4wIiwKKyAgICAgICAgImNob2tpZGFyIjogIjEuNy4wIiwKKyAgICAgICAgImdyYWNlZnVsLWZz
IjogIjQuMS4xMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJ3YnVmIjogeworICAgICAgInZlcnNp
b24iOiAiMS43LjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL3didWYvLS93YnVmLTEuNy4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMXBl
NW54OVpVUzN5ZFJ2a0oybkJXQXRZQWY0PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgIm1pbmltYWxpc3RpYy1hc3NlcnQiOiAiMS4wLjAiCisgICAg
ICB9CisgICAgfSwKKyAgICAid2ViaWRsLWNvbnZlcnNpb25zIjogeworICAgICAgInZlcnNpb24i
OiAiNC4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3dlYmlkbC1jb252ZXJzaW9ucy8tL3dlYmlkbC1jb252ZXJzaW9ucy00LjAuMi50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGE1MTItWVErQm14dVRnZDZVWFpXMytJQ0dmeXFSeUhYVmxENUd0
UXI1K3FqaU5XN2JGMGNxcnpYNTAwSFZYUEJPdmdYYjVZbnpEZCtoMHpxeXY2MUtVRDcrU2c9PSIs
CisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIndlYnBhY2siOiB7CisgICAgICAidmVy
c2lvbiI6ICIzLjUuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvd2VicGFjay8tL3dlYnBhY2stMy41LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS10MG51UFN0YUVZMnRVK2prRllXejl4NTFTWm89IiwKKyAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYWNvcm4iOiAiNS4xLjIiLAorICAgICAgICAi
YWNvcm4tZHluYW1pYy1pbXBvcnQiOiAiMi4wLjIiLAorICAgICAgICAiYWp2IjogIjUuMi4yIiwK
KyAgICAgICAgImFqdi1rZXl3b3JkcyI6ICIyLjEuMCIsCisgICAgICAgICJhc3luYyI6ICIyLjUu
MCIsCisgICAgICAgICJlbmhhbmNlZC1yZXNvbHZlIjogIjMuNC4xIiwKKyAgICAgICAgImVzY29w
ZSI6ICIzLjYuMCIsCisgICAgICAgICJpbnRlcnByZXQiOiAiMS4wLjMiLAorICAgICAgICAianNv
bi1sb2FkZXIiOiAiMC41LjciLAorICAgICAgICAianNvbjUiOiAiMC41LjEiLAorICAgICAgICAi
bG9hZGVyLXJ1bm5lciI6ICIyLjMuMCIsCisgICAgICAgICJsb2FkZXItdXRpbHMiOiAiMS4xLjAi
LAorICAgICAgICAibWVtb3J5LWZzIjogIjAuNC4xIiwKKyAgICAgICAgIm1rZGlycCI6ICIwLjUu
MSIsCisgICAgICAgICJub2RlLWxpYnMtYnJvd3NlciI6ICIyLjAuMCIsCisgICAgICAgICJzb3Vy
Y2UtbWFwIjogIjAuNS43IiwKKyAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjQuNC4wIiwKKyAg
ICAgICAgInRhcGFibGUiOiAiMC4yLjgiLAorICAgICAgICAidWdsaWZ5anMtd2VicGFjay1wbHVn
aW4iOiAiMC40LjYiLAorICAgICAgICAid2F0Y2hwYWNrIjogIjEuNC4wIiwKKyAgICAgICAgIndl
YnBhY2stc291cmNlcyI6ICIxLjAuMSIsCisgICAgICAgICJ5YXJncyI6ICI4LjAuMiIKKyAgICAg
IH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiYWp2LWtleXdvcmRzIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYWp2LWtleXdvcmRzLy0vYWp2LWtleXdvcmRzLTIuMS4w
LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLW9wYmhmM3Y2NThIT1QzNE41VDBw
eXpJV0xmQT0iLAogICAgICAgICAgICJkZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJ0
d2VldG5hY2wiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4xMy4zIiwKLSAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAidHlwZS1jaGVjayI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjMuMiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAg
ICAgICJkZXYiOiB0cnVlLAotICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJw
cmVsdWRlLWxzIjogIjEuMS4yIgotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgInR5
cGUtaXMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS42LjEzIiwKLSAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVz
IjogewotICAgICAgICAgICAgIm1lZGlhLXR5cGVyIjogIjAuMy4wIiwKLSAgICAgICAgICAgICJt
aW1lLXR5cGVzIjogIjIuMS4xMiIKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJ0
eXBlZGFycmF5IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC42IiwKLSAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICJjYW1lbGNhc2UiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiNC4xLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9jYW1lbGNhc2UvLS9jYW1lbGNhc2UtNC4xLjAudGd6IiwKKyAgICAgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtMVVWalcrSGpQRlFtU2NhUmMrWGVhcyt1Tk4wPSIsCiAgICAgICAgICAg
ImRldiI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgInVnbGlmeS1qcyI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjYuNCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAiY2xpdWkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjAiLAorICAgICAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jbGl1aS8tL2NsaXVpLTMuMi4w
LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLUVnWUJVM3FSYlNtVUQ1Tk5vN1NO
V0ZvNUlUMD0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6
IHsKLSAgICAgICAgICAgICJhc3luYyI6ICIwLjIuMTAiLAotICAgICAgICAgICAgInNvdXJjZS1t
YXAiOiAiMC41LjYiLAotICAgICAgICAgICAgInVnbGlmeS10by1icm93c2VyaWZ5IjogIjEuMC4y
IiwKLSAgICAgICAgICAgICJ5YXJncyI6ICIzLjEwLjAiCisgICAgICAgICAgICAic3RyaW5nLXdp
ZHRoIjogIjEuMC4yIiwKKyAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4xIiwKKyAgICAg
ICAgICAgICJ3cmFwLWFuc2kiOiAiMi4xLjAiCiAgICAgICAgICAgfSwKICAgICAgICAgICAiZGVw
ZW5kZW5jaWVzIjogewotICAgICAgICAgICAgImFzeW5jIjogewotICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIwLjIuMTAiLAotICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICAic3RyaW5nLXdpZHRoIjogeworICAgICAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJpbmctd2lkdGgvLS9zdHJpbmctd2lkdGgtMS4w
LjIudGd6IiwKKyAgICAgICAgICAgICAgImludGVncml0eSI6ICJzaGExLUVZdmZXNHpjVWFLbjV3
MGhIZ2Zpc0xteEI5TT0iLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJjb2RlLXBvaW50LWF0IjogIjEuMS4w
IiwKKyAgICAgICAgICAgICAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiAiMS4wLjAiLAor
ICAgICAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4xIgorICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAidWdsaWZ5LXRv
LWJyb3dzZXJpZnkiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAotICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAg
ICAgICAidW5pcSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCi0gICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAg
ICAgICJ1bmlxaWQiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMy4xLjAiLAotICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50Ijogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQvLS9pcy1mdWxs
d2lkdGgtY29kZS1wb2ludC0xLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS03NTR4T0c4REduOE5aRHI0TDk1UXhGZnZBTXM9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwK
ICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAibWFjYWRkcmVzcyI6ICIwLjIu
OCIKKyAgICAgICAgICAgICJudW1iZXItaXMtbmFuIjogIjEuMC4xIgogICAgICAgICAgIH0KICAg
ICAgICAgfSwKLSAgICAgICAgInVuaXFzIjogeworICAgICAgICAibG9hZC1qc29uLWZpbGUiOiB7
CiAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAidW5waXBlIjog
ewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInVwcGVyLWNh
c2UiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjMiLAotICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAidXBw
ZXItY2FzZS1maXJzdCI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCi0gICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9sb2FkLWpzb24tZmlsZS8tL2xvYWQtanNvbi1maWxlLTIuMC4wLnRneiIs
CisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLWVVZmtJVW12Z05hV3kvZVh2S3E4L2gvaW5L
Zz0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAg
ICAgICAgICAgICJ1cHBlci1jYXNlIjogIjEuMS4zIgorICAgICAgICAgICAgImdyYWNlZnVsLWZz
IjogIjQuMS4xMSIsCisgICAgICAgICAgICAicGFyc2UtanNvbiI6ICIyLjIuMCIsCisgICAgICAg
ICAgICAicGlmeSI6ICIyLjMuMCIsCisgICAgICAgICAgICAic3RyaXAtYm9tIjogIjMuMC4wIgog
ICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgInVybCI6IHsKLSAgICAgICAgICAidmVy
c2lvbiI6ICIwLjEwLjMiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgIm9z
LWxvY2FsZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29zLWxvY2FsZS8tL29zLWxvY2Fs
ZS0yLjEuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLTNzc2xHM3pKYkVZ
Y2FDNFlWQXZEb3JqR3hjN3R2NktWQVRuTFBaT05pbGpzVW5jdmloZTlCUW9WQ0VzMFJaMWttZjRI
azlPQnFsWmZKWldJNEdhbktBPT0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJwdW55Y29kZSI6ICIxLjMuMiIsCi0gICAgICAg
ICAgICAicXVlcnlzdHJpbmciOiAiMC4yLjAiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAiZGVw
ZW5kZW5jaWVzIjogewotICAgICAgICAgICAgInB1bnljb2RlIjogewotICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjMuMiIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAg
ICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICJleGVjYSI6
ICIwLjcuMCIsCisgICAgICAgICAgICAibGNpZCI6ICIxLjAuMCIsCisgICAgICAgICAgICAibWVt
IjogIjEuMS4wIgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgInVybC1sb2FkZXIi
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC41LjciLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgInBhdGgtdHlwZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAu
MCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bh
dGgtdHlwZS8tL3BhdGgtdHlwZS0yLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS04QkxNdUVGYmNKYjhMYW9RVk1QWEk0bFpUSE09IiwKICAgICAgICAgICAiZGV2IjogdHJ1
ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAibG9hZGVyLXV0aWxzIjog
IjAuMi4xNiIsCi0gICAgICAgICAgICAibWltZSI6ICIxLjIuMTEiCisgICAgICAgICAgICAicGlm
eSI6ICIyLjMuMCIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJ1cmwtcGFyc2Ui
OiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4xLjMiLAotICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgInJlYWQtcGtnIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4w
IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVh
ZC1wa2cvLS9yZWFkLXBrZy0yLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1qdkhBWWp4cWJiRGNaeFBFdjZ4R015c2phUGc9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwK
ICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAicXVlcnlzdHJpbmdpZnkiOiAi
MC4wLjQiLAotICAgICAgICAgICAgInJlcXVpcmVzLXBvcnQiOiAiMS4wLjAiCisgICAgICAgICAg
ICAibG9hZC1qc29uLWZpbGUiOiAiMi4wLjAiLAorICAgICAgICAgICAgIm5vcm1hbGl6ZS1wYWNr
YWdlLWRhdGEiOiAiMi40LjAiLAorICAgICAgICAgICAgInBhdGgtdHlwZSI6ICIyLjAuMCIKICAg
ICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJ1c2VyLWhvbWUiOiB7Ci0gICAgICAgICAg
InZlcnNpb24iOiAiMS4xLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAg
ICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAidXRpbCI6IHsKLSAgICAgICAgICAi
dmVyc2lvbiI6ICIwLjEwLjMiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
InJlYWQtcGtnLXVwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhZC1wa2ctdXAvLS9y
ZWFkLXBrZy11cC0yLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1hM0tv
QkltRTRNUWVlVkVQMWVuNm1iTzFTYjQ9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAg
ICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjEiCi0gICAg
ICAgICAgfSwKLSAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewotICAgICAgICAgICAgImluaGVy
aXRzIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCi0gICAgICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICJmaW5kLXVwIjogIjIuMS4wIiwKKyAgICAgICAgICAgICJyZWFkLXBr
ZyI6ICIyLjAuMCIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJ1dGlsLWRlcHJl
Y2F0ZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJ1
dGlsYSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuMCIsCi0gICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAotICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJ1
dGlscy1tZXJnZSI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAic3RyaXAtYm9tIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjMuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvc3RyaXAtYm9tLy0vc3RyaXAtYm9tLTMuMC4wLnRneiIsCisgICAgICAgICAgImlu
dGVncml0eSI6ICJzaGExLUl6VEJqcHgxbjN2ZFZ2M3ZmcHJqMVlqbWp0TT0iLAogICAgICAgICAg
ICJkZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJ1dWlkIjogewotICAgICAgICAgICJ2
ZXJzaW9uIjogIjIuMC4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJ3
aGljaC1tb2R1bGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93aGljaC1tb2R1bGUvLS93
aGljaC1tb2R1bGUtMi4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMmU4
SDNPZDdtUUs0bzZqNlN6SEQ0L2ZtNkhvPSIsCiAgICAgICAgICAgImRldiI6IHRydWUKICAgICAg
ICAgfSwKLSAgICAgICAgInZhbGlkYXRlLW5wbS1wYWNrYWdlLWxpY2Vuc2UiOiB7Ci0gICAgICAg
ICAgInZlcnNpb24iOiAiMy4wLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgInlhcmdzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjguMC4yIiwKKyAgICAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcveWFyZ3MvLS95YXJncy04LjAu
Mi50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ZcG1wQlZzYzc4bHAvMzU1d2Rr
WTNPc2l3MkE9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMi
OiB7Ci0gICAgICAgICAgICAic3BkeC1jb3JyZWN0IjogIjEuMC4yIiwKLSAgICAgICAgICAgICJz
cGR4LWV4cHJlc3Npb24tcGFyc2UiOiAiMS4wLjMiCisgICAgICAgICAgICAiY2FtZWxjYXNlIjog
IjQuMS4wIiwKKyAgICAgICAgICAgICJjbGl1aSI6ICIzLjIuMCIsCisgICAgICAgICAgICAiZGVj
YW1lbGl6ZSI6ICIxLjIuMCIsCisgICAgICAgICAgICAiZ2V0LWNhbGxlci1maWxlIjogIjEuMC4y
IiwKKyAgICAgICAgICAgICJvcy1sb2NhbGUiOiAiMi4xLjAiLAorICAgICAgICAgICAgInJlYWQt
cGtnLXVwIjogIjIuMC4wIiwKKyAgICAgICAgICAgICJyZXF1aXJlLWRpcmVjdG9yeSI6ICIyLjEu
MSIsCisgICAgICAgICAgICAicmVxdWlyZS1tYWluLWZpbGVuYW1lIjogIjEuMC4xIiwKKyAgICAg
ICAgICAgICJzZXQtYmxvY2tpbmciOiAiMi4wLjAiLAorICAgICAgICAgICAgInN0cmluZy13aWR0
aCI6ICIyLjEuMSIsCisgICAgICAgICAgICAid2hpY2gtbW9kdWxlIjogIjIuMC4wIiwKKyAgICAg
ICAgICAgICJ5MThuIjogIjMuMi4xIiwKKyAgICAgICAgICAgICJ5YXJncy1wYXJzZXIiOiAiNy4w
LjAiCiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAidmFyeSI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjEuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAotICAgICAg
ICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJ2ZW5kb3JzIjogewotICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAg
ICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInZlcnJvciI6IHsKLSAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjMuNiIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAieWFyZ3MtcGFyc2VyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjcuMC4wIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcveWFyZ3MtcGFy
c2VyLy0veWFyZ3MtcGFyc2VyLTcuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJz
aGExLWpRckVMeGJxVmQ2OU15eXZURUE0cytQMTM5az0iLAogICAgICAgICAgICJkZXYiOiB0cnVl
LAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJleHRzcHJpbnRmIjogIjEu
MC4yIgorICAgICAgICAgICAgImNhbWVsY2FzZSI6ICI0LjEuMCIKICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJ3ZWJwYWNrLWRldi1taWRkbGV3YXJlIjogewor
ICAgICAgInZlcnNpb24iOiAiMS4xMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy93ZWJwYWNrLWRldi1taWRkbGV3YXJlLy0vd2VicGFjay1kZXYtbWlk
ZGxld2FyZS0xLjEyLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0wMDcrK3k3ZHAr
SFR0ZHZnY29sUk1obGxGd2s9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAibWVtb3J5LWZzIjogIjAuNC4xIiwKKyAgICAgICAgIm1pbWUiOiAiMS4z
LjYiLAorICAgICAgICAicGF0aC1pcy1hYnNvbHV0ZSI6ICIxLjAuMSIsCisgICAgICAgICJyYW5n
ZS1wYXJzZXIiOiAiMS4yLjAiLAorICAgICAgICAidGltZS1zdGFtcCI6ICIyLjAuMCIKKyAgICAg
IH0KKyAgICB9LAorICAgICJ3ZWJwYWNrLWRldi1zZXJ2ZXIiOiB7CisgICAgICAidmVyc2lvbiI6
ICIyLjcuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
d2VicGFjay1kZXYtc2VydmVyLy0vd2VicGFjay1kZXYtc2VydmVyLTIuNy4xLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtSVZnUFdnak5CbHh4RkV6MjlodzBXOHBacUxnPSIsCisgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFuc2ktaHRtbCI6
ICIwLjAuNyIsCisgICAgICAgICJib25qb3VyIjogIjMuNS4wIiwKKyAgICAgICAgImNob2tpZGFy
IjogIjEuNy4wIiwKKyAgICAgICAgImNvbXByZXNzaW9uIjogIjEuNy4wIiwKKyAgICAgICAgImNv
bm5lY3QtaGlzdG9yeS1hcGktZmFsbGJhY2siOiAiMS4zLjAiLAorICAgICAgICAiZGVsIjogIjMu
MC4wIiwKKyAgICAgICAgImV4cHJlc3MiOiAiNC4xNS40IiwKKyAgICAgICAgImh0bWwtZW50aXRp
ZXMiOiAiMS4yLjEiLAorICAgICAgICAiaHR0cC1wcm94eS1taWRkbGV3YXJlIjogIjAuMTcuNCIs
CisgICAgICAgICJpbnRlcm5hbC1pcCI6ICIxLjIuMCIsCisgICAgICAgICJpcCI6ICIxLjEuNSIs
CisgICAgICAgICJsb2dsZXZlbCI6ICIxLjQuMSIsCisgICAgICAgICJvcG4iOiAiNC4wLjIiLAor
ICAgICAgICAicG9ydGZpbmRlciI6ICIxLjAuMTMiLAorICAgICAgICAic2VsZnNpZ25lZCI6ICIx
LjEwLjEiLAorICAgICAgICAic2VydmUtaW5kZXgiOiAiMS45LjAiLAorICAgICAgICAic29ja2pz
IjogIjAuMy4xOCIsCisgICAgICAgICJzb2NranMtY2xpZW50IjogIjEuMS40IiwKKyAgICAgICAg
InNwZHkiOiAiMy40LjciLAorICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIsCisgICAgICAg
ICJzdXBwb3J0cy1jb2xvciI6ICIzLjIuMyIsCisgICAgICAgICJ3ZWJwYWNrLWRldi1taWRkbGV3
YXJlIjogIjEuMTIuMCIsCisgICAgICAgICJ5YXJncyI6ICI2LjYuMCIKKyAgICAgIH0sCisgICAg
ICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiY2FtZWxjYXNlIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvY2FtZWxjYXNlLy0vY2FtZWxjYXNlLTMuMC4wLnRneiIsCisgICAgICAgICAg
ImludGVncml0eSI6ICJzaGExLU12eExuODJ2aEYvTjkrYzd1WHlzSW1Id3F3bz0iLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJ2bS1icm93c2VyaWZ5Ijogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC40IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICJjbGl1aSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjIuMCIsCisgICAg
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NsaXVpLy0vY2xp
dWktMy4yLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRWdZQlUzcVJiU21V
RDVOTm83U05XRm81SVQwPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJl
cXVpcmVzIjogewotICAgICAgICAgICAgImluZGV4b2YiOiAiMC4wLjEiCisgICAgICAgICAgICAi
c3RyaW5nLXdpZHRoIjogIjEuMC4yIiwKKyAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4x
IiwKKyAgICAgICAgICAgICJ3cmFwLWFuc2kiOiAiMi4xLjAiCiAgICAgICAgICAgfQogICAgICAg
ICB9LAotICAgICAgICAid2Fsa2VyIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC43IiwK
LSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJkZWwiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMy4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9kZWwvLS9kZWwtMy4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtVSt6Mm1mL0x5emxqZHBHckU3cnhZSUdYWnVVPSIsCiAgICAgICAgICAgImRldiI6
IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAgIm1ha2VlcnJvciI6
ICIxLjAuMTEiCisgICAgICAgICAgICAiZ2xvYmJ5IjogIjYuMS4wIiwKKyAgICAgICAgICAgICJp
cy1wYXRoLWN3ZCI6ICIxLjAuMCIsCisgICAgICAgICAgICAiaXMtcGF0aC1pbi1jd2QiOiAiMS4w
LjAiLAorICAgICAgICAgICAgInAtbWFwIjogIjEuMS4xIiwKKyAgICAgICAgICAgICJwaWZ5Ijog
IjMuMC4wIiwKKyAgICAgICAgICAgICJyaW1yYWYiOiAiMi42LjEiCiAgICAgICAgICAgfQogICAg
ICAgICB9LAotICAgICAgICAid2F0Y2giOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4xMC4w
IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAg
ICAgICAgfSwKLSAgICAgICAgIndhdGNocGFjayI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIw
LjIuOSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAiZ2xvYmJ5Ijogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMS4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZ2xvYmJ5Ly0vZ2xvYmJ5LTYuMS4wLnRneiIsCisgICAg
ICAgICAgImludGVncml0eSI6ICJzaGExLTlhYlhEb09WNGh5Rmo3QkluV1RmQWtKTlVHdz0iLAog
ICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAg
ICAgICJhc3luYyI6ICIwLjkuMiIsCi0gICAgICAgICAgICAiY2hva2lkYXIiOiAiMS42LjAiLAot
ICAgICAgICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS44IgorICAgICAgICAgICAgImFycmF5LXVu
aW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAgICJnbG9iIjogIjcuMS4yIiwKKyAgICAgICAgICAg
ICJvYmplY3QtYXNzaWduIjogIjQuMS4xIiwKKyAgICAgICAgICAgICJwaWZ5IjogIjIuMy4wIiwK
KyAgICAgICAgICAgICJwaW5raWUtcHJvbWlzZSI6ICIyLjAuMSIKICAgICAgICAgICB9LAogICAg
ICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAgICAgICAgICAiYXN5bmMiOiB7Ci0gICAgICAg
ICAgICAgICJ2ZXJzaW9uIjogIjAuOS4yIiwKLSAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICAgInBpZnkiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMy4w
IiwKKyAgICAgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3BpZnkvLS9waWZ5LTIuMy4wLnRneiIsCisgICAgICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS03UlFhYXNCRHFFbnFXSVNZNTl5b3NWTXc2UXc9IiwKICAgICAgICAgICAgICAgImRldiI6IHRy
dWUKICAgICAgICAgICAgIH0KICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJ3ZWJp
ZGwtY29udmVyc2lvbnMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMy4wLjEiLAotICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgImhhcy1mbGFnIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvaGFzLWZsYWcvLS9oYXMtZmxhZy0xLjAuMC50Z3oiLAorICAgICAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1uWjU1TVdYT0FYb0E4QVFZeEQrVUtuc2RFZm89IiwKICAgICAgICAg
ICAiZGV2IjogdHJ1ZQogICAgICAgICB9LAotICAgICAgICAid2VicGFjayI6IHsKLSAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjEzLjIiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAi
YWNvcm4iOiAiMy4zLjAiLAotICAgICAgICAgICAgImFzeW5jIjogIjEuNS4yIiwKLSAgICAgICAg
ICAgICJjbG9uZSI6ICIxLjAuMiIsCi0gICAgICAgICAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6ICIw
LjkuMSIsCi0gICAgICAgICAgICAiaW50ZXJwcmV0IjogIjAuNi42IiwKLSAgICAgICAgICAgICJs
b2FkZXItdXRpbHMiOiAiMC4yLjE2IiwKLSAgICAgICAgICAgICJtZW1vcnktZnMiOiAiMC4zLjAi
LAotICAgICAgICAgICAgIm1rZGlycCI6ICIwLjUuMSIsCi0gICAgICAgICAgICAibm9kZS1saWJz
LWJyb3dzZXIiOiAiMC42LjAiLAotICAgICAgICAgICAgIm9wdGltaXN0IjogIjAuNi4xIiwKLSAg
ICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIzLjEuMiIsCi0gICAgICAgICAgICAidGFwYWJs
ZSI6ICIwLjEuMTAiLAotICAgICAgICAgICAgInVnbGlmeS1qcyI6ICIyLjYuNCIsCi0gICAgICAg
ICAgICAid2F0Y2hwYWNrIjogIjAuMi45IiwKLSAgICAgICAgICAgICJ3ZWJwYWNrLWNvcmUiOiAi
MC42LjgiCi0gICAgICAgICAgfSwKLSAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewotICAgICAg
ICAgICAgImFjb3JuIjogewotICAgICAgICAgICAgICAidmVyc2lvbiI6ICIzLjMuMCIsCi0gICAg
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJ3ZWJwYWNrLWNv
cmUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC42LjgiLAotICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZSwKLSAgICAgICAgICAicmVxdWlyZXMiOiB7
Ci0gICAgICAgICAgICAic291cmNlLWxpc3QtbWFwIjogIjAuMS42IiwKLSAgICAgICAgICAgICJz
b3VyY2UtbWFwIjogIjAuNC40IgotICAgICAgICAgIH0sCi0gICAgICAgICAgImRlcGVuZGVuY2ll
cyI6IHsKLSAgICAgICAgICAgICJzb3VyY2UtbWFwIjogewotICAgICAgICAgICAgICAidmVyc2lv
biI6ICIwLjQuNCIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAg
ICAgImRldiI6IHRydWUsCi0gICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKLSAgICAgICAgICAg
ICAgICAiYW1kZWZpbmUiOiAiMS4wLjAiCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICJ3ZWJwYWNrLWRldi1taWRkbGV3YXJl
IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuOC4zIiwKLSAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICJpcy1mdWxsd2lkdGgtY29kZS1wb2ludCI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2lzLWZ1bGx3aWR0aC1jb2RlLXBvaW50Ly0vaXMtZnVsbHdpZHRoLWNvZGUt
cG9pbnQtMS4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtNzU0eE9HOERH
bjhOWkRyNEw5NVF4RmZ2QU1zPSIsCiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAg
InJlcXVpcmVzIjogewotICAgICAgICAgICAgIm1lbW9yeS1mcyI6ICIwLjMuMCIsCi0gICAgICAg
ICAgICAibWltZSI6ICIxLjMuNCIsCi0gICAgICAgICAgICAicGF0aC1pcy1hYnNvbHV0ZSI6ICIx
LjAuMCIsCi0gICAgICAgICAgICAicmFuZ2UtcGFyc2VyIjogIjEuMi4wIgotICAgICAgICAgIH0s
Ci0gICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJtaW1lIjogewotICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuNCIsCi0gICAgICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKLSAgICAgICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICJudW1iZXItaXMtbmFuIjogIjEuMC4xIgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAg
ICAgICAgIndlYnBhY2stZGV2LXNlcnZlciI6IHsKLSAgICAgICAgICAidmVyc2lvbiI6ICIxLjE2
LjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgIm9wbiI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICI0LjAuMiIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL29wbi8tL29wbi00LjAuMi50Z3oiLAorICAgICAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1lcndpNWtUZjlqc0tsdFdyZnllUXdQQWF2SlU9IiwKICAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiY29tcHJl
c3Npb24iOiAiMS42LjIiLAotICAgICAgICAgICAgImNvbm5lY3QtaGlzdG9yeS1hcGktZmFsbGJh
Y2siOiAiMS4zLjAiLAotICAgICAgICAgICAgImV4cHJlc3MiOiAiNC4xNC4wIiwKLSAgICAgICAg
ICAgICJodHRwLXByb3h5LW1pZGRsZXdhcmUiOiAiMC4xNy4xIiwKLSAgICAgICAgICAgICJvcGVu
IjogIjAuMC41IiwKLSAgICAgICAgICAgICJvcHRpbWlzdCI6ICIwLjYuMSIsCi0gICAgICAgICAg
ICAic2VydmUtaW5kZXgiOiAiMS44LjAiLAotICAgICAgICAgICAgInNvY2tqcyI6ICIwLjMuMTgi
LAotICAgICAgICAgICAgInNvY2tqcy1jbGllbnQiOiAiMS4xLjEiLAotICAgICAgICAgICAgInN0
cmVhbS1jYWNoZSI6ICIwLjAuMiIsCi0gICAgICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIs
Ci0gICAgICAgICAgICAic3VwcG9ydHMtY29sb3IiOiAiMy4xLjIiLAotICAgICAgICAgICAgIndl
YnBhY2stZGV2LW1pZGRsZXdhcmUiOiAiMS44LjMiCisgICAgICAgICAgICAib2JqZWN0LWFzc2ln
biI6ICI0LjEuMSIsCisgICAgICAgICAgICAicGlua2llLXByb21pc2UiOiAiMi4wLjEiCiAgICAg
ICAgICAgfQogICAgICAgICB9LAotICAgICAgICAid2VicGFjay1zb3VyY2VzIjogewotICAgICAg
ICAgICJ2ZXJzaW9uIjogIjAuMS4yIiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAg
ICAgICAgImRldiI6IHRydWUsCi0gICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAg
InNvdXJjZS1saXN0LW1hcCI6ICIwLjEuNiIsCi0gICAgICAgICAgICAic291cmNlLW1hcCI6ICIw
LjUuNiIKLSAgICAgICAgICB9CisgICAgICAgICJwaWZ5IjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjMuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvcGlmeS8tL3BpZnktMy4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtNWFTczBzRUIvZlBacE5CL0RieE50SjNTZ1hZPSIsCisgICAgICAgICAgImRldiI6IHRydWUK
ICAgICAgICAgfSwKLSAgICAgICAgIndlYnNvY2tldC1kcml2ZXIiOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMC42LjUiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgInN0
cmluZy13aWR0aCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0cmluZy13aWR0aC8tL3N0
cmluZy13aWR0aC0xLjAuMi50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1FWXZm
VzR6Y1VhS241dzBoSGdmaXNMbXhCOU09IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAg
ICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAid2Vic29ja2V0LWV4dGVuc2lvbnMiOiAi
MC4xLjEiCisgICAgICAgICAgICAiY29kZS1wb2ludC1hdCI6ICIxLjEuMCIsCisgICAgICAgICAg
ICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiAiMS4wLjAiLAorICAgICAgICAgICAgInN0cmlw
LWFuc2kiOiAiMy4wLjEiCiAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAid2Vic29j
a2V0LWV4dGVuc2lvbnMiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4xLjEiLAotICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAot
ICAgICAgICAid2hhdHdnLWZldGNoIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwK
LSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAg
ICAgfSwKLSAgICAgICAgIndoYXR3Zy11cmwiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMy4w
LjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgInN1cHBvcnRzLWNvbG9y
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMi4zIiwKKyAgICAgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1j
b2xvci0zLjIuMy50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1aYXdGQkxPVlFY
SFlwa2xHc3E0OHU0cGZWUFk9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAi
cmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAidHI0NiI6ICIwLjAuMyIsCi0gICAgICAgICAgICAi
d2ViaWRsLWNvbnZlcnNpb25zIjogIjMuMC4xIgorICAgICAgICAgICAgImhhcy1mbGFnIjogIjEu
MC4wIgogICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgIndoZXQuZXh0ZW5kIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuOS45IiwKLSAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
Ci0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgIndoaWNoIjogewot
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4xMSIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAieWFyZ3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi42LjAiLAorICAg
ICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy95YXJncy8tL3lh
cmdzLTYuNi4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLWVDN0NIdlFETkYr
RENvQ01vOVVUcjFZR1VnZz0iLAogICAgICAgICAgICJkZXYiOiB0cnVlLAogICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKLSAgICAgICAgICAgICJpc2V4ZSI6ICIxLjEuMiIKKyAgICAgICAgICAgICJj
YW1lbGNhc2UiOiAiMy4wLjAiLAorICAgICAgICAgICAgImNsaXVpIjogIjMuMi4wIiwKKyAgICAg
ICAgICAgICJkZWNhbWVsaXplIjogIjEuMi4wIiwKKyAgICAgICAgICAgICJnZXQtY2FsbGVyLWZp
bGUiOiAiMS4wLjIiLAorICAgICAgICAgICAgIm9zLWxvY2FsZSI6ICIxLjQuMCIsCisgICAgICAg
ICAgICAicmVhZC1wa2ctdXAiOiAiMS4wLjEiLAorICAgICAgICAgICAgInJlcXVpcmUtZGlyZWN0
b3J5IjogIjIuMS4xIiwKKyAgICAgICAgICAgICJyZXF1aXJlLW1haW4tZmlsZW5hbWUiOiAiMS4w
LjEiLAorICAgICAgICAgICAgInNldC1ibG9ja2luZyI6ICIyLjAuMCIsCisgICAgICAgICAgICAi
c3RyaW5nLXdpZHRoIjogIjEuMC4yIiwKKyAgICAgICAgICAgICJ3aGljaC1tb2R1bGUiOiAiMS4w
LjAiLAorICAgICAgICAgICAgInkxOG4iOiAiMy4yLjEiLAorICAgICAgICAgICAgInlhcmdzLXBh
cnNlciI6ICI0LjIuMSIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJ3aGljaC1t
b2R1bGUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAi
d2luZG93LXNpemUiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMC4xLjAiLAotICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAg
ICAgICAid29yZHdyYXAiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAotICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAot
ICAgICAgICAid29ya2VyLWZhcm0iOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMS4zLjEiLAot
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgInlhcmdzLXBhcnNlciI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICI0LjIuMSIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3lhcmdzLXBhcnNlci8tL3lhcmdzLXBhcnNlci00LjIuMS50
Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1LY3pxd054UEE4YkllMHFmSVgzUmpK
OTBoeHc9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7
Ci0gICAgICAgICAgICAiZXJybm8iOiAiMC4xLjQiLAotICAgICAgICAgICAgInh0ZW5kIjogIjQu
MC4xIgorICAgICAgICAgICAgImNhbWVsY2FzZSI6ICIzLjAuMCIKICAgICAgICAgICB9Ci0gICAg
ICAgIH0sCi0gICAgICAgICJ3cmFwLWFuc2kiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4w
LjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgfQorICAgICAgfQorICAg
IH0sCisgICAgIndlYnBhY2stbWFuaWZlc3QtcGx1Z2luIjogeworICAgICAgInZlcnNpb24iOiAi
MS4yLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3dl
YnBhY2stbWFuaWZlc3QtcGx1Z2luLy0vd2VicGFjay1tYW5pZmVzdC1wbHVnaW4tMS4yLjEudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLTlvTE1oR2xlejVKU1J2MGRXQ294R0hIZHJZ
V3JESmE4Z0lIZU1GVnVZOEZwNG5vUWViWHlGbEUzZkZFL0JDWUM0QzFyRzNSeUVCUHowYVdxMWR0
WUR3PT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJmcy1leHRyYSI6ICIwLjMwLjAiLAorICAgICAgICAibG9kYXNoIjogIjQuMTcuNCIKKyAgICAg
IH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAiZnMtZXh0cmEiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMC4zMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZnMtZXh0cmEvLS9mcy1leHRyYS0wLjMwLjAudGd6IiwKKyAg
ICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtOGpQL3pBalUybjFETGFwRWwzYVluYkhmay9BPSIs
CiAgICAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAg
ICAgICAgInN0cmluZy13aWR0aCI6ICIxLjAuMiIKKyAgICAgICAgICAgICJncmFjZWZ1bC1mcyI6
ICI0LjEuMTEiLAorICAgICAgICAgICAgImpzb25maWxlIjogIjIuNC4wIiwKKyAgICAgICAgICAg
ICJrbGF3IjogIjEuMy4xIiwKKyAgICAgICAgICAgICJwYXRoLWlzLWFic29sdXRlIjogIjEuMC4x
IiwKKyAgICAgICAgICAgICJyaW1yYWYiOiAiMi42LjEiCiAgICAgICAgICAgfQogICAgICAgICB9
LAotICAgICAgICAid3JhcHB5IjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKLSAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCi0gICAgICAgICAgImRldiI6IHRydWUKLSAgICAgICAg
fSwKLSAgICAgICAgIndyaXRlIjogewotICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4xIiwKLSAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICJqc29uZmlsZSI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjQuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2pzb25maWxlLy0vanNvbmZpbGUtMi40LjAudGd6IiwKKyAgICAgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtTnphaXRDaTRlNzJneklPMVA2UFdNNk5jS3VnPSIsCiAgICAg
ICAgICAgImRldiI6IHRydWUsCiAgICAgICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAgICAg
Im1rZGlycCI6ICIwLjUuMSIKKyAgICAgICAgICAgICJncmFjZWZ1bC1mcyI6ICI0LjEuMTEiCiAg
ICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAieG1sLWNoYXItY2xhc3NlcyI6IHsKLSAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAot
ICAgICAgICAgICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJ4bWwtbmFtZS12YWxp
ZGF0b3IiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAotICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKLSAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAi
eHRlbmQiOiB7Ci0gICAgICAgICAgInZlcnNpb24iOiAiNC4wLjEiLAotICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgIndlYnBhY2stc291
cmNlcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93ZWJwYWNrLXNvdXJjZXMvLS93ZWJwYWNrLXNvdXJj
ZXMtMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLTA1dE14aXBVQ3dIcVlh
VlM4eGM3c1lQVGx5OFB6WGF5UkNCNGRUeExoV1RxbEtVaXdINmV6bUVlME9TcmVMMWMzMExBdUEz
WnFtYyt1RUJVR0ZKRGp3PT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJzb3VyY2UtbGlzdC1tYXAiOiAiMi4wLjAiLAorICAgICAgICAic291cmNl
LW1hcCI6ICIwLjUuNyIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAg
ICAic291cmNlLWxpc3QtbWFwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc291cmNlLWxp
c3QtbWFwLy0vc291cmNlLWxpc3QtbWFwLTIuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0
eSI6ICJzaGE1MTItSTJVbXVKU1JyL1Q4amlzaVJPTFUzQTNsdHIrc3dwbmlTbU5QSTRNbDNaQ1g2
dFZuRHN1WnpLN0YyaGw1alRxYlpCV0NFS2xqNUhSUWlQRXhYTGdFOEE9PSIsCiAgICAgICAgICAg
ImRldiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgInkxOG4iOiB7Ci0gICAgICAgICAgInZl
cnNpb24iOiAiMy4yLjEiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0sCisgICAgIndlYnNvY2tldC1kcml2ZXIiOiB7CisgICAgICAidmVyc2lv
biI6ICIwLjYuNSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvd2Vic29ja2V0LWRyaXZlci8tL3dlYnNvY2tldC1kcml2ZXItMC42LjUudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1YTEpWYk91RjlEYzhiWUk0cW1rY2hGVGhPalk9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAid2Vic29ja2V0LWV4
dGVuc2lvbnMiOiAiMC4xLjEiCisgICAgICB9CisgICAgfSwKKyAgICAid2Vic29ja2V0LWV4dGVu
c2lvbnMiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvd2Vic29ja2V0LWV4dGVuc2lvbnMvLS93ZWJzb2Nr
ZXQtZXh0ZW5zaW9ucy0wLjEuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWRvbVVt
Y0dFdHU5MVEzZkMyN0ROYkxWZEtlYz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJ3aGF0d2ctZW5jb2RpbmciOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvd2hhdHdnLWVuY29kaW5nLy0v
d2hhdHdnLWVuY29kaW5nLTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUEd4
RkdobU81NjdGV3g3R0hRa2d4bmdCcGZRPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgImljb252LWxpdGUiOiAiMC40LjEzIgorICAgICAgfSwKKyAg
ICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJpY29udi1saXRlIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuNC4xMyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2ljb252LWxpdGUvLS9pY29udi1saXRlLTAuNC4xMy50Z3oiLAorICAg
ICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1INGlycEtzTEZRam9NU3JNT1RSZk51bVM0dkk9IiwK
ICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAieWFsbGlzdCI6IHsK
LSAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCi0gICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAid2hhdHdnLWZldGNoIjogeworICAg
ICAgInZlcnNpb24iOiAiMi4wLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3doYXR3Zy1mZXRjaC8tL3doYXR3Zy1mZXRjaC0yLjAuMy50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLW5JVHNMYzlvR0gvd0M4Wk9FblMwUWhkdUhJUT0iCisgICAg
fSwKKyAgICAid2hhdHdnLXVybCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuOC4wIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93aGF0d2ctdXJsLy0vd2hh
dHdnLXVybC00LjguMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTBwZ2FxUlNNSGdD
a0hGcGhNUlpxdEdnN3ZNQT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJ0cjQ2IjogIjAuMC4zIiwKKyAgICAgICAgIndlYmlkbC1jb252ZXJzaW9u
cyI6ICIzLjAuMSIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAi
d2ViaWRsLWNvbnZlcnNpb25zIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvd2ViaWRsLWNv
bnZlcnNpb25zLy0vd2ViaWRsLWNvbnZlcnNpb25zLTMuMC4xLnRneiIsCisgICAgICAgICAgImlu
dGVncml0eSI6ICJzaGExLUpGTkNkZUtudkd2bnZJWmhITUZxNEtWbFNIRT0iLAogICAgICAgICAg
ICJkZXYiOiB0cnVlCi0gICAgICAgIH0sCi0gICAgICAgICJ5YXJncyI6IHsKLSAgICAgICAgICAi
dmVyc2lvbiI6ICIzLjEwLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
fQorICAgICAgfQorICAgIH0sCisgICAgIndoZXQuZXh0ZW5kIjogeworICAgICAgInZlcnNpb24i
OiAiMC45LjkiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3doZXQuZXh0ZW5kLy0vd2hldC5leHRlbmQtMC45LjkudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS0rSGZWdjJTTWwrV3FWQyt0d1cxcUpadWNFYUU9IiwKKyAgICAgICJkZXYiOiB0cnVl
CisgICAgfSwKKyAgICAid2hpY2giOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjMuMCIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvd2hpY2gvLS93aGljaC0x
LjMuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTIteGNKcG9wZGFtVHVZNWR1Qy9L
blRUTkJyYVBLNTRZd3BlblA0bHp4VThIOTFHdWRXcEZ2Mzh1MENLamNsRTFXaTJFSDJFRHo1TFJj
SGNLYkNJenFHeWc9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgImlzZXhlIjogIjIuMC4wIgorICAgICAgfQorICAgIH0sCisgICAgIndoaWNoLW1v
ZHVsZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93aGljaC1tb2R1bGUvLS93aGljaC1tb2R1bGUtMS4w
LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS11Nlk4cUdHVWlaVC9NSGMyQ0o0N2xn
SnNLazg9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAid2lkZXN0LWxpbmUiOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvd2lkZXN0LWxpbmUvLS93aWRlc3QtbGluZS0xLjAuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLURBbklYQ3FVYUQwTmZxK080SmZWWkw4T0VGdz0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJzdHJpbmct
d2lkdGgiOiAiMS4wLjIiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAg
ICAgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
aXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQvLS9pcy1mdWxsd2lkdGgtY29kZS1wb2ludC0xLjAuMC50
Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS03NTR4T0c4REduOE5aRHI0TDk1UXhG
ZnZBTXM9IiwKICAgICAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7
Ci0gICAgICAgICAgICAiY2FtZWxjYXNlIjogIjEuMi4xIiwKLSAgICAgICAgICAgICJjbGl1aSI6
ICIyLjEuMCIsCi0gICAgICAgICAgICAiZGVjYW1lbGl6ZSI6ICIxLjIuMCIsCi0gICAgICAgICAg
ICAid2luZG93LXNpemUiOiAiMC4xLjAiCisgICAgICAgICAgICAibnVtYmVyLWlzLW5hbiI6ICIx
LjAuMSIKICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJ5YXJncy1wYXJzZXIiOiB7
Ci0gICAgICAgICAgInZlcnNpb24iOiAiMy4yLjAiLAotICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgInN0cmluZy13aWR0aCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAu
MiIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0
cmluZy13aWR0aC8tL3N0cmluZy13aWR0aC0xLjAuMi50Z3oiLAorICAgICAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1FWXZmVzR6Y1VhS241dzBoSGdmaXNMbXhCOU09IiwKICAgICAgICAgICAiZGV2
IjogdHJ1ZSwKICAgICAgICAgICAicmVxdWlyZXMiOiB7Ci0gICAgICAgICAgICAiY2FtZWxjYXNl
IjogIjMuMC4wIiwKLSAgICAgICAgICAgICJsb2Rhc2guYXNzaWduIjogIjQuMi4wIgotICAgICAg
ICAgIH0sCi0gICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgICAgICJjYW1lbGNh
c2UiOiB7Ci0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKLSAgICAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAotICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQotICAgICAgICAgICAg
fQorICAgICAgICAgICAgImNvZGUtcG9pbnQtYXQiOiAiMS4xLjAiLAorICAgICAgICAgICAgImlz
LWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIjEuMC4wIiwKKyAgICAgICAgICAgICJzdHJpcC1hbnNp
IjogIjMuMC4xIgogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQogICAgIH0sCi0gICAg
InJlYWRhYmxlLXN0cmVhbSI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjIuMy4zIiwKLSAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFkYWJsZS1zdHJlYW0vLS9y
ZWFkYWJsZS1zdHJlYW0tMi4zLjMudGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLW0r
cXp6Y243S1V4RW1kMWdNYmNoRitZMmVJVWJpZVVheGtXdHB0eUh5d3JYMHJFOFFFWXFQQzA3VnV5
NFdtMzIveEUxNk5jZEJjdGI4UzBYZS81SWVRPT0iLAorICAgICJ3aW5kb3ctc2l6ZSI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjAuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy93aW5kb3ctc2l6ZS8tL3dpbmRvdy1zaXplLTAuMS4wLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtVkRqTkxxazdJQzc2T2huK2lJZXU1OGxQbkowPSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIndvcmR3cmFwIjogeworICAgICAgInZlcnNpb24i
OiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3dvcmR3cmFwLy0vd29yZHdyYXAtMS4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1KMWhJRUlrVVZxUVhISTBDSmtRYTNwREx5dXM9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAg
fSwKKyAgICAid29ya2VyLWZhcm0iOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjUuMCIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvd29ya2VyLWZhcm0vLS93
b3JrZXItZmFybS0xLjUuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItREhSaVVn
Z3h0YnJ1YVR3bkxEbTIvQlJES1pJb09ZdnJnWVVqNUJhbTRmVTZHdHZjMEZhRXlvc3dGUEJqTVhB
d2VHVzJINEJETklweS8vMXlYWHVhcVE9PSIsCiAgICAgICAiZGV2IjogdHJ1ZSwKICAgICAgICJy
ZXF1aXJlcyI6IHsKLSAgICAgICAgImNvcmUtdXRpbC1pcyI6ICIxLjAuMiIsCi0gICAgICAgICJp
bmhlcml0cyI6ICIyLjAuMyIsCi0gICAgICAgICJpc2FycmF5IjogIjEuMC4wIiwKLSAgICAgICAg
InByb2Nlc3MtbmV4dGljay1hcmdzIjogIjEuMC43IiwKLSAgICAgICAgInNhZmUtYnVmZmVyIjog
IjUuMS4xIiwKLSAgICAgICAgInN0cmluZ19kZWNvZGVyIjogIjEuMC4zIiwKLSAgICAgICAgInV0
aWwtZGVwcmVjYXRlIjogIjEuMC4yIgorICAgICAgICAiZXJybm8iOiAiMC4xLjQiLAorICAgICAg
ICAieHRlbmQiOiAiNC4wLjEiCiAgICAgICB9CiAgICAgfSwKLSAgICAicmVkdXgiOiB7Ci0gICAg
ICAidmVyc2lvbiI6ICIzLjcuMiIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvcmVkdXgvLS9yZWR1eC0zLjcuMi50Z3oiLAotICAgICAgImludGVncml0eSI6
ICJzaGE1MTItcE5xbmY5cTFoSTVISFpSQmtqM2JBbmdHWlcvSk1DbWV4RGxPeHc0WGFnWFkybzEz
MjduSEg1NExvVGppUEowZ2l6b3FQRFJxV3lYLzAwZzBoRDZ3K0E9PSIsCisgICAgIndyYXAtYW5z
aSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93cmFwLWFuc2kvLS93cmFwLWFuc2ktMi4xLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0yUHc5S0UzUVY1VCtoSmM4cnMzUno0SlAzWVU9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAogICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAibG9kYXNo
IjogIjQuMTcuNCIsCi0gICAgICAgICJsb2Rhc2gtZXMiOiAiNC4xNy40IiwKLSAgICAgICAgImxv
b3NlLWVudmlmeSI6ICIxLjMuMSIsCi0gICAgICAgICJzeW1ib2wtb2JzZXJ2YWJsZSI6ICIxLjAu
NCIKKyAgICAgICAgInN0cmluZy13aWR0aCI6ICIxLjAuMiIsCisgICAgICAgICJzdHJpcC1hbnNp
IjogIjMuMC4xIgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJp
cy1mdWxsd2lkdGgtY29kZS1wb2ludCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIs
CisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLWZ1
bGx3aWR0aC1jb2RlLXBvaW50Ly0vaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQtMS4wLjAudGd6IiwK
KyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtNzU0eE9HOERHbjhOWkRyNEw5NVF4RmZ2QU1z
PSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgIm51bWJlci1pcy1uYW4iOiAiMS4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAic3RyaW5nLXdpZHRoIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4y
IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3Ry
aW5nLXdpZHRoLy0vc3RyaW5nLXdpZHRoLTEuMC4yLnRneiIsCisgICAgICAgICAgImludGVncml0
eSI6ICJzaGExLUVZdmZXNHpjVWFLbjV3MGhIZ2Zpc0xteEI5TT0iLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjb2RlLXBvaW50
LWF0IjogIjEuMS4wIiwKKyAgICAgICAgICAgICJpcy1mdWxsd2lkdGgtY29kZS1wb2ludCI6ICIx
LjAuMCIsCisgICAgICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0KICAgICAgIH0KICAgICB9LAotICAgICJzYWZlLWJ1ZmZlciI6IHsKLSAgICAgICJ2
ZXJzaW9uIjogIjUuMS4xIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9zYWZlLWJ1ZmZlci8tL3NhZmUtYnVmZmVyLTUuMS4xLnRneiIsCi0gICAgICAiaW50
ZWdyaXR5IjogInNoYTUxMi1rS3ZOSm42TW05M2dBY3pXVkpnN3dIK3dHWVdOckRIZFd2cFVtSHlF
c2dDdEl3d28zYnFQdFY0dFI1dHVQYVVoVE9vL2t2aFZ3ZDhYd3dPbGxHWWtiZz09IiwKKyAgICAi
d3JhcHB5IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3dyYXBweS8tL3dyYXBweS0xLjAuMi50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLXRTUTlqejdCcWpYeE5rWUZ2QTBRTnVNS3RwOD0iLAog
ICAgICAgImRldiI6IHRydWUKICAgICB9LAotICAgICJzZXRpbW1lZGlhdGUiOiB7Ci0gICAgICAi
dmVyc2lvbiI6ICIxLjAuNSIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvc2V0aW1tZWRpYXRlLy0vc2V0aW1tZWRpYXRlLTEuMC41LnRneiIsCi0gICAgICAi
aW50ZWdyaXR5IjogInNoYTEtS1F5N0l5NHdhVUxYMStxYmczTXF0NFZ2Z29VPSIKKyAgICAid3Jp
dGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjIuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvd3JpdGUvLS93cml0ZS0wLjIuMS50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLVg4QTRLT0prenFQK2tVVlVkdmVqeFdiTEIxYz0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJta2RpcnAiOiAiMC41
LjEiCisgICAgICB9CiAgICAgfSwKLSAgICAic3RyaW5nX2RlY29kZXIiOiB7Ci0gICAgICAidmVy
c2lvbiI6ICIxLjAuMyIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvc3RyaW5nX2RlY29kZXIvLS9zdHJpbmdfZGVjb2Rlci0xLjAuMy50Z3oiLAotICAgICAg
ImludGVncml0eSI6ICJzaGE1MTItNEFINlo1ZnpOTkJjSCs2WERNZkEvQlR0ODdza3hxSmxPMGxB
aDNEa2VyNXpUaGNBeEc2bUt6K2lHdTMwOFVLb1BQUThEY3F4LzRKaHVqemx0UmEraFE9PSIsCisg
ICAgIndyaXRlLWZpbGUtYXRvbWljIjogeworICAgICAgInZlcnNpb24iOiAiMS4zLjQiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3dyaXRlLWZpbGUtYXRv
bWljLy0vd3JpdGUtZmlsZS1hdG9taWMtMS4zLjQudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS0rQWVrOExIWjZST3Vla2dSTG16RHJ4bVJ0Rjg9IiwKICAgICAgICJkZXYiOiB0cnVlLAog
ICAgICAgInJlcXVpcmVzIjogewotICAgICAgICAic2FmZS1idWZmZXIiOiAiNS4xLjEiCisgICAg
ICAgICJncmFjZWZ1bC1mcyI6ICI0LjEuMTEiLAorICAgICAgICAiaW11cm11cmhhc2giOiAiMC4x
LjQiLAorICAgICAgICAic2xpZGUiOiAiMS4xLjYiCiAgICAgICB9CiAgICAgfSwKLSAgICAic3lt
Ym9sLW9ic2VydmFibGUiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxLjAuNCIsCi0gICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3ltYm9sLW9ic2VydmFibGUvLS9z
eW1ib2wtb2JzZXJ2YWJsZS0xLjAuNC50Z3oiLAotICAgICAgImludGVncml0eSI6ICJzaGExLUti
OWhYVXFuRWh2ZGlZc2kxTFA1dkU0cW9EMD0iCisgICAgInhkZy1iYXNlZGlyIjogeworICAgICAg
InZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL3hkZy1iYXNlZGlyLy0veGRnLWJhc2VkaXItMi4wLjAudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS03YnlRUE1PRi9BUlNQWlpxTTFVRXRWQk5HOUk9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAib3MtaG9tZWRpciI6ICIx
LjAuMiIKKyAgICAgIH0KICAgICB9LAotICAgICJ0b2RvbXZjLWFwcC1jc3MiOiB7Ci0gICAgICAi
dmVyc2lvbiI6ICIyLjEuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvdG9kb212Yy1hcHAtY3NzLy0vdG9kb212Yy1hcHAtY3NzLTIuMS4wLnRneiIsCi0g
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtdHZKeGJUT2EraTVmZVpOSDBxU0xCVGxpUXFVPSIKKyAg
ICAieG1sLWNoYXItY2xhc3NlcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy94bWwtY2hhci1jbGFzc2Vz
Ly0veG1sLWNoYXItY2xhc3Nlcy0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LVpHVjRTS0lQL0YzMWc2UXEyS0ozdEZFcnZFMD0iLAorICAgICAgImRldiI6IHRydWUKICAgICB9
LAotICAgICJ1YS1wYXJzZXItanMiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIwLjcuMTQiLAotICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3VhLXBhcnNlci1qcy8t
L3VhLXBhcnNlci1qcy0wLjcuMTQudGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1FUTFU
K2t3L01td1NFcEs3NnNrRTB1QXpoOG89IgorICAgICJ4bWwtbmFtZS12YWxpZGF0b3IiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcveG1sLW5hbWUtdmFsaWRhdG9yLy0veG1sLW5hbWUtdmFsaWRhdG9yLTIu
MC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVFl1UEhzelRRWnFqWWdZYjdPOVJY
aDVWbGpVPSIsCisgICAgICAiZGV2IjogdHJ1ZQogICAgIH0sCi0gICAgInV0aWwtZGVwcmVjYXRl
IjogewotICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAotICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3V0aWwtZGVwcmVjYXRlLy0vdXRpbC1kZXByZWNhdGUtMS4w
LjIudGd6IiwKLSAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1SUTFOeWZwdzNuTW5ZdnZTMUtLSmdV
R2FETTg9IiwKKyAgICAieHRlbmQiOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjAuMSIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcveHRlbmQvLS94dGVuZC00
LjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXBjYlZNcjVsYmlQYmdnNzdsRG9m
QkptTlk2OD0iLAogICAgICAgImRldiI6IHRydWUKICAgICB9LAotICAgICJ1dWlkIjogewotICAg
ICAgInZlcnNpb24iOiAiMy4xLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3V1aWQvLS91dWlkLTMuMS4wLnRneiIsCi0gICAgICAiaW50ZWdyaXR5Ijog
InNoYTUxMi1ESVd0elVrdzA0TTRrM2JmMUljcFMydG5nWEVMMjZZVUQyTTB0TURVcG5VcnoyaGd6
VUJsRDU1YTRGamRMR1B2Zkh4UzZ1bHVHV3ZhVkVxZ0JjVmErZz09IiwKKyAgICAieTE4biI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjMuMi4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy95MThuLy0veTE4bi0zLjIuMS50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLWJSWDdxSVRBaG5uQTEzNkk1M1dlZ1I0SCtrRT0iLAogICAgICAgImRldiI6IHRy
dWUKICAgICB9LAotICAgICJ3aGF0d2ctZmV0Y2giOiB7Ci0gICAgICAidmVyc2lvbiI6ICIyLjAu
MyIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvd2hhdHdn
LWZldGNoLy0vd2hhdHdnLWZldGNoLTIuMC4zLnRneiIsCi0gICAgICAiaW50ZWdyaXR5IjogInNo
YTEtbklUc0xjOW9HSC93QzhaT0VuUzBRaGR1SElRPSIKKyAgICAieWFsbGlzdCI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjIuMS4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy95YWxsaXN0Ly0veWFsbGlzdC0yLjEuMi50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLUhCSDVJWThIWUlta2ZkVVMrVHhtbWFhb0hWST0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJ5YXJncyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjcuMS4wIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy95YXJncy8tL3lhcmdz
LTcuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYTZNWTZ4YVdGeWYxMG9UNDZn
QStqV0ZVME1nPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImNhbWVsY2FzZSI6ICIzLjAuMCIsCisgICAgICAgICJjbGl1aSI6ICIzLjIuMCIsCisg
ICAgICAgICJkZWNhbWVsaXplIjogIjEuMi4wIiwKKyAgICAgICAgImdldC1jYWxsZXItZmlsZSI6
ICIxLjAuMiIsCisgICAgICAgICJvcy1sb2NhbGUiOiAiMS40LjAiLAorICAgICAgICAicmVhZC1w
a2ctdXAiOiAiMS4wLjEiLAorICAgICAgICAicmVxdWlyZS1kaXJlY3RvcnkiOiAiMi4xLjEiLAor
ICAgICAgICAicmVxdWlyZS1tYWluLWZpbGVuYW1lIjogIjEuMC4xIiwKKyAgICAgICAgInNldC1i
bG9ja2luZyI6ICIyLjAuMCIsCisgICAgICAgICJzdHJpbmctd2lkdGgiOiAiMS4wLjIiLAorICAg
ICAgICAid2hpY2gtbW9kdWxlIjogIjEuMC4wIiwKKyAgICAgICAgInkxOG4iOiAiMy4yLjEiLAor
ICAgICAgICAieWFyZ3MtcGFyc2VyIjogIjUuMC4wIgorICAgICAgfSwKKyAgICAgICJkZXBlbmRl
bmNpZXMiOiB7CisgICAgICAgICJjYW1lbGNhc2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
My4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9jYW1lbGNhc2UvLS9jYW1lbGNhc2UtMy4wLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtTXZ4TG44MnZoRi9OOStjN3VYeXNJbUh3cXdvPSIsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNsaXVpIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjMuMi4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvY2xpdWkvLS9jbGl1aS0zLjIuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1FZ1lCVTNxUmJTbVVENU5ObzdTTldGbzVJVDA9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAic3RyaW5nLXdpZHRoIjog
IjEuMC4yIiwKKyAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4xIiwKKyAgICAgICAgICAg
ICJ3cmFwLWFuc2kiOiAiMi4xLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
aXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAi
LAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1m
dWxsd2lkdGgtY29kZS1wb2ludC8tL2lzLWZ1bGx3aWR0aC1jb2RlLXBvaW50LTEuMC4wLnRneiIs
CisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLTc1NHhPRzhER244TlpEcjRMOTVReEZmdkFN
cz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJudW1iZXItaXMtbmFuIjogIjEuMC4xIgorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgInN0cmluZy13aWR0aCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAu
MiIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0
cmluZy13aWR0aC8tL3N0cmluZy13aWR0aC0xLjAuMi50Z3oiLAorICAgICAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1FWXZmVzR6Y1VhS241dzBoSGdmaXNMbXhCOU09IiwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY29kZS1wb2lu
dC1hdCI6ICIxLjEuMCIsCisgICAgICAgICAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiAi
MS4wLjAiLAorICAgICAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiCisgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAieWFyZ3MtcGFyc2VyIjogeworICAgICAg
InZlcnNpb24iOiAiNS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL3lhcmdzLXBhcnNlci8tL3lhcmdzLXBhcnNlci01LjAuMC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLUoxN1BEWC8rQmNkK1pPZklia3paUy9EaElvbz0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjYW1lbGNhc2UiOiAi
My4wLjAiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImNhbWVs
Y2FzZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMCIsCisgICAgICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NhbWVsY2FzZS8tL2NhbWVsY2FzZS0z
LjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1NdnhMbjgydmhGL045K2M3
dVh5c0ltSHdxd289IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9CisgICAgICB9
CiAgICAgfQogICB9CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wYWNr
YWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wYWNrYWdlLmpzb24KaW5kZXggMTRh
YTA2OTU2NGExNjljMzkyMjRhZWU4OWRiOTcwNWE1NzFkNzBhNi4uZDAwNjk4NDc4ZmVkZDViODVl
ZTZkY2Y5MTAyNjVlODUxNmZhZDY1OSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVk
dXgvcGFja2FnZS5qc29uCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3BhY2thZ2UuanNv
bgpAQCAtMyw3ICszLDcgQEAKICAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICAiZW56eW1lIjog
Il4yLjQuMSIsCiAgICAgInJlYWN0LWFkZG9ucy10ZXN0LXV0aWxzIjogIl4xNS4zLjAiLAotICAg
ICJyZWFjdC1zY3JpcHRzIjogIl4wLjYuMCIKKyAgICAicmVhY3Qtc2NyaXB0cyI6ICJeMS4wLjEz
IgogICB9LAogICAiZGVwZW5kZW5jaWVzIjogewogICAgICJjbGFzc25hbWVzIjogIl4yLjIuNSIs
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>